[
  {
    "path": ".agentignore",
    "content": "# Git\n.git/\n\n.codex/\n\n# Build and distribution directories\n**/dist/\n**/build/\n**/.ruff_cache/\n**/node_modules/\n**/__pycache__/\n**/.pytest_cache/\n**/.mypy_cache/\n**/.tox/\n**/.coverage/\n**/.venv/\n**/venv/\n**/.next/\n**/.nuxt/\n**/out/\n**/coverage/\n\n# Environment and configuration files\n.env\n.env.*\n**/.env.local\n**/.env.development.local\n**/.env.test.local\n**/.env.production.local\n\n# Large data files\n**/*.parquet\n**/*.arrow\n**/*.pickle\n**/*.pkl\n**/*.db\n**/*.sqlite\n**/*.sqlite3\n\n# Generated documentation\n**/docs/_build/\n**/site/\n**/public/\ndocumentation/openapi.yaml\n\n# Package-manager files\n**/yarn-error.log\n**/npm-debug.log\n**/package-lock.json\n**/yarn.lock\n**/pnpm-lock.yaml\n**/pnpm-workspace.yaml\n**/poetry.lock\n**/Pipfile.lock\n**/requirements-frozen.txt\n**/uv.lock\n\n# Logs\n**/logs/\n**/*.log\n\n# Cache directories\n**/.cache/\n**/.npm/\n**/.pnpm/\n**/.yarn/\n**/.pnp/\n\n# IDE and editor files\n**/.vscode/\n**/.idea/\n**/.DS_Store\n**/.ipynb_checkpoints/\n**/*.swp\n\n# Compiled binaries\n**/*.so\n**/*.dll\n**/*.dylib\n**/*.exe\n**/*.whl\n**/*.egg-info/\n**/*.egg\n\n# Large media files\n**/*.mp4\n**/*.mp3\n**/*.wav\n**/*.avi\n**/*.mov\n**/*.png\n**/*.jpg\n**/*.jpeg\n**/*.gif\n**/*.svg\n**/*.ico\n\n# Container and deployment files\n**/*.tfvars\n**/*.tfstate\n**/*.tfstate.backup\n\n# Temporary files\n**/tmp/\n**/temp/\n**/*.tmp\n**/*.temp\n\n# Large generated files\ngaga.json\nopenapi.yaml\nopenapi*.yaml\nopenapi*.yml\nopenapi*.json\n\n# Julep-specific\n# TypeSpec generated outputs\n**/tsp-output/\ntypespec/node_modules/\n\n# Local database data\ndata/\n\n# Testing fixtures and large example files\n**/tests/sample_tasks/*.base64\n**/tests/sample_tasks/*.png\n\n# Temporal scheduler certificates\nscheduler/cert/\n\n# Docker and container configuration\n**/.docker/\n**/docker-compose.override.yml\n\n# Generated files in gateway\ngateway/letsencrypt/\n\n# Monitoring data\nmonitoring/grafana/dashboards/\nmonitoring/prometheus/data/\nmonitoring/grafana/storage/\n"
  },
  {
    "path": ".codex/setup.sh",
    "content": "#!/usr/bin/env bash\n#\n# setup-all.sh ─ one-shot bootstrap for the whole julep monorepo\n#\n# › run from repo root:  ./setup-all.sh\n#\n# It will:\n#   • ensure Poetry + TypeSpec compiler are available\n#   • iterate over each top-level directory and install deps:\n#       – pyproject.toml  ➜  poetry install\n#       – package.json    ➜  npm install  (uses pnpm if present)\n#       – requirements.txt➜  pip install -r\n#   • install root pre-commit hooks (if .pre-commit-config.yaml exists)\n#   • stop on first error (set -e)\n\nset -euo pipefail\n\n### 1. Globals --------------------------------------------------------------\n\nIGNORE_DIRS_DEFAULT=\"sdks deploy scripts monitoring .git .venv node_modules\"\nIGNORE_DIRS=\"${IGNORE_DIRS:-$IGNORE_DIRS_DEFAULT}\"\n\nROOT_DIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" && pwd )\"\n# cd \"$ROOT_DIR\"\n\nRED=\"\\033[0;31m\"; GREEN=\"\\033[0;32m\"; CYAN=\"\\033[0;36m\"; NC=\"\\033[0m\"\n\nannounce() { echo -e \"${CYAN}==>$1${NC}\"; }\n\n### 3. Ensure TypeSpec compiler --------------------------------------------\n\nif ! command -v tsp &> /dev/null; then\n  announce \"Installing TypeSpec compiler globally (npm)…\"\n  npm install -g @typespec/compiler > /dev/null\nelse\n  announce \"TypeSpec compiler present → $(tsp --version)\"\nfi\n\nannounce \"Installing hasura-cli globally (npm)…\"\ncurl -L https://github.com/hasura/graphql-engine/raw/stable/cli/get.sh | bash\n\n### 4. Walk directories -----------------------------------------------------\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n\nif [[ -f \"pyproject.toml\" ]]; then\n  announce \"Installing root deps\"\n  uv sync\n  echo -e \"${GREEN}✓ root deps installed${NC}\"\nfi\n\n\nOIFS=$IFS; IFS=$'\\n'\nfor dir in $(git ls-tree --name-only -d HEAD | sort); do\n  d=\"${dir#./}\"\n  if [[ \" $IGNORE_DIRS \" =~ [[:space:]]\"$d\"[[:space:]] ]]; then\n    echo -e \"· skipping $d (ignored)\"\n    continue\n  fi\n\n  announce \"Processing $d/\"\n\n  # uv project?\n  if [[ -f \"$d/pyproject.toml\" ]]; then\n    pushd \"$d\" > /dev/null\n    announce \"[uv] installing in $d …\"\n    uv sync\n    uv pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl\n    popd > /dev/null\n    echo -e \"${GREEN}✓ uv install done for $d${NC}\"\n    continue\n  fi\n\n  # Node project?\n  if [[ -f \"$d/package.json\" ]]; then\n    pushd \"$d\" > /dev/null\n    announce \"[npm] installing in $d …\"\n    if command -v pnpm &> /dev/null; then\n      pnpm install --silent\n    else\n      npm install --silent\n    fi\n    popd > /dev/null\n    echo -e \"${GREEN}✓ npm install done for $d${NC}\"\n    continue\n  fi\n\n  # Plain requirements.txt?\n  if [[ -f \"$d/requirements.txt\" ]]; then\n    pushd \"$d\" > /dev/null\n    announce \"[pip] installing requirements in $d …\"\n    pip install -r requirements.txt\n    pip install https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl\n    popd > /dev/null\n    echo -e \"${GREEN}✓ pip install done for $d${NC}\"\n    continue\n  fi\n\n  echo -e \"· no recognised manifest in $d – nothing to install\"\ndone\nIFS=$OIFS\n\n### 5. Pre-commit -----------------------------------------------------------\n\nif [[ -f \".pre-commit-config.yaml\" ]]; then\n  announce \"Installing git pre-commit hooks…\"\n  pip install --quiet pre-commit\n  pre-commit install\n  echo -e \"${GREEN}✓ pre-commit hooks installed${NC}\"\nfi\n\necho -e \"${GREEN}\\nAll done – monorepo dependencies ready!${NC}\"\n"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n* Using welcoming and inclusive language\n* Being respectful of differing viewpoints and experiences\n* Gracefully accepting constructive criticism\n* Focusing on what is best for the community\n* Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n* The use of sexualized language or imagery and unwelcome sexual attention or advances\n* Trolling, insulting/derogatory comments, and personal or political attacks\n* Public or private harassment\n* Publishing others' private information, such as a physical or electronic address, without explicit permission\n* Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [INSERT EMAIL ADDRESS]. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "<div align=\"center\" id=\"top\">\n <img src=\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Rapidly%20build%20AI%20workflows%20and%20agents&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\" alt=\"julep\" width=\"320\" height=\"160\" />\n\n  <p>\n    <a href=\"https://dashboard.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Get_API_Key-FF5733?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\" alt=\"Get API Key\">\n    </a>\n    <a href=\"https://docs.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Documentation-4B32C3?style=for-the-badge&logo=gitbook&logoColor=white\" alt=\"Documentation\">\n    </a>\n  </p>\n  <p>\n    <a href=\"https://hub.docker.com/u/julepai\">\n      <img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&style=for-the-badge&color=2496ED&logo=docker&logoColor=white\" alt=\"Docker Version\">\n    </a>\n    <a href=\"https://www.npmjs.com/package/@julep/sdk\">\n      <img src=\"https://img.shields.io/npm/v/@julep/sdk?style=for-the-badge&color=CB3837&logo=npm&logoColor=white\" alt=\"NPM Version\">\n    </a>\n    <a href=\"https://www.npmjs.com/package/@julep/sdk\">\n      <img src=\"https://img.shields.io/npm/dm/@julep/sdk?style=for-the-badge&color=CB3837&logo=npm&logoColor=white\" alt=\"NPM Downloads\">\n    </a>\n    <a href=\"https://pypi.org/project/julep/\">\n      <img src=\"https://img.shields.io/pypi/v/julep?style=for-the-badge&color=3776AB&logo=python&logoColor=white\" alt=\"PyPI Version\">\n    </a>\n    <a href=\"https://pypi.org/project/julep/\">\n      <img src=\"https://img.shields.io/pypi/dm/julep?style=for-the-badge&color=3776AB&logo=python&logoColor=white\" alt=\"PyPI Downloads\">\n    </a>\n  </p>\n  \n  <h3>\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\">𝕏</a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\">LinkedIn</a>\n  </h3>\n</div>\n\n# Contributing to Julep\n\n👋 Welcome! We're excited that you're interested in contributing to Julep. This guide will help you get started.\n\n---\n\n## 🚀 Quick Start\n\n1. Fork the repository\n2. Create a new branch for your changes\n3. Make your changes and test them\n4. Submit a pull request\n\n---\n\n## 📝 Ways to Contribute\n\n### 🐛 Reporting Issues\n\nFound a bug? Have a feature request? [Submit an issue](https://github.com/julep-ai/julep/issues) with:\n\n- [ ] Steps to reproduce\n- [ ] Expected behavior\n- [ ] Actual behavior\n- [ ] Screenshots (if applicable)\n\n### 💻 Contributing Code\n\n1. Fork the repository\n2. Create a feature branch: `git checkout -b feature/your-feature-name`\n3. Make your changes\n4. Write/update tests\n5. Push to your fork\n6. Open a pull request\n\n> 💡 **Tip:** Make sure your code follows our style guide and passes all tests.\n\n---\n\n## 🏗 Project Architecture\n\n### Core Services\n\n| Service | Description |\n|---------|-------------|\n| `agents-api` | Core API service |\n| `memory-store` | PostgreSQL database with TimescaleDB for persistent storage |\n| `blob-store` | Object storage for files and binary data |\n| `integrations-service` | Adapters for external services and tools |\n| `scheduler` | Temporal workflow engine for task scheduling and orchestration |\n| `gateway` | API gateway for routing and request handling |\n| `llm-proxy` | LiteLLM proxy for language model interactions |\n| `monitoring` | Prometheus and Grafana monitoring infrastructure |\n| `typespec` | API specifications in TypeSpec format |\n| `sdks` | Node.js and Python client SDKs |\n| `cli` | Command-line interface for Julep |\n\n### Supporting Modules\n\n- `deploy`: Deployment configs\n- `documentation`: Project documentation assets\n- `scripts`: Utility scripts and tools\n- `cookbooks`: Usage examples and recipes\n\n### Tech Stack\n\n- **FastAPI**: Web framework for building APIs\n- **TypeSpec**: API specification language\n- **Timescale**: Database system\n- **SeaweedFS**: Blob storage system\n- **Grafana**: Monitoring and observability platform\n- **Prometheus**: Monitoring and observability platform\n- **LiteLLM**: LLM framework\n- **Temporal**: Workflow engine\n- **Docker**: Containerization\n\n> To understand the relationships between the components, please refer to the [System Architecture](https://docs.julep.ai/docs/advanced/architecture-deep-dive) section.\n\n## Understanding the Codebase\n\nTo get a comprehensive understanding of Julep, we recommend exploring the codebase in the following order:\n\n1. **Project Overview**\n   - Read `README.md` in the root directory\n   - Explore `docs/` for detailed documentation\n\n2. **System Architecture**\n   - Examine `docker-compose.yml` in the root directory\n   - Review `deploy/` directory for different deployment configurations\n\n3. **API Specifications**\n   - Learn about TypeSpec: https://typespec.io/docs/\n   - Explore `typespec/` directory:\n     - Start with `common/` folder\n     - Review `main.tsp`\n     - Examine each module sequentially\n\n4. **Core API Implementation**\n   - Learn about FastAPI: https://fastapi.tiangolo.com/\n   - Explore `agents-api/` directory:\n     - Review `README.md` for an overview\n     - Examine `routers/` for API endpoints\n     - Look into `models/` for data models\n\n5. **Database and Storage**\n   - Learn about Cozo: https://docs.cozodb.org/en/latest/tutorial.html\n   - Review `agents-api/README.md` for database schema\n   - Explore `agents-api/models/` for database queries\n\n6. **Workflow Management**\n   - Learn about Temporal: https://docs.temporal.io/develop/python\n   - Explore `agents-api/activities/` for individual workflow steps\n   - Review `agents-api/workflows/task_execution/` for main workflow logic\n\n7. **Testing**\n   - Examine `agents-api/tests/` for test cases\n\n8. **Additional Services**\n   - Explore other service directories (`integrations-service/`, `embedding-service/`, etc.) to understand their specific roles and implementations\n\n## Contributing Guidelines\n\n1. **Set Up Development Environment**\n   - Clone the repository\n   - Install Docker and Docker Compose\n   - Set up necessary API keys and environment variables\n\n   > You can check our [Local Setup](https://docs.julep.ai/docs/advanced/localsetup) section in the docs for more information.\n\n2. **Choose an Area to Contribute**\n   - Check the issue tracker for open issues\n   - Look for \"good first issue\" labels for newcomers\n\n3. **Make Changes**\n   - Create a new branch for your changes\n   - Write clean, well-documented code\n   - Ensure your changes adhere to the project's coding standards\n\n4. **Test Your Changes**\n   - Run existing tests\n   - Add new tests for new functionality\n   - Ensure all tests pass before submitting your changes\n\n5. **Submit a Pull Request**\n   - Provide a clear description of your changes\n   - Reference any related issues\n   - Be prepared to respond to feedback and make adjustments\n\n6. **Code Review**\n   - Address any comments or suggestions from reviewers\n   - Make necessary changes and push updates to your branch\n\n7. **Merge**\n   - Once approved, your changes will be merged into the main branch\n\n### Adding a New Integration\n\nThe integration service is a crucial part of Julep, and we welcome contributions from the community to enhance its functionality and capabilities.\n\nTo contribute to the integration service, you can follow these steps:\n\n1. **Add a new integration provider to our TypeSpec:** You can do so by:\n   1. Adding the provider name to the `integrationProvider` alias in `typespec/tools/models.tsp`\n   2. Adding a new file in `typespec/tools/` with the provider name. Take a look at the other integration files in the `typespec/tools/` directory for examples.\n\n      > If the integration needs an API key or other form of authentication, you would have to add a `Setup` model to the integration definition file, where you would define the authentication parameters (`spider.tsp` is an example of this). Otherwise, you can omit the `Setup` model (`wikipedia.tsp` is an example of this).\n\n2. **Generate the new OpenAPI schema and Pydantic models:** You need to `cd` into the root directory of the project and run `./scripts/generate_openapi_code.sh` to generate the new OpenAPI schema along with Pydantic models for the new changes.\n\n   > The new OpenAPI schema will be generated in `./openapi.yaml` and the Pydantic models will be generated in `./integrations-service/integrations/autogen`. \n\n3. **Add the new integration logic in the integration service:** You need to add the new integration logic in the integration service by adding a new file in `integration-service/integrations/utils/integrations` with the provider name. Take a look at the other integration files in the same directory for examples.\n\n4. **Add the new integration provider to the providers registry:** You need to add the new integration provider to the providers registry by adding a new entry to the `available_providers` dictionary in `integrations-service/integrations/providers.py`.\n\n### Documentation Improvements\n\nImprovements to documentation are always appreciated! If you see areas that could be clarified or expanded, feel free to make the changes and submit a pull request.\n\n### Sharing Feedback and Ideas\n\nWe'd love to hear your feedback and ideas for the project! Feel free to submit an issue or contact the maintainers directly to share your thoughts. Your input is very valuable in shaping the future direction of the project.\n\nRemember, contributions aren't limited to code. Documentation improvements, bug reports, and feature suggestions are also valuable contributions to the project.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: \"🐛 Bug Report\"\ndescription: \"Submit a bug report to help us improve\"\ntitle: \"[Bug]: \"\nlabels: [\"bug\"]\nbody:\n  - type: textarea\n    id: description\n    attributes:\n      label: \"📜 Description\"\n      placeholder: \"A clear and concise description of what the bug is.\"\n\n  - type: textarea\n    id: steps-to-reproduce\n    attributes:\n      label: \"👟 Reproduction steps\"\n      placeholder: \"1. Go to '...'\n        2. Click on '....'\n        3. Scroll down to '....'\n        4. See error\"\n\n  - type: checkboxes\n    id: no-duplicate-issues\n    attributes:\n      label: \"👀 Have you searched previous issues to see if this has been raised before?\"\n      options:\n        - label: \"I checked and didn't find similar issue\"\n          required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Have Question?\n    url: https://discord.com/invite/JTSBGRZrzj\n    about: Join Official Discord server"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "name: 🚀 Feature\ndescription: \"Submit a proposal for a new feature\"\ntitle: \"[Feature]: \"\nlabels: [\"enhancement\"]\nbody:\n  - type: textarea\n    id: feature-description\n    validations:\n      required: true\n    attributes:\n      label: \"🔖 Feature description\"\n      placeholder: \"A clear and concise description of what the feature is.\"\n  - type: textarea\n    id: pitch\n    attributes:\n      label: \"🎤 Why is this feature needed ?\"\n      placeholder: \"Please explain why this feature should be implemented and how it would be used. Add examples, if applicable.\"\n  - type: textarea\n    id: solution\n    attributes:\n      label: \"✌️ How do you aim to achieve this?\"\n      placeholder: \"A clear and concise description of what you want to happen.\"\n  - type: checkboxes\n    id: no-duplicate-issues\n    attributes:\n      label: \"👀 Have you searched issues and PRs to see if this feature request has been raised before?\"\n      options:\n        - label: \"I checked and didn't find similar issue\"\n          required: true\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/refactor.yml",
    "content": "name: \"🛠️ Refactor\"\ndescription: \"Submit a bug report to help us improve\"\ntitle: \"[Refactor]: \"\nlabels: [\"refactor\"]\nbody:\n  - type: textarea\n    id: description\n    attributes:\n      label: \"📜 Description\"\n      placeholder: \"A clear and concise description of what should be refactored.\"\n\n  - type: textarea\n    id: relevant-files\n    attributes:\n      label: \"👟 Relevant files\"\n      placeholder: \"1. `agents-api/Dockerfile` needs to change\n        2. `integrations/**/*.py` files need to be reformatted\"\n"
  },
  {
    "path": ".github/LICENSE",
    "content": "                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   APPENDIX: How to apply the Apache License to your work.\n\n      To apply the Apache License to your work, attach the following\n      boilerplate notice, with the fields enclosed by brackets \"[]\"\n      replaced with your own identifying information. (Don't include\n      the brackets!)  The text should be enclosed in the appropriate\n      comment syntax for the file format. We also recommend that a\n      file or class name and description of purpose be included on the\n      same \"printed page\" as the copyright notice for easier\n      identification within third-party archives.\n\n   Copyright [yyyy] [name of copyright owner]\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": ".github/README-CN.md",
    "content": "<sup><div align=\"center\">\n  <!-- Keep these links. Translations will automatically update with the README. -->\n  [Deutsch](https://www.readme-i18n.com/julep-ai/julep?lang=de) | \n  [Español](https://www.readme-i18n.com/julep-ai/julep?lang=es) | \n  [français](https://www.readme-i18n.com/julep-ai/julep?lang=fr) | \n  [日本語](https://www.readme-i18n.com/julep-ai/julep?lang=ja) | \n  [한국어](https://www.readme-i18n.com/julep-ai/julep?lang=ko) | \n  [Português](https://www.readme-i18n.com/julep-ai/julep?lang=pt) | \n  [Русский](https://www.readme-i18n.com/julep-ai/julep?lang=ru) | \n  [中文](https://www.readme-i18n.com/julep-ai/julep?lang=zh)\n</div></sup>\n\n<div align=\"center\" id=\"top\">\n<img src=\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\" alt=\"julep\" height=300 />\n\n<br>\n  <p>\n   <a href=\"https://www.npmjs.com/package/@julep/sdk\"><img src=\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\" alt=\"NPM Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://pypi.org/project/julep\"><img src=\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\" alt=\"PyPI - Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://hub.docker.com/u/julepai\"><img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\" alt=\"Docker Image Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://choosealicense.com/licenses/apache/\"><img src=\"https://img.shields.io/github/license/julep-ai/julep\" alt=\"GitHub License\" height=\"28\"></a>\n  </p>\n  \n  <h3 align=\"center\">\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\"><img src=\"https://user-images.githubusercontent.com/74038190/235294015-47144047-25ab-417c-af1b-6746820a20ff.gif\" width=\"60\"></a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\"><img src=\"https://raw.githubusercontent.com/gist/IgnaceMaes/744cd9cf41ec6acf46fc8f4e9f370f86/raw/d16658c2945d30c8a953b35cb17dd7085111b46c/x-logo.svg\" width=\"45\"></a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\"><img src=\"https://user-images.githubusercontent.com/74038190/235294012-0a55e343-37ad-4b0f-924f-c8431d9d2483.gif\" width=\"60\"></a>\n\n  </h3>\n  \n  <!-- <h3>\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\">𝕏</a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\">LinkedIn</a>\n  </h3> -->\n</div>\n\n**立即试用Julep：** 访问 **[Julep网站](https://julep.ai)** · 在 **[Julep控制台](https://dashboard.julep.ai)** 开始使用 (免费API密钥) · 阅读 **[文档](https://docs.julep.ai/introduction/julep)**\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n<h3>📖 目录</h3>\n\n- [为什么选择Julep？](#为什么选择julep)\n- [开始使用](#开始使用)\n- [文档和示例](#文档和示例)\n- [社区和贡献](#社区和贡献)\n- [许可证](#许可证)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## 为什么选择Julep？\n\nJulep是一个构建**基于智能代理的AI工作流**的开源平台，远超简单的提示链。它让你能够使用大型语言模型（LLM）和工具编排复杂的多步骤流程，**无需管理任何基础设施**。使用Julep，你可以创建**记住过往交互**并处理具有分支逻辑、循环、并行执行和外部API集成等复杂任务的AI代理。简而言之，Julep就像*\"AI代理的Firebase\"*，为规模化的智能工作流提供强大的后端。\n\n**主要功能和优势：**\n\n* **持久记忆：** 构建在对话中维持上下文和长期记忆的AI代理，让它们能够随时间学习和改进。\n* **模块化工作流：** 将复杂任务定义为模块化步骤（YAML或代码），具有条件逻辑、循环和错误处理。Julep的工作流引擎自动管理多步骤流程和决策。\n* **工具编排：** 轻松集成外部工具和API（网页搜索、数据库、第三方服务等）作为代理工具箱的一部分。Julep的代理可以调用这些工具来增强其能力，实现检索增强生成等功能。\n* **并行和可扩展：** 并行运行多个操作以提高效率，让Julep处理后台的扩展和并发。平台是无服务器的，因此可以无缝扩展工作流，无需额外的DevOps开销。\n* **可靠执行：** 不用担心故障 - Julep提供内置重试、自愈步骤和强大的错误处理，让长时间运行的任务保持正轨。你还能获得实时监控和日志记录来跟踪进展。\n* **易于集成：** 通过我们的**Python**和**Node.js** SDK快速开始，或使用Julep CLI进行脚本编写。如果你想直接集成到其他系统中，Julep的REST API也可以使用。\n\n*专注于你的AI逻辑和创意，而把繁重的工作交给Julep！* <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"20\">\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## 开始使用\n<p>\n    <a href=\"https://dashboard.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\" alt=\"获取API密钥\" height=\"28\">\n    </a>\n    <span>&nbsp;</span>\n    <a href=\"https://docs.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\" alt=\"文档\" height=\"28\">\n    </a>\n  </p>\n使用Julep简单易行：\n\n1. **注册和API密钥：** 首先，在 [Julep控制台](https://dashboard.julep.ai) 注册以获取你的API密钥（用于验证SDK调用）。\n2. **安装SDK：** 为你首选的语言安装Julep SDK：\n\n   * <img src=\"https://user-images.githubusercontent.com/74038190/212257472-08e52665-c503-4bd9-aa20-f5a4dae769b5.gif\" width=\"20\"> **Python：** `pip install julep`\n   * <img src=\"https://user-images.githubusercontent.com/74038190/212257454-16e3712e-945a-4ca2-b238-408ad0bf87e6.gif\" width=\"20\"> **Node.js：** `npm install @julep/sdk` (或 `yarn add @julep/sdk`)\n3. **定义你的代理：** 使用SDK或YAML定义代理及其任务工作流。例如，你可以指定代理的记忆、可使用的工具以及逐步的任务逻辑。（详细演练请参见我们文档中的**[快速开始](https://docs.julep.ai/introduction/quick-start)**。）\n4. **运行工作流：** 通过SDK调用你的代理来执行任务。Julep平台将在云端编排整个工作流，并为你管理状态、工具调用和LLM交互。你可以检查代理的输出，在控制台上监控执行，并根据需要进行迭代。\n\n就是这样！你的第一个AI代理可以在几分钟内启动并运行。要获得完整教程，请查看文档中的**[快速开始指南](https://docs.julep.ai/introduction/quick-start)**。\n\n> **注意：** Julep还提供命令行界面（CLI）（当前为Python的beta版）来管理工作流和代理。如果你喜欢无代码方法或想要脚本化常见任务，请参见 [Julep CLI文档](https://docs.julep.ai/responses/quickstart#cli-installation) 了解详情。\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## 文档和示例\n\n\n想要深入了解？**[Julep文档](https://docs.julep.ai)**涵盖了掌握平台所需的一切 - 从核心概念（代理、任务、会话、工具）到高级主题如代理记忆管理和架构内部。关键资源包括：\n\n* **[概念指南](https://docs.julep.ai/concepts/)：** 了解Julep的架构、会话和记忆的工作原理、工具使用、管理长对话等等。\n* **[API和SDK参考](https://docs.julep.ai/api-reference/)：** 查找所有SDK方法和REST API端点的详细参考，以将Julep集成到你的应用程序中。\n* **[教程](https://docs.julep.ai/tutorials/)：** 构建真实应用程序的分步指南（例如搜索网络的研究代理、旅行规划助手或具有自定义知识的聊天机器人）。\n* **[Cookbook食谱](https://github.com/julep-ai/julep/tree/dev/cookbooks)：** 探索**Julep Cookbook**以获取现成的示例工作流和代理。这些食谱展示了常见模式和用例 - 通过示例学习的绝佳方式。*浏览此存储库中的 [`cookbooks/`](https://github.com/julep-ai/julep/tree/dev/cookbooks) 目录以获取示例代理定义。*\n* **[IDE集成](https://context7.com/julep-ai/julep)：** 直接在IDE中访问Julep文档！在编码时获得即时答案的完美解决方案。\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## 社区和贡献\n\n加入我们不断壮大的开发者和AI爱好者社区！以下是一些参与和获得支持的方式：\n\n* **Discord社区：** 有问题或想法？加入我们 [官方Discord服务器](https://discord.gg/7H5peSN9QP) 上的对话，与Julep团队和其他用户聊天。我们很乐意帮助故障排除或头脑风暴新的用例。\n* **GitHub讨论和问题：** 请随时使用GitHub报告错误、请求功能或讨论实现细节。如果你想贡献，请查看 [**good first issues**](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) - 我们欢迎各种类型的贡献。\n* **贡献：** 如果你想贡献代码或改进，请查看我们的 [贡献指南](CONTRIBUTING.md) 了解如何开始。我们感谢所有的PR和反馈。通过协作，我们可以让Julep变得更好！\n\n*专业提示：<img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/e379a33a-b428-4385-b44f-3da16e7bac9f\" width=\"35\"> 给我们的仓库点星以保持更新 - 我们正在不断添加新功能和示例。*    \n\n<br/>\n\n你的贡献，无论大小，对我们都很有价值。让我们一起构建令人惊叹的东西！    <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"20\">\n <img src=\"https://user-images.githubusercontent.com/74038190/216125640-2783ebd5-e63e-4ed1-b491-627a40b24850.png\" width=\"20\">\n\n<h4>我们杰出的贡献者：</h4>\n\n<a href=\"https://github.com/julep-ai/julep/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=julep-ai/julep\" />\n</a>\n\n<br/>\n\n## 许可证\n\nJulep采用**Apache 2.0许可证**提供，这意味着你可以在自己的项目中自由使用。详情请参见 [LICENSE](LICENSE) 文件。享受使用Julep构建的乐趣！"
  },
  {
    "path": ".github/README-FR.md",
    "content": "<sup><div align=\"center\">\n  <!-- Keep these links. Translations will automatically update with the README. -->\n  [Deutsch](https://www.readme-i18n.com/julep-ai/julep?lang=de) | \n  [Español](https://www.readme-i18n.com/julep-ai/julep?lang=es) | \n  [français](https://www.readme-i18n.com/julep-ai/julep?lang=fr) | \n  [日本語](https://www.readme-i18n.com/julep-ai/julep?lang=ja) | \n  [한국어](https://www.readme-i18n.com/julep-ai/julep?lang=ko) | \n  [Português](https://www.readme-i18n.com/julep-ai/julep?lang=pt) | \n  [Русский](https://www.readme-i18n.com/julep-ai/julep?lang=ru) | \n  [中文](https://www.readme-i18n.com/julep-ai/julep?lang=zh)\n</div></sup>\n\n<div align=\"center\" id=\"top\">\n<img src=\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\" alt=\"julep\" height=300 />\n\n<br>\n  <p>\n   <a href=\"https://www.npmjs.com/package/@julep/sdk\"><img src=\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\" alt=\"NPM Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://pypi.org/project/julep\"><img src=\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\" alt=\"PyPI - Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://hub.docker.com/u/julepai\"><img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\" alt=\"Docker Image Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://choosealicense.com/licenses/apache/\"><img src=\"https://img.shields.io/github/license/julep-ai/julep\" alt=\"GitHub License\" height=\"28\"></a>\n  </p>\n  \n  <h3 align=\"center\">\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\"><img src=\"https://user-images.githubusercontent.com/74038190/235294015-47144047-25ab-417c-af1b-6746820a20ff.gif\" width=\"60\"></a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\"><img src=\"https://raw.githubusercontent.com/gist/IgnaceMaes/744cd9cf41ec6acf46fc8f4e9f370f86/raw/d16658c2945d30c8a953b35cb17dd7085111b46c/x-logo.svg\" width=\"45\"></a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\"><img src=\"https://user-images.githubusercontent.com/74038190/235294012-0a55e343-37ad-4b0f-924f-c8431d9d2483.gif\" width=\"60\"></a>\n\n  </h3>\n  \n  <!-- <h3>\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\">𝕏</a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\">LinkedIn</a>\n  </h3> -->\n</div>\n\n**Essayez Julep dès aujourd'hui :** Visitez le **[Site Web de Julep](https://julep.ai)** · Commencez sur le **[Tableau de Bord Julep](https://dashboard.julep.ai)** (clé API gratuite) · Lisez la **[Documentation](https://docs.julep.ai/introduction/julep)**\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n<h3>📖 Table des matières</h3>\n\n- [Pourquoi Julep ?](#pourquoi-julep-)\n- [Commencer](#commencer)\n- [Documentation et exemples](#documentation-et-exemples)\n- [Communauté et contributions](#communauté-et-contributions)\n- [Licence](#licence)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## Pourquoi Julep ?\n\nJulep est une plateforme open-source pour construire des **flux de travail d'IA basés sur des agents** qui vont bien au-delà de simples chaînes de prompts. Elle vous permet d'orchestrer des processus complexes en plusieurs étapes avec des modèles de langage de grande taille (LLM) et des outils **sans gérer d'infrastructure**. Avec Julep, vous pouvez créer des agents d'IA qui **se souviennent des interactions passées** et gèrent des tâches sophistiquées avec une logique de branchement, des boucles, une exécution parallèle et l'intégration d'APIs externes. En bref, Julep agit comme un *\"Firebase pour les agents d'IA,\"* fournissant un backend robuste pour les flux de travail intelligents à grande échelle.\n\n**Caractéristiques clés et avantages :**\n\n* **Mémoire persistante :** Construisez des agents d'IA qui maintiennent le contexte et la mémoire à long terme à travers les conversations, afin qu'ils puissent apprendre et s'améliorer au fil du temps.\n* **Flux de travail modulaires :** Définissez des tâches complexes comme des étapes modulaires (en YAML ou code) avec une logique conditionnelle, des boucles et la gestion d'erreurs. Le moteur de flux de travail de Julep gère automatiquement les processus multi-étapes et les décisions.\n* **Orchestration d'outils :** Intégrez facilement des outils externes et des APIs (recherche web, bases de données, services tiers, etc.) dans la boîte à outils de votre agent. Les agents de Julep peuvent invoquer ces outils pour augmenter leurs capacités, permettant la génération augmentée par récupération et plus.\n* **Parallèle et extensible :** Exécutez plusieurs opérations en parallèle pour l'efficacité, et laissez Julep gérer la mise à l'échelle et la concurrence en arrière-plan. La plateforme est sans serveur, donc elle met à l'échelle les flux de travail de manière transparente sans surcharge DevOps supplémentaire.\n* **Exécution fiable :** Ne vous inquiétez pas des problèmes - Julep fournit des réessais intégrés, des étapes d'auto-guérison et une gestion d'erreurs robuste pour maintenir les tâches de longue durée sur la bonne voie. Vous obtenez également une surveillance et une journalisation en temps réel pour suivre les progrès.\n* **Intégration facile :** Commencez rapidement avec nos SDKs pour **Python** et **Node.js**, ou utilisez le CLI Julep pour les scripts. L'API REST de Julep est disponible si vous voulez intégrer directement dans d'autres systèmes.\n\n*Concentrez-vous sur votre logique et créativité d'IA, pendant que Julep s'occupe du gros travail !* <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"20\">\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## Commencer\n<p>\n    <a href=\"https://dashboard.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\" alt=\"Obtenir la clé API\" height=\"28\">\n    </a>\n    <span>&nbsp;</span>\n    <a href=\"https://docs.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\" alt=\"Documentation\" height=\"28\">\n    </a>\n  </p>\nDémarrer avec Julep est simple :\n\n1. **Inscription et clé API :** D'abord, inscrivez-vous sur le [Tableau de Bord Julep](https://dashboard.julep.ai) pour obtenir votre clé API (nécessaire pour authentifier vos appels SDK).\n2. **Installer le SDK :** Installez le SDK Julep pour votre langage préféré :\n\n   * <img src=\"https://user-images.githubusercontent.com/74038190/212257472-08e52665-c503-4bd9-aa20-f5a4dae769b5.gif\" width=\"20\"> **Python :** `pip install julep`\n   * <img src=\"https://user-images.githubusercontent.com/74038190/212257454-16e3712e-945a-4ca2-b238-408ad0bf87e6.gif\" width=\"20\"> **Node.js :** `npm install @julep/sdk` (ou `yarn add @julep/sdk`)\n3. **Définir votre agent :** Utilisez le SDK ou YAML pour définir un agent et son flux de travail de tâches. Par exemple, vous pouvez spécifier la mémoire de l'agent, les outils qu'il peut utiliser, et une logique de tâche étape par étape. (Voir le **[Guide de démarrage rapide](https://docs.julep.ai/introduction/quick-start)** dans notre documentation pour une procédure détaillée.)\n4. **Exécuter un flux de travail :** Invoquez votre agent via le SDK pour exécuter la tâche. La plateforme Julep orchestrera l'ensemble du flux de travail dans le cloud et gérera l'état, les appels d'outils et les interactions LLM pour vous. Vous pouvez vérifier la sortie de l'agent, surveiller l'exécution sur le tableau de bord, et itérer selon les besoins.\n\nC'est tout ! Votre premier agent d'IA peut être opérationnel en quelques minutes. Pour un tutoriel complet, consultez le **[Guide de démarrage rapide](https://docs.julep.ai/introduction/quick-start)** dans la documentation.\n\n> **Note :** Julep offre également une interface en ligne de commande (CLI) (actuellement en bêta pour Python) pour gérer les flux de travail et les agents. Si vous préférez une approche sans code ou voulez scripter des tâches communes, voir les [documents CLI Julep](https://docs.julep.ai/responses/quickstart#cli-installation) pour plus de détails.\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## Documentation et exemples\n\n\nVous voulez plonger plus profondément ? La **[Documentation Julep](https://docs.julep.ai)** couvre tout ce dont vous avez besoin pour maîtriser la plateforme - des concepts fondamentaux (Agents, Tâches, Sessions, Outils) aux sujets avancés comme la gestion de la mémoire des agents et les éléments internes de l'architecture. Les ressources clés incluent :\n\n* **[Guides de concepts](https://docs.julep.ai/concepts/) :** Apprenez sur l'architecture de Julep, comment fonctionnent les sessions et la mémoire, l'utilisation d'outils, la gestion de longues conversations, et plus.\n* **[Référence API et SDK](https://docs.julep.ai/api-reference/) :** Trouvez une référence détaillée pour toutes les méthodes SDK et les points de terminaison de l'API REST pour intégrer Julep dans vos applications.\n* **[Tutoriels](https://docs.julep.ai/tutorials/) :** Guides étape par étape pour construire des applications réelles (ex. un agent de recherche qui parcourt le web, un assistant de planification de voyage, ou un chatbot avec des connaissances personnalisées).\n* **[Recettes de livre de cuisine](https://github.com/julep-ai/julep/tree/dev/cookbooks) :** Explorez le **Livre de cuisine Julep** pour des exemples de flux de travail et d'agents prêts à l'emploi. Ces recettes démontrent des modèles communs et des cas d'usage - un excellent moyen d'apprendre par l'exemple. *Parcourez le répertoire [`cookbooks/`](https://github.com/julep-ai/julep/tree/dev/cookbooks) dans ce dépôt pour des définitions d'agents d'exemple.*\n* **[Intégration IDE](https://context7.com/julep-ai/julep) :** Accédez à la documentation Julep directement dans votre IDE ! Parfait pour obtenir des réponses instantanées pendant que vous codez.\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## Communauté et contributions\n\nRejoignez notre communauté grandissante de développeurs et d'enthousiastes de l'IA ! Voici quelques façons de s'impliquer et d'obtenir du soutien :\n\n* **Communauté Discord :** Vous avez des questions ou des idées ? Rejoignez la conversation sur notre [serveur Discord officiel](https://discord.gg/7H5peSN9QP) pour discuter avec l'équipe Julep et d'autres utilisateurs. Nous sommes heureux d'aider avec le dépannage ou de réfléchir à de nouveaux cas d'usage.\n* **Discussions et issues GitHub :** N'hésitez pas à utiliser GitHub pour signaler des bugs, demander des fonctionnalités, ou discuter des détails d'implémentation. Consultez les [**bonnes premières issues**](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) si vous souhaitez contribuer - nous accueillons les contributions de toutes sortes.\n* **Contribuer :** Si vous voulez contribuer du code ou des améliorations, veuillez voir notre [Guide de contribution](CONTRIBUTING.md) pour comment commencer. Nous apprécions toutes les PR et les retours. En collaborant, nous pouvons rendre Julep encore meilleur !\n\n*Conseil de pro : <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/e379a33a-b428-4385-b44f-3da16e7bac9f\" width=\"35\"> Mettez une étoile à notre dépôt pour rester à jour - nous ajoutons constamment de nouvelles fonctionnalités et exemples.*    \n\n<br/>\n\nVos contributions, grandes ou petites, nous sont précieuses. Construisons quelque chose d'incroyable ensemble !    <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"20\">\n <img src=\"https://user-images.githubusercontent.com/74038190/216125640-2783ebd5-e63e-4ed1-b491-627a40b24850.png\" width=\"20\">\n\n<h4>Nos contributeurs extraordinaires :</h4>\n\n<a href=\"https://github.com/julep-ai/julep/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=julep-ai/julep\" />\n</a>\n\n<br/>\n\n## Licence\n\nJulep est offert sous la **Licence Apache 2.0**, ce qui signifie qu'il est libre d'utilisation dans vos propres projets. Voir le fichier [LICENSE](LICENSE) pour plus de détails. Amusez-vous à construire avec Julep !"
  },
  {
    "path": ".github/README-JA.md",
    "content": "<sup><div align=\"center\">\n  <!-- Keep these links. Translations will automatically update with the README. -->\n  [Deutsch](https://www.readme-i18n.com/julep-ai/julep?lang=de) | \n  [Español](https://www.readme-i18n.com/julep-ai/julep?lang=es) | \n  [français](https://www.readme-i18n.com/julep-ai/julep?lang=fr) | \n  [日本語](https://www.readme-i18n.com/julep-ai/julep?lang=ja) | \n  [한국어](https://www.readme-i18n.com/julep-ai/julep?lang=ko) | \n  [Português](https://www.readme-i18n.com/julep-ai/julep?lang=pt) | \n  [Русский](https://www.readme-i18n.com/julep-ai/julep?lang=ru) | \n  [中文](https://www.readme-i18n.com/julep-ai/julep?lang=zh)\n</div></sup>\n\n<div align=\"center\" id=\"top\">\n<img src=\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\" alt=\"julep\" height=300 />\n\n<br>\n  <p>\n   <a href=\"https://www.npmjs.com/package/@julep/sdk\"><img src=\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\" alt=\"NPM Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://pypi.org/project/julep\"><img src=\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\" alt=\"PyPI - Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://hub.docker.com/u/julepai\"><img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\" alt=\"Docker Image Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://choosealicense.com/licenses/apache/\"><img src=\"https://img.shields.io/github/license/julep-ai/julep\" alt=\"GitHub License\" height=\"28\"></a>\n  </p>\n  \n  <h3 align=\"center\">\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\"><img src=\"https://user-images.githubusercontent.com/74038190/235294015-47144047-25ab-417c-af1b-6746820a20ff.gif\" width=\"60\"></a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\"><img src=\"https://raw.githubusercontent.com/gist/IgnaceMaes/744cd9cf41ec6acf46fc8f4e9f370f86/raw/d16658c2945d30c8a953b35cb17dd7085111b46c/x-logo.svg\" width=\"45\"></a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\"><img src=\"https://user-images.githubusercontent.com/74038190/235294012-0a55e343-37ad-4b0f-924f-c8431d9d2483.gif\" width=\"60\"></a>\n\n  </h3>\n  \n  <!-- <h3>\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\">𝕏</a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\">LinkedIn</a>\n  </h3> -->\n</div>\n\n**今すぐJulepを試す：** **[Julepウェブサイト](https://julep.ai)** をご覧ください · **[Julepダッシュボード](https://dashboard.julep.ai)** で始める (無料APIキー) · **[ドキュメント](https://docs.julep.ai/introduction/julep)** を読む\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n<h3>📖 目次</h3>\n\n- [なぜJulepなのか？](#なぜjulepなのか)\n- [はじめに](#はじめに)\n- [ドキュメントと例](#ドキュメントと例)\n- [コミュニティと貢献](#コミュニティと貢献)\n- [ライセンス](#ライセンス)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## なぜJulepなのか？\n\nJulepは、単純なプロンプトのチェーンをはるかに超えた**エージェントベースのAIワークフロー**を構築するためのオープンソースプラットフォームです。大規模言語モデル（LLM）とツールを使用して複雑な多段階プロセスを**インフラストラクチャの管理なしに**オーケストレーションできます。Julepを使用すると、**過去のやり取りを記憶し**、分岐ロジック、ループ、並列実行、外部APIとの統合を備えた洗練されたタスクを処理するAIエージェントを作成できます。要するに、Julepは*「AIエージェントのためのFirebase」*として機能し、スケールでのインテリジェントワークフローのための堅牢なバックエンドを提供します。\n\n**主要機能と利点：**\n\n* **永続メモリ：** 会話を通じてコンテキストと長期記憶を維持するAIエージェントを構築し、時間をかけて学習と改善ができます。\n* **モジュラーワークフロー：** 条件ロジック、ループ、エラーハンドリングを備えたモジュラーステップとして複雑なタスクを定義します（YAMLまたはコード）。Julepのワークフローエンジンが多段階プロセスと決定を自動的に管理します。\n* **ツールオーケストレーション：** 外部ツールとAPI（Web検索、データベース、サードパーティサービスなど）をエージェントのツールキットの一部として簡単に統合します。Julepのエージェントはこれらのツールを呼び出して機能を拡張し、検索拡張生成などを可能にします。\n* **並列・スケーラブル：** 効率性のために複数の操作を並列で実行し、Julepにスケーリングと並行処理を任せます。プラットフォームはサーバーレスなので、追加のDevOpsオーバーヘッドなしにワークフローをシームレスにスケールします。\n* **信頼性のある実行：** 不具合を心配する必要はありません - Julepは組み込まれた再試行、自己修復ステップ、堅牢なエラーハンドリングを提供し、長時間実行タスクを軌道に乗せ続けます。また、進捗を追跡するためのリアルタイム監視とログも提供します。\n* **簡単な統合：** **Python**と**Node.js**向けのSDK、またはスクリプト用のJulep CLIですぐに始められます。他のシステムに直接統合したい場合は、JulepのREST APIが利用可能です。\n\n*AIロジックと創造性に集中し、重労働はJulepにお任せください！* <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"20\">\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## はじめに\n<p>\n    <a href=\"https://dashboard.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\" alt=\"APIキーを取得\" height=\"28\">\n    </a>\n    <span>&nbsp;</span>\n    <a href=\"https://docs.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\" alt=\"ドキュメント\" height=\"28\">\n    </a>\n  </p>\nJulepの起動と実行は簡単です：\n\n1. **サインアップとAPIキー：** まず、[Julepダッシュボード](https://dashboard.julep.ai)にサインアップしてAPIキーを取得します（SDK呼び出しの認証に必要）。\n2. **SDKのインストール：** お好みの言語でJulep SDKをインストールします：\n\n   * <img src=\"https://user-images.githubusercontent.com/74038190/212257472-08e52665-c503-4bd9-aa20-f5a4dae769b5.gif\" width=\"20\"> **Python:** `pip install julep`\n   * <img src=\"https://user-images.githubusercontent.com/74038190/212257454-16e3712e-945a-4ca2-b238-408ad0bf87e6.gif\" width=\"20\"> **Node.js:** `npm install @julep/sdk` (または `yarn add @julep/sdk`)\n3. **エージェントの定義：** SDKまたはYAMLを使用してエージェントとそのタスクワークフローを定義します。例えば、エージェントのメモリ、使用できるツール、ステップバイステップのタスクロジックを指定できます。（詳細なウォークスルーについては、ドキュメントの**[クイックスタート](https://docs.julep.ai/introduction/quick-start)**を参照してください。）\n4. **ワークフローの実行：** SDKを通じてエージェントを呼び出してタスクを実行します。Julepプラットフォームがクラウドでワークフロー全体をオーケストレーションし、状態、ツール呼び出し、LLMインタラクションを管理します。エージェントの出力を確認し、ダッシュボードで実行を監視し、必要に応じて反復できます。\n\nこれで完了です！最初のAIエージェントを数分で起動して実行できます。完全なチュートリアルについては、ドキュメント内の**[クイックスタートガイド](https://docs.julep.ai/introduction/quick-start)**をご確認ください。\n\n> **注意：** Julepはワークフローとエージェントを管理するためのコマンドラインインターface（CLI）も提供しています（現在Pythonのベータ版）。ノーコードアプローチを好む場合や一般的なタスクをスクリプト化したい場合は、詳細について[Julep CLIドキュメント](https://docs.julep.ai/responses/quickstart#cli-installation)を参照してください。\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## ドキュメントと例\n\n\nさらに深く学びたいですか？**[Julepドキュメント](https://docs.julep.ai)**は、コアコンセプト（エージェント、タスク、セッション、ツール）から高度なトピック（エージェントメモリ管理やアーキテクチャの内部構造）まで、プラットフォームを習得するために必要なすべてをカバーしています。主要なリソースには以下があります：\n\n* **[コンセプトガイド](https://docs.julep.ai/concepts/)：** Julepのアーキテクチャ、セッションとメモリの仕組み、ツールの使用、長い会話の管理などについて学びます。\n* **[API・SDK リファレンス](https://docs.julep.ai/api-reference/)：** JulepをアプリケーションNに統合するためのすべてのSDKメソッドとREST APIエンドポイントの詳細なリファレンスを見つけます。\n* **[チュートリアル](https://docs.julep.ai/tutorials/)：** 実際のアプリケーション構築のためのステップバイステップガイド（例：Webを検索するリサーチエージェント、旅行計画アシスタント、カスタム知識を持つチャットボット）。\n* **[クックブックレシピ](https://github.com/julep-ai/julep/tree/dev/cookbooks)：** 既製のワークフローとエージェントの例については**Julep Cookbook**を探索してください。これらのレシピは一般的なパターンと使用例を示しています - 例から学ぶ素晴らしい方法です。*サンプルエージェント定義については、このリポジトリの[`cookbooks/`](https://github.com/julep-ai/julep/tree/dev/cookbooks)ディレクトリを参照してください。*\n* **[IDE統合](https://context7.com/julep-ai/julep)：** IDE内でJulepドキュメントに直接アクセス！コーディング中に即座に答えを得るのに最適です。\n\n<img src=\"https://raw.githubusercontent.com/anasalatasiuni/gif/main/white-line.gif\">\n\n## コミュニティと貢献\n\n成長する開発者とAI愛好家のコミュニティに参加しましょう！参加とサポートを得る方法をいくつか紹介します：\n\n* **Discordコミュニティ：** 質問やアイデアがありますか？[公式Discordサーバー](https://discord.gg/7H5peSN9QP)での会話に参加して、Julepチームや他のユーザーとチャットしましょう。トラブルシューティングのお手伝いや新しい使用例のブレインストーミングを喜んでサポートします。\n* **GitHub ディスカッションとイシュー：** バグ報告、機能要求、実装詳細の議論には、GitHubを自由にご利用ください。貢献したい場合は[**good first issues**](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)をチェックしてください - あらゆる種類の貢献を歓迎します。\n* **貢献：** コードや改善を貢献したい場合は、始め方について[貢献ガイド](CONTRIBUTING.md)を参照してください。すべてのPRとフィードバックを感謝します。協力することで、Julepをさらに良くすることができます！\n\n*プロのヒント： <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/e379a33a-b428-4385-b44f-3da16e7bac9f\" width=\"35\"> リポジトリにスターを付けて最新情報を入手してください - 新機能と例を継続的に追加しています。*    \n\n<br/>\n\nあなたの貢献は、大きいものも小さいものも、私たちにとって価値があります。一緒に素晴らしいものを構築しましょう！    <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"20\">\n <img src=\"https://user-images.githubusercontent.com/74038190/216125640-2783ebd5-e63e-4ed1-b491-627a40b24850.png\" width=\"20\">\n\n<h4>素晴らしい貢献者たち：</h4>\n\n<a href=\"https://github.com/julep-ai/julep/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=julep-ai/julep\" />\n</a>\n\n<br/>\n\n## ライセンス\n\nJulepは**Apache 2.0ライセンス**の下で提供されており、これは自分のプロジェクトで自由に使用できることを意味します。詳細については[LICENSE](LICENSE)ファイルを参照してください。Julepでの構築をお楽しみください！"
  },
  {
    "path": ".github/SUPPORT.md",
    "content": "# Support for Julep\n\nWelcome to the Julep support page! We're here to help you with any questions or issues you may encounter while using our platform. This document outlines the various ways you can get support and engage with our community.\n\n## Getting Help\n\n### Documentation\n\nOur comprehensive documentation is the first place to look for answers:\n\n- [Explore Docs](https://docs.julep.ai)\n\nHere you'll find detailed guides, API references, and tutorials to help you make the most of Julep.\n\n### Community Support\n\nJoin our vibrant community to get help from other users and the Julep team:\n\n- [Discord](https://discord.com/invite/JTSBGRZrzj): Join our Discord server to ask questions, share ideas, and discuss Julep with other developers.\n- [GitHub](https://github.com/julep-ai/julep): Report issues and feature requests.\n\n### Social Media\n\nFollow us on social media for updates, tips, and community highlights:\n\n- [𝕏 (Twitter)](https://x.com/julep_ai)\n- [LinkedIn](https://www.linkedin.com/company/julep-ai)\n\n## Reporting Issues\n\nIf you encounter a bug or have a feature request, please open an issue on our GitHub repository:\n\n- [GitHub Issues](https://github.com/julep-ai/julep/issues)\n\nWhen reporting issues, please provide as much detail as possible, including:\n\n- Steps to reproduce the issue\n- Expected behavior\n- Actual behavior\n- Any error messages or logs\n- Your environment (Julep version, operating system, etc.)\n\n## Contributing\n\nWe welcome contributions to Julep! If you're interested in contributing, please check out our:\n\n- [Contributing Guidelines](https://github.com/julep-ai/julep/blob/dev/.github/CONTRIBUTING.md)\n- [Code of Conduct](https://github.com/julep-ai/julep/blob/main/.github/CODE_OF_CONDUCT.md)\n\n## API Keys\n\nWhile we are in beta, you can reach out on [Discord](https://discord.com/invite/JTSBGRZrzj) to get your API key.\n\n## Staying Updated\n\nTo stay informed about the latest updates, features, and community news:\n\n- Watch our [GitHub repository](https://github.com/julep-ai/julep)\n- Follow us on [𝕏 (Twitter)](https://x.com/julep_ai)\n- Join our [Discord](https://discord.com/invite/JTSBGRZrzj) for announcements\n\nThank you for using Julep! We're excited to see what you build with our platform.\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where the package manifests are located.\n# Please see the documentation for all configuration options:\n# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file\n\nversion: 2\nupdates:\n  - package-ecosystem: \"\" # See documentation for possible values\n    directory: \"/\" # Location of package manifests\n    schedule:\n      interval: \"weekly\"\n"
  },
  {
    "path": ".github/workflows/bake-push-to-hub.yml",
    "content": "name: Build and push images to docker hub on merge to dev\nrun-name: ${{ github.actor }} is building and pushing images to docker hub\n\non:\n  push:\n    branches:\n      - \"dev\"\n    tags:\n      - \"v*\"\n  release:\n    types: [published, released, prereleased]\n    \njobs:\n  Bake-Push-Images:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to Docker Hub\n        uses: docker/login-action@v3\n        with:\n          username: julepai\n          password: \"${{ secrets.DOCKER_HUB_PASSWORD }}\"\n\n      - name: Build and push agent images\n        uses: docker/bake-action@v5\n        with:\n          files: |\n            ./docker-bake.hcl\n          targets: agents-api\n          push: true\n          set: |\n            *.cache-from=type=gha\n            *.cache-to=type=gha,mode=max\n        env:\n          TAG: ${{ github.ref_name }}\n          GIT_SHA: ${{ github.sha }}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: true\n"
  },
  {
    "path": ".github/workflows/bandit-security-check-python-agents-api.yml",
    "content": "name: Bandit security check python agents-api\nrun-name: ${{ github.actor }} is checking the security of the code\n\non:\n  workflow_dispatch:\n  pull_request:\n    paths:\n      - 'src/agents-api/**'\n  push:\n    paths:\n      - 'src/agents-api/**'\n\njobs:\n  bandit_check:\n    name: bandit check security of python code in agents-api\n    runs-on: ubuntu-latest\n\n    steps:\n    - name: Check out repository\n      uses: actions/checkout@v4\n\n    - name: Run Bandit scan\n      uses: PyCQA/bandit-action@v1\n      with:\n        targets: \"./src/agents-api/agents_api\"\n        confidence: high\n        severity: high\n"
  },
  {
    "path": ".github/workflows/changelog-ci.yml",
    "content": "name: Changelog on release\n\non:\n  release:\n    types: [published]\n\njobs:\n  changelog:\n    runs-on: ubuntu-latest\n\n    steps:\n      # Checks-out your repository\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n          ref: dev\n\n      # Generate changelog from release notes\n      - uses: rhysd/changelog-from-release/action@v3\n        with:\n          file: CHANGELOG.md\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          pull_request: true\n      "
  },
  {
    "path": ".github/workflows/changelog-sync.yml",
    "content": "name: Sync changelog with Blot\n\non:\n  pull_request:\n    types: [opened, synchronize, reopened]\n    paths: [\"changelog/**\"]\n  push:\n    branches:\n      - main\n      - dev\n    paths:\n      - \"changelog/**\"\n  workflow_run:\n       workflows: [\"Claude Changelog (PR)\"]\n       types: [completed]\n  workflow_dispatch:\n\njobs:\n  sync:\n    runs-on: ubuntu-latest\n\n    steps:\n    - name: Checkout repo\n      uses: actions/checkout@v4\n      with:\n        fetch-depth: 0\n\n    - name: Configure git identity\n      run: |\n        git config --global user.name  \"${{ secrets.BLOT_GIT_USERNAME }}\"\n        git config --global user.email \"${{ secrets.BLOT_GIT_USERNAME }}\"\n\n    - name: Clone Blot repo\n      env:\n        BLOT_USERNAME: ${{ secrets.BLOT_GIT_USERNAME }}\n        BLOT_PASSWORD: ${{ secrets.BLOT_GIT_PASSWORD }}\n      run: |\n        # URL-encode the username (replace @ with %40)\n        export ENCODED_USERNAME=${BLOT_USERNAME//@/%40}\n\n        # Clone into a directory outside the current git repo to avoid conflicts\n        cd ${{ runner.temp }}\n        \n        if ! git clone \\\n          \"https://${ENCODED_USERNAME}:${BLOT_PASSWORD}@blot.im/clients/git/end/julepchangelog.git\" ; then\n          echo \"Error: Failed to clone Blot repository\"\n          exit 1\n        fi\n\n        # Get the default branch and ensure we're on it\n        cd julepchangelog\n        git checkout -B master origin/master\n        cd ${{ github.workspace }}\n\n    - name: Copy updated files into Blot working tree\n      run: |\n        if [ ! -d \"changelog\" ]; then\n          echo \"Error: changelog directory not found\"\n          exit 1\n        fi\n\n        if ! rsync -a --delete --exclude='.git/' --exclude='.gitignore' changelog/ ${{ runner.temp }}/julepchangelog/; then\n          echo \"Error: Failed to sync files\"\n          exit 1\n        fi\n\n    - name: Commit & push if there are changes\n      env:\n        BLOT_USERNAME: ${{ secrets.BLOT_GIT_USERNAME }}\n        BLOT_PASSWORD: ${{ secrets.BLOT_GIT_PASSWORD }}\n      run: |\n        cd ${{ runner.temp }}/julepchangelog\n        \n        if [ -z \"$(git status --porcelain)\" ]; then\n         echo \"No changes to publish\"\n         exit 0\n        fi\n\n        if ! git add -A; then\n          echo \"Error: Failed to stage changes\"\n          exit 1\n        fi\n\n        if ! git commit -m \"chore: publish updates\"; then\n          echo \"Error: Failed to commit changes\"\n          exit 1\n        fi\n\n        # URL-encode the username (replace @ with %40)\n        export ENCODED_USERNAME=${BLOT_USERNAME//@/%40}\n        \n        if ! git push \"https://${ENCODED_USERNAME}:${BLOT_PASSWORD}@blot.im/clients/git/end/julepchangelog.git\" master; then\n          echo \"Error: Failed to push changes to branch master\"\n          exit 1\n        fi\n\n        echo \"Successfully synced changelog to Blot\"\n\n"
  },
  {
    "path": ".github/workflows/claude-changelog-pr.yml",
    "content": "name: Claude Changelog (PR)\n\non:\n  pull_request:\n    branches: [main, dev]\n    types: [opened, synchronize, reopened]\n    paths-ignore:\n      - \"changelog/**\"\n\njobs:\n  changelog:\n    name: Update Changelog\n    runs-on: ubuntu-latest\n    if: ${{ github.event.sender.login != 'github-actions[bot]' && github.event.pull_request.user.login != 'claude-doc-bot' && contains(github.event.pull_request.title, '[skip-claude]') == false }}\n    permissions:\n      contents: write\n      pull-requests: write\n      issues: write\n      actions: read\n      id-token: write\n\n    steps:\n      - uses: actions/checkout@v4\n        with: { fetch-depth: 0 }\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@v4\n        with:\n          role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }}\n          role-session-name: GitHubActions-Claude-Changelog-${{ github.run_id }}\n          aws-region: us-east-1\n\n      - name: Save PR patch\n        run: gh pr diff ${{ github.event.pull_request.number }} --patch > diff.patch\n        env:\n          GH_TOKEN: \"${{ secrets.GITHUB_TOKEN }}\"\n\n      - name: Set changelog directory\n        id: set_cl_dir\n        run: |\n          if [[ \"${{ github.event.pull_request.base.ref }}\" == \"dev\" ]]; then\n            echo \"CHANGELOG_DIR=changelog/dev\" >> \"$GITHUB_ENV\"\n            echo \"CHANGELOG_TAG=dev\" >> \"$GITHUB_ENV\"\n          else\n            echo \"CHANGELOG_DIR=changelog/main\" >> \"$GITHUB_ENV\"\n            echo \"CHANGELOG_TAG=main\" >> \"$GITHUB_ENV\"\n          fi\n\n      - name: Claude updates changelog & home summary\n        uses: anthropics/claude-code-action@v1\n        with:\n          use_bedrock: \"true\"\n          track_progress: true\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          claude_args: |\n            --model us.anthropic.claude-sonnet-4-20250514-v1:0\n            --max-turns 5\n            --allowedTools Read,Edit,MultiEdit\n          prompt: |\n            REPO: ${{ github.repository }}\n            PR NUMBER: ${{ github.event.pull_request.number }}\n            \n            You are the team's *changelog* bot. Follow these rules strictly:\n\n            1. Read the unified diff in *diff.patch*.\n            2. Decide if the patch introduces any user-visible change (new feature, behaviour change, deprecation, bug fix).  \n               • If **no user-visible change** – *do nothing*: exit without writing, committing, or replying.\n            3. If **yes**:\n               a. **Create or update** file in *${{ env.CHANGELOG_DIR }}* named `{YYYY}-{MM}-{DD}.md` with a concise bullet list of the changes.\n                  • Begin each bullet with a past-tense verb (e.g. \"Added\", \"Fixed\").\n                  • Keep bullets short (< 100 chars).\n                  • Ensure the file contains YAML front-matter:\n                    ```\n                    ---\n                    title: \"Julep AI Changelog\"\n                    date:  {YYYY}-{MM}-{DD}\n                    tags: [${{ env.CHANGELOG_TAG }}]\n                    ---\n                    ```\n               b. **Update** `Templates/index-template/home-summary.html` so the home page shows the newest entry's title, date and bullet list (only if the PR is on main).\n            4. Finally, stage, commit and push the edits with a clear message.\n"
  },
  {
    "path": ".github/workflows/claude-code-review.yml",
    "content": "name: Claude Code Review\n\non:\n  pull_request:\n    types: [opened, synchronize]\n    # Optional: Only run on specific file changes\n    # paths:\n    #   - \"src/**/*.ts\"\n    #   - \"src/**/*.tsx\"\n    #   - \"src/**/*.js\"\n    #   - \"src/**/*.jsx\"\n\njobs:\n  claude-review:\n    # Optional: Filter by PR author\n    # if: |\n    #   github.event.pull_request.user.login == 'external-contributor' ||\n    #   github.event.pull_request.user.login == 'new-developer' ||\n    #   github.event.pull_request.author_association == 'FIRST_TIME_CONTRIBUTOR'\n    \n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      pull-requests: read\n      issues: read\n      actions: read\n      id-token: write\n    \n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 1\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@v4\n        with:\n          role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }}\n          role-session-name: GitHubActions-Claude-${{ github.run_id }}\n          aws-region: us-east-1\n\n      - name: Run Claude Code Review\n        id: claude-review\n        uses: anthropics/claude-code-action@v1\n        with:\n          use_bedrock: \"true\"\n          prompt: |\n            REPO: ${{ github.repository }}\n            PR NUMBER: ${{ github.event.pull_request.number }}\n            \n            This is a monorepo with multiple different services.\n            The repo uses AGENTS.md as the file that contains instructions for\n            AI agents (instead of CLAUDE.md files). CLAUDE.md still exists but is just a symlink to the corresponding AGENTS.md (usually in the same dir).\n            Please review this pull request and provide feedback on:\n            - Code quality and best practices\n            - Potential bugs or issues\n            - Performance considerations\n            - Security concerns\n            - Test coverage\n            \n            Use the repository's CLAUDE.md for guidance on style and conventions. Be constructive and helpful in your feedback.\n\n            Use `gh pr comment` with your Bash tool to leave your review as a comment on the PR.\n          \n          # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md\n          # or https://docs.anthropic.com/en/docs/claude-code/sdk#command-line for available options\n          claude_args: |\n            --model us.anthropic.claude-opus-4-1-20250805-v1:0\n            --allowed-tools \"Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)\"\n\n"
  },
  {
    "path": ".github/workflows/claude-docs-manual.yml",
    "content": "name: Claude Docs (Manual)\n\non:\n  workflow_dispatch:\n    inputs:\n      pr_number:\n        description: \"PR number\"\n        required: true\n\njobs:\n  update-docs:\n    name: Manual Doc Update\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n      pull-requests: write\n      issues: write\n      actions: read\n      id-token: write\n\n    steps:\n      - uses: actions/checkout@v4\n        with: { fetch-depth: 0 }\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@v4\n        with:\n          role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }}\n          role-session-name: GitHubActions-Claude-Docs-${{ github.run_id }}\n          aws-region: us-east-1\n\n      - name: Save PR patch\n        run: gh pr diff ${{ github.event.inputs.pr_number }} --patch > diff.patch\n        env: \n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Determine PR base branch\n        id: pr_base\n        run: |\n          base=$(gh pr view ${{ github.event.inputs.pr_number }} --json baseRefName -q .baseRefName)\n          echo \"BASE_BRANCH=$base\" >> \"$GITHUB_OUTPUT\"\n        env:\n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Set changelog directory\n        id: set_cl_dir\n        run: |\n          if [[ \"${{ steps.pr_base.outputs.BASE_BRANCH }}\" == \"dev\" ]]; then\n            echo \"CHANGELOG_DIR=changelog/dev\" >> \"$GITHUB_ENV\"\n            echo \"CHANGELOG_TAG=dev\" >> \"$GITHUB_ENV\"\n          else\n            echo \"CHANGELOG_DIR=changelog/main\" >> \"$GITHUB_ENV\"\n            echo \"CHANGELOG_TAG=main\" >> \"$GITHUB_ENV\"\n          fi\n\n      - name: Claude changes docs\n        uses: anthropics/claude-code-action@v1\n        with:\n          use_bedrock: \"true\"\n          track_progress: true\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          claude_args: |\n            --model us.anthropic.claude-sonnet-4-20250514-v1:0\n            --max-turns 10\n            --allowedTools Read,Edit,MultiEdit,Write\n          prompt: |\n            REPO: ${{ github.repository }}\n            PR NUMBER: ${{ github.event.inputs.pr_number }}\n            \n            You are the team's documentation bot.  \n            1. Read *diff.patch*.  \n            2. For any change that affects users:\n              1. **edit** files under *documentation/***  \n               (Mintlify structure) so docs stay accurate.\n              2. **create** new file in *${{ env.CHANGELOG_DIR }}***\n                named `{YYYY}-{MM}-{DD}.md`** containing a bulleted list \n                of the changes (don't include unnecessary details).\n                - File front-matter:\n                  ```\n                  ---\n                  title: \"Julep AI Changelog – {human-readable-date}\"\n                  date:  {YYYY}-{MM}-{DD}\n                  tags: [${{ env.CHANGELOG_TAG }}]\n                  ---\n                  ```  \n               - If the file already exists, append to its bullet list.\n              3. **update** `Templates/index-template/home-summary.html` so the home page summarises the latest entry from the changelog (same title/date and bullet list).  \n            3. Commit the edits.  \n            If diff.patch has no user-visible change, do nothing.\n            4. Finally, stage, commit and push the edits with a clear message.\n            \n            Note: AGENTS.md replaces CLAUDE.md (CLAUDE.md is a symlink).\n"
  },
  {
    "path": ".github/workflows/claude-docs-pr.yml",
    "content": "name: Claude Docs (PR)\n\non:\n  pull_request:\n    branches: [main]\n    types: [opened, synchronize, reopened]\n    paths-ignore:\n      - \"changelog/**\"\n\njobs:\n  docs-gate:\n    name: Documentation Gate\n    runs-on: ubuntu-latest\n\n    if: ${{ github.event.sender.login != 'github-actions[bot]' && github.event.pull_request.user.login != 'claude-doc-bot' && contains(github.event.pull_request.title, '[skip-claude]') == false }}\n\n    outputs:\n      pr_number:     ${{ steps.resolve.outputs.number }}\n      should_update: ${{ steps.gate.outputs.result }}\n\n    permissions:\n      contents: read\n      pull-requests: read\n      actions: read\n      id-token: write\n\n    steps:\n      - uses: actions/checkout@v4\n        with: { fetch-depth: 0 }\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@v4\n        with:\n          role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }}\n          role-session-name: GitHubActions-Claude-DocsGate-${{ github.run_id }}\n          aws-region: us-east-1\n\n      - name: PR number\n        id: resolve\n        run: echo \"number=${{ github.event.pull_request.number }}\" >> \"$GITHUB_OUTPUT\"\n\n      - name: Save PR patch\n        run: gh pr diff ${{ steps.resolve.outputs.number }} --patch > diff.patch\n        env: \n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Gate\n        id: gate\n        uses: anthropics/claude-code-action@v1\n        with:\n          use_bedrock: \"true\"\n          track_progress: true\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          claude_args: |\n            --model us.anthropic.claude-sonnet-4-20250514-v1:0\n            --max-turns 2\n            --allowedTools Read\n          prompt: |\n            REPO: ${{ github.repository }}\n            PR NUMBER: ${{ github.event.pull_request.number }}\n            \n            You are a senior technical-writer.  \n            Read *diff.patch* (unified diff).  \n            Reply with the single word **UPDATE** if the patch\n            a) adds new user-visible functionality,\n            b) changes or removes existing behaviour,\n            c) deprecates anything,  \n            otherwise reply **SKIP**.\n\n  update-docs:\n    name: Update Documentation\n    needs: docs-gate\n    if: ${{ github.event.sender.login != 'github-actions[bot]' &&\n            needs.docs-gate.result == 'success' &&\n            needs.docs-gate.outputs.should_update == 'UPDATE' }}\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n      pull-requests: write\n      issues: write\n      actions: read\n      id-token: write\n\n    steps:\n      - uses: actions/checkout@v4\n        with: { fetch-depth: 0 }\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@v4\n        with:\n          role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }}\n          role-session-name: GitHubActions-Claude-DocsUpdate-${{ github.run_id }}\n          aws-region: us-east-1\n\n      - name: Save PR patch\n        run: gh pr diff ${{ needs.docs-gate.outputs.pr_number }} --patch > diff.patch\n        env: \n          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n\n      - name: Claude changes docs\n        uses: anthropics/claude-code-action@v1\n        with:\n          use_bedrock: \"true\"\n          track_progress: true\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          claude_args: |\n            --model us.anthropic.claude-opus-4-1-20250805-v1:0\n            --max-turns 10\n            --allowedTools Read,Edit,MultiEdit\n          prompt: |\n            REPO: ${{ github.repository }}\n            PR NUMBER: ${{ needs.docs-gate.outputs.pr_number }}\n            \n            You are the team's documentation bot.  \n            1. Read *diff.patch*.  \n            2. For any change that affects users, **edit** files under *documentation/***  \n               (Mintlify structure) so docs stay accurate.\n            3. Commit the edits.  \n            If diff.patch has no user-visible change, do nothing.\n            4. Finally, stage, commit and push the edits with a clear message.\n            \n            Note: AGENTS.md replaces CLAUDE.md (CLAUDE.md is a symlink).\n"
  },
  {
    "path": ".github/workflows/claude.yml",
    "content": "name: Claude Code\n\non:\n  issue_comment:\n    types: [created]\n  pull_request_review_comment:\n    types: [created]\n  issues:\n    types: [opened, assigned]\n  pull_request_review:\n    types: [submitted]\n\njobs:\n  claude:\n    if: |\n      (github.event_name == 'issue_comment' && contains(github.event.comment.body, '@claude')) ||\n      (github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '@claude')) ||\n      (github.event_name == 'pull_request_review' && contains(github.event.review.body, '@claude')) ||\n      (github.event_name == 'issues' && (contains(github.event.issue.body, '@claude') || contains(github.event.issue.title, '@claude')))\n    runs-on: ubuntu-latest\n    permissions:\n      contents: read\n      pull-requests: read\n      issues: read\n      id-token: write\n      actions: read # Required for Claude to read CI results on PRs\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 1\n\n      - name: Configure AWS credentials\n        uses: aws-actions/configure-aws-credentials@v4\n        with:\n          role-to-assume: arn:aws:iam::${{ secrets.AWS_ACCOUNT_ID }}:role/${{ secrets.AWS_ROLE_NAME }}\n          role-session-name: GitHubActions-Claude-${{ github.run_id }}\n          aws-region: us-east-1\n\n      - name: Run Claude Code\n        id: claude\n        uses: anthropics/claude-code-action@v1\n        with:\n          use_bedrock: \"true\"\n          \n          # This is an optional setting that allows Claude to read CI results on PRs\n          additional_permissions: |\n            actions: read\n\n          # Optional: Give a custom prompt to Claude. If this is not specified, Claude will perform the instructions specified in the comment that tagged it.\n          # prompt: 'Update the pull request description to include a summary of changes.'\n\n          # See https://github.com/anthropics/claude-code-action/blob/main/docs/usage.md\n          # or https://docs.anthropic.com/en/docs/claude-code/sdk#command-line for available options\n          claude_args: |\n            --model us.anthropic.claude-opus-4-1-20250805-v1:0\n            --allowed-tools \"Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(gh pr list:*)\"\n\n"
  },
  {
    "path": ".github/workflows/docker-bake-on-pr.yml",
    "content": "name: Bake images on PR\nrun-name: ${{ github.actor }} is baking images\n\non:\n  pull_request:\n\njobs:\n  Bake-Images:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to Docker Hub\n        uses: docker/login-action@v3\n        with:\n          username: julepai\n          password: \"${{ secrets.DOCKER_HUB_PASSWORD }}\"\n\n      - name: Bake images\n        uses: docker/bake-action@v5\n        with:\n          files: |\n            ./docker-bake.hcl\n          targets: agents-api\n          push: false\n          set: |\n            *.cache-from=type=gha\n            *.cache-to=type=gha,mode=max\n        env:\n          TAG: pr-run-${{ github.run_number }}-${{ github.run_attempt }}\n          GIT_SHA: ${{ github.sha }}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.event_name == 'pull_request' }}\n"
  },
  {
    "path": ".github/workflows/doctoc-on-push.yml",
    "content": "on: push\n\nname: TOC Generator\njobs:\n  generateTOC:\n    name: TOC Generator\n    runs-on: ubuntu-latest\n    steps:\n      - uses: technote-space/toc-generator@v4\n        with:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n          MAX_HEADER_LEVEL: 3\n          TOC_TITLE: '<h3>📖 Table of Contents</h3>'\n          FOLDING: false\n          CREATE_PR: true\n          CHECK_ONLY_DEFAULT_BRANCH: true\n"
  },
  {
    "path": ".github/workflows/generate-changelog.yml",
    "content": "name: Julep Changelog Generation\nrun-name: ${{ github.actor }} is generating changelog for the last two weeks using Julep\n\non:\n  workflow_dispatch:\n\njobs:\n  changelog_generation:\n    runs-on: ubuntu-latest\n\n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n          ref: dev\n\n      - name: Setup GitHub CLI\n        run: |\n          echo \"${{ secrets.GITHUB_TOKEN }}\" | gh auth login --with-token\n\n      - name: Collect merged PRs from the last two weeks\n        id: collect_prs\n        run: |\n          date_threshold=$(date -d '-14 days' +\"%Y-%m-%d\")\n\n          echo \"Fetching merged PRs since $date_threshold...\"\n\n          merged_prs=$(\n            gh pr list --state merged --json number,title,body,author \\\n              --search \"merged:>=$date_threshold\" \\\n              --jq 'map({number, title, body, author: .author.login})'\n          )\n\n          if [ -z \"$merged_prs\" ] || [ \"$merged_prs\" = \"null\" ]; then\n            echo \"No merged PRs found in the last two weeks.\"\n            echo \"has_prs=false\" >> $GITHUB_OUTPUT\n            exit 0\n          fi\n\n          echo \"$merged_prs\" > pr_data.json\n          echo \"has_prs=true\" >> $GITHUB_OUTPUT\n\n      - name: Setup Python v3.10.12\n        uses: actions/setup-python@v5\n        with:\n          python-version: \"3.10.12\"\n\n      - name: Install dependencies\n        run: |\n          python -m pip install --upgrade pip\n          python -m pip install PyYAML julep\n\n      - name: Send PR data to Python script\n        if: steps.collect_prs.outputs.has_prs == 'true'\n        id: generate_changelog\n        run: |\n          if ! python src/scripts/generate_changelog.py; then\n            echo \"Error: Failed to generate changelog\"\n            exit 1\n          fi\n        env:\n          JULEP_API_KEY: ${{ secrets.JULEP_API_KEY }}\n          TASK_UUID: ${{ secrets.TASK_UUID }}\n          AGENT_UUID: ${{ secrets.AGENT_UUID }}\n\n      - name: Create Pull Request\n        if: success() && steps.collect_prs.outputs.has_prs == 'true'\n        uses: peter-evans/create-pull-request@v7\n        with:\n          token: ${{ secrets.GITHUB_TOKEN }}\n          commit-message: \"chore(changelog): update CHANGELOG.md\"\n          title: \"Update CHANGELOG.md\"\n          body: \"This PR updates the changelog with PRs from the last 2 weeks.\"\n          branch: \"update-changelog\"\n          delete-branch: true\n          add-paths: |\n            CHANGELOG.md\n"
  },
  {
    "path": ".github/workflows/generate-openapi-code-from-typespec.yml",
    "content": "name: Generate OpenAPI code\nrun-name: ${{ github.actor }} is generating openapi code\n\non:\n  pull_request:\n    paths:\n      - 'src/typespec/**'\n  push:\n    paths:\n      - 'src/typespec/**'\n\njobs:\n  Typecheck:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - uses: actions/setup-node@v4\n        with:\n          node-version: 'latest'\n          cache: npm\n          cache-dependency-path: 'src/typespec/package-lock.json'\n\n      - name: Install uv\n        uses: astral-sh/setup-uv@v4\n        with:\n          enable-cache: true\n\n      - uses: actions/setup-python@v5\n        with:\n          python-version: \"3.12\"\n\n      - name: Generate openapi code\n        run: |\n          cd src/typespec; npm ci; cd -\n          export PATH=$PATH:$PWD/src/typespec/node_modules/.bin\n          bash src/scripts/generate_openapi_code.sh\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}\n"
  },
  {
    "path": ".github/workflows/latest-push-to-hub.yml",
    "content": "name: Build and push images to docker hub on merge to main\nrun-name: ${{ github.actor }} is building and pushing images to docker hub\n\non:\n  push:\n    branches:\n      - \"main\"\n\njobs:\n  Bake-Push-Images:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Set up Docker Buildx\n        uses: docker/setup-buildx-action@v3\n\n      - name: Login to Docker Hub\n        uses: docker/login-action@v3\n        with:\n          username: julepai\n          password: \"${{ secrets.DOCKER_HUB_PASSWORD }}\"\n\n      - name: Build and push agent images\n        uses: docker/bake-action@v5\n        with:\n          files: |\n            ./docker-bake.hcl\n          targets: agents-api\n          push: true\n          set: |\n            *.cache-from=type=gha\n            *.cache-to=type=gha,mode=max\n        env:\n          TAG: latest\n          GIT_SHA: ${{ github.sha }}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}"
  },
  {
    "path": ".github/workflows/lint-agents-api-pr.yml",
    "content": "name: Lint agents-api\nrun-name: ${{ github.actor }} is linting the code\n\non:\n  pull_request:\n    paths:\n      - 'src/agents-api/**'\n  push:\n    paths:\n      - 'src/agents-api/**'\n\njobs:\n  Lint-And-Format:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Install libboost\n        run: sudo apt-get install -y libboost-all-dev\n\n      - name: Install uv\n        uses: astral-sh/setup-uv@v4\n        with:\n          enable-cache: true\n      \n      - name: Install Go migrate\n        uses: jaxxstorm/action-install-gh-release@v1.10.0\n        with: # Grab the latest version\n          repo: golang-migrate/migrate\n\n      - name: Set up python and install dependencies\n        run: |\n          cd src/agents-api\n          uv python install\n          uv sync --all-extras --dev\n\n      - name: Lint and format\n        run: |\n          cd src/agents-api\n          uv run poe format\n          uv run poe lint\n\n      - uses: stefanzweifel/git-auto-commit-action@v4\n        with:\n          commit_message: \"refactor: Lint agents-api (CI)\"\n          branch: ${{ github.head_ref }}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}\n"
  },
  {
    "path": ".github/workflows/lint-integrations-service-pr.yml",
    "content": "name: Lint integrations-service\nrun-name: ${{ github.actor }} is linting the code\n\non:\n  pull_request:\n    paths:\n      - 'src/integrations-service/**'\n  push:\n    paths:\n      - 'src/integrations-service/**'\n\njobs:\n  Lint-And-Format:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Install uv\n        uses: astral-sh/setup-uv@v4\n        with:\n          enable-cache: true\n\n      - name: Set up python and install dependencies\n        run: |\n          cd src/integrations-service\n          uv python install\n          uv sync --all-extras --dev\n\n      - name: Lint and format\n        run: |\n          cd src/integrations-service\n          uv run poe format\n          uv run poe lint\n\n      - uses: stefanzweifel/git-auto-commit-action@v4\n        with:\n          commit_message: \"refactor: Lint integrations-service (CI)\"\n          branch: ${{ github.head_ref }}\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}\n"
  },
  {
    "path": ".github/workflows/publish-cli-prerelease.yml",
    "content": "name: Publish CLI Prerelease to PyPI\n\n# AIDEV-NOTE: Auto-publish CLI package to PyPI for prerelease versions only\npermissions:\n  contents: write\n  packages: write\n\non:\n  push:\n    branches:\n      - dev\n      - main\n    paths:\n      - 'src/cli/**'\n  workflow_dispatch:\n\njobs:\n  check-and-publish:\n    runs-on: ubuntu-latest\n    defaults:\n      run:\n        working-directory: ./src/cli\n    \n    steps:\n      - name: Checkout code\n        uses: actions/checkout@v4\n        \n      - name: Set up Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: '3.12'\n          \n      - name: Install uv\n        uses: astral-sh/setup-uv@v4\n        with:\n          enable-cache: true\n          \n      - name: Install dependencies\n        run: |\n          uv sync --dev\n          \n      - name: Extract version from pyproject.toml\n        id: version\n        run: |\n          # Extract version using grep and sed (no additional dependencies needed)\n          VERSION=$(grep '^version = ' pyproject.toml | sed 's/version = \"\\(.*\\)\"/\\1/')\n          echo \"version=$VERSION\" >> $GITHUB_OUTPUT\n          echo \"Extracted version: $VERSION\"\n          \n      - name: Check if version is prerelease\n        id: prerelease\n        run: |\n          VERSION=\"${{ steps.version.outputs.version }}\"\n          echo \"Checking version: $VERSION\"\n          \n          # Check if version contains prerelease indicators\n          if echo \"$VERSION\" | grep -E \"(alpha|beta|rc|pre|dev)\" > /dev/null; then\n            echo \"is_prerelease=true\" >> $GITHUB_OUTPUT\n            echo \"✅ Version $VERSION is a prerelease\"\n          else\n            echo \"is_prerelease=false\" >> $GITHUB_OUTPUT\n            echo \"❌ Version $VERSION is NOT a prerelease\"\n          fi\n          \n      - name: Run linting and type checking\n        if: steps.prerelease.outputs.is_prerelease == 'true'\n        run: |\n          uv run poe check\n          \n      - name: Run tests\n        if: steps.prerelease.outputs.is_prerelease == 'true'\n        run: |\n          uv run poe test\n          \n      - name: Build package\n        if: steps.prerelease.outputs.is_prerelease == 'true'\n        run: |\n          uv build\n          \n      - name: Check if version already exists on PyPI\n        if: steps.prerelease.outputs.is_prerelease == 'true'\n        id: check_pypi\n        run: |\n          VERSION=\"${{ steps.version.outputs.version }}\"\n          \n          # Check if this version already exists on PyPI\n          if pip index versions julep-cli | grep \"$VERSION\" > /dev/null 2>&1; then\n            echo \"version_exists=true\" >> $GITHUB_OUTPUT\n            echo \"⚠️ Version $VERSION already exists on PyPI\"\n          else\n            echo \"version_exists=false\" >> $GITHUB_OUTPUT\n            echo \"✅ Version $VERSION does not exist on PyPI, proceeding with publish\"\n          fi\n          \n      - name: Publish to PyPI\n        if: steps.prerelease.outputs.is_prerelease == 'true' && steps.check_pypi.outputs.version_exists == 'false'\n        uses: pypa/gh-action-pypi-publish@release/v1\n        with:\n          password: ${{ secrets.PYPI_API_TOKEN }}\n          packages-dir: src/cli/dist/\n          verbose: true\n          \n      - name: Create GitHub Release\n        if: steps.check_pypi.outputs.version_exists == 'false'\n        uses: actions/create-release@v1\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        with:\n          tag_name: cli-v${{ steps.version.outputs.version }}\n          release_name: CLI v${{ steps.version.outputs.version }}\n          body: |\n            🚀 **Julep CLI Prerelease v${{ steps.version.outputs.version }}**\n            \n            This is a prerelease version of the Julep CLI.\n            \n            ## Installation\n            ```bash\n            pip install julep-cli==${{ steps.version.outputs.version }}\n            ```\n            \n            ## Changes\n            See the [changelog](https://github.com/julep-ai/julep/blob/dev/CHANGELOG.md) for detailed changes.\n            \n            ---\n            *This release was automatically generated by GitHub Actions.*\n          prerelease: true\n          draft: false\n          \n      - name: Summary\n        run: |\n          echo \"## Workflow Summary\" >> $GITHUB_STEP_SUMMARY\n          echo \"- **Version**: ${{ steps.version.outputs.version }}\" >> $GITHUB_STEP_SUMMARY\n          echo \"- **Is Prerelease**: ${{ steps.prerelease.outputs.is_prerelease }}\" >> $GITHUB_STEP_SUMMARY\n          echo \"- **Version Exists on PyPI**: ${{ steps.check_pypi.outputs.version_exists }}\" >> $GITHUB_STEP_SUMMARY\n          \n          if [ \"${{ steps.prerelease.outputs.is_prerelease }}\" == \"true\" ] && [ \"${{ steps.check_pypi.outputs.version_exists }}\" == \"false\" ]; then\n            echo \"- **Action**: ✅ Published to PyPI and created GitHub release\" >> $GITHUB_STEP_SUMMARY\n          elif [ \"${{ steps.prerelease.outputs.is_prerelease }}\" == \"true\" ] && [ \"${{ steps.check_pypi.outputs.version_exists }}\" == \"true\" ]; then\n            echo \"- **Action**: ⚠️ Skipped (version already exists on PyPI)\" >> $GITHUB_STEP_SUMMARY\n          else\n            echo \"- **Action**: ❌ Skipped (not a prerelease version)\" >> $GITHUB_STEP_SUMMARY\n          fi\n"
  },
  {
    "path": ".github/workflows/sync-model-docs.yml",
    "content": "name: Sync Model Documentation\n\non:\n  push:\n    branches:\n      - dev\n    paths:\n      - 'src/llm-proxy/litellm-config.yaml'\n      - 'src/scripts/sync_model_docs.py'\n  workflow_dispatch:\n\njobs:\n  sync-model-docs:\n    runs-on: ubuntu-latest\n    \n    steps:\n    - name: Checkout repository\n      uses: actions/checkout@v4\n      with:\n        token: ${{ secrets.GITHUB_TOKEN }}\n        \n    - name: Set up Python\n      uses: actions/setup-python@v4\n      with:\n        python-version: '3.12'\n        \n    - name: Install dependencies\n      run: |\n        pip install pyyaml\n        \n    - name: Run sync script\n      run: |\n        python src/scripts/sync_model_docs.py\n        \n    - name: Check for changes\n      id: check_changes\n      run: |\n        if git diff --quiet documentation/integrations/supported-models.mdx; then\n          echo \"changed=false\" >> $GITHUB_OUTPUT\n        else\n          echo \"changed=true\" >> $GITHUB_OUTPUT\n        fi\n        \n    - name: Commit and push changes\n      if: steps.check_changes.outputs.changed == 'true'\n      run: |\n        git config --global user.name 'github-actions[bot]'\n        git config --global user.email 'github-actions[bot]@users.noreply.github.com'\n        git add documentation/integrations/supported-models.mdx\n        git commit -m \"chore: sync model documentation from litellm-config.yaml [skip ci]\"\n        git push"
  },
  {
    "path": ".github/workflows/test-agents-api-pr.yml",
    "content": "name: Test agents-api\nrun-name: ${{ github.actor }} is testing the code\n\non:\n  pull_request:\n    paths:\n      - 'src/agents-api/**'\n  push:\n    paths:\n      - 'src/agents-api/**'\n\njobs:\n  Test:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Install libboost\n        run: sudo apt-get install -y libboost-all-dev\n\n      - name: Install uv\n        uses: astral-sh/setup-uv@v4\n        with:\n          enable-cache: true\n\n      - name: Install Go migrate\n        uses: jaxxstorm/action-install-gh-release@v1.10.0\n        with: # Grab the latest version\n          repo: golang-migrate/migrate\n\n      - name: Set up python and install dependencies\n        run: |\n          cd src/agents-api\n          uv python install\n          uv sync --all-extras --dev\n\n      - name: Run tests\n        env:\n          SECRETS_MASTER_KEY: ${{ secrets.SECRETS_MASTER_KEY }}\n        run: |\n          cd src/agents-api\n          uv run poe test --fail-limit 3\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}\n"
  },
  {
    "path": ".github/workflows/test-integrations-service-pr.yml",
    "content": "name: Test integrations-service\nrun-name: ${{ github.actor }} is testing the code\n\non:\n  pull_request:\n    paths:\n      - 'src/integrations-service/**'\n  push:\n    paths:\n      - 'src/integrations-service/**'\n\njobs:\n  Test:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Install uv\n        uses: astral-sh/setup-uv@v4\n        with:\n          enable-cache: true\n\n      - name: Set up python and install dependencies\n        run: |\n          cd src/integrations-service\n          uv python install\n          uv sync --all-extras --dev\n\n      - name: Run tests\n        run: |\n          cd src/integrations-service\n          uv run poe test\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n"
  },
  {
    "path": ".github/workflows/translate-readme.yml",
    "content": "name: Translate README\non:\n  pull_request:\n    paths:\n      - \"README.md\"\n      - \".github/README-*.md\"\n\njobs:\n  translate_readme:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: anthropics/claude-code-action@beta\n        with:\n          direct_prompt: >-\n            Use the root README.md to review the .github/README-{lang}.md files\n            to see if they are correctly translated and if needed\n            make changes as necessary. Keep the contents exactly the same, just\n            translated to the target languages.\n    \n          custom_instructions: >-\n            This is a monorepo with multiple different services.\n            The repo uses AGENTS.md as the file that contains instructions for\n            AI agents (instead of CLAUDE.md files). CLAUDE.md still exists but\n            is just a symlink to the corresponding AGENTS.md (usually in the same dir).\n    \n          anthropic_model: ${{ vars.TRANSLATOR_CLAUDE_MODEL }}\n          anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}\n          github_token: ${{ secrets.GITHUB_TOKEN }}\n          allowed_tools: \"Bash(npm install),Bash(npm run test),Edit,Replace,NotebookEditCell\"\n          disallowed_tools: \"TaskOutput,KillTask\"\n"
  },
  {
    "path": ".github/workflows/typecheck-agents-api-pr.yml",
    "content": "name: Typecheck agents-api\nrun-name: ${{ github.actor }} is typechecking the code\n\non:\n  pull_request:\n    paths:\n      - 'src/agents-api/**'\n  push:\n    paths:\n      - 'src/agents-api/**'\n\njobs:\n  Typecheck:\n    runs-on: ubuntu-latest\n\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Install libboost\n        run: sudo apt-get install -y libboost-all-dev\n\n      - name: Cache pytype\n        uses: actions/cache@v4\n        with:\n          path: src/agents-api/.pytype\n          key: ${{ runner.os }}-agents-api-pytype-${{ github.base_ref }}\n          restore-keys: |\n            ${{ runner.os }}-agents-api-pytype-\n\n      - name: Install uv\n        uses: astral-sh/setup-uv@v4\n        with:\n          enable-cache: true\n      \n      - name: Install Go migrate\n        uses: jaxxstorm/action-install-gh-release@v1.10.0\n        with: # Grab the latest version\n          repo: golang-migrate/migrate\n\n      - name: Set up python and install dependencies\n        run: |\n          cd src/integrations-service\n          uv python install\n          uv sync --all-extras --dev\n\n      - name: Typecheck\n        run: |\n          cd src/agents-api\n          uv run poe typecheck\n\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}\n"
  },
  {
    "path": ".gitignore",
    "content": "# BECAUSE DIWANK IS OBSESSED\n*gaga*\n.DS_Store\n*.swp\nngrok*\n.env*\n.env\n*.env\n*.pyc\n**/node_modules/\n.aider*\n.vscode/\nschema.sql\n*.egg-info/\n**/*.egg-info/\n\n**/.claude/settings.local.json\n"
  },
  {
    "path": ".gitmodules",
    "content": "# [submodule \"code-interpreter/vendor/cohere-ai/cohere-terrarium\"]\n# \tpath = code-interpreter/vendor/cohere-ai/cohere-terrarium\n# \turl = https://github.com/cohere-ai/cohere-terrarium.git\n[submodule \"sdks/python-sdk\"]\n\tpath = sdks/python-sdk\n\turl = https://github.com/julep-ai/python-sdk.git\n[submodule \"sdks/node-sdk\"]\n\tpath = sdks/node-sdk\n\turl = https://github.com/julep-ai/node-sdk.git\n"
  },
  {
    "path": ".mcp.json",
    "content": "{\n  \"mcpServers\": {\n    \"deepwiki\": {\n      \"type\": \"http\",\n      \"url\": \"https://mcp.deepwiki.com/mcp\"\n    },\n    \"linear\": {\n      \"type\": \"sse\",\n      \"url\": \"https://mcp.linear.app/sse\"\n    },\n    \"fetch\": {\n      \"type\": \"stdio\",\n      \"command\": \"uvx\",\n      \"args\": [\n        \"mcp-server-fetch\"\n      ],\n      \"env\": {}\n    },\n    \"firecrawl\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\n        \"-y\",\n        \"firecrawl-mcp\"\n      ],\n      \"env\": {}\n    }\n  }\n}\n"
  },
  {
    "path": "AGENTS.md",
    "content": "# AGENTS.md. Julep AI  \n*Last updated 2025-05-09*  \n\n> **purpose** – This file is the onboarding manual for every AI assistant (Claude, Cursor, GPT, etc.) and every human who edits this repository.  \n> It encodes our coding standards, guard-rails, and workflow tricks so the *human 30 %* (architecture, tests, domain judgment) stays in human hands.[^1]\n\n---\n\n## 0. Project overview\n\nJulep is a serverless platform for building AI workflows and agents. It helps data and ML teams orchestrate complex AI operations, manage state across interactions, and integrate with existing data infrastructure and tools. Key components:\n\n- **src/ts-api**: Core service for agent definitions and task execution\n- **src/memory-store**: Persistent storage with PostgreSQL and vector capabilities\n- **src/scheduler**: Temporal-based workflow engine for execution\n- **src/integrations-service**: Connectors to external services and tools\n- **src/**: All core service modules are now organized under the src/ directory\n\n**Golden rule**: When unsure about implementation details or requirements, ALWAYS consult the developer rather than making assumptions.\n\n---\n\n## 1. Non-negotiable golden rules\n\n| #: | AI *may* do                                                            | AI *must NOT* do                                                                    |\n|---|------------------------------------------------------------------------|-------------------------------------------------------------------------------------|\n| G-0 | Whenever unsure about something that's related to the project, ask the developer for clarification before making changes.    |  ❌ Write changes or use tools when you are not sure about something project specific, or if you don't have context for a particular feature/decision. |\n| G-1 | Generate code **only inside** relevant source directories (e.g., `src/agents-api/agents_api/` for the main API, `src/cli/src/` for the CLI, `src/integrations-service/` for integration-specific code) or explicitly pointed files.    | ❌ Touch `tests/`, `SPEC.md`, or any `*_spec.py` / `*.ward` files (humans own tests & specs). |\n| G-2 | Add/update **`AIDEV-NOTE:` anchor comments** near non-trivial edited code. | ❌ Delete or mangle existing `AIDEV-` comments.                                     |\n| G-3 | Follow lint/style configs (`pyproject.toml`, `.ruff.toml`, `.pre-commit-config.yaml`). Use the project's configured linter, if available, instead of manually re-formatting code. | ❌ Re-format code to any other style.                                               |\n| G-4 | For changes >300 LOC or >3 files, **ask for confirmation**.            | ❌ Refactor large modules without human guidance.                                     |\n| G-5 | Stay within the current task context. Inform the dev if it'd be better to start afresh.                                  | ❌ Continue work from a prior prompt after \"new task\" – start a fresh session.      |\n\n---\n\n## 2. Build, test & utility commands\n\nUse `poe` tasks for consistency (they ensure correct environment variables and configuration).\n\n```bash\n# Format, lint, type-check, test, codegen\npoe format           # ruff format\npoe lint             # ruff check\npoe typecheck        # pytype --config pytype.toml (for agents-api) / pyright (for cli)\npoe test             # ward test --exclude .venv (pytest for integrations-service)\npoe test --search \"pattern\" # Run specific tests by Ward pattern\npoe check            # format + lint + type + SQL validation\npoe codegen          # generate API code (e.g., OpenAPI from TypeSpec)\n```\nFor simple, quick Python script tests: `PYTHONPATH=$PWD python tests/test_file.py` (ensure correct CWD).\n\n---\n\n## 3. Coding standards\n\n*   **Python**: 3.12+, FastAPI, `async/await` preferred.\n*   **Formatting**: `ruff` enforces 96-char lines, double quotes, sorted imports. Standard `ruff` linter rules.\n*   **Typing**: Strict (Pydantic v2 models preferred); `from __future__ import annotations`.\n*   **Naming**: `snake_case` (functions/variables), `PascalCase` (classes), `SCREAMING_SNAKE` (constants).\n*   **Error Handling**: Typed exceptions; context managers for resources.\n*   **Documentation**: Google-style docstrings for public functions/classes.\n*   **Testing**: Separate test files matching source file patterns.\n\n**Error handling patterns**:\n- Use typed, hierarchical exceptions defined in `exceptions.py`\n- Catch specific exceptions, not general `Exception`\n- Use context managers for resources (database connections, file handles)\n- For async code, use `try/finally` to ensure cleanup\n\nExample:\n```python\nfrom agents_api.common.exceptions import ValidationError\n\nasync def process_data(data: dict) -> Result:\n    try:\n        # Process data\n        return result\n    except KeyError as e:\n        raise ValidationError(f\"Missing required field: {e}\") from e\n```\n\n---\n\n## 4. Project layout & Core Components\n\n| Directory                         | Description                                       |\n| --------------------------------- | ------------------------------------------------- |\n| `src/agents-api/`             | FastAPI service & Temporal activities             |\n| `src/memory-store/`           | PostgreSQL + TimescaleDB schemas & migrations     |\n| `src/blob-store/`             | S3-compatible object storage for files            |\n| `src/integrations-service/`   | Adapters for external services (browsers, APIs)   |\n| `src/scheduler/`              | Temporal workflow engine for execution            |\n| `src/gateway/`                | API gateway (routing, request handling)           |\n| `src/llm-proxy/`              | LiteLLM proxy for language models                 |\n| `src/monitoring/`             | Prometheus & Grafana                              |\n| `src/typespec/`               | **Source-of-truth** API specifications (TypeSpec) |\n| `sdks/`                           | Node.js & Python client SDKs                      |\n\nSee `.github/CONTRIBUTING.md` for a full architecture diagram.\n\n**Key domain models**:\n- **Agents**: AI agent definitions with instructions and tools\n- **Tasks**: Workflow definitions with individual steps\n- **Tools**: Integrations and capabilities for agents to use \n- **Sessions**: Conversation containers with context\n- **Entries**: Message history tracking\n- **Executions**: Task execution state tracking\n\n---\n\n## 5. Anchor comments\n\nAdd specially formatted comments throughout the codebase, where appropriate, for yourself as inline knowledge that can be easily `grep`ped for. \n\n### Guidelines:\n\n- Use `AIDEV-NOTE:`, `AIDEV-TODO:`, or `AIDEV-QUESTION:` (all-caps prefix) for comments aimed at AI and developers.\n- Keep them concise (≤ 120 chars).\n- **Important:** Before scanning files, always first try to **locate existing anchors** `AIDEV-*` in relevant subdirectories.\n- **Update relevant anchors** when modifying associated code.\n- **Do not remove `AIDEV-NOTE`s** without explicit human instruction.\n- Make sure to add relevant anchor comments, whenever a file or piece of code is:\n  * too long, or\n  * too complex, or\n  * very important, or\n  * confusing, or\n  * could have a bug unrelated to the task you are currently working on.\n\nExample:\n```python\n# AIDEV-NOTE: perf-hot-path; avoid extra allocations (see ADR-24)\nasync def render_feed(...):\n    ...\n```\n\n---\n\n## 6. Commit discipline\n\n*   **Granular commits**: One logical change per commit.\n*   **Tag AI-generated commits**: e.g., `feat: optimise feed query [AI]`.\n*   **Clear commit messages**: Explain the *why*; link to issues/ADRs if architectural.\n*   **Use `git worktree`** for parallel/long-running AI branches (e.g., `git worktree add ../wip-foo -b wip-foo`).\n*   **Review AI-generated code**: Never merge code you don't understand.\n\n---\n\n## 7. API models & codegen\n\n*   To modify API models (e.g., in `src/agents-api/agents_api/autogen/`), **edit TypeSpec files** in `src/typespec/`.\n*   **Regenerate code** after TypeSpec changes: `bash src/scripts/generate_openapi_code.sh` (from project root).\n*   **Do NOT manually edit** generated files (e.g., in `autogen/` directories) as they will be overwritten.\n\n**API pattern examples**:\n```python\n# Route definition\n@router.post(\"/sessions/{session_id}/entries\", response_model=EntryResponse)\nasync def create_entry(\n    session_id: str,\n    entry_create: EntryCreate,\n    current_user: User = Depends(get_current_user),\n) -> EntryResponse:\n    \"\"\"Create a new entry in a session.\"\"\"\n    # Implementation...\n```\n\n---\n\n## 8. Python expressions in tasks (agents-api)\n\n*   Evaluated using `simpleeval` in a sandboxed environment.\n*   Use `validate_py_expression()` from `agents_api.activities.task_steps.base_evaluate` for static checks (syntax, undefined names, safety).\n*   Expressions have access to `_` (current input) and standard library modules.\n*   Test expressions: `PYTHONPATH=$PWD python -c \"from agents_api.activities.task_steps.base_evaluate import validate_py_expression; print(validate_py_expression('$ your_expr_here'))\"`\n*   Task validation handles raw task dictionaries and Pydantic models (after `task_to_spec` conversion).\n*   In `task_to_spec` converted tasks, `kind_` field denotes step type. Raw tasks use step type keys.\n*   For \"if_else\" steps, condition is in `if_` field (aliased as \"if\").\n\n**Expression example**:\n```python\n# Simple expression example\n\"$_['customer']['total_orders'] > 5\"  # Checks if customer has more than 5 orders\n\n# More complex example with dict access and function calls\n\"$len([x for x in _['items'] if x['category'] == 'electronics']) > 0\"\n```\n\n---\n\n## 9. Ward testing framework\n\n*   Use descriptive test names: `@test(\"Descriptive name of what is being tested\")`.\n*   Activate virtual environment: `source .venv/bin/activate`.\n*   Ensure correct working directory (e.g., `src/agents-api/`) and `PYTHONPATH=$PWD` for script-based tests.\n*   Filter tests: `poe test --search \"pattern_to_match\"` (do NOT use `-p`).\n*   Limit failures for faster feedback: `poe test --fail-limit 1 --search \"pattern_to_match\"`.\n\n---\n\n## 10. Directory-Specific AGENTS.md Files\n\n*   **Always check for `AGENTS.md` files in specific directories** before working on code within them. These files contain targeted context.\n*   If a directory's `AGENTS.md` is outdated or incorrect, **update it**.\n*   If you make significant changes to a directory's structure, patterns, or critical implementation details, **document these in its `AGENTS.md`**.\n*   If a directory lacks a `AGENTS.md` but contains complex logic or patterns worth documenting for AI/humans, **suggest creating one**.\n\n---\n\n## 11. Common pitfalls\n\n*   Mixing pytest & ward syntax (ward uses `@test()` decorator, not pytest fixtures/classes).\n*   Forgetting to `source .venv/bin/activate`.\n*   Wrong current working directory (CWD) or `PYTHONPATH` for commands/tests (e.g., ensure you are in `agents-api/` not root for some `agents-api` tasks).\n*   Large AI refactors in a single commit (makes `git bisect` difficult).\n*   Delegating test/spec writing entirely to AI (can lead to false confidence).\n*   **Note about `src/`**: Only the `cli` component has a `src/` directory. For `src/agents-api`, code is directly in `agents_api/`. Follow the existing pattern for each component.\n\n---\n\n## 12. Versioning conventions\n\nComponents (e.g., `agents-api`, `julep-cli`, `integrations-service`) are versioned independently. Semantic Versioning (SemVer: `MAJOR.MINOR.PATCH`) is generally followed, as specified in each component's `pyproject.toml` file.\n\n*   **MAJOR** version update: For incompatible API changes.\n*   **MINOR** version update: For adding functionality in a backward-compatible manner.\n*   **PATCH** version update: For backward-compatible bug fixes.\n\n---\n\n## 13. Key File & Pattern References\n\nThis section provides pointers to important files and common patterns within the codebase.\n\n*   **API Route Definitions**:\n    *   Location: `src/agents-api/agents_api/routers/` (e.g., `src/agents-api/agents_api/routers/sessions.py`)\n    *   Pattern: FastAPI routers, Pydantic models for request/response, dependency injection.\n*   **Typed Exceptions**:\n    *   Location: `src/agents-api/agents_api/common/exceptions/`\n    *   Pattern: Custom exception classes inheriting from base exceptions.\n*   **Pydantic Models**:\n    *   Location: Used extensively across services, often in `models.py` files within component directories (e.g., `agents_api/common/protocol/`), or directly in router/activity files.\n    *   Pattern: Data validation, serialization, and settings management.\n*   **Temporal Workflows & Activities**:\n    *   Location: `src/agents-api/agents_api/workflows/` (workflow definitions) and `src/agents-api/agents_api/activities/` (activity implementations).\n    *   Pattern: Define complex, stateful operations using Temporal's primitives.\n*   **Database Queries & Models (Memory Store)**:\n    *   Location: `src/agents-api/agents_api/queries/` (for SQL query builders/files) and `src/memory-store/` (for schema migrations).\n    *   Pattern: Asyncpg for database interaction, often with helper functions for CRUD operations.\n\n---\n\n## 14. Domain-Specific Terminology\n\n*   **Agent**: An AI entity with specific instructions, tools, and capabilities, defined via API. Core model in `src/typespec/agents/models.tsp`.\n*   **Task**: A definition of a workflow composed of multiple steps that an agent can execute. Core model in `src/typespec/tasks/models.tsp`.\n*   **Tool**: A specific capability or integration an agent can use (e.g., web search, API call). Defined in `src/typespec/tools/`.\n*   **Session**: A container for a sequence of interactions (entries) with an agent, maintaining context. Core model in `src/typespec/sessions/models.tsp`.\n*   **Entry**: A single message or event within a session (e.g., user input, agent response). Core model in `src/typespec/entries/models.tsp`.\n*   **Execution**: The runtime instance and state of a task being performed by an agent. Core model in `src/typespec/executions/models.tsp`.\n*   **POE (PoeThePoet)**: The task runner used in this project for development tasks like formatting, linting, testing, and code generation (configured in `pyproject.toml`).\n*   **TypeSpec**: The language used to define API schemas. It is the source of truth for API models, which are then generated into Python Pydantic models in `autogen/` directories.\n*   **Ward**: The primary Python testing framework used for unit and integration tests in most components (e.g., `agents-api`, `cli`).\n*   **Temporal**: The distributed workflow engine used to orchestrate complex, long-running tasks and ensure their reliable execution.\n*   **AIDEV-NOTE/TODO/QUESTION**: Specially formatted comments to provide inline context or tasks for AI assistants and developers.\n\n---\n\n## 15. Meta: Guidelines for updating AGENTS.md files\n\n### Elements that would be helpful to add:\n\n1. **Decision flowchart**: A simple decision tree for \"when to use X vs Y\" for key architectural choices would guide my recommendations.\n2. **Reference links**: Links to key files or implementation examples that demonstrate best practices.\n3. **Domain-specific terminology**: A small glossary of project-specific terms would help me understand domain language correctly.\n4. **Versioning conventions**: How the project handles versioning, both for APIs and internal components.\n\n### Format preferences:\n\n1. **Consistent syntax highlighting**: Ensure all code blocks have proper language tags (`python`, `bash`, etc.).\n2. **Hierarchical organization**: Consider using hierarchical numbering for subsections to make referencing easier.\n3. **Tabular format for key facts**: The tables are very helpful - more structured data in tabular format would be valuable.\n4. **Keywords or tags**: Adding semantic markers (like `#performance` or `#security`) to certain sections would help me quickly locate relevant guidance.\n\n[^1]: This principle emphasizes human oversight for critical aspects like architecture, testing, and domain-specific decisions, ensuring AI assists rather than fully dictates development.\n\n---\n\n## 16. Files to NOT modify\n\nThese files control which files should be ignored by AI tools and indexing systems:\n\n*   @.agentignore : Specifies files that should be ignored by the Cursor IDE, including:\n    *   Build and distribution directories\n    *   Environment and configuration files\n    *   Large data files (parquet, arrow, pickle, etc.)\n    *   Generated documentation\n    *   Package-manager files (lock files)\n    *   Logs and cache directories\n    *   IDE and editor files\n    *   Compiled binaries and media files\n\n*   @.agentindexignore : Controls which files are excluded from Cursor's indexing to improve performance, including:\n    *   All files in `.agentignore`\n    *   Files that may contain sensitive information\n    *   Large JSON data files\n    *   Generated TypeSpec outputs\n    *   Memory-store migration files\n    *   Docker templates and configuration files\n\n**Never modify these ignore files** without explicit permission, as they're carefully configured to optimize IDE performance while ensuring all relevant code is properly indexed.\n\n**When adding new files or directories**, check these ignore patterns to ensure your files will be properly included in the IDE's indexing and AI assistance features.\n\n---\n\n## AI Assistant Workflow: Step-by-Step Methodology\n\nWhen responding to user instructions, the AI assistant (Claude, Cursor, GPT, etc.) should follow this process to ensure clarity, correctness, and maintainability:\n\n1. **Consult Relevant Guidance**: When the user gives an instruction, consult the relevant instructions from `AGENTS.md` files (both root and directory-specific) for the request.\n2. **Clarify Ambiguities**: Based on what you could gather, see if there's any need for clarifications. If so, ask the user targeted questions before proceeding.\n3. **Break Down & Plan**: Break down the task at hand and chalk out a rough plan for carrying it out, referencing project conventions and best practices.\n4. **Trivial Tasks**: If the plan/request is trivial, go ahead and get started immediately.\n5. **Non-Trivial Tasks**: Otherwise, present the plan to the user for review and iterate based on their feedback.\n6. **Track Progress**: Use a to-do list (internally, or optionally in a `TODOS.md` file) to keep track of your progress on multi-step or complex tasks.\n7. **If Stuck, Re-plan**: If you get stuck or blocked, return to step 3 to re-evaluate and adjust your plan.\n8. **Update Documentation**: Once the user's request is fulfilled, update relevant anchor comments (`AIDEV-NOTE`, etc.) and `AGENTS.md` files in the files and directories you touched.\n9. **User Review**: After completing the task, ask the user to review what you've done, and repeat the process as needed.\n10. **Session Boundaries**: If the user's request isn't directly related to the current context and can be safely started in a fresh session, suggest starting from scratch to avoid context confusion.\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "<div align=\"center\" id=\"top\">\n<img src=\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\" alt=\"julep\" height=\"300\" />\n\n<br>\n  <p>\n    <a href=\"https://dashboard.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\" alt=\"Get API Key\" height=\"28\">\n    </a>\n    <span>&nbsp;</span>\n    <a href=\"https://docs.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\" alt=\"Documentation\" height=\"28\">\n    </a>\n  </p>\n  <p>\n   <a href=\"https://www.npmjs.com/package/@julep/sdk\"><img src=\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\" alt=\"NPM Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://pypi.org/project/julep\"><img src=\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\" alt=\"PyPI - Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://hub.docker.com/u/julepai\"><img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\" alt=\"Docker Image Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://choosealicense.com/licenses/apache/\"><img src=\"https://img.shields.io/github/license/julep-ai/julep\" alt=\"GitHub License\" height=\"28\"></a>\n  </p>\n  \n  <h3>\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\">𝕏</a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\">LinkedIn</a>\n  </h3>\n</div>\n\n# **Julep AI Changelog for 21 May 2025** ✨\n\n<!-- ───────────  Core platform improvements merged from *dev*  ─────────── -->\n\n- **Major Feature**: Introduced first-class **Projects**!  \n  Adds `projects` table, association tables, CRUD endpoints, canonical-name support, and project-aware validation across agents, users, files, and sessions\n- **Major Feature**: Landed encrypted **Secrets Vault** with full CRUD API, master-key encryption, and transparent secret-reference substitution in tool & API definitions ([#1312](https://github.com/julep-ai/julep/pull/1312))\n\n<!-- ───────────  Secrets follow-ups  ─────────── -->\n\n- **Enhancement**: Added **custom-key aliasing** for secrets plus numerous workflow & cost-tracking refactors ([#1356](https://github.com/julep-ai/julep/pull/1356))\n- **Enhancement**: Added `decrypt` flag to secrets queries—retrieve values encrypted or in plaintext as needed ([#1369](https://github.com/julep-ai/julep/pull/1369))\n\n<!-- ───────────  Usage, cost & limits  ─────────── -->\n\n- **Enhancement**: Implemented **monthly cost aggregation** + middleware that enforces free-tier usage caps and active-developer checks ([#1351](https://github.com/julep-ai/julep/pull/1351))\n\n<!-- ───────────  Stability & correctness  ─────────── -->\n\n- **Fix**: Re-wrote project-resource SQL views for accurate mapping and removed weak default secrets key in production ([#1362](https://github.com/julep-ai/julep/pull/1362))\n- **Fix**: Hardened secrets endpoints & models, fixed insert/delete logic, and expanded expression-evaluator edge-cases ([#1343](https://github.com/julep-ai/julep/pull/1343))\n\n<!-- ───────────  Tooling / DX  ─────────── -->\n\n- **Enhancement**: New GitHub Actions workflow automatically translates README files via Anthropic Claude, replacing the old Python job ([#1433](https://github.com/julep-ai/julep/pull/1433))\n\n- **Other Breaking**: Removed fallback for `DEMO_*` placeholder credentials 💥\n- **Minor Docs**: Updated docs and cookbooks to remove `DEMO_API_KEY` references.\n- **Minor Docs**: Updated footer use-case links to the new `cookbooks/advanced` paths.\n\n> _This list covers the most significant code-related PRs merged to **main** on 21 May 2025.  \n> For everything else, see the full list of [recent pull requests](https://github.com/julep-ai/julep/pulls?q=is:pr+created:>=2025-04-21)._  \n\n# **Julep AI Changelog for 15 May 2025** ✨\n\n- **Minor Feature**: Updated `julep run` to execute tasks via the API with clearer error reporting ✨\n- **Minor Docs**: Added examples for task execution and error handling in CLI docs 📚\n\n# **Julep AI Changelog for 9 May 2025** ✨\n\n- **Minor Docs**: Added links to cookbooks for Quick, Community, and Industry pages.\n- **Minor Docs**: Updated cookbook links to use absolute GitHub URLs.\n\n# **Julep AI Changelog for 11 April 2025** ✨\n\n- **Major Feature**: Introduced support for Gemini models in `litellm-config.yaml` ✨\n- **Minor Feature**: Added environment configuration for Open Responses API ✨\n- **Critical Fix**: Corrected cardinality violations in SQL queries across agents-api 🔧\n- **Minor Fix**: Resolved documentation formatting issues in 21 files 🔧\n- **Minor Fix**: `get_live_urls` now uses `asyncio.to_thread` to avoid blocking the event loop 🔧\n- **Major Enhancement**: Refactored API calls to include developer ID for better tracking 📈\n- **Minor Enhancement**: Improved Gunicorn worker configurability via environment variables 📈\n- **Secondary Performance**: Integrated OpenAPI model and TyeSpecs for expanded functionality 🚀\n- **Critical Breaking**: Replaced Postgraphile with Hasura for GraphQL services 💥\n- **Other Breaking**: Updated Docker configurations to adhere to new deployment requirements 💥\n\n# **Julep AI Changelog for 14 February 2025** ✨\n\n- **Major Feature**: Default `parallelism` in MapReduce now set to `task_max_parallelism` for optimized processing ✨\n- **Minor Feature**: Backward compatibility support added for older syntax in `base_evaluate` ➕\n- **Critical Fix**: Resolved data inconsistencies in subworkflow validations for smoother operations 🔧\n- **Minor Fix**: Addressed hotfixes in `workflows.py` for robust workflow handling 🔧\n- **Major Enhancement**: Introduced `backwards_compatibility` to refine evaluation logic 📈\n- **Minor Enhancement**: Enhanced CLI documentation and guides for improved user understanding 📈\n- **Key Performance**: Implemented Prometheus metrics for advanced monitoring and streamlined performance 🚀\n- **Secondary Performance**: Enhanced task evaluation functions with efficient expression handling 🚀\n- **Critical Breaking**: Deprecated legacy API with a migration guide for users 💥\n- **Other Breaking**: Updated agent settings to be untyped, affecting configuration handling 💥\n\n# **Julep AI Changelog for 31 January 2025** ✨\n\n- **Major Feature**: Added experimental CLI with comprehensive management commands for agents and tasks ✨\n- **Minor Feature**: Introduced new import functionality for agents in CLI ✨\n- **Critical Fix**: Replaced `GITHUB_ENV` with `GITHUB_OUTPUT` for environment variable handling 🔧\n- **Minor Fix**: Fixed CLI documentation by removing `pipx` installation 🔧\n- **Major Enhancement**: Refactored task execution workflow for modularity 📈\n- **Minor Enhancement**: Improved documentation with updated quickstart and lifecycle guides 📈\n- **Key Performance**: Enhanced CLI with rich text and progress indicators 🚀\n- **Secondary Performance**: Reduced API response times by 15% 🚀\n- **Critical Breaking**: Removed `previous_inputs` parameter in workflows 💥\n- **Other Breaking**: Deprecated legacy API (v1) to be removed next month 💥\n"
  },
  {
    "path": "README.md",
    "content": "<sup><div align=\"center\">\n  <!-- Keep these links. Translations will automatically update with the README. -->\n  [Deutsch](https://www.readme-i18n.com/julep-ai/julep?lang=de) |\n  [Español](https://www.readme-i18n.com/julep-ai/julep?lang=es) |\n  [français](https://www.readme-i18n.com/julep-ai/julep?lang=fr) |\n  [日本語](https://www.readme-i18n.com/julep-ai/julep?lang=ja) |\n  [한국어](https://www.readme-i18n.com/julep-ai/julep?lang=ko) |\n  [Português](https://www.readme-i18n.com/julep-ai/julep?lang=pt) |\n  [Русский](https://www.readme-i18n.com/julep-ai/julep?lang=ru) |\n  [中文](https://www.readme-i18n.com/julep-ai/julep?lang=zh)\n</div></sup>\n\n\n<div align=\"center\">\n\n```\n      ██╗ ██╗   ██╗ ██╗      ███████╗ ██████╗       █████╗  ██╗\n      ██║ ██║   ██║ ██║      ██╔════╝ ██╔══██╗     ██╔══██╗ ██║\n      ██║ ██║   ██║ ██║      █████╗   ██████╔╝     ███████║ ██║\n ██   ██║ ██║   ██║ ██║      ██╔══╝   ██╔═══╝      ██╔══██║ ██║\n ╚█████╔╝ ╚██████╔╝ ███████╗ ███████╗ ██║          ██║  ██║ ██║\n  ╚════╝   ╚═════╝  ╚══════╝ ╚══════╝ ╚═╝          ╚═╝  ╚═╝ ╚═╝\n```\n\n<br>\n  <p>\n   <a href=\"https://www.npmjs.com/package/@julep/sdk\"><img src=\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\" alt=\"NPM Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://pypi.org/project/julep\"><img src=\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\" alt=\"PyPI - Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://hub.docker.com/u/julepai\"><img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\" alt=\"Docker Image Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://choosealicense.com/licenses/apache/\"><img src=\"https://img.shields.io/github/license/julep-ai/julep\" alt=\"GitHub License\" height=\"28\"></a>\n  </p>\n\n  <h3 align=\"center\">\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\"><img src=\"https://user-images.githubusercontent.com/74038190/235294015-47144047-25ab-417c-af1b-6746820a20ff.gif\" width=\"45\"></a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\"><img src=\"https://raw.githubusercontent.com/gist/IgnaceMaes/744cd9cf41ec6acf46fc8f4e9f370f86/raw/d16658c2945d30c8a953b35cb17dd7085111b46c/x-logo.svg\" width=\"32\"></a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\"><img src=\"https://user-images.githubusercontent.com/74038190/235294012-0a55e343-37ad-4b0f-924f-c8431d9d2483.gif\" width=\"45\"></a>\n\n  </h3>\n</div>\n\n---\n\n## ⚠️ Important Notice: Julep is Shutting Down\n\n**The Julep backend and dashboard will shut down on December 31, 2025.**\n\nJulep is open source and you can continue using it by self-hosting. See the [Self-Hosting Guide](https://docs.julep.ai/advanced/localsetup) for instructions.\n\n**We're now working on [memory.store](https://memory.store/)** — check it out!\n\n---\n\n<!-- START doctoc generated TOC please keep comment here to allow auto update -->\n<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->\n<h3>📖 Table of Contents</h3>\n\n- [Why Julep?](#why-julep)\n- [Self-Hosting](#self-hosting)\n- [Documentation and Examples](#documentation-and-examples)\n- [Community and Contributions](#community-and-contributions)\n- [License](#license)\n\n<!-- END doctoc generated TOC please keep comment here to allow auto update -->\n\n\n\n\n## Why Julep?\n\nJulep is an open-source platform for building **agent-based AI workflows** that go far beyond simple chains of prompts. It lets you orchestrate complex, multi-step processes with Large Language Models (LLMs) and tools **without managing any infrastructure**. With Julep, you can create AI agents that **remember past interactions** and handle sophisticated tasks with branching logic, loops, parallel execution, and integration of external APIs. In short, Julep acts like a *“Firebase for AI agents,”* providing a robust backend for intelligent workflows at scale.\n\n**Key Features and Benefits:**\n\n* **Persistent Memory:** Build AI agents that maintain context and long-term memory across conversations, so they can learn and improve over time.\n* **Modular Workflows:** Define complex tasks as modular steps (in YAML or code) with conditional logic, loops, and error handling. Julep’s workflow engine manages multi-step processes and decisions automatically.\n* **Tool Orchestration:** Easily integrate external tools and APIs (web search, databases, third-party services, etc.) as part of your agent’s toolkit. Julep’s agents can invoke these tools to augment their capabilities, enabling Retrieval-Augmented Generation and more.\n* **Parallel & Scalable:** Run multiple operations in parallel for efficiency, and let Julep handle scaling and concurrency under the hood. The platform is serverless, so it seamlessly scales workflows without extra devops overhead.\n* **Reliable Execution:** Don’t worry about glitches – Julep provides built-in retries, self-healing steps, and robust error handling to keep long-running tasks on track. You also get real-time monitoring and logging to track progress.\n* **Easy Integration:** Get started quickly with our SDKs for **Python** and **Node.js**, or use the Julep CLI for scripting. Julep’s REST API is available if you want to integrate directly into other systems.\n\n<img src=\"./.github/julep.gif\"/>\n\n*Focus on your AI logic and creativity, while Julep takes care of the heavy lifting!* <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"20\">\n\n\n\n## Self-Hosting\n\nSince the hosted version is shutting down, you can self-host Julep to continue using it.\n\n1. **Install the SDK:** Install the Julep SDK for your preferred language:\n\n   * <img src=\"https://user-images.githubusercontent.com/74038190/212257472-08e52665-c503-4bd9-aa20-f5a4dae769b5.gif\" width=\"20\"> **Python:** `pip install julep`\n   * <img src=\"https://user-images.githubusercontent.com/74038190/212257454-16e3712e-945a-4ca2-b238-408ad0bf87e6.gif\" width=\"20\"> **Node.js:** `npm install @julep/sdk` (or `yarn add @julep/sdk`)\n\n2. **Self-Host Julep:** Follow the [Self-Hosting Guide](https://docs.julep.ai/advanced/localsetup) to run Julep on your own infrastructure.\n\n3. **Define Your Agent:** Use the SDK or YAML to define an agent and its task workflow. For example, you can specify the agent's memory, tools it can use, and a step-by-step task logic. (See the **[Quick Start](https://docs.julep.ai/introduction/quick-start)** in our docs for a detailed walkthrough.)\n\n4. **Run a Workflow:** Invoke your agent through the SDK to execute the task. Julep will orchestrate the entire workflow and manage the state, tool calls, and LLM interactions for you.\n\nThat's it! For a complete tutorial, check out the **[Quick Start Guide](https://docs.julep.ai/introduction/quick-start)** in the documentation.\n\n> **Note:** Julep also offers a command-line interface (CLI) to manage workflows and agents. See the [Julep CLI docs](https://docs.julep.ai/responses/quickstart#cli-installation) for details.\n\n\n\n## Documentation and Examples\n\n\nLooking to dive deeper? The **[Julep Documentation](https://docs.julep.ai)** covers everything you need to master the platform – from core concepts (Agents, Tasks, Sessions, Tools) to advanced topics like agent memory management and architecture internals. Key resources include:\n\n* **[Concept Guides](https://docs.julep.ai/concepts/):** Learn about Julep’s architecture, how sessions and memory work, using tools, managing long conversations, and more.\n* **[API & SDK Reference](https://docs.julep.ai/api-reference/):** Find detailed reference for all SDK methods and REST API endpoints to integrate Julep into your applications.\n* **[Tutorials](https://docs.julep.ai/tutorials/):** Step-by-step guides for building real applications (e.g. a research agent that searches the web, a trip-planning assistant, or a chatbot with custom knowledge).\n* **[Cookbook Recipes](https://github.com/julep-ai/julep/tree/dev/cookbooks):** Explore the **Julep Cookbook** for ready-made example workflows and agents. These recipes demonstrate common patterns and use cases – a great way to learn by example. *Browse the [`cookbooks/`](https://github.com/julep-ai/julep/tree/dev/cookbooks) directory in this repository for sample agent definitions.*\n* **[IDE Integration](https://context7.com/julep-ai/julep):** Access Julep documentation directly in your IDE! Perfect for getting instant answers while coding.\n\n\n\n## Community and Contributions\n\nJoin our growing community of developers and AI enthusiasts! Here are some ways to get involved and get support:\n\n* **Discord Community:** Have questions or ideas? Join the conversation on our [official Discord server](https://discord.gg/7H5peSN9QP) to chat with other users.\n* **GitHub Discussions and Issues:** Feel free to use GitHub for reporting bugs, requesting features, or discussing implementation details. Check out the [**good first issues**](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) if you'd like to contribute – we welcome contributions of all kinds.\n* **Contributing:** If you want to contribute code or improvements, please see our [Contributing Guide](.github/CONTRIBUTING.md) for how to get started. We appreciate all PRs and feedback.\n\n*Pro tip: <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/e379a33a-b428-4385-b44f-3da16e7bac9f\" width=\"35\"> Star our repo to stay updated.*\n\n<br/>\n\nYour contributions, big or small, are valuable to us. Let's build something amazing together!    <img src=\"https://github.com/Anmol-Baranwal/Cool-GIFs-For-GitHub/assets/74038190/2c0eef4b-7b75-42bd-9722-4bea97a2d532\" width=\"20\">\n <img src=\"https://user-images.githubusercontent.com/74038190/216125640-2783ebd5-e63e-4ed1-b491-627a40b24850.png\" width=\"20\">\n\n<h4>Our Amazing Contributors:</h4>\n\n<a href=\"https://github.com/julep-ai/julep/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=julep-ai/julep\" />\n</a>\n\n<br/>\n\n## License\n\nJulep is offered under the **Apache 2.0 License**, which means it’s free to use in your own projects. See the [LICENSE](.github/LICENSE) file for details. Enjoy building with Julep!\n"
  },
  {
    "path": "changelog/Templates/JulepCustom/entries.html",
    "content": "{{> head}}\n{{> header}}\n\n<main class=\"container entries-list\">\n  {{#entries}}\n    <article class=\"entry-list-item\">\n      <h2 class=\"entry-title\"><a href=\"{{{url}}}\">{{title}}</a></h2>\n      <p class=\"entry-meta\">{{date}}</p>\n      {{#summary}}\n      <p class=\"entry-summary\">{{summary}}</p>\n      {{/summary}}\n    </article>\n  {{/entries tagged \"main\"}}\n</main>\n\n{{> footer}} "
  },
  {
    "path": "changelog/Templates/JulepCustom/entry.html",
    "content": "{{> head}}\n{{> header}}\n\n<main class=\"container entry-page\">\n  <article>\n    <h1 class=\"entry-title\">{{title}}</h1>\n    <p class=\"entry-meta\">{{date}}</p>\n    {{{html}}}\n    {{#tags}}\n      <span class=\"entry-tag\">#{{.}}</span>\n    {{/tags}}\n  </article>\n</main>\n\n{{> footer}} "
  },
  {
    "path": "changelog/Templates/JulepCustom/footer.html",
    "content": "    <footer class=\"site-footer\">\n      <div class=\"container\">\n        <p>&copy; {{year}} Julep AI</p>\n      </div>\n    </footer>\n  </body>\n</html> "
  },
  {
    "path": "changelog/Templates/JulepCustom/head.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n    <title>{{title}}</title>\n    <link rel=\"stylesheet\" href=\"/style.css\">\n  </head>\n</html>\n\n<!-- test comment -->"
  },
  {
    "path": "changelog/Templates/JulepCustom/header.html",
    "content": "  <body>\n    <header class=\"site-header\">\n      <div class=\"container\">\n        <h1 class=\"logo\"><a href=\"/\">{{site.title}}</a></h1>\n        <nav class=\"channels\">\n          <a href=\"/tag/main\" class=\"stable\">Stable Updates</a>\n          <a href=\"/tag/dev\" class=\"dev\">Dev Channel</a>\n        </nav>\n      </div>\n    </header> "
  },
  {
    "path": "changelog/Templates/JulepCustom/package.json",
    "content": "{\n  \"name\": \"JulepCustom\",\n  \"author\": \"Julep AI\",\n  \"version\": \"0.1.0\",\n  \"description\": \"Custom minimal template with main/dev channels\",\n  \"locals\": {\n    \"site\": {\n      \"title\": \"Julep Changelog\"\n    }\n  }\n} "
  },
  {
    "path": "changelog/Templates/JulepCustom/style.css",
    "content": "/* ──────────────────────────────────────────────────────────\n   Julep Custom Template – CSS\n   Simple, responsive, dark-mode aware styling for changelog\n   ────────────────────────────────────────────────────────── */\n\n:root{\n  --body-bg:#ffffff;\n  --text-color:#111111;\n  --link-color:#0077cc;\n  --link-hover-color:#005fa3;\n  --border-color:#e5e5e5;\n  --container-width:680px;\n  --stable-green:#28a745;\n  --dev-orange:#d49144;\n}\n\n@media (prefers-color-scheme: dark){\n  :root{\n    --body-bg:#1e1e1e;\n    --text-color:#f5f5f5;\n    --link-color:#8ab4ff;\n    --link-hover-color:#a8c6ff;\n    --border-color:#333333;\n  }\n}\n\n*{box-sizing:border-box;}\n\nbody{\n  margin:0;\n  background:var(--body-bg);\n  color:var(--text-color);\n  font-family:-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif;\n  line-height:1.6;\n  font-size:17px;\n}\n\na{color:var(--link-color);text-decoration:none;}\na:hover{color:var(--link-hover-color);text-decoration:underline;}\n\n.container{\n  width:100%;\n  max-width:var(--container-width);\n  margin:0 auto;\n  padding:0 1rem;\n}\n\n/* ── Header ─────────────────────────────── */\n\n.site-header{\n  border-bottom:1px solid var(--border-color);\n  padding:1rem 0;\n}\n\n.logo{margin:0;font-size:1.5rem;}\n.logo a{color:var(--text-color);text-decoration:none;}\n\nnav.channels{margin-top:.5rem;}\nnav.channels a{font-weight:600;margin-right:1rem;}\nnav.channels a.stable{color:var(--stable-green);}\nnav.channels a.dev{color:var(--dev-orange);} \n\n/* ── Entries list ───────────────────────── */\n\n.entries-list .entry-list-item{\n  border-bottom:1px solid var(--border-color);\n  padding:1.5rem 0;\n}\n\n.entries-list .entry-title{\n  margin:0;\n  font-size:1.25rem;\n}\n\n.entry-meta{\n  margin:.3rem 0 .8rem;\n  font-size:.9rem;\n  color:var(--border-color);\n}\n\n.entry-summary{margin:.2rem 0 0;}\n\n/* ── Single entry page ──────────────────── */\n\n.entry-page .entry-title{\n  margin-top:0;\n  font-size:2rem;\n}\n\n.entry-tag{\n  display:inline-block;\n  margin-right:.5rem;\n  font-size:.85rem;\n  opacity:.75;\n}\n\n/* ── Footer ─────────────────────────────── */\n\n.site-footer{\n  border-top:1px solid var(--border-color);\n  padding:1.5rem 0;\n  font-size:.9rem;\n  text-align:center;\n} "
  },
  {
    "path": "changelog/Templates/index-template/archives.html",
    "content": "<!DOCTYPE html>\n<html>\n  {{> head}}\n  <body>\n\n    {{> header}}\n\n    <h1>Archives</h1>\n\n    {{#archives}}\n      {{#months}}\n      <hr>\n      <h3 class=\"archive\">{{month}} {{year}}&nbsp;&nbsp;<small>{{entries.length}} post{{s}}</small></h3>\n\n      <small>\n      {{#entries}}\n      <a class=\"archive\" href=\"{{{url}}}\">{{title}}</a>{{^last}}&nbsp;&nbsp;·&nbsp;{{/last}}\n      {{/entries}}\n      </small>\n\n      <br>\n      {{/months}}\n    {{/archives}}\n\n    {{> footer}}\n\n  </body>\n</html>"
  },
  {
    "path": "changelog/Templates/index-template/entries.html",
    "content": "<!DOCTYPE html>\n<html>\n  {{> head}}\n  <body>\n\n    {{> header}}\n\n    {{^pagination.previous}}\n      {{> home-summary}}\n      <hr class=\"full\">\n    {{/pagination.previous}}\n\n    <small style=\"margin-top: -.625em;display: block;\">\n    {{#pagination.previous}}Page {{pagination.current}} of {{pagination.total}}{{/pagination.previous}}\n    {{^pagination.previous}}Latest posts:{{/pagination.previous}}\n    </small>\n\n    <br><br>\n\n    {{#entries}}\n    <a href=\"{{{url}}}\" class=\"row\"><b>{{title}}</b>&nbsp;{{#date}}&nbsp;·&nbsp;&nbsp;<span style=\"white-space: nowrap;\">{{date}}</span>{{/date}}</a>\n    {{/entries}}\n\n    <br><br><br>\n\n    {{#pagination}}\n\n      {{#previous}}\n      <a class=\"menu\" href=\"/page/{{previous}}\">&larr;&nbsp;Newer posts</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\n      {{/previous}}\n\n      {{#next}}\n      <a class=\"menu\" href=\"/page/{{next}}\">Next page &rarr;</a>\n      {{/next}}\n\n      <hr class=\"full\">\n\n      <div style=\"text-align: right;\">\n      <small>Page {{current}} of {{total}}</small>\n      </div>\n\n    {{/pagination}}\n\n    <br>\n\n    {{> footer}}\n  </body>\n</html>"
  },
  {
    "path": "changelog/Templates/index-template/entry.html",
    "content": "<!DOCTYPE html>\n<html>\n  {{> head}}\n  <body>\n    {{> header}}\n\n    {{#entry}}\n    <div class=\"entry\">\n\n      {{#tags.length}}\n      <div class=\"tag-badges\">\n        {{#tags}}\n        <span class=\"tag {{slug}}\"><a href=\"/tagged/{{slug}}\">{{name}}</a></span>\n        {{/tags}}\n      </div>\n      {{/tags.length}}\n\n      {{{html}}}\n\n      {{#date}}\n      <small>Posted on {{date}}</small>\n      {{/date}}\n\n      {{#tags.length}}\n      <small>\n        {{#tags}}\n        &nbsp;&nbsp;<a href=\"/tagged/{{slug}}\">#{{name}}</a>&nbsp;&nbsp;\n        {{/tags}}\n      </small>\n      {{/tags.length}}\n\n      {{> pluginHTML}}\n\n      <br><br>\n      </div>\n\n      <br><br><br>\n      <hr class=\"full\">\n\n      {{#adjacent}}\n      <br>\n      {{/adjacent}}\n\n\n      {{#next}}\n      <small><a href=\"{{{url}}}\">&larr;&nbsp;Next post</a></small>\n      {{/next}}\n\n      {{#next}}{{#previous}}<small>&nbsp;&nbsp;&nbsp;·&nbsp;&nbsp;&nbsp;</small>{{/previous}}{{/next}}\n\n      {{#previous}}\n      <small><a href=\"{{{url}}}\">Previous post&nbsp;&rarr;</a></small>\n      {{/previous}}\n\n      <br>\n\n    {{/entry}}\n\n    {{> footer}}\n  </body>\n</html>\n"
  },
  {
    "path": "changelog/Templates/index-template/error.html",
    "content": "<!DOCTYPE html>\n<html>\n  {{> head}}\n  <body>\n    {{> header}}\n\n    <h1>{{error.title}}</h1>\n    <p>{{error.message}}</p>\n\n    {{> footer}}\n  </body>\n</html>"
  },
  {
    "path": "changelog/Templates/index-template/feed.rss",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<rss xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\" xmlns:atom=\"http://www.w3.org/2005/Atom\" version=\"2.0\">\n<channel>\n  <title><![CDATA[ {{{title}}}]]></title>\n  <link>{{{blogURL}}}</link>\n  <atom:link href=\"{{{blogURL}}}/feed.rss\" rel=\"self\" type=\"application/rss+xml\"/>\n  <description><![CDATA[ The feed of updates to {{{title}}} ]]></description>\n  {{#recentEntries}}\n  <item> \n    <title><![CDATA[ {{{title}}} ]]></title>\n    <link>{{{absoluteURL}}}</link>\n    <guid>{{{absoluteURL}}}</guid>\n    {{! RSS feeds need a RFC 822 date}}\n    <pubDate>{{#formatDate}}ddd, DD MMM YYYY HH:mm:ss ZZ{{/formatDate}}</pubDate>\n    <dc:creator><![CDATA[ {{{title}}} ]]></dc:creator>\n    <description><![CDATA[ {{#encodeXML}} {{{body}}} {{/encodeXML}} ]]></description>\n  </item>\n  {{/recentEntries}}\n</channel>\n</rss>"
  },
  {
    "path": "changelog/Templates/index-template/footer.html",
    "content": "<footer class=\"site-footer\">\n  <div class=\"container\">\n    <small>© {{year}} Julep AI · <a href=\"https://julep.ai\">julep.ai</a></small>\n  </div>\n</footer>\n\n<script src=\"{{{scriptURL}}}\" type=\"text/javascript\"></script>"
  },
  {
    "path": "changelog/Templates/index-template/head.html",
    "content": "<head>\n  <meta charset=\"utf-8\">\n  <title>{{> title}}</title>\n  <meta name=\"description\" content=\"{{> description}}\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n  <link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS Feed for {{title}}\" href=\"{{{feed_url}}}\">\n  <link rel=\"stylesheet\" href=\"{{{cssURL}}}\">\n  {{#avatar}}\n  <link rel=\"icon\" href=\"{{{avatar_url}}}\" type=\"image/x-icon\">\n  {{/avatar}}\n</head>"
  },
  {
    "path": "changelog/Templates/index-template/header.html",
    "content": "<a href=\"/\" id=\"logo\">\n  {{#avatar}}\n  <img src=\"{{{avatar_url}}}\" class=\"{{#roundAvatar}}rounded{{/roundAvatar}}\" alt=\"{{title}}\"/><br>\n  {{/avatar}}\n  {{title}}\n</a>\n<br>\n\n<a class=\"menu\" href=\"https://julep.ai/\" target=\"_blank\" rel=\"noopener\">Website</a>\n<a class=\"menu\" href=\"https://dashboard.julep.ai/\" target=\"_blank\" rel=\"noopener\">Dashboard</a>\n<a class=\"menu\" href=\"https://docs.julep.ai/\" target=\"_blank\" rel=\"noopener\">Docs</a>\n\n<!-- Custom channel navigation: separates Stable (main) and Dev updates -->\n<nav class=\"channels\">\n  <a href=\"/tagged/main\" class=\"stable\">Stable Updates</a>\n  <a href=\"/tagged/dev\" class=\"dev\">Dev Channel</a>\n</nav>\n\n<br><br>\n<hr class=\"full\">"
  },
  {
    "path": "changelog/Templates/index-template/home-summary.html",
    "content": "<h1 style=\"font-size:2.5em;\">✨ Latest Highlights</h1>\n<small style=\"display:block;margin-top:-0.5em;margin-bottom:0.5em;\">15 August 2025 Release</small>\n<span class=\"tag main\"><a href=\"/tagged/main\">main</a></span>\n<ul>\n  <li><strong>GPT-5 Model Family Support</strong><br>\n    Added support for GPT-5 model family with 8 variants (gpt-5, gpt-5-mini, gpt-5-nano).</li>\n\n  <li><strong>Comprehensive GPT-5 Documentation</strong><br>\n    Added comprehensive GPT-5 documentation including capabilities, pricing, and parameters.</li>\n\n  <li><strong>LiteLLM Proxy Configuration</strong><br>\n    Added GPT-5 models to LiteLLM proxy configuration with appropriate tags and API keys.</li>\n</ul>"
  },
  {
    "path": "changelog/Templates/index-template/package.json",
    "content": "{\n  \"name\": \"Index\",\n  \"locals\": {\n    \"page_size\": 20\n  },\n  \"views\": {\n    \"search.html\": {\n      \"partials\": {\n        \"title\": \"Search - {{{title}}}\",\n        \"description\": \"Search all the entries posted on {{{title}}}\"\n      }\n    },\n    \"archives.html\": {\n      \"url\": \"/archives\",\n      \"partials\": {\n        \"title\": \"Archives - {{{title}}}\",\n        \"description\": \"All the entries posted on {{{title}}}\"\n      }\n    },\n    \"public.html\": {\n      \"partials\": {\n        \"title\": \"Index of {{{path}}}\",\n        \"description\": \"All the files and folders inside {{{path}}}\"\n      }\n    },\n    \"entries.html\": {\n      \"partials\": {\n        \"title\": \"{{{title}}}\",\n        \"description\": \"The latest entries posted on {{{title}}}\"\n      }\n    },\n    \"entry.html\": {\n      \"partials\": {\n        \"title\": \"{{{entry.title}}} - {{{title}}}\",\n        \"description\": \"{{{entry.summary}}}\"\n      }\n    },\n    \"error.html\": {\n      \"partials\": {\n        \"title\": \"{{{error.title}}} - {{{title}}}\",\n        \"description\": \"Error on {{{title}}}\"\n      }\n    },\n    \"tagged.html\": {\n      \"partials\": {\n        \"title\": \"Entries tagged {{{tag}}} from {{{title}}}\",\n        \"description\": \"All of the entries posted on {{{title}}} tagged {{{tag}}}\"\n      }\n    }\n  }\n}"
  },
  {
    "path": "changelog/Templates/index-template/public.html",
    "content": "<!DOCTYPE html>\n<html>\n  {{> head}}\n  <body>\n    <style>\n      body {margin: 2em;}\n      td, tr {border:none;}\n    </style>\n    <h1>\n      {{#breadcrumbs}}\n      <a href=\"{{path}}\">{{name}}</a> /\n      {{/breadcrumbs}}\n      {{dirname}}\n    </h1>\n    <table>\n      {{#contents}}\n      <tr>\n        <td><a href=\"{{path}}\">{{name}}</a></td>\n      </tr>\n      {{/contents}}\n    </table>\n  </body>\n</html>"
  },
  {
    "path": "changelog/Templates/index-template/robots.txt",
    "content": "User-agent: *\nAllow: /\nSitemap: {{{blogURL}}}/sitemap.xml"
  },
  {
    "path": "changelog/Templates/index-template/script.js",
    "content": "{{{appJS}}}\n\n// This script is embedded in the footer of every page"
  },
  {
    "path": "changelog/Templates/index-template/search.html",
    "content": "<!DOCTYPE html>\n<html>\n  {{> head}}\n  <body>\n    {{> header}}\n\n    <form action='/search'>\n      <input name=\"q\" type=\"text\" placeholder=\"Enter a search term...\" value=\"{{#query}}{{query}}{{/query}}\" autofocus/>\n      <input type=\"submit\" value=\"Search\">\n    </form>\n\n    <br>\n\n    {{#query}}\n    {{^entries}}\n    <p>Sorry, nothing found for “{{query}}”</p>\n    {{/entries}}\n    {{/query}}\n\n    {{#entries}}\n    <a href=\"{{{url}}}\" class=\"row\"><b>{{title}}</b> {{#date}}&nbsp;·&nbsp; <span style=\"white-space: nowrap;\">{{date}}</span>{{/date}}</a>\n    {{/entries}}\n\n    {{> footer}}\n\n  </body>\n</html>"
  },
  {
    "path": "changelog/Templates/index-template/sitemap.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\"> \n  <url>\n    <loc>{{blogURL}}</loc> \n  </url>\n  <url>\n    <loc>{{blogURL}}/archives/</loc> \n  </url>\n  {{#menu}}\n  {{#isPage}}\n  <url>\n    <loc>{{blogURL}}{{url}}/</loc> \n  </url>\n  {{/isPage}}\n  {{/menu}}    \n  {{#allEntries}}  \n  <url>\n    <loc>{{blogURL}}{{url}}/</loc> \n  </url>\n  {{/allEntries}}  \n</urlset>"
  },
  {
    "path": "changelog/Templates/index-template/style.css",
    "content": "/* This template tag is replaced by CSS when this file is rendered */\n{{{appCSS}}}\n\nbody {\n  font: 1.125rem / 1.4 -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;\n  word-wrap: break-word;\n  max-width: 32em;\n  margin: 0 auto;\n  padding: 2.5em 1.25em 10em;\n  color: #333;\n}\n\n/* Text */\n\na {color: inherit;text-decoration: none;padding: 0.25em 0.5em;background: none;margin: -0.25em -0.5em;border-radius: 4px;transition: background 0.2s ease;}\na:hover {background: rgba(0,0,0,0.02);color: #468CC7;}\na:active {opacity: 0.9}\n\nh1 {font-size: 2.25em;line-height:1.2;}\nh2 {font-size: 1.25em;}\nh3, h4, h5, h6 {font-size: 1em}\n\nhr {margin: 1.25em 0;border: 0;border-top: 1px solid #eee;}\nbr {width: 100%;clear: both;float: none;}\n\nblockquote {padding: 0 0 0 0.75em;color: #777}\n\nsmall, .menu, .caption {color: #9e9e9e;font-weight: 400;}\nsup {font-size: 0.83;line-height: 0;vertical-align: super;}\n\n.entry {position: relative;}\n.entry a {text-decoration: underline;}\n\n.caption {font-size: smaller;}\n.caption {max-width: 36rem;display: block;margin: .625em auto 1.25em auto;}\n\n/* Theme specific styles */\n\n#logo {font-weight: bold;display: inline-block;line-height: 1.75}\n#logo img {max-width: 8em;max-height:8em;margin-bottom: 0.25em}\n#logo img.rounded {border-radius: 50%;margin-left: -1em}\n\n#logo:hover {opacity: 0.8;background: none;color: inherit;}\n#logo:active {opacity: 0.75}\n\na.menu {margin-right: 0em;line-height: 1.75}\n\n\na.row {\n  display: inline-block;\n  position: relative;\n  margin-top: 0.25em;\n  margin-bottom: 0.25em;\n  padding-right: 16em;\n  width: 50vw;\n  left: 50%;\n  margin-left: -16.5em;\n}\n\n/* This allows the horizontal rules and full-width links on the index page to fill the entire screen without triggering a scrollbar */\nhr.full {\n  width: 50vw;\n  padding-left: 16em;\n  position: relative;\n  left: 50%;\n  margin-left: -16em;\n}\n\n.archive {color: black;line-height: 1.75;margin-bottom: 0}\n\ninput[name=q] {\n  display: inline-block;\n  font-size: inherit;\n  box-sizing: border-box;\n  width: 70%;\n  padding: 0.444em 0.666em;\n  color: #555;\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);\n  box-shadow: inset 0 1px 1px rgba(0,0,0,.075);\n  -webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;\n  -o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;\n  transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;\n  font-family: inherit;\n}\n\ninput[type=submit] {\n    display: inline-block;\n    padding: 0.444em 0.666em;\n    font-size: inherit;\n    cursor: pointer;\n    text-align: center;\n    white-space: nowrap;\n    border: 1px solid transparent;\n    border-radius: 4px;\n    padding-left: 2em;\n    border: 1px solid #ccc;\n    background: url(data:image/svg+xml;base64,PHN2ZyBpZD0iaWNvbi1zZWFyY2giIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgOCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIj4NCjxwYXRoIGlkPSJzZWFyY2giIGQ9Ik03Ljk5LDYuOTI4TDUuODQ3LDQuNzg0YzAuMjg5LTAuNDc2LDAuNDU4LTEuMDMzLDAuNDU4LTEuNjNDNi4zMDUsMS40MTIsNC44OTUsMCwzLjE1MiwwDQoJQzEuNDExLDAsMCwxLjQxMiwwLDMuMTU0YzAsMS43NDEsMS40MTIsMy4xNTEsMy4xNTMsMy4xNTFjMC41OTcsMCwxLjE1NC0wLjE2OSwxLjYzLTAuNDU4bDIuMTQ1LDIuMTQ2TDcuOTksNi45Mjh6IE0xLjIwMywzLjE1NA0KCWMwLjAwMi0xLjA3NywwLjg3NC0xLjk0OSwxLjk1MS0xLjk1MWMxLjA3NiwwLjAwMiwxLjk0OCwwLjg3NCwxLjk0OSwxLjk1MUM1LjEwMSw0LjIzLDQuMjI5LDUuMTAzLDMuMTUzLDUuMTAzDQoJQzIuMDc1LDUuMTAzLDEuMjA1LDQuMjMsMS4yMDMsMy4xNTR6Ii8+DQo8L3N2Zz4=) 0.8em center/0.8em no-repeat;\n\n}\n\ninput#search:focus {\n  outline: none;\n}\n\n:-moz-placeholder {color: #ccc;}\n::-moz-placeholder {color: #ccc;}\n:-ms-input-placeholder {color: #ccc;}\n::-webkit-input-placeholder {color: #ccc;}\n\na.footnote-ref {margin-left: 0;margin-right: 0;text-decoration: none;}\n\n/* CODE */\n\ncode {\n  font-family: Consolas, \"Liberation Mono\", Menlo, Courier, monospace;\n  background: rgba(0,0,0,.03);\n  border-radius: 4px;\n  font-size: smaller;\n  line-height: inherit;\n  margin: 0;\n}\n\np code {\n  line-height: 1em;\n  padding: 2px;\n  margin-left: -2px;\n  display: inline-block;\n}\n\npre code {\n  display: block;padding: 12px 18px;\n  margin: 0 0 0 -18px;\n  background-color: rgba(0,0,0,.02)\n}\n\n/* TABLES */\n\ntable {\n  display: block;\n  width: auto;\n  overflow: auto;\n  word-break: normal;\n  word-break: keep-all;\n  border-collapse: collapse;\n  border-spacing: 0;\n  box-sizing: border-box;\n  font-size: inherit;\n  line-height: inherit;\n}\n\ntr {box-sizing: border-box;border-top: 1px solid #ccc;padding: 0}\nth, td {box-sizing: border-box;border: 1px solid #ddd;padding: 5px 12px 6px}\n\n/* LISTS */\n\nul, ol {\n  margin-left: 0;\n  padding-left: 0;\n  list-style-position: outside;\n  margin-bottom: 1.25em;\n}\n\nul {list-style: circle;}\n\nul ul, ol ul, ol ol, ul ol {margin-left: 1.25em;margin-bottom: 0}\n\nli {margin: 0}\n\n/* IMAGES */\n\nimg {vertical-align: middle;max-width: 100%;height: auto;}\n\n\n/* VIDEOS & tweets */\n/* Only apply vertical margin to direct\n   descendants, prevents multi margins */\n\niframe {width: 100%;}\n.entry > iframe {margin: 1.25em 0!important;}\n\n/* Small caps */\n.small-caps {}\n\n/* Double quote (\") marks */\n.pull-double{margin-left:-.45em}\n.push-double{margin-right:.45em}\n\n/* Single quote (') marks */\n.pull-single{margin-left:-.20em}\n.push-single{margin-right:.20em}\n\n/* Optical margin alignment for particular letters */\n.pull-T, .pull-V, .pull-W, .pull-Y {margin-left: -0.1em}\n.push-T, .push-V, .push-W, .push-Y {margin-right: 0.1em}\n\n.pull-O, .pull-C, .pull-o, .pull-c {margin-left: -0.06em}\n.push-O, .push-C, .push-o, .push-c {margin-right: 0.06em}\n\n.pull-A {margin-left: -0.04em}\n.push-A {margin-right: 0.04em}\n\n/* Layout tags */\n\n.wide.left .caption {margin-left: 22.680412113%}\n.wide.right .caption {margin-right: 22.680412113%}\n\n.right {float: right;}\n.left {float: left;}\n\n\n.margin, .inside {\n  box-sizing: border-box;\n  width: 29.3333%;\n}\n\n.margin {  position: absolute;}\n\n.left.inside {margin-right: 2em}\n.right.inside {margin-left: 2em}\n\n.margin blockquote {margin: 3px 0;color:#232323;padding: 3px 6px;font-size: smaller;}\n.margin blockquote p {margin: 0}\n\n.margin h1, .margin h2, .margin h3 {margin-top:0}\n\n.margin img,\n.column img {margin-top: 6px}\n\n.margin p, .inside p {font-style: italic;margin-top: 0}\n\n.left.margin {\n  left: -29.3333%;\n  padding-right: 2em;\n  text-align: right;\n}\n\n.right.margin {\n  right: -29.3333%;\n  padding-left: 2em;\n}\n\n.wide {\n  width: 158.6666667%;\n  margin-left: -29.3333333%;\n  overflow: auto; /* collapse internal margins */\n}\n\n.wide.left, .wide.right {width: 129.3333333%;float: none;}\n.wide.left {margin: 0 0 0 -29.3333333%}\n.wide.right {margin: 0 -29.3333333% 0 0}\n\n\n.column {\n  box-sizing: border-box;\n  float: left;\n}\n\n.column .caption {margin-bottom: 6px}\n\n.column.two {\n  width: 50%;\n  padding-right: 12px;\n}\n\n.column.three {\n  width: 33%;\n  padding-right: 24px;\n}\n\n.column.two + .column.two {\n  padding: 0 0 0 12px;\n}\n\n.column h1,\n.column h2,\n.column h3 {margin-bottom: -12px}\n\n/* The theme used by the syntax highlighting app */\n.hljs {display: block;overflow-x: auto;}\n.hljs-comment, .hljs-quote, .hljs-variable {color: #008000;}\n.hljs-keyword, .hljs-selector-tag, .hljs-built_in, .hljs-name, .hljs-tag {color: #00f;}\n.hljs-string, .hljs-title, .hljs-section, .hljs-attribute, .hljs-literal, .hljs-template-tag, .hljs-template-variable, .hljs-type, .hljs-addition {color: #a31515;}\n.hljs-deletion, .hljs-selector-attr, .hljs-selector-pseudo, .hljs-meta {color: #2b91af;}\n.hljs-doctag {color: #808080;}\n.hljs-attr {color: #f00;}\n.hljs-symbol, .hljs-bullet, .hljs-link {color: #00b0e8;}\n.hljs-emphasis {font-style: italic;}\n.hljs-strong {font-weight: bold;}\n\n\n@media screen and (max-width: 952px) {\n\n  .entry .margin {position: relative;top: auto;left: auto;right: auto;bottom: auto;}\n  .entry .margin.right {float: right;}\n  .entry .margin.left {text-align: left;display: block;float: left;}\n\n  .entry .margin .caption,\n  .entry .margin p {margin-bottom: 6px;text-align: left;}\n\n  .wide, .wide.left, .wide.right {width: 100%;margin: 0}\n  .wide.left .caption {margin-left: 0}\n}\n\n@media screen and (max-width: 34em) {\n\n  hr.full, a.row {width: 100%;margin-left: 0;margin-right:0;padding-right: 0;padding-left:0;position: relative;left: 0;}\n\n}\n\n@media screen and (max-width: 730px) {\n\n  ul, li {margin-left: 24px}\n  ul ul, ol ul, ol ol, ul ol {margin-left: 0}\n  .nav .right {clear: both;float: none;margin-top: 3px}\n  a.search {margin-left: 0}\n  body {font-size: 1rem;padding: 1rem}\n\n}\n\n@media screen and (max-width: 400px) {\n  body {font-size: 0.9rem;padding: 0.5rem;margin: 0}\n}\n\n/* ─────────────────────────────────────────────\n   Julep Custom – Channel navigation styles\n   ------------------------------------------------------------------ */\n\nnav.channels{\n  margin-top:.5rem;\n}\n\nnav.channels a{\n  font-weight:600;\n  margin-right:1rem;\n}\n\nnav.channels a.stable{\n  color:#28a745;\n}\n\nnav.channels a.dev{\n  color:#d49144;\n}\n\n/* ─────────────────────────────────────────────\n   Tag badges for entry pages\n   ------------------------------------------------------------------ */\n.tag-badges{\n  margin-bottom:1rem;\n}\n\n.tag{\n  display:inline-block;\n  font-size:0.75rem;\n  font-weight:600;\n  padding:0.2em 0.6em;\n  border-radius:4px;\n  margin-right:0.4rem;\n  text-transform:uppercase;\n}\n\n.tag a{color:#fff;text-decoration:none;}\n\n.tag.main{background:#28a745;color:#fff;}\n.tag.dev{background:#d49144;color:#fff;}\n\n/* ─────────────────────────────────────────────\n   Footer styles\n   ------------------------------------------------------------------ */\n.container{\n  width:100%;\n  max-width:32em;\n  margin:0 auto;\n  padding:0 1rem;\n}\n\n.site-footer{\n  border-top:1px solid #eee;\n  padding:2rem 0;\n  text-align:center;\n  font-size:.85rem;\n  color:#9e9e9e;\n}\n\n.site-footer a{color:inherit;text-decoration:none;}\n.site-footer a:hover{text-decoration:underline;}"
  },
  {
    "path": "changelog/Templates/index-template/tagged.html",
    "content": "<!DOCTYPE html>\n<html>\n  {{> head}}\n  <body>\n    {{> header}}\n\n    <h1>{{tag}}</h1>\n\n    <hr class=\"full\">\n\n    <small style=\"margin-top: -.625em;display: block;\">\n    All posts tagged {{tag}}:\n    </small>\n\n    {{#entries}}\n    <a href=\"{{{url}}}\" class=\"row\"><b>{{title}}</b> {{#date}}&nbsp;·&nbsp; <span style=\"white-space: nowrap;\">{{date}}</span>{{/date}}</a>\n    {{/entries}}\n\n    {{> footer}}\n\n  </body>\n</html>\n"
  },
  {
    "path": "changelog/dev/2025-06-17.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-06-17\ntags: [dev]\n---\n\n- Added automated Claude-driven documentation update workflows for PR events\n- Added manual workflow dispatch for on-demand documentation updates  \n- Added automated changelog generation for PRs targeting main and dev branches\n- Added changelog synchronization with external Blot blog platform\n- Added skip logic with `[skip-claude]` tag to prevent infinite automation loops\n- Added changelog templates and infrastructure for automated publishing"
  },
  {
    "path": "changelog/dev/2025-06-23.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-06-23\ntags: [dev]\n---\n\n## Development Updates\n\n- Added automated Claude-driven documentation update workflows\n- Introduced changelog sync automation with Blot blog platform\n- Implemented manual trigger workflows for documentation updates\n- Added gating logic to determine when documentation updates are needed\n- Created templates for changelog presentation and styling\n- Added `include_embeddings` parameter to document APIs for bandwidth optimization"
  },
  {
    "path": "changelog/dev/2025-06-25.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-06-25\ntags: [dev]\n---\n\n## Julep AI Changelog - June 25, 2025\n\n- Extended `include_embeddings` parameter to document search endpoints for additional bandwidth optimization"
  },
  {
    "path": "changelog/dev/2025-06-26.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-06-26\ntags: [dev]\n---\n\n## Julep AI Changelog - June 26, 2025\n\n- Added `include_embeddings` parameter to document APIs for bandwidth optimization\n- Added JWT allowed skew configuration option for improved token validation flexibility\n- Pinned vectorizer worker to version v0.10.5 for improved stability"
  },
  {
    "path": "changelog/dev/2025-06-30.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-06-30\ntags: [dev]\n---\n\n## Julep AI Changelog - June 30, 2025\n\n### Tool Calling Enhancements\n- Added comprehensive tool calling functionality in tasks and sessions for enhanced agent capabilities\n- Added integration tools conversion to OpenAI-compatible format for better tool interoperability\n- Added new tool runner system for improved tool execution and management\n\n### New API Parameters\n- Added prompt step parameters: `tool_choice`, `unwrap`, `auto_run_tools`, and `disable_cache` for granular control\n- Added session parameters: `auto_run_tools` and `forward_tool_calls` for enhanced session behavior\n\n### Anthropic Tool Support\n- Added support for new Anthropic tool types: `computer_20241022`, `text_editor_20241022`, and `bash_20241022`\n\n### Infrastructure & Platform\n- Added feature flags integration using Unleash with OpenFeature for controlled feature rollouts\n- Refactored prompt steps to integrate with tool runner functionalities for better performance"
  },
  {
    "path": "changelog/dev/2025-07-02.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-02\ntags: [dev]\n---\n\n## Julep AI Changelog - July 2, 2025\n\n### Tool Calling Updates\n- Changed default value of `auto_run_tools` from `true` to `false` in PromptStep for safer defaults\n- Fixed tool call prevention when `auto_run_tools` is disabled by passing empty tools list to model\n- Added comprehensive test coverage for `auto_run_tools` behavior in both enabled and disabled states\n\n### API Schema Enhancements  \n- Renamed `ApiCallDef` to separate `ApiCallDef-Input` and `ApiCallDef-Output` variants for better type safety\n- Added new parameter schema definitions: `ParameterSchema-Input`, `ParameterSchema-Output`, and `ParameterSchemaUpdate`\n- Added property definition types: `PropertyDefinition-Input`, `PropertyDefinition-Output`, and `PropertyDefinitionUpdate`"
  },
  {
    "path": "changelog/dev/2025-07-03.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-03\ntags: [dev]\n---\n\n## Julep AI Changelog - July 3, 2025\n\n### Chat API Enhancements\n- Added `auto_run_tools` property to ChatInput with default value of `false`\n- Added `recall_tools` property to ChatInput with default value of `true` for controlling tool recall\n- Implemented automatic tool execution when `auto_run_tools=true` - tools are executed automatically and results fed back to the model\n- Added new chat implementation that supports automatic tool calling workflow\n- Separated legacy and new chat code for better maintainability\n\n### API Architecture Improvements\n- Refactored `execute_integration` and `execute_system` functions to accept explicit parameters instead of context objects\n- Added context-free tool execution capability for use in chat endpoints\n- Improved code organization with dedicated auto-tools and legacy directories"
  },
  {
    "path": "changelog/dev/2025-07-04.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-04\ntags: [dev]\n---\n\n## Julep AI Changelog - July 4, 2025\n\n### Chat API Enhancements\n- Added `recall_tools` property to ChatInput with default value of `true`\n- Enhanced chat session control over tool request/response recall behavior\n- Improved automatic tool execution workflow with better message history management"
  },
  {
    "path": "changelog/dev/2025-07-05.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-05\ntags: [dev]\n---\n\n## Julep AI Changelog - July 5, 2025\n\n### Documentation Enhancements\n- Enhanced documentation for automatic tool execution across chat, sessions, and tools\n- Added comprehensive examples and usage patterns for `auto_run_tools` and `recall_tools`\n- Added documentation for `params_schema` in API call tools with JSON Schema validation\n- Updated SDK documentation with new tool integration examples for Python and Node.js"
  },
  {
    "path": "changelog/dev/2025-07-08.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-08\ntags: [dev]\n---\n\n## Julep AI Changelog - July 8, 2025\n\n### Model Additions\n- Added gemini-2.5-pro model to LiteLLM configuration\n- Added gemini-2.5-flash model to LiteLLM configuration"
  },
  {
    "path": "changelog/dev/2025-07-09.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-09\ntags: [dev]\n---\n\n## Julep AI Changelog - July 9, 2025\n\n### Features\n- Enhanced LLM client to support custom API keys from user secrets\n- Added model name conversion utility for LiteLLM integration\n- Added automated workflow to sync model documentation from configuration\n- Enhanced supported models page with transparent feature comparison tables\n- Added comprehensive model capability tracking (context window, max output, tool calling, vision, audio, caching, cost tiers)\n\n### Bug Fixes\n- Fixed cartesian product bug in get_task query that caused duplicate tools\n- Re-enabled model validation in session chat rendering"
  },
  {
    "path": "changelog/dev/2025-07-18.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-18\ntags: [dev]\n---\n\n## Julep AI Changelog - July 18, 2025\n\n### Documentation\n- Added explanatory note about dollar expressions (`$`) in task definitions for dynamic variable referencing"
  },
  {
    "path": "changelog/dev/2025-07-31.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-31\ntags: [dev]\n---\n\n- Added secrets support to task definitions for secure access in task expressions\n- Removed support for claude-3-sonnet model from LLM proxy configuration"
  },
  {
    "path": "changelog/dev/2025-08-06.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-08-06\ntags: [dev]\n---\n\n- Added gemini-2.5-pro-preview-06-05 model to LLM proxy configuration"
  },
  {
    "path": "changelog/dev/2025-08-07.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-08-07\ntags: [dev]\n---\n\n- Added Llama model cost multiplier with LLAMA_MODEL_MULTIPLIER environment variable\n- Enhanced usage tracking with automatic Llama model detection\n- Deprecated discontinued Groq models (llama-3.1-70b, mistral-saba-24b, qwen-qwq-32b)\n- Migrated Cerebras models to OpenRouter endpoints\n- Updated model configurations in LLM proxy"
  },
  {
    "path": "changelog/dev/2025-08-08.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-08-08\ntags: [dev]\n---\n\n- Migrated Anthropic models from direct API to AWS Bedrock endpoints\n- Updated LiteLLM version from 1.57.0 to 1.74.9 for improved compatibility\n- Added Bedrock API key support and AWS region configuration\n- Re-enabled claude-3-sonnet model via Bedrock integration\n- Added new claude-opus-4-1 model support\n- Updated dependency versions for enhanced Bedrock integration"
  },
  {
    "path": "changelog/dev/2025-08-15.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-08-15\ntags: [dev]\n---\n\n- Added support for GPT-5 model family with 8 variants (gpt-5, gpt-5-mini, gpt-5-nano)\n- Added comprehensive GPT-5 documentation including capabilities, pricing, and parameters\n- Added GPT-5 models to LiteLLM proxy configuration with appropriate tags and API keys"
  },
  {
    "path": "changelog/stable (main)/2025-01-31.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-01-31\ntags: [main]\n---\n\n- **Major Feature**: Added experimental CLI with comprehensive management commands for agents and tasks ✨\n- **Minor Feature**: Introduced new import functionality for agents in CLI ✨\n- **Critical Fix**: Replaced `GITHUB_ENV` with `GITHUB_OUTPUT` for environment variable handling 🔧\n- **Minor Fix**: Fixed CLI documentation by removing `pipx` installation 🔧\n- **Major Enhancement**: Refactored task execution workflow for modularity 📈\n- **Minor Enhancement**: Improved documentation with updated quickstart and lifecycle guides 📈\n- **Key Performance**: Enhanced CLI with rich text and progress indicators 🚀\n- **Secondary Performance**: Reduced API response times by 15% 🚀\n- **Critical Breaking**: Removed `previous_inputs` parameter in workflows 💥\n- **Other Breaking**: Deprecated legacy API (v1) to be removed next month 💥\n"
  },
  {
    "path": "changelog/stable (main)/2025-02-14.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-02-14\ntags: [main]\n---\n\n- **Major Feature**: Default `parallelism` in MapReduce now set to `task_max_parallelism` for optimized processing ✨\n- **Minor Feature**: Backward compatibility support added for older syntax in `base_evaluate` ➕\n- **Critical Fix**: Resolved data inconsistencies in subworkflow validations for smoother operations 🔧\n- **Minor Fix**: Addressed hotfixes in `workflows.py` for robust workflow handling 🔧\n- **Major Enhancement**: Introduced `backwards_compatibility` to refine evaluation logic 📈\n- **Minor Enhancement**: Enhanced CLI documentation and guides for improved user understanding 📈\n- **Key Performance**: Implemented Prometheus metrics for advanced monitoring and streamlined performance 🚀\n- **Secondary Performance**: Enhanced task evaluation functions with efficient expression handling 🚀\n- **Critical Breaking**: Deprecated legacy API with a migration guide for users 💥\n- **Other Breaking**: Updated agent settings to be untyped, affecting configuration handling 💥\n"
  },
  {
    "path": "changelog/stable (main)/2025-04-11.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-04-11\ntags: [main]\n---\n\n- **Major Feature**: Introduced support for Gemini models in `litellm-config.yaml` ✨\n- **Minor Feature**: Added environment configuration for Open Responses API ✨\n- **Critical Fix**: Corrected cardinality violations in SQL queries across agents-api 🔧\n- **Minor Fix**: Resolved documentation formatting issues in 21 files 🔧\n- **Minor Fix**: `get_live_urls` now uses `asyncio.to_thread` to avoid blocking the event loop 🔧\n- **Major Enhancement**: Refactored API calls to include developer ID for better tracking 📈\n- **Minor Enhancement**: Improved Gunicorn worker configurability via environment variables 📈\n- **Secondary Performance**: Integrated OpenAPI model and TyeSpecs for expanded functionality 🚀\n- **Critical Breaking**: Replaced Postgraphile with Hasura for GraphQL services 💥\n- **Other Breaking**: Updated Docker configurations to adhere to new deployment requirements 💥\n"
  },
  {
    "path": "changelog/stable (main)/2025-05-09.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-05-09\ntags: [main]\n---\n\n- **Minor Docs**: Added links to cookbooks for Quick, Community, and Industry pages.\n- **Minor Docs**: Updated cookbook links to use absolute GitHub URLs.\n"
  },
  {
    "path": "changelog/stable (main)/2025-05-21.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-05-21\ntags: [main]\n---\n\n<!-- ───────────  Core platform improvements merged from *dev*  ─────────── -->\n\n- **Major Feature**: Introduced first-class **Projects**!  \n  Adds `projects` table, association tables, CRUD endpoints, canonical-name support, and project-aware validation across agents, users, files, and sessions\n- **Major Feature**: Landed encrypted **Secrets Vault** with full CRUD API, master-key encryption, and transparent secret-reference substitution in tool & API definitions ([#1312](https://github.com/julep-ai/julep/pull/1312))\n\n<!-- ───────────  Secrets follow-ups  ─────────── -->\n\n- **Enhancement**: Added **custom-key aliasing** for secrets plus numerous workflow & cost-tracking refactors ([#1356](https://github.com/julep-ai/julep/pull/1356))\n- **Enhancement**: Added `decrypt` flag to secrets queries—retrieve values encrypted or in plaintext as needed ([#1369](https://github.com/julep-ai/julep/pull/1369))\n\n<!-- ───────────  Usage, cost & limits  ─────────── -->\n\n- **Enhancement**: Implemented **monthly cost aggregation** + middleware that enforces free-tier usage caps and active-developer checks ([#1351](https://github.com/julep-ai/julep/pull/1351))\n\n<!-- ───────────  Stability & correctness  ─────────── -->\n\n- **Fix**: Re-wrote project-resource SQL views for accurate mapping and removed weak default secrets key in production ([#1362](https://github.com/julep-ai/julep/pull/1362))\n- **Fix**: Hardened secrets endpoints & models, fixed insert/delete logic, and expanded expression-evaluator edge-cases ([#1343](https://github.com/julep-ai/julep/pull/1343))\n\n<!-- ───────────  Tooling / DX  ─────────── -->\n\n- **Enhancement**: New GitHub Actions workflow automatically translates README files via Anthropic Claude, replacing the old Python job ([#1433](https://github.com/julep-ai/julep/pull/1433))\n\n- **Other Breaking**: Removed fallback for `DEMO_*` placeholder credentials 💥\n- **Minor Docs**: Updated docs and cookbooks to remove `DEMO_API_KEY` references.\n- **Minor Docs**: Updated footer use-case links to the new `cookbooks/advanced` paths.\n\n> _This list covers the most significant code-related PRs merged to **main** on 21 May 2025.  \n> For everything else, see the full list of [recent pull requests](https://github.com/julep-ai/julep/pulls?q=is:pr+created:>=2025-04-21)._  \n\n---\n"
  },
  {
    "path": "changelog/stable (main)/2025-06-23.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-06-23\ntags: [main]\n---\n\n<!-- ───────────  Major Features & Enhancements  ─────────── -->\n\n- **Major Feature**: Added **metadata support** to chat functionality - enables dynamic system template variables at message level\n- **Major Feature**: Extended **agent and task schemas** with project fields and secret references for enhanced configuration management\n- **Major Feature**: Added **encrypted API keys infrastructure** with PostgreSQL storage, AES256 encryption, and soft delete functionality\n- **Major Feature**: Added **comprehensive system templates documentation** covering template hierarchy, variables, Jinja2 features, and best practices\n\n<!-- ───────────  Platform & Infrastructure  ─────────── -->\n\n- **Enhancement**: Refactored **analytics service** setup - switched to official Metabase image with dedicated PostgreSQL database\n- **Enhancement**: Added **new LLM model configurations** - extended Groq support with Llama 4, DeepSeek, and other latest models\n- **Enhancement**: Added **optional trigram search** capabilities for improved document search performance\n\n<!-- ───────────  Documentation & Developer Experience  ─────────── -->\n\n- **Documentation**: Updated chat API docs with metadata parameter examples and usage patterns\n- **Documentation**: Enhanced agent and session documentation with system template references\n- **Documentation**: Added advanced guide for system templates with debugging techniques and best practices\n\n<!-- ───────────  Code Quality & Maintenance  ─────────── -->\n\n- **Enhancement**: Code formatting improvements with consistent multi-line type annotations across autogenerated models\n- **Enhancement**: Added comprehensive test coverage for chat metadata functionality with edge case handling\n\n> _This list covers the most significant code-related changes merged to **main** on 23 June 2025.  \n> For everything else, see the full list of [recent pull requests](https://github.com/julep-ai/julep/pulls?q=is:pr+created:>=2025-05-23)._  \n\n---"
  },
  {
    "path": "changelog/stable (main)/2025-06-30.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-06-30\ntags: [main]\n---\n\n# Changes for June 30, 2025\n\n- Added IDE Integration documentation for Context7 MCP server access\n- Enhanced integrations documentation with visual slider component and new asset logos\n- Restructured documentation navigation from versions to tabs layout\n- Added custom CSS styling for documentation CTA buttons\n- Fixed JSON serialization mode in tool creation API"
  },
  {
    "path": "changelog/stable (main)/2025-07-04.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-04\ntags: [main]\n---\n\n# Changes for July 4, 2025\n\n- Added automatic tool execution with `auto_run_tools` parameter for enhanced agent workflows\n- Added tool recall control with `recall_tools` parameter for better conversation management\n- Implemented OpenAI-compatible tool format conversion for improved integration compatibility\n- Added support for new Anthropic tool types: computer, text editor, and bash tools\n- Enhanced tool calling system with dedicated tool runner for better performance\n- Added feature flags integration using Unleash for controlled feature rollouts\n- Improved API schema with separate input/output type definitions for better type safety\n- Enhanced prompt step parameters with tool choice, unwrap, and caching control options\n- Refactored chat API with auto-tools support and legacy code separation\n- Added comprehensive tool execution capabilities for both tasks and sessions"
  },
  {
    "path": "changelog/stable (main)/2025-07-05.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-05\ntags: [main]\n---\n\n# Changes for July 5, 2025\n\n- Added feature flags infrastructure with Unleash integration for controlled feature rollouts\n- Added auto-tools chat implementation with automatic tool execution capabilities\n- Added enhanced tool runner utilities for improved tool execution performance\n- Added parameter schema support for API call tools with JSON Schema validation\n- Added `auto_run_tools` and `recall_tools` fields to chat input for better control\n- Changed `auto_run_tools` default from `true` to `false` in prompt step definitions\n- Enhanced tool execution system with support for all tool types\n- Added modular architecture separating legacy and auto-tools implementations\n- Added comprehensive test coverage for new auto-tools functionality\n- Fixed tool metadata query column alias and improved error handling"
  },
  {
    "path": "changelog/stable (main)/2025-07-08.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-08\ntags: [main]\n---\n\n# Changes for July 8, 2025\n\n- Added gemini-2.5-pro model to LiteLLM configuration with paid tier access\n- Added gemini-2.5-flash model to LiteLLM configuration with paid tier access\n- Added comprehensive customer support tutorial showing how to build RAG-powered AI assistants\n- Added new architecture diagram SVG for improved system visualization\n- Enhanced documentation structure with new tutorial navigation\n- Updated architecture deep-dive documentation with latest system design"
  },
  {
    "path": "changelog/stable (main)/2025-07-18.md",
    "content": "---\ntitle: \"Julep AI Changelog\"\ndate: 2025-07-18\ntags: [main]\n---\n\n## Julep AI Changelog - July 18, 2025\n\n### Features\n- Enhanced LLM client to support custom API keys from user secrets\n- Added model name conversion utility for LiteLLM integration\n- Added automated workflow to sync model documentation from configuration\n- Enhanced supported models page with transparent feature comparison tables\n- Added comprehensive model capability tracking (context window, max output, tool calling, vision, audio, caching, cost tiers)\n\n### Bug Fixes\n- Fixed cartesian product bug in get_task query that caused duplicate tools\n- Re-enabled model validation in session chat rendering"
  },
  {
    "path": "cookbooks/IDEAS.md",
    "content": "<div align=\"center\" id=\"top\">\n<img src=\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\" alt=\"julep\" height=300 />\n\n<br>\n  <p>\n    <a href=\"https://dashboard.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\" alt=\"Get API Key\" height=\"28\">\n    </a>\n    <span>&nbsp;</span>\n    <a href=\"https://docs.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\" alt=\"Documentation\" height=\"28\">\n    </a>\n  </p>\n  <p>\n   <a href=\"https://www.npmjs.com/package/@julep/sdk\"><img src=\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\" alt=\"NPM Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://pypi.org/project/julep\"><img src=\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\" alt=\"PyPI - Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://hub.docker.com/u/julepai\"><img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\" alt=\"Docker Image Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://choosealicense.com/licenses/apache/\"><img src=\"https://img.shields.io/github/license/julep-ai/julep\" alt=\"GitHub License\" height=\"28\"></a>\n  </p>\n  \n  <h3>\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\">𝕏</a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\">LinkedIn</a>\n  </h3>\n</div>\n\n# Expanded Implementation Scenarios for Julep\n\nBelow are detailed implementation plans for each of the 50 scenarios using Julep's **docs**, **sessions**, **tasks**, and **executions** features. Each scenario includes a complexity rating from **1 (easiest)** to **5 (most complex)**.\n\n---\n\n### 1. Automated Customer Support Agent\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store customer data, FAQs, and troubleshooting guides.\n  - Integrate CRM documentation for accessing and updating customer information.\n\n- **Sessions:**\n  - Create a persistent session for each customer to maintain conversation context.\n  - Track interaction history to personalize support.\n\n- **Tasks:**\n  - Define tasks for handling common inquiries (e.g., order status, billing issues).\n  - Implement escalation tasks for complex issues that require human intervention.\n  - Automate ticket creation and update processes.\n\n- **Executions:**\n  - Execute tasks based on customer inputs.\n  - Monitor task executions to ensure timely responses and issue resolutions.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves integrating with external CRM systems, handling diverse query types, and maintaining contextual sessions, which increases complexity.\n\n---\n\n### 2. Smart Research Assistant\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store access to academic databases and research papers.\n  - Include summarization templates and research methodologies.\n\n- **Sessions:**\n  - Manage user-specific research sessions to track ongoing projects and queries.\n  - Maintain context for multi-step research tasks.\n\n- **Tasks:**\n  - Create tasks for searching databases, summarizing articles, and compiling reports.\n  - Implement conditional steps based on research findings.\n\n- **Executions:**\n  - Execute research tasks sequentially or in parallel.\n  - Stream execution results to provide real-time updates to the user.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires integration with academic databases, advanced summarization capabilities, and managing complex multi-step workflows.\n\n---\n\n### 3. Personal Finance Manager\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store user financial data, budgeting templates, and investment information.\n  - Integrate banking API documentation for transaction fetching.\n\n- **Sessions:**\n  - Create persistent sessions to track user financial activities over time.\n  - Maintain context for budgeting goals and financial plans.\n\n- **Tasks:**\n  - Define tasks for expense tracking, budget creation, and investment monitoring.\n  - Automate alerts for budget limits and investment opportunities.\n\n- **Executions:**\n  - Execute financial tasks based on user interactions and predefined schedules.\n  - Monitor executions to provide real-time financial advice and updates.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Needs secure integration with banking APIs, real-time data processing, and robust budgeting logic.\n\n---\n\n### 4. Content Creation Workflow\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store SEO guidelines, content templates, and style guides.\n  - Include access to keyword research tools.\n\n- **Sessions:**\n  - Manage content creation sessions to track progress and drafts.\n  - Maintain context for ongoing content projects.\n\n- **Tasks:**\n  - Create multi-step tasks for topic ideation, content drafting, SEO optimization, and scheduling.\n  - Integrate tools for grammar checking and SEO analysis.\n\n- **Executions:**\n  - Automate the execution of content creation tasks.\n  - Schedule publishing according to editorial calendars.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Involves coordinating multiple tools and steps but remains manageable with clear task definitions.\n\n---\n\n### 5. E-commerce Order Processing System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store product catalogs, inventory data, and order processing guidelines.\n  - Integrate with shipping provider APIs.\n\n- **Sessions:**\n  - Create sessions for each order to track its lifecycle.\n  - Maintain context for customer preferences and order history.\n\n- **Tasks:**\n  - Define tasks for order validation, inventory updates, payment processing, and shipment tracking.\n  - Automate customer notifications at each stage.\n\n- **Executions:**\n  - Execute order processing tasks in sequence.\n  - Monitor executions to handle exceptions like payment failures or inventory shortages.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires robust integrations with payment gateways, inventory systems, and shipping providers, along with handling various order states.\n\n---\n\n### 6. AI-Powered Personal Trainer\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store workout routines, nutritional plans, and progress tracking templates.\n  - Include integration details for fitness tracking APIs.\n\n- **Sessions:**\n  - Create individual sessions for each user to track their fitness journey.\n  - Maintain context for user goals and progress.\n\n- **Tasks:**\n  - Define tasks for generating personalized workout plans, tracking progress, and adjusting routines.\n  - Automate reminders and motivational messages.\n\n- **Executions:**\n  - Execute fitness tasks based on user inputs and scheduled routines.\n  - Monitor executions to provide real-time feedback and adjustments.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Involves personalization and integration with fitness data sources, but achievable with well-defined task workflows.\n\n---\n\n### 7. Automated Email Marketing Campaigns\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store email templates, segmentation criteria, and campaign schedules.\n  - Integrate with email marketing platforms (e.g., SendGrid, Mailchimp).\n\n- **Sessions:**\n  - Manage campaign-specific sessions to track interactions and responses.\n  - Maintain context for ongoing and past campaigns.\n\n- **Tasks:**\n  - Create tasks for email creation, scheduling, sending, and performance analysis.\n  - Automate A/B testing and content personalization.\n\n- **Executions:**\n  - Execute email campaigns based on predefined schedules and triggers.\n  - Monitor execution performance and adjust strategies accordingly.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires integration with email platforms and managing dynamic content delivery, but is straightforward with clear task definitions.\n\n---\n\n### 8. Intelligent Recruitment Assistant\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store job descriptions, candidate profiles, and evaluation criteria.\n  - Integrate with HR systems and job boards.\n\n- **Sessions:**\n  - Create sessions for each recruitment process to track candidate interactions.\n  - Maintain context for candidate status and feedback.\n\n- **Tasks:**\n  - Define tasks for resume screening, interview scheduling, and candidate communications.\n  - Automate feedback collection and report generation.\n\n- **Executions:**\n  - Execute recruitment tasks based on candidate actions and application stages.\n  - Monitor executions to ensure timely processing and compliance.\n\n**Complexity Rating:** ★★★★★\n\n**Explanation:** Involves complex integrations with HR systems, handling diverse candidate data, and ensuring compliance with recruitment processes.\n\n---\n\n### 9. Smart Home Automation Controller\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store device configurations, automation rules, and user preferences.\n  - Integrate with smart home device APIs (e.g., Philips Hue, Nest).\n\n- **Sessions:**\n  - Manage user-specific sessions to track home automation settings.\n  - Maintain context for user routines and preferences.\n\n- **Tasks:**\n  - Create tasks for device control, routine scheduling, and energy monitoring.\n  - Automate actions based on triggers like time, occupancy, or environmental changes.\n\n- **Executions:**\n  - Execute home automation tasks in real-time or based on schedules.\n  - Monitor executions to ensure devices respond correctly and adjust settings as needed.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires integration with multiple smart devices and managing dynamic automation rules, increasing system complexity.\n\n---\n\n### 10. Automated Legal Document Analyzer\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store legal templates, compliance guidelines, and case studies.\n  - Integrate with legal databases and document repositories.\n\n- **Sessions:**\n  - Create sessions for each document analysis to track progress and findings.\n  - Maintain context for specific legal requirements and clauses.\n\n- **Tasks:**\n  - Define tasks for document ingestion, key information extraction, compliance checking, and summarization.\n  - Automate flagging of non-compliant sections and suggest necessary amendments.\n\n- **Executions:**\n  - Execute document analysis tasks sequentially or in parallel.\n  - Monitor executions to ensure accuracy and compliance with legal standards.\n\n**Complexity Rating:** ★★★★★\n\n**Explanation:** Involves advanced natural language processing, integration with legal databases, and ensuring compliance with intricate legal standards.\n\n---\n\n### 11. Personalized Learning Assistant\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store educational content, learning paths, and assessment criteria.\n  - Integrate with educational platforms and resources.\n\n- **Sessions:**\n  - Create individual learning sessions to track user progress and preferences.\n  - Maintain context for personalized learning paths and goals.\n\n- **Tasks:**\n  - Define tasks for content recommendation, quiz generation, progress tracking, and feedback provision.\n  - Automate adjustments to learning paths based on performance.\n\n- **Executions:**\n  - Execute learning tasks based on user interactions and progress.\n  - Monitor executions to provide real-time feedback and adjust learning strategies.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires personalization algorithms, integration with educational content sources, and dynamic adaptation to user progress.\n\n---\n\n### 12. AI-Driven Social Media Manager\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store social media strategies, content calendars, and engagement guidelines.\n  - Integrate with social media APIs (e.g., Twitter, Facebook, LinkedIn).\n\n- **Sessions:**\n  - Manage campaign-specific sessions to track posts, engagements, and analytics.\n  - Maintain context for ongoing and scheduled campaigns.\n\n- **Tasks:**\n  - Create tasks for content creation, scheduling, posting, and performance analysis.\n  - Automate engagement responses and A/B testing of content.\n\n- **Executions:**\n  - Execute social media tasks based on schedules and real-time engagement triggers.\n  - Monitor executions to optimize performance and adjust strategies.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves integration with multiple social media platforms, dynamic content management, and real-time engagement handling.\n\n---\n\n### 13. Automated Travel Itinerary Planner\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store travel guides, destination information, and booking APIs.\n  - Integrate with flight, hotel, and transportation service APIs.\n\n- **Sessions:**\n  - Create travel-specific sessions to track itinerary progress and user preferences.\n  - Maintain context for personalized travel plans and updates.\n\n- **Tasks:**\n  - Define tasks for destination research, booking accommodations and transportation, and itinerary scheduling.\n  - Automate real-time updates and notifications during trips.\n\n- **Executions:**\n  - Execute travel planning tasks based on user inputs and predefined schedules.\n  - Monitor executions to handle changes and provide timely updates.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires integration with travel service APIs and managing dynamic itinerary changes, which adds moderate complexity.\n\n---\n\n### 14. AI-Powered Inventory Management System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store inventory data, supplier information, and reordering guidelines.\n  - Integrate with inventory tracking systems and supplier APIs.\n\n- **Sessions:**\n  - Manage inventory sessions to monitor stock levels and reorder statuses.\n  - Maintain context for inventory forecasts and demand trends.\n\n- **Tasks:**\n  - Create tasks for stock monitoring, demand forecasting, automatic reordering, and supplier communication.\n  - Automate alerts for low stock levels and order confirmations.\n\n- **Executions:**\n  - Execute inventory management tasks in real-time or based on schedules.\n  - Monitor executions to ensure accurate stock levels and timely reorders.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires real-time inventory tracking, predictive analytics for demand forecasting, and reliable integration with supplier systems.\n\n---\n\n### 15. Intelligent Health Monitoring System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store health metrics templates, medical guidelines, and user health data.\n  - Integrate with health tracking devices and APIs (e.g., Fitbit, Apple Health).\n\n- **Sessions:**\n  - Create sessions for each user to track their health metrics and progress.\n  - Maintain context for personalized health goals and alerts.\n\n- **Tasks:**\n  - Define tasks for data collection, health metric analysis, trend monitoring, and alert notifications.\n  - Automate health insights and recommendations based on data.\n\n- **Executions:**\n  - Execute health monitoring tasks continuously or at scheduled intervals.\n  - Monitor executions to provide real-time health alerts and advice.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires integration with diverse health tracking devices, real-time data processing, and ensuring data privacy and accuracy.\n\n---\n\n### 16. Automated Content Moderation Tool\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store community guidelines, content policies, and moderation rules.\n  - Integrate with content platforms (e.g., forums, social media).\n\n- **Sessions:**\n  - Manage moderation sessions to track content reviews and decisions.\n  - Maintain context for specific moderation cases and user histories.\n\n- **Tasks:**\n  - Create tasks for content ingestion, automated screening, manual review, and action enforcement.\n  - Automate flagging of inappropriate content and notifying users of violations.\n\n- **Executions:**\n  - Execute content moderation tasks in real-time or batch processing.\n  - Monitor executions to ensure compliance and handle escalations.\n\n**Complexity Rating:** ★★★★★\n\n**Explanation:** Involves sophisticated content analysis, balancing automation with manual oversight, and ensuring adherence to diverse content policies.\n\n---\n\n### 17. AI-Powered Resume Builder\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store resume templates, industry-specific keywords, and formatting guidelines.\n  - Integrate with LinkedIn and other professional platforms for data fetching.\n\n- **Sessions:**\n  - Create user-specific sessions to track resume building progress.\n  - Maintain context for personalized content and formatting preferences.\n\n- **Tasks:**\n  - Define tasks for data collection, content suggestion, resume formatting, and final export.\n  - Automate style checks and consistency validations.\n\n- **Executions:**\n  - Execute resume building tasks based on user inputs and selections.\n  - Monitor executions to provide real-time feedback and suggestions.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires integration with professional data sources and implementing dynamic content generation and formatting.\n\n---\n\n### 18. Smart Event Management System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store event templates, scheduling guidelines, and registration forms.\n  - Integrate with calendar and email platforms.\n\n- **Sessions:**\n  - Manage event-specific sessions to track registrations, schedules, and attendee interactions.\n  - Maintain context for event updates and follow-ups.\n\n- **Tasks:**\n  - Create tasks for event creation, attendee registration, schedule management, and post-event follow-ups.\n  - Automate reminders, notifications, and feedback collection.\n\n- **Executions:**\n  - Execute event management tasks based on schedules and attendee actions.\n  - Monitor executions to handle registrations and event logistics seamlessly.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves coordinating multiple aspects of event planning, handling real-time registrations, and ensuring smooth execution logistics.\n\n---\n\n### 19. Automated Survey Analyzer\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store survey templates, question types, and analysis methodologies.\n  - Integrate with survey distribution platforms (e.g., SurveyMonkey, Google Forms).\n\n- **Sessions:**\n  - Create sessions for each survey to track responses and analysis progress.\n  - Maintain context for specific survey objectives and parameters.\n\n- **Tasks:**\n  - Define tasks for survey distribution, data collection, sentiment analysis, and report generation.\n  - Automate data visualization and trend identification.\n\n- **Executions:**\n  - Execute survey analysis tasks upon survey completion.\n  - Monitor executions to provide timely and accurate insights.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires integration with survey platforms and implementing effective data analysis and visualization techniques.\n\n---\n\n### 20. AI-Driven Project Management Assistant\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store project templates, task guidelines, and progress tracking tools.\n  - Integrate with project management platforms (e.g., Jira, Trello).\n\n- **Sessions:**\n  - Manage project-specific sessions to track tasks, milestones, and team interactions.\n  - Maintain context for project goals and progress updates.\n\n- **Tasks:**\n  - Create tasks for task breakdown, assignment, progress tracking, and status reporting.\n  - Automate notifications for deadlines and task completions.\n\n- **Executions:**\n  - Execute project management tasks based on project timelines and team inputs.\n  - Monitor executions to ensure projects stay on track and within scope.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves integration with diverse project management tools, handling dynamic task assignments, and ensuring effective progress tracking.\n\n---\n\n### 21. Intelligent Document Summarizer\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store access to large documents, research papers, and reports.\n  - Include summarization algorithms and templates.\n\n- **Sessions:**\n  - Create sessions for each document summarization task.\n  - Maintain context for document sections and summarization preferences.\n\n- **Tasks:**\n  - Define tasks for document ingestion, key point extraction, and summary generation.\n  - Automate quality checks and user-specific summary adjustments.\n\n- **Executions:**\n  - Execute document summarization tasks efficiently.\n  - Monitor executions to ensure accurate and concise summaries.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires advanced natural language processing capabilities and efficient handling of large document data.\n\n---\n\n### 22. Automated Feedback Collection and Analysis\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store feedback forms, analysis templates, and reporting guidelines.\n  - Integrate with feedback collection platforms (e.g., Typeform, Google Forms).\n\n- **Sessions:**\n  - Manage feedback-specific sessions to track responses and analysis progress.\n  - Maintain context for feedback sources and analysis objectives.\n\n- **Tasks:**\n  - Create tasks for feedback distribution, data collection, sentiment analysis, and insight generation.\n  - Automate categorization and prioritization of feedback.\n\n- **Executions:**\n  - Execute feedback analysis tasks promptly upon data collection.\n  - Monitor executions to provide actionable insights and improvement strategies.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Involves integrating with feedback platforms and implementing effective sentiment analysis and categorization.\n\n---\n\n### 23. AI-Powered Language Translator\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store language dictionaries, translation models, and formatting guidelines.\n  - Integrate with translation APIs (e.g., Google Translate, DeepL).\n\n- **Sessions:**\n  - Create translation-specific sessions to track user preferences and translation history.\n  - Maintain context for ongoing translation projects.\n\n- **Tasks:**\n  - Define tasks for text ingestion, language detection, translation processing, and quality assurance.\n  - Automate post-translation formatting and localization adjustments.\n\n- **Executions:**\n  - Execute translation tasks in real-time or batch mode.\n  - Monitor executions to ensure accuracy and contextual relevance.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires integration with robust translation APIs and handling nuances of different languages and contexts.\n\n---\n\n### 24. Smart Appointment Scheduler\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store scheduling templates, availability guidelines, and notification templates.\n  - Integrate with calendar platforms (e.g., Google Calendar, Outlook).\n\n- **Sessions:**\n  - Manage appointment-specific sessions to track scheduling progress and attendee interactions.\n  - Maintain context for user availability and preferences.\n\n- **Tasks:**\n  - Create tasks for availability checking, meeting scheduling, sending reminders, and handling cancellations.\n  - Automate conflict detection and resolution.\n\n- **Executions:**\n  - Execute scheduling tasks based on user inputs and calendar data.\n  - Monitor executions to ensure appointments are set correctly and notifications are sent.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Involves integration with calendar systems and implementing conflict resolution logic, which adds moderate complexity.\n\n---\n\n### 25. Automated Inventory Auditor\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store inventory audit templates, reconciliation guidelines, and reporting formats.\n  - Integrate with inventory management systems and databases.\n\n- **Sessions:**\n  - Create auditing sessions to track audit schedules and findings.\n  - Maintain context for different inventory categories and audit criteria.\n\n- **Tasks:**\n  - Define tasks for data extraction, discrepancy detection, reconciliation processes, and report generation.\n  - Automate audit scheduling and notification of audit results.\n\n- **Executions:**\n  - Execute inventory audit tasks periodically or on-demand.\n  - Monitor executions to ensure accurate and timely audits.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires reliable data integration and robust discrepancy detection mechanisms to handle complex inventory data.\n\n---\n\n### 26. AI-Driven Competitive Analysis Tool\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store competitor profiles, market analysis frameworks, and data sources.\n  - Integrate with market research APIs and competitor websites.\n\n- **Sessions:**\n  - Manage competitive analysis sessions to track data collection and analysis progress.\n  - Maintain context for specific market segments and competitive factors.\n\n- **Tasks:**\n  - Create tasks for data scraping, trend analysis, SWOT analysis, and report generation.\n  - Automate the aggregation and visualization of competitive data.\n\n- **Executions:**\n  - Execute competitive analysis tasks on a scheduled basis.\n  - Monitor executions to provide up-to-date insights and strategic recommendations.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves complex data scraping, accurate trend analysis, and maintaining up-to-date competitive insights, increasing overall complexity.\n\n---\n\n### 27. Smart Recipe Generator\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store ingredient databases, recipe templates, and dietary guidelines.\n  - Integrate with nutrition APIs and grocery databases.\n\n- **Sessions:**\n  - Create user-specific sessions to track dietary preferences and past recipes.\n  - Maintain context for ingredient availability and nutritional goals.\n\n- **Tasks:**\n  - Define tasks for ingredient analysis, recipe generation, nutritional calculation, and grocery list creation.\n  - Automate recipe suggestions based on user inputs and constraints.\n\n- **Executions:**\n  - Execute recipe generation tasks in real-time based on user requests.\n  - Monitor executions to ensure recipe accuracy and adherence to dietary needs.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires integration with nutrition and grocery APIs and implementing intelligent recipe generation logic.\n\n---\n\n### 28. Automated Video Content Creator\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store video script templates, editing guidelines, and publishing schedules.\n  - Integrate with video editing and hosting platforms (e.g., Adobe Premiere, YouTube).\n\n- **Sessions:**\n  - Manage video creation sessions to track script development, editing stages, and publishing.\n  - Maintain context for ongoing video projects and collaboration.\n\n- **Tasks:**\n  - Create tasks for script generation, video editing, thumbnail creation, and publishing.\n  - Automate content review and approval workflows.\n\n- **Executions:**\n  - Execute video creation tasks based on project timelines.\n  - Monitor executions to ensure timely releases and quality standards.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves integration with multiple video tools, managing creative workflows, and ensuring high-quality content production.\n\n---\n\n### 29. AI-Powered News Aggregator\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store news source lists, categorization templates, and summarization guidelines.\n  - Integrate with news APIs (e.g., NewsAPI, RSS feeds).\n\n- **Sessions:**\n  - Create user-specific sessions to track news preferences and reading history.\n  - Maintain context for personalized news feeds and topics of interest.\n\n- **Tasks:**\n  - Define tasks for news scraping, categorization, summarization, and personalization.\n  - Automate feed generation and delivery based on user preferences.\n\n- **Executions:**\n  - Execute news aggregation tasks periodically.\n  - Monitor executions to ensure timely and relevant news delivery.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires efficient news scraping, accurate categorization, and personalized summarization, but is manageable with clear task workflows.\n\n---\n\n### 30. Intelligent Appointment Follow-Up System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store follow-up templates, feedback forms, and communication guidelines.\n  - Integrate with CRM and email platforms.\n\n- **Sessions:**\n  - Manage follow-up sessions to track appointments and subsequent communications.\n  - Maintain context for previous interactions and follow-up actions.\n\n- **Tasks:**\n  - Create tasks for sending follow-up emails, collecting feedback, and scheduling future appointments.\n  - Automate reminder notifications and feedback analysis.\n\n- **Executions:**\n  - Execute follow-up tasks based on appointment completions.\n  - Monitor executions to ensure timely and effective communications.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Involves integration with CRM systems and implementing automated communication workflows, adding moderate complexity.\n\n---\n\n### 31. Automated Compliance Monitoring Tool\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store regulatory guidelines, compliance checklists, and reporting templates.\n  - Integrate with internal systems and regulatory databases.\n\n- **Sessions:**\n  - Create compliance-specific sessions to track monitoring activities and audit trails.\n  - Maintain context for various compliance standards and organizational policies.\n\n- **Tasks:**\n  - Define tasks for continuous monitoring, policy enforcement, and compliance reporting.\n  - Automate detection of non-compliant activities and trigger corrective actions.\n\n- **Executions:**\n  - Execute compliance monitoring tasks in real-time.\n  - Monitor executions to ensure ongoing adherence to regulations and standards.\n\n**Complexity Rating:** ★★★★★\n\n**Explanation:** Requires comprehensive integration with organizational systems, robust monitoring mechanisms, and ensuring adherence to multifaceted regulatory requirements.\n\n---\n\n### 32. AI-Powered Personal Shopper\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store product catalogs, user preference data, and recommendation algorithms.\n  - Integrate with e-commerce APIs (e.g., Amazon, Shopify).\n\n- **Sessions:**\n  - Manage shopping sessions to track user preferences and purchase history.\n  - Maintain context for personalized product recommendations.\n\n- **Tasks:**\n  - Create tasks for product suggestion, wishlist management, and deal notifications.\n  - Automate price comparisons and availability checks.\n\n- **Executions:**\n  - Execute personal shopping tasks based on user inputs and behavior.\n  - Monitor executions to provide timely recommendations and alerts.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves integration with multiple e-commerce platforms, implementing personalized recommendation logic, and handling real-time deal tracking.\n\n---\n\n### 33. Smart Content Personalization Engine\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store content variants, personalization rules, and user segmentation data.\n  - Integrate with website CMS and analytics platforms.\n\n- **Sessions:**\n  - Create user-specific sessions to track interactions and preferences.\n  - Maintain context for personalized content delivery.\n\n- **Tasks:**\n  - Define tasks for content analysis, user behavior tracking, and personalized content delivery.\n  - Automate A/B testing and content optimization based on performance metrics.\n\n- **Executions:**\n  - Execute content personalization tasks in real-time.\n  - Monitor executions to adjust personalization strategies dynamically.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires real-time user behavior tracking, dynamic content delivery, and continuous optimization based on analytics, increasing system complexity.\n\n---\n\n### 34. Automated Debt Collection Agent\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store debt agreements, payment schedules, and communication templates.\n  - Integrate with financial systems and payment gateways.\n\n- **Sessions:**\n  - Manage debt collection sessions to track debtor interactions and payment statuses.\n  - Maintain context for individual debtors and their payment histories.\n\n- **Tasks:**\n  - Create tasks for sending payment reminders, negotiating payment plans, and issuing notifications.\n  - Automate follow-ups and escalation procedures for delinquent accounts.\n\n- **Executions:**\n  - Execute debt collection tasks based on payment statuses and schedules.\n  - Monitor executions to ensure effective communication and resolution.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves sensitive financial data handling, integration with payment systems, and implementing automated negotiation workflows.\n\n---\n\n### 35. AI-Driven Talent Matching System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store job descriptions, candidate profiles, and matching criteria.\n  - Integrate with job boards and professional networking platforms.\n\n- **Sessions:**\n  - Create sessions for each matching process to track candidate-job pairings.\n  - Maintain context for specific job requirements and candidate qualifications.\n\n- **Tasks:**\n  - Define tasks for candidate screening, skills matching, and recommendation generation.\n  - Automate notifications to both candidates and employers regarding match statuses.\n\n- **Executions:**\n  - Execute talent matching tasks based on incoming job postings and candidate applications.\n  - Monitor executions to ensure accurate and timely matches.\n\n**Complexity Rating:** ★★★★★\n\n**Explanation:** Requires sophisticated matching algorithms, integration with diverse data sources, and handling dynamic job and candidate data.\n\n---\n\n### 36. Intelligent Expense Reporting Tool\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store expense categories, reimbursement policies, and reporting templates.\n  - Integrate with financial systems and expense tracking APIs.\n\n- **Sessions:**\n  - Manage expense reporting sessions to track submissions and approvals.\n  - Maintain context for individual employee expenses and budget limits.\n\n- **Tasks:**\n  - Create tasks for expense submission, approval workflows, and reimbursement processing.\n  - Automate validation checks and compliance with policies.\n\n- **Executions:**\n  - Execute expense reporting tasks based on submission triggers and approval workflows.\n  - Monitor executions to ensure timely reimbursements and policy adherence.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires integration with financial systems, implementing approval workflows, and ensuring compliance with expense policies.\n\n---\n\n### 37. Automated Meeting Minutes Recorder\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store meeting agendas, transcription templates, and summary guidelines.\n  - Integrate with audio transcription services (e.g., Otter.ai, Google Speech-to-Text).\n\n- **Sessions:**\n  - Create meeting-specific sessions to track transcription and summarization progress.\n  - Maintain context for meeting topics and participant interactions.\n\n- **Tasks:**\n  - Define tasks for audio ingestion, transcription, summary generation, and distribution.\n  - Automate the extraction of action items and key decisions.\n\n- **Executions:**\n  - Execute transcription and summarization tasks in real-time or post-meeting.\n  - Monitor executions to ensure accurate recordings and timely distribution.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires reliable audio transcription integration and effective summarization techniques, but manageable with clear task definitions.\n\n---\n\n### 38. AI-Driven Content Recommendation System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store user profiles, content metadata, and recommendation algorithms.\n  - Integrate with content management systems and user behavior analytics.\n\n- **Sessions:**\n  - Manage user-specific sessions to track interactions and preference changes.\n  - Maintain context for personalized content delivery.\n\n- **Tasks:**\n  - Define tasks for content analysis, user behavior tracking, and recommendation generation.\n  - Automate personalization based on real-time user interactions.\n\n- **Executions:**\n  - Execute content recommendation tasks in real-time.\n  - Monitor executions to refine recommendation accuracy and relevance.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves real-time data processing, advanced recommendation algorithms, and integration with multiple content sources.\n\n---\n\n### 39. Smart Time Tracking Assistant\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store time tracking templates, productivity guidelines, and reporting formats.\n  - Integrate with productivity tools (e.g., Toggl, Clockify).\n\n- **Sessions:**\n  - Create user-specific sessions to track time spent on tasks and projects.\n  - Maintain context for task prioritization and productivity goals.\n\n- **Tasks:**\n  - Define tasks for time logging, productivity analysis, and report generation.\n  - Automate reminders for time tracking and productivity tips based on usage patterns.\n\n- **Executions:**\n  - Execute time tracking tasks continuously or based on user actions.\n  - Monitor executions to provide real-time productivity insights and suggestions.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires integration with time tracking tools and implementing effective productivity analysis logic.\n\n---\n\n### 40. Automated Webinar Hosting Assistant\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store webinar schedules, registration forms, and hosting guidelines.\n  - Integrate with webinar platforms (e.g., Zoom, WebinarJam).\n\n- **Sessions:**\n  - Manage webinar-specific sessions to track registrations, attendee interactions, and follow-ups.\n  - Maintain context for webinar topics and participant engagement.\n\n- **Tasks:**\n  - Create tasks for webinar scheduling, participant management, live interactions, and post-webinar follow-ups.\n  - Automate reminders, thank-you emails, and feedback collection.\n\n- **Executions:**\n  - Execute webinar hosting tasks based on schedules and participant actions.\n  - Monitor executions to ensure smooth webinar operations and effective follow-ups.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves integration with webinar platforms, managing live interactions, and handling post-event processes seamlessly.\n\n---\n\n### 41. AI-Powered Inventory Forecasting Tool\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store sales data, forecasting models, and inventory guidelines.\n  - Integrate with sales and inventory tracking systems.\n\n- **Sessions:**\n  - Create forecasting sessions to track sales trends and inventory predictions.\n  - Maintain context for seasonal factors and market conditions affecting inventory.\n\n- **Tasks:**\n  - Define tasks for data collection, trend analysis, prediction model execution, and report generation.\n  - Automate alerts for predicted stock shortages or surpluses.\n\n- **Executions:**\n  - Execute forecasting tasks periodically based on sales data updates.\n  - Monitor executions to refine prediction accuracy and adjust inventory strategies.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires advanced predictive analytics, integration with sales systems, and handling dynamic market conditions influencing inventory.\n\n---\n\n### 42. Smart Contract Management System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store smart contract templates, execution guidelines, and compliance rules.\n  - Integrate with blockchain platforms (e.g., Ethereum, Hyperledger).\n\n- **Sessions:**\n  - Manage contract-specific sessions to track creation, execution, and monitoring.\n  - Maintain context for contract terms and participant interactions.\n\n- **Tasks:**\n  - Create tasks for contract creation, deployment, execution monitoring, and compliance checks.\n  - Automate notifications for contract milestones and compliance alerts.\n\n- **Executions:**\n  - Execute smart contract tasks based on blockchain events and predefined triggers.\n  - Monitor executions to ensure contract integrity and compliance.\n\n**Complexity Rating:** ★★★★★\n\n**Explanation:** Involves blockchain integration, ensuring smart contract security, and managing complex execution and compliance workflows.\n\n---\n\n### 43. Automated Knowledge Base Updater\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store knowledge base articles, update guidelines, and categorization rules.\n  - Integrate with content management systems and information sources.\n\n- **Sessions:**\n  - Create knowledge base sessions to track updates, revisions, and user queries.\n  - Maintain context for content accuracy and relevance.\n\n- **Tasks:**\n  - Define tasks for content ingestion, information extraction, categorization, and publishing.\n  - Automate periodic reviews and updates based on new information sources.\n\n- **Executions:**\n  - Execute knowledge base update tasks as new content becomes available.\n  - Monitor executions to ensure timely and accurate information updates.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires efficient content ingestion, accurate information extraction, and seamless integration with knowledge management systems.\n\n---\n\n### 44. AI-Driven Fraud Detection System\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store fraud detection algorithms, monitoring guidelines, and incident response protocols.\n  - Integrate with financial transaction systems and security APIs.\n\n- **Sessions:**\n  - Manage fraud detection sessions to track suspicious activities and investigations.\n  - Maintain context for user behavior patterns and anomaly detection.\n\n- **Tasks:**\n  - Create tasks for real-time transaction monitoring, anomaly detection, incident logging, and alerting.\n  - Automate response actions like freezing accounts or notifying security teams.\n\n- **Executions:**\n  - Execute fraud detection tasks continuously based on transaction flows.\n  - Monitor executions to ensure timely detection and response to fraudulent activities.\n\n**Complexity Rating:** ★★★★★\n\n**Explanation:** Involves real-time data processing, sophisticated anomaly detection algorithms, and ensuring robust security measures.\n\n---\n\n### 45. Intelligent Personal Diary Assistant\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store diary templates, emotional analysis guidelines, and reflection prompts.\n  - Integrate with sentiment analysis APIs.\n\n- **Sessions:**\n  - Create user-specific sessions to track daily entries and emotional states.\n  - Maintain context for personal growth and mood trends.\n\n- **Tasks:**\n  - Define tasks for daily entry prompts, sentiment analysis, and insight generation.\n  - Automate privacy controls and data encryption for secure diary storage.\n\n- **Executions:**\n  - Execute diary assistant tasks daily based on user inputs.\n  - Monitor executions to provide personalized insights and growth tracking.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Requires integration with sentiment analysis tools and ensuring secure data handling, but manageable with well-defined workflows.\n\n---\n\n### 46. Automated Language Learning Tutor\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store language lessons, exercise templates, and feedback guidelines.\n  - Integrate with language processing APIs and educational resources.\n\n- **Sessions:**\n  - Manage learning sessions to track user progress and performance.\n  - Maintain context for personalized lesson plans and feedback.\n\n- **Tasks:**\n  - Create tasks for lesson delivery, exercise generation, progress tracking, and feedback provision.\n  - Automate adaptive learning paths based on user performance.\n\n- **Executions:**\n  - Execute language learning tasks based on user interactions and learning schedules.\n  - Monitor executions to adjust learning strategies and provide real-time feedback.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves adaptive learning algorithms, integration with language processing tools, and personalized content delivery.\n\n---\n\n### 47. AI-Powered Budgeting Tool for Businesses\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store budgeting templates, financial guidelines, and reporting formats.\n  - Integrate with accounting systems and financial data sources.\n\n- **Sessions:**\n  - Create budgeting sessions to track financial planning and expenditure.\n  - Maintain context for organizational financial goals and constraints.\n\n- **Tasks:**\n  - Define tasks for budget creation, expenditure tracking, financial forecasting, and report generation.\n  - Automate alerts for budget overruns and financial goal assessments.\n\n- **Executions:**\n  - Execute budgeting tasks based on financial data updates and planning cycles.\n  - Monitor executions to ensure accurate financial tracking and reporting.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires integration with accounting systems, accurate financial forecasting, and robust budgeting logic to handle business complexities.\n\n---\n\n### 48. Smart Compliance Documentation Generator\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store compliance templates, regulatory guidelines, and documentation standards.\n  - Integrate with regulatory databases and internal policy systems.\n\n- **Sessions:**\n  - Manage compliance documentation sessions to track document creation and updates.\n  - Maintain context for specific regulatory requirements and organizational policies.\n\n- **Tasks:**\n  - Create tasks for document generation, compliance checking, format validation, and publishing.\n  - Automate updates based on regulatory changes and policy revisions.\n\n- **Executions:**\n  - Execute compliance documentation tasks as needed or on a schedule.\n  - Monitor executions to ensure documents meet all compliance standards.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Involves dynamic document generation, adherence to detailed regulatory standards, and ensuring continuous updates based on regulatory changes.\n\n---\n\n### 49. Automated Product Recommendation Engine\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store product catalogs, user behavior data, and recommendation algorithms.\n  - Integrate with e-commerce platforms and user analytics tools.\n\n- **Sessions:**\n  - Create user-specific sessions to track interactions and preferences.\n  - Maintain context for personalized recommendation accuracy.\n\n- **Tasks:**\n  - Define tasks for data collection, behavior analysis, recommendation generation, and user feedback integration.\n  - Automate real-time recommendations based on user actions and trends.\n\n- **Executions:**\n  - Execute recommendation tasks in real-time to provide instant suggestions.\n  - Monitor executions to refine algorithms and improve recommendation relevance.\n\n**Complexity Rating:** ★★★★☆\n\n**Explanation:** Requires sophisticated recommendation algorithms, real-time data processing, and continuous refinement based on user feedback.\n\n---\n\n### 50. Intelligent Event Feedback Analyzer\n\n**Implementation Using Julep:**\n\n- **Docs:**\n  - Store feedback forms, analysis templates, and reporting standards.\n  - Integrate with event platforms and feedback collection tools.\n\n- **Sessions:**\n  - Manage feedback-specific sessions to track responses and analysis progress.\n  - Maintain context for event-specific feedback and improvement areas.\n\n- **Tasks:**\n  - Create tasks for feedback collection, sentiment analysis, trend identification, and report generation.\n  - Automate the extraction of actionable insights and improvement suggestions.\n\n- **Executions:**\n  - Execute feedback analysis tasks post-event.\n  - Monitor executions to ensure accurate and timely feedback processing and reporting.\n\n**Complexity Rating:** ★★★☆☆\n\n**Explanation:** Involves integrating with feedback collection tools and implementing effective sentiment analysis and trend identification mechanisms.\n\n---\n\n# Complexity and Difficulty Ratings\n\nThe scenarios have been rated based on the number of integrated features, required integrations, and overall system complexity. Here's a quick overview:\n\n- **★☆☆☆☆ (1/5): Easiest**\n- **★★☆☆☆ (2/5): Low Complexity**\n- **★★★☆☆ (3/5): Moderate Complexity**\n- **★★★★☆ (4/5): High Complexity**\n- **★★★★★ (5/5): Most Complex**\n\n| **Scenario**                                      | **Complexity Rating** |\n|---------------------------------------------------|-----------------------|\n| 1. Automated Customer Support Agent              | ★★★★☆                |\n| 2. Smart Research Assistant                       | ★★★★☆                |\n| 3. Personal Finance Manager                       | ★★★☆☆                |\n| 4. Content Creation Workflow                      | ★★★☆☆                |\n| 5. E-commerce Order Processing System             | ★★★★☆                |\n| 6. AI-Powered Personal Trainer                    | ★★★☆☆                |\n| 7. Automated Email Marketing Campaigns            | ★★★☆☆                |\n| 8. Intelligent Recruitment Assistant              | ★★★★★                |\n| 9. Smart Home Automation Controller               | ★★★★☆                |\n| 10. Automated Legal Document Analyzer             | ★★★★★                |\n| 11. Personalized Learning Assistant               | ★★★★☆                |\n| 12. AI-Driven Social Media Manager                | ★★★★☆                |\n| 13. Automated Travel Itinerary Planner            | ★★★☆☆                |\n| 14. AI-Powered Inventory Management System        | ★★★★☆                |\n| 15. Intelligent Health Monitoring System          | ★★★★☆                |\n| 16. Automated Content Moderation Tool             | ★★★★★                |\n| 17. AI-Powered Resume Builder                     | ★★★☆☆                |\n| 18. Smart Event Management System                 | ★★★★☆                |\n| 19. Automated Survey Analyzer                     | ★★★☆☆                |\n| 20. AI-Driven Project Management Assistant        | ★★★★☆                |\n| 21. Intelligent Document Summarizer               | ★★★★☆                |\n| 22. Automated Feedback Collection and Analysis    | ★★★☆☆                |\n| 23. AI-Powered Language Translator                | ★★★☆☆                |\n| 24. Smart Appointment Scheduler                   | ★★★☆☆                |\n| 25. Automated Inventory Auditor                   | ★★★★☆                |\n| 26. AI-Driven Competitive Analysis Tool           | ★★★★☆                |\n| 27. Smart Recipe Generator                        | ★★★☆☆                |\n| 28. Automated Video Content Creator               | ★★★★☆                |\n| 29. AI-Powered News Aggregator                    | ★★★☆☆                |\n| 30. Intelligent Appointment Follow-Up System      | ★★★☆☆                |\n| 31. Automated Compliance Monitoring Tool          | ★★★★★                |\n| 32. AI-Powered Personal Shopper                   | ★★★★☆                |\n| 33. Smart Content Personalization Engine          | ★★★★☆                |\n| 34. Automated Debt Collection Agent               | ★★★★☆                |\n| 35. AI-Driven Talent Matching System              | ★★★★★                |\n| 36. Intelligent Expense Reporting Tool            | ★★★★☆                |\n| 37. Automated Meeting Minutes Recorder            | ★★★☆☆                |\n| 38. AI-Driven Content Recommendation System       | ★★★★☆                |\n| 39. Smart Time Tracking Assistant                 | ★★★☆☆                |\n| 40. Automated Webinar Hosting Assistant           | ★★★★☆                |\n| 41. AI-Powered Inventory Forecasting Tool         | ★★★★☆                |\n| 42. Smart Contract Management System              | ★★★★★                |\n| 43. Automated Knowledge Base Updater              | ★★★★☆                |\n| 44. AI-Driven Fraud Detection System              | ★★★★★                |\n| 45. Intelligent Personal Diary Assistant          | ★★★☆☆                |\n| 46. Automated Language Learning Tutor             | ★★★★☆                |\n| 47. AI-Powered Budgeting Tool for Businesses      | ★★★★☆                |\n| 48. Smart Compliance Documentation Generator      | ★★★★☆                |\n| 49. Automated Product Recommendation Engine        | ★★★★☆                |\n| 50. Intelligent Event Feedback Analyzer           | ★★★☆☆                |\n\n---\n\n# Conclusion\n\nThese 50 scenarios showcase the versatility and power of Julep's **docs**, **sessions**, **tasks**, and **executions** features in automating and enhancing various business and personal workflows. Depending on your specific needs and available integrations, these scenarios can be tailored to create efficient, intelligent, and scalable solutions.\n\nFeel free to explore these scenarios, adapt them to your use cases, and contribute to expanding Julep's capabilities further!"
  },
  {
    "path": "cookbooks/README.md",
    "content": "<div align=\"center\" id=\"top\">\n<img src=\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\" alt=\"julep\" height=300 />\n\n<br>\n  <p>\n    <a href=\"https://dashboard.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\" alt=\"Get API Key\" height=\"28\">\n    </a>\n    <span>&nbsp;</span>\n    <a href=\"https://docs.julep.ai\">\n      <img src=\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\" alt=\"Documentation\" height=\"28\">\n    </a>\n  </p>\n  <p>\n   <a href=\"https://www.npmjs.com/package/@julep/sdk\"><img src=\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\" alt=\"NPM Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://pypi.org/project/julep\"><img src=\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\" alt=\"PyPI - Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://hub.docker.com/u/julepai\"><img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\" alt=\"Docker Image Version\" height=\"28\"></a>\n    <span>&nbsp;</span>\n    <a href=\"https://choosealicense.com/licenses/apache/\"><img src=\"https://img.shields.io/github/license/julep-ai/julep\" alt=\"GitHub License\" height=\"28\"></a>\n  </p>\n  \n  <h3>\n    <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n    ·\n    <a href=\"https://x.com/julep_ai\" rel=\"dofollow\">𝕏</a>\n    ·\n    <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\">LinkedIn</a>\n  </h3>\n</div>\n\n# Julep AI - Notebook Overview\n\nWelcome to the **Julep AI Notebook Collection**! This directory contains a set of Jupyter notebooks designed to showcase various AI and automation tasks using Julep's features.\n\nEach notebook explores a unique use case, demonstrating different aspects of Julep's capabilities. Below is a quick overview of the notebooks, their purpose, and a link to run each of them on Google Colab.\n\n\n## Basics Series\n\n| **Notebook Name** | **Colab Link** | **Description** | **Implemented** |\n|------------------ |--------------- |----------------- |----------------- |\n| `01-Hello-Agent.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/01-Hello-Agent.ipynb) | Create a simple agent and chat with it | Yes |\n| `02-Simple-Task.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/02-Simple-Task.ipynb) | Define and run a basic task | Yes |\n| `03-Adding-Tools.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/03-Adding-Tools.ipynb) | Attach a tool to the agent | Yes |\n| `04-Parallel-Steps.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/04-Parallel-Steps.ipynb) | Execute steps in parallel | Yes |\n| `05-RAG-and-Docs.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/basics/05-RAG-and-Docs.ipynb) | Use documents for RAG style responses | Yes |\n\n## Advanced Examples\n\n| **Notebook Name** | **Colab Link** | **Description** | **Implemented** |\n|------------------ |--------------- |----------------- |----------------- |\n| `00-Devfest-Email-Assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb) | Email assistant for managing DevFest communications | Yes |\n| `01-website-crawler.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/01-website-crawler.ipynb) | Implements a web crawler using a spider to extract website content | Yes |\n| `02-sarcastic-news-headline-generator.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/02-sarcastic-news-headline-generator.ipynb) | Generates sarcastic news headlines using a Brave Search Tool | Yes |\n| `03-trip-planning-assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/03-trip-planning-assistant.ipynb) | Plans trips using weather data and location information | Yes |\n| `04-hook-generator-trending-reels.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/04-hook-generator-trending-reels.ipynb) | Generates engaging hooks for trending social media reels | Yes |\n| `05-video-processing-with-natural-language.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/05-video-processing-with-natural-language.ipynb) | Processes videos using natural language commands | Yes |\n| `06-browser-use.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/06-browser-use.ipynb) | Demonstrates browser automation capabilities | Yes |\n| `07-personalized-research-assistant.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/07-personalized-research-assistant.ipynb) | Demonstrates personalized research assistant capabilities | Yes |\n| `08-rag-chatbot.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/08-rag-chatbot.ipynb) | Demonstrates RAG chatbot capabilities | Yes |\n| `09-companion-agent.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/09-companion-agent.ipynb) | Demonstrates companion agent capabilities like story generation, user persona management, and more | Yes |\n| `10-reel-generator.ipynb` | [Colab Link](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/advanced/10-reel-generator.ipynb) | Demonstrates reel generator capabilities | Yes |\n## Potential Cookbooks for Contributors\n\nWe welcome contributions to expand our cookbook collection. Here are some ideas for new cookbooks that showcase various Julep features and use cases:\n\n| **Potential Cookbook Name** | **Description** | **Key Features** |\n|---------------------------- |----------------- |------------------|\n| Daily News Aggregator | Collects and summarizes news articles, emails summaries to subscribers | Scheduled tasks, Email integration, Content summarization |\n| Social Media Monitoring System | Monitors social platforms for keywords and sends alerts | API integration, Real-time monitoring, Alert system |\n| Weather-Based Notification Service | Checks weather forecasts and notifies users of severe conditions | Weather API integration, Conditional alerts, Scheduling |\n| Automated Financial Report Generator | Gathers financial data and generates reports for stakeholders | Data aggregation, Report generation, Scheduling |\n| Task Management and Reminder System | Manages user tasks, sets reminders, and sends notifications | User management, Scheduling, Notifications |\n| Interactive Story Generator | Creates stories based on user input with corresponding images | Natural language processing, Image generation, User interaction |\n| Automated Meeting Scheduler | Finds optimal meeting times and manages calendar entries | Calendar integration, Conflict resolution, Invitations |\n| Email Categorization and Response | Categorizes incoming emails and sends automated responses | Email processing, Content categorization, Automated responses |\n| E-commerce Order Processing | Handles order placements, inventory, and shipment tracking | Workflow automation, Inventory management, Notifications |\n| Content Moderation System | Reviews and classifies user-generated content | Content analysis, Classification, Moderation actions |\n| Personalized Learning Assistant | Provides tailored learning materials and tracks progress | Personalization, Progress tracking, Content recommendation |\n| Automated Backup and Recovery | Regularly backs up data and initiates recovery procedures | Scheduled tasks, Error handling, Data management |\n| Smart Home Automation Workflow | Manages smart home devices based on user commands and conditions | IoT integration, Conditional logic, User interaction |\n| Inventory Management System | Tracks inventory levels and automates reordering | Stock management, Predictive analysis, Automated ordering |\n| Event-Driven Notification System | Triggers notifications based on specific events or thresholds | Event monitoring, Conditional alerts, Multi-channel notifications |\n| Data Cleaning and Transformation | Cleans and transforms raw data for analysis | Data processing, ETL operations, Quality assurance |\n| Project Management Assistant | Breaks down projects into tasks and tracks progress | Task decomposition, Progress monitoring, Reporting |\n| Parallel Data Processing Pipeline | Processes large datasets in parallel and aggregates results | Parallel execution, Data aggregation, Scalable processing |\n| Dynamic Content Recommendation | Analyzes user behavior and recommends personalized content | User profiling, Content analysis, Personalized recommendations |\n| Compliance Monitoring System | Monitors activities for regulatory compliance and generates reports | Rule-based monitoring, Violation detection, Compliance reporting |\n| Intelligent Resume Screening | Evaluates resumes based on criteria and forwards qualified candidates | Document analysis, Candidate scoring, Automated screening |\n| Automated Code Review Pipeline | Reviews code commits, runs tests, and manages deployments | Code analysis, Automated testing, Deployment management |\n| Personal Finance Tracker | Tracks expenses, analyzes patterns, and provides financial advice | Financial data analysis, Pattern recognition, Personalized advice |\n| Automated Content Publishing | Schedules and publishes content across various platforms | Content management, Multi-platform publishing, Scheduling |\n| AI-Powered Personal Assistant | Manages personal tasks, schedules, and provides information | Task management, Scheduling, Information retrieval |\n| Bug Tracking and Reporting | Monitors repositories, categorizes issues, and assigns to developers | Issue tracking, Categorization, Automated assignment |\n| Multi-Stage Data Validation | Validates data through multiple stages with different rules | Data validation, Multi-step processing, Error handling |\n| Document Summarization and Archiving | Summarizes documents and archives them for easy retrieval | Text summarization, Document classification, Archiving |\n| Real-Time Stock Market Analyzer | Analyzes market data and alerts users about significant changes | Real-time data processing, Financial analysis, Alert system |\n| Webinar Management System | Schedules webinars, manages participants, and handles follow-ups | Event scheduling, Participant management, Automated follow-ups |\n| Smart Content Filtering | Filters and recommends content based on user preferences | Content analysis, User profiling, Recommendation system |\n| Automated Translation Workflow | Translates content into multiple languages and localizes it | Language translation, Localization, Content management |\n| AI-Driven Survey Analysis | Analyzes survey responses and generates insight reports | Survey processing, Sentiment analysis, Report generation |\n| Compliance Documentation Generator | Creates compliance documents based on regulatory standards | Document generation, Compliance checking, Template management |\n| Task Prioritization and Allocation | Prioritizes tasks and allocates them to team members | Task analysis, Resource allocation, Team management |\n| Webinar Feedback Analyzer | Collects and analyzes feedback from webinar participants | Feedback collection, Sentiment analysis, Improvement suggestions |\n| Health and Fitness Tracker | Tracks health metrics and provides personalized fitness recommendations | Health data analysis, Personalized recommendations, Progress tracking |\n| Incident Response System | Detects incidents, initiates response workflows, and notifies personnel | Incident detection, Workflow automation, Alert system |\n| Content Optimization Workflow | Analyzes content performance and optimizes for better engagement | Performance analysis, Content optimization, A/B testing |\n| Legal Document Processor | Extracts key information from legal documents and ensures compliance | Document analysis, Information extraction, Compliance checking |\n| Job Application Tracker | Tracks job applications and provides application improvement suggestions | Application tracking, Status updates, Improvement recommendations |\n| Content Rescheduling System | Monitors content performance and reschedules for better visibility | Performance monitoring, Content scheduling, Optimization |\n| AI-Powered Investment Advisor | Analyzes financial data and suggests investment opportunities | Financial analysis, Risk assessment, Investment recommendations |\n| Intelligent Document Version Control | Manages document versions and notifies users about updates | Version control, Change tracking, Notification system |\n| Marketing Campaign Manager | Creates, schedules, and optimizes marketing campaigns | Campaign planning, Performance tracking, Optimization strategies |\n| Competitive Analysis Workflow | Gathers data on competitors and generates analysis reports | Data collection, Comparative analysis, Report generation |\n| Health Monitoring and Alerting | Monitors health metrics and alerts users and healthcare providers | Health data analysis, Anomaly detection, Alert system |\n| Travel Itinerary Planner | Plans travel itineraries based on preferences and conditions | Trip planning, Preference matching, Dynamic scheduling |\n| AI-Powered Personal Diary | Helps maintain a diary and provides insights into emotions and growth | Natural language processing, Sentiment analysis, Personal growth tracking |\n| Language Learning Tutor | Provides exercises and personalized feedback for language learners | Language processing, Progress tracking, Personalized lessons |\n| Knowledge Base Maintenance | Updates and maintains a knowledge base with new information | Information extraction, Knowledge management, Consistency checking |\n| Feedback Loop for Improvement | Collects user feedback, analyzes it, and implements improvements | Feedback analysis, Improvement tracking, Stakeholder notifications |\n| Grant Application Processor | Reviews grant applications, evaluates eligibility, and notifies applicants | Application processing, Eligibility checking, Automated notifications |\n| AI-Powered Resume Builder | Assists in building resumes and provides improvement suggestions | Resume analysis, Content generation, Personalized recommendations |\n| Vendor Management System | Manages vendor information, monitors performance, and handles communications | Vendor tracking, Performance monitoring, Communication automation |\n| Meeting Minutes Recorder | Records meetings, transcribes audio, and distributes summaries | Audio transcription, Summary generation, Automated distribution |\n| Personal Shopping Assistant | Finds products based on preferences and notifies about deals | Product matching, Price comparison, Deal notifications |\n| Environmental Monitoring Reporter | Monitors environmental data and generates reports for stakeholders | Data monitoring, Anomaly detection, Report generation |\n| Data Sync and Integration Workflow | Syncs data between platforms and handles conflicts | Data synchronization, Conflict resolution, Integration management |\n| Competitive Pricing Strategy | Analyzes competitor pricing and adjusts prices dynamically | Price analysis, Dynamic pricing, Market monitoring |\n| User Onboarding Workflow | Manages the user onboarding process and sets up accounts | User registration, Account setup, Welcome communications |\n| Content Curation and Distribution | Curates content based on interests and tracks engagement | Content curation, Distribution scheduling, Engagement tracking |\n\nWe encourage contributors to choose from these ideas or propose their own to showcase Julep's capabilities in solving real-world problems.\n\n## Julep Features Demonstrated\n\nThese notebooks showcase various features of Julep. Here's an overview of the key features you can explore:\n\n1. **Agent Management**\n   - Creating and updating agents\n   - Configuring agent settings (name, model, about)\n\n2. **Task Definition and Execution**\n   - Creating multi-step tasks\n   - Executing tasks with specific inputs\n   - Various step types (Prompt, Tool Call, Evaluate, Conditional Logic, Loops, etc.)\n\n3. **Tool Integration**\n   - Adding custom tools to agents\n   - Integrating external APIs (e.g., web search, image generation)\n\n4. **Session Management**\n   - Creating and managing persistent sessions\n   - Handling context overflow\n\n5. **User Management**\n   - Creating and managing users\n   - Associating users with sessions\n\n6. **Document Management**\n   - Uploading and managing documents\n   - Document search functionality\n\n7. **Chat Functionality**\n   - Interacting with agents through chat sessions\n\n8. **Execution Monitoring**\n   - Streaming execution progress\n   - Monitoring task lifecycle\n\n9. **Authentication**\n    - API Key authentication\n\nWe encourage contributors to create new notebooks that demonstrate these features in various combinations and use cases.\n\n### Additional Information\n\nFor more details about the tasks or if you have any questions, please don't hesitate to contact the author:\n\n**Author:** Julep AI  \n**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n\n---\n\nIf you have feedback or would like to contribute to the notebooks, feel free to open an issue(s) in the [repository](https://github.com/julep-ai/julep).\n"
  },
  {
    "path": "cookbooks/__init__.py",
    "content": ""
  },
  {
    "path": "cookbooks/advanced/00-Devfest-Email-Assistant.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 66,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Requirement already satisfied: julep in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (1.73.0)\\n\",\n      \"Requirement already satisfied: anyio<5,>=3.5.0 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from julep) (4.8.0)\\n\",\n      \"Requirement already satisfied: distro<2,>=1.7.0 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from julep) (1.9.0)\\n\",\n      \"Requirement already satisfied: httpx<1,>=0.23.0 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from julep) (0.28.1)\\n\",\n      \"Requirement already satisfied: pydantic<3,>=1.9.0 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from julep) (2.10.6)\\n\",\n      \"Requirement already satisfied: python-dotenv<1.1,>=1.0 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from julep) (1.0.1)\\n\",\n      \"Requirement already satisfied: ruamel-yaml<0.19,>=0.18.6 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from julep) (0.18.10)\\n\",\n      \"Requirement already satisfied: sniffio in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from julep) (1.3.1)\\n\",\n      \"Requirement already satisfied: typing-extensions<5,>=4.10 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from julep) (4.12.2)\\n\",\n      \"Requirement already satisfied: idna>=2.8 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from anyio<5,>=3.5.0->julep) (3.10)\\n\",\n      \"Requirement already satisfied: certifi in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from httpx<1,>=0.23.0->julep) (2025.1.31)\\n\",\n      \"Requirement already satisfied: httpcore==1.* in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from httpx<1,>=0.23.0->julep) (1.0.7)\\n\",\n      \"Requirement already satisfied: h11<0.15,>=0.13 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from httpcore==1.*->httpx<1,>=0.23.0->julep) (0.14.0)\\n\",\n      \"Requirement already satisfied: annotated-types>=0.6.0 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from pydantic<3,>=1.9.0->julep) (0.7.0)\\n\",\n      \"Requirement already satisfied: pydantic-core==2.27.2 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from pydantic<3,>=1.9.0->julep) (2.27.2)\\n\",\n      \"Requirement already satisfied: ruamel.yaml.clib>=0.2.7 in /home/xmtosx/Work/Julep/julep/agents-api/.venv/lib/python3.12/site-packages (from ruamel-yaml<0.19,>=0.18.6->julep) (0.2.12)\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"!pip install julep\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 67,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import uuid\\n\",\n    \"\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Create Julep Client\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 68,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"\\n\",\n    \"JULEP_API_KEY = \\\"YOUR_JULEP_API_KEY\\\"\\n\",\n    \"\\n\",\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=JULEP_API_KEY, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 69,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=\\\"Julep Email Assistant\\\",\\n\",\n    \"    about=(\\n\",\n    \"        \\\"You are an agent that handles emails for julep users.\\\"\\n\",\n    \"        + \\\" Julep is a platform for creating kick-ass AI agents.\\\"\\n\",\n    \"    ),\\n\",\n    \"    model=\\\"gpt-4o-mini\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 76,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"\\n\",\n    \"MAILGUN_PASSWORD = \\\"YOUR_MAILGUN_PASSWORD\\\"\\n\",\n    \"\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: Julep Email Assistant\\n\",\n    \"description: A Julep agent that can send emails and search the documentation.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### INPUT SCHEMA ###################\\n\",\n    \"########################################################\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    from:\\n\",\n    \"      type: string\\n\",\n    \"    to:\\n\",\n    \"      type: string\\n\",\n    \"    subject:\\n\",\n    \"      type: string\\n\",\n    \"    body:\\n\",\n    \"      type: string\\n\",\n    \"\\n\",\n    \"                          \\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ##########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Define the tools that the task will use in this workflow\\n\",\n    \"tools:\\n\",\n    \"- name: send_email\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: email\\n\",\n    \"    setup:\\n\",\n    \"      host: smtp.mailgun.org\\n\",\n    \"      password: {MAILGUN_PASSWORD}\\n\",\n    \"      port: 587\\n\",\n    \"      user: postmaster@email.julep.ai\\n\",\n    \"\\n\",\n    \"- name: search_docs\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: agent\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: search\\n\",\n    \"  \\n\",\n    \"########################################################\\n\",\n    \"####################### MAIN WORKFLOW ##################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"# Step 0: Prompt the user for the email details\\n\",\n    \"- prompt: |-\\n\",\n    \"    $ f'''You are {{ agent.name }}. {{ agent.about }}\\n\",\n    \"\\n\",\n    \"    A user with email address {{ _['from'] }} has sent the following inquiry:\\n\",\n    \"    ------\\n\",\n    \"      Subject: {{ _.subject }}\\n\",\n    \"\\n\",\n    \"      {{ _.body }}\\n\",\n    \"    ------\\n\",\n    \"\\n\",\n    \"    Can you generate a query to search the documentation based on this email?\\n\",\n    \"    Just respond with the query as is and nothing else.'''\\n\",\n    \"\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 1: Search the documentation\\n\",\n    \"- tool: search_docs\\n\",\n    \"  arguments:\\n\",\n    \"    agent_id: {agent.id}\\n\",\n    \"    text: $ _\\n\",\n    \"    \\n\",\n    \"- prompt: >-\\n\",\n    \"    $ f'''You are {{ agent.name }}. {{ agent.about }}\\n\",\n    \"\\n\",\n    \"    A user with email address {{ steps[0].input['from'] }} has sent the following inquiry:\\n\",\n    \"    ------\\n\",\n    \"      Subject: {{ steps[0].input.subject }}\\n\",\n    \"\\n\",\n    \"      {{ steps[0].input.body }}\\n\",\n    \"    ------\\n\",\n    \"\\n\",\n    \"    Here are some possibly relevant snippets from the julep documentation:\\n\",\n    \"    {{ '\\\\\\\\n'.join([snippet.content for doc in _.docs for snippet in doc.snippets]) }}\\n\",\n    \"    \\n\",\n    \"    ========\\n\",\n    \"\\n\",\n    \"    Based on the above info, craft an email body to respond with as a json object.\\n\",\n    \"    The json object must have `subject` and `body` fields.'''\\n\",\n    \"  response_format:\\n\",\n    \"    type: json_object\\n\",\n    \"    \\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 3: Extract the email\\n\",\n    \"- evaluate:\\n\",\n    \"    subject: $ extract_json(_)['subject']\\n\",\n    \"    body: $ extract_json(_)['body']\\n\",\n    \"\\n\",\n    \"# Step 4: Send the email\\n\",\n    \"- tool: send_email\\n\",\n    \"  arguments:\\n\",\n    \"    body: $ _.body\\n\",\n    \"    from: postmaster@email.julep.ai\\n\",\n    \"    subject: $  _.subject\\n\",\n    \"    to: $ steps[0].input['from']\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 77,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    **task_def,\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 84,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=task.id,\\n\",\n    \"    input={\\\"from\\\": \\\"diwank@julep.ai\\\", \\\"to\\\": \\\"help@agents.new\\\", \\\"subject\\\": \\\"what's up\\\", \\\"body\\\": \\\"sup\\\"},\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 85,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Execution(id='067fd065-3722-7af4-8000-817a972d8c7f', created_at=datetime.datetime(2025, 4, 14, 12, 57, 55, 446101, tzinfo=datetime.timezone.utc), input={'to': 'help@agents.new', 'body': 'sup', 'from': 'diwank@julep.ai', 'subject': \\\"what's up\\\"}, status='running', task_id='fdab8052-df0d-4f36-9c5e-01dcd5e0ba3c', updated_at=datetime.datetime(2025, 4, 14, 12, 57, 56, 742329, tzinfo=datetime.timezone.utc), error=None, metadata={}, output={'docs': [], 'time': 0.01}, transition_count=3)\"\n      ]\n     },\n     \"execution_count\": 85,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"client.executions.get(execution.id)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Checking execution details and output\\n\",\n    \"\\n\",\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 87,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Type:  init\\n\",\n      \"output:  {'to': 'help@agents.new', 'body': 'sup', 'from': 'diwank@julep.ai', 'subject': \\\"what's up\\\"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  \\\"what's up\\\" OR \\\"sup\\\" OR \\\"general inquiry\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'docs': [], 'time': 0.01}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"subject\\\": \\\"Hello from Julep!\\\",\\n\",\n      \"  \\\"body\\\": \\\"Hi there! Thanks for reaching out. We're here to help you create amazing AI agents. If you have any specific questions or need assistance with the platform, feel free to ask. Looking forward to hearing from you!\\\"\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'body': \\\"Hi there! Thanks for reaching out. We're here to help you create amazing AI agents. If you have any specific questions or need assistance with the platform, feel free to ask. Looking forward to hearing from you!\\\", 'subject': 'Hello from Julep!'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish\\n\",\n      \"output:  {'success': True}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"execution_transitions = client.executions.transitions.list(\\n\",\n    \"    execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"for transition in reversed(execution_transitions):\\n\",\n    \"    print(\\\"Type: \\\", transition.type)\\n\",\n    \"    print(\\\"output: \\\", transition.output)\\n\",\n    \"    print(\\\"-\\\" * 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"Python 3\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 4\n}\n"
  },
  {
    "path": "cookbooks/advanced/01-website-crawler.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 31,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install --upgrade julep --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 32,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import uuid\\n\",\n    \"\\n\",\n    \"# NOTE: these UUIDs are used in order not to use the `create_or_update` methods instead of\\n\",\n    \"# the `create` methods for the sake of not creating new resources every time a cell is run.\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## creating julep client with the api key\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 33,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"JULEP_API_KEY = os.environ['JULEP_API_KEY']\\n\",\n    \"\\n\",\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=JULEP_API_KEY, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 34,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Create agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=\\\"Spiderman\\\",\\n\",\n    \"    about=\\\"AI that can crawl the web and extract data\\\",\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 99,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"\\n\",\n    \"SPIDER_API_KEY = \\\"YOUR_SPIDER_API_KEY\\\"\\n\",\n    \"\\n\",\n    \"# Define the task\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"       \\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json                \\n\",\n    \"name: Julep Crawling Task\\n\",\n    \"description: Crawl a website and create a summary of the results\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### INPUT SCHEMA ###################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    url:\\n\",\n    \"      type: string\\n\",\n    \"      description: The URL of the website to crawl\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ##########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Define the tools that the task will use in this workflow\\n\",\n    \"tools:\\n\",\n    \"- name: spider_crawler\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: spider\\n\",\n    \"    setup:\\n\",\n    \"      spider_api_key: \\\"{SPIDER_API_KEY}\\\"\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### MAIN WORKFLOW ##################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"\\n\",\n    \"# Step 0: Call the spider_crawler tool with the url input\\n\",\n    \"- tool: spider_crawler\\n\",\n    \"  arguments:\\n\",\n    \"    url: $ _['url'] # You can also use 'steps[0].input.url'\\n\",\n    \"    params:\\n\",\n    \"      request: smart_mode\\n\",\n    \"      limit: $ 2 # limit to 2 pages\\n\",\n    \"      return_format: markdown\\n\",\n    \"      proxy_enabled: $ True\\n\",\n    \"      filter_output_images: $ True\\n\",\n    \"      filter_output_svg: $ True\\n\",\n    \"      readability: $ True\\n\",\n    \"\\n\",\n    \"# Step 1: Evaluate step to create a summary of the results\\n\",\n    \"- evaluate:\\n\",\n    \"    documents: |\\n\",\n    \"      $ \\\" \\\".join(\\n\",\n    \"      list(\\n\",\n    \"        page['content'] for page in _['result']\\n\",\n    \"        )\\n\",\n    \"      )\\n\",\n    \"      \\n\",\n    \"# Step 2: Prompt step to create a summary of the results\\n\",\n    \"- prompt: |\\n\",\n    \"    $ f'''\\n\",\n    \"    You are {{agent.about}}\\n\",\n    \"    I have given you this url: {{steps[0].input.url}}\\n\",\n    \"    And you have crawled that website. Here are the results you found:\\n\",\n    \"    {{_['documents']}}\\n\",\n    \"    I want you to create a short summary (no longer than 100 words) of the results you found while crawling that website.\\n\",\n    \"    '''\\n\",\n    \"  unwrap: true\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 100,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating the task object\\n\",\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 101,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating an execution object\\n\",\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    input={\\n\",\n    \"        \\\"url\\\": \\\"https://docs.julep.ai\\\"\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Checking execution details and output\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 111,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Julep is a platform for creating sophisticated AI agents that manage complex tasks using long-term memory and multi-step processes. The documentation offers guidance on getting started, using the Julep CLI, understanding core concepts like agents and tasks, and integrating external tools and APIs. Key features include persistent AI agents, stateful sessions, and support for Retrieval-Augmented Generation (RAG). Users can explore tutorials, API references, and SDKs, with additional resources for developers, enterprises, and researchers. The site emphasizes robust task management, easy integration, and extensive support through community links and detailed guides.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Get execution details\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"# Print the output\\n\",\n    \"print(execution.output)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 112,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Transition type:  init\\n\",\n      \"Transition output:  {'url': 'https://docs.julep.ai'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'result': [{'url': 'https://docs.julep.ai/', 'costs': {'ai_cost': 0, 'file_cost': 0.0002, 'total_cost': 0.0004, 'compute_cost': 0.0001, 'transform_cost': 0.0001, 'bytes_transferred_cost': 0}, 'error': None, 'status': 200, 'content': '[Julephome page](https://docs.julep.ai/)v1\\\\nSearch Julep docs\\\\n* [Community](https://discord.gg/p4c7ehs4vD)\\\\n* [Changelog](https://github.com/julep-ai/julep/blob/dev/CHANGELOG.md)\\\\n##### Get Started\\\\n* [\\\\nWelcome to Julep\\\\n](https://docs.julep.ai/introduction/julep)\\\\n* [\\\\nInstallation\\\\n](https://docs.julep.ai/introduction/install)\\\\n* [\\\\nQuick Start\\\\n](https://docs.julep.ai/introduction/quickstart)\\\\n##### Julep CLI\\\\n* [\\\\nGetting Started\\\\n](https://docs.julep.ai/julepcli/introduction)\\\\n* [\\\\nCommand Reference\\\\n](https://docs.julep.ai/julepcli/commands)\\\\n##### Core Concepts\\\\n* [\\\\nAgents\\\\n](https://docs.julep.ai/concepts/agents)\\\\n* [\\\\nTasks\\\\n](https://docs.julep.ai/concepts/tasks)\\\\n* [\\\\nSessions\\\\n](https://docs.julep.ai/concepts/sessions)\\\\n* [\\\\nTools\\\\n](https://docs.julep.ai/concepts/tools)\\\\n* [\\\\nUsers\\\\n](https://docs.julep.ai/concepts/users)\\\\n* [\\\\nDocuments (RAG)\\\\n](https://docs.julep.ai/concepts/docs)\\\\n* [\\\\nExecutions\\\\n](https://docs.julep.ai/concepts/execution)\\\\n##### Tutorials\\\\n* [\\\\nBrowser Use\\\\n](https://docs.julep.ai/tutorials/browser-use)\\\\n* [\\\\nRAG Chatbot for Website\\\\n](https://docs.julep.ai/tutorials/rag-chatbot)\\\\n* [\\\\nTrip Planning\\\\n](https://docs.julep.ai/tutorials/trip-planning)\\\\n* [\\\\nVideo Processing\\\\n](https://docs.julep.ai/tutorials/video-processing)\\\\n##### Integrations\\\\n* [\\\\nSupported Models\\\\n](https://docs.julep.ai/integrations/supported-models)\\\\n* [\\\\nSupported Integrations\\\\n](https://docs.julep.ai/integrations/supported-integrations)\\\\n* [\\\\nAdd New Integrations\\\\n](https://docs.julep.ai/integrations/contributing-integrations)\\\\n* Communication &amp; Data\\\\n* Media &amp; File Processing\\\\n* Search\\\\n* Web &amp; Browser Automation\\\\n##### Advanced Topics\\\\n* [\\\\nNew Syntax (Important)\\\\n](https://docs.julep.ai/advanced/new-syntax)\\\\n* [\\\\nPython Expression\\\\n](https://docs.julep.ai/advanced/python-expression)\\\\n* [\\\\nTypes of Task Steps\\\\n](https://docs.julep.ai/advanced/types-of-task-steps)\\\\n* [\\\\nChat Features in Julep\\\\n](https://docs.julep.ai/advanced/chat)\\\\n* [\\\\nRender Endpoint in Julep\\\\n](https://docs.julep.ai/advanced/render)\\\\n* [\\\\nFiles (Multimedia)\\\\n](https://docs.julep.ai/advanced/files)\\\\n* [\\\\nArchitecture Deep Dive\\\\n](https://docs.julep.ai/advanced/architecture-deep-dive)\\\\n* [\\\\nAgentic Patterns\\\\n](https://docs.julep.ai/advanced/agentic-patterns)\\\\n* [\\\\nExecution Lifecycle\\\\n](https://docs.julep.ai/advanced/lifecycle)\\\\n* [\\\\nMulti-Agent Multi-User Sessions\\\\n](https://docs.julep.ai/advanced/multi-agent-multi-user-sessions)\\\\n* [\\\\nLocal Setup\\\\n](https://docs.julep.ai/advanced/localsetup)\\\\n[Julephome page](https://docs.julep.ai/)\\\\nv1\\\\nSearch Julep docs\\\\nSearch...\\\\nNavigation\\\\nGet Started\\\\nWelcome to Julep\\\\n[Home\\\\n](https://docs.julep.ai/introduction/julep)[Guides\\\\n](https://docs.julep.ai/guides/getting-started/chat-with-an-agent)[SDK\\\\n](https://docs.julep.ai/sdks)[🚨 Open Responses API (Alpha)\\\\n](https://docs.julep.ai/responses/quickstart)[API Reference\\\\n](https://docs.julep.ai/api-reference/agents/list-agents)\\\\n[Home\\\\n](https://docs.julep.ai/introduction/julep)[Guides\\\\n](https://docs.julep.ai/guides/getting-started/chat-with-an-agent)[SDK\\\\n](https://docs.julep.ai/sdks)[🚨 Open Responses API (Alpha)\\\\n](https://docs.julep.ai/responses/quickstart)[API Reference\\\\n](https://docs.julep.ai/api-reference/agents/list-agents)\\\\n* [Support](mailto:developers@julep.ai)\\\\n* [GitHub](https://github.com/julep-ai/julep)\\\\n* [\\\\nGet API Key\\\\n](https://dashboard.julep.ai)\\\\nGet Started\\\\n# Welcome to Julep\\\\nJulep is a platform for creating AI agents that remember past interactions and can perform complex tasks. It offers long-term memory and manages multi-step processes.\\\\nJulep enables the creation of multi-step tasks incorporating decision-making, loops, parallel processing, and integration with numerous external tools and APIs.\\\\nWhile many AI applications are limited to simple, linear chains of prompts and API calls with minimal branching, Julep is built to handle more complex scenarios which:\\\\n* Have multiple steps,\\\\n* Make decisions based on model outputs,\\\\n* Spawn parallel branches,\\\\n* Use lots of tools, and\\\\n* Run for a long time.\\\\nJulep offers a comprehensive set of features designed to help you build sophisticated AI workflows.\\\\n#### Imagine you want to build an AI agent that can do more than just answer simple questions —it needs to handle complex tasks, remember past interactions, and maybe even use other tools or APIs.\\\\nNow since you understand the problem Julep is solving, let’s explore the key features that make Julep stand out.\\\\n## [\\\\u200b\\\\n](#core-features)\\\\nCore Features\\\\n## Persistent AI Agents\\\\nCreate agents that maintain context and remember information across multiple interactions. Agents can learn from past conversations and apply that knowledge to future tasks.\\\\n## Stateful Sessions\\\\nKeep track of conversation history and context across multiple interactions. Sessions can be paused, resumed, and maintain their state indefinitely.\\\\n## Multi-Step Tasks\\\\nBuild complex workflows with decision-making capabilities, loops, and conditional logic. Tasks can be as simple or as sophisticated as needed.\\\\n## Task Management\\\\nHandle long-running tasks that can run indefinitely. Tasks are automatically managed, with built-in support for retries and error handling.\\\\n## [\\\\u200b\\\\n](#advanced-capabilities)\\\\nAdvanced Capabilities\\\\nBuilt-in Tools\\\\nAccess a wide range of built-in tools and easily integrate with external APIs. Tools can be added to agents to extend their capabilities.\\\\nSelf-Healing\\\\nAutomatic retry mechanisms for failed steps, message resending, and robust task management keep your workflows running smoothly.\\\\nRAG Support\\\\nBuilt-in support for Retrieval-Augmented Generation. Use Julep’s document store to build systems that can retrieve and utilize your own data.\\\\nEasy Integration\\\\nSeamlessly integrate with your existing infrastructure using our comprehensive SDKs for Python and Node.js.\\\\n## [\\\\u200b\\\\n](#exploring-the-documentation)\\\\nExploring the Documentation\\\\nDepending on your use case, here are different ways to explore our documentation:\\\\n[\\\\n## For AI Developers\\\\nStart with the Quick Start guide, then dive into Core Concepts and Task Management to build AI-powered applications.\\\\n](https://docs.julep.ai/introduction/quickstart)[\\\\n## For Enterprise Solutions\\\\nFocus on Architecture Deep Dive, Security Features, and Integration Guides to understand enterprise-grade deployment.\\\\n](https://docs.julep.ai/advanced/architecture-deep-dive)[\\\\n## For Researchers &amp; Experimenters\\\\nExplore our Model Configuration, RAG Implementation, and Advanced Features sections to experiment with AI capabilities.\\\\n](https://docs.julep.ai/integrations/supported-models)[\\\\n## For System Integrators\\\\nCheck out our API Reference, SDK Documentation, and Integration Tutorials to connect Julep with existing systems.\\\\n](https://docs.julep.ai/api-reference)\\\\n## [\\\\u200b\\\\n](#next-steps)\\\\nNext Steps\\\\n[\\\\n## Installation\\\\nDetailed setup instructions\\\\n](https://docs.julep.ai/introduction/install)[\\\\n## Quick Start\\\\nEssential concepts and terminology\\\\n](https://docs.julep.ai/introduction/quickstart)[\\\\n## Tutorials\\\\nLearn from practical tutorials\\\\n](https://docs.julep.ai/tutorials)\\\\n## [\\\\u200b\\\\n](#need-help?)\\\\nNeed Help?\\\\n[\\\\n## Join our Community\\\\nGet help and share ideas with other Julep developers\\\\n](https://discord.gg/p4c7ehs4vD)[\\\\n## Contact Support\\\\nReach out to our team for assistance\\\\n](mailto:developers@julep.ai)\\\\n[Installation](https://docs.julep.ai/introduction/install)\\\\n[x](https://x.com/julepai)[github](https://github.com/julep-ai/julep)[linkedin](https://www.linkedin.com/company/julep-ai)\\\\n[Powered by Mintlify](https://mintlify.com/preview-request?utm_campaign=poweredBy&amp;utm_medium=docs&amp;utm_source=docs.julep.ai)\\\\nOn this page\\\\n* [Core Features](#core-features)\\\\n* [Advanced Capabilities](#advanced-capabilities)\\\\n* [Exploring the Documentation](#exploring-the-documentation)\\\\n* [Next Steps](#next-steps)\\\\n* [Need Help?](#need-help?)\\\\n</body></html>'}, {'url': 'https://docs.julep.ai/advanced/lifecycle', 'costs': {'ai_cost': 0, 'file_cost': 0.0003, 'total_cost': 0.0005, 'compute_cost': 0.0001, 'transform_cost': 0.0001, 'bytes_transferred_cost': 0}, 'error': None, 'status': 200, 'content': '[Julephome page](https://docs.julep.ai/)v1\\\\nSearch Julep docs\\\\n* [Community](https://discord.gg/p4c7ehs4vD)\\\\n* [Changelog](https://github.com/julep-ai/julep/blob/dev/CHANGELOG.md)\\\\n##### Get Started\\\\n* [\\\\nWelcome to Julep\\\\n](https://docs.julep.ai/introduction/julep)\\\\n* [\\\\nInstallation\\\\n](https://docs.julep.ai/introduction/install)\\\\n* [\\\\nQuick Start\\\\n](https://docs.julep.ai/introduction/quickstart)\\\\n##### Julep CLI\\\\n* [\\\\nGetting Started\\\\n](https://docs.julep.ai/julepcli/introduction)\\\\n* [\\\\nCommand Reference\\\\n](https://docs.julep.ai/julepcli/commands)\\\\n##### Core Concepts\\\\n* [\\\\nAgents\\\\n](https://docs.julep.ai/concepts/agents)\\\\n* [\\\\nTasks\\\\n](https://docs.julep.ai/concepts/tasks)\\\\n* [\\\\nSessions\\\\n](https://docs.julep.ai/concepts/sessions)\\\\n* [\\\\nTools\\\\n](https://docs.julep.ai/concepts/tools)\\\\n* [\\\\nUsers\\\\n](https://docs.julep.ai/concepts/users)\\\\n* [\\\\nDocuments (RAG)\\\\n](https://docs.julep.ai/concepts/docs)\\\\n* [\\\\nExecutions\\\\n](https://docs.julep.ai/concepts/execution)\\\\n##### Tutorials\\\\n* [\\\\nBrowser Use\\\\n](https://docs.julep.ai/tutorials/browser-use)\\\\n* [\\\\nRAG Chatbot for Website\\\\n](https://docs.julep.ai/tutorials/rag-chatbot)\\\\n* [\\\\nTrip Planning\\\\n](https://docs.julep.ai/tutorials/trip-planning)\\\\n* [\\\\nVideo Processing\\\\n](https://docs.julep.ai/tutorials/video-processing)\\\\n##### Integrations\\\\n* [\\\\nSupported Models\\\\n](https://docs.julep.ai/integrations/supported-models)\\\\n* [\\\\nSupported Integrations\\\\n](https://docs.julep.ai/integrations/supported-integrations)\\\\n* [\\\\nAdd New Integrations\\\\n](https://docs.julep.ai/integrations/contributing-integrations)\\\\n* Communication &amp; Data\\\\n* Media &amp; File Processing\\\\n* Search\\\\n* Web &amp; Browser Automation\\\\n##### Advanced Topics\\\\n* [\\\\nNew Syntax (Important)\\\\n](https://docs.julep.ai/advanced/new-syntax)\\\\n* [\\\\nPython Expression\\\\n](https://docs.julep.ai/advanced/python-expression)\\\\n* [\\\\nTypes of Task Steps\\\\n](https://docs.julep.ai/advanced/types-of-task-steps)\\\\n* [\\\\nChat Features in Julep\\\\n](https://docs.julep.ai/advanced/chat)\\\\n* [\\\\nRender Endpoint in Julep\\\\n](https://docs.julep.ai/advanced/render)\\\\n* [\\\\nFiles (Multimedia)\\\\n](https://docs.julep.ai/advanced/files)\\\\n* [\\\\nArchitecture Deep Dive\\\\n](https://docs.julep.ai/advanced/architecture-deep-dive)\\\\n* [\\\\nAgentic Patterns\\\\n](https://docs.julep.ai/advanced/agentic-patterns)\\\\n* [\\\\nExecution Lifecycle\\\\n](https://docs.julep.ai/advanced/lifecycle)\\\\n* [\\\\nMulti-Agent Multi-User Sessions\\\\n](https://docs.julep.ai/advanced/multi-agent-multi-user-sessions)\\\\n* [\\\\nLocal Setup\\\\n](https://docs.julep.ai/advanced/localsetup)\\\\n[Julephome page](https://docs.julep.ai/)\\\\nv1\\\\nSearch Julep docs\\\\nSearch...\\\\nNavigation\\\\nAdvanced Topics\\\\nExecution Lifecycle\\\\n[Home\\\\n](https://docs.julep.ai/introduction/julep)[Guides\\\\n](https://docs.julep.ai/guides/getting-started/chat-with-an-agent)[SDK\\\\n](https://docs.julep.ai/sdks)[🚨 Open Responses API (Alpha)\\\\n](https://docs.julep.ai/responses/quickstart)[API Reference\\\\n](https://docs.julep.ai/api-reference/agents/list-agents)\\\\n[Home\\\\n](https://docs.julep.ai/introduction/julep)[Guides\\\\n](https://docs.julep.ai/guides/getting-started/chat-with-an-agent)[SDK\\\\n](https://docs.julep.ai/sdks)[🚨 Open Responses API (Alpha)\\\\n](https://docs.julep.ai/responses/quickstart)[API Reference\\\\n](https://docs.julep.ai/api-reference/agents/list-agents)\\\\n* [Support](mailto:developers@julep.ai)\\\\n* [GitHub](https://github.com/julep-ai/julep)\\\\n* [\\\\nGet API Key\\\\n](https://dashboard.julep.ai)\\\\nAdvanced Topics\\\\n# Execution Lifecycle\\\\nUnderstanding the Lifecycle of Task when executed in Julep\\\\n## [\\\\u200b\\\\n](#overview)\\\\nOverview\\\\nUnderstanding the lifecycle of a Julep task is crucial for building effective workflows.\\\\nLet’s explore this through the lens of a[Trip Plan task](https://docs.julep.ai/tutorials/trip-planning)- a practical example that showcases key aspects of task execution.\\\\nThe Trip Plan task is an ideal example because it demonstrates:\\\\n1. Parallel execution of workflow steps\\\\n2. Integration with multiple external APIs:\\\\n* [Weather API](https://docs.julep.ai/integrations/communicationdata/weather)for current conditions\\\\n* [Brave Search API](https://docs.julep.ai/integrations/search/brave)for attractions\\\\n* Data aggregation from various sources\\\\n* AI-powered personalization of results\\\\nBelow is a visual representation of how this task flows through Julep’s execution lifecycle:\\\\nLifecycle of the Trip Plan Task\\\\nLet’s examine each phase of the execution lifecycle using this task as our guide.\\\\nThis is a simplified representation of the execution lifecycle. In practice, Julephandles many more details and edge cases to ensure robust and efficient task execution.\\\\nOut here in this section, we will be focusing on the main workflow steps of the Trip Plan task and how these steps are executed in Julep.\\\\n### [\\\\u200b\\\\n](#1-input-schema)\\\\n1. Input Schema\\\\nFirst, we define what inputs our task expects:\\\\n```\\\\n`input\\\\\\\\_schema:type:objectproperties:locations:type:arrayitems:type:string`\\\\n```\\\\nThis schema specifies that our task expects an array of location strings (e.g.,`[&quot;New York&quot;, &quot;London&quot;, &quot;Paris&quot;]`).\\\\n### [\\\\u200b\\\\n](#2-tools-configuration)\\\\n2. Tools Configuration\\\\nNext, we define the external tools our task will use:\\\\n```\\\\n`-name:weathertype:integrationintegration:provider:weathersetup:openweathermap\\\\\\\\_api\\\\\\\\_key:{openweathermap\\\\\\\\_api\\\\\\\\_key}-name:internet\\\\\\\\_searchtype:integrationintegration:provider:bravesetup:api\\\\\\\\_key:{brave\\\\\\\\_api\\\\\\\\_key}`\\\\n```\\\\nWe’re using two integrations:\\\\n* The`weather`integration to fetch current weather conditions\\\\n* The`brave`search integration to find tourist attractions### [\\\\u200b\\\\n](#3-main-workflow-steps)\\\\n3. Main Workflow Steps\\\\n#### [\\\\u200b\\\\n](#step-1:-fetch-weather-data)\\\\nStep 1: Fetch Weather Data\\\\n```\\\\n`-over:$ steps[0].input.locationsmap:tool:weatherarguments:location:$ \\\\\\\\_`\\\\n```\\\\nThis step:\\\\n* Iterates over each location in the input array\\\\n* Calls the weather API for each location\\\\n* The`\\\\\\\\_`represents the current location in the iteration#### [\\\\u200b\\\\n](#step-2:-search-for-tourist-attractions)\\\\nStep 2: Search for Tourist Attractions\\\\n```\\\\n`-over:$ steps[0].input.locationsmap:tool:internet\\\\\\\\_searcharguments:query:$ &#x27;&#x27;tourist attractions in &#x27;&#x27; + \\\\\\\\_`\\\\n```\\\\nThis step:\\\\n* Iterates over the locations again\\\\n* Searches for tourist attractions in each location\\\\n* Constructs a search query by concatenating “tourist attractions in ”with the location#### [\\\\u200b\\\\n](#step-3:-combine-data)\\\\nStep 3: Combine Data\\\\n```\\\\n`-evaluate:zipped:|-$ list(zip(steps[0].input.locations,[output[&#x27;result&#x27;]for output in steps[0].output],steps[1].output))`\\\\n```\\\\nThis step:\\\\n* Combines the data from previous steps into tuples\\\\n* Each tuple contains: (location, weather\\\\\\\\_data, attractions\\\\\\\\_data)\\\\n* Uses Python’s`zip`function to align the data#### [\\\\u200b\\\\n](#step-4:-generate-itineraries)\\\\nStep 4: Generate Itineraries\\\\n```\\\\n`-over:$ \\\\\\\\_[&#x27;zipped&#x27;]parallelism:3# Inside the map step, each `\\\\\\\\_` represents the current element in the list# which is a tuple of (location, weather, attractions)map:prompt:-role:systemcontent:&gt;-$ f&#x27;&#x27;&#x27;You are{agent.name}. Your task is to create a detailed itineraryfor visiting tourist attractions in some locations.The user will give you the following information for each location:-The location-The current weather condition-The top tourist attractions&#x27;&#x27;&#x27;-role:usercontent:&gt;-$ f&#x27;&#x27;&#x27;Location:{\\\\\\\\_[0]}Weather:{\\\\\\\\_[1]}Attractions:{\\\\\\\\_[2]}&#x27;&#x27;&#x27;unwrap:true`\\\\n```\\\\nThis step:\\\\n* Processes up to 3 locations in parallel\\\\n* For each location tuple:\\\\n* Sends a prompt to the AI model\\\\n* Includes location, weather, and attraction data\\\\n* Generates a personalized itinerary#### [\\\\u200b\\\\n](#step-5:-format-final-output)\\\\nStep 5: Format Final Output\\\\n```\\\\n`-evaluate:final\\\\\\\\_plan:|-$ &#x27;&#x27;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n---------------\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n&#x27;&#x27;.join(activity for activity in \\\\\\\\_)`\\\\n```\\\\nThis step:\\\\n* Combines all itineraries into a single output\\\\n* Separates each itinerary with a divider## [\\\\u200b\\\\n](#example-output)\\\\nExample Output\\\\nAn example output when running this task with an input of`[&quot;New York&quot;, &quot;London&quot;, &quot;Paris&quot;, &quot;Tokyo&quot;, &quot;Sydney&quot;]`:\\\\nHere’s a detailed itinerary for visiting top tourist attractions in New York, considering the current weather conditions.\\\\n### [\\\\u200b\\\\n](#day-1:-iconic-landmarks-and-observation-decks)\\\\nDay 1: Iconic Landmarks and Observation Decks\\\\n* **Morning:**\\\\n* **Top of the Rock Observation Deck:**Start your day with a visit to the Top of the Rock Observation Deck at Rockefeller Plaza. The panoramic 360-degree views from the 70th floor are a must-see. Dress warmly as it feels like 5.2°C outside, and it’s quite windy.\\\\n* **Link for more info:**[Tripadvisor - Top of the Rock](https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html)\\\\n* **Afternoon:**\\\\n* **St. Patrick’s Cathedral:**Just a short walk from Rockefeller Plaza, explore the stunning architecture of St. Patrick’s Cathedral. The overcast skies will provide a dramatic backdrop for photos.\\\\n* **Fifth Avenue:**Enjoy a leisurely stroll along Fifth Avenue, visiting iconic stores and landmarks.\\\\n* **Evening:**\\\\n* **Times Square:**Experience the vibrant lights and energy of Times Square. The overcast clouds might enhance the brightness of the neon lights.### [\\\\u200b\\\\n](#day-2:-culture-and-history)\\\\nDay 2: Culture and History\\\\n* **Morning:**\\\\n* **The Museum of Modern Art (MoMA):**Spend your morning exploring MoMA’s vast collection of modern and contemporary art. This indoor activity is perfect for a cloudy day.\\\\n* **Afternoon:**\\\\n* **Central Park:**Head to Central Park for a refreshing walk. With 100% cloud cover, it’s a great day to explore the park without the harsh sun. Consider visiting the Central Park Zoo or taking a guided tour.\\\\n* **Evening:**\\\\n* **Broadway Show:**End your day with a Broadway show. It’s an ideal indoor activity to avoid the chilly weather outside. Book tickets in advance for popular shows.### [\\\\u200b\\\\n](#day-3:-historical-and-educational)\\\\nDay 3: Historical and Educational\\\\n* **Morning:**\\\\n* **Statue of Liberty and Ellis Island:**Take a ferry to visit these iconic sites. Dress warmly for the ferry ride. The cloud cover will provide a unique perspective for photos.\\\\n* **Afternoon:**\\\\n* **9/11 Memorial and Museum:**Spend your afternoon reflecting at the 9/11 Memorial and exploring the museum exhibits.\\\\n* **Evening:**\\\\n* **Brooklyn Bridge:**Walk across the Brooklyn Bridge and enjoy the city skyline. With the wind speed at 5.81 m/s, be prepared for breezy conditions.### [\\\\u200b\\\\n](#additional-tips:)\\\\nAdditional Tips:\\\\n* **Clothing:**Wear layers to keep warm, as the temperature feels colder than it actually is.\\\\n* **Dining:**New York offers a plethora of dining options. Consider trying some local favorites like a classic New York bagel or pizza.\\\\n* **Transportation:**Utilize the subway for efficient travel across the city. Taxis and ride-sharing services are also readily available.\\\\nFor more details on attractions and guided tours, you can visit[USA Guided Tours](https://usaguidedtours.com/nyc/attraction/)and[I Love NY](https://www.iloveny.com/places-to-go/new-york-city/attractions/).\\\\n## [\\\\u200b\\\\n](#enjoy-your-trip-to-new-york-city)\\\\nEnjoy your trip to New York City!\\\\n**Day 1: Exploring Iconic London Landmarks**\\\\n**Morning:**\\\\n1. **Buckingham Palace**\\\\n* Start your day early with a visit to Buckingham Palace. Arrive by 9:30 AM to catch the Changing of the Guard ceremony, which typically starts at 11:00 AM. Enjoy the majestic architecture and the surrounding gardens.\\\\n* Weather Tip: With the overcast clouds, it might feel chilly, so dress warmly and bring an umbrella just in case.\\\\n**Midday:**2.**Westminster Abbey**\\\\n* Head towards Westminster Abbey, a short walk from Buckingham Palace. This historic church has been the site of many significant events, including royal weddings and coronations. Spend about 1.5 hours exploring.\\\\n1. **Lunch at Borough Market**\\\\n* Take a tube or walk to Borough Market for a variety of food options. It’s a great place to warm up with some hot street food and explore the diverse culinary offerings.\\\\n**Afternoon:**4.**London Eye**\\\\n* After lunch, head to the London Eye. The overcast sky might not offer the clearest views, but the experience is still worthwhile. Pre-book your tickets to avoid long lines and enjoy a 30-minute ride on this iconic Ferris wheel.\\\\n**Evening:**5.**The Globe Theatre**\\\\n* As the day winds down, visit Shakespeare’s Globe Theatre. If there’s a performance, consider attending or simply take a guided tour to learn about the history of this famous theater.\\\\n**Day 2: Museums and Cultural Exploration**\\\\n**Morning:**\\\\n1. **The British Museum**\\\\n* Start your second day at the British Museum. Spend a few hours exploring the vast collection of art and antiquities. Highlights include the Rosetta Stone and the Elgin Marbles.\\\\n**Midday:**2.**Lunch near Covent Garden**\\\\n* Head to Covent Garden for lunch. This area is bustling with restaurants and cafes, perfect for a cozy indoor meal.\\\\n**Afternoon:**3.**The Tower of London**\\\\n* After lunch, make your way to the Tower of London. Delve into England’s rich history and see the Crown Jewels. Allocate about 2-3 hours for this visit.\\\\n**Evening:**4.**Tower Bridge**\\\\n* Conclude your day with a walk across Tower Bridge. The views of the Thames River and the cityscape are beautiful, even on a cloudy evening.\\\\n**Day 3: Leisure and Local Experiences**\\\\n**Morning:**\\\\n1. **Natural History Museum**\\\\n* Begin your last day at the Natural History Museum. It’s a family-friendly museum with fascinating exhibits, including dinosaur skeletons and a model of a blue whale.\\\\n**Midday:**2.**Lunch at South Kensington**\\\\n* Enjoy a relaxed lunch in South Kensington. There are plenty of options, from casual cafes to high-end dining.\\\\n**Afternoon:**3.**Hyde Park**\\\\n* Spend your afternoon strolling through Hyde Park. Visit the Serpentine Galleries if you’re interested in contemporary art. The park’s natural beauty is a peaceful retreat amidst the city hustle.\\\\n**Evening:**4.**Dinner and a Show in the West End**\\\\n* End your London adventure with a memorable dinner followed by a theater show in the West End. Book your tickets in advance for popular shows.\\\\n**Additional Tips:**\\\\n* Always check the attraction websites for any specific COVID-19 guidelines or changes in operating hours.\\\\n* London’s public transport system is efficient; consider getting an Oyster card for convenient travel.\\\\n* Don’t forget to dress in layers to adapt to the chilly weather, and always have your camera ready to capture memories.\\\\nHere’s a detailed itinerary for your visit to Paris, considering the current snowy weather conditions and top attractions:\\\\n### [\\\\u200b\\\\n](#day-1:-embrace-the-iconic-landmarks)\\\\nDay 1: Embrace the Iconic Landmarks\\\\n**Morning: Eiffel Tower**\\\\n* **Time:**9:00 AM\\\\n* **Details:**Begin your day with a visit to the Eiffel Tower. Even in the snow, the tower offers stunning views of Paris. Dress warmly and enjoy hot chocolate from nearby cafes.\\\\n* **Link for more info:**[Tripadvisor - Things to Do in Paris](https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html)\\\\n**Afternoon: Louvre Museum**\\\\n* **Time:**1:00 PM\\\\n* **Details:**Spend your afternoon indoors at the Louvre Museum. With its vast collection of art and history, it’s a perfect way to escape the cold. Consider taking a guided tour to make the most of your visit.\\\\n* **Link for more info:**[U.S. News Travel - Things To Do](https://travel.usnews.com/Paris_France/Things_To_Do/)\\\\n**Evening: Seine River Cruise**\\\\n* **Time:**6:00 PM\\\\n* **Details:**End your day with a magical Seine River cruise. The snow adds a picturesque touch to the illuminated landmarks. Ensure to book a heated cruise for comfort.### [\\\\u200b\\\\n](#day-2:-explore-cultural-and-historical-treasures)\\\\nDay 2: Explore Cultural and Historical Treasures\\\\n**Morning: Notre-Dame Cathedral**\\\\n* **Time:**9:30 AM\\\\n* **Details:**Visit the iconic Notre-Dame Cathedral. Although some areas may be under restoration, its architecture and history are worth experiencing. Warm clothing is essential as the interior can be chilly.\\\\n**Afternoon: Musée d’Orsay**\\\\n* **Time:**1:30 PM\\\\n* **Details:**Head to the Musée d’Orsay, renowned for its Impressionist masterpieces. This indoor activity is ideal for escaping the cold and enjoying world-class art.\\\\n**Evening: Montmartre and Sacré-Cœur**\\\\n* **Time:**5:00 PM\\\\n* **Details:**Wander through the charming streets of Montmartre and visit the Sacré-Cœur Basilica. The view of Paris in the snow is breathtaking. Enjoy a cozy dinner at a local bistro in Montmartre.### [\\\\u200b\\\\n](#day-3:-discover-hidden-gems-and-local-flavors)\\\\nDay 3: Discover Hidden Gems and Local Flavors\\\\n**Morning: Le Marais District**\\\\n* **Time:**10:00 AM\\\\n* **Details:**Explore Le Marais, known for its vibrant street art, boutiques, and cafes. Enjoy a leisurely breakfast and shop for unique souvenirs.\\\\n**Afternoon: Palais Garnier (Opera House)**\\\\n* **Time:**2:00 PM\\\\n* **Details:**Tour the opulent Palais Garnier. Its stunning interiors are a must-see, especially when it’s snowy outside.\\\\n**Evening: Moulin Rouge Show**\\\\n* **Time:**8:00 PM\\\\n* **Details:**Conclude your trip with a classic Parisian experience at the Moulin Rouge. Book in advance to secure a good seat and enjoy the legendary cabaret performance.### [\\\\u200b\\\\n](#additional-tips:-2)\\\\nAdditional Tips:\\\\n* **Weather Preparation:**Wear layers, waterproof boots, and carry an umbrella. The snow and cold wind can be intense.\\\\n* **Dining:**Indulge in warm, hearty French cuisine at local cafes and restaurants. Try dishes like French onion soup, coq au vin, and tarte Tatin.\\\\n* **Transport:**Use public transportation to avoid the snowy streets, and consider purchasing a Paris Visite pass for unlimited travel.## [\\\\u200b\\\\n](#enjoy-your-snowy-adventure-in-paris)\\\\nEnjoy your snowy adventure in Paris!\\\\n**Tokyo Itinerary**\\\\n**Day 1: Arrival and Exploration of Historical and Cultural Sites**\\\\n* **Morning:**\\\\n* **Asakusa District**: Begin your day with a visit to the historic Asakusa district. Explore the iconic Senso-ji Temple, Tokyo’s oldest temple. Enjoy the traditional market streets like Nakamise Street for some shopping and snacks.\\\\n* **Afternoon:**\\\\n* **Tokyo National Museum**: Head to Ueno Park and visit the Tokyo National Museum. Discover Japan’s extensive collection of art and antiquities. This is a great spot to dive into Japanese history and culture.\\\\n* **Evening:**\\\\n* **Dinner in Ueno**: Explore the local dining options around Ueno and enjoy a traditional Japanese dinner.\\\\n**Day 2: Modern Tokyo and Unique Experiences**\\\\n* **Morning:**\\\\n* **Ghibli Museum**: Start your day with a magical visit to the Ghibli Museum in Mitaka. Perfect for fans of Studio Ghibli’s animated films, this museum offers a whimsical look into the creative world of Hayao Miyazaki.\\\\n* **Afternoon:**\\\\n* **Shibuya and Harajuku**: Head towards the bustling areas of Shibuya and Harajuku. Witness the famous Shibuya Crossing and explore the trendy shops of Harajuku, especially Takeshita Street.\\\\n* **Evening:**\\\\n* **Golden Gai**: Conclude your day in the vibrant Golden Gai district. This area is renowned for its narrow alleys filled with small bars and eateries. Experience the unique nightlife of Tokyo here.\\\\n**Day 3: Relax and Explore Green Spaces**\\\\n* **Morning:**\\\\n* **Shinjuku Gyoen National Garden**: Spend a peaceful morning strolling through the beautiful Shinjuku Gyoen, one of Tokyo’s largest and most beautiful parks. It’s a perfect spot for relaxation and enjoying nature.\\\\n* **Afternoon:**\\\\n* **Meiji Shrine**: Visit the Meiji Shrine, located in a forested area near Harajuku and Shibuya. It’s a serene place to learn about Shinto traditions and enjoy the tranquil setting.\\\\n* **Evening:**\\\\n* **Tokyo Tower or Skytree**: End your trip with a visit to either Tokyo Tower or Tokyo Skytree for a panoramic view of the city. It’s an unforgettable way to see Tokyo illuminated at night.\\\\n**Weather Considerations:**\\\\n* With the current weather of few clouds and a mild temperature around 10.32°C, it is advisable to wear layers and carry a light jacket for comfort during outdoor activities.\\\\n* Humidity is high (92%), so be prepared for a slightly damp feeling and consider moisture-wicking clothing.\\\\n**Additional Tips:**\\\\n* Always check the opening hours of attractions and book tickets in advance where necessary.\\\\n* Use Tokyo’s efficient public transport to move around easily.\\\\n* Consider visiting the websites linked in the attraction descriptions for more detailed information and current updates.\\\\nHere’s a detailed itinerary for exploring some of Sydney’s top tourist attractions with the current weather conditions in mind. With clear skies and pleasant temperatures, it’s a perfect day to explore the outdoors and enjoy what Sydney has to offer.\\\\n### [\\\\u200b\\\\n](#morning)\\\\nMorning\\\\n**9:00 AM - Sydney Opera House**\\\\n* Begin your day with a visit to the iconic Sydney Opera House. Take a guided tour to learn about its history and architecture. Tours are available in multiple languages.\\\\n* **Link:**[Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\\\\n**11:00 AM - Royal Botanic Garden Sydney**\\\\n* Just a short walk from the Opera House, enjoy a leisurely stroll through the Royal Botanic Garden. The clear skies will offer beautiful views of the diverse plant life and the Sydney Harbour.### [\\\\u200b\\\\n](#afternoon)\\\\nAfternoon\\\\n**12:30 PM - Lunch at Opera Bar**\\\\n* Head back to Opera Bar for lunch. Enjoy a refreshing cocktail with stunning views of the Sydney Harbour Bridge and the waterfront.\\\\n* **Link:**[Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\\\\n**2:00 PM - Sydney Harbour Bridge**\\\\n* After lunch, take a scenic walk across the Sydney Harbour Bridge. If you’re up for it, consider the BridgeClimb for breathtaking panoramic views of the city.\\\\n**4:00 PM - The Rocks**\\\\n* Explore The Rocks, one of Sydney’s most historic areas. Wander through the cobbled streets, visit the local markets, and perhaps enjoy a cup of coffee at a nearby café.### [\\\\u200b\\\\n](#evening)\\\\nEvening\\\\n**6:00 PM - Darling Harbour**\\\\n* Make your way to Darling Harbour for the evening. Here you can visit attractions such as the SEA LIFE Sydney Aquarium or simply enjoy the lively atmosphere by the waterfront.\\\\n**8:00 PM - Dinner at a Local Restaurant**\\\\n* Conclude your day with dinner at one of Darling Harbour’s many restaurants. Choose from a variety of cuisines while enjoying the vibrant night scene.### [\\\\u200b\\\\n](#additional-suggestions)\\\\nAdditional Suggestions\\\\n* If you’re interested in more unique experiences, consider visiting some of the attractions listed on[Time Out Sydney](https://www.timeout.com/sydney/attractions/tourist-attractions-that-dont-suck), which includes thrilling adventures and scenic tours.\\\\nWith clear skies and mild temperatures, this itinerary offers a balanced mix of cultural, historical, and scenic experiences. Enjoy your visit to Sydney!\\\\n## [\\\\u200b\\\\n](#support)\\\\nSupport\\\\nIf you need help with further questions in Julep:\\\\n* Join our[Discord community](https://discord.com/invite/JTSBGRZrzj)\\\\n* Check the[GitHub repository](https://github.com/julep-ai/julep)\\\\n* Contact support at[hey@julep.ai](mailto:hey@julep.ai)\\\\n[Agentic Patterns](https://docs.julep.ai/advanced/agentic-patterns)[Multi-Agent Multi-User Sessions](https://docs.julep.ai/advanced/multi-agent-multi-user-sessions)\\\\n[x](https://x.com/julepai)[github](https://github.com/julep-ai/julep)[linkedin](https://www.linkedin.com/company/julep-ai)\\\\n[Powered by Mintlify](https://mintlify.com/preview-request?utm_campaign=poweredBy&amp;utm_medium=docs&amp;utm_source=docs.julep.ai)\\\\nOn this page\\\\n* [Overview](#overview)\\\\n* [1. Input Schema](#1-input-schema)\\\\n* [2. Tools Configuration](#2-tools-configuration)\\\\n* [3. Main Workflow Steps](#3-main-workflow-steps)\\\\n* [Step 1: Fetch Weather Data](#step-1:-fetch-weather-data)\\\\n* [Step 2: Search for Tourist Attractions](#step-2:-search-for-tourist-attractions)\\\\n* [Step 3: Combine Data](#step-3:-combine-data)\\\\n* [Step 4: Generate Itineraries](#step-4:-generate-itineraries)\\\\n* [Step 5: Format Final Output](#step-5:-format-final-output)\\\\n* [Example Output](#example-output)\\\\n* [Support](#support)\\\\n</body></html>'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'documents': '[Julephome page](https://docs.julep.ai/)v1\\\\nSearch Julep docs\\\\n* [Community](https://discord.gg/p4c7ehs4vD)\\\\n* [Changelog](https://github.com/julep-ai/julep/blob/dev/CHANGELOG.md)\\\\n##### Get Started\\\\n* [\\\\nWelcome to Julep\\\\n](https://docs.julep.ai/introduction/julep)\\\\n* [\\\\nInstallation\\\\n](https://docs.julep.ai/introduction/install)\\\\n* [\\\\nQuick Start\\\\n](https://docs.julep.ai/introduction/quickstart)\\\\n##### Julep CLI\\\\n* [\\\\nGetting Started\\\\n](https://docs.julep.ai/julepcli/introduction)\\\\n* [\\\\nCommand Reference\\\\n](https://docs.julep.ai/julepcli/commands)\\\\n##### Core Concepts\\\\n* [\\\\nAgents\\\\n](https://docs.julep.ai/concepts/agents)\\\\n* [\\\\nTasks\\\\n](https://docs.julep.ai/concepts/tasks)\\\\n* [\\\\nSessions\\\\n](https://docs.julep.ai/concepts/sessions)\\\\n* [\\\\nTools\\\\n](https://docs.julep.ai/concepts/tools)\\\\n* [\\\\nUsers\\\\n](https://docs.julep.ai/concepts/users)\\\\n* [\\\\nDocuments (RAG)\\\\n](https://docs.julep.ai/concepts/docs)\\\\n* [\\\\nExecutions\\\\n](https://docs.julep.ai/concepts/execution)\\\\n##### Tutorials\\\\n* [\\\\nBrowser Use\\\\n](https://docs.julep.ai/tutorials/browser-use)\\\\n* [\\\\nRAG Chatbot for Website\\\\n](https://docs.julep.ai/tutorials/rag-chatbot)\\\\n* [\\\\nTrip Planning\\\\n](https://docs.julep.ai/tutorials/trip-planning)\\\\n* [\\\\nVideo Processing\\\\n](https://docs.julep.ai/tutorials/video-processing)\\\\n##### Integrations\\\\n* [\\\\nSupported Models\\\\n](https://docs.julep.ai/integrations/supported-models)\\\\n* [\\\\nSupported Integrations\\\\n](https://docs.julep.ai/integrations/supported-integrations)\\\\n* [\\\\nAdd New Integrations\\\\n](https://docs.julep.ai/integrations/contributing-integrations)\\\\n* Communication &amp; Data\\\\n* Media &amp; File Processing\\\\n* Search\\\\n* Web &amp; Browser Automation\\\\n##### Advanced Topics\\\\n* [\\\\nNew Syntax (Important)\\\\n](https://docs.julep.ai/advanced/new-syntax)\\\\n* [\\\\nPython Expression\\\\n](https://docs.julep.ai/advanced/python-expression)\\\\n* [\\\\nTypes of Task Steps\\\\n](https://docs.julep.ai/advanced/types-of-task-steps)\\\\n* [\\\\nChat Features in Julep\\\\n](https://docs.julep.ai/advanced/chat)\\\\n* [\\\\nRender Endpoint in Julep\\\\n](https://docs.julep.ai/advanced/render)\\\\n* [\\\\nFiles (Multimedia)\\\\n](https://docs.julep.ai/advanced/files)\\\\n* [\\\\nArchitecture Deep Dive\\\\n](https://docs.julep.ai/advanced/architecture-deep-dive)\\\\n* [\\\\nAgentic Patterns\\\\n](https://docs.julep.ai/advanced/agentic-patterns)\\\\n* [\\\\nExecution Lifecycle\\\\n](https://docs.julep.ai/advanced/lifecycle)\\\\n* [\\\\nMulti-Agent Multi-User Sessions\\\\n](https://docs.julep.ai/advanced/multi-agent-multi-user-sessions)\\\\n* [\\\\nLocal Setup\\\\n](https://docs.julep.ai/advanced/localsetup)\\\\n[Julephome page](https://docs.julep.ai/)\\\\nv1\\\\nSearch Julep docs\\\\nSearch...\\\\nNavigation\\\\nGet Started\\\\nWelcome to Julep\\\\n[Home\\\\n](https://docs.julep.ai/introduction/julep)[Guides\\\\n](https://docs.julep.ai/guides/getting-started/chat-with-an-agent)[SDK\\\\n](https://docs.julep.ai/sdks)[🚨 Open Responses API (Alpha)\\\\n](https://docs.julep.ai/responses/quickstart)[API Reference\\\\n](https://docs.julep.ai/api-reference/agents/list-agents)\\\\n[Home\\\\n](https://docs.julep.ai/introduction/julep)[Guides\\\\n](https://docs.julep.ai/guides/getting-started/chat-with-an-agent)[SDK\\\\n](https://docs.julep.ai/sdks)[🚨 Open Responses API (Alpha)\\\\n](https://docs.julep.ai/responses/quickstart)[API Reference\\\\n](https://docs.julep.ai/api-reference/agents/list-agents)\\\\n* [Support](mailto:developers@julep.ai)\\\\n* [GitHub](https://github.com/julep-ai/julep)\\\\n* [\\\\nGet API Key\\\\n](https://dashboard.julep.ai)\\\\nGet Started\\\\n# Welcome to Julep\\\\nJulep is a platform for creating AI agents that remember past interactions and can perform complex tasks. It offers long-term memory and manages multi-step processes.\\\\nJulep enables the creation of multi-step tasks incorporating decision-making, loops, parallel processing, and integration with numerous external tools and APIs.\\\\nWhile many AI applications are limited to simple, linear chains of prompts and API calls with minimal branching, Julep is built to handle more complex scenarios which:\\\\n* Have multiple steps,\\\\n* Make decisions based on model outputs,\\\\n* Spawn parallel branches,\\\\n* Use lots of tools, and\\\\n* Run for a long time.\\\\nJulep offers a comprehensive set of features designed to help you build sophisticated AI workflows.\\\\n#### Imagine you want to build an AI agent that can do more than just answer simple questions —it needs to handle complex tasks, remember past interactions, and maybe even use other tools or APIs.\\\\nNow since you understand the problem Julep is solving, let’s explore the key features that make Julep stand out.\\\\n## [\\\\u200b\\\\n](#core-features)\\\\nCore Features\\\\n## Persistent AI Agents\\\\nCreate agents that maintain context and remember information across multiple interactions. Agents can learn from past conversations and apply that knowledge to future tasks.\\\\n## Stateful Sessions\\\\nKeep track of conversation history and context across multiple interactions. Sessions can be paused, resumed, and maintain their state indefinitely.\\\\n## Multi-Step Tasks\\\\nBuild complex workflows with decision-making capabilities, loops, and conditional logic. Tasks can be as simple or as sophisticated as needed.\\\\n## Task Management\\\\nHandle long-running tasks that can run indefinitely. Tasks are automatically managed, with built-in support for retries and error handling.\\\\n## [\\\\u200b\\\\n](#advanced-capabilities)\\\\nAdvanced Capabilities\\\\nBuilt-in Tools\\\\nAccess a wide range of built-in tools and easily integrate with external APIs. Tools can be added to agents to extend their capabilities.\\\\nSelf-Healing\\\\nAutomatic retry mechanisms for failed steps, message resending, and robust task management keep your workflows running smoothly.\\\\nRAG Support\\\\nBuilt-in support for Retrieval-Augmented Generation. Use Julep’s document store to build systems that can retrieve and utilize your own data.\\\\nEasy Integration\\\\nSeamlessly integrate with your existing infrastructure using our comprehensive SDKs for Python and Node.js.\\\\n## [\\\\u200b\\\\n](#exploring-the-documentation)\\\\nExploring the Documentation\\\\nDepending on your use case, here are different ways to explore our documentation:\\\\n[\\\\n## For AI Developers\\\\nStart with the Quick Start guide, then dive into Core Concepts and Task Management to build AI-powered applications.\\\\n](https://docs.julep.ai/introduction/quickstart)[\\\\n## For Enterprise Solutions\\\\nFocus on Architecture Deep Dive, Security Features, and Integration Guides to understand enterprise-grade deployment.\\\\n](https://docs.julep.ai/advanced/architecture-deep-dive)[\\\\n## For Researchers &amp; Experimenters\\\\nExplore our Model Configuration, RAG Implementation, and Advanced Features sections to experiment with AI capabilities.\\\\n](https://docs.julep.ai/integrations/supported-models)[\\\\n## For System Integrators\\\\nCheck out our API Reference, SDK Documentation, and Integration Tutorials to connect Julep with existing systems.\\\\n](https://docs.julep.ai/api-reference)\\\\n## [\\\\u200b\\\\n](#next-steps)\\\\nNext Steps\\\\n[\\\\n## Installation\\\\nDetailed setup instructions\\\\n](https://docs.julep.ai/introduction/install)[\\\\n## Quick Start\\\\nEssential concepts and terminology\\\\n](https://docs.julep.ai/introduction/quickstart)[\\\\n## Tutorials\\\\nLearn from practical tutorials\\\\n](https://docs.julep.ai/tutorials)\\\\n## [\\\\u200b\\\\n](#need-help?)\\\\nNeed Help?\\\\n[\\\\n## Join our Community\\\\nGet help and share ideas with other Julep developers\\\\n](https://discord.gg/p4c7ehs4vD)[\\\\n## Contact Support\\\\nReach out to our team for assistance\\\\n](mailto:developers@julep.ai)\\\\n[Installation](https://docs.julep.ai/introduction/install)\\\\n[x](https://x.com/julepai)[github](https://github.com/julep-ai/julep)[linkedin](https://www.linkedin.com/company/julep-ai)\\\\n[Powered by Mintlify](https://mintlify.com/preview-request?utm_campaign=poweredBy&amp;utm_medium=docs&amp;utm_source=docs.julep.ai)\\\\nOn this page\\\\n* [Core Features](#core-features)\\\\n* [Advanced Capabilities](#advanced-capabilities)\\\\n* [Exploring the Documentation](#exploring-the-documentation)\\\\n* [Next Steps](#next-steps)\\\\n* [Need Help?](#need-help?)\\\\n</body></html> [Julephome page](https://docs.julep.ai/)v1\\\\nSearch Julep docs\\\\n* [Community](https://discord.gg/p4c7ehs4vD)\\\\n* [Changelog](https://github.com/julep-ai/julep/blob/dev/CHANGELOG.md)\\\\n##### Get Started\\\\n* [\\\\nWelcome to Julep\\\\n](https://docs.julep.ai/introduction/julep)\\\\n* [\\\\nInstallation\\\\n](https://docs.julep.ai/introduction/install)\\\\n* [\\\\nQuick Start\\\\n](https://docs.julep.ai/introduction/quickstart)\\\\n##### Julep CLI\\\\n* [\\\\nGetting Started\\\\n](https://docs.julep.ai/julepcli/introduction)\\\\n* [\\\\nCommand Reference\\\\n](https://docs.julep.ai/julepcli/commands)\\\\n##### Core Concepts\\\\n* [\\\\nAgents\\\\n](https://docs.julep.ai/concepts/agents)\\\\n* [\\\\nTasks\\\\n](https://docs.julep.ai/concepts/tasks)\\\\n* [\\\\nSessions\\\\n](https://docs.julep.ai/concepts/sessions)\\\\n* [\\\\nTools\\\\n](https://docs.julep.ai/concepts/tools)\\\\n* [\\\\nUsers\\\\n](https://docs.julep.ai/concepts/users)\\\\n* [\\\\nDocuments (RAG)\\\\n](https://docs.julep.ai/concepts/docs)\\\\n* [\\\\nExecutions\\\\n](https://docs.julep.ai/concepts/execution)\\\\n##### Tutorials\\\\n* [\\\\nBrowser Use\\\\n](https://docs.julep.ai/tutorials/browser-use)\\\\n* [\\\\nRAG Chatbot for Website\\\\n](https://docs.julep.ai/tutorials/rag-chatbot)\\\\n* [\\\\nTrip Planning\\\\n](https://docs.julep.ai/tutorials/trip-planning)\\\\n* [\\\\nVideo Processing\\\\n](https://docs.julep.ai/tutorials/video-processing)\\\\n##### Integrations\\\\n* [\\\\nSupported Models\\\\n](https://docs.julep.ai/integrations/supported-models)\\\\n* [\\\\nSupported Integrations\\\\n](https://docs.julep.ai/integrations/supported-integrations)\\\\n* [\\\\nAdd New Integrations\\\\n](https://docs.julep.ai/integrations/contributing-integrations)\\\\n* Communication &amp; Data\\\\n* Media &amp; File Processing\\\\n* Search\\\\n* Web &amp; Browser Automation\\\\n##### Advanced Topics\\\\n* [\\\\nNew Syntax (Important)\\\\n](https://docs.julep.ai/advanced/new-syntax)\\\\n* [\\\\nPython Expression\\\\n](https://docs.julep.ai/advanced/python-expression)\\\\n* [\\\\nTypes of Task Steps\\\\n](https://docs.julep.ai/advanced/types-of-task-steps)\\\\n* [\\\\nChat Features in Julep\\\\n](https://docs.julep.ai/advanced/chat)\\\\n* [\\\\nRender Endpoint in Julep\\\\n](https://docs.julep.ai/advanced/render)\\\\n* [\\\\nFiles (Multimedia)\\\\n](https://docs.julep.ai/advanced/files)\\\\n* [\\\\nArchitecture Deep Dive\\\\n](https://docs.julep.ai/advanced/architecture-deep-dive)\\\\n* [\\\\nAgentic Patterns\\\\n](https://docs.julep.ai/advanced/agentic-patterns)\\\\n* [\\\\nExecution Lifecycle\\\\n](https://docs.julep.ai/advanced/lifecycle)\\\\n* [\\\\nMulti-Agent Multi-User Sessions\\\\n](https://docs.julep.ai/advanced/multi-agent-multi-user-sessions)\\\\n* [\\\\nLocal Setup\\\\n](https://docs.julep.ai/advanced/localsetup)\\\\n[Julephome page](https://docs.julep.ai/)\\\\nv1\\\\nSearch Julep docs\\\\nSearch...\\\\nNavigation\\\\nAdvanced Topics\\\\nExecution Lifecycle\\\\n[Home\\\\n](https://docs.julep.ai/introduction/julep)[Guides\\\\n](https://docs.julep.ai/guides/getting-started/chat-with-an-agent)[SDK\\\\n](https://docs.julep.ai/sdks)[🚨 Open Responses API (Alpha)\\\\n](https://docs.julep.ai/responses/quickstart)[API Reference\\\\n](https://docs.julep.ai/api-reference/agents/list-agents)\\\\n[Home\\\\n](https://docs.julep.ai/introduction/julep)[Guides\\\\n](https://docs.julep.ai/guides/getting-started/chat-with-an-agent)[SDK\\\\n](https://docs.julep.ai/sdks)[🚨 Open Responses API (Alpha)\\\\n](https://docs.julep.ai/responses/quickstart)[API Reference\\\\n](https://docs.julep.ai/api-reference/agents/list-agents)\\\\n* [Support](mailto:developers@julep.ai)\\\\n* [GitHub](https://github.com/julep-ai/julep)\\\\n* [\\\\nGet API Key\\\\n](https://dashboard.julep.ai)\\\\nAdvanced Topics\\\\n# Execution Lifecycle\\\\nUnderstanding the Lifecycle of Task when executed in Julep\\\\n## [\\\\u200b\\\\n](#overview)\\\\nOverview\\\\nUnderstanding the lifecycle of a Julep task is crucial for building effective workflows.\\\\nLet’s explore this through the lens of a[Trip Plan task](https://docs.julep.ai/tutorials/trip-planning)- a practical example that showcases key aspects of task execution.\\\\nThe Trip Plan task is an ideal example because it demonstrates:\\\\n1. Parallel execution of workflow steps\\\\n2. Integration with multiple external APIs:\\\\n* [Weather API](https://docs.julep.ai/integrations/communicationdata/weather)for current conditions\\\\n* [Brave Search API](https://docs.julep.ai/integrations/search/brave)for attractions\\\\n* Data aggregation from various sources\\\\n* AI-powered personalization of results\\\\nBelow is a visual representation of how this task flows through Julep’s execution lifecycle:\\\\nLifecycle of the Trip Plan Task\\\\nLet’s examine each phase of the execution lifecycle using this task as our guide.\\\\nThis is a simplified representation of the execution lifecycle. In practice, Julephandles many more details and edge cases to ensure robust and efficient task execution.\\\\nOut here in this section, we will be focusing on the main workflow steps of the Trip Plan task and how these steps are executed in Julep.\\\\n### [\\\\u200b\\\\n](#1-input-schema)\\\\n1. Input Schema\\\\nFirst, we define what inputs our task expects:\\\\n```\\\\n`input\\\\\\\\_schema:type:objectproperties:locations:type:arrayitems:type:string`\\\\n```\\\\nThis schema specifies that our task expects an array of location strings (e.g.,`[&quot;New York&quot;, &quot;London&quot;, &quot;Paris&quot;]`).\\\\n### [\\\\u200b\\\\n](#2-tools-configuration)\\\\n2. Tools Configuration\\\\nNext, we define the external tools our task will use:\\\\n```\\\\n`-name:weathertype:integrationintegration:provider:weathersetup:openweathermap\\\\\\\\_api\\\\\\\\_key:{openweathermap\\\\\\\\_api\\\\\\\\_key}-name:internet\\\\\\\\_searchtype:integrationintegration:provider:bravesetup:api\\\\\\\\_key:{brave\\\\\\\\_api\\\\\\\\_key}`\\\\n```\\\\nWe’re using two integrations:\\\\n* The`weather`integration to fetch current weather conditions\\\\n* The`brave`search integration to find tourist attractions### [\\\\u200b\\\\n](#3-main-workflow-steps)\\\\n3. Main Workflow Steps\\\\n#### [\\\\u200b\\\\n](#step-1:-fetch-weather-data)\\\\nStep 1: Fetch Weather Data\\\\n```\\\\n`-over:$ steps[0].input.locationsmap:tool:weatherarguments:location:$ \\\\\\\\_`\\\\n```\\\\nThis step:\\\\n* Iterates over each location in the input array\\\\n* Calls the weather API for each location\\\\n* The`\\\\\\\\_`represents the current location in the iteration#### [\\\\u200b\\\\n](#step-2:-search-for-tourist-attractions)\\\\nStep 2: Search for Tourist Attractions\\\\n```\\\\n`-over:$ steps[0].input.locationsmap:tool:internet\\\\\\\\_searcharguments:query:$ &#x27;&#x27;tourist attractions in &#x27;&#x27; + \\\\\\\\_`\\\\n```\\\\nThis step:\\\\n* Iterates over the locations again\\\\n* Searches for tourist attractions in each location\\\\n* Constructs a search query by concatenating “tourist attractions in ”with the location#### [\\\\u200b\\\\n](#step-3:-combine-data)\\\\nStep 3: Combine Data\\\\n```\\\\n`-evaluate:zipped:|-$ list(zip(steps[0].input.locations,[output[&#x27;result&#x27;]for output in steps[0].output],steps[1].output))`\\\\n```\\\\nThis step:\\\\n* Combines the data from previous steps into tuples\\\\n* Each tuple contains: (location, weather\\\\\\\\_data, attractions\\\\\\\\_data)\\\\n* Uses Python’s`zip`function to align the data#### [\\\\u200b\\\\n](#step-4:-generate-itineraries)\\\\nStep 4: Generate Itineraries\\\\n```\\\\n`-over:$ \\\\\\\\_[&#x27;zipped&#x27;]parallelism:3# Inside the map step, each `\\\\\\\\_` represents the current element in the list# which is a tuple of (location, weather, attractions)map:prompt:-role:systemcontent:&gt;-$ f&#x27;&#x27;&#x27;You are{agent.name}. Your task is to create a detailed itineraryfor visiting tourist attractions in some locations.The user will give you the following information for each location:-The location-The current weather condition-The top tourist attractions&#x27;&#x27;&#x27;-role:usercontent:&gt;-$ f&#x27;&#x27;&#x27;Location:{\\\\\\\\_[0]}Weather:{\\\\\\\\_[1]}Attractions:{\\\\\\\\_[2]}&#x27;&#x27;&#x27;unwrap:true`\\\\n```\\\\nThis step:\\\\n* Processes up to 3 locations in parallel\\\\n* For each location tuple:\\\\n* Sends a prompt to the AI model\\\\n* Includes location, weather, and attraction data\\\\n* Generates a personalized itinerary#### [\\\\u200b\\\\n](#step-5:-format-final-output)\\\\nStep 5: Format Final Output\\\\n```\\\\n`-evaluate:final\\\\\\\\_plan:|-$ &#x27;&#x27;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n---------------\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\n&#x27;&#x27;.join(activity for activity in \\\\\\\\_)`\\\\n```\\\\nThis step:\\\\n* Combines all itineraries into a single output\\\\n* Separates each itinerary with a divider## [\\\\u200b\\\\n](#example-output)\\\\nExample Output\\\\nAn example output when running this task with an input of`[&quot;New York&quot;, &quot;London&quot;, &quot;Paris&quot;, &quot;Tokyo&quot;, &quot;Sydney&quot;]`:\\\\nHere’s a detailed itinerary for visiting top tourist attractions in New York, considering the current weather conditions.\\\\n### [\\\\u200b\\\\n](#day-1:-iconic-landmarks-and-observation-decks)\\\\nDay 1: Iconic Landmarks and Observation Decks\\\\n* **Morning:**\\\\n* **Top of the Rock Observation Deck:**Start your day with a visit to the Top of the Rock Observation Deck at Rockefeller Plaza. The panoramic 360-degree views from the 70th floor are a must-see. Dress warmly as it feels like 5.2°C outside, and it’s quite windy.\\\\n* **Link for more info:**[Tripadvisor - Top of the Rock](https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html)\\\\n* **Afternoon:**\\\\n* **St. Patrick’s Cathedral:**Just a short walk from Rockefeller Plaza, explore the stunning architecture of St. Patrick’s Cathedral. The overcast skies will provide a dramatic backdrop for photos.\\\\n* **Fifth Avenue:**Enjoy a leisurely stroll along Fifth Avenue, visiting iconic stores and landmarks.\\\\n* **Evening:**\\\\n* **Times Square:**Experience the vibrant lights and energy of Times Square. The overcast clouds might enhance the brightness of the neon lights.### [\\\\u200b\\\\n](#day-2:-culture-and-history)\\\\nDay 2: Culture and History\\\\n* **Morning:**\\\\n* **The Museum of Modern Art (MoMA):**Spend your morning exploring MoMA’s vast collection of modern and contemporary art. This indoor activity is perfect for a cloudy day.\\\\n* **Afternoon:**\\\\n* **Central Park:**Head to Central Park for a refreshing walk. With 100% cloud cover, it’s a great day to explore the park without the harsh sun. Consider visiting the Central Park Zoo or taking a guided tour.\\\\n* **Evening:**\\\\n* **Broadway Show:**End your day with a Broadway show. It’s an ideal indoor activity to avoid the chilly weather outside. Book tickets in advance for popular shows.### [\\\\u200b\\\\n](#day-3:-historical-and-educational)\\\\nDay 3: Historical and Educational\\\\n* **Morning:**\\\\n* **Statue of Liberty and Ellis Island:**Take a ferry to visit these iconic sites. Dress warmly for the ferry ride. The cloud cover will provide a unique perspective for photos.\\\\n* **Afternoon:**\\\\n* **9/11 Memorial and Museum:**Spend your afternoon reflecting at the 9/11 Memorial and exploring the museum exhibits.\\\\n* **Evening:**\\\\n* **Brooklyn Bridge:**Walk across the Brooklyn Bridge and enjoy the city skyline. With the wind speed at 5.81 m/s, be prepared for breezy conditions.### [\\\\u200b\\\\n](#additional-tips:)\\\\nAdditional Tips:\\\\n* **Clothing:**Wear layers to keep warm, as the temperature feels colder than it actually is.\\\\n* **Dining:**New York offers a plethora of dining options. Consider trying some local favorites like a classic New York bagel or pizza.\\\\n* **Transportation:**Utilize the subway for efficient travel across the city. Taxis and ride-sharing services are also readily available.\\\\nFor more details on attractions and guided tours, you can visit[USA Guided Tours](https://usaguidedtours.com/nyc/attraction/)and[I Love NY](https://www.iloveny.com/places-to-go/new-york-city/attractions/).\\\\n## [\\\\u200b\\\\n](#enjoy-your-trip-to-new-york-city)\\\\nEnjoy your trip to New York City!\\\\n**Day 1: Exploring Iconic London Landmarks**\\\\n**Morning:**\\\\n1. **Buckingham Palace**\\\\n* Start your day early with a visit to Buckingham Palace. Arrive by 9:30 AM to catch the Changing of the Guard ceremony, which typically starts at 11:00 AM. Enjoy the majestic architecture and the surrounding gardens.\\\\n* Weather Tip: With the overcast clouds, it might feel chilly, so dress warmly and bring an umbrella just in case.\\\\n**Midday:**2.**Westminster Abbey**\\\\n* Head towards Westminster Abbey, a short walk from Buckingham Palace. This historic church has been the site of many significant events, including royal weddings and coronations. Spend about 1.5 hours exploring.\\\\n1. **Lunch at Borough Market**\\\\n* Take a tube or walk to Borough Market for a variety of food options. It’s a great place to warm up with some hot street food and explore the diverse culinary offerings.\\\\n**Afternoon:**4.**London Eye**\\\\n* After lunch, head to the London Eye. The overcast sky might not offer the clearest views, but the experience is still worthwhile. Pre-book your tickets to avoid long lines and enjoy a 30-minute ride on this iconic Ferris wheel.\\\\n**Evening:**5.**The Globe Theatre**\\\\n* As the day winds down, visit Shakespeare’s Globe Theatre. If there’s a performance, consider attending or simply take a guided tour to learn about the history of this famous theater.\\\\n**Day 2: Museums and Cultural Exploration**\\\\n**Morning:**\\\\n1. **The British Museum**\\\\n* Start your second day at the British Museum. Spend a few hours exploring the vast collection of art and antiquities. Highlights include the Rosetta Stone and the Elgin Marbles.\\\\n**Midday:**2.**Lunch near Covent Garden**\\\\n* Head to Covent Garden for lunch. This area is bustling with restaurants and cafes, perfect for a cozy indoor meal.\\\\n**Afternoon:**3.**The Tower of London**\\\\n* After lunch, make your way to the Tower of London. Delve into England’s rich history and see the Crown Jewels. Allocate about 2-3 hours for this visit.\\\\n**Evening:**4.**Tower Bridge**\\\\n* Conclude your day with a walk across Tower Bridge. The views of the Thames River and the cityscape are beautiful, even on a cloudy evening.\\\\n**Day 3: Leisure and Local Experiences**\\\\n**Morning:**\\\\n1. **Natural History Museum**\\\\n* Begin your last day at the Natural History Museum. It’s a family-friendly museum with fascinating exhibits, including dinosaur skeletons and a model of a blue whale.\\\\n**Midday:**2.**Lunch at South Kensington**\\\\n* Enjoy a relaxed lunch in South Kensington. There are plenty of options, from casual cafes to high-end dining.\\\\n**Afternoon:**3.**Hyde Park**\\\\n* Spend your afternoon strolling through Hyde Park. Visit the Serpentine Galleries if you’re interested in contemporary art. The park’s natural beauty is a peaceful retreat amidst the city hustle.\\\\n**Evening:**4.**Dinner and a Show in the West End**\\\\n* End your London adventure with a memorable dinner followed by a theater show in the West End. Book your tickets in advance for popular shows.\\\\n**Additional Tips:**\\\\n* Always check the attraction websites for any specific COVID-19 guidelines or changes in operating hours.\\\\n* London’s public transport system is efficient; consider getting an Oyster card for convenient travel.\\\\n* Don’t forget to dress in layers to adapt to the chilly weather, and always have your camera ready to capture memories.\\\\nHere’s a detailed itinerary for your visit to Paris, considering the current snowy weather conditions and top attractions:\\\\n### [\\\\u200b\\\\n](#day-1:-embrace-the-iconic-landmarks)\\\\nDay 1: Embrace the Iconic Landmarks\\\\n**Morning: Eiffel Tower**\\\\n* **Time:**9:00 AM\\\\n* **Details:**Begin your day with a visit to the Eiffel Tower. Even in the snow, the tower offers stunning views of Paris. Dress warmly and enjoy hot chocolate from nearby cafes.\\\\n* **Link for more info:**[Tripadvisor - Things to Do in Paris](https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html)\\\\n**Afternoon: Louvre Museum**\\\\n* **Time:**1:00 PM\\\\n* **Details:**Spend your afternoon indoors at the Louvre Museum. With its vast collection of art and history, it’s a perfect way to escape the cold. Consider taking a guided tour to make the most of your visit.\\\\n* **Link for more info:**[U.S. News Travel - Things To Do](https://travel.usnews.com/Paris_France/Things_To_Do/)\\\\n**Evening: Seine River Cruise**\\\\n* **Time:**6:00 PM\\\\n* **Details:**End your day with a magical Seine River cruise. The snow adds a picturesque touch to the illuminated landmarks. Ensure to book a heated cruise for comfort.### [\\\\u200b\\\\n](#day-2:-explore-cultural-and-historical-treasures)\\\\nDay 2: Explore Cultural and Historical Treasures\\\\n**Morning: Notre-Dame Cathedral**\\\\n* **Time:**9:30 AM\\\\n* **Details:**Visit the iconic Notre-Dame Cathedral. Although some areas may be under restoration, its architecture and history are worth experiencing. Warm clothing is essential as the interior can be chilly.\\\\n**Afternoon: Musée d’Orsay**\\\\n* **Time:**1:30 PM\\\\n* **Details:**Head to the Musée d’Orsay, renowned for its Impressionist masterpieces. This indoor activity is ideal for escaping the cold and enjoying world-class art.\\\\n**Evening: Montmartre and Sacré-Cœur**\\\\n* **Time:**5:00 PM\\\\n* **Details:**Wander through the charming streets of Montmartre and visit the Sacré-Cœur Basilica. The view of Paris in the snow is breathtaking. Enjoy a cozy dinner at a local bistro in Montmartre.### [\\\\u200b\\\\n](#day-3:-discover-hidden-gems-and-local-flavors)\\\\nDay 3: Discover Hidden Gems and Local Flavors\\\\n**Morning: Le Marais District**\\\\n* **Time:**10:00 AM\\\\n* **Details:**Explore Le Marais, known for its vibrant street art, boutiques, and cafes. Enjoy a leisurely breakfast and shop for unique souvenirs.\\\\n**Afternoon: Palais Garnier (Opera House)**\\\\n* **Time:**2:00 PM\\\\n* **Details:**Tour the opulent Palais Garnier. Its stunning interiors are a must-see, especially when it’s snowy outside.\\\\n**Evening: Moulin Rouge Show**\\\\n* **Time:**8:00 PM\\\\n* **Details:**Conclude your trip with a classic Parisian experience at the Moulin Rouge. Book in advance to secure a good seat and enjoy the legendary cabaret performance.### [\\\\u200b\\\\n](#additional-tips:-2)\\\\nAdditional Tips:\\\\n* **Weather Preparation:**Wear layers, waterproof boots, and carry an umbrella. The snow and cold wind can be intense.\\\\n* **Dining:**Indulge in warm, hearty French cuisine at local cafes and restaurants. Try dishes like French onion soup, coq au vin, and tarte Tatin.\\\\n* **Transport:**Use public transportation to avoid the snowy streets, and consider purchasing a Paris Visite pass for unlimited travel.## [\\\\u200b\\\\n](#enjoy-your-snowy-adventure-in-paris)\\\\nEnjoy your snowy adventure in Paris!\\\\n**Tokyo Itinerary**\\\\n**Day 1: Arrival and Exploration of Historical and Cultural Sites**\\\\n* **Morning:**\\\\n* **Asakusa District**: Begin your day with a visit to the historic Asakusa district. Explore the iconic Senso-ji Temple, Tokyo’s oldest temple. Enjoy the traditional market streets like Nakamise Street for some shopping and snacks.\\\\n* **Afternoon:**\\\\n* **Tokyo National Museum**: Head to Ueno Park and visit the Tokyo National Museum. Discover Japan’s extensive collection of art and antiquities. This is a great spot to dive into Japanese history and culture.\\\\n* **Evening:**\\\\n* **Dinner in Ueno**: Explore the local dining options around Ueno and enjoy a traditional Japanese dinner.\\\\n**Day 2: Modern Tokyo and Unique Experiences**\\\\n* **Morning:**\\\\n* **Ghibli Museum**: Start your day with a magical visit to the Ghibli Museum in Mitaka. Perfect for fans of Studio Ghibli’s animated films, this museum offers a whimsical look into the creative world of Hayao Miyazaki.\\\\n* **Afternoon:**\\\\n* **Shibuya and Harajuku**: Head towards the bustling areas of Shibuya and Harajuku. Witness the famous Shibuya Crossing and explore the trendy shops of Harajuku, especially Takeshita Street.\\\\n* **Evening:**\\\\n* **Golden Gai**: Conclude your day in the vibrant Golden Gai district. This area is renowned for its narrow alleys filled with small bars and eateries. Experience the unique nightlife of Tokyo here.\\\\n**Day 3: Relax and Explore Green Spaces**\\\\n* **Morning:**\\\\n* **Shinjuku Gyoen National Garden**: Spend a peaceful morning strolling through the beautiful Shinjuku Gyoen, one of Tokyo’s largest and most beautiful parks. It’s a perfect spot for relaxation and enjoying nature.\\\\n* **Afternoon:**\\\\n* **Meiji Shrine**: Visit the Meiji Shrine, located in a forested area near Harajuku and Shibuya. It’s a serene place to learn about Shinto traditions and enjoy the tranquil setting.\\\\n* **Evening:**\\\\n* **Tokyo Tower or Skytree**: End your trip with a visit to either Tokyo Tower or Tokyo Skytree for a panoramic view of the city. It’s an unforgettable way to see Tokyo illuminated at night.\\\\n**Weather Considerations:**\\\\n* With the current weather of few clouds and a mild temperature around 10.32°C, it is advisable to wear layers and carry a light jacket for comfort during outdoor activities.\\\\n* Humidity is high (92%), so be prepared for a slightly damp feeling and consider moisture-wicking clothing.\\\\n**Additional Tips:**\\\\n* Always check the opening hours of attractions and book tickets in advance where necessary.\\\\n* Use Tokyo’s efficient public transport to move around easily.\\\\n* Consider visiting the websites linked in the attraction descriptions for more detailed information and current updates.\\\\nHere’s a detailed itinerary for exploring some of Sydney’s top tourist attractions with the current weather conditions in mind. With clear skies and pleasant temperatures, it’s a perfect day to explore the outdoors and enjoy what Sydney has to offer.\\\\n### [\\\\u200b\\\\n](#morning)\\\\nMorning\\\\n**9:00 AM - Sydney Opera House**\\\\n* Begin your day with a visit to the iconic Sydney Opera House. Take a guided tour to learn about its history and architecture. Tours are available in multiple languages.\\\\n* **Link:**[Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\\\\n**11:00 AM - Royal Botanic Garden Sydney**\\\\n* Just a short walk from the Opera House, enjoy a leisurely stroll through the Royal Botanic Garden. The clear skies will offer beautiful views of the diverse plant life and the Sydney Harbour.### [\\\\u200b\\\\n](#afternoon)\\\\nAfternoon\\\\n**12:30 PM - Lunch at Opera Bar**\\\\n* Head back to Opera Bar for lunch. Enjoy a refreshing cocktail with stunning views of the Sydney Harbour Bridge and the waterfront.\\\\n* **Link:**[Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\\\\n**2:00 PM - Sydney Harbour Bridge**\\\\n* After lunch, take a scenic walk across the Sydney Harbour Bridge. If you’re up for it, consider the BridgeClimb for breathtaking panoramic views of the city.\\\\n**4:00 PM - The Rocks**\\\\n* Explore The Rocks, one of Sydney’s most historic areas. Wander through the cobbled streets, visit the local markets, and perhaps enjoy a cup of coffee at a nearby café.### [\\\\u200b\\\\n](#evening)\\\\nEvening\\\\n**6:00 PM - Darling Harbour**\\\\n* Make your way to Darling Harbour for the evening. Here you can visit attractions such as the SEA LIFE Sydney Aquarium or simply enjoy the lively atmosphere by the waterfront.\\\\n**8:00 PM - Dinner at a Local Restaurant**\\\\n* Conclude your day with dinner at one of Darling Harbour’s many restaurants. Choose from a variety of cuisines while enjoying the vibrant night scene.### [\\\\u200b\\\\n](#additional-suggestions)\\\\nAdditional Suggestions\\\\n* If you’re interested in more unique experiences, consider visiting some of the attractions listed on[Time Out Sydney](https://www.timeout.com/sydney/attractions/tourist-attractions-that-dont-suck), which includes thrilling adventures and scenic tours.\\\\nWith clear skies and mild temperatures, this itinerary offers a balanced mix of cultural, historical, and scenic experiences. Enjoy your visit to Sydney!\\\\n## [\\\\u200b\\\\n](#support)\\\\nSupport\\\\nIf you need help with further questions in Julep:\\\\n* Join our[Discord community](https://discord.com/invite/JTSBGRZrzj)\\\\n* Check the[GitHub repository](https://github.com/julep-ai/julep)\\\\n* Contact support at[hey@julep.ai](mailto:hey@julep.ai)\\\\n[Agentic Patterns](https://docs.julep.ai/advanced/agentic-patterns)[Multi-Agent Multi-User Sessions](https://docs.julep.ai/advanced/multi-agent-multi-user-sessions)\\\\n[x](https://x.com/julepai)[github](https://github.com/julep-ai/julep)[linkedin](https://www.linkedin.com/company/julep-ai)\\\\n[Powered by Mintlify](https://mintlify.com/preview-request?utm_campaign=poweredBy&amp;utm_medium=docs&amp;utm_source=docs.julep.ai)\\\\nOn this page\\\\n* [Overview](#overview)\\\\n* [1. Input Schema](#1-input-schema)\\\\n* [2. Tools Configuration](#2-tools-configuration)\\\\n* [3. Main Workflow Steps](#3-main-workflow-steps)\\\\n* [Step 1: Fetch Weather Data](#step-1:-fetch-weather-data)\\\\n* [Step 2: Search for Tourist Attractions](#step-2:-search-for-tourist-attractions)\\\\n* [Step 3: Combine Data](#step-3:-combine-data)\\\\n* [Step 4: Generate Itineraries](#step-4:-generate-itineraries)\\\\n* [Step 5: Format Final Output](#step-5:-format-final-output)\\\\n* [Example Output](#example-output)\\\\n* [Support](#support)\\\\n</body></html>'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish\\n\",\n      \"Transition output:  Julep is a platform for creating sophisticated AI agents that manage complex tasks using long-term memory and multi-step processes. The documentation offers guidance on getting started, using the Julep CLI, understanding core concepts like agents and tasks, and integrating external tools and APIs. Key features include persistent AI agents, stateful sessions, and support for Retrieval-Augmented Generation (RAG). Users can explore tutorials, API references, and SDKs, with additional resources for developers, enterprises, and researchers. The site emphasizes robust task management, easy integration, and extensive support through community links and detailed guides.\\n\",\n      \"--------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Lists all the task steps that have been executed up to this point in time\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"# Transitions are retrieved in reverse chronological order\\n\",\n    \"for transition in reversed(transitions):\\n\",\n    \"    print(\\\"Transition type: \\\", transition.type)\\n\",\n    \"    print(\\\"Transition output: \\\", transition.output)\\n\",\n    \"    print(\\\"-\\\"*50)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Running the same task with a different URL\\n\",\n    \"\\n\",\n    \"We will use the same code to run the same task, but with a different URL\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 129,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    input={\\n\",\n    \"        \\\"url\\\": \\\"https://www.producthunt.com/\\\"\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 130,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  succeeded\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Product Hunt is a platform to discover and launch new tech products\\n\",\n      \"It features daily, weekly, and monthly top product lists, showcasing innovations in AI, productivity, developer tools, and more\\n\",\n      \"Today's top product is \\\"Boxo,\\\" a tool for deploying AI features in mobile apps\\n\",\n      \"Other highlights include AI-powered email and research tools like Mailgo and Claude Research\\n\",\n      \"Promoted products include discounts on Intercom and tools like Sider for AI research\\n\",\n      \"The site also offers community forums, newsletters, and a marketplace for the latest tech launches and discussions in various tech categories.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import time\\n\",\n    \"\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"while execution.status != \\\"succeeded\\\":\\n\",\n    \"    time.sleep(5)\\n\",\n    \"    execution = client.executions.get(execution.id)\\n\",\n    \"    print(\\\"Execution status: \\\", execution.status)\\n\",\n    \"    print(\\\"-\\\"*50)\\n\",\n    \"\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"print(\\\"\\\\n\\\".join(execution.output.split(\\\". \\\")))\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<span style=\\\"color:olive;\\\">Note: you can get the output of the crawling step by accessing the corresponding transition's output from the transitions list.</span>\\n\",\n    \"\\n\",\n    \"Example:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 131,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'documents': '[](https://www.producthunt.com/)\\\\n[Subscribe](https://www.producthunt.com/newsletters?ref=header_nav&amp;campaign=weekly_newsletter&amp;source=header_nav)\\\\nSign in\\\\nWelcome to Product Hunt!\\\\nThe place to launch and discover new tech products.Take a tour.\\\\n# Top Products Launching Today\\\\n[](https://www.producthunt.com/posts/boxo-2)\\\\n[1. Boxo](https://www.producthunt.com/posts/boxo-2)[Quickly deploy AI-generated features in your mobile app](https://www.producthunt.com/posts/boxo-2)\\\\n[Productivity](https://www.producthunt.com/topics/productivity)•[Developer Tools](https://www.producthunt.com/topics/developer-tools)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)\\\\n56\\\\n254\\\\n[](https://www.producthunt.com/posts/mailgo-3)\\\\n[2. Mailgo](https://www.producthunt.com/posts/mailgo-3)[AI-powered cold email platform that boosts deliverability](https://www.producthunt.com/posts/mailgo-3)\\\\n[Email](https://www.producthunt.com/topics/email)•[Sales](https://www.producthunt.com/topics/sales)•[Marketing](https://www.producthunt.com/topics/marketing)\\\\n28\\\\n210\\\\n[](https://www.producthunt.com/posts/claude-research)\\\\n[3. Claude Research](https://www.producthunt.com/posts/claude-research)[Claude takes research to new places](https://www.producthunt.com/posts/claude-research)\\\\n[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Bots](https://www.producthunt.com/topics/bots)\\\\n2\\\\n170\\\\n[](https://www.producthunt.com/posts/sparkles)\\\\n[4. Sparkles](https://www.producthunt.com/posts/sparkles)[Resurface Wisdom with Widgets &amp; Notifications](https://www.producthunt.com/posts/sparkles)\\\\n[Android](https://www.producthunt.com/topics/android)•[iOS](https://www.producthunt.com/topics/ios)•[Health &amp; Fitness](https://www.producthunt.com/topics/health-fitness)\\\\n21\\\\n155\\\\n[](https://www.producthunt.com/posts/kling-ai-2-0)\\\\n[5. Kling AI 2.0](https://www.producthunt.com/posts/kling-ai-2-0)[Next-level AI video &amp; image generation + editing](https://www.producthunt.com/posts/kling-ai-2-0)\\\\n[Design Tools](https://www.producthunt.com/topics/design-tools)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Video](https://www.producthunt.com/topics/video)\\\\n2\\\\n147\\\\nGet the best of Product Hunt, directly in your inbox.\\\\n[Sign Up](https://www.producthunt.com/newsletters?campaign=weekly_newsletter&amp;source=newsletter_homepage)\\\\n[](https://www.producthunt.com/posts/acedit)\\\\n[6. Acedit](https://www.producthunt.com/posts/acedit)[Ace Interviews: AI Prep &amp; Live Assist](https://www.producthunt.com/posts/acedit)\\\\n[Chrome Extensions](https://www.producthunt.com/topics/chrome-extensions)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Career](https://www.producthunt.com/topics/career)\\\\n31\\\\n140\\\\n[](https://www.producthunt.com/posts/guidemaker)\\\\n[7. Guidemaker](https://www.producthunt.com/posts/guidemaker)[Free How-to Guide &amp; SOP Creator](https://www.producthunt.com/posts/guidemaker)\\\\n[Chrome Extensions](https://www.producthunt.com/topics/chrome-extensions)•[Productivity](https://www.producthunt.com/topics/productivity)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)\\\\n9\\\\n133\\\\n[](https://www.producthunt.com/posts/why-my-wife-yelling-at-me)\\\\n[8. Why My Wife Yelling At Me](https://www.producthunt.com/posts/why-my-wife-yelling-at-me)[AI wife simulator: helping you survive marriage... virtually](https://www.producthunt.com/posts/why-my-wife-yelling-at-me)\\\\n[Funny](https://www.producthunt.com/topics/funny)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Tech](https://www.producthunt.com/topics/tech)\\\\n15\\\\n133\\\\n[](https://www.producthunt.com/posts/gamma-2-0)\\\\n[9. Gamma 2.0](https://www.producthunt.com/posts/gamma-2-0)[Presentations, websites, and socials created instantly](https://www.producthunt.com/posts/gamma-2-0)\\\\n[Design Tools](https://www.producthunt.com/topics/design-tools)•[Social Media](https://www.producthunt.com/topics/social-media)•[Marketing](https://www.producthunt.com/topics/marketing)\\\\n3\\\\n126\\\\n[](https://www.producthunt.com/posts/deeptrue)\\\\n[10. Deeptrue](https://www.producthunt.com/posts/deeptrue)[Video conferencing with real-time video translation](https://www.producthunt.com/posts/deeptrue)\\\\n[Languages](https://www.producthunt.com/topics/languages)•[Meetings](https://www.producthunt.com/topics/meetings)•[Video](https://www.producthunt.com/topics/video)\\\\n11\\\\n119\\\\nIntercom\\\\nStartups get 90% off Intercom, the complete AI first customer service platform\\\\n[Promoted](https://www.producthunt.com/sponsor)\\\\n[Sales](https://www.producthunt.com/topics/sales)•[Customer Communication](https://www.producthunt.com/topics/customer-communication)•[Growth Hacking](https://www.producthunt.com/topics/growth-hacking)\\\\n[Andrew Luisi](https://www.producthunt.com/@andrew_luisi)\\\\nalways love reading about Intercom and learning better ways to bring success to our customers! :)\\\\n23\\\\n1,451\\\\n[](https://www.producthunt.com/posts/errsole)\\\\n[11. errsole](https://www.producthunt.com/posts/errsole)[First open-source Node.js logger with a built-in log viewer](https://www.producthunt.com/posts/errsole)\\\\n[Open Source](https://www.producthunt.com/topics/open-source)•[SaaS](https://www.producthunt.com/topics/saas)•[Developer Tools](https://www.producthunt.com/topics/developer-tools)\\\\n6\\\\n119\\\\n[](https://www.producthunt.com/posts/software-prices-by-vendr)\\\\n[12. Software Prices by Vendr](https://www.producthunt.com/posts/software-prices-by-vendr)[Get the price, without sitting through the sales pitch.](https://www.producthunt.com/posts/software-prices-by-vendr)\\\\n[Chrome Extensions](https://www.producthunt.com/topics/chrome-extensions)•[SaaS](https://www.producthunt.com/topics/saas)•[Money](https://www.producthunt.com/topics/money)\\\\n7\\\\n118\\\\n[](https://www.producthunt.com/posts/agent-development-kit)\\\\n[13. Agent Development Kit](https://www.producthunt.com/posts/agent-development-kit)[Build multi-agent systems with Google&#x27;s open framework](https://www.producthunt.com/posts/agent-development-kit)\\\\n[Open Source](https://www.producthunt.com/topics/open-source)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[GitHub](https://www.producthunt.com/topics/github)\\\\n1\\\\n117\\\\n[](https://www.producthunt.com/posts/super-builder-2-0)\\\\n[14. Super Builder 2.0](https://www.producthunt.com/posts/super-builder-2-0)[A drag-and-drop website builder for Notion](https://www.producthunt.com/posts/super-builder-2-0)\\\\n[Website Builder](https://www.producthunt.com/topics/website-builder)•[No-Code](https://www.producthunt.com/topics/no-code)•[Notion](https://www.producthunt.com/topics/notion)\\\\n6\\\\n115\\\\n[](https://www.producthunt.com/posts/dropshare-6)\\\\n[15. Dropshare 6](https://www.producthunt.com/posts/dropshare-6)[No frills way to upload files, share a link and be done](https://www.producthunt.com/posts/dropshare-6)\\\\n[Productivity](https://www.producthunt.com/topics/productivity)•[Storage](https://www.producthunt.com/topics/storage)•[Developer Tools](https://www.producthunt.com/topics/developer-tools)\\\\n6\\\\n105\\\\nIdentifAI\\\\nDiscern human from AI creations\\\\n[Promoted](https://www.producthunt.com/sponsor)\\\\n[](https://www.producthunt.com/posts/cerebro-4)\\\\n[16. Cerebro](https://www.producthunt.com/posts/cerebro-4)[Cerebro turns information into connected insights](https://www.producthunt.com/posts/cerebro-4)\\\\n[Notes](https://www.producthunt.com/topics/notes)•[Education](https://www.producthunt.com/topics/education)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)\\\\n5\\\\n105\\\\n[](https://www.producthunt.com/posts/star-wars-intro-creator-2)\\\\n[17. Star Wars Intro Creator](https://www.producthunt.com/posts/star-wars-intro-creator-2)[Create your own Star Wars opening crawl in seconds](https://www.producthunt.com/posts/star-wars-intro-creator-2)\\\\n[Design Tools](https://www.producthunt.com/topics/design-tools)•[Entertainment](https://www.producthunt.com/topics/entertainment)•[Video](https://www.producthunt.com/topics/video)\\\\n5\\\\n105\\\\n[](https://www.producthunt.com/posts/capwords)\\\\n[18. CapWords](https://www.producthunt.com/posts/capwords)[Learn a new language with AI-powered object recognition](https://www.producthunt.com/posts/capwords)\\\\n[Languages](https://www.producthunt.com/topics/languages)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Tech](https://www.producthunt.com/topics/tech)\\\\n12\\\\n101\\\\n[](https://www.producthunt.com/posts/phare-status-pages)\\\\n[19. Phare Status Pages](https://www.producthunt.com/posts/phare-status-pages)[Get a sleek status pages with your own domain name](https://www.producthunt.com/posts/phare-status-pages)\\\\n[Analytics](https://www.producthunt.com/topics/analytics)•[Website Builder](https://www.producthunt.com/topics/website-builder)•[Developer Tools](https://www.producthunt.com/topics/developer-tools)\\\\n8\\\\n101\\\\n[](https://www.producthunt.com/posts/prmptvault)\\\\n[20. PrmptVault](https://www.producthunt.com/posts/prmptvault)[Save your best AI prompts. Access and share them anywhere](https://www.producthunt.com/posts/prmptvault)\\\\n[Productivity](https://www.producthunt.com/topics/productivity)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Tech](https://www.producthunt.com/topics/tech)\\\\n3\\\\n67\\\\nAuth0 by Okta\\\\nMake login our problem. Not yours. Get started today.\\\\n[Promoted](https://www.producthunt.com/sponsor)\\\\nSee all of today&#x27;s products\\\\n## Yesterday&#x27;s Top Products\\\\n[](https://www.producthunt.com/posts/extrovert-2)\\\\n[1. Extrovert](https://www.producthunt.com/posts/extrovert-2)[Warm-up and nurture prospects at scale on linkedin](https://www.producthunt.com/posts/extrovert-2)\\\\n[Sales](https://www.producthunt.com/topics/sales)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[LinkedIn](https://www.producthunt.com/topics/linkedin)\\\\n115\\\\n595\\\\n[](https://www.producthunt.com/posts/aqua-voice)\\\\n[2. Aqua Voice](https://www.producthunt.com/posts/aqua-voice)[Incredibly fast voice input for Macand Windows](https://www.producthunt.com/posts/aqua-voice)\\\\n[Productivity](https://www.producthunt.com/topics/productivity)•[Developer Tools](https://www.producthunt.com/topics/developer-tools)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)\\\\n88\\\\n473\\\\n[](https://www.producthunt.com/posts/potpie-ai)\\\\n[3. Potpie AI](https://www.producthunt.com/posts/potpie-ai)[Create custom AI agents for your code](https://www.producthunt.com/posts/potpie-ai)\\\\n[Developer Tools](https://www.producthunt.com/topics/developer-tools)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[GitHub](https://www.producthunt.com/topics/github)\\\\n51\\\\n365\\\\n[](https://www.producthunt.com/posts/gpt-4-1-in-the-api)\\\\n[4. GPT-4.1 in the API](https://www.producthunt.com/posts/gpt-4-1-in-the-api)[Announcing GPT-4.1, GPT-4.1 mini, &amp; GPT-4.1 nano in the API](https://www.producthunt.com/posts/gpt-4-1-in-the-api)\\\\n[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)\\\\n10\\\\n335\\\\n[](https://www.producthunt.com/posts/notion-mail)\\\\n[5. Notion Mail](https://www.producthunt.com/posts/notion-mail)[The first inbox that thinks like you](https://www.producthunt.com/posts/notion-mail)\\\\n[Email](https://www.producthunt.com/topics/email)•[Productivity](https://www.producthunt.com/topics/productivity)•[Notion](https://www.producthunt.com/topics/notion)\\\\n18\\\\n327\\\\nAirtable AI Assistant\\\\nBuild apps through conversation, not clicks\\\\n[Promoted](https://www.producthunt.com/sponsor)\\\\n[Design Tools](https://www.producthunt.com/topics/design-tools)•[Developer Tools](https://www.producthunt.com/topics/developer-tools)•[Data &amp; Analytics](https://www.producthunt.com/topics/data-analytics)\\\\n8\\\\n221\\\\nSee all of yesterday&#x27;s top products\\\\n## Last Week&#x27;s Top Products\\\\n[](https://www.producthunt.com/posts/pippit-ai)\\\\n[1. Pippit AI](https://www.producthunt.com/posts/pippit-ai)[Your smart video &amp; image creator for marketing success](https://www.producthunt.com/posts/pippit-ai)\\\\n[Design Tools](https://www.producthunt.com/topics/design-tools)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Video Art](https://www.producthunt.com/topics/video-art)\\\\n85\\\\n1,322\\\\n[](https://www.producthunt.com/posts/evertutor-live)\\\\n[2. EverTutor Live](https://www.producthunt.com/posts/evertutor-live)[Your very own AI Tutor that teaches, adapts, and interacts](https://www.producthunt.com/posts/evertutor-live)\\\\n[Education](https://www.producthunt.com/topics/education)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Online Learning](https://www.producthunt.com/topics/online-learning)\\\\n128\\\\n961\\\\n[](https://www.producthunt.com/posts/sherlock-22ca6fdc-45ee-48ff-8169-955198c7e247)\\\\n[3. Sherlock](https://www.producthunt.com/posts/sherlock-22ca6fdc-45ee-48ff-8169-955198c7e247)[Stop AI-assisted cheating in remote interviews](https://www.producthunt.com/posts/sherlock-22ca6fdc-45ee-48ff-8169-955198c7e247)\\\\n[Hiring](https://www.producthunt.com/topics/hiring)\\\\n75\\\\n856\\\\n[](https://www.producthunt.com/posts/the-swarm)\\\\n[4. The Swarm](https://www.producthunt.com/posts/the-swarm)[Relationships. Are. Back.](https://www.producthunt.com/posts/the-swarm)\\\\n[Sales](https://www.producthunt.com/topics/sales)•[API](https://www.producthunt.com/topics/api-1)•[Social Networking](https://www.producthunt.com/topics/social-networking)\\\\n113\\\\n772\\\\n[](https://www.producthunt.com/posts/voicenotes-pages)\\\\n[5. Voicenotes Pages](https://www.producthunt.com/posts/voicenotes-pages)[What if publishing felt like talking to a friend?](https://www.producthunt.com/posts/voicenotes-pages)\\\\n[Notes](https://www.producthunt.com/topics/notes)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Audio](https://www.producthunt.com/topics/audio)\\\\n86\\\\n751\\\\nBebop.ai\\\\nSales Teams, Stop Wasting Time on Cold Leads!\\\\n[Promoted](https://www.producthunt.com/sponsor)\\\\n[Productivity](https://www.producthunt.com/topics/productivity)•[Sales](https://www.producthunt.com/topics/sales)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)\\\\n22\\\\n206\\\\nGet the best of Product Hunt, directly in your inbox.\\\\n[Sign Up](https://www.producthunt.com/newsletters?campaign=weekly_newsletter&amp;source=newsletter_homepage)\\\\nSee all of last week&#x27;s top products\\\\n## Last Month&#x27;s Top Products\\\\n[](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-5-0-deep-research-with-wisebase)\\\\n[1. Sider 5.0: Deep Research with Wisebase](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-5-0-deep-research-with-wisebase)[Mimic Human Research &amp; Save Findings in AI Knowledge Base](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-5-0-deep-research-with-wisebase)\\\\n[Web App](https://www.producthunt.com/topics/web-app)•[Productivity](https://www.producthunt.com/topics/productivity)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)\\\\n356\\\\n2,250\\\\n[](https://www.producthunt.com/products/metagpt-x#mgx)\\\\n[2. MGX](https://www.producthunt.com/products/metagpt-x#mgx)[The first AI dev team](https://www.producthunt.com/products/metagpt-x#mgx)\\\\n[Productivity](https://www.producthunt.com/topics/productivity)•[Developer Tools](https://www.producthunt.com/topics/developer-tools)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)\\\\n415\\\\n2,196\\\\n[](https://www.producthunt.com/products/aha-3#aha-6)\\\\n[3. Aha](https://www.producthunt.com/products/aha-3#aha-6)[The world&#x27;s first AI influencer marketing team](https://www.producthunt.com/products/aha-3#aha-6)\\\\n[Marketing](https://www.producthunt.com/topics/marketing)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Influencer marketing](https://www.producthunt.com/topics/influencer-marketing)\\\\n379\\\\n1,864\\\\n[](https://www.producthunt.com/products/kintsugi#kintsugi)\\\\n[4. Kintsugi](https://www.producthunt.com/products/kintsugi#kintsugi)[Put your sales tax on autopilot](https://www.producthunt.com/products/kintsugi#kintsugi)\\\\n[Payments](https://www.producthunt.com/topics/payments)•[SaaS](https://www.producthunt.com/topics/saas)•[E-Commerce](https://www.producthunt.com/topics/e-commerce)\\\\n51\\\\n1,146\\\\n[](https://www.producthunt.com/products/skarbe#skarbe)\\\\n[5. Skarbe](https://www.producthunt.com/products/skarbe#skarbe)[The pro-active sales engine that is CRM-free](https://www.producthunt.com/products/skarbe#skarbe)\\\\n[Sales](https://www.producthunt.com/topics/sales)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[CRM](https://www.producthunt.com/topics/crm)\\\\n183\\\\n1,140\\\\nAha\\\\nThe world&#x27;s first AI influencer marketing team\\\\n[Promoted](https://www.producthunt.com/sponsor)\\\\n[Marketing](https://www.producthunt.com/topics/marketing)•[Artificial Intelligence](https://www.producthunt.com/topics/artificial-intelligence)•[Influencer marketing](https://www.producthunt.com/topics/influencer-marketing)\\\\n379\\\\n1,864\\\\nSee all of last month&#x27;s top products\\\\n[\\\\nBEST PRODUCTS OF2024\\\\nGolden Kitty\\\\nAwards\\\\n2024\\\\nSee the best of2024\\\\n](https://www.producthunt.com/golden-kitty-awards/hall-of-fame?year=2024)\\\\n* [Blog](https://www.producthunt.com/stories)•\\\\n* [Newsletter](https://www.producthunt.com/newsletters)•\\\\n* [Questions](https://www.producthunt.com/questions)•\\\\n* [Forums](https://www.producthunt.com/p/general)•\\\\n* [Product Categories](https://www.producthunt.com/categories)•\\\\n* [Apps](https://www.producthunt.com/apps)•\\\\n* [About](https://www.producthunt.com/about)•\\\\n* [FAQ](https://help.producthunt.com)•\\\\n* [Terms](https://www.producthunt.com/legal#terms)•\\\\n* [Privacy and Cookies](https://www.producthunt.com/legal#privacy)•\\\\n* [X.com](https://x.com/ProductHunt)•\\\\n* [Facebook](https://www.facebook.com/producthunt)•\\\\n* [Instagram](https://www.instagram.com/producthunt)•\\\\n* [LinkedIn](https://www.linkedin.com/company/producthunt)•\\\\n* [YouTube](https://www.youtube.com/channel/UCOtU18DT8csQVqHPT1wtYzw)•\\\\n* [Advertise](https://www.producthunt.com/sponsor?utm_content=sf)\\\\n©2025Product Hunt\\\\n[Trending Forum Threads](https://www.producthunt.com/p/general)\\\\n[p/general](https://www.producthunt.com/p/general)[Maker&#x27;&#x27;s Corner: Sh\\\\\\\\*t that sells: From toilet tracker to business breakthrough](https://www.producthunt.com/p/general/maker-s-corner-sh-t-that-sells-from-toilet-tracker-to-business-breakthrough)\\\\nUpvote(7)•[0](https://www.producthunt.com/p/general/maker-s-corner-sh-t-that-sells-from-toilet-tracker-to-business-breakthrough)\\\\n[p/producthunt](https://www.producthunt.com/p/producthunt)[Show your 404 page (yes, really)](https://www.producthunt.com/p/producthunt/show-your-404-page-yes-really)\\\\nUpvote(46)•[22](https://www.producthunt.com/p/producthunt/show-your-404-page-yes-really)\\\\n[p/producthunt](https://www.producthunt.com/p/producthunt)[I was asked to delete a featured launch, but it&#x27;s actually missing the point.](https://www.producthunt.com/p/producthunt/i-was-asked-to-delete-a-featured-launch-but-it-s-actually-missing-the-point)\\\\nUpvote(25)•[17](https://www.producthunt.com/p/producthunt/i-was-asked-to-delete-a-featured-launch-but-it-s-actually-missing-the-point)\\\\n[p/superads](https://www.producthunt.com/p/superads)[We just launched a free Facebook Ads benchmarking tool](https://www.producthunt.com/p/superads/we-just-launched-a-free-facebook-ads-benchmarking-tool)\\\\nUpvote(20)•[7](https://www.producthunt.com/p/superads/we-just-launched-a-free-facebook-ads-benchmarking-tool)\\\\n[View all](https://www.producthunt.com/p/general)[Start new thread](https://www.producthunt.com/p/new)\\\\n* [Blog](https://www.producthunt.com/stories)•\\\\n* [Newsletter](https://www.producthunt.com/newsletters)•\\\\n* [Questions](https://www.producthunt.com/questions)•\\\\n* [Forums](https://www.producthunt.com/p/general)•\\\\n* [Product Categories](https://www.producthunt.com/categories)•\\\\n* [Apps](https://www.producthunt.com/apps)•\\\\n* [About](https://www.producthunt.com/about)•\\\\n* [FAQ](https://help.producthunt.com)•\\\\n* [Terms](https://www.producthunt.com/legal#terms)•\\\\n* [Privacy and Cookies](https://www.producthunt.com/legal#privacy)•\\\\n* [X.com](https://x.com/ProductHunt)•\\\\n* [Facebook](https://www.facebook.com/producthunt)•\\\\n* [Instagram](https://www.instagram.com/producthunt)•\\\\n* [LinkedIn](https://www.linkedin.com/company/producthunt)•\\\\n* [YouTube](https://www.youtube.com/channel/UCOtU18DT8csQVqHPT1wtYzw)•\\\\n* [Advertise](https://www.producthunt.com/sponsor?utm_content=sf)\\\\n©2025Product Hunt [](https://www.producthunt.com/)\\\\n[Subscribe](https://www.producthunt.com/newsletters?ref=header_nav&amp;campaign=weekly_newsletter&amp;source=header_nav)\\\\nSign in\\\\n# Sider: AI Research Agent &amp; Extension\\\\nDeep Research Agent &amp; AI Research Browser Extension\\\\n•[77 reviews](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/reviews)•\\\\n3.7K followers\\\\n[Visit website](https://sider.ai/?ref=producthunt)Follow\\\\n* [Overview](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension)\\\\n* [Launches](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/launches)\\\\n* [Forums](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/forums)\\\\n* [Shoutouts](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/shoutouts)\\\\n* [Reviews](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/reviews)\\\\n* [Team](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/makers)\\\\n* [Awards](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/awards)\\\\n* [Alternatives](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/alternatives)\\\\n* [More](#)\\\\n* * [Blog](https://www.producthunt.com/stories)•\\\\n* [Newsletter](https://www.producthunt.com/newsletters)•\\\\n* [Questions](https://www.producthunt.com/questions)•\\\\n* [Forums](https://www.producthunt.com/p/general)•\\\\n* [Product Categories](https://www.producthunt.com/categories)•\\\\n* [Apps](https://www.producthunt.com/apps)•\\\\n* [About](https://www.producthunt.com/about)•\\\\n* [FAQ](https://help.producthunt.com)•\\\\n* [Terms](https://www.producthunt.com/legal#terms)•\\\\n* [Privacy and Cookies](https://www.producthunt.com/legal#privacy)•\\\\n* [X.com](https://x.com/ProductHunt)•\\\\n* [Facebook](https://www.facebook.com/producthunt)•\\\\n* [Instagram](https://www.instagram.com/producthunt)•\\\\n* [LinkedIn](https://www.linkedin.com/company/producthunt)•\\\\n* [YouTube](https://www.youtube.com/channel/UCOtU18DT8csQVqHPT1wtYzw)•\\\\n* [Advertise](https://www.producthunt.com/sponsor?utm_content=sf)\\\\n©2025Product Hunt\\\\nProduct status\\\\nClaimed\\\\nAwards\\\\n[All Awards](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/awards)\\\\nLinks\\\\n[sider.ai](https://sider.ai/?ref=producthunt)\\\\nSocial\\\\n[Facebook](https://www.facebook.com/SiderAIApp)[LinkedIn](https://www.linkedin.com/company/sider-ai/)[X.com](https://x.com/sider_ai)\\\\nMakers\\\\n[All Makers](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/makers)\\\\n## What isSider: AI Research Agent &amp; Extension?\\\\nSider Deep Research Agent mimics human research process: scanning 100+ relevant sources and creating visualized reports. It automatically reflects on findings, highlights key information, takes inspirational notes, and saves above all materials to Wisebase—an evolving AI knowledge base that grows with you. For on-the-go research, Sider AI browser extension brings powerful tools anywhere you browse online, putting instant research assistance at your fingertips.\\\\n### Do you use Sider: AI Research Agent &amp; Extension?\\\\nI use thisI use something else\\\\n[AI Chatbots](https://www.producthunt.com/categories/ai-chatbots)•[Writing assistants](https://www.producthunt.com/categories/writing-assistants)•[ChatGPT Prompts](https://www.producthunt.com/categories/chatgpt-prompts)•[Chrome Extensions](https://www.producthunt.com/categories/chrome-extensions)\\\\n## RecentSider: AI Research Agent &amp; ExtensionLaunches\\\\n[](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-5-0-deep-research-with-wisebase)\\\\n[Sider 5.0: Deep Research with Wisebase](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-5-0-deep-research-with-wisebase)[Mimic Human Research &amp; Save Findings in AI Knowledge Base](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-5-0-deep-research-with-wisebase)\\\\nLaunched onMarch 19th, 2025\\\\n356\\\\n2,250\\\\n[](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-4-0)\\\\n[Sider 4.0](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-4-0)[Group chat with multiple AI bots to reduce hallucinations](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#sider-4-0)\\\\nLaunched onNovember 30th, 2023\\\\n112\\\\n281\\\\n[](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#chatgpt-sidebar-chrome-extension)\\\\n[ChatGPT Sidebar Chrome Extension](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#chatgpt-sidebar-chrome-extension)[AI &amp; you work side by side on any page](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension#chatgpt-sidebar-chrome-extension)\\\\nLaunched onMarch 2nd, 2023\\\\n56\\\\n237\\\\n## Forum Threads\\\\n[](https://www.producthunt.com/@benln)\\\\n[Ben Lang](https://www.producthunt.com/@benln)\\\\n•28d ago\\\\n[### Sider 5.0: Deep Research with Wisebase - Mimic Human Research &amp; Save Findings in AI Knowledge Base\\\\n](https://www.producthunt.com/p/chatgpt-sidebar-chrome-extension/sider-5-0-deep-research-with-wisebase)[\\\\nSider 5.0 Deep Research mimics human research by auto-scanning 100+ sources, reflecting, noting and highlighting insights. It crafts expert-level, interactive reports in mintues. All findings are auto-saved to Wisebase—AI knowledge base that evolves with you.\\\\n](https://www.producthunt.com/p/chatgpt-sidebar-chrome-extension/sider-5-0-deep-research-with-wisebase)\\\\n356\\\\n2,250\\\\n[](https://www.producthunt.com/@joel_sider)\\\\n[Joel](https://www.producthunt.com/@joel_sider)\\\\n•1yr ago\\\\n[### Sider 4.0 - Group chat with multiple AI bots to reduce hallucinations\\\\n](https://www.producthunt.com/p/chatgpt-sidebar-chrome-extension/sider-4-0)[\\\\nSider 4.0 introduces group AI chat to reduce hallucination by comparing answers from different AIs like ChatGPT, GPT-4.0, Claude, Bard in a group. You can also chat with webpage, image, PDF in every tab without switch tabs between ChatGPT and the current tab.\\\\n](https://www.producthunt.com/p/chatgpt-sidebar-chrome-extension/sider-4-0)\\\\n112\\\\n281\\\\n[](https://www.producthunt.com/@joel_sider)\\\\n[Joel](https://www.producthunt.com/@joel_sider)\\\\n•2yr ago\\\\n[### ChatGPT Sidebar Chrome Extension - AI &amp; you work side by side on any page\\\\n](https://www.producthunt.com/p/chatgpt-sidebar-chrome-extension/chatgpt-sidebar-chrome-extension)[\\\\nChatGPT works alongside you on any webpage with the ChatGPT sidebar. Whether you are reading or writing on the web, the sidebar is always by your side.\\\\n](https://www.producthunt.com/p/chatgpt-sidebar-chrome-extension/chatgpt-sidebar-chrome-extension)\\\\n56\\\\n237\\\\n[View all](https://www.producthunt.com/p/chatgpt-sidebar-chrome-extension)\\\\n## Sider: AI Research Agent &amp; ExtensionAlternatives\\\\n[](https://www.producthunt.com/products/chatgpt-for-chrome-extension)\\\\n[ChatGPT for Chrome Extension](https://www.producthunt.com/products/chatgpt-for-chrome-extension)\\\\n62 reviews\\\\n[AI Chatbots](https://www.producthunt.com/categories/ai-chatbots)\\\\n[](https://www.producthunt.com/products/unrobot)\\\\n[Unrobot](https://www.producthunt.com/products/unrobot)\\\\n0 reviews\\\\n[](https://www.producthunt.com/products/luna-chatgpt-assistant-for-chrome)\\\\n[Luna - ChatGPT Assistant for Chrome](https://www.producthunt.com/products/luna-chatgpt-assistant-for-chrome)\\\\n0 reviews\\\\n[View all Sider: AI Research Agent &amp; Extension alternatives](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/alternatives)\\\\n### Review Sider: AI Research Agent &amp; Extension?\\\\n4.75/5 based on77 reviews\\\\n[View all reviews](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/reviews)Leave a review\\\\n## Maker reviews ofSider: AI Research Agent &amp; Extension\\\\n[Kate Prasniak](https://www.producthunt.com/@kate_prasniak)\\\\nused this to build[Migroot](https://www.producthunt.com/posts/migroot)\\\\n(722 points)\\\\nFaster than going to GPT\\\\nHelpful(1)[\\\\nShare\\\\n](#)[\\\\nReport\\\\n](#)\\\\n5mo ago\\\\n[Kevin Jaspal](https://www.producthunt.com/@kevinjaspal)\\\\nused this to build[SigmaRemote](https://www.producthunt.com/posts/sigmaremote)\\\\n(505 points)\\\\nSuper useful for gathering insights while doing deep work.\\\\nHelpful(1)[\\\\nShare\\\\n](#)[\\\\nReport\\\\n](#)\\\\n6mo ago\\\\n[View all Sider: AI Research Agent &amp; Extension reviews](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/shoutouts)\\\\n## Reviews\\\\n[](https://www.producthunt.com/@kellypoly)\\\\n[Kelly Kim](https://www.producthunt.com/@kellypoly)\\\\n[\\\\nSunrise: Guided Journaling &amp; Mindfulness\\\\n](https://www.producthunt.com/products/sunrise-guided-journaling-mindfulness)\\\\n•5 reviews\\\\nI used to have a high switching cost, constantly going back and forth between multiple open windows, but thanks to Sider, I\\\\'ve been able to save a lot of time! It\\\\'s an essential product for people who frequently use ChatGPT.\\\\nHelpful(1)[\\\\nShare\\\\n](#)[\\\\nReport\\\\n](#)\\\\n7mo ago\\\\n[](#)\\\\n[](https://www.producthunt.com/@oleg_gavryliuk)\\\\n[Oleg Gavryliuk](https://www.producthunt.com/@oleg_gavryliuk)\\\\n•7 reviews\\\\nNice extension, but \\\"ChatGPT Webapp\\\" feature - not working.\\\\nHelpful(2)[\\\\nShare\\\\n](#)[\\\\nReport\\\\n](#)\\\\n2yr ago\\\\n[](#)\\\\n[](https://www.producthunt.com/@xinrun_han)\\\\n[Xinrun Han](https://www.producthunt.com/@xinrun_han)\\\\n•1 review\\\\nDefinitely help me generate more ideas. Another helpful feature is scanning relevant sources, which is quite important for reliable content creators like me.\\\\nHelpful(8)[\\\\nShare\\\\n](#)[\\\\nReport\\\\n](#)\\\\n19d ago\\\\n[](#)\\\\n[](https://www.producthunt.com/@lucky__angi)\\\\n[Angi Bowman](https://www.producthunt.com/@lucky__angi)\\\\n[\\\\nLucky Orange\\\\n](https://www.producthunt.com/products/lucky-orange)\\\\n•3 reviews\\\\nI would give this a 10 star rating if I could! I use Sider every single day to do just about everything - checking my grammar, creating email/review responses, simplifying technical jargon, etc. It\\\\'s the secret sauce to my success, and I can\\\\'t imagine my tech stack without it.\\\\nHelpful(1)[\\\\nShare\\\\n](#)[\\\\nReport\\\\n](#)\\\\n1yr ago\\\\n[](#)\\\\n[](https://www.producthunt.com/@bilal_asif)\\\\n[Bilal Asif](https://www.producthunt.com/@bilal_asif)\\\\n•4 reviews\\\\nThe ChatGPT Sidebar Chrome Extension is an impressive tool that enhances productivity by integrating AI assistance into your browsing experience. Adding features like Claude v2 in Full-Page-Chat mode could make it even more versatile and impactful for users.\\\\nHelpful(2)[\\\\nShare\\\\n](#)[\\\\nReport\\\\n](#)\\\\n3mo ago\\\\n[](#)\\\\n[View all](https://www.producthunt.com/products/chatgpt-sidebar-chrome-extension/reviews)'}\"\n      ]\n     },\n     \"execution_count\": 131,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"transitions[1].output\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/02-sarcastic-news-headline-generator.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install --upgrade julep --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Global UUID is generated for agent and task\\n\",\n    \"import uuid\\n\",\n    \"\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4() \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## creating julep client with the api key\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"JULEP_API_KEY = os.environ['JULEP_API_KEY']\\n\",\n    \"\\n\",\n    \"# Create a client\\n\",\n    \"client = Client(api_key=JULEP_API_KEY, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Defining the agent\\n\",\n    \"name = \\\"Chad\\\"\\n\",\n    \"about = \\\"Sarcastic news headline reporter.\\\"\\n\",\n    \"\\n\",\n    \"# Create the agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=name,\\n\",\n    \"    about=about,\\n\",\n    \"    model=\\\"claude-3.5-sonnet\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"\\n\",\n    \"BRAVE_API_KEY = \\\"YOUR_BRAVE_API_KEY\\\"\\n\",\n    \"\\n\",\n    \"# Define the task\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: Julep Sarcasm Headline Generator\\n\",\n    \"description: This task generates a sarcastic news headline on a user-provided topic.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### INPUT SCHEMA ###################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    topic:\\n\",\n    \"      type: string\\n\",\n    \"      description: The topic of the news headline\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ###########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Define the tools that the task will use in this workflow\\n\",\n    \"tools:\\n\",\n    \"- name: brave_search\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: brave\\n\",\n    \"    setup:\\n\",\n    \"      brave_api_key: \\\"{BRAVE_API_KEY}\\\"\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### MAIN WORKFLOW ##################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"# Step 0: Call the brave_search tool with the topic input\\n\",\n    \"- tool: brave_search\\n\",\n    \"  arguments:\\n\",\n    \"    query: $ _.topic + ' funny news'\\n\",\n    \"\\n\",\n    \"# Step 1: Evaluate step to create a summary of the results\\n\",\n    \"- evaluate:\\n\",\n    \"    search_results: |-\\n\",\n    \"      $ [\\n\",\n    \"        {{\\n\",\n    \"          'snippet': r['snippet'],\\n\",\n    \"          'title': r['title']\\n\",\n    \"        }}\\n\",\n    \"        for r in _['result']\\n\",\n    \"      ]\\n\",\n    \"\\n\",\n    \"# Step 2: Prompt step to create a summary of the results\\n\",\n    \"- prompt:\\n\",\n    \"  - role: system\\n\",\n    \"    content: >-\\n\",\n    \"      $ f'''You are {{agent.about}}.\\n\",\n    \"      The user will send you a topic and search results for that topic.\\n\",\n    \"      Your goal is to write a sarcastic news headlines based on that topic and search results.'''\\n\",\n    \"  - role: user\\n\",\n    \"    content: >-\\n\",\n    \"      $ f'''My topic is: {{steps[0].input.topic}}.\\n\",\n    \"      Here are the search results: {{_}}'''\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating the task object\\n\",\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating an execution object\\n\",\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    input={\\n\",\n    \"        \\\"topic\\\": \\\"Elon Musk\\\"\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Checking execution details and output\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\\\"Genius Billionaire Desperately Attempts Comedy, Proves Money Can't Buy Sense of Humor\\\"\\n\",\n      \"\\n\",\n      \"\\\"Breaking: World's Richest Man Still Can't Figure Out How to Make People Genuinely Like Him\\\"\\n\",\n      \"\\n\",\n      \"\\\"Shocking Report: Man Who Named Child 'X \\u00c6 A-12' May Not Be Most Stable CEO\\\"\\n\",\n      \"\\n\",\n      \"\\\"Former Trump Officials Suggest Drug Tests for Musk; Musk Agrees, Proving He Might Actually Need One\\\"\\n\",\n      \"\\n\",\n      \"\\\"Billionaire Space Enthusiast Too Busy Being 'Funny' on Twitter to Notice Everyone's Cringing\\\"\\n\",\n      \"\\n\",\n      \"\\\"Studies Show Being Worth $180 Billion Still Won't Make Your Memes Any Better\\\"\\n\",\n      \"\\n\",\n      \"\\\"Man Who Could End World Hunger Chooses to Post Dad Jokes on Social Media Instead\\\"\\n\",\n      \"\\n\",\n      \"\\\"Breaking: Local Attention-Seeking Billionaire Still Seeking Attention, More at 11\\\"\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import time\\n\",\n    \"\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"while execution.status != \\\"succeeded\\\":\\n\",\n    \"    time.sleep(5)\\n\",\n    \"    execution = client.executions.get(execution.id)\\n\",\n    \"    print(\\\"Execution status: \\\", execution.status)\\n\",\n    \"    print(\\\"-\\\"*50)\\n\",\n    \"\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"print(execution.output)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Transition type:  init\\n\",\n      \"Transition output:  {'topic': 'Elon Musk'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'result': [{'link': 'https://9gag.com/tag/elon-musk', 'title': 'Best Elon Musk Memes and Images - 9GAG', 'snippet': 'Enjoy the best of new <strong>funny</strong> cursed meme images about <strong>Elon</strong> <strong>Musk</strong>, Twitter, $8 verified badge, Tesla, the Boring Company and more on 9GAG. Never run out of hilarious cursed memes to share.'}, {'link': 'https://www.youtube.com/watch?v=ukxf9AqLsPY', 'title': 'Elon FINALLY Gets the HUMILIATION He Deserves in Front of MILLIONS - YouTube', 'snippet': 'Comedian Bill Burr roasts <strong>Elon</strong> <strong>Musk</strong>, MAGA melts down over SNL, and protesters hit Trump where it hurts\\u2014his billionaire bestie&#x27;s wallet. Gabe Sanchez reports ...'}, {'link': 'https://gizmodo.com/elon-musk-is-annoying-unfunny-and-should-probably-take-a-drug-test-trump-officials-reportedly-say-2000587948', 'title': 'Elon Musk Is Annoying, Unfunny, and Should Probably Take a Drug Test, Trump Officials Reportedly Say', 'snippet': 'Administration officials joked to one another about subjecting <strong>Musk</strong> to mandatory drug testing, which <strong>Musk</strong> himself has said would be a \\u201cgreat idea\\u201d for federal employees. It gets worse. \\u201cI have been in the same room with <strong>Elon</strong>, and he always tries to be <strong>funny</strong>.'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'search_results': [{'title': 'Best Elon Musk Memes and Images - 9GAG', 'snippet': 'Enjoy the best of new <strong>funny</strong> cursed meme images about <strong>Elon</strong> <strong>Musk</strong>, Twitter, $8 verified badge, Tesla, the Boring Company and more on 9GAG. Never run out of hilarious cursed memes to share.'}, {'title': 'Elon FINALLY Gets the HUMILIATION He Deserves in Front of MILLIONS - YouTube', 'snippet': 'Comedian Bill Burr roasts <strong>Elon</strong> <strong>Musk</strong>, MAGA melts down over SNL, and protesters hit Trump where it hurts\\u2014his billionaire bestie&#x27;s wallet. Gabe Sanchez reports ...'}, {'title': 'Elon Musk Is Annoying, Unfunny, and Should Probably Take a Drug Test, Trump Officials Reportedly Say', 'snippet': 'Administration officials joked to one another about subjecting <strong>Musk</strong> to mandatory drug testing, which <strong>Musk</strong> himself has said would be a \\u201cgreat idea\\u201d for federal employees. It gets worse. \\u201cI have been in the same room with <strong>Elon</strong>, and he always tries to be <strong>funny</strong>.'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish\\n\",\n      \"Transition output:  \\\"Genius Billionaire Desperately Attempts Comedy, Proves Money Can't Buy Sense of Humor\\\"\\n\",\n      \"\\n\",\n      \"\\\"Breaking: World's Richest Man Still Can't Figure Out How to Make People Genuinely Like Him\\\"\\n\",\n      \"\\n\",\n      \"\\\"Shocking Report: Man Who Named Child 'X \\u00c6 A-12' May Not Be Most Stable CEO\\\"\\n\",\n      \"\\n\",\n      \"\\\"Former Trump Officials Suggest Drug Tests for Musk; Musk Agrees, Proving He Might Actually Need One\\\"\\n\",\n      \"\\n\",\n      \"\\\"Billionaire Space Enthusiast Too Busy Being 'Funny' on Twitter to Notice Everyone's Cringing\\\"\\n\",\n      \"\\n\",\n      \"\\\"Studies Show Being Worth $180 Billion Still Won't Make Your Memes Any Better\\\"\\n\",\n      \"\\n\",\n      \"\\\"Man Who Could End World Hunger Chooses to Post Dad Jokes on Social Media Instead\\\"\\n\",\n      \"\\n\",\n      \"\\\"Breaking: Local Attention-Seeking Billionaire Still Seeking Attention, More at 11\\\"\\n\",\n      \"--------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Lists all the task steps that have been executed up to this point in time\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"# Transitions are retrieved in reverse chronological order\\n\",\n    \"for transition in reversed(transitions):\\n\",\n    \"    print(\\\"Transition type: \\\", transition.type)\\n\",\n    \"    print(\\\"Transition output: \\\", transition.output)\\n\",\n    \"    print(\\\"-\\\"*50)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Running the same task with a different topic\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"We will use the same code to run the same task, but with a different topic\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    input={\\n\",\n    \"        \\\"topic\\\": \\\"Tottenham Hotspur\\\"\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Execution status:  succeeded\\n\",\n      \"--------------------------------------------------\\n\",\n      \"\\\"In Shocking Display of Stockholm Syndrome, Former Arsenal Executive Defects to Tottenham\\\"\\n\",\n      \"\\n\",\n      \"\\\"Desperate Spurs Hire Ex-Arsenal CEO, Proving There's No Rock Bottom They Won't Explore\\\"\\n\",\n      \"\\n\",\n      \"\\\"Local Man Voluntarily Leaves Success to Join Eternal Trophy Drought: A London Tale\\\"\\n\",\n      \"\\n\",\n      \"\\\"Tottenham Finally Wins Something: The Heart of Arsenal's Former CEO\\\"\\n\",\n      \"\\n\",\n      \"\\\"North London Rivalry Takes Bizarre Turn as Spurs Resort to Executive Poaching Instead of Trophy Hunting\\\"\\n\",\n      \"\\n\",\n      \"Pick any of these sarcastic headlines that capture the irony of Tottenham hiring their rival Arsenal's former CEO, while playfully jabbing at Spurs' notorious trophy drought and the historic rivalry between the two clubs! \\ud83d\\ude0f\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import time\\n\",\n    \"\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"while execution.status != \\\"succeeded\\\":\\n\",\n    \"    time.sleep(5)\\n\",\n    \"    execution = client.executions.get(execution.id)\\n\",\n    \"    print(\\\"Execution status: \\\", execution.status)\\n\",\n    \"    print(\\\"-\\\"*50)\\n\",\n    \"\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"print(execution.output)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<span style=\\\"color:olive;\\\">Note: you can get the output of the search step by accessing the corresponding transition's output from the transitions list.</span>\\n\",\n    \"\\n\",\n    \"Example:\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"{'search_results': [{'title': 'Tottenham Hotspur FC - latest news, pictures, video comment - Football.london',\\n\",\n       \"   'snippet': 'The latest <strong>Tottenham</strong> <strong>news</strong>, transfers, fixtures and more. Including Live blogs, pictures, video, podcasts, polls and indepth analysis from our dedicated Spurs writers.'},\\n\",\n       \"  {'title': 'Spurs Media Watch, News and Stories',\\n\",\n       \"   'snippet': 'These stories have been specially selected from today&#x27;s media. They do not necessarily represent the views or position of <strong>Tottenham</strong> <strong>Hotspur</strong> Football Club. For total Spurs <strong>news</strong> coverage, visit NewsNow.co.uk, the UK&#x27;s #1 football <strong>news</strong> aggregator.'},\\n\",\n       \"  {'title': 'Tottenham Hotspur FC - Transfer news, results, fixtures, video and audio',\\n\",\n       \"   'snippet': 'Having left Arsenal at the end of the 2023-24 campaign, Venkatesham has bided his time before returning to football. <strong>Tottenham confirmed Venkatesham&#x27;s appointment as their next CEO on Friday</strong>, in news that arrived with an element of surprise given his previous ties with Spurs&#x27; rivals.'}]}\"\n      ]\n     },\n     \"execution_count\": 12,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"transitions[1].output\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/03-trip-planning-assistant.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install julep -U --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Global UUID is generated for agent and task\\n\",\n    \"import uuid\\n\",\n    \"\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4() \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### creating julep client with the api key\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"JULEP_API_KEY = os.environ[\\\"JULEP_API_KEY\\\"]\\n\",\n    \"\\n\",\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=JULEP_API_KEY, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Defining the agent\\n\",\n    \"name = \\\"Jacob\\\"\\n\",\n    \"about = \\\"A travel assistant that helps plan the perfect trip.\\\"\\n\",\n    \"\\n\",\n    \"# Create the agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=name,\\n\",\n    \"    about=about,\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 45,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"\\n\",\n    \"openweathermap_api_key = \\\"YOUR_API_KEY\\\"\\n\",\n    \"brave_api_key = \\\"YOUR_API_KEY\\\"\\n\",\n    \"\\n\",\n    \"# Defining the task\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: Julep Tourist Plan With Weather And Attractions\\n\",\n    \"description: A task that plans a trip with weather and attractions.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### INPUT SCHEMA ##################\\n\",\n    \"########################################################                       \\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    locations:\\n\",\n    \"      type: array\\n\",\n    \"      items:\\n\",\n    \"        type: string\\n\",\n    \"      description: The locations to search for.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ##########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Define the tools that the task will use in this workflow\\n\",\n    \"tools:\\n\",\n    \"- name: wikipedia\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: wikipedia\\n\",\n    \"\\n\",\n    \"- name: weather\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: weather\\n\",\n    \"    setup:\\n\",\n    \"      openweathermap_api_key: {openweathermap_api_key}\\n\",\n    \"\\n\",\n    \"- name: internet_search\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: brave\\n\",\n    \"    setup:\\n\",\n    \"      brave_api_key: {brave_api_key}\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### MAIN WORKFLOW ##########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"# Step 0: Fetch weather data for each location\\n\",\n    \"- over: $ steps[0].input.locations\\n\",\n    \"  map:\\n\",\n    \"    tool: weather\\n\",\n    \"    arguments:\\n\",\n    \"      location: $ _\\n\",\n    \"\\n\",\n    \"# Step 1: Search Wikipedia for tourist attractions for each location\\n\",\n    \"- over: $ steps[0].input.locations\\n\",\n    \"  map:\\n\",\n    \"    tool: internet_search\\n\",\n    \"    arguments:\\n\",\n    \"      query: $ 'tourist attractions in ' + _\\n\",\n    \"\\n\",\n    \"# Step 2: Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\\n\",\n    \"- evaluate:\\n\",\n    \"    zipped: |-\\n\",\n    \"      $ list(\\n\",\n    \"        zip(\\n\",\n    \"          steps[0].input.locations,\\n\",\n    \"          [output['result'] for output in steps[0].output],\\n\",\n    \"          steps[1].output\\n\",\n    \"        )\\n\",\n    \"      )\\n\",\n    \"\\n\",\n    \"# Step 3: Create an itinerary for each location\\n\",\n    \"- over: $ _['zipped']\\n\",\n    \"  parallelism: 3\\n\",\n    \"  # Inside the map step, each `_` represents the current element in the list\\n\",\n    \"  # which is a tuple of (location, weather, attractions)\\n\",\n    \"  map:\\n\",\n    \"    prompt:\\n\",\n    \"    - role: system\\n\",\n    \"      content: >-\\n\",\n    \"        $ f'''You are {{agent.name}}. Your task is to create a detailed itinerary\\n\",\n    \"        for visiting tourist attractions in some locations.\\n\",\n    \"        The user will give you the following information for each location:\\n\",\n    \"\\n\",\n    \"        - The location\\n\",\n    \"        - The current weather condition\\n\",\n    \"        - The top tourist attractions'''\\n\",\n    \"    - role: user\\n\",\n    \"      content: >-\\n\",\n    \"        $ f'''Location: \\\"{{_[0]}}\\\"\\n\",\n    \"        Weather: \\\"{{_[1]}}\\\"\\n\",\n    \"        Attractions: \\\"{{_[2]}}\\\"'''\\n\",\n    \"    unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 4: Create a final plan by joining the activities for each location\\n\",\n    \"- evaluate:\\n\",\n    \"    final_plan: |-\\n\",\n    \"      $ '\\\\\\\\n---------------\\\\\\\\n'.join(activity for activity in _)\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 46,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating the task object\\n\",\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 47,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Started an execution. Execution ID: 067ffa47-3b83-79b7-8000-eaaa1a013f0e\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=task.id,\\n\",\n    \"    input={\\n\",\n    \"         \\\"locations\\\": [\\\"New York\\\", \\\"London\\\", \\\"Paris\\\", \\\"Tokyo\\\", \\\"Sydney\\\"]\\n\",\n    \"    }\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"print(\\\"Started an execution. Execution ID:\\\", execution.id)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Checking execution details and output\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 48,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  running\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Execution status:  succeeded\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\\n\",\n      \"\\n\",\n      \"### Day 1: Arrival and Exploration\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Central Park:**\\n\",\n      \"  - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74\\u00b0C, and a chance to see the iconic landscapes.\\n\",\n      \"  - Address: New York, NY\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Mid-Morning:**\\n\",\n      \"- **Metropolitan Museum of Art:**\\n\",\n      \"  - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\\n\",\n      \"  - Address: 1000 5th Ave, New York, NY 10028\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Lunch near the Upper East Side:**\\n\",\n      \"  - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\\n\",\n      \"- **Museum of Modern Art (MoMA):**\\n\",\n      \"  - After lunch, take a short walk to MoMA for a dose of contemporary art.\\n\",\n      \"  - Address: 11 W 53rd St, New York, NY 10019\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Times Square:**\\n\",\n      \"  - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\\n\",\n      \"  - Address: Manhattan, NY 10036\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"### Day 2: Iconic Landmarks\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Statue of Liberty and Ellis Island:**\\n\",\n      \"  - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\\n\",\n      \"  - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Lunch in Lower Manhattan:**\\n\",\n      \"  - Explore dining options in the Financial District.\\n\",\n      \"- **9/11 Memorial and Museum:**\\n\",\n      \"  - Visit this poignant site to pay respects and learn about the events of 9/11.\\n\",\n      \"  - Address: 180 Greenwich St, New York, NY 10007\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Broadway Show:**\\n\",\n      \"  - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\\n\",\n      \"  - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\",\n      \"\\n\",\n      \"### Day 3: Adventure and Relaxation\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **High Line Park:**\\n\",\n      \"  - Enjoy a unique stroll along this elevated linear park on a former rail track.\\n\",\n      \"  - Address: New York, NY 10011\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Chelsea Market:**\\n\",\n      \"  - Experience an array of food options in this historic marketplace for lunch.\\n\",\n      \"  - Address: 75 9th Ave, New York, NY 10011\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Brooklyn Bridge Walk:**\\n\",\n      \"  - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"With the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\\n\",\n      \"---------------\\n\",\n      \"Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\\n\",\n      \"\\n\",\n      \"---\\n\",\n      \"\\n\",\n      \"**London Day Itinerary**\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"\\n\",\n      \"1. **Breakfast at Borough Market**\\n\",\n      \"   - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\\n\",\n      \"\\n\",\n      \"2. **Tower of London**\\n\",\n      \"   - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\\n\",\n      \"\\n\",\n      \"**Midday:**\\n\",\n      \"\\n\",\n      \"3. **Walk Along the Thames & Tower Bridge**\\n\",\n      \"   - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\\n\",\n      \"\\n\",\n      \"4. **Lunch at a Pub in Covent Garden**\\n\",\n      \"   - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"\\n\",\n      \"5. **British Museum**\\n\",\n      \"   - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\\n\",\n      \"\\n\",\n      \"6. **Stroll through Leadenhall Market**\\n\",\n      \"   - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"\\n\",\n      \"7. **Dinner and Evening at The Sky Garden**\\n\",\n      \"   - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360\\u00b0 views of London's skyline.\\n\",\n      \"\\n\",\n      \"8. **Walk Around South Bank**\\n\",\n      \"   - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\\n\",\n      \"\\n\",\n      \"**Tips:**\\n\",\n      \"- Carry an umbrella or a light waterproof jacket just in case.\\n\",\n      \"- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\\n\",\n      \"- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\\n\",\n      \"\\n\",\n      \"Have a fantastic day exploring London!\\n\",\n      \"---------------\\n\",\n      \"### Paris Itinerary\\n\",\n      \"\\n\",\n      \"#### **Day 1: Arrival and Evening River Cruise**\\n\",\n      \"\\n\",\n      \"- **Morning:**\\n\",\n      \"  - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \\n\",\n      \"  - **Breakfast at a Local Caf\\u00e9:** Start your day with a classic Parisian breakfast: a croissant and caf\\u00e9 au lait at a nearby caf\\u00e9.\\n\",\n      \"\\n\",\n      \"- **Afternoon:**\\n\",\n      \"  - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\\n\",\n      \"  - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the March\\u00e9 Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\\n\",\n      \"\\n\",\n      \"- **Evening:**\\n\",\n      \"  - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\\n\",\n      \"  - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\\n\",\n      \"\\n\",\n      \"#### **Day 2: Classic Paris Sights**\\n\",\n      \"\\n\",\n      \"- **Morning:**\\n\",\n      \"  - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\\n\",\n      \"  - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don\\u2019t miss iconic pieces like the Mona Lisa and the Venus de Milo.\\n\",\n      \"\\n\",\n      \"- **Afternoon:**\\n\",\n      \"  - **Lunch at a Caf\\u00e9:** Enjoy lunch at a caf\\u00e9 near the Louvre. Try classic French dishes like quiche or salade ni\\u00e7oise.\\n\",\n      \"  - **Walk along the Champs-\\u00c9lys\\u00e9es:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\\n\",\n      \"\\n\",\n      \"- **Evening:**\\n\",\n      \"  - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\\n\",\n      \"\\n\",\n      \"#### **Day 3: Art, Culture, and Relaxation**\\n\",\n      \"\\n\",\n      \"- **Morning:**\\n\",\n      \"  - **Mus\\u00e9e d'Orsay:** Visit the Mus\\u00e9e d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\\n\",\n      \"  - **Explore Saint-Germain-des-Pr\\u00e9s:** Discover the boutiques and caf\\u00e9s in this historic district.\\n\",\n      \"\\n\",\n      \"- **Afternoon:**\\n\",\n      \"  - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\\n\",\n      \"  - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\\n\",\n      \"\\n\",\n      \"- **Evening:**\\n\",\n      \"  - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\\n\",\n      \"\\n\",\n      \"#### **Tips:**\\n\",\n      \"- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14\\u00b0C).\\n\",\n      \"- **Travel Consideration:** Use public transport like the M\\u00e9tro to navigate efficiently.\\n\",\n      \"- **Pass Options:** Consider purchasing the Paris Pass\\u00ae for discounts and ease of access at major attractions.\\n\",\n      \"\\n\",\n      \"With this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\\n\",\n      \"---------------\\n\",\n      \"**Detailed Itinerary for a Day in Tokyo**\\n\",\n      \"\\n\",\n      \"*Weather Overview:*\\n\",\n      \"- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37\\u00b0C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"\\n\",\n      \"1. **Visit Asakusa and Sens\\u014d-ji Temple:**\\n\",\n      \"   - Start your day in the historical district of Asakusa. Explore Sens\\u014d-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\\n\",\n      \"   - *Time: 9:00 AM - 11:00 AM*\\n\",\n      \"\\n\",\n      \"2. **Breakfast at Asakusa:**\\n\",\n      \"   - Enjoy a traditional Japanese breakfast at one of the local caf\\u00e9s. Try some fresh sushi or a hearty bowl of ramen.\\n\",\n      \"\\n\",\n      \"**Midday:**\\n\",\n      \"\\n\",\n      \"1. **Ueno Park and Museums:**\\n\",\n      \"   - Head over to Ueno Park, a large public park with museums and beautiful gardens.\\n\",\n      \"   - Visit the Tokyo National Museum to explore Japanese art and history.\\n\",\n      \"   - *Time: 11:30 AM - 1:30 PM*\\n\",\n      \"\\n\",\n      \"2. **Lunch in Ueno:**\\n\",\n      \"   - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"\\n\",\n      \"1. **Tokyo Skytree:**\\n\",\n      \"   - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\\n\",\n      \"   - *Time: 2:30 PM - 4:00 PM*\\n\",\n      \"\\n\",\n      \"2. **Shibuya & Harajuku:**\\n\",\n      \"   - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\\n\",\n      \"   - Don\\u2019t miss a walk through Yoyogi Park, a large urban park that\\u2019s perfect for relaxing.\\n\",\n      \"   - *Time: 4:30 PM - 6:00 PM*\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"\\n\",\n      \"1. **Dinner in Shinjuku:**\\n\",\n      \"   - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\\n\",\n      \"   - *Time: 7:00 PM - 8:30 PM*\\n\",\n      \"\\n\",\n      \"2. **Explore Shinjuku Nightlife:**\\n\",\n      \"   - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\\n\",\n      \"   - *Time: 8:30 PM onward*\\n\",\n      \"\\n\",\n      \"*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\\n\",\n      \"- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\\n\",\n      \"- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\\n\",\n      \"- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\\n\",\n      \"\\n\",\n      \"Enjoy your day exploring the vibrant and diverse city of Tokyo!\\n\",\n      \"---------------\\n\",\n      \"### Sydney Itinerary - Exploring with Light Rain\\n\",\n      \"\\n\",\n      \"#### **Day 1: Arrival and Iconic Landmarks**\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Sydney Opera House**  \\n\",\n      \"  Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don\\u2019t forget to bring a light raincoat as there\\u2019s some rain expected.\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Sydney Harbour Bridge**  \\n\",\n      \"  Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it\\u2019s cloudy.\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **The Rocks District**  \\n\",\n      \"  Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\\n\",\n      \"\\n\",\n      \"#### **Day 2: Culture and Relaxation**\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Art Gallery of New South Wales**  \\n\",\n      \"  Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It\\u2019s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Sydney Royal Botanic Garden**  \\n\",\n      \"  Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Dinner in Darling Harbour**  \\n\",\n      \"  Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\\n\",\n      \"\\n\",\n      \"#### **Day 3: Exploration and Adventure**\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Taronga Zoo**  \\n\",\n      \"  Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\\n\",\n      \"\\n\",\n      \"**Afternoon:** \\n\",\n      \"- **Bondi Beach & Coastal Walk**  \\n\",\n      \"  Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia\\u2019s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Sydney Observatory**  \\n\",\n      \"  Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\\n\",\n      \"\\n\",\n      \"### **Notes:**\\n\",\n      \"- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\\n\",\n      \"- **Bookings**: It\\u2019s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\\n\",\n      \"- **Transportation**: Utilize Sydney\\u2019s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\\n\",\n      \"\\n\",\n      \"Enjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import time\\n\",\n    \"\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"while execution.status != \\\"succeeded\\\":\\n\",\n    \"    time.sleep(5)\\n\",\n    \"    execution = client.executions.get(execution.id)\\n\",\n    \"    print(\\\"Execution status: \\\", execution.status)\\n\",\n    \"    print(\\\"-\\\"*50)\\n\",\n    \"\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"if 'final_plan' in execution.output:\\n\",\n    \"    print(execution.output['final_plan'])\\n\",\n    \"else:\\n\",\n    \"    print(execution.output)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 49,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Transition type:  init\\n\",\n      \"Transition output:  {'locations': ['New York', 'London', 'Paris', 'Tokyo', 'Sydney']}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  Sydney\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  London\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  Tokyo\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  Paris\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  New York\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': 'In London, the current weather is as follows:\\\\nDetailed status: scattered clouds\\\\nWind speed: 8.05 m/s, direction: 222\\u00b0\\\\nHumidity: 45%\\\\nTemperature: \\\\n  - Current: 14.87\\u00b0C\\\\n  - High: 15.83\\u00b0C\\\\n  - Low: 13.86\\u00b0C\\\\n  - Feels like: 13.59\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 27%'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': \\\"In Sydney, the current weather is as follows:\\\\nDetailed status: light rain\\\\nWind speed: 5.66 m/s, direction: 250\\u00b0\\\\nHumidity: 79%\\\\nTemperature: \\\\n  - Current: 17.29\\u00b0C\\\\n  - High: 18.17\\u00b0C\\\\n  - Low: 16.53\\u00b0C\\\\n  - Feels like: 17.14\\u00b0C\\\\nRain: {'1h': 0.11}\\\\nHeat index: None\\\\nCloud cover: 40%\\\"}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': 'In Paris, the current weather is as follows:\\\\nDetailed status: broken clouds\\\\nWind speed: 3.09 m/s, direction: 200\\u00b0\\\\nHumidity: 51%\\\\nTemperature: \\\\n  - Current: 13.43\\u00b0C\\\\n  - High: 14.49\\u00b0C\\\\n  - Low: 12.43\\u00b0C\\\\n  - Feels like: 12.16\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 75%'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': 'In Tokyo, the current weather is as follows:\\\\nDetailed status: clear sky\\\\nWind speed: 4.63 m/s, direction: 20\\u00b0\\\\nHumidity: 30%\\\\nTemperature: \\\\n  - Current: 15.37\\u00b0C\\\\n  - High: 15.91\\u00b0C\\\\n  - Low: 13.67\\u00b0C\\\\n  - Feels like: 13.75\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 0%'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': 'In New York, the current weather is as follows:\\\\nDetailed status: few clouds\\\\nWind speed: 10.29 m/s, direction: 270\\u00b0\\\\nHumidity: 52%\\\\nTemperature: \\\\n  - Current: 7.74\\u00b0C\\\\n  - High: 8.45\\u00b0C\\\\n  - Low: 6.64\\u00b0C\\\\n  - Feels like: 3.15\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 20%'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [{'result': 'In New York, the current weather is as follows:\\\\nDetailed status: few clouds\\\\nWind speed: 10.29 m/s, direction: 270\\u00b0\\\\nHumidity: 52%\\\\nTemperature: \\\\n  - Current: 7.74\\u00b0C\\\\n  - High: 8.45\\u00b0C\\\\n  - Low: 6.64\\u00b0C\\\\n  - Feels like: 3.15\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 20%'}, {'result': 'In London, the current weather is as follows:\\\\nDetailed status: scattered clouds\\\\nWind speed: 8.05 m/s, direction: 222\\u00b0\\\\nHumidity: 45%\\\\nTemperature: \\\\n  - Current: 14.87\\u00b0C\\\\n  - High: 15.83\\u00b0C\\\\n  - Low: 13.86\\u00b0C\\\\n  - Feels like: 13.59\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 27%'}, {'result': 'In Paris, the current weather is as follows:\\\\nDetailed status: broken clouds\\\\nWind speed: 3.09 m/s, direction: 200\\u00b0\\\\nHumidity: 51%\\\\nTemperature: \\\\n  - Current: 13.43\\u00b0C\\\\n  - High: 14.49\\u00b0C\\\\n  - Low: 12.43\\u00b0C\\\\n  - Feels like: 12.16\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 75%'}, {'result': 'In Tokyo, the current weather is as follows:\\\\nDetailed status: clear sky\\\\nWind speed: 4.63 m/s, direction: 20\\u00b0\\\\nHumidity: 30%\\\\nTemperature: \\\\n  - Current: 15.37\\u00b0C\\\\n  - High: 15.91\\u00b0C\\\\n  - Low: 13.67\\u00b0C\\\\n  - Feels like: 13.75\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 0%'}, {'result': \\\"In Sydney, the current weather is as follows:\\\\nDetailed status: light rain\\\\nWind speed: 5.66 m/s, direction: 250\\u00b0\\\\nHumidity: 79%\\\\nTemperature: \\\\n  - Current: 17.29\\u00b0C\\\\n  - High: 18.17\\u00b0C\\\\n  - Low: 16.53\\u00b0C\\\\n  - Feels like: 17.14\\u00b0C\\\\nRain: {'1h': 0.11}\\\\nHeat index: None\\\\nCloud cover: 40%\\\"}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  Sydney\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  New York\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  London\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  Tokyo\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  Paris\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do <strong>in</strong> <strong>New</strong> <strong>York</strong> City, <strong>New</strong> <strong>York</strong>: See Tripadvisor&#x27;s 4,251,245 traveler reviews and photos of <strong>New</strong> <strong>York</strong> City <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>New</strong> <strong>York</strong> City. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you&#x27;re into architecture, Broadway theater, restaurants or other cultural hotspots, <strong>New</strong> <strong>York</strong> City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass\\u00ae', 'snippet': 'Save up to 50% at top <strong>New</strong> <strong>York</strong> <strong>attractions</strong> with The <strong>New</strong> <strong>York</strong> Pass\\u00ae. Our passes offer great savings, freedom to choose and 100+ <strong>attractions</strong> for everyone.'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>London</strong>, England: See Tripadvisor&#x27;s 7,344,050 traveler reviews and photos of <strong>London</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>London</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \\\"London attractions | Visit London's top tourist attractions\\\", 'snippet': 'See world-famous London attractions and iconic landmarks, like <strong>the Tower of London, Buckingham Palace and the London Eye</strong>, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city&#x27;s rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the <strong>Sky Garden</strong> recently and it was actually quite nice for a free entry, great views especially in this sunny 20c\\u2026'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Paris</strong>, France: See Tripadvisor&#x27;s 5,086,085 traveler reviews and photos of <strong>Paris</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Paris</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass\\u00ae', 'snippet': 'Save up to 50% at top <strong>Paris</strong> <strong>attractions</strong> with The <strong>Paris</strong> Pass\\u00ae. Our passes offer great savings, freedom to choose and <strong>attractions</strong> for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you&#x27;ve been dreaming of a visit to the <strong>Eiffel Tower, Louvre Museum and Moulin Rouge</strong>, plan your trip with these expert recommendations for things to do in Paris.'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Tokyo</strong>, Japan: See Tripadvisor&#x27;s 1,688,470 traveler reviews and photos of <strong>Tokyo</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Tokyo</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our <strong>Tokyo</strong> tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the <strong>Tokyo</strong> of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city&#x27;s history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, <strong>Tokyo</strong> also offers a number of <strong>attractive</strong> green spaces in the city center and within relatively short train rides at its outskirts.'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top <strong>attractions</strong> <strong>in</strong> <strong>Sydney</strong>. Explore <strong>Sydney</strong>&#x27;s many <strong>attractions</strong>, sightseeing spots &amp; landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Sydney</strong>, Australia: See Tripadvisor&#x27;s 1,011,795 traveler reviews and photos of <strong>Sydney</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Sydney</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to <strong>Sydney</strong>, Australia. Explore the city&#x27;s natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [{'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do <strong>in</strong> <strong>New</strong> <strong>York</strong> City, <strong>New</strong> <strong>York</strong>: See Tripadvisor&#x27;s 4,251,245 traveler reviews and photos of <strong>New</strong> <strong>York</strong> City <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>New</strong> <strong>York</strong> City. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you&#x27;re into architecture, Broadway theater, restaurants or other cultural hotspots, <strong>New</strong> <strong>York</strong> City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass\\u00ae', 'snippet': 'Save up to 50% at top <strong>New</strong> <strong>York</strong> <strong>attractions</strong> with The <strong>New</strong> <strong>York</strong> Pass\\u00ae. Our passes offer great savings, freedom to choose and 100+ <strong>attractions</strong> for everyone.'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>London</strong>, England: See Tripadvisor&#x27;s 7,344,050 traveler reviews and photos of <strong>London</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>London</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \\\"London attractions | Visit London's top tourist attractions\\\", 'snippet': 'See world-famous London attractions and iconic landmarks, like <strong>the Tower of London, Buckingham Palace and the London Eye</strong>, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city&#x27;s rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the <strong>Sky Garden</strong> recently and it was actually quite nice for a free entry, great views especially in this sunny 20c\\u2026'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Paris</strong>, France: See Tripadvisor&#x27;s 5,086,085 traveler reviews and photos of <strong>Paris</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Paris</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass\\u00ae', 'snippet': 'Save up to 50% at top <strong>Paris</strong> <strong>attractions</strong> with The <strong>Paris</strong> Pass\\u00ae. Our passes offer great savings, freedom to choose and <strong>attractions</strong> for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you&#x27;ve been dreaming of a visit to the <strong>Eiffel Tower, Louvre Museum and Moulin Rouge</strong>, plan your trip with these expert recommendations for things to do in Paris.'}]}, {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Tokyo</strong>, Japan: See Tripadvisor&#x27;s 1,688,470 traveler reviews and photos of <strong>Tokyo</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Tokyo</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our <strong>Tokyo</strong> tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the <strong>Tokyo</strong> of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city&#x27;s history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, <strong>Tokyo</strong> also offers a number of <strong>attractive</strong> green spaces in the city center and within relatively short train rides at its outskirts.'}]}, {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top <strong>attractions</strong> <strong>in</strong> <strong>Sydney</strong>. Explore <strong>Sydney</strong>&#x27;s many <strong>attractions</strong>, sightseeing spots &amp; landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Sydney</strong>, Australia: See Tripadvisor&#x27;s 1,011,795 traveler reviews and photos of <strong>Sydney</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Sydney</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to <strong>Sydney</strong>, Australia. Explore the city&#x27;s natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'zipped': [['New York', 'In New York, the current weather is as follows:\\\\nDetailed status: few clouds\\\\nWind speed: 10.29 m/s, direction: 270\\u00b0\\\\nHumidity: 52%\\\\nTemperature: \\\\n  - Current: 7.74\\u00b0C\\\\n  - High: 8.45\\u00b0C\\\\n  - Low: 6.64\\u00b0C\\\\n  - Feels like: 3.15\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 20%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do <strong>in</strong> <strong>New</strong> <strong>York</strong> City, <strong>New</strong> <strong>York</strong>: See Tripadvisor&#x27;s 4,251,245 traveler reviews and photos of <strong>New</strong> <strong>York</strong> City <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>New</strong> <strong>York</strong> City. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you&#x27;re into architecture, Broadway theater, restaurants or other cultural hotspots, <strong>New</strong> <strong>York</strong> City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass\\u00ae', 'snippet': 'Save up to 50% at top <strong>New</strong> <strong>York</strong> <strong>attractions</strong> with The <strong>New</strong> <strong>York</strong> Pass\\u00ae. Our passes offer great savings, freedom to choose and 100+ <strong>attractions</strong> for everyone.'}]}], ['London', 'In London, the current weather is as follows:\\\\nDetailed status: scattered clouds\\\\nWind speed: 8.05 m/s, direction: 222\\u00b0\\\\nHumidity: 45%\\\\nTemperature: \\\\n  - Current: 14.87\\u00b0C\\\\n  - High: 15.83\\u00b0C\\\\n  - Low: 13.86\\u00b0C\\\\n  - Feels like: 13.59\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 27%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>London</strong>, England: See Tripadvisor&#x27;s 7,344,050 traveler reviews and photos of <strong>London</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>London</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \\\"London attractions | Visit London's top tourist attractions\\\", 'snippet': 'See world-famous London attractions and iconic landmarks, like <strong>the Tower of London, Buckingham Palace and the London Eye</strong>, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city&#x27;s rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the <strong>Sky Garden</strong> recently and it was actually quite nice for a free entry, great views especially in this sunny 20c\\u2026'}]}], ['Paris', 'In Paris, the current weather is as follows:\\\\nDetailed status: broken clouds\\\\nWind speed: 3.09 m/s, direction: 200\\u00b0\\\\nHumidity: 51%\\\\nTemperature: \\\\n  - Current: 13.43\\u00b0C\\\\n  - High: 14.49\\u00b0C\\\\n  - Low: 12.43\\u00b0C\\\\n  - Feels like: 12.16\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 75%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Paris</strong>, France: See Tripadvisor&#x27;s 5,086,085 traveler reviews and photos of <strong>Paris</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Paris</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass\\u00ae', 'snippet': 'Save up to 50% at top <strong>Paris</strong> <strong>attractions</strong> with The <strong>Paris</strong> Pass\\u00ae. Our passes offer great savings, freedom to choose and <strong>attractions</strong> for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you&#x27;ve been dreaming of a visit to the <strong>Eiffel Tower, Louvre Museum and Moulin Rouge</strong>, plan your trip with these expert recommendations for things to do in Paris.'}]}], ['Tokyo', 'In Tokyo, the current weather is as follows:\\\\nDetailed status: clear sky\\\\nWind speed: 4.63 m/s, direction: 20\\u00b0\\\\nHumidity: 30%\\\\nTemperature: \\\\n  - Current: 15.37\\u00b0C\\\\n  - High: 15.91\\u00b0C\\\\n  - Low: 13.67\\u00b0C\\\\n  - Feels like: 13.75\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 0%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Tokyo</strong>, Japan: See Tripadvisor&#x27;s 1,688,470 traveler reviews and photos of <strong>Tokyo</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Tokyo</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our <strong>Tokyo</strong> tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the <strong>Tokyo</strong> of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city&#x27;s history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, <strong>Tokyo</strong> also offers a number of <strong>attractive</strong> green spaces in the city center and within relatively short train rides at its outskirts.'}]}], ['Sydney', \\\"In Sydney, the current weather is as follows:\\\\nDetailed status: light rain\\\\nWind speed: 5.66 m/s, direction: 250\\u00b0\\\\nHumidity: 79%\\\\nTemperature: \\\\n  - Current: 17.29\\u00b0C\\\\n  - High: 18.17\\u00b0C\\\\n  - Low: 16.53\\u00b0C\\\\n  - Feels like: 17.14\\u00b0C\\\\nRain: {'1h': 0.11}\\\\nHeat index: None\\\\nCloud cover: 40%\\\", {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top <strong>attractions</strong> <strong>in</strong> <strong>Sydney</strong>. Explore <strong>Sydney</strong>&#x27;s many <strong>attractions</strong>, sightseeing spots &amp; landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Sydney</strong>, Australia: See Tripadvisor&#x27;s 1,011,795 traveler reviews and photos of <strong>Sydney</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Sydney</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to <strong>Sydney</strong>, Australia. Explore the city&#x27;s natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['Paris', 'In Paris, the current weather is as follows:\\\\nDetailed status: broken clouds\\\\nWind speed: 3.09 m/s, direction: 200\\u00b0\\\\nHumidity: 51%\\\\nTemperature: \\\\n  - Current: 13.43\\u00b0C\\\\n  - High: 14.49\\u00b0C\\\\n  - Low: 12.43\\u00b0C\\\\n  - Feels like: 12.16\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 75%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html', 'title': 'THE 15 BEST Things to Do in Paris (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Paris</strong>, France: See Tripadvisor&#x27;s 5,086,085 traveler reviews and photos of <strong>Paris</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Paris</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://parispass.com/en/paris-attractions', 'title': 'Paris Attractions | The Paris Pass\\u00ae', 'snippet': 'Save up to 50% at top <strong>Paris</strong> <strong>attractions</strong> with The <strong>Paris</strong> Pass\\u00ae. Our passes offer great savings, freedom to choose and <strong>attractions</strong> for everyone.'}, {'link': 'https://travel.usnews.com/Paris_France/Things_To_Do/', 'title': '34 Best Things to Do in Paris, France (Updated 2025) | U.S. News Travel', 'snippet': 'If you&#x27;ve been dreaming of a visit to the <strong>Eiffel Tower, Louvre Museum and Moulin Rouge</strong>, plan your trip with these expert recommendations for things to do in Paris.'}]}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['London', 'In London, the current weather is as follows:\\\\nDetailed status: scattered clouds\\\\nWind speed: 8.05 m/s, direction: 222\\u00b0\\\\nHumidity: 45%\\\\nTemperature: \\\\n  - Current: 14.87\\u00b0C\\\\n  - High: 15.83\\u00b0C\\\\n  - Low: 13.86\\u00b0C\\\\n  - Feels like: 13.59\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 27%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g186338-Activities-London_England.html', 'title': 'THE 15 BEST Things to Do in London (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>London</strong>, England: See Tripadvisor&#x27;s 7,344,050 traveler reviews and photos of <strong>London</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>London</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.visitlondon.com/things-to-do/sightseeing/london-attraction', 'title': \\\"London attractions | Visit London's top tourist attractions\\\", 'snippet': 'See world-famous London attractions and iconic landmarks, like <strong>the Tower of London, Buckingham Palace and the London Eye</strong>, to the lesser-known London sights and gems including Leadenhall Market, historical museums and Royal residences. Gain a unique glimpse into the city&#x27;s rich history and vibrant ...'}, {'link': 'https://www.reddit.com/r/london/comments/1cn05i9/inspired_by_the_recent_askreddit_what_tourist/', 'title': 'r/london on Reddit: Inspired by the recent AskReddit, What tourist attractions in London are NOT overrated?', 'snippet': '732 votes, 608 comments. I went to the <strong>Sky Garden</strong> recently and it was actually quite nice for a free entry, great views especially in this sunny 20c\\u2026'}]}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['New York', 'In New York, the current weather is as follows:\\\\nDetailed status: few clouds\\\\nWind speed: 10.29 m/s, direction: 270\\u00b0\\\\nHumidity: 52%\\\\nTemperature: \\\\n  - Current: 7.74\\u00b0C\\\\n  - High: 8.45\\u00b0C\\\\n  - Low: 6.64\\u00b0C\\\\n  - Feels like: 3.15\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 20%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html', 'title': 'Things to Do in New York City', 'snippet': 'Things to Do <strong>in</strong> <strong>New</strong> <strong>York</strong> City, <strong>New</strong> <strong>York</strong>: See Tripadvisor&#x27;s 4,251,245 traveler reviews and photos of <strong>New</strong> <strong>York</strong> City <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>New</strong> <strong>York</strong> City. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.iloveny.com/places-to-go/new-york-city/attractions/', 'title': 'NYC Attractions | Museums, Parks, Zoos & Landmarks', 'snippet': 'Whether you&#x27;re into architecture, Broadway theater, restaurants or other cultural hotspots, <strong>New</strong> <strong>York</strong> City has something for you. Plan your trip today!'}, {'link': 'https://newyorkpass.com/en/new-york-attractions', 'title': 'New York Attractions | The New York Pass\\u00ae', 'snippet': 'Save up to 50% at top <strong>New</strong> <strong>York</strong> <strong>attractions</strong> with The <strong>New</strong> <strong>York</strong> Pass\\u00ae. Our passes offer great savings, freedom to choose and 100+ <strong>attractions</strong> for everyone.'}]}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\\n\",\n      \"\\n\",\n      \"---\\n\",\n      \"\\n\",\n      \"**London Day Itinerary**\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"\\n\",\n      \"1. **Breakfast at Borough Market**\\n\",\n      \"   - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\\n\",\n      \"\\n\",\n      \"2. **Tower of London**\\n\",\n      \"   - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\\n\",\n      \"\\n\",\n      \"**Midday:**\\n\",\n      \"\\n\",\n      \"3. **Walk Along the Thames & Tower Bridge**\\n\",\n      \"   - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\\n\",\n      \"\\n\",\n      \"4. **Lunch at a Pub in Covent Garden**\\n\",\n      \"   - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"\\n\",\n      \"5. **British Museum**\\n\",\n      \"   - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\\n\",\n      \"\\n\",\n      \"6. **Stroll through Leadenhall Market**\\n\",\n      \"   - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"\\n\",\n      \"7. **Dinner and Evening at The Sky Garden**\\n\",\n      \"   - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360\\u00b0 views of London's skyline.\\n\",\n      \"\\n\",\n      \"8. **Walk Around South Bank**\\n\",\n      \"   - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\\n\",\n      \"\\n\",\n      \"**Tips:**\\n\",\n      \"- Carry an umbrella or a light waterproof jacket just in case.\\n\",\n      \"- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\\n\",\n      \"- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\\n\",\n      \"\\n\",\n      \"Have a fantastic day exploring London!\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ### Paris Itinerary\\n\",\n      \"\\n\",\n      \"#### **Day 1: Arrival and Evening River Cruise**\\n\",\n      \"\\n\",\n      \"- **Morning:**\\n\",\n      \"  - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \\n\",\n      \"  - **Breakfast at a Local Caf\\u00e9:** Start your day with a classic Parisian breakfast: a croissant and caf\\u00e9 au lait at a nearby caf\\u00e9.\\n\",\n      \"\\n\",\n      \"- **Afternoon:**\\n\",\n      \"  - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\\n\",\n      \"  - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the March\\u00e9 Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\\n\",\n      \"\\n\",\n      \"- **Evening:**\\n\",\n      \"  - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\\n\",\n      \"  - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\\n\",\n      \"\\n\",\n      \"#### **Day 2: Classic Paris Sights**\\n\",\n      \"\\n\",\n      \"- **Morning:**\\n\",\n      \"  - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\\n\",\n      \"  - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don\\u2019t miss iconic pieces like the Mona Lisa and the Venus de Milo.\\n\",\n      \"\\n\",\n      \"- **Afternoon:**\\n\",\n      \"  - **Lunch at a Caf\\u00e9:** Enjoy lunch at a caf\\u00e9 near the Louvre. Try classic French dishes like quiche or salade ni\\u00e7oise.\\n\",\n      \"  - **Walk along the Champs-\\u00c9lys\\u00e9es:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\\n\",\n      \"\\n\",\n      \"- **Evening:**\\n\",\n      \"  - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\\n\",\n      \"\\n\",\n      \"#### **Day 3: Art, Culture, and Relaxation**\\n\",\n      \"\\n\",\n      \"- **Morning:**\\n\",\n      \"  - **Mus\\u00e9e d'Orsay:** Visit the Mus\\u00e9e d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\\n\",\n      \"  - **Explore Saint-Germain-des-Pr\\u00e9s:** Discover the boutiques and caf\\u00e9s in this historic district.\\n\",\n      \"\\n\",\n      \"- **Afternoon:**\\n\",\n      \"  - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\\n\",\n      \"  - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\\n\",\n      \"\\n\",\n      \"- **Evening:**\\n\",\n      \"  - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\\n\",\n      \"\\n\",\n      \"#### **Tips:**\\n\",\n      \"- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14\\u00b0C).\\n\",\n      \"- **Travel Consideration:** Use public transport like the M\\u00e9tro to navigate efficiently.\\n\",\n      \"- **Pass Options:** Consider purchasing the Paris Pass\\u00ae for discounts and ease of access at major attractions.\\n\",\n      \"\\n\",\n      \"With this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\\n\",\n      \"\\n\",\n      \"### Day 1: Arrival and Exploration\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Central Park:**\\n\",\n      \"  - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74\\u00b0C, and a chance to see the iconic landscapes.\\n\",\n      \"  - Address: New York, NY\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Mid-Morning:**\\n\",\n      \"- **Metropolitan Museum of Art:**\\n\",\n      \"  - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\\n\",\n      \"  - Address: 1000 5th Ave, New York, NY 10028\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Lunch near the Upper East Side:**\\n\",\n      \"  - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\\n\",\n      \"- **Museum of Modern Art (MoMA):**\\n\",\n      \"  - After lunch, take a short walk to MoMA for a dose of contemporary art.\\n\",\n      \"  - Address: 11 W 53rd St, New York, NY 10019\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Times Square:**\\n\",\n      \"  - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\\n\",\n      \"  - Address: Manhattan, NY 10036\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"### Day 2: Iconic Landmarks\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Statue of Liberty and Ellis Island:**\\n\",\n      \"  - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\\n\",\n      \"  - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Lunch in Lower Manhattan:**\\n\",\n      \"  - Explore dining options in the Financial District.\\n\",\n      \"- **9/11 Memorial and Museum:**\\n\",\n      \"  - Visit this poignant site to pay respects and learn about the events of 9/11.\\n\",\n      \"  - Address: 180 Greenwich St, New York, NY 10007\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Broadway Show:**\\n\",\n      \"  - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\\n\",\n      \"  - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\n\",\n      \"\\n\",\n      \"### Day 3: Adventure and Relaxation\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **High Line Park:**\\n\",\n      \"  - Enjoy a unique stroll along this elevated linear park on a former rail track.\\n\",\n      \"  - Address: New York, NY 10011\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Chelsea Market:**\\n\",\n      \"  - Experience an array of food options in this historic marketplace for lunch.\\n\",\n      \"  - Address: 75 9th Ave, New York, NY 10011\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Brooklyn Bridge Walk:**\\n\",\n      \"  - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\\n\",\n      \"  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\\n\",\n      \"\\n\",\n      \"With the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['Sydney', \\\"In Sydney, the current weather is as follows:\\\\nDetailed status: light rain\\\\nWind speed: 5.66 m/s, direction: 250\\u00b0\\\\nHumidity: 79%\\\\nTemperature: \\\\n  - Current: 17.29\\u00b0C\\\\n  - High: 18.17\\u00b0C\\\\n  - Low: 16.53\\u00b0C\\\\n  - Feels like: 17.14\\u00b0C\\\\nRain: {'1h': 0.11}\\\\nHeat index: None\\\\nCloud cover: 40%\\\", {'result': [{'link': 'https://www.sydney.com/things-to-do/attractions', 'title': 'Top attractions in Sydney | Sydney.com', 'snippet': 'Discover the top <strong>attractions</strong> <strong>in</strong> <strong>Sydney</strong>. Explore <strong>Sydney</strong>&#x27;s many <strong>attractions</strong>, sightseeing spots &amp; landmarks that you must not miss.'}, {'link': 'https://www.tripadvisor.com/Attractions-g255060-Activities-Sydney_New_South_Wales.html', 'title': 'THE 15 BEST Things to Do in Sydney (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Sydney</strong>, Australia: See Tripadvisor&#x27;s 1,011,795 traveler reviews and photos of <strong>Sydney</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Sydney</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.australia.com/en-us/places/sydney-and-surrounds/guide-to-sydney.html', 'title': 'Travel guide to Sydney, NSW - Tourism Australia', 'snippet': 'Find our guide to <strong>Sydney</strong>, Australia. Explore the city&#x27;s natural beauty from famous landmarks such as the Harbour Bridge to picturesque beaches and world-class restaurants.'}]}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['Tokyo', 'In Tokyo, the current weather is as follows:\\\\nDetailed status: clear sky\\\\nWind speed: 4.63 m/s, direction: 20\\u00b0\\\\nHumidity: 30%\\\\nTemperature: \\\\n  - Current: 15.37\\u00b0C\\\\n  - High: 15.91\\u00b0C\\\\n  - Low: 13.67\\u00b0C\\\\n  - Feels like: 13.75\\u00b0C\\\\nRain: {}\\\\nHeat index: None\\\\nCloud cover: 0%', {'result': [{'link': 'https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html', 'title': 'THE 15 BEST Things to Do in Tokyo (2025) - Must-See Attractions', 'snippet': 'Things to Do <strong>in</strong> <strong>Tokyo</strong>, Japan: See Tripadvisor&#x27;s 1,688,470 traveler reviews and photos of <strong>Tokyo</strong> <strong>tourist</strong> <strong>attractions</strong>. Find what to do today, this weekend, or in April. We have reviews of the best places to see <strong>in</strong> <strong>Tokyo</strong>. Visit top-rated &amp; must-see <strong>attractions</strong>.'}, {'link': 'https://www.gotokyo.org/en/see-and-do/attractions/index.html', 'title': 'Top tourist attractions in Tokyo: the best sightseeing spots | The Official Tokyo Travel Guide, GO TOKYO', 'snippet': 'Check out our <strong>Tokyo</strong> tourism guide, complete to find our recommendations for famous places and must-visit locations. From historical sites to the <strong>Tokyo</strong> of the future, there is lots to see and do.'}, {'link': 'https://www.japan-guide.com/e/e2164.html', 'title': 'Tokyo City Guide - What to do in Tokyo', 'snippet': 'The city&#x27;s history can be appreciated in districts such as Asakusa and in many excellent museums, historic temples and gardens. Contrary to common perception, <strong>Tokyo</strong> also offers a number of <strong>attractive</strong> green spaces in the city center and within relatively short train rides at its outskirts.'}]}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ### Sydney Itinerary - Exploring with Light Rain\\n\",\n      \"\\n\",\n      \"#### **Day 1: Arrival and Iconic Landmarks**\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Sydney Opera House**  \\n\",\n      \"  Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don\\u2019t forget to bring a light raincoat as there\\u2019s some rain expected.\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Sydney Harbour Bridge**  \\n\",\n      \"  Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it\\u2019s cloudy.\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **The Rocks District**  \\n\",\n      \"  Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\\n\",\n      \"\\n\",\n      \"#### **Day 2: Culture and Relaxation**\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Art Gallery of New South Wales**  \\n\",\n      \"  Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It\\u2019s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"- **Sydney Royal Botanic Garden**  \\n\",\n      \"  Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Dinner in Darling Harbour**  \\n\",\n      \"  Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\\n\",\n      \"\\n\",\n      \"#### **Day 3: Exploration and Adventure**\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"- **Taronga Zoo**  \\n\",\n      \"  Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\\n\",\n      \"\\n\",\n      \"**Afternoon:** \\n\",\n      \"- **Bondi Beach & Coastal Walk**  \\n\",\n      \"  Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia\\u2019s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"- **Sydney Observatory**  \\n\",\n      \"  Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\\n\",\n      \"\\n\",\n      \"### **Notes:**\\n\",\n      \"- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\\n\",\n      \"- **Bookings**: It\\u2019s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\\n\",\n      \"- **Transportation**: Utilize Sydney\\u2019s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\\n\",\n      \"\\n\",\n      \"Enjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  **Detailed Itinerary for a Day in Tokyo**\\n\",\n      \"\\n\",\n      \"*Weather Overview:*\\n\",\n      \"- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37\\u00b0C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\\n\",\n      \"\\n\",\n      \"**Morning:**\\n\",\n      \"\\n\",\n      \"1. **Visit Asakusa and Sens\\u014d-ji Temple:**\\n\",\n      \"   - Start your day in the historical district of Asakusa. Explore Sens\\u014d-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\\n\",\n      \"   - *Time: 9:00 AM - 11:00 AM*\\n\",\n      \"\\n\",\n      \"2. **Breakfast at Asakusa:**\\n\",\n      \"   - Enjoy a traditional Japanese breakfast at one of the local caf\\u00e9s. Try some fresh sushi or a hearty bowl of ramen.\\n\",\n      \"\\n\",\n      \"**Midday:**\\n\",\n      \"\\n\",\n      \"1. **Ueno Park and Museums:**\\n\",\n      \"   - Head over to Ueno Park, a large public park with museums and beautiful gardens.\\n\",\n      \"   - Visit the Tokyo National Museum to explore Japanese art and history.\\n\",\n      \"   - *Time: 11:30 AM - 1:30 PM*\\n\",\n      \"\\n\",\n      \"2. **Lunch in Ueno:**\\n\",\n      \"   - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\\n\",\n      \"\\n\",\n      \"**Afternoon:**\\n\",\n      \"\\n\",\n      \"1. **Tokyo Skytree:**\\n\",\n      \"   - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\\n\",\n      \"   - *Time: 2:30 PM - 4:00 PM*\\n\",\n      \"\\n\",\n      \"2. **Shibuya & Harajuku:**\\n\",\n      \"   - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\\n\",\n      \"   - Don\\u2019t miss a walk through Yoyogi Park, a large urban park that\\u2019s perfect for relaxing.\\n\",\n      \"   - *Time: 4:30 PM - 6:00 PM*\\n\",\n      \"\\n\",\n      \"**Evening:**\\n\",\n      \"\\n\",\n      \"1. **Dinner in Shinjuku:**\\n\",\n      \"   - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\\n\",\n      \"   - *Time: 7:00 PM - 8:30 PM*\\n\",\n      \"\\n\",\n      \"2. **Explore Shinjuku Nightlife:**\\n\",\n      \"   - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\\n\",\n      \"   - *Time: 8:30 PM onward*\\n\",\n      \"\\n\",\n      \"*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\\n\",\n      \"- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\\n\",\n      \"- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\\n\",\n      \"- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\\n\",\n      \"\\n\",\n      \"Enjoy your day exploring the vibrant and diverse city of Tokyo!\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [\\\"Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\\\\n\\\\n### Day 1: Arrival and Exploration\\\\n\\\\n**Morning:**\\\\n- **Central Park:**\\\\n  - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74\\u00b0C, and a chance to see the iconic landscapes.\\\\n  - Address: New York, NY\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\\\\n\\\\n**Mid-Morning:**\\\\n- **Metropolitan Museum of Art:**\\\\n  - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\\\\n  - Address: 1000 5th Ave, New York, NY 10028\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\\\\n\\\\n**Afternoon:**\\\\n- **Lunch near the Upper East Side:**\\\\n  - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\\\\n- **Museum of Modern Art (MoMA):**\\\\n  - After lunch, take a short walk to MoMA for a dose of contemporary art.\\\\n  - Address: 11 W 53rd St, New York, NY 10019\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\\\\n\\\\n**Evening:**\\\\n- **Times Square:**\\\\n  - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\\\\n  - Address: Manhattan, NY 10036\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\\\\n\\\\n### Day 2: Iconic Landmarks\\\\n\\\\n**Morning:**\\\\n- **Statue of Liberty and Ellis Island:**\\\\n  - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\\\\n  - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\\\n\\\\n**Afternoon:**\\\\n- **Lunch in Lower Manhattan:**\\\\n  - Explore dining options in the Financial District.\\\\n- **9/11 Memorial and Museum:**\\\\n  - Visit this poignant site to pay respects and learn about the events of 9/11.\\\\n  - Address: 180 Greenwich St, New York, NY 10007\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\\\\n\\\\n**Evening:**\\\\n- **Broadway Show:**\\\\n  - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\\\\n  - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\\\n\\\\n### Day 3: Adventure and Relaxation\\\\n\\\\n**Morning:**\\\\n- **High Line Park:**\\\\n  - Enjoy a unique stroll along this elevated linear park on a former rail track.\\\\n  - Address: New York, NY 10011\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\\\\n\\\\n**Afternoon:**\\\\n- **Chelsea Market:**\\\\n  - Experience an array of food options in this historic marketplace for lunch.\\\\n  - Address: 75 9th Ave, New York, NY 10011\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\\\\n\\\\n**Evening:**\\\\n- **Brooklyn Bridge Walk:**\\\\n  - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\\\\n\\\\nWith the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\\\", \\\"Sure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\\\\n\\\\n---\\\\n\\\\n**London Day Itinerary**\\\\n\\\\n**Morning:**\\\\n\\\\n1. **Breakfast at Borough Market**\\\\n   - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\\\\n\\\\n2. **Tower of London**\\\\n   - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\\\\n\\\\n**Midday:**\\\\n\\\\n3. **Walk Along the Thames & Tower Bridge**\\\\n   - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\\\\n\\\\n4. **Lunch at a Pub in Covent Garden**\\\\n   - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\\\\n\\\\n**Afternoon:**\\\\n\\\\n5. **British Museum**\\\\n   - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\\\\n\\\\n6. **Stroll through Leadenhall Market**\\\\n   - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\\\\n\\\\n**Evening:**\\\\n\\\\n7. **Dinner and Evening at The Sky Garden**\\\\n   - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360\\u00b0 views of London's skyline.\\\\n\\\\n8. **Walk Around South Bank**\\\\n   - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\\\\n\\\\n**Tips:**\\\\n- Carry an umbrella or a light waterproof jacket just in case.\\\\n- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\\\\n- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\\\\n\\\\nHave a fantastic day exploring London!\\\", \\\"### Paris Itinerary\\\\n\\\\n#### **Day 1: Arrival and Evening River Cruise**\\\\n\\\\n- **Morning:**\\\\n  - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \\\\n  - **Breakfast at a Local Caf\\u00e9:** Start your day with a classic Parisian breakfast: a croissant and caf\\u00e9 au lait at a nearby caf\\u00e9.\\\\n\\\\n- **Afternoon:**\\\\n  - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\\\\n  - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the March\\u00e9 Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\\\\n\\\\n- **Evening:**\\\\n  - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\\\\n  - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\\\\n\\\\n#### **Day 2: Classic Paris Sights**\\\\n\\\\n- **Morning:**\\\\n  - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\\\\n  - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don\\u2019t miss iconic pieces like the Mona Lisa and the Venus de Milo.\\\\n\\\\n- **Afternoon:**\\\\n  - **Lunch at a Caf\\u00e9:** Enjoy lunch at a caf\\u00e9 near the Louvre. Try classic French dishes like quiche or salade ni\\u00e7oise.\\\\n  - **Walk along the Champs-\\u00c9lys\\u00e9es:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\\\\n\\\\n- **Evening:**\\\\n  - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\\\\n\\\\n#### **Day 3: Art, Culture, and Relaxation**\\\\n\\\\n- **Morning:**\\\\n  - **Mus\\u00e9e d'Orsay:** Visit the Mus\\u00e9e d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\\\\n  - **Explore Saint-Germain-des-Pr\\u00e9s:** Discover the boutiques and caf\\u00e9s in this historic district.\\\\n\\\\n- **Afternoon:**\\\\n  - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\\\\n  - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\\\\n\\\\n- **Evening:**\\\\n  - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\\\\n\\\\n#### **Tips:**\\\\n- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14\\u00b0C).\\\\n- **Travel Consideration:** Use public transport like the M\\u00e9tro to navigate efficiently.\\\\n- **Pass Options:** Consider purchasing the Paris Pass\\u00ae for discounts and ease of access at major attractions.\\\\n\\\\nWith this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\\\", \\\"**Detailed Itinerary for a Day in Tokyo**\\\\n\\\\n*Weather Overview:*\\\\n- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37\\u00b0C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\\\\n\\\\n**Morning:**\\\\n\\\\n1. **Visit Asakusa and Sens\\u014d-ji Temple:**\\\\n   - Start your day in the historical district of Asakusa. Explore Sens\\u014d-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\\\\n   - *Time: 9:00 AM - 11:00 AM*\\\\n\\\\n2. **Breakfast at Asakusa:**\\\\n   - Enjoy a traditional Japanese breakfast at one of the local caf\\u00e9s. Try some fresh sushi or a hearty bowl of ramen.\\\\n\\\\n**Midday:**\\\\n\\\\n1. **Ueno Park and Museums:**\\\\n   - Head over to Ueno Park, a large public park with museums and beautiful gardens.\\\\n   - Visit the Tokyo National Museum to explore Japanese art and history.\\\\n   - *Time: 11:30 AM - 1:30 PM*\\\\n\\\\n2. **Lunch in Ueno:**\\\\n   - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\\\\n\\\\n**Afternoon:**\\\\n\\\\n1. **Tokyo Skytree:**\\\\n   - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\\\\n   - *Time: 2:30 PM - 4:00 PM*\\\\n\\\\n2. **Shibuya & Harajuku:**\\\\n   - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\\\\n   - Don\\u2019t miss a walk through Yoyogi Park, a large urban park that\\u2019s perfect for relaxing.\\\\n   - *Time: 4:30 PM - 6:00 PM*\\\\n\\\\n**Evening:**\\\\n\\\\n1. **Dinner in Shinjuku:**\\\\n   - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\\\\n   - *Time: 7:00 PM - 8:30 PM*\\\\n\\\\n2. **Explore Shinjuku Nightlife:**\\\\n   - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\\\\n   - *Time: 8:30 PM onward*\\\\n\\\\n*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\\\\n- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\\\\n- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\\\\n- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\\\\n\\\\nEnjoy your day exploring the vibrant and diverse city of Tokyo!\\\", '### Sydney Itinerary - Exploring with Light Rain\\\\n\\\\n#### **Day 1: Arrival and Iconic Landmarks**\\\\n\\\\n**Morning:**\\\\n- **Sydney Opera House**  \\\\n  Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don\\u2019t forget to bring a light raincoat as there\\u2019s some rain expected.\\\\n\\\\n**Afternoon:**\\\\n- **Sydney Harbour Bridge**  \\\\n  Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it\\u2019s cloudy.\\\\n\\\\n**Evening:**\\\\n- **The Rocks District**  \\\\n  Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\\\\n\\\\n#### **Day 2: Culture and Relaxation**\\\\n\\\\n**Morning:**\\\\n- **Art Gallery of New South Wales**  \\\\n  Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It\\u2019s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\\\\n\\\\n**Afternoon:**\\\\n- **Sydney Royal Botanic Garden**  \\\\n  Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\\\\n\\\\n**Evening:**\\\\n- **Dinner in Darling Harbour**  \\\\n  Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\\\\n\\\\n#### **Day 3: Exploration and Adventure**\\\\n\\\\n**Morning:**\\\\n- **Taronga Zoo**  \\\\n  Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\\\\n\\\\n**Afternoon:** \\\\n- **Bondi Beach & Coastal Walk**  \\\\n  Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia\\u2019s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\\\\n\\\\n**Evening:**\\\\n- **Sydney Observatory**  \\\\n  Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\\\\n\\\\n### **Notes:**\\\\n- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\\\\n- **Bookings**: It\\u2019s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\\\\n- **Transportation**: Utilize Sydney\\u2019s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\\\\n\\\\nEnjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!']\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish\\n\",\n      \"Transition output:  {'final_plan': \\\"Here's a detailed itinerary for exploring New York, tailored to the current weather and top attractions:\\\\n\\\\n### Day 1: Arrival and Exploration\\\\n\\\\n**Morning:**\\\\n- **Central Park:**\\\\n  - Begin your day with a brisk walk through Central Park. It's a perfect way to enjoy the morning with temperatures around 7.74\\u00b0C, and a chance to see the iconic landscapes.\\\\n  - Address: New York, NY\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105127-Reviews-Central_Park-New_York_City_New_York.html)\\\\n\\\\n**Mid-Morning:**\\\\n- **Metropolitan Museum of Art:**\\\\n  - Escape the wind and immerse yourself in art and culture at The Met. Spend a couple of hours exploring its vast collections.\\\\n  - Address: 1000 5th Ave, New York, NY 10028\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d105125-Reviews-The_Metropolitan_Museum_of_Art-New_York_City_New_York.html)\\\\n\\\\n**Afternoon:**\\\\n- **Lunch near the Upper East Side:**\\\\n  - Choose from numerous cozy cafes with indoor seating to stay warm and enjoy a delicious meal.\\\\n- **Museum of Modern Art (MoMA):**\\\\n  - After lunch, take a short walk to MoMA for a dose of contemporary art.\\\\n  - Address: 11 W 53rd St, New York, NY 10019\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d104365-Reviews-The_Museum_of_Modern_Art_MoMA-New_York_City_New_York.html)\\\\n\\\\n**Evening:**\\\\n- **Times Square:**\\\\n  - End your day in the bustling vibrancy of Times Square. Experience the dazzling lights and energetic atmosphere.\\\\n  - Address: Manhattan, NY 10036\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d143361-Reviews-Times_Square-New_York_City_New_York.html)\\\\n\\\\n### Day 2: Iconic Landmarks\\\\n\\\\n**Morning:**\\\\n- **Statue of Liberty and Ellis Island:**\\\\n  - Start with a ferry ride to these iconic landmarks. Dress warmly as it might feel colder on the water.\\\\n  - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\\\n\\\\n**Afternoon:**\\\\n- **Lunch in Lower Manhattan:**\\\\n  - Explore dining options in the Financial District.\\\\n- **9/11 Memorial and Museum:**\\\\n  - Visit this poignant site to pay respects and learn about the events of 9/11.\\\\n  - Address: 180 Greenwich St, New York, NY 10007\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1687489-Reviews-The_National_9_11_Memorial_Museum-New_York_City_New_York.html)\\\\n\\\\n**Evening:**\\\\n- **Broadway Show:**\\\\n  - Treat yourself to a memorable Broadway show. Be sure to book tickets in advance.\\\\n  - [More Info](https://www.iloveny.com/places-to-go/new-york-city/attractions/)\\\\n\\\\n### Day 3: Adventure and Relaxation\\\\n\\\\n**Morning:**\\\\n- **High Line Park:**\\\\n  - Enjoy a unique stroll along this elevated linear park on a former rail track.\\\\n  - Address: New York, NY 10011\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d519474-Reviews-The_High_Line-New_York_City_New_York.html)\\\\n\\\\n**Afternoon:**\\\\n- **Chelsea Market:**\\\\n  - Experience an array of food options in this historic marketplace for lunch.\\\\n  - Address: 75 9th Ave, New York, NY 10011\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d1912932-Reviews-Chelsea_Market-New_York_City_New_York.html)\\\\n\\\\n**Evening:**\\\\n- **Brooklyn Bridge Walk:**\\\\n  - Cap off your trip with an evening walk across the Brooklyn Bridge for beautiful skyline views.\\\\n  - [More Info](https://www.tripadvisor.com/Attraction_Review-g60763-d619722-Reviews-Brooklyn_Bridge-New_York_City_New_York.html)\\\\n\\\\nWith the current few clouds in the sky and comfortable daytime temperatures, this itinerary balances must-see attractions and relaxation, ideal for a memorable visit to New York City. Also consider checking out various passes like the New York Pass for potential savings. Enjoy your trip!\\\\n---------------\\\\nSure, let's create a detailed itinerary for a day in London, factoring in the weather conditions:\\\\n\\\\n---\\\\n\\\\n**London Day Itinerary**\\\\n\\\\n**Morning:**\\\\n\\\\n1. **Breakfast at Borough Market**\\\\n   - Kick off your day with a hearty breakfast at Borough Market, which opens early. Enjoy a variety of local foods and fresh pastries to fuel your day.\\\\n\\\\n2. **Tower of London**\\\\n   - After breakfast, head to the Tower of London, one of the most iconic attractions. Spend a couple of hours exploring this historic castle and its exhibits. Given the cool weather, dress in layers to stay comfortable outdoors.\\\\n\\\\n**Midday:**\\\\n\\\\n3. **Walk Along the Thames & Tower Bridge**\\\\n   - Take a short walk along the Thames River, taking in the views and crossing the iconic Tower Bridge. The scattered clouds make for perfect photographic conditions without the harsh sunlight.\\\\n\\\\n4. **Lunch at a Pub in Covent Garden**\\\\n   - Head over to Covent Garden for a traditional British lunch at one of the local pubs. This area offers vibrant street performances and boutique shops.\\\\n\\\\n**Afternoon:**\\\\n\\\\n5. **British Museum**\\\\n   - Spend a couple of hours at the British Museum, exploring its vast collection of global artifacts. This indoor activity provides a respite from any nippy outdoor temperatures.\\\\n\\\\n6. **Stroll through Leadenhall Market**\\\\n   - If time allows, explore Leadenhall Market. The market features stunning architecture and historic ambiance, perfect for browsing or enjoying a coffee.\\\\n\\\\n**Evening:**\\\\n\\\\n7. **Dinner and Evening at The Sky Garden**\\\\n   - Conclude your day with a visit to the Sky Garden, especially recommended on clear days for panoramic views of London. Enjoy dinner at their renowned restaurant under the 360\\u00b0 views of London's skyline.\\\\n\\\\n8. **Walk Around South Bank**\\\\n   - If you're up for it, finish the evening with a leisurely stroll along the South Bank, where you'll find lively street performers and beautiful views of the Twinkling London Eye.\\\\n\\\\n**Tips:**\\\\n- Carry an umbrella or a light waterproof jacket just in case.\\\\n- Ensure comfortable walking shoes as you'll be spending a lot of time exploring on foot.\\\\n- Your smartphone/camera will come in handy for capturing the charming scenes of London under those scattered clouds.\\\\n\\\\nHave a fantastic day exploring London!\\\\n---------------\\\\n### Paris Itinerary\\\\n\\\\n#### **Day 1: Arrival and Evening River Cruise**\\\\n\\\\n- **Morning:**\\\\n  - **Arrival in Paris:** Check-in at your hotel and take some time to freshen up. \\\\n  - **Breakfast at a Local Caf\\u00e9:** Start your day with a classic Parisian breakfast: a croissant and caf\\u00e9 au lait at a nearby caf\\u00e9.\\\\n\\\\n- **Afternoon:**\\\\n  - **Leisure Walk:** Enjoy a leisurely stroll in the neighborhood. Consider walking along the Seine to take in the iconic architecture.\\\\n  - **Visit a Local Market:** Experience local life by exploring one of Paris's charming markets. Try the March\\u00e9 Bastille on Boulevard Richard Lenoir for fresh produce and artisan products.\\\\n\\\\n- **Evening:**\\\\n  - **Seine River Cruise:** In the evening, enjoy a Seine River cruise. This is an excellent way to see the city lights and major attractions like the Eiffel Tower.\\\\n  - **Dinner at a Bistro:** Conclude your day with dinner at a traditional Parisian bistro. Taste local specialties like duck confit or coq au vin.\\\\n\\\\n#### **Day 2: Classic Paris Sights**\\\\n\\\\n- **Morning:**\\\\n  - **Eiffel Tower Visit:** Start early to beat the crowds at the Eiffel Tower. Enjoy a coffee at the top with a breathtaking view of the city.\\\\n  - **Louvre Museum:** Spend a few hours exploring the world-renowned Louvre Museum. Don\\u2019t miss iconic pieces like the Mona Lisa and the Venus de Milo.\\\\n\\\\n- **Afternoon:**\\\\n  - **Lunch at a Caf\\u00e9:** Enjoy lunch at a caf\\u00e9 near the Louvre. Try classic French dishes like quiche or salade ni\\u00e7oise.\\\\n  - **Walk along the Champs-\\u00c9lys\\u00e9es:** Take a leisurely walk down this famous avenue towards the Arc de Triomphe.\\\\n\\\\n- **Evening:**\\\\n  - **Dinner in Montmartre:** Head to Montmartre for dinner. Wander through its charming streets and enjoy a meal at one of its quaint restaurants.\\\\n\\\\n#### **Day 3: Art, Culture, and Relaxation**\\\\n\\\\n- **Morning:**\\\\n  - **Mus\\u00e9e d'Orsay:** Visit the Mus\\u00e9e d'Orsay to admire its impressive collection of impressionist and post-impressionist masterpieces.\\\\n  - **Explore Saint-Germain-des-Pr\\u00e9s:** Discover the boutiques and caf\\u00e9s in this historic district.\\\\n\\\\n- **Afternoon:**\\\\n  - **Lunch in Le Marais:** Head to the Le Marais district, known for its historic charm and trendy vibe. Enjoy lunch at a local eatery.\\\\n  - **Explore Local Shops:** Take time to browse in unique shops and art galleries.\\\\n\\\\n- **Evening:**\\\\n  - **Dinner at a Michelin Star Restaurant:** Treat yourself to an exquisite dining experience at a Michelin Star restaurant to cap off your trip.\\\\n\\\\n#### **Tips:**\\\\n- **Weather Preparation:** Pack an umbrella and a light jacket due to the cloud cover and mild temperatures (around 13-14\\u00b0C).\\\\n- **Travel Consideration:** Use public transport like the M\\u00e9tro to navigate efficiently.\\\\n- **Pass Options:** Consider purchasing the Paris Pass\\u00ae for discounts and ease of access at major attractions.\\\\n\\\\nWith this itinerary, you'll experience the essence of Paris, from its iconic landmarks to its vibrant local culture. Enjoy your visit!\\\\n---------------\\\\n**Detailed Itinerary for a Day in Tokyo**\\\\n\\\\n*Weather Overview:*\\\\n- Expect clear skies, perfect for exploring the city. The temperature is comfortable at 15.37\\u00b0C with a light wind. Dress in layers to adjust to the mild weather, especially for evening activities.\\\\n\\\\n**Morning:**\\\\n\\\\n1. **Visit Asakusa and Sens\\u014d-ji Temple:**\\\\n   - Start your day in the historical district of Asakusa. Explore Sens\\u014d-ji, Tokyo's oldest temple, and take in the vibrant atmosphere of Nakamise Shopping Street.\\\\n   - *Time: 9:00 AM - 11:00 AM*\\\\n\\\\n2. **Breakfast at Asakusa:**\\\\n   - Enjoy a traditional Japanese breakfast at one of the local caf\\u00e9s. Try some fresh sushi or a hearty bowl of ramen.\\\\n\\\\n**Midday:**\\\\n\\\\n1. **Ueno Park and Museums:**\\\\n   - Head over to Ueno Park, a large public park with museums and beautiful gardens.\\\\n   - Visit the Tokyo National Museum to explore Japanese art and history.\\\\n   - *Time: 11:30 AM - 1:30 PM*\\\\n\\\\n2. **Lunch in Ueno:**\\\\n   - Choose from various dining options in Ueno, from traditional Japanese meals to international cuisine. Ueno offers an array of options for everyone.\\\\n\\\\n**Afternoon:**\\\\n\\\\n1. **Tokyo Skytree:**\\\\n   - Ascend to the observation deck for breathtaking views of Tokyo from the Tokyo Skytree, one of the tallest structures in the world.\\\\n   - *Time: 2:30 PM - 4:00 PM*\\\\n\\\\n2. **Shibuya & Harajuku:**\\\\n   - Head to Shibuya Crossing, the world's busiest pedestrian crossing, and then wander around the trendy Harajuku area, famous for unique fashion and vibrant culture.\\\\n   - Don\\u2019t miss a walk through Yoyogi Park, a large urban park that\\u2019s perfect for relaxing.\\\\n   - *Time: 4:30 PM - 6:00 PM*\\\\n\\\\n**Evening:**\\\\n\\\\n1. **Dinner in Shinjuku:**\\\\n   - Make your way to Shinjuku for dinner in one of the many izakayas or sushi bars. Explore the buzzing streets and maybe try some yakitori.\\\\n   - *Time: 7:00 PM - 8:30 PM*\\\\n\\\\n2. **Explore Shinjuku Nightlife:**\\\\n   - After dinner, explore the nightlife in Shinjuku. Consider visiting the Robot Restaurant for a unique show or wander through the entertainment district of Kabukicho.\\\\n   - *Time: 8:30 PM onward*\\\\n\\\\n*Note:* For additional resources and more must-see attractions, consider referring to the following links for inspiration and up-to-date information:\\\\n- [Tripadvisor's Best Things to Do in Tokyo](https://www.tripadvisor.com/Attractions-g298184-Activities-Tokyo_Tokyo_Prefecture_Kanto.html)\\\\n- [The Official Tokyo Travel Guide](https://www.gotokyo.org/en/see-and-do/attractions/index.html)\\\\n- [Japan-Guide for Exploring Tokyo](https://www.japan-guide.com/e/e2164.html)\\\\n\\\\nEnjoy your day exploring the vibrant and diverse city of Tokyo!\\\\n---------------\\\\n### Sydney Itinerary - Exploring with Light Rain\\\\n\\\\n#### **Day 1: Arrival and Iconic Landmarks**\\\\n\\\\n**Morning:**\\\\n- **Sydney Opera House**  \\\\n  Start your day early with a tour of the iconic Sydney Opera House. Book a guided tour to learn about the history and architecture of this world-famous landmark. Don\\u2019t forget to bring a light raincoat as there\\u2019s some rain expected.\\\\n\\\\n**Afternoon:**\\\\n- **Sydney Harbour Bridge**  \\\\n  Take a stroll across Sydney Harbour Bridge. The slight drizzle and the fresh air will make for a refreshing walk. Consider the BridgeClimb experience for spectacular views of the city, even more mesmerizing when it\\u2019s cloudy.\\\\n\\\\n**Evening:**\\\\n- **The Rocks District**  \\\\n  Delve into the historic Rocks area, where you can enjoy a cozy dinner at one of the local pubs. The gentle rain makes for a charming atmosphere in the cobblestone streets.\\\\n\\\\n#### **Day 2: Culture and Relaxation**\\\\n\\\\n**Morning:**\\\\n- **Art Gallery of New South Wales**  \\\\n  Immerse yourself in Australian art and culture at the Art Gallery of New South Wales. It\\u2019s a perfect indoor activity to escape the rain while enjoying beautiful art pieces.\\\\n\\\\n**Afternoon:**\\\\n- **Sydney Royal Botanic Garden**  \\\\n  Walk through the lush greenery of the Royal Botanic Garden. While the light rain adds to the beauty of the gardens, keep an umbrella or a waterproof jacket handy.\\\\n\\\\n**Evening:**\\\\n- **Dinner in Darling Harbour**  \\\\n  Head to Darling Harbour for a diverse culinary experience. Choose from cafes and restaurants with a view of the harbour, perfect for a calming evening. The rain reflection off the water creates an enchanting setting.\\\\n\\\\n#### **Day 3: Exploration and Adventure**\\\\n\\\\n**Morning:**\\\\n- **Taronga Zoo**  \\\\n  Visit Taronga Zoo, which offers views of Sydney Harbour along with a variety of animal species. Since there might be light rain, focus on the indoor animal enclosures and exhibits.\\\\n\\\\n**Afternoon:** \\\\n- **Bondi Beach & Coastal Walk**  \\\\n  Take a trip to the famous Bondi Beach, where you can enjoy the overcast skies at Australia\\u2019s most famous beach. If weather permits, try a short walk on the Bondi to Coogee coastal walk and enjoy the dramatic coastline views.\\\\n\\\\n**Evening:**\\\\n- **Sydney Observatory**  \\\\n  Conclude your day with a visit to the Sydney Observatory. If the clouds clear up, stargazing is an incredible experience, allowing a unique glimpse into the southern skies.\\\\n\\\\n### **Notes:**\\\\n- **Weather Precautions**: Remember to always check the current weather on the day and be prepared with rain-appropriate gear.\\\\n- **Bookings**: It\\u2019s highly recommended to book indoor activities in advance, particularly for popular attractions, to ensure a spot.\\\\n- **Transportation**: Utilize Sydney\\u2019s efficient public transport, including ferries, buses, and trains, to make the most out of your visit under weather-friendly conditions.\\\\n\\\\nEnjoy your time in Sydney, where even a little rain adds its magic to the vibrant cityscape!\\\"}\\n\",\n      \"--------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Lists all the task steps that have been executed up to this point in time\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"# Transitions are retrieved in reverse chronological order\\n\",\n    \"for transition in reversed(transitions):\\n\",\n    \"    print(\\\"Transition type: \\\", transition.type)\\n\",\n    \"    print(\\\"Transition output: \\\", transition.output)\\n\",\n    \"    print(\\\"-\\\"*50)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/04-hook-generator-trending-reels.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<div align=\\\"center\\\" id=\\\"top\\\">\\n\",\n    \"<img src=\\\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\\\" alt=\\\"julep\\\" />\\n\",\n    \"\\n\",\n    \"<br>\\n\",\n    \"  <p>\\n\",\n    \"    <a href=\\\"https://dashboard.julep.ai\\\">\\n\",\n    \"      <img src=\\\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\\\" alt=\\\"Get API Key\\\" height=\\\"28\\\">\\n\",\n    \"    </a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://docs.julep.ai\\\">\\n\",\n    \"      <img src=\\\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\\\" alt=\\\"Documentation\\\" height=\\\"28\\\">\\n\",\n    \"    </a>\\n\",\n    \"  </p>\\n\",\n    \"  <p>\\n\",\n    \"   <a href=\\\"https://www.npmjs.com/package/@julep/sdk\\\"><img src=\\\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\\\" alt=\\\"NPM Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://pypi.org/project/julep\\\"><img src=\\\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\\\" alt=\\\"PyPI - Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://hub.docker.com/u/julepai\\\"><img src=\\\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\\\" alt=\\\"Docker Image Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://choosealicense.com/licenses/apache/\\\"><img src=\\\"https://img.shields.io/github/license/julep-ai/julep\\\" alt=\\\"GitHub License\\\" height=\\\"28\\\"></a>\\n\",\n    \"  </p>\\n\",\n    \"  \\n\",\n    \"  <h3>\\n\",\n    \"    <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\">Discord</a>\\n\",\n    \"    ·\\n\",\n    \"    <a href=\\\"https://x.com/julep_ai\\\" rel=\\\"dofollow\\\">𝕏</a>\\n\",\n    \"    ·\\n\",\n    \"    <a href=\\\"https://www.linkedin.com/company/julep-ai\\\" rel=\\\"dofollow\\\">LinkedIn</a>\\n\",\n    \"  </h3>\\n\",\n    \"</div>\\n\",\n    \" \\n\",\n    \"## Task Definition: Generating Hooks for Trending Instagram Reels\\n\",\n    \" \\n\",\n    \"### Overview\\n\",\n    \" \\n\",\n    \" This task involves creating engaging hooks for trending Instragram reels using a structured approach that leverages data extracted from various social media APIs. The goal is to enhance the visibility and engagement of these reels through compelling introductory statements.\\n\",\n    \" \\n\",\n    \"### Task Tools:\\n\",\n    \" \\n\",\n    \"**API Tool Call**: Utilizes API calls to fetch trending data from social media platforms.\\n\",\n    \" \\n\",\n    \"**System Tool**: Manages document retrieval that contains templates for generating hooks.\\n\",\n    \" \\n\",\n    \"### Task Input:\\n\",\n    \" \\n\",\n    \"**query**: The search query or topic for which trending reels need to be analyzed.\\n\",\n    \" \\n\",\n    \"### Task Output:\\n\",\n    \" \\n\",\n    \"**output**: A JSON object that includes the original reel data along with the newly generated hooks, aimed at maximizing engagement.\\n\",\n    \" \\n\",\n    \"#### Task Flow\\n\",\n    \" \\n\",\n    \"1. **Input**: The user provides a topic or query.\\n\",\n    \" \\n\",\n    \"2. **API Tool Integration**: The `api_tool_call` is used to fetch trending reels based on the input query.\\n\",\n    \"\\n\",\n    \"3. **Document Retrieval**: Retrieves a document containing hook templates from the system tool.\\n\",\n    \"\\n\",\n    \"4. **Hook Generation**: Utilizes the retrieved templates to generate three unique hooks for each reel.\\n\",\n    \" \\n\",\n    \"5. **Output**: The final output includes the original reel data along with its engagement metrics and the generated hooks.\\n\",\n    \"\\n\",\n    \"### Key Feature:\\n\",\n    \"- Utilizes dynamic hook templates and social media trends to generate engaging content for TikTok reels, enhancing viewer interaction and reel visibility.\\n\",\n    \"\\n\",\n    \"```plaintext\\n\",\n    \"+----------+     +------------+     +------------+     +------------+     +-----------+\\n\",\n    \"|  User    |     |   API      |     |  Prompt    |     |   System   |     |  Output   |\\n\",\n    \"|  Input   | --> |   Tool     | --> |   Step     | --> |   Tool     | --> |   Step    |\\n\",\n    \"| (Query)  |     |   Call     |     | (Scores)   |     |            |     |           |\\n\",\n    \"+----------+     +------------+     +------------+     +------------+     +-----------+\\n\",\n    \"      |               |                   |                  |                  |\\n\",\n    \"      |               |                   |                  |                  |\\n\",\n    \"      v               v                   v                  v                  v\\n\",\n    \"  \\\"trending\\\"     Fetch data         Calculate          Retrieve hooks     \\\"Here are the\\n\",\n    \"    topics       from API        engagement &         from document     trending hooks...\\\"\\n\",\n    \"                                virality scores\\n\",\n    \"```\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Implementation\\n\",\n    \"\\n\",\n    \"To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\\n\",\n    \"\\n\",\n    \"<a target=\\\"_blank\\\" href=\\\"https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb\\\">\\n\",\n    \"  <img src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/>\\n\",\n    \"</a>\\n\",\n    \"\\n\",\n    \"### Additional Information\\n\",\n    \"\\n\",\n    \"For more details about the task or if you have any questions, please don't hesitate to contact the author:\\n\",\n    \"\\n\",\n    \"**Author:** Julep AI  \\n\",\n    \"**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or  <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\">Discord</a>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install julep\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### NOTE:\\n\",\n    \"\\n\",\n    \"- UUIDs are generated for both the agent and task to uniquely identify them within the system.\\n\",\n    \"- Once created, these UUIDs should remain unchanged for simplicity.\\n\",\n    \"- Altering a UUID will result in the system treating it as a new agent or task.\\n\",\n    \"- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 36,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"CPU times: user 1e+03 ns, sys: 0 ns, total: 1e+03 ns\\n\",\n      \"Wall time: 2.62 μs\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Global UUID is generated for agent and task\\n\",\n    \"import uuid\\n\",\n    \"load_dotenv(override=True)\\n\",\n    \"\\n\",\n    \"AGENT_UUID =  uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating Julep Client with the API Key\\n\",\n    \"\\n\",\n    \"Get your API key from [here](https://dashboard.julep.ai/)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 38,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"CPU times: user 1 μs, sys: 0 ns, total: 1 μs\\n\",\n      \"Wall time: 2.62 μs\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"\\n\",\n    \"JULEP_API_KEY = \\\"YOUR_JULEP_API_KEY\\\"\\n\",\n    \"\\n\",\n    \"# Initialize the client\\n\",\n    \"client = Client(api_key=JULEP_API_KEY,environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 39,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"CPU times: user 1 μs, sys: 0 ns, total: 1 μs\\n\",\n      \"Wall time: 2.38 μs\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"#  Creating an agent for handling persistent sessions\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=\\\"Session Manager\\\",\\n\",\n    \"    about=\\\"An AI agent specialized in managing persistent sessions and context.\\\",\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"docs\\\"\\n\",\n    \"\\n\",\n    \"Document im Julep is a vector database that can be used to store and retrieve information.\\n\",\n    \"\\n\",\n    \"To learn more about the Document, please refer to the Document section in [Julep Concepts](https://docs.julep.ai/docs/concepts/docs).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 40,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stderr\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"<>:145: SyntaxWarning: invalid escape sequence '\\\\%'\\n\",\n      \"<>:145: SyntaxWarning: invalid escape sequence '\\\\%'\\n\",\n      \"/tmp/ipykernel_819695/2293527858.py:145: SyntaxWarning: invalid escape sequence '\\\\%'\\n\",\n      \"  \\\"99\\\\% of your [target audience] don't. To be the 1% you need to [X].\\\",\\n\"\n     ]\n    },\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"'067a604a-6cf6-75b4-8000-a0cb0181a664'\"\n      ]\n     },\n     \"execution_count\": 40,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"hooks_data = [\\n\",\n    \"    {\\\"categories\\\": \\\"Price-Focused\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Save both time and money with [product].\\\",\\n\",\n    \"         \\\"Save both time and money on [task].\\\",\\n\",\n    \"         \\\"Is [product] worth the price? Let’s find out!\\\",\\n\",\n    \"         \\\"Why is it challenging and costly to find a good [product category]?\\\",\\n\",\n    \"         \\\"Searching for an affordable [product type]? Check this out!\\\",\\n\",\n    \"         \\\"How to locate an affordable [service].\\\",\\n\",\n    \"         \\\"I can’t believe this costs only [price].\\\",\\n\",\n    \"         \\\"Don't waste your money on [X]; instead buy [X].\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Informative\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"What’s inside [product]?\\\",\\n\",\n    \"         \\\"Common questions I get about [product].\\\",\\n\",\n    \"         \\\"Now you can get X delivered right to your door.\\\",\\n\",\n    \"         \\\"Thinking of trying [product type]?\\\",\\n\",\n    \"         \\\"Allow me to introduce you to [product].\\\",\\n\",\n    \"         \\\"[category] Tip #X.\\\",\\n\",\n    \"         \\\"Here’s how to achieve [value prop].\\\",\\n\",\n    \"         \\\"I know this sounds unbelievable, but…\\\",\\n\",\n    \"         \\\"How to get X done in just 10 minutes.\\\",\\n\",\n    \"         \\\"How to find time for X.\\\",\\n\",\n    \"         \\\"Here’s my biggest life hack for X.\\\",\\n\",\n    \"         \\\"Add more [value prop] to your day.\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Versus the Alternative (or Competition)\\\",\\n\",\n    \"        \\\"content\\\": [\\\"Before you try [product type], watch this first.\\\",\\n\",\n    \"                    \\\"Hate [the worse alternative]? Give this a try!\\\",\\n\",\n    \"                    \\\"Thinking about [worse alternative]?\\\",\\n\",\n    \"                    \\\"Instead of [worse alternative], try this.\\\",\\n\",\n    \"                    \\\"Still using [the worse alternative to the product]? Watch this.\\\",\\n\",\n    \"                    \\\"Something that’s always annoyed me about X.\\\",\\n\",\n    \"                    \\\"Don’t buy X that doesn’t work. Try this instead.\\\",\\n\",\n    \"                    \\\"I tested every [product category] so you don’t have to: here’s what I found.\\\",\\n\",\n    \"                    \\\"Stop doing [worse alternative]. Try [product] instead.\\\",\\n\",\n    \"                    \\\"Dealing with [negative experience]? I used [product] to help.\\\",\\n\",\n    \"                    \\\"Why millennials are switching to [product].\\\",\\n\",\n    \"                    \\\"How to do X without [worse alternative].\\\",\\n\",\n    \"                    \\\"I only get my [product category] from [brand name].\\\",\\n\",\n    \"                    \\\"I no longer buy my [product category] from [worse alternative].\\\",\\n\",\n    \"                    \\\"[Worse alternative] can be difficult to deal with.\\\",\\n\",\n    \"                    \\\"Your new X alternative.\\\",\\n\",\n    \"                    \\\"[value prop] without the [negative side effect].\\\",\\n\",\n    \"                    \\\"I kept experiencing [pain point], so I tried this instead!\\\",\\n\",\n    \"                    \\\"If you have [pain point] — you need to see this!\\\",\\n\",\n    \"                    \\\"I wanted to stop doing X, so I tried this instead.\\\",\\n\",\n    \"                    \\\"Your X isn't [adverb]; you just need X.\\\",\\n\",\n    \"                    \\\"My secret to [popular trend] revealed!\\\"\\n\",\n    \"                    ]},\\n\",\n    \"    {\\\"categories\\\": \\\"User Experience\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Guys, it’s here…\\\",\\n\",\n    \"         \\\"What I ordered vs. what I received.\\\",\\n\",\n    \"         \\\"[Product] unboxing.\\\",\\n\",\n    \"         \\\"Let’s create X with [product].\\\",\\n\",\n    \"         \\\"POV: You tried [product].\\\",\\n\",\n    \"         \\\"A day in the life of X.\\\",\\n\",\n    \"         \\\"Get ready with me to do [task].\\\",\\n\",\n    \"         \\\"“Put a finger down” [product category] edition.\\\",\\n\",\n    \"         \\\"Trying home remedies for X.\\\",\\n\",\n    \"         \\\"[Product category] ASMR.\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Responding to Hype\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"TikTok made me try [product].\\\",\\n\",\n    \"         \\\"Things TikTok made me try #13.\\\",\\n\",\n    \"         \\\"This [product type] is going viral on [social media platform].\\\",\\n\",\n    \"         \\\"I tested the viral [product type] to see if it lives up to the hype.\\\",\\n\",\n    \"         \\\"This [product type] has over 5,000 reviews… let’s see if it’s worth it.\\\",\\n\",\n    \"         \\\"[Publication] can’t stop raving about us.\\\",\\n\",\n    \"         \\\"It’s so good it sold out in a week.\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"It’s Easier\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Are you [accomplishing the goal optimally]?\\\",\\n\",\n    \"         \\\"Life Hack: Try [product] for [pain point].\\\",\\n\",\n    \"         \\\"My go-to [product] for [pain point].\\\",\\n\",\n    \"         \\\"How to easily [task].\\\",\\n\",\n    \"         \\\"[Task] has never been easier than with [product].\\\",\\n\",\n    \"         \\\"My favorite [product] to make [hard task] simpler.\\\",\\n\",\n    \"         \\\"Here’s my top product for [task].\\\",\\n\",\n    \"         \\\"Struggling to do [task]?\\\",\\n\",\n    \"         \\\"I’ve been struggling with [task], but [product] has really helped.\\\",\\n\",\n    \"         \\\"Easiest way to do [task]?\\\",\\n\",\n    \"         \\\"Make your week easier.\\\",\\n\",\n    \"         \\\"Why adults avoid [task]… [product] makes it easy.\\\",\\n\",\n    \"         \\\"[Product] made [task] so much easier! You’ve got to try it.\\\",\\n\",\n    \"         \\\"When I use [product], it’s one less thing I have to worry about.\\\",\\n\",\n    \"         \\\"How to do [X] in half the time.\\\",\\n\",\n    \"         \\\"This trick/hack/method will save you hours...\\\",\\n\",\n    \"         \\\"Easy hack to [X]...\\\",\\n\",\n    \"         \\\"Simple [X] that will make you [X].\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Lists\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"5 Ways [product] Helps with [pain point].\\\",\\n\",\n    \"         \\\"3 reasons to buy [product].\\\",\\n\",\n    \"         \\\"3 reasons to try [service].\\\",\\n\",\n    \"         \\\"Get [value prop] in 3 steps.\\\",\\n\",\n    \"         \\\"Here are 3 ways [worse alternative] affects your life.\\\",\\n\",\n    \"         \\\"5 things you didn’t know about [topic].\\\",\\n\",\n    \"         \\\"The ultimate [X] checklist to [action].\\\",\\n\",\n    \"         \\\"Reasons why [X].\\\",\\n\",\n    \"         \\\"Here are the 3 best ways to [X].\\\",\\n\",\n    \"         \\\"Here are [X] mistakes you might be making...\\\",\\n\",\n    \"         \\\"If you want [X], do these 5 things...\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"The Best\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"The internet’s #1 [product type].\\\",\\n\",\n    \"         \\\"The best way to [accomplish the goal of the product].\\\",\\n\",\n    \"         \\\"What makes [the product type] the best?\\\",\\n\",\n    \"         \\\"My skin has never looked better with [product].\\\",\\n\",\n    \"         \\\"The best way to find X in 2022.\\\",\\n\",\n    \"         \\\"[Product] changed how I do [task], and I’m never going back.\\\",\\n\",\n    \"         \\\"Why is [product] so good though?\\\",\\n\",\n    \"         \\\"After hours of researching, I found the best [product type] for [task].\\\",\\n\",\n    \"         \\\"I found the best [product category] for [value prop].\\\",\\n\",\n    \"         \\\"This is going to blow your mind.\\\",\\n\",\n    \"         \\\"How I got [X] in 24 hours.\\\",\\n\",\n    \"         \\\"Must-have [products] for [X].\\\",\\n\",\n    \"         \\\"The best [target audience] know something that you don't.\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Other Video Hooks that Address Viewers Directly\\\",\\n\",\n    \"        \\\"content\\\": [\\n\",\n    \"            \\\"Hey, [customer type], you’ve got to try this.\\\",\\n\",\n    \"            \\\"People looking for [product category], stop scrolling.\\\",\\n\",\n    \"            \\\"Wait, have you tried X?\\\",\\n\",\n    \"            \\\"Take control of your X with [product].\\\",\\n\",\n    \"            \\\"Imagine if X was also X.\\\",\\n\",\n    \"            \\\"Watch this if you X.\\\"\\n\",\n    \"        ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Facts & Stats\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"PSA: [statement about product category].\\\",\\n\",\n    \"         \\\"Did you know? [fact about product category].\\\",\\n\",\n    \"         \\\"I just found out [fact about product category].\\\",\\n\",\n    \"         \\\"Are you one of [fact about product category] people who do X?\\\",\\n\",\n    \"         \\\"New customers get [discount].\\\",\\n\",\n    \"         \\\"Take [discount] off when you try [product].\\\",\\n\",\n    \"         \\\"I didn’t know X could be related to X.\\\",\\n\",\n    \"         \\\"Why is it important to [do product-related task]?\\\",\\n\",\n    \"         \\\"99\\\\% of your [target audience] don't. To be the 1% you need to [X].\\\",\\n\",\n    \"         \\\"This [product] is the secret to [X].\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Curiosity & Engagement\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Is there anything worse than [X]?\\\",\\n\",\n    \"         \\\"I will never [adjective] from learning this.\\\",\\n\",\n    \"         \\\"X people start scrolling. I have the perfect [X] for you.\\\",\\n\",\n    \"         \\\"Here's a challenge for you...\\\",\\n\",\n    \"         \\\"There's nothing more painful than [X].\\\",\\n\",\n    \"         \\\"What would you do if...\\\",\\n\",\n    \"         \\\"Watch till the end…\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Negative Hooks\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Why you're failing at [activity].\\\",\\n\",\n    \"         \\\"The worst mistake you can make in [subject].\\\",\\n\",\n    \"         \\\"Avoid these common pitfalls in [topic].\\\",\\n\",\n    \"         \\\"The dark side of [popular trend].\\\",\\n\",\n    \"         \\\"Don't be fooled by [misconception].\\\",\\n\",\n    \"         \\\"Why [common practice] is ruining your [outcome].\\\",\\n\",\n    \"         \\\"What no one tells you about [issue].\\\",\\n\",\n    \"         \\\"The hidden dangers of [activity].\\\",\\n\",\n    \"         \\\"Stop doing this if you want to succeed in [field].\\\",\\n\",\n    \"         \\\"The ugly truth about [common belief].\\\",\\n\",\n    \"         \\\"Why [habit] is wasting your time.\\\",\\n\",\n    \"         \\\"Exposing the myths about [topic].\\\",\\n\",\n    \"         \\\"The biggest regret you'll have in [situation].\\\",\\n\",\n    \"         \\\"How [action] is destroying your [goal].\\\",\\n\",\n    \"         \\\"The shocking reality of [popular topic].\\\",\\n\",\n    \"         \\\"Why [trend] is a bad idea.\\\",\\n\",\n    \"         \\\"The real reason you're not seeing results in [field].\\\",\\n\",\n    \"         \\\"The downside of [seemingly positive aspect].\\\",\\n\",\n    \"         \\\"What you should never do in [activity].\\\",\\n\",\n    \"         \\\"Why [common advice] is actually harmful.\\\"\\n\",\n    \"     ]}\\n\",\n    \"]\\n\",\n    \"\\n\",\n    \"hooks_doc_content = []\\n\",\n    \"\\n\",\n    \"for category in hooks_data:\\n\",\n    \"    hooks_doc_content.extend(category['content'])\\n\",\n    \"\\n\",\n    \"doc = client.agents.docs.create(\\n\",\n    \"    agent_id=AGENT_UUID, title=\\\"hooks_doc\\\", content=hooks_doc_content)\\n\",\n    \"\\n\",\n    \"doc.id\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 41,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"['Save both time and money with [product].', 'Save both time and money on [task].', 'Is [product] worth the price? Let’s find out!', 'Why is it challenging and costly to find a good [product category]?', 'Searching for an affordable [product type]? Check this out!', 'How to locate an affordable [service].', 'I can’t believe this costs only [price].', \\\"Don't waste your money on [X]; instead buy [X].\\\", 'What’s inside [product]?', 'Common questions I get about [product].', 'Now you can get X delivered right to your door.', 'Thinking of trying [product type]?', 'Allow me to introduce you to [product].', '[category] Tip #X.', 'Here’s how to achieve [value prop].', 'I know this sounds unbelievable, but…', 'How to get X done in just 10 minutes.', 'How to find time for X.', 'Here’s my biggest life hack for X.', 'Add more [value prop] to your day.', 'Before you try [product type], watch this first.', 'Hate [the worse alternative]? Give this a try!', 'Thinking about [worse alternative]?', 'Instead of [worse alternative], try this.', 'Still using [the worse alternative to the product]? Watch this.', 'Something that’s always annoyed me about X.', 'Don’t buy X that doesn’t work. Try this instead.', 'I tested every [product category] so you don’t have to: here’s what I found.', 'Stop doing [worse alternative]. Try [product] instead.', 'Dealing with [negative experience]? I used [product] to help.', 'Why millennials are switching to [product].', 'How to do X without [worse alternative].', 'I only get my [product category] from [brand name].', 'I no longer buy my [product category] from [worse alternative].', '[Worse alternative] can be difficult to deal with.', 'Your new X alternative.', '[value prop] without the [negative side effect].', 'I kept experiencing [pain point], so I tried this instead!', 'If you have [pain point] — you need to see this!', 'I wanted to stop doing X, so I tried this instead.', \\\"Your X isn't [adverb]; you just need X.\\\", 'My secret to [popular trend] revealed!', 'Guys, it’s here…', 'What I ordered vs. what I received.', '[Product] unboxing.', 'Let’s create X with [product].', 'POV: You tried [product].', 'A day in the life of X.', 'Get ready with me to do [task].', '“Put a finger down” [product category] edition.', 'Trying home remedies for X.', '[Product category] ASMR.', 'TikTok made me try [product].', 'Things TikTok made me try #13.', 'This [product type] is going viral on [social media platform].', 'I tested the viral [product type] to see if it lives up to the hype.', 'This [product type] has over 5,000 reviews… let’s see if it’s worth it.', '[Publication] can’t stop raving about us.', 'It’s so good it sold out in a week.', 'Are you [accomplishing the goal optimally]?', 'Life Hack: Try [product] for [pain point].', 'My go-to [product] for [pain point].', 'How to easily [task].', '[Task] has never been easier than with [product].', 'My favorite [product] to make [hard task] simpler.', 'Here’s my top product for [task].', 'Struggling to do [task]?', 'I’ve been struggling with [task], but [product] has really helped.', 'Easiest way to do [task]?', 'Make your week easier.', 'Why adults avoid [task]… [product] makes it easy.', '[Product] made [task] so much easier! You’ve got to try it.', 'When I use [product], it’s one less thing I have to worry about.', 'How to do [X] in half the time.', 'This trick/hack/method will save you hours...', 'Easy hack to [X]...', 'Simple [X] that will make you [X].', '5 Ways [product] Helps with [pain point].', '3 reasons to buy [product].', '3 reasons to try [service].', 'Get [value prop] in 3 steps.', 'Here are 3 ways [worse alternative] affects your life.', '5 things you didn’t know about [topic].', 'The ultimate [X] checklist to [action].', 'Reasons why [X].', 'Here are the 3 best ways to [X].', 'Here are [X] mistakes you might be making...', 'If you want [X], do these 5 things...', 'The internet’s #1 [product type].', 'The best way to [accomplish the goal of the product].', 'What makes [the product type] the best?', 'My skin has never looked better with [product].', 'The best way to find X in 2022.', '[Product] changed how I do [task], and I’m never going back.', 'Why is [product] so good though?', 'After hours of researching, I found the best [product type] for [task].', 'I found the best [product category] for [value prop].', 'This is going to blow your mind.', 'How I got [X] in 24 hours.', 'Must-have [products] for [X].', \\\"The best [target audience] know something that you don't.\\\", 'Hey, [customer type], you’ve got to try this.', 'People looking for [product category], stop scrolling.', 'Wait, have you tried X?', 'Take control of your X with [product].', 'Imagine if X was also X.', 'Watch this if you X.', 'PSA: [statement about product category].', 'Did you know? [fact about product category].', 'I just found out [fact about product category].', 'Are you one of [fact about product category] people who do X?', 'New customers get [discount].', 'Take [discount] off when you try [product].', 'I didn’t know X could be related to X.', 'Why is it important to [do product-related task]?', \\\"99\\\\\\\\% of your [target audience] don't. To be the 1% you need to [X].\\\", 'This [product] is the secret to [X].', 'Is there anything worse than [X]?', 'I will never [adjective] from learning this.', 'X people start scrolling. I have the perfect [X] for you.', \\\"Here's a challenge for you...\\\", \\\"There's nothing more painful than [X].\\\", 'What would you do if...', 'Watch till the end…', \\\"Why you're failing at [activity].\\\", 'The worst mistake you can make in [subject].', 'Avoid these common pitfalls in [topic].', 'The dark side of [popular trend].', \\\"Don't be fooled by [misconception].\\\", 'Why [common practice] is ruining your [outcome].', 'What no one tells you about [issue].', 'The hidden dangers of [activity].', 'Stop doing this if you want to succeed in [field].', 'The ugly truth about [common belief].', 'Why [habit] is wasting your time.', 'Exposing the myths about [topic].', \\\"The biggest regret you'll have in [situation].\\\", 'How [action] is destroying your [goal].', 'The shocking reality of [popular topic].', 'Why [trend] is a bad idea.', \\\"The real reason you're not seeing results in [field].\\\", 'The downside of [seemingly positive aspect].', 'What you should never do in [activity].', 'Why [common advice] is actually harmful.']\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Listing the Documents\\n\",\n    \"for doc in client.agents.docs.list(agent_id=AGENT_UUID):\\n\",\n    \"    print(doc.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 64,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"#  Defining a Task\\n\",\n    \"import yaml\\n\",\n    \"\\n\",\n    \"RAPID_API_KEY = \\\"YOUR_RAPID_API_KEY\\\"\\n\",\n    \"RAPID_API_HOST = \\\"YOUR_RAPID_API_HOST\\\"\\n\",\n    \"\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\\n\",\n    \"name: Julep Reel Hook Generator\\n\",\n    \"description: This gets the trending reels from Instagram and generates hooks for them.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### INPUT SCHEMA ###################\\n\",\n    \"########################################################\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    topic:\\n\",\n    \"      type: string\\n\",\n    \"      description: The topic to generate hooks for.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ##########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Defining the tools that the task will use in this workflow\\n\",\n    \"tools:\\n\",\n    \"- name: api_tool_call\\n\",\n    \"  type: api_call\\n\",\n    \"  api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: \\\"https://instagram-scraper-api2.p.rapidapi.com/v1/hashtag\\\"\\n\",\n    \"    headers: \\n\",\n    \"      x-rapidapi-key: \\\"{RAPID_API_KEY}\\\"\\n\",\n    \"      x-rapidapi-host: \\\"{RAPID_API_HOST}\\\"\\n\",\n    \"    follow_redirects: true\\n\",\n    \"\\n\",\n    \"- name: get_hooks_doc\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: agent\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: list\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### MAIN WORKFLOW ##################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"\\n\",\n    \"# Step 0: Get the trending reels from Instagram\\n\",\n    \"- tool: api_tool_call\\n\",\n    \"  arguments:\\n\",\n    \"    params:\\n\",\n    \"      hashtag: $ steps[0].input.topic\\n\",\n    \"\\n\",\n    \"# Step 1: Extract the caption, virality score, engagement score and one-liner description for each reel\\n\",\n    \"- evaluate:\\n\",\n    \"    summary: >-\\n\",\n    \"      $ list({{\\n\",\n    \"                'caption': ((response.get('caption') or {{}}).get('text') or 'No Caption Available'),\\n\",\n    \"                'code': (response.get('code') or 'No Code Available'),\\n\",\n    \"                'play_count': (response.get('play_count') or 0),\\n\",\n    \"                'like_count': (response.get('like_count') or 0),\\n\",\n    \"                'media_id': ((response.get('caption') or {{}}).get('id') or 0),\\n\",\n    \"                'hashtags': ((response.get('caption') or {{}}).get('hashtags') or 'No Hashtag Available'),\\n\",\n    \"                'video_duration': (response.get('video_duration') or 0),\\n\",\n    \"                'comment_count': (response.get('comment_count') or 0),\\n\",\n    \"                'reshare_count': (response.get('reshare_count') or 0),\\n\",\n    \"                'has_audio': (response.get('has_audio') or False),\\n\",\n    \"                'audio_type': (((response.get('clips_metadata') or {{}}).get('audio_type')) or 'No Audio Type Available'),\\n\",\n    \"                'username': (((response.get('user') or {{}}).get('username')) or 'No Username Available'),\\n\",\n    \"                'full_name': (((response.get('user') or {{}}).get('full_name')) or 'No Full Name Available'),\\n\",\n    \"                'profile_pic_url': (((response.get('user') or {{}}).get('profile_pic_url')) or 'No Profile Pic URL Available'),\\n\",\n    \"                'virality_score': (((response.get('reshare_count') or 0) / (response.get('play_count') or 1)) if (response.get('play_count') or 0) > 0 else 0),\\n\",\n    \"                'engagement_score': (((response.get('like_count') or 0) / (response.get('play_count') or 1)) if (response.get('play_count') or 0) > 0 else 0),\\n\",\n    \"                'video_duration': (response.get('video_duration') or 0)\\n\",\n    \"                }} for response in _['json']['data']['items']) \\n\",\n    \"\\n\",\n    \"# Step 2: Generate a description for each reel\\n\",\n    \"- over: $ _['summary']\\n\",\n    \"  parallelism: 4\\n\",\n    \"  map:\\n\",\n    \"    prompt:\\n\",\n    \"      - role: system\\n\",\n    \"        content: >-\\n\",\n    \"          $ f'''You are a skilled agent tasked with creating a single description for each trending real estate reel for the given topic: {{steps[0].input.topic}}.\\n\",\n    \"          Use information gathered from the following data sources to gather the most relevant information:\\n\",\n    \"\\n\",\n    \"          Search Results: {{_['caption']}}\\n\",\n    \"          Virality Score: {{_['virality_score']}}\\n\",\n    \"          Engagement Score: {{_['engagement_score']}}\\n\",\n    \"\\n\",\n    \"          Provide a json repsonse containing the caption, virality score, enagement score and one-liner description for the reel.'''\\n\",\n    \"    unwrap: true   \\n\",\n    \"\\n\",\n    \"# Step 3: Get the description and summary\\n\",\n    \"- evaluate:\\n\",\n    \"    summary: $ steps[1].output['summary']\\n\",\n    \"    description: $ list(load_json(res.replace(\\\"```json\\\", \\\"\\\").replace(\\\"```\\\", \\\"\\\")) for res in _)\\n\",\n    \"\\n\",\n    \"# Step 4: Get the hooks document\\n\",\n    \"- tool: get_hooks_doc\\n\",\n    \"  arguments:\\n\",\n    \"    agent_id: {AGENT_UUID}\\n\",\n    \"\\n\",\n    \"# Step 5: Extract the hooks document\\n\",\n    \"- evaluate:\\n\",\n    \"    content: $ _[0]['content']\\n\",\n    \"  label: hooks_doc\\n\",\n    \"\\n\",\n    \"# Step 6: Generate hooks for each reel\\n\",\n    \"- over: $ steps[3].output['description']\\n\",\n    \"  parallelism: 4\\n\",\n    \"  map:\\n\",\n    \"    prompt:\\n\",\n    \"      - role: system\\n\",\n    \"        content: >-\\n\",\n    \"          $ f'''You are a skilled content creator tasked with generating 3 engaging video hooks for each reel having its description and caption. Use the following document containing hook templates to create effective hooks:\\n\",\n    \"          \\n\",\n    \"          {{steps[\\\"hooks_doc\\\"].output.content}}\\n\",\n    \"          \\n\",\n    \"          Here are the caption and description to create hooks for:\\n\",\n    \"\\n\",\n    \"          Caption: {{_['caption']}}\\n\",\n    \"          Description: {{_['description']}}\\n\",\n    \"          Virality Score: {{_['virality_score']}}\\n\",\n    \"          Engagement Score: {{_['engagement_score']}}\\n\",\n    \"\\n\",\n    \"          Your task is to generate 3 hooks (for the reel) by adapting the most suitable templates from the document. Each hook should be no more than 1 sentence long and directly relate to its corresponding idea.\\n\",\n    \"          \\n\",\n    \"          Basically, all the ideas are taken from a search about this topic, which is {{steps[0].input.topic}}. You should focus on this while writing the hooks.\\n\",\n    \"\\n\",\n    \"          Ensure that each hook is creative, engaging, and relevant to its idea while following the structure of the chosen template.\\n\",\n    \"\\n\",\n    \"          Provide a json repsonse containing the caption, virality score, enagement score, description and the list of 3 hooks for the reel.'''\\n\",\n    \"    unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 7: Get the hooks\\n\",\n    \"- evaluate:\\n\",\n    \"    summary: $ steps[3].output['summary']\\n\",\n    \"    hooks: $ list(load_json(res.replace(\\\"```json\\\", \\\"\\\").replace(\\\"```\\\", \\\"\\\")) for res in _)\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<span style=\\\"color:olive;\\\">Notes:</span>\\n\",\n    \"- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\\n\",\n    \"- The `$` sign is used to differentiate between a Python expression and a string.\\n\",\n    \"- The `_` refers to the output of the previous step.\\n\",\n    \"- The `steps[index].input` refers to the input of the step at `index`.\\n\",\n    \"- The `steps[index].output` refers to the output of the step at `index`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Creating/Updating a task\\n\",\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 65,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"CPU times: user 1e+03 ns, sys: 0 ns, total: 1e+03 ns\\n\",\n      \"Wall time: 2.38 μs\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"%time\\n\",\n    \"# Creating an execution of the task\\n\",\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=task.id,\\n\",\n    \"    input={\\n\",\n    \"        \\\"topic\\\": \\\"halloween_snacks\\\"\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:yellow;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 68,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Transition type:  init\\n\",\n      \"Transition output:  {'topic': 'halloween_snacks'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'json': {'data': {'count': 5, 'items': [{'id': '3490900471793734792_68049134599', 'pk': 3490900471793734792, 'code': 'DByK3vHglSI', 'fbid': '17922186413889128', 'user': {'id': '68049134599', 'fbid_v2': 17841468117986141, 'username': 'khatisaw_asmr', 'full_name': 'ASMR | خاٰطؕݺ࣮\\\\u200cثٙۛاٰ | ای اس ام آر', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3424550057394195718_68049134599', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'owner': {'id': '68049134599', 'fbid_v2': 17841468117986141, 'username': 'khatisaw_asmr', 'full_name': 'ASMR | خاٰطؕݺ࣮\\\\u200cثٙۛاٰ | ای اس ام آر', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3424550057394195718_68049134599', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': 3490900471793734792, 'pk': '17922186698889128', 'text': 'خوراکی هالوینی به مناسبت هالوین👻🎃\\\\n\\\\nاگه توهم عاشق ای\\\\u200cاس\\\\u200cام\\\\u200cآری پیجمو از دست نده😉👇🏻\\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n\\\\n#asmr #asmrartist #asmrfood #mukbang #halloween #halloween_snacks #happy #ایاسامار #ای_اس_ام_آر #ایاسمار #هالووین', 'type': 1, 'user': {'id': '68049134599', 'fbid_v2': 17841468117986141, 'username': 'khatisaw_asmr', 'full_name': 'ASMR | خاٰطؕݺ࣮\\\\u200cثٙۛاٰ | ای اس ام آر', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3424550057394195718_68049134599', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad'}, 'user_id': 68049134599, 'hashtags': ['#asmr', '#asmrartist', '#asmrfood', '#mukbang', '#halloween', '#halloween_snacks', '#happy', '#ایاسامار', '#ای_اس_ام_آر', '#ایاسمار', '#هالووین'], 'mentions': ['@khatisaw_asmr'], 'created_at': 1730368002, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1730368002, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'taken_at': 1730368001, 'can_reply': False, 'feed_type': 'clips', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-ber1-1.cdninstagram.com/o1/v/t16/f2/m86/AQNgqTX-85WhiT5HWkV3-efjkZBdM-eZeQjKjMC2i4h5OAjFmVwuLvtKdqAZRu_LV9jWMCfuowUFAKL5O7MeTdyU1fmS7czmdteCu7Q.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEyNTA2OTAwMTk0NDEwNTEsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=AdiytHUzDdOv2LAPKxHWwjGFGlv21uxw8dzzXoBHtHcYFvUWeyLR31BCmOjLyjxt4ok&vs=6a4e0a97efa05e0f&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85MzQ4MjUxNEM2RjlFNTlGNDE2QTA5NjE2MzIwMkFCNl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJb3R1QnNvZ0RuLTE1a2RBUGpHZVZxRV9IWnVicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrbmqeXe37gEFQIoAkMzLBdAQndsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYA3gmTJ-8o7tL9yO8L7HLErwXfFABdLkicpsE6RlpxtHg&oe=67A7CC05&_nc_sid=1d576d', 'like_count': 15, 'media_name': 'reel', 'media_type': 2, 'play_count': 274, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'one_by_two_left', 'media_notes': {'items': []}, 'video_codec': 'avc1.64001f', 'fb_user_tags': {'in': []}, 'product_type': 'clips', 'tagged_users': {'in': [{'user': {'id': '26478650928', 'username': 'mcbang.asmr', 'full_name': 'McBang Asmr', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2221201883610313048_26478650928', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/81881391_465263030829306_4218106627150053376_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=ne2lCyOThy8Q7kNvgED_b4Q&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCOA3D7TCgasIBLCE0xXPPKwa4hf3Y3geVHtqxnz-sGiQ&oe=67ABCEF4&_nc_sid=2011ad'}, 'position': [0.0, 0.0], 'show_category_of_user': False}]}, 'comment_count': 0, 'ig_play_count': 274, 'igbio_product': None, 'reshare_count': 0, 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/465163430_1346152509708875_7287770939532393895_n.jpg?stp=dst-jpg_e15_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi40ODB4ODU0LnNkci5mMjkzNTAuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=bQk7Sp4xTPIQ7kNvgGgQEHl&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzQ5MDkwMDQ3MTc5MzczNDc5MjkwODk1MDMyNDAyNjEzMw%3D%3D.3-ccb7-5&oh=00_AYAG9htVmBgw_QuVxQcPZiT8cc4tjM2H56nduiCcKhi4uw&oe=67ABD173&_nc_sid=2011ad', 'clips_metadata': {'nux_info': None, 'show_tips': None, 'audio_type': 'original_sounds', 'music_info': None, 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'shopping_info': None, 'template_info': None, 'challenge_info': None, 'featured_label': None, 'is_shared_to_fb': False, 'originality_info': None, 'achievements_info': {'show_achievements': False, 'num_earned_achievements': None}, 'show_achievements': False, 'audio_canonical_id': '18462935767030405', 'audio_ranking_info': {'best_audio_cluster_id': '1979266769247994'}, 'reusable_text_info': None, 'cutout_sticker_info': [], 'external_media_info': None, 'original_sound_info': {'audio_id': 1159485065763677, 'ig_artist': {'id': '68049134599', 'username': 'khatisaw_asmr', 'full_name': 'ASMR | خاٰطؕݺ࣮\\\\u200cثٙۛاٰ | ای اس ام آر', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3424550057394195718_68049134599', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad'}, 'trend_rank': None, 'audio_parts': [], 'is_explicit': False, 'time_created': 1730368004, 'hide_remixing': False, 'duration_in_ms': 36942, 'consumption_info': {'is_bookmarked': False, 'display_media_id': None, 'is_trending_in_clips': False, 'should_mute_audio_reason': '', 'should_mute_audio_reason_type': None}, 'is_xpost_from_fb': False, 'is_reuse_disabled': False, 'original_media_id': 3490900471793734792, 'should_mute_audio': False, 'audio_filter_infos': [], 'previous_trend_rank': None, 'original_audio_title': 'Original audio', 'audio_parts_by_filter': [], 'xpost_fb_creator_info': None, 'original_audio_subtype': 'default', 'overlap_duration_in_ms': None, 'allow_creator_to_rename': True, 'oa_owner_is_music_artist': False, 'progressive_download_url': 'https://scontent-ber1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQMrc3KDZGsYjFjVisYlHp9Rf7_1emB2jy_0-UKelgMx6pQ1n--CBux7H25-n_H1Lw7-hgwQnugZtAkO9ecznQ3R.mp4?strext=1&_nc_cat=109&_nc_sid=8bf8fe&_nc_ht=scontent-ber1-1.xx.fbcdn.net&_nc_ohc=cNa17rtcwyQQ7kNvgGmG06y&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxMjUwNjkwMDE5NDQxMDUxLCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYCTgT42WOtRJ8geekXj-ge-hMj1XYj1eagw_3Xe7X1WAg&oe=67ABD7E8', 'can_remix_be_shared_to_fb': False, 'formatted_clips_media_count': None, 'audio_asset_start_time_in_ms': None, 'is_eligible_for_audio_effects': True, 'is_eligible_for_vinyl_sticker': True, 'attributed_custom_audio_asset_id': None, 'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}, 'is_audio_automatically_attributed': False, 'can_remix_be_shared_to_fb_expansion': False, 'is_original_audio_download_eligible': True}, 'additional_audio_info': {'audio_reattribution_info': {'should_allow_restore': False}, 'additional_audio_username': None}, 'breaking_content_info': None, 'breaking_creator_info': None, 'reels_on_the_rise_info': None, 'is_fan_club_promo_video': False, 'merchandising_pill_info': None, 'branded_content_tag_info': {'can_add_tag': False}, 'asset_recommendation_info': None, 'content_appreciation_info': {'enabled': False, 'entry_point_container': None}, 'contextual_highlight_info': None, 'clips_creation_entry_point': 'clips', 'viewer_interaction_settings': None, 'is_public_chat_welcome_video': False, 'professional_clips_upsell_type': 0, 'reusable_text_attribute_string': None, 'disable_use_in_clips_client_cache': False}, 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/465163430_1346152509708875_7287770939532393895_n.jpg?stp=dst-jpg_e15_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi40ODB4ODU0LnNkci5mMjkzNTAuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=bQk7Sp4xTPIQ7kNvgGgQEHl&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzQ5MDkwMDQ3MTc5MzczNDc5MjkwODk1MDMyNDAyNjEzMw%3D%3D.3-ccb7-5&oh=00_AYAG9htVmBgw_QuVxQcPZiT8cc4tjM2H56nduiCcKhi4uw&oe=67ABD173&_nc_sid=2011ad', 'width': 480, 'height': 854}], 'additional_items': {'first_frame': {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-15/465153824_1273044356969721_4803164493660430045_n.jpg?stp=dst-jpg_e15_p480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6e3_lgPON8QQ7kNvgHRYbBD&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCPhknLpwYb5jx32gh3q94obuloT1x4cd_QfZYKkc7yNg&oe=67ABE110&_nc_sid=2011ad', 'width': 480, 'height': 852}, 'smart_frame': None, 'igtv_first_frame': {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-15/465153824_1273044356969721_4803164493660430045_n.jpg?stp=dst-jpg_e15_p480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6e3_lgPON8QQ7kNvgHRYbBD&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCPhknLpwYb5jx32gh3q94obuloT1x4cd_QfZYKkc7yNg&oe=67ABE110&_nc_sid=2011ad', 'width': 480, 'height': 852}}, 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-ber1-1.cdninstagram.com/v/t51.2885-15/464892946_537755282216610_8587870216843700171_n.jpg?_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=XSBKeXe_NWgQ7kNvgFRvAdj&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYC9xQj8tilSa4sWQ33Kz5Dplal_HimvC-Z0yMH3ZAVQ9w&oe=67ABE86F&_nc_sid=2011ad'], 'file_size_kb': 384, 'sprite_width': 1500, 'video_length': 36.942, 'sprite_height': 1246, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 178, 'thumbnail_duration': 0.35182857142857143, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'is_artist_pick': False, 'music_metadata': None, 'original_width': 1080, 'social_context': [], 'video_duration': 36.942, 'video_versions': [{'id': '1548848032501223v', 'url': 'https://scontent-ber1-1.cdninstagram.com/o1/v/t16/f2/m86/AQNgqTX-85WhiT5HWkV3-efjkZBdM-eZeQjKjMC2i4h5OAjFmVwuLvtKdqAZRu_LV9jWMCfuowUFAKL5O7MeTdyU1fmS7czmdteCu7Q.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEyNTA2OTAwMTk0NDEwNTEsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=AdiytHUzDdOv2LAPKxHWwjGFGlv21uxw8dzzXoBHtHcYFvUWeyLR31BCmOjLyjxt4ok&vs=6a4e0a97efa05e0f&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85MzQ4MjUxNEM2RjlFNTlGNDE2QTA5NjE2MzIwMkFCNl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJb3R1QnNvZ0RuLTE1a2RBUGpHZVZxRV9IWnVicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrbmqeXe37gEFQIoAkMzLBdAQndsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYA3gmTJ-8o7tL9yO8L7HLErwXfFABdLkicpsE6RlpxtHg&oe=67A7CC05&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 1280, 'bandwidth': 1047090}, {'id': '1548848032501223v', 'url': 'https://scontent-ber1-1.cdninstagram.com/o1/v/t16/f2/m86/AQNgqTX-85WhiT5HWkV3-efjkZBdM-eZeQjKjMC2i4h5OAjFmVwuLvtKdqAZRu_LV9jWMCfuowUFAKL5O7MeTdyU1fmS7czmdteCu7Q.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEyNTA2OTAwMTk0NDEwNTEsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=AdiytHUzDdOv2LAPKxHWwjGFGlv21uxw8dzzXoBHtHcYFvUWeyLR31BCmOjLyjxt4ok&vs=6a4e0a97efa05e0f&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85MzQ4MjUxNEM2RjlFNTlGNDE2QTA5NjE2MzIwMkFCNl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJb3R1QnNvZ0RuLTE1a2RBUGpHZVZxRV9IWnVicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrbmqeXe37gEFQIoAkMzLBdAQndsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYA3gmTJ-8o7tL9yO8L7HLErwXfFABdLkicpsE6RlpxtHg&oe=67A7CC05&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 1280, 'bandwidth': 1047090}, {'id': '1548848032501223v', 'url': 'https://scontent-ber1-1.cdninstagram.com/o1/v/t16/f2/m86/AQNgqTX-85WhiT5HWkV3-efjkZBdM-eZeQjKjMC2i4h5OAjFmVwuLvtKdqAZRu_LV9jWMCfuowUFAKL5O7MeTdyU1fmS7czmdteCu7Q.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEyNTA2OTAwMTk0NDEwNTEsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=AdiytHUzDdOv2LAPKxHWwjGFGlv21uxw8dzzXoBHtHcYFvUWeyLR31BCmOjLyjxt4ok&vs=6a4e0a97efa05e0f&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85MzQ4MjUxNEM2RjlFNTlGNDE2QTA5NjE2MzIwMkFCNl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJb3R1QnNvZ0RuLTE1a2RBUGpHZVZxRV9IWnVicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrbmqeXe37gEFQIoAkMzLBdAQndsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYA3gmTJ-8o7tL9yO8L7HLErwXfFABdLkicpsE6RlpxtHg&oe=67A7CC05&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 1280, 'bandwidth': 1047090}], 'avatar_stickers': [], 'original_height': 1920, 'device_timestamp': 481462064529310, 'has_shared_to_fb': 0, 'inventory_source': 'recommended_clips_chaining_model', 'is_dash_eligible': 1, 'is_reuse_allowed': False, 'is_unified_video': False, 'preview_comments': [], 'caption_is_edited': False, 'has_more_comments': False, 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'media_cropping_info': {'square_crop': {'crop_top': 0.0, 'crop_left': 0.0, 'crop_right': 0.0, 'crop_bottom': 0.0}}, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'share_count_disabled': False, 'shop_routing_user_id': None, 'view_state_item_type': 128, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'creator_viewer_insights': [], 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'are_remixes_crosspostable': True, 'clips_tab_pinned_user_ids': [], 'comment_threading_enabled': True, 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 0, 'open_carousel_show_follow_button': False, 'is_third_party_downloads_eligible': True, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': True, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '2430607689442503878_43860578779', 'pk': 2430607689442503878, 'code': 'CG7QNDNjazG', 'fbid': '17868186233082932', 'user': {'id': '43860578779', 'fbid_v2': 17841443763392572, 'username': '4crazy_hands', 'full_name': '', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 1, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '2426465052288607558_43860578779', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/122271405_3676949662369294_5352096118873851662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=dO8fE8ZIN3MQ7kNvgEw_L10&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD688O9MqNvC3AWhO3YWANr_IJeDinBX8qovw7wEaiijQ&oe=67ABDE00&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 0, 'show_account_transparency_details': True}, 'owner': {'id': '43860578779', 'fbid_v2': 17841443763392572, 'username': '4crazy_hands', 'full_name': '', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 1, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '2426465052288607558_43860578779', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/122271405_3676949662369294_5352096118873851662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=dO8fE8ZIN3MQ7kNvgEw_L10&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD688O9MqNvC3AWhO3YWANr_IJeDinBX8qovw7wEaiijQ&oe=67ABDE00&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 0, 'show_account_transparency_details': True}, 'likers': [{'id': '1696622401', 'pk': 1696622401, 'username': 'kika0702', 'full_name': 'Karolina Czajkowska', 'is_private': True, 'is_verified': False, 'profile_pic_id': '1582068033168352877_1696622401', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/20837400_167467057147416_8905032488259158016_a.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=OHnF2E1S1tUQ7kNvgFgmy8W&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCqfj-yhqDYLInwvBJXQmb9gBwpFfzSJhmAA7GJ8OVzQw&oe=67ABEC08&_nc_sid=2011ad'}, {'id': '1501224027', 'pk': 1501224027, 'username': 'od.nova.fashion', 'full_name': 'od.nova.fashion', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3345590763071362359_1501224027', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/437147810_446348127872059_8592682395589487452_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6aKdh8q_RYwQ7kNvgG3pWYV&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBuI0CQhquvP9CvsR1p4UFQnymvQlyTfJwFSV2dT416ZA&oe=67ABD3C8&_nc_sid=2011ad'}, {'id': '8109187268', 'pk': 8109187268, 'username': 'zkraszewska', 'full_name': 'Żaneta Kraszewska', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3006044825446502435_8109187268', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/323066773_530010829077490_8809611194090286362_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=hBhM8w553lgQ7kNvgFLDBm5&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBnWAEQR3MjorfCubsB32S9yLzD30PjLeR3AatVudSNyA&oe=67ABC3F1&_nc_sid=2011ad'}, {'id': '34937255053', 'pk': 34937255053, 'username': 'agnieszka.kru', 'full_name': 'Agnieszka Kru', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2307712412966799263_34937255053', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/97263237_852152705288347_8338614872732336128_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=rH3_fiUqjXEQ7kNvgEgWArj&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDVrKfvarMEVLXWKdCbwwks0veCeJZx6ojdUOk1VT_8bw&oe=67ABCB9E&_nc_sid=2011ad'}, {'id': '2094359694', 'pk': 2094359694, 'username': 'caroline_karo22', 'full_name': 'Karo♦️', 'is_private': True, 'is_verified': False, 'profile_pic_id': '3281525572902363700_2094359694', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/419513583_1039386577334256_7017239868157824412_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=VxihswWT-eMQ7kNvgGYRh3S&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYA2fH9rYfhBhQjEBVqWkGJjbWyK4uAf0lO7dQKtbPhDZA&oe=67ABEC1B&_nc_sid=2011ad'}], 'caption': {'id': 2430607689442503878, 'pk': '17868186239082932', 'text': 'Ready! Set! Film!\\\\nKolejny filmik już w przygotowaniu 👻\\\\n\\\\nNa planie nawet straszna Chupa czacha 💕 @chupachupspl\\\\n\\\\n#halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin', 'type': 1, 'user': {'id': '43860578779', 'fbid_v2': 17841443763392572, 'username': '4crazy_hands', 'full_name': '', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '2426465052288607558_43860578779', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/122271405_3676949662369294_5352096118873851662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=dO8fE8ZIN3MQ7kNvgEw_L10&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD688O9MqNvC3AWhO3YWANr_IJeDinBX8qovw7wEaiijQ&oe=67ABDE00&_nc_sid=2011ad'}, 'user_id': 43860578779, 'hashtags': ['#halloween', '#ytchannel', '#diy', '#chupachups', '#halloween_snacks', '#halloween_party', '#pumpkin'], 'mentions': ['@chupachupspl'], 'created_at': 1603971038, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1603971038, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1603971037, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 5, 'media_name': 'post', 'media_type': 1, 'top_likers': [], 'can_reshare': True, 'filter_type': 112, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': False, 'is_reuse_allowed': False, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'product_type': 'feed', 'comment_count': 0, 'igbio_product': None, 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122885201_279406056658052_253258248180892580_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEwODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=xUFDN-pUZnEQ7kNvgH5-GXm&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMDYwNzY4OTQ0MjUwMzg3OA%3D%3D.3-ccb7-5&oh=00_AYCvoAapMHHY3LrQFJ1W3DL62-AklQ-2J4qdd6T79i4uRw&oe=67ABC1EC&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122885201_279406056658052_253258248180892580_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEwODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=xUFDN-pUZnEQ7kNvgH5-GXm&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMDYwNzY4OTQ0MjUwMzg3OA%3D%3D.3-ccb7-5&oh=00_AYCvoAapMHHY3LrQFJ1W3DL62-AklQ-2J4qdd6T79i4uRw&oe=67ABC1EC&_nc_sid=2011ad', 'width': 1080, 'height': 1080}, {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122885201_279406056658052_253258248180892580_n.jpg?stp=dst-jpg_e35_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEwODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=xUFDN-pUZnEQ7kNvgH5-GXm&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMDYwNzY4OTQ0MjUwMzg3OA%3D%3D.3-ccb7-5&oh=00_AYBID8beF9A9UxMOvvpJaP8csOAkKBh3qzUgSU8bFpdgZw&oe=67ABC1EC&_nc_sid=2011ad', 'width': 480, 'height': 480}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1080, 'original_height': 1080, 'device_timestamp': 129962195146203, 'has_shared_to_fb': 0, 'is_unified_video': False, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'has_more_comments': False, 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'comment_threading_enabled': True, 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 2, 'open_carousel_show_follow_button': False, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '1884261582018203623_1630876867', 'pk': 1884261582018203623, 'code': 'BomPez0HE_n', 'fbid': '17986470538043870', 'user': {'id': '1630876867', 'fbid_v2': 17841400866035482, 'username': 'elpida_touve', 'full_name': 'Elpida Touve', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3556466093800655009_1630876867', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/475820641_405922235900340_3354549167503917651_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=BJ5jjgI1S1wQ7kNvgEa8cis&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAQ2PldBSkgIil_veixaVS6a6ZRgs1k_fmg9-2Jer3lYQ&oe=67ABC61E&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 2, 'show_account_transparency_details': True}, 'owner': {'id': '1630876867', 'fbid_v2': 17841400866035482, 'username': 'elpida_touve', 'full_name': 'Elpida Touve', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3556466093800655009_1630876867', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/475820641_405922235900340_3354549167503917651_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=BJ5jjgI1S1wQ7kNvgEa8cis&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAQ2PldBSkgIil_veixaVS6a6ZRgs1k_fmg9-2Jer3lYQ&oe=67ABC61E&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 2, 'show_account_transparency_details': True}, 'caption': {'id': 1884261582018203623, 'pk': '17986470544043870', 'text': 'Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts  #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger', 'type': 1, 'user': {'id': '1630876867', 'fbid_v2': 17841400866035482, 'username': 'elpida_touve', 'full_name': 'Elpida Touve', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3556466093800655009_1630876867', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/475820641_405922235900340_3354549167503917651_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=BJ5jjgI1S1wQ7kNvgEa8cis&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAQ2PldBSkgIil_veixaVS6a6ZRgs1k_fmg9-2Jer3lYQ&oe=67ABC61E&_nc_sid=2011ad'}, 'user_id': 1630876867, 'hashtags': ['#halloween_kids', '#halloween_snacks', '#spider_donuts', '#cute_food', '#kids_snacks', '#donuts', '#για_ενα_νικολα_γινονται_ολα', '#greekmombloggerscommunity', '#greekbloggerscommunity', '#momblogger'], 'mentions': [], 'created_at': 1538841506, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1538841506, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1538841506, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 77, 'media_name': 'post', 'media_type': 1, 'top_likers': [], 'can_reshare': True, 'filter_type': 112, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': False, 'is_reuse_allowed': False, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'product_type': 'feed', 'comment_count': 6, 'igbio_product': None, 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-15/42406109_286763258595430_5882308072797072002_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDgxMC5zZHIuZjI4ODUuZGVmYXVsdF9pbWFnZSJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6wH3W2z4CDgQ7kNvgGnbLKz&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MTg4NDI2MTU4MjAxODIwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYCpfXsfmL7AViJjnbHLmS-3m9TRugRJsSG6RKF-C9557w&oe=67ABD0FB&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-15/42406109_286763258595430_5882308072797072002_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDgxMC5zZHIuZjI4ODUuZGVmYXVsdF9pbWFnZSJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6wH3W2z4CDgQ7kNvgGnbLKz&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MTg4NDI2MTU4MjAxODIwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYCpfXsfmL7AViJjnbHLmS-3m9TRugRJsSG6RKF-C9557w&oe=67ABD0FB&_nc_sid=2011ad', 'width': 1080, 'height': 810}, {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-15/42406109_286763258595430_5882308072797072002_n.jpg?stp=dst-jpg_e35_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDgxMC5zZHIuZjI4ODUuZGVmYXVsdF9pbWFnZSJ9&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6wH3W2z4CDgQ7kNvgGnbLKz&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MTg4NDI2MTU4MjAxODIwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYDQ_vZrewpwc1CGe_gVMWmpwjAkH58QbytjmZq_GO2I1g&oe=67ABD0FB&_nc_sid=2011ad', 'width': 480, 'height': 360}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1080, 'original_height': 810, 'device_timestamp': 1078996970871814, 'has_shared_to_fb': 0, 'is_unified_video': False, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'has_more_comments': True, 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'comment_threading_enabled': True, 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 2, 'open_carousel_show_follow_button': False, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '2431253037789232840_43849166596', 'pk': 2431253037789232840, 'code': 'CG9i8GshD7I', 'fbid': '17875683067935977', 'user': {'id': '43849166596', 'fbid_v2': 17841443877901145, 'username': 'life.by_a', 'full_name': '', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '2633372573725432083_43849166596', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/231734336_1025030578256388_2356445558213588438_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6WsYnjkiAyYQ7kNvgG_3UvF&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTL2ZatiNXGYsh4b00nQhUxAAmfVMUZ2geexXJvD5skw&oe=67ABE3E3&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'owner': {'id': '43849166596', 'fbid_v2': 17841443877901145, 'username': 'life.by_a', 'full_name': '', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '2633372573725432083_43849166596', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/231734336_1025030578256388_2356445558213588438_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6WsYnjkiAyYQ7kNvgG_3UvF&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTL2ZatiNXGYsh4b00nQhUxAAmfVMUZ2geexXJvD5skw&oe=67ABE3E3&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': 2431253037789232840, 'pk': '17875683070935977', 'text': 'There are just so cute!! 🎃🦇\\\\n\\\\n#halloween\\\\n#halloween_costume\\\\n#halloween_snacks', 'type': 1, 'user': {'id': '43849166596', 'fbid_v2': 17841443877901145, 'username': 'life.by_a', 'full_name': '', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '2633372573725432083_43849166596', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/231734336_1025030578256388_2356445558213588438_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6WsYnjkiAyYQ7kNvgG_3UvF&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTL2ZatiNXGYsh4b00nQhUxAAmfVMUZ2geexXJvD5skw&oe=67ABE3E3&_nc_sid=2011ad'}, 'user_id': 43849166596, 'hashtags': ['#halloween', '#halloween_costume', '#halloween_snacks'], 'mentions': [], 'created_at': 1604047969, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1604047969, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1604047969, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 46, 'media_name': 'album', 'media_type': 8, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'product_type': 'carousel_container', 'comment_count': 8, 'igbio_product': None, 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122819147_820387748538325_6402003752626116228_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=Q0ajq4UqDmQQ7kNvgHoi76_&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE3MzkwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYD3hAI0WdDyJfRk9-wUCxOtxd4EuEKJZDIdTQE1iPDVpw&oe=67ABCE96&_nc_sid=2011ad', 'carousel_media': [{'id': '2431253034173903623_43849166596', 'pk': 2431253034173903623, 'is_video': False, 'taken_at': 1604047968, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122819147_820387748538325_6402003752626116228_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=Q0ajq4UqDmQQ7kNvgHoi76_&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE3MzkwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYD3hAI0WdDyJfRk9-wUCxOtxd4EuEKJZDIdTQE1iPDVpw&oe=67ABCE96&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122819147_820387748538325_6402003752626116228_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=Q0ajq4UqDmQQ7kNvgHoi76_&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE3MzkwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYD3hAI0WdDyJfRk9-wUCxOtxd4EuEKJZDIdTQE1iPDVpw&oe=67ABCE96&_nc_sid=2011ad', 'width': 1280, 'height': 1280}, {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122819147_820387748538325_6402003752626116228_n.jpg?stp=dst-jpg_e35_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=Q0ajq4UqDmQQ7kNvgHoi76_&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE3MzkwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYBSVXbHUCoC0wuAHsptkL1ttV5ZklErPfzlVNi8A0rihA&oe=67ABCE96&_nc_sid=2011ad', 'width': 480, 'height': 480}]}, 'original_width': 1280, 'original_height': 1280, 'featured_products': [], 'carousel_parent_id': '2431253037789232840_43849166596', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '2431253034157126309_43849166596', 'pk': 2431253034157126309, 'is_video': False, 'taken_at': 1604047968, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/123028506_805463246898616_2642055155364201156_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=TZjWMXexaGwQ7kNvgGZ_XeL&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE1NzEyNjMwOQ%3D%3D.3-ccb7-5&oh=00_AYC9MvCMGb-ahiql8nu8VCOwwmuJT72LI9DNCTl_FwSluQ&oe=67ABEAE4&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/123028506_805463246898616_2642055155364201156_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=TZjWMXexaGwQ7kNvgGZ_XeL&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE1NzEyNjMwOQ%3D%3D.3-ccb7-5&oh=00_AYC9MvCMGb-ahiql8nu8VCOwwmuJT72LI9DNCTl_FwSluQ&oe=67ABEAE4&_nc_sid=2011ad', 'width': 1280, 'height': 1280}, {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/123028506_805463246898616_2642055155364201156_n.jpg?stp=dst-jpg_e35_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=TZjWMXexaGwQ7kNvgGZ_XeL&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE1NzEyNjMwOQ%3D%3D.3-ccb7-5&oh=00_AYAFPUuLCAKcyyjc6FwA7SKbxYvORi-2xn-a80vANfz9KA&oe=67ABEAE4&_nc_sid=2011ad', 'width': 480, 'height': 480}]}, 'original_width': 1280, 'original_height': 1280, 'featured_products': [], 'carousel_parent_id': '2431253037789232840_43849166596', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '2431253034752662160_43849166596', 'pk': 2431253034752662160, 'is_video': False, 'taken_at': 1604047968, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122825655_186368676449184_161950596199673542_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=RIqEmeqRsncQ7kNvgEDcghW&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDc1MjY2MjE2MA%3D%3D.3-ccb7-5&oh=00_AYBN02I9OImeHBbluvbiFzN16jSHc9UqmKN1yGkQmtlgFA&oe=67ABE3B9&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122825655_186368676449184_161950596199673542_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=RIqEmeqRsncQ7kNvgEDcghW&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDc1MjY2MjE2MA%3D%3D.3-ccb7-5&oh=00_AYBN02I9OImeHBbluvbiFzN16jSHc9UqmKN1yGkQmtlgFA&oe=67ABE3B9&_nc_sid=2011ad', 'width': 1280, 'height': 1280}, {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122825655_186368676449184_161950596199673542_n.jpg?stp=dst-jpg_e35_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=RIqEmeqRsncQ7kNvgEDcghW&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDc1MjY2MjE2MA%3D%3D.3-ccb7-5&oh=00_AYAmaY34caRoBF9NBDXgJzWcp6gjzMPRBWybFEN1fBN0ow&oe=67ABE3B9&_nc_sid=2011ad', 'width': 480, 'height': 480}]}, 'original_width': 1280, 'original_height': 1280, 'featured_products': [], 'carousel_parent_id': '2431253037789232840_43849166596', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '2431253034182177319_43849166596', 'pk': 2431253034182177319, 'is_video': False, 'taken_at': 1604047968, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122912849_1279442432435525_8441111983093743403_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=uqpiK2uJoJMQ7kNvgFuc6qV&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE4MjE3NzMxOQ%3D%3D.3-ccb7-5&oh=00_AYAhK1f1qZ_2g06R66OTIaOZm1CBZ8S1zoXtlCakTMBm7Q&oe=67ABCA9D&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122912849_1279442432435525_8441111983093743403_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=uqpiK2uJoJMQ7kNvgFuc6qV&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE4MjE3NzMxOQ%3D%3D.3-ccb7-5&oh=00_AYAhK1f1qZ_2g06R66OTIaOZm1CBZ8S1zoXtlCakTMBm7Q&oe=67ABCA9D&_nc_sid=2011ad', 'width': 1280, 'height': 1280}, {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122912849_1279442432435525_8441111983093743403_n.jpg?stp=dst-jpg_e35_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=uqpiK2uJoJMQ7kNvgFuc6qV&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE4MjE3NzMxOQ%3D%3D.3-ccb7-5&oh=00_AYCVYrch8XtCbk-h9BwkMGuM06AZ0PjMtN4Q6SDhcTGMFQ&oe=67ABCA9D&_nc_sid=2011ad', 'width': 480, 'height': 480}]}, 'original_width': 1280, 'original_height': 1280, 'featured_products': [], 'carousel_parent_id': '2431253037789232840_43849166596', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122819147_820387748538325_6402003752626116228_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=Q0ajq4UqDmQQ7kNvgHoi76_&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE3MzkwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYD3hAI0WdDyJfRk9-wUCxOtxd4EuEKJZDIdTQE1iPDVpw&oe=67ABCE96&_nc_sid=2011ad', 'width': 1280, 'height': 1280}, {'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122819147_820387748538325_6402003752626116228_n.jpg?stp=dst-jpg_e35_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjgweDEyODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=Q0ajq4UqDmQQ7kNvgHoi76_&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMTI1MzAzNDE3MzkwMzYyMw%3D%3D.3-ccb7-5&oh=00_AYBSVXbHUCoC0wuAHsptkL1ttV5ZklErPfzlVNi8A0rihA&oe=67ABCE96&_nc_sid=2011ad', 'width': 480, 'height': 480}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 165099129949286, 'has_shared_to_fb': 0, 'is_unified_video': False, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'has_more_comments': True, 'carousel_media_ids': [2431253034173903623, 2431253034157126309, 2431253034752662160, 2431253034182177319], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 4, 'commerciality_status': 'not_commercial', 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'comment_threading_enabled': True, 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 2, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '2164733753633455172_6077611846', 'pk': 2164733753633455172, 'lat': 31.918, 'lng': -106.6, 'code': 'B4KreEynrxE', 'fbid': '17848419778718369', 'user': {'id': '6077611846', 'fbid_v2': 17841406115389701, 'username': 'riograndesupermarket', 'full_name': 'Rio Grande Supermarket', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '1611057477900701492_6077611846', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/21909505_2012064525693566_3455111339192614912_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=myA3c6JjKckQ7kNvgHiHwfB&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx7dSZqcDmnemLgDaWR4YhVFRz9blBP-lcZU2gbkTiBQ&oe=67ABD6D3&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'owner': {'id': '6077611846', 'fbid_v2': 17841406115389701, 'username': 'riograndesupermarket', 'full_name': 'Rio Grande Supermarket', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '1611057477900701492_6077611846', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/21909505_2012064525693566_3455111339192614912_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=myA3c6JjKckQ7kNvgHiHwfB&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx7dSZqcDmnemLgDaWR4YhVFRz9blBP-lcZU2gbkTiBQ&oe=67ABD6D3&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'likers': [{'id': '47005162385', 'pk': 47005162385, 'username': 'yeganam.2003', 'full_name': 'yeganam.2003', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3346232457153303630_47005162385', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/437523825_778818490848023_9220459350897976248_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=GIFF9R1hxKwQ7kNvgFO3wVE&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBG2-qxwmg1yzsfwo-94iv5LiR2wt4bMS7W9RZqmNecsQ&oe=67ABECED&_nc_sid=2011ad'}, {'id': '2285057098', 'pk': 2285057098, 'username': 'ballenger_maria', 'full_name': 'Maria Ballenger', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3516889082933784484_2285057098', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/469619063_2491376451052394_8326167744427256447_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=AX1mi9g1p1cQ7kNvgEQraNV&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBOjUr5Kz7KJ8UImNr21aftLGtGFSOx5WNi6zHjHtCfxA&oe=67ABC186&_nc_sid=2011ad'}, {'id': '2966830002', 'pk': 2966830002, 'username': 'mymiracles_76', 'full_name': 'Hazeleyez♡', 'is_private': True, 'is_verified': False, 'profile_pic_id': '2387236214875272287_2966830002', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/118566002_745024469651689_6888125582841655204_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=0Fb7H7nqyXQQ7kNvgHmBj7b&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYADksk_EuuN1Yvd3sYn-LeoFJxP5itKHR163q2h4yXW8g&oe=67ABDFEA&_nc_sid=2011ad'}, {'id': '20717110271', 'pk': 20717110271, 'username': 'avcomputerservicesep', 'full_name': 'A&V Computer Services', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2137235703778989200_20717110271', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/70704923_367387674215870_4615639729096884224_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=EMHTZhMrEJ8Q7kNvgGUlCAI&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAWn0Rw0Djz544I7LOwzoUvtfAPXoSs75ovcTzRKU6Q7g&oe=67ABE1CA&_nc_sid=2011ad'}, {'id': '10937696290', 'pk': 10937696290, 'username': 'urbanart915', 'full_name': 'urbanart915', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2593396908924288058_10937696290', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/198815734_193340032567046_1822644754353600274_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=_TxpkjHB1WsQ7kNvgH90KXK&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDROipayYiB4W7i3CtQzBYiu9rAUfyjue7wb_cIQTxZ6A&oe=67ABEE36&_nc_sid=2011ad'}, {'id': '12123142051', 'pk': 12123142051, 'username': 'hikofoods', 'full_name': 'On the happy side of life❤️', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2312201077491250514_12123142051', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/97875679_291337508548933_3750413185723662336_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=p5tz994N1VsQ7kNvgHFMg-P&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDWhEWagF5ebGOWGyQFM2lgRpdF8hrHqJTNB8h8bxUzqQ&oe=67ABCDD5&_nc_sid=2011ad'}, {'id': '8477102266', 'pk': 8477102266, 'username': 'castlevnc86', 'full_name': 'Ceci Castillo', 'is_private': True, 'is_verified': False, 'profile_pic_id': '1852013995478122393_8477102266', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/39327926_1897804646962985_1527646174138335232_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=gl90WJUyzI4Q7kNvgHbJir9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYC1ej8Jw7HpjnBWskidq99xHkjSgRx2jefl2el7uJHzhw&oe=67ABE7AF&_nc_sid=2011ad'}], 'caption': {'id': 2164733753633455172, 'pk': '17848419793718369', 'text': 'Halloween is just around the corner and you could create some fun party snacks with the kids or for your guests. \\\\nCome in to Rio Grande Supermarket and get your ingredients for all the spooktacular snacks. Buy extra candy for the trick-or-treaters.\\\\n\\\\nShurfine Cake Mix ASSORTED 16.5 OZ. 70¢\\\\nMazola Cooking Oil SELECT VARIETY 40 OZ. 2 FOR $5\\\\nLay’s or Wavy Lay’s 2 FOR $4\\\\nBuffalo Style Wing Sections $3.38 LB .\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n\\\\n#mondaymorning #happymonday #mondaymood #riograndesupermarket #canutillosupermarket #grocerystore #canutillobusiness #iamelpaso #elpasotx #itsallgoodep #recipeshoppinglist #halloweensnackideas #snackideasforkids #halloweentime #halloweenpartyideas #halloween_cupcakes #halloween_snacks #snacksforhalloween', 'type': 1, 'user': {'id': '6077611846', 'fbid_v2': 17841406115389701, 'username': 'riograndesupermarket', 'full_name': 'Rio Grande Supermarket', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '1611057477900701492_6077611846', 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/21909505_2012064525693566_3455111339192614912_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=myA3c6JjKckQ7kNvgHiHwfB&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx7dSZqcDmnemLgDaWR4YhVFRz9blBP-lcZU2gbkTiBQ&oe=67ABD6D3&_nc_sid=2011ad'}, 'user_id': 6077611846, 'hashtags': ['#mondaymorning', '#happymonday', '#mondaymood', '#riograndesupermarket', '#canutillosupermarket', '#grocerystore', '#canutillobusiness', '#iamelpaso', '#elpasotx', '#itsallgoodep', '#recipeshoppinglist', '#halloweensnackideas', '#snackideasforkids', '#halloweentime', '#halloweenpartyideas', '#halloween_cupcakes', '#halloween_snacks', '#snacksforhalloween'], 'mentions': [], 'created_at': 1572276400, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1572276400, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'location': {'pk': 237398833, 'lat': 31.918, 'lng': -106.6, 'city': '', 'name': 'Canutillo, Texas', 'address': '', 'short_name': 'Canutillo', 'external_source': 'facebook_places', 'facebook_places_id': 113168842030654}, 'taken_at': 1572276400, 'can_reply': False, 'feed_type': 'media', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-ber1-1.cdninstagram.com/o1/v/t16/f2/m84/AQMf95No3WAGIKsYeUhoxV7rsgMTqHOqTNjkfUwg_8S8yRhOUnMkNI2o6Di5VqNKoPkkpkcinkGnnot_sYLm2DZc1ZGHCLl-nGnkZLc.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY0MDYwMzI2ODYxOTE2OTQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5GRUVELkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=AdgG9HgWWgo-CZIu61rSDK_i770vn3dhzqXyF_CrOLvJBBhadKHNhnsMKrtVWRjuAMY&vs=1b3ebb1bb7762106&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC8xMTRGNUI1RjcwNjlENEExQkZGMUNDNEU0MEE2NTY4Ml92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dId1V4QmE2dV9iRUlEb0ZBS3c3MEEzdC1IUkticGt3QUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpzR8OqWkOEWFQIoAkMzLBdALgAAAAAAABgSZGFzaF9iYXNlbGluZV8xX3YxEQB16gcA&ccb=9-4&oh=00_AYCAp0eqzZHST3H0jWPEdTCUEA84O1Q2yKlAbA0TU06URw&oe=67A7DB33&_nc_sid=1d576d', 'like_count': 8, 'media_name': 'reel', 'media_type': 2, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': False, 'is_reuse_allowed': False, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'video_codec': 'avc1.4d401f', 'fb_user_tags': {'in': []}, 'product_type': 'feed', 'comment_count': 0, 'igbio_product': None, 'thumbnail_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-15/71886514_549564092253491_1295329350167932030_n.jpg?stp=dst-jpg_e15_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4NzIwLnNkci5mMjg4NS5kZWZhdWx0X2NvdmVyX2ZyYW1lIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=rC6eCtEnKb0Q7kNvgHmtiJp&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjE2NDczMzc1MzYzMzQ1NTE3Mg%3D%3D.3-ccb7-5&oh=00_AYAqZJrGZVt7qZP9bPr_OlzF_rURQ8BdtGLfKqdKq7MO8g&oe=67ABC6EB&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-15/71886514_549564092253491_1295329350167932030_n.jpg?stp=dst-jpg_e15_s480x480_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4NzIwLnNkci5mMjg4NS5kZWZhdWx0X2NvdmVyX2ZyYW1lIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=rC6eCtEnKb0Q7kNvgHmtiJp&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjE2NDczMzc1MzYzMzQ1NTE3Mg%3D%3D.3-ccb7-5&oh=00_AYAqZJrGZVt7qZP9bPr_OlzF_rURQ8BdtGLfKqdKq7MO8g&oe=67ABC6EB&_nc_sid=2011ad', 'width': 480, 'height': 480}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 720, 'video_duration': 15.0, 'video_versions': [{'id': '335485682377481v', 'url': 'https://scontent-ber1-1.cdninstagram.com/o1/v/t16/f2/m84/AQMf95No3WAGIKsYeUhoxV7rsgMTqHOqTNjkfUwg_8S8yRhOUnMkNI2o6Di5VqNKoPkkpkcinkGnnot_sYLm2DZc1ZGHCLl-nGnkZLc.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY0MDYwMzI2ODYxOTE2OTQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5GRUVELkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=AdgG9HgWWgo-CZIu61rSDK_i770vn3dhzqXyF_CrOLvJBBhadKHNhnsMKrtVWRjuAMY&vs=1b3ebb1bb7762106&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC8xMTRGNUI1RjcwNjlENEExQkZGMUNDNEU0MEE2NTY4Ml92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dId1V4QmE2dV9iRUlEb0ZBS3c3MEEzdC1IUkticGt3QUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpzR8OqWkOEWFQIoAkMzLBdALgAAAAAAABgSZGFzaF9iYXNlbGluZV8xX3YxEQB16gcA&ccb=9-4&oh=00_AYCAp0eqzZHST3H0jWPEdTCUEA84O1Q2yKlAbA0TU06URw&oe=67A7DB33&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 720, 'bandwidth': 484001}, {'id': '335485682377481v', 'url': 'https://scontent-ber1-1.cdninstagram.com/o1/v/t16/f2/m84/AQMf95No3WAGIKsYeUhoxV7rsgMTqHOqTNjkfUwg_8S8yRhOUnMkNI2o6Di5VqNKoPkkpkcinkGnnot_sYLm2DZc1ZGHCLl-nGnkZLc.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY0MDYwMzI2ODYxOTE2OTQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5GRUVELkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=AdgG9HgWWgo-CZIu61rSDK_i770vn3dhzqXyF_CrOLvJBBhadKHNhnsMKrtVWRjuAMY&vs=1b3ebb1bb7762106&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC8xMTRGNUI1RjcwNjlENEExQkZGMUNDNEU0MEE2NTY4Ml92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dId1V4QmE2dV9iRUlEb0ZBS3c3MEEzdC1IUkticGt3QUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpzR8OqWkOEWFQIoAkMzLBdALgAAAAAAABgSZGFzaF9iYXNlbGluZV8xX3YxEQB16gcA&ccb=9-4&oh=00_AYCAp0eqzZHST3H0jWPEdTCUEA84O1Q2yKlAbA0TU06URw&oe=67A7DB33&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 720, 'bandwidth': 484001}, {'id': '335485682377481v', 'url': 'https://scontent-ber1-1.cdninstagram.com/o1/v/t16/f2/m84/AQMf95No3WAGIKsYeUhoxV7rsgMTqHOqTNjkfUwg_8S8yRhOUnMkNI2o6Di5VqNKoPkkpkcinkGnnot_sYLm2DZc1ZGHCLl-nGnkZLc.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY0MDYwMzI2ODYxOTE2OTQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5GRUVELkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=AdgG9HgWWgo-CZIu61rSDK_i770vn3dhzqXyF_CrOLvJBBhadKHNhnsMKrtVWRjuAMY&vs=1b3ebb1bb7762106&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC8xMTRGNUI1RjcwNjlENEExQkZGMUNDNEU0MEE2NTY4Ml92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dId1V4QmE2dV9iRUlEb0ZBS3c3MEEzdC1IUkticGt3QUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpzR8OqWkOEWFQIoAkMzLBdALgAAAAAAABgSZGFzaF9iYXNlbGluZV8xX3YxEQB16gcA&ccb=9-4&oh=00_AYCAp0eqzZHST3H0jWPEdTCUEA84O1Q2yKlAbA0TU06URw&oe=67A7DB33&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 720, 'bandwidth': 484001}], 'original_height': 720, 'device_timestamp': 157227639454, 'has_shared_to_fb': 0, 'is_dash_eligible': 1, 'is_unified_video': False, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'has_more_comments': False, 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'number_of_qualities': 1, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'comment_threading_enabled': True, 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'approved', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 2, 'open_carousel_show_follow_button': False, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}], 'total': 10, 'additional_data': {'id': 17841525121103468, 'name': 'halloween_snacks', 'subtitle': 'See a few top posts each week', 'is_trending': False, 'media_count': 10, 'social_context': '', 'allow_following': 1, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.29350-15/122885201_279406056658052_253258248180892580_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEwODAuc2RyLmYyOTM1MC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=xUFDN-pUZnEQ7kNvgH5-GXm&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MjQzMDYwNzY4OTQ0MjUwMzg3OA%3D%3D.3-ccb7-5&oh=00_AYCvoAapMHHY3LrQFJ1W3DL62-AklQ-2J4qdd6T79i4uRw&oe=67ABC1EC&_nc_sid=2011ad', 'warning_message': None, 'content_advisory': None, 'allow_muting_story': True, 'follow_button_text': None, 'formatted_media_count': 'Fewer than 100', 'show_follow_drop_down': False, 'hide_use_hashtag_button': False, 'social_context_profile_links': []}}, 'pagination_token': 'HE1lBBspCRZVZVRWfQEMERxALUAZEwFHBQ5GZ1RSfRocWhkTOj4BUxZGGk1RRlQOfQAcTAdeJjwWEzMBQQRJAwEQChJGPl4xRwAXHQZbPFQUfRAKSgNfXhRBAEMWFRkHPFYQOg1FUk5eUDwLE1UWXBsXEAIbbQlKTEpCW30MESdGAEYI'}, 'content': 'eyJkYXRhIjp7ImFkZGl0aW9uYWxfZGF0YSI6eyJhbGxvd19mb2xsb3dpbmciOjEsImFsbG93X211dGluZ19zdG9yeSI6dHJ1ZSwiY29udGVudF9hZHZpc29yeSI6bnVsbCwiZm9sbG93X2J1dHRvbl90ZXh0IjpudWxsLCJmb3JtYXR0ZWRfbWVkaWFfY291bnQiOiJGZXdlciB0aGFuIDEwMCIsImhpZGVfdXNlX2hhc2h0YWdfYnV0dG9uIjpmYWxzZSwiaWQiOjE3ODQxNTI1MTIxMTAzNDY4LCJpc190cmVuZGluZyI6ZmFsc2UsIm1lZGlhX2NvdW50IjoxMCwibmFtZSI6ImhhbGxvd2Vlbl9zbmFja3MiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjg4NTIwMV8yNzk0MDYwNTY2NTgwNTJfMjUzMjU4MjQ4MTgwODkyNTgwX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV3T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz14VUZETi1wVVpuRVE3a052Z0g1LUdYbSZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1EWXdOelk0T1RRME1qVXdNemczT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDdm9BYXBNSEhZM0xyUUZKMVczREw2Mi1Ba2xRLTJKNHFkZDZUNzlpNHVSdyZvZT02N0FCQzFFQyZfbmNfc2lkPTIwMTFhZCIsInNob3dfZm9sbG93X2Ryb3BfZG93biI6ZmFsc2UsInNvY2lhbF9jb250ZXh0IjoiIiwic29jaWFsX2NvbnRleHRfcHJvZmlsZV9saW5rcyI6W10sInN1YnRpdGxlIjoiU2VlIGEgZmV3IHRvcCBwb3N0cyBlYWNoIHdlZWsiLCJ3YXJuaW5nX21lc3NhZ2UiOm51bGx9LCJjb3VudCI6NSwiaXRlbXMiOlt7ImFyZV9yZW1peGVzX2Nyb3NzcG9zdGFibGUiOnRydWUsImF2YXRhcl9zdGlja2VycyI6W10sImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczMDM2ODAwMiwiY3JlYXRlZF9hdF91dGMiOjE3MzAzNjgwMDIsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI2FzbXIiLCIjYXNtcmFydGlzdCIsIiNhc21yZm9vZCIsIiNtdWtiYW5nIiwiI2hhbGxvd2VlbiIsIiNoYWxsb3dlZW5fc25hY2tzIiwiI2hhcHB5IiwiI9in24zYp9iz2KfZhdin2LEiLCIj2KfbjF/Yp9izX9in2YVf2KLYsSIsIiPYp9uM2KfYs9mF2KfYsSIsIiPZh9in2YTZiNmI24zZhiJdLCJpZCI6MzQ5MDkwMDQ3MTc5MzczNDc5MiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOlsiQGtoYXRpc2F3X2FzbXIiXSwicGsiOiIxNzkyMjE4NjY5ODg4OTEyOCIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6Itiu2YjYsdin2qnbjCDZh9in2YTZiNuM2YbbjCDYqNmHINmF2YbYp9iz2KjYqiDZh9in2YTZiNuM2Ybwn5G78J+Og1xuXG7Yp9qv2Ycg2KrZiNmH2YUg2LnYp9i02YIg2KfbjOKAjNin2LPigIzYp9mF4oCM2KLYsduMINm+24zYrNmF2Ygg2KfYsiDYr9iz2Kog2YbYr9mH8J+YifCfkYfwn4+7XG5Aa2hhdGlzYXdfYXNtciBcbkBraGF0aXNhd19hc21yIFxuQGtoYXRpc2F3X2FzbXIgXG5cbiNhc21yICNhc21yYXJ0aXN0ICNhc21yZm9vZCAjbXVrYmFuZyAjaGFsbG93ZWVuICNoYWxsb3dlZW5fc25hY2tzICNoYXBweSAj2KfbjNin2LPYp9mF2KfYsSAj2KfbjF/Yp9izX9in2YVf2KLYsSAj2KfbjNin2LPZhdin2LEgI9mH2KfZhNmI2YjbjNmGIiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQ2ODExNzk4NjE0MSwiZnVsbF9uYW1lIjoiQVNNUiB8INiu2KfZsNi32JXduuCjruKAjNir2Znbm9in2bAgfCDYp9uMINin2LMg2KfZhSDYotixIiwiaWQiOiI2ODA0OTEzNDU5OSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzNDI0NTUwMDU3Mzk0MTk1NzE4XzY4MDQ5MTM0NTk5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ1MzczMzk4NF80NTIyNjk0NTQzMTQxMjlfMzY2MDA0NTM2OTU2NTg2ODY4MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAxJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPU50dEpMOVNKcXhnUTdrTnZnR1FpcUQ5Jl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUZZYnVKQmRWTThoVEYzSTFzUVJDR0pEU1d5MXJ0R2tuQ2xNeE5CN1diOGcmb2U9NjdBQkU5QUQmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImtoYXRpc2F3X2FzbXIifSwidXNlcl9pZCI6NjgwNDkxMzQ1OTl9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNsaXBzX21ldGFkYXRhIjp7ImFjaGlldmVtZW50c19pbmZvIjp7Im51bV9lYXJuZWRfYWNoaWV2ZW1lbnRzIjpudWxsLCJzaG93X2FjaGlldmVtZW50cyI6ZmFsc2V9LCJhZGRpdGlvbmFsX2F1ZGlvX2luZm8iOnsiYWRkaXRpb25hbF9hdWRpb191c2VybmFtZSI6bnVsbCwiYXVkaW9fcmVhdHRyaWJ1dGlvbl9pbmZvIjp7InNob3VsZF9hbGxvd19yZXN0b3JlIjpmYWxzZX19LCJhc3NldF9yZWNvbW1lbmRhdGlvbl9pbmZvIjpudWxsLCJhdWRpb19jYW5vbmljYWxfaWQiOiIxODQ2MjkzNTc2NzAzMDQwNSIsImF1ZGlvX3JhbmtpbmdfaW5mbyI6eyJiZXN0X2F1ZGlvX2NsdXN0ZXJfaWQiOiIxOTc5MjY2NzY5MjQ3OTk0In0sImF1ZGlvX3R5cGUiOiJvcmlnaW5hbF9zb3VuZHMiLCJicmFuZGVkX2NvbnRlbnRfdGFnX2luZm8iOnsiY2FuX2FkZF90YWciOmZhbHNlfSwiYnJlYWtpbmdfY29udGVudF9pbmZvIjpudWxsLCJicmVha2luZ19jcmVhdG9yX2luZm8iOm51bGwsImNoYWxsZW5nZV9pbmZvIjpudWxsLCJjbGlwc19jcmVhdGlvbl9lbnRyeV9wb2ludCI6ImNsaXBzIiwiY29udGVudF9hcHByZWNpYXRpb25faW5mbyI6eyJlbmFibGVkIjpmYWxzZSwiZW50cnlfcG9pbnRfY29udGFpbmVyIjpudWxsfSwiY29udGV4dHVhbF9oaWdobGlnaHRfaW5mbyI6bnVsbCwiY3V0b3V0X3N0aWNrZXJfaW5mbyI6W10sImRpc2FibGVfdXNlX2luX2NsaXBzX2NsaWVudF9jYWNoZSI6ZmFsc2UsImV4dGVybmFsX21lZGlhX2luZm8iOm51bGwsImZlYXR1cmVkX2xhYmVsIjpudWxsLCJpc19mYW5fY2x1Yl9wcm9tb192aWRlbyI6ZmFsc2UsImlzX3B1YmxpY19jaGF0X3dlbGNvbWVfdmlkZW8iOmZhbHNlLCJpc19zaGFyZWRfdG9fZmIiOmZhbHNlLCJtYXNodXBfaW5mbyI6eyJjYW5fdG9nZ2xlX21hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsImZvcm1hdHRlZF9tYXNodXBzX2NvdW50IjpudWxsLCJoYXNfYmVlbl9tYXNoZWRfdXAiOmZhbHNlLCJoYXNfbm9ubWltaWNhYmxlX2FkZGl0aW9uYWxfYXVkaW8iOmZhbHNlLCJpc19jcmVhdG9yX3JlcXVlc3RpbmdfbWFzaHVwIjpmYWxzZSwiaXNfbGlnaHRfd2VpZ2h0X2NoZWNrIjp0cnVlLCJpc19saWdodF93ZWlnaHRfcmV1c2VfYWxsb3dlZF9jaGVjayI6ZmFsc2UsImlzX3Bpdm90X3BhZ2VfYXZhaWxhYmxlIjpmYWxzZSwiaXNfcmV1c2VfYWxsb3dlZCI6dHJ1ZSwibWFzaHVwX3R5cGUiOm51bGwsIm1hc2h1cHNfYWxsb3dlZCI6dHJ1ZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1lcmNoYW5kaXNpbmdfcGlsbF9pbmZvIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJudXhfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6eyJhbGxvd19jcmVhdG9yX3RvX3JlbmFtZSI6dHJ1ZSwiYXR0cmlidXRlZF9jdXN0b21fYXVkaW9fYXNzZXRfaWQiOm51bGwsImF1ZGlvX2Fzc2V0X3N0YXJ0X3RpbWVfaW5fbXMiOm51bGwsImF1ZGlvX2ZpbHRlcl9pbmZvcyI6W10sImF1ZGlvX2lkIjoxMTU5NDg1MDY1NzYzNjc3LCJhdWRpb19wYXJ0cyI6W10sImF1ZGlvX3BhcnRzX2J5X2ZpbHRlciI6W10sImNhbl9yZW1peF9iZV9zaGFyZWRfdG9fZmIiOmZhbHNlLCJjYW5fcmVtaXhfYmVfc2hhcmVkX3RvX2ZiX2V4cGFuc2lvbiI6ZmFsc2UsImNvbnN1bXB0aW9uX2luZm8iOnsiZGlzcGxheV9tZWRpYV9pZCI6bnVsbCwiaXNfYm9va21hcmtlZCI6ZmFsc2UsImlzX3RyZW5kaW5nX2luX2NsaXBzIjpmYWxzZSwic2hvdWxkX211dGVfYXVkaW9fcmVhc29uIjoiIiwic2hvdWxkX211dGVfYXVkaW9fcmVhc29uX3R5cGUiOm51bGx9LCJkdXJhdGlvbl9pbl9tcyI6MzY5NDIsImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9LCJmb3JtYXR0ZWRfY2xpcHNfbWVkaWFfY291bnQiOm51bGwsImhpZGVfcmVtaXhpbmciOmZhbHNlLCJpZ19hcnRpc3QiOnsiZnVsbF9uYW1lIjoiQVNNUiB8INiu2KfZsNi32JXduuCjruKAjNir2Znbm9in2bAgfCDYp9uMINin2LMg2KfZhSDYotixIiwiaWQiOiI2ODA0OTEzNDU5OSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzQyNDU1MDA1NzM5NDE5NTcxOF82ODA0OTEzNDU5OSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NTM3MzM5ODRfNDUyMjY5NDU0MzE0MTI5XzM2NjAwNDUzNjk1NjU4Njg2ODBfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1OdHRKTDlTSnF4Z1E3a052Z0dRaXFEOSZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFGWWJ1SkJkVk04aFRGM0kxc1FSQ0dKRFNXeTFydEdrbkNsTXhOQjdXYjhnJm9lPTY3QUJFOUFEJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJraGF0aXNhd19hc21yIn0sImlzX2F1ZGlvX2F1dG9tYXRpY2FsbHlfYXR0cmlidXRlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9hdWRpb19lZmZlY3RzIjp0cnVlLCJpc19lbGlnaWJsZV9mb3JfdmlueWxfc3RpY2tlciI6dHJ1ZSwiaXNfZXhwbGljaXQiOmZhbHNlLCJpc19vcmlnaW5hbF9hdWRpb19kb3dubG9hZF9lbGlnaWJsZSI6dHJ1ZSwiaXNfcmV1c2VfZGlzYWJsZWQiOmZhbHNlLCJpc194cG9zdF9mcm9tX2ZiIjpmYWxzZSwib2Ffb3duZXJfaXNfbXVzaWNfYXJ0aXN0IjpmYWxzZSwib3JpZ2luYWxfYXVkaW9fc3VidHlwZSI6ImRlZmF1bHQiLCJvcmlnaW5hbF9hdWRpb190aXRsZSI6Ik9yaWdpbmFsIGF1ZGlvIiwib3JpZ2luYWxfbWVkaWFfaWQiOjM0OTA5MDA0NzE3OTM3MzQ3OTIsIm92ZXJsYXBfZHVyYXRpb25faW5fbXMiOm51bGwsInByZXZpb3VzX3RyZW5kX3JhbmsiOm51bGwsInByb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUU1yYzNLRFpHc1lqRmpWaXNZbEhwOVJmN18xZW1CMmp5XzAtVUtlbGdNeDZwUTFuLS1DQnV4N0gyNS1uX0gxTHc3LWhnd1FudWdadEFrTzllY3puUTNSLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEwOSZfbmNfc2lkPThiZjhmZSZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLnh4LmZiY2RuLm5ldCZfbmNfb2hjPWNOYTE3cnRjd3lRUTdrTnZnR21HMDZ5JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkluaHdkbDl3Y205bmNtVnpjMmwyWlM1QlZVUkpUMTlQVGt4WkxpNURNeTR3TG5CeWIyZHlaWE56YVhabFgyRjFaR2x2SWl3aWVIQjJYMkZ6YzJWMFgybGtJam94TWpVd05qa3dNREU1TkRReE1EVXhMQ0oxY214blpXNWZjMjkxY21ObElqb2lkM2QzSW4wJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZQ1RnVDQyV090Uko4Z2Vla1hqLWdlLWhNajFYWWoxZWFnd18zWGU3WDFXQWcmb2U9NjdBQkQ3RTgiLCJzaG91bGRfbXV0ZV9hdWRpbyI6ZmFsc2UsInRpbWVfY3JlYXRlZCI6MTczMDM2ODAwNCwidHJlbmRfcmFuayI6bnVsbCwieHBvc3RfZmJfY3JlYXRvcl9pbmZvIjpudWxsfSwib3JpZ2luYWxpdHlfaW5mbyI6bnVsbCwicHJvZmVzc2lvbmFsX2NsaXBzX3Vwc2VsbF90eXBlIjowLCJyZWVsc19vbl90aGVfcmlzZV9pbmZvIjpudWxsLCJyZXVzYWJsZV90ZXh0X2F0dHJpYnV0ZV9zdHJpbmciOm51bGwsInJldXNhYmxlX3RleHRfaW5mbyI6bnVsbCwic2hvcHBpbmdfaW5mbyI6bnVsbCwic2hvd19hY2hpZXZlbWVudHMiOmZhbHNlLCJzaG93X3RpcHMiOm51bGwsInRlbXBsYXRlX2luZm8iOm51bGwsInZpZXdlcl9pbnRlcmFjdGlvbl9zZXR0aW5ncyI6bnVsbH0sImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREJ5SzN2SGdsU0kiLCJjb21tZW50X2NvdW50IjowLCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY29tbWVudF90aHJlYWRpbmdfZW5hYmxlZCI6dHJ1ZSwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImNyZWF0b3Jfdmlld2VyX2luc2lnaHRzIjpbXSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjQ4MTQ2MjA2NDUyOTMxMCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTc5MjIxODY0MTM4ODkxMjgiLCJmZWVkX3R5cGUiOiJjbGlwcyIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJOT05FIn0sImhhc19hdWRpbyI6dHJ1ZSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19tb3JlX2NvbW1lbnRzIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNDkwOTAwNDcxNzkzNzM0NzkyXzY4MDQ5MTM0NTk5IiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnX3BsYXlfY291bnQiOjI3NCwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiYWRkaXRpb25hbF9pdGVtcyI6eyJmaXJzdF9mcmFtZSI6eyJoZWlnaHQiOjg1MiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ2NTE1MzgyNF8xMjczMDQ0MzU2OTY5NzIxXzQ4MDMxNjQ0OTM2NjA0MzAwNDVfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3A0ODB4NDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0Mk5EQjRNVEV6Tmk1elpISXVaamN4T0RjNExtRmtaR2wwYVc5dVlXeGZZMjkyWlhKZlpuSmhiV1VpZlEmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5Jl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPTZlM19sZ1BPTjhRUTdrTnZnSFJZYkJEJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ1Boa25McHdZYjVqeDMyZ2gzcTk0b2J1bG9UMXg0Y2RfUWZaWUtrYzd5Tmcmb2U9NjdBQkUxMTAmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6NDgwfSwiaWd0dl9maXJzdF9mcmFtZSI6eyJoZWlnaHQiOjg1MiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ2NTE1MzgyNF8xMjczMDQ0MzU2OTY5NzIxXzQ4MDMxNjQ0OTM2NjA0MzAwNDVfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3A0ODB4NDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0Mk5EQjRNVEV6Tmk1elpISXVaamN4T0RjNExtRmtaR2wwYVc5dVlXeGZZMjkyWlhKZlpuSmhiV1VpZlEmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5Jl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPTZlM19sZ1BPTjhRUTdrTnZnSFJZYkJEJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ1Boa25McHdZYjVqeDMyZ2gzcTk0b2J1bG9UMXg0Y2RfUWZaWUtrYzd5Tmcmb2U9NjdBQkUxMTAmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6NDgwfSwic21hcnRfZnJhbWUiOm51bGx9LCJpdGVtcyI6W3siaGVpZ2h0Ijo4NTQsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjkzNTAtMTUvNDY1MTYzNDMwXzEzNDYxNTI1MDk3MDg4NzVfNzI4Nzc3MDkzOTUzMjM5Mzg5NV9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQwT0RCNE9EVTBMbk5rY2k1bU1qa3pOVEF1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTEmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9YlFrN1NwNHhUUElRN2tOdmdHZ1FFSGwmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16UTVNRGt3TURRM01UYzVNemN6TkRjNU1qa3dPRGsxTURNeU5EQXlOakV6TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBRzlodFZtQmd3X1F1VnhRY1BaaVQ4Y2M0dGpNMkg1Nm5kdWlDY0toaTR1dyZvZT02N0FCRDE3MyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjo0ODB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjozODQsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0IjoxMjQ2LCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDY0ODkyOTQ2XzUzNzc1NTI4MjIxNjYxMF84NTg3ODcwMjE2ODQzNzAwMTcxX24uanBnP19uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1YU0JLZVhlX05XZ1E3a052Z0ZSdkFkaiZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUM5eFFqOHRpbFNhNHNXUTMzS3o1RHBsYWxfSGltdkMtWjB5TUgzWkFWUTl3Jm9lPTY3QUJFODZGJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjM1MTgyODU3MTQyODU3MTQzLCJ0aHVtYm5haWxfaGVpZ2h0IjoxNzgsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjozNi45NDJ9fX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52ZW50b3J5X3NvdXJjZSI6InJlY29tbWVuZGVkX2NsaXBzX2NoYWluaW5nX21vZGVsIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19hcnRpc3RfcGljayI6ZmFsc2UsImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjp0cnVlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfcmV1c2VfYWxsb3dlZCI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc190aGlyZF9wYXJ0eV9kb3dubG9hZHNfZWxpZ2libGUiOnRydWUsImlzX3VuaWZpZWRfdmlkZW8iOmZhbHNlLCJpc192aWRlbyI6dHJ1ZSwibGF5b3V0X3R5cGUiOiJvbmVfYnlfdHdvX2xlZnQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjE1LCJtYXhfbnVtX3Zpc2libGVfcHJldmlld19jb21tZW50cyI6MCwibWVkaWFfY3JvcHBpbmdfaW5mbyI6eyJzcXVhcmVfY3JvcCI6eyJjcm9wX2JvdHRvbSI6MC4wLCJjcm9wX2xlZnQiOjAuMCwiY3JvcF9yaWdodCI6MC4wLCJjcm9wX3RvcCI6MC4wfX0sIm1lZGlhX25hbWUiOiJyZWVsIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6MiwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjpudWxsLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9yaWdpbmFsX2hlaWdodCI6MTkyMCwib3JpZ2luYWxfd2lkdGgiOjEwODAsIm93bmVyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0NjgxMTc5ODYxNDEsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiQVNNUiB8INiu2KfZsNi32JXduuCjruKAjNir2Znbm9in2bAgfCDYp9uMINin2LMg2KfZhSDYotixIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjY4MDQ5MTM0NTk5IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzQyNDU1MDA1NzM5NDE5NTcxOF82ODA0OTEzNDU5OSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NTM3MzM5ODRfNDUyMjY5NDU0MzE0MTI5XzM2NjAwNDUzNjk1NjU4Njg2ODBfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1OdHRKTDlTSnF4Z1E3a052Z0dRaXFEOSZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFGWWJ1SkJkVk04aFRGM0kxc1FSQ0dKRFNXeTFydEdrbkNsTXhOQjdXYjhnJm9lPTY3QUJFOUFEJl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoia2hhdGlzYXdfYXNtciJ9LCJwayI6MzQ5MDkwMDQ3MTc5MzczNDc5MiwicGxheV9jb3VudCI6Mjc0LCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNsaXBzIiwicmVzaGFyZV9jb3VudCI6MCwic2hhcmVfY291bnRfZGlzYWJsZWQiOmZhbHNlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInNvY2lhbF9jb250ZXh0IjpbXSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFnZ2VkX3VzZXJzIjp7ImluIjpbeyJwb3NpdGlvbiI6WzAuMCwwLjBdLCJzaG93X2NhdGVnb3J5X29mX3VzZXIiOmZhbHNlLCJ1c2VyIjp7ImZ1bGxfbmFtZSI6Ik1jQmFuZyBBc21yIiwiaWQiOiIyNjQ3ODY1MDkyOCIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMjIyMTIwMTg4MzYxMDMxMzA0OF8yNjQ3ODY1MDkyOCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS84MTg4MTM5MV80NjUyNjMwMzA4MjkzMDZfNDIxODEwNjYyNzE1MDA1MzM3Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPW5lMmxDeU9UaHk4UTdrTnZnRURfYjRRJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ09BM0Q3VENnYXNJQkxDRTB4WFBQS3dhNGhmM1kzZ2VWSHRxeG56LXNHaVEmb2U9NjdBQkNFRjQmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6Im1jYmFuZy5hc21yIn19XX0sInRha2VuX2F0IjoxNzMwMzY4MDAxLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yOTM1MC0xNS80NjUxNjM0MzBfMTM0NjE1MjUwOTcwODg3NV83Mjg3NzcwOTM5NTMyMzkzODk1X24uanBnP3N0cD1kc3QtanBnX2UxNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDBPREI0T0RVMExuTmtjaTVtTWprek5UQXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1iUWs3U3A0eFRQSVE3a052Z0dnUUVIbCZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpRNU1Ea3dNRFEzTVRjNU16Y3pORGM1TWprd09EazFNRE15TkRBeU5qRXpNdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFHOWh0Vm1CZ3dfUXVWeFFjUFppVDhjYzR0ak0ySDU2bmR1aUNjS2hpNHV3Jm9lPTY3QUJEMTczJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6W10sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQ2ODExNzk4NjE0MSwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJBU01SIHwg2K7Yp9mw2LfYld264KOu4oCM2KvZmdub2KfZsCB8INin24wg2KfYsyDYp9mFINii2LEiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiNjgwNDkxMzQ1OTkiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzNDI0NTUwMDU3Mzk0MTk1NzE4XzY4MDQ5MTM0NTk5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ1MzczMzk4NF80NTIyNjk0NTQzMTQxMjlfMzY2MDA0NTM2OTU2NTg2ODY4MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAxJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPU50dEpMOVNKcXhnUTdrTnZnR1FpcUQ5Jl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUZZYnVKQmRWTThoVEYzSTFzUVJDR0pEU1d5MXJ0R2tuQ2xNeE5CN1diOGcmb2U9NjdBQkU5QUQmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJraGF0aXNhd19hc21yIn0sInZpZGVvX2NvZGVjIjoiYXZjMS42NDAwMWYiLCJ2aWRlb19kdXJhdGlvbiI6MzYuOTQyLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU5ncVRYLTg1V2hpVDVIV2tWMy1lZmprWkJkTS1lWmVRaktqTUMyaTRoNU9BakZtVnd1THZ0S2RxQVpSdV9MVjlqV01DZnVvd1VGQUtMNU83TWVUZHlVMWZtUzdjem1kdGVDdTdRLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV5TlRBMk9UQXdNVGswTkRFd05URXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1BZGl5dEhVekRkT3YyTEFQS3hIV3dqR0ZHbHYyMXV4dzhkenpYb0JIdEhjWUZ2VVdleUxSMzFCQ21Pakx5anh0NG9rJnZzPTZhNGUwYTk3ZWZhMDVlMGYmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDODVNelE0TWpVeE5FTTJSamxGTlRsR05ERTJRVEE1TmpFMk16SXdNa0ZDTmw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRKYjNSMVFuTnZaMFJ1TFRFMWEyUkJVR3BIWlZaeFJWOUlXblZpY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnJibXFlWGUzN2dFRlFJb0FrTXpMQmRBUW5kc2kwT1ZnUmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUEzZ21USi04bzd0TDl5TzhMN0hMRXJ3WGZGQUJkTGtpY3BzRTZSbHB4dEhnJm9lPTY3QTdDQzA1Jl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6MTA0NzA5MCwiaGVpZ2h0IjoxMjgwLCJpZCI6IjE1NDg4NDgwMzI1MDEyMjN2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU5ncVRYLTg1V2hpVDVIV2tWMy1lZmprWkJkTS1lWmVRaktqTUMyaTRoNU9BakZtVnd1THZ0S2RxQVpSdV9MVjlqV01DZnVvd1VGQUtMNU83TWVUZHlVMWZtUzdjem1kdGVDdTdRLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV5TlRBMk9UQXdNVGswTkRFd05URXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1BZGl5dEhVekRkT3YyTEFQS3hIV3dqR0ZHbHYyMXV4dzhkenpYb0JIdEhjWUZ2VVdleUxSMzFCQ21Pakx5anh0NG9rJnZzPTZhNGUwYTk3ZWZhMDVlMGYmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDODVNelE0TWpVeE5FTTJSamxGTlRsR05ERTJRVEE1TmpFMk16SXdNa0ZDTmw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRKYjNSMVFuTnZaMFJ1TFRFMWEyUkJVR3BIWlZaeFJWOUlXblZpY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnJibXFlWGUzN2dFRlFJb0FrTXpMQmRBUW5kc2kwT1ZnUmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUEzZ21USi04bzd0TDl5TzhMN0hMRXJ3WGZGQUJkTGtpY3BzRTZSbHB4dEhnJm9lPTY3QTdDQzA1Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjEwNDcwOTAsImhlaWdodCI6MTI4MCwiaWQiOiIxNTQ4ODQ4MDMyNTAxMjIzdiIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFOZ3FUWC04NVdoaVQ1SFdrVjMtZWZqa1pCZE0tZVplUWpLak1DMmk0aDVPQWpGbVZ3dUx2dEtkcUFaUnVfTFY5aldNQ2Z1b3dVRkFLTDVPN01lVGR5VTFmbVM3Y3ptZHRlQ3U3US5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFeU5UQTJPVEF3TVRrME5ERXdOVEVzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURURWxRVXk1RE15NDNNakF1WkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4SW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZfbmNfb2M9QWRpeXRIVXpEZE92MkxBUEt4SFd3akdGR2x2MjF1eHc4ZHp6WG9CSHRIY1lGdlVXZXlMUjMxQkNtT2pMeWp4dDRvayZ2cz02YTRlMGE5N2VmYTA1ZTBmJl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzg1TXpRNE1qVXhORU0yUmpsRk5UbEdOREUyUVRBNU5qRTJNekl3TWtGQ05sOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSmIzUjFRbk52WjBSdUxURTFhMlJCVUdwSFpWWnhSVjlJV25WaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpyYm1xZVhlMzdnRUZRSW9Ba016TEJkQVFuZHNpME9WZ1JnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlBM2dtVEotOG83dEw5eU84TDdITEVyd1hmRkFCZExraWNwc0U2UmxweHRIZyZvZT02N0E3Q0MwNSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9LHsiYmFuZHdpZHRoIjoxMDQ3MDkwLCJoZWlnaHQiOjEyODAsImlkIjoiMTU0ODg0ODAzMjUwMTIyM3YiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg2L0FRTmdxVFgtODVXaGlUNUhXa1YzLWVmamtaQmRNLWVaZVFqS2pNQzJpNGg1T0FqRm1Wd3VMdnRLZHFBWlJ1X0xWOWpXTUNmdW93VUZBS0w1TzdNZVRkeVUxZm1TN2N6bWR0ZUN1N1EubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXlOVEEyT1RBd01UazBOREV3TlRFc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEVEVsUVV5NURNeTQzTWpBdVpHRnphRjlpWVhObGJHbHVaVjh4WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmX25jX29jPUFkaXl0SFV6RGRPdjJMQVBLeEhXd2pHRkdsdjIxdXh3OGR6elhvQkh0SGNZRnZVV2V5TFIzMUJDbU9qTHlqeHQ0b2smdnM9NmE0ZTBhOTdlZmEwNWUwZiZfbmNfdnM9SEJrc0ZRSVlVbWxuWDNod2RsOXlaV1ZzYzE5d1pYSnRZVzVsYm5SZmMzSmZjSEp2WkM4NU16UTRNalV4TkVNMlJqbEZOVGxHTkRFMlFUQTVOakUyTXpJd01rRkNObDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEpiM1IxUW5OdlowUnVMVEUxYTJSQlVHcEhaVlp4UlY5SVduVmljVjlGUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcmJtcWVYZTM3Z0VGUUlvQWtNekxCZEFRbmRzaTBPVmdSZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxX2djQSZjY2I9OS00Jm9oPTAwX0FZQTNnbVRKLThvN3RMOXlPOEw3SExFcndYZkZBQmRMa2ljcHNFNlJscHh0SGcmb2U9NjdBN0NDMDUmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6NzIwfV0sInZpZXdfc3RhdGVfaXRlbV90eXBlIjoxMjh9LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNjAzOTcxMDM4LCJjcmVhdGVkX2F0X3V0YyI6MTYwMzk3MTAzOCwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzX3RyYW5zbGF0aW9uIjp0cnVlLCJoYXNodGFncyI6WyIjaGFsbG93ZWVuIiwiI3l0Y2hhbm5lbCIsIiNkaXkiLCIjY2h1cGFjaHVwcyIsIiNoYWxsb3dlZW5fc25hY2tzIiwiI2hhbGxvd2Vlbl9wYXJ0eSIsIiNwdW1wa2luIl0sImlkIjoyNDMwNjA3Njg5NDQyNTAzODc4LCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6WyJAY2h1cGFjaHVwc3BsIl0sInBrIjoiMTc4NjgxODYyMzkwODI5MzIiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJSZWFkeSEgU2V0ISBGaWxtIVxuS29sZWpueSBmaWxtaWsganXFvCB3IHByenlnb3Rvd2FuaXUg8J+Ru1xuXG5OYSBwbGFuaWUgbmF3ZXQgc3RyYXN6bmEgQ2h1cGEgY3phY2hhIPCfkpUgQGNodXBhY2h1cHNwbFxuXG4jaGFsbG93ZWVuICN5dGNoYW5uZWwgI2RpeSAjY2h1cGFjaHVwcyAjaGFsbG93ZWVuX3NuYWNrcyAjaGFsbG93ZWVuX3BhcnR5ICNwdW1wa2luIiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQ0Mzc2MzM5MjU3MiwiZnVsbF9uYW1lIjoiIiwiaWQiOiI0Mzg2MDU3ODc3OSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIyNDI2NDY1MDUyMjg4NjA3NTU4XzQzODYwNTc4Nzc5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzEyMjI3MTQwNV8zNjc2OTQ5NjYyMzY5Mjk0XzUzNTIwOTYxMTg4NzM4NTE2NjJfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1kTzhmRThaSU4zTVE3a052Z0V3X0wxMCZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUQ2ODhPOU1xTnZDM0FXaE8zWVdBTnJfSUplRGluQlg4cW92dzd3RWFpaWpRJm9lPTY3QUJERTAwJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiI0Y3JhenlfaGFuZHMifSwidXNlcl9pZCI6NDM4NjA1Nzg3Nzl9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiQ0c3UU5ETmphekciLCJjb21tZW50X2NvdW50IjowLCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY29tbWVudF90aHJlYWRpbmdfZW5hYmxlZCI6dHJ1ZSwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxMjk5NjIxOTUxNDYyMDMsImZiX2FnZ3JlZ2F0ZWRfY29tbWVudF9jb3VudCI6MCwiZmJfYWdncmVnYXRlZF9saWtlX2NvdW50IjowLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmJpZCI6IjE3ODY4MTg2MjMzMDgyOTMyIiwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJmZWVkX3R5cGUiOiJtZWRpYSIsImZpbHRlcl90eXBlIjoxMTIsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19tb3JlX2NvbW1lbnRzIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIyNDMwNjA3Njg5NDQyNTAzODc4XzQzODYwNTc4Nzc5IiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEwODAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjkzNTAtMTUvMTIyODg1MjAxXzI3OTQwNjA1NjY1ODA1Ml8yNTMyNTgyNDgxODA4OTI1ODBfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXdPREF1YzJSeUxtWXlPVE0xTUM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPXhVRkROLXBVWm5FUTdrTnZnSDUtR1htJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NalF6TURZd056WTRPVFEwTWpVd016ZzNPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUN2b0FhcE1ISFkzTHJRRkoxVzNETDYyLUFrbFEtMko0cWRkNlQ3OWk0dVJ3Jm9lPTY3QUJDMUVDJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0ODAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjkzNTAtMTUvMTIyODg1MjAxXzI3OTQwNjA1NjY1ODA1Ml8yNTMyNTgyNDgxODA4OTI1ODBfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3M0ODB4NDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV3T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz14VUZETi1wVVpuRVE3a052Z0g1LUdYbSZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1EWXdOelk0T1RRME1qVXdNemczT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCSUQ4YmVGOUE5VXhNT3Z2cEphUDhjc09Ba0tCaDNxelVnU1U4YkZwZGdadyZvZT02N0FCQzFFQyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjo0ODB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdW5pZmllZF92aWRlbyI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo1LCJsaWtlcnMiOlt7ImZ1bGxfbmFtZSI6Ikthcm9saW5hIEN6YWprb3dza2EiLCJpZCI6IjE2OTY2MjI0MDEiLCJpc19wcml2YXRlIjp0cnVlLCJpc192ZXJpZmllZCI6ZmFsc2UsInBrIjoxNjk2NjIyNDAxLCJwcm9maWxlX3BpY19pZCI6IjE1ODIwNjgwMzMxNjgzNTI4NzdfMTY5NjYyMjQwMSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8yMDgzNzQwMF8xNjc0NjcwNTcxNDc0MTZfODkwNTAzMjQ4ODI1OTE1ODAxNl9hLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPU9IbkYyRTFTMXRVUTdrTnZnRmdteThXJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ3Fmai15aHFEWUxJbnd2QkpYUW1iOWdCd3BGZnpTSmhtQUE3R0o4T1Z6UXcmb2U9NjdBQkVDMDgmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6Imtpa2EwNzAyIn0seyJmdWxsX25hbWUiOiJvZC5ub3ZhLmZhc2hpb24iLCJpZCI6IjE1MDEyMjQwMjciLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwayI6MTUwMTIyNDAyNywicHJvZmlsZV9waWNfaWQiOiIzMzQ1NTkwNzYzMDcxMzYyMzU5XzE1MDEyMjQwMjciLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDM3MTQ3ODEwXzQ0NjM0ODEyNzg3MjA1OV84NTkyNjgyMzk1NTg5NDg3NDUyX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9NmFLZGg4cV9SWXdRN2tOdmdHM3BXWVYmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCdUkwQ1FocXV2UDlDdnNSMXA0VUZRbnltdlFseVRmSndGU1YyZFQ0MTZaQSZvZT02N0FCRDNDOCZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoib2Qubm92YS5mYXNoaW9uIn0seyJmdWxsX25hbWUiOiLFu2FuZXRhIEtyYXN6ZXdza2EiLCJpZCI6IjgxMDkxODcyNjgiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwayI6ODEwOTE4NzI2OCwicHJvZmlsZV9waWNfaWQiOiIzMDA2MDQ0ODI1NDQ2NTAyNDM1XzgxMDkxODcyNjgiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzIzMDY2NzczXzUzMDAxMDgyOTA3NzQ5MF84ODA5NjExMTk0MDkwMjg2MzYyX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9aEJoTTh3NTUzbGdRN2tOdmdGTERCbTUmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCbldBRVFSM01qb3JmQ3Vic0IzMlM5eUx6RDMwUGpMZVIzQWF0VnVkU055QSZvZT02N0FCQzNGMSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiemtyYXN6ZXdza2EifSx7ImZ1bGxfbmFtZSI6IkFnbmllc3prYSBLcnUiLCJpZCI6IjM0OTM3MjU1MDUzIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicGsiOjM0OTM3MjU1MDUzLCJwcm9maWxlX3BpY19pZCI6IjIzMDc3MTI0MTI5NjY3OTkyNjNfMzQ5MzcyNTUwNTMiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvOTcyNjMyMzdfODUyMTUyNzA1Mjg4MzQ3XzgzMzg2MTQ4NzI3MzIzMzYxMjhfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1ySDNfZmlVcWpYRVE3a052Z0VnV0FyaiZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWURWcktmdmFyTUVWTFhXS2RDYnd3a3MwdmVDZUpaeDZvamRVT2sxVlRfOGJ3Jm9lPTY3QUJDQjlFJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJhZ25pZXN6a2Eua3J1In0seyJmdWxsX25hbWUiOiJLYXJv4pmm77iPIiwiaWQiOiIyMDk0MzU5Njk0IiwiaXNfcHJpdmF0ZSI6dHJ1ZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwayI6MjA5NDM1OTY5NCwicHJvZmlsZV9waWNfaWQiOiIzMjgxNTI1NTcyOTAyMzYzNzAwXzIwOTQzNTk2OTQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDE5NTEzNTgzXzEwMzkzODY1NzczMzQyNTZfNzAxNzIzOTg2ODE1NzgyNDQxMl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPVZ4aWhzd1dULWVNUTdrTnZnR1lSaDNTJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQTJmSDlyWWZoQmhRakVCVnFXa0dKamJXeUs0dUFmMGxPN2RRS3RiUGhEWkEmb2U9NjdBQkVDMUImX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImNhcm9saW5lX2thcm8yMiJ9XSwibWFzaHVwX2luZm8iOnsiY2FuX3RvZ2dsZV9tYXNodXBzX2FsbG93ZWQiOmZhbHNlLCJmb3JtYXR0ZWRfbWFzaHVwc19jb3VudCI6bnVsbCwiaGFzX2JlZW5fbWFzaGVkX3VwIjpmYWxzZSwiaGFzX25vbm1pbWljYWJsZV9hZGRpdGlvbmFsX2F1ZGlvIjpmYWxzZSwiaXNfY3JlYXRvcl9yZXF1ZXN0aW5nX21hc2h1cCI6ZmFsc2UsImlzX2xpZ2h0X3dlaWdodF9jaGVjayI6dHJ1ZSwiaXNfbGlnaHRfd2VpZ2h0X3JldXNlX2FsbG93ZWRfY2hlY2siOmZhbHNlLCJpc19waXZvdF9wYWdlX2F2YWlsYWJsZSI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOmZhbHNlLCJtYXNodXBfdHlwZSI6bnVsbCwibWFzaHVwc19hbGxvd2VkIjpmYWxzZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1heF9udW1fdmlzaWJsZV9wcmV2aWV3X2NvbW1lbnRzIjoyLCJtZWRpYV9uYW1lIjoicG9zdCIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjEsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIwIiwiYXVkaW9fdHlwZSI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6bnVsbH0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3JpZ2luYWxfaGVpZ2h0IjoxMDgwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwib3duZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjEsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQ0Mzc2MzM5MjU3MiwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiIiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiNDM4NjA1Nzg3NzkiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIyNDI2NDY1MDUyMjg4NjA3NTU4XzQzODYwNTc4Nzc5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzEyMjI3MTQwNV8zNjc2OTQ5NjYyMzY5Mjk0XzUzNTIwOTYxMTg4NzM4NTE2NjJfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1kTzhmRThaSU4zTVE3a052Z0V3X0wxMCZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUQ2ODhPOU1xTnZDM0FXaE8zWVdBTnJfSUplRGluQlg4cW92dzd3RWFpaWpRJm9lPTY3QUJERTAwJl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MCwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoiNGNyYXp5X2hhbmRzIn0sInBrIjoyNDMwNjA3Njg5NDQyNTAzODc4LCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImZlZWQiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE2MDM5NzEwMzcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjg4NTIwMV8yNzk0MDYwNTY2NTgwNTJfMjUzMjU4MjQ4MTgwODkyNTgwX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV3T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz14VUZETi1wVVpuRVE3a052Z0g1LUdYbSZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1EWXdOelk0T1RRME1qVXdNemczT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDdm9BYXBNSEhZM0xyUUZKMVczREw2Mi1Ba2xRLTJKNHFkZDZUNzlpNHVSdyZvZT02N0FCQzFFQyZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOltdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjoxLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0NDM3NjMzOTI1NzIsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjQzODYwNTc4Nzc5IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMjQyNjQ2NTA1MjI4ODYwNzU1OF80Mzg2MDU3ODc3OSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8xMjIyNzE0MDVfMzY3Njk0OTY2MjM2OTI5NF81MzUyMDk2MTE4ODczODUxNjYyX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9ZE84ZkU4WklOM01RN2tOdmdFd19MMTAmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlENjg4TzlNcU52QzNBV2hPM1lXQU5yX0lKZURpbkJYOHFvdnc3d0VhaWlqUSZvZT02N0FCREUwMCZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjAsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6IjRjcmF6eV9oYW5kcyJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTUzODg0MTUwNiwiY3JlYXRlZF9hdF91dGMiOjE1Mzg4NDE1MDYsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI2hhbGxvd2Vlbl9raWRzIiwiI2hhbGxvd2Vlbl9zbmFja3MiLCIjc3BpZGVyX2RvbnV0cyIsIiNjdXRlX2Zvb2QiLCIja2lkc19zbmFja3MiLCIjZG9udXRzIiwiI86zzrnOsV/Otc69zrFfzr3Ouc66zr/Ou86xX86zzrnOvc6/zr3PhM6xzrlfzr/Ou86xIiwiI2dyZWVrbW9tYmxvZ2dlcnNjb21tdW5pdHkiLCIjZ3JlZWtibG9nZ2Vyc2NvbW11bml0eSIsIiNtb21ibG9nZ2VyIl0sImlkIjoxODg0MjYxNTgyMDE4MjAzNjIzLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTc5ODY0NzA1NDQwNDM4NzAiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiLOms6xzrkgzrrOrM+Az4nPgiDOrc+Ez4POuSDPhM6/IM6yzrHPgc61z4TPjCDOsc+Azr/Os861z4XOvM6xz4TOuc69z4wgz4POvc6xzrouLi4gzrzOtc+EzrHOvM6/z4HPhs+Ozr3Otc+EzrHOuSDPg861IM6xz4HOsc+Hzr3Ovy3Ovc+Ezr/Ovc6xz4QhISEgzqPOv8+Nz4DOtc+BIM69z4zPg8+EzrnOvM6/IM66zrHOuSDOtM65zrHPg866zrXOtM6xz4PPhM65zrrPjCEhICNoYWxsb3dlZW5fa2lkcyAjaGFsbG93ZWVuX3NuYWNrcyAjc3BpZGVyX2RvbnV0cyAjY3V0ZV9mb29kICNraWRzX3NuYWNrcyAjZG9udXRzICAjzrPOuc6xX861zr3OsV/Ovc65zrrOv867zrFfzrPOuc69zr/Ovc+EzrHOuV/Ov867zrEgI2dyZWVrbW9tYmxvZ2dlcnNjb21tdW5pdHkgI2dyZWVrYmxvZ2dlcnNjb21tdW5pdHkgI21vbWJsb2dnZXIiLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwODY2MDM1NDgyLCJmdWxsX25hbWUiOiJFbHBpZGEgVG91dmUiLCJpZCI6IjE2MzA4NzY4NjciLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzU1NjQ2NjA5MzgwMDY1NTAwOV8xNjMwODc2ODY3IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ3NTgyMDY0MV80MDU5MjIyMzU5MDAzNDBfMzM1NDU0OTE2NzUwMzkxNzY1MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPUJKNWpqZ0kxUzF3UTdrTnZnRWE4Y2lzJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQVEyUGxkQlNrZ0lpbF92ZWl4YVZTNmE2WlJnczFrX2ZtZzktMkplcjNsWVEmb2U9NjdBQkM2MUUmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImVscGlkYV90b3V2ZSJ9LCJ1c2VyX2lkIjoxNjMwODc2ODY3fSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkJvbVBlejBIRV9uIiwiY29tbWVudF9jb3VudCI6NiwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNvbW1lbnRfdGhyZWFkaW5nX2VuYWJsZWQiOnRydWUsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTA3ODk5Njk3MDg3MTgxNCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTc5ODY0NzA1MzgwNDM4NzAiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjExMiwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX21vcmVfY29tbWVudHMiOnRydWUsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMTg4NDI2MTU4MjAxODIwMzYyM18xNjMwODc2ODY3IiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjgxMCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQyNDA2MTA5XzI4Njc2MzI1ODU5NTQzMF81ODgyMzA4MDcyNzk3MDcyMDAyX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlRGd4TUM1elpISXVaakk0T0RVdVpHVm1ZWFZzZEY5cGJXRm5aU0o5Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz02d0gzVzJ6NENEZ1E3a052Z0duYkxLeiZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TVRnNE5ESTJNVFU0TWpBeE9ESXdNell5TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDcGZYc2ZtTDdBVmlKam5iSExtUy0zbTlUUnVnUkpzU0c2UktGLUM5NTU3dyZvZT02N0FCRDBGQiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6MzYwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDI0MDYxMDlfMjg2NzYzMjU4NTk1NDMwXzU4ODIzMDgwNzI3OTcwNzIwMDJfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3M0ODB4NDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlRGd4TUM1elpISXVaakk0T0RVdVpHVm1ZWFZzZEY5cGJXRm5aU0o5Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz02d0gzVzJ6NENEZ1E3a052Z0duYkxLeiZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TVRnNE5ESTJNVFU0TWpBeE9ESXdNell5TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEUV92WnJld3B3YzFDR2VfZ1ZNV21wd2pBa0g1OFFieXRqbVpxX0dPMkkxZyZvZT02N0FCRDBGQiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjo0ODB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdW5pZmllZF92aWRlbyI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo3NywibWFzaHVwX2luZm8iOnsiY2FuX3RvZ2dsZV9tYXNodXBzX2FsbG93ZWQiOmZhbHNlLCJmb3JtYXR0ZWRfbWFzaHVwc19jb3VudCI6bnVsbCwiaGFzX2JlZW5fbWFzaGVkX3VwIjpmYWxzZSwiaGFzX25vbm1pbWljYWJsZV9hZGRpdGlvbmFsX2F1ZGlvIjpmYWxzZSwiaXNfY3JlYXRvcl9yZXF1ZXN0aW5nX21hc2h1cCI6ZmFsc2UsImlzX2xpZ2h0X3dlaWdodF9jaGVjayI6dHJ1ZSwiaXNfbGlnaHRfd2VpZ2h0X3JldXNlX2FsbG93ZWRfY2hlY2siOmZhbHNlLCJpc19waXZvdF9wYWdlX2F2YWlsYWJsZSI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOmZhbHNlLCJtYXNodXBfdHlwZSI6bnVsbCwibWFzaHVwc19hbGxvd2VkIjpmYWxzZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1heF9udW1fdmlzaWJsZV9wcmV2aWV3X2NvbW1lbnRzIjoyLCJtZWRpYV9uYW1lIjoicG9zdCIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjEsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIwIiwiYXVkaW9fdHlwZSI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6bnVsbH0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3JpZ2luYWxfaGVpZ2h0Ijo4MTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJvd25lciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwODY2MDM1NDgyLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkVscGlkYSBUb3V2ZSIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIxNjMwODc2ODY3IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzU1NjQ2NjA5MzgwMDY1NTAwOV8xNjMwODc2ODY3IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ3NTgyMDY0MV80MDU5MjIyMzU5MDAzNDBfMzM1NDU0OTE2NzUwMzkxNzY1MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPUJKNWpqZ0kxUzF3UTdrTnZnRWE4Y2lzJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQVEyUGxkQlNrZ0lpbF92ZWl4YVZTNmE2WlJnczFrX2ZtZzktMkplcjNsWVEmb2U9NjdBQkM2MUUmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoyLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJlbHBpZGFfdG91dmUifSwicGsiOjE4ODQyNjE1ODIwMTgyMDM2MjMsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiZmVlZCIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTUzODg0MTUwNiwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80MjQwNjEwOV8yODY3NjMyNTg1OTU0MzBfNTg4MjMwODA3Mjc5NzA3MjAwMl9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURneE1DNXpaSEl1WmpJNE9EVXVaR1ZtWVhWc2RGOXBiV0ZuWlNKOSZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9NndIM1cyejRDRGdRN2tOdmdHbmJMS3omX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU1UZzROREkyTVRVNE1qQXhPREl3TXpZeU13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ3BmWHNmbUw3QVZpSmpuYkhMbVMtM205VFJ1Z1JKc1NHNlJLRi1DOTU1N3cmb2U9NjdBQkQwRkImX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwODY2MDM1NDgyLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkVscGlkYSBUb3V2ZSIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIxNjMwODc2ODY3IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzU1NjQ2NjA5MzgwMDY1NTAwOV8xNjMwODc2ODY3IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ3NTgyMDY0MV80MDU5MjIyMzU5MDAzNDBfMzM1NDU0OTE2NzUwMzkxNzY1MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPUJKNWpqZ0kxUzF3UTdrTnZnRWE4Y2lzJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQVEyUGxkQlNrZ0lpbF92ZWl4YVZTNmE2WlJnczFrX2ZtZzktMkplcjNsWVEmb2U9NjdBQkM2MUUmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoyLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJlbHBpZGFfdG91dmUifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX21vZGlmeV9jYXJvdXNlbCI6ZmFsc2UsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNjA0MDQ3OTY5LCJjcmVhdGVkX2F0X3V0YyI6MTYwNDA0Nzk2OSwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzaHRhZ3MiOlsiI2hhbGxvd2VlbiIsIiNoYWxsb3dlZW5fY29zdHVtZSIsIiNoYWxsb3dlZW5fc25hY2tzIl0sImlkIjoyNDMxMjUzMDM3Nzg5MjMyODQwLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTc4NzU2ODMwNzA5MzU5NzciLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJUaGVyZSBhcmUganVzdCBzbyBjdXRlISEg8J+Og/CfpodcblxuI2hhbGxvd2VlblxuI2hhbGxvd2Vlbl9jb3N0dW1lXG4jaGFsbG93ZWVuX3NuYWNrcyIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0NDM4Nzc5MDExNDUsImZ1bGxfbmFtZSI6IiIsImlkIjoiNDM4NDkxNjY1OTYiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMjYzMzM3MjU3MzcyNTQzMjA4M180Mzg0OTE2NjU5NiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8yMzE3MzQzMzZfMTAyNTAzMDU3ODI1NjM4OF8yMzU2NDQ1NTU4MjEzNTg4NDM4X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9NldzWW5qa2lBeVlRN2tOdmdHXzNVdkYmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDVEwyWmF0aU5YR1lzaDRiMDBuUWhVeEFBbWZWTVVaMmdlZXhYSnZENXNrdyZvZT02N0FCRTNFMyZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoibGlmZS5ieV9hIn0sInVzZXJfaWQiOjQzODQ5MTY2NTk2fSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjYXJvdXNlbF9tZWRpYSI6W3siY2Fyb3VzZWxfcGFyZW50X2lkIjoiMjQzMTI1MzAzNzc4OTIzMjg0MF80Mzg0OTE2NjU5NiIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjI0MzEyNTMwMzQxNzM5MDM2MjNfNDM4NDkxNjY1OTYiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMjgwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjgxOTE0N184MjAzODc3NDg1MzgzMjVfNjQwMjAwMzc1MjYyNjExNjIyOF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNamd3ZURFeU9EQXVjMlJ5TG1ZeU9UTTFNQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9UTBhanE0VXFEbVFRN2tOdmdIb2k3Nl8mX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU1qUXpNVEkxTXpBek5ERTNNemt3TXpZeU13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDNoQUkwV2REeUpmUms5LXdVQ3hPdHhkNEV1RUtKWkRJZFRRRTFpUERWcHcmb2U9NjdBQkNFOTYmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTI4MH0seyJoZWlnaHQiOjQ4MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yOTM1MC0xNS8xMjI4MTkxNDdfODIwMzg3NzQ4NTM4MzI1XzY0MDIwMDM3NTI2MjYxMTYyMjhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3M0ODB4NDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qZ3dlREV5T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1RMGFqcTRVcURtUVE3a052Z0hvaTc2XyZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1USTFNekF6TkRFM016a3dNell5TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCU1ZYYkhVQ29DMHd1QUhzcHRrTDF0dFY1WmtsRXJQZnpsVk5pOEEwcmloQSZvZT02N0FCQ0U5NiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjo0ODB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEyODAsIm9yaWdpbmFsX3dpZHRoIjoxMjgwLCJwayI6MjQzMTI1MzAzNDE3MzkwMzYyMywicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTYwNDA0Nzk2OCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjkzNTAtMTUvMTIyODE5MTQ3XzgyMDM4Nzc0ODUzODMyNV82NDAyMDAzNzUyNjI2MTE2MjI4X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qZ3dlREV5T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1RMGFqcTRVcURtUVE3a052Z0hvaTc2XyZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1USTFNekF6TkRFM016a3dNell5TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEM2hBSTBXZER5SmZSazktd1VDeE90eGQ0RXVFS0paRElkVFFFMWlQRFZwdyZvZT02N0FCQ0U5NiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMjQzMTI1MzAzNzc4OTIzMjg0MF80Mzg0OTE2NjU5NiIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjI0MzEyNTMwMzQxNTcxMjYzMDlfNDM4NDkxNjY1OTYiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMjgwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMzAyODUwNl84MDU0NjMyNDY4OTg2MTZfMjY0MjA1NTE1NTM2NDIwMTE1Nl9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNamd3ZURFeU9EQXVjMlJ5TG1ZeU9UTTFNQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9VFpqV01YZXhhR3dRN2tOdmdHWl9YZUwmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU1qUXpNVEkxTXpBek5ERTFOekV5TmpNd09RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQzlNdkNNR2ItYWhpcWw4bnU4VkNPd3dtdUpUNzJMSTlETkNUbF9Gd1NsdVEmb2U9NjdBQkVBRTQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTI4MH0seyJoZWlnaHQiOjQ4MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yOTM1MC0xNS8xMjMwMjg1MDZfODA1NDYzMjQ2ODk4NjE2XzI2NDIwNTUxNTUzNjQyMDExNTZfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3M0ODB4NDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qZ3dlREV5T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1UWmpXTVhleGFHd1E3a052Z0daX1hlTCZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1USTFNekF6TkRFMU56RXlOak13T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBRlBVdUxDQUtjeXlqYzZGd0E3U0tieFl2T1JpLTJ4bi1hODB2QU5mejlLQSZvZT02N0FCRUFFNCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjo0ODB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEyODAsIm9yaWdpbmFsX3dpZHRoIjoxMjgwLCJwayI6MjQzMTI1MzAzNDE1NzEyNjMwOSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTYwNDA0Nzk2OCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjkzNTAtMTUvMTIzMDI4NTA2XzgwNTQ2MzI0Njg5ODYxNl8yNjQyMDU1MTU1MzY0MjAxMTU2X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qZ3dlREV5T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1UWmpXTVhleGFHd1E3a052Z0daX1hlTCZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1USTFNekF6TkRFMU56RXlOak13T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDOU12Q01HYi1haGlxbDhudThWQ093d211SlQ3MkxJOUROQ1RsX0Z3U2x1USZvZT02N0FCRUFFNCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMjQzMTI1MzAzNzc4OTIzMjg0MF80Mzg0OTE2NjU5NiIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjI0MzEyNTMwMzQ3NTI2NjIxNjBfNDM4NDkxNjY1OTYiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMjgwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjgyNTY1NV8xODYzNjg2NzY0NDkxODRfMTYxOTUwNTk2MTk5NjczNTQyX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qZ3dlREV5T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1SSXFFbWVxUnNuY1E3a052Z0VEY2doVyZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1USTFNekF6TkRjMU1qWTJNakUyTUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCTjAySTlPSW1lSEJibHV2YmlGek4xNmpTSGM5VXFtS04xeUdrUW10bGdGQSZvZT02N0FCRTNCOSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMjgwfSx7ImhlaWdodCI6NDgwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjgyNTY1NV8xODYzNjg2NzY0NDkxODRfMTYxOTUwNTk2MTk5NjczNTQyX24uanBnP3N0cD1kc3QtanBnX2UzNV9zNDgweDQ4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNamd3ZURFeU9EQXVjMlJ5TG1ZeU9UTTFNQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9UklxRW1lcVJzbmNRN2tOdmdFRGNnaFcmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU1qUXpNVEkxTXpBek5EYzFNalkyTWpFMk1BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQW1hWTM0Y2FSb0JGOU5CRFhnSnpXY3A2Z2p6TVBSQld5YkZFTjFmQk4wb3cmb2U9NjdBQkUzQjkmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6NDgwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMjgwLCJvcmlnaW5hbF93aWR0aCI6MTI4MCwicGsiOjI0MzEyNTMwMzQ3NTI2NjIxNjAsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE2MDQwNDc5NjgsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjgyNTY1NV8xODYzNjg2NzY0NDkxODRfMTYxOTUwNTk2MTk5NjczNTQyX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qZ3dlREV5T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1SSXFFbWVxUnNuY1E3a052Z0VEY2doVyZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1USTFNekF6TkRjMU1qWTJNakUyTUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCTjAySTlPSW1lSEJibHV2YmlGek4xNmpTSGM5VXFtS04xeUdrUW10bGdGQSZvZT02N0FCRTNCOSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMjQzMTI1MzAzNzc4OTIzMjg0MF80Mzg0OTE2NjU5NiIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjI0MzEyNTMwMzQxODIxNzczMTlfNDM4NDkxNjY1OTYiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMjgwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjkxMjg0OV8xMjc5NDQyNDMyNDM1NTI1Xzg0NDExMTE5ODMwOTM3NDM0MDNfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpnd2VERXlPREF1YzJSeUxtWXlPVE0xTUM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPXVxcGlLMnVKb0pNUTdrTnZnRnVjNnFWJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NalF6TVRJMU16QXpOREU0TWpFM056TXhPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFoSzFmMXFaXzJnMDZSNjZPVElhT1ptMUNCWjhTMXpvWHRsQ2FrVE1CbTdRJm9lPTY3QUJDQTlEJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEyODB9LHsiaGVpZ2h0Ijo0ODAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjkzNTAtMTUvMTIyOTEyODQ5XzEyNzk0NDI0MzI0MzU1MjVfODQ0MTExMTk4MzA5Mzc0MzQwM19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfczQ4MHg0ODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpnd2VERXlPREF1YzJSeUxtWXlPVE0xTUM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPXVxcGlLMnVKb0pNUTdrTnZnRnVjNnFWJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NalF6TVRJMU16QXpOREU0TWpFM056TXhPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNWWXJjaDhYdENiay1oOUJ3a01HdU0wNkFaMFBqTXRONFE2U0RoY1RHTUZRJm9lPTY3QUJDQTlEJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjQ4MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTI4MCwib3JpZ2luYWxfd2lkdGgiOjEyODAsInBrIjoyNDMxMjUzMDM0MTgyMTc3MzE5LCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNjA0MDQ3OTY4LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yOTM1MC0xNS8xMjI5MTI4NDlfMTI3OTQ0MjQzMjQzNTUyNV84NDQxMTExOTgzMDkzNzQzNDAzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qZ3dlREV5T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz11cXBpSzJ1Sm9KTVE3a052Z0Z1YzZxViZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1USTFNekF6TkRFNE1qRTNOek14T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBaEsxZjFxWl8yZzA2UjY2T1RJYU9abTFDQlo4UzF6b1h0bENha1RNQm03USZvZT02N0FCQ0E5RCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119XSwiY2Fyb3VzZWxfbWVkaWFfY291bnQiOjQsImNhcm91c2VsX21lZGlhX2lkcyI6WzI0MzEyNTMwMzQxNzM5MDM2MjMsMjQzMTI1MzAzNDE1NzEyNjMwOSwyNDMxMjUzMDM0NzUyNjYyMTYwLDI0MzEyNTMwMzQxODIxNzczMTldLCJjYXJvdXNlbF9tZWRpYV9wZW5kaW5nX3Bvc3RfY291bnQiOjAsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiQ0c5aThHc2hEN0kiLCJjb21tZW50X2NvdW50Ijo4LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY29tbWVudF90aHJlYWRpbmdfZW5hYmxlZCI6dHJ1ZSwiY29tbWVyY2VfaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6IiIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTY1MDk5MTI5OTQ5Mjg2LCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxNzg3NTY4MzA2NzkzNTk3NyIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX21vcmVfY29tbWVudHMiOnRydWUsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMjQzMTI1MzAzNzc4OTIzMjg0MF80Mzg0OTE2NjU5NiIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMjgwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjgxOTE0N184MjAzODc3NDg1MzgzMjVfNjQwMjAwMzc1MjYyNjExNjIyOF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNamd3ZURFeU9EQXVjMlJ5TG1ZeU9UTTFNQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9UTBhanE0VXFEbVFRN2tOdmdIb2k3Nl8mX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU1qUXpNVEkxTXpBek5ERTNNemt3TXpZeU13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDNoQUkwV2REeUpmUms5LXdVQ3hPdHhkNEV1RUtKWkRJZFRRRTFpUERWcHcmb2U9NjdBQkNFOTYmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTI4MH0seyJoZWlnaHQiOjQ4MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yOTM1MC0xNS8xMjI4MTkxNDdfODIwMzg3NzQ4NTM4MzI1XzY0MDIwMDM3NTI2MjYxMTYyMjhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3M0ODB4NDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qZ3dlREV5T0RBdWMyUnlMbVl5T1RNMU1DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1RMGFqcTRVcURtUVE3a052Z0hvaTc2XyZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpRek1USTFNekF6TkRFM016a3dNell5TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCU1ZYYkhVQ29DMHd1QUhzcHRrTDF0dFY1WmtsRXJQZnpsVk5pOEEwcmloQSZvZT02N0FCQ0U5NiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjo0ODB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdW5pZmllZF92aWRlbyI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo0NiwibWF4X251bV92aXNpYmxlX3ByZXZpZXdfY29tbWVudHMiOjIsIm1lZGlhX25hbWUiOiJhbGJ1bSIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjgsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIwIiwiYXVkaW9fdHlwZSI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6bnVsbH0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3Blbl9jYXJvdXNlbF9zdWJtaXNzaW9uX3N0YXRlIjoiY2xvc2VkIiwib3JpZ2luYWxfaGVpZ2h0Ijo2MTIsIm9yaWdpbmFsX3dpZHRoIjo2MTIsIm93bmVyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjoyLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0NDM4Nzc5MDExNDUsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjQzODQ5MTY2NTk2IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMjYzMzM3MjU3MzcyNTQzMjA4M180Mzg0OTE2NjU5NiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8yMzE3MzQzMzZfMTAyNTAzMDU3ODI1NjM4OF8yMzU2NDQ1NTU4MjEzNTg4NDM4X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9NldzWW5qa2lBeVlRN2tOdmdHXzNVdkYmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDVEwyWmF0aU5YR1lzaDRiMDBuUWhVeEFBbWZWTVVaMmdlZXhYSnZENXNrdyZvZT02N0FCRTNFMyZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImxpZmUuYnlfYSJ9LCJwayI6MjQzMTI1MzAzNzc4OTIzMjg0MCwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9jb250YWluZXIiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE2MDQwNDc5NjksInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI5MzUwLTE1LzEyMjgxOTE0N184MjAzODc3NDg1MzgzMjVfNjQwMjAwMzc1MjYyNjExNjIyOF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNamd3ZURFeU9EQXVjMlJ5TG1ZeU9UTTFNQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9UTBhanE0VXFEbVFRN2tOdmdIb2k3Nl8mX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU1qUXpNVEkxTXpBek5ERTNNemt3TXpZeU13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDNoQUkwV2REeUpmUms5LXdVQ3hPdHhkNEV1RUtKWkRJZFRRRTFpUERWcHcmb2U9NjdBQkNFOTYmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MiwiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDQzODc3OTAxMTQ1LCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IiIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiI0Mzg0OTE2NjU5NiIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjI2MzMzNzI1NzM3MjU0MzIwODNfNDM4NDkxNjY1OTYiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMjMxNzM0MzM2XzEwMjUwMzA1NzgyNTYzODhfMjM1NjQ0NTU1ODIxMzU4ODQzOF9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPTZXc1luamtpQXlZUTdrTnZnR18zVXZGJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ1RMMlphdGlOWEdZc2g0YjAwblFoVXhBQW1mVk1VWjJnZWV4WEp2RDVza3cmb2U9NjdBQkUzRTMmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJsaWZlLmJ5X2EifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE1NzIyNzY0MDAsImNyZWF0ZWRfYXRfdXRjIjoxNTcyMjc2NDAwLCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNodGFncyI6WyIjbW9uZGF5bW9ybmluZyIsIiNoYXBweW1vbmRheSIsIiNtb25kYXltb29kIiwiI3Jpb2dyYW5kZXN1cGVybWFya2V0IiwiI2NhbnV0aWxsb3N1cGVybWFya2V0IiwiI2dyb2NlcnlzdG9yZSIsIiNjYW51dGlsbG9idXNpbmVzcyIsIiNpYW1lbHBhc28iLCIjZWxwYXNvdHgiLCIjaXRzYWxsZ29vZGVwIiwiI3JlY2lwZXNob3BwaW5nbGlzdCIsIiNoYWxsb3dlZW5zbmFja2lkZWFzIiwiI3NuYWNraWRlYXNmb3JraWRzIiwiI2hhbGxvd2VlbnRpbWUiLCIjaGFsbG93ZWVucGFydHlpZGVhcyIsIiNoYWxsb3dlZW5fY3VwY2FrZXMiLCIjaGFsbG93ZWVuX3NuYWNrcyIsIiNzbmFja3Nmb3JoYWxsb3dlZW4iXSwiaWQiOjIxNjQ3MzM3NTM2MzM0NTUxNzIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbXSwicGsiOiIxNzg0ODQxOTc5MzcxODM2OSIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IkhhbGxvd2VlbiBpcyBqdXN0IGFyb3VuZCB0aGUgY29ybmVyIGFuZCB5b3UgY291bGQgY3JlYXRlIHNvbWUgZnVuIHBhcnR5IHNuYWNrcyB3aXRoIHRoZSBraWRzIG9yIGZvciB5b3VyIGd1ZXN0cy4gXG5Db21lIGluIHRvIFJpbyBHcmFuZGUgU3VwZXJtYXJrZXQgYW5kIGdldCB5b3VyIGluZ3JlZGllbnRzIGZvciBhbGwgdGhlIHNwb29rdGFjdWxhciBzbmFja3MuIEJ1eSBleHRyYSBjYW5keSBmb3IgdGhlIHRyaWNrLW9yLXRyZWF0ZXJzLlxuXG5TaHVyZmluZSBDYWtlIE1peCBBU1NPUlRFRCAxNi41IE9aLiA3MMKiXG5NYXpvbGEgQ29va2luZyBPaWwgU0VMRUNUIFZBUklFVFkgNDAgT1ouIDIgRk9SICQ1XG5MYXnigJlzIG9yIFdhdnkgTGF54oCZcyAyIEZPUiAkNFxuQnVmZmFsbyBTdHlsZSBXaW5nIFNlY3Rpb25zICQzLjM4IExCIC5cbi5cbi5cbi5cbi5cbi5cbi5cblxuI21vbmRheW1vcm5pbmcgI2hhcHB5bW9uZGF5ICNtb25kYXltb29kICNyaW9ncmFuZGVzdXBlcm1hcmtldCAjY2FudXRpbGxvc3VwZXJtYXJrZXQgI2dyb2NlcnlzdG9yZSAjY2FudXRpbGxvYnVzaW5lc3MgI2lhbWVscGFzbyAjZWxwYXNvdHggI2l0c2FsbGdvb2RlcCAjcmVjaXBlc2hvcHBpbmdsaXN0ICNoYWxsb3dlZW5zbmFja2lkZWFzICNzbmFja2lkZWFzZm9ya2lkcyAjaGFsbG93ZWVudGltZSAjaGFsbG93ZWVucGFydHlpZGVhcyAjaGFsbG93ZWVuX2N1cGNha2VzICNoYWxsb3dlZW5fc25hY2tzICNzbmFja3Nmb3JoYWxsb3dlZW4iLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDA2MTE1Mzg5NzAxLCJmdWxsX25hbWUiOiJSaW8gR3JhbmRlIFN1cGVybWFya2V0IiwiaWQiOiI2MDc3NjExODQ2IiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjE2MTEwNTc0Nzc5MDA3MDE0OTJfNjA3NzYxMTg0NiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8yMTkwOTUwNV8yMDEyMDY0NTI1NjkzNTY2XzM0NTUxMTEzMzkxOTI2MTQ5MTJfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1teUEzYzZKaktja1E3a052Z0hpSHdmQiZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUF4N2RTWnFjRG1uZW1MZ0RhV1I0WWhWRlJ6OWJsQlAtbGNaVTJnYmtUaUJRJm9lPTY3QUJENkQzJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJyaW9ncmFuZGVzdXBlcm1hcmtldCJ9LCJ1c2VyX2lkIjo2MDc3NjExODQ2fSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkI0S3JlRXlucnhFIiwiY29tbWVudF9jb3VudCI6MCwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNvbW1lbnRfdGhyZWFkaW5nX2VuYWJsZWQiOnRydWUsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTU3MjI3NjM5NDU0LCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxNzg0ODQxOTc3ODcxODM2OSIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfYXVkaW8iOnRydWUsImhhc19oaWdoX3Jpc2tfZ2VuX2FpX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJoYXNfbGlrZWQiOmZhbHNlLCJoYXNfbW9yZV9jb21tZW50cyI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMjE2NDczMzc1MzYzMzQ1NTE3Ml82MDc3NjExODQ2IiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ4MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzcxODg2NTE0XzU0OTU2NDA5MjI1MzQ5MV8xMjk1MzI5MzUwMTY3OTMyMDMwX24uanBnP3N0cD1kc3QtanBnX2UxNV9zNDgweDQ4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0TnpJd0xuTmtjaTVtTWpnNE5TNWtaV1poZFd4MFgyTnZkbVZ5WDJaeVlXMWxJbjAmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTExJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPXJDNmVDdEVuS2IwUTdrTnZnSG10aUpwJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NakUyTkRjek16YzFNell6TXpRMU5URTNNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFxWkpyR1pWdDdxWlA5YlByX09sekZfclVSUThCZHRHTGZLcWRLcTdNTzhnJm9lPTY3QUJDNkVCJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjQ4MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6ImFwcHJvdmVkIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdW5pZmllZF92aWRlbyI6ZmFsc2UsImlzX3ZpZGVvIjp0cnVlLCJsYXQiOjMxLjkxOCwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo4LCJsaWtlcnMiOlt7ImZ1bGxfbmFtZSI6InllZ2FuYW0uMjAwMyIsImlkIjoiNDcwMDUxNjIzODUiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwayI6NDcwMDUxNjIzODUsInByb2ZpbGVfcGljX2lkIjoiMzM0NjIzMjQ1NzE1MzMwMzYzMF80NzAwNTE2MjM4NSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80Mzc1MjM4MjVfNzc4ODE4NDkwODQ4MDIzXzkyMjA0NTkzNTA4OTc5NzYyNDhfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1HSUZGOVIxaHhLd1E3a052Z0ZPM3dWRSZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUJHMi1xeHdtZzF5enNmd28tOTRpdjVMaVIyd3Q0Yk1TN1c5UlpxbU5lY3NRJm9lPTY3QUJFQ0VEJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJ5ZWdhbmFtLjIwMDMifSx7ImZ1bGxfbmFtZSI6Ik1hcmlhIEJhbGxlbmdlciIsImlkIjoiMjI4NTA1NzA5OCIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInBrIjoyMjg1MDU3MDk4LCJwcm9maWxlX3BpY19pZCI6IjM1MTY4ODkwODI5MzM3ODQ0ODRfMjI4NTA1NzA5OCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80Njk2MTkwNjNfMjQ5MTM3NjQ1MTA1MjM5NF84MzI2MTY3NzQ0NDI3MjU2NDQ3X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9QVgxbWk5ZzFwMWNRN2tOdmdFUXJhTlYmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCT2pVcjVLejdLSjhVSW1OcjIxYWZ0TEd0R0ZTT3g1V05pNnpIakh0Q2Z4QSZvZT02N0FCQzE4NiZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiYmFsbGVuZ2VyX21hcmlhIn0seyJmdWxsX25hbWUiOiJIYXplbGV5ZXrimaEiLCJpZCI6IjI5NjY4MzAwMDIiLCJpc19wcml2YXRlIjp0cnVlLCJpc192ZXJpZmllZCI6ZmFsc2UsInBrIjoyOTY2ODMwMDAyLCJwcm9maWxlX3BpY19pZCI6IjIzODcyMzYyMTQ4NzUyNzIyODdfMjk2NjgzMDAwMiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8xMTg1NjYwMDJfNzQ1MDI0NDY5NjUxNjg5XzY4ODgxMjU1ODI4NDE2NTUyMDRfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz0wRmI3SDducXlYUVE3a052Z0htQmo3YiZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFEa3NrX0V1dU4xWXZkM3NZbi1MZW9GSnhQNWl0S0hSMTYzcTJoNHlYVzhnJm9lPTY3QUJERkVBJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJteW1pcmFjbGVzXzc2In0seyJmdWxsX25hbWUiOiJBJlYgQ29tcHV0ZXIgU2VydmljZXMiLCJpZCI6IjIwNzE3MTEwMjcxIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicGsiOjIwNzE3MTEwMjcxLCJwcm9maWxlX3BpY19pZCI6IjIxMzcyMzU3MDM3Nzg5ODkyMDBfMjA3MTcxMTAyNzEiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNzA3MDQ5MjNfMzY3Mzg3Njc0MjE1ODcwXzQ2MTU2Mzk3MjkwOTY4ODQyMjRfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1FTUhUWmhNckVKOFE3a052Z0dVbENBSSZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFXbjBSdzBEano1NDRJN0xPd3pvVXZ0ZkFQWG9Tczc1b3ZjVHpSS1U2UTdnJm9lPTY3QUJFMUNBJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJhdmNvbXB1dGVyc2VydmljZXNlcCJ9LHsiZnVsbF9uYW1lIjoidXJiYW5hcnQ5MTUiLCJpZCI6IjEwOTM3Njk2MjkwIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicGsiOjEwOTM3Njk2MjkwLCJwcm9maWxlX3BpY19pZCI6IjI1OTMzOTY5MDg5MjQyODgwNThfMTA5Mzc2OTYyOTAiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMTk4ODE1NzM0XzE5MzM0MDAzMjU2NzA0Nl8xODIyNjQ0NzU0MzUzNjAwMjc0X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVLZGktSTZRQjhTSFdCN0JMRDJmMUNxVTdCeVZSazhMZnJBejBmQy12cUVnQXJYRkp3dkRNWGVmc2VnUl9OR2pBJl9uY19vaGM9X1R4cGtqSEIxV3NRN2tOdmdIOTBLWEsmX25jX2dpZD0xMzkzNDA3NTJmN2M0MzQyOGE5MThiZTk5NDU5ZmNlOSZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlEUk9pcGF5WWlCNFc3aTNDdFF6QllpdTlyQVVmeWp1ZTd3Yl9jSVFUeFo2QSZvZT02N0FCRUUzNiZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoidXJiYW5hcnQ5MTUifSx7ImZ1bGxfbmFtZSI6Ik9uIHRoZSBoYXBweSBzaWRlIG9mIGxpZmXinaTvuI8iLCJpZCI6IjEyMTIzMTQyMDUxIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicGsiOjEyMTIzMTQyMDUxLCJwcm9maWxlX3BpY19pZCI6IjIzMTIyMDEwNzc0OTEyNTA1MTRfMTIxMjMxNDIwNTEiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvOTc4NzU2NzlfMjkxMzM3NTA4NTQ4OTMzXzM3NTA0MTMxODU3MjM2NjIzMzZfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1wNXR6OTk0TjFWc1E3a052Z0hGTWctUCZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWURXaEVXYWdGNWViR09XR3lRRk0ybGdScGRGOGhySHFKVE5COGg4YnhVenFRJm9lPTY3QUJDREQ1Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJoaWtvZm9vZHMifSx7ImZ1bGxfbmFtZSI6IkNlY2kgQ2FzdGlsbG8iLCJpZCI6Ijg0NzcxMDIyNjYiLCJpc19wcml2YXRlIjp0cnVlLCJpc192ZXJpZmllZCI6ZmFsc2UsInBrIjo4NDc3MTAyMjY2LCJwcm9maWxlX3BpY19pZCI6IjE4NTIwMTM5OTU0NzgxMjIzOTNfODQ3NzEwMjI2NiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8zOTMyNzkyNl8xODk3ODA0NjQ2OTYyOTg1XzE1Mjc2NDYxNzQxMzgzMzUyMzJfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1nbDkwV0pVeXpJNFE3a052Z0hiSmlyOSZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUMxZWo4Snc3SHBqbkJXc2tpZHE5OXhIa2pTZ1J4MmplZmwyZWw3dUpIemh3Jm9lPTY3QUJFN0FGJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJjYXN0bGV2bmM4NiJ9XSwibG5nIjotMTA2LjYsImxvY2F0aW9uIjp7ImFkZHJlc3MiOiIiLCJjaXR5IjoiIiwiZXh0ZXJuYWxfc291cmNlIjoiZmFjZWJvb2tfcGxhY2VzIiwiZmFjZWJvb2tfcGxhY2VzX2lkIjoxMTMxNjg4NDIwMzA2NTQsImxhdCI6MzEuOTE4LCJsbmciOi0xMDYuNiwibmFtZSI6IkNhbnV0aWxsbywgVGV4YXMiLCJwayI6MjM3Mzk4ODMzLCJzaG9ydF9uYW1lIjoiQ2FudXRpbGxvIn0sIm1hc2h1cF9pbmZvIjp7ImNhbl90b2dnbGVfbWFzaHVwc19hbGxvd2VkIjpmYWxzZSwiZm9ybWF0dGVkX21hc2h1cHNfY291bnQiOm51bGwsImhhc19iZWVuX21hc2hlZF91cCI6ZmFsc2UsImhhc19ub25taW1pY2FibGVfYWRkaXRpb25hbF9hdWRpbyI6ZmFsc2UsImlzX2NyZWF0b3JfcmVxdWVzdGluZ19tYXNodXAiOmZhbHNlLCJpc19saWdodF93ZWlnaHRfY2hlY2siOnRydWUsImlzX2xpZ2h0X3dlaWdodF9yZXVzZV9hbGxvd2VkX2NoZWNrIjpmYWxzZSwiaXNfcGl2b3RfcGFnZV9hdmFpbGFibGUiOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjpmYWxzZSwibWFzaHVwX3R5cGUiOm51bGwsIm1hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsIm5vbl9wcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOjAsIm9yaWdpbmFsX21lZGlhIjpudWxsLCJwcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOm51bGx9LCJtYXhfbnVtX3Zpc2libGVfcHJldmlld19jb21tZW50cyI6MiwibWVkaWFfbmFtZSI6InJlZWwiLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjoyLCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMCIsImF1ZGlvX3R5cGUiOm51bGwsIm11c2ljX2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOm51bGx9LCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoxLCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9yaWdpbmFsX2hlaWdodCI6NzIwLCJvcmlnaW5hbF93aWR0aCI6NzIwLCJvd25lciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDA2MTE1Mzg5NzAxLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IlJpbyBHcmFuZGUgU3VwZXJtYXJrZXQiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiNjA3NzYxMTg0NiIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjE2MTEwNTc0Nzc5MDA3MDE0OTJfNjA3NzYxMTg0NiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8yMTkwOTUwNV8yMDEyMDY0NTI1NjkzNTY2XzM0NTUxMTEzMzkxOTI2MTQ5MTJfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1teUEzYzZKaktja1E3a052Z0hpSHdmQiZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUF4N2RTWnFjRG1uZW1MZ0RhV1I0WWhWRlJ6OWJsQlAtbGNaVTJnYmtUaUJRJm9lPTY3QUJENkQzJl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoicmlvZ3JhbmRlc3VwZXJtYXJrZXQifSwicGsiOjIxNjQ3MzM3NTM2MzM0NTUxNzIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiZmVlZCIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTU3MjI3NjQwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS83MTg4NjUxNF81NDk1NjQwOTIyNTM0OTFfMTI5NTMyOTM1MDE2NzkzMjAzMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfczQ4MHg0ODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE56SXdMbk5rY2k1bU1qZzROUzVrWldaaGRXeDBYMk52ZG1WeVgyWnlZVzFsSW4wJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZfbmNfb2M9UTZjWjJBRUtkaS1JNlFCOFNIV0I3QkxEMmYxQ3FVN0J5VlJrOExmckF6MGZDLXZxRWdBclhGSnd2RE1YZWZzZWdSX05HakEmX25jX29oYz1yQzZlQ3RFbktiMFE3a052Z0htdGlKcCZfbmNfZ2lkPTEzOTM0MDc1MmY3YzQzNDI4YTkxOGJlOTk0NTlmY2U5JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TWpFMk5EY3pNemMxTXpZek16UTFOVEUzTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBcVpKckdaVnQ3cVpQOWJQcl9PbHpGX3JVUlE4QmR0R0xmS3FkS3E3TU84ZyZvZT02N0FCQzZFQiZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOltdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDYxMTUzODk3MDEsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiUmlvIEdyYW5kZSBTdXBlcm1hcmtldCIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiI2MDc3NjExODQ2IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMTYxMTA1NzQ3NzkwMDcwMTQ5Ml82MDc3NjExODQ2IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzIxOTA5NTA1XzIwMTIwNjQ1MjU2OTM1NjZfMzQ1NTExMTMzOTE5MjYxNDkxMl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFS2RpLUk2UUI4U0hXQjdCTEQyZjFDcVU3QnlWUms4TGZyQXowZkMtdnFFZ0FyWEZKd3ZETVhlZnNlZ1JfTkdqQSZfbmNfb2hjPW15QTNjNkpqS2NrUTdrTnZnSGlId2ZCJl9uY19naWQ9MTM5MzQwNzUyZjdjNDM0MjhhOTE4YmU5OTQ1OWZjZTkmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQXg3ZFNacWNEbW5lbUxnRGFXUjRZaFZGUno5YmxCUC1sY1pVMmdia1RpQlEmb2U9NjdBQkQ2RDMmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJyaW9ncmFuZGVzdXBlcm1hcmtldCJ9LCJ2aWRlb19jb2RlYyI6ImF2YzEuNGQ0MDFmIiwidmlkZW9fZHVyYXRpb24iOjE1LjAsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W10sInZpZGVvX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg0L0FRTWY5NU5vM1dBR0lLc1llVWhveFY3cnNnTVRxSE9xVE5qa2ZVd2dfOFM4eVJoT1VuTWtOSTJvNkRpNVZxTktvUGtrcGtjaW5rR25ub3Rfc1lMbTJEWmMxWkdIQ0xsLW5HbmtaTGMubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWTBNRFl3TXpJMk9EWXhPVEUyT1RRc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVHUlVWRUxrTXpMamN5TUM1a1lYTm9YMkpoYzJWc2FXNWxYekZmZGpFaWZRJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9QWRnRzlIZ1dXZ28tQ1pJdTYxclNES19pNzcwdm4zZGh6cVh5Rl9Dck9MdkpCQmhhZEtITmhuc01LcnRWV1JqdUFNWSZ2cz0xYjNlYmIxYmI3NzYyMTA2Jl9uY192cz1IQmtzRlFJWVRHbG5YMkpoWTJ0bWFXeHNYM1JwYldWc2FXNWxYM1p2WkM4eE1UUkdOVUkxUmpjd05qbEVORUV4UWtaR01VTkRORVUwTUVFMk5UWTRNbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZElkMVY0UW1FMmRWOWlSVWxFYjBaQlMzYzNNRUV6ZEMxSVVrdGljR3QzUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcHpSOE9xV2tPRVdGUUlvQWtNekxCZEFMZ0FBQUFBQUFCZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxNmdjQSZjY2I9OS00Jm9oPTAwX0FZQ0FwMGVxelpIU1QzSDBqV1BFZFRDVUVBODRPMVEyeUtsQWJBMFRVMDZVUncmb2U9NjdBN0RCMzMmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjo0ODQwMDEsImhlaWdodCI6NzIwLCJpZCI6IjMzNTQ4NTY4MjM3NzQ4MXYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg0L0FRTWY5NU5vM1dBR0lLc1llVWhveFY3cnNnTVRxSE9xVE5qa2ZVd2dfOFM4eVJoT1VuTWtOSTJvNkRpNVZxTktvUGtrcGtjaW5rR25ub3Rfc1lMbTJEWmMxWkdIQ0xsLW5HbmtaTGMubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWTBNRFl3TXpJMk9EWXhPVEUyT1RRc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVHUlVWRUxrTXpMamN5TUM1a1lYTm9YMkpoYzJWc2FXNWxYekZmZGpFaWZRJl9uY19odD1zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9QWRnRzlIZ1dXZ28tQ1pJdTYxclNES19pNzcwdm4zZGh6cVh5Rl9Dck9MdkpCQmhhZEtITmhuc01LcnRWV1JqdUFNWSZ2cz0xYjNlYmIxYmI3NzYyMTA2Jl9uY192cz1IQmtzRlFJWVRHbG5YMkpoWTJ0bWFXeHNYM1JwYldWc2FXNWxYM1p2WkM4eE1UUkdOVUkxUmpjd05qbEVORUV4UWtaR01VTkRORVUwTUVFMk5UWTRNbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZElkMVY0UW1FMmRWOWlSVWxFYjBaQlMzYzNNRUV6ZEMxSVVrdGljR3QzUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcHpSOE9xV2tPRVdGUUlvQWtNekxCZEFMZ0FBQUFBQUFCZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxNmdjQSZjY2I9OS00Jm9oPTAwX0FZQ0FwMGVxelpIU1QzSDBqV1BFZFRDVUVBODRPMVEyeUtsQWJBMFRVMDZVUncmb2U9NjdBN0RCMzMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6NzIwfSx7ImJhbmR3aWR0aCI6NDg0MDAxLCJoZWlnaHQiOjcyMCwiaWQiOiIzMzU0ODU2ODIzNzc0ODF2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204NC9BUU1mOTVObzNXQUdJS3NZZVVob3hWN3JzZ01UcUhPcVROamtmVXdnXzhTOHlSaE9Vbk1rTkkybzZEaTVWcU5Lb1Bra3BrY2lua0dubm90X3NZTG0yRFpjMVpHSENMbC1uR25rWkxjLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalkwTURZd016STJPRFl4T1RFMk9UUXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1R1JVVkVMa016TGpjeU1DNWtZWE5vWDJKaGMyVnNhVzVsWHpGZmRqRWlmUSZfbmNfaHQ9c2NvbnRlbnQtYmVyMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPUFkZ0c5SGdXV2dvLUNaSXU2MXJTREtfaTc3MHZuM2RoenFYeUZfQ3JPTHZKQkJoYWRLSE5obnNNS3J0VldSanVBTVkmdnM9MWIzZWJiMWJiNzc2MjEwNiZfbmNfdnM9SEJrc0ZRSVlUR2xuWDJKaFkydG1hV3hzWDNScGJXVnNhVzVsWDNadlpDOHhNVFJHTlVJMVJqY3dOamxFTkVFeFFrWkdNVU5ETkVVME1FRTJOVFk0TWw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRJZDFWNFFtRTJkVjlpUlVsRWIwWkJTM2MzTUVFemRDMUlVa3RpY0d0M1FVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnB6UjhPcVdrT0VXRlFJb0FrTXpMQmRBTGdBQUFBQUFBQmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMTZnY0EmY2NiPTktNCZvaD0wMF9BWUNBcDBlcXpaSFNUM0gwaldQRWRUQ1VFQTg0TzFRMnlLbEFiQTBUVTA2VVJ3Jm9lPTY3QTdEQjMzJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjQ4NDAwMSwiaGVpZ2h0Ijo3MjAsImlkIjoiMzM1NDg1NjgyMzc3NDgxdiIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1iZXIxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODQvQVFNZjk1Tm8zV0FHSUtzWWVVaG94Vjdyc2dNVHFIT3FUTmprZlV3Z184Uzh5UmhPVW5Na05JMm82RGk1VnFOS29Qa2twa2NpbmtHbm5vdF9zWUxtMkRaYzFaR0hDTGwtbkdua1pMYy5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZME1EWXdNekkyT0RZeE9URTJPVFFzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNUdSVVZFTGtNekxqY3lNQzVrWVhOb1gySmhjMlZzYVc1bFh6RmZkakVpZlEmX25jX2h0PXNjb250ZW50LWJlcjEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1BZGdHOUhnV1dnby1DWkl1NjFyU0RLX2k3NzB2bjNkaHpxWHlGX0NyT0x2SkJCaGFkS0hOaG5zTUtydFZXUmp1QU1ZJnZzPTFiM2ViYjFiYjc3NjIxMDYmX25jX3ZzPUhCa3NGUUlZVEdsblgySmhZMnRtYVd4c1gzUnBiV1ZzYVc1bFgzWnZaQzh4TVRSR05VSTFSamN3TmpsRU5FRXhRa1pHTVVORE5FVTBNRUUyTlRZNE1sOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSWQxVjRRbUUyZFY5aVJVbEViMFpCUzNjM01FRXpkQzFJVWt0aWNHdDNRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpwelI4T3FXa09FV0ZRSW9Ba016TEJkQUxnQUFBQUFBQUJnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjE2Z2NBJmNjYj05LTQmb2g9MDBfQVlDQXAwZXF6WkhTVDNIMGpXUEVkVENVRUE4NE8xUTJ5S2xBYkEwVFUwNlVSdyZvZT02N0E3REIzMyZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9XX1dLCJ0b3RhbCI6MTB9LCJwYWdpbmF0aW9uX3Rva2VuIjoiSEUxbEJCc3BDUlpWWlZSV2ZRRU1FUnhBTFVBWkV3RkhCUTVHWjFSU2ZSb2NXaGtUT2o0QlV4WkdHazFSUmxRT2ZRQWNUQWRlSmp3V0V6TUJRUVJKQXdFUUNoSkdQbDR4UndBWEhRWmJQRlFVZlJBS1NnTmZYaFJCQUVNV0ZSa0hQRllRT2cxRlVrNWVVRHdMRTFVV1hCc1hFQUliYlFsS1RFcENXMzBNRVNkR0FFWUkifQ==', 'headers': {'via': '1.1 google', 'date': 'Fri, 07 Feb 2025 13:10:35 GMT', 'vary': 'Accept-Encoding', 'server': 'RapidAPI-1.2.8', 'alt-svc': 'h3=\\\":443\\\"; ma=2592000,h3-29=\\\":443\\\"; ma=2592000', 'connection': 'keep-alive', 'content-type': 'application/json', 'x-request-id': 'YrT8XhojQfuqnp7P57VbNw', 'content-encoding': 'gzip', 'transfer-encoding': 'chunked', 'x-rapidapi-region': 'AWS - us-east-1', 'x-rapidapi-version': '1.2.8', 'x-rapidapi-request-id': 'abe75f2b0f5c856fa3e74a56aae69f381d8e65a1f41aa243defaf6c91e4218df', 'x-ratelimit-requests-limit': '500', 'x-ratelimit-requests-reset': '563284', 'x-ratelimit-requests-remaining': '259', 'x-ratelimit-rapid-free-plans-hard-limit-limit': '500000', 'x-ratelimit-rapid-free-plans-hard-limit-reset': '563284', 'x-ratelimit-rapid-free-plans-hard-limit-remaining': '499993'}, 'status_code': 200}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'summary': [{'code': 'DByK3vHglSI', 'caption': 'خوراکی هالوینی به مناسبت هالوین👻🎃\\\\n\\\\nاگه توهم عاشق ای\\\\u200cاس\\\\u200cام\\\\u200cآری پیجمو از دست نده😉👇🏻\\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n\\\\n#asmr #asmrartist #asmrfood #mukbang #halloween #halloween_snacks #happy #ایاسامار #ای_اس_ام_آر #ایاسمار #هالووین', 'hashtags': ['#asmr', '#asmrartist', '#asmrfood', '#mukbang', '#halloween', '#halloween_snacks', '#happy', '#ایاسامار', '#ای_اس_ام_آر', '#ایاسمار', '#هالووین'], 'media_id': 3490900471793734792, 'username': 'khatisaw_asmr', 'full_name': 'ASMR | خاٰطؕݺ࣮\\\\u200cثٙۛاٰ | ای اس ام آر', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 15, 'play_count': 274, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 36.942, 'virality_score': 0.0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad', 'engagement_score': 0.05474452554744526}, {'code': 'CG7QNDNjazG', 'caption': 'Ready! Set! Film!\\\\nKolejny filmik już w przygotowaniu 👻\\\\n\\\\nNa planie nawet straszna Chupa czacha 💕 @chupachupspl\\\\n\\\\n#halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin', 'hashtags': ['#halloween', '#ytchannel', '#diy', '#chupachups', '#halloween_snacks', '#halloween_party', '#pumpkin'], 'media_id': 2430607689442503878, 'username': '4crazy_hands', 'full_name': 'No Full Name Available', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 5, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/122271405_3676949662369294_5352096118873851662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=dO8fE8ZIN3MQ7kNvgEw_L10&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD688O9MqNvC3AWhO3YWANr_IJeDinBX8qovw7wEaiijQ&oe=67ABDE00&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'BomPez0HE_n', 'caption': 'Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts  #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger', 'hashtags': ['#halloween_kids', '#halloween_snacks', '#spider_donuts', '#cute_food', '#kids_snacks', '#donuts', '#για_ενα_νικολα_γινονται_ολα', '#greekmombloggerscommunity', '#greekbloggerscommunity', '#momblogger'], 'media_id': 1884261582018203623, 'username': 'elpida_touve', 'full_name': 'Elpida Touve', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 77, 'play_count': 0, 'comment_count': 6, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/475820641_405922235900340_3354549167503917651_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=BJ5jjgI1S1wQ7kNvgEa8cis&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAQ2PldBSkgIil_veixaVS6a6ZRgs1k_fmg9-2Jer3lYQ&oe=67ABC61E&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'CG9i8GshD7I', 'caption': 'There are just so cute!! 🎃🦇\\\\n\\\\n#halloween\\\\n#halloween_costume\\\\n#halloween_snacks', 'hashtags': ['#halloween', '#halloween_costume', '#halloween_snacks'], 'media_id': 2431253037789232840, 'username': 'life.by_a', 'full_name': 'No Full Name Available', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 46, 'play_count': 0, 'comment_count': 8, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/231734336_1025030578256388_2356445558213588438_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6WsYnjkiAyYQ7kNvgG_3UvF&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTL2ZatiNXGYsh4b00nQhUxAAmfVMUZ2geexXJvD5skw&oe=67ABE3E3&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'B4KreEynrxE', 'caption': 'Halloween is just around the corner and you could create some fun party snacks with the kids or for your guests. \\\\nCome in to Rio Grande Supermarket and get your ingredients for all the spooktacular snacks. Buy extra candy for the trick-or-treaters.\\\\n\\\\nShurfine Cake Mix ASSORTED 16.5 OZ. 70¢\\\\nMazola Cooking Oil SELECT VARIETY 40 OZ. 2 FOR $5\\\\nLay’s or Wavy Lay’s 2 FOR $4\\\\nBuffalo Style Wing Sections $3.38 LB .\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n\\\\n#mondaymorning #happymonday #mondaymood #riograndesupermarket #canutillosupermarket #grocerystore #canutillobusiness #iamelpaso #elpasotx #itsallgoodep #recipeshoppinglist #halloweensnackideas #snackideasforkids #halloweentime #halloweenpartyideas #halloween_cupcakes #halloween_snacks #snacksforhalloween', 'hashtags': ['#mondaymorning', '#happymonday', '#mondaymood', '#riograndesupermarket', '#canutillosupermarket', '#grocerystore', '#canutillobusiness', '#iamelpaso', '#elpasotx', '#itsallgoodep', '#recipeshoppinglist', '#halloweensnackideas', '#snackideasforkids', '#halloweentime', '#halloweenpartyideas', '#halloween_cupcakes', '#halloween_snacks', '#snacksforhalloween'], 'media_id': 2164733753633455172, 'username': 'riograndesupermarket', 'full_name': 'Rio Grande Supermarket', 'has_audio': True, 'audio_type': 'No Audio Type Available', 'like_count': 8, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 15.0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/21909505_2012064525693566_3455111339192614912_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=myA3c6JjKckQ7kNvgHiHwfB&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx7dSZqcDmnemLgDaWR4YhVFRz9blBP-lcZU2gbkTiBQ&oe=67ABD6D3&_nc_sid=2011ad', 'engagement_score': 0}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'code': 'CG9i8GshD7I', 'caption': 'There are just so cute!! 🎃🦇\\\\n\\\\n#halloween\\\\n#halloween_costume\\\\n#halloween_snacks', 'hashtags': ['#halloween', '#halloween_costume', '#halloween_snacks'], 'media_id': 2431253037789232840, 'username': 'life.by_a', 'full_name': 'No Full Name Available', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 46, 'play_count': 0, 'comment_count': 8, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/231734336_1025030578256388_2356445558213588438_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6WsYnjkiAyYQ7kNvgG_3UvF&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTL2ZatiNXGYsh4b00nQhUxAAmfVMUZ2geexXJvD5skw&oe=67ABE3E3&_nc_sid=2011ad', 'engagement_score': 0}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'code': 'DByK3vHglSI', 'caption': 'خوراکی هالوینی به مناسبت هالوین👻🎃\\\\n\\\\nاگه توهم عاشق ای\\\\u200cاس\\\\u200cام\\\\u200cآری پیجمو از دست نده😉👇🏻\\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n\\\\n#asmr #asmrartist #asmrfood #mukbang #halloween #halloween_snacks #happy #ایاسامار #ای_اس_ام_آر #ایاسمار #هالووین', 'hashtags': ['#asmr', '#asmrartist', '#asmrfood', '#mukbang', '#halloween', '#halloween_snacks', '#happy', '#ایاسامار', '#ای_اس_ام_آر', '#ایاسمار', '#هالووین'], 'media_id': 3490900471793734792, 'username': 'khatisaw_asmr', 'full_name': 'ASMR | خاٰطؕݺ࣮\\\\u200cثٙۛاٰ | ای اس ام آر', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 15, 'play_count': 274, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 36.942, 'virality_score': 0.0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad', 'engagement_score': 0.05474452554744526}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'code': 'CG7QNDNjazG', 'caption': 'Ready! Set! Film!\\\\nKolejny filmik już w przygotowaniu 👻\\\\n\\\\nNa planie nawet straszna Chupa czacha 💕 @chupachupspl\\\\n\\\\n#halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin', 'hashtags': ['#halloween', '#ytchannel', '#diy', '#chupachups', '#halloween_snacks', '#halloween_party', '#pumpkin'], 'media_id': 2430607689442503878, 'username': '4crazy_hands', 'full_name': 'No Full Name Available', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 5, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/122271405_3676949662369294_5352096118873851662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=dO8fE8ZIN3MQ7kNvgEw_L10&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD688O9MqNvC3AWhO3YWANr_IJeDinBX8qovw7wEaiijQ&oe=67ABDE00&_nc_sid=2011ad', 'engagement_score': 0}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'code': 'BomPez0HE_n', 'caption': 'Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts  #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger', 'hashtags': ['#halloween_kids', '#halloween_snacks', '#spider_donuts', '#cute_food', '#kids_snacks', '#donuts', '#για_ενα_νικολα_γινονται_ολα', '#greekmombloggerscommunity', '#greekbloggerscommunity', '#momblogger'], 'media_id': 1884261582018203623, 'username': 'elpida_touve', 'full_name': 'Elpida Touve', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 77, 'play_count': 0, 'comment_count': 6, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/475820641_405922235900340_3354549167503917651_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=BJ5jjgI1S1wQ7kNvgEa8cis&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAQ2PldBSkgIil_veixaVS6a6ZRgs1k_fmg9-2Jer3lYQ&oe=67ABC61E&_nc_sid=2011ad', 'engagement_score': 0}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"خوراکی هالوینی به مناسبت هالوین👻🎃\\\",\\n\",\n      \"  \\\"virality_score\\\": 0.0,\\n\",\n      \"  \\\"engagement_score\\\": 0.05474452554744526,\\n\",\n      \"  \\\"description\\\": \\\"Discover Halloween snacks with a touch of ASMR magic, perfect for satisfying your spooky cravings!\\\"\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"Kolejny filmik już w przygotowaniu 👻 Na planie nawet straszna Chupa czacha 💕 @chupachupspl #halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin\\\",\\n\",\n      \"  \\\"virality_score\\\": 0,\\n\",\n      \"  \\\"engagement_score\\\": 0,\\n\",\n      \"  \\\"description\\\": \\\"Get ready for our next Halloween-themed reel featuring spooky DIY Halloween snacks with a special twist from Chupa Chups!\\\"\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger\\\",\\n\",\n      \"  \\\"virality_score\\\": 0,\\n\",\n      \"  \\\"engagement_score\\\": 0,\\n\",\n      \"  \\\"description\\\": \\\"Transform your afternoon snack into a fun and delicious Halloween treat with spider-themed donuts!\\\"\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"There are just so cute!! 🎃🦇\\\",\\n\",\n      \"  \\\"virality_score\\\": 0,\\n\",\n      \"  \\\"engagement_score\\\": 0,\\n\",\n      \"  \\\"description\\\": \\\"Discover adorable Halloween snacks perfect for your spooky celebration! 🎃🦇\\\"\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'code': 'B4KreEynrxE', 'caption': 'Halloween is just around the corner and you could create some fun party snacks with the kids or for your guests. \\\\nCome in to Rio Grande Supermarket and get your ingredients for all the spooktacular snacks. Buy extra candy for the trick-or-treaters.\\\\n\\\\nShurfine Cake Mix ASSORTED 16.5 OZ. 70¢\\\\nMazola Cooking Oil SELECT VARIETY 40 OZ. 2 FOR $5\\\\nLay’s or Wavy Lay’s 2 FOR $4\\\\nBuffalo Style Wing Sections $3.38 LB .\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n\\\\n#mondaymorning #happymonday #mondaymood #riograndesupermarket #canutillosupermarket #grocerystore #canutillobusiness #iamelpaso #elpasotx #itsallgoodep #recipeshoppinglist #halloweensnackideas #snackideasforkids #halloweentime #halloweenpartyideas #halloween_cupcakes #halloween_snacks #snacksforhalloween', 'hashtags': ['#mondaymorning', '#happymonday', '#mondaymood', '#riograndesupermarket', '#canutillosupermarket', '#grocerystore', '#canutillobusiness', '#iamelpaso', '#elpasotx', '#itsallgoodep', '#recipeshoppinglist', '#halloweensnackideas', '#snackideasforkids', '#halloweentime', '#halloweenpartyideas', '#halloween_cupcakes', '#halloween_snacks', '#snacksforhalloween'], 'media_id': 2164733753633455172, 'username': 'riograndesupermarket', 'full_name': 'Rio Grande Supermarket', 'has_audio': True, 'audio_type': 'No Audio Type Available', 'like_count': 8, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 15.0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/21909505_2012064525693566_3455111339192614912_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=myA3c6JjKckQ7kNvgHiHwfB&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx7dSZqcDmnemLgDaWR4YhVFRz9blBP-lcZU2gbkTiBQ&oe=67ABD6D3&_nc_sid=2011ad', 'engagement_score': 0}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"Get ready for a spooktacular Halloween with fun and easy snack ideas! 🎃👻🧁 Visit Rio Grande Supermarket to stock up on treats and ingredients for your Halloween party or trick-or-treaters. #HalloweenSnacks #RioGrandeSupermarket\\\",\\n\",\n      \"  \\\"virality_score\\\": 0,\\n\",\n      \"  \\\"engagement_score\\\": 0,\\n\",\n      \"  \\\"description\\\": \\\"Discover delightful Halloween snack ideas that are perfect for kids and parties. Shop at Rio Grande Supermarket for all your spooky treat essentials, from cake mix to candies.\\\"\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  ['```json\\\\n{\\\\n  \\\"caption\\\": \\\"خوراکی هالوینی به مناسبت هالوین👻🎃\\\",\\\\n  \\\"virality_score\\\": 0.0,\\\\n  \\\"engagement_score\\\": 0.05474452554744526,\\\\n  \\\"description\\\": \\\"Discover Halloween snacks with a touch of ASMR magic, perfect for satisfying your spooky cravings!\\\"\\\\n}\\\\n```', '```json\\\\n{\\\\n  \\\"caption\\\": \\\"Kolejny filmik już w przygotowaniu 👻 Na planie nawet straszna Chupa czacha 💕 @chupachupspl #halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin\\\",\\\\n  \\\"virality_score\\\": 0,\\\\n  \\\"engagement_score\\\": 0,\\\\n  \\\"description\\\": \\\"Get ready for our next Halloween-themed reel featuring spooky DIY Halloween snacks with a special twist from Chupa Chups!\\\"\\\\n}\\\\n```', '```json\\\\n{\\\\n  \\\"caption\\\": \\\"Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger\\\",\\\\n  \\\"virality_score\\\": 0,\\\\n  \\\"engagement_score\\\": 0,\\\\n  \\\"description\\\": \\\"Transform your afternoon snack into a fun and delicious Halloween treat with spider-themed donuts!\\\"\\\\n}\\\\n```', '```json\\\\n{\\\\n  \\\"caption\\\": \\\"There are just so cute!! 🎃🦇\\\",\\\\n  \\\"virality_score\\\": 0,\\\\n  \\\"engagement_score\\\": 0,\\\\n  \\\"description\\\": \\\"Discover adorable Halloween snacks perfect for your spooky celebration! 🎃🦇\\\"\\\\n}\\\\n```', '```json\\\\n{\\\\n  \\\"caption\\\": \\\"Get ready for a spooktacular Halloween with fun and easy snack ideas! 🎃👻🧁 Visit Rio Grande Supermarket to stock up on treats and ingredients for your Halloween party or trick-or-treaters. #HalloweenSnacks #RioGrandeSupermarket\\\",\\\\n  \\\"virality_score\\\": 0,\\\\n  \\\"engagement_score\\\": 0,\\\\n  \\\"description\\\": \\\"Discover delightful Halloween snack ideas that are perfect for kids and parties. Shop at Rio Grande Supermarket for all your spooky treat essentials, from cake mix to candies.\\\"\\\\n}\\\\n```']\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'summary': [{'code': 'DByK3vHglSI', 'caption': 'خوراکی هالوینی به مناسبت هالوین👻🎃\\\\n\\\\nاگه توهم عاشق ای\\\\u200cاس\\\\u200cام\\\\u200cآری پیجمو از دست نده😉👇🏻\\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n\\\\n#asmr #asmrartist #asmrfood #mukbang #halloween #halloween_snacks #happy #ایاسامار #ای_اس_ام_آر #ایاسمار #هالووین', 'hashtags': ['#asmr', '#asmrartist', '#asmrfood', '#mukbang', '#halloween', '#halloween_snacks', '#happy', '#ایاسامار', '#ای_اس_ام_آر', '#ایاسمار', '#هالووین'], 'media_id': 3490900471793734792, 'username': 'khatisaw_asmr', 'full_name': 'ASMR | خاٰطؕݺ࣮\\\\u200cثٙۛاٰ | ای اس ام آر', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 15, 'play_count': 274, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 36.942, 'virality_score': 0.0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad', 'engagement_score': 0.05474452554744526}, {'code': 'CG7QNDNjazG', 'caption': 'Ready! Set! Film!\\\\nKolejny filmik już w przygotowaniu 👻\\\\n\\\\nNa planie nawet straszna Chupa czacha 💕 @chupachupspl\\\\n\\\\n#halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin', 'hashtags': ['#halloween', '#ytchannel', '#diy', '#chupachups', '#halloween_snacks', '#halloween_party', '#pumpkin'], 'media_id': 2430607689442503878, 'username': '4crazy_hands', 'full_name': 'No Full Name Available', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 5, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/122271405_3676949662369294_5352096118873851662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=dO8fE8ZIN3MQ7kNvgEw_L10&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD688O9MqNvC3AWhO3YWANr_IJeDinBX8qovw7wEaiijQ&oe=67ABDE00&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'BomPez0HE_n', 'caption': 'Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts  #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger', 'hashtags': ['#halloween_kids', '#halloween_snacks', '#spider_donuts', '#cute_food', '#kids_snacks', '#donuts', '#για_ενα_νικολα_γινονται_ολα', '#greekmombloggerscommunity', '#greekbloggerscommunity', '#momblogger'], 'media_id': 1884261582018203623, 'username': 'elpida_touve', 'full_name': 'Elpida Touve', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 77, 'play_count': 0, 'comment_count': 6, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/475820641_405922235900340_3354549167503917651_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=BJ5jjgI1S1wQ7kNvgEa8cis&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAQ2PldBSkgIil_veixaVS6a6ZRgs1k_fmg9-2Jer3lYQ&oe=67ABC61E&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'CG9i8GshD7I', 'caption': 'There are just so cute!! 🎃🦇\\\\n\\\\n#halloween\\\\n#halloween_costume\\\\n#halloween_snacks', 'hashtags': ['#halloween', '#halloween_costume', '#halloween_snacks'], 'media_id': 2431253037789232840, 'username': 'life.by_a', 'full_name': 'No Full Name Available', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 46, 'play_count': 0, 'comment_count': 8, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/231734336_1025030578256388_2356445558213588438_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6WsYnjkiAyYQ7kNvgG_3UvF&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTL2ZatiNXGYsh4b00nQhUxAAmfVMUZ2geexXJvD5skw&oe=67ABE3E3&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'B4KreEynrxE', 'caption': 'Halloween is just around the corner and you could create some fun party snacks with the kids or for your guests. \\\\nCome in to Rio Grande Supermarket and get your ingredients for all the spooktacular snacks. Buy extra candy for the trick-or-treaters.\\\\n\\\\nShurfine Cake Mix ASSORTED 16.5 OZ. 70¢\\\\nMazola Cooking Oil SELECT VARIETY 40 OZ. 2 FOR $5\\\\nLay’s or Wavy Lay’s 2 FOR $4\\\\nBuffalo Style Wing Sections $3.38 LB .\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n\\\\n#mondaymorning #happymonday #mondaymood #riograndesupermarket #canutillosupermarket #grocerystore #canutillobusiness #iamelpaso #elpasotx #itsallgoodep #recipeshoppinglist #halloweensnackideas #snackideasforkids #halloweentime #halloweenpartyideas #halloween_cupcakes #halloween_snacks #snacksforhalloween', 'hashtags': ['#mondaymorning', '#happymonday', '#mondaymood', '#riograndesupermarket', '#canutillosupermarket', '#grocerystore', '#canutillobusiness', '#iamelpaso', '#elpasotx', '#itsallgoodep', '#recipeshoppinglist', '#halloweensnackideas', '#snackideasforkids', '#halloweentime', '#halloweenpartyideas', '#halloween_cupcakes', '#halloween_snacks', '#snacksforhalloween'], 'media_id': 2164733753633455172, 'username': 'riograndesupermarket', 'full_name': 'Rio Grande Supermarket', 'has_audio': True, 'audio_type': 'No Audio Type Available', 'like_count': 8, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 15.0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/21909505_2012064525693566_3455111339192614912_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=myA3c6JjKckQ7kNvgHiHwfB&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx7dSZqcDmnemLgDaWR4YhVFRz9blBP-lcZU2gbkTiBQ&oe=67ABD6D3&_nc_sid=2011ad', 'engagement_score': 0}], 'description': [{'caption': 'خوراکی هالوینی به مناسبت هالوین👻🎃', 'description': 'Discover Halloween snacks with a touch of ASMR magic, perfect for satisfying your spooky cravings!', 'virality_score': 0.0, 'engagement_score': 0.05474452554744526}, {'caption': 'Kolejny filmik już w przygotowaniu 👻 Na planie nawet straszna Chupa czacha 💕 @chupachupspl #halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin', 'description': 'Get ready for our next Halloween-themed reel featuring spooky DIY Halloween snacks with a special twist from Chupa Chups!', 'virality_score': 0, 'engagement_score': 0}, {'caption': 'Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger', 'description': 'Transform your afternoon snack into a fun and delicious Halloween treat with spider-themed donuts!', 'virality_score': 0, 'engagement_score': 0}, {'caption': 'There are just so cute!! 🎃🦇', 'description': 'Discover adorable Halloween snacks perfect for your spooky celebration! 🎃🦇', 'virality_score': 0, 'engagement_score': 0}, {'caption': 'Get ready for a spooktacular Halloween with fun and easy snack ideas! 🎃👻🧁 Visit Rio Grande Supermarket to stock up on treats and ingredients for your Halloween party or trick-or-treaters. #HalloweenSnacks #RioGrandeSupermarket', 'description': 'Discover delightful Halloween snack ideas that are perfect for kids and parties. Shop at Rio Grande Supermarket for all your spooky treat essentials, from cake mix to candies.', 'virality_score': 0, 'engagement_score': 0}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [{'id': '067a604a-6cf6-75b4-8000-a0cb0181a664', 'title': 'hooks_doc', 'content': ['Save both time and money with [product].', 'Save both time and money on [task].', 'Is [product] worth the price? Let’s find out!', 'Why is it challenging and costly to find a good [product category]?', 'Searching for an affordable [product type]? Check this out!', 'How to locate an affordable [service].', 'I can’t believe this costs only [price].', \\\"Don't waste your money on [X]; instead buy [X].\\\", 'What’s inside [product]?', 'Common questions I get about [product].', 'Now you can get X delivered right to your door.', 'Thinking of trying [product type]?', 'Allow me to introduce you to [product].', '[category] Tip #X.', 'Here’s how to achieve [value prop].', 'I know this sounds unbelievable, but…', 'How to get X done in just 10 minutes.', 'How to find time for X.', 'Here’s my biggest life hack for X.', 'Add more [value prop] to your day.', 'Before you try [product type], watch this first.', 'Hate [the worse alternative]? Give this a try!', 'Thinking about [worse alternative]?', 'Instead of [worse alternative], try this.', 'Still using [the worse alternative to the product]? Watch this.', 'Something that’s always annoyed me about X.', 'Don’t buy X that doesn’t work. Try this instead.', 'I tested every [product category] so you don’t have to: here’s what I found.', 'Stop doing [worse alternative]. Try [product] instead.', 'Dealing with [negative experience]? I used [product] to help.', 'Why millennials are switching to [product].', 'How to do X without [worse alternative].', 'I only get my [product category] from [brand name].', 'I no longer buy my [product category] from [worse alternative].', '[Worse alternative] can be difficult to deal with.', 'Your new X alternative.', '[value prop] without the [negative side effect].', 'I kept experiencing [pain point], so I tried this instead!', 'If you have [pain point] — you need to see this!', 'I wanted to stop doing X, so I tried this instead.', \\\"Your X isn't [adverb]; you just need X.\\\", 'My secret to [popular trend] revealed!', 'Guys, it’s here…', 'What I ordered vs. what I received.', '[Product] unboxing.', 'Let’s create X with [product].', 'POV: You tried [product].', 'A day in the life of X.', 'Get ready with me to do [task].', '“Put a finger down” [product category] edition.', 'Trying home remedies for X.', '[Product category] ASMR.', 'TikTok made me try [product].', 'Things TikTok made me try #13.', 'This [product type] is going viral on [social media platform].', 'I tested the viral [product type] to see if it lives up to the hype.', 'This [product type] has over 5,000 reviews… let’s see if it’s worth it.', '[Publication] can’t stop raving about us.', 'It’s so good it sold out in a week.', 'Are you [accomplishing the goal optimally]?', 'Life Hack: Try [product] for [pain point].', 'My go-to [product] for [pain point].', 'How to easily [task].', '[Task] has never been easier than with [product].', 'My favorite [product] to make [hard task] simpler.', 'Here’s my top product for [task].', 'Struggling to do [task]?', 'I’ve been struggling with [task], but [product] has really helped.', 'Easiest way to do [task]?', 'Make your week easier.', 'Why adults avoid [task]… [product] makes it easy.', '[Product] made [task] so much easier! You’ve got to try it.', 'When I use [product], it’s one less thing I have to worry about.', 'How to do [X] in half the time.', 'This trick/hack/method will save you hours...', 'Easy hack to [X]...', 'Simple [X] that will make you [X].', '5 Ways [product] Helps with [pain point].', '3 reasons to buy [product].', '3 reasons to try [service].', 'Get [value prop] in 3 steps.', 'Here are 3 ways [worse alternative] affects your life.', '5 things you didn’t know about [topic].', 'The ultimate [X] checklist to [action].', 'Reasons why [X].', 'Here are the 3 best ways to [X].', 'Here are [X] mistakes you might be making...', 'If you want [X], do these 5 things...', 'The internet’s #1 [product type].', 'The best way to [accomplish the goal of the product].', 'What makes [the product type] the best?', 'My skin has never looked better with [product].', 'The best way to find X in 2022.', '[Product] changed how I do [task], and I’m never going back.', 'Why is [product] so good though?', 'After hours of researching, I found the best [product type] for [task].', 'I found the best [product category] for [value prop].', 'This is going to blow your mind.', 'How I got [X] in 24 hours.', 'Must-have [products] for [X].', \\\"The best [target audience] know something that you don't.\\\", 'Hey, [customer type], you’ve got to try this.', 'People looking for [product category], stop scrolling.', 'Wait, have you tried X?', 'Take control of your X with [product].', 'Imagine if X was also X.', 'Watch this if you X.', 'PSA: [statement about product category].', 'Did you know? [fact about product category].', 'I just found out [fact about product category].', 'Are you one of [fact about product category] people who do X?', 'New customers get [discount].', 'Take [discount] off when you try [product].', 'I didn’t know X could be related to X.', 'Why is it important to [do product-related task]?', \\\"99\\\\\\\\% of your [target audience] don't. To be the 1% you need to [X].\\\", 'This [product] is the secret to [X].', 'Is there anything worse than [X]?', 'I will never [adjective] from learning this.', 'X people start scrolling. I have the perfect [X] for you.', \\\"Here's a challenge for you...\\\", \\\"There's nothing more painful than [X].\\\", 'What would you do if...', 'Watch till the end…', \\\"Why you're failing at [activity].\\\", 'The worst mistake you can make in [subject].', 'Avoid these common pitfalls in [topic].', 'The dark side of [popular trend].', \\\"Don't be fooled by [misconception].\\\", 'Why [common practice] is ruining your [outcome].', 'What no one tells you about [issue].', 'The hidden dangers of [activity].', 'Stop doing this if you want to succeed in [field].', 'The ugly truth about [common belief].', 'Why [habit] is wasting your time.', 'Exposing the myths about [topic].', \\\"The biggest regret you'll have in [situation].\\\", 'How [action] is destroying your [goal].', 'The shocking reality of [popular topic].', 'Why [trend] is a bad idea.', \\\"The real reason you're not seeing results in [field].\\\", 'The downside of [seemingly positive aspect].', 'What you should never do in [activity].', 'Why [common advice] is actually harmful.'], 'language': 'english', 'metadata': {}, 'modality': 'text', 'created_at': '2025-02-07T13:03:34.810520Z', 'embeddings': [[-0.03269297, -0.088817045, -0.028254973, -0.055885196, 0.018105982, 0.01028099, -0.0032610595, -0.0059282444, 0.0052157454, 0.044513956, 0.0131679885, 0.017239483, -0.06836993, -0.020213982, -0.026776975, 0.015886985, 0.025463976, -0.030177971, 0.038457215, 0.034246966, -0.029054973, 0.020792982, -0.016729984, 0.011711989, -0.014857987, 0.029045973, 0.015278986, 0.019400982, 0.0064209937, 0.028700974, -0.036928963, -0.04234896, 0.005201745, -0.0038489962, 0.013669987, 0.0008044992, 0.018153483, -0.0001154999, -0.04274396, -0.02128298, -0.07332793, 0.03257747, 0.0031719971, 0.0068839937, -0.0035944968, 0.048983954, 0.004112746, 0.021680292, -0.007140993, -0.059139945, 0.037079964, -0.0153399855, -0.03232297, 0.014046487, 0.004216996, 0.036721963, 0.034679968, -0.0078664925, -0.02130698, -0.027523974, -0.009597991, -0.0038564964, -0.06848594, -0.0039302465, 0.03239797, 0.025395976, -0.020009981, 0.0147979865, 0.0007919992, -0.04535196, -0.01148899, 0.017204484, 0.017727984, -0.016297828, 0.016887985, -0.0009012492, -0.08598067, -0.004065496, -0.023006978, -0.0069064936, 0.029894972, 0.02128698, -0.01078799, -0.04308596, -0.03946709, 0.006539994, -0.028476972, -0.008015992, 0.04476246, 0.029986471, -0.056279946, -0.007252993, 0.04109171, -0.001006374, -0.018230233, 0.005138495, 0.012639988, 0.021055229, 0.029785974, 0.024880977, 0.04906795, -0.045007955, -0.016519483, -0.027185975, 0.0051759947, -0.024001976, 0.014979986, -0.03298347, -0.023459978, 0.0070529934, 0.0003959996, -0.000266656, 0.016116235, -0.05046795, -0.0054059946, -0.017807983, 0.035699967, -0.016185734, -0.024279978, 0.0047647455, 0.0065679937, 0.022038573, 0.033201218, 0.011457489, -0.03318922, -0.023506977, 0.009829241, 0.0054121823, -0.07077593, 0.012124114, 0.024171976, -0.004271871, 0.050586954, -0.009768991, -0.024437977, 0.019854981, 0.003052997, 0.031974345, -0.017777983, 0.043033957, -0.052764453, 0.011385989, 0.018090546, -0.014796985, 0.019180233, -0.023723977, -0.023490978, -0.034887843, -0.023940478, -0.005116745, -0.006681494, 0.0064979936, 0.015339485, 0.0060139946, 0.018414984, -0.037868183, -0.00038899964, 0.028680222, -0.048039954, 0.034171592, -0.0014739985, -0.012539988, 0.014058112, 0.018112984, -0.00071354624, -0.06791994, 0.007662493, -0.010105491, -0.023262478, 0.0012319988, 0.09317591, 0.0037879962, 0.015703985, 0.025068976, -0.060817942, 0.0026044976, 0.016858984, -0.021567728, 0.022263978, 0.034703467, 0.011223365, -0.011373989, -0.019937482, -0.005519495, -0.025614977, 0.044457957, -0.01065599, -0.008929991, 0.021723978, 0.03165697, 0.034048967, -0.013257988, 0.013229988, -0.019810481, -0.012459989, 0.017384483, -0.027505975, 5.2999952e-05, -0.0038294964, 0.049045954, 0.018073983, 0.007100493, 0.027412975, -0.038823962, -0.029842036, -0.042615335, 0.04036546, 3.5999965e-05, 0.037253466, -0.016149236, -0.009792522, 0.026657976, 0.02176598, 0.043798957, 0.018160015, 0.044447333, 0.030477973, -0.04157296, 0.037858464, 0.049118955, -0.019378982, 0.02103898, 0.049049955, -0.020512233, -0.0026472476, 0.02281873, -0.009386491, -0.0011924988, 0.009898991, -0.0026392473, 0.06598794, -0.017265983, -0.03105772, -0.046443954, -0.01079899, -0.024625478, -0.022555979, 0.031245971, -0.029797973, 0.041310962, -0.025773974, 0.03285097, 0.021942355, -0.0011902489, -0.004498121, -0.004153746, -0.027690975, 0.0032899969, -0.04084796, -0.017330734, 0.064158626, -0.0008942492, -0.026795976, 0.028406972, 0.006697556, 0.017389484, -0.0048184954, -0.0070699933, 0.04156196, 0.024466977, 0.03194997, -0.02154198, 0.006226744, -0.05446013, 0.030408971, 0.028629472, 0.03244297, -0.023947978, -0.013720986, -0.04191596, -0.024592478, -0.065713935, 0.027452976, -0.0039569964, -0.017444484, 0.03855484, 0.01013499, 0.014106487, 0.05340495, 0.019405982, -0.06152394, -0.018425357, 0.02084623, -0.025712976, 0.017915107, 0.021021979, 0.026945475, -0.036064968, -0.013427956, -0.015015236, -0.017890733, -0.007967993, 0.014662987, 0.03247297, 0.026669286, -0.03083897, 0.019020982, -0.007202243, -0.07435193, -0.01018199, 0.015391985, -0.0014219986, 0.012913488, -0.0077886176, -0.00049899955, -0.06742344, -0.05028995, 0.016510485, 0.006129994, 0.012141988, -0.023343977, -0.013014487, -0.07917392, 0.01086849, 0.019197982, -0.011218989, 0.040531963, 0.08943416, -0.035869967, -0.022699479, -0.026549974, -0.0038389964, -0.008711992, -0.060985945, 0.035591967, 0.047955956, 0.026285475, 0.0060239946, -0.049665954, -0.009199116, 0.059845947, 0.047006957, -0.0038334965, -0.04203746, 0.025341475, 0.030718971, -0.046373956, 0.04379846, 0.014149987, 0.02061498, -0.0007539993, -0.060412195, -0.026553225, 0.008673992, 0.036703963, -0.08791992, 0.017268233, -0.06703194, 0.005354995, 0.026911974, 0.039307214, -0.007095993, -0.008333492, 0.027458724, -0.018191982, -0.002023498, -0.017312422, -0.008295992, -0.0135239875, 0.0049819956, 0.0027407475, -0.017404983, -0.024903975, 0.034670092, 0.013015987, -0.013997487, 0.07826392, -0.002241748, 0.04010396, -0.02291598, 0.06980393, 0.019018982, 0.0034689966, 0.018805983, 0.016588923, 0.067977935, -0.047401454, -0.01142374, 0.017420234, 0.0026169976, 0.04419496, -0.037841965, 0.05249495, 0.05551195, 0.024163976, 0.045592956, 0.027096225, 0.016072234, -0.03126697, 0.039819963, -0.008607866, 0.02940897, 0.029529972, 0.033236466, 0.013497456, 0.013403487, 0.030413222, 0.026079975, 0.019644981, 0.019003483, -0.031191971, 0.024995977, 0.0018199983, 0.00503712, 0.0026569976, -0.035271965, -0.017107485, 0.006050432, -0.008861992, 0.028648973, 0.047585957, -0.003962996, -0.0073294933, 0.046262953, 0.038820963, -0.022181477, -0.04189696, 0.06134894, 0.018974982, 0.015414485, 0.009624991, 0.046441957, -0.056283448, 0.02074698, 0.03188197, -0.014916985, 0.0131134875, -0.036927965, -0.036622968, 0.028238973, 0.02195748, 0.030455973, -0.008085992, 0.097987905, 0.044792958, -0.05402295, 0.004058996, 0.0027639973, -0.072639935, -0.011452114, -0.042015962, -0.054257948, -0.005470745, -0.017360983, 0.00051199953, -0.009541991, -0.045114957, 0.01597936, 0.01992698, -0.049383204, 0.023419978, -0.014997986, -0.019167092, -0.015499986, -0.043019958, 0.033470716, 0.06795794, -0.06676556, -0.009835397, -0.019084731, -0.027897974, -0.0049825422, 0.016151486, -0.015861984, 0.018106734, -0.016193986, 0.024321977, -0.05719195, 0.01103799, 0.047855955, 0.014372987, -0.026505977, -0.03141397, -0.047757234, -0.009324991, -0.008208993, 0.058423944, -0.002151998, -0.0037896214, 0.019123482, -0.0014458736, 0.010444489, 0.018847294, -0.011514489, 0.04240496, 0.0133069875, -0.026590977, -0.016380236, -0.025423976, -0.012986238, 0.02057898, 0.028315974, 0.0070779934, 0.05409345, -0.016933985, -0.03130197, 0.03488597, 0.035322968, -0.031140972, -0.00014212486, 0.05273395, 0.04119546, -0.05551995, -0.006435494, 0.010033991, -0.061471943, 0.033408217, 0.057991948, 0.0007359993, 0.012167989, -0.015938751, -0.05024395, 0.001207999, -0.04400196, 0.027374974, 0.04148896, 0.017190984, -0.050821953, -0.013406987, -0.027455974, -0.019048983, -0.0048524956, -0.007392743, 0.04447196, 0.0059068385, -0.03338372, 0.022121478, -0.035123967, 0.0019699982, 0.0051739956, -0.036132965, -0.027231473, -0.045123957, 0.006950306, -0.009865491, -0.009075804, 0.020381793, 0.017618984, -0.012251988, -0.007305493, -0.024679853, 0.025634976, 0.03295547, 0.015225985, -0.04339596, 0.00037949966, -0.01165674, 0.014035987, 0.015520735, -0.02259798, 0.0015239986, -0.021250982, -0.097903915, -0.053095512, 0.060611192, -0.0004429996, -0.019799981, 0.030441971, 0.038887963, 0.007967242, -0.05514995, 0.0010317491, 0.014463986, 0.02136698, -0.011432489, 0.028942974, -0.0070209308, -0.06298394, -0.06537594, 0.047357704, -0.018755982, -0.05395995, -0.05151145, -0.034519468, 0.030219972, -0.025694976, 0.013643487, -0.029597973, 0.005121995, -0.027715975, -0.013883486, -0.022569979, -0.017054984, -0.027052475, 0.023536978, 0.02115998, -0.0018664981, 0.011228864, 0.04594996, -0.003991246, 0.05148845, -0.005621495, 0.044627957, 0.025126975, -0.010414241, -0.01910323, -0.037565965, 0.024159728, 0.010767991, -0.033481967, -0.023365978, -0.034553967, 0.015297987, -0.019233279, 0.011897864, -0.010750989, -0.0030269972, 0.038949464, -0.00066324935, 0.009081491, -0.0076924926, -0.0017679983, -0.025411475, -0.02162998, -0.008137993, 0.016108986, -0.040148523, -0.029765973, -0.02295998, 0.0032148408, 0.029791972, 0.014357987, -0.01112899, 0.038809963, -0.018305108, 0.018163232, 0.0070964308, 0.06916094, 0.02241298, -0.016283985, 0.05090395, -0.016937984, 0.05520095, -0.019432612, -0.060631946, 0.06987368, -0.026860476, -0.028025724, -0.02031698, -0.0006503744, 0.002242998, 0.03357197, 0.0032899969, -0.018112905, 0.023183977, -0.000992249, -0.00017899984, -0.021185981, -0.04281196, 0.015278986, 0.04961795, -0.003210997, -0.00048699955, -0.07195193, 0.03135022, 0.0017109985, 0.0067774937, -0.012333488, -0.017915983, -0.048596703, 0.049995955, -0.025047977, 0.048571955, 0.037143715, 0.033513967, -0.03443397, 0.03129522, -0.01021599, -0.03109197, -0.024024477, 0.039852962, 0.0072229933, 0.02001198, -0.018795483, -0.013791237, 0.0035789965, -0.025639975, -0.025357476, 0.0030409973, 0.029300097, -0.012371489, -0.023633977, 0.03474597, 0.018140983, 0.046573706, 0.018260483, -0.02143673, 0.05777595, -0.042421963, -0.04223096, -0.0050091203, 0.027394975, 0.006472681, -0.0036929965, -0.019830106, 0.003281997, 0.047545955, 0.035611965, 0.06624394, 0.023654478, 0.057291947, 0.060513943, 0.020351732, 0.029836722, 0.023068978, -0.022521978, 0.024175478, -0.0065799938, -0.051361952, -0.046907954, -0.0003139997, 0.013886986, -0.0038839963, 0.039141964, 0.062339943, 0.0100961, 0.036269967, -0.057184946, 0.006334994, 0.005364495, -0.01077599, -0.012370489, -0.050604954, -0.03330397, 0.013414987, -0.03477797, -0.051681954, -0.06182794, -0.026909538, -0.016317734, -0.020384481, -0.030262347, -0.038737964, -0.001025999, -0.0057764947, -0.008109618, -0.026550977, -0.065897934, 0.036582965, 0.019696482, 0.009087991, -0.03027947, 0.019797983, 0.0060419943, 0.0035199968, -0.07591743, -0.0027542473, -0.006653994, -0.0041834335, 0.009608991, -0.0051539955, 0.035857968, 0.008055743, -0.008584241, -0.015200486, -0.011721988, 0.044172958, -0.054912947, 0.006795244, 0.039454214, 0.0029659972, -0.0575532, -0.008514492, 0.0050509954, -0.03142697, 0.010801865, -0.021660011, 0.03596347, -0.018941982, 0.008986492, 0.025803976, -0.0036979965, -0.015767986, -0.008577992, 0.008787491, -0.010090491, -0.07893193, -0.04348696, 0.0071901185, -0.043779958, -0.06369394, 0.0044269958, 0.024741976, -0.016441984, -0.023191104, 0.059608944, -0.013145424, -0.013507987, 0.018080484, -0.064191945, 0.007109993, -0.03748578, -0.042139962, 0.019531872, -0.034404967, 0.02281904, 0.023561977, 0.02322598, -0.06553994, -0.008404242, 0.0020799981, -0.009254991, 0.060268942, -0.00081299926, 0.017283984, -0.0046099955, 0.0026462476, 0.005168495, -0.030119972, -0.057576444, -0.034029968, -0.0026379975, -0.013533362, 0.023270478, 0.02233098, 0.012108114, 0.0069899936, -0.00070899935, 0.035111967, 0.002091998, 0.0085714925, 0.012208989, 0.0064129937, 0.018219482, 0.004343996, 0.0066891187, 0.0037509964, -0.003068997, -0.048235957, 0.008063743, 0.047023956, 0.03551797, 0.01089999, 0.037103966, 0.029356472, -0.016012484, -0.02435829, 0.0030476844, 0.005044245, -0.086663924, 0.0030428737, 0.06358794, -0.0038359964, -0.028411973, 0.025973974, -0.011212614, 0.027090976, -0.06251194, -0.011235513, -0.050256453, -0.06539194, -0.009423491, 0.0068674935, 0.017988984, -0.004615871, 0.015394798, 0.0036189966, 0.03381997, 0.03360447, 0.04141896, 0.023504978, 0.00390509, 0.03987196, -0.028833972, -0.014244987, 0.06094519, -0.0059274943, 0.008872491, 0.030932972, -0.059317943, 0.024991475, 0.022413353, -0.038469963, 0.05144795, -0.00039943712, -0.062211942, -0.010070991, -0.02136548, -0.0025309976, 0.0050819954, -0.027082976, 0.05072395, 0.03066447, -0.0054159947, -0.06185544, -0.014281986, -0.02102998, -0.012694551, 0.039185964, 0.0052729947, 0.0034924967, -0.01068899, -0.02175973, 0.029275974, -0.04649196, -0.051141955, 0.057762943, 0.023516977, 0.05547195, 0.03513597, -0.039162964, 0.075947925, 0.023449978, -0.028116973, -0.030393971, -0.003077997, 0.006227494, -0.04446396, 0.024741976, -0.023347478, 0.044719957, 0.05342195, 0.058285948, -0.000381443, -0.08321192, -0.020332731, -0.022836978, -0.006935993, -0.039894715, -0.039514963, 0.0014939986, 0.0024469977, 0.040790025, 0.0049007456, -0.012165489, 0.060835943, 0.007366993, 0.0045739957, 0.0073607434, -0.0071519935, -0.061524943, 0.024877477, -0.02131773, 0.067633934, 0.027185723, 0.044574957, -0.034639966, 0.006829994, -0.03421797, 0.0037519967, 0.010084678, 0.019502982, -0.016979733, 0.001074999, -0.0151269855, 0.011866989, 0.035804965, 0.045441456, -0.053081952, 0.05913294, 0.002174998, -0.033701967, -0.0107647395, 0.052780952, -0.030155974, 0.03320947, 0.022385728, -0.008033993, -0.00995299, -0.029995972, 0.093159914, 0.018513357, 0.0037647465, -0.0035939966, -0.02124248, 0.023609977, 0.023353977, -0.027160475, -0.02040948, 0.012904988, -0.014337737, -0.005768932, 0.015433986, -0.006537994, 0.007664993, 0.022745227, 0.050483953, -0.021753978, -0.042018462, -0.027424974, 0.046635956, -0.030855972, -0.045651704, -0.026547976, 0.0042576212, -0.035729043, -0.023963977, 0.028345974, -0.01980723, -0.011007164, -0.07391993, -0.004460996, -0.0013789986, 0.01996598, 0.012000864, 0.03624097, 0.017837483, -0.018466357, -0.018368984, 0.0035974965, -0.0034739967, 0.046342954, 0.007582743, 0.038388215, 0.040667962, 0.014204737, 0.0045407456, 0.0005184995, -0.037038963, 0.04229996, 0.059512943, 0.016103985, -0.007576993, 0.006431931, 0.038346462, -0.0009159991, 0.005441995, -0.038746964, -0.021703979, 0.037249964, 0.021892728, -0.046325456, 0.031191971, 0.004075996], [-0.014330006, -0.09299673, -0.023406554, -0.056500778, -0.004509834, 0.015919283, 0.015248476, -0.017741937, 0.010512532, 0.020088485, 0.013509991, 0.0353603, -0.09210096, -0.034513626, -0.03259201, 0.04079549, -0.0011448982, -0.016487045, 0.03130906, 0.04476396, -0.03844295, 0.010786976, 0.0050144056, -0.0011945711, -0.015429824, 0.052412942, -0.005097874, 0.014904401, 0.017130814, 0.033355657, -0.031969156, -0.035054866, 0.018679537, -0.012532603, 0.012306109, 0.0071783937, 0.029754218, -0.010340877, -0.03807936, -0.02294464, -0.06925835, 0.02606708, 0.0033081216, 0.0021645625, -0.00083149393, 0.044821095, 0.012690229, 0.015869036, -0.01904376, -0.03223952, 0.028937008, -0.016566625, -0.011978613, 0.013347518, -0.011412381, 0.037673306, 0.036777537, -0.013962976, 0.008471035, -0.010821663, 0.021393528, -0.011502672, -0.04823685, 0.017398117, 0.04124618, 0.040868692, -0.019161088, 0.014160902, 0.007812217, -0.045011878, -0.016248692, 0.0072896, -0.005647527, -0.011241109, 0.031585544, -0.020784287, -0.069612876, 0.018196963, -0.028966594, -0.031417206, 0.0041442066, 0.011162934, 0.00089474866, -0.029530788, -0.055427484, -0.009450336, -0.009980988, 0.0051669953, 0.06042257, 0.021292366, -0.05543361, -0.0035565495, 0.0025146953, -0.007874196, -0.024384197, -0.00430923, 0.0033657649, 0.02765457, 0.01410683, 0.039218713, 0.045397017, -0.04406191, -0.026186287, -0.031149903, -0.014275169, -0.017099315, 0.045900505, -0.0257253, -0.028528914, -0.0134844845, -0.013241413, 0.00029994996, 0.0019843946, -0.05567234, -0.0075885295, -0.0120163625, 0.052658305, -0.029320616, -0.02505934, -0.0063984226, 0.0014405759, 0.017161421, 0.029679744, 0.00492166, -0.020772718, -0.03623375, -0.004947134, 0.02632214, -0.06424234, 0.0036213347, 0.04554444, -0.009478265, 0.04235824, 0.0019442547, -0.05056095, 0.0035006914, -0.016307482, 0.034484044, -0.025999742, 0.04801163, -0.037109625, 0.02290128, 0.01831021, -0.0052940147, 0.008182309, -0.021254618, -0.02720439, -0.036808398, -0.012197582, -0.011415952, -0.005916742, 0.0074814046, 0.009524177, 0.006171802, -0.0067009227, -0.039075114, -0.010467131, 0.013009564, -0.028967297, 0.02053994, 0.005561317, -0.011338414, 0.023631262, 0.006037768, -0.03193957, -0.053097263, 0.004714671, -0.02067525, -0.0011161403, 0.038119406, 0.07242873, 0.0056613004, 0.0067641777, 0.026812874, -0.07171865, -0.014955668, 0.004489812, -0.035157397, 0.00240164, 0.03335872, -0.009183161, 0.008730559, -0.01196331, -0.013061086, -0.02748929, 0.021772388, -0.015266713, -0.0075681247, 0.010331949, 0.02916908, 0.0381569, -0.0076471935, 0.007716059, -0.020427203, -0.0154841505, 0.02542178, -0.03405248, 0.002087917, 0.013022318, 0.04711051, -0.00045515364, 0.006119387, 0.019353913, -0.037217133, -0.0151071735, -0.04671874, 0.037228484, -0.0046461634, 0.058193352, -0.007886695, 0.019944632, 0.04436938, 0.02912958, 0.04850007, 0.02351355, 0.043248333, 0.031954873, -0.046879932, 0.03563334, 0.050418116, -0.048402637, 0.007915515, 0.04734567, -0.051186867, -0.018921437, 0.034573313, -0.013091693, -0.0047589, 0.00795046, -0.00025633478, 0.079772405, -0.017242022, -0.032399695, -0.046619773, -0.015872862, -0.029964387, -0.025794942, 0.033309747, -0.020771949, 0.018030155, -0.030680085, 0.02101588, 0.024036806, -0.0074757934, -0.014172125, 0.011654179, -0.01886777, 0.0057306765, -0.041027848, 0.006319354, 0.046280034, -0.033022553, -0.026427478, 0.026229296, -0.0033025104, 0.018873908, -0.037104014, 0.008688371, 0.014700625, 0.020875089, 0.031046351, -0.026036473, 0.0057561826, -0.02648155, 0.050097764, 0.03882898, 0.009159696, -0.020806734, 0.0018101572, -0.019737013, -0.032530285, -0.070655555, 0.02864012, 0.014640414, -0.0113848355, 0.065238096, 0.0324604, 0.010438692, 0.055378515, 0.038150776, -0.052543383, -0.028448313, 0.037147373, -0.011729675, 0.022194002, 0.026934281, 0.009108684, -0.05663341, -0.034969676, -0.045809705, -0.020032883, 0.007830326, 0.013049401, 0.010646183, 0.033210784, -0.028289158, 0.019489095, -0.005990582, -0.05428482, -0.010112088, 0.0279586, -0.009888656, -0.011436356, -0.022823233, -0.009145157, -0.055481046, -0.0483552, 0.015167814, 0.00910945, 0.00887709, -0.0074090958, 0.011208334, -0.07795026, -7.345713e-05, 0.03299271, 0.0017170605, 0.044996575, 0.07934391, -0.044837415, -0.015082178, -0.030636724, -0.01835, 0.021662585, -0.046549376, 0.02856054, 0.02709752, 0.03490591, -0.0022631427, -0.051415913, -0.01089002, 0.062189624, 0.01994157, 0.014552674, -0.009837135, 0.032506566, 0.04660702, -0.03653115, 0.05037374, 0.01018529, 0.028681068, -0.0058587166, -0.05909524, -0.03104992, -0.003330248, 0.014641434, -0.08676308, 0.009087259, -0.067996815, 0.013188934, 0.020385884, 0.029280828, -0.019914024, 0.0067782057, 0.03992242, -0.021267882, -0.022841109, -0.00052669784, -0.022304442, -0.016444195, 0.025501868, -0.0047017667, -0.02215485, -0.027695889, 0.043928616, -0.009455821, -0.000977388, 0.08181084, -0.0034765245, 0.021366844, -0.030076614, 0.04996411, 0.010031107, 0.00034841127, 0.007232467, -0.017102104, 0.023780726, -0.02748674, -0.007214102, 0.03169063, -0.00027546423, 0.025028476, -0.04390084, 0.031976297, 0.038771592, 0.053531885, 0.034110636, 0.027837193, 0.044319645, -0.018637707, 0.028531209, 0.00082001626, 0.0036958118, 0.011438907, 0.029092085, 0.016993083, 0.006423673, 0.03297103, 0.030513277, 0.039464843, 0.008956669, -0.018986627, 0.04246026, 0.007389583, -0.010616086, -0.01783886, -0.040633272, -0.032275226, 0.0012242856, -0.0076851975, 0.023289481, 0.033606637, -0.027896367, -0.0014698441, 0.030979525, 0.022973718, -0.029661657, -0.04462725, 0.044738453, 0.019111097, 0.007560473, 0.0033953518, 0.062703826, -0.057183567, 0.030568369, 0.008254745, -0.013627828, -0.008745479, -0.024648916, -0.047786925, 0.039454643, 0.026016578, -0.0035096186, 0.0041397433, 0.07770132, 0.026856743, -0.0326318, -0.00025812018, 0.018867644, -0.053916518, -0.025189675, -0.033153653, -0.07272664, -0.004172773, 0.009522901, -0.017178511, -0.0064550457, -0.026454005, 0.021267882, 0.020193474, -0.054684754, -0.010171263, -0.005657729, -0.03100401, -0.040752385, -0.035865318, 0.025359035, 0.048893373, -0.084645055, -0.023437927, -0.016645182, -0.04812768, 0.0019588568, 0.04108396, -0.041562963, 0.037552472, 0.009280595, 0.013976878, -0.060818426, 0.004236028, 0.063623056, 0.008983705, -0.03611859, -0.023851123, -0.05505408, -0.012570862, -0.0030469405, 0.0498325, 0.018379586, -0.005211375, 0.03349033, 0.021137033, 0.0006176903, 0.0067759105, -0.0062152897, 0.016561586, 0.0050267125, -0.019202918, -0.0008631213, 0.012043398, -0.018142127, 0.033420954, 0.046265747, -0.002727606, 0.05716725, -0.013949203, -0.008528169, 0.023547603, 0.049375437, -0.025358524, 0.0023215516, 0.061167344, 0.020482296, -0.056627285, 0.020921, 0.011088966, -0.059757378, 0.012919018, 0.033821907, -0.01339955, -0.00037748803, -0.045465883, -0.04720845, 0.006931497, -0.04556995, 0.020695526, 0.059079938, 0.0025919145, -0.05273814, -0.015815727, -0.026343053, -0.026952136, 0.006957513, -0.015091359, 0.048518438, 0.004831847, -0.027083237, 0.04737169, -0.044151817, -0.00403096, -0.024689758, -0.03757077, -0.045412835, -0.050061032, -0.0031657983, 0.0056664017, 0.007563024, 0.035949104, 0.010701595, -0.0020297633, -0.0039429646, -0.037589647, 0.016451592, 0.032340523, -0.00024230652, -0.042605136, 0.014935263, -0.0056468975, 0.014016029, 0.02607422, -0.053362522, -0.0007406927, -0.016259277, -0.05716189, -0.050864983, 0.07024542, 0.010092194, -0.015979987, 0.03271087, 0.031915084, 0.02272529, -0.030947896, -0.003620155, 0.010133513, 0.025626337, 0.020575138, 0.039383225, -0.02542382, -0.066180795, -0.050750714, 0.066286385, -0.006458744, -0.043935526, -0.055851903, -0.026486905, 0.031855907, -0.006306856, -0.017846256, -0.034547295, 0.010150348, -0.026997792, -0.02242381, 0.019993601, -0.033510737, -0.025325878, 0.020045636, 0.029576443, 0.018859098, 0.025871195, 0.038249742, -0.008624199, 0.041522536, -0.03140586, 0.059243176, 0.025749784, -0.042941492, 0.0095542725, -0.031833462, 0.01854716, -0.021211768, -0.013645172, -0.034599967, -0.05043597, 0.029997036, 0.011497062, -0.010984901, -0.0071294224, 0.0031578913, 0.024968157, 0.0070350505, -0.009851928, -0.008092782, -0.007323268, -0.030630603, -0.016301872, -0.024562992, 0.016456949, -0.03670102, -0.023974316, -0.042253662, 0.021302568, 0.030888725, 0.0124367, -0.0102891, 0.023691965, -0.030882603, -0.001346204, -0.0044497037, 0.07547312, 0.03336586, 0.0031160617, 0.050709907, 0.007830326, 0.06875409, -0.03455648, -0.04074116, 0.07473039, -0.0060464405, -0.035731792, -0.017310377, 0.0052266787, 0.029439988, 0.0027179138, 0.029856242, -0.022162383, 0.018617302, 0.004360497, -0.0174476, -0.0086608, -0.04304792, -0.01260759, 0.046431027, 0.002413628, -0.014891775, -0.051913787, 0.03152943, -0.02838812, 0.009395371, 0.01458124, -0.0028416177, -0.06147393, 0.030977486, -0.028972717, 0.047750194, 0.055802934, 0.020204792, -0.019046823, 0.043652922, 0.0029887392, -0.021747394, -0.012329065, 0.054129746, -0.01895194, 0.023530766, -0.032106888, -0.012456595, 0.00083404453, -0.02276457, -0.019387454, 0.034612335, 0.036206204, -0.03314549, -0.0105921095, 0.024491834, 0.0063417987, 0.054662306, 0.031682596, -0.013705111, 0.05196837, -0.05415015, -0.057639364, 0.009162119, 0.02954201, -0.0053769094, -0.0036004195, -0.014917409, -0.0029535887, 0.023165777, 0.021212276, 0.07282892, 0.028581966, 0.030189862, 0.044286486, 0.03155188, 0.021581093, 0.008633253, -0.048877556, 0.021800445, -0.0011895974, -0.041523684, -0.08104158, -0.005607993, 0.008144559, 0.012247956, 0.031581465, 0.034701355, 0.0033627043, 0.027021512, -0.05489951, 0.017035423, 0.0010748206, -0.00495147, -0.0024313545, -0.057279218, -0.019786494, 0.04999064, -0.04604946, -0.04334583, -0.04344479, -0.016793627, -0.013132502, -0.021495137, -0.015029125, -0.013995624, 0.015960092, 0.014463913, -0.018742282, -0.047051333, -0.033038877, 0.05232596, 0.025802838, 0.0018817013, -0.04012545, 0.008782208, 0.019884437, 0.018121753, -0.042572487, -0.014967655, -0.014361889, 0.003450445, 0.013129442, 0.000454516, 0.0337136, 0.028673787, -0.030848933, -0.02663229, -0.04979169, 0.039635222, -0.052153543, 0.011113453, 0.029603224, 0.008002348, -0.079680584, -0.028450357, 0.0075857244, -0.03125652, 0.001478516, -0.043501925, 0.030348731, -0.002036395, 0.002520498, 0.01968549, -0.010917566, -0.030334735, -0.03581443, 0.013526315, -0.012535663, -0.064201534, -0.04293569, -0.013972414, -0.033066932, -0.045508735, -0.020493519, 0.027864737, -0.013250851, -0.019929329, 0.038437337, -0.018896338, -0.01594683, 0.033639286, -0.063328214, 0.017202232, -0.031185612, -0.043874312, 0.033725493, -0.037412126, 0.024624335, 0.013914388, 0.0393567, -0.06512791, 0.0040666685, -0.0033249555, -0.010575372, 0.029454269, 0.02702572, 0.0072526163, -0.0047818553, 0.0052123955, 0.0230283, -0.022459773, -0.091021545, -0.036505133, 0.0012783582, -0.016120015, 0.012144913, 0.044588476, -0.0010677108, -0.0036458203, 0.008114973, 0.012289786, 0.018381562, 0.025067246, 0.038096707, 0.0075896773, 0.00030626266, -0.0072648595, 0.004506901, 0.026102787, -0.009365976, -0.03511659, -0.00094193465, 0.051754627, 0.029396117, 0.018099021, 0.052256588, 0.028183052, -0.015549446, -0.022239147, 0.0013788515, 0.010649499, -0.069266, 0.004377841, 0.03756516, 0.0076834117, -0.01916619, 0.021554057, -0.01101755, 0.009544835, -0.050575238, -0.018069945, -0.041052334, -0.0597033, -0.027847648, -0.018067393, 0.019901399, 0.0060941363, 0.014040514, 0.00016425831, 0.056444664, 0.04056874, 0.031575345, 0.031076448, -0.012414256, 0.034398343, -0.0020312937, 5.6113087e-05, 0.037491705, -0.037183594, -0.012133179, 0.026173184, -0.06598402, 0.01880002, 0.0338821, -0.023125222, 0.0079429345, 0.004257963, -0.075497605, -0.0029414734, -0.020407055, -0.0092558535, 0.025895806, -0.028762037, 0.050769083, 0.020142047, 0.00135054, -0.058955472, -0.037675347, -0.030983604, -0.015308159, 0.04042999, 0.010043733, -0.025276395, -0.013608572, -0.012163276, 0.01710531, -0.047185495, -0.027775979, 0.08527964, -0.0016107644, 0.04120537, 0.051730912, -0.027564278, 0.06616651, 0.02917902, -0.03686681, -0.03181867, -0.011192137, -0.0020653442, -0.04330706, 0.02933388, -0.0037392997, 0.06650319, 0.060936768, 0.0439294, -0.00514608, -0.07060659, 0.0029552467, -0.016285038, -0.039448522, -0.023861324, -0.038236476, -0.0031529178, -0.0018167887, 0.01224158, -0.0073125553, -0.03069488, 0.048131768, 0.016008554, 0.010196258, -0.0025781412, -0.009188039, -0.037128497, 0.0357448, -0.0029097188, 0.058137238, 0.025693672, 0.032651693, -0.029531298, -0.009463217, -0.036635723, 0.013084551, 0.008241227, 0.030229777, -0.016278917, 0.020122154, -0.027248004, 0.022780892, -0.0002713833, 0.046937067, -0.041472673, 0.03803804, 0.0021282164, -0.032470092, 0.0056616194, 0.030472467, -0.0108033, 0.039326094, 0.006334658, -0.013858593, 0.00111461, -0.016750267, 0.09539633, 0.010513041, -0.011730186, 0.010601356, -0.014694488, 0.021081941, 0.04575155, -0.006568037, -0.038907796, 0.007209001, -0.022587556, -0.0008156802, 0.02338972, -0.022737531, 0.004652285, 0.030588645, 0.0778462, -0.009248329, -0.03562977, -0.041802205, 0.046022933, -0.016202142, -0.030226845, -0.030764764, -0.014404739, -0.028016755, -0.022084836, 0.023209902, -0.002469996, -0.005711802, -0.07982342, -0.017768463, 0.011369787, 0.03443099, 0.010355415, 0.046277486, 0.012041869, -0.03962196, -0.018751973, 0.0045390506, 0.003240403, 0.056810927, 0.010967558, 0.036289863, 0.035703227, 0.030250054, -0.009577993, -0.003283636, -0.03924753, 0.02855646, 0.045393445, 0.02611299, -0.018621381, 0.009474233, 0.03447805, -0.014226963, 0.009213769, -0.01526684, -0.009499435, 0.04074014, 0.014261906, -0.034995183, 0.0031714097, 0.0002632214], [0.008147786, -0.09156627, -0.029634379, -0.04650597, 0.00015921706, 0.04468998, -0.01873718, -0.03867224, -0.0008248444, 0.063793525, 0.025279667, 0.01860026, -0.034367543, -0.004759006, -0.011664942, -0.0038808116, 0.02697984, -0.042301722, 0.061074328, 0.051474627, -0.013288958, -0.0055217477, -0.013347974, 0.01311165, -0.016394563, 0.025040217, 0.010457059, 0.048922148, -0.009834362, 0.01685617, -0.002514129, -0.0361231, 0.0025400748, -0.01944407, 0.0057234783, -0.027747113, 0.020176385, -0.013863971, -0.03477267, -0.055760983, -0.05125622, 0.034387134, -0.0056042736, 0.013650205, -0.0075065424, 0.059652213, -0.02044845, 0.021406567, -0.023630917, -0.033840086, 0.0254889, -0.0076881363, -0.03201638, -0.004398892, 0.0041846577, 0.015399405, 0.040665787, 0.019495336, 0.0060377438, 0.0023974255, 0.0011009735, 0.0075421007, -0.07306729, -0.004528933, 0.0016159281, 0.025809001, -0.0033129235, -0.007428184, -0.042600147, -0.05392373, -0.011505933, 0.025393037, 0.023128206, -0.006048581, 0.020864936, 0.014385386, -0.07532717, -0.020043844, -0.020796582, 0.00879049, 0.009178322, 0.018290788, -0.017112082, -0.045765735, -0.047361653, 0.0015531739, 0.0041188034, -0.00706682, 0.03843133, 0.03455427, -0.043588795, 0.0026281234, 0.06517396, 0.00078045536, -0.00952739, 0.008206764, 0.024546102, 0.043051124, 0.0023790863, 0.032657314, 0.05507243, -0.026613317, -0.016390188, -0.022200359, 0.00047442096, -0.002327768, 0.023950912, -0.0056209457, -0.015782183, 0.002797552, 0.005283339, -0.0055592074, 0.012049647, -0.07912171, 0.017328193, -0.013127071, 0.05057184, -0.007918339, -0.037220947, 0.0027164847, 0.035314508, 0.039252423, 0.024815354, 0.052609984, -0.035452053, -0.0060154456, 0.004994497, -0.009416522, -0.06265941, 0.017799383, 0.011934611, 0.016986417, 0.03721761, -0.00932962, -0.04752754, 0.03313382, -0.008050048, 0.055504233, -0.02195945, 0.03580008, -0.04153981, 0.013012452, 0.017717483, 0.0043797195, 0.024322385, -0.014979324, 0.0056680436, -0.03538953, -0.0038028702, -0.0040462282, -0.017868364, -0.0050645196, -0.0137726925, 0.0029617709, 0.023235686, -0.044071447, -0.0026546423, 0.018299125, -0.05682465, 0.0056984704, 0.0018080722, 0.0117907105, 0.0014062783, 0.007981015, -0.011620865, -0.05744414, -0.0008777778, -0.0048515876, -0.009891463, -0.012868657, 0.0761441, 0.005357216, 0.015593269, 0.01509238, -0.0688868, 0.0005223528, 0.039289515, -0.019856494, 0.033774856, 0.0034315025, 0.0029285308, -0.0012520629, -0.01219386, 0.00020225151, -0.024381883, 0.04548773, -0.0041604834, -0.025767894, 0.029123174, 0.028260611, 0.0069751246, -0.004556442, 0.00078295614, -0.008229792, -0.006416093, -0.0034727657, -0.046836488, 0.011365681, 0.010577098, 0.042682413, -0.0044922554, -0.0064249504, 0.029619373, -0.04170591, -0.024475507, -0.0126790125, 0.06441122, 0.0033902396, 0.062468104, -0.007650468, -0.010831762, 0.017137924, 0.01214426, 0.042323396, 0.025367688, 0.034896877, -0.011742623, -0.023601219, 0.038853858, 0.051859748, -0.03112183, -0.0006802983, 0.050039172, -0.038891476, -0.061209373, 0.008878018, -0.024751166, -0.0077997604, 0.011528604, 0.0004493089, 0.05769826, -0.01022136, -0.0133392215, -0.05860021, -0.0023555371, -0.030077437, -0.009564694, 0.046451785, -0.05516402, 0.01691702, -0.0024949564, 0.045905363, 0.008631899, -0.0043142303, 0.0014579614, -0.02313649, -0.02176022, 0.0015375699, -0.035311174, 0.00027842144, 0.057238113, -0.008390156, -0.043718625, 0.029051486, 0.015835846, -0.006831329, 0.018326946, -0.01872301, 0.025264664, 0.037468825, 0.035154458, -0.04209332, 0.01142695, -0.050543495, 0.03913728, 0.015025171, 0.026867671, -0.023808785, -0.012186357, -0.037752364, -0.032901663, -0.05182755, 0.038317125, 0.00150631, -0.029265929, 0.037625864, 0.012982859, 0.03726596, 0.05077732, 0.024126124, -0.057481527, -0.0002582067, 0.022934759, -0.046824194, 0.008656072, -0.0041604834, 0.026106594, -0.037102055, -0.0035026711, -0.040892944, -0.026995212, -0.008766942, 0.02342877, 0.020121368, 0.033681493, -0.021101678, 0.05275787, -0.006663984, -0.053261857, -0.017579105, 0.02071989, -0.009813106, 0.030849764, 0.041399144, -0.0041213045, -0.04999916, -0.03639652, 0.03812707, 0.0069126044, 0.00888724, 0.0012362245, -0.030521743, -0.071611, 0.011193543, 0.016877426, 0.013571586, 0.028797708, 0.07807805, -0.035973884, -0.009901467, -0.0034836025, 0.010905951, 0.0038228764, -0.059547182, 0.03656949, 0.05162634, 0.016086634, 0.01838832, -0.047575682, -0.023799982, 0.04941564, 0.047721565, -0.0013575652, -0.0055938535, 0.02462196, 0.014035067, -0.010984414, 0.012656975, 0.0026852249, 0.025197037, -0.010734335, -0.08006534, 0.0010084441, -0.011845415, 0.058226764, -0.07968856, 0.0029983448, -0.07136925, 0.0018639232, 0.007990862, 0.030817566, -0.0287622, 0.013477599, 0.005615944, -0.021942778, 0.0305157, 0.010242408, -0.009039528, -0.013907162, 0.008923657, -0.0075858384, -0.019700088, -0.022314144, 0.041037988, -0.0010486653, -0.013157498, 0.070062175, -0.02668928, 0.024365628, -0.028680744, 0.063653484, 0.014978186, 0.01310175, 0.018314963, 0.020532018, 0.060644194, -0.05619445, -0.00022603507, 0.029657718, 0.00067708927, 0.028325215, -0.019910468, 0.059271675, 0.030145373, 0.008417664, 0.044284016, 0.025830258, 0.003417201, -0.05158466, 0.045817837, -0.008795179, 0.050435964, 0.017117083, 0.014928371, 0.028970836, 0.027090656, 0.054248005, 0.022663357, 0.013212515, 0.00085964706, -0.026045118, 0.03160667, 0.005968556, 0.023659987, -0.049292266, -0.023340719, 0.0010136542, -0.026836826, -0.012822808, 0.029627709, 0.02224704, -0.02382379, -0.0005677839, 0.03649155, 0.02852903, -0.019922867, -0.014411227, 0.028546534, 0.013810621, 0.013345473, -0.0024474412, 0.05160133, -0.061344415, 0.044245668, 0.034928974, -0.010545003, 0.038002025, -0.0522532, -0.017850649, 0.020405624, 0.040085185, 0.037829474, 0.038671408, 0.084986895, 0.020524621, -0.03813957, -0.0014985993, -0.015840013, -0.059345447, -0.011058084, -0.052039806, -0.05783997, -0.01352428, 0.0042194603, -0.008228021, 0.0029355125, -0.049532343, 0.03199763, 0.021814404, -0.05728313, 0.009423399, -0.011039328, -0.02095262, 0.0019261304, -0.023754185, 0.04072789, 0.081659175, -0.0403461, -0.027503911, -0.0215414, -0.03310673, 0.010134249, 0.011802069, -0.041788124, 0.01455471, -0.0072281207, 0.030083796, -0.038167913, 0.02453641, 0.03339807, 0.02602907, -0.056047738, -0.04444198, -0.043249726, -0.020203372, -0.011792898, 0.050112735, 0.019014351, -0.010750903, -0.0019339453, 0.00213776, 0.027935924, 0.041728206, -0.014172819, 0.02503459, 0.0047842227, -0.017283805, 0.0038814368, -0.046310905, -0.014437903, 0.010349525, -0.00647705, -0.005315015, 0.07264966, -0.03352561, -0.035601266, 0.026490884, 0.01415448, -0.04232256, 0.0010186557, 0.035385367, 0.03609559, -0.037310977, -0.0016359345, 2.2298726e-05, -0.06136442, 0.030340696, 0.03228876, 0.0008991387, -0.0013020788, -0.011138525, -0.03833729, -0.008096208, -0.028694082, 0.059715565, 0.012810721, -0.004525599, -0.054899875, 0.006496639, -0.028163081, -0.04844742, 0.0022609239, 0.0031697531, 0.036976703, -0.0133448485, -0.039605867, 0.019557856, -0.03172504, 0.021270774, 0.006362326, -0.006412628, -0.020913493, -0.040850222, 0.030386284, 0.014505425, 0.011711206, -0.014838915, 0.019666849, -0.022228703, 0.0066245967, -0.024637798, 0.043050084, 0.022907667, 0.008893022, -0.016943697, -0.03748603, -0.015272333, 0.018920364, 0.015360695, -0.0145587735, 0.019545352, -0.020558069, -0.08511361, -0.041412584, 0.046629757, -0.017704353, -0.012284304, 0.04010269, 0.035657953, -0.003742226, -0.052180678, -0.012788214, 0.029117133, 0.0064586583, 0.007223119, 0.030238738, 0.009002016, -0.042512618, -0.06375893, 0.03890731, -0.007495289, -0.03473266, -0.048690826, -0.03153206, 0.03798452, -0.0032487365, 0.02003905, -0.009789556, -0.013703751, -0.036920853, -0.004768593, -0.025201308, -0.008754021, -0.023986029, 0.015812166, 0.0129674375, -0.003731181, -0.018243326, 0.0412616, 0.007364831, 0.044560768, -0.009769759, 0.04027608, 0.024907883, -0.03114819, -0.009128722, -0.026640931, 0.026989792, 0.007256359, -0.040116027, -0.030765362, -0.03384738, 0.01470257, -0.006528316, 0.0009423816, -0.034984406, -0.009367548, 0.034573026, -0.0033008363, 0.027459523, 0.023448018, 0.010700887, -0.017486628, 0.002932178, -0.013741979, 0.013753312, -0.02854841, -0.0070962566, -0.045476057, -0.025396788, 0.008118611, 0.012572313, 0.0058660232, 0.03446424, -0.031601667, 0.02127986, 0.0007125171, 0.042426344, 0.008062552, -0.016765514, 0.048018534, -0.003715616, 0.051462952, -0.017687682, -0.0750921, 0.08622521, -0.033944074, -0.03819042, -0.03297877, -0.022067191, 0.0136882905, 0.019103287, 0.002128382, -0.034675974, 0.01907687, 0.036114763, 0.026713455, -0.031651475, -0.029498503, 0.0043860106, 0.068032935, 0.009814981, 0.021216715, -0.028695332, 0.025558922, 0.016878676, -0.008543069, 0.0009842699, 0.013660157, -0.0293868, 0.041180532, -0.025244657, 0.015571907, 0.041378096, 0.0402394, -0.02310398, 0.008381194, -0.05606941, -0.00076284556, 1.4171152e-05, 0.026278941, 0.030650534, 0.026265863, -0.026651768, -0.009903134, 0.0077357814, -0.040901277, -0.050402615, 0.0013477183, 0.01693661, 0.0028367313, -0.021709265, 0.025678126, -0.002082586, 0.03173004, 0.01600048, -0.018409159, 0.044939224, -0.046861496, -0.034792263, -0.028805366, 0.0352845, 0.0418621, 0.002375752, -0.020525245, -0.0014487918, 0.068244934, 0.0441794, 0.03500441, 0.027321354, 0.036316305, 0.056246135, -0.0069121877, 0.03137493, 0.04691735, -0.007961687, -0.00025424713, 0.02087744, -0.027571226, -0.04526349, 0.0019064366, 0.009842698, -0.01697829, 0.05363864, 0.044522427, 0.004977669, 0.057518203, -0.042967763, -0.0052181096, -0.0013129155, -0.03344663, 0.008681915, -0.062196348, -0.04419899, 0.015754987, -0.009863955, -0.04286023, -0.048443247, -0.019221917, -0.021314453, -0.031153401, -0.014816773, -0.04127869, 0.017277969, 0.011395481, 0.01455294, -0.01050494, -0.05736357, 0.014804164, 0.005545505, -0.006922816, -0.04289274, 0.04670478, -0.014971404, 0.02083201, -0.08497022, 0.006963975, 0.008391405, 0.028224764, 0.0067042047, -0.01584668, 0.031106513, 0.025294177, 0.027462129, -0.0055221645, 0.00019078955, 0.02935846, -0.024223827, 0.0077111903, 0.016372683, -0.015881693, -0.037800297, -0.017243791, 0.019028522, -0.019998413, 0.022635497, -0.022493368, 0.004266142, -0.008775694, 0.008634191, 0.034993157, 0.017828142, -0.0011203546, 0.012845731, 0.008004513, 0.013374962, -0.06786981, -0.018143712, -0.014820471, -0.06161432, -0.02670512, 0.0062636747, 0.029879456, -0.03798619, -0.041939937, 0.052012295, -0.013767691, -0.037347473, 0.011053914, -0.045349143, -0.006454126, 0.008063047, 0.008135492, 0.02330946, -0.026527146, 0.038151033, 0.0038112062, 0.029240504, -0.04697153, 0.012887413, -0.02224871, -0.03334889, 0.05722186, 0.01904436, 0.02487433, 0.0044914214, 0.011499369, -0.008442881, -0.026892262, -0.061733756, 0.017191274, -0.0047123246, 0.001838238, 0.032681175, -0.0029649488, 0.032069944, -0.00038772688, -0.003719719, 0.03906903, -0.023133779, 0.006950533, 0.013023288, 0.008137471, 0.011050113, -0.022640498, -0.015612493, 0.00522457, -0.010724228, -0.021140441, 0.030059513, 0.04783764, 0.03630941, -0.007006527, 0.057013042, 0.011469464, 0.01815189, -0.022327898, 0.0008644923, -0.027635414, -0.065130614, -0.0041171364, 0.06787482, -0.01930215, -0.0040462804, 0.027760454, 0.006749428, 0.0412864, -0.06178622, -0.026814736, -0.05439055, -0.056537893, -0.029115047, -0.011385269, 0.0013637649, 0.0104462225, -0.008620229, -0.021796899, 0.055471096, 0.03644445, 0.048807945, 0.0016271817, -0.019266931, 0.058766935, -0.040701006, -0.015344856, 0.05742651, 0.0036961697, 0.026514433, 0.042810213, -0.03208599, 0.026219966, 0.019006016, -0.046398018, 0.062069643, 0.018351927, -0.06003671, 0.019150851, -0.01623097, 0.0052304054, -0.006654606, -0.045118865, 0.019133555, 0.017342154, 0.011490303, -0.0662393, 0.0013658489, -0.01150114, -0.026352117, 0.049362287, -0.00014254512, 0.0070566083, -0.010588664, -0.0033587713, 0.028008344, -0.0053660735, -0.011150404, 0.04740667, 0.00811215, 0.08746101, 0.019846281, -0.06952534, 0.072132826, 0.006190631, -0.032034304, -0.01998966, -0.00081275724, 0.020153878, -0.022431605, -0.010278774, -0.0068900976, 0.019381968, 0.054742325, 0.066215955, -0.005509973, -0.102112316, -0.039516464, -0.011974702, -0.016102597, -0.038938574, -0.025346773, 0.009462162, 0.006075621, 0.048761472, -0.006661952, -0.012473947, 0.05698137, 0.010128413, -0.029209452, -0.0034448402, -0.009900216, -0.06629765, 0.02032143, -0.035364054, 0.058931988, 0.037513852, 0.052578617, -0.050652698, -0.0063115805, -0.032434434, 0.030128703, 0.017317146, 0.015201477, -0.013347453, 0.06232056, -0.036030464, -0.010394853, 0.047050618, 0.046594333, -0.050020833, 0.064221054, -0.011042114, -0.040119365, -0.018185755, 0.04801686, -0.038835727, 0.05918873, 0.0018180754, 0.011248769, 0.02775743, -0.035383698, 0.09126888, -0.006831745, 0.020574898, 0.029100042, -0.026864752, 0.009721827, 0.014894714, -0.03696378, -0.011409705, 0.007345658, -0.013024539, -0.013343807, -0.0024741164, -0.012078406, -0.02345284, -0.003259365, 0.047771785, -0.033974085, -0.035658818, -0.032899994, 0.06366348, -0.025452638, -0.03754855, -0.035036817, 0.012252212, -0.051229127, -0.011992754, 0.0006260314, -0.032738484, 0.023324883, -0.070135534, 0.026140774, -0.015974222, 0.018377066, -0.007818933, 0.023347182, 0.01293451, -0.02072489, -0.011978375, 0.010454975, -0.019737601, 0.017904833, 0.021662688, 0.035746314, 0.023784194, 0.023808265, 0.0009746835, -0.0047106575, -0.046224628, 0.029159905, 0.0633513, 0.0042142505, 0.0068765515, -0.000523499, 0.034484245, -0.014464161, 0.02712942, -0.0068338295, -0.0041729873, 0.048842125, 0.031370867, -0.0112211425, -0.0059972624, 0.005818925], [-0.018510899, -0.0727343, -0.029168453, -0.056703947, -0.00031309275, 0.061519884, 0.014507174, -0.029292474, 0.031482495, 0.038508784, -0.0044103386, 0.042851828, -0.044449415, -0.023650449, -0.02111526, 0.020133898, 0.0032088961, -0.04098913, 0.06440034, 0.019024452, 0.003349076, 0.012329349, -0.049347486, 0.025994629, -0.007382128, 0.02309791, -0.014158502, 0.045622088, -0.010205605, -0.011411571, -0.006265922, -0.03286661, 0.009833553, 0.02287773, 0.0033464332, 0.0026149345, 0.011516121, -0.017442927, -0.04438598, -0.061897628, -0.057570033, 0.011372791, -0.018061794, 0.025030345, -0.0076477993, 0.015501752, -0.0040384904, 0.037288535, -0.011791857, -0.04669108, 0.03225303, -0.039319776, -0.021231554, 0.01790484, 0.0034264855, 0.022060841, 0.017042108, 0.03092035, 0.024013141, -0.006158576, 0.0069008493, -0.005136755, -0.033907745, 0.009225055, 0.02408507, -0.01535415, 0.00372926, 0.0012274152, -0.031919148, -0.042513933, 0.001754946, 0.034423534, 0.043177526, -0.009231154, 0.023308944, 0.016717933, -0.058680907, 0.001829763, 0.0026893448, 0.022558207, 0.019476365, 0.015568793, -0.0017982504, -0.039901845, -0.05793558, -0.005340468, 0.007591483, -0.0019753308, 0.029050944, 0.026759367, -0.027411884, -0.009448896, 0.069112174, 0.023129424, 0.004860664, 0.013206009, -0.0023494156, -0.00929113, 0.01144049, 0.014192455, 0.014614317, -0.023830019, -0.023557587, 0.0044874935, -0.00015746127, -0.01765518, 0.007380857, 0.02576306, -0.024348045, 0.006457437, 0.0060510263, 0.007826506, -9.026831e-05, -0.06828462, 0.007904169, -0.043529958, 0.05275125, 0.014074537, -0.049845997, -0.029690955, -0.025257234, -0.0015063015, 0.0044831224, 0.029913777, -0.0373662, -0.012309324, 0.006415403, -0.03768336, -0.08989422, -0.0051587117, 0.036762375, 0.010782386, 0.026795162, -0.013620349, -0.03505582, 0.026338829, -0.0167773, 0.041885003, -0.02281267, 0.0329951, -0.0637587, -0.008103817, 0.016410941, 0.013603678, 0.03589629, -0.018697942, 0.04388178, -0.02795715, -0.05643314, -0.011712923, -0.0013076706, -0.026301013, 0.0044324994, -0.020705597, 0.0060254093, -0.05171159, 0.006267548, 0.02422606, -0.05181238, 0.0033285422, -0.021080699, -0.0010016935, 0.031578455, 0.031824864, -0.019597167, -0.046819158, 0.002980379, 0.023585238, 0.025627254, -0.0029918659, 0.027054874, -0.020524248, 0.011938999, 0.00498956, -0.06184924, 0.00055817934, 0.041424207, -0.013733795, 0.01829763, 0.024905106, 0.0012743282, -0.0012631464, 0.010836263, -0.014484811, -0.015846051, 0.03129952, -0.028924486, -0.02875325, 0.01036703, 0.015018491, -0.0054771667, -0.021134984, 0.033904083, -0.028858207, -0.022738261, 0.011476273, -0.05046974, 0.028457897, -0.017635254, 0.04674109, -0.008420163, 0.009851482, 0.057840027, -0.018497022, -0.04507804, -0.038132258, 0.048211865, -0.0063740807, 0.07746159, -0.046105962, 0.008303057, 0.04451122, 0.03136168, 0.034856983, 0.022254797, 0.032341264, 0.025667507, -0.05484918, 0.032283526, 0.05144216, -0.008468143, -0.016018152, 0.048718862, -0.031462163, -0.040292192, 0.010459738, -0.011638181, 0.028397107, 0.014301428, -0.020022487, 0.04812195, 0.018141286, -0.020865802, -0.04167468, 0.024494428, -0.013531504, -0.016707921, 0.009768342, -0.07256759, 0.01816426, -0.02557236, 0.030152053, 0.02212956, -0.007125097, -0.021309013, -0.013756463, -0.02796203, -0.012248026, -0.011855034, -0.012132142, 0.040397912, 0.007998256, -0.049907804, 0.012481626, -0.023582594, 0.029758452, 0.013424157, -0.018287871, 0.02452045, 0.03810827, 0.03284465, -0.058401156, 0.038625076, -0.024074394, 0.045734316, 0.001130641, 0.05210921, -0.01822891, -0.014018119, -0.015177071, -0.01314339, -0.041570995, 0.009581452, -0.016214952, -0.039007295, 0.027269568, 0.002206694, 0.0008840805, 0.033378944, 0.003971983, -0.04250743, -0.0038366064, 0.0147942435, -0.036271594, 0.030088214, -0.004366221, -0.004615882, -0.021875832, -0.021749783, -0.029469756, 0.0017827991, 0.008664944, 0.009730209, -0.00046577633, 0.058562174, -0.04207723, 0.0106329555, -0.011985456, -0.049228754, -0.038382024, 0.04440469, 0.000717877, 0.008628349, 0.048179694, 0.00014007851, -0.01803013, -0.021339916, 0.047336377, -0.0070307627, 0.019101912, -0.03159553, -0.02107663, -0.07266598, 0.020593371, 0.015290465, 0.009340152, 0.027074596, 0.059827555, 0.015134376, -0.004817969, -0.022170627, -0.019903755, 0.021850215, -0.05987147, 0.036331773, 0.09128891, 0.012681885, -0.013536179, -0.039138325, -0.02756599, 0.014940624, 0.027071953, 0.0018143116, 0.01281322, 0.0007977767, 0.022347504, -0.014972849, 0.0075548883, 0.0016259477, 0.028202644, 0.0019850894, -0.10921326, -0.026152598, -0.0067065894, 0.08797419, -0.06618497, -0.023184622, -0.07319296, 0.01775358, -0.006093111, 0.021121971, 0.0025842353, -0.0075857905, 0.021278923, -0.009890122, 0.031075882, 0.03575252, -0.008363237, -0.020965423, -0.03478786, -0.008798313, -0.048019484, -0.08062017, 0.04821303, 0.029917846, 0.008412844, 0.048413903, -0.041009866, 0.02747328, -0.013332669, 0.039156266, 0.009748164, 0.0025125695, 0.0022380035, -0.009924939, 0.054499283, -0.057366725, 0.01019422, 0.032107662, -0.020994294, 0.020655992, -0.03266005, 0.052481867, 0.027888026, 0.0051471232, 0.05632498, 0.021594457, 0.00046577633, -0.031895995, 0.058910236, -0.0069160974, 0.03477688, 0.04177796, -0.009629839, 0.027244763, 0.006577795, 0.040983234, 0.032494962, 0.0018037397, -0.0047477265, -0.03577634, 0.0019460546, -0.0033407407, 0.030756688, -9.29113e-05, -0.028840318, -0.013613233, -0.05291024, -0.008854019, 0.051944938, 0.040902115, -0.013362963, -0.01441101, 0.020112349, 0.0253212, -0.027750693, -0.006749386, 0.02326808, 0.04398506, -0.0012663739, 0.011740166, 0.019948483, -0.013932629, 0.032550264, 0.031505264, -0.005459606, 0.041365247, -0.040899675, -0.048578985, 0.0020603829, 0.004900512, 0.039889645, 0.014312, 0.07786333, 0.014810102, -0.0094310045, 0.03001238, 0.012631463, -0.042122766, 0.00062943844, -0.029490901, -0.05654659, 0.031097027, -0.008662352, -0.015312472, 0.029243272, -0.021583477, 0.037635174, 0.02320058, -0.038146086, 0.0064724814, -0.024962846, -0.0019879357, -0.001420506, -0.04533746, 0.041872285, 0.070376754, -0.0071803965, -0.01250033, -0.018846761, -0.046193432, 0.01758382, 0.008519884, 0.002731633, -0.0049236887, -0.02704664, 0.050927587, -0.04641824, 0.007814308, 0.061688222, 0.025254793, -0.033266716, 0.0010181614, -0.037365183, -0.015957972, 0.00038724902, 0.021285428, 0.017252631, -0.019794375, 0.024434043, 0.0052355616, -0.003195986, 0.041773893, 0.016022827, -0.007107917, 0.0142725585, -0.017941436, 0.012252296, -0.040111046, -0.04494711, 0.021593438, 0.029703965, -0.017818639, 0.056470145, -0.010366623, -0.047816176, 0.017736502, 0.031973686, -0.009502569, -0.017003784, 0.03243072, 0.043938708, -0.047697447, 0.029557176, 0.019877732, -0.06446133, 0.04095091, 0.022180794, -0.008745759, -0.035057038, -0.019477421, -0.054609887, -0.0018021131, 0.013792753, 0.051789355, 0.029219687, -0.0123342285, -0.06130926, -0.015301291, -0.009845141, -0.015197605, -0.038795445, 0.006514363, 0.041489266, -0.042902656, -0.01607467, 0.028876098, -0.05597936, -0.013167787, -0.014753582, 0.012907554, -0.015066268, -0.030554602, -0.0011106661, 0.0024717047, 0.018275673, 0.003583489, 0.011287045, -0.036828045, -0.02114962, -0.019832626, 0.038798295, 0.029677942, 0.024733262, -0.015859572, -0.0043360805, -0.0042801206, 0.04084031, 0.019683776, -0.0053307097, -0.015496872, -0.038967747, -0.051825397, -0.06944316, 0.034724835, -0.029129827, 0.001893398, 0.040197045, 0.037101086, 0.0070506865, -0.035529118, 0.021158159, 0.04260827, 0.022913106, -0.024149617, 0.013978575, -0.0059975563, -0.057014603, -0.080678724, 0.0050916206, 0.014209126, -0.011227832, -0.032548636, -0.023623817, 0.022472132, -0.013954789, 0.016464004, -0.034946848, -0.0061248266, -0.010510159, 0.0055646137, -0.024008524, -0.017505342, -0.02420492, 0.04206666, 0.023967454, -0.0077967215, -0.009406608, 0.05624348, -0.005865254, 0.015391152, -0.013742536, 0.051429756, 0.018637558, -0.076819144, -0.023314433, -0.048909564, 0.017707633, -0.03671526, -0.029373795, -0.02541988, -0.04703711, 0.013080009, -0.0021135795, 0.0030512314, -0.018320348, -0.013316201, 0.013906606, 0.00046679284, -0.009002433, -0.0033952268, -0.00013418261, -0.05399183, -0.030858545, 0.01313038, 0.0015112825, -0.014521609, -0.02334249, -0.024008116, -0.0056176265, 0.000784765, 0.025160866, -0.010498773, 0.0041647437, -0.018251479, 0.033708706, 0.030167403, 0.027627796, -0.019490227, 0.012063423, 0.05660839, -0.008377061, 0.02046732, 0.0132503295, -0.060901016, 0.090587094, -0.010143697, -0.03455792, -0.04945077, 0.0039025794, 0.026497407, 0.006312276, 0.018347643, -0.026928011, 0.037699267, 0.014696656, 0.007160879, -0.03559336, -0.026270313, 0.02010147, 0.06432308, -0.013549191, 0.0021290309, -0.039312456, 0.05381028, 0.0121276695, 0.0067562982, 0.019377278, -0.02646447, -0.035198133, 0.06375463, -0.022917373, 0.038390055, 0.0065009445, 0.019885661, -0.03321223, -0.004607807, -0.04437826, -0.014753582, -0.028971653, 0.043088075, 0.022952545, 0.030656459, -0.00041474626, -0.022225115, -0.026040372, -0.038730796, -0.048182335, 0.019107604, 0.021143114, -0.008128214, -0.021119531, 0.0033870947, -0.022126306, 0.021260219, 0.014843037, -0.009222819, 0.052062042, -0.033004858, -0.01900839, -0.0027686346, 0.073532075, 0.04466858, -0.022667916, -0.0433788, 0.021805082, 0.019449262, 0.0345382, 0.010980611, -0.0018830295, 0.02622556, 0.017891016, 0.013619942, 0.02157819, 0.024960406, -0.021353334, 0.042336646, 0.010221463, -0.0012190287, -0.023882067, -0.012897796, 0.015596899, -0.011123638, 0.027295185, 0.021172391, 0.049143773, -0.0017614518, -0.03739222, 0.0010197879, 0.01762265, 0.009333215, 0.023383355, -0.049289744, -0.052654885, -0.006851446, -0.012558679, -0.03783543, -0.046885844, -0.01485784, -0.0034269427, -0.010682562, -0.055104326, -0.033780575, 0.00897458, 0.0007937105, -0.02243208, -0.019791529, -0.032273967, 0.032788664, 0.012356186, 0.020868143, -0.04199235, 0.054884758, 0.010887496, 0.0016695317, -0.06971641, -0.014275811, 0.022456478, -0.005374217, -0.00049932196, 0.00908335, 0.068596594, 0.04174909, 0.038094826, -0.017687608, -0.028629286, 0.056786086, -0.028853327, 0.025690278, -0.01638939, 0.004360122, -0.05166844, -0.010709806, 0.011425243, 0.0010287333, 0.013441032, -0.045559675, 0.011350833, -0.0142436875, 0.012772151, -0.0035188375, 0.022333274, -0.02219787, -0.008242574, -0.029037118, 0.0035616336, -0.07056542, -0.055252332, 0.000357617, -0.040345866, -0.055385705, -0.006977496, 0.030427331, -0.010979645, -0.03100696, 0.0019084428, 0.0039457823, -0.04026048, 0.030185396, -0.061973665, 0.032331176, -0.024983127, -0.04988666, 0.02618289, -0.06243883, 0.06252422, 0.025943598, 0.025745578, -0.025013672, -0.007123064, 0.0040864707, -0.011221733, 0.073227115, 0.014111132, -0.011700114, -0.0042287856, 0.055330407, 0.016962308, -0.051464323, -0.08203844, -0.017166024, 0.020256696, -0.009308208, 0.011065796, 0.015159586, 0.03294407, 0.030949017, 0.030875014, 0.017742602, -0.029402256, 0.022451801, 0.01952619, -0.0028926518, 0.034681734, -0.0135105625, 0.014904893, 0.010463601, -0.00073393824, -0.0019202345, 0.014597849, 0.038382735, -0.010155998, -0.024238719, 0.07167141, -0.014014358, -0.014522931, -0.049566247, -0.016898878, 0.03286742, -0.08246132, -0.015543582, 0.0630336, 0.0012043907, 0.00024152872, 0.04073784, -0.017217154, 0.055937886, -0.06462154, -0.012415959, -0.0638937, -0.01772898, -0.01828055, 0.012709127, -0.016658975, -0.035198946, 0.00241915, -0.031755738, 0.02522308, 0.036577165, 0.050373577, 0.019945228, 0.0056470553, 0.060256127, -0.010512192, 0.017068028, 0.052089695, -0.008358255, 0.020832054, 0.02994224, -0.033723343, -0.020112755, 0.043679286, -0.023213593, 0.016222272, 0.023806537, -0.05572889, 0.02699429, -0.0099779, 0.04002383, 0.025058808, -0.031357665, 0.0058317594, 0.022075783, 0.0054953876, -0.023163985, -0.024884775, -0.018787904, -0.008355409, 0.028380843, 0.0015821096, -0.0072466745, 0.0035851155, 0.014270575, 0.057881907, 0.016460141, -0.09139869, 0.049121413, 0.029650902, 0.06458982, 0.00036005667, -0.031727277, 0.07578004, -0.015766865, -0.034054127, -0.033399273, -0.020142438, -0.028371185, 0.0040810574, -0.0085421465, -0.0342247, 0.038893443, 0.009715584, 0.016132817, 0.0012340734, -0.05967467, -0.023817822, -0.008825963, -0.021968136, -0.06626873, -0.037191354, 0.019641286, 0.020429913, 0.07530572, 0.0030382199, -0.016614247, 0.058639634, 0.014917243, -0.02143547, 0.0005262602, -0.017438455, -0.04261884, 0.037684172, -0.034724835, 0.04013422, 0.042643644, 0.020575888, -0.023251409, 0.03429545, -0.055083185, 0.038869858, -0.005190021, 0.017093036, -0.035717685, 0.036401354, -0.026245307, -0.003114968, 0.0031593905, 0.04029382, -0.035351023, 0.06440847, 0.0043589016, -0.015061896, 0.008084706, 0.0297308, -0.076024614, 0.033090245, -0.025396297, 0.002295309, 0.039682273, -0.038442913, 0.063300446, 0.018044513, -0.003908882, 0.005433989, -0.026260352, -0.022633761, 0.012149423, -0.00481309, -0.0156769, 0.009124418, -0.047194876, -0.01622471, 0.036735136, 0.019451194, 0.004419894, 0.025035897, 0.041186742, -0.036421634, -0.05828115, -0.020879222, 0.06320733, -0.015166702, -0.034777693, -0.024829477, 0.009228512, -0.045306556, -0.0145860575, 0.029426655, -0.03236078, 0.028289037, -0.06267385, 0.057878252, 0.0031597973, 0.024110178, -0.0047325804, 0.02462251, 0.027068295, -0.003478786, -0.008155457, -0.0091691455, -0.021452142, -0.0058418233, 0.015618856, 0.0055486546, 0.024692856, 0.011673481, -0.028032985, 0.009991116, -0.024460679, 0.034168586, 0.050300993, 0.017402468, -0.022702072, 0.008007043, 0.062520154, -0.0023583611, -0.027580729, 0.02183629, -0.04355649, 0.050146483, 0.022589745, -0.024725739, 0.021442885, 0.010198082], [-0.02630582, -0.08194618, -0.027649147, -0.046629902, 0.033399817, 0.03354211, 0.012182545, 0.007386103, 0.023351716, 0.06656954, 0.019514907, 0.0074859047, -0.040207975, -0.011323145, -0.021039078, 0.0055984254, 0.01421751, -0.025015585, 0.03147471, 0.034326687, -0.015618846, 0.0148126455, -0.027138134, 0.03775823, -0.027159978, 0.047963336, 0.009146748, 0.03647324, 0.006058834, -0.005978387, -0.04055842, -0.06248144, -0.0012436861, -0.031269267, 0.0140644, -0.0135458205, 0.0103419935, -0.00811391, -0.038240913, -0.024843447, -0.04259544, 0.037071403, -0.0034968534, 0.022818862, -0.02231931, 0.05269371, 0.009944785, 0.035707265, -0.009976304, -0.03217365, 0.03273678, -0.04041731, -0.043159433, 0.042307384, -0.0043683634, 0.015394157, 0.02777652, 0.011602546, 0.019203499, -0.007849214, -0.03640058, -0.008973311, -0.084232435, 0.0023889758, 0.03311825, 0.033204753, -0.013981359, 0.026402216, -0.02962356, -0.061274737, -0.015621008, 0.042616848, 0.02145472, -0.02107076, 0.045506243, 0.015036092, -0.075845174, -0.00045543435, -0.022466365, -0.017296124, 0.0013987413, 0.015800068, -0.0006081108, -0.028636679, -0.029095897, 0.012873264, 0.0032137749, -0.0073911846, 0.023691451, 0.032524846, -0.047074955, -0.032052543, 0.06360164, -0.0050595165, -0.0038484852, 0.0019290001, 0.024879344, 0.04382204, 0.008517228, 0.018574629, 0.04700965, -0.040050972, -0.02930891, -0.032817222, -0.004195359, -0.008718129, 0.0012519038, -0.018274898, 0.005949192, 0.04066644, -0.010140658, -0.0015492553, 0.013798839, -0.028985282, -0.012359495, -0.009478051, 0.0295855, -0.011205502, -0.025926456, 0.031032681, -0.0018060589, 0.0345663, 0.025330454, 0.05032333, -0.0704284, 0.02057283, 0.006114844, 0.0029138285, -0.07347155, 0.0072938697, 0.03078961, -0.019906113, 0.056493104, -0.024466297, -0.019134298, 0.016827716, 0.0016015891, 0.017383708, 0.003929314, 0.05119376, -0.015635606, 0.0058267917, 0.0069833267, -0.0057599684, 0.008828419, -0.0049366835, 0.0031413294, -0.025119608, -0.0042827735, 0.004637602, -0.025865901, 0.0020494545, -0.014286928, -0.0052649593, 0.010519539, -0.039954957, -0.012324841, 0.0098552015, -0.048309773, 0.017867904, -0.00071148097, -0.0031607922, 0.0021262253, 0.02160491, 0.011595627, -0.06189409, 0.025493294, -0.004124427, -0.031551693, -0.01286029, 0.08102493, -0.015245156, 0.037066214, -0.0079426365, -0.08459271, 0.007389022, 0.010327504, -0.008528041, 0.033869956, 0.005224736, 0.004306082, -0.014570439, -0.028300941, -0.024687309, -0.010306743, 0.026446048, -0.007119568, -0.034867328, 0.015715728, 0.025695926, 0.03693473, -0.016852368, -0.0034029984, -0.047193572, -0.04238956, 0.034888085, -0.03813711, -0.023444707, -0.011048933, 0.061828345, -0.010002255, 0.023220446, 0.023019439, -0.046368666, -0.033732526, -0.027109804, 0.07462943, -0.0077782823, 0.030718679, -0.019641202, -0.0080611445, 0.021430608, 0.033710793, 0.03693565, 0.016596429, 0.008553343, 0.00051187706, -0.037453312, 0.018341072, 0.053567383, -0.00114875, 0.012008025, 0.025121983, -0.027012382, -0.025814867, 0.017735556, -0.002112385, 0.00423342, 0.023180008, -0.013144449, 0.09465076, 0.016281912, -0.01871633, -0.044381708, -0.005171105, -0.028331216, -0.017923482, 0.037818782, -0.036287695, 0.045450013, -0.010360833, 0.02862446, 0.01405575, -0.011416784, 0.026004305, -0.007824778, 0.0029488618, 0.030668508, -0.04575969, 0.004823798, 0.068159014, 0.048565824, -0.02306669, 0.027887028, 0.016087689, 0.039880134, -0.008919301, -0.017129824, 0.03633354, 0.025314668, 0.035311084, -0.025273362, 0.0024026001, -0.056214135, 0.042804774, 0.012441619, 0.031711727, -0.011501231, -0.022438683, -0.022612121, -0.04092119, -0.04467495, 0.04369921, -0.014787334, -0.039958417, 0.0142199965, 0.015425947, 0.025948945, 0.050541535, 0.029460937, -0.055723023, -0.013873664, 0.024922164, -0.0086130295, 0.0067108446, 0.010598904, 0.037030317, -0.042041823, 0.024767758, -0.04537389, 0.006519242, -0.021058973, 0.018362697, 0.028829036, 0.024817929, -0.038709756, 0.006223837, -0.004361443, -0.072405845, -0.0038943314, 0.050209366, 0.020409124, 0.0231307, 0.0141383605, 0.0029190185, -0.051150512, -0.06625727, 0.035855617, -0.017831182, 0.0043649036, -0.003621849, -0.032325026, -0.06029899, 0.014127615, -0.014586009, -0.007770389, 0.013719257, 0.073866, -0.025387654, -0.0047429185, -0.0015328199, 0.015403456, -0.0011818369, -0.037573818, 0.027825179, 0.05835442, 0.024821172, 0.026606144, -0.04778817, -0.022869466, 0.05256915, 0.045553815, -0.015851105, -0.03825778, 0.015156275, 0.0035950334, -0.02091365, 0.008345737, -0.015211961, 0.0054755923, -0.0006959106, -0.06393295, -0.010635452, -0.0045223376, 0.06272278, -0.07784684, 0.015643068, -0.06353071, 0.005568204, 0.029632645, 0.03946038, -0.014288441, 0.0024004374, 0.017021047, 0.009760049, 0.008724185, 0.004011974, -0.0036292018, -0.016004646, -0.0115428595, 0.037323125, -0.0013939501, -0.058406316, 0.03800909, 0.018277168, -0.010474611, 0.06271067, -0.015987346, 0.024205925, -0.00080620096, 0.06281361, 0.043921515, -0.0107337395, 0.023937495, -0.012656576, 0.056212623, -0.03918552, 0.0052327914, 0.039778925, 0.023656635, 0.033244547, -0.019588435, 0.08629118, 0.0603457, -0.0013269446, 0.05655474, 0.037455257, 0.014769441, -0.033301637, 0.04651053, -0.0038817883, 0.025616776, 0.030349746, 0.026748227, 0.019366123, 0.036334407, 0.027555292, 0.024026865, 0.039406966, 0.01268296, -0.01867789, 0.04166424, -0.0040833657, 0.045734603, 0.009098306, -0.028644355, 0.006482046, 0.019144895, -0.010458122, 0.038715813, 0.03420645, -0.007171902, -0.025152693, 0.029848697, 0.046313304, -0.008332628, -0.037747853, 0.04495003, 0.02181284, 0.0014928125, 0.01059793, 0.030688634, -0.031446163, 0.028973928, 0.053123843, -0.013360704, 0.0065118894, -0.023165086, -0.010876793, 0.042279273, 0.037813593, 0.06351081, 0.011799825, 0.09994124, 0.039964903, -0.0376354, 0.0014964889, 4.844126e-05, -0.0752708, 0.0021872094, -0.049417008, -0.044608343, -0.0035426996, -0.020143347, -0.0029159908, 0.004869212, -0.031115724, 0.009119999, -0.0035914655, -0.0675695, 0.031093232, 0.002305285, -0.016035179, 0.009631918, -0.057620876, 0.03949952, 0.06341307, -0.05837431, -0.016797006, -0.02062084, -0.018518401, 0.0067480407, 0.00019381911, -0.03141397, 0.039603323, -0.03408232, 0.02471672, -0.041955106, 0.016468622, 0.036445126, 0.039464206, -0.05475333, -0.014186511, -0.03526351, -0.011554213, -0.008235771, 0.05691675, -0.013074382, -0.0017670246, 0.0045154174, -0.011392275, -0.0008955145, 0.016102826, -0.0030665046, 0.04457115, 0.016563019, -0.025594287, -0.018391242, -0.055513687, -0.009317158, 0.03109064, 0.035118617, 0.027910816, 0.0465261, -0.03378259, -0.0070568533, 0.028282775, 0.025613317, -0.050178222, 0.025512757, 0.04457634, 0.040624917, -0.035004865, -0.0022533836, 0.03556291, -0.05138926, 0.015059609, 0.028489517, 0.015991671, 0.015125783, 0.0015743409, -0.051219713, 0.0279851, -0.02173196, 0.018623069, 0.015605871, 0.023424594, -0.022010064, 0.004316462, -0.016310865, 0.00058302516, -0.026155036, 0.0042913766, 0.026342746, 0.009008452, -0.033309422, 0.03686034, -0.040369518, 0.005570745, 0.008230743, -0.0066904896, -0.03195912, -0.03131018, 0.037293714, 0.010923072, -0.01597437, 0.016513279, 0.024352977, -0.00078660285, 0.01580223, -0.019392075, 0.0379693, 0.0077903927, 0.024266476, -0.030380456, -0.018992867, -0.022867844, 0.042804774, 0.00058216014, 0.02428464, 0.010586145, -0.023378963, -0.08655761, -0.041249193, 0.024656601, 0.0068873093, 0.0072744065, 0.017299585, 0.049234483, -0.012475779, -0.026691997, -0.010179558, 0.019247616, 0.007429246, -0.008162893, 0.016877454, 0.00052074355, -0.060816273, -0.06788783, 0.008526905, 0.0033671001, -0.0658905, -0.03644167, -0.04179659, 0.0034038636, -0.007727571, 0.024037246, -0.014134467, -0.0039299596, -0.03274975, -0.017938836, -0.028338136, -0.0032030423, -0.008333843, 0.026538892, 0.009274771, 0.004959174, 0.008956876, 0.013249982, -0.0073826425, 0.035696883, -0.021910371, 0.042658582, 0.005904644, -0.021485753, -0.030707002, -0.051342543, 0.009584449, 0.014249948, -0.032052543, -0.03354817, -0.031991344, 0.014658671, -0.032206517, 0.019264033, -0.020812009, -0.0070471256, 0.04760738, -0.0064152232, 0.014218374, 0.0009351163, 0.01760537, -0.0012731239, -0.03587767, 0.011253078, 0.02214025, -0.02676639, -0.008064605, -0.017738152, 0.0039912136, 0.021200188, 0.008291241, -0.0028169458, 0.04152108, -0.013262525, 0.02364647, 0.017529234, 0.05068599, 0.0069094757, 0.0075101256, 0.047977608, -0.01418464, 0.018554246, -0.0043620924, -0.055254176, 0.0742345, -0.055768, -0.03218342, -0.03229648, 0.009710742, 0.01769382, 0.007560729, -0.0050478927, -0.039679665, 0.037868954, -0.015133568, 0.0315212, 0.0043952065, -0.0424925, 0.029344592, 0.04815926, -0.0006487669, 0.004396477, -0.03463723, 0.05041351, 0.0034773904, 0.015472658, -0.013612427, -0.02861781, -0.023793958, 0.041191507, -0.014892227, 0.031121453, 0.02251113, 0.032255217, -0.047420535, 0.023613492, -0.01090642, -0.035055038, -0.016367957, 0.034137245, 0.021818463, 0.0418792, -0.01646125, -0.013332591, -0.008578428, -0.023534236, -0.02608854, 0.012383013, 0.05906547, -0.032009292, -0.023065824, 0.02463238, 0.034000143, 0.021601342, 0.0029497265, -0.023635875, 0.05996336, -0.02704666, -0.046322823, -0.021364326, 0.017622238, 0.021729365, -0.00042245537, -0.016049195, 0.012701125, 0.041249465, 0.05167774, 0.028956277, 0.024218062, 0.060603477, 0.033366513, 0.03135274, 0.035173763, 0.026350748, -0.009446478, 0.010264141, 0.0056810356, -0.0438601, -0.022940395, -0.0024860746, 0.011644068, -0.019825451, 0.03997961, 0.033237625, 0.039925978, 0.046033036, -0.032195706, 0.015416431, -0.0041322126, -0.029210081, -0.005123528, -0.056302585, -0.045354858, 0.00815154, -0.0007560297, -0.057444416, -0.068940565, -0.031943116, -0.007995403, -0.0015404968, -0.028366575, -0.039695017, 0.016014269, 0.0023554564, 0.007792122, -0.03958646, -0.06267261, 0.0322861, 0.020530446, 0.019180143, -0.026873654, 0.010340019, 0.0048216353, 0.009955544, -0.04007649, 0.0022492746, -0.0025483563, 0.013282853, 1.730045e-06, -0.0086699445, 0.041294444, 0.01959276, 0.026593495, -0.027190253, 0.0034624687, 0.03776429, -0.027772414, 0.021326266, 0.051686823, 0.017661814, -0.043899026, -0.015554835, 0.0063272067, -0.0076018176, 0.019879298, -0.029052645, 0.030025797, 0.018382594, 0.0149147175, 0.01834453, 0.02522319, -0.02105162, -0.02023293, 0.0135783665, -0.002824839, -0.05808799, -0.024955899, 0.0065203235, -0.0373188, -0.045538247, 0.038285032, 0.0079344185, -0.020822821, -0.029461153, 0.04779228, -0.016333733, -0.015655177, 0.02114991, -0.060414035, 0.0030536375, -0.038732894, -0.04967305, 0.027071556, -0.0061044637, 0.03258713, 0.030305415, 0.023650581, -0.06671053, -0.0040037567, -0.017086789, -0.017461345, 0.044604886, -0.0053475695, 0.00020414531, -0.014278061, 0.010601716, -0.032697417, -0.027300326, -0.056450285, -0.012060143, 0.009701019, -0.014875792, 0.04098606, 0.027047092, 0.008227013, -0.024137588, -0.0024477434, 0.060074084, -0.0041832486, -0.008282591, 0.030102782, 0.013420905, 0.018468663, -0.011637797, 0.012918245, -0.013660436, -0.004104532, -0.041623153, -0.0031417618, 0.048963733, 0.031489845, 0.015598086, 0.036220223, 0.034318794, 0.0028690635, -0.029199049, -0.007638149, 0.00923152, -0.09410536, -0.0016495979, 0.06847518, -0.019900275, -0.023912683, 0.046432678, -0.00041650832, 0.04765582, -0.05303453, -0.01879291, -0.051314864, -0.08203181, -0.0024462836, 0.0031762547, -0.011053907, -0.001072628, -0.018937074, -0.020879913, 0.028178323, 0.020746699, 0.023311775, 0.015928524, -0.02157366, 0.052081272, -0.013042376, -0.030640826, 0.057956506, 0.004519743, 0.02051898, 0.029184127, -0.044508435, 0.011406997, 0.014579088, -0.040214896, 0.076561406, 0.01768798, -0.043175, 0.005452561, -0.02284957, 0.010929288, -0.0027732623, -0.013157858, 0.04025642, 0.02323184, -0.0064114383, -0.052717928, -0.011477118, 0.0016495979, -0.01578931, 0.020521794, 0.010696435, 0.025925372, -0.018639073, -0.0194217, 0.067431964, -0.02100015, -0.028089873, 0.04578737, 0.04526382, 0.054792687, 0.030289412, -0.051318325, 0.05667022, -0.013732556, -0.03564758, -0.0060196915, 0.0026381023, 0.002135308, -0.024496356, -0.008006648, -0.0010881983, 0.03215548, 0.052000824, 0.07840564, -0.0281288, -0.09963675, -0.02788242, -0.033942617, -0.026197532, -0.03501568, -0.021513974, 0.0057692677, -0.008605244, 0.037295662, 0.008290376, -0.0012066794, 0.059548147, 0.019221881, -0.012891322, -0.0044297804, -0.015481929, -0.05940196, 0.0174501, -0.039170813, 0.04677177, 0.045112114, 0.04687557, -0.0499464, -0.028757673, -0.037599068, 0.00931705, 0.027023302, 0.02394512, -0.027826909, 0.035924386, -0.033554222, 0.010413141, 0.033126254, 0.012948522, -0.062061906, 0.068927586, 0.0008812417, -0.0059389872, -0.007378642, 0.04883225, -0.02885023, 0.020738048, -0.004784791, 0.007555539, -0.0047299433, -0.02560034, 0.10723511, 0.028689768, 0.021235436, 0.017634997, 0.0061174394, 0.028712692, 0.022473283, -0.042474337, -0.013601018, -0.0007150492, -0.038893793, -0.010936263, 0.01019429, -0.029102817, 0.0031435997, 0.025522921, 0.027679855, -0.04453698, -0.05228888, -0.036054138, 0.041608017, -0.023840452, -0.032090604, -0.002185047, 0.007729841, -0.024385417, -0.0035950874, 0.018960427, -0.03130376, 0.019883623, -0.06253075, 0.007029173, -0.0023292894, -0.010565818, -0.006507909, 0.041136794, 0.005139531, -0.0044213464, -0.014271574, 0.010248355, -0.017423283, 0.0031936632, 0.030413328, 0.024645789, 0.052304722, 0.0010419196, -0.0018563382, 0.020124748, -0.039096422, 0.017488807, 0.09095366, -0.00013083465, -0.009540766, 0.0071604396, 0.041892607, 0.008906704, 0.01821348, -0.026097728, -0.0361095, 0.026416058, 0.04309423, -0.045288254, 0.02270165, -0.0043244637], [-0.036442805, -0.07627715, -0.015509602, -0.026279127, 0.0034450628, 0.011296784, 0.014332132, 0.014011599, 0.019766485, 0.031652924, -0.007691193, 0.029946586, -0.07406543, -0.028462816, -0.01480847, 0.012720816, -0.00444561, -0.035028737, 0.037853196, 0.046849072, -0.01595735, -0.010697688, -0.011826633, 0.036268897, 0.0034267013, 0.07077303, -0.007153869, 0.047547318, 0.02406455, 0.0021990996, -0.019051453, -0.036114663, 0.030216562, 0.0068644197, 0.017436728, -0.0035828352, 0.048206743, -0.029068468, -0.0066813333, -0.036655005, -0.036286537, 0.028840005, 0.0016884649, 0.0060262363, 0.0024957948, 0.004774142, -0.0076686344, 0.008506949, 0.00028590817, -0.0460926, 0.032737277, -0.007444105, -0.013993763, 0.032588813, -0.012549009, 0.0021262127, 0.042312317, 0.02292354, 0.034611154, 0.0004301738, 0.008010938, -0.024749683, -0.07604214, -0.0077730305, 0.014719288, 0.041007105, 0.019827865, 0.007974609, -0.030464174, -0.05029466, -0.013659592, 0.033554606, 0.015742786, -0.04626152, 0.04395674, 0.0007968707, -0.058371436, -0.022043783, -0.027539516, -0.010913824, 0.013782177, 0.019733435, -0.035155263, -0.015405205, -0.059384964, -0.011448918, -0.027609812, 0.016357096, 0.022874752, 0.018445276, -0.060547486, -0.028739806, 0.07309387, 0.009999442, -0.017207082, -0.006320932, 0.0047203703, -0.013389946, 0.022939084, 0.046197783, 0.03552291, -0.060809787, -0.021905027, -0.020838248, -0.0050909366, -0.03081356, 0.03555334, -0.01971901, -0.022429889, -0.04336309, -0.0037742504, 0.0123305125, -0.012688029, -0.031390097, -0.0010180562, -0.017349118, 0.043666117, -0.000238694, -0.018091954, 0.016040236, -0.011862567, 0.042243067, 0.019343393, 0.052116077, -0.06563613, -0.0070804246, 0.021949355, 0.007908903, -0.07652897, 0.014664992, 0.031679675, -4.1968175e-05, 0.06230569, -0.024008943, -0.026614644, 0.01962012, 0.014828462, 0.045749504, 0.0013655395, 0.04238051, -0.019837832, 0.006449984, 0.015805215, -0.008164909, 0.00041758333, -0.023597656, 0.007650798, -0.0016034466, 0.019474281, 0.0028517374, 0.011493247, 0.005395009, 0.013733036, -0.0033884053, 0.026936747, -0.03951828, -0.017208396, 0.0073591196, -0.03158315, 0.009285393, -0.008306551, -0.016114075, -0.0042694747, 0.046882648, -0.0063184397, -0.024226392, 0.04499231, -0.011243274, -0.016093204, -0.047612894, 0.06881732, -0.010302465, 0.011098484, -0.0031727941, -0.048943285, 0.01218546, 0.026190238, -0.04433518, 0.04396376, 0.03690891, 0.018215762, -0.0118345, 0.00020564406, 0.0077133575, 0.011329309, 0.012049588, -0.023120267, -0.02364697, -0.004185276, 0.012788752, 0.0248247, 0.004872505, 0.006577462, -0.021670792, -0.033693623, 0.020216595, -0.054098815, 0.011893781, -0.0055009783, 0.072833665, 0.0028412456, -0.0015795771, 0.036774613, -0.08442318, -0.016835796, -0.031129895, 0.042111915, -0.005372451, 0.059166733, -0.025397418, 0.02916998, 0.053314537, 0.028787546, 0.040868606, 0.035937347, 0.014589187, -0.0018014839, -0.04846065, 0.02302594, 0.023055218, 0.013533686, -0.00069457333, 0.022908326, -0.037404135, -0.019311655, 0.028672658, -0.031225897, -0.013407782, 0.024877686, 0.010445879, 0.03526061, 0.010256497, -0.018726528, -0.029744944, 0.0063938517, -0.039883208, -0.027885623, 0.017929329, -0.031593904, 0.06189388, -0.025592718, 0.040932607, 0.012256806, -0.009354182, 0.005159987, -0.030168299, -0.045199726, -0.005388976, -0.01035932, 0.0017280438, 0.04487237, 0.0022190672, -0.036237814, 0.021552755, -0.021044942, 0.0066687427, -0.012120409, -0.045483533, 0.044723384, 0.036101025, 0.01678517, -0.0025808704, 0.0048242416, -0.036006596, 0.055037063, 0.010322073, 0.035198707, -0.0018355831, -0.028726872, -0.015701344, -0.039690353, -0.041206453, 0.036625627, -0.022798162, -0.042874686, 0.03127678, 0.02400055, 0.028055202, 0.062045753, 0.017540338, -0.036600444, -0.022406809, 0.014824209, -0.02786477, 0.0333045, 0.0117623685, 0.014824209, -0.049151026, 0.016388573, -0.03550088, -0.016947798, -0.031992342, 0.025457894, 0.008734757, 0.034014158, -0.021684956, 0.0058540357, -0.011417441, -0.050766803, -0.033895597, 0.047382068, 0.015152085, 0.037907753, 0.021535182, 0.012731571, -0.033545163, -0.05100812, 0.020239152, 0.006904814, 0.026224865, -0.0017804998, -0.013809103, -0.051414162, -0.00948166, 0.036625627, -0.0014552465, 0.030766869, 0.080221646, -0.01694983, -0.02334742, -0.035643835, 0.0072216736, 0.0044801026, -0.073889166, 0.025003064, 0.07801045, 0.061063696, 0.013502473, -0.027644962, -0.04143662, 0.06654054, 0.034410756, -0.007454597, -0.010599652, 0.003959697, 0.03328496, -0.0056447196, 0.024645548, 0.03609132, 0.03467227, -0.011654562, -0.04798641, -0.03526376, 0.0051222155, 0.049953144, -0.07272036, 0.00204385, -0.057748206, 0.03423108, 0.016059121, -0.0072594453, -0.0065764133, 0.0013230467, 0.021177141, -0.005064903, -0.0063702445, 0.0035776228, 0.015572816, -0.024891848, -0.020796673, 0.008141826, -0.033177942, -0.010343581, 0.071279794, 0.022873703, -0.009464348, 0.06837875, -0.0041254717, 0.014419609, 0.013678477, 0.07047506, 0.033463325, -0.018833218, 0.0022883147, -0.0021569019, 0.044509348, -0.018537343, -0.0061900434, 0.016797762, 0.012993871, 0.046504933, -0.018883089, 0.0562447, 0.03195247, 0.031037925, 0.023063086, 0.011879617, -0.00055017654, -0.015318384, 0.06098815, 0.024072945, 0.037624467, 0.053530406, -0.009462774, 0.021412162, 0.045732718, 0.040268462, -0.0042230473, 0.021641938, 0.003586443, -0.042941574, 0.0402522, 0.0087045925, 0.0221891, -0.010184627, -0.039982032, -0.009274966, -0.015396025, -0.014014223, 0.042564124, 0.024909161, -0.015620554, -0.0112034045, 0.035395958, 0.045492455, -0.001640431, -0.023452865, 0.040291544, -0.0004616499, -0.012012866, 0.000811035, 0.045513436, -0.035827182, 0.015593275, -0.0040856516, -0.0356698, -0.011026089, 0.008514031, -0.0126597, 0.03753581, 0.013211581, 0.04777447, 0.018898532, 0.09346732, 0.06863895, -0.032248344, -0.012156082, 0.037849914, -0.09100379, 0.0013736709, -0.074216515, -0.045734815, 0.0029062962, -0.04711977, -0.02506864, 0.007166066, -0.026109844, 0.023610245, 0.013704708, -0.07788034, -0.00063935894, 0.019764911, 0.0042713108, 0.025657244, -0.03924969, 0.067438655, 0.06468975, -0.04081746, -0.031872403, -0.038519442, -0.063504145, 0.03998308, 0.026091876, -0.013462866, 0.029843569, 0.0046673855, 0.023847366, -0.038815316, 0.02873666, 0.058973677, 0.029629532, -0.05760552, 0.013730938, -0.028213369, -0.011219929, -0.011996078, 0.042147983, 0.0015599045, -0.039239194, 0.059063908, 0.0020102756, -0.0013650149, -0.01724297, 0.00429859, 0.016182141, 0.020126363, -0.000299679, -0.016466213, -0.032126095, -0.016740581, 0.03385153, 0.021338195, 0.01044483, 0.055842854, -0.030626277, -0.016566936, 0.050097413, 0.039742287, -0.015606719, -0.021354195, 0.049694516, 0.032263033, -0.048749186, 0.011408917, 0.013583, -0.06411898, -0.013427717, 0.007737817, -0.025454223, -0.016150404, -0.03946687, -0.0020370304, 0.02509592, -0.005967874, 0.068043, 0.021210585, 0.008509572, -0.04727374, -0.005177824, -0.06625201, -0.0021928372, -0.0080646435, -0.0098772105, 0.0067201536, -0.012024341, -0.023305977, 0.01278849, -0.044240225, -0.0022862162, 0.018190056, -0.0005107002, -0.051524065, -0.056659132, 0.0031680726, -0.011784663, -0.0063256533, 0.00920362, 0.022787277, -0.015709475, -0.03230684, -0.026459951, 0.014730305, 0.038870923, 0.018089334, -0.03717121, -0.023986384, -0.01425449, 0.038279172, -0.01813235, 0.026348574, 0.03913106, -0.01778926, -0.07216847, -0.04059162, 0.01123593, 0.0108340345, -0.0022358545, 0.039989375, 0.008761905, 0.015364024, -0.055813476, 0.0036299848, 0.01657166, -0.0021986077, -0.005663605, 0.024691977, -0.02075746, -0.044637877, -0.058549803, 0.029700352, 0.04459748, -0.04323299, -0.02773047, 0.006968563, 0.006865993, -0.016699137, 0.028589508, -0.0046540084, 0.005079198, -0.034165245, 0.0042130803, -0.004229736, -0.011173765, -0.0014584924, 0.032485466, 0.016652972, -0.0012619306, 0.023020273, -0.008406226, 0.0029664286, 0.0044780043, -0.002006341, 0.058871385, 0.010586997, -0.024697222, -0.026450444, -0.04969242, -0.018888958, -0.0125012705, -0.029478446, -0.032683767, -0.06443688, 0.005282744, -0.014653188, 0.0045808265, -0.025815673, 0.01509805, 0.05055906, 0.016119976, 0.01209208, 0.0020302103, 0.008534753, -0.04882787, -0.016646218, 0.011152518, -0.00043804283, -0.02333011, -0.033079315, -0.02313076, -0.0019934883, 0.0049396544, 0.04460168, -0.053144827, 0.02179827, -0.016544117, 0.030313613, 0.042701043, 0.027118653, 0.007961363, 0.022217426, 0.060612537, -0.0117507605, 0.014012123, 0.026872221, -0.03482834, 0.084113665, -0.035527896, -0.039712384, -0.043298565, -0.022073163, 0.012326185, 0.0040226495, 0.029819962, -0.02034722, 0.02032204, 0.029251818, 0.022248248, -0.024044616, -0.049061846, 0.010267514, 0.053610146, -0.019874291, 0.021165077, -0.06065031, 0.018539442, -0.008083071, 0.00902001, 0.015423304, -0.04151072, -0.032092016, 0.04847954, -0.015793674, 0.034050878, 0.0075256806, 0.03276665, -0.041742593, -0.0020763755, -0.03398714, -0.03899683, -0.016135976, 0.018321207, -0.019660983, 0.05321145, -0.0150602795, -0.013870087, -0.038971648, -0.039571792, -0.05990957, 0.021650331, 0.01513261, -0.017404726, -0.024124354, 0.0070123575, 0.012429792, 0.058578655, -0.0017077768, -0.03166866, 0.04763388, -0.04752686, -0.019374337, -0.0016923011, 0.030241217, 0.009027354, 0.0030920054, -0.012638453, -0.017834114, 0.033461228, 0.033304892, 0.03819812, 0.03757096, 0.03595099, 0.044404425, -0.029636875, 0.03993062, -0.018653804, 0.0116115445, 0.014981589, 0.022708718, -0.008503441, -0.048715986, 0.0054757977, 0.014981065, -0.006104566, 0.033487193, 0.005766427, 0.042006996, 0.029575627, -0.038710397, -0.0057580336, -0.009590777, -0.013684773, -0.0040079607, -0.03523648, -0.043881923, -0.02062526, 0.0026051744, -0.0362466, -0.047331706, -0.039780583, -0.017279347, -0.007876246, -0.036365423, -0.04591738, -0.016967732, -0.002044637, -0.027853949, -0.029382968, -0.015633145, 0.057248, 0.0447685, 0.031511802, -0.016728515, 0.035027426, -0.012167491, 0.041528035, -0.050831854, -0.01639841, -0.019746551, -0.01848803, -0.020110626, 0.026299357, 0.048731346, 0.012506516, -0.028760266, -0.02313863, -0.011572331, 0.026415817, -0.019776978, -0.003501195, -0.013862088, 0.0077861454, -0.03163246, -0.01132721, 0.032273527, -0.021211764, 0.015797347, -0.008655411, 0.0062423395, -0.024218785, 0.015013, 0.03303682, 0.018827185, -0.022935083, -0.012649207, -0.01182873, -0.010151053, -0.035806198, -0.0522252, -0.025372908, -0.041602004, -0.04149603, -0.0005046673, 0.0217584, -0.02317889, -0.032014634, 0.057280265, -0.017765652, -0.018876031, 0.022262018, -0.058277007, 0.01614306, -0.034433838, -0.013289747, 0.018723182, -0.041990735, 0.019905506, 0.010731262, 0.025875479, -0.040788345, 0.0031790892, -0.04181499, -0.0021734268, 0.027418334, 0.009340017, 0.035195563, -0.017967625, 0.025034016, 0.0019411593, -0.02080782, -0.06327542, -0.009571367, 0.01709626, -0.022896262, 0.018062053, 0.016890962, 0.033087708, -0.010772181, 0.01312135, 0.018967517, -0.010687196, -0.0040373383, 0.0041029137, -0.012525402, 0.018116612, -0.0035114246, 0.024033884, -0.0023790707, -0.030425878, -0.01590174, -0.013178007, 0.047325414, 0.04121065, -0.008042151, 0.06315476, 0.011074615, -0.018788103, -0.039781634, 0.0016902683, 0.019181553, -0.0870252, -0.01567026, 0.08985387, -0.015311499, -0.024038322, 0.04460652, -0.049965214, 0.04804307, -0.0588163, -0.020004787, -0.047850013, -0.022183852, -0.021701744, 0.018661149, 0.0021856239, 0.004764437, -0.030503517, -0.0006924093, 0.0030899069, 0.019525694, 0.03238684, 0.023119546, -0.01314522, 0.049566515, 0.02645359, -0.004287049, 0.050233282, -0.026986849, 0.03034509, 0.03736217, -0.06145085, -0.014357051, 0.018392554, -0.03985088, 0.054294225, -0.019886618, -0.07419973, 0.02399819, -0.013322798, 0.0023402504, 0.0044381344, -0.03868469, 0.028537834, 0.007109409, -0.00048473245, -0.04028735, -0.015274317, -0.030257875, -0.0025742229, 0.032188542, -0.0011079599, 0.023255615, -0.010467912, -0.007882672, 0.011820337, -0.007909033, -0.042876784, 0.029956883, 0.032594584, 0.077061966, -0.00720646, -0.03827078, 0.059246473, -0.003333847, -0.032722585, -0.024901815, -0.0068827807, -0.021666072, -0.0046521723, 0.019362018, -0.0041357013, 0.021480884, 0.051748857, 0.03360841, -0.015763246, -0.06849626, -0.026766384, -0.006015351, -0.02293482, -0.05507903, -0.025328089, -0.0003819104, 0.002853836, 0.048788004, 0.042299725, -0.041605674, 0.03807353, 0.021943059, 0.01720774, 0.013097087, -0.02518615, -0.036986552, 0.0044178064, -0.014670894, 0.0643519, 0.052299164, 0.064654075, -0.010759853, 0.00219546, -0.017279347, 0.0048074545, 0.015532422, 0.03438872, -0.028009297, 0.04027161, -0.05527366, -0.007519648, 0.010322073, 0.04228294, -0.055046506, 0.08246484, -0.004319574, -0.014953261, 0.0069598975, 0.0775362, -0.00950789, 0.032241, -0.029493134, 0.0044015436, 0.016091844, -0.04838406, 0.072208345, -0.017569976, -0.0048953253, -0.012583632, -0.00584197, 0.0030458402, 0.023422027, -0.041426785, -0.0034010122, 0.033676706, -0.009993934, -0.016893765, 0.015404943, -0.0035831642, 0.012947182, 0.020756671, 0.053882938, -0.027489418, -0.046317734, -0.02868577, 0.05110727, -0.04413583, -0.035215497, -0.013285026, 0.009737273, -0.047466006, -0.048892923, 0.0054747486, -0.044590138, 0.01964163, -0.05857918, 0.0034529315, -0.013868383, 0.012925412, 0.017490236, -0.0014360985, 0.0024580236, -0.025360318, -0.021378588, 0.013798087, 0.021712234, 0.021141207, 0.0054810434, 0.024218785, 0.029507825, 0.010343056, -0.0329681, -0.010848773, -0.011537576, 0.06569383, 0.10315148, 0.02233861, 0.005138544, 0.009757601, 0.025357302, 0.0038579246, -0.010093871, -0.015044541, -0.023956483, 0.041342128, 0.0269698, -0.023991106, 0.0066650705, 0.016501887], [-0.034572866, -0.08973981, -0.029117683, -0.025785483, -0.0047849384, 0.031191213, 0.020806817, -0.015469434, 0.03908973, 0.032923456, -0.01270982, 0.013973356, -0.0851555, -0.021547556, -0.01863532, 0.036205076, 0.00085955765, -0.061935224, 0.043170705, 0.031335153, -0.02922496, -0.012847422, -1.3126472e-05, 0.042218357, -0.027664946, 0.06651229, -0.020074902, 0.005695984, 0.029573489, -0.014163916, -0.034548875, -0.021634238, 0.012217578, -0.0072648237, 0.023516074, 0.005228636, 0.029774686, -0.033211786, -0.015447594, -0.023214392, -0.07042805, 0.014997674, -0.0069244406, 0.01706713, 0.0005970282, 0.03522059, 0.0058385646, 0.026595138, -0.008423122, -0.0345362, 0.026259735, -0.008307925, -0.028820982, 0.023506569, -0.016122477, 0.04460602, 0.027518066, 0.01988686, 0.01875094, -0.016195776, 0.0102348, -0.0015390789, -0.06730893, 0.02434825, 0.015904758, 0.030844156, -0.011388913, 0.0046150866, 0.0024170815, -0.04901877, 0.00067623967, 0.009449249, 0.01565943, -0.02710741, 0.074065894, -0.007922052, -0.07584657, -0.0021124568, -0.03724297, -0.02610448, -0.0034122039, 0.00073327194, -0.0019880948, -0.04270539, -0.048102636, 0.006913577, -0.020938082, -0.00034898313, 0.04175033, 0.018907214, -0.04409046, -0.008377858, 0.029573489, -0.017495098, 0.0068968297, -0.0054492964, 0.016095093, 0.05316131, 0.025608389, 0.045601368, 0.041337524, -0.022622796, -0.017153356, -0.027644802, -0.03744213, -0.0068601663, 0.012912828, -0.034981143, -0.01464009, 0.0069832834, 0.007823378, -0.0018229955, 0.014502984, -0.05120207, 0.016963024, -0.024244595, 0.019599406, -0.017270816, -0.031125356, -0.0076604285, -0.02429099, 0.040444016, 0.031401493, 0.014709797, -0.033326585, 0.00462595, 0.017059434, 0.022060622, -0.05505333, -1.7200206e-05, 0.044411607, -0.009900076, 0.03951883, -0.023259657, -0.054506544, 0.024775537, 0.0030660497, 0.05689511, -0.0030387216, 0.053512555, -0.01561575, 0.03565308, 0.015065569, -0.002644984, 0.038517594, -0.00080388325, 0.0107207075, -0.016877022, -0.017026845, 0.0016249667, 0.0049554696, -0.026321037, 0.009773337, 0.009907318, 0.041438915, -0.05461156, 0.014133024, 0.016236315, -0.043187, 0.0005033323, -0.0109900255, 0.00636815, 0.011182849, 0.009360532, 0.0014117747, -0.053651966, -0.0039144047, -0.0033400082, -0.021128414, 0.03998052, 0.077636294, -0.00118953, 0.01616231, 0.020050911, -0.058879018, -0.007136727, 0.0071183955, -0.037839092, 0.01942865, 0.014835631, 0.011663125, -0.00086182076, 0.011483853, -0.004850458, -0.024229204, 0.036620144, -0.025057077, -0.009801401, -0.012464718, 0.03159044, 0.040862255, -0.03544962, 0.0012833673, -0.024294272, -0.033771697, 0.0016376406, -0.030187266, -0.00980491, 0.034503613, 0.05819644, -0.013379949, -0.0042326082, 0.035504844, -0.038210258, -0.012631853, -0.044725966, 0.05426665, -0.02923039, 0.032058466, -0.025634643, 0.01004492, 0.05000552, 0.0374195, 0.048046507, 0.019675564, 0.017548736, 0.005845354, -0.043087415, 0.022038443, 0.06962281, -0.03324268, -0.0018701828, 0.031311616, -0.03379569, -0.029528225, 0.021126151, -0.017836614, 0.007838767, 0.009518503, -0.00502246, 0.075952485, 0.0041380073, -0.024256477, -0.0469113, -0.006093399, 0.0015991664, -0.02172748, 0.02779553, -0.039979275, 0.03391541, -0.028546909, 0.00951194, 0.01654657, -0.020516336, -0.015880655, -0.0016251649, -0.028135914, -0.0036799386, -0.040052943, 0.015113548, 0.06480675, 0.0045444756, -0.0135374665, 0.004497854, 0.021864628, 0.008173662, -0.008756715, -0.0013178525, 0.0062651164, 0.042958643, 0.022028938, -0.020955283, -0.015875788, -0.06340539, 0.061976865, 0.019650782, 0.033578422, -0.0054434123, 0.00819635, -0.016907802, -0.037920114, -0.053800885, 0.029463047, 0.007842614, -0.016967097, 0.037393246, 0.009011097, 0.01178033, 0.059199486, 0.016672205, -0.0602324, -0.024730274, -0.0017906319, 0.0025284302, 0.008208797, 0.026720066, 0.021840073, -0.046689194, 0.00800579, -0.048729084, -0.02192732, -0.011091417, 0.022406662, 0.018644502, 0.02975862, -0.0488341, 0.033484273, -0.03724297, -0.061612945, -0.020069612, 0.0067922706, 0.0034485843, -0.000935148, 0.010231406, 0.006671869, -0.04797409, -0.06588844, 0.029125832, 0.002980954, 0.007226003, -0.02204342, -0.020242322, -0.08408321, 0.022455772, 0.010154911, -0.019420842, 0.016112065, 0.07531291, -0.03167463, -0.018454915, -0.0083443625, -0.012770699, -0.0031164621, -0.07781011, 0.018710429, 0.07378888, 0.029807221, 0.00020187609, -0.052623574, -0.017860377, 0.065357044, 0.03606566, -0.005331158, -0.013967472, 0.020609014, 0.008469743, -0.0054026754, 0.02186961, 0.0194323, 0.04203911, -0.017678417, -0.06972782, -0.024497846, -0.007563564, 0.014642807, -0.093582235, -0.017600335, -0.056054566, 0.0056838756, 0.009617404, 0.029043905, -0.041639436, 0.0054868655, 0.032222323, 0.0036665574, -0.004247602, 0.0049183536, -0.0029421402, -0.0026101312, -0.017919218, 0.0012827732, 0.0067935153, -0.034121588, 0.031724423, 0.012860322, -0.020330869, 0.056613117, 0.0043389783, 0.047684398, -0.03865882, 0.041792877, 0.008550765, -0.00051351666, 0.02280204, -0.011224945, 0.03171265, -0.058133073, -0.0068925293, 0.035443287, 0.020230157, 0.020613994, -0.021148106, 0.054122936, 0.030005233, 0.0103040375, 0.037395056, 0.04213898, 0.021610247, -0.026553497, 0.038220216, 0.016686914, 0.028666405, 0.0506193, 0.0048350682, 0.008710546, 0.016482776, 0.022527743, 0.041812792, 0.010551646, 0.008674787, -0.030837703, 0.023533955, 0.009574517, 0.015218787, -0.019843087, -0.052585553, -0.027468728, 0.0179543, -0.0285881, 0.038255975, 0.025063416, -0.03901097, -0.018880393, 0.037366994, 0.04220297, -0.019148128, -0.031546988, 0.051216777, 0.015667576, 0.012171974, 0.008169871, 0.041121162, -0.027530344, 0.03879823, 0.032563835, -0.0063991556, 0.0052879173, -0.022058811, -0.036266178, 0.06283688, 0.031384945, 0.020773321, 0.00036165694, 0.09168252, 0.030514069, -0.03414207, 0.014890399, -0.004551944, -0.06727634, -0.022962274, -0.04403977, -0.046900433, -0.021594858, -0.007931106, -0.015615071, -0.018747319, -0.024281258, 0.039330535, 0.04502561, -0.058249965, 0.00010682233, -0.0096599525, -0.013530225, -0.016421966, -0.034230217, 0.045104373, 0.0709083, -0.056264136, -0.03421381, -0.033372924, -0.05690654, 0.0069113136, 0.02005725, -0.01533172, 0.034861535, -0.006123273, 0.045327295, -0.031016272, 0.0004506001, 0.020168599, 0.028565014, -0.03727177, -0.024833024, -0.044980347, -0.008489659, 0.013446939, 0.052529424, 0.014365793, -0.00048610382, 0.030979155, 0.0089690015, 0.0007079242, 0.009858999, -0.007029905, 0.045448374, 0.018190574, -0.01774518, -0.011274056, -0.0027165008, 0.007472131, 0.030045139, 0.022731429, 0.006856545, 0.07054257, -0.054077446, -0.008793378, 0.016806072, 0.042117868, -0.045367803, -0.0022017395, 0.06966083, 0.010646927, -0.06406081, 0.024828043, 0.020391805, -0.069894396, 0.01708252, 0.04781657, -0.01926061, -0.009110677, -0.0308583, -0.054683976, 0.0058274744, -0.026883015, 0.048189543, 0.024332859, -0.035332844, -0.053374954, -0.008466914, -0.012290904, -0.008847695, 0.0017222837, -0.0074310545, 0.050275296, 0.0135374665, -0.0401145, 0.031580932, -0.05917957, 0.01473967, -0.024532925, -0.00801688, -0.03164838, -0.047262542, -0.0049898704, -0.000210165, 0.021939429, 0.02731302, 0.020177526, -0.010035528, -0.017442366, -0.030786557, 0.0069579356, 0.017479936, 0.014653896, -0.023686493, -0.010057028, -0.007510945, 0.013212473, 0.013286819, -0.032237712, -0.0060019665, -0.011252556, -0.056642994, -0.061752357, 0.038882423, -0.0055020284, -0.023712294, 0.033031635, 0.034849655, 0.021517005, -0.039578125, -0.012469414, 0.02634121, 0.021727933, 0.017821224, 0.017518861, -0.031775117, -0.08740601, -0.07208878, 0.046197146, -0.021831587, -0.046704896, -0.029826062, -0.04383699, 0.023283647, -0.003269397, 0.021774894, -0.02706226, 0.025528727, -0.050086096, -0.0028309615, -0.0075155846, -0.006204295, -0.031436544, 0.007071095, 0.0072901715, 0.009857528, 0.025215048, 0.008009864, -0.012460191, 0.03261838, -0.0089690015, 0.057593532, 0.013055861, -0.014448965, -0.028343901, -0.049109302, -0.019440984, -0.0091561675, -0.023492767, 0.0023420004, -0.04831447, 0.020638436, -0.015529069, -0.0032784496, -0.023255583, -0.017179271, 0.032260343, 0.015419192, 0.009612199, -0.0033133593, 0.0010110779, -0.020441085, -0.0141182, -0.02613526, 0.021487584, -0.039643306, 0.00547736, -0.025964389, 0.010272143, 0.014332298, -0.017421093, -0.029271128, 0.014489816, -0.0073064663, 0.023195835, 0.017957013, 0.072844684, 0.019757716, -0.028177556, 0.030506374, -0.017852908, 0.06592567, -0.018626465, -0.06502311, 0.0833015, -0.019534906, -0.01822407, -0.040281978, -0.0049148453, 0.017789992, 0.012825922, 0.0066700587, -0.017791463, 0.0031214978, 0.0069140303, 0.029088618, -0.011619192, -0.018152554, 0.009513297, 0.063051425, 0.012455891, -0.012348842, -0.04213507, 0.027997296, -0.0150921615, 0.01907684, -0.0140471365, -0.022094795, -0.031623937, 0.027055018, -0.035194337, 0.043648235, 0.046572726, 0.020725794, -0.033504188, 0.016426763, -6.272559e-05, -0.044751313, -0.021342285, 0.03692341, 0.0047993097, 0.02144594, -0.020803874, -0.0026719163, -0.002531429, -0.019340273, -0.025907584, 0.008558064, 0.022893019, -0.03804097, -0.0071725985, 0.0363214, -0.0036031033, 0.06771449, 0.01927464, -0.013317485, 0.035996407, -0.040789835, -0.037009183, -0.03245475, 0.007155837, -0.00738468, 0.010056236, -0.02350589, -0.001867467, 0.021481246, 0.055793844, 0.05313732, 0.0319616, 0.02410111, 0.06209093, 0.018002616, 0.023035651, 0.0010388019, -0.026867174, 0.014910767, 0.008783873, -0.033979457, -0.060170393, 0.003491868, 0.00076586177, 0.009383617, 0.053051773, 0.017826656, 0.01205327, 0.052907832, -0.035135493, 0.02233492, 0.0018675802, -0.0060110195, 0.002650416, -0.06340539, -0.023053253, 0.021853313, -0.015378795, -0.045996062, -0.054540947, -0.027454017, -0.0063170013, -0.035589714, -0.025832899, 0.0023361442, -0.0016530302, 0.020966146, 0.0013644176, -0.03635535, -0.04131127, 0.046416115, 0.020317063, 0.02365911, -0.038750026, 0.015550796, 0.00022688428, 0.0018748224, -0.06448538, -0.008908348, -0.009303501, 0.041869823, 0.0046440554, 0.008909027, 0.027671508, 0.015453479, 0.00828337, -0.012531708, -0.046312682, 0.04514692, -0.032772277, 0.017986719, 0.019999312, 0.0033151133, -0.0750798, -0.0052396124, 0.005237236, -0.0037550763, 0.008236862, -0.008836379, 0.025573084, 0.007871923, 0.0006783331, 0.025808455, -0.00042909986, -0.002355523, -0.024905898, 0.014164821, -0.0066091786, -0.06622984, -0.030631982, -0.008822545, -0.07116178, -0.054660894, 0.0049900394, -0.0047508776, -0.022862261, -0.025756855, 0.057657804, -0.02706045, -0.025267612, 0.0071882713, -0.06387975, -0.014062978, -0.041579686, -0.043306425, 0.029516004, -0.027834317, 0.021861462, 0.018551325, 0.05793663, -0.072997674, -0.013915871, 0.012925955, -0.014497736, 0.03821614, 0.0050125015, -0.006906335, -0.0064944355, -0.016230447, 0.0064767827, -0.034035586, -0.07862485, -0.030380994, -0.0010702602, -0.022212708, 0.019070162, 0.02309037, 0.0039144047, 0.007169317, 0.009461018, 0.0076758177, 0.0040755435, 0.02434825, 0.042583182, 0.02007083, -0.0027239695, -0.014181569, 0.009682573, 0.012883124, -0.012711857, -0.009274758, -0.0013298474, 0.044159263, 0.042373158, 0.014666175, 0.04340336, 0.044873074, -0.00091370434, -0.014153619, 0.00075499853, 0.015543327, -0.09233795, -0.0014251275, 0.055942312, 0.0018367161, -0.00019734973, -0.00729549, -0.038820863, 0.011159454, -0.051196862, -0.013478327, -0.05702864, -0.060595416, -0.015777115, -0.028309727, -0.008839095, 0.009751611, 0.0144103775, 0.011130343, 0.03180997, 0.04029193, 0.03446559, -0.013913609, -0.023410894, 0.046304766, -0.006402097, -0.009666289, 0.026138881, -0.01556777, -0.0046845665, 0.045535278, -0.03919836, 0.0075513427, 0.025665874, -0.021538844, 0.032727465, 0.043707192, -0.04242295, -0.008518628, -0.028245455, -0.012632193, -0.008605534, -0.008884359, 0.034512267, 0.029491112, -0.0014896282, -0.03200234, -0.0052159624, -0.02991161, -0.0070004836, 0.02448223, 0.008570002, -0.0011770825, -0.022304595, 0.03207974, 0.044552155, -0.027042344, -0.06321709, 0.071063556, 0.028930746, 0.055845898, 0.03793007, -0.05141413, 0.07769423, 0.006863787, -0.024897382, -0.016313037, -0.013486772, -0.0024582716, -0.04139999, 0.03366533, -0.006913577, 0.03685551, 0.0633728, 0.0531432, 0.006572063, -0.090458594, -0.020663783, -0.0116074225, -0.022397835, -0.038416207, -0.020874713, 0.0048323525, 0.0010445163, 0.009798629, -0.0023410385, -0.029813386, 0.050566792, 0.02205123, -0.006493077, 0.022194602, -0.022767415, -0.01792533, 0.02072806, -0.031952552, 0.080053374, 0.035219684, 0.037880283, -0.044208147, 0.009016076, -0.044213127, -0.0055669826, 0.005593744, 0.041153755, -0.029439509, 0.01749442, -0.019809205, -0.0018929278, 0.019113954, 0.039918963, -0.052819114, 0.056662004, -0.004362515, -0.037309054, -0.006448493, 0.061066158, -0.021743776, 0.038098905, -0.011759508, 0.008211061, 0.006011472, -0.04329676, 0.08130254, 0.026959624, 0.03033573, 0.007839446, -0.031353258, 0.026559832, 0.021759616, -0.026267428, -0.019758565, 0.002558474, -0.019878585, -0.0037201103, 0.018585911, 0.0006730712, 0.026126094, 0.008948181, 0.044683415, -0.016067933, -0.037976243, -0.03581626, 0.04419276, -0.022767639, -0.048022974, -0.025753234, -0.013631756, -0.020563072, -0.020341506, 0.01117787, -0.014230002, 0.018528922, -0.08162131, -0.0077244765, 0.017919898, 0.020247357, -0.0008165571, 0.05440244, 0.004259314, -0.03741497, -0.025528727, 0.004052459, 0.0087630525, 0.03529482, 0.014893115, 0.028500287, 0.051075105, 0.018770857, -0.034484077, 0.007110927, -0.046291184, 0.03573569, 0.06903166, 0.015182802, 0.01718753, 0.025063416, 0.019503223, -0.011252556, -0.0014475331, -0.010623164, -0.030127518, 0.03046066, 0.01942582, -0.047472566, 0.00659311, -0.0150313955], [-0.024301115, -0.09300662, -0.030840324, -0.049003005, -0.011861965, 0.048733957, 0.0035318595, -0.023116982, 0.009439673, 0.07227666, 0.01019723, 0.039969992, -0.06657946, -0.018363848, -0.005653588, 0.04846, 0.015580077, -0.06334345, 0.04619055, 0.016094593, -0.014144775, -0.009265024, -0.023243008, 0.018070344, -0.0020576718, 0.053546127, 0.013699116, 0.031668287, 0.018314341, -0.015745493, -0.0017060662, -0.04910516, 0.0037156555, -0.00096302346, 0.018910386, -0.017574435, 0.022608457, -0.040747304, -0.024049262, -0.043077912, -0.072366826, 0.031975836, -0.028675782, 0.018484667, -0.038692642, 0.040138945, 0.018000405, 0.020241173, -0.0069725886, -0.04896273, 0.028777348, 0.001383634, -0.03547421, 0.011901846, 0.004068391, 0.01694603, 0.032144, 0.006039819, -0.011086361, -0.015826924, 0.0069156163, -0.01435125, -0.06681363, -0.0035397299, 0.02046965, -0.00829591, 0.0098910285, -0.010673927, -0.018435357, -0.027433006, -0.022073707, 0.020346474, 0.04043677, -0.013081953, 0.029276935, 0.0038737038, -0.07204877, 0.009011008, -0.021234708, 0.0018554704, 0.036694102, 0.027738689, -0.0013661495, -0.034065727, -0.039029755, 0.02785558, -0.0014734141, 0.0076225605, 0.043422498, 0.012149196, -0.02502724, -0.014249093, 0.033324305, 0.014359083, 0.008401407, -0.0117185535, -0.002328387, 0.039232105, 0.021104004, 0.018309232, 0.046396825, -0.036303353, -0.030084759, -0.017585492, 0.025503814, -0.016141154, -0.00074093085, -0.018664423, 0.015903663, 0.013343042, -0.0026635397, -0.0040015965, 0.0017059679, -0.06661541, -0.010418217, 0.0002842707, 0.042128716, -0.031005347, -0.02586765, -0.0029212737, 0.010434914, 0.04074324, 0.011449803, 0.04991102, -0.038948033, -0.011233308, 0.012630498, 0.0013241081, -0.05474028, 0.0049970346, 0.036604125, 0.01053108, 0.035689626, -0.03248583, -0.038316626, 0.033941176, 0.015797062, 0.034872763, -0.010849337, 0.02086256, -0.04757418, -0.00010687164, 0.0026696299, -0.018023783, 0.029191673, -0.028138282, 0.01384636, -0.0154716335, -0.011122889, -0.01788764, -0.02352276, 0.013099535, -0.009356376, 0.008295813, 0.002223873, -0.08239174, 0.0056998534, 0.02277714, -0.030287303, -0.0030199096, -0.0049821776, -0.0012746013, 0.021549957, 0.019588942, 0.015661998, -0.064387016, 0.0041613146, 0.0063978587, -0.022781929, 0.007884337, 0.062218152, 0.014398546, 0.015645104, 0.0025692412, -0.05004343, 0.0043255505, 0.040800653, -0.019362036, 0.029578296, 0.019491108, -0.005118837, -0.0019149963, 0.009598163, -0.024838224, -0.008559947, 0.040111635, -0.015432637, -0.011689871, 0.021026406, 0.00055853446, 0.025591828, -0.0004919239, 0.01913238, -0.018793298, -0.007609496, 0.042288166, -0.042264592, -0.011287727, 0.0027000804, 0.04126463, 0.011304819, 0.0082434565, 0.045699608, -0.03760349, -0.03403783, -0.033359274, 0.04648071, -0.0012856029, 0.047927607, -0.0154413795, -0.0366444, 0.032283485, 0.026604751, 0.050228488, 0.0023600655, 0.036374077, 0.008457397, -0.04332702, 0.0008742257, 0.0503334, -0.049902372, -0.008155249, 0.040913764, -0.022903534, -0.023802906, 0.0017023826, -0.010751405, 0.009129274, 0.0148715, -0.019797971, 0.05457683, 0.010517034, -0.022932155, -0.041231234, -0.0141677605, -0.019726263, -0.036970906, 0.055629827, -0.06156435, 0.00871711, -0.006737677, 0.024325084, 0.021924598, -0.017599244, -0.013691848, -0.007802415, -0.024588726, -0.0010920946, -0.044539537, -0.021179147, 0.07343967, -0.005667856, -0.044760354, 0.013274282, 0.0023700357, 0.019482855, 0.009657235, -0.005582079, 0.03270115, 0.041934546, 0.02234796, -0.027346369, 0.015708165, -0.04220958, 0.04370421, 0.0009288402, 0.025306575, -0.042133212, -0.0035249223, -0.04130707, -0.018993879, -0.05797865, 0.015329204, 0.025172984, -0.023169141, 0.02403217, -0.006358371, 0.013193931, 0.035697926, 0.019405846, -0.060466554, 0.010066561, 0.026727337, -0.028174035, 0.00032690147, 0.016714163, 0.001745308, -0.021155082, 0.0032222585, -0.016952513, 0.0020887118, -0.0018840055, 0.026482949, 0.05146655, 0.050060716, -0.043751363, 0.036985446, -0.021988053, -0.049187277, -0.027579363, 0.016642898, -0.003065487, 0.027774053, 0.013739292, -0.003301347, -0.040356614, -0.025473956, 0.040760625, -0.0019488634, 0.021435227, -0.011495381, -0.036009453, -0.06285938, 0.030035645, 0.0037200758, -0.014734337, 0.014474427, 0.069680996, 0.0013095705, 0.018512368, -0.007006379, -0.027737904, -0.009780129, -0.05471199, 0.03148784, 0.07067987, 0.027799983, 0.0064311577, -0.061664067, -0.022634292, 0.050558142, 0.054667983, 0.0056372825, -0.014653594, 0.008279016, 0.0089015085, -0.039788075, 0.016635828, -0.0005041041, 0.033318017, -0.0067168036, -0.07743793, 0.005852106, -0.025120728, 0.037289117, -0.08835298, 0.007083389, -0.08613854, 0.015974559, 0.011772972, 0.023148319, -0.033675566, -0.00067344843, -0.0092161065, 0.01097163, 0.03634736, 0.015058685, -0.030445056, 0.010911908, -0.03542991, -0.016491434, -0.0049193366, -0.029067513, 0.050407264, 0.01493924, -0.0018388208, 0.07431664, -0.006655902, 0.059736528, -0.046211176, 0.060581286, 0.009364627, 0.003947964, 0.013930516, 0.016000098, 0.05897804, -0.059124377, -0.0038497364, 0.027066814, 0.008567018, 0.037959863, -0.006429488, 0.04584479, 0.03166642, 0.0046863407, 0.041067783, 0.03791055, 0.004225752, -0.038170166, 0.03905215, -0.0047872206, 0.027093925, 0.022160148, 0.007910073, 0.009167386, 0.0075757056, 0.046999943, 0.031049352, 0.0040448164, 0.026210269, -0.017293656, 0.012918502, 0.0056034923, 0.005329437, -0.017562728, -0.013740078, -0.025268855, -0.010433466, -0.019342193, 0.032592706, 0.037249185, -0.0069906623, 0.004502373, 0.0471134, 0.02196448, -0.01342732, -0.014543972, 0.043921098, 0.014315298, 0.014391719, -0.00090683723, 0.041155007, -0.05052828, 0.03819875, 0.033032175, -0.0068472503, 0.022847544, -0.05030825, -0.030081222, 0.045417305, 0.026057819, 0.019719781, 0.023538478, 0.094823435, 0.031475857, -0.043930527, 0.0049982136, 0.012021095, -0.080763526, -0.0076648965, -0.018497732, -0.044042118, -0.0025321112, 0.012199083, -0.03697513, -0.009387023, -0.039264273, 0.028597984, 0.050973054, -0.023566768, 0.02495767, -0.024644913, -0.034681417, -0.007082701, -0.043741934, 0.03207308, 0.06674763, -0.05772483, -0.03101075, -0.018248333, -0.044918697, -0.00084328395, 0.022943022, -0.017903749, 0.024270667, 0.0047314274, 0.033010762, -0.04270465, 0.02004786, 0.004001989, 0.0118839685, -0.03815946, -0.025176128, -0.039265897, -0.018810187, 0.0103618335, 0.051367536, 0.0018623954, 0.0031265358, 0.011281441, 0.026712408, 0.017470762, 0.025008159, -0.007262556, 0.026714372, 0.0014129059, -0.021793956, 0.006985554, -0.024043957, -0.019994427, 0.01115561, 0.018166998, -0.0052372995, 0.063830264, -0.02715011, -0.023452824, 0.027285272, 0.040146016, -0.041888967, -0.017339222, 0.04863052, 0.05865681, -0.035771742, 0.006198457, 0.003102617, -0.077412784, 0.023499971, 0.042090137, -0.02121402, -0.032372676, -0.021800242, -0.030139374, -0.018990245, -0.019552795, 0.036979157, 0.034287967, 0.0026914363, -0.06786349, 0.00033711715, -0.018269647, -0.003194362, -0.035648763, 0.02414965, 0.022560524, 0.012686686, -0.034286935, 0.03729506, -0.04760974, 0.01709126, 0.00043617352, -0.019291509, -0.0067973505, -0.009902914, 0.0143714845, 0.014308619, 0.00049290614, 0.00014812723, 0.0028812122, -0.015601294, -0.027167363, -0.01710732, 0.039678253, 0.022189222, 0.00634845, -0.027915498, -0.0072849523, -0.025661962, 0.0025325534, 0.026548171, 0.012390037, -0.00808531, -0.012521171, -0.069378555, -0.043257866, 0.031047782, -0.023985513, -0.02242772, 0.0634126, 0.042142194, 0.004071338, -0.037960254, -0.0013830448, 0.028777545, 0.0143194245, 0.023431016, 0.015358378, 0.0042175003, -0.06796329, -0.05631192, 0.046031028, -0.008270765, -0.029977886, -0.05589072, -0.033631757, 0.034326226, -0.017171757, 0.016142724, 0.013760951, -0.011821889, -0.030395549, 0.004733195, -0.026464088, 0.0049978206, -0.023225721, 0.0084410915, 0.03132714, -0.0017659359, 0.005477171, 0.048405778, -0.0101213725, 0.03682199, -0.014795435, 0.060091723, 0.029379731, -0.033733718, -0.017054768, -0.042567916, 0.0036340284, -0.012250357, -0.043983962, -0.026542278, -0.011282423, 0.016974123, -0.03143018, 0.0068083517, -0.019231394, -0.0009023188, 0.01611414, -0.008494724, 0.009367414, -0.0023091345, 0.014267363, -0.04112741, -0.014230429, -0.023624133, 9.2726856e-05, -0.037952103, -0.020109942, -0.02792984, -0.014366769, 0.032775015, 8.801193e-05, -0.016983233, 0.014345945, -0.04064737, 0.033446107, 0.0096542025, 0.0592006, 0.019817617, -0.012057242, 0.039458007, 0.0026505736, 0.048786905, 0.0067015416, -0.056214478, 0.0797176, -0.012296524, -0.0425852, -0.030757027, -0.0039577866, 0.007276701, 0.007030936, -0.0010954342, -0.020216811, 0.0057032914, 0.004726516, 0.007417363, -0.012946792, -0.035303786, 0.01232285, 0.069922335, -0.032723445, 0.011452554, -0.03999985, 0.047864344, -0.00608854, 0.016095575, -0.0070003867, 0.004145893, -0.03133156, 0.050213166, -0.040457204, 0.043801263, 0.023083488, 0.010086403, -0.03305084, 0.012779608, -0.035541795, -0.03638822, -0.011208949, 0.03409215, 0.024097983, 0.00969752, -0.021688852, -0.021223448, -0.015073321, -0.033971034, -0.04282881, 0.021723822, 0.012548282, -0.029979458, -0.031506702, 0.02708646, 0.006219772, 0.02460189, 0.042940393, -0.019744143, 0.025518158, -0.031157207, -0.04964266, -0.029201888, 0.033242185, 0.013704912, -0.012105962, -0.043822084, -0.008652673, 0.045804493, 0.0536307, 0.0548668, 0.004203356, 0.055123758, 0.052162785, 0.015496731, 0.018527495, 0.008152891, -0.003210864, 0.017573139, -0.005877547, -0.021575497, -0.055821568, 0.006270556, 0.005149877, 0.005986383, 0.033538047, 0.026189838, 0.0101778535, 0.041776154, -0.04285887, 0.024841761, 0.008391977, -0.014757716, 0.016679196, -0.06330101, -0.030939339, 0.016803011, -0.009785827, -0.036864426, -0.061297167, -0.034230947, -0.018568553, -0.023019738, -0.019662809, -0.018363848, 0.00017857779, 0.02239118, 0.006241775, -0.038601093, -0.03763119, 0.02355223, 0.014257147, 0.02443549, -0.035783138, 0.025468454, -0.0006302284, 0.014736892, -0.063536756, -0.031860515, -0.009755966, 0.02792984, 0.0024385985, -0.011161799, 0.07151127, 0.02328881, 0.021371184, -0.005968113, -0.015130194, 0.04512969, -0.0113982335, 0.026396902, 0.024593836, 0.0009816868, -0.082985826, -0.01872611, 0.016732091, -0.0036678188, -0.0032542804, -0.0073218616, 0.007534254, -0.0016977659, 0.00013113386, 0.019107627, 0.047564168, 0.033475183, 0.009967351, -0.012193975, 0.030975485, -0.058491793, -0.04644987, -0.021843266, -0.030274535, -0.04471537, -0.0032466187, 0.0116507765, -0.0015196793, -0.04104028, 0.047307987, -0.005316766, -0.01389292, 0.014298797, -0.050487023, 0.0047263196, -0.012661145, -0.030683467, 0.020220349, -0.039368052, 0.042395823, -0.0023097731, 0.01879988, -0.039413888, 0.01699102, 0.0013186075, -0.042408787, 0.068502165, 0.027390473, 0.012809101, 0.0040127942, 0.018208256, -0.014927453, -0.024081482, -0.06338745, -0.0047400715, -0.007997692, -0.01671048, 0.02829031, 0.01867356, 0.00859688, -0.0032914104, -0.009806848, 0.033313107, -0.0041865585, 0.026947858, 0.038382635, 0.03584797, -0.006444517, -0.018701358, 0.01921057, -0.009456961, -0.014143989, -0.03048199, 0.01874497, 0.05039469, 0.040429696, -0.009866177, 0.047360636, 0.016374279, 0.0050056786, -0.018823553, 0.0013795085, 0.0062213433, -0.11166199, -0.00036333164, 0.080788665, -0.0050107865, 0.007521877, 0.035746988, -0.02113858, 0.04335924, -0.04888277, 0.013453646, -0.065506026, -0.07190575, -0.012342889, -0.019729996, 0.009515504, -0.010357119, 0.012693069, -0.0012337387, 0.059544, 0.02913195, 0.050377402, 0.015002695, -0.011425786, 0.050219454, -0.03263828, -0.009418421, 0.05347334, -0.017757978, -0.015093358, 0.033976536, -0.045560323, 0.02258292, 0.019673025, -0.03454822, 0.030852897, 0.0065152408, -0.039925985, 0.01060701, -0.033222932, 0.013436751, 0.0053447606, -0.028483648, 0.009499395, 0.028596807, 0.0026156048, -0.058370773, -0.015900299, -0.0035629116, -0.005084261, 0.024547473, -0.0143069, -0.0009804097, -0.018568357, -0.002306777, 0.039134666, 0.009926489, -0.043584768, 0.03767009, 0.041744567, 0.077101596, 0.016395759, -0.063910715, 0.06858644, 0.03474998, -0.0357242, 0.011164943, -0.024584306, -0.025147839, -0.020310128, 0.014116486, -0.013622205, 0.025699485, 0.06258169, 0.066524446, -0.001264975, -0.08511559, -0.02935295, -0.044350844, -0.027264839, -0.05118994, -0.028558303, 0.014597604, -0.008391781, 0.023772651, 0.006845531, -0.023632776, 0.07997142, 0.018781118, -0.0014160492, 0.0025708128, -0.000745351, -0.06319179, 0.008127942, -0.04161707, 0.0559363, 0.029346481, 0.021382187, -0.024565937, -0.0015360833, -0.05816017, 0.018143425, 0.0026647185, 0.02004786, -0.025668837, 0.043318965, -0.008411034, -0.021485915, 0.067890994, 0.037921358, -0.04452068, 0.06494515, -0.01610697, -0.033400528, -0.020005427, 0.041450478, -0.041729692, 0.038586162, 0.00025382012, 0.0005453597, 0.019298386, -0.045428693, 0.09545523, 0.015683413, 0.012693327, 0.017408682, -0.048414815, 0.0022572705, 0.022713562, -0.045164265, -0.0068690563, 0.021711444, -0.012348979, 0.020963736, 0.010688539, -0.0029892626, 0.008517905, 0.008397085, 0.0358185, -0.048641328, -0.051177368, -0.04409712, 0.075105615, -0.008194992, -0.06104492, -0.024751294, -0.004780934, -0.025279857, -0.0012447402, 0.026809065, -0.03499098, 0.00980174, -0.09518491, 0.020956714, -0.012185067, 0.010660446, 0.0024156133, 0.034672577, 0.0046838853, -0.013658549, -0.016938368, -0.003674891, -0.028167356, 0.02630771, -0.005349279, 0.04582789, 0.039448205, 0.040043075, -0.028654173, 0.004053264, -0.03440795, 0.020674553, 0.06118637, -0.014062264, -0.011891827, -0.005633795, 0.027483298, -0.004054246, 0.027987402, -0.0022395893, -0.029827403, 0.033956103, 0.012448974, -0.05195455, 0.011502256, -0.002081541], [-0.031008307, -0.0881895, -0.037844244, -0.03614768, -0.01923583, 0.040641893, 0.021605346, -0.04953334, 0.043842245, 0.013384186, 0.0021524923, 0.010122923, -0.023606455, -0.016425172, -0.041351806, -0.012169565, 0.017393794, -0.029751701, 0.036477353, 0.04293158, -0.02091702, 0.0059941593, -0.031221783, 0.038033772, -0.024129203, 0.036089726, 0.01543881, 0.018912366, -0.0049587158, -0.0069709113, 0.0019821853, -0.053438578, 0.008628893, -0.030365221, 0.0015546436, -0.007174186, -0.010331963, 0.030126318, -0.056553777, -0.056661993, -0.069040604, 0.039112087, -0.021258818, 0.019245587, 0.030546283, 0.050415628, 0.022875553, 0.01483978, -0.03504778, -0.03576035, 0.043021463, -0.020138223, -0.03435916, 0.022885606, 0.008080421, 0.032395013, 0.03371607, 0.023284467, 0.050232314, -0.011304133, 0.013966512, 0.025735587, -0.07396058, 0.008465682, 0.0156854, 0.004232841, -0.009644231, -0.0021524923, 0.0061032623, -0.04625966, -0.03321698, 0.011834569, -0.0019183202, -0.0050110496, 0.02556617, 0.02263665, -0.06778695, -0.001232361, -0.016311634, -0.023403032, 0.0012039766, 0.007659236, 0.017619688, -0.049630325, -0.040654313, 0.026544547, 0.029153261, -0.011882467, 0.038230393, 0.019445758, -0.02808411, 0.013766489, 0.06927477, -0.013584946, -0.0102181295, 0.028447196, 0.024836449, 0.03300173, 0.01707565, 0.0200986, 0.045393933, 0.0039946768, -0.020746123, 0.0041595143, -0.039215572, 0.018580733, 0.022902755, 0.00546875, 0.0017527437, 0.029347224, 0.0202012, 0.009878994, 0.020655647, -0.059768327, 0.011930144, 0.00010762461, 0.03506197, -0.012181687, -0.032807767, -0.018213397, -0.014778871, -0.0016321095, 0.006035775, 0.020973792, -0.021407837, -0.007293638, 0.0042440766, -0.009381082, -0.059134405, -0.012278076, 0.02194123, 0.015841812, 0.050771024, -0.033536304, -0.022996187, 0.02530834, -0.02627933, 0.056423686, -0.03034896, 0.020820042, -0.02869438, -0.00016557633, 0.043119624, -0.0070606484, 0.016578922, -0.037984394, 0.03362146, -0.06561029, -0.004003399, -0.015822, -0.013065156, 0.0037372943, -0.0071026334, 0.0026101926, 0.03494607, -0.028155517, 0.030566573, 0.020898098, -0.025525957, 0.022901572, -0.024278814, 0.019441027, 0.02415404, -0.0077046216, -0.017697744, -0.061594393, -0.0015824366, -0.0034144206, -0.0060092383, 0.010771924, 0.073269896, -0.00927464, 0.030812573, 0.035629664, -0.058379848, -0.011491885, 0.027013779, -0.021759097, 0.026759207, 0.020482384, 0.013907969, 0.01913412, -0.0053835963, 0.0022146574, -0.06308222, 0.03354636, -0.0393433, -0.02610784, -0.022184271, 0.044998918, 0.008530729, -0.04415448, -0.0008065933, 0.0017938422, -0.026109023, 0.025532462, -0.03721358, -0.0010287908, 0.030158326, 0.04932046, -0.015110615, 0.0075437757, 0.03895538, -0.011742024, -0.048965655, -0.04447144, 0.035207145, -0.008673835, 0.050594218, -0.029562471, -0.00061026704, 0.0080375485, 0.04193014, 0.039133966, 0.03510248, 0.027698556, 0.03591587, -0.036140583, 0.032559108, 0.05763712, -0.010599103, 0.0031985801, 0.022446975, -0.045083184, -0.035974413, 0.026773695, 0.0065402654, 0.03503477, -0.0023542885, -0.011962003, 0.05555796, -0.004034297, -0.010431901, -0.041254528, -0.0073823393, -0.004037106, -0.017327564, 0.019500753, -0.058234382, 0.039750148, -0.030435294, 0.025133824, 0.022233352, 0.010544847, -0.016844584, 0.02699456, -0.040816933, 0.014308752, -0.018658679, 0.02960978, 0.040646624, -0.0047431705, -0.03302775, -0.019144764, 0.016366038, 0.0032476617, 0.018704507, 0.0064279097, -0.007783418, 0.043444864, 0.02235517, -0.06616903, -0.007049117, -0.029650584, 0.02442724, 0.017651916, -0.008335586, -0.002096906, -0.0054309038, -0.023181869, -0.016464792, -0.062382065, 0.038555633, -0.0035894585, -0.02431725, -0.011030489, 0.045036763, 0.011190595, 0.08001121, 0.037012223, -0.06197049, -0.00084503065, 0.037254676, -0.021983806, 0.039625965, -0.0015397121, 0.013380934, -0.056442607, -0.014454814, -0.044563692, 0.0032260776, -0.016900022, 0.021176621, 0.049460016, 0.043075867, -0.008864247, 0.056901492, -0.0015848022, -0.07590019, -0.023430234, 0.034205705, 0.013534978, -0.0013998268, 0.051460795, 0.009839965, -0.019365188, -0.056716215, 0.043362074, 0.015220013, 0.0024676786, -0.020208592, -0.034034215, -0.036837187, 0.026350586, -0.009829321, -0.003304135, 0.022475805, 0.067933604, -0.018516757, -0.01825893, -0.0411469, -0.001641571, -0.013605644, -0.040470403, 0.018263957, 0.043632913, 0.0076534706, -0.0021252905, -0.037404876, -0.053935308, 0.065923035, 0.0046739834, -0.0017148978, 0.005350481, 0.023421217, 0.0057993107, -0.016145172, 0.0034558147, 0.013306129, 0.027697966, 0.00058306527, -0.099615455, -0.0075736386, -0.030015146, 0.08055643, -0.06826003, -0.0023026937, -0.03772775, -0.009146909, 0.008009164, 0.02974638, -0.018541, 0.0025140992, 0.027140327, -0.040967133, 0.011107806, 0.018440472, 0.010540117, -0.0235213, 0.01037454, -0.018202754, -0.0017391428, -0.067205064, 0.036092684, 0.0044260626, -0.021738991, 0.068392485, -0.018982735, 0.021503635, -0.018622607, 0.03996377, 0.03775377, -0.011117268, 0.01111372, -0.017063824, 0.04126044, -0.04477184, -0.015679635, 0.02178955, -0.013654135, 0.018947845, -0.010596885, 0.05707298, 0.03467878, 0.017776245, 0.05243566, 0.020984435, 0.03071116, -0.02663177, 0.02489322, 0.0005273311, 0.023518048, 0.036138218, 0.037566904, 0.021071363, 0.018659862, 0.039970126, 0.022238085, 0.009743872, -0.008492883, -0.019553382, 0.027031519, -0.017940195, 0.0073778303, 0.0068510165, -0.06365405, -0.022879101, -0.0023624194, 0.0013671875, 0.015849795, 0.05217665, 0.0030531092, -0.026515275, 0.024027787, 0.03226846, -0.0110888835, -0.02023816, 0.0155298775, 0.014610337, 0.03034541, 0.022035142, 0.07438162, -0.040087212, 0.033290304, 0.06199651, 0.02204649, 0.01636249, -0.02516169, -0.044474985, 0.054337125, 0.013134639, 0.05273429, 0.0021383, 0.098853804, 0.043383364, -0.033104625, 0.020278888, -0.029631067, -0.06527315, 0.0024848278, -0.031762272, -0.048686538, -0.0030063933, -0.012883318, -0.016103776, 0.0014110947, -0.02998824, 0.022914583, -0.0022701698, -0.066750914, 0.008419557, -0.012307643, -0.0012897953, -0.03527249, -0.046872295, 0.025815716, 0.07128298, -0.042470332, -0.03580588, -0.0043209507, -0.047260214, -0.018005244, -0.0076659624, -0.02567616, 0.0023381745, -0.017034257, 0.061201744, -0.04715141, 0.036794312, 0.028954571, 0.039484635, -0.034288492, -0.028462572, -0.040791802, -0.013387881, 0.00031873444, 0.021633731, -0.0065840245, -0.0019431565, 0.030394087, -0.0042340234, 0.017527835, 0.04022204, -0.021754365, 0.021641124, 0.022499459, -0.026920347, -0.02000517, -0.048300985, -0.010525406, 0.000147836, 0.052802294, 0.011041576, 0.051636163, -0.040783815, -0.022641381, 0.013110098, 0.028690536, -0.054178942, 0.016435966, 0.032609813, 0.005814686, -0.05174024, 0.028824475, 0.006746053, -0.059027962, 0.028593998, 0.05100224, -0.00289936, 0.01699996, -0.014516905, -0.029511023, -0.009203679, -0.006514246, 0.04692611, 0.054872, -0.010112131, -0.040928107, -0.015068037, -0.018924728, -0.016690096, -0.014166239, -0.016938902, 0.049691822, 0.003002845, -0.020609967, 0.05212343, -0.026697706, 0.010778798, 0.0064279097, -0.017386697, -0.031882904, -0.043213133, 0.002559337, 0.01151613, -0.018049004, 0.024424873, 0.026983103, 0.009592191, 0.022157736, -0.009227776, 0.020551572, 0.02821974, 0.0017956162, -0.0151493475, -0.042789064, -0.025922157, 0.06981408, 0.018700665, -0.010824553, -0.027853487, -0.026372762, -0.08672415, -0.06529976, 0.062105317, -0.005007501, -0.030577218, 0.009184755, 0.06234895, -0.015105293, -0.02964526, -0.013616288, 0.0062747514, 0.0017107583, 0.0014949178, 0.035121106, 0.0005180174, -0.08164747, -0.08954368, 0.034394935, -0.07720115, -0.022693567, -0.042710118, -0.036445126, -0.013633881, -0.012177547, 0.018622607, -0.06990633, -0.011185865, 0.0057549602, 0.027909074, -0.017108766, 0.0025670244, -0.008559705, 0.0035046006, -0.013692793, 0.009146909, -0.0021579992, 0.03986132, -0.018663261, 0.039429046, 0.00072498777, 0.037602387, 0.006749897, -0.03232523, -0.018599546, -0.036968466, 0.016153509, 0.0028937422, -0.0150757255, -0.015651694, -0.07018189, 0.0023256084, -0.031253714, 0.035040684, -0.010177918, -0.008518903, 0.06175524, 0.0025965918, 0.04132959, 0.00033884015, 0.044947177, -0.0048794756, 0.0005806999, -0.0056291516, 0.000515652, -0.023051035, 0.028259741, -0.017394977, -0.0044303495, 0.031785924, -0.018019067, 0.014370621, -0.006351035, 0.014185753, 0.0028077017, -0.007914549, 0.042959962, 0.010933212, -0.022380007, 0.049237672, -0.016641604, 0.052322123, -0.011114903, -0.07179863, 0.08618485, -0.016774066, -0.05274316, -0.02604989, 0.023918685, 0.025099006, 0.036317986, -0.014636948, -0.022529174, 0.013179877, -0.013910322, 0.010875409, -0.0027796128, -0.013621611, 0.03437365, 0.043787844, 0.009145875, 0.0110362535, -0.023122735, 0.02999297, 0.0039856588, 0.0074326037, -0.013825181, -0.00031562988, -0.035921343, 0.029307306, -0.039998513, 0.038874958, 0.027852895, 0.03877088, -0.01646361, 0.040813383, -0.0015658791, -0.048187718, -0.04186716, 0.03283072, 0.026362857, 0.03501703, -0.016236054, 0.015876405, 0.026119076, -0.06911156, -0.013949215, 0.000515652, 0.036239043, -0.005991498, -0.011649477, 0.0033801226, -0.01220741, 0.045931466, 0.041064113, -0.020103332, 0.06241755, -0.055853628, -0.03228502, -0.009485676, 0.019800564, 0.023453888, -0.018110503, -0.020870306, 0.0037715924, 0.02424274, 0.04127818, 0.019505484, 0.034468263, 0.032750998, 0.048037246, 0.009019179, 0.011611336, 0.032819595, -0.03176582, 0.0139131425, -0.015167679, -0.03373736, -0.03384144, -0.027469115, 0.027880691, -0.03686424, 0.069534965, 0.057052873, 0.001156669, 0.055624183, -0.028971128, 0.013279389, 0.0048543434, 0.017986322, -0.030582357, -0.06718615, -0.029900722, 0.034037765, -0.01805137, -0.024770219, -0.061958663, -0.015005503, -0.0022695786, -0.016214062, -0.010954058, -0.010761722, 0.038877323, 0.040986057, 0.003297852, -0.02780618, -0.040638346, -0.009987949, -0.0003997486, 0.007643418, -0.012385109, 0.04994965, 0.014880583, 0.0048561175, -0.038021058, -0.00052585267, -0.019483604, 0.016172964, -0.0030773545, -0.01862379, 0.041734695, 0.038142283, 0.029711489, -0.02816217, -0.04923989, 0.04790478, -0.037254676, 0.015256677, 0.0017973902, 0.015132198, -0.04378548, 0.00084325665, -0.02363484, 0.007821117, 0.027760057, -0.031410716, 0.030028451, 0.0049093384, 0.005305095, -0.00047189256, -0.01329578, -0.02044158, -0.01891828, 0.034487776, -0.011645783, -0.081402056, -0.042723425, 0.01678471, -0.04840033, -0.05182611, 0.024855375, -0.0002105185, -0.034435887, -0.03299552, 0.016747769, -0.03892936, -0.016240673, 0.0067850817, -0.046351913, 0.0043147416, 0.0009278189, -0.052283686, 0.026716923, -0.03635465, 0.07484051, 0.02032213, 0.04656953, -0.035184972, -0.02577639, 0.023492916, -0.01601005, 0.027859401, -0.024811614, -0.021656867, -0.005115126, 0.0064701913, -0.0056185075, -0.06803768, -0.046758756, -0.0110528115, 0.012432861, 0.014764679, 0.014735111, 0.022479463, 0.014564638, -0.0012359091, 0.0055159093, 0.032850344, -0.01635303, -0.0065948903, 0.032928992, -0.017319284, 0.012848724, -0.019294374, 0.032750998, 0.010397011, 0.015377458, -0.015772328, 0.027090654, 0.024849312, 0.010310675, 0.0010218425, 0.0504792, 0.0025214911, 0.01564933, -0.03346002, -0.011396974, 0.0339739, -0.034548685, -0.021768559, 0.04742579, -0.0056053507, -0.0073610507, -0.0065733804, -0.006154709, 0.009932214, -0.052958407, -0.077016644, -0.050737318, -0.048992854, 0.007427872, -0.0057277586, -0.008183019, 0.006832094, 0.0053401324, -0.01250811, 0.05003813, 0.024588086, 0.020065486, 0.016919537, -0.023091247, 0.045076974, -0.07057337, 0.015413753, 0.04677295, 0.011318325, 0.039426092, 0.0112392325, -0.03094267, 0.008651364, 0.018228771, -0.005123996, 0.03800923, 0.034468263, -0.05171659, -0.012346673, -0.01080149, 0.019372432, 0.0071727815, -0.0038425536, 0.04213326, 0.037403103, -0.010221973, -0.022171779, 0.009591601, -0.02254854, 0.004009904, 0.012618986, -0.004694089, -0.01402668, -0.0329899, 0.0025155775, 0.054063037, -0.03475684, -0.045177504, 0.08855909, -0.0012113682, 0.062121876, 0.04794233, -0.016733263, 0.061963394, -0.0028464347, -0.0059481817, -0.018461762, 0.0059985938, -0.012828027, -0.042098377, -0.012841627, -0.00519274, 0.029571932, 0.043214243, 0.036646776, 0.0034676413, -0.09241052, -0.0045548277, -0.014196988, -0.037356388, -0.04051653, -0.05505827, 0.018973568, -0.0077749914, 0.035022944, -0.0127221765, 0.0042418586, 0.053552113, 0.008402999, -0.008916581, 0.025624711, -0.008437297, -0.029868789, 0.05210865, -0.008738883, 0.06173203, 0.025082745, 0.0053481157, -0.033214614, -0.003563735, -0.026072064, 0.04254129, 0.015194586, 0.01757711, 0.0042221965, 0.014401002, -0.019813573, 0.015956828, 0.002892855, 0.042896096, -0.019437479, 0.023949435, -0.015675737, -0.0235434, -0.0274975, 0.027601574, -0.025093094, 0.029657088, 0.02872631, -0.010648333, 0.018505521, -0.028864687, 0.06249915, 0.014366283, 0.024221454, 0.012083525, 0.028213026, 0.016334696, -0.006057581, -0.001118823, 0.008400633, -0.012561626, -0.027238194, 0.005514283, 0.0001626196, -0.019628778, 0.014679525, 0.03879335, 0.02143149, -0.0019141807, -0.05602985, -0.03899086, 0.033718437, -0.039336205, -0.012117804, 0.0030507438, -0.0026421251, -0.0031163832, 0.025026862, -0.020105697, 0.0030531092, -0.004678714, -0.060764153, 0.03475211, -0.012259745, 0.026081823, -0.032677673, 0.06377764, -0.00079003564, -0.059316542, -0.02221443, 0.010454075, 0.003863842, 0.027521152, 0.045058608, 0.044945993, 0.047872495, 0.006936466, -0.013008387, 0.0028400037, -0.035735365, 0.023905674, 0.05422137, 0.011915694, -0.018536493, 0.0028597398, 0.043645922, -0.0014274676, -0.001251284, -0.0042288494, -0.015216465, 0.03641142, 0.023484638, -0.038134597, 0.018694898, 0.0033594258], [-0.05243516, -0.078638166, -0.03103335, -0.04346035, 0.03551508, 0.03277816, -0.00017351526, -0.030862069, 0.036136273, 0.07552616, 0.00076115725, 0.028972374, -0.05811194, -0.0011020007, -0.015303167, -0.0054851514, 0.009214183, 0.0026134534, 0.03888172, 0.053084124, 0.007162798, 0.008726911, -0.040210444, 0.032712165, -0.018036788, 0.027766842, 0.0171523, 0.03638156, -0.0030902766, 0.005628384, 0.0074394327, -0.049627155, 0.0020947638, 0.006901013, -0.013331803, 0.029825926, -0.0057199537, 0.011332389, -0.0450169, -0.054569587, -0.011900233, -0.01836897, -0.015925456, 0.01784155, -0.0040719714, 0.044472706, -0.00064758863, 0.012160643, -0.032478977, -0.03290933, 0.046347003, -0.017395524, -0.038216256, 0.020103848, 0.005586587, 0.017952092, 0.044499654, 0.030890666, 0.0053863977, -0.0019807138, 0.007144099, 0.0043923287, -0.08976376, 0.0100413365, 0.032008205, 0.021744922, -0.032346983, -0.007816162, -0.0147787705, -0.044154823, -0.045713436, -0.0020979948, -0.015220947, -0.017532982, 0.046227105, -0.016022252, -0.0553203, 0.0074214214, -0.0014343195, -0.024478028, -0.006009925, 0.0014541184, 0.01210812, -0.054732926, -0.044635497, 0.030173233, -0.0023296694, -0.0046780375, 0.042736866, 0.026908891, -0.018356044, 0.016215289, 0.05400917, -0.0071451995, -0.017264837, 0.013607337, -0.0037727884, 0.04615011, 0.00032338186, 0.019144425, 0.042601984, -0.051408917, -0.009008495, -0.0153819835, 0.0028246415, -0.0027591954, -0.0046851872, -0.026937488, -0.013661921, 0.01514835, 0.013271306, 0.022168156, -0.009759752, -0.03883882, 0.003869583, -0.016879654, 0.014834592, -0.023058692, -0.049554974, -0.02263013, -0.037849702, 0.026524186, -0.009333389, 0.0231548, -0.021356402, -0.035044584, 0.014205703, -0.0040049357, -0.083331324, 0.023369428, 0.025942044, 0.018990297, 0.05094584, -0.022894666, -0.014246951, 0.007534577, -0.015725818, 0.060289815, -0.0108607905, 0.030259304, -0.024937319, 0.0059026815, 0.027210273, -0.010793145, 0.033947945, -0.0017775004, 0.03940295, -0.07445482, 0.015843237, -0.0026448017, -0.015269344, 0.022937562, -0.004463275, -0.008716461, -0.0058090496, -0.024674365, 0.013301554, 0.0070387805, -0.03082907, 0.030943464, -0.015533329, 0.010805793, 0.019539578, 0.018503161, -0.034546863, -0.049350657, 0.010904789, -0.002439113, -0.018971736, 0.009633259, 0.070536844, 0.00030248304, 0.021911046, 0.023111077, -0.04045903, -0.020214666, 0.023314293, -0.017133841, 0.042868994, 0.01735572, -0.0066986238, 0.006571031, -0.005242306, -0.0007595074, -0.031074082, 0.021805177, 0.0016434797, -0.034002945, -0.013416498, 0.030815871, -0.0027894434, -0.052838832, 0.02980063, -0.028049525, -0.040959504, 0.034071688, -0.041788857, 0.0126668895, 0.043087605, 0.035540108, 0.014191403, 0.0083292825, 0.015560277, -0.010090971, -0.028437255, -0.028172718, 0.044295616, -0.022061463, 0.04694423, -0.037384704, 0.0018602707, 0.01886174, 0.02210436, 0.04705536, 0.03476685, 0.027741132, 0.054244556, -0.021895371, 0.053794686, 0.06100698, -0.035059433, 0.0034997975, 0.014664377, -0.039583202, -0.030571066, 0.03353712, 0.012478456, 0.027551254, 0.0043590553, 0.005143174, 0.078702785, -0.0036627944, -0.027793746, -0.055377495, -0.005954447, -0.002622253, -0.011468507, 0.023043707, -0.05782816, 0.048142098, -0.040691115, 0.035688598, 0.037727885, 0.0065440834, -0.0026996783, 0.016109696, -0.05189949, 0.00046197406, -0.0054094964, 0.03248778, 0.040046554, -0.01594168, -0.03654435, -0.015261918, -0.014041262, -0.0071109296, 0.0026115284, -0.015577326, 0.022338647, 0.054424945, 0.028198225, -0.0890334, 0.0061628856, -0.05147051, 0.025528468, 0.017966427, 0.00038277853, -0.018046688, 0.0092308195, -0.044980872, -0.02587715, -0.056413636, 0.0090942895, 0.011251818, -0.023128401, 0.02994252, 0.024243465, 0.008624616, 0.049303636, 0.048188496, -0.071984366, 0.005244506, 0.064100005, -0.025656061, 2.3098703e-05, 0.011368962, 0.02621153, -0.06624269, -0.027457623, -0.069559276, -0.0063056713, 0.0015201147, 0.018791415, 0.05365059, 0.03990576, -0.017890222, 0.067373425, -0.028282713, -0.079230756, -0.0064549875, -0.005221407, 0.010673801, 0.011173999, 0.027890585, 0.011242539, -0.027243271, -0.041809756, 0.037661612, 0.01267019, 0.021624787, -0.03261977, -0.033419974, -0.043163776, 0.017584851, -0.0003514303, -0.02059332, 0.03100066, 0.083410524, -0.015455782, -0.025531767, -0.024423305, -0.03620117, 0.0059077684, -0.07253433, 0.03220729, 0.07215595, -0.01820666, 0.025868075, -0.057830356, -0.059687052, 0.038625434, 0.026499437, 0.002890638, 0.015127451, -0.009287879, 0.018858442, -0.02122991, -7.314589e-05, -0.0030385794, 0.038187657, 0.010289922, -0.07114841, -0.016985798, -0.029592637, 0.021538991, -0.061530545, 0.011989327, -0.07535017, 0.0041431924, 0.013721867, 0.018316174, -0.03975617, 0.02193442, 0.018067585, -0.03185971, 0.009186478, 0.011716267, 0.008925174, -0.022566333, 0.010093033, 0.0017945494, -0.01710844, -0.05138582, 0.06690512, 0.008445464, -0.01852516, 0.056387234, 0.00044877484, 0.040698815, -0.03336388, 0.030989662, 0.023311956, -0.030058015, 0.026598707, -0.009072291, 0.061583344, -0.042897593, -0.024623219, -0.015986504, -0.0109289875, -0.006846016, -0.026963888, 0.05490617, 0.022924947, 0.017379025, 0.03422843, 0.023467185, 0.019409511, -0.034366332, 0.036548752, -0.014800289, -0.002562856, 0.041825153, 0.019902283, 0.012267062, -0.0060881586, 0.011725342, 0.021414148, 0.024569321, 0.014594532, -0.016121795, 0.0057504773, 0.0014483439, -0.0169242, 0.0026816498, -0.03496264, -0.012897876, -0.004715435, -0.019994678, 0.028767787, 0.029370552, -0.018002003, -0.023785064, 0.03220729, 0.024420831, -0.005007469, -0.018674202, -0.008987596, 0.00980485, 0.030076712, 0.018778147, 0.060567003, -0.054943018, 0.02619778, 0.027199823, -0.005985864, 0.0053566997, -0.015093353, -0.044637695, 0.035345837, -0.014513136, 0.039671473, 0.013127764, 0.088100664, 0.034644756, -0.010490111, -0.0019317666, -0.03147016, -0.049348045, -0.032335985, -0.04074171, -0.05295887, -0.0016885428, -0.0022515736, -0.017745305, -0.0026896242, -0.033991806, 0.01587541, 0.0075627123, -0.058702607, 0.020517148, -0.012803282, -0.007725279, -0.024018802, -0.05293343, 0.033782404, 0.053818878, -0.011157224, -0.008829205, -0.013957942, -0.03176292, 0.0028818382, 0.03343936, -0.018986035, -0.012954523, -0.00073475874, 0.02602234, -0.053485047, 0.029149463, 0.0050663156, 0.02373117, -0.0049550845, -0.0029434348, -0.0641671, -0.03826025, -0.013876271, 0.045695838, 0.018555684, 0.00071495987, 0.011829836, 0.012645991, 0.021454573, 0.03365701, -0.003262142, 0.014518773, 0.010774514, -0.017864099, -0.015173614, -0.049668815, -0.025020298, 0.020423654, 0.046322804, 0.013194859, 0.06556402, -0.030444091, -0.039543606, -0.0076357713, 0.024953682, -0.027482672, 0.031399388, 0.040510725, 0.055175103, -0.043454163, 0.030128995, -0.010366368, -0.0747518, 0.025548266, 0.030792497, 0.0024165644, 0.022890816, -0.008891901, -0.035375115, -0.001743952, -0.024548372, 0.060703393, 0.038940016, -0.025071442, -0.046061017, -0.0142848985, -0.023605777, -0.034248777, 0.012905026, -0.023364889, 0.0037469398, 0.00012559921, -0.041239988, 0.047908913, -0.031157678, 0.009351125, 0.022293996, -0.030006316, -0.027529942, -0.02798573, 0.0013100265, -0.0025276581, -0.02248494, 0.027366463, 0.024198644, 0.0040923203, 0.0044844486, -0.01855816, 0.026215928, 0.041964844, 0.022509964, -0.008036149, -0.04551875, -0.013830211, 0.030395694, -0.00552554, -0.015077954, 0.0051818094, -0.015226445, -0.073436834, -0.08040549, 0.081132546, -0.021802977, -0.016010426, 0.01887604, 0.037719633, -0.027031947, -0.05098221, 0.016158782, 0.016028302, 0.011186373, 0.0125282975, 0.049799707, 0.020078273, -0.057817157, -0.104714125, 0.007176548, -0.01693465, -0.016061299, -0.056591827, -0.023247195, -0.021575565, -0.018243577, 0.047260225, -0.034924965, -0.018763848, -0.014122383, 0.01550693, -0.003777738, 0.010296935, -0.012813455, 0.034135483, 0.020815233, 0.0033950282, 0.013708531, 0.032692365, -0.01802579, 0.016992947, -0.01190666, 0.03707562, 0.009899445, -0.0071295253, -0.013071048, -0.041259237, -0.0035912984, -0.0017838937, -0.043704398, -0.027744845, -0.051076736, -0.016806507, -0.02332639, 0.016250487, -0.014049649, -0.018635154, 0.033783507, -0.0055205906, 0.030072313, 0.027208075, 0.02068984, 0.00057279284, -0.008038349, -0.025943145, -0.0010735397, -0.057052698, 0.011155575, -0.0059105186, -0.03200958, 0.02440763, -0.0053017023, 0.0067290785, 0.0032712165, -0.013332352, 0.007766114, 0.009694582, 0.048801787, 0.0019160926, -0.012150468, 0.042150185, -0.007126775, 0.043902937, -0.000998744, -0.042110518, 0.09070971, -0.009396773, -0.040355086, -0.020468753, -0.007950354, 0.028138071, 0.03012511, 0.011343114, -0.020551728, 0.040578924, 0.02439223, 0.024712864, -0.03197328, -0.042663306, -0.022854518, 0.060709685, 0.00730799, 0.01319706, -0.052801438, 0.030280203, 0.016558472, 0.0032890905, -0.0035572003, -0.0068944134, -0.021449758, 0.033835202, -0.026860494, 0.06320686, 0.023791254, 0.049493924, -0.019761492, 0.050544642, -0.02425584, -0.03993717, -0.023048142, 0.032306287, 0.036075503, 0.01318496, -0.022968773, 0.0051595354, -0.0047176355, -0.062344503, -0.027462848, -0.021149613, 0.03582609, -0.046988815, -0.01634034, 0.018956335, -0.008085647, 0.057539973, 0.022756074, 0.0038504715, 0.057081643, -0.056629226, -0.0575905, -0.016446277, 0.008526722, 0.026712, -0.009672857, 0.00020238865, -0.008307284, 0.029854113, 0.02124201, -0.007752365, 0.022990085, 0.05059056, 0.060483407, -0.0023384688, 0.03456996, 0.017421924, -0.011991528, -0.008096096, -0.010284423, -0.031096356, -0.046441592, -0.013682682, 0.027160777, -0.029063946, 0.05592966, 0.045728832, -0.010198628, 0.03777023, -0.041367304, -0.023235647, -0.01765841, -0.0014486187, -0.01567852, -0.08000951, -0.015424434, 0.026237927, 0.0046579638, -0.028092973, -0.029701635, -0.016544104, 0.0075081787, -0.011084078, -0.00961731, 0.004404153, 0.036465157, 0.033202738, -0.006227713, -0.018620305, -0.038533036, -0.008922699, 0.019068532, -0.011009833, -0.02616753, 0.020442354, -0.019974604, -0.0034472067, -0.0516751, -0.022342497, 0.0067833196, 0.021246409, -0.025610963, 0.010030887, 0.024638617, 0.050706606, 0.0037003297, -0.023863163, -0.02725207, 0.019087229, -0.034189794, 0.03316974, -0.0011103189, 0.007041255, -0.07053904, 0.012107519, -0.004062347, -0.014866216, 0.0356743, -0.0418587, 0.01728443, 0.0044272514, -0.009116564, -0.01871655, 0.0037161417, -0.0049926196, -0.01390872, 0.010989483, -0.009428121, -0.07907127, -0.014156068, 0.009440496, -0.028755963, -0.046832073, 0.003906981, 0.016774058, -0.05570968, -0.051205706, 0.04796886, -0.035235424, 0.0069531226, -0.001390322, -0.06612461, 0.019390812, -0.00836008, -0.042574212, 0.026488712, -0.053406954, 0.06443562, 0.019830238, 0.030360496, -0.034132186, -0.009945642, 0.012074023, 0.0032948651, 0.006724198, 0.009866721, 0.006449488, 0.00040917704, 0.008484374, 0.01164784, -0.037265908, -0.066053495, -0.020762436, -0.013197609, 0.036589447, 0.024190117, 0.025452573, 0.033414476, -0.0014486187, 0.012307073, 0.04258301, -0.0041134944, 0.004505622, 0.04952802, 0.010734298, 0.019306391, -0.033584416, -0.005651483, 0.014379493, -0.0054402947, -0.035198025, -0.014634679, 0.03775318, 0.028484551, 0.01265149, 0.08094226, 0.008608049, -0.029988717, -0.037225213, 0.0028466403, 0.038625706, -0.030443544, -0.0012921526, 0.07760285, 0.010977109, 0.002155604, 0.00047847317, -0.011568051, 0.023781767, -0.064957954, -0.03485952, -0.04007735, -0.032967348, -0.0041158316, 0.013437396, -0.0004495998, -0.0026036913, -0.017396607, -0.013119514, 0.04315663, 0.012288373, 0.024504561, 0.01773018, -0.021612138, 0.04714473, -0.029312532, -0.01196781, 0.037789483, 0.010919088, 0.0129060745, 0.013222083, -0.018996485, -0.008311409, 0.007256735, -0.012554421, 0.034910392, 0.025582502, -0.09117169, -0.005749928, -0.0015377138, 0.026420519, 0.008603717, -0.032896955, 0.013659033, 0.019427042, 0.0036295212, -0.025391662, -0.006674425, -0.03756729, 0.015713718, 0.012782933, -0.0021157314, -0.0029627525, -0.018441565, 0.032365132, 0.034797646, -0.0032932153, -0.049967993, 0.08993962, 0.016083572, 0.037371505, 0.031717822, -0.057561968, 0.07062373, 0.022540072, -0.007778764, -0.027861435, -0.013434647, -0.032575224, -0.038997762, 0.029729133, -0.020368658, 0.03355032, 0.06010063, 0.023477083, -0.00020431353, -0.08340612, -0.0073082647, -0.02314009, -0.0374529, -0.04739854, -0.040222544, 0.02350018, 0.024542922, 0.04317698, 0.008957623, 0.0028537898, 0.036602646, 0.0010416416, 0.0042358623, 0.016442427, -0.021256307, -0.017674118, -0.0071869968, -0.034876846, 0.095252454, 0.008193441, 0.046712182, -0.019826114, -0.013311453, -0.023699546, 0.010250875, -0.0018832318, 0.013846023, -0.013897764, 0.023244996, -0.028591795, 0.017437322, 0.031173628, 0.051018987, -0.035554405, 0.039786693, -0.002105007, -0.039100606, -0.025333779, 0.029354602, -0.026223628, 0.04256321, 0.027364265, 0.0101967715, 0.036686793, -0.025984941, 0.100903936, 0.025000773, 0.008267686, 0.014338796, 0.0007820561, 0.02034336, 0.016892852, -0.014354744, 0.024389207, 0.014722125, -0.0070984517, -0.019871484, -0.006578181, -0.042934444, 0.020612843, 0.006560307, 0.041013297, -0.020984072, -0.06607989, -0.058290683, 0.052251466, -0.02976103, -0.01903993, 0.005762027, 0.015365038, -0.023927644, 0.014534585, 0.007987753, 0.00810242, -0.006187153, -0.06008743, 0.0043197325, -0.029962732, 0.029756906, -0.030248303, 0.03582719, -0.003277816, -0.0154071795, -0.01780305, -0.022779722, -0.033188436, 0.039417937, 0.01746262, 0.0468065, 0.02012447, 0.018088484, 0.0025870549, 0.0059187682, -0.033422243, 0.05487592, 0.044638794, 0.00015839112, -0.0007703693, 0.017322928, 0.0356798, -0.008464025, 0.0049502724, 0.003189821, 0.00759736, 0.03836585, 0.015371775, -0.043536656, 0.010469212, 0.033885524], [-0.023394642, -0.066890515, -0.039124966, -0.015006572, 0.01124217, 0.030763056, 0.0051019173, -0.018138789, 0.049264565, 0.012496971, -0.008791084, 0.020479826, -0.10306964, -0.015270775, -0.0015425425, 0.041024987, 0.019109752, -0.025096893, 0.009300132, 0.05075519, -0.0111048985, -0.019344037, -0.02360539, 0.005317504, -0.007881662, 0.066221975, 0.008481784, -0.002182922, 0.019494727, -0.0056111855, -0.00051212765, -0.046930075, 0.015294314, -0.017850993, 0.0074654687, 0.012154672, 0.023626508, -0.019487249, -0.021572277, -0.050422575, -0.052955236, 0.039147407, -0.036651883, 0.03303575, -0.006730695, 0.026446288, 0.030606007, 0.02596188, 0.0015224689, -0.04748884, 0.03339389, 0.0011284187, -0.042941287, 0.034247436, -0.0053679906, 0.03703334, 0.006598703, 0.0070496197, -0.007684555, -0.015307953, -0.008291826, -0.024149634, -0.05714051, -0.0029181156, 0.017290028, 0.026202407, 0.025994217, 0.018716417, -0.014515563, -0.038048796, -0.020300318, 0.01819461, 0.046582498, -0.050818548, 0.029677885, -0.0048185755, -0.062101196, -0.004002867, -0.021819102, -0.029425342, 0.008619935, 0.0430922, 0.0015333031, -0.039960038, -0.03461701, 0.008957202, 0.008820123, -0.024437377, 0.03873955, 0.019186307, -0.06508069, -0.04536465, 0.035502236, -0.012171391, 0.00981369, -0.01693805, 0.005827432, 0.049473997, 0.021406407, 0.0062968824, 0.036663763, -0.057312537, -0.023763338, -0.008397749, -0.007859663, -0.015056399, -0.00079052005, -0.042515393, -0.0023969687, 0.020152487, -0.022837637, -0.02262667, -0.005781455, -0.052091278, 0.014532172, -0.014576279, 0.011514072, -0.009878256, -0.025288695, 0.018329462, -0.012407656, 0.03807739, 0.007451369, 0.018896805, -0.044384398, 0.0011795656, 0.03909351, 0.022821357, -0.03103916, -0.012240026, 0.033466265, -0.011183213, 0.03626075, -0.013217645, -0.023353724, 0.020538783, -0.012775913, 0.048020326, -0.03640154, 0.038596123, -0.018422984, 0.005504657, 0.007681035, -0.0124960905, 0.0096889995, -0.020673525, 0.0022588172, -0.014852141, -0.009686428, -0.0056122853, -0.017002285, 0.012478712, 0.008523691, 0.024976341, 0.00084856886, -0.052518602, 0.0009842177, 0.033086568, -0.016109142, 0.021959014, -0.008518797, 0.003847117, 0.022705205, 0.048819315, -0.007726572, -0.06986758, 0.036190353, -0.014106169, 0.0024937624, 0.03591801, 0.07468264, -0.00089517847, 0.026043493, 0.0038176388, -0.042981762, 0.005236109, -0.005716119, -0.019808428, 0.01778633, 0.033808343, 0.020658674, -0.008418098, -0.005241829, -0.0023327325, -0.021711748, -0.005963383, -0.037281487, 0.0006106814, -0.006850147, -0.0011800054, 0.0132000465, 0.010399623, 0.007028996, -0.00068641163, -0.026545282, 0.025049377, -0.038196627, -0.024876907, 0.009703146, 0.04339094, 0.020618858, -0.0035815937, 0.040150598, -0.03136474, -0.014418329, -0.07308202, 0.027879937, -0.009781022, 0.04086198, -0.02152872, -0.009348529, 0.030109499, 0.018077468, 0.05602518, 0.019401895, 0.02072313, 0.009556994, -0.037289843, 0.021481862, 0.019186307, -0.0029654128, 0.020313075, 0.050406735, -0.004685704, 0.01170876, 0.038036477, 0.0059546935, 0.016205056, 0.026938178, 0.019383416, 0.034117863, -0.0042642104, -0.016552083, -0.020775486, -0.01154663, -0.023527514, -0.03657555, 0.07806515, -0.022567933, 0.05405674, -0.047372684, 0.018743036, 0.052747387, -0.032230604, -0.020779887, -0.02753346, -0.02912088, 0.0006065017, -0.06095551, -0.01454988, 0.06662224, -0.012058758, -0.006990498, -0.015246137, 0.007962507, -0.016005307, -0.0009767383, 0.003894469, -0.019523766, 0.051307052, 0.039002657, -0.013057714, 0.0016650747, -0.05648451, 0.058618378, 0.011170093, 0.00585724, -0.030001704, -0.008333459, -0.056782812, -0.036111157, -0.056614302, 0.020917818, 0.019172229, -0.012237167, 0.0030184293, -0.02502298, 0.028010389, 0.068299524, 0.023530593, -0.06363439, -0.008286106, 0.010209995, 0.024134345, 0.023200614, 0.00999247, 0.004540293, -0.02566886, -0.00036297707, -0.032235883, -0.00996141, -0.027043331, 0.030357093, 0.017823273, 0.05856558, -0.015866498, 0.03788161, -0.01864778, -0.033202942, -0.029187756, 0.005776835, -0.0033809112, 0.0059554633, -0.010577812, -0.009606353, -0.048189275, -0.05993565, 0.04050912, -0.026955776, -0.008130246, -0.002759203, -0.016073944, -0.06353903, 0.00340093, 0.00489909, -0.037322786, 0.020447928, 0.0851047, -0.023592792, -0.03192614, -0.034284834, -0.017499894, -0.027586145, -0.07787156, 0.034071445, 0.06704472, 0.03794584, -0.0056315893, -0.036807634, -0.029584391, 0.038092352, 0.027755206, -0.01013872, -0.0142375, 0.020915179, 0.010257732, -0.0027260676, 0.017828114, 0.012546687, 0.030666942, -0.0013999916, -0.07028292, -0.051830705, -0.0060988944, 0.04485693, -0.05991189, -0.0021937015, -0.044210166, 0.009200699, 0.010893712, 0.033301055, -0.030192653, 0.004448229, 0.0033129908, -0.004444599, -0.014253779, -0.0067839315, 0.0030217292, 0.0028488198, -0.016936619, -0.027182363, -0.008285447, -0.022640089, 0.05442434, 0.011382081, -0.01685055, 0.075004704, 0.017378902, 0.052029356, -0.022866234, 0.058115046, 0.023173114, -0.030067699, -0.0020828284, 0.008007494, 0.06626597, -0.042694904, 0.021460082, 0.008186563, -0.008619935, 0.044048253, -0.01091967, 0.02057013, 0.03794144, 0.0027329698, 0.041128602, 0.0383009, 0.01251149, -0.027250119, 0.060286753, -0.018255986, 0.028779462, 0.053134564, 0.029533135, 0.013838557, 0.0130704185, -0.0053747003, 0.035489477, 0.034528304, 0.00045229142, 0.0022372587, 0.033028714, 0.02028272, -0.017380333, -0.004438, -0.059271295, 0.009117984, 0.00957253, -0.01012112, 0.0221515, 0.031148272, -0.009936112, 0.014261259, 0.041241232, 0.037578903, -0.005620645, -0.005903547, 0.035540514, 0.010974667, 0.025047177, 0.035739053, 0.042398363, -0.0405056, 0.021749366, 0.037597824, -0.034085527, 0.00221801, -0.014123108, -0.02757812, 0.00781016, 0.018695958, 0.034711167, 0.0040424643, 0.10423294, 0.048787415, -0.058991473, 0.023497155, 0.007256462, -0.044145048, -0.016206376, -0.042167377, -0.028689926, -0.03149849, -0.0017356903, -0.027791724, -0.0098217195, -0.05116877, 0.0111040175, 0.04746596, -0.044924684, 0.01504001, 0.0097207455, -0.018717298, -0.022523059, -0.021640033, 0.046626277, 0.059426166, -0.08502111, -0.0060184347, -0.04853773, -0.052332055, 0.00023362524, 0.018170852, -0.018579146, 0.0009353293, 0.013381315, 0.03201414, -0.069269225, 0.010490698, 0.055747997, 0.011110618, -0.028094206, 0.008901957, -0.04462913, -0.026331898, 0.021299055, 0.025990037, 0.015263254, 0.023866622, 0.018015541, 0.026675735, 0.01486182, 0.025413234, 0.006711336, 0.040912133, 0.028865697, -0.0156398, -0.0072058644, -0.02880234, 0.007820066, 0.044060577, 0.030021502, 0.026855903, 0.07256021, -0.034902114, -0.008761222, 0.050435938, 0.018949052, -0.033198543, -0.009603494, 0.075389236, 0.046121407, -0.06303218, 0.022729844, 0.004915369, -0.07401388, 0.030653743, 0.039801646, -0.020513264, -0.0049268086, -0.021950653, -0.023711422, 0.011617466, -0.02737419, 0.029010888, 0.05244117, 0.0010664926, -0.038662996, 0.001565861, -0.015955152, 0.020359714, -0.015021201, -0.004129579, 0.051490825, 0.0037869508, -0.05109122, 0.030477755, -0.051753104, 0.016364107, 0.0017702281, -0.03973829, -0.054156177, -0.04845326, 0.015009211, 0.0020427909, -0.029061044, 0.045578044, 0.005726678, -0.00073315867, -0.03342535, -0.0040539037, 0.01264887, 0.01519708, 0.035571314, -0.029087441, -0.02216184, -0.023489237, 0.027087329, -0.0055788476, 0.01800947, -0.009943372, -0.010412162, -0.07336624, -0.046042208, 0.017530253, 0.007101811, -0.028909694, 0.03502398, 0.049497172, -0.007837225, -0.07474424, 0.021477904, 0.013405513, 0.00083616714, 0.009613832, 0.0034260636, -0.03403097, -0.06828897, -0.073873095, 0.036374703, 0.010392583, -0.03814559, -0.038576763, -0.025031338, 0.031876866, -0.033036, 0.036975816, 0.020232452, 0.014457926, -0.016086861, 0.02137737, -0.034585334, -0.005465115, 0.005370741, 0.010173038, 0.051069994, 0.0020252196, -0.003986148, 0.0029988505, -0.023168167, 0.026309898, 0.007865382, 0.05146971, -0.009625821, -0.00019182789, -0.019650918, -0.037767213, -0.021115806, -0.0107516, -0.04416265, -0.024457725, -0.01234914, 0.020503584, -0.025655659, 0.022022368, -0.051165245, 0.009098625, 0.031812795, 0.009828099, 0.014166225, -0.01186132, 0.0085557, -0.05886003, -0.0113336835, -0.0075389235, 0.006601343, -0.032996595, -0.004510595, -0.04969772, -0.013303886, 0.023055425, -0.0008157085, -0.03706018, 0.004449879, 0.013487347, -0.00081587344, 0.009638911, 0.05193432, 0.020818934, -0.019147646, 0.04432808, -0.023556113, 0.03629419, -0.007182986, -0.061230052, 0.09236601, -0.014981493, -0.043055568, -0.025559746, 0.00027256276, 0.007522672, 0.0089712525, -0.014798026, -0.0020309116, 0.043106716, -0.008253879, -0.009107045, 0.0037098457, -0.044527277, 0.0030964145, 0.043133114, -0.021664232, -0.023767298, -0.05647131, 0.04242388, -0.003257994, 0.0019389575, -0.028556835, -0.0017202174, -0.029974427, 0.0383229, -0.034377668, 0.04180044, 0.03582078, 0.0024480054, -0.019002398, 0.012300632, -0.020062294, -0.021134945, -0.022106845, 0.034021758, 0.014424709, -0.009094225, -0.035531607, -0.0052928654, 0.0044701174, -0.025108334, -0.020170966, 0.006074696, 0.05306505, -0.047582556, -0.00989767, 0.016550874, 0.023601867, 0.051065594, 0.04774171, -0.029613703, 0.027027491, -0.04664057, -0.069367774, -0.049164694, 0.024226189, -0.020348715, -0.019364936, -0.021638712, -0.010614412, 0.03530546, 0.01521072, 0.0487014, 0.022706967, 0.023043985, 0.05839487, 0.029160587, 0.023821853, 0.0042092144, -0.0056877406, -0.0112414, 0.015629573, -0.006897884, -0.07528804, 0.01360482, 0.013109769, 0.028516358, 0.066214055, 0.045515567, -0.018465633, 0.033767868, -0.028130503, 0.029483417, 0.0068371682, -0.0071789166, -0.017460736, -0.06562273, -0.009376467, 0.00025518387, -0.002583077, -0.021247357, -0.049450453, -0.028389646, -0.004537213, -0.0023512114, -0.01977829, -0.028600393, 0.0014534481, 0.0046432465, -0.019549726, -0.02878914, -0.01599288, 0.053043928, -0.004934728, 0.025755532, -0.032667056, 0.028133582, -0.013906642, 0.029992025, -0.042247888, -0.023481756, -0.0180459, 0.01187485, 0.022074284, 0.002040591, 0.046098527, 0.0140813105, 0.023698442, -0.011688301, -0.034444544, 0.03926576, -0.0161373, -0.0072511816, 0.011882769, 0.0370175, -0.07094112, -0.02325341, -0.0057725245, -0.007869783, 0.0067595127, 0.011990672, 0.03211753, -0.012004201, 0.005502292, 0.033335373, 0.02294081, 0.026287459, 0.0057895943, -0.013655858, -0.00073134375, -0.07578785, -0.03419728, -0.0051679136, -0.04384235, -0.027253198, 0.031095035, 0.033598036, 0.011686212, -0.016180638, 0.07667836, -0.045369275, -0.02056958, 0.03670248, -0.0595564, 0.01692067, -0.039650735, -0.031930983, 0.029552933, -0.040102586, 0.014131027, 0.013489108, 0.05046481, -0.024756357, -0.01321352, -0.018831689, -0.03388809, 0.042855054, -0.0043612244, 0.022092765, -0.0005011283, 0.034115884, -0.014371253, -0.009215658, -0.06474983, -0.0013023177, 0.017996622, -0.03510274, 0.024396183, 0.013550484, -0.014828823, -0.002106587, -0.007670475, 0.036155157, -0.0020348716, -0.02341664, 0.014457487, 0.00926389, -0.026583118, -0.022463221, 0.03326542, -0.026070112, -0.024653403, -0.023572829, 0.019916663, 0.03592582, 0.017369444, 0.0021347452, 0.017306747, 0.01866362, -0.01488778, -0.011843171, -0.0030107296, 0.03153891, -0.10973259, -0.005979002, 0.07048443, -0.014888659, -0.020608077, 0.01976267, -0.047015432, 0.031687237, -0.035823416, 0.0065287473, -0.050892465, -0.06302514, 0.0069786743, -0.0013419152, 0.02502364, 0.009004471, 0.012565826, 0.0059561236, 0.04615523, 0.031392895, 0.018255327, 0.016405683, -0.015216218, 0.0427565, -0.0016217375, -0.00081130874, 0.04395102, -0.0035505756, -0.0030050103, 0.03403163, -0.0023322927, 0.0036825675, 0.031547766, -0.036607448, 0.05479942, 0.016824977, -0.047770422, 0.027420828, -0.034428705, 0.0010862914, -0.0032421553, -0.025922723, 0.042018224, 0.022552975, -0.011998482, -0.038069915, -0.031204587, -0.012900866, -0.0015544218, 0.0008262678, 0.014883599, 0.0011419478, -0.04240936, -0.026169548, -0.005712599, -0.022485219, -0.04575359, 0.06380433, 0.032321237, 0.055497654, -0.001931038, -0.03846061, 0.07424971, 0.020501824, -0.034082007, -0.020935638, -0.020434398, -0.044081252, -0.020846764, 0.03116367, -0.0067856913, 0.009774436, 0.08654429, 0.03224996, 0.016049746, -0.08078242, -0.011842292, -0.053099368, -0.005026242, -0.06344399, -0.025228005, 0.014114307, -0.013431031, -0.00090810267, 0.025831647, -0.041366927, 0.088775836, 0.006752253, -0.010059524, 0.0033952657, -0.034078486, -0.0021171463, -0.005412538, -0.019337054, 0.080855444, 0.025237659, 0.02138551, -0.033742018, -0.00061756285, -0.05686905, -0.010789108, 0.0058459104, 0.015723368, -0.02214996, 0.02013225, -0.013596021, -0.026166465, 0.036062982, 0.044786092, -0.051372144, 0.05535378, -0.018344201, -0.036317065, -0.017813155, 0.040289134, -0.041662067, 0.036025364, 0.006887325, -0.009094665, 0.005509717, -0.058009453, 0.06359006, 0.011900808, 0.0014690671, 0.03178535, -0.015065088, 0.0107603995, 0.032608982, -0.03356691, -0.009400446, 0.009116883, -0.010328568, 0.006116988, 0.011503514, -0.022696406, 0.03785785, 0.016802538, 0.029178297, 0.0040618232, -0.050566442, -0.015768604, 0.04337158, 0.0028299014, -0.021875419, -0.037575386, 0.028832808, -0.031213388, -0.023526194, 0.03334065, -0.036206193, 0.0059769126, -0.07102383, -0.010866214, 0.04283833, 0.018753871, -0.00092449156, 0.027476924, 0.004068203, -0.03405209, -0.0003595673, 0.027292356, -0.0053243544, 0.04636075, -0.0074360254, 0.024576407, 0.018849289, 0.0279951, -0.0053423624, -0.0056593623, -0.061441675, 0.036175393, 0.06125293, 0.002466924, 0.023774778, -0.01107014, 0.023165416, 0.021223158, -0.0031634, -0.043380823, -0.033933517, 0.041276433, 0.018367078, -0.055007085, -0.004386303, 0.015022411], [-0.047842667, -0.082154855, -0.04074153, -0.041372538, 0.01922503, 0.029131537, -0.01412318, -0.033546887, 0.018260766, 0.07238875, 0.01621986, 0.007601993, -0.03220136, -0.008406701, -0.019747535, 0.021146616, 0.023108993, -0.021388583, 0.035271183, 0.036313143, -0.005052456, 0.00774906, -0.022083407, 0.028751938, -0.024881292, 0.044584155, 0.029046074, 0.023832884, -0.0054697944, 0.020142812, -0.009725312, -0.055978816, -0.0016715727, -0.023378154, -0.00707588, -0.0102603035, -0.02289519, 0.01635999, -0.04267061, -0.06048962, -0.033369295, 0.03391095, -0.008482732, 0.029983697, 0.0068045, 0.061772715, -0.012984103, 0.024710916, -0.04598677, -0.047190294, 0.030339155, -0.03237923, -0.036553722, 0.014619602, -0.012182724, 0.035142984, 0.03768475, 0.008933368, 0.002652449, 0.0073400466, -0.026923863, 0.016997652, -0.108800955, -0.0009623198, 0.025564324, 0.010573308, -0.014203373, 0.0036461595, 0.010993975, -0.03005057, -0.031272616, 0.0141576575, 0.013190273, -0.01368836, 0.044688486, 0.016088055, -0.08359195, 0.0031339214, -0.010538899, -0.009022372, 0.016351666, 0.015388236, 0.01360456, -0.04936578, -0.038810235, 0.027533777, -0.00089086726, -0.02698047, 0.030752625, 0.019239735, -0.047589876, 0.009505544, 0.06521575, 0.003045681, -0.005978148, 0.024814975, 0.0060713827, 0.049094953, 0.008696396, 0.018349562, 0.07314185, -0.002135251, -0.008556543, -0.01835081, -0.00075864536, 0.029349087, 0.0040191, -0.0089211585, 0.012566209, 0.03829522, 0.0033430066, -0.016804522, -0.01590769, -0.042872623, 0.010830814, -0.013098425, 0.031533454, -0.010593842, -0.03542269, -0.008735244, 0.0053166226, 0.021041727, -0.0025577226, 0.023582939, -0.053321615, -0.012464093, 0.0083256755, -0.007074909, -0.063275576, 0.010254615, 0.008117318, 0.022771016, 0.041067857, -0.029688729, -0.030133678, 0.0058585517, -0.03648546, 0.03742239, -0.0033523717, 0.010299152, -0.0294691, 0.006647443, 0.03290978, -0.005148188, 0.014495843, -0.0152146, 0.019498074, -0.06805498, 0.009652333, -0.0008058179, -0.022965645, 0.0054653543, -0.005301638, 0.011250511, 0.032399207, -0.041494075, 0.019070469, 0.018830167, -0.04640446, 0.03846615, -0.016747082, 0.010835254, 0.015169578, 0.022682777, 0.006272317, -0.061749402, 0.011638852, 0.0036789028, -0.0021474604, -0.0031100577, 0.08433784, -0.024420945, 0.02950115, 0.020717623, -0.06722086, 0.008997467, 0.03963159, -0.034621313, 0.052829355, 0.030450149, -0.0058516143, 0.016270917, -0.011493728, -0.017831774, -0.04314844, 0.052755546, -0.009656808, 0.0028020486, -0.0026505417, 0.02009883, 0.0011770936, -0.04628791, 0.010347989, -0.0145868575, -0.03475173, 0.03881384, -0.054891072, 0.004173382, 0.002433548, 0.022812638, 0.011241494, 0.0050635557, 0.024235861, -0.027245538, -0.045547582, -0.03562026, 0.054558646, -0.0012409152, 0.03961161, -0.02338093, -0.037800185, 0.016332798, 0.013921448, 0.034935426, 0.023540761, 0.042379804, 0.008434172, -0.008006515, 0.007718537, 0.059448496, -0.01858376, 0.0009835474, 0.016345562, -0.021751532, -0.02112636, 0.015293892, -0.002646657, 0.029664312, -0.0007026974, -0.014134834, 0.092116304, 0.0030637176, -0.0017803471, -0.047975026, -0.009273288, -0.017187452, -0.032423627, 0.024911122, -0.06461638, 0.02397031, -0.009317963, 0.037685864, 0.023313222, -0.008021551, -0.0031350313, -0.0003951394, -0.016873892, 0.027230209, -0.03486994, -0.0024474221, 0.04051233, 0.025530888, -0.03416873, 0.01610748, 0.014548842, 0.011784393, -0.001839174, -0.019266652, 0.04423119, 0.024853822, 0.012645708, -0.06072715, -0.008619532, -0.04108506, 0.01912985, 0.024587436, 0.011462372, -0.0044397684, 0.0061046807, -0.045005932, -0.03982805, -0.025960434, 0.036153033, 0.014400942, -0.026887236, 0.021024184, 0.004715034, -0.0005033587, 0.051732175, 0.030580012, -0.06722253, -0.005856609, 0.0266495, -0.008908395, 0.002943566, 0.012277069, 0.0368079, -0.048603807, 0.001531165, -0.016456, -0.02322637, -0.02428664, 0.0047749705, 0.049498975, 0.04194249, -0.033968665, 0.05147023, -0.011397995, -0.07516527, -0.0009068226, 0.021405233, -0.0015145462, 0.024303291, 0.035303924, -0.022657247, -0.033411477, -0.0402354, 0.0653889, 0.017517105, -0.007098079, -0.021640679, -0.027940571, -0.037017677, 0.038132057, 0.002357517, -0.007670662, 0.015412656, 0.08884864, -0.01953054, -0.0093923295, -0.010238105, 0.0011265911, -0.010662658, -0.039367422, 0.04376647, 0.046483263, -0.00968147, 0.006442104, -0.051627565, -0.022954155, 0.041063413, 0.042599574, -0.028678682, -0.009838526, 0.0064831716, 0.012007353, -0.012414702, 0.0032055127, -8.8795365e-05, 0.019915689, -0.0054109674, -0.086761944, -0.0013907574, -0.010508376, 0.060800403, -0.062731706, 0.0047749705, -0.07982703, 0.0074887793, 0.0025850548, 0.01168325, -0.022323709, 0.009630412, 0.023240522, -0.020897571, 0.004067868, 0.007986033, -0.020775896, -0.014693413, -0.0027596974, -0.005479368, -0.02010771, -0.06353974, 0.050003998, 0.0120117925, -0.021492919, 0.05894236, -0.01549812, 0.061185345, -0.011354152, 0.06751999, 0.04040411, -0.0064781765, 0.015773386, 0.0108125005, 0.06707601, -0.05473124, -0.007525407, 0.024002496, -0.0023594592, 0.003618411, -0.010749788, 0.0681793, 0.039722603, 0.009546889, 0.049841944, 0.03581783, 0.020439027, -0.038390674, 0.041775998, -0.017050374, 0.021119284, 0.024657918, 0.032246035, 0.013100091, 0.018800199, 0.038324077, 0.038750295, 0.01272826, -0.015331074, -0.015986495, 0.043190066, -0.027712755, 0.009080436, 0.013659641, -0.05112282, -0.013972505, 0.0002925391, -0.016456, 0.019808026, 0.046795156, -0.0145520335, -0.034317743, 0.030716537, 0.034191765, -0.027857326, -0.025028082, 0.04480836, 0.011425744, 0.007877259, 0.02459798, 0.045323376, -0.054489274, 0.034069672, 0.04331993, -0.0009623198, 0.03243972, -0.033808835, -0.03782849, 0.030405752, 0.016304493, 0.050850917, -0.0013863175, 0.077318564, 0.035029773, -0.021022301, 0.014135112, -0.02428553, -0.06146415, -0.0009068226, -0.029040523, -0.03541825, -0.0015307488, -0.0033831033, -0.01449945, -0.0067639863, -0.03525259, 0.029890738, -0.0025206783, -0.08191816, 0.008077325, -0.034839973, -0.0060310084, 0.011143263, -0.067043826, 0.029632399, 0.07263461, -0.034137897, -0.021349734, -0.016411602, -0.029795146, -0.006851672, 0.015068573, -0.04614695, 0.010737579, -0.005802777, 0.034324955, -0.04957001, 0.032210518, 0.01745356, 0.03314953, -0.0115922345, -0.017271252, -0.03502089, -0.026170215, -0.00056607043, 0.0474367, 0.01053002, -0.0137111135, -0.0023658413, 0.013140049, 0.021854758, 0.03860281, 0.013865812, 0.041487414, 0.018325143, -0.049345803, -0.011159912, -0.038752515, -0.00050502364, 0.0050161057, 0.031065611, 0.020770622, 0.052442543, -0.053517517, -0.011738746, -0.00090904254, 0.025033632, -0.04691947, 0.024554694, 0.023718907, 0.042819344, -0.043737818, 0.016115248, 0.018695863, -0.079773754, 0.036643073, 0.052549094, -0.0075387266, 0.00593597, -0.019895988, -0.06293371, -0.011866667, -0.01663359, 0.03591828, 0.014456995, 0.018417267, -0.03372448, -0.0023297684, -0.006981536, -0.026449919, 0.005989941, 0.0008009619, 0.011461817, 0.0065605897, -0.026853938, 0.03343645, -0.032606766, -0.0077374056, 0.00078736513, 0.008060677, -0.03333156, -0.043969244, 0.012271519, 0.011934651, -0.01492174, 0.020936837, 0.022287635, -0.0012074782, 0.0011071672, -0.021931343, 0.033987813, 0.029553315, 0.0071879844, -0.018760934, -0.02220106, -0.019554542, 0.05058228, 0.0057539395, 0.026842285, -0.0039896867, -0.017113086, -0.08860001, -0.06943797, 0.06226775, -0.0060550114, -0.026119156, 0.010027771, 0.048332427, -0.012704397, -0.038199764, 0.007686626, 0.022344243, 0.031277057, 1.9978957e-05, 0.0264255, 0.02275603, -0.080539614, -0.07195088, 0.0037427244, -0.014330462, -0.031503208, -0.01588105, -0.044514187, 0.0082188435, -0.02760648, 0.04129872, -0.028259125, -0.007603103, -0.012535407, -0.0016810071, -0.004842122, 0.005813876, -0.010833034, 0.029213673, 0.018220808, -0.012803459, -0.0013249932, 0.0507521, -0.025750656, 0.047937285, -0.0127554545, 0.043407615, -0.0051862043, -0.014151345, -0.026149679, -0.03849723, 0.026352243, 0.008945023, -0.045831725, -0.038988933, -0.048041064, -0.008035703, -0.047983903, 0.035810612, -0.009053242, -0.032969717, 0.058225337, -0.014990321, 0.038168687, 0.0061401995, 0.01863565, -0.023814917, -0.011647732, 0.0038884045, -0.015933217, -0.015166247, 0.02679955, -0.0024640714, -0.031253748, 0.028829912, -0.029457862, 0.017419431, 0.021692708, -0.01267526, 0.01442231, 0.0079283165, 0.05171886, -0.010072724, -0.014180619, 0.054863326, 0.0023042397, 0.05435941, -0.020049993, -0.0735936, 0.072240576, -0.013039599, -0.04250745, -0.016367204, 0.0063111302, 0.009250535, 0.03651321, -0.031490166, -0.027310401, 0.027333433, -0.005026095, 0.031504594, -0.013827657, -0.011526437, 0.0046267933, 0.04665974, 0.0131336665, 0.02048287, -0.054120775, 0.048892945, 0.021706026, 0.0072129583, -0.009211652, -0.021932455, -0.026138026, 0.02573678, -0.04558088, 0.013942814, 0.036452163, 0.0385999, -0.044963755, 0.04613169, -0.022847047, -0.00788697, -0.03345532, 0.019035505, 0.04034639, 0.008066227, -0.010888531, 0.018125076, 0.017979952, -0.056633685, -0.013541189, 0.0019768067, 0.047206942, -0.0132327285, 0.0029612386, 0.037132, 0.028743058, 0.024704672, 0.0008785191, -0.023758309, 0.048740882, -0.04444097, -0.041247044, -0.015542657, 0.026758483, 0.03455194, -0.008109236, -0.01318833, -0.011605554, 0.037651453, 0.06367835, 0.002515406, 0.03102954, 0.07949405, 0.03306656, 0.0152696725, 0.04596714, 0.053045243, -0.020510618, 0.0057428405, -0.015593688, -0.03546709, -0.027002392, -0.036333952, 0.01406685, -0.0070348126, 0.04806604, 0.05840515, 0.015444288, 0.026482107, -0.027867315, 0.013683366, 0.010307753, 0.0034541395, -0.0028347918, -0.05641197, -0.044788383, 0.034745626, 0.010356592, -0.039511714, -0.055634737, -0.008839578, -0.023466116, -0.017688036, -0.031915274, -0.015549716, 0.032391906, 0.005877559, -0.009607104, -0.011475692, -0.0621512, -0.0005305523, -0.0015505891, 0.019606015, -0.0410501, 0.011972944, -0.018882332, 0.004258848, -0.058010012, -0.00822911, 0.025397692, 0.022922523, 0.01089075, -0.012192036, 0.03203293, 0.020063382, 0.038215306, -0.021108184, -0.0033987812, 0.021503948, -0.031837575, 0.02085137, 0.013454718, -0.0035340553, -0.050822027, -0.008309026, -0.007931091, 0.001281428, 0.040246185, -0.027867315, 0.02183811, 0.011156687, -0.0032168895, -0.00015886045, 0.02012769, -0.008136707, -0.01089075, 0.0037491065, -0.0030767594, -0.07872153, -0.01907824, 0.022165542, -0.025008313, -0.06226553, 0.024740608, 0.009046444, -0.03578009, -0.05302415, 0.02297025, -0.01962752, -0.027213559, -0.00032375622, -0.056567084, 0.008173613, -0.011325293, -0.04496153, 0.030555595, -0.017191805, 0.06360967, 0.020351343, 0.025362175, -0.037822384, 0.008457758, -0.0018502735, -0.010596617, 0.043518607, 6.548658e-05, -0.014544958, 0.0071347076, 0.022335364, -0.0020755916, -0.04763427, -0.041116692, -0.0077707046, 0.0015092436, 0.013081777, 0.030284073, 0.029266952, 0.02498202, -0.014879882, 0.0012128891, 0.032112844, -0.0027582059, 0.004008556, 0.044539753, 0.008594281, 0.0165509, -0.012093512, -0.01743497, 0.0018036558, 0.011443502, -0.024971616, 0.0063251434, 0.05052345, 0.010044975, 0.00937568, 0.06295813, 0.01725738, 0.0035495947, -0.02835791, 0.004615694, 0.016424367, -0.03807101, -0.02346192, 0.06581956, -0.015212866, -0.012224694, 0.027369782, 0.015039714, 0.047594313, -0.08211795, -0.031403035, -0.06255189, -0.049369115, 0.0071768854, -0.006064168, -0.0146456845, -0.013798522, -0.0022132245, -0.018373981, 0.04245306, 0.019012196, 0.016492924, 0.02793391, -0.019505288, 0.04745446, -0.037678093, -0.033373736, 0.037018787, 0.011172676, 0.022737196, 0.011717103, -0.0375782, 0.022320934, 0.015291672, -0.042322088, 0.05473457, 0.015360488, -0.044050824, 0.00449804, -0.003996901, 0.008819045, 0.004342648, -0.0133431675, 0.028525373, 0.027771652, -0.009268293, -0.030217063, -0.00034241713, -0.020945022, 0.019418435, 0.016267337, -0.0027806824, -0.008767501, -0.025857208, -0.014914846, 0.07784689, -0.022438588, -0.045108046, 0.041478254, 0.02482309, 0.056398377, 0.02141078, -0.05011411, 0.06843903, -0.013521869, -0.032887302, -0.018075682, -0.020366048, -0.014989491, -0.03487105, 0.0066640917, -0.018376963, 0.038432576, 0.025692798, 0.05396094, -0.016112473, -0.107704334, -0.036856458, -0.029631881, -0.032094527, -0.047937285, -0.03938962, 0.018507173, 0.018568568, 0.07117614, 0.011020926, 0.019622527, 0.04674188, 0.007833416, -0.020392686, 0.012302597, -0.019535119, -0.026307847, 0.021093061, -0.023620121, 0.07304306, 0.0329018, 0.022889223, -0.05357912, 0.006265068, -0.03027922, 0.022309834, 0.006426564, 0.014364869, -0.01532164, 0.035338473, -0.008331225, 0.016946595, 0.030979037, 0.027087027, -0.030227605, 0.065901145, 0.014127342, -0.019261934, -0.023301015, 0.031564534, -0.039864678, 0.038285233, 0.044608016, 0.013613457, 0.0033320459, -0.02761924, 0.10206139, 0.016691308, 0.049921304, 0.0009445607, 0.018082066, 0.03623961, 0.009518585, -0.035749014, 0.0056877593, -0.00650648, -0.026767364, -0.009098195, -0.0058072163, -0.02561975, 0.00125583, 0.026020925, 0.039667107, -0.028677016, -0.050120544, -0.047245238, 0.057743624, -0.03176654, -0.03221801, 0.008059567, -0.001023644, -0.020762574, 0.004147437, 0.014338232, -0.020261992, 0.015454832, -0.0627428, 0.028069325, 0.0055286214, 0.0013363701, -0.019935668, 0.049396858, 0.0059470693, -0.0322255, -0.0012514597, 0.011183776, -0.013791029, 0.02084249, 0.025887176, 0.022739382, 0.042668395, 0.026949393, -0.0116432225, 0.00455104, -0.02448754, 0.036130834, 0.046213545, 0.015519764, -0.03330714, -0.0057472796, 0.051296804, -0.011293105, 0.0071169483, -0.008179163, -0.022019446, 0.015963186, 0.013348718, -0.048140407, 0.019668173, 0.008965279], [-0.034814246, -0.07152435, -0.049750194, -0.036779687, 0.020118494, 0.015466513, -0.001980821, -0.015031247, 0.005431627, 0.06341854, 0.029475331, 0.0062623895, -0.035156105, -0.016234815, -0.016523229, -0.00088339014, -0.00257958, -0.0062623895, 0.030487929, 0.023009995, 0.0058630486, -0.0056043845, -0.016197503, 0.035144005, -0.057004884, 0.027810656, 0.021095477, 0.03138821, 0.008267664, -0.0014488709, 0.015272767, -0.02558945, 0.021825949, -0.02509998, 0.011111707, 0.023946831, 0.015540508, 0.024134401, -0.043734368, -0.03540771, -0.017895207, 0.023462279, -0.004823351, 0.018559765, 0.0022992347, 0.03961541, -0.017652677, 0.040069208, -0.019606018, -0.02408157, 0.031401698, -0.0035900332, -0.032092728, 0.03939053, -0.022851165, 0.019132305, 0.045515772, 0.019647868, 0.015952453, 0.017275522, -0.03221576, 0.023311391, -0.094868384, -0.014750397, 0.022267282, 0.025831096, -0.02215333, 0.01191543, -0.015653327, -0.02528969, -0.019031713, 0.03800973, -0.0003262291, -0.031485397, 0.050333075, -0.003034763, -0.08700788, -0.03265115, -0.018148892, -0.023392191, 0.0035164175, 0.008529858, 0.014600897, -0.035562504, -0.03435137, -0.010376304, -0.0064229826, -0.032756027, 0.017782766, 0.024525676, -0.07455167, 0.021734448, 0.04828998, -0.020091077, -0.014548206, 0.002736896, 0.021225568, 0.04172254, 0.019703206, 0.024406174, 0.061794452, -0.019606018, 0.0134626245, -0.014108024, -0.03335504, 0.0006317223, 0.017018875, -0.012208507, -0.009651744, -0.0013421025, -0.013831334, 0.02753031, -0.010804639, -0.037748795, 0.032371685, -0.010785289, 0.019254074, -0.0030857993, -0.02983963, -0.0121133365, -0.0020536804, 0.018729009, -0.017965356, 0.021386161, -0.025716135, 0.0011798705, -0.014378285, -0.0037871508, -0.085317746, -0.014450892, 0.03130993, -0.0046680355, 0.052130103, -0.012194011, -0.019762326, -0.0006575004, -0.02764729, 0.055436514, 0.00040703008, 0.048667137, -0.026048161, -0.000998352, 0.032917377, -0.0038582773, 0.03414918, -0.029180113, 0.015145705, -0.06572382, 0.009052733, -0.009781784, -0.004675111, -0.019768378, -0.020204525, -0.010757684, 0.0078153815, -0.036341634, 0.004428044, 0.006089695, -0.016274145, 0.04271736, -0.006613325, 0.009624681, 0.035356786, -0.00024378946, -0.020476298, -0.06717799, 0.020444533, 0.013032023, 0.0058363248, -0.0023113359, 0.09238889, 0.01189991, 0.016931646, 0.025988413, -0.07347064, -0.0012116992, 0.03041595, -0.041761365, 0.023601552, 0.0071059465, -0.008595406, 0.005669933, -0.030198634, -0.013311107, -0.056256626, 0.049707845, -0.01376692, -0.005760188, 0.018009664, 0.02659549, 0.0022225934, -0.041321687, 0.0074218386, 0.012486206, -0.035293255, 0.016634662, -0.0391272, -0.011377177, 0.013774735, 0.052696846, 0.0097717475, 0.005582199, 0.012714616, -0.014874435, -0.022519138, -0.032184497, 0.043838743, -0.0035865824, 0.036776662, -0.006148436, -0.025781684, 0.03481525, 0.036995493, 0.03287099, 0.019005999, 0.044629358, 0.034625165, -0.018244628, 0.020650255, 0.053463258, -0.03181818, 0.028188314, 0.03113446, -0.032229874, -0.017167872, 0.021420572, 0.0030727054, 0.023087643, -0.01789924, 0.0029368186, 0.08908122, -0.0150973, -0.015008053, -0.04872361, -0.0070263427, 0.00013916421, -0.053512167, 0.04127328, -0.02739014, 0.06062719, -0.026194133, 0.031034626, 0.021491794, -0.023087643, -0.007375703, 0.0037803755, -0.047497347, 0.017083919, -0.01621868, 0.039272543, 0.026296992, 0.031254467, -0.017242244, 0.031511616, 0.0090678595, -0.0065470836, 0.0011955012, 0.008147157, 0.014159453, 0.045391105, 0.03241921, -0.06053038, -0.0021137139, -0.05293887, 0.03977878, 0.011167424, 0.020039646, -0.0058267447, 0.015433865, -0.04955456, -0.063442744, -0.05307602, 0.043189306, 0.017940082, -0.007434444, 0.043400075, 0.047568697, -0.015381679, 0.03896497, 0.033740006, -0.05184573, -0.009135424, 0.017649904, -0.020574117, 0.017596206, 0.022322746, 0.014624973, -0.048917226, 0.017668055, -0.034134433, -0.023272693, -0.019309035, 0.01438257, 0.03294158, 0.039623477, 0.013643134, 0.05020399, -0.001985611, -0.082336806, -0.019994266, -4.941338e-05, -0.022506533, -0.016879207, 0.003336317, -0.005167732, -0.03742912, -0.034475915, 0.03324209, 0.02647851, -0.004960498, -0.031874653, -0.025771061, -0.049585313, 0.029410034, 0.012366203, 0.012411204, 0.013146983, 0.084765114, -0.02013944, -0.025047792, -0.031596325, 0.0139621785, -0.008281278, -0.047883578, 0.06436244, 0.045542747, 0.0021712894, -0.0046652784, -0.07000665, -0.030588204, 0.043342087, 0.035492923, -0.0121577075, -0.023937251, 0.034181956, 0.0058402955, -0.015154276, 0.025416628, 0.00072657835, 0.031230262, 0.013643765, -0.06374578, 0.013399219, -0.013500946, 0.035823688, -0.07174218, -0.012092159, -0.07344643, 0.00839019, 0.0015661016, 0.026633812, -0.012410321, 0.022115512, 0.027178619, -0.020232258, -0.0013099586, 0.00024404158, 0.012353722, -0.027393162, 0.015911737, -0.0018981292, -0.02277755, -0.06569357, 0.038127307, 0.007561759, -0.011789818, 0.06729093, -0.0038855048, 0.02488014, -0.005584342, 0.07219193, 0.045803174, 0.0055857287, 0.0129793305, 0.018091347, 0.062151946, -0.04405656, -0.025891602, 0.013645403, -0.011795679, 0.007927822, -0.03816528, 0.064619586, 0.027340218, 0.032198865, 0.055677786, 0.020118304, 0.010787873, -0.041023187, 0.024675427, 0.0007180066, 0.014832081, 0.04252727, 0.046562526, 0.015354451, 0.00037034822, 0.014351561, 0.013480777, 0.009863768, 0.006594165, -0.0024928544, 0.025606042, -0.020344067, -0.006806945, 0.015798919, -0.053251486, -0.009075296, -0.007262506, -0.008100265, 0.016984083, 0.043849833, -0.016793994, -0.03393993, 0.026465401, 0.038328648, -0.014582493, -0.024129864, 0.030005831, 0.0060849045, 0.016723655, 0.036610268, 0.03696322, -0.056944378, 0.02926939, 0.01718426, 0.013177237, -0.0042566094, -0.026322203, -0.022994922, 0.031704985, -0.0034249017, 0.04425775, 0.016935678, 0.08404712, 0.026803227, -0.047009267, -0.0032533414, -0.04148606, -0.0770768, -0.008169342, -0.018661618, -0.028605808, -0.008669338, -0.0052408436, -0.00352751, 0.020570084, -0.039986514, 0.006413655, -0.0047562895, -0.07583844, 0.00016941728, -0.033070657, -0.0012676044, -0.0072920024, -0.03953171, 0.02935558, 0.08284506, -0.07023809, -0.01319791, -0.02253666, -0.048937395, -0.020999676, 0.01873372, -0.045080632, -0.0063970154, -0.017633265, 0.014200799, -0.03227097, 0.027922088, 0.028716233, 0.03435137, -0.0060927197, -0.02416516, -0.025799833, -0.020570368, -0.0043539237, 0.043629996, 0.023597408, -0.001262184, -0.00021303217, -0.0020108218, 0.02296512, 0.024714503, 0.0038415357, 0.05797424, 0.03761114, -0.048210315, -0.007221412, -0.03065243, 0.017506454, -0.0075940927, 0.034102794, 0.022684773, 0.03342563, -0.04326595, -0.044239596, 0.025519991, 0.029730055, -0.061847396, 0.037893504, 0.040885158, 0.012218513, -0.05195867, 0.029589538, 0.0056805215, -0.0646206, 0.027352825, 0.06650839, -0.00502403, 0.023462279, -0.012757475, -0.05711985, 0.004288879, -0.021650117, 0.029861815, 0.05753734, -0.009999402, -0.0107787335, -0.011491636, -0.02506878, -0.013156059, 0.00044673725, -0.0101403305, 0.030234937, -0.015842535, -0.036136303, 0.027062899, -0.02199097, 0.00135433, 0.001581039, -0.029250704, -0.03060705, -0.036841203, 0.015717488, 0.017080389, -0.021937521, 0.025549743, 0.013812047, 0.009104162, 0.0174641, -0.012226282, 0.03286595, 0.021692473, -0.009114247, -0.03154288, -0.02423953, -0.015046878, 0.03948835, -0.021670286, 0.010851783, 0.0027081554, -0.003058209, -0.093542546, -0.06714572, 0.07341063, 0.010111087, -0.01564488, -0.0025183177, 0.050084997, 0.005882461, -0.04350596, 0.01059211, 0.02395137, 0.021494819, 0.008277245, 0.025690261, 0.034756765, -0.074777566, -0.08055389, -0.01114081, -0.036838178, -0.031949278, -0.027443584, -0.04509626, 0.00918572, -0.019055916, 0.02427155, -0.05029173, 0.0014866872, -0.027119372, -0.014505347, -0.004225852, -0.0074901604, -0.0090955915, 0.008161527, -0.0010760014, -0.02034621, 0.006554836, 0.053088117, 0.00638025, 0.037958045, -0.028975146, 0.02181046, 0.02837538, -0.01866023, -0.021039383, -0.059651025, 0.008329684, 0.0052862233, -0.03544452, -0.05462094, -0.065653235, -0.022170471, -0.037850644, 0.044437755, -0.013020173, -0.01236595, 0.07517287, -0.015540381, 0.027580228, 0.011928163, 0.015650742, -0.0075390693, -0.034327675, -0.0074357046, 0.009933097, -0.013387497, 0.0095362775, -0.009353247, -0.026153967, 0.041733127, -0.011526931, 0.0239191, 0.026357498, -0.016409274, 0.0041847583, -0.00044472038, 0.043830674, 0.0004588385, 0.0016268598, 0.05005878, -0.0022876377, 0.056791097, -0.027095674, -0.058860406, 0.0749258, -0.030119471, -0.054101344, 0.0064754216, 0.020113261, 0.015856652, 0.029612606, -0.026503345, 0.003881219, 0.02343858, 0.015654964, 0.0034175904, -0.014099704, -0.011832487, 0.018189164, 0.036422577, 0.01973661, -0.020569075, -0.05082922, 0.039091025, 0.005840863, -0.01254999, -0.0010194661, 0.008047448, -0.056290913, 0.0362432, -0.054867, 0.0021318342, 0.027065169, 0.017212117, -0.019047344, 0.054551862, 0.015193101, 0.006677865, -0.042760722, 0.0066668354, 0.0068785436, 0.034973074, -0.004958418, -0.0054334546, 0.034315072, -0.06693395, 0.016462974, -0.009756559, 0.04244206, -0.016255993, 0.007121577, 0.036493294, 0.021341914, 0.05221658, -0.0011687777, -0.018269839, 0.042214654, -0.025146369, -0.05093952, -0.011424953, 0.006396511, 0.03007157, 0.0060607023, 0.004679113, 0.008576751, 0.05032122, 0.047945093, 0.0040665194, 0.016158175, 0.064238906, 0.052713986, 0.022431593, 0.029337933, 0.05247096, -0.026078163, 0.0064358404, -0.015527902, -0.0475155, -0.030519314, -0.013777256, 0.027431738, -0.027009957, 0.037782326, 0.059320256, 0.006072882, 0.0017889659, -0.035367876, 0.009532244, -0.030479986, 0.010716243, -0.0025594113, -0.05707346, -0.047404572, 0.044964153, -0.012196029, -0.03553124, -0.046451095, -0.009100129, -0.0173602, -0.025461, -0.027994191, -0.0075178924, 0.035660323, 0.026431115, 0.0011914675, -0.015411932, -0.06306401, 0.0070015728, 0.015919175, -0.0044623306, -0.033131164, 0.02953987, 0.0052897525, 0.0090043275, -0.08059826, -0.008859743, 0.010268906, -0.00023093191, 0.027844565, -0.01911617, 0.024256926, 0.022678472, 0.013542291, -0.023166932, -0.022878394, 0.03245299, -0.05800538, 0.018867843, 0.022677967, 0.0045243492, -0.049359426, 0.0122267855, -0.010104531, 0.009366356, 0.016514152, -0.024414746, 0.025270404, 0.022023743, -0.0178826, -0.025810027, 0.009855447, -0.016873535, -0.012487087, -0.004773937, -0.012922103, -0.07251867, -0.047616344, 0.037618835, -0.04224945, -0.06139158, 0.019999182, 0.027849479, -0.026491622, -0.059090335, 0.042630635, -0.040391907, -0.020038133, 0.015553113, -0.057224724, 0.0027963936, -0.012200251, -0.02151902, 0.032176174, -0.023722455, 0.059215378, 0.029110784, 0.057152115, -0.04809031, -0.015752027, 0.010734804, 0.0010135415, 0.0045992257, -8.722973e-05, -0.019889893, -0.007049978, 0.025551759, 0.0012038524, -0.040444348, -0.06762977, -0.03369841, 0.021155983, 0.020979507, 0.00445628, 0.027144583, 0.020567058, -0.029466568, 0.008482966, 0.05613864, 0.00018555227, -0.02876615, 0.012066948, 0.02398616, 0.009436946, -0.023043778, 0.010232603, 0.00041245046, 0.006756019, -0.020249149, 0.01832228, 0.051637482, 0.01911409, 0.0011634834, 0.03834478, 0.02533091, -0.0023204118, -0.016912863, -0.011752002, 0.00067766913, -0.036194794, -0.031426657, 0.04040199, 0.003330865, -0.0052897525, 0.011293478, 0.006520486, 0.03717903, -0.06173647, -0.033291303, -0.05066787, -0.032052137, -0.004176943, 0.0022296526, -0.003979542, -0.0040024836, 0.002665108, -0.021923404, 0.027086347, 0.02704664, 0.025003169, 0.018151853, -0.038647313, 0.02935659, -0.043580584, -0.018313864, 0.03023191, 0.010491772, 0.019529376, 0.03473357, -0.026492631, 0.023126405, 0.017568473, -0.01639314, 0.02758628, 0.036347006, -0.054497916, -0.0021802392, -0.0053036185, 0.020253498, 0.003927796, -0.021551292, 0.018992636, 0.038051326, -0.011189609, -0.0445749, -0.022403358, -0.04548854, 0.000543169, 0.030029217, 0.03226807, -0.010510584, -0.040185682, -0.02659549, 0.04785938, -0.044172533, -0.07944461, 0.08169494, 0.007885972, 0.05340275, 0.020872694, -0.047442265, 0.056069057, 0.0070836972, -0.006976362, -0.03628404, -0.0052640373, -0.003546166, -0.047235154, 0.0070348512, -0.0022455356, 0.028617404, 0.030078629, 0.04451641, 0.0060802093, -0.08382122, -0.018939441, -0.012127581, -0.026678687, -0.05133999, -0.04229785, 0.010660809, 0.0025785714, 0.04131967, -0.006175664, 0.029392892, 0.042493742, -0.003996685, -0.018256731, 0.009154584, -0.024853922, -0.038187467, 0.023989188, -0.016935805, 0.076977976, 0.021148926, 0.023308745, -0.03863118, 0.00883844, -0.018912215, 0.033897575, 0.023243701, 0.019460676, -0.026917685, 0.01872351, -0.01062085, -0.0035970923, 0.005945236, 0.047170617, -0.02272549, 0.04835956, 0.021155482, -0.02325202, -0.019725014, 0.021955391, -0.051437434, 0.037445255, 0.033596054, -0.0148593085, 0.0015096291, -0.019082135, 0.09906878, -0.0032070794, 0.024013137, 0.022983523, 0.019735098, 0.04651009, 0.008603474, -0.00976368, 0.01474712, 0.019309537, -0.0035935626, -0.012482425, -0.011418019, -0.016968863, 0.024187345, 0.036576677, 0.038928665, -0.009639895, -0.04382866, -0.058612335, 0.04932161, -0.021316327, -0.010927668, -0.014910108, 0.006480716, -0.026667088, 0.0142108835, 0.007248892, -0.0033343944, 0.022558719, -0.044604145, 0.015810264, -0.0056583355, 0.042282723, -0.0038384867, 0.044906046, -0.006566937, -0.048628308, -0.0046357815, 0.008985167, 0.016913492, 0.038236372, 0.0217763, 0.009488629, 0.03386329, 0.03382497, 0.009263495, 0.021640033, -0.03416683, 0.05094721, 0.045333244, 0.019265167, -0.016955815, -0.017227622, 0.029709542, -0.024670385, -0.0040418124, -0.0051879007, -0.015819151, 0.051817488, 0.036365222, -0.0383831, 0.030385194, 0.035508554], [-0.033546004, -0.08309349, 0.0010513234, -0.06177842, -3.4356974e-06, 0.007258483, 0.03745139, -0.014835483, 0.04380056, 0.022727424, -0.006272724, 0.017615965, -0.05341822, -0.017438455, -0.03122018, 0.024414636, -0.00348666, -0.006795809, 0.008928768, 0.046984877, -0.028930288, 0.0109238, -0.026475484, 0.03562818, -0.020094248, 0.067041904, -0.0029661518, 0.014200883, 0.018219072, -0.009364351, 0.005045894, -0.04171366, 0.012128011, -0.01871138, 0.020030973, 0.033099506, 0.015857533, -0.007740626, -0.041846793, -0.04365254, -0.064264715, 0.00029146165, -0.015449186, 0.026806168, 0.0072825328, 0.044861045, 0.026829217, 0.007338649, -0.00649553, -0.017868489, 0.048899133, -0.022528153, -0.018419918, 0.028010096, -0.012922803, 0.013953513, 0.022687053, 0.03108161, 0.01289775, -0.00033805828, 0.015148561, 0.009988144, -0.06427617, 0.0032518874, 0.03638461, 0.043036688, -0.016729841, 0.011910131, 0.017524347, -0.03330837, -0.007253472, 0.035561755, 0.00094424415, -0.023052385, 0.04813641, -0.00069673074, -0.063602775, 0.012246257, 0.006055989, -0.04887852, -0.025657786, 0.022479767, 0.025326243, -0.055516288, -0.063267216, 0.029140439, -0.028946893, 0.027067604, 0.030537622, 0.029971877, -0.017004412, -0.005413299, 0.03630845, 0.013122645, -0.014712228, -0.009935106, -0.016717387, 0.035780497, 0.02670682, 0.044872496, 0.039127722, -0.042522483, -0.018896336, -0.027902443, -0.044804927, -0.000655073, 0.027458092, -0.055492233, -0.00684849, 0.033094354, 0.025005292, 0.009521462, -0.019760627, -0.06770843, 0.025363462, -0.00630794, -0.0038159145, -0.044459067, -0.04526932, -0.0089900745, -0.02656481, 0.013706142, 0.018568225, 0.011344959, -0.0062561543, -0.015707435, 0.014103, 0.020659992, -0.045590557, 0.0032742193, 0.05542925, 0.0107783545, 0.05171984, 0.0043221074, -0.059879623, 0.026252164, 0.0018495503, 0.05494367, -0.036819223, 0.06473769, -0.037643217, 0.0025558725, 0.03835956, 0.015068968, 0.031582072, -0.010890587, -0.0056047672, -0.06952018, -0.01988152, -0.01261588, -0.017250635, -0.017056232, -0.003522878, -0.02279127, -0.002064854, -0.02502705, -0.0055497964, 0.0138218105, -0.026355233, 0.01135956, -0.0055044526, 0.00091389543, 0.015361861, 0.0072218357, -0.044089157, -0.022318432, 0.02617715, -0.00803989, 0.006163569, 0.043967765, 0.06714726, -0.0070162667, -0.0057605193, 0.037772056, -0.045880303, -0.031454954, -0.030571979, -0.039669994, 0.025063412, 0.02074474, -0.027305776, 0.0051342202, -0.01665082, -0.0002124406, -0.019353515, 0.022333179, -0.04969086, -0.008387968, -0.010550453, 0.004411435, 0.02921198, -0.00080953614, 0.010717086, 0.008955718, -0.042156003, 0.03330565, -0.07711881, 0.0035290336, 0.022439683, 0.032335635, 0.008978622, 0.008700331, 0.019831989, -0.03754988, -0.043782234, -0.04515766, 0.015696986, 0.009385466, 0.027865795, -0.020743165, 0.017271822, 0.05007872, 0.016407173, 0.05646683, 0.046454202, 0.055981252, 0.021003563, -0.039598845, 0.048429586, 0.06322599, -0.04296912, 0.029923778, 0.0040186206, -0.045701932, -0.036122635, 0.017083433, -0.010341449, 0.016148636, 0.024793135, 0.0091778925, 0.065641284, -0.020036986, -0.02984304, -0.0475898, -0.025441337, -0.021798067, -0.06308284, 0.023319222, -0.057087544, 0.03296666, -0.04243086, 0.02440533, -0.0016331014, -0.0291977, -0.055303276, -0.017068544, -0.03822786, 0.006649219, -0.02512826, 0.02069664, 0.05834043, 0.026482353, -0.009010626, 0.0020999983, -0.008490753, -0.0063349963, -0.0076627503, 0.015677087, -0.023363886, 0.012633058, 0.008410587, -0.050633013, -0.0037582233, -0.04141733, 0.037167374, 0.030541059, 0.047774516, -0.012438943, 0.050101627, -0.024483923, -0.01591873, -0.08674105, 0.03552969, 0.019980226, -0.03874994, 0.020709237, 0.00793188, -0.000261113, 0.057527315, 0.023956545, -0.06382151, 0.005262486, 0.018545035, 0.0024659717, 0.025255239, -0.00014773497, 0.025795216, -0.053711403, -0.038330927, -0.051813178, -0.008896738, 0.024686629, -0.009668052, 0.039897606, 0.033249535, -0.011454615, 0.02369486, -0.012930819, -0.043207686, -0.020985238, 0.035031516, 0.027755853, -0.0016880725, -0.023720052, 0.009874767, -0.00778758, -0.06524332, 0.037680436, 0.007376442, 0.0018930692, -0.050035205, -0.03460692, -0.060239226, -0.0094997035, -0.0068301666, -0.0027592944, 0.047506247, 0.08562674, -0.025408126, -0.034261346, -0.01529916, -0.0137937525, 0.03625577, -0.05716771, 0.0009353686, 0.048358586, 0.01677651, -0.00335095, -0.039432645, -0.028268632, 0.0565699, -0.007918137, 0.0034130074, 0.005502269, 0.015776722, 0.017734926, -0.019293875, 0.0120386835, -0.0003332626, 0.018595425, 0.039453827, -0.07682906, -0.0046687727, -0.0049415706, 0.03439133, -0.073615536, -0.0046021165, -0.063354254, 0.026645407, -0.023791058, 0.040512025, -0.0068901475, 0.022050304, 0.037288193, -0.029837312, -0.028639399, 0.0022332033, 0.0007627248, -0.01227231, -0.0018552765, -0.005478792, -0.017542383, -0.056606546, 0.042046063, 0.031008312, -0.031402275, 0.046127673, -0.018905496, 0.01581566, -0.026406769, 0.06813618, 0.018769214, -0.010161648, 0.00684849, -0.020949451, 0.022260742, -0.03907977, 0.01636437, 0.015742937, -0.017397227, 0.009122921, -0.0443308, 0.03890927, -0.0019804647, 0.06534696, 0.052586783, 0.07307614, 0.012380535, -0.019779023, 0.029441634, 0.017320495, 0.018373823, 0.039031524, 0.03560678, 0.011219556, -0.015594058, 0.0072332877, 0.028403481, 0.025478844, -0.003853707, -0.022011368, 0.021367032, 0.0106918905, -0.014448825, -0.026211077, -0.058874108, -0.04821772, 0.0049084662, 0.0050275703, 0.0016548609, 0.0659127, 0.015451762, -0.024913099, 0.017698994, 0.0139638195, -0.03827882, -0.03566082, 0.014770206, 0.0101199895, 0.018414192, 0.036561545, 0.045351204, -0.045781236, 0.022254156, 0.01865011, 0.0059071085, -0.019307474, -0.01283691, -0.049678825, 0.033622306, 0.035097938, 0.009377664, 0.016979503, 0.088311166, 0.03310008, -0.0044847303, 0.009246177, -0.00087867957, -0.052183658, -0.019052086, -0.04769893, -0.058610562, 0.007397629, 0.017754253, -0.033171084, -0.0051259175, -0.014136177, 0.007810485, 0.0015254496, -0.04208586, 0.020339329, -0.008574069, -0.016211338, -0.044263232, -0.051299542, 0.0053176004, 0.035822872, -0.04845249, -0.026835088, -0.039261144, -0.029851628, 0.006827876, 0.03840308, -0.015494423, 0.0015157152, -0.02218888, 0.032970954, -0.033956427, 0.009282681, 0.006124703, 0.018419059, -0.024594583, -0.013299584, -0.028279224, -0.031069009, -0.00847472, 0.032669473, 0.027336225, -0.010880853, 0.037418894, 0.039752163, 0.004601472, 0.01649421, 0.046722367, 0.036941763, 0.04092488, -0.028484222, 3.6647438e-05, -0.020926833, -0.010221199, 0.002521587, 0.030016113, 0.006433916, 0.07637326, -0.031722937, 0.0035048407, 0.022992833, 0.03786711, -0.027956268, -0.01319943, 0.045746878, 0.03175157, -0.058155477, -0.0037666697, 0.016344758, -0.059171867, 0.020829488, 0.059662025, -0.016376823, 0.02626018, -0.050518494, -0.04839609, -0.005485663, -0.01864324, 0.041778076, 0.032068152, 0.006077677, -0.024695791, -0.042977136, -0.035185046, -0.021159314, -0.021105487, -0.010545299, 0.066753305, 0.007778705, -0.0030380152, 0.020607313, -0.039892454, -0.0105853835, -0.0056505767, -0.022755768, -0.04898388, -0.039546594, 0.003876898, 0.0331854, -0.008718082, 0.041187137, 0.01923677, 0.02300371, -0.017759118, -0.015967403, 0.0067056217, -0.02960884, -0.013408095, -0.026241856, -0.011574578, 0.0023024897, 0.02604602, 0.010475154, -0.013913429, -0.023117231, -0.0032123767, -0.076153375, -0.06712436, 0.061320327, 0.00911605, -0.022094397, 0.034870036, 0.048962124, 0.033940107, -0.021131828, -0.0016399729, 0.023381047, 0.012806849, -0.002217313, 0.043255426, 0.0019111066, -0.08951824, -0.0828965, 0.020966342, -0.015058661, -0.020960044, -0.046107057, -0.019617831, -0.006920067, -0.034009967, 0.023652269, -0.06902087, -0.01289632, -0.015867196, 0.0013582456, -0.0029157617, -0.016600287, -0.014349761, 0.030245587, 0.03236656, -0.0011440872, 0.019131107, 0.031187257, -0.009807197, 0.058706906, -0.016798269, 0.065163724, 0.006076603, -0.02254161, -0.015215557, -0.027577197, 0.008210171, -0.018551048, -0.019291583, -0.030444859, -0.0633199, -0.021654055, 0.0105934, 0.017842721, -0.011101024, -0.017616536, 0.056290466, 0.008380238, -0.015838563, -0.0063641993, 0.03603817, -0.014359712, -0.028247159, 0.0027680267, 0.014180268, -0.023740096, 0.0035911624, -0.026494954, 0.0063400064, 0.019307474, 0.00987992, -0.019994183, 0.041274175, -0.012822873, -0.022030264, 0.015492131, 0.06099737, 0.035974327, 0.029789785, 0.04999741, 0.0033990496, 0.08546641, 0.006972175, -0.045646314, 0.07779335, 0.007376442, -0.027217595, -0.0062667117, 0.0039914213, 0.028310556, 0.035389975, -0.004298916, -0.0025435612, 0.044716746, 0.003443714, 0.023087528, -0.0008566339, -0.03601069, 0.013215409, 0.024961486, 0.02882779, 0.013277824, -0.054849762, 0.03156375, 0.0042760116, -0.016548607, -0.018000476, 0.005351671, -0.035654422, 0.035447232, -0.060587376, 0.043287497, 0.0027288026, 0.029073728, -0.005732461, 0.028843822, -0.007833104, -0.026331184, -0.014650815, 0.055095986, -0.01874359, 0.037556753, -0.03150076, -0.023754412, 0.00901985, -0.058276296, -0.010344884, 0.023062117, 0.052470826, -0.055026125, -0.008755302, -0.005216534, -0.006645784, 0.044399515, 0.042437736, 0.022692781, 0.036434423, -0.042904984, -0.040584747, -0.021206267, 0.0010633483, -0.023458654, -0.024948316, -0.030967083, -0.0077892984, 0.04917571, 0.033624023, 0.047590133, -9.877629e-05, 0.07468747, 0.05632711, -0.0045780665, 0.019595498, 0.00484147, -0.07133596, 0.021592213, -0.021978728, -0.0460372, -0.069511026, -0.0025246649, 0.007319467, -0.040293857, 0.03736206, 0.045137044, 0.0049405326, 0.015056371, -0.002887131, -0.0049909228, -0.0057708262, 0.017539235, -0.01586376, -0.043718103, 0.015623404, 0.044254072, -0.05077388, -0.030165423, -0.0320207, -0.013975557, 0.0065570283, -0.016405169, -0.03266203, -0.00073409395, 0.009950925, 0.043653972, 0.0073678526, -0.04178495, -0.058558024, 0.018811587, -0.013481247, 0.0024762787, -0.017183067, 0.013642903, -0.011279395, -0.0072288504, -0.038869187, -0.036228996, -0.030436054, 0.014232377, 0.013188067, -0.0060479725, 0.025891988, 0.03149389, 0.034728028, -0.016758187, -0.045177698, 0.019310908, -0.047796275, 0.0022801578, -0.00078398315, 0.016150068, -0.072887175, -0.034095287, 0.02518309, -0.0010189706, 0.01152791, -0.034269936, 0.014679588, 0.004893578, -0.0048317355, -0.0022927553, -0.00042144553, -0.023494441, -0.06462947, 0.010773774, -0.0036515736, -0.07209925, -0.022534166, 0.009495694, -0.052854765, -0.047838077, -0.01793391, 0.019511897, -0.04277214, -0.021935781, 0.05035816, -0.033774067, -0.0045918096, 0.016515683, -0.07455921, 0.022343485, -0.015878862, -0.068093225, 0.0066996096, -0.038076688, 0.03432949, 0.027411137, 0.048374474, -0.023505323, -0.024113871, 0.0127238175, 0.017925177, 0.003503266, 0.040993594, -0.02310621, -0.005994146, 0.01059569, -0.010977053, -0.0411734, -0.05185154, -0.035896167, 0.010403291, 0.002749703, 0.005539883, 0.022556497, 0.010916069, -0.024136633, 0.011822234, 0.022747036, -0.005485091, 0.016076773, 0.043321855, 0.005074525, 0.012209322, -0.024099125, 0.027752418, 0.04423689, 0.0012049277, -0.034298137, -0.013734772, 0.016944285, 0.01029335, 0.020617476, 0.061517302, 0.015097026, -0.034003094, -0.012944562, -0.014652103, 0.025112655, -0.06007889, -0.020018661, 0.06194333, 0.030120756, -0.0021530369, 0.0041640652, -0.007963946, 0.021237189, -0.06165473, -0.0064847353, -0.0578663, -0.039327282, -0.012114269, -0.007236151, 0.0068942993, 0.025906876, -0.025144007, -0.0104078725, 0.03374313, 0.023354724, 0.01697807, 0.010963882, 0.005787074, 0.07568497, -0.0127693415, 0.008629469, 0.043797124, -0.003727159, 0.0044767135, 0.02576272, -0.024677468, 0.008213034, 0.013210256, -0.0027256534, 0.0023997272, 0.0073323506, -0.059284102, 0.010458263, -0.021079147, 0.01697485, 0.010431922, -0.03868953, 0.053560227, 0.026887193, -0.009952069, -0.025772309, -0.025204275, -0.027900152, -0.009631977, 0.00739906, 0.008192849, 0.006753436, -0.0068058297, -0.028195623, 0.014982503, -0.03396645, -0.06682546, 0.07802927, -0.011502715, 0.028639972, 0.045101542, -0.017238038, 0.015827684, 0.03633135, -0.01097648, -0.009414096, -0.002229016, -0.054199267, -0.061180606, 0.028343357, -0.043318417, 0.057747196, 0.06342297, 0.027219884, 0.0019646462, -0.05043718, -0.0012941126, -0.026791567, -0.010061297, -0.05960935, -0.03926773, 0.0019755259, -0.004268281, 0.015107906, 0.006354, -0.047075924, 0.056116387, 0.007938465, -0.0011681371, 0.008964593, -0.005289256, -0.014155073, 0.011356697, 0.012315257, 0.041990805, -0.005778843, 0.027671106, -0.025490582, 0.017872497, -0.030339498, -0.0016766918, 0.031867526, 0.014183418, -0.014759183, 0.040388912, -0.0027668816, 0.0011314896, 0.00023162324, 0.03703796, -0.0502528, 0.011986146, 0.0054169493, -0.04138927, 0.0013928888, 0.02553124, -0.0015237316, 0.01633674, 0.0045860833, -0.030597176, 0.013786737, -0.02424457, 0.071531214, 0.006413588, 0.024627076, 0.0064636916, 0.006249533, 0.02151405, 0.019519342, -0.037359774, -0.0010466708, 0.007697107, -0.03070826, -0.015213268, 6.9859176e-05, -0.026497815, 0.022744888, 0.03382845, 0.044493426, -0.02169786, -0.06027587, -0.0493641, 0.039780796, -0.002198846, 0.0017854174, -0.01066555, 0.031192694, -0.012891308, -0.010781218, 0.00087209453, 0.008331565, 0.024762215, -0.06046369, -0.007299139, -0.0014193724, 0.012092939, -0.0068805562, 0.022713395, -0.00487869, -0.007836252, -0.026408488, 0.0065215263, 0.0100757545, 0.017988166, 0.017226586, 0.0014157221, 0.06053355, 0.021696284, 0.0036784864, 0.02941644, -0.03102515, 0.05026196, 0.051256165, 0.0152499145, -0.018684467, 0.01020173, 0.030732596, 0.0064888867, -0.01749457, 0.0041972767, 0.011103601, 0.032006953, 0.022368966, -0.059029862, 0.026128478, 0.0031783064], [-0.02240271, -0.05699616, -0.036847763, -0.032201495, -0.019468427, 0.00021493145, 0.01437406, -0.01828319, 0.019198466, 0.005990046, -0.0009241014, -0.025421873, 0.01635971, -0.025915852, 0.01970153, 0.040584143, -0.030104937, -0.02938123, 0.047512308, 0.026294317, -0.038955547, 0.00087607926, 0.005226105, 0.037462447, -0.02066249, 0.07838612, -0.034982946, -0.013139371, 0.003154664, -0.030088326, 0.004689036, -0.07676894, -0.053236548, -0.020716483, 0.01771679, 0.046917353, 0.03368791, -0.004187529, -0.02076113, -0.041457888, -0.09628098, -0.025401365, 0.004878009, 0.044271205, 0.041075785, 0.029237427, 0.006161368, -0.043421343, 0.003765713, 0.008157011, 0.039493393, -0.0014998476, -0.023613386, -0.0034189154, 0.026752215, 0.04622895, -0.026771424, 0.051172372, 0.059975866, -0.02245151, 0.03120036, 0.013742114, -0.045224898, 0.0323612, 0.038326323, 0.01715097, 0.038506992, 0.018281186, -0.034354508, -0.019007934, -0.0034991254, -0.016128425, -0.0326335, 0.013093166, 0.0036984822, -0.010349416, -0.025295977, -0.025347373, -0.0025340104, -0.021296384, -0.015151109, 0.029508945, 0.025648484, -0.02547301, -0.06293234, 0.00463712, -0.0072757406, -0.022770273, 0.05652593, 0.029365657, -0.045132488, -0.016811183, 0.029194854, 0.02379613, 0.012778038, 0.05346913, 0.023506438, 0.04049848, 0.021488992, 0.028963828, 0.008062525, -0.028436363, -0.022491226, 0.015782665, -0.018642576, -0.00547629, 0.015943864, -0.03936568, -0.017301463, -0.021652136, -0.0039358023, -0.029847438, -0.022436585, -0.026340783, 0.026192565, 0.017167, 0.016810339, -0.021478089, 0.00082026975, -0.030170351, 0.030442651, -0.054243714, 0.014138751, 0.028595356, -0.061381098, 0.02640957, 0.035113774, 0.0067552845, -0.017044088, -0.004797929, 0.0354938, 0.0027375205, 0.047924522, -0.031674873, -0.047330603, -0.011865358, 0.0009848429, 0.044842795, -0.026283417, 0.0501434, 0.0039372947, 0.00048800858, 0.004873986, -0.012146612, 0.0039886916, -0.024254546, 0.0344939, -0.023892693, 0.014740195, -0.020224063, 0.02583019, -0.016824875, -0.035206184, -0.007864336, -0.013544315, -0.051998872, 0.020494802, 0.0019709836, -0.0042290613, 0.0163649, -0.01315235, -0.012009554, -0.013618036, 0.023042312, 0.015559102, -0.03844625, -0.011914678, -0.021178534, 0.019723853, 0.08544511, 0.07974268, -0.0026549743, 0.031877346, 0.035429683, -0.033275045, -0.037076194, 0.004344315, 0.008276418, -0.0036784944, -0.020107511, -0.011375791, -0.016482491, 0.009156911, 0.02115673, -0.027631668, 0.02547249, -0.019808866, -0.027040867, 0.035001118, 0.019504769, 0.015824197, -0.051423125, -0.023937339, -0.008940421, -0.005804187, -0.0010453248, -0.022116134, -0.021542983, 0.023315908, -0.009897229, -0.02125511, -0.038358513, -0.007513515, -0.02576945, -0.06164145, -0.030136086, 0.057376567, 0.028102156, 0.03208864, -0.03947055, -0.0011141133, 0.008224502, -0.0030401896, 0.040515028, 0.03137454, 0.018540952, 0.02893787, -0.05463204, 0.044657197, 0.05305951, -0.016226156, -0.012993488, 0.01473111, -0.024493877, -0.00948995, -0.040458508, -0.00018326279, 0.0053452514, -0.009328232, 0.024211423, 0.08274964, -0.04428989, -0.029863529, -0.06903972, -0.028637799, -0.024496993, -0.029963728, -0.047316067, -0.06730573, 0.038642883, -0.030684318, 0.0058222767, 0.0085713, -0.03734304, 0.010121766, 0.0020263388, -0.017387642, -0.04132083, 0.00077094976, 0.027214915, 0.031337097, 0.052612517, -0.038919333, 0.0019686474, 0.023717217, 0.046622474, -0.010435077, 0.03432258, -0.01655102, 0.041495264, -0.018694362, -0.049145967, -0.020027041, -0.01601395, -0.010942814, 0.028782124, 0.022162534, -0.015996298, 0.02380252, -0.020771515, -0.040773183, -0.07266551, 0.068867356, 0.0090933135, 0.0058644093, 0.0331254, 0.030090401, 0.001773444, 0.010414311, -0.0009874386, -0.056114756, -0.0069255685, -0.04040192, 0.020254953, -0.011172282, -0.06621134, 0.044099364, -0.033953458, -0.039036535, -0.047613025, 0.007009672, -0.0012385814, -0.0012792054, 0.07997734, 0.05304809, -0.025651341, 0.020167993, 0.0068196603, -0.04995962, -0.056928795, -0.027123934, -0.018860493, -0.02572636, -0.023797166, 0.027768726, -0.0061577335, -0.05792558, 0.011235619, 0.021679264, -0.007616568, 0.025097398, -0.055255033, -0.044597756, -0.015742948, 0.021223543, -0.006830952, 0.009529665, 0.07189301, -0.03986615, -0.02729785, -0.038704272, -0.0014074376, -0.01060017, -0.08452309, 0.031167135, 0.04326404, 0.0256333, 0.024497252, -0.053184632, -0.027939755, 0.02904845, 0.002340624, 0.0071160994, 0.01560706, 0.0045208284, -0.0147742005, 0.03490819, -0.04292607, -0.01906634, -0.0024078551, -0.0014889453, -0.06362905, -0.026003588, 0.0054293554, 0.029072851, -0.029457029, -0.036377925, -0.00082649966, 0.018669963, 0.017312786, 0.02739701, -0.036532115, 8.410361e-05, 0.011097523, 0.015247673, -0.034522194, 0.013162733, 0.006314, -0.024686225, -0.020988442, -0.01211092, -0.019014424, -0.10592485, -0.014960059, -0.003370561, -0.045239434, 0.078313954, 0.02965431, -0.0033034028, -0.021796852, 0.035584133, 0.003510417, -0.042043496, 0.030538695, -0.021027979, 0.045585193, -0.0062363865, 0.0023330962, 0.08919084, 0.010898166, 0.021063281, -0.015705569, 0.059987675, 0.03663906, 0.062998794, 0.07142732, 0.025403444, 0.00022427629, -0.018869838, 0.047810175, 0.0338151, 0.019656362, 0.059927456, -0.01827748, 0.0024005868, -0.011927917, 0.011031784, 0.016855245, 0.026913155, 0.024557216, -0.01796858, -0.010482839, -0.04680314, -0.00251584, 0.00652374, -0.03819342, -0.0771012, 0.008518346, -0.0471489, -0.013730693, 0.021202415, 0.0054571303, -0.006638474, 0.026874738, 0.043995533, -0.017211648, -0.0019172507, 0.0048427065, -0.018723955, -0.008923872, 0.0016301563, 0.044981413, -0.04275578, 0.03893997, 0.06867008, 0.014224411, -0.012534552, 0.006387721, -0.016923515, 0.062178522, 0.032987304, 0.03599219, -0.0066592405, 0.08038228, 0.023563027, -0.009748231, 0.028175648, -0.06264369, -0.028685039, -0.012848124, -0.0076744542, 0.0022344564, -0.026410868, 0.013316404, -0.034472223, 0.00980456, -0.00054364774, 0.059057344, 0.0434826, -0.002289487, -0.022958467, 0.018658541, -0.06515226, -0.06694024, -0.03219611, 0.056312036, 0.055229593, -0.03163957, -0.03508055, -0.02408634, -0.060488146, -0.00868863, 0.029519847, 0.0022080117, -0.064404674, -0.010946557, 0.024882207, -0.0242184, 0.008195429, 0.016002528, -0.010187179, -0.04538324, -0.023192868, -0.06811665, 0.024290366, 0.05372014, 0.048069883, 0.010846769, -0.036389478, 0.017878506, 0.032988343, -0.04560103, -0.0052502453, 0.0037677167, 0.003634366, 0.042279195, -0.012304046, 0.0011307263, -0.0029370068, 0.008124434, 0.009962854, 0.018678268, 0.044643182, 0.047255848, -0.042384066, 0.016057558, -0.010978117, 0.014325129, -0.021457842, 0.022054873, 0.024072321, 0.056953717, -0.036700323, 0.004830506, 0.02624279, -0.017612698, 0.018412719, 0.045378566, -0.039757125, 0.03683634, -0.042783815, -0.029841205, -0.028792506, -0.011821229, 0.02901289, 0.047833145, -0.0013124316, -0.012877262, 0.013272796, -0.02011997, -0.010879477, -0.028070876, -0.031383105, 0.012571413, 0.040633462, -0.047181085, 0.036267344, -0.0862903, 0.02132909, -0.02340728, -0.034862503, -0.025117386, -0.02093453, -0.039072357, 0.035743512, -0.0125733595, 0.030648496, -0.013109001, -0.016016027, 0.02598386, 0.0034804358, 0.022665597, -0.0003414113, -0.001205485, -0.026493676, -0.02842079, -0.015113211, 0.024068167, 0.0198064, -0.032752644, 0.0033730997, 0.05150048, -0.029739192, -0.030601252, 0.066024445, -0.036347296, -0.010890898, 0.009050742, 0.05414585, 0.020948548, -0.023952655, 0.008023199, 0.01283229, 0.01901676, -0.014111105, 0.00935419, -0.034575928, -0.024391344, 0.0036174934, 0.009698911, -0.058447856, 0.0042093014, -0.03253823, -0.058663823, -0.016884968, -0.014043096, -0.0064302594, -0.058093786, 0.006430811, -0.028101768, -0.0034996443, -0.034067154, -0.011165922, -0.038199652, 0.016816568, 0.03401679, 0.0074805487, 0.0023722928, -0.00024660007, 0.002686124, 0.06542638, 0.0032977895, 0.045606997, -0.0074478416, -0.02640334, -0.02128016, -0.09662829, -0.007602032, -0.032360163, 0.030616827, -0.023251014, -0.08082253, 0.008133714, -0.013635167, 0.020778783, -0.00938697, 0.0012985441, 0.029982936, 0.003701467, -0.038612902, 0.025851734, 0.018444648, -0.011798905, -0.0098528415, 0.0058096386, 0.026273033, -0.038164347, -0.0015252864, -0.016098248, 0.011178511, -0.032893077, -0.010677654, 0.0016101687, 0.0089168, 0.041346267, -0.029269354, -0.0032000905, 0.033572912, 0.022863721, 0.0068528866, 0.08040928, 0.010533977, 0.06798894, -0.0237154, -0.045674745, 0.0984656, 0.029547362, -0.0433227, -0.01640851, -0.0080555165, 0.02062615, -0.025034841, -0.010043632, -0.0037736301, 0.025847841, -0.022962362, 0.032196887, 0.03640106, -0.017403737, 0.025923638, 0.035368163, 0.024944507, 0.0089450935, -0.034378, 0.018422324, 0.05524465, -0.006323864, 0.0088755265, -0.0125854295, -0.032160804, -0.005432989, -0.065800175, 0.022538727, 0.03752267, 0.028233243, 0.01888697, 0.0083026355, -0.02544186, -0.048539724, -0.015161492, 0.061093483, -0.020047288, 0.058618654, 0.005261148, 0.0006884036, 0.0059505897, -0.0067909765, -0.024983184, -0.017174268, 0.025380598, -0.047399133, -0.008592585, 0.00074654934, 0.0352581, 0.053759858, 0.0022946787, 0.0006707522, 0.020054556, -0.032235045, -0.052021716, -0.055431545, 0.036544576, 0.021809831, 0.024655856, -0.007205395, 0.008693237, 0.048125952, -0.0068196603, 0.041279815, 0.002822143, 0.03639298, 0.022723548, 0.0035032786, 0.0062459907, -0.0044057053, 0.025097141, -0.004112511, 0.018719023, -0.026975453, -0.038604595, -0.039659522, 0.014667254, 0.0049901474, 0.03779263, 0.0010471418, 0.028816646, -0.010090356, -0.045677606, -0.01399754, -0.033029877, 0.02106951, 0.034170985, -0.0541648, -0.03493311, -0.02441263, -0.0154459905, -0.0009324079, -0.027615057, 0.0046744994, -0.025395136, -0.009047238, -0.037832215, -0.004512522, 0.04283599, 0.03676937, -0.03244738, -0.036284998, -0.069151856, -0.035423193, 0.020366572, -0.033734635, 0.0067256927, 0.009182349, -0.020377992, 0.0023590543, -0.049252525, 0.0064116023, -0.026482772, 0.00574085, -0.010070109, 0.028476859, -0.026300289, 0.0053932737, 0.051719565, -0.031695638, -0.051713202, 0.0075952825, -0.04251178, -0.006819401, 0.04620922, 0.02102123, -0.016308831, -0.009886846, 0.0019299701, 0.015651578, -0.02442431, 0.0043765027, -0.0011164495, -0.0063233455, 0.013379223, 0.003536505, 0.01245616, -0.019803284, -0.040307432, 0.05354804, 0.0152251655, -0.053390473, -0.044886407, 0.0022806614, -0.085224986, -0.04963255, -0.033552147, 0.00084986177, -0.021951042, -0.07285241, 0.023728898, 0.004892935, -0.023637267, 0.06283474, -0.05631619, -0.028068801, -0.0019229614, -0.033741124, -0.005923399, -0.031591807, -0.024520874, 0.041369367, 0.040712375, 0.023595214, -0.0017245132, 0.013126198, 0.011192919, 0.0014157441, 0.03897008, 0.01407126, -0.0017517691, -0.018637903, -0.01773869, 0.0030635516, -0.063860595, -0.017911926, 0.021395544, 0.00025127252, -0.006190441, 0.0005355115, 0.028685039, -0.016514419, 0.026933922, 0.012048621, 0.02871048, -0.013979499, 0.02040369, 0.019695818, -0.023996525, 0.041873213, -0.002321675, 0.037580814, 0.00055523956, -0.026988432, 0.019304633, -0.025295977, -0.04135042, 0.008198544, -0.010310479, -0.021165036, 0.0138014285, -0.001145425, -0.032654785, 0.0063127023, -0.045248777, -0.029337622, 0.0122394115, -0.005097613, 0.020183615, -0.031692524, 0.00945283, -0.0060866093, -0.058047064, -0.028906072, -0.058249537, -0.048654456, 0.012967271, 0.0066187466, -0.008856058, 0.025737781, 0.020730501, -0.0014204165, 0.009173263, 0.017577654, -0.018857477, -0.0035063936, -0.018847514, 0.038116585, -0.007945195, 0.029644055, 0.056794852, -0.0112309465, 0.0017861633, 0.036749642, -0.033840798, 0.0043666386, 0.027464502, -0.011157745, 0.023405852, 0.049648125, 0.0014245698, -0.010082049, -0.047281805, 0.015668191, 0.0035437727, -0.027255798, 0.031242933, 0.012936381, -0.040344812, 0.0106362505, 0.011390328, -0.016452638, -0.056608997, 0.033504386, -0.009758095, 0.0069765435, -0.03350542, 0.02035463, 0.038363706, -0.013002314, -0.071057394, 0.07222735, 0.013587925, 0.0416161, 0.051851172, -0.026356615, 0.002578139, 0.043041058, 0.013980927, -0.0034700527, -0.0081025, -0.032011807, -0.029582666, -0.009363535, 0.0025148017, 0.00083247, 0.057090774, -0.0053131282, -0.0031056036, -0.026506135, -0.018365737, -0.0002985159, -0.02819549, 0.034758672, -0.018683786, -0.052845616, 0.040958457, -0.011106349, -0.032720458, -0.025218623, 0.06119212, -0.050204664, -0.035325073, 0.01757454, 0.015645348, 0.0006998251, -0.028434288, -0.02764361, 0.02021342, -0.01139896, 0.050088372, -0.025642257, -0.003862536, -0.028072953, -0.0171426, -0.027430188, -0.030148936, -0.020171108, 0.0052040406, -0.006860674, -0.02277858, -0.020313747, 0.0089596305, 0.021117015, 0.011129451, -0.0052434965, -0.06376922, -0.0073987814, -0.0058441623, -0.011172282, 0.020123605, -0.027304599, 0.037822742, 0.035628203, -0.036675923, 0.03062721, -0.002601501, 0.030347904, 0.03057218, 0.010089318, 0.03401524, 0.021897081, -0.027777033, -0.034170985, -0.023806512, -0.024510458, 0.02578139, 0.006645223, -0.010309441, -0.002186434, -0.01305371, 0.047094908, 0.02956709, -0.027351324, -0.021829557, 0.012362711, 0.021702884, 0.0050903447, 0.04589818, 0.014657908, -0.01677763, -0.03124475, -0.010208724, -0.009579505, -0.027421929, -0.07794847, -0.011776063, 0.031741325, 0.014931246, -0.034424074, 0.041304346, -0.00454471, -0.08060137, 0.00903997, 0.008903561, -0.0013193754, -0.0076475064, 0.008488494, 0.040343773, 0.032192472, 0.018261515, 0.006725433, -0.01050776, -0.035257064, 0.028646102, 0.016860178, 0.005608465, 0.0041138087, 0.030802688, -0.023079172, -0.016896129, -0.0111450255, -9.7082564e-05, 0.024692489, 0.024012618, 0.02349917, -0.03498087, 0.035840597, -0.023621691], [-0.010765708, -0.084107, -0.024011059, -0.0033674536, -0.013026348, 0.029702913, 0.040178955, -0.028773502, 0.056639247, 0.023665577, -0.00904683, 0.028389852, -0.090367876, -0.022448352, -0.02141592, 0.047704756, -0.011578196, -0.035023324, 0.02635512, 0.039382033, -0.024983233, -0.021953981, -0.004807635, 0.02691653, -0.018487476, 0.06428994, -0.018763537, -0.020006372, 0.0416106, -0.011687163, -0.02066162, -0.04327625, 0.011839818, 0.00036155185, 0.022995701, 0.009462364, -0.0016289292, -0.005987826, -0.022722527, -0.035566658, -0.074560024, -0.008539151, -0.030848907, 0.050670486, 0.013729931, 0.030596323, 0.02746187, 0.018120652, -0.0072340495, -0.022878198, 0.029175602, 0.009144248, -0.03290925, 0.019938203, -0.03947644, 0.03454628, -0.0015375996, 0.03819594, 0.030318132, -0.028348174, 0.014215014, -0.0007504397, -0.03213292, 0.010056162, 0.0025286032, 0.024027128, 0.019919999, 0.006604347, -0.0030521, -0.038971774, 0.0040338137, 0.017926065, 0.0004192997, -0.030597327, 0.06539267, -0.0033413416, -0.07171606, 0.025350811, -0.02399499, -0.027252976, -0.011324607, 0.005866179, 0.0076724314, -0.063428245, -0.050151255, 0.0021813628, -0.031209959, 0.013478351, 0.043063838, 0.012621173, -0.051734053, -0.030866986, 0.01595787, -0.0086903, 0.02072169, 0.004224131, -0.021577613, 0.05992521, 0.025766594, 0.038860798, 0.03125867, -0.03738898, -0.017511161, -0.027847527, -0.027209789, -0.0014804167, 0.02219627, -0.034353767, -0.014629793, 0.0039547244, 0.0062271655, 0.009423447, 0.010399637, -0.06466957, 0.044065136, -0.009330045, 0.02127676, -0.015989568, -0.04267015, -0.0050607217, -0.04386126, 0.004806348, 0.021365704, 0.0025107453, -0.017920418, -0.003212476, 0.0029943523, 0.0136174485, -0.054688733, 0.0066073597, 0.06424575, 0.0036915948, 0.043611184, -0.016998962, -0.03174224, 0.024578165, 0.010883714, 0.057041332, -0.014620754, 0.04907062, -0.011467219, -0.01309345, 0.025407553, 0.017048175, 0.031458523, 0.00091392273, 0.01338947, -0.024076654, -0.012395201, -0.0065059243, 0.0067961705, -0.026132163, 0.031829618, 0.03935944, 0.030987252, -0.06596614, 0.013973476, 0.016461592, -0.028536482, 0.011420017, -0.012416293, 0.004090055, 0.047399446, 0.017335908, -0.0022572824, -0.046198294, 0.017759224, 0.015393069, -0.0026029223, 0.06158433, 0.06832125, -0.0015895728, 0.0069940193, 0.014546435, -0.057057776, -0.008807722, -0.0026011646, -0.040964577, 0.021936154, 0.03809702, 0.0055380203, -0.0013470945, 0.016383823, 0.0030113647, -0.011289385, 0.017806867, -0.03359344, -0.012005467, -0.013408552, 0.021571588, 0.029272141, -0.04544807, 0.034864645, 0.0046017515, -0.03614715, 0.0047348225, -0.031607665, 9.66649e-05, 0.024422701, 0.035647, 0.0054279226, 0.008788974, 0.037250385, -0.027216818, -0.022392863, -0.059338693, 0.029630177, -0.032165058, 0.039801333, -0.03561587, 0.029379351, 0.042452212, 0.042992532, 0.062296387, 0.008861032, 0.030563181, 0.015655572, -0.050528876, 0.027629592, 0.065505154, -0.044290103, 0.0070797624, 0.036299806, -0.032276534, -0.035288464, 0.005312803, -0.0072923, 0.019553928, 0.027586404, -0.020652644, 0.07492961, -0.0016862376, -0.026279043, -0.04717599, -0.019533843, -0.011182247, -0.029284695, 0.028517904, -0.007884466, 0.031876694, -0.020997122, 0.033069562, 0.042271435, -0.019027418, -0.031081408, -0.010956025, -0.037103254, 0.0042869, -0.007758551, 0.009909533, 0.051658727, -0.015865097, -0.021603225, -0.008349839, 0.0056783725, -0.00086672005, -0.011386277, 0.029898329, -0.00947065, 0.049063884, -0.0060381037, -0.04077903, -0.005254553, -0.04787147, 0.067116074, 0.009823539, 0.03008915, -0.031230522, 0.0220868, -0.02465884, -0.035468236, -0.047672614, 0.02747794, 0.017161503, -0.0118347965, 0.015950462, 0.014917529, 0.020545812, 0.06382997, 0.005562547, -0.06439238, -0.022887236, -0.003708417, 0.05198657, 0.018200995, 0.0026463585, -0.0064013507, -0.045868877, 0.0041086352, -0.047706764, -0.009748593, -0.0066103726, 0.02415342, 0.037685752, 0.041093882, -0.03438358, 0.031679977, -0.044121876, -0.049538627, -0.029871212, 0.0050356137, -0.014041769, 0.0074278815, 0.01379722, -0.0035211132, -0.015282595, -0.08274516, 0.019782411, -0.009160819, -0.0061383466, -0.037132878, 0.0027518112, -0.05590797, -0.00719689, 0.01871332, -0.033384793, 0.019778894, 0.072338484, -0.023753956, -0.0105022965, -0.024958625, -0.05400982, -0.003973053, -0.072458, 0.01827042, 0.070141055, 0.032895193, -0.0074042804, -0.0566391, -0.04272438, 0.043731704, 0.03557168, 0.0008335779, 0.0075885714, 0.0130459955, 0.0070236465, -0.015071942, 0.014269246, 0.024696, 0.036352593, 0.0012322892, -0.062299397, -0.032252435, -0.018342072, 0.041961104, -0.07305155, -0.03260068, -0.039706424, -0.00049713376, 0.014462199, 0.021397842, -0.023956826, 0.0065119504, 0.015565811, 0.015892714, -0.0008411102, 0.014259705, -0.00011449141, -0.016776005, -0.01599415, -0.0143917715, -0.009528146, -0.040479872, 0.03840484, 0.028828612, -0.024206901, 0.060425356, 0.014680511, 0.052391373, -0.02820506, 0.057193484, 0.0037159496, -0.041042157, -0.0001978492, -0.004213099, 0.021646911, -0.05669936, 0.0122021865, 0.031161752, 0.00045445058, 0.011594445, -0.013716373, 0.04232366, 0.036155183, 0.028938208, 0.038838703, 0.03625461, 0.018778099, -0.014068887, 0.047642488, 0.0031560462, 0.0061492687, 0.048994288, 0.019008085, 0.0018330553, -0.022921383, 0.027838487, 0.048594575, 0.024904646, 0.0059533026, -0.0041813217, 0.015117385, 0.00016194509, -0.011602298, 0.0025328717, -0.060451467, -0.038734253, 0.04416657, -0.0012943996, 0.03129834, 0.02540956, -0.013413322, -0.009474667, 0.02104031, 0.03926051, -0.017546311, -0.031477105, 0.035821754, 0.00080696365, 0.021640886, 0.024252502, 0.033869375, -0.038320478, 0.041658808, 0.025910087, -0.028250253, -0.005551829, -0.022681603, -0.0491128, 0.056965005, 0.0018414035, 0.014530367, -0.018110735, 0.08032678, 0.058940984, -0.0286103, 0.0065563438, -0.008291589, -0.05220206, -0.01152346, -0.043354083, -0.03183464, -0.032404587, 0.015820906, -0.022538738, 0.010861619, -0.04180016, 0.022561338, 0.04684708, -0.04302065, 0.006576352, -0.029090863, -0.022033853, -0.037000813, -0.04436894, 0.039598964, 0.06752182, -0.06594304, -0.029102162, -0.04252854, -0.049510006, -0.00091743784, 0.024007292, -0.0045505315, 0.006755935, -0.0039772745, 0.04318536, -0.05819378, -0.0056977053, 0.009044319, 0.012129813, -0.02867307, -0.013845426, -0.044882644, -0.014743783, 0.0016932677, 0.037304115, 0.02119196, -0.00093702186, 0.030620428, 0.021611888, 0.010911835, 0.0281561, 0.018755501, 0.04095403, 0.0023676625, -0.018970173, 0.000914927, 0.014665948, -0.012588187, 0.022730812, 0.037422623, 0.004919113, 0.058370534, -0.031740233, -0.022700435, 0.0046306252, 0.019869657, -0.053608093, 0.00013457763, 0.07478499, 0.022933936, -0.06298434, 0.019881334, 0.014216834, -0.07466447, 0.02315137, 0.056996636, -0.032615993, -0.008413613, -0.034913857, -0.032856524, 0.0012272676, -0.04930563, 0.06734505, 0.0295187, -0.03854946, -0.041308302, -0.0054649566, -0.016394116, 0.011371747, -0.03239153, 0.0038133676, 0.04513573, 0.010645692, -0.029456431, 0.017006997, -0.05945921, 0.029540794, -0.010721017, -0.007787927, -0.0471092, -0.032181125, -0.011133788, 0.012089389, 0.0066068578, 0.036329936, 0.015601465, -0.0015436255, -0.01209667, -0.018879032, -0.01786267, -0.0014731354, 0.017533256, -0.015390056, 0.010923888, -0.022760691, 0.016996954, 0.01040265, -0.033361193, 0.004037831, -0.0055001075, -0.053618137, -0.055055305, 0.041018054, -0.013873045, -0.020691311, 0.04519197, 0.046423256, 0.03597039, -0.041856658, -0.006368334, 0.024601594, 0.023677628, 0.02106893, 0.023635447, -0.014109058, -0.06916688, -0.056711413, 0.048253108, -0.033692613, -0.019059807, -0.038876865, -0.024747094, 0.004231663, -0.021261258, 0.0040127235, -0.03763353, 0.015162203, -0.026759857, 0.016790569, -0.02890406, -0.0114652105, -0.018850159, 0.015314733, 0.03627721, 0.0056140968, 0.0157501, 0.005452403, -0.016617615, 0.028383827, -0.027584398, 0.05610883, 0.017489081, -0.020685535, -0.022927409, -0.03839279, 0.017045913, -0.025998339, -0.024154676, 0.014826387, -0.065714054, -0.008492827, -0.011286945, -0.009652053, -0.01361544, -0.026142709, 0.028410945, 0.015305695, -0.0017038131, -0.002848225, -0.0028670558, -0.053566918, -0.026590127, -0.0047463723, 0.016954772, -0.02780434, 0.017438097, -0.03333508, 0.0031804007, 0.022504592, -0.022965573, -0.03624055, -0.005810439, -0.0029687423, 0.008190624, 0.021538446, 0.062036272, 0.036793925, -0.017496096, 0.03430675, -0.0096142655, 0.083216175, -0.021026248, -0.06661391, 0.09119945, 0.031668678, -0.009807094, -0.03295344, 0.00043486652, 0.012006533, 0.012013062, 0.0137696015, -0.005207351, 0.0028434545, -0.003491486, 0.0017201331, -0.0035160915, -0.032347843, 0.024149654, 0.057452593, -0.004412941, -0.012766797, -0.06029881, 0.022327835, -0.005388629, 0.010702884, -0.0045011947, -0.02069382, -0.0061599393, 0.029014032, -0.070924416, 0.026525853, 0.0337707, 0.020310175, 0.0016824714, 0.013692521, -0.0014984314, -0.045915578, -0.025923768, 0.051360447, 0.006512578, 0.026077932, -0.016999338, 0.0028652984, -0.0109346835, -0.012668374, -0.016452616, -0.0020548196, 0.013856474, -0.0615301, -0.029636705, 0.021908032, -0.0077303047, 0.066035435, 0.022935443, 0.020145467, -0.0020427366, -0.0343655, -0.052995466, -0.039521635, 0.0077974685, -0.028095089, 0.008938616, -0.015361936, -0.00019150949, 0.03920276, 0.038152758, 0.04747527, 0.026541168, 0.009682559, 0.049444225, 0.014586609, 0.0216291, -0.005580452, -0.040729314, 0.009701641, 0.00855271, -0.023956826, -0.102311134, -0.015905645, 0.030402493, 0.00942646, 0.05364425, 0.016713, -0.004642269, 0.018636491, -0.03362633, 0.011455921, 0.0059700464, 0.007242084, 0.023694701, -0.06457253, -0.010054091, 0.014705117, -0.028507108, -0.050613243, -0.039654203, -0.026846228, 0.007105749, -0.029145598, -0.043004584, 0.0052841804, 0.026739772, 0.0374869, -0.018278705, -0.032895193, -0.03947393, 0.04178736, 0.03624557, 0.036809996, -0.023958836, 0.010449853, 0.005773782, 0.013481867, -0.05018842, -0.047808204, -0.016000677, 0.02534579, 0.006528019, 0.021290507, 0.058742132, 0.008907042, -0.006528019, -0.01984342, -0.06631162, 0.049648095, -0.04153051, 0.010420728, 0.0036127565, 0.024763288, -0.08191961, 0.0008283052, 0.018523004, -0.016246984, -0.005658035, -0.035632942, 0.005845088, 0.017610084, 0.013101232, 0.0090749515, 0.011033184, 0.005312803, -0.041176736, -0.007820065, -0.00653756, -0.069552526, -0.028679095, -0.012477555, -0.06489856, -0.06125592, -0.013811281, -0.0022928412, 0.00047403463, -0.052001197, 0.07010892, -0.0349942, -0.004808828, 0.006776822, -0.05318001, 0.005285687, -0.014223801, -0.058924913, 0.030032907, -0.045724127, 0.023282932, 0.0017211373, 0.049146947, -0.039702408, -0.036969177, 0.004931919, 0.007297823, 0.021516979, 0.024997104, -0.0058953036, 0.01029569, -0.0011368797, 0.018658083, -0.04332998, -0.08970503, -0.034086306, 0.023932723, -0.008087275, -0.0023498358, 0.007318537, -0.023427553, 0.01633844, 0.025316162, 0.005140062, 0.00490907, 0.0061428663, 0.046106897, 0.00936118, 0.008726455, -0.016092196, 0.016520409, 0.0055995337, -0.02430344, -0.009039801, -0.0068514077, 0.03989323, 0.009379759, 0.029252179, 0.034466185, 0.022940213, -0.014406484, 0.0031665915, 0.0037603902, 0.042366594, -0.09343303, 0.0020663692, 0.05653867, 0.011113702, 0.010751898, -0.0041317344, -0.048873775, 0.013664901, -0.040714756, 0.00055689027, -0.047367305, -0.04992428, -0.007491153, -0.011297868, 0.002880614, 0.016452115, 0.017333899, 0.0039168117, 0.021064412, 0.028324073, 0.022940464, -0.007258467, -0.013923763, 0.06996631, -0.018956365, -0.005885527, 0.031172296, -0.006403987, 0.00084964687, 0.036978718, -0.011397042, 0.012146133, 0.045234155, 0.00095560163, 0.007129884, 0.05273334, -0.061994087, 0.0009430477, -0.041730113, 0.011029088, 0.0048859715, -0.018019343, 0.029899646, 0.019236566, -0.014380724, -0.009682685, -0.028551549, -0.019916046, -0.008081719, 0.0207468, -0.0003550238, 0.00049462303, 0.0018924586, 0.030310094, 0.012922465, -0.040467694, -0.061544158, 0.0678206, 0.0044144476, 0.040813174, 0.028860874, -0.035680145, 0.04766057, 0.0128612025, -0.008572795, -0.03732621, -0.012693482, -0.04073986, -0.052359235, 0.046164144, 0.006106209, 0.028169407, 0.06231748, 0.026321977, 0.009567063, -0.07813537, 0.00020990093, -0.020859532, -0.031001313, -0.034444842, -0.010024276, -0.008226308, -0.009131192, -0.0019051773, -0.022488525, -0.044442758, 0.06745754, 0.00075581437, -0.011631926, 0.022140281, -0.007032183, -0.0014173648, 0.008766628, -0.026915526, 0.05588085, 0.034056176, 0.025840914, 0.003523624, 0.014535891, -0.062263243, -0.0024947077, -0.013610419, 0.04453917, -0.020275025, 0.012607582, -0.001897645, 0.0006718838, -0.00823811, 0.049904197, -0.033899505, 0.046585955, -0.014294197, -0.026877362, 0.0021261256, 0.04238392, -0.061841432, 0.05126805, -0.003591007, -0.010927904, 0.035626914, -0.05380695, 0.048825566, 0.026099335, 0.014672979, 0.03547401, -0.014055139, 0.019719139, 0.014052316, -0.018965906, -0.008452781, 0.008803787, -0.015616027, 0.0016179445, 0.008252044, -0.017681392, 0.017674863, 0.019797977, 0.039449323, -0.0061890646, -0.0345631, -0.05138204, 0.05418256, -0.004513372, -0.0497184, -0.03829989, -0.004933174, -0.04136153, -0.008425916, 0.006291002, -6.779097e-05, -0.0020939878, -0.07756894, -0.020708887, 0.025978504, 0.022699805, 0.00021693109, 0.046953846, 0.0045851804, -0.03563997, -0.017116467, -0.00035326628, 0.032383714, 0.04513297, -0.0005508644, 0.0022089814, 0.0149642285, 0.00010896771, -0.016756924, 0.008571791, -0.025151674, 0.032716423, 0.050982576, 0.0070552826, 0.021560542, 0.012412276, -0.00052349694, 0.00038414882, -0.010328331, 0.0017279165, -0.020089226, 0.047596287, 0.029442372, -0.0714105, -0.0044154515, 0.0034132125], [-0.018448288, -0.090516314, -0.0545385, -0.027705437, 0.0017986568, 0.014984217, 0.008845045, -0.00652496, 0.031461414, 0.048495885, -0.00010458668, 0.025776938, -0.099457696, -0.03274879, -0.026342241, 0.03324981, -0.007837701, -0.007830844, 0.03190362, 0.058217093, -0.022788817, 0.01510196, -0.0269042, 0.0042624087, -0.015001611, 0.05424949, 0.021261645, 0.014096233, 0.013371262, -0.00035412292, 0.0115201445, -0.032420535, -0.01545965, 0.011036683, 0.029184368, -0.0048646186, 0.05134158, 0.010523784, -0.05157439, -0.046172008, -0.043207455, 0.028733017, -0.018819358, 0.006997273, 0.0092910435, 0.04841583, 0.027994664, 0.035367694, -0.023787783, -0.058522157, 0.055292234, 0.007181916, -0.038930327, 0.022110382, 0.025446897, 0.033055637, 0.035491236, 0.028396286, 0.03363811, -0.0005931782, 0.013350523, -0.008960558, -0.030802451, -0.008444092, 0.019997241, 0.03774665, -0.019964684, 0.0092402, -0.03838889, -0.052150287, -0.0250455, 0.049880937, 0.0066317767, -0.02768403, 0.03763515, -0.0016513099, -0.05336641, 0.008775755, -0.013251511, -0.023662457, -0.017955795, 0.027104676, -0.0011178398, -0.027702758, -0.05771044, 0.022805024, -0.026868297, 0.030816944, 0.042835493, 0.01180826, -0.039780624, 0.0033097558, 0.01114283, 0.004593786, -0.0066418117, -0.00067089347, 0.025311315, 0.038285863, 0.032386634, 0.019662296, 0.010187055, -0.059052896, -0.0427231, -0.021841893, -0.0031929042, -0.010596036, 0.02468335, -0.00627364, -0.022914406, -0.020933727, 0.0013990978, 0.007983236, 0.005282547, -0.044359025, 0.017893465, -0.03218594, 0.0038043684, -0.03873052, -0.026110545, -0.007238112, -0.01238003, 0.012452282, 0.0034968522, 0.024508515, -0.0039070593, -0.0058008255, -0.00823135, -7.9387755e-05, -0.040230416, -0.012344796, 0.026640836, 0.004179537, 0.050634224, 0.009934173, -0.027021272, 0.0022099232, -0.001170635, 0.075669914, -0.04771561, 0.046927087, -0.051569927, 0.007603385, 0.04571129, 0.00016858747, 0.023605814, -0.026358966, -0.0020585626, -0.040235948, -0.024250729, -0.051858045, 0.013789386, -0.017983558, -0.004956829, -0.0057774666, -0.013265784, -0.028249219, -0.01109377, 0.03699291, -0.016670983, 0.01260749, -0.012298859, 0.0011248086, 0.030770337, 0.02912371, -0.020784428, -0.054565255, 0.016288316, -0.002886503, -0.019235922, 0.030495603, 0.06446643, -0.0018689573, -0.0025435302, 0.04541872, -0.043859728, -0.0226768, 0.012392797, -0.031887118, 0.03603223, 0.0061324816, 0.022798559, 0.01243132, -0.03477942, 0.012130773, -0.029236102, 0.015888255, -0.0054197754, -0.020356493, -0.002735714, 0.023977334, 0.015837857, 0.0024922404, 0.016306184, -0.020246554, -0.05426086, 0.030781936, -0.013558359, 0.011991565, 0.013562596, 0.062246244, 0.04207551, 0.004979352, 0.033599753, -0.03544619, -0.044975393, -0.0489314, 0.03407965, 0.0028856113, 0.06364401, -0.038959388, -0.0023306774, 0.06725302, 0.049360454, 0.038101442, 0.014236276, 0.04069559, 0.016188413, -0.037482228, 0.05766428, 0.07342565, -0.014120986, 0.022716718, 0.04426269, -0.03302737, -0.02971523, 0.015643848, -0.030616244, 0.018434908, 0.034369547, 0.014958794, 0.06341387, 0.0052012363, -0.039049856, -0.018159391, -0.0038551006, -0.031011399, -0.027180048, 0.04985908, -0.04531168, 0.0531006, -0.037764713, 0.051036514, 0.035031855, -0.022458708, 0.0010240129, 0.00959633, -0.037413042, 0.009772639, -0.029312814, -0.03272738, 0.046304777, -0.023947451, -0.023706166, -0.0068978146, -0.027413752, -0.019368159, -0.003328488, -0.011107373, 0.017595984, 0.028514253, 0.017836824, -0.044028986, -0.007650884, -0.040517863, 0.050317567, 0.019040573, 0.049143698, -0.01657264, 0.010188393, -0.027991768, -0.029688973, -0.06871233, 0.031038385, -0.012897388, -0.0076155383, 0.050121326, 0.027952407, 0.01248038, 0.049774338, 0.028937284, -0.02949835, -0.01614961, 0.01556, 0.0053047077, 0.014146631, 0.006891571, 0.014633215, -0.04167411, -0.03048936, -0.032341063, -0.023064874, 0.00078495755, 0.028671468, 0.017211532, 0.050586056, -0.018587217, 0.051282708, 0.03328443, -0.07072111, -0.025582483, 0.030433943, -0.002352197, -0.010722588, -0.009114428, -0.017281778, -0.037195396, -0.05253507, 0.008682032, 0.012158369, -0.0037881453, -0.0664645, -0.009187572, -0.05399795, -0.010682058, 0.02944996, -0.009263392, 0.033382885, 0.103207655, -0.030759634, -0.05574805, -0.028208522, -0.014567655, 0.021407267, -0.068730175, 0.027748251, 0.054187384, 0.007143696, 0.01743442, -0.053031024, -0.031665124, 0.029054137, 0.030528607, 0.019483004, -0.019744806, 0.027388776, 0.035854276, -0.039401304, 0.034935962, 0.023572812, 0.026604155, 0.0344573, -0.0447408, -0.008443646, -0.018239783, 0.011209284, -0.058336623, -0.005892534, -0.045944996, 0.030051278, 0.005606203, 0.008879387, -0.0053056, 0.0062809987, 0.03259871, -0.035341825, -0.024462078, 0.023426162, -0.004292737, -0.013873234, -0.0047088536, -0.031244881, -0.02518465, -0.023529997, 0.03617562, 0.022494834, -0.0013304139, 0.05345294, -0.016856965, 0.04472296, -0.012882224, 0.052371386, -0.007217819, -0.019757738, 0.004120135, -0.009663006, 0.045035157, -0.038503952, -0.00036036692, 0.03363365, -0.018457208, 0.026151799, -0.027461028, 0.026096718, 0.009853448, 0.055140592, 0.051625237, 0.038312845, 0.04054217, -0.03401431, 0.038290318, 0.010136211, 0.024696728, 0.019367324, 0.038278725, -0.0071217064, -0.014321908, 0.03086935, 0.03762534, 0.043174006, 0.0032940344, 0.0066796658, 0.01282207, -0.025708698, -0.030159319, -0.022200922, -0.05060122, -0.015075646, 0.00020159139, 0.0054577966, 0.012411473, 0.0025109723, -0.01302383, -0.0008914398, 0.03377637, 0.038710006, -0.025839377, -0.046453435, 0.03110573, 0.00326471, 0.016461141, 0.005261, 0.04463554, -0.04093465, 0.0178201, -0.016454896, -0.022008471, -0.0040418627, -0.027282627, -0.026197515, 0.025851864, 0.00045937859, 0.008676458, 0.010324422, 0.08937813, 0.027709896, -0.041691955, -0.03465588, -0.010131305, -0.07079782, -0.025062894, -0.024571627, -0.01989399, 0.008804236, 0.011536089, -0.0018709643, 0.0028964267, -0.039615117, 0.00552715, 0.044607002, -0.045524865, -0.020019205, -0.012824719, 0.0013924078, -0.026565462, -0.036459498, 0.023698585, 0.08162846, -0.056511596, -0.014347331, -0.05112549, -0.07439793, 0.012896162, 0.043928217, -0.027006108, 0.00032702152, -0.00063019607, 0.021907452, -0.045755893, 0.0119532095, 0.05551077, 0.009163516, -0.031435322, -0.018541055, -0.046929706, -0.034502596, -0.03365149, 0.030170023, 0.009027013, 0.021370472, 0.012368434, 0.02019125, 0.003014951, 0.025673913, 0.024083927, 0.04557883, 0.0069901366, -0.008502518, 0.019434836, -0.017789993, -0.0052699232, 0.040917255, 0.024993764, 0.0028677713, 0.071880706, -0.015914124, -0.031895258, 0.021782573, 0.03064189, -0.040839203, -0.01587153, 0.04201307, 0.04760768, -0.061526403, 0.038266685, 0.015062265, -0.05878797, -0.013785707, 0.025757091, -0.037344802, 0.004939407, -0.022481008, -0.034615293, 0.013891074, -0.022265702, 0.04234668, 0.06542532, -0.008211281, -0.009672373, -0.014006476, -0.0222812, -0.026370114, 0.016895989, -0.02596069, 0.022396268, 0.010905559, -0.028788766, 0.03746032, -0.024058059, 0.012946448, -0.026831724, -0.044734556, -0.025035687, -0.043060724, 0.010324868, 0.010609415, -0.0023573257, 0.04177368, 0.028053565, -0.020398194, -0.030934019, -0.019186862, 0.028468428, 0.0057368805, 0.029091598, -0.026550746, -0.021179136, -0.013152277, 0.008375186, -0.010532703, -0.03257931, -0.00854277, -0.01867218, -0.07118495, -0.06324439, 0.060598504, 0.014593968, -0.0059723677, 0.019919442, 0.04196641, -0.0027384316, -0.047306184, 0.03102099, 0.015983142, -0.00040942675, 0.013557913, 0.015180009, -0.014028441, -0.055439416, -0.08178545, 0.015370897, -0.01317597, -0.016598284, -0.06543068, -0.014948982, 0.024614887, -0.023667363, 0.010129522, -0.014866027, -0.005698079, -0.0060620136, -0.0058122543, 0.011891216, -0.022074813, -0.013799142, 0.014585486, 0.05036306, -0.00534797, 0.011263696, 0.0077023967, -0.017367186, 0.027911486, -0.004712087, 0.04234846, 0.030610783, -0.048483618, -0.033459935, -0.012501788, 0.007039197, 0.009772861, -0.04673709, -0.007316273, -0.08467551, 0.0044898684, 0.036271285, 0.01645066, -0.03182111, -0.010224519, 0.030332368, -0.0030751608, 0.009886898, -0.0007243018, 0.019234583, -0.036045942, -0.008808919, -0.009844974, 0.0021140336, -0.057661824, -0.03440255, -0.042237855, -0.020094914, 0.022280086, 0.021990074, 0.010905559, 0.016002432, -0.014028441, -0.007437139, -0.011591504, 0.10598983, 0.040840544, 0.0032412952, 0.027732195, -0.008089948, 0.055171814, 0.00053241086, -0.04798945, 0.097402535, -0.010787816, -0.03088496, -0.04297286, -0.0012126704, 0.027505629, 0.023922864, 0.044598974, 0.018634714, 0.023421172, 0.038598508, -0.006650732, -0.01654655, -0.041972037, -0.0046407273, 0.066150516, 0.005512543, 0.008267477, -0.04492098, 0.019482851, 0.0019169021, 0.013024721, -0.0014557395, -0.00653834, -0.038525607, 0.009594992, -0.07136691, 0.04692976, 0.0168476, 0.044657286, 0.008047153, 0.0274055, -0.008178947, 0.00038266683, -0.034937777, 0.035663836, 0.002976595, 0.016104175, -0.048513502, -0.00011216866, 0.011961683, -0.034456655, -0.01910569, 0.004789356, 0.045812532, -0.006438436, -0.05191357, 0.007733616, -0.014999492, 0.055699434, 0.023343569, 0.01325285, 0.034186687, -0.047964253, -0.045429423, -0.0002361563, 0.042242315, 0.00841421, 0.00060968014, -0.016106125, -0.0012256043, 0.057705086, 0.024859965, 0.04465985, 0.035689257, 0.035475623, 0.054440375, 0.014471764, 0.018352397, 0.0111392625, -0.016346296, 0.0060026953, -0.012831381, -0.052206814, -0.07668679, 0.003079509, 0.03560318, 0.0070713083, 0.045390174, 0.02333264, -0.010856722, -0.0024790836, -0.04827545, 0.004588434, 0.012427306, -0.018517418, 0.011179402, -0.03473571, -0.03248297, 0.048003502, -0.031856343, -0.03255701, -0.065758035, -0.026503678, 0.027162237, -0.027423564, -0.035074223, -0.013285408, 0.02267903, 0.009398083, -0.019236812, -0.034740616, -0.042655755, 0.03820781, 0.00058587495, 0.014377212, -0.056219023, 0.02472661, -0.010689249, 0.010242693, -0.039696556, -0.015697924, -0.016336929, -0.011534863, -0.014619836, -0.02173329, 0.03372664, 0.025148524, -0.029361876, -0.009726338, -0.06503909, 0.034873527, -0.042301632, 0.00196953, -0.009406111, 0.01238371, -0.06894961, -0.01179488, 0.0023084888, -0.024056943, 0.0123340925, -0.006301961, 0.019474976, -0.009966286, -0.009173523, 0.0077764327, -0.014813398, -0.0016053721, -0.028745506, 0.03131981, -0.010113465, -0.07911302, -0.024386315, 0.018253833, -0.03915868, -0.046293765, -0.0003822208, 0.02933333, -0.032089632, -0.032907564, 0.044519585, -0.03298249, -0.0012470122, 0.01045064, -0.07061764, 0.01034806, -0.011587937, -0.04206124, 0.028380008, -0.04395406, 0.04412889, -0.0057529365, 0.060720928, -0.038280956, -0.029517973, -0.0025167703, -0.004501018, 0.017484931, 0.0027268357, -0.004367665, 0.000667214, 0.008552024, 0.017822105, -0.05310595, -0.067300305, -0.012408575, -0.022833792, -0.0013451319, 0.0019276061, 0.0007069078, 0.04439827, 0.0036206169, -0.008559245, -0.009706492, 0.018375589, -0.011644133, 0.00617329, 0.019099222, 0.0059107086, -0.02017497, 0.008275282, 0.004786346, -0.034249127, -0.022755744, 0.010821711, 0.05401579, 0.03631678, 0.010482195, 0.043441717, 0.026966194, -0.025098016, 0.0015409254, -0.016215172, 0.01774361, -0.072522946, -0.0049571632, 0.05807148, 0.025045944, 0.009106846, -0.007138654, -0.036366727, 0.004237433, -0.048757464, -0.010959789, -0.036611136, -0.01959495, -0.014433853, 0.012976331, -0.003179524, 0.034851447, -0.008285763, -0.017484708, 0.046892297, 0.033171594, 0.0258425, 0.04274986, -0.014982877, 0.057392444, -0.024197657, -0.021383626, 0.027172022, -0.0044002226, -0.013683239, 0.0030997184, -0.041545276, 0.0021517205, 0.0111392625, -0.033360474, 0.015786123, 0.018368455, -0.06387414, 0.009446251, -0.048135743, 0.0036069024, 0.0017608027, -0.007647985, 0.0321458, 0.03228896, 0.00079182873, -0.043502707, -0.023134843, -0.022970716, -0.016108898, 0.037855472, 0.009718199, -0.006853494, -0.0045215343, -0.018714102, -0.003977416, -0.022002896, -0.041797653, 0.031096809, -0.039104044, 0.065170884, 0.02120991, -0.054622345, 0.06165842, 0.020670252, -0.027581895, -0.036337294, -0.024000078, -0.030600635, -0.03483695, 0.015385169, -0.015766053, 0.06173803, 0.039747845, 0.0057025384, 0.02152211, -0.07016986, 0.0010496578, -0.041744582, -0.019925436, -0.04731867, -0.05100976, -0.004196067, -0.002573858, -0.003646039, 0.0047349446, -0.020292938, 0.041913614, -0.015142546, 0.037989274, -0.022182189, -0.01934586, -0.01575624, 0.011461106, -0.014193573, 0.051584203, 0.03674672, 0.036243632, -0.023064373, 0.0020067708, -0.042747185, 0.010637291, 0.002682236, 0.029584873, -0.013912927, 0.016575092, -0.020793853, -0.0022823424, 0.010871217, 0.054784246, -0.041107696, 0.03467015, -0.0037392525, -0.041359685, -0.025931532, 0.048775133, -0.026883908, 0.038182165, 0.008908489, -0.010747675, 0.014665328, -0.031705823, 0.07192887, 0.004244123, 0.011144523, 0.036440097, -0.008839693, 0.009558643, 0.011304282, -0.016557254, -0.011422917, 0.017292704, 0.016768435, 0.02080004, 0.019891651, -0.023682972, 0.03294012, 0.010520215, 0.06256603, -0.0019240382, -0.045562997, -0.04670676, 0.06262713, -0.009250904, -0.025645368, -0.032244306, 0.02009313, -0.021608634, -0.028369972, 0.008403506, -0.020583728, -0.016542088, -0.07902382, -0.0027205916, 0.008552024, 0.062204324, 0.026324399, 0.04270415, 0.0048109875, -0.037634704, -0.003566205, 0.018987723, 0.02374586, 0.057997663, 0.017092897, 0.01786269, 0.016852504, 0.029130848, -0.007304343, -0.004309232, -0.039888445, 0.04461146, 0.033635434, 0.009995721, -0.01976889, -0.008426475, 0.022446219, -0.005088454, -0.0051530683, -0.015414605, -0.0027021386, 0.044527613, 0.02350502, -0.044326913, 0.006268873, 0.035789605], [-0.014524969, -0.07988843, -0.03293501, -0.038068853, -0.03617257, 0.011759829, 0.008366173, 0.0076203784, 0.020914193, 0.03208928, -0.010177459, 0.039489966, -0.087682255, 0.009283206, 0.009156843, 0.046452373, -0.015438906, -0.0027977633, 0.039861627, 0.043640982, -0.027979838, -0.016483542, -0.029950729, 0.010111867, -0.02890045, 0.038241744, 0.01834617, 0.0017663421, -0.0069162915, -0.0057015186, -0.019466378, -0.027336454, -0.0039654598, 0.028573666, 0.028788717, 0.06092448, 0.07073517, -0.0015835409, -0.08516323, -0.07814411, -0.062130306, -0.012439276, -0.022453688, -0.009337717, -0.011385969, 0.031595662, 0.010417453, 0.040153995, 0.0065511027, -0.06575109, 0.03198136, 0.0143548325, -0.028221829, 0.011268483, -0.016595246, 0.011868071, 0.025654906, 0.021772863, 0.0025834402, -0.016649205, -0.005347204, -0.026881654, -0.04024939, -0.01155115, 0.012201414, 0.04545137, 0.011618048, 0.0067790532, 0.0043371185, -0.024559202, -0.04201229, 0.026340686, 0.0033520854, -0.036880646, -0.018915772, 0.01730883, -0.055682722, 0.04474439, -0.021252954, -0.031688437, -0.0034941414, 0.0046773925, 0.0121045085, -0.045951318, -0.034225628, 0.0038553388, -0.0048183473, -0.00441145, 0.044797253, 0.007193108, -0.050121054, -0.008325359, 0.04359143, -0.021469204, -0.006942583, 0.036050335, -0.008179517, 0.020680739, 0.028609455, 0.038769227, 0.0076640137, -0.075447254, -0.013966655, -0.009120227, 0.010617323, -0.013995563, 0.040242642, -0.021022113, -0.018978266, -0.028382605, -0.005195512, -0.0108390795, 0.015438423, -0.047539264, -0.006170634, -0.023242153, 0.058212202, -0.018428762, -0.07230109, 0.0026159603, -0.023374712, 0.047321226, -0.0028312127, 0.017156312, 0.0012193156, -0.020913092, 0.021368993, 0.014366945, -0.056417227, 0.005503851, 0.055831384, 0.019451786, 0.019768659, -0.01656799, -0.03135147, -0.012248767, -0.028235592, 0.05443945, -0.08170543, 0.05560233, -0.05549259, -0.007448589, 0.027333152, 0.0204649, 0.009393327, -0.025947278, 0.0010703768, -0.051492613, -0.02665811, -0.030587228, -0.0076660784, 0.024320582, 0.016000591, -0.010307401, 0.00774922, -0.032259144, -0.0011385831, 0.039942015, -0.039291196, 0.038732883, -0.04087694, -0.0008770455, 0.027357377, -0.003178094, -0.032859024, -0.012318144, 0.035212316, -0.01443467, 0.0378365, 0.021279795, 0.019737, -0.0082287965, 0.00035183682, 0.070904754, -0.039404623, 0.010342021, -0.009830508, -0.050065447, 0.04125466, 0.019718278, 0.0089569725, -0.00067394093, -0.0044878465, 0.018153459, -0.01967423, 0.01488534, -0.050910626, -0.021959517, -0.014890571, 0.033221323, 0.045107793, 0.022476813, 0.009267789, -0.0015973062, -0.046494216, 0.009143903, -0.03562086, -0.010463979, 0.013053752, 0.07135846, 0.0057615344, -0.007290015, 0.02764149, -0.027225232, -0.031003486, -0.054637667, 0.020567311, -0.0068247532, 0.035485413, -0.073345035, 0.02112893, 0.05289115, 0.024788804, 0.018964501, 0.018449133, 0.076503314, 0.009663882, -0.04218463, 0.049639277, 0.04703051, -0.0011606761, 0.018678736, 0.05926716, 0.00091194006, -0.022908485, 0.017912844, -0.0197253, 0.025587732, 0.024517355, 0.0045579113, 0.013641799, 7.928717e-05, -0.04337559, -0.024249762, 0.046766214, -0.027730688, -0.044125512, 0.009082786, -0.030229336, 0.05091558, 0.0016094195, 0.023717877, 0.017751517, -0.026847517, -0.04240542, -0.060467653, -0.07195751, -0.029463993, -0.022422027, 0.022789555, 0.057196885, -0.033680256, -0.029579623, 0.024468902, -0.025980864, -0.02145599, -0.015910292, -0.017704716, -0.008853734, 0.037240192, 0.019945128, -0.03133633, -0.0009778751, -0.008017915, 0.028009294, 0.01566307, 0.020599246, -0.051549878, 0.0052015684, -0.02740418, -0.021130031, -0.1125085, 0.057033904, 0.008247173, 0.013469184, 0.04190712, 0.02622203, 0.026695551, 0.080251835, 0.007010307, -0.05370054, -0.029284498, -0.0028692046, 0.0067471177, 0.010880582, 0.010191155, 0.000371108, -0.047907073, -0.022234544, -0.05706694, -0.02642245, -0.011390924, 0.020401029, 0.029818585, 0.029992025, -0.0009839318, 0.027742181, 0.0055099768, -0.028850619, -0.036800258, 0.0032628875, -0.01674391, -8.148959e-05, 0.0008550901, 0.0023670525, 0.0017112815, -0.055461377, 0.03163868, 0.03354288, -3.3036322e-05, -0.042077262, -0.013739807, -0.057582308, -0.0026674075, 0.02977894, -0.0066733365, 0.071036905, 0.061099574, -0.02668144, -0.05051942, -0.023679232, -0.030941818, 0.018575221, -0.074873514, 0.030494727, 0.06743615, 0.030825641, 0.004370843, -0.035058144, -0.012462402, 0.026681233, 0.02874931, 0.019754482, -0.0005484029, 0.025194876, 0.03353627, -0.019513454, -0.0044466886, 0.019411592, 0.050317623, 0.0156438, -0.054395404, -0.0422028, -0.016841916, 0.029745903, -0.042250153, -0.021876652, -0.07658701, 0.017607259, 0.0015785855, 0.03000166, -0.026682474, 0.0025308575, 0.013450188, -0.021687243, -0.01563444, 0.01431395, 0.0008523371, -0.03316296, -0.0089770695, 0.009773933, -0.027835786, -0.010347252, 0.058001872, 0.023077799, 0.0046900567, 0.062266856, -0.01578723, 0.030164365, -0.0055699237, 0.047100984, 0.010318344, -0.016351465, -0.027095566, -0.008394805, 0.021316137, -0.032230236, 0.008990698, 0.054725766, -0.018101702, 0.009046446, -0.023753116, 0.019047642, 0.040595032, 0.03193291, 0.031555813, 0.02523242, 0.0058187973, 0.004549652, 0.033430554, -0.009450453, -0.023997841, 0.023155708, 0.01397161, 0.020619068, -0.004170285, 0.04844446, 0.013596373, 0.0010257778, 0.032589506, -0.024914341, 0.030700654, -0.004326106, -0.036548633, -0.02922283, -0.055366673, -0.03905884, 0.012189852, -0.008855936, 0.026336554, -0.019711671, -0.023247384, 0.0137161305, 0.04214994, 0.027816582, -0.018881358, -0.027798964, -0.0050121606, 0.011120026, 0.035929203, 0.013439176, 0.026800165, -0.04366961, 0.027564405, -0.009751083, -0.03452516, -0.01763589, -0.004757919, -0.024429807, 0.009454995, 0.0063297595, 0.03185582, 0.008700666, 0.0830401, 0.03981758, -0.009812613, -0.012288685, 0.007063166, -0.055058334, -0.0036824485, -0.025210017, -0.021361284, -0.02427454, -0.002311166, -0.013935821, 0.011656315, -0.037143838, 0.0154411765, 0.01688309, -0.06281306, 0.009028001, -0.009973665, -0.018498138, -0.03170936, -0.015531476, 0.025843214, 0.06808455, -0.03148141, -0.017796803, -0.05839225, -0.03626287, 0.008953945, 0.043658603, 0.0030756816, -0.0007072526, -0.007824928, 0.0025300316, -0.061244935, 0.00038432254, 0.043193478, -0.0028559898, -0.024989225, 0.012417803, -0.02942325, -0.04521571, -0.0142689375, 0.03301843, 0.012835712, 0.0089460295, 0.016966354, 0.022589687, -0.0062372573, 0.037049685, 0.02750604, 0.0034710162, 0.02542145, -0.045563698, 0.0072459662, -0.009811788, -0.030153902, 0.03915465, 0.012800473, 0.0015783103, 0.038236238, -0.012129295, 0.004440082, 0.021288605, 0.043389905, -0.00084352744, -0.030368088, 0.036367483, -0.0029060952, -0.060095824, 0.05879584, -0.0045287292, -0.07088273, 0.017434368, 0.010466183, -0.024307575, -0.022421202, 0.00086555164, -0.023526886, -0.036239296, -0.01974691, 0.01574291, 0.060718555, -0.012122678, -0.009459401, -0.033915088, -0.021340638, -0.050448664, -0.0018547141, -0.02554809, 0.040253658, 0.009004049, -0.03657121, 0.029111605, -0.038879346, -0.0067179357, -0.026632851, 0.0029584025, -0.023546088, -0.048215408, -0.004432373, -0.01751861, -0.019382548, 0.025375197, -0.007911098, 0.0014300598, -0.019948984, -0.027838606, 0.02144718, 0.02010477, 0.030241448, -0.023852775, -0.012480847, 0.011056017, 0.025978113, -0.008179793, -0.0109350225, 0.01704509, 0.00747667, -0.038643684, -0.060923383, 0.03047931, 0.022090288, 0.023283998, 0.024309227, 0.07742392, -0.023317037, -0.03219875, 0.0073381932, 0.022591889, -0.007847915, 0.014582233, 0.03703826, -0.03822082, -0.03579348, -0.029694147, 0.032496866, -0.015020514, -0.04081968, -0.03780897, -0.037024908, 0.018220702, -0.010997791, 0.0064299693, -0.027116213, 0.013428164, -0.0061254846, 0.0020443287, -1.6518161e-05, 0.008104911, 0.0040816376, 0.02882529, 0.023099821, -0.016747763, -0.025827795, 0.027576517, -0.005851834, 0.048184577, 0.02087331, 0.06163697, 0.046079062, -0.041253556, 0.0050052777, -0.010526473, -0.03027228, -0.0010769841, -0.041995775, -0.04203982, -0.083654575, 0.0076790173, 0.017467404, -0.006841822, -0.04687854, -0.006192211, 0.01851796, -0.0025383595, -0.0044709155, -0.0225093, 0.04057576, -0.063864574, -0.013273994, -0.0056514135, 0.008266789, -0.021263829, -0.0021451584, -0.028366087, 0.022074869, 0.0019986287, 0.043592528, -0.046151705, -0.01638106, -0.014348225, 0.0016658565, -0.013454593, 0.05832012, 0.031738546, 0.028519155, 0.022587484, 0.020104254, 0.009764986, -0.014070169, -0.047021694, 0.09488913, 0.035151746, -0.0011474616, -0.019852627, 0.028230637, 0.02038341, -0.0049565495, 0.01906581, -0.0011452591, -0.01061457, 0.018889068, 0.008912099, 0.0011496639, -0.09982255, 0.017989654, 0.06484369, -0.020797465, 0.008295971, -0.06638539, 0.012463503, 0.010126596, -0.009944552, 0.048893757, -0.042434055, -0.0170996, 0.030362584, -0.03293969, 0.05438632, 0.041440763, 0.032955106, -0.008406643, 0.003690355, -0.056152936, 0.0031676327, -0.037014306, 0.03522663, 0.0040667714, 0.04380176, -0.013499329, -0.008144829, 0.009393877, -0.020240253, -0.04006067, 0.022046238, 0.058440153, -0.01446165, -0.00591653, 0.013114318, -0.03403622, 0.056699134, 0.041154444, -0.012431018, 0.023657309, -0.034049436, -0.06377772, -0.03137394, 0.03309799, 0.019445179, -0.028629001, -0.019017909, -0.016205417, 0.04996771, -5.946538e-05, 0.029406387, 0.011928245, 0.009208323, 0.030085078, 0.0053023295, 0.01980197, 0.0108171925, -0.005825955, 0.02836834, 0.015785856, 0.007762985, -0.080465466, -0.013386317, 0.01015977, 0.036643885, 0.039760314, 0.028154654, -0.011095799, -0.02231934, -0.024968302, -0.0067162844, 0.007790515, -0.016051248, -0.033901047, -0.06799756, -0.000498229, 0.025345465, -0.059470333, -0.0135608595, -0.026234142, 0.0013199387, 0.00046966638, -0.011091394, -0.06744916, -0.0067504216, 0.015659492, -0.0053744586, -0.02882529, -0.025356477, -0.042709358, 0.056459073, -0.02332612, 0.012126532, -0.019442977, 0.003834691, 0.00281965, 0.027543481, -0.03110755, -0.024643306, -0.033802766, -0.0049086465, 0.026366288, 0.010132791, 0.039951924, 0.04306174, -0.020266682, -0.019274078, -0.050514735, 0.038067754, -0.010294393, 0.009870014, 0.012760829, 0.01880868, -0.052924186, -0.034972113, 0.012052063, -0.028954132, 0.016086485, 0.020038594, 0.01192446, -0.031452782, -0.0172707, 0.012281751, -0.020828301, -0.014274444, -0.039335247, 0.019129114, 0.018713973, -0.07536686, -0.026406068, -0.030580895, -0.03973822, -0.049634323, -0.026394093, 0.06272496, -0.03130026, -0.022992179, 0.03558783, -0.022615565, 0.016071895, 0.050254956, -0.064067885, 0.041733682, -0.012363706, -0.05088034, 0.032196924, -0.080485284, 0.030169321, -0.00531169, 0.053171407, -0.014203966, -0.010322887, -0.015381712, -0.009466868, 0.02862597, 0.009316173, 0.013873603, -0.004970865, 0.0069966284, 0.03230071, -0.02180948, -0.062152334, 0.013505247, 0.019026719, -0.032220323, -0.0033102394, 0.04207038, 0.045951318, 0.002342275, 0.031146368, 0.024701808, 0.0042470256, -0.006692608, -0.0057418505, -0.008908795, -0.008314141, 0.0075382004, 0.011308333, 0.021528393, -0.025061628, -0.019233746, 0.022368893, 0.020894371, 0.019748012, 0.0021132233, 0.055275273, 0.0337444, -0.026245706, -0.0013390722, -0.036194593, 0.039031312, -0.06400677, -0.009821698, 0.07874097, 0.012703429, -0.008635694, 0.0039269174, -0.030016802, 0.05514863, -0.03217077, 0.00010681744, -0.05917686, -0.01859119, -0.007673236, 0.009909796, 0.017255971, 0.022009347, 0.03930221, -0.037858523, 0.017704165, 0.029168181, 0.034932606, 0.0515697, -0.027889814, 0.061072048, 0.010276498, -0.028206412, 0.044136528, -0.027533023, 0.020889968, 0.023682762, -0.0051863925, -0.0054542962, 0.059524845, -0.037187956, 0.016356833, -0.005286913, -0.04559453, 0.0036295906, -0.007193108, 0.003244167, 0.029527863, -0.03271303, 0.019812983, 0.018813359, -0.014777146, -0.038661856, -0.05480533, -0.018968286, -0.020543087, 0.0076379976, -0.007024623, -0.01667639, -0.051405616, -0.0007323051, 0.0035701252, -0.0071262787, -0.044416234, 0.036233135, 0.015753921, 0.059976343, 0.013366495, -0.031475905, 0.027613958, 0.02302246, -0.00025493026, -0.031266674, 0.01095925, -0.022241566, -0.028810976, 0.017120523, -0.015374554, 0.039890256, 0.09384077, -0.0010946034, 0.045995366, -0.06020759, -0.0037110802, -0.012503146, -0.026598092, -0.03979555, -0.004126237, -0.014023368, 0.01052317, -0.012112492, 0.015608285, -0.04201449, 0.069023885, 0.017237114, -0.010895379, -0.0215551, -0.043556187, -0.0039126016, -0.009162073, -0.010036435, 0.06980134, 0.031976957, 0.027322415, -0.041581716, -0.007289189, -0.03072598, -0.025379052, -0.0017960748, -0.0058124657, -0.017076474, 0.0053262813, -0.0003449543, -0.0090976525, 0.0066829724, 0.07315343, -0.0382913, 0.045632657, 0.005199091, -0.05023393, -0.004439531, 0.012901785, -0.022459192, 0.02049766, 0.0032078268, -0.017840026, 0.023282897, -0.033676125, 0.05077903, 0.013931416, -0.026925704, 0.024298765, -0.020462837, -0.0018114228, 0.025791455, -0.014921405, -0.0051411395, 0.0042099287, -0.011707522, 0.01574401, -0.00090960006, -0.021607613, 0.024678132, 0.035505787, 0.05224584, -0.012869299, -0.030165466, -0.041861426, 0.047131818, -0.025199555, -0.023988772, -0.010236855, 0.001259785, -0.0029864835, -0.022152506, 0.028305244, -0.031038726, -0.011361191, -0.067944705, -0.016778046, 0.021514354, 0.04482368, -0.007237157, 0.060236778, -0.0034622066, -0.030818485, 0.016006097, 0.02257045, 0.024778618, 0.048029307, 0.029831246, 0.008568486, 0.023798265, 0.024544196, -0.008614221, 0.010080483, -0.0363818, 0.020920802, 0.045519643, 0.023056047, -0.018575221, -0.0051184273, 0.026406482, 0.021370094, -0.032447174, 0.01925577, -0.04164589, 0.04554277, 0.024941323, -0.03357206, -0.013882964, 0.0069838786], [-0.021153752, -0.08818263, -0.029220868, -0.013104866, -0.0146482615, 0.03147567, 0.00616786, 0.004121115, 0.036406375, 0.049205497, 0.012244632, 0.021129455, -0.07580522, -0.009915414, 0.0012438131, 0.05757565, 0.03531332, -0.034687147, 0.0146079445, 0.043373868, -0.032761358, 0.001956901, -0.025392678, -0.012294406, -0.022586863, 0.022143867, 0.0036773714, 0.0010850934, 0.033372097, -0.031340282, -0.0032776787, -0.035110235, -0.008272592, 0.0031303451, 0.021129953, 0.024019388, 0.005636691, -0.014075353, -0.067256875, -0.04832548, -0.09059435, -0.014143731, -0.027453858, 0.015143522, -0.034954503, 0.04538677, 0.005065594, 0.03663758, -0.02119715, -0.031485625, 0.022808861, 0.0062338114, -0.04735636, 0.021593606, -0.007205667, 0.016465545, 0.03504055, 0.008710114, -0.014467331, -0.00745479, -0.016428713, -0.05320367, -0.061748777, 0.0016458079, 0.023341702, 0.035989262, 0.013352497, -0.010497345, -0.029382637, -0.027290594, -0.010883786, 0.014097004, 0.021940786, -0.031921905, 0.04627077, -0.004196275, -0.07690425, 0.015682522, 0.0016644734, -0.020921398, 0.008795229, 0.016340112, 0.013898154, -0.050601188, -0.044148363, 0.013573621, -0.04109716, 0.014221691, 0.04972515, -0.0024688363, -0.025046742, 0.0052241273, 0.01303207, 0.0074567813, 0.006381643, 0.01626545, -0.0044399234, 0.035095304, 0.015624598, 0.026998665, -0.006101908, -0.05527207, -0.033427842, 0.003527051, 0.011412395, -0.012297393, 0.0045524146, 0.0016933429, 0.0006567801, 0.009818601, -0.0012463641, -0.0019254807, -0.0055745426, -0.04061236, 0.0023264799, -0.012867067, 0.029640967, -0.028013328, -0.04755845, 0.011050033, 0.0018615822, 0.029598348, -0.011797653, 0.01979051, -0.010170012, -0.013282439, 0.030543884, 0.013343662, -0.060825955, 0.016714295, 0.033167522, 0.036631357, 0.02919797, -0.0033448748, -0.009962949, 0.013674043, 0.00376174, 0.05439802, -0.04231665, 0.040044922, -0.035015166, -0.02734037, 0.018130017, 0.014410338, 0.009524929, -0.036315784, 0.016893608, -0.028246272, -0.01901601, -0.027921742, -0.0039396854, -0.005158424, 0.006460536, 0.0136448005, -0.025383221, -0.051474243, 0.010516696, 0.026344376, -0.009363659, 0.006648188, -0.02112149, -0.017404549, 0.033158563, 0.0155167105, -0.026793344, -0.029438633, 0.02574359, -0.008815388, -0.01801031, 0.033838984, 0.045798402, 0.01459799, -0.01313162, 0.035524365, -0.0468616, -0.0570341, -0.011085871, -0.0058162, 0.043709353, 0.039349567, 0.0035678665, -0.012544401, -0.017302759, -0.022451477, -0.025899883, 0.020262998, -0.010094479, -0.016507605, -0.009162817, 0.008340037, 0.031234762, -0.004910545, 0.02178997, -0.0041522244, -0.041952297, 0.02304579, 0.010067476, -0.011221384, 0.025184868, 0.020200033, 0.016106667, -0.004955591, 0.01423961, -0.019588424, -0.025349373, -0.05468074, 0.019688595, 0.012395946, 0.04824733, -0.024302108, -0.016232224, 0.05739049, 0.026730131, 0.057970863, 0.035403907, 0.05671554, 0.03866118, -0.027478745, 0.032894008, 0.05396896, -0.0015071846, 0.021902708, 0.039346643, -0.037852835, -0.012038687, -0.0013628374, -0.004684816, 0.027891379, 0.03362495, 0.010147302, 0.025465848, -0.005749999, -0.05021792, -0.063399315, -0.030609587, -0.030844774, -0.06027544, 0.033997767, -0.07678877, 0.056531373, 0.010170012, 0.046156287, 0.046806347, -0.0379922, -0.013123657, -0.021498537, -0.049090024, -0.010680128, 0.001943213, -0.013641316, 0.07991464, -0.030611826, -0.0037662198, -0.00034643346, -0.009335038, -0.01061052, -0.0030138716, -0.015027921, 0.002360327, 0.04413642, 0.013045012, -0.022901442, -0.017454572, -0.055040363, 0.041395314, 0.017880147, 0.042969696, -0.03344576, 0.028234327, -0.049473815, -0.026164686, -0.094763495, 0.006863962, 0.011148588, -0.0208099, 0.040440135, -0.0036475065, 0.040646702, 0.02960264, 0.0058478694, -0.05029283, -0.029133761, 0.008418931, 0.010018199, 0.022202104, -0.013629369, 0.00033697623, -0.04309115, -0.036054965, -0.043949265, -0.010751882, 0.022496773, -0.0009009261, 0.011659278, 0.060398884, -0.026167799, 0.03397437, 0.021054545, -0.051853523, -0.027864002, 0.026941674, -0.011369588, 0.00041313187, -0.023408648, -0.010142885, -0.025550464, -0.045276266, 0.021974385, 0.018645408, 0.0026171654, -0.016377179, -0.0045889993, -0.05143716, -0.007801722, 0.004244308, -0.0030861385, 0.038012113, 0.059827216, -0.0071608694, -0.02332061, -0.023996491, -0.016205471, 0.03061357, -0.06889646, 0.032458726, 0.07340308, 0.004129701, 0.009786994, -0.039546177, -0.0071382215, 0.039653692, 0.031541374, -0.016268436, 0.020801937, 0.021523673, 0.04154489, 0.002270732, -0.0024962125, 0.025738614, 0.057120707, 0.024680462, -0.0635128, -0.00073169137, -0.026744066, 0.027337385, -0.037848853, 0.006228834, -0.07862845, 0.039327417, -0.014097004, -0.0023277244, -0.014801072, 0.016771972, 0.0016210448, -0.01988807, -0.012266035, -0.014559538, -0.0046048025, -0.01475926, -0.025697798, -0.0050312495, -0.029439878, -0.022317333, 0.06293342, 0.026370754, -0.014120648, 0.041882616, 0.011454205, 0.02579934, -0.031842016, 0.06989195, 0.0024267763, -0.015383562, -0.0033229738, -0.02977337, 0.043549076, -0.04537084, 0.022459442, 0.03021736, 0.008561287, 0.031411957, -0.026987964, 0.04144061, 0.038797066, 0.030614566, 0.05348813, 0.060924508, 0.018399782, -0.01340613, 0.04269668, 0.0062705204, -0.0024190613, 0.010481137, 0.01787318, -0.0082347635, -0.021341434, 0.044036873, 0.03175839, 0.038921002, 0.026891401, 0.0024347403, 0.030979913, 0.0052023507, -0.017460546, -0.021268576, -0.040269904, -0.022101374, 0.009866261, -0.0047089565, 0.0029781582, 0.009306915, -0.012921072, -0.016125333, 0.03675878, 0.0151544735, -0.02720797, -0.012307845, 0.016257985, 0.027269939, -0.0032308903, 0.036137592, 0.06373978, -0.062338114, 0.035636853, 0.02102642, -0.03045429, 0.02185816, 0.001615694, -0.0015094245, 0.0061203246, -0.018165857, -0.003890408, -0.00019063796, 0.08914888, 0.028333878, -0.015168659, -0.00904261, -0.022827776, -0.07097705, -0.0070384233, -0.018044157, -0.052651916, 0.019503806, 0.0049506137, -0.03482154, 0.0034314834, -0.03916092, -0.011776623, 0.035953425, -0.00988306, 0.013021618, -0.009882065, -0.04565611, -0.017740779, -0.028058125, 0.034220137, 0.04954198, -0.069135375, -0.021492423, -0.04422701, -0.041390337, -0.023746124, 0.027410055, -0.013747834, 0.0317564, 0.020037394, 0.015340632, -0.06687759, 0.010807909, 0.04604479, 0.0066071237, -0.04715079, -0.0117130345, -0.06476265, -0.03729585, -0.014084313, 0.014224678, 0.0007774843, 0.02222799, 0.023414124, 0.039871704, 0.012897367, 0.06179532, 0.007370484, 0.020786008, 0.048461862, -0.028183559, 0.014644529, -0.02666343, 0.0039859135, 0.024616687, -0.020119024, 0.0058221724, 0.06411085, -0.03506743, -0.015242077, 0.02559327, 0.06528479, -0.04035353, -0.018213144, 0.045999993, 0.029381141, -0.065602355, 0.042475928, 0.0077091404, -0.024067173, 0.018031465, 0.03973632, -0.009606561, -0.0013558689, -0.024133619, -0.039310742, -0.03222105, -0.04720803, 0.040287822, 0.037112184, 0.013765255, -0.03592356, 0.0017401314, -0.02083628, -0.032192927, -0.03032363, -0.016025536, 0.035618935, 0.009396012, -0.036238134, 0.044602312, -0.032041114, 0.023079202, -0.04363469, -0.042456016, -0.04643403, -0.0486082, -0.0015696522, 0.009552306, -0.038787857, 0.03413863, 0.014577458, -0.018411247, -0.028954074, -0.028811717, 0.026755018, 0.012679963, 0.005683799, -0.03182011, -0.022625191, 0.019038908, 0.0153728295, 0.020393783, -0.03172156, -0.01716737, -0.0016057391, -0.06703289, -0.06631015, 0.021984588, -0.0013777699, -0.011184176, 0.013583576, 0.04959967, -0.0137239415, -0.06402847, -0.006782829, 0.0365268, -0.007207409, 0.016801525, 0.023617204, 0.005034236, -0.051185917, -0.06847039, 0.027198015, -0.016266445, -0.006208302, -0.044785485, -0.045187168, 0.023840198, -0.0086379405, 0.0259407, 0.010178475, 0.025487749, 0.0036687853, 0.009960958, -0.016690528, 0.020628221, 0.010773284, 0.021685753, 0.0648398, -0.023084613, -0.012773241, 0.01957623, -0.029270642, 0.047024366, 0.0018347037, 0.043476403, 0.007924167, -0.039067343, -0.04731007, -0.006155696, 0.001810314, -0.0033294447, -0.037556175, -0.05749203, -0.056637395, 0.008258655, 0.028287088, 0.016983204, -0.051357765, -0.017277125, 0.037050463, -0.00369977, -0.018798994, -0.016503375, 0.031039642, -0.057676196, -0.027970416, -0.010098088, -0.004293336, -0.04040131, -0.011125194, -0.03602709, 0.010438797, -0.00131804, 0.028824285, -0.011947475, 0.017912004, -0.0141574815, -0.009570971, 0.016970262, 0.0922628, 0.033701606, 0.022237446, 0.019358339, 0.012769259, 0.052018777, -0.019939251, -0.074323915, 0.06582833, 0.004274546, -0.03281001, -0.02920245, 0.00096563355, 0.02530159, 0.030250212, 0.019805443, -0.011012702, 0.01581228, 0.008909213, -0.02024396, 0.004068478, -0.037269473, 0.023917848, 0.046424076, 0.0005166637, -0.003219442, -0.039071325, 0.04927419, -0.011889736, -3.0487141e-05, -0.024285186, -0.014106152, -0.037671905, 0.021292903, -0.052115344, 0.037591513, 0.034185417, 0.034197364, -0.005357773, 0.011930054, -0.02254804, -0.027286613, -0.034614477, 0.066365905, -0.010382053, 0.045263324, -0.053496595, -0.0032147134, 0.0016440657, -0.016472513, -0.050575975, 0.01578761, 0.04659331, -0.02254406, -0.01801591, -0.012470609, 0.01840953, 0.04106929, 0.047630623, -0.015152482, 0.025175037, -0.03446423, -0.05967018, 0.012273501, 0.042766616, -0.015431222, -0.00896633, -0.011885754, -0.018167349, 0.052174076, 0.0050939657, 0.050001897, 0.0332298, 0.054314397, 0.03862534, 0.0034070935, 0.019182261, 0.0039113136, -4.9774924e-05, 0.05138763, 0.009315874, -0.023828253, -0.09086511, -0.018876642, 0.010652332, 0.02035197, 0.0530083, 0.02715919, -0.024365323, 0.016953899, -0.025392678, 0.014990217, -0.014934966, -0.007936114, -0.008717581, -0.062365986, -0.00020768587, 0.052612096, -0.054851968, -0.015688062, -0.031238742, 0.007882357, -0.004952605, 0.006986408, -0.030404016, 0.0045677205, 0.019720824, 0.03269018, -0.019455027, -0.017082755, -0.04335296, 0.042740732, -0.01641328, -0.0043841754, -0.01967105, 0.009181483, -0.026196232, 0.04572474, -0.042719327, -0.019535663, -0.032947764, 0.010511469, 0.0062628053, -0.015321033, 0.05091975, 0.048134346, -0.008431872, -0.008051094, -0.031505536, 0.08168762, -0.048234887, 0.008235261, 0.009414429, 0.03557065, -0.081345044, -0.0134641165, 0.027754622, 0.0011624934, -0.0013877248, 0.006365715, 0.029068556, -0.0012199834, -0.0090976115, -0.006470717, 0.002022853, 0.011656789, -0.02280687, 0.009361668, -0.004462913, -0.057322796, -0.028916243, 0.0010930214, -0.019150902, -0.06522307, -0.037151005, 0.020262375, -0.021355433, -0.03814999, 0.064647675, -0.014341524, 0.0013715479, 0.041412488, -0.04714681, 0.014643037, -0.037633825, -0.011600046, 0.034021877, -0.042096395, 0.023186157, -0.0076414463, 0.030392569, -0.017681547, 0.0067721275, -0.019917997, -0.017641477, 0.0002384219, 0.0037607444, 0.014705006, 0.010654821, -0.003269217, 0.021685937, -0.04953003, -0.06693732, -0.014871752, 0.008165327, -0.0065175286, -0.0038844352, 0.031114304, 0.009877025, 0.019055832, 0.0199916, 0.014994945, -0.0069022574, -0.027417397, 0.015072096, -0.0036853354, -0.017263187, -0.025216972, 0.02212595, -0.0052900794, -0.03967895, -0.047890943, 0.006632073, 0.04770727, 0.0074751982, 0.035422076, 0.009174016, 0.01312266, -0.033217795, -0.024314927, 0.0017530728, 0.0038744803, -0.10258412, 0.01505567, 0.06437889, 0.023353897, 0.007193845, 0.013694077, -0.02382626, 0.037217706, -0.04683845, 0.0010592104, -0.041544143, -0.042169314, -0.02858574, 0.019472448, 0.013231917, 0.030212134, 0.02094007, -0.034129668, 0.034488298, 0.027097158, 0.0043712338, 0.022334008, -0.014466584, 0.05116862, -0.008845999, -0.0051178574, 0.054135207, -0.021275545, -0.005172361, 0.027316043, -0.013560182, 0.0185322, 0.04335993, -0.051891353, 0.011251994, 0.02798645, -0.040899057, -0.007223337, -0.023981558, -0.006319424, 0.008222817, -0.029155163, 0.04785162, 0.023003979, -0.011412892, -0.029208796, -0.032459226, -0.01142235, 0.006874477, -0.005220394, 0.0033461193, -0.0014255538, -0.010145623, -0.024977056, -0.008083448, -0.019815054, -0.063990645, 0.0703469, -0.011563214, 0.07514022, 0.030269127, -0.026476279, 0.031158604, 0.04042819, -0.033542324, -0.013343662, 0.0023389237, -0.033497527, -0.039334137, 0.043701388, -0.018153537, 0.060126115, 0.064866684, 0.05074367, 0.0039272415, -0.06164674, 0.010013221, -0.015038498, -0.007235905, -0.034249127, -0.005916745, -0.009616017, -0.0003862534, -0.020596864, -0.004184018, -0.04956114, 0.06575068, -0.011988352, 0.012865823, 0.015297327, -0.016753243, -0.0046416363, 0.0012899172, -0.0008561287, 0.05564737, 0.03183405, 0.037193812, -0.03936002, -0.011889239, -0.04880332, 0.00041313187, -0.0025258285, 0.011657786, -0.016772158, 0.022996513, -0.024256812, -0.015696522, 0.034152567, 0.050581276, -0.047335707, 0.017633265, -0.00089495315, -0.023013188, -0.018974202, 0.026223421, -0.044800416, 0.018321155, 0.007351756, -0.0046096556, 0.01726493, -0.033146117, 0.0676272, 0.024365822, -0.011058744, 0.052699696, -0.010466422, -0.014346439, 0.02326679, -0.035083357, -0.013186871, 0.01125411, -0.054931607, 0.005380669, -0.022676459, -0.040666115, -0.000103531835, 0.006436893, 0.05797385, -0.020316133, -0.019283801, -0.019746708, 0.06599377, -0.0075916713, 0.006960028, -0.026671395, 0.012882496, -0.037532285, -0.0042607337, -0.007402278, -0.026529038, -0.008589161, -0.06853808, -0.022923095, 0.037176143, 0.021857165, 0.011000258, 0.05842257, 0.017570548, -0.030742984, -0.0027376208, 0.008322367, 0.0060328455, 0.06280003, 0.03753328, 0.02366972, 0.021706844, 0.024856728, -0.0038757245, 0.018762408, -0.06490725, 0.019890059, 0.062507346, 0.0040468257, -0.000666984, -0.0047670687, 0.0073482725, 0.0067295698, -0.008785274, -0.020010825, -0.03930726, 0.04346645, 0.035115212, -0.057785448, 0.01549145, 0.020710101], [-0.0074605895, -0.06645386, -0.035392113, -0.036500245, 0.0017361597, 0.0071854177, 0.023300586, -0.003445058, 0.0022170239, 0.0193941, -0.013938753, -0.010492684, -0.0015937935, -0.03748974, 0.007155892, 0.034887772, -0.033818513, -0.01724195, 0.055374358, 0.026489813, -0.021011116, -0.00689996, 0.0010763281, 0.038821016, -0.043724567, 0.086130485, -0.03464242, -0.02681531, -0.005930659, -0.012089255, -0.010989956, -0.06263888, -0.04517852, -0.043677114, 0.019014457, 0.050510183, 0.020949021, -0.0038509527, -0.017782763, -0.034219358, -0.10109003, -0.015499731, -0.0041326554, 0.043025233, 0.031708263, 0.047810778, 0.012312499, -0.037375078, 0.009266292, -0.012215718, 0.02696424, -0.042189334, -0.033999752, -0.019913837, 0.014583438, 0.057867784, -0.019313324, 0.035999693, 0.0227705, -0.011127778, 0.045260306, 0.0035369394, -0.033499956, 0.019077059, 0.043447156, -0.006733614, 0.034750454, 0.01715234, -0.0139818685, -0.00851319, -0.033537816, -0.0048322794, -0.03615493, -0.011566489, 0.0059494483, -0.0073540676, -0.03525593, -0.039494477, -0.02607117, -0.04937261, -0.031299338, 0.048442338, 0.011062149, -0.0008703516, -0.053032886, 0.009899997, -0.021041155, -0.024618734, 0.052860986, 0.046690024, -0.061496098, 0.0014499129, 0.048800275, 0.005370534, 0.017865684, 0.052792583, 0.004349739, 0.03286032, 0.004694358, 0.030486068, 0.025201483, -0.016169658, -0.016642194, 0.0011570401, -0.02282805, -0.018212765, 0.019003604, -0.025897505, -0.026410427, -0.009032548, -0.017170765, -0.041938934, -0.0092507675, -0.04575549, 0.033396464, -0.014012459, 0.03346815, -0.016276687, 0.006641732, -0.014479441, 0.041730434, -0.024657607, 0.0020632988, 0.020961136, -0.061817177, 0.016079292, 0.014764424, 0.009361707, -0.03477166, -0.02070417, 0.028914453, -0.011412512, 0.04653049, -0.03087382, -0.049689807, -0.02603823, 0.009780728, 0.032690182, -0.022840671, 0.043676104, -0.026433649, -0.0028649915, 0.017823024, 0.012599905, 0.015844034, -0.025739994, 0.006490279, -0.04243873, -0.007081956, 0.014461771, 0.01947437, -0.033255108, -0.0015538952, 0.009358552, 0.0040382496, -0.020259907, 0.016090903, 0.03513565, -0.006954862, 0.03594239, -1.2621108e-05, -0.005403854, 0.010587595, 0.007492395, 0.0073020686, -0.034234505, 0.0006093471, -0.040462267, 0.034745406, 0.07283894, 0.07406168, -0.0030214933, 0.05214032, 0.022476679, -0.035770494, -0.019729987, 0.0027160626, 0.016553845, -0.003460203, -0.0155330505, 0.00061622565, -0.045482945, -0.0039544455, 0.014075059, -0.055488452, 0.021502329, -0.043867946, -0.031279143, 0.029499063, 0.041191258, 0.022439573, -0.048073296, -0.03973024, -0.026312487, -0.020801606, 0.032487743, -0.012574032, -0.017782638, 0.025503473, 0.003550949, -0.01750409, -0.042315044, -0.034187555, -0.01839943, -0.045753032, -0.023034533, 0.08000369, 0.012615871, 0.034960978, -0.05478571, -0.023343498, 0.0049308147, -0.023852885, 0.048741713, 0.03469997, 0.008589926, 0.032464646, -0.038604435, 0.03808243, 0.059305076, -0.023146734, -0.012835667, 0.0148272775, -0.02992919, -0.005355389, -0.038717523, 0.009035704, -0.0036805044, -0.03203035, 0.0059314477, 0.07460741, -0.03536334, -0.010823358, -0.066700034, -0.018202668, -0.0032701292, -0.021766867, -0.012899783, -0.065203674, 0.043162517, -0.029519256, -0.010648177, 0.028422736, -0.040639214, 0.03270962, 0.016920364, -0.012332337, 0.0017174174, -0.011617573, 0.033214528, 0.00798323, 0.042203978, -0.018199828, -0.022754723, 0.0069748033, 0.010676196, -0.004317429, 0.02172446, -0.022730112, 0.035647057, -0.022158626, -0.029759564, 0.023462702, -0.009967299, -0.00014716212, 0.03840856, 0.019807568, -0.024524327, 0.026291283, -0.021247888, -0.028492406, -0.08450286, 0.053828523, 0.015119267, 0.025350254, 0.020209929, 0.025253324, 0.00256991, 0.03431326, 0.005606296, -0.040456206, -0.011821435, -0.00019486992, 0.011233418, 0.024677549, -0.029238565, 0.039258715, -0.031572964, -0.040010933, -0.03784212, 0.018935196, 0.0028039054, -0.007827107, 0.070777155, 0.04823434, -0.020714773, 0.01624791, 0.007866989, -0.061277498, -0.06578323, -0.020857139, -0.0066228006, -0.023146102, -0.013790833, 0.033204623, 0.0053402437, -0.068190336, 0.015108855, 0.012537304, -0.015915785, 0.022932049, -0.051128868, -0.052515928, -0.007343466, 0.013010847, -0.03084195, 0.028081462, 0.06629111, -0.043045048, -0.005440203, -0.04686268, -0.03306705, -0.02512358, -0.067738, 0.037037652, 0.037076652, 0.00036954606, -0.0078268545, -0.061253775, -0.027183343, 0.01673862, 0.0054422216, 0.0067112744, 0.0013671184, -0.011587819, 0.0086787315, 0.02328342, -0.03915926, 0.0019205224, -0.0045446088, -0.0013378374, -0.078596815, -0.029610258, -0.009608197, 0.02753396, -0.060613632, -0.05041174, -0.012167757, 0.03166283, -0.0028662537, 0.054729164, -0.036062043, -0.0026120646, 0.019468818, -0.0013652883, -0.04217457, 0.024935989, 0.016864324, -0.01696277, 0.020795548, 0.009894948, 0.0012918966, -0.0941151, -0.016076012, -0.018466702, -0.017750831, 0.0744817, 0.020257479, 0.01485252, -0.028828884, 0.05458377, 0.020683978, -0.015413528, 0.043247994, -0.040204287, 0.036132973, -0.0016863063, 0.0053163897, 0.11256614, 0.005686819, -0.0048828544, -0.021742636, 0.04902581, 0.025612773, 0.05832164, 0.068176195, 0.008816854, 0.0013679547, -0.013642914, 0.052356396, 0.005633053, 0.014673805, 0.03428398, 0.012647361, -0.0022023835, -0.007288059, 0.009799029, 0.0070448504, 0.022696603, 0.034352638, -0.009172769, -0.014529041, -0.02906086, -0.0021027713, -0.0051860134, -0.054433834, -0.07190195, 0.0209571, -0.03707072, -0.014295173, 0.012969199, -0.024369847, 0.008893337, -0.0040905015, 0.045262326, -0.023484064, -0.016947623, 0.023130454, -0.0023228992, -0.017979274, 0.0078283055, 0.027971404, -0.051189385, 0.04044914, 0.06733412, 0.0015821821, 0.0037267609, -0.0010531053, -0.028564092, 0.066453665, 0.026708284, 0.049963687, -0.013630796, 0.07863859, 0.027466562, -0.044870563, 0.011810581, -0.04850343, -0.02882964, -0.011504392, -0.016334744, 0.0034814065, -0.020034116, 0.016592719, -0.03238728, -0.027649315, -0.009515306, 0.055889297, 0.057172608, -0.006642237, -0.0054437364, -0.008103762, -0.058047004, -0.058319617, -0.03165172, 0.033772066, 0.04981476, -0.06763703, -0.039198134, -0.025881981, -0.043144, -0.028724127, 0.021971205, -0.020943088, -0.045479283, 0.003707577, -0.0043315645, -0.013214048, 0.02287008, 0.045680333, 0.0067601185, -0.044995766, -0.008228205, -0.06312094, 0.0053432724, 0.01372167, 0.05730993, 0.005769866, -0.052176673, -4.796021e-05, 0.02709247, -0.040663194, -0.0025731914, 0.0022430234, 0.03038557, 0.038115308, -0.018672172, 0.006368359, -0.002124385, 0.01805119, 0.01192089, 0.0276921, 0.009981782, 0.020800611, -0.023102686, 0.009802057, 0.006957891, 0.01735251, -0.03256347, 0.027515657, 0.033278327, 0.040782336, -0.03373168, 0.025979288, 0.026577026, -0.0016228221, 0.036302347, 0.026303904, -0.039342016, 0.013398317, -0.034711078, -0.06581353, -0.010512721, -0.0121541275, 0.017632572, 0.04951715, 0.0014620924, -0.013863025, -0.0025858127, -0.017518982, -0.013738455, -0.03259477, -8.834776e-06, 0.040522844, 0.02377009, -0.052035313, 0.055884376, -0.07560751, 0.01751406, -0.011870941, -0.028588327, -0.01948095, -0.018047176, -0.008984715, 0.014856559, -0.02560184, 0.024731316, 0.019279752, -0.009662216, 0.022910846, 0.005551268, 0.020319479, 0.03875488, -0.0027110141, -0.013505091, -0.039042894, -0.044443466, 0.037040398, 0.04824343, -0.024414273, -0.01410737, 0.027968377, -0.054737244, -0.032845173, 0.04709087, -0.026936475, -0.017747298, 0.00622776, 0.08359616, 0.011595264, -0.016936265, 0.0014011955, 0.021521892, 0.034473296, -0.010416958, 0.021920847, -0.03014274, -0.04407089, 0.016270375, 0.014410907, -0.02290239, 0.01216022, -0.02166489, -0.04258463, -0.018208979, -0.026849642, 0.0025767256, -0.07652632, 0.006394359, -0.02603987, 0.0216659, -0.03797843, -0.016661504, -0.027294157, 0.03420699, 0.03431932, 0.011953704, 0.0035606672, 0.013848891, 0.00955115, 0.051824797, -0.008257739, 0.04534714, -0.017518668, -0.03434153, -0.019643998, -0.059206124, -0.017301679, -0.021957194, 0.01050783, -0.041158948, -0.072459295, -0.008546005, -0.04173649, 0.008247894, -0.024505142, -0.011034888, 0.025448445, 0.003011207, -0.019600077, 0.0005136791, 0.007727147, -0.023757216, -0.035626106, -0.014325462, 0.019194182, -0.012360018, -0.00010803669, -0.009531461, -0.00624341, -0.010261466, -0.015586563, -0.0014451169, 0.021391263, 0.030129615, -0.00038418654, -0.032621272, 0.018007293, 0.035630904, 0.0021885002, 0.06801869, 0.025861787, 0.06016735, -0.032016218, -0.024657607, 0.09624353, 0.00298363, -0.04790165, 0.0066730324, 0.0023480312, 0.016184047, -0.032343358, -0.0155396145, -0.02952658, 0.025530986, -0.028708478, 0.008364261, 0.01592683, -0.04190839, 0.00032814883, 0.0034790086, 0.013896346, -0.004664131, -0.012653419, 0.028405571, 0.0140195275, 0.0069416096, 0.0049414164, 0.0021577047, -0.04987862, 0.008152573, -0.06313785, 0.014642189, 0.05432851, 0.025443649, 0.02732694, 0.017974477, -0.010408754, -0.034416564, -0.018344497, 0.048189413, -0.021089368, 0.044277374, 0.014875743, -0.008093917, 0.011923413, -0.008418784, -0.027091714, -0.030950995, 0.013218844, -0.021697199, -0.016051274, 0.032015715, 0.025369437, 0.04468175, 0.0017265676, -0.0015357365, 0.033483297, -0.035881814, -0.04695355, -0.05128726, 0.01733156, 0.007869703, 0.012390394, 0.013676233, 0.007769049, 0.028272798, -0.017174805, 0.06984471, 0.000111065754, 0.017458022, 0.040275473, 0.01225762, -0.0008509151, 0.009870969, -0.0068978146, 0.018625854, -0.0011962287, -0.035226144, -0.033125866, -0.041688025, 0.039994776, -0.0044531054, 0.019622136, 0.008541335, 0.032438774, -0.0013546867, -0.08021774, 0.00028170313, -0.027436933, 0.020754151, 0.037731055, -0.07358611, -0.025125094, -0.0039726202, -0.011837085, -0.013776192, -0.039096154, -0.027139422, -0.027316118, 0.020761725, -0.021702249, 0.012900793, 0.061485495, 0.037494283, -0.033082448, -0.044753443, -0.08993701, -0.012014285, -0.0053399913, -0.0046233647, -0.01414801, 0.014921179, -0.020941574, -0.0017187425, -0.038354035, 0.007653188, -0.008614664, 0.0152646, 0.008513695, 0.025486562, -0.0065437923, 0.0064314646, 0.03661434, -0.044227395, -0.069511004, 0.019951448, -0.041164, 0.022894692, 0.045839865, 0.017132903, -0.024916591, -0.02413055, 0.011597284, 0.01347783, 0.008298631, -0.022607433, -0.0023452542, -0.02025486, 0.0003834293, 0.02689205, 0.025351262, -0.031097401, -0.045482434, 0.05196211, -0.012758426, -0.044505056, -0.029850436, 0.032887578, -0.06934946, -0.05454237, -0.042912778, 0.0019011175, -0.011280621, -0.042330187, 0.03836413, 0.005439445, -0.04552888, 0.06672427, -0.06924041, -0.0017770521, -0.0119880345, -0.038352016, 0.022280801, -0.028931115, 0.0067406814, 0.03986453, 0.082230054, 0.0007942463, -0.02484642, 0.027493065, 0.0073586744, 0.019178152, 0.032442626, 0.011155498, -0.037851207, -0.019252492, -0.026113577, 0.0084685115, -0.050801475, 0.0063257, 0.008422823, -0.0029533396, -0.022207094, 0.028342465, 0.032722242, -0.023919525, 0.0075764516, 0.00940424, 0.017945196, 0.009835882, 0.03736252, 0.022585189, -0.02749988, 0.04495033, 0.0073414464, 0.022257576, -0.0057229153, -0.048601363, 0.007928328, -0.004626898, -0.043343913, 0.01123733, 0.016698232, 0.0055578314, 0.009789942, -0.03213637, -0.037826978, -0.0037826013, -0.035722785, -0.038163707, 0.015038808, -0.012325269, 0.021317558, -0.01362089, -0.003008872, -0.022796877, -0.06531272, -0.024027942, -0.04763307, -0.044545446, 0.0018765064, -0.004582977, -0.012979801, 0.009263894, 0.02508395, 0.012253172, 0.015339191, 0.025661236, -0.02335309, -0.012918967, 0.01615098, 0.04923444, -0.023764035, 0.019721998, 0.049658507, -0.00051178597, -0.006330748, 0.03673853, -0.053085394, 0.00971371, 0.03427691, -0.010407366, 0.04449092, 0.03745541, -0.014267911, -0.03391847, -0.06500729, -0.006911319, -0.00062095857, -0.011576081, 0.036865752, 0.0045805154, -0.03912594, -0.02246835, 0.0054932116, -0.033601932, -0.022966377, 0.016342316, -0.011466529, -0.0069749295, -0.031636573, -0.016023254, 0.036605254, -0.015435616, -0.053767942, 0.065545455, 0.04946843, 0.062277596, 0.06073214, -0.031355884, 0.002001203, 0.04076719, 0.0062595652, -0.016003566, -0.019924691, -0.03482366, -0.017702872, -0.007164246, -0.010526004, 0.010211991, 0.06661926, 0.01143422, 0.0039034565, -0.034861017, -0.004517852, -0.010978092, -0.032635156, 0.0056497133, -0.021882478, -0.04567251, 0.053909294, -0.00049903867, -0.032579623, -0.03514524, 0.05006844, -0.016645728, -0.01880747, 0.025433175, -0.011250977, -0.016044458, -0.004060968, -0.017880071, 0.037483685, -0.01727855, 0.06675456, -0.023150142, -0.0037974392, -0.023541903, -0.031008044, -0.030948725, -0.02095003, -0.005263002, -0.0052948073, -0.03407901, 0.00033521664, 0.0037231005, 0.012209155, 0.024036648, -0.013890792, -0.0134787755, -0.048943646, 0.007884659, -0.00091881666, -0.01087441, -0.0022256062, -0.030996433, 0.032740165, 0.024736362, -0.04819244, 0.054984614, 0.00719908, 0.058783427, 0.031013597, 0.01910028, 0.030311864, 0.03246452, -0.013976111, -0.044135515, -0.007094325, -0.027283302, 0.009894066, 0.016523806, -0.017740324, 0.012315173, 0.0021587145, 0.051816717, 0.03629831, -0.010493189, -0.020326547, 0.026051987, 0.016764872, 0.012222912, 0.030286873, 0.018642513, -0.0024883777, -0.024688909, -0.011769435, -0.018158998, -0.019017486, -0.09119508, 0.009119887, 0.022860361, 0.024595134, -0.017592562, 0.015458333, -0.024442544, -0.06981593, 0.007953696, 0.008147178, -0.0015613573, 0.01355709, 0.0019663686, 0.034520246, 0.038468126, 0.05045212, 0.027315106, -0.028380329, -0.021010611, -0.002130443, 0.024533289, 0.007132441, -0.021246122, 0.0026867816, -0.01649011, -0.018099489, 0.0022084415, -0.03512909, 0.015461363, 0.031505316, 0.019370371, -0.05198685, 0.0012174321, -0.030317923], [-0.026623938, -0.08183273, -0.06111877, -0.030407578, 0.009311286, 0.0215558, -0.012924831, -0.027205354, 0.0110552935, 0.068118036, -0.009434169, 0.025719646, -0.05668092, -0.02274634, -0.015758578, 0.021146607, -0.015690379, -0.025969267, 0.036709905, 0.038829695, 0.004870733, 0.0074082245, -0.020900724, 0.016701626, -0.035722412, 0.029748823, 0.008804857, 0.016052533, -0.00654706, 0.017037213, 0.0008023966, -0.052312996, 0.010605505, -0.00019136992, 0.006412503, -0.0043536657, 0.00024898793, 0.021110034, -0.059002288, -0.044978146, -0.02767308, 0.016869996, -0.0032302877, 0.02527946, -0.013999446, 0.057948288, -0.02427638, 0.034606677, -0.018553682, -0.030043239, 0.03084598, -0.028189573, -0.032085743, 0.034110714, -0.004514674, 0.029453488, 0.063401185, 0.005506026, 0.021924736, -0.008374275, -0.0048284107, 0.02311712, -0.08942036, -0.027707238, 0.02585357, 0.02888306, -0.016041033, 0.007770723, 0.009945027, -0.06031028, -0.015504644, 0.013580594, 0.00066105434, -0.011589841, 0.056052987, 0.017665837, -0.067477226, 0.0077456515, -0.02697948, -0.008569325, -0.008958505, 0.01607268, 0.023797955, -0.054378502, -0.037935406, 0.013935964, -0.0014207262, -0.03585794, 0.010487624, 0.008671335, -0.039535373, 0.012066426, 0.051901735, 0.0047393385, -0.012228815, 0.022061609, 0.04321648, 0.06208482, 0.026239762, 0.015470603, 0.062784575, -0.028171401, -0.015189988, -0.022825463, -0.021716923, 0.036419168, -0.00089888665, -0.013756554, -0.024712482, 0.02962922, 0.007735934, -0.011527508, -0.00045726376, -0.04648403, 0.01581194, -0.029323762, 0.043095034, -0.02099917, -0.033837516, -0.018237187, 0.0071377303, 0.022552209, -0.0009975617, 0.017902289, -0.04351941, -0.020685432, -0.011447809, 0.003625333, -0.045500044, 0.0025538225, 0.043359093, 0.024022907, 0.027756922, -0.0079786545, -0.024213817, -0.0061074067, -0.033809915, 0.028942632, -0.027660314, 0.03796485, -0.044596095, 0.02271575, 0.023997147, -0.005214371, 0.0020535465, -0.017799474, -0.0070613665, -0.05207194, -0.013947004, -0.0075057494, -0.010519827, -0.011263224, -0.020425059, 0.008606242, 0.028181983, -0.0289194, 0.014519503, 0.03245497, -0.04289999, 0.040707972, -0.018069739, -0.004841521, 0.019884072, 0.009106632, -0.024644397, -0.062316675, 0.008169104, -0.002758533, -0.030305956, 0.016703006, 0.083128154, -0.008411076, 0.017779348, 0.010067513, -0.06935688, -0.013976675, 0.02138743, -0.017973823, 0.03971846, 0.012684698, 0.004372757, 0.041328546, 0.00037102003, -0.014929614, -0.03256969, 0.05757383, 0.0027872273, -0.020146286, 0.003077042, 0.03187321, 0.032040663, -0.025991349, 0.024192655, 0.008768457, -0.028947461, 0.046955787, -0.066677704, -0.014534454, 0.03143711, 0.047630873, 0.023214184, 0.010303155, 0.0047989693, -0.01830021, -0.027866406, -0.039655898, 0.051586155, 0.0028074682, 0.04889134, -0.038268466, -0.021657234, 0.0006803753, 0.028064216, 0.035270948, 0.031663444, 0.051139932, 0.027782682, -0.017773481, 0.023629814, 0.06669978, -0.028631885, 0.04028958, 0.04254669, -0.03895666, -0.027530013, 0.007678719, -0.02285163, 0.021119695, 0.007209271, -0.0127104595, 0.07262489, -0.009965037, -0.019305822, -0.07097616, -0.0026205548, -0.017289538, -0.05571441, 0.04382371, -0.051546596, 0.04203238, 0.011618363, 0.017814493, 0.0057005296, -0.025798138, -0.008110221, -0.01210478, -0.02253289, -0.008703652, -0.03315024, 0.02177753, 0.041587535, 0.019530542, -0.009622032, 0.012113809, -0.004390928, -0.0014757565, 0.0056580063, 0.023828316, 0.029820127, 0.031618822, 0.030097522, -0.054790687, 0.003721593, -0.05224353, 0.019030267, -0.00090624706, 0.018080778, -0.0127215, 0.02950708, -0.050572496, -0.035366636, -0.059166428, 0.056231476, 0.016713588, -0.028657649, 0.022484127, 0.00017986934, 0.011583401, 0.027708158, 0.01079216, -0.06201122, -0.0029036705, 0.019950315, -0.012746916, 0.031281106, 0.0121906325, 0.017157512, -0.060118683, 0.001059435, -0.02547888, -0.024271779, 0.012738981, 0.015398839, 0.053131837, 0.029656015, 0.008153463, 0.040046517, -0.006594902, -0.066412725, -0.0134840235, 0.0031292548, 0.013082159, -0.0014433248, 0.0022596372, -0.014206572, -0.029060628, -0.04033305, 0.039770443, 0.01136834, 0.011302556, -0.015500735, -0.007407305, -0.047157966, 0.021548439, 0.0068888576, 0.004007728, 0.027943, 0.089899704, -0.019580455, -0.018134141, 0.00018032936, 0.017760832, -0.015944429, -0.03320084, 0.031499676, 0.053482376, 0.018046737, 0.025764495, -0.04542, -0.035001203, 0.039042227, 0.06703468, -0.01733462, -0.008507294, 0.03928512, 0.018751953, -0.015840461, 0.009767227, 0.0046968437, 0.006999723, 0.0058653047, -0.060426895, 0.042695735, -0.0066606854, 0.041637678, -0.06172232, -0.005384119, -0.07954364, 0.004206918, 0.01099779, 0.01291333, -0.0215535, 0.02565645, 0.019292481, -0.020280842, 0.011872066, 0.013313443, -0.000365949, -0.034039006, 0.008539423, 0.00308124, -0.012208574, -0.041258622, 0.045218505, 0.0025361117, -0.036562696, 0.05964302, -0.021052992, 0.043687545, -0.011655395, 0.055889223, 0.03392492, -0.00809182, 0.010376298, 0.023529531, 0.049933754, -0.036892075, -0.0074128243, 0.020227134, -0.011807432, 0.012945532, -0.004292943, 0.059961926, 0.03564633, 0.03084828, 0.065454036, 0.041268744, 0.026408128, -0.040344093, 0.053285483, -0.007475388, 0.018058697, 0.02629272, 0.031689204, 0.01983071, 0.004203468, 0.05124965, 0.024929613, 0.030329833, 0.0043107686, -0.00079124107, 0.03258878, -0.011300947, -0.0063501694, -0.0016793172, -0.03666758, -0.02213865, 0.005183089, -0.013957124, 0.024882693, 0.037300576, 0.008535283, -0.045535926, 0.011844695, 0.03549452, -0.029943874, -0.013036098, 0.038049497, 0.027265614, 0.018872019, 0.032799702, 0.035327993, -0.0655626, 0.04057963, 0.015323396, 0.016803753, 0.0054494427, -0.040221956, -0.027143707, 0.036340967, 0.023581533, 0.042840183, 0.02040344, 0.085358344, 0.030469682, -0.04599043, -0.012432606, -0.015858402, -0.058638554, -0.011908178, -0.017386602, -0.029856468, 0.01947741, -0.0010396539, -0.03027647, 0.01237375, -0.03910755, 0.012407764, -0.0043325047, -0.08031453, -0.0024625077, -0.016581101, -0.013666849, 0.00017020883, -0.045266345, 0.0059228074, 0.075230464, -0.054186672, -0.024936888, -0.042465266, -0.02791494, -0.007918966, 0.01771552, -0.045895662, 0.0084787, -0.0069659115, 0.018241787, -0.048103776, 0.04238936, 0.010036801, 0.027189251, -0.027101846, -0.044809543, -0.027301854, -0.0231208, -0.00030005057, 0.05851504, 0.019104792, 0.002096789, 0.0062756455, 0.00028061456, 0.01849204, 0.055465996, 0.02696016, 0.04508533, 0.030409647, -0.044070058, 0.0059672, -0.014093291, 0.006113717, 0.0049972394, 0.029853709, 0.012582343, 0.062128983, -0.044210136, -0.03045266, 0.007828737, 0.023126319, -0.05401773, 0.015008968, 0.033097796, 0.040793538, -0.047428463, 0.009538135, 0.004465682, -0.06873861, 0.03159628, 0.047735754, -0.013752873, 0.020772837, 0.0025862542, -0.06725181, -0.011201582, -0.010468992, 0.036706224, 0.02679363, 0.011462416, -0.045816537, -0.018527921, -0.014467751, -0.044741005, -0.008845396, -0.009757106, 0.025823498, 0.009442206, 0.0006316128, 0.028649826, -0.030553866, -0.00084822654, -0.0031144768, -0.051294502, -0.041671723, -0.035359275, 0.02389778, 0.029905003, -0.020689458, 0.019625537, 0.017297357, -0.012656148, 0.023230517, -0.014394146, 0.023261568, -0.0007905511, 0.005820682, -0.037081603, -0.02640675, -0.025298553, 0.04814242, -0.02065139, 0.0014122733, -0.0067954725, -0.008186585, -0.086035505, -0.04184193, 0.06261293, -0.0075214044, -0.014170345, 0.023959424, 0.044963654, 0.0011291682, -0.046109114, 0.004281902, 0.012065506, -0.0032423416, 0.0071542915, 0.016146839, 0.020368017, -0.060599867, -0.084953524, 0.013545402, -0.02831723, -0.028453397, -0.035331443, -0.05548831, 0.025709813, -0.006684147, 0.033843957, -0.044813685, 0.013081239, -0.0063586803, -0.02545496, -0.006416413, 0.014127333, 0.0025809638, -0.0141977165, 0.012719545, -0.02218787, 6.35983e-05, 0.051776607, 0.002142101, 0.050786175, -0.016274955, 0.03682215, 0.025103733, -0.017890789, -0.016621122, -0.0339884, 0.01490368, 0.016849754, -0.041648492, -0.03701674, -0.05760971, -0.005564449, -0.03370227, 0.02829331, -0.0346743, -0.027284017, 0.042936787, -0.01771598, 0.029731343, 0.0050961445, 0.012413745, -0.00423475, -0.0012588553, -0.0070627467, 0.014106172, -0.03657742, 0.01829607, -3.6801912e-06, -0.02004485, 0.038636487, 0.0011224583, 0.012350491, 0.018843498, -0.0044741924, 0.0077592228, 0.0041172137, 0.050161004, -0.0071473913, -0.019458089, 0.041209396, 0.009404728, 0.064475104, -0.021118317, -0.0570908, 0.075605616, -0.036522217, -0.027606493, -0.029910753, 0.010038641, 0.021299334, 0.03446683, -0.02595446, -0.020671632, 0.009846351, 0.015293034, 0.013417057, -0.0015368249, 0.0007280453, 0.015685894, 0.050000913, 0.02539884, 0.012413284, -0.040368017, 0.035883013, 0.01850998, -0.027100006, 0.016728077, 0.0042699417, -0.034833927, 0.013444658, -0.035863463, 0.015061181, 0.040628906, 0.044953536, -0.015691875, 0.028446956, -0.022222374, -0.015598604, -0.046751652, 0.041535556, 0.032626044, 0.02174832, -0.034974694, -0.022324497, -0.008508141, -0.052259862, -0.011404911, -0.006146494, 0.030364335, -0.032295514, -0.022433525, 0.039433245, 0.02506118, 0.025853341, 0.016400771, -0.02560746, 0.03777348, -0.029603684, -0.059247393, -0.0035448433, 0.0067761517, 0.023477778, 0.00346628, -0.02237188, -0.0030294873, 0.0400828, 0.069993556, 0.033014074, 0.024202317, 0.06450271, 0.032994293, 0.036529575, 0.03622596, 0.035941206, -0.034756184, 0.00089865667, -0.008338623, -0.03569601, -0.029833468, 0.0026097156, 0.018093659, -0.008057318, 0.049450725, 0.06332873, -0.00090302684, -0.00035335583, -0.009548255, 0.012779463, -0.0061969813, -0.011703467, 0.0031323025, -0.051806048, -0.0358745, 0.043915723, -0.014366545, -0.054054644, -0.04084368, -0.01100653, -0.015625631, -0.033841196, -0.028304808, -0.025050601, 0.02140399, 0.02603827, -0.009568957, -0.032745417, -0.053034313, 0.005467384, 0.0113897305, -0.013737807, -0.042131748, 0.016306926, -0.03241512, 0.0031520836, -0.08032569, -0.009903854, 0.023658108, 0.019529393, 0.00520333, -0.008273414, 0.024177935, 0.026774079, 0.013063298, -0.012682398, -0.01617904, 0.044606674, -0.028254895, 0.011233323, 0.024259819, -0.017616155, -0.057591308, -0.007732081, -0.00057917007, -0.015177107, 0.053526998, -0.034196105, 0.020259911, 0.0005213221, 0.005490385, 0.009193117, 0.012856747, -0.011317047, -0.0204453, 0.0064807017, -0.015992269, -0.10287973, -0.04542805, 0.004302833, -0.035178944, -0.06607967, 0.036331765, 0.026406292, -0.02770002, -0.07619099, 0.048977822, -0.032488268, -0.02073684, -0.0008450638, -0.06462876, 0.0050933845, -0.020160086, -0.045312352, 0.024768375, -0.030240934, 0.027862726, 0.007017894, 0.042844784, -0.014717083, -0.0046577416, 0.0071800523, 0.014465451, 0.039367, 0.0017460205, -0.0068727564, 0.01562885, 0.024846809, 0.017889408, -0.06612935, -0.06187873, -0.02100469, 0.0018953559, 0.020742476, 0.050017014, 0.005644953, 0.012642146, -0.0059791603, -0.005281534, 0.041462872, -0.0033779554, -0.01600423, 0.034648273, 0.006084276, 0.006048394, -0.030683592, -0.010746159, 0.002195349, 0.013914342, -0.0300506, 0.0033245925, 0.02349802, 0.01445303, 0.037066884, 0.049480166, 0.019056719, 0.0008903762, -0.022975434, 0.0015126736, -0.004782063, -0.0401058, -0.006026773, 0.060684506, 0.003626368, 0.001907259, 0.009433709, 0.032178555, 0.046142235, -0.061002843, -0.021269664, -0.056408126, -0.060645867, 0.013140122, -0.010871284, 0.002677339, 0.010993191, 0.01848117, -0.028562423, 0.045177564, 0.03271414, 0.028246846, 0.049441062, -0.015127425, 0.06603551, -0.046144076, -0.056367643, 0.043459374, 0.005192692, 0.011230678, 0.017404543, 0.000732818, 0.03990086, 0.01502622, -0.018030636, 0.031926576, 0.026461149, -0.056105893, 0.0040422874, -0.009396448, 0.010907856, -0.0013000275, -0.03837933, 0.027788661, 0.028440056, -0.0014959975, -0.055215746, -0.009980678, -0.029919952, -0.023539536, 0.030560767, -0.004987579, 0.0003781396, -0.011854815, -0.026293125, 0.057796482, -0.036720484, -0.03145816, 0.03872826, -0.007849847, 0.05102585, 0.027104607, -0.042082064, 0.038860977, 0.0024362865, -0.024015088, -0.028647527, -0.0086611, -0.010913607, -0.06375195, 0.011508417, -0.012636626, 0.040398836, 0.043182444, 0.062305633, 0.010452663, -0.08963473, -0.02539884, -0.019213816, -0.014922715, -0.04638697, -0.019123537, -0.0017572913, 0.014374826, 0.04508602, 0.004180697, 0.008144722, 0.06782592, 0.03507866, -0.024837034, 0.014031649, -0.025954546, -0.055795375, 0.017420644, -0.026345221, 0.057716437, 0.01947005, 0.018040296, -0.043397732, -0.017565552, -0.019924555, 0.009491673, 0.030111322, 0.013732633, -0.0051554875, 0.04107277, 0.021436654, 0.0053850394, 0.029971017, 0.054430947, -0.035404358, 0.055125926, 0.02178926, -0.020171989, -0.026846074, 0.020545125, -0.028044261, 0.05130738, 0.04031281, -0.0048905136, -0.0033406934, -0.015225468, 0.09293954, 0.0043288246, 0.031171218, 0.032115072, 0.0013325167, 0.019873347, 0.025993187, -0.009473732, 0.0067112884, 0.0030619188, -0.027028244, 0.0053820494, -0.013273529, -0.039755262, 0.006529349, 0.009972858, 0.043665465, -0.01657052, -0.049779586, -0.066162474, 0.03892705, -0.0063111535, -0.039792985, -0.0072513563, 0.016885636, -0.005036341, 0.0005639893, 0.027184736, -0.010733277, 0.015652543, -0.064182535, 0.017171541, 0.0070289345, 0.007115649, -0.010575949, 0.058200378, 0.004545036, -0.033578984, -0.0062912866, 0.010342947, 0.009700652, 0.036858033, 0.030779278, -0.00078388065, 0.03352815, 0.03411537, -0.018225687, 0.0012340716, -0.009329917, 0.040978238, 0.050670706, 0.022721497, -0.016156038, 0.015356057, 0.04030729, -0.025720106, 0.00095684966, -0.008549084, -0.023015914, 0.032600973, 0.020667952, -0.041843772, 0.007618455, 0.023001654], [-0.04351483, -0.06292546, -0.036713585, -0.029353814, -0.014061016, 0.008530686, 0.020467585, -0.036991958, 0.057777625, 0.03583332, -0.0151015725, 0.033241015, -0.08317444, -0.038678087, -0.030087784, 0.043735627, -0.020675112, -0.06911028, 0.010103279, 0.015810635, -0.009110684, -0.024506304, -0.010154794, 0.020840423, -0.0029308673, 0.06399987, 0.007467609, 0.022513174, 0.03405937, -0.020176776, -0.022858422, -0.0381531, 0.019255446, -0.005359324, 0.030306805, -0.002443922, 0.022144517, 0.00974831, -0.015122472, -0.03246441, -0.066963546, 0.028105102, -0.020158282, 0.04895702, -0.002917492, 0.05108035, 0.039921157, 0.028357351, -0.022265729, -0.029957583, 0.014874611, -0.018459616, -0.020088896, 0.023725938, -0.02299803, 0.04579208, 0.021610131, 0.02159571, 0.02159362, -0.035098933, 0.017099513, -0.02362876, -0.054070987, 0.013867491, 0.017573291, 0.017809188, 0.005559118, -0.0026065158, 0.0017018006, -0.058000408, -0.0046362206, 0.005577509, -0.0061225533, -0.021292571, 0.055629633, 0.021795085, -0.07466815, 0.0052636066, -0.032608613, -0.037703358, -0.0028638209, 0.025147693, -0.0048700795, -0.03925197, -0.036446914, -0.007542009, -0.016601281, -0.011853669, 0.05873438, 0.012866222, -0.06756878, 0.0103644105, 0.02183085, -0.0020940737, 0.021480557, 0.02797783, -0.007460085, 0.07383511, 0.018060863, 0.017847694, 0.033360977, -0.039559186, -0.021990908, -0.041229427, 0.0035009903, -0.0030290922, 0.008271799, -0.03037201, -0.0091646025, -0.0010683538, -0.03641515, 0.007946195, 0.01317887, -0.04412811, 0.005696633, -0.0122380005, 0.04088376, -0.009639427, -0.030094473, 0.007340544, -0.012384085, 0.008381311, 0.018626805, 0.030076917, -0.03019813, -0.009810694, 0.0059212963, 0.005289939, -0.07438016, 0.014871059, 0.04698395, 0.020459538, 0.048186265, -0.039901927, -0.030185591, 0.014761339, 0.00938446, 0.05098756, -0.009760641, 0.04994512, -0.00085685647, 0.024194283, 0.0037321195, -0.0007621843, 0.025329148, -0.04096568, 0.025060128, -0.039447166, -0.03580323, 0.024512367, -0.007173718, -0.013562575, 0.0101247, 0.025092755, 0.016174108, -0.050768957, 0.013545439, 0.018475708, -0.023854077, 0.012863506, -0.01477192, -0.014469067, 0.01783599, 0.0048890454, -0.0015931261, -0.05103354, 0.024736194, -8.025193e-05, -0.037824363, 0.037610985, 0.0563402, 0.0042067543, 0.02068535, -0.00033772687, -0.051501673, -0.0078529855, 0.020453373, -0.03063032, 0.016407758, 0.028412107, 0.011032969, 0.004172473, 0.019926721, -0.008826876, 0.017603595, 0.033286575, -0.026907906, -0.018500578, -0.025176534, 0.018192528, 0.044755492, -0.03616603, 0.019920032, -0.026940405, -0.024951244, 0.03874705, 0.0022940766, -0.004046662, 0.032497015, 0.056005813, 0.016993867, 0.020526102, 0.032767866, -0.031541515, -0.042387333, -0.024617277, 0.0150092, -0.01607212, 0.0241865, -0.033852104, 0.009057391, 0.04581549, 0.03032018, 0.05019674, 0.023430217, 0.023617472, 0.024143394, -0.03972303, 0.020688279, 0.06138583, -0.039437134, -0.0010181962, 0.023569405, -0.033906437, -0.02013017, -0.0037087258, -0.008062811, 0.005689945, 0.0007105639, -0.0053864922, 0.06873285, 0.010371725, -0.00563101, -0.060561784, -0.016770145, 0.028807098, -0.035438333, 0.029185787, -0.018427012, 0.022355178, -0.010408977, 0.0045375256, 0.04670244, -0.02982425, -0.01044738, 0.021834794, -0.0625965, 0.012988272, -0.014965939, 0.001576616, 0.07492186, -0.018438715, -0.010543097, -0.034275096, -0.023952171, -0.0043744617, 0.002109957, 0.0031539632, 0.001635551, 0.043347113, -0.01794383, -0.042861216, -0.021009287, -0.062467765, 0.08226826, 0.017033942, 0.01381608, -0.02327891, 0.012462717, -0.02690655, -0.035259016, -0.056336433, 0.0118141705, 0.034710214, -0.028540429, 0.028478567, 0.020795595, 0.021481916, 0.044947345, 0.0266311, -0.06302786, -0.034932576, -0.010101711, 0.01588821, 0.01037554, 0.0064263716, -0.003551357, -0.05052862, -0.0037087258, -0.03782039, -0.007674613, 0.0043373657, 0.032925025, 0.04090257, 0.03343914, -0.05503276, 0.028211895, -0.04739545, -0.029828534, -0.036223713, 0.026991814, -0.0035735094, -5.9144e-05, 0.01441358, -0.011372367, -0.02216834, -0.07232705, 0.029306164, 0.0021626223, 0.016011931, -0.021482019, -0.017456675, -0.055298593, 0.019329429, 0.013197491, -0.048908114, 0.02141556, 0.08525785, -0.017955324, 0.010384265, -0.034033503, -0.03478639, -0.023822283, -0.06276286, 0.0023933465, 0.04123444, 0.025449054, -0.018701207, -0.027933104, -0.0056953784, 0.048666522, 0.036135938, -0.008078694, 0.001971188, 0.02806644, 0.013341882, -0.019385021, 0.02327217, 0.021732388, 0.03287027, 0.0054065557, -0.03624545, -0.03683062, -0.02209436, 0.03527699, -0.09325775, -0.024721773, -0.07266812, -0.008235227, 0.02400327, 0.010635052, -0.030044314, 0.012577713, 0.012188785, -0.016426567, -0.012158168, 0.0038554363, -0.010627006, -0.02228412, -0.015178063, 0.018466301, -0.0031039105, -0.019352626, 0.040915944, 0.0051327795, -0.03447907, 0.04950541, 0.003543206, 0.06071727, -0.04615719, 0.04729848, 0.014647649, -0.020521503, 0.02950094, 0.00083386764, 0.03922313, -0.061847482, -0.00708683, 0.021765409, 0.002325634, 0.018156162, -0.010471646, 0.04244909, 0.037995946, 0.054977585, 0.025508827, 0.00938237, 0.046041198, -0.007394881, 0.043563418, 0.014890912, -0.006211165, 0.042183463, -0.003307884, -0.015996885, -0.0021738033, 0.029156946, 0.050794873, 0.0149887195, 0.018408203, 0.0016956354, 0.015038876, -0.023804165, -0.015814645, 0.009968377, -0.043454744, -0.053718634, 0.03741391, -0.02121535, 0.06051873, 0.042356297, -0.008280578, -0.03161184, 0.02509555, 0.023784874, -0.017305994, -0.043339383, 0.05157691, 0.0052525303, 0.011154181, 0.014541221, 0.044221215, -0.026942076, 0.042147726, 0.038962312, -0.014799375, -0.009602853, -0.033158556, -0.052234806, 0.068026885, -0.007286206, -0.004808846, -0.015152567, 0.082137845, 0.035476368, -0.030761253, 0.0069898595, 0.0015578069, -0.07382508, -0.030286742, -0.025869751, -0.041781157, 0.0113949375, -0.0040874146, -0.019491605, -0.013981809, -0.04578085, 0.022380255, 0.026781574, -0.014620897, 0.00879093, -0.011877077, -0.02749966, -0.025840128, -0.051623307, 0.050043765, 0.0432491, -0.069893576, -0.029197907, -0.03052896, -0.0491775, -0.015921649, 0.040414426, -0.020477615, 0.009933266, 0.01640316, 0.022504397, -0.043483168, -0.0035325475, 0.012659323, -0.000516674, -0.038960066, 0.007632711, -0.048942808, -0.0038646318, -0.012582142, 0.04914427, 0.023788845, 0.009727307, 0.0072791004, 0.028564671, 0.01560064, -0.007859673, 0.00051400944, 0.034961835, 0.014411243, -0.024696069, -0.0062613217, 0.028231122, -0.0021525908, 0.030652057, 0.023164384, 0.010752295, 0.04829076, -0.04985567, -0.014980255, 0.020245638, 0.06473823, -0.052698765, -0.0007427483, 0.06488703, 0.03725194, -0.05799623, 0.05275979, -0.0105578825, -0.06607576, 0.018562123, 0.05176291, -0.020046994, -0.012429017, -0.024564091, -0.029807739, -0.011553769, -0.06324259, 0.048497245, 0.02512345, -0.0015264585, -0.06410261, -0.013807511, -0.029148169, 0.0057348777, -0.0074030315, -0.01458354, 0.044505544, 0.039963055, -0.037875567, 0.048465475, -0.044268135, 0.024593035, 0.009152691, -0.004437681, -0.056685444, -0.045551326, -0.0035561635, -0.012222536, 0.009566698, 0.033050418, 0.014681088, 0.005047512, -0.013760175, -0.03312064, -0.0063407384, 0.023584662, 0.0129331, -0.034728184, 0.0060397936, -0.039330132, 0.026580108, 0.024950199, -0.025836863, -0.007404076, -0.00802373, -0.09508515, -0.073798336, 0.024411634, 0.002270304, -0.0131588075, 0.016503789, 0.030720605, 0.022888519, -0.020959128, -0.024220303, 0.040313214, 0.026352726, 0.029742952, 0.019021379, 0.0023205136, -0.06604065, -0.05948439, 0.023939315, -0.022223094, -0.02308246, -0.056861836, -0.050679095, 0.01225472, -0.0059691546, 0.021253387, -0.020310842, 0.017822616, -0.03257434, 0.017311115, -0.003983547, -0.0032236222, -0.014881195, 0.008982364, 0.033511866, 0.008793856, 0.009362738, 0.018240595, 5.6348763e-05, 0.002136394, -0.0026127854, 0.05031161, 0.03448952, -0.014117652, -0.0052373786, -0.049758703, -1.1285427e-05, 0.005237274, -0.03782332, -0.014844098, -0.06589854, 0.013202174, 0.0026976352, 0.011886481, -0.011857327, -0.008102679, 0.03401929, 0.0056038415, 0.013785567, -0.00804233, -0.00010073289, -0.0349564, -0.016375363, -0.027792245, 0.0008493329, -0.035046685, -0.010523244, -0.02525804, 0.011915321, 0.03327226, -0.007863853, -0.020071343, 0.031353425, -0.027632996, 0.024327934, 0.016582053, 0.07241733, 0.017686354, -0.022106271, 0.027501332, -0.02167847, 0.0867958, -0.014481607, -0.031221343, 0.06484105, -0.0027620038, -0.013655576, -0.01202107, -0.006842313, 0.014861927, 0.029941909, 0.0013870626, 0.004918252, 0.003806115, 0.0021396333, -0.009139733, -0.015369498, -0.04604287, 0.019391708, 0.04552165, -0.007996771, 0.0037802, -0.042941887, 0.04521527, -0.0063211196, 0.00951803, -0.032298055, -0.020931542, -0.02699056, 0.03295345, -0.034078646, 0.044223826, 0.026933508, 0.01184531, -0.0023845166, 0.04285871, 0.008960211, -0.023100851, -0.012379487, 0.046138585, 0.024053007, 0.04348484, -0.021311903, -0.025172146, -0.0064375, -0.015176653, -0.02393639, -0.0067461776, 0.009666177, -0.036489546, -0.024202643, 0.021294765, -0.0040205377, 0.043722253, 0.004685333, 0.006420154, 0.023605352, -0.039550822, -0.04309152, -0.038057804, 0.0042784307, -0.008939312, 0.02072966, -0.013658711, -0.00669602, 0.02228245, 0.033337988, 0.05935466, 0.021393511, 0.03085859, 0.049662568, 0.016645588, 0.021079713, -0.01782805, -0.043876905, 0.029022776, -0.0025052605, -0.045212764, -0.06964864, -0.020448254, 0.0037442541, 0.0022407451, 0.028753597, 0.02897429, -0.009028969, 0.04958106, -0.018734958, 0.015725197, 0.008144108, -0.007907949, 0.030685076, -0.06836796, -0.022604294, 0.0075069987, -0.0025935585, -0.037175868, -0.049685974, -0.019789308, 0.0075041824, -0.023306524, -0.01099535, 0.019132562, 0.006682436, 0.033796094, 0.008294789, -0.03226796, -0.036171883, 0.03591859, 0.047937147, 0.027697781, -0.02168432, 0.011544757, -0.00060763664, -0.0009222963, -0.055407267, -0.036719855, -0.016194796, 0.038843185, 0.014441089, 0.013332686, 0.06419486, -0.0034031312, -0.009011831, -0.017026573, -0.05562545, 0.04299497, -0.03873472, 0.012916381, 0.022857169, 0.00311227, -0.068091266, 0.014607941, -0.0017621986, -0.02042934, 0.012116369, -0.044994578, 0.01054247, 0.024324263, 0.022791548, 0.01920926, 0.0038744542, 0.014110127, -0.037968356, 0.010994306, -0.0053738486, -0.06561933, -0.018937156, -0.017094705, -0.04536658, -0.051116508, -0.023735762, 0.008055496, 0.0078074257, -0.038674742, 0.07441694, -0.028187236, 0.007671948, 0.015905764, -0.06758884, 0.002282347, -0.02317358, -0.049904995, 0.029424872, -0.023373792, 0.029506689, 0.015180884, 0.025045287, -0.02812579, -0.03683229, 0.012643859, 0.009223094, 0.034207802, 0.012211668, 0.009497105, -0.010837981, -0.006599676, -0.022677857, -0.03958719, -0.055627957, -0.031874854, -0.0052070753, -0.0010783853, 0.01883914, 0.041716788, -0.022660302, -0.012385129, 0.00012163183, 0.00878884, 0.008134285, 0.021398842, 0.050418276, 0.026458895, 0.0028481074, -0.011052822, 0.013959655, -0.006227048, -0.025095029, -0.016274003, -0.026330156, 0.038734928, 0.036177736, 0.012207906, 0.038622495, 0.0005345949, -0.0121297445, -0.02079946, 0.012890152, 0.020553898, -0.10816956, -0.006034673, 0.06508431, 0.007012012, -0.005174734, 0.024731804, -0.041083973, 0.005107387, -0.053061567, -0.012003514, -0.05142393, -0.0599298, -0.015264585, -0.008910054, 0.009398671, 0.0014997079, 0.026846673, 0.0013751502, 0.020648362, 0.03706636, 0.01410344, 0.0048694527, -0.051929686, 0.03945887, -0.0023285598, -0.006288595, 0.022266565, -0.012417732, 0.004455654, 0.028517438, -0.032399, 0.020123169, 0.02184608, -0.008566267, 0.018142788, 0.042894237, -0.068307765, 0.011311341, -0.034436435, -0.003348787, 0.009404522, -0.014916618, 0.012674789, 0.0074136895, -0.0055049895, -0.035574593, -0.015013798, -0.02412323, 0.00461783, 0.028324751, -0.0006718094, -0.022250708, -0.016242655, 0.017453957, 0.0145169785, -0.028640741, -0.05772789, 0.06626301, 0.004041019, 0.05994265, 0.034172274, -0.027913667, 0.069718026, 0.026070591, -0.035096843, 0.0016008588, 0.003734118, -0.020778561, -0.052412033, 0.041442595, -0.00980765, 0.03355659, 0.060430747, 0.028830504, 0.026131196, -0.08733081, -0.0015518508, -0.029622367, -0.041340403, -0.038053624, -0.0072820266, -0.0041947565, -0.00764316, 0.006536352, -0.013383681, -0.02812412, 0.07442029, -0.0042792666, 0.010649264, 0.01028186, 0.0041273315, -0.03560636, -0.015000266, -0.02142225, 0.077988155, 0.010907156, 0.043016706, -0.02037312, -0.0044926447, -0.07967345, -0.010283114, -0.0028231856, 0.03389139, -0.017254164, 0.028171562, -0.013433002, 0.009404522, 0.013038952, 0.061046638, -0.04161313, 0.048788786, 0.013993251, -0.021448372, -0.039048832, 0.027421707, -0.04995683, 0.021372091, 0.0014094244, 0.0023990416, 0.027414393, -0.028236974, 0.06856503, 0.028651193, 0.04257365, 0.019327339, -0.007912861, 0.02441665, 0.039631914, -0.0296464, -0.010672253, 0.013387024, -0.030963033, 0.018132338, -0.0070787324, -0.020499352, 0.02265612, -0.002306825, 0.06348261, -0.0036273245, -0.043252446, -0.04394629, 0.07128795, -0.0144732995, -0.035522345, -0.034985658, -0.017538493, -0.03036804, 0.0004096192, 0.0011995991, -0.0046809446, -0.019053563, -0.08228163, -0.021367075, 0.0061995657, 0.010606003, 0.009987394, 0.016517842, -0.000945259, -0.051166452, -0.027513871, -0.013291307, 0.0259197, 0.060124993, 0.019785443, 0.023086641, 0.006633323, 0.030068977, -0.031801708, -0.012365693, -0.051207002, 0.016726047, 0.05706664, -0.0036343257, -0.00865122, 0.0191242, 0.01891375, 0.004524359, 0.0015820496, -0.019902479, -0.008984036, 0.023485392, 0.03704295, -0.0434397, 0.0056661204, 0.01815355], [-0.050766326, -0.076353386, -0.04335692, -0.04982638, -0.003480367, 0.026202708, 0.009355189, -0.036573384, 0.044673983, 0.038261883, 0.021011692, 0.024814084, -0.06379726, -0.023483388, -0.035020143, 0.047339916, -0.033509888, -0.05911171, 0.03349058, 0.039196152, -0.012018851, -0.014400812, -0.028711323, 0.024461957, 0.0071481555, 0.041768946, 0.020179085, 0.015791, 0.031060344, -0.009200425, -0.017994767, -0.03676904, 0.005793323, 0.005147853, 0.051157642, 0.0006159363, 0.029466689, -0.0053807106, -0.020911876, -0.049965527, -0.07228804, 0.024714125, -0.022990413, 0.045762733, 0.0026466234, 0.056090243, 0.030873489, 0.021908335, -0.025846608, -0.03639732, 0.047348436, 0.00039074614, -0.037246965, -0.0034173247, -0.028184837, 0.03485819, 0.036686976, 0.039826572, 0.03538297, -0.014861984, 0.035969373, -0.004259303, -0.061488822, -0.015210702, 0.02230547, 0.009273405, 0.020479528, -0.017887995, 0.0132603785, -0.03029532, -0.0177054, 0.025153145, 0.012332926, -0.021293392, 0.051887453, 0.019659983, -0.07162013, 0.0061207428, -0.013213808, -0.0201416, 0.0013323989, 0.012281243, -0.0017056807, -0.054699913, -0.068598665, 0.012027548, -0.013844226, -0.0014741011, 0.045844518, -0.0007133389, -0.054622676, 0.016796404, 0.03283105, 0.025435982, 0.0017540869, 0.011745102, -0.006143177, 0.058989037, 0.02720002, 0.014319028, 0.02702732, -0.032795414, -0.04449508, -0.017890267, 0.0034714218, -0.009334743, 0.006997082, -0.027267037, 0.0030539464, -0.015889965, 0.0049144276, -0.009387066, 0.018803913, -0.074037306, 0.00705842, -0.0043498906, 0.02887773, -0.017298467, -0.044588223, -0.02377872, -0.012094956, -0.0061717867, 0.0035584592, 0.022814631, -0.016830482, -0.020041643, -0.0023194873, 0.012353939, -0.0638904, 0.0057816794, 0.033943657, 0.028831158, 0.04956569, -0.0441918, -0.050836187, 0.002601472, -0.021002604, 0.07208812, -0.026186807, 0.02361146, -0.0146529805, -0.009374499, 0.010364854, 0.0039445907, 0.025932368, -0.059468664, 0.03616219, -0.03841353, -0.015169881, -0.0032255014, -0.002881327, -0.0015448104, -0.0061974153, 0.012761724, 0.01935102, -0.052564442, 0.0013085452, 0.025212212, -0.03453503, 0.020208618, -0.018538859, 0.010923853, 0.018751554, 0.020530075, -0.016306268, -0.04860814, 0.01217674, 0.004736661, -0.009509812, 0.04351367, 0.055501856, -0.003915803, 0.016272759, 0.03487466, -0.061836712, 0.00953182, 0.031716317, -0.03795463, 0.03577826, 0.038645104, 0.010748358, 0.019779252, 0.009173447, -0.011951834, -0.005232193, 0.033405956, -0.048031107, -0.040195167, 0.0040051476, 0.009687153, 0.042332344, -0.041806426, 0.010866349, -0.017801384, -0.017783493, 0.041140795, -0.026632074, 0.024804428, 0.028351812, 0.030839412, 0.005252355, 0.0058450056, 0.037759256, -0.042072795, -0.041768946, -0.022939013, 0.032884013, 0.019799128, 0.051546685, -0.046229586, -0.039074045, 0.053600375, 0.027951978, 0.047721006, 0.032384224, 0.026533252, 0.009518189, -0.037379865, 0.022420196, 0.074155435, -0.043452334, 4.373176e-05, 0.018778533, -0.02717503, -0.021692656, -0.00592821, 0.0019230617, 0.011036874, 0.0036131237, 0.011302744, 0.07694064, 0.0047627864, -0.009625531, -0.058636624, 0.0017258959, 0.008661444, -0.059884116, 0.033540558, -0.049206752, 0.041030616, -0.015556012, 0.011726927, 0.02650869, -0.025881253, -0.014372416, 0.015369941, -0.06760817, 0.0063530323, -0.013794389, 0.0017200214, 0.054910056, -0.0072702635, -0.039533906, 0.00020289833, -0.011819219, 0.0023756428, 0.0054908916, -0.0014800645, 0.008991704, 0.020921104, -0.01240619, -0.058857273, 3.4644643e-05, -0.04010827, 0.04627161, 0.021530794, 0.026758159, -0.014043574, 0.009783988, -0.03215591, -0.022327052, -0.06484341, 0.030764442, 0.022185635, -0.016752532, 0.023207366, 0.0147296535, 0.01721725, 0.05936615, 0.034771863, -0.047446124, -0.018447988, 0.0067971656, 0.0046810023, 0.018016351, 0.00505755, 0.0061871926, -0.043097936, 0.007346084, -0.029513258, -0.011969441, 0.017265031, 0.026530415, 0.039663006, 0.037995517, -0.055031598, 0.055458687, -0.027208539, -0.039300654, -0.03873839, 0.031141559, -0.009415959, 0.009516486, 0.019051146, -0.013907269, -0.020566424, -0.063237265, 0.036059678, 0.03051909, 0.01601548, -0.023805982, -0.017666496, -0.064820126, 0.010684748, 0.02335844, -0.030730082, 0.041688297, 0.10040358, -0.006966129, -0.0028397248, -0.028218912, -0.02737949, -0.007435535, -0.06922568, 0.002775831, 0.05486689, 0.027234666, -0.01629292, -0.03614572, -0.0066392766, 0.05683312, 0.029402794, -0.017133763, -0.0050348323, 0.029235536, 0.016433487, -0.025649104, 0.011722384, 0.025824457, 0.017942516, 0.02043466, -0.06776549, -0.021489335, -0.0012006357, 0.04371359, -0.0828352, -0.02546211, -0.07064327, -0.000918651, 8.97353e-05, 0.022492891, -0.033195816, 0.009471902, 0.014559269, -0.007235619, 0.009486953, 0.0006542726, -0.0085475715, -0.0045864396, -0.014723404, 0.011513811, -0.019092606, -0.045179453, 0.044255406, 0.0036910742, -0.030382784, 0.06664039, -0.022447458, 0.050319925, -0.038013693, 0.06876961, 0.014061749, -0.022651918, 0.017329136, 0.0053270394, 0.04285031, -0.051760234, -0.0036073024, 0.030131752, 0.015834305, 0.009630075, -0.015494106, 0.048674017, 0.011062716, 0.060717862, 0.03693005, 0.031626586, 0.035915703, -0.01818503, 0.049273204, 0.016129637, 0.0059509273, 0.035688527, -0.0022024906, 0.0075477045, -0.01938538, 0.04946119, 0.036674906, 0.004468094, -0.00033167985, 0.0071785403, 0.018821837, -0.021756835, -0.023113089, -0.013929418, -0.043059316, -0.057548728, 0.01807712, -0.013752929, 0.04941803, 0.06149708, -0.024412546, -0.013955544, 0.03369504, 0.02775263, -0.024142206, -0.044284374, 0.044453055, -0.0057816794, 0.014248604, 0.023249963, 0.04884781, -0.04753188, 0.033756945, 0.019670205, -0.003024875, -0.021367794, -0.030332804, -0.051628467, 0.04745521, -0.013032066, 0.005408753, -0.019073864, 0.088276826, 0.04320471, 0.006337698, 0.017618788, -0.03128695, -0.06716063, -0.011172614, -0.031258557, -0.030062463, 0.010869615, 0.013234964, -0.037568707, -0.008920809, -0.030850416, 0.048638806, 0.03538297, -0.011876865, 0.0061071124, -0.01624209, -0.026309483, -0.031477217, -0.05152851, 0.055195164, 0.07764944, -0.055368386, -0.018948916, -0.057866774, -0.042242613, -0.012549312, 0.033422, -0.017215263, 0.013522379, 0.028883409, 0.032845393, -0.033052124, 0.0020599363, 0.01793769, 0.008175568, -0.03460659, -0.020041643, -0.049441315, -0.008662296, -0.011183759, 0.06868045, 0.018332696, -0.009627235, 0.026407454, 0.035322484, 0.013932116, 0.00646293, 0.016563848, 0.028784588, 0.0067926217, -0.033663236, -0.012130168, 0.018020397, 0.0031929156, 0.008492977, 0.011683764, 0.015189262, 0.056308337, -0.03581461, -0.013565933, 0.018408231, 0.053110234, -0.047268923, 0.004571105, 0.026991015, 0.050651602, -0.05312784, 0.026541203, -0.014482596, -0.079407796, 0.028787995, 0.06998218, -0.028576719, -0.010111691, -0.03278633, -0.0153560955, -0.016517542, -0.029162839, 0.07066552, 0.026585504, 0.0016975875, -0.034356695, -0.027763989, -0.036645513, -0.014556429, -0.002942523, -0.0017254167, 0.033817716, 0.020460786, -0.025911354, 0.03464294, -0.033789318, 0.0070851133, -0.0047786892, 0.009388698, -0.048721723, -0.046870228, -0.015765868, 0.004218127, 0.011344132, 0.02698193, 0.015370294, 0.006057417, -0.02045894, -0.021604626, 0.0016020307, 0.016827641, 0.009345818, -0.020516444, -0.006757693, -0.014263654, 0.005576084, 0.026521327, -0.031963944, -0.0023808253, 0.011642872, -0.08531896, -0.06372343, 0.064259104, -0.0067957453, -0.007308884, 0.028697053, 0.035234172, 0.042918466, 0.0056158397, -0.008199989, 0.02116447, 0.039104145, 0.01372439, 0.049961835, -0.0030067007, -0.07439398, -0.057603247, 0.020755406, -0.029669445, -0.029042434, -0.039161507, -0.0391422, 0.011707334, -0.018936278, 0.0069705304, -0.025453022, 0.007845592, -0.017424267, 0.006988847, 0.013657656, -0.00856461, -0.019037515, 0.026220884, 0.019875519, -0.006406987, -0.0032009378, 0.047162153, 0.010475461, 0.031607274, -0.016010368, 0.06343718, 0.023153981, -0.035435222, -0.0053261877, -0.035773825, 0.012031347, 0.0070794164, -0.013639766, -0.033005554, -0.07884553, -0.0068965554, -0.0018111765, 0.0067664967, -0.00449358, -0.007794477, 0.050033677, 0.0009298679, 0.013741136, -0.017344471, 0.0048865983, -0.042044967, -0.02048691, 0.0012636776, 0.0033488877, -0.038265858, -0.005219414, -0.023586754, 0.003725151, 0.0146291265, -0.011162391, 0.015686711, 0.03275083, -0.025109982, 0.0348332, 0.0019173822, 0.06915411, 0.01712922, -0.0063939244, 0.033776823, 0.0071947267, 0.07034339, -0.020016937, -0.06467303, 0.093516685, 0.0014096394, -0.038953215, -0.01995077, 0.010373373, 0.008140355, 0.042309627, 0.016614094, 0.0025421218, 0.002980575, 0.017009951, 0.0032128645, -0.0009954656, -0.030362338, 0.02263715, 0.040356606, -0.008192038, 0.012417548, -0.06520008, 0.04218241, -0.00014369008, -0.0061793476, -0.020950353, -0.019637266, -0.036163326, 0.03358145, -0.045871496, 0.0040290016, 0.018410504, 0.0019153944, -0.014438013, 0.05574493, -0.011177157, -0.0094949035, -0.011246588, 0.039329052, 0.013471656, 0.017473679, -0.014696144, -0.009809049, -0.0046855463, -0.041941598, -0.022836037, 0.004239141, 0.029354801, -0.029272452, -0.032021873, -0.0019798563, -0.028379925, 0.03151867, 0.005831659, -0.0011736583, 0.025139516, -0.045889385, -0.04250699, -0.021875253, 0.03244783, 0.0036552937, 0.000918367, -0.019793734, -0.007669529, 0.03977631, 0.015517392, 0.055825584, 0.01386013, 0.03482326, 0.033482626, -0.0027164808, 0.02556292, -0.009885082, -0.024832258, 0.036191724, -0.01944743, -0.043704502, -0.061224464, -0.02205089, 0.028387593, 0.007475292, 0.029470665, 0.03655748, 0.004425995, 0.04209388, -0.039622113, 0.007286166, -0.009553828, 0.0012222176, 0.027719121, -0.07114306, -0.026230538, 0.041336168, -0.014836995, -0.018453952, -0.03757013, -0.021480247, -0.002922077, -0.0058839098, -0.018921655, 0.019780388, 0.0242734, 0.024786254, 0.00965762, -0.029886398, -0.037636578, 0.006040663, 0.027884962, 0.011082877, -0.024128573, 0.02152781, -0.014510426, 0.012212357, -0.058034886, -0.027036453, -0.02204535, 0.039115503, 0.0024680048, -0.00053273235, 0.05603345, 0.010552133, -0.0031191537, -0.0042618588, -0.036664255, 0.025026496, -0.03816136, 0.01678107, 0.0039281915, -0.0033434918, -0.06780865, -0.0036825552, 0.0063013495, -0.007904135, 0.005954335, -0.03786262, 0.016669469, 0.009394946, 0.005908332, 0.00037257187, 0.009506263, 0.0029181014, -0.01789708, 0.020570008, 0.010247786, -0.09308845, -0.03481162, 0.0014823363, -0.051001456, -0.05777704, -0.044013463, 0.0197713, -0.005421886, -0.039085973, 0.043471646, -0.018728552, -0.0065370467, 0.017717043, -0.065141015, 0.015786598, 0.0015845664, -0.027899727, 0.02099579, -0.024744226, 0.042898018, 0.016629996, 0.04579908, -0.024248978, 0.0015030663, 0.0049107363, 0.00020446019, 0.037879232, 0.017434774, 0.012827321, -0.0048729675, 0.0013406251, 0.0021195705, -0.035167154, -0.048007254, -0.022615, 0.0066915276, 0.0006957326, 0.0048252605, 0.036181502, 0.010741259, -0.005053006, 0.018520685, 0.011004502, -0.0080491295, 0.035560455, 0.05208282, 0.003232743, 0.014034204, -0.0044367863, 0.014746549, 0.011093811, -0.0014459878, -0.015064172, -0.0025929527, 0.033792727, 0.024378471, 0.0054886206, 0.050677728, -0.007015824, 0.00053273235, -0.012424365, 0.0042016567, 0.009768689, -0.07736774, -0.018749567, 0.063237265, -0.00685396, 0.024862358, 0.029156022, -0.022206081, 0.014867096, -0.06555902, -0.013831447, -0.06652453, -0.031657252, -0.024952095, -0.016341481, -0.020927139, 0.008173296, 0.012508419, -0.0027759376, 0.05086957, 0.027580544, 0.009348374, 0.010538787, -0.039110962, 0.045917217, -0.017122405, 0.007317403, 0.0201416, -0.0067639495, -0.001909431, 0.04452007, -0.051955603, 0.013402365, 0.008060275, -0.025884872, 0.010307065, 0.024992844, -0.056342416, 0.0053148293, -0.025031323, -0.0051455814, 0.04336984, -0.018445717, 0.03669194, 0.028936798, -0.0166317, -0.021311568, -0.008763959, -0.027872466, 0.014126069, 0.035303175, -0.0082193, -0.006755705, -0.032007106, 0.007441215, 0.025076615, -0.02187639, -0.05826207, 0.047631696, 0.008424328, 0.056433283, 0.027048662, -0.054155823, 0.06500471, 0.01211746, -0.026294716, 0.011386161, 0.008546436, -0.04134412, -0.058457438, 0.009650521, -0.009566464, 0.041611057, 0.04065293, 0.025130428, 0.0061786734, -0.06547383, -0.028099647, -0.012723955, -0.050038222, -0.047113307, -0.030711055, -0.0043498906, 0.014879023, 0.03551814, -0.00017577897, -0.02833591, 0.048693758, -0.0064745722, 0.0043396675, 0.01890916, 0.0065279594, -0.031166548, 0.001227897, -6.81534e-06, 0.06851347, -0.0004708397, 0.04291101, -0.038272675, 0.030780273, -0.054622676, 0.020889016, -0.0038949666, 0.012282378, -0.037675764, 0.03433966, -0.021171853, 0.018154928, 0.0029770965, 0.051951062, -0.009785692, 0.026777469, 0.005721478, -0.0514649, -0.017376844, 0.042426627, -0.037551668, 0.036636107, 0.012771946, 0.0100406995, 0.03732875, -0.012415277, 0.08224752, 0.023033576, 0.044056848, 0.012390003, 0.0011719544, 0.020150688, 0.044292327, -0.020979887, 0.0036632451, 0.014093554, -0.033461045, 0.02826719, -0.0074344, -0.0001351709, 0.0033681977, -0.011490663, 0.0679353, -0.036610868, -0.060679242, -0.04912497, 0.05703531, -0.018543404, -0.02484873, -0.026034597, 0.013991891, -0.012924155, -0.00899852, 0.016409066, -0.015718728, -0.013429059, -0.05578355, 0.0066923797, -0.01040248, 0.016512431, -0.0020684912, 0.030924033, 0.0093158055, -0.036213875, -0.033437192, 0.004713624, 0.018304015, 0.062392164, 0.016320467, 0.025357606, 0.02692201, 0.019759942, -0.0054220287, -0.010802313, -0.051983718, 0.0240661, 0.058087707, 0.016674863, -0.021243414, -0.0002464881, 0.012842371, -0.014624583, 0.008996106, 0.009298963, 0.005471582, 0.023940017, 0.026108997, -0.046221636, -0.0024660171, -0.007257485], [-0.03346905, -0.07741813, -0.037291165, -0.061201368, -0.015184571, 0.010594849, 0.031065669, -0.030911626, 0.046450164, 0.0456592, 0.0036133928, 0.017409215, -0.07352304, -0.026631655, -0.039845265, 0.030793954, -0.02914154, -0.04672022, 0.02231175, 0.033608597, -0.015464371, -0.0045043794, -0.027988106, 0.03435766, -0.0047164285, 0.045812115, -0.0071136295, 0.017813552, 0.03546355, -0.010446033, -0.02097099, -0.03724077, 0.0033733814, 0.010078871, 0.039543178, 0.007002375, 0.024776466, -0.003067105, -0.032811508, -0.044583503, -0.06969474, 0.018973166, -0.0013369553, 0.032847643, 0.0072876434, 0.051616367, 0.031952377, 0.025343196, -0.0017344286, -0.034236897, 0.045787394, 0.0046660313, -0.024943821, 0.009222472, -0.03058642, 0.031742897, 0.025052223, 0.043133453, 0.040943544, -0.030791814, 0.029921746, -0.015106122, -0.057770547, 0.0025581098, 0.023451872, 0.028367037, 0.0020491742, -0.003098009, 0.030118583, -0.057487182, -0.013423755, 0.023774698, 0.0030230072, -0.018174415, 0.06919457, 0.0047069197, -0.07629727, 0.0090653375, -0.019603608, -0.03200135, -0.017429866, 0.024392305, 0.009396426, -0.041784074, -0.07535446, 0.02432384, -0.02376733, 0.007933774, 0.05052664, 0.0022783394, -0.059856806, 0.001516793, 0.024387551, 0.020064672, 0.0034041966, 0.019907834, -0.0031265358, 0.06570289, 0.035396036, 0.034701645, 0.036302, -0.053202454, -0.02304584, -0.015666911, -0.025978394, 0.010427016, 0.015688783, -0.03996888, 0.004095971, -0.010322893, -0.0045585805, 0.0025987902, 0.016042514, -0.07239718, 0.0031980902, -0.009000202, 0.03320518, -0.028355626, -0.049849607, -0.03138517, -0.0071916026, 0.018442567, 0.02397819, 0.024956185, -0.02012232, -0.018936556, -0.0060790577, 0.011262435, -0.05483205, 0.025154918, 0.04125306, 0.02321088, 0.054122917, -0.03363118, -0.053634163, 0.016100876, -2.2345983e-05, 0.06161786, -0.008849961, 0.04532431, -0.01910201, 0.011309921, 0.011157777, -0.0054153353, 0.02919764, -0.044118103, 0.025107376, -0.060100235, -0.012350197, -0.010858246, -0.021601435, -0.0075272685, -0.0063343733, -0.0028428056, 0.025242878, -0.05981211, 0.007402226, 0.008230453, -0.03389933, 0.018395616, -0.013282072, 0.00779542, 0.012731505, 0.023873592, -0.014458802, -0.04915831, 0.017030135, 0.0035452854, -0.02515088, 0.048982393, 0.058809873, -0.017708953, 0.013913465, 0.023753779, -0.05940418, -0.0028993615, 0.018512132, -0.033338305, 0.015144872, 0.04321808, 0.0038620513, 0.016806556, 0.0074085253, -0.00930734, -0.0145068215, 0.03295795, -0.03889342, -0.036073547, 0.005254634, 0.028971566, 0.043797173, -0.039830048, 0.020072399, -0.004357229, -0.025379332, 0.039698828, -0.03786646, 0.008338141, 0.021185596, 0.047416277, 0.0026853215, 0.0072410493, 0.028576232, -0.03262846, -0.039636068, -0.039603025, 0.029955503, 0.01126808, 0.04123642, -0.028674887, -0.0011482032, 0.038867746, 0.032999787, 0.048597284, 0.030857425, 0.021218223, 0.0057486375, -0.052196413, 0.020823365, 0.069129914, -0.041702356, 0.0014712691, 0.031050457, -0.0359365, -0.015116344, 0.0037134744, -0.0035380346, 0.0045110956, 0.0026510893, 0.005470011, 0.07865406, -0.011308018, -0.017019112, -0.059974715, -0.022956455, 0.011921819, -0.059001476, 0.022230925, -0.034527496, 0.029728716, -0.018017517, 0.013651018, 0.00090810267, -0.029753914, -0.009610674, 0.015144872, -0.04805432, -0.012078717, -0.0021801598, 0.005217549, 0.04908509, -0.0007802076, -0.042024475, 0.0073912903, -0.013167014, 0.0073936675, 0.008462471, 0.0041533513, 0.01356532, 0.033293612, -0.004792025, -0.035403956, -0.0016307812, -0.05123696, 0.04128468, 0.00891367, 0.017261084, -0.0039057927, 0.031147448, -0.030540539, -0.021846289, -0.07817481, 0.03979867, 0.016913056, -0.038046177, 0.032668997, 0.035466403, 0.0048245927, 0.052922893, 0.03433199, -0.06668041, -0.01615472, -0.00954744, 0.014894786, 0.013446636, 0.013744205, 0.009690549, -0.05162112, 0.0014534397, -0.03393927, -0.009250167, 0.013701416, 0.026052326, 0.03054363, 0.03485403, -0.03435053, 0.04178033, -0.018293276, -0.033991568, -0.028483758, 0.036458187, -0.0025167756, -0.0029011744, 0.021956116, -0.012162871, -0.0074755037, -0.08043223, 0.03724267, 0.025478225, -0.0035104142, -0.019603608, -0.036114912, -0.06969284, -0.0035977033, 0.018255241, -0.034998562, 0.03917679, 0.083701394, -0.019261286, -0.009389116, -0.0226845, -0.030154714, 0.010865853, -0.061421975, 0.0028222764, 0.050118234, 0.033486646, -0.0010935268, -0.04356801, -0.0067751114, 0.044372465, 0.021263868, -0.022882523, -0.00470169, 0.02406805, 0.009541883, -0.017075183, 0.015357871, 0.023884052, 0.021124085, 0.015804553, -0.065417625, -0.013553076, -0.0047652805, 0.045247287, -0.06995529, -0.015712874, -0.07108875, 0.004395502, 0.004442096, 0.020791747, -0.04010296, 0.011046523, 0.020393323, -0.0062635313, -0.001095904, -0.00011172992, -0.007190652, -0.013776536, -0.008387825, 0.009184912, -0.014555317, -0.05548561, 0.043321725, 0.019716287, -0.022031238, 0.060264736, -0.022607002, 0.041287772, -0.03089974, 0.05360373, 0.0077245785, -0.025826488, 0.022315554, -0.0115020005, 0.044675797, -0.04480227, -0.008193368, 0.03671968, 0.009945626, 0.01868552, -0.018305877, 0.05935545, 0.023986273, 0.061376333, 0.035639465, 0.033695366, 0.03166711, -0.016181344, 0.046289466, 0.0117894085, -0.0031591037, 0.034241654, 0.0022517142, 0.0116360765, -0.013833114, 0.047270786, 0.037376747, 0.018140659, 0.014049917, 0.006573523, 0.025440188, -0.014676556, -0.01445072, -0.003573931, -0.037300676, -0.077391274, 0.020797454, -0.013587784, 0.048434682, 0.043030236, -0.01127854, -0.03068151, 0.025805332, 0.030834602, -0.025850974, -0.03970477, 0.029598441, 0.005603612, 0.010786929, 0.0114943925, 0.055566378, -0.040387273, 0.034186203, 0.016266448, 0.0020099645, -0.046683136, -0.020799119, -0.049583357, 0.060640343, -0.0023829376, 0.02041139, -0.01748692, 0.091958955, 0.045691352, -0.0088765845, 0.012330823, -0.02519343, -0.06827791, -0.02118922, -0.02360639, -0.03329076, 0.001912513, 0.015980706, -0.024652611, -0.0046325126, -0.011036018, 0.023401, 0.022678558, -0.021159267, 0.016265973, -0.0024773136, -0.037820812, -0.040826585, -0.05917216, 0.029924123, 0.06492697, -0.05887263, -0.036556125, -0.04278685, -0.041772723, -0.011588532, 0.041017685, -0.008345511, 0.023912579, 0.00019152691, 0.03467336, -0.038291506, -0.003178835, 0.006349112, -0.009593736, -0.031338576, -0.02036147, -0.039281383, -0.00043978795, -0.0019143851, 0.05713725, 0.021648027, 0.007243129, 0.027264953, 0.04214357, 0.0038035717, 0.0072862166, 0.020829784, 0.03689512, 0.023042036, -0.02844691, -0.018979821, 0.008503597, 0.0062946733, 0.012093203, 0.029482434, 0.013841673, 0.065178, -0.040335212, -0.018885208, 0.010649525, 0.061518017, -0.043626968, 0.008626025, 0.048666697, 0.043671656, -0.048602037, 0.022104457, 0.010883118, -0.06698089, 0.025519112, 0.057266574, -0.033532284, 0.013285668, -0.03229898, -0.032687895, -0.020307982, -0.026084894, 0.04426977, 0.044390533, 0.014227259, -0.03437668, -0.021203961, -0.033109855, -0.012688715, 0.0034156074, -0.010323131, 0.03776186, 0.03134428, -0.036902253, 0.044673897, -0.0369536, 0.020886123, -0.0077331364, -0.014066558, -0.05712596, -0.030973433, -0.006604902, 0.008352168, 0.0025460157, 0.035202056, -0.0018953672, 0.01808218, -0.009295928, -0.020217884, 0.0041325805, 0.008902616, 0.0029521657, -0.021913564, 0.00024889622, -0.019063262, 0.0251321, 0.024037978, -0.032440662, -0.008101608, 0.014521434, -0.08688879, -0.060433045, 0.081927024, -0.002332778, -0.0052403705, 0.023361538, 0.04808713, 0.038849678, -0.006075492, -0.0074126855, 0.015448205, 0.018766467, 0.019156212, 0.033499006, -0.0024209733, -0.08111116, -0.048995707, 0.014749418, -0.03517923, -0.039460152, -0.044585466, -0.030445095, 0.0109221935, -0.0034921542, 0.01393177, -0.047595516, 0.015335525, -0.039007053, -0.006417695, 0.007236295, -0.008259456, -0.023101468, 0.014154991, 0.025418198, 0.0025626563, 0.004117604, 0.044831745, 0.0029442022, 0.027131826, -0.020335319, 0.044851717, 0.020419473, -0.022536993, -0.010130813, -0.042538103, 0.011543363, -0.008479349, -0.0012475714, -0.021676553, -0.08464849, -0.006596715, 0.0008729197, 0.013279932, -0.004784893, -0.011185116, 0.05237138, -0.00061011664, -0.0010069956, -0.014856038, 0.017938593, -0.025508298, -0.017601978, 0.0095146345, 0.013602434, -0.046960797, -0.013996193, -0.005789868, 0.008648133, 0.025501044, -0.01439937, -0.0055724406, 0.027611107, -0.026707252, 0.024341907, 0.004429705, 0.07292968, 0.025611468, -0.0018592332, 0.04974311, -0.0024979955, 0.0661365, -0.021389978, -0.06639514, 0.082001194, 0.0036129176, -0.03707864, -0.012774603, 0.013709023, 0.020136701, 0.033483792, 0.015355019, 0.008715681, 0.002230557, 0.005549886, 0.0061380137, 0.005730081, -0.035394136, 0.025253812, 0.035896085, 0.011376482, 0.005448616, -0.0582555, 0.036583822, -0.008586562, -0.003160768, -0.005520884, -0.014105589, -0.02973561, 0.03522963, -0.047407717, 0.023249332, 0.021307131, 0.011470621, -0.013480808, 0.060862374, 0.004981728, -0.025561903, -0.0054849875, 0.053879492, -0.0033775715, 0.020462263, -0.019530984, -0.02011186, -0.016242439, -0.030101465, -0.021977391, 0.012860455, 0.028718866, -0.05125408, -0.024074825, -0.0028997478, -0.010490487, 0.036814768, 0.007414944, 0.0012886976, 0.02929129, -0.04634462, -0.042603806, -0.033633083, 0.017825438, -0.009385313, 0.001534741, -0.013991438, 0.0046068383, 0.049416002, 0.017121777, 0.047315273, 0.0032743998, 0.043297954, 0.043704942, 0.0006970045, 0.029506205, -0.010146265, -0.03418044, 0.02839018, -0.022610333, -0.04360034, -0.07186468, -0.011344152, 0.023933023, 0.0037685074, 0.032451596, 0.029450104, 0.017172175, 0.030273577, -0.026992043, 0.001321741, -0.010514854, 0.0037195957, 0.014284788, -0.050261345, -0.017917674, 0.030766614, -0.038940966, -0.0167205, -0.03733966, -0.011946305, 0.0018444945, -0.010092777, -0.033167142, 0.019910151, 0.014836782, 0.02047082, -0.004469197, -0.04597757, -0.044370506, -0.0029439644, 0.034795072, 0.0052479776, -0.026529912, 0.008771512, -0.0065457085, -0.009434046, -0.05291909, -0.022977374, -0.01955012, 0.027655173, -0.0057861833, -0.0036856607, 0.048889205, 0.018011456, 0.0023401473, -0.021365613, -0.040526103, 0.02884296, -0.04559032, 0.016798474, 0.01631086, -0.010433197, -0.07639093, -0.028696995, 0.0126887895, -0.0131898355, 0.0027592534, -0.03414252, 0.023933023, 0.0073715593, 0.012169528, -0.003373768, 0.010659984, -0.009895408, -0.04625809, 0.018771576, 0.00025305635, -0.09963076, -0.03721319, -0.0028472408, -0.03816266, -0.058175623, -0.021474015, 0.017842554, -0.01364151, -0.040744808, 0.054170467, -0.024370434, -0.006032405, 0.0048001073, -0.073185235, 0.0149247395, -0.01101027, -0.046224326, 0.011458497, -0.030796567, 0.030316366, 0.013998094, 0.044853617, -0.01773332, -0.012443623, 0.0064868126, 0.022246733, 0.016835202, 0.03957331, 0.0059480728, -0.01372709, -0.0027941987, 0.0037869308, -0.045150295, -0.06118425, -0.017144598, 0.024559187, -0.013383342, 0.01156999, 0.03860958, -0.0034232144, -0.017919578, 0.022265157, 0.025519112, 0.0037629209, 0.014489705, 0.04785416, 0.016555995, 0.0014268147, 0.0011189631, 0.01279783, 0.029673802, -0.0071564196, -0.0068140985, -0.01035142, 0.024037622, 0.020968853, 0.021316642, 0.04464157, 0.0053533483, 6.870201e-05, -0.0036171963, -0.0060904687, 0.018952722, -0.08063572, -0.016430002, 0.05794361, 0.0069629136, 0.024960939, 0.020154174, -0.00828608, 0.020183653, -0.066684216, -0.011438291, -0.07945709, -0.042813, -0.026410159, -0.021033037, -0.0069650523, 0.024289608, 0.028571716, -0.019526584, 0.033449322, 0.016395295, 0.013601572, 0.019145276, -0.035225827, 0.062977634, -0.025192719, 0.01169099, 0.036849003, -0.0014448817, -0.003825561, 0.04274311, -0.026339406, 0.018478703, 0.012022851, -0.017437473, 0.009914247, 0.048090454, -0.05773441, 0.0039502024, -0.02681518, -0.0049760225, 0.030429285, -0.02407423, 0.046898037, 0.028852943, -0.029011743, -0.025167163, -0.021688202, -0.023468034, -0.00033946877, 0.032718323, 0.007379404, -0.0069377143, -0.025097867, 0.01413217, 0.037720017, -0.027235, -0.05472579, 0.06479955, 0.004618487, 0.04686951, 0.053158715, -0.05575275, 0.04632239, 0.009279526, -0.02728492, -0.009090536, 0.008169121, -0.038624793, -0.065713115, 0.0111275865, -0.00518617, 0.05006641, 0.053191047, 0.017977996, 0.006884346, -0.057570677, -0.028702477, -0.008408271, -0.035965323, -0.04422983, -0.010687086, -0.004326087, 0.003667594, 0.024453161, -0.010943826, -0.051085766, 0.06830549, -0.002204883, 0.0012285536, 0.03480892, -0.008227601, -0.023887143, -0.00079827453, -0.015328392, 0.04468911, 0.008759625, 0.03985179, -0.02666565, 0.014825847, -0.05000175, 0.014566371, 9.5089286e-05, 0.028990824, -0.032898843, 0.010975205, -0.021495054, 0.004659375, 0.0051169624, 0.04701238, -0.026759077, 0.015348362, 0.0071863728, -0.04006397, -0.020749196, 0.023040611, -0.030400997, 0.04101201, 0.0010003393, -0.0007827632, 0.040867474, -0.006428987, 0.08609384, 0.033107236, 0.036567774, 0.015264683, 0.005962217, 0.018915636, 0.036609378, -0.025182972, -0.0017073281, 0.0055769864, -0.037460424, 0.016663447, 0.0009432857, -0.012083948, 0.014204438, 0.013493526, 0.06637042, -0.01957508, -0.05577462, -0.06735079, 0.044440933, -0.010904839, -0.0323199, -0.0069211926, 0.0020729464, -0.010059971, -7.512054e-05, 0.016786825, -0.007446561, -0.010683519, -0.064778626, -0.00023011607, 0.00406269, 0.0087810205, -0.0064384956, 0.028906073, 0.001123896, -0.037360583, -0.020706644, -0.0010402768, 0.028367037, 0.054716278, 0.02325884, 0.0160166, 0.03062731, 0.026782136, -0.007227737, -0.0072101457, -0.04937939, 0.046389308, 0.06291416, 0.017691838, -0.016827, 0.008267538, 0.009103789, -0.013948172, 0.013599283, 0.006871152, -0.00050492416, 0.042980358, 0.028611269, -0.054543212, 0.011077664, -0.0092655], [-0.06010864, -0.06724806, -0.064595535, -0.022754192, 0.0028776827, 0.008796764, 0.0060561537, -0.03532026, 0.03210698, 0.063727975, -0.010318967, 0.027980171, -0.075480625, -0.019158162, -0.02140967, 0.025469234, -0.011125723, -0.060965452, 0.03592914, 0.0152680045, -0.017972304, -0.022744738, -0.030313104, 0.0042608785, -0.012514075, 0.045437913, 0.019159773, 0.015711023, 0.023672884, -0.018891213, -0.01634053, -0.030467257, 0.0048830803, 0.012410517, 0.024014924, -0.0074977344, 0.01562895, 0.008831998, -0.031745177, -0.02740886, -0.0666873, 0.033849835, -0.0070340377, 0.040510144, -0.010449379, 0.050006453, 0.016509078, 0.028388383, -0.012983304, -0.040759366, 0.03115155, 0.014385836, -0.028039468, 0.0007201727, -0.005902322, 0.026958348, 0.04605152, 0.019256378, 0.02381898, -0.031403568, 0.012248091, -0.025508873, -0.08725262, -0.012768751, 0.009061457, 0.02559884, 0.012076213, -0.007447084, -0.0023580713, -0.06290081, -0.012642232, 0.0034328518, 0.0167496, -0.028000796, 0.055922523, 0.033194546, -0.07819825, -0.0059289634, -0.03928975, -0.0053252387, 0.010962653, 0.027402658, -0.011993818, -0.054285377, -0.03305103, -0.0042218026, -0.021539437, -0.029438347, 0.03648517, 0.0026830838, -0.047063883, 0.0067647244, 0.02032393, 0.026419507, 0.01571532, 0.037627734, 0.013071285, 0.06428959, 0.010114215, 0.019959439, 0.03825939, -0.037013266, -0.021370135, -0.02302415, 0.007744112, -0.0016620692, 0.0021198043, -0.032416362, -0.018879717, 0.0045530726, -0.023617988, -0.008584493, 0.033143412, -0.039982475, 0.014367359, -0.024450637, 0.029203463, -0.0008993968, -0.038900927, -0.0115037495, -0.006285021, 0.00030938207, 0.008694281, 0.032022763, -0.019217782, -0.0145028215, 0.0069963317, 0.0012317273, -0.053383015, 0.020175174, 0.04352576, 0.02510571, 0.02488291, -0.020886727, -0.025115808, 0.012051291, -0.007749161, 0.065276176, -0.0076065017, 0.031750333, -0.010907222, 0.030879652, 0.02013132, 0.0015030812, 0.025451832, -0.053629663, 0.008051185, -0.045757607, -0.027642239, -0.0026942021, -0.0063358867, -0.02139248, -0.007280791, 0.019248292, 0.022135695, -0.03864504, 0.021413537, 0.031236418, -0.04118563, 0.018022364, -0.022167224, 0.01768849, 0.013192567, 0.012087385, 2.7500628e-05, -0.07464014, 0.018176196, 0.011437683, -0.036741696, 0.017686717, 0.07748818, 0.009750691, 0.024682673, 0.012253463, -0.06903431, -0.0066689025, 0.042794414, -0.028635029, 0.029267542, 0.025282528, 0.0115104085, 0.0018348076, 0.014804792, 0.018547455, -0.0038019617, 0.03497564, -0.016172731, -0.0053445753, -0.0062656584, 0.018911287, 0.033293806, -0.02952966, 0.013184188, -0.013327492, -0.023632491, 0.03632661, -0.02484381, -0.0048633143, 0.032750238, 0.051754463, 0.023559874, 0.008037703, 0.029237196, -0.03411453, -0.04187485, -0.033236228, 0.034029447, 0.008931849, 0.0441428, -0.0307775, -0.011067283, 0.030148422, 0.025668612, 0.029457148, 0.029681772, 0.042055335, 0.02858948, -0.02600442, 0.03525333, 0.06482241, -0.031764943, 0.020988995, 0.038868267, -0.039194517, -0.028821947, 6.8751564e-05, -0.010508677, 0.008775279, -4.748155e-05, -0.011299212, 0.07061431, 0.0037480348, -0.015182065, -0.066764645, -0.003203823, 0.015703289, -0.032127824, 0.035092518, -0.045534167, 0.017170705, 0.009076926, 0.017798921, 0.0379629, -0.044410933, -0.005529184, 0.0036575834, -0.06452678, -0.023244692, -0.014044012, 0.0032233475, 0.07606673, 0.015919857, -0.008509725, -0.013896411, -0.02450263, -0.0060447664, 0.006030372, 0.009254337, 0.02702672, 0.051201012, -0.0039815754, -0.048650328, -0.027985327, -0.06181647, 0.03560128, -0.010420159, 0.020850632, -0.036052033, 0.022429341, -0.037074715, -0.028683154, -0.05353341, 0.021231344, 0.009113988, -0.042932346, 0.030211642, 0.020891452, 0.0047971406, 0.04381194, 0.009968011, -0.07292651, -0.02187033, -0.013964517, 0.0023633353, 0.02074235, 0.002025808, 0.01960365, -0.04024029, 0.0022536549, -0.018635113, -0.016937379, 0.01130018, 0.025173709, 0.029104259, 0.027510941, -0.0369226, 0.041546144, -0.032126963, -0.040972497, -0.033586, -0.009150189, -0.00421576, 0.008271673, 0.012163442, -0.00076142367, -0.041628644, -0.043506853, 0.036443487, -0.0009242789, 0.032132763, -0.032589965, -0.021428576, -0.046869665, 0.013528375, 0.018438311, -0.02913262, 0.04254519, 0.09018122, -0.0056488006, -0.021679088, -0.0030439757, -0.0131425075, -0.01814483, -0.06656355, 0.022596061, 0.063993104, 0.0156948, -0.0038625489, -0.045816045, -0.035709567, 0.051567115, 0.04764226, -0.007868617, -0.004487705, 0.036300827, 0.008662268, -0.023927694, 0.021271735, 0.02590946, 0.022929722, 0.014171354, -0.039391212, -0.011231429, -0.011712796, 0.037429214, -0.06719606, -0.017973809, -0.08527944, -0.0026502789, 0.018527366, 0.0047801677, -0.011572608, 0.007258447, 0.0032231594, -0.0097378, 0.017203577, -0.0041757985, -0.0058546257, -0.029320827, -0.009392431, 0.011497733, -0.02539941, -0.015525823, 0.03988708, -0.009698268, -0.023672884, 0.06671652, -0.00928694, 0.069267206, -0.03662396, 0.05631441, 0.016612956, -0.015014591, 0.021112317, 0.01178853, 0.047035526, -0.058363207, -0.00053067616, 0.020473788, -0.0013266904, 0.02552402, -0.015816728, 0.05335036, 0.03734757, 0.033284783, 0.066716954, -1.7187892e-06, 0.028967615, -0.024730153, 0.052613858, 0.014230608, 0.014363922, 0.04166861, 0.0059403502, 0.0046029175, -0.0026396306, 0.048915237, 0.037628595, 0.020842899, 0.016273497, -0.0070547704, 0.0123539055, -0.028265327, -0.0057467716, 0.015789013, -0.023413345, -0.026010865, 0.02100747, -0.019901002, 0.060877793, 0.06069732, -0.0038836044, -0.029680697, 0.041223012, 0.039595746, -0.016118053, -0.039047454, 0.045341767, 0.008133525, 0.023609074, 0.021697994, 0.03276528, -0.051181033, 0.023113849, 0.019247537, 0.0030346566, 0.017110735, -0.04298391, -0.028687451, 0.053356376, -0.012509348, 0.0043502557, 0.0011947734, 0.089328915, 0.038897917, -0.03502033, -0.010719229, -0.019749317, -0.07195453, -0.013344679, -0.023305923, -0.03361565, 0.015579858, -0.03881155, -0.02251399, -0.019025277, -0.05586409, 0.036834512, 0.033635926, -0.025290908, 0.006564486, -0.019967657, -0.039483167, 0.0051305857, -0.03295864, 0.03950379, 0.06587802, -0.052770693, -0.024659684, -0.024838222, -0.052729014, -0.020277537, 0.023964219, -0.019855453, 0.012051613, 0.022640752, 0.0150046, -0.06475882, 0.020060204, 0.012937755, 0.018418545, -0.033702876, -0.015595649, -0.03731921, 0.0038999326, -0.0026905497, 0.05211025, 0.018256549, 0.017226564, 0.015042842, 0.00476964, 0.02664596, 0.01635213, 0.011244534, 0.039137688, 0.048801582, -0.029970098, 0.017280277, 0.018850392, -0.0042694723, 0.031400558, 0.018916994, 0.0021433302, 0.06303831, -0.034759507, -0.036647163, -0.001767345, 0.061730318, -0.048856154, -0.0038505176, 0.049934264, 0.03794227, -0.043624587, 0.031682443, -0.016567625, -0.054870624, 0.009037393, 0.0644185, -0.012124339, -0.0056334394, 0.004551354, -0.048337508, -0.02081153, -0.043767247, 0.068411246, 0.04080352, 0.015929738, -0.07128163, -0.010237109, -0.029113013, -0.013052485, -0.008481795, -0.0031238992, 0.02822961, 0.0029727533, -0.024717906, 0.037639763, -0.03379827, 0.021700786, 0.0022953355, -0.01183902, -0.05351278, -0.03588429, 0.013509683, 0.0126034515, 0.015805019, 0.015470821, 0.021934757, -0.025008382, -0.013277003, -0.026905926, 0.0027504927, 0.013803812, 0.008088193, -0.0328061, -0.003693678, -0.023485132, 0.015847236, -0.0004589167, -0.012242936, -0.014106103, -0.010967164, -0.11184505, -0.054038733, 0.028913474, 0.00055345014, -0.00021334471, 0.037876956, 0.052562296, 0.013157332, -0.026269438, -0.007861742, 0.024777206, 0.03380257, 0.011851051, 0.027529847, 0.024749275, -0.05877572, -0.08669283, 0.031588554, -0.02992326, -0.027030325, -0.046970215, -0.057699755, 0.036616333, -0.006604448, 0.040317748, -0.021882849, 0.02326725, -0.03419789, -0.0030880198, -0.0068240226, 0.013178816, -0.0065380596, 0.0067880894, 0.012376142, -0.02031308, 0.009946633, 0.02531433, 0.017047167, 0.021954093, 0.020041727, 0.049506284, 0.0210672, -0.0014717132, -0.03537956, -0.0378125, 0.006957229, 0.025012465, -0.031808775, -0.018479561, -0.056502834, 0.010538971, -0.013647469, 0.011737933, -0.04275918, -0.011804644, 0.0515018, -0.009314441, 0.019472163, 0.0088212555, 0.0048184106, -0.020369371, -0.005804351, -0.026981983, 0.0012757982, -0.04082468, -0.013367454, -0.023973899, 0.007851644, 0.031105734, -0.014318373, -0.0025077136, 0.032498866, -0.026442284, 0.02689669, 0.016587444, 0.049850047, 0.0073718866, -0.03731062, 0.03459751, -0.008533359, 0.07534656, -0.02223082, -0.05433093, 0.04988184, -0.001487612, -0.026087353, -0.018291784, 0.008278334, 0.0024924593, 0.038052272, -0.008245677, -0.0018926017, -0.024756957, 0.015677936, -0.005181505, -0.017295318, -0.018626519, 0.023748081, 0.042893246, -0.012976644, 0.010144831, -0.0484372, 0.044746097, 0.011522119, -0.018817734, -0.020023894, -0.02441368, -0.036608063, 0.03381632, -0.0199603, 0.018947933, 0.027183672, 0.0354019, -0.0029735055, 0.011389234, -0.010819241, -0.026175441, -0.030707028, 0.057684284, 0.032249644, 0.02502063, -0.020573048, -0.030388195, 0.0016861323, -0.02871463, -0.035367094, -0.020048387, 0.0132379, -0.027845243, -0.029145509, 0.030331474, -0.0036038714, 0.043276966, 0.00927029, -0.00907757, 0.033490177, -0.018862637, -0.032858096, -0.029739082, 0.017073594, 0.016098825, 0.022979783, -0.008312359, -0.0055515817, 0.036531575, 0.041256096, 0.044737507, 0.010139997, 0.029800368, 0.044379137, 0.015074425, 0.04096734, 0.0019559823, -0.012643843, 0.02806611, 0.0054305145, -0.037442107, -0.051836964, -0.0008198625, 0.008334087, 0.003344764, 0.03707772, 0.040109664, -0.01701279, 0.03609887, -0.03219346, 0.029348325, -0.0035286741, -0.010652196, 0.014140478, -0.056969266, -0.022636455, 0.0031986667, -0.007856585, -0.041231174, -0.053793807, -0.009974993, -0.0040887846, -0.020808576, -0.023763657, 0.007781167, -0.0143080605, 0.033478577, -0.00053024647, -0.021670494, -0.029545343, 0.012560374, 0.040439673, 0.017478582, -0.034602664, 0.010393089, -0.020240461, 0.0057142223, -0.081034034, -0.020742778, 0.0005752707, 0.038179465, 0.0005740756, -0.0043743183, 0.040364046, -0.0005751767, -2.1484864e-06, -0.00035407057, -0.047771167, 0.042724803, -0.039176363, 0.021032609, 0.032079484, -0.0014111259, -0.067333564, 0.019603005, -0.008122998, -0.01296848, 0.019870492, -0.029313736, 0.015538714, 0.004426312, 0.017795915, 0.0005447488, 0.004778449, 0.012398271, -0.013845707, -0.012127132, 0.004106617, -0.10496302, -0.022212988, -0.004771896, -0.035000566, -0.076620184, -0.019533932, 0.015283474, -0.0067247627, -0.046286352, 0.04501509, -0.019652635, -0.0024542161, 0.004299981, -0.065008044, 0.008316791, -0.026158253, -0.03023866, 0.016395718, -0.044511482, 0.011461101, 0.0020645545, 0.010848997, -0.025547493, -0.0016839838, 0.01991733, 0.014583068, 0.066278234, 0.0048865178, 0.012461223, 0.007205809, 0.003398476, -0.010317892, -0.055041824, -0.035790347, -0.043308333, 0.0030476283, 0.008700726, 0.037399136, 0.031669553, 0.0076535535, 0.013671894, 0.0036863734, 0.020588515, -0.009678825, 0.011044079, 0.04521275, 0.024497258, 0.004255722, -0.012046135, 0.008299066, -0.008895379, -0.021519242, -0.018834492, -0.003933664, 0.03199612, 0.038301498, 0.018671207, 0.034220666, -0.0010710205, -0.0109701725, -0.018700212, -0.00031110086, -0.010429612, -0.07454045, 0.00932701, 0.058763683, -0.003202749, -0.010994236, 0.02751051, -0.025135573, 0.031149616, -0.07268416, -0.030574681, -0.062283337, -0.07487046, 0.019257663, -0.010089292, -0.019103482, 0.0073168855, 0.041601144, -0.012514505, 0.038998038, 0.037294287, 0.02291232, 0.01591384, -0.046238437, 0.036364425, -0.028311895, -0.016231386, 0.030173345, -0.008389625, 0.023593819, 0.038820572, -0.016660653, 0.029681772, 0.0077124224, -0.027545316, 0.028635029, 0.03610961, -0.05739467, 0.013307833, -0.020809382, -0.008917078, 0.008455986, -0.025151258, 0.022318048, 0.018299948, -0.016829055, -0.04538248, -0.0013831956, -0.014300756, -0.004336935, 0.030908342, -0.0044398475, 0.004100172, -0.015068196, -0.01595552, 0.039515395, -0.043524038, -0.071123496, 0.053676926, -0.003386874, 0.06179047, 0.037286554, -0.030135533, 0.0667552, 0.02160894, -0.014239094, -0.00817628, 0.0008396285, -0.0009957697, -0.044911962, 0.0045840107, -0.0053045596, 0.031490367, 0.039173357, 0.044979855, 0.014670296, -0.091913976, -0.024937052, -0.019664237, -0.03285852, -0.030322878, -0.013392805, -0.0074314005, -0.005563291, 0.02155104, -0.012238423, -0.004969879, 0.08272189, -0.0049535506, 0.006026827, 0.026514472, 0.009700565, -0.050194982, -0.0016141311, -0.030441692, 0.07920181, 0.0041669896, 0.041729085, -0.029221136, 0.011330258, -0.05421405, 0.00059749413, 0.021444043, 0.013865902, -0.009739519, 0.009529612, -0.011991777, -0.0061497204, 0.041189063, 0.0665962, -0.038179465, 0.06541003, 0.037246164, -0.038174737, -0.041996468, 0.031746037, -0.046563182, 0.048963152, 0.024622086, 0.016166931, 0.011544301, -0.021434162, 0.07680925, 0.025749128, 0.0378993, 0.029529229, -0.027779073, 0.020779302, 0.032004714, -0.027223902, -0.0073921634, 0.002956962, -0.025731994, 0.0062314705, -0.016766358, -0.004877494, -0.0038410372, -0.023879139, 0.051298983, 0.000107961445, -0.038126614, -0.052719563, 0.063151754, -0.0132683, -0.039599184, -0.020747505, -4.5118217e-05, -0.028095327, 0.0074778073, 0.023629913, -0.01777486, -0.008558281, -0.0518997, -0.014087196, 0.016759055, 0.005965058, 0.02599497, 0.033491038, 0.025970638, -0.039160892, -0.038578223, -0.013028422, 0.02360843, 0.05432163, 0.03518877, 0.027627818, 0.0126103265, 0.02594534, -0.0045434046, -0.012868789, -0.066747464, 0.0513231, 0.055719707, -0.007357868, -0.012183637, 0.011231429, 0.03293372, -0.014971513, 0.0059662666, -0.018333036, -0.023953475, 0.031279385, 0.029367797, -0.04321036, 0.011540811, 0.022095466], [-0.026106205, -0.079318985, -0.02018104, -0.025774317, -0.02165067, 0.06612412, 0.026286295, -0.042269416, 0.025584029, 0.03635268, 0.0024839058, 0.044178654, -0.06674763, -0.006109558, 0.0045264983, 0.034568194, 0.018594626, -0.045613173, 0.043013122, 0.07256163, 0.0046358146, 0.015201018, -0.006515445, 0.014202496, -0.039757676, 0.0048544467, 0.023975156, -0.010943761, 0.0049579428, -0.021002365, 0.026185518, -0.03489817, -0.014287014, 0.012320334, 0.027908007, 0.058860675, 0.0086152265, -0.01832766, -0.053326037, -0.01226011, -0.06745211, 0.004508785, -0.039479323, -0.013684763, -0.020147573, 0.067747675, 0.03366735, 0.032958817, -0.027423171, -0.031821627, 0.022139557, -0.029877724, -0.045043316, 0.023773732, -0.016840762, 0.02252925, 0.036863834, 0.019658687, 0.015523905, -0.00433975, -0.0045710346, -0.027725814, -0.036980994, -0.0041752695, -0.0052431263, 0.027405204, -0.002863982, -0.0032592406, -0.018302357, -0.044252798, -0.026649246, 0.047914382, -0.018760499, -0.017300293, 0.052220732, -0.0014727315, -0.06710797, 0.032189555, -0.010261341, -0.014923679, -0.0035340493, 0.016783193, 0.01273938, -0.054471266, -0.056589324, 0.015302237, -0.032716908, 0.0038650346, 0.040097013, -0.024098137, -0.029476896, 0.0116178775, 0.066043146, -0.021093968, 0.0098779285, 0.0007695149, -0.017465532, 0.056917276, 0.035960965, 0.021866268, 0.00940296, -0.05512545, -0.044576697, 0.009666381, 0.004089993, -0.023757536, 0.036484014, -0.033718467, 0.026956933, 0.009387335, 0.0056981044, 0.0020414537, -0.004669976, -0.057741195, 0.007606076, 0.04489351, 0.038990438, -0.044872258, -0.0465869, -0.016484471, -0.03694481, 0.022004936, -0.01542623, 0.02137991, -0.009200776, -0.023889627, 0.008122797, 0.009025162, -0.07313655, -0.0038969184, 0.052994043, -0.0060817227, 0.01371614, -0.034450527, -0.024491878, 0.013941541, -0.0021357136, 0.042368103, -0.023551557, 0.027300822, -0.037499487, -0.03383588, 0.009801002, 0.026865456, 0.01057444, -0.045166798, 0.04103202, -0.05686363, 0.018025525, -0.033660512, -0.0019613644, 0.02509413, -0.009921453, 0.013699438, 0.010028492, -0.04157253, 0.0064078686, 0.020413525, -0.027429244, -0.0041416143, -0.014079262, 0.0076379594, 0.040069427, 0.003091724, -0.0106641445, -0.042061917, 0.016584678, -0.0018695085, 0.012905379, 0.017216282, 0.019528115, 0.008121786, 0.009230129, 0.05195655, -0.016279502, -0.016533293, 0.019700505, -0.029903028, 0.04650972, 0.049466822, -0.034852464, -0.01453171, 0.0068674325, -0.031179901, 0.009664358, 0.00949431, -0.05678468, -0.03497307, -0.004038561, 0.022625659, 0.0363294, -0.023856224, 0.023564717, -0.0018485057, -0.049699888, 0.025444852, -0.03020548, 0.0132017275, 0.051270284, 0.013604799, 0.0044799377, 0.0054541994, 0.008499837, -0.025502292, -0.03890896, -0.04053605, 0.037327416, 0.015721282, 0.04630146, -0.05946234, 0.016314423, 0.05610753, 0.011751486, 0.060445756, 0.031240126, 0.019649578, 0.027395336, -0.06803715, 0.035573296, 0.06408356, -0.02124681, -0.012575279, 0.013126036, -0.034597423, -0.037562322, 0.031622734, 0.017736545, 0.02571207, 0.01961314, -0.025921084, 0.041527484, 0.0064991238, -0.032133885, -0.0357937, 0.013469673, 0.0077508185, -0.06139114, 0.018070819, -0.053734705, 0.0251913, -0.013069859, 0.010253956, 0.04727721, -0.048844077, -0.03317037, -0.027718604, -0.075816825, -0.011380014, -0.0016367056, 0.0018300334, 0.049853224, -0.00737884, -0.02831924, -0.03607939, -0.012184196, 0.004464755, -0.009016558, -0.013639467, 0.0028852378, 0.02721365, 0.008851572, -0.051437296, 0.013467649, -0.03244058, 0.03350742, 0.011027773, 0.020161744, -0.03430705, 0.04331551, -0.044305433, -0.041945517, -0.10031984, 0.023048501, 0.042904563, -0.023300534, 0.03497307, 0.007351005, 0.003732944, 0.043456204, 0.015871843, -0.03956941, -0.032466896, 0.046321705, 0.022517104, 0.01762571, -0.02808008, 0.011467062, -0.041052263, 0.010630489, -0.050815433, 0.00895937, 0.033590928, 0.012742923, 0.016880741, 0.037274785, -0.0172011, 0.058939625, 0.011962022, -0.034619313, -0.053428266, 0.0332843, -0.00784394, 0.006188509, -0.024049679, -0.011668487, -0.0007334557, -0.048764113, 0.042803343, 0.037781887, 0.008375465, -0.030333208, -0.014011572, -0.04356451, 0.010346191, 0.028670184, -0.042168103, 0.04010688, 0.06179399, 0.003433337, -0.022467505, -0.0051697427, -0.017996235, 0.02971881, -0.039822455, 0.03439005, 0.059232395, 0.016233448, -0.014440865, -0.025397785, -0.033405192, 0.050925132, 0.044590864, -0.00602251, 0.0030729985, 0.034642592, 0.02067796, 0.0054270914, -0.01138128, 0.04365662, 0.035137042, 0.012955988, -0.091631226, -0.023914425, -0.025421066, 0.02508603, -0.051002055, -0.017895458, -0.061953913, 0.004593872, -0.010658325, 0.011463013, -0.018709257, 0.036394183, -0.0037876023, -0.0017915702, 0.009804293, -0.010192718, -0.010976152, -0.016654518, -0.023620388, 0.026482848, -0.043816544, -0.040251117, 0.060451325, 0.007102513, -0.023189701, 0.035317212, -0.005754913, 0.022413323, -0.046912067, 0.06365844, -0.008131907, -0.033592194, -0.012249988, -0.016179677, 0.023056852, -0.0239663, -0.0027855376, 0.014486413, -0.008261482, 0.010634032, -0.027829057, 0.036772612, 0.010451838, 0.039175667, 0.045270044, 0.051217653, 0.035660345, -0.014641278, 0.0343111, 0.016591761, 0.011633061, 0.03338242, 0.0068838806, 0.023581924, -0.012526316, 0.052799698, 0.04315002, 0.03665532, 0.00049141655, 0.018221382, 0.031083236, 0.0027845253, 0.0046886695, -0.029226506, -0.033983152, -0.0034505439, 0.0051152506, 0.004296859, 0.014133162, -0.0022394627, -0.0072766095, -0.020954667, 0.02665998, 0.042961247, -0.008896108, -0.03545892, -0.014962141, 0.017637605, 0.013408895, 0.025135882, 0.054060884, -0.06360985, 0.031665243, 0.0337262, -0.024920285, -0.014689865, -0.041892376, -0.028393857, 0.012399032, 0.0075638173, 0.019671846, 0.016106673, 0.07205149, 0.039231844, 0.014986687, -0.0020790312, 0.0121513, -0.058066107, -0.01406332, -0.017288653, -0.020907726, 0.009202801, 0.03157617, -0.030021144, 0.007507388, -0.03916858, 0.028161054, 0.0662962, -0.0039791586, 0.03429503, -0.033676207, -0.025896193, -0.0547512, -0.039969224, 0.02838981, 0.043892965, -0.05114098, -0.004367838, -0.016749157, -0.035547994, -0.022494834, 0.04315356, -0.017497227, 0.027973484, 0.03238997, 0.03062712, -0.050309088, -0.03328082, 0.0266863, 0.0040598805, -0.0062958007, -0.00019990685, -0.04487529, -0.016484471, 0.022085404, 0.044422843, 0.010067967, 0.008848282, 0.04324061, 0.018195065, 0.01399854, 0.069717385, 0.031956755, 0.02713647, 0.025474712, -0.016259259, 0.008231102, -0.019620098, -0.001378598, 0.024631308, 0.029074047, 0.0070293825, 0.037228223, -0.0154707655, -0.02052006, 0.009732679, 0.05948013, -0.022592511, 0.0038938818, 0.02930685, 0.027114455, -0.07163852, 0.033403043, 0.005521731, -0.059488736, 0.007256366, 0.050501533, -0.006012388, -0.0025567834, -0.03952892, -0.016925784, 0.0072492803, -0.007982103, 0.07136219, 0.033205792, 0.0070281173, -0.009923478, -0.014818158, 0.009372341, -0.010420967, -0.0055098375, 0.015251628, 0.020717435, 0.017087733, -0.03976577, 0.057133883, -0.017110001, 0.025507102, -0.013179681, 0.0007624295, -0.042995658, -0.020143524, 0.0018922827, 0.015129152, 0.0024884606, 0.03497712, 0.011702901, 0.006440543, -0.018081954, -0.002864488, 0.020320658, -0.0030649009, 0.004602412, -0.007389468, -0.0064256135, 0.007943134, -0.011634072, 0.04673873, -0.026922645, -0.0029576092, -0.0042230953, -0.06422931, -0.058848526, 0.051801004, -0.0032956796, -0.016526476, 0.040270858, 0.076040514, 0.030592326, -0.03346289, 0.0196182, 0.023682635, 0.0012563766, 0.0005693549, 0.04093738, 0.00094765966, -0.09189035, -0.041238505, 0.01506121, -0.024935722, -0.040626388, -0.044880353, -0.025365237, -0.003032764, -0.024704818, 0.016030505, -0.00899429, 0.02200443, -0.025406895, 0.029609494, -0.007037733, 0.0022096033, -0.022750158, 0.007280405, 0.059277695, 0.0025248993, -0.0056550866, 0.022924002, -0.0064086593, 0.026645811, 0.004675796, 0.04293339, 0.0066804313, -0.03248866, 0.0032703748, -0.043925863, 0.00480738, -0.001988314, -0.059481144, -0.02825215, -0.04607878, 0.023391884, -0.01712063, 0.006949167, -0.008494522, -0.017769948, 0.0281732, -0.0070541813, 0.01535487, -0.03563403, 0.014397342, -0.019518754, -0.030029552, -0.0076313806, 0.00034414342, -0.026843188, 0.003924374, -0.055260327, 0.012278835, 0.012553391, -0.003953601, -0.01330823, 0.015793148, -0.03463905, 0.02241968, 0.0071126353, 0.069160685, 0.026991978, 0.014253611, 0.028435864, 0.009764058, 0.054633785, -0.02106917, -0.08131907, 0.072272144, 0.014162514, -0.04268973, -0.0039151376, 0.013231303, 0.004585205, 0.027728345, 0.0031098167, 0.009782783, 0.017977698, 0.01246204, 0.022262031, 0.003325539, -0.041859988, -0.0093232505, 0.04346076, -0.03659662, -0.001188054, -0.035269894, 0.027458597, -0.0155593315, -0.0063365414, -0.0358643, -0.015700025, -0.019410701, 0.046678502, -0.043797314, 0.028534299, -0.0043126107, 0.010726141, 0.02089811, 0.034793407, 0.009633485, -0.02909834, -0.015627654, 0.060802046, -0.0070670866, 0.041153483, -0.0243775, 0.024551598, -0.030091042, -0.031119803, -0.056133337, -0.009313508, 0.05659363, -0.037789986, -0.01080914, -0.0015041094, -0.01947194, 0.025808733, 0.008066115, 0.0036024987, 0.021507448, -0.040248584, -0.06500565, -0.025476735, 0.02708662, 0.0058666333, -0.012943336, -0.034554027, 0.01867535, 0.020401632, -0.008491675, 0.032437544, 0.028254176, 0.023009025, 0.041082628, 0.004256023, 0.033616234, -0.022568723, 0.0014803229, 0.04243592, 0.020487163, -0.0073135537, -0.07169115, -0.010443361, 0.031697635, 0.019457769, 0.05318433, 0.026399598, -0.032525603, 0.027638767, -0.020653287, 0.008365469, -0.008751364, 0.01025345, 0.032290775, -0.061949864, -0.021403698, 0.02613162, -0.065856904, -0.024070555, -0.035890114, -0.012545546, -0.005548807, -0.019181442, -0.026021292, 0.027397867, 0.018730005, 0.01786813, -0.0061257533, -0.048636068, -0.04154317, 0.016262801, -0.0017627229, 0.017668728, 0.000363375, 0.010998419, 0.0070772087, 0.007933518, -0.04058305, -0.050404865, -0.0425756, 0.02182173, -0.033312075, 0.002767318, 0.054843303, 0.019642493, 0.005691525, -0.00073535356, -0.056509364, 0.04636131, -0.021499095, 0.040968757, -0.009648163, 0.0026134658, -0.07065062, -0.029763853, -0.0045750835, 0.015451028, -0.0018312986, -0.041716255, 0.03665482, 0.009978388, -0.017547267, -0.028776465, -0.012155475, -0.020970482, -0.03648325, 0.0013705005, 0.006189521, -0.07351714, -0.037521757, 0.017792722, -0.042929865, -0.046408754, -0.0127836, 0.02684015, -0.019392863, -0.022324787, 0.050764192, -0.016814442, -0.020436047, 0.022618588, -0.053470783, -0.007064809, -0.023718568, -0.018598929, 0.028371338, -0.058437325, 0.03001943, -0.007980585, 0.03821814, -0.012741405, -0.0019995745, 0.012573888, 0.0036908118, 0.024500482, 0.023940235, -0.020505635, 0.008799951, -0.019108564, 0.01417871, -0.01694704, -0.0823596, -0.052029174, 0.01539232, -0.035592526, 0.00078950555, 0.038794708, 0.01854174, -0.0037170656, 0.028794684, 0.0256979, 0.005310991, 0.0002501366, 0.054049246, -0.0029444506, 0.00748765, -0.0032612653, 0.0024155832, 0.009417384, 0.018957242, -0.041885294, 0.02935341, 0.050520256, 0.019841895, 0.037724193, 0.04315559, -0.0044495724, -0.01280416, -0.024055626, -0.016033795, 0.014763374, -0.09070811, 0.02971729, 0.04803028, 0.00751169, 0.03225636, 0.012829465, -0.026873553, 0.01687467, -0.031539984, 0.01638692, -0.05227842, -0.04438641, -0.027126916, -0.019065546, -0.0068598413, 0.035211947, 0.038642753, -0.0035041901, 0.049943313, 0.014686321, 0.020778166, -0.0026883676, -0.039499566, 0.0750678, -0.026146803, 0.024473658, 0.03300386, -0.009079314, 0.020853573, 0.032681733, -0.014909129, -0.0067472355, 0.031434465, -0.04977326, 0.008216425, 0.017236525, -0.06574152, -0.013264705, 0.00065741513, 0.014126961, 0.028538093, -0.046580322, 0.032051902, 0.01596522, 0.008863148, -0.008025628, -0.042506777, -0.02970059, 0.022491798, 0.0052249073, 0.028365515, -0.037169516, -0.01657405, -0.031154595, 0.02151605, 0.0061824354, -0.04894175, 0.067383975, 9.312116e-05, 0.05197578, 0.03246133, -0.054757267, 0.03793068, 0.02642895, -0.022303531, -0.039695933, -0.0017768935, -0.048682507, -0.054071512, 0.00850882, 0.006053888, 0.035244588, 0.079302475, 0.02328415, 0.024155326, -0.061100643, -0.013054676, -0.00040740508, -0.030893957, -0.017085709, -0.004337725, 0.014877119, 0.0047317194, 0.0020689094, 0.009076988, -0.021565648, 0.078748114, 0.02092291, 0.015359932, -0.0014970239, -0.018724503, -0.0025891734, 0.019183973, -0.030114574, 0.042232472, 0.026723243, 0.031819098, -0.027900923, -0.014762235, -0.023681117, -0.0017989087, -0.02938833, 0.0016365792, 0.01042957, 0.01676434, -0.030162541, -0.025246939, 0.032117188, 0.06857362, -0.036014613, 0.003429288, -0.007889994, -0.047223818, -0.022387544, 0.0107899085, -0.049502753, 0.04669014, 0.0021498841, 0.009015546, 0.03881634, -0.03292871, 0.07024372, 0.06548543, -0.018875381, 0.04267935, -0.0068337778, -0.022149678, 0.030054856, -0.049103197, 0.011522732, -0.011469592, -0.026725521, 0.0025046556, -0.0017717062, -0.034923475, 0.00020740335, 0.0006462811, 0.051570144, -0.025339838, -0.03371492, -0.056998253, 0.07054131, -0.02459006, -0.028515574, 0.012547065, 0.009620201, -0.029790042, 0.0076313806, 0.013242942, -0.06406331, -0.027333591, -0.07575609, -0.03451961, 0.008282343, 0.0457812, 0.016841013, 0.022493064, 0.030322073, -0.03405704, -0.0070023066, -0.0060705887, 0.0034723058, 0.05092108, 0.025090082, 0.0326334, 0.031747233, 0.0004696546, -0.007216384, 0.002519206, -0.03552269, 0.008964431, 0.023958962, -0.00911221, -0.013088901, -0.020620264, 0.019895665, 0.01080914, -0.0026801436, -0.0021524148, -0.019866185, 0.017838428, 0.03970795, -0.056747228, 0.010536863, -0.0068444056], [-0.01226844, -0.08644383, -0.03526482, -0.03443282, -0.019437864, 0.028473852, 0.01302836, -0.012468048, 0.030881064, 0.049264338, -0.013059273, 0.0133128, -0.06716227, -0.03141457, -0.0044408906, 0.057195008, 0.013001017, -0.075578764, 0.021938248, 0.013853114, -0.012321135, -0.014738676, -0.022437753, 0.024008503, -0.0004305378, 0.062240668, 0.0031355803, 0.0065783015, 0.04295298, -0.014154287, -0.020576034, -0.03731763, 0.00877134, 0.009986233, 0.021144405, 0.0054809907, 0.008330192, -0.01894203, -0.035946794, -0.025500845, -0.08420748, 0.032831874, -0.023759974, 0.0030835485, 0.0023216393, 0.03084038, -0.0055190455, 0.028811958, 0.0017526562, -0.028022604, 0.029436952, -0.008120101, -0.030695101, 0.025672296, -0.004002573, 0.037512697, 0.028280415, 0.0137551725, -0.0010996058, -0.031008516, 0.0131879235, -0.015787475, -0.074901335, 0.008898461, 0.018205833, 0.011966911, 0.0054308213, -4.3257824e-05, 0.011924877, -0.046509508, -0.0041589746, 0.0037960785, 0.029303096, -0.025576496, 0.06911132, 0.002029445, -0.082238846, 0.0110523235, -0.028432636, -0.01241316, 0.025588227, 0.024981804, -0.0039548264, -0.044232734, -0.048412852, 0.023390243, -0.021206537, 0.004260692, 0.0546077, 0.0070371507, -0.019799842, -0.015650611, 0.035446525, -0.0012449889, 0.0019911863, 0.0035879512, 0.009241872, 0.060570754, 0.01495823, 0.050956085, 0.05795692, -0.04416869, -0.029844636, -0.023713043, -0.020021027, -0.004433111, -0.0019490507, -0.025314398, 0.009986845, -0.014903545, -0.005281536, 0.004961948, 0.012185648, -0.050042775, 0.009672613, -0.039037332, 0.027352821, -0.022910325, -0.038358267, -0.0074827876, -0.012724636, 0.01899651, 0.029277183, 0.032057315, -0.03492335, -0.010658565, 0.00816471, 0.009501673, -0.047095936, 0.010674276, 0.046596024, 0.00958773, 0.016335135, -0.018628616, -0.051871847, 0.032065477, 0.0063523706, 0.044657174, -0.00832101, 0.036693655, -0.030660005, 0.014041653, 0.013289131, -0.0068572327, 0.033837415, -0.019971445, 0.018976413, -0.037879165, -0.026440326, 0.00014201626, -0.018695237, -0.03281735, 0.02105636, 0.023676313, 0.0338972, -0.08372267, 0.02252182, 0.016725883, -0.046232007, 0.022398576, -0.026106097, -0.003646308, 0.014916604, 0.02317395, -0.007796203, -0.04710859, 0.004503073, 0.011822446, -0.017484732, 0.037884876, 0.07561795, 0.013645702, 0.022833552, 0.02279565, -0.050152957, -0.016787913, 0.031055141, -0.028282458, 0.024094328, 0.025632098, -0.00021343247, -0.016938092, 0.0146330055, -0.023528991, -0.0015050459, 0.041993964, -0.026587138, -0.007855784, -0.0072697634, 0.02936635, 0.02999318, -0.02324802, 0.04529135, -0.0054729315, -0.020945765, 0.03540712, -0.041096162, 0.010114169, 0.028995803, 0.039453585, 0.014642161, 0.01899539, 0.055255957, -0.0495751, -0.015515684, -0.05152415, 0.037049714, -0.017171318, 0.049600404, -0.0104292175, -0.005405596, 0.04587227, 0.029398998, 0.053871196, 0.022815647, 0.033337094, 0.009553042, -0.047133077, 0.019402359, 0.063440464, -0.02603305, 0.00093371613, 0.048419382, -0.02086272, -0.012127699, 0.024966294, -0.013854339, 0.01714275, 0.005130541, 0.0020576033, 0.06794499, -0.007499035, -0.01506158, -0.05389415, -0.014465866, -0.0010150286, -0.027429951, 0.028104426, -0.033395045, 0.02883277, -0.0037655479, 0.022988679, 0.024905235, -0.0051774723, -0.022658939, -0.015486353, -0.023915865, -0.014949137, -0.021842755, -0.020255681, 0.06486021, -0.01849068, -0.03662224, 0.007895982, 0.006191583, 0.021251222, -0.0051588276, -0.0145809995, 0.021624016, 0.051052395, 0.020041432, -0.03529252, -0.00069457374, -0.07661859, 0.035902366, -0.0014160817, 0.035564464, -0.015159012, 0.014938941, -0.04092435, -0.019638034, -0.056679178, 0.0073570954, 0.016952172, -0.025229108, 0.021163177, -0.006219129, 0.0042066197, 0.04054605, -0.0022252274, -0.078268915, -0.019978179, 0.012038327, 0.006347066, -0.0001171226, 0.0273316, -0.00079098565, -0.026527658, -0.0031665952, -0.025119329, -0.010239045, 0.013286274, 0.040529422, 0.0333877, 0.03832929, -0.029486688, 0.0353343, -0.026538268, -0.028477117, -0.01594663, 0.024603093, 0.0021575605, 0.012876078, 0.0012595985, 0.00470939, -0.060616456, -0.052670076, 0.04501426, -0.0061866855, 0.0004913436, -0.034215715, -0.02599061, -0.071274206, 0.019694554, 0.006418482, -0.011778575, 0.01576707, 0.08768606, -0.009980213, -0.0055696494, 0.010307197, -0.021677068, -0.01383924, -0.07620805, 0.020349262, 0.07945402, 0.025850633, 0.018620556, -0.032908596, -0.029692825, 0.044625755, 0.039904937, -0.00321776, 0.00026852498, 0.02261405, 0.018160941, -0.027182238, 0.03454913, 0.024137868, 0.049833015, -0.00825949, -0.065957576, -0.010682235, -0.0023530626, 0.02761196, -0.067996405, 0.0048331437, -0.07447202, 0.009821159, 0.012313789, 0.005019132, -0.03155791, 0.004705666, 0.00043665917, 0.017039502, 0.009175149, 0.0032206676, -0.01000832, -0.0155748585, -0.027373837, -0.010975935, -0.015844965, -0.032445002, 0.05033946, 0.022880942, -0.018924074, 0.061145347, 0.0051321737, 0.047449347, -0.037711028, 0.0444013, -0.00020567872, -0.031660646, 0.025804926, 0.009103732, 0.041597705, -0.0610572, -0.010253125, 0.02497119, -0.01643879, 0.035983983, -0.014778669, 0.047408126, 0.035384085, 0.019468877, 0.034736443, 0.040625628, 0.003864944, -0.022013439, 0.03819258, 0.013690389, 0.02161973, 0.053084698, -0.0030121321, 0.0068869726, -0.007837624, 0.03449036, 0.04849896, -0.0027444235, 0.017689187, -0.019210685, 0.019946756, -0.0025303788, -0.0027685007, -0.011036459, -0.04136591, -0.036922596, -0.003081508, -0.014781117, 0.04340596, 0.04433029, -0.019499077, -0.011609829, 0.03910773, 0.033573788, -0.033424426, -0.014288142, 0.04182787, 0.00066111016, 0.01660121, 0.017053377, 0.045688428, -0.03240909, 0.05092997, 0.02600775, -0.010494716, 0.0076011345, -0.028892148, -0.046105497, 0.047762357, 0.016527347, 0.009873879, 0.0007119177, 0.08191441, 0.038243998, -0.029497758, -0.008757873, 0.008921518, -0.09171557, -0.0028186962, -0.024994861, -0.04157934, -0.010096214, 0.005635505, -0.027225241, -0.029909113, -0.031059526, 0.01617353, 0.0557573, -0.035291854, 0.032513153, -0.019596612, -0.040917005, -0.002844406, -0.043497782, 0.0398527, 0.07841256, -0.043702237, -0.030661637, -0.031785525, -0.05052024, 0.005430082, 0.035540793, -0.009799938, 0.01289777, 0.005394169, 0.034536887, -0.058305837, 0.02036505, -0.0032512746, 0.0016666506, -0.023397382, -0.027942514, -0.044137675, -0.012309709, 0.008014533, 0.045722708, 0.007819056, 0.009368661, 0.017239468, 0.025361942, 0.008582598, 0.028573224, 0.0022575688, 0.030386992, 0.018419163, -0.03455076, -0.0047392827, -0.00013711915, -0.015941096, 0.014123068, 0.03418307, 0.0021335087, 0.085186906, -0.03932626, -0.023316376, 0.022486571, 0.05337118, -0.03769144, -0.01365519, 0.06492918, 0.035799526, -0.06699332, 0.012932457, 0.0066817016, -0.0683994, 0.030571245, 0.06380611, -0.04251772, -0.026062636, -0.008573212, -0.04766798, -0.021726854, -0.031705335, 0.04566394, 0.035661995, -0.010801652, -0.047035947, 0.0044841226, -0.029048856, -0.008247553, -0.023642749, 0.0016654264, 0.038905926, 0.02779397, -0.029558461, 0.019779436, -0.0438667, 0.012550127, -0.024581872, -0.02056624, -0.0450163, -0.02067112, -0.009213917, 0.009757496, -0.0056863637, 0.013933917, -0.0037613905, 0.010206755, -0.025867363, -0.0166763, 0.01642737, 0.028004138, 0.015541598, -0.017424742, -0.009463874, -0.029105172, 0.0082818335, 0.026400333, -0.01775387, -0.011688183, -0.008348761, -0.08520976, -0.05194367, 0.039904937, 0.0010749162, -0.029150877, 0.04671682, 0.05840092, 0.0035197996, -0.0645668, 0.006509895, 0.012404845, 0.005764367, 0.007025724, 0.009063739, -0.0027105517, -0.071306035, -0.05552509, 0.033879552, -0.02902396, -0.04116023, -0.06748221, -0.039466646, 0.033640712, -0.008138184, 0.008414259, -0.0076672453, 0.02100535, -0.031120334, 0.005320254, -0.0237412, -0.0062405537, -0.011128075, 0.011647986, 0.04450266, -0.0010985855, -0.0027050425, 0.022297777, -0.018133394, 0.030278847, 0.013244648, 0.049984828, 0.010164773, -0.013552759, -0.022136582, -0.04155363, 0.0059068864, -0.0070840814, -0.043244768, -0.006104047, -0.03914915, 0.0102982195, -0.017032566, -0.0001730313, -0.023999726, -0.026695793, 0.033259556, 0.011025441, 0.0018698808, -0.00039646207, 0.0027611551, -0.041090854, -0.010873631, -0.027576137, 0.011771639, -0.044537608, -0.018555159, -0.02634218, -0.0044288263, 0.025766972, -0.0065360125, -0.031434566, -0.00154912, -0.014617064, 0.026429307, 0.026703954, 0.06008757, 0.018659223, -0.0008680132, 0.032630686, -0.025940208, 0.071726374, 0.0034842954, -0.04536848, 0.08906542, 0.012183199, -0.02363775, -0.023078458, 0.013497614, 0.017841404, 0.033559095, 0.0065274425, -0.0018233582, -0.006041178, 0.006370531, 0.0005488847, -0.0092637045, -0.04029997, 0.005731254, 0.062556535, 0.005672489, 0.013216899, -0.034513216, 0.039793935, 0.015075556, 0.023863858, -0.0072983303, -0.015260831, -0.013807001, 0.040091027, -0.03790365, 0.051320106, 0.018457217, 0.034853972, -0.02848487, 0.01276065, -0.010936068, -0.039511748, -0.018400084, 0.051784515, 0.0052354215, 0.010225171, -0.02689739, -0.019439496, -0.008250002, -0.016972028, -0.049656924, -0.0008374062, 0.021210006, -0.036935654, -0.014616248, 0.0237059, 0.0074242265, 0.055289216, 0.031350497, -0.012005883, 0.039957173, -0.0298479, -0.050528407, -0.022600582, 0.026047537, -0.0052125677, -0.0002579146, -0.021735119, 0.0017941796, 0.05480685, 0.045350116, 0.03719112, 0.019229328, 0.04798354, 0.04051381, 0.0055704652, 0.023543684, -0.008440173, 0.0046957186, 0.009608644, -0.0017618445, -0.027079398, -0.06952267, 0.014593395, -0.005129725, 0.018415999, 0.04136897, 0.017309584, -0.00073089404, 0.033694174, -0.028768903, 0.030737542, 0.0035418365, -0.007973315, 8.10064e-05, -0.05706442, -0.009388836, 0.010361678, -0.016604884, -0.034128793, -0.06183421, -0.030149482, -0.0014515857, -0.022741375, -0.03158556, -0.013225469, -0.005963867, 0.026519904, -0.011490405, -0.028545268, -0.039869994, 0.04093496, 0.02965528, 0.030752232, -0.014990673, 0.022726683, -0.011398845, 0.0038366835, -0.0715713, -0.034820408, -0.016282082, 0.024418635, -0.0058324607, 0.005776144, 0.048710454, 0.021404156, 0.022803403, -0.004640014, -0.035897467, 0.055880133, -0.029250402, 0.0201608, 0.0072808326, -0.007664083, -0.09498439, 0.0030798758, 0.016362885, -0.013398092, 0.00020037353, -0.020858383, 0.0042802803, -0.0017640827, 0.017768355, 0.010637548, 0.010565724, 0.012468865, -0.017401889, -0.007102853, -0.00014140412, -0.089910984, -0.049321674, -0.024849376, -0.040876605, -0.050690416, -0.011464344, 0.0047738682, -0.009804835, -0.029579375, 0.06052831, -0.031300303, -0.014062875, 0.010150897, -0.05143845, -0.008939883, -0.01344867, -0.04423072, 0.023658765, -0.03755922, 0.019059561, 0.0048399796, 0.031939477, -0.036734875, 0.0059485636, 0.004498814, -0.0043641436, 0.055709552, 0.016032739, 0.006792295, 0.016473886, 0.010731002, -0.0010945046, -0.041153703, -0.06262754, -0.007619703, 0.01834499, -0.0073840297, 0.023633515, 0.022520557, 0.0017196006, 0.02384404, 0.02114461, 0.024260703, 0.0073795402, 0.027418932, 0.035292674, 0.024041558, 0.0035932562, -0.009149132, 0.010192115, 0.004130714, -0.027711127, -0.014621146, -0.0030308024, 0.035391636, 0.039657224, 0.024960581, 0.026078757, 0.017845077, -0.015243894, -0.009251972, -0.0070453123, 0.033109378, -0.10708352, 0.003382502, 0.06806007, 0.009152805, 0.017246202, 0.02017243, -0.017781416, 0.033031024, -0.062859334, 0.008301422, -0.07480829, -0.06458965, -0.015435698, -0.010763446, 0.0047665224, 0.01649021, 0.03758789, 0.0048358985, 0.05440243, 0.011814947, 0.038169727, 0.0028260418, -0.0050026043, 0.052353397, -0.0062572854, -0.010666727, 0.04650461, 0.0032848401, 0.0059557045, 0.042813823, -0.02353389, 0.013172825, 0.031910606, -0.030235996, 0.026891677, 0.032022525, -0.028077085, -0.009356137, -0.038689636, -0.009423778, 0.006273609, -0.028611073, 0.021927636, 0.031348865, 0.0030272317, -0.04177931, -0.0058089253, -0.015941733, 0.011346609, 0.013953097, -0.00062802277, -0.005748394, 0.0062691197, 0.0185168, 0.033755794, -0.028117793, -0.057351716, 0.05488357, 0.03586686, 0.040882725, 0.023045609, -0.040399548, 0.07082367, 0.015432433, -0.03138641, -0.01839478, -0.015625615, -0.009921346, -0.04509853, 0.030221306, -0.007192634, 0.0131526245, 0.06205223, 0.040102046, -0.0029488779, -0.08936904, -0.027383428, -0.018610252, -0.018982025, -0.05443018, -0.021027386, 0.018815523, -0.018345196, 0.019747606, 0.005046525, -0.035953578, 0.077916324, 0.0014168979, -0.014605638, 0.015180232, -0.022940114, -0.040402606, 0.004071541, -0.05026886, 0.08512814, 0.029424809, 0.016042735, -0.03782958, 0.0006168321, -0.053598896, 0.016172715, -0.00017894866, 0.030209063, -0.018610047, 0.020118766, -0.011935895, -0.017708775, 0.04962244, 0.048466723, -0.046964128, 0.05903959, -0.008442622, -0.021020625, -0.026845971, 0.03530614, -0.035701584, 0.044100128, -0.00058438873, -0.015218593, 0.016269432, -0.036048666, 0.06732223, 0.023258835, 0.01884817, 0.0089364145, -0.011645333, -0.0006813108, 0.022907823, -0.03483561, -0.0025456822, 0.007979029, -0.022480195, 0.00034136957, 0.0048346743, -0.014929663, 0.018030964, 0.017859768, 0.040335067, -0.018501291, -0.038600266, -0.023415951, 0.050887525, -0.015236141, -0.05789693, -0.023607755, 0.0038279097, -0.021171851, -0.021600857, 0.022238044, -0.016599987, 0.00309824, -0.09092632, -0.016778221, 0.017229674, 0.0071395817, 0.0038066886, 0.05305001, 0.02880808, -0.032009337, -0.008080644, 0.0043527167, 0.0072530317, 0.044266224, 0.011922427, 0.031943865, 0.024117054, 0.032472342, -0.027221415, 0.015363415, -0.02520503, 0.05447058, 0.07770738, -0.005792468, -0.0029815251, 0.012323991, 0.02254957, 0.0051321737, 0.0060445163, -0.0030966073, -0.02691453, 0.048171263, 0.024594113, -0.05404004, 0.009652872, 0.0072966977], [-0.04526447, -0.060152195, -0.026986655, -0.05189433, -0.010134598, 0.05771169, 0.0014964578, -0.028359538, 0.030335598, 0.021803772, -0.013515461, 0.01056712, -0.033465568, -0.01999837, -0.028482806, -0.0065944977, 0.042686556, -0.05213625, 0.036943804, 0.013841928, -0.025148362, -0.019175442, -0.029994328, 0.034822464, -0.005219562, 0.026318967, -0.002459891, 0.01884129, 0.0013754932, 0.004789096, -0.010776465, -0.053508513, -0.009782616, -0.008042847, -0.012248483, -0.015657108, -0.02492703, 0.0053139166, -0.06011285, -0.030655252, -0.041794457, 0.03339302, -0.019499449, 0.04918314, 0.0017689742, 0.02739151, -0.0137451645, 0.023321135, -0.028053666, -0.039869785, 0.024090534, -0.028215824, -0.023750888, -0.0019252141, 0.032344148, 0.04146123, 0.035450805, 0.015441828, 0.019385247, 0.016293192, 0.014436684, 0.013468236, -0.058589645, -0.0018389095, 0.030373054, 0.020193266, -0.0073657054, 0.016263068, -0.03774706, -0.05070373, -0.032306645, 0.0026873532, 0.037883162, 0.00079495483, 0.067145094, 0.026864924, -0.083930135, -0.0010928515, -0.013587395, 0.019659301, 0.008806599, 0.0017583688, -0.0033550414, -0.054339126, -0.04040006, -0.0010906805, -0.0058178334, 0.00538731, 0.056301616, 0.029073335, -0.015950127, 0.00294399, 0.08876688, 0.0034657847, 0.010148431, 0.020466398, 0.007848873, 0.051078767, 0.010083952, 0.02534639, 0.047111984, -0.021968313, -0.0046963356, -0.017489007, 0.005415284, 0.011931162, 0.014004854, 0.014710968, 0.008121235, 0.011011026, 0.0047549736, 0.021929195, 0.019820537, -0.03765691, 0.014837927, -0.04104607, 0.0028263011, 0.003309007, -0.049431525, -0.013411096, 0.012189739, 0.012528839, 0.021942412, 0.050268136, -0.035873182, -0.025184635, 0.011524693, -0.0026196083, -0.03610804, 0.021267502, 0.016537273, 0.012427548, 0.036223628, 0.00460004, -0.031244246, 0.04552085, -0.015642105, 0.045776457, -0.016928757, 0.036950953, -0.037649535, 0.011491647, 0.03908067, 0.012679776, 0.03298217, 0.009598941, 0.010068813, -0.06074242, -0.0392547, -0.0061305435, -0.028045367, -0.0152749065, 0.007405438, -0.01700338, 0.041956924, -0.043094326, 0.013936917, 0.030984178, -0.03561619, 0.024523094, -0.02637092, 0.021959761, 0.0038659521, 0.008198394, 0.010232124, -0.055527564, 0.01546473, 0.023190178, -0.00026990345, 0.014458529, 0.08040295, -0.0067967717, 0.031228874, -0.008835188, -0.042321354, 0.014577861, 0.039199326, -0.0024783546, 0.013609221, -0.008122311, -0.0036767428, -0.008133378, -0.015761377, -0.020429201, -0.03757837, 0.008133993, -0.024701392, -0.03327221, 0.0019153001, 0.015568326, -0.0020482538, -0.027695844, 0.012191151, -0.022837276, -0.03967396, 0.016082618, -0.03557438, 0.008403743, -0.012556965, 0.019932123, 0.004298935, 0.009122614, 0.040582657, -0.02192635, -0.025700467, -0.045766156, 0.0359488, 0.005628932, 0.07544017, -0.01802082, -0.018610427, 0.012871443, 0.03934811, 0.03347068, 0.04072099, 0.03432016, 0.009863158, -0.044304743, 0.049260147, 0.055543855, -0.013154105, 0.014393186, 0.04000965, -0.026098866, -0.045558967, 0.017864505, 0.0048825475, 0.013107302, 0.0148800425, -0.018179905, 0.03722393, -0.0041816593, 0.010785072, -0.04162292, 0.0075536077, -0.005689856, -0.000906851, 0.021080596, -0.058447935, 0.0066081774, -0.030548275, 0.046341624, 0.027299598, -0.0053870026, -0.0338672, -0.0034924522, 0.002177672, -0.007351949, -0.019127948, -0.0063126055, 0.035467807, 0.0074908203, -0.039720688, -0.023442868, -0.013503166, 0.026267169, 0.01886373, -0.012671322, 0.013425391, 0.049122427, 0.042820122, -0.064604685, 0.021732435, -0.04713197, 0.016118662, -0.0070433123, 0.046745557, -0.031918082, 0.029997287, -0.020804547, -0.0130906245, -0.03296296, 0.019629788, -0.023753654, -0.044228353, -0.002098976, 0.0015980559, 0.003928663, 0.05427826, 0.023864936, -0.0427548, -0.009638135, 0.023369858, -0.0070270193, 0.027739342, -0.00038764038, 0.026580572, -0.058459, -0.0055120406, -0.025175413, 0.0018303021, 0.004221545, 0.009009565, 0.03004213, 0.047019765, -0.03367645, 0.03246181, -0.01030152, -0.070418365, -0.042408656, 0.033982627, 0.021023188, 0.029466819, 0.03763524, -0.0013590469, -0.033798646, -0.04421006, 0.045419402, -0.005441106, 0.023592882, -0.030279603, -0.05468404, -0.06614909, 0.02664574, -0.0021106573, -0.012422937, 0.03376283, 0.07215153, -0.008595411, 0.002154309, -0.0061376905, -0.007825971, 0.016803795, -0.070799395, 0.025385065, 0.061747026, 0.004770344, 0.008114165, -0.054537714, -0.044398196, 0.024755573, 0.013145112, -0.012341443, 0.003442345, 9.345177e-05, 0.041556448, -0.029561576, 0.024835577, -0.0071383007, 0.045137204, 0.0017134873, -0.06809191, -0.02012533, -0.019213868, 0.052387096, -0.084286734, -0.009032851, -0.05459489, -0.019412452, -0.00095941767, 0.043736503, -0.01826859, -0.012934155, 0.037404068, -0.01285761, 0.021718007, -0.0033550414, -0.017224636, -0.023998044, -0.0008631992, 0.013525607, -0.0075443857, -0.048682302, 0.036754828, 0.021703558, -0.021105958, 0.043356698, -0.020819608, 0.016941054, -0.027189545, 0.03645787, 0.029563958, -0.009553598, 0.015638415, -0.00084752147, 0.05012273, -0.05100868, -0.015773522, 0.024940709, -0.030942142, 0.038211934, -0.014188683, 0.05367513, 0.030510772, -0.006156903, 0.04783009, -0.005462625, -0.00015708504, -0.025821276, 0.05152943, -0.030459128, 0.030448677, 0.0007539928, 0.017511062, 0.0031077324, 0.0019145316, 0.02355092, 0.037657566, 0.0042151664, 0.0061599775, -0.048351455, 0.005272032, -0.020646999, 0.03337642, -0.0039012223, -0.056929342, -0.00021702942, 0.0029577946, -0.018676136, 0.047653023, 0.048344076, -0.010127528, -0.042986892, 0.020173287, 0.038349655, -0.014091467, -0.039137233, 0.02877131, 0.010863538, 0.024467763, 0.0037474467, 0.029921819, -0.046728034, 0.036106657, 0.04726323, 0.01218316, 0.03286305, -0.056818675, -0.024932409, 0.03309791, -0.0011420368, 0.0444855, 0.018478857, 0.08331963, 0.04726815, -0.015594455, 0.022920122, -0.0132261915, -0.06631909, 0.005195913, -0.02016483, -0.06590732, 0.02170909, -0.030297969, -0.006451861, -0.009619538, -0.047906324, 0.013105841, 0.023449996, -0.0484572, -0.006729041, -0.005284943, -0.044381134, 0.017350981, -0.05322324, 0.028090863, 0.06805194, -0.04685653, -0.045652416, -0.008657123, -0.025101021, 0.0046822717, 0.009505951, -0.01381503, -0.00414477, 0.01630864, 0.04846212, -0.045322876, 0.018887708, 0.03621133, 0.034885406, -0.034846444, -0.03480279, -0.05144489, -0.016025133, 0.005509663, 0.020764353, -0.012300588, 0.013385889, -0.0032236248, -0.0035092062, 0.0107830735, 0.037224542, -0.00486295, 0.034476325, 0.013428312, -0.028877882, 0.014568024, -0.037801854, -0.025357323, 0.012518003, 0.043125145, -0.013274146, 0.08265686, -0.024618546, -0.028455717, 0.001001225, 0.02967893, -0.039995667, -0.022488674, 0.059922256, 0.052826073, -0.033966027, 0.030071793, 0.020681506, -0.05597761, 0.017017366, 0.045884818, -0.0060797445, -0.009001649, -0.028346624, -0.07850686, -0.016593836, -0.0024911505, 0.052780572, 0.03681719, -0.0023489746, -0.04634562, 0.01553943, 0.0055899676, -0.038181156, -0.04310171, -0.010201229, 0.029649723, -0.018040188, -0.013726036, 0.033404395, -0.04427523, 0.0060506943, -0.0046553737, -0.0125422105, -0.019805932, -0.06734429, 0.012355923, 0.01881662, 0.0035511383, 0.01863871, 0.01718693, 0.0013187766, -0.011318827, -0.025016563, 0.051809166, 0.020229924, 0.019159302, -0.022262424, -0.01923677, -0.01619052, 0.03801181, 0.02123553, 0.012884241, -0.01645704, -0.021556923, -0.077004254, -0.062036604, 0.035784647, -0.028821263, -0.03030604, 0.015402365, 0.044749256, -0.039869472, -0.029591471, -0.009450617, 0.030489255, 0.022475457, -0.009856241, 0.024615778, 0.02468998, -0.031751465, -0.08470665, 0.029224735, 0.014395261, -0.026101325, -0.058618847, -0.045868214, 0.026315281, -0.036494453, 0.03254304, -0.03394622, -0.007023023, -0.02834263, 0.03525468, -0.034168303, 0.012804736, -0.010121764, 0.022750739, 0.011836405, -0.019166144, 0.0074785235, 0.034036215, -0.0139570525, 0.025472984, -0.00864669, 0.041471757, -0.0088276565, -0.017493002, -0.06553674, -0.022799388, 0.030401336, 0.01160216, -0.036577757, -0.025754262, -0.038620174, -0.013731568, 0.0011404805, 0.03902134, -0.028703995, -0.04690418, 0.04617716, -0.023753349, 0.007958463, 0.011943881, 0.009139022, -0.020314539, -0.0097571025, 0.0011343323, 0.009154277, -0.03621809, -0.0009695621, -0.011986418, -0.044751715, 0.02290948, 0.0029920128, -0.0047844844, 0.023196328, -0.019801015, 0.021860797, 0.022165898, 0.027573498, 0.0028242262, 0.022505274, 0.044065833, -0.032401327, 0.04072284, 0.003581812, -0.037436694, 0.07363507, -0.0033017062, -0.019103508, -0.048399717, -0.0051780427, 0.02939135, 0.015938137, 0.016158395, -0.030933304, 0.011137361, 0.003837824, -0.012169406, -0.036119107, -0.023291778, -0.0056727757, 0.05949619, 0.003594281, 0.033498462, -0.035585143, 0.05994931, 0.010394357, 0.018273817, -0.007556067, -7.992585e-05, -0.004711629, 0.03648308, -0.036526114, 0.05200437, 0.058539078, 0.023401676, -0.006093121, 0.0134771895, -0.03869395, -0.035131715, -0.01400639, 0.04087654, 0.025921183, 0.006816138, -0.0011687619, 0.0014174542, 0.008643981, -0.045718815, -0.036057625, 0.0110795675, 0.014334664, -0.008962455, -0.013831168, 0.03791621, -0.024638068, 0.02202326, 0.009332266, -0.031923, 0.048108604, -0.049933985, -0.01777428, -0.010186242, 0.033309717, 0.025296975, -0.020301705, -0.010488117, 0.00752133, 0.031594075, 0.06715493, 0.0071450635, 0.020495601, 0.030232262, 0.045133512, 0.052259214, 0.03457892, 0.03948583, -0.01871218, -0.010997875, -0.0074666115, -0.03248863, -0.050912153, -0.044337943, 0.008555332, -0.02801278, 0.034617808, 0.029767463, -0.012979651, 0.033785272, -0.031891644, 0.023335353, 0.0053704027, 0.026415955, -0.0057417504, -0.045975808, -0.017417073, 0.0038828594, -0.00033999226, -0.03575775, -0.09298697, -0.02119157, -0.011875752, -0.016548647, -0.0029649418, -0.037246678, 0.007541158, 0.025148055, 0.021216009, -0.011796287, -0.052804243, -0.01936296, 0.037393, 0.017536348, -0.038078826, 0.0314914, 0.019104738, -0.012303048, -0.07068396, 0.0025641979, 0.01899776, 0.017883006, -0.002127872, 0.0028771672, 0.058583193, 0.006791738, 0.06993942, -0.015091231, -0.028894424, 0.0641654, -0.034940846, 0.025140215, 0.005357645, 0.0072418973, -0.091002345, -0.024339153, 0.023261497, 0.01423197, 0.02823081, -0.03975266, 0.009248036, -0.004666133, 0.016638257, 0.015728716, 0.025243506, -0.023163741, -0.003877403, 0.018659785, 0.011230505, -0.09405674, -0.020399768, -0.013610652, -0.048516527, -0.07177503, 0.0054182042, 0.0369488, -0.006551461, -0.053463016, 0.008592029, -0.016761066, -0.008079505, 0.0074466304, -0.07509588, 0.020754283, -0.028453603, -0.046102922, 0.00612232, -0.025410887, 0.037670285, -0.0055176504, 0.03305226, -0.0536666, -0.009797987, 0.006548387, -0.016042348, 0.048730988, 0.0033336764, -0.01935662, 0.013549508, 0.01539126, -0.004394308, -0.06593391, -0.04767869, -0.008965221, -0.0020670055, 0.030873513, 0.000916419, -0.008180872, -0.0071604056, 0.03585228, 0.012327544, 0.03796601, -0.0022428425, 0.034647856, 0.032936905, 0.027149737, 0.0005197486, -0.0513997, 0.0018949728, 0.011944073, 0.00076163956, 0.0017153318, 0.0020676204, 0.027686315, 0.013109684, -0.01199933, 0.06387736, 0.016201278, -0.0100963265, -0.024599949, -0.021481918, 0.029704135, -0.05007109, -0.011258104, 0.05152881, -0.009451539, -0.019791484, 0.033587918, -0.014020224, 0.053540487, -0.070568375, -0.04601408, -0.07531536, -0.03306963, -0.021533562, 0.014373305, 0.0036161838, -0.0007608326, -0.010417374, -0.011487497, 0.03476114, 0.036019508, 0.038525566, -0.015467919, 0.0010833028, 0.047350224, -0.0451495, -0.0033415155, 0.05439754, 0.019784108, 0.016897555, -0.005268958, -0.0054042176, 0.009815587, 0.04499789, -0.032912545, 0.045222048, 0.03785273, -0.043043148, 0.014341157, -0.015649173, 0.016483938, 0.0051287804, -0.022723535, 0.048922, 0.01992857, -0.017258067, -0.013020537, 0.009093103, -0.018672908, -0.00023916275, 0.011820111, -0.022364559, -0.017402165, -0.0035451727, 0.0015872967, 0.047517672, -0.024367854, -0.06312913, 0.073770635, 0.020973621, 0.052066773, 0.02737376, -0.053590283, 0.068652615, -0.021837587, -0.031054268, -0.024583349, -0.029481728, 6.1808045e-05, 0.0022360026, -0.006038936, -0.03652212, 0.016520366, 0.036012743, 0.046400644, -0.0026061975, -0.114367746, -0.016338497, -0.041356094, -0.028567037, -0.052018203, -0.016932907, 0.005231454, -0.004117411, 0.046786204, -0.00016594221, -0.040329356, 0.07283828, 0.012076297, -0.007688252, 0.012786906, -0.017976074, -0.025339916, 0.023832044, -0.035736077, 0.061485883, 0.03508622, 0.023095496, -0.03714308, 0.013259545, -0.048997622, 0.028505094, 0.013617213, 0.0142089715, -0.010949227, 0.005090662, -0.03633429, 0.0003882552, 0.02264361, 0.034684595, -0.043522086, 0.050291806, 0.015106294, -0.0069498606, -0.007471223, 0.038631085, -0.045591548, 0.0316408, -0.0067417454, 0.0002688275, 0.04426048, -0.055928115, 0.06861911, 0.013254166, 0.025858318, -0.0116993, -0.016853904, 0.004343586, -0.011233887, -0.0130837085, 0.003344311, -0.011895887, -0.055895224, -0.00024561828, 0.038991213, -0.010406346, 0.00802152, 0.009635138, -0.01042479, -0.026235968, -0.040182415, -0.020944107, 0.055561993, -0.0056535243, -0.03736472, -0.016852058, -0.01384285, -0.041061603, -0.003457408, -0.004877014, 0.0018459797, 0.036155574, -0.067649245, 0.017307637, -0.011406341, 0.022914741, 0.018450115, 0.029602269, 0.015761994, -0.021613488, -0.010944923, -0.015455816, -0.00044328108, 0.021983914, 0.0009048529, 0.021426432, 0.04729782, 0.037916824, -0.00053338497, 0.0037460632, -0.03972499, 0.034973707, 0.031212889, -0.010651042, -0.024734592, 0.007870353, 0.037271578, -0.013833167, -0.013804425, -0.0031214121, -0.039171048, 0.038259123, 0.031449288, -0.038633697, 0.019764895, 0.02937275], [-0.051254414, -0.06668799, -0.043007165, -0.06392299, 0.018269628, 0.02445042, -0.0038166384, -0.024395872, 0.016466599, 0.046762064, 0.004444992, 0.009770357, -0.05230139, -0.021902962, -0.024723934, 0.031990245, 0.004993005, -0.05412472, 0.03627117, 0.029516576, -0.016492037, 0.0060103806, -0.033388186, 0.027172351, 0.0019873918, 0.03501954, 0.02985866, 0.027447999, 0.017015457, 0.014039868, -0.01689706, -0.04609481, -0.001768356, 0.012462216, 0.015330403, -0.001611056, 0.014677524, 0.0036439043, -0.036527418, -0.020719618, -0.06293816, 0.038182452, -0.015384529, 0.020465063, -0.020549845, 0.0585122, 0.01182329, 0.016369345, -0.032623675, -0.039611258, 0.044264715, -0.009471825, -0.022674873, 0.010577576, 0.0018588458, 0.031820048, 0.05144047, 0.0010013073, 0.0052968226, -0.038926665, 0.0065490906, -0.004992371, -0.08634753, -0.017883567, 0.016083708, 0.00754321, -0.013987011, -0.009412627, 0.015714774, -0.05206544, -0.02099595, 0.024966532, 0.021231266, -0.009652593, 0.04160169, 0.027002737, -0.07603338, -0.002901592, -0.02097375, 0.0029552942, 0.018927583, 0.03404487, -0.0055444003, -0.03355056, -0.05070373, 0.020418126, -0.015591302, -0.024687637, 0.0473549, -0.007138543, -0.04765586, 0.012586956, 0.033423703, 0.030124845, 0.010609397, 0.012808371, 0.010764053, 0.054181803, 0.020916665, 0.017520763, 0.043584775, -0.041314073, -0.039427318, -0.018075963, 0.004810757, -0.006508497, -0.010344586, -0.033333212, 0.00025603527, 0.0046562054, -0.021118788, -0.0010765744, 0.033675723, -0.067079134, -0.015910976, 0.009899326, 0.038420938, -0.027025148, -0.028560301, -0.0034306296, 0.0009903132, 0.030287853, 0.017128782, 0.03326688, -0.03428653, -0.023414437, -0.010696397, 0.0067278505, -0.058295704, 0.024386568, 0.02089806, 0.019092495, 0.044328142, -0.03535285, -0.034320142, 0.018766478, 0.002841125, 0.037250068, -0.0067483587, 0.024985323, -0.03651727, 0.012025413, 0.008404871, -0.01668352, 0.010887526, -0.053838868, -0.0010854544, -0.048392992, -0.024098817, -0.003281833, -0.021589419, 0.013370496, -0.008413434, -1.3531179e-05, 0.009481128, -0.04605358, 0.00767535, 0.022499813, -0.03223465, 0.028352894, -0.013169326, -0.007809499, 0.00094284833, 0.005460254, -0.0040006572, -0.05617131, 0.0012381029, 0.0155760795, -0.015911398, 0.0021071641, 0.07263326, 0.009844778, 0.03057095, 0.026168877, -0.056015696, 0.005930885, 0.028848527, -0.023356507, 0.051825263, 0.038975716, -0.014851315, 0.0043482655, -0.0067550186, -0.021984572, -0.005832573, 0.03652911, -0.022569584, -0.0072201523, 0.028581232, 0.027026206, 0.03731223, -0.022163227, 0.013586572, -0.030490821, -0.018003235, 0.048373964, -0.038685642, 0.010372996, 0.0067918063, 0.05677091, 0.015254713, 0.010695103, 0.016528124, -0.024449889, -0.034890145, -0.018642582, 0.043680336, 0.024452917, 0.04475691, -0.013846202, -0.036755756, 0.038927723, 0.041899294, 0.040745765, 0.033675723, 0.019522533, 0.0070746923, -0.043860048, 0.028505754, 0.068044916, -0.02625979, -0.0033057635, 0.029052712, -0.041977104, -0.018779162, 0.021375563, -0.002511725, 0.016090263, -0.012889849, -0.013779815, 0.07201801, 0.0026895334, -0.00078990904, -0.06826987, -0.02090834, -0.01796983, -0.03496964, 0.030206665, -0.056454614, 0.017130474, -0.016786696, 0.017345704, 0.0201678, -0.029606642, -0.0004446261, -0.0064873546, -0.037834868, -0.003191244, -0.01873413, 0.0003537135, 0.057607725, 0.006593913, -0.030443462, 0.006603216, -0.016871689, 0.017556282, 0.010232109, -0.017952492, 0.052398644, 0.0070582014, 0.008015109, -0.04013263, -0.0034320569, -0.047333755, 0.025136704, 0.003364612, 0.0058412408, -0.031200336, 0.0033718008, -0.039610837, -0.018310223, -0.0665937, 0.03707374, 0.0067046997, -0.040380847, 0.03940195, 0.02635028, 0.026063588, 0.034569837, 0.03661791, -0.056005128, -0.016075093, 0.01214648, -0.0013408553, 0.0106356125, 0.0040542795, 0.008491026, -0.035633516, 0.009730186, -0.014546018, -0.0070446706, 0.025340939, 0.015440555, 0.022506053, 0.037070356, -0.047741383, 0.025795659, -0.0015768053, -0.049902145, -0.030358681, 0.038141012, -0.011599603, 0.015885815, 0.0011655842, -0.020032277, -0.026665725, -0.03334315, 0.040796187, 0.026744323, 0.028583825, -0.031482864, -0.040230732, -0.056249112, 0.029693432, 0.022405941, -0.02285247, 0.042041373, 0.08197823, -0.030541563, -0.011894858, -0.011990316, -0.015876725, 0.0032518173, -0.046194073, 0.033600457, 0.026105028, 0.025077926, 0.0035210666, -0.060062047, -0.0013040674, 0.051991865, 0.033153713, -0.010860463, -0.014724883, 0.041970335, 0.022375496, -0.038087733, 0.02730067, 0.03309388, 0.03922858, 0.009376737, -0.05807244, -0.0073888693, -0.016292386, 0.041516356, -0.07620422, 0.03351504, -0.07511665, 0.003055298, -0.004725976, 0.018532641, -0.015288555, 0.006127721, -0.0077504055, -0.019829521, 0.033620752, 0.006809566, -0.02314339, 0.00040234113, -0.013976863, 0.0004812026, -0.023165802, -0.045430932, 0.05605714, 0.009968674, -0.020154057, 0.0559824, -0.02541832, 0.03991201, -0.03746276, 0.07492954, 0.0003712617, -0.01798509, 0.034014847, 0.01668479, 0.07058455, -0.03435228, -0.014802265, 0.022594692, -0.011823608, 0.028911054, -0.036696557, 0.053244345, 0.041836716, 0.04668933, 0.04451927, 0.03868057, 0.03416147, -0.024745144, 0.029812358, 0.0056363703, 0.018845445, 0.022200014, 0.009523413, 0.023958644, 0.006163452, 0.06325657, 0.026248796, 0.019914936, 0.019961873, 0.00062687416, 0.02253195, -0.031352166, -0.013545661, -0.007589723, -0.014755751, -0.051367737, 0.0028905983, -0.017939806, 0.05819422, 0.051484443, 0.007478302, -0.019306244, 0.042421937, 0.031195924, -0.0316841, -0.049067438, 0.029579159, 0.0037901045, 0.0012600911, -0.01636596, 0.061422884, -0.058141362, 0.019069448, 0.011650768, -0.007119409, 0.00025899522, -0.04948606, -0.052306462, 0.033417784, 0.025545703, 0.019922547, -0.02086677, 0.09643672, 0.036248337, -0.01828147, 0.002152726, -0.020313682, -0.077615425, -0.0041253185, -0.014870554, -0.03527071, 0.032304846, -0.009112827, -0.01875654, -0.026829977, -0.036973946, 0.035619136, 0.022623338, -0.02120801, 0.040907715, -0.009781351, -0.03715662, -0.012491498, -0.047958728, 0.022674873, 0.060927514, -0.056515507, -0.009532928, -0.02973984, -0.033621598, -0.027463641, 0.02663359, -0.023367925, 0.010645655, 0.00954075, 0.028044216, -0.047830183, -0.00049600226, 0.009089147, 0.0072501753, -0.022615675, -0.021115405, -0.025120633, -0.0032703169, -0.004616881, 0.06918492, -0.0031383878, 0.005706299, 0.006785887, 0.010654112, 0.032634668, 0.02468732, 0.0159651, 0.03120417, 0.03274038, -0.030648122, 0.011487971, -0.019132137, -0.006469172, 0.009975016, 0.023693096, 0.008479186, 0.050931357, -0.04745173, -0.036481433, 0.028621826, 0.052583005, -0.036790006, 0.012238951, 0.032422397, 0.052640937, -0.035381496, 0.007738143, 0.009272241, -0.0492907, 0.027724963, 0.071786284, -0.011444841, -0.0014440306, -0.0024212354, -0.03956686, -0.011306886, -0.041072205, 0.042348363, 0.037996396, 0.017891603, -0.041117873, -0.020235032, -0.04552227, -0.0228734, 0.0036483442, 0.016115634, 0.03094919, 0.0216279, -0.015592992, 0.03882518, -0.022460911, 0.011726036, 0.021630699, -0.011540827, -0.040199444, -0.034068126, 0.002961637, 0.005136351, 0.015781583, 0.0054244176, 0.0046462687, 0.006414202, -0.009916768, -0.027303383, 0.03972141, 0.015634008, -0.0025527417, -0.047853015, -0.0057230545, -0.019554589, -0.0069651743, 0.026055977, 0.008337744, -0.0073289303, -0.020300152, -0.11176754, -0.051347442, 0.07515365, -0.006061968, -0.018638354, 0.029130938, 0.024640277, 0.017180793, -0.022289183, 0.01212436, 0.026837826, 0.031188257, 0.0074818963, 0.036142625, 0.039155003, -0.08301379, -0.043858144, 0.020316644, -0.017180158, -0.049684376, -0.06303838, -0.03148991, 0.017923739, -0.013395867, 0.013389842, -0.03082149, 0.0055666002, -0.020006694, -0.010773145, 0.0060530882, 0.0030267558, -0.013798843, -0.0004429347, 0.018154614, -0.005657724, -0.0066383914, 0.058296442, 0.017658189, 0.037377875, 0.010466368, 0.038404025, 0.013344069, -0.012305339, -0.022611445, -0.027227271, 0.024694402, 0.010979284, -0.036239248, -0.03723696, -0.055857554, 0.0014601516, -0.011105716, 0.025632283, -0.017498987, -0.00094802823, 0.061580397, -0.019195668, 0.02376794, -0.0149032455, 0.0062247654, -0.009333131, -0.019635696, -0.0075652506, -0.0025607757, -0.042594884, -0.020106487, -0.014717694, 0.0050090733, 0.031111142, -0.0045942585, 0.01747137, 0.053507358, -0.03874315, 0.026154924, -0.004364228, 0.07502447, 0.02384786, -0.014159533, 0.054110337, 0.0009471826, 0.06657679, -0.01761252, -0.04747753, 0.05484446, -0.011455835, -0.027097031, -0.0036246646, 0.032040987, 0.0013590378, 0.057937976, 0.0007332208, 0.009200356, -0.01315039, 0.01564437, -0.00033087964, 0.004852196, -0.04083583, 0.014403941, 0.027139423, -0.018829904, 0.02529654, -0.04214709, 0.03739764, 0.021140777, -0.004407359, -0.02709661, -0.0035743457, -0.048971877, 0.03720398, -0.03304652, 0.04312556, 0.010121322, 0.02064562, -0.023267709, 0.04654895, -0.0008106022, -0.019503504, -0.018350182, 0.048460227, 0.0056518046, 0.0110701965, 0.0047896146, -0.045611914, -0.015849557, -0.04132052, -0.038923282, 0.01655841, 0.03353153, -0.024349356, -0.02512317, 0.0074514514, 0.010037597, 0.016327905, 0.007683067, -0.024798423, 0.051027767, -0.042345826, -0.0419623, -0.017702166, 0.030196518, 0.019821486, 0.0049697487, -0.019112157, 0.0064355554, 0.047562093, 0.037657693, 0.046676647, -4.3976335e-05, 0.05031569, 0.03396495, 0.013224191, 0.030366292, 0.021281373, -0.009438421, 0.02954829, -0.03269006, -0.055975106, -0.045847017, -0.01008316, 0.013520185, -0.0033134476, 0.03237784, 0.035680875, 0.0010094472, 0.041819375, -0.041620642, 0.021555169, 0.0022419472, -0.0040407483, 0.014027605, -0.05440295, -0.031922165, 0.020184714, -0.031673532, -0.049568094, -0.051687412, -0.010961946, -0.03301608, -0.0092921145, -0.019395255, 0.00987311, 0.015767206, 0.00878385, 0.0055114185, -0.029013807, -0.046767775, -0.011581236, 0.024147237, 0.007949567, -0.030541986, -0.0043185605, -0.016743565, 0.0018199435, -0.08753489, -0.03330615, -0.024093216, 0.032124817, -0.015898712, -0.008693783, 0.060859863, 0.0025840325, -0.0037350282, -0.003950312, -0.011367037, 0.037457265, -0.055380583, 0.021300402, 0.017568544, -0.011933654, -0.0632904, -0.011904901, 0.0026427028, -0.01396978, 0.016548209, -0.044720124, 0.013349353, 0.01016403, 0.0036343902, -0.0037868274, 0.029453149, 0.005499579, -0.018337708, 0.016702972, 0.0014195052, -0.094867095, -0.03471424, 0.0083681885, -0.02404829, -0.046981946, -0.015378186, 0.025794232, -0.011275067, -0.034562014, 0.055697717, -0.00417162, -0.0048087486, 0.00825275, -0.055533253, 0.006152617, -0.022639778, -0.043303158, 0.011837456, -0.04077367, 0.042211358, 0.0061237044, 0.014824253, -0.031504393, 0.006932192, 0.008712547, 0.00093280565, 0.04645169, 0.015960872, 0.0071529197, 0.007486759, 0.025934197, -0.006076768, -0.047506277, -0.043966185, -0.043047756, 0.0066435975, 0.0045142337, 0.018634971, 0.034348898, 0.014858398, -0.016797267, -0.0047561037, 0.02080588, 0.0032324719, 0.028811263, 0.026012002, 0.023058584, 0.01693089, 0.006427944, 0.010511744, 0.009369707, -0.014644965, -0.027483411, -0.0041870545, 0.03731984, 0.0514485, 0.022792002, 0.034314543, 0.017617596, -0.011152228, -0.008255711, -0.0048499233, 0.008517877, -0.08147462, 0.0021523032, 0.0644693, 0.00131929, 0.007113172, 0.04839088, 0.009643238, 0.036216203, -0.06414118, 0.00059917755, -0.065041, -0.05512264, -0.008274316, -0.012985492, 0.0045256508, 0.005137408, 0.019449616, -0.0076756673, 0.06389026, 0.012566237, 0.021003773, 0.024098184, -0.04185532, 0.030595686, -0.036216203, -0.013740912, 0.022348436, 0.0038496207, 0.013551265, 0.023610216, -0.035540067, 0.027848858, 0.0004397633, -0.041759122, 0.025117252, 0.01043423, -0.062037073, -0.0026470372, -0.009621303, 0.0070795557, 0.028476367, -0.015914358, 0.025515785, 0.03496129, -0.012866461, -0.054653276, -0.010178777, -0.029193096, 0.010802109, 0.026982863, -0.0019814193, -0.007968596, -0.019906903, -0.026222581, 0.053881157, -0.032293852, -0.037643738, 0.03379412, -0.004378605, 0.054583974, 0.038871855, -0.047703855, 0.050231118, 0.023293924, -0.050366748, -0.011764514, 0.00046386573, -0.019500121, -0.04246253, 0.003234586, -0.014486819, 0.06533191, 0.044935357, 0.06256394, 0.018530844, -0.08335545, -0.041689985, -0.014988635, -0.049457304, -0.04596626, -0.039549097, -0.0014855756, 0.016031064, 0.037897874, 0.0014833555, -0.019820642, 0.07081374, -0.0017979555, -0.0031375422, 0.0058504376, -0.009865498, -0.054134868, 0.013742603, -0.043128945, 0.057718936, 0.008531408, 0.03578997, -0.030355087, -0.013112135, -0.038119026, 0.02526694, 0.0153223695, -0.0016607408, -0.017113559, 0.02795309, -0.025843285, 0.000654148, 0.047452997, 0.05289338, -0.050210822, 0.039481446, 0.015208966, -0.027375268, -0.01624714, 0.03980281, -0.019971175, 0.050960325, 0.025179833, -0.00033531955, 0.03516221, -0.013478746, 0.09901441, 0.040536877, 0.03666146, 0.022468524, -0.010422391, 0.027690712, 0.03315139, -0.036144316, -0.009489797, 0.01111375, -0.0320579, 0.013175563, -0.0030085733, -0.007698818, -0.0010681174, -0.024976866, 0.05253142, -0.035390798, -0.07378214, -0.048580736, 0.0669861, -0.038291547, -0.049439546, -0.01349566, 0.0070688254, -0.023614867, -0.013197128, 0.028042948, -0.02418656, -0.013633508, -0.069036074, 0.0042745844, -0.007897135, -0.004715616, 0.014463139, 0.024996316, 0.025484286, -0.028904501, -0.028515691, 0.002594498, -4.1862088e-05, 0.06893013, 0.022387125, 0.036390945, 0.02862098, 0.016820947, -0.009919623, -0.01523003, -0.038478024, 0.034635592, 0.049525067, 0.0047798892, -0.039176993, 0.0019226959, 0.0087149255, -0.023323525, 0.028907673, -0.020596992, -0.013878338, 0.025180679, 0.02355905, -0.038371466, 0.01303729, 0.015136632], [-0.044177886, -0.05869127, -0.027778367, -0.03787703, 0.016384305, 0.023777846, -0.025153406, -0.036645968, 0.015384438, 0.027542852, 0.0053744763, 0.01422391, -0.041658126, -0.017359182, -0.010359744, 0.005870199, 0.045374155, -0.04693805, 0.040642373, 0.048103094, -0.0030026634, 0.0073906705, -0.04147534, 0.014214035, 0.016432729, 0.04507421, 0.034918018, 0.024331754, 0.0072400398, 0.008546145, 0.018735256, -0.05395607, 0.0017855586, 0.023266431, 0.014711863, -0.0069405003, -0.015999785, 0.004174789, -0.04025345, -0.038751736, -0.050065313, 0.021905968, -0.017935593, 0.011014231, -0.00015388458, 0.06577685, -0.003405749, 0.034579623, -0.042522673, -0.039802898, 0.030864578, -0.016255973, -0.02360827, 0.022672711, 0.0076712607, 0.012187505, 0.048840363, 0.0006222612, 0.024529662, 0.012894149, -0.021802993, 0.011523352, -0.09612886, -0.0156445, 0.020618238, 0.019561334, -0.004795687, -0.008611052, -0.0076333643, -0.051350746, -0.038309604, 0.028005844, 0.016345453, -0.038543493, 0.041049667, 0.035819024, -0.078035556, -0.010171694, -0.0023519075, -0.02335524, 0.017335366, 0.00629319, -0.018049186, -0.048787344, -0.06478771, 0.009634246, -0.024346683, -0.020348221, 0.054430354, 0.0031098467, -0.048073236, 0.024391662, 0.07672486, 0.03277665, -0.0055495105, 0.008307853, -0.003095683, 0.03491725, 0.01213353, 0.024235673, 0.04645783, -0.031523287, -0.026552457, -0.028367972, -0.005044505, 0.002870981, -0.008726825, -0.018679941, 0.009102923, -0.0052382, -0.010122121, -0.004487128, 0.025693366, -0.037603725, 0.0038213474, 0.029464303, 0.03369613, -0.019884797, -0.029299317, 0.011370616, 0.008153778, 0.020573832, 0.00085481064, 0.047112364, -0.046272557, -0.02190214, 0.017243937, -0.016864792, -0.05617859, 0.023244226, 0.025972042, 0.016321719, 0.023229681, -0.035791755, -0.030023187, 0.034488518, 0.015874993, 0.047393005, -0.009636543, 0.036109094, -0.01851132, 0.0051067397, 0.012451636, 0.01140277, 0.021877054, -0.019942217, -0.0021921853, -0.06109218, -0.007822849, 0.01046951, -0.014607168, 0.0075740307, 0.012201286, 0.009606111, 0.01140124, -0.0588191, 0.014137284, 0.007252481, -0.04350876, 0.02881929, 0.00696567, 0.013210531, 0.016602691, 0.0036735157, 0.009318798, -0.05475535, 0.015017527, 0.012845151, -0.007940751, -0.037619803, 0.0688668, 0.008607967, 0.0004921818, 0.030393735, -0.024631485, 0.0023794689, 0.026348714, -0.025320139, 0.03616211, 0.013224503, 0.013140862, -0.009450886, 0.0046404623, -0.0147349145, -0.0052290135, 0.047233377, -0.029869206, -0.0076459963, 0.023083452, 0.0082931155, 0.013790661, -0.030486468, 0.05008742, -0.011043945, -0.022911958, 0.03176396, -0.018618502, -0.010723688, 0.01724072, 0.042519756, 0.031550165, 0.0035898746, 0.00090722996, -0.039021987, -0.04510962, -0.04006205, 0.037842546, 0.030686574, 0.050823253, -0.016726144, -0.0051897764, 0.045232877, 0.015435159, 0.035879605, 0.03618814, 0.029315777, 0.017984733, -0.03397155, 0.053729065, 0.06015126, 0.0010128821, -0.0037043071, 0.028986953, -0.035324167, -0.040897314, 0.02909969, 0.0002873852, 0.025861794, 0.0016338753, 0.007599391, 0.08228614, 0.0064309975, -0.016084384, -0.052934, -0.015268069, -0.00049093773, -0.02420103, 0.02751821, -0.05511969, 0.017852142, -0.018175988, 0.029709676, 0.049644236, -0.03638413, -0.005984273, -0.04325688, -0.052604027, 0.012658346, -0.0068799234, -0.003364024, 0.049233876, -0.01189677, -0.027869185, 0.007714709, -0.028989011, -0.006810158, 0.011683362, 0.0037887967, 0.022454899, 0.018180965, 0.010736895, -0.046480034, 0.002772602, -0.07583716, 0.028379455, -0.0009939336, 0.01694874, -0.009559983, 0.02579132, -0.0632324, -0.037596837, -0.045114975, 0.02412873, 0.000402033, -0.045132585, 0.03161792, 0.015042409, 0.008341922, 0.042600285, 0.019574732, -0.045098137, -0.037218247, -0.0049191387, 0.0063322354, 0.009887945, -0.005405866, 0.012238991, -0.054805875, -0.006884995, -0.020156583, -0.014318156, 0.0031561651, 0.007841845, 0.0193974, 0.040219188, -0.021224396, 0.03602813, -0.007859598, -0.05539424, -0.030846585, 0.038074184, 0.0029628524, 0.065213375, 0.0026679067, -0.011376358, -0.028778713, -0.037306674, 0.040905736, 0.015100594, 0.022623522, -0.050797984, -0.03294283, -0.049276676, 0.031806257, 0.022404753, -0.010435633, 0.052152324, 0.0817575, -0.010043744, -0.0104136225, -0.013985887, 0.0028342323, 0.0034007728, -0.028677654, 0.043717768, 0.05577359, 0.024768528, 0.015206629, -0.04810386, -0.027131345, 0.056102794, 0.04769044, 0.007968551, -0.007691932, 0.023024501, 0.008344697, -0.024925856, 0.018932205, 0.035371825, 0.052959263, 0.02299292, -0.054842625, 0.0054774485, -0.021726724, 0.03993037, -0.058372784, 0.014414812, -0.0676916, 0.012254782, 0.0016743562, 0.010571144, -0.009658506, 0.020275824, 0.0065041115, -0.031152416, 0.0208093, 0.0051749907, -0.036298387, -0.02751261, 0.0021932381, 0.0051951357, -0.049835637, -0.05433427, 0.06779506, 0.017775582, -0.01650412, 0.05373634, -0.018410644, 0.023421366, -0.018460408, 0.058367547, 0.011856002, -0.012824863, 0.03157792, 0.025832705, 0.059645966, -0.035676725, -0.00890406, 0.0076249423, -0.013430832, 0.013008223, -0.03039474, 0.043674894, 0.01057411, 0.037859816, 0.05640444, 0.03642007, 0.03884577, -0.03867862, 0.017002333, 0.027371168, 0.032316145, 0.039866824, 0.027422844, 0.022153636, -0.019485157, 0.04074362, -0.00015465017, 0.008252778, 0.012094055, 0.00014508024, 0.045598835, -0.028043743, -0.020351427, -0.0035600164, -0.0069833286, -0.012682846, -0.014289638, -0.004525623, 0.030423211, 0.046426058, 0.0084648, -0.031913057, 0.022337763, 0.03284096, -0.01737556, -0.03618029, 0.025364159, 0.0070017483, 0.01876856, 0.013370924, 0.03466633, -0.04296777, 0.02935444, -0.0042622583, 0.0012984489, 0.0028988295, -0.03154251, -0.04590048, 0.028555924, 0.022838078, 0.029079974, 0.01375353, 0.052153856, 0.048688773, -0.04550696, 0.01557086, -0.0036488255, -0.08008199, -0.0055618556, -0.030055726, -0.04819956, 0.02898083, -0.006842122, -0.01649436, 0.018509405, -0.044011295, 0.020805806, 0.0017479489, -0.03941589, 0.033375345, -0.019126091, -0.028462522, 0.0052328412, -0.060307443, 0.048263106, 0.04078018, -0.020887343, -0.012479197, -0.0049427766, -0.04908478, -0.018260587, 0.02538732, -0.02151903, -0.0102056675, 0.008219044, 0.02788756, -0.042187724, -0.011512156, 0.01530118, 0.015090593, -0.0015147296, -0.016143335, -0.030885248, -0.017547436, -0.025082994, 0.041228816, 0.00032537783, 0.011648526, -0.0039657815, 0.009478448, 0.04703739, 0.026908366, 0.025142903, 0.028082022, -0.005230544, -0.024114946, 0.016959172, -0.039774187, -0.016703751, 0.008157413, 0.0149700595, 0.005575445, 0.06145124, -0.04172416, -0.03380867, 0.015539303, 0.05552154, -0.026391588, 0.0047071166, 0.021492355, 0.046259537, -0.033725988, 0.012473838, -0.006137392, -0.0687443, 0.002946392, 0.052871983, -0.009575678, 0.011624028, -0.027383799, -0.02059814, 0.0059176655, -0.056878727, 0.066617094, 0.037592623, 0.014729281, -0.046473145, -0.0019185808, -0.035698924, -0.039805576, -0.0052753314, 0.015425972, 0.012528769, 0.015245579, -0.031053942, 0.030753182, -0.010495541, 0.03402227, 0.0015723406, -0.00025494312, -0.020632783, -0.023425769, 0.042450707, 0.017588394, 0.017287899, 0.017111931, 0.0029872316, 0.0015443007, -0.01147531, -0.036568627, 0.034388993, 0.016526131, 0.0059146034, -0.03200646, -0.008760942, -0.010366107, 0.019540088, 0.019378522, 0.005030724, 0.022311732, -0.027853874, -0.13243568, -0.050516248, 0.05571483, -0.03191581, -0.03213738, 0.024007143, 0.039875243, -0.003367852, -0.04390945, 0.018196851, 0.019840583, 0.034599148, -0.0052979165, 0.025508856, 0.016864907, -0.05751532, -0.035805345, 0.018626194, -0.011858682, -0.066784374, -0.06690687, -0.032385048, 0.02140297, -0.04577339, 0.058839735, -0.030474506, 0.019593105, -0.025706762, 0.014016512, -0.02686932, 0.018273985, 0.007528083, 0.02173524, 0.029675415, -0.004312979, -0.0015166434, 0.028839195, -0.01881611, 0.02171189, 0.019085301, 0.027356239, -0.012525898, -0.014698358, -0.02371239, -0.031874012, 0.037491184, 0.020048441, -0.06314015, -0.046197336, -0.04951715, 0.013537631, -0.01756734, 0.051767997, -0.004695585, -0.0022717116, 0.0633425, -0.01128372, 0.04144127, 0.011947874, 0.026872382, -0.007522161, -0.0065416256, -0.008921861, 0.00557889, -0.049647298, 0.0060571954, -0.025683414, -0.011750925, 0.041680135, -0.003694761, 0.009290087, 0.052597135, -0.032703917, 0.025838828, -0.009044762, 0.06607314, 0.025307698, 0.0010890588, 0.04442288, -0.001930639, 0.063657686, -0.005928767, -0.047316063, 0.044705383, -0.012266841, -0.03426803, -0.009453949, 0.008948656, -0.0057926825, 0.05449045, -0.03116507, 0.007289325, 0.009984314, 0.038446646, 0.012306938, -0.014226285, -0.05078727, 0.029718097, 0.03461025, -0.012381009, 0.020614408, -0.041705783, 0.0355971, -0.0008249285, -0.0029364391, -0.022986509, -0.0020764847, -0.038369704, 0.0437415, -0.042435396, 0.03938986, -0.012162241, 0.031700224, -0.043582637, 0.02834462, -0.0045148088, -0.036625102, -0.019290311, 0.053513363, 0.0017728307, 0.025565034, -0.009218528, -0.0071573555, -0.008095783, -0.041447014, -0.03887021, -0.0028487786, 0.02485437, -0.011628621, -0.007429237, 0.020558903, 0.020688672, 0.0340684, -0.0021552455, -0.0032139674, 0.04350072, -0.04802424, -0.049593706, -0.02623043, 0.008527579, 0.030855771, 0.0020556224, -0.000847705, 0.009292792, 0.04511268, 0.055872686, 0.007316791, 0.028745025, 0.062459625, 0.065504305, 0.0013818989, 0.051836137, 0.040763095, -0.0014654443, 0.02186271, -0.0041211974, -0.04318453, -0.052565552, -0.0023356387, 0.013170481, -0.018329874, 0.050967183, 0.04322434, -0.013470642, 0.030016296, -0.033702254, -0.004144165, -0.009809568, -0.000592068, -0.011897345, -0.03909893, -0.04882505, 0.012447041, -0.022130333, -0.02921357, -0.042009722, -0.008198182, -0.0225105, -0.01647254, -0.03375661, 0.0013244791, 0.0068168575, 0.023889624, -0.011513017, -0.023565013, -0.055211645, -0.006738192, 0.0016744996, 0.0033020107, -0.032316145, 0.010396013, -0.0098899305, 0.022271922, -0.07133967, -0.05206045, 0.007083667, 0.025010835, -0.026226984, 0.003360196, 0.06395168, 0.007862277, 0.009774924, 0.0049625863, -0.0031277423, 0.020840451, -0.057413876, 0.03812433, 0.018748462, -0.012623093, -0.05003316, 0.0018412558, -0.00023542045, -0.009929766, 0.009625537, -0.031404417, 0.0054556294, -0.0024338262, -0.004790997, -0.018271018, 0.018504428, -0.027713772, -0.011177064, -0.004227615, -0.014090583, -0.077821195, -0.0074438797, 0.013609703, -0.038576797, -0.07613076, -0.0046015126, 0.010035418, -0.023920631, -0.029643834, 0.07873378, 0.0019204948, 0.011694175, -0.012042808, -0.034286402, 0.0088350605, -0.013232542, -0.025254678, 0.008082002, -0.027263984, 0.045392122, -0.016942998, 0.022795828, -0.020291328, -0.0060175755, -0.0004651946, 0.007237169, 0.048848785, 0.017136311, 0.01662566, 0.009533571, 0.018314082, -0.0051983893, -0.04459208, -0.027328867, -0.031886645, 0.0015066908, 0.0060903076, 0.00468946, 0.058773194, 0.026003957, 0.001130018, 0.008617536, 0.012835964, -0.029867388, -0.008624284, -0.004287714, 0.0062579727, 0.005999202, 0.015152655, -0.00033839294, -0.0053913193, -0.008261284, -0.01908831, -0.0021918982, 0.05053845, 0.037749954, 0.015929732, 0.04892764, 0.014646596, -0.010324239, -0.004051145, 0.0026328808, -0.012849744, -0.0715571, -0.006455879, 0.07538354, -0.015616509, -0.027989384, 0.050743245, 0.022817027, 0.04911138, -0.07176533, -0.00085708353, -0.06302186, -0.046444047, 0.0017536908, 0.018621948, 0.015801113, 0.016192332, 0.0017118702, -0.0090447385, 0.036733244, 0.01156546, 0.019836947, 0.02225033, -0.018615441, 0.029923279, -0.033361565, -0.010017044, 0.026002666, 0.028477833, 0.028789813, 0.006800445, 0.0014140537, 0.01594581, 0.0061456216, -0.046944845, 0.04302337, 0.0028449506, -0.068300255, -0.022972345, 1.5311899e-06, 0.0067908266, -0.0012490681, -0.01162819, 0.021285452, 0.032672912, -0.02918218, -0.028284904, -0.03794958, -0.046380885, 0.0014444862, 0.034608718, -0.013722714, 0.0034689824, -0.005484339, -0.01610295, 0.059281543, -0.004734678, -0.047270894, 0.04081846, -0.0046565398, 0.048988886, 0.034880504, -0.021130513, 0.043822654, 0.0010794889, -0.03040273, -0.030199656, -0.012591931, -0.012561307, -0.0067912093, 0.03326127, -0.0029653406, 0.037649997, 0.04499248, 0.04563443, 0.014383231, -0.10671168, -0.021645952, -0.0334787, -0.030102726, -0.055937424, -0.040374413, 0.015859298, 0.0041160295, 0.048519578, -0.008213613, -0.025135055, 0.08122043, -0.0061004036, 0.0039045338, -0.022581222, 0.002841123, -0.081101, -0.01005073, -0.028725313, 0.06715186, 0.0132302465, 0.04412889, -0.0031657352, -0.02115645, -0.042607654, 0.029911792, 0.03006874, 0.030044243, 0.0009129719, 0.029256156, -0.034284487, -0.02215402, 0.038133707, 0.04846216, -0.050239485, 0.07560977, 0.019132983, -0.031252734, -0.043298986, 0.038650293, -0.053717203, 0.05055204, 0.03961035, 0.009169147, 0.029879445, -0.044077788, 0.10385755, -0.0012636144, 0.013424611, 0.0098044, -0.008998803, 0.010016948, 0.0006147727, -0.05078038, -0.0019752348, -0.0017222058, -0.0012567241, -0.01819757, -0.003971141, -0.012224062, -0.004673, -0.026206698, 0.040700175, -0.02814607, -0.040743046, -0.034485072, 0.06639038, -0.030034289, -0.029434826, -0.008788168, -0.002702933, -0.045229815, -0.013533805, -0.0037384, -0.019302944, -0.0014079768, -0.07404834, 0.024458459, -0.01205965, 0.012073431, 0.010879103, 0.025613744, 0.028170064, -0.0118177235, -0.025858209, -0.007133813, 0.005519413, 0.056986865, 0.006728144, 0.038428463, 0.024918774, 0.0040683714, -0.012479388, -0.0032151158, -0.03356751, 0.046796225, 0.06337978, -0.015756708, -0.0127555765, -0.016497038, 0.035118986, -0.025691833, 0.021902474, -0.00952778, -0.013011669, 0.058323022, 0.039671622, -0.04470596, 0.014057854, 0.010879869], [-0.04493753, -0.09917237, 0.007793054, -0.024657601, 0.020190557, 0.02334179, 0.012279016, -0.042818025, 0.033173665, 0.076094165, -0.0024528187, 0.017265076, -0.017135661, -0.02088818, -0.018966692, 0.015998654, 0.018879335, -0.025296757, 0.038263656, 0.048293613, -0.006366183, 0.0034271323, -0.049829695, 0.0150935715, 0.014063364, -0.008457233, 0.0356764, 0.044835847, 0.014826783, -0.01774682, -0.0011220847, -0.029503552, -0.022840505, -0.01789492, 0.016308986, -0.0042030965, 0.022594087, 0.0027224782, -0.028113259, -0.060037144, -0.07126195, 0.042485237, -0.015526683, 0.03543071, -0.013045075, 0.018636748, 0.024600025, 0.06011426, -0.0074342564, -0.04462878, 0.026262486, 0.0007379321, -0.04635027, 0.017799642, -0.02843178, 0.030614939, 0.00796618, 0.017074915, -0.027751952, 0.007152184, -0.015257816, -0.004131522, -0.080987655, 0.011334547, 0.016229223, -0.020141928, 0.028505202, 0.009027915, -0.027755914, -0.05708964, -0.00830649, 0.044246342, 0.039661344, -0.0051480937, 0.033811666, 0.050800577, -0.043044105, -0.01785035, 0.014893075, 0.011289781, 0.027423397, 0.008063902, -0.03260985, -0.06797427, -0.04267223, 0.01575382, -0.011084037, 0.01756458, 0.034866467, 0.012114869, -0.045897186, 0.0003210295, 0.05069493, 0.0171832, 0.004230036, 0.04342231, 0.0046176882, 0.0084969485, 0.0005757666, -0.01155906, 0.0376076, -0.0043758266, -0.004983815, -0.013412193, -0.0022417924, -0.021630337, 0.015178846, -0.011792123, -0.025773216, 0.029620817, 0.015402285, -0.027766742, -0.005079424, -0.050291367, 0.0080353785, -0.017034242, 0.006482525, 0.012302389, -0.013140157, -0.012791528, 0.016199643, 0.026295103, 0.010892158, 0.026118148, -0.032625895, -0.0026984068, -0.003483124, -0.0071970834, -0.05389651, 0.02755545, -0.00999721, 0.008566245, 0.07993437, 0.01791321, -0.0114946, 0.04096923, 0.04223486, 0.06430627, 0.02931466, 0.013632464, -0.037683662, -0.04526371, 0.01907742, 0.013589414, 0.026409201, -0.03973582, -0.0002493228, -0.042927895, -0.014318102, -0.0036748701, -0.016825989, 0.0074089016, 0.018066395, 0.005628383, 0.013776934, -0.050451946, -0.02733888, 0.005386323, -0.06564532, 0.009984005, -0.0069058985, 0.016001822, 0.02757711, 0.004024556, 0.0022228092, -0.048157334, -0.0057365373, 0.0010374364, -0.019149259, -0.0022843147, 0.07050342, 0.020664211, -0.021330833, 0.037343483, -0.07213722, -0.00688226, 0.0627892, -0.000642059, 0.02091776, 0.016108789, -0.016574683, -0.015097235, -0.009576347, 0.017652266, 0.011328605, 0.045778204, -0.009625339, -0.018188944, 0.012759834, -0.023067642, 0.012992254, -0.0049267667, 0.020191185, 0.0013733883, -0.016115127, 0.010628969, -0.003354237, 0.0061823605, 0.017340085, 0.015211861, -0.011904107, -0.012021902, 0.014254186, -0.038731664, -0.038201325, -0.053843163, 0.0036796243, -0.0019988082, 0.03770268, -0.024825051, -0.011765316, 0.035062604, 0.016041836, 0.028986417, 0.001190622, 0.04608616, 0.0058096964, -0.01439051, 0.05213382, 0.018518029, -0.010036827, 0.019932356, 0.061684154, -0.022651399, -0.018923178, 0.009067533, -0.02079944, 0.003786326, 0.023218714, -0.0105881635, 0.07510955, -0.0022145887, -0.009626396, -0.033200078, -0.026452053, -0.000361835, -0.022697883, 0.011953628, -0.056966033, 0.010505364, 0.0011799254, 0.039207067, 0.044232346, -0.0070452844, -0.016104035, -0.011960099, -0.019664807, 0.021463947, -0.0101863155, -0.032388724, 0.07133801, -0.0009818076, -0.019165106, 0.008867995, -0.016259598, 0.0076994263, -0.0038810766, -0.0004932313, 0.030894898, 0.039990295, -0.023764966, -0.04228768, 0.0010616027, -0.02727338, 0.01610377, 0.0023273649, 0.047451623, -0.013647254, -0.030214544, -0.06939626, -0.024710424, -0.038829386, 0.019628888, 0.010620121, -0.05258281, 0.026222209, 0.019662695, 0.031298462, 0.042150743, 0.028977437, -0.046113096, 0.0037398422, -0.011426591, -0.015408888, 0.023893919, -0.0003765428, 0.03718713, -0.017997727, -0.035179872, -0.028011179, -0.021411125, -0.013888124, 0.030030653, 0.042367972, 0.02552921, -0.0054841773, 0.023346543, 0.0188693, -0.07843104, -0.017692411, 0.041834995, -0.041926377, 0.001981905, 0.034743555, -0.00092122663, -0.03003072, -0.040874414, 0.013972642, -0.01676379, -0.010877235, -0.04193483, -0.03111464, -0.055484362, 0.01169493, 0.014082512, -0.043622907, 0.031926, 0.07578146, -0.027274964, -0.030132009, -0.04074209, -0.03569753, 0.016741471, -0.034577694, 0.05720189, 0.061242558, 0.0066989656, 0.008312878, -0.05565577, -0.028889354, 0.05387109, 0.023435287, -0.007160702, -0.009204343, -0.002765793, 0.021452324, -0.014245735, -0.008556738, 0.002467873, 0.020789204, -0.006660933, -0.06697909, -0.004110393, -0.011985586, 0.024463214, -0.050821707, 0.017266, -0.0716951, 0.0051496783, 0.01617693, 0.027679058, -0.0059165307, 0.019364774, 0.022508778, -0.015034772, -0.043304652, -0.0071516554, -0.027590578, -0.031068156, 0.025757898, -0.033641145, -0.0064887316, 0.003018021, 0.03878871, -0.011686478, -0.0068648285, 0.09607802, -0.01713652, 0.055148937, 0.00950464, 0.07935227, 0.028139671, 0.02799969, 0.010462577, -0.02817242, 0.067934126, -0.0750673, 0.036650453, 0.046363477, 0.03797313, 0.04168339, -0.012465084, 0.066421285, 0.03394382, 0.028519994, 0.0436822, 0.02776608, 0.026157238, -0.04565288, 0.032760594, -0.009430688, 0.047815043, 0.038523544, 0.020430736, 0.006685281, -0.010185787, 0.044068333, 0.013724837, 0.025126666, -0.0059932554, -0.0073402324, -0.0026696557, -0.013555078, -0.028745018, -0.0023965295, -0.01649862, 0.011962741, -0.024600554, 0.004619867, 0.0033510677, 0.046896454, -0.021966292, 0.016216546, -0.012584991, 0.023290552, -0.025933664, -0.0037894952, 0.022820564, 0.02718675, 0.013793045, 0.024525018, 0.034955375, -0.06278286, 0.017854048, 0.026322572, -0.044825282, 0.043124396, -0.040812876, 0.0030376972, 0.025105538, -0.028323228, 0.038089342, 0.011910446, 0.070271, 0.021232056, -0.05317284, -0.010712429, -0.036915094, -0.05937052, -0.026168859, -0.041193195, -0.015344049, -0.0143783195, 0.02127537, -0.020308187, 0.04472386, -0.012607308, 0.019941598, -0.009104508, -0.017250285, 0.005859878, -0.038993895, -0.014630811, -0.016843023, -0.034023054, 0.059600826, 0.04339062, -0.03798528, -0.03181335, -0.034749895, -0.049137723, -0.0011473075, 0.0364698, -0.027370574, 0.00553251, -0.0004378996, 0.024987217, -0.03749086, -0.0074136555, 0.017076103, -0.0039136284, -0.010999784, -0.0072609987, -0.04292367, -0.044054072, -0.037686303, -0.011998263, 0.0054538706, 0.005373943, 0.010246534, 0.02484103, 0.017889308, -0.0005442877, 0.009472418, 0.061399966, 0.01788046, -0.017342726, 0.0160248, -0.041113965, -0.031706255, -0.00047698835, -0.008971395, 0.029075688, 0.08979002, -0.06277864, -0.016776467, 0.025789062, 0.011749337, -0.06871801, -0.0053712027, 0.036929354, 0.05005842, -0.026737757, 0.0009893678, 0.003657967, -0.056063827, 0.022265794, 0.0308706, -0.021959422, -0.0024847763, -0.040717795, -0.01550661, -0.015318858, -0.03457558, 0.062594816, 0.04867077, 0.026931088, -0.04678923, 0.0059274915, -0.007896323, -0.025871994, -0.027608935, 0.047553044, 0.025138289, -0.010057429, -0.042477842, 0.014501397, -0.037735496, 0.042807456, 0.0019766227, 0.017494854, -0.037242066, -0.014121601, 0.039667152, 0.008285757, -0.008184338, 0.012738705, 0.039610367, -0.014982611, 0.0032348577, -0.026457798, 0.027387476, 0.013223617, -0.0078457445, -0.0052146497, -0.011637221, -0.017184258, 0.022885405, 0.01078506, 0.011225865, -0.022746481, -0.012883967, -0.06015441, -0.074277066, 0.05065267, -0.044954166, -0.0046601444, 0.031836726, 0.038304858, 0.062303897, -0.052564852, 0.0062182792, 0.036233153, 0.0004281274, -0.005623761, 0.023301646, 0.0055358773, -0.046021186, -0.08405982, 0.058008302, -0.007301144, -0.028297346, -0.027194144, 0.010262116, 0.016331963, 0.0014061384, 0.026619567, -0.008302661, -0.053700536, -0.028700648, -0.009579912, -0.041003037, -0.011001633, -0.024413563, 0.06443938, 0.0572297, -0.031111471, 0.004813594, 0.01719799, -0.0059193037, 0.03835451, -0.008035907, 0.03169569, 0.038865834, -0.008305302, -0.03453332, -0.008464297, 0.04177847, 0.020272268, -0.019563388, -0.0323528, -0.030131083, 0.001580453, -0.02458365, 0.03375049, -0.029525736, 0.015799511, 0.050160363, -0.012354156, -0.0023004254, 0.0082561765, 0.036646225, -0.041922152, -0.023966683, 0.011915464, -0.0061081448, -0.05202184, -0.008886879, -0.031799223, -0.02580491, 0.036895547, 0.023689892, 0.022549847, 0.035702284, -0.034535434, -0.003417624, -0.0035702814, 0.08847157, 0.0353526, -0.022238327, 0.0345629, 0.006986321, 0.051916193, -0.019702807, -0.080463655, 0.06522115, -0.014941408, -0.036438104, -0.019772565, -0.011444155, -0.03209186, 0.012891494, -0.0413411, -0.03838409, 0.009858947, 0.015678814, 0.014817803, -0.022574013, -0.0073085385, 0.023636013, 0.043188836, 0.009767961, 0.0010860332, -0.05182187, 0.021917691, -0.0035900238, 0.0027295433, -0.013296643, 0.025988467, -0.051068913, 0.028786218, -0.052522596, 0.015018529, -0.006274536, 0.04456117, 0.0025270346, 0.022022808, -0.0352253, -0.007241982, -0.023019044, 0.025946476, 0.029974729, 0.012963729, -0.024841426, -0.017697793, 0.0009994041, -0.046470176, -0.012239532, 0.018544968, 0.009397079, -0.030408401, -0.043567047, 0.047841456, 0.0078129945, -0.0042828587, 0.006491373, 0.008691963, 0.027918871, -0.019965896, -0.03738363, -0.015118892, 0.04168339, 0.04196652, 0.0028814743, 0.026542313, -0.012412526, 0.06262069, 0.046116002, -0.0029020752, 0.01976702, 0.06854687, 0.029136961, 0.0009788033, 0.03566161, 0.05540037, -0.025467373, 0.02902709, -0.003995768, -0.04795238, -0.05785134, -0.002810164, 0.0033056398, -0.05424435, 0.03581691, 0.048026334, -0.0140243415, 0.029278526, -0.03435095, 0.008261459, 0.027096951, 0.016307402, 0.018000895, -0.026651127, -0.049606785, 0.028986944, 0.0059647313, -0.0155008, -0.06791617, -0.013340355, -0.0152663, -0.022278473, -0.048257697, -0.007369549, -0.0034983107, -7.923394e-05, -0.029078856, -0.024406167, -0.03703711, 0.028490413, 0.029927189, 0.0027676416, -0.030163832, -0.007009563, -0.026941653, 0.020497292, -0.02898886, -0.039904326, -0.013389479, 0.00028101637, 0.026821218, -0.010999388, 0.02591478, 0.03353286, 0.008248254, 0.010045015, 0.0033214868, 0.023641823, -0.05619694, -0.000592934, 0.0022544698, 0.01496782, -0.041896798, 0.015428433, 0.028329434, 0.0130915595, 0.0026205305, -0.026429273, 0.010740161, 0.014906776, -0.0103410855, -0.022575865, 0.019849686, 0.00010307015, -0.008715734, -0.032448675, -0.029922962, -0.0855304, 0.0086157005, 0.010475783, -0.014615807, -0.08488596, 0.025643801, 0.014042366, -0.027719729, -0.045372527, 0.044905573, -0.030008534, -0.025150966, -0.01546673, -0.057990797, 0.02122149, -0.0058527472, -0.012083705, 0.01699753, -0.05048998, 0.02692475, 0.005248192, 0.039955035, -0.039564148, -0.015345502, -0.018138763, -0.017018262, 0.057143517, 0.022546811, 0.00927222, 0.0013665215, 0.009244489, -0.01618591, -0.027976975, -0.06577896, -0.019468704, -0.0057967547, -0.001491711, 0.010260267, 0.007406789, 0.027050335, -0.039933905, 0.0050065285, 0.037364613, -0.054975677, -0.016395615, 0.0076254746, 0.031510282, 0.016497562, 0.01508403, -0.013695851, 0.014963066, -0.016805783, 0.010331578, -0.0044011814, 0.048050366, 0.009564989, -0.003550737, 0.029142246, 0.034747254, -0.005206198, -0.041287225, 0.0014996344, -0.04617543, -0.071789116, -0.011801285, 0.04571059, -0.00083459757, -0.007409958, 0.049830753, 0.006443238, 0.044380516, -0.038332324, -0.001863054, -0.072481096, -0.02850309, -0.032211237, -0.009977139, -0.0030969908, -0.035232693, 0.0097975405, -0.020778308, 0.011266011, 0.040088676, 0.006997942, 0.013645141, 0.00072050066, 0.049966775, -0.026913658, -0.05340685, 0.053937186, 0.0026485266, 0.0006579719, 0.013780367, 0.0013501464, 0.02503687, 0.01484844, -0.067518145, 0.02665377, -0.0030286515, -0.045147497, 0.016835628, -0.0029456539, 0.04702059, 0.0013681061, -0.022564769, 0.030977568, 0.03253636, -0.041126642, -0.054109517, 0.0034922361, -0.005188767, -0.01563233, 0.022128455, -0.0038993664, 0.030558154, -0.015510175, -0.014209815, 0.0055852006, -0.00868952, -0.060619246, -0.01606706, -0.0144665325, 0.052683175, 0.026848685, -0.024684807, 0.08506556, 0.01747531, -0.013056169, -0.021902373, -0.02921197, 0.023494381, -0.033839438, 0.012797866, -0.0019026711, 0.028076282, 0.039384816, 0.019229317, 0.003991278, -0.07097347, -0.020074712, -0.026771365, -0.03437644, -0.02394027, -0.026761528, -0.010443165, 0.014795618, 0.07326076, -0.019755134, 0.012082417, 0.026821218, -0.00965492, -0.028192494, -0.037691057, 0.001729479, -0.026616266, -0.01519126, -0.01993526, 0.045448586, 0.012573634, 0.048972916, -0.019814825, 0.023352357, -0.041374907, 0.017653322, 0.011446135, 0.017483233, -0.007822503, 0.009963403, -0.029163934, 0.0046956674, 0.022437997, 0.03099513, -0.05025122, 0.037122685, 0.02059158, -0.023631522, -0.04021704, 0.04082872, -0.095950186, 0.024133999, 0.0597033, 0.024362653, 0.0015128402, -0.048246074, 0.063621685, 0.020817397, 0.0023247239, 0.015122854, -0.002516536, 0.0129256975, -0.008137326, -0.032957096, 0.0025671797, 0.0048686615, -0.027948452, -0.031398825, 0.021017596, -0.03112263, -0.016108789, -0.0054988354, 0.07734923, -0.039047543, -0.04056725, -0.06899269, 0.06397243, 0.0028397443, -0.028326925, -0.023584774, 0.001181114, -0.059777256, 0.01793764, 0.0035451907, -0.018166758, 0.015096707, -0.045902863, 0.016729983, 0.0021836874, -4.648391e-05, 0.002448857, 0.042816434, 0.0085916, -0.015806643, -0.007033333, 0.029542638, -0.012179049, 0.03167773, 0.038751736, 0.027190976, 0.0042701815, 0.021247637, -0.0021822348, 0.012563598, -0.03335696, 0.030583434, 0.04406569, 0.018768936, -0.0094357, -0.03698429, 0.010920682, -0.0017378645, 0.008695926, -0.013572246, -0.022061704, 0.07853668, 0.02552112, -0.049210615, 0.028013423, 0.017193764], [-0.02622874, -0.06867917, -0.038251296, -0.040371273, -0.0073354333, 0.02375014, 0.031816952, -0.025595805, 0.04884104, 0.023895992, 0.00929452, 0.02278497, -0.07047543, -0.018610118, -0.03489848, 0.03860243, -0.018652817, -0.064611815, 0.023663653, 0.040380456, -0.018374518, 0.008855329, -0.037234128, 0.03597598, -0.013886941, 0.038428493, 0.0071120933, 0.018402299, 0.03902157, -0.0128158545, 0.0059853676, -0.026683878, -0.0062303287, 0.01950076, 0.046240203, 0.011769741, 0.022329653, -0.012409925, -0.038297072, -0.05248647, -0.0747968, 0.028487025, -0.013223081, 0.017614026, -0.002945334, 0.055122584, 0.031816952, 0.026610438, -0.019096356, -0.035162583, 0.038787965, -0.013044554, -0.021811707, 0.0201738, 0.002929873, 0.027095526, 0.027328711, 0.032684706, 0.04416842, -0.029111264, 0.03256295, -0.016270844, -0.051206224, -0.011084576, 0.01848202, 0.016490199, 0.0057486193, -0.014802044, 0.0068876054, -0.048013274, -0.01581716, 0.026123896, 0.006673385, -0.017600015, 0.051585864, 0.019400263, -0.061855882, 0.010898244, -0.012167863, -0.026880765, -0.006873654, 0.033642326, 0.010701599, -0.03827775, -0.084425665, 0.016678631, -0.01914902, 0.0126626175, 0.0583153, -0.010805115, -0.03959774, 0.016914412, 0.029848566, 0.029845668, -0.0023875276, 0.008257662, -0.014749862, 0.038559914, 0.026705137, 0.035803977, 0.018074838, -0.047077697, -0.048466593, -0.026174748, 0.0022104501, 0.000472529, 0.01697046, -0.039850913, 0.007730173, -0.013684015, 0.0099617615, 0.003956102, 0.018864924, -0.08618775, 0.0068062535, 0.007187466, 0.043977086, -0.03532082, -0.049081173, -0.020681117, -0.0048670974, 0.0032901282, 0.010433567, 0.036086142, -0.02522812, -0.030280508, -0.016467974, -0.0036149917, -0.06120845, 0.018955274, 0.040149502, 0.02069996, 0.04475445, -0.021382844, -0.05090171, 0.016728487, 0.00042034787, 0.05715765, -0.030916618, 0.03471397, -0.028690193, -0.008111265, 0.012645224, -0.014921866, 0.020374311, -0.06942093, 0.028069574, -0.04318277, -0.0363857, -0.013986955, -0.011224738, 0.0040377253, -0.014497654, -0.0050586695, 0.0015122861, -0.067346975, -0.022953892, 0.016991718, -0.032920487, 0.012362576, -0.012371274, 0.0087102605, 0.014097357, 0.028270569, -0.020290725, -0.047380455, 0.023276644, -0.0014900608, -0.010235999, 0.03784653, 0.047763117, -0.00013335174, -0.020083932, 0.040215697, -0.059237164, -0.028825236, 0.0060174973, -0.031952236, 0.034371413, 0.040152766, -0.006589316, 0.0042208727, 0.0074162413, -0.003193436, 0.002972693, 0.02432691, -0.047980536, -0.043602157, 0.0079054395, 0.02497108, 0.05318802, -0.02514985, 0.023983987, -0.0063052187, -0.013684558, 0.036780924, -0.04221259, 0.025813708, 0.020901436, 0.038604364, -0.002267463, 0.0040947683, 0.02030232, -0.03284584, -0.048128385, -0.026481917, 0.015832137, 0.029222874, 0.042324685, -0.05049779, -0.00070251245, 0.045779265, 0.03677996, 0.05142642, 0.028637769, 0.02242725, 0.01309746, -0.04991704, 0.049814608, 0.061453894, -0.03126325, 0.008279766, 0.024041967, -0.044645656, -0.023805203, 0.010680218, -0.022539342, 0.009556876, 0.010024316, -0.0006464661, 0.06399628, -0.008634707, -0.018290447, -0.054395188, -0.01598385, 0.0041512977, -0.057221428, 0.03868656, -0.055122104, 0.030129764, -0.019086692, 0.025620325, 0.01982206, -0.019863129, -0.024799075, 0.009190309, -0.06894865, -0.011630592, -0.011210243, 0.0011702098, 0.054471288, -0.005637493, -0.036567368, 0.007611679, -0.017627554, 0.0045186193, -0.0005126312, -0.011647985, 0.0040517673, 0.023770068, 0.012726153, -0.056916073, 0.0043397294, -0.050386667, 0.052273884, 0.008726869, 0.04323109, -0.016408062, 0.010104777, -0.03644368, -0.027636666, -0.08236693, 0.03569575, 0.007285788, -0.032971703, 0.04320983, 0.033331655, 0.009639978, 0.06372667, 0.03839419, -0.05583911, -0.019191297, 0.004656682, -0.0014299076, 0.012150591, -0.000989267, 0.015379599, -0.035728604, -0.02418788, -0.033595942, -0.005843802, 0.03457482, 0.023301769, 0.023788793, 0.041563224, -0.022462038, 0.055898055, -0.013263184, -0.022199713, -0.04710602, 0.033581447, 0.0015150642, -0.0055220183, -0.0039599063, -0.014800111, -0.018363887, -0.055626035, 0.02764488, 0.020316694, 0.014996273, -0.0141666895, -0.031527057, -0.054336973, -0.0009349268, 0.027174765, -0.018936407, 0.053046938, 0.07595541, -0.004513244, -0.0010764771, -0.018383699, -0.03005439, 0.013857952, -0.04824217, 0.013380592, 0.05247874, 0.026097322, 0.0017756075, -0.02929603, -0.014202445, 0.038333915, 0.03544354, 0.0042979363, 0.0012199752, 0.034238543, 0.017436223, -0.025432497, 0.010940641, 0.025953341, 0.03612673, 0.023850637, -0.07604045, -0.013216317, -0.0045656064, 0.051469907, -0.06273717, -0.016589005, -0.056778852, 0.0034067505, -0.0072295005, 0.019446163, -0.024515944, 0.0034265602, 0.010593733, -0.011123759, 0.010165655, 0.0015651919, -0.019039344, -0.005314743, -0.023599634, -0.015026229, -0.030288361, -0.045313504, 0.051347066, -0.00018794865, -0.011538791, 0.054645225, -0.030668486, 0.034891654, -0.033594977, 0.052263014, 0.004914688, -0.02114984, 0.024244893, -0.0078288885, 0.048872445, -0.04191146, -0.008654335, 0.017654128, 0.004242373, 0.01301629, -0.03361782, 0.048065573, 0.007707102, 0.066937745, 0.041049145, 0.0394238, 0.03377785, -0.028593803, 0.033644743, 0.019923523, 0.00540751, 0.030906683, -0.014372032, 0.008619789, -0.023327375, 0.049770158, 0.047896467, 0.009720182, 0.021315021, 0.012956137, 0.01111482, -0.010863335, -0.023782993, -0.034110025, -0.04431723, -0.0634561, 0.006759568, -0.009064053, 0.037612922, 0.034275264, -0.009559291, -0.02316141, 0.024691332, 0.020726534, -0.014090803, -0.020287342, 0.0128462175, -0.0071536447, 0.0043247514, 0.016509525, 0.04796411, -0.038312536, 0.026972804, 0.011730605, 0.00416386, -0.038141258, -0.033020016, -0.062161237, 0.04730339, 0.009693125, 0.0017367132, -0.0017200442, 0.094513535, 0.047770847, -0.003948371, 0.0015235498, -0.00872234, -0.07304487, -0.012005402, -0.019814933, -0.04365772, 0.0122355055, 0.012964169, -0.041298937, -0.014497896, -0.021393895, 0.027654544, 0.034796108, -0.0065987525, 0.009799179, -0.012193713, -0.022411127, -0.037491165, -0.053004418, 0.0389131, 0.067617424, -0.06408614, -0.033777006, -0.04602568, -0.039937276, 0.0024882662, 0.03666424, -0.0053161927, 0.012072681, 0.024913583, 0.03800911, -0.049139153, -0.016466042, 0.03866331, -0.003259387, -0.025804527, -0.0022416138, -0.052892324, 0.016547212, 0.009895086, 0.052973494, 0.009288722, 0.013238544, 0.020944437, 0.031911045, -0.002376113, 0.015525814, 0.014883215, 0.0073568127, 0.02737093, -0.03321425, -0.006038515, -0.0002140392, -0.017286444, 0.00088997796, 0.02713708, -0.012782925, 0.05340834, -0.020378659, -0.037626572, 0.018058773, 0.059067093, -0.024785548, -0.0031393222, 0.029407924, 0.045942575, -0.06010105, 0.024861403, -0.008383102, -0.07259747, -0.005955532, 0.05417753, -0.039988007, -0.004203479, -0.041235644, -0.029524606, -0.010085329, -0.02801353, 0.063749865, 0.028100498, 0.014083103, -0.047917724, -0.023560258, -0.034091663, -0.016077582, 0.00013238542, -0.0023579341, 0.036167312, 0.018092353, -0.025017947, 0.047798507, -0.03400566, 0.029778024, 0.0005841386, 0.00174082, -0.0399746, -0.02659594, -0.018701375, 0.008248361, 0.022339195, 0.016106889, 0.0062317783, 0.010341162, -0.032297213, -0.014013529, 0.006254004, 0.0017345389, 0.01015116, -0.039278854, -0.00076933927, 0.0019247826, 0.016215764, 0.042958587, -0.027902646, -0.009726947, 0.0018630591, -0.108320266, -0.068422005, 0.07636996, -0.00451415, -0.00702597, 0.050567366, 0.032377418, 0.033411376, -0.007487024, 0.002924528, 0.02701919, 0.015004004, -0.00080735784, 0.04832938, -0.0061535067, -0.07202105, -0.06225787, 0.010172902, -0.040960245, -0.038269777, -0.06993284, -0.018827477, 0.0064145783, -0.014106296, 0.006418277, -0.024953686, 0.009124448, -0.024577305, 0.016902817, 0.0063061845, -0.0003116372, -0.013948302, 0.0033218353, 0.015974669, 0.011543139, 0.009639254, 0.041350637, 0.010931581, 0.024287412, -0.007761458, 0.048740063, 0.028136494, -0.05400939, -0.012390116, -0.030400814, 0.01422322, 0.0023351049, -0.013543899, -0.026513806, -0.08546688, 0.0033637492, 0.019243237, 0.012828998, -0.0010011044, -0.0061310395, 0.028769523, -0.008676561, 0.0014828134, -0.018515538, 0.009789274, -0.044655442, -0.020782579, 0.0035415515, -0.012236472, -0.044255387, -0.030215766, -0.04337555, -0.0037913446, -0.0024462314, 0.008797833, -0.00024037134, 0.038887493, -0.0308545, 0.024541553, -0.008594242, 0.07217035, 0.02472636, 0.0053674076, 0.040097322, 0.0010523192, 0.06216184, -0.0012709483, -0.06767698, 0.0877783, 0.007080386, -0.041064605, -0.014320818, 0.002898951, 0.024268748, 0.050433047, 0.01625493, 0.019348323, 0.0055493466, 0.01972422, 0.005934636, -0.0034801906, -0.043895494, 0.018248232, 0.045962382, -0.016568713, 0.016677665, -0.05089688, 0.03320507, 0.008097736, 0.002334622, -0.02509525, -0.012035478, -0.038863335, 0.046088006, -0.05382192, 0.02109446, -0.004704031, 0.003157924, 0.016806427, 0.04012148, -0.013597046, -0.019102154, -0.011552199, 0.066043906, -0.014067642, 0.025655234, -0.033212315, -0.02471259, -0.01840713, -0.041997585, -0.04076553, 0.016797489, 0.044785406, -0.0330664, -0.036563504, -0.02215475, -0.014177803, 0.031674843, 0.017204307, 0.004438777, 0.034403782, -0.059001867, -0.039994895, -0.027554046, 0.026523469, 0.010902471, -0.021065831, -0.019149987, 0.005032579, 0.04779452, 0.004673109, 0.056330483, 0.016286789, 0.028229017, 0.038462315, -0.014390393, 0.030633215, 0.0031134733, -0.029957034, 0.040299285, -0.011267981, -0.0454971, -0.065779135, -0.00083441474, 0.022852913, 4.2759526e-05, 0.036681633, 0.016590938, 0.006724751, 0.03638473, -0.031621274, -0.008532579, -0.022467595, -0.022024298, 0.029297885, -0.068136945, -0.018112645, 0.029771259, -0.04112452, -0.017422212, -0.036615685, -0.008535538, 0.00578534, -0.009198371, -0.020576755, 0.024690608, 0.029223358, 0.011851878, 0.008908477, -0.036059085, -0.033766013, 0.02001339, 0.026324287, -0.0025133905, -0.011809843, 0.033007696, -0.007615544, 0.002883973, -0.06567211, -0.030268839, -0.03893678, 0.030255264, -0.01811941, -0.019579515, 0.05002816, 0.026813727, -0.004994409, -0.009456831, -0.030105121, 0.013899262, -0.024062261, 0.023649642, -0.0074068196, -0.010015876, -0.064491995, -0.01767273, 0.012884267, -0.018240198, 0.00549931, -0.034063157, -0.0028663378, -0.0014378796, 0.0124152405, -0.014591628, 0.009874794, -0.0071062953, -0.013511678, 0.023739027, 0.01850654, -0.09448261, -0.040670346, 0.00066289346, -0.038332827, -0.04617739, -0.029637668, 0.02143726, -0.016816815, -0.027685948, 0.04478369, -0.018196164, 0.0017630453, 0.023331724, -0.05809498, 0.017973255, -0.0032047904, -0.037861265, 0.010296107, -0.047705136, 0.04630591, 0.013405112, 0.036271673, -0.012364025, -0.003285961, 0.00042034787, 0.0071543693, 0.026581153, 0.024665724, 0.016421229, -0.00674296, 0.00990958, -0.0061155786, -0.042137217, -0.049885146, -0.0069724605, 0.016032165, 0.0038889425, 0.006729552, 0.035855193, 0.01828151, -0.011795711, 0.030610325, 0.021583294, -0.007328004, 0.030897502, 0.043725844, 0.012109522, 0.016760286, -0.0007827168, 0.033261355, 0.010169656, -0.00861073, -0.02930936, -0.0059080618, 0.032508835, 0.029487163, -0.0067932084, 0.05106768, -0.003392739, -0.019679045, -0.020673385, 0.00034980674, 0.019902265, -0.09368636, -0.015176975, 0.066494204, 0.006569385, 0.029993512, 0.007575291, -0.013526505, 0.00174082, -0.06340392, -0.017822146, -0.06581972, -0.027814467, -0.009696991, -0.01250994, -0.009813371, 0.015974278, 0.015917657, -0.010499035, 0.04346011, 0.033162065, 0.011114578, 0.023319887, -0.02729169, 0.058774296, -0.02281719, 0.018268222, 0.036596358, -0.0072520883, -0.0028554664, 0.03397522, -0.042990554, 0.006469492, 0.0030864165, -0.0417217, 0.005166172, 0.026622033, -0.056219354, -0.0060216044, -0.03436948, -0.0063525676, 0.045977842, -0.04348813, 0.038339593, 0.012496411, -0.0072878418, -0.015272156, -0.013935982, -0.01342021, 0.012265945, 0.04007558, -0.0045518363, -0.013710105, -0.02634528, 0.010417864, 0.012568915, -0.019113991, -0.04623247, 0.07025704, 0.0007918968, 0.05536803, 0.037390668, -0.041876316, 0.05067173, 0.011687604, -0.026307015, 0.0025771675, 0.010809706, -0.045120724, -0.04438004, -0.00050586695, -0.030381972, 0.03853044, 0.059714764, 0.012016635, 0.008918139, -0.053179987, -0.019614302, -0.016216248, -0.050619546, -0.06574048, -0.021890946, -0.0013436638, 0.008136389, 0.015821025, -0.0014332896, -0.036480397, 0.0720254, -0.0048800516, 0.016569437, 0.016123965, 0.010927595, -0.02475704, 0.0010924214, -0.01194706, 0.052535757, -0.0063057616, 0.034938157, -0.028269572, -0.0006590281, -0.047842357, 0.038702928, 0.0042161616, 0.023654472, -0.035744067, 0.0074155163, -0.031025043, -0.007616873, 0.008011492, 0.056546938, -0.028674489, 0.012634594, 0.0073874933, -0.03601874, -0.03251536, 0.041038033, -0.025380315, 0.040776644, -0.0038213006, 0.0028001452, 0.032628417, -0.007815088, 0.07031309, 0.03363647, 0.01720769, 0.007179252, 0.0012185257, 0.009216007, 0.04422253, -0.014316952, 0.00034775335, 0.020010492, -0.029104017, 0.022798317, 0.00051166484, -0.009275194, 0.0007595251, -0.024530923, 0.065145224, -0.025884733, -0.07423851, -0.055545833, 0.055791274, -0.02042021, -0.026805634, -0.01706709, 0.013989855, -0.013901316, -0.0025752347, 0.008941331, -0.018625759, -0.018915655, -0.07085423, -0.010072647, -0.011678907, 0.016456861, 0.001585243, 0.017597718, 0.017630212, -0.024971563, -0.023969492, 0.00040681945, 0.022882868, 0.05036251, 0.013993477, 0.021141686, 0.044839043, 0.025396986, -0.018157097, -0.00051408063, -0.05633918, 0.02554024, 0.058161106, 0.0011508835, -0.0066028438, 0.0059660412, 0.006554528, 0.0005324406, 0.010470528, 0.017501934, 0.0073307524, 0.033857815, 0.012242994, -0.04339011, 0.021412617, 0.017650746], [-0.031804953, -0.08002784, -0.0049991, -0.050405424, 0.02200546, 0.044869952, 0.00062759314, -0.008064952, 0.035067506, 0.04821233, 0.01393544, 0.018421294, -0.005400004, -0.021726716, -0.013883914, 0.010972743, 0.023518799, 0.021612262, 0.03793945, 0.031172711, -0.009355615, 0.005122106, -0.03096999, 0.056762125, -0.019787977, 0.019846471, -0.0024385753, 0.062134255, 0.009951638, -0.012671806, -0.021935351, -0.04452617, 0.006793294, -0.029500257, 0.011303433, -0.012398765, 0.005959179, 0.012343228, -0.030996174, -0.05950225, -0.039764848, 0.010008548, -0.014653413, 0.07214766, 0.0052777375, 0.055701215, 0.0045088725, 0.0162773, -0.035653498, -0.04936531, 0.03269788, -0.02577862, -0.0414997, 0.040287595, 0.016686544, 0.050020143, -0.01213565, 0.017197572, 0.033770088, -0.010336492, 0.003513529, -0.00906758, -0.06531391, 0.031647418, 0.036893692, 0.03038505, 0.0051970575, 0.052202255, -0.01327406, -0.05583087, -0.0220724, 0.04871238, 0.010137994, 0.01161174, 0.022534227, 0.013891094, -0.07086143, 0.016441273, 0.018885866, 0.0076855347, -0.020100296, -0.008521921, 0.0057004965, -0.03923006, -0.06876833, 0.015971104, 0.0032710284, -0.004420604, 0.024147026, 0.017749567, -0.04174339, -0.047545034, 0.065817036, -0.0072637782, -0.0054633543, 0.00067024917, 0.017109726, 0.02634455, 0.011740976, -0.0149004795, 0.03771303, -0.030491903, -0.013108081, -0.008761175, 0.010171993, -0.008028631, 0.004580247, -0.006650967, 0.01991658, 0.030875385, 0.024335917, 0.022728499, -0.023630826, -0.017866554, -0.020463085, 0.009405345, -0.005228535, 0.0019157217, -0.031621233, -0.018216249, -0.009856506, 0.0019195228, 0.0011356648, 0.03181878, -0.03765559, 0.015011133, 0.020958064, -0.02901119, -0.051041987, 0.009595819, 0.037622962, -0.0057638474, 0.06635763, -0.028477356, -0.030355066, 0.045990836, 0.00386787, 0.00660224, -0.0035814198, 0.048997875, -0.03542734, -0.0070957933, 0.010769388, -0.007870994, 0.01714214, 0.014226007, 0.009036855, -0.035423115, -0.0020517143, -0.0074544367, -0.03307154, 0.015910499, 0.019687673, -0.0049375445, -0.00890213, -0.0347233, 0.0154579645, -0.0042942194, -0.042865645, 0.01645257, -0.016393442, 0.029391294, -0.018020602, 0.020027654, -0.022342484, -0.06774627, 0.009022179, 0.016552662, -0.008862324, 0.0015799636, 0.05406254, -0.020100085, 0.03333761, -2.8296596e-05, -0.07179057, 0.013906932, 0.029799271, -0.0029384114, 0.01849816, -0.025204241, 0.0009521065, -0.0069263303, -0.00942171, -0.017801514, 0.005880624, 0.035182174, -0.029604996, -0.003928792, 0.0058496874, 0.013539709, 0.009461199, -0.026989039, 0.021187814, -0.03638211, -0.009141067, 0.040869363, -0.0546403, -0.014943136, -0.013293487, 0.026245303, -0.0009141489, 0.008195005, 0.06374758, -0.005594279, -0.033082202, -0.053047247, 0.034371495, -0.010071899, 0.037282243, -0.0070272232, 0.0039328043, -0.003367506, 0.02276102, 0.031730406, 0.021725873, 0.036085762, -0.00078005693, -0.04266535, 0.026293451, 0.049687132, -0.009377576, 0.0047738887, 0.04829173, -0.016039947, -0.027857311, -0.012045058, 0.022930248, 0.024822026, 0.004543293, -0.030094486, 0.0470754, -0.0105749015, -0.014938438, -0.024108382, -0.020992061, -0.011967771, -0.031046854, 0.012883821, -0.037965585, 0.037554227, -0.06449258, 0.015100245, 0.017630046, -0.007464731, -0.04170327, 0.00053393986, -0.0015297055, -0.012450079, -0.044558268, 0.0060246405, 0.05056559, 0.034299698, -0.04239404, 0.0039893975, -0.008486181, 0.03960932, -0.008388884, -0.008635318, 0.014494719, 0.030560745, 0.0489075, -0.058830522, 0.024321133, -0.052243114, 0.052557334, 0.013910944, 0.023653843, -0.03156633, -0.007460165, -0.034351222, -0.0046870983, -0.035210256, 0.009743215, 0.0041983486, -0.033138268, 0.023069749, 0.0104047, 0.02086684, 0.018750928, 0.054883145, -0.047274742, -4.2972817e-05, 0.030567423, -0.015037317, 0.019071404, 0.034211006, 0.032221097, -0.03438754, 0.0023292955, -0.038720936, 0.019508075, -0.016881242, -0.002161733, 0.036271587, 0.050398346, -0.029530665, 0.009108337, 0.0049751326, -0.06567344, -0.0031464123, 0.048616927, 0.008300722, 0.008181517, 0.07334139, -0.0014122956, -0.04561749, -0.050818153, 0.028615037, 0.0150909545, -0.022011425, -0.05547484, -0.042029314, -0.048511345, 0.0020602667, -0.0035584024, -0.018045414, 0.04458192, 0.065348245, -0.005147869, 0.00025889272, -0.021209776, 0.0022148683, 0.0013450385, -0.043884005, 0.049991213, 0.06929878, 0.022052761, -0.014541494, -0.076187946, -0.031141458, 0.021843283, 0.023397483, -0.011321171, -0.020759564, -0.007799513, 0.0043890076, -0.022604333, 0.025358817, -0.0046820305, 0.011442383, -0.0069508264, -0.10843002, -0.018362379, -0.01825616, 0.04178098, -0.06147372, 0.0035250378, -0.05070412, -0.004149041, 0.010333087, 0.050759025, -0.0046593826, 0.009568472, 0.03619557, 0.024162756, 0.00051250623, 0.018451808, -0.024020009, 0.0022113486, -0.011511013, 0.0078081707, -0.017353838, -0.08341329, 0.03790899, 0.018327324, -0.013254209, 0.072875135, -0.016164113, 0.05351604, -0.014421787, 0.055954617, 0.046047006, -0.0065669217, -0.003794172, -0.0155236395, 0.049154986, -0.056660764, -0.0079217795, 0.01667567, -0.0049920264, 0.00886317, -0.02026712, 0.0665046, 0.04477788, 0.0055921674, 0.049329832, 0.022077257, 0.01834464, -0.037000965, 0.04644105, -0.007928114, 0.016894545, 0.04238239, 0.04407765, 0.016786216, 0.013259806, 0.02308643, 0.051993728, 0.010366868, -0.0096124485, -0.027033173, -0.013437926, -0.015436849, 0.007393436, 0.014942291, -0.044335272, -0.013584478, -0.016889688, -0.0041370047, 0.028114146, 0.056762125, -0.0024402644, -0.017758014, 0.027933383, 0.040976003, -0.020219818, -0.018070966, 0.00095490454, 0.02950279, 0.028180031, -0.025890961, 0.03516929, -0.0315317, 0.030033246, 0.053946406, -0.019973172, 0.004441298, -0.037830014, -0.045616437, 0.048543442, 0.031417668, 0.058990166, 0.011703809, 0.07778438, 0.05326855, -0.011468568, 0.026502717, 0.032591235, -0.044055685, 0.009950265, -0.056860104, -0.02620687, -0.0011774761, -0.010718497, -0.030089838, 0.054980285, -0.03743597, 0.012800831, 0.011270491, -0.05309624, 0.013487551, 0.009981519, -0.022437934, -0.018333238, -0.081595555, 0.034597866, 0.05104875, -0.026755486, -0.011678468, -0.016803915, -0.023148304, -0.02487619, 0.018466273, -0.007240549, 0.009312325, -0.041522086, 0.04377779, -0.00839691, 0.0015042596, 0.03424585, 0.029570363, -0.045141093, -0.0074990196, -0.01564803, -0.046862543, 0.01852709, 0.024345206, 0.00507945, 0.0099617215, 0.009163029, 0.01761991, -0.034805655, 0.019664234, -0.008261339, 0.015638066, 0.0073351534, -0.012646466, -0.016755808, -0.056049217, -0.02069389, 0.0072582876, 0.029819544, 0.01624816, 0.060858794, -0.024737136, -0.022839047, -0.024098035, 0.048016362, -0.028987538, -0.016733846, 0.04954903, 0.04970883, -0.026178572, 0.015130865, 0.034485526, -0.03859529, 0.048332274, 0.033416167, -0.027495528, -0.0013897007, -0.027785143, -0.05802745, 0.021556094, 0.0017522903, 0.008505238, 0.03421903, 0.0043015047, -0.025369799, 0.03535686, -0.027575243, 0.00082693633, -0.06257369, 0.008654535, 0.017347079, 0.013645927, -0.029418321, 0.029814897, -0.06330202, -0.0041422835, 0.021070512, -0.036366194, -0.024797427, -0.0070802723, 0.009534263, -0.0020241567, -0.020182652, 0.02441785, 0.010318966, -0.018041402, 0.029947933, -0.00922733, 0.04430999, 0.0035763518, 0.016975423, -0.026516128, -0.04496033, -0.043512564, 0.050925422, 0.00012332248, 0.023909355, 0.009828633, -0.002955727, -0.06315462, -0.05697963, 0.042595245, -0.016051034, -0.012207658, 0.02815733, 0.058041595, -0.0034169194, -0.06239663, -0.004160972, 0.03152494, 0.020896824, -0.01588516, 0.031997956, 0.03137459, -0.07655791, -0.04675442, 0.042252306, -0.02063202, -0.038858406, -0.038777318, -0.034971, 0.012827649, -0.025351213, 0.033601996, -0.047191117, -0.012321267, -0.033217564, 0.012651534, -0.04307671, -0.0028522545, -0.027582001, 0.043678116, 0.018341262, 0.009355087, -0.011037889, 0.033858355, -0.0070040408, 0.04981172, -0.020161746, 0.04980201, -0.0045578633, -0.032296974, -0.034893185, -0.03386905, 0.050293185, -0.00564496, -0.0119627025, -0.009899373, -0.03388509, 0.0044265166, -0.0061686574, 0.018860314, -0.024946194, 0.00840694, 0.027136013, -0.012749727, -0.012568756, -0.0063012717, 0.018891145, -0.047532365, -0.037848175, 0.0046144566, 0.0026404525, -0.040888157, 0.0022033334, -0.0034749908, -0.0022160034, 0.023271628, 0.0055503557, -0.0017687484, 0.022386407, -0.009909298, 0.015749378, 0.0026784628, 0.033668302, 0.02504291, 0.025199173, 0.06310732, -0.01924047, 0.04857723, 0.03235441, -0.07954806, 0.06373238, -0.033148404, -0.06520211, -0.04895818, 0.009480626, 0.016393602, 0.028750606, -0.019645438, -0.021722073, 0.05706959, -0.013778753, -0.009295642, 0.0118423365, -0.022124136, 0.003542987, 0.046330396, 0.008410001, 0.0011048343, -0.041188862, 0.047784925, 0.0073583815, -0.010138522, 0.009826099, -0.0127644045, -0.010622838, 0.044695526, -0.042366832, 0.027720526, 0.004551106, 0.042245552, 0.0017883871, 0.04545616, -0.040222555, -0.026619073, -0.025269281, 0.050584175, 0.035884306, 0.010406389, -0.013370141, 0.024742205, -0.0011200383, -0.024937535, -0.028478095, 0.022510573, 0.028742583, -0.05234617, 0.010475653, 0.026445068, 0.035386793, 0.029066939, 0.0246003, -0.010301966, 0.061227076, -0.03541044, -0.036508996, -0.050455786, 0.0336569, 0.031084022, -0.017178567, -0.010042758, 0.024449948, 0.05488526, 0.07558485, -0.00030703915, -0.021902092, 0.05573933, 0.014759072, 0.021165853, -0.00048315382, 0.01535576, -0.043452587, 0.016171291, 0.01496193, -0.033464737, -0.022921085, -0.016099919, 0.017298933, -0.006849888, 0.0521029, 0.039245263, 0.009043719, 0.035472102, -0.022960363, -0.007973727, -0.0018809317, 0.015705032, 0.006786167, -0.06562952, -0.053800274, -0.025302224, -0.028039392, -0.019985104, -0.07440738, -0.0331332, -0.011965975, -0.0076791868, -0.0322824, -0.04925297, -0.0177918, 0.023430848, -0.0011104302, -0.023160763, -0.047338936, -0.0010946981, 0.02277918, -0.0035856431, -0.050839692, 0.0023790256, 0.022231832, -0.015305501, -0.045504306, -0.02666553, -0.009455286, -0.0013565471, -0.0159559, -0.01331038, 0.05902923, 0.038883638, 0.05315938, -0.01099006, 0.0045798253, 0.045268215, -0.04525639, 0.022711609, 0.026076792, 0.020946475, -0.0559411, -0.019657793, 0.0062284186, 0.012929855, -0.0045004254, -0.0017590347, 0.034186404, 0.023690585, 0.013700619, 0.002772644, 0.0070285364, -0.025649386, -0.01681747, 0.0023659333, -0.015083774, -0.04354503, -0.050914444, -0.012395597, -0.0336721, -0.040602658, 0.038860515, 0.030227099, -0.027144458, -0.01746977, 0.038333017, 0.00646007, -0.033867646, 0.016269697, -0.078091845, 0.0050663576, -0.016371481, -0.0354096, 0.030367313, -0.051135745, 0.02780415, 0.015295999, 0.034719713, -0.035616543, -0.009484427, 0.017006677, -0.050131854, 0.03925371, 0.021567497, -0.010348899, 0.0032579093, 0.003502337, 0.012302262, -0.02830644, -0.053883474, -0.009576075, -0.0071628396, 0.0055402196, 0.0043703457, 0.0083253225, -0.021406163, 0.008307373, 0.008462794, 0.06489296, 0.02084361, -0.002917928, 0.03117493, -0.0066695497, 0.026801309, -0.012926899, 0.0104529, -0.007554768, 0.0026514332, 0.003797234, 0.0019433849, 0.025362883, 0.008694604, -0.00056424254, 0.046315193, -0.0100904815, -0.009186258, -0.017603332, 0.0051375213, 0.044154093, -0.08195539, 0.005272036, 0.057424612, 0.0021799994, -0.0004975133, 0.042472348, -0.021837156, 0.029599505, -0.02602273, -0.010618404, -0.06027597, -0.05068807, -0.04649426, 0.0019562661, -0.012044214, -0.0065331873, 0.012828915, -0.010577014, 0.004517319, 0.007854575, 0.028169895, 0.0020348208, -0.01752784, 0.061814968, -0.040193837, 0.008934966, 0.06727325, 0.0013459888, 0.020549769, 0.003871143, -0.0062134257, 0.03984836, 0.03225643, -0.022810118, 0.036709554, 0.033846952, -0.033690684, 0.055794127, 0.005797291, 0.056197885, 0.013900438, -0.023230132, -0.0127376905, 0.017370308, -0.023397906, -0.042846113, 0.004441298, 0.01795989, -0.013198461, 0.017528685, 0.0036156292, 0.0067965677, -0.020054262, -0.010711739, 0.064049974, -0.017421411, -0.05988362, 0.08781236, 0.025640305, 0.034159902, 0.026263885, -0.025929922, 0.08220879, -0.0062404554, -0.04102584, -0.031127945, -0.026894964, -0.014606533, 0.013562938, -0.0071746646, -0.00646792, 0.020012872, 0.04606179, 0.019103158, -0.019796636, -0.08709438, -0.016088357, -0.033957604, -0.020424228, -0.016131489, -0.03055441, 0.008532901, 0.012242079, 0.03552342, 0.021165272, -0.025418788, 0.06431858, -0.04402866, 0.008028526, -0.0014173638, -0.0077298274, -0.040133018, 0.010883472, -0.02159104, 0.019156743, 0.035587825, 0.039284967, -0.0153933475, 0.03684766, -0.042026993, 0.012651323, 0.00097284064, 0.012788371, -0.018888611, 0.00859034, -0.019744266, 0.026423529, 0.02275553, -0.0016065709, -0.02903315, 0.0768299, 0.02159157, 0.010529713, -0.006369268, 0.0076881745, -0.044244047, -0.006802586, -0.0074686115, 0.0023710013, 0.0029037795, -0.03483184, 0.08107777, 0.016576527, 0.010551462, 0.008477998, 0.00047164512, 0.02127587, -0.0011254231, -0.021043375, -0.008062418, -0.011678468, -0.056072872, -0.011695891, 0.031355742, -0.011279783, 0.013249563, 0.038713966, 0.052483846, -0.022883499, -0.052670944, -0.04557103, 0.03777388, -0.019395838, -0.021412497, 0.034564923, 0.0053003323, -0.02640579, -0.013243652, 0.024834907, -0.032322314, 0.03883095, -0.08107861, 0.026009217, 0.008319199, 0.0041291914, -0.03313278, 0.026282048, -0.0018392786, -0.025218178, 0.0029960605, 0.007862441, -0.01218274, -0.025154406, 0.0063109854, 0.03846183, 0.067540176, 0.008244577, -0.0068156784, 0.01621226, -0.037530947, 0.035475485, 0.07117079, -0.009167252, -0.023831433, 0.014335816, 0.05044417, 0.046453718, 0.0018794008, 0.0009282973, -0.037904765, 0.06765336, 0.02979716, -0.03499064, 0.04582191, -4.64571e-06], [-0.03270953, -0.046135485, -0.0029154958, -0.037828498, 0.033931423, 0.05683583, -0.01747223, -0.0390073, -0.0003995407, 0.09782373, 0.026130516, 0.02906542, -0.027264137, -0.0060296445, -0.01662991, 0.017694056, 0.023747701, -0.027366983, 0.057832353, 0.025264489, 0.0028929778, 0.006591499, -0.050483894, 0.016549848, 0.03270404, 0.025833532, 0.019888422, 0.07843901, -0.00015896124, -0.0058065546, -0.023345148, -0.040385872, -0.0071479115, -0.009922373, 0.02051863, -0.02136299, -0.0028189386, -0.009009099, -0.017172478, -0.047692455, -0.052633658, 0.026634557, -0.020343928, 0.033933368, -0.02615476, 0.026417613, 0.030377045, 0.010252417, -0.046606734, -0.054202676, 0.03520156, -0.00519092, -0.03289332, 0.020356366, 0.00804202, 0.042985797, -0.005377282, 0.014583624, -0.015610849, -0.019966057, -0.011711342, -0.028282663, -0.05790153, -0.0127682015, 0.011939971, -0.014705274, 0.01839986, 0.024142288, -0.027856695, -0.062132467, -0.025855882, 0.043033607, 0.022366896, 0.009799193, 0.030582353, 0.03226194, -0.061304238, 0.010157196, 0.0019343523, 0.022568803, 0.015683139, 0.00067199016, -0.00966632, -0.043927908, -0.058317784, 0.014204489, 0.0036495011, -0.0076247957, 0.048352197, 0.00193066, -0.05153531, -0.025272798, 0.06555577, 0.039198034, 0.0056768404, 0.00872907, 0.023827376, 0.02862235, 0.016892254, -0.008893667, 0.010565675, -0.037826557, -0.043988347, -0.022292856, 0.049689088, -0.036745306, 0.0031575207, -0.020900486, 0.010189066, 0.021991117, -0.0022248744, 0.008339247, 0.020662338, -0.035749763, -0.035865385, 0.022388272, 0.018799402, -0.009781752, -0.024001397, 0.0025534849, 0.0058792336, 0.023946792, 0.022854768, 0.07265889, -0.03195354, -0.0039975448, 0.02522295, -0.024459042, -0.068792515, -0.0011045669, 0.021183044, 0.01291424, 0.04718778, -0.03475849, -0.014517966, 0.05441624, 0.008997245, 0.014841305, -0.0025672822, 0.025578769, -0.032449078, 0.0180524, -0.013028797, -0.028324638, -0.0061081536, -0.020575812, -0.01867853, 0.00841212, -0.0055718054, -0.0064120116, -0.038900033, 0.017455226, -0.014264148, 0.011383412, 0.0021978626, -0.04979417, -0.022689063, -0.0064400677, -0.02232453, 0.003084392, -0.008174844, 0.02188768, -0.010197786, 0.007895204, 0.00536844, -0.06034464, -0.00069142313, 0.0015450624, -0.024145396, -0.03227496, 0.03673287, 0.005230326, 0.011448318, 0.015013577, -0.055920154, 0.040822625, 0.024921546, -0.0014325944, 0.019945167, -0.032540027, -0.0039639743, -0.027854946, 0.0017490594, -0.02129381, 0.031548463, 0.017424718, -0.04253515, -0.013884429, 0.029513156, 0.0119671775, 0.021980762, -0.017294904, 0.02616292, -0.029908033, -0.018793182, 0.05426146, -0.0403129, 0.0007703207, 0.0047175344, 0.034419578, -0.0035896478, 0.032413322, 0.048651658, -0.04257985, -0.024875686, -0.035329036, 0.05910404, 0.010100646, 0.026094517, -0.015759218, -0.052764248, 0.009013763, 0.03001569, 0.053381436, 0.0071559767, 0.014355871, -0.028348735, -0.046883073, 0.024433002, 0.063755505, -0.005290514, -0.0057899756, 0.044678602, -0.029703597, -0.02785436, -0.025385022, 0.007739158, -0.0014566426, -0.018199313, -0.022352103, 0.0683611, 0.01770494, -0.016280118, -0.026570234, 0.0050630514, -0.016996488, -0.032933347, 0.028490983, -0.06653363, 0.004113559, -0.026851622, 0.010282732, 0.02465104, -0.032068584, -0.02124795, -0.021454327, -0.033027027, -0.0052173487, -0.02939345, 0.0093769645, 0.04672605, 0.005784207, -0.055233587, 0.003348874, -0.015974438, 0.04270577, -0.008847028, -0.027804615, 0.026560906, 0.025683705, 0.04039403, -0.051119443, 0.016761277, -0.043173715, 0.039336104, 0.0010897978, 0.008290859, -0.052848198, -0.0214415, -0.039325513, -0.021365711, -0.041504044, -0.0024221183, 0.00071707455, -0.049250778, 0.017475242, 0.0011793836, 0.022822013, 0.018274713, 0.025429327, -0.048750963, -0.006817066, 0.014101299, -0.02220162, -0.021934707, -0.001237488, 0.038745828, -0.017631484, 0.009327798, -0.027571613, 0.011141667, 0.012465437, 0.00471015, 0.02494992, 0.04604512, -0.0648935, 0.020029116, -0.013613145, -0.041753557, -0.030428056, 0.041452736, -0.008621995, 0.042904764, 0.037400585, 0.0016140979, -0.044135254, -0.020266391, 0.04780808, 0.010820247, 0.04071662, -0.04274969, -0.0432188, -0.029052984, 0.03586694, 0.009819112, -0.0021545272, 0.016572777, 0.0740565, 0.010315379, -0.003854713, -0.019040368, -0.014161323, 0.0009211201, -0.06169717, 0.020121811, 0.06827152, 0.032611344, -0.0030680685, -0.074433304, 0.009698579, 0.06097582, 0.035841677, -0.025600143, -0.05507443, 0.00032122608, -0.008617526, -0.026106661, 0.019982282, 0.010803922, 0.01278365, -0.0009870948, -0.072806574, -0.03614386, -0.022723198, 0.020886496, -0.08568671, 0.005705115, -0.053824507, -0.01427231, 0.021213163, 0.03682537, -0.010928487, -0.015850263, -0.004889321, 0.0031178165, 0.07174554, 0.010351525, -0.04824872, -0.0007132851, -0.018160058, 0.030092256, -0.025670491, -0.039313078, 0.054384176, -0.008543097, -0.0055749146, 0.07362587, -0.008696229, 0.054323547, -0.048927415, 0.07718987, 0.01980673, -0.009128417, 0.016795868, 0.03271648, 0.04958969, -0.04203106, -0.011740395, -0.0042320997, -0.0013188603, 0.029826801, -0.019061478, 0.04060449, 0.034435123, -0.013027048, 0.051968273, 0.043862417, 0.023155872, -0.032670613, 0.026387565, 0.0050131087, 0.034470636, 0.022852719, 0.012939406, 0.0031702856, 0.013876655, 0.041693315, 0.030812632, 0.009546808, 0.0037855317, -0.03292402, 0.019566612, -0.04019854, -0.0033852137, -0.0030610724, 0.007992102, -0.0072937557, -0.001773059, -0.022982141, 0.057824578, 0.052501515, 0.005353379, -0.0059091602, 0.040407248, 0.02114923, -0.022714939, -0.030530175, 0.039593395, 0.024750536, 0.024286672, -0.040227685, 0.050908018, -0.024427561, 0.035871945, 0.03468989, -0.016138744, -0.0049468423, -0.06772759, -0.017952126, 0.059566546, 0.030278478, 0.030317435, 0.007365172, 0.06730629, 0.04602064, -0.018685136, 0.032946855, 0.026958894, -0.07838149, -0.011945558, -0.032986205, -0.0033284696, 0.008072335, 0.0051745963, -0.024572141, 0.018555323, -0.04655038, 0.024713613, 0.033907324, -0.019601034, 0.04829779, -0.0036907475, -0.048632033, -0.016647205, -0.0317767, 0.06287092, 0.058465865, -0.045069203, -0.0014668936, -0.010295169, -0.0146209365, -0.02066535, 0.0020361564, -0.010582873, 0.019915627, -0.0038858054, 0.03904539, -0.008489852, -0.009875564, 0.0053121815, -0.005807332, -0.03662249, -0.020378519, -0.0034553665, 0.0073771225, 0.006264394, 0.041621804, 0.015599967, 0.0055282754, 0.0062186057, -0.005049254, 0.0073479735, 0.020819938, -0.0070838802, 0.008401091, 0.0056522572, -0.014102077, 0.016348716, -0.041166686, -0.017590674, 0.01729918, -0.011245439, 0.013018498, 0.04072828, -0.022337357, -0.030189227, 0.0037328685, 0.052874625, -0.02245551, -0.01642227, 0.020759014, 0.05864708, -0.020840634, 0.007144705, 0.0031310313, -0.06305281, 0.030954884, 0.056974195, -0.00906322, -0.036013078, -0.0014446428, -0.02041311, -0.0061660637, -0.020197405, 0.022003498, 0.018282194, 0.015952867, -0.045922305, 0.0080969175, -0.019094003, 0.009102182, -0.035055034, 0.030324284, 0.011544705, 0.023005461, -0.04570777, 0.018939463, -0.022718243, 0.010568396, 0.008523664, 0.003665825, 0.0009972971, 0.0030781736, 0.0138169965, 0.010838125, 0.030891338, 0.0003513471, 0.00075972977, -0.020573432, 0.013321652, -0.026090145, 0.039125454, 0.013221183, 0.026436536, -0.020721706, -0.0066466397, -0.03774105, 0.016917517, -0.00830485, 0.023094075, 0.017906263, -0.013745288, -0.09041746, -0.0424959, 0.035101477, -0.035669502, -0.0014553309, 0.04025373, 0.053970642, 0.008678351, -0.025069479, 0.0030817688, 0.020944018, 0.037067894, -0.004797598, 0.034521405, 0.01753393, -0.028900897, -0.02645111, 0.015568873, -0.0063254135, -0.046068348, -0.05915418, -0.045641698, 0.019248301, -0.011107076, 0.021157974, 0.015268634, -0.009964032, -0.014855637, 0.008844308, -0.021714339, -0.0073020146, -0.03817829, 0.008150941, 0.015081884, -0.00023902486, -0.0143325515, 0.046626557, 0.016846782, 0.0401826, -0.0003641728, 0.043887295, 0.02286399, -0.028898686, -0.006047523, -0.022147303, 0.042257257, 0.024050016, -0.022623021, -0.038240865, -0.027403519, 0.031526987, -0.024544159, 0.0055927928, -0.025120344, 0.00717728, 0.04640191, -0.022705417, 0.018450387, 0.005925873, 0.0108571695, -0.031179529, -0.04874319, 0.0043350942, 8.939141e-05, -0.04287017, -0.007815918, -0.020422049, -5.441216e-05, 0.011873705, -0.0016521864, 0.0060626804, 0.065793626, -0.03934621, 0.030086813, 0.020372689, 0.057356052, 0.009078669, -0.018862946, 0.059722785, -0.022490878, 0.028372055, 0.023934355, -0.05328661, 0.04047468, -0.02364597, -0.044573665, -0.04410533, 0.010101666, -0.0134365, 0.026213009, 0.0044925013, -0.003824446, 0.01907457, 0.015052735, 0.011027402, -0.008546304, -0.031206928, 0.024449715, 0.029212333, -0.047322255, 0.009530678, -0.023413116, 0.06298285, -0.01300917, -0.013854842, -0.0010478228, -0.0063522304, -0.0070964145, 0.06007258, -0.023807893, 0.030402794, 0.009152514, -0.002073103, -0.013605177, 0.036053497, -0.01663302, -0.032647297, -0.014365587, 0.038459677, 0.031156015, 0.015239875, -0.007817472, -0.022735927, -0.014968323, -0.05161343, -0.040637333, 0.007218744, 0.026866004, -0.02421652, -0.012191433, 0.013311158, 0.012025865, 0.011864183, 0.0014252099, -0.006936773, 0.050245743, -0.022393597, -0.0520977, -0.037046906, 0.024272487, 0.05138373, 0.0026930133, -0.0140430005, 0.034280315, 0.01538018, 0.06610222, 0.019391328, -0.024366153, 0.034899183, 0.038116496, -0.00011280807, -0.00047112672, -0.002847699, -0.007119977, 0.017467275, 0.018633833, -0.022497095, -0.011163674, 0.00086589425, 0.024029965, 0.0041430974, 0.040549498, 0.035706036, 0.0065986402, 0.056302592, -0.023357634, 0.01643286, -0.0032417986, -0.026850458, 0.014722085, -0.06572678, -0.054296337, -0.0373796, -0.021607067, -0.036048833, -0.08256345, -0.048719093, -0.014800302, -0.009448672, -0.022761382, -0.025837613, -0.010998253, 0.020081975, -0.0020278245, -0.037568074, -0.04699345, 0.007526756, 0.04748938, 0.009456056, -0.039125454, -0.0021523896, 0.015749259, -0.016186258, -0.05661352, -0.021953363, -0.0076775555, 0.03362322, 0.0026027474, -0.02056595, 0.08890053, -0.0058524166, 0.03141447, -0.0004265525, 0.019535908, 0.056293264, -0.0421943, 0.02522159, 0.042575184, 0.013363967, -0.053828005, -0.0043422845, 0.0005126403, -0.006115392, -0.02093056, -0.0015771752, 0.024514183, 0.030420283, 0.0027384863, -0.0052036485, 0.035542022, -0.0010913524, -0.011594454, 0.008254324, 0.011525151, -0.05065461, -0.0139835365, -0.018906938, -0.015986681, -0.041954592, 0.0023661514, 0.014580709, -0.007177741, -0.019414648, 0.03508632, 0.020719081, -0.009234326, 0.026587335, -0.06619628, 0.00074155995, 0.0044957073, -0.01176935, 0.018926105, -0.03514287, 0.008686804, -0.005255437, -0.0046149287, -0.027390305, 0.007072026, 0.00063273567, -0.032030106, 0.07885721, 0.02714467, 0.0130348215, -0.0060708425, 0.01312499, -0.021150783, -0.009947709, -0.043965314, -0.01577292, -0.013618294, -0.003671655, 0.032524187, 0.04192068, 0.0033995938, 0.004858034, 0.00278085, 0.04615084, -0.006645279, 0.006946878, 0.035943117, 0.025892803, 0.030324673, 0.017257983, 0.0045286464, -0.03174697, -0.00975027, -0.012013719, 0.010426148, 0.03746666, 0.06352969, -0.028261676, 0.026894374, -0.004164862, 0.0036384244, -0.014492096, 0.021030689, 0.004629697, -0.110209495, 0.009899369, 0.094266735, -0.026998924, -0.015074111, 0.065254174, 0.015446058, 0.012185603, -0.056763347, 0.00856292, -0.06689276, -0.082908586, -0.025499092, 0.0054346086, -0.002752478, -0.0049328506, 0.018410742, 0.010325096, 0.036937304, 0.016323648, 0.031797398, 0.012260615, -0.023711363, 0.034594085, -0.02755898, -0.018581558, 0.041745204, -0.0035231872, 0.012199596, 0.030813996, -0.028583486, 0.03442424, 0.013330978, -0.052693125, 0.02758026, 0.010800814, -0.042907875, 0.03529328, 0.010788571, 0.031253956, -0.003427966, -0.047672827, 0.00016790038, 0.024367392, -0.013761224, -0.053744446, -0.0069733066, 0.010570727, -0.011376806, 0.042564787, 0.004778942, 0.026490755, -0.020461595, -0.024134124, 0.04042357, 0.00409879, -0.037517864, 0.04365036, 0.041966736, 0.060242034, 0.026785553, -0.0497537, 0.08923595, 0.009932162, -0.052388027, -0.010171964, -0.020205177, -0.007753927, -0.00091188954, -0.027578805, -0.0023587672, 0.021179544, 0.050609525, 0.06449357, -0.00729978, -0.09522283, -0.04293897, -0.03772162, -0.04729194, -0.0105441045, -0.03776826, 0.0383596, 0.006395809, 0.02379055, 0.03798746, -0.015374544, 0.050842725, -0.014168149, 0.0046959636, -0.015906714, -0.0064186915, -0.07475298, -0.006538787, -0.04255808, 0.056302592, 0.017517217, 0.040306974, -0.027387971, 0.016954051, -0.050733894, 0.008082343, 0.024229735, 0.00084173674, -0.02866277, 0.009596167, -0.0130348215, 0.002067662, 0.057996076, 0.019926898, -0.056983523, 0.07498695, -0.0014015017, -0.008230616, -0.0018662399, 0.022245245, -0.05606486, 0.02485392, 0.018304251, 0.003949837, 0.026754847, -0.028713103, 0.09948408, 0.015484147, 0.013067468, 0.015386326, -0.042928666, 0.0063034543, 0.006518237, -0.060876712, -0.001403445, -0.0014186027, -0.03439781, -0.012498084, -0.011332303, -0.0024775993, 0.005220458, 0.006380215, 0.059835497, -0.039162375, -0.067998104, -0.048111234, 0.06447996, -0.039993715, -0.053092565, 0.011135837, -0.002377204, -0.036707997, 0.0032853284, 0.03739048, -0.045584176, 0.017920256, -0.079062425, 0.025782911, -0.015624062, -0.006322693, 0.0012950093, 0.019594984, -0.0021088598, -0.026204119, -0.035521813, 0.0070572575, -0.036286693, -0.0013649679, -0.012740996, 0.071217746, 0.03555752, 0.007442806, -0.02046208, 0.002047452, -0.04645205, 0.011216678, 0.063436806, -0.037551384, -0.036241606, -0.011399104, 0.019502483, 0.0041722464, 0.027160218, -0.021956181, -0.016182467, 0.044461343, 0.02045839, -0.011271868, 0.024796922, 0.010582291], [-0.051069863, -0.059045263, -0.03539442, -0.053593908, -0.012924711, 0.031259257, 0.030573007, -0.017781917, 0.05168644, 0.044332385, 0.012001757, 0.030724764, -0.08988265, -0.03315766, -0.030609753, 0.050967734, -0.030324074, -0.08835171, 0.04526966, 0.03953913, -0.0068950807, -0.018288136, -0.022632444, 0.0209884, 0.0154506685, 0.031406242, 0.014146529, 0.023920475, 0.023095828, -0.02300993, -0.022798518, -0.037060417, 0.00175476, 0.029640269, 0.04736373, 0.012089566, 0.02967773, -0.006025456, -0.012950005, -0.06590872, -0.07250399, 0.0059983805, -0.024957966, 0.019268477, 0.0032422733, 0.058941226, 0.03399281, 0.026796836, -0.0014426542, -0.03797502, 0.025625126, 0.0006701222, -0.028372785, 0.007421282, -0.046875045, 0.030266149, 0.03204286, 0.018682444, 0.044040803, -0.049357697, 0.03723365, -0.020290218, -0.03567169, -0.02491072, 0.017473808, 0.008700784, 0.013392513, -0.00537261, 0.02763902, -0.038099814, -0.0061488184, 0.01622139, 0.009528771, -0.01929902, 0.046624027, 0.01830639, -0.075228, 0.005423673, 0.002523571, -0.014857, -0.0013180982, 0.02064957, -0.0077315387, -0.055054225, -0.06941538, -0.004372345, -0.0037438974, 0.0026991903, 0.033670202, -0.002272588, -0.05404584, 0.0028423578, 0.025236664, 0.03502624, 0.022502398, 0.0008131931, -0.031733382, 0.057606906, 0.021923287, 0.028350087, 0.035412196, -0.037739508, -0.022284545, -0.008917445, 0.000980938, -0.021408835, 0.0012641717, -0.03319537, 0.007897136, -0.027001446, -0.002220294, 0.005766441, 0.00790668, -0.074966475, -0.009082565, -0.016629895, 0.033077486, -0.0126033, -0.042844158, -0.018429514, -0.014446585, -0.010648821, 0.020672714, 0.012837379, -0.012712704, -0.028498026, 0.0046252743, 0.000183732, -0.079494394, 0.004749353, 0.041545384, 0.014301031, 0.037551958, -0.055318605, -0.037786752, 0.02417773, -0.00052017637, 0.07361879, -0.014625128, 0.011398066, -0.0098886, 0.0038741205, -0.0058707297, 0.0068515334, 0.035278454, -0.049220134, 0.055552926, -0.017097337, -0.045461502, 0.009615149, -0.02290494, 0.013951225, -0.003775812, 0.005772764, 0.02781273, -0.03975197, 0.0017413977, 0.0055870633, -0.03322006, 0.010475946, -0.013438684, 0.019291384, 0.024484556, 0.021120114, -0.010691771, -0.04272151, 0.021058075, 0.00024195357, -0.0027364136, 0.028333861, 0.024042169, -0.012223428, 0.010604439, 0.016177962, -0.039746244, 0.017044125, 0.037793435, -0.027556937, 0.027190428, 0.062505156, 0.025128812, 0.012087179, 0.017141959, -0.02407462, 0.030209003, 0.0065790373, -0.05649592, -0.031928327, 0.0089594405, 0.014941469, 0.044589132, -0.037682243, 0.0345273, -0.017679792, -0.02732596, 0.03213067, -0.014310337, 0.011687025, 0.01636742, 0.03542687, 0.011189518, 0.028658377, 0.05148314, -0.044827268, -0.042323504, -0.019303314, 0.031640086, 0.00703801, 0.051057454, -0.04469317, -0.01718968, 0.04087918, 0.04714993, 0.05029198, 0.028639523, 0.0058021136, 0.001533685, -0.058086038, 0.032263342, 0.067043565, -0.036970936, -0.007879478, 0.019572947, -0.022654872, -0.027624704, -0.012012613, 0.011897244, 0.015794272, 0.0011281623, 0.003334915, 0.0739853, 0.0021513347, -0.0164433, -0.04770542, -0.00650125, 0.024207765, -0.05137815, 0.022591284, -0.028444577, 0.023228498, -0.006412963, -0.011662523, 0.037126273, -0.01620254, -0.027868567, 0.00835909, -0.05570945, 0.008570024, -0.0036155053, -0.0074113198, 0.042412505, -0.022788495, -0.045099765, -0.011388522, -0.027868088, -0.01826511, 0.018718712, -0.0010966653, 0.011566049, 0.027690262, -0.007795964, -0.050461877, 0.009953979, -0.05707098, 0.05364688, 0.012856886, 0.011672709, -0.027275853, 0.009120982, -0.019207332, -0.033268914, -0.06370657, 0.03589694, 0.014314155, -0.036174208, 0.015635831, 0.014118254, -0.009130765, 0.055347715, 0.025762567, -0.049700703, -0.015501494, -0.0020210522, 0.023961516, 0.022396216, -0.0020561877, -0.009013845, -0.062499426, 0.008217832, -0.01691623, -0.016328765, 0.027549243, 0.0049827164, 0.003163054, 0.023189366, -0.055186417, 0.021095894, -0.03336955, -0.016393667, -0.053327143, 0.030139685, -0.009669792, 0.010762401, 0.021851223, 0.005637948, -0.007269822, -0.0894016, 0.035483185, -0.000783963, 0.02012468, -0.01595462, -0.0064581204, -0.05593089, 0.0025167705, 0.03549416, -0.036934428, 0.04415295, 0.09216571, 0.009032456, -0.003841908, -0.0041470937, -0.048423164, 0.012131086, -0.0679188, -0.009291933, 0.06261205, 0.032639872, -0.016903345, -0.026797673, 0.00037396624, 0.061001893, 0.018636152, -0.0043766396, -0.009964478, 0.027500624, 0.022870578, -0.024590502, 0.012090043, 0.04878777, 0.018296726, 0.021052347, -0.06156979, -0.02134441, -0.004182528, 0.047107458, -0.07064663, -0.029233312, -0.054493483, 0.0020115075, 0.01390732, 0.015704075, -0.02856675, -0.0140824625, -0.0086354045, 0.0034617973, 0.023786495, 0.0042797625, -0.0166151, -0.011100276, -0.03655408, 0.0064587765, -0.023452794, -0.024588592, 0.043570735, 0.013409096, -0.021390224, 0.046142027, -0.016704341, 0.041684736, -0.04446792, 0.05073485, -0.009849944, -0.042083696, 0.018743528, 0.0064024637, 0.026102353, -0.043565005, 0.009622069, 0.02325045, 0.0022594265, 0.026739689, -0.017059874, 0.058231115, 0.004807336, 0.063552186, 0.028876707, 0.018177537, 0.041926272, -0.014856164, 0.044303752, 0.005610269, -0.01093611, 0.045402326, -0.011396158, -0.0017077532, -0.021370657, 0.039692797, 0.048164934, 0.0024104684, 0.014703333, -0.010764309, 0.0091288565, -0.02290494, -0.031153312, -0.015208477, -0.024641087, -0.059401277, 0.0044711307, -0.018780394, 0.062955655, 0.06195443, -0.01443036, -0.0105897635, 0.034929127, 0.026526367, -0.034528255, -0.05184965, 0.03469194, 0.003002706, 0.013114409, 0.009323564, 0.04799277, -0.030072872, 0.028188607, 0.017702341, 0.0034159839, -0.035423294, -0.02816755, -0.050697863, 0.052377462, -0.025023108, -0.0016956435, -0.025414672, 0.0790396, 0.043772597, -0.000268201, 0.02446344, -0.013285853, -0.057102956, -0.017258402, -0.011083096, -0.010972381, 0.022890622, 0.024577139, -0.02141981, 0.0051211123, -0.048898485, 0.037170894, 0.052758288, 0.002873855, 0.012610935, -0.009894446, -0.02958658, -0.03484895, -0.060557116, 0.06633823, 0.061999295, -0.061363865, -0.008842282, -0.053489394, -0.03175104, -0.008839657, 0.039323185, 0.0062058466, 0.011556982, 0.012829743, 0.049554672, -0.046014126, -0.024507405, 0.016757075, -0.01053035, -0.0416981, -0.012007066, -0.040620998, 0.012081454, 0.0047560344, 0.0609933, 0.020857997, 0.007709586, 0.030885588, 0.031852208, 0.0017876885, -0.002389948, 0.014164783, 0.03594359, 0.003121058, -0.019505896, 0.0029969793, 0.014053112, -0.008844906, 0.042228773, -0.001051806, 0.0030789427, 0.048118696, -0.024838658, -0.018993596, 0.0025837016, 0.06052848, -0.01657573, -0.001678881, 0.049187683, 0.046252742, -0.03754671, 0.03986173, -0.028673645, -0.08900074, 0.03229961, 0.061084926, -0.01649484, -0.045418076, -0.025858492, -0.031242076, -0.01443036, -0.037915602, 0.06940393, 0.027938718, 0.016785469, -0.04559656, -0.026287517, -0.038480643, -0.006863524, -0.01258946, 0.013416612, 0.033316102, 0.020125574, -0.033471677, 0.028019845, -0.03646293, 0.0080274185, 0.011029647, 0.009567307, -0.052533034, -0.00846408, -0.015944717, 0.004194936, 0.015254051, 0.02484677, 0.018039977, -0.0026509904, -0.02291496, -0.024354275, -0.0011278044, 0.019936593, 0.021525756, -0.037151087, -0.0013529357, -0.011596591, -0.0032680437, 0.0373792, -0.019761927, 0.0008093753, -0.006359545, -0.074985564, -0.054094523, 0.039643165, -0.01249139, -0.015717916, 0.034894764, 0.034805045, 0.032317746, -0.0017409204, -0.021288814, 0.021426493, 0.049732678, 0.014277647, 0.028847834, -0.005177663, -0.055475615, -0.058809515, 0.015857741, -0.01916635, -0.030227017, -0.037763547, -0.03821626, 0.0050978474, -0.013081481, 0.01850065, -0.021709964, 0.019414507, -0.010794851, 0.029349877, 0.00049822393, 0.002779245, -0.029578943, 0.030308623, 0.0068340553, -0.0004569439, -0.012315786, 0.050831247, 0.0037459852, 0.012450825, -0.00845798, 0.047672965, 0.03696688, -0.033085123, -0.009301224, -0.052965406, 0.010203569, 0.0020146393, -0.019768609, -0.022640973, -0.06816792, 0.008876046, 0.013087445, -0.012474687, 0.00018206172, 0.0025780941, 0.024915013, -0.004627183, 0.010651207, -0.033511765, -0.018600598, -0.042998537, -0.012846208, 0.015664943, 0.009685779, -0.040273104, -0.008067505, -0.033594325, 0.014192701, 0.024474056, -0.008212821, -0.01130262, 0.032916185, -0.032797355, 0.03672445, 0.012229394, 0.03368643, 0.007575962, -0.0075802575, 0.03899032, -0.008637314, 0.044528853, -0.019063389, -0.041105386, 0.080849715, -0.020258242, -0.032971546, -0.02583606, 0.016457615, 0.0047724983, 0.021566797, 0.024321826, 0.0032355923, 0.009400398, 0.01580286, -0.011134637, -0.002619732, -0.037604332, 0.0233144, 0.049555622, -0.010485968, 0.008399177, -0.06344433, 0.031342532, -0.006278385, -0.000632742, -0.011754076, -0.03087843, -0.038783204, 0.047865767, -0.035123833, 0.011599456, 0.00029200266, 0.0027154158, -0.0020062581, 0.045774564, -0.0045715864, -0.015771365, -0.013118704, 0.039469514, 0.009956843, 0.009009072, -0.0064979093, -0.0302609, -0.019509953, -0.0315036, -0.042465717, 0.007302273, 0.018901013, -0.05223525, -0.04681778, -0.004174296, -0.026307084, 0.029929705, 0.0019507806, 0.009794825, 0.013812233, -0.038362768, -0.0531038, -0.02661203, 0.037139636, -1.7895975e-07, 0.005348749, -0.029120332, 0.02149569, 0.037194993, 0.0033260265, 0.049836714, 0.006030228, 0.01093802, 0.037301656, -0.006262756, 0.029018681, -0.026013559, -0.029627115, 0.030515738, -0.013751745, -0.025460843, -0.049679227, -0.01357875, 0.031106902, 0.023679478, 0.005663718, 0.022747932, 0.023357825, 0.034970883, -0.05080536, 0.021136338, -0.0043224148, -0.012700415, 0.032529153, -0.06667038, -0.018437626, 0.01214063, -0.016365988, -0.01226614, -0.016753735, -0.028080774, -0.00884252, -0.016038612, -0.012951913, 0.018972596, 0.0034837497, 0.014937293, -0.0008561434, -0.028874082, -0.03580722, 0.020185944, 0.033643004, 0.051408455, -0.01915251, 0.023134723, -0.00054785545, 0.0026552854, -0.060304187, -0.04241871, -0.020577509, 0.0401328, -0.0009950908, 0.012918627, 0.09237186, -0.0026166302, -0.005587124, -0.005034257, -0.0595788, 0.03356915, -0.035673596, 0.028515207, 0.008107399, -0.023907112, -0.069228314, -0.0138193015, 0.0120294355, -0.011254302, -0.018252939, -0.05795862, 0.012386878, 0.002102777, 0.02323779, -0.0017447383, 0.009674802, 0.00053353864, -0.009167511, 0.004563712, -0.005349703, -0.09723957, -0.027825138, -0.024769938, -0.045952093, -0.0571125, -0.055060428, 0.0110516, 0.00044662386, -0.04171337, 0.04381889, -0.031546548, -0.0034851816, 0.009063715, -0.056760307, 0.029080719, -0.0132654505, -0.027506948, 0.014991219, -0.02845293, 0.035797678, 0.032723147, 0.019337913, -0.008941545, -0.006586673, 0.004595925, -0.00040802822, 0.058670163, 0.022140363, 0.032704536, -0.016496867, 0.006252138, -0.009216665, -0.027246503, -0.064868376, -0.038636215, 0.004250175, -0.013939772, 0.00972348, 0.04765388, 0.0041645127, -0.008650199, 0.01600592, 0.014667541, -0.00068529655, 0.031725984, 0.058538925, -0.014818344, 0.01736327, 0.0072299736, 0.025826994, -0.010298537, -0.026956586, 0.00964951, -0.0074724047, 0.016834863, 0.01158132, 0.0052547352, 0.03904949, -0.015139279, 0.012058069, -0.006058861, 0.0059531555, 0.001891724, -0.076369524, -4.4859247e-05, 0.0884128, -0.0012140629, 0.021643989, 0.054831356, -0.025749205, 0.006022592, -0.050612085, -0.0036307352, -0.060145743, -0.03409016, -0.030727627, -0.008162473, -0.018348385, 0.009641874, 0.030250043, 0.0018389904, 0.038504504, 0.033997104, 0.022054523, 0.0054582017, -0.02874729, 0.05923377, -0.0051941276, 0.03114186, 0.015120428, -0.007788537, 0.012348699, 0.040595707, -0.024692269, 0.00092963624, 0.02130814, -0.027809868, -0.0022264977, 0.029610917, -0.0851333, 0.0106328335, -0.02734988, -0.022143764, 0.05082075, -0.017548556, 0.021730961, 0.03847539, -0.0059658024, -0.022931186, -0.017477447, -0.023937656, 0.014259513, 0.040776573, -0.005103455, -0.011453424, -0.018823463, 0.012037071, 0.017063692, 0.0012505408, -0.05284395, 0.053764313, 0.021394996, 0.04370054, 0.023345897, -0.040869635, 0.04817883, 0.0062788627, -0.031847198, 0.010375847, 0.009354225, -0.05837619, -0.061200414, 0.019634748, -0.002168515, 0.030268535, 0.03771672, 0.0073521435, 0.018121703, -0.058175758, -0.03585685, -0.011527394, -0.050725423, -0.051899284, -0.015238303, 0.003889869, 0.010838757, 0.027264876, 0.0021246101, -0.050560184, 0.05962271, -0.0118075255, 0.011596591, 0.030322941, 0.0057150195, -0.034803137, -0.0038633829, 0.001889815, 0.05658564, 0.004315793, 0.024277918, -0.026197799, 0.01920262, -0.057651762, 0.009496082, -0.011478717, 0.027751645, -0.02810861, 0.017754717, -0.028684624, 0.004634819, 0.00024529416, 0.052250516, -0.013963632, 0.015225896, -0.017691722, -0.032507204, -0.016818875, 0.027862838, -0.055599455, 0.058114674, -0.013101762, 0.015857413, 0.06316945, -0.009716082, 0.059924312, 0.019227436, 0.0359004, 0.011797743, -0.013845281, -0.009255082, 0.052987356, -0.022051657, -0.012975536, 0.009083042, -0.03814181, 0.025300257, -0.024705991, 0.010901751, 0.02996162, -0.025551634, 0.06914432, -0.024242247, -0.050851293, -0.043351207, 0.062117644, -0.02781273, -0.03448101, -0.032464013, 0.0073912763, -0.020138936, -0.013076946, 0.02983784, -0.007825075, -0.025435193, -0.06668947, -0.012083303, -0.021969039, 0.01453177, -0.00052065356, 0.023760516, 0.030821165, -0.02497228, -0.025843697, -0.010792943, 0.019866917, 0.061628964, 0.026402274, 0.017877124, 0.010412833, 0.012706619, -0.02650558, -0.017734015, -0.036575824, 0.036033187, 0.070538536, 0.012685144, -0.010630687, 0.0013328922, 0.00410987, -0.021758165, 0.027318325, 0.016779803, -0.0035825355, 0.025756365, 0.026753051, -0.043171056, 0.0041843173, -0.00674893], [-0.04329845, -0.07967149, -0.018201439, -0.019131973, -0.01948884, 0.03229586, 0.024476454, -0.0142064765, 0.045025237, 0.039798595, -0.0095050875, 0.0032593047, -0.08673453, -0.0029858404, -0.014387955, 0.062092435, 0.00019792115, -0.0469944, -0.0017258725, 0.02840321, -0.033135045, -0.020749446, -0.011956874, 0.01558279, -0.026589641, 0.06697408, 0.010501392, 0.0050354186, 0.02228105, -0.04052938, 0.004284232, -0.027831217, -0.011456895, -0.004750717, 0.0104703335, 0.024517864, 0.021398017, -0.017820213, -0.039635386, -0.030517615, -0.0814339, 0.03648083, -0.035217788, 0.022382142, 0.0015200345, 0.038444206, 0.023488065, 0.03459114, -0.015587966, -0.056796674, 0.026150256, -0.005971738, -0.038727995, 0.013193729, -0.02752931, 0.042178523, 0.036474127, 0.019138671, 0.011139916, -0.003484326, -0.016045012, -0.034557644, -0.055271767, 0.017397575, 0.02215499, 0.013317215, 0.0019907823, 0.0048012626, 0.00462222, -0.037669573, -0.022631219, 0.0055807675, 0.008984098, -0.029292675, 0.054935604, -0.00664094, -0.06849899, -0.014484175, -0.027981788, -0.023657972, -0.0020279307, 0.028529802, 0.021844406, -0.06500583, -0.05165194, 0.006489987, -0.029183932, -0.007502734, 0.049837157, 0.025565324, -0.04574232, 0.0123947365, 0.012586568, -0.03434937, 0.0017721556, 0.022529518, -0.009043475, 0.06953427, 0.02263, 0.022192746, 0.036616024, -0.055283945, -0.011659687, 0.0035568764, 0.012984541, 0.011161535, 0.011305257, -0.031794056, -0.0056550642, 0.01328934, -0.0044687553, 0.0057447376, 0.011689909, -0.055039134, 0.013721721, -0.024557449, 0.012961704, -0.018611897, -0.025494073, 0.00031758734, -0.01562694, 0.03532984, 0.009375982, 0.018300096, -0.018002909, 0.004367663, 0.02205877, 0.027146257, -0.049284194, 0.004459925, 0.03352754, 0.016418321, 0.03822204, -0.024136638, -0.040317453, 0.01567292, 0.017618941, 0.055165805, -0.022781944, 0.048870083, -0.029951256, -0.0022593462, 0.014742386, 0.005463842, 0.025100056, -0.03133853, 0.006483897, -0.045710653, -0.00016199086, -0.013218697, -0.0010986147, -0.008509696, 0.003491938, 0.00050302426, 0.006077702, -0.05696719, 0.015538942, 0.023780989, -0.029976834, 0.035370644, -0.0076342947, 0.00041411197, 0.02999145, 0.013648643, -0.005614871, -0.050024725, 0.046139684, -0.014591966, -0.014294171, 0.063133195, 0.0676391, 0.017024873, 0.021044195, 0.043993305, -0.03465173, -0.025270574, 0.00771314, -0.015467234, 0.0101859365, 0.02006616, -0.0046697212, 0.0040412457, -0.013029759, -0.0187544, -0.024381451, 0.010919767, -0.03342675, -0.009435358, -0.028320996, 0.007406514, 0.05821927, -0.009709707, -0.0042458656, -0.0007181493, -0.030505436, 0.02158924, -0.040552523, 0.000109617875, 0.023024624, 0.057800286, 0.0026606694, 0.0137355765, 0.01059883, -0.03969872, -0.024087919, -0.06831386, 0.019029662, -0.020834703, 0.034110647, -0.038379043, -0.0053834557, 0.04277533, 0.024235293, 0.04355727, 0.037057236, 0.024654277, 0.027696783, -0.041116446, 0.019390794, 0.054273028, -0.027313728, 0.015481964, 0.021712864, -0.030169275, -0.019457782, 0.008875393, -0.011459939, 0.014364813, 0.017330281, 0.0073701274, 0.057222966, 0.011163362, -0.039437465, -0.05366952, -0.0033963271, 0.020385271, -0.04815026, 0.03658192, -0.041351516, 0.041051894, -0.030507872, 0.009200745, 0.052119642, -0.043795995, -0.03722501, -0.0069609634, -0.05374686, -0.010617709, -0.025506862, 0.015700324, 0.077067755, -0.0329828, -0.004944984, 0.0039405343, -0.017609501, -0.008002104, -0.020475704, -0.00931082, -0.0114489775, 0.06153582, -0.0044029844, -0.03568914, -0.025498943, -0.04544635, 0.054238923, 0.026269315, 0.015145536, -0.032870747, 0.0100236405, -0.03683891, -0.017415235, -0.06656241, 0.023180526, 0.04884694, -0.015364772, 0.026276622, 0.022927187, 0.016543163, 0.053478904, 0.017635688, -0.070416085, -0.03408933, 0.0124739045, 0.016182033, 0.024744503, 0.0050692176, 0.008254225, -0.029795203, -0.023768809, -0.04228692, 0.0008501475, 0.00414112, 0.03943442, 0.0362869, 0.049308553, -0.03248221, 0.061994996, -0.0188561, -0.029055739, -0.046917666, 0.010411262, 0.0016363512, -0.0013093246, -0.01584039, -0.0010894799, -0.035367597, -0.06412402, 0.018919436, 0.008635452, 0.0022431698, -0.031645462, -0.016415885, -0.077145405, 0.008512436, -0.007880916, -0.02606104, 0.020949194, 0.11279679, -0.024090355, -0.027494142, -0.023972211, -0.032588176, -0.019918177, -0.072260104, 0.009314017, 0.06803129, 0.032848824, 0.009406432, -0.036561213, -0.019762885, 0.045642447, 0.024650624, 0.010670691, 0.008384854, 0.015977414, 0.013017427, -0.001029742, 0.022946674, 0.017306225, 0.052324265, 0.014597751, -0.04852418, -0.025786996, -0.011134283, 0.019744614, -0.0821519, -0.024310809, -0.06642843, -0.00406865, 0.01039048, 0.014346391, -0.037234146, 0.013584395, 0.019087516, -0.017654568, -0.022795646, -0.0056701936, 0.01669267, 0.0076781227, -0.013232932, 0.02496608, -0.015333713, -0.029617608, 0.03463803, -0.0049254964, -0.008818758, 0.06863784, 0.0147350775, 0.049118552, -0.028412953, 0.05433149, 0.028301964, -0.00545897, 0.015035918, -0.025705542, 0.05162271, -0.0420348, 0.007949998, 0.04103606, -0.0008605003, 0.02152484, -0.017910343, 0.033124086, 0.029689392, 0.037396748, 0.049442533, 0.033189856, 0.04315024, -0.024997156, 0.044217415, 0.021037497, 0.0074922293, 0.029131558, 0.022846801, -0.00990367, -0.015876018, 0.023984391, 0.019559026, 0.017585143, 0.014002466, 1.644268e-05, 0.023007574, 0.0047245305, -0.019329285, 0.009515136, -0.057266813, -0.035069194, 0.022790773, -0.0147289885, 0.03395718, 0.033209343, -0.012870356, -0.023158602, 0.033944696, 0.03306075, -0.016128443, -0.015674138, 0.024733447, -0.00036295695, 0.018465435, 0.037723165, 0.054911245, -0.055557992, 0.028815493, 0.026485201, -0.007904971, -0.0072219907, -0.0052117207, -0.033525407, 0.028331349, 0.015680227, 0.0096439365, 0.0021509463, 0.09990329, 0.046191145, -0.036839828, -0.018021787, -0.021137979, -0.056138966, -0.017483061, -0.023938715, -0.04387638, -0.013875186, -0.006080138, -0.021460744, -0.0001808695, -0.036307268, 0.03883152, 0.048399944, -0.022839492, 0.014531676, -0.014152276, -0.030909805, -0.02997927, -0.020929705, 0.031711232, 0.05878441, -0.064639226, -0.03697837, -0.035707414, -0.04854123, -0.016238062, 0.046603125, 0.0037854705, 0.014223375, 0.020479664, 0.013356329, -0.06874259, -0.0014359942, 0.006499122, -0.0010989192, -0.025514169, 0.011149355, -0.04248545, -0.016525503, -0.00088425085, 0.017115366, 0.014463469, 0.008326391, 0.012633003, 0.03077339, 0.02164953, 0.031113205, 0.023601945, 0.03192742, 0.037086237, -0.04139049, 0.009228607, 0.0015772794, 0.0029179668, 0.012979974, 0.015860792, 0.020701183, 0.05259709, -0.052917417, -0.016251458, 0.037626334, 0.048777517, -0.053171977, 0.005100276, 0.065575846, 0.022157425, -0.07826716, 0.04598835, -0.0056399917, -0.0578621, 0.008542277, 0.059476223, -0.026132673, -0.0020309757, -0.017528506, -0.04273818, -0.031248402, -0.039083567, 0.046258744, 0.04514064, 0.0013586526, -0.046115022, -0.036139794, 0.00092337833, -0.025952108, -0.010214406, -0.032612536, 0.046429258, 0.025606735, -0.024761992, 0.045279488, -0.040446557, 0.028461672, -0.01581664, 0.0013568257, -0.056087203, -0.04701876, 0.004906009, -0.017647259, -0.030254534, 0.01801387, 0.023433866, 0.018111309, -0.04949369, -0.018509587, 0.00564121, 0.0079643475, 0.011913027, -0.03064672, -0.007982617, -0.01776784, 0.025036722, 0.013773791, -0.007530139, -0.019214796, 0.002119431, -0.091699004, -0.06827976, 0.035124004, 0.007049647, -0.01965517, 0.023967948, 0.06433351, 0.00529637, -0.007344702, 0.010625473, 0.022488715, 0.018799769, 0.04117247, 0.02943727, -0.01954852, -0.09230068, -0.06105959, 0.03952577, -0.04213711, -0.025333907, -0.037391875, -0.055953834, 0.00978743, -0.015814053, 0.02939055, -0.021868462, 0.010335138, -0.016576733, 0.018884115, -0.024637835, 0.013443071, -0.004807657, 0.0001957897, 0.032550417, -0.011560346, 0.014990853, 0.008220122, 0.002731921, 0.034161497, 0.008540451, 0.043939713, 0.022057856, -0.016684448, -0.007999669, -0.03660019, -0.018719688, 0.010954175, -0.039242588, -0.020590499, -0.06301079, 0.0061002346, -0.0009329699, 0.026081746, -0.02839651, -0.017291002, 0.028235128, 0.011994936, 0.0069278497, -0.013762523, 0.03128372, -0.022259736, -0.021593045, -0.022032583, -0.011959614, -0.037559956, -0.0049595996, -0.03223131, -0.010601266, 0.020116402, -0.013998202, -0.014392827, 0.028070701, -0.0059010955, 0.015139446, 0.0088236295, 0.06358933, 0.014733251, -0.0064138635, 0.02369965, -0.021530168, 0.0808444, -0.011751036, -0.060328804, 0.09184516, 0.012239444, -0.03322396, -0.015784973, -0.00017660657, 0.004741582, 0.040436815, -0.018914564, 0.01351223, -0.0017624118, -0.0069412473, -0.00017143018, 0.004195624, -0.040093347, 0.023295473, 0.031643637, -0.0033658776, 0.0065441867, -0.0267527, 0.041109137, -0.016492618, 0.00045978607, -0.03324984, -0.030270366, -0.028400773, 0.02595264, -0.04982254, 0.033234313, 0.04134786, -0.0011165799, 0.004153299, 0.00652409, 0.00047265095, -0.026082963, -0.015586748, 0.047479153, 0.018252442, 0.020625211, -0.028230561, 0.006744544, 0.012333533, -0.028936516, -0.020513006, -0.010835727, 0.04529045, -0.038746264, -0.017931048, 0.007881678, 0.010988583, 0.054034304, 0.0340668, -0.007854044, 0.03944051, -0.050648328, -0.049386505, -0.035603885, 0.014791105, -0.024337603, -0.015110214, -0.014614498, -0.018722733, 0.0150523605, 0.014214697, 0.045274615, 0.030941166, 0.035285383, 0.06650394, 0.022427207, 0.041983645, 0.023128154, -0.024556383, 0.024649406, 0.0009591564, -0.030914675, -0.09359174, -0.017763576, 0.004608061, -0.007352923, 0.059710074, 0.029661987, -0.031365328, 0.037540466, -0.024384495, 0.020557614, 0.006700088, 0.00012118865, 0.010525143, -0.08376754, 0.01085491, 0.03668423, -0.013210172, -0.021052722, -0.047761723, -0.02380413, 0.023784643, -0.008517917, -0.014626069, 0.015568783, 0.004848307, 0.015915506, 0.014386737, -0.03432623, -0.05071288, 0.033182546, -0.00034225135, -0.006284149, -0.021478403, 0.027086576, 0.00032154575, 0.015194255, -0.036858402, -0.024807742, -0.04359868, 0.03353363, 0.008231084, -0.009730414, 0.034146577, 0.035382517, -0.00017112568, 0.002835449, -0.03402478, 0.030288637, -0.019196525, 0.0033570474, 0.018438945, 0.022423554, -0.06814334, -0.0050463807, -0.00782702, 0.0022045372, 0.0028258574, 0.00036006427, 0.02211571, 0.0068588816, 0.0014067627, 0.017516935, -0.005134227, 0.013967144, -0.008160441, 0.011299167, 0.011111598, -0.07779337, -0.033689227, 0.0028277605, -0.034510143, -0.06365205, -0.001187527, 0.033119213, 0.0035284774, -0.011914245, 0.057995163, -0.01674352, -0.017422942, 0.028846553, -0.06394376, 0.0083875945, -0.039863147, -0.034322575, 0.017913997, -0.042207144, 0.018118616, 0.013799672, 0.07644994, -0.054604314, -0.022454003, 0.004934022, 0.0025346088, 0.018345997, 0.0028148957, 0.001652794, -0.0018516285, 0.0018528466, -0.0062652705, -0.017817777, -0.061532166, -0.002111971, 0.02085541, -0.009759949, -0.00050058827, 0.025436219, -0.015296794, -0.00046526696, 0.018532729, 0.037991118, -0.011499067, 0.005877954, 0.029158354, 0.027866995, -0.026806442, -0.014167349, 0.012872487, 0.017183363, -0.018559067, -0.04307008, -0.005662524, 0.03653929, 0.018843312, 0.01517964, 0.021703996, 0.03078283, -0.021801777, -0.008326086, -0.008516091, 0.02680766, -0.095801145, -0.017614374, 0.04721851, 0.0024676202, 0.006238475, 0.0012240662, -0.040495276, 0.018855492, -0.048609436, -0.005038159, -0.05827286, -0.05615358, 0.0115318, -0.018311057, -0.0010182282, 0.00602472, 0.021617861, 0.006948251, 0.025734318, 0.020531427, 0.006178794, -0.009854646, -0.034994897, 0.036357813, -0.002055335, -0.010672746, 0.04685555, -0.023111407, 0.011431621, 0.031521227, -0.02028296, 0.028118202, 0.034532066, -0.031085193, 0.027518958, 0.030814802, -0.030299598, -0.01846513, -0.036541726, -0.005806093, 0.016778842, -0.023186617, 0.039506283, 0.032938953, -0.020023532, -0.02946574, -0.026442267, -0.029675994, -0.004075349, 0.016838523, 0.0003395109, -0.02028905, -0.03427142, -0.0013014077, 0.002887822, -0.03740984, -0.059200957, 0.07395857, 0.013196774, 0.048948035, 0.039054718, -0.03020825, 0.047466975, 0.03318133, -0.008435096, 0.0023771091, -0.015532852, -0.030108375, -0.05031582, 0.025589075, -0.005919898, 0.031040736, 0.09433958, 0.039827827, 0.0012910549, -0.07076686, 0.0011260192, -0.019343292, -0.020973857, -0.044264916, -0.013579219, -0.014632159, -0.0062147244, -0.028417824, -0.009351546, -0.036169026, 0.07946078, 0.010528796, 0.0063459612, 0.0039498974, -0.0140542295, -0.011161688, 0.008981966, -0.0052671386, 0.0717047, 0.023288926, 0.031209426, -0.038872935, 0.0050789616, -0.04576668, 0.0030158616, 0.009239568, 0.009487731, -0.009231652, 0.010560464, -0.028495776, 0.0052811457, 0.028487707, 0.06394376, -0.040111616, 0.02140228, 0.016907947, -0.041546393, -0.0037221357, 0.031377506, -0.04439798, 0.02278103, 0.021059362, -0.005256177, 0.024755979, -0.046132073, 0.06523466, 0.024761459, 0.021869984, 0.030796114, -0.007929026, 0.012835035, 0.03037146, -0.029577337, -0.00030430377, 0.0048548537, -0.02465915, 0.017053496, -0.007155611, -0.024180485, 0.037404053, 0.0041746045, 0.033949874, -0.013325879, -0.06271604, -0.015654955, 0.06336293, -0.02091448, -0.01174015, -0.016260594, 0.0043210755, -0.024951464, 0.0016105834, 0.0006004624, -0.017894508, -0.0029006107, -0.07410168, -0.045215547, 0.01446286, 0.028573269, 0.012318613, 0.05206118, -0.01472168, -0.03986977, -0.017797984, -0.0021436384, 0.018710857, 0.05676257, 0.024780948, 0.048465714, 0.036393132, 0.029694872, -0.0037367514, 0.0105695985, -0.053380553, 0.015829772, 0.059562087, -0.011549613, -0.0040360694, -0.00032763564, -0.0058316328, 0.007673708, 0.0045747194, -0.015578336, -0.021725958, 0.039545257, 0.024441741, -0.047851857, -0.009860736, -0.0033603967], [-0.038578644, -0.036153734, 0.0014732399, -0.025592435, -0.010029757, 0.039650977, 0.018567786, -0.041994147, 0.012564381, 0.0033206283, 0.004362308, -0.011650174, 0.029526344, 0.002415666, 0.033040617, 0.058563598, -0.020486452, -0.039903004, 0.046381757, 0.031995285, -0.023910226, -0.016881928, 0.025032427, 0.04073596, -0.015779918, 0.08096069, -0.016166717, -0.036147896, -0.024911765, -0.0043516043, 0.006852901, -0.0900749, -0.07645667, -0.038276017, 0.006882093, 0.03920239, 0.008876416, -0.00859325, 0.0064038252, -0.002451183, -0.11265127, -0.019404389, -0.019851761, 0.051018957, 0.033034045, 0.04422444, 0.04021317, -0.057476792, -0.006251052, -0.018275375, 0.044931382, -0.027358085, -0.013897011, -0.00081543927, 0.028346123, 0.051039882, -0.01076808, 0.034911115, 0.046482958, -0.0183576, 0.03654686, 0.012922474, -0.06379693, 0.031352084, 0.020347545, 0.009376578, 0.026726557, 0.010978265, -0.047922138, -0.014265807, -0.016100546, 0.013554127, -0.06648092, 0.009385822, -0.020533888, 0.015200936, -0.046298556, -0.015400538, 0.008458966, 0.0020162172, -0.0061807474, 0.03568082, 0.013748131, -0.015709369, -0.029184947, -1.5569247e-05, -0.025266873, -0.03641549, 0.06369184, 0.005060005, -0.049725376, -0.010531865, 0.03613038, 0.029180903, 0.027121626, 0.044971768, 0.0066256872, 0.018452475, 0.050175544, 0.028626796, 0.020090653, -0.042557564, -0.035618544, 0.009119443, -0.0063191676, -0.019863924, 0.0170347, -0.06373076, 0.01788444, -0.022733046, -0.006998072, -0.035616595, -0.013054812, -0.035214283, 0.024215043, 0.04469152, 0.027715234, -0.05955042, 0.000112390495, -0.012658284, 0.036163464, -0.05407491, -0.010264998, -0.0036711793, -0.063371696, 0.014380874, 0.025464473, -0.011142837, -0.037465446, 0.00939896, 0.030501612, -0.005418462, 0.035780072, -0.048058372, -0.055924732, 0.0057445653, 0.015726397, 0.03235776, -0.022505345, 0.024100462, 0.014384038, -0.018560367, -0.028392466, -0.0006787218, 0.0121007785, -0.010829748, 0.04392425, 0.006496754, -0.00073078147, 0.006794516, 0.016266942, -0.017135901, -0.033810563, 0.021578124, -0.019943232, -0.04564319, -0.0033051807, 0.00077165075, -0.018645024, 0.038387194, 0.010590979, -0.0031943712, -0.0076016844, -0.019794837, 0.024418902, -0.02839879, -0.00046805045, -0.009852899, 0.035778128, 0.06456453, 0.038363595, 0.024957502, 0.041193306, 0.038453344, -0.048140593, -0.03691114, 0.024914198, -0.008611739, 0.0027465122, -0.018462693, -0.011752835, -0.02315536, -0.003591144, 0.027824188, -0.007155528, 0.02218715, -0.031465933, -0.032024357, 0.06609242, 0.008046867, 0.037633453, -0.02694623, -0.038117405, 0.0107055595, -0.008624876, 0.009018485, -0.024646116, -0.010496408, -0.00063736597, -0.0330529, 0.005283813, -0.033999097, 0.000543464, -0.046024635, -0.04948539, -0.0037336997, 0.02319842, 0.045910787, 0.0394875, -0.05088808, -0.017000644, 0.009728346, -0.008913393, 0.031396843, 0.015182205, 0.018459773, 0.024662172, -0.06788471, 0.029276265, 0.043033395, -0.023354841, -0.004679775, 0.028413873, -0.02399902, 4.3788503e-05, -0.029056106, 0.010599251, 0.006074925, -0.02130992, -0.0048449547, 0.08760426, -0.044839427, -0.0027917605, -0.08472005, -0.036614973, -0.019621143, -0.03325299, -0.04036796, -0.068620965, 0.03579175, -0.021938285, -0.006402001, 0.030062754, -0.033763856, -0.012833803, -0.012021161, -0.036744393, -0.045917597, -0.0022585138, 0.039656814, 0.044652596, 0.045507934, -0.028205391, -0.0021906414, 0.042270504, 0.039671414, -0.0038816074, 0.010516539, 0.0052139945, 0.01605092, -0.030475095, -0.048569236, 7.687315e-05, -0.017377226, 0.01128965, 0.021566812, 0.022018319, -0.016619561, -0.00711028, -0.047209844, 0.002857443, -0.058260117, 0.064779736, 0.022643521, 0.004462535, 0.014444367, 0.03558351, 0.023235153, 0.030279629, 0.011227494, -0.047634106, -0.0052828398, -0.03351572, 0.04817319, -0.0007443741, -0.055862457, 0.027936092, -0.016606547, -0.0054088538, -0.021349695, 0.03330748, 0.0024626167, -0.0078358315, 0.06263897, 0.039914683, -0.03149123, 0.019840328, -0.0069526415, -0.022693148, -0.06051766, -0.017940758, -0.009299219, 0.008237226, -0.059824828, 0.022197854, -0.0056234174, -0.03291509, -0.0137590775, 0.026763046, 0.0054755094, 0.046532582, -0.03873507, -0.031916223, -0.008234185, 0.02919769, -0.015406742, -0.0077267247, 0.064090796, -0.008790785, -0.010437233, -0.031022452, -0.015619602, -0.030479718, -0.057525933, 0.028548889, 0.054235466, 0.035707094, -0.009788677, -0.044369124, -0.023362141, 0.008982482, 0.047091126, 0.004086927, -0.0038283318, 0.0003590657, -0.012150033, 0.011589358, -0.03362811, -0.024954703, -0.007002755, -0.005213751, -0.07929222, -0.045511823, 0.006492376, 0.0268533, -0.024364986, -0.03955525, 0.002595077, 0.027363436, -0.028327847, 0.032347053, -0.03243986, -0.004319979, -0.01462536, 0.02445734, -0.008585025, 0.012217966, -0.02775364, 0.00045442735, -0.022811865, -0.0125760585, -0.021805216, -0.060924403, -0.021541024, -0.021617899, -0.054011658, 0.07016962, 0.04051507, -0.013389551, -0.009190964, 0.043109298, 0.023344867, -0.06690105, -0.0010975748, -0.013724837, 0.048810072, -0.018214557, 0.018554162, 0.05994666, 0.01354719, 0.021131845, -0.026922146, 0.049698006, 0.016411932, 0.05228542, 0.046812832, 0.026132006, 0.02629159, 0.015265645, 0.04449593, 0.013029512, 0.014892074, 0.04560816, -0.03190528, 0.017382577, -0.03630067, 0.033848513, 0.018362952, 0.034392465, 0.029334892, 0.023630224, -0.0055826697, -0.047973715, 0.01741554, 0.0048270747, -0.02507427, -0.05089976, -0.010707749, -0.03654491, 0.018957503, 0.012842682, -0.003960427, -0.002718715, 0.023557242, 0.039700605, -0.009121936, -0.009368884, 0.020885656, -0.00039409654, -0.0032260267, 0.019458639, 0.029147575, -0.043254286, 0.024197526, 0.067936406, 0.035510045, -0.029822892, 0.004554491, -0.0043970956, 0.06372687, 0.031188544, 0.04271435, -0.0060895826, 0.062603936, 0.026915332, -0.011478427, 0.019373069, -0.04187385, 0.006412583, -0.020358978, -0.0110132955, -0.029098434, -0.050808284, 0.0056457976, -0.023521237, -0.011325654, -0.028898101, 0.07513329, 0.046299774, 0.013266943, 0.0071832608, 0.008586439, -0.08569508, -0.059733357, -0.02280797, 0.08055431, 0.04848458, -0.028517507, -0.008701262, -0.043654583, -0.03849204, -0.023873493, 0.03533343, 0.010113684, -0.034145303, 0.011642877, 0.023945501, -0.022064175, -0.03899775, -0.00088689965, -0.010854684, -0.016131198, -0.026396684, -0.038755745, 0.029378192, 0.036547832, 0.0352804, 0.0010781703, -0.017773537, 0.00915195, 0.006311383, -0.030337162, -0.030609138, -0.011849412, 0.01049124, 0.051873565, -0.013089843, 0.021411607, 0.012616928, 0.018303595, -0.002901049, 0.016158322, 0.025808457, 0.03445474, -0.032282833, 0.0019458516, -0.007742294, 0.024627384, -0.00651576, 0.018993264, 0.015434961, 0.037885815, -0.028989935, -0.009809354, 0.010862954, -0.038519774, 0.0033858244, 0.04307232, -0.06296689, 0.011778135, -0.039770663, -0.031585135, -0.008435612, -0.019864898, 0.019216342, 0.047974687, -0.0074350447, -0.008914609, 0.010548164, -0.042278286, -0.0012474859, -0.02855424, 0.014751861, 0.03538014, 0.011836519, -0.046933495, 0.038461633, -0.07968048, -0.010229481, -0.012672394, -0.015993752, -0.014980655, -0.0001505838, -0.026899643, 0.018895956, -0.003307005, -0.006692343, -0.0027724206, 0.013411932, -0.0032320782, 0.035623893, 0.03993852, -0.009595521, -0.01099432, -0.018834895, -0.003797923, -0.01809341, 0.0031780722, 0.03412195, -0.047287207, 0.009016783, 0.058007117, -0.016935933, -0.0399935, 0.083988294, -0.03990787, -0.025430417, 0.02607654, 0.067122914, 0.033579882, 0.004842522, 0.001394907, -0.0066986675, 0.046953928, -0.0055090804, 0.03612016, -0.044426844, -0.017205963, 0.0071657454, 0.020709043, -0.05224698, 0.0067113177, -0.03290268, -0.03539863, -0.013824517, -0.01259552, -0.014177258, -0.06307101, -0.0069662645, -0.014616602, 0.013784134, -0.052779745, 0.014003564, -0.047895256, 0.0038832498, 0.050795395, 0.010412662, 0.013016863, 0.011567949, 0.009380227, 0.07192797, -0.0075464617, 0.044727527, -0.048015557, -0.01284706, -0.039060317, -0.066804715, 0.0021643683, -0.034268398, 0.048217956, -0.0336792, -0.058530632, 0.018916147, -0.025798727, 0.014715614, -0.009759363, 0.011992211, 0.027765805, -0.0041320533, -0.01926694, 0.006103631, 0.0026019798, -0.02690171, -0.038245365, -0.00869956, 0.031134598, -0.027844563, 0.03840641, -0.054588083, 0.008817788, -0.039182775, -0.0067501804, 0.012860197, 0.023959123, 0.048779115, -0.0121401185, -0.005791759, 0.0080196215, 0.014290134, -0.0006935612, 0.060061283, 0.029373815, 0.043518778, -0.016853223, -0.0582679, 0.10509046, 0.03083489, -0.026647737, 0.016509969, -0.016995778, -0.0077165077, -0.011574275, -0.03107135, 0.030267585, 0.034873165, -0.003697696, 0.04462827, 0.02724618, -0.038620487, 0.022074271, 0.04153875, -0.015256887, -0.0064806985, -0.030665575, 0.0006534218, 0.05432937, 0.029476475, -0.018069083, -0.018749265, -0.020389874, 0.021453144, -0.04586651, 0.0032710545, 0.019786322, 0.027333029, 0.051178053, 0.0027445662, -0.011280299, -0.03634543, -0.0069258814, 0.06364902, -0.019491723, 0.016747521, 0.005131526, -0.009734671, 0.019741803, -0.010631848, -0.027908087, -0.004612389, 0.034563728, -0.0443704, -0.030743422, -0.00445767, 0.036751203, 0.039025895, 0.01282541, -0.013673203, 0.013276675, -0.050454088, -0.062175784, -0.06517286, 0.015422798, 0.02746415, 0.031151993, 0.014659905, 0.009907879, 0.048620805, 0.014360683, 0.07144338, -0.0027378763, 0.030172225, -0.0016795323, 0.023593245, -0.0036723958, -0.0145261055, -0.008733617, -0.004813816, 0.018398957, -0.039220877, -0.030233528, -0.01749594, 0.040998846, 0.013788513, 0.049586102, -0.023991479, 0.036175143, 0.008430747, -0.05016411, 0.016286405, -0.0317002, -0.0060757766, 0.051298715, -0.0817074, -0.034341864, -0.042722013, -0.002747972, 0.02822315, -0.030234503, -0.00652546, -0.00813861, -0.0010283304, -0.018185852, 0.008558598, 0.03776126, 0.017785918, 0.0004738889, -0.03433049, -0.051041827, -0.0060094246, -0.0076490003, -0.019751534, 0.0030311374, -0.011647742, -0.0151858535, -0.012190567, -0.03222931, 0.011063044, -0.026538024, 0.040735472, -0.008171787, 0.06062859, -0.0057630534, -0.0018104113, 0.0411573, -0.02368666, -0.052429438, 0.011594831, -0.04249188, 0.0028793372, 0.03277521, 0.0018870109, -0.049080588, -0.0074722646, 0.01655984, 0.011351379, -0.008508593, -0.01249286, -0.01976613, -0.028240666, -0.003528867, 0.0167817, 0.013494644, -0.031726718, 0.005813897, 0.05434445, 0.0042397003, -0.04914116, -0.037757367, -0.0150404535, -0.07370481, -0.047691032, -0.05259705, 0.0022147251, 0.0064030956, -0.07101571, 0.041176762, 0.015957505, -0.02827959, 0.050954252, -0.053135887, -0.007827195, -0.011023026, -0.01979727, 0.008465291, -0.045824423, -0.014683258, 0.048056424, 0.031527724, 0.025568593, 0.0041307155, 0.030396275, -0.0052646557, 0.05072631, 0.034951985, 0.016233858, 0.0019695095, -0.03440189, -0.033384353, 0.022755122, -0.04365519, -0.014876414, 0.0034408034, -0.024345435, -0.022423606, 0.020983452, 0.024367817, -0.012544525, 0.029036643, 0.003660719, 0.023996102, -0.00056292553, 0.024428148, 0.012015748, -0.03732143, 0.05311059, 0.0038047344, 0.02906839, 0.01961275, -0.026190877, 0.0193152, 0.0016620171, -0.021219833, 0.019535268, -0.014709044, -0.011647742, 0.017912418, 0.00021553674, -0.052287366, 0.0011202559, -0.047897812, -0.065597855, 0.021444203, -0.014707342, 0.02012325, -0.03170774, 0.0070261694, -0.023826297, -0.039121624, 0.005356307, -0.03408886, -0.033213094, 0.0016483938, -0.028147006, -0.020603586, 0.049229953, 0.05224358, 0.010823059, 0.0043525775, 0.036259376, -0.050696384, -0.024179038, -0.030993503, 0.048873812, -0.013049946, 0.019382738, 0.048211083, -0.006945343, -0.0369755, 0.043301966, -0.016139712, -0.0045613023, 0.02967498, -0.03385338, 0.010314139, 0.03871293, -0.0069292877, -0.029056106, -0.05750112, 0.02707346, 0.014516376, -0.02829905, 0.034614567, -0.0006193641, -0.03193374, 0.017275538, -0.014827274, -0.010318397, -0.044247795, 0.02812633, -0.04833472, -0.014987346, -0.0442838, 0.018070664, 0.029447282, -0.011499135, -0.05488013, 0.074827746, 0.011095277, 0.033902034, 0.03644262, -0.05260848, 0.007368389, 0.052653246, 0.01776743, 0.021196555, -0.019512644, -0.040876083, -0.037013937, -0.019254291, 0.015998373, 0.0033568752, 0.031407062, -0.011533163, -0.001104565, -0.010272783, -0.008043948, -0.0113927955, -0.05718779, 0.010446964, -0.03317174, -0.044779096, 0.05133902, -0.016807001, -0.02225797, -0.011008064, 0.05631299, -0.040153086, -0.031270344, 0.008579141, 0.017634118, -0.0011562598, -0.0054403567, -0.030104596, 0.02563379, -0.027549779, 0.014106406, -0.00034057724, -0.00915277, -0.037809916, 0.010310734, -0.01700937, -0.025163794, -0.0025806024, -0.023432687, -0.008345116, 0.015547837, -0.0140548935, 0.019581245, 0.031850666, 0.0134391785, 0.009532636, -0.06267278, 0.013711641, -0.008258755, -0.015719343, 0.009516702, -0.012836844, 0.028316565, 0.024442526, -0.013076828, 0.021488478, 0.002444615, 0.023713177, 0.04761854, 0.01768265, 0.0047712442, 0.053614646, -0.04051945, -0.040935438, -0.01362309, -0.036174167, 0.010969872, -0.0063477517, 0.013806028, 0.00512362, -0.026730448, 0.020383548, 0.02723645, -0.046870243, -0.03562146, -0.011959127, 0.003660719, -0.0028423606, 0.04140349, 0.008890039, 0.0013895552, -0.02269733, 0.000712293, -0.009614496, -0.022201745, -0.08047354, -0.029499099, 0.02257118, 0.035821915, -0.031031452, 0.028873166, 0.027698692, -0.053140268, -0.0069032577, 0.0026973719, -0.027330594, -0.029217636, -0.0140230255, 0.054443706, 0.02827813, 0.0019039485, 0.013740833, -0.03787803, -0.036371462, 0.013614332, 0.01758449, -0.015538595, 0.004142636, 0.0015379495, -0.0071949377, 0.011964966, 0.005013297, 0.010576626, 0.017021079, 0.05358545, 0.030283643, -0.03435877, 0.032837484, -0.059023008], [-0.030491548, -0.082592286, -0.037961144, -0.051551778, -0.028966082, -0.0017833832, 0.023596037, -0.029567758, 0.060549706, 0.019664954, -0.015654393, 0.025856288, -0.072826855, -0.049766548, 0.0016330418, 0.028814714, 0.00048179037, -0.054434106, 0.022857662, 0.030223783, -0.033292964, 0.013553508, -0.029874284, 0.042100564, -0.004011023, 0.04921194, -0.010663791, -0.010447611, 0.046300586, -0.0079648215, -0.00860808, -0.046381913, 0.004467585, 0.016536342, 0.021330658, 0.0066605625, 0.003980872, -0.004013484, -0.039928917, -0.032771077, -0.07005794, -0.0026706653, -0.019041898, 0.013255081, 0.0046548457, 0.0669461, 0.023876209, 0.034057185, -0.022753673, -0.03560039, 0.008338727, 0.0018779364, -0.022393523, 0.006070374, -0.01751551, 0.033506684, 0.025158934, 0.0311406, 0.03425491, -0.010174002, 0.008066656, -0.022560157, -0.063555926, 0.02126195, 0.03237861, 0.05167525, 0.0051710936, 0.010205997, -0.0017427725, -0.05500327, -0.040433474, 0.016527317, 0.0039105215, -0.045113955, 0.08334789, -0.010036376, -0.057732802, 0.030517083, -0.013367197, -0.063861325, -0.011983434, 0.016733652, -0.01103339, -0.026621277, -0.06993898, 0.019225672, -0.039923172, 0.02393897, 0.05056389, -0.00810901, -0.057361975, 0.007230343, 0.04415817, 0.014069346, 0.004062453, 0.010210408, -0.01362714, 0.06296215, 0.03188554, 0.053850587, 0.047093216, -0.0545906, -0.017932693, -0.026696807, -0.014610001, 0.023371652, 0.017696207, -0.041487914, 0.00031114346, -0.018374078, 0.0053212303, -0.009604632, 0.015086663, -0.05185205, 0.00037985345, 0.005992332, 0.053118773, -0.03588836, -0.057158098, -0.024687193, -0.019701105, 0.0010587492, 0.016843345, 0.02051219, -0.0269015, -0.008135263, -0.012291705, -0.013141043, -0.058479384, 0.012799954, 0.042653523, 0.003190605, 0.027858108, -0.032590277, -0.051608387, 0.030819817, -0.013321125, 0.066768885, -0.025704512, 0.049334288, -0.016751291, 0.012599978, 0.023115681, 0.02313886, 0.031144498, -0.030766489, 0.021371065, -0.058597524, -0.00075689954, 0.0034841096, -0.010479197, -0.008724118, 0.020687452, 0.016418202, 0.019799145, -0.06357254, 0.023693668, 0.0007537589, -0.049019348, 0.018724397, -0.0064743273, 0.012815747, 0.02385447, 0.029467769, -0.010135442, -0.03741905, 0.013400705, 0.0051723244, -0.028994797, 0.023993941, 0.052526433, -0.0033247434, -0.003802688, 0.02417597, -0.037833977, -0.010837309, 0.02032134, -0.050234184, 0.014016839, 0.031918768, -0.0101362625, -0.010601029, 0.002994115, 0.005724568, -0.0075726616, 0.033244614, -0.03464568, -0.025311943, 0.0076225023, 0.033481587, 0.03190769, -0.043560904, 0.033780705, 0.0060294815, -0.035739657, 0.03314488, -0.019368835, 0.009082436, 0.008577058, 0.048742663, 0.0077044414, -0.008936811, 0.020321647, -0.038306132, -0.040023264, -0.044460904, 0.031029023, 0.00750549, 0.04351004, -0.023619624, 0.008197923, 0.052087303, 0.026135232, 0.048065, 0.053789873, 0.027849903, 0.008858513, -0.059732985, 0.02389385, 0.07206879, -0.03714852, -0.0056785224, 0.03292542, -0.039771397, -0.028912218, 0.020833896, 0.002437359, 0.008372979, 0.01849386, -0.0020779134, 0.080725834, 0.0057735112, -0.010137494, -0.0678584, -0.026890425, 0.0075864037, -0.030997438, 0.0059894603, -0.03308253, 0.021979814, -0.026124975, 0.011160002, 0.035579883, -0.031516965, -0.024316365, 0.014311984, -0.046829447, -0.008444561, 0.0132396985, -0.0091280425, 0.03214069, -0.00033432027, -0.04064678, -0.0135799665, -0.013321125, 0.02046604, 0.006345496, 0.016151285, 0.0058372733, 0.028228117, 0.0030794383, -0.03982308, -0.009419217, -0.06527901, 0.046603013, 0.0009909621, 0.043111317, -0.00039687712, 0.053379666, -0.023706589, -0.03946538, -0.08270386, 0.021212725, 0.023791477, -0.040262006, 0.05485642, 0.035899844, -0.0013162579, 0.03926684, 0.007170452, -0.06358895, -0.0371116, -0.018818643, 0.027322683, 0.0052832854, 0.0014349108, 0.021197135, -0.07459895, -0.0029239692, -0.038403757, -0.020056754, 0.014687018, 0.024501778, 0.016410818, 0.03300623, -0.026534773, 0.04215594, -0.017481875, -0.04776637, -0.048174936, 0.020689707, -0.010677739, -0.0016588337, 0.008765447, -0.008058452, -0.021344401, -0.07292366, 0.040098794, 0.028530031, -0.008957937, -0.011179013, -0.026611073, -0.0599988, 0.0077325404, 0.04779098, -0.037566084, 0.039052583, 0.076994576, -0.0066355397, -0.008014661, -0.007822684, -0.030761566, 0.011843346, -0.042855345, 0.018059857, 0.042840578, 0.013700978, -0.0017682055, -0.025212055, -0.013592683, 0.047328267, 0.031947073, -0.02212585, -0.01570772, 0.02629193, 0.008504451, -0.0009746564, 0.01333097, 0.029092837, 0.03435664, 0.019772531, -0.060349938, -0.0102883475, -0.013604988, 0.017679185, -0.05505332, -0.0020108442, -0.068986475, -0.0006669997, 0.022554107, 0.031695202, -0.0326674, 0.018785108, 0.038230546, -0.007272184, -0.015582401, -0.0010968986, -0.017769007, -0.017973714, -0.0083955405, 0.0023201418, -0.019564504, -0.034209784, 0.044253338, 0.037060738, -0.029557193, 0.04644139, 0.007718491, 0.019961791, -0.013461518, 0.045132007, -0.010726964, -0.029577704, 0.03551911, 0.0011986304, 0.03465937, -0.04294026, -0.013701798, 0.0439826, -0.0016154026, 0.016818566, -0.02385611, 0.053307675, 0.013958178, 0.050150502, 0.035448615, 0.046837654, 0.033525553, -0.02322439, 0.029833265, 0.036430243, -0.0040499927, 0.07157449, -0.009793635, 0.015460979, -0.025630675, 0.037373006, 0.045147594, 0.014467184, 0.025863826, -0.02472734, 0.018648097, -0.025805423, 0.00090768974, -0.008279657, -0.04724976, -0.05636763, 0.013840449, -0.00041515706, 0.019000057, 0.026506059, -0.0012560597, -0.028301543, 0.022610305, 0.01965598, -0.029986272, -0.027382266, 0.0011693005, 0.0223449, 0.009401988, 0.011532613, 0.035492916, -0.030908832, 0.03901825, 0.0051021785, 0.0005505004, -0.03141421, 0.0020186382, -0.04257784, 0.05863608, 0.01121183, 0.008154133, 0.006719273, 0.065155946, 0.03864578, -0.021957662, 0.02770715, -0.0064517655, -0.061807, -0.051188637, -0.015125223, -0.025126526, -0.0077431034, 0.028544592, -0.020509625, 0.008344265, -0.025704512, 0.016672121, 0.034603175, -0.016711911, 0.017555712, -0.019519381, -0.046076305, -0.042950515, -0.058328424, 0.04448141, 0.049958933, -0.043423075, -0.0164543, -0.023365092, -0.054997534, 0.00074276014, 0.046068106, -0.009761127, 0.0028735134, 0.010624411, 0.036172323, -0.041394185, -0.01309897, 0.027188238, -0.015284794, -0.022898069, -0.024306724, -0.058488615, 0.0059554134, -0.008152441, 0.05419352, 0.022287292, 0.012049784, 0.011251621, 0.041217588, 0.012157772, 0.021492282, 0.019187523, 0.049802642, 0.010198204, -0.022092212, -0.011901751, -0.007964129, 0.0010138314, 0.018351823, 0.029112117, -0.009429268, 0.065470986, -0.034029704, -0.011279104, 0.007855808, 0.0650821, -0.027488306, 0.011612195, 0.044446137, 0.019726947, -0.04302189, 0.024758568, 0.01867276, -0.07175046, 0.014486528, 0.03163931, -0.027615264, 0.009563405, -0.020763954, -0.044209857, 0.0029089453, -0.030916626, 0.059181664, 0.03663822, -0.009132379, -0.017630266, -0.009117303, -0.029051201, -0.014992316, -0.0050431085, -0.017848097, 0.03928817, 0.017608218, -0.038351253, 0.03090678, -0.035270788, 0.037547242, -0.013277072, -0.014149747, -0.062226232, -0.02691791, 0.00046189525, 0.014344186, -0.0037796649, 0.05612314, 0.012292904, 0.012553572, -0.017420342, -0.020581821, 0.01805432, -0.0025586782, 0.009688725, -0.014619846, -0.007840503, 0.001592226, 0.004998498, 0.017206624, -0.028698215, -0.00082369946, 0.011208908, -0.09097121, -0.06017601, 0.053478118, -0.0035748682, -0.013972537, 0.030880937, 0.052270465, 0.053156514, -0.052967817, 0.0009328151, 0.0124918865, 0.011415293, 0.015674492, 0.04083968, -0.006385927, -0.057455502, -0.055283036, 0.03833823, -0.040051978, -0.038193733, -0.055417176, -0.041027457, 0.0058551175, -0.022277625, 0.015328231, -0.034521542, 0.038818892, -0.03491042, 0.021566322, 0.0044245133, -0.010343008, -0.010999034, 0.031026972, 0.05164997, -0.00021741074, -0.0038469392, 0.011088562, -0.009499413, 0.013442367, -0.01614049, 0.059652273, 0.0034236037, -0.029998168, -0.02310153, -0.040805124, 0.019116556, -0.008212517, -0.03270678, -0.013433964, -0.06277837, -0.0010353673, -0.017822757, 0.02514683, 0.009343739, -0.016388256, 0.048526075, 0.013596375, 0.019571478, -0.0033989912, 0.020144539, -0.030276699, -0.012157567, 0.0009581455, 0.0057347207, -0.026132256, -0.0036278877, -0.033296864, 0.017394088, 0.027481126, -0.0064616106, -0.0055907373, 0.020041987, -0.03300705, 0.015352478, 0.014388488, 0.05399006, 0.012726117, -0.010864794, 0.048274204, -0.01590298, 0.07928436, -0.004969271, -0.06718074, 0.08267843, -0.0027867544, -0.014872534, -0.011948565, -0.015992405, 0.03303556, 0.04081989, 0.0018287114, 0.0034186812, 0.005835427, 0.0015247465, -0.003471598, -0.0075351275, -0.04745379, 0.0065011964, 0.03336229, 0.011827144, 0.005566945, -0.028227912, 0.036603764, -0.016532034, 0.015651932, -0.009172272, -0.024840612, -0.023799168, 0.030202862, -0.06688867, 0.035051532, 0.019383192, 0.023561938, -0.003184452, 0.03653649, 0.001655193, -0.029793063, -0.010356134, 0.059286676, 0.010796033, 0.029889412, -0.026131334, 0.01513958, -0.012762625, -0.024257705, -0.039015792, 0.005614119, 0.0346725, -0.04337221, -0.015331097, 0.025399316, -0.013168937, 0.03673667, -0.0018643995, 0.034822788, 0.028051317, -0.04466806, -0.048491616, -0.03007816, 0.013347378, 0.00023545991, 0.0007822684, -0.0019326736, 0.007994971, 0.057969805, 0.024404148, 0.04706245, 0.033918533, 0.042874213, 0.060564887, 0.003510978, 0.035213564, -0.01183863, -0.006376082, 0.015221213, -0.006308859, -0.039393183, -0.07963632, 0.016798876, 0.020115158, -0.0017638984, 0.020603204, 0.02195315, 0.0030098567, 0.016487528, -0.011968461, -0.0062033846, -0.002428437, 0.007606094, 0.017147347, -0.042732283, -0.013628782, 0.008780112, -0.028271599, -0.029612161, -0.039809957, -0.014815516, -0.00013454854, -0.008571316, -0.02799299, 0.02409321, 0.013337327, 0.031929843, -0.026908886, -0.03390951, -0.027962405, 0.0053351773, 0.022352694, 0.016350107, -0.017960997, -0.004993076, -0.00014272706, 0.010286604, -0.06689687, -0.036885936, -0.016163, 0.009189936, -0.013575249, 0.011836578, 0.058249664, 0.003750335, 0.019570863, -0.033826903, -0.05504101, 0.02403414, -0.041285373, 0.03913721, 0.01317509, -0.009806557, -0.07396436, -0.012339904, 0.010922633, -0.014581286, -0.010506886, -0.02258118, 0.01759427, 0.028105874, -0.004287914, -0.0040241494, -0.013721488, -0.025558887, -0.05776726, 0.0021183188, -0.016323853, -0.094827175, -0.039121624, 0.004625721, -0.03618863, -0.07116961, -0.015860317, 0.0047901124, -0.024986645, -0.039973218, 0.058154497, -0.030883398, -0.005244111, -0.013546637, -0.034983233, -0.009086537, -0.007497286, -0.040092178, 0.011717207, -0.031037433, 0.038569484, 0.0077397195, 0.03982147, -0.018245682, -0.02122216, -0.012950296, 0.035966914, 0.0096809305, 0.034943234, 0.018962318, -0.006542012, 0.0018320314, 0.02419248, -0.054680847, -0.06509195, -0.028801588, 0.03159593, -0.015825039, -0.008427743, 0.029230667, 0.010155542, 0.002713532, 0.048899777, 0.012445226, 0.0041340855, 0.006642923, 0.024771698, 0.010567186, -0.0052990788, 0.005493518, 0.00528667, 0.010904174, -0.0059761284, 0.0009520949, -0.021611037, 0.034962106, 0.02338765, 0.023823703, 0.034634348, -0.001957517, -0.007818787, 0.0059545925, -0.024591204, 0.040062644, -0.08774861, -0.0096476525, 0.06411483, 0.007494517, 0.012305447, 0.0047764727, -0.009043876, 0.016114032, -0.056347936, 0.00010542369, -0.09526692, -0.046805657, -0.02331935, -0.022824023, 0.005642834, 0.031363755, 0.023125427, -0.010985292, 0.034034215, 0.016463531, 0.024476347, -0.0010706453, -0.04362654, 0.05727829, -0.008603677, -0.002307015, 0.028985772, 0.00971385, -0.000668538, 0.031193927, -0.016655918, 0.01252191, 0.02890127, -0.01757212, 0.0144100245, 0.041955348, -0.060495973, 0.0052111917, -0.032032598, 0.004380211, 0.01694409, -0.023450004, 0.019657621, 0.023144808, -0.018617742, -0.015534611, -0.03414743, -0.04008233, 0.027710434, 0.0011551484, 0.02252666, -0.012798518, 0.0082657095, 0.01890448, 0.05942953, -0.019406984, -0.06309341, 0.06719878, 0.008096498, 0.035424, 0.052812964, -0.053477295, 0.06393352, 0.0035876872, -0.020202994, -0.020827128, -0.007447343, -0.03699182, -0.05087411, 0.022994673, 0.0099218255, 0.032091465, 0.05272005, -0.0062304586, 0.01920311, -0.07784452, -0.0119296955, -0.013882085, -0.02055167, -0.052211393, -0.023455592, 0.015122557, 0.002799655, 0.017400652, -0.012567161, -0.062448565, 0.072265685, 0.0013766611, 0.0005012753, 0.00089938304, -0.006353726, -0.0138224, -0.0066847648, -0.024313904, 0.04381031, 0.014600976, 0.040871575, -0.020256937, 0.009813114, -0.054639827, 0.022701884, -0.020284832, 0.040638372, -0.015070255, -0.0030519543, -0.00019977173, -0.0010973089, -0.008317396, 0.054433905, -0.019684285, 0.025391933, 0.009943464, -0.025302993, -0.041515604, 0.02869196, -0.06883552, 0.04416268, -0.0038625272, -0.0031327656, 0.034651168, -0.029814806, 0.065923855, 0.04051121, 0.02462556, 0.0018453249, 0.010215842, 0.010960783, 0.040212065, -0.0352632, -0.0059490292, -0.021694308, -0.030852633, -0.0067969565, 0.0041410592, 0.0006220818, -0.004262891, -0.004783856, 0.041890536, -0.012540908, -0.028819637, -0.047643308, 0.051323697, 0.0013806093, -0.033423822, -0.013362761, 0.010358595, -0.02589085, -0.02839138, -0.0056095044, -0.02509576, -0.025874339, -0.07778874, -0.020843536, 0.014263785, 0.010551394, -0.0040456853, 0.018866738, 0.0125493165, -0.023957841, -0.017457262, -0.010344033, 0.02126195, 0.04894449, 0.030009245, 0.027396213, 0.011988356, 0.025089044, 0.0078382725, 0.00649812, -0.036160428, 0.051020145, 0.03824214, 0.020217557, 0.0043123215, 0.02029837, 0.015028414, -0.016524035, 0.0058305045, 0.00583194, -0.008028506, 0.045825258, 0.045105755, -0.06212204, -0.006088731, 0.009329792], [-0.03599455, -0.0904756, -0.025018511, -0.03126097, -0.004214819, 0.012257938, 0.002850826, -0.03445994, 0.056630395, 0.028734058, -0.019749962, 0.024787864, -0.08475095, -0.030614533, 0.0024585703, 0.030698996, 0.0036808334, -0.04851488, 0.042228308, 0.036288094, -0.018880095, 0.0048837108, -0.026177276, 0.031905435, -0.0065925843, 0.05578021, 0.003490232, -0.00203061, 0.035735417, 0.00017090714, -0.017125528, -0.037971847, 0.010465689, 0.0048326515, 0.031038634, 0.0062223845, 0.00582825, -0.0021163605, -0.028297791, -0.051673163, -0.057585124, -0.0066123656, -0.024401741, 0.02748242, -0.016569536, 0.049082, 0.021913303, 0.0155768795, -0.040150516, -0.027031021, 0.024617849, -0.0071762702, -0.028810116, 0.014707113, -0.02511865, 0.020954916, 0.025126465, 0.0313848, 0.026955852, -0.011688545, 0.0063756867, -0.003481244, -0.04610616, 0.0134154195, 0.008149343, 0.039209735, 0.0016157054, 0.0051612863, 0.0005665255, -0.03961396, -0.019626232, 0.01873332, 0.01080775, -0.04903868, 0.05140507, 0.005898571, -0.07024284, 0.013168553, -0.0137754325, -0.052185226, -0.0054334225, 0.00470232, -0.015135173, -0.02879469, -0.047271647, 0.009960681, -0.024471765, 0.0062009227, 0.03802021, 0.00083277666, -0.047966946, -0.010410351, 0.04081634, 0.01406725, 0.011984073, 0.009061046, -0.02322082, 0.060646713, 0.024963321, 0.051878225, 0.044881716, -0.05418864, -0.018667154, -0.043609604, -0.00032203336, 0.006644015, 0.022400701, -0.027641064, -0.02066552, -0.0048407866, -0.006986621, -0.0144927865, 0.003924534, -0.061249636, 0.032315694, 0.001510471, 0.049460605, -0.031794462, -0.048848584, -0.012538135, -0.024081687, 0.008204334, 0.008592435, 0.020710621, -0.031834323, -0.0030227222, -0.010286869, 0.0013224534, -0.066862665, 0.00507341, 0.046719566, 0.008524092, 0.023384137, -0.037040956, -0.036360495, 0.035626076, -0.009732212, 0.06568214, -0.015800603, 0.039802372, -0.025143921, -0.0017997916, 0.031174727, 0.016073184, 0.023392418, -0.012806958, 0.01838755, -0.051321197, -0.017147288, -0.0020073678, -0.010606132, -0.006844989, 0.039959036, 0.024577197, 0.02032153, -0.053564746, 0.015901782, 0.027940944, -0.046979975, 0.018619383, -0.009034193, 0.011179384, 0.0400437, 0.024457129, -0.012133517, -0.04643215, 0.009020074, 0.007968545, -0.011829978, 0.021882443, 0.071458176, -0.010276187, -0.001387038, 0.012313473, -0.048395008, -0.007329622, 0.0035235751, -0.038913023, 0.026704635, 0.015106687, 0.012545849, -0.0027771422, 0.004060627, -0.0013048482, -0.008153497, 0.03146313, -0.010910463, -0.013247676, 0.0033864933, 0.007995645, 0.021400977, -0.021095954, 0.028551778, -0.0008736119, -0.051863983, 0.033231944, -0.026864268, -0.009148279, 0.019846393, 0.05262634, 0.033069097, 0.0040089986, 0.026106857, -0.025073797, -0.024430227, -0.04995394, 0.0387073, 0.0033113256, 0.052343078, -0.031087691, 0.013070836, 0.050674364, 0.027851336, 0.053974215, 0.033996277, 0.027313493, 0.015911574, -0.054416515, 0.03931972, 0.06056047, -0.036945216, 0.0064670253, 0.032393627, -0.032725554, -0.04246716, 0.017776914, 0.0025192979, 0.021077758, 0.029767117, -0.012876587, 0.06510415, 0.017082999, -0.010336717, -0.063624926, 0.0036112044, -0.010133856, -0.01998852, 0.039565004, -0.028941065, 0.024127578, -0.025192978, 0.028914956, 0.045005545, -0.035429653, -0.026197849, 0.0016764329, -0.033604812, -0.007390943, -0.020588275, -0.0035915226, 0.04569234, -0.0034668036, -0.019828986, -0.03586676, -0.01254308, 0.011919981, -0.002115866, 0.014357783, 0.013495086, 0.0301208, -0.007270674, -0.041482963, -0.0074375262, -0.05682425, 0.042927757, 0.007775681, 0.059700396, -0.022381615, 0.02912503, -0.0224462, -0.03816748, -0.0726474, 0.020992301, 0.0097707845, -0.022608798, 0.033152126, 0.014214173, 0.014201513, 0.04451023, 0.0070599644, -0.05999948, -0.019486578, -0.009808764, 0.022221092, 0.026432846, 0.0038837856, -0.0026283895, -0.07319256, 0.00047078586, -0.049674634, -0.003152287, -0.0019567285, 0.011768856, 0.03388709, 0.044910993, -0.030276673, 0.039145645, -0.023180071, -0.05866269, -0.032180388, 0.022339778, -0.0061583933, 0.0026094988, 0.005480106, 0.009091508, -0.03546086, -0.06320874, 0.03155373, 0.013205148, -0.0058939224, -0.021742098, -0.011033796, -0.05517689, 0.030775154, 0.024630409, -0.025378918, 0.033691652, 0.07388411, -0.016167562, -0.0030866144, -0.016713789, -0.031068703, -0.004310262, -0.041634087, 0.014883583, 0.052926272, 0.022281228, -0.013550325, -0.044651866, -0.035306565, 0.038818076, 0.04677475, -0.00043478457, -0.008114924, 0.02936952, 0.018387154, -0.012146275, 0.015223394, 0.033185657, 0.0339852, 0.007464923, -0.05548627, -0.015426248, -0.022883357, 0.035798825, -0.055945184, -0.009234375, -0.07241715, 0.005383155, 0.025713613, 0.0142254485, -0.036254443, 0.00864347, 0.023324076, -0.0026862489, -0.0107979085, 0.02260682, -0.025822802, -0.029367544, -0.01463155, -0.013273985, -0.010613798, -0.035966657, 0.03752994, 0.033249352, -0.033341136, 0.05420802, 0.013054812, 0.03619834, -0.01600039, 0.05939419, 0.01104527, -0.028583031, 0.04367627, 0.010398829, 0.03643111, -0.04522393, 0.008850082, 0.04560689, 0.01232015, 0.014880543, -0.024896165, 0.038935672, 0.01192829, 0.034372907, 0.051684376, 0.02817673, 0.0315745, -0.020992301, 0.039178878, 0.010278759, -0.009538359, 0.07100846, 0.014677442, 0.020743063, -0.023513924, 0.039335545, 0.047808103, 0.016721206, 0.017875323, -0.019325957, 0.011037753, -0.018424738, -0.0014202701, -0.011757779, -0.039903652, -0.04168868, 0.014921933, 0.0030980874, 0.0338997, 0.031659756, -0.00746611, -0.0076125874, 0.023587953, 0.027645811, -0.018710697, -0.02288415, 0.021300094, 0.020148052, -0.000632668, 0.024285428, 0.03791448, -0.05054104, 0.029775823, 0.04267654, -0.0139621645, -0.013307019, -0.010290775, -0.03582245, 0.056057934, -0.008338646, 0.017627172, -0.011354643, 0.08099099, 0.043546703, -0.038382895, 0.014948044, 0.0038319596, -0.05317902, -0.03669756, -0.02518823, -0.049099404, -0.0071128225, -0.004979698, -0.03075023, 0.0068724845, -0.042816836, 0.022638377, 0.030906893, -0.02170837, 0.011551562, -0.021246685, -0.032019373, -0.03054337, -0.035221905, 0.053638335, 0.060615066, -0.04370396, -0.01178839, -0.044121735, -0.06669176, 0.0033690862, 0.02505174, -0.011789427, 0.023617625, 0.008733078, 0.037232436, -0.053161614, -0.0018245919, 0.03271843, -0.0004937317, -0.023324076, -0.017301973, -0.05020951, -0.0036650086, -0.0069652568, 0.04189203, 0.009032759, 0.008255418, 0.01953247, 0.025724838, 0.0050168363, 0.031899896, 0.016232025, 0.053181395, 0.0070990752, -0.03464074, -0.0014246217, 0.0004482356, -0.018434629, 0.02534984, 0.033854645, 0.005468435, 0.05787976, -0.025061632, -0.03733055, 0.0034265497, 0.04317769, -0.028606672, -0.0037821117, 0.046281714, 0.0030777627, -0.05635346, 0.0402874, 0.019410027, -0.06847521, 0.024381913, 0.045589477, -0.0025337378, 0.0036580851, -0.021365765, -0.050550535, 0.021698875, -0.04080645, 0.064368695, 0.032687176, -0.012843552, -0.042200983, -0.011498253, -0.02958988, 0.0066582575, -0.0068236254, -0.02310802, 0.04221169, -0.003514278, -0.04851389, 0.0511764, -0.03782903, 0.03614844, -0.0072402116, -0.0049451306, -0.06959362, -0.028166447, -0.0056842444, 0.004297998, 0.0005776028, 0.04997768, 0.021264883, -0.004585217, -0.019690322, -0.02897588, 0.009710058, 0.0039170175, 0.014952792, -0.015124886, -0.0010653014, -0.01602749, 0.009386244, 0.013650219, -0.014796918, 0.0022738166, -0.021600565, -0.07211648, -0.06470259, 0.052192897, -0.008850546, -0.011496671, 0.03259381, 0.040730495, 0.017865334, -0.05415778, -0.018344825, 0.023594284, 0.03550952, 0.017548049, 0.04113007, -0.011876859, -0.05457951, -0.077762745, 0.02933985, -0.03686372, -0.04369684, -0.05352242, -0.042267866, 0.00040867378, -0.023707828, 0.02071181, -0.023951923, 0.037949298, -0.0357188, 0.018260557, -0.0130554065, 0.012518849, -0.00846569, 0.034248684, 0.0389648, 0.011487966, 0.009357574, 0.004939988, -0.016461682, 0.022958526, -0.013931392, 0.051713653, 0.008109188, -0.022297842, -0.031077038, -0.038869504, 0.0074194265, -0.004294264, -0.048776187, 0.007979277, -0.054842994, 0.00280894, -0.024776392, 0.010335084, -0.023903262, -0.02319649, 0.020540902, 0.013617976, 0.0055331187, 0.0037962056, -0.0051834416, -0.030508505, -0.021816771, -0.015360428, 0.0105511425, -0.024663603, 0.008654547, -0.039633047, 0.003011892, 0.03300476, 0.0017345888, -0.00662641, 0.012709636, -0.03686214, 0.034662005, 0.009159356, 0.072451174, 0.020646136, -0.011184033, 0.034520075, -0.009630933, 0.07830079, -0.012210366, -0.056692112, 0.06808434, 0.0018163827, 0.00026328405, -0.027840454, -0.00788863, 0.019152602, 0.037694518, 0.0020014334, 0.009182302, 0.0015822756, -0.0030371621, 0.003113022, -0.0063286084, -0.034570716, 0.01833518, 0.04975455, -0.0196832, -0.0023679738, -0.052898925, 0.033672266, -0.0050694537, -0.0005584153, -0.024235187, -0.03034551, -0.025962852, 0.038504746, -0.058485053, 0.04743939, 0.019657882, 0.02001285, -0.0007722471, 0.01914595, -0.022209225, -0.036935326, -0.030609995, 0.046687715, 0.028813677, 0.04351881, -0.011537004, -0.0018554502, -0.009238085, -0.01602294, -0.022552818, 0.0013134531, 0.015058224, -0.043499824, -0.01387943, 0.026007952, -0.014374398, 0.030242255, 0.02853338, 0.016144592, 0.01422525, -0.033915177, -0.049308293, -0.024545845, 0.018652169, -0.008471772, 0.0061430135, 0.00087708596, -0.0006978708, 0.056850653, 0.029204153, 0.05516107, 0.03717705, 0.031520497, 0.06184623, 0.021032259, 0.028049342, -0.00043092732, -0.019656992, 0.02250114, 0.00017051151, -0.03464351, -0.07568248, 0.010267286, 0.011606652, -0.0009765839, 0.040298477, 0.024129013, 0.011124888, 0.037661288, -0.047350574, 0.013575446, 0.0073102363, -0.0026003998, 0.008625272, -0.060075443, -0.028609537, 0.020601133, -0.017911622, -0.06139364, -0.045652777, -0.041202467, 0.0014469742, -0.015733402, -0.036496982, 0.014434531, 0.013202973, 0.046761695, -0.012855619, -0.043834515, -0.03145997, 0.023461752, 0.021374566, 0.03264069, -0.036561467, 0.0042968113, -0.0021974621, 0.024302047, -0.06015298, -0.030331269, -0.013598194, 0.0017040643, -0.010889792, 0.01965149, 0.063412875, 0.006196966, 0.012547135, -0.03679884, -0.061400156, 0.0434658, -0.039786547, 0.029918244, 0.021640722, 0.0017009611, -0.07924642, 0.00011789428, 0.026007952, -0.0144548565, 0.0090632215, -0.033706684, 0.025799857, 0.020537341, 0.007823147, 0.017097043, 0.0050678714, -0.022125354, -0.023267206, -0.009128696, -0.016560685, -0.08583178, -0.032109573, 0.0009583855, -0.04267298, -0.07701977, -0.022137221, -0.010122428, -0.014163928, -0.055521876, 0.06340655, -0.02964559, -0.003978635, 0.0013929723, -0.036450297, -6.646389e-05, -0.027043879, -0.055880304, 0.025986588, -0.03431119, 0.05381359, 0.003186508, 0.03869939, -0.03564205, -0.028821986, -0.008017602, 0.011145139, 0.026027733, 0.01128185, 0.009970374, 0.007142692, 0.019290352, 0.021392668, -0.061862055, -0.06724563, -0.03784881, 0.0059801675, -0.016226683, -0.0061807455, 0.036124706, -0.0013118705, 0.0028919703, 0.025575936, 0.0063053165, 0.01469564, 0.0013799169, 0.02777241, 0.01891214, -0.007871309, -0.020622991, 0.012029963, -0.0028990915, -0.021160835, -0.011546715, -0.027571842, 0.047452047, 0.025202472, 0.023143675, 0.041055296, 0.013366454, -0.009780181, -0.009882696, -0.0053550904, 0.033420257, -0.089545846, -0.011082062, 0.06753364, 0.008474937, 0.0005087652, 0.005323441, -0.028247943, 0.02208881, -0.051484983, 0.003959349, -0.0843585, -0.0404275, 0.0010052169, -0.00829038, -0.0054270923, 0.0135523025, 0.017670345, -0.022938745, 0.04366361, 0.03847468, 0.03356268, 0.0035605654, -0.022928458, 0.074907176, -0.0060586976, 0.0068523083, 0.04110791, 0.010971289, 0.0032171686, 0.03593125, 0.00014729367, 0.016445857, 0.042562205, -0.011994556, 0.019284021, 0.033353, -0.0764493, 0.010624529, -0.03660657, 0.0055271843, 0.013195159, -0.012355359, 0.019867163, 0.019424072, -0.014266197, -0.02227648, -0.038354408, -0.014297846, 0.009371012, 0.017615303, 0.024453962, -0.00807734, -0.014090122, 0.006014784, 0.037137486, -0.020777877, -0.065318175, 0.062393367, -0.004811511, 0.047871802, 0.05447032, -0.04501672, 0.06445731, 0.019053375, -0.019984663, -0.027916811, -0.017159946, -0.04832716, -0.06367913, 0.024068037, 0.012915753, 0.018505445, 0.05575959, -0.0006070764, 0.035359975, -0.07826755, 0.008918821, -0.029333718, -0.023446718, -0.03869306, -0.014184501, -0.0020982362, -0.003529509, 0.023412695, -0.0077921, -0.03896841, 0.07859829, 0.01721929, -0.0018421969, 0.008098259, 0.0084480345, -0.023170577, 0.006377665, -0.020966982, 0.05021188, 0.014525524, 0.048920587, -0.021697294, -0.00865613, -0.060820784, 0.0018696924, -0.019042498, 0.026075998, -0.015909398, 0.003317458, -0.00040817927, 0.0030989284, 0.0051897215, 0.0627704, -0.024671257, 0.047012515, 0.0064716246, -0.022520203, -0.025695017, 0.046166684, -0.067744106, 0.060694188, -0.00872833, 0.006405061, 0.023590723, -0.031241192, 0.0633211, 0.030398326, 0.012677788, 0.022997098, -0.006455305, 0.0034685843, 0.04297642, -0.035599127, -0.0051845787, 0.002831045, -0.014935582, -0.00581203, 0.009345297, -0.014254525, 0.0171823, 0.0030628773, 0.05360708, -0.010898706, -0.031529993, -0.057549816, 0.070310876, -0.0054151253, -0.034208328, -0.03373161, 0.0024124808, -0.025177155, -0.026615622, -0.001831713, -0.030147702, -0.024446247, -0.06200863, -0.0156058585, 0.009364262, 0.027521292, 0.002495363, 0.040088292, 0.021882443, -0.0135111585, -0.01522656, 0.007354941, 0.015188976, 0.049961854, 0.019080674, 0.009955736, 0.0012707262, 0.011235784, 0.020163482, 0.014572603, -0.019195996, 0.043042883, 0.048195813, 0.020158537, -0.0013937635, 0.012788413, 0.02587977, -0.012163979, -0.007075832, -0.0050683413, -0.0073135993, 0.0519352, 0.036758587, -0.054524124, -0.006371434, 0.027215378], [-0.0333179, -0.08414965, -0.009812048, -0.03124155, -0.0016068517, 0.04158398, 0.023552096, -0.052121416, 0.048232332, 0.029706985, -0.009374975, 0.0102235945, -0.058372237, -0.017024258, -0.012682413, 0.052199874, -0.033879463, -0.035729747, 0.014078783, 0.0602402, -0.038117535, 0.0022479186, -0.0014695998, 0.021755265, -0.0051645217, 0.038769484, -0.001305567, 0.0045073447, 0.030994663, 0.004127496, -0.0009324134, -0.057210613, 0.007371903, -0.0044874684, 0.029190408, 0.015832929, 0.009477078, -0.00422217, -0.053670518, -0.021197995, -0.08069911, 0.01815209, -0.03536915, 0.024848456, 0.033179812, 0.042059343, 0.03679578, 0.010450813, -0.029639719, -0.056147754, 0.037849724, -0.012518379, 0.0026981717, 0.017440828, -0.021476997, 0.04995844, 0.016037552, 0.014126486, 0.04422399, -0.027182784, 0.00038534106, -0.03610981, -0.047888365, 0.024092732, 0.039974622, 0.006142023, 0.028587105, -0.01266651, 0.01726717, -0.057229865, -0.0027155376, 0.037720844, -0.00069965, -0.016697345, 0.06213913, -0.00037707662, -0.063437164, 0.0153149655, -0.008439737, -0.023516081, 0.00095239445, 0.030187052, 0.026228089, -0.041510653, -0.053884767, 0.0024044192, -0.031233914, 0.0057833195, 0.061187573, -0.023701062, -0.03748881, 0.0048276167, 0.010395577, 0.024701998, 0.009215768, 0.034327205, 0.012910049, 0.044831164, 0.033549726, 0.035192564, 0.024610566, -0.044367097, -0.03030966, -0.0017491251, -0.012043019, -0.00020169337, 0.02068654, -0.03843221, 0.013591288, 0.01913367, 0.00270947, 0.009478333, -0.011862353, -0.06330996, 0.01156724, 0.0039468296, 0.038135946, -0.044174198, -0.053970132, -0.029258091, -0.018287564, 0.000112144866, -0.0060637733, 0.019115677, -0.018948715, 0.008351026, -0.0034996101, 0.024383241, -0.05834211, 0.007347162, 0.043092083, 0.0071295677, 0.033909593, -0.01618652, -0.045870595, 0.025576979, -0.018876428, 0.0542212, -0.0232483, 0.051444363, -0.016128564, -0.013129161, 0.023166671, 0.022036465, 0.032947157, -0.026447566, -0.0053708185, -0.0150117, -0.025103606, 0.0033158055, -0.0036447078, -0.00043142293, 0.008789563, 0.022833195, -0.0040089693, -0.08166991, 0.0093029495, -0.0069098813, -0.020512467, 0.015641488, -0.021140143, -0.02179783, 0.011296502, 0.043326307, -0.025599577, -0.028977731, 0.0066918675, -0.0056832964, -0.0149516715, 0.050029997, 0.054335855, 0.010148374, 0.007051736, 0.045263004, -0.030939009, -0.025115846, 0.006266356, -0.049614474, 0.056156117, 0.043220963, -0.0501957, 0.0005297589, 0.0026701356, 0.0058340435, -0.007860601, 0.02721605, -0.053425726, -0.027842052, -0.007803274, 0.043969993, 0.040532626, -0.024886116, 0.015775183, 0.004259831, -0.009885485, 0.058281854, -0.03818616, -0.0033741794, 0.030006282, 0.020447189, 0.009932352, 0.019320719, 0.008176322, -0.032520127, -0.019105425, -0.07679412, 0.024681913, -0.0063221664, 0.018852053, -0.043091245, 0.0024061976, 0.0345799, 0.038938537, 0.075917885, 0.021803597, 0.04283599, -0.0015867661, -0.046602048, 0.030021764, 0.07918599, -0.031890985, 0.0006594787, 0.044062886, -0.0127987405, -0.0266955, 0.010943329, -0.012233832, 8.8711604e-05, -0.0010221711, -0.031139448, 0.06565329, 0.0007967307, -0.010061445, -0.053472172, -0.024062604, 0.0004736865, -0.043989345, -0.0037317458, -0.036835402, 0.02007351, -0.03394725, 0.015573281, 0.040981416, -0.034284525, -0.025808487, -0.02111169, -0.018831966, 0.004571577, -0.0058163116, 0.004155427, 0.068994194, 0.00034020064, -0.043293774, 0.007111208, -0.015163408, 0.01391747, -0.0118748015, 0.007945965, -0.0044012675, 0.018076558, -0.0044172206, -0.032925606, -0.018483398, -0.024081016, 0.04951614, 0.029161012, 0.009848452, 0.010405202, 0.031777166, -0.024244422, -0.05133222, -0.09063313, 0.041669346, 0.027395671, -0.01673239, 0.07882277, 0.044764213, 0.017934809, 0.040057477, 0.031845372, -0.04685312, -0.011400278, -0.006645169, 0.052997235, 0.020842625, -0.011060497, 0.020666456, -0.045298155, -0.0094844, -0.031586353, -0.01668615, 0.015067164, 0.0096574295, 0.03167088, 0.025762772, -0.03228098, 0.044190094, 0.023098493, -0.0373706, -0.025174115, 0.036485575, -0.026229344, 0.003294046, -0.02036589, -0.03408545, -0.03144617, -0.05669341, 0.05090205, 0.048339456, 0.014730729, 0.013555196, -0.013210497, -0.03768151, 0.012154327, 0.022891153, -0.03435535, 0.030397952, 0.07275356, -0.039668314, -0.022551317, -0.025763188, -0.039785482, 0.0026835261, -0.042005364, 0.049313612, 0.011172641, 0.053093478, 0.004799196, -0.03455903, 0.0066701085, 0.020699933, 0.034205858, -0.017425971, 0.0040970533, 0.039772928, 0.028201923, -0.0039217225, 0.035675038, 0.02748135, 0.029775295, -0.0021495302, -0.067139626, -0.014999375, -0.014785129, 0.037486512, -0.050106995, -0.010876168, -0.05304703, 0.006780998, -0.015837532, -0.006198096, -0.03971267, 0.015521184, 0.022523176, -0.022450732, 0.0091165295, 0.01781246, -0.04122579, -0.020723052, -0.046352673, -0.010656482, -0.044037543, -0.06269065, 0.038887486, 0.008068153, -0.006968255, 0.07303141, 0.016849974, 0.035859365, -0.014540334, 0.057148684, -0.010045753, -0.034837928, 0.022749715, 0.015643371, 0.026074516, -0.043919463, -0.015123236, 0.034891907, 0.015383095, 0.010410223, -0.03236802, 0.041433338, 0.036365062, 0.04740882, 0.037392776, 0.051356487, 0.038946904, 0.011261353, 0.021670738, 0.024468502, 0.017251479, 0.042728864, 0.016722556, 0.005353269, -0.017436014, 0.047886692, 0.024866866, 0.0037779845, 0.03225755, 0.006906115, 0.033892855, -0.03492287, -0.026657, -0.01852106, -0.061994348, -0.06550081, 0.0056316177, -0.011863923, 0.021719696, 0.0032028237, -0.0024134682, -0.016854579, 0.022273308, 0.014858775, -0.043552376, -0.023309393, -0.0008670304, -0.0006109384, -0.0069733807, 0.011659509, 0.04845495, -0.05229047, 0.037749402, 0.0028257994, -0.011795584, -0.024875026, -0.013609804, -0.057173792, 0.026336469, 0.021952564, 0.016860148, 0.003242995, 0.07397376, 0.027625715, -0.035559963, -0.00036154164, -0.017435178, -0.048542824, -0.04910313, -0.02309201, -0.021912605, -0.013953273, 0.019612797, -0.020594483, 0.00659395, -0.022610683, 0.003843995, 0.033816695, -0.0024918756, -0.0076474007, -0.015558006, -0.017052164, -0.053866353, -0.034551915, 0.017118411, 0.045337908, -0.05909448, -0.004592081, -0.047231086, -0.030595252, -0.008458568, 0.040736202, -0.0027110784, 0.0062365932, 0.017176576, 0.034888767, -0.01726581, -0.0052613933, 0.0067745643, -0.020400165, -0.038527615, -0.017515521, -0.036621153, -0.021203957, 0.0074831587, 0.04332474, 0.020068489, 0.0023905581, -0.00025135826, 0.030787949, 0.010754295, 0.030532693, 0.049820352, 0.007771262, 0.028864957, -0.022758292, 0.0067830905, 0.01684893, -0.0040041576, -0.015117378, 0.013438971, 0.0068470086, 0.04680625, -0.05394544, -0.026699316, 0.014947069, 0.040087603, -0.058347963, 0.00088941754, 0.035092134, 0.02897187, -0.05100415, 0.017089536, 0.03121644, -0.041219097, 0.037966475, 0.05811698, -0.046300765, -0.010680333, -0.030772466, -0.03571228, -0.033342592, -0.010842693, 0.04271966, 0.030327652, -0.0065850583, -0.039405946, -0.042745605, -0.028504044, -0.023737887, -0.011313658, -0.0175808, 0.045541693, 0.018418433, -0.034198325, 0.033473566, -0.021186618, -0.0020880704, -0.0017495959, -0.019959275, -0.035318516, -0.044862963, -0.0133546535, 0.0052331476, 0.00041745714, 0.025736617, -0.013030981, 0.03044984, -0.031503916, 0.01142957, 0.0105967475, -0.013505086, -0.008273195, -0.03408869, -0.014889637, -0.0017083262, 0.0043941536, 0.011322656, -0.027629482, -0.0021021473, 0.009002136, -0.08359646, -0.060114667, 0.074886404, 0.005001483, -0.019223846, 0.050579008, 0.067929655, 0.03157631, -0.034621798, 0.04004199, 0.012459796, 0.013578734, 0.027027749, 0.0320705, -0.0070786807, -0.109090164, -0.051369667, 0.034980826, -0.04489393, -0.04330748, -0.045141652, -0.0352319, -0.030239778, 0.011480202, 0.0040726787, -0.018273754, 0.015910761, -0.02345742, 0.014730311, 0.0050611645, -0.001416038, -0.028174305, -0.0012051387, 0.061025005, -0.0072467336, -0.01757787, 0.005216619, -0.010149946, 0.0330797, -0.012495365, 0.042163122, 0.009585038, -0.046540115, -0.0014840363, -0.020817937, 0.020194862, -0.011421619, -0.00066366326, -0.045620937, -0.06620062, -0.0032053343, -0.02308301, 0.017513115, -0.011920622, -0.008639548, 0.03183439, -0.00051469466, 0.0043849475, -0.02742172, 0.006906115, -0.006087939, -0.032422837, 0.0048047323, 0.0059453514, -0.0097335875, 0.031613134, -0.0388697, 0.024916036, 0.005418103, -0.012720595, -0.0030576214, 0.01578983, -0.023308765, 0.018758843, -0.0055317124, 0.07316699, 0.03349407, -0.0027155376, 0.045032438, 0.0003858118, 0.0729427, -0.0025362836, -0.07085547, 0.104736604, 0.02649799, -0.01870392, -0.010092201, 0.014297424, -0.025880983, 0.04299186, -0.0010207327, 0.019869726, -0.018488001, -0.009274547, 0.013059227, 0.029034639, -0.028313909, 0.019304922, 0.03501765, -0.005090874, 0.038417567, -0.01903115, 0.04622042, -0.018824121, -0.016508728, 0.005750353, -0.0080853095, -0.029022085, 0.022087099, -0.049814075, 0.020405186, 0.03579984, 0.019400641, -0.007819384, 0.048826534, -0.0075388127, -0.034741472, -0.032006647, 0.06336812, -0.022512244, 0.020065142, -0.03432051, -0.013730919, -0.022476675, -0.030231828, -0.032801535, 0.019544799, 0.03394626, -0.0550263, 0.0058775623, -0.0002456307, 0.008405634, 0.038920127, 0.030410925, -0.0049544596, 0.041762665, -0.030617567, -0.0508351, -0.0096636545, -0.004603379, -0.004969942, -0.02783452, -0.02287504, -0.01166908, 0.03819704, 0.011236246, 0.032079287, 0.009338152, 0.046976976, 0.032876857, 0.0070260013, 0.013115744, -0.014685746, -0.016617944, 0.02030575, -0.0120857, -0.038443927, -0.08442667, -0.0009968547, 0.027036116, 0.019312348, 0.03275362, -0.008979278, -0.005595108, 0.025455, -0.022463076, 0.025502913, -0.006810708, -0.0008785084, 0.012805959, -0.06741412, 0.0036595631, 0.010396833, -0.038233448, -0.02511208, -0.021812044, -0.0018064529, 0.0063889096, -0.012287394, -0.03811084, 0.04123583, 0.013260092, 0.009014062, 0.008174858, -0.04326281, -0.040886424, 0.00946693, 0.022310968, -0.008988326, -0.021979555, -0.011413668, -0.014963388, -0.021740202, -0.04003488, -0.03797568, -0.034049354, 0.021526113, 0.013949064, -0.0064671594, 0.046953548, -0.0071848035, -0.00079380145, -0.004516603, -0.049641676, 0.04197231, -0.019364864, 0.02615193, -0.013984632, 0.008178886, -0.09919464, -0.028133295, 0.0014497234, -0.009541519, -0.017074473, -0.016925085, 0.008065015, 0.025136454, -0.015093945, -0.0126434965, -0.002178874, -0.001178358, -0.0344972, 0.014187161, -0.0029818814, -0.07425328, -0.027677393, 0.0020308995, -0.057862565, -0.0454965, -0.011483131, 0.037714567, -0.03393512, -0.041922092, 0.049376797, -0.009033728, -0.025444854, 0.01215438, -0.039526876, -0.0058907433, -0.024645925, -0.029694537, 0.027615672, -0.05282337, 0.05596813, -0.009685884, 0.03519926, -0.015775602, 0.012123989, -0.0054048435, 0.0070216074, 0.005316001, 0.040065844, 0.013540654, 0.023898572, 0.0025523417, 0.0048212353, -0.019013574, -0.07903367, -0.0034957395, 0.040000565, 0.008135942, 0.0017127459, 0.039564643, 0.034260884, -0.01927469, 0.032139543, -0.009129972, 0.012844169, -0.0006841673, 0.020564353, 0.0114730885, -0.0035685499, -0.01300713, 0.024448311, 0.012723839, 0.026809316, -0.016855832, 0.013246484, 0.0146407625, 0.05008021, 0.03520512, 0.023657545, 0.01632126, -0.026398396, 0.006969719, -0.024146713, 0.033531312, -0.07816999, 0.013396289, 0.030271789, 0.021593744, 0.040303525, -0.010296614, -0.0133370785, 0.009405941, -0.02198625, 0.025234684, -0.08099202, -0.03173783, -0.02383664, -0.03636841, 0.016682385, 0.031961285, 0.032820575, 0.0067337127, 0.06284799, 0.012551855, 0.013659077, 0.00091306, -0.060886286, 0.052394666, -0.011867269, -0.01352036, 0.04570489, -0.020688215, -0.00781227, 0.03491973, -0.062898204, 0.021207305, 0.013549024, -0.05155881, -0.009553392, 0.05848605, -0.029165195, -0.0018729866, -0.042135503, 0.004903199, 0.018857911, -0.029545566, 0.032686044, 0.022434805, 0.0040134676, -0.03767063, 0.001356618, -0.040863413, 0.0034836044, -0.015985247, 0.0094138915, 0.0070852116, 0.0058491076, -0.018762505, 0.028058602, -0.018214086, -0.05596698, 0.06552346, -0.0048515205, 0.06186379, 0.020441748, -0.05172138, 0.041048367, 0.038924206, -0.045344185, -0.022326032, -0.007215141, -0.050283577, -0.06922518, 0.011447981, -0.021450948, 0.05429485, 0.06594829, 0.033608306, 0.023091797, -0.049645443, -0.009782546, 0.00965063, -0.036742926, -0.025195768, -0.019997248, 0.00491638, -0.00087022106, -0.0068038036, -0.0018516586, -0.050332118, 0.074129425, 0.007645099, -0.004663636, 0.013114672, -0.037630457, -0.0027801883, 0.009483367, -0.045269493, 0.034792107, 0.04329628, 0.014814838, -0.01174801, -0.0045573493, -0.036912397, 0.027540768, -0.015933357, 0.014097823, -0.012196382, 0.0377266, -0.0030588766, 0.010319001, -0.0060106297, 0.063748494, -0.04536176, 0.026862225, 0.009555746, -0.041976333, -0.022708498, 0.020786447, -0.03954613, 0.035713114, 0.037350934, -0.011673945, 0.015405481, -0.016214976, 0.04492657, 0.044304755, 0.01963372, 0.011791059, 0.027723422, 0.0012005358, 0.04214983, -0.031073332, 0.0067015965, -0.014141968, -0.03739738, 0.022105718, -0.0116136875, -0.020447189, 0.0067437557, -0.0010971784, 0.04357581, 0.007564129, -0.06829789, -0.062442925, 0.032142233, -0.013772895, -0.014552468, 0.00792044, 0.006596461, -0.008648545, -0.030584162, 0.014566488, 0.0058750515, -0.009842804, -0.06841673, -0.038823042, 0.0025835163, 0.01754272, -0.027962536, 0.019397922, 0.019458964, -0.05377597, -0.023710687, 0.021990225, 0.0056792167, 0.03765724, 0.016347572, 0.01925544, 0.019850163, 0.01620535, -0.00019667196, -0.0023332825, -0.03959603, 0.055615272, 0.028521826, -0.0035980507, 0.010735778, -0.008412538, -0.010895835, -0.0003512896, 0.0117766755, -0.0029220432, -0.028608236, 0.041825008, 0.01809633, -0.034571584, 0.021674817, -0.017781237], [-0.043699816, -0.07938834, -0.032063853, -0.045515664, -0.0123142125, 0.003156824, 0.024904676, 0.0143840965, 0.024180382, 0.041971676, 0.02681037, 0.054321516, -0.049235053, -0.008638934, -0.0029501969, 0.03614337, -0.012179706, -0.011217476, 0.03086244, 0.049422823, -0.04584771, 0.026368618, -0.00090865564, 0.02350853, -0.070330285, 0.033098035, 0.03383925, 0.015210343, -0.0022059435, -0.010820463, 0.004176887, -0.039715543, -0.0041958787, 0.031387176, 0.01352254, 0.03779932, 0.027362354, -0.023753613, -0.052091785, -0.07448797, -0.03791793, 0.037507508, -0.0041937307, 0.019361323, -0.018435331, 0.047525875, 0.013846626, 0.042492226, -0.00821143, -0.019148933, 0.029914387, -0.025139544, -0.031707596, 0.0072860625, -0.036867615, 0.054013878, 0.012822396, 0.004358341, 0.048476443, -0.014341084, 0.0032750685, 0.007622984, -0.021789398, 0.0016158186, 0.027439052, 0.024839452, 0.0053505064, 0.013856003, 0.027494377, -0.03781881, -0.031102177, 0.009042968, -0.0019183195, -0.024461774, 0.02584136, 0.00012196439, -0.061258815, 0.020333266, -0.014912137, -0.03580975, -0.0020032965, 0.011879583, -0.0007146023, -0.02158183, -0.037100643, 0.01355146, -0.028854428, -0.02663434, 0.019535258, -0.021511834, -0.051849537, 0.017549146, 0.010293837, -0.022685377, 0.012955468, -0.00967207, 0.0077858125, 0.038630858, 0.0796373, 0.03648202, 0.008209963, -0.065636955, 0.014302944, -0.007716867, 0.0037123696, -0.010601367, 0.02134293, -0.057054184, 0.0006604309, 0.0018428776, -0.015420218, -0.025511095, 0.011414777, -0.054549515, -0.005391214, -0.0038971498, 0.057346735, -0.012722855, -0.062822975, 0.0072811903, -0.037494197, 0.010997752, 0.0026987665, 0.013991537, -0.0028429017, -0.016783306, 0.023648098, -0.009656457, -0.035925847, -0.0012657472, 0.04373953, -0.00090697914, 0.033292506, -0.0065371445, -0.037606943, 0.0015809267, -0.0014695452, 0.025620904, -0.019018061, 0.005500133, -0.018873885, -0.019661833, -0.006621283, -0.018455548, 0.012675913, -0.006156058, -0.008331928, -0.056162298, -0.034448445, -0.010648833, -0.01768033, 0.012126236, 0.016161958, 0.014967461, 0.015055268, -0.042457856, 0.016750824, 0.011903656, -0.03467477, 0.04501869, 0.009246661, -0.006124676, 0.038226407, 0.0132580735, 0.0040172804, -0.023831673, 0.017694894, 0.039648905, 0.0060437336, 0.03804283, 0.04984194, -0.013775584, 0.03183983, 0.044834696, -0.034269057, -0.03267053, -0.006666129, -0.037025202, 0.03181636, 0.048618942, -0.019821517, -0.0024862294, -0.020371825, -0.017536886, 0.011806027, 0.009500544, -0.0073744445, 0.03180659, 0.0096859, 0.03212211, 0.055307288, -0.011072145, 0.028818382, 0.015371704, -0.041053798, 0.04440887, -0.056643866, -0.01761652, 0.018149015, 0.03374432, 0.01911907, -0.035147958, 0.036432564, 0.000103103914, -0.028546792, -0.054296784, 0.0323992, -0.047629137, 0.034851637, -0.014154365, 0.02430654, 0.06643916, 0.032041635, 0.039591067, 0.016615657, 0.055775028, 0.031388856, -0.081819244, 0.046008654, 0.027495217, -0.0040059644, 0.011519977, 0.0453959, -0.04317204, -0.011354103, -0.0047449805, 0.016563686, 0.033831496, 0.032263983, -0.008419943, 0.031780105, 0.0037829918, -0.023255171, -0.04219842, 0.0036696193, -0.04049134, -0.03574269, 0.023162337, -0.02569886, 0.021716367, -0.042891856, 0.012468448, -0.0007275951, -0.024669498, -0.017846826, -0.018174134, -0.04300523, -0.019416228, -0.02694449, 0.0039347135, 0.02806522, -0.012476517, -0.013929821, -0.011298366, -0.010030628, -0.007440247, -0.0070429198, -0.01423468, 0.0003822389, 0.019792598, -0.02640131, -0.0072260755, 0.008489308, -0.0444074, 0.049312174, -0.0103083225, 0.062258, -0.01899433, 0.002858619, -0.0054091834, 0.01770705, -0.0853801, 0.060159877, 0.012928644, -0.023257842, 0.021160612, 0.01171864, 0.00753413, 0.04740936, 0.018306393, -0.08552092, -0.02034432, -0.011310835, 0.0072960686, 0.007849729, -0.0053023077, 0.018782515, -0.055531934, 0.01347256, -0.027017418, 0.0048660017, 0.0059427256, 0.023511885, 0.041005183, 0.061669555, -0.038894486, 0.021525877, -0.0041109542, -0.0126692075, -0.033855803, 0.041044578, -0.0048999507, 0.006725225, 0.006636791, 0.004197084, -0.011607153, -0.04357691, 0.0483901, 0.030432, -0.032186024, -0.039219722, 0.003656417, -0.042759623, -0.024112277, 0.012281939, -0.039783023, 0.044430245, 0.076622136, -0.038493805, 0.0027561437, -0.0006026969, -0.009765586, 0.029375395, -0.045944322, 0.010633116, 0.055317346, 0.042635567, 0.01223416, -0.068490334, -0.01954271, 0.0118372515, 0.007868798, -0.0053465245, -0.02095608, 0.0403195, -0.012209851, -0.0056701917, 0.004439022, 0.04040919, 0.009890012, 0.0021274614, -0.07155622, -0.024791462, 0.00694736, 0.033032022, -0.039899956, -0.025944885, -0.07008719, 0.028542181, 0.0065877535, 0.043717735, -0.038778808, 0.023048334, 0.004202113, -0.014722903, -0.012013545, 0.003915224, -0.018650912, -0.0044795717, -0.0138293365, 0.02036009, -0.017259061, -0.037388165, 0.039883193, 0.017546108, -0.010414438, 0.025194656, 0.006931643, 0.03290356, -0.015049818, 0.06447767, 0.030196873, -0.0056884233, -0.0034937977, 0.0084109325, 0.028083663, -0.0036727625, 0.00036049698, 0.02772699, -0.024770087, 0.021720557, -0.031346526, 0.03932534, 0.027630173, 0.041137625, 0.0259847, 0.038067978, 0.018439673, -0.021903086, 0.053166416, -0.0013814247, -0.0039942684, 0.04543865, 0.0063480157, 0.027816262, -0.024648122, 0.0553207, 0.06188705, 0.027192192, 0.0033180614, 0.0014065721, -0.0049502454, -0.030398471, -0.044670817, 0.02370468, -0.021465732, -0.047631808, -0.016726306, 0.009134336, 0.029496102, 0.011027928, 0.011842281, 0.0019262829, 0.035079848, 0.06016512, -0.023920946, -0.01748659, 0.020865548, 0.041964132, -0.0023441473, 0.03538057, 0.011976819, -0.06372996, 0.007922341, 0.02107857, -0.022904996, -0.05191198, -0.020701254, -0.054239362, 0.02831543, 0.028578226, 0.033087976, -0.0041937307, 0.08025341, 0.050370034, 0.015312607, 0.022426778, 0.024585463, -0.029013272, -0.023342978, -0.039443955, -0.027509047, -0.004941025, -0.010278957, -0.0709422, 0.02426735, -0.016759312, 0.032382175, 0.032277394, -0.049597174, 0.040240705, -0.008580362, -0.02454701, -0.049337737, -0.055149697, 0.008085904, 0.06289506, -0.04028429, -0.031966824, -0.048173837, -0.048394926, 0.009783137, 0.028699325, -0.0042029517, 0.0013488381, 0.009091586, 0.036715053, -0.041462444, -0.022360453, 0.013193948, -0.015495554, -0.056212593, 0.012716569, -0.0030245911, -0.0072969072, 0.030500319, 0.045952495, 0.012178417, -0.0033085458, 0.020735623, 0.030106762, 0.0042301943, 0.031597156, 0.06817725, -0.015847826, 0.023793114, -0.021883177, 0.035106044, 0.012942474, -0.008652556, 0.0191526, 0.024280552, 0.009500229, 0.03901687, -0.041352633, -0.03950305, -0.004467417, 0.04284495, -0.011214018, 0.0037817343, 0.056347545, 0.030630665, -0.09060739, 0.027668733, 0.021247787, -0.021202106, 0.020895725, 0.051800914, -0.05980027, -0.01434758, -0.001033973, -0.029445179, -0.02801744, -0.024394555, 0.057990506, 0.0346097, -0.0064427373, -0.0495167, -0.030116402, -0.033979956, 0.017697828, 0.0086984495, -0.0026522013, 0.052608144, 0.033298373, -0.047344815, 0.020868065, -0.032350738, -7.879487e-05, 0.0193236, 0.00017084445, -0.07468747, -0.029931989, -0.007324307, 0.015482352, -0.025212679, 0.028662888, -0.027815005, 0.009726974, -0.0051715416, -0.027767645, -0.0018712732, -0.0012309601, 0.028516928, -0.036560398, 0.019912677, -0.028273525, 0.03627466, 0.022072619, -0.0079431925, 0.014731286, -0.0068056965, -0.046104636, -0.050943393, 0.06530082, 0.011706066, -0.0015949673, 0.041715175, 0.035741434, -0.0012871225, -0.022962833, 0.02562656, -0.0064016636, -0.01266795, 0.01889505, 0.06409082, 0.00028479312, -0.07219956, -0.023411505, 0.012016426, -0.001536919, -0.046351496, -0.017272001, -0.0139425, 0.0005255523, -0.019859659, 0.007447948, -0.043575235, 0.024175353, -0.021260362, -0.009459784, -0.04591226, 0.00056162296, -0.024784755, 0.015567434, 0.066914715, 0.02483044, -0.023045246, 0.007256043, -0.025399083, 0.009467119, -0.0038302476, 0.045634903, 0.003066189, -0.015671795, -0.023025703, -0.032657955, -0.00239528, -0.004062978, -0.045238312, -0.025967935, -0.035418916, -0.017532695, 0.0014784515, 0.02144352, -0.044910558, 0.0015679339, 0.038513504, 0.006707622, 0.014090869, -0.030188072, 0.037714656, -0.028138332, -0.009666411, 0.016530156, -0.0070852507, -0.034968995, -0.0038415638, -0.0032247347, 0.039794758, 0.016521223, 0.011758247, -0.017542964, -0.0071015963, -0.008433984, 0.0045172926, -0.018110244, 0.08584281, 0.028687615, 0.011859046, 0.06293614, -0.03096638, 0.04340759, -0.0057325354, -0.09405089, 0.09006756, -0.009997307, -0.0019583458, 0.00083048944, 0.030214477, -0.0013937888, 0.03895484, 0.030996112, 0.012689955, 0.006173242, -0.019241977, 0.03560941, 0.030384641, -0.06097046, -0.011807494, 0.052522644, -0.037538208, -0.046471365, -0.04594914, 0.0044384976, 0.016867548, 0.0031953831, -0.01298313, -0.024998927, -0.031288687, 0.044992704, -0.07596495, 0.032004964, 0.013849455, 0.025091344, 0.014735477, 0.021808572, -0.024161102, -0.037853595, -0.009287945, 0.074809015, 0.0037354212, 0.007515793, -0.008482602, -0.0079792375, -0.031374186, 0.042931464, -0.008733708, -0.00080890465, 0.04116078, -0.021554796, -0.035772868, -0.005249079, -0.018201614, 0.013172592, 0.0070496253, 0.019231813, 0.030067785, -0.04044146, -0.04926355, -0.037001733, 0.0027460847, -0.01117462, 0.017250206, -0.019029798, 0.002547002, 0.04899909, 0.013188918, 0.021868508, -0.01601296, 0.031841505, 0.03485436, -0.0048668403, 0.0060299025, -0.009510707, -0.026833843, 0.050751433, 0.028038397, -0.02202065, -0.08449492, -0.0047419416, 0.036238093, 0.019632494, 0.040765446, 0.013554733, 0.010302428, 0.028855266, -0.026808696, 0.007323312, 0.0037565872, -0.0010146934, 0.027482431, -0.07510576, -0.006090675, -0.0001711064, -0.05914644, -0.014142839, -0.03268562, -0.019072128, -0.021835398, -0.021383166, -0.039588865, 0.01326918, 0.038334537, 0.02482625, -0.017061602, -0.038917955, -0.043231558, 0.002673996, 0.014992818, 0.019528762, -0.016469592, 0.0015976916, -0.038420774, 0.008586702, -0.04813863, -0.06436786, -0.03313114, 0.009599561, -0.01546632, 0.011225334, 0.040700063, 0.037406184, 0.010184445, -0.016145822, -0.0687963, 0.016080648, -0.030123109, -0.0121501265, 0.013562566, 0.025849743, -0.06475361, -0.029829094, 0.00909431, -0.010742715, 0.0029981865, -0.036468502, 0.036321916, -0.024081051, 0.011832641, 0.02543649, -0.0008390814, -0.0021393604, -0.042879496, -0.008260991, 0.024651894, -0.083864555, 0.004144589, -0.022257034, -0.028182995, -0.044651538, -0.0026853122, 0.0059869424, -0.011774278, -0.017933795, 0.045928184, -0.025348894, -0.029845754, 0.018386027, -0.07468077, 0.0548035, -0.011873086, -0.05858733, 0.0037280866, -0.026757115, 0.051821034, 0.018168923, 0.06374672, -0.019330516, -0.013101742, -0.017508386, -0.020113226, 0.04121558, 0.03672071, 0.0025548604, 0.008214102, -0.011122439, 0.00835477, -0.005226551, -0.051354133, -0.0005234829, 0.022847157, -0.036321916, -0.01602721, 0.015605574, -0.010144053, -0.010998883, 0.05510611, 0.012070702, -0.0020905784, -0.018343486, 0.03576239, -0.008752097, -0.041591953, 0.0053641275, 0.0017268334, 0.019875584, -0.024512118, -0.032395795, -0.0052914103, 0.047498632, 0.028698932, 0.0212875, 0.041843425, 0.011926734, -0.028143177, -0.008668273, -0.015981106, 0.042735316, -0.09795375, -0.0067503722, 0.0556845, 0.038724743, -0.0015244762, -0.0020872257, -0.035919562, 0.02574664, -0.030291175, 0.071339525, -0.059074353, -0.017019691, -0.016240962, -0.02547589, -0.0016312214, 0.029258301, 0.03270804, -0.001010083, 0.027645629, -0.0028391297, 0.0323696, 0.008719681, -0.038874578, 0.06565352, -0.018296963, 0.017034989, 0.05129294, 0.004587967, 0.0015968534, -0.0021609908, -0.0004485649, 0.033093948, 0.032517236, -0.015396432, 0.017417017, 0.016615657, -0.03804618, -0.006138455, -0.011762229, 0.0044753803, 0.042849317, -0.013763116, 0.011457108, 0.01484361, -0.024894146, -0.028259903, -0.02378096, -0.020976197, 0.013365369, 0.033227123, -0.0064217816, -0.037837878, -0.018064141, 0.0054452275, 0.055793468, 0.0005769209, -0.030925725, 0.05077742, 0.00832166, 0.026319161, 0.03963486, -0.038522515, 0.039796017, 0.017621757, -0.03745606, -0.024266304, 0.0035130773, -0.030342728, -0.034436498, 0.0005490493, 0.01673804, 0.034977164, 0.07752744, 0.033007503, 0.01136574, -0.036290903, -0.027654901, -0.002110906, -0.05669877, -0.03930355, 0.013918111, -0.018469205, 0.011914789, -0.041068885, 0.019456044, -0.05635425, 0.06027304, 0.012245057, 0.011041968, 0.02230869, 0.00022548741, -0.017045256, 0.01263188, -0.050593846, 0.03267053, 0.031088809, 0.027425641, 0.018358154, -0.034652974, -0.013312979, -0.014416945, 0.015221658, 0.022455698, -0.011889642, -0.019156164, -0.008259001, -0.013113476, 0.027325053, 0.076489694, -0.052506715, 0.014068237, 0.009529234, -0.025360066, -0.015837768, 0.010391806, -0.03389604, 0.03597572, -0.024509603, -0.032502536, -0.0041270903, -0.014034706, 0.076870255, 0.0053496677, 0.00050713716, 0.015525941, 0.020170646, -0.003966855, 0.057372715, -0.02702622, 0.011857369, -0.0058568055, 0.01640379, 0.03377198, 0.004047876, -0.017571883, 0.03255401, 0.00419986, 0.060075216, -0.0039175297, -0.046254262, -0.037935533, 0.057054184, -0.022175778, -0.05266179, 0.002212124, 0.004146789, -0.007086508, -0.020426938, -0.020190764, -0.04093854, -0.010633534, -0.056028176, -0.017333612, 0.045703955, 0.01857987, -0.001464961, 0.04529028, 0.025915671, -0.02575188, 0.016957661, 0.041551925, 0.0076745357, 0.039599396, 0.032749325, 0.042304456, 0.03074278, 0.019331565, 0.021191627, 0.018732639, -0.018079543, 0.04371019, 0.056770023, 0.013796225, -0.02337462, -0.026010398, 0.020852137, 0.02163401, 0.0057838783, -0.011849406, -0.018091751, 0.05243379, 0.0710671, -0.03759395, 0.00634131, 0.008394168], [0.0016779033, -0.09467241, -0.027158193, -0.00866455, 0.032354396, 0.015297343, 0.039108045, -0.014100943, 0.03616609, 0.012566758, -0.01048039, 0.03627835, -0.045776613, -0.018942168, -0.021291483, 0.029393228, 0.02856233, -0.041712213, 0.015433872, 0.04478071, -0.018381387, -0.0027912646, -0.0265739, 0.014711279, -0.04141387, 0.011381229, 0.004099164, -0.0029945415, 0.033601616, 0.0123017905, -0.027890397, -0.05540256, -0.003002632, -0.00076658645, -0.006322821, -0.0152735775, 0.027474234, -0.031856857, -0.061298598, -0.041657094, -0.072884366, 0.012393315, -0.022078296, 0.04249043, -0.0019303245, 0.049340654, 0.023816768, 0.046165086, -0.008131075, -0.022589017, 0.035944104, 0.0053595314, -0.036650516, 0.033347774, -0.014673102, 0.024409343, 0.024559082, 0.017539458, -0.034090087, -0.031536233, -5.663435e-05, -0.015358022, -0.037463624, -0.018176088, 0.013448637, 0.03556334, 0.02356596, -0.006759715, -0.02554816, -0.05287626, 0.0025845112, 0.027862363, 0.0368988, -0.008112871, 0.026844682, 0.02317154, -0.057376668, 0.048450686, -0.013930028, -0.025400508, 0.00968656, 0.011321308, -0.030626038, -0.06890783, -0.04629454, -0.0076496834, -0.01645784, 0.0089952545, 0.056749646, 0.0042192596, -0.014923152, -0.0034809902, 0.04692055, 0.027807971, 0.0035674586, -0.0012376123, -0.010605289, 0.054947462, 0.00656023, 0.007618332, 0.007962183, -0.039454803, -0.027607225, -0.011885123, -0.013423353, -0.031684898, -0.016532173, -0.035582554, -0.036586296, 0.022044923, 0.01313917, 0.0069301235, 0.021757578, -0.031629276, 0.016675783, -0.011175425, 0.022797603, -0.0028204825, -0.04517348, 0.03076105, -0.028127553, -5.1577714e-05, 0.0074249315, 0.0041439156, -0.043107845, -0.0366222, 0.006272255, -0.008904741, -0.037232727, 0.023088612, 0.037035834, 0.00059263804, 0.054958582, 0.017226957, -0.021111466, 0.022154147, 0.0056741806, 0.029743148, -0.03430601, 0.041125644, -0.0492911, -0.032209776, 0.009009666, 0.037358448, 0.033750534, -0.015291275, 0.009420423, -0.029826077, -0.039255697, -0.007913505, -0.020442314, -0.017243138, 0.013590096, 0.030346153, -0.0036948859, -0.03966958, 0.0026537238, 0.028234249, -0.013190495, 0.0004282973, -0.040387373, -0.0091494825, 0.004361256, 0.0042962465, -0.023065351, -0.065896094, 0.003007183, -0.003437503, -0.0389791, 0.04154939, 0.044831146, 0.007946711, -0.02705229, 0.010879864, -0.052078824, -0.03218146, 0.009452122, 0.0048103803, 0.01714605, 0.014208017, -0.015236664, -0.02384913, -0.01949802, 0.003359631, -0.001567558, 0.027948845, -0.010996672, -0.012882293, 0.000478358, 0.046873014, 0.025549173, -0.028654959, 0.014337593, 0.025187118, -0.052051395, -0.0012277518, -0.019076675, -0.017940953, 0.01348694, 0.04062453, 0.005227553, -0.0113819875, 0.011445195, 0.0013996775, -0.041356795, -0.031901132, 0.04541923, 0.0064573274, 0.04101541, -0.02146796, 0.009408635, 0.03480181, 0.03130767, 0.081036046, 0.029392218, 0.007358152, 0.015328694, -0.03508656, 0.053913377, 0.06337182, 0.008692867, 0.02489775, 0.056011375, -0.05027513, -0.024831383, 0.012675982, -0.025008112, 0.009324963, 0.036126144, -0.0011628057, 0.061089505, -0.029985867, -0.017611135, -0.03752203, -0.016451268, -0.015299367, -0.047572352, 0.036509942, -0.06475127, 0.04036209, -0.029846303, 0.038788464, 0.05264972, -0.014183618, -0.039330535, -0.021193447, -0.0427913, 0.009394224, -0.019296367, 0.009105995, 0.057747066, -0.017212799, 0.0015023274, 0.018836295, -0.0139052505, 0.038213525, 0.010200251, 0.0013754057, -0.0031523088, 0.0384077, -0.00892699, -0.033954315, -0.016486665, -0.048251458, 0.06964205, 0.014308265, 0.062014617, -0.040748417, 0.018131716, -0.055301424, -0.022860399, -0.07034088, 0.026128665, 0.010033382, -0.02304108, 0.01877631, 0.0028323499, 0.041353192, 0.016555436, -0.004035514, -0.042066682, -0.0014896858, 0.0027974274, -0.007494508, 0.014417994, -0.0066606044, 0.0030109438, -0.039930254, -0.01575598, -0.033585437, -0.019855399, 0.013958345, 0.0029136352, 0.033478994, 0.0656999, -0.028568238, 0.0156594, -0.0030592664, -0.068082586, -0.017431244, 0.019921135, -0.018910564, -0.0117516285, -0.018631691, 0.0043892413, -0.03169299, -0.041448254, 0.0020590634, 0.00041148398, -0.0010017202, -0.022892416, -0.01046522, -0.06961576, -0.0013592244, -0.006270232, -0.027367035, 0.042696234, 0.075853124, -0.052067198, -0.026381623, -0.037032798, -0.017694822, 0.017838651, -0.03501874, 0.037220906, 0.036511965, -0.0014269835, 0.00478358, -0.07164549, -0.030449057, 0.06984773, 0.03871919, 0.0135669615, -0.011055835, 0.022127852, 0.054175816, -0.017970536, 0.01191243, 0.026970088, 0.021477567, 0.03616508, -0.057099566, -0.013047392, -0.02091527, 0.03918895, -0.042894963, 0.012040363, -0.05444786, 0.013541172, 0.00526295, 0.032500282, -0.01837987, 0.027581941, 0.00910195, -0.0041783005, -0.0012459557, 0.019523682, 0.013052702, -0.026526114, 0.003428401, -0.023515014, -0.00917704, 0.00062297785, 0.042080335, 0.03305019, -0.024976129, 0.044997003, 0.004776754, 0.051401746, -0.027427714, 0.060560454, -0.006745872, 0.016368339, 0.028104797, 0.0032386824, 0.04152309, -0.058883544, 0.008639646, 0.020911222, 0.0287791, 0.030480405, -0.0028700219, 0.049342178, 0.016005084, 0.03850226, 0.05855082, 0.034620784, 0.025359044, -0.038163465, 0.030553224, 0.026029048, 0.026366327, 0.02777106, 0.024793712, -0.012092445, -0.01256777, 0.035968885, 0.043099247, 0.037038866, 0.01843347, -0.008158381, 0.003773264, 0.025567377, -0.039777543, 0.0046921815, -0.02956111, -0.030417198, 0.014219015, 0.03174191, 0.008227657, 0.043441582, -0.003421069, -0.012752336, 0.055154275, -0.0055643255, -0.02726211, -0.00918943, 0.023637764, 0.026152935, 0.007436166, 0.024821268, 0.06163638, -0.027274245, 0.026016628, 0.028757356, -0.035636157, 0.0004186897, 0.0016646455, -0.02500729, 0.022373604, 0.02392397, 0.023621581, 0.0020985052, 0.09070396, 0.03814071, -0.03079948, 0.0026107426, -0.000727998, -0.076546386, 0.012250719, -0.032477777, -0.044725243, -0.0091231875, 0.012533637, -0.021653034, -0.0019903562, -0.04179292, 0.00041451794, 0.03459689, -0.029794728, 0.0050649825, -0.004573224, -0.042600155, -0.023418305, -0.04260117, 0.057856034, 0.0547816, -0.051373933, -0.011617121, -0.04769826, -0.06540863, -0.0073194844, 0.050666004, -0.01599339, -0.011403226, -0.026570614, 0.017682055, -0.06336777, 0.035095915, 0.029505739, 0.00920915, -0.033975303, -0.007001359, -0.04647405, -0.014878653, -0.020119734, -0.005201258, 0.04811771, 0.024480958, 0.04344664, 0.021744052, 0.024987886, 0.015625756, -0.016641272, 0.018336384, 0.023211993, -0.009944386, -0.0013294951, -0.025283193, 0.0041569364, -0.0017334156, -0.028204918, 0.016751632, 0.089739405, -0.024340382, -0.01478814, 0.009174765, 0.005922335, -0.041581243, -0.009881178, 0.035484962, 0.05065791, -0.032270458, 0.007890379, -0.0005668492, -0.045751456, 0.019990915, 0.018178869, -0.004358001, -0.00145854, -0.0020080544, -0.031657845, 0.0076228827, -0.035827298, 0.064101994, 0.021687165, 0.02022251, -0.054448873, 0.013448384, -0.013190889, -0.0047867405, -0.058201406, 0.01030644, 0.029366177, 0.0057251896, -0.03177288, 0.023734346, -0.06454901, 0.04874397, -0.008214131, -0.041767836, -0.049251027, -0.027192581, 0.033228185, 0.038764194, 0.0030784816, 0.019005883, 0.04657114, -0.0028752047, -0.008163943, -0.020267008, 0.020625018, -0.018616522, 0.011093759, -0.033008724, -0.014439106, -0.014654645, 0.020127444, 0.021872997, -0.017392814, -0.05060684, -0.0068850564, -0.06994747, -0.05335108, 0.041222733, -0.019577093, -0.010196206, 0.03952572, 0.026068805, 0.0024979794, -0.07138154, 0.010759516, 0.04272683, 0.021537237, 0.0050410894, 0.010678294, 0.0028150307, -0.06678404, -0.07631479, 0.05294756, 0.007953777, -0.013287836, -0.081120625, -0.02843373, 0.026902834, -0.031955935, 0.033227425, -0.009523674, -0.010029337, 0.00025991123, 0.005739285, -0.0486125, -0.037654765, -0.022798361, 0.032599106, 0.05815893, -0.03131415, 0.00610488, -0.02235908, -0.0022186001, 0.06855993, -0.016521556, 0.035211146, 0.030170942, -0.015136795, -0.058873434, -0.010006456, 0.012286621, -0.025561057, -0.038501248, -0.02283578, -0.04827548, 0.025315555, -0.0063299006, 0.016567066, -0.016949853, 0.021240285, 0.023397574, 0.018270142, 0.0077424725, 0.031211723, 0.04908985, -0.03537163, -0.031272784, -0.022011422, -0.010212387, -0.041836604, 0.009667029, -0.047894455, 0.005729425, 0.017118745, -0.0012277518, 0.013069136, -0.0038955712, -0.013957334, 0.0024666283, 0.012429218, 0.074393265, 0.05383702, -0.043021884, 0.04109265, 0.0031758219, 0.0695126, -0.0036468478, -0.066539295, 0.08545719, -0.012654744, -0.004342641, -0.014880677, -0.03785349, 0.013116226, 0.04096181, 0.020438934, -0.035377003, 0.028374411, 0.0037391316, -0.014965011, -0.025349943, -0.03208469, 0.0065968907, 0.025800994, 0.009979782, 0.01873788, -0.032392323, 0.03572414, -0.033529557, -0.00984123, -0.040031385, -0.007190287, -0.01689524, 0.0055695083, -0.030319605, 0.037925802, 0.024767416, 0.042572852, 0.016294513, -0.009793698, 0.0076519586, -0.008670113, -0.019953875, 0.07707531, -0.004508499, 0.027512033, -0.038385704, -0.023852164, -0.012420243, -0.011721289, -0.022769539, 0.02039848, 0.020394435, -0.044694617, -0.03237146, 0.02248831, -0.013644897, 0.04851567, 0.035035048, 0.027383469, 0.03206263, -0.040578514, -0.044845305, -0.025642721, 0.03425797, -0.02072615, -0.020325191, -0.013988559, 0.010042485, 0.07805427, 0.03731319, 0.047245186, 0.02712988, 0.03906759, 0.062063158, -0.0065038484, 0.0012277518, 0.0020974937, -0.023510335, 0.013395921, 0.010213652, -0.031482633, -0.08103162, 0.012527079, 0.0037737694, -0.018980093, 0.038426913, 0.034376044, -0.028595291, 0.017820353, -0.006680831, -0.008534595, 0.027153138, -0.010762549, -0.009774483, -0.07088193, -0.029061515, 0.0027224943, -0.03226439, -0.076254115, -0.051133744, -0.018806651, -0.00015321616, -0.017741343, -0.025993146, -0.020908188, 0.01883699, 0.050186127, 0.0014176287, -0.052222565, -0.01832728, 0.057184514, 0.031695012, 0.010498972, -0.029730255, -0.0025515798, -0.011582073, 0.022791915, -0.052589044, -0.016920524, -0.0150283305, 0.00019923157, 0.042985473, -0.024789665, 0.050802533, 0.025817174, -0.024921138, -0.016324852, -0.007931338, 0.02317647, -0.01822994, 0.015323006, 0.014169587, 0.03304703, -0.047864117, -0.007483825, -0.00063048187, -0.011040413, 0.009867271, -0.020177126, 0.011187307, 0.023627901, -0.017097507, -0.003384914, -0.019447833, 0.020468263, -0.0091828555, -0.021634322, 1.4285005e-05, -0.04343046, -0.026622696, 0.004567156, -0.048905786, -0.053199884, -0.02448437, 0.01811743, -0.0227483, -0.019043807, 0.08276706, -0.026208559, 0.018739397, -0.012246673, -0.0415413, 0.0016555435, -0.0017531367, -0.047433294, 0.025572812, -0.054812953, 0.00703783, 0.030358544, 0.03649806, -0.019248601, -0.04260825, -0.0045341616, -0.0015695806, 0.022401921, 0.013775042, 0.012753854, -0.006125612, -0.020187745, -0.016545953, -0.04557447, -0.066173196, -0.017849935, -0.012894935, -0.0063293944, 0.029189067, -0.005304161, 0.041003272, 0.027786987, 0.018651335, 0.013535989, -0.0031234857, -0.00787521, 0.0030304436, 0.016399438, 0.0008768211, -0.034401324, 0.035357535, -0.029909005, -0.025236672, -0.0023199858, -0.00016585774, 0.04454431, 0.036795642, 0.028899986, 0.019747185, 0.012714412, 0.00022350343, -0.028187726, 0.013678839, 0.021410821, -0.092487946, 6.5736305e-05, 0.06984634, 0.03951055, 0.018346496, 0.012158688, -0.010746368, 0.028511351, -0.029769445, 0.0022326957, -0.057220925, -0.042907603, -0.017576877, -0.009957532, 0.0021748603, 0.009474245, 0.0067111836, -0.016322829, 0.03342774, 0.050922375, 0.012755877, 0.027451852, -0.007542482, 0.08116411, -0.039959837, -0.059433706, 0.066323884, -0.006124095, -0.00024575263, 0.017296739, -0.037730616, 0.019307258, 0.016472507, -0.019281343, 0.033250432, 0.03329291, -0.036564555, 0.007077777, -0.044441786, 0.028176604, -0.01285524, -0.0012494954, 0.0664125, 0.011184779, -0.035809092, -0.06752433, -0.0024797756, -0.018157378, 0.009944891, 0.019188933, 0.01872979, 0.039292105, -0.015362068, -0.0026041688, -0.011362267, -0.010281663, -0.040813144, 0.047913168, -0.005193168, 0.053960405, 0.036372527, -0.015963808, 0.04762911, 0.05395636, -0.0053211013, -0.028897678, -0.020801684, -0.027081335, -0.038539678, 0.03724113, 0.0136954, 0.03469663, 0.031498816, 0.012127084, -9.721388e-05, -0.08642402, 0.017311402, -0.035674706, -0.0044882726, -0.018935626, -0.042407, -0.0118689425, 0.01987613, 0.010534496, -0.030521872, -0.0366581, 0.07381074, -0.005751168, -0.011620156, 0.012509113, 0.021271763, -0.026921038, -0.03160627, -0.011238379, 0.041442696, 0.012028227, 0.044866543, -0.022145042, -0.0031990826, -0.052516226, -0.01773458, 0.013889575, 0.030169802, -0.013740909, 0.026234854, -0.009476141, 0.01781024, 0.020780763, 0.022592556, -0.037257694, 0.019494353, -0.0050136573, -0.0400506, -0.027150989, 0.03985061, -0.024163527, 0.028744398, 0.0017789254, 0.0070294864, 0.025840435, -0.06525542, 0.03674558, 0.0003999801, -0.0077781216, 0.017475743, 0.008521447, 0.002214555, -0.0028878462, -0.014112572, -0.02923344, -0.00028013779, -0.06278525, -0.01622473, -0.020212395, -0.014335824, 0.016377695, -0.017301796, 0.063044146, -0.021747591, -0.007902009, -0.04567965, 0.05750005, -0.016773757, 0.0039350763, -0.032625433, 0.0031520557, -0.041819163, 0.0067930887, -0.023993751, -0.021941768, -0.008837488, -0.07076462, -0.0004055424, 0.023709835, 0.0055916314, -0.016590325, 0.049773887, 0.015020239, -0.033167504, -0.008616513, 0.01220976, 0.010915133, 0.025231615, 0.008804619, 0.02141006, 0.0005026299, 0.027481316, -0.014491821, 0.013592751, -0.029977776, 0.016261645, 0.054468088, 0.0065566907, 0.011216131, 0.024216242, 0.008260272, 0.023932058, -0.0077255326, -0.036237895, -0.048462827, 0.028767724, 0.027339729, -0.049669337, 0.007546022, 0.024269843], [-0.03953594, -0.08909121, -0.03593784, -0.02589849, -0.015515236, 0.019378772, 0.022034163, -0.026197894, 0.04482276, 0.019702666, -0.018887931, 0.014405049, -0.073792696, -0.02512457, -0.023243295, 0.050954863, -0.016027145, -0.017079532, 0.02865737, 0.03163086, -0.023170158, -0.020579677, -0.0052614827, 0.025427397, -0.024664013, 0.074018106, -0.017473074, -0.008646084, 0.021801382, -0.012296325, -0.01755892, -0.055265527, 0.013352794, -0.015877575, 0.012188888, 0.014269172, 0.007613842, -0.009832571, -0.016860312, -0.05267702, -0.062195767, 0.014143565, -0.025725055, 0.04379361, 0.014165948, 0.033876516, 0.022967132, 0.021171043, -0.008626072, -0.02838456, 0.036151662, 0.005596229, -0.02637801, 0.01380914, -0.039928824, 0.03288851, 0.009363914, 0.029226683, 0.034820277, -0.010216041, 0.014768441, 0.008186052, -0.056533184, 0.020600611, 0.013112639, 0.02591666, 0.01937298, 0.010764814, 0.015435184, -0.02715219, 0.002941891, 0.01692272, 0.000456741, -0.034883477, 0.05727471, 0.0074363593, -0.07088767, 0.00071519654, -0.011411052, -0.0401437, -0.021321073, 0.0075744246, 0.010878045, -0.05712093, -0.043733377, -0.0013840476, -0.0052812896, -0.00022804132, 0.051232934, 0.019839793, -0.055671573, -0.0064847604, 0.022748308, -0.016874004, 0.008795992, 0.003219438, 0.0006867572, 0.06389742, 0.02741973, 0.04250943, 0.03901666, -0.04160569, -0.0026172088, -0.02971173, -0.031043114, 0.005452979, 0.020004965, -0.0349869, -0.019203397, 0.009371287, 0.005800571, 0.0052686497, 0.00766756, -0.066288926, 0.04637086, -0.003927788, 0.019849602, -0.01607349, -0.03630781, -0.010697929, -0.044440143, 0.0074542654, 0.01520214, 0.0096715465, -0.015043091, 0.008464389, 0.0049663507, 0.012299748, -0.05410215, -0.0030572284, 0.056339376, 0.006235258, 0.053592347, -0.014830059, -0.04688698, 0.008462282, 4.739889e-05, 0.055509366, -0.015129725, 0.059204374, -0.013280905, -0.0010443556, 0.03234711, 0.009621317, 0.038394164, -0.008617776, 0.012608104, -0.03622118, -0.022339625, 0.0058533675, 0.007748138, -0.01968423, 0.033427805, 0.031450216, 0.020491067, -0.055033274, 0.009167077, 0.022235347, -0.024523132, 0.017373273, -0.01419228, 0.015070741, 0.02926618, 0.006640584, -0.005452979, -0.04958556, 0.015945513, 0.0021211002, -0.019020762, 0.05652897, 0.06933299, 0.005344192, -0.0013279589, 0.030075649, -0.06670577, -0.0069384077, 0.0045360737, -0.044487543, 0.014911954, 0.026501248, 0.011292522, 0.0034148267, 0.0052876095, 0.0023783708, -0.033638466, 0.02106196, -0.01852849, -0.005016909, -0.028486732, 0.015572247, 0.02324231, -0.030328969, 0.022827832, 0.008487824, -0.02896388, 0.020459468, -0.030223638, 0.004361751, 0.022547651, 0.028589956, 0.00924331, 0.0055404035, 0.029000746, -0.025276247, -0.024143942, -0.050380807, 0.022567665, -0.02324231, 0.036694903, -0.021415083, 0.032200173, 0.052336797, 0.041057445, 0.053700835, 0.018070564, 0.036147445, 0.015610034, -0.05229888, 0.026093617, 0.060392503, -0.04553664, 0.0064130696, 0.025158277, -0.03186364, -0.020572435, -3.791911e-05, -0.015355397, 0.011013396, 0.022850476, 0.0041045053, 0.064349785, -0.0011254603, -0.03269549, -0.04444541, -0.0010575219, 0.011217211, -0.03585423, 0.024511546, -0.016481647, 0.036920577, -0.024425175, 0.024928918, 0.029944513, -0.031049432, -0.022892347, -0.0020202461, -0.037287127, 0.027469236, -0.026204212, 0.012214628, 0.05847917, -0.02572285, -0.010217095, -0.015264022, -0.009234884, -0.0032522222, -0.0077850046, 0.021390263, -0.014006372, 0.038540814, -0.010807342, -0.031141203, -0.01393106, -0.040992666, 0.058155276, 0.007813213, 0.02310854, -0.015973426, 0.041062187, -0.018748894, -0.030601777, -0.05808997, 0.024582118, 0.018544551, -0.016996583, 0.025846086, 0.018180635, 0.01584479, 0.05600653, 0.011293312, -0.061534293, -0.025497377, -0.0021577028, 0.036776535, 0.025070854, 0.01654353, 0.0055696326, -0.046054866, 0.0027162198, -0.047457874, -0.020346763, -0.017080717, 0.024644788, 0.03772504, 0.032889564, -0.025877688, 0.050805293, -0.028831163, -0.045058176, -0.027779436, 0.017753255, -0.0058691674, -0.009844108, 0.00053935987, 0.01230225, -0.020428922, -0.07390013, 0.022005724, 0.00026596044, -0.015196348, -0.0342586, -0.0055717393, -0.072964795, 0.004841665, 0.012954117, -0.027423155, 0.018386029, 0.082048535, -0.024763286, -0.015873361, -0.036130067, -0.036495037, -0.0015462572, -0.062229473, 0.022524215, 0.078357734, 0.037687384, -0.011868682, -0.051746946, -0.03413775, 0.045578774, 0.025544183, 3.4298362e-05, 0.011618258, 0.02844144, 0.0050737876, -0.011789683, 0.022613483, 0.016031358, 0.041020054, 0.00062434876, -0.053992603, -0.03969815, -0.01535724, 0.038513705, -0.08190739, -0.021390263, -0.058167916, -0.009042919, 0.011127021, 0.030956743, -0.03364268, 0.010997069, 0.03647608, -0.004760955, -0.015830703, 0.011051315, 0.005736319, -0.010111105, -0.0010016966, 0.0012702902, -0.0020602718, -0.045736246, 0.04102776, 0.015702857, -0.027902145, 0.070298605, 0.007841356, 0.05616874, -0.0126249585, 0.06674606, 0.017332194, -0.033899687, 0.0018422368, -0.0015820696, 0.020287778, -0.06485011, 0.012321605, 0.041682582, 0.0016747608, 0.02112832, -0.012559652, 0.03599577, 0.024403187, 0.029094491, 0.02803065, 0.031943165, 0.031124217, -0.02485861, 0.04189759, 0.006179235, 0.01371421, 0.048216257, 0.014566996, 0.008067291, -0.0088667525, 0.015143419, 0.028525705, 0.02771887, -0.0072952155, -0.011062901, 0.021574922, 0.006617938, -0.008197111, -0.009240545, -0.061096113, -0.036932163, 0.03507307, 0.0006954471, 0.031670883, 0.033915486, -0.014390303, -0.01660067, 0.02274936, 0.023332631, -0.013537123, -0.033051774, 0.050242823, 0.010850659, 0.009471088, 0.028158627, 0.039890904, -0.04429637, 0.04913685, 0.025324699, -0.014510644, -0.014748428, -0.016217217, -0.052036606, 0.053702414, -0.0032610437, 0.019617872, -0.015378306, 0.08690639, 0.05073156, -0.042642146, 0.008049385, -0.012508303, -0.063544005, -0.03044457, -0.042705346, -0.0302742, -0.014990163, 0.01196348, -0.0340877, 0.01770138, -0.03593402, 0.026831985, 0.040027305, -0.046488833, 0.010975526, -0.020166121, -0.019210244, -0.044440143, -0.03130223, 0.051991314, 0.06290359, -0.06623205, -0.03912989, -0.048619263, -0.05656689, -0.0037834847, 0.028938076, -0.010197607, 0.012635491, 0.010700167, 0.023951186, -0.047719624, -0.0003506201, 0.007973546, 0.02615576, -0.02472642, -0.013294862, -0.05047139, -0.025404751, -0.009467138, 0.037853807, 0.009322835, -0.0016426347, 0.027504522, 0.024227154, 0.012327924, 0.014002685, 0.034017656, 0.047138724, 0.01210673, -0.021001395, -0.013048388, 0.029541094, 8.847792e-05, 0.019774817, 0.0325978, 0.022654563, 0.064904876, -0.027571406, -0.003703433, 0.006363564, 0.030126734, -0.054586668, 0.00040947372, 0.06960685, 0.023335, -0.07302378, 0.020392055, 0.009267106, -0.072585605, 0.022500781, 0.053681877, -0.026570369, 0.0134704355, -0.039185718, -0.038533192, -0.009374447, -0.04886694, 0.060969718, 0.039267346, -0.024660062, -0.04404726, -0.014366077, -0.024623789, -0.003047222, -0.017026339, -0.0070392615, 0.04931591, 0.023671238, -0.02640118, 0.03197845, -0.056401517, 0.016053477, -0.00780291, -0.014110123, -0.05707037, -0.058816753, 0.00044344296, 0.0020139262, -0.0060209758, 0.048296306, 0.016692836, 0.015872044, -0.0008068345, -0.028876457, -0.012547671, 0.02435829, -0.0047240895, -0.015771981, -0.0023565148, -0.03283374, 0.03425781, 0.0022140548, -0.039005075, -0.009452391, -0.007128793, -0.051494155, -0.055888824, 0.040232707, -0.0024160268, -0.021696579, 0.036498196, 0.043543782, 0.02736496, -0.048009973, -0.00725045, 0.020443669, 0.015946565, 0.030076176, 0.02534682, -0.011638533, -0.07178719, -0.06372517, 0.051380396, -0.03238292, -0.030107247, -0.04256631, -0.03833201, 0.0050632544, -0.0079040285, -0.0031578194, -0.04342897, 0.016355777, -0.03132395, 0.010926431, -0.011321751, -0.0060912836, -0.01330895, 0.019500956, 0.02267464, 0.0071751387, 0.007179747, 0.0076759867, -0.009699657, 0.03717758, -0.030663922, 0.052397896, 0.026602363, -0.012130429, -0.01234899, -0.05268485, -0.003932001, -0.017670305, -0.026478073, -0.0023472984, -0.054346513, -0.010652374, -0.012621798, 0.015696406, -0.016288891, -0.026985768, 0.028553091, 0.018855805, 0.0047075, 0.025101924, 0.0054498194, -0.039933566, -0.016265983, 0.007496924, 0.015462571, -0.027348107, 0.012110943, -0.023879033, -0.009617761, 0.035268985, -0.01789782, -0.024149735, -0.0012511333, 0.0022577671, 0.010706883, 0.019466197, 0.07052112, 0.02044156, -0.012960963, 0.042559993, -0.02123523, 0.090660386, -0.026366422, -0.060205013, 0.0807635, 0.022278268, -0.018761534, -0.019241843, -0.0062371674, 0.021185987, 0.031008353, -0.0074195066, -0.0021940419, 0.014150807, 0.005656531, 2.3896939e-05, -0.0008882025, -0.023641514, 0.018986942, 0.0529256, 0.00284288, -0.004498155, -0.057864565, 0.025451098, -0.021437332, -0.014328685, -0.012548329, -0.02424295, -0.025802374, 0.036473446, -0.050996993, 0.042557884, 0.04485831, 0.01551392, -0.009772598, 0.02936888, 0.012224174, -0.03701748, -0.01210673, 0.040498927, 0.009742578, 0.024015965, -0.021947792, 6.8465066e-05, -0.005919595, -0.020603508, -0.011639324, 0.008025949, 0.024604632, -0.05818477, -0.019469358, 0.01582254, -0.012947797, 0.05700085, 0.027906228, 0.0072256974, 0.023266533, -0.025011867, -0.04928642, -0.017846208, 0.0022656668, -0.032842163, 0.011058687, -0.010865405, -0.013842056, 0.02477382, 0.028706873, 0.054272648, 0.039893012, 0.027516637, 0.06224521, 0.028901737, 0.011923783, -0.0031526845, -0.03716468, 0.02145998, -0.002780735, -0.022421781, -0.09184009, -0.015229527, 0.022123696, -0.0037118597, 0.057283137, 0.03582092, 0.010533086, 0.023145406, -0.037382975, 0.020607984, 0.015614247, 0.010004326, 0.0044107297, -0.061412107, -0.013273269, 0.03884826, -0.014997008, -0.04912842, -0.045928467, -0.03138965, -0.009282414, -0.030228114, -0.047095537, -0.0015778564, 0.027657779, 0.034769718, -0.011310428, -0.036198005, -0.04296025, 0.040171087, 0.027082672, 0.027834734, -0.03963495, 0.00669483, -0.005428753, 0.004273273, -0.040849417, -0.038922913, -0.017316394, 0.016922457, 0.005245477, 0.0127503015, 0.049902607, 0.0085960515, -0.004203755, -0.029269341, -0.062322166, 0.04371863, -0.0430877, 0.0076154214, 0.007430994, 0.011303582, -0.08267209, -0.0031351733, 0.013405459, 0.001539674, 0.007884015, -0.020285277, 0.031068392, 0.015551049, 0.015160271, 0.020073958, 0.009467138, -0.00848032, -0.03633704, 0.0048978855, -0.016405283, -0.063447095, -0.02531838, -0.0055356636, -0.075808726, -0.068613574, -0.0057903007, 0.0018490833, -0.00841699, -0.05305726, 0.062195767, -0.03962416, -0.010883312, 0.016686121, -0.06540152, 0.009905841, -0.021623373, -0.061970364, 0.03279582, -0.034211464, 0.030846145, 0.008497568, 0.059655186, -0.039703418, -0.039683405, 0.013988992, 0.001879366, 0.011145058, 0.028550457, -0.012559389, 0.007180339, 0.0038999412, 0.015009649, -0.037600223, -0.07995877, -0.030295264, 0.017461209, -0.013169255, 0.013691169, 0.025355246, -0.014388986, 0.0041337097, 0.009028962, 0.021890914, 0.005917751, 0.008966685, 0.042600017, 0.008182101, -0.006432819, -0.028852232, 0.017045166, 0.0071393256, -0.022624018, -0.0067345924, -0.0057157795, 0.03356684, 0.016964588, 0.022790043, 0.036209065, 0.022233766, -0.018844746, -0.010553626, 0.0079175895, 0.03903141, -0.091722116, -0.01598475, 0.055749517, 0.013205857, -0.0046387715, -0.0023509848, -0.044828814, 0.015924973, -0.050107207, -0.008853915, -0.068608314, -0.043246746, -0.012193891, -0.012231019, 0.01140075, 0.020385735, 0.011721219, 0.000326789, 0.020454992, 0.043670174, 0.03132329, 0.02313013, -0.01695827, 0.051195014, -0.012559652, -0.007850836, 0.022079457, -0.0077634114, -0.0038856557, 0.03758416, -0.016850831, 0.014099228, 0.032024797, -0.00012587039, 0.0057204533, 0.0353048, -0.06663652, -0.0022561871, -0.036185365, 0.00970466, 0.008196321, -0.015271923, 0.039566487, 0.028236572, -0.015696999, -0.027459757, -0.020314636, -0.02725752, -0.013145818, 0.017516524, -0.0015628467, -0.01087449, -0.012066704, 0.008356688, 0.026551805, -0.0431875, -0.057399, 0.06368515, -0.007323655, 0.037186008, 0.042545244, -0.03399659, 0.06870101, 0.020916209, -0.015801737, -0.03504147, -0.0082566235, -0.0394106, -0.061259903, 0.044508614, -0.003981507, 0.039735015, 0.06867573, 0.029324112, 0.009025275, -0.07698422, -0.0013115668, -0.021854047, -0.03158662, -0.038961887, -0.015518661, -0.0009911634, -0.0014337177, -0.005565881, -0.011007075, -0.048410065, 0.06857461, 0.015890215, -0.01988933, 0.01719105, -0.012699742, -0.01384074, 0.012901978, -0.019934788, 0.06665126, 0.0371523, 0.023683382, -0.009796824, 0.01861091, -0.055416677, -0.01415265, -0.0046714237, 0.04210812, -0.007533264, 0.022380702, -0.005376087, 0.013010468, 0.0006957433, 0.049438097, -0.041442428, 0.04531228, 0.0029071318, -0.024775004, -0.0046387715, 0.036757313, -0.044569705, 0.04656467, -0.0012228914, -0.011747024, 0.028961774, -0.045802075, 0.06269714, 0.018873448, 0.01753917, 0.025910338, -0.008682423, 0.017827248, 0.017507045, -0.018734148, -0.0082837455, 0.009940074, -0.023840588, -0.0019970075, 0.0039836136, -0.015911281, 0.021177825, 0.015942352, 0.05512807, 0.006108664, -0.04661101, -0.049009662, 0.041184366, -0.0058852304, -0.033912323, -0.040931575, -7.478491e-05, -0.030330021, -0.0244336, 0.000752589, -0.0143770045, 0.0075848754, -0.06391898, -0.004977805, 0.011832869, 0.022935795, 0.0030145694, 0.04093368, -0.0017868723, -0.047146097, -0.02115149, 0.017932579, 0.031164242, 0.053828284, 0.016358936, 0.012861689, 0.011574019, 0.014860079, 0.00039670235, 0.012007718, -0.024225837, 0.021331081, 0.06373202, 0.012583088, 0.010621827, 0.015652167, 0.007865319, -0.009246997, -0.02517829, -0.0008068345, -0.021000868, 0.049636118, 0.021661293, -0.0632238, -0.0024684947, 0.0007731286], [-0.022058861, -0.06255632, -0.054009654, -0.01157619, -0.01921185, 0.05056579, 0.0201675, -0.022758963, 0.023435697, 0.007043769, 0.0042678863, -0.008841111, -0.060456995, -0.018557133, 0.008547395, 0.045927975, -0.0022367013, -0.04838047, 0.04273171, 0.052670866, -0.019645637, -0.0048878603, 0.0043266052, 0.03341889, -0.01783636, 0.046025842, 0.0031250084, 0.0040839002, 0.029932946, -0.014239336, -0.0077156657, -0.019839164, 0.012736132, -0.0069634514, 0.011247119, -0.009927412, 0.0032155947, -0.032049026, -0.030113017, -0.0341497, -0.046740256, 0.03516339, -0.037732776, 0.015149725, 0.028326003, 0.044072457, 0.004437682, 0.029931966, -0.0068566566, -0.036100388, 0.016153818, -0.014376347, -0.047073975, 0.0044367034, -0.016803395, 0.06109507, 0.042847194, 0.031430278, 0.03244318, 0.011714913, 0.035763733, 0.02525941, -0.0566892, 0.02291212, 0.0017227121, 0.015254685, 0.015052593, 0.020896103, -0.0017390584, -0.02612111, -0.012113528, 0.024532763, 0.009424875, -0.014568407, 0.084750965, -0.0041005374, -0.061204683, 0.008000452, -0.0032603675, -0.034147006, -0.00066401303, 0.01189841, -0.0017752685, -0.04383122, -0.059603613, 0.017506067, 0.01763965, 0.015418792, 0.05509009, 0.002005251, -0.04592602, -0.012005571, 0.060558774, -0.04257497, 0.006985593, -0.01650711, 0.0037188646, 0.058875497, 0.011415935, 0.043812137, 0.03401342, -0.034364756, -0.016207399, 0.019360606, -0.020642145, 0.020085782, 0.012873082, -0.008925764, 0.01713369, -0.014168874, 0.0014512135, 0.018088361, 0.02050342, -0.057678, 0.01667715, -0.014842184, 0.008734439, -0.042166054, -0.03180461, -0.00047904847, -0.005188795, 0.0019257356, 0.03242067, 0.022207983, -0.035268538, -0.015756242, 0.031287394, -0.027265882, -0.03177525, 0.005386971, 0.044475663, -0.005242131, 0.024456428, -0.029837528, -0.068723634, 0.033444334, -0.01353471, 0.04889744, -0.04947876, 0.022397352, -0.0139286155, 0.009306948, 0.025039457, 0.01699521, 0.023221618, -0.006898004, 0.020272216, -0.030039618, 0.0132151805, -0.0029755807, -0.006956356, -0.0085651325, 0.02145589, 0.010882082, 0.028601004, -0.041438915, 0.032584105, 0.022688987, -0.04736659, 0.027529385, -0.02704104, 0.04597495, 0.00073741167, 0.01311487, -0.0069669993, -0.07016225, 0.007106946, 0.007880079, 0.017540319, 0.023240946, 0.08057801, 0.009879457, 0.019105177, 0.04142228, -0.037777733, -0.0011970096, 0.043611515, -0.045028843, 0.0035047852, 0.0064705797, -0.011688978, 0.021633517, 0.022894016, -0.024035608, -0.037371654, 0.006483792, -0.020616699, -0.027972223, -0.0063064117, 0.024923733, 0.02560732, -0.025701268, 0.015110333, 0.021536628, -0.023424933, 0.033943936, -0.030258834, 0.021387875, 0.047253065, 0.040668722, 0.003956187, 0.019559516, 0.05109133, -0.03861894, -0.030729322, -0.03606785, 0.034306526, -0.021784717, 0.04181178, -0.004659713, 0.02636675, 0.05401969, 0.021185173, 0.059751388, 0.0108782295, 0.010076165, -0.0129432995, -0.05824525, 0.008642935, 0.058296137, -0.014672388, 0.024085522, 0.01586952, -0.0200048, -0.045575663, 0.024117814, 0.013329391, 0.009159172, -0.016138649, -0.01936721, 0.06545495, -0.009608249, -0.0020277598, -0.016703084, -0.007114041, 0.01707546, -0.03618553, 0.018956913, -0.022630269, -0.0034706548, -0.054821935, 0.013557219, 0.032260295, -0.008823849, -0.04318678, -0.020570213, -0.022935608, -0.03657014, -0.014950814, -0.017159624, 0.050845686, -0.03032049, -0.03426053, -0.023097085, 0.018419879, -0.0072243838, -0.012005081, 0.020558227, -0.010315934, 0.04498358, 0.031786505, -0.04539706, 0.025616981, -0.048842147, 0.029151127, 0.025871798, -0.0012326079, -0.010485974, 0.022966435, -0.013480021, -0.026216894, -0.04858403, 0.016018521, 0.0025904828, -0.0017625461, 0.030297002, 0.023046747, 0.007689242, 0.056176387, -0.0007765576, -0.03964114, 0.021659449, 0.025218919, -0.00049201556, 0.033390023, -0.003419398, 0.017649926, -0.033763375, -0.012655027, -0.03928491, 0.010198986, -0.023085402, 0.036113113, 0.017206049, 0.02524693, -0.005837639, 0.05914854, -0.023474352, -0.03530328, -0.05851242, 0.002829273, -0.0007486662, 0.009880436, 0.032456513, 0.014624924, -0.06448119, -0.0588892, 0.058538843, 0.0046823444, 0.010585429, -0.020722883, -0.011111453, -0.06248769, 0.018884981, 0.028737035, -0.032192644, 0.017063716, 0.06859544, -0.013894853, -0.0065686894, 0.0026484677, -0.0069978265, -0.011804459, -0.075927466, 0.02032555, 0.07263921, 0.021446357, 0.013188268, -0.03982023, -0.050375935, 0.06992248, 0.032742217, 0.0035182417, -0.01457379, 0.0037384375, 0.009118558, -0.011333729, 0.030130632, 0.02973061, 0.030930677, -0.022933649, -0.08408549, -0.020886317, -0.022727424, 0.019426174, -0.064148456, -0.034133304, -0.04076267, 0.010146629, 0.006477185, 0.024442727, -0.044993855, -0.0042581, 0.013789158, 0.025250113, 0.008881725, 0.0098752985, 0.017218344, -0.00433052, -0.027792152, -0.017534446, -0.024298863, -0.01703191, 0.023684274, 0.0014723768, -0.026430476, 0.06776359, 0.009515033, 0.037349142, -0.03632352, 0.04425782, -0.0029339883, -0.021814076, 0.018740142, -0.0019396815, 0.030163905, -0.055751648, -0.012358863, 0.048470505, -0.019577865, 0.013760777, -0.0049458453, 0.036392026, -0.005291675, 0.025411343, 0.033262797, 0.008128655, 0.034792915, -0.01608256, 0.049502004, 0.01140251, 0.045243412, 0.034154836, -0.025917916, 0.010252812, 0.007618779, 0.02234059, 0.04953332, 0.008284994, -0.0008670826, -0.010401078, 9.517358e-05, 0.0145485895, 0.006790353, -0.014348456, -0.04348527, -0.03357939, 0.011276723, -0.022442369, 0.038179036, 0.070523374, -0.032342378, -0.011279658, 0.029832145, 0.052056275, -0.0033599453, -0.040128503, 0.026284175, -0.01890064, 0.011557595, 0.01010161, 0.05809454, -0.03445308, 0.03282387, 0.0328777, 0.0029819424, -0.0028522713, -0.023579804, -0.06365522, 0.055641156, 0.047277108, 0.01676107, 0.040819433, 0.06967586, 0.019485872, -0.027187591, 0.028056875, -0.015039382, -0.06476109, -0.0055817217, -0.04830218, -0.017881623, -0.04585947, 0.0049588126, -0.016419766, -0.01625731, -0.056377985, 0.052825004, 0.04994695, -0.03757423, 0.010382483, -0.0039726403, -0.05549916, -0.040074434, -0.04668545, 0.061435644, 0.07101857, -0.038659554, -0.0349999, 0.0034399496, -0.057112463, 0.004571023, 0.0349358, -0.010898231, 0.005101206, 0.01648142, 0.047000576, -0.041007333, 0.020772183, 0.031872626, 0.024034629, -0.038550925, -0.032953054, -0.04878563, -0.004362387, 0.019459449, 0.044199683, 0.00821184, -0.011920061, 0.038226012, 0.02084494, -0.009805813, 0.023971997, -0.032113742, 0.011412388, 0.0032549852, 0.0023941414, -0.0325293, -0.013865003, 0.0045663742, 0.020463541, 0.026397089, -0.006204632, 0.048581094, -0.03858946, -0.008598162, -0.0013970209, 0.027331697, -0.033415955, -0.024385476, 0.060864113, 0.031815864, -0.059972562, 0.004576069, 0.0009605436, -0.08063281, 0.030286236, 0.083224274, -0.02986444, -0.029185258, -0.020689731, -0.028648958, -0.010366824, -0.022574363, 0.07415807, 0.04608603, -0.04913941, -0.037180815, 0.013475991, -0.016032832, -0.030193266, -0.009305847, -0.0008778477, 0.026454827, 0.020130312, -0.025198244, 0.029860524, -0.056262504, 0.007500363, -0.0016255353, 0.0027113457, -0.024298621, -0.06189756, 0.011549031, 0.013811178, 0.00676026, 0.011110597, -0.0018290941, 0.00087344385, 0.0009722873, 0.0020783436, 0.010239783, 0.01385962, 0.017942542, -0.0060036113, -0.014304417, -0.034567825, 0.031960703, 0.032295402, -0.0045857024, 0.014638136, 0.012492939, -0.06458298, -0.06105201, 0.07884286, -0.01700622, -0.033021558, 0.05676553, 0.045637317, -0.0122324955, -0.05886767, -0.021236673, 0.010297707, 0.019408558, 0.015687736, 0.03462263, -0.015886646, -0.055826027, -0.048746485, 0.03289972, -0.016056687, -0.022259362, -0.07712729, -0.026485167, 0.007849496, -0.03168081, 0.013934243, -0.034460664, 0.011299966, -0.03681382, 0.029149782, -0.03029896, 0.021221014, -0.03111821, 0.008291661, 0.015452861, -0.00057348807, -0.0273591, 0.033581346, -0.014719364, 0.028230341, 0.011648364, 0.050529584, -0.010172074, -0.011017626, -0.015104584, -0.027585534, -0.008207926, -0.01099585, -0.027361058, -0.0006185059, -0.044888165, 0.036767825, -0.01893685, 0.00016172168, -0.013318429, -0.025722798, 0.019962963, -0.014311512, 0.01824837, 0.018292898, 0.0028302518, -0.048924603, 0.00968544, -0.038602304, 0.014777593, -0.046243105, 0.015458611, -0.030430587, -0.012762556, 0.0128261065, -0.025777113, -0.021870349, 0.0077644754, -0.029504297, 0.018903576, 0.0049304315, 0.030434014, 0.011435264, -0.019119734, 0.0505609, -0.04470369, 0.054702543, 0.0025890146, -0.059971586, 0.10250561, -0.002027026, -0.030525029, -0.030220667, -0.0043155956, 0.011868071, 0.03456978, 0.0013484554, -0.022536319, 0.015747434, 0.011143871, -0.0081153205, -0.0031837886, -0.032387394, -0.01060806, 0.077785924, -0.00530715, -0.019876352, -0.036144916, 0.021303222, -0.0036011208, 0.020958493, -0.012461132, -0.02735861, -0.023315322, 0.03317472, -0.042038828, 0.040566757, 0.015609689, 0.014722636, 0.00027414394, 0.0336249, 0.0015862669, -0.03557241, -0.0038316536, 0.042542834, 0.01851603, 0.009459617, -0.01439641, -0.0020388614, 0.021553755, -0.042700395, -0.03665039, -0.0019416386, 0.050887767, -0.030206231, -0.003025492, 0.051125087, -0.03547014, 0.03853918, 0.016380131, 0.0041840286, 0.041848972, -0.031250697, -0.03276711, -0.052354764, 0.0037394161, -0.005997158, 0.0011910152, -0.027517641, 0.012311032, 0.04780894, 0.04297833, 0.015777405, 0.03291978, 0.025014747, 0.058707166, 0.0021814075, 0.024914436, 0.00824826, -0.007689976, 0.04355916, 0.007035994, -0.03614345, -0.07077195, -0.0044281404, 0.0074582803, 0.009069136, 0.071128175, 0.0032407946, -0.016570477, 0.028844686, -0.04124123, 0.05604916, 0.004386058, 0.004919055, 0.011800788, -0.09200862, -0.035117824, 0.0034879034, -0.022206515, -0.006430455, -0.06461429, -0.041715384, -0.024697663, -0.028955275, -0.016363004, -0.01100784, -0.016522525, 0.024386942, 0.008519258, -0.025255494, -0.01691276, 0.006776163, 0.01588732, 0.015607671, -0.01363337, 0.02305647, 0.011617049, -0.016414873, -0.06007336, -0.024157206, -0.039555017, 0.0326164, -0.043420676, 0.026668174, 0.036638644, 0.020814326, 0.024873577, -0.0070879846, -0.042896125, 0.047041677, -0.01570633, 0.04444239, -0.009766913, 0.0014704195, -0.07636982, -0.04093491, -0.0004193509, 0.0038791182, -0.009031948, -0.01614183, 0.01153582, 0.003970622, 0.007638597, 0.022783183, -0.0019993791, 0.00092775887, 0.02793748, 0.033003457, 0.0070198462, -0.10121966, -0.011476856, -0.0033244693, -0.063232444, -0.0435802, 0.0009765689, 0.0064306995, -0.017339695, -0.028378852, 0.026584499, -0.040966228, -0.017361226, -0.006956968, -0.045150932, 0.005646313, 0.014723523, -0.03454238, 0.004675616, -0.03470875, 0.028034369, -0.0062158867, 0.0532375, -0.03749007, 0.008245481, 0.010399609, -0.027115416, 0.05899734, 0.035630636, -0.007722271, 0.002740216, -0.00146467, 0.021835607, -0.03100897, -0.046247017, -0.029369732, 0.013470913, -0.0069709136, 0.0020855002, 0.004332477, 0.0014028928, 0.015400259, 0.016042007, 0.030710971, -0.009249697, 0.02973428, 0.050359298, 0.016746635, -0.013504372, -0.029127028, 0.0160721, 0.02035589, -0.019041564, 0.013965315, 0.016876794, 0.03644781, 0.023080051, 0.00646483, 0.06598929, 0.022498641, -0.01852643, -0.0054376163, 0.0026306072, 0.010277278, -0.08107125, -0.010303212, 0.06763636, 0.0036060142, 0.019871704, 0.003358722, -0.0386116, 0.010643781, -0.043268014, -0.022412032, -0.04568307, -0.05791251, -0.012863357, -0.008161929, -0.027127158, -0.0015022255, 0.048333492, 0.025755826, 0.058008537, 0.02199219, 0.036132194, 0.0039419965, -0.011195188, 0.046524342, -0.039222278, 0.01960233, 0.03580239, -0.0051276293, 0.024312198, 0.03123259, -0.02256788, 0.0072478713, 0.03825146, -0.041043557, 0.010020383, 0.024820484, -0.053124957, -0.03379078, -0.0077567683, 0.012835465, 0.020959716, -0.00022459985, 0.026650313, 0.04593923, -0.012510432, 0.0022978669, -0.009259973, -0.035104126, 0.008152877, -0.000866104, 0.01756772, -0.039142516, -0.018792989, 0.020493634, 0.042716052, -0.0091210045, -0.048631005, 0.064938225, 0.019191789, 0.05667158, 0.018236872, -0.04268669, 0.078730315, -0.0122732315, -0.01871176, -0.015431208, -0.012372075, -0.011393182, -0.030699225, 0.010863733, -0.008613575, -0.00877652, 0.050744887, 0.023156783, 0.008177832, -0.10568426, -0.026002692, -0.009759328, -0.039690074, -0.031301096, -0.033821605, 0.0104133105, 0.013571898, 0.008394358, -0.004342264, -0.0328043, 0.054330654, -0.013953572, 0.009374964, 0.015176928, -0.02073903, -0.030738372, 0.011834308, -0.029307466, 0.07805946, 0.021320103, 0.021187741, -0.023572342, 0.02957534, -0.03508651, 0.030688953, 0.010821897, 0.04270431, 0.0035527085, 0.011639068, -0.014716918, 0.005412905, 0.021436317, 0.055227097, -0.021923196, 0.046752732, -0.018521413, -0.02732399, -0.014621009, 0.035749543, -0.020219859, 0.05603742, 0.0156016145, 0.0032924183, 0.025294637, -0.030326363, 0.07659295, 0.022117458, 0.02531409, -0.0114482315, -0.007133125, 0.001353471, 0.008150919, -0.020127375, -0.008066022, -0.0058493824, -0.01764797, -0.0013984888, -0.0076869177, 0.006791821, 0.0043647727, 0.0113449525, 0.043363918, -0.025351217, -0.055275537, -0.0245442, 0.010932483, -0.02457778, -0.06845842, -0.045935806, 0.0066283867, -0.008625809, -0.01226687, 0.021599753, -0.0118524125, 0.005304275, -0.07961893, -0.0014312123, -0.0027808298, 0.024836143, -0.017393032, 0.048111342, 0.011054234, -0.039418496, -0.018097658, -0.005886938, 0.014884266, 0.03276711, 0.013611045, 0.035797007, 0.03165488, 0.014908488, -0.01719987, -0.003463743, -0.038202528, 0.041396834, 0.06651679, -0.022591123, 0.0004177606, -0.025619306, 0.008492223, 0.00069216447, -0.0031248247, 0.01972662, -0.019002909, 0.038020495, 0.021095535, -0.050042216, -0.02015233, 0.0035506594], [-0.019315347, -0.07326726, -0.065662816, -0.029842956, -0.0032637487, 0.061668403, 0.034723863, -0.021165164, 0.04990794, 0.0032995318, 0.013268538, 0.060480062, -0.03608073, -0.0013592099, -0.019166227, 0.024450123, 0.03184103, 0.014135409, 0.022919537, 0.021901457, -0.025088446, 0.005243352, -0.00031858342, 0.037154216, -0.06069476, 0.020385876, -0.014825673, 0.014172345, 0.004741959, -0.008089826, 0.023488602, -0.07610682, 0.018183496, -0.019233897, -0.026905872, 0.015986308, -0.005431213, 0.00047181512, -0.040787913, -0.048466235, -0.029374316, 0.030137299, -0.015383193, 0.014083466, 0.03787103, 0.06782595, -0.008277398, 0.01766522, -0.0028354358, -0.0119693875, 0.03510882, -0.0041715964, -0.018854462, 0.017520934, -0.011256614, 0.040190842, 0.034400087, 0.0020612695, 0.060764015, 0.028617103, 0.01625699, 0.01778238, -0.08007064, 0.02071485, 0.018408582, -0.0006625612, -0.0050494317, 0.021685028, -0.008566835, -0.014664216, -0.024902027, 0.0025804103, -0.014247375, 0.0013724482, 0.012648181, 0.0033260803, -0.043521848, 0.0062100682, 0.012377572, -0.019770063, -0.015109194, 0.0270011, -0.0013268538, -0.077988304, -0.015165899, -0.0018760063, 0.029045345, -0.030536685, 0.035997618, 0.036456738, -0.040972598, -0.0024886446, 0.05410147, -0.041612074, 0.016584806, 0.003757784, 0.06427998, 0.046889625, 0.019357767, 0.014892044, 0.07259085, -0.00873767, 0.0049588205, 0.027877696, -0.04430618, -0.0019917237, 0.019069988, 0.022691278, 0.033035718, 0.019898191, 0.0041802535, 0.011230644, 0.022621732, -0.061556004, 0.027319685, 0.012672926, 0.03786064, -0.031611323, -0.031334296, 0.0052075693, -0.027970701, 0.00051481236, 0.0012061293, 0.029226566, -0.022416558, -0.00016737172, 0.01442398, -0.026718877, -0.049980663, -0.019639052, 0.044634, -0.018022688, 0.051733445, -0.02398985, -0.054638367, 0.021055363, -0.03747049, 0.03489181, -0.07472859, 0.040400214, -0.023877596, 0.00038553213, 0.0042596105, 0.013216595, -0.020950325, -0.043068785, 0.015795274, -0.039391223, -0.009348577, 0.0103585785, -0.018406345, 0.006348583, -0.031831793, 0.0384942, 0.019195806, -0.028374702, 0.013878002, 0.009146865, -0.031950686, 0.00046633228, 0.008904176, 0.024324307, 0.022769408, -0.0059409025, -0.014266998, -0.056907542, 0.007841654, 0.0069811326, -0.009539034, 0.027490517, 0.04328002, 0.00073181844, 0.01695995, 0.026693627, -0.06590752, -0.0143599175, 0.02499913, -0.018229667, 0.0043820012, 0.006235174, 1.0965734e-05, 0.0241275, 0.0075213397, -0.026980322, -0.10126105, 0.02907045, -0.023677329, -0.014182157, 0.0066371546, 0.052917168, 0.009888783, -0.056666385, -0.030118253, 0.020576335, -0.0070275925, -0.032234643, -0.028566314, 0.0007655814, 0.018971298, 0.027481861, -0.028702522, 0.007688711, 0.048198443, 0.041913345, -0.04482965, -0.0325209, 0.047219608, -0.0021573638, 0.04329503, -0.0026477198, 0.02601303, 0.008203163, 0.072981, 0.031114692, 0.05124576, -0.009824721, -0.0010596362, -0.05847478, 0.03002187, 0.02095494, -0.012623291, -0.00863667, 0.03167943, -0.02344041, -0.030910168, -0.0011868965, -0.027310448, 0.04050165, -0.0014497855, -0.0059630508, 0.047824018, -0.018088844, -0.0062146853, -0.031767152, -0.00907501, 0.014211014, -0.020559741, 0.012034604, -0.061256323, 0.014073077, -0.034740023, 0.009502097, 0.024367014, 0.0053004897, -0.0384424, 0.021401651, -0.022379331, 0.0017943404, -0.02468329, 0.011378247, 0.04031927, -0.015708126, -0.026084017, 0.030323138, 0.034099247, -0.0065292288, 0.012695615, 0.0109928595, -0.04103724, 0.04193369, 0.009896863, -0.06751198, 0.003577715, -0.031127678, 0.030789472, 0.004896489, -0.007879169, -0.0057645133, -0.021734085, -0.06377209, -0.0110072885, -0.054983344, 0.04710879, -0.001900607, -0.049966812, 0.017915124, 0.03515037, -0.020566523, 0.07181979, 0.014646757, -0.0570299, -0.00067814405, 0.0138999345, 0.0058961017, 0.01955479, 0.015687926, 0.009474394, -0.03586603, 0.004612534, -0.016643098, -0.023845855, -0.022633275, 0.020392729, 0.028387977, 0.02014694, -0.03686824, 0.050345413, -0.0041485103, -0.048910927, -0.040926427, 0.005354741, 0.0041086874, -0.027315067, 0.025507452, 0.022132313, -0.004398125, -0.05316188, 0.035649024, 0.000717967, 0.004625087, -0.0038760984, -0.03268539, -0.03268597, -0.004510957, 0.023002649, -0.0031979543, 0.035891425, 0.05089659, -0.008192125, 0.008771144, -0.04420576, 0.008645616, -0.0045017223, -0.032763883, 0.041750588, 0.033738676, 0.028903365, 0.0013124252, -0.036369298, -0.013599242, 0.056177456, 0.014143488, -0.01967368, -0.0029030337, 0.0122210225, 0.0089040315, 0.02478025, 0.007209393, 0.024308145, 0.01622467, -0.018027667, -0.07731882, -0.012161576, 0.010065714, 0.07560354, -0.039342746, -0.0021065753, -0.019824892, 0.0008755273, 0.006578863, 0.055379268, -0.02516149, 0.004953626, 0.021513037, -0.01683298, 0.012808158, 0.012844915, -0.025454355, -0.005766822, -0.01760058, -0.0071127214, -0.028876819, -0.05269093, 0.0457292, 0.00035725208, -0.03894105, 0.08894019, -0.02122966, 0.046423145, -0.01851016, 0.029143458, 0.05399066, -0.029345458, -0.023795497, 0.018795269, 0.04766978, -0.04329041, -0.017140308, 0.055741135, -0.03254168, 0.0132756075, -0.01925583, 0.048122834, 0.023911072, 0.0069649722, 0.025865281, 0.017650215, 0.0403741, -0.007552505, 0.023246203, -0.0076933284, 0.027776204, 0.050438914, 0.034909703, 0.0061800564, 0.047730956, 0.04071519, 0.03230159, 0.016730247, -0.0078402115, -0.06470937, 0.0039674314, -0.0177137, 7.762585e-05, 0.04073135, -0.07983632, -0.0447956, -0.007094253, -0.009100405, 0.01431894, 0.026480516, -0.027167607, -0.017365105, 0.02387298, 0.018469758, -0.028672509, -0.039563216, 0.019052386, 0.017389057, 0.03159632, 0.037605543, 0.06707335, -0.035452798, 0.036565527, 0.057668217, 0.013793739, -0.005686022, 0.0023939929, -0.059644356, 0.026960699, 0.017869385, 0.030325448, 0.0067924066, 0.08689017, 0.030256191, -0.0215494, 0.033515323, 0.0014141469, -0.02839548, -0.005355895, -0.026971089, -0.001141302, -0.021093454, -0.0033705204, -0.024282752, 0.022281216, -0.032230023, 0.016624052, -0.0032689432, -0.0750137, 0.0035171148, -0.027554005, -0.020669254, -0.03529812, -0.032564767, 0.036685575, 0.08729186, -0.0633704, -0.0048089703, -0.002807336, -0.050176892, -0.029909907, 0.009272394, -0.03516617, 0.022259863, -0.023876442, 0.06655883, -0.06467243, 0.029454539, 0.038821008, 0.031027257, -0.041219614, -0.026832573, -0.042444028, -0.030620946, 0.014913398, 0.040275414, -0.00041063788, 0.018497461, -0.0003858207, -0.004908032, 0.0038807157, 0.04570749, -0.035404317, -0.005258935, 0.019579029, -0.008830879, -0.03109305, -0.00976109, -0.0005223152, -0.023041604, 0.044702105, 0.027309803, 0.051647455, -0.038278494, -0.005844159, -0.012444665, 0.036379687, -0.03339679, 0.024837676, 0.04006302, 0.024497667, -0.06854623, 0.008023455, 0.022514382, -0.0585778, 0.018578263, 0.047810603, -0.013749876, 0.028707137, -0.026531305, -0.051025294, -0.013486663, -0.0017175802, 0.054630134, 0.07012529, 0.0010573276, -0.02202612, -0.00803846, -0.0045556854, -0.054694775, -0.025237348, -0.007441116, 0.05299335, 0.015362849, -0.023951473, 0.013148637, -0.057424664, -0.00074797845, -0.0045946427, -0.022700222, -0.038890265, -0.0314705, -0.0052093007, -0.0018197346, -0.007184287, 0.027908372, 0.028851712, 0.01215696, 0.027511295, -0.033086505, 0.04903299, 0.0055022016, -0.030549956, -0.04659629, -0.027205408, -0.02009846, 0.046761926, -0.021008039, -0.02152083, -0.0019586822, -0.0177137, -0.07095638, -0.073016785, 0.027320838, 0.008024501, -0.007611374, -0.005346661, 0.054251526, -0.019322488, -0.032213863, 0.008166586, -0.001185165, -0.022815654, 0.024290832, 0.035769068, -0.02144746, -0.07147811, -0.0453612, 0.04524577, -0.03870096, -0.043622844, -0.05603836, -0.04054782, -0.0024055357, -7.7914425e-05, -0.029015044, -0.060720157, -0.0025792562, -0.019516716, 0.013195818, -0.017434362, -0.011799148, 0.006728921, 0.0018895511, -0.020232357, 0.005620804, -0.02365857, 0.036683988, -0.03942066, 0.03789397, -0.028808137, 0.02555247, 0.020784106, -0.018017711, -0.024604797, -0.045472015, -0.00020200037, -0.036198467, -0.015056962, -0.0013597511, -0.044347517, -0.005768553, -0.043140355, 0.03715364, -0.01758976, -0.015536713, 0.063996024, 0.017652523, 0.029109983, 0.0046552424, 0.017052293, -0.0024390102, 0.009771695, -0.010427692, -0.006480172, -0.028702952, 0.014634927, -0.008868393, 0.01450478, 0.0207287, 0.0024459357, 0.0059168795, 0.0003445549, 0.014432637, -0.019469371, -0.008471606, 0.017481688, 0.017091539, -0.032393932, 0.067675896, -0.014405367, 0.058120698, -0.020479085, -0.08405985, 0.10217525, -0.02126429, -0.032507055, 0.00090962386, 0.027176552, 0.025754469, 0.020995341, -0.017315472, -0.03548281, 0.0027310448, -0.016486837, 0.012511326, 0.011717176, -0.020772563, 0.0011144648, 0.05624383, 0.014853375, -0.021978794, -0.046753272, 0.045271166, -0.014583272, 0.005614456, -0.011158789, 0.0003386392, -0.0023293528, 0.030297747, -0.013167538, 0.0519291, 0.02144032, 0.051631294, 0.010961406, 0.01732817, 0.024108166, -0.03146473, -0.029556694, 0.05060888, -0.000887503, 0.00027933766, -0.044676706, 0.022869326, 0.039245784, -0.03746818, -0.0057529705, 0.018302387, 0.030694822, -0.030241618, -0.005320004, 0.0324932, 0.009401674, 0.06617301, 0.038301576, 0.014427443, 0.05147893, -0.035789847, -0.057594344, -0.022887794, 0.010706777, 0.012825293, -0.020897226, -0.014222052, 0.028127685, 0.0488056, 0.023366824, 0.011098478, 0.02096908, 0.019562868, 0.020679228, 0.064343, 0.0035759835, 0.016230442, -0.035063222, 0.014250423, -0.021298917, -0.03944894, -0.027817182, -0.04763861, 0.043937385, -0.013351646, 0.055041924, 0.034252625, -0.020754095, 0.041057438, 0.0015894542, 0.014307397, -0.02041358, 0.051348493, -0.033999402, -0.090302244, -0.039657287, 0.011767964, -0.03834602, 0.027010335, -0.035956062, 0.019457685, -0.002899571, -0.0060559707, -0.024128078, -0.0049195746, 0.03049513, 0.029049383, -0.004578284, -0.0051769805, -0.054777734, 0.016594041, -0.03012922, -0.013830297, -0.020798534, 0.042212304, 0.00089341874, -0.0015398199, -0.03799569, 0.0026798234, 0.0058083762, 0.027054198, -0.011832604, -0.0051544723, 0.04884946, 0.037731357, 0.018163873, -0.013864151, -0.060099147, 0.054361112, -0.046099655, 0.01217081, -0.00029088053, 0.016145311, -0.045264456, -0.039864484, -0.022931082, 0.012324692, -0.011927256, -0.010797208, 0.007605602, 0.0020026893, 0.019355098, 0.029786397, -0.0047579743, -0.0013135795, -0.009177742, 0.019767467, -0.011438992, -0.05140736, -0.015128673, 0.026913375, -0.05508954, -0.06005298, 0.024037465, -0.009753155, -0.044557817, -0.0263016, 0.0063331444, -0.035958372, -0.03334968, 0.0076852483, -0.032333907, 0.00076687994, 0.013181172, -0.048757114, 0.02303035, -0.024171509, 0.06666705, 0.052018266, 0.02269099, -0.036475495, -0.03281164, 0.016407624, -0.0024136158, 0.025978401, -0.005846756, -0.0070053726, -0.023170019, 0.013089913, -0.015524485, -0.026832573, -0.08853849, -0.014407243, 0.038866024, 0.030065086, 0.004188333, 0.0014527072, 0.004214305, -0.0068835956, 0.020362793, 0.048572432, -0.0267587, -0.013839911, 0.0065546236, -0.008114643, -0.006889944, -0.023754952, 0.008398598, 0.016591515, 0.015324324, 0.02345282, 0.027726714, 0.002988451, 0.012953273, -0.015644062, 0.016045142, -0.012536719, 0.028816218, 0.0013568653, -0.020870678, 0.04072674, -0.046020303, -0.014756956, 0.054971803, 0.0032767344, -0.00013389738, 0.00028510907, -0.007334074, -0.0036432208, -0.023213882, -0.043090716, -0.06618686, -0.035247333, -0.018991353, -0.005130557, -0.027471906, 0.01241148, 0.025732538, -0.017572878, 0.022431275, 0.04727501, 0.02442473, 0.015277577, -0.016657526, 0.034727037, -0.049177278, 0.015755162, 0.042238276, -0.024996102, 0.031154228, 0.035048794, -0.030941838, 0.011914558, 0.008430918, -0.032228004, 0.015835674, 0.019488417, -0.03104688, -0.014045374, -0.0142537225, 0.011755267, 0.019089611, -0.026513992, 0.022395492, 0.03617278, -0.030762926, -0.03967749, 0.003060017, -0.044555508, -0.027125763, -0.008982379, 0.025606433, -0.003641485, -0.037371222, 0.0010965734, 0.090311475, -0.057137243, -0.020594804, 0.11444417, -0.01824698, -0.004826654, 0.05220613, -0.010931683, 0.05724806, -0.021492837, -0.034030423, -0.046005297, -0.02715866, 0.01557798, -0.025312377, 0.0068781124, 0.0067546032, 0.05421228, 0.03918634, 0.0174309, -0.007765471, -0.046169203, -0.028895287, -0.0062428215, -0.02330911, -0.039665945, -0.039114196, 0.016752755, 0.0032940488, 0.0044486253, -0.020375488, -0.0076794764, 0.073874414, -0.042948738, -0.019149633, 0.0049784435, -0.0071221, -0.017904157, 0.04203801, 0.003016154, 0.048597824, 0.017736785, -0.013143298, -0.028322758, 0.0063745542, -0.03359901, 0.036622666, 0.021986874, 0.027809966, -0.0045069167, 0.023322385, -0.014270605, -0.003621001, 0.0028568625, 0.037586495, -0.000989874, 0.03727657, -0.01033203, -0.01862097, -0.047452774, 0.016598659, -0.019378183, 0.031181931, -0.0022766883, -0.016814077, 0.013265075, -0.039328028, 0.06538348, 0.006434, 0.011946879, 0.029556982, -0.009946498, 0.027081901, 0.007188904, 0.016218899, -0.01974294, -0.0135905845, -0.028263314, 0.02189482, -0.029008405, -0.025166936, 0.03323483, 0.0012360979, 0.031927023, 0.027593251, -0.023625962, -0.015553451, 0.013014595, -0.037425473, -0.02503881, -0.011202362, 0.00888614, -0.0038691727, 0.0030900282, -0.005990465, -0.024290254, 0.0335436, -0.050029717, -0.007266242, -0.0069329413, 0.01207385, -0.040178448, 0.06017187, 0.032823328, -0.05489908, -0.018038055, 0.0049703633, 0.00038553213, 0.024951085, 0.04945755, 0.06273554, 0.048559733, 0.0014567111, -0.003324926, 0.012623291, -0.020655114, 0.011803747, 0.06729498, 0.006451603, 0.01472929, 0.015816052, 0.026844118, 0.025598064, 0.006602526, 0.0025922416, -0.023151353, 0.0017011678, 0.034563992, -0.011820484, -0.012640028, -0.045641407], [-0.046001825, -0.0999634, -0.038830847, -0.054593418, -0.030516464, 0.028392853, 0.026680257, -0.026656035, 0.023869602, 0.037073955, 0.015395983, 0.007061304, -0.024578527, -0.0020612606, -0.002114384, 0.026901118, 0.0021428568, 0.009288525, 0.03059582, 0.014455321, -0.005681595, -0.00085155363, -0.014143699, 0.0333287, -0.058777764, 0.041615132, 0.0015565241, 0.027486332, -0.011040142, -0.012521005, 0.02418096, -0.058492508, 0.010824749, -0.022831127, 0.006247187, 0.025740352, 0.008786557, 0.022185741, -0.043169286, -0.03172736, -0.058223065, 0.00029738466, 0.004255527, 0.021702226, 0.025343144, 0.021479188, 0.0037879634, 0.0017012618, -0.03196991, -0.044945158, 0.048172098, 0.02742899, -0.009821142, 0.016366702, -0.0014653049, 0.058924347, 0.032138634, 0.029050898, 0.0690407, 0.007902839, 0.0021112203, -0.049132388, -0.0720388, 0.009399781, 0.056806274, -0.013751404, -0.006256678, -0.0047955913, -0.0049949023, 0.010757521, -0.03185285, 0.024782058, 0.007299106, -0.023242489, 0.003957747, 0.008732247, -0.054356012, 0.019944547, 0.0030234107, -0.037050754, -0.02476024, 0.011472509, 0.03600991, -0.03588811, -0.036795553, 0.041411344, -0.01456763, -0.035311792, 0.024920203, -0.009250562, -0.04264201, 0.048451558, 0.0142227905, 0.008296189, -0.015126545, 0.04875, 0.04021416, 0.03449873, 0.02552868, -0.011045811, 0.043657545, -0.04289721, 0.002524606, 0.0113617815, -0.010722721, 0.0063003106, 0.012031425, -0.019095892, 0.008053641, 0.045097012, 0.0056271083, 0.004816946, -0.004910538, -0.054579843, 0.010272426, -0.0027850813, 0.015037962, -0.011788877, -0.028784094, -0.029607173, -0.0077594197, 0.023402696, -0.030867897, 0.047572058, -0.0037618633, -0.019193439, 0.023848774, -0.003794291, -0.05133573, 0.010947868, 0.009816858, 0.020598108, 0.044411555, -0.009250562, -0.03295117, 0.004430188, -0.06079948, 0.039967656, -0.029183771, 0.026101304, -0.015071708, 0.0009564819, 0.009792603, -9.701912e-05, 0.003858619, -0.045924842, -0.023825573, -0.06765501, -0.0033652186, -0.015974343, 0.0016791162, 0.013659658, -0.025859812, 0.0021957166, -0.017786134, -0.01999121, 0.02494347, 0.004650063, -0.030975986, 0.052628122, -0.015146582, -0.0009459363, 0.04961262, 0.013768277, -0.027728485, -0.044507187, 0.0076898187, -0.012032479, 0.010974759, 0.040861655, 0.05337317, 0.0003110939, 0.024768217, 0.043858964, -0.042613536, -0.008155933, -0.0061649317, -0.004796646, 0.04982986, 0.029431064, -0.016682014, 0.04560267, -0.04090094, -0.009504051, -0.07655784, 0.017732617, -0.022570651, -0.026608018, 0.0016248064, 0.036122747, 0.03757487, -0.03763076, 0.0036491577, -0.011623312, -0.0042941505, 0.040705845, -0.030459784, -0.0057049477, 0.012083362, 0.04165389, -0.011927551, -0.0017299984, 0.031586576, 0.0050352393, -0.047471873, -0.026323816, 0.06548605, 0.0049680113, 0.04276012, -0.019795062, -0.0119312415, 0.017961191, 0.021866739, 0.03287814, 0.023673454, 0.024248451, 0.02178501, -0.034678005, 0.026771342, 0.039900165, -0.006840902, 0.019320512, 0.042400517, -0.013035361, -0.01930054, 0.0063558067, 0.001563906, 0.022917304, -0.022634452, -0.008460831, 0.046400446, -0.016926672, -0.017455004, -0.031689394, 0.0016867823, -0.018105928, -0.03414239, 0.030451346, -0.07043271, 0.051992755, -0.03276715, -0.004429562, 0.028397072, -0.041904215, -0.031350616, 0.004807719, -0.0426167, 0.0042646225, 0.021090321, 0.011719672, 0.049943753, -0.005304151, -0.050452046, 0.029633012, -0.0055100527, -0.0032268083, -0.0038196002, 0.027038803, -0.017374858, 0.022924457, 0.021143839, -0.064516656, -0.019048965, -0.012810741, 0.024726164, 0.01876285, 0.034231927, -0.0028541547, -0.0018064538, -0.033851232, -0.048231155, -0.104795404, 0.05751546, 0.00061796955, -0.01575137, 0.010153261, 0.050745744, -0.005110376, 0.052462555, 0.04230455, -0.060999714, -0.017025998, 0.030253617, -0.011712948, 0.036566716, -0.009303949, 0.03630825, -0.05172384, -0.01882006, -0.052236356, -0.031425755, 0.014593798, 0.015806733, 0.05575119, 0.03671857, 0.00464189, 0.0442274, 0.04284448, -0.069250554, -0.031188086, 0.0387913, 0.008044677, -0.01848425, 0.0005503833, -0.009735657, -0.033539087, -0.054195717, 0.055954717, 0.053676877, -0.0028288453, -0.05942948, -0.024413489, -0.025003513, -0.015372256, -0.017330566, -0.013514129, 0.036597297, 0.077821985, -0.014056171, -0.0073526255, -0.04087879, -0.014253372, 6.432789e-05, -0.053385824, 0.03867108, 0.0324492, 0.035606656, 0.013570549, -0.040429026, -0.01739384, 0.020188676, -0.018430995, -0.015799351, 0.0078680385, 0.034488186, -0.017386854, 0.034747608, -0.008437762, 0.0053244513, 0.013292542, 0.023652626, -0.081129074, -0.019012582, 0.008304625, 0.0380336, -0.04581622, 0.0032063762, -0.04167498, 0.013398129, -0.004776082, 0.0117878225, -0.026667338, -0.0023216042, 0.008354189, -0.02462809, 0.0022198395, 0.0054905433, 0.002363259, -0.033802725, -0.005034448, 0.012965761, -0.0315001, -0.08195162, 0.05736973, -0.0077889473, -0.0023528454, 0.07728943, -0.015206165, 0.055904098, -0.010423754, 0.03789862, 0.04405933, -0.0022327579, 0.020662434, 0.011698185, 0.07096737, -0.037099265, 0.013207254, 0.04764482, -0.029962033, -0.011882205, -0.0397694, 0.05059441, 0.030232, 0.017996255, 0.050677724, 0.0020769474, 0.042473283, -0.042722154, 0.024660781, 0.011002821, 0.023549281, 0.009791548, 0.07469206, 0.013804133, -0.007968222, 0.041705564, 0.028701048, 0.03181225, 0.008182824, -0.020538524, 0.012964706, -0.01802552, 0.010245007, -0.006563554, -0.06680768, -0.035821144, -0.010061515, -0.0009797645, 0.0014647776, 0.010824749, -0.0024328597, -0.016423121, 0.036431734, 0.022970328, 0.0063742613, -0.023172144, 0.0035344749, 0.014860797, 0.02009772, 0.042782262, 0.040653117, -0.044236764, 0.026422944, 0.034004144, -0.010541338, -0.029193591, -0.016568122, -0.053208653, 0.012318396, 0.029599266, 0.038146306, -0.014503303, 0.08792462, 0.058934893, -0.03587229, 0.012308773, -0.0078869555, -0.06355042, -0.025680207, -0.003530652, -0.03379851, -0.008348784, -0.016983617, -0.028117087, 0.03891376, -0.014702614, 0.025843995, -0.0011072833, -0.064221375, -0.00013748769, -0.024881182, -0.015788822, -0.049850952, -0.027874012, 0.03369147, 0.07619797, -0.026294816, -0.022295149, 0.0046181628, -0.036084782, -0.025772927, -0.010369841, -0.029298643, -0.007816366, -0.017092895, 0.05003919, -0.07239524, 0.026888529, 0.029251263, 0.014848142, -0.05006977, -0.0076761097, -0.041196737, -0.006674282, 0.01801181, 0.028110234, 0.009238961, 0.02581763, -0.0013793586, 0.025037391, -0.009571146, 0.041490432, 0.030800931, 0.01888419, 0.037435405, -0.038043488, -0.0036276712, -0.037071057, -0.015718678, -0.01645924, 0.018550687, 0.040601708, 0.048388544, -0.047173698, -0.036240857, -0.015944881, 0.035692092, -0.030035194, 0.036340512, 0.045135505, 0.047219835, -0.06867899, 0.040430803, 0.018951418, -0.042031948, 0.039857455, 0.030344835, -0.020266384, 0.007163596, -0.012462738, -0.058572125, -0.036103502, -0.0073091243, 0.0074119437, 0.055981345, -0.00256547, -0.042596404, -0.024405578, -0.027837103, -0.0358338, 0.011454582, -0.03205849, 0.025467517, 0.021386122, -0.016866768, 0.024949202, -0.035670344, -0.0014229909, -0.01940066, -0.016451066, -0.027812848, -0.036538243, 0.0005241141, 0.007975999, -0.031057715, 0.018610796, -0.0021059474, 0.0003184758, 0.019790843, -0.01883858, 0.03632522, -0.0036150164, 0.0040463298, -0.02533517, -0.015594241, -0.013811515, 0.05605596, -0.0062305783, -0.009038842, -0.007506327, -0.016801706, -0.09088582, -0.07330005, 0.03520212, -0.011145598, 0.013847897, 0.01928044, 0.097856425, -0.019952191, -0.018825926, -0.00549318, 0.018915035, -0.0047281, -0.0060980334, 0.026264763, -0.011245781, -0.07912752, -0.03562816, 0.024523294, -0.03727221, -0.053639438, -0.04403613, -0.031051124, -0.021302022, -0.009542673, 0.017054273, -0.044947267, 0.023284586, 0.018206902, -0.011781495, -0.009807367, -0.00978153, -0.020424105, -0.002718908, 0.013914861, -0.0065582814, -0.02769421, 0.03262373, -0.011920519, 0.054165665, -0.007015167, 0.04591113, 0.017223, -0.03465586, -0.033303916, -0.025098423, 0.0065118475, -0.01488927, -0.017779807, -0.042194877, -0.062476087, 0.0045598983, -0.0070982133, 0.047277834, -0.025163805, 0.010040424, 0.04897778, 0.042468797, 0.018503232, -0.0064443895, 0.051471803, -0.011498346, -0.003400151, -0.003862837, -0.01354168, -0.03005602, 0.009065751, -0.017803008, 0.031877104, 0.021646466, 0.008258224, 0.01150362, 0.01114217, 0.03296119, -0.016672524, -0.0017057436, 0.046025027, 0.030004214, 0.0065659266, 0.023363514, 0.013605876, 0.062606856, -0.016370393, -0.06890888, 0.08179133, -0.015002503, -0.03988962, -0.018746834, 0.03108197, 0.031580247, 0.0379408, -0.039124012, -0.009532655, 0.017247256, -0.040256605, 0.06401363, 0.07085559, -0.015917461, 0.03506608, 0.042814955, 0.0060622445, 0.0024339142, -0.020254849, 0.05737837, 0.030934595, -0.0041939677, 0.0038259276, -0.020598633, -0.051043656, 0.023323605, -0.052540068, 0.043295044, 0.03920587, 0.014662013, -0.008553895, 0.039495215, 0.010166443, -0.011638075, -0.034256183, 0.048899744, -0.00010861922, 0.032263074, -0.039024882, 0.03060584, 0.052302793, -0.044738464, -0.039452374, 0.012869797, 0.0638892, -0.0102539705, 0.01453494, -0.004128585, 0.024698088, 0.085861914, 0.028552093, -0.010965269, 0.062352706, -0.023755973, -0.020207921, -0.001570324, 0.01620641, 0.01750035, -0.037374504, -0.018373521, 0.015912188, 0.042351477, 0.033132028, 0.015843643, 0.001678424, 0.04187851, 0.041658636, -0.0019604187, 0.001924564, 0.018906072, -0.04886573, 0.019530205, -0.037044954, -0.0256489, -0.04239208, -0.018148901, 0.021086892, 0.021858828, 0.041722436, 0.04177411, 0.0032026852, 0.021080565, 0.0016958573, 0.0049744835, -0.02146337, 0.03579689, -0.026400534, -0.07197552, -0.03250509, 0.03880343, -0.04301532, -0.0095432, -0.03718785, 0.0009266907, 0.0015660151, -0.018956758, -0.03860148, 0.001632452, 0.045827296, 0.026029594, 0.002904246, -0.019041318, -0.042406842, -0.015436585, -0.03810953, -0.012494638, -0.017166056, 0.011962417, 0.00056682364, 0.024883952, -0.039338086, 0.005302635, -0.0062260963, 0.022757309, 0.0020774745, -0.019055424, 0.060160022, 0.050011244, 0.013616421, -0.016966745, -0.064391166, 0.04676743, -0.037770756, 0.023431169, 0.023740156, 0.034842253, -0.034110654, -0.029249152, -0.05344382, -0.0012114206, 0.041026432, 0.00639377, 0.033201627, 0.0045804624, 0.02801796, 0.001034519, -0.0010661556, -0.035287537, -0.032777958, 0.033484247, 0.0149541255, -0.09193615, -0.055233404, 0.035287537, -0.018911345, -0.044728976, 0.00736528, 0.002047683, -0.03319952, -0.021430349, -0.004290987, -0.004179204, -0.01529791, 0.044023477, -0.04866194, 0.028552093, -0.01681436, -0.050154664, 0.019722825, -0.057526533, 0.08629217, 0.018496608, 0.035483684, -0.03381116, -0.038046256, 0.011405018, -0.007715129, 0.0010645739, 0.022061301, -0.00812746, 0.009931805, -0.00044159516, 0.008108478, -0.031790633, -0.036970083, -0.010660502, 0.031714704, 0.039948672, -0.015730806, 0.033231158, 0.009143787, 0.012256045, 0.018089846, 0.033897635, -0.0018575996, -0.041823674, 0.01309547, 0.0022658445, 0.023858264, 0.015236219, 0.02692025, 0.019661134, 0.021271639, -0.036863044, 0.023480736, -0.013251545, 0.011750122, -0.003268463, 0.024980312, 0.006695241, 0.019066364, -0.01565066, -0.022137757, 0.016327683, -0.04833977, -0.016766116, 0.017476095, 0.018899217, -0.021366615, -0.01617161, 0.0030771932, 0.0016625068, -0.037765745, -0.027947832, -0.042935174, -0.044455316, 0.00047138633, -0.018265957, -0.025676318, 0.0035063974, 0.013707245, 0.0038406912, 0.05295556, 0.011191998, 0.025172241, 0.021779737, -0.02169458, 0.03278824, -0.03224198, 0.025597228, 0.063992545, -0.01407779, 0.025980428, 0.025134277, -0.04118672, 0.026320413, 0.009401363, -0.024944458, 0.04282761, 0.05270669, -0.033638213, -0.0022344715, -0.029274462, 0.019732317, 0.008860376, -0.013888497, 0.002042674, 0.02780794, -0.017813552, -0.0246302, -0.015821498, -0.019083502, -0.018358758, 0.018620947, 0.006962176, 0.005020739, -0.04133647, -0.019140974, 0.06126546, -0.03838266, -0.056645453, 0.055329368, -0.017777698, 0.02777594, 0.05739788, -0.012168253, 0.028350672, 0.0051109036, -0.0036777623, -0.018022355, -0.002719699, -0.01060883, -0.040079437, 0.00045029522, -8.014622e-05, 0.04309468, 0.07107599, 0.026451416, -0.0014579231, -0.052206825, -0.008343116, -0.0077929017, -0.03599541, -0.007272215, -0.0124606285, -0.011136634, 0.013323518, -0.014531776, -0.020506889, -0.020600481, 0.06441647, -0.024920203, -0.021698007, -0.010416315, -0.014554712, -0.005951384, 0.027646823, -0.021879919, 0.011344909, 0.035555396, 0.009595402, -0.03124648, 0.006146477, -0.0081407735, 0.018503759, 0.01911158, -0.034937583, -0.051555116, 0.029239926, -0.027163243, 0.004095894, -0.00866502, 0.030601094, 0.001960946, 0.026624363, 0.0069786534, -0.045259416, -0.004422806, 0.013682858, -0.02092871, 0.025167761, 0.015434476, -0.0011283745, 0.04404035, -0.0069057406, 0.07186374, 0.02201912, -0.0015175054, 0.022113107, -0.009394443, 0.015965972, -0.0055553988, -0.015282092, 0.0045910077, -0.035044465, -0.03746625, 0.03082677, -0.0063579157, -0.032844134, 0.0059150024, 0.015027417, 0.05043939, -0.00693133, -0.040856645, -0.02661751, 0.04158007, -0.020834856, -0.0005826419, 0.017322656, 0.0061185313, 0.010446427, 0.011052798, -0.0078058206, -0.006662748, 0.0016835979, -0.046194542, 0.00041971312, 0.011875943, 0.027091531, -0.014464812, 0.057483822, 0.008108478, -0.06077193, -0.027688412, 0.0069566723, -8.739629e-05, -0.009743681, 0.048897635, 0.009052569, 0.066589914, 0.020482633, -0.028825222, 0.04013006, -0.04249042, 0.029048787, 0.028546184, 0.012101552, -0.035153084, -0.0014596367, 0.0190054, -0.011825259, 0.0066141724, -0.0016714706, -0.01930364, 0.025478985, 0.03781636, -0.038786553, 0.02586614, -0.007863293], [-0.021220079, -0.057564843, -0.042383578, -0.03658656, 0.015575229, 0.016976062, 0.019052587, -0.030141609, 0.022354873, 0.027515892, 0.01347476, 0.013684547, -0.019079136, -0.01489043, -0.023256, 0.0024721513, 0.0060218666, -0.027650196, 0.02090579, 0.044433128, -0.012011458, -0.01187403, -0.018616356, 0.047529437, -0.02428632, 0.031925056, 0.006332122, 0.005915672, 0.0050000027, 0.009585735, -0.0062217624, -0.052882902, 0.010212395, -0.020454982, -0.003857368, -0.016904745, -0.027621046, -0.0020806883, -0.044795442, -0.03341803, -0.06389592, 0.020949516, -0.029472167, 0.02903177, 0.018144727, 0.060152035, -0.024187414, 0.037565608, -0.044463582, -0.04017493, 0.02655285, -0.016219687, -0.044179097, 0.010214477, 0.0073211906, 0.038508087, 0.026834996, 0.030223727, 0.038747028, 0.015875854, 0.03305194, 0.0248756, -0.10469552, -0.008795423, 0.026104387, 0.031875193, -0.0015435327, 0.012692224, -0.0030083305, -0.041443538, -0.027545042, 0.005578087, 0.00252655, -0.032373, 0.06088915, 0.01203176, -0.08338734, -0.015003132, 0.0044539324, 0.0010536184, -0.0058276965, 0.011539308, 0.010657997, -0.055987533, -0.048803773, 0.0062857918, -0.023671536, -0.0124201, 0.045642916, -0.0058395397, -0.046086438, 0.033384193, 0.06527437, -0.0061655417, -0.0026833694, 0.01981313, 0.018756127, 0.057799093, 0.019207096, 0.032914124, 0.07696412, -0.014524084, -0.00021759511, -0.031703297, -0.025921928, 0.030334216, 0.014964609, 0.002242583, 0.011607503, 0.009366481, 0.00372046, -0.017678302, -0.0053836573, -0.06322543, 0.03034593, -0.016054146, 0.030514266, -0.0006600732, -0.03950028, -0.017131971, 0.0099083865, 0.018614924, -0.011405784, 0.04527436, -0.034323417, -0.0013852167, -0.0015111929, -0.02808851, -0.05665073, 0.013643682, 0.02744249, 0.019579347, 0.044918295, -0.034053896, -0.057782438, 0.008639255, 0.00018219688, 0.047053646, -0.020343581, 0.047283728, -0.017513804, 6.8714246e-05, 0.01738054, 0.041422717, 0.035877164, -0.032261338, -0.02112859, -0.07460025, -0.005569628, 0.0114638265, -0.011681942, -0.015743567, -0.006053621, 0.021768881, 0.0147548225, -0.034837082, 0.008605939, 0.017258728, -0.037393045, 0.041755356, -0.016097873, 0.0062300917, 0.005714214, 0.004409164, -0.0004867259, -0.04913277, 0.013520309, 0.012093707, -0.015902143, 0.013987253, 0.07093809, 0.010003389, 0.020324841, 0.036845412, -0.050460726, 0.0014151491, 0.023728538, -0.028612455, 0.03515983, 0.006032408, -0.011028636, 0.0135495905, -0.007958359, 0.001495576, -0.04306926, 0.05725771, -0.0073083555, -0.012693395, 0.02035217, 0.05663303, 0.015737904, -0.05155026, 0.040929224, 0.033753272, -0.02943963, 0.0106808515, -0.027353475, 0.016938843, 0.026845407, 0.03323479, 0.014541913, -0.00043831358, 0.017841758, -0.008633008, -0.047066133, -0.040209286, 0.055192117, 0.008813122, 0.05531705, 0.0051145265, -0.0024138482, 0.030338772, 0.033644997, 0.04674443, 0.03719731, 0.043033857, -0.010681714, -0.0146028185, 0.02782927, 0.0742818, -0.0045873267, 0.00934247, 0.035173364, -0.047580972, -0.051133808, 0.024077054, -0.010078089, 0.004714214, -0.0145518035, 0.017026557, 0.07145032, -0.02192401, 0.008809999, -0.06626396, 0.000924519, -0.0058737667, -0.03661975, 0.02770762, -0.057178583, 0.030768365, -0.02243364, 0.027657483, 0.023778252, -0.029395122, -0.030932862, -0.010424784, -0.026164511, -0.000103071376, -0.017854773, 0.024495589, 0.03744302, 0.008180118, -0.02676732, 0.010118433, -0.0023529422, -0.006545813, -0.0082602855, 0.0028474769, 0.0008709661, 0.02698596, -0.0032587212, -0.05909425, -0.013342504, -0.058958385, 0.04195942, -0.0030752227, 0.014783974, -0.0018844362, 0.009098912, -0.034490388, -0.044697575, -0.071495354, 0.019266017, 0.0107125575, -0.012198861, 0.032218654, 0.03756691, 0.0025801677, 0.029492987, 0.019262895, -0.06460389, -0.0174909, 0.01978762, -0.008335588, 0.01583538, 0.006099951, 0.03388133, -0.05326916, 0.0046173893, -0.025426352, -0.021945158, -0.014916717, 0.0096543515, 0.041678313, 0.037311837, 0.0012451855, 0.054904763, -0.012871427, -0.074933924, -0.020715004, 0.031699914, -0.0062814974, 0.024658004, 0.0051289718, -0.0075252512, -0.007891727, -0.04543261, 0.04706822, 0.02214655, 0.019304018, -0.036793355, -0.015489076, -0.053208057, 0.020400843, 0.0184732, -0.016942844, 0.017578874, 0.09131915, -0.017682467, -0.009882358, -0.01866659, 0.0004838628, -0.01285477, -0.039440155, 0.039394084, 0.029105429, 0.0037079665, 0.0031978153, -0.035691846, -0.02665384, 0.03923349, 0.030044785, -0.012481266, -0.014038528, 0.036080185, 0.0019885486, 0.009878584, 0.02397919, 0.013667368, 0.04992871, -0.0043522925, -0.041971914, -0.0022531245, -0.011861537, 0.042375088, -0.06979493, -4.880273e-05, -0.055431575, -0.010369084, 0.01000365, 0.029110895, -0.016260289, 0.0077116126, 0.015565079, -0.040605955, 0.0013824839, 0.006016141, -0.013276425, -0.02174858, 0.011967732, 0.0019718907, -0.015917044, -0.040595233, 0.043708246, 0.012871427, -0.043873005, 0.06959295, -0.02803333, 0.036595542, -0.012714217, 0.05582304, 0.015504953, -0.027794912, 0.03538992, 0.013786577, 0.047042187, -0.044674672, 0.0009786574, 0.03777826, -0.029214486, 0.009327569, -0.027415944, 0.05413433, 0.0161593, 0.03450184, 0.0430172, 0.031170761, 0.011805056, -0.037163995, 0.03970434, 0.012536185, 0.011893031, 0.035813656, 0.033903193, 0.009736601, 0.007599431, 0.02875483, 0.021205634, 0.020308703, 0.004394328, -0.007332643, 0.03645785, -0.013673614, -0.024657222, -0.009836548, -0.051623143, -0.0064057815, 0.004012081, -0.007054663, 0.028380547, 0.04235322, -0.012793343, -0.0449766, 0.029004179, 0.040770456, -0.023371171, -0.04055494, 0.033732448, -0.0034505483, 0.01305779, 0.020076077, 0.04491205, -0.045351796, 0.047246315, 0.025391996, 0.010827179, -0.0038314702, -0.022586163, -0.060704876, 0.032064047, 0.04962418, 0.03403854, 0.0056673638, 0.05936078, 0.036410224, -0.016520571, 0.022410216, -0.02061577, -0.10080588, -0.01717648, -0.027278515, -0.020685071, -0.0076724077, 0.0052774623, -0.00987455, 0.021825103, -0.04868925, 0.016258206, 0.016110368, -0.075160116, 0.012918669, -0.032728806, -0.01976719, -0.01289583, -0.04555546, 0.025451342, 0.06799379, -0.044282947, -0.02026758, -0.015758468, -0.049259786, -0.005731393, 0.014464089, -0.04222022, -0.03165228, -0.010997175, 0.03897243, -0.04267363, 0.011035664, 0.008363618, 0.028955767, -0.04431288, -0.035448223, -0.028625991, -0.032745462, -0.01726927, 0.027881324, 0.015701987, -0.0023594494, -0.0128578935, 0.015645634, 0.02917232, 0.01683499, 0.030481016, 0.022586163, 0.01808226, -0.026409697, 0.0027957456, -0.020216564, 0.0033671535, -0.019030722, 0.028287886, 0.010324837, 0.062334236, -0.052081235, -0.026207717, 0.011384701, 0.037219178, -0.04867389, 0.025633538, 0.039205644, 0.035707463, -0.039281644, 0.01586154, 0.008927647, -0.06369186, 0.013528377, 0.055617414, -0.015937671, 0.016456021, -0.025048327, -0.055071346, -0.015592864, -0.03150236, 0.029846972, 0.03238523, 0.0023888613, -0.036116622, 0.0068370677, -0.023397721, -0.043882374, 0.02059241, 0.0013930252, 0.007961076, 0.016006775, -0.028954726, 0.039024748, -0.028168676, 0.018829785, 0.018528901, -0.022467086, -0.031180652, -0.04656327, 0.035516154, 0.012324316, -0.00071577344, 0.0209162, 0.0099823065, 0.021696001, 0.017518489, -0.014544882, 0.03038315, 0.002936493, -0.013509638, -0.03940033, -0.016158259, -0.022592932, 0.04292923, 0.020098917, 0.006569498, 0.013008856, 0.00025792245, -0.094925605, -0.061501853, 0.06923689, -0.024877159, -0.035069253, 0.015176347, 0.040437292, 0.0033357644, -0.047058847, 0.014638478, 0.016442485, 0.014135093, -0.00033628335, 0.050565355, 0.017883988, -0.06357558, -0.043302473, -0.004033318, -0.029093195, -0.042473733, -0.0689662, -0.018837074, 0.004650315, -0.014019788, 0.03194744, -0.05148155, 8.953674e-05, -0.022571392, -0.01837169, -0.00516398, 0.0012857893, 0.00022328878, 0.02414577, 0.037457593, -0.0023097359, -0.012719944, 0.049380038, -0.014954719, 0.049888626, 0.0028825824, 0.031543482, 0.011187928, -0.023583302, -0.036514334, -0.020639783, 0.026133277, 0.0030394017, -0.047954213, -0.03537066, -0.07201253, 0.00092360796, -0.023552328, 0.030700693, 0.0009825616, -0.025390435, 0.05576265, -0.0062431055, 0.03164317, 0.007165022, 0.020214481, -0.0011081474, 0.021338377, -0.010418798, -0.0036887056, -0.03392281, 0.033479456, -0.020228015, -0.022301158, 0.02744952, -0.008419187, 0.021456543, 0.041931305, -0.009053102, 0.00041957333, 0.0059010964, 0.046719443, -0.0066413363, -0.0078008887, 0.04862574, -0.012770438, 0.07735975, -0.014019528, -0.07271841, 0.08729208, -0.012943786, -0.048814185, 0.007874548, -0.004751174, 0.018478926, 0.044077065, -0.018784171, 0.0001624155, 0.013945869, 0.0064450842, 0.02929101, 0.007376631, -0.029036976, 0.017844101, 0.0375539, 0.019651754, -0.0061228555, -0.017768359, 0.035597105, 0.02442583, 0.018034887, -0.018785149, 0.011411966, -0.034115583, 0.025233712, -0.047716837, 0.039023444, 0.016932856, 0.047140058, -0.0075460738, 0.067223355, -0.0038022534, -0.010371687, -0.018894335, 0.038116105, 0.02422906, 0.027374819, -0.027155662, -0.0062841005, 0.031102175, -0.059241336, -0.044849582, 0.008165022, 0.039838728, -0.013183765, -0.010044773, 0.044853743, 0.012971375, 0.03832433, 0.0009297246, 0.009712655, 0.043501325, -0.032083306, -0.04540138, -0.036439374, 0.0037126516, 0.026044913, -0.007396932, -0.0023956285, -0.0029239994, 0.050240528, 0.08406875, 0.0016043736, 0.035078883, 0.059348285, 0.07041961, 0.0057170773, 0.010668146, 0.030034373, -0.027794002, 0.008294643, -0.0009318068, -0.04757316, -0.059448235, -0.022699127, 0.020341499, -0.028035413, 0.044701744, 0.050825376, 0.001978658, 0.021086944, -0.015245713, -0.01778658, -0.018248057, 0.008937016, -0.0059286864, -0.044643436, -0.030122867, 0.026120784, -0.01165227, -0.020313585, -0.04500679, 0.0055451775, -0.015230487, -0.028080182, -0.029861547, -0.0038492992, 0.040318605, 0.028473986, 0.0023139003, -0.030497154, -0.05505677, -0.0059770984, 0.012252479, -0.018293606, -0.030669197, 0.014522652, -0.0010681942, 0.0041842815, -0.07564814, -0.032220736, -0.008488422, 0.01728033, -0.003842532, -0.00633941, 0.0534956, 0.018516863, 0.015000008, -0.011236081, -0.0061743916, 0.020919584, -0.04581887, 0.030311313, 0.0040432084, -0.01146695, -0.04566322, -0.015331605, -0.007969812, -0.003383656, 0.020440407, -0.029824065, 0.020950556, 0.012163462, 0.0037198092, -0.0024633016, 0.004129622, -0.021516928, -0.00450703, 0.02110178, -0.011912552, -0.09137954, -0.040703822, 0.0122623695, -0.031352956, -0.054163482, 0.005914891, 0.021298293, -0.035049472, -0.058177542, 0.038519543, -0.02685354, -0.012585118, -0.016221702, -0.045896433, 0.009575747, 0.018089676, -0.02396045, 0.015495632, -0.031662952, 0.04693313, -0.017821327, 0.060493525, -0.023445744, -0.0108277, -0.0002634046, 0.0027657486, 0.014877285, 0.027152538, 0.004825094, 0.0013643943, 0.015504953, 0.0052901506, -0.04812184, -0.02851433, -0.016095255, 0.0057303514, 0.039004706, 0.006328478, 0.020928694, 0.002508851, -0.0062855314, 0.009799068, 0.031696748, -0.01706794, 0.003541907, 0.024699649, 0.000381312, 0.01908382, -0.017896937, -0.017011462, 0.020030463, 0.0054096854, -0.010199771, 0.025326407, 0.037407618, 0.020322759, -0.0012420621, 0.056401905, 0.024154099, -0.00017282674, 0.011899537, 0.009024992, 0.010569501, -0.031331614, -0.023930518, 0.055181704, 0.010254039, 0.0039125476, 0.018663205, 0.008862836, 0.041928183, -0.080444604, -0.01718585, -0.07656016, -0.040884975, -0.013680382, -0.0098657, 0.011541911, 0.02872776, 0.011697429, -0.019079136, 0.031839944, 0.019994805, 0.028105428, 0.007937537, -0.032982446, 0.039502364, -0.04634255, -0.027008863, 0.028072892, 0.0063123405, 0.013197821, 0.025495492, -0.017894857, 0.020312348, 0.00670068, -0.032414384, 0.037424278, 0.02491412, -0.056716323, 0.008873508, -0.0010540088, 0.026624689, -0.004559086, -0.021320157, 0.024735047, 0.022271745, -0.022697564, -0.030460194, -0.0006382096, -0.03466009, -0.0011358673, 0.03789799, -0.004102553, 0.0006733151, -0.020841239, 0.0022436243, 0.069757454, -0.050323814, -0.05484646, 0.06355235, 0.009848749, 0.037420113, 0.05518327, -0.03413953, 0.04053724, -0.01053503, -0.043206684, -0.052991178, -0.01900886, -0.006808697, -0.035427824, 0.016951596, -0.0022865706, 0.052599717, 0.03214421, 0.038056243, -0.002154608, -0.10355445, -0.026777342, -0.0014410511, -0.029287886, -0.056653664, -0.060984932, -0.00029333695, 0.020559095, 0.027714485, -0.004662678, -0.02339746, 0.06673611, -0.0053060935, -0.016396938, 0.005166062, 0.0041613765, -0.032805845, 0.012808294, -0.029826669, 0.06965074, 0.015606463, 0.025762636, -0.047046352, -0.011810521, -0.02176576, 0.023226976, 0.018003132, 0.014209794, -0.0117501365, 0.024512244, -0.0031384712, 0.0005257681, 0.022139523, 0.034459677, -0.04551486, 0.048369624, 0.005231653, -0.038337864, -0.05400107, 0.01740865, -0.044081233, 0.05443834, 0.023149414, -0.0018404487, 0.024383146, -0.036811057, 0.10663202, -0.012868304, 0.041433647, 0.016286317, 0.011133269, 0.030848531, 0.0077751214, -0.025843844, -0.004344614, -0.032857902, -0.027470343, -0.0072071874, -0.017484913, -0.01833343, -0.0045944843, -0.01905467, 0.06512549, -0.016230617, -0.048538808, -0.037699915, 0.048639275, -0.008905783, -0.03290996, -0.034486223, 0.006082252, -0.032862067, 0.00083088275, -0.01398387, -0.006768093, 0.013769919, -0.056513306, 0.012048939, -0.005467988, 0.02288731, -0.015735563, 0.03151368, 0.026674662, -0.03098596, -0.037605435, 0.005706406, 0.02905988, 0.030629896, 0.029141087, 0.0221038, 0.04411871, 0.026506519, -0.0062388764, 0.0031668418, -0.023302197, 0.059387848, 0.054671034, 0.011872988, -0.0028755872, 0.006433111, 0.011049459, -0.040347755, -0.0032196788, -0.00015408649, 0.0013308179, 0.049046356, 0.034800645, -0.039683517, 0.002500782, 0.010193394], [-0.018493349, -0.08306263, -0.033231623, -0.016730646, -0.0206922, 0.049074847, 0.009331631, 0.004908212, 0.030546682, 0.04296478, 0.013042147, 0.043720488, -0.08387296, -0.004027997, -0.007348808, 0.05392278, -0.021248307, -0.016023654, 0.020699082, 0.03776403, -0.014755293, -0.03280178, 0.010989697, 0.0054413294, -0.024911346, 0.02081963, -0.004404193, 0.0006463917, -0.0025568584, -0.010447228, 0.010810953, -0.044765223, -0.010331452, -0.0040217615, 0.024412198, 0.02972986, 0.03925946, -0.006994704, -0.06281015, -0.048159815, -0.09165044, -0.0052043884, -0.04375095, 0.034172762, 0.0015287825, 0.039473537, 0.016243188, 0.053215075, -0.020350946, -0.046752203, 0.032743014, 0.013575199, -0.035491265, 0.028612703, -0.0111978, 0.03748656, 0.0041701095, 0.041516896, 0.027857324, -0.00067808776, 0.00086462684, -0.03579472, -0.051039997, 3.9749968e-05, 0.015107587, 0.011406423, 0.04595616, 0.00064119557, -0.008276308, -0.025077034, -0.04615075, 0.02431659, -0.009558698, -0.035037782, 0.042171344, -0.025753302, -0.06168364, 0.037559304, -0.032250997, -0.04032641, -0.0059845787, 0.029669587, 0.026888646, -0.059542857, -0.049109142, -0.020489162, -0.01235003, -0.009095209, 0.051603254, 0.0073051616, -0.052650787, 0.015655773, 0.01809455, -0.023628108, 0.017407231, 0.018502701, -0.0033628996, 0.05035204, 0.023577707, 0.024995198, 0.006346745, -0.052458532, -0.019447349, 0.018697554, -0.0045600752, -0.015936881, 0.048175406, -0.029845992, -0.004774673, -0.01355448, -0.020371469, 0.015871929, -0.018022064, -0.056663193, 0.009509856, -0.0322988, 0.026348254, -0.016990125, -0.048453912, -0.010244581, -0.0133993765, 0.02418461, -0.0011708054, 0.041110303, 0.004499281, 0.013883911, 0.016580673, 0.0013769597, -0.065354146, -0.0066229166, 0.026734842, 0.04871424, 0.037426285, -0.012595284, -0.0071487594, 0.018040251, 0.012373932, 0.07094513, -0.037083343, 0.057195272, -0.025204077, 0.0018913711, 0.0054932903, 0.02949188, 0.012643868, -0.016793713, -0.004327291, -0.04797016, -0.008404911, -0.027975667, 0.013875597, 0.0042566243, 0.010670659, 0.017832927, -0.01606873, -0.056953136, 0.018171063, 0.018007517, -0.024589904, 0.025153546, -0.021088788, -0.018336946, 0.031470545, -0.008253705, -0.04004303, -0.040144093, 0.026953729, -0.008684719, -0.008897758, 0.047404826, 0.031762566, 0.013331049, 0.007328024, 0.031622272, -0.049507156, -0.03625145, -0.0011322247, -0.010871292, 0.015081607, 0.019078948, 0.008188104, -0.014246077, -0.024583668, -0.008901136, -0.042491417, -0.00041393228, -0.038229857, -0.036051404, -0.0072468356, 0.02680226, 0.05070122, -0.017852673, 0.004322095, -0.0008635876, -0.04079542, 0.006885838, -0.0012803127, -0.0056291022, 0.036608424, 0.043427754, 0.023448845, 0.017149124, 0.016973497, -0.0102429725, -0.015239048, -0.061978776, 0.031902857, 0.0014600969, 0.041376993, -0.04831518, -0.012781304, 0.053985395, 0.029662507, 0.05775385, 0.02765195, 0.03551361, 0.023685493, -0.035693914, 0.03475784, 0.06881265, -0.023235936, 0.0075454796, 0.06030772, -0.010806033, -0.032930642, 0.0047710356, -0.024444412, 0.015440135, 0.016181355, 0.02481093, 0.036438122, 0.02276764, -0.030902093, -0.03576562, -0.0036510867, -0.018021544, -0.042678736, 0.0399521, -0.033006504, 0.06076809, -0.039068244, 0.032646805, 0.045584124, -0.014588239, -0.035998404, -0.029551893, -0.054292746, 0.011131551, -0.023300108, 0.03835794, 0.06329598, -0.048764125, 0.0006256074, 0.014985479, 0.0009076893, -0.02708298, -0.00046576312, 0.0026842922, -0.018566614, 0.049799178, 0.015879203, -0.043240987, -0.0038450952, -0.016743701, 0.05639196, 0.038433805, 0.026304608, -0.025102627, 0.011533727, -0.03527303, -0.037274558, -0.09656385, 0.0183728, 0.018618574, 0.0052729766, 0.048743337, 0.02215814, 0.021209337, 0.053960193, 0.012405109, -0.06488338, -0.007405965, -0.0044735605, 0.022132939, 0.016698625, -0.02503657, 0.017175104, -0.052717295, -0.017546104, -0.06448952, -0.012150241, 0.014582263, 0.009733287, 0.02786343, 0.032043155, -0.024987923, 0.06278105, 0.026075982, -0.05989827, -0.04051691, 0.013301951, -0.0060907085, -0.0014070971, -0.026878254, -0.027309658, -0.04266185, -0.07460732, 0.038208812, 0.01805428, 0.0069975536, -0.026701588, 0.0006495093, -0.052372277, -0.01926318, 0.007854557, -0.0013322736, 0.03316213, 0.0706292, -0.024294766, -0.018243482, -0.029708555, -0.019528925, 0.009492189, -0.06730372, 0.03342323, 0.07068324, 0.035280243, 0.004135036, -0.04133581, -0.023251396, 0.035813943, 0.037266247, -0.013549284, 0.0061233137, 0.030114368, 0.019434879, 0.012855088, 0.0120969815, 0.03807995, 0.05441953, 0.03365939, -0.059264347, -0.039231144, -0.008012867, 0.013085794, -0.024106668, -0.0209672, -0.059638467, 0.026372157, 0.008992586, 0.0033816053, -0.020122578, -0.009717958, 0.01956426, -0.0016087047, -0.007354134, 0.01469372, -0.017065987, -0.00045725456, -0.009260022, 0.012968363, -0.02047578, -0.027105842, 0.033057168, 0.006185407, -0.009850718, 0.06282833, 0.013047441, 0.044815104, -0.035430994, 0.047604356, -0.013059294, -0.013427176, 0.0018496728, -0.008451935, 0.04494851, -0.04416248, -0.0027991252, 0.056084093, 0.007389467, -0.0071497983, -0.012286638, 0.038775187, 0.036804836, 0.016782021, 0.036118954, 0.0128384605, 0.009178866, -0.01635984, 0.03354586, 0.0032828797, 0.0054288586, 0.011067638, 0.021883268, 0.008714856, -0.008053396, 0.027418647, 0.023448845, 0.020705123, 0.00344188, -0.009745757, -0.0051259273, -0.012223246, -0.021816498, -0.01976327, -0.06863391, -0.010023228, 0.0130696865, 0.0034426593, 0.015705395, -0.004851055, -0.017450497, 0.0029337038, 0.05581831, 0.019464431, -0.024454806, -0.04095338, 0.023901423, 0.0018898529, 0.00824721, 0.024052627, 0.040533535, -0.07099916, 0.03307743, 0.009317666, -0.03435904, -0.015556527, -0.023505246, -0.028998254, 0.01592181, 0.021125162, 0.012931472, 0.010293294, 0.08322448, 0.05382094, -0.014239322, -0.013186598, -0.026707824, -0.05658733, -0.017480893, -0.028391352, -0.012657637, -0.026969185, -0.00025577677, -0.004757006, 0.03353131, -0.049599648, -0.009633263, 0.054858074, -0.025617685, 0.0077166907, -0.036118954, -0.0291188, -0.065670066, -0.011679477, 0.03722156, 0.06305956, -0.06782956, -0.0031714241, -0.054791566, -0.023170823, -0.023189042, 0.01966922, -0.008257602, -0.0010953324, -0.00757146, 0.038021367, -0.05139957, 0.009060915, 0.047721658, 0.023735669, -0.05582039, 0.0008547543, -0.031247374, -0.0366926, -0.010412933, 0.023686826, 0.030198546, 0.020442396, 0.0037146737, 0.019361094, 0.009913558, 0.03819686, 0.02922688, 0.034824092, 0.018270437, -0.0028557626, 0.0034790318, -0.008314239, -0.0011524893, 0.032903623, 0.0011649599, 0.025353726, 0.05169951, -0.033048853, -0.021786101, 0.02684292, 0.040809967, -0.054063335, -0.007259436, 0.06040333, 0.01436299, -0.058740582, 0.045193378, 0.005806094, -0.06461839, 0.020058276, 0.04190738, -0.0034190172, -0.01577736, -0.015392331, -0.03685368, -0.015879203, -0.05424728, 0.03997652, 0.034816295, -0.037836514, -0.024032203, -0.02182949, -0.02876339, -0.025373211, -0.026415804, -0.0028266646, 0.03336422, 0.011229755, -0.045032687, 0.04693926, -0.044097003, 0.021082813, -0.025435826, -0.016070418, -0.034587875, -0.025754863, 0.0066642254, 0.0037245462, -0.042875405, 0.03298468, 0.0306823, -0.0016203958, -0.022826355, -0.016858922, 0.010145076, 0.012309501, 0.014738666, -0.030494722, -0.019968515, 0.0040895706, 0.008571444, -0.011430324, -0.026689118, 0.024984643, 0.020821711, -0.03780703, -0.04936894, 0.033663288, -0.0037292228, -0.0104642445, 0.015430263, 0.07198304, -0.019861475, -0.05085918, 0.00027435273, 0.021977609, -0.006303358, 0.03748864, 0.037903287, -0.0138995, -0.06495093, -0.03705087, 0.035851873, -0.035759386, -0.0017951139, -0.029821312, -0.036077905, 0.031281408, -0.010269522, 0.018431516, -0.024914138, 0.0010267444, 0.012246109, 0.018894745, -0.02848644, -0.0016398812, -0.019791847, 0.016952192, 0.044753272, -0.01974924, -0.018537516, 0.01486545, -0.0012039305, 0.03284231, -0.0019448907, 0.05021902, 0.025333462, -0.050040275, -0.015996374, -0.02530166, 0.0021807924, -0.00032007816, -0.04022697, -0.032718644, -0.059243564, 0.004027997, -0.00089996017, -0.0018814986, -0.041038077, -0.0027261206, 0.020011123, 0.030674051, -0.0074054454, 0.0030054096, 0.0073306705, -0.04214302, -0.021668604, -0.02111295, -0.022375338, -0.026869942, 0.032770604, -0.060860578, 0.00469933, 0.0066904654, 0.010111561, -0.0044270554, 0.006861741, -0.011857183, -0.018715221, 0.005255829, 0.069174305, 0.046267927, 0.0022141123, 0.011676619, 0.008921141, 0.057653826, -0.009167174, -0.06526893, 0.09603385, -0.0028160126, -0.034187835, 0.015361675, 0.02012232, 0.0019204692, 0.022048501, -0.009971526, 0.0052189375, 0.013773754, -0.012185834, 0.00025149, -0.0013135676, -0.03617442, -0.00023901943, 0.043389298, 0.00086982286, -0.0022530179, -0.025287606, 0.029195704, -0.023748139, -0.008973621, -0.0008833327, -0.016131733, -0.02013583, 0.002598297, -0.032635506, 0.048597846, 0.049093552, 0.033217464, 0.03218572, 0.010243151, -0.020462142, -0.004348075, -0.040912982, 0.036764305, -0.0069850828, 0.030271811, -0.05493498, 0.0057759564, 0.017335664, -0.008181739, -0.038393795, 0.0151642235, 0.044756908, -0.034777846, -0.006921171, 0.011882383, -0.0055916584, 0.081191786, 0.053070627, 0.0035322914, 0.03369966, -0.026839804, -0.070550226, -0.014845185, 0.03235284, -0.021476936, -0.011243267, 0.0028035422, -0.029086586, 0.025444139, 0.041943755, 0.05140399, 0.01586985, -0.002088822, 0.04484836, 0.009679248, 0.010785491, -0.002434361, -0.018973466, 0.018719183, 0.0035187816, -0.010219639, -0.07877353, -0.016739024, 0.0143998815, 0.02670003, 0.048136435, 0.038033187, -0.02487309, 0.032144476, -0.015054068, -0.003357184, -0.003293272, 0.0023652532, -0.003240402, -0.07040057, -0.015392851, 0.01603197, -0.025018059, -0.010427482, -0.024371147, -0.008305406, 0.0002026469, 0.0050770845, -0.04852718, -0.0022654885, 0.022845581, 0.0139143085, -0.0038467676, -0.043160673, -0.035152484, 0.020717788, -0.011491119, 0.00525531, -0.03987052, 0.011047683, 0.019501908, 0.03404416, -0.03908487, -0.036457736, -0.026541028, 0.0037494872, 0.01933771, -0.013254147, 0.062772736, 0.04295803, -0.024783196, -0.015928047, -0.068565324, 0.06405305, -0.038234793, 0.010694561, 0.000667176, 0.015792688, -0.08478747, -0.035020765, 0.022976521, -0.0059860074, -0.024849707, 0.012858076, 0.03514131, 0.008415563, 0.0013099303, -0.0014610064, -0.01634789, 0.012592687, -0.014303755, 0.0071872105, -0.014642538, -0.056890782, -0.04497722, -0.008835405, -0.012978755, -0.036921486, 0.010184825, 0.045323282, -0.021327807, -0.03028584, 0.053340822, -0.027431117, -0.021548122, 0.0398952, -0.044998005, 0.00019745083, -0.009138466, -0.022787904, 0.0505391, -0.062076464, 0.02795488, -0.018091172, 0.059443094, -0.033744346, -0.007859322, -0.020280277, -0.014064215, 0.030938987, 0.018030183, 0.0007735656, -0.0053987214, 0.013767909, 0.00779619, -0.016789556, -0.097436786, -0.00048375453, 0.00655225, -0.008467523, -0.0036081544, 0.038351186, -0.015083912, 0.01941877, 0.004779349, 0.015602772, 0.004785065, -0.011781579, 0.025396075, 0.009012071, -0.00040789184, -0.013200108, 0.013185559, 0.0049780994, -0.033616524, -0.019155849, 0.018532319, 0.022898322, 0.023489114, 0.01777811, 0.022604743, 0.027827578, -0.007273205, -0.0025647823, 0.0013525382, 0.05332108, -0.08112527, 0.0008411471, 0.08263837, 0.02412966, 0.0034824093, -0.0042628595, -0.047608644, 0.032134604, -0.02430308, 0.0047279084, -0.049115375, -0.037421092, -0.02133716, 0.0010397345, 0.032207347, 0.032319583, 0.02263826, -0.024298208, 0.035930336, 0.039228283, 0.01597689, 0.020972395, -0.011703637, 0.06089799, -0.007937264, 0.007638514, 0.040212423, -0.030850133, 0.02604974, 0.034505054, -0.04107757, 0.009896963, 0.029450312, -0.04057095, 0.0143625345, 0.04012409, -0.044862907, -0.0011886021, -0.03619066, 0.0016419597, -0.0075893863, -0.0150722535, 0.026855651, 0.022470426, -0.0055504465, -0.045997214, -0.03536968, -0.026168471, -0.009570033, 0.0013857931, 0.006787632, 0.0058983243, -0.018490622, 0.0048361165, 0.01415047, -0.027287705, -0.05515737, 0.059214465, 0.004951859, 0.05116263, 0.027969753, -0.037099972, 0.05220236, 0.04145636, -0.047095142, -0.015058224, -0.014289205, -0.04291698, -0.027644156, 0.03675911, 0.0056606033, 0.042718228, 0.094314985, 0.025816176, 0.013318578, -0.06720395, -0.006554913, -0.0040724883, -0.028667262, -0.033341132, -0.0217357, 0.006623956, -0.006422348, -0.060735878, -0.017600209, -0.050028846, 0.05486639, -0.012352629, -0.010638833, 0.0052814363, -0.025406338, -0.008436346, 0.00040945064, -0.011048284, 0.047171004, 0.0441313, 0.045804437, -0.035216916, 0.0027796403, -0.05277653, 0.001158205, -0.0126662105, 0.016500654, -0.019412015, 0.028017234, 0.01156867, -0.029301703, 0.029805463, 0.047750887, -0.029351586, 0.016425312, -0.021291956, -0.050572354, -0.012104775, 0.00044322517, -0.038843777, 0.04823204, 0.016142124, -0.0313739, 0.0155954985, -0.03391374, 0.05776372, 0.020959927, 0.011839775, 0.036155324, -0.022720356, 0.0035868504, 0.028614784, -0.0062477277, -0.008305925, -0.017088851, -0.028521253, 0.013624887, -0.019906161, 0.0041134073, 0.045803398, 0.029328462, 0.052092988, 0.023340248, -0.029131273, -0.019612065, 0.05592269, -0.0066572106, -0.0004193232, -0.040712286, -0.0014403518, -0.01849075, -0.021941984, 0.029865999, -0.015118498, 0.012478373, -0.07949163, -0.03330086, 0.01468073, 0.061812505, 0.012201812, 0.021323277, -0.01074964, -0.0477883, -0.0358976, 0.025820334, 0.0037188304, 0.053714942, 0.033269428, 0.03253366, 0.016832164, 0.0325638, -0.017676005, 0.01563395, -0.04864149, 0.00406385, 0.052077137, -0.0033545855, 0.030991467, 0.00050505844, -0.0067907497, 0.018420083, -0.011248462, -0.0014133323, -0.040222812, 0.055020195, 0.04106607, -0.040620834, 0.000348137, -0.009509336], [0.0055632037, -0.08432835, -0.020957272, -0.05469837, 0.004417057, -0.0052497173, 0.011304152, -0.0058630207, 0.015993446, 0.024951452, 0.018147323, 0.0326187, -0.05813885, -0.048542686, -0.040912434, 0.03364993, -0.01986934, 0.0062574553, 0.020413568, 0.0433554, -0.016798915, -0.018435711, -0.017078046, 0.019686755, -0.032499693, 0.049686532, 0.020215392, 0.010167902, -0.009104818, 0.015874438, -0.025180496, -0.04529348, 0.031739686, -0.0062680533, 0.015508734, 0.04277722, 0.020227779, 0.023400495, -0.05089627, -0.041168325, -0.03182549, 0.044287026, -0.0331596, 0.013304291, 0.010145748, 0.040745415, 0.014229278, 0.02375292, -0.02112046, -0.01863778, 0.010138215, -0.0013282328, -0.0019608098, 0.04481822, -0.028951952, 0.020544833, 0.044499505, -0.024756053, 0.029397847, 0.0027907, -0.006468272, 0.025803559, -0.05236343, 0.010805651, 0.048000768, 0.033845037, 0.006367141, 0.039191682, -0.018932873, -0.04035315, -0.018558996, 0.010487957, -0.014337049, 0.02367503, 0.020309882, -0.009384715, -0.04564361, 0.008391924, 0.002199335, -0.053964917, -0.015510777, -0.0115406355, 0.00046172756, -0.020308862, -0.04135935, 0.022312576, 0.0077709663, -0.022620054, 0.031215386, 0.016013365, -0.06469498, -0.0016722301, 0.008025836, -0.004880253, -0.01942231, 0.0026794497, 0.05327437, 0.05541139, 0.03446612, 0.03060937, 0.026755681, -0.07382738, -0.016076252, -0.030614989, -0.010960602, 0.013851827, 0.03434354, -0.016839392, -0.002413982, -0.020408459, -0.011116576, 0.039581392, -0.0018264798, -0.049935877, -0.018174903, -0.00090324815, 0.044749778, -0.025174366, -0.017903594, -0.015917342, -0.027267464, 0.023750367, 0.020458004, -0.00011849646, 0.0045207418, -0.0360883, 0.004025815, 0.004323333, -0.057269536, -0.03465263, 0.048121817, -0.03239167, 0.073132746, -0.027224049, -0.04146661, -0.016132884, -0.026187206, 0.01681475, -0.046860237, 0.029144572, -0.021849826, 0.021969855, 0.007020404, -0.0021036312, -0.021255812, -0.015820267, -0.00962375, -0.037833057, -0.0075939884, -0.027304111, -0.019429332, 0.007999022, 0.018828677, 0.0091525735, -0.011645341, -0.016475093, -0.0023178314, 0.002344391, -0.019885952, 0.010239728, -0.03171823, -0.024874039, 0.028487159, -3.0773324e-05, -0.03658731, -0.031071607, 0.002636546, -0.0136896605, 0.010430752, 0.05058573, 0.06717523, 0.029741587, 0.027415585, 0.02967672, -0.071779735, -0.02489498, -0.01661453, -0.012481456, 0.0054600304, 0.02109773, -0.01672128, 0.034485023, -0.018648252, -0.010386316, -0.025756633, 0.025787918, -0.0025885345, -0.015915299, -0.0036789444, 0.0069245086, 0.05632412, -0.012157123, 0.0078000803, -0.007614419, -0.015560832, 0.036123797, -0.038971033, -0.0031330055, 0.022152709, 0.06755524, -0.002528265, 0.009994051, 0.021525493, -0.03974943, -0.012303201, -0.039359465, 0.042827275, -0.023242671, 0.06517765, -0.015941858, 0.010090841, 0.02498845, 0.025692279, 0.04023874, 0.027556555, 0.02306799, 0.018748999, -0.039159566, 0.02987745, 0.031989958, -0.0474517, 0.011243563, 0.029077599, -0.061429173, -0.032372005, 0.0073485677, -0.03852565, 0.009827034, -0.019088143, 0.012311372, 0.08285558, -0.019307515, -0.027249588, -0.031567812, -0.011682753, -0.02911795, -0.0498298, 0.028509632, -0.006179692, 0.038099162, -0.02598903, 0.022075072, -0.0049704667, -0.01988059, -0.022311045, 0.017416935, -0.022623373, 0.048765372, -0.033044167, 0.030000545, 0.039747387, -0.010219809, -0.00940738, 0.028220799, -0.019546807, 0.003906808, -0.028817112, 0.039228167, 0.0019963076, 0.012049161, 0.003208087, -0.029972453, 0.046528243, -0.009345131, 0.057687342, 0.028481033, -0.0044722194, -0.007881546, 0.015409551, -0.010782155, -0.040902216, -0.04452632, 0.039737172, 0.02889066, -0.020114262, 0.022377443, 0.020224202, -0.008261233, 0.036013726, 0.03292056, -0.057378843, 0.0047433055, 0.047680523, -0.021147596, -0.0034226065, 0.0057307337, -0.0031074674, -0.06710168, -0.019853264, -0.06356134, -0.022789625, 0.00088259426, 0.0071409433, 0.037706386, 0.0466876, -0.019432398, 0.008913794, 0.004374281, -0.054205995, 0.025252003, 0.039994594, -0.028839584, -0.036195558, -0.01318273, -0.022285506, -0.035476405, -0.06133213, 0.020310905, 0.062155478, -0.01778264, -0.03567803, 0.0064360937, -0.046240684, 0.009128313, 0.025939487, -0.013882472, 0.04283851, 0.09070903, -0.05652281, -0.04371906, -0.03439666, 0.0038771834, 0.051317137, -0.051513266, 0.07086497, 0.009052721, 0.045179836, 0.006670533, -0.044380493, -0.0130246505, 0.024628874, 0.0151644815, -0.009108393, -0.009362241, 0.04122323, 0.015729766, -0.022193057, 0.01920115, 0.01257186, 0.0071240887, 0.025181519, -0.064374216, 0.00982499, 0.008304967, 0.004900237, -0.07791703, -0.005181155, -0.03580125, 0.0047007846, 0.0053614536, 0.055354185, -0.027933495, 0.022395829, 0.01924597, -0.028509123, -0.050759386, 0.010404703, -0.013519066, -0.013706771, 0.03641825, 0.004885425, -0.017078811, -0.045225803, 0.04990999, -0.012239802, -0.017035654, 0.06568176, 0.0030588172, 0.014924424, -0.007162906, 0.037745208, 0.035663344, 0.009521343, 0.0016758054, 0.0077385334, 0.034858897, -0.012570838, -0.01787662, 0.024963677, -0.0026053898, -0.016440362, -0.019659493, 0.05786304, 0.018144257, 0.028643453, 0.023011679, 0.01635069, 0.043533146, -0.027613759, 0.020237867, 0.019014595, -0.027810147, 0.004045224, 0.040900685, 0.0321156, 0.03033458, 0.0288498, 0.016029455, 0.044104174, 0.005388524, 0.020121925, 0.03380622, 0.0023714614, -0.040331185, 0.009743269, -0.07232165, -0.029909117, -0.0024210052, 0.006358969, 0.016507156, 0.0041289884, 0.0034113699, -0.0248199, 0.025635073, 0.035904426, -0.044166613, -0.033657078, 0.045837186, 0.03461737, 0.0030954643, 0.030361908, 0.05521117, -0.049159683, 0.030806012, -0.0128236655, -0.021708347, -0.025068128, -0.039577816, -0.058253266, 0.05105955, 0.026191803, 0.030335845, 0.013383459, 0.07441168, 0.010588322, 0.003812317, -0.0024683462, 0.01806458, -0.06342829, -0.033122823, -0.025192242, -0.024381667, 0.010925504, 0.04440757, -0.029250234, 0.02599516, -0.037497487, 0.015754154, 0.018527137, -0.065557145, -0.019702077, -0.0052301884, -0.013372094, -0.048477307, -0.051686924, 0.029172601, 0.04175059, -0.06478283, -0.044347554, -0.04031331, -0.036690995, -0.021282881, 0.029071469, -0.048384603, 0.04284004, 0.032165658, 0.025837846, -0.03218098, 0.013714942, 0.03237609, 0.013587508, -0.029745929, -0.017810222, -0.014369483, -0.021346472, 0.0032402652, 0.03880759, 0.02717144, -0.00632079, 0.024496077, 0.013714942, -0.0027386982, -0.0008805512, 0.03085527, 0.016531788, 0.0015179805, -0.02562588, -0.012937565, 0.0012816259, 0.0017575271, 0.008291687, 0.018143237, 0.03735754, 0.053329535, -0.04095074, 0.00557061, -0.008313649, 0.022305936, -0.04410111, 0.009931165, 0.05702131, 0.007123833, -0.076957315, 0.03046789, 0.0069167195, -0.04437488, 0.013430837, 0.047831703, -0.024486884, 0.009846442, -0.055519674, -0.03287536, -0.002994589, -0.027424777, -0.0076869465, 0.06378378, 0.00787197, -0.022827262, -0.01659908, -0.026618926, 0.004338911, 0.0018949218, -0.030854024, 0.033373095, -0.0075153313, -0.028388072, 0.04461187, -0.037044954, -0.022391744, -0.018137109, -0.031462852, -0.0808391, -0.029309483, 0.020083105, 0.030041914, 0.010931745, 0.04657728, -0.009045698, 0.022430561, 0.035818618, -0.030714076, 0.008227458, -0.00795152, 0.003671794, -0.034233216, 0.0047780373, -0.031380106, 0.049662527, -0.019952096, -0.021738993, 0.014784603, 0.004800128, -0.035311945, -0.042533077, 0.07317954, 0.018087182, -0.014479679, 0.021412106, 0.027991721, 0.016953165, -0.010815355, 0.00011492113, 0.00054064003, 0.012010024, 0.022662062, 0.016833646, -0.012460004, -0.09171549, -0.035622485, 0.04525594, 0.007404879, -0.030999081, -0.068861246, -0.0017792345, 0.00057945785, -0.022532715, -0.00549987, -0.05172983, -0.020148484, 0.0076031815, -0.055437952, 0.03837909, -0.031122684, -0.03220652, -0.010345966, 0.0062680533, 0.0071230666, 0.0007263015, 0.047231052, -0.02310119, 0.019697992, -0.052061826, 0.04093848, 0.049263112, -0.03048883, -0.008352468, -0.0274122, 0.013908521, 0.0033303504, -0.011342077, -0.04777399, -0.048799038, 0.009073151, -0.0031769308, 0.000652752, -0.009070725, 0.025559481, 0.054091588, 0.016675312, 0.016672246, -0.001417999, 0.008019962, -0.04006285, -0.021524215, -0.010291825, 0.02084184, -0.03163651, -0.0368123, -0.0070689265, 0.024852332, 0.0073091118, -0.016335145, 0.013579081, 0.013087728, -0.012360406, -0.016676333, -0.033822566, 0.08656855, 0.023369085, -0.012083574, 0.06542639, -0.007536783, 0.080634795, -0.021588827, -0.041241873, 0.08737376, -0.0017996649, -0.031247308, -0.011620314, 0.024239674, 0.013797175, 0.016783591, 0.028008066, 0.014387247, 0.035943244, -0.004357809, 0.01859628, 0.019848155, -0.023855584, 0.008123391, 0.041793495, -0.0015190019, 0.004929861, -0.06501369, 0.011334798, -0.021377372, -0.018970732, 0.0065559945, 0.03414332, -0.04346011, 0.016368344, -0.041452818, 0.008153782, 0.016015919, 0.02108841, 0.006263329, 0.07565794, 0.027155098, -0.019875737, -0.012737348, 0.038259033, -0.013589806, 0.037785046, -0.0048246444, 0.017744333, 0.0064003407, -0.032989513, 0.018712256, 0.040492076, 0.03685444, -0.052024025, 0.0032370728, 0.028706787, 0.026358565, 0.038471, 0.011971206, 0.008503397, 0.03617002, -0.05637162, -0.07318586, -0.01503296, -0.0028449364, -0.013394696, 0.01879701, 0.00095920835, -0.01361279, 0.0046193185, 0.032266278, 0.04147018, 0.015776373, 0.03416375, 0.03289349, 0.014848831, -0.0027764942, 0.006899354, -0.05563102, 0.021456668, -0.012339976, -0.03208751, -0.07220724, -0.016485818, 0.01688217, -0.014053065, 0.027742472, 0.028829627, -0.013161278, 0.023736576, -0.007495922, 0.008649986, 0.005821138, 0.014930553, -0.017943019, -0.082933724, -0.023326436, 0.052011773, -0.028264405, -0.025576847, -0.03500038, -0.011587115, -0.029658077, -0.023775393, -0.029906053, -0.0019123993, 0.025550285, 0.023977017, -0.003213067, -0.05050605, -0.054718804, 0.02418298, 0.0068932245, -0.013473864, -0.021039251, -0.015653279, 0.013886176, 0.024394948, -0.026412452, -0.024992026, -0.011381534, 0.009646224, 0.016363235, -0.0063214917, 0.04035213, 0.007838132, -0.014865942, -0.014000968, -0.03815075, 0.019068735, -0.06078281, 0.0016824453, 0.046605878, 0.0034910485, -0.062064562, -0.0066204784, -0.0021809477, -0.002580602, 0.008969466, -0.03526291, 0.033091154, -0.0073222634, -0.0067105, -0.0050034104, -0.021104626, -0.01950186, -0.0769328, 0.0426886, -0.012712831, -0.046899058, -0.03340272, -0.00150087, -0.062901184, -0.046168156, 0.013562735, 0.019762348, -0.016651817, -0.035140328, 0.05707034, -0.032538, -0.0074989866, 0.04823725, -0.078939065, -0.0007738023, -0.016797127, -0.044368748, 0.024004724, -0.021725712, 0.06984753, 0.016944993, 0.064515695, -0.05493332, -0.025111033, 0.0069051, -0.01975009, -0.008932181, 0.033835847, 0.008978533, -0.0076437877, 0.00019332286, 0.00471665, -0.012995026, -0.09894045, -0.02521893, 0.03163038, -0.03708326, 0.008677311, 0.029164428, -0.0022391742, -0.024417387, -0.001474438, 0.016856631, 0.028543344, -0.004403778, 0.03974126, -0.020892661, 0.020573435, -0.021226186, -0.0014421962, 0.0019909446, 0.0017953234, -0.011171866, 0.007244628, 0.058234874, 0.012580845, 0.03514237, 0.07195799, 0.02122491, 0.014709905, -0.019226242, 0.019895656, 0.021672336, -0.055037513, -0.043222602, 0.018106973, -0.0034077945, -0.0106973685, 0.0076762205, -0.0029672636, -0.0138099445, -0.05156639, 0.002376186, -0.01628062, -0.04501435, -0.047819957, -0.021037461, 0.0118235955, 0.005531633, -0.0023614375, -0.013696556, 0.066434115, 0.011559533, -0.006063749, 0.04162839, -0.046465933, 0.043613844, 0.005655652, -0.011876204, 0.016085383, -0.034280207, -0.0116244, 0.017639115, -0.03394727, 0.034087136, 0.028984385, -0.0030492407, -0.008052907, 0.025627922, -0.0640389, 0.011814723, -0.0056528426, 0.03796075, 0.0030063365, -0.018078882, 0.025989287, 0.021923631, -0.021125058, -0.059066396, -0.027241927, -0.014717821, -0.02563405, 0.054589067, 0.007528611, -0.020148484, -0.051283423, 0.004951313, 0.016714128, -0.046362247, -0.040517613, 0.057901863, -0.01869537, 0.020928415, 0.07233494, -0.028664906, 0.05385255, 0.020474348, -0.026462505, -0.022119988, -0.005572733, -0.020874528, -0.030038852, -0.0020725387, 0.001787662, 0.040428743, 0.03692799, 0.035152584, 0.005715155, -0.091058396, -0.00018789603, -0.032278538, -0.0704441, -0.023595097, -0.0090902615, -0.0051249717, 0.011764859, 0.0198941, 0.004922838, -0.03579014, 0.02450425, 0.015124641, -0.00848884, -0.027790036, -0.013024394, -0.03409429, 0.03436397, -0.010043596, 0.052150186, 0.03480297, 0.023865798, -0.011935453, 0.0025068128, -0.053445987, -0.0013581123, 0.021696087, 0.023626762, -0.026350904, 0.020269021, -0.013806369, 0.06658888, -0.015915172, 0.05314872, -0.015664006, 0.050087225, 0.020111708, -0.002830635, 0.0057597193, 0.0031073396, -0.017530324, 0.008739369, -0.021586273, -0.0024506291, 0.04017566, -0.011964822, 0.08268805, -0.017490996, -0.014308255, 0.022099588, 0.005327999, 0.030480275, 0.035083123, -0.0067618317, -0.012212285, -0.013398782, -0.006296401, 0.0008602485, 0.006527392, -0.036729302, 0.03280462, 0.04409294, 0.07664467, -0.0064866594, -0.0685788, -0.055028833, 0.0453157, -0.016648753, -0.00020430423, -0.004664393, -0.007153712, -0.011435929, -0.0032235377, 0.007529632, -0.008529701, -0.0027019235, -0.047891974, -0.0012356575, 0.004533, 0.047085993, 0.007814126, 0.056311354, -0.0005006731, -0.05181768, 0.0036172064, 0.042989694, 0.0006731824, 0.0350821, 0.0013092151, 0.022184374, 0.020844394, 0.002130893, -0.019274062, -0.012751649, -0.016430655, 0.03876877, 0.047543123, 0.024361748, -0.039252076, 0.0073525896, 0.022405278, -0.00972769, -0.008122114, -0.021500977, 0.0010259902, 0.03553055, 0.04461187, -0.018114123, 0.0028906495, 0.02199897], [0.011704185, -0.091644935, -0.017526777, -0.022783156, 0.039992064, 0.03401444, 0.0063755563, -0.03858944, 0.03846986, 0.025906274, -0.005746381, 0.022964232, -0.07799242, -0.038353898, -0.036299676, 0.017904555, 0.01760333, -0.025859166, 0.025558848, 0.015724862, -0.019406151, -0.0007863564, -0.026870195, 0.01136593, -0.02558931, 0.062715545, 0.007984733, 0.023588877, -0.0024903738, 0.013806533, -0.018000131, -0.0878871, -0.01156569, -0.015503133, -0.012944078, -0.0031586748, -0.0020885326, 0.02997893, -0.048901763, -0.03922088, -0.035071705, 0.010792115, -0.021942783, 0.03275292, 0.01808982, 0.024105037, 0.026413603, 0.004686883, -0.00821688, -0.03448825, 0.05478041, -0.020092402, -0.020195225, 0.0034747347, 0.007849068, 0.018449647, 0.017142206, -0.024265615, 0.0033110639, -0.021363888, 0.013859077, 0.016219959, -0.069357894, -0.013989533, 0.03354392, 0.021183606, -0.00031504082, 0.010626002, -0.024326768, -0.035507657, -0.002389871, 0.012412517, 0.004688695, -0.023250962, 0.039428342, 0.007129752, -0.06929267, -0.0050028297, -0.012604973, -0.008675287, -0.009881093, 0.051380187, 0.017564375, -0.051517215, -0.042545684, 0.023467483, -0.0041677793, -0.022629486, 0.042744085, 0.053002954, -0.025039969, 0.0037634468, 0.04233641, -0.0023698271, 0.0011454201, 0.014663553, 0.015783295, 0.04556156, 0.034817107, 0.026696255, 0.031962033, -0.012502318, -0.018173166, -0.024525395, -0.0056200013, 0.011148503, 0.03851289, 0.0022970121, 0.00040722024, 0.045405738, -0.008443365, 0.0027748959, 0.014364593, -0.06113581, 0.020585913, -0.043536782, 0.071750484, 0.0032608197, -0.049279537, 0.012029077, -0.013947859, 0.026618797, 0.033041462, 0.009002331, -0.015862113, -0.033268854, 0.02189658, 0.00012705816, -0.059082497, 0.0068834494, 0.032637864, 0.035164986, 0.06410752, -0.014719268, -0.039912116, 0.03207573, 0.0050325, 0.057659034, -0.03027472, 0.03621769, -0.044042412, 0.014986973, 0.010362147, 0.010773444, 0.026388915, -0.016758652, 0.0146875605, -0.033595897, -0.039441023, 0.0052193496, -0.027659949, -0.007519306, 0.018950464, 0.00289833, 0.014606479, -0.028503833, 0.00859194, 0.031860113, -0.02777976, 0.031159565, -0.020606607, 0.0030774232, 0.018513348, 0.02746087, 0.005080514, -0.03446379, -5.9424037e-05, -0.020599276, 0.002388512, 0.035839006, 0.07686724, -0.026889559, 0.019129159, 0.007570945, -0.077979736, 0.016237399, 0.007317536, -0.027300518, 0.03629741, 0.02841301, -0.013101711, 0.020016756, -0.015680019, 0.009904081, -0.010622606, 0.029600699, -0.022107666, -0.028930305, -0.006376462, 0.022068257, 0.0016936557, -0.0273705, -0.0050002253, 0.018605752, -0.01398138, 0.00408398, -0.070536524, 0.0039832504, 0.020212155, 0.027905233, 0.021166394, 0.040500976, 0.016243514, -0.003135007, -0.05999138, -0.035973992, 0.041792847, 0.00037868315, 0.05560753, -0.025459645, -0.020292614, 6.273638e-05, 0.024304572, 0.021030502, 0.01307575, 0.033450946, 0.027071878, -0.058808222, 0.066472024, 0.03989037, -0.04350915, -0.00928589, 0.046459798, -0.016779717, -0.0348735, 0.006625143, -0.017252278, 0.04788258, -0.0050497125, -0.019322352, 0.083687164, 0.020170312, -0.009514159, -0.055919174, 0.00036781185, 0.0060624406, -0.043744467, 0.04184242, -0.0391133, 0.015463639, -0.027594013, 0.015578552, -0.0012986658, 0.0020510494, -0.026107846, -0.0062443083, -0.028533503, 0.035483878, -0.009871128, -0.030291932, 0.06395578, -0.0012530573, -0.010422393, -0.02752066, -0.012985751, 0.011189723, 0.0079778815, 0.027056932, 0.00556021, 0.024660606, -0.006061648, -0.047735818, 0.016565802, -0.030181408, 0.0647675, -0.010306885, 0.021704523, -0.02515344, 0.022454642, 0.02477566, -0.01371911, -0.06329716, 0.017060671, -0.019908043, -0.007771837, -0.0075587146, -0.0022327187, 0.018608017, 0.05573527, 0.03642379, -0.08417818, 0.0057225996, 0.022657573, -0.021747781, 0.023634402, -0.0017588834, -0.00044481677, -0.04277398, -0.025371771, -0.060290795, -0.01257989, -0.013587862, 0.026734756, 0.03014698, 0.051458325, -0.036027443, 0.04163714, -0.045414798, -0.06785856, -0.034610096, 0.016378952, 0.014536863, 0.0250257, 0.031061983, 0.016121212, -0.012994131, -0.05156477, 0.058101587, -0.011462865, 0.018051771, -0.04320883, -0.0020220592, -0.051529896, 0.027404586, -0.010385701, -0.045269392, 0.017046176, 0.07005185, -0.018031726, 0.01634045, -0.019030185, -0.017109139, 0.011959321, -0.054671247, 0.017744204, 0.037426215, 0.006397752, 0.009365613, -0.027512508, -0.022229513, 0.024429591, 0.03790727, -0.005515366, -0.0020533141, 0.036921605, 0.012887909, -0.024762752, -0.013833258, 0.021265822, 0.04907434, 0.011886845, -0.07959955, -0.011816635, -0.029021576, 0.049715295, -0.0363174, 0.011059721, -0.07121417, -0.021275107, 0.011300702, 0.020011771, -0.025219515, -0.0009933638, 0.037808068, -0.025945231, 0.007225555, 0.012727785, -0.017263403, -0.01630693, -0.00029896037, 0.009658231, -0.0045297025, -0.05977214, 0.06059291, 0.012487031, -0.024383219, 0.059453253, 0.003998821, 0.07912801, -0.025259433, 0.027116327, 0.013193211, -0.004077638, 0.0019493573, 0.0071112933, 0.042167906, -0.037885524, 0.021751633, -0.00023124131, -0.024855383, 0.040686693, -0.008963375, 0.031282578, 0.031857852, 0.021248382, 0.03791814, 0.023284484, -0.012029305, -0.045826096, 0.03838017, -0.022842836, 0.026155408, 0.027868995, 0.01159332, 0.0029452124, -0.009127962, 0.034920383, 0.009220209, 0.034688912, 0.013131155, 0.000113695525, 0.0066011357, 0.0068439273, 0.0009508412, -0.017014015, -0.05349782, -0.017227365, -0.01063846, -0.013634319, 0.03845174, 0.03737729, 0.022846347, -0.037862312, 0.029715981, 0.023306224, -0.017132694, -0.04233007, 0.017772514, 0.020655442, 0.008602811, 0.02459085, 0.033743568, -0.032487027, 0.02490702, 0.052772842, -0.023522802, 0.0043639154, -0.028374057, -0.063722044, 0.020604484, 0.043057542, 0.046940405, -0.0010015172, 0.09652615, 0.058266472, -0.01934013, -0.0074561164, -0.008191966, -0.05665752, -0.021231622, -0.0432496, -0.026010457, 0.02949108, -0.003651846, 0.00920209, 0.014295741, -0.05928656, -0.0031316096, 0.016244022, -0.04014947, 0.0077909753, -0.025710592, -0.031581085, -0.010479241, -0.059089065, 0.048137374, 0.06314405, -0.037258618, -0.026722526, -0.022987787, -0.0218172, -0.0074404893, 0.024883695, -0.033037838, -0.027589059, -0.023406558, 0.008130476, -0.050492138, 0.0013951483, 0.015665524, 0.039533433, -0.03379113, -0.0010146534, -0.0433907, -0.029975759, 4.5297026e-07, 0.041124266, 0.023147687, 0.006258265, 0.015627021, 0.0071594217, 0.017422142, 0.033395685, -0.0026049612, 0.04596742, 0.019876335, -0.018944122, 0.014099152, -0.03155255, -0.033508476, 0.021521522, 0.03211197, 0.005539826, 0.07422552, -0.03692432, -0.020110067, -0.00950626, 0.017773647, -0.0049092914, -0.018143864, 0.05742666, 0.0578751, -0.06210041, 0.010488979, -0.018659204, -0.0460553, 0.030950105, 0.041277368, -0.0011161186, 0.0015028703, -0.014643735, -0.041709952, -0.000304396, 0.0014973435, 0.046195716, 0.026765106, 0.017505035, -0.055735383, -0.02247276, -0.029503312, -0.01143297, -0.04454555, -1.1777226e-05, 0.024786532, -0.009236516, -0.029402724, 0.03312934, -0.056315072, 0.00087423256, 0.009004142, 0.0010404726, -0.04929222, -0.020362372, -0.0034924005, 0.01579915, -0.02047652, 0.031639066, 0.023320721, 0.018014627, 0.01648404, -0.0002572871, 0.025013471, 0.025706062, 0.028660672, -0.0010925643, 0.007885646, -0.036567383, 0.022448752, 0.001063008, -0.014424385, -0.0245836, 8.6970285e-05, -0.08323781, -0.0657894, 0.034284413, -0.0029549515, -0.030912502, 0.019318275, 0.05705432, 0.00016662228, -0.026771447, -0.0093340175, 0.027797086, 0.010153102, 0.042307794, 0.019970099, 0.025343573, -0.04669942, -0.06353179, 0.05551468, -0.028814342, -0.0058040493, -0.0632129, -0.056740865, -0.007850881, -0.01305851, 0.022042893, -0.04684256, 0.021489814, -0.009722213, 0.017100533, -0.027240723, -0.012172216, -0.0061812317, 0.01784884, 0.015692702, -0.009910083, -0.0016161412, 0.017124994, -0.040499616, 0.037085578, -0.017300745, 0.032005236, -0.004443638, -0.014523812, -0.03526317, -0.04841165, 0.008190608, -0.0027841816, -0.035121955, -0.016690142, -0.040285077, -0.0009168118, 0.0061486177, 0.020955311, -0.03632323, -0.025634492, 0.012983486, 0.027230306, 0.02303082, 0.012502206, 0.02158222, -0.0122555625, -0.02623785, 0.00496931, -0.011642242, -0.020290349, 0.009998865, -0.023550604, 0.00606346, 0.029615562, -0.010911147, 0.0006323465, 0.00022014353, 0.018200345, 0.0063471324, 0.0037569352, 0.050546046, -0.0007729371, -0.02514891, 0.04564628, -0.0114841545, 0.028249942, 0.0050045284, -0.044787094, 0.089434445, -0.015533256, -0.021190628, -0.025435185, -0.020318434, 0.025773894, 0.0069322567, -0.008485945, -0.012627904, 0.040951822, -0.0044848584, -0.00033678339, -0.0025117202, -0.04201118, 0.019425659, 0.05615925, 0.004306388, 0.028653992, -0.04994269, 0.04127963, 0.013962355, -0.005698366, -0.010107578, -0.015432017, -0.018473033, 0.03256007, -0.020382019, 0.033917785, 0.019779399, 0.0385677, 0.018241111, 0.02166013, -0.020644855, -0.028812531, -0.023308262, 0.026616022, 0.008641766, 0.033560567, -0.031564325, 0.002314678, -0.010721806, -0.05847484, -0.031623214, 0.0025080964, 0.04474259, -0.031021215, -0.019809974, -0.0018936421, -0.020105084, 0.06861503, 0.010673791, -0.00045070538, 0.04220686, -0.039983686, -0.020373695, -0.03380064, 0.0025991432, 0.010142004, -0.017405381, -0.03265508, 0.0009766038, 0.040074702, 0.03763979, 0.03620059, -0.0041673263, 0.03344551, 0.0679238, 0.02023803, 0.011926481, 0.028826121, -0.053238727, 0.004172762, -0.013933818, -0.06315221, -0.05207029, -0.012448528, 0.053533833, -0.0050818166, 0.047830034, 0.047021933, -0.006541117, 0.03261386, -0.013827597, 0.02126786, 0.0011979294, 0.014454734, -0.0033311432, -0.057056136, -0.007606277, 0.0019008897, -0.009188955, -0.03802504, -0.06620251, -0.015583082, -0.008315175, -0.021293677, -0.009134372, -0.03935315, 0.02813534, 0.009559512, -0.02113378, -0.0025151172, -0.052202106, 0.013669736, 0.031498756, 0.04027087, -0.010788845, -0.0148984175, -0.009689487, 0.022950133, -0.06936922, -0.020473802, 0.026073987, 0.0024469453, 0.0014627542, 0.0060209935, 0.045813695, 0.029063476, 0.007370732, -0.015125017, -0.035898797, 0.02336602, -0.033465892, 0.019979611, 0.005698253, 0.009487744, -0.07448506, 0.011172058, -0.008598281, -0.025841245, 0.0008475073, -0.06274816, 0.016607588, -0.014707492, 0.014541251, 0.029901924, 0.01696804, -0.009276944, 0.010457271, 0.009014108, -0.0045783967, -0.096493535, -0.012860505, -0.029984366, -0.037525866, -0.058391824, 0.016537322, -0.00031889105, 0.0049727075, -0.037730608, 0.04440739, -0.016549721, -0.029264426, -0.0118141435, -0.08049463, 0.016778246, -0.0011487326, -0.05179443, 0.0013464541, -0.056169216, 0.037643638, 0.011037979, 0.038865753, -0.010171447, -0.023459101, 0.020748075, -0.012517833, 0.039068684, -0.005333385, -0.012322092, 0.012338003, 0.037680104, -0.002290897, -0.06456706, -0.06963579, -0.02503725, 0.036623552, -0.0016189157, 0.04560867, 0.022957891, -0.014512035, 0.0024233907, 0.01403936, 0.039765354, 0.006132085, 0.009857538, 0.010307112, 0.011986499, 0.017125899, -0.041025516, 0.022547498, -0.00577673, -8.787623e-05, -0.025886342, 0.0053515034, 0.038118355, 0.013980529, -0.012892439, 0.0750472, -0.0073367595, -0.025910236, -0.06455369, 0.016297417, 0.047840904, -0.09592461, 0.0011244987, 0.08997076, 0.006654133, 0.0034413282, 0.050848763, -0.008771316, 0.0214914, -0.04917989, -0.005744116, -0.086296275, -0.047372647, 0.020163914, 0.009015013, -0.017781233, 0.022412969, 0.008371343, 0.0016071384, 0.034596056, 0.0248042, 0.051634077, 0.010663372, -0.0053179795, 0.063926786, -0.022846008, -0.01806853, 0.059208646, -0.0010254114, -0.0064715855, 0.0035956213, 0.002978959, 0.011065157, 0.032764245, -0.01987792, 0.02577265, 0.004069485, -0.069568984, 0.032554064, -0.049913246, 0.04799582, -0.03039521, -0.0053849104, 0.010292389, 0.016205011, -0.013490359, -0.02402101, -0.013569177, -0.0055901064, -0.011980836, 0.018044347, 0.0040463833, -0.011880617, -0.010987586, 0.008902225, 0.042992514, -0.027916556, -0.05526237, 0.07523745, -0.010363167, 0.031050658, 0.034631386, -0.043207645, 0.057696633, 0.028932115, -0.033871982, -0.00922791, -0.034692537, -0.050915074, -0.04276039, 0.025080964, -0.013479488, 0.042716, 0.02393495, 0.03985232, 0.021627517, -0.09025433, 0.015143248, -0.042707846, -0.029107869, -0.052827206, -0.016709166, 0.031181566, -0.0031753215, 0.038516853, -0.011404687, -0.037714303, 0.082534805, 0.010486771, -0.018302716, -0.022403626, -0.022326903, -0.018528296, -0.0065232245, -0.025703795, 0.041238412, 0.026252344, 0.012618393, -0.008949531, 0.0018614813, -0.059328232, -0.005995175, 0.022953814, -0.0013437362, -0.027484423, 0.04345559, 0.004102325, -0.0063031586, 0.017427577, 0.03920367, -0.03937557, 0.035518304, 0.0036781186, -0.02810952, -0.022945661, 0.027403794, -0.029258255, 0.0532693, 0.005148007, -0.024189066, 0.059755836, -0.031373795, 0.04529431, 0.0074102255, 0.030406335, 0.025289329, -0.023055507, 0.012097251, 0.031985134, -0.022668103, -0.0070604617, -0.008476319, -0.05278553, -0.015231351, 0.01033044, -0.019752221, -0.00038208038, 0.0063192463, 0.039886408, -0.0015449682, -0.0760528, -0.019935787, 0.048248578, -0.03543156, -0.02203972, -0.016507141, 0.027487142, -0.016754463, -0.017445244, -0.00014948018, -0.01039295, -0.008103411, -0.0796974, 0.012332229, 0.0061884797, 0.009668197, -0.01389441, 0.017852915, 0.022610066, -0.04030348, -0.023564758, 0.020711612, -0.022006428, 0.026968263, 0.03134826, 0.020590669, 0.022001673, 0.019796386, -0.017663123, -0.0028246515, -0.008626762, -0.0067211725, 0.044684496, 0.0045550684, -0.0031637708, 0.0012456682, 0.028133078, -0.00814667, -0.007964576, -0.018266931, -0.041315135, 0.0062672966, 0.023935739, -0.034111377, 0.016052812, 0.014994448], [-0.053829633, -0.078527614, -0.009927942, -0.048443325, -0.027505977, 0.034162913, 0.028217277, -0.02656, 0.040548876, 0.04808526, 0.006238382, 0.018692162, -0.07863724, -0.02066275, -0.0015496155, 0.050811604, -0.0059708315, -0.029264871, -0.0024889414, 0.04269971, -0.036052454, -0.0090905335, -0.029864877, 0.01881555, 0.0027248312, 0.020509422, 0.0040790816, -0.009179597, 0.020284116, 0.0066218544, -0.018653452, -0.061612036, -0.017378436, -0.006793933, 0.009183981, 0.019166362, 0.022886163, -0.026352234, -0.062137038, -0.039890803, -0.074473485, 0.010660713, -0.035298813, -0.009466899, 0.002038331, 0.030007621, 0.012843906, 0.029381001, -0.051271588, -0.032132443, 0.022516603, -0.0015387284, -0.042974006, 0.041809075, -0.014194224, 0.017034885, 0.023043424, 0.03230543, 0.008764748, -0.028084058, -0.028684217, -0.024326302, -0.041777924, -0.0074262996, 0.017782927, 0.028213646, 0.02325153, 0.0058549093, -0.009346081, -0.031038277, -0.028546313, 0.021600865, 0.03870652, -0.03904986, 0.040955335, -0.023198264, -0.0499438, 0.030532628, -0.0055373656, -0.031052794, 0.011509237, 0.018011104, 0.02053422, -0.052454665, -0.050560288, 0.013159029, -0.00837621, -0.00467425, 0.06836212, 0.008508974, -0.032015707, -0.021068223, 0.03229515, 0.005718819, -0.010745695, -0.0033968152, -0.0036278663, 0.04681871, 0.01583729, 0.05528474, 0.03939967, -0.058973696, -0.010631531, 0.0064174165, 0.008437602, -0.019329669, 0.017968766, -0.018158082, 0.0125753535, -0.009864434, -0.018377943, -0.009880764, -0.0067500817, -0.05005948, -0.006142816, -0.044508804, 0.0364329, -0.02771102, -0.04401888, 0.016905447, -0.012218513, 0.024304528, 0.0039020884, 0.022260753, -0.0044056983, 0.002866819, 0.0034851227, 0.0077607795, -0.07609931, -0.0033218146, 0.013414275, 0.023676092, 0.034338806, 0.0040875496, -0.034552436, 0.01731969, 0.006939701, 0.06185881, -0.036249634, 0.04565559, -0.043252237, -0.003275846, 0.024338398, 0.012582045, 0.011126747, -0.036864154, 0.0105944825, -0.052539345, -0.029785037, -0.009462816, -0.036213342, 0.013817102, 0.016001202, 0.02719025, -0.009813022, -0.06288826, -0.0029988266, -0.0016944761, -0.028927896, 0.019628463, -0.00471107, -0.03862063, 0.0089831725, 0.021335943, -0.043911822, -0.011848933, 0.04225212, 0.0071583525, -0.023146247, 0.010617468, 0.032705233, 0.0034506465, 0.00070759427, 0.041581955, -0.02177748, -0.0066563305, 0.039353702, -0.032255832, 0.027701948, 0.05567547, 0.019228963, -0.04010855, -0.026080962, -0.01559535, -0.015644947, -0.004833098, -0.03367707, -0.05124437, -0.008922083, 0.01622099, 0.05593132, 0.007766223, 0.026366448, -0.006527045, -0.04183599, 0.032661688, -0.007212184, 0.0134517765, 0.016757863, 0.042067647, 0.04019081, -0.014621547, 0.028286228, -0.025194332, -0.0038468207, -0.045869105, 0.029765077, 0.004112953, 0.037333515, -0.044681184, -0.003292177, 0.049263496, 0.03605971, 0.077459, 0.028211832, 0.027824126, -0.009426525, -0.047843322, 0.0480532, 0.059666853, -0.026091319, 0.007079118, 0.031879015, -0.014449167, -0.025680855, 0.0123775685, -0.025797892, 0.030308833, 0.020002257, 0.018594176, 0.034271784, 0.0052481736, -0.03233265, -0.034717556, -0.012147727, -0.01979661, -0.043057777, 0.05586358, -0.040481135, 0.033310078, -0.014656931, 0.029710943, 0.026083378, -0.018617917, -0.022075064, -0.044060916, -0.032990724, 0.00087211234, 0.006546853, 0.0059226523, 0.05861684, -0.022344222, -0.038840793, 0.015491921, 0.0023601092, 0.007990016, 0.020657912, -0.025370872, 0.0028185823, 0.041699294, 0.03810772, -0.057561986, -0.0015830332, -0.076278344, 0.030664634, 0.0070694406, 0.0441586, -0.0349601, 0.022921246, -0.045866687, -0.038323045, -0.09648503, 0.021341385, 0.0301673, -0.013132418, 0.027331783, -0.01637923, 0.010256979, 0.053480484, 0.02602471, -0.028588047, -0.009430759, -0.019108295, 0.00016209873, 0.015212029, -0.007074884, 0.0014818728, -0.048232842, -0.010624724, -0.037880298, -0.029490024, 0.04398017, 0.013569116, 0.021358322, 0.02525353, -0.042363416, 0.035898823, 0.009060593, -0.03950673, -0.06485522, 0.0349722, -0.0124156745, 0.017835699, -0.018919583, -0.0045408816, -0.036598023, -0.06660564, 0.055423252, 0.033405647, -0.02049793, -0.036769193, -0.023042213, -0.051116746, -0.0138473455, 0.024974167, 0.00610834, 0.014204204, 0.08716799, -0.0017952585, -0.034102883, -0.03131409, -0.021254063, 0.021929296, -0.0569402, 0.026198905, 0.058971275, 0.055016797, 0.0088957725, -0.010185607, 0.0057387794, 0.01771473, 0.022681726, -0.03052295, 0.019749433, 0.017608277, 0.02211559, 0.010915467, 0.013137256, 0.031599578, 0.06719114, 0.032183252, -0.08799783, -0.026598709, -0.027879924, 0.016046867, -0.033053625, -0.010223107, -0.049471565, 0.019718586, 0.011038365, 0.0010572709, -0.014569531, 0.04082469, 0.031422354, 0.004576567, 0.0021907522, -0.009227228, 0.0076198503, -0.024382554, -0.026259994, -0.013526777, -0.0254034, -0.041372072, 0.042875115, 0.048591968, -0.008743806, 0.03975532, 0.015953418, 0.016192332, -0.024290618, 0.059461206, -0.017771585, -0.057649087, 0.031499777, 0.00249499, 0.032066517, -0.044855382, 0.0019040552, 0.039784353, -0.01182716, 0.018600225, -0.011066264, 0.020671822, 0.0298053, 0.02019233, 0.04457473, 0.040403716, 0.023716616, -0.029549146, 0.031161666, 0.006764447, 0.009556567, 0.022287365, -0.009831168, 0.00463433, -0.024969121, 0.0471296, 0.029728787, 0.001599213, 0.004703283, -0.01189271, 0.015675189, -0.005562164, -0.018752646, -0.026903553, -0.064316906, -0.033017334, -0.0032262488, 0.011204168, 0.031174518, 0.010494683, -0.016050193, -0.031788286, 0.04804655, 0.041931406, -0.030278591, -0.030508433, -0.0011265257, 0.020476457, 0.02073949, 0.0053221914, 0.063581415, -0.037289966, 0.034677032, -0.0072254906, -0.017442247, -0.02366823, -0.0048318123, -0.024554329, 0.02696948, 0.019630883, 0.0052821203, 0.0074196463, 0.082921974, 0.051653847, -0.021005698, 0.017944572, -0.0061724535, -0.045546114, -0.02510353, -0.015533656, -0.027320895, -0.012664266, 0.03006508, -0.003465768, 0.03306663, -0.04286423, -0.03409759, 0.027179185, -0.02077495, 0.031076385, -0.021758731, -0.029343953, -0.047150467, -0.012779791, 0.045643196, 0.055354297, -0.05659121, -0.0009964838, -0.06768952, -0.01669254, 0.0049984474, 0.026777063, 0.018020177, -0.024264002, 0.0069146, 0.033991743, -0.053408206, -0.011819901, 0.07002907, 0.015724182, -0.055619825, 0.0060980576, -0.039699674, -0.03846337, -0.009515437, 0.051900625, 0.030984448, 0.03287852, 0.03233023, 0.054704692, 0.033779442, 0.039946754, 0.055370025, 0.020361537, 0.014830069, -0.024111582, -0.0016079831, -0.023303509, 0.007718591, 0.003492381, 0.0025098086, -0.009650923, 0.06956213, -0.024890622, 0.0044794898, 0.040492322, 0.06020562, -0.025976323, -0.014441001, 0.07197668, 0.024521062, -0.051293325, 0.017603438, 0.010573734, -0.05118207, 0.017576637, 0.035463333, -0.02047797, -0.019139748, 0.014241099, -0.02820034, -0.030045576, -0.034314126, 0.052772667, 0.045656197, 0.0038891009, -0.014562574, -0.006425884, -0.0059770886, -0.030112863, -0.023575082, -0.022159139, 0.018334698, 0.008877325, -0.03181006, 0.03952548, -0.045685228, 0.007770457, -0.02634437, -0.028514862, -0.057992637, -0.024164053, -0.011111022, 0.014193316, -0.03611354, 0.04985867, 0.008566813, -0.0068244776, -0.01565795, -0.01681714, 0.039350376, 0.0078097717, 0.003586132, -0.009213165, -0.014902575, 0.014630015, -0.003488147, 0.00017540534, -0.014371142, 0.005329903, 0.009447392, -0.058749903, -0.026881777, 0.04121421, 0.018506737, -0.017959995, 0.025051514, 0.066500396, 0.01430975, -0.072968625, 0.0049355435, 0.041533567, 0.01409019, 0.017032616, 0.03378186, -0.006656482, -0.0537442, -0.030477207, 0.009738626, -0.002298415, -0.01601947, -0.048259452, -0.040173873, 0.008907568, -0.006440041, -0.02460332, 0.011945709, 0.0472663, -0.009015835, 0.01913007, -0.024902418, 0.007188727, 0.0033962105, 0.013259737, 0.041344553, -0.025529945, -0.020216374, 0.014010956, 0.020128066, 0.044175535, -0.0071696937, 0.06310238, 0.019584915, -0.019629069, -0.02601594, -0.035897613, 0.019072004, 0.0011625141, -0.040327504, -0.030175768, -0.034983084, -0.012057908, -0.041336387, 0.012993868, -0.03327137, -0.02294302, 0.033343952, 0.031823974, 0.0022273455, -0.015318029, 0.010792873, -0.037256096, -0.03552442, 0.008046116, -0.020448407, -0.033022173, -0.013063464, -0.05304741, 0.0067355656, 0.013898152, -0.004725057, -0.011163226, 0.007774691, -0.02722805, -0.013994512, 0.0014769584, 0.0651032, 0.038792405, -0.007958564, 0.04142469, -0.02218273, 0.045641683, -0.021400662, -0.06706533, 0.089043014, -0.009050916, -0.009148901, -0.025522083, 0.008140017, 0.012548136, 0.050555453, 0.0028137437, -0.0014567716, 0.013966802, 0.0049319146, -0.0077420287, -0.013400062, -0.051978044, -0.009404751, 0.036388747, -0.011134005, 0.040267095, -0.017447615, 0.029797135, -0.0070331497, -0.007843341, 0.0045919907, -0.040118225, -0.0017709892, 0.033830248, -0.03642383, 0.049091116, 0.021914177, 0.016165115, -0.025114417, 0.010123913, -0.037506655, -0.024717636, -0.007275088, 0.06977746, 0.017826023, 0.01645665, -0.050830655, -0.0003353871, -0.028398428, -0.004921027, -0.04720823, 0.008822889, 0.04936874, -0.056910567, 0.0033478227, 0.0037993402, 0.0028802766, 0.05852248, 0.035008486, 0.017297387, 0.02177234, -0.043036003, -0.06464594, -0.019611526, 0.033085078, -0.031955224, -0.027643884, -0.023318022, 0.006249269, 0.06879761, 0.016645363, 0.029658021, 0.011544695, 0.0333875, 0.050574806, 0.0047335248, 0.014786066, -0.019771207, -0.004027065, -0.0034370376, 0.0090373065, -9.299508e-05, -0.06312415, 0.011621473, 0.032988302, 0.012236035, 0.064597555, 0.04877357, -0.011380782, 0.022002483, 0.006360561, -0.0071396027, 0.019053254, 0.0020588958, -0.005273048, -0.05676359, 0.0152469585, 0.023349475, -0.04889817, -0.037500452, -0.017104479, 0.0064246748, 0.0076851733, -0.001971798, -0.033259273, 0.0021151465, 0.020182502, 0.023954926, -0.022443265, -0.04497151, -0.0150812315, 0.015255729, 0.023108749, 0.013243709, -0.036999643, -0.003136429, -0.021157512, 0.030511457, -0.06821696, -0.018781679, -0.04475407, 0.02797549, -0.008994061, 0.0054218397, 0.06708287, 0.0025548695, 0.017203636, -0.026110107, -0.038119815, 0.017454041, -0.032344766, 0.010684, -0.007301701, 0.024048677, -0.07966548, -0.046258625, 0.004623443, -0.0044794898, -0.0034757478, 0.019361122, 0.00897773, -0.002370694, -0.005921442, 0.018665548, -0.008929946, -0.0043887626, -0.018445384, -0.0035214135, 0.0316776, -0.06353303, -0.06932987, -0.04879898, -0.036322214, -0.056242213, -0.016636895, 0.047894128, -0.025000867, -0.016868223, 0.04042307, -0.009921289, -0.018648613, 0.027462732, -0.022913989, 0.0077631986, -0.00052137725, -0.0030082017, 0.016368343, -0.04868043, 0.011015455, -0.0011945709, 0.030259691, -0.00746259, -0.014268621, -0.025709586, 0.010137219, 0.01333867, 0.012713561, 0.020327665, 0.0047899266, 0.029707618, 0.005739762, -0.04456959, -0.08192034, 0.0036901657, 0.0068529053, -0.03729753, 0.017313112, -2.1925667e-05, 0.013676929, 0.034938324, 0.053007495, -0.00051290944, -0.011013037, -0.0074335574, 0.005390993, -0.004937358, -0.009082368, -0.019792376, 0.013844925, -0.012646725, -0.03830369, -0.032299988, -0.009408985, 0.012090872, 0.034110896, 0.028291596, 0.012057303, -0.004504893, -0.0023770449, -0.013274858, -0.028198527, 0.05688698, -0.09366888, 0.027851343, 0.07650092, 0.00032661684, 0.021831313, 0.012363052, -0.0114890495, 0.023318628, -0.014662677, 0.025459178, -0.075455755, -0.044251744, -0.016882462, 0.018137725, 0.040979527, 0.03334758, 0.024672275, -0.023224121, 0.0483399, 0.027064137, 0.028323729, 0.020775251, -0.029050754, 0.047076378, 0.013752989, -0.0032691925, 0.049400195, -0.0022202386, 0.016182655, 0.025593454, -0.012752574, -0.0059093456, 2.1774458e-05, -0.052668784, 0.028908012, 0.00541564, -0.054320015, -0.0062069297, -0.041865624, 0.004665782, 0.0027841062, -0.008461796, 0.019125836, 0.01659516, 0.0002838618, -0.021923855, -0.016446972, -0.032022968, 0.009457372, -0.032948382, 0.019972015, 0.021557316, -0.008662605, -0.013975573, 0.017161902, -0.021521632, -0.054091383, 0.046885245, 0.0032761483, 0.05878619, 0.008391483, -0.0569272, 0.02218938, 0.024350496, -0.044037633, -0.009321887, -0.01575503, -0.018098807, -0.049481243, 0.009128941, 0.011720706, 0.023824885, 0.0715551, 0.0026032573, 0.036281087, -0.088839784, -0.025916444, 0.00055676076, -0.004608927, -0.04829695, -0.020809727, 0.015488727, -0.007471058, 0.013932023, 0.011469695, -0.0548556, 0.045765072, 0.0066874796, -0.021555504, 0.0060726544, -0.020605288, 0.0025863217, -0.012012242, -0.011591269, 0.044056986, 0.033058465, 0.04006954, -0.05765392, 0.020712346, -0.025444662, 0.006159752, -0.009166441, 0.016547982, 0.014158236, 0.023322484, -0.0007729932, -0.010766562, 0.039224263, 0.032429423, -0.038914584, 0.037362546, -0.00548807, -0.02900146, -0.021444209, 0.017169159, -0.04665419, 0.052379664, 0.024158156, -0.046903387, 0.046500564, -0.03828494, 0.051310297, 0.04993609, 0.00503935, 0.009563825, 0.0064816815, -0.01727614, 0.028524539, -0.04332149, -0.013439679, -0.021523446, -0.027818684, 0.00010615047, -0.020190971, -0.012205793, 0.020642487, -0.003596452, 0.034984294, -0.01654526, -0.036198825, 0.010160204, 0.060078148, 0.0017092949, -0.027349927, 0.0044610417, 0.033743452, -0.01998653, -0.04041339, 0.021395143, -0.020276252, -0.01971798, -0.07032181, -0.021441488, 0.038029693, 0.020452263, -0.0007108453, 0.03209797, 0.013686456, -0.046876777, -0.008963213, 0.018251834, -0.025207562, 0.03881176, 0.04570398, 0.034769576, -0.0016935689, 0.042491645, -0.002937737, 0.010616257, -0.045798942, 0.035960816, 0.073679924, 0.017474001, 0.011528971, 0.016832866, 0.022228695, 0.015189499, -0.006073259, -0.0008715832, -0.0412006, 0.051849823, 0.011360672, -0.060068466, -0.006248664, -0.020339195], [-0.016949596, -0.07580751, -0.018111005, -0.020542592, 0.013807459, 0.05904119, 0.019708859, -0.03358865, 0.026274852, 0.0614842, 0.0030434276, 0.020341365, -0.05027849, -0.027993444, -0.012889427, 0.025127856, 0.030490294, -0.020409891, 0.046842463, 0.009686378, 0.0050385697, -0.0056460584, -0.04268195, 0.03342549, -0.032263815, 0.054962255, 0.030838905, 0.03664731, 0.009376107, 0.03185918, -0.021942481, -0.05684618, -0.0039875647, -0.015259014, -0.029644594, -0.010595333, 0.0033349353, 0.008931231, -0.050827853, -0.020924194, -0.032297533, 0.012015448, -0.035324644, 0.045085803, -0.0023842722, 0.045021627, -0.008679969, 0.029689735, -0.018533582, -0.027397376, 0.029176876, -0.034060717, -0.026962288, 0.048111826, 0.011354661, 0.039807934, 0.007389666, -0.0014640734, 0.015437944, -0.03220181, 0.0048392457, 0.027119463, -0.025677698, 0.006694344, 0.03589243, 0.0067710285, -0.0035981622, 0.024815138, -0.027155086, -0.031058457, -0.014853298, 0.036276396, 0.028042933, -0.0074959905, 0.049086418, 0.0126131475, -0.062209707, 0.020434365, -0.026031204, 0.013104795, -0.008813214, -0.0028388011, 0.0049616136, -0.05513738, -0.022072328, 0.004369353, 0.038510565, -0.0345404, 0.03818316, 0.026616395, -0.052715037, -0.0059296805, 0.03499833, -0.0058584353, -0.0024944034, 0.011369345, 0.010870627, 0.020442523, 0.009674719, -0.0035840222, 0.016835183, -0.01934393, -0.028783124, -0.015791452, -0.023398932, 0.0033594088, 0.00089872483, -0.007636306, 0.0044237385, 0.07033168, 0.028797807, -0.016707309, -0.011065158, -0.053058755, -0.0067095724, -0.043896794, 0.04024547, -0.006699239, -0.03843659, 0.033982947, 0.0057232864, 0.017723234, 0.041337535, 0.0061086095, -0.022220938, -0.0067699403, 0.014363281, 0.006909168, -0.048662208, 0.0024096973, 0.041415308, -0.0063576964, 0.017067062, -0.03444577, -0.019594105, 0.017898628, 0.021968044, 0.009025998, 0.009490589, 0.04979561, -0.018547723, -0.0036253554, 0.00086881267, 0.007019299, 0.003948407, 0.00091884757, 0.029999733, -0.025364434, -0.02122731, -0.0060248557, -0.027647005, -0.030437132, 0.011926799, 0.019278124, 0.056710623, -0.01730963, 0.0095849475, -0.0027426067, -0.061538585, -0.0117081, -0.022707148, -0.038537756, 0.017936425, 0.008886906, -0.00044161244, -0.07702765, 0.012484797, -0.0013467276, -0.014249615, 0.033573966, 0.06283079, -0.011822378, 0.05212332, -0.010913184, -0.067748606, 0.010994899, 0.03570412, 0.021788027, 0.014353595, 0.004815316, 0.008002823, 0.011791973, -0.026354255, -0.021377958, -0.046150677, 0.016581133, -0.007808709, -0.018484635, 0.002804946, 0.024189975, 0.031835254, -0.029552681, -0.005653541, 0.019013876, -0.04862251, 0.026730606, -0.06326044, -0.00821769, 0.01725742, 0.013717723, -0.0035894606, 0.029993752, 0.046593376, 0.013544232, -0.024916295, -0.036228538, 0.03455237, -0.025454715, 0.06218904, -0.046341028, -0.0029324805, 0.02636187, 0.024017842, 0.029371578, 0.025132751, 0.024517104, 0.022342624, -0.07092775, 0.04124617, 0.036377553, -0.000764392, -0.024622612, 0.044313524, -0.017727586, -0.01524909, -0.001390916, -0.01841339, 0.05215813, 0.020521382, -0.0032469663, 0.070818976, 0.022423254, -0.004210546, -0.032967567, 0.0049088597, 0.004366633, -0.039936557, 0.046871558, -0.015773505, 0.020632874, -0.024339806, 0.029083334, 0.043155648, -0.007822577, -0.027331024, -0.018756837, 0.019576702, 0.006426358, -0.019111158, -0.0060683643, 0.03409879, -0.0025039208, -0.015147252, -0.00044946015, 0.0032926505, 0.024456738, -0.0055589736, 0.005116613, 0.009050336, 0.07026968, 0.0076629547, -0.060076695, 0.029629638, -0.07464556, 0.054554228, 0.01071726, 0.038574193, -0.041546375, -0.020626348, -0.038555156, -0.022230728, -0.03663425, 0.0017413473, 0.006223092, -0.035742328, 0.018499864, -0.0035361627, -0.0032283391, 0.040788785, 0.043688767, -0.08627323, 0.0063011353, 0.02309546, 0.02419079, 0.027535515, -0.008600022, 0.015271524, -0.051798638, 0.018052949, -0.026650658, -0.026978333, -0.0005513357, 0.018290749, 0.035918538, 0.06542826, -0.03361693, 0.015561944, -0.04350644, -0.06327023, -0.0359751, 0.04597555, 0.018331403, 0.019198176, 0.008927967, 0.012816549, -0.02617043, -0.047628745, 0.039323088, -0.02508649, 0.009671965, -0.016094925, -0.0077320244, -0.0576946, 0.0094914045, 0.0035198468, -0.006296784, -0.0019656378, 0.06349647, -0.03280876, -0.02092139, -0.017123358, -0.004738904, -0.00072659383, -0.04634755, 0.03035596, 0.06471254, 0.016433204, 0.013350619, -0.062804684, -0.059992943, 0.011244801, 0.03813911, -0.008115988, -0.022583758, 0.014765737, 0.018027794, -0.0116244145, 0.013538521, -0.0009941718, 0.026884858, 0.016031565, -0.08378019, 0.01298841, -0.027245095, 0.055490885, -0.06404685, -0.016933553, -0.0414115, -0.017448587, -0.016852247, 0.044250436, -0.036250833, -0.011100543, 0.03316954, -0.0059476276, -0.006571976, 0.041743796, -0.020419681, -0.01797776, 0.024635667, -0.014435071, -0.025062049, -0.052985337, 0.037615646, 0.022886075, -0.0042778486, 0.041133046, 0.020465093, 0.03773339, -0.0027069838, 0.037315164, 0.0175405, 0.008262286, 0.017788498, -0.012998743, 0.046245307, -0.044822574, -0.008503487, 0.0072289566, 0.013525196, 0.018406319, -0.015120331, 0.051659957, 0.06701197, 0.010927053, 0.045773238, 0.026899202, -0.0060166973, -0.043377, 0.03599685, -0.010770965, 0.0079125855, 0.0030499538, 0.00933423, -0.0073535, -0.039608613, 0.03334609, -0.0144508425, 0.031124704, -0.006738533, 0.0002877007, -0.007522096, -0.015544268, -0.0067088925, 0.0022211147, -0.031957075, 0.010028192, -0.011555345, -0.00054276997, 0.055067766, 0.05571387, -0.017486112, -0.0025317934, 0.010563891, 0.008112182, -0.011107614, -0.012906831, 0.009116143, 0.020983117, 0.03336023, 0.021791834, 0.031415395, -0.022791715, 0.038448565, 0.058531597, -0.022970373, 0.018804152, -0.018710336, -0.011464519, 0.04221315, 0.019505456, 0.03763849, -0.0033542423, 0.0729944, 0.0409601, -0.04347816, 0.008955704, -0.024147281, -0.040367294, 0.012601182, -0.02540468, -0.038415387, 0.019494036, 0.007720604, 0.003973696, 0.0070154923, -0.033927474, -0.014696122, 0.013029742, -0.058854103, -0.003591908, -0.031290308, -0.023579495, -0.008549987, -0.05611741, 0.023690442, 0.055158045, -0.049880452, -0.022411287, -0.010102157, -0.02706127, -0.007841884, 0.017333288, -0.024986997, -0.0039097928, -0.019063571, 0.004460721, -0.041437604, -0.031880938, 0.023706757, 0.030190628, -0.03538746, -0.017692234, -0.02300518, -0.030335294, 0.0014624333, 0.030687714, 0.017045587, -0.013438724, -0.008579356, -0.004004424, 0.009438651, 0.017363438, -0.011705994, 0.050765853, 0.02312918, -0.047950298, 0.017690059, -0.040894832, -0.011786484, 0.011038136, 0.03286423, 0.011074575, 0.04492808, -0.03347118, -0.0069352733, 0.0010746628, 0.022561394, -0.055665467, 0.01168372, 0.04399591, 0.06013761, -0.010167963, 0.022847462, 0.008492881, -0.06523247, 0.031173922, 0.037391305, 0.0032842206, -0.021500869, -0.018018277, -0.041580096, 0.0063593276, -0.0024827104, 0.035634644, 0.030906344, -0.009024231, -0.068715334, -0.0064865905, 0.009028038, -0.01804955, -0.04240132, -0.0029826546, 0.051309712, 0.0033581343, -0.0075030606, 0.036995374, -0.06442103, -0.022170903, -0.021375783, -0.0181246, -0.035640083, -0.02033375, 0.02940421, 0.005582699, -0.010204946, 0.0072746403, 0.0018665197, 0.003859758, -0.014736368, -0.03657008, 0.02898816, 0.030858485, 0.00095977285, -0.019548422, 0.0013151839, -0.033290483, 0.033062197, -0.017294673, -0.00016206958, -0.029837392, 0.011736449, -0.06427963, -0.04558887, 0.01682587, -0.024425736, -0.02578973, 0.011719589, 0.0770407, -0.021928342, -0.031248976, -0.03390028, 0.030407082, 0.011135708, -4.949105e-05, 0.02454865, 0.004627685, -0.037676286, -0.07741923, 0.0030010066, -0.00960796, -0.025993133, -0.050037086, -0.027579159, 0.034024827, -0.027328849, 0.042851638, -0.023140058, 0.006095557, -0.021349678, 0.016779097, -0.004161599, -0.0050970344, -0.038300633, 0.030288523, 0.011347046, -0.041431077, 0.02156287, 0.023242302, -0.0045503723, 0.037161797, -0.034580644, 0.032335874, 0.017713988, -0.015747262, -0.024375701, -0.045359906, 0.038536668, -0.0450771, -0.030625712, -0.025319837, -0.0210908, 0.0036133905, -0.02722769, 0.02841439, -0.034042228, -0.02186906, 0.020852864, 0.0048751403, 0.011544195, 0.020134155, 0.028367618, -0.01489735, -0.029037649, -0.027435446, 0.001750644, -0.005078271, 0.026471728, -0.012158482, -0.023414435, 0.026579412, -0.016707309, 0.0054214452, 0.019891866, -0.000116929405, 0.034985278, 0.016396426, 0.0596068, 0.002774762, -0.031877674, 0.035444293, -0.0010962812, 0.018591503, -0.014645, -0.02773239, 0.10304581, -0.05812996, -0.023584796, -0.05038733, -0.0054519014, 0.009145511, 0.019274317, -0.039207786, -0.015896961, 0.046238508, -0.028444845, 0.0012182412, -0.011928703, -0.057716355, 0.0035590045, 0.05233434, -0.0068721855, -0.018779814, -0.037373357, 0.058883067, -0.014924542, -0.009902017, -0.022714216, -0.013270128, -0.022798514, 0.041681252, -0.018425355, 0.056413267, 0.03562159, 0.024174472, 0.0054005072, -0.0031734095, 0.0018425899, -0.03974077, -0.053220827, 0.04005648, 0.029192105, 0.022702795, -0.03240304, 0.0031804796, -0.010725417, -0.054064687, -0.011725572, 0.027158078, 0.038072214, -0.031977747, -0.0014310256, 0.029749015, 0.0371172, 0.038805332, 0.027427696, -0.0045004226, 0.05485784, -0.045668274, -0.047823854, -0.008338426, 0.02344421, 0.019428771, 0.010753698, -0.022590488, 0.009028496, 0.04119722, 0.06196062, 0.016564274, 0.023975423, 0.031617712, 0.004810965, 0.04893849, 0.04200648, 0.033073958, -0.03935898, 0.01007442, -0.014688407, -0.02297282, -0.04567752, -0.025321197, 0.04297346, -0.02326025, 0.04412916, 0.010134243, 0.011519994, 0.038510565, -0.0046750004, 0.019222107, 0.006868651, 0.02623352, 0.0036438466, -0.08267507, -0.045327276, -0.006978782, -0.018026708, -0.039890874, -0.057052847, -0.03031354, -0.02552868, -0.027805813, -0.014157703, -0.046525396, 0.01603075, 0.025521066, -0.0029825154, -0.04108954, -0.052634105, 0.022530938, 0.039710313, 0.024794472, -0.0222242, 0.034358755, -0.0018012567, -0.0070353434, -0.08298398, -0.0284511, 0.0197007, -0.006712292, 0.040279735, -0.008920354, 0.054357488, 0.019475544, 0.047489654, -0.047422215, -0.04980608, 0.029479261, -0.034741085, 0.010678102, 0.027026465, 0.038470317, -0.07190886, 0.003550031, 0.01539933, -0.003148936, 0.029876279, -0.030902537, 0.03956891, 0.017148921, -0.002820446, 0.038352843, -0.011134942, 0.031951096, -0.011399257, 0.0053972434, 0.0025816925, -0.054207385, -0.03009382, -0.03477888, -0.063866295, -0.088822834, 0.029978523, 0.04279208, -0.0039954507, -0.0451391, 0.016594185, -0.015115709, -0.03012319, 0.0028052179, -0.070984304, -0.006850431, -0.010579119, -0.07098648, 0.028288757, -0.06069669, 0.046593376, 0.023021497, 0.039918337, -0.042312127, -0.009803035, 0.026472816, -0.006487135, 0.062124867, -0.03138494, -0.016577398, -0.0022831147, 0.038194038, -0.0074546575, -0.046283375, -0.057479233, -0.0017882041, -0.011919185, -0.028663475, 0.03622745, 0.0072722607, -0.024789067, 0.012416815, -0.013929283, 0.022535287, -0.010873891, 0.02850467, 0.028045654, -0.0107602235, 0.02012926, -0.013350619, 0.015694644, -0.0029868665, 0.033214476, -0.019700157, 0.017592708, 0.039479718, -0.003122015, -0.023460934, 0.060170237, 0.029379193, 0.008406952, -0.03925021, -0.003015147, 0.04198799, -0.0956004, -0.00812005, 0.04863502, -0.005596296, 0.009276105, 0.040580485, -0.010403998, 0.039207786, -0.03279897, -0.027569233, -0.07089294, -0.061281886, -0.02338588, -0.0010612024, -0.018083064, -0.016707309, 0.032826096, -0.0032631462, 0.026079064, 0.03290013, 0.0030825853, 0.024012405, 0.011436239, 0.043112688, -0.042897318, -0.04112652, 0.05439447, 0.011826457, -0.010153008, 0.008731907, -0.011327468, -0.007250439, 0.04287339, -0.0181866, 0.034972224, 0.028830983, -0.040285714, 0.030533804, -0.017499166, 0.028854914, -0.00718436, -0.009224914, 0.034511033, 0.02212277, -0.019037195, -0.037930813, -0.0032674968, -0.025219768, -0.013378899, 0.0033353434, 0.025551522, -0.024839612, -0.010017859, -0.01687264, 0.044221614, -0.018384565, -0.052527953, 0.04589343, 0.002102078, 0.058714878, 0.022006657, -0.028512284, 0.07652295, 0.0058910665, -0.03302086, -0.000535156, -0.051316235, -0.053721175, -0.004502258, -0.0024280525, 0.0147048235, 0.022430865, 0.04587168, 0.026608238, 0.023363039, -0.07712939, -0.00014276264, -0.027407302, -0.051485922, -0.062171634, -0.022568462, -0.0025155456, -0.0041115643, 0.03846685, -0.013526556, -0.022946443, 0.07720604, 0.015552307, -0.033804562, -0.00011149083, -0.020681275, -0.050757147, 0.006446209, -0.006068092, 0.06560446, 0.021389378, 0.021323571, -0.016055427, 0.010328945, -0.07580071, 0.029594017, 0.045951623, 0.011882204, -0.0027894462, 0.022654936, -0.005191937, 0.023049777, 0.020174263, 0.016594185, -0.021796508, 0.049749926, -0.0018810678, -0.01092639, -0.0084147025, 0.031226676, -0.04924414, 0.01781569, 0.01177316, -0.0063663977, 0.023774195, -0.052093953, 0.072259106, 0.0150305955, 0.018301355, 0.032684486, -0.01685348, -0.03289686, 0.020788418, -0.0108483285, -0.004295932, -0.014672193, -0.06375317, -0.0019856244, -0.010449138, -0.028240355, 0.018530319, 0.030362489, -0.00178059, 0.0071897986, -0.05045694, -0.009724176, 0.03594029, -0.0101179285, -0.0041251606, -0.047051307, 0.009963472, -0.0062652407, 0.012552406, 0.019232983, -0.025031049, 0.015840398, -0.07644463, 0.028807055, 0.007916393, 0.014371983, -0.021841325, 0.033677842, -0.012339043, -0.068874136, -0.0101027, 0.011191503, -0.02379051, 0.019551683, 0.021414533, 0.014288229, 0.041811783, 0.0070005357, -0.043368302, -0.013351707, -0.024793927, -0.008597302, 0.07042522, -0.0110859955, 0.016073171, 0.014930525, 0.06018057, -0.0016174328, -0.008913827, -0.011157785, -0.059668258, 0.01784941, 0.0073465654, -0.06412735, 0.008940885, -0.0022423253], [-0.014754322, -0.09225824, -0.0122591285, -0.0040285843, 0.03870549, 0.021265237, -0.01349973, -0.024339385, 0.030338045, 0.078263365, -0.010236092, 0.024079325, -0.018727947, -0.017140096, -0.04024188, 0.03748687, 0.015104069, -0.035896022, 0.039683282, 0.07421629, -0.022291869, 0.021658326, -0.015149287, 0.017098626, 0.0074865823, 0.03119892, 0.0076976796, -0.005557978, -0.0088378545, 0.026300717, 0.009703977, -0.058926355, 0.006810072, -0.05275582, 0.014545473, -0.023676865, -0.01461942, 0.024302414, -0.05650311, -0.03992211, -0.07997413, 0.048081204, -0.024412334, 0.060102586, 0.0040094364, 0.035458338, -0.017582277, 0.0040528174, -0.022811493, -0.048726924, -0.0013371321, -0.012498955, -0.021020789, 0.010745973, -0.011843929, 0.046043057, 0.028949238, -0.0055140094, 0.022641616, 0.009141385, -0.030503927, -0.0035874664, -0.08058568, -0.024889989, -0.002140451, 0.033341873, 0.025861286, 0.009022471, -0.0145849455, -0.036681455, -0.015412721, 0.004051568, 0.024839025, -0.00671564, 0.040555652, -0.002582631, -0.06671572, -0.021641338, -0.026754638, -0.01517102, -0.002195349, 0.010067215, -0.045205284, -0.074985735, -0.03450403, 0.018427664, -0.011878904, -0.008146105, 0.0076624546, 0.017137598, -0.045153324, -0.029118927, 0.047391705, 0.015689146, -0.010871133, 0.017115615, 0.014975162, 0.05179452, 0.0043424824, -0.009567576, 0.03862505, -0.039237607, 0.00053811056, -0.030680547, -0.03408958, 0.001634817, 0.01627822, -0.009149378, -0.0032826245, 0.013992874, 0.00058373384, -0.0077387746, 0.002461219, -0.027614515, -0.01836271, -0.012227152, 0.010916101, 0.008564802, -0.015412847, -0.0053088455, 0.010116179, 0.020356769, 0.023259543, 0.04824908, -0.04334663, 0.00641136, 0.0069829463, -0.026897535, -0.05455652, -0.012746276, 0.029480165, 0.014455538, 0.07964337, 0.014229203, -0.026643844, 0.023246178, 0.013300999, 0.024844272, -0.007901781, 0.046881072, -0.055039167, -0.0045056148, -0.0006285452, 0.021341056, 0.007601499, -3.3975415e-05, -0.024744093, -0.052583948, 0.009759188, -0.009788416, -0.035162803, -0.013255407, -0.017487345, 0.03005325, -0.0015608704, -0.03014606, -0.012379541, -0.0076189865, -0.04829305, 0.00014161627, -0.0077643814, 0.0020005521, 0.026986472, 0.007838828, -0.023291145, -0.05847568, 0.035945486, 0.006712143, -0.0063868784, -0.009255302, 0.06980549, -0.0024464796, -0.0076894355, 0.008762409, -0.05585458, -0.0007263181, 0.01669267, 0.0019742276, 0.039072726, 0.008592528, 0.009933811, 0.010728236, -0.012109238, -0.0023280652, -0.017351443, 0.032795265, 0.012721295, 0.0018476628, 0.028251555, 0.030197145, 0.007748393, -0.0284634, 0.037761673, 0.026918521, -0.0041589905, 0.027973754, -0.0022803498, -0.0052219713, -0.00022383801, 0.04093238, -0.0028927815, 0.023615535, 0.0077768723, -0.011992321, -0.033463784, -0.071620174, 0.024445059, -0.012506949, 0.04659428, -0.021993583, 0.0059200907, 0.010464427, 0.03197511, 0.06899657, 0.0151572805, 0.023824133, -0.001375005, -0.02579833, 0.05050145, 0.049716026, 0.01264385, -0.008528578, 0.03180898, -0.027008643, -0.019737717, -0.011831438, -0.039997555, 0.0327508, -0.04441086, -0.010453248, 0.07329896, -0.04015544, 0.017716179, -0.05170908, -0.031753022, -0.018812886, -0.049128447, 0.021963293, -0.07034809, 0.0015968444, -0.024148526, 0.054710407, 0.042778917, -0.009011478, -0.020187391, -0.015132799, -0.020409543, 0.027363447, -0.040304706, 0.032783028, 0.0605262, 0.021746263, -0.05918817, 0.011294076, 0.014428559, 0.008497351, 0.01973322, 0.010050726, -0.0057883114, 0.08183578, -0.0021234632, -0.038197108, -0.005441562, -0.07718814, 0.04492149, -0.007934383, 0.0027819867, 0.0077803694, -0.0101546515, -0.08792237, -0.041174203, -0.05692081, 0.05351727, 0.029224351, -0.03953539, 0.0051359087, -0.00022571166, 0.024138533, 0.03974024, 0.01859804, -0.029828414, 0.014693991, 0.008168588, -0.02255118, 0.012827717, -0.018348785, 0.027806876, -0.052918706, -0.007997213, -0.022693077, -0.0052881734, -0.0045497073, -0.003789258, 0.04890661, 0.06326222, -0.027519085, 0.0008998488, -0.032097273, -0.06718338, -0.0030123203, 0.054270726, -0.025044877, 0.02519277, 0.043230966, 0.017252015, -0.034746855, -0.029217482, 0.027734367, 0.015132987, 0.0058817435, -0.011240865, -0.021668319, -0.048800685, 0.0129024135, 0.022376556, -0.0115702525, 0.032854225, 0.051594663, -0.02968052, -0.048042234, -0.036871318, 0.023899455, 0.012923648, -0.044239987, 0.04517131, 0.030198647, -0.0015215239, 0.013674105, -0.032687094, -0.020358268, 0.052422065, 0.033132024, -0.0038332262, -0.04032082, 0.01601641, 0.017667715, 0.0029788443, -0.019217594, 0.012680479, -0.0040505687, 0.013281139, -0.06414958, 0.017515326, 0.013041281, 0.026228143, -0.05423675, 0.016773362, -0.039885134, -0.007895161, -0.00064903026, -0.0051687597, -0.0158915, 0.021470463, 0.0045952993, -0.01945642, -0.0017070146, 0.00901048, -0.013029571, -0.0153657235, -0.008709697, 0.028636776, -0.036741413, -0.00971397, 0.049919374, 0.03034429, -0.032440525, 0.018342726, -0.010094695, 0.038500138, -0.036244772, 0.085682996, 0.031167446, 0.018892327, 0.020107323, 0.012837211, 0.03836024, -0.048170637, -0.006621458, 0.022756532, 0.0025313557, -0.0038172377, 0.0051207943, 0.043946195, 0.036941268, -0.014376596, 0.059460968, 0.025695404, 0.011139939, -0.045105983, 0.05064235, -0.009709973, 0.011416738, 0.019723726, 0.042775545, 0.023410559, -0.0019326013, 0.03983517, 0.03217197, 0.0403448, 0.0006830057, -0.018188588, 0.009082178, -0.016632464, 0.0055599767, -0.008354454, -0.035298456, -0.0043783314, 0.022223918, -0.019365735, 0.018745435, 0.026254999, -0.012974611, -0.03819536, 0.015474801, 0.0324715, -0.022822483, -0.032550443, 0.02759322, 0.03529046, 0.014622418, 0.035552774, 0.03128536, -0.053401604, 0.05212028, 0.02879666, -0.019216344, 0.004586681, -0.04224343, -0.015298928, 0.03765909, 0.03362667, 0.051202945, 0.044801578, 0.06303838, 0.044252977, -0.038934074, -0.0004616659, -0.0029588589, -0.054988205, -0.032434527, -0.05668498, -0.006574149, 0.0061110775, -0.0005377671, 0.0023470514, 0.04357147, -0.026383907, -0.009028466, -0.0015471304, -0.06484307, 0.00701992, -0.044072106, -0.031785, 0.001979068, -0.048201118, 0.03325993, 0.04833852, -0.046203814, -0.024479473, -0.016757373, -0.029428704, -0.048025247, 0.025272712, -0.01637721, -0.01699545, -0.036161833, 0.01873919, -0.0066696736, 0.015483795, 0.013874459, 0.034648925, -0.033557713, -0.024162015, -0.02046619, -0.023632148, -0.003732299, 0.03091363, 0.06931384, 0.00018211821, -0.013577174, 0.013612148, 0.0029688515, 0.024663651, -0.005608941, 0.00022283873, 0.02760952, -0.004460772, 0.016976714, -0.042539217, 0.009168365, -0.006879771, 0.015721623, 0.014709355, 0.032546446, -0.061587434, -0.032356586, 0.021256616, 0.048624314, -0.017830595, -0.0016717901, 0.045069385, 0.034999672, -0.030512918, -0.0052759317, 0.008335592, -0.036871318, 0.02260564, 0.020447202, -0.040758006, -0.021378716, 0.003056788, -0.07097664, 0.01818384, -0.026188048, 0.03213275, 0.04113623, 0.023776636, -0.061013844, 0.016878098, -0.018447151, -0.01875243, -0.027998738, -0.0005630925, 0.009167615, -0.019352995, -0.023876721, 0.01770169, -0.085958794, 0.023593927, -0.0063506546, 0.011774979, -0.020962207, -0.010116679, 0.019017737, 0.027905807, 0.008814996, -0.020896628, 0.031847455, 0.01872345, 0.03677039, 0.0005593452, 0.02090837, -0.032460507, 0.0029748473, -0.028052447, -0.013881454, -0.011281773, 0.008716067, 0.016824825, 0.020145422, 0.015886504, 0.02089288, -0.08104535, -0.04961559, 0.020462941, -0.04100133, -0.0044670175, 0.021945618, 0.067244336, 0.008026192, -0.044745617, -0.035492316, 0.021262614, -0.010814673, -0.0037378264, 0.007182802, 0.0037345474, -0.030981578, -0.037882585, 0.036224786, -0.012476222, -0.048263073, -0.053085584, -0.016619347, 0.03981119, -0.00655026, 0.045899283, -0.02300935, -0.049050506, -0.022940366, 0.0047404445, -0.052809782, -0.008936533, -0.0072417594, 0.012946631, 0.014780804, -0.009253554, -0.007478338, 0.047295276, 0.006872027, 0.019925581, -0.0059045395, 0.051922426, 0.015772587, 0.000327513, -0.05763604, -0.0026305963, 0.04445183, -0.022809494, -0.029510643, -0.016959727, -0.05874449, 0.016957821, 0.005291171, 0.018995753, -0.030961594, 0.003324344, 0.04591877, 0.03662953, -0.0015563737, 0.015552245, 0.014419065, -0.054348666, -0.026597252, -0.027996084, 0.013711577, -0.042702597, 0.00205876, -0.018403681, 0.015512774, 0.03037402, -0.0047970284, 0.01707864, 0.03411531, 0.009524857, -0.0060296366, 0.01319645, 0.03972288, 0.050577525, -0.04485954, 0.06869029, 0.0044461573, 0.054560516, 0.010934212, -0.08349557, 0.05639219, 0.00054710405, -0.022262888, -0.039903123, 0.012185182, 2.248373e-05, 0.025915245, -0.010189626, -0.07201189, 0.018211821, 0.0069659585, 0.004059562, -0.0051705083, -0.004067057, 0.003996393, 0.015091078, -0.01514504, -0.0120377885, -0.05058739, 0.04304485, 0.017681703, -0.010928092, -0.014463534, 0.019083189, -0.0064458353, 0.037416425, -0.023800777, 0.045289226, 0.03396792, 0.046270516, 0.012528934, 0.024989916, -0.01169154, -0.016705912, -0.036450874, 0.080731325, 0.018556822, 0.0143955825, -0.027606023, -0.021672318, 0.02311927, -0.025565498, -0.029775452, 0.01588001, 0.052697863, -0.022656605, -0.015663665, 0.06126966, 0.02558636, 0.030708278, 0.009448162, 0.002565893, 0.0073197028, -0.034327157, -0.03816438, -0.030246112, -0.0007604497, 0.0097729275, 0.001850161, 0.010035737, -0.013024387, 0.0743412, 0.05180276, 0.0020185392, 0.0045686937, 0.054565262, 0.053586718, 0.0353087, 0.006317928, 0.017711932, -0.053107064, -0.0019610808, 0.027035436, -0.016923752, -0.06215602, -0.008481862, 0.0008267767, 0.0069292355, 0.046424404, 0.020831862, -0.034031373, 0.0026320952, 0.028253553, 0.008254027, 0.026787365, 0.0037053186, 0.01500639, -0.05795806, -0.035410374, -0.002920886, -0.031250384, -0.036498338, -0.047627535, -0.0032956148, -0.008406916, -0.040423248, -0.037653502, -0.036855828, 0.0060416274, 0.0371731, -0.0061535467, -0.059991587, -0.04399017, 0.025913246, -0.0069469726, -0.0092308195, -0.03505657, 0.013909434, -0.016349168, 0.019095182, -0.054754376, -0.022913419, 0.024591204, 0.018505609, 0.005069894, 0.0019625798, 0.027574044, 0.01648707, 0.0018968149, -0.021420874, -0.0065612514, 0.03050992, -0.04077749, 0.00636633, 0.033202972, 0.0032916178, -0.050637353, 0.007739149, 0.00080932054, -0.013731563, 0.023403564, -0.053640682, -0.0026881173, 0.041691832, -0.0047534974, -0.002527171, -0.0074740914, 0.002598245, -0.030504923, 8.086336e-05, -0.0042913947, -0.06279056, -0.05267788, -0.002459595, -0.012578023, -0.07623483, 0.016852804, 0.011037761, -0.023196215, -0.031247387, 0.04083445, 0.0022503715, -0.012796489, 0.004697195, -0.07935458, 0.00023595424, -0.015115686, -0.0095645785, 0.011155303, -0.04478759, 0.013913931, 0.017171323, 0.03894881, -0.03612186, -0.014088508, -0.016276471, -0.016986208, 0.052299153, 0.033635657, -0.010913853, 0.0043715863, 0.0054238252, -0.0262194, -0.021939967, -0.068804204, -0.034112815, -0.0059496947, -0.016939865, 0.01626373, 0.018257452, 0.035436355, 0.016271226, -0.0023273157, 0.028605798, -0.045674946, -0.023246178, 0.031483687, 0.0016637959, 0.020393243, -0.02200008, -0.0052566957, 0.0060995864, 0.010582842, -0.030599855, -0.006862034, 0.05453853, 0.003381303, -0.007731405, 0.051686596, 0.012426008, -0.0021064756, -0.0216963, 0.044447836, -0.016383894, -0.07644368, 0.0041225166, 0.059685808, 0.00938321, -0.0137860235, 0.005539991, -0.0038851884, 0.065670475, -0.07394249, 0.029622562, -0.03782544, -0.044733126, -0.00015189008, 0.009616041, 0.0023288147, 0.0028349485, 0.04150896, -0.024463298, 0.024151273, 0.013360832, 0.019737717, 0.04404388, -0.026030662, 0.045353677, -0.028865362, -0.01099979, 0.025830807, -0.0033997898, 0.010873037, 0.018562566, -0.008090145, 0.018575558, 0.020905014, -0.05213527, 0.03792855, 0.021478456, -0.006075104, 0.036993477, -0.038424693, 0.022862455, -0.005291046, -0.043532494, 0.028074183, 0.02553552, -0.015635684, -0.055242524, 0.01905521, -0.017257262, 0.014057827, -0.010967064, -0.0026231017, -0.00248058, 0.0006730129, 0.0043938207, 0.05504816, -0.037039198, -0.05615536, 0.051607653, 0.007506817, 0.05710068, 0.06840391, -0.033490762, 0.062450808, 0.0035874038, -0.06323424, -0.017219538, -0.036427636, 0.004733075, -0.005323023, 0.0212821, -0.001911117, 0.03733748, 0.06808773, 0.04196813, 0.012286609, -0.12506948, -0.0093626, -0.04077974, -0.027573047, -0.015293432, -0.03336898, 0.0043423576, 0.003554428, 0.03721457, -0.020500164, -0.030148683, 0.06777833, 0.007131839, -0.010882125, 0.0023562948, 0.015003892, -0.055986486, -0.0017347446, -0.014126777, 0.06743095, 0.028999887, 0.0330607, -0.027607022, -0.007908277, -0.05875948, 0.018188836, 0.023804149, 0.011221879, -0.010073773, -0.0151910065, -0.023796529, 0.01706515, 0.0016058378, 0.0075645256, -0.03018728, 0.07418806, -0.0035230755, -0.015226982, -0.012090001, 0.001777214, -0.06049722, 0.027270265, 0.023123266, 0.04195464, 0.012741528, -0.049524162, 0.089743055, -0.010326778, 0.014632411, 0.006518283, -0.02002301, 0.03238856, 0.014899468, -0.01827066, -0.00549507, -0.03002602, -0.06280255, -0.020623306, -0.017783131, -0.023942173, 0.011660562, 0.0044942475, 0.043585382, -0.010900113, -0.03928857, -0.027505096, 0.05118296, 0.02240179, -0.035888027, -0.051012084, -0.021537414, -0.038503136, 0.012182934, -0.0005710867, -0.041366562, 0.022597646, -0.035535783, 0.010865636, 0.009641023, -0.03125738, -0.0040490697, 0.030035764, 0.042607166, -0.02980643, 0.0011571626, -7.594504e-05, -0.01044744, -0.019535862, 0.0011371771, 0.018664993, 0.03687057, 0.020710606, -0.023690857, -0.006947472, -0.04250324, -0.0040664324, 0.06451981, 0.016619973, 0.02192813, -0.011271655, 0.029252829, 0.007265742, 0.0035384393, -0.0054400633, -0.01886235, 0.031442247, 0.02766398, -0.047385458, 0.020770969, 0.025555504], [-0.0054062926, -0.095297836, -0.008119363, -0.015446024, 0.029757347, 0.02276565, 0.029956661, -0.004560338, 0.0442016, 0.048778918, -0.020469544, 0.04383882, -0.07730061, -0.033261843, -0.041643444, 0.051965944, -0.0050673364, -0.03876038, 0.0063927406, 0.05662228, -0.03089025, 0.023374576, -0.022704555, -0.0027841066, 0.0037395966, 0.06108877, 0.018463766, -0.011954137, 0.0076800236, 0.05084504, 0.017856352, -0.053106047, -0.006104434, -0.0016697571, 0.0070960885, -0.019742213, -0.017150732, -0.010265446, -0.046619896, -0.02325037, -0.07131029, 0.022242052, -0.05188112, 0.0712497, -0.0025245796, 0.04043771, 0.004698748, 0.0037818202, -0.016473008, -0.02966886, -0.008297788, -0.02499738, -0.027246116, 0.03135311, -0.0019020183, 0.04747472, 0.026977658, 0.012836225, -0.00021711385, 0.016757151, -0.01267642, -0.006035765, -0.028562842, -0.026119428, -0.015007112, 0.028333861, 0.03530069, -0.018853435, -0.022677794, -0.028837122, -0.01931354, -0.012011571, 0.041560642, -0.025661847, 0.06021425, -0.019685537, -0.02584286, 0.0012006902, -0.016951038, -0.02821243, -0.008089763, 0.01651277, -0.025633574, -0.09658032, -0.06445655, 0.0125017185, -0.027134687, 0.016326962, 0.019510835, 0.013744822, -0.058246095, -0.016370384, 0.03771318, 0.038639575, 0.004215038, 0.012698888, 0.0061003943, 0.03556426, 0.011363133, 0.00058810087, 0.012210887, -0.026811542, -0.0021509419, -0.01759449, -0.021792172, -0.0007538395, 0.007027736, -0.024272319, -0.024812864, 0.0015925048, -0.022742676, -0.018503843, -0.0012118614, -0.032951824, 0.008611847, -0.041282937, -0.020880293, 0.0054334635, -0.048579983, 0.009186061, 0.0012400735, 0.0072343093, 0.043468215, 0.038949214, -0.027200831, -0.0055157016, 0.020737907, -0.021075947, -0.03364356, -0.021547856, 0.030741805, 0.0076828008, 0.05362447, 0.013535786, -0.016842986, 0.028188445, 0.027350286, 0.051818516, -0.011773125, 0.038697515, -0.04947091, 0.0023955738, 0.033738483, 0.03567332, 0.029392166, -0.01261381, 0.016478436, -0.06018194, -0.011917783, 0.008531564, -0.036178235, -0.0030403195, -0.0066381297, 0.01766947, 0.007038528, -0.043815725, 0.016376065, 0.01803178, -0.05422797, -0.018456697, -0.029846841, -0.004206455, 0.026979173, 0.012499699, -0.022529349, -0.059075166, 0.033907127, 0.008492686, -0.010731989, 0.0016586488, 0.052433502, -0.002960827, -0.007801456, -0.021227676, -0.04510717, -0.011795593, 0.017392242, 0.015660726, 0.007999824, 0.00070435775, 0.018274928, 0.012721863, -0.011010891, -0.0023336583, -0.020695494, -0.00060438435, 0.018398631, -0.016882116, -0.009923618, 0.015258687, 0.04885592, -0.05000132, 0.033841487, 0.0017978795, -0.04945159, 0.029140972, 0.006030716, 0.009175332, 0.035363935, 0.04423013, 0.024223847, 0.008352445, 0.011443021, 0.007655851, -0.0024296555, -0.029391157, 0.025839956, -0.010763798, 0.047127843, -0.03809086, 0.011225417, 0.00722156, 0.043434888, 0.086396165, 0.03119926, 0.015722074, 0.009207647, -0.011016256, 0.04770446, 0.090268865, -0.0042140284, -0.01189279, 0.038947195, -0.02140307, -0.016720291, -0.02516905, -0.05115808, 0.037998963, -0.02782257, -0.019387541, 0.052237406, -0.036591258, -0.007339458, -0.03531786, -0.022766028, -0.010049847, -0.04828814, 0.054806355, -0.07070742, 0.0024445506, -0.026405841, 0.02659594, 0.046442166, -0.012837993, -0.041767657, -0.010395209, -0.0049693827, 0.00588732, -0.04487363, 0.034929577, 0.067503475, 0.0002726546, -0.02538061, 0.0014441857, 0.012586544, 0.0066074566, 0.030218208, 0.020099945, -0.00055641733, 0.08371305, -0.005292529, -0.04256643, 0.0014164153, -0.055203468, 0.036516026, -0.028543148, 0.018441802, 0.008429066, 0.024102163, -0.0600446, -0.034209065, -0.051145967, 0.039803535, 0.04289261, -0.008028164, 0.012953113, -0.029912734, 0.027924882, 0.035543304, -0.008343231, -0.024542954, 0.0024531656, -0.010237675, 0.0007094069, 0.014642435, -0.031970266, 0.020548059, -0.058913592, -0.024705032, -0.016035372, 0.00036353947, 0.008385643, 0.01630424, 0.03850792, 0.037341565, -0.019810125, 0.005281421, -0.019870462, -0.052826323, -0.027270509, 0.011277802, -0.044326443, 0.0018299362, 0.010447215, 0.0037580892, -0.02130253, -0.04187356, 0.01066313, 0.0042334674, 0.010491332, 0.0021717697, -0.032961037, -0.061236206, -0.0032150522, 0.02552956, -0.015137631, 0.032914963, 0.0619855, -0.04280879, -0.054569293, -0.058707584, -0.0015667541, 0.026102135, -0.041232444, 0.015088403, 0.050993484, -0.009521705, 0.018815188, -0.028830195, -0.038284745, 0.04229176, 0.03909564, 0.014974797, -0.015822614, 0.0034902312, 0.040591203, -0.0076579964, -0.033225488, 0.040316526, 0.0023387705, 0.046156388, -0.03203793, 0.029467147, -0.02277474, -0.005739884, -0.039732844, -0.016176496, -0.036840685, 0.011112695, 0.013402488, -0.0071536493, -0.017094813, 0.021748498, 0.03032727, 0.009704989, 0.0028063226, 0.0100502735, 0.0129450355, -0.017723938, -0.022042176, 0.020572007, -0.02522926, 0.014632463, 0.03875621, 0.032881137, -0.040548284, 0.008631538, -0.0028739814, 0.037036594, -0.034265995, 0.078697205, 0.008477096, -0.008124854, 0.02396129, -0.006994853, 0.023137268, -0.037556656, -0.007759548, 0.034384523, 0.009175585, 0.026635325, 0.032182332, 0.028252065, 0.033625886, -0.005758692, 0.060268786, 0.027370483, 0.0041363975, -0.024669813, 0.053072724, -0.00642556, 0.0022276891, 0.020052232, 0.016227998, -0.010608899, -0.012516362, 0.026590262, 0.03156747, 0.042526733, -0.01669656, -0.011416148, -0.014438514, -0.02130947, -0.018891934, -0.01405888, -0.017140886, -0.009124841, 0.0395127, -0.008320005, 0.0016843996, 0.0029335616, -0.029444678, -0.024371281, 0.03228306, 0.010939508, -0.025494214, -0.03171377, 0.039045148, 0.022739395, 0.0014814233, 0.026052652, 0.044917323, -0.05531758, 0.05243451, 0.018397117, -0.035730965, 0.00012774373, -0.020832073, 0.00567576, 0.03298237, 0.0005432895, 0.038226176, 0.009863406, 0.052033607, 0.05275362, -0.02546998, -0.006835552, -0.017436767, -0.03580662, -0.03560667, -0.045428928, -0.010264436, 0.018255236, -0.00216205, -0.0069506727, -0.0043761064, -0.026354594, -0.0075636404, 0.01820121, -0.041218054, -0.005168193, -0.01854853, -0.0611534, -0.025489166, -0.0261602, 0.041096117, 0.051507484, -0.058582366, -0.049098022, -0.032994743, -0.018221406, -0.0019348379, 0.047483303, -0.024179414, 0.001286084, 0.011011207, 0.019506417, -0.004600037, 0.03267008, 0.016120955, 0.041859552, -0.044069063, -0.02047939, -0.037084054, -0.040280174, -0.0033801596, 0.023858793, 0.08261535, 0.0069829873, -0.0027618902, 0.024953702, 0.014009524, 0.014065443, -0.004288251, 0.008261435, 0.030599926, 0.0010997069, 0.005007756, 0.01268677, 0.015485614, 0.03146333, 0.009893322, 0.00967419, 0.035113875, -0.027098963, -0.025723448, -0.006270046, 0.06260554, -0.01605961, -0.03525904, 0.045563616, 0.032330144, -0.027684037, 0.011550962, 0.0048916256, -0.04150409, -0.009541396, 0.039722744, -0.03273471, -0.020033045, -0.008671679, -0.03975506, 0.03212881, -0.031568006, 0.06613187, 0.029305322, 0.00043877194, -0.059545748, 0.018299164, -0.015361057, -0.0025851696, -0.04462813, -0.012060422, 0.017624281, -0.010792578, -0.0020085557, 0.013825608, -0.09963809, 0.037131518, -0.021417525, -0.008926662, -0.022849467, -0.008753727, -0.0019328182, 0.032359052, 0.031417888, -0.012599673, 0.050578438, 0.0050431006, 0.004637653, -0.015514047, 0.00071281503, -0.032374702, 0.016277984, -0.019742213, -0.0062648547, -0.006192699, -0.01120743, 0.010651707, 0.004200901, -0.011273762, 0.0031345182, -0.053854335, -0.032104574, 0.00927783, -0.021639498, 0.031567343, 0.004071642, 0.056219358, 0.037930295, -0.054930814, -0.022853505, 0.010485084, 0.0039252164, 0.0074056024, 0.020317817, 0.015868498, -0.036246903, -0.07463288, 0.035048235, 0.0023705803, -0.022672744, -0.060315236, -0.05273544, 0.047668606, -0.0067618345, 0.014985905, -0.02666158, -0.018047273, -0.02579098, 0.008096153, -0.055123188, -0.02531093, -0.0022747726, 0.009340913, 0.046505786, -0.023459814, 0.00768886, 0.01366555, 0.01635776, 0.058384437, -0.032477707, 0.05563568, -0.0014420399, 0.004627554, -0.06863727, 0.0032132848, 0.030648334, -0.010596165, -0.010892046, 0.0028563095, -0.053272795, -0.007137492, 0.02900439, 0.0057823285, -0.023261728, -0.0038535183, 0.038849745, 0.045009214, 0.03658722, 0.0275159, -0.0002718972, -0.05066402, -0.0483356, -0.04750249, 0.01660517, -0.051006608, 0.008012511, 0.0026407104, 0.0011936212, 0.0026980182, -0.032537792, 0.01920997, 0.014562281, -0.0037237552, 0.0130056245, 0.006924417, 0.061607823, 0.046937995, -0.045736298, 0.047900867, 0.009287929, 0.070663996, -0.007514159, -0.043348547, 0.06214783, 0.015529699, 0.009050113, -0.0615028, 0.0038908822, 0.03042876, 0.010302052, -0.0014954348, -0.042212993, 0.0066722115, -0.0016655283, -0.024250103, -0.032465085, -7.296035e-05, -0.020054488, 0.041719183, -0.018925007, 0.014377986, -0.035364944, 0.031157859, -0.017698312, -0.00037704597, -0.014136131, 0.0034422644, -0.023311464, 0.038131252, -0.012142218, 0.031229049, 0.046472967, 0.051133845, 0.03266806, 0.010456809, -0.00345312, -0.017678622, -0.038660906, 0.07454175, 0.0027220019, 0.03414898, -0.03467914, -0.017505499, -0.0051158085, 0.0012319948, -0.01938019, -0.0009098585, 0.03111898, -0.023418507, -0.030197507, 0.035171937, 0.010248531, 0.033190142, 0.031092722, 0.02158465, -0.006680038, -0.03154415, -0.031421926, -0.027638467, 0.00047765046, -0.01315609, 0.010802171, 0.0043468215, -0.018392067, 0.08268301, 0.04145663, 0.029422462, 0.01309247, 0.023337215, 0.0387937, 0.023200445, 0.008484355, 0.00018782871, -0.054185558, -0.008305867, 0.040640682, -0.034867473, -0.07704613, -0.01681471, -0.003290032, 0.013862972, 0.04788017, -0.00378485, -0.03933901, 0.010062974, 0.018196918, 0.025589138, 0.014620346, -0.0040817405, 0.021098418, -0.060774967, -0.014851092, 0.008446233, -0.036860883, -0.049031377, -0.037525352, -0.0233049, -0.014450694, -0.03953845, -0.03994996, -0.023143074, 0.012638299, 0.05460363, -0.010932188, -0.07377024, -0.041164536, 0.031685494, 0.034439307, 0.0031860196, -0.036028277, 0.02011989, -0.021095892, 0.033823054, -0.062870115, -0.027380455, 0.030401997, 0.033662748, 0.0049751895, 0.01904442, 0.009139736, -0.00075081, 0.012039215, -0.021587176, -0.027042286, 0.024522757, -0.03684624, 0.004668453, 0.010616362, 0.031928357, -0.069060385, 0.015361816, 0.02189467, -0.0020050213, 0.026319752, -0.048245475, -0.021641707, 0.027705748, -0.024715636, 0.012769325, -0.013373709, 0.012537063, -0.027826296, 0.0044512125, -0.004315769, -0.05662329, -0.046922848, -0.017451914, -0.016304744, -0.07610093, 0.003052217, 0.022365754, 0.021909691, -0.059066076, 0.029924348, -0.018849649, 0.01978917, 0.0042609223, -0.084092736, 0.0058613163, -0.038614962, -0.014918751, -0.011529756, -0.037016902, -0.0082013495, 0.013960925, 0.06186533, -0.048369937, -0.03562485, -0.021607373, -0.007048248, 0.027862271, 0.013653431, 0.009625212, 0.0074071167, -0.00021976465, -0.02303704, -0.057277665, -0.08144092, -0.018062862, -0.009278082, -0.0050675888, 0.019479152, 0.014787978, 0.01693286, 0.019261533, 0.013280172, -0.019144392, -0.0071226596, -0.012294703, 0.04719348, 0.00079719914, 0.007634834, -0.05764625, 0.043677248, -0.035216875, -0.023594216, -0.015907755, -0.033417862, 0.04731416, 0.018628368, 0.016060365, 0.04767113, -0.0007260691, -0.00062609575, -0.04044023, 0.045141507, -0.018576488, -0.07757932, 0.022593474, 0.0852601, 0.021111544, 0.013768048, 0.001814163, -0.02347676, 0.041998908, -0.053404957, 0.018031558, -0.028869074, -0.042988732, -0.0063033705, 0.021275533, 0.0013476206, -0.0107380785, 0.04396417, -0.015271182, 0.028859226, 0.0060685845, 0.0077648493, 0.03625271, -0.029860727, 0.10041768, -0.03311037, -0.03572217, 0.028560067, -0.0101265935, -0.0016702618, 0.017688882, -0.028633846, -0.00038171644, 0.020287523, -0.025391087, 0.032415602, 0.022331676, -0.019008696, 0.023071123, -0.0641738, -0.006990056, -0.014370413, -0.043074377, 0.05029569, 0.017683672, -0.020929776, -0.083290935, 0.023030225, -0.022355152, 0.035638984, -0.033348687, -0.00876736, 0.0023569476, 0.019060576, 0.014896535, 0.01970586, -0.026400035, -0.06341744, 0.050407525, -0.014197731, 0.05146709, 0.051852845, -0.055415407, 0.037632395, 0.034540292, -0.04234124, -0.014657205, -0.049469646, -0.03452817, 0.011214183, 0.026439419, 0.009218503, 0.03364457, 0.07659272, 0.02849291, 0.031281058, -0.09484341, -0.003753545, -0.031789508, -0.028002638, -0.024503948, -0.021646503, -0.01724736, 0.0011527231, 0.010322123, -0.013372193, -0.035636712, 0.05444086, 0.022094112, -0.0043317014, 0.017256953, 0.011393428, -0.028372237, -0.045986734, -0.04491934, 0.062306125, 0.020940883, 0.04005296, -0.0029345714, 0.009196034, -0.077789366, -0.0039109527, 0.020923717, 0.021334717, -0.0017207536, 0.008323034, -0.000117014264, 0.0050855135, 0.0020964108, 0.03607978, -0.021851247, 0.04810233, 0.0055013113, -0.033117436, -0.0025972875, 0.00031178558, -0.052725848, 0.032397423, 0.0055015637, 0.038317565, 0.025148854, -0.046556786, 0.054473363, 0.0072899763, 0.008615885, 0.023292277, -0.024773698, 0.017661959, 0.025751408, -0.013967995, 0.000346751, -0.007320208, -0.051527683, -0.005558872, -0.022368534, -0.0057151434, 0.019354438, -0.0037457189, 0.034938164, 0.0045944825, -0.015612001, -0.0525673, 0.054850027, 0.047105625, -0.024416314, -0.030404016, -0.0048694094, -0.041187003, 0.0056614964, -0.012343554, -0.03413686, -0.0074106515, -0.037227076, -0.0036980042, 0.011845327, -0.0054429937, 0.0026876675, 0.019067645, 0.027064502, -0.037320357, -0.010433598, 0.008269261, -0.0073645776, -0.003237521, 0.022539448, 0.0048255445, -0.018786913, 0.051421225, -0.021078221, -0.016862173, -0.049764518, -0.0066345953, 0.06302058, -0.011149554, 0.029606251, -0.022844542, 0.009422741, -0.00019792705, -0.015469077, -0.03179304, 0.010457818, -0.00048673895, 0.008016045, -0.05869547, 0.0030471676, 0.040556867], [-0.012113127, -0.09853421, -0.025496922, -0.017921673, 0.028404718, 0.0076441797, -0.010066588, -0.0017092461, 0.02253851, 0.041200504, 0.016077243, 0.020151027, -0.02582696, 0.008827915, -0.031073423, 0.0101163825, 0.017113551, -0.022611964, 0.02908455, 0.064687565, -0.021694483, 0.018588746, -0.027431116, 0.007895412, 0.012445789, 0.0046547996, 0.005598516, 0.033669285, 0.0010421795, 0.015152147, 0.0032036789, -0.043903414, -0.01670234, -0.0332911, 0.012358753, -0.0050341175, 0.012804634, -0.0026818723, -0.051389318, -0.04372147, -0.05192285, 0.020394493, -0.009522766, 0.06064809, -0.0037604647, 0.037144568, 0.032733697, 0.016188353, -0.024959067, -0.020633072, 0.024343021, -0.028822824, -0.033159003, 0.03164039, 0.009099518, 0.020108076, 0.013928905, 0.00034829977, -0.009516285, -0.036738683, -0.030486185, -0.014821285, -0.054190528, -0.008317297, 0.005300371, 0.017321778, 0.0064452174, 0.018055417, -0.036277086, -0.067163266, -0.03393225, 0.026395269, 0.03413986, 0.005062512, 0.0008257138, 0.025257006, -0.049579043, -0.008278948, -0.040246602, 0.02413644, -0.004438649, 0.02377101, -0.019387504, -0.071953356, -0.026561525, 0.02623766, -0.012990023, -0.0023691175, 0.034211054, 0.018299036, -0.03157342, -0.012183651, 0.038764928, 0.007505292, 0.000715372, -0.017118387, 0.00082921167, 0.04224957, 0.0029104713, -0.00512561, 0.051846925, -0.050271217, -0.017798217, -0.010378109, 0.00251639, -0.0028554306, -0.008050144, -0.025417294, -0.012029537, 0.028759036, 0.0034232244, -0.017884636, 0.020249639, -0.075883776, -0.0123497, 0.00911886, 0.0057390505, -0.0019943262, 0.0032152014, -0.008803224, -0.008353845, 0.023012375, 0.011833654, 0.036268033, -0.03589026, 0.019565796, 0.012703091, -0.025380258, -0.029987218, -0.0083618695, 0.0022559497, 0.023726977, 0.062257957, -0.010518026, -0.048201278, 0.033128962, 0.0036654037, 0.06519302, -0.01457108, 0.03323349, -0.045446355, -0.0067604417, -0.0129846735, -0.0053116875, 0.006949329, 0.000943717, -0.007002415, -0.01895294, 0.0050764526, -0.016044732, -0.026782922, 0.004207375, -0.027648346, 0.024668947, 0.023654139, -0.04679799, 0.015925802, 0.0051472853, -0.06669496, -0.013307717, -0.0047172476, 0.014337338, 0.037889417, 0.013341461, 0.012181491, -0.072233185, 0.006854062, 0.020902308, -0.034578335, 0.0021516294, 0.0658892, 0.0052497536, 0.0010765349, -0.004827535, -0.049426984, 0.01334393, 0.01633403, 0.013612241, 0.022653323, 0.0035326888, -0.0035711657, -0.0095184455, -0.02588478, 0.0112587605, -0.027616661, 0.04027623, -0.009513301, -0.026585802, 0.04925065, 0.010997445, 0.022441803, -0.0067011826, 0.024314217, -0.005990913, -0.027687028, 0.007143978, -0.024497546, 0.00034238418, -0.018068995, 0.036327705, 0.013587549, -0.002156362, 0.024531292, -0.009986343, -0.028562332, -0.053880244, 0.026431482, 0.023547145, 0.043138765, -0.016426004, -0.025621716, -0.0018337307, 0.06374703, 0.04928604, 0.009298668, 0.02964257, 0.0112741925, -0.004380213, 0.050870955, 0.050536238, -2.8086204e-05, 0.014253387, 0.046202112, -0.037768435, -0.031670537, 0.005242758, -0.032987397, 0.034511875, 0.009383055, 0.0022073903, 0.0798677, -0.016362013, -0.017068181, -0.02695905, -0.022619577, -0.043843284, -0.031257063, 0.03687708, -0.07327412, 0.03302773, -0.035481207, 0.054474115, 0.019785855, -0.011569886, -0.021590676, -0.025850829, -0.024988696, 0.011871514, -0.03723531, 0.011588388, 0.042490207, 0.021315884, -0.03089116, 0.017619617, 0.0051007834, 0.020352928, 0.018282061, -0.008380182, 0.017683813, 0.040761, 0.01671057, -0.049587682, -0.022076784, -0.06592377, 0.01987639, -0.007827717, 0.03161457, -0.00017654184, -0.030927539, -0.062353425, -0.041188158, -0.059535343, 0.03175737, -0.0060559204, -0.054664597, -0.010622037, 0.0069299876, 0.047963418, 0.037370082, 0.012974077, -0.049566694, 0.013881015, -0.015869426, -0.041215796, 0.004229301, 0.018840801, 0.024361951, -0.058254693, -0.00325409, -0.035144225, 0.026543004, 0.004677742, 0.04116614, 0.061931208, 0.062178943, -0.020852514, 0.011187157, -0.01006484, -0.07758952, -0.009030795, 0.04881691, -0.024076562, 0.003063351, 0.029110888, 0.015611957, -0.009497457, -0.05172141, 0.02768456, 0.02256608, 0.0024230266, -0.025652476, -0.020337496, -0.07135418, 0.023176776, 0.0039242497, -0.014497419, 0.064262874, 0.06689331, -0.009205691, -0.04486838, -0.029096894, -0.007396651, 0.0066810185, -0.051855978, 0.03649005, 0.035528123, 0.0036378321, 0.009591696, -0.047885228, -0.020028653, 0.036203835, 0.0508457, -0.008230595, -0.023811338, 0.001284558, -0.008536148, -0.025220381, -0.0018032782, 0.025634369, -0.006369498, 0.0047621033, -0.062211867, 0.019300263, -0.010807324, 0.03709601, -0.058333706, 0.025705667, -0.038705874, -0.0011290036, 0.009235216, 0.06436905, -0.0019814663, 0.028742319, 0.012165235, -0.023405993, 0.035405487, 0.008834808, -0.008259402, 0.01020239, 0.00143538, 0.017979285, -0.024785817, -0.018269407, 0.018434169, 0.018694919, -0.016820446, 0.04130832, -0.003868283, 0.060549326, -0.031882882, 0.057710666, 0.04094125, 0.0283076, 0.018472286, 0.016832793, 0.057522193, -0.04394699, -0.008947256, 0.018287925, -0.015619633, 0.015453379, -0.028576322, 0.054034304, 0.031221982, -0.008434091, 0.056489274, 0.05313045, -0.0067435694, -0.061911456, 0.050204344, -0.012525005, 0.033589862, 0.022283984, 0.06662994, 0.037428517, -0.00903491, 0.041677047, 0.028938666, 0.050376568, 0.01173242, -0.0068221698, -0.018552942, -0.023658255, -0.012950722, -0.005945633, -0.029318705, 0.0004423834, 0.0117805675, 0.0048055183, 0.030442564, 0.041950293, -0.013088788, 0.01105403, 0.014712901, 0.031437952, -0.01634473, 0.0042999154, 0.039005462, 0.02746193, 0.03356867, 0.03713078, 0.045672074, -0.06420445, -0.00089042523, 0.033979982, -0.006128965, 0.0011374397, -0.055775702, -0.014947826, 0.0072367755, 0.02454343, 0.062331207, -0.0031869095, 0.07938375, 0.04731692, -0.033140074, -0.0044382373, -0.018732367, -0.0798285, -0.013855037, -0.033275463, -0.027250819, -0.007867841, -0.006640278, -0.0021464855, 0.03193926, -0.03397299, -0.014663081, 0.0061098295, -0.07112795, 0.037961025, -0.010230168, -0.034126487, 0.027180037, -0.05311338, 0.04155976, 0.06956325, -0.02553005, -0.008074012, -0.042516544, -0.028900392, -0.01576495, 0.018275168, -0.03184111, 0.0074741705, -0.073220834, 0.02919895, -0.049247563, 0.017483816, 0.041397214, 0.0054283533, -0.05924481, -0.018777633, -0.025453918, -0.027659046, -0.015718397, 0.03264378, 0.045788947, 0.035658944, 0.013204836, 0.021822877, 0.03405406, 0.05919625, -0.0024746722, 0.019380098, 0.014868198, -0.012528298, 0.011105469, -0.039917387, 0.012500316, 0.013037245, 0.009416388, 0.0020547167, 0.0555078, -0.05580204, -0.038078927, 0.022162175, 0.034078132, -0.010962262, -0.011935241, 0.056134544, 0.06467625, -0.033068057, -0.0030371165, -0.013121504, -0.04314905, 0.04051656, 0.023245499, -0.026051238, 0.011671103, -0.016518392, -0.058287207, 0.00862051, -0.033454888, 0.026972631, 0.059466623, 0.017827023, -0.03286559, 0.019214667, -0.010640247, 0.006637809, -0.05924481, 0.005402016, 0.015461976, 0.0093912855, -0.04744408, 0.024569975, -0.04826012, 0.048147775, 0.025708033, -0.021554155, -0.027276952, 0.01235834, 0.04599059, 0.0054727974, -0.03879394, 0.010208975, 0.052808646, -0.029663969, 0.012229773, -0.025195073, 0.03612894, -0.017525379, 0.022140158, -0.029029405, 0.009194579, -0.021513004, 0.016984232, -0.005678145, 0.015687276, -0.03098343, 0.012808955, -0.08244875, -0.042324364, 0.029943455, -0.023961956, 0.007706113, 0.008827915, 0.046330504, 0.019575158, -0.04787597, 0.0021473086, 0.055778377, 0.004957318, -0.03488492, 0.019813633, 0.01002626, -0.05704812, -0.037074227, 0.027649993, -0.0007392947, -0.042557698, -0.046732973, -0.014948033, 0.029005539, -0.03251045, 0.038445793, -0.0132496925, -0.021766499, -0.007828129, 0.013464917, -0.042184036, -0.011006499, -0.015530513, 0.04684408, 0.025073059, -0.0002641955, 0.029611088, 0.04976587, -0.00087489036, 0.043198433, -0.013711623, 0.037455678, 0.02424714, -0.00024485408, -0.0354417, -0.051133353, 0.057656754, -0.0014183018, -0.027513368, -0.019030718, -0.0536144, -0.008390265, -0.015716752, 0.030571165, -0.037468433, -0.018092453, 0.08547753, 0.009033264, 0.020093672, 0.011766988, 0.026175003, -0.03767543, -0.018641831, -0.0187729, 0.002792571, -0.056145243, 0.01322212, -0.032641724, -0.0028477146, 0.01923195, 0.017239835, 0.025994861, 0.052834984, -0.0170653, 0.02135786, -0.010028729, 0.073862806, 0.04407126, -0.04108775, 0.058840696, 0.011518429, 0.061126277, -0.0007106941, -0.100056835, 0.0632456, -0.01599, -0.03144667, -0.02568581, -0.015666546, 0.013294548, 0.017505575, -0.010507737, -0.04353876, 0.016423741, -0.010373994, 0.0155046135, -0.012122746, -0.0040851533, 0.019736884, 0.024947954, -0.008745612, -0.011433735, -0.047953542, 0.0322586, 0.0043662214, 0.003826102, -0.00691435, 0.020385439, -0.012251294, 0.057999555, -0.021519998, 0.028872205, 0.017971877, 0.05320103, 0.010575227, 0.003347299, -0.03188072, -0.017701508, -0.036552083, 0.06190158, 0.018707493, 0.015315108, -0.043234233, -0.042830124, -0.01932413, -0.020472629, -0.012770683, -0.0051394664, 0.010627902, -0.030590557, -0.060096655, 0.027899373, 0.01535338, -0.0001925911, 0.025460606, 0.02288861, 0.018394098, -0.045988947, -0.044979077, -0.035069276, -0.004141532, 0.015063259, -0.00090986956, 0.012722536, -0.0017217974, 0.06539538, 0.049254972, 0.01772085, 0.026509697, 0.05966785, 0.04305749, -0.00873769, 0.01686489, 0.03069246, -0.02769526, -0.015317784, 0.008809809, -0.014680545, -0.01636366, 0.009642724, 0.00010452594, -0.026786212, 0.05722919, 0.045639157, 0.009391697, 0.041655235, -0.013410596, -0.022412997, 0.025955254, -0.010244366, 0.02476771, -0.049352296, -0.030551206, -0.006858795, 0.00041316554, -0.043676205, -0.05601109, -0.012880971, -0.031293586, 0.00369956, -0.023546938, -0.027229419, 0.0075504817, 0.010269661, -0.012136532, -0.021577612, -0.06334437, -0.0075764847, -0.002900492, -0.016636908, -0.028600601, 0.00783533, -0.0093044555, -0.0029003893, -0.05417695, -0.006097895, 0.0001807985, -0.0022452502, -0.0056503676, -0.018404098, 0.03784168, 0.015015522, 0.014435486, -0.026849175, -0.006786779, 0.017244311, -0.027758017, -0.011815959, 0.021470256, 0.03136992, -0.04399184, 0.014923959, -0.014112649, -0.027595673, 0.0056822607, -0.011229337, 0.036319576, 0.019943623, 0.017131554, 0.0044781547, -0.007788417, 0.011259995, 0.01293344, -0.01414485, 0.0063760825, -0.0725657, -0.03941945, 0.01472792, -0.011390138, -0.049463816, 0.034736615, 0.014740627, -0.050435208, -0.019124132, 0.0644762, -0.0034675337, -0.026166772, -0.017363548, -0.05506727, 0.012314514, 0.005673413, -0.038914103, 0.004418176, -0.033110444, 0.02780884, 0.011344768, 0.012895373, -0.042419426, -0.013437345, -0.01756365, -0.015392062, 0.052540954, 0.0077382117, 0.015927037, -0.013945984, -0.0020408279, -0.03635372, -0.020802926, -0.032566827, -0.00934396, -0.014176023, -0.014531163, 0.025483754, -0.008097056, 0.029629607, 0.009462067, -0.044521056, 0.046626803, -0.031515703, -0.009097872, -0.022799926, -0.015615929, 0.00023374305, 0.010510207, -0.031977735, 0.0261677, 0.016622918, -0.017873524, 0.008534091, 0.043697916, 0.012983027, 0.0044418382, 0.007404881, 0.020103548, 0.011904023, -0.033240486, 0.0072221663, -0.020231944, -0.05351286, 0.018530928, 0.089941695, -0.0054896693, -0.020218775, 0.018564878, 0.0013197429, 0.06396165, -0.04805971, -0.0037184898, -0.025278613, -0.053034984, 0.027043412, 0.008278846, -0.0023215872, 0.0018872282, 0.020929055, -0.036855683, 0.007644385, 0.022588713, 0.004744196, 0.021540575, -0.000693899, 0.040623553, -0.048700657, -0.010845595, 0.05231565, 0.009992618, 0.030966016, 0.021912588, 0.0012847637, 0.026941355, 0.04221531, -0.038005877, 0.06186372, -0.01597948, -0.025775932, 0.0078003514, -0.012531899, 0.02818332, 0.011880978, -0.0037573783, 0.049825132, 0.04558319, -0.021795718, -0.050002087, 0.009309599, -0.021031061, -0.021299426, 0.037400123, -0.009717827, 0.023750847, -0.027438885, 0.013820469, 0.053588063, -0.029394014, -0.032398928, 0.011746411, 0.016121274, 0.060931217, 0.05748258, -0.027900608, 0.062465776, 0.028513629, -0.035631824, -0.029475493, -0.03878139, -0.0057177544, -0.009686345, 0.036001574, 0.004940085, 0.07026612, 0.05938107, 0.03562524, 0.012137716, -0.05544731, -0.020439554, -0.020601487, -0.030287832, -0.041369025, -0.04636919, -0.010186238, -0.015634447, 0.052199595, -0.012024599, -0.015302505, 0.063512266, -0.014577664, -0.022263872, -0.023282126, 0.016204402, -0.07993683, -0.0014792067, -0.005374444, 0.06549373, 0.01632971, 0.06092427, -0.011460996, 0.012697279, -0.038968835, 0.0058349343, 0.016524976, 0.011076869, 0.0035870094, 0.0009432026, -0.0060592643, 0.0107892165, 0.025763175, 0.006049747, -0.04526467, 0.0674036, -0.005737198, -0.004846876, -0.01754719, 0.025843835, -0.054384768, 0.025098162, 0.01047528, 0.027991554, 0.0141151175, -0.035648733, 0.05802836, -0.001432557, -0.0031336804, 0.042842466, -0.017244466, 0.0429758, -0.0062112687, -0.036856093, 0.01112512, -0.0044201305, -0.040687546, -0.025813382, -0.0054438883, -0.010940451, -0.006738631, 0.00624059, 0.068182185, -0.010236856, -0.05289054, -0.043398842, 0.06526699, 0.0009830171, -0.007144801, -0.037602898, -0.012850107, -0.025510913, 0.02794999, 0.0134517485, -0.043045346, 0.018707674, -0.064099915, 0.028220976, 0.026661549, -0.016043702, -0.0032164361, 0.041940622, 0.030319108, -0.013395781, -0.005858597, 0.022872869, -0.021720821, 0.010227081, 0.045239154, 0.036369678, 0.027899373, 0.008820508, 0.0002565824, 0.026076341, -0.05580281, -0.0042616953, 0.054746076, 0.013384773, 0.00074238115, -0.008746847, 0.044236694, 0.00790642, 0.012829222, -0.005819297, -0.021932341, 0.031778768, 0.026015386, -0.03278987, 0.011904435, -0.00058718683], [0.02226967, -0.07977743, -0.027195374, -0.035371926, 0.03628086, -0.004044488, -0.0038108092, -0.03759483, 0.012034943, 0.03718344, 0.0027098618, 0.03314546, -0.048778925, -0.006633141, -0.005369856, 0.013691264, 0.008629077, -0.009916385, 0.0124893235, 0.048666984, 0.0119798565, -0.007309988, -0.0008481118, 0.0004293969, -0.0058953795, 0.014643282, -0.023068784, 0.00073255255, 0.008800165, 0.026116936, 0.022469888, -0.036188874, -0.019096863, -0.019732483, 0.0018867333, 0.005859361, -0.031410947, -0.050927542, -0.06926497, -0.028389104, -0.0513073, 0.008515261, -0.017089715, 0.038885847, 0.014422955, 0.06390881, -0.00020339852, 0.018754333, -0.03179232, -0.02933459, 0.024116145, -0.034967244, -0.032471728, 0.0017730278, 0.011568733, 0.020563468, 0.037029658, 0.02403422, 0.012632603, -0.018069277, -0.024684982, -0.00808827, -0.06120036, -0.0006730514, 0.028423885, 0.013278022, 0.017723924, 0.00898935, -0.049890555, -0.06382759, -0.021363202, -0.010708185, 0.027746774, -0.015297265, 0.021166159, 0.019128643, -0.0747419, -0.0025876814, -0.021802487, 0.0047375793, -0.028050987, 0.015846414, -0.0014165066, -0.07032505, -0.044135366, 0.014304285, -0.047366437, 0.014300223, 0.013636972, 0.021816082, -0.04138772, -0.0037240295, 0.022435987, 0.013839575, 0.0068249744, -0.0033304747, -0.0075181536, 0.03737254, 0.0035079184, 0.026792107, 0.05094957, -0.029552113, -0.0067730653, -0.010304114, -0.0030073232, 0.003200702, -0.007568739, -0.022629103, 0.0053515704, -0.02686132, 0.008105662, 0.015719598, -0.0017137034, -0.06744992, 0.028252268, -0.037310567, 0.003677594, -0.01873244, -0.014542289, -0.0012069725, 0.013699032, 0.01415562, 0.024966775, 0.053918973, 0.0019531203, 0.010107071, -0.00971899, -0.025303168, -0.03228537, 0.014253391, 0.012624129, 0.0076266504, 0.00897037, -0.018507147, -0.05119746, 0.05776801, -0.0069759344, 0.062431347, -0.019134294, 0.06304931, -0.03385844, 0.012722827, 0.024099547, 0.022330405, 0.014929487, -0.008905748, -0.0020477572, -0.041494712, 0.018479163, -0.016527014, -0.013535184, -0.035137806, -0.015404967, 0.005492467, 0.004520674, -0.05458073, 0.014449771, 0.021692578, -0.057493985, 0.01226765, -0.02178183, 0.005309902, 0.025355915, 0.002928392, -0.026349999, -0.039731443, 0.03786172, 0.051020548, -0.02795357, 0.0050809025, 0.05288433, 0.030003756, 0.03175171, -0.007461654, -0.016667027, -0.0032017615, 0.04319959, 0.022657925, 0.01540616, 0.013887424, -0.003503328, -0.0056916275, -0.018957732, 0.012167894, -0.032249615, 0.055733494, 0.006876265, -0.043732274, 0.036477905, 0.016863717, 0.015186827, -0.03732646, 0.028758293, 0.010742338, -0.022832192, -0.00829414, -0.016145466, 0.01475275, 0.029540284, -0.0010085177, 0.0061407993, -0.007876573, 0.033439286, -0.040899303, -0.028545715, -0.05089342, 0.016878845, 0.0038324823, 0.06606912, -0.0070145903, 0.011335982, 0.011843021, 0.03766616, 0.05184076, 0.0025417753, 0.03701006, -0.009458738, -0.008101336, 0.050088655, 0.05721714, 0.003991696, 0.040886283, 0.04490305, -0.06109259, -0.07637826, 0.0068000793, -0.03166661, 0.0376026, 0.015105519, 0.0046411767, 0.071788386, 0.0018327056, 8.192441e-05, -0.053507056, -0.01657345, -0.022759978, -0.01219376, 0.035703596, -0.075097494, 0.0015879917, -0.03218958, 0.042060416, 0.014260144, -0.032849573, -0.021136146, -0.0048112934, -0.011106054, -0.031435404, -0.007118677, 0.013533771, 0.017681194, 0.002646675, -0.04136971, 0.023610562, 0.012490295, -0.025634218, 0.019147988, -0.009438964, -0.00024277446, 0.054495268, 0.020067243, -0.06202808, -0.008188203, -0.05389355, 0.03137352, 0.0052064373, 0.022841372, 0.0011804884, -0.02579701, -0.085178785, -0.039384983, -0.055931773, 0.021888474, -0.020113502, -0.041366003, 0.013092369, 0.018663935, 0.02116263, 0.039261922, -0.0076576374, -0.084944315, 0.0039351964, -0.0057274695, -0.017083712, 0.012285484, 0.0062029487, 0.039745346, -0.05596285, -0.0248808, -0.043761056, -0.025979927, -0.019684458, 0.03356588, 0.031811655, 0.037114054, 0.010131922, 0.047009077, -0.0056881076, -0.057811797, -0.026177675, 0.02069439, -0.025112657, 0.039771475, 0.022270374, -0.0030909693, -0.015437807, -0.07198755, 0.041333582, 0.003131843, -0.0054398514, -0.032767646, -0.03903557, -0.061230727, 0.019119816, 0.024543423, 0.0034508891, 0.034319617, 0.033326108, -0.0058438233, -0.020906262, -0.03084315, 0.010728566, 0.022217229, -0.047123488, 0.04197461, 0.045177076, -0.009550903, 0.012004752, -0.04140149, -0.018921057, 0.0070006526, 0.030602297, -0.029344477, 0.005181454, 0.023836825, -0.006630271, 0.028650768, 0.03430991, 0.0018907501, 0.017792428, -0.01013638, -0.075198136, 0.036142793, -0.011369484, 0.025865516, -0.051486403, 0.026126118, -0.033629972, -0.013004794, -0.014650168, 0.013471622, -0.015041781, -0.0014368553, -0.0025200585, -0.04251736, 0.019509664, 0.015502076, 0.027698044, -0.022287678, 0.036792535, -0.017555313, -0.018898055, -0.007252252, 0.010011375, 0.015840014, -0.03003487, 0.045427084, 0.009205196, 0.025023669, -0.027730001, 0.042821042, 0.00726161, 0.005244575, 0.018888786, 0.051920302, 0.054209244, -0.057299066, -0.0030267893, 0.014329622, -0.025376087, -0.005011867, 0.006054461, 0.04687648, 0.03231918, -0.0022529212, 0.036281336, 0.029765388, -0.0061814087, -0.042264875, 0.053123746, 0.010527993, 0.027895615, 0.04242943, 0.04003314, 0.010518812, 0.011438696, -0.010770235, 0.025342187, 0.029265732, 0.008109678, -0.014682479, -0.010362025, -0.013695501, -0.005155588, -0.0013426599, -0.019895183, 0.01364889, -0.013289587, -0.008356643, 0.02134974, 0.026013117, -0.005906326, -0.015362239, 0.02810431, 0.033953432, 0.00020516415, -0.025185047, 0.03216573, -0.0038709505, 0.051626503, 0.050489448, 0.026306387, -0.0664294, 0.03862736, 0.0006645765, 0.0044115586, 0.020184524, -0.036336303, -0.009400826, 0.026445428, 0.009282177, 0.030184556, 0.035551663, 0.061374806, 0.009145166, -0.049506355, 0.013951273, -0.019740606, -0.07687617, -0.012109982, -0.030069085, -0.010673832, -0.030941121, 0.0026263923, 0.011495306, 0.016469983, -0.06949168, -0.0044560526, 0.013031058, -0.060594227, 0.04851055, -0.027460216, -0.03234319, 0.027257875, -0.041580874, 0.039644353, 0.07407379, 0.001069961, -0.030505897, -0.025333006, -0.034560096, 0.00981239, 0.033267878, -0.045102477, -0.0031413774, -0.014324323, 0.03649238, -0.023970881, 0.031544782, 0.039698556, 0.011250658, -0.027037725, -0.016997904, -0.038045414, -0.028032891, -0.0032685015, 0.03463496, -0.0010300583, 0.034609534, -0.020578917, 0.007460771, 0.015464645, 0.060368404, 0.023545852, 0.021141175, 0.010902655, 0.021885648, 0.03046564, -0.009891137, 0.023452673, 0.009616231, -0.0026000848, -0.013845932, 0.075398706, -0.045996323, -0.044451762, 0.02721868, 0.0021226192, -0.025953796, 0.0025195729, 0.050543126, 0.07119655, -0.0051146257, 0.0120510105, 0.008616189, -0.052795336, 0.039600566, 0.023820227, -0.024787078, 0.013937037, -0.0071053538, -0.065781064, -0.0047897534, -0.026054258, 0.057197366, 0.029477779, -0.01072221, -0.033238247, 0.015144717, -0.0016778614, -0.041432567, -0.046385463, 0.026862731, 0.015094926, -0.017021386, -0.042403653, 0.011001884, -0.027448386, 0.039141573, 0.008940001, -0.012366348, -0.013518587, -0.0044538123, 0.047871396, 0.050975345, -0.002563669, 0.0035067047, 0.034787416, -0.015064557, 0.023064546, -0.00764775, 0.030200798, -0.016429376, 0.0089975605, 0.00081924413, -0.0032379564, -0.0050160354, 0.0036293925, -0.025666706, 0.035117675, 0.0077032787, 0.008104337, -0.07780294, 0.0041802637, 0.03386868, -0.061249796, -0.003969803, 0.026580453, 0.04846041, 0.011641036, -0.038987458, 0.025749689, 0.04730005, -0.014799362, -0.026514553, 0.044353593, 0.013847211, -0.003812001, -0.042971473, 0.011527684, -0.014526398, -0.0080371555, -0.05869981, -0.021788538, 0.033141956, -0.015134476, 0.038183838, -0.034258883, 0.002711804, -0.022037843, 0.0312584, -0.014992873, -0.014073695, -0.019957952, 0.03186471, 0.041300144, -0.011457853, 0.015310066, 0.0247387, -0.0020682383, 0.032264974, -0.02131765, 0.017692208, 0.026806938, -0.0038343803, -0.038265232, -0.036870223, 0.05363295, -0.0048617898, -0.027433908, -0.023743954, -0.06157114, -0.016235985, 0.01597526, 0.02231584, -0.03799792, 0.005990734, 0.08177751, 0.018930541, 0.02698915, 0.03467305, 0.0080591375, -0.058008134, 0.006236275, -0.029867098, 0.026198376, -0.06842807, 0.01765683, -0.034555152, -0.010061894, 0.011157456, 0.0076168515, 0.0004961371, 0.013628761, 0.012760433, 0.04596595, -1.1299919e-05, 0.05061304, 0.004663688, -0.04289308, 0.047660936, -0.01861238, 0.06593008, 0.00018997988, -0.08066589, 0.054253735, -0.029568357, -0.035908315, -0.022226764, -0.027580278, 0.030049307, 0.021099774, -0.008123229, -0.01212254, 0.010475025, 0.05962261, -0.02906604, -0.040193457, 0.009395794, -0.014169745, 0.04458842, 0.015363917, -0.018500792, -0.023346867, 0.040329408, 0.02656399, -0.0043356377, -0.013412297, 0.015641384, -0.016954646, 0.03656371, -0.037952542, -0.005384764, 0.031704042, 0.05727505, 0.022296328, 0.017175259, -0.036854684, -0.021481322, -0.041948125, 0.05564292, 0.025070282, 0.02443316, -0.060852885, -0.027777674, 0.008969267, -0.03521302, -0.03497669, -0.01506544, -0.02032255, -0.013505654, -0.025077345, 0.05706459, 0.015202628, 0.039873175, 0.014629817, 0.011003737, 0.03536592, -0.050654713, -0.024569025, -0.025725326, 0.012160787, 0.017369388, 0.007027137, 0.022375958, 0.036608737, 0.062180627, 0.06448722, 0.029468777, 0.049711168, 0.028475443, 0.055396438, 0.011669285, 0.006026035, 0.008915989, -0.020125162, -0.039011557, 0.006592796, -0.02300614, -0.05999692, -0.02361586, 0.01452216, -0.024307184, 0.08645991, 0.029158205, -0.015386826, 0.034997262, -0.0031932862, -0.035369452, -0.012601131, -0.037947245, -0.010538586, -0.06441236, -0.025835851, -0.001584637, -0.0036992226, -0.050194237, -0.07339439, -0.009503231, -0.024786372, -0.028222255, -0.017309181, 0.002642592, 0.0240163, 0.032329068, -0.022214934, -0.0003252258, -0.062036555, 0.011726446, 0.008919344, -0.035181943, -0.028928852, 0.027494645, -0.006158853, 0.017108783, -0.078864954, 0.020862121, 0.009427663, 0.046566613, -0.018951023, -0.018688124, 0.035090484, 0.017084064, 0.020330496, -0.002747381, 0.005978761, 0.06378239, -0.015640853, -0.0039018267, 0.008458342, 0.002186744, -0.07277501, -0.015289761, 0.013330903, -0.020226855, 0.00030068378, -0.01705759, -0.0007013012, 0.003730562, 0.021469316, 0.013087072, -0.026424153, -0.0070071416, -0.008331042, -0.00820277, 0.0076380386, -0.076665714, -0.024794493, 0.016281065, -0.02680142, -0.030150656, 0.01802337, 0.031161027, -0.011786698, -0.042021573, 0.036291808, -0.013381929, -0.036562297, -0.00954372, -0.034110922, 0.0027960236, -0.014814105, 0.00032734452, -0.004341111, -0.011868446, -0.01177169, -0.015799934, 0.036986552, -0.012456835, 0.009059169, -0.0059903692, -0.030712383, 0.051415157, 0.010471493, 0.00969533, -0.0040905704, -0.0004636498, -0.0005469867, -0.028116139, -0.066282496, -0.026284626, -0.016510595, 0.019238112, 0.009875069, -0.04345384, 0.023072667, 0.016094616, -0.00053762895, 0.05716629, -0.035812356, -0.022175958, -0.007243248, -0.014270385, -0.020387879, -0.04215011, -0.02349112, -0.00915576, 0.01888234, 0.0059882505, 0.011687647, 0.041460816, 0.004583353, -0.004087569, -0.0048323926, 0.0060309786, -0.01417928, 0.0064338916, -0.003431644, -0.037309505, -0.03884241, 0.005633716, 0.06965391, -0.006109107, -0.017263452, 0.0150423115, 0.01912158, 0.015233703, -0.08951513, -0.017558308, -0.021379491, -0.05359869, -0.017200595, 0.016630368, 0.022197278, 0.0181723, 0.040204756, -0.041655738, 0.04735019, 0.022346295, 0.033314988, 0.007627445, -0.008867788, 0.07028691, -0.060027286, 0.009791556, 0.05266892, 0.005157354, 0.004894277, 0.046254806, -0.01809576, 0.03818949, 0.014451006, -0.05610904, 0.040303987, 0.019611008, -0.035281878, 0.041545212, -0.017670954, 0.0049959766, 0.004691232, -0.02618615, 0.046550017, 0.013968112, -0.008879176, -0.05260324, -0.004539257, -0.028645469, -0.033605516, 0.013155225, -0.0152555965, 0.018721757, 0.0012666503, 0.010573899, 0.02411738, -0.026697822, -0.035006795, 0.047239307, -0.0052020233, 0.049839705, 0.058185402, -0.04688619, 0.028795812, 0.0027469397, -0.02808745, -0.027108505, -0.04517317, -0.010070523, -0.025757989, 0.019175168, 0.007101293, 0.027050946, 0.042870477, 0.017859522, 0.044158667, -0.1189712, 0.0006862273, 0.008426914, -0.026649445, -0.027222741, -0.049890112, -0.0060479282, 0.018498674, 0.013293824, -0.011875289, -0.035736345, 0.059138123, -0.042598575, -0.035927515, -0.01612569, 0.011273434, -0.091879636, 0.004464174, -0.00944991, 0.0786326, 0.014914988, 0.042565737, -0.019625135, 0.023817405, -0.05015169, 0.03245372, 0.031048292, 0.005185515, -0.011321988, 0.029111415, -0.013147456, 0.001464752, 0.020432549, 0.028844455, -0.04679208, 0.058028616, 0.010139558, -0.029785879, -0.05030159, 0.0021695844, -0.057120387, 0.04867016, -0.008933292, 0.02748564, 0.030610068, -0.04049891, 0.08503472, -0.010782594, 0.029710697, 0.04277143, -0.004482007, 0.00933797, 0.01701132, -0.031931452, 0.01385935, 0.014241429, -0.034503244, -0.014593844, -0.025342893, -0.0054103187, -0.018006422, 0.009704512, 0.04364664, 0.0064388346, -0.031729113, -0.003783354, 0.059429098, 0.018071396, -0.037414033, -0.04367348, 0.020439435, -0.037378363, -0.01084086, 4.7848094e-05, -0.027739888, 0.006306767, -0.07212032, 0.01853116, 0.017134031, 0.006857285, 0.007799769, 0.036434647, -0.0084638605, 0.0056895087, -0.0047705076, -0.009730643, -0.010191821, 0.0066246656, 0.038715996, 0.027469749, 0.0322136, 0.04457571, -0.01146849, 0.011249069, -0.040130246, 0.033454333, 0.069446474, 0.03253441, 0.01560201, -0.019252943, 0.02831698, -0.019105691, -0.014994286, 0.00020198605, -0.028075574, 0.048613664, 0.029387558, -0.03352545, -0.006625637, 0.017662833], [0.021204228, -0.084108174, -0.050547093, -0.03580944, 0.041359518, 0.03593634, -0.006220993, -0.04143721, 0.0019132936, 0.074587196, 0.033151254, 0.04392814, -0.03321059, 0.015934223, -0.030489037, 0.00982447, 0.010371407, -0.02772713, 0.05272756, 0.030167464, -0.02606187, -0.008371242, -0.008693567, 0.007641465, -0.015882956, 0.01111155, -0.00947129, 0.043672826, -0.00650179, 0.0327169, 0.005504378, -0.032713417, -0.02031044, -0.029122127, -0.0011543214, -0.051752836, -0.02089393, -0.037048414, -0.058364514, -0.032350115, -0.038299814, 0.007818371, 0.011814743, 0.028832873, 0.0058134203, 0.0396854, -0.005342633, 0.029635282, -0.044748265, -0.033429984, 0.042209778, -0.029425146, -0.012052412, 0.006621801, -0.00043229692, 0.020333461, 0.0103589855, 0.022769958, 0.034006514, -0.013273983, 0.0066661066, -0.020915685, -0.0755298, 0.0015120576, 0.0034138323, 0.023615407, 0.011615368, 0.016837506, -0.041539744, -0.05075153, -0.014740818, 0.017997287, 0.03659934, 0.0005209874, 0.04434461, 0.02967745, -0.079467624, -0.017902978, -0.025358042, 0.019720145, -0.020301973, -0.008865093, -0.010002009, -0.03959789, -0.014586382, -0.012794493, 0.016176956, 0.004268062, 0.04328855, 0.024294704, -0.031893924, 0.0031561472, 0.091395035, -0.039525893, -0.0008149081, -0.0069211805, -0.006286621, 0.059748728, 0.018605856, 0.016235184, 0.067269325, -0.06477681, -0.036915604, -0.009694717, 0.007827074, 0.009097759, 0.010100113, -0.00011620353, 0.002095026, 0.029095385, 0.014046168, -0.020386787, -0.0067879474, -0.069998555, 0.009795354, 0.0010017832, 0.023821902, -0.01462679, -0.017401058, 0.012210014, 0.022013675, 0.02925805, -0.0017858356, 0.0845555, -0.035919134, -0.018999228, 0.016700078, -0.012941098, -0.07081504, 0.012494204, 0.022847729, 0.024715925, 0.03802678, -0.012000195, -0.046713386, 0.030462056, -0.007812991, 0.045281835, -0.011034647, 0.03752209, -0.045106985, -0.0068523493, 0.0050280625, 0.010845399, -0.0037126334, -0.003986562, 0.016752612, -0.017066235, -0.004780742, -0.0092071965, -0.019840086, -0.017726704, -0.025163097, 0.018618515, 0.02464923, -0.052220263, -0.025188098, -0.0074935947, -0.039581433, -0.0007199674, -0.022702867, 0.000772343, 0.018780546, -0.0075632967, -0.017632397, -0.04874828, 0.016401332, 0.03132325, -0.02946328, -0.01315234, 0.060697522, 0.008276935, 0.01452277, 0.0040642554, -0.051983543, -0.0067490214, 0.044869002, -0.0039897272, 0.032827348, 0.0048199836, 0.00251593, -0.0005711873, -0.0038552275, -0.023542874, -0.027628392, 0.04308538, 0.012656393, -0.05384747, 0.03659444, 0.02218544, -0.018543828, -0.034741513, 0.010347119, 0.01959672, -0.013932239, -0.005973039, -0.0321058, -0.020482043, -0.010002958, 0.02078902, -0.024628263, 0.0011956205, 0.03499326, -0.013235691, -0.031657677, 0.006446319, 0.050600257, 0.011030217, 0.06334985, -0.021358505, -0.008993698, 0.022923762, 0.020852787, 0.030145906, 0.026204439, 0.035787757, -0.0070196027, -0.013555958, 0.0017697945, 0.054618787, -0.021911692, 0.028871167, 0.077060245, -0.013716724, -0.06632877, 0.006552494, -0.038515408, 0.013553267, 0.026283398, 0.020481253, 0.06087095, -0.03922319, -0.018678486, -0.05253531, 0.0048047933, -0.028153732, -0.01723238, 0.056637857, -0.06314521, -0.0043432233, 0.020923756, 0.057469856, 0.0046065254, -0.01505846, -0.016061127, -0.041877735, 0.01836977, -0.009511639, -0.0037806202, 0.0045998795, 0.021288881, -0.005611315, -0.0676839, 0.04018083, 0.022230694, -0.020800887, 0.016450701, -0.018897956, 0.009823836, 0.054348517, 0.028175568, -0.04805521, 0.00540205, -0.04476488, 0.024273185, 0.00049385015, 0.03760018, -0.025198383, -0.0026190989, -0.05444093, -0.051665492, -0.039820053, 0.02960316, 0.0011706195, -0.055684432, 0.021593325, 0.026450811, 0.014590496, 0.04505524, 0.024525112, -0.035375874, 0.018823745, 0.0021580034, -0.027977299, 0.017436976, 0.019526543, 0.023598475, -0.03227076, 0.019863347, -0.05615643, -0.014489225, -0.0022602228, 0.030427722, 0.05243673, 0.01765265, -0.013949961, 0.045374084, -0.035840135, -0.02758045, -0.03310133, 0.010508439, -0.023149088, 0.03952083, 0.032887477, 0.012394199, -0.029377677, -0.05864593, 0.018637503, 0.00783103, 0.0057148007, -0.014994151, -0.03870513, -0.047224164, 0.008024036, -0.0018459648, 0.005885377, 0.0073865484, 0.05268389, -0.02238529, -0.0038469995, 0.025242848, 0.02367601, -0.009778897, -0.01962188, 0.0377149, 0.046231717, 0.008831389, 0.037282206, -0.03846335, -0.014880065, 0.022381136, 0.018341605, -0.037475727, 0.004001357, -0.002017491, 0.0090329, -0.0060319025, 0.00045065212, 0.015172799, 0.026799718, -0.0068784575, -0.078333914, 0.0021627503, -0.00091871, 0.07080302, -0.0841808, -0.005826465, -0.06818012, -0.001993182, -0.016495956, 0.030953536, -0.027023938, 0.013137901, -0.0054287123, -0.017947601, 0.050788876, 0.020814573, 0.0045751156, -0.021412462, -0.018449679, 0.008601949, -0.026283398, -0.044872325, 0.053240716, -0.0060888673, 0.00016820338, 0.069080636, -0.03876811, 0.00815731, -0.062131763, 0.04530842, -0.0033090017, -0.0053519686, 0.019853773, 0.023573631, 0.051723093, -0.061065264, -0.001205985, 0.041459363, -0.007282668, 0.020952158, 0.0010763117, 0.045135625, 0.04378913, -0.004318143, 0.028921485, 0.038035166, 0.038581233, -0.032992546, 0.06781681, -0.002304212, 0.03363498, 0.026880892, 0.017726073, 0.016372848, 0.032753292, 0.055916306, 0.028058633, 0.030448766, -0.027769698, -0.00831412, 0.018550316, -0.0129084615, 0.010048529, -0.04967553, -0.019350449, 0.015107132, -0.010742467, -0.010635738, 0.02478918, 0.0015658896, -0.04274502, 0.0008514603, 0.023536129, 0.030424872, -0.03427298, -0.0035988875, 0.043407228, 0.016544059, -0.0075495704, 0.014258637, 0.065369874, -0.0620691, 0.029580692, 0.052328177, -0.00025127653, 0.033076726, -0.05927468, -0.03469072, 0.041339897, 0.0413467, 0.023154626, 0.026770761, 0.07625721, 0.033113755, -0.053476963, 0.011133069, -0.010666515, -0.082574405, -0.01026717, -0.039758656, -0.06055648, -0.014910129, -0.009805164, -0.010829892, 0.02243814, -0.05229558, -0.0071164425, 0.02690415, -0.071977116, 0.007936414, -0.015950443, -0.018123874, -0.014889241, -0.02670348, 0.029068327, 0.08165032, -0.02145851, -0.008158417, -0.020779999, -0.0071489993, -0.009043858, 0.020769872, -0.0691156, 0.008212059, -0.03673875, 0.03684714, -0.03478645, 0.008540554, 0.02937467, 0.03150783, -0.056906223, -0.055740982, -0.02994558, -0.015041147, 0.015360782, 0.06448098, -0.020361628, 0.022049673, -0.00878827, 0.0020723192, 0.010758686, 0.049894847, 0.021661999, 0.018220952, 0.008174597, -0.005497386, 0.018645257, -0.026076825, 0.0044425945, 0.0042322613, -0.012560029, -0.0059095873, 0.09164441, -0.034809235, -0.05980666, -0.0018293104, 0.02568171, -0.026545752, 0.022732297, 0.021600287, 0.028642993, -0.02288452, 0.013708653, 0.03826239, -0.047006514, 0.025071321, 0.035989508, -0.011316305, -0.0040450697, -0.0081927935, -0.040456787, -0.0365029, 0.028232057, 0.0371769, 0.0052613, -0.0069890637, -0.03537967, 0.0033444464, 0.0017725438, -0.0137528, -0.02102121, -0.005747397, 0.02999843, 0.0056078336, -0.056202393, 0.0148292715, -0.031537578, 0.03159755, -0.015945774, -0.004281195, 0.00933774, -0.017569736, 0.010371644, 0.0017905827, 0.00074433547, 0.0054456433, 0.006812019, -0.01466898, 0.028627804, -0.035868555, 0.024837371, -0.002648214, 0.03154818, 0.0045229774, -0.033561558, -0.001975559, 0.03807409, 0.00088951574, -0.03278241, 0.023284536, -0.016459562, -0.055150453, -0.03215833, 0.056049224, -0.030049866, -0.010573552, 0.042541053, 0.0518174, -0.022895278, -0.06892952, -0.028276838, 0.044628482, -0.005609713, 0.010387053, 0.014349978, 0.0057692328, -0.009084565, -0.04830459, 0.013668937, -0.003730697, -0.042126477, -0.06068898, -0.028387442, 0.029700978, 0.0045463964, 0.042297177, -0.013166383, 0.0108468225, -0.017750915, -0.0004976478, -0.00763743, -0.0020940765, -0.02935568, 0.0052236402, 0.01863766, 0.012358833, -0.00089529133, 0.04524307, 0.00064528064, 0.046972096, -0.013706913, 0.03262948, 0.04276891, -0.01900892, -0.036770873, -0.0141151585, 0.04316355, -0.009715762, -0.03450685, -0.030127866, -0.04967079, -0.005008758, -0.018107735, 0.0112745315, -0.030807324, -0.018774217, 0.019626824, 0.012489219, 0.010756155, 0.052122474, 0.030591493, -0.022908295, 0.013050339, -0.0011233864, 0.008444189, -0.034701478, 0.015243945, -0.031556726, -0.016500317, 0.014358208, 0.021780834, 0.006831699, 0.022543367, -0.012044579, 0.014727684, 0.028186012, 0.038042445, 0.028730338, -0.036072426, 0.04864163, 0.0015279131, 0.063478015, -0.01668663, -0.096347146, 0.101211905, -0.011235288, -0.021592338, -0.05965444, -0.010911383, 0.022523744, 0.025083981, 0.036550924, -0.0188726, 0.023306688, 0.009816557, 0.022873126, -0.024382684, -0.0321808, 0.0076345024, 0.053383447, 0.0006351537, 0.004132079, -0.033187173, -0.015101593, 0.023231369, -0.008419188, 0.010140701, 0.017546633, 0.0012400845, 0.034377493, -0.036709793, 0.02674481, 0.06373499, 0.030860135, -0.020828735, 0.0058287294, -0.06626782, -0.011485932, -0.011872971, 0.028106894, 0.051331777, -0.010054068, -0.03865924, -0.023948016, 0.027340405, -0.045906108, -0.060265858, 0.008825692, 0.008820154, -0.028286966, -0.029779118, 0.008973959, 0.00057304656, 0.032975454, 0.0119976625, -0.0057923356, 0.060112372, -0.03921686, -0.016982133, -0.03046534, 0.021122418, 0.0384874, 0.0052331346, -0.025454883, 0.020989977, 0.06411666, 0.05215064, 0.026854388, 0.022429753, 0.0310355, 0.045209523, 0.02250183, 0.02041416, 0.0067289257, -0.040092766, -0.013755017, 0.03329129, -0.032967504, -0.04317019, -0.018930633, 0.01720105, -0.012904921, 0.039569683, 0.032860417, 0.002658183, 0.041297328, -0.030170351, -0.035274923, -0.011976618, -0.008244655, 0.010659315, -0.063424855, -0.0364275, -0.0054448526, 0.0052470593, -0.035409737, -0.082125016, -0.034511283, -0.010604566, -0.0055673257, -0.040466912, -0.014605527, 0.016208522, 0.016831888, -0.011978833, -0.02674054, -0.044622947, -0.034873005, -0.0012792476, -0.016903251, -0.042304333, 0.049751487, -0.03195785, 0.011929622, -0.07766787, 0.010989709, 0.0066777375, 0.02775593, -0.0240496, -0.020010978, 0.04057736, 0.024118908, 0.020583902, -0.032164622, -0.0059989896, 0.04595291, -0.010626402, 0.006280964, -0.009980172, -0.005319847, -0.049744528, -0.03660852, 0.012573875, -0.030712701, 0.01701643, -0.015947474, 0.0140292365, 0.0046707685, 0.03910056, 0.027869422, 0.012669725, -0.005717807, 0.012982733, -0.0121327955, 0.009928271, -0.07541397, -0.03585746, -0.0030582, -0.042939804, -0.03296628, 0.024068115, 0.028488198, -0.042437885, -0.03891305, 0.030489275, -0.008381686, -0.03486541, -0.007866158, -0.05304312, -0.0050331256, 0.018611474, -0.02405957, 0.026926147, -0.009746302, 0.023109054, -0.0019266644, 0.03789339, -0.039027613, 0.010633206, 0.0061758957, -0.036583837, 0.055273242, 0.029512016, -0.00066458527, -0.009166214, 0.016408453, -0.027874606, -0.020702545, -0.04522155, 0.037547328, -0.03691225, 0.0055938303, 0.037431974, -0.0103881005, 0.01106756, 0.010264046, 0.0015893083, 0.038836464, -0.019069642, -0.004494495, 0.036557253, 0.007034833, 0.011998772, -0.04734577, -0.014655055, -0.01240401, 0.0002118761, -0.030520447, 0.028843634, 0.026705885, 0.016445797, -0.015603593, 0.028208798, 0.0012854978, 0.015440531, 0.018981466, -0.011663313, 0.002550425, -0.026225327, 0.0011974402, 0.071664765, -0.018797636, -0.0092988135, 0.017672906, 0.03150324, 0.037886422, -0.06733135, -0.026254442, -0.056627728, -0.032716583, -0.038499743, -0.036465477, 0.0004405251, 0.0031430137, 0.0042452756, -0.0074224677, 0.040828954, 0.03480069, 0.023482488, -0.029103773, -0.0088124005, 0.061788075, -0.062831156, 0.016945027, 0.05313747, 0.0189353, 0.02955727, 0.041820534, -0.026806206, 0.029411932, 0.040259074, -0.026090987, 0.05406306, 0.04530794, -0.031831738, 0.013823374, -0.026254915, -0.008738822, 0.004273916, -0.033736087, 0.01574276, 0.011608089, 0.02493524, -0.028805658, 0.0029288034, -0.0044843685, -0.056073118, 0.031084867, 0.005359722, 0.011761261, -0.00812582, 0.0028399944, 0.017602649, 0.0026971085, 0.014255671, 0.03257797, 0.014865977, 0.051919304, 0.040163144, -0.06424261, 0.05276554, 0.009503253, -0.055993527, -0.02996805, -0.0140211675, 0.014493023, -0.033571683, -0.016600708, -0.00585197, 0.02492788, 0.050254676, 0.059474688, -0.021036973, -0.07014476, -0.0144650545, -0.0028662614, -0.028719261, -0.0269771, -0.009686489, 0.01633155, -0.0033933409, 0.013307608, -0.02814582, -0.01935399, 0.05075406, -0.004518072, -0.048657134, 0.009371918, -0.009764024, -0.046196666, 0.036820713, -0.010024478, 0.05627973, 0.03656295, 0.043701228, -0.057168894, -0.0060015214, -0.031144444, 0.016313037, 0.008465551, 0.010396369, -0.019150183, 0.029671496, -0.02762428, -0.007641465, 0.0400271, 0.022046825, -0.025333516, 0.06510784, 0.010288571, -0.019748943, -0.013961196, 0.018900173, -0.021864539, 0.067509286, 0.0028772983, 0.03286026, 0.031798825, -0.01090806, 0.09538128, -0.0074144774, -0.010205181, 0.03943459, -0.024723837, -0.0069990326, 0.022353424, -0.010165939, -0.005474284, -0.008876644, -0.036474973, -0.018614875, -0.01681555, -0.018822322, -0.01188136, -0.010577508, 0.039491557, -0.034969687, -0.019779323, -0.03536274, 0.054260537, -0.0139404675, -0.023256687, -0.03739147, -0.0136588095, -0.03342421, -0.019505262, 0.019047331, -0.019758437, 0.007361944, -0.049053986, -0.013696628, -0.012402426, 0.030287364, -0.024231413, 0.01767417, 0.01815362, -0.005515346, -0.02684533, 0.014062941, -0.03333267, 0.0034988832, 0.030601777, 0.016216988, 0.020116482, 0.04521965, -0.016308608, -0.0027262238, -0.028825594, 0.030390853, 0.052954473, 0.02706371, -0.008127117, -0.016991863, 0.04335501, -0.041259617, 0.022792744, 0.01058708, -0.023887094, 0.03364542, 0.025404882, 0.008825495, 0.002174618, -0.001944198], [-0.007453214, -0.10562149, -0.011380034, -0.026763432, 0.03351734, 0.021013683, 0.013018015, -0.035296686, 0.021666309, -0.010417243, -0.026584677, 0.041736227, -0.027074035, -0.036776267, -0.036142334, 0.0036396638, -0.0021286681, -0.03806559, 0.028719984, 0.0716712, -0.0092252605, -0.00021547731, -0.008242781, -0.0032328232, -0.033178415, 0.011464874, 0.018009335, -0.022584742, 0.035932943, 0.03437593, 0.007847223, -0.031026933, -0.0005875849, -0.03978587, 0.037552338, -0.0022390613, -0.00693598, -0.022866916, -0.014142081, -0.034533005, -0.0950631, 0.030427208, -0.01649806, 0.023037046, -0.010732717, 0.06976332, 0.012656305, 0.041512344, -0.016606353, -0.04896246, 0.011230261, -0.017833734, -0.031961434, 0.01829212, 0.0026175845, 0.025845774, -0.029043863, 0.0033715342, -0.019921115, -0.028789893, -0.018966427, 0.031933118, -0.05088153, -0.003343659, -0.002998984, -0.013544541, 0.026483534, -0.007617366, -0.023784801, -0.052355234, -0.009829658, 0.055866584, 0.028486365, -0.04734926, 0.014996523, 0.018267343, -0.06743566, -0.028954485, -0.02138402, -0.0100408215, 0.009477904, 0.052775566, -0.039120413, -0.067130804, -0.05953899, 0.046905026, -0.005405516, -0.0022647239, 0.0072005703, 0.019896476, -0.085688286, -0.041387573, 0.0736074, 0.050901312, 0.00871953, 0.010521663, -0.028495932, 0.026644189, 0.022921564, 0.03969915, 0.022135315, -0.019039156, -0.0290432, -0.048604183, 0.012079118, 0.008839354, 0.04005931, -0.04488941, 0.0023954704, -0.008077004, -0.012879967, -0.0035016167, 0.028869534, -0.09193226, 0.032799672, 0.019508881, 0.009511088, -0.015702853, -0.022039523, 0.015455962, 0.014218958, -0.014982931, 0.022223806, 0.025691353, -0.02594754, 0.0053944546, 0.011021642, 0.022205887, -0.05890893, -0.025789581, 0.024301924, -0.00043891885, 0.03191409, -0.04593162, -0.051044673, 0.009302027, -0.014906207, 0.06313706, 0.010944654, 0.009782758, 0.009318177, -0.00079067337, 0.02793816, 0.019069077, 0.018010274, 0.009319946, 0.02857751, -0.03401444, -0.03331569, 0.01674971, -0.022191508, -0.021253938, 0.014102038, 0.032856084, -0.006698822, -0.053998526, 0.024362542, 0.016268749, -0.039773703, -0.018637238, -0.005071017, 0.022485742, 0.032159656, -0.010496001, 0.020729182, -0.04364588, 0.028893095, 0.0009760635, -0.017093943, -0.00029290756, 0.033525527, 0.020661484, -0.012049473, 0.03170359, -0.010576972, 0.02505908, -0.005719219, 0.0047152806, 0.036935553, 0.06438391, 0.0010997306, -0.031545304, 0.01489061, 0.0015977178, -0.019396938, 0.042695478, -0.024858205, 0.020859707, -0.005304082, -0.010488037, 0.0331897, -0.004119731, 0.034247175, -0.013806365, -0.013762672, 0.009043852, -0.005196233, -0.0027649233, -0.021864532, 0.027482426, 0.024625361, -0.01521955, 0.014420885, -0.0036644416, -0.02873724, -0.030722551, 0.018464679, 0.012158761, 0.025046691, -0.027952537, 0.022097483, 0.021983108, -0.0058112503, 0.08158227, 0.0013325744, 0.012250791, -0.0025202436, -0.028641224, 0.042322487, 0.057328466, 0.008463734, -0.0049647163, 0.0013928595, -0.023005411, -0.044126388, 0.017416053, -0.021643743, 0.01124962, 0.02720943, 0.0035231037, 0.02979914, -0.007175129, -0.018750507, -0.004755544, -0.028230624, 0.0077270954, -0.022516603, 0.039825913, -0.01486019, 0.02921996, -0.014461757, 0.014549807, 0.02474405, -0.016630357, -0.036498737, -0.037329342, -0.041307926, 0.021237124, -0.0180689, 0.022045054, 0.073745444, 0.0109057175, -0.009040644, -0.0058227545, 0.014644824, -0.014403795, -0.008550068, -0.007993014, 0.0077257683, 0.046607252, 0.0042416286, -0.04445292, -0.043902062, -0.046005066, 0.054804683, 0.007894345, 0.0046285586, -0.021072088, -0.03360561, -0.04247956, -0.04214683, -0.08782049, 0.022963597, -0.0034396728, -0.028984683, 0.0037567772, 0.031857014, 0.022561016, 0.061303515, -0.023577191, -0.057964724, -0.008582147, -0.01884901, -0.016781898, 0.031846836, -0.0014335655, 0.010955273, -0.021361897, -0.037972674, -0.044215325, -0.02441663, -0.026374068, 0.049806893, 0.063926406, 0.081327416, -0.017109428, 0.06409366, 0.0045307754, -0.026328936, -0.019546049, 0.027301904, -0.037807874, 0.03403922, 0.036632027, 0.010067259, 0.03573472, -0.031526055, 0.036086917, -0.01389895, 0.0015185176, -0.010958813, -0.028889, -0.021365438, 0.008904035, 0.022871124, -0.031283144, 0.041177846, 0.04373415, -0.027338656, -0.048961576, -0.028104082, 0.0040033646, 0.00071324315, -0.036231603, 0.025599767, 0.04979959, 0.049038567, 0.028581493, -0.039288547, -0.04679729, 0.05625506, 0.07719308, 0.021199515, 0.011192432, 0.041578714, -0.014875234, -0.019987054, 0.01606213, 0.036714323, 0.035505082, -0.0057112547, -0.02442548, -0.040669017, 0.0006083805, 0.052470714, -0.059405696, -0.022032665, -0.02124155, -0.022924056, 0.028808916, 0.032685407, -0.016302163, -0.0024582995, 0.00808239, -0.013831807, 0.013194555, 0.017693032, -0.021340659, -0.03002258, 0.008993744, -0.004944474, -0.019962844, 0.012749885, 0.027880197, 0.008711124, -0.035638265, 0.06634754, 0.000700322, 0.059154935, -0.036295757, 0.046553716, 0.009158007, -0.038233727, 0.008308264, -0.006997371, 0.05186145, -0.07225347, 0.021647727, 0.018667657, 0.024334224, 0.02295143, -0.0061868974, 0.031484462, 0.04991994, 0.01079654, 0.063541025, 0.044559333, -0.0008379058, -0.05462416, 0.026406588, -0.009955206, 0.02634022, 0.044858217, -0.002938699, 0.0035621782, -0.0035352437, -0.0111826975, 0.0035217486, 0.013985671, 0.02498519, -0.010910695, -0.015113719, 0.020303536, -0.014948683, 0.025172792, -0.033887014, 0.004247602, 0.013304313, 0.00896255, 0.008389899, 0.049555354, -0.036757685, 0.008571306, 0.03226673, 0.025613923, -0.03074202, -0.008178404, 0.036336463, -0.029041208, 0.01224139, 0.045522787, 0.03841779, -0.03133049, 0.03208344, 0.014828334, -0.031529594, 0.013240599, -0.019408885, -0.025528308, 0.014938285, 0.009345388, 0.042235322, 0.030863253, 0.07776651, 0.021018771, -0.0008539449, 0.009784086, 0.020426871, -0.04765256, 0.00550894, -0.08069382, 0.0017751436, -0.004098493, -0.007963369, 0.022953661, 0.052556105, -0.0655989, -0.0025924752, 0.04270521, -0.04578384, 0.018417558, -0.025690027, -0.028904045, -0.01333747, -0.057435542, 0.036453385, 0.09232162, -0.0434335, -0.03636084, -0.034150716, -0.02398302, -0.010720106, 0.023791881, -0.013952487, -0.00970649, 0.002230876, 0.044543184, -0.018298896, 0.009393395, 0.048023563, 0.03512944, -0.023951164, 0.02395039, 0.023478508, -0.058402974, -0.029389866, 0.040243376, 0.01259237, 0.01834256, 0.02209505, 0.0025445789, 0.028050873, 0.030028332, -0.031653594, 0.05233593, 0.01637893, 0.011157919, 0.015405521, -0.027372032, -0.022280663, 0.020931551, -0.00076810794, -0.0009562635, 0.062206127, -0.004758697, -0.03680901, 0.014325037, 0.0017227952, -0.04641036, -0.017640822, 0.05322599, -0.0042812284, -0.03735575, 0.01172869, -0.015114771, -0.052047282, 0.006059027, 0.04488996, -0.018259378, -0.021865414, -0.04024603, -0.010640132, 0.044068873, -0.039033692, 0.046162583, 0.02595351, -0.016538436, -0.053957373, 0.019853447, -0.001487103, 0.024926344, -0.012304772, 0.010554737, 0.02347154, -0.023350637, -0.013719311, 0.024991827, -0.046463456, 0.049020864, 0.005806826, -0.030482737, -0.028804936, 0.0070191617, 0.020393798, 0.014233005, -0.009967539, -0.009362422, 0.05080132, 0.0022751219, -0.023863448, -0.031432252, 0.022295486, -0.012452967, 0.011716302, -0.024140758, 0.012785282, 0.0069130827, 0.008769528, 0.048531063, 0.028709363, 0.01526128, 0.0028113814, -0.09672497, -0.05025267, 0.026023641, -0.014674579, -0.016243316, 0.02945004, 0.02668025, 0.028647419, -0.06206157, -0.03721784, 0.0393589, 0.019959304, -0.032115187, 0.01326911, 0.004428125, -0.07138803, -0.054953348, 0.030098682, -0.021220312, -0.025161732, -0.06092477, -0.014174713, 0.016838644, -0.017735729, 0.06636258, 0.0013616661, 0.0032064968, -0.031213569, 0.029039437, -0.033802062, -0.01906775, -0.019987898, 0.040002786, 0.014808008, 0.00020662813, -0.0061552613, -0.013617989, -0.025144918, 0.0242058, -0.014225484, 0.045149796, 0.026123581, -0.03336137, -0.023318449, -0.04052035, 0.012949434, -0.0026024303, -0.03036499, -0.018946571, -0.03114731, 0.026182925, -0.014110002, 0.011665862, -0.01941353, -0.018332163, 0.013126859, 0.0056599295, -0.009029251, -0.010384059, -0.0039644283, -0.048209835, -0.0055183982, -0.031508356, 0.0059537217, -0.044586547, -0.022824222, -0.008933763, -0.042373367, 0.049120415, -0.006366536, -0.013063146, -0.005070796, -0.01753795, 0.01447503, 0.013795856, 0.0728269, 0.03638292, -0.020503527, 0.05826294, 0.008314238, 0.055091396, 0.040574335, -0.078210734, 0.07231365, 0.012209421, -0.009930097, -0.0094487015, -0.035476323, -0.029913293, -0.004857752, -0.02709793, -0.020714138, 0.0101599535, -0.0052564074, -0.0032932188, -0.03931111, -0.043868877, 0.0016919613, 0.032097243, -0.0039712866, 0.0095163975, -0.05558695, 0.011376494, -0.010712474, -0.0030737594, -0.0043064486, 0.0024078593, -0.016808115, 0.03379603, -0.015601973, 0.020739801, -0.0041254833, 0.01330517, -0.017481094, 0.0028463358, -0.028886126, -0.015644006, -0.039307795, 0.03821072, 0.0239901, -0.009275701, -0.00761272, 0.006219197, -0.015001998, -0.036954135, -0.011831009, -0.032823343, -0.007944122, -0.06629887, -0.037819583, 0.06071947, 0.014725462, 0.019628456, 0.06005401, 0.026630692, -0.009839392, -0.07022347, -0.05328484, -0.06888902, -0.002568472, -0.036001965, -0.0027874887, 0.02155304, -0.018825725, 0.041817863, 0.012871562, 0.037415177, 0.03436221, 0.03670105, 0.04917484, -0.017025804, 0.01668489, 0.023465123, -0.004894628, -0.03542677, 0.012366716, -0.028319115, -0.034672044, 0.0019477025, 0.012326453, -0.014558655, 0.045342263, 0.01133092, -0.05663823, 0.048323553, -0.0053640073, -0.044352043, 0.033779055, 0.00012964035, 0.017788602, -0.027696135, -0.0002935712, -0.025250666, 0.018909626, -0.052284442, -0.056300193, -0.026903689, -0.0015946205, -0.051629376, -0.039819498, -0.008953369, 0.013203848, 0.013214024, -0.004222382, 0.013622966, -0.030375661, 0.06231055, 0.01459914, -0.0031839316, -0.007200791, -0.0003114908, -0.015139161, -0.01530265, -0.061359264, -0.031628817, 0.034402035, 0.0023514458, 0.013095003, 0.017533083, 0.04044956, -0.0013725064, -0.019531889, -0.004748465, -0.002063184, 0.030473445, -0.006064171, 0.0038193022, -0.012960495, 0.03306227, -0.055748004, 0.00091212825, 0.040165946, -0.029034128, -0.023855733, -0.011907775, 0.027018288, -0.013003082, 0.027664278, 0.017501889, -0.028485479, 0.04396119, 0.014907534, -0.0073505635, 0.006949254, -0.05780632, -0.015583943, -0.0139621105, -0.026984662, -0.0427322, 0.0032226467, -0.006476708, -0.011270967, -0.016330259, 0.10677055, -0.028196776, -0.027487293, 0.020395126, -0.02252468, 0.019894926, -0.01035176, -0.021110581, 0.023972237, -0.039819498, 0.04450779, 0.012951204, 0.015393353, -0.014680332, 0.008524406, 0.019503873, -0.04307068, 0.08481319, -0.007863483, 0.005696211, -0.015468571, 5.685592e-05, -0.036309917, -0.013068454, -0.07180925, -0.022591934, -0.024582442, -0.029724253, 0.029323276, -0.007654533, -0.017514277, -0.0025680293, -0.02585639, 0.03125704, -0.014679889, 0.00395121, 0.032805644, 0.0011539318, 0.029318796, 0.010537592, -0.024009148, -0.019379241, 0.00049157144, -0.004109555, -0.00322685, 0.050627872, 0.0041566766, 0.041553494, 0.055110864, 0.046269216, -0.035563048, -0.03628868, 0.0074058706, 0.0025202436, -0.08701743, -0.015916118, 0.047672253, 0.012218492, -7.5217945e-06, 0.0039324607, -0.008845631, 0.0043946225, -0.046213023, 0.022295486, -0.021155711, -0.05276583, -0.009883749, 0.007538387, 0.034350265, -0.017791258, 0.0051842863, -0.010664135, 0.038438197, 0.02444849, 0.010822978, -0.02529093, -0.008373528, 0.044867065, -0.027172264, 0.012825987, 0.039471284, 0.0087712975, 0.039214212, 0.032340176, 0.016891297, 0.013662677, 0.04027258, -0.015432954, 0.031933557, 0.012224189, -0.04547589, 0.0070227017, -0.0092484895, 0.03866291, 0.007883007, -0.014176592, 0.043178644, 0.011614094, 0.0046272315, -0.074187905, 0.014808201, -0.018189041, 0.007974872, 0.02600749, 0.017942356, 0.02124354, 0.0009782758, 0.013937222, 0.0031241998, 0.015148895, -0.059445187, 0.008773731, -0.020114163, 0.06684309, 0.023991872, -0.037777994, 0.062655665, 0.029572932, -0.044207357, -0.032990593, -0.031803034, -0.028350089, -0.0066405283, 0.05036417, 0.0062345727, 0.015776744, 0.035705518, 0.03776804, 0.00065837824, -0.045913033, -0.013163141, -0.008349192, -0.029476587, -0.028337698, -0.022649452, -0.020877518, -0.004300697, 0.032674015, 0.0012955186, -0.05643558, 0.069878355, 0.02686752, 0.013145221, 0.026944838, 0.017380655, -0.031021653, 0.009793543, -0.03458521, 0.053082637, -0.0075225695, 0.057848576, 0.014309108, 0.010680064, -0.049431466, -0.00045927198, -1.5707277e-05, 0.03626689, -0.0065430766, 0.0052794153, -0.010119359, -0.016973816, 0.020222126, 0.03546261, -0.024726354, 0.03431089, -0.040637158, 0.0063855615, -0.06073097, 0.028885463, -0.06491309, 0.03861601, -0.044283904, 0.047488187, -0.009069515, -0.072351925, 0.0052023167, -0.002037079, 0.023973785, 0.020078326, -0.024572376, 0.016685996, -0.023195447, -0.06600685, -0.021357585, 0.029193858, -0.009767714, -0.013522196, -0.009379236, -0.01596877, -0.002582188, -0.010316141, 0.0547569, -0.0044701584, -0.024776792, 0.0064645405, 0.06607499, 0.018972622, -0.027582865, -0.057518724, -0.013778601, -0.06023365, -0.0034361328, 0.006118984, -0.013919746, 0.03381799, -0.049388327, -0.021246858, 0.02409939, 0.018605934, 0.0075485636, 0.030485945, 0.058323335, 0.011951691, -0.028946854, 0.019623036, -0.0013753823, 0.043465078, -0.011878242, 0.036493093, 0.011559671, -0.0031352611, -0.0063700196, -0.0003862663, -0.049092103, 0.019919483, 0.05938236, 0.015167478, 0.048115596, -0.0049342974, 0.027181998, 0.010777848, -0.01589145, -0.016563877, -0.0059343087, 0.023106953, 0.02358481, -0.053073786, 0.027441276, 0.01419053], [-0.00055252615, -0.083826765, -0.052311163, 0.01882389, 0.011194707, 0.04330224, 0.03577338, -0.027200704, 0.04500435, 0.033168506, -0.013678415, -0.0013284947, -0.06360793, -0.019398022, -0.0006881334, 0.04441055, 0.008438266, -0.06648815, 0.034842912, 0.01925514, -0.012648279, -0.027765064, -0.025042929, 0.019730687, -0.030346053, 0.06227683, 0.0062620356, 0.017636973, 0.019373266, -0.0005756521, -0.015136057, -0.056743316, 0.008896007, -0.007369911, 0.02533977, -0.015510253, 0.026178166, -0.008476266, -0.04732377, -0.034949534, -0.059435267, 0.01704547, -0.019211277, 0.038951736, -0.005746532, 0.04211185, 0.01113749, 0.02473241, -0.0039843987, -0.03442708, 0.008109073, -0.019425815, -0.023367655, 0.031357516, 0.002292837, 0.012886269, 0.005545239, 0.0057584755, -1.7154476e-05, -0.028315745, 0.037514452, 0.0008727069, -0.033715714, 0.009988248, 0.016925171, 0.024613852, 0.004526773, 0.0065501872, -0.016789455, -0.03832875, -0.025748653, 0.0157059, 0.010416133, -0.04429937, 0.045725584, 0.01006273, -0.066107705, -0.0011093953, -0.033506386, -0.02936499, 0.01579037, 0.0051124683, -0.004335088, -0.04254571, -0.041519914, 0.017755643, 0.012547523, -0.0022139046, 0.018785672, 0.027931398, -0.036403973, -0.021033233, 0.05985566, -0.00230326, 0.03865881, 0.014169597, -0.020222304, 0.060547918, 0.0037218698, 0.045965314, 0.03638964, -0.037992444, -0.03058969, -0.042610854, -0.0133040575, -0.0036979027, 0.0068257446, -0.010845104, -0.022757258, -0.00011182981, -0.011046614, 0.0061499886, 0.019712448, -0.064334065, 0.011718679, -0.02797526, 0.0043941517, -0.0108072115, -0.02523315, 0.018849947, -0.03114037, 0.027414156, 0.01829145, 0.007316194, -0.030184496, -0.00028836893, 0.013032877, -0.0016859159, -0.041146424, -0.0030972515, 0.045690756, -0.011916064, 0.030078964, -0.04125934, -0.047249075, 0.035682183, 0.023354407, 0.030888481, -0.041174218, 0.037329443, -0.015157609, 0.0136143565, 0.004195084, -0.0030811285, 0.017534915, 0.0015442286, 0.0337409, -0.014322903, -0.059987687, 0.00576347, -0.001999691, -0.03280704, 0.010750863, 0.03555222, 0.038102917, -0.05979486, 0.018189607, 0.045357306, -0.03415174, -0.0065158783, -0.03294007, 0.01034974, 0.038422987, -0.008595587, 0.0025041194, -0.052305087, 0.011316744, -0.006043886, -0.014556768, 0.047959574, 0.055464115, 0.01230926, 0.012150907, -4.340191e-05, -0.03707647, -0.0039587757, 0.018568527, -0.015720177, 0.03928462, -0.00043298767, 0.0068209674, -0.009777, -0.0044444483, 0.0041057826, -0.036841735, 0.021721477, -0.0386714, -0.016533116, -0.007900179, 0.014671203, 0.009833722, -0.033756536, 0.038899295, -0.014635374, -0.022935752, -0.016892383, -0.024144817, -0.03241892, 0.013346183, 0.030738652, 0.0040619196, 0.014600631, 0.029799225, 0.016871754, -0.05817756, -0.040863268, 0.045215726, -0.021955993, 0.03954715, -0.03441492, 0.005896146, 0.014946544, 0.019591931, 0.056863833, 0.01392569, 0.007205532, 0.019935673, -0.050610483, 0.022538811, 0.047311615, -0.031098679, -0.0038586718, 0.038208827, -0.012141461, -0.007064116, 0.020093754, -0.027898498, 0.031563804, 0.024437964, 0.005839471, 0.07523302, 0.0078810705, -0.0027134474, -0.027973035, -0.0018088201, -0.0064305402, -0.010200019, 0.074021354, -0.03533735, 0.028039536, -0.03158161, 0.034784935, 0.022135789, 0.011732793, -0.031539917, -0.022750312, -0.042449296, 0.018722212, -0.04283451, 0.010428619, 0.062391914, -0.016348435, -0.008899048, -0.008991552, 0.01705003, 0.024846414, 0.020396238, 0.03151538, -0.0125866085, 0.07239602, 0.02221331, -0.041931618, 0.007945284, -0.056399576, 0.0745451, -0.0044714557, 0.015703946, -0.013363989, 0.007856316, -0.019332742, -0.05916427, -0.050253496, 0.029688101, 0.004048864, -0.025369518, 0.003921644, 0.009168307, 0.0070837135, 0.07855665, -0.0011611843, -0.047143105, 0.0071662287, 0.0032127458, 0.025403718, 0.0016702814, 0.018351816, -0.004531062, -0.013251073, -0.007960546, -0.046882533, -0.0029189752, -0.021855673, 0.037135318, 0.040018138, 0.07349933, -0.03709189, 0.025550833, -0.02728604, -0.053987525, -0.021399233, -0.0014505304, 0.0059673693, -0.011928225, -0.0041804807, 0.0076022563, -0.025551917, -0.0793362, 0.040114548, -0.012248078, 0.012574122, -0.014074923, -0.033679232, -0.06727334, 0.014093597, -0.002869792, -0.03597663, 0.0016763615, 0.06202364, -0.0077820523, -0.023235848, -0.006540416, -0.030092862, -0.03745061, -0.04193553, 0.024963021, 0.049429215, 0.03414045, 0.018235208, -0.026098365, -0.04270401, 0.032080177, 0.06872909, 0.0148631595, -0.008897745, 0.013077791, 0.006046193, -0.028714422, 0.006637235, 0.040998764, 0.044714555, 0.00908639, -0.073968366, -0.024510056, -0.00473963, 0.031439595, -0.05825834, -0.0062589953, -0.058736928, -0.021993343, 0.009702051, 0.026528204, -0.03764854, 0.012375979, -0.0057226466, -0.0067714583, 0.0046299715, 0.004133143, 0.0061519425, -0.009498911, -0.020275723, -0.034748457, 0.0035064619, -0.008358275, 0.022154463, 0.0071466854, -0.014922224, 0.04702129, 0.0044881757, 0.068656124, -0.036417432, 0.039554097, -0.0038174137, -0.022041982, 0.0071254047, 0.021116944, 0.049191926, -0.07862396, 0.015558894, 0.02718572, 0.017031137, 0.0446442, -0.0017044818, 0.04410655, 0.038571082, 0.02370879, 0.044898696, 0.036650214, -0.007748612, -0.038669664, 0.029912196, 0.006593833, -0.005649469, 0.06597047, 0.023199802, 0.015973207, -0.005086628, 0.0049797925, 0.03803408, 0.012083265, 0.01731245, 0.008203803, -0.009617798, 0.022511777, -0.008934008, -0.00058976654, -0.030200565, -0.020263562, 0.026632868, -0.0058829, 0.018289711, 0.017892336, -0.01747064, -0.012020295, 0.03880115, 0.01190803, 0.0035556455, -0.006637697, 0.048439033, 0.0007452426, 0.0073056896, 0.030589364, 0.05918338, -0.01919434, 0.031493016, 0.022361187, -0.0064817867, -0.0046972865, -0.013165949, -0.042418025, 0.05019183, 0.02196989, 0.030115444, -0.005023873, 0.083175324, 0.037461903, -0.05795173, -0.003678848, 0.0032890995, -0.055193115, -0.0046206615, -0.04387681, -0.015779948, -0.022218358, 0.014038225, 0.005075554, -0.009614758, -0.056542892, 0.009359559, 0.044702392, -0.0515555, 0.021954473, -0.03235595, -0.027994802, -0.018022325, -0.03810639, 0.050144926, 0.0817578, -0.052144397, -0.015305703, -0.03689298, -0.03570129, 0.0044506094, 0.014741342, 0.0009945254, 0.021134749, -0.021625932, 0.030819863, -0.05119504, 0.012645021, 0.03214445, 0.034952573, -0.00603615, -0.017074568, -0.037644304, -0.017848907, 0.010854659, 0.026529074, 0.019683786, 0.026304979, 0.01605051, 0.0019367458, 0.006363985, 2.1063091e-05, -0.014592162, 0.03422644, 0.01400587, -0.01657383, 0.0048019504, -0.002250738, 0.00064101286, 0.0148631595, 0.014675546, 0.012643066, 0.061377414, -0.026044406, -0.023293445, 0.01924754, 0.015846828, -0.048915878, -0.012919275, 0.06714827, 0.029206473, -0.05041592, 0.029886138, 0.015898509, -0.056652334, 0.0069946833, 0.034956913, -0.010140684, -0.02270558, -0.039419685, -0.044787515, 0.020217095, -0.023636263, 0.052828405, 0.020329574, -0.037063226, -0.048062503, -0.0010518518, 0.003889289, 0.041410472, -0.042819854, 0.0003582897, 0.050815467, 0.019305084, -0.042479694, 0.03268297, -0.08069118, 0.054520838, -0.018379284, -0.0010236228, -0.028522465, 0.00077955157, 0.0014908109, 0.03048763, 0.0001587332, 0.00888211, 0.049224228, -0.022261733, -0.023814756, -0.031210726, 0.0061947205, -0.010451202, 0.030431606, -0.025214259, -0.017747717, -0.03669318, 0.0104813855, 0.020002987, -0.013577661, -0.0096258335, -0.0021697157, -0.082827896, -0.061532892, 0.008868213, -0.014385874, -0.0108587835, 0.03313116, 0.07981218, 0.007362094, -0.06574507, -0.021673271, 0.02479647, 0.012306709, 0.027563987, -0.0056171142, -0.012643066, -0.049995527, -0.0794439, 0.033542864, -0.02817677, -0.0048727943, -0.07410039, -0.035809863, 0.041549444, 0.0005813743, 0.040284794, -0.023499789, 0.010987334, -0.020509914, 0.022523556, -0.03568826, -0.033457745, -0.014132656, 0.0034775815, 0.022111468, -0.00089724426, 0.010544168, 0.0029861818, -0.029458579, 0.024425913, -0.01897524, 0.046514258, 0.0067753666, -0.004210881, -0.03769642, -0.035290014, 0.0018700552, -0.02239289, -0.052986924, -0.015288764, -0.049526494, 0.017489748, -0.021622457, 0.00057152635, -0.015645154, -0.016104361, 0.0071931547, 0.02705109, 0.02078167, 0.013161609, 0.02138881, -0.043572776, -0.0110802725, -0.008994591, 0.0074268025, -0.03212241, -0.0022186819, -0.02900974, -0.022998506, 0.039248142, -0.013971996, -0.013069648, -0.0028721807, -0.012716951, 0.01852488, 0.0026780525, 0.050517548, 0.03307383, -0.0456283, 0.026944254, -0.011618141, 0.0581489, -0.0032565277, -0.087796174, 0.080614746, 0.00046555945, -0.00040779886, -0.03252804, -0.0074652373, 0.022952255, 0.012772486, -0.0055993083, 0.0019415502, 0.001046966, 0.0057061436, 0.005065565, -0.017527098, -0.053459432, 0.020024378, 0.053658333, -0.009239097, -0.0045779925, -0.036649343, 0.006010581, -0.003622526, 0.028351355, -0.020354765, -0.00076912856, -0.024013227, 0.027680378, -0.031844355, 0.05772807, 0.02550936, 0.022996554, 0.0019503989, -0.00811157, -0.0041578976, -0.031763904, -0.051058892, 0.03217572, 0.040116284, 0.024735453, -0.017157517, -0.02058407, 0.022891672, -0.0072698067, -0.04216527, 0.0050369017, 0.018438999, -0.059447426, -0.042976525, 0.01995652, 0.01323153, 0.050414618, 0.043569088, 0.030495882, 0.004594794, -0.045289554, -0.03921296, -0.04006591, 0.003270208, -0.016379703, 0.014477076, -0.0083435895, 0.0022268791, 0.05583891, 0.03954297, 0.042552654, 0.036771383, -0.008803938, 0.06822878, 0.009227806, 0.02036649, 0.029181829, -0.025194932, -0.014411606, 0.014139632, -0.051373314, -0.060042407, 0.007597696, 0.003697984, 0.0100199515, 0.024635782, 0.008116891, -0.020142397, 0.046528153, -0.04010152, 0.0027363563, 0.00792906, -0.017539693, 0.014037574, -0.065025456, -0.0209606, -0.01683397, -0.014678368, -0.035851553, -0.049326718, -0.022176612, -0.01626592, -0.036786363, -0.00370667, -0.0067645097, 0.02310556, 0.034961257, -0.0011120009, -0.045672722, -0.039982524, 0.04070953, 0.034379307, 0.030308269, -0.034458894, 0.03058274, 0.0069403974, 0.014754587, -0.06157545, -0.022487726, -0.0022734024, 0.015107394, 0.02348817, 0.015585602, 0.065404154, 0.0090959985, 0.017607225, -0.014416058, -0.061174165, 0.04644129, -0.009835813, 0.021096315, 0.019071436, 0.014576094, -0.069618516, -0.0033883348, 0.024464455, -0.02718963, -0.011412721, -0.015285833, 0.015907628, 0.019034846, -0.006045976, 0.01407883, -0.0037937178, 0.044312403, 0.0029783645, 0.0047282297, 0.014011082, -0.06820446, -0.03650082, -0.021823969, -0.055715136, -0.047733743, 0.016344063, -0.003185521, 0.018761352, -0.006809676, 0.06876383, -0.039173007, -0.003316677, -0.0045433305, -0.054901272, -0.025441607, -0.032402363, -0.06234947, 0.025205791, -0.05482918, 0.007322573, 0.00458068, 0.024367012, -0.04232639, -0.037256047, 0.038158502, -0.030294372, 0.07291564, -0.0090191765, -0.0064385743, -0.019881822, 0.013327508, -0.0024320271, -0.036511675, -0.06583758, -0.003688138, -0.0002480342, -0.009082752, 0.0073885308, 0.020123722, 0.008460741, 0.015570401, -0.0052229958, 0.006130011, 0.020663979, 0.028993236, 0.030025112, 0.012481538, -0.0075670783, -0.007907562, 0.012205411, -0.025923997, -0.013414366, -0.027449768, 0.027820652, 0.056770463, 0.025197212, 0.0014502046, 0.028492793, 0.02068526, 0.005821489, -0.008002563, 0.0017458481, 0.038404312, -0.10828079, -0.020801216, 0.084495574, -0.0009007186, 0.0022939227, 0.010253301, -0.02214556, 0.024828391, -0.031660434, 0.0043294425, -0.045423314, -0.055854976, 0.0120913, -0.011176033, 0.0007361225, 0.0030139766, 0.043304957, 0.012288685, 0.026543623, 0.049126077, 0.022494078, -0.013496881, 0.00734863, 0.06717954, -0.016082648, -0.006041742, 0.0382512, -0.011669387, -0.022945307, 0.017229175, -0.022324272, 0.014453189, 0.022902312, -0.020553235, 0.055434585, 0.035465904, -0.054487832, 0.008457158, -0.05550494, 0.011529979, -0.018397415, -0.0017780126, 0.035484146, 0.012609898, -5.5589193e-05, -0.014973469, -0.03659332, -0.004034722, -0.0010105941, 0.033541128, 0.028029317, 0.015123055, -0.013378754, 0.033043433, 0.02707541, -0.019185219, -0.031640675, 0.057982996, 0.015735215, 0.04016319, 0.04532984, -0.040723428, 0.083130166, 0.03702696, -0.036702763, -0.03563267, -0.03970805, -0.042219125, -0.027341196, 0.036846947, -0.008587661, -0.0012090649, 0.05329223, 0.02692167, 0.002040297, -0.07647422, 0.0057140696, -0.034730215, -0.029757155, -0.055804595, -0.015281816, -0.011825297, -0.0103448015, -0.010024294, -0.022853239, -0.047143105, 0.081181064, 0.0045904513, 0.004045851, 0.0027002017, 0.0027905516, -0.037562497, -7.81723e-05, -0.019317245, 0.080201305, 0.012241782, 0.038193684, -0.0104459915, 0.014249073, -0.08192457, 0.0043741744, -0.0018075174, 0.042026296, -0.033525493, -0.007443306, -0.00687581, -0.010351912, 0.03873698, 0.03980881, -0.043898087, 0.043548487, -0.027049351, -0.013372458, -0.024752824, 0.04268555, -0.03573994, 0.047327247, -0.002683047, -0.024754561, -0.0037727363, -0.034460086, 0.045075558, 0.002220962, 0.031229835, 0.0452635, -0.049623776, 0.03126979, -0.0039029692, -0.009987814, -0.021276763, 0.009365042, -0.0339511, 0.009005449, 0.029213857, 0.008959414, 0.02296299, -0.0073236586, 0.016800096, 0.009309778, -0.029484853, -0.026661964, 0.049417052, -0.00044949073, -0.030252028, -0.045209646, -0.013403943, -0.024543496, 0.016094808, 0.008096045, -0.015076831, 0.01344379, -0.08382502, -0.0262394, 0.041702315, 0.017412663, -0.029179113, 0.036893416, 0.023624538, -0.033565447, -0.013239293, 0.02912526, -0.004018056, 0.039357148, 0.013113837, 0.009033678, 0.028880322, 0.036326665, -0.019418433, -0.0033575003, -0.03691209, 0.018586768, 0.061324432, -0.0045405077, 0.028564159, 0.009873161, 0.020024268, -0.00873456, -0.012453716, -0.009126731, -0.04914258, 0.006518267, 0.019360673, -0.04518185, 0.003910569, 0.01592891], [-0.01226457, -0.07827964, -0.037647378, -0.05255364, 0.013028217, 0.023325942, -0.009846156, -0.04138573, 0.010971834, 0.031278554, 0.0549682, 0.00849403, -0.062296204, -0.0057584955, -0.036407, 0.0069081997, -0.0058011105, -0.012198381, 0.05291757, 0.05516768, -0.021103604, 0.028804265, -0.005236969, 0.020403625, -0.02334759, 0.03261742, -0.005601635, 0.0018170407, -0.004159971, 0.012892465, 0.013383901, -0.041609004, -0.004952716, 0.0047960263, 0.02342296, 0.018920027, 0.034295734, -0.0109228715, -0.057876915, -0.05696477, -0.050115503, -0.0020868992, 0.009503195, 0.028726062, 0.011652998, 0.049524333, 0.012965456, 0.027470047, -0.020293688, -0.026080249, 0.0528864, -0.010056683, -0.026375197, 0.015035467, -0.010501479, 0.016049618, 0.019947551, 0.04002567, 0.05287688, -0.020486815, 0.009568478, 0.018445026, -0.04500349, -0.007952726, 0.0024712295, 0.031917896, 0.00094478857, -0.009161933, 0.029780768, -0.03791089, -0.02844232, 0.011302555, 0.006951722, -0.019568095, 0.06138995, -0.002224152, -0.050077423, 0.0289847, 0.0007779545, -0.013511746, -0.029440772, -0.0036924223, 0.030354735, -0.03835461, -0.07752344, 0.014026756, -0.0055694473, -0.0036939806, 0.069377586, -0.0075691896, -0.027991628, -0.02217261, 0.04668997, -0.004067487, -0.012172086, -0.015967563, -0.009781101, 0.036455058, 0.032670464, 0.052775554, 0.022709608, -0.0473505, -0.022130903, 0.0006346948, 0.010138797, 0.0067799008, 0.042709522, -0.037733514, -0.0016402327, -0.007792239, -0.007034232, 0.011393453, 0.010771678, -0.08477165, 0.0016710608, 0.0033303346, 0.05064774, -0.03287266, -0.06572413, -0.027125724, -0.0020128894, -0.019627484, -0.000623361, 0.016714236, -0.03218719, -0.023272445, -0.010214959, -0.004181279, -0.05504708, 0.0063202004, 0.042681962, 0.019943018, 0.03214276, -0.023841064, -0.035398517, -0.008292515, -0.041855402, 0.066283904, -0.04051937, 0.009374443, -0.038965728, -0.009360446, 0.014298768, 0.006051362, 0.033641092, -0.04480175, 0.01411788, -0.038344633, -0.0037845948, -0.03334868, -0.0062789456, 0.008644997, 0.01095642, -0.003824263, 0.0050727986, -0.019460281, 0.0070203766, 0.037587535, -0.025817571, 0.023329115, -0.03634444, 0.001262136, 0.015745929, 0.034278963, -0.038966637, -0.03952426, -0.0031825413, 0.008414807, 5.9275964e-05, 0.03808078, 0.065105185, -0.007485999, 0.016937284, 0.043708716, -0.06751158, -0.029331176, 0.01486104, -0.04457394, 0.035124015, 0.060587965, -0.031150822, 0.014697718, -0.0010195919, -0.029421277, -0.0257201, 0.046299174, -0.010274293, -0.014965651, 0.02399509, 0.012382471, 0.0030492553, -0.03250499, 0.023524964, 0.01673458, -0.014045796, 0.042568076, -0.048597675, 0.0353253, -0.0005621583, 0.021466343, 0.018970123, -0.022015978, 0.023221217, -0.021317584, -0.04269864, -0.04374679, 0.015287079, -0.0007108582, 0.05889563, -0.04447579, 0.012554264, 0.03726565, 0.019058978, 0.034281682, 0.030839821, 0.04849431, 0.04308626, -0.03605475, 0.04641403, 0.022775117, -0.037168637, -0.032539897, 0.048588607, -0.049619306, -0.055203944, 0.01599839, -0.0066547757, 0.026905622, 0.016081354, 0.012059202, 0.07344326, -0.007829414, -0.037303735, -0.02948135, 0.011843263, -0.02649035, -0.043083083, 0.024778714, -0.042536344, 0.013963287, -0.01075445, 0.0551976, 0.016643513, 0.015959855, -0.011294848, -0.0029613047, -0.039242275, -0.005766656, -0.04166964, -0.03254715, 0.04474508, -0.008891168, -0.04925323, -0.00041935197, 0.012917853, -0.005309676, -0.018663654, -0.0029559778, 0.019059274, 0.029360982, 0.010537747, -0.0614031, 0.011181056, -0.02951739, 0.040065564, 0.028002283, 0.01712112, -0.016650766, 0.017337596, -0.02070692, -0.040049244, -0.04410948, 0.03281554, 0.01531836, -0.012620906, 0.055290986, 0.045331717, 0.015378429, 0.027302759, 0.00802617, -0.035252765, -0.01411244, 0.004266963, -0.00914788, -0.010439087, -0.022241747, -0.001486546, -0.04277435, -0.023673663, -0.06951359, 0.0047921725, 0.012097283, 0.0026085956, 0.05523477, 0.055465072, -0.04458822, 0.07776281, 0.0005875461, -0.03402871, -0.010808173, 0.021249583, -0.005492377, -0.004557789, 0.009111498, -0.018030774, -0.02925133, -0.022939466, 0.0342844, 0.021958062, 0.013016685, 0.02138627, -0.0020618516, -0.05997141, -0.009183127, 0.028670073, -0.02544537, 0.029360304, 0.07256194, -0.03188707, -0.021996258, -0.022482704, 0.006743746, 0.010024551, -0.044648062, 0.027540315, 0.043616228, 0.0067205117, 0.01753503, -0.042241324, -0.022197999, 0.01787686, 0.027546208, -0.015812742, 0.015549569, 0.03558643, 0.053517472, -0.021712402, 0.024971616, 0.03190203, 0.03395436, -0.0059414236, -0.060535833, -0.02796012, -0.029275525, 0.04429082, -0.04003927, 0.009098351, -0.09285472, 0.0108870575, -0.020905035, 0.017097771, -0.034319762, -0.010177105, 0.0012875239, -0.030056654, 0.014840978, 0.0024952574, -0.014799271, -0.016248189, 0.0038766253, -0.027661363, -0.0233069, -0.05198332, 0.045472257, 0.032996878, -0.03420325, 0.057709172, -0.01065018, 0.031426463, -0.01667978, 0.05340685, 0.0075220405, -0.012719852, -0.019735383, 0.024899418, 0.052770343, -0.033297904, -0.014025849, 0.0006856971, 0.0013206186, 0.011304368, -0.020302529, 0.067349054, 0.01605846, 0.046184022, 0.03511676, 0.030275624, 0.024906002, -0.0162228, 0.049254134, -0.015515569, -0.01704337, 0.03371771, 0.049858455, 0.029096225, -0.01854397, 0.044065952, 0.057664745, 0.016389634, 0.00035361567, -0.0065597976, 0.035633583, -0.01871443, -0.045201153, -0.023906235, -0.040261414, -0.034394115, -0.0009756166, 0.0011501578, 0.04143741, 0.010929446, -0.0061393124, -0.017915621, 0.040671926, 0.03762063, -0.015624373, -0.033685975, 0.028819678, 0.015998844, 0.00750844, 0.006921715, 0.04073698, -0.073515795, 0.023724893, 0.029304767, -0.009079763, -0.0031102314, -0.031062419, -0.05875914, 0.026075985, 0.0043431264, 0.025608575, -0.0061579, 0.09154838, 0.028314644, 0.02509946, 0.018865397, -0.014797457, -0.028874988, -0.017443795, -0.0633498, -0.036496766, -0.0007752344, 0.018036667, -0.03602392, -0.017346663, -0.011312075, 0.048786726, 0.038037036, -0.030316653, 0.0049515264, -0.028696595, -0.031744715, -0.038344633, -0.028130582, 0.047299273, 0.061967976, -0.047130626, 0.016383259, -0.024672458, -0.037703592, 0.0012802702, 0.038770333, -0.003591466, 0.0037830079, 0.025087673, 0.025257226, -0.035296515, 0.02039592, 0.04604802, -0.011355825, -0.033878196, 0.005159162, -0.05547233, -0.014890848, -0.0033788434, 0.038156945, 0.015607147, -0.015831102, 0.008075812, 0.045477696, 0.02626798, 0.0043966216, 0.018789686, 0.0019723708, 0.018219369, -0.045835845, -0.0039846934, -0.006814809, -0.03135245, 0.021354306, 0.03415429, -0.0039550555, 0.03724208, -0.01960935, -0.031625483, 0.008744962, 0.029557286, -0.03628278, -0.006091455, 0.036890276, 0.062198278, -0.026243724, 0.013624178, 0.015831167, -0.086057365, 0.029453922, 0.049642205, -0.0027699894, 0.029021874, -0.04475732, -0.037903976, 0.013265916, -0.01605642, 0.052697804, 0.013377554, -0.0009511356, -0.021668933, 0.015351908, -0.032723054, -0.010919018, 0.019192945, -0.024725897, 0.024257584, -0.008200371, 0.0049624066, 0.046801493, -0.015350945, -0.007061887, -0.0035687983, -0.030112645, -0.03666224, -0.034659777, 0.006501882, 0.006519676, -0.017631823, 0.03829182, 0.02094017, 0.007777958, 0.009385549, -0.023702111, 0.01427202, 0.013625991, 0.007170465, -0.025777677, -0.022473184, -0.0013429719, 0.0075016394, 0.03502246, -0.0020751122, 0.006760407, 0.008880118, -0.048050024, -0.059922446, 0.0987839, 0.00064149516, -0.019008204, 0.03525186, 0.0053645317, 0.005859083, -0.028164923, 0.033733577, 0.0073219985, 0.023081131, 0.023061184, 0.05961779, 0.026639502, -0.062195107, -0.06793275, 0.019238055, -0.016344752, -0.027449645, -0.048352867, -0.015117071, -0.0053936597, -0.02006361, -0.0066742697, -0.014590727, -0.0027406916, -0.024744174, -0.018732565, 0.022203892, -0.007942753, -0.051829632, 0.027264677, 0.010069434, 0.0017762389, 0.018991882, 0.029545045, -0.015825663, 0.014703726, 0.0063396944, 0.05435164, 0.013564335, -0.055305492, -0.010304497, -0.023325037, 0.02732452, -0.005117227, -0.04178287, -0.016591376, -0.06523484, -0.00016728744, -0.0008559313, 0.011440828, 0.010242615, -0.025718743, 0.028104657, -0.02005817, 0.014877699, -0.002631717, 0.0024598958, -0.037145063, -0.01227344, 0.008852434, 0.031960513, -0.04125063, -0.0108383205, -0.038823716, -0.0355683, -0.009447546, -0.0049070977, 0.031383734, 0.010911311, -0.029638166, -0.01997566, -0.023555338, 0.07718433, 0.015529622, -0.004315018, 0.057985723, 0.015365055, 0.072732404, -0.019462464, -0.08290565, 0.0719345, 0.008975492, -0.054032024, -0.0031018443, -0.009143006, -0.010846028, 0.04010546, 0.017194789, -0.0034153382, 0.0044143028, 0.0097314585, -0.0032791055, -0.0017196264, -0.029584033, -0.03351302, 0.046870403, -0.0073402454, 0.01660203, -0.07535097, 0.03442041, 0.0097697675, 0.015438498, -0.0031902483, -0.024583997, -0.020072224, 0.037857734, -0.041247003, 0.012533183, 0.01750851, -0.0022141782, 0.01905286, 0.057279848, -0.035666224, 0.0006700564, -0.023299193, 0.04932338, 0.014160042, 0.024007784, -0.02987418, -0.006789648, -0.008846739, -0.019054899, -0.011739135, 0.024929, 0.05312396, -0.007966213, -0.01389075, 0.010471558, -0.027853131, 0.033179127, 0.01028132, -0.0011329303, 0.025447637, -0.05246025, -0.04701275, -0.002653563, 0.06449089, 0.0102494145, 0.00810052, -0.013592897, -0.02634709, 0.043616228, 0.028267495, 0.03857947, 0.012704324, 0.05847806, 0.034376208, 0.020598568, 0.03981169, 0.0048240204, 0.00058731943, 0.03251451, 0.0065192226, -0.044276316, -0.091741286, -0.015991589, 0.014889997, -0.010805226, 0.037060283, 0.022368912, 0.03614678, 0.017746974, -0.057847902, -0.011067265, 0.012399783, -0.01345298, 0.016804906, -0.07384493, -0.02233038, 0.036625065, -0.038631156, -0.037510466, -0.011606528, -0.008892981, -0.050972793, -0.024325587, -0.018743444, 0.020689238, 0.028414609, -0.004232508, 0.0024284727, -0.019112023, -0.051363133, 0.0021235074, 0.03391628, -0.035001606, -0.021739544, 0.01784762, -0.0043871016, 0.017763976, -0.043752234, 0.008856713, -0.044466723, -0.0016474865, -0.016608603, -0.009743925, 0.034966245, 0.028653752, 0.023560125, 0.004230241, -0.032822337, 0.037069354, -0.047580097, 0.020939037, 0.0014211923, -0.022678496, -0.059875242, -0.03641471, 0.01569555, -0.023024915, -0.004459723, -0.03533074, 0.016346112, 0.007155731, -0.008934916, 0.028014522, -0.002094663, -0.025506118, -0.01488178, 0.010964807, 0.01766405, -0.113737315, -0.02771803, 0.014187244, -0.028076632, -0.030815795, -0.05283064, 0.036873955, -0.023045314, -0.0360144, 0.037256587, -0.022127502, 0.005478323, 0.008898421, -0.054914705, 0.01999334, -0.0037152315, -0.052605323, 0.008295462, -0.037032176, 0.07010204, -0.011460549, 0.028822852, -0.013768345, 0.017403333, -0.030139279, 0.000112431655, 0.013114619, 0.016902206, 0.02556857, 0.014016782, 0.03102751, 0.037805144, -0.030543327, -0.06939934, -0.0013120049, 0.0018696296, -0.014132954, -0.005230792, 0.01963485, 0.019296536, 0.0062861987, 0.01353328, 0.007851629, 0.018039387, 0.026877059, 0.036012586, -0.014617928, -0.012136102, -0.0045185736, -0.0055717425, 0.032978743, 0.00097743, -0.039343372, 0.002297482, 0.04645966, 0.008926529, 0.010295883, 0.056188624, 0.007293097, -0.025366032, 0.010625699, -0.020108493, 0.024816569, -0.04703202, -0.005675305, 0.09155564, -0.0071793054, 0.043337416, 0.014220564, -0.0069984174, 0.021160727, -0.07420852, 0.00895543, -0.05018079, -0.023576645, -0.024885932, 0.0034024175, 0.02415558, 0.0343651, 0.0013838614, -0.03195598, 0.04789226, 0.02907809, 0.031415127, 0.028823987, -0.031384755, 0.04554751, -0.0067010177, 0.0082479725, 0.047910843, -0.014124679, 0.009510449, 0.025389608, -0.03520108, 0.020437628, 0.017382478, -0.040121328, -0.011582048, 0.03283707, -0.05858777, 0.014805618, -0.0030800833, 0.04641795, 0.021650575, 0.0022255122, 0.03021193, 0.004753184, -0.007427743, -0.0519806, -0.019178664, -0.0005889062, 0.0053678183, 0.02458377, 0.01022584, -0.015021866, -0.012943242, 0.017740628, 0.04375405, -0.010847359, -0.05744532, 0.07078479, 0.0120034395, 0.054674428, 0.028165037, -0.0543462, 0.052754022, 0.030410044, -0.03415565, -0.030351106, -0.012803382, -0.051329132, -0.04533081, 0.002283088, -0.0364605, 0.0486616, 0.038044516, 0.030667095, 0.021742832, -0.06097876, -0.014331863, -0.0015318814, -0.05776448, -0.052124765, -0.04474417, -0.009091338, 0.0161922, 0.04388915, 0.004629192, -0.018797848, 0.041711237, 0.00333252, 0.009190268, 0.019819705, 0.009287399, 0.005841459, -0.0006061336, -0.027842248, 0.05467624, -0.007964513, 0.029081265, -0.026372477, -0.0031843546, -0.021566024, 0.02445026, 0.0057040933, 0.020477524, 0.0013337659, 0.012459513, -0.011774495, -0.011195111, 0.012658535, 0.053078625, -0.027206646, 0.017427813, -0.0023764786, -0.04010213, -0.019132877, 0.036706217, -0.018434258, 0.07161631, -0.0025895548, -0.005798844, 0.03913347, 0.005471976, 0.064499505, 0.026715664, 0.040779144, 0.01629171, 0.004815407, 0.025383089, 0.03779245, -0.0025006977, 0.0050914143, 0.0065509574, -0.0023304634, 0.0042261607, 0.0042365883, -0.008308835, -0.012882944, 0.011690852, 0.08778737, -0.018430801, -0.0784773, -0.052374903, 0.04774628, -0.021747818, -0.03973915, -0.010007523, 0.010934886, -0.0068524377, -0.01990947, 0.018173127, -0.034817092, -0.02693214, -0.05310673, -0.016235495, -0.005156442, 0.026672143, -0.033201907, 0.017788414, 0.023807855, -0.0070671, -0.024047341, 0.026755108, 0.0028216718, 0.05895227, 0.0078507215, 0.026093977, 0.02085596, 0.0045113484, 0.010335552, 0.007548222, -0.02171223, 0.033071678, 0.044252396, 0.028811434, -0.03377166, -0.0085058175, 0.036626197, -0.0052797543, 0.0030973107, 0.0060182675, 0.027761552, 0.013541668, 0.034291655, -0.02391621, 0.015649308, 0.02946616], [-0.029868333, -0.07967352, -0.037661325, -0.050761297, -0.0037179748, 0.015108741, 0.003966083, -0.014189444, 0.038189393, 0.04153851, -0.007892089, -0.002729819, -0.04352886, -0.033913966, -0.017327733, 0.018835926, 0.046496395, -0.045163065, 0.029929325, 0.037227992, -0.021454342, 0.016135054, -0.029100377, 0.02667012, 0.0035683315, 0.052276645, 0.012703099, -0.005714462, 0.019671012, 0.02796661, -0.017406981, -0.07364042, 0.005501798, 0.011305157, 0.00883463, -0.01628352, -0.0012464887, 0.014809618, -0.030307831, -0.039662197, -0.053456027, 0.0021586579, -0.017134175, 0.0138990935, -0.022332411, 0.08029457, 0.007093626, 0.007148231, -0.063634954, -0.033026904, 0.034399927, -0.023398196, -0.029913643, -0.0019254894, 0.018910486, 0.026124068, 0.037875798, 0.010357654, 0.013179578, -0.0098576555, -0.004598675, -0.0012219272, -0.08104457, -0.004138588, 0.024138328, 0.04882961, -0.015073872, -0.002188592, -0.019613337, -0.03346879, -0.046622712, 0.026888253, 0.025552578, -0.042340208, 0.04136044, 0.019599082, -0.0733016, 0.0013882647, -0.001863154, -0.033635456, 0.016325679, 0.011305652, -0.00949691, -0.029436562, -0.044553418, 0.02419699, -0.03930008, -0.0010780679, 0.05012665, 0.0049210424, -0.027626257, 0.008783315, 0.055178832, 0.01994031, -0.004413149, 0.016584177, 0.008370158, 0.042358685, 0.013451726, 0.033516597, 0.065206885, -0.050361298, -0.027742047, -0.029608821, 0.012142081, 0.0055153393, -0.00094824366, -0.0032596423, 0.010731556, -0.006911389, -0.0006793845, -0.009647349, 0.032472685, -0.044342015, -0.008696035, 0.009585068, 0.045531485, -0.01624295, -0.045518108, 0.0134999715, 0.010750855, 0.016077599, 0.0019491188, 0.031645056, -0.04464377, -0.010071032, 0.00097061205, -0.017463122, -0.0624718, 0.015662247, 0.02245434, 0.022568593, 0.028942483, -0.04185079, -0.026003014, 0.027712114, 0.018052833, 0.04507359, -0.031245988, 0.03167373, -0.026806086, -0.006431127, 0.031012217, 0.007597791, -0.0053649014, -0.04598938, 0.0021572872, -0.07232792, -0.026337665, 0.003477734, -0.022303024, -0.009952611, 0.0030806952, 0.015528915, 0.01241664, -0.041277546, 0.025993738, 0.016833792, -0.05238761, 0.02820345, -0.00899735, -0.008895596, 0.011377005, 0.016729461, -0.0069802487, -0.031308707, 0.008246611, 0.005720163, -0.0005814407, -0.025341175, 0.0629718, 0.005576304, 0.016171237, 0.02394244, -0.04100123, 0.00583069, 0.0147894425, -0.03223853, 0.04088785, 0.021203246, -0.00828507, -0.010349101, -0.017440753, -0.009761383, -0.022657847, 0.053127524, -0.013009183, -0.019325398, 0.018353472, 0.01568681, 0.027234098, -0.015953913, 0.023739533, -0.005801085, -0.047055166, 0.024423633, -0.03908062, 0.000849121, 0.025163107, 0.050933227, 0.012963131, -0.016863232, 0.028783275, -0.020084169, -0.04304114, -0.025421876, 0.049052533, 0.018778032, 0.051089726, -0.013645148, -0.008508205, 0.042184126, 0.024554772, 0.036956064, 0.051922698, 0.025349947, 0.018201606, -0.050674237, 0.050921824, 0.06598583, -0.03659554, -0.006112707, 0.01884733, -0.046861306, -0.039198164, 0.02809468, -0.0021631534, 0.028526695, -0.0019502152, 0.010404365, 0.06647705, 0.010070154, 0.0007464897, -0.061294608, -0.011869494, -0.029697306, -0.0044249906, 0.028884152, -0.066003375, 0.01682014, -0.033748176, 0.03528896, 0.03922536, -0.028479544, 0.00072011916, -0.007350972, -0.042556055, -0.0027984593, 0.008140114, -0.020673642, 0.0477135, 0.0011017522, -0.030545112, -0.021121887, -0.012180019, 0.036635887, 0.014492075, -0.0008004369, 0.012143176, 0.031516764, 0.015064661, -0.044948153, 0.0046764156, -0.063231446, 0.022434711, 0.008907876, 0.049312178, -0.02374869, 0.030066246, -0.03666966, -0.024650825, -0.08149106, 0.007245599, 0.0072852923, -0.03608567, 0.026621597, 0.026937664, 0.02143592, 0.033507604, 0.034873612, -0.05100691, -0.01854711, 0.008736495, 0.004651416, 0.011157871, 0.013011814, 0.02697626, -0.06673999, 6.403495e-05, -0.046770077, -0.0083276145, 0.020141186, -0.0038631498, 0.023554338, 0.052696384, -0.044385873, 0.013334182, -0.0015818087, -0.077950716, -0.034074053, 0.043994207, -0.0061912155, 0.048626214, 0.007996475, 0.01360721, -0.039173603, -0.042316794, 0.047751658, 0.023271006, 0.008156028, -0.028352572, -0.03461528, -0.057377074, 0.025821218, 0.017155558, -0.023822319, 0.044652537, 0.07962791, -0.008839674, -0.02019963, -0.017667945, -0.015205506, 0.0067451615, -0.029399063, 0.019733293, 0.04019986, 0.0042017456, 0.0010478048, -0.018966628, -0.014676285, 0.050933227, 0.03435344, -0.018364875, -0.014499736, 0.031032393, 0.013242352, -0.015391196, 0.009254147, 0.033888087, 0.049991127, 0.021361798, -0.073715635, 0.0041708793, -0.021425614, 0.03574028, -0.06800424, 0.03646659, -0.0658139, 0.0021657848, 0.014449093, 0.018107858, -0.01946838, 0.020125397, 0.020667503, -0.024403997, -0.00094034895, -0.026037665, -0.013922779, -0.009882435, -0.01127717, 0.0008872788, -0.032618355, -0.035500363, 0.06295338, 0.042205177, -0.025841173, 0.044491794, 0.007904808, 0.032308705, -0.017466191, 0.06703407, 0.0018478032, -0.013293832, 0.042225353, 0.020310484, 0.061995488, -0.0405236, 0.004758762, 0.029956955, -0.00014956109, 0.026069244, -0.02859731, 0.044947054, 0.03014029, 0.034744665, 0.04875779, 0.025895067, 0.022779338, -0.031872742, 0.022839645, 0.0114217, -0.00033508704, 0.02472802, 0.0055701635, 0.0388508, -0.01865961, 0.05908036, 0.033617474, 0.013141201, 0.02443723, -0.014744432, 0.024828017, -0.029074611, 0.0016747772, -0.020032413, -0.030289192, -0.04627008, -0.0038070097, 0.0036806941, 0.021956533, 0.037615273, 0.0043284995, -0.02104919, 0.042735875, 0.022447597, -0.0049026213, -0.030986777, 0.010761381, 0.027020996, -0.005757444, 0.012603044, 0.066977054, -0.033401683, 0.023726266, 0.01199866, -0.0015614002, 0.004427403, -0.013392955, -0.048328847, 0.0404929, 0.021209605, 0.022643812, -0.012240765, 0.075852476, 0.04988959, -0.026677137, 0.00481249, -0.010064892, -0.07265418, -0.018795576, -0.017325183, -0.05300647, 0.03027011, -0.008927394, -0.0131339645, 0.000876314, -0.053922806, -0.0007472572, 0.016887246, -0.0445771, 0.032013528, -0.010559188, -0.05399638, -0.010689452, -0.042856928, 0.038866036, 0.0435532, -0.036014836, 0.0028205535, -0.0053070066, -0.03730288, -0.027299065, 0.01874404, -0.01668286, 0.0051789368, -0.008390772, 0.03941746, -0.05850629, 0.000991226, 0.042364825, 0.013644928, -0.01984645, -0.035462864, -0.050239153, -0.010002611, -0.023157846, 0.061557766, 0.0007166652, -0.002841551, 0.0031981294, 0.006824986, 0.027805205, 0.04998849, 0.004077623, 0.04689815, 0.018286804, -0.033340283, 0.006322684, -0.03913632, -0.008488579, 0.014460497, 0.013991199, 0.0077637997, 0.057189353, -0.04137009, -0.009980681, 0.025787666, 0.043782696, -0.01751663, 0.016024308, 0.048017446, 0.049581476, -0.056136727, 0.0062556886, 0.008243843, -0.050698142, 0.02681047, 0.03709548, -0.0028548187, 0.024175389, -0.005236831, -0.05603497, 0.009512699, -0.053565677, 0.047287624, 0.02678876, 0.0053100768, -0.026429439, -0.0048947264, -0.0368065, -0.02618284, -0.018800618, -0.0100087505, 0.023114208, 0.0070289327, -0.03827755, 0.043701664, -0.02817538, 0.027185032, 0.0032859307, -0.020358866, -0.0541455, -0.02670433, -0.0048631476, 0.013359621, -0.0076168706, 0.014380672, 0.009326077, -0.014572776, -0.007903136, -0.031734366, 0.050009985, 0.007640335, 0.0029115619, -0.03630519, -0.028904326, -0.008076299, 0.01980259, 0.013845147, -0.0061166543, -0.0036839286, -0.020305604, -0.08915771, -0.05527532, 0.053611074, -0.021513112, -0.028560465, 0.014333303, 0.051314805, -0.006155908, -0.04459201, -0.017244482, 0.0178504, 0.03196545, -0.0035166594, 0.03615782, 0.018304348, -0.04578724, -0.057508215, 0.013083964, -0.02025555, -0.039463077, -0.072411254, -0.0468385, 0.014750847, -0.019249083, 0.0018054787, -0.029635904, 0.020367939, -0.0038579141, 0.0044499906, -0.014974092, 0.009103874, 0.0013498876, 0.029449282, 0.032639842, 0.0041184123, -0.00856029, 0.040083468, -0.0023605214, 0.04561745, -0.0068574417, 0.042327106, -0.0054076645, -0.0062885834, -0.03749422, -0.018458296, 0.02347539, 0.0025368368, -0.057158653, -0.03629729, -0.05501743, 0.005525975, -0.032817475, 0.032309584, -0.022424515, -0.015179492, 0.05348585, 0.004447798, 0.019720133, -0.015888562, 0.01857211, -0.008554258, -0.021891182, -0.011613353, -0.0031565726, -0.03000191, 0.0056895716, -0.03635782, 0.013028043, 0.02246969, 0.0006052619, 0.011608309, 0.04177686, -0.026219243, 0.011868177, -0.0040210444, 0.08393491, 0.013255236, -0.026986565, 0.04275956, -0.02150467, 0.052568313, -0.007369064, -0.05686304, 0.06405206, -0.026128234, -0.016669922, -0.015081547, 0.013104797, 0.021966621, 0.060583208, -0.0049806912, -0.0024491176, 0.0074659935, 0.016494703, -0.009857436, -0.0057701636, -0.04747841, 0.023780214, 0.037316587, -0.0044350782, 0.009360507, -0.041931495, 0.03983325, 0.019723643, 0.0028004362, -0.01839733, -0.0007516432, -0.03722273, 0.023839423, -0.039696407, 0.059870053, -0.0022856311, 0.047310427, -0.010810505, 0.03990606, -0.0026206088, -0.03426484, -0.027897995, 0.060888577, 0.0121438345, 0.043469205, -0.0044592014, -0.003574554, 0.008153492, -0.012485939, -0.045854293, 0.020255221, 0.024149073, -0.020538991, -0.020824518, 0.01578966, 0.021163115, 0.021786796, -0.00054736726, 0.019438555, 0.04095781, -0.043411095, -0.029975377, -0.014364882, 0.029610466, 0.0138197085, 0.01053989, -0.01833856, 0.0065337587, 0.06959284, 0.050511573, 0.043562848, 0.019055223, 0.059721366, 0.049678847, 0.003267537, 0.03570168, 0.021481397, -0.010283586, 0.02018066, -0.002687933, -0.045527097, -0.053989362, -0.006324247, 0.008240772, -0.012378044, 0.033963528, 0.027773626, -0.00037192905, 0.04508324, -0.026684154, 0.0032228003, 0.0009864015, 0.007984633, 0.011152608, -0.05933935, -0.032909583, 0.0018429786, -0.03262274, -0.037835885, -0.044082366, 0.0020846447, -0.02584205, -0.0061902283, -0.018942066, -0.013046752, 0.01037103, 0.0268017, -0.020284388, -0.028243802, -0.03442186, -0.0021578902, 0.00910941, 0.023276268, -0.03536133, -0.010185944, -0.021020735, 0.033042036, -0.090878755, -0.029622307, -0.02377802, 0.009128051, -0.008258974, -0.004580692, 0.0600297, 0.01022125, 0.014865319, -0.032122303, -0.028322967, 0.04145781, -0.05169726, 0.035364836, 0.01906838, 0.0031383708, -0.057522688, -0.0108824335, 0.021306533, -0.016578035, 0.024038108, -0.016035931, 0.024067275, 0.0093434015, -0.0006842091, -0.00025526262, 0.026652249, -0.013278043, -0.023036793, 0.023603022, -0.013336375, -0.07935686, -0.029418908, 0.0018096454, -0.02938415, -0.067478366, -0.0067975735, 0.0003184204, -0.028154766, -0.03967843, 0.05135954, -0.00210175, 0.0022436357, 0.0092512965, -0.031166602, 0.011791643, -0.015066087, -0.029991165, 0.018574413, -0.04451011, 0.03731922, -0.013317188, 0.031884145, -0.035587646, -0.03231704, -0.009347623, 0.0136912, 0.029206078, -0.0030474167, 0.022467168, -0.008122351, 0.017921893, 0.016906105, -0.06319416, -0.03916483, -0.033789843, 0.0086269565, 0.0021947322, 0.0011078925, 0.029487658, 0.020944694, 0.01644262, 0.012341642, 0.017743412, -0.011229363, 0.009126214, 0.013963239, 0.010622018, 0.00842279, 0.0021456096, 0.010656996, 0.0068964767, -0.019800836, -0.02720389, -0.005840119, 0.04277886, 0.022998545, 0.019298205, 0.029003449, 0.012280457, -0.023916617, -0.022068813, -2.083329e-06, 0.018823646, -0.094101556, -0.0050448156, 0.07747352, 0.0073499847, -0.021438112, 0.028363975, 0.0072732307, 0.047045518, -0.07199985, -0.01096489, -0.08092615, -0.046577096, 0.014515102, 0.015834507, 0.0066802492, 0.00957032, 0.015031987, -0.016831215, 0.05701441, 0.004793411, 0.039924476, 0.0142368125, -0.021307852, 0.048410427, -0.022215744, -0.010599101, 0.028623626, 0.015714003, 0.014674531, 0.0068675294, -0.016767673, 0.018518383, 0.006044505, -0.03671023, 0.05074375, 0.009576077, -0.06574723, -0.017325403, -0.022979338, 0.014364882, -0.001008989, -0.03296309, 0.010836053, 0.022908287, -0.021312235, -0.027196435, -0.01216708, -0.027363978, 0.032137215, 0.01596148, 0.01023726, -0.011742081, 0.0018640312, -0.008262264, 0.066213675, -0.030924497, -0.03751286, 0.06078233, -0.009951295, 0.05661392, 0.051763486, -0.040534344, 0.059427947, 0.013731962, -0.03637643, -0.030435024, -0.0017631542, -0.019927591, -0.05258279, 0.017254021, 0.0024350828, 0.04278368, 0.047123585, 0.035467032, 0.021527149, -0.0890735, -0.0186254, -0.029605422, -0.026052577, -0.04419333, -0.036840715, 0.025375387, 0.031835023, 0.051009763, -0.0196811, -0.031255912, 0.06444197, -0.0011513134, -0.009350296, -0.012747343, -0.00436221, -0.045761306, 0.012734624, -0.025775384, 0.0522548, 0.028005423, 0.05236656, -0.03632273, -0.009492963, -0.051320504, 0.028516607, 0.007919474, 0.011141863, -0.016331546, 0.019008731, -0.0038676728, -0.008145597, 0.0401793, 0.03215958, -0.040965706, 0.035185892, -0.005882115, -0.022464866, -0.032320984, 0.04910823, -0.048751216, 0.043563064, 0.034217473, -0.012467957, 0.04101395, -0.024016619, 0.08534676, 0.026928892, 0.013298629, 0.008490991, 0.0021043404, 0.014090102, 0.038014613, -0.04269728, -0.013485498, -0.0035706065, -0.04428587, -0.019285487, 0.0015745582, -0.026689418, -0.010922784, -0.00989691, 0.046363063, -0.028093802, -0.04879288, -0.023119614, 0.06399987, -0.018557856, -0.031771865, -0.02701661, 0.016680228, -0.0388815, -0.019062899, -0.006292202, -0.039878864, -0.03369116, -0.06076479, 0.01005897, 0.00026491174, 0.006360513, 0.016066633, 0.039991144, 0.024067055, -0.045388285, -0.022451488, -0.0037526237, 0.005032446, 0.046717446, 0.042133134, 0.029439852, 0.025631089, 0.019759826, 0.008885069, 0.01210129, -0.033277124, 0.020141844, 0.07437704, -0.0046153413, -0.030186122, 0.014792952, 0.030376693, -0.0057529486, -0.00077565626, -0.012571465, -0.018665532, 0.026301263, 0.03941132, -0.04819464, 0.006653495, 0.025387665], [-0.0510513, -0.09073733, -0.024682492, -0.054920945, 0.021353673, 0.013373381, -0.00022789558, -0.023047362, 0.025320258, 0.047013402, 0.0013761806, 0.013639193, -0.0482505, -0.035975132, -0.023478793, 0.014100988, 0.035550453, -0.03266507, 0.04251794, 0.0469036, -0.00787049, 0.024230385, -0.0451812, 0.020381013, -0.0076986956, 0.04337073, 0.02387911, 0.02519307, 0.011989881, 0.00088664825, -0.017396925, -0.045428596, 0.010158938, -0.0022564237, 0.017667083, -0.007361971, 0.0053914892, 0.012954763, -0.042894006, -0.029266711, -0.054897156, 0.011664594, -0.00537296, 0.027033161, -0.018939868, 0.07246908, 0.0118228905, 0.024248777, -0.054570496, -0.044184178, 0.01931182, -0.03602775, -0.036557768, 0.03354783, 0.012090989, 0.051429253, 0.028623456, 0.016471846, 0.02803556, -0.010304883, -0.014726686, -0.0020628981, -0.06551795, 0.013203417, 0.015646733, 0.045501795, -0.011288981, -0.0030178006, -0.011642748, -0.062053595, -0.03446033, 0.027536647, 0.018642487, -0.029630886, 0.051825915, 0.013374182, -0.079650104, 0.00028731427, -0.012017789, -0.019678283, 0.018184066, 0.0010234427, -0.020412125, -0.046413153, -0.05564015, 0.025049185, -0.0172392, 0.0029847743, 0.04531193, 0.0023217327, -0.040739153, 0.009230887, 0.06875229, 0.007857222, -0.005212146, 0.016005417, 0.0066246986, 0.053606987, 0.032955132, 0.027035907, 0.041285418, -0.03595912, -0.021169297, -0.015539561, 0.009440196, 0.018785516, 0.010459063, -0.019773902, -0.0017682639, 0.0040535103, -0.003591543, -0.008151999, 0.02266237, -0.053912602, 0.018046813, 0.0070675653, 0.026029391, -0.012693526, -0.0409615, 0.011457686, 0.013525732, 0.01897258, 0.0005375705, 0.03967499, -0.025588127, 0.0012153669, -0.002080741, -0.007277103, -0.06177806, 0.007823824, 0.030558253, 0.011337934, 0.03240681, -0.035570238, -0.027604131, 0.021006882, 0.0049249465, 0.05586227, -0.008281788, 0.04345537, -0.022393128, 0.005999744, 0.022586197, 0.013158811, 0.008413093, -0.029225536, -0.013984153, -0.0738782, -0.01944404, -0.004186645, -0.0079803765, -0.0107724555, 0.009507448, 0.003494666, 0.013099335, -0.048688103, 0.012047985, 0.02437482, -0.051376186, 0.022388896, -0.010348346, 0.00019261037, 0.02511369, 0.009092033, -0.005260871, -0.04567382, 0.0044661816, 0.0055834134, -0.011571719, -0.0124396095, 0.0684723, 0.010610498, 0.0070199845, 0.026756285, -0.05261008, 0.00085668155, 0.010869418, -0.018894345, 0.037554905, 0.003518685, -0.017031148, -0.0017234283, -0.022881288, -0.018361129, -0.008056695, 0.058910176, -0.014708959, -0.023390494, 0.007835719, 0.0142655205, 0.03875792, -0.020077229, 0.030739425, -0.0124056395, -0.031601824, 0.026688201, -0.029747093, -0.005618412, 0.02640272, 0.05461259, 0.0025095392, -0.014125637, 0.0214589, -0.02307367, -0.02512925, -0.030486425, 0.04220912, 0.009405548, 0.037421312, -0.023914795, -0.0070854076, 0.056412417, 0.03204149, 0.034710582, 0.03582461, 0.022625428, 0.024077669, -0.048499838, 0.056917053, 0.06130134, -0.019350108, 0.008331427, 0.02249561, -0.03882586, -0.049938697, 0.039029907, -0.005597138, 0.021950262, -0.004405333, -0.015410545, 0.08363957, 0.01021018, -0.0049529686, -0.054967612, -0.009720647, 1.6470245e-05, -0.026561016, 0.02835673, -0.051916044, 0.022368422, -0.01952639, 0.032365173, 0.03696838, -0.041047513, 0.0045421277, -0.0016666973, -0.054926436, 0.009526206, -0.0013221946, -0.00012947443, 0.052362796, -0.00092736626, -0.037913132, -0.012801041, -0.01952845, 0.011554105, 0.008153572, -0.013060447, 0.014449895, 0.03110772, 0.014789365, -0.0370672, -0.015277296, -0.064870805, 0.007471086, 0.011024542, 0.041287243, -0.027582169, 0.010741345, -0.063754484, -0.034598496, -0.081780255, 0.024325637, -0.006605026, -0.03389119, 0.037325233, 0.03300637, 0.0010980164, 0.047384895, 0.02198915, -0.05648928, -0.020380098, 0.028224625, -0.004517422, 0.01751702, 0.009675011, 0.03818169, -0.049447335, -0.003877828, -0.046612624, 0.0017165656, 0.020480292, 0.008128981, 0.019336069, 0.0643584, -0.023381459, 0.033583287, -0.0037058052, -0.079386584, -0.03079524, 0.030793412, -0.016631344, 0.019310446, 0.020681595, 0.005416023, -0.029460693, -0.041248128, 0.035680957, 0.030678576, 0.018957254, -0.049934123, -0.033494417, -0.052499823, 0.04858242, 0.01042904, -0.023369905, 0.044517014, 0.07063082, -0.031681433, -0.022519859, -0.039086636, 0.0027139303, 0.017178409, -0.034547254, 0.04424457, 0.04278055, 0.011414795, 0.011025915, -0.051455792, -0.025997825, 0.047436137, 0.026851075, -0.015914831, -0.01953737, 0.028263168, 0.004681667, -0.013973859, 0.027829682, 0.025262153, 0.04300793, 0.0056524966, -0.060285673, -0.00904674, -0.005577008, 0.027910432, -0.061490286, 0.028974822, -0.064211994, 0.011658188, 0.017890804, 0.023122394, -0.019616062, 0.0147985155, 0.022356529, -0.01212719, 0.0014223886, -0.014624663, -0.012652809, -0.029207233, 0.016975103, 0.009223566, -0.01996674, -0.04497109, 0.06971534, 0.025888938, -0.01879335, 0.061076242, 0.0011646694, 0.028135752, -0.0026658922, 0.062861435, 0.026743103, 0.0023927607, 0.04622826, 0.011721782, 0.073805, -0.045705844, -0.013659324, 0.031353857, 0.0052489755, 0.02266609, -0.041322015, 0.044713665, 0.024332957, 0.03521979, 0.053250134, 0.024431549, 0.02761534, -0.02474557, 0.025377901, 0.010389064, 0.017786492, 0.041453775, 0.030226558, 0.02938383, -0.0089675905, 0.04432692, 0.035177756, -0.0015410545, 0.014777928, -0.01940012, 0.022628745, -0.024068518, -0.00012678657, -0.005340706, -0.040798627, -0.020825708, -0.0052883215, -0.0072112223, 0.033084147, 0.04619721, -0.0037217033, -0.04227729, 0.032915786, 0.046382956, -0.013957618, -0.017435012, 0.020619834, 0.027913405, -0.0018055221, 0.0035053026, 0.04668308, -0.042838193, 0.037317917, 0.019017644, -0.006485617, 0.0031636595, -0.023823295, -0.041995466, 0.04224572, 0.013100908, 0.026564674, 0.004629054, 0.07508602, 0.041349463, -0.03156431, 0.013851133, -0.006019642, -0.06858942, -0.0047562406, -0.045728724, -0.06184943, 0.024019107, -0.009731627, -0.011315544, 0.024654128, -0.031435978, 0.016220447, 0.013886933, -0.0510358, 0.024465177, -0.016049339, -0.033626292, -0.011624791, -0.05312569, 0.03266553, 0.05184467, -0.040117856, -0.001577026, -0.010766737, -0.036664598, -0.02572881, 0.015887382, -0.029222332, 0.01128006, -0.00014548717, 0.046515632, -0.046696804, -0.007988069, 0.050699987, 0.026799604, -0.023666713, -0.019869521, -0.03296228, 0.00033855505, -0.003991061, 0.04439646, 0.0016067639, 0.017041529, -0.0030982362, 0.0040347525, 0.006566138, 0.05287498, 0.01031838, 0.044949416, 0.008489496, -0.014931193, 0.015396019, -0.04493449, -0.016212897, 0.016873308, 0.03485287, 0.0018402068, 0.052569363, -0.034936134, -0.037517387, 0.009190396, 0.05653412, -0.01789841, 0.01120846, 0.04844997, 0.025828432, -0.049225673, 0.029706832, 0.010284753, -0.04470482, 0.025306052, 0.04982798, 0.0072450778, 0.02155086, -0.011650525, -0.05703829, 0.030421002, -0.031478412, 0.047978286, 0.04201983, -0.0019704818, -0.035132404, -0.008623546, -0.012698559, -0.009608329, -0.014532704, -0.0055127284, 0.030404072, -0.012194844, -0.030251265, 0.039452642, -0.034205955, 0.033246104, 0.01541409, -0.014867599, -0.03523992, -0.032113317, 0.008569331, 0.005686581, 0.002737835, 0.008202297, 0.003639009, -0.005133112, 0.0017225132, -0.038855135, 0.027368745, 0.02538545, 0.003232972, -0.02802641, -0.009259509, -0.009459125, 0.017436499, 0.022291562, 0.00044286659, 0.0045128474, -0.016853178, -0.09386942, -0.051028483, 0.05588949, -0.013041689, -0.021736149, 0.017697908, 0.04022034, -0.028294278, -0.039481007, -0.008643905, 0.03458889, 0.033943344, -0.010891408, 0.029566834, 0.005245773, -0.06486898, -0.066817954, 0.034710128, -0.024368642, -0.05830075, -0.06570896, -0.041507762, 0.018277269, -0.027604131, 0.039257742, -0.030780602, -0.0043298444, -0.0109014725, 0.009922722, -0.018551901, 0.0044179144, 0.00013281636, 0.0388652, 0.02126446, 0.010919372, 0.014677733, 0.031579863, -0.008828967, 0.026310302, 0.0004909048, 0.03973721, 0.009030269, -0.019953243, -0.041488547, -0.03705668, 0.028475223, 0.014597212, -0.05303236, -0.030936612, -0.062402327, 0.0135774305, -0.024930175, 0.03984152, -0.013130903, -0.008231691, 0.0511822, -0.010825069, 0.018394748, 0.0073933103, 0.013993074, -0.016056202, -0.02620599, -0.0045560817, 0.01954469, -0.03559037, -0.013860627, -0.020826627, 0.008256625, 0.02217627, 0.002404084, 0.0034962671, 0.048022658, -0.030852256, 0.03317611, 0.003507819, 0.07946573, 0.014717079, -0.008332114, 0.04123692, -0.011922627, 0.05707489, 6.176342e-05, -0.054310177, 0.06586428, -0.026488729, -0.015374059, -0.002880463, 0.0050982274, 0.019435804, 0.053023208, -0.010941619, 0.0108875185, 0.009398106, 0.012112035, -0.0111137545, -0.0020865742, -0.025082124, 0.007861597, 0.03080851, -0.009969989, 0.0031206538, -0.046414983, 0.046116687, 0.004093771, -0.0051762317, -0.024042899, -0.005700535, -0.034357846, 0.041148163, -0.040154457, 0.050307445, 0.014891846, 0.01705494, -0.019555671, 0.042771395, -0.00050085556, -0.02624442, -0.016964123, 0.065910265, 0.020220887, 0.048718985, -0.0053919465, 0.0068465895, -0.0045590554, -0.03794287, -0.016292732, 0.0015294453, 0.02827575, -0.01732624, -0.004586048, 0.033870142, 0.0028153255, 0.016125057, -0.010061032, 0.0041273977, 0.050333068, -0.034875743, -0.03567821, -0.016851805, 0.021586316, 0.018392917, -0.0082415845, -0.020381013, -0.0007814216, 0.04690726, 0.033498306, 0.016462926, 0.024599226, 0.056662627, 0.048812315, 0.017195392, 0.030832298, 0.022244895, -0.0054059, 0.032450043, -0.006140199, -0.03705279, -0.061382774, -0.017315803, 0.007805981, -0.0032245081, 0.043404587, 0.028656855, 0.0018778654, 0.0456299, -0.041816123, -0.0066173784, -0.00014983349, 0.016370509, 0.016945137, -0.07188713, -0.04951322, 0.016225938, -0.032289002, -0.056289807, -0.052159436, -0.011693817, -0.02161468, -0.0029028808, -0.02904619, -0.017360782, 0.00714008, 0.022017514, -0.0130052315, -0.020351732, -0.034301117, 0.011526998, 0.009030269, 0.0067738458, -0.033365056, 0.0059274584, -0.00069312286, 0.0053721163, -0.07979833, -0.018143805, -0.0098299915, 0.006778764, -0.016549394, -0.003953774, 0.05633739, 0.013758888, 0.020388333, -0.0077702957, -0.025936976, 0.041854553, -0.05145419, 0.024526026, 0.030188128, -0.0024979874, -0.05222349, 0.005428776, -0.002393933, -0.02078545, 0.013173452, -0.013182602, 0.0338157, 0.006093076, -0.0059696063, -0.001492616, -0.00201486, -0.016180757, -0.040374976, 0.0032418934, -0.011931663, -0.07316358, -0.024870986, 0.02655461, -0.03684794, -0.06369501, 0.004946106, 0.010217843, -0.03527372, -0.021968564, 0.05411459, -0.008676474, 0.00298283, 0.0011439958, -0.048168145, -7.400173e-05, -0.022464272, -0.04007668, 0.007692519, -0.041197345, 0.042779636, -0.0072258627, 0.02062578, -0.048107754, -0.021546284, -0.0043993853, -0.010986226, 0.046327136, -0.0044837953, -0.0027249104, 0.0026123638, 0.009642871, 0.018743139, -0.046574194, -0.063727036, -0.05016837, -0.0076124556, 0.005222898, 0.010218185, 0.038040776, 0.022549424, 0.009278238, 0.0145651875, 0.022787498, -0.012507664, -0.00437834, 0.012891398, 0.010678208, 0.01287264, -0.005217408, 0.008539422, 0.01946234, -0.006972861, -0.01758822, -0.0016574899, 0.042822637, 0.028436793, 0.0075840903, 0.051241677, 0.023674719, -0.016871478, -0.032051098, -0.0041951085, 0.007333634, -0.07284606, -0.006104285, 0.061185133, 0.014191861, -0.022368422, 0.033556294, -0.0067308405, 0.03821097, -0.069822855, -0.009052516, -0.073530495, -0.06166826, -0.008835372, 0.01731549, 0.011662535, 0.006806786, 0.021922354, -0.018477786, 0.047924753, 0.016840825, 0.035178613, 0.0023287097, -0.031191828, 0.033363227, -0.038113065, -0.0031416991, 0.03574775, 0.024407988, 0.02152661, 0.01942657, -0.0141278105, 0.015884407, 0.025405353, -0.028080165, 0.034796137, 0.016249727, -0.06763414, 0.0023900156, -0.011207087, 0.0413028, 0.0033471198, -0.025847761, 0.020716138, 0.02769815, -0.01404523, -0.029877024, -0.0077812755, -0.039409637, 0.009414575, 0.024669224, 0.009893128, -0.0046574194, -0.009636123, -0.0041916776, 0.04766489, -0.018928202, -0.070251085, 0.05735854, 0.0051824083, 0.058061276, 0.046506483, -0.034486864, 0.071978636, 0.010023059, -0.03641068, -0.03760523, -0.010670431, -0.017268136, -0.036304083, 0.029032467, -0.0013871606, 0.035637267, 0.050953906, 0.05203225, 0.021898108, -0.07985141, -0.0032286257, -0.033307184, -0.030924715, -0.032726835, -0.030994255, 0.02160347, 0.012613005, 0.040259458, -0.009856527, -0.023609182, 0.08051022, 0.0021558865, -0.005110351, -0.0041166465, -0.00092782377, -0.044916186, 0.020669699, -0.037015963, 0.06960326, 0.022368193, 0.056256868, -0.030216953, 0.0019576717, -0.04045458, 0.013890364, 0.018141747, 0.009217847, -0.01981096, 0.0034679014, -0.025365552, -0.006206309, 0.01829524, 0.052013032, -0.05137984, 0.06542805, 0.020282649, -0.021070935, -0.02227509, 0.04752489, -0.054239266, 0.047517117, 0.008585115, 0.010582132, 0.040507652, -0.048142526, 0.08689701, 0.035941735, 0.025584696, 0.01360122, -0.00035799906, 0.023993487, 0.016705519, -0.029821152, -0.018022107, 0.0012494511, -0.022151563, -0.01568379, 0.015832024, -0.015888296, 0.013636448, -0.0028831651, 0.048455458, -0.020365002, -0.059490524, -0.029257102, 0.06305268, -0.024576807, -0.029369192, -0.026862971, -0.005184467, -0.040375892, -0.006214315, 0.0065313675, -0.03595363, -0.017494602, -0.053425815, 0.012945612, -0.01604202, 0.014627407, -0.0007814216, 0.028517772, 0.02183131, -0.036449566, -0.014859822, -0.008233293, 0.01058156, 0.04125888, 0.03431804, 0.03797787, 0.03312418, 0.015173385, -0.00087269425, 0.017851915, -0.03694768, 0.042376567, 0.043723926, -0.004649642, -0.051439036, 0.014673244, 0.047543, -0.012631076, 0.0028777178, -0.013050839, -0.01612803, 0.051907122, 0.0404953, -0.038615175, 0.022765538, 0.029440334], [-0.019254275, -0.09118062, -0.02161447, -0.05499452, 0.011731379, 0.0012785858, 0.014819329, -0.01608376, 0.034354325, 0.015301747, 0.015135436, 0.018684426, -0.06924415, -0.037418686, -0.044315264, 0.017053315, -0.010238122, -0.03357585, -0.009273285, 0.052284606, -0.02026983, -0.0064754942, -0.025567291, 0.0040577995, -0.026645066, 0.053939156, -0.01359264, 0.012171335, 0.013209301, 0.032342087, -0.0037555508, -0.037759565, 0.004631335, -0.011537938, 0.030884217, 0.016909415, 0.024105294, 0.0019402894, -0.035772093, -0.030074634, -0.05320521, 0.027868215, -0.01457576, 0.013560794, 0.02972712, 0.03702237, 0.009713242, 0.00442681, -0.01081409, -0.030072127, 0.021675803, 0.017789476, -0.020260984, 0.01644174, -0.01642626, 0.03336354, 0.042929344, -0.0050005205, 0.042179175, -0.02174366, 0.017511554, -0.0027678425, -0.06187164, -0.016291354, 0.04770089, 0.05462062, -0.008565581, 0.031124836, 0.002921381, -0.056762602, -0.0189939, 0.008180472, -0.026821109, 0.009283311, 0.022315243, -0.017404808, -0.04087464, 0.00019579819, -0.027817497, -0.03448643, -0.025544586, 0.017464077, 0.0069290153, -0.04095249, -0.064061396, 0.012482871, -0.01537694, -0.0029523063, 0.052212063, 0.00859153, -0.038967967, -0.00042064177, -0.007055812, -0.0064421734, -0.014256408, 0.013208121, 0.015221541, 0.059173517, 0.025045656, 0.033907294, 0.04013155, -0.055385526, -0.025046835, -0.036843084, -0.036347695, 0.009483238, 0.050175644, -0.025628332, -0.017923791, -0.020092316, -0.0033515696, 0.024899395, -0.012593598, -0.05008659, 0.0037596792, -0.018841447, 0.019998396, -0.009171848, -0.040669482, -0.028883772, -0.023761762, -0.0008191677, 0.0154418135, -0.00036623699, -0.0119806975, -0.047024593, -0.0051638824, 0.017114649, -0.042777188, 0.002174532, 0.022818746, -0.0025500944, 0.071940504, -0.013699386, -0.05061442, -0.00950211, -0.03289056, 0.058437504, -0.026987197, 0.06306707, -0.026409166, 0.0127268825, 0.015070563, -0.0002972358, 0.0044939225, -0.033648983, -0.013492677, -0.057464115, 0.0038522703, -0.029081928, -0.009454929, 0.0004765209, 0.009631855, -0.004017991, -0.014967356, -0.039822523, 0.0014210113, 0.01306894, -0.018589033, 0.031794798, -0.024472415, -0.008484195, 0.031105962, 0.022298584, -0.038711425, -0.032817427, 0.017757481, -0.006149361, 0.004633104, 0.06331005, 0.071704604, -0.0071855574, 0.020457925, 0.045655183, -0.062032938, -0.02843261, -0.001883673, -0.026437087, 0.016971119, 0.031855542, -0.02115859, 0.023027519, -0.010477562, -0.005053009, -0.038414188, 0.001960341, -0.018892165, -0.0071949936, -0.03413479, 0.036986988, 0.043563917, -0.013537205, 0.008923632, 0.009566208, -0.017943842, 0.033844776, -0.0348969, 0.019848745, 0.027685393, 0.05094056, -0.0023938098, 0.011770302, 0.022047052, -0.046085708, -0.023910196, -0.07650755, 0.027719598, -0.01208523, 0.07241938, -0.018805178, 0.007159019, 0.04040048, 0.030405335, 0.049866024, 0.035290856, 0.03175941, 0.037128527, -0.03906528, 0.04495986, 0.076290525, -0.048128612, 0.014257883, 0.021344362, -0.058492053, -0.027306769, 0.027343336, -0.019803114, 0.022835258, -0.003439443, 0.016905878, 0.0911759, -0.017595889, -0.032585066, -0.049239706, 0.0012974578, -0.030986832, -0.031192105, 0.03519067, -0.0103282435, 0.038304348, -0.031967003, 0.031686284, 0.007829568, -0.030440426, -0.030788086, 0.017893124, -0.047185007, 0.027697187, -0.013679924, 0.033168923, 0.04392809, -0.037773717, -0.017464962, 0.0312593, -0.01713529, 0.005567274, -0.034666304, 0.027546799, 0.013245866, 0.032697707, 0.008636352, -0.039586622, -0.0015785124, -0.015235694, 0.045678776, 0.024192872, 0.010838492, -0.02764293, 0.016471522, -0.025268583, -0.047878552, -0.05367229, 0.043953154, 0.012384824, -0.011595735, 0.045028865, 0.055564225, -0.0065627783, 0.055502888, 0.048213538, -0.06776504, -0.018353133, 0.047902144, -0.013970083, 0.01674655, 0.0056444486, 0.020411666, -0.086443715, -0.01736382, -0.060450923, -0.039312974, 0.0009223746, 0.0023882072, 0.036177844, 0.031123066, -0.011241882, 0.034318943, 0.006836423, -0.03759797, 0.0058488073, 0.035621118, -5.72061e-05, -0.015004511, -0.0068045766, -0.011102701, -0.011026476, -0.07045904, 0.032480087, 0.027799215, -0.0070062727, -0.034016985, -0.0018797658, -0.05320698, -0.010775387, 0.02541838, -0.0052281655, 0.041002028, 0.08298069, -0.031048167, -0.056158695, -0.029749531, -0.008508964, 0.048142765, -0.047666833, 0.031202683, 0.010510588, 0.027581597, 0.0019084426, -0.05981045, -0.03547132, 0.028843079, 0.0050034695, -0.012226772, -0.003474828, 0.037088424, 0.034229297, -0.012657882, 0.026855018, 0.028442046, 0.038185365, 0.015740523, -0.04833738, -0.0073489193, -0.0050364956, 0.025293352, -0.0687346, 0.0011836354, -0.047140185, 0.0009831192, 0.004401921, 0.04322245, -0.029572602, 0.008845124, 0.039857905, -0.042570774, -0.05045224, -0.0012927399, -0.014724673, -0.025423393, 0.05214837, 0.0047327727, -0.026751224, -0.04187899, 0.043357506, 0.01955623, -0.019133376, 0.0783924, -0.025046835, 0.022647718, -0.01388162, 0.0382868, 0.023380192, -0.019433118, 0.007384305, -0.010741182, 0.027949601, -0.01634679, -0.0060166665, 0.02254805, -0.014180035, 0.00041164798, -0.036180202, 0.036171872, 0.021068359, 0.043349247, 0.025503304, 0.024208205, 0.038520936, -0.028702127, 0.026437474, 0.020824125, -0.0063386713, 0.003956067, 0.04980115, 0.024263127, 0.0017388884, 0.034436893, 0.010779517, 0.042952232, 0.01685044, 0.009331376, 0.03286107, 0.00076594244, -0.04526948, 0.0025155938, -0.044948656, -0.04972802, 0.011125553, -0.010058837, 0.02448067, 0.020042187, -0.017993383, -0.04178758, 0.03126166, 0.015450954, -0.03983417, -0.042735904, 0.029392729, 0.016404586, 0.014348705, 0.019872338, 0.052761715, -0.046428353, 0.022042628, -0.011716045, -0.019376649, -0.035582192, -0.020573555, -0.063658, 0.042802546, 4.128275e-06, 0.023730505, -0.001617694, 0.07161024, 0.053813834, -0.002239884, -0.005191011, -0.014699019, -0.06869214, -0.02558351, -0.015729317, -0.04650089, 0.0012927399, 0.020683838, -0.012745312, -0.00070018496, -0.022260433, 0.030129036, 0.008612761, -0.05074004, -0.00059270236, -0.008124464, -0.02223607, -0.029098444, -0.05152559, 0.022029657, 0.052997615, -0.046767462, -0.034173712, -0.025787566, -0.06081539, 0.0024589775, 0.04243631, -0.03987442, -0.004477409, 0.0034388532, 0.024927706, -0.052252166, -0.00024054575, 0.036288716, 0.005275493, -0.031258117, -0.0016660539, -0.030675739, -0.009290978, -0.0047298237, 0.047929276, 0.036102355, 0.011667685, 0.02854879, 0.015207975, 0.01038497, 0.0010008118, 0.019546794, 0.020065187, 0.0183838, -0.022126375, -0.010442767, -0.006264363, -0.013996032, 0.0142484475, 0.045582056, 0.020764044, 0.06961923, -0.012987258, -0.0035314444, -0.000907041, 0.020889072, -0.03975175, -0.004154667, 0.06460736, 0.0371875, -0.0643256, 0.017204292, 0.0056005954, -0.05009603, 0.021176873, 0.029584398, -0.028179605, 0.0023439755, -0.03925459, -0.050256442, 0.013469972, -0.04119871, 0.029295126, 0.053391572, 0.01129673, -0.046124037, -0.033186615, -0.037740692, -0.00653447, 0.029360441, -0.034196272, 0.026718196, 0.01587189, -0.020205548, 0.032825686, -0.040860564, -0.0026824942, -0.021272412, -0.033725057, -0.06695826, -0.045415744, 0.009256773, 0.0092426175, 0.011645865, 0.04724634, 0.018982546, 0.03452182, 0.009307049, -0.021549154, 0.008126067, -0.012327029, 0.01189415, -0.03743284, 0.0025819412, -0.003737858, 0.017439604, -0.010515306, -0.040732585, 0.0014932561, 0.007841953, -0.07598857, -0.034892183, 0.07527615, 0.013346124, -0.016181659, 0.022583285, 0.027375184, 0.025757154, -0.015997656, 0.0026344294, -0.0052281655, 0.026193315, 0.021077795, 0.024569133, -0.009350543, -0.06767304, -0.05240786, 0.027558004, -0.020509271, -0.03694688, -0.06938097, -0.024136256, 0.0076017026, -0.010910442, -0.015235326, -0.058286525, -0.018499391, -0.012785121, -0.028398404, 0.041061003, -0.039931037, -0.031223325, 0.017919073, 0.021671673, 0.007976491, 0.029454652, 0.030111343, 0.001033838, 0.03953885, -0.036341794, 0.051971443, 0.02917216, -0.02926829, 0.004214379, -0.04663123, 0.011556812, -0.0027458926, -3.656472e-05, -0.041490346, -0.07305307, -0.00044865505, 0.013270046, -0.007893262, 0.006003692, 0.005272987, 0.04197984, 0.031220965, 0.0098630395, -0.009772217, 0.01756522, -0.01306894, -0.025877208, -0.014277935, -0.003908297, -0.043915413, -0.014142881, -0.031688638, 0.012604674, 0.008863407, -0.0075087426, 0.025779309, 0.032016546, -0.008273063, -0.014753276, -0.01989298, 0.07735724, 0.027874114, 0.005347885, 0.05175545, 0.009566982, 0.07317663, -0.030112818, -0.053307824, 0.07577154, 0.019905362, -0.04666429, -0.026222803, 0.017163008, 0.030480161, 0.020848967, 0.04389654, -0.0019158146, 0.03608702, 0.0043046116, 0.0020156302, 0.014733224, -0.034797527, 0.009813168, 0.031485766, 0.022858849, 0.014098023, -0.06311307, 0.019492537, -0.0074426904, 0.00010025811, 0.01313794, -0.003067898, -0.04266513, 0.033264462, -0.034755357, 0.044795323, 0.026580784, 0.014851174, -0.019091504, 0.057022095, 0.015515237, -0.024520773, -0.012960426, 0.052161347, -0.024448823, 0.021573922, -0.032649346, -0.0021727995, 0.007360125, -0.053842146, -0.009916117, 0.016685897, 0.039428566, -0.02881654, -0.022152472, 0.0103955865, 0.013832081, 0.039163176, 0.040225912, -0.0022504996, 0.038756248, -0.055040523, -0.06363677, 0.0048306715, 0.007509775, -0.00038039108, -0.008272474, 0.013116709, -0.028123505, 0.028337661, 0.028713332, 0.05256356, 0.020943329, 0.041153006, 0.032086134, 0.011156221, 0.025040053, -0.0019284942, -0.057592385, 0.00543797, -0.007866428, -0.03304212, -0.090508305, -0.026200984, 0.0076269885, -0.0041108406, 0.0041462625, 0.02707146, -0.0109835705, 0.022026116, -0.018727034, -0.011198241, -0.0014189472, 0.0042108404, -0.012514572, -0.034468148, -0.0053411033, 0.08194272, -0.053809114, -0.03157187, -0.028138619, -0.0009506091, 0.0034338403, -0.037882235, -0.025832385, -0.003114194, 0.032210644, 0.0051944023, -0.010781875, -0.05203278, -0.043822233, 0.023399653, 0.029025313, -0.007270482, -0.033952117, -0.0014154086, 0.013948851, 0.01829622, -0.037140325, -0.02412881, -0.021216976, -0.008629275, -0.014278229, -0.009400672, 0.042628568, 0.03135366, -0.024934782, -0.020735737, -0.04437542, 0.02814068, -0.056023054, -0.008327321, 0.0007572436, -0.001735055, -0.05794919, -0.012936834, 0.011036058, -0.011278632, 0.012238567, -0.04982474, 0.02659656, 0.0011184677, -0.0037212449, 0.0050176233, -0.0026438653, -0.038776297, -0.05563971, 0.01852534, -0.014118701, -0.07863538, -0.040051345, -0.006418288, -0.037710026, -0.0332621, -0.0024486568, 0.037450533, -0.032014184, -0.031633202, 0.0417923, -0.027481338, 0.010124595, 0.016181253, -0.064121544, 0.01651192, -0.0141467145, -0.035222445, 0.018242847, -0.045911137, 0.05837145, 0.024669688, 0.046684895, -0.026343113, -0.021820884, -0.010426401, -0.009778557, -0.022755051, 0.018546497, 0.0011957254, -0.009320466, -0.0061685275, 0.022490844, -0.036744006, -0.070069805, -0.032307588, 0.007699823, -0.014888919, 0.013817042, 0.03473118, 0.014438937, 0.004539923, 0.006593445, 0.028394867, 0.021842113, 0.012825372, 0.032247137, 0.007736387, 0.025259737, -0.006788948, 0.012623676, 0.043905973, -0.0068175513, -0.008922972, -0.005349655, 0.033188973, 0.0066145286, 0.022810489, 0.05479047, 0.026110455, -0.019136325, -0.006633843, -0.0012576495, 0.017815277, -0.044646703, -0.016410483, 0.026970904, 0.0018919295, 0.0017881328, 0.0065427264, -0.009275644, -0.0019037246, -0.058606762, -0.032750934, -0.042199817, -0.034289453, -0.013771926, -0.009588104, 0.010404432, 0.015799498, -0.007216759, -0.0018828621, 0.051795106, 0.016105138, 0.014993895, 0.041886657, -0.028099399, 0.038381163, -0.005498512, -0.009293466, 0.021654572, -0.018175026, -0.0010073729, 0.015274618, -0.042090714, 0.016696513, 0.01043628, -0.019561537, 0.00054965034, 0.03490663, -0.08145205, 0.029853325, -0.012740153, -0.0038448984, 0.024516648, -0.02144978, 0.055389658, 0.026588157, -0.016592128, -0.040218834, -0.017870713, -0.037655767, -0.0057453797, 0.04702363, -0.00615113, -0.029024133, -0.044964425, -0.0064311246, 0.00092609745, -0.054804623, -0.05054306, 0.07574559, -0.023693498, 0.015930424, 0.07328042, -0.021714726, 0.045170404, 0.02108428, -0.021540603, -0.025879567, -0.012169565, -0.022593755, -0.038739733, -0.0051472955, -0.0044361264, 0.06488351, 0.03885238, 0.01292504, 0.0028443814, -0.07799373, 0.004035389, -0.01833426, -0.06242896, -0.05268387, -0.024520773, -0.0058086677, -0.0024356823, 0.015098281, -0.015535879, -0.036891446, 0.047253415, 0.0069142706, -0.0018353132, -0.0054422463, 0.0012880218, -0.014979742, 0.018241078, 0.0202026, 0.06148535, 0.0152777145, 0.022781886, -0.027793318, 0.0060878787, -0.037878692, 0.019725488, 0.009005537, 0.016161608, -0.031842194, 0.032590963, -0.0073610093, 0.038074195, -0.005378465, 0.05239076, -0.030938473, 0.027109792, -0.0015422057, -0.023197664, -0.026383216, 0.019684501, -0.00044673833, 0.023720331, 0.0051134587, -0.00015097692, 0.02820666, -0.017133227, 0.09362928, -0.002134908, -0.004216738, 0.015556521, -0.008461489, 0.0328363, 0.021068359, -0.014116342, -0.013496512, -0.0075500254, -0.020401936, -0.014778045, 0.0033649495, -0.042500593, 0.004872839, 0.022916645, 0.07617021, 0.0009778114, -0.061013546, -0.05725151, 0.047286443, -0.009957399, 0.010353714, 0.00088805833, 0.003920682, -0.008589761, -0.013662232, -0.0020398102, 0.0014348704, 0.0013228173, -0.060685646, -0.008045418, 0.0053195776, 0.03873266, 0.019103298, 0.041925583, -0.0018966475, -0.041216698, -0.012478892, 0.008453233, 0.03745407, 0.042334873, 0.028636223, 0.027404672, 0.0127257025, 0.02501027, -0.0050701112, -0.0019444176, -0.036804162, 0.06029169, 0.042753596, 0.013360573, -0.041346446, 0.024809754, 0.01852121, -0.03924928, 0.006023596, -0.00943016, 6.4283144e-05, 0.04488968, 0.023257522, -0.023574227, 0.008658762, 0.004932699], [-0.014590755, -0.090859056, -0.0329771, -0.05049316, 0.042914838, 0.01825938, -0.00396135, -0.0072639873, 0.031368356, 0.037261754, 0.025164943, -0.0022484388, -0.049591865, -0.034355037, -0.03337259, 0.010363479, 0.016851405, -0.039929885, 0.023744758, 0.054190744, 0.006614352, 0.019238047, -0.029249588, 0.004660475, -0.0238553, 0.033892125, 0.0023648695, 0.024081895, -0.0034439755, 0.016886631, -0.03083672, -0.028150868, 0.013146257, -0.0075132735, 0.019490143, 0.007839712, 0.007107522, 0.012006098, -0.04629657, -0.038697176, -0.05152996, 0.03788373, 0.004671497, 0.017315831, 0.0014743223, 0.036182813, 0.0039492473, 0.022161081, -0.017212205, -0.046358813, 0.028805474, -0.007355133, -0.02890121, 0.034661483, -0.0047646416, 0.032679733, 0.02810246, 0.0050406987, 0.019369768, -0.013058838, -0.013333518, 0.003167783, -0.07311705, -0.00919085, 0.031175584, 0.03896559, -0.041464288, 0.025569398, -0.00081885187, -0.052679684, -0.0111789, 0.030783122, 0.01253228, -0.004777446, 0.025308631, 0.0043895235, -0.07318534, -0.015375569, -0.0050308923, -0.003927636, -0.004231923, 0.01928986, -0.00026581888, -0.029832821, -0.042617466, 0.019668868, -0.0080277305, -0.020748999, 0.044371437, 0.011382667, -0.058744676, -0.010974214, 0.024086216, -0.006025228, -0.009665434, 0.012854395, 0.029150175, 0.0506949, 0.023092961, 0.013595231, 0.052496422, -0.028535549, -0.0069573233, -0.049252994, -0.014196889, 0.024599701, 0.014501177, -0.024894046, -0.019566, 0.013430661, -0.00286771, 0.0037586356, 0.0049159206, -0.064690374, 0.013833388, -0.0043321997, 0.024280718, -0.00054460455, -0.025771033, -0.012403882, -0.0053678127, 0.020757077, 0.009945733, 0.0026370096, -0.01698669, -0.022030981, -0.006528339, 0.0060288073, -0.06409736, -0.009263464, 0.011644163, -0.009496542, 0.045957707, -0.013009566, -0.034800228, 0.016203823, -0.01662427, 0.05354759, -0.0036056277, 0.03509501, -0.010715743, 0.011354573, 0.020230114, -0.004825153, 0.0062980163, -0.03564134, -0.018454313, -0.043161854, -0.009722298, -0.014135946, -0.009984417, -0.0014555204, 0.00067783816, -0.006306607, 0.008794932, -0.035865232, 0.005980277, 0.0037007174, -0.0334197, 0.026941879, 0.0032857805, 0.003680835, 0.018951373, 0.017654262, -0.019916102, -0.064820044, 0.00042012348, -0.0072004497, -0.010342299, 0.014613555, 0.06614265, -0.0010238349, 0.012160458, 0.03132816, -0.07517617, 0.0043231226, -0.00094571005, -0.01612051, 0.02957481, 0.030210424, -0.0056839855, 0.020301647, -0.013870559, -0.016765391, -0.02340114, 0.035956003, -0.020313317, 0.01281809, 0.0153824845, 0.033494044, 0.03414411, -0.013426662, 0.023117166, -0.0104666455, -0.0273063, 0.023346515, -0.037602782, -0.0037720348, 0.011103503, 0.049199402, -0.011320858, 0.0061272336, 0.03606838, -0.019090766, -0.04003794, -0.053672075, 0.044580635, -0.013609926, 0.056202322, -0.019140689, -0.010078858, 0.021344932, 0.036925483, 0.039566815, 0.025374249, 0.032177486, 0.01622792, -0.021633983, 0.044186447, 0.060272377, -0.019353775, 0.0014551288, 0.018347122, -0.03998521, -0.053396314, 0.03229937, -0.007397113, 0.021702059, -0.009316952, -0.013020316, 0.103678875, -0.0057810205, -0.025449457, -0.044811446, -0.021712432, -0.021058692, -0.035082042, 0.033050578, -0.0375038, 0.03777092, -0.018370463, 0.038793564, 0.02024978, -0.0018992003, -0.02236466, 0.0021118554, -0.024152778, 0.023226088, -0.025829816, 0.028216673, 0.0363087, 0.009000886, -0.03963597, 0.025313307, -0.012551189, 0.0035239372, -0.016319118, 0.0002501507, 0.030740278, 0.033315968, 0.024532272, -0.03832287, -0.0028395075, -0.04533406, 0.023620278, 0.022010019, 0.0067409943, -0.01942747, 0.00084845925, -0.053079817, -0.054776844, -0.06054706, 0.056012142, -0.0013274195, -0.033723988, 0.027956475, 0.036516167, 0.0021086135, 0.04994283, 0.041519616, -0.07129997, -0.020869592, 0.026390411, -0.01540669, 0.0077562924, 0.0055783065, 0.03656998, -0.067306206, 0.008792878, -0.043704946, -0.030937726, -0.0014868568, 0.010042767, 0.006094384, 0.046835124, -0.015961235, 0.03380352, 0.007753699, -0.07867547, -0.0019692208, 0.0043136138, -0.0025254954, 0.016868908, 0.014867703, -0.022761876, -0.032261334, -0.048953895, 0.042660687, 0.03993248, -0.010828554, -0.039382093, -0.015209595, -0.062167905, 0.008220935, 0.024949802, -0.00477569, 0.04415792, 0.07537089, -0.034419008, -0.03970599, -0.033129245, 0.004147639, 0.020235084, -0.047684018, 0.04926164, 0.042904466, 0.012785239, 0.0050579067, -0.06133479, -0.009894946, 0.041739184, 0.029170057, -0.020575676, -0.02237201, 0.04313268, 0.021938056, -0.02960747, 0.034312464, 0.010361318, 0.028617239, -0.010041471, -0.066401556, 0.00278267, -0.013480691, 0.045254044, -0.07460909, 0.020648124, -0.05555485, 0.0007677412, 0.0043340498, 0.037569933, -0.01793413, -0.00017807704, 0.037690956, -0.025015503, -0.0120166885, -0.01605935, -0.013763799, -0.023015592, 0.038494896, 0.014628088, -0.026640672, -0.061823852, 0.048517346, 0.016544687, -0.017823156, 0.08372733, -0.0145310005, 0.036688194, -0.007811509, 0.05191378, 0.026310127, -0.006608301, 0.016146228, 0.005045372, 0.07722838, -0.036204156, -0.008907094, 0.023656124, -0.014196025, 0.011963795, -0.052978784, 0.055343058, 0.028132714, 0.04727081, 0.04861676, 0.03819666, 0.030293845, -0.043500938, 0.03032064, 0.001873483, 0.031996813, 0.0017271745, 0.06560496, 0.040968094, 0.001006654, 0.034843884, 0.026772067, 0.04194298, -0.0026711556, 0.0029944603, 0.04666915, -0.013471506, -0.01827051, 0.011191191, -0.044794157, -0.011961309, -0.010077345, -0.0049602236, 0.02481884, 0.046721883, 0.0003129315, -0.02271001, 0.02670637, 0.041403778, -0.04146688, -0.036272336, 0.039610904, 0.04171844, 0.023348838, 0.019335864, 0.06217309, -0.050269593, 0.022835355, 0.0006751367, -0.024919115, 0.0076783835, -0.028379515, -0.059017844, 0.016886199, 0.03076324, 0.03802496, -0.0006963698, 0.080321394, 0.024109555, -0.036841203, 0.0097410735, -0.017807703, -0.07239523, -0.0054192473, -0.029790731, -0.050324053, 0.016211063, 0.009673214, -0.013906217, -0.002819841, -0.021223154, 0.021104723, 0.01107276, -0.066066585, 0.018008688, -0.022568455, -0.013399649, -0.0030709647, -0.054948002, 0.021695899, 0.06559632, -0.05524732, -0.028224345, -0.009075445, -0.0440369, -0.014840257, 0.021208458, -0.03933082, 0.0068182545, -0.0061935796, 0.04145737, -0.04106729, -0.0037443722, 0.042607956, 0.017742438, -0.020555794, -0.021068417, -0.02839097, -0.01704785, -0.017192215, 0.037812844, 0.019371497, 0.012480737, 2.593355e-05, 0.00647269, 0.026005732, 0.012753904, 0.000922586, 0.03249243, 0.019949382, -0.032397054, 0.009705631, -0.038903784, -0.02030813, 0.0037562586, 0.029007971, 0.022565214, 0.06342309, -0.037455823, -0.039042097, 0.0030910494, 0.035954703, -0.028516531, 0.021050045, 0.05233304, 0.033283982, -0.0659957, 0.002290797, 0.005025922, -0.06509667, 0.04466276, 0.028261518, -0.0060031847, 0.013656175, -0.037845477, -0.07156277, 0.011512767, -0.046520468, 0.015144329, 0.039352648, 0.010199017, -0.052115194, -0.02521519, -0.034193385, -0.025684586, 0.014435478, -0.0058830255, 0.03347762, -0.00015084681, -0.006561485, 0.02924267, -0.024523899, 0.002383239, -0.013093903, -0.02451412, -0.037572525, -0.034199435, 0.019386625, -0.009276646, -0.005777779, 0.01926949, 0.011987351, 0.012065584, 0.007620465, -0.028130336, 0.033721883, -0.0011186004, 0.0057426603, -0.052185215, 0.010432203, -0.00923229, 0.038456913, -0.0027727287, -0.012121787, 0.0011281094, -0.028942706, -0.09558761, -0.05088249, 0.061854973, -0.008367081, -0.0363798, 0.0144398, 0.01352694, 0.011251702, -0.03305231, -0.0009578124, -0.0009869876, 0.03097892, 0.0023314261, 0.022818066, 0.0072994297, -0.08699495, -0.052506145, 0.026334006, -0.011156613, -0.05699157, -0.06091272, -0.024763081, 0.018382644, -0.022558164, 0.02561716, -0.033538993, -0.02372617, -0.014384043, -0.018939488, 0.0038649635, -0.027963283, -0.022751503, 0.0051627215, 0.016026935, -0.011990809, 0.008543376, 0.05257422, -0.004564737, 0.045965217, -0.021467792, 0.026131941, 0.043806955, -0.005137004, -0.0035861777, -0.04536707, 0.036119815, 0.018562155, -0.035715684, -0.035488334, -0.06148153, 0.006622564, -0.021932868, 0.01705147, 0.0016874097, -0.02492776, 0.05607741, 0.0028733294, 0.027605722, -0.0077441903, 0.015627962, -0.021516202, -0.012208003, 0.0116523765, 0.023872698, -0.03453657, -0.007969163, -0.041825626, -0.006650659, 0.0277677, -0.005158886, 0.023340195, 0.054592717, -0.001889259, 0.012446657, -0.009540953, 0.068046175, 0.014037398, -0.010146285, 0.06493761, -0.0032002002, 0.055853948, -0.018637577, -0.06864783, 0.07249075, -0.020946095, -0.053972904, -0.009221214, 0.014545696, 0.010723631, 0.043008197, -0.0036181624, -0.0016996741, 0.029208092, 0.007923564, 0.008564339, 0.0015305117, -0.03950047, 0.005183684, 0.025842998, 0.019830251, -0.015738208, -0.06669418, 0.024769349, -0.001544559, 0.013620949, -0.017952284, 0.007612685, -0.0511898, 0.055257477, -0.055437285, 0.0347475, 0.023017673, 0.016698504, -0.03714808, 0.055228084, 0.014394849, -0.018752117, -0.021254381, 0.036848117, 0.0024157101, 0.002760194, -0.023722716, -0.005471979, 0.0018719701, -0.048277892, -0.00801217, 0.015564884, 0.04218524, -0.018296983, -0.01550956, 0.02235245, 0.03550303, 0.030375967, 0.010012943, 0.0020372155, 0.050172772, -0.050988816, -0.049154665, -0.016012238, 0.027783478, 0.020412946, -0.020379016, -7.5207296e-05, -0.009216135, 0.01971771, 0.0380255, 0.02387464, 0.03837128, 0.05110249, 0.032945115, 0.012003776, 0.030082053, 0.02919426, -0.03192204, 0.015493135, 0.0020268944, -0.04950369, -0.04543904, -0.02519185, 0.017153313, -0.0071093044, 0.036893066, 0.038476743, -0.002939568, 0.009830976, -0.034763925, 0.0040340717, 0.0010559277, -0.013687836, 0.002180147, -0.044007506, -0.034228828, 0.062883675, -0.028629342, -0.045006808, -0.04691552, 0.006554272, -0.014839177, -0.036467973, -0.028523445, -0.01798651, 0.03985122, -0.0070694857, -0.020451196, -0.015530738, -0.064775094, 0.02208285, -0.0061280974, 0.0040278044, -0.0309612, -0.00020568547, -0.00133212, 0.00014436342, -0.062377967, -0.013034202, -0.004281629, -0.009628154, -0.017494759, -0.012044189, 0.05369282, 0.018721322, 0.006440813, -0.018310059, -0.015114937, 0.047058802, -0.06548567, 0.0028332402, 0.025270514, -0.023377366, -0.042178866, -0.0030324424, -0.0017578624, -0.016912835, 0.015155566, -0.03558213, 0.04401529, -0.0059327316, 0.016586235, 0.0004030506, 0.010943958, -0.024354197, -0.025854886, 0.024831807, -0.008012494, -0.079301335, -0.03249301, 0.018453449, -0.047728103, -0.05347422, 0.016067185, 0.021941079, -0.035442084, -0.016641343, 0.05945958, -0.02067336, -0.010896062, -0.001597993, -0.053611778, 0.012397966, -0.027954638, -0.03624689, 0.011488562, -0.03019465, 0.07067411, 0.024115393, 0.034168314, -0.04269786, -0.018641036, 0.008433591, -0.013622029, 0.03295484, 0.0058851866, -0.003915534, 0.0052489503, 0.0069242576, 0.011686522, -0.04254831, -0.054171726, -0.025031494, 0.012685828, -0.009578341, 0.03195813, 0.041147035, 0.012340913, -0.0015369949, -0.010985236, 0.041179016, -0.007671144, -0.0038507, 0.014501609, -0.0012595061, 0.03936713, 0.010621086, 0.0050366195, 0.01567683, -0.009419065, -0.013006539, 0.020425048, 0.05116084, 0.0049619526, 0.022904512, 0.053137194, 0.034011852, -0.0020329743, -0.013255313, 0.011357274, -0.011056607, -0.04814909, -0.010331494, 0.04139254, -0.001789847, -0.011431509, 0.028804393, 0.021795636, 0.02459019, -0.071654394, -0.026624678, -0.025605056, -0.053540677, -0.013502735, 0.00016813586, 0.0012128256, 0.008172526, 0.0006725434, -0.008376537, 0.054572836, 0.020957764, 0.023648804, 0.032588962, -0.033500094, 0.027748032, -0.046029456, 0.00064833876, 0.011748978, 0.0071939663, 0.020579245, 0.030371644, -0.04333669, 0.020431748, 0.009362443, -0.046620525, 0.029927317, 0.033556715, -0.06773843, 0.0001680278, 0.0085762255, 0.012597194, 0.015996246, -0.024708621, 0.05509496, 0.040683255, -0.010117542, -0.0645728, -0.014413002, -0.01787081, -0.009581583, 0.054835193, 0.011063577, -0.0077813617, -0.044360198, -0.015117963, 0.046842907, -0.0379638, -0.033774126, 0.062467005, -0.012831975, 0.045918807, 0.046576653, -0.02156461, 0.06966789, 0.008195002, -0.035146013, -0.029133748, -0.020714853, -0.016526911, -0.03125382, 0.014975329, -0.011949207, 0.06823463, 0.02766548, 0.056567986, 0.01302599, -0.09226812, -0.013676706, -0.028164782, -0.039241783, -0.052079756, -0.027826698, -0.0053137843, 0.0036064924, 0.05475099, -0.012996382, -0.01303304, 0.04858891, 0.012430166, -0.016026935, -0.013938418, -0.0046995915, -0.03761748, 0.04001417, 0.0031934734, 0.051664818, 0.02842425, 0.012613646, -0.033080835, 0.0024770861, -0.024653297, 0.028739993, 0.0092237, 0.028548514, -0.03714419, 0.019152358, 0.00218944, 0.017654372, 0.0067053353, 0.045696646, -0.038230374, 0.05007077, -0.0018836401, -0.012470796, -0.022276055, 0.02156807, -0.032265335, 0.03234389, 0.016405564, 0.031158296, 0.027533649, -0.027699409, 0.103423, 0.0031759955, 0.019838301, 0.017330527, 0.0051599117, 0.04764252, 0.017863894, -0.026585348, -0.034587573, 0.003491088, -0.012312168, -0.016316094, 0.0026636997, -0.022276055, 0.0022026228, 0.008539054, 0.051946625, -0.029437171, -0.067071505, -0.049023915, 0.045306772, -0.029363692, -0.021221207, -0.0060036164, -0.0069562425, -0.020076025, -0.0019434764, -0.0025881683, -0.025122693, -0.0037582037, -0.05151808, 0.023495795, -0.008409818, 0.030034507, 0.024061147, 0.042199936, 0.017932184, -0.03211438, -0.0025235505, -0.0043775835, 0.008756896, 0.05845941, 0.025639635, 0.018589169, 0.037493862, 0.010407242, 0.00013399, -0.015175449, -0.015028924, 0.052253075, 0.052116927, 0.021774674, -0.033177655, 0.01387272, 0.034907855, -0.030369915, 0.012095408, -0.016542794, -0.009208787, 0.03290103, 0.036715854, -0.03351306, 0.018510072, 0.012917176], [-0.024671167, -0.0985355, -0.022313068, -0.03875637, 0.03225264, 0.017032515, 0.009991779, 0.010838308, 0.028838968, 0.032114863, 0.012470457, 0.008618604, -0.0633629, -0.038650967, -0.03698365, 0.032942127, 0.023687331, -0.044968393, 0.03943177, 0.049445923, -0.0068045533, 0.010943555, -0.022418313, 0.017500738, -0.0017113937, 0.048739966, 0.017245494, 0.021268891, 0.00095395104, 0.016472306, -0.00921999, -0.04341912, 0.012049989, 0.012397116, 0.020018365, -0.0002508925, 0.011519924, 0.0037834842, -0.033105385, -0.042348836, -0.058208726, 0.023489527, -0.027988087, 0.018437183, -0.0017353228, 0.054290578, 0.015482565, 0.00945063, -0.03404017, -0.048426606, 0.016295997, -0.02326443, -0.04416537, 0.03017454, 0.005787724, 0.046178315, 0.020684028, -0.006559669, 0.016637221, -0.03189391, -0.019005265, -0.0059978026, -0.04576749, 0.00526895, 0.035255063, 0.027195217, -0.014253439, 0.025628746, -0.01798802, -0.051728614, -0.019125013, 0.02297842, 0.01401559, -0.014667371, 0.013809655, 0.010932316, -0.08472087, -0.0023800605, -0.031491052, 0.0071592424, 0.014404257, 0.023272302, 0.0055996063, -0.045880806, -0.05222128, 0.010044817, -0.019759806, -0.010198128, 0.03520534, 0.022899795, -0.053270843, -0.022259202, 0.038708307, -0.008009914, 0.00056986895, -0.0018256523, 0.01316989, 0.06326884, 0.02367713, 0.017041631, 0.035771765, -0.043300197, -0.0006140755, -0.026950954, -0.0029234884, 0.010764968, 0.007077614, -0.017696314, -0.014347489, -0.0031060122, -0.017748524, 0.017529173, 0.023440946, -0.06415887, -0.00696781, -0.022065904, 0.02690869, 0.0076635135, -0.030863717, 0.00895216, 0.009458853, 0.02194367, 0.026129702, 0.023750054, -0.028612936, -0.013918217, 0.013869737, -0.013183977, -0.06652858, -0.014890413, 0.03247432, -0.012021709, 0.038725708, -0.023947703, -0.01959158, 0.008778545, 0.011846851, 0.04216403, -0.019129157, 0.033236112, -0.022448147, 0.0014228983, 0.010054969, -0.0005924254, 0.0053497497, -0.027853006, -0.006634564, -0.031540778, -0.015443875, -0.012424049, -0.0057947678, -0.0012596421, 0.0050609433, -0.007756018, 0.011487604, -0.035996757, 0.0016851856, 0.017015526, -0.021579763, 0.014750295, -0.00995573, -0.012089664, 0.029343031, 0.0056509865, -0.017425325, -0.071116745, 0.009769685, 0.00027513233, -0.010005375, 0.018455414, 0.06543177, 0.005103622, 0.012835089, 0.019422522, -0.06568992, -0.010991103, 0.0007868619, -0.009834324, 0.029302424, 0.04315559, -0.0051162858, 0.0061761825, -0.017711231, -0.0107195955, -0.018212602, 0.04084224, -0.010592595, -0.009821272, -0.0048565627, 0.0055852593, 0.044970468, -0.01722602, 0.025530282, -0.023536246, -0.034761976, 0.0066350815, -0.009455603, -0.004784154, 0.004683258, 0.06345779, 0.005303782, 0.0109353205, 0.032654565, -0.034193482, -0.024776, -0.040231477, 0.045070324, -0.02015096, 0.057227526, -0.017105857, -0.011751134, 0.036379207, 0.032319814, 0.048327163, 0.042781424, 0.029087787, 0.053568352, -0.03739024, 0.045407042, 0.053901076, -0.025906777, 0.0016871538, 0.030495768, -0.031239124, -0.03503421, 0.022106718, -0.01397229, 0.012256105, -0.009548833, -0.0057742572, 0.08174414, -0.0037291779, -0.023895908, -0.053899422, 0.00067332847, -0.015110422, -0.027800385, 0.050570488, -0.043185834, 0.03122338, -0.028845806, 0.019802071, 0.03441102, -0.011604038, -0.009372317, 0.0050700596, -0.039944742, 0.0050700596, -0.019971542, 0.023505585, 0.065658845, -0.024508897, -0.040868755, 0.0061832266, -0.010894661, 0.022434061, 0.016328841, -0.015682131, -0.00023835826, 0.06144816, 0.017083481, -0.03544981, 0.013768116, -0.06529006, 0.023163326, 0.0234483, 0.019353738, -0.037356675, -0.004645552, -0.057287194, -0.027854664, -0.068498425, 0.050075747, 0.0032626388, -0.02768022, 0.02218959, 0.03147945, 0.006035509, 0.05425411, 0.032458987, -0.06929689, -0.014278706, 0.014458952, -0.022149399, 0.024243137, -0.0064987587, 0.020160075, -0.038455546, 0.0031497267, -0.045414243, 0.0050572143, 0.0077459705, 0.011647442, 0.021452038, 0.060413096, -0.029639294, 0.031225244, -0.009139346, -0.04990337, -0.021651134, 0.008403449, -0.018140193, 0.014361577, 0.0040209102, -0.011450209, -0.031665497, -0.051516358, 0.034010336, 0.009243556, 0.0063789063, -0.04471481, -0.025697527, -0.07853537, 0.022053681, 0.01568876, -0.006317271, 0.04208862, 0.08606256, -0.03339129, -0.037197977, -0.027503705, -0.008648852, 0.013101469, -0.04856583, 0.04433272, 0.035348706, 0.021010334, 0.017998794, -0.05933598, -0.020385485, 0.03485894, 0.04494602, -0.0070432224, -0.024155295, 0.02424469, 0.009221699, -0.045545176, 0.028175272, 0.013213242, 0.035013493, 0.0052928277, -0.04631422, -0.010623724, 0.0059120306, 0.035988264, -0.09291684, 0.023842895, -0.056826435, -0.007121536, 0.014810946, 0.048880745, -0.013586887, -0.002749666, 0.020230515, -0.030039977, -0.0020490938, -0.018318262, 0.008766115, -0.003109897, 0.0125676235, 0.008825367, -0.014832285, -0.04288501, 0.054335117, 0.019406775, -0.009010792, 0.08017622, -0.013874502, 0.025381787, -0.031149622, 0.05904738, 0.029361961, -0.008088643, 0.0135502685, 0.008290434, 0.08488662, -0.04823103, -0.01645159, 0.023719393, 0.0017788301, 0.01875458, -0.038206935, 0.05396909, 0.04100135, 0.023711935, 0.04306816, 0.037393138, 0.018138018, -0.0372276, 0.031799957, -0.0010322643, 0.016367268, 0.019495446, 0.028946077, 0.019737845, 0.005457068, 0.03662244, 0.023781545, 0.023272822, 0.023328759, -0.014571241, 0.02947894, -0.0021090717, -0.017901834, 0.0092467675, -0.029742885, -0.021289608, 0.008853906, -0.004605411, 0.02624282, 0.043491628, -0.0018386528, -0.030260623, 0.037838984, 0.04987851, -0.03486681, -0.030555436, 0.051128626, 0.029505044, 0.02023041, 0.009260635, 0.044902097, -0.04088409, 0.025169762, 0.028696015, -0.0070432224, 0.023663867, -0.021625651, -0.0519304, 0.04671366, 0.0069166366, 0.03869463, 0.022645071, 0.08498524, 0.04366649, -0.03705668, 0.008329383, -0.0076365806, -0.06434534, -0.011472687, -0.045771413, -0.047515858, 0.021585966, -0.0057653487, 0.0012927905, 0.004566617, -0.031694762, 0.015625363, 0.021074558, -0.04224939, 0.024829865, -0.01250692, -0.020849561, 0.0015356032, -0.055160724, 0.01805784, 0.066887, -0.06475348, 0.0029224525, -0.022447526, -0.031644363, -0.015738895, 0.012020052, -0.017431954, 0.014001295, -0.0022532677, 0.056097165, -0.05034093, -0.007571002, 0.045700148, 0.027816545, -0.037448246, -0.026653033, -0.018700505, -0.0075138276, 0.0064498647, 0.038332067, 0.012069567, 0.020546097, -0.0005954295, -0.013997774, 0.01647935, 0.021426966, -0.006129153, 0.041268196, 0.0076050893, -0.009036689, 0.022673143, -0.03811412, -0.012685921, 0.02462103, 0.029879207, 0.018120097, 0.03638211, -0.019945437, -0.03483076, 0.0136472285, 0.043480027, -0.02274897, -0.0051236665, 0.06922065, 0.048685167, -0.059072424, 0.020068657, 0.0036526127, -0.066959925, 0.02635169, 0.048688896, -0.008274688, 0.0067111677, -0.019734945, -0.060767785, 0.009729907, -0.037196524, 0.03163442, 0.039082054, -0.0012107999, -0.045381922, -0.01239753, -0.022552358, -0.008180112, -0.00723088, -0.009715819, 0.034456182, 0.015352718, -0.023966763, 0.021618608, -0.047729246, 0.011538363, -0.003133774, -0.027560264, -0.024214962, -0.023165813, 0.0039943913, -0.016335154, 0.0021998156, 0.009994887, 0.006298586, -0.012097537, 0.0117969215, -0.039273072, 0.028612109, 0.023718977, 0.014864916, -0.049147587, 0.0051215948, -0.014110063, 0.022159548, 0.012770554, -0.008991525, -0.002559684, -0.015367219, -0.096249916, -0.04975089, 0.05044846, -0.018550353, -0.025202269, 0.017095912, 0.026871813, -0.023269193, -0.021853754, -0.005169505, 0.013861864, 0.022055313, -6.671131e-05, 0.026213815, -0.0109754605, -0.06352242, -0.05810265, 0.0387688, 0.0028680684, -0.046338253, -0.06623231, -0.05703195, 0.049922228, -0.031303763, 0.025004622, -0.04476909, -0.0235926, -0.010315807, 0.0012915476, -0.019967813, -0.020334933, -0.019693406, 0.012878391, 0.019462299, 0.0077965218, 0.02583675, 0.037284162, -0.010184351, 0.027480917, -0.0076593696, 0.036526307, 0.036297582, -0.027815923, -0.02115287, -0.047360055, 0.018004866, -0.00087926333, -0.039189786, -0.033993762, -0.051683445, 0.008188295, -0.023735553, 0.0075164167, 0.0058188005, -0.019698482, 0.057340235, 0.0073829945, 0.030978909, -0.017950237, 0.009431571, -0.029387834, -0.029429113, -0.008652581, 0.027470142, -0.048913788, -0.029068727, -0.033376373, 0.008844531, 0.028549954, -0.0063614, -0.005551541, 0.048826873, -0.004157648, 0.02041801, 0.0007114751, 0.07645365, 0.01560157, -0.021911142, 0.05421102, -0.015995862, 0.05052325, -0.006336383, -0.060351774, 0.06536216, -0.01949752, -0.020957708, -0.024235679, 0.012433994, 0.0055018184, 0.040240902, 0.012411619, -0.012866582, 0.021198452, -0.015464023, -0.007831534, -0.02336118, -0.027699903, 0.010613727, 0.047757838, 0.0045380266, -0.004836363, -0.05538116, 0.036924087, 0.020327682, 0.013254419, -0.014049153, 0.010077137, -0.04169747, 0.06603839, -0.044718124, 0.059667256, 0.024113858, 0.024849134, -0.026530381, 0.028611278, 0.009701523, -0.037544794, -0.02413582, 0.049237087, 0.00029336402, 0.028693942, -0.021153906, -0.0082589425, -0.017444592, -0.034886286, -0.0067545716, -0.0037151156, 0.029011961, -0.015433931, -0.027955769, 0.03188345, 0.013807376, 0.025268255, 0.0003884587, 0.00048883643, 0.039691985, -0.06553454, -0.037471037, -0.020480786, 0.022544693, 0.02305145, -0.012476672, -0.02297583, -0.015332828, 0.03123203, 0.05169339, 0.035286553, 0.033719253, 0.035990957, 0.056700468, 0.028845944, 0.02747843, 0.015333656, -0.020460896, 0.016371204, 0.0084241675, -0.05701538, -0.048340347, -0.008802992, 0.003950884, 0.00500542, 0.039790187, 0.028826743, -0.008746225, 0.040328436, -0.028676437, -0.0059845434, 0.011054189, 0.0025441456, 0.026898745, -0.06382407, -0.023300065, 0.025199471, -0.029581701, -0.054315437, -0.053657025, -0.012486617, -0.01670186, -0.028624538, -0.030601017, -0.020630782, 0.010374645, -0.0027011863, -0.00080467924, -0.018578893, -0.054585595, 0.031806376, 0.01071711, -0.00012347808, -0.025086768, 0.0119110765, 0.0069980575, -0.0039724307, -0.07402966, -0.01568894, -0.005235802, 0.00022043736, -0.0104382485, -0.0013633864, 0.06187163, 0.014059926, 0.017391762, -0.0037863846, -0.03453408, 0.043018438, -0.05053278, -0.0010912063, 0.0312673, -0.011178495, -0.055853523, 0.011392529, 0.008434009, -0.027958255, 0.01565934, -0.03235457, 0.026505109, -0.008210878, 0.0051471293, 0.03197875, 0.005104762, -0.024190929, -0.023229625, 0.017496593, -0.006470997, -0.07147143, -0.039379563, -0.0024554734, -0.0496415, -0.05504636, 0.00899168, 0.0005767835, -0.022833914, -0.020267187, 0.066369876, 0.005890484, -0.0075218035, 0.020762548, -0.05289997, 0.003502551, -0.048766382, -0.03917487, 0.014689747, -0.027074018, 0.04047263, 0.018222442, 0.019761257, -0.04841335, -0.030497426, -0.0021292716, -0.03258516, 0.06424009, -0.007116978, 0.0069127004, -0.015133937, 0.0066044196, 0.013348891, -0.031920325, -0.077676825, -0.041188642, 0.0006633839, -0.009576594, 0.024698334, 0.00959379, 0.01868103, 0.01386435, -0.015616247, 0.03743126, -0.009701316, -0.0145802535, 0.011974059, 0.0012135968, 0.01699253, 0.0012650287, 0.008004632, 0.00041891387, -0.011279598, -0.025198644, 0.012245048, 0.03950967, 0.02754307, 0.013989486, 0.05693085, 0.031828236, -0.006238129, -0.014127466, -0.0014660432, 0.0115335975, -0.07559841, -0.0068733366, 0.052205533, 0.015062667, -0.019116726, 0.0137359, -0.004173393, 0.026869327, -0.0655478, -0.012901076, -0.0395395, -0.050634295, 0.0026203871, 0.023351574, 0.018628925, -0.0035906015, -0.00036546195, 0.0067496644, 0.046383835, 0.011446169, 0.050836504, 0.021633731, -0.015541042, 0.039557733, -0.027167663, -0.016104255, 0.025702914, 0.00059346133, 0.013041543, 0.014815711, -0.03308332, 0.027748588, 0.007818068, -0.02909877, 0.043560416, 0.024834009, -0.06774223, 0.0057603763, -0.01860624, 0.01478422, 0.010716074, -0.028489457, 0.04403775, 0.039652415, -0.0020846247, -0.061583236, 0.0007746385, -0.02969192, 0.011893259, 0.043217327, 0.00020552054, -0.00401428, -0.022824384, -0.0044286367, 0.038006384, -0.025356099, -0.059486598, 0.057883456, 0.011434256, 0.04914096, 0.05374777, -0.030748941, 0.07294488, 0.022528535, -0.038153898, -0.026980372, 0.003550409, -0.01071856, -0.03731524, 0.016773233, -0.016535496, 0.043543633, 0.05567784, 0.059140198, 0.018047532, -0.083786085, -0.01123091, -0.023336528, -0.030204374, -0.045114662, -0.031023262, 0.010939826, 0.009006234, 0.026576905, 0.0015821146, -0.013501374, 0.06636822, -0.002083796, 0.004841335, 0.00031449617, 0.0064227246, -0.06137109, 0.018522022, -0.010027414, 0.09148151, 0.024936873, 0.048620347, -0.015385037, 0.011561722, -0.043086387, 0.009640147, 0.022768859, 0.03039964, -0.02922204, 0.0060430705, -0.006130811, 0.017122017, 0.019348249, 0.04069804, -0.045855116, 0.050534025, -0.013213604, -0.023902537, -0.020122783, 0.035968997, -0.05598446, 0.037480984, 0.0261326, 0.0064643673, 0.03735419, -0.0533129, 0.10522652, 0.010329065, 0.021693606, 0.016370634, -0.02654126, 0.030028997, 0.013848605, -0.03290691, -0.03510755, 0.015678193, -0.025782056, -0.005522122, 0.01558227, -0.012098987, 0.031792704, 0.012753358, 0.032954555, -0.025682198, -0.07040571, -0.017951142, 0.068786405, -0.019518651, -0.02368873, -0.02987838, -0.0062704487, -0.03859643, 0.0060620275, 0.026217416, -0.013007462, -0.009893162, -0.056579478, 0.0018047274, -0.023782374, 0.029377008, 0.023765283, 0.031713564, 0.024895541, -0.025232827, -0.006546047, -0.007695833, 0.00844302, 0.03344267, 0.024935942, 0.04074538, 0.020503988, 0.015336764, 0.0028308798, -0.0013109704, -0.02439505, 0.029831348, 0.06520771, 0.00042947996, -0.027781738, 0.016285846, 0.032128952, -0.008478551, 0.00095509045, -0.031641, -0.013140781, 0.041238412, 0.03355237, -0.03289002, 0.033170644, 0.019860908], [-0.03287013, -0.069989346, -0.025643088, -0.0507179, 0.0017616474, 0.049573377, 0.019837601, -0.02782147, 0.02057748, 0.0320566, 0.043909583, 0.006108627, -0.038683467, -0.022822656, -0.03685876, 0.015212778, 0.020663219, -0.03572346, 0.028164426, 0.03582191, -0.01185498, 0.0129177505, -0.053808514, 0.0023613255, -0.024573337, 0.033890277, 0.03355947, 0.03537851, 0.0007154512, -0.008713525, -0.00033348677, -0.06280169, 0.012968846, -0.043811135, 0.02013582, -0.014966028, 0.0030327854, 0.006847071, -0.060910933, -0.032892063, -0.060041573, 0.056608006, 0.0034495192, 0.045633353, -0.0077930717, 0.048011128, 0.025020478, 0.012603457, -0.027334947, -0.03874129, 0.051940184, -0.026520422, -0.029494384, 0.059395034, -0.0113005405, 0.033760425, 0.03499966, 0.0021484722, 0.009465366, 0.0018508763, 0.0057292175, -0.008294299, -0.07085272, 0.019223591, 0.042247638, 0.028422393, -0.014950574, 0.021546533, -0.022135744, -0.044831783, -0.016418116, 0.027248709, 0.004922793, 0.011460179, 0.012816683, 0.003908624, -0.0735919, -0.036389437, -0.046271414, -0.0068626488, -0.013042372, 0.03646047, -0.014738718, -0.03654593, -0.06152706, 0.016562678, 0.005637372, -0.013988, 0.03659257, 0.018955408, -0.052280903, -0.030677792, 0.028942063, -0.0011107501, 0.0053112376, 0.001926397, 0.031956904, 0.048165657, 0.001660455, 0.0074676853, 0.022674607, -0.025088772, 0.0029243648, -0.015885733, -0.015015378, 0.008190116, 0.015143987, 0.0024844513, 0.0036120252, 0.024115726, -0.018665537, 0.004465931, 0.0092915185, -0.035991147, -0.00847176, -0.0021449204, 0.014340927, -0.014483867, -0.020295335, 0.007888033, 0.0062534995, 0.019149816, 0.0035338877, 0.009866523, -0.024536451, -0.004472271, -0.017432658, -0.0058582006, -0.05913134, 0.0036085362, 0.015608575, -0.010800186, 0.044835776, 0.0018204688, -0.03850949, 0.016598567, -0.0073182643, 0.06169056, -0.019396191, 0.04124917, -0.033534985, 0.0007238008, 0.027796546, 0.0014888513, 0.004415584, -0.017554663, 0.001580448, -0.028104857, -0.0036056074, -0.022632236, -0.005342767, -0.02713954, -0.014011429, -0.024276864, -0.0074365297, -0.057334796, 0.02054657, 0.008222003, -0.042510837, 0.02421343, -0.0250798, 0.014785327, 0.023594186, 0.018614443, -0.014849409, -0.05626505, 0.0023857513, -0.008188869, -0.028721731, 0.019784886, 0.07527927, -0.008011097, 0.013029077, 0.0127044, -0.07143795, 0.008920895, 0.019001268, -0.007860617, 0.038654555, 0.015833331, -0.014717782, 0.0052091726, -0.02830151, -0.012130144, -0.010205928, 0.026347695, -0.018122936, 0.00052378356, 0.0061007137, 0.036162127, 0.044485837, 0.00391984, 0.020991096, -0.002041921, -0.015979324, 0.022711243, -0.027642637, 0.0059838193, 0.01468538, 0.031538673, 0.0054449565, -0.016986141, 0.029073663, -0.004003835, -0.042064197, -0.04004807, 0.04174317, -0.015784042, 0.04768312, -0.016619753, -0.015612563, 0.024398867, 0.029164137, 0.052695893, 0.029181337, 0.02722528, 0.01847387, -0.023893405, 0.05168446, 0.026604166, -0.016306954, -0.0098909475, 0.032585993, -0.049080875, -0.028877508, 0.03142103, -0.015474981, 0.029066686, 0.004573666, -0.008714773, 0.09348396, 0.002776813, -0.0010652633, -0.03879313, -0.011530218, -0.010355038, -0.02575615, 0.036893655, -0.044761002, 0.037988577, -0.032505237, 0.029989881, 0.033323504, -0.0128618125, -0.022362055, -0.0011664559, -0.023135707, 0.04185882, -0.025965108, 0.015313721, 0.057318844, 0.0065095965, -0.03397278, 0.0267906, -0.0010732391, 0.015183866, 0.017034244, 0.0029366398, 0.011117222, 0.057503033, 0.03559186, -0.039877836, 0.002445071, -0.0433603, 0.045441683, 0.009888455, 0.01357357, -0.029590094, 0.0015871775, -0.04205871, -0.04269129, -0.04240516, 0.040932134, -0.017762031, -0.027883282, 0.015123051, 0.029926946, -0.01667035, 0.061959743, 0.028966146, -0.03115434, 0.018041184, 0.04340911, -0.021462789, 0.017484376, 0.013165, 0.03668454, -0.050215427, -0.011445599, -0.04505511, -0.00203731, -0.0035928336, 0.0029106564, 0.025123665, 0.06328771, -0.021513633, 0.03919491, 0.004171575, -0.05254435, -0.011484107, 0.039356917, 0.0040397258, 0.0041294536, 0.020071516, -0.002767591, -0.010049964, -0.053972013, 0.030036738, 0.04352974, 0.011976611, -0.044004112, -0.04406462, -0.056562144, 0.020994836, 0.0034794284, -0.019765943, 0.042902395, 0.0662208, -0.021765368, -0.02322593, -0.05509261, -0.023344072, 0.009402432, -0.03190045, 0.04086783, 0.01857905, 0.00381952, 0.013034397, -0.06677611, -0.015480464, 0.044153843, 0.033668704, -0.0032341734, -0.020022914, 0.036258336, 0.011729362, -0.03420507, 0.020118872, 0.016693154, 0.02933487, -0.0020358143, -0.059240006, 0.0037795166, -0.020730639, 0.0432805, -0.06914242, 0.020341197, -0.06267705, -0.0065072286, -0.010846046, 0.05184647, -0.031726602, -0.023089845, 0.03285916, -0.003730665, -0.0016483199, 0.0020398025, -0.032368153, -0.020088464, 0.009249896, -0.0016948504, -0.0051208003, -0.05032061, 0.041826915, 0.01657788, 0.002291039, 0.06578213, -0.010401397, 0.035811193, -0.018494587, 0.038999505, 0.016442541, -0.008292804, 0.00464389, -0.0046204617, 0.052791603, -0.0328462, 0.00396595, 0.041741174, -0.0029266078, 0.010194276, -0.020386558, 0.072383575, 0.021157715, 0.010538232, 0.05575659, 0.027863842, 0.0055830367, -0.034622803, 0.022872504, 0.011656085, 0.03459788, 0.015883738, 0.040445115, 0.024246331, -0.0018424022, 0.03204613, 0.023537483, 0.026993608, -0.00038582773, 0.017102038, 0.02588834, -0.016965827, -0.003326892, -0.008721501, -0.0451401, -0.015644966, 0.012401321, -0.00046083028, 0.030750567, 0.033380207, -0.011152241, -0.034527592, 0.037841026, 0.021695083, -0.023599299, -0.012474925, 0.03560183, 0.022974195, 0.0056353775, 0.011077842, 0.054235213, -0.049261328, 0.028315965, 0.033181306, -0.027843403, 0.015805228, -0.027970018, -0.02982837, 0.032963347, 0.007614863, 0.029894918, 0.039819017, 0.106301025, 0.027532348, -0.031372678, 0.0039828983, 0.005225124, -0.081295, 0.0078120297, -0.032772426, -0.058873124, 0.0055232183, 0.01908302, -0.01572871, 0.008915163, -0.03155313, 0.018910544, 0.01038694, -0.06736133, -0.0013656009, -0.010869973, -0.016781513, 0.0002386499, -0.036761306, 0.030090574, 0.06489084, -0.04065747, -0.04118885, -0.020861614, -0.046387058, -0.019841714, 0.0027765639, -0.030209215, 0.014299304, -0.010502091, 0.041251164, -0.04877381, 0.0029573895, 0.061285794, 0.034511145, -0.029363783, -0.04436919, -0.032117166, -0.0054953033, 0.012899806, 0.04318678, 0.01232256, 0.021322215, 0.008366579, 0.0158309, -0.002428621, 0.018783677, -0.007144293, 0.029626982, 0.03989105, -0.008548527, 0.0050288457, -0.039386332, -0.022141477, 0.0021988193, 0.02327092, 0.022935314, 0.07992117, -0.014302543, -0.03054111, 0.008129301, 0.059155267, -0.038723238, 0.015435601, 0.07380375, 0.028660918, -0.048133753, 0.021805746, -0.006491277, -0.058243036, 0.033328734, 0.011707429, 0.0014117107, 0.026460106, -0.04632126, -0.063897856, 0.0056558154, -0.0076677026, 0.0099841645, 0.037211437, 0.016655395, -0.03691484, 0.0021733965, -0.018358719, -0.009275817, -0.007038801, -0.0083630895, 0.02685341, 0.00027317, -0.015718741, 0.059639294, -0.0729663, 0.000582231, -0.015243684, -0.029391699, -0.030024774, -0.021165691, -0.0024979105, 0.029451517, -0.010702981, 0.025048956, 0.03767154, -0.0024443234, 0.014866829, -0.0136485305, 0.032321297, 0.009842096, -0.00529566, -0.026770536, -0.01742705, -0.0243631, 0.04391258, 0.013519128, -0.010743607, -0.031651832, -0.021145752, -0.07742874, -0.06454788, 0.037716903, 0.0049978145, -0.007854137, 0.015919631, 0.058873124, -0.016662374, -0.032920476, -0.028250663, 0.042043258, 0.021970745, 0.032321297, 0.014766385, -0.011394878, -0.06482305, -0.06487489, 0.057016514, -0.019850686, -0.03937935, -0.053399753, -0.04784463, 0.04039078, -0.006343227, 0.027552536, -0.046789836, -0.0339648, -0.011350513, -0.0032321797, -0.016282527, -0.019057097, -0.009245908, 0.018426014, 0.0124003235, 0.002731077, -0.0054995404, 0.046732012, -0.007825629, 0.04594191, -0.019712606, 0.048053995, 0.010364508, -0.019545862, -0.03102972, -0.04661038, 0.02536543, -0.0015141807, -0.013032403, -0.0413055, -0.044834778, 0.01677743, 0.01061023, 0.026544785, -0.008926877, -0.022025079, 0.03769148, 0.0017023277, 0.033916947, 0.0060715526, 0.034375556, -0.03488937, -0.01904339, -0.010822118, 0.015994651, -0.031572074, -0.013591953, -0.015855825, 0.0012103226, 0.027717782, 0.0019538137, 0.008145252, 0.039421227, 0.011450475, 0.003618381, 0.014728251, 0.044957403, 0.035501134, -0.008201456, 0.05075778, -0.0024170312, 0.04518372, -0.018995535, -0.071702145, 0.09913479, -0.011796159, -0.06113868, -0.04082197, 0.0044464897, 0.024402855, 0.025255265, 0.0070146867, -0.001292635, 0.036838073, 0.004909583, -0.0006722076, 0.014102153, -0.02160336, 0.0038709885, 0.04595637, 0.0040833433, -0.007575857, -0.063154116, 0.046434917, -0.004233138, 0.00046010205, -0.005417041, -0.000107049746, -0.051009517, 0.04656452, -0.05401987, 0.046115883, 0.036971666, 0.0049322015, -0.03067941, 0.038837, -0.0012202923, -0.021590402, -0.016473947, 0.043209713, 0.024170063, 0.019034697, -0.015376282, 0.0027638525, 0.0017746082, -0.061956257, 0.005011274, 0.038924236, 0.0270867, -0.03271161, -0.022706011, 0.02970973, 0.030764528, 0.017797923, 0.022911262, 0.009345106, 0.042182833, -0.07440992, -0.031396855, -0.004987845, 0.026060818, 0.007097685, -0.026280152, -0.00924192, -0.0007213084, 0.038351476, 0.038097247, 0.0434126, 0.019558575, 0.046452794, 0.031141631, 0.03132682, 0.030433534, 0.024808621, -0.03055317, 0.00059145293, -0.0044564595, -0.058093492, -0.0538125, -0.020845912, 0.017919553, -0.0012262742, 0.054990917, 0.029501365, 0.0073050545, 0.032845765, -0.012636106, 0.012274456, 0.011076008, -0.0064753257, 0.0006879099, -0.07226842, -0.049966183, 0.034674644, -0.029809676, -0.037093297, -0.037874922, -0.007448868, -0.028950786, -0.02346271, -0.0045601446, -0.036183063, 0.028675126, 0.005872968, 0.007441391, -0.042893674, -0.045990266, 0.024583308, 0.01801626, 0.0028187013, -0.04613738, 0.03206358, 0.01574865, 0.0073008174, -0.027916182, -0.013838828, 0.0008135282, 0.012274456, -0.0076417816, -0.021986198, 0.06765444, 0.021472758, 0.039560802, -0.010660984, -0.032435447, 0.043982368, -0.047920898, -0.0025549869, 0.044423025, 0.018421529, -0.051732816, -0.009378007, -0.018539669, -0.011919908, 0.02346371, -0.016178843, 0.034198094, 0.020690635, 0.0022855557, 0.0017775991, 0.011041452, 0.014656593, -0.03344538, 0.025668884, 0.021860579, -0.07411083, -0.04152184, 0.016492391, -0.054337587, -0.047507156, 0.02510597, 0.021183638, -0.023626216, -0.0356776, 0.038480584, -0.019514708, -0.0139446305, 0.011619196, -0.06396565, 0.005319089, -0.016916253, -0.050192498, 0.003409142, -0.036652636, 0.07664263, 0.021881517, 0.037490092, -0.051174514, -0.004664328, 0.020185668, -0.02577668, 0.038730323, 0.008037579, -0.014756665, 0.00039455123, 0.01584411, -0.008954792, -0.052009974, -0.06821175, -0.023127232, 0.0015010643, -0.011033725, 0.01686314, 0.032643817, 0.01549598, 0.010545148, -0.031893097, 0.037709422, -0.008068983, -0.0088640675, 0.029268073, 0.002018866, 0.015553244, -0.022908272, 0.004355267, 0.005765233, 0.002554613, -0.0026123128, 0.02303202, 0.047566477, 0.012242553, 0.00366393, 0.031545155, 0.035597842, -0.011544175, -0.053405732, -9.9401106e-05, 0.0059663723, -0.049725417, -0.015873272, 0.03793474, -0.016560683, -0.019751986, 0.025634238, -0.0019301357, 0.046414476, -0.06137552, -0.037404787, -0.04352575, -0.041141, -0.015205052, 0.013253419, -0.009012616, 0.0015782049, 0.0062829102, 0.004483378, 0.061227966, 0.018589519, 0.013048355, 0.037040457, -0.023619236, 0.023333104, -0.05484726, -0.0063677775, 0.028846353, 0.011511524, 0.011162085, 0.007930155, -0.056675795, 0.025865909, 0.030510299, -0.028547013, 0.038318574, 0.039404273, -0.048171636, 0.012884852, -0.023361923, 0.042541277, 0.01391871, -0.014358373, 0.033540092, 0.044045173, -0.007825225, -0.051189963, -0.023143992, -0.007360075, -0.01551486, 0.014700273, -0.00069887657, 0.0048652175, -0.049256343, -0.010333466, 0.048266347, -0.005296906, -0.07389747, 0.059758928, -0.012683962, 0.048105713, 0.055133484, -0.02121554, 0.07541087, 0.0092140045, -0.060999908, -0.015640479, -0.023554435, -0.015941314, -0.015483954, -0.008377234, 0.005651205, 0.030856248, 0.017151825, 0.04559098, -0.022728195, -0.08337069, -0.0019904522, -0.040109135, -0.04323663, -0.05007922, -0.03982886, 0.004511542, -0.0031813341, 0.028202811, 9.7703145e-05, 0.0068332385, 0.05488923, 0.002337772, -0.017652366, 0.010259827, 0.003691783, -0.042695276, 0.029145943, 0.0022785768, 0.065976545, 0.0324853, 0.011153112, -0.028620789, 0.009237807, -0.052815527, 0.025205417, 0.03481771, 0.024174549, -0.013805305, 0.01959646, -0.024425786, 0.02877744, -0.00154032, 0.022376012, -0.030016424, 0.062159136, 0.003844818, 0.022102844, -0.014288586, 0.037673533, -0.025861423, 0.060331196, 0.009970207, 0.008952659, 0.03286913, -0.04646183, 0.09436927, -0.0063377437, 0.020043103, 0.024052545, -0.030704709, 0.03198781, -0.021511639, 0.0023330052, -0.0050835544, -0.012311935, -0.04930619, 0.0021786306, 0.026825245, -0.023096822, 0.009695541, 0.008977722, 0.060099397, -0.02760413, -0.05493509, -0.050666057, 0.037226394, -0.0058756475, -0.01654872, -0.0005219142, -0.016740138, -0.019022204, -0.0023099815, 0.013068045, -0.04079505, 0.0039858273, -0.050069872, 0.024208445, 0.0072679175, 0.03917896, -0.016889185, 0.02708449, 0.0043318383, -0.054580167, 0.0011245832, 0.0050643627, -0.0063993065, 0.032329272, 0.027264908, 0.04018989, 0.041960508, 0.022343364, -0.0329773, -0.000804057, -0.042094104, 0.023676064, 0.06008843, 0.015867788, -0.038251776, -0.008962425, 0.056311406, -0.019807069, 0.019898042, -0.016667359, -0.028365316, 0.0120773055, 0.019261478, -0.0134611, 0.019084016, 0.0045858165], [-0.036568932, -0.07866247, -0.020268744, -0.06995241, -0.0056002103, 0.02504579, 0.01321742, -0.01955052, 0.012743426, 0.021005584, 0.01804299, 0.010041843, -0.08044308, -0.050396178, -0.0429277, 0.04818855, -0.0071099983, -0.046629675, 0.010796455, 0.06401594, -0.013028415, -0.007964191, -0.020811642, 0.006012919, 0.0032057618, 0.05736294, 0.013056449, -0.0025253415, -0.0052684625, 0.028122915, -0.011250069, -0.0633028, 0.029782217, 0.015832469, -0.005263949, 0.025753038, 0.016736876, 0.014855282, -0.042414002, -0.033652317, -0.051404465, 0.019708214, -0.032637615, 0.010170621, 0.015477026, 0.027976789, 0.008640098, 0.03052357, -0.046370145, -0.023201998, -0.0070174704, -0.018724538, -0.006915351, 0.02659338, -0.039053652, 0.054578066, 0.071837954, -0.0033911, 0.03582645, -0.0010685873, 0.0045005917, 0.0075376593, -0.05822729, -0.0042613726, 0.03761213, 0.036676127, 0.00456491, 0.00074699556, 0.022604514, -0.02658393, -0.029408718, 0.016054763, -0.010068748, -0.014765856, 0.052786183, -0.017254807, -0.054593865, 0.020190319, -0.0038783099, -0.045024116, 0.0048024366, 0.017422374, 0.003804374, -0.027226973, -0.06482612, 0.012988921, -0.0035056323, -0.008977488, 0.06295074, -0.00023583394, -0.023118496, 0.017135762, 0.0020627007, 0.004637691, -0.007632162, 0.0070118285, 0.026973084, 0.035020214, 0.028733375, 0.03673932, 0.03805446, -0.05829612, -0.01611908, -0.017324204, -0.0013651076, 0.009792751, 0.024108097, -0.036167223, -0.010227745, -0.030367287, -0.02123521, -0.012013708, 0.004158689, -0.064580135, -0.0021879522, 0.0058715884, 0.050993167, -0.020447874, -0.051102057, -0.016781447, -0.02859797, 0.012539822, 0.011121996, -0.009419817, -0.015710885, -0.026490698, -0.009669191, 0.0010223232, -0.07265942, 0.010952174, 0.0066451007, 0.003853741, 0.046144467, -0.039287228, -0.033644985, -0.010596166, -0.03303819, 0.05745321, -0.018364582, 0.010556672, -0.036794048, 0.007282642, 0.016989494, 0.025585162, 0.02054012, -0.034614556, 0.0073926607, -0.060945585, 0.0044627907, -0.01230568, -0.016590467, 0.002736351, 0.043014307, 0.011839513, -0.00962321, -0.039990216, 0.016780883, -0.0065683704, -0.021006146, 0.029879821, -0.01529874, 0.00012299474, 0.013524908, 0.026580403, -0.032050848, -0.03397927, 0.0011709889, -0.019162355, 0.007090816, 0.023331482, 0.05365053, 0.002486976, 0.035383273, 0.042698354, -0.06396855, -0.027926575, -0.0065895272, -0.042328242, 0.03156113, 0.03806969, -0.022685757, 0.024728712, -0.010660114, -0.008532901, -0.013795721, 0.021846237, -0.013519265, -0.00016925881, -0.017297262, 0.041087013, 0.038005374, -0.018194193, 0.027742648, 0.019437682, -0.041195337, 0.053473372, -0.033483345, 0.019313559, 0.023124984, 0.04879837, 0.02558742, 0.004647847, 0.026997907, -0.030709332, -0.01466007, -0.05687463, 0.048894357, -0.031479884, 0.07478983, -0.011061627, 0.02551097, 0.051048458, 0.0154258115, 0.048371915, 0.040676277, 0.026416752, 0.017474279, -0.046352655, 0.053539947, 0.07346284, -0.042761546, -0.015513699, 0.016165346, -0.040812038, -0.022937955, 0.035399918, -0.030782536, 0.026490131, -0.014803375, -0.01670246, 0.09956931, -0.0008146991, -0.016964247, -0.049766604, 0.0030417924, -0.01622515, -0.022335391, 0.015091998, -0.009986835, 0.03973294, -0.03878622, 0.021827053, 0.031562395, 0.0007777443, 0.00044162443, 0.0040599545, -0.04032422, 0.029372046, -0.02185921, 0.009782454, 0.009690631, -0.034881987, -0.04750474, 0.021870496, -0.03717262, 0.006270193, -0.019781841, -0.00020988092, 0.021829875, 0.028493593, 0.011253454, -0.062079616, 0.017102193, -0.04234399, 0.032369055, 0.009911514, 0.0099981185, 0.0030601993, 0.028503124, -0.010254545, -0.029836943, -0.050648727, 0.031087201, 0.030304909, -0.011263997, 0.03698418, 0.02382487, 0.010074285, 0.030172922, 0.03238203, -0.050944645, -0.0095304, 0.028275814, 0.0032576679, 0.003991484, -0.0038695384, 0.020103434, -0.09601263, -0.007635477, -0.034810614, -0.0037417484, 0.015808208, -0.0047647767, 0.03692099, 0.024115572, -0.028573146, 0.02949504, 0.008822897, -0.027493272, -0.017338874, 0.0427119, -0.018709023, -0.021851877, -0.014458652, -0.019780995, -0.034930505, -0.05272186, 0.052743305, 0.034826692, -0.012296089, -0.022362474, 0.00870216, -0.04226731, 0.031023446, 0.030157689, -0.011314811, 0.04216801, 0.10080604, -0.031184807, -0.039719403, -0.028291047, -0.026268968, 0.04653489, -0.025187967, 0.02612143, 0.020028958, 0.04263968, 0.012123445, -0.043386675, -0.0064501716, 0.029627062, 0.014342851, -0.023554197, 0.0063347933, 0.049427524, 0.031925596, -0.017356927, 0.014321412, 0.047983743, 0.03293325, 0.010719725, -0.051104877, -0.023827126, -0.008419497, 0.04944163, -0.06864235, 0.012756472, -0.08355067, 0.026891347, 0.015393665, 0.015622024, -0.020819962, 0.009218963, 0.043082293, -0.024925051, -0.016489193, 0.013280751, -0.016733773, -0.019964077, 0.020007519, 0.016920239, -0.03195268, -0.056234833, 0.05481503, 0.0075150914, -0.0105616795, 0.054292586, -0.014091924, 0.029665144, -0.015675623, 0.040112082, 0.021983897, -0.035115562, 0.039395835, -0.011768283, 0.022794649, -0.011708196, -0.004444172, 0.044476703, -0.022493368, 0.013766947, -0.036436908, 0.024123894, 0.0050129523, 0.037154566, 0.022019442, 0.0257894, 0.04746412, -0.0005345758, 0.037647672, 0.026158385, -0.01439377, 0.02958644, -0.0008372669, 0.032981772, -0.012255467, 0.05696236, 0.03257555, 0.039714888, -0.0021665127, 0.017184284, 0.037588995, -0.027756188, -0.029165974, 0.014851897, -0.02733417, -0.04782633, -0.008367027, 0.005865382, 0.035496958, 0.027440239, -0.013265377, -0.023912886, 0.028781896, 0.019301146, -0.06258401, -0.040072024, 0.036895882, 0.019710753, -0.017622665, 0.01829857, 0.04941737, -0.03617625, 0.03441596, 0.003996765, -0.016268592, -0.008661538, -0.015743326, -0.07280555, 0.035211474, 0.025723955, 0.032165382, -0.0042213146, 0.070515476, 0.031177474, 0.00627386, -0.0016971017, -0.011283357, -0.0466724, -0.02713106, -0.017879372, -0.048019852, 0.018634267, 0.017490076, -0.023134295, -0.0074674166, -0.0108461045, 0.032741565, 0.035385247, -0.044005036, 0.00071878574, 0.0030723296, -0.03540443, -0.040335502, -0.03700562, 0.03077238, 0.042023577, -0.024459025, -0.008130346, -0.006422244, -0.03736727, 0.014976019, 0.061241224, -0.024336597, 0.026733864, 0.031624317, 0.047031384, -0.04543358, -0.011905101, 0.04336524, 0.0057288464, -0.011870685, -0.001234461, -0.036789533, -0.0049276883, -0.0135689145, 0.044467673, 0.03445884, -0.004751377, 0.04295013, 0.03399902, 0.016337708, -0.010189945, 0.039307468, 0.028031515, 0.012104791, -0.041714966, -0.006224211, -0.006920429, -0.012962968, 0.050378192, 0.048538916, 0.0043437453, 0.05738325, -0.029581927, -0.014709155, -0.008222734, 0.0500085, -0.021044511, -0.0009809958, 0.048441872, 0.024854353, -0.046573255, 0.034321174, -0.011099993, -0.05267278, 0.030203108, 0.03251236, -0.004889323, -0.014977325, -0.023558006, -0.033549353, -0.007542173, -0.032951307, 0.0455656, 0.04451507, -0.0133804735, -0.04347469, -0.021979949, -0.04440082, -0.014952324, 0.0074726357, -0.025245799, 0.018687584, 0.009401763, -0.029728055, 0.041860525, -0.039787106, -0.032320537, -0.007165854, -0.008945751, -0.076076195, -0.03180486, -0.012830947, 0.0211235, 0.012777347, 0.040073715, 0.026152743, 0.012419083, -0.011501136, -0.031634472, 0.02424012, -0.010514075, 0.025955275, -0.01478645, 0.012803161, 0.0021021944, 0.006860342, 0.021238595, -0.041226935, -0.008005941, -0.027738133, -0.024303308, -0.04536136, 0.07493765, 0.008784603, -0.014208713, 0.028034903, 0.0155864805, 0.012070974, -0.03864517, 0.005885552, 0.012862119, 0.038045995, 0.028577657, 0.046585668, -0.016521635, -0.08153423, -0.0636684, 0.055755544, -0.009017546, -0.034338098, -0.06099636, -0.0042489604, 0.0002000075, -0.023344176, -0.01147067, -0.06140258, -0.012082257, 0.00412653, -0.03476802, 0.022757975, -0.012546028, -0.030930497, 0.025014196, 0.018010266, 0.024565095, 0.0152423205, 0.031942524, -0.027383817, 0.038090006, -0.024149848, 0.054596122, 0.009162543, -0.033769388, 0.006335357, -0.054235037, 0.017868653, 0.008338817, -0.014422863, -0.02014067, -0.063715786, 0.010607732, -0.014768395, 0.0041874633, 0.011078554, -0.015910327, 0.04376356, 0.019682543, 0.038627118, -0.004488744, 0.005989787, -0.01599383, -0.025580084, -0.027733056, 0.008984258, -0.03312903, 0.006054388, -0.037163593, 0.021227311, 0.0007278129, -0.0180633, 0.017886002, 0.029282622, -0.0145156365, 0.015311945, -0.01282333, 0.0791285, 0.01206036, 0.019500872, 0.0657153, -0.012136985, 0.07428882, -0.043050416, -0.041486464, 0.08931449, 0.010447782, -0.03213435, -0.013206137, 0.016884131, 0.01880127, 0.0257894, 0.02421868, 0.004515825, 0.023829384, -0.0017749607, 0.008058412, 0.014178881, -0.036535643, -0.017531829, 0.03261956, 0.01327102, 0.017490076, -0.036003537, 0.012409209, -0.011994808, 0.0002572734, 0.00818592, -0.004938126, -0.04240836, 0.026274608, -0.049221028, 0.03677881, 0.014607036, 0.014349762, -0.01995096, 0.035715867, 0.017875986, -0.02582551, -0.009487521, 0.048626363, -0.021239724, 0.022387298, 0.0053779166, 0.007600849, -0.025063844, -0.04510691, -0.026411425, 0.004460534, 0.024167053, -0.043269888, 0.007042859, 0.00894702, -0.006392341, 0.029647373, 0.01755891, 0.010202921, 0.039922513, -0.031571284, -0.06335696, -0.007511001, 0.03707558, -0.0041773077, 0.019302275, -0.025738623, -0.02721456, 0.022819191, 0.027468732, 0.036866967, 0.0021168636, 0.028009795, 0.039161976, -0.0069982875, 0.036195997, 0.010161171, -0.0500657, 0.038244028, -0.004103962, -0.0074248197, -0.08057622, -0.008704981, 0.0104656955, -0.002492618, 0.018417615, 0.01962725, 0.0036990808, 0.01775412, -0.023128089, 0.028126301, 0.009617286, -0.0024108097, -0.0009084967, -0.05520997, -0.021829875, 0.06096025, -0.03248105, -0.038523305, -0.026508186, -0.008853364, -0.020387506, -0.019267436, -0.028895864, -0.0030207057, 0.03232843, 0.014328287, -0.016205968, -0.03889906, -0.03585889, 0.022353446, 0.009113459, 0.019040488, -0.032256216, 0.0005709664, -0.0016801758, 0.0060459245, -0.06520865, -0.055937782, -0.017783178, 0.0025456527, -0.0067252168, 0.010620426, 0.04309555, 0.023985103, -0.002083012, -0.037458103, -0.04852763, 0.01665958, -0.050375935, 0.026399862, -0.0036164967, -0.022066835, -0.056415092, -0.014689973, -0.009704172, -0.01325903, 0.0048518036, -0.052251328, 0.0389449, 0.0027273234, -0.00023696234, 0.006179075, -0.019640792, -0.07051773, -0.029567257, 0.016125288, -0.010503073, -0.07271358, -0.041921776, -0.013590354, -0.045248523, -0.034994826, -0.029048197, 0.0155515, -0.02320764, -0.040349044, 0.042775087, -0.028744658, -0.015862372, 0.021624506, -0.043294426, 0.013858347, -0.0140386075, -0.035801623, 0.014502377, -0.032417577, 0.0689944, 0.0154578425, 0.05304797, -0.023856465, -0.0015188158, -0.0013224756, 0.006143813, 0.019075468, 0.027286213, 0.014673611, -0.002134918, 0.03226073, 0.039130382, -0.051775143, -0.07218663, -0.032338027, 0.012991178, -0.009590204, 0.0041172206, 0.05224004, 0.03051285, -0.00068831915, 0.021537904, 0.009252815, 0.020217402, 0.024298513, 0.048257943, -0.0026895227, 0.027679458, -0.004637691, 0.003404782, 0.032172713, -0.027417388, -0.005341244, -0.015972955, 0.0375732, 0.013138433, 0.045478713, 0.068539664, 0.008056438, -0.004967182, -0.026459243, -0.0049457424, 0.011113534, -0.03973193, -0.0059931725, 0.028409334, -0.003103078, -0.0015797489, 0.0226079, 0.009640207, 0.009239838, -0.062265802, -0.0009331802, -0.04217704, -0.029500684, -0.04216801, -0.021700108, 0.013888249, -0.012893149, 0.0024164517, -0.0067929206, 0.06851371, -0.009990783, 0.015839804, 0.0423147, -0.023767322, 0.04518195, 0.0012564646, 0.015820904, -0.0014657812, -0.0044447365, 0.0014657812, 0.0178427, -0.023895958, 0.0065751406, -0.007173612, -0.019045003, 0.010853439, 0.030761097, -0.076432765, 0.010222668, -0.010304477, 0.013463975, 0.018280515, -0.015840933, 0.015259246, 0.040553283, -0.003738927, -0.03771425, -0.019842776, -0.04226618, 0.005685968, 0.029528327, 0.0073083136, -0.032104447, -0.019228436, -0.000987343, 0.02612679, -0.03580501, -0.039843522, 0.07694731, -0.015445431, 0.01735312, 0.06004541, -0.034760118, 0.05167133, 0.01718541, -0.032816056, -0.01400786, -0.020531658, -0.046068866, -0.046625163, 0.004883963, 0.003853741, 0.06478833, 0.06334568, 0.020680042, 0.0073678363, -0.08440598, -0.0019584657, -0.009934364, -0.06916592, -0.04600511, -0.02348466, -0.0010181622, 0.023028227, 0.039064936, -0.011151899, 0.0009980628, 0.030572655, 0.024987113, -0.009566508, -0.015689164, 0.002898275, 0.0052784774, 0.0073108524, -0.03481315, 0.036485992, 0.039701346, 0.02424689, -0.0385549, 0.00064600445, -0.02989562, -0.005165497, -0.010090585, 0.018576577, 6.657513e-05, 0.04462565, -0.016944138, 0.03268726, 0.009700081, 0.07047035, -0.035948314, 0.012949145, 0.0043686405, -0.01824215, 0.021335637, 0.020697955, -0.02599082, 0.0465473, 0.010289384, -0.0108777, 0.039870605, -0.017954975, 0.08147894, 0.00793316, 0.0011475747, 0.013396182, 0.020201603, 0.017128991, 0.04428036, -0.011554736, -0.0069559733, -0.021304043, -0.011471516, -0.014681792, -0.014421979, -0.031504706, 0.008091699, 0.018499987, 0.08711526, -0.0016677636, -0.057473525, -0.05841009, 0.05638801, -0.025857104, -0.0066733104, 0.015448463, -0.012520639, -0.0252489, -0.023478454, 0.012188891, -0.028500222, -0.020044193, -0.066399105, 0.009978935, -0.00013032928, 0.03805615, 0.019500097, 0.052373827, 0.015297471, -0.046835043, -0.0011983524, 0.009091138, 0.002717168, 0.065270714, 0.03790946, 0.021580499, -0.009569893, 0.022304926, -0.010235645, -0.014978894, 0.001364226, 0.041924845, 0.035730533, 0.014766702, -0.060216505, 0.016237563, 0.01207718, -0.04002181, -0.00031989915, 0.018594773, 0.019262498, 0.051691923, -0.0020803672, -0.047113616, 0.01624546, -0.00044289388], [-0.017892582, -0.08244514, -0.024228537, -0.05213775, 0.024038848, 0.012451726, 0.0034223266, -0.027996868, 0.026752407, 0.038499486, 0.022289641, 0.0086093815, -0.048219394, -0.028230123, -0.042076174, 0.015454892, 0.010604747, -0.04783392, 0.025779199, 0.06110613, 0.008037074, 0.015528692, -0.034058146, 0.009632299, -0.0070924317, 0.045118835, 0.0053280843, 0.011189054, 0.006360264, 0.0026848014, -0.016955748, -0.026803829, 0.01105907, -0.00452449, 0.015570068, 0.013177324, 0.00032567285, 0.014467494, -0.059076678, -0.039071985, -0.06371, 0.013937275, -0.002279329, 0.013278716, 0.01691442, 0.046236407, 0.0016325542, 0.027572207, -0.025247836, -0.03828675, 0.024323381, -0.006744666, -0.03456246, 0.033475935, -0.0010299643, 0.041134577, 0.031516302, -0.00025444382, 0.030388515, -0.012421337, -0.02046654, 0.009745808, -0.08472485, 0.0085103465, 0.045515735, 0.032992374, -0.030612487, 0.019670261, -0.0045198062, -0.059192475, -0.021703716, 0.026372645, 0.016165944, -0.008984, 0.021485267, 0.0012259423, -0.08840323, 0.0034163273, -0.018981967, -0.011550436, 0.013168992, 0.024473839, -0.007179278, -0.02881005, -0.06111223, 0.016493522, -0.009389663, -0.0218237, 0.03684465, 0.01586998, -0.059417587, -0.00813349, 0.038023356, 0.013262313, -0.009499744, 0.015618585, 0.009507363, 0.049715582, 0.0206728, 0.006526027, 0.051880643, -0.03560328, -0.0029984757, -0.038039353, -0.033865407, 0.018432133, -0.0009877791, -0.025138421, -0.00820848, 0.0014771455, -0.0067131226, -0.0017117823, 0.016109189, -0.063850164, 0.012086844, 0.0089836195, 0.024789229, 0.008258736, -0.040117566, -0.0058325916, -0.0013994412, 0.016222699, 0.0018525262, 0.0057760277, -0.020783072, -0.011101826, -0.007915946, -0.01695289, -0.07270085, -0.0005341225, 0.017132297, -0.0053907433, 0.019483808, -0.01479369, -0.032989327, 0.031049766, 0.0018713811, 0.053052302, -0.010568038, 0.047855247, -0.014283898, 0.014280469, 0.00875222, 0.000662392, 0.012733238, -0.016489523, -0.015748093, -0.053539474, 0.00237446, -0.009715716, -0.011329607, -0.0044314363, 0.007513711, -0.0064334674, 0.005147536, -0.028214697, 0.01171013, -0.00636281, -0.022819573, 0.024748472, -0.004613318, 0.017763836, 0.018236157, 0.02368518, -0.01758786, -0.057803124, 0.015382043, -0.012702384, -0.00658621, -0.001030726, 0.054244146, 0.007113857, 0.014165056, 0.047109436, -0.061076425, 0.0025128233, -0.0031526466, -0.022794815, 0.03794946, 0.043524656, -0.007363635, 0.0025623408, -0.007329734, -0.020739838, -0.009942021, 0.04262201, -0.03180662, 0.01364855, 0.024188925, 0.046762813, 0.021201877, -0.016875805, 0.04790705, -0.007891948, -0.023034023, 0.024142835, -0.027326811, -0.027567543, 0.013430673, 0.048586585, -0.007727398, -0.0022221936, 0.023413785, -0.019778246, -0.0458136, -0.053507864, 0.043901082, -0.008088733, 0.047977902, -0.017198386, 0.017590161, 0.028176773, 0.029526532, 0.048722185, 0.02564931, 0.022264598, 0.0114893, -0.02350101, 0.057973962, 0.058317155, -0.02153288, -0.006919501, 0.024873028, -0.03405329, -0.044636417, 0.033757232, -0.0061156033, 0.01948295, -0.0016005583, -0.012969779, 0.10981003, 0.009900694, -0.025160227, -0.04171736, -0.030876072, -0.020495394, -0.016292024, 0.02594489, -0.051204156, 0.033248343, -0.029168101, 0.03246406, 0.018179784, 0.0070017762, -0.021401754, -0.0223423, -0.034037575, 0.008289232, -0.015691338, 0.022744916, 0.03945479, 0.003594019, -0.050535098, 0.02966937, -0.0027901214, 0.004952227, -0.0046017007, 0.0036287766, 0.005677373, 0.03944315, 0.048878353, -0.05255713, -0.0041720406, -0.06240578, 0.028817844, 0.019840524, 0.02859065, -0.016542658, 0.0054915873, -0.06051726, -0.0627364, -0.06694616, 0.040615786, -0.014544913, -0.027482983, 0.037957698, 0.040694255, -0.008447306, 0.04983138, 0.038616803, -0.0606879, -0.011555864, 0.023153247, -0.015271201, 0.01050914, 0.01112011, 0.031776533, -0.06503097, -0.0013339256, -0.040867947, -0.021640297, -0.01383605, -0.0061268397, 0.0111728655, 0.05558303, -0.012018758, 0.01767699, 0.011134084, -0.071689166, -0.00900895, 0.013685117, -0.004873285, 0.03810182, 0.004929278, -0.021089127, -0.02578034, -0.063543394, 0.05702665, 0.04018727, -0.008302183, -0.045336712, -0.018316433, -0.0675754, 0.013937275, 0.013642563, -0.012255644, 0.054296333, 0.073229544, -0.028083287, -0.046507798, -0.022425512, 0.009397996, 0.021351952, -0.030804845, 0.041829348, 0.04566581, 0.021560686, 0.01898768, -0.053046968, -0.0138270045, 0.040599026, 0.033147976, -0.015571544, -0.020085447, 0.03898171, 0.004467051, -0.037741486, 0.028539801, 0.020027928, 0.02563674, 0.012369474, -0.06766035, 0.0056015737, -0.002731081, 0.054667335, -0.06602741, 0.011873347, -0.057297286, -0.0068192757, 0.014468635, 0.039699335, -0.011515488, -0.0070082517, 0.030591158, -0.02394324, 0.008718891, -0.0073529696, -0.024873028, -0.03456513, 0.019947749, 0.007948704, -0.039395943, -0.048106264, 0.0585815, 0.029304465, -0.011613475, 0.06637023, -0.023303604, 0.03423488, -0.02179304, 0.033401467, 0.0049593695, -0.008446925, 0.02085906, 0.012021709, 0.06336947, -0.032368075, -0.0060327565, 0.027681813, -0.019661881, 0.0035321224, -0.05911858, 0.05147174, 0.020414928, 0.047900576, 0.06027424, 0.031800833, 0.027734758, -0.040448952, 0.012999681, 0.011729174, 0.034737866, 0.027405277, 0.053064488, 0.04455738, 0.002147346, 0.027143216, 0.03183843, 0.01660984, -0.00011589003, 0.010280597, 0.036291387, -0.009246823, -0.023286944, 0.010506854, -0.035675462, -0.011797738, -0.0155561175, -0.0020516438, 0.018504206, 0.04216169, -0.00018588112, -0.030674193, 0.042769417, 0.04489029, -0.026593952, -0.035474345, 0.024571827, 0.024082271, 0.015664484, 0.028909085, 0.05029608, -0.033958822, 0.026545959, -0.020906674, -0.017759265, -0.0066850544, -0.028288212, -0.07017774, 0.02420416, 0.027888453, 0.0420826, 0.017700417, 0.06621025, 0.035962664, -0.027521832, 0.017914293, -0.008565387, -0.0638814, -0.012408041, -0.035414927, -0.050373785, 0.008309253, 0.013929658, -0.0154056605, 0.02084192, -0.032976285, 0.010046722, 0.0074674315, -0.06679989, 0.027929211, -0.018209636, -0.009160739, -0.008139441, -0.06145085, 0.018536786, 0.064348385, -0.035933334, -0.015480698, -0.015673054, -0.041299127, -0.024724286, 0.017181814, -0.035507105, -0.0041670892, -0.010115951, 0.047006592, -0.03905465, -0.011022693, 0.04220111, 0.016270693, -0.020988569, -0.01408659, -0.023914672, 0.0030761804, -0.009918739, 0.037850425, 0.023745552, 0.014583764, 0.0012661248, 0.007438673, 0.020820972, 0.009668865, 0.017385218, 0.02636579, 0.008103475, -0.023097824, 0.0068056104, -0.043061953, -0.02651396, 0.008223049, 0.038170382, 0.021735903, 0.06261147, -0.041615564, -0.034578457, -0.002085449, 0.045210347, -0.024988059, 0.033932734, 0.052001007, 0.021441845, -0.05621228, 0.00782729, 0.0069095977, -0.063284904, 0.024410324, 0.022898423, -0.0030777992, 0.019850714, -0.032772977, -0.054285284, 0.0072314613, -0.04121609, 0.019596847, 0.056040112, 0.00058183074, -0.035190955, -0.008922294, -0.042820457, -0.009885029, 0.008608811, 0.0019368965, 0.02782808, 0.0046901656, -0.021551918, 0.026455302, -0.03965362, 0.01481145, -0.0021025897, -0.0065554525, -0.03378218, -0.01758405, 0.017888106, 0.016371489, 0.004305595, 0.021914164, 0.008187911, -0.0053869933, 0.011400456, -0.01977615, 0.0400231, -0.002281805, 0.016713303, -0.03085398, -0.008610619, 0.0029777167, 0.032113075, 0.02413674, -0.012114269, 0.015141693, -0.026373409, -0.10753071, -0.05030713, 0.062368926, -0.0056150956, -0.02092391, 0.021288436, 0.042525638, 0.016948702, -0.040896893, -0.010213368, 5.294565e-05, 0.028055862, 0.0077053057, 0.026373789, 0.004658836, -0.074719645, -0.043593697, 0.02765515, -0.02810476, -0.05974859, -0.053238943, -0.02531164, 0.014462351, -0.02173895, 0.041140676, -0.050910097, 2.2854238e-06, -0.01890874, -0.00897981, -0.024976633, -0.019020056, -0.017821543, 0.0083425585, 0.009255966, -0.0006159217, -0.0064333784, 0.024234252, -0.00285697, 0.025177943, -0.020031346, 0.036867693, 0.016622648, -0.008641949, -0.008569863, -0.042970534, 0.03357287, 0.009131791, -0.03604113, -0.049511418, -0.069303945, 0.017126203, -0.021105887, 0.019882234, -0.0010794817, -0.018074654, 0.061363623, 0.0060285493, 0.03817724, -0.012365474, 0.028705303, -0.022457048, -0.009880839, -0.015223397, 0.023792213, -0.03938947, -0.0028525896, -0.03671152, 0.00845702, 0.035216857, -0.0007404773, 0.009204925, 0.052331246, 0.0069048363, 0.012619966, 0.005729652, 0.056834295, 0.030268876, -0.0110484995, 0.06745352, -0.017844588, 0.06406957, -0.021148358, -0.07007299, 0.07456651, -0.020649564, -0.04491086, -0.004755181, 0.018148763, 0.01109059, 0.04573552, -0.008916961, -0.0010373918, 0.03743867, 0.014182387, 0.012018282, 0.006753427, -0.04204875, 0.0011889084, 0.01202666, 0.015202638, -0.00935481, -0.055089377, 0.021652102, 0.0033946158, 0.0044982852, -0.009029709, -0.00289068, -0.054213293, 0.06214943, -0.061480943, 0.041344836, 0.0074680024, 0.027406992, -0.05635623, 0.04673082, 0.0005321228, -0.026533388, -0.021664675, 0.05999009, 0.008701655, 0.0046828333, -0.020322558, 0.0022679972, 0.0042089885, -0.04275266, -0.014683847, 0.017235141, 0.030079221, -0.041963045, -0.023773357, 0.041448444, 0.029708602, 0.04079748, 0.013069624, 0.019436385, 0.04109687, -0.04538623, -0.052220978, -0.04096724, 0.013520566, 0.012012186, -0.010807721, -0.01134132, 0.010258695, 0.030881787, 0.051679526, 0.016367061, 0.029276278, 0.042620864, 0.053231325, -0.0037275262, 0.038236186, 0.028699588, -0.019339256, 0.010481714, 0.009329194, -0.04900101, -0.049732912, -0.021728285, 0.020168483, 0.0021079225, 0.037509136, 0.032035165, 0.00465198, 0.0142789455, -0.02018029, -0.0008212289, 0.0028617312, -0.0075289477, -0.0041107154, -0.055292018, -0.043328587, 0.031796336, -0.030093316, -0.05386439, -0.033033896, -0.0016415055, -0.018733237, -0.03773787, -0.026803829, -0.02502158, 0.033170637, 0.0111342035, -0.022282882, -0.01932897, -0.0600716, 0.010414485, 0.0083876, 0.0028710633, -0.032753646, 0.00090892013, -0.002577577, 0.010731969, -0.06107566, -0.029006181, 0.0025116806, 0.0136196725, -0.019122211, -0.013391822, 0.055232976, 0.023097252, 0.018454414, -0.013025487, -0.022016248, 0.03255548, -0.04754205, 0.01895835, 0.017608047, -0.013453621, -0.039300144, -0.010389155, -0.007962987, -0.02664661, 0.0034822237, -0.020761454, 0.056302078, 0.0038132293, 0.014117824, -0.017735269, 0.009920119, -0.03290553, -0.035647087, 0.013044816, 0.0038353219, -0.0879492, -0.045118265, 0.019839382, -0.047015354, -0.054106645, 0.009768282, 0.008357795, -0.04418638, -0.007578465, 0.05428795, -0.013860714, -0.0097060865, 0.0031571223, -0.05020009, -0.002928199, -0.013596057, -0.03481919, 0.012591542, -0.023607474, 0.054551538, 0.006261299, 0.04132884, -0.027113123, 0.00022549514, 0.017996473, -0.017577194, 0.040021576, 0.027799893, -0.0065169334, -0.00820848, 0.0123087205, 0.0038471296, -0.04092089, -0.05265159, -0.02914639, 0.007189181, -0.009693244, 0.023673918, 0.04686947, 0.004349161, -0.0022701875, -0.0016376965, 0.031426385, -0.017557766, -0.033535544, 0.018057894, 0.0057790745, 0.042405274, 0.025800243, 0.0011024312, 0.009958591, 0.011043453, -0.024988823, 0.0098223705, 0.03256881, 0.020035548, 0.016095096, 0.049575407, 0.030745042, 0.0009845891, -0.02022219, 0.0047910097, -0.002902488, -0.05029951, -0.0077988654, 0.044945903, -0.00070419617, -0.024466222, 0.017300086, 0.03735087, 0.04315032, -0.072131015, -0.022074906, -0.043045763, -0.04157338, -0.011431261, 0.018980063, 0.0027030848, 0.01731056, 0.005411121, 0.00546121, 0.04322955, 0.008733461, 0.024822367, 0.02457554, -0.040374294, 0.039194632, -0.05152735, -0.0040192986, 0.013435053, 0.003057516, 0.027860457, 0.018221684, -0.030652914, 0.017434735, -0.00398197, -0.040720917, 0.044463675, 0.02499206, -0.06909179, 0.0024669005, -0.00077323505, 0.025230696, 0.014224476, -0.016194893, 0.038715076, 0.04040172, -0.0026354743, -0.058924317, -0.027172163, -0.036431175, -0.009437466, 0.03622092, -0.0011813259, 0.0011625189, -0.040467996, 0.0070796716, 0.04575004, -0.020804591, -0.05265159, 0.05799529, -0.0016610269, 0.036783133, 0.050844107, -0.020224525, 0.04993003, -0.008016123, -0.045444507, -0.0371747, -0.019394105, -0.012027804, -0.032750692, 0.019221935, 0.0048329094, 0.05818536, 0.032890294, 0.039022274, 0.0028850615, -0.09076941, -0.007812721, -0.015257488, -0.035209425, -0.052317157, -0.030240724, 0.0033896642, 0.00045013326, 0.04158976, -0.023574907, -0.02197454, 0.05687353, 0.0148767745, -0.009068561, -0.0072585056, -0.002533392, -0.045152355, 0.034662258, -0.021348143, 0.052892704, 0.0308197, 0.008644996, -0.029992377, 0.0014430546, -0.02343702, 0.027412895, 0.019336209, 0.042174827, -0.03355459, 0.010192989, -0.015871363, 0.00055202504, 0.0076005575, 0.03469692, -0.040276784, 0.05221241, -0.0016245553, -0.010303452, -0.02755802, 0.026319701, -0.043286685, 0.058829088, 0.018986098, 0.02287328, 0.028007105, -0.02743556, 0.104081236, -0.013052507, 0.015687529, 0.018804561, 0.0020766882, 0.034004055, 0.009790755, -0.0346076, -0.025244791, -0.022953272, -0.018032564, -0.02660157, 0.0015013329, -0.023231901, 0.0023303702, -0.006808277, 0.0527491, -0.031289585, -0.054886732, -0.055405527, 0.053073443, -0.033514977, -0.025046147, -0.0007739968, -0.009711527, -0.039695524, -0.0061687664, 0.00070448185, -0.022679402, -0.003427945, -0.059449583, 0.021739712, 0.0044470537, 0.023288278, -0.00055364385, 0.026281228, 0.025571594, -0.041534718, 0.0064288964, -0.0047851056, -0.003372238, 0.06308912, 0.021893596, 0.019723015, 0.024438798, 0.0062198043, -0.012446417, -0.004394108, -0.013755584, 0.05597155, 0.060743514, 0.030310811, -0.02050902, 0.00945137, 0.046107087, -0.024937019, 0.0038285607, -0.00055307255, -0.010751348, 0.047913145, 0.046654638, -0.040760152, 0.019993266, -0.0069618765], [-0.027671682, -0.082838036, -0.026545389, -0.062187746, -0.00016571346, 0.019728733, -0.00042532256, -0.03516658, 0.025604028, 0.025305849, 0.015089796, 0.032941137, -0.057720236, -0.03683514, -0.048881967, 0.012868508, -0.0050430917, -0.03997279, 0.0069441213, 0.046944182, -0.0008083077, -0.002921544, -0.032162383, 0.012878897, -0.040090192, 0.052388832, 0.015047199, 0.0028488173, -0.0075719105, 0.0025828443, 0.0039407597, -0.052564934, 0.013226931, -0.011721631, 0.024685072, 0.031765036, 0.03366581, 0.004712164, -0.037013844, -0.030756213, -0.04806418, 0.021908496, -0.00018701206, 0.03166452, 0.016714724, 0.039771233, 0.001520727, 0.013611881, -0.022117032, -0.029674659, 0.029847125, -0.0074410024, -0.011189555, 0.015109536, -0.016510047, 0.031181144, 0.04793119, 0.00799009, 0.046910673, -0.008639957, 0.020008473, 0.00064554875, -0.052043382, -0.0025599874, 0.034639828, 0.039630454, 0.0040764734, 0.0075812615, -0.005772374, -0.04044097, -0.011570851, 0.0126483785, -0.023520922, -0.008662684, 0.054595053, 0.001649862, -0.045827303, 0.0056394525, -0.0123768225, -0.045918472, -0.027137527, 0.009751639, 0.01278747, -0.036154367, -0.06406929, 0.0092932, -0.006255553, 0.009456446, 0.048820537, 0.0037184232, -0.025379615, 0.01763835, 0.0010244105, -0.0061760736, -0.015104341, 0.025138445, 0.020571327, 0.068222, 0.029907385, 0.044623155, 0.050383125, -0.029168429, -0.034332555, -0.033236198, -0.0062358133, 0.020446653, 0.03503567, -0.031767633, -0.012598639, -0.01702641, -0.004572185, 0.021688204, -0.0116583835, -0.06285683, 0.0062080217, -0.017510563, 0.028169211, -0.034707878, -0.04896599, -0.028931284, -0.024808189, 0.017778613, 0.010735012, 0.0012828507, -0.022581706, -0.04599666, -0.022512097, 0.016058102, -0.06047139, 0.010870076, 0.025270004, 0.013252403, 0.06695655, -0.00894593, -0.035478268, -0.020949507, -0.03469905, 0.04734522, -0.016331349, 0.032089323, -0.028096484, 0.0063760723, 0.015458754, 0.0048236125, 0.007012952, -0.039599802, -0.0014877848, -0.066007465, -0.0071069775, -0.02363313, -0.008369718, -0.007457625, 0.0023262221, -0.0012789547, -0.0063194493, -0.045909904, 0.0074708723, 0.018723024, -0.010931893, 0.018982762, -0.028474405, -0.025676755, 0.016586931, 0.01491525, -0.027021166, -0.025129225, 0.017238356, -0.021103531, 0.002058691, 0.061975278, 0.06286099, -0.0019541462, 0.018245624, 0.04409329, -0.05971867, -0.020583794, -0.009103332, -0.045144714, 0.019308995, 0.03445178, -0.037489682, 0.024354165, 0.001295578, -0.00037869942, -0.02732454, 0.02419053, -0.022144824, -0.01978224, -0.03939409, 0.027130255, 0.031055432, -0.018328741, 0.01025865, 0.004613224, -0.017669523, 0.04788963, -0.03153231, 0.018613609, 0.033667367, 0.042532776, 0.0015189535, 0.0008883073, 0.0075241188, -0.026632594, -0.020059122, -0.037010726, 0.031649712, -0.0014799926, 0.0681472, -0.02927414, 0.0025428445, 0.04715197, 0.045506526, 0.04341433, 0.035986833, 0.029149985, 0.047012754, -0.045867823, 0.052174285, 0.07449444, -0.044315625, 0.009061124, 0.008260998, -0.061399177, -0.0337773, 0.01941289, -0.015118886, 0.018111339, -0.0057030884, 0.0031355687, 0.09268317, -0.016357321, -0.021268206, -0.05394259, -0.0028532327, -0.02054847, -0.047233015, 0.02372144, -0.017796276, 0.045491725, -0.0154658975, 0.046610225, 0.010701246, -0.029269464, -0.0066091884, 0.015277326, -0.045240294, 0.013436297, -0.010102287, 0.01564252, 0.03266685, -0.028685052, -0.030040111, 0.006456072, -0.023241963, 0.011231633, -0.015799401, 0.015774468, 0.021402491, 0.031698804, -0.010757868, -0.048186775, -0.0038376434, -0.022400409, 0.043727573, 0.019658832, 0.016351672, -0.021395478, 0.0356819, -0.02501715, -0.053017918, -0.050396636, 0.040440317, 0.013802529, -0.0149570685, 0.052729093, 0.05405168, -0.0021672621, 0.05030209, 0.044712506, -0.052818436, -0.030054918, 0.04029902, -0.004264914, 0.0019618897, 0.0007345418, 0.031217508, -0.08241829, -0.024401957, -0.066676036, -0.019780682, 0.015132912, 0.010853582, 0.041232005, 0.0343271, -0.023554688, 0.054665703, 0.012791495, -0.036053848, -0.005541791, 0.03573177, -0.0005225948, -0.024454944, -0.010972933, -0.010933972, -0.003927253, -0.064564876, 0.030014396, 0.04823872, 0.032018542, -0.014473176, -0.005177117, -0.047738984, 0.0072477562, 0.021936255, -0.018464323, 0.031841923, 0.090401635, -0.025201432, -0.018302767, -0.037877087, -0.0073011103, 0.03749488, -0.032251008, 0.024861436, 0.016768228, 0.026005067, 0.013349544, -0.06191346, -0.049103137, 0.027945187, 0.012878897, 0.0013028507, 0.00870223, 0.039383702, 0.039850194, -0.008950216, 0.02588273, 0.036014367, 0.048323918, 0.013803568, -0.04375459, -0.010173456, -0.008413465, 0.046726, -0.08091181, 0.0062337355, -0.059262045, 0.0073423013, -0.0030921926, 0.011385658, -0.028692845, 0.017768743, 0.039048117, -0.031347375, -0.033502173, -0.018959776, -0.019520942, -0.03145543, 0.034111, -0.0058545163, -0.023410145, -0.047784697, 0.060486972, -0.0119229285, -0.01963315, 0.05633427, -0.016917838, 0.023361964, -0.022823785, 0.031511858, 0.02251554, -0.01467207, 0.016899657, -0.02532351, 0.052157667, -0.01683732, -0.005847763, 0.042534854, 6.441526e-05, 0.009407226, -0.03956344, 0.03237075, 0.0147692785, 0.043289136, 0.03441957, 0.025713118, 0.05123208, -0.006487241, 0.036649168, 0.011328775, -0.0022771317, 0.014722005, 0.030973352, 0.028766612, -0.0014055775, 0.03305685, 0.029948944, 0.042701345, 0.031775426, 0.01009034, 0.030900497, -0.021371843, -0.041757714, -0.014213695, -0.050584424, -0.04994053, 0.01874692, -0.01843939, 0.036342677, 0.008386452, -0.0046306266, -0.048731185, 0.031968154, 0.03338529, -0.043066803, -0.03521437, 0.02642896, 0.01432824, -0.00061194506, 0.008203076, 0.05050988, -0.05018988, 0.025140656, 0.0013664867, -0.0082845045, -0.023540663, -0.012107993, -0.05942542, 0.053863887, 0.001733498, 0.025746625, -0.0041545574, 0.086549185, 0.035995666, 0.001954276, -0.015729792, -0.017650302, -0.062661506, -0.018263806, -0.007677105, -0.06624746, 0.013180194, 0.018977309, -0.031658027, -0.0084376205, -0.005400493, 0.033291265, 0.026694931, -0.059752434, -0.016633684, -0.0016898616, -0.02387027, -0.023603, -0.046356656, 0.02005003, 0.04488913, -0.065297335, -0.0395811, -0.029736996, -0.052622076, -0.0060259444, 0.041927584, -0.031486597, 0.009084631, 0.019030554, 0.023024302, -0.06267813, 0.005573998, 0.0368954, 0.012126693, -0.025050005, -0.005011144, -0.050809097, -0.012964092, -0.015943818, 0.027137527, 0.024901824, 0.024372801, 0.02434897, 0.010333455, 0.013446947, -0.0023534948, 0.026491297, 0.02362024, 0.01990068, -0.031372312, -0.0065371105, -0.011657085, -0.024354944, 0.021459619, 0.03845098, 0.0066320207, 0.066019416, -0.02152405, -0.008316322, -0.0058334772, 0.049033266, -0.03374529, 0.013341232, 0.05904698, 0.045262113, -0.06488279, 0.035806574, 0.0015984337, -0.056219984, 0.025714938, 0.02695675, -0.014775772, 0.009619693, -0.049004436, -0.045428347, 0.020683924, -0.026132338, 0.032107893, 0.048621055, 0.011140465, -0.0403011, -0.023402482, -0.0253952, -0.009386967, 0.020042855, -0.038481887, 0.0239604, -0.0064036045, -0.024443256, 0.042024724, -0.035552032, -0.0076731034, -0.013702984, -0.030540109, -0.065856814, -0.055011872, 0.0028592066, 0.015586416, -0.0013171363, 0.041554082, 0.025420133, 0.023588454, 0.010395273, -0.024047675, 0.0029825827, 0.0004171408, 0.0041288105, -0.037411243, -0.0015471353, -0.014303825, 0.023974948, 0.013219545, -0.038715653, -0.0069724326, 0.0053443895, -0.046678208, -0.04241849, 0.07512898, 0.020457042, -0.0074555473, 0.015692908, 0.006360488, 0.0066516553, -0.016999396, 0.0026233636, 0.008726029, 0.0252339, 0.026188573, 0.035890732, -0.013592401, -0.068271875, -0.06492227, 0.02518481, -0.00836879, -0.038999546, -0.071023025, -0.015863298, -0.017727185, -0.0132737, 0.00032675164, -0.046990417, -0.030273356, -0.012838378, -0.014176293, 0.048970148, -0.009004631, -0.02782116, 0.018983802, 0.008665672, 0.014072138, 0.016719138, 0.03714267, -0.011797474, 0.02187002, -0.025916236, 0.040624216, 0.0195812, -0.047173277, -0.0075926897, -0.047163405, 0.0028769989, 0.0018592116, -0.0013854478, -0.03265958, -0.07164562, 0.001105449, 0.026658569, 0.007841, 0.0068664597, -0.008896839, 0.044483937, 0.003929071, 0.02013081, 0.0067700963, 0.019815486, -0.015888752, -0.015685637, -0.00057610107, 0.00030051798, -0.034040187, -0.024968188, -0.020137433, -0.0048701055, 0.005806205, -0.014262787, 0.018938089, 0.020969247, -0.022397812, -0.0034671256, -0.014096163, 0.085325286, 0.019957043, 0.027010515, 0.04067824, 0.013795257, 0.07817935, -0.03262789, -0.046690676, 0.080032855, 0.010638389, -0.0605836, -0.02659961, -0.0037402413, 0.037162412, 0.024943253, 0.033364512, 0.010750856, 0.02302586, 0.0012103836, 0.008832164, 0.004796202, -0.024461696, -0.017071605, 0.036844492, 0.0076903515, 0.026672075, -0.05055144, 0.041670445, -0.014874212, 0.007540742, -0.0066928887, 0.008798918, -0.034055933, 0.02794621, -0.029111024, 0.028994141, 0.034873594, -0.0058804904, -0.0103903385, 0.06842979, 0.017929781, -0.022073658, -0.0065558115, 0.06130411, -0.0201699, 0.032348413, -0.018317053, 0.0049081575, -0.009180214, -0.04678834, -0.020515222, 0.008471646, 0.049092747, -0.035492748, -0.008922813, 0.003883617, 0.0060147755, 0.048078723, 0.025560392, 0.006431137, 0.04215148, -0.033510484, -0.06143138, 0.011185399, 0.023688195, 0.002509598, 0.00025583882, -0.025720393, -0.024829488, 0.033429448, 0.014962263, 0.041816935, 0.021847423, 0.044961855, 0.033191394, 0.010405144, 0.023685597, 0.004872703, -0.055462062, 0.03089543, -0.018473156, -0.036569428, -0.086042166, -0.02158431, 0.006203346, -0.021053402, 0.014331358, 0.01960198, 0.006230619, 0.026217273, -0.032078803, 0.004449848, -0.017057579, 0.009656835, 0.018148223, -0.04478004, -0.01911575, 0.07537833, -0.03199984, -0.03862734, -0.028918298, 0.0048015346, -0.010842543, -0.022267941, -0.012012407, -0.008783333, 0.042435113, 0.007124121, -0.01125501, -0.03805072, -0.034913074, 0.030954652, 0.020766651, -0.0018908997, -0.025558315, 0.0014732395, -0.0041828365, 0.0036921895, -0.04237174, -0.026258765, -0.025544288, 0.00042496543, -0.00043947835, -0.012813443, 0.04367147, 0.031122964, -0.008791125, -0.02739441, -0.039554868, 0.033211265, -0.053653438, 0.0067064604, -0.0041108564, -0.0023635596, -0.05693478, -0.018138092, 0.004235823, -0.012894481, 0.015345379, -0.044227313, 0.023117809, 0.01268247, -0.010136054, -0.003019206, 0.0068412647, -0.036728133, -0.054534797, 0.029080376, 0.0006138931, -0.08370348, -0.043303683, -0.00604023, -0.036803972, -0.03555541, -0.014799926, 0.03590385, -0.028422715, -0.034602426, 0.046162892, -0.0329775, 0.014012397, 0.022419628, -0.060208533, 0.012608704, -0.013510843, -0.03997487, 0.01633966, -0.04985879, 0.061620474, 0.02103574, 0.03295932, -0.024521437, -0.01916049, -0.0047080284, -0.004544913, -0.014859667, 0.021393143, 0.0030754395, 0.003603099, 0.020785352, 0.029299596, -0.05365896, -0.07728169, -0.02619987, 0.016383296, 0.0075184046, 0.0074700927, 0.052118182, 0.025068708, -0.0018612894, 0.0023319365, 0.028617, 0.026387922, 0.014763563, 0.04918911, 0.01350201, 0.016994396, -0.013716295, 0.0043132254, 0.041400313, 0.0031376467, -0.012853961, -0.0053298436, 0.035093334, 0.0046623144, 0.030303746, 0.0612797, 0.025490263, -0.019388476, -0.020768728, -0.0044872505, 0.019348735, -0.048277166, -0.021272622, 0.046813272, 0.016052647, 0.0050160787, 0.024485074, -0.0024114167, 0.011018688, -0.05518544, -0.032447632, -0.03677696, -0.03461931, -0.017408745, -0.01464616, 0.005646206, 0.013353701, -0.011717345, -0.0052404935, 0.039824218, 0.022233397, 0.0033584249, 0.04655613, -0.030282967, 0.033600613, -0.018528739, -0.005695037, 0.02011003, 0.003646216, -0.01593135, 0.013073442, -0.03326529, 0.015606157, 0.005468496, -0.013200973, 0.0038327083, 0.037281893, -0.096489914, 0.0034337493, -0.022479368, -0.0004571406, 0.007163601, -0.024754424, 0.04482575, 0.025715457, -0.006410877, -0.041495897, -0.028564403, -0.032334644, -0.005017118, 0.039629932, -0.009009826, -0.019011853, -0.027268438, 0.005158416, 0.00810074, -0.036747135, -0.06345034, 0.09406499, -0.014994342, 0.037678774, 0.04950417, -0.02976193, 0.048654564, 0.029426869, -0.03531229, -0.023266897, -0.009897093, -0.028257523, -0.04985378, 0.009774497, -0.020838337, 0.056406997, 0.0652298, 0.020101719, 0.0060249055, -0.07680377, -0.0016333684, -0.02697649, -0.06173476, -0.060712427, -0.016592905, -0.0029937513, 0.001262851, 0.010044625, 0.005699842, -0.030005567, 0.04853794, 0.024099622, 0.014454669, -0.007000745, -0.013639673, 0.010303845, 0.012842014, -0.013643568, 0.05583375, 0.00731373, 0.025885586, -0.052558698, -0.0076934686, -0.029250763, 0.0020158342, 0.0034093338, 0.026383245, -0.026022729, 0.033503212, -0.02533559, 0.03880708, 0.0001838952, 0.057022054, -0.02678636, 0.0110783875, -0.0043449136, -0.023378585, -0.00076207414, 0.04037902, -0.008795801, 0.030281927, 0.0017679133, 0.0002425962, 0.031122964, -0.00948307, 0.08623542, 0.013399349, 0.020746715, 0.021884112, -0.0013376557, 0.030827899, 0.022996249, 0.0017340173, -0.015400444, -0.0041745245, -0.020848727, 0.001730381, 0.009807224, -0.041219536, -0.005497115, 0.0031750493, 0.07461989, -0.004058941, -0.046804965, -0.06009321, 0.03791806, -0.016999915, -0.003300503, 0.00568153, 0.0045729643, -0.006969316, 0.009349564, -0.009336057, -0.0044373805, -0.00481608, -0.059590355, 0.003237906, -0.0017906405, 0.03945539, 0.015295899, 0.038127862, 0.0051511433, -0.052351948, -0.017716276, 0.0038116695, 0.028174406, 0.062085923, 0.0154658975, 0.0071937307, 0.018472636, 0.02516585, -0.006168281, -0.0055861413, -0.028462717, 0.050553516, 0.026804022, 0.027081942, -0.055344872, 0.021396518, 0.009828003, -0.034813333, 0.0051542604, -0.010149171, 0.012013966, 0.039698504, 0.012128771, -0.04780444, 0.02761337, 0.00971216], [-0.016896123, -0.06902076, -0.025810285, -0.024789022, 0.011205124, 0.030508304, 0.017210815, -0.0012175135, 0.02891782, 0.027782805, 0.0069347345, 0.016776435, -0.08198091, -0.025597783, -0.026756546, 0.050921187, 0.0045181746, -0.04795053, 0.018445203, 0.026462166, -0.024792148, 0.0054044346, -0.007637584, 0.020475226, -0.019985845, 0.058025014, 0.009240727, 0.001908146, 0.02388745, 0.0086969705, -0.026557792, -0.040540446, 0.008412593, -0.014263907, 0.006069442, 0.015527671, 0.014304533, 0.0037962918, -0.0100919865, -0.030145645, -0.06789575, 0.021132577, -0.026895296, 0.041492958, -0.0008900098, 0.06271069, -0.011093716, 0.037560415, -0.021342736, -0.03379537, 0.0031062842, -0.016872764, -0.04896554, 0.018046448, -0.030123457, 0.029255323, 0.042305466, 0.016801436, -0.00410442, -0.017782072, 0.004637551, 0.0010271989, -0.051175565, 0.003435663, 0.028227812, 0.041824408, 0.00063250697, 0.02183399, 0.0045950506, -0.027915308, -0.028530315, 0.010235738, 0.01547267, -0.022047117, 0.018362077, -0.0022200244, -0.059569407, 0.0012912642, -0.023300257, -0.010061673, -0.0071553914, 0.025195902, -0.0058475644, -0.04053732, -0.04369923, -0.009915109, -0.011157779, -0.0041636396, 0.04264047, 0.061270677, -0.07221486, -0.019202087, 0.03287599, -0.019616466, -0.0027831558, 0.022844939, -0.01402953, 0.04326485, 0.015602047, 0.04417924, 0.039291684, -0.058815647, -0.01642893, -0.01678159, 0.007042265, -0.013727964, 0.030961592, -0.0454455, -0.033071928, -0.02162727, -0.018565204, 0.017630193, -0.0018087699, -0.017402692, 0.010345114, -0.02731249, 0.04882804, -0.028704535, -0.023245256, 0.007355081, -0.004695052, 0.008855996, 0.007001405, -0.0013065183, -0.030462835, -0.008760721, 0.010682617, 0.010501366, -0.049092416, -0.00065000716, 0.01571986, 0.00543756, 0.04759115, -0.025160277, -0.01660864, 0.0029325322, -0.0013439992, 0.032172855, -0.01358015, 0.040577948, -0.04166921, -0.0061888183, 0.03279661, 0.02084773, 0.010560117, -0.0076210215, -0.0011637629, -0.036005396, -0.009020099, -0.012619514, -0.009255102, -0.016259866, 0.040511385, 0.011056372, 0.0048328657, -0.008769003, 0.018072387, 0.0365029, -0.030530335, 0.027155299, -0.0144421905, -0.01226076, 0.017420817, -0.011618956, -0.007135079, -0.05360059, 0.020507727, -0.023065254, -0.0060878797, 0.018447703, 0.07474583, -0.0073716436, 0.017548319, 0.019050835, -0.07115079, 0.0010100697, 0.014140156, -0.030008143, 0.016612839, 0.043781105, 0.014683912, -0.022202745, -0.013050144, 0.0058550644, -0.033120364, 0.016032677, -0.0048253657, -0.013058894, -0.01001261, 0.010718243, 0.040331695, 0.00016750184, -0.005080056, 0.0017320503, -0.051318064, 0.032079104, -0.029050646, -0.01092012, 0.007043828, 0.048840538, 0.015665172, 0.0025225277, 0.011675441, -0.01829614, -0.00097376073, -0.07911087, 0.037373535, -0.0116138775, 0.05744063, -0.0306319, -0.0124901375, 0.016602684, 0.03175941, 0.04738802, 0.0272853, 0.029275982, 0.02623529, -0.033529118, 0.035075385, 0.06366612, -0.045388, 0.0064913216, 0.03736791, -0.040179193, 0.015690407, 0.0035292576, 0.0027159674, 0.0037737915, 0.010161987, 0.0027787806, 0.098841086, 0.0018147075, -0.022955254, -0.04264422, 0.003723791, -0.007355081, -0.032330357, 0.050425556, -0.007526333, 0.03181191, -0.034866948, 0.034780383, 0.060180664, -0.01543517, -0.019880218, 0.018126918, -0.042230465, 0.016997688, -0.045343, 0.018900208, 0.049697578, -0.029657671, -0.0016386118, -0.020780228, -0.007923173, 0.017739259, -0.011652941, 0.00784118, 0.026445292, 0.053082146, 0.003370037, -0.020413663, 0.0013368897, -0.033402868, 0.055735614, 0.026076537, 0.015700173, -0.039462857, 0.0075987554, -0.028849067, -0.032160353, -0.05177807, 0.033771623, 0.033945374, -0.00294347, 0.0010700118, 0.026796311, 0.023063378, 0.042197965, 0.024934728, -0.06652323, -0.01183888, 0.01635393, 0.0043937983, 0.037016656, 0.0133873345, 0.00545006, -0.06807075, -0.00073000806, -0.04443049, 0.008135715, -0.019383533, -0.0022312745, 0.033890374, 0.041778587, -0.027317801, 0.03906793, 0.013393898, -0.0431711, -0.01902021, 0.017003937, -0.024641521, -0.011889975, 0.0024775274, -0.008416264, -0.035167888, -0.045318626, 0.008676345, -0.016645027, -0.01643272, -0.015350794, 0.00022962167, -0.059957456, 0.015071416, 0.0061206925, -0.02909532, 0.025083167, 0.09350103, -0.054285597, -0.023216506, -0.06538822, -0.020056002, -0.010476366, -0.055675615, 0.04275391, 0.041960463, 0.022812752, -0.016853623, -0.061159737, -0.028267363, 0.044741116, 0.04262547, 0.0113963755, -0.008861192, 0.02996783, 0.07450082, -0.034311004, 0.036465403, 0.008624001, 0.047788028, 0.014307502, -0.026533887, -0.01634143, -0.018365826, 0.014785163, -0.07675335, 0.010666133, -0.07554083, 0.0076050838, -0.0059060026, 0.03373162, -0.019636154, 0.025139026, 0.034085374, -0.022733493, -0.02681967, 0.008447593, -0.009363853, -0.007527583, 0.020996481, 0.0050491183, -0.0007406332, -0.016438931, 0.02112539, 0.01278514, -0.018483954, 0.07016827, 0.0005585999, 0.03353537, -0.037632916, 0.0477374, 0.019967876, -0.016883936, 0.01628143, -0.013052644, 0.044040486, -0.031295344, 0.014301407, 0.027942808, 0.000864072, 0.027700149, -0.019696467, 0.025008088, 0.029364074, 0.024145266, 0.04030857, 0.024914024, 0.03083159, -0.020096472, 0.062583186, -0.0071325786, -0.019076772, 0.0105937105, 0.039197933, 0.010130111, -0.017277144, 0.018472703, 0.029451575, 0.017458942, 0.048795536, -0.011675129, 0.026035286, 0.006707027, -0.030386897, -0.011648878, -0.02921123, -0.052040573, 0.041475456, -0.014010155, 0.025650283, 0.038391672, -0.010812619, -0.025897786, 0.022807127, 0.026835453, -0.025316529, -0.052065574, 0.04415611, 0.016632684, 0.011892631, 0.0051388065, 0.07855336, -0.05728563, 0.036730405, 0.017537693, -0.028545314, -0.0019675216, 0.0059481906, -0.024354018, 0.033805996, 0.014282345, 0.035889145, -0.0039322306, 0.096081056, 0.051128063, -0.040942952, -0.017955823, -0.041395456, -0.054828104, 0.009631356, -0.028890885, -0.03844663, 0.0044800495, -0.003375037, -0.008106965, -0.026476542, -0.043935172, 0.025590282, 0.04450674, -0.03131566, 0.006473821, -0.014382346, -0.052995585, -0.022427121, -0.03534289, 0.023340452, 0.04784759, -0.058445644, -0.0043275477, -0.03723166, -0.041192953, -0.015289231, 0.048518036, -0.0127351405, 0.014500863, -0.004897554, 0.004741302, -0.042515468, 0.009362604, 0.04000794, 0.004448174, -0.027444677, -0.015377982, -0.05074306, -0.03585805, -0.012555138, 0.028015621, 0.008697595, -0.0029525326, 0.012460138, -0.010673868, 0.020320224, 0.007628834, 0.0021093981, 0.060892466, 0.015302668, -0.042582344, 0.015927676, -0.015020166, -0.0002531278, 0.051343065, 0.007465082, 0.0073700813, 0.045680504, -0.029337823, -0.021718364, 0.028685316, 0.009715732, -0.04063045, -0.020854916, 0.0486871, 0.0410167, -0.039974384, 0.020706479, 0.01452891, -0.0729608, 0.031555347, 0.02342143, -0.0071325786, 0.0018934583, -0.000820634, -0.038715426, 0.01599674, -0.05441902, 0.045630503, 0.040480446, -0.00036250398, -0.042340465, -0.029662827, -0.03221973, 0.0016425181, -0.0051927133, -0.0226815, 0.03457788, 0.011284539, -0.029380323, 0.04018853, -0.05539186, -0.00012750141, -0.004157546, -0.04724052, -0.041300453, -0.026365291, 0.012410137, -0.0037308615, -0.017508006, 0.009334478, 0.03721541, 0.014435159, -0.025714032, -0.025140276, 0.021600394, 0.019680217, 0.010440115, -0.037430413, -0.017695194, -0.029361574, 0.007982354, 0.014962665, -0.009640106, -0.0010212612, -0.00063125696, -0.07406081, -0.06773324, 0.05512561, -0.00040843224, -0.05067556, 0.015235793, 0.03805542, -0.015286419, -0.039389186, -0.008103839, 0.025774034, 0.045085497, 0.030315334, 0.024030264, 0.012429199, -0.08693596, -0.0655765, 0.062778816, 0.0108037125, -0.03294036, -0.078345865, -0.047243647, 0.04390986, -0.02485121, 0.00018500203, -0.028440783, -0.007893837, -0.013393273, 0.017108314, -0.0029625327, -0.0032547233, -0.020285223, 0.015176417, 0.026056537, 0.016069239, 0.012735297, 0.018022386, 0.00634132, 0.04203046, -0.008051339, 0.029329073, 0.012083883, -0.024748398, -0.025199028, -0.021213358, 0.009846671, -0.007532583, -0.04799803, -0.025183344, -0.06307757, -0.008739783, -0.0085288435, 0.008027901, -0.03472413, -0.011106372, 0.024637146, 0.0036825405, 0.008243216, -0.024062766, 0.0144118, -0.04080045, -0.036657903, -0.021374611, -0.00072500797, -0.027825307, -0.017660975, -0.03822964, 0.0013000143, 0.017147688, -0.0053869733, 0.0076335217, 0.038519174, -0.0033065989, 0.005247558, -0.004708802, 0.06888826, 0.015902676, -0.017712696, 0.035091713, -0.020355849, 0.07516583, -0.040162943, -0.03893418, 0.063408196, -0.0024406519, -0.02008897, 0.0011300124, 0.024922775, 0.01720519, 0.022342121, -0.0033100364, -0.021819303, 0.010726993, 0.011081997, -0.042080462, -0.00772821, -0.04721427, 0.03085284, 0.03524539, -0.013314522, -0.0135413995, -0.050130554, 0.022398371, -0.01725269, -0.009626356, -0.014058436, -0.009272602, -0.028319063, 0.040750448, -0.03455038, 0.051070563, 0.037819166, 0.026011536, 0.0031450347, 0.014466097, -0.009897609, -0.030210333, -0.04342423, 0.02998158, -0.00294847, 0.047613025, -0.013396066, 0.011621065, 0.014996415, -0.029384151, -0.013147645, 0.009141351, 0.02248681, -0.03538039, -0.02628779, 0.0365079, 0.025421843, 0.039531685, 0.013462649, -0.00012500137, 0.024860274, -0.05994066, -0.05167057, -0.0028586253, 0.042759847, -0.006952577, 0.015331106, 0.007973838, -0.027036548, 0.036915407, 0.030557837, 0.07885587, 0.043482978, 0.040439196, 0.0496993, 0.04057295, 0.04903054, 0.024215266, -0.025545593, 0.049245544, -0.02883688, -0.04111795, -0.08854098, -0.012051383, -0.0036550402, 0.0040275445, 0.026460292, 0.025695283, -0.015935175, 0.014133906, -0.055116232, 0.004168796, 0.0075800833, 0.006510072, 0.00071907043, -0.04554925, -0.019683342, 0.020576477, -0.018367702, -0.04093295, -0.044117987, -0.036355402, 0.013318271, 0.014394534, -0.014846413, -0.0004000044, 0.018142074, 0.025829816, 0.0056650625, -0.025921535, -0.06399445, 0.041447956, 0.0153011065, 0.00024875274, -0.039785437, -0.009994133, 0.014192657, 0.005297871, -0.063940704, -0.01799176, -0.030677838, -0.009062599, 0.0204871, -0.0012931393, 0.0499243, 0.011239109, -0.0046119257, -0.01628471, -0.017017687, 0.044202987, -0.038647927, 0.008265638, 0.04027107, -0.0025087777, -0.07631584, 0.006091317, 0.02663123, -0.026243415, 0.009213852, -0.040708728, 0.029434778, 0.0037831666, -0.011913882, 0.035049137, 0.001990022, -0.01686675, -0.003370506, 0.0034181627, -0.020882105, -0.05727063, -0.013891716, -0.0061438177, -0.037209786, -0.04135608, -0.015852675, 0.027595304, -0.0025092463, -0.041470144, 0.076700844, -0.016553933, -0.013488899, 0.037782915, -0.048536785, 0.0019570529, -0.060341913, -0.031124093, 0.03399381, -0.037987918, 0.034342565, 0.013100144, 0.07118078, -0.042012963, -0.041995462, -0.0065863226, -0.0012634514, 0.032431137, -0.026147788, 0.0057788137, -0.019658966, 0.023245256, 0.031182844, -0.04180046, -0.08105558, -0.009784482, -0.0150276655, -0.0058588143, -0.0019381463, 0.030557211, 0.009938234, 0.00024125265, -0.016446432, 0.036827907, 0.0043175477, 0.017127689, 0.011263874, 0.016738309, -0.005912565, -0.008838847, 0.0053250585, 0.011930756, -0.034562882, -0.03945684, 0.00014875164, 0.074050814, 0.028506877, 0.028493127, 0.028513204, 0.03883043, 0.003403475, -0.0007700085, -0.0039575435, 0.018753957, -0.07015077, -0.004389736, 0.055165607, -0.0033812872, -0.01637518, 0.030219084, -0.016642684, 0.036780406, -0.06007691, -0.009131351, -0.04245047, -0.03711541, -0.01457391, -0.009802608, 0.023050254, -0.0025125276, 0.013412648, -0.009448854, 0.034697883, 0.03455538, 0.015032041, 0.036156647, -0.013896403, 0.0385498, -0.015673298, -0.010086986, 0.05544561, -0.019679591, 0.010223863, 0.026696544, -0.027875932, 0.045650505, 0.029487824, -0.017785195, 0.021095233, 0.009437604, -0.06838575, 0.014947977, -0.022452747, 0.007796961, -0.020409599, -0.008130089, 0.043980483, 0.03573039, -0.01995772, -0.059165653, -0.024197767, -0.01822895, -0.0029690757, 0.007873837, 0.0013475148, -0.026043411, -0.014136406, -0.015511421, 0.0011187623, -0.039012812, -0.059610657, 0.062436312, 0.011905131, 0.050335556, 0.049638048, -0.038802303, 0.072880805, 0.034029126, -0.04274047, -0.027895307, -0.017990198, -0.04176171, -0.028964069, 0.02262025, 0.0075414893, 0.025910286, 0.053375587, 0.027880307, 0.01894427, -0.092680864, 0.01600877, -0.033101615, -0.0362579, -0.062250685, -0.028246561, -0.008550094, 0.020549288, 0.020507727, -0.025905285, -0.035610706, 0.049390543, 0.013765152, 0.02138211, -0.016073927, -0.0139201535, -0.01728269, 0.001068293, -0.002329088, 0.0726833, 0.028892819, 0.040775448, -0.023930889, -0.014780163, -0.047910526, -0.0011428251, -0.012010132, 0.029490326, 0.00025109653, 0.021462794, -0.0074138315, 0.01626518, 0.04583113, 0.05898065, -0.033732872, 0.022574468, -0.014091405, -0.031115342, -0.018473953, 0.031237844, -0.036841344, 0.030065877, 0.02364276, 0.008463531, 0.009557293, -0.038640425, 0.08916098, 0.016068926, 0.019581465, 0.020432726, -0.009390104, 0.0039525437, 0.038029168, -0.029207822, -0.0046925517, 0.020500489, -0.011647629, -0.0038562145, 0.012797641, -0.032945365, 0.025540281, 0.01643268, 0.044740494, -0.03265911, -0.03907293, -0.03581852, 0.07833086, -0.02382995, -0.016600808, -0.047483023, -0.0061275675, -0.01870177, -0.013079206, 0.03159285, -0.032850362, -0.010713868, -0.07356581, -0.02756968, -0.0053127734, 0.02186774, 0.033430368, 0.047734275, -0.014322658, -0.026113724, -0.00819009, 0.016786436, -0.0023783855, 0.07532833, -4.6758327e-05, 0.031318, 0.018925833, 0.020817729, 0.011367626, -0.009897296, -0.028832817, 0.02352776, 0.044331737, -0.003447538, -0.010670117, 0.0095418235, -0.0019384589, -0.0023700262, -0.006630073, -0.028652815, -0.018345201, 0.04391361, 0.011900444, -0.059515655, -0.0037048846, 0.013380772], [-0.025480254, -0.1003536, -0.03531043, -0.012997544, -0.005467371, 0.030128079, 0.0089386515, -0.016733103, -0.0008779251, 0.0398593, 0.039275683, 0.017927326, -0.064174406, -0.04375202, -0.025337059, 0.035425488, 0.06003574, -0.062261816, 0.021653296, 0.059292875, 0.012743515, 0.019190125, -0.042185217, -0.03244988, -0.0137016345, -0.00029712304, 0.025601773, 0.015275, 0.0053025675, 0.04707279, 0.0104634, -0.06700494, 0.011572271, -0.011327151, 0.020696688, 0.011238984, 0.025532363, 0.013589549, -0.029690208, -0.021631932, -0.02593589, 0.022044737, -0.004689041, 0.004165767, 0.008770288, 0.032966796, -0.006626542, 0.013620761, -0.011247425, -0.042996656, 0.037558187, -0.011167492, -0.023077317, 0.042420022, 0.001687067, 0.023957018, -0.005213983, -0.016331242, -0.00027044347, -0.032274067, -0.021057514, -0.000895173, -0.0675277, -0.043120462, 0.021449551, 0.014840519, 0.029029317, -0.0072568473, -0.0125556635, -0.035056975, -0.010196395, 0.0052473326, 0.016475478, -0.0097995885, 0.015932715, -0.023182057, -0.048538502, -0.021961467, -0.02033443, -0.01161229, 0.039772592, 0.016393146, -0.0014623748, -0.05377937, -0.024876837, 0.013755828, -0.02736075, -0.05365098, 0.029877799, 0.016917568, -0.028359147, -0.00032713756, 0.023909912, 0.006514821, -0.0026075516, 0.023085346, -0.004305418, 0.018236747, 0.023744829, 0.022183241, 0.045204807, -0.024469765, -0.026334833, -0.036790524, -0.014727964, -0.014519191, 0.04854017, -0.013693714, 0.0044361064, -0.021542098, -0.0061679347, -0.0004996169, 0.03604205, -0.068190314, -0.016640557, -0.013975517, 0.023886567, 0.0054410724, -0.033814292, -0.018378587, 0.0032984721, -0.02516802, 0.017483257, 0.0033557916, 0.01529772, -0.029378705, 0.008010337, -0.009942575, -0.070185184, -0.0012116283, 0.012035742, 0.00025220547, 0.06889294, -0.04663091, -0.022574056, 0.033116765, 0.0052348264, 0.02912702, 0.017610194, 0.027295718, -0.02399412, -0.043752857, 0.027910182, -0.026301902, 0.012514185, -0.055226743, 0.036313415, -0.021001002, -0.013598667, -0.013975152, -0.013903398, 0.01185793, 0.019169282, 0.04489132, 0.016728517, -0.06462546, -0.014795498, 0.032241862, -0.03825519, -0.0015048953, -0.039431803, -0.051258776, 0.0036207116, -0.0048936196, 0.02370523, -0.05249542, 0.019110087, 0.020496422, 0.011718487, 0.011132786, 0.081852965, 0.0010904759, -0.003250741, 0.012265106, -0.0728286, -0.020712528, 0.014821759, 0.010802314, 0.015652996, 0.06834309, -0.008214811, -0.0043954616, -0.021056497, -0.026446555, -0.012129206, 0.017801953, 0.012386414, -0.013865412, 0.014589565, 0.023812156, 0.028385201, -0.025854185, 0.014161858, -0.009265789, -0.019723717, 0.01597117, -0.008633347, 0.014448598, -0.012107947, 0.02439379, 0.025253268, -0.0038893314, 0.025765393, -0.052212782, -0.043381006, -0.026716687, 0.03599832, 0.019917978, 0.077682614, -0.037948374, -0.009776453, 0.02031171, 0.010631815, 0.023618102, 0.02363728, 0.046787653, 0.04809548, -0.008884927, 0.06602385, 0.06472551, -0.027290508, -0.013422124, 0.040692203, -0.016566355, -0.04537593, 0.04999087, -0.0015588147, 0.03317648, 0.027024336, 0.0029141193, 0.053331237, -0.015637571, -0.026963226, -0.060406752, -0.013152306, -0.042105388, -0.026156833, 0.045331117, -0.03155361, 0.01765188, -0.0046389126, 0.006506484, 0.032890927, 0.017891997, -0.03374113, 0.0007143824, 0.005144991, 0.02103852, -0.0043633627, -0.02671971, 0.045244824, -0.030245895, -0.036862224, 0.009567549, 0.018048739, 0.006422276, -0.003053041, -0.011971995, 0.029726062, 0.048387177, 0.020433435, -0.042283807, 0.025112161, -0.018379733, 0.027209008, 0.005842412, 0.005631894, -0.0070869704, -0.011270249, -0.056128792, -0.022087364, -0.053061735, 0.0028201155, 0.0034181136, -0.046426855, 0.009042191, 0.01843205, 0.0055635273, 0.062776856, 0.024910396, -0.067706116, -0.009714704, -0.014991426, -0.0047197854, 0.0013619093, 0.002978734, 0.010824826, -0.055113353, -0.03488356, -0.031368937, -0.017480131, -0.005085379, -0.015155881, 0.0027529998, 0.035095327, -0.014658765, 0.04097651, 0.010156376, -0.05372435, -0.033731125, 0.002768007, 0.025786236, 0.022699326, -0.013043815, -0.006364123, -0.0085301725, -0.025421893, 0.056038387, 0.027700704, -0.0005886444, -0.031752877, -0.007940511, -0.05163167, -0.011535586, 0.043075025, -0.041262273, 0.028278692, 0.032198507, -0.05448221, -0.043676775, -0.01660971, -0.018679043, 0.03698374, -0.016612211, 0.05276576, 0.022445451, 0.017051069, 0.05039982, -0.04491508, -0.031919207, 0.02309827, 0.023644783, -0.0023828205, 0.00457904, 0.018433927, 0.06506317, -0.006630815, 0.013551561, 0.02142475, 0.018837873, -0.012129832, -0.05233868, -0.0153716095, -0.008410739, 0.027316561, -0.057869688, 0.046254896, -0.07026069, -0.010609304, 0.011573103, 0.011010331, -0.037905436, 0.005951423, 0.024242988, -0.024840726, -0.009913133, -0.0040661357, 0.008049731, 0.0015151087, 0.0034942962, -0.03072571, -0.06653472, -0.006137972, 0.05465146, -0.02018665, -0.028222416, 0.044734996, -0.004576741, 0.022725588, -0.03190618, 0.043560255, -0.004961569, -0.031146333, 0.01294877, 0.006597361, 0.043202586, -0.04226505, 0.036987495, 0.014364143, -0.013321659, 0.0386854, -0.011816138, 0.034753494, 0.04133463, 0.03585903, 0.022991652, 0.018731361, 0.043255948, -0.022954032, 0.032165576, 0.013911736, 0.0036834502, 0.004810663, 0.0014893148, 0.03414987, -0.004011578, 0.07291197, 0.013990524, 0.05223821, 0.021161914, 0.011870748, 0.025143841, 0.0054181446, -0.03703022, 0.0242284, -0.041206617, -0.0052191936, -0.028352479, 0.009103575, 0.016699128, 0.031015005, -0.014252734, -0.0026888018, 0.05946546, 0.016024843, -0.030124588, -0.04770956, 0.028712237, 0.04573798, 0.015079411, 0.017000733, -0.009032707, -0.026842996, 0.0067466, 0.026845498, -0.04360778, 0.031948805, -0.0262104, -0.019376883, 0.001921347, -0.01306716, 0.023388745, 0.0030769065, 0.059006903, 0.048404846, -0.011106212, -0.03374384, -0.022935271, -0.062215123, -0.018212153, -0.011837815, -0.02302219, 0.019719549, -0.0064550005, -0.008527775, 0.008085165, -0.027683405, 0.0026333584, 0.00060029066, -0.04325011, 0.020469077, -0.028038576, -0.02351868, 0.018005386, -0.049921673, 0.047382943, 0.06292505, -0.05646859, -0.03049143, -0.040440623, -0.038813796, 0.0098506035, 0.054232508, -0.040093582, 0.008760491, 0.045873046, 0.04361862, -0.03591906, 0.00020551617, 0.05642899, -0.009086067, -0.0265687, -0.03025465, -0.02868931, -0.026214777, 0.018533975, 0.035085324, 0.019285694, -0.022697655, 0.007780434, -0.004586804, 0.046607986, 0.009055739, -0.0025316426, 0.025950065, 0.016544886, -0.027325522, 0.01736445, -0.04244889, -0.018846625, 0.005604797, -0.009716162, 0.026598712, 0.047800645, -0.02092784, -0.031752508, 0.018157542, 0.016983641, -0.0345535, -0.002782389, 0.031985488, 0.052947305, -0.017739005, 0.036621064, -0.030035298, -0.025447322, 0.02371075, 0.024250701, -0.021169834, -0.015146709, -0.008726725, -0.022914428, -0.0071739946, -0.051299006, 0.05111392, 0.0013256419, 0.00039852632, -0.053142402, -0.027502066, -0.03233399, -0.044533413, 0.0011161654, 0.009306799, 0.020273983, -0.021149628, -0.04108604, 0.022467962, -0.045638766, 0.03840151, -0.0041549285, -0.01669225, -0.034578826, -0.005806979, -0.0011250239, -0.022528408, 0.009173192, 0.012461867, 0.024847448, -0.0017208854, -0.002683174, -0.041853182, 0.013575532, 0.030187117, 0.0014457001, -0.05444136, 0.013266424, 0.010916953, 0.0020943475, 0.020080661, -0.04289577, -0.0060692406, 0.0021170669, -0.0830302, -0.03101085, 0.027719256, -0.031278063, -0.021044565, 0.048566017, 0.017605191, 0.03866372, -0.05325162, 0.010466319, -0.0024866208, 0.012148383, 0.008614796, 0.038369674, 0.03470868, -0.0512865, -0.0774575, 0.03461822, 0.0022906926, -0.022795204, -0.035924062, -0.045786127, 0.030800747, -0.043125883, -0.0006461462, -0.018719064, 0.00014507024, -0.0062919008, -0.04734793, -0.008970177, -0.024332408, -0.020010939, 0.025271196, 0.046981916, -0.01488971, 0.011228874, 0.01863569, -0.032499485, 0.050902978, -0.03214374, 0.030803248, 0.004459243, -0.018703848, -0.023175597, -0.03409859, 0.03155799, -0.0010928208, -0.030914137, -0.044516556, -0.029639248, 0.006330149, -0.0007603682, 0.008329242, 0.016824814, -0.003671778, 0.031274308, 0.012914586, 0.0132209845, 0.015074538, 0.0014154771, -0.034790806, -0.030005364, -0.009008529, -0.021771375, -0.030778654, -0.029847786, -0.054582067, 0.029327326, 0.0018179637, 0.0069006854, 0.01962987, 0.008624593, -0.020747546, 0.025555292, 0.026150161, 0.06658723, 0.015200265, -0.016212016, 0.05112038, 0.013372309, 0.027916955, -0.024553139, -0.054575596, 0.04909502, -0.02538771, -0.028089436, -0.04895037, 0.016494028, -0.021328036, 0.0010413375, 0.0124871405, -0.006083988, 0.021638812, 0.012932096, -0.022323309, -0.013509874, -0.032355797, 0.0025720787, 0.043094303, -0.01939439, 0.02126092, -0.08362716, -0.00360091, -0.012394751, 0.013299356, -0.032986388, 0.0008868878, -0.022950279, 0.040930953, -0.03575898, 0.027218178, -0.009101074, 0.07202821, -0.03505239, 0.04391189, -0.021644231, -0.008159785, -0.037835717, 0.024302183, -0.035563886, 0.012160889, -0.021580448, -0.0019225195, -0.025233885, -0.042832404, -0.055140033, -5.378255e-05, -0.01646464, 0.0047706435, -0.045033783, 0.01789283, 0.047114477, 0.0057671675, 0.015972316, -0.0023549944, 0.03469263, -0.059515487, -0.06715752, -0.026167255, 0.03377302, 0.025131127, -0.010132667, -0.0045274007, -0.01318972, 0.053092375, 0.04799599, 0.020915546, 0.01378605, 0.055173382, 0.03450796, 0.0053567607, 0.0147721525, 0.020365069, -0.020934094, 0.029753573, 0.024473518, -0.043992966, -0.051820092, -0.0132355755, 0.034416664, 0.00982976, 0.017627286, 0.013414413, -0.021700507, 0.035517536, -0.0067607732, 0.007784811, 0.01242685, -0.0002000969, 0.020029828, -0.05731275, -0.042682335, 0.022340817, -0.03195214, -0.041535113, -0.03958896, 0.018902486, 0.006816842, -0.04023241, -0.024523543, -0.024340954, 0.007801434, -0.023056997, -0.00583048, -0.012195488, -0.06339319, 0.038733754, 0.020658337, 0.033639833, -0.0020369238, 0.018586082, -0.032948453, 0.010369188, -0.06324312, -0.025538199, 0.022278287, 0.0025595727, 0.002063499, 0.0095596295, 0.07096103, 0.038833804, -0.01788366, -0.008145402, -0.0057543493, 0.043316808, -0.064540625, 0.028597597, -0.034057323, 0.0062413556, -0.045068488, -0.0028263687, 0.013970515, -0.00023709398, 0.005980396, -0.060724407, 0.0073521542, -0.050372723, 0.0018321371, 0.007892989, 0.029057402, 0.00634724, 0.011321315, -0.0054764017, -0.02990698, -0.10797895, -0.03741895, -0.012944601, 0.007188481, -0.0572769, -0.005187512, 0.03176288, 0.013659948, -0.019862952, 0.06765276, -0.034896065, 0.019745395, 0.0018026438, -0.055013306, 0.010051364, -0.02728217, -0.012120791, 0.0061404733, -0.072344095, 0.05941877, 0.046542954, 0.019309143, -0.002672961, -0.022488466, 0.0013523215, -0.031338092, 0.06749435, -0.019393558, 0.02664561, 0.006794957, 0.026376313, 0.029679373, -0.050637852, -0.05752869, -0.013299773, -0.03157279, -0.031070879, 0.034490243, 0.029606003, 0.0439221, -0.00027971878, -0.011820723, 0.008324448, 0.0058913943, -0.0074202595, 0.007986732, 0.014350698, 0.0721416, 0.033256102, 0.024453297, -0.024764283, -0.0046968576, -0.02424799, -0.0010394616, 0.028427098, 0.012864979, -0.019230979, 0.069275215, 0.02155377, -0.006081278, -0.014410728, -0.0054857815, -0.008281927, -0.08362716, 0.0053069154, 0.049914144, 0.002488705, -0.003934822, 0.032533437, 0.010275809, 0.013066327, -0.051014703, 0.028530482, -0.03227229, -0.026387777, 0.020178, -0.0018838288, 0.024596076, -0.0019955495, 0.027355745, -0.0026596212, 0.07357938, 0.013127189, 0.025946729, 0.04700276, -0.0046239058, 0.05720937, -0.0138350325, -0.014766317, 0.009201539, 0.013118644, 0.019140102, 0.016537566, -0.012299289, -0.008170832, 0.0158335, -0.07337897, 0.024357209, 0.031399164, -0.060597677, 0.018942038, -0.0050170124, -0.015084596, 0.016141279, -0.041354086, 0.033358652, -0.0067382627, -0.021495827, -0.048216473, -0.029490111, -0.0058035394, 0.026817152, 0.038283538, 0.0068752826, 0.020935137, -0.00061957084, -0.0023503047, 0.011568935, -0.023602262, -0.04382747, 0.018149491, -0.0012591514, 0.038896125, 0.06789621, -0.04451572, 0.0669149, 0.030239226, -0.03432662, -0.013761246, -0.03099584, 0.0053000925, -0.03922045, 0.0066453535, 0.014788411, 0.045321528, 0.057978075, 0.053748526, 0.041783568, -0.084124066, -0.021337831, -0.048077032, -0.023434889, -0.0346523, 0.0047564697, -0.0029714387, -0.006137972, 0.048761107, -0.053551763, -0.0344867, 0.049240507, 0.01022245, -0.008439346, -0.0275424, -0.0037326408, -0.05044109, -0.011837398, 0.004861104, 0.046013948, 0.023517847, 0.04218459, -0.016251203, -0.02127874, -0.055463523, 0.035269994, 0.012457699, 0.010855673, -0.023287525, 0.030044546, -0.016563905, -0.015541327, 0.034500927, 0.0698063, -0.04078308, 0.057767138, -0.019945491, -0.02942508, -0.05257733, 0.05892744, -0.055018727, -0.004324229, 0.011862827, 0.02277019, 0.009082732, -0.02839875, 0.07120031, 0.040759932, 0.0063076373, 0.026648737, -0.057417803, -0.009877283, 0.03892468, -0.034383316, -0.0016190652, 0.021314487, -0.012951271, -0.0008362643, 0.004662049, -0.020235632, -0.015386618, -0.014219802, 0.050949667, 0.0019205132, -0.03943451, -0.012777646, 0.065374985, -0.0004991479, -0.04044917, -0.012017486, -0.016707465, -0.0452738, 0.03313438, -0.0047043613, -0.029334204, -0.024818683, -0.06519282, -7.587007e-05, -0.001946776, 0.029803598, 0.028852304, 0.025138838, 0.01841225, 0.0029064075, -0.007674237, -0.0012856225, -0.017693568, 0.05083618, 0.05573532, 0.0010325833, -0.024904558, 0.0021610465, 0.016450465, -0.031383112, -0.02587753, 0.03812471, 0.03507261, 0.027051432, -0.00021364512, 0.015635904, 0.01066308, -0.037100464, 0.00060862803, -0.021121893, -0.042237483, 0.054252934, 0.017638957, -0.063925855, 0.0439913, 0.014707121], [0.007640036, -0.080500305, -0.04296238, -0.038627826, 0.03642417, 0.024659652, -0.003912362, -0.00069445575, 0.031999484, 0.040144857, 0.023900796, 0.0060097, -0.050868712, -0.034310818, -0.035021286, 0.0012890707, 0.028767098, -0.045531493, 0.032981325, 0.061223876, 0.005937631, 0.0151436, -0.018665629, 0.010024373, -0.015027061, 0.025617853, 0.013328916, 0.013331131, 0.012677055, 0.013414616, -0.023982234, -0.02847882, 0.012354083, -0.0067591877, 0.01233251, 0.0012972488, 0.009123762, 0.0020438398, -0.04737156, -0.035247207, -0.051407315, 0.036271855, -0.01267058, 0.01946757, -0.0021392507, 0.053044427, -0.009483555, 0.024746204, -0.026921574, -0.045904957, 0.028998809, -0.0120834615, -0.035536505, 0.026282663, 0.017075906, 0.02065695, 0.020871155, -0.00033768677, 0.012731235, -0.009535307, -0.017597642, 0.012420468, -0.079387404, -0.010610554, 0.029799752, 0.044614095, -0.034825012, 0.019186597, -0.011771672, -0.05832696, -0.0011830963, 0.030121932, 0.021474075, -0.004184113, 0.032713704, 0.013671714, -0.07935605, -0.029340245, 0.0039810236, -0.0035544005, 0.009759863, 0.02027671, 0.0058926516, -0.0318809, -0.04552195, 0.020330038, -0.010720108, -0.03187315, 0.0473075, 0.017759735, -0.055337355, -0.0076786256, 0.030123977, -0.01049521, -0.014608275, 0.023116209, 0.011796206, 0.047942664, 0.010670527, 0.022248331, 0.050183456, -0.0323278, -0.013835276, -0.04626479, -0.014500086, 0.032659523, -0.0039966987, -0.018110711, -0.015660692, 0.020844577, -0.0030435259, 0.001125509, 0.010250378, -0.07346919, 0.016148312, -0.0061662337, 0.026905997, 0.0058756135, -0.02812716, -0.0020096793, 0.0014427506, 0.029266983, 0.00051078957, 0.0044783535, -0.028932022, -0.019967478, -0.0012168309, -0.0072754296, -0.06873409, -0.008160707, 0.017118778, -0.0045783645, 0.035734143, -0.011519174, -0.0346376, 0.016018143, -0.0108433105, 0.038798198, -0.0088272635, 0.03235221, -0.017295288, 0.00066291477, 0.017770639, 0.009250011, 0.011929559, -0.022656703, -0.02201728, -0.054029886, -0.008684275, -0.0058793616, -0.022054933, -0.007501349, 0.0065077967, 0.008473178, 0.0069760773, -0.035644185, 0.01341402, 0.018803464, -0.03544382, 0.020393759, -0.0057212524, 0.0026807082, 0.013773259, 0.014880538, -0.009612786, -0.072159335, 0.0033490963, -0.0014366169, -0.014055637, 0.010560294, 0.067660026, -0.013226691, 0.019751439, 0.026238471, -0.06481473, 0.0009645029, -0.007716364, -0.019409046, 0.044917364, 0.026053846, -0.014408082, 0.016257608, -0.019884204, -0.011845276, -0.028007215, 0.044059433, -0.027209854, 0.013672566, 0.011762472, 0.03533512, 0.027549328, -0.01856732, 0.03334103, -0.0061997343, -0.0329018, 0.027785044, -0.037900656, 0.0025727747, 0.006099148, 0.057673093, -0.0068557914, 0.013015934, 0.020943396, -0.015955104, -0.049640298, -0.04975206, 0.049889047, -0.008634013, 0.04771129, -0.01566376, -0.016867813, 0.020624109, 0.039208468, 0.060057305, 0.021787783, 0.03949306, 0.013210643, -0.019928163, 0.04592949, 0.05007987, -0.0057767946, 0.002335397, 0.025690775, -0.038103063, -0.051602356, 0.033997238, -0.016217142, 0.018078338, 0.0011638438, -0.012101181, 0.109499104, -0.017495437, 0.0005990447, -0.05630612, -0.018541764, -0.0198848, -0.03980683, 0.035164405, -0.036232494, 0.029218936, -0.024446107, 0.039899517, 0.007223294, -0.007166729, -0.011314807, -0.0060892664, -0.02392499, 0.018249057, -0.036756404, 0.021622341, 0.040138386, 0.0075854673, -0.034323424, 0.025840024, 0.0041318075, 0.0054350193, -0.009621263, 0.003736746, 0.029732794, 0.019842079, 0.02298519, -0.031937636, -0.0058895415, -0.053463552, 0.03541639, 0.006780911, 0.0091635445, -0.015803725, 0.020834012, -0.048581917, -0.05052694, -0.059091438, 0.049792957, -0.007852783, -0.039122596, 0.02887895, 0.034976307, 0.008265318, 0.050978098, 0.029293219, -0.06858687, -0.025673905, 0.0199869, -0.011743731, 0.009800413, 0.008145671, 0.025175555, -0.070191145, 0.00053762394, -0.03417111, -0.028455649, -0.0050121443, 0.0013858447, 0.0055563278, 0.05361553, -0.016159981, 0.03008445, 0.0011832668, -0.06986811, -0.00068734254, 0.006412556, -0.0049169036, 0.016735088, 0.001751239, -0.020822193, -0.041708235, -0.042932566, 0.046974923, 0.020663636, -0.0036055986, -0.035454046, -0.018193355, -0.06582268, 0.011850815, 0.030071503, -0.010495636, 0.049090322, 0.06785903, -0.03590418, -0.031780038, -0.017659552, 0.0071442393, 0.025424644, -0.039994076, 0.04891347, 0.037154406, 0.009358626, 0.021549936, -0.048853155, -0.017755987, 0.043336526, 0.032828197, -0.015879286, -0.014977481, 0.04167825, 0.024372399, -0.031712953, 0.024722353, 0.012171717, 0.031527713, -0.006872914, -0.068690464, 0.008819724, -0.011869298, 0.04681954, -0.06754962, 0.011266676, -0.052332934, 0.009246007, -0.0013030417, 0.022825038, -0.013789956, 0.01036862, 0.022209637, -0.03103856, -0.007089846, -0.0058173444, -0.014685519, -0.013930005, 0.023905417, 0.0047058067, -0.021234911, -0.06348477, 0.049508084, 0.021132855, -0.019039754, 0.069355614, -0.018629678, 0.025716672, -0.019779041, 0.04913973, 0.010986236, -0.00485199, 0.015929887, 0.009898209, 0.084178396, -0.042775217, -0.016592653, 0.028961325, -0.020904548, 0.010946537, -0.05554692, 0.06330724, 0.030697465, 0.044511955, 0.048899498, 0.051171985, 0.016213054, -0.04600173, 0.027964793, 0.0032668044, 0.032524247, 0.0019920454, 0.054058507, 0.03817837, -0.0026749156, 0.034180306, 0.03491872, 0.03838725, 0.0099970065, 5.043153e-05, 0.048468787, -0.008091108, -0.011956702, -0.0024234394, -0.046282172, -0.015566815, -0.006672636, -0.0068143895, 0.02555243, 0.047411084, 0.00026681004, -0.017496333, 0.030742105, 0.051543746, -0.04382091, -0.028027661, 0.03036012, 0.031507436, 0.025316969, 0.023804704, 0.052584577, -0.044991054, 0.025205541, 0.0016274389, -0.038479682, 0.009046325, -0.034781735, -0.06905984, 0.013981459, 0.04863984, 0.032870024, 0.0035283328, 0.07282585, 0.021635465, -0.036830008, 0.019138593, -0.024402725, -0.0852947, -0.008781901, -0.019375758, -0.038624756, 0.012017696, 0.015096064, -0.001043217, -0.015423336, -0.033447687, 0.0071205567, 0.020962136, -0.05678726, 0.023692936, -0.024934981, -0.017562438, 0.016299605, -0.061133917, 0.014314972, 0.062292475, -0.06868842, -0.020995105, -0.024139924, -0.041879635, -0.020545736, 0.028398827, -0.047417905, 0.00065688766, -0.0066062748, 0.03062284, -0.041712325, 0.003991811, 0.043651894, 0.013209653, -0.014104301, -0.036986753, -0.02437427, -0.007647191, -0.015859693, 0.042263664, 0.011951932, -0.0012670921, -0.0020727187, 0.006818138, 0.028848536, 0.025132278, 0.01139071, 0.037974257, 0.013642068, -0.029642662, 0.012729702, -0.05044567, -0.029109554, 0.01352042, 0.021669712, 0.0073255203, 0.064920366, -0.053447876, -0.03352061, 0.016345266, 0.031158846, -0.04841665, 0.024469344, 0.035242096, 0.049874056, -0.05966731, -0.0053187376, 0.010634407, -0.06000125, 0.036168925, 0.04376366, -0.020617295, 0.0040028533, -0.025615126, -0.060600296, 0.011938642, -0.057217974, 0.024101755, 0.03022484, 0.013602201, -0.026641306, -0.018798692, -0.035442457, -0.027253471, 0.011614925, 0.0056629833, 0.029421175, 0.0048214924, -0.011068697, 0.02280868, -0.025565121, 0.008185412, 0.006092333, -0.022594346, -0.019675622, -0.032533787, 0.030805485, -0.006076429, -0.005110409, 0.015719471, 0.007311208, 0.010480217, 0.004969103, -0.02333898, 0.041632205, -0.0009277016, 0.01448833, -0.055241603, 0.0038609083, -0.0049013994, 0.032684486, 0.011333123, -0.001243069, 0.008446599, -0.027020052, -0.11416607, -0.057941735, 0.05522968, -0.009127595, -0.041048538, 0.0129234195, 0.011093402, 0.0014567641, -0.0457005, 0.01564604, 0.0113900285, 0.024676638, 0.004589269, 0.023676239, 0.009775708, -0.069952615, -0.052024294, 0.015871448, -0.009819155, -0.054783635, -0.06336653, -0.024908403, 0.021579241, -0.030565595, 0.028683698, -0.022479001, -0.0126726255, -0.009534966, -0.013267921, -0.0070165843, -0.02131686, -0.008478632, -0.0059337122, 0.026110582, -0.008926551, -0.0047497638, 0.05267641, -0.01058568, 0.041622277, -0.0025413402, 0.020349462, 0.031040436, -0.0044417228, -0.0020671815, -0.03541247, 0.03216539, 0.013981459, -0.05111303, -0.048839524, -0.055937357, 0.016504398, -0.022346448, 0.02005045, -0.005764869, -0.031449508, 0.056060776, -0.010903432, 0.027978081, -0.016295517, 0.0127445245, -0.03287079, -0.0050946916, 0.009234422, 0.016948912, -0.01770513, -0.0046695163, -0.038482152, -0.011325626, 0.036742773, -0.0008089277, 0.019420227, 0.051990476, -0.014821417, 0.013598793, -0.01231347, 0.063031234, 0.016125139, -0.020870814, 0.07371862, -0.008787949, 0.0655051, -0.019499281, -0.067510776, 0.06714617, -0.016638996, -0.033825923, -0.0063058147, 0.0010011339, 0.012141901, 0.050929025, -0.0017010417, -0.0031161911, 0.019359913, 0.020097218, 0.0060647316, -0.012745887, -0.039069783, 0.0035581698, 0.018298466, 0.017927215, -0.001772749, -0.04851104, 0.015842995, 0.007984538, 0.008685468, -0.023647616, 0.011647979, -0.0452548, 0.045472883, -0.049969465, 0.029146867, 0.02061116, 0.035848636, -0.03686374, 0.046726853, 0.005852272, -0.015328032, -0.023875836, 0.032480627, 1.03077955e-05, 0.005356646, -0.040834542, -0.011487143, 0.0086224275, -0.045276605, -0.021118201, 0.0035683713, 0.038374472, -0.007708527, -0.030054932, 0.03172586, 0.035902474, 0.03003487, 0.001955031, 0.0016078883, 0.030769194, -0.042059213, -0.0464747, -0.028109442, 0.021973835, 0.025620239, -0.01483198, -0.009603117, -0.012772976, 0.032034926, 0.06398261, 0.027074914, 0.04043109, 0.051556055, 0.048553295, 0.0070725107, 0.027347518, 0.047032848, -0.019731676, 0.018266872, 0.0027471553, -0.05704419, -0.045524675, -0.025583437, 0.023828214, -0.002570645, 0.017265642, 0.040785477, -0.0056987624, 0.0141978385, -0.028084908, -0.009030822, -0.0003162193, -0.0077124457, 0.010781102, -0.038694613, -0.037985843, 0.05055692, -0.020815952, -0.0423986, -0.05511212, 0.00941911, -0.022285283, -0.035658497, -0.028084738, -0.017167846, 0.05775705, -0.01195159, -0.013683982, -0.014903198, -0.06690219, 0.025186969, -0.009793939, 0.0012393207, -0.033478357, -0.0062207966, -0.0098968465, 0.0069537577, -0.079730876, -0.022938507, 0.0006273273, -0.014119465, -0.021300847, -0.0135059375, 0.04435657, 0.0059889997, 0.012151272, -0.021236017, -0.005483406, 0.035391346, -0.061368354, 0.012858676, 0.01637184, -0.020733152, -0.03615804, 0.002966771, 0.00664265, -0.03002039, 0.022406591, -0.032368243, 0.02481572, -0.0018212426, 0.0050915396, -0.00717184, 0.024048682, -0.01829131, -0.011257475, 0.02399314, -0.01404518, -0.08595167, -0.03977003, 0.011299729, -0.036774464, -0.04330343, 0.007044313, 0.014736739, -0.03169264, -0.025683703, 0.07444375, -0.016454648, -0.010254297, -0.00493803, -0.04905187, 0.008017079, -0.01844875, -0.03428935, 0.010555608, -0.034118973, 0.056124154, 0.00767607, 0.030843478, -0.034174856, -0.014428187, 0.0033009863, -0.013393489, 0.039210852, -0.0069322903, -0.0080087315, 0.008024575, 0.014255766, 0.011621911, -0.04396266, -0.04876933, -0.013470489, -0.0004882147, 0.00781448, 0.02777312, 0.037403155, 0.016298413, 0.009869586, -0.0017930452, 0.043734014, -0.0033911795, -0.011632645, 0.006946261, 0.008165819, 0.031927243, 0.0056374273, 0.00012164902, 0.0074229757, -0.015114167, -0.025331322, 0.0042001284, 0.044832945, 0.007109823, 0.020233562, 0.05570639, 0.03762601, -0.00032030832, -0.008751914, 0.010574872, -0.0182954, -0.057204343, 0.0024931235, 0.05448965, 0.010936486, -0.0040022354, 0.0317958, 0.026783912, 0.04024436, -0.068319045, -0.016962713, -0.027700538, -0.056033514, -0.005104488, 0.0016631329, -0.006424227, 0.013875825, -0.0014219645, -0.016467597, 0.052945267, 0.025519034, 0.031343874, 0.026396133, -0.03075778, 0.036324073, -0.045547973, -0.0164995, 0.015676027, 0.010537793, 0.015732933, 0.012493389, -0.04031183, 0.029796341, 0.01301159, -0.05240381, 0.038316716, 0.015687954, -0.066605054, -0.005830634, 0.0009652697, 0.014672168, 0.014983616, -0.02363569, 0.050165057, 0.034625333, -0.0058705024, -0.058046006, -0.019999167, -0.02515153, 0.011063246, 0.050463386, 0.021243598, -0.006118805, -0.037454266, -0.029698974, 0.047815904, -0.022660347, -0.032634903, 0.059977397, -0.008759229, 0.059248865, 0.044063527, -0.019505415, 0.07082222, 0.011951334, -0.03618462, -0.037447453, -0.030745512, -0.010660135, -0.031044181, 0.02792816, -0.021410909, 0.057245918, 0.031455982, 0.06141742, 0.017258571, -0.098888725, -0.008831991, -0.017772343, -0.027663056, -0.056175265, -0.029679295, -0.0064600487, 0.008226132, 0.055864163, -0.008113342, -0.019887911, 0.061670944, 0.012124736, -0.005452057, -0.009887305, 0.0010934782, -0.04912269, 0.03566122, -0.0050377003, 0.0467105, 0.02962784, 0.014508605, -0.030738356, -0.020712024, -0.030316163, 0.030471718, 0.005500231, 0.035428148, -0.028450195, 0.029833656, -0.00013970895, 0.0015862078, 0.02849986, 0.047142573, -0.044154845, 0.0447757, -0.00043309777, -0.0038042152, -0.03483251, 0.025877507, -0.027791178, 0.04073002, 0.02490636, 0.012990889, 0.021364566, -0.043531265, 0.09932012, -7.871407e-05, 0.03024256, 0.026957355, 0.012677736, 0.041875035, 0.016335044, -0.02924756, -0.0293221, -0.001507579, -0.0105500715, -0.01844056, -0.00808506, -0.020428345, 0.00013630142, 0.0071140826, 0.050139163, -0.028554127, -0.059278168, -0.049298864, 0.049952257, -0.022598095, -0.034902025, -0.017837085, -0.008998535, -0.030420434, -0.0064170714, 0.0023268356, -0.025752109, -0.008499927, -0.06126749, 0.006419542, -0.00037339138, 0.028193522, 0.008498735, 0.02941589, 0.02714626, -0.012704316, -0.0064375163, -0.0041912687, 0.0068203104, 0.06513198, 0.015712423, 0.007665379, 0.031929802, 0.01576769, 0.013170466, -0.0070934244, -0.015579509, 0.053278867, 0.04778319, 0.025632847, -0.020887172, 0.012200681, 0.018987896, -0.031601656, 0.01690636, -0.012972915, -0.011955509, 0.022740785, 0.039527368, -0.037905235, 0.024820829, 0.019845147], [-0.033255253, -0.06694621, -0.044297207, -0.041548606, 0.029665925, 0.029204877, 0.009055104, -0.019413458, 0.05493884, 0.008316762, 0.010589569, 0.0058617652, -0.036145218, -0.016046407, -0.013769177, 0.012997659, 0.0078014336, -0.05279201, 0.044416547, 0.0721076, -0.025910903, 0.014870147, -0.021088181, 0.033522867, -0.012510484, 0.041318774, 0.022560904, 0.00079833466, 0.030063849, -0.00792658, 0.0014099643, -0.02867554, 0.0027704877, -0.0035964227, 0.023669705, 0.018033534, -0.013872943, -0.0060276436, -0.04571012, -0.027876193, -0.072078116, 0.03226155, -0.013283522, 0.023247639, 0.026553959, 0.059120446, 0.010089147, 0.01892559, -0.012121235, -0.043025106, 0.04278919, -0.008021868, -0.0405878, 0.0056004147, 0.011106095, 0.026864888, 0.027807398, 0.029974448, 0.023448536, 0.0027543146, 0.0033973688, 0.0038296427, -0.09111945, -0.010416411, 0.027835092, 0.016263431, -0.0018204205, 0.017238056, 0.014775688, -0.05442352, -0.026539767, 0.0033087162, 0.010423783, -0.02448251, 0.043457862, 0.017314155, -0.07702054, -0.018922273, -0.002266264, -0.0147086, 0.019273197, 0.013503219, 0.0015185223, -0.06563467, -0.058952358, 0.031962875, -0.05367204, -0.005323583, 0.048224095, -0.004121888, -0.052634243, 0.0064482368, 0.058088318, 0.01077139, -0.00038797056, 0.0291717, -0.009779531, 0.054284178, 0.030674186, 0.016651219, 0.05833455, -0.036634974, -0.008563068, -0.020469364, -0.016675916, 0.017312149, 0.0035409457, -0.038212426, 0.011010255, 0.0025803267, 0.009509979, 0.0006354976, 0.006279225, -0.07285663, 0.042643957, 0.027146144, 0.019890448, -0.02993308, -0.042870283, -0.039566364, 0.0011279715, -0.009207343, -0.0020644458, 0.018576141, -0.027460575, -0.016415117, 0.004475577, -0.007347112, -0.051132124, 0.0136071695, 0.035318773, -0.015072426, 0.03583042, -0.0308972, -0.04104846, 0.030775925, -0.0058055506, 0.048394028, -0.017440429, 0.018131034, -0.016457694, -0.010115249, 0.029683527, 0.002544571, 0.018599732, -0.037621904, -0.009402527, -0.06003167, -0.008287848, -0.015874032, -0.002905448, 0.004609201, 0.0069416324, 0.00073050894, 0.004662282, -0.043846756, -0.008291051, 0.016174316, -0.052221388, 0.0073804716, -0.009717142, 0.033746254, 0.0169568, 0.017365599, -0.0035914464, -0.0533818, 0.018379668, -0.004756648, -0.014446143, 0.035441894, 0.06614244, -0.010042678, 0.010674812, 0.044858247, -0.04521064, -0.013499163, 0.021751048, -0.025517957, 0.021079427, 0.022238914, -0.006420775, 0.0061684726, -0.002157153, -0.013186299, -0.020273143, 0.037818745, -0.03398751, -0.022025853, 0.03617913, 0.02880861, 0.0318334, -0.04474213, 0.029433787, -0.017845148, -0.022074327, 0.03484031, -0.015903108, 0.01223591, -0.0041867644, 0.030190833, 0.0031468929, -0.001185568, 0.014011728, -0.028707242, -0.058476843, -0.04525893, 0.026569348, 0.0065931035, 0.041329786, -0.034657475, -0.004035631, 0.024812423, 0.03205872, 0.06015184, 0.035431575, 0.054244734, 0.02085503, -0.046426717, 0.03806498, 0.055454906, -0.03516027, 0.013668728, 0.026203956, -0.03233039, -0.041020814, 0.00996043, 0.0006063768, 0.012634017, -0.01164225, 0.0021601021, 0.0754517, -0.021667004, -0.0036445274, -0.0565873, -0.018703498, 0.0027683221, -0.033304647, 0.015424824, -0.06625836, 0.03542641, -0.025264347, 0.032604687, 0.034060314, -0.017243955, -0.028135654, 0.0074857124, -0.034588173, -0.0025390415, -0.02249455, -0.0032117695, 0.027793437, 0.021685805, -0.054025017, -0.013097001, -0.0029540593, 0.006414324, -0.02018479, 0.0007958926, 0.020470101, 0.016582655, 0.014743159, -0.051943824, -0.0025791288, -0.032696795, 0.020811902, 0.029057981, 0.037722904, -0.008599676, 0.012389255, -0.05942419, -0.035407245, -0.073387444, 0.039443612, 0.00556982, -0.021509971, 0.03781727, 0.023896405, 0.008784907, 0.05604175, 0.025607163, -0.073621884, -0.028807506, 0.0011534061, 0.004931972, 0.013089941, 0.0023230314, 0.03744165, -0.054610036, -0.0035714488, -0.021692991, -0.011967095, 0.012570983, 0.01620519, 0.027593922, 0.05749263, -0.0030403624, 0.043460075, -0.0005050068, -0.058779843, -0.017559953, 0.025925834, 0.0025633704, 0.0151902, -0.00031406264, -0.0030630322, -0.022572882, -0.038179252, 0.04753349, 0.029559027, -0.008637276, -0.02065441, -0.011944702, -0.07698663, -0.0029635052, 0.04320748, -0.021427771, 0.048744585, 0.064435184, -0.020398842, -0.020237733, -0.008804075, -0.021610698, -0.010487185, -0.06504451, 0.029302929, 0.05388165, 0.015893614, 0.011071076, -0.06455904, -0.029320898, 0.030505108, 0.042697035, -0.009449894, -0.012437912, 0.012524169, 0.025508605, -0.02460277, 0.028814876, 0.0042338553, 0.01828475, 0.022431519, -0.068704516, 0.00037285723, -0.010953118, 0.048078123, -0.069100045, -0.009345391, -0.046612315, -0.012500577, -0.0014779744, 0.033014175, -0.014448724, 0.01121152, 0.032552663, -0.029720755, -0.0050728302, -0.005353441, -0.011656626, -0.014154935, -0.00057578145, 0.011731272, -0.03478391, -0.028474644, 0.029215934, -0.00017251326, -0.04282089, 0.07078574, -0.024990097, 0.038685367, -0.023289291, 0.05836699, 0.013572335, -0.017084988, 0.023381447, 0.00049726584, 0.07146916, -0.055746857, -0.012885968, 0.04002013, 0.009735942, 0.011663077, -0.031908322, 0.06700814, 0.011172078, 0.057107426, 0.055170335, 0.038480047, 0.022320934, -0.02454923, 0.039501116, 0.027013902, 0.02037205, 0.04116211, 0.032581046, 0.019353924, -0.013098624, 0.032955196, 0.040552415, 0.0149735445, 0.03166798, -0.0026957963, 0.027837487, -0.016250806, -0.008807761, 0.017754491, -0.048909727, -0.051877104, 0.00070369197, -0.016508194, 0.019063476, 0.0412837, -0.007982057, -0.050592836, 0.031005574, 0.04301773, -0.0131123, -0.024133613, 0.02155734, 0.0046954574, 0.016151993, 0.046474632, 0.04787649, -0.05067983, 0.027625902, 0.022035623, 0.0058883056, -0.0024184112, -0.022458427, -0.05162054, 0.036993776, 0.017167652, 0.028949054, -0.006256924, 0.07760803, 0.03552451, -0.017694406, 0.017742326, -0.01717908, -0.054966856, -0.014475219, -0.027268894, -0.033272207, 0.00031341755, 0.0021329166, -0.018011788, -0.0131489765, -0.036417075, 0.023900645, 0.01912059, -0.033702753, 0.017616075, -0.025752028, -0.028455844, -0.014259439, -0.06607037, 0.030448595, 0.06438874, -0.05190346, -0.033473473, -0.0062644803, -0.039165676, -0.015120807, 0.03655328, -0.00390832, -0.00038177316, 0.007892851, 0.032374255, -0.043286927, -0.0034502654, 0.010855066, 0.007861795, -0.019595372, -0.021445418, -0.050057326, -0.004978234, 0.008563736, 0.03509023, 0.00041156213, -0.010317644, 0.001451618, 0.010228047, 0.01452724, 0.024877392, 0.012202734, 0.025201084, 0.016218828, -0.030360125, 0.001077102, -0.013299741, -0.009831045, -0.0027351463, 0.0344422, 0.005537427, 0.053044144, -0.023961652, -0.031636097, 0.008499227, 0.040044643, -0.034147676, 0.010505063, 0.032838713, 0.023610175, -0.05058325, 0.011968984, -0.0011792093, -0.06001545, 0.026732186, 0.06794811, -0.01644258, 0.029877052, -0.04390389, -0.060148153, 0.007289055, -0.03182575, 0.05262245, 0.050992552, 0.0033446562, -0.040634803, -0.022650108, -0.03227915, -0.02393069, 0.006074239, 0.0025676093, 0.025275039, 0.010569847, -0.028257526, 0.034267478, -0.022627624, 0.01836559, 0.018112788, 0.00572722, -0.019130174, -0.046612866, 0.015145412, 0.017894935, -0.01124852, 0.027138771, 0.016027607, 0.028075429, -0.015176008, -0.014718991, 0.022819672, -0.00034981858, -0.0015050677, -0.0327355, -0.018580563, 0.00072838936, 0.022068428, 0.039019886, -0.0124733, 0.012621829, 0.004711861, -0.1099481, -0.06390659, 0.07165346, -0.01761165, -0.022139942, 0.027391275, 0.042833425, 0.03274877, -0.02349535, -0.01420516, 0.008086007, 0.016401663, -0.013375307, 0.036289714, 0.021648942, -0.07490781, -0.058259353, 0.015226877, -0.036162175, -0.04939658, -0.07502263, -0.030482322, 0.008522634, -0.036384083, 0.03300754, -0.04171163, -0.0014833192, -0.019747334, 0.012479567, -0.001077655, -0.005941018, -0.019049354, 0.020052826, 0.045699064, 0.0016882939, -0.005237326, 0.028184172, -0.0027790118, 0.041482806, -0.006986603, 0.03584227, 0.001095533, -0.023693666, -0.00841334, -0.04621955, 0.02903826, 0.016022354, -0.043730274, -0.032518383, -0.06573198, 0.002585856, -0.0153284315, 0.026387343, -0.010684764, -0.028861323, 0.0595215, -0.020070702, 0.0072234403, -0.008692199, 0.018199874, -0.025015716, -0.008457205, -0.014498487, 0.0041704993, -0.038202014, 0.0029994457, -0.030646909, -0.01584468, 0.017513415, -0.00083554204, 0.021674378, 0.04318951, -0.027384086, 0.03305288, 0.012060078, 0.04255843, 0.021919047, 0.0113672605, 0.049218256, -0.003941265, 0.0748339, -0.013996062, -0.07009863, 0.069248594, 0.00112834, -0.034125928, -0.0051805587, 0.018793257, 0.01465727, 0.04506725, 0.017919263, 0.005838911, 0.013495846, 0.008850889, 0.013843822, -0.0057662935, -0.032582894, 0.010899301, 0.030519366, 0.0051665516, -0.0075125294, -0.056653656, 0.04495372, 0.019202791, 0.002845363, -0.031434648, 0.0037645355, -0.040625032, 0.04803684, -0.057112217, 0.014978797, 0.02865545, 0.024786068, -0.009122192, 0.06281842, 0.01344576, -0.020165622, -0.026451759, 0.05438002, 0.0012932967, 0.010169436, -0.016323147, 0.0042956914, 0.02472248, -0.049598306, -0.038266983, -0.013415119, 0.029579207, -0.011278056, -0.03403893, 0.019546345, -0.0012538545, 0.03850069, -0.007310573, -0.015478274, 0.034142144, -0.05804703, -0.04010034, -0.046197157, 0.033071782, 0.01587159, -0.0011941154, 0.0016534366, 0.0060549215, 0.05349976, 0.043489933, 0.037696917, 0.03422656, 0.04969562, 0.05904806, 0.017823791, 0.026363382, 0.021240883, -0.029354535, 0.03554363, -0.009034829, -0.044998687, -0.06026759, -0.011463655, 0.0217575, -0.0104835, 0.03786611, 0.016324254, -0.007841429, 0.028206475, -0.04528584, -0.0018808739, 0.0028734242, 0.010531512, 0.006780719, -0.0605787, -0.034853946, 0.04091661, -0.02453301, -0.02894758, -0.041509166, -0.0057775364, -0.022798294, -0.013637027, -0.029263854, 0.0021508867, 0.03046555, 0.010827788, 0.009968908, -0.002189223, -0.054657035, 0.007860413, 0.008544199, 0.0013885845, -0.024481218, 0.01068822, -0.0044718906, 0.001943539, -0.06431501, -0.021840625, -0.022957535, 0.015521035, -0.016475756, 0.015274061, 0.036915995, 0.012021282, 0.042851485, -0.006867355, -0.032231968, 0.049537115, -0.044708308, 0.026982477, 0.0064725652, -0.016528836, -0.07398493, -0.0020821854, 0.012030957, -0.00722639, -0.006674752, -0.04019928, 0.020778634, -0.015390729, 0.015556421, -0.0067062695, 0.0072218743, -0.021944573, -0.011453057, 0.007610305, -0.011765921, -0.09821903, -0.03851543, 0.019560352, -0.054425728, -0.054459643, -0.024717689, 0.0065518185, -0.017621052, -0.020126319, 0.05090837, -0.0035955012, -0.0026434525, 0.0076573933, -0.04386334, -0.002463567, -0.023828212, -0.03587281, 0.013913859, -0.039915442, 0.04117907, 3.87049e-06, 0.04909869, -0.029941374, -0.0058440715, 0.0073694247, -0.010599245, 0.043219738, 0.03257773, 0.008543923, -0.009250287, -0.013859119, 0.020602804, -0.02856643, -0.047961637, -0.02327676, 0.016988134, 0.010314396, -0.008223133, 0.025236335, 0.002049148, 0.0016396134, 0.0077295536, 0.02905706, -0.0076731546, 0.0059037874, 0.031126114, 0.005137062, 0.003033727, -0.004092398, 0.01654948, 0.027128818, 0.025897633, -0.026957596, 0.013514253, 0.053970113, 0.008511024, 0.012064871, 0.06059787, 0.029830052, -0.0074165044, -0.0008037718, -0.0020679478, -0.0017568339, -0.053533852, -0.023917234, 0.03839075, 0.004659333, 0.005392883, 0.004194874, 0.008902496, 0.03136719, -0.078108706, -0.009620841, -0.057298, -0.03910006, 0.0012805793, -0.024875088, -0.0040192273, 0.02472248, 0.0003175645, -0.016345633, 0.03176161, 0.029656801, 0.0021394596, 0.0018298203, -0.04814595, 0.042830843, -0.048082545, 0.0105371475, 0.025092939, 0.009206606, 0.010585468, 0.034049254, -0.026180547, 0.007359737, 0.030161807, -0.047072902, 0.026623074, 0.022342682, -0.051706802, -0.012577434, -0.03263323, -0.007315042, 0.030234057, -0.040723454, 0.061118357, 0.031236697, -0.0141671, -0.03563892, -0.008440502, -0.03169821, 0.00889494, 0.043993097, -0.0070570093, -0.003822662, -0.01694132, 0.011133741, 0.05632485, -0.044930864, -0.050146807, 0.08609371, 0.009580016, 0.044409636, 0.037975315, -0.046633877, 0.07643075, 0.022675911, -0.024171026, -0.055440165, 0.00066692237, -0.0320425, -0.04904685, 0.009065425, -0.02737973, 0.03794739, 0.039732423, 0.030178996, 0.013901327, -0.07096194, -0.025571039, -0.012646366, -0.024681564, -0.041614037, -0.016008347, -0.008403387, 0.01256868, 0.019277805, 0.0008091168, -0.036618706, 0.07596925, -0.011204885, 0.008779009, 0.01140926, -0.0025681623, -0.035621043, 0.0366082, -0.030502781, 0.07489288, 0.009083948, 0.032225702, -0.008353439, 0.008704548, -0.0324642, 0.02518915, 0.0030093985, 0.020711914, -0.018667558, 0.015869746, -0.043037914, 0.0078757275, 0.005996864, 0.06861273, -0.0246377, 0.030429771, 0.007902158, -0.040613607, -0.029391028, 0.045138948, -0.040707603, 0.037814286, 0.008797762, 0.03491993, 0.011810893, -0.029366147, 0.08070378, 0.033310913, 0.015940338, 0.009127583, 0.018194115, 0.037044644, 0.02998137, -0.04929456, -0.0077577066, 0.0026363567, 0.004638506, 0.004676658, 0.0010196437, -0.0024704786, 0.00068286504, -0.005629121, 0.03896441, -0.0030363996, -0.034172375, -0.05260402, 0.05755032, -0.01402813, -0.026996853, -0.026497744, 0.023846552, -0.016261956, 0.003286599, -0.007046504, -0.022149974, -0.010348585, -0.06321358, 0.0008358415, -0.0014817526, 0.0066712503, 0.000756629, 0.035548795, 0.037554078, -0.022175374, -0.019545376, -0.0038011898, 0.013016089, 0.052505594, 0.0041568372, 0.025920857, 0.04185198, 0.0041237306, 0.024399938, -0.002045554, -0.050901737, 0.05570999, 0.043449845, 0.0144150425, -0.0077395057, 0.011993405, 0.0070310677, -0.0065348623, 0.0083639445, 0.009166058, 0.0007124467, 0.04331558, 0.044705637, -0.052432053, 0.011086743, 0.002244147], [-0.015770035, -0.09401073, -0.06199111, -0.027973864, -0.017026667, 0.01544319, 0.011273817, -0.019399628, 0.037292473, 0.016483052, -0.0033961304, 0.006207367, -0.06853254, -0.0085246125, -0.02785612, 0.020047005, -0.0031994365, -0.0458243, 0.029681856, 0.054652076, -0.03593366, 0.021094084, -0.043740068, 0.027957626, -0.033854835, 0.056422323, -0.00033677093, 0.0028024393, 0.019203836, 0.006514363, 0.015870865, -0.035069287, -0.005945935, 0.01319384, 0.023347043, 0.0024489763, 0.0016411097, -0.016918397, -0.043980073, -0.053239126, -0.07456193, 0.011049153, 0.005904431, -0.000122031524, 0.0068671494, 0.057788353, 0.033778187, 0.020987619, -0.027832324, -0.04459722, 0.059141755, 0.0019626548, -0.040569503, 0.0036429001, 0.030119454, 0.021547247, 0.019652713, 0.028384848, 0.040746346, -0.0095092105, 0.01735374, -0.018342229, -0.052987397, 0.0037285874, 0.027767472, 0.031024428, -0.015811428, 0.0012460299, -0.0018509993, -0.043906085, -0.023102403, 0.015767723, -0.0055539003, -0.030031936, 0.040885296, 0.0026323618, -0.055659905, 0.007536856, -0.016540347, -0.046685968, 0.0018875411, 0.029698998, 0.01146149, -0.04766222, -0.051329028, 0.013781893, -0.029278543, 0.025033379, 0.06549732, 0.01807104, -0.044306688, 0.015381837, 0.016715385, 0.012504509, 0.013656477, 0.018243825, -0.0041179433, 0.048628543, 0.010863738, 0.04313284, 0.03826692, -0.032726962, -0.032393165, -0.014877695, -0.006464287, 0.021986425, 0.027017463, -0.0014183626, -0.00044391502, -0.01472273, 0.007720242, -0.0021451383, 0.007159032, -0.0771255, 0.027216863, -0.0063569173, 0.035199214, -0.04093041, -0.052273702, -0.019899258, -0.012530674, -0.010298017, 0.017585283, 0.026117, -0.021323035, -0.03346686, -0.022939952, -0.020580696, -0.05353146, -0.0011653898, 0.027225662, 0.003364551, 0.04183871, 0.0064097, -0.046223108, 0.009716506, -0.013641365, 0.035708092, -0.050056722, 0.014703332, -0.0523522, -0.0057603787, 0.04419481, 0.005152843, 0.014378967, -0.066149205, -0.0059260847, -0.049613822, -0.030701416, -0.02108898, 0.020577086, -0.00068572245, 0.023105236, -0.024748938, -0.004837501, -0.038460456, -0.006227668, 0.03132398, -0.017256746, 0.032380532, -0.019228086, 0.018310592, 0.031616315, 0.019200226, -0.013887905, -0.036433205, 0.019039173, -0.00064557156, -0.02343276, 0.055012982, 0.05210408, -0.0037687663, -0.020963708, 0.050362702, -0.05778136, -0.028210992, 0.0037905334, -0.029283391, 0.008936046, 0.02188898, -0.004486294, -0.01272579, 0.0018049837, 0.008054982, -0.038421206, 0.037878945, -0.0255991, -0.024335926, -0.0019398726, 0.038169473, 0.025761057, -0.01308602, 0.02113965, -0.0058033774, -0.026875354, 0.030497503, -0.0255603, 0.021871388, 0.02024776, 0.042454787, 0.005084722, -0.01318211, 0.0066722594, -0.025313757, -0.06820163, -0.030749688, 0.013339218, 0.006583386, 0.04767846, -0.042332534, 0.0031962784, 0.051179253, 0.03671818, 0.051767305, 0.022327483, 0.039022118, 0.031147135, -0.038985122, 0.0454255, 0.054480646, -0.037087657, 0.021521984, 0.037806764, -0.03993882, -0.047402363, 0.005372996, -0.022179285, 0.015568606, 0.024677886, -0.0019177671, 0.05404908, 0.0060216123, -0.030777207, -0.04524189, -0.016626963, -0.008893188, -0.018490426, 0.031180521, -0.053346496, 0.044081125, -0.027875518, 0.05441929, 0.029388167, -0.021830447, -0.023339827, 0.016653975, -0.056687586, -0.016475383, -0.008857887, -0.0021374125, 0.069589995, -0.02243395, -0.02106995, -0.003737187, -0.041667562, 0.026643924, -0.0071829422, -0.016876243, -0.018326834, 0.019914372, 0.0047269734, -0.045073166, -0.013840723, -0.011535024, 0.04878464, 0.01471867, 0.039452497, -0.013840709, 0.008424009, -0.019090151, -0.030078063, -0.060274098, 0.019974371, 0.00065095694, -0.012269017, 0.047747824, 0.044203833, 0.014578143, 0.06300345, 0.010738323, -0.06834961, -0.026273094, 0.02992685, 0.004908329, -0.0048564486, -0.00049444195, 0.018814057, -0.036350504, -0.0438321, -0.02366402, -0.026390387, 0.005525028, 0.017218174, 0.042215575, 0.038070858, -0.01927241, 0.03755007, 0.02350404, -0.041486204, -0.02381983, 0.020329863, 0.021068878, -0.0083847605, -0.020199938, -0.017479604, -0.032883324, -0.051310983, 0.02121138, 0.025494888, 0.004161252, -0.017964123, -0.01689152, -0.059778754, -0.014134002, 0.027023777, -0.032498617, 0.0628266, 0.080931485, -0.014927094, -0.02246887, -0.023290427, -0.053311307, -0.0093059745, -0.050156984, 0.0026190535, 0.052756414, 0.015732817, 0.01482356, -0.04795997, -0.061881036, 0.03806481, 0.047605377, 0.034278, 0.0024198783, 0.026730767, 0.047398753, -0.014150694, 0.011129963, 0.03214843, 0.017914554, 0.02409017, -0.058217835, -0.022359062, -0.017698856, 0.04646897, -0.07999222, -0.01260466, -0.056348335, -0.009367329, 0.005629014, 0.016816553, -0.02131435, 0.004663815, 0.028572857, -0.036970362, -0.01797089, -0.0045424597, 0.009567632, -0.01307632, -0.002619279, -0.02224718, -0.02347584, -0.051857527, 0.024086677, -0.0035531248, -0.004348698, 0.066101834, -0.02885222, 0.038475342, -0.009154055, 0.058640093, -0.0058845812, -0.006792486, 0.019887755, -0.0012985868, 0.054146804, -0.039032042, -0.0045383996, 0.03384401, 0.006441392, 0.010529673, -0.020573929, 0.018525332, 0.025241802, 0.06085606, 0.04433466, 0.026143309, 0.045775577, -0.033611223, 0.036346897, 0.0090971, -0.009856357, 0.024780573, 0.019472713, 0.0069754208, -0.022967188, 0.03645156, 0.052741077, 0.017507575, 0.022592748, -0.011369909, 0.021201003, -0.014044226, -0.029614184, -0.015230255, -0.046390925, -0.050481804, 0.016014325, -0.0115851, 0.0037166604, 0.026915507, -0.019059023, -0.024439689, 0.02084596, 0.02905117, 0.0009198605, -0.017335694, 0.026014142, -0.00827159, 0.022784932, 0.01792307, 0.055651788, -0.03788977, 0.018186305, 0.00088100665, -0.00046917849, -0.019107746, -0.018772101, -0.034139726, 0.047045518, 0.0052164523, -0.0011140733, 0.0034063938, 0.083499335, 0.04396834, -0.021449013, -0.0048724636, -0.0072573796, -0.081366375, -0.02944676, -0.016894937, -0.034108374, -0.007108054, 0.0049525397, -0.014726565, -0.015764961, -0.033656847, 0.028467404, 0.047586426, -0.040215816, -0.006960985, -0.014042648, -0.02183349, -0.039327983, -0.03202865, 0.038914748, 0.06552619, -0.06289157, -0.028511615, -0.024473071, -0.05615052, 0.0044635115, 0.047341913, -0.017512988, -0.006371805, 0.0128067685, 0.025470978, -0.044465486, -0.009025863, 0.032997683, -0.017215468, -0.031919025, -0.012346612, -0.067945726, 0.005638262, -0.023781937, 0.030034643, 0.0066478983, 0.012770678, 0.027516982, 0.019901287, 0.017606825, 0.013230043, 0.0054357033, 0.021292526, 0.021907026, -0.008327918, 0.0073300116, 0.0026851445, -0.012274431, 0.025415039, 0.013469032, -0.017129075, 0.07494404, 0.0069932407, -0.024050811, 0.0066410187, 0.043257806, -0.043344878, 0.011779454, 0.05722173, 0.02225124, -0.04465316, 0.027325813, 0.0059865373, -0.06185216, 0.0041811024, 0.033957247, -0.050508868, 0.008049569, -0.0356923, -0.051672794, -0.003930272, -0.042617988, 0.0513385, 0.050401162, 0.0009915907, -0.049886305, -0.014168288, -0.01801916, -0.031144429, -0.0066257925, -0.007291214, 0.05154918, 0.024653524, -0.021921463, 0.052239414, -0.046466265, 0.01647572, -0.016894033, -0.015310782, -0.033306938, -0.028736278, 0.007541142, 0.0045221588, 0.00036812466, 0.030419232, 0.0336807, 0.0132100815, -0.027326489, -0.029568622, 0.023294795, 0.0024893528, 0.005572397, -0.05293055, -0.016520947, 0.0037728264, 0.0008383182, 0.029335385, -0.033697844, -0.014862835, -0.00690324, -0.08147825, -0.07465712, 0.065387465, 0.0058394675, 0.0028287177, 0.040829357, 0.06223292, 0.008431679, -0.029490123, 0.009218906, -0.0027929654, 0.001026328, 0.001648215, 0.048576217, -0.019804746, -0.057619628, -0.06186976, 0.03222264, -0.040932328, -0.020617686, -0.06310812, -0.026868815, 0.0012126459, -0.006489776, -0.013708131, -0.030556602, 0.006820908, -0.028088452, 0.012041871, 0.012618194, 0.007542495, -0.010795842, 0.022006951, 0.047413193, 0.006764291, 0.023256365, 0.017552124, -0.008500589, 0.05591164, -0.0031890604, 0.046156336, 0.023456216, -0.040583037, -0.010645164, 0.0007827161, 0.0067131505, 0.020974759, -0.04189403, -0.027138365, -0.10250377, 6.406091e-05, 0.017125016, 0.018311495, 0.0066257925, -0.014525585, 0.033589568, -0.020680396, -0.0067904564, -0.018047795, 0.015958384, -0.043993603, -0.012242401, -0.019112708, 0.0024773977, -0.05826137, -0.019180378, -0.043797813, 0.0004677123, 0.013010229, 0.018595934, -0.010981709, 0.019436847, -0.015435296, 0.013436099, -0.017774422, 0.08421393, 0.035652153, 0.018160816, 0.031443983, 0.003851042, 0.08025118, -0.02380765, -0.06762125, 0.08150082, 0.015952239, -0.024772428, -0.034199502, -0.0039577913, 0.03252005, 0.031091196, 0.033368062, 0.014082572, 0.00012947521, 0.008643712, -0.0020544603, -0.00300762, -0.022011688, 0.0061060875, 0.07590045, -0.004101703, 0.010361627, -0.050238192, 0.025522407, 0.011153817, 0.040960677, 0.0003360942, -0.0019405492, -0.035316847, 0.022839969, -0.050203905, 0.032607, 0.0269922, 0.01664749, 0.011373292, 0.03890843, -0.014369607, -0.011427767, -0.04483722, 0.05377327, -0.003953731, 0.034764323, -0.033405058, -0.017012456, 0.01110735, -0.026129633, -0.04775479, 0.004814493, 0.049631864, 0.0025150673, -0.029414559, 0.00943827, -0.02495759, 0.06390391, 0.030379308, 0.015282587, 0.02328501, -0.056893308, -0.04324923, -0.017462913, 0.04030604, 0.008614387, -0.037743606, -0.013176021, -0.015209982, 0.048870124, 0.0113982735, 0.0556572, 0.02590226, 0.046614684, 0.06707087, 0.0025146727, 0.02681716, 0.019696023, -0.043915894, 0.0148172425, -0.0032830087, -0.06805975, -0.077515505, -0.010579072, 0.012910529, 0.010599599, 0.04612746, 0.01988956, 0.010800127, 0.016579172, -0.055897202, 0.008345343, 0.00988523, -0.032954827, 0.0102506485, -0.04673424, -0.009677708, 0.03809639, -0.049168102, -0.034621086, -0.045527004, -0.004806147, 0.027208518, -0.007232003, -0.02400705, 0.0070844823, 0.030602394, 0.019009003, -0.010449147, -0.022009265, -0.038248874, 0.030173365, 0.008130322, 0.0048695314, -0.030581415, 0.026415199, -0.004190576, 0.01653606, -0.05676338, -0.032633167, -0.047231838, 0.0059838304, -0.012734587, -0.0023206288, 0.034241907, 0.021482961, -0.01409949, -0.010061172, -0.04055597, 0.03414717, -0.03338281, 0.003421394, -0.019434365, -0.0085128825, -0.066580035, -0.01776382, 0.019719932, -0.03082277, 0.008497545, -0.015067847, 0.003278836, -0.012391726, 0.0049877283, -0.0029720655, 0.00092685304, -0.019775873, -0.0074482085, 0.041080184, 0.009639363, -0.072621614, -0.03555922, 0.006205393, -0.038675644, -0.04826403, -0.013621965, 0.019598126, -0.014254905, -0.0365847, 0.03161135, -0.0017179151, -0.0016488917, 0.010569205, -0.0687157, 0.003477109, -0.025543047, -0.06428467, 0.020566935, -0.051546473, 0.034378152, 0.003224587, 0.057872035, -0.031769503, -0.032476176, 0.0064460165, -0.0016861103, 0.017758857, 0.022605944, 0.023118319, -0.0078000925, -0.0070859483, 0.0064676707, -0.05526965, -0.048895616, -0.0045848666, -0.008427618, -0.0031025554, -0.023255011, 0.015011005, 0.048190046, -0.0019574668, 0.0084580695, -0.0067827874, -0.0011375323, 0.004573588, 0.04687815, 0.008578748, -0.027440064, -0.02935501, 0.03418687, 0.014240018, -0.006942122, -0.037940975, -0.004265915, 0.04025461, 0.025224209, 0.0058489414, 0.053270258, 0.015310332, -0.026649563, -0.016043648, -0.013305271, 0.022248084, -0.08007072, -0.0189503, 0.053919435, 0.0053044236, 0.006759779, -0.024037728, -0.03491049, -0.010593509, -0.052679382, -0.020768365, -0.045113318, -0.022985121, 0.006515716, -0.008338746, -0.007183393, 0.009562219, 0.001892278, -0.013206472, 0.034203112, 0.021736046, 0.030260209, 0.021449126, -0.03503861, 0.04145914, -0.021983605, -0.008306377, 0.045156628, -0.014796266, -0.022530716, 0.00059834355, -0.04001055, 0.03381965, 0.017141594, -0.03457166, 0.022597259, 0.039024822, -0.0586834, -0.015869737, -0.0460228, -0.011382541, 0.020702953, -0.028952373, 0.036237724, 0.019844672, -0.018847667, -0.021068595, -0.021747326, -0.013564672, 0.006059621, 0.03536433, 0.00717798, -0.014622453, -0.017801715, 0.010798506, 0.014974012, -0.048036657, -0.042215236, 0.06303864, -0.008884616, 0.045472868, 0.035400644, -0.040828906, 0.042254936, 0.025813974, -0.012367365, -0.017667277, -0.0020824305, -0.013924676, -0.04969006, -0.0032716175, -0.027080622, 0.039406482, 0.06319022, 0.007303846, 0.01888421, -0.073592454, 0.009811244, -0.03485094, -0.029867722, -0.038256317, -0.024381999, -0.010990506, -0.0011647131, -0.007847913, -0.0012383605, -0.02633535, 0.055298097, 0.012363531, 0.03285242, 0.005828415, -0.0035928246, -0.016903283, 0.004673063, -0.00562721, 0.05101594, 0.007709076, 0.03503861, -0.029043306, -0.020735433, -0.040057465, 0.0068057952, 0.004767124, 0.017448027, -0.022285074, -0.011287464, -0.021584917, 0.010803737, 0.013441287, 0.075167805, -0.016843509, 0.012733347, -0.002374765, -0.050818346, -0.043265477, 0.0327649, -0.013266021, 0.02307095, 0.009897862, -0.023705695, -0.003187707, -0.012016383, 0.06965135, 0.017675396, 0.008825969, 0.02947253, -0.0073192967, 0.01899857, 0.027309515, -0.017009525, -0.023291554, 0.017724909, -0.013968888, 0.02051934, 0.0055268886, -0.01704697, -0.008497545, 0.0054523954, 0.05369838, 0.004075988, -0.055436652, -0.034759585, 0.036706902, -0.02077378, -0.03801034, -0.020206254, 0.01699509, -0.013726178, -0.0017706977, 0.0022908542, 0.0076266318, -0.04441135, -0.060919218, -0.013352039, -2.5601807e-05, 0.025717298, 0.015112256, 0.038759727, -0.00038256095, -0.053388, -0.030579384, -0.010477342, 0.031469245, 0.05663255, 0.007424693, 0.015146796, 0.041478988, 0.032886844, -0.003901174, -0.011011709, -0.05264273, 0.023482833, 0.045696296, 0.010842535, 0.01598455, 0.003456131, 0.014025729, -0.00047549437, 0.00300184, 0.0120087145, -0.005085342, 0.038935047, 0.01645012, -0.058668967, 0.0214189, 0.010969753], [-0.015387912, -0.088115595, -0.040759407, -0.0388371, -0.01533353, 0.012246077, 0.014981483, -0.012688802, 0.050062373, 0.022316385, -0.0052092005, 0.044874255, -0.08090551, -0.02800137, -0.046249382, 0.036694393, 0.013321266, -0.010113669, 0.0246335, 0.02207412, -0.018381216, -0.011291871, -0.02111692, 0.029896364, -0.012506729, 0.05279634, -0.02576906, -0.011481731, 0.043436833, -0.015541836, -0.0053400057, -0.025907053, 0.007404616, 0.008482439, 0.029182447, 0.020651674, 0.0049236338, -0.018149551, -0.039420694, -0.02541917, -0.058198154, 0.0048431386, -0.0042698486, 0.02452234, 0.022768691, 0.040801093, 0.0019701004, 0.019119088, 0.012423598, -0.027512169, 0.039017256, 0.020473855, -0.03028351, 0.00020363412, -0.019148795, 0.02456211, 0.018552888, 0.015295079, 0.02540108, -0.01545607, 0.01610195, -0.0069278725, -0.04517132, 0.004014602, 0.010192607, 0.04599496, -0.015295079, 0.019164607, 0.017796185, -0.037777245, -0.0044967206, 0.00079656875, -0.0010071504, -0.027474318, 0.06188944, -0.0117518455, -0.061335076, 0.022985501, -0.005113373, -0.039591268, -0.018613538, 0.01734382, 0.015716244, -0.050417893, -0.065953024, -0.010031496, -0.030219303, 0.025812183, 0.06719064, 0.036479738, -0.0437569, 0.0032763535, 0.013418531, -0.006466701, 0.008117575, 0.013119309, -0.032061115, 0.045510553, 0.011497422, 0.04720958, 0.04811659, -0.05993647, -0.02396007, -0.03191929, -0.033520572, -0.005957137, 0.01748103, -0.01971466, -0.015027001, -0.011039844, 0.0105027305, 0.0109061655, 0.005541723, -0.0648486, 0.012368977, 0.005529026, 0.021874888, -0.033173677, -0.04142619, -0.034837246, -0.05416572, -0.0037371654, 0.021746688, 0.013913961, -0.025400722, -0.026172495, 0.011472028, 0.011784426, -0.059033778, 0.00862654, 0.06473745, -0.001384712, 0.049769137, -0.0030942804, -0.043585848, 0.017570991, -0.01162152, 0.048768394, -0.025754925, 0.039218497, -0.04366874, 0.009106518, 0.01860593, 0.026899828, 0.023938749, -0.022144852, 0.0031690262, -0.053437427, -0.0150162205, -0.007812843, -0.0042547556, -0.016627925, 0.020590525, 0.029373385, 0.007184212, -0.05980054, 0.013659777, 0.014395734, -0.018048272, 0.009885599, -0.015872203, 0.0022303928, 0.022197558, 0.015694682, -0.032077406, -0.045161735, 0.008156265, 0.015172779, -0.014516958, 0.08081352, 0.063783005, -0.018894851, -0.0072532077, 0.023291433, -0.055729628, -0.028700553, -0.010188414, -0.03639924, 0.015179127, 0.013838017, 0.010403069, 0.0024028828, 0.008488908, -0.009920097, -0.03260446, 0.010892749, -0.025959758, -0.0055762213, -0.032872777, 0.03780887, 0.004086705, -0.05910277, 0.02228524, -0.0064353175, -0.04262805, 0.018643305, -0.012369456, 0.005552264, 0.016884383, 0.04233865, 0.0028714808, 0.024352245, 0.04554313, -0.017968677, -0.016255274, -0.06068968, 0.030046815, -0.0044061635, 0.035067234, -0.02550269, 0.032746643, 0.06502244, 0.04994738, 0.05535686, 0.034654696, 0.03392413, 0.014267326, -0.053489175, 0.03233135, 0.08102434, -0.03827938, -0.004442099, 0.043682158, -0.03129557, 0.0018298323, 0.004270088, -0.000637255, 0.010063838, 0.039768547, 0.007884474, 0.0783105, -0.0051719476, -0.039645888, -0.051720195, -0.017531222, -0.027278349, -0.032998793, -0.0030608268, -0.0061348975, 0.022911474, -0.01586238, 0.029740166, 0.00875483, -0.022855654, -0.025743186, 0.020349998, -0.019638956, -0.010261962, -0.012621962, 0.016092367, 0.044356782, -0.0333948, -0.03427893, -0.00038043648, -0.015613227, 0.021105122, -0.024919068, 0.023965582, 0.0063641653, 0.013410865, -0.016560964, -0.028896403, -0.013392418, -0.029024333, 0.05148254, 0.017038487, 0.029695125, -0.01323514, 0.046160866, -0.0041023893, -0.016838387, -0.06132214, 0.024646437, 0.0010658151, -0.0055529834, 0.049487405, 0.034265634, -0.0016781848, 0.048519544, 0.008680085, -0.057303127, -0.034749087, 0.0023753322, 0.047657095, 0.011346973, 0.025883095, -0.0070653856, -0.05718813, -0.018523518, -0.034217242, -0.024743702, -0.004366994, 0.018974628, 0.025032382, 0.028365036, -0.03729619, 0.023306284, -0.03824776, -0.031365924, -0.008582819, 0.0035957596, 0.0053246734, -0.023476379, -0.0058168685, 0.0068984055, -0.011848153, -0.06898454, 0.028250044, 0.007180978, -0.0033225904, -0.04536106, 0.0026486812, -0.06470103, -0.004333334, 0.025397249, -0.020189006, 0.036214773, 0.06497031, -0.030002972, -0.003739561, -0.0017364002, -0.015747387, 0.019214436, -0.06684949, -0.001604637, 0.063314885, 0.03147273, -0.0030530745, -0.06398232, -0.03346739, 0.06610443, 0.012681855, -0.0027291765, 0.00199801, 0.0012711561, 0.050316557, -0.013599885, 0.037411183, 0.020610947, 0.05040304, -0.0058277394, -0.047059126, -0.03778491, -0.00015883462, 0.0367998, -0.06849773, -0.015608916, -0.042873368, 0.010851064, 0.015193023, 0.003065772, -0.015116361, 0.004305065, 0.026892643, -0.007759658, -0.011548211, 0.01167403, -0.0007877047, -0.010712952, -0.0022049982, -0.014101065, 0.0022221725, -0.05061817, 0.0452154, 0.028160661, -0.014486772, 0.059654135, -0.010146908, 0.02944214, -0.018659594, 0.033269502, 0.013046, -0.026560599, 0.023717387, -0.018680677, 0.014585953, -0.05254623, 0.0021120452, 0.03794878, -0.02289231, 0.010118191, -0.039921872, 0.028828364, 0.035947174, 0.0455393, 0.047646556, 0.046243634, 0.029877678, -0.009312069, 0.04107971, 0.016836232, -0.006936018, 0.07235959, 0.021753876, -0.004837868, -0.018404692, 0.02477245, 0.05246765, 0.043825418, 0.022009734, -0.0247231, 0.02030975, -0.0056527634, -0.02759458, 0.012859136, -0.038867768, -0.056038197, 0.040720116, -0.017430604, 0.011178316, 0.022939265, -0.010570767, -0.02215731, 0.031359177, 0.030334538, -0.03415687, -0.022509476, 0.019873733, 0.0063150534, 0.02105385, 0.006351738, 0.05237086, -0.028237585, 0.022327404, 0.023988578, -0.0026678466, -0.025834704, -0.011653622, -0.057379782, 0.05305603, -0.013391818, -0.0044176625, -0.034064878, 0.081806295, 0.053395987, -0.02748917, 0.010596162, -0.010106003, -0.06344569, -0.02880261, -0.020706477, -0.06201402, -0.016599296, 0.0047415607, -0.027108254, -0.018598504, -0.01821663, 0.028823573, 0.041465662, -0.04198792, 0.009771683, -0.0011482569, -0.023028385, -0.03765363, -0.038712524, 0.013409187, 0.06596021, -0.06596596, -0.039804485, -0.020169841, -0.052945834, 0.0029735374, 0.0371697, -0.012802118, 0.013918033, -0.0055136187, 0.022072503, -0.06603687, 0.0064484943, 0.020625144, -0.0026247243, -0.03370265, -0.015369825, -0.042047814, -0.0010703967, -0.013615217, 0.028848967, 0.0041004727, -0.0055619967, 0.019382136, 0.024153642, -0.0021829577, 0.02137248, 0.015281812, 0.040916085, 0.021730877, -0.016567193, -0.0070433454, 0.019267144, -0.010884844, 0.021335106, 0.044318452, -0.004632796, 0.06289372, 0.00069666834, -0.013123382, 0.008053371, 0.04084565, -0.041818306, 0.0025941792, 0.06810483, 0.01458212, -0.057278205, 0.013314318, 0.025866805, -0.051720195, 0.046125766, 0.06530091, -0.025458578, 0.015597895, -0.03690713, -0.046936467, 0.0071546854, -0.049853466, 0.04679704, 0.043322563, -0.0049353726, -0.034933075, -0.016434472, -0.031799387, -0.0009924468, -0.01545619, -0.018037671, 0.06363734, 0.029927028, -0.015424447, 0.029546592, -0.035594884, 0.020334665, -0.02288704, -0.03280378, -0.05268997, -0.049705893, -0.0073686806, -0.007980781, 0.0057757827, 0.064572625, -0.0015111299, 0.027576374, 0.016241858, -0.04042545, 0.0024329487, 0.024593014, 0.008389247, -0.01924031, 0.002586393, -0.007753908, 0.016718632, 0.016841741, -0.051458105, -0.012449952, -0.006422381, -0.06982016, -0.05806879, 0.05456916, -7.3308285e-05, -0.009965615, 0.02657677, 0.033401746, 0.044050135, -0.051323466, -0.0061262725, 0.024603793, 0.015061559, 0.019280558, 0.011886963, -0.0070683802, -0.07238451, -0.067685105, 0.031047259, -0.05028122, -0.031545322, -0.05725425, -0.028064137, 0.00046943658, -0.020377308, 0.012114554, -0.035368133, 0.023619162, -0.032736104, 0.0115160635, 0.008728477, -0.02443322, -0.02202845, 0.046291545, 0.027503543, 0.020644907, 0.018825376, 0.020563692, -0.017708981, 0.028702352, -0.028092885, 0.037817493, 0.0077495966, -0.036475904, -0.014671479, -0.040662143, -0.009069865, -0.021108953, -0.034187295, 0.004297399, -0.06865105, -0.009347027, 0.019219229, 0.0028700435, 0.0022979511, -0.013826996, 0.023603352, -0.0044783936, -0.01761603, 0.006131064, 0.015426363, -0.040509775, -0.01811098, -0.007698808, 0.013159078, -0.021868868, -0.010313949, -0.022110352, 0.003039299, 0.02687683, -0.010387677, -0.025849914, 0.0022692927, -0.010325448, -0.011188138, 0.01672495, 0.080088586, 0.026633369, 0.005176619, 0.03967164, 0.0033803266, 0.0980702, -0.024391057, -0.04031884, 0.07062894, 0.030387003, -0.016795743, -0.0399947, 0.0031297368, 0.039364275, 0.020223504, 0.037622005, -0.010091987, 0.0139407925, 0.0052662184, 0.0075445245, -0.0024445679, -0.025715398, 0.020981023, 0.04769159, 0.013057499, 0.010805905, -0.0673248, 0.03296477, -0.009771803, 0.014185393, -0.01130378, -0.0229522, -0.03332221, 0.012813558, -0.053149946, 0.04527673, 0.039275993, 0.03699026, -0.013306652, 0.02402787, 0.0008787412, -0.035665203, -0.0066758455, 0.053129822, 0.00036773927, 0.040303268, -0.025442049, -0.0048790737, 0.0029519761, -0.02717821, -0.03356633, 0.017709028, 0.026621928, -0.05124537, -0.017826492, 0.019206531, -0.019566126, 0.061446715, 0.030329866, 0.00037588464, 0.016715728, -0.017417666, -0.051796857, -0.012412698, 0.019297808, -0.030467978, 0.0010493146, -0.00041924676, 0.0066317646, 0.041359287, 0.03373966, 0.03849332, 0.023727806, 0.026069602, 0.0533301, 0.019454965, 0.03188719, -0.011597683, -0.03196361, 0.022315426, 0.0040978375, -0.04017198, -0.1014419, -0.014914163, 0.008777349, -0.0100245485, 0.034409855, 0.021037204, 0.019632246, 0.011180232, -0.044078883, 0.014049078, 0.0014517916, 0.015858546, -0.012775886, -0.04609606, 0.01096414, 0.052613307, -0.023837171, -0.034059126, -0.0357984, -0.018521123, 0.0040972983, -0.03292656, -0.04184226, 0.019059435, 0.015625086, 0.029404288, -0.006519167, -0.02411124, -0.05149021, 0.036140505, 0.03630485, 0.02448904, -0.025894595, -0.0036397206, 0.0017052562, -0.0023314909, -0.036497585, -0.03409602, -0.021896178, 0.0023556876, 0.0016597379, 0.006553665, 0.037401363, 0.016375778, -0.008965232, -0.038118392, -0.057347205, 0.046215452, -0.039976105, 0.0027581344, -0.016162321, 0.013640611, -0.07563307, -0.02434506, 0.013505974, -0.01770419, 0.0061868844, -0.054582093, 0.019635122, 0.022677656, 0.0036644563, 0.0077306703, -0.0021230953, -0.02998836, -0.07355645, -0.0017653881, -0.008540176, -0.061960354, -0.029037029, 0.002249079, -0.0339494, -0.059357673, -0.046443913, -0.018037073, -0.011539646, -0.048244517, 0.06621703, -0.04338126, 0.003546588, 0.010771288, -0.05526295, 0.021242153, -0.009647346, -0.07388325, 0.033564653, -0.030822061, 0.025904177, 0.016162321, 0.033769727, -0.044872817, -0.044644266, 0.0032945606, 0.025311124, 0.00034450102, 0.02220714, -0.0077711875, 0.0014652074, -0.010877656, 0.025339272, -0.0524504, -0.06697215, -0.033621013, 0.019086987, 0.002166188, 0.009921534, 0.034438606, -0.0047142496, 0.0076742517, 0.031561375, 0.0077909217, 0.025569739, 0.014722507, 0.051854353, 0.01675813, -0.019870859, -0.014606077, 0.01267293, 0.03037161, -0.010912873, -0.0036515193, -0.01994297, 0.011750528, 0.029009718, 0.043016154, 0.02479617, 0.0145045, -0.016467532, 0.014989149, -0.0017500557, 0.047285285, -0.09774822, -0.0046795723, 0.05664287, 0.024230065, 0.013834303, 0.0064855, -0.033981267, -0.0042240904, -0.026133984, -0.008561737, -0.057684515, -0.033590525, -0.003378889, -0.027195938, 0.0033736185, 0.036043003, 0.006605891, -0.003502507, 0.0023995289, 0.01835582, 0.020579984, 0.010783505, -0.0020534706, 0.043741573, -0.0069547044, -0.002672638, 0.037499346, -0.007683954, -0.00085095107, 0.020005496, -0.017914534, 0.022375798, 0.04862687, -0.006530427, -4.8872193e-05, 0.040954895, -0.05085774, -0.011399678, -0.036130983, -0.014104419, 0.017683499, -0.013315277, 0.033143014, 0.029168194, -0.0065922206, -0.0063744667, -0.02112776, -0.02235759, -0.009663278, 0.03493547, 0.015579688, -0.0067347796, 0.004994546, 0.012021601, 0.019004574, -0.04884536, -0.04680327, 0.08563941, 0.013909409, 0.03633743, 0.047713634, -0.024553005, 0.040464737, 0.017201094, -0.008887312, -0.04571694, -0.017246732, -0.018730506, -0.061247397, 0.044379782, -0.020691622, 0.057889592, 0.0743231, 0.021056728, 0.0011413094, -0.06251424, -0.0057563772, -0.011681412, -0.022467792, -0.050742753, -0.0338059, -0.007928585, -0.022334592, -0.015108215, -0.0039605643, -0.038104977, 0.08980217, -0.013610425, -0.0005615511, 0.009909077, -0.00849897, 0.0036625394, 0.016203767, -0.012363707, 0.047043797, 0.015826445, 0.016783046, -0.027575416, 0.0076226243, -0.033643235, 0.0044512027, -0.01892935, 0.039180163, -0.021581145, 0.008272097, -0.031461712, 0.015515963, -0.0032452093, 0.03923071, -0.036904253, 0.021124763, 0.0047585703, -0.027224803, -0.028978335, 0.027690766, -0.029410038, 0.04218724, 0.0041862386, -0.020763975, 0.02178454, -0.037940152, 0.042951945, 0.02093838, 0.0054458953, 0.0059798956, -0.019052967, 0.03911213, 0.025057059, -0.023936832, -0.016360085, 0.014657704, -0.024976565, -0.005462186, 0.0082986895, -0.02712351, 0.01755901, 0.02013151, 0.050352372, 0.014295596, -0.018804533, -0.062494595, 0.040890213, -0.0037990944, -0.028429719, -0.027579248, -0.0029263424, -0.017017106, -0.007660476, -0.00906711, 0.009359504, 0.005935576, -0.07398291, -0.027242413, 0.027741438, 0.03560387, 0.014153291, 0.040010992, 0.0012159353, -0.025360832, -0.01937447, 0.0065000015, 0.0431024, 0.058335066, 0.010180987, 0.012110301, 0.0427325, 0.0053045494, 0.006804255, 0.02112141, -0.044360615, 0.06242033, 0.053655915, 0.013665527, -0.012931006, 0.016528143, 0.0149680665, -0.01961368, -0.0081310505, -0.009526244, -0.0036779917, 0.045011766, 0.017599469, -0.059595324, 0.021223228, 0.020451574], [-0.019796645, -0.09528791, -0.034145944, -0.06025546, -0.015698787, 0.004313614, 0.030425211, -0.023636427, 0.059237584, 0.0061361026, -0.012597575, 0.016957533, -0.07063621, -0.01641474, -0.009124996, 0.03686712, -0.0061169546, -0.008291349, 0.0053901793, 0.028879529, -0.023834007, -0.014347635, 0.0021808804, 0.034070462, -0.017043002, 0.043105345, -0.029241947, -0.01097128, 0.020144355, -0.029628228, 0.0012848297, -0.06362099, -0.00269953, 0.01338443, 0.016908692, 0.032467898, 0.0042468756, -0.0050627287, -0.04606739, -0.042705745, -0.073162585, 0.011755637, -0.013577499, 0.02074209, 0.023648636, 0.056219485, 0.018868404, 0.004450076, -0.003914568, -0.043729722, 0.018139686, 0.0057431613, -0.016138904, 0.00742454, -0.018412746, 0.031608477, 0.030629452, 0.027529765, 0.0494529, -0.0064391335, 0.006571224, -0.030851452, -0.044369083, -0.007893238, 0.0376913, 0.03767409, -0.0050867153, 0.01612614, 0.022563607, -0.030182954, -0.02369581, 0.006833185, -0.025040027, -0.024327958, 0.061124038, -0.010465118, -0.058738083, 0.041133974, -0.006533484, -0.0502965, -0.01922971, 0.009526054, 0.031983934, -0.05698317, -0.051674575, 0.0061105727, -0.037295584, 0.004626497, 0.055762164, 0.0008397181, -0.05205364, -0.0015345806, 0.01131885, -0.032781474, -0.0015753732, 0.037229538, 0.014042661, 0.06195543, 0.04208691, 0.030768203, 0.04913544, -0.07845564, -0.025883628, -0.009238581, -0.024463933, 0.013886151, 0.024811922, -0.03256308, 0.024801375, -0.007991283, 0.0020941615, 0.004181663, -0.033976182, -0.062358256, -0.004353991, 0.0033988324, 0.02492514, -0.011945864, -0.052298952, -0.018119706, -0.044515602, 0.014781369, 0.007368207, 0.018270668, -0.031816047, -0.01743178, 0.02248563, -0.0025552292, -0.036243852, 0.0081385495, 0.048590425, 0.01459912, 0.041039627, -0.012095853, -0.07211585, 0.01110448, -0.016427226, 0.046623502, -0.015044995, 0.0539018, -0.031140054, -0.0017515863, 0.017351585, 0.0060661724, 0.0041426737, -0.017219493, 0.011259881, -0.05208139, 0.0017450651, -0.0073911524, -0.006779905, 0.0012720646, -0.011778253, 0.015542832, -0.0017338264, -0.052810665, 0.04164097, 0.014670923, -0.019869385, 0.037953258, -0.00764099, -0.01777061, 0.031430874, 0.009575172, -0.023012605, -0.015566696, 0.028513784, -0.0020046674, 0.0005211469, 0.06773633, 0.043343436, -0.0069974656, 0.023468262, 0.053391196, -0.04337008, -0.038506873, -0.014886195, -0.027518388, 0.010342636, 0.025359152, -0.008854502, 0.024511386, 0.0007550803, -0.0180094, -0.020772476, 0.009581555, -0.026210526, -0.030524418, -0.027294446, 0.031695332, 0.034074906, -0.029168688, 0.019766951, -0.0109069, -0.02448114, 0.038080353, -0.024973981, 0.012080174, 0.027804213, 0.030414598, 0.004018631, 0.0060997494, 0.022296095, -0.024690932, -0.042142414, -0.0398719, 0.018967194, -0.015450146, 0.045803204, -0.026020577, 0.029215584, 0.05850221, 0.01374851, 0.04520894, 0.03857375, 0.032844465, 0.039809186, -0.08888024, 0.02963822, 0.06804769, -0.029462837, 0.020141162, 0.013322269, -0.018976629, -0.03162263, -0.016933106, 0.0014502204, 0.01920085, 0.02992571, -0.008538151, 0.059389655, -0.010454019, -0.050401952, -0.06524937, 0.0018920018, -0.013320673, -0.036925394, -0.0024031326, -0.027228676, 0.028497135, -0.011025115, -0.0010483988, 0.016906472, -0.046340447, -0.009370376, 0.003815084, -0.03821078, -0.021194419, -0.009069288, 0.021820182, 0.049705982, -0.020588355, -0.029612133, 0.0050349785, -0.012035774, 0.019208621, -0.023718912, 0.013172418, -0.0047979923, 0.04928751, -0.019438392, -0.03784448, -0.032582503, -0.039580524, 0.041890856, -0.0021978081, 0.012322155, 0.0025735444, 0.04496182, -0.009892357, -0.02826348, -0.09173518, 0.050736062, 0.02333201, -0.019496335, 0.04059951, 0.024850773, -0.003014771, 0.05623669, 0.039490614, -0.07516503, -0.050961953, -0.014677028, 0.027567506, 0.021748517, -0.004402276, 0.0124031855, -0.06721297, -0.016874282, -0.06428762, -0.021090077, 0.014680914, 0.014454473, 0.023465764, 0.017212832, -0.043134756, 0.044877462, -0.0069464054, -0.031566016, -0.03363756, 0.046193928, 0.010232016, -0.02740378, -0.012969287, 0.0011840968, -0.011400851, -0.0911835, 0.036186133, 0.027501183, -0.017781155, -0.024175888, -0.012202275, -0.035623915, -0.014744457, 0.0013845913, -0.032236945, 0.022776173, 0.09315154, -0.019215558, 9.990037e-05, -0.024805954, -0.0142702125, 0.01937068, -0.0664959, 0.010361332, 0.05771133, 0.03642964, -0.0039294143, -0.045652248, -0.015483793, 0.037650228, 0.004718211, -0.014604324, 0.024830792, 0.022379901, 0.0006999963, 0.029385414, -0.005913616, 0.020821733, 0.050491866, -0.000828063, -0.0663516, -0.026302656, -0.011127791, 0.044286944, -0.053466674, -0.015003925, -0.046338227, 0.011178851, 0.017727181, 0.010442918, -0.027619122, 0.0090415375, 0.02073697, -0.022053562, -0.027263641, 0.003613341, -0.004363426, 0.0050305384, -0.00078810286, 0.029122066, -0.021791045, -0.06890017, 0.04942404, 0.016767722, -0.03250869, 0.08443135, 0.0005161519, 0.05510504, -0.027719853, 0.05568058, 0.028158028, -0.025563393, 0.0129337665, -0.023801818, 0.027508676, -0.04358431, -0.012397636, 0.060872626, -0.020944668, 0.0045110565, -0.03348882, 0.04268909, 0.041429795, 0.03612855, 0.0384683, 0.03592112, 0.0339356, -0.022528643, 0.038255457, 0.025675504, -0.020685688, 0.042886116, 0.014031006, -0.004202198, -0.009047088, 0.035860624, 0.037773438, 0.045348108, 0.010409618, -0.020306414, 0.034804177, -0.0070790504, -0.022754528, 0.005805321, -0.06000765, -0.05050241, 0.03415427, -0.023875078, 0.010289738, 0.008751272, -0.0023004834, -0.03229557, 0.025461135, 0.034077123, -0.04708748, -0.034430105, 0.018685132, 0.018618098, 0.007966499, 0.028063295, 0.046480864, -0.040273167, 0.022388782, 0.036222763, 0.0134959845, -0.028416103, 0.005782705, -0.055879824, 0.03823187, 0.012061304, 0.016939694, -0.01802924, 0.07727405, 0.04309258, -0.02810558, 0.006250433, -0.0027750102, -0.05436134, -0.042957157, -0.0075591276, -0.04721513, -0.019565487, 0.026537975, -0.020002272, 0.017235033, -0.020389386, 0.025381353, 0.017946476, -0.023553178, 0.006285467, -0.001615056, -0.029902121, -0.05734725, -0.0384683, 0.022539742, 0.06208919, -0.04057828, -0.03541572, -0.027207587, -0.039611187, -0.008509291, 0.026071776, 0.0033688624, 0.0067796274, 0.011943089, 0.03820967, -0.04896866, 0.0086924415, 0.014644284, -0.013818163, -0.05740941, 0.01672776, -0.01941508, -0.023226278, 0.012156765, 0.02232218, 0.0076326653, 0.01085584, 0.006060622, 0.03495472, -0.008242335, 0.03221329, 0.021858755, 0.03203347, 0.03190207, -0.016118368, -0.026371477, 0.013954417, -0.0029367933, 0.018272331, 0.026077881, 0.021193031, 0.064318076, -0.039506707, 0.014438933, 0.0025269242, 0.053086743, -0.042579755, -0.0030491813, 0.07581716, 0.03538027, -0.062346704, 0.03772182, 0.03123496, -0.047416046, 0.028353943, 0.055073958, -0.025744325, 0.012816453, -0.03904162, -0.05163295, -0.022309417, -0.029388469, 0.03653717, 0.053092882, -0.0044350214, -0.03115171, -0.030246502, -0.008699934, -0.030986873, -0.008802887, -0.04645589, 0.046362646, 0.047320582, -0.03457274, 0.048849057, -0.05573885, 0.013023677, 0.0010234237, -0.01906987, -0.06623616, -0.058079854, -0.007888799, -0.01224501, -0.016096724, 0.050687227, -0.0066156243, 0.026884299, -0.0017725691, -0.0282324, 0.008227559, 0.0019017013, -0.008351671, -0.015096055, -0.025332512, -0.005224789, 0.025381353, 0.019676486, -0.029553857, -0.0017538064, -0.00538685, -0.06477983, -0.03635485, 0.05267635, 0.010653264, -0.002312312, 0.031376485, 0.062243756, 0.009691445, -0.0085104015, -0.004900668, 0.010467911, -0.012011354, 0.010867495, 0.02749702, -0.02572823, -0.0696017, -0.058359575, 0.018917244, -0.05439908, -0.033229638, -0.022204522, -0.024175888, -0.037626915, 0.0073004966, -0.0027136132, -0.04172311, 0.01232271, -0.015362439, 0.016931169, 0.026194569, 0.0074847573, -0.019387886, 0.02740489, 0.043604847, -0.0006299273, -0.0014074851, 0.0055611203, -0.0215141, 0.039358523, -0.018031461, 0.046278287, 0.014252451, -0.048140872, 0.0024364588, -0.05634769, -0.0133439135, -0.020094959, -0.020942446, -0.020198606, -0.06970382, 0.003281311, -0.0060928124, 0.03025205, -0.020127704, -0.006235448, 0.03754145, 0.008831192, -0.0034879101, -0.013099436, 0.01889005, -0.017349362, -0.0088948095, 0.009738065, 0.00015207056, -0.045077264, 0.01980608, -0.025211522, 0.004356766, 0.025012832, -0.027396565, -0.02751478, 0.01670001, -0.00411423, -0.00471613, 0.007629058, 0.072669744, 0.0009790235, 0.035184354, 0.022484243, -0.015793137, 0.06958394, -0.016509369, -0.046624612, 0.101037, 0.009070398, -0.026597362, -0.019593792, -0.0048385076, 0.03605293, 0.03225672, 0.0015234805, 0.0016813787, 0.012129014, -0.03272514, 0.031874876, 0.025177112, -0.038652007, 0.014608486, 0.05795109, 0.015860293, 0.015291415, -0.04116339, 0.04642592, -0.007117346, 0.019425627, -0.0143726105, -0.023936128, -0.014331263, 0.0071123512, -0.037831157, 0.029404007, 0.02696866, 0.010986265, -0.006232673, 0.03570772, 0.0020096623, -0.04150472, 0.008661361, 0.060142238, -0.0024395115, 0.023723561, -0.036725592, 0.0011066741, -0.0051839966, -0.018854529, -0.015387848, 0.002130098, 0.05716299, -0.05161963, 0.0046031866, -0.009050695, -0.012250422, 0.045475204, 0.015392704, -0.016810318, 0.02227001, -0.021035964, -0.060737204, -0.016198289, 0.0019991174, -0.032462068, -0.0073414976, -0.015916904, -0.008410501, 0.025627911, 0.010967672, 0.037546996, 0.006566229, 0.037105214, 0.04940517, 0.025086923, 0.01779503, -0.007619623, -0.028922822, 0.036636792, -0.019856863, -0.018567454, -0.089639485, -0.025504563, 0.012150104, 0.0078199785, 0.04710913, 0.028779076, 0.006260631, 0.02190371, -0.005897451, 0.011342022, -0.0065695588, 0.026600137, 0.0043437234, -0.07595091, 0.014137011, 0.045226008, -0.047918875, -0.026027374, -0.030556193, 0.009847956, 0.015948538, 0.00042180152, -0.030906953, 0.009372319, 0.01391279, 0.011817658, -0.01363307, -0.02761024, -0.032149743, 0.008278411, 0.0017124588, 0.009413528, -0.020558385, -0.00015678807, -0.016969742, 0.0005949622, -0.012054228, -0.03321132, -0.037610266, 0.028960248, -0.017227262, 0.0009122152, 0.041624874, 0.027894402, 0.0048238696, -0.030060576, -0.076510355, 0.044397943, -0.022181489, 0.00010434038, -0.00050671684, 0.017787814, -0.07563235, -0.027198153, -0.0009690335, 0.00815853, -0.0025241494, -0.021254359, 0.01373297, 0.017171763, 0.004912878, 0.0039338544, 0.011935041, -0.03238714, -0.06547941, 0.01845888, -0.0021572928, -0.06929533, -0.048696987, 0.00034562752, -0.044722617, -0.03348882, -0.005129467, 0.0031124512, -0.021343157, -0.041047398, 0.034907408, -0.025901945, -0.015360791, 0.021329837, -0.052076947, 0.034134846, -0.018537622, -0.060952544, 0.003568663, -0.047907777, 0.025918594, 0.026806597, 0.037135184, -0.033384483, -0.025517883, -0.018097507, 0.025925811, -0.025773877, 0.03151076, 0.0071872375, -0.0020912476, -0.024012163, 0.01947169, -0.021158896, -0.075355954, -0.018326167, 0.04911102, -0.0059163217, 0.009448354, 0.012198805, -0.01657902, -0.008057519, 0.013105609, 0.017758954, 0.004446399, 0.0032456517, 0.034476727, 0.015939659, -0.015659105, -0.014769714, 0.010649101, 0.042797316, 0.012781142, -0.011870383, -0.00083194807, 0.005332459, -0.0019968972, 0.03081371, 0.024260247, -0.0053313496, -0.019631531, -0.007909238, -0.015501206, 0.060568478, -0.08859608, -0.017862186, 0.039415687, 0.018507652, 0.020854758, -0.0054434603, -0.017187303, -0.00563549, -0.019406756, -0.0012753946, -0.058519416, -0.03558895, -0.009986707, -0.04333456, 0.022468148, 0.044700973, 0.019308243, -0.012763936, 0.031011293, 0.005104423, 0.03236161, 0.004415596, -0.0275614, 0.045778785, -0.005286117, 0.0025885296, 0.05439686, -0.01635591, -0.00062902545, 0.017504763, -0.02691982, 0.010282523, 0.033977225, -0.026947567, 0.0017299413, 0.048729178, -0.054900937, -0.011830979, -0.025195982, -0.0040669073, 0.028128613, -0.04566557, 0.017051328, 0.021893721, -0.018273111, 0.006812095, -0.026673397, -0.028088376, -0.004952838, 0.014579903, 0.0006968051, -0.032487113, -0.035165206, 0.012194297, 0.028524883, -0.030988537, -0.051590767, 0.072725244, 0.017808905, 0.02887731, 0.04664036, -0.02478861, 0.025641719, 0.012508359, -0.016916739, -0.0006660024, 0.020714898, -0.017965415, -0.06466439, 0.031384256, -0.021327619, 0.063145906, 0.08491975, 0.02220896, 0.010465118, -0.044334255, -0.03602407, -0.0071262256, -0.023221908, -0.040521808, -0.009322925, 0.006947793, -0.006490194, -0.025096081, -0.005109349, -0.068472825, 0.07412163, -0.0031321538, -0.014098925, 0.025800936, -0.01354205, 0.0101953875, 0.010240898, -0.0025213743, 0.03512275, 0.03149692, 0.017216163, -0.032857507, 0.00090465334, -0.036500264, -0.0064313635, -0.027632719, 0.0017968192, -0.021178877, 0.0154384915, -0.017950986, 0.0045576766, 0.011116135, 0.054282527, -0.014817444, 0.012136784, 0.014738634, -0.026763864, -0.015078296, 0.015495102, -0.034179244, 0.019554108, -0.001919197, -0.015124915, 0.024991741, -0.036681194, 0.060286537, 0.034083784, 0.022654213, 0.02906934, -0.003780674, 0.0188777, 0.033681963, -0.033921726, -0.011782693, -0.0061105727, -0.011464122, -0.008542591, -0.007362102, -0.028049802, 0.021498559, 0.01908763, 0.054938544, -0.0032700722, -0.018635858, -0.026122557, 0.04203474, -0.017789757, -0.016146675, 0.021387836, 0.0152959945, -0.004652027, -0.008796782, -0.015460136, 0.018139686, -0.020790376, -0.058896817, -0.039404035, 0.021058997, 0.02203913, 0.011067295, 0.05726622, -0.015293636, -0.06928978, -0.0058119814, 0.0036474734, 0.03940348, 0.04072799, 0.032611918, 0.020845877, 0.042921636, 0.009837411, -0.00059898593, 0.02841333, -0.04511602, 0.026738333, 0.06266042, -0.0010533938, -0.01886105, 0.016681697, 0.00999524, -0.0022123768, -0.004899003, -0.008707705, -0.013835923, 0.034266934, 0.029575782, -0.053773034, 0.015497877, -0.014216932], [-0.02704281, -0.08707159, -0.049660396, -0.040501304, -0.0032958635, 0.0058618356, 0.015548474, -0.009639949, 0.047805775, 0.0125550525, 0.006222263, 0.014960448, -0.06678109, -0.023810668, -0.009960116, 0.03758962, -0.008397367, -0.019284878, 0.0041745133, 0.03476413, -0.028993588, 0.0059818625, 0.009237176, 0.03838439, -0.04840359, 0.049984787, -0.0005358327, -0.0021530627, 0.014521123, -0.0045844684, -0.0053970227, -0.050598826, -0.0221537, -0.010640189, 0.020443436, 0.022755453, 0.022258129, -0.014386499, -0.028324407, -0.034342647, -0.06570595, 0.015959356, -0.011325128, 0.031625368, 0.020561146, 0.04699896, 0.013871172, 0.018253068, -0.0100117875, -0.034908254, 0.023228606, -0.0041358173, -0.044922356, 0.010444625, -0.01354863, 0.036593724, 0.015141646, 0.036034834, 0.039902154, -0.0173246, 0.0046175453, -0.03303927, -0.054085158, 0.009007087, 0.043660924, 0.03363801, -0.002842404, 0.015485044, 0.007059262, -0.031630464, -0.029845359, 0.0070247087, -0.0048770625, -0.024277566, 0.047617625, -0.0064874566, -0.07134673, 0.0028824902, -0.011411324, -0.039428018, -0.019678788, 0.008539261, 0.01913728, -0.032934073, -0.052281514, 0.015862038, -0.02728321, -0.00043886146, 0.051740237, 0.011606425, -0.054618325, 0.016210532, 0.010807717, -0.012523279, -0.0009729563, 0.021119107, 0.011615231, 0.06634732, 0.025197228, 0.03990627, 0.038186044, -0.06765913, -0.021006959, -0.026220001, -0.005271898, 0.009075673, 0.010176303, -0.03465569, -0.010105399, 0.002029213, -0.015859721, 0.010187888, -0.007295203, -0.054077737, 0.011158296, -0.012467928, 0.028386852, -0.020883687, -0.03307217, -0.013067134, -0.027171409, 0.013250592, 0.014110068, 0.027535427, -0.029467668, -0.015573326, -0.002907399, 0.0018094925, -0.042996377, 0.002253162, 0.037836853, 0.018107612, 0.05641724, -0.011596345, -0.05711038, -0.0013253894, -0.009735588, 0.05384093, -0.020807685, 0.046471115, -0.020968959, 0.0006063888, 0.02080954, 0.0064085587, 0.01703079, -0.0373732, -0.0056020874, -0.057685025, -0.009823696, -0.025182398, -0.0067909406, -0.01227051, -0.009567828, 0.00039437288, -0.014073457, -0.05606606, -0.0020075478, 0.012004795, -0.0057705413, 0.027690442, -0.0033032782, 0.0013026816, 0.033677865, 0.017548434, -0.018278325, -0.046490118, 0.033863235, -0.0030261513, -0.010738666, 0.06396348, 0.07901545, -0.011076038, 0.010414965, 0.031282894, -0.063813165, -0.028530164, 0.0071728593, -0.031398755, 0.0048399884, 0.015849061, -0.0045322753, 0.0089336345, -0.010672224, 0.0015278473, -0.04178406, 0.01921351, 0.0062374403, -0.022253104, -0.010264353, -0.00015988089, 0.050776318, -0.03455188, 0.0020857505, -0.0021445039, -0.015104804, 0.031066014, -0.038280584, -0.0019644496, 0.0156484, 0.057969566, 0.008314733, -0.00476028, 0.0052422397, -0.039678264, -0.034776177, -0.046193067, 0.03199263, 0.01706485, 0.036046885, -0.01577584, 0.004094341, 0.040466085, 0.042276677, 0.048978236, 0.037996966, 0.028601648, 0.05743628, -0.044134542, 0.02447846, 0.08088768, -0.053623583, 0.020635294, 0.027365118, -0.024667073, -0.017320892, -0.004418737, -0.022420628, 0.013381798, 0.005502683, 0.024207355, 0.08681578, -0.016395437, -0.042629346, -0.065013595, -3.8232385e-05, -0.019137973, -0.027341485, 0.04036506, -0.030493688, 0.03719131, -0.03495877, 0.019574692, 0.01719878, -0.040954247, -0.013794245, 0.013625211, -0.03486701, 0.010147107, -0.025835823, 0.03755579, 0.060026236, -0.003717578, -0.015952868, 0.004217148, 0.0026563397, 0.020407058, -0.009701526, 0.0024962274, 0.022841185, 0.051629014, -0.003718505, -0.033641256, -0.0010857998, -0.029033905, 0.033182006, 0.020110698, 0.036630217, -0.017426552, 0.021833936, -0.033588137, -0.03913328, -0.08112078, 0.042238213, 0.024960881, -0.016338436, 0.052526202, 0.02456512, 0.01659888, 0.053203493, 0.03109666, -0.07416248, -0.030747643, 0.004357102, 0.0040475354, 0.026704742, -0.001081629, 0.00900309, -0.06493852, -0.011377379, -0.06468456, -0.0061433073, 0.021477798, 0.015119172, 0.04880515, 0.04558459, -0.008858792, 0.05190707, 0.0075014257, -0.033536524, -0.027101316, 0.017416589, -0.019100785, -0.024431651, -0.020203846, -0.007811456, -0.022270944, -0.060306143, 0.019919885, 0.030023312, -0.014278059, -0.029351352, -0.019500835, -0.07225504, -0.01470348, 0.009442705, -0.015188162, 0.039835367, 0.09868312, -0.03711739, 0.0026656084, -0.03248038, -0.018150188, 0.011134893, -0.068838686, 0.038570687, 0.044485815, 0.030769425, 0.0046768636, -0.05503332, -0.030140096, 0.047115277, 0.017787792, 0.011473887, 0.0002680901, 0.02297975, 0.017782556, -0.0052807033, 0.0058627627, 0.006327808, 0.040149335, 0.015129815, -0.04507714, -0.029601945, -0.002115757, 0.022950552, -0.07951038, -0.004384038, -0.051083103, -0.0011845088, 0.0029492232, 0.033601865, -0.030225366, 0.02477644, 0.029413681, -0.023983292, -0.022335129, -0.0027559758, 0.016723078, -0.007990337, -0.005250581, 0.0012790471, -0.001123337, -0.05249515, 0.016288271, -0.005594904, -0.028819341, 0.08611973, -0.0011813227, 0.032718696, -0.021369355, 0.05033977, 0.016717052, -0.009310165, -0.004606423, -0.003919862, 0.049090385, -0.047791872, -0.0028332516, 0.045678668, 0.0070940773, 0.0058164205, -0.019481834, 0.05733653, 0.030904744, 0.039882172, 0.051252715, 0.044072125, 0.036399085, -0.02124145, 0.04200743, 0.024285212, -0.009837541, 0.031212457, 0.043841656, -0.0014625626, -0.011996454, 0.023712188, 0.029697992, 0.025383987, 0.017804012, -0.002706853, 0.024139812, -0.001295962, -0.037784718, -0.014461806, -0.06265106, -0.06774501, 0.023080312, 0.001359451, 0.021410136, 0.02685999, -0.005675424, -0.028300306, 0.022780478, 0.045902964, -0.02745039, -0.018688917, 0.019218957, 0.01321126, 0.008135504, 0.03106277, 0.05285616, -0.060372874, 0.021135788, 0.032719795, -0.0021943073, -0.032637946, 0.0033077965, -0.04398856, 0.054816436, 0.015551545, 0.042012062, -0.003092515, 0.09462724, 0.055833187, -0.045363538, 0.013056244, -0.014802421, -0.054448478, -0.037726793, -0.019026289, -0.04338426, 0.003396962, 0.011149954, -0.024891833, 0.005680695, -0.025703285, 0.037277736, 0.024537196, -0.032619003, 0.00519219, -0.012324268, -0.019947574, -0.04196433, -0.043527458, 0.022392591, 0.05258552, -0.059750035, -0.033469327, -0.034156118, -0.067663446, -0.01273486, 0.031553537, -0.0043941573, 0.005391925, 0.0039261184, 0.01887058, -0.056018554, 0.011030732, 0.033151794, -0.018590672, -0.040555988, -0.017902952, -0.04572941, -0.018453036, 0.012923936, 0.03127919, 0.015367798, 0.009286067, 0.022277663, 0.038198557, 0.024123013, 0.0061719813, 0.018151984, 0.04358492, 0.029427351, -0.031764857, 0.002982358, 0.007918101, 0.0010665677, 0.024641354, 0.034986574, 0.009317581, 0.054568045, -0.030161412, -0.007443961, 0.013290505, 0.034702957, -0.055740505, 0.009225359, 0.06503862, 0.05078373, -0.067322366, 0.026515609, 0.021560285, -0.047673237, 0.031794053, 0.048759498, -0.026177831, 0.026239004, -0.02373096, -0.061431333, -0.006267331, -0.039037816, 0.038718056, 0.06298473, 0.0050568124, -0.032873362, -0.015126122, -0.021474088, -0.0076520387, 0.002923735, -0.024275016, 0.035687268, 0.028986173, -0.03380855, 0.041396637, -0.043255195, 0.01349302, 0.0024589219, -0.028976906, -0.057888582, -0.050010048, 0.013303712, -0.010588401, -0.01903185, 0.0379975, 0.0045267143, 0.014328571, -0.010063227, -0.02690077, 0.008011191, -0.007207992, -0.012689445, -0.04428492, -0.010619798, -0.011367762, 0.03107899, 0.0066093365, -0.02169653, -0.012988238, 0.015464972, -0.069666356, -0.052304454, 0.05138062, -0.01257521, -0.028066743, 0.024446946, 0.049602237, 0.012788617, -0.012698482, 0.011407617, 0.015884051, 0.019258928, 0.016021457, 0.02791474, -0.014853861, -0.07089258, -0.06304404, 0.036312714, -0.027904082, -0.03087161, -0.05810952, -0.039759826, 0.010964339, -0.020931883, 0.012303645, -0.04781412, 0.005086993, -0.025320034, 0.0008378685, 0.007916189, -0.0074833524, -0.02522596, 0.0010797753, 0.03411163, -0.0053258874, 0.02875817, 0.013077213, 0.0022489913, 0.02811123, -0.03146479, 0.044636887, 0.022216491, -0.037413057, -0.020648733, -0.04267105, -0.01135525, -0.022303617, -0.015587691, -0.03302027, -0.078543685, 0.0077897906, -0.011903479, 0.041493956, -0.012406988, 0.0044893115, 0.052987773, 0.023202656, 0.013470775, -0.0026981637, 0.003465592, -0.017137377, -0.02854036, -0.01903741, -0.0032930828, -0.044898264, -0.00160437, -0.039758902, -0.0074194004, 0.020892955, -0.016532147, 0.0057890783, 0.036195897, -0.003598942, 0.0012459414, -0.0015427347, 0.0707554, 0.026833111, 0.013715115, 0.036614113, 0.009613476, 0.075456366, -0.009084942, -0.06099757, 0.07558983, 0.008251708, -0.031691868, -0.002799074, 0.006232574, 0.035550095, 0.03605372, 0.0027153827, -0.0071934815, 0.010322802, -0.008779082, -0.0049892105, 0.0006119499, -0.041478198, 0.024278957, 0.034067143, 0.013198515, 0.02291348, -0.042801272, 0.037785184, 0.00047361816, 0.007967687, -0.008701228, -0.01784236, -0.026467007, 0.024377896, -0.03522014, 0.039507724, 0.043406967, 0.013834099, 0.006286968, 0.046898395, 0.0056370758, -0.02085901, -0.022329306, 0.048965726, -0.0043426775, 0.03303478, -0.03270827, -0.004577691, 0.019652836, -0.030038549, 0.0027575977, -0.0067131435, 0.05551435, -0.025239864, -0.019949427, 0.011206028, 0.01254422, 0.056735937, 0.02094764, 0.01021106, 0.03510799, -0.05293772, -0.05945901, -0.011493002, 0.0146983825, -0.011197223, -0.016818542, -0.02088647, -0.020221457, 0.044595644, 0.035754927, 0.055808272, 0.030225685, 0.060439143, 0.06675328, 0.017622119, 0.018959094, -0.0073290328, -0.03061024, 0.023574207, -0.014507453, -0.041742466, -0.093604006, -0.014503368, 0.0061343284, -0.02542894, 0.044503424, 0.03743993, -0.005624954, 0.021219205, -0.028778443, 0.00029102954, -0.0072590555, 0.025585575, 0.0117440615, -0.06910932, -0.01143357, 0.051017296, -0.0423587, -0.033451714, -0.04471845, -0.004345285, 0.0065527996, -0.013838271, -0.02564999, 0.012929497, 0.019777497, 0.028186306, -0.0015246612, -0.04049945, -0.04297274, 0.01704365, 0.012120362, -0.004911008, -0.02157303, 0.008824498, 0.003411835, 0.012663494, -0.04650101, -0.004371475, -0.04883272, 0.0052706236, -0.011585109, -0.0005904007, 0.033937383, 0.031465255, 0.006214906, -0.022912553, -0.045502335, 0.021672202, -0.03740726, 0.010761606, 0.021862436, 0.012594907, -0.06601922, -0.016369022, 0.0020432314, -0.016602356, 0.01430123, -0.037806965, 0.0019690837, 0.022699147, -0.0039029473, 0.00074518396, 0.0036045029, -0.020972664, -0.016608149, 0.0070412466, -0.001318438, -0.06654753, -0.050903715, 0.0065715676, -0.025429865, -0.052370723, -0.0012037118, 0.030757837, -0.012477661, -0.03651772, 0.06427119, -0.0018750089, -8.897719e-05, 0.023400769, -0.053455364, 0.010078752, -0.015920892, -0.058057617, -0.00249252, -0.040249202, 0.038903076, 0.0137615735, 0.05166609, -0.044321764, -0.031881638, -0.0154027855, -0.016076198, 0.003618348, 0.0023069188, 0.021197192, -0.013954821, -0.017832512, 0.007757699, -0.025877533, -0.07515606, -0.02900749, 0.010015495, 0.0022628938, 0.009070807, 0.025824992, 0.0037938114, -0.006134792, 0.011141033, 0.022459326, 0.016003381, 0.0065324088, 0.026337247, 0.025478294, -0.019399809, -0.014937046, 0.025489995, 0.0209773, -0.003285668, -0.03187654, -0.014512782, 0.047884554, 0.009977176, 0.028863829, 0.026357638, 0.019574981, -0.0028092694, 0.01011096, -0.011774648, 0.039324675, -0.07645179, -0.023535857, 0.047714017, 0.017972002, 0.0051268474, -0.0065379697, -0.011412252, 0.0008749424, -0.052070197, -0.0046615703, -0.06350932, -0.047116432, 0.0077938456, -0.023567835, 0.01287228, 0.021848185, 0.0022930743, -0.015282064, 0.03199008, 0.033066496, 0.016105333, 0.0069643185, -0.020481205, 0.053240567, -0.019197756, -0.012162765, 0.045619346, -0.008371734, 0.00067196315, 0.02942179, -0.02946257, 0.018095966, 0.022847675, -0.010478918, 0.020873493, 0.03228389, -0.047999132, 0.0017517384, -0.045881648, -0.013152404, 0.016943667, -0.019530494, 0.041595444, 0.025042908, -0.004061438, -0.0344161, -0.029811991, -0.020904312, -0.0044895248, 0.052794866, -0.005517049, -0.005611819, -0.032908585, -0.0035155257, 0.031531293, -0.031075284, -0.04523621, 0.06481374, -0.016346894, 0.05854699, 0.059427496, -0.0419787, 0.053593926, 0.02040729, -0.019570347, -0.012540919, 0.004553622, -0.019506859, -0.059117462, 0.010445551, 0.0032708384, 0.03340352, 0.0754128, 0.035221066, 0.015611789, -0.058850534, -0.013822977, -0.026150953, -0.028759558, -0.04505026, -0.015157635, -0.01130381, 0.0067430343, -0.0106976535, -0.021575116, -0.03969495, 0.06693958, -0.023654507, -0.007480572, 0.005422511, -0.014506294, -0.023232084, 0.024136249, 0.0053821933, 0.05984087, 0.008922744, 0.048726134, -0.030048918, -0.015580972, -0.053983204, 0.0046046856, -0.002737207, 0.017157767, -0.014037542, 0.008813839, -0.02520001, 0.011620793, 0.018582098, 0.05145106, -0.022645159, 0.014530509, 0.003935387, -0.03917221, -0.019345125, 0.03616517, -0.032235693, 0.036951747, 0.005119896, -0.0048158905, 0.022120101, -0.027265484, 0.097181626, 0.02271699, 0.022361573, 0.025761444, -0.011591133, 0.024678193, 0.037996966, -0.030765718, -0.014889777, 0.015532081, -0.0296827, 0.0072358847, 0.0064693834, -0.022800868, 0.011770015, 0.01197392, 0.04851296, 0.0014199276, -0.031144796, -0.036798555, 0.050965395, -0.0012225094, -0.013061574, -0.012105995, 0.0063773934, 0.0041318783, 0.006082888, 0.002912149, -0.0072961296, -0.0034020161, -0.0749225, -0.020551877, 0.017889861, 0.032591604, 0.0021705567, 0.049660858, -0.00812473, -0.033441175, -0.037890844, -0.0024654095, 0.0149036795, 0.033457045, 0.015363394, 0.023323147, 0.03826251, 0.028369356, 0.010030556, 0.009446411, -0.055182874, 0.039747316, 0.046526726, 0.0033950359, -0.013347505, 0.021943536, 0.007258476, -0.003625357, -0.008318441, -0.008033899, -0.009284213, 0.026401663, 0.03161795, -0.051347256, 0.015836086, 0.014646016], [-0.025774334, -0.08924595, -0.030474711, -0.035257194, 0.013858466, 0.010619855, -0.023457224, -0.0017352619, 0.043093283, 0.024049822, 0.008819024, 0.0017540464, -0.04957216, -0.021741988, -0.033641964, 0.00571852, 0.042928826, -0.0403817, 0.04171891, 0.045878585, -2.6463687e-05, 0.041774824, -0.029667715, 0.009336956, 0.0037708394, 0.010094952, -0.006781261, 0.015267658, 0.008503823, 0.03912467, 0.021675652, -0.038495984, 0.012509763, 0.025462322, 0.026467469, -0.012184757, 0.013312004, -0.010290594, -0.039900154, -0.057200376, -0.027873823, 0.0043253954, -0.012003172, 0.031936947, -0.0143371755, 0.060176536, 0.018879479, 0.025886213, -0.02841066, -0.03513102, 0.029590186, -0.0261896, -0.05339616, 0.005248789, 0.009173449, 0.011274359, 0.009881707, 0.024033755, 0.027263269, 0.008695212, -0.019692292, -0.0084336465, -0.052700546, 0.023340972, 0.02284289, 0.027616749, -0.017628124, -0.007172959, -0.011993722, -0.04511303, -0.035325244, 0.042376872, 0.0284031, -0.038086448, 0.023050819, 0.02877359, -0.07999217, -0.0005302189, 0.009772662, -0.015203389, 0.020616159, 0.009416347, -0.0034157059, -0.014598505, -0.024841843, 0.03149746, -0.016154192, 0.008584868, 0.056486744, 0.020119019, -0.013735127, 0.009317108, 0.061494272, 0.016097484, -0.0024513765, 0.009014666, -0.0068753315, 0.025400652, 0.017320484, 0.02353189, 0.056280937, -0.041408114, -0.008439082, -0.041471317, 0.016288873, 0.014060548, 0.01714847, -0.011549037, 0.0068566944, -0.0049950215, 0.01904851, -0.0073479265, 0.028855817, -0.051281903, 0.0046292553, 0.009624276, 0.0556607, -0.023864577, -0.007606184, 0.011491621, 0.016571939, 0.019051965, -0.009659246, 0.03636678, -0.019453174, -0.01882856, -0.00032418018, 0.0016199558, -0.064696155, 0.0035414086, 0.01683185, 0.0133584915, 0.011656783, -0.019523585, -0.016521847, 0.031063171, -0.012036017, 0.0734443, -0.028151693, 0.023922466, -0.024822466, -0.00044781523, 0.032352805, 0.00267047, 0.00989931, -0.024855902, -0.013955816, -0.07862173, -0.008920271, -0.014517105, -0.012496532, -0.0064306767, 0.015307354, -0.011703567, 0.01269501, -0.043358862, 0.00898714, 0.012698435, -0.049596734, 0.030794282, -0.0018226865, 0.018766062, 0.01892012, 0.037396826, -0.011151609, -0.07683543, 0.044379603, -0.0072099376, -0.014269362, -0.030770183, 0.086339675, -0.0015131559, -0.012832999, 0.009502354, -0.046801977, -2.3628294e-05, -0.005442541, -0.046661153, 0.048116654, 0.011809421, 0.009465494, 0.010768418, -0.009474946, -0.0053494456, -0.018801741, 0.039439403, -0.022904914, -0.013252637, 0.027399605, 0.012417849, 0.020796679, -0.017613474, 0.031231876, 0.0014300434, -0.03240207, 0.033703957, -0.01826089, 0.010249482, 0.008883766, 0.047604397, 0.009104926, -0.0226463, 0.02180608, -0.012875884, -0.029759364, -0.025446253, 0.030826416, 0.02020219, 0.047311403, -0.0290439, 0.0050687413, 0.048765488, 0.044182546, 0.045965537, 0.047088355, 0.05451142, 0.0205474, -0.042028118, 0.07182576, 0.033601325, -0.027149854, 0.0018137078, 0.024681568, -0.034292452, -0.056855343, 0.049560346, -0.005330543, 0.040368468, 0.045415472, 0.02105848, 0.08554576, -0.007074311, -0.027745169, -0.043815363, -0.01149292, -0.018850416, -0.025607398, 0.0529425, -0.015347049, 0.048125163, -0.022510853, 0.034538895, 0.028664902, -0.023809759, 0.016314391, 0.010738114, -0.025236966, 0.028388923, -0.0020247085, 0.0017768476, 0.036773186, -0.017824003, -0.052304536, -0.010889926, -0.03295308, 0.0062260553, 0.012634757, -0.008286915, 0.018250495, 0.017909301, 0.055281702, -0.03892903, -0.009152035, -0.044394728, 0.012687448, 0.00059165247, 0.04900319, -0.034123037, 0.009268907, -0.0564754, -0.036735382, -0.060358003, 0.03759356, -0.012750773, -0.031809356, 0.0201228, 0.029885154, 0.0025367336, 0.040000338, 0.034119256, -0.027479706, -0.024064472, -0.008560059, -0.016863985, 0.021831892, 0.0016804442, 0.034552656, -0.06669416, -0.004668951, -0.046514656, -0.023373108, 0.008246275, -0.0060067847, 0.022275811, 0.051624984, -0.0120143965, 0.033382054, 0.014515333, -0.07796959, -0.030519987, 0.0026867732, 0.015609323, 0.003574252, 0.014716646, 0.0072552594, -0.042762484, -0.04752193, 0.033643853, 0.019058581, 0.024225617, -0.059324026, -0.051491603, -0.024516126, 0.020923326, 0.012541426, -0.027617695, 0.059870314, 0.06165, -0.027608242, -0.021910043, -0.04854102, 0.0044865403, 0.010208368, -0.039595347, -0.00097336754, 0.049971003, 0.018429833, 0.0131533975, -0.052608393, -0.0036039054, 0.041567367, 0.026687685, -0.0017494388, -0.020224402, 0.033174597, 0.01629218, -0.030835869, 0.012963426, 0.030629594, 0.019300535, 0.022917792, -0.058995124, -0.010233887, -0.015613576, 0.060306963, -0.06503357, 0.027773641, -0.048821725, 0.026853085, -0.008962566, 0.040979024, -0.02284147, 0.019534929, 0.033262968, 0.0049444567, -0.0115258815, -0.012627433, -0.030934162, -0.050898176, 0.008826112, -0.0085345395, -0.028367184, -0.041977733, 0.0702989, 0.026025148, -0.016852643, 0.06226162, 0.0061291796, -0.00046878532, 0.0006677356, 0.046143223, 0.0057775904, -0.0295675, 0.04208955, 0.01824388, 0.08342489, -0.030825472, -0.008126715, 0.037263237, 0.004848585, 0.029866163, -0.060460076, 0.03129851, 0.017743904, 0.042364586, 0.05650754, 0.046956036, 0.00967496, -0.049411483, 0.0037027309, -0.0059763193, 0.028380414, 0.025386238, 0.043319166, 0.03163923, -0.006084758, 0.036136165, 0.02739996, -0.006634825, 0.01254875, -0.022003848, 0.040869385, -0.028694673, -0.003789978, -0.028827462, -0.026067331, -0.024059273, -0.002857606, 0.013159069, 0.017155558, 0.019066142, 0.0055498136, -0.0070724203, 0.022642521, 0.047067564, -0.018694704, -0.008947562, -0.009378365, 0.03335748, 0.009916322, -0.0010941082, 0.0155984545, -0.05577317, 0.022649137, 0.014124993, -0.038281616, -0.005917234, -0.04613566, -0.053011138, 0.03335429, 0.005440415, 0.029578842, 0.0026111626, 0.06624428, 0.04598816, -0.038134176, 0.0070516276, -0.023031207, -0.055910215, -0.03354745, -0.04065295, -0.08467435, 0.008661187, 0.013590876, -0.0072189164, -0.006838973, 0.0015735853, 0.027839076, 0.014197296, -0.044128202, 0.008249346, -0.016858196, -0.0145918885, 0.0124114705, -0.045468397, 0.047685914, 0.04527252, -0.031679872, -0.009542995, -0.02647125, -0.050166883, -0.015878037, 0.014421765, -0.032020826, -0.012064134, 0.0008612513, 0.06069636, -0.053210914, 0.03829083, 0.05430349, -0.0033684494, -0.014270662, -0.018860104, -0.05021296, 0.0138131, -0.028231852, 0.029794332, -0.0007901301, 0.006107205, 0.020867564, 0.009910533, 0.020768324, 0.044430643, 0.028700817, 0.05843088, 0.004975173, -0.041234206, 0.021293819, -0.061560214, -0.034838974, 0.020106733, 0.010100918, -0.0051037115, 0.07698476, -0.017135238, -0.044717964, 0.017539281, 0.03487678, -0.03920312, 0.027799161, 0.031410743, 0.038563266, -0.06204979, 0.029649729, 0.023256384, -0.06976963, 0.0431533, 0.02849194, 0.009540159, 0.008812408, -0.0018161297, -0.048015527, 0.046288773, -0.030773489, 0.04132872, 0.015383909, 0.023888204, -0.026262375, -0.011354222, -0.015071071, -0.016469393, 0.006157061, 0.0058253193, 0.031239439, -0.031973805, -0.023729894, 0.024286224, -0.016640462, 0.01538769, 0.008595973, -0.045487303, -0.04108866, -0.036253363, 0.007642335, -0.0048984997, -0.022640422, 0.019818882, 0.021239473, 0.0049264994, 0.005035662, -0.035886653, 0.033161838, 0.008544464, 0.0051656174, -0.009590016, -0.010460245, 0.011801624, 0.030976161, 0.012222207, -0.0004002633, 0.0049988017, -0.02209718, -0.0951483, -0.057305228, 0.03501524, -0.0034308282, -0.04216233, 0.023565087, 0.032383993, -0.0005963781, -0.047937553, 0.024705507, 0.030020691, 0.023569342, -0.028904492, 0.008410963, -0.009341682, -0.062342778, -0.06930663, 0.024174578, -0.022777734, -0.06418012, -0.07013633, -0.004422744, 0.0021640859, -0.05675327, 0.02559393, -0.008861437, -0.0148310065, -0.0031397275, 0.009118631, -0.020562287, -0.021423303, 0.011301412, 0.039682303, 0.030448364, -0.008867227, -0.021321226, 0.04074262, -0.0026882354, 0.04298648, 0.006784156, 0.029490503, -0.013217195, -0.015186377, -0.014387976, -0.0397194, 0.023854122, 0.000925284, -0.04942283, -0.024851292, -0.05434508, -0.0048097754, -0.022947798, 0.023911739, -0.009631011, -0.0064668274, 0.03455969, -0.021342019, 0.030505072, -0.0055172956, 0.024346592, -0.03375727, -0.025520919, -0.01444114, 0.029285854, -0.020418625, -0.015491654, -0.044973623, -0.011896373, 0.027193332, 0.03526381, 0.0008402221, 0.04577084, -0.004286881, 0.03078845, -0.00889558, 0.08381806, 0.04733999, -0.0011280148, 0.04245774, -0.009970195, 0.03265241, -0.0035085652, -0.07851398, 0.07005931, -0.022060322, -0.03887516, -0.0014427435, 0.00071262935, 0.010294375, 0.038771283, -0.0011117111, -0.003387352, 0.044321008, 0.025784139, -0.003488481, 0.011289953, -0.025117112, 0.011136487, 0.036826115, 0.0063229315, -0.011645913, -0.04951734, 0.032782838, -0.002260755, -0.0023881115, -0.0049430393, -0.0044738995, -0.04022197, 0.044496562, -0.046211272, 0.045860626, 0.0041184113, 0.014543687, -0.027790477, 0.0073172096, -0.034342308, -0.015080522, -0.045416415, 0.05571646, 0.010229633, 0.030617543, -0.020323168, -0.008928424, 0.0063512856, -0.046606336, 0.001235051, 0.00070195226, 0.029913891, -0.0031189348, -0.028412668, 0.029869942, -0.0010651044, 0.027282173, 0.011603855, 0.012104775, 0.04710064, -0.028627567, -0.009734857, -0.0036679383, 0.019600142, 0.017514236, -0.0017501477, -0.019527366, -0.011104825, 0.047819883, 0.0331401, 0.025529426, 0.04768237, 0.054252453, 0.05290316, -0.0034610725, 0.026785271, 0.05238487, -0.0032797253, 0.0117527135, -0.00040380753, -0.07218349, -0.037412565, -0.004262544, 0.036953706, -0.004973874, 0.040841978, 0.05827068, 0.002649204, 0.016167896, -0.050068118, -0.039829034, -0.016362593, -0.01098432, 0.014361749, -0.038062107, -0.04480208, 0.027439063, -0.025246551, -0.07272789, -0.034972474, -0.023527164, -0.03047861, -0.034666017, -0.032402895, -0.017381836, 0.026219372, -0.0041992203, -0.0038069908, -0.018703448, -0.030928018, 0.008761844, 0.004378795, 0.013587213, -0.033830047, 0.017152252, -0.031014498, 0.020608125, -0.07864063, -0.003995781, -0.006395234, -0.032300822, -0.009642234, -0.01687391, 0.05046909, 0.0080563035, 0.0035522776, -0.011138976, -0.00764139, 0.022297548, -0.009973975, 0.0409828, 0.011197049, 0.006227709, -0.034057822, -0.008548953, 0.0030652985, -0.025202412, 0.030441748, -0.0019895022, 0.032767717, -0.0033174125, -0.012101467, 0.0067680883, 0.016608328, -0.034522828, -0.009457342, -0.010399048, -0.008654808, -0.06343913, -0.021390222, 0.028529512, -0.05715779, -0.07142172, -0.01062966, 0.023874026, -0.050363943, -0.053216115, 0.053668357, -0.012596126, 0.005741675, -0.0071324366, -0.044873912, 0.008671584, -0.0018856559, -0.04068225, 0.025556363, -0.013917064, 0.06049505, 0.004834349, 0.03309284, -0.023602303, -0.009214089, -0.0067288657, -0.009712174, 0.03192844, 0.0036392296, -0.00349746, 0.007709676, 0.01671111, 0.008310307, -0.061800275, -0.03162789, -0.011407267, -0.017159339, 0.008070362, 0.021138227, 0.020652074, 0.032259237, 0.006549763, -0.014262275, 0.017972626, -0.025949538, 0.013594125, -0.011351504, 0.0091153225, 0.029942717, 0.005136791, 0.0050628935, 0.033093788, 0.007494422, -0.012904828, -0.0033557494, 0.015502405, 0.023214327, -0.0074788276, 0.03175312, 0.035393294, -0.03378468, -0.017232586, 0.021684157, 0.024273818, -0.058433715, -0.0011681828, 0.066204585, -0.0046798196, -0.01994795, 0.02463864, 0.0038336907, 0.020094447, -0.07012405, -0.031049468, -0.053590856, -0.041918483, -0.0010453158, 0.03313868, -0.018057687, -0.011034413, -0.016632428, -0.00081895664, 0.055699565, 0.03479408, 0.03312498, 0.014926937, 0.0052178064, 0.041262563, -0.027826568, 0.009647905, 0.042409953, 0.019690402, 0.02797968, 0.018035004, -0.022393951, 0.0012286713, 0.016528226, -0.02195163, 0.04549108, -0.0033533273, -0.07643848, -0.0038008473, -0.01037991, 0.03379224, -0.012190308, -0.029519299, -0.0023647195, 0.044394728, -0.0053598424, -0.01680137, -0.006306155, -0.030260637, -0.010059037, 0.019994026, 0.022118445, 0.0070123016, -0.0045385226, -0.013353707, 0.02095168, -0.00656583, -0.042876843, 0.04339549, -0.0144380685, 0.064548716, 0.0273592, -0.010492026, 0.08726591, 0.011919174, -0.039964657, -0.043955244, -0.039887868, -0.025819581, -0.03346487, -0.0037188274, -0.021800881, 0.01295114, 0.06182107, 0.040362794, 0.027997637, -0.053133577, 0.006008173, -0.04133746, -0.02342946, -0.05029991, -0.043502524, 0.0024816797, 0.023087678, 0.07025164, -0.009750452, -0.017328046, 0.07586005, 0.006200537, -0.02238639, -0.02691168, -0.00060157635, -0.046709828, 0.023055485, -0.0075780666, 0.049563654, 0.003666166, 0.04503175, -0.0009659837, 0.016084488, -0.025647096, 0.04728683, 0.020931596, 0.0001635078, -0.023215272, 0.023520991, -0.0142752705, -0.030763328, 0.007958954, 0.03596698, -0.047712144, 0.056553613, -0.000760831, -0.032482762, -0.0381871, 0.05634497, -0.027433394, 0.058206882, 0.019532092, 0.009508026, 0.0424298, -0.03131375, 0.08587845, 0.0142190335, 0.01521355, 0.022154832, -0.0030296198, 0.007959426, 0.018050125, -0.029830247, -0.011832576, 0.02522273, -0.032748815, -0.005706469, 0.026603568, -0.026195273, -8.057248e-05, -0.017737288, 0.035642806, -0.050625272, -0.05324494, -0.050262105, 0.042478, -0.01838612, -0.031026784, -0.020581188, -0.012165855, -0.031577796, -0.02351913, 0.016766755, -0.043173615, -0.015997713, -0.05036276, 0.017795885, 0.009313683, 0.04339289, -0.012680832, 0.008802485, 0.034062546, -0.011276131, -0.01972679, -0.004034413, 0.012316012, 0.05785246, 0.0042819194, 0.02809546, 0.02221154, 0.0066531957, 0.0197998, -0.0015963275, -0.030014548, 0.049415737, 0.04526989, 0.017475013, -0.026202124, -0.0058021634, 0.022866517, -0.048008915, 0.0337223, -0.0019915109, -0.013094534, 0.04025363, 0.024216166, -0.031465326, 0.020840155, 0.03557098], [-0.02516553, -0.09508344, -0.024004467, -0.036780905, 0.040691793, 0.026115047, -0.03906533, -0.0018565835, 0.011024442, 0.037194785, 0.007191747, 0.030050512, -0.042137295, 0.002266551, -0.049009558, -0.013740057, 0.031654637, -0.020926218, 0.044980817, 0.03507848, -0.010150049, 0.010629555, -0.031016784, 0.018005062, -0.014769236, -0.003543371, 0.025180053, 0.038819574, -0.0005768311, -0.00048173984, 0.0028440803, -0.02653744, 0.013207211, 0.007696108, 0.032802433, -0.0006920298, 0.032420952, -0.018635092, -0.04108054, -0.051950827, -0.052249085, 0.023244716, -0.031990875, 0.031487074, 0.0018632859, 0.047819868, -0.0026720501, 0.043186232, -0.0014453591, -0.04200213, 0.04339177, -0.020384436, -0.042940475, 0.0011134474, 0.010324034, 0.020091763, 0.012840809, 0.022311395, 0.0001262298, 0.003572415, 0.008002746, -0.0034519103, -0.045526512, -0.0051117484, 0.0174711, 0.0063584074, 0.0048570544, -0.0070403833, -0.015726222, -0.045604706, -0.017024267, 0.02376639, 0.04418043, -0.016326651, 0.02934843, 0.0052318345, -0.103658125, -0.020259324, -0.004429074, 0.0017370561, -0.0048726937, 0.00871991, -0.008608202, -0.057397973, -0.045500815, 0.0051575485, -0.006988788, 0.0043700086, 0.029099321, 0.019647164, -0.038597275, -0.023380859, 0.03988024, 0.0072735734, -0.01767692, 0.0009964335, 0.027901534, 0.02056317, 0.0008182595, 0.04638917, 0.033245355, -0.008425001, 0.011865601, -0.025722953, 0.0029312123, -0.006474723, 0.01784504, 0.0085456455, 0.004776066, 0.030213606, 0.008677182, -0.0063352105, 0.00073308236, -0.05870412, -0.0040382366, -0.025386712, 0.025040418, 0.009761585, -0.019203685, 0.0077212425, -0.0010846825, 0.030304087, 0.0047721565, 0.03892346, -0.019631946, -0.018914362, -0.0012600638, -0.005779621, -0.054348074, -0.02196189, 0.03034172, 0.012952238, 0.04727027, -0.015774537, -0.04125592, 0.023600504, -0.012694228, 0.03439371, 0.004821308, 0.04164913, -0.054775916, -0.0032540478, 0.0005609651, 0.010624179, 0.018679777, -0.0132968575, 0.0038731883, -0.038854204, 0.00795541, -0.024544558, -0.009477288, -0.010453125, -0.030314421, -0.023851845, 0.012593935, -0.019201731, 0.0058155074, 0.0138461795, -0.056564353, 0.00020690376, -0.028367076, 0.0065795886, 0.02992149, 0.022552127, -0.018303879, -0.057453547, 0.012261047, 0.019147832, 0.002412609, -0.0017253269, 0.09412945, 0.0066957646, -0.0077134226, 0.023758013, -0.060784675, 0.003653962, 0.008241801, -0.02326985, 0.055288095, 0.009195785, -0.00806977, 0.013896726, -0.0040650466, 0.013017309, -0.013480896, 0.035286255, -0.033853043, 0.012098093, 0.026402134, -0.0120990705, 0.0053597395, -0.031716075, 0.021344008, -0.009872176, -0.009050565, 0.025368838, -0.036066536, 0.013561326, 0.00023235219, 0.046314046, 0.013124548, -0.0076357857, 0.02972265, -0.028150363, -0.021684997, -0.045286335, 0.032328792, 0.0035958735, 0.03676443, -0.0013597631, -0.019494126, 0.05945982, 0.03986404, 0.04392574, 0.028534636, 0.05492979, 0.050482985, -0.030929651, 0.04295388, 0.029132832, -0.0076557533, 0.0019520937, 0.046532996, -0.036760796, -0.047298197, 0.03951328, -0.020603664, -0.009220361, 0.028310105, -0.015904397, 0.06707829, -0.03291805, -0.029776828, -0.06026288, 0.0038695578, -0.036048103, -0.058166247, 0.045080796, -0.04749033, 0.028084453, -0.018809358, 0.032632638, 0.017980764, -0.0033012445, -0.01956897, -0.0051698363, -0.0068222736, 0.009251639, -0.05907275, -0.0016152946, 0.066663854, 0.012701176, -0.019180227, 0.028483251, 0.0120421, 0.003916475, 0.021084288, -0.011779586, 0.017056663, 0.030962326, 0.012046567, -0.028905507, 0.015510347, -0.043839723, 0.022227056, 0.010976408, 0.035961527, -0.0031132959, -0.019597456, -0.0607601, -0.032603037, -0.056568824, 0.028492188, 0.018957928, -0.028850771, 0.022549335, 0.0018029637, 0.013646224, 0.046231385, 0.03130946, -0.06545853, -0.009694002, 0.0038219772, -0.04235799, 0.0062534017, 0.023199474, 0.022945896, -0.033226922, -0.013505472, -0.013356342, -0.00036696007, -0.012597427, 0.008259674, 0.033688836, 0.04408101, -0.0043457123, 0.046957485, -0.016424395, -0.077650316, -0.0025324156, -0.0032708042, -0.0024922008, -0.00028317922, 0.023295542, -0.0125157405, -0.023686798, -0.03151947, 0.027269548, 0.010290521, 0.003078108, -0.03865717, -0.0446954, -0.054648567, 0.019051572, 0.0074531436, -0.022465274, 0.048776437, 0.05617673, -0.040057294, -0.031239782, -0.014661926, -0.009303024, -0.003960041, -0.077820115, 0.050374627, 0.05894373, 0.02578886, -0.008948422, -0.054459777, -0.023173781, 0.058575094, 0.056586698, -0.004406872, -0.012910627, 0.0054851314, -0.0068733804, -0.031570856, 0.0016957243, 0.01079963, 0.02945455, -0.013975482, -0.069456555, -0.018999262, -0.020680463, 0.0440084, -0.06597015, 0.027274573, -0.05382975, 0.023611117, 0.0077918973, 0.048039377, -0.030237066, 0.008113197, 0.0026219212, 0.011720382, 0.01366015, 0.0035386235, -0.015596642, -0.022361664, -0.0011371853, -0.026968492, -0.020273846, -0.026688108, 0.04275839, 0.015625685, 0.0049620597, 0.047419954, -0.020203471, 0.018829465, -0.023060957, 0.05152745, -0.00051385583, 0.0011614817, -0.0053251106, -0.0020598916, 0.077949695, -0.05616039, -0.0147373285, 0.033326343, 0.0003999139, 0.027220255, -0.029795539, 0.056782182, 0.026430063, 0.0042087305, 0.06255636, 0.056307428, -0.015595804, -0.035156675, 0.02870555, -0.015368757, 0.029468514, 0.043054413, 0.040840365, 0.027368408, -0.010349726, 0.03236845, 0.00037533816, 0.034292337, 0.01595634, -0.024437197, 0.028478784, 0.013917812, -0.005835057, -0.031655755, -0.045360066, -0.0045681503, -0.022553802, -0.007658686, -0.0045794607, 0.039883032, 0.010703456, 0.0158875, 0.040890496, 0.052630004, -0.019589078, -0.015753869, 0.025380008, 0.030643681, 0.025445918, 0.02872789, 0.03369414, -0.057350777, 0.029623229, 0.024554487, -0.037882347, 0.006978385, -0.054916702, -0.047518257, 0.02390393, 0.03209812, 0.021034159, 0.018930001, 0.072266005, 0.04728479, -0.013790048, 0.013504354, -0.0027077969, -0.099366315, -0.022273414, -0.057153195, -0.047864277, -0.012586676, 0.044346385, -0.025496185, -0.010473163, -0.0129544735, 0.012227534, 0.03599972, -0.04363753, 0.04473394, -0.02843857, 0.010484893, -0.006909266, -0.03635195, 0.02469971, 0.06513346, -0.038988393, -0.025171116, -0.030645914, -0.05714188, -0.0019600526, -0.0078064194, -0.034475256, 0.016096463, -0.018081127, 0.039236244, -0.040048357, 0.011465687, 0.024290022, 0.021255758, -0.023376532, -0.036888145, -0.05207929, -0.022500183, -0.011914194, 0.06304788, 0.015326309, -0.00484742, 0.005802661, 0.023551911, 0.031029072, 0.04423126, 0.023566155, 0.038917877, 0.0055845515, -0.021307142, 0.02341088, -0.061467208, -0.00049263134, -0.0064042076, 0.010880898, -0.006932585, 0.053767193, -0.004925755, -0.032430448, 0.0064835204, 0.01022793, -0.037381895, 0.007663713, 0.03146697, 0.025726303, -0.059772603, -0.004719235, -0.0036640156, -0.080679834, 0.043161657, 0.03346542, -0.003414907, -0.0127268685, -0.0031250254, -0.039561734, 0.0077550337, -0.009385688, 0.037233323, 0.02671073, 0.02695308, -0.029035369, -0.0034385403, -0.031448256, -0.03250166, 0.0012410735, 0.008674109, 0.01310465, -0.023293167, -0.030738631, 0.00692323, -0.018483171, -0.005842736, 0.017602354, -0.019624265, 0.011174688, -0.047188718, 0.005625604, -0.029036205, -0.030084023, 0.015816147, 0.013877459, -0.015318489, 0.036679253, -0.037462883, 0.026061427, 0.026943918, -0.0056135952, -0.026917107, -0.0059718983, 0.005721079, 0.014341046, 0.014663882, -0.008161371, -0.014809102, -0.014792345, -0.092735335, -0.042569045, 0.0579406, -0.020974254, -0.014873892, 0.03000946, 0.04024608, 0.016828498, -0.03924071, 0.030028172, 0.03271586, -0.0103698345, -0.026862372, 0.008948632, 0.0073431116, -0.07027314, -0.041184425, 0.050991252, -0.017043607, -0.05660569, -0.056215826, -0.010816386, 0.018670281, -0.05107168, 0.013851207, -0.014093055, -0.043686684, -0.01492053, 0.003974563, -0.025753114, -0.02028781, -0.002391105, 0.022386242, 0.018026844, -0.009337654, -0.027855454, 0.070585914, -0.012004399, 0.026598183, 0.0037743268, 0.034613777, 0.011981778, -0.0058040572, -0.010700489, -0.039286513, 0.04634644, -0.0013929962, 8.531682e-05, -0.019117111, -0.05151181, -0.018340183, -0.003767345, 0.00220958, -0.004662683, 0.004438709, 0.0332811, -0.0133189205, 0.020216735, -0.00905615, 0.024943233, -0.03435936, -0.011799135, -0.0007110201, 0.024358721, -0.03145021, -0.02128536, -0.06725256, -0.025939666, 0.017993892, 0.01421705, -0.011118835, 0.04374924, -0.0496664, 0.017122569, 0.020988217, 0.058429874, 0.010986461, -0.017081797, 0.064142615, 0.007927343, 0.03346095, -0.006479052, -0.06568865, 0.091926575, -0.017243214, -0.038204063, -0.023400549, 0.012390348, -0.0028370987, 0.031044712, -0.01049746, -0.02151492, 0.037870336, 0.006676774, 0.02952437, -0.021557368, -0.005329578, 0.037645523, 0.039039638, -0.011635483, 0.005076002, -0.048726935, 0.039389282, -0.008827857, -0.0008199352, -0.036211196, 0.0114383185, -0.039120067, 0.08852814, -0.039178073, 0.023816101, 0.012004118, 0.05796294, -0.0029669588, 0.023391051, -0.03059055, -0.014268436, -0.024756402, 0.051319677, 0.005609965, 0.032305893, -0.03981154, -0.00037198694, -0.0037969477, -0.055216532, -0.020592773, 0.008920983, 0.043505717, -0.013365279, 0.00799744, 0.013602378, 0.005493789, 0.02343378, 0.033918954, -0.021956166, 0.06714532, -0.035049435, -0.023461428, -0.016809892, 0.023968022, 0.051868163, -0.021776317, -0.026150793, -0.0048067863, 0.04289579, 0.052091576, 0.0033914486, 0.024539968, 0.06294287, 0.042424943, -0.0047866786, 0.009582294, 0.03229472, -0.019555146, 0.017635867, 0.0075034117, -0.05582038, -0.047306016, 0.0073816506, 0.028452532, -0.027566131, 0.055599198, 0.048838504, 0.017022032, 0.037715863, -0.061344888, -0.010618942, -0.017090732, 0.004333145, -7.7916186e-05, -0.05273082, -0.030423615, 0.036908254, -0.009924679, -0.050862793, -0.027922617, -0.003545605, -0.021293739, -0.021165274, -0.021082051, -0.03258181, 0.0086900275, -0.011214345, 0.023668645, -0.042064685, -0.040027134, 0.010425408, 0.015715051, -0.015522914, -0.042572398, 0.045738753, -0.015353677, 0.006658901, -0.057878036, -0.022232363, -0.0060121133, -0.0042527155, -0.00754251, -0.012916772, 0.038848616, 0.037176352, 0.013952304, -0.009910545, -0.0013879692, 0.032658886, -0.03354857, 0.025098504, -0.004773134, 0.024448367, -0.041394994, 0.013570263, -0.031796504, -0.008579158, 0.018458595, -0.011856107, 0.02178302, 0.0005339632, -0.008653444, -0.0018867446, 0.021648968, -0.021845575, 0.0032596332, 0.0023020182, 0.013665213, -0.060006633, -0.029074186, 0.024784606, -0.056917354, -0.07238958, 0.0068264627, 0.03291135, -0.038395084, -0.038691107, 0.025591137, -0.029429976, -0.012529145, -0.0028563682, -0.0625653, -0.00065460766, 0.0017020601, -0.03443504, 0.04103809, -0.021438958, 0.030643681, 0.009838663, 0.018958766, -0.06492457, -0.0043809, 0.0005764122, -0.011055161, 0.053813275, -0.0074129286, -0.0073805335, 0.024687422, 0.0073129507, 0.011829401, -0.034287866, -0.063000955, 0.0009841456, 0.005436818, -0.010678147, 0.022556351, 0.03292922, 0.020360978, -0.004520814, 0.007922665, 0.029019449, -0.04343834, 0.023813868, 0.015426845, 0.0016510412, 0.01946173, -0.0017479477, -0.011851639, 0.01807432, -0.008096022, -0.0047325003, 0.031602133, 0.039977983, 0.0357208, -0.017980486, 0.04360737, -0.0030630275, 0.009771081, -0.023164844, 0.006495808, 0.014616964, -0.041303396, -0.018835051, 0.06852602, 0.015242527, 0.035402432, 0.021729259, 0.003885197, 0.028802736, -0.055823732, -0.017247124, -0.07248495, -0.04832926, -0.0057711033, -0.019173525, -0.034691133, 0.0016700315, -0.010726182, -0.0049313405, 0.057500467, 0.022220913, 0.005146692, -0.0015577651, 0.008676065, 0.049747944, -0.06997488, 0.001411777, 0.06067744, -0.006203692, 0.030011414, 0.03322022, -0.02516609, 0.01565878, 0.029720973, -0.043635856, 0.016334891, -0.0024185434, -0.050531574, -0.005164251, 0.00682758, 0.040230446, -0.008136795, -0.035526987, 0.015407297, 0.038977083, -0.0067449166, -0.0375785, -0.010433787, -0.0031613305, -0.006025518, 0.06487318, 0.0127282655, 0.025593512, -0.012788308, 0.0074375044, 0.034803677, -0.009007557, -0.04490206, 0.030727461, 0.0039055836, 0.06920968, 0.045800194, -0.044946745, 0.051303618, 0.0075101145, -0.03924071, -0.038738027, -0.03761592, -0.00062975264, -0.012882701, 0.0052452395, -0.05802801, 0.008898642, 0.050352704, 0.04556784, -0.0022179582, -0.04929277, -0.007017483, -0.0019548864, -0.005811039, -0.04158769, -0.05316397, 0.008651768, 0.0056747557, 0.030570094, 0.007878192, 0.009112981, 0.0740254, -0.012725752, -0.0003035659, 0.0049076024, -0.015498338, -0.06916053, 0.040991172, -0.0025117495, 0.07282231, 0.009707406, 0.039466362, -0.0066387937, 0.02199275, -0.01819664, 0.03556329, 0.05202008, 0.007272177, -0.03323209, 0.01541009, -0.03608636, 0.0031501597, 0.029543988, 0.023911051, -0.042495873, 0.059076242, -0.016131721, -0.030751478, -0.0067708883, 0.045535512, -0.046954136, 0.052290138, -0.0027346066, -0.010164292, 0.032629848, -0.03321781, 0.103861436, 0.008608377, 9.3276e-05, 0.011881241, -0.017590905, 0.008511575, -0.012784956, -0.017641451, 0.016749186, 0.006080534, -0.015047039, -0.011511488, 0.018410001, 0.0017783879, 0.009046096, 0.0077056033, 0.05360633, -0.069685556, -0.041754693, -0.061774407, 0.038122516, -0.048064895, -0.031510532, -0.032629848, 0.026781943, -0.034931023, -0.0013378403, -0.0050975056, -0.040627006, 0.033364885, -0.0724883, 0.029152382, -0.022363897, 0.010992204, -0.0069035413, 0.028994314, 0.032957114, -0.0057803197, -0.017701495, 0.014240509, -0.0017270023, 0.03776652, 0.014433763, 0.043936346, 0.034001615, 0.0021146284, 0.017250476, 0.0035031564, -0.032809693, 0.03408093, 0.05899679, 0.0048402986, -0.018137993, -0.019816961, 0.03693953, -0.0031959598, 0.0086796945, -0.016546018, -0.0032462282, 0.046407882, 0.03702834, -0.05414379, 0.006415378, 0.005093875], [-0.019728726, -0.08213312, -0.032321442, -0.048794266, 0.03198317, 0.020997835, -0.0117772315, 0.0056126164, 0.022831025, 0.044470605, -0.0054653394, 0.03510014, -0.05492465, -0.036526304, -0.023212343, -0.008606471, -0.012525408, -0.029672766, 0.034752656, 0.050221294, -0.0021240036, 0.0048923423, -0.0230948, 0.02618606, 0.008306165, 0.00427332, 0.008165793, 0.029280415, 0.0026670857, -0.013021602, 0.023617173, -0.024487887, 0.03454555, -0.006907614, 0.006501165, 0.023377847, 0.03799389, -0.011303473, -0.043702006, -0.046785608, -0.026604699, 0.021191135, -0.03899146, 0.016576663, 0.022506842, 0.024392676, -0.0023133487, 0.033890285, -0.016873805, -0.06861245, 0.032497484, -0.033390347, -0.02746477, 0.024476878, -0.0166247, 0.025058871, 0.018993925, 0.02369311, 0.027960103, 0.013160538, 0.010361421, -0.025165875, -0.041543487, 0.0057777273, 0.021032928, -0.0077318824, 0.026450807, -0.0074765845, -0.024297174, -0.03882635, -0.03058289, 0.01739614, 0.021051338, -0.010050472, 0.05208066, -0.0059969155, -0.06360505, -0.05162042, -0.0075571267, -0.00418645, 0.0018259987, 0.0021418377, -0.019159755, -0.034695413, -0.05191037, 0.013284802, -0.020586785, 0.011646567, 0.038948886, 0.0068745343, -0.04107289, -0.027425649, 0.06473724, 0.017645856, -0.014816536, 0.015775846, 0.0006719491, 0.02707817, 0.025018599, 0.049061492, 0.040055763, -0.02036328, -0.016484616, -0.0076439967, 0.009024139, 0.015818994, 0.038294196, -0.009572974, -0.0041179894, -0.0062811133, -0.02732526, -0.0035182405, -0.029083375, -0.06826267, 0.023954296, -0.002571083, 0.031934842, 0.0077740145, -0.028198851, 0.0006733874, 0.025777994, 0.047006525, 0.015331716, 0.047685374, -0.013262365, -0.013054971, -0.0078068064, 0.0056848163, -0.06430806, -0.028748836, 0.028394453, 0.016892502, 0.05904178, -0.02757983, -0.058114395, 0.022994699, -0.029131986, 0.04793448, 0.005805728, 0.049165912, -0.047844447, 0.006407679, 0.01067913, 0.0048047528, -0.0043822317, -0.027366681, 0.0040178876, -0.048842877, 0.053164523, -0.030769287, 0.01141393, 0.021890124, -0.010193721, -0.024086038, -0.0023587255, -0.02771445, 0.0029127384, 0.02263859, -0.027409542, -0.013495938, -0.024224686, -0.009168827, 0.048808362, 0.028288888, -0.019558437, -0.032841656, 0.031524945, 0.02096159, -0.025162425, -0.011510581, 0.0735186, 0.0328838, -0.019658107, 0.04843096, -0.031148985, 0.0016660657, 0.02249879, -0.059982967, 0.04609554, 0.040853415, -0.008443086, 0.0023495208, -0.013421292, 0.004190477, -0.006968596, 0.028824778, -0.021665758, 0.009530402, 0.020753333, -0.010193146, 0.009616121, -0.04368705, -0.0048394147, -0.0049895677, -0.03341106, 0.02507843, -0.03978307, 0.007508298, -0.026980944, 0.048183728, 0.014849112, 0.0007145213, 0.021878907, -0.04090893, -0.04772795, -0.04486181, 0.01501185, 0.0006912216, 0.02644793, -0.0059819585, -0.0014077565, 0.036956053, 0.0479667, 0.06360735, 0.04782805, 0.06179401, 0.034460407, 0.0020443248, 0.017512098, 0.03422338, -0.011755083, -0.0111469915, 0.0281931, -0.045482267, -0.03284209, 0.040843923, -0.021343589, -0.0076589542, 0.014162852, -0.014849615, 0.026059892, -0.02467227, -0.017411133, -0.052447703, -0.0050511244, -0.050856426, -0.069699764, 0.034505278, -0.039298955, 0.0517595, -0.028590918, 0.028223589, 0.037366815, -0.011249161, 0.017582862, -0.026533935, -0.018037923, -0.0018467095, -0.015644966, 0.0069927583, 0.03819438, 0.0298793, -0.023723027, 0.0022591988, -0.021681577, 0.0027848063, 0.01118151, -0.035172913, 0.042065855, 0.038704097, -0.014701188, -0.03497127, 0.0006391571, -0.036457844, 0.010374114, 0.009435478, 0.028086092, 0.036284104, -0.011686622, -0.053242765, -0.050645865, -0.04066903, 0.05691317, 0.004149631, -0.028932933, 0.05144553, 0.017836325, 0.012426456, 0.05824786, 0.021298718, -0.032484252, -0.021442542, 0.008034193, -0.029719941, 0.040923886, 0.011887977, 0.037481874, -0.042263757, -0.00650548, -0.029503629, 0.0030928068, -0.022452766, 0.04768998, 0.040369302, 0.047126185, 0.024124585, 0.057074256, 0.01001768, -0.06440126, -0.030036213, -0.005548183, -0.013443585, 0.007529512, 0.020776201, -0.022897435, -0.013213466, -0.01175796, 0.025446046, 0.035540815, -0.010441387, -0.008947048, -0.05346713, -0.029332478, 0.0051322416, 0.031530984, -0.020508256, 0.046954747, 0.055928256, -0.032032643, -0.034937903, -0.027780036, -0.015992159, 0.006317357, -0.06957895, 0.06605812, 0.029184913, 0.022869281, 0.0086058965, -0.030725565, -0.026351279, 0.048083484, 0.046392106, -0.029197572, -0.0027280676, -0.003847599, 0.0030742176, 0.00014267414, -0.0012196337, 0.034208998, 0.0047657765, -0.0048509208, -0.051399507, -0.022554595, -0.0144843, 0.043453477, -0.06955594, 0.01657997, -0.048002943, 0.007902881, -0.017889207, 0.01989959, -0.033676274, 0.027239252, 0.014488616, 0.0049740346, -0.030306747, 0.00966157, -0.0032026889, -0.028204605, -0.004688803, -0.00034345346, -0.01555709, -0.015504305, 0.05816013, 0.023359438, -0.0071601705, 0.048348118, -0.014519969, -0.0053065573, -0.002767763, 0.07007601, -0.00771821, -0.015110801, 0.0071383086, 0.0148478905, 0.05997376, -0.02640737, -0.023460547, 0.032462966, -0.0054267948, 0.010063129, 0.0099209575, 0.038555093, 0.0208822, 0.04925479, 0.046576202, 0.038116574, 0.004978349, -0.0019376068, 0.038187426, 0.00910238, 0.020530691, 0.033789605, 0.019954817, 0.0039008143, 0.04120866, 0.019653937, 0.003919979, 0.03299742, 0.0042232694, -0.04278915, 0.035803728, 0.016775716, -0.015145175, -0.026458574, -0.060093425, -0.020947209, -0.043925222, -0.0040345713, 0.010227232, 0.029484069, 0.0037693584, -0.0057294737, 0.020957349, 0.056754388, -0.035130627, -0.018292492, 0.008221884, 0.019915698, 0.00747716, 0.03829837, 0.03986016, -0.06399165, 0.04991518, -0.0053767436, -0.039640397, -0.016750403, -0.022943495, -0.02774782, 0.022157637, 0.012831683, 0.028496856, 0.03967837, 0.06482008, 0.044338644, -0.009938864, 0.007014044, 0.01882148, -0.09985809, -0.028340949, -0.07087682, -0.03673974, 0.00708193, 0.026419453, -0.037741333, 0.022600042, -0.024063604, -0.0014488363, 0.015767792, -0.05501008, 0.011589396, -0.0074567366, 0.011357838, -0.018501038, -0.031275548, 0.030219588, 0.050561868, -0.033233866, -0.02313622, -0.029065827, -0.07298242, 0.010714367, 0.04049299, -0.04078179, 0.018001104, 0.01722675, 0.057497673, -0.014522846, 0.027308578, 0.037198827, 0.03460308, -0.037903283, -0.0005511363, -0.042079665, -0.035417702, 0.010261032, 0.046161987, 0.027647715, -0.018899145, 0.041778207, 0.047394853, 0.021404572, 0.036755845, 0.031636838, 0.015944986, 0.016409826, -0.031109864, 0.004505741, -0.035035416, 0.017708275, -0.004872638, 0.016199267, -0.0096638715, 0.040135153, -0.0375302, -0.022698995, 0.027727108, 0.039997656, -0.045271423, -0.0006239117, 0.034393094, 0.039267533, -0.06509622, 0.019488826, 0.018463643, -0.076804705, -0.0032072915, 0.032377824, -0.02644667, -0.011443559, -0.03994991, -0.033298016, -0.019755766, 0.03505181, 0.07103331, 0.034272283, 0.02014028, -0.025836674, -0.0013174345, -0.02847032, -0.042396743, 0.018252509, 0.0045425603, 0.006152246, -0.05417935, -0.033707913, 0.04549464, -0.02815973, 0.013984366, 0.011393219, -0.010382564, -0.021998279, -0.05063781, 0.01016697, -0.031255417, -0.018172828, 0.028181592, 0.0175071, -0.018300835, 0.0031940597, -0.019008163, 0.007220289, 0.020053195, 0.0005893938, -0.02624111, -0.023148878, -0.0016931047, 0.049506772, 0.0077228127, 0.008715203, -0.01225962, -0.008212967, -0.081987, -0.051022112, 0.086671084, -0.0039563305, -0.016761908, 0.0202534, 0.019712618, 0.042001422, -0.04741844, 0.033377264, 0.024800848, 0.0066691525, -0.009442957, 0.007327079, 0.011572713, -0.073242456, -0.05064011, 0.03803963, 0.010975553, -0.03694167, -0.038187765, -0.016737748, 0.008899874, -0.03783856, 0.028595448, -0.010621168, -0.0020802808, -0.039908487, 0.0011482966, 0.029179161, 0.0023129894, 0.0072973794, 0.012004186, 0.020346453, -0.000101252605, 0.009668474, 0.049293913, 0.022139227, 0.012497218, 0.0059900125, 0.025429804, 0.008528231, -0.010379543, -0.029541887, -0.051914398, 0.0347249, -0.002776824, -0.014158682, -0.038791254, -0.08225796, -0.016369268, -0.0123136975, 0.025815675, -0.008402816, 0.022386031, 0.074347034, -0.02382428, 0.030880535, -0.010449729, 0.019297827, -0.041145377, -0.016649438, -0.0006107157, 0.016172515, -0.032435354, -0.032193728, -0.030034054, -0.039460905, 0.030021975, 0.014148039, -0.027443485, 0.040519454, -0.040680535, 0.017659375, 0.0077806297, 0.053165678, 0.020639423, 0.012039855, 0.07557356, 0.010840034, 0.067015424, 0.008861904, -0.05175389, 0.0964224, 0.012870587, -0.043221056, -0.016658355, 0.010728174, 0.0068118265, 0.02161513, -0.0034057696, -0.007730579, 0.017737616, -0.0045972136, 0.012623784, -0.02011993, -0.017229052, 0.015720043, 0.020220894, -0.02369081, -0.0027660371, -0.044393804, 0.047428507, -0.004579379, 0.0029161903, -0.00840109, -0.010541777, -0.028706266, 0.07249054, -0.04435555, 0.0076389625, 0.015825322, 0.04746216, -0.011421877, 0.051236123, -0.034651402, -0.026051836, -0.024674859, 0.03764382, -0.0014038732, 0.039562155, -0.044744447, 0.00045534907, -0.008991922, -0.069284394, -0.029448401, 0.018754745, 0.013720304, -0.020754483, 0.015716014, 0.0005200702, 0.023259334, 0.0014182556, 0.0140541205, -0.0027064937, 0.04095438, -0.07093666, -0.026047233, -0.016196966, 0.031342287, 0.026214069, -0.012273426, -0.015852073, -0.009372194, 0.03677771, 0.05917568, 0.0027392858, 0.042240746, 0.056425314, 0.049942847, 0.00785283, 0.01932429, 0.010698258, -0.016821597, -0.0045885844, 0.018345132, -0.03183359, -0.05417935, -0.030183345, 0.041089, -0.035827316, 0.061308455, 0.021892425, -0.0048198546, 0.021562202, -0.051530674, -0.013978614, -0.013589712, 0.030873416, 0.0121480115, -0.044449896, -0.052519903, 0.025702054, 0.011413354, -0.045395687, -0.029312631, -0.0017776737, -0.03349275, -4.5160967e-05, -0.020550828, 0.004925134, 0.007881595, -0.007975369, -0.00213666, -0.06752456, -0.045912303, -0.005217386, 0.033633843, -0.020421099, -0.020181486, 0.039017923, -0.024910444, 0.0026006387, -0.027155403, -0.015114972, -0.01905915, 0.014009104, -0.03528308, -0.0030444819, 0.040995512, 0.0053019547, -0.015984105, -0.014560815, -0.0015405066, 0.020077933, -0.043645628, -0.0010131014, -0.011570987, 0.020031909, -0.040901452, -0.013170893, -0.026962822, -0.008140479, 0.03202574, 0.014552681, -0.019836307, -0.0003699172, -0.004603542, -0.015683798, -0.006345547, -0.046326518, -0.00996878, -0.019335078, 0.0036829917, -0.07929863, -0.04013458, 0.024963371, -0.06632046, -0.076038405, 0.017509798, 0.028617956, -0.030225055, -0.041890964, 0.018623577, -0.02321216, -0.0118028335, 0.0094492845, -0.069026664, -0.01809689, -0.026865885, -0.021464348, 0.021022573, -0.01959008, 0.04151357, 0.034458105, 0.043234866, -0.032942764, -0.003287258, -0.021524236, -0.002131914, 0.022472326, 0.0007973643, 0.020687174, -0.006422637, 0.009582179, 0.00959541, -0.040625308, -0.09166123, -0.0069663306, -0.005600535, -0.024325939, 0.0067597623, 0.030134156, 0.05617909, -0.023445157, -0.007249629, 0.010578596, -0.02760802, 0.011795929, 0.021548396, 0.00040903752, 0.009977696, -0.025230309, -0.0022238179, 0.0149157755, 0.0017529357, 0.013627681, 0.0009572974, 0.0365706, 0.007009586, -0.0061234813, 0.06419013, 0.005675899, 0.001721582, -0.03237437, 0.00093025836, 0.022570701, -0.023954296, -0.016830657, 0.051141772, 0.036901973, 0.03662468, 0.02019622, -0.0025485742, 0.02935175, -0.059798297, -0.023774803, -0.049779467, -0.015971448, -0.03936195, -0.010145972, 0.00097225513, 0.012729064, -0.018472848, -0.026011566, 0.050999098, 0.018311765, 0.0018639684, 0.012060135, -0.017807227, 0.047998343, -0.03510474, 0.0036773107, 0.036747795, -0.0076457225, 0.016483465, 0.043261327, -0.050476726, -0.0033551434, 0.027411843, -0.03994358, 0.018439768, -0.0021176753, -0.06684974, -0.012318013, -0.0046944395, 0.032125268, 0.020824095, -0.039930925, 0.03976006, 0.033946663, -0.00050856423, -0.037552062, 0.008682987, -0.019180465, 0.011471461, 0.026514376, 0.0043729907, 0.023550436, -0.00010355381, 0.0077837943, 0.020059522, -0.005052275, -0.05064011, 0.028899567, -0.0019299841, 0.060804494, 0.03389316, -0.06336803, 0.040311195, 0.0022615, -0.045432508, -0.044363603, -0.047596782, -0.02237165, -0.035378583, 0.018048529, -0.044934206, 0.016163023, 0.047177676, 0.040834717, -0.003166445, -0.04713539, -0.0009731181, 0.013647331, -0.0028707418, -0.05743784, -0.030662281, 0.0009219165, 0.011242779, 0.048697613, 0.01606177, -0.011418604, 0.045006208, -0.0010489137, 0.0046944395, 0.021463253, -0.008697369, -0.06230027, 0.04347879, 0.015712565, 0.050340094, 0.017561935, 0.06765055, -0.00038947735, 0.05376859, -0.013921084, 0.025378738, 0.037804045, 0.018095452, -0.02918894, 0.00057069655, -0.026910182, 0.008795169, 0.018377349, 0.045259055, -0.03544402, 0.047997188, -0.007951782, -0.021801528, 0.0051379944, 0.033461686, -0.046447337, 0.035265762, 0.0024688235, -0.0017719207, 0.022428604, -0.049316853, 0.08691156, 0.009152215, 0.0025074403, 0.012501244, 0.0074098497, 0.021187397, 0.0017909055, -0.028866773, 0.0427286, 0.013321622, 0.015136689, 0.0012138807, 0.02719783, 0.0049400916, 0.025790652, 0.007951782, 0.05964239, -0.041084394, -0.05533225, -0.0744759, 0.048260674, -0.032977287, -0.033121683, -0.020107849, 0.019095898, -0.038740627, -0.016375309, -0.008086977, -0.032538854, 0.017799748, -0.06292159, -0.0046737287, 0.008066266, 0.013427476, -0.0063363425, 0.02231527, 0.02971534, -0.02992561, -0.00863121, 0.007386838, 0.016399328, 0.046988547, 0.014798989, 0.04167523, 0.0052168104, 0.028405959, -0.0057994896, -0.017761203, -0.019290924, 0.067819685, 0.053223204, 0.019183917, 0.0026929742, -0.0016016322, 0.023797814, -0.013150183, 0.005622972, -0.012532887, 0.016503025, 0.033941485, 0.041854147, -0.020218378, 0.01743846, -0.0035902967], [-0.030251464, -0.039342687, -0.038029145, -0.04220846, -0.019063773, 0.0023989936, 0.012250026, -0.02877985, -0.0012671166, -0.006096769, -0.014547115, -0.027213488, 0.0011212797, -0.021904819, -0.009845055, 0.027612144, -0.020088164, -0.004037011, 0.0482887, 0.03401787, -0.023823913, -0.01564266, 0.014094213, 0.02327171, -0.028670851, 0.07346552, -0.03692991, -0.014112379, -0.017813815, -0.019131394, 0.0028074884, -0.09131465, -0.03962124, -0.019775296, 0.026554447, 0.064779386, 0.049150605, -0.0056379377, -0.010449802, -0.04124412, -0.06529058, -0.034279898, -0.0069567785, 0.050547287, 0.042772125, 0.037434444, -0.01440809, -0.037891384, -0.010053166, -0.0015668648, 0.02093682, -0.017626094, -0.006079296, -0.012472092, 0.05176861, 0.046312585, -0.020471934, 0.030533928, 0.03718995, -0.0046556825, 0.05714582, 0.0032316272, -0.011491351, 0.014454517, 0.018804269, -0.0006449125, 0.034276746, 0.012196314, -0.017496403, -0.01509842, -0.007748033, -0.026548391, -0.021812977, 0.015200354, 0.006071664, 0.00046476084, -0.018051809, -0.01852458, 0.0084201945, -0.01518326, -0.02004628, 0.033281118, 0.014220875, -0.018666128, -0.051187277, -0.01950671, -0.013049132, -0.026107349, 0.05103589, 0.022954442, -0.03440845, -0.014528949, 0.060329083, 0.0035338982, 0.025205074, 0.057004612, 0.04293815, 0.01405788, 0.013005483, 0.048543032, 0.01331507, -0.024285648, -0.031124847, 0.008469144, 0.0230372, -0.0024272527, 0.0033354538, -0.02952064, -0.019479081, -0.041711025, -0.029157309, -0.010641055, -0.022273198, -0.039900802, 0.009658548, 0.033729177, 0.019845566, -0.021438545, 0.0102762105, -0.048286684, 0.009292568, -0.0420273, 0.021903306, 0.010905984, -0.06137669, 0.009190255, 0.03329323, 0.006368889, -0.031141248, -0.02060894, 0.030770095, 0.007716746, 0.039237726, -0.019855497, -0.044389457, 0.00019831814, -0.0022228789, 0.019772017, -0.015265956, 0.044410143, -0.025400113, 0.00029419715, -0.0036229647, -0.008051817, 0.006038863, -0.049949426, 0.043528058, -0.026235523, -0.006323977, -0.0129328165, 0.0345447, -0.0014230463, -0.034707695, 0.005199165, -0.011912209, -0.02037883, 0.015828235, 0.014283953, -9.486975e-05, 0.01988253, -0.0011760317, -0.013826367, -0.018101955, 0.047087185, 0.011438238, -0.009918935, 0.0003693865, -0.030657059, 0.05504161, 0.08097436, 0.08390523, 0.0026624086, 0.039796848, 0.018662091, -0.036555134, -0.042005096, -0.0019028197, 0.0069164084, -0.02979869, -0.015930802, -0.028580017, -0.020474203, 0.018049473, 0.04366027, -0.015880086, 0.028417528, -0.018930757, -0.010412964, 0.023529211, 0.02656454, -0.01284274, -0.060397718, -0.023331903, -0.01491196, -0.0031105166, 0.014496905, -0.025254529, -0.029029071, 0.01050531, -0.0055763735, 0.0049836896, -0.05429174, 0.013804558, -0.021416593, -0.030359581, -0.001123866, 0.05685448, 0.053018063, 0.03893394, -0.031447306, 0.004984825, 0.029956134, 0.00057628326, 0.018918946, 0.038004417, 0.026938971, 0.045801904, -0.059872903, 0.04926389, 0.054204945, -0.02386277, -0.003399163, 0.026138635, -0.031200036, -0.01763997, -0.01631457, -0.013396567, -0.0023568573, -0.02640003, 0.014539798, 0.06834255, -0.043155644, -0.02816067, -0.07751868, -0.005612454, -0.0073867203, -0.034806095, -0.041997023, -0.06373632, 0.05075532, -0.03574369, 0.012118854, 0.014832986, -0.040160183, 0.023443805, -0.0031226275, -0.0007882263, -0.057289217, -0.013178821, 0.013542657, 0.027183337, 0.0412532, -0.04587457, -0.019814657, 0.013838621, 0.029251423, -0.0064717066, 0.0131626725, -0.013789418, 0.040044118, -0.029880945, -0.048009645, 0.004911528, -0.012002159, -0.014339273, 0.016989758, 0.018496826, -0.00679555, 0.016499767, -0.01944527, -0.04124765, -0.05473783, 0.077421285, 0.004530504, 0.019563857, 0.040509384, 0.019792706, -0.0012141309, 0.0033184227, 0.00663079, -0.056021594, -0.01960978, -0.036534946, 0.008080329, -0.006134553, -0.0446453, 0.02180894, -0.03906413, -0.04681923, -0.0340431, 0.0168959, -0.013644843, 0.004602192, 0.068859294, 0.059333965, -0.017214319, 0.022891616, 0.010775791, -0.04014706, -0.054464824, -0.041308712, -0.013556029, -0.05864124, -0.03689928, 0.007442229, -0.0067448355, -0.05103961, 0.0028423078, 0.02375276, -0.008231465, 0.024310373, -0.050030675, -0.043086234, 0.002636168, -0.00437049, -0.002246975, 0.008124484, 0.060754992, -0.050165914, -0.008861238, -0.03532788, -0.016011793, -0.012444085, -0.10279844, 0.040462453, 0.04709173, 0.035349324, -0.004962874, -0.054142874, -0.048496608, 0.020374855, 0.009969397, 0.026249653, 0.02735327, -0.010646607, -0.0056669535, 0.051554017, -0.061459452, -0.0052652713, 0.009559641, 0.0061539183, -0.040972628, -0.054956835, -0.0071767955, 0.034144435, -0.0162144, -0.032643266, -0.003298616, 0.05588232, 0.01399581, 0.0150519945, -0.037482634, 0.023576142, 0.0118587185, 0.021484971, -0.016189786, 0.029526696, 0.025014833, -0.024261424, -0.019305237, -0.04005522, -0.020974794, -0.10303864, -0.0028965552, -0.005139115, -0.04879081, 0.057367373, 0.021594318, 0.009777262, -0.03061139, 0.026039222, 0.0077873934, -0.037620902, 0.01198866, -0.020167895, 0.046379194, 0.0026059535, 0.009705636, 0.08656966, -0.002258203, 0.0058254064, -0.012503631, 0.037683476, 0.040087137, 0.04996204, 0.06312472, 0.013597661, 0.013788081, -0.0008245594, 0.06698612, 0.013227517, 0.006307829, 0.07781338, -0.020175466, 0.01638017, -0.029273372, 0.0054146405, 0.013734919, 0.038805008, 0.016701113, -0.028524004, -0.008234996, -0.048863977, -0.012572261, 0.023744183, -0.045560695, -0.08744972, 0.0068528256, -0.033363875, -0.020235516, 0.01827151, 0.006801858, -0.0029349069, 0.021531397, 0.027240235, -0.007401607, -0.00075088395, 0.016643586, -0.011265278, 0.0018262427, -0.0128462715, 0.06008182, -0.028200286, 0.017163288, 0.054496113, 0.012700436, -0.022351919, 0.0100168325, -0.010999844, 0.056205783, 0.022325678, 0.040446304, -0.030869002, 0.091737024, 0.013867131, -0.012833657, 0.0067947935, -0.04599568, 0.0003765636, -0.02245789, -0.016107673, -0.031416018, -0.011515068, 0.017468145, -0.04136195, -3.103452e-05, -0.019981183, 0.048364397, 0.060593005, -0.013934752, -0.041642774, 0.022960499, -0.033133417, -0.062158864, -0.024842754, 0.03909542, 0.045315444, -0.023944013, -0.054661125, -0.031566396, -0.08304182, -0.014227434, 0.031244507, -0.022483816, -0.06264431, 0.00080626673, 0.016872685, -0.05634052, 0.016240893, 0.020102799, -0.005690671, -0.047632687, -0.021583878, -0.063175686, 0.02287774, 0.044395007, 0.051078785, 0.03419277, -0.034718607, 0.0030116101, 0.0119131, -0.027237205, -0.025665546, 0.0053429836, 0.008620406, 0.024994142, -0.031151593, 0.016390262, 0.0061569777, 0.0070657777, 0.015606074, 0.02445823, 0.021934088, 0.02452282, -0.012213975, 0.016655948, -0.03879315, 0.016080927, -0.00032296084, 0.03878602, 0.019598173, 0.031484645, -0.03196251, 0.023302635, 0.027175136, -0.0019150568, 0.016579814, 0.01548471, -0.035915263, 0.046889875, -0.012002537, -0.037445292, -0.017788015, -0.029296083, 0.020453515, 0.022938296, 0.03308633, -0.019418778, 0.024536887, -0.042794332, -0.014910699, -0.025053687, -0.025540147, 0.01947252, 0.022522986, -0.052422598, 0.038028862, -0.071964756, -0.014142909, 0.00614433, -0.024879089, -0.024181694, -0.022240397, -0.052229833, 0.028737461, -0.020253683, 0.017824916, 0.005411613, -0.0038949582, 0.019847963, -0.017544596, 0.03594703, -0.014450479, -0.011075539, -0.026274882, -0.034166228, -0.012169569, 0.01732584, 0.014968983, -0.023721034, -0.014947789, 0.03624832, -0.012404724, -0.02885857, 0.07421742, -0.03472838, -0.012361326, 0.016424578, 0.043236382, 0.019392537, -0.037803452, 0.021618191, 0.022390107, 0.0021158983, -0.008124484, -0.012749888, -0.03501173, -0.05006398, 0.006904045, 0.0023169918, -0.05091276, -0.007209848, -0.027466811, -0.060632873, -0.03210231, -0.02136487, -0.016734356, -0.055363562, 0.00069234736, -0.0148246605, -0.0037503827, -0.027293725, 0.011949551, -0.01656562, 0.012244253, 0.026053354, 0.023986656, -0.009189245, 0.020184234, 0.0030297765, 0.04430039, 0.027578332, 0.061310083, -0.032802604, -0.03729239, 9.5879e-06, -0.09745898, -0.01920141, -0.03295412, 0.033914484, -0.021315036, -0.07769631, 0.0203102, -0.0056391996, 0.00016602206, -0.0047152285, 0.02543367, 0.034871697, 0.0014755274, -0.027844902, 0.024457032, -0.0010904975, -0.032871358, -0.0134079205, -0.0059808316, 0.034175314, -0.031506848, -0.008225914, -0.034325693, 0.0062815887, -0.042261444, 0.002533161, -0.013957507, 0.01214787, 0.028146038, -0.030159498, -0.011347028, 0.025534093, 0.014936939, 0.016567891, 0.09219725, 0.019125339, 0.059699316, -0.018129205, -0.015297242, 0.09381912, 0.02606496, -0.043368977, -0.0076173344, 0.018398676, 0.047179032, -0.048974995, -0.010054175, -0.009826841, 0.013368056, -0.008000724, 0.03271114, 0.0291018, -0.019767728, 0.015689842, 0.025540147, 0.014187317, 0.02036369, -0.014652204, 0.011935548, 0.07740564, -0.013192951, -0.011312713, -0.0037437596, -0.03132115, -0.0027961344, -0.049447324, 0.011084622, 0.029888008, 0.041636087, 0.017423045, 0.016238876, -0.03877246, -0.028028965, -0.02486193, 0.060900323, -0.016393796, 0.073848024, 0.005629611, -0.011506994, 0.015515998, -0.009167042, -0.046810653, -0.028025685, 0.019332236, -0.02566933, -0.0049835634, 0.0032255715, 0.032271862, 0.04970872, 0.016174283, -0.031105671, 0.038053367, -0.01986613, -0.08466217, -0.0571126, 0.047336973, 0.04497028, 0.0072464338, -0.022013819, 0.0136410585, 0.03634016, -0.023064956, 0.031772535, -0.013663263, 0.021470841, 0.038868338, 0.006989264, -0.012746105, -0.0020356628, 0.0036939909, 0.007888319, 0.027599022, -0.017151996, -0.033782713, -0.029605418, 0.010775791, -0.0010264099, 0.049014356, -0.00792421, 0.022900447, -0.00030378505, -0.050511077, -0.013690008, -0.061745066, 0.01115628, 0.026167778, -0.0684132, -0.033276323, -0.028442759, 0.0019405405, 0.0262547, -0.025031485, -0.012979494, -0.023307174, 0.006189242, -0.032549914, -0.022162179, 0.030485991, 0.034899957, -0.030620728, -0.00787318, -0.0458178, -0.057796873, 0.03359802, -0.023568572, 0.0064087543, 0.0012335748, -0.04166069, 0.006978982, -0.041680116, 0.010477178, -0.0058881063, 0.0051429626, 0.0012943665, 0.050758343, -0.038189113, 0.015269236, 0.045141224, -0.044159852, -0.04591999, 0.008726755, -0.045823097, 0.012655461, 0.018832654, 0.018867033, -0.0013481092, -0.007926544, -0.029187586, 0.02965487, -0.008888488, 0.0059061465, -0.0021012642, -0.0057426477, 0.013210108, -0.010427094, 0.0067231366, -0.04507726, -0.027108526, 0.03294201, 0.007199504, -0.046024445, -0.030149404, -0.00563491, -0.09283106, -0.06162976, -0.034812655, 0.008650305, -0.02850634, -0.05659643, 0.019905996, 0.008030623, -0.020039596, 0.06721219, -0.049980715, -0.037980195, 0.0055730934, -0.029441163, 0.0032352854, -0.035420224, -0.020424247, 0.050398543, 0.026463298, 0.005818089, -0.015216502, 0.014429789, 0.021541946, 0.005369224, 0.02420087, 0.021980513, 0.008170909, -0.021040646, 0.01139749, 0.003568213, -0.05428568, -0.009787732, -0.0052586477, -0.00042606232, -0.023522653, -0.015164021, 0.0368902, -0.029663764, 0.031036539, 0.0042600553, 0.053069532, -0.01611297, 0.016511878, 0.02964579, -0.040045127, 0.04454387, -0.002388901, 0.03287741, 0.0013357459, -0.016524367, 0.01754479, -0.022049459, -0.036829647, 0.010046984, 0.017631518, -0.051144887, 0.009499086, -0.011481763, -0.03303448, 0.015282104, -0.018511713, -0.040304504, 0.023668613, 0.0036613164, 0.028680941, -0.026806002, 0.014030378, -0.006421685, -0.048769612, -0.026519122, -0.06272303, -0.04954926, 0.008383862, -0.008437857, -0.021011632, 0.031340826, 0.025041576, -0.011733571, 0.00770413, 0.019870166, -0.041372295, -0.022845443, -0.019660242, 0.02116264, 0.009734494, 0.041686174, 0.057051037, -0.025538635, 0.010760652, 0.0055714212, -0.018670542, 0.011406322, -0.0007740968, -0.011798921, 0.0014997494, 0.052925207, -0.024008103, -0.007294373, -0.036804415, 0.016269153, 0.0074487897, -0.024668153, 0.014511035, 0.010619988, -0.02975176, 0.017145941, 0.013750058, 0.005080578, -0.044595346, 0.048205942, -0.043525033, -0.014833996, -0.038837053, 0.01836045, 0.040154126, -0.008935923, -0.06422278, 0.05713739, 0.020830408, 0.04239618, 0.048528906, -0.036429986, -0.004443487, 0.041793153, 0.013344844, -0.020211292, -0.018315917, -0.0172287, -0.020988418, -0.017899852, -0.008645258, 0.0039845295, 0.08082095, -0.018078996, 0.004657701, -0.0155024985, -0.019359484, 0.003186873, -0.027510209, 0.022857554, -0.016244175, -0.06472186, 0.04535985, -0.013223733, -0.02424124, -0.015743332, 0.06262135, -0.03773949, -0.040165227, 0.019461924, 0.007931717, -0.0018630804, -0.029741162, -0.032662947, 0.0035338982, -0.036806937, 0.05067508, -0.038088184, -0.002442896, 0.0144595625, -0.013696568, -0.030436756, -0.021482952, -0.014589251, -0.0035015233, -0.016588077, -0.011265783, -0.034023926, 0.032549407, 0.022094559, 0.008191095, -0.00053395773, -0.045823097, 0.00089823484, -0.016079415, -0.009971417, 0.017791484, -0.02991879, 0.010348964, 0.03785404, -0.032810535, 0.018572519, 0.0064218747, 0.023275888, 0.021233162, 0.026366726, 0.04737028, 0.03406934, -0.008095216, -0.025998348, -0.007388739, -0.005498661, 0.027895238, 0.016643586, -0.028696585, 0.006787161, -0.03525824, 0.058814198, 0.026571603, -0.012189249, -0.027993642, -0.00029369252, 0.009486123, -0.007078898, 0.061464496, 0.013272177, -0.0057688886, -0.009128943, -0.011962672, -0.025722664, -0.025649145, -0.08807143, -0.019445775, 0.014520496, 0.013038788, -0.024443595, 0.054288708, 0.0062016053, -0.06634221, 0.016032988, 0.015609101, -0.012283109, -0.016056957, 0.023266302, 0.041645803, 0.033658575, 0.010536598, 0.016308514, -0.007973096, -0.039288186, 0.021450656, 0.015789758, 0.021825595, -0.0038036208, 0.020318275, -0.011741646, -0.008161196, -0.01637916, -0.0031899952, 0.024847297, 0.04098373, 0.021999184, -0.030527875, 0.014150606, -0.023181368], [-0.058082487, -0.06807214, -0.02155266, -0.03860631, 0.009902655, 0.044070948, -0.031097405, -0.013311646, 0.007924881, 0.034083877, 0.029707318, 0.029463759, -0.054903917, -0.007059389, -0.035992738, 0.017844765, 0.0012498915, -0.053889185, 0.050018486, 0.0108424425, 0.0071655563, 0.010519472, -0.02653026, 0.001066844, 0.042870805, -0.013558867, 0.046000488, 0.03871304, 0.027352683, 0.022436025, 0.011021183, -0.007365832, 0.009947448, 0.030719679, 0.055911973, -0.003335341, 0.029854672, -0.017384777, -0.0034369864, -0.056974076, -0.05047632, 0.009459465, -0.034309134, 0.06233177, -0.014937969, 0.05737958, 0.016684458, 0.027578477, -0.017702417, -0.048395716, 0.0314032, -0.0143380035, -0.015394511, -0.005213947, 0.004806612, -0.015837217, 0.041830447, 0.037094902, -0.02127486, -0.029104985, 0.013309492, -0.03823109, -0.04627463, -0.031946745, 0.012068645, -0.021576725, 0.015907906, -0.009941526, -0.013004557, -0.04251526, -0.020164514, -0.007020841, 0.034991793, -0.0257115, 0.012530248, 0.035546966, -0.08751738, -0.0153905265, 0.008962006, -0.002043241, -0.002146609, 0.00997932, -0.0012346017, -0.05307947, -0.036262576, -0.029811978, -0.015723996, -0.0037311541, 0.012482978, 0.017947592, -0.03201765, -0.00859252, 0.036309734, 0.046737846, 0.017439906, 0.014542371, 0.007464893, 0.022484263, -0.008421048, 0.020905318, 0.0107830055, -0.0018929266, -0.028321112, -0.01427469, 0.027215935, -0.030634187, -0.0022185359, -0.0029061483, -0.0038437825, -0.03117665, -0.035183024, 0.015558931, 0.034491967, -0.039078277, -0.03645445, -0.01465586, 0.027510533, 0.004912134, -0.007156512, 0.006932548, 0.013149595, 0.0069170427, 0.010765778, 0.05307258, -0.015532685, -0.026833043, -0.00043328424, 0.015640065, -0.04773707, -0.006861913, 0.016230311, 0.041875243, 0.04478505, -0.037613142, -0.0013595046, 0.03255091, -0.0006378668, 0.049848575, -0.009682998, 0.010826938, 0.004833316, -0.009672661, 0.015965188, -0.031847037, 0.0026996278, -0.046407066, 0.03347659, -0.029265204, -0.01753283, -0.008541428, -0.0037040338, 0.005287274, -0.048924938, 0.003774655, -0.0066457014, -0.030878607, 0.005946783, 0.018247038, -0.02595743, -0.02039203, -0.03796707, 0.019977806, 0.04288394, 0.012962348, -0.008993017, -0.05200444, 0.024083022, 0.03676111, 0.012212714, -0.020011615, 0.065090835, 0.03574638, -0.02370293, 0.0025857615, -0.06297308, 0.014339296, 0.045361325, -0.0024962297, 0.049161147, 0.009226887, 0.019501235, -0.0050418824, -0.014362985, -0.00011090526, 0.0047213873, 0.0066586225, -0.01367731, -0.030616526, 0.035877313, -0.019078288, 0.027277526, -0.036532838, -0.008069595, -0.04052241, -0.035186335, 0.049232457, 0.022999382, 0.030970994, 0.016870735, 0.052100923, 0.039934617, 0.022788338, 0.024052013, -0.060730428, -0.01573778, 0.026373595, 0.033406816, 0.036720622, 0.051923476, -0.041245557, -0.058340907, 0.04921157, 0.037145294, 0.037762057, 0.02027585, 0.03279199, 0.04116889, -0.026718907, 0.037944026, 0.061951462, -0.023598056, -0.019912124, 0.04307431, -0.029602392, 0.0040768385, 0.025660248, 0.018775506, 0.0121845035, 0.013489095, -0.014863027, 0.04130155, -0.008922382, -0.011904549, -0.083136305, 0.0007270755, -0.014477444, -0.057604406, 0.03383149, -0.036935113, 0.018578677, 0.036174495, -0.0017426122, 0.041730527, -0.026867067, -0.0022210125, -0.0068968, -0.012429572, 0.00415674, -0.010528825, -0.0013050211, 0.062027697, -0.013464113, -0.007850154, -0.01843353, 0.00010573686, -0.006566453, 0.03747521, -0.0065610693, 0.048410684, 0.01679924, -0.005722065, -0.033681605, 0.021578932, -0.04331292, 0.015653362, 0.02006373, 0.022479095, -0.034166787, -0.02659831, -0.07528723, -0.011839082, -0.07147381, 0.032785103, 0.010110253, -0.02227664, 0.037903756, -0.020299647, 0.04398438, 0.038036842, 0.019878529, -0.021574786, -0.011296831, -0.016301997, -0.017251475, 0.013663528, -0.019795619, -0.025436714, -0.03300885, -0.021335157, 0.017175995, -0.0049714088, 0.019975437, -0.015079238, 0.008997862, 0.02756114, -0.05478849, 0.032656536, 0.004752977, -0.01447389, -0.041362707, 0.028377963, -0.019536553, 0.00018197075, 0.0011090526, -0.032506224, -0.02935436, -0.029389031, 0.011466957, 0.026673684, 0.042964913, 0.01108105, -0.021348938, -0.019272104, -0.008844102, 0.040562898, -0.034832217, 0.056280434, 0.06615552, -0.03632761, -0.028384853, -0.018938743, -0.024256919, 0.013528288, -0.067410156, 0.024146767, 0.056128826, 0.013561667, -0.022090606, -0.044835012, -0.016769944, 0.045295864, 0.033997737, -0.0061805453, -0.0075330916, -0.007660431, 0.045884844, -0.024344025, 0.005857951, 0.016327623, -0.0034644434, 0.010967937, -0.05012659, -0.022467952, -0.018023936, 0.044744994, -0.06222248, 0.018520532, -0.047395952, 0.054601565, -0.019736828, 0.013496793, -0.006740025, 0.011400387, -0.016508732, 0.0062778834, 0.031077592, 0.0020660681, -0.0068968, -0.011620717, -0.02376818, -0.034376323, -0.02468471, 0.010511881, 0.04984233, -0.0034542142, -0.04426261, 0.00067016925, -0.011731945, 0.01511154, -0.037934337, 0.06513821, -0.01274786, -0.009288262, 0.026417416, -8.9154906e-05, 0.05077232, -0.037148308, 0.0032802115, 0.012898605, 0.0046727723, 0.031355176, 0.006308679, 0.042006172, 0.020159883, 0.05736235, 0.047309384, -0.0015487972, 0.035505943, -0.014291003, 0.06707894, -0.035128757, -0.003967609, 0.010911785, 0.009544313, 0.010982959, -0.017930904, 0.042831395, -1.9381501e-05, 0.033460654, 0.026413111, -0.01327229, 0.00080024067, -0.026498388, -0.025658308, -0.016574629, 0.0013747945, -0.020155901, -0.009866153, -0.00089004164, 0.02035596, 0.045531023, -0.00577488, 0.01611938, 0.027476508, 0.01901013, -0.020615565, -0.025894117, 0.04841241, 0.0342133, 0.013607105, -0.014529235, 0.04095785, -0.046868775, 0.00888265, 0.029618772, -0.028400913, 0.0037382608, -0.037970513, -0.01357046, 0.037062816, -0.04291958, 0.015594357, -0.017567392, 0.081452265, 0.036942866, -0.010320865, 0.0004511583, -0.012461013, -0.07335166, -0.01940648, -0.03220021, -0.051269885, 0.013640271, 0.023065185, -0.042719252, -0.033696678, -0.05020498, 0.03944243, 0.030009456, 0.019462688, 0.016340006, -0.0021797728, -0.024344943, 0.010186917, -0.03066412, 0.05918852, 0.0419364, -0.06374533, -0.012896021, -0.04914804, -0.07668528, -0.022538964, 0.041365292, -0.034527928, 0.0088327965, 0.027072081, 0.042802967, -0.04430697, 0.017837873, 0.02780944, -0.019026605, -0.03910756, -0.016778188, -0.03334286, -0.012347308, 0.0027968583, 0.06340496, 0.013882753, -0.008630367, 0.0057037603, 0.04237905, 0.01775647, 0.017440336, 0.0019930645, 0.032919265, 0.015427245, -0.034770414, 0.025564631, -0.028402515, 0.015639579, 0.014170246, -0.023682255, 0.0026752932, 0.026386406, -0.020870432, -0.013490386, 0.040377267, 0.051974405, -0.04516062, 0.0070456066, 0.0030853197, 0.0554466, -0.0354647, 0.017538967, -0.014837629, -0.06475661, 0.033526983, 0.030758012, -0.006764359, -0.025335498, 0.00063183694, 0.011581739, 0.014061709, -0.047519136, 0.06436726, 0.0058873734, 0.022393063, -0.053573485, -0.0043587917, -0.051423, -0.0025083432, 0.0119596785, 0.025533622, 0.0125695495, -0.00302556, -0.006377914, 0.019963378, 0.009323794, 0.0033129444, 0.021597022, -0.026041847, -0.032543693, -0.049518444, -0.0072200396, -0.02536651, -0.011285633, 0.007424407, 0.02903306, -0.0055202823, -0.002353345, -0.026664793, 0.0129365055, 0.028620824, 0.0025234714, -0.044455137, -0.0076111155, -0.013555637, -0.0065087387, 0.016415702, -0.0025221794, -0.0024999983, -0.009139455, -0.10986297, -0.05170295, 0.06475834, -0.03193942, -0.009480664, 0.04425787, -0.007166848, 0.021242127, -0.031681433, 0.015386327, 0.03914374, 0.045436267, -0.02084588, 0.031811934, 0.030856427, -0.042989355, -0.034464616, 0.036669802, -0.000684813, -0.03859374, -0.0354226, -0.026992403, 0.016054776, -0.030421851, -0.003643507, -0.0101408325, 0.0050374675, -0.005333251, 0.017567717, -0.02181754, -0.005952382, 0.00792445, 0.024426723, 0.029673079, -0.019827276, -0.029473664, 0.060360022, 0.017318018, 0.008455504, -0.015556886, 0.04554416, 0.031751208, -0.03168278, -0.024011526, -0.02602042, 0.030351862, 0.011574202, -0.006892923, -0.034476675, -0.03975275, -0.011806888, 0.021963978, -0.013676449, -0.007704793, 0.043926235, 0.05041085, 0.009246699, 0.016127778, -0.013479188, -0.018548096, -0.055428427, -0.021497961, -0.016702117, 0.014098103, -0.053203516, -0.024152366, -0.061233483, 0.004888607, 0.0056447545, -0.007136269, 0.00090245117, 0.073328406, -0.041946307, 0.031173209, 0.023252632, 0.054684263, 0.022761634, -0.012827324, 0.04733652, 0.0066119456, 0.024996106, -0.009605472, -0.03583354, 0.05026937, -0.020804534, -0.015118432, -0.007972258, 0.032937355, 0.00858299, 0.031476095, -0.0034206195, -0.015054689, -0.021900665, 0.044505093, -0.011507874, -0.024347473, -0.03714271, 0.014765103, 0.030120578, -0.033263177, 0.020792475, -0.03625633, 0.04178953, 0.030504761, -0.007913683, -0.016244283, 0.016521653, -0.049863435, 0.060938023, -0.0009027472, 0.021218007, 0.004244118, 0.042431705, 0.01569471, 0.02364543, -0.033010144, -0.0013834152, -0.019365996, 0.07447234, 0.0048871534, 0.030175287, -0.012830769, -0.054243658, -0.008383576, -0.05309433, -0.046848964, -0.0039176475, 0.0062520416, -0.0051851976, -0.034642927, 0.028040294, -0.019597283, 0.004825563, 0.02638124, -0.021796005, 0.07117232, -0.048334878, -0.064157076, 0.01020716, 0.056288186, 0.059015803, 0.0025333776, -0.013248763, -0.0047682263, 0.028186034, 0.019988345, 0.043423176, 0.01664914, 0.019689022, 0.009504473, -0.024592971, -0.015290712, 0.0013830854, -0.011730545, 0.022685831, -0.008511952, -0.028383994, -0.047345992, -0.008304543, 0.020815033, 0.0012688423, 0.019446537, 0.027540682, 0.0015221746, 0.028786266, -0.055988148, 0.02217933, -0.01671186, -0.013621695, 0.03428157, -0.07419411, -0.0336998, -0.002031612, 0.013292695, -0.03041259, -0.0241304, -0.053452462, -0.029174112, 0.011445315, -0.011614689, -0.008166933, 0.00093817234, -0.0237993, 0.010566364, -0.024550334, -0.005495732, 0.0013170807, 0.047840435, 0.021095257, -0.0099320635, 0.029278073, -0.0477922, 0.029721748, -0.0389383, -0.033757836, 0.0012541985, 0.022697892, -0.004591693, 0.00060298, 0.05927466, 0.008441236, -0.0009879989, -0.027465042, -0.013196649, 0.021538017, -0.042291295, 0.036927897, 0.0024623119, -0.010124897, -0.042060442, 0.035425186, 0.000113920156, 0.0067703896, 0.0053764284, -0.05765006, 0.0053542475, 0.0071765394, -0.013204508, -0.010038757, 0.010957008, -0.00024350702, 0.017150536, -0.002716425, -0.022914963, -0.08319919, -0.017032463, -0.0034230961, -0.019615803, -0.09347913, -0.052958876, 0.03999782, 0.012981298, -0.052502334, 0.04355454, -0.030201118, 0.004685801, 0.040439285, -0.068143636, -0.0026755086, -0.0065955245, -0.0040615015, 0.04770089, -0.015734764, 0.029635608, 0.030205855, -0.026060797, -0.027390368, -0.011775446, -0.011963124, -0.02789278, 0.044474944, 0.0037777238, 0.031149948, -0.0037659334, -0.0061043114, -0.03508461, -0.028460821, -0.050662383, -0.039149716, -0.02545351, -0.012376595, 0.0049076113, 0.020998565, 0.026398897, -0.0039467197, 0.0076115467, 0.0058232797, -0.028011438, 0.011580555, 0.038593575, -0.010359412, 0.02018368, 0.016505286, 0.014429312, -0.0068675117, -0.021950627, -0.016830465, -0.005256263, 0.043643694, 0.047862835, 0.012886546, -0.0076376037, -0.022102663, -0.0066715432, 0.0020018937, -0.00053622155, 0.0009795565, -0.069252044, 0.0026987663, 0.069073945, 0.012162108, 0.026434323, 0.041632324, 0.0007166848, 0.026988525, -0.05641826, 0.0033245736, -0.042823963, -0.057227325, -0.021131005, 0.024193281, -0.019384086, -0.008867253, 0.023616144, 0.010454382, 0.0543285, 0.05796878, -0.040057257, 0.0038160023, 0.012405022, 0.050509054, -0.044584345, -0.006755099, 0.029215245, -0.0037826768, 0.017064335, 0.056183957, -0.047869723, -0.0030984562, 0.019145478, -0.052541096, -0.005282536, 0.008694542, -0.068209104, -0.008474885, 0.019735698, -0.033129446, -0.0021082766, -0.01927684, 0.007064557, 0.030997697, -0.008688081, -0.035385344, -0.013797206, -0.013410276, 0.043963276, 0.05010118, -0.026488053, 0.03853559, 0.004505553, -0.032911297, 0.024753407, -0.010366304, -0.051194727, 0.0090989685, -0.008179855, 0.09087082, 0.0521259, -0.05534754, 0.052706484, 0.017371532, -0.041104503, -0.01272977, 0.010890465, -0.020652927, -0.014590824, 0.024886925, -0.043788627, -0.009887581, 0.06580924, 0.035601664, 0.033149257, -0.031927526, -0.022096634, -0.03423457, -0.0320303, -0.031454023, -0.030052956, -0.021945298, 0.018253928, 0.035123803, -0.012780592, -0.026400514, 0.07329481, -0.03136013, 0.017313281, 0.035909146, -0.007365832, -0.077146985, 0.015928686, 0.006719782, 0.08021788, -0.02312687, 0.06436726, 0.002565034, 3.3594602e-05, -0.03885485, 0.05633729, 0.039777946, 0.0053009484, -0.026705123, 0.03085535, -0.013495716, -0.020117568, 0.013045903, 0.055934153, -0.041513022, 0.026723431, 0.0046713725, -0.035131123, -0.0316319, 0.060557503, -0.07421995, 0.047750853, -0.0059515205, 0.0076232557, 0.029634746, -0.019746304, 0.095358714, 0.021618558, 0.021071138, 0.009954393, -0.0061065056, -0.011930391, 0.03236754, -0.013570496, 0.0040520257, 0.003210869, -0.03994549, 0.010706018, -0.007709207, 0.013132906, 0.010124897, -0.05670812, 0.034558725, -0.03486258, -0.032191813, -0.046954058, 0.069149755, -0.036410518, -0.043759987, -0.050621465, -0.009422855, -0.032814175, 0.009441806, 0.014020147, -0.025125101, 0.0126487985, -0.066703804, 0.011630624, -0.028762147, 0.00851397, -0.0063338745, 0.007890425, 0.020139534, 2.7564802e-05, -0.033196636, -0.016795577, 0.0048975977, 0.06471365, 0.018375387, 0.02488111, -0.002972907, -0.007154789, -0.011841667, -0.004804889, -0.04888534, 0.039834585, 0.055253647, -0.030293286, -0.011118091, -0.023259524, 0.019801434, -0.020139534, 0.010433278, -0.019210944, -0.018047193, 0.041404918, 0.053794004, -0.033837948, 0.020514673, 0.016608654], [-0.029131934, -0.085361525, -0.037595086, 0.005577719, -0.012296186, 0.03444372, 0.013380897, -0.0136319855, 0.041753188, 0.02611154, -0.010302977, 0.029785825, -0.05996176, -0.024222773, -0.039506506, 0.04224964, 0.00502958, -0.03999342, 0.025469868, 0.06475175, -0.017504187, 0.0109797, -0.030443473, 0.019389497, 0.00728896, 0.018578645, 0.01590524, 0.018910091, 0.0034966404, 0.025858544, 0.030321388, -0.040319264, 0.006554055, 0.018283442, 0.02714236, -0.0051675234, 0.0104594, -0.0276722, -0.03454482, -0.067299835, -0.049374547, 0.014888681, -0.042584427, 0.04458598, 0.011326406, 0.026989754, 0.02792925, 0.0014535952, -0.022355225, -0.008622853, 0.032666788, -0.017626094, -0.04480011, 0.013187036, -0.018821865, 0.012493861, -0.010261962, 0.038969036, 0.006867975, -0.00319047, 0.008992764, -0.041400757, -0.06659641, 0.011638478, 0.017491413, 0.00029567882, -0.0010630131, -0.011937794, -0.022534065, -0.054474533, -0.026499499, 0.016164333, -0.0033628696, 0.0018891253, 0.030099625, 0.028863976, -0.046032306, 0.028045611, 0.008954776, -0.024463845, -0.0048510404, 0.0057371226, 0.013321284, -0.07311469, -0.036093324, 0.013864237, -0.015094642, 0.016579952, 0.0396677, 0.030352145, -0.016999625, 0.010168967, 0.035099853, -0.005606452, 0.0030307078, 0.005453843, -0.03794799, 0.034008786, -0.008846281, 0.026768472, 0.025972612, -0.048577167, -0.056411702, -0.03355573, -0.0037427216, -0.0032381602, 0.02493717, -0.040854704, -0.006812297, -0.019258706, -0.004128326, 0.010129265, 0.01217398, -0.04275802, 0.0066618347, 0.011088909, 0.010300382, -0.016516047, -0.026160898, -0.009227087, -0.040239025, 0.020370362, 0.0022824497, 0.03802048, 0.0020354148, -0.033606283, 0.01741882, 0.025884297, -0.0636606, 0.032548513, 0.03933816, 0.01443771, 0.035351086, -0.0077424925, -0.029295094, 0.034266315, -0.019329764, 0.073480956, -0.040222332, 0.026916312, -0.012510075, -0.007162581, 0.041519504, 0.006762461, 0.0328337, -0.004977896, 0.018741746, -0.057964496, 0.00922959, -0.019160464, -0.022207385, 0.012536783, -0.012789421, 0.0011440862, 0.0055519654, -0.06911731, -0.013139585, 0.026667845, -0.0077277087, -0.0031194116, -0.033365626, 0.015392467, 0.01296337, 0.030858377, -0.018104844, -0.055036794, 0.038540304, -0.0010272454, -0.015593481, 0.017027285, 0.061909895, -0.014865968, -0.0132435495, 0.0069710454, -0.03628897, -0.013339287, 0.0031120195, -0.022121545, 0.009883183, 0.017876767, 0.018612891, -0.016645763, -0.0008741601, -0.017363977, -0.037733387, 0.025161432, -0.035550132, -0.018924398, -0.014362836, 0.013466024, 0.015940903, -0.018580552, 0.016547045, -0.0155381, -0.030332832, 0.017689224, -0.031062491, 0.007953045, 0.034202646, 0.03301528, 0.019081775, 0.011159013, 0.021788308, -0.028950056, -0.03609094, -0.053617746, 0.015293153, -0.0011216719, 0.044389974, -0.07874213, 0.005869701, 0.03565553, 0.050435655, 0.0926872, 0.019740377, 0.02518802, 0.04273799, -0.0045534535, 0.034406524, 0.049609184, -0.040614825, -0.0044637965, 0.024941938, -0.04318818, -0.011304855, 0.020263283, -0.021141272, 0.03397588, 0.04647308, 0.015075089, 0.06763224, -0.0075708088, -0.015033062, -0.03200771, -0.020779544, -0.03221564, -0.03978883, 0.0536762, -0.032525625, 0.048533294, -0.0148058785, 0.04661615, 0.022607028, -0.01690949, -0.021470098, 0.022270935, -0.061539344, 0.029595781, -0.011785186, 0.030388629, 0.0480831, -0.007457783, -0.03565535, -0.022628013, -0.03286613, 0.0043607857, 0.009167936, 0.0014496607, 0.008827443, 0.024662, 0.039149784, -0.06636941, -0.010377134, -0.029798701, 0.042318318, 0.018688213, 0.056346845, -0.029377596, 0.0043874923, -0.035622623, -0.0205585, -0.03951795, 0.03905154, 0.017471757, -0.021180619, 0.030771581, 0.0007319243, 0.024502236, 0.07141311, 0.020382762, -0.023457792, -0.004862486, 0.00439703, 0.0120284045, 0.0073920893, -0.001488409, 0.010796569, -0.0411356, -0.0097402325, -0.05364758, 0.026042627, 0.0023806912, -0.0059827273, 0.055637218, 0.047928583, -0.013724267, 0.035181966, -0.017347762, -0.051478162, -0.0128620295, 0.03805863, 0.009361811, 0.014742928, 0.02329818, -0.0011903456, -0.026726741, -0.061117765, 0.038467336, -0.0046742293, 0.018912476, -0.05933415, -0.045744374, -0.04479272, -0.021375313, -0.015608027, -0.022392426, 0.055278588, 0.05962983, -0.016260426, -0.037888855, -0.040397357, -0.037148703, 0.02641127, -0.05650327, -0.012183875, 0.058749475, 0.0024784561, 0.02484884, -0.04984191, -0.0394612, 0.03664748, 0.027508622, -0.010826435, 0.00011576779, 0.010096955, 0.014737325, -0.05495811, -0.008739932, 0.025707843, 0.008222733, 0.031621896, -0.043061327, -0.029132947, -0.010037342, 0.036572848, -0.0742707, -0.001821763, -0.047156002, 0.003656164, 0.0029575033, 0.034240562, -0.017120758, 0.01977996, 0.0153552685, -3.71983e-05, -0.010519013, -0.011168552, 0.010718835, -0.018165767, -0.012751148, -0.016449995, -0.019304726, -0.03482584, 0.048088107, 0.015487325, -0.021537818, 0.038051, -0.004604959, 0.027341707, -0.017804634, 0.072939195, 0.01595068, -0.027288293, 0.024477437, 0.0021059962, 0.051556848, -0.064887196, 0.00052363763, 0.0094641065, -0.004479057, 0.008979098, -0.0011927302, 0.035984233, 0.027480008, 0.0041099354, 0.03747872, 0.0605245, 0.0100557925, -0.017416317, 0.024127392, 0.0071971565, 0.01806836, 0.040691607, -0.00012375589, -0.008859098, 0.007663685, 0.024062533, 0.038370408, 0.00577909, -0.004578253, 0.0062015057, 0.01036402, 0.009385418, -0.038628053, -0.042796172, -0.039066803, -0.014760692, -0.007782523, 0.024325186, 0.0045867176, 0.03991855, -0.027264686, -0.0062857983, 0.00426159, 0.028273094, -0.017633904, -0.033165626, -0.01215526, -0.007748216, 0.01660785, 0.0041337805, 0.012440448, -0.045005176, 0.0259854, 0.009407534, -0.031650033, -0.007224936, -0.06840005, -0.04978945, 0.050160006, -0.0029539268, 0.042433847, 0.020996056, 0.08211859, 0.036171295, -0.020895908, -0.003422244, -0.023362443, -0.057869114, -0.03153653, -0.041578166, -0.04687177, 0.008225117, 0.0055849915, -0.008109469, -0.003235537, -0.033062615, 0.019964997, 0.033658024, -0.04552206, 0.024071118, -0.019644042, -0.026309215, 0.009100172, -0.060257435, 0.05360371, 0.031292833, -0.058870606, -0.021411916, -0.044220675, -0.033087414, 0.02760877, 0.043469556, -0.03195811, -0.008006697, -0.012837469, 0.053716257, -0.053336643, 0.04478485, 0.011846229, 0.012905903, -0.022008996, -0.00012780956, -0.0529401, -0.016495062, -0.0024432251, 0.047232307, 0.022266522, -0.0031051044, 0.051874466, 0.024104621, -0.002649664, 0.044248812, 0.01678335, 0.023754455, 0.00029305587, -0.016909013, 0.0063866624, -0.011569626, -0.007120554, 0.02972812, 0.026363343, -0.007621837, 0.068704315, -0.025182296, -0.025283402, 0.024203934, 0.030735096, -0.044990394, 0.010869059, 0.0703811, 0.03963527, -0.07618212, 0.022923693, 0.0035963128, -0.08965745, 0.008846758, 0.04144201, -0.014494997, 0.013350852, -0.03967819, -0.0102810385, 0.010518536, -0.033428874, 0.075216874, 0.019023951, -0.005630774, -0.038631868, 0.0063923853, -0.0028753574, 0.026402688, 0.0058019813, -0.0064086295, 0.031677693, 0.0004241441, -0.035182443, 0.012996753, -0.04306395, 0.04751511, -0.015138994, -0.048994932, -0.03595645, -0.0368845, 0.011999791, -0.0048314277, -0.0028280248, 0.035265896, 0.036188226, 0.013736665, 0.0037293683, -0.027000245, -0.0010706434, -0.013425249, 0.015525045, 0.0102083115, -0.01622153, 0.0005342487, 0.029101472, 0.0045850486, -0.0020888725, -0.013049451, -0.029586004, -0.060234543, -0.07018461, 0.030755604, -0.0007473044, -0.014846892, 0.0077620456, 0.027664091, 0.026851451, -0.046376742, 0.012653921, 0.026708381, 0.010113169, -0.009986314, 0.020314565, -0.01466567, -0.07712925, -0.08526232, 0.031559423, -0.0140085, -0.032470126, -0.07222766, -0.007795906, -0.007074503, -0.02891131, 0.025878454, -0.014084804, -0.035717048, -0.013501076, 0.019570837, -0.029395243, -0.0050110407, 0.00171835, 0.020728994, 0.03419478, -0.01781465, 0.02413836, 0.03792844, 0.0035233467, 0.040096432, 0.005129789, 0.0483287, 0.02215302, -0.020344611, -0.0045180437, -0.04603433, -0.009906194, 0.01217398, -0.032444313, -0.01391756, -0.05650327, 0.0026689782, -0.0005360371, -0.0100639295, -0.005925499, -0.03094708, 0.032019872, -0.00780449, 0.022420323, 0.019179778, 0.024206556, -0.043257814, -0.035139997, -0.04053566, 0.01017159, -0.03632462, -0.009650575, -0.014834492, -0.02141287, 0.014027337, 0.014157292, -0.01570627, 0.017489878, -0.013114548, 0.017471757, 0.008603777, 0.07787989, 0.064847134, -0.00382761, 0.036236394, -0.0055591194, 0.057958294, 0.01604296, -0.06614812, 0.09050442, 0.034376957, -0.024781698, -0.038670495, 0.0033325865, 0.01719563, 0.019461388, 0.046101097, -0.021459844, 0.048243456, 0.020761123, 0.02029215, -0.020345088, -0.02874475, -0.0012246825, 0.062829845, -0.0017292442, 0.00037770584, -0.05489325, 0.041220963, -0.008359127, 0.001343431, -0.00048882386, -0.00858792, 0.0042081773, 0.044519927, -0.04119283, 0.05226934, 0.022572694, 0.017706392, -0.0038810228, 0.0041527376, -0.01849614, -0.04375188, -0.03415281, 0.023473263, -0.0007287052, 0.0088379355, -0.013534459, -0.033169918, 0.0068516415, -0.06436642, -0.015327608, 0.009102139, 0.021426698, -0.05006701, -0.06549191, 0.008201749, 7.475428e-05, 0.05522708, 0.036895946, 0.016638134, 0.026914878, -0.04426789, -0.015650949, -0.0026421228, 0.025796548, -0.023045778, 0.0026735088, -0.013990734, -0.03508277, 0.04992871, 0.036870196, 0.036105245, 0.058692962, 0.019247737, 0.06884547, -0.0023902294, 0.0045839758, -0.0067939367, -0.01973513, -0.012311685, 0.02163558, -0.055584755, -0.07329019, -0.0024317198, 0.021618892, -0.034623034, 0.047482204, 0.05530529, -0.011890193, 0.0279364, -0.034931593, -0.027379187, 0.022402916, 0.007737247, 0.01934264, -0.044595994, -0.01588153, 0.03931193, -0.024292637, -0.052249312, -0.027301647, -0.03335257, 0.0051686564, -0.027152376, -0.04060147, 0.008438292, 0.038081523, 0.04078651, 0.0009094508, -0.02976055, -0.02724251, 0.022601308, 0.035395138, 0.0044897874, -0.023274692, 0.024245663, 0.012690344, 0.009687773, -0.04072165, -0.036772013, -0.032919545, 0.01020855, 0.011890581, 0.0046022763, 0.017242605, 0.023297941, -0.0079075005, -0.021137698, -0.044134352, 0.022643395, -0.014839261, 0.005114767, 0.0039792648, 0.026056219, -0.0804399, 0.010018266, 0.006203056, -0.021975612, 0.035908166, -0.04534139, -0.001077797, 0.01222775, -0.0111776125, -0.004217715, -0.016465018, -0.0046955706, -0.0055411165, -0.019530777, -0.015405582, -0.032169856, -0.020796474, 0.011554365, -0.04834921, -0.0374296, -0.015670024, 0.03778966, -0.028001739, -0.04986671, 0.06545757, -0.022726495, 0.0020521062, 0.018971015, -0.070732094, 0.013249034, -0.01638451, -0.052925553, 0.031584222, -0.012355559, 0.043977935, 0.006561924, 0.05870655, -0.0320554, -0.023097284, 0.013667992, -0.028753335, 0.02509264, 0.01338042, -0.012607364, -0.003250321, -0.018924398, -0.04348291, -0.029076435, -0.060175408, -0.009133614, -0.023431117, 0.016889937, -0.00756747, 0.016080158, 0.03226142, 0.0061095827, -0.008180289, 0.010890518, -0.004690563, 0.014032344, 0.046928044, -0.014514969, 0.028241143, -0.04792286, 0.017149372, 0.012110193, -0.011154484, -0.036932193, 0.019051254, 0.034790188, 0.040979654, 0.020140676, 0.04284672, 0.024138836, -0.020820558, -0.043549854, 0.013039913, 0.036998957, -0.07778451, 0.008363777, 0.052813962, 0.015144478, -0.008210333, 0.0021076654, -0.030887945, 0.020231733, -0.06762651, -0.022312306, -0.03587252, -0.023579909, -0.0005746661, -0.000976217, 0.008805506, -0.012516036, -0.0068778708, 0.0022404823, 0.042460434, 0.055660143, 0.020207262, 0.02326706, 0.021778177, 0.056840435, -0.037222147, 0.02188071, 0.037397645, 0.013430495, 0.0063544717, -0.0023837911, -0.039934047, -0.010383335, 0.017305795, -0.014497323, 0.038337145, 0.024141312, -0.06888744, 0.0025943432, -0.025082625, 0.0103087, 0.008600438, -0.0154051045, 0.026517145, 0.021964643, -0.008898978, -0.03012654, -0.005868748, -0.051427133, -0.0021594688, 0.031977426, -0.0059612663, 0.0039101136, -0.0042324993, 0.008261481, 0.0024436424, -0.0242645, -0.05926167, 0.07490403, 0.00013639378, 0.05023869, 0.012402773, -0.053078163, 0.071935795, 0.027112793, -0.02322128, -0.020064788, -0.011374096, -0.032451227, -0.07615542, 0.02862314, -0.031623565, 0.026763702, 0.056351613, 0.025822299, 0.009635314, -0.08704594, 0.02866606, -0.034270607, -0.0030731522, -0.02470325, -0.02673461, 0.003215984, 0.03779419, 0.023799283, 0.010870728, -0.021217668, 0.062973864, -0.0078109875, 0.00262868, 0.0013276932, 0.0075627016, -0.020927384, 0.007423923, -0.028362276, 0.07288435, 0.024700627, 0.04789234, 0.01155818, 0.002626534, -0.036285512, 0.01344504, -0.0019428959, 0.02657294, 0.002974672, 0.029453902, -0.01587509, -0.0042880583, 0.009052063, 0.03400068, -0.044797964, 0.0072417464, -0.020196771, -0.04348005, -0.019188602, 0.03840391, -0.006158704, 0.04276386, 0.01774073, 0.0009461722, 0.024982117, -0.040221855, 0.07877838, 0.001795295, 0.008524373, 0.026776103, -0.017624365, 0.009817729, 0.021987716, -0.036117643, 0.025747903, 0.0572005, -0.020419484, -0.023751117, -0.002570975, -0.021324405, 0.0076948623, 0.017496288, 0.035146672, -0.022415793, -0.06626949, -0.058578745, 0.04640059, 0.0009828936, -0.03645243, -0.018537154, -0.017637718, -0.044580735, 0.0038409631, 0.024953386, 0.008068455, 0.0050775683, -0.064812794, 0.0007954714, -0.0023864142, 0.036819164, 0.012959316, 0.020864433, 0.010648252, 0.0028966987, -0.025743132, 0.008234536, 0.023183128, 0.061554607, -0.007597038, 0.017541384, 0.024026288, 0.03222899, 0.013918842, -0.006012772, -0.043208897, 0.035728015, 0.045618474, 0.00065395096, 0.0061987634, -0.018139418, 0.019193847, -0.005115482, 0.011671683, 0.008706788, -0.004858015, 0.018098405, 0.025793446, -0.06562162, 0.0328647, 0.036882594], [-0.02470732, -0.06418544, -0.047785062, -0.052768894, 0.010843555, 0.032612454, 0.021307653, -0.012688062, 0.012607225, 0.03253851, 0.016966235, 0.013742507, -0.08071516, -0.01761935, -0.020752493, 0.040135987, 0.033164997, -0.03865394, 0.02905777, 0.041879214, -0.04723727, -0.0065342356, -0.026641935, 0.0012968376, -0.029312644, 0.050934844, 0.01142035, 0.014757962, 0.0044125053, 0.0072914874, 0.004886352, -0.05719923, -0.015383734, 0.0067413207, 0.012298618, 0.01840418, 0.023815498, 0.0035834515, -0.055967182, -0.02658214, -0.059642404, 0.0055054673, -0.022962432, 0.053622436, -0.0010613408, 0.03822919, 0.013676294, 0.017867805, -0.003826438, -0.036645144, 0.021635516, 0.0023943766, -0.036904417, 0.0002936281, -0.004454588, 0.04802852, 0.044339985, 0.008115073, 0.013604135, 0.011863763, 0.0062491666, -0.010473132, -0.07590298, 0.0046503795, 0.03050582, 0.042010456, -0.0018297667, -0.010438286, -0.010132191, -0.053291477, -0.020146454, 0.015633853, -0.002527817, 0.0053219204, 0.047696613, 0.0137822125, -0.054333802, 0.032981448, -0.016026625, -0.028029952, -0.016124582, 0.0026329048, 0.0019700425, -0.055378497, -0.046394665, 0.0108621, -0.0012498809, 0.018463382, 0.07235567, -0.013763074, -0.022462996, 0.021859245, 0.026939174, -0.007293389, 0.021152634, -0.00016547786, 0.008745125, 0.0599144, 0.027760338, 0.029928667, 3.5663334e-06, -0.07697954, -0.032715164, -0.012135043, 0.034233827, -0.01029006, 0.032207318, -0.003310508, -0.0223281, -0.0005539704, -0.0024366376, -0.004723965, 0.0075790524, -0.0503105, 0.017846644, -0.004264383, 0.013070374, -0.035462666, -0.04581692, -0.026872499, -0.0068610455, 0.009754634, -0.006481335, 0.02856395, 0.0052230135, -0.01280587, 0.0320504, 0.021506416, -0.031213261, 0.02128578, 0.010688539, 0.01715644, 0.021072274, -0.03036804, -0.023998093, 0.005570137, -0.017311933, 0.06387825, -0.038368754, 0.06408368, -0.044439364, 0.0018787442, 0.033631947, 0.009060388, 0.036302418, -0.0122686615, 0.0061540646, -0.08240274, -0.003627674, -0.042404175, 0.012946265, 0.007379219, 0.0025829761, 0.015516878, -0.016146455, -0.04796721, 0.0066276737, 0.030980023, -0.045032803, 0.042978596, -0.025678312, -0.0060256766, 0.012043744, -0.0012727054, -0.027573936, -0.042128377, 0.01205801, 0.00070185435, -0.007401806, 0.043863043, 0.0816928, -0.023922013, 0.007831193, 0.042647637, -0.051823873, -0.03492819, 0.0035102228, -0.019671537, 0.032760814, 0.019309407, -0.012516403, 0.01995625, -0.016418684, -0.015671182, -0.045380875, -0.007895148, -0.018360434, -0.03018806, -0.0041274363, 0.00031764142, 0.029444834, -0.018232523, 0.005269673, -0.00058155006, -0.034339033, 0.03859798, -0.02775273, 0.024206132, 0.019884923, 0.042248208, 0.03243342, -0.0011302899, 0.027149066, -0.024539344, -0.035167374, -0.051495947, 0.007614508, -0.0043956246, 0.05195774, -0.020337133, -0.0053999037, 0.06491487, 0.030311337, 0.042184018, 0.037447926, 0.02250689, 0.051864944, -0.04230242, 0.060407978, 0.05857916, -0.018611504, 0.021457199, 0.028998569, -0.033173554, -0.011173084, -0.003325249, 0.00032810264, 0.017571323, 0.024468848, 0.001768188, 0.05727341, -0.019610077, -0.016459342, -0.06563194, 0.01848692, -0.028992862, -0.03151854, 0.054719914, -0.04440884, 0.030726576, -0.034039937, 0.038885396, 0.031277217, -0.022151208, -0.020286255, 0.011179266, -0.07430907, -0.0074607693, -0.009805158, 0.016325723, 0.061065137, -0.039678548, -0.008712968, -0.014151685, -0.0100909285, -0.021262478, -0.0018830239, -0.009038515, 0.02880765, 0.037096523, 0.007462671, -0.031546358, -0.02623157, -0.037087012, 0.030609598, 0.012153112, 0.02870518, -0.050329994, 0.0339125, -0.019785065, -0.022476876, -0.0584774, 0.040111974, 0.022698047, -0.028690832, 0.026621964, 0.0065011876, 0.022519017, 0.034967184, 0.026270086, -0.046070367, -0.013886825, 0.014880643, -0.0031995953, 0.03801616, -0.018698998, -0.0064602937, -0.0648407, -0.012639798, -0.041634325, -0.0048556817, 0.012202803, 0.020369707, 0.055882063, 0.056699704, -0.021869706, 0.069223, 0.012280075, -0.048289575, -0.03461697, 0.007456014, -0.006597241, -0.01651545, -0.03382881, -0.005551592, -0.028868278, -0.047678545, 0.030617684, 0.015120301, 0.028085113, -0.046524007, -0.028476933, -0.06530955, 0.030155012, 0.01254208, -0.022048498, 0.045144547, 0.106282435, -0.031425577, -0.028355204, -0.043220155, -0.0026216113, 0.015026151, -0.077108875, -0.008583451, 0.036138844, 0.025974317, 0.00088575826, -0.055726096, -0.050343312, 0.027133614, 0.031044217, 0.005198168, 0.0009707559, 0.038291123, 0.037811216, -0.008646694, -0.0053190673, 0.03381502, 0.062598184, 0.018423557, -0.030391103, -0.040943407, -0.019555394, 0.0039724195, -0.054016158, -0.023233948, -0.07224084, 0.034821678, 0.0039268895, 0.02544983, -0.009908224, 0.006430099, 0.023255346, -0.03322681, 0.00039182112, -0.0106096035, -0.005778411, -0.007499761, 0.0049025193, 0.016438084, -0.013907272, -0.03323442, 0.03772895, 0.012241558, -0.029543296, 0.06247455, 0.004318116, 0.02199429, -0.016764618, 0.052728474, 0.029098902, -0.003943651, -0.0136241065, 0.0062626, 0.04704136, -0.023370419, 0.011026508, 0.036613405, 0.0071402746, 0.018091295, -0.027062288, 0.03804279, 0.01426557, 0.03371992, 0.03747253, 0.041789815, 0.023783937, -0.018565854, 0.02022967, 0.02317546, 0.025284827, 0.021190677, 0.04711174, 0.016863883, -0.030540057, 0.035125054, 0.03982453, 0.02007703, 0.018257724, -0.012569899, 0.01554636, -0.021764144, -0.017570134, -0.011361387, -0.04001711, -0.040008552, 0.022526031, -0.011635756, 0.02816381, 0.035804085, -0.018094148, -0.024990011, 0.027357223, 0.00996802, -0.003266761, -0.03596415, 0.020944748, -0.030379215, 0.0016847358, 0.026342364, 0.059334274, -0.08166618, 0.012097002, 0.009783878, -0.014080716, -0.015549688, -0.028977646, -0.05204564, 0.022790771, -0.015057059, 0.0047798376, 0.00977844, 0.07401805, 0.059336174, -0.0019761645, -0.016438417, -0.038879212, -0.054113638, -0.012568946, -0.016761528, -0.07645457, 0.01404006, -0.008737041, -0.011989061, -0.0055206837, -0.04275225, 0.022080356, 0.010869233, -0.005196861, -0.0026695193, -0.017097477, -0.042841647, -0.039465517, -0.029336657, 0.032643836, 0.062870175, -0.056342356, -0.011952447, -0.042235848, -0.039599612, -0.023367, 0.035977643, 0.0012033996, 0.012566807, 0.036577024, 0.0068566324, -0.06612647, 0.013143602, 0.029540414, 0.0063970503, -0.04582429, -0.031108174, -0.0401181, -0.027106272, 0.007432238, 0.02825487, -0.00729862, 0.014147644, 0.0012425105, 0.017212313, 0.034644786, 0.040702324, 0.026183067, 0.025838323, 0.015820254, -0.02217974, -0.0074426993, -0.006290061, -0.01261947, 0.02657049, 0.027076077, -0.0001266457, 0.06083689, -0.025372619, -0.0067608166, -0.018511647, 0.04619305, -0.04352573, -0.011076317, 0.08855158, 0.025320966, -0.081947684, 0.038645737, 0.009631001, -0.060814064, 0.033631235, 0.06715929, -0.018953396, 0.013909651, -0.020930571, -0.039478835, -0.00079707545, -0.027252017, 0.049413208, 0.06085781, -0.0015356631, -0.018049538, -0.01279642, -0.038662616, -0.012406085, 0.01268616, -0.028792195, 0.035920106, 0.0059876353, -0.022695193, 0.021306701, -0.037983827, 0.027252492, -0.0072039934, -0.0052838796, -0.06617117, -0.071621954, 0.0077127903, -0.016648594, -0.010010459, 0.039117444, 0.01096909, -0.011403232, -0.019378979, -0.03597907, 0.00840604, 0.010824059, -0.0020052302, -0.027636705, -0.004360199, 0.0063319053, 0.012880169, 0.013232523, -0.022129335, -0.028394282, 0.010936279, -0.061706126, -0.05649072, 0.06800189, 0.0034783636, -0.00031954344, 0.006550581, 0.038743693, -0.02605361, -0.013223964, 0.009228957, 0.013492865, -0.000589396, 0.035355706, 0.031547308, -0.022351874, -0.061824054, -0.09059817, 0.033402275, -0.033550162, -0.038935203, -0.05561007, -0.03557322, 0.019843077, -0.039629094, 0.010336422, -0.025527336, -0.0014533997, -0.0069158333, -0.00699144, 0.0029006177, 0.021439368, -0.011397288, -0.0050998563, 0.05434236, -0.030193053, 0.023103658, 0.048556816, 0.0040758434, 0.013597715, 0.0027227765, 0.023562051, -0.01565549, -0.051284824, -0.049834512, -0.0322368, 0.016491437, 0.020798855, -0.048921533, -0.039216824, -0.04077793, 0.00091844966, 0.037260097, 0.01317983, -0.032890625, -0.019415118, 0.039760336, -0.013449356, 0.008787445, 0.010672847, 0.007213265, -0.013836541, -0.016728004, -0.018622916, -0.013152399, -0.04399809, -0.0055577736, -0.038884204, -0.015837848, 0.0025363762, -0.00084688526, -0.0007841178, 0.04873846, -0.028826553, 0.0010437468, -0.011407214, 0.07110281, 0.010602946, 0.03605896, 0.033559673, 0.0029087013, 0.07572419, -0.015224082, -0.021538036, 0.06967569, 0.03680836, -0.03201711, -0.03605325, 0.010906441, 0.023935325, 0.03725035, 0.0155160455, -0.012342486, 0.010598192, 0.017985493, -0.003208511, 0.016040416, -0.027448403, 0.004939609, 0.05986542, -0.0313086, 0.006686518, -0.029840222, 0.018944837, -0.0006295767, -0.01278471, -0.006597479, -0.04654683, -0.016484305, 0.026509268, -0.05753304, 0.040448878, 0.037765685, 0.021139797, 0.012263906, 0.023475982, -0.030051231, -0.019893005, -0.015733711, 0.055717535, -0.007786019, 0.041013785, -0.018810743, -0.0027108889, 0.008535899, -0.04155967, -0.026973605, 0.005385638, 0.048714686, -0.0031564427, -0.007962434, -0.0035589626, -0.020096526, 0.040372793, 0.024823582, -0.00894059, 0.018398741, -0.0514541, -0.047642883, 0.01971897, 0.015364358, -0.007101283, -0.007477887, -0.009428434, -0.02035758, 0.049399897, -0.007769079, 0.025388487, 0.0068611493, 0.028225388, 0.054636344, 0.014091771, 0.023609601, 0.00013504515, -0.0101854475, 0.053799327, -0.017072273, -0.044570606, -0.086737745, -0.032893956, -0.0037668205, -0.00650832, 0.030715164, 0.036174983, -0.017885398, 0.026180927, -0.05766618, 0.029578691, 0.0053720865, 0.015657153, 0.011620064, -0.053497612, -0.010033284, 0.055986673, -0.02579933, -0.03336471, -0.046002842, -0.010856393, -0.0044310503, -0.028002372, -0.006860674, 0.007528292, 0.013494054, 0.03150451, 0.015129336, -0.051520675, -0.025533043, 0.0026357581, 0.027598664, -0.00162815, -0.029187823, 0.0038454582, -0.005020446, 0.008437945, -0.057087958, 0.00057251536, -0.021702755, 0.015014024, -0.005702329, 0.0046105557, 0.03518021, 0.034339488, 0.01840228, -0.019265808, -0.050587963, 0.031736784, -0.06004255, 0.0027678972, 0.008429861, 0.028784115, -0.08654492, 0.006669994, 0.011419399, 0.013391105, 0.019498806, -0.030449828, 0.02318402, 0.009627197, -0.0053485483, 0.0015663336, -0.015793625, -0.015887776, -0.026516639, 0.01155587, 0.018311458, -0.07794198, -0.0102212895, 0.0039425814, -0.024148354, -0.031592958, -0.015010933, 0.026906319, -0.034296237, -0.043028045, 0.04211982, 0.0018221586, 0.008502139, 0.052313827, -0.05670446, 0.031718493, -0.014759864, -0.029980022, 0.0037562998, -0.053138364, 0.053934373, -0.018400377, 0.04201616, -0.029905844, 0.009261054, 0.0031188773, -0.0094769355, -0.005819305, 0.0140523035, -0.010938182, 0.0022957674, 0.006114597, 0.02611602, -0.04338278, -0.06107084, -0.014876365, 0.019098427, 0.0064821676, -0.00804755, 0.01619472, 0.0021340938, 0.027438892, 0.011614358, 0.028728478, 0.03955872, 0.006607702, 0.0026100804, 0.035594385, -0.022313835, -0.0366581, -0.003607465, 0.0026543029, -0.018738108, -0.038632423, -0.01602092, 0.019355204, 0.014374611, -0.0024950067, 0.05073513, 0.013234663, 0.004667617, -0.019091295, 0.00093342824, 0.025334755, -0.053622436, -0.025768898, 0.057354245, 0.022363525, -0.015162147, 0.011738467, -0.03341369, 0.03070185, -0.045455057, -0.017521633, -0.054904412, -0.037789818, 0.005553256, 9.320017e-05, 0.018387835, 0.013168804, 0.0034807413, -0.01382596, 0.06341416, 0.033415116, 0.028677123, 0.02703025, -0.020067401, 0.017816449, -0.017898237, 0.007311934, 0.031665236, -0.010385162, 0.007739151, 0.0058487863, 0.012765096, 0.021775555, 0.04199334, -0.022237752, -0.01304208, 0.0035126004, -0.0553571, 0.020753205, -0.028648593, 0.012959817, 0.024687584, -0.018428909, 0.030592483, 0.040020917, -0.017410362, -0.02505563, -0.02453447, -0.021362811, -0.011394709, 0.030417256, -0.01386424, -0.023514975, -0.022570608, -0.015910601, 0.012704706, -0.029812645, -0.058192693, 0.07595981, -0.025291009, 0.04175582, 0.05223109, -0.03476842, 0.06788016, 0.03903233, -0.016038276, -0.024148297, -0.0027857518, -0.017604847, -0.06800189, 0.015883973, -0.0346096, 0.06463908, 0.055037078, 0.02873466, 0.004275796, -0.06827579, -0.0021754634, -0.030883495, -0.046413448, -0.04230558, -0.027869705, -0.0073043257, -0.0028949114, -0.0014898654, 0.012003802, -0.030316684, 0.078497365, -0.0089358045, 0.011775914, 0.016660482, -0.0045370893, -0.014856869, 0.008056584, -0.0031364711, 0.0421707, 0.008272466, 0.026927719, -0.02972515, -0.008726906, -0.035005227, -0.0027713974, -0.017461717, 0.005510222, -0.01324239, 0.013497857, -0.010466712, -0.0068454575, 0.035740364, 0.07202661, -0.035268657, 0.020195907, -0.0005625296, -0.04185377, -0.0031564427, 0.04911762, -0.00417475, 0.025150375, 0.0030727529, -0.020057295, 0.028003799, -0.035513368, 0.07892652, 0.027694479, 0.012052067, 0.015065261, -0.020860435, 0.020695906, 0.025312882, -0.017166901, 0.003081312, 0.014168329, -0.010533165, 0.014446978, -0.009910602, -0.040642884, 0.0030309076, 0.02045732, 0.05576604, -0.01822741, -0.059732754, -0.033831663, 0.052906793, -0.018388964, -0.0032096996, -0.0056471694, 0.018543981, -0.028285302, -0.011266523, -0.006502139, -0.011976698, -0.03155682, -0.06409509, -0.006223489, -0.0097765075, 0.036574412, 0.027248688, 0.04347693, 0.023892531, -0.013907749, -0.051223956, 0.00898811, 0.012362769, 0.05019685, 0.010902518, 0.045711834, 0.010404183, 0.033657506, 0.024941508, 0.020851992, -0.044093963, 0.03950356, 0.04211982, -0.0014075128, -0.024507068, -0.010546182, -0.006238943, -0.011357107, -0.013596883, -0.01717451, -0.01708036, 0.037817396, 0.010129813, -0.03071136, 0.008657393, 0.021269135], [-0.022107933, -0.0727456, -0.035291977, -0.04516625, 0.008189505, 0.03009742, 0.0031201812, -0.0096411165, 0.0259986, 0.020001825, 0.011676805, 0.024913516, -0.057581585, -0.0037873278, -0.01854977, 0.0021114352, -2.071195e-06, -0.024904046, 0.04020219, 0.054864176, -0.01943269, -0.006425623, -0.028580122, 0.03650984, -0.018116001, 0.01309487, -0.00075404433, 0.0021179449, 0.0049800402, -0.011958488, 0.019878736, -0.0339889, -0.009011769, 0.0143353315, 0.012026356, 0.024494542, 0.045301173, -0.019977858, -0.05843847, -0.035805486, -0.07287765, 0.036363672, -0.030724697, 0.015801478, 0.02092321, 0.039194107, 0.02198544, 0.03727204, -0.007226695, -0.03170585, 0.041767124, -3.313912e-05, -0.042910423, 0.011092137, -0.01956865, 0.02336308, 0.043461952, 0.039748006, 0.0392092, -0.005179171, 0.019115353, -0.0055510984, -0.05453397, -0.0040607257, 0.02527479, 0.020153318, 0.024579758, -0.00530936, -0.0038340776, -0.058160927, -0.028453484, 0.025070854, -0.0034807909, -0.011483888, 0.06344721, 0.007666972, -0.07075675, 0.0009958749, -0.023950113, -0.012283961, -0.007046575, -0.00036778502, -0.0035955943, -0.066372916, -0.065267496, 0.022168886, -0.012876915, 0.015677761, 0.05228406, -0.015963586, -0.038637843, 0.01210288, 0.024989262, -0.0016474876, -0.02088889, 0.013445013, 0.003480199, 0.03694065, 0.030398335, 0.047591913, 0.04198904, -0.046412516, -0.018051943, -0.00472839, -0.0036837682, 0.006101148, 0.038220648, -0.019994725, -0.0013297071, -0.0017261191, 0.032741446, 0.010456279, -0.009909928, -0.08967446, 0.02919142, 0.0025271536, 0.037795164, -0.018722419, -0.04511181, -0.036651865, -0.017827163, 0.013424893, -0.009534302, 0.0305519, -0.009797491, -0.018582761, -0.01579789, -0.0006030136, -0.06008359, -0.014067555, 0.03973735, 0.015230384, 0.047788087, -0.019763637, -0.042261846, 0.014709035, -0.024163151, 0.05571159, -0.02517212, 0.041232165, -0.049126077, -0.020162787, 0.024392758, 0.017297436, 0.028457923, -0.039232574, 0.0063567925, -0.046147402, 0.0082066655, -0.051048446, 0.0045211227, 0.0053442745, -0.00020704552, -0.0012131284, 0.0030470237, -0.033422872, 0.00026511296, 0.021953482, -0.036457762, 0.006836571, -0.018399904, 0.0052430816, 0.037301626, 0.0016122774, -0.032763936, -0.040917344, 0.017575568, 0.0132518, -0.006747953, 0.0460184, 0.07690169, -0.0010708078, -0.010638544, 0.0485062, -0.044017106, -0.037210494, 0.00640517, -0.0399066, 0.03616543, 0.028758245, -0.017239591, 0.021465862, -0.0062632933, -0.00076456676, -0.03718801, 0.029745316, -0.04817363, -0.029674305, 0.007970845, 0.0026215408, 0.030093871, -0.0160346, 0.015951898, 0.03297224, -0.007404226, 0.025022402, -0.031378012, 0.025715956, 0.019971497, 0.055290252, 0.002803806, -0.004569648, 0.011390389, -0.036141757, -0.032644935, -0.058608156, 0.018199293, 0.009417428, 0.05459906, -0.044341322, 0.015393333, 0.062022224, 0.027874732, 0.04231569, 0.055811007, 0.044709403, 0.039795347, -0.053278234, 0.028552828, 0.055001467, -0.048785515, 0.01809529, 0.02635921, -0.04397916, -0.050938375, 0.011797527, -0.018025424, -0.009450566, 0.010657777, -0.0002266479, 0.06449346, -0.032334313, -0.028823933, -0.0626365, 0.015629532, -0.007961821, -0.057868, 0.037746638, -0.04127004, 0.037708767, -0.02387851, 0.033946294, 0.025048438, -0.027575592, -0.012540789, 0.0017291518, -0.053131472, 0.010105064, -0.01833895, 0.0015019121, 0.039303884, -0.0124177, -0.03093655, 0.012131284, 0.0021540427, -0.010713995, -0.013859253, 0.005831597, 0.0043029445, 0.031799942, 0.009054081, -0.03044479, 0.005333031, -0.024330622, 0.027280742, 0.019847965, 0.028874824, -0.013214297, 0.0124106, -0.043428816, -0.03963912, -0.06632558, 0.02968318, 0.01848571, -0.01348052, 0.062202122, 0.042271312, 0.02725086, 0.046792433, 0.027701935, -0.054606166, -0.011286829, 0.017628236, -0.0024475604, 0.029310364, 0.013618994, 0.015822006, -0.032408282, -0.00017871453, -0.046773497, -0.0010711036, -0.0029884384, 0.02257129, 0.05700165, 0.046627924, 0.009322744, 0.07330373, 0.0059934463, -0.056331765, -0.027410785, 0.02165878, -0.015437207, -0.02104334, -0.0035364174, 0.008610845, -0.021111391, -0.03548726, 0.018805265, 0.036468416, -0.00796049, -0.02599971, -0.03174136, -0.05889339, 0.008606407, 0.03450137, -0.012286623, 0.05389959, 0.070491634, -0.017105406, -0.03218755, -0.008128552, -0.021977153, 0.008779499, -0.06191334, 0.0394104, 0.055597972, 0.022847055, 0.010856613, -0.046731483, -0.035589635, 0.034381833, 0.035890847, -0.008343956, 0.008105177, 0.01892362, 0.016140083, -0.027209582, 0.021502554, 0.017302763, 0.037744273, 0.01913784, -0.065726705, -0.017364603, -0.014071107, 0.03972108, -0.05957289, -0.015612075, -0.060644586, 0.005116443, -0.009249364, 0.0355204, -0.038884614, 0.024506377, 0.009069023, -0.011115807, 0.0050507938, 0.0057910606, -0.0031600515, 0.003432266, -0.0008083578, 0.0067012035, -0.04053861, -0.043114286, 0.03343796, 0.021274721, -0.014024949, 0.06779317, -0.020648925, 0.018402861, -0.019758016, 0.06473963, 0.0044850246, -0.004188548, -0.006511837, 0.010132285, 0.066301905, -0.05561898, -0.02437382, 0.04085817, 0.0029505652, 0.011411692, -0.02649236, 0.061302632, 0.007561636, 0.056130562, 0.03916807, 0.04031137, 0.012506318, -0.022032188, 0.024967957, 0.025385156, 0.008355792, 0.014685363, 0.04057308, 0.025922483, 0.0022374822, 0.045775775, 0.022496026, 0.009760654, 0.023291178, -0.0045909514, 0.02987373, 0.006515387, -0.009466544, -0.031896994, -0.051095784, -0.052682914, 0.009789059, -0.008818557, 0.0248212, 0.036350064, -0.014074657, -0.005074723, 0.024475606, 0.03310361, -0.012026541, -0.022968663, -0.003423685, 0.012998819, 0.006080436, 0.04493546, 0.03722233, -0.05480263, 0.031543706, 0.020773346, -0.011669557, -0.033764027, -0.039810732, -0.053127334, 0.023875551, 0.02491618, 0.012589314, 0.015453481, 0.06442718, 0.050343055, -0.00030061914, 0.0118312575, -0.021875959, -0.07977059, -0.018438367, -0.020988898, -0.036250647, -0.019459764, 0.031001644, -0.036942646, 0.027931543, -0.02133449, 0.013769525, 0.03370071, -0.0073238364, 0.02134041, -0.03806501, -0.008242172, -0.04399691, -0.038611807, 0.022637863, 0.0702928, -0.04319033, -0.0055437014, -0.03480961, -0.04722561, -0.0018273857, 0.033552766, -2.8404958e-05, 0.0105986, 0.013297958, 0.040660217, -0.031573296, 0.001607839, 0.018832488, 0.030459583, -0.030726472, -0.015310273, -0.055776685, -0.026601244, 0.0109169725, 0.054168258, 0.005379559, -0.018619599, 0.019398656, 0.029321017, 0.023690624, 0.044149593, 0.051685188, 0.009354552, 0.023931473, -0.024776224, -0.0017185, -0.009617445, 0.00889519, 0.0069071394, 0.039795347, -0.010136428, 0.042868998, -0.029589571, -0.021119088, 0.020482343, 0.036277868, -0.047888983, -0.007167222, 0.027840411, 0.041610897, -0.06715406, 0.015826296, 0.013897126, -0.07332267, 0.030154822, 0.069909334, -0.030425854, 0.0021883654, -0.032185186, -0.04790141, -0.013897126, -0.0030789792, 0.05300247, 0.060672987, 0.00772319, -0.026385838, -0.01549668, -0.0154818855, -0.023554813, 0.0018285692, -0.006866011, 0.034694288, -0.0073225615, -0.03655955, 0.033160422, -0.02502181, 0.017876187, 0.0014847509, -0.012261474, -0.01968227, -0.06746651, -0.00024380923, -0.020047983, -0.0054729846, 0.026310094, 0.0047240993, -0.0025283373, -0.012737257, -0.015781322, -0.004208668, 0.016255032, -0.0067768013, -0.027082944, -0.007002266, 0.004517572, 0.005644006, 0.019497821, -0.020276407, -0.005296933, 0.022257652, -0.09526076, -0.04459401, 0.083299905, -0.008831575, -0.016145851, 0.047772408, 0.03337464, 0.011212857, -0.0062811947, 0.016319241, 0.016524585, 0.009243447, 0.02346782, 0.0355707, 0.0076953764, -0.06775293, -0.065842696, 0.041279208, -0.046539158, -0.043473788, -0.057752017, -0.011105155, 0.0054496094, -0.043741267, 0.021255193, -0.038095783, -0.026704213, -0.025820402, 0.005737506, 0.017627643, -0.001211649, -0.011554604, 0.012020919, 0.020523174, -0.016367173, 0.024389723, 0.042151775, -0.0070568565, 0.02274527, 0.0003290241, 0.039530236, 0.013992992, -0.018760882, -0.0096476255, -0.02683795, 0.02284158, -0.0045234896, -0.022193741, -0.018627735, -0.079784796, -0.031210836, -0.0072195935, 0.033037186, 0.0048548807, -0.011750776, 0.03536891, -0.0029476061, 0.002104334, -0.0034014937, 0.02091315, -0.01970594, -0.02951867, -0.010793588, -0.0028481889, -0.03211062, -0.0047980705, -0.034862354, -0.020556904, -0.0015309089, 0.0031141895, 0.020387659, 0.031028867, -0.038346693, 0.019777544, 0.0027434453, 0.07039695, 0.01639321, -0.003223371, 0.046300083, 0.01420603, 0.076179735, -0.013710422, -0.06898145, 0.094796814, 0.02646928, -0.046203434, -0.00065745646, 0.010816372, -0.0016983799, 0.05031228, -0.0029706853, 0.007179205, 0.021007834, 0.004950156, 0.019202935, -0.0043929303, -0.01747615, 0.037226476, 0.04033149, -0.016254736, 0.008641616, -0.052302994, 0.02327692, 0.00030890392, -0.02024741, -0.00039175173, 0.017310455, -0.041651137, 0.06072625, -0.07983214, 0.02394183, 0.02883547, 0.026712498, 0.022096692, 0.053011347, -0.024273813, -0.007506306, -0.012996452, 0.04278615, -0.002495198, 0.027926216, -0.02707673, -0.00034204303, 0.0049347696, -0.052378744, -0.018399904, 0.0026617812, 0.03673649, -0.024319379, -0.011016094, -0.006308268, -0.023080213, 0.027423212, 0.012115306, -0.004967317, 0.033811368, -0.06609834, -0.039534375, -0.020553354, 0.01562746, 0.011428261, -0.013418384, -0.0062675835, -0.0154883955, 0.050170254, 0.02317371, 0.019370407, 0.0332338, 0.05204735, 0.04476481, 0.0055271313, 0.03396138, 0.0080446685, -0.022847055, 0.038025953, -0.002484842, -0.02528574, -0.080244005, -0.02371666, 0.016221005, -0.029212132, 0.04473781, 0.03792772, -0.00011953753, 0.02804627, -0.055230632, -0.013210377, -0.022446427, 0.023221053, 0.006391708, -0.050340686, -0.023231113, 0.06872106, -0.024733616, -0.028485438, -0.046880018, 0.0062609264, -0.008039195, 0.0005982794, -0.022244634, 0.019586403, 0.018654069, 0.014849876, 0.014664208, -0.044233624, -0.058544394, -0.020494178, 0.014567009, -0.043185007, -0.033541523, 0.039290566, -0.0054404372, 0.0049197073, -0.0569046, -0.018992266, -0.05210179, 0.007095322, -0.012988167, -0.00937837, 0.02652313, 0.01802768, 0.011930601, -0.010800986, -0.030994544, 0.014634471, -0.042410675, 0.020410145, -0.0065331403, 0.012241353, -0.07287055, -0.005664422, 0.004996018, 0.004577045, 0.016283143, -0.021126779, 0.012055538, 0.0049874373, -0.006943681, -0.018853791, 0.001487118, -0.023541793, -0.009105712, 0.0002763566, 0.0078060376, -0.09060708, -0.05120467, 0.02076876, -0.044947296, -0.055678155, -0.019913651, 0.03977404, -0.04821742, -0.047301356, 0.03751585, -0.030788017, -0.015832214, 0.012813004, -0.057183914, 0.021126188, 0.011155048, -0.033809002, 0.024989557, -0.03752502, 0.03387883, -0.008436273, 0.06621669, -0.03547779, -0.00083321217, -0.0038311186, -0.006816746, -0.0034736898, 0.01684059, -0.0058567473, 0.0027150407, -0.0006829026, 0.021452846, -0.01213957, -0.07135326, -0.016230326, 0.019516574, -0.005063184, 0.0008876549, 0.032468345, 0.012400669, 0.015785463, 0.024831852, 0.037527684, -0.024913812, 0.020480715, 0.017084103, 0.0011699293, 0.009561227, -0.02003023, 0.00991333, 0.044382747, 0.003646043, -0.01106018, 0.037691012, 0.045040794, 0.00586444, -0.0041636936, 0.052860446, 0.007423162, -0.009271852, -0.0034090388, -0.001245084, 0.017871896, -0.038198307, -0.028864171, 0.03973735, 0.0028623913, 0.025428355, 0.007778224, -0.02525911, 0.043625873, -0.06245274, -0.024560822, -0.07013658, -0.034354612, -0.006092863, -0.02891033, -0.006230154, 0.02859906, 0.006299391, -0.027059272, 0.037862033, 0.03754544, 0.014375646, 0.015191327, -0.021681268, 0.058329582, -0.044044845, 0.0151539715, 0.03805791, 0.0016042884, -0.007985936, 0.040749278, -0.028036432, 0.005738393, 0.034964137, -0.03147861, -0.005624182, 0.014334444, -0.059644498, -0.0013604792, -0.017112212, 0.0090114735, 0.02713857, -0.026485847, 0.04487983, 0.025976334, -0.0189106, -0.0037334766, -0.011066099, -0.037311688, -0.00032636116, 0.036608074, 0.014401314, 0.008617355, -0.005963266, 0.0073722703, 0.013157413, -0.027633289, -0.045092873, 0.057379197, -0.005526244, 0.04172925, 0.0527557, -0.032354727, 0.054589596, 0.02905709, -0.016692942, -0.02867599, 0.0041992, -0.014963496, -0.07014974, 0.017256012, -0.04118364, 0.046442106, 0.050081197, 0.03510143, 0.009128643, -0.043506928, -7.69301e-06, 0.013275175, -0.018395761, -0.04191625, -0.041373007, 0.0062400666, 0.007635608, 0.017932998, -0.014395396, -0.030067831, 0.060268223, -0.0043645995, 0.0023505103, -0.003910416, 0.0016486711, -0.03322374, 0.040171713, 0.0013989442, 0.06501214, 0.016517779, 0.040367883, -0.023986805, 0.022937596, -0.029122183, 0.027222972, -0.006406502, 0.0065047354, -0.03374509, 0.018685728, -0.03299946, -0.00015030957, 0.038606036, 0.060247507, -0.021406094, 0.024907598, 0.014039447, -0.06074223, -0.016466592, 0.037285354, -0.030982709, 0.04644329, 0.013592069, -0.017369188, 0.036914613, -0.029672528, 0.09640642, 0.02893637, 0.0040846923, 0.023702163, 0.0035387843, 0.0050645154, 0.020247852, -0.017444111, 0.010249752, -0.008065085, -0.010337038, -0.013476377, -0.0038760933, 0.005711468, 0.009333248, 0.007324929, 0.045808766, -0.03674418, -0.057436008, -0.062817566, 0.04881777, 0.004610184, 0.0022911853, -0.02609232, 0.01741076, -0.018100468, 0.0063266126, 0.004224054, -0.018928947, 0.004892754, -0.052014213, 0.0032713045, -0.007185271, 0.031318832, -0.0048094625, 0.034155186, 0.029967822, -0.019937914, -0.02317963, -0.0048323935, 0.023215136, 0.053770587, 0.007852788, 0.03751348, 0.022358844, 0.01531264, 0.02152859, -0.008944011, -0.052554797, 0.019836128, 0.030838318, -0.0038328941, -0.028907372, 0.00084563927, 0.011802261, -0.013031958, -0.006574564, 0.009290788, -0.0041011507, 0.045523677, 0.035078347, -0.04006756, -0.005231764, -0.00344669], [-0.01957909, -0.070735596, -0.036581073, -0.056152277, 0.0152128525, 0.031603783, -0.01996731, -0.013808763, 0.023324272, 0.01008948, 0.01722105, 0.014937873, -0.05114803, -0.010335267, -0.055517565, 0.021730427, 0.012665998, -0.042574704, 0.012700842, 0.045162994, -0.026971513, 0.014181917, -0.036346234, 0.015358817, -0.016050974, 0.03254364, 0.0038781967, 0.02187027, 0.01986584, 0.009240999, 0.01356439, -0.025258541, -0.008327658, 0.014663601, 0.023070952, 0.020683717, 0.03260229, -0.018595945, -0.03482255, -0.057499867, -0.046309527, 0.013154841, -0.03540641, 0.052566245, 0.0041292803, 0.04390652, 0.012576064, 0.038248017, -0.0048639313, -0.027096054, 0.06044106, -0.015086193, -0.057632644, 0.016240966, 0.025372313, 0.002333557, 0.04731056, 0.046045847, 0.016091939, -0.0032865677, 0.038367145, -0.010940314, -0.058655344, -0.019140255, 0.01869918, 0.021696996, -0.0067614773, -0.0014921393, 0.0029037625, -0.05438245, -0.01342125, 0.011813279, 0.02183119, -0.02801634, 0.05437433, 0.0114170555, -0.08471622, 0.01879182, 0.011443659, -0.020909727, -0.013117549, 0.00460864, -0.0019919518, -0.058340576, -0.06921568, -0.007720726, -0.030939614, 0.013264925, 0.035349905, 0.009315394, -0.032837424, 0.0067770155, 0.022086864, 0.034016445, 0.0035060511, 0.012002093, 0.030121531, 0.039538633, 0.005197768, 0.04452781, 0.037336912, -0.023545338, -0.009310921, -0.015667934, -0.0012100972, 0.008351084, 0.012979588, -0.017841458, -0.009488669, -0.010262755, -0.0070635304, 0.01555259, -0.0136143, -0.07221974, -0.0015384597, -0.019890796, 0.0045616427, -0.0064385883, -0.02326824, -0.024787216, 0.008584745, 0.027891563, 0.010691085, 0.038566787, -0.006015643, -0.03025714, 0.009570127, 0.009356948, -0.039761934, 0.004623796, 0.0068716574, 0.018502716, 0.07251318, 0.00047462177, -0.025919624, 0.001632925, 0.003220177, 0.06415587, -0.0143862665, 0.039644103, -0.04196212, -0.016473802, 0.029165696, 0.004187313, 0.0295631, -0.042196136, -0.01454471, -0.08210486, -0.0051690456, -0.02390719, -0.012779003, 0.016977146, -0.01175741, -0.035141554, -0.0060467194, -0.025098924, 0.009564006, 0.02377229, -0.025250537, 0.009954816, -0.013919297, 0.0047047827, 0.02927258, 0.031196967, -0.038684502, -0.024676567, 0.018287065, 0.006383851, -0.0024955312, 0.022308636, 0.065414935, -0.017107103, -0.014103048, 0.041439, -0.04615132, -0.021018023, -0.0039401143, -0.020016633, 0.0363839, 0.0130996555, -0.003396983, -0.0043047913, 0.00049157254, 0.015342808, -0.015849272, 0.031066068, -0.025879541, -0.02864658, 0.0060622576, 0.0065279333, 0.025364485, -0.021759618, 0.03203744, -0.00419108, -0.030063147, 0.055640932, -0.04192304, 0.0051197237, 0.028239055, 0.04167773, 0.022528525, -0.0049309107, 0.036125876, -0.03052694, -0.0047843573, -0.05302957, 0.01611407, 0.047407914, 0.04982964, -0.023154058, -0.0057857484, 0.05561662, 0.041187566, 0.054833885, 0.040399797, 0.04894349, 0.042150464, -0.013634075, 0.05819767, 0.05686798, -0.018577112, 0.02805448, 0.025693612, -0.05946333, -0.04096791, 0.016586572, -0.01015434, -0.005907228, 0.020075371, 0.0061051054, 0.046655133, -0.032722536, -0.02474437, -0.058726914, -0.023642333, -0.019402519, -0.08441488, 0.04453158, -0.043160215, 0.0506122, -0.020946924, 0.044733576, -0.0011145137, -0.039988767, -0.024644077, -0.015879111, -0.011266617, -0.0024423245, -0.010392711, 0.01632454, 0.06190801, 0.0019387453, -0.011767607, 0.027133485, -0.023118977, -0.00805162, 0.008889271, -0.0016701226, 0.0067614773, 0.020104093, -0.001116868, -0.037718307, -0.0038634532, -0.021432847, 0.012464002, 0.014278206, 0.062231954, -0.013539906, 0.026422497, -0.048845552, -0.051914584, -0.07035703, 0.037281353, -0.0039589484, -0.01925326, 0.025354126, 0.012300615, 0.03447035, 0.051199824, 0.037648473, -0.046153203, -0.02547278, -0.009175727, -0.024549788, 0.014863948, 0.0061908006, 0.003975899, -0.06863182, -0.018484117, -0.053546567, -0.0041986136, 0.01787742, 0.0120760165, 0.059525482, 0.04518171, 0.0047702314, 0.060122527, 0.01990916, -0.06184397, -0.021559507, 0.016794454, 0.001402206, -0.0069460524, -0.040476575, -0.017934864, -0.018122736, -0.0561843, 0.0070734182, 0.028457297, 0.005384458, -0.047036525, -0.043166097, -0.05592062, -0.013679277, -0.0025407332, -0.02396228, 0.07384512, 0.06808092, -0.028475424, -0.023422208, -0.06275319, -0.031544458, 0.025399799, -0.05853104, 0.0052961768, 0.044916265, 0.014871012, 0.0103960065, -0.06329067, -0.024903283, 0.024079522, 0.05027036, 0.008079871, -0.0059803287, 0.025196388, 0.00019305054, -0.010156282, 0.0057731527, 0.010372935, 0.030381445, 0.026821427, -0.013089768, -0.022065204, -0.022363843, 0.032960318, -0.05714672, 0.0061867987, -0.05077888, 0.04400422, -0.015475825, 0.028473541, 0.00283696, 0.04503139, 0.026014734, 0.009729628, 0.009050774, -0.037733376, -0.0080794, -0.025153073, 0.013760265, -0.02818632, -0.020139644, -0.03511448, 0.038375147, 0.026685232, -0.035102706, 0.052279025, -0.02521758, 0.008009243, -0.014244304, 0.05098794, 0.021798583, 0.00077337923, 0.00999372, -0.007962157, 0.06163303, -0.033460367, -0.0028070018, 0.024037616, 0.0074246763, 0.023804544, -0.019558374, 0.049745828, -0.002245978, 0.023432802, 0.06969219, 0.036108922, 0.00879145, -0.03590834, 0.036543995, -0.029253276, 0.0028700302, 0.028134525, 0.044505212, 0.025324227, -0.0242196, 0.024426071, 0.017908499, 0.01963842, 0.038264144, 0.006083917, 0.028807024, -0.012842098, -0.02564582, -0.027252438, -0.04425283, -0.03854654, -0.0014078562, -0.00496749, 0.0054882853, 0.03518605, 0.008274129, -0.0028543225, 0.024075286, 0.024897397, -0.0029419018, -0.007949915, 0.034513667, -0.00059421896, 0.021590583, 0.029686462, 0.051110364, -0.08089006, 0.008512586, 0.013989924, 0.0025508567, -0.03214244, -0.031801075, -0.04428485, 0.03365012, -0.009849343, 0.009671126, -0.01567947, 0.064993046, 0.06476704, -0.010889933, -0.0047245584, -0.03788334, -0.08250603, -0.023668937, -0.041400395, -0.07084766, 0.026290657, 0.011391865, -0.014805563, -0.02523453, -0.027022367, 0.0061317086, 0.020587662, -0.030662544, 0.007930139, 0.014824398, 0.0010156342, -0.008962724, -0.04231385, 0.009816384, 0.06432255, -0.034463286, -0.04400422, -0.02929377, -0.046249256, -0.004418974, 0.012112744, -0.0069207815, -0.0024385578, -0.0032314113, 0.01870801, -0.04610235, 0.0045720455, 0.009948576, -0.0047066663, -0.03580852, -0.0130742295, -0.058208268, -0.00997365, 0.016707817, 0.020412503, 0.023244698, 0.035123896, 0.021667803, 0.03449201, 0.03463232, 0.025063608, 0.032208834, 0.017888486, 0.016526537, -0.029120496, 0.018255988, -0.021461098, 0.0014657715, 0.0019486331, 0.015099141, -0.0031915724, 0.067355804, 0.0038059205, -0.02052857, 0.0029710946, 0.030758895, -0.032702994, 0.009268309, 0.056001604, 0.038470734, -0.056487527, 0.0010631904, -8.7579014e-05, -0.061787467, 0.017075496, 0.027403759, -0.004090464, 0.02576895, -0.03299469, -0.043207534, 0.039237283, -0.029036682, 0.04721357, 0.035565555, 0.04383848, -0.024461152, -0.015296194, -0.049414344, -0.018020326, 0.0014257488, -0.009656999, 0.013653852, -0.006475668, -0.02037672, 0.023421444, 0.004742451, -0.0017632341, 0.012027754, -0.029053634, -0.037601534, -0.05848301, 0.008351084, 0.027891563, -0.01256288, 0.023743272, 0.013371339, 0.0071810093, -0.00062676676, -0.035552137, 0.036836866, -0.004793303, -0.009281257, -0.03868544, -0.014430056, 0.008117951, -0.0018643503, 0.0052427347, -0.0025308453, -0.014604362, 0.00023660462, -0.07481085, -0.04530566, 0.0913468, -0.012326983, -0.0009534813, 0.021250155, 0.021890989, 0.016484631, -0.040623482, 0.020426836, 0.03305402, 0.018740969, -0.023463642, 0.032458857, -0.0026520905, -0.075242616, -0.06299851, 0.012148058, -0.011100876, -0.0628064, -0.065418705, -0.028729687, -0.0054816934, -0.03731243, 0.005166044, -0.049216583, -0.040868327, -0.027714523, 0.0023349696, -0.008083638, 0.013106718, -0.021886988, 0.011385273, 0.016326895, 0.00038380563, 0.00089909753, 0.060257193, 0.009396735, 0.017107572, -0.008097764, 0.03881081, 0.023181131, -0.03549069, -0.015915839, -0.051310007, 0.032155626, 0.002772865, -0.010048162, -0.018268466, -0.06062964, -0.01932059, 0.0103960065, 0.018655272, -0.005166809, -0.00045578758, 0.057873726, -0.02704638, 0.012632097, -0.001896133, 0.021002484, -0.028086027, -0.035046674, -0.013181114, 0.005339495, -0.041810036, -0.013691049, -0.05601667, -0.029205248, -0.016979735, 0.012398722, 0.009450058, 0.06930796, -0.03221966, 0.029583817, -0.014807447, 0.07802632, 0.05238167, 0.016785508, 0.05407863, 0.013431608, 0.045471404, -0.0005630248, -0.05625398, 0.07044743, 0.005236378, -0.03569975, -0.031972934, -0.0013652439, 0.036460184, 0.03916383, 0.0041115056, 0.0116487155, 0.01618976, 0.013166988, 0.0028267775, -4.6143785e-05, -0.0012110389, 0.029683637, 0.057536595, -0.010711009, 0.014644531, -0.04480373, 0.052608915, 0.023766873, -0.018454218, -0.017461184, -0.0031471944, -0.04975383, 0.03938419, -0.0375488, 0.019102586, 0.023183014, 0.018417962, 0.0050350875, 0.053307842, -0.019814046, -0.006907442, -0.034215145, 0.07351176, -0.020177078, 0.041824162, -0.03308246, -0.023250816, -0.01826988, -0.032170694, -0.026951736, 0.011639064, 0.04180439, -0.008908575, -0.0043775383, -0.021350445, -0.0053512664, 0.032666035, 0.04454429, 0.013303536, 0.03762037, -0.056929186, -0.035252202, -0.004083843, 0.015425209, 0.03771501, -0.030959655, -0.009422396, -0.005314069, 0.07640564, 0.015914898, 0.026250575, 0.02452024, 0.070541605, 0.031297255, -0.0051411767, 0.019821815, 0.005024964, -0.03623182, 0.0004537865, -0.0201686, -0.06094817, -0.08610242, 0.018645385, 0.013095417, -0.027795509, 0.04170833, 0.028643047, 0.0033942754, 0.028650345, -0.05489368, -0.017172728, -0.042463586, -0.015533976, 0.012520386, -0.027152322, -0.023992885, 0.07035891, -0.04150681, -0.027841654, -0.033792317, -0.0030012294, -0.015893238, -0.005829655, -0.029970977, -0.015508079, 0.019602869, 0.009564241, 0.025099158, -0.03836997, -0.00964876, -0.009915616, 0.025871126, -0.027455553, -0.013925064, 0.01858747, -0.013513536, 0.021350445, -0.061811954, -0.02995956, -0.017835986, 0.0005669094, -0.004386014, 0.0053976458, 0.02279032, 0.027411293, 0.008085521, 0.002166639, -0.016882977, 0.025875716, -0.03724698, -0.0014841347, -0.0066861403, 0.0044288617, -0.04116873, -0.0071042594, -0.014885138, -0.0023100143, 0.0036236995, 0.0019399223, 0.033361483, 0.029060224, 0.0018782404, -0.009713267, 0.016969612, -0.034633264, -0.011113119, -0.008016776, 0.023977803, -0.07378486, -0.03449954, 0.0145513015, -0.04930228, -0.05349289, -0.002864152, 0.039490603, -0.037028976, -0.047332224, 0.045532614, -0.01209285, 0.017871771, 0.01800926, -0.05627282, 0.013404299, -0.004186842, -0.036467716, 0.011674378, -0.032971855, 0.029882338, 3.2959848e-05, 0.021487935, -0.03501654, -0.026094781, -0.0146798445, 0.012478833, -0.027592102, 0.01448079, 0.017693788, -0.00013737194, 0.011847888, 0.010543325, -0.040056575, -0.06000952, -0.014562838, 0.028496142, 0.0066181016, 0.003393334, 0.023926964, 0.020221338, -0.013776803, 0.0109068835, 0.040981334, 0.00086166454, 0.0014904914, 0.021488408, 0.019664316, -0.0045522847, -0.017366309, 0.017570423, 0.0074941274, -0.0017335702, -0.02765755, -0.007191838, 0.03398337, 0.024895042, 0.001277606, 0.04362377, -0.0017741814, -0.009489611, -0.0030567904, 0.008114243, 0.025687963, -0.032346796, -0.015532092, 0.06707235, 0.03176717, 0.02205202, 0.01042567, -0.025224641, 0.034247283, -0.0689746, -0.043104887, -0.06694122, -0.018651742, 0.007537446, 0.012222452, -0.027025191, 0.023241872, -0.005631425, -0.008820055, 0.03169419, 0.025261605, -0.011366791, 0.02012999, 0.013711766, 0.04766465, -0.053885583, 0.011473794, 0.054464735, 0.006346183, -0.002177351, 0.0029826306, -0.0015227449, 0.015313852, 0.0167097, -0.041776136, -0.0050914134, 0.008158033, -0.073153906, -0.003763073, -0.02717963, 0.01554669, 0.024505056, -0.024034321, 0.052174494, 0.046576973, -0.01854839, -0.023830911, -0.019086635, -0.004456407, -0.013938248, 0.057340715, -0.018451864, -0.0007006321, -0.028531926, -0.0052971183, 0.027244609, -0.011885321, -0.0671571, 0.05572286, -0.03939408, 0.07688873, 0.040703528, -0.026273705, 0.04087586, 0.014346951, -0.02783365, -0.04617957, -0.014505157, -0.031929616, -0.013949549, 0.010840964, -0.041037835, 0.032563385, 0.06565884, 0.0153465755, 0.011221887, -0.048362806, 0.011688033, -0.031146584, -0.026108908, -0.04801779, -0.03074306, -0.0134382, 0.0067925537, 0.027175864, 0.0029569692, -0.009411449, 0.08116786, -0.013702821, 0.015619142, 0.012052004, -0.004056062, -0.04221097, 0.001862349, 0.0038224005, 0.04575392, -0.020299498, 0.049750533, -0.01016105, 0.011201404, -0.045866925, 0.033240948, 0.0136665655, 0.030159201, -0.03640109, 0.013682104, -0.019693978, -0.0017070846, 0.016161148, 0.027800689, -0.05418787, 0.026273234, -0.029123321, -0.031166539, -0.018922718, 0.04473122, -0.033315636, 0.05113155, 0.00015243929, -0.0087826215, 0.054215178, -0.02931696, 0.06992196, 0.012434337, -0.0027158915, 0.027308645, 0.014252779, 0.038333245, -0.011647774, -0.023122746, 0.0048425887, 0.017437171, -0.030221354, 0.0001353855, 0.02039367, -0.009873358, 0.01493599, -0.020535985, 0.061257288, -0.04989073, -0.057156138, -0.063200034, 0.04567858, -0.023805985, 0.0017944283, -0.015266059, 0.029350625, -0.027391516, 0.0069727735, -0.020775061, -0.024140144, 0.036895253, -0.059455793, 0.0109761, -0.00039716615, 0.015208614, 0.022467315, 0.018701946, 0.031231338, -0.0200297, -0.024377102, 0.0010396477, 0.025024999, 0.041268554, 0.022573728, 0.028409503, 0.038598336, 0.01820137, 0.019236779, 0.0094806645, -0.051706467, 0.057617813, 0.06519787, 0.0062162266, -0.00871835, -0.017955113, 0.017171668, 0.0017647643, 0.0063113393, -0.011484623, 0.016850958, 0.043665208, 0.012097617, -0.047157068, 0.012719675, 0.0036058072], [-0.0607399, -0.08031263, -0.05164689, -0.051058646, -0.016014293, 0.037310276, 0.029557887, -0.021164795, 0.02447197, 0.04071805, 0.0033659867, 0.047685273, -0.074288115, -0.035722863, -0.011432812, 0.034342647, -0.0058648507, -0.033665407, 0.04477824, 0.04650695, 0.0014766015, 0.02358984, -0.022309704, 0.030484112, -0.021240346, 0.01076654, 0.015845409, 0.022635682, 0.042682927, -0.00077847095, -0.0025178527, -0.03171323, -0.02197807, 0.008152245, 0.028923474, 0.009341652, -0.00040908976, -0.018256206, -0.023939598, -0.03585428, -0.073192894, 0.017745538, -0.0126032885, 0.008769111, -0.011600418, 0.02211578, 0.017275961, 0.04930501, -0.0017587165, -0.031235803, 0.053662788, -0.010716443, -0.034401402, -0.011997503, -0.017631492, 0.025589349, 0.032882202, 0.04386033, 0.004985377, -0.0026318415, 0.03859757, -0.005258142, -0.09465394, -0.0081533985, 0.044817027, 0.026342077, 0.010987823, -0.00035460602, 0.01648179, -0.0074587306, -0.026000747, 0.035697006, 0.0035811511, -0.022552112, 0.05251724, -0.029851085, -0.054775547, 0.0007976327, 0.0038157082, -0.03457224, 0.011630431, 0.020171218, 0.009679837, -0.041911844, -0.044610173, 0.05124611, -0.023585571, 0.046284396, 0.05703616, -0.012132558, -0.01609348, 0.026377516, 0.020114772, -0.004688718, -0.0032329517, -0.0016325497, 0.004890608, 0.0726499, 0.02863628, 0.018996498, 0.008024808, -0.044086114, -0.014119598, -0.023202684, 0.010720368, -0.025557488, 0.008263058, -0.046933122, -0.020914366, -0.012763248, -0.018869841, -0.0100818, -0.008106533, -0.04747288, 0.0014068808, -0.0018254648, 0.0016557515, -0.023482028, -0.03153979, -0.039495166, -0.010078567, 0.016835013, -0.0016418275, 0.03886445, -0.008947337, -0.041776095, -0.0062822513, 0.023551749, -0.061354227, 0.017488355, 0.00023640401, 0.01343809, 0.04245668, -0.008516811, -0.033221226, 0.023993159, -0.021392716, 0.05552216, -0.02499049, 0.026487406, -0.032704093, -0.019011362, 0.027929379, -0.0071177455, 0.047447022, -0.046538346, -0.0057623475, -0.08639827, 0.0032528637, -0.021996655, -0.010632177, 0.03839349, -0.0069669923, 0.011024184, -0.023584992, -0.058377128, 0.008708163, 0.028712511, -0.037127204, 0.029350573, -0.022086114, 0.009988069, 0.037289444, 0.012637457, -0.030555217, -0.05401462, -0.0010619711, 0.0070320955, -0.012937809, 0.01890401, 0.058059342, -0.0007002083, 0.010907367, 0.028864834, -0.018996354, -0.036283396, 0.0152187385, -0.044407014, 0.012540032, 0.038231883, -0.001930017, 0.0042548105, -0.007832614, -0.02465943, -0.0535492, 0.031526692, -0.008681845, -0.013461869, 0.0031392789, 0.007893677, 0.031195441, -0.030490344, 0.024206476, -0.0076564653, -0.023051238, 0.06869845, -0.032571115, 0.007450189, -0.0006519579, 0.066422135, 0.054291654, 9.511567e-05, 0.0115487045, -0.028732782, -0.055833824, -0.029112784, 0.0223134, -0.0054714596, 0.05882027, -0.021868292, 0.0066405516, 0.0489227, 0.023910973, 0.054908525, 0.027922451, 0.02909616, 0.033909198, -0.06737976, 0.022956466, 0.07677959, -0.028987426, 0.036488634, -0.00032251602, -0.0133642135, -0.016391754, 0.023342066, -0.0053174742, 0.0015315469, 0.008425586, -0.026982725, 0.06973179, -0.017134039, -0.014804238, -0.05772967, -0.013688345, -0.023123728, -0.030100416, 0.03437647, -0.050791305, 0.048559785, -0.02439994, 0.02500988, 0.024071192, -0.0047802553, -0.016086092, 0.011834051, -0.029149722, 0.012855968, -0.023939598, -0.007386471, 0.028287217, -0.0044242637, -0.04005755, 0.0012997603, -0.019627996, 0.003723363, 0.015157271, 0.003933218, 0.04347903, -0.00020315968, 0.00295505, -0.077015996, -0.003985393, -0.014606258, 0.014588092, -0.0002779594, 0.017769085, -0.027149523, 0.023601616, -0.028463135, -0.0026572363, -0.07060907, 0.055229884, 0.024672346, -0.018982964, 0.041254345, 0.00053329417, 0.029382143, 0.02558427, 0.04098285, -0.03938712, -0.007920458, 0.014090048, 0.008333242, 0.037461493, -0.0061423485, 0.021792108, -0.05061747, 0.0046060686, 0.0019043913, -0.011507842, 0.032806598, 0.024268348, 0.08203958, 0.01718777, 0.005397093, 0.04618928, 0.035782885, -0.023313496, -0.054587163, 0.03911101, 0.01073261, -0.011585643, -0.014859285, -0.007586398, -0.040750142, -0.023403997, 0.04368395, 0.0018515234, 0.004240612, -0.0703819, -0.032728102, -0.04745995, -0.011816506, 0.025129005, -0.010426709, 0.047613245, 0.07269977, -0.017105352, 0.013953896, -0.026737662, -0.040486034, 0.02851254, -0.04430359, 0.026808538, 0.04239619, 0.017086191, 0.012414672, -0.06772051, -0.03556218, 0.0368938, 0.028377715, 0.00031535924, 0.009481094, 0.014287666, 0.018569848, -0.017221939, 0.0182008, 0.022581547, 0.04389773, 0.03994766, -0.049190503, -0.008511006, -0.015325628, 0.0070782104, -0.077861875, 0.004928931, -0.09664491, 0.049888633, 0.0040608854, 0.025366334, 0.010521825, 0.035152167, 0.010522286, 0.0008694311, 0.020769637, -0.015459067, 0.007587091, -0.019955821, -0.012063067, 0.0051343995, -0.017755233, -0.056003742, 0.02793284, 0.02525552, -0.005039053, 0.042813133, -0.031829584, 0.030366832, -0.038615115, 0.067087024, 0.0058595557, 0.0050579077, 0.043611053, 0.017637031, 0.06239542, -0.02852362, -0.02435648, 0.034205627, 0.0032856464, 0.005012504, -0.020194534, 0.03293311, 0.007624029, 0.04989048, 0.04030319, 0.048582867, 0.02639691, -0.039649382, 0.03972141, 0.026131416, 0.027679585, 0.031115565, 0.02530446, 0.010073604, -0.018389646, 0.028580876, 0.0539534, -0.0008601966, -0.0026503105, 0.014893914, -0.0016774527, -0.00037030468, 0.006247045, -0.011795584, -0.028050812, -0.04861057, -0.017939925, 0.014567474, 0.02447705, 0.059933953, 0.015478459, -0.004738238, 0.029322175, 0.029325178, -0.001834028, -0.03099478, 0.032897554, -0.013582149, -0.0076895943, 0.030706547, 0.024922615, -0.0651293, 0.016408378, 0.022249678, -0.020054631, -0.025389422, -0.02550393, -0.016239846, 0.018977884, 0.012287352, 0.016327806, 0.03245753, 0.09076436, 0.02395022, -0.008259364, 0.0054533374, -0.03309102, -0.072894156, -0.013225696, -0.023812855, -0.050961684, 0.028992735, 0.015013732, -0.027502744, 0.007868744, -0.008927483, 0.030364525, 0.024829807, 0.01103111, 0.027832877, -0.015360258, -0.013789003, -0.035903856, -0.04637951, 0.020731062, 0.017179921, -0.027997714, -0.0068301335, -0.029208014, -0.042920258, 0.02054106, 0.032623637, -0.0036457928, -0.0047670957, 0.0033770103, 0.047378685, -0.0428353, 0.013151357, 0.034552153, -0.023762295, -0.005285153, -0.040481415, -0.06464633, -0.013977387, 0.003299498, 0.04673781, 0.009940511, 0.001897927, 0.020342749, 0.029907415, 0.028634205, 0.028190255, 0.017620409, 0.01564445, 0.013632361, -0.036703568, -0.022060255, -0.027924012, -0.0036180895, 0.028610425, 0.017598247, -0.033241313, 0.06575171, -0.025960116, -0.041865673, 0.014826617, 0.034365155, -0.025187183, -0.0087096635, 0.05723193, 0.03944328, -0.045885, 0.012256532, 0.0052257637, -0.059928413, 0.023162974, 0.047740683, -0.014632115, -0.0022553033, -0.020599931, -0.032019354, -0.0017924225, -0.021946037, 0.060800154, 0.04597688, -0.02312696, -0.053948134, -0.018982617, -0.031940397, -0.027598321, 0.014314216, -0.009840317, 0.033196293, 0.03423287, 0.012126325, 0.02973519, -0.020160366, -0.0030501657, -0.0033779915, -0.015704503, -0.04711643, -0.030105496, 0.0121941995, 0.015221046, -0.02176856, 0.015903248, 0.036007747, -0.0049079224, -0.031404447, -0.027469268, 0.022002194, -0.000635682, -0.0021627273, -0.0060513886, -0.011306126, 0.014027253, 0.011426808, 0.03156686, -0.0038697305, -0.011188558, -0.006121917, -0.047790546, -0.067293875, 0.07106676, 0.00071013544, -0.00864179, 0.038179245, 0.029391898, 0.010447487, -0.03473846, -0.0072451825, 0.0039080535, 0.016455473, 0.0099603655, 0.04010776, 0.023965456, -0.07351056, -0.07858217, 0.03830391, -0.010675811, -0.049033515, -0.054875277, -0.032274686, 0.016758827, -0.019121021, 0.027166143, -0.042507008, -0.013076327, -0.007887213, -0.0014678288, -0.00865368, 0.0033530456, -0.024155688, -0.00019034678, 0.048822045, -0.016036687, 0.007673434, 0.07398707, 0.0034681293, 0.053264774, 0.00027057176, 0.062484536, 0.008855685, -0.042262755, -0.014495444, -0.021472132, -0.002700004, 0.021285133, -0.025011728, -0.04147228, -0.03858695, -0.018670836, 0.012036288, 0.024881635, -0.0025044049, -0.013454712, 0.031120371, -0.024529915, 0.017727299, 0.0028308455, 0.0031923775, -0.0070309415, -0.01824928, 0.00049912644, -0.008420969, -0.030677114, 0.005953964, -0.017647976, 0.005933648, 0.022520252, 0.0035525241, 0.0003213617, 0.047166295, -0.010447948, 0.009160655, -0.013046546, 0.03947762, 0.062458098, 0.019648775, 0.040462945, 0.004526767, 0.06574986, 0.015659917, -0.035170633, 0.08662971, -0.020457257, -0.045561332, -0.020251326, 0.036409907, 0.021285478, 0.047374994, 0.035982583, 0.020990118, 0.009409987, 0.004306062, 0.019314658, 0.003988394, -0.02759809, -0.0008346285, 0.034606867, -0.0002483512, 0.026318416, -0.012792597, 0.021954175, 0.012797675, 0.009007131, -0.027655343, -0.01919341, -0.035035234, 0.027710982, -0.05877964, 0.048787877, 0.020390335, 0.012412596, -0.015492773, 0.026098631, -0.006865268, -0.03225137, -0.029511714, 0.043611, 0.004069196, 0.032886013, -0.014275518, -0.021474916, -0.0014770633, -0.047999248, -0.004711689, -0.002269386, 0.04410043, -0.005315396, -0.01877738, 0.0033093675, -0.03694482, 0.027744226, 0.028445737, 0.004853251, 0.04613895, -0.05152407, -0.048916236, 0.0053650322, 0.027553994, 0.020504354, -0.0075035184, -0.038924474, 0.018820899, 0.08844834, 0.02672104, 0.03912221, -0.0013842562, 0.042334784, 0.04389819, 0.01773584, 0.028545784, -0.00074395695, -0.034764316, 0.047171835, -0.021939399, -0.036747895, -0.063467085, 0.022946887, 0.009671901, -0.028041577, 0.011035265, 0.032236412, -0.019421142, 0.016563978, -0.06337844, -0.0024462272, 0.00068150845, 0.0095041795, 0.004074275, -0.034509905, -0.032435365, 0.057228237, -0.05265899, -0.048548702, -0.0527735, -0.02857164, -0.012759352, -0.007303591, -0.057830326, 0.035724707, 0.008589961, 0.028649209, 0.027602937, -0.038694073, -0.042741105, -0.029414752, 0.0008606583, 0.0072343317, -0.018217884, 0.009925736, -0.009023522, -0.00761895, -0.039710794, -0.046072923, -0.019990914, 0.020285035, -0.03058015, 0.0259645, 0.04436615, 0.047982622, 0.020057864, 0.0029821186, -0.05672957, 0.019038834, -0.04856902, 0.020855265, -0.002710566, 0.010954925, -0.05614595, 0.0011637819, -0.0100079235, -0.014382782, 0.008966268, -0.03267665, 0.024230024, 0.019108092, -0.0023755832, -0.018778881, -0.012824916, -0.03553586, -0.017210396, 0.0026826314, 0.0036622996, -0.08834122, -0.0157301, 0.012961588, -0.012417212, -0.009043838, -0.006343026, 0.008400538, -0.022764966, -0.058167852, 0.030008534, -0.03357768, -0.033431776, 0.006756445, -0.06113075, 0.011192021, -0.029463233, -0.069862, 0.020484038, -0.049467538, 0.055067357, 0.019077964, 0.04149697, -0.033396915, 0.002201397, 0.017952392, -0.007194162, 0.0028206876, 0.050932135, -0.010127511, -0.0055210954, 0.008138623, 0.01220251, -0.04936596, -0.054653652, -0.048171006, 0.018932637, 0.031297673, -0.017587164, 0.028429428, 0.028276598, -0.009698105, 0.01695483, 0.01816917, 0.020930989, 0.02705533, 0.030934755, 0.023139426, -0.01627309, -0.035449214, 0.01336329, 0.024970174, -0.040009532, -0.034135446, -0.023368904, 0.038700536, 0.034370925, 0.026048303, 0.048503455, -0.0071955468, -0.018019341, -0.01951118, 0.0032043825, 0.008246437, -0.048830353, 0.0068658744, 0.053489175, 0.023969151, -0.0013750216, 0.005230439, -0.0023187906, 0.01957106, -0.060168516, 0.009308408, -0.051779866, -0.01636359, -0.012024283, -0.004260813, 0.00968864, 0.027790397, -0.017389314, -0.020531366, 0.059540566, 0.023326425, 0.017529665, 0.036435302, 0.022267224, 0.056845926, -0.035125848, 0.037289385, 0.014683078, 0.023037387, 0.025898242, 0.015162176, -0.032894325, 0.0071314825, 0.004835662, -0.026342424, 0.0013930291, 0.031554855, -0.063331336, -0.0047234627, -0.028743748, 0.013678649, 0.026924198, -0.01821696, 0.044177998, 0.05147697, -0.009344884, -0.025149321, -0.019353846, -0.0070091244, 0.01863944, 0.026048765, -0.0073144413, -0.0011183018, -0.002561659, -0.020635484, 0.062403273, 0.0038914315, -0.053275857, 0.055266593, -0.012010893, 0.039400972, 0.024756739, -0.03856848, 0.060558207, 0.020871427, -0.007371003, -0.0011155314, -0.005724024, -0.024164228, -0.043430924, 0.012711563, -0.032910023, 0.031838123, 0.05440432, 0.032668076, 0.0042811288, -0.053654473, -0.018323356, -0.01332866, -0.02957682, -0.054478195, -0.04006517, 0.0047077644, 0.024852896, 0.022790825, -0.017770933, -0.008365562, 0.049900636, -0.0027463497, 0.011028338, -0.0044893674, 0.006449858, -0.03850615, -0.0034171734, -0.01930701, 0.026046976, 0.016594453, 0.057805393, -0.031354006, 0.034290586, -0.036571514, -0.005333865, -0.007000352, 0.015970198, -0.033212915, 0.030142432, -0.014356233, -0.013909051, 0.027521906, 0.05166905, -0.02362447, 0.051165767, -0.013259518, -0.034053255, -0.01978406, 0.032668628, -0.020437865, 0.030087028, 0.030805849, -0.013112112, 0.01060078, -0.035232507, 0.10151335, 0.04107058, -0.009094167, 0.0011293831, 0.010452566, 0.030897127, 0.04405783, -0.042541064, -0.0072102067, -0.002841581, 0.009001821, -0.018551942, -0.01330419, -0.0039117476, -0.021947248, 0.0055236346, 0.056363884, -0.037392464, -0.06775214, -0.04104749, 0.064649105, 0.004689757, -0.0137976585, 0.00789424, 0.01699327, -0.02320759, 0.002526914, 0.00083849544, -0.009008804, -0.023717972, -0.054794014, 0.010058251, 0.01038146, 0.021821659, 0.006469713, 0.024014862, 0.014748932, -0.013699427, -0.033944752, -0.014464509, -0.007880056, 0.036620457, 0.00952565, 0.0071563, 0.037423864, 0.052965578, 0.031089146, 0.015662689, -0.008337396, 0.037801553, 0.041835546, 0.0016114258, -0.0024234152, -0.0156077435, 0.0052065444, -0.013044698, 0.029149722, 0.008428357, 0.018706389, 0.055281598, 0.018804738, -0.07167474, 0.008577033, -0.0021147078], [-0.02627405, -0.09892133, -0.056068804, -0.0487603, -0.009488044, 0.006478012, -0.008415251, -0.027108831, 0.018423123, 0.0012579655, 0.0010688535, 0.0033749302, -0.06173579, -0.011671407, -0.01759089, 0.028538527, 0.00016593648, -0.00618167, 0.034691848, 0.04633614, -0.026848339, 0.003212818, -0.003799853, -0.0043607, -0.016341586, 0.014175519, -0.022628082, 0.0032983352, -0.0021694573, 0.00824213, 0.023184292, -0.038481504, 0.012270031, 0.028414076, 0.02989638, 0.008007594, 0.039595667, -0.022335608, -0.060184885, -0.056329414, -0.016093059, 0.007686382, -0.028693108, 0.036092464, 0.013195195, 0.024650203, -0.0028144312, 0.05186859, -0.018708644, -0.030036822, 0.02785601, -0.012611637, -0.04995152, 0.00036130584, -0.019860465, 0.012316381, 0.012866103, 0.014217408, 0.03597496, -0.0073776846, -0.009203449, -0.018888254, -0.039327875, 0.006651133, 0.015040139, 0.025858281, 0.011597013, -0.0055324524, 0.028522536, -0.035877045, -0.004890665, 0.0150261745, 0.02465223, -0.016923552, 0.0514811, 0.03312426, -0.05019996, 0.0329815, -0.00017662617, -0.03287582, -0.029149203, -0.016685424, 0.030149454, -0.030601434, -0.06400745, 0.030300561, -0.01590302, 0.017213825, 0.052066978, -0.0032141504, -0.009996979, 0.011859418, 0.033203404, -0.018626312, 0.0014850852, 0.0029418962, 0.015319924, 0.04570948, 0.009138848, 0.017636545, 0.02017936, -0.06738273, -0.03461375, -0.024545623, 0.007780475, 0.013110258, 0.04897583, -0.02301282, 0.013761837, -0.016441617, 0.012864714, 0.010030003, 0.0042374064, -0.04935452, -0.0007267833, 0.015507646, 0.016222378, -0.032420248, -0.043950923, -0.037234664, -0.032078583, 0.0148781985, 0.005849493, 0.019134145, -0.00740874, -0.021890638, 0.009437059, 0.007873234, -0.058993667, 0.01862753, 0.04235135, 0.020130228, 0.046817847, -0.01681428, -0.040812034, -0.0067503243, -0.06194947, 0.054877702, -0.023439687, 0.045155123, -0.039735213, 0.011954844, 0.04732991, 0.005351915, 0.019919794, -0.029042128, 0.0014869393, -0.062006477, 0.011503848, -0.04950284, -0.017009417, -0.0034494395, 0.014858732, -0.0001664, 0.012516617, -0.036896765, 0.011814863, 0.009459741, -0.029903332, 0.041732565, -0.02917423, 0.007062614, 0.012408156, 0.017534574, -0.050892442, -0.061044235, 0.030507283, -0.0061347834, -0.012331608, 0.04890955, 0.058861103, -0.025271015, 0.02043429, 0.039036788, -0.061830346, -0.03834941, -0.000841502, -0.041244954, 0.037563294, 0.008814565, -0.018579789, 0.028236086, -0.004342565, -0.020733023, -0.030856771, 0.036080524, -0.0014501772, -0.014494877, -0.010172185, 0.021993537, 0.018609917, -0.035469852, 0.024692439, 0.013207479, -0.032297708, 0.0664104, -0.03307907, 0.003627891, 0.028539453, 0.050148048, 0.0047027697, -0.008494279, 0.02125563, -0.040981676, -0.034247346, -0.06821194, 0.025364645, 0.0006479866, 0.053203505, -0.054166213, 0.012521599, 0.066017695, 0.038543615, 0.06164555, 0.034621395, 0.058604088, 0.0584502, -0.035425123, 0.04945371, 0.06278147, -0.023505129, -0.001139307, 0.03772969, -0.035657804, -0.024414448, 0.012014173, -0.01176608, 0.038524147, 0.03246302, 0.04719665, 0.062933035, -0.023710378, -0.049509563, -0.052356206, 0.022855435, -0.022171292, -0.041605562, 0.050630096, -0.008626959, 0.041537892, -0.042214613, 0.02584901, 0.020841252, -0.041426647, 0.01482536, -0.0038703065, -0.013304584, 0.009974729, -0.010637143, 0.013577997, 0.025014492, -0.030402532, -0.049425896, -0.01288001, -0.03974596, -0.009140875, -0.02141276, 0.0026811722, 0.0045180903, 0.017138736, 0.022187514, -0.013998922, -0.018732283, -0.0070138294, 0.014683061, 0.012359198, 0.029528353, -0.03080393, 0.041706607, -0.021148095, -0.020007167, -0.056754917, 0.01944238, 0.009246556, -0.008253718, 0.029544113, 0.011128405, 0.019849515, 0.045965336, 0.008700078, -0.032312192, -0.025042504, -0.011935491, 0.0074404036, 0.021037085, 0.015516626, -0.0058944533, -0.046595708, -0.011611846, -0.04639918, -0.016483335, 0.016992267, 0.0113641005, 0.055068668, 0.06642836, -0.00214999, 0.053234093, -0.0040545515, -0.03963165, -0.019553158, 0.024993373, 0.0028641282, -0.0389055, -0.0117609445, -0.0025020835, -0.045538906, -0.036116447, 0.032651715, 0.01758834, 0.0130167445, -0.05110473, -0.022676751, -0.030474838, -0.0018543865, 0.011411147, -0.021680206, 0.03431177, 0.0700522, -0.041937437, -0.0429896, -0.047669195, 0.011985435, 0.034655698, -0.07069265, 0.0052168025, 0.05191202, 0.020462101, 0.01553731, -0.047103714, -0.024758374, 0.028961074, -0.00031182618, -0.011237273, 0.0032723788, 0.051044475, 0.031298034, -0.00693596, 0.013070511, 0.042868163, 0.033804692, 0.026895618, -0.051213887, -0.037403382, -0.020157343, 0.044652678, -0.057995267, 0.008202269, -0.06652037, 0.040008307, -0.030558532, 0.02915291, -0.025996638, 0.033302248, 0.016402218, -0.01598367, -0.015390378, 0.00046026518, -0.005335924, -0.032774776, -0.018596938, 0.007047796, -0.03945905, -0.06758807, 0.057474166, 0.01071959, -0.014228011, 0.047054585, -0.005185747, 0.008515601, -0.013651289, 0.04711391, 0.03200257, -0.026926672, 0.027395278, 0.002552664, 0.048792746, -0.047083322, 0.0017275008, 0.019087331, -0.023944912, 0.01679574, -0.019167056, 0.03632248, -0.004380631, 0.017135028, 0.04240558, 0.024291618, 0.03117613, -0.014087453, 0.029480612, 0.010639866, 0.013281408, 0.03155482, 0.027857399, 0.012063304, -0.008701932, 0.037592497, 0.031968266, 0.020083878, -0.01008041, -0.0058726687, 0.04007853, -0.014756065, -0.031969197, -0.018454408, -0.033465404, -0.05546172, 0.004312958, 0.011968286, 0.012853502, 0.008617573, -0.01224361, 0.0022547431, 0.039387204, 0.04461328, -0.036262166, -0.022004662, 0.019162014, -0.0032751597, 0.0057841386, 0.022107096, 0.02546963, -0.061139718, 0.010582855, 0.011330958, -0.03487824, -0.027588332, -0.054048944, -0.038650222, 0.041412048, 0.008547352, 0.037231885, -0.012835512, 0.08167042, 0.03996752, -0.020807069, -0.0065401224, -0.033751268, -0.050333448, -0.034263104, -0.029259516, -0.07343524, -0.004472869, 0.018824985, -0.02479586, -0.013310262, -0.010672197, 0.034205165, 0.03592479, -0.032581955, 0.020307288, -0.0060988613, -0.008054873, -0.03564019, -0.039212927, 0.027487982, 0.056040183, -0.03171241, -0.012755325, -0.028052075, -0.050345037, -0.014600556, 0.027568169, -0.02293817, -0.015143993, 2.5956544e-05, 0.032203965, -0.047276605, 0.047028624, 0.013528459, 0.009715164, -0.062568255, -0.018520517, -0.05065698, 0.013488133, -0.0052513336, 0.024129855, -0.0021956458, 0.0049277316, 0.044569246, 0.021001626, 0.019631956, 0.06314764, 0.06339886, 0.012840147, 0.028752437, -0.021586575, 0.0072676013, -0.0046362127, -0.0009330451, 0.026946139, 0.01589398, 0.021214841, 0.06636347, -0.021335354, -0.022276279, -0.0006197125, 0.04281718, -0.056147717, 0.01954528, 0.046730936, 0.059569348, -0.06845112, 0.04685527, 0.04436437, -0.047917638, 0.051249344, 0.049235858, -0.0011388435, 0.0066564633, 0.005265471, -0.032421578, 0.0038851388, -0.008102585, 0.049541775, 0.04998257, 0.020192338, -0.013773193, 0.0115288785, -0.024716195, -0.014864178, 0.025269162, -0.027640013, 0.038024485, 0.005524254, -0.021801645, 0.02953855, -0.022178015, -0.017626582, 0.0027254953, -0.046232317, -0.061356638, -0.068402916, 0.000104753206, -0.007989981, -0.020905796, 0.04868892, 0.017170023, 0.040578425, -0.0057192575, -0.043139778, 0.015022699, -0.0024575288, 0.0148341665, 0.0020137182, -0.013019062, -0.015086605, 0.023315467, 0.0047305804, -0.020077389, -0.0026359798, 0.001226215, -0.045746557, -0.056900453, 0.07452124, 0.014498585, -0.020318067, -0.0014045794, 0.020477049, 0.009895238, -0.04134507, 0.009510294, 0.033972483, -0.008811552, 0.0040732077, 0.009884809, -0.00018169582, -0.091989994, -0.06793199, 0.020465346, -0.030558735, -0.048201304, -0.064631805, -0.010821214, -0.0290463, -0.02616327, 0.006659476, -0.025848895, -0.015507066, -0.007999946, -0.019502636, 0.018303538, -0.005969774, -0.0017313248, 0.024520593, 0.042081125, -0.021418322, -0.014574601, 0.03973259, -0.016250651, 0.033232026, 0.014212136, 0.037280783, -0.0020746696, -0.03260351, -0.011877438, -0.040867887, -0.008607839, -0.013923688, -0.04235274, -0.011406048, -0.056364637, -0.03879762, 0.005546821, 0.039146177, -0.02449371, -0.019282006, 0.025161162, -0.021764563, 0.001137453, -0.01283331, 0.032089707, -0.035949815, -0.030556882, -0.0064803297, 0.014581031, -0.045333568, -0.023038289, 0.0019699165, -0.00803274, -0.0077591534, -0.0001279287, 0.019782597, 0.016055051, -0.012279763, 0.017785652, -0.01208648, 0.09078488, 0.050263926, 0.05503529, 0.035070453, -0.019106843, 0.061049797, -0.00623467, -0.04457017, 0.08099555, 0.025596863, -0.061240237, -0.014102864, 0.036375318, 0.006797457, 0.033612337, 0.030617137, 0.0011736067, 0.030137405, -0.0030971721, 0.027851373, 0.0123166125, -0.047595963, 0.0023407242, 0.05425474, 0.010136031, 0.009065093, -0.0507571, 0.04522372, 0.005944976, -0.013603954, 0.014670548, -0.010645892, -0.005412867, 0.033427626, -0.053837582, 0.032023426, 0.02936195, 0.017002463, 0.013106202, 0.033445008, -0.020265574, -0.007101838, -0.0277742, 0.045652926, -0.0067653884, 0.029728819, -0.011500141, -0.015612399, -0.015603593, -0.028399242, -0.011638035, 0.021788666, 0.060814336, -0.013448967, -0.0027334038, -0.010944392, -0.017770965, 0.036049932, 0.030239375, -0.015161404, 0.035245243, -0.011875815, -0.037708603, 0.026119702, 0.029420817, -0.010771967, 0.005327349, -0.010824807, -0.027704094, 0.04491224, 0.036781352, 0.020112615, 0.020137876, 0.05464919, 0.050917473, 0.03922544, 0.015473791, 0.013267503, -0.0067310883, 0.03128691, 0.008394161, -0.047703497, -0.08312398, -0.007545939, 0.025788609, 0.011352977, 0.048071522, 0.03016313, -0.004793734, -0.019201934, -0.04207927, -0.009535786, -0.030910075, 0.003892555, -0.010216218, -0.05040761, -0.001137453, 0.079363994, -0.036503248, -0.02417574, -0.03253792, -0.03811267, -0.03713249, -0.032918464, -0.0537078, 0.0117889065, 0.020726766, 0.025499294, 0.012612911, -0.024181304, -0.018826839, -0.021517977, 0.011745568, 0.004280976, -0.02402406, 0.023331227, -0.035293486, 0.020845888, -0.054089736, -0.04003583, -0.022004662, -0.01800828, -0.0085376175, -0.0287478, 0.016897017, 0.01935524, -0.0025562563, -0.019153614, -0.044502497, 0.030473448, -0.031464662, 0.0068671284, -0.021200009, 0.018825447, -0.07588953, -0.01769634, -0.020529773, 0.00072492927, 0.02857329, -0.038360994, 0.033052772, 0.008912366, -0.017955208, 0.020336954, -0.01022039, -0.035902537, -0.032998186, 0.00035365793, 0.003081876, -0.071636364, -0.03276736, 0.017802482, -0.035163935, -0.031044723, -0.036373, 0.029161252, -0.02979371, -0.060795795, 0.058524597, -0.024172498, 0.0033891834, 0.033424616, -0.060704943, 0.021549262, -0.0030748078, -0.04672086, 0.013754189, -0.022859374, 0.051291987, 0.011422735, 0.06833617, 0.0009555253, 0.017668992, -0.01276135, -0.016660742, -0.0030913784, 0.019987583, -0.024618395, 0.025442513, 0.002936798, 0.015715761, -0.05425474, -0.06628189, 0.0047815666, 6.70351e-05, -0.004753756, 0.0022248467, 0.00990655, 0.00803216, 0.004813317, 0.006369435, 0.010231283, 0.020398138, 0.012516617, 0.0212306, 0.010886519, -0.0076766484, -0.019016877, 0.035306696, -0.002353239, 0.01298847, -0.023140261, 0.016270814, 0.010325143, 0.016836064, -0.0036093504, 0.058079626, 0.010565356, -0.022336766, 0.018624749, -0.0062263263, 0.05879343, -0.049425896, -0.017534574, 0.05897327, 0.021070227, 0.03131657, -0.009194179, -0.01263122, 0.012903184, -0.06045836, -0.0033799133, -0.064352766, -0.028166328, -0.0355118, -0.023256138, 0.0013641672, 0.013855234, -0.0077535906, -0.023431346, 0.04741612, 0.0249257, 0.031417385, 0.0058161207, -0.0012699008, 0.03851766, -0.01615424, 0.00962339, 0.053032935, 0.020833837, 0.010143216, -0.013585354, -0.0035690253, 0.016709527, 0.04554308, -0.0006107031, 0.015460831, 0.037226785, -0.038868073, -0.019151296, -0.026834432, 0.015560718, -0.0051479707, 0.0135650765, 0.04030959, 0.050815966, -0.029946437, -0.012010464, -0.012889279, -0.049601108, -0.021412296, 0.033953942, 0.010863046, -0.015338465, -0.0017517192, 0.0037441736, 0.026643466, -0.030588863, -0.057255507, 0.049561244, -0.020461174, 0.048983015, 0.03759852, -0.031534884, 0.046562336, 0.035057098, -0.044598676, -0.033196338, -0.022187982, -0.035277262, -0.028377458, 0.0039900946, -0.030880872, 0.02745739, 0.094298735, 0.04238333, 0.016738264, -0.057650387, 0.007683138, -0.029463459, -0.04760245, -0.041968957, -0.025490254, -0.002339797, 0.038569573, 0.013647119, 0.008694168, -0.037934564, 0.06396064, -0.0152513245, 0.009468367, -0.016765147, 0.0035041336, -0.015163026, 0.006448811, -0.01948931, 0.042659584, 0.00825818, 0.028685693, -0.014918061, 0.0014072156, 0.0053885034, 0.028813155, 0.0020709615, -0.015197557, -0.009544592, 0.01650961, -0.011867472, -0.016194334, 0.004059882, 0.07205167, -0.02383367, 0.014388386, -0.009698478, -0.036727123, -0.012558102, 0.03386043, 0.00024311086, 0.04434398, 0.01060603, -0.021352967, 0.04554632, -0.008806685, 0.04630462, 0.029438432, 0.013162084, 0.036254227, 0.0053004655, 0.03130267, 0.0436362, -0.0059639798, 0.023977358, 0.032981616, -0.015097932, 0.017131088, 0.0072155143, -0.049454637, 0.0032575466, -0.002956729, 0.04878533, -0.025555145, -0.034220926, -0.042583335, 0.04137317, -0.008735305, -0.026124453, 0.009611338, 0.009033747, -0.0035587118, -0.0021108233, 0.010879501, -0.021302214, -0.0045294175, -0.06224194, -0.014958387, 0.0018649314, 0.051157337, -0.0047417628, 0.043588687, 0.027588101, -0.006722282, -0.015388987, 0.006557736, 0.028398316, 0.06964327, 0.018292876, 0.031027742, 0.020168236, 0.024967648, 0.014928258, 0.008559403, -0.032439195, 0.05342877, 0.024809126, 0.02377249, -0.015108564, -0.031037541, 0.0013413972, -0.03516741, 0.013269357, 0.0053280448, -0.006119256, 0.04867803, 0.02642191, -0.030774599, 0.037452515, 0.011371444], [-0.038974695, -0.08169367, -0.03210308, -0.019911159, 0.0047767884, 0.026405731, 0.022495707, -0.023806158, 0.042607747, 0.0335989, -0.021565212, 0.028183365, -0.071248844, -0.012062523, -0.028539086, 0.03885402, 0.025546081, -0.034890205, 0.053693492, 0.0305634, -0.04399307, 0.0070271827, -0.026607338, 0.030468049, -0.016770735, 0.05868715, 0.020406937, 0.010371152, 0.015317926, -0.011174675, -0.017212236, -0.047433395, -0.011261909, -0.009808978, 0.013870205, 0.007942171, 0.003183132, 0.0025057965, -0.040776074, -0.04198475, -0.05878602, 0.020382466, -0.0067978906, 0.028469298, -0.0063642045, 0.055461437, 0.011507133, 0.017884059, -0.017522402, -0.04570286, 0.0199887, -0.026081512, -0.032908052, 0.033747926, -0.020041525, 0.037028894, 0.02373443, 0.015053619, 0.01818441, -0.035161115, 0.001377328, 0.0051288744, -0.061575565, 0.005910103, 0.024729867, 0.0128883375, -0.0058524315, 0.016169304, -0.024536014, -0.049150057, -0.031002719, -0.0035950097, 0.019998878, -0.014789554, 0.03897421, 0.012715324, -0.07531589, -0.01116062, -0.032652654, -0.016546108, 0.008147655, 0.016168335, -0.007310693, -0.0794566, -0.04139932, 0.0040021017, -0.025388122, -0.0062963557, 0.030352583, 0.030432062, -0.042818323, -0.016294098, 0.060664456, 0.0018241598, 0.0063231317, 0.014522522, -0.00039352223, 0.05686881, 0.018922921, 0.006990351, 0.040783834, -0.048597086, -0.005281534, -0.007292338, -0.0014044673, -0.0047334135, 0.014745937, -0.024480766, -0.009747914, 0.014969354, -0.0079034, 0.001099845, 0.004736321, -0.049632266, 0.0072995466, -0.021722235, 0.017257791, -0.03570972, -0.020640532, 0.0056663323, -0.019677687, 0.007919393, 0.01142523, 0.024674619, -0.03790947, -0.001365939, 0.015008608, -0.0003393342, -0.065619834, -0.009492997, 0.03276339, -0.0019530721, 0.045802694, -0.029795256, -0.028606206, 0.017863583, 0.017502774, 0.053982332, -0.0007176813, 0.049158297, -0.012878766, 0.00012988172, 0.029219722, -0.0022004775, 0.0061083185, 0.004341163, 0.020691177, -0.044441357, -0.02018413, -0.0076552676, 0.0053358125, -0.0056847488, -0.0016496917, 0.011252216, 0.020413157, -0.04183936, 0.012045075, 0.014630353, -0.03624863, 0.018021574, -0.011393243, -0.008227135, 0.05218822, 0.0046676244, 0.012163327, -0.051842194, 0.03099327, 0.005978436, -0.033537593, 0.024522444, 0.09013404, -0.00029017418, 0.00577586, 0.01714584, -0.053218555, -0.008456608, 0.0021277824, -0.017339211, 0.031082926, 0.02635872, 0.005409477, 0.011502772, -0.0053658597, -0.011218776, -0.019823834, 0.0316892, -0.0038302992, -0.025856156, -0.022213653, 0.00465878, 0.046999738, -0.0053421133, 0.017886845, -0.014489991, -0.03951409, 0.012705631, -0.03395462, -0.0035843477, 0.016363159, 0.037645344, 0.015969636, 0.0067334953, 0.033986364, -0.01686948, -0.043568533, -0.025147622, 0.02009968, -0.03091185, 0.03228482, -0.031640254, 0.0015966245, 0.018392803, 0.03821382, 0.06118108, 0.028200813, 0.036786456, 0.024629306, -0.026315589, 0.035688397, 0.039542202, -0.03556433, 0.015667226, 0.04237052, -0.037636623, -0.029819002, -0.0071696653, -0.015025087, 0.020444982, 0.015399769, -0.027824735, 0.06345595, 0.008067691, -0.016717669, -0.0495729, 0.00345592, 0.0034205418, -0.027670259, 0.025171854, -0.04831988, 0.01930561, -0.0012697392, 0.023940885, 0.03425388, -0.00601963, -0.015397043, -0.0053847604, -0.030651119, 0.014712498, -0.01604427, 0.021113535, 0.065278165, -0.0056173843, -0.017915925, -0.013528418, 0.010407743, 0.016645215, 0.007237514, 0.0035639934, 0.008964747, 0.060409542, 0.0147900395, -0.049369596, -0.004732202, -0.071965136, 0.042497493, 0.00084568514, 0.037037615, -0.047355462, 0.010332079, -0.055627663, -0.032572202, -0.054375857, 0.033645183, 0.013360371, -0.042903617, 0.004539318, 0.0145831015, 0.01367829, 0.058321983, 0.010747592, -0.066848375, 0.0055238507, 0.012459923, 0.0028840527, 0.01442511, 0.0072489027, 0.030230455, -0.030441515, -0.010054444, -0.046792317, -0.0003159809, -0.0023965116, 0.006635599, 0.055911172, 0.064087905, -0.030070527, 0.038436268, -0.025721427, -0.05782257, -0.009626513, 0.017660037, -0.011163528, 0.016668478, 0.013011435, 0.018745132, -0.033520874, -0.067647055, 0.013951139, 0.0021843635, 0.011925857, -0.027670199, -0.017192366, -0.04825591, 0.016118903, -0.0028915647, -0.033629432, 0.037272178, 0.086367466, -0.012004124, -0.02484715, -0.026750546, -0.028418897, -0.00927685, -0.05605269, 0.025782492, 0.05644621, 0.03505837, 0.016558466, -0.05972815, -0.05175593, 0.041849054, 0.03662495, 0.002595696, -0.014029891, -0.0019462873, 0.0035541188, -0.03156126, 0.014759022, 0.02117072, 0.017915552, 0.02794735, -0.06250218, -0.01205283, -0.0047378964, 0.028094193, -0.0811974, -0.0020393368, -0.053728387, -0.006161628, 0.017924648, 0.03508648, -0.03656849, 1.1146566e-05, 0.015386138, -0.013866328, -0.007631036, 0.0011213808, 0.0061838296, -0.008853281, -0.0033623858, 0.004802595, -0.008122454, -0.027724901, 0.040831808, 0.008468483, -0.042794574, 0.062075708, 0.009124191, 0.06125765, -0.012216637, 0.062634006, 0.038497332, -0.017106434, 0.004420825, 0.0013409804, 0.04958962, -0.07304393, -0.010125443, 0.027481616, 0.02285349, 0.03716362, -0.010786968, 0.06600512, 0.04381182, 0.025979253, 0.050101392, 0.029725468, 0.023909142, -0.01709544, 0.05110749, -0.006546063, 0.0077017923, 0.033653907, 0.018757397, 0.010085219, 0.00086507044, 0.02571658, 0.04216455, 0.018013334, -0.00039643006, -0.016333355, 0.0035429117, 0.00013412227, -0.013413439, -0.00085707405, -0.042395722, -0.029761571, 0.037750024, 0.0023195762, 0.033363126, 0.036598537, -0.033762768, -0.033832252, 0.029119615, 0.030870656, -0.01614992, -0.021253731, 0.032685608, -0.0025414173, 0.011880543, 0.038869042, 0.04341539, -0.04789728, 0.01453391, 0.06739892, -0.016968466, 0.02148646, -0.021486217, -0.027978366, 0.058341127, 0.005073142, 0.04067527, 0.004933567, 0.102862455, 0.051566925, -0.020932283, -0.0043776925, -0.0011609391, -0.063987106, -0.010243451, -0.04590059, -0.048528273, 0.0026519136, -0.01188127, -0.007566095, 0.01909746, -0.041165724, 0.024184655, 0.022041123, -0.029006273, 0.01589888, -0.011289775, -0.014426685, -0.015810676, -0.04900806, 0.040583193, 0.05395713, -0.056372546, -0.02018413, -0.031462394, -0.035650473, -0.0120052155, 0.017713832, 0.00441404, 0.010203954, 0.0044043474, 0.034881968, -0.05598484, -0.0016952473, 0.010296277, 0.031768683, -0.039985154, -0.0096102785, -0.04283189, -0.019436704, 0.014882119, 0.044619218, 0.0067034476, 0.014906835, 0.0032179651, -0.0015198101, 0.012327617, 0.021691216, -0.0119607495, 0.03816051, 0.022700224, -0.009824001, 0.019433795, -0.021764882, -0.0053096423, 0.01550342, 0.034708466, 0.0053677983, 0.049279455, -0.0289045, -0.03991682, 0.006141273, 0.04189752, -0.033217736, -0.008658701, 0.06933746, 0.023421356, -0.056957982, 0.02007127, -0.001540157, -0.061738163, 0.029050373, 0.05391836, -0.015093419, 0.0017252945, -0.024265105, -0.051307157, 0.0011195635, -0.035963666, 0.058636755, 0.0405483, -0.016746989, -0.07215996, 0.0033245843, -0.0016138289, 0.019307306, -0.040267576, 0.0026563962, 0.03833837, -0.00652377, -0.036515668, 0.029350119, -0.070909604, 0.023456737, -0.0056859604, -0.023750182, -0.03462705, -0.025189301, 0.008112761, 0.031960595, -0.015618035, 0.015944436, 0.031538, -0.00082605745, -0.0019858682, -0.04066558, -0.0025593482, 0.01681193, 0.009613883, -0.043459974, -0.0089473, -0.019477898, 0.031570952, -0.003018296, -0.0027510663, -0.009152543, -0.010233517, -0.0916461, -0.06430115, 0.008637861, -0.005776829, -0.007904854, 0.027789844, 0.04250186, -0.008055454, -0.042568978, -0.001323049, 0.031617478, 0.005659184, 0.008678813, 0.030863388, -0.0043165074, -0.07475372, -0.08837385, 0.03856857, -0.011221472, -0.029715443, -0.06406077, -0.04400858, 0.022893593, -0.02496346, 0.043546725, -0.023049645, 0.0025268781, -0.01857018, 0.025445186, -0.032503385, -0.0065306765, -8.335693e-05, 0.041120164, 0.034998037, -0.00866912, 0.010692828, 0.028384002, -0.022302825, 0.029812217, -0.030099604, 0.058024175, 0.020019231, -0.0021352943, -0.043946065, -0.04628975, 0.020790769, 0.02377635, -0.030371, -0.0035436389, -0.045350045, -0.0089320345, -0.0133799985, 0.02610235, -0.010946897, -0.03803887, 0.0399001, 0.0039148675, -0.0004003071, 0.0051991157, 0.018504754, -0.031817146, -0.020342724, -0.025186846, 0.0264306, -0.05431673, -0.0007521509, -0.025062084, -0.012792865, 0.034774378, 0.0009304959, -0.008298012, 0.0071328334, 0.0021285096, 0.008901139, 0.020991892, 0.0378518, 0.025983129, -0.017038738, 0.045538202, -0.015944436, 0.07064268, 0.0004114537, -0.0551503, 0.091956265, 0.005646947, -0.017419659, -0.04296953, -0.008153471, 0.019894438, 0.021730023, -0.00904035, -0.015799105, 0.02373522, 0.0009249227, -0.0012285454, -0.026619937, -0.016880747, 0.004160577, 0.0670306, -0.011204237, -0.007478619, -0.07827022, 0.046637233, 0.016303064, -0.0020451525, -0.018141134, -0.014520583, -0.009185012, 0.03204008, -0.03608628, 0.057849705, 0.039512638, 0.024918875, -0.011005053, 0.019406172, -0.0044276095, -0.04640994, -0.031310946, 0.041079458, 0.029455528, 0.010770733, -0.02034018, 0.013035182, -0.009087844, -0.02439741, -0.017371802, -0.025713673, 0.0042950627, -0.039445274, -0.036696553, 0.032414213, 0.012659591, 0.04132759, 0.030636579, 0.026222538, 0.028294345, -0.04585988, -0.050624795, -0.020737717, -0.0064640315, 0.002216228, 0.00031695017, -0.025501404, 0.0026228356, 0.036994, 0.031829502, 0.034966778, 0.022423012, 0.028480928, 0.041069884, 0.018967396, 0.033653907, 0.022013014, -0.043605853, 0.008875332, 0.011748238, -0.025845008, -0.06868999, -0.013773278, 0.012876707, -0.014209448, 0.06101727, 0.029041165, -0.006428176, 0.053059593, -0.027854783, 0.014697959, 0.015547036, -0.0013249874, 0.02213829, -0.05014113, -0.01760382, -0.015742827, -0.015141399, -0.05506888, -0.05776005, -0.035906482, -0.00214111, -0.008364771, -0.02906443, -0.014412146, 0.0018690793, 0.016367158, -0.0043529766, -0.03198386, -0.06444556, 0.025127266, 0.031041734, 0.024613556, -0.024333438, 0.0239656, -0.008075929, -0.008322093, -0.051070657, -0.022393452, -0.005293165, 0.01275991, 0.009566783, 0.010634793, 0.05152427, 0.036127836, 0.017127426, -0.011620295, -0.048828747, 0.04759632, -0.042107847, 0.022112062, 0.019252058, 0.02765996, -0.07527712, 0.016810961, 0.004403378, -0.026623815, 0.016941568, -0.019645702, 0.013132594, -0.010324627, 0.023928043, 0.022076016, 0.0060491925, 0.01212083, -0.01372215, -0.0010477771, 0.0025435374, -0.07354407, -0.031614687, -0.0030745137, -0.060261246, -0.055034958, 0.0149561465, -0.00021760036, -0.024136676, -0.04548962, 0.03438522, -0.027476285, -0.0030628825, 0.0054795067, -0.07272528, 0.008862489, -0.024320353, -0.061833393, 0.024910152, -0.03576109, 0.038932532, 0.021738712, 0.018022787, -0.061955523, -0.044370968, 0.032894, -0.013923091, 0.051131718, 0.006565812, -0.012480277, 0.0043595186, -0.011372405, -0.01069828, -0.051074535, -0.06868999, -0.027312735, 0.00465563, -0.0029969725, 0.018224636, 0.014972745, 0.008482778, 0.008053636, -0.006440958, 0.043434776, -0.011347447, 0.009921125, 0.057830323, -0.001330803, -0.0069147483, -0.025557075, 0.0028709678, -0.002080046, -0.025594454, -0.028591668, -0.002290377, 0.039069198, 0.011995159, 0.020057034, 0.055966422, 0.040368013, -0.020780446, -0.034370195, 0.008090468, 0.019514728, -0.0995398, -0.010714031, 0.057270087, 0.0027599866, -0.015962852, 0.0077647944, -0.032492723, 0.02706774, -0.03321822, -0.0020407909, -0.059875473, -0.05365085, 0.0136608435, 0.003483544, 0.0008733092, -0.0017647921, 0.010901341, -0.0017311102, 0.028640073, 0.027597928, 0.012318409, 0.0034486505, -0.00447365, 0.042964227, -0.028984947, -0.009728529, 0.035793077, 0.009137337, 0.0056006648, 0.027045446, -0.015900334, 0.02035266, 0.030887133, -0.009972905, 0.039935723, 0.033191565, -0.056969613, -0.011440617, -0.031744935, 0.016606264, 0.0032024567, -0.0074769226, 0.040841017, 0.025633708, 0.003217238, -0.035570633, 0.0058584893, -0.003342031, -0.0013240182, 0.01481524, -0.01279432, 0.00017286264, -0.0123174405, 0.013286707, 0.023017174, -0.032491755, -0.07121008, 0.054381307, 0.0124111865, 0.046975505, 0.04231915, -0.042909432, 0.0701245, 0.028595302, -0.022883657, -0.009070396, -0.027602775, -0.018267283, -0.041199647, 0.029839842, -0.013945323, 0.007668353, 0.064979635, 0.04348905, 0.0037946787, -0.085741326, -0.0047624917, -0.036102515, -0.02320933, -0.037685085, -0.01700978, 0.010224794, 0.0029499629, 0.018359484, -0.02001996, -0.020358475, 0.0835818, 0.0006101533, 0.00012794319, 0.011330727, 0.00052928017, -0.027712302, 0.016085949, -0.0147309145, 0.08112956, 0.011180687, 0.04268844, -0.016273987, 0.0045330175, -0.053891223, -0.024398379, 0.020321885, 0.035010636, -0.015020543, 0.0020241921, -0.0028680598, 0.0156804, 0.030166484, 0.02837625, -0.0491108, 0.050358247, -0.000859376, -0.005287182, -0.019312637, 0.045640822, -0.06105095, 0.039964803, 0.0031234617, 0.014641983, 0.011765443, -0.05039992, 0.08169754, 0.014183642, 0.014465667, 0.018908694, -0.017866492, 0.03435081, 0.006814187, -0.027050292, -0.0067346767, 0.007914062, -0.03353081, 0.000779775, 0.008007111, -0.024050169, 0.015579992, -0.008912891, 0.048873328, -0.0103991395, -0.054283775, -0.026679063, 0.052813396, -0.022163734, -0.033034787, -0.023464005, 0.0030507667, -0.049086567, 0.015897911, 0.032373503, -0.026201215, 0.0141357845, -0.049484454, -0.0216373, 0.01398264, 0.012519048, 0.0016009861, 0.048489258, 0.021341313, -0.032055583, -0.020674698, 0.0032489817, 0.0003514803, 0.034234498, 0.027220882, 0.04382442, 0.028895775, 0.00626752, -0.021590414, 0.011041401, -0.040066574, 0.02035266, 0.05207785, 0.0016664116, 0.0070703756, 0.03013547, 0.031280655, 0.0049132123, -0.022498166, -0.0097413715, -0.03677737, 0.04097526, 0.024765974, -0.04873182, 0.028347172, 0.020575592], [-0.015725581, -0.088958666, -0.03918004, -0.039256904, 0.0072187176, 0.027233604, -0.013302518, -0.03541344, 0.03135945, 0.029018568, 0.014094853, 0.010490611, -0.05694135, -0.026029548, -0.028982442, 0.012506469, 0.018579734, -0.05887683, 0.040608823, 0.0444412, -0.018220896, 0.02330705, -0.02655165, 0.020272778, -0.020603156, 0.03926353, 0.0036305317, 0.013627239, 0.014769782, -0.011235082, -0.005488144, -0.03327566, -0.008226798, 0.005818534, 0.02856179, 0.017009113, 0.032542933, 0.005026852, -0.053467758, -0.053051922, -0.06030737, 0.016586678, -0.0041567483, 0.04298558, 0.006212444, 0.04863829, 0.010682674, 0.047860406, 0.00076584355, -0.03178331, 0.052398466, -0.001762885, -0.043439746, 0.029245349, -0.0022525755, 0.0101046795, 0.031587433, 0.032453123, 0.042967513, -0.01974626, 0.010994588, 0.0026118155, -0.05226842, -0.007198849, 0.02871231, 0.03955654, -0.0026322862, 0.0033034028, -0.0032861433, -0.055103257, -0.0074155973, 0.017499605, 0.019457608, -0.0062419455, 0.05100004, 0.018444065, -0.073400564, 0.005622207, -0.01616018, -0.010493822, -0.008070257, 0.0137837045, 0.008522217, -0.050047956, -0.07285307, 0.0323597, -0.017386263, -0.0012041565, 0.04490982, 0.011159219, -0.041596685, 0.004357441, 0.03550381, 0.025860466, -0.0049326266, 0.008707456, 0.006683069, 0.04379116, 0.030966088, 0.031474244, 0.026365709, -0.038743533, -0.009825114, -0.013925669, -0.009512836, -0.0011704401, 0.016840931, -0.021717364, -0.0062450566, -0.008276832, -0.009470691, 0.0048827543, 0.020247491, -0.085084096, 0.008592058, -0.034448236, 0.029965837, -0.030874573, -0.046099525, -0.031191666, -0.0013781571, 0.0042109354, -0.005508414, 0.009146773, -0.023508748, -0.01603535, -0.0062531843, -0.002800868, -0.054440714, 0.0020253912, 0.04592733, 0.011380081, 0.053765602, -0.011600844, -0.038231164, 0.014385656, -0.022616468, 0.067988284, -0.009896963, 0.03402525, -0.021905212, 0.021079963, 0.010871124, -0.009866859, 0.012595678, -0.041565478, 0.0046865772, -0.049913492, -0.014367995, -0.035024896, -0.009908201, -0.0043803197, 0.00054367667, 0.009507618, 0.010423278, -0.03812038, 0.016231027, 0.011272009, -0.028349057, 0.024475686, -0.017809475, -0.01812135, 0.033137586, 0.02557187, -0.026915306, -0.064568475, 0.008206728, 0.0069536027, -0.026715618, 0.04479783, 0.07354025, -0.021743355, -0.003740712, 0.035461448, -0.072361276, -0.028407456, -0.003410974, -0.026982738, 0.041999876, 0.047862414, -0.016055018, 0.021999938, -0.00057970104, -0.0057582767, -0.01375809, 0.03724697, -0.022216287, -0.025863675, 0.0052774665, 0.015911724, 0.027187547, -0.0247406, 0.028639156, -4.4955177e-05, -0.009519559, 0.02159454, -0.042111762, 0.006105676, 0.010673743, 0.040872883, 0.0014658598, 0.008113406, 0.039862398, -0.024898745, -0.04405808, -0.04162107, 0.011409383, 0.017922664, 0.038135737, -0.028664745, -0.0016662767, 0.027357232, 0.04414197, 0.03483808, 0.02940751, 0.05192403, 0.03683916, -0.01372618, 0.060723603, 0.0423827, -0.032465667, 0.010958326, 0.03900905, -0.037546802, -0.035320017, 0.018086432, -0.01843945, 0.02149018, 0.019858949, 0.011887132, 0.085414834, -0.014834405, -0.019151531, -0.05025266, -0.026049316, -0.030160708, -0.049168117, 0.037147433, -0.03588587, 0.036908202, -0.012938059, 0.05190015, 0.0034791592, -0.0025098636, -0.019093106, 0.012934447, -0.036031574, -0.0010036143, -0.019465191, -0.014398099, 0.06850205, -0.0028656917, -0.041746102, 0.017878262, -0.0032504199, -0.011751764, 0.0005563203, 0.020758051, 0.0069973534, 0.03968418, 0.012689276, -0.056769557, -0.0032777141, -0.03159546, 0.034396227, 0.014727035, 0.031446747, -0.021761216, 0.014081807, -0.044662163, -0.05562882, -0.062178224, 0.03893921, -0.0033529738, -0.036351077, 0.024367312, 0.042211305, -0.012904543, 0.049622487, 0.017262787, -0.06448659, -0.020335393, 0.008968156, -0.0058309273, 0.0011993399, 0.005505002, 0.014440645, -0.05947971, -0.025605986, -0.057846073, -0.021173086, 0.00016938467, 0.021539148, 0.028602129, 0.06359311, -0.0009749654, 0.05096151, -0.0060864086, -0.06336753, -0.0227995, -0.0056563243, -0.008119025, -0.010628888, 0.012305276, -0.004833083, -0.036790993, -0.052689075, 0.022925653, 0.018876689, 0.006699124, -0.033101458, -0.027833676, -0.059916418, 3.7228507e-05, 0.017872492, -0.031929415, 0.042819005, 0.078930855, -0.03512685, -0.026764786, -0.03218309, -0.012039157, 0.015257466, -0.051178258, 0.036069706, 0.05009512, 0.013889545, 0.02241718, -0.048082773, -0.01655956, 0.014502058, 0.018704163, -0.00080527965, -0.0008818439, 0.03133135, 0.022152865, -0.021164155, 0.023620734, 0.019561924, 0.022285374, -0.006455082, -0.06380825, -0.013399252, -0.0119279735, 0.043067057, -0.054431085, 0.01186054, -0.06761901, 0.0067149787, -0.0011671789, 0.022058541, -0.022343125, 0.0065221135, 0.0179331, -0.0174691, -0.0124993455, -0.034565713, -0.010618853, -0.04522591, 0.011477217, -0.040950954, -0.020457214, -0.050326116, 0.040809866, 0.00621706, -0.020880876, 0.05764297, -0.00045968677, 0.037185207, -0.0068392074, 0.045605417, 0.018946398, -0.01749253, -0.0018132089, 0.0124584045, 0.07355309, -0.060205817, -0.002409116, 0.0071026045, 0.015100323, 0.029838396, -0.033865295, 0.07199812, 0.019032897, 0.049468353, 0.05877568, 0.054154832, 0.01919867, -0.047906768, 0.03655498, -0.018408341, 0.011292178, 0.039099764, 0.042725276, 0.033178322, -0.0143074365, 0.031985607, 0.053875167, 0.018837472, 0.00871147, -0.005743024, 0.024629816, -0.01635325, -0.035898313, -0.01797645, -0.053994376, -0.03975844, 0.001389998, -0.001412877, 0.034400344, 0.02058947, 0.008061633, -0.03204421, 0.034366928, 0.029411925, -0.0077836677, -0.022983333, 0.029114295, 0.0019956888, 0.015532013, 0.018530363, 0.032984257, -0.07206315, 0.027939241, 0.02714008, -0.008446154, -0.009668774, -0.01774445, -0.0656177, 0.04062503, 0.02060372, 0.028250264, -0.000676736, 0.10146062, 0.04479623, -0.01968242, 0.016009862, -0.028920628, -0.06513433, -0.019465191, -0.048195157, -0.052423052, 0.00874614, 0.006171302, -0.024628112, -0.0044068117, -0.021311957, 0.008045973, 0.012237987, -0.050152313, 0.01047857, -0.013588166, -0.008687587, -0.011768222, -0.064902425, 0.032173984, 0.068534166, -0.053547632, -0.021598352, -0.032929666, -0.04605979, -0.012210147, 0.0065221135, 0.0035835698, -0.007780256, -0.0021401874, 0.028488738, -0.0633868, 0.01436358, 0.045623083, -0.0002516687, -0.02335582, -0.019655045, -0.058468625, -0.0019756947, 0.010454587, 0.042407986, 0.007869965, 0.01295853, 0.003303804, 0.027178615, 0.02116305, 0.012615747, 0.0057878783, 0.029257992, 0.017409293, -0.026307607, 0.012304071, -0.027240427, -0.039488707, 0.0035002823, 0.039065246, 0.010839014, 0.06155849, -0.021559218, -0.04159658, 0.015285563, 0.03674524, -0.036344856, 0.0039115767, 0.044969626, 0.03845193, -0.064574905, 0.022044092, -7.7266704e-05, -0.07950965, 0.04125922, 0.05399759, -0.010412341, 0.02110214, -0.042172775, -0.048742246, 0.022760162, -0.012817845, 0.046396956, 0.03515254, 0.025782598, -0.036400046, -0.026939038, -0.027490292, -0.010575705, 0.011712428, -0.015222545, 0.03678016, -0.0042634164, -0.013425943, 0.030223524, -0.013548367, 0.022193106, 0.0019687708, -0.03361523, -0.033361476, -0.04042353, 0.011662657, 0.0038056865, -0.019328117, 0.01777636, 0.0009498788, 0.0031147515, 0.0023190049, -0.015755987, 0.011835252, 0.009662804, 0.001880491, -0.037084807, 0.0063634655, 0.006119423, 0.033772577, 0.011241604, -0.021464089, -0.011510131, 0.0049490836, -0.087746084, -0.048545167, 0.052208614, -0.0103958845, -0.02305458, 0.019778673, 0.02824279, 0.00734977, -0.029470125, 0.015592824, 0.02570874, 0.0077182413, -0.009489957, 0.029917669, 0.01243974, -0.08358853, -0.07532561, 0.016037157, -0.018761562, -0.036709514, -0.065608874, -0.038884822, 0.008046375, -0.017579682, 0.029949807, -0.022409504, 0.00089669524, -0.021277444, 0.009123693, -0.0029814914, -0.0071963407, -0.022126777, 0.02099487, 0.02003556, -0.0133789815, -0.0015447321, 0.03012358, -0.024621788, 0.01328586, -0.0016328362, 0.047588263, 0.018385876, -0.03386008, -0.026856704, -0.034394726, 0.03794217, 0.002738252, -0.034292772, -0.013093196, -0.06778357, -0.0104585, 0.01028751, 0.0224809, -0.0023737939, -0.02000987, 0.050733496, -0.007995198, 0.0087847235, 0.0025410713, 0.02035747, -0.038199857, -0.010252589, -0.0025504036, 0.020365097, -0.0445281, -0.030357588, -0.04432761, -0.014033642, -0.0077162352, 0.006233445, 0.0045765974, 0.011775848, -0.012104983, -0.0007716636, 0.0028963978, 0.060899813, 0.02003039, -0.012923007, 0.065682724, 0.009232669, 0.058536455, -0.01989668, -0.08637334, 0.07036007, -0.010814128, -0.056884352, -0.018508486, -0.016325552, 0.010567577, 0.031808197, 0.013278635, -0.011453334, 0.03379706, 0.0041005546, -0.005026952, -0.0090139145, -0.016502565, 0.015580781, 0.05515679, 0.005702835, 0.0012507172, -0.064777195, 0.04565359, 0.018582944, -0.0029076366, -0.007461756, 0.0006328344, -0.02427981, 0.037119728, -0.040247727, 0.025374085, 0.03186439, 0.02422442, -0.010555084, 0.050392542, -0.019145286, -0.008633, -0.04349574, 0.06619971, -0.003133165, 0.030588787, -0.037973676, -0.0154103935, -0.00493945, -0.03261468, -0.023035914, -0.0030029216, 0.04131501, -0.021497406, -0.025394456, 0.011132226, 0.00422097, 0.05390206, 0.020494744, 0.006394372, 0.03421892, -0.048455156, -0.04344115, -0.010887582, 0.019913537, 0.017294295, -0.015519571, -0.017589917, -0.007893647, 0.05821053, 0.026544025, 0.028774524, 0.038810767, 0.06364369, 0.044841185, 0.010362971, 0.03727667, 0.021412963, -0.021683248, 0.04487249, -0.010170306, -0.06546437, -0.07426916, -2.047066e-05, 0.010674446, 0.0022421395, 0.03282671, 0.03722128, 0.012588252, 0.01122605, -0.035950895, -0.020506784, -0.007504705, -0.009362417, 0.036185708, -0.050610296, -0.028932368, 0.041793864, -0.044611588, -0.042029176, -0.036237083, 0.0072430014, -0.017371964, -0.02014875, -0.023312971, -0.006085807, 0.025561031, 0.005265676, 0.0004431296, -0.025471121, -0.04236102, 0.012932039, 0.016199116, -0.007740318, -0.01313253, 0.0068656993, -0.013524283, 0.012019889, -0.05619156, 0.0056260196, -0.009441835, -0.015572955, 0.0022710392, -0.007983557, 0.042434778, 0.034824204, 0.0061024646, -0.008741373, -0.03570966, 0.041528348, -0.04342389, 0.017675914, -0.0009152593, -0.013040012, -0.046413004, -0.0058104564, 0.0072642746, -0.03223848, -0.002618639, -0.016301872, 0.023316484, 0.011609374, 0.005701681, 0.01246864, 0.014282902, -0.0016571828, -0.012752167, 0.0029716578, 0.0063039595, -0.09475266, -0.040942926, 0.01635365, -0.035980247, -0.04707931, -0.001131004, 0.033933133, -0.030112242, -0.039204076, 0.043611336, -0.023827849, -8.3889565e-05, 0.016243318, -0.050378695, 0.017443411, -0.002761131, -0.049954835, 0.0119742835, -0.025120812, 0.041307386, 0.010581525, 0.016977001, -0.027720485, -0.0130988145, -0.008620556, 0.006265628, 0.014558253, 0.021153418, 0.014773194, 0.0043347375, 0.019046344, 0.015865967, -0.03709444, -0.06008761, -0.0074124862, 0.025624452, -0.0066475463, 0.0038079442, 0.027038934, 0.016004244, -0.004783913, 0.012788343, 0.035438225, 0.0034949891, 0.0010299552, 0.023515169, 0.004615532, 0.01685217, 0.0075235697, 0.0060311183, 0.01595066, 0.0054243235, -0.027854146, 0.011157715, 0.03410091, 0.01640583, 0.006221475, 0.041077793, 0.014049095, -0.019659862, 0.00068074977, 0.006800875, 0.019687157, -0.07639169, -0.015424442, 0.07823485, 0.012873236, 0.010926674, 0.022991361, -0.011928374, 0.01911799, -0.061201654, -0.020731159, -0.059726164, -0.03982025, 0.018842641, 0.00015654035, -0.01202832, 0.025577487, 0.00046319887, -0.0053578946, 0.029078774, 0.04386501, 0.010437227, 0.03811637, -0.017476525, 0.05594993, -0.03676972, 0.0077363043, 0.03999024, 0.0021478138, 0.017700698, 0.039852764, -0.017088987, 0.021991158, 0.02577557, -0.035655074, 0.012948094, 0.027959712, -0.061097298, -0.000922986, -0.022728857, 0.024032556, 0.014239953, -0.008684176, 0.046795126, 0.031741865, -0.007617494, -0.042823017, -0.01905096, -0.009462864, -0.02025632, 0.034331307, -0.0044200574, 0.00532478, -0.0134005565, 0.019979967, 0.026021821, -0.020530567, -0.07571094, 0.06276465, 9.713529e-05, 0.054460388, 0.031634834, -0.03169661, 0.054909535, 0.031232206, -0.02348908, -0.02746119, -0.013936105, -0.022746516, -0.040722966, 0.025867088, -0.03202414, 0.030590842, 0.049399316, 0.03847766, 0.009022594, -0.065318264, 0.00068546605, -0.044702902, -0.03971509, -0.0700787, -0.027027894, 0.008657785, 0.0066678156, 0.025150515, -0.019651433, -0.01797926, 0.08040233, -0.01429093, -0.0122262025, 0.014648163, -0.0045942585, -0.02677723, -0.0016833481, -0.0014243164, 0.06695191, 0.0029862078, 0.035266533, -0.02009697, 0.009137751, -0.048299517, 0.041481584, 0.010812473, 0.031247057, -0.0309982, 0.02431172, -0.022574522, -0.010130568, 0.0109540345, 0.028306909, -0.04098979, 0.047447376, -0.01450868, -0.022374632, -0.043862607, 0.06223161, -0.034975126, 0.0462364, 0.004837598, 0.008547103, 0.033117514, -0.017981268, 0.07930093, 0.011354795, 0.03250159, 0.020299269, -0.014165698, 0.033441834, 0.026300384, -0.021029187, -0.0092130015, 0.013247328, -0.029470526, 0.0057895845, 0.013939315, -0.008513236, 0.0061405962, -0.001969699, 0.06241063, -0.018842615, -0.06563937, -0.052659567, 0.043987036, -0.00860992, -0.023889663, -0.036580667, 0.012701041, -0.021805268, 0.008730135, 0.009939108, -0.00978899, 0.0020591076, -0.05165029, -0.0006362713, 0.006420362, 0.015841883, -0.013157167, 0.027097136, 0.025519889, -0.01775328, -0.02763138, 0.012478924, 0.020127011, 0.049450696, 0.009055194, 0.015369854, 0.03271934, 0.024070688, -0.007919737, 0.0028981036, -0.03839092, 0.055640057, 0.05261, 0.030594405, -0.01556573, 0.0065064593, 0.03458879, 0.0067392625, 0.001331195, 0.00031508761, -0.0010675851, 0.042268302, 0.036286853, -0.05047824, 0.024758462, 0.031318504], [-0.022558967, -0.08328869, -0.03174875, -0.013968938, 0.015661677, 0.05427392, -0.009555045, -0.0341811, 0.037039783, 0.04189143, 0.0096452525, 0.0265766, -0.018437376, -0.0074497275, -0.025928592, -0.027269358, 0.04954768, -0.048948158, 0.057554968, 0.0472363, -0.011425518, 0.021719359, -0.043836843, 0.02419623, -0.010713062, 0.017887335, 0.018780027, 0.036758203, 0.0054455735, 0.005586363, -0.010945924, -0.046379447, 0.004102478, -0.0002205082, 0.011360135, -0.0118160695, 0.0054437085, -0.0034219562, -0.061491016, -0.06182003, -0.06477813, 0.027929716, -0.0049322974, 0.03357109, -0.0316674, 0.05513917, 0.001389831, 0.030251114, -0.021772504, -0.027458806, 0.04959896, -0.027991952, -0.04495337, 0.014577783, 0.008541313, 0.006403595, 0.027876338, 0.020875085, 0.017577253, 0.0005832628, 0.01931055, 0.00057900883, -0.057287376, 0.00390761, 0.00795537, 0.009252487, -0.006859063, -0.004872509, -0.008593526, -0.048879158, -0.026819834, 0.018852752, 0.021717958, -0.007948231, 0.0319639, 0.02640504, -0.08147522, -0.021339063, -0.0056418395, 0.013845864, -0.008576044, 0.010527751, -0.016728787, -0.05591631, -0.050298247, 0.019743059, 0.013447736, -0.008939673, 0.04056978, 0.015112037, -0.022885302, -0.0012633768, 0.06985028, 0.03409159, -0.00067320844, 0.02318611, -0.0010958978, 0.03717218, -0.0020979748, 0.021700244, 0.035972204, -0.015697805, -0.018712895, -0.00666676, -0.0043430324, 0.004307835, 0.018270945, 0.0059220204, 0.005207088, 0.036868226, 0.012114198, 0.0057043093, 0.018299615, -0.08224722, 0.01422068, -0.03283847, 0.040194962, -0.011527031, -0.047645155, -0.015727058, 0.007341571, 0.0072173313, -0.0021304914, 0.03797528, -0.045697875, -0.028928762, 0.010361903, -0.0034994022, -0.058201343, 0.006405926, 0.030414747, 0.021258062, 0.05337324, -0.0023980848, -0.016378677, 0.024688061, -0.017167006, 0.04776403, -0.019016035, 0.018551126, -0.03811948, -0.016797317, 0.016376346, 0.004757942, 0.01631854, -0.012566635, 0.01291628, -0.067903474, -0.026219962, 0.0011855229, -0.017905219, -0.004282078, -0.0054845004, -0.00413183, 0.025536992, -0.037389424, 0.012965448, 0.038629495, -0.055103738, -0.0047346326, -0.024027467, 0.0147717185, 0.029892147, 0.026828341, -0.011355822, -0.055944744, 0.016636947, 0.0075665084, -0.024958916, -0.0069851386, 0.076895356, -0.017526906, -0.013364055, 0.0206572, -0.06258564, -0.0059861215, 0.03222077, -0.028756972, 0.056112576, 0.014320562, -0.0075252503, -0.009017177, 4.5686687e-05, -0.0003459135, -0.01642448, 0.036995027, -0.027623665, -0.016866779, 0.017855685, 0.0293178, 0.004029752, -0.020979047, 0.026457721, -0.012236865, -0.015427182, 0.022165501, -0.03823265, 0.02459622, 0.012149513, 0.006827829, 0.00017925033, -0.008145604, 0.039485417, -0.024787825, -0.051491696, -0.030570688, 0.030545745, 0.00676163, 0.050087526, -0.034194157, -0.020185357, 0.01733297, 0.018395739, 0.034842625, 0.044276927, 0.057406515, 0.016668182, -0.025260076, 0.05966938, 0.024823723, -0.023595834, -0.00011141958, 0.045418162, -0.03628455, -0.057373155, 0.018626416, -0.0062255105, 0.03312879, 0.015416692, -0.015737198, 0.052414753, 0.00012773625, -0.0031822175, -0.029778803, -0.003212753, -0.017977946, -0.036573593, 0.036180127, -0.06594081, 0.029545302, 0.003236762, 0.054385807, 0.033535425, -0.007837132, -0.0014669856, 0.0071300366, -0.030824529, 0.018034121, -0.012644024, -0.012354054, 0.05683284, 0.006125746, -0.036438398, 0.0013872086, -0.012398807, -0.0024633517, 0.03244827, -0.021393126, 0.028007658, 0.024025137, 0.036183856, -0.048413906, 0.007829206, -0.035817433, 0.017294742, -0.0055208635, 0.034606267, -0.04484288, 0.0070307385, -0.044575755, -0.02266899, -0.045354757, 0.032707006, -0.019726392, -0.050715018, 0.013120471, 0.0069345864, 0.013683628, 0.05576573, 0.025075233, -0.056041714, -0.013043083, 0.040086806, -0.021979492, 0.023659585, 0.004826006, 0.04435245, -0.04098236, -0.016587997, -0.036951672, -0.0056087403, 0.0084884, 0.008397027, 0.032004807, 0.046805542, -0.0028921887, 0.05395505, -0.0058594197, -0.060090113, -0.026937313, 0.015622983, 0.0007776061, 0.020373, 0.038238823, 0.008712172, -0.00838444, -0.029939232, 0.038985662, -0.006921533, 0.021386964, -0.038577277, -0.03148372, -0.06068964, 0.01783832, 0.00087830325, -0.020251876, 0.045778062, 0.06491612, 0.0016615036, -0.00038134397, -0.026314134, -0.024573844, -0.0013652394, -0.04668993, 0.04525966, 0.040851355, -0.010670173, 0.0023211634, -0.06407138, -0.028074352, 0.033556115, 0.041003335, -0.0009612852, -0.0027197562, 0.019432692, 0.021000957, -0.040331088, 0.0040316167, 0.0029481899, 0.01840719, 0.004075497, -0.07696622, -0.0054003526, -0.013123618, 0.081264496, -0.06409936, 0.022434961, -0.0587624, 0.00893536, -0.017805338, 0.012861269, -0.033960126, 0.0048730914, 0.01505353, -0.013604376, 0.004516222, -0.010275833, -0.014399698, -0.041019186, 0.009160647, -0.015755381, -0.022611182, -0.043627873, 0.05146372, 0.018093094, -0.014916936, 0.052862294, -0.024045182, 0.047721844, -0.005965376, 0.054922856, 0.044306763, -0.0094026, 0.0027948131, 0.009203828, 0.072349064, -0.05276533, -0.012011869, 0.016113881, 0.00047364974, 0.026168814, -0.019562293, 0.06898806, 0.019627094, 0.033475287, 0.061201513, 0.042112872, -0.0034950315, -0.04321002, 0.041065805, -0.03011685, 0.034849968, 0.024790155, 0.04287276, 0.022722134, 0.0047013, 0.056010015, 0.04188071, 0.02183579, 0.014939081, -0.007137379, 0.02788333, -0.0018050903, 0.013197392, -0.033967122, -0.030259855, -0.008914964, -0.008993751, -0.015227653, 0.023149166, 0.04317299, -0.008687464, -0.025897358, 0.002334683, 0.0333662, -0.0018852751, 0.0059471945, 0.014796659, 0.015982881, 0.0031794205, 0.0132230325, 0.040901706, -0.07037242, 0.043691244, 0.046964053, -0.0036912977, 0.022396965, -0.03939591, -0.032495353, 0.033713046, 0.021237781, 0.04343825, 0.009667629, 0.08115074, 0.044512354, -0.032299325, 0.027160268, -0.009338732, -0.07355743, -0.005238701, -0.04324385, -0.05177333, 0.014101103, -0.006545317, -0.018821051, -0.0017859766, -0.033293474, 0.012067812, 0.011602671, -0.039517585, 0.007945754, -0.00981984, 0.006616178, 0.008711239, -0.06273435, 0.031062286, 0.069622785, -0.03137102, -0.024172919, -0.020585116, -0.038714338, 0.0030311253, -0.009441294, -0.017216654, -0.0011920496, -0.009217989, 0.038818765, -0.058592245, 0.030093133, 0.047379892, 0.0366314, -0.022648826, -0.023752416, -0.06272357, -0.016497556, -0.0054369485, 0.04503402, -0.0018538074, -0.0008516139, 0.001657308, 0.0077886474, 0.014806217, 0.05348699, 0.014788501, 0.019377857, 0.01580678, -0.03804167, 0.0064232918, -0.053681683, -0.034210004, -0.0022405125, 0.018423855, -0.0052486076, 0.06448349, -0.028639026, -0.04647175, 0.021834506, 0.02149885, -0.027263764, -0.0026302477, 0.03233685, 0.046895053, -0.04360002, 0.017371664, -0.0085431775, -0.06782515, 0.041903082, 0.036188517, 0.00986273, 0.0062643206, -0.019313348, -0.06142342, 0.020486517, -0.0139845265, 0.057367675, 0.020823805, 0.01604203, -0.06007333, -0.00347685, -0.011217015, -0.041967414, -0.009447296, 0.021219134, 0.04342846, -0.019668585, -0.02824253, 0.042976256, -0.023917446, 0.02308949, 0.010852168, -0.004090357, -0.014493402, -0.04720647, 0.026543032, 0.016440915, -0.0020419152, -0.008920967, 0.010943128, -0.011065503, 0.009088387, -0.034691114, 0.01913806, 0.051877704, 0.0057140994, -0.019980934, -0.020098412, -0.013194362, 0.043031268, 0.022238927, 0.0008246914, -0.0021426124, -0.034921877, -0.091604605, -0.057065003, 0.034624916, -0.018239245, -0.028912213, 0.03516663, 0.048794314, -0.027819695, -0.046988294, -0.005757455, 0.036872886, 0.014968451, -0.0233711, 0.022596497, 0.025226977, -0.046365462, -0.09446888, 0.03306481, -0.01824111, -0.030956695, -0.06260941, -0.032680202, 0.011937279, -0.025721604, 0.038606647, -0.013454264, -0.028857436, -0.009904687, 0.03482887, -0.020147363, -0.006972814, -0.005924759, 0.031868793, -0.0042936164, -0.0054618903, -0.024677338, 0.054441746, -0.009815878, 0.027825989, -0.00040931543, 0.04109564, 0.018642033, -0.032334056, -0.030747142, -0.028442293, 0.04366901, 0.011141491, -0.039587982, -0.029711002, -0.033371795, 0.0031781967, 0.0009249223, 0.0236456, -0.0127163995, -0.023909988, 0.033830527, -0.03620157, 0.019651802, 0.011549875, 0.028289616, -0.023986444, -0.024434919, 0.005917825, 0.0025388745, -0.019015044, 0.00017499633, -0.039154656, -0.03194525, 0.009532668, 0.017741237, 0.004109238, 0.008329895, -0.019407518, 0.028494975, 0.010748959, 0.048923448, 0.021289065, -0.00630756, 0.04855143, -0.0008894918, 0.03469671, -0.0015440235, -0.086662985, 0.07723661, -0.0010871567, -0.05743469, -0.028146729, -0.007401127, 0.01591106, 0.026588487, 0.0027132297, -0.011052041, 0.031682786, 0.019656232, 0.0149217155, -0.014037934, -0.011192305, 0.013154269, 0.04790016, -0.008832915, 0.017457908, -0.06394435, 0.048015773, 0.022355447, 0.009599333, -0.012870942, 0.0009516117, -0.01444352, 0.04238046, -0.026088031, 0.026955144, 0.03113781, 0.026538372, -0.012269206, 0.035199262, -0.045497183, -0.015231849, -0.035771742, 0.047144, 0.03921969, 0.018803801, -0.027292784, 0.00037714827, -0.0058562877, -0.048030693, -0.028887972, 0.0038982867, 0.023266645, 0.002144477, -0.024974536, 0.004649786, -0.0026815287, 0.007853448, 0.016716665, -0.0027072276, 0.03767194, -0.056230057, -0.022964554, -0.013816027, 0.037757717, 0.048882894, -0.038048618, -0.03148279, 0.02645842, 0.053661346, 0.04044484, 0.015677061, 0.023558944, 0.033879012, 0.020880913, 0.007984914, 0.041072335, 0.038394764, -0.010772735, 0.021529619, -0.011374121, -0.051714532, -0.040823385, -0.014776381, 0.028601732, -0.029977925, 0.05107212, 0.05284551, 0.013434684, 0.03528411, -0.03909102, -0.012803461, -0.004387787, -0.009091651, 0.0040987483, -0.04465361, -0.043467037, 0.03484123, -0.009263558, -0.0509262, -0.04122804, -0.0045588785, -0.022773065, -0.022143153, -0.001461974, -0.021588592, 0.03354708, 0.010090231, 0.011823062, -0.025799925, -0.05543683, 0.028594272, 0.014059379, -0.0022209324, -0.03029074, 0.041175827, -0.012531439, 0.010612365, -0.04580277, -0.003315082, 0.007255792, 0.008710307, 0.009435932, -0.020792104, 0.06019081, 0.03241051, 0.038923193, -0.009198175, -0.026504338, 0.03812321, -0.030926624, 0.03007303, 0.00444, -0.0054712137, -0.044912577, -0.012564305, 0.0022769917, -0.028972818, 0.0129945995, -0.018114539, 0.014440723, 0.0016406415, 0.0055374126, 0.008010554, 0.015302243, -0.00036712518, 0.00033146158, -0.001692855, 0.017089851, -0.088024266, -0.025015792, 0.013538294, -0.06166957, -0.043631718, 0.011309669, 0.030800287, -0.03405243, -0.04408672, 0.04212126, -0.0169437, -0.0076422635, 0.0028279128, -0.059230458, 0.02010424, 0.02013291, -0.038933042, 0.02315103, -0.03448529, 0.060627166, -0.0042616236, 0.006584477, -0.04186765, 0.00019055544, 0.00014078959, -0.029340643, 0.048427887, 0.005784494, 0.0041395985, 0.013263824, 0.019990256, -0.004272849, -0.05689671, -0.046432592, 0.0016265393, -0.0017771189, 0.015172643, 0.030787233, 0.02121354, 0.018131088, 0.020382322, 0.0010396052, 0.03548457, -0.026082436, 0.024332356, 0.019257404, -0.00028752311, 0.01636609, -0.024782464, -0.0038850002, 0.012617918, -0.003337692, -0.03106543, 0.020035012, 0.047634434, 0.009554811, -0.01025736, 0.07051088, 0.0019775808, -0.004112035, -0.026977057, 0.027556999, 0.0023843322, -0.05936286, 0.0072695445, 0.06890671, -0.004544427, -0.01973758, 0.057346117, 0.003020799, 0.044082988, -0.0638905, -0.021445587, -0.063786075, -0.03158238, 0.0026563546, 0.016550235, -0.013424661, 0.0008204956, -0.018886434, -0.037850954, 0.037705503, 0.045138445, 0.0074609155, 0.027467024, 0.0006060479, 0.04685776, -0.05922533, -0.0014046326, 0.057613708, 0.029703688, 0.02116832, 0.004441865, -0.030352741, 0.021965738, 0.028075868, -0.041543186, 0.03735283, 0.023840059, -0.070931844, -0.0004608295, -0.025733026, 0.025820902, 0.008135144, -0.037945125, 0.033255246, 0.028015263, -0.006440891, -0.032053873, 0.0085727805, 0.0051155104, 0.008856545, 0.02776352, -0.0055397437, 0.0073532253, -0.019585777, 0.010485561, 0.0503113, 0.0009920538, -0.04740973, 0.058698535, -0.0067834095, 0.062160004, 0.01618614, -0.02558268, 0.07833496, -0.0010852918, -0.037310172, -0.042643394, -0.022255942, -0.022361303, -0.0044931457, -0.0022111426, -0.029347736, 0.025556166, 0.030353675, 0.04442704, -0.009532201, -0.06820556, -0.009270202, -0.034038212, -0.025619976, -0.057900883, -0.020178597, 0.011364797, 0.0043249675, 0.056052905, -0.0013722323, 0.003743045, 0.06638555, -0.0016521798, -0.014010894, 0.00038134397, -0.0022335195, -0.048308544, 0.034412213, -0.009818909, 0.07145048, 0.015230916, 0.047420915, -0.035777453, 0.011646375, -0.057595063, 0.022988794, 0.016787527, 0.017214557, -0.004048866, 0.027069828, -0.04151603, -0.010531014, 0.047526274, 0.031785812, -0.040335752, 0.060715493, -0.011036832, -0.01721922, -0.0385894, 0.067467116, -0.0528236, 0.05224692, -0.004637432, 0.005781347, 0.04170169, -0.03753674, 0.07785384, 0.010119601, 0.020978812, 0.012882248, -0.006813377, 0.011502323, -0.0021071818, -0.008291667, -0.019315213, -0.0030427682, -0.033009097, 0.001804158, 0.0070198993, -0.016000597, -0.017047662, -0.0038759094, 0.06178658, -0.040528286, -0.04850807, -0.03323986, 0.046400893, -0.020950086, -0.009090718, -0.028883776, 0.013981058, -0.03838754, 0.009025918, 0.0010302814, -0.028475394, 0.00086711464, -0.05153645, 0.042797238, -0.0053481394, -0.0086888615, -0.021643369, 0.011512113, 0.027827853, -0.008841073, -0.006334832, 0.0070982194, -0.018825216, 0.036261246, 0.023586918, 0.033906046, 0.036123253, 0.018801471, 0.003038864, 0.0075308443, -0.03747474, 0.029303813, 0.055814214, 0.0044092317, -0.025756104, 0.0014934419, 0.054148983, -0.0018414533, 0.019863918, 0.0036515552, -0.021559048, 0.024729552, 0.028083151, -0.014449581, 0.0020673517, 0.018911958], [-0.021454081, -0.06624092, -0.0011121549, -0.029607283, 0.044488035, 0.04630108, -0.0080343215, -0.036580205, 0.03433859, 0.028216515, 0.0053409142, 0.040028397, -0.028388638, 7.894786e-05, -0.031227091, -0.010244861, 0.03813296, -0.028550379, 0.052520517, 0.049063798, -0.0034255108, 0.008410701, -0.017556718, 0.021187173, -0.023011923, 0.024180077, 0.004118994, -0.017030476, -0.009807206, 0.030237028, -0.036260474, -0.04384268, -0.015094876, 0.00036398636, 0.025611235, -0.013268747, -0.0035778987, -0.0072124405, -0.06043183, -0.055218976, -0.08374348, 0.0270043, -0.012370946, 0.016771829, -0.011895422, 0.061924495, 0.01297407, 0.0613994, -0.01466181, -0.008677838, 0.030950313, -0.018018471, -0.059723135, 0.029821176, 0.00734588, 0.029686231, 0.029027106, 0.011941666, 0.0025063076, -0.015025567, -0.0017887197, 0.04527568, -0.071148545, 0.0017734581, 0.026500316, 0.027881445, -0.010015362, 0.03003874, -0.025188038, -0.050602823, -0.012966956, 0.0136664715, 0.019061776, -0.010847757, 0.027532605, 0.0073519615, -0.07289825, 0.012213968, -0.0039492287, -0.0022958564, -0.029684395, 0.026848238, -0.0020003184, -0.034274384, -0.051573146, 0.015934614, 0.0051628225, -0.027737321, 0.036656592, 0.026678868, -0.056188844, 0.011695758, 0.059241187, 0.023632031, -0.0068674306, -0.0021079537, -0.017994603, 0.036927402, 0.010824119, 0.015505221, 0.04887056, -0.03247373, -0.008238117, -0.040351532, -0.01660659, 0.007856688, -0.018701462, -0.0091083795, -0.016634129, 0.009642884, 0.018048076, 0.006035839, 0.021603255, -0.05578676, -0.008904698, -0.014116978, 0.01705453, 0.0028262874, -0.008479207, 0.023690782, -0.0028714987, 0.020298779, 0.0135131655, 0.022172414, -0.047537625, -0.012461139, -0.010448886, -0.005323931, -0.047478873, 0.00080256, 0.025737127, 0.005568578, 0.052120276, -0.031646617, -0.028625943, 0.03009382, 0.015396209, 0.030828219, -0.0029187757, 0.025882045, -0.010584407, 0.015029468, 0.0069005936, -0.012013729, 0.021746693, -0.0051095784, -0.039644673, -0.04649983, -0.014049161, -0.0069230846, -0.033976953, -0.0015156153, -0.0022698657, 0.005462205, 0.0042152186, -0.025660807, 0.009542822, 0.014756823, -0.034806825, 0.0016880842, 0.009353657, -0.017027033, -0.019689916, 0.020791516, -0.011244102, -0.05517537, 0.006171703, 0.032635186, -0.0045883134, 9.5758696e-05, 0.06585353, 0.0026250163, 0.01836318, 0.0094122365, -0.040654473, -0.0018305748, -0.002193557, -0.0025341343, 0.038329013, 0.0041903756, 0.014001311, 0.006229422, -0.017539734, -0.0133564165, -0.040979445, 0.012069842, -0.0065609342, 0.013175112, 0.021095602, 0.039275642, 0.024796052, 0.0014903703, 0.032660086, -0.0036882304, -0.032941453, 0.02143447, -0.049390145, -0.010906967, -0.0017744908, 0.041855216, 0.018843751, 0.0010868025, 0.010002051, -0.011645956, -0.02846621, -0.053522054, 0.042036064, -0.009007629, 0.053710245, -0.022802848, -0.0022196053, -0.016938906, 0.040609494, 0.054306027, 0.046364423, 0.020406185, -0.004491307, -0.034426775, 0.015603218, 0.042980224, 0.0046937256, -0.006322484, 0.045189384, -0.043096352, -0.033051614, 0.020855546, 0.012139036, 0.038534816, 0.026377765, 0.012728506, 0.062323824, 0.0041332874, -0.014777937, -0.03489277, -0.025273643, -0.021613352, -0.038352594, 0.041987408, -0.060154594, 0.03610074, -0.015430176, 0.004702905, 0.011449735, -0.008412078, -0.018196564, -0.028655892, 0.007724497, 0.0101493895, -0.045572422, 0.001076812, 0.039246265, 0.021886917, -0.013783056, 0.04048189, 0.016434925, 0.009716897, -0.0016120624, 0.00856217, 0.01596158, 0.01792977, 0.040368978, -0.044259455, -0.031816904, -0.07022687, 0.04660035, 0.0058914837, 0.013052674, -0.035581615, 0.0003359874, -0.07415958, -0.047706537, -0.043395616, 0.033171985, 0.00038865756, -0.035884555, -0.009469612, -0.010399545, 0.012917843, 0.011497011, 0.032133613, -0.06889761, 0.00337089, -0.013373629, 0.014250777, 0.00646638, -0.0041020755, 0.016512036, -0.044813007, 0.014603059, -0.04288613, -0.017620977, -0.005282162, -0.006578376, 0.014474997, 0.05752545, -0.042356443, 0.018132303, 0.0045367475, -0.08297236, -0.00915864, 0.022604791, 0.009736749, 0.02266997, 0.032042503, -0.006114787, -0.001097926, -0.036476664, 0.024093784, 0.010904903, -0.0036205854, -0.03743414, -0.053755917, -0.054780632, 0.026328191, 0.03369662, -0.004762059, 0.036782358, 0.07499312, -0.037726287, -0.037307452, -0.03486007, -0.0044218833, 0.004601008, -0.057154115, 0.030751107, 0.06078503, 0.036856715, 0.013416545, -0.056581743, -0.026508119, 0.05326169, 0.057301454, -0.02508029, -0.03297817, 0.016584558, 0.032005094, -0.011431488, 0.030597802, 0.015983727, 0.012406747, -0.018886898, -0.08960467, 0.0016785599, -0.033073645, 0.08369942, -0.057903666, 0.016050283, -0.027642766, 0.008525565, 0.017847264, 0.029082187, -0.035136845, -0.0017299679, 0.016396597, -0.024906442, 0.00041505, -0.01329101, -0.020034395, -0.008722591, 0.012633034, -0.02412775, -0.031531405, -0.050645966, 0.02683768, 0.031291176, -0.026554594, 0.028404705, -0.015848322, 0.02917215, -0.02564612, 0.043917958, -0.0075542084, -0.007699596, 0.027996425, 0.0061976365, 0.0695044, -0.026562283, -0.011257786, 0.012849223, -0.007234917, 0.008676002, -0.015443485, 0.06878011, 0.036512926, 0.022820061, 0.060343903, 0.0520886, 0.03948586, -0.05034762, 0.035518274, 0.0037197291, 0.004334329, 0.008519943, 0.052270822, 0.0053207185, 0.013200816, 0.047063936, 0.023240505, -0.0023447971, -0.003278172, 0.0030707046, 0.011178466, -0.0120597435, 0.0007564306, -0.028845804, -0.030829137, -0.021555519, -0.016771829, 0.007704989, 0.025354195, 0.059919585, -0.001953615, -0.003285975, 0.022129267, 0.038856115, 0.008815538, -0.052399345, 0.02143526, 0.047959905, 0.0356982, 0.030194229, 0.065078735, -0.041032918, 0.05005409, 0.009567149, -0.034828857, 0.0039242133, -0.03319218, -0.018851096, -0.0023124376, 0.039202202, 0.06006647, 0.0013650635, 0.07465162, 0.04491169, -0.02841572, 0.049730726, -0.013183374, -0.07790272, -0.009602722, -0.027785974, -0.025200889, -0.009824303, 0.0091451, -0.011192235, 0.0020067443, -0.021803379, 0.013478511, 0.006397989, -0.058397546, 0.026628606, -0.03817565, -0.0515199, 0.02074309, -0.0618584, 0.019300915, 0.04707151, -0.06419929, -0.025136631, -0.048134323, -0.05129683, -0.028502356, 0.008912301, -0.0123576345, -0.01250635, -0.008816456, 0.027088294, -0.038036343, -0.009612361, 0.02640496, 0.020739878, -0.020869773, -0.013701125, -0.017213387, -0.018983288, -0.023845924, 0.04016478, 0.024345316, -0.012633951, -0.0035379655, 0.028377164, 0.032118924, 0.019619461, 0.012193887, 0.0399265, 0.02395884, -0.026460383, 0.006933641, -0.027569326, 0.014502336, -0.003891768, -0.0068923314, 0.042159993, 0.05248311, -0.039983418, -0.039795227, 0.024704253, 0.011983549, -0.08274102, 0.028645907, 0.04856831, 0.061619263, -0.049134944, -0.016992178, -0.003746351, -0.055733513, 0.04437971, 0.05469067, 0.0057512596, 0.013263527, 0.0022227035, -0.037751764, -0.0046928073, -0.0497959, 0.0014779773, 0.0368286, 0.016602, -0.032220036, 0.0031572257, -0.018784082, -0.0325334, -0.011747625, -0.011092633, 0.018110042, 0.025304165, -0.015448076, 0.042154483, -0.011782509, 0.029021772, -0.0004406392, -0.010935196, -0.026044762, -0.0044559636, 0.01670298, -0.0012236917, -0.01595504, 0.00704885, 0.0009992411, 0.016113969, 0.019544873, -0.017352464, 0.032201085, 0.032275904, -0.020884464, -0.024554618, -0.019144395, -0.013522575, 0.018345278, -0.00045716314, 0.018015716, 0.029950613, -0.0068707583, -0.094686024, -0.06969443, 0.06575897, -0.025679857, -0.04205924, 0.018792573, 0.040491067, 0.02266446, -0.063978516, -0.005066892, 0.024771439, 0.045763593, 0.0068143015, 0.028889406, 0.021229628, -0.042938225, -0.031213779, 0.015349276, -0.015637184, -0.02937262, -0.043612264, 0.00075780763, 0.009358993, -0.004867399, 0.0363587, -0.0012723457, 0.00782869, -0.03566963, -0.0017533767, -0.052058764, -0.0048822514, -0.013251995, 0.021092847, -0.0054359273, -0.02009636, -0.009352567, 0.04345804, -0.021003112, 0.040580116, -0.019511135, 0.02069719, 0.034204617, 0.009339485, -0.017027033, -0.0038430206, 0.049335983, 0.0025722315, -0.0599508, -0.018189218, -0.04328362, -0.0015275492, -0.034296416, 0.038627073, -0.012704523, -0.01937619, 0.04862545, 0.0058834516, 0.00048286712, -0.0337019, -0.0079953065, -0.023868874, -0.007949865, -0.016932938, 0.018197251, -0.018654644, 0.009631581, -0.022567382, -0.031843066, 0.03912142, -0.008905502, 0.0013118197, 0.026263934, -0.019196263, 0.013568015, 0.01147888, 0.07071341, 0.043164283, -0.025318395, 0.06531374, -0.01537739, 0.043806877, -0.013164526, -0.09863525, 0.060929388, -0.055641714, -0.037224833, -0.028037505, -0.024233092, 0.0040006367, 0.063466735, -0.012174494, -0.0054508448, 0.027919082, -0.015141465, 0.0015670231, -0.013736927, -0.040309306, 0.007785085, 0.002143526, 0.02190298, 0.008032715, -0.045161847, 0.01303511, 0.013004364, -0.021095946, -0.011480028, 0.033617098, -0.019394092, 0.048385628, -0.03593275, 0.018235635, 0.02098177, 0.027722515, -0.035934586, 0.022230247, -0.026450744, -7.573486e-05, -0.020675158, 0.047882795, 0.020899609, 0.013230192, -0.0216464, 6.655488e-05, 0.006249618, -0.0213251, -0.010102113, 0.024612453, 0.042292185, -0.02881046, -0.016572624, 0.03140656, 0.03310302, 0.03794087, 0.0195443, -0.012640378, 0.031756315, -0.047897484, -0.044188768, -0.038599074, -0.00020930362, 0.011532813, 0.0004902111, 0.012262794, 0.015208479, 0.053602844, 0.08686284, 0.014856656, 0.036420666, 0.05502849, 0.062974684, 0.015066877, 0.034178454, 0.06512732, -0.011425408, -0.0021221826, 0.005620904, -0.05403935, -0.045148995, -0.031482637, 0.035552237, -0.026083086, 0.05182651, 0.0641589, -0.004937339, 0.03419911, -0.030154409, -0.004721954, 0.009213031, 0.01202486, -0.021952093, -0.03517494, -0.040356122, 0.031755395, 0.0016266931, -0.039453328, -0.052307542, 0.010285942, -0.013894822, -0.016587542, -0.008802686, -0.022060419, 0.040409368, 0.027503, -0.01513871, -0.03286388, -0.06591962, 0.006436316, -0.0073729036, -0.028557092, 0.007387133, 0.0029747735, -0.012845551, 0.014309299, -0.06670543, 0.0039988006, 0.026620116, 0.034121998, 0.019390877, -0.012124922, 0.054224327, 0.006756927, 0.015595874, -0.013825628, 0.040430825, 0.03161586, -0.066420846, 0.024365513, 0.03758836, -0.013351368, -0.040435992, -0.02212376, 0.001668003, -0.02614092, 0.023605868, -0.032321345, 0.05038526, 0.0162807, -0.0017176896, 0.041895606, 0.011876144, -0.012390912, -0.004571173, 0.022983005, 0.023600819, -0.08127406, -0.025900636, 0.012103807, -0.028144509, -0.06931622, 0.024598109, 0.0076763025, -0.01795513, -0.033657033, 0.055840462, -0.025671823, -0.0047552316, -0.042534534, -0.03606081, 0.034054067, -0.0155648915, -0.031437773, 0.03476276, -0.020220978, 0.02529682, 0.000545291, 0.03284575, -0.04466888, -0.0011036635, 0.0044396697, -0.03140151, 0.03276267, 0.020285929, -0.00225644, -0.001677642, 0.0066270297, -0.023505576, -0.049230415, -0.050853435, -0.007915211, -0.01050454, -0.0059780055, 0.005407928, 0.028744364, 0.011763977, -0.014463982, 0.0021127732, 0.02532023, -0.03294788, -0.008030535, -0.012360618, -0.00060266594, 0.016656162, 0.0065760813, -0.002767765, 0.0032109288, 0.0058368626, -0.038708318, 0.010151225, 0.030428777, 0.01680878, 0.019191673, 0.03448369, 0.041023508, 0.016868593, -0.017104603, 0.020215241, -0.0029137267, -0.06533211, -0.008197037, 0.0522551, -0.0042117764, 0.019452384, 0.03669423, 0.033802535, 0.053559694, -0.07918286, -0.003192167, -0.035852425, -0.046785787, -0.010082375, -0.0001712067, -0.00012209378, -0.00039841127, 0.021434344, 0.0017533767, 0.044846054, 0.017763726, 0.01540034, 0.013374777, -0.015896976, 0.047416452, -0.0796896, -0.024182372, 0.06401386, 0.009305749, 0.021587191, 0.023361107, -0.006073362, 0.042598795, 0.048705317, -0.040250555, 0.062934294, 0.012518284, -0.05218637, -0.012413174, 0.016089756, 0.036246933, -0.00878708, 0.009874507, 0.012776701, 0.044221357, -0.024275547, -0.030582884, -0.032429207, -0.010538851, -0.015931403, 0.029564137, 0.018919716, 0.0072521153, -0.03136525, 0.017906245, 0.04845195, -0.014609943, -0.028743446, 0.04411487, -0.009740422, 0.037050415, 0.06247254, -0.036306836, 0.0535753, 0.003880379, -0.04758444, -0.031571798, -0.051733337, 0.0045353705, -0.019906105, 0.015763337, 0.010600586, 0.044854317, 0.037149556, 0.046896864, 0.006711486, -0.090209864, -0.016363319, -0.019973144, -0.007862771, -0.041956313, -0.047442153, 0.003295614, 0.009492619, 0.06770008, -0.014676039, -0.030894315, 0.05879963, -0.0017270992, -0.01766596, 0.0070217694, -0.015071237, -0.052063357, 0.023423646, -0.019753488, 0.045893032, -0.0046749064, 0.04275302, -0.028423065, 0.001195033, -0.022890748, 0.031748056, -0.0033861515, 0.015014666, 0.005353537, 0.017754547, -0.009595607, -0.020177603, 0.0127765285, 0.0137897115, -0.03647988, 0.067060694, 0.0012473301, -0.027187552, -0.02452157, 0.04910832, -0.07342518, 0.045919653, 0.02724424, 0.012588511, 0.011290003, -0.029739931, 0.09853427, -0.01719319, 0.029605445, 0.019664442, -0.015909828, 0.010015132, -0.023598064, -0.044917658, -0.019342225, -0.019984823, -0.032586187, -0.03152682, -0.0025791165, -0.018167647, 0.0154051585, -0.0016331191, 0.027135111, -0.04345345, -0.04190754, -0.04774739, 0.0652807, -0.0031820117, -0.018106598, -0.010909836, -0.014087143, -0.036365587, -0.015088221, -0.0072517274, -0.030279946, 0.01965205, -0.040612247, 0.0015394831, 0.008365719, 0.005566742, -0.0011663169, 0.025826965, 0.0005647985, 0.0058329618, 0.020599136, 0.020757247, -0.011959223, 0.043899596, 0.0071606166, 0.014562896, 0.029394308, 0.0007798396, 0.012493957, -0.017521834, -9.547183e-05, 0.015153972, 0.058861133, 0.017704975, -0.00392123, 0.009596984, 0.038640387, -0.0059748497, 0.021688772, -0.016648818, -0.020696962, 0.03184353, 0.028885735, -0.052018836, 0.0128721725, 0.0038386101], [-0.046140037, -0.07184044, -0.028081428, -0.012207057, -0.008602974, 0.043257356, 0.027422423, -0.028310139, 0.040927406, 0.03996227, -0.008937277, 0.01859731, -0.0690692, 0.003391134, -0.008813322, 0.046854552, 0.025423832, -0.043268204, 0.036473222, 0.021148298, -0.04190595, -0.012137359, -0.031449705, 0.00850093, -0.015965562, 0.04840712, 0.014508259, 0.009048293, 0.022511387, -0.021793114, -0.0115991775, -0.021346126, -0.02524476, 0.027776342, 0.007928212, 0.032173194, 0.023872387, -0.014953891, -0.04876396, -0.060562633, -0.092462875, 0.012168452, -0.030116877, 0.017860364, -0.020890582, 0.026448729, 0.017359849, 0.028500455, 0.0039877393, -0.059825577, 0.03100835, 0.0038229874, -0.046386693, 0.004104025, -0.023938328, 0.02147217, 0.017364126, 0.023278069, -0.0061422386, 0.010424736, -0.010584688, -0.047365185, -0.04857698, 0.009112567, -0.003802537, 0.02593808, 0.0115227485, 0.00026210002, -0.008689784, -0.030762944, -0.017785631, 0.021076515, 0.011094593, -0.041874234, 0.05984561, 0.004622643, -0.05367541, 0.02921429, -0.015038197, -0.005188996, 0.019716348, 0.03915223, 0.008636988, -0.055324808, -0.048650436, -0.0004561709, -0.036250353, -0.0050045243, 0.05265873, -0.014159452, -0.035130374, 0.0046476843, 0.05300472, 0.001331368, 0.024122981, 0.042138003, -0.023868632, 0.04734359, 0.01751646, 0.008318128, 0.0069610924, -0.04589485, -0.011548599, 0.012779358, 0.008475263, 0.003941517, 0.021581514, -0.021442745, -0.010261967, 0.004508287, -0.012301172, 0.009895945, -0.00010517389, -0.041070405, 0.027736092, -0.025972525, 0.016706998, -0.032077204, -0.027287615, 0.004593428, -0.013779658, 0.022888156, -0.02364764, 0.023244264, -0.014457184, -0.0067119305, 0.035278536, -0.01753733, -0.04639671, 0.014660906, 0.027032401, 0.01718221, 0.04564797, 0.0026318515, -0.026966253, 0.021903923, 0.0075473743, 0.06742147, -0.027047219, 0.04499105, -0.044286557, -0.016021073, 0.013978111, 0.034582175, 0.05735629, -0.04151698, 0.0037157268, -0.042124648, -0.022598196, -0.029843925, 0.016688425, 0.00939136, 0.027850214, 0.0068755345, -0.0079218475, -0.07670849, 0.011687761, 0.02660885, -0.035662293, 0.012480635, -0.0081142485, -0.0045696124, 0.027368583, 0.02846957, 0.00046243126, -0.06149501, 0.039164335, -0.0011635905, 0.0010308711, 0.034403548, 0.04149527, 0.0026264258, -0.008440622, 0.031033391, -0.023592131, -0.022533087, 0.004761257, -0.0064142505, 0.011674615, 0.03216693, -0.016290685, -0.015574084, -0.025179131, -0.004688585, -0.01602295, 0.017729523, -0.03154048, -0.0061326395, -0.026740042, 0.0091489805, 0.029974977, 0.005749506, 0.024020132, -0.016933413, -0.011956643, 0.04168058, -0.02136783, -0.016699277, 0.004276654, 0.04399733, 0.002645624, 0.0049031065, 0.04972221, -0.017087836, -0.026853567, -0.07179495, -0.00535886, 0.015827835, 0.042763203, -0.032229118, 0.011567876, 0.06577792, 0.031513352, 0.041349407, 0.029948683, 0.049861602, 0.018079476, -0.045161333, 0.028875241, 0.04471393, 0.009024166, 0.0052630766, 0.037385143, -0.019173888, -0.026746174, -0.013857912, -0.017806524, 0.0066251205, 0.04199944, -0.012762767, 0.032628946, 0.0031195327, -0.027144881, -0.034203634, 0.0040278574, 0.017081575, -0.040661395, 0.040646944, -0.04730114, 0.05447121, -0.02300971, 0.034432974, 0.05435487, -0.020655818, -0.021749917, -0.021207826, -0.0551011, -0.0092335995, -0.009534722, -0.001470765, 0.0917517, -0.036309876, -0.028867729, 0.014747299, -0.03300363, -0.020827768, -0.008805496, -0.010634248, 0.006407677, 0.059767153, 0.0072131497, -0.031388566, -0.025771778, -0.026545556, 0.029255036, 0.007849619, 0.051480953, -0.05147427, 0.018073944, -0.034612227, -0.02874586, -0.07508028, 0.032837626, 0.022475492, -0.014558654, 0.02833101, 0.028129842, 0.025341481, 0.0530427, 0.015852356, -0.051273108, -0.043711435, -0.007929047, 0.0056096916, 0.01511499, -0.017093992, 0.01455615, -0.02868576, -0.015170707, -0.04464647, -0.02322903, -0.0076524443, 0.030095331, 0.036151856, 0.050895814, -0.01577838, 0.038416848, 0.0068546664, -0.034205616, -0.05178896, 0.004508496, -0.020937324, 0.0039058328, -0.013465597, 0.011595839, -0.015718853, -0.04652609, 0.035431914, 0.02983777, -0.007052937, -0.025257593, -0.022994269, -0.079226196, -0.001827605, 0.0066344584, -0.005599049, 0.052970916, 0.06400269, 0.0045865416, -0.025691226, -0.035147693, -0.04200111, -0.022506379, -0.060608543, 0.0019139978, 0.06384556, 0.038185425, 0.0024905761, -0.054653697, -0.04116034, 0.022385344, 0.036985733, 0.026182456, 0.01197146, 0.018335054, 0.021402469, -0.010149281, 0.014936218, 0.0033129775, 0.054082755, 0.040569995, -0.046946786, -0.052440453, -0.016455019, 0.020820256, -0.049348466, -0.019123284, -0.069748655, 0.022948775, 0.003941517, -0.0078965975, -0.015053639, 0.029808452, 0.0049978467, -0.023346933, -0.0080852425, -0.0042228154, -0.009170162, -0.017179444, -0.006764935, -0.0018504292, -0.039123435, -0.039481945, 0.03996107, -0.0047273994, -0.017029928, 0.055686656, -0.014478522, 0.034262482, -0.017289367, 0.0710675, 0.021848623, 0.0029722056, -0.0054222983, -0.019745145, 0.055797253, -0.038775567, 0.007591719, 0.042770926, 0.032865796, 0.0372566, -0.025614016, 0.044885047, 0.032869346, 0.027531875, 0.05454184, 0.030972458, 0.007060006, -0.021284774, 0.046076182, 0.003714892, 0.012517362, 0.03032472, 0.035984077, 0.009270744, -0.006367924, 0.024821037, 0.042924304, 0.019331547, 0.009872155, -0.005784564, 0.024366068, -0.023408495, -0.0020158328, 0.0008731102, -0.04450024, -0.016628744, 0.0095157325, -0.017375186, 0.021644328, 0.014394841, -0.018941943, -0.008697192, 0.030183185, 0.023285583, 0.0031286103, -0.009943941, 0.012416363, -0.014023968, -0.010102119, 0.035321523, 0.030576386, -0.057541803, 0.031521283, 0.028329546, -0.009747784, -0.02906806, -0.0031093073, -0.039831687, 0.004488254, -0.013672606, 0.012397998, -0.0005671878, 0.07526778, 0.056687687, -0.026753401, -0.0056643654, 0.001974932, -0.056872364, -0.014460262, -0.04135421, -0.04238508, 0.01085957, -0.013140893, -0.035144776, 0.0075764847, -0.02635545, 0.011798673, 0.03717897, -0.023425605, 0.016266895, -0.001458453, -0.032295063, -0.014183424, -0.040158063, 0.029512126, 0.08101932, -0.02736535, -0.037018705, -0.052813984, -0.0433884, 0.008436866, 0.046623334, 0.014393798, 0.020499727, 0.029926145, 0.0042428486, -0.0670375, 0.017212626, 0.033946957, 0.005709335, -0.028952869, 0.00695358, -0.03469069, -0.015369787, -0.0015968068, -0.018599086, 0.009602491, 0.024823124, -0.0007537462, 0.016023993, 0.015008981, 0.026297437, 0.017188419, 0.01060253, 0.013094984, -0.022677494, 0.017129987, -0.0013121695, -0.025283678, 0.021942528, 0.024806013, 0.003555514, 0.055386573, -0.016206378, -0.038493644, 0.0077221426, 0.072039105, -0.0060533416, -0.025132177, 0.085272655, 0.010537422, -0.09287022, 0.060937416, -0.00084180845, -0.043965973, 0.012524458, 0.030423844, -0.0273185, -0.013631078, -0.040855046, -0.03824991, -0.018155226, -0.020580538, 0.041008636, 0.058112748, 0.018807136, -0.04361044, -0.0151867755, -0.022512639, -0.014235725, -0.0071669538, -0.022394108, 0.047713473, 0.018009046, -0.023516381, 0.025922183, -0.02933663, 0.032728486, -0.01937203, 0.022624074, -0.05950672, -0.061984148, 0.0013916759, -0.006733633, -0.021680012, 0.0039586285, -0.004055038, 0.0019507252, -0.054797266, -0.016988922, 0.0027044713, 0.028129425, 0.029615633, -0.026026782, -0.0059736264, 5.7595225e-05, 0.0050237225, 0.024563111, -0.0034596785, -0.006407469, -0.02778427, -0.058002148, -0.081125796, 0.035631333, 0.00051251403, 0.0010521562, 0.023026403, 0.058722924, -0.018906258, -0.041807458, 0.025358176, 0.03333094, -0.0039824178, 0.01792333, 0.0219515, -0.022699198, -0.07998891, -0.07563839, 0.022913301, -0.034640606, -0.041369233, -0.021196714, -0.05732478, 0.024218375, 0.002312469, 0.033165146, -0.00830039, 0.0026543885, 0.005656227, 0.037802503, -0.037730716, 0.013469666, 0.008984021, 0.014901304, 0.045734156, -0.019226164, -0.0013708081, 0.0037299169, -0.009276796, 0.019345945, 0.027804304, 0.049995996, -0.0076438882, -0.0481855, -0.020475937, -0.019535633, -0.019745903, -0.010024804, -0.052356564, -0.038111344, -0.04625982, 0.01619678, 0.026825394, 0.019767266, -0.052536864, -0.028159058, 0.031099752, -0.014594129, -0.013030293, -0.009585118, 0.021572335, -0.042939745, -0.010094815, 0.0015008147, -0.0013955366, -0.04902731, -0.0075992313, -0.0282707, -0.02068399, 0.010227222, 0.017552458, -0.022804372, 0.006399226, -0.004617739, 0.019129962, -0.0017028154, 0.06281511, 0.03384679, 0.020827353, 0.04383247, 0.00072035764, 0.06840977, 0.003762888, -0.06040153, 0.070262834, 0.0293648, -0.032398567, -0.02014873, -0.0060245437, 0.0051998473, 0.025565706, -0.006198999, -0.003450288, -0.0073175156, -0.009638436, -0.0043817237, -0.001001656, -0.04037175, 0.019887047, 0.075505674, -0.0328226, -0.009789936, -0.020592798, 0.04741423, -0.0034907714, -0.008154315, -0.024344418, -0.045840792, -0.033513743, 0.049294837, -0.06385599, 0.04182081, 0.030283403, 0.01251611, 0.0028146536, 0.0053592776, -0.025373096, -0.028017992, -0.017426312, 0.054423105, 0.022630775, 0.014420927, -0.0071756137, -0.014968081, 0.003856376, -0.0071192705, -0.026770303, -0.0043878797, 0.05098784, -0.005452348, -0.01816253, -0.0019611593, -0.027273113, 0.062011693, 0.031620614, -0.006845485, 0.021503862, -0.030270882, -0.022071492, -0.03311934, 0.02911856, -0.0023157038, -0.04086924, -0.020121602, -0.021476341, 0.05297258, -0.0035400195, 0.028029677, 0.032846075, 0.007910997, 0.05738905, 0.0072110896, 0.04263215, 0.01619824, -0.004219476, 0.04150529, 0.019397488, 0.002726174, -0.06216278, 0.0016677574, -0.02275429, 0.03768731, 0.051732197, 0.031658385, -0.0153270075, 0.023182496, -0.0329211, 0.02396796, 0.010704365, -0.03245032, 0.0036155612, -0.06358847, -0.010668054, 0.01929774, -0.04073652, -0.032640636, -0.05866032, -0.020438896, 0.004956946, -0.014350811, -0.05758521, 0.0071441038, 0.0043252762, 0.021611148, 0.013255197, -0.013131294, -0.017053194, 0.070933945, -0.017328234, 0.016418578, -0.014690956, 0.026466258, -0.0008338787, 0.03925323, -0.047408227, -0.034705818, -0.023979228, 0.016223282, 0.0032036302, -0.0025496322, 0.04994299, 0.022688242, 0.016519813, -0.0024384065, -0.06768023, 0.04912581, -0.01751813, -0.0003262686, -0.010807453, 0.004150195, -0.07832283, -0.01722911, 0.014701391, -0.007876355, 0.0060829744, 0.038378455, 0.015400463, -0.0040291618, -0.008932503, 0.0019923565, 0.0035713213, 0.005522464, -0.011290333, -0.020363446, 0.014958899, -0.09039613, -0.043498583, 0.0014340377, -0.032153368, -0.04646766, -0.0098459665, 0.04299275, -0.006292487, -0.026993172, 0.04302864, -0.0008743623, -0.018239323, 0.039854225, -0.070965245, 0.036598843, -0.037035294, -0.03930248, 0.027080191, -0.05171634, 0.04075405, -0.01695136, 0.03171243, -0.028480422, -0.016786087, -0.012285729, -0.012161983, 0.011604602, 0.017246952, 0.0027084365, 0.0033063518, -0.00026429113, 0.007233209, -0.022666018, -0.049729306, 0.021852588, 0.034969274, -0.0066625783, -0.024986416, 0.024510106, 0.015340989, -0.0034824242, 0.018139053, 0.026699977, 0.0029096021, 0.0069903075, 0.016820727, 0.0355037, -0.020782694, -0.023056244, 0.028015487, -0.0038014413, -0.014343507, -0.037230723, -0.0068805427, 0.026747556, 0.012562228, 0.0012380886, 0.048405867, 0.005492414, -0.027868576, -0.032331787, -0.009632176, 0.03218196, -0.09765479, -0.020910405, 0.0626369, 0.009609638, -0.008001146, 0.018704258, -0.06827789, 0.03217737, -0.036537077, -0.0090831425, -0.07073695, -0.022727577, 0.01706488, 0.007315428, 0.008418085, 0.015603611, 0.016675904, -0.01328196, 0.022690015, 0.04371561, 0.02373299, 0.0017449684, -0.025647404, 0.05058864, 0.007910997, 0.008252812, 0.062865295, -0.043099593, 0.008276183, 0.006495531, -0.00789472, -0.0038647233, 0.0472381, -0.055578556, 0.019269202, 0.023140341, -0.043201428, 0.027011327, -0.03738598, -0.010658456, 0.03238855, -0.038932703, 0.041533254, 0.019301288, -0.026917735, -0.04880736, -0.028139442, -0.018345749, -0.01320767, 0.02151474, -0.0093840575, 0.0022433705, -0.030120634, -4.4865847e-06, 0.009332096, -0.008297887, -0.06476374, 0.041004464, -6.343822e-05, 0.06146997, 0.005138496, -0.016748525, 0.06479213, 0.036684822, -0.0041234843, -0.026290134, -0.004483872, -0.031353194, -0.022726977, 0.033824258, -0.022249287, 0.043615445, 0.087105684, 0.022212768, 0.008388869, -0.05788487, 0.0001888539, -0.016099118, -0.001029306, -0.038493644, -0.02117334, -0.012859595, -0.010023655, -0.002131858, 0.014642281, -0.03526174, 0.09315402, 0.0067624305, 0.0034932757, 0.013007339, 0.00123788, -0.005661737, -0.019638304, -0.0021644118, 0.06291432, 0.0038655577, 0.022066066, -0.020714248, -0.002783769, -0.05018631, -6.372515e-05, -0.03107471, -0.0041710627, -0.01702231, 0.01040053, -0.03343528, -0.00989991, 0.01716588, 0.06363187, -0.047361642, 0.044381715, 0.012527378, -0.033844706, -0.0063642724, 0.04390092, -0.056100566, 0.024802465, -0.017495593, -0.006153507, 0.017043805, -0.043893408, 0.041037798, 0.039850887, -0.006851954, 0.02616409, -0.024796238, 0.007234461, 0.01883656, -0.035492014, -0.029610625, 0.01665754, -0.030422382, 0.011277395, 0.0023847762, -7.220271e-05, 0.038599234, 0.00015588274, 0.06184559, -0.017912116, -0.047134597, -0.011445799, 0.07697393, -0.01857133, 0.0014828685, -0.015381734, -0.0021733851, -0.0453817, -0.006919461, -0.0102444375, 0.0025176, 0.010537422, -0.061505023, -0.03229994, 0.01971833, 0.026361918, 0.028489603, 0.021602591, 0.017945504, -0.007698353, -0.011103567, -0.010409711, 0.020348644, 0.04092141, 0.013929697, 0.028854113, 0.016247071, 0.025410451, 0.009990999, 0.011602308, -0.07526778, 0.045885656, 0.073697686, -0.015275256, -0.005691076, -0.016383754, 0.024422046, 0.029386606, -0.002215225, -0.011553581, -0.026623601, 0.0422991, 0.043886695, -0.021626173, -0.0071760314, 0.0069915596], [-0.016125029, -0.07609722, -0.026133785, -0.028098563, 0.03543062, 0.019704329, 0.004249579, -0.024372132, 0.028742777, 0.04017322, 0.014504254, 0.017730065, -0.03979912, -0.03076778, -0.03593866, 0.032497413, 0.020861635, -0.046133786, 0.031401355, 0.08035932, -0.007622919, 0.013187102, -0.027094731, 0.001328664, 0.003940213, 0.029297845, 0.009142567, 0.009264167, 0.009317815, 0.013318113, 0.016429298, -0.012796662, -0.009592847, -0.0041409656, 0.014843842, -0.009494851, -0.01902882, 0.0016095969, -0.05151139, -0.02875708, -0.079048894, 0.023769317, -0.011719067, 0.027667595, 0.005230251, 0.07251394, 0.0055815065, 0.04138279, -0.03836209, -0.039254066, 0.026272856, -0.021987064, -0.022971082, 0.027308606, 0.02489412, 0.022047775, 0.0127787795, 0.015988316, 0.027097592, -0.0023697787, -0.020221712, -0.002535817, -0.08234784, 0.01740418, 0.014594605, 0.020867534, 0.002223143, 0.028590418, -0.013161999, -0.073543966, -0.009522032, 0.030737378, 0.035218917, -0.00934446, 0.033369318, 0.015024186, -0.08187003, -0.0035607482, 0.009644885, -0.00017596304, 0.0117097, 0.013406453, -0.0062860292, -0.052423753, -0.054378305, 0.0059004845, -0.019838, -0.0074517843, 0.051464185, -0.007739334, -0.05164444, 0.00634218, 0.029531749, 0.0068450337, -0.0053207357, 0.028951643, -0.0036794872, 0.054067865, 0.008029923, 0.018832829, 0.029928602, -0.0165606, -0.02615948, -0.036593877, -0.029253498, 0.03394048, 0.028083272, -0.019542985, -0.007295402, 0.014012309, 0.012409507, -0.004642277, 0.008840712, -0.07909467, 0.020645615, -0.0014649282, 0.015164786, -0.0050957752, -0.031601816, -0.01604876, -0.0022596228, -0.0024799344, -0.004516921, 0.020861456, -0.017587362, -0.015960867, -0.006058565, -0.0036236942, -0.07318703, -0.00036301318, 0.025873361, 0.017484853, 0.042544432, 0.0038397138, -0.041190192, 0.021234484, -0.004295358, 0.042025078, -0.0154464785, 0.025407346, -0.024490694, 0.00018669249, 0.018499725, 0.020680664, 0.00044384174, -0.037684634, -0.01415197, -0.057303865, -0.013104417, -0.005544982, -0.019262945, -0.014097429, 0.018047655, 0.02285946, 0.0062073465, -0.040678933, -0.010126995, 0.018743282, -0.049355485, 0.011368929, -0.013927189, 0.017746003, 0.025634095, -0.0025811489, -0.015379956, -0.063472584, 0.008950689, -0.016191103, -0.013787705, 0.023482481, 0.064268, 0.0014336338, 0.0054777437, 0.05206101, -0.0561384, -0.01748901, 0.0081657395, -0.021478219, 0.03160736, 0.027326487, -0.022736607, 0.0071747857, -0.011071009, -0.00014735117, -0.014227255, 0.05548558, -0.03304815, -0.0025248192, 0.00084557035, 0.029441621, 0.02628573, -0.03659459, 0.037711885, -0.012218702, -0.03182642, 0.01314823, -0.006015647, 0.01931266, 0.021069877, 0.028887982, -0.015426094, 0.0026175398, 0.013365233, -0.017486148, -0.039261933, -0.049763206, 0.03273485, 0.0076029357, 0.032120585, -0.03357997, -0.0024228895, 0.028391743, 0.027702734, 0.066853076, 0.025716757, 0.03833562, 0.01172014, -0.021559048, 0.057654183, 0.06034245, -0.008625765, 0.0014755235, 0.023034168, -0.03629202, -0.035321362, 0.036990866, -0.014028045, -0.007750421, -0.0055964827, -0.018103091, 0.08968107, -0.011275941, -0.0034394157, -0.050956324, -0.0337334, -0.012166396, -0.032845538, 0.02375358, -0.04645621, 0.0057391846, -0.030008137, 0.03829811, 0.03537966, -0.01140532, -0.022403724, 0.00051268906, -0.029720588, 0.014561299, -0.007459742, 0.011300026, 0.05603636, -0.0055467812, -0.04968595, 0.019830177, -0.022488935, -0.00058041874, -0.0065174275, -0.00051537144, 0.016413918, 0.017118486, 0.023978004, -0.048415586, -0.021475894, -0.03231917, 0.03483997, 0.02792841, 0.0066384915, -0.012259473, 0.010972297, -0.074275, -0.050425574, -0.074856535, 0.02331014, -0.015276909, -0.042104524, 0.074460976, 0.041129574, 0.007140094, 0.06222511, 0.027646227, -0.06336959, -0.023656659, 0.021557081, -0.014651069, -0.0036923627, 0.012456896, 0.040040888, -0.0395316, -0.023509037, -0.034838177, -0.040519424, 0.001722435, 0.0066218167, -0.009326041, 0.06334098, -0.0064226505, 0.032651875, 0.0039507635, -0.07166702, -0.024229968, 0.010128247, -0.027307888, 0.021036167, 0.0036580283, -0.015775159, -0.037325624, -0.041277282, 0.05082399, 0.0045404364, 0.011062781, -0.05468731, -0.015482959, -0.059544176, 0.02328716, 0.03687892, -0.005963967, 0.058611427, 0.061910376, -0.021829689, -0.0359206, -0.013489069, 0.0044280454, 0.031710543, -0.041094527, 0.06404554, 0.027855093, 0.013495507, 0.013128918, -0.051751014, -0.023857297, 0.028541777, 0.02807737, -0.014294761, -0.015430742, 0.04463667, 0.010172595, -0.02885937, 0.044116654, 0.013705446, 0.028080411, -0.0016255123, -0.08030782, 0.004992057, -0.00963505, 0.027375484, -0.056248087, -0.0018783697, -0.052665345, 0.0058539896, -0.008628269, 0.02210482, -0.016773535, 0.010106788, 0.033585157, -0.020534385, 0.00060773414, -0.013984054, -0.019282974, -0.024760002, 0.0282211, -0.010470516, -0.053228285, -0.04361666, 0.05731102, 0.003512823, -0.020628447, 0.07880569, -0.018305516, 0.032023977, -0.028223649, 0.04594495, 0.004437702, 0.0057340544, 0.012666298, 0.0035315102, 0.0742049, -0.03951729, -0.0032191938, 0.028276045, -0.0061850827, 0.013301662, -0.04160167, 0.049414143, 0.011552582, 0.04874069, 0.052179478, 0.035807315, 0.03945506, -0.04488345, 0.01371564, 0.011272363, 0.039231263, 0.010104284, 0.014956947, 0.022599805, -0.005717726, 0.028300008, 0.04551309, 0.03922545, 0.015552879, 0.0073110494, 0.026717054, -0.017985962, 0.0007072945, -0.007703927, -0.04658872, -0.012964936, 0.01074519, -0.0050357464, 0.023370316, 0.044508815, -0.015813919, -0.022069056, 0.012868952, 0.03614413, -0.021756291, -0.026311124, 0.026239816, 0.0075099026, 0.011931867, 0.021249324, 0.054089323, -0.039425734, 0.03822198, -0.006645108, -0.028388703, 0.019966083, -0.046096236, -0.059801683, 0.01831321, 0.028323747, 0.02613677, 0.010993755, 0.06022585, 0.028264241, -0.023768736, 0.012307757, -0.003512108, -0.081432976, -0.012313032, -0.035827793, -0.029681155, 0.0022174204, 0.0027300199, -0.0035371433, 0.0012338872, -0.04073258, 0.013161464, 0.017433932, -0.060722984, 0.011278085, -0.031287804, -0.023361597, -0.0100316815, -0.04786767, 0.02622958, 0.06059137, -0.06719034, -0.024381611, -0.02639517, -0.049136605, -0.019612726, 0.051130675, -0.059464063, 0.00037517323, 0.0038694881, 0.037939884, -0.057752, -0.0028815735, 0.072239265, 0.03568187, -0.022650592, -0.026749242, -0.030567497, -0.013436137, -0.0076121897, 0.041124567, 0.013889277, 0.020909024, -0.0056390427, 0.004899203, 0.02095963, 0.027776232, 0.022096593, 0.01088664, 0.019265808, -0.0036136801, 0.02691072, -0.024918083, -0.02445314, -0.0063441475, 0.025206348, 0.005653662, 0.072156295, -0.044116654, -0.023923641, -0.00703423, 0.039459355, -0.038455747, 0.02035127, 0.026992667, 0.03171984, -0.05206932, 0.016606333, -0.0029553834, -0.041643783, 0.015956128, 0.05346129, -0.019334475, -0.006974145, -0.047042213, -0.05791759, 0.003229923, -0.042881332, 0.04936264, 0.031333223, -0.0077205575, -0.047348365, 0.0011094254, -0.023632694, -0.016812159, 0.0048745694, 0.014680753, 0.0336118, -0.01740675, -0.0028713807, 0.02687442, -0.03699802, 0.030705191, -0.025879085, -0.0041060504, -0.015224961, -0.037571773, 0.022267194, 0.004859012, 0.018555695, 0.0010257357, 0.0048575816, -0.0015627001, -0.015027672, -0.014704001, 0.026657103, 0.004115282, -0.0077445195, -0.039255496, 0.013711006, 0.0060756872, 0.021573758, 0.0318325, -0.019719752, 0.006095403, -0.009809939, -0.12802099, -0.06596826, 0.06363102, -0.016831294, -0.040727217, 0.012055793, 0.034733385, 0.0008313539, -0.05308934, 0.008381134, 0.021703046, 0.026453111, 0.0028855077, 0.04466207, 0.013964026, -0.07424782, -0.055276714, 0.037432916, -0.022928841, -0.04392066, -0.07554036, -0.0061892853, 0.011077914, -0.02472531, 0.02829643, -0.028234558, -0.012405037, -0.02611549, 0.013205811, -0.003293227, -0.023542209, -0.012478713, 0.002324972, 0.03336431, -0.009296356, -0.010763073, 0.023161896, 0.0018800015, 0.025558988, -0.005656836, 0.029895477, 0.017600238, -0.019460903, -0.03257802, -0.01587065, 0.040310558, 0.024963146, -0.035204053, -0.051396947, -0.07342666, 0.008782236, -0.0012812755, 0.012114984, -0.011668103, -0.01751476, 0.056608595, -0.026550569, 0.008772759, -0.0060143955, 0.012236226, -0.050839726, -0.024873735, -0.008831592, 0.0066844495, -0.033790268, -0.0075438786, -0.039080247, -0.0011370091, 0.031690516, 0.010318337, 0.008368258, 0.042910304, -0.014683972, 0.0159439, -0.0003898368, 0.060582075, 0.033873957, -0.031985216, 0.05914361, -0.0046880674, 0.0708101, -0.013988257, -0.08301593, 0.05007132, 0.01153148, -0.02858827, -0.0022138439, -0.009956575, 0.006218076, 0.041092377, 0.007757037, -0.014575605, 0.028071111, 0.029008152, 0.010383965, -0.006457879, -0.027252097, -0.0015737426, 0.01777334, 0.009292958, -0.0149228815, -0.043568734, 0.030624721, -0.007524924, -0.0067743086, -0.029369554, 0.014878891, -0.05653474, 0.054356843, -0.056265254, 0.031144027, 0.004316459, 0.029433575, -0.01655823, 0.044230383, 0.0064628865, -0.0065311077, -0.007945518, 0.06938809, -0.0010150063, -0.005252962, -0.05611218, -0.0003290366, 0.0029786977, -0.05071741, -0.03193336, 0.016099546, 0.031232456, -0.022353029, -0.02788871, 0.047953505, 0.022878058, 0.022294734, 0.0037456972, 0.0055022426, 0.03019769, -0.04739271, -0.041343447, -0.038046286, 0.00086515164, 0.02782648, -0.017457537, 0.0015784143, -0.004283913, 0.037959464, 0.038480826, 0.024974234, 0.05150424, 0.032383904, 0.04248962, -0.0047695995, 0.01845162, 0.035142537, -0.030485239, 0.03057036, 0.015028387, -0.05346737, -0.05723806, -0.028224185, 0.027197734, 0.0036716189, 0.025806481, 0.012750704, -0.019238625, 0.018530482, -0.019066239, 0.0048153787, 0.00818407, -0.0053278888, 0.01565034, -0.053435896, -0.04070938, 0.041497953, -0.030349333, -0.035705477, -0.04622678, 0.001541733, -0.021778196, -0.038345993, -0.024962073, -0.0065878844, 0.029335042, 0.012186871, -0.01554984, -0.01214002, -0.051040724, 0.03165332, 0.006799143, -0.025646972, -0.027727053, -0.0042460025, 0.0038311305, 8.377915e-05, -0.08043227, -0.030689813, 0.009141137, 0.004251725, -0.008489859, -0.019521223, 0.03226955, 0.026252469, -0.0035648164, -0.010094628, -0.0049411817, 0.03388147, -0.057586957, 0.027566826, -0.0031573204, -0.006894926, -0.06218076, 0.009025617, 0.007005808, -0.019824453, -0.004318963, -0.026242098, 0.023489635, -0.0004125475, -0.009246285, -0.012018105, -0.0056596524, -0.0052037854, -0.023124835, 0.021514699, -0.018540764, -0.07928351, -0.02886509, 0.02234194, -0.043323927, -0.05740687, 0.0016634901, 0.010813501, -0.035538185, -0.009198718, 0.060039163, -0.015327382, -0.008508457, 0.003148821, -0.04639845, -0.004312346, -0.0067658145, -0.03723907, 0.021109685, -0.035865344, 0.045072287, -0.010121094, 0.011176157, -0.031232277, -0.016732225, 0.015791252, -0.039839175, 0.03808992, 0.02656684, -0.007756322, 0.011172937, 0.0054469863, 0.0072842264, -0.05185259, -0.04035276, -0.029400134, 0.0053007076, 0.016192533, 0.018862737, 0.04191926, 0.010906132, 0.026159838, 0.009830371, 0.031886507, -0.018387243, -0.01259629, 0.028119395, 0.015238685, 0.035516012, 0.0013865136, -0.0010612324, 0.018591996, -0.0041567693, -0.015685031, 0.016254228, 0.05396611, 0.017691439, 0.0052694133, 0.05832531, 0.026325071, -0.0112913195, -0.024468161, 0.018613098, -0.012621414, -0.07341807, -0.0012317413, 0.0371316, 0.015315938, 0.0021981073, 0.040029444, 0.00659003, 0.028537486, -0.07461119, -0.0063024806, -0.046115905, -0.05640545, -0.0073632663, 0.01790853, -0.010202995, 0.0136392815, 0.030032814, 0.019815154, 0.038864944, 0.036449473, 0.010918202, 0.012573847, -0.03715109, 0.014532508, -0.04336365, -0.008162253, 0.014672169, -0.008112651, 0.0228173, 0.012997034, -0.028913552, 0.02332315, 0.02056568, -0.067220025, 0.021152759, 0.029694552, -0.05597985, 0.0015355133, -0.0036623203, 0.008020534, 0.008384353, -0.036544695, 0.054447684, 0.012304493, -0.019005438, -0.037831698, -0.009795992, -0.047231056, 0.006914596, 0.03503703, 0.013995499, -0.0019318828, -0.028326117, -0.0037547725, 0.043504357, -0.030232383, -0.044851974, 0.062113166, -0.020286893, 0.053155858, 0.047957797, -0.028165264, 0.052459873, 0.010626227, -0.034223337, -0.039973654, -0.025521794, 0.009216825, -0.03152814, 0.022463901, -0.025042545, 0.043790657, 0.035193324, 0.040854808, 0.007525281, -0.08688569, 0.010818866, -0.0055251773, -0.043618806, -0.031311408, -0.02527788, -0.0022686983, 0.014735117, 0.026596349, -0.0207724, -0.036505356, 0.05756137, -0.0025298262, 0.0050557186, 0.0137345055, -0.0018168039, -0.04352707, 0.03139201, -0.006710916, 0.05187615, 0.009502004, 0.022991342, -0.022887355, 0.010271843, -0.049786095, 0.027818253, 0.015523373, 0.032031976, -0.036373116, 0.015643187, -0.030862201, 0.0061556664, 0.016043305, 0.039011933, -0.054395467, 0.04513702, 0.007878638, -0.005459682, -0.04503387, 0.027024632, -0.03822189, 0.03970756, 0.0065739364, 0.037694715, 0.039181285, -0.050661977, 0.09166673, 0.007951866, 0.027877266, 0.0007574995, 0.0022224276, 0.011607659, 0.0048625884, -0.02019605, -0.030618284, -0.006737918, -0.032052096, -0.02749315, 0.008890067, -0.012126786, -0.014710081, -0.008679413, 0.062229402, -0.022942968, -0.052660156, -0.04213425, 0.05053, -0.009371999, -0.019682467, -0.025558988, 0.000101572165, -0.050066672, -0.006774689, -0.0034963712, -0.017104894, -0.0025507486, -0.058289547, -0.010734461, 0.011598539, 0.023245005, 0.005040876, 0.01766247, 0.047181163, -0.026090454, -0.024916565, -0.003954698, 0.017326994, 0.054514207, 0.017372416, 0.033790626, 0.030245747, 0.030154772, -0.004497787, -0.0013011252, -0.035970133, 0.04099009, 0.040115282, -0.0024521719, -0.014823098, 0.0058128606, 0.026253274, -0.033198718, 0.010307116, -0.007027077, -0.012861574, 0.049069636, 0.0388957, -0.021505758, 0.015625661, 0.012044527], [-0.024595292, -0.08613598, -0.03964337, -0.02380294, 0.019083146, 0.03904984, 0.00025974552, -0.04632272, 0.060140345, 0.042121187, 0.009005166, 0.02570629, -0.032126565, -0.020273145, -0.030489149, -0.00080804277, 0.0015494024, -0.04192212, 0.042097654, 0.059765745, -0.0152039705, 0.011056652, -0.03533814, 0.03336314, -0.020985102, 0.030324893, 0.0030750243, 0.014347171, 0.014574188, -0.021693593, 0.01114589, -0.027616626, 0.00097426027, -0.019036442, 0.016443279, -0.009441548, 0.0016258919, 0.0012617088, -0.047664717, -0.050273202, -0.06528672, 0.018255489, -0.0048914044, 0.047154784, 0.012211841, 0.06900528, 0.009292491, 0.042084906, -0.015127266, -0.041549478, 0.045253336, -0.010946332, -0.03166107, 0.02142294, -0.011401836, 0.026489878, 0.014367274, 0.022454107, 0.03354407, -0.016289318, 0.015587704, -0.0014032879, -0.069358066, 0.01112064, 0.019711977, 0.01573526, -0.0033684792, -0.001966172, -0.00356289, -0.055613738, -0.029567108, 0.010418015, 0.015367276, -0.005979908, 0.043197926, 0.01633933, -0.081157304, -0.023760771, -0.016047101, 0.0021681827, -0.0061436743, 0.0072450493, -0.011470971, -0.052122682, -0.055707876, 0.046704676, -0.0018127027, -0.0034282978, 0.04159557, 0.018078975, -0.045770127, -0.010176288, 0.0523698, 0.007377328, -0.008070499, 0.020431027, -0.004725677, 0.05465664, 0.006680572, 0.0131405005, 0.03360536, -0.014367274, -0.028065756, -0.021738704, -0.024960516, 0.011738193, 0.013300099, -0.014182057, -0.013611205, 0.020142231, 0.009087784, -0.013906376, 0.0045387438, -0.07450468, 0.02799515, -0.004201038, 0.03643204, -0.014498188, -0.041167032, -0.01644573, 0.00287522, 0.006809525, -0.0014064749, 0.02709787, -0.041269016, -0.009947064, -0.00021034609, -0.0050695124, -0.05874, -0.0046084914, 0.032015752, -0.0011502842, 0.032400403, -0.0187664, -0.047268048, 0.02139499, -0.016553108, 0.045530118, -0.019345956, 0.024033388, -0.032327592, -0.000658496, 0.026644818, 0.015476127, 0.019528354, -0.024287447, 0.013721036, -0.029832859, -0.009509211, -0.006237815, 0.0013983847, -0.01227362, -0.001900592, 0.011971585, 0.032104988, -0.034726225, 0.011598944, 0.023686241, -0.04012756, 0.0011414584, -0.013463006, 0.025251335, 0.02581667, 0.017367525, -0.013888725, -0.05617858, 0.017058626, 0.0009825956, -0.03323762, 0.01865755, 0.07809772, 0.011386637, 0.00017504324, 0.03881449, -0.051878992, -0.01245994, 0.012085338, -0.025725473, 0.060648803, 0.039824054, 0.004707045, 0.011433217, -0.013212822, -0.01038786, -0.018489862, 0.050592892, -0.02482329, 0.012015713, 0.0027183187, 0.028844869, 0.0007874494, -0.03748573, 0.039005224, -0.009720048, -0.017920112, 0.029565144, -0.028924793, 0.0051426915, 0.019951986, 0.028926507, -0.0041951537, -0.0045142276, 0.030969415, -0.0084907925, -0.054884143, -0.056893468, 0.04524745, -0.002227787, 0.044948358, -0.028799271, 0.003038986, 0.034173146, 0.022415342, 0.04479244, 0.039290097, 0.038994927, 0.015517926, -0.019427348, 0.031558286, 0.04829428, -0.037903234, -0.009471947, 0.024442803, -0.041622046, -0.047109675, 0.017949533, -0.0009139512, 0.010620271, 0.01680317, -0.017136585, 0.07612861, -0.003607754, 0.0043520555, -0.046022214, -0.013833319, -0.010971338, -0.04725481, 0.0445409, -0.06949805, 0.03584807, 0.0039420277, 0.028166793, 0.024617845, -0.008581531, 0.000536407, -0.0068558604, -0.0406218, 0.002972303, -0.04491894, 0.010672979, 0.06886211, 0.015045383, -0.038511474, -0.0035675478, -0.0003204223, 0.0071605924, 0.01749795, -0.0045192535, 0.0071468633, 0.043471154, 0.025853444, -0.04787457, -0.017969145, -0.064838074, 0.036094885, 0.0115339765, 0.019486677, -0.011589138, 0.007866649, -0.046775278, -0.042410474, -0.060399234, 0.048684575, 0.0059985407, -0.029333716, 0.028297309, 0.02127707, 0.011265528, 0.048655156, 0.024356015, -0.07306903, -0.015407727, 0.017075786, -0.0057563237, 0.023818139, 0.01052809, 0.029174855, -0.039244987, -0.009162189, -0.03770294, -0.01541165, -0.006221145, 0.023193965, 0.04648599, 0.046189845, -0.007874494, 0.05340927, -0.008049047, -0.06945637, -0.01809206, -0.0010326081, -0.0026251583, 0.0128405485, 0.026074272, -0.0048982687, -0.01991031, -0.043537226, 0.037472002, 0.015824987, -0.0063419463, -0.0366669, -0.030399665, -0.058050122, 0.006944853, 0.012634003, -0.022899408, 0.041597042, 0.06949682, -0.007824114, -0.028241288, -0.015811749, -0.009290285, -0.013007135, -0.057374954, 0.037228804, 0.05962257, 0.009857337, 0.00044716927, -0.051897135, -0.03132735, 0.058135927, 0.053414173, -0.01215006, -0.0033939758, 0.023725102, -0.00033071893, -0.022018675, 0.0027163574, 0.013311621, 0.01773183, -0.0044417838, -0.07863707, -0.0031958874, 0.0022961553, 0.064615965, -0.0664723, -0.0016719816, -0.052328613, -0.020036321, -0.00822789, 0.020928698, -0.037294507, 0.009316762, 0.0039588213, -0.012133696, -0.002469605, 0.0028222965, -0.018183598, -0.01947638, 0.012758053, -0.0099338265, -0.025127774, -0.044814993, 0.040984634, 0.017554335, -0.013487767, 0.06937302, -0.022213576, 0.039760802, -0.018099569, 0.058869444, 0.013972079, -0.012154718, 0.004642323, 0.014066955, 0.063458815, -0.060516912, -0.0096712615, 0.023756359, -0.0027379314, 0.005495475, -0.018788464, 0.06560934, 0.02718662, 0.03336118, 0.049165085, 0.046498742, 0.023041965, -0.038484998, 0.041380808, 0.008239291, 0.031220946, 0.030727934, 0.04893562, 0.018087924, 0.002912484, 0.03895276, 0.040289365, 0.024019659, 0.016333593, 0.0026437903, 0.023443047, 0.0018781744, 0.005266436, -0.019777434, -0.055156764, -0.017327318, 0.004161322, -0.017256223, 0.016114274, 0.0464806, -0.018215284, -0.026058152, 0.00813902, 0.042028025, -0.0138327135, -0.018777922, 0.02973357, 0.020630587, 0.023647936, 0.03365807, 0.05234234, -0.053332783, 0.041827977, 0.03673873, -0.016239306, 0.038424198, -0.037356775, -0.03949015, 0.024548221, 0.014089265, 0.023338117, 0.013118191, 0.102221325, 0.034808844, -0.027136113, 0.011720542, -0.006809525, -0.085752554, -0.014749293, -0.05145192, -0.03877085, -0.00015199833, 0.017705845, -0.034987073, -0.0059613376, -0.04119498, 0.021632794, 0.02445457, -0.038571294, 0.022150416, -0.03366518, -0.008783052, -0.0026859576, -0.048470795, 0.022873297, 0.07432424, -0.039013557, -0.028756859, -0.025124587, -0.043796115, -0.014033859, 0.012376097, -0.02901648, 0.009529805, -0.005144408, 0.043596067, -0.04047765, 0.0042922366, 0.023717625, 0.030505575, -0.02834156, -0.023970626, -0.045626953, -0.021515118, -0.002371419, 0.051377397, 0.0047109677, -0.0025589655, 0.0036066507, 0.01830918, 0.00819222, 0.0340616, 0.005280471, 0.03316996, 0.027344255, -0.030240804, 0.01289191, -0.036361434, -0.010530053, -0.007940196, 0.017312119, 0.000638393, 0.06506313, -0.03569313, -0.041295495, 0.011495195, 0.034288865, -0.04951223, 0.017969543, 0.038365852, 0.043312658, -0.05297387, 0.0065136184, 0.0073822155, -0.07737794, 0.037096296, 0.055143036, -0.017255487, 0.010423653, -0.03831682, -0.06496703, -0.026314313, -0.025640646, 0.04856702, 0.03234034, 0.0020805385, -0.058787066, -0.007518524, -0.012445722, -0.037123874, -0.00013949524, 0.011171143, 0.035993204, 0.011943269, -0.025243858, 0.029997116, -0.046279076, 0.03770735, -0.010798256, -0.010707547, -0.01975292, -0.03711897, 0.008566822, -0.001539596, 0.00049816223, 0.015286129, 0.0242202, -0.004358062, 0.009245911, -0.032759074, 0.012208899, 0.032657087, -0.00095421856, -0.025809316, -0.016561689, -0.021885308, 0.04251442, 0.028467815, -0.02171394, 8.531519e-05, -0.024005745, -0.10240961, -0.073092565, 0.04457964, -0.025027016, -0.023558578, 0.041448534, 0.058590453, 0.0041156, -0.03776031, -0.017881041, 0.021452358, 0.014187021, 0.007140367, 0.023345962, 0.010628116, -0.06873855, -0.06696556, 0.037093475, -0.036072146, -0.036887053, -0.03953133, -0.016550656, 0.013213557, -0.03090224, 0.045800466, -0.010178985, -0.0033537697, -0.021445492, 0.023214437, -0.012149325, 0.0025574944, -0.008820807, 0.008909063, 0.008651157, -0.0063019246, -0.0051826527, 0.035622034, -0.016783558, 0.036701225, 0.010980654, 0.024157437, 0.016024547, -0.014753154, -0.026814466, -0.030766914, 0.021321934, -0.01024861, -0.034116272, -0.02109835, -0.064614, -0.0037381784, -0.027936313, 0.020473316, 0.0025717136, -0.03096353, 0.04190839, -0.007456744, 0.01749035, -0.0022655106, 0.016544282, -0.027228784, -0.0011721032, 0.0035442577, 0.01738818, -0.028722782, -0.004279488, -0.03422414, -0.022742873, 0.042518344, -0.008412862, 0.011489112, 0.031402856, -0.0049222945, 0.01800935, 0.007121367, 0.073277414, 0.020506047, -0.0167409, 0.043074854, 0.0063123438, 0.06915434, -0.015177278, -0.08867289, 0.08250274, 0.005903419, -0.035803944, -0.01808535, 0.002333297, 0.011577493, 0.04891404, 0.0032449192, 0.0008229974, 0.011174819, 0.006443871, 0.021913256, 0.0020426614, -0.021744587, 0.030347325, 0.039936334, -0.008054931, 0.0025800492, -0.048553172, 0.040525205, 0.026294729, 0.0026545774, -0.019281233, 0.0033905434, -0.035244, 0.050162144, -0.05949705, 0.025126796, 0.030567478, 0.038059402, -0.010455647, 0.037953492, -0.024958983, -0.021830391, -0.020905409, 0.053060163, 0.04540926, 0.021899283, -0.034996882, 0.012267245, 0.0051284726, -0.042806655, -0.022256967, 0.00977288, 0.024711005, -0.028998585, -0.032097757, 0.021783812, 0.0054239198, 0.030052522, 0.01672276, 0.0024485828, 0.040218756, -0.061168052, -0.041520152, -0.031175349, 0.012240278, 0.02440039, -0.017165024, -0.012925987, 0.006746213, 0.041140553, 0.057036635, 0.023983866, 0.03056049, 0.031381283, 0.03995889, 0.004753135, 0.03804077, 0.032028254, -0.0108404225, 0.013930647, -0.0019138919, -0.0443384, -0.052440405, -0.022921348, 0.01913904, -0.011517429, 0.05604522, 0.04371668, 0.0047739735, 0.035817426, -0.03827171, -0.004241244, 0.0051288405, -0.0043323203, -0.0016258919, -0.047459763, -0.018992437, 0.037660282, -0.009207667, -0.046497762, -0.047015533, 0.0011733291, -0.009297394, -0.02364861, -0.024630593, 0.00093160267, 0.034060434, 0.026256485, -0.0045163115, -0.024842411, -0.07018008, 0.026472226, 0.0058656647, -0.0055317585, -0.028590396, 0.023854667, -0.009973052, -0.008229484, -0.056519844, -0.010317254, -0.009871801, 0.026330523, -0.0051944205, -0.018987043, 0.045038573, 0.015140995, 0.028910572, -0.007983345, -0.02413096, 0.048337433, -0.04101528, 0.016115746, 0.022157434, 0.0037901518, -0.052424714, -0.0016965894, -0.005548, -0.0076832706, 0.027451878, -0.010841894, 0.02955583, 0.0070625287, 0.019784544, -0.00042657595, 0.009902446, -0.0023893155, -0.010350596, 0.002054184, 0.0006763313, -0.09049294, -0.031131709, 0.023895118, -0.06679885, -0.05770837, 0.0032356032, 0.0024849274, -0.02762643, -0.03068454, 0.0593578, -0.025895612, -0.030401627, 0.012968889, -0.051761314, 0.00596716, -0.016052494, -0.040080488, 0.023455549, -0.03403782, 0.057502437, 0.002899736, 0.038497746, -0.03924548, -0.0068977824, 0.030894887, -0.004126632, 0.04373237, 0.0012174576, -0.0044089323, -0.00048418823, -0.0055171717, 0.010725197, -0.05188733, -0.060292836, 0.0001510177, -0.007919113, 0.00087835727, 0.011570995, 0.030301603, 0.017526388, 0.008583003, -0.0111575965, 0.039499953, -0.039924033, 0.0066800816, 0.02916995, -0.0036450182, 0.008987268, -0.0027987305, -0.008251548, 0.01641778, -0.005794078, -0.02523687, 0.028360438, 0.0427635, 0.016641488, 0.002655711, 0.061764274, 0.023552878, -0.00013986298, -0.027637955, 0.009453806, 0.0017470001, -0.06377065, -2.9419032e-05, 0.045538697, 0.0075365426, 0.008354025, 0.0072434563, 0.012096125, 0.03183139, -0.07007221, -0.023179745, -0.051966827, -0.044156004, -0.010119656, -0.015585223, -0.00025349398, 0.013286616, 0.012235743, -0.017232198, 0.05399765, 0.02190026, 0.010286364, 0.009416051, -0.024306493, 0.04700377, -0.055812318, 0.0076809414, 0.050953764, 0.012195169, 0.021879792, 0.03189599, -0.03311259, 0.036334466, 0.030984614, -0.040458035, 0.042778213, 0.04076398, -0.05500182, -0.01647711, -0.010977222, 0.01963328, 0.0081368135, -0.028062813, 0.04765883, 0.023511814, -0.012125053, -0.023327561, 0.0074312473, -0.0135719795, -0.00039053767, 0.036828704, 0.004773728, 0.006397659, -0.02159455, 0.014936042, 0.04472085, -0.02637318, -0.051334247, 0.05709842, 0.0065035676, 0.061946187, 0.046177093, -0.024315136, 0.072488494, 0.007236101, -0.0324085, -0.029473457, -0.008339315, 0.0014856611, -0.042624254, 0.020878688, -0.023394994, 0.028688459, 0.030830901, 0.04534355, -0.007227521, -0.07427227, -0.019209893, 4.535434e-06, -0.010843549, -0.052773822, -0.030818887, -0.0022314335, -0.00417358, 0.036769867, -0.0061576483, -0.009801778, 0.07358681, 0.0033640661, -0.0013091469, 0.015878187, -0.004148727, -0.04470516, 0.04097743, -0.01184827, 0.07624579, 0.021596512, 0.027832365, -0.025668105, 0.013343002, -0.026010346, 0.020764505, 0.016890448, 0.018074563, -0.015160853, 0.011112548, -0.013242487, 0.0039599244, 0.027364112, 0.040837537, -0.029948574, 0.050524246, -0.012014732, -0.029344503, -0.030044677, 0.049718164, -0.052308265, 0.056304105, 0.013556779, 0.01711403, 0.02315474, -0.036262877, 0.078466445, 0.011373398, 0.021503842, 0.017170172, -0.013461659, 0.009195409, -0.0046413424, -0.01731408, -0.010054935, -0.0168473, -0.016172621, -0.003600154, 0.0030801727, -0.01140772, -0.019557772, 0.0062750797, 0.058249194, -0.041192528, -0.050620347, -0.054342836, 0.054030992, -0.0123716835, -0.02644771, -0.034822326, 0.010985066, -0.03493804, 0.009946085, -0.00075766264, -0.021745568, 0.0062956726, -0.059810854, 0.010066579, 0.005789543, 0.013488978, -0.009055086, 0.026792401, 0.03127047, -0.028859334, -0.0074204607, 0.014607529, 0.017148353, 0.045706388, 0.01460851, 0.025204264, 0.04333889, 0.01236678, -0.0045712274, -0.008943385, -0.04670173, 0.02935676, 0.048886586, 0.025765186, -0.0050399704, 0.013332705, 0.04273016, -0.0039588213, 0.015341044, 0.008709013, -0.012663913, 0.030710526, 0.030507537, -0.031600945, 0.0057563237, 0.0028526653], [-0.009659966, -0.064685084, -0.039900467, -0.0488984, 0.028699236, 0.03846115, -0.02439169, -0.005584657, 0.0063983975, 0.054650538, 0.023328654, 0.026006334, -0.03151711, -0.02707634, -0.037046503, -0.0076643196, 0.023799775, -0.05221225, 0.053339764, 0.05416625, 0.0008295171, 0.018812904, -0.04014628, 0.008809904, 0.00545313, 0.026816634, 0.015110346, 0.024655478, -0.0018523802, 0.012428081, -0.022897752, -0.022781637, 0.0051499032, 0.006849661, 0.013335101, -0.00026947382, 0.02121157, 0.010106093, -0.05555453, -0.03414778, -0.06118835, 0.01678809, -0.0051829224, 0.016501188, -0.004416876, 0.048727524, -0.00828288, 0.022743113, -0.010785556, -0.039474152, 0.047411248, -0.012957031, -0.03956147, 0.03025004, 0.023613904, 0.03941912, 0.008087516, 0.013971891, 0.013513681, -0.009672441, -0.01787846, 0.005103218, -0.07558914, 0.015081637, 0.022992225, 0.037352115, -0.017746199, 0.039739773, -0.025231114, -0.07010905, -0.013171932, 0.0362412, 0.036569193, -0.015061916, 0.035436265, -0.004342491, -0.095636606, -0.0058245966, -0.026350833, 0.014496233, 0.013340512, 0.020410668, -0.013998697, -0.037961505, -0.055994786, 0.014119034, -0.008838843, -0.011893903, 0.046272084, 0.014514531, -0.05592068, -0.025663046, 0.060703333, 0.0032062612, -0.0029166092, 0.004561977, 0.007936361, 0.05496165, 0.026993608, 0.02641834, 0.032021157, -0.050199542, -0.003651884, -0.021848476, -0.015357255, 0.009444608, 0.014236435, -0.007902426, 0.009836987, -0.007727973, -0.0051650372, 0.0044113724, 0.02025713, -0.05693547, -0.0065939454, -0.020098407, 0.019685347, -0.0023993992, -0.04032605, 0.0015508042, 0.022900688, 0.027085328, 0.010829398, 0.028674103, -0.03229283, -0.008793395, 0.017870111, -0.025237717, -0.072001055, -0.008209183, 0.02184554, 0.0036231296, 0.03338907, -0.011935361, -0.018129773, 0.013988423, 0.0037109975, 0.063408025, -0.01169909, 0.037812185, -0.023697553, 0.019018678, -0.0035794708, 0.0065845894, 0.00020545315, -0.008201432, -0.026474105, -0.03993532, -0.002464337, -0.014826746, -0.008850582, -0.008054864, -0.0004775639, -0.008592894, 0.007253413, -0.030688828, 0.012674258, 0.010993486, -0.051423453, 0.025488893, -0.018868303, 0.00556191, 0.015304505, 0.018603966, 0.003069323, -0.06421163, 0.013533493, 0.005007737, -0.025567176, 0.00495032, 0.068305835, -0.0011070623, 0.0060449084, 0.029024292, -0.075846605, 0.005652713, -0.0019032162, -0.011172891, 0.049449638, 0.010262018, -0.006361343, -0.0080831135, -0.015385873, -0.015324604, -0.019815955, 0.05823129, -0.041553333, -0.019876009, 0.03391958, 0.015373582, 0.020762876, -0.005607587, 0.031252358, -0.003349299, -0.01883916, -0.006401333, -0.04065294, -0.009221911, -0.00093976466, 0.045425326, -0.013015824, 0.011643323, 0.0576164, -0.039885793, -0.030443754, -0.030786788, 0.032791056, 0.010602116, 0.044925995, -0.024852812, 0.0053351778, 0.040254876, 0.04270637, 0.029950392, 0.022225995, 0.04299584, 0.017074257, -0.02706258, 0.042129084, 0.047717962, -0.013739496, 0.007915816, 0.038424876, -0.035255942, -0.049015798, 0.041260492, -0.006079303, 0.015676808, 0.012246109, -0.001127791, 0.09590553, -0.00075540715, -0.021265501, -0.04145164, -0.021201298, -0.028929269, -0.03590798, 0.021651644, -0.047958452, 0.03658607, -0.027941627, 0.047481507, -0.0050026923, -0.0048633693, -0.03385171, -0.015584997, -0.026038801, -0.008279991, -0.007275426, 0.01527324, 0.049145862, 0.010493222, -0.04812263, 0.038722415, 0.008848977, -0.008807061, 0.015679376, 0.002280438, 0.021531489, 0.04448721, 0.06252819, -0.044870965, 0.004177486, -0.047144987, 0.012688932, 0.025732823, 0.037487496, -0.039325934, -0.0073981476, -0.082785875, -0.046229437, -0.063936286, 0.030854661, -0.014874441, -0.035003345, 0.046986114, 0.03671608, 0.011001099, 0.057629608, 0.015481628, -0.04914769, -0.008488149, 0.016496602, -0.021082427, -0.010298155, 0.02231588, 0.034814496, -0.044666983, 0.01552781, -0.045155954, -0.011044643, 0.011572882, -0.0041996366, 0.018969769, 0.056372676, -0.013051594, 0.02495742, -0.0054092878, -0.06338082, 0.0056044683, 0.0088308165, -0.0134333335, 0.03714446, 0.025582585, -0.0111960955, -0.034155667, -0.049538516, 0.047418587, 0.030605229, 0.00023095135, -0.045517135, -0.03399259, -0.0748862, 0.024197243, 0.012918141, -0.0035414987, 0.044894267, 0.05876033, -0.02095567, -0.03318082, 0.002147719, 0.0036107472, 0.021485811, -0.058557082, 0.040092714, 0.028208716, 0.01442226, 0.0329833, -0.039172575, 0.000103460334, 0.029907076, 0.037492264, -0.010064635, -0.032087002, 0.026883544, 0.018909577, -0.046526335, 0.024987873, 0.011433467, 0.03494368, 0.002198532, -0.05136448, 0.008010838, -0.0013655297, 0.05166156, -0.07062011, 0.0014653212, -0.06252673, 0.015976068, -2.5223042e-05, 0.032606516, -0.021477375, -0.014288166, 0.032721348, -0.00041934455, 0.018621622, -0.010443991, -0.0022687898, -0.03522292, 0.0032872504, -0.0018362375, -0.03859364, -0.03820438, 0.04218329, 0.023620874, -0.013975216, 0.063261956, -0.01916034, 0.027172646, -0.026316347, 0.0468213, 0.01266637, 0.012125679, 0.0058792615, 0.018503074, 0.07336879, -0.05235992, -0.0083236955, 0.02567871, 0.014115548, 0.024137441, -0.054982197, 0.06333864, 0.033355318, 0.026247375, 0.05644825, 0.02367554, -0.00801304, -0.037793107, 0.022467403, -0.0106769595, 0.033896834, 0.020808734, 0.037794758, 0.03889595, 0.0018776951, 0.030031746, 0.0362667, 0.024941277, 0.01636244, -0.011734677, 0.030119615, -0.011010821, -0.013960541, -0.008085315, -0.031394985, -0.0072985394, -0.0117187165, -0.008187308, 0.04119629, 0.03461812, -0.012816332, -0.025287064, 0.03838782, 0.031812586, -0.025473256, -0.012015707, 0.03758458, 0.0013257231, 0.011736878, 0.015348451, 0.039102133, -0.044722747, 0.018847575, 0.0020046355, -0.012123936, 0.0029046857, -0.058631923, -0.048595537, 0.027572546, 0.02773489, 0.030800361, 0.010956706, 0.08153261, 0.04981652, -0.0067836223, 0.02374011, -0.01715277, -0.089881346, -0.009778102, -0.050356567, -0.041456774, -0.00013501207, -0.008422845, -0.0027915945, 0.025433632, -0.028675573, 0.0007466021, 0.0035099466, -0.07375181, 0.022722382, -0.0043342817, -0.017569179, -0.010096829, -0.05489277, 0.014395936, 0.07882063, -0.060912453, -0.012788357, -0.0068724076, -0.04224823, -0.00868403, 8.860167e-05, -0.02706093, -0.007048923, -0.022425946, 0.04372263, -0.05026521, -0.005928791, 0.054568354, 0.026987461, -0.017214773, -0.026316347, -0.030889146, 0.000106395375, 0.018035369, 0.05488204, 0.016025346, 0.023382034, -0.0031472854, -0.009921553, 0.0100606, 0.021981651, 0.014926905, 0.03493437, 0.0051282574, -0.0022886014, 0.0043379962, -0.047429044, -0.025680175, -0.0010260504, 0.017424628, 0.014159024, 0.063132815, -0.026123, -0.043318328, 0.00927731, 0.0397794, -0.0075515034, 0.013385364, 0.05529331, 0.027388737, -0.06414394, 0.0038726083, -0.0012178603, -0.066091344, 0.036894433, 0.04357657, -0.012561993, -0.0014724752, -0.020759206, -0.06797105, 0.027961072, -0.029241119, 0.011139963, 0.046962183, 0.008975367, -0.019939044, -0.0014455211, -0.037625074, 0.00575599, -0.013700904, 0.010370614, 0.02222416, -0.012439729, -0.01569552, 0.019231148, -0.02014468, 0.0127624925, -0.015174549, -0.012002867, -0.026002847, -0.034102287, 0.018076941, -0.0009685648, -0.0072224117, 0.00962759, -0.015650393, -0.023052668, 0.021019049, -0.026470436, 0.04601857, 0.014799689, 0.020853493, -0.026416918, 0.006552855, 0.008811647, 0.028406626, -0.011663869, -0.0046863724, 0.022199212, -0.014368168, -0.103643134, -0.035719495, 0.043684475, -0.0042363703, -0.010144249, -0.0015955637, 0.031858444, -0.018716414, -0.05928864, 0.0047008414, 0.02964542, 0.023267934, -0.010414181, 0.0240648, 0.004769815, -0.048765775, -0.06520349, 0.03478542, 0.0027820559, -0.054160748, -0.0666402, -0.044995386, 0.031174626, -0.021637104, 0.026780725, -0.03164859, -0.013345098, -0.008741206, 0.0008863835, -0.03563658, -0.012991151, -0.018642304, 0.01961956, -0.001564379, -0.0026712576, -0.009021227, 0.03353729, -0.0154141225, 0.021724973, -0.018032916, 0.040980563, 0.02883168, -0.022360962, -0.02702993, -0.032112326, 0.050761968, 0.02336626, -0.044853356, -0.055199392, -0.058893144, 0.029724669, -0.005631984, 0.01527214, -0.020315647, -0.016098354, 0.060670312, 0.0016399563, 0.005157149, 0.0031382968, 0.02410846, -0.03539646, -0.0118762925, -0.0054171756, 0.026533356, -0.033431813, -0.017126353, -0.032013636, -0.007294871, 0.018739894, 0.027799277, -0.00039036098, 0.037791457, -0.0073926444, 0.01538624, 0.017768396, 0.05442582, 0.02483048, -0.020369578, 0.07167013, -0.015886595, 0.045252524, -0.00701916, -0.068680786, 0.063184544, -0.0204635, -0.035906423, -0.013414623, 0.000605353, 0.008890801, 0.027729388, -0.001204469, -0.007349444, 0.04368081, 0.016541088, -0.0030906023, -0.017244603, -0.04316057, -0.0009160894, 0.02406104, 0.0030496952, 0.0010969731, -0.074767336, 0.037256703, 0.008878648, -0.0155937215, -0.00048611683, 0.00017903774, -0.024328586, 0.049684804, -0.046342526, 0.03914176, 0.0072627687, 0.033269834, -0.02216913, 0.044120144, -0.02490936, -0.013138728, -0.025230471, 0.05810949, 0.011834835, 0.0074770264, -0.034975097, -0.009443874, 0.013614207, -0.039961003, -0.015046507, -0.0027662797, 0.014124904, -0.020322986, -0.027102938, 0.027343612, 0.0057967138, 0.03998265, 0.0034239131, 0.01748608, 0.055462077, -0.04193739, -0.033485744, -0.028517079, 0.022690097, 0.031318396, -0.009042873, -0.022235166, 0.022770079, 0.021210425, 0.05480096, 0.007674775, 0.024555963, 0.047402445, 0.030945646, 0.0144242775, 0.015380369, 0.017646225, -0.020595944, 0.0073315585, 0.009130558, -0.037061546, -0.049531817, -0.01409115, 0.012199514, -0.004864103, 0.0357261, 0.01833064, 0.0069373455, 0.034679756, -0.028255127, -0.021798579, -0.0073214695, -0.011989658, 0.005928057, -0.040980563, -0.04619467, -0.0043893596, -0.027396258, -0.041177947, -0.060649768, -0.008592711, -0.013518083, -0.016336184, -0.038639866, -0.047936622, 0.007357057, 0.010849577, -0.009333259, -0.017010054, -0.05029346, 0.014970701, 0.011048242, -0.017071001, -0.037100438, 0.013509645, -0.005659271, -0.0062061865, -0.06652426, -0.004457187, -0.0029991572, 0.0050291996, -0.0048376876, -0.01654118, 0.045095496, 0.011939121, 0.015218208, -0.023061933, -0.0021132322, 0.048907753, -0.040107757, 0.0129719805, 0.02107619, -0.00017353453, -0.057173207, -0.015714243, -0.0010696404, -0.04225584, -0.0070965714, 0.014058499, 0.033435296, 0.0004908863, 0.015415039, -0.0005628866, -0.002061869, -0.021361416, -0.02498457, 0.0015410362, 0.0055196728, -0.08319825, -0.04400513, 0.011462451, -0.03341402, -0.048450988, 0.005805886, 0.02509757, -0.03345658, -0.0044627357, 0.046752334, 0.003426298, -0.024045723, 0.008645909, -0.0775615, 0.007856473, 0.005691786, -0.041808613, 0.016960708, -0.014132241, 0.035970993, -0.009328765, 0.01438759, -0.04623576, -0.008156123, -0.004382389, -0.006159926, 0.056843016, 0.017887196, 0.0015383305, -0.0043379962, 0.008978486, -0.002064804, -0.03559549, -0.032593492, -0.020686196, -0.023081927, 0.00029277074, 0.041927665, 0.02516957, 0.010388591, 0.014110228, 0.007866838, 0.050468095, -0.00993366, -0.024340326, 0.021389874, 0.018878942, 0.023894567, 0.017351894, -0.0057647955, 0.0020432498, -0.004204819, -0.017275674, 0.02642586, 0.029606348, 0.019692134, 0.0029108308, 0.04697686, 0.02955517, -0.006849661, 0.0007117484, 0.0060322513, 0.008555655, -0.07459343, -0.009752695, 0.07482751, -0.00079484686, -0.01904404, 0.04511843, 0.0017801048, 0.056678653, -0.07304739, -0.018769428, -0.05952271, -0.05406059, -0.008617291, 0.0356098, 0.002028116, 0.015516115, 0.01311323, -0.001809822, 0.03339201, 0.029460879, 0.03456309, 0.0034236382, -0.028805265, 0.043937992, -0.048706334, -0.0068933195, 0.038191814, 0.016528156, 0.02298429, 0.027329165, -0.02022833, 0.021942396, 0.02171933, -0.024695652, 0.024236133, 0.034552816, -0.07098186, 0.017360792, -0.00860069, 0.03393721, 0.015752204, -0.037126895, 0.04435293, 0.02675807, -0.0018458681, -0.051202044, -0.006073892, -0.015018625, -0.029564066, 0.03952038, -0.0010672557, 0.017109202, -0.036911216, -0.0034585835, 0.043817285, -0.016970063, -0.049738735, 0.049597487, 0.015542163, 0.04942542, 0.023297468, -0.03066278, 0.063071184, -0.0036965972, -0.041329835, -0.04690495, -0.015394127, 0.0043077744, -0.02035981, 0.002238155, -0.011215082, 0.036515992, 0.040487476, 0.05239954, -0.006109938, -0.09808627, -0.0029289913, -0.035486896, -0.03174838, -0.030558953, -0.018262217, 0.013774624, -0.0003786208, 0.029350448, -0.005269919, -0.014086014, 0.069496, -0.02220178, -0.022194076, -0.015606367, -0.017485714, -0.061726928, 0.030084943, -0.0081231035, 0.061706383, 0.023363968, 0.0354979, -0.03746603, 0.0074418066, -0.046526335, 0.028124334, 0.021495719, 0.042024523, -0.03319389, -0.0041006245, -0.017578993, -0.021479025, 0.039941374, 0.018148484, -0.049704894, 0.075355805, 0.002525973, 0.0032247147, -0.018239103, 0.037823923, -0.03431077, 0.05159515, 0.0039898264, 0.011736511, 0.03701979, -0.0257198, 0.104428895, -0.010288066, 0.0131473495, 0.010686131, -0.020446623, 0.03531813, 0.022806766, -0.0300677, -0.021816922, -0.01942743, -0.040855825, -0.022462588, 0.009784752, -0.0061720326, 0.006823429, 0.009784339, 0.061573207, -0.032353457, -0.061589163, -0.03373467, 0.040518846, -0.03303314, -0.015228481, -0.025346681, 0.0020171097, -0.044298634, 0.0069589918, 0.01933039, -0.03472892, 0.0050607054, -0.06221855, 0.005398421, -0.0008607019, 0.0028921198, 0.005267305, 0.020294735, 0.024024077, -0.013173216, -0.009738388, 0.0041002575, -0.0027451843, 0.03288571, 0.01421534, 0.0357782, 0.027018556, 0.018513896, 0.0014140495, 0.019860715, -0.038026072, 0.064374335, 0.06339, 0.0056492276, -0.043490026, 0.009655105, 0.054668147, -0.014548651, -0.010885348, -0.0057024253, -0.030713595, 0.03474066, 0.061261725, -0.018299822, 0.017988523, 0.01362081], [-0.03133366, -0.048599094, -0.03996722, -0.050677788, -0.006007645, 0.065061845, 0.003281868, -0.044323485, 0.016458796, 0.038753282, 0.028570514, 0.0049991226, 0.004277724, -0.025489, -0.00977546, 0.03249757, 0.0054918774, -0.057343706, 0.058812264, 0.01682377, -0.020519646, 0.010956309, -0.04806116, 0.04086786, -0.03079657, 0.047604296, -0.024050003, 0.030436821, -0.008369662, -0.014199437, -0.016480066, -0.07948558, -0.026010048, -0.02958896, -0.017902175, 0.009442998, 0.014547047, 0.013504534, -0.047719143, -0.05699747, -0.07848278, -0.004167941, -0.008504778, 0.04569434, -0.0073073027, 0.024438465, -0.004240144, -0.009892684, -0.012920575, -0.037268892, 0.05645953, -0.029319149, -0.035858396, 0.008602738, 0.025185117, 0.050925646, -0.028997824, 0.04032486, 0.030869197, -0.015249234, 0.041707277, -0.0066118715, -0.055464733, 0.033121403, 0.037761856, 0.008410619, 0.0120847495, 0.027408192, -0.048855, -0.03708205, -0.002243472, 0.0418918, 0.003598338, 0.0029776436, 0.015166053, 0.029214801, -0.05626108, -0.013059069, 0.0026145163, 0.01960296, -0.008903374, 0.023934308, 0.025141919, -0.016104272, -0.05792809, 0.0030376017, -0.004480399, -0.0073431935, 0.048923377, 0.022905413, -0.052357882, -0.02111543, 0.068715505, 0.034726787, -0.0044990834, 0.034381397, 0.017696965, 0.012205298, 0.029117739, 0.017726522, 0.013883706, -0.018503657, -0.0047967634, 0.006114472, 0.008167593, 0.009967421, -0.011177142, -0.0034877106, -0.011004868, 0.02352727, 0.0034787513, -0.0029528898, -0.008288591, -0.040107355, 0.006170735, 0.0043701944, 0.019963976, -0.014812004, -0.016175631, -0.021584116, 0.03657705, -0.004959643, 0.01165174, 0.033522557, -0.0479936, 0.034390263, 0.022379618, -0.023228323, -0.0619056, 0.0070533245, 0.029231323, 0.027292814, 0.06791789, -0.0064260857, -0.03437802, 0.028844127, -0.0047502113, 0.040280525, -0.027724344, 0.044579364, -0.030661454, -0.008940109, -0.0110990275, 0.011691009, 0.008818398, -0.02636684, 0.00933208, -0.02514403, -0.028129695, -0.007191609, -0.00055387465, -0.02419652, -0.015820526, -0.011329571, -0.005510245, -0.044621587, 0.0021378063, 0.00043406375, -0.04320961, 0.013970266, -0.0035531581, -0.007410752, -0.008190209, 0.030933376, 0.015645508, -0.05378506, -0.0069720433, 0.010282677, 0.012849638, 0.04202058, 0.05184444, -0.028709011, 0.033677943, -0.0090097785, -0.04757875, -0.0050394465, 0.015550292, 0.018065054, -0.009290991, -0.015435441, -0.015005179, -0.024861708, -0.0022997356, 0.013387574, -0.040112473, 0.020549836, -0.023984134, -0.023099117, 0.02315232, 0.0056551793, 0.012094672, -0.018280502, 0.01031957, -0.020653918, -0.006355572, 0.012688764, -0.07167288, -0.024461266, -0.009678186, 0.011547025, -0.025774013, -0.008126767, 0.034119606, -1.30894705e-05, -0.04020918, -0.037653767, 0.039877817, 0.025437646, 0.06346166, -0.03226766, 0.008088449, 0.005544869, 0.023783991, 0.024246346, 0.01912414, 0.023547538, -0.00015918486, -0.053058807, 0.038130898, 0.04495452, -0.0048876773, -0.013166319, 0.022056604, -0.070626356, -0.052995678, -0.020004936, 0.014492156, -0.004173008, 0.009122095, -0.0010252012, 0.05063403, 0.0031845416, 0.0016247834, -0.053272884, -0.0077616344, -0.010889596, -0.018715411, 0.0015483578, -0.09436917, 0.021810014, -0.039253213, 0.031678632, 0.004752745, -0.026572471, -0.014817704, -0.014232055, 0.00028036803, -0.033152673, -0.0032086093, 0.010233644, 0.046753902, 0.04730577, -0.05077554, -0.0012616562, 0.012070604, 0.04355669, 0.016786613, 0.0096393395, 0.007900129, 0.058080096, 0.034242798, -0.07118561, 0.01728251, -0.041978355, 0.0015882596, 0.009504936, 0.050146714, -0.04114633, -0.021273347, -0.05735405, -0.018425753, -0.04628268, 0.032223742, -0.009119666, -0.026888307, 0.0099186525, 0.010198493, 0.001753778, 0.02811956, 0.015722565, -0.0364546, 0.0049381084, 0.018286414, -0.024804126, 0.011859906, -0.029930132, 0.047578115, -0.02681526, -0.013187854, -0.04250447, 0.019588184, 0.0045234677, -0.0019715487, 0.053137343, 0.06382004, -0.03945251, 0.02025068, -0.01624551, -0.063804835, -0.048030756, 0.027903374, 0.002739658, 0.030806703, 0.023076316, -0.006446776, -0.0061976532, -0.04758572, 0.035434887, 0.028857216, 0.013817731, -0.015577527, -0.06419077, -0.069210365, 0.0054779933, -0.015560004, -0.004789902, 0.021152584, 0.042933464, 0.0008877221, -0.01780907, -0.04889403, -0.013121773, 0.0052172095, -0.051829237, 0.021288758, 0.06672421, -0.0031315505, -0.0019600429, -0.06423172, -0.023025647, 0.035325054, 0.01536345, 0.0026478732, -0.009093382, 0.0021084605, -0.016357195, -0.013689054, -0.025111517, -0.0097335, 0.023182297, 0.009454345, -0.085366994, -0.0032909464, -0.0038157918, 0.07269977, -0.058379885, -0.029116051, -0.04496698, 0.0015926932, -0.019883223, 0.0354446, -0.031225145, 0.0065447353, 0.04399656, 0.0012861461, 0.014210098, 0.010915352, -0.014235645, -0.042245585, -0.028790714, -0.009659739, -0.027042426, -0.091937065, 0.015602649, 0.014782658, -0.030994179, 0.039189033, 0.012676519, 0.0041421843, -0.01784665, 0.037401263, 0.020719789, -0.014078234, -0.0004931775, -0.016846994, 0.04912373, -0.025779502, 0.021073204, 0.06070812, 0.021377217, 0.009233144, -0.040446468, 0.059267856, 0.04139144, 0.013721144, 0.06818686, 0.018744756, -0.026400197, -0.041316282, 0.060106855, -0.005450287, 0.043453667, 0.015423197, 0.0013207698, 0.021617051, -0.0020140896, 0.021335838, 0.025847273, 0.015356905, 0.0055138343, -0.0070277792, 0.0036483735, -0.03799895, 0.021299789, -0.021095054, -0.044109408, -0.031196855, -0.018035602, -0.034520734, 0.04957025, 0.0343791, 0.0088894395, -0.016932286, 0.018395774, 0.042909823, -0.012158007, -0.005941142, 0.0094924, -0.011607828, 0.026857272, -0.0086301835, 0.025984606, -0.0529068, 0.039130762, 0.045370005, 0.004504045, 0.00567323, -0.040544003, -0.028178677, 0.060071386, 0.014650919, 0.034667674, 0.019276146, 0.092075564, 0.033042893, 0.0072547337, 0.038977593, -0.022200983, -0.04071823, 0.0054939887, -0.038369883, -0.030305082, 0.011459622, -0.020753482, -0.031331338, 0.022367796, 0.000537935, 0.0394846, 0.028021287, -0.042838886, -0.011363984, 0.0110188015, -0.031117475, -0.014214321, -0.04584904, 0.0365002, 0.04652167, -0.019332727, -0.03200492, -0.0067795017, -0.040998757, -0.0143335, -0.0010543357, -0.0021606071, -0.025832877, -0.021059481, 0.04628057, -0.012762656, -0.02602229, 0.048300996, 0.022961045, -0.038307395, -0.024244444, -0.058417886, 0.005468866, 0.03163092, 0.02629717, -8.618994e-05, -0.0046385285, 0.010729989, 0.019909931, -0.033922844, 0.018606525, -0.012620783, 0.0150554245, 0.019937376, -0.02029591, -0.004041585, -0.063788794, -0.013439086, -0.00073385483, 0.011478199, 0.014440643, 0.06652618, -0.034218412, -0.019764258, -0.0066792197, 0.029798392, -0.01781857, 0.02114583, 0.04636206, 0.049206275, -0.038472913, 0.0001452509, 0.035835173, -0.037439264, 0.025295615, 0.030767858, -0.022865195, 0.017543692, -0.042939376, -0.05363833, -0.0074106334, 0.0027703233, 0.010246945, 0.065693945, 0.008156852, -0.027413577, 0.007046991, -0.030289881, -0.020140052, -0.05022483, 0.0068141255, 0.029055037, -0.0012848794, -0.05130078, 0.034499176, -0.06631041, -0.004951198, -0.010932031, -0.0015247122, -0.029342372, -0.048996847, 0.002708676, 0.024019178, -0.014286418, 0.023611717, -0.0077971024, -0.049881864, -0.00062787236, -0.016732145, 0.051671743, 0.009309992, 0.007952487, -0.02975448, -0.01763173, -0.014103351, 0.056740746, 0.0122794015, 0.0030826956, -0.030155819, 0.0016401953, -0.04596748, -0.06548789, 0.040842526, -0.052699476, -0.006119803, 0.039407752, 0.049692698, -0.019787902, -0.023326598, -0.014940998, 0.031163497, 0.024214255, -0.0061039156, 0.011322815, -0.004203923, -0.04098609, -0.045088585, 0.006944598, 0.000187475, -0.010444554, -0.030151809, -0.058768876, 0.027463399, -0.03786235, 0.01485845, -0.047122095, -0.0033902258, -0.003659985, 0.0232279, -0.060738523, 0.010653986, -0.03450311, 0.022857172, 0.00958656, -0.0039027736, 0.0026314058, 0.034101874, 0.0029290859, 0.04306098, -0.028676076, 0.044176545, 0.014172097, -0.05386275, -0.045897596, -0.051575895, 0.016925108, -0.028287932, 0.016993722, -0.051575895, -0.055717234, 0.019606126, -0.0019169742, 0.022908263, -0.032452602, -0.03240953, 0.04431203, -0.010350394, -0.008471844, 0.0127421785, 0.02914814, -0.028474191, -0.015739033, -0.0016192943, 0.019601693, -0.0067517394, -0.017338693, -0.0135248015, -0.005380195, -0.0023058583, 0.016163386, 0.01817262, 0.023028601, 0.024618339, 0.0071067386, 0.011414902, 0.025447622, 0.020548042, 0.017382817, 0.08617448, -0.01672919, 0.04459625, 0.0047307885, -0.068425, 0.082175486, -0.018421954, -0.06354221, -0.0365809, 0.0107688345, 0.015953057, -0.0023881951, -0.015231922, -0.02631068, 0.039976697, -0.0024198634, 0.0008432153, 0.012084537, -0.037197746, 0.031418953, 0.041361462, 0.004463932, -0.010601416, -0.033688076, 0.048954625, 0.028799372, 0.00060127117, -0.002247589, 0.00082685344, -0.026995556, 0.034340017, -0.054935243, 0.03716481, 0.04300356, 0.03265401, 0.0003279559, 0.010999009, -0.025087027, -0.045039073, -0.017403087, 0.04267252, 0.010625273, 0.036579583, -0.013933531, -0.02722272, 0.009282546, -0.030219208, -0.027399853, 0.007164058, 0.024055913, -0.038944133, -0.017334683, 0.0021969727, 0.0030948156, 0.044223834, 0.0058125695, 0.018860977, 0.057617318, -0.05295409, -0.021242734, -0.039368276, 0.063925594, 0.041522335, -0.0018249255, -0.041213043, 0.020606918, 0.029173054, 0.041945845, 0.0233376, 0.007055647, 0.050378896, 0.009703099, 0.033351127, 0.015341969, 0.02735541, -0.034599695, 0.0042201676, -0.015890619, -0.029592339, -0.027155165, -0.028539075, 0.017180143, -0.040972155, 0.064862974, 0.013143835, 0.02395521, 0.027721653, -0.037403796, 0.0005995822, -0.018442642, 0.003526557, 0.03198349, -0.043306727, -0.037214212, -0.012241611, -0.017907664, -0.028668476, -0.07674652, -0.0030336962, 0.0021828804, -0.004174776, -0.04055593, -0.03485853, 0.03156336, 0.038561583, -0.0013499045, -0.033220235, -0.06501498, -0.011921552, 0.0047624563, -0.010699588, -0.04543862, 0.025081117, 0.003257167, -0.025403287, -0.049554203, 0.02414944, -0.0047172764, 0.009876217, -0.009290991, 0.0024067736, 0.05323952, -0.002235344, 0.06057723, -0.048501138, -0.013814037, 0.049432598, -0.05373946, 0.019508114, 0.03492018, 0.039211836, -0.0581865, -0.036637854, 0.008357839, -0.002836193, 0.010126184, 0.015132695, 0.011879329, -0.0044740657, 0.02543337, 0.0051489356, 0.033424597, -0.037177477, -0.027446827, 0.034038536, 0.01746051, -0.07178773, -0.044497866, -0.016004624, -0.07080623, -0.069887646, -0.0024424004, 0.03017672, -0.016789148, -0.03110734, 0.011195298, 0.03940353, -0.033203345, 0.048741814, -0.084100276, 0.011597271, -0.024759369, -0.049631894, 0.0025359795, -0.03353987, 0.034003068, 0.018309215, 0.062262814, -0.01140919, -0.021585803, 0.010321048, -0.009505912, 0.039479535, 0.03012774, -0.0011729855, -0.018527936, 0.042167097, -0.023652252, -0.034649096, -0.04242509, -0.014290324, -0.019151164, -0.0041968646, -0.0035814482, 0.020771207, 0.013821636, 0.013596794, 0.0024217633, 0.03482306, 0.011581648, 0.008944754, 0.026924198, 0.026550725, -0.011979874, 0.008206254, -0.0074362974, 0.027984444, 0.020989811, -0.009842016, 0.015915083, 0.0063918843, -0.029744834, -0.019657219, 0.052503135, 0.010724922, -0.020853639, -0.03332664, -0.03560336, 0.019451903, -0.08410112, -0.017280795, 0.05104725, -0.0044297306, 0.0062808353, 0.0152388895, -0.00051091163, 0.039579183, -0.058305573, -0.042901374, -0.06815477, -0.04267532, -0.0009289302, 0.020875173, -0.024671542, 0.002458208, 0.00044250858, -0.03779859, 0.026829194, 0.028950531, 0.020694243, -0.013170647, -0.0020808037, 0.059579898, -0.042684767, 0.015990267, 0.062544025, 0.010860038, 0.003477788, 0.013951265, -0.025303215, -0.0053623025, 0.035424754, -0.024208553, 0.049233302, 0.056488246, -0.013871462, 0.01876988, -0.044532068, 0.062116716, 0.034934532, -0.031225566, 0.04396542, 0.022403896, -0.020032803, -0.025256768, -0.010484125, 0.0094962, -0.054018136, 0.0075333077, -0.022151608, 0.007919975, -0.02903045, 0.0054342416, 0.05919143, 0.006422048, -0.06561963, 0.06877461, 0.0035027005, 0.055992536, 0.030780103, -0.02455205, 0.055882752, -0.0019377696, -0.013569137, -0.01814454, -0.017285703, -0.020361306, 0.0077835904, -0.036756925, -0.014560559, 0.034761414, 0.023882795, 0.022858227, -0.007447909, -0.07101587, -0.017694853, -0.021655897, -0.026543338, -0.017538413, -0.016796535, -0.011395652, 0.02491222, 0.016035024, -0.00945841, -0.0008360372, 0.06157625, -0.016863488, -0.04290813, 5.7424775e-05, -0.00442023, -0.031693835, 0.011462155, -0.019412952, 0.034520525, 0.026915753, 0.03257505, -0.03108285, 0.009489022, -0.050405443, 0.024597228, 0.0038162144, 0.004523046, -0.024849938, 0.0136984475, -0.013352527, -0.0014668653, -0.01155547, -0.024419464, -0.02420676, 0.043571472, -0.00045058396, -0.020669542, 0.01595807, 0.023269702, -0.0319894, 0.023458444, 0.0043283924, 0.009262068, 0.024900397, -0.038728155, 0.06360638, 0.00822061, 0.020902406, 0.02016222, -0.005363728, 0.021461666, 0.013974489, -0.02362016, -0.030381085, -0.047628786, -0.07089257, 0.013476719, 0.012711144, -0.012793639, 0.0047842017, 0.025734851, 0.036016893, -0.037108228, -0.0763378, -0.021465044, 0.03003168, -0.006675208, -0.0002533446, 0.0073609273, 0.012283729, -0.032546442, -0.010947179, 0.008107027, -0.029550958, 0.023542471, -0.08534673, 0.034428265, 0.021035202, 0.010305636, -0.0021097271, 0.013885712, -0.007571626, -0.043376397, -0.029022735, 0.00979937, -0.022395663, -0.012120006, 0.0011548292, 0.031690877, 0.05042571, 0.033107072, -0.0039293747, -0.016265832, -0.043408066, 0.010020623, 0.048377838, -0.0013843172, -0.014028535, 0.006124395, 0.030034795, 0.026349528, -0.011792446, 0.0008683386, -0.015808808, 0.023984978, 0.047385573, -0.03402418, 0.014623051, -0.020758424], [-0.004707925, -0.08959016, -0.029020552, -0.0007335562, -0.017818449, 0.015455907, 0.02748377, -0.027539093, 0.06411446, 0.020957578, -0.011207736, 0.044919048, -0.087145664, -0.01759504, -0.021919345, 0.04829164, -0.0023461506, -0.037560947, 0.04049927, 0.038997326, -0.013580011, -0.018345283, 0.008921519, 0.030307857, -0.021365339, 0.04034969, -0.0044546123, -0.013220404, 0.034946375, -0.0053054765, -0.007092399, -0.028450403, 0.00027662038, -0.003742059, 0.014467245, 0.012633354, -0.0009886617, -0.020255912, -0.03015367, -0.05514773, -0.06713474, -0.00011551461, -0.048365533, 0.03884006, 0.032603297, 0.042312674, 0.02163786, 0.027974514, -0.011125518, -0.021888867, 0.031879984, 0.02267352, -0.040318955, 0.02554538, -0.027152851, 0.028686557, -0.0009456319, 0.019542461, 0.02090328, -0.023625428, 0.011706164, 0.0066166054, -0.040405016, 0.009140254, 0.0052335034, 0.032872744, 0.020754725, 0.005366435, 0.006144814, -0.049681846, -0.0015424147, 0.003571476, 0.01465217, -0.03527422, 0.06592171, -0.0061184326, -0.07444264, 0.022518948, -0.019515054, -0.03211972, -0.0039013717, 0.0072114673, -0.003752208, -0.07406049, -0.063110426, 0.0013413527, -0.031633846, 0.006346901, 0.061856415, 0.009105708, -0.046031676, -0.018947983, 0.0039855745, -0.0037128602, 0.020442916, -0.0019035579, -0.0044254134, 0.060473822, 0.01724728, 0.05832182, 0.020688385, -0.038937904, -0.008524918, -0.017019324, -0.017130997, 0.0012801377, 0.017141754, -0.011763537, -0.012205105, -0.009922987, 0.00093026407, 0.009079295, 0.0108699, -0.07317531, 0.040368132, -0.016572634, 0.04425311, -0.023994256, -0.035979856, -0.018776376, -0.027553437, 0.010373264, 0.025313836, 0.012781446, -0.014120445, -0.0033568395, -0.00095767, 0.01984034, -0.053395927, 0.0042398474, 0.05187759, 0.00985793, 0.018326612, -0.020008873, -0.03336656, 0.03872685, 0.0053910236, 0.06027865, -0.022871383, 0.04387506, -0.022403177, -0.0030492272, 0.025379406, 0.023338564, 0.03630284, -0.012351612, 0.013883268, -0.025535133, -0.020424573, -0.0011624459, -0.0001446494, -0.019047873, 0.023512218, 0.011985858, 0.024568755, -0.05650432, 0.018870376, 0.020883814, -0.018699536, 0.0066875215, -0.02543883, 0.021721357, 0.03578648, 0.007931192, -0.025142102, -0.042168215, 0.017497582, 0.013908882, -0.015268931, 0.05838124, 0.08845295, -0.00094230217, -0.005100572, 0.015798096, -0.05326223, -0.014015944, 0.011015126, -0.042079084, 0.0072615403, 0.024960378, 0.010228806, 0.00015854446, 0.016377974, 0.0025077043, -0.022543535, 0.015407499, -0.028350003, -0.00825097, -0.024749583, 0.0013149714, 0.028832037, -0.043374587, 0.023042733, 0.006292601, -0.033262063, 0.0011910044, -0.035250656, -0.0124183325, 0.018825296, 0.04084146, 0.009267295, 0.0010368141, 0.044258233, -0.011624202, -0.017815184, -0.053914335, 0.018952593, -0.0007801719, 0.044675086, -0.038444594, 0.021992343, 0.052111182, 0.05341232, 0.05995337, 0.019780405, 0.0305143, 0.019027896, -0.029445726, 0.030134203, 0.06121711, -0.045197718, -0.0046339035, 0.04209752, -0.029242102, -0.024215423, 0.011430313, -0.03204487, 0.030908741, 0.048322506, 0.0062976913, 0.06735706, -0.006281331, -0.032644916, -0.02954408, -0.00065927854, -0.008358032, -0.023464067, 0.0377825, -0.0053423587, 0.021238297, -0.027923035, 0.03647547, 0.034300923, -0.019606236, -0.03799944, -0.004933063, -0.03178778, -0.013924249, -0.027239423, 0.01804743, 0.07202119, -0.019949706, -0.023529124, -0.014486711, -0.010750287, 0.005817224, -0.019896176, 0.022520483, -0.0004712791, 0.041369088, 0.003233897, -0.049316287, -0.013234748, -0.040468663, 0.04595074, 0.007127841, 0.039366152, -0.023853896, 0.02282579, -0.03648418, -0.025735939, -0.049754784, 0.0157899, 0.011754573, -0.0028720496, 0.035922483, 0.020809408, 0.010889622, 0.05701658, -0.0030292491, -0.060735587, -0.018723357, 0.0012759115, 0.027082158, 0.024892503, 0.017439185, 1.8441358e-05, -0.045703832, -0.0042281933, -0.045064535, -0.015699742, -0.0027221492, 0.029477486, 0.036961094, 0.051913448, -0.023658212, 0.036989268, -0.034874655, -0.05655452, -0.02919984, 0.013074922, -0.02757444, -0.0026724602, 0.011528922, 0.008280169, -0.021990038, -0.07400722, 0.017457819, -0.023877285, -0.0044556367, -0.04681134, -0.0062362524, -0.0622529, -0.003872301, 0.02059797, -0.014596591, 0.033856794, 0.07664638, -0.03358504, -0.0051343814, -0.02144525, -0.033192392, -0.0114695, -0.06302846, 0.018384498, 0.0648685, 0.028083628, -0.0122644, -0.052102983, -0.05383237, 0.04812785, 0.040982842, 0.010875023, 0.0102128945, 0.0060549127, 0.019630825, -0.005979098, 0.014931352, 0.0069477814, 0.040776405, -0.0022630044, -0.050750617, -0.03377586, -0.0058556437, 0.033407547, -0.07748367, -0.03202854, -0.039253455, 1.1269719e-05, 0.028547224, 0.017767223, -0.035378978, 0.006289912, 0.027323944, 0.008927153, 0.00048306113, 0.019934082, -0.007317121, -0.012030937, -0.0069939005, -0.022506654, 0.005475066, -0.01950481, 0.036488786, 0.01414465, -0.021577476, 0.0616679, 0.017201688, 0.03971961, -0.018996647, 0.062809214, 0.009384602, -0.017095137, -0.0034147247, -0.00285777, 0.03563895, -0.063327625, -0.0044033863, 0.023522975, 0.0036804597, 0.0127450265, -0.015805269, 0.025750283, 0.035182524, 0.023769885, 0.051799726, 0.041478712, 0.01676473, -0.008480463, 0.04649681, -0.00021719822, 0.005073935, 0.04475154, 0.017750831, 0.0042020683, -0.019894127, 0.01926917, 0.04309745, 0.014262341, 0.009735243, -0.012141584, 0.008299892, -7.6839e-06, -0.014546389, 0.0023563958, -0.055676505, -0.03516511, 0.03810804, -0.0012596472, 0.025373772, 0.035546742, -0.038612105, -0.006629156, 0.03676797, 0.039395865, -0.014670612, -0.018114757, 0.026317352, 0.004626732, 0.027183075, 0.021921525, 0.033055108, -0.04060582, 0.04152123, 0.025647318, -0.011839352, -0.012497606, -0.019878758, -0.04145412, 0.05689159, -0.0041493056, 0.012747589, -0.026358847, 0.08323609, 0.05017381, -0.032031614, 0.028225008, -0.010291302, -0.04447748, -0.018773815, -0.03666142, -0.030286858, -0.03573935, 0.0027796505, -0.021036467, -0.0020954884, -0.04047878, 0.020611418, 0.03809165, -0.061190475, -0.0037708734, -0.018209375, -0.02969161, -0.016522825, -0.026424415, 0.040060777, 0.0659381, -0.07954782, -0.042098034, -0.059014395, -0.052436978, 0.009310837, 0.028058782, 0.003434959, -0.006268013, 0.010698036, 0.046930183, -0.069790296, 0.00846612, 0.009875347, 0.011969465, -0.03444026, -0.014031824, -0.04811145, -0.01205655, -0.004067591, 0.037838593, 0.015289423, -0.003691153, 0.03274468, 0.020167673, 0.011082295, 0.031069845, -0.0038480966, 0.03788777, 0.020771116, -0.01581167, 0.0045117293, 0.019392624, -0.016065497, 0.030398272, 0.045139834, 0.004572304, 0.06329074, -0.03240755, -0.019528372, 0.0012312807, 0.026594488, -0.05959222, -0.005740385, 0.06480088, 0.00961307, -0.057266563, 0.043029837, 0.010609415, -0.06666243, 0.03500554, 0.05360288, -0.032242663, 0.0031657664, -0.044119924, -0.055110976, -0.007679801, -0.04522743, 0.05588551, 0.031007094, -0.030111665, -0.059871916, -0.0032602784, -0.008877977, 0.013323112, -0.034993596, -0.0058582043, 0.057414092, 0.012226621, -0.03117819, 0.01804999, -0.04786147, 0.04103202, -0.02428112, -0.027539093, -0.030383673, -0.046957206, -0.011801445, -0.0047522355, 0.01466312, 0.03228057, 0.021187583, 0.0030187478, -0.014062688, -0.04868198, -0.013384327, 0.006273135, 0.016691478, -0.015392386, -0.009935878, -0.02121883, 0.022223884, 0.0027907921, -0.03490949, -0.008643362, 0.009010108, -0.056102708, -0.06478654, 0.0322232, -0.015856238, -0.022065086, 0.030969188, 0.056086317, 0.02752475, -0.04722857, -0.005732957, 0.031361576, 0.022158764, 0.021900136, 0.0264572, -0.018407037, -0.06287735, -0.06960178, 0.04166005, -0.036436025, -0.008341385, -0.05001008, -0.040173475, 0.02873983, -0.013677852, 0.011827057, -0.03044668, 0.012454064, -0.031925064, 0.02604176, -0.023002649, -0.03151423, -0.013035479, 0.018924931, 0.024325637, -0.010197303, 0.020831307, 0.016059348, -0.016035786, 0.03450173, -0.01602093, 0.05338978, 0.018080726, -0.02168806, -0.024362698, -0.034235355, -0.0050286, -0.008807285, -0.027307553, 0.013589232, -0.06974265, -0.0053520915, -0.0011474623, 0.0045150593, -0.0007222865, -0.037612174, 0.03130587, 0.0077259047, -0.0057634367, 0.008186938, -0.0038552682, -0.039503437, -0.032841496, -0.018094046, 0.02829314, -0.029497975, 0.005344024, -0.04448056, -0.01631676, 0.018567374, -0.0064339847, -0.012132941, -0.0013462192, -0.021499548, 0.021214735, 0.01362509, 0.08345534, 0.02990996, -0.018811466, 0.03449456, -0.001030667, 0.096406296, -0.018583253, -0.07604396, 0.07601938, 0.025073074, -0.017281344, -0.035983186, 0.0022892896, 0.016800588, 0.0036667567, -0.0004026363, -0.014130691, -0.011383824, 0.011265684, -0.010736967, -0.017126642, -0.0129294405, 0.012914905, 0.06953416, -0.003251826, -0.005190218, -0.05354141, 0.03467257, -0.0030092709, 0.0025070002, 0.0067705396, -0.025067952, -0.007173176, 0.03556723, -0.049746584, 0.041894667, 0.04484938, 0.021831239, -3.4833676e-05, 0.028520072, -0.01999165, -0.031444564, -0.03833241, 0.040214457, 0.025783835, 0.031202778, -0.020816932, 0.005413563, 0.005137391, -0.03677655, -0.008610065, -0.007940541, 0.007776618, -0.04455637, -0.041503813, 0.023744784, -0.011281501, 0.056192864, 0.041665178, 0.010182383, 0.0074246954, -0.029211111, -0.04400415, -0.029662926, 0.019959696, -0.022883676, 0.0019519664, -0.011949103, -0.019264048, 0.04399954, 0.039931685, 0.04203605, 0.051668584, 0.02572467, 0.055684704, 0.019777332, 0.030315543, 0.009113104, -0.024043689, 0.004629805, 0.008880539, -0.04052181, -0.0872645, -0.012898706, 0.0127680795, 0.010109962, 0.035774697, 0.039032158, 0.009618961, 0.021736724, -0.03483137, 0.01993895, 0.01955706, -0.0043248185, 0.0026273811, -0.051631704, -0.007476946, 0.029145798, -0.013576938, -0.057289105, -0.044165, -0.03434908, -0.0014737719, -0.044746418, -0.031592093, 0.006759782, 0.020396141, 0.041845493, -0.008153129, -0.026453614, -0.03557082, 0.03917969, 0.047316425, 0.015576928, -0.023252504, 0.023789607, 0.0062262635, 0.008482, -0.046203796, -0.027037336, -0.012990399, 0.034010988, 0.011985795, 0.0134417005, 0.03985587, 0.0075645423, -0.005201488, -0.013867902, -0.051826365, 0.039728317, -0.02519845, 0.010944947, -0.004280444, 0.01483095, -0.07833069, -0.0072904835, 0.036133792, -0.0022290992, -0.013716016, -0.032460887, -0.0014696737, 0.0070722606, -0.012394898, 0.0113901, -0.0017514167, 0.009415338, -0.027296795, -0.0063392487, -0.0033768173, -0.06749537, -0.020718355, -0.021492377, -0.04886345, -0.062439363, -0.020722194, 0.009577724, -0.005669181, -0.05511712, 0.060537852, -0.02535482, 0.006494976, -0.0053984514, -0.0608851, -0.0070405006, -0.01360127, -0.057673298, 0.029023623, -0.04577145, 0.022271013, -0.004126766, 0.0413632, -0.055668313, -0.041905552, 0.0061460948, -0.00060088094, 0.021602001, 0.007358614, 0.0013987258, 0.015192606, -0.0036672687, 0.009642333, -0.046864614, -0.08890373, -0.023927663, 0.00838006, 0.0037434115, 0.005675328, 0.008064252, -0.025791775, 0.019221017, 0.019646194, 0.0035517542, 0.0145891635, 0.003306638, 0.041371647, 0.006844561, -0.0228847, -0.033907253, 0.03132034, 0.017450647, -0.022291502, -0.010191796, -0.012074991, 0.027486011, 0.011713335, 0.032153532, 0.021180412, 0.022307511, -0.016518846, 0.0066716736, 0.0110197365, 0.039999302, -0.076961935, -0.0012363393, 0.05855541, 0.016459424, -0.0005134125, -0.010399388, -0.04508297, 0.010087422, -0.05380983, -0.016305363, -0.063257955, -0.04985314, 0.0013790036, -0.007744346, 0.006114847, 0.014471856, 0.008653095, -0.018461144, 0.017793862, 0.045419015, 0.027325993, -0.004741478, -0.011807336, 0.06888462, -0.023182835, 0.007835528, 0.039223935, -0.022354, 0.01668328, 0.039403036, -0.0057659983, 0.018953618, 0.05012771, -0.008489427, 0.0029198816, 0.04085068, -0.047159523, -0.0015672593, -0.04306057, -0.009926572, 0.013456557, -0.010533089, 0.030696664, 0.015485617, -0.0280616, -0.029834177, -0.01342121, -0.029749751, -0.014046167, 0.016545996, -0.010036197, -0.0010373264, -0.006241631, 0.02747711, 0.0069134603, -0.04089576, -0.064052984, 0.06757272, -0.0015001532, 0.04472849, 0.037512284, -0.041023824, 0.053890128, 0.025577525, -0.015900549, -0.04322808, -0.026328366, -0.019258924, -0.05618057, 0.041953065, 0.00917688, 0.014151117, 0.060602915, 0.025215482, 0.018170884, -0.078011036, 0.013873024, -0.01755566, -0.029350445, -0.03842052, -0.032323603, -0.010011023, -0.005351451, -0.013902734, -0.0058745965, -0.0415115, 0.070732854, 0.001371704, -0.016563926, 0.011785053, -0.008428725, -0.0019880808, 0.003572501, -0.008040432, 0.055297434, 0.021738263, 0.0352901, -0.014946721, 0.017885044, -0.069720626, 0.008828032, -0.0031599076, 0.04344656, -0.007147051, 0.0074979486, -0.013340145, -0.0050353874, 0.009061879, 0.035663538, -0.022853836, 0.04103932, 0.005742434, -0.035305656, -0.0120448, 0.028916048, -0.04563519, 0.058774658, -0.0031734505, -0.0025726333, 0.032006003, -0.04812682, 0.05121703, 0.0014968235, 0.015688473, 0.034223318, -0.006403249, 0.014205736, 0.024461437, -0.017430156, -0.0008664877, 0.018750763, -0.036182966, 0.0018136563, 0.021675767, -0.022224398, 0.024796456, 0.022940023, 0.04677753, -0.0013011402, -0.016562821, -0.050173745, 0.04401235, 0.0042479155, -0.03782758, -0.053803686, -0.015988657, -0.029568732, -0.012674335, 0.008167473, -0.009039339, 0.008998358, -0.07547843, -0.023796523, 0.014260805, 0.032061324, 0.00123762, 0.048858326, 0.025338938, -0.038255572, -0.022295201, 0.0013810528, 0.030869039, 0.05221619, 0.0077935224, 0.006990299, 0.014498621, 0.009032935, 0.0013964205, 0.015038927, -0.042898826, 0.04089576, 0.054260366, 0.020330125, 0.01983496, 0.0134417005, 0.011577074, 0.001288846, -0.014335083, -0.002794246, -0.013793111, 0.03868382, 0.024915298, -0.039724734, -0.0014911887, 0.015676819], [-0.021109868, -0.07884738, -0.031829223, -0.028415266, 0.013119011, 0.0035443818, 0.015433458, -0.023306, 0.016782044, 0.015467119, 0.0016524303, 0.032326292, -0.08890461, -0.023992123, -0.030423423, 0.029424235, 0.007523368, -0.011321936, 0.021969302, 0.04269167, -0.024795007, -0.0071078716, -0.024407174, 0.024147768, -0.022973323, 0.04879124, 0.004126076, 0.0071233143, 0.011749207, -0.014598799, 0.0023012818, -0.03354098, -0.02526394, -0.0040859706, -0.0057276245, 0.0034883898, 0.023347327, -0.005236584, -0.072686486, -0.055608045, -0.063727215, 0.014199523, -0.008065735, 0.039538343, 0.022790518, 0.062974095, 0.017334409, 0.033076156, -0.00093197776, -0.03621082, 0.05418647, 0.009817317, -0.054980576, 0.03603129, 0.010078558, 0.039568562, 0.030007262, 0.018342264, 0.019752285, -0.0028991406, 0.0015106727, -0.014093094, -0.04593165, 0.01840509, 0.021820433, 0.045266412, -0.0019152815, 0.017571263, -0.014656791, -0.036987595, -0.043636866, 0.021375831, 0.01152435, -0.03441974, 0.057847723, -0.025144178, -0.06552751, 0.024800673, -0.014145087, -0.03500477, -0.01327099, 0.017271085, -0.0032306486, -0.05510856, -0.070509024, 0.0011273941, -0.030902244, 0.014400606, 0.039151732, 0.018791977, -0.046011638, -0.015683977, 0.029126497, -0.0038411622, 0.028296394, 0.012518653, 0.0024827558, 0.043526217, 0.02447472, 0.007252296, 0.019827219, -0.04066085, -0.022994041, -0.0023183348, -0.0055085453, -0.0076371296, 0.019216806, -0.03287885, -0.016583849, -0.017133547, -0.011436142, 0.012419556, -0.011504131, -0.03805233, 0.010086557, -0.014023992, 0.008567219, -0.043100275, -0.03403424, -0.0072877347, -0.020825908, 0.026275352, 0.026252965, 0.030424312, -0.024731128, 0.0004851528, 0.029809067, -0.028979853, -0.040211137, 0.003972543, 0.027792022, 0.0084292935, 0.062104, -0.0047296565, -0.047811825, -0.0023134467, -0.0010096333, 0.06299276, -0.04843396, 0.052265186, -0.047699843, 0.014432156, 0.02975752, 0.026179366, 0.04431366, -0.016757824, -0.022531664, -0.048081454, -0.0141046485, -0.054363552, 0.007212746, -0.024977537, 0.0043173824, -0.02559367, -0.005866827, -0.043195594, 0.0086141005, 0.02651043, -0.02730187, 0.026711289, -0.013674488, 0.006682933, 0.023063144, 0.04024313, -0.02550124, -0.058764927, 0.023321105, -0.015873283, -0.022741968, 0.05634394, 0.06546974, 0.010364739, 0.014800104, 0.034681257, -0.03312565, -0.025274606, -0.027218772, -0.023847252, 0.0055396515, 0.013473906, 0.0073242853, 0.014225075, -0.037106246, 0.008440737, -0.034843903, 0.026031386, -0.023275781, -0.006041802, -0.034044906, 0.016053341, 0.013117234, -0.005622307, 0.023326885, -0.015243152, -0.05607259, 0.010884332, -0.0055556498, -0.021402216, 0.0100440625, 0.06969314, 0.028462594, -0.021243183, 0.014994521, -0.02725321, -0.020665487, -0.07698454, 0.026765948, 0.008930278, 0.04684841, -0.05387496, -0.0020472626, 0.058804028, 0.03872868, 0.040430658, 0.032563422, 0.023293555, 0.034861233, -0.037974566, 0.044276554, 0.07335839, -0.023576181, 0.016773155, 0.033855155, -0.02196019, -0.015651537, -0.0017686357, -0.019401947, 0.0020557058, 0.018131183, 0.011270415, 0.046166282, 0.008341028, -0.039096627, -0.0428472, -0.011854081, -0.01713888, -0.027999548, 0.036817845, -0.052164536, 0.06397662, -0.042571686, 0.01902739, 0.042423707, -0.018008534, -0.033528537, 0.010618814, -0.037891913, -0.025631888, -0.06599944, 0.0138969, 0.051725265, -0.023926355, -0.0144130485, -0.0018170733, -0.028233739, -0.009895473, -0.021250736, 0.003181767, 0.003974098, 0.055872615, 0.0009989681, -0.026275352, -0.027940223, -0.031910323, 0.025493242, 0.016990347, 0.03409823, -0.026909927, 0.027637823, -0.043819506, -0.046748865, -0.076117106, 0.008841735, 0.014628129, -0.014478372, 0.038767785, 0.01804275, 0.028611463, 0.04916052, -0.0015917723, -0.06723838, -0.00087620795, 0.009549855, 0.024548488, -4.7715395e-05, -0.006999887, 0.021195188, -0.03547048, -0.019857602, -0.048117116, -0.02073459, -0.01665095, 0.0076541267, 0.043503106, 0.051126905, -0.029702416, 0.047873594, 0.011514796, -0.061233293, -0.016902471, 0.022580769, -0.00936115, -0.03003126, -0.001652208, -0.0063175405, -0.007104761, -0.06768187, 0.017940016, 0.025667438, -0.0072847353, -0.04612673, -0.024918878, -0.06319718, -0.010296748, 0.028707001, -0.03137862, 0.05501524, 0.08120082, -0.01760732, -0.052673355, -0.039618332, -0.0264631, 0.020796815, -0.08668627, 0.031864773, 0.04804468, 0.017533936, 0.013342091, -0.06332694, -0.03830369, 0.044878468, 0.035629123, 0.022432346, -0.00016175464, 0.014975273, 0.014170417, 0.017040672, 0.042309504, 0.017234422, 0.021873204, 0.024364958, -0.052925482, -0.012100046, -0.0051521515, 0.0037834586, -0.047346715, -0.016517526, -0.03736132, 0.032871738, -0.018544901, 0.02364195, -0.031059666, 0.012833108, 0.03167236, 0.004275833, -0.0034695035, 0.01584351, 0.00019997139, 0.0073327282, 0.002535526, -0.021817321, -0.01182853, -0.033729397, 0.030604955, 0.018299604, -0.0059135985, 0.07097473, -0.007350004, 0.03886733, -0.023489973, 0.049630787, 0.0147082005, 0.0027446907, 0.018918183, -0.015047625, 0.033757836, -0.027043685, -0.013461518, 0.04616139, 0.005449887, 0.006957227, -0.009689392, 0.033836603, 0.034434184, 0.002631179, 0.05875426, 0.02598906, 0.030995237, -0.007216745, 0.06342559, 0.01194118, 0.030058365, 0.044544734, 0.032254275, 0.0015959939, 0.0061201937, -0.0011305049, 0.048592158, 0.019535093, -0.0024283607, -0.022948718, -0.003349979, 0.007966527, -0.02256477, -0.00055547606, -0.04753042, -0.030215234, 0.019277241, -0.014811658, 0.010208761, 0.0381421, -0.016651839, -0.013749144, 0.041441236, 0.016674738, -0.025448803, -0.02284473, 0.030589178, -0.011788869, 0.013951781, 0.015046292, 0.02728765, -0.04561392, 0.025766091, 0.009705722, -0.021824433, -0.0040576416, -0.0014217548, -0.029053176, 0.012421333, 0.0059796516, 0.0036420343, 0.014442323, 0.07858075, 0.048572604, -0.04245081, -0.014890313, -0.029188713, -0.079705924, -0.014118869, -0.040855933, -0.0008709865, -0.011201953, 0.0046604443, -0.014664901, 0.011208508, -0.042668782, 0.019279685, 0.04088037, -0.045945868, -0.009716832, -0.03033366, -0.040029828, -0.040982578, -0.02820752, 0.029709527, 0.08043826, -0.05419669, -0.032112073, -0.04910497, -0.044136964, -0.004089637, 0.022040403, -0.011781536, -0.013147451, 0.00038283409, 0.045129765, -0.03764528, 0.010047673, 0.052700013, 0.016869975, -0.04162249, -0.006511957, -0.04162782, -0.029984154, 0.002097533, 0.031056888, 0.025551898, 0.022287033, 0.014527699, 0.023365378, 0.0019250578, 0.025746094, 0.0048270314, 0.042898975, -0.0030253448, 0.004415368, 0.012288019, -0.020950003, 0.013217664, 0.028871424, 0.02697836, 0.009785711, 0.059069827, -0.024124993, -0.01538802, -0.00664816, 0.05274906, -0.04583166, -0.009025375, 0.05921908, 0.048487283, -0.053272374, 0.03292418, 0.021738667, -0.058775593, -0.00037461304, 0.049404487, -0.026504206, -0.0036843617, -0.031409726, -0.05249071, 0.011202925, -0.031013146, 0.04008404, 0.072163895, -0.001945166, -0.03118576, 0.0091269165, -0.03174771, -0.004480248, -0.015383132, -0.032845076, 0.045773003, 0.022679422, -0.02536348, 0.029611988, -0.059723232, 0.026109153, -0.025203506, -0.02530038, -0.031453278, -0.0455206, -0.00026040716, 0.009022376, -0.0075944685, 0.03467415, 0.034639485, 0.005173482, -0.035439372, -0.015398019, 0.01965873, 0.016607735, 0.018071966, -0.04300007, -0.00705188, -0.002173911, -0.013188891, 0.0011180622, -0.009385323, -0.013509178, -0.005194368, -0.060716648, -0.057667304, 0.055949327, -0.00059324846, -0.018281162, 0.010341965, 0.061625402, -0.014534809, -0.07435736, 0.024574706, 0.013155451, 0.004277499, 0.019165259, 0.013419857, -0.025995169, -0.07066988, -0.0692612, 0.045922317, -0.02396368, -0.032150872, -0.05827433, -0.035780437, 0.025036417, -0.028722554, 0.021644901, -0.018095411, -0.013391084, -0.030156573, 0.025729652, -0.009946799, 0.013547617, -0.012181424, 0.04681019, 0.040819936, -0.014911144, 0.000982526, 0.0048908554, -0.021915976, 0.028546026, 0.007290512, 0.0426499, 0.0030342324, -0.01773213, -0.04799669, -0.011637223, 0.0033604081, 0.016750019, -0.033394333, -0.020907674, -0.073737, 0.01728486, 0.006406194, 0.0062582153, -0.03491767, -0.009965685, 0.025523905, 0.007864096, -0.015122947, -0.012515431, 0.026114484, -0.055878226, -0.010879999, -0.033731397, 0.0082681505, -0.06797428, -0.0192608, -0.025599891, -0.010221204, 0.01782856, -0.007087208, 0.0027426074, 0.014870761, 0.0030231231, -0.008021074, 0.0068656844, 0.077613786, 0.032732204, 0.011826753, 0.046057187, 0.008081511, 0.07038815, -0.0042486144, -0.058907405, 0.08599658, -0.0069874446, -0.0364019, -0.0359553, -0.0063352603, 0.017309522, 0.030396095, 0.020867236, -0.023935242, 0.021686396, -0.023957461, -0.004772317, 0.0018579563, -0.026115818, -0.0149276415, 0.06877949, -0.0012264912, -0.004589121, -0.03693805, 0.047316782, 0.0040758615, 0.016864141, -0.0025708543, -0.013037245, -0.029232705, 0.028962078, -0.054805934, 0.04529752, 0.03651511, 0.03365385, 0.012150983, 0.014163307, -0.030203957, -0.024150323, -0.023823258, 0.056927856, 0.029126497, 0.02980196, -0.036860503, 0.009564409, 0.014620797, -0.012681074, -0.009498196, 0.034074236, 0.04291119, -0.033433437, -0.011693883, 0.03811988, -0.015495116, 0.074676424, 0.030679164, 0.0033905704, 0.035045654, -0.05188413, -0.067046404, -0.023170019, 0.022525221, -0.0058306656, -0.01878309, -0.006858685, -0.03147994, 0.038680688, 0.030770708, 0.031663913, 0.016015487, 0.024707798, 0.07081298, 0.004902854, 0.037088916, 0.009088033, -0.008147723, 0.032403365, 0.003047564, -0.008323697, -0.08788075, -0.008431057, -0.006022027, 0.010751351, 0.028612794, 0.02148959, -0.010810898, 0.025441691, -0.047225688, -0.0150948465, 0.0050250585, -0.019019945, -0.01623101, -0.04404881, -0.01660429, 0.03192032, -0.046304483, -0.033129483, -0.06114325, -0.023903245, 0.0068354663, -0.0019328344, -0.031398173, 0.0034883898, 0.0021674675, 0.028391272, -0.0049812873, -0.012637081, -0.04592143, 0.027941559, -0.0022152385, -0.017176209, -0.043177374, 0.024183206, -0.011684106, 0.0031965426, -0.037422203, -0.023676611, -0.023344103, 0.023766201, 0.002550746, -0.015444902, 0.012154705, 0.024715409, -0.00018136295, -0.026300235, -0.055714693, 0.054833043, -0.03608928, 0.00216058, -0.00051903684, 0.0058871577, -0.07288157, -0.025641887, 0.0041522947, 0.006308653, 0.016577628, 0.009202627, 0.0336243, 0.0025271939, -0.013739367, -0.00085809943, -0.018433096, -0.009479088, -0.0311351, -0.006788647, 0.0019952701, -0.055174325, -0.03253312, 0.023246784, -0.06000208, -0.05248138, 0.004194733, 0.025080856, -0.026198834, -0.029751299, 0.04657889, -0.028673675, 0.0006212444, 0.006750145, -0.058189005, 0.01264508, -0.015953718, -0.055096116, 0.016283004, -0.0390473, 0.04167937, -0.0025666882, 0.047086596, -0.018835083, -0.011633891, 0.0037132464, -0.0108725, 0.0059044887, 0.003048008, -0.0056565236, -0.008232267, -0.010240368, 0.01579685, -0.03948621, -0.055908, -0.0008443236, -0.01518716, -0.012253802, -0.0075009265, 0.016636731, 0.037197344, 0.027774915, 0.004158516, 0.026256688, 7.998855e-06, -0.004005649, 0.030040145, 0.018821632, -0.011672996, -0.031142654, 0.032405585, 0.00096519524, -0.023789484, -0.036097057, -0.013098125, 0.047070596, 0.026569808, 0.008694089, 0.049563922, 0.041028798, -0.025898516, -0.0017317522, -0.0063442034, 0.034344863, -0.08239888, -0.008282759, 0.072444744, 0.0019979363, -0.003451395, -0.00627999, -0.04279343, 0.027600717, -0.04468161, -0.010971097, -0.04755231, -0.031618588, -0.0121947, 0.008947386, 0.017014066, 0.004164293, 0.005936706, 0.0061946693, 0.021774884, 0.015510669, 0.02074192, 0.004574012, 0.00077855523, 0.048593044, -0.0007536699, 0.010935324, 0.050544765, -0.01440505, -0.020283986, 0.020997884, -0.023381542, 0.015321141, 0.034167, -0.020401524, 0.039322373, 0.030633837, -0.054369107, 0.001618435, -0.02249278, -0.0036616982, 0.004241171, 0.011596562, 0.039967615, 0.025375925, -0.009149357, -0.033356115, -0.016151467, -0.038346514, -0.0025560786, 0.009059926, 0.0020485958, -0.015195325, -0.021358721, 0.01241139, 0.014604132, -0.015983045, -0.078830495, 0.04842818, 0.009767824, 0.06425747, 0.026050162, -0.045012224, 0.04779227, 0.028152416, -0.02253233, -0.015949717, -0.010026815, -0.033624258, -0.024524268, 0.029049175, -0.00737139, 0.038149208, 0.06712284, 0.01037807, 0.019585641, -0.07443157, 0.007438047, -0.025636332, -0.021644901, -0.04344934, -0.049026765, 0.0027609381, -0.0017384179, -0.030486304, -0.004114661, -0.0661772, 0.07156221, -0.0009914137, 0.019940257, -0.0120203905, 0.0005394783, -0.00879252, -0.007935753, -0.0025463023, 0.06998154, 0.03260289, 0.04471849, -0.031168872, 0.009202239, -0.050015956, 0.0077677774, -0.014178665, 0.0026587306, -0.021083206, 0.0031346625, -0.010185431, 0.015588659, 0.030980011, 0.043133825, -0.030056143, 0.04553193, 0.013193667, -0.038579367, -0.025845189, 0.024192426, -0.0221195, -0.0023809928, -0.0127370665, -0.009165799, 0.029259814, -0.05628439, 0.062785126, 0.010517606, 0.008509123, 0.018441806, -0.023519745, 0.01527337, 0.017888106, -0.014377498, 0.003975431, -0.0062501053, -0.020484181, 0.00075011485, 0.0169238, -0.006860796, 0.032565117, 0.008182829, 0.055060565, 0.010753587, -0.0278769, -0.016813593, 0.057446003, -0.011739653, -0.026410887, -0.01152324, -0.001913504, -0.025049971, -0.019514985, 0.0069736685, -0.009303779, 0.0018912848, -0.056763433, -0.0056688553, 0.016298058, 0.05352123, 0.024057891, 0.056152854, -0.0009278672, -0.028735887, -0.023599735, -0.008825848, 0.03885844, 0.021450263, 0.004579456, 0.030106802, 0.017496163, 0.04292008, -0.0010211872, 0.009413653, -0.060083404, 0.046636883, 0.03191832, -0.01332476, 0.015490672, 0.0004310494, 0.016645618, -0.01124128, -0.0061417874, 0.00435771, -0.033392776, 0.053795855, 0.026993914, -0.061367217, 0.016276782, 0.024460888], [-0.05007997, -0.085527524, -0.029385837, -0.03092635, 0.016658524, 0.044325422, 0.014592333, -0.011487696, 0.03083388, 0.025807044, 0.008734495, 0.006459877, -0.04423615, -0.014647667, -0.014433214, 0.027980587, 0.030093135, -0.038251165, 0.043997597, 0.040873777, -0.02774486, 0.027351985, -0.03534131, 0.012059977, -0.027621035, 0.04024149, 0.031003082, 0.016160637, -0.004026387, 0.0068841083, -0.011949801, -0.049264953, 0.005275011, -0.004174929, 0.006475862, 0.0037741845, 0.0046038334, -0.0030662713, -0.043368507, -0.043970544, -0.061817285, 0.03673328, -0.029413382, 0.05585001, -0.010215493, 0.03597286, 0.024613295, 0.04001597, -0.011585374, -0.04111774, 0.013256679, -0.008572119, -0.05931469, 0.012014419, -0.012202618, 0.028261438, 0.043552015, 0.021472752, 0.019302653, 0.0049082967, -0.0117579745, -0.01412949, -0.05418899, -0.0025321085, 0.013798836, 0.0066126003, -0.0072718193, -0.0144312475, 0.0019472839, -0.03963773, -0.018882604, 0.028723052, 0.036080085, -0.0073863, 0.008829917, 0.017347008, -0.06779046, -0.0022291213, -0.00076238695, 0.0020527884, 0.008679038, 0.009914965, 0.026520245, -0.047012962, -0.054372456, 0.025647681, 0.004351508, -0.0016782351, 0.054950885, 0.005633302, -0.016849244, 0.0035055662, 0.058286697, -0.010932137, -0.0025894104, 0.0040411428, 0.02565555, 0.034385126, 0.020364095, 0.023843037, 0.033084642, -0.03781341, -0.008074047, -0.008513403, 0.030243522, 0.010095725, 0.00969953, -0.011261686, -0.0002774105, 0.036694914, 0.008556564, 0.013026487, 0.015314387, -0.07241594, 0.005486942, 0.0027150812, 0.006968463, -0.011765352, -0.035973843, -0.027698748, -0.003042908, 0.016698733, 0.0041765277, 0.029187124, -0.035921708, -0.011250372, 0.00791702, 0.0108972145, -0.067042835, 0.0070498665, 0.028106993, -0.0004584159, 0.04539141, -0.0045571066, -0.016469156, 0.0052442383, -0.021037946, 0.046421003, -0.004663472, 0.023737287, -0.03524976, -0.017985938, 0.028437527, -0.018546907, 0.024570994, -0.01973992, 0.0063192043, -0.06425644, -0.014934837, -0.016265895, -0.014676686, 0.009355226, 0.008592838, -0.004352492, 0.025056463, -0.043502785, -0.0046800724, 0.026399247, -0.030759117, 0.020115212, -0.0018169403, 0.006598828, 0.032641966, 0.0066972002, 0.008943537, -0.062993824, 0.025195904, 0.0019871248, 0.0053834356, 0.0033367956, 0.08963703, 0.009465034, 0.02722324, 0.024778068, -0.061439537, -0.004176405, 0.019730574, -0.020320348, 0.033750135, 0.035709683, 0.0045998986, 0.028807897, -0.025187789, -0.027765641, -0.03037285, 0.037090372, -0.030046899, 0.010086625, -0.0023530705, -0.0041867034, 0.015630899, -0.007019862, 0.027769515, -0.01760081, -0.032980368, 0.0362365, -0.0526347, 0.014377142, 0.018415948, 0.05786468, -0.0017256998, -0.0077871676, 0.02525501, -0.0080842525, -0.03111621, -0.05340053, 0.024238495, -0.018696679, 0.05044149, -0.021028416, -0.019550553, 0.033179082, 0.043111753, 0.06519146, 0.02380418, 0.03862695, 0.033077266, -0.036177967, 0.05735056, 0.04301633, -0.0018090705, 0.00844651, 0.027481345, -0.021091066, -0.023330025, 0.018904, -0.004519725, -0.0012867125, 0.005028803, -0.015071161, 0.059443805, -0.020945966, -0.040756717, -0.04648052, 0.0072249384, -0.027782364, -0.029736044, 0.051519655, -0.06825921, 0.040003672, -0.02094154, 0.025758842, 0.048407145, -0.022482792, -0.016690863, 0.007054385, -0.04794283, 0.027418386, -0.03186187, -0.0058792336, 0.03184269, 0.0040922966, -0.0440699, -0.0034804193, -0.03064107, 0.0048537, 0.0017665244, -0.021495624, 0.0010329114, 0.042492747, 0.03206157, -0.035685614, 0.0043200287, -0.041456144, 0.018088738, 0.001520839, 0.02548635, -0.025325634, 0.0039019457, -0.03921159, -0.017495058, -0.06636012, 0.026509916, 0.0039742496, -0.020609349, 0.0032295694, -0.00197532, 0.025482414, 0.07181194, 0.04091706, -0.0584136, -0.029425185, 0.044197783, -0.030589918, 0.0532732, 0.0146437315, 0.016049229, -0.050291963, 0.007924713, -0.026784375, -0.0028835442, 0.02232847, 0.023243457, 0.039798565, 0.06572071, -0.017187644, 0.05246403, 0.004826647, -0.078737356, -0.031487443, 0.01829237, -0.023678632, -0.0012512984, 0.024333425, 0.0054901694, -0.040659327, -0.01971877, 0.022743724, 0.024259645, -0.0038384956, -0.049697794, -0.035533138, -0.049542367, 0.03113994, 0.0053512324, -0.016263435, 0.03864564, 0.09702678, -0.015918639, -0.031819575, -0.035744637, -0.025519304, -0.002492575, -0.053282484, 0.027190162, 0.06444186, 0.011271031, 0.00083321513, -0.060806017, -0.025066301, 0.03727925, 0.030246595, 0.0068003684, 0.005975147, 0.021486523, 0.008294002, -0.046615783, 0.016506907, 0.026061337, 0.021568174, 0.02251919, -0.08088582, -0.021073237, -0.006676051, 0.046577416, -0.08548965, 0.017960854, -0.041845698, 0.028014524, 0.010536926, 0.044796873, -0.020367475, 0.0027583651, 0.029393706, -0.023411183, 0.008437748, -0.016767595, 0.0007397613, -0.010732441, 0.016971225, -0.0051035658, -0.019287897, -0.03939229, 0.034941055, 0.019433243, 5.1153704e-05, 0.065960735, -0.0070660976, 0.03589613, -0.00576758, 0.069363445, 0.04815925, -0.023502178, 0.010472737, 0.0041355803, 0.0782455, -0.05799905, -0.0064330706, 0.007463031, -0.016280157, 0.021424733, -0.031419195, 0.06741001, 0.010729489, 0.01729979, 0.063817196, 0.040751304, 0.010408304, -0.03543968, 0.029073011, -0.015308729, 0.036810502, 0.020900225, 0.046316728, 0.018314503, -0.0077360147, 0.037271377, 0.041241203, -0.0001996962, -0.006541772, -0.025677193, 0.025302395, -0.0033947122, 0.004874112, -0.0028429655, -0.041123644, -0.010336984, -3.3446653e-05, 0.0018730125, 0.010796014, 0.051136002, -0.0052213673, -0.009391132, 0.011702394, 0.04033273, 0.0023722686, -0.0027741047, 0.025708672, 0.02611495, 0.020295724, 0.024264317, 0.032184534, -0.06860512, 0.034420542, 0.040524557, -0.011552868, 0.016491415, -0.033631593, -0.059977382, 0.025924109, 0.02068651, 0.056123488, -0.0015198553, 0.071207926, 0.035812512, -0.038353477, 0.020417707, -0.018324832, -0.052767016, 0.017939212, -0.030393172, -0.060894553, 0.012874994, -0.0014903436, -0.03270247, 0.010587341, -0.01980715, 0.023424461, 0.036742426, -0.042866807, 0.016946817, -0.008539226, -0.0024996456, -0.0188777, -0.043276526, 0.041369576, 0.064835355, -0.039768074, -0.036379445, -0.026506472, -0.035755947, -0.00808622, -0.005331052, 0.0025091139, -0.004390119, 0.007958828, 0.049556136, -0.054191448, 0.026660578, 0.021734422, 0.038680073, -0.036821324, -0.019133454, -0.051044513, -0.031882774, 0.005040608, 0.02436687, -0.0046702963, -0.017241258, 0.009111754, 0.013970296, 0.023198206, 0.047177486, 0.0181576, 0.024644528, 0.012739733, -0.04932791, 0.0048576347, -0.043222666, -0.024813237, -0.015657952, 0.03561872, 0.025285669, 0.058075197, -0.031945243, -0.027496101, 0.014154821, 0.04963139, -0.043558363, 0.0021690216, 0.05864576, 0.04262678, -0.0695651, 0.026060352, -0.002452565, -0.06549248, 0.02737953, 0.03909914, 0.00322711, 0.022924239, -0.009057649, -0.051657375, -0.007979486, -0.02561817, 0.048388455, 0.051437017, 0.020436889, -0.041398842, 0.0097821625, -0.00927456, -0.029474003, 0.0033363036, -0.0006158119, 0.03276247, -0.017758206, -0.02143783, 0.040151726, -0.036446176, 0.0042570704, 0.011967508, -0.023314286, -0.012657345, -0.053330686, 0.010102857, -0.015821742, -0.026185533, 0.0048979055, 0.0120949, 0.007283501, -0.012767768, -0.021092542, 0.03466758, 0.021068195, 0.018176977, -0.038255103, -0.004567497, -0.010518481, 0.04579105, 0.016915645, 0.020602155, -0.02493196, -0.010272057, -0.08374255, -0.07489296, 0.037854727, -0.019294785, -0.025812946, 0.033618562, 0.034894697, -0.015343899, -0.04095641, -0.0011052152, 0.0316848, 0.017549902, -0.0044326656, 0.015770465, 0.00033283723, -0.082644716, -0.07427518, 0.022610677, -0.025280751, -0.034949787, -0.07111939, -0.03694478, 0.024569519, -0.043271117, 0.033081938, -0.038321998, -0.04061506, -0.0018631753, 0.01214212, -0.020770371, 0.009273577, -0.0060705673, 0.018755702, 0.016983522, 0.00021574322, 0.0015546547, 0.041833896, -0.015763702, 0.04262432, 0.005933092, 0.024686089, 0.011576969, -0.034518912, -0.012569055, -0.032538675, 0.011111175, 0.019055247, -0.062344562, -0.04301633, -0.060393833, -0.0038050485, -0.020501817, 0.050183263, -0.01961056, -0.038919855, 0.04152107, 0.002312, 0.023880912, -0.026513359, 0.03496651, -0.03262721, -0.033350248, -0.005955472, 0.014086206, -0.018806858, -0.0132979965, -0.010474705, -0.0059630955, 0.014944752, 0.010513931, -0.011639066, 0.046207286, 0.00077419163, 0.024351131, 0.014580773, 0.053416274, 0.014498142, 0.009756586, 0.04482835, -0.0047833635, 0.048521258, -0.0039473814, -0.057291165, 0.086878665, -0.008391667, -0.035110623, -0.012845974, 0.009916196, 0.01257004, 0.045676816, -0.0012589222, -0.019574163, 0.015330372, 0.011883892, 0.019513171, 0.020098241, -0.023594892, 0.03483764, 0.046020135, -0.025963949, -0.010745014, -0.05593461, 0.03649817, 0.013730343, -0.013422929, -0.0014373454, 0.003034054, -0.046698418, 0.044395514, -0.0629466, 0.04866734, 0.03176104, 0.0014864088, -0.012560203, 0.040928867, -0.020369995, -0.01879911, -0.014353533, 0.023145085, 0.006859023, 0.021710813, -0.010301078, -0.013318654, -0.0055635804, -0.039342612, -0.0079769045, 0.0006460615, 0.030298734, 0.00850332, -0.018039275, 0.008552014, 0.010210083, 0.011067088, 0.0154163875, -0.018420253, 0.03656039, -0.063759156, -0.035189208, -0.008078842, 0.029527001, 0.025666863, -0.033360086, -0.017031234, -0.012197208, 0.051665243, 0.038450863, 0.0152575765, 0.042650387, 0.0419726, 0.03998744, 0.035321143, 0.024488915, 0.0075674285, -0.0035020614, 0.042005062, -0.01674792, -0.03432955, -0.057787947, -0.023697939, 0.019322328, -0.013296029, 0.06162841, 0.051354386, 0.005460166, 0.03521859, -0.054301627, 0.0042998623, 0.006366669, 0.018435009, 0.01333636, -0.06149856, -0.04174536, 0.04077934, -0.017977577, -0.040381916, -0.054604612, 0.001842886, -0.015693612, -0.016509736, -0.0053849113, -0.013960536, 0.032887407, 0.005438032, 0.015422842, -0.019302102, -0.055309944, 0.007204803, 0.012687902, 0.0010907052, -0.037875384, 0.021614408, -0.010744, -0.006764217, -0.07091084, -0.0019272405, -0.0052238265, 0.008918452, -0.013909381, 0.0029035108, 0.0422746, 0.030556468, 0.025669077, 0.0025773598, -0.051026806, 0.027093789, -0.040176563, 0.011259718, 0.025824752, 0.009296033, -0.059402242, 0.020260803, 0.00924013, 0.00538196, 0.022487955, -0.0154464515, 0.0061664805, -0.00856431, 0.002039754, 0.007956369, 0.014564543, -0.014107111, 0.01547498, 0.0084537035, 0.008595298, -0.06815247, -0.032108158, 0.024360968, -0.051763617, -0.050894987, 0.021711798, 0.023827912, -0.03825953, -0.052917894, 0.049347587, -0.0044975914, -0.010535696, 0.025916731, -0.04795242, 0.020948919, -0.021281907, -0.043010183, 0.028104534, -0.017110914, 0.06826265, -0.0020274576, 0.038491197, -0.054356717, -0.008428065, -0.01584855, -0.03183285, 0.0445234, -0.0027682025, -0.0033862279, -0.00085178297, 0.017401114, 0.015725829, -0.03910504, -0.07154436, -0.026354488, 0.015820637, 0.010682271, 0.02441409, 0.031119158, 0.02413914, 0.02212693, 0.004242806, 0.054132424, -0.013673779, 0.0084743, 0.009350061, 0.011503682, 0.008168854, -0.015768867, 0.023704201, 0.014238438, -0.003595331, -0.034790423, 0.019647203, 0.041462045, -0.0019959782, -0.010809172, 0.06196386, 0.027571848, -0.007379168, -0.03615977, 0.0043028137, 0.010128434, -0.052580107, -0.008862749, 0.04358689, 0.0058465246, -0.0075812005, 0.020493945, -0.023083232, 0.033335492, -0.051317006, -0.034922242, -0.048261553, -0.03164988, 0.0030599693, 0.02055641, 0.0026742567, -0.019231826, -0.010734408, 0.005964817, 0.044796873, 0.03437037, 0.02843064, 0.030727146, 0.011521388, 0.021429466, -0.043130443, -0.0052447305, 0.06624405, 0.0053376923, 0.04251365, 0.00028798552, -0.024280425, 0.006488989, 0.036521286, -0.024903493, 0.03085214, 0.010088347, -0.052566335, -0.011008867, -0.025524715, 0.021121563, 0.010239103, -0.017413164, 0.040005147, 0.05494056, -0.0029429982, -0.021056574, -0.0055718194, -0.0221016, 0.00014872693, 0.04065195, -0.0025286654, -0.0051316023, -0.030570887, 0.010636035, 0.0393372, -0.028162083, -0.045333616, 0.04632214, -0.004531038, 0.052106936, 0.027475443, -0.025217794, 0.08201119, 0.016039515, -0.027520694, -0.026379574, -0.013136665, -0.034558263, -0.03050335, 0.027051948, -0.029446827, 0.03155151, 0.04322095, 0.06390278, -0.00082239415, -0.0759362, 0.004033273, -0.044965584, -0.034294624, -0.046930082, -0.011183479, -0.00250149, 0.017768042, 0.05409701, -0.00044759494, -0.007554517, 0.06237604, 0.009571645, -0.021042865, 0.007566814, -0.005575016, -0.032203592, 0.011172166, -0.03203009, 0.06761634, 0.022378761, 0.022958178, -0.015184597, 0.023567103, -0.032192405, 0.0075776344, 0.002887725, 0.000615566, -0.014189252, 0.028215203, -0.016945157, -0.00090994575, 0.036914285, 0.018664708, -0.023461845, 0.044869673, -0.018435992, -0.0101053165, -0.01461794, 0.049220197, -0.050980568, 0.03863974, 0.025811473, 0.020345831, 0.034733366, -0.05074989, 0.07537351, 0.0077609764, 0.017599335, 0.023589237, 0.010010879, 0.012964021, 0.014329124, -0.03271476, -0.008975754, 0.008940217, -0.0012864665, 0.008196398, 0.007845454, -0.015720911, 0.019732542, -0.00074172876, 0.038073607, -0.028300786, -0.0680787, -0.032282416, 0.059779007, -0.011825852, -0.011770763, -0.021287812, 0.018528463, -0.027608246, -0.0051244698, 0.0072844843, -0.028339647, -0.007545233, -0.056703884, 0.030151175, -0.0011308535, 0.028868398, 0.004966029, 0.025705721, 0.022090284, -0.0215967, -0.021332879, 0.005382944, -0.010445931, 0.053718153, 0.0034095913, 0.05368237, 0.04579831, 0.020409344, 0.022870624, -0.0022695768, -0.04638707, 0.032433417, 0.045186184, -0.010580947, -0.02886151, 0.009705432, 0.040928867, -0.019302653, 0.015583067, -0.010969519, -0.0028928898, 0.053660236, 0.016536666, -0.051035658, -0.0067677824, 0.009999566], [-0.010332934, -0.08289483, -0.029978992, -0.019340003, 0.012586617, 0.020738628, 0.041661616, -0.021304654, 0.029279795, 0.03560192, 0.012621158, 0.04655773, -0.06756574, -0.022154015, -0.029061304, 0.03164538, 0.021695573, -0.039476298, 0.033921443, 0.04988373, -0.014441232, 0.020409565, -0.0027984793, 0.03623021, -0.031020056, 0.026144484, 0.0038862317, 0.007684985, 0.019769216, -0.018676559, 0.0008335961, -0.05853159, -0.0001352026, 0.010299822, 0.030811068, 0.029973079, 0.022200616, -0.014501527, -0.041037004, -0.03144876, -0.04193141, 0.0036261482, -0.026334155, 0.04515583, 0.0157346, 0.02321908, 0.003704684, 0.035625733, -0.00010566855, -0.02535432, 0.036345653, 0.019680716, -0.047754824, 0.023286322, -0.011349252, 0.02348877, -0.021531042, 0.050915483, 0.003342151, -0.031383354, -0.0049609034, 0.0038182726, -0.046453286, -0.00031424643, -0.0063239667, 0.03225926, 0.029022725, -0.014557222, -0.0141376145, -0.055027768, 0.0131560415, -0.0025797843, 0.02058309, -0.01671321, 0.07031271, 0.008476376, -0.060141552, 0.010588929, -0.020634696, -0.029759698, -0.022599172, 0.009739902, 0.0028430359, -0.051451795, -0.070721485, 0.008685055, -0.015583351, 0.0227868, 0.04887896, 0.017347628, -0.028418504, -0.01685674, 0.055462707, 0.016196832, -0.010982171, 0.021653675, 0.00040826484, 0.04356896, 0.034539104, 0.021314695, 0.009444511, -0.013442797, -0.022683788, -0.027219564, 0.0071055456, 0.0053382036, 0.013938029, -0.033660237, -0.008347611, -0.009494866, -0.019016251, -0.0124182, 0.006422686, -0.073414505, 0.022466319, 0.009293467, 0.039157454, -0.019964611, -0.03453338, -0.022209201, -0.035997618, 0.009057655, 0.008009655, 0.022509739, -0.014436838, -0.032120787, 0.013362932, 0.0001504295, -0.045298185, 0.006845616, 0.045041576, 0.0084142415, 0.031448964, -0.0050512427, -0.047612164, 0.025960537, -0.032095853, 0.031444672, -0.009659372, 0.012603581, -0.034140956, -0.02500727, 0.006732129, 0.004677213, 0.034012396, -0.0094995415, 0.030281704, -0.017591873, -0.026321894, -0.006355238, -0.0124087995, -0.0060637803, 0.010745081, 0.012603274, 0.0047074626, -0.038523033, 0.00850172, 0.019248538, -0.014539339, 0.0149661, -0.0023153063, -0.011519303, 0.040325735, 0.0180636, 0.0015182956, -0.038235255, -0.013710341, 0.008697115, -0.0124541735, 0.049260553, 0.08417839, -0.004373084, -0.0063897795, 0.021104893, -0.052220702, -0.00018619739, 0.019230142, -0.038836155, 0.020085199, 0.05030232, -0.009205785, -0.004302212, 0.008108988, -0.006858032, -0.0061661787, 0.05490023, -0.028370883, -0.010989529, 0.0023512787, 0.02208207, 0.0036017238, -0.025119683, 0.03734903, 0.009557996, -0.018102126, 0.038514655, -0.038966145, 0.008472697, 0.005503758, 0.019591808, 0.022675205, -0.0041237306, 0.044329286, 0.004230421, -0.050006364, -0.038970236, 0.031307425, 0.0069925194, 0.031675015, -0.04888141, 0.015995603, 0.02610496, 0.041754816, 0.04030448, 0.0107863685, 0.036144596, 0.042487342, -0.021407489, 0.030472143, 0.06281086, -0.031051021, -0.010814982, 0.063664384, -0.03378328, -0.051482048, 0.02671677, -0.0006368727, 0.024352001, 0.02351442, -0.006924867, 0.070767276, 0.0052434695, -0.026053736, -0.04077702, -0.0040773344, 0.0019335608, -0.055044115, 0.037186746, -0.053115714, 0.012920586, -0.008622308, 0.022377716, 0.027281698, -0.020825084, -0.019547775, -0.0007419281, -0.0427743, -0.011051868, -0.028389685, -0.016597116, 0.0490253, 0.014095408, -0.013195182, -0.031639863, 0.0011994761, -0.01586418, -0.0006105067, 0.02040895, -0.007869752, 0.037132174, 0.013306471, -0.044577822, -0.013132639, -0.038235255, 0.050282698, -0.0031385806, 0.04486233, -0.01123049, 0.0086514335, -0.037867356, -0.014251866, -0.060104355, 0.020647267, 0.031007677, -0.038301885, 0.032463342, 0.02557833, 0.012038244, 0.054159526, -0.011099898, -0.044639952, -0.012374463, 0.008795424, -0.021743182, 0.009356061, 0.0064573297, 0.012762798, -0.042685598, -0.019623693, -0.038308833, 0.000196008, -0.0018358122, 0.015535116, 0.04643039, 0.06660757, -0.036276404, 0.0427743, -0.012472159, -0.06464871, -0.0012148818, 0.01186431, 0.010261551, 0.009304555, 0.022070216, -0.015439055, -0.010935162, -0.050284334, 0.035438, 0.028154843, -0.0060609193, -0.040376425, -0.007971946, -0.040626388, 0.014317987, 0.0049997373, -0.018940091, 0.02147647, 0.0754453, -0.016448244, 0.0107696075, -0.02467371, -0.006856103, 0.034017097, -0.037951566, 0.016346127, 0.06831952, 0.037526436, 0.02162649, -0.061620504, -0.058150817, 0.05778292, 0.057455894, 0.030565599, 0.023780126, -0.0056411065, 0.03721822, -0.019464677, 9.340527e-05, 0.026893668, 0.017419573, 0.0050451113, -0.06678988, -0.034272585, -0.020661166, 0.038926903, -0.08333467, 0.0015296392, -0.07010015, 0.012832086, 0.015761169, 0.011830381, -0.0287071, 0.027392477, -0.0025589368, -0.030101078, 0.007276005, 0.019419918, 0.0006556765, -0.0020755592, -0.018118476, -0.016250985, -0.0040183063, -0.028635563, 0.055331282, 0.009684512, -0.016527828, 0.034699347, -0.00033519618, 0.042607524, -0.021924486, 0.06644079, 0.010849267, -0.04038705, 0.0010884678, 0.014805452, 0.030977031, -0.06924336, 0.011818086, 0.017041046, -0.0056828014, 0.045444425, -0.028738372, 0.034970924, 0.011690478, 0.04405786, 0.050686568, 0.060086776, 0.02365085, -0.037954018, 0.0417867, -0.020760702, -0.0029983707, 0.04855603, 0.029254451, 0.025551759, 0.0050312127, 0.035203774, 0.05821131, 0.03203249, 0.0034909456, -0.024211077, 0.01935942, 0.007188732, -0.006364488, -0.0040109083, -0.05249826, -0.03762536, -0.0043223957, 0.0014781334, 0.0034288117, 0.025319166, -0.020214986, -0.009389479, 0.02253663, 0.026741296, -0.012048259, -0.008359108, 0.007474057, 0.021542486, 0.007892234, 0.044088516, 0.041211348, -0.047391832, 0.020905407, 0.034922943, -0.014341491, 0.011038582, -0.02804284, -0.0510701, 0.027832728, 0.0014382778, 0.031573027, -0.0023545998, 0.10232803, 0.03870126, -0.0117384065, -0.0018478711, 0.01123712, -0.0881664, -0.025455236, -0.039119847, -0.040686686, -0.005795419, 0.011447359, -0.038993943, 0.021600122, -0.039080605, 0.03889093, 0.02308781, -0.040555876, 0.017489474, -0.03058522, -0.036706433, -0.024378574, -0.048950087, 0.05036527, 0.062886074, -0.057697482, -0.03169239, -0.051701147, -0.05559515, 0.017618239, 0.049141396, -0.0020136298, -0.017992115, 0.019542754, 0.027378784, -0.058311053, 0.02407526, 0.010746513, 0.02135363, -0.025749607, -0.0021419853, -0.056196664, -0.034306306, 0.004538229, 0.02811928, 0.00900362, -0.030188913, 0.027903855, 0.028416766, 0.025640871, 0.03733513, -0.005968332, 0.010849727, 0.024724295, -0.030291924, 0.004408443, -0.0077897855, -0.036940254, 0.012665459, 0.030727576, -0.0061766026, 0.06870704, -0.035210315, -0.021554342, -0.0066089085, 0.028959313, -0.027060142, -0.012964734, 0.05124414, 0.040069025, -0.06044486, 0.023947723, 0.0050408193, -0.091094874, 0.035566766, 0.052985523, -0.021689441, 0.0046168165, -0.053341974, -0.02015924, 0.0059785508, -0.036038086, 0.052140173, 0.008397277, 0.0058710426, -0.063628405, 0.014554462, -0.008102959, 0.006022903, -0.010520255, 0.0071355905, 0.009167002, 0.003863749, -0.02136712, 0.02160462, -0.05565156, 0.04130598, -0.009833613, -0.025078807, -0.05136963, -0.009790999, 0.0066589583, 0.017584104, 0.0019901763, 0.018486477, 0.0074086534, 0.0040877583, -0.012288827, -0.05230123, 0.00216084, 0.030237965, -0.006538369, -0.025633719, -0.0038317114, -0.030380627, 0.012419427, 0.006580422, -0.021733792, -0.010358482, -0.001568064, -0.045261294, -0.065476894, 0.028279928, -0.026401194, -0.019809276, 0.047467865, 0.020513596, 0.024000045, -0.045064677, 0.0054887095, 0.016929656, 0.022357482, 0.010157262, 0.03036632, 0.019303212, -0.072928876, -0.06571889, 0.059242655, -0.006733764, -0.019964611, -0.03674404, -0.03106124, -0.005087624, -0.036936983, 0.046932373, -0.002957902, -0.018393278, -0.008370119, -0.005298961, -0.010565219, 0.0040904153, -0.013343261, 0.029221341, 0.0065228357, -0.022349002, 0.013225533, 0.015624844, -0.033417832, 0.016257014, -0.0061766026, 0.026560618, 0.024511067, -0.04926485, -0.039132927, -0.04375945, -0.023281418, -0.010236769, -0.05435492, -0.011970336, -0.037475087, 0.0114901485, -0.023984922, 0.008601793, -0.0118890405, -0.015883598, 0.042555198, 0.0035741315, 0.00822784, -0.010012453, 0.0059746676, -0.046735954, -0.021174587, 0.01314296, -0.0051174643, -0.045760002, -0.022992823, -0.03343214, -0.021765064, 0.022734476, -0.011815256, -0.009056837, -0.0155653665, -0.0355357, 0.0015188066, 0.012265319, 0.098479, 0.0019179762, -0.011813212, 0.032646473, 0.007786362, 0.08097359, -0.002784172, -0.07672886, 0.065282315, -0.0064355624, -0.067222364, -0.03692881, -0.021987848, 0.01669093, 0.022661716, 0.01269249, -0.018860916, 0.023577577, 0.0276545, 0.004996467, -0.025292594, -0.0033076096, -0.013335858, 0.054975443, -0.026671806, 0.01927378, -0.062210772, 0.038848013, -0.01857559, 0.0070579234, -0.0045831944, -0.011018552, 0.0006311499, 0.050131448, -0.028077994, 0.024297226, 0.013691027, 0.012495459, -0.020661939, 0.01392454, -0.020401286, -0.033460345, -0.031910677, 0.04799764, 0.0043632733, 0.02312639, -0.007370228, -0.0023246827, -0.022482466, -0.019300759, -0.02663379, 0.0024424356, 0.00852318, -0.04108851, -0.04605667, 0.005716423, -0.002067997, 0.022081865, 0.02200849, 0.008131368, -0.0004919617, -0.012971274, -0.058381364, -0.021488119, 0.037947476, -0.009231793, -0.015187657, -0.025703007, -0.015609514, 0.049096428, 0.02166839, 0.029487453, 0.0352888, 0.054214302, 0.061875578, 0.01009104, 0.010669867, -0.02134464, -0.008389306, 0.031721003, 0.014334134, -0.049210068, -0.097839676, 0.009943063, 0.014497643, -0.006786905, 0.038755216, 0.020949762, 0.006833199, 0.025278084, -0.02096703, 0.026278561, 0.0058929124, -0.005441215, 0.013712386, -0.083004385, -0.017909287, 0.038266733, -0.025994873, -0.049384616, -0.033348545, -0.01727502, 0.020860648, -0.026778497, -0.0209702, -0.009033026, 0.016432788, 0.02110428, 0.0029824283, -0.027691904, -0.054001737, 0.03365492, 0.01773341, 0.0018150669, -0.008575299, 0.0015846194, -0.012714155, 0.012207476, -0.044460095, -0.034393378, -0.0061460976, 0.043881267, 0.014193514, 0.00861863, 0.048024617, 0.028225716, 0.008285784, 0.006148806, -0.031652328, 0.048113633, -0.04974066, -0.00048889586, -0.001004771, 0.00021716215, -0.06782, -0.0015750133, 0.014236334, -0.026043108, -0.009859699, -0.04698388, -0.00049625384, 0.012505066, 0.008810754, -0.018150669, 0.009759727, 0.0025008905, -0.030746482, -0.0152316, -0.010682947, -0.07740252, -0.025196124, -0.0057057953, -0.02187196, -0.042254746, -0.0014110941, -0.0014384821, -0.027181959, -0.037851006, 0.044808626, -0.033270266, 0.003141723, 0.021253891, -0.0652721, 0.01573557, -0.031367414, -0.054617353, 0.039761625, -0.051708736, 0.030737897, -0.01052189, 0.023239722, -0.028313449, -0.01725688, 0.018710487, 0.020390147, 0.0350536, 0.013603242, 0.015945936, 0.004850125, 0.021610292, 0.016995264, -0.053984568, -0.085620545, -0.025535407, -0.015666742, 0.00032988208, -0.0021526136, 0.0341336, -0.00022607858, -0.019325593, -0.003927927, 0.030232651, 0.015314991, -0.00024741158, 0.04373411, 0.008057994, -0.001296637, -0.03790333, -0.0064265914, -0.013308924, -0.021737063, -0.03172509, -0.008338618, 0.05234129, 0.016167901, 0.023166962, 0.06912235, 0.015006569, -0.020792179, -0.025541745, 0.006684507, 0.019877134, -0.09359658, -0.005538912, 0.061725147, 0.016229218, 0.01283883, 0.032935273, -0.0216782, 0.015155363, -0.0573071, 0.0067142453, -0.058896422, -0.033410065, -0.014258918, 0.0051726494, 0.0037329409, 0.030959047, -0.008711831, -0.039945573, 0.061288577, 0.05128706, 0.031025268, 0.043626193, -0.01737706, 0.064537525, -0.0128355855, 0.0022110685, 0.043344952, -0.009774648, 0.012047033, 0.041039456, -0.011065357, 0.014941484, 0.037352297, -0.022986487, 0.006770554, 0.03553754, -0.077558264, 0.008838551, -0.010691531, 0.029967152, 0.00037934398, -0.015499145, 0.027797574, 0.009738675, -0.01572479, -0.04191669, -0.023027161, -0.0075315926, -0.017688343, 0.0074758963, -0.005452533, 0.004519834, -0.019811116, 0.015011067, 0.014663504, -0.0027874424, -0.08210181, 0.058484785, 0.0066969744, 0.051849127, 0.03324349, -0.041223407, 0.054118652, 0.02830037, -0.028037116, -0.03477374, -0.011658287, -0.025755329, -0.039036456, 0.027821282, -0.02165408, 0.036027048, 0.049940653, 0.04304573, -0.0011993482, -0.055959776, -0.010127013, -0.03801002, -0.029242495, -0.045162037, -0.021519594, 0.011882295, -0.0006055886, 0.031843636, -0.007907257, -0.028086169, 0.0727578, -0.012126131, 0.008670135, 0.0059934715, 0.0086058555, -0.0147159295, 0.0029016952, -0.030445622, 0.051980957, 0.0119854985, 0.016280724, -0.023810988, 0.0053820955, -0.06201293, 0.0075975074, -0.022414917, 0.035985354, -0.017562032, 0.0026856572, 0.00433098, -0.009777509, 0.006429226, 0.04737477, -0.035971455, 0.037023645, -0.009126329, -0.035359927, -0.024629971, 0.04519262, -0.036368784, 0.039396998, -0.0075294464, -5.0177234e-05, 0.022970749, -0.034669913, 0.041339498, 0.0073006083, 0.014010383, 0.019531002, -0.022800697, -0.0054056514, 0.01916014, -0.027956996, 0.0006669177, 0.045336507, 0.0073923785, 0.007823969, 0.020897437, -0.009929983, 0.006192545, 0.012911184, 0.060937032, -0.016331412, -0.04360299, -0.08299784, 0.083488375, -0.017559376, -0.06155101, -0.0044262246, -0.0021022318, -0.027227536, 0.007021134, -0.010276624, 0.0002755149, 0.008249607, -0.061893154, 0.0073530595, -0.0022541943, 0.0330111, -0.004740982, 0.035281032, 0.044629328, -0.016266007, -0.0005224155, 0.019474898, 0.0026276112, 0.06808733, -0.009298014, -0.00089235767, 0.024824137, 0.015553103, 0.0081103165, 0.006511799, -0.032635435, 0.041162908, 0.051427677, 0.019634014, 0.0026989423, 0.00530591, 0.026954677, 0.0047176816, -0.0216782, -0.013103104, -0.0058226027, 0.03833745, 0.024566274, -0.056826383, 0.008514391, 0.028669901], [-0.016022153, -0.07979744, -0.039008833, -0.01569478, 0.011522362, -0.0056135645, 0.0040800385, -0.0368421, 0.018704148, 0.07298773, 0.012903803, 0.03366372, -0.049278043, -0.028658183, -0.0006304817, 0.0033286538, -0.012590052, -0.009656939, 0.02899556, 0.024107516, -0.0014142203, 0.008235853, -0.016636245, 0.03265478, -0.050290387, 0.0069222082, 0.024329526, 0.024393383, 0.025048131, 0.011410293, -0.014823345, -0.06169185, 0.009885494, -0.012675194, -0.00089208264, 0.012727558, 0.008254585, 0.0019026201, -0.056441948, -0.053494092, -0.013395075, 0.01741211, -0.01456962, 0.034733966, 0.019051319, 0.040716942, -0.011714358, 0.023585806, -0.031937025, -0.030616252, 0.030376362, 0.01144999, -0.020796742, 0.0134180635, -0.01578354, 0.011570893, 0.024228206, 0.020564517, 0.012266509, 0.00023329101, -0.01182994, 0.031291645, -0.072243586, -0.014728943, 0.016583882, 0.042583697, -0.00044997918, 0.012551737, 0.00817213, -0.03965266, 0.0061453874, 0.030298244, -0.003949344, -0.034404464, 0.053694397, 0.020951279, -0.07965355, -0.0119125815, -0.006715205, -0.023034507, 0.00615156, 0.029742688, 0.020087719, -0.019028915, -0.05620781, 0.005099622, 0.0021922118, -0.02600854, 0.014795034, 0.00069210376, -0.07538875, 0.005883574, 0.047308695, 0.004569183, -0.027447985, 0.002075779, 0.024465224, 0.03777186, 0.0037730988, 0.04406731, 0.059746336, 0.003521502, -0.0048280167, -0.024838256, -0.04715288, 0.032918297, -0.0061744424, -0.0078833625, 0.024637744, 0.04306177, -0.00693317, 0.017392099, -0.053870212, -0.044321883, -0.0021784557, 2.107282e-05, 0.01338736, 0.01831228, -0.023659455, -0.00576477, -0.006034063, 0.05090054, 0.001372926, 0.015200341, -0.049847648, 0.001352066, -0.02650833, -0.0033721833, -0.05480918, -0.002208176, 0.04682636, 0.010530449, 0.049442366, -0.018507257, -0.04004176, 0.026382318, -0.03542788, 0.038596146, 0.004774803, 0.03306006, -0.032742478, 0.01793829, 0.03079122, 0.008738475, 0.016374005, -0.0072507528, -0.0014749909, -0.054363616, 0.01099469, -0.004657306, -0.034356356, -0.00026734808, -0.010642093, 0.020614326, 0.014200101, -0.038019624, -0.0014750973, 0.0011708186, -0.041381057, 0.0324879, -0.007452541, 0.006663348, 0.019154128, 0.025902113, -0.0027871463, -0.032378733, -0.010341433, -0.0038012092, -0.0059906403, -0.0144683, 0.0650354, -0.023083465, 0.0053192903, 0.027335277, -0.059020918, -0.0054291245, 0.019020028, -0.044214524, 0.027215865, 0.016301421, -0.007267781, 0.0015636458, -0.042394895, -0.026845494, -0.01893744, 0.03783912, -0.022999704, -0.005879955, 0.023895511, 0.03292894, -0.003282251, -0.030595178, 0.042561986, -0.0051656077, -0.016988523, 0.040443636, -0.06272803, -0.0039531756, 0.017315896, 0.047167353, 0.039879777, 0.022279505, 0.017268216, -0.014530453, -0.05372164, -0.044006854, 0.048035808, 0.0131579535, 0.030071232, 0.007455095, -0.012262239, 0.04824441, 0.016848037, 0.04891789, 0.013252036, 0.051109463, 0.0037454276, 0.009286089, 0.021959154, 0.052143093, -0.01560719, 0.010445945, 0.060063068, -0.027871465, -0.03797535, 0.019696914, -0.016622197, 0.020957025, 0.020553447, -0.009044496, 0.082012855, -0.019828033, -0.00794456, -0.017947018, -0.025400622, -0.02382378, -0.06495877, 0.032228693, -0.0296618, 0.047771443, -0.0064443983, 0.012344627, -0.011564933, -0.027136682, 0.013873578, -0.004066176, -0.0048018354, 0.024517693, -0.03051525, 0.003591319, 0.018928925, 0.051793158, -0.025072396, 0.037080288, 0.014395715, -0.015703082, 0.00091060123, 0.0038795273, 0.023585381, 0.0128339855, 0.028659033, -0.033687137, -0.011732665, -0.037455127, 0.025374228, -0.012545352, 0.024693193, 0.011372937, 0.029694263, -0.026040046, -0.055043057, -0.041419584, 0.0715369, -0.002460624, -0.033345714, 0.04276207, -0.0055436413, -0.014957018, 0.042571086, 0.03403792, -0.04899792, -0.019351447, 0.011676895, 0.005020014, 0.00923032, 0.0007347815, 0.02851429, -0.03447939, -0.008474892, -0.041305277, -0.031764295, -0.0078833625, 0.026082402, 0.017768217, 0.036564533, 0.00095051184, 0.03932997, 0.008348241, -0.0890218, 0.007939876, 0.037728436, 0.013678175, -0.01775949, 0.028621146, -0.03811158, -0.053391285, -0.050779108, 0.058493037, 0.0049238023, -0.0062273373, -0.009501181, -0.0145015055, -0.031737793, 0.009470529, 0.016110277, -0.0052311677, 0.025224376, 0.060521137, -0.024505666, 0.00042401065, 0.0016040885, 0.026521951, 0.0034555965, -0.018112406, 0.054695938, 0.070978574, 0.0023020457, -0.00066453876, -0.040990252, -0.031079214, 0.044144787, 0.031811524, -0.035931073, -0.0028818676, 0.0068382365, 0.009237505, 0.00037377645, -0.024240553, 0.01548022, 0.015776092, 0.005227007, -0.050653096, 0.0014901569, -0.03249258, 0.040910963, -0.04030826, 0.0019812174, -0.06368674, 0.015965959, 0.01755515, 0.008864206, -0.015704464, 0.0267082, 0.03499695, -0.009030661, -0.015891565, 0.024795257, -0.009540666, -0.025464479, 0.009584354, -0.009072807, -0.014372939, -0.08005117, 0.047834445, 0.0327859, -0.018480362, 0.05119205, -0.0061396407, 0.030460652, -0.0035960022, 0.08771061, 0.00511548, -0.024263116, 0.029547391, 0.016195845, 0.03881826, -0.023380611, -0.012943394, 0.014860807, -0.02484762, 0.00043422778, -0.01253258, 0.05784595, 0.025641577, 0.0619941, 0.05406902, 0.054799546, 0.0015215002, -0.03576334, 0.034275472, -0.01128822, 0.016669452, 0.04676931, 0.06029013, 0.01118094, 0.03193958, 0.02117946, 0.059312962, 0.02968926, -0.015955742, -0.009106863, 0.065982185, -0.012003524, -0.009874638, -0.009948925, -0.056351695, 0.004684099, -0.012758634, -0.030203523, -0.0038556873, 0.032126896, -0.009541091, -0.012246075, 0.02171985, 0.04211158, -0.02463274, -0.013913594, 0.037654784, 0.034719914, -0.006773315, 0.030242687, 0.041283727, -0.05487575, 0.025481507, -0.007482979, 0.0034065593, 0.005298005, -0.04898031, -0.047569867, 0.032886367, 0.033771, 0.06526462, 0.004474675, 0.07691792, 0.011643157, -0.066798285, 0.026644556, 0.00067049876, -0.0654509, -0.014013638, -0.020727139, -0.029336983, -0.01066391, -0.0066287853, -0.0017746933, 0.015914023, -0.041987274, -0.018292483, 0.007882671, -0.053697374, -0.009607502, -0.02400593, -0.0035208105, 0.0018786737, -0.05713416, 0.031783983, 0.071678236, -0.060200997, -0.033636477, -0.035951614, -0.02151556, -0.0014386988, 0.028432129, -0.049648415, 0.010245115, -0.015532796, 0.02971097, -0.03266883, 0.030869337, 0.025541533, -0.0031438945, -0.026941491, -0.016588992, -0.049045175, -0.0036519833, -0.0058616493, 0.04158029, 0.024198407, -0.008180511, 0.024231615, 0.019812707, 0.005832275, 0.0340094, 0.048724614, 0.0566531, 0.015308659, -0.030228639, -0.026395941, -0.039022602, -0.006386554, 0.01892339, 0.014946535, 0.030591346, 0.07209884, -0.06680467, -0.019260982, -0.013627303, 0.02264519, -0.06957862, -0.004973611, 0.02363987, 0.027608478, -0.051041346, 0.014927219, 0.02841893, -0.08964505, 0.033677984, 0.057721645, -0.007854414, 0.0080046905, -0.03268969, -0.068487085, -0.004340575, -0.008124529, 0.037137758, 0.02492212, 0.023465116, -0.0139923515, 0.00896808, -0.039375946, -0.017913546, -0.018832289, -0.004807157, 0.030332435, 0.0093674, -0.03780932, 0.012364211, -0.04791661, -0.0071524926, 0.0048325667, -0.013143053, -0.040938314, -0.049679488, 0.02987487, 0.016572814, -0.020915305, 0.030860398, 0.0060298066, 0.0042077526, 0.017822921, -0.0067021144, 0.035754878, 0.009298754, 0.01766626, -0.015494694, -0.014535989, -0.026306009, 0.055414274, -0.03563371, 0.017812492, 0.0043297196, -0.0039028882, -0.08110353, -0.051907245, 0.087976255, 0.006035766, -0.029384661, 0.022519393, 0.048566677, 0.020163707, -0.07837386, 0.0008188067, 0.028882805, 0.016524496, 0.0019787163, 0.029226083, 0.02568585, -0.06563502, -0.056200147, 0.012703291, -0.02105409, -0.0176959, -0.020199854, -0.041176926, 0.006206903, -0.020816512, 0.04287446, -0.04127718, 0.0063465373, -0.01457079, -0.0031266261, 0.003303537, -0.014273322, -0.028897433, 0.024724057, 0.015971601, -0.01875268, -0.020875288, 0.041286442, -0.030873168, 0.03949089, -0.015613468, 0.0094359405, 0.009585791, -0.011148159, -0.033095818, -0.045600727, 0.024421481, -0.01972288, -0.038291227, -0.041438952, -0.035792716, 0.0010061472, -0.050476, 0.025258435, -0.021127736, -0.019872306, 0.08412099, -0.025230337, 0.036937032, 0.025900941, 0.016232457, -0.016870068, 0.0035083583, 0.022482783, 0.0030468318, -0.017298443, 0.013681687, -0.0083048185, -0.024705857, 0.046314225, -0.0302429, 0.018271731, 0.013255016, -0.04934701, -0.0001005216, -0.005071525, 0.05520312, 0.003582379, -0.0067274175, 0.03945513, 0.011650289, 0.06779062, -0.008882938, -0.06902348, 0.046463225, -0.0461052, -0.05731615, -0.027819952, 0.012878685, 0.041824862, 0.04038148, -0.03949344, 0.009333343, 0.0029563673, 0.010578129, 0.03250993, 0.0021689038, 0.023099214, 0.019225221, 0.03953516, 0.020240976, 0.0052643735, -0.04659434, 0.030762058, -0.010114953, 0.023288658, 0.0196007, -0.029692667, -0.044625845, 0.0019255022, -0.034154143, 0.0014921259, 0.040416814, 0.039931502, -0.040663306, 0.04129038, -0.01187911, -0.002127716, -0.025800154, -0.0013154547, 0.011033217, 0.030430853, -0.014051952, -0.008372934, 0.009426707, -0.022068562, -0.008231597, 0.008296943, 0.032071553, -0.04201643, 0.0078952825, 0.010718615, 0.007272038, 0.031462144, -0.008313334, -0.011890179, 0.00774458, -0.019288547, -0.05569865, -0.009779916, -0.00018507229, 0.020339182, -0.009134109, -0.0052967276, -0.00031438944, 0.055748038, 0.07074592, 0.03318373, 0.03683869, 0.10342795, 0.036381904, -0.00042528778, 0.027324634, 0.01964753, -0.028413823, -0.0060097976, -0.01426566, -0.057806358, -0.02166243, -0.0180179, 0.031886794, -0.011442966, 0.03694427, 0.06934192, 0.02477312, -0.02186188, -0.0054725474, 0.014900612, -0.021824203, 0.012048969, -0.0015257307, -0.027343152, -0.04234828, 0.060417265, 0.0043218434, -0.033133976, -0.047212053, -0.017543655, -0.023273863, -0.014406698, -0.040985145, 0.007660289, 0.0367246, 0.0010559823, -0.02083591, -0.03716926, -0.05121802, 0.013100056, 0.01024437, 0.0077967304, -0.028802073, 0.0065304455, -0.018488524, 0.016492141, -0.040612217, 0.002054214, 0.018570794, -0.0061558173, 0.022955751, 0.005753944, 0.020592613, 0.009330789, 0.0050085196, -0.016975915, -0.015141805, 0.046014313, -0.04475952, 0.010843775, 0.028574955, -0.011346742, -0.05758286, 0.00015325687, -0.009562164, -0.004864203, 0.03529335, -0.031633068, -0.006717759, 0.033283986, 7.918271e-05, -0.022389123, 0.018902957, -0.026751412, -0.039202254, -0.006529381, -0.025365287, -0.10556333, -0.054397672, 0.0061745485, -0.018266408, -0.05989616, 0.023235444, -0.009744156, -0.06003923, -0.05769269, 0.049550075, -0.026835278, -0.020468306, -0.009381662, -0.044779524, 0.007341004, -0.004744577, -0.04076292, 0.0040825927, -0.023499599, 0.053658634, -0.0026142, 0.043679908, -0.03064286, 0.015802486, -0.0087381955, 0.013318022, 0.03870566, 0.03086423, -0.0035576879, 0.0018331225, 0.031626895, 0.009311845, -0.048372976, -0.054593503, -0.01869904, 0.006388257, 0.005842067, 0.028709268, 0.0074141202, -0.008616974, -0.034763552, 0.002972385, 0.020980865, 0.028143069, -0.026749708, 0.049655225, 0.009684983, 0.024126036, -0.018909343, -0.00048552625, -0.021793578, -0.0019957449, -0.00859324, 0.01000347, 0.033064317, -0.013518319, 0.008417793, 0.028091772, -0.0058850637, -0.014765235, -0.0039762175, -0.00468668, 0.008650712, -0.037616897, -0.008102605, 0.06964673, 0.027756467, -0.023817394, 0.009028533, 0.034236733, 0.0318902, -0.05973101, -0.02164732, -0.059770178, -0.027392536, -0.0040836567, 0.0033295054, -0.001633037, 0.00043593065, -0.0055800397, -0.055385754, 0.03679825, 0.028775254, 0.020936592, 0.042865943, -0.007108564, 0.05041438, -0.025643278, -0.033003654, 0.042068157, -0.007790557, 0.021693083, 0.026081126, -0.037219707, 0.020028278, 0.01469265, -0.03730953, 0.025398068, -0.00014772259, -0.04745982, -0.0014040032, -0.0112043535, -0.0013088563, -0.014264169, -0.009753948, 0.035637755, 0.016859958, 0.005489576, -0.020313345, -0.052327003, -0.022358049, -0.018557703, 0.03782567, 0.020830162, -0.0039429585, -0.042938318, -0.029856142, 0.056040928, -0.032146476, -0.05209371, 0.05209967, 0.0074619064, 0.042710986, 0.020998426, -0.032683942, 0.07574848, -0.01173607, -0.032815382, -0.038037926, -0.018360171, -0.02082697, -0.03291851, 0.01901109, -0.032360505, 0.054768894, 0.031020466, 0.04070502, -0.01823778, -0.0671231, -0.036930647, -0.033579644, -0.028485343, -0.05053986, -0.042072415, 0.03180548, 0.020803768, 0.047858104, 0.02316141, -0.00062324456, 0.039305277, -0.0050161825, -0.02517329, 0.015217555, -0.026885511, -0.019534716, -0.002653898, 0.005798218, 0.03944406, 0.025957454, 0.040004298, -0.04213542, 0.017662214, -0.023471288, 0.024137955, -0.003958923, 0.05183658, -0.002194899, 0.03224588, 0.001499363, -0.009035995, 0.017138813, 0.018679457, -0.03273737, 0.04315628, 0.02460539, -0.0021847617, -0.024043128, 0.015417215, -0.028248645, 0.041797403, 0.045735896, -0.0028748433, 0.0031979599, -0.013995439, 0.05712735, 0.015111979, 0.05252113, 0.059347868, 0.03300855, 0.040607747, 0.01157515, -0.040457256, -0.004327165, -0.016990226, -0.0029201817, -0.0035428943, 0.007053647, -0.00039804212, 0.02056622, 0.029895732, 0.058867663, -0.00039208215, -0.023825696, -0.07540067, 0.035877325, -0.005979572, -0.033960335, -0.0055406615, 0.024240127, -0.020940848, -0.016349101, 0.0044465894, -0.0015053229, 0.021915464, -0.08277914, 0.014583242, 0.023307176, 0.013601547, -0.046597324, 0.03263094, 0.018207341, -0.01949736, -0.011161356, 0.008840367, 0.009046412, 0.033017065, 0.02133229, 0.002696935, 0.034141906, 0.019992571, -0.003623567, 0.0028556862, -0.018563876, 0.059995808, 0.0592755, 0.048226528, -0.005713501, -0.013065147, 0.029348928, -0.032259718, 0.015633903, -0.015250335, -0.010491496, 0.011278854, 0.026855683, -0.03781528, 0.022937443, 0.014486499], [-0.041264135, -0.082403675, -0.026148217, -0.03218118, 0.0042439178, 0.044805843, 0.024493901, -0.03699972, 0.044223156, 0.023937704, -0.012361876, 0.0063247657, -0.05842866, -0.018374687, -0.014736873, 0.044980414, 0.0065629063, -0.030333636, 0.040142067, 0.03065699, -0.026155125, -0.0028012574, -0.022071045, 0.04155709, -0.045364108, 0.0638999, -0.0017770699, 0.021185964, 0.009414947, 0.008360704, -0.003269362, -0.06212145, -0.020604892, -0.02241789, -0.0040546604, 0.009567067, -0.018877108, 0.00297422, -0.038618337, -0.044154983, -0.055414364, 0.013419689, -0.016904274, 0.047254033, 0.0023702327, 0.056963887, 0.023373675, 0.009083416, -0.023916284, -0.03621851, 0.04425079, -0.017545458, -0.026699118, 0.019643068, -0.015567787, 0.04295369, 0.01926495, 0.023649126, 0.033398136, -0.003282144, 0.017940668, 0.022197483, -0.06622603, 0.01709359, 0.03801677, 0.012478412, 0.0062952866, 0.012234859, -0.0069099828, -0.032007527, -0.02552569, 0.015022874, 0.006880086, -0.010066033, 0.05437521, 0.018825518, -0.06908555, -0.0044638636, -0.012723232, -0.012069152, -0.006203623, 0.0065910043, 0.011381446, -0.060691223, -0.050127376, 0.0031022723, -0.006412284, -0.016618, 0.045647394, 0.0287445, -0.040181216, 0.009371764, 0.036046237, 0.0014922919, -0.0050437837, 0.016354352, 0.009560619, 0.050240688, 0.03580856, 0.018152323, 0.04895694, -0.030433014, -0.001403047, -0.017305935, -0.0111469915, 0.010891808, 0.026234122, -0.02003188, 0.005398345, 0.02790548, 0.00047996553, -0.007507176, 0.0024243556, -0.0617138, 0.029216172, -0.016315142, 0.041444696, -0.0164759, -0.0511868, -0.004590534, -0.02031977, 0.0042262413, 0.009875969, 0.016262632, -0.034155972, 0.0011366938, 0.010649062, 0.002625531, -0.061624438, 0.0038724856, 0.042855114, 3.1322124e-05, 0.054974016, -0.029247496, -0.051819693, 0.023589246, -0.0016044816, 0.036549233, -0.018648295, 0.046194144, -0.025921823, -0.010992223, 0.023549633, 0.01295262, 0.0351744, -0.010869238, 0.016864201, -0.039492596, -0.019373426, 0.010851044, -0.01809037, -0.03000199, 0.022201514, -0.0005499797, 0.03215815, -0.03801032, 0.008168166, 0.013623685, -0.04089564, 0.029143855, -0.015062257, 0.013706193, 0.021310734, 0.007454666, 0.0042148987, -0.06318836, 0.0096257385, 0.014553733, -0.0076121977, 0.043242957, 0.0850193, -0.013774365, 0.024762442, -0.00050852395, -0.060282193, 0.006066128, 0.019327652, -0.018850854, 0.010865697, 0.008858634, 0.007355172, 0.021247685, -0.009660112, -0.004302877, -0.041949537, 0.023504492, -0.024769813, -0.023734802, -0.0044523478, 0.006585074, 0.026714088, -0.030104708, 0.008648131, 0.008520539, -0.04291131, 0.01505765, -0.054415744, 0.011988544, 0.00043511268, 0.030354824, 0.004137284, 0.018085303, 0.024019923, -0.0079719415, -0.03419731, -0.056625795, 0.03266921, -0.008060035, 0.05237981, -0.03315355, 0.0108135035, 0.029552884, 0.034741767, 0.044354893, 0.037916582, 0.026170095, 0.026319565, -0.045494467, 0.04073028, 0.05183535, -0.03956445, 0.009959054, 0.017565263, -0.047487564, -0.028944407, 0.0038602792, -0.009310272, 0.022146123, 0.0151292775, -0.0064726253, 0.07456508, -0.0075944634, -0.0012399877, -0.05869398, 0.005802193, 0.019227179, -0.027423441, 0.023466721, -0.052119095, 0.028872551, -0.039653953, 0.022079336, 0.037063055, -0.021773944, -0.03239813, 0.006283771, -0.031432673, 0.005736469, -0.029632572, 0.016701601, 0.048357677, 0.00984436, -0.01993285, -0.025954986, -0.0068798126, 0.012679934, -0.006844805, -0.00062690314, 0.005805188, 0.036259968, 0.007266733, -0.0773288, 0.007912521, -0.027416993, 0.04765753, 0.013303612, 0.036274705, -0.011233589, -0.001041, -0.031233687, -0.01116864, -0.053347107, 0.013225768, 0.01033538, -0.021492505, 0.019388396, 0.017388385, -0.0019548691, 0.05560598, 0.02989789, -0.07424622, 0.0009995443, 0.017864207, -0.004123926, 0.02021797, 0.0005481372, 0.013497533, -0.058119122, -0.016383775, -0.042612832, -0.006485177, -0.008064929, 0.013470816, 0.039864775, 0.05780406, -0.023630701, 0.033728402, -0.029450169, -0.06078335, -0.04375839, 0.032972984, -0.0014606244, 0.010820412, 0.010822716, 0.009020772, -0.03511314, -0.06717181, 0.025238262, -0.0025684142, -0.004085925, -0.029037453, -0.025394872, -0.05552123, 0.02256759, 0.0049419864, -0.013977959, 0.027108377, 0.08667016, -0.0065711974, -0.0146272015, -0.045800313, -0.03281085, 0.0012298541, -0.059114065, 0.021825993, 0.057286322, 0.014965815, -0.013984637, -0.055705883, -0.03373105, 0.028639479, 0.017843477, 0.0031027328, 0.007603906, 0.0032139726, 0.009174619, -0.017943893, 0.008061302, -0.0033938445, 0.03497023, 0.0045025554, -0.07668808, -0.022509553, -0.011476795, 0.043648303, -0.08387329, -0.017803865, -0.0572937, -0.010684529, 0.0061902655, 0.031870265, -0.033514675, 0.01398648, 0.04495278, -0.0072455443, -0.0005202409, 0.01702081, -0.009417825, -0.017739378, 0.0044188956, 0.01690934, -0.017641267, -0.065385856, 0.029985867, 0.00013726461, -0.015089895, 0.06816731, -0.008839288, 0.039005257, -0.020548234, 0.050272014, 0.04002599, -0.022942536, 0.017171202, -0.015924191, 0.044049963, -0.05321076, -0.00022915819, 0.031506833, 0.00229757, 0.010224342, -0.0024346043, 0.042254698, 0.02479054, 0.029348832, 0.040772196, 0.030652845, 0.033440974, -0.024703484, 0.047832567, 0.012673484, 0.0069226506, 0.02858236, 0.01406087, 0.0012209871, -0.019702509, 0.025022693, 0.02435042, 0.017747669, -0.008117958, -0.01575572, 0.011335385, -0.024538122, 0.0038867071, 0.013052114, -0.056991037, -0.049673207, 0.009031251, -0.00056379824, 0.054111734, 0.054135684, -0.006392477, -0.035755128, 0.018409118, 0.032125447, -0.008622797, -0.03060448, 0.031178871, 0.00898945, 0.020502115, 0.022189423, 0.04465061, -0.0543987, 0.042303294, 0.05699153, -0.0003998177, 0.0058765835, -0.008948916, -0.04682473, 0.050856534, 0.0067425477, 0.028282497, -0.0036863377, 0.092042826, 0.046890143, -0.016279213, 0.03027744, -0.011988083, -0.038809955, -0.01104197, -0.030972054, -0.04922456, -0.004608498, -0.017992718, -0.010491472, 0.0021045704, -0.038012393, 0.036728416, 0.026676547, -0.051370822, -0.004690949, -0.01803855, -0.022489848, -0.017418325, -0.052783307, 0.038301893, 0.05189961, -0.034809016, -0.029558066, -0.024610437, -0.048964772, -0.0049100886, 0.022907298, -0.0038461152, -0.0033898142, -0.009233808, 0.031832032, -0.04070126, -0.0051983213, 0.013177633, 0.032387137, -0.029970666, -0.019537637, -0.048134737, -0.021760587, -0.0010502124, 0.036263652, 0.012475418, -0.004599286, 0.014613844, 0.030307151, 0.0037644126, 0.010411843, -0.004246451, 0.032448873, 0.011788634, -0.041577358, 0.010850352, -0.010289203, -0.019672712, 0.012769293, 0.04416788, 0.0146426335, 0.05035953, -0.037806723, -0.0144468695, 0.005231255, 0.031745058, -0.04218998, 0.0014182475, 0.042570915, 0.029721934, -0.06349547, 0.025149131, 0.018794196, -0.061035767, 0.029055879, 0.05429414, -0.02697572, 0.0051792054, -0.039107054, -0.0510394, -0.013321806, -0.002668599, 0.050944515, 0.048072092, -0.012208259, -0.045335554, -0.014443184, 0.001452218, -0.010958598, -0.017496632, -0.008702023, 0.03814298, 0.0039011014, -0.02234465, 0.050321758, -0.059265144, 0.0016144712, 0.0036589021, -0.015070548, -0.029674605, -0.03953681, -0.01629902, 0.0096430695, 0.0010872923, 0.022340735, 0.017624224, 0.004182425, -0.023918128, -0.03108813, 0.0049359985, 0.009706634, -0.00020129072, -0.02511666, -0.0059353122, -0.027493455, 0.048482966, 0.011100008, -0.015336786, -0.033940747, 0.0019433536, -0.06646186, -0.07444348, 0.053202473, -0.023440003, -0.030275598, 0.031384077, 0.062192842, 0.001254267, -0.01642385, -0.0025521775, 0.02737024, 0.011432576, 0.0053376583, 0.03636591, -0.013128346, -0.07850614, -0.07125968, 0.03014432, -0.019013911, -0.029237362, -0.061407946, -0.035850935, 0.008402966, -0.027283415, 0.018361444, -0.05485794, 0.0062975893, -0.019348783, 0.007197122, -0.026110215, 0.013951704, -0.016768392, 0.013607621, 0.030497616, 0.0029212488, 0.012832456, 0.033497576, -0.015340472, 0.052079946, -0.02411343, 0.0486709, -0.0008263514, -0.02834445, -0.038618337, -0.04323006, 0.0037991896, -0.0058894805, -0.015615922, -0.005738959, -0.0632578, -0.020553302, -0.017790966, 0.030189002, -0.0074026156, -0.040687684, 0.04106054, 0.010139156, -0.001169225, 0.00083510316, 0.009971491, -0.01869643, -0.028126117, -0.011441789, -0.011220691, -0.026355727, 0.018296037, -0.02054288, -0.013270448, 0.020997772, -0.0020419226, -0.00010709403, 0.025174294, 0.012103237, 0.028057715, 0.01269297, 0.026680693, -0.008007869, 0.0050631296, 0.05359768, -0.0058424976, 0.07040477, -0.009527453, -0.06097773, 0.09342837, 0.00240167, -0.026367242, -0.032667134, -0.0045329565, 0.030056342, 0.025222603, -0.006056455, -0.024638535, 0.025895339, -0.0092386445, -0.0037190418, -0.009540351, -0.02269933, 0.029384876, 0.05323564, -0.00048917794, -0.008182906, -0.047782823, 0.04037606, 0.012634331, -0.010411843, -0.012667036, -0.010973338, -0.0418353, 0.040376984, -0.043858346, 0.052392703, 0.037557073, 0.027685823, -0.0034769287, 0.03214249, -0.005250141, -0.037546016, -0.019558594, 0.05040513, 0.012896424, 0.039731197, -0.025321174, -0.0010320755, 0.018556517, -0.036732562, -0.0061216326, -0.01420965, 0.036803037, -0.03327239, -0.02233636, 0.022675376, -0.0067659244, 0.042922366, 0.017280601, -0.0056628846, 0.04418815, -0.052399155, -0.030163206, -0.03253816, 0.015256638, 0.011363641, -0.022607204, -0.020497106, -0.0033807168, 0.030920466, 0.043331396, 0.040454365, 0.028175173, 0.04579387, 0.04520151, 0.047195997, 0.034238767, 0.026259918, -0.0506891, 0.029797474, -0.010234965, -0.037239242, -0.069162935, -0.027982173, 0.024241483, -0.023476854, 0.06955354, 0.042536885, 0.011899644, 0.031132348, -0.02009729, 0.009257214, 0.0066550304, 0.01912308, 0.010340331, -0.057985544, -0.03223415, 0.01956343, -0.026997829, -0.047020037, -0.06982531, -0.023449216, 0.008078345, -0.010903784, -0.026572678, -0.004541708, 0.02128062, 0.029454658, 0.006125318, -0.02713233, -0.052225962, 0.0071027526, 0.017868351, 0.010345053, -0.039247543, 0.019222572, 0.0074316347, -0.015082524, -0.058401026, -0.023341663, 0.00240167, 0.017166518, -0.0045122285, 0.005979302, 0.044086814, 0.023634845, 0.030598952, -0.026533064, -0.046541452, 0.042542126, -0.04315682, 0.02754136, 0.00964353, 0.021381956, -0.08646381, -0.011164034, 0.019574486, 0.0028779504, 0.019847173, -0.031873025, 0.009429802, -0.0034836652, 0.008034585, 0.017625604, 0.017921783, -0.021943454, -0.007496237, 0.017816762, -0.009135603, -0.067867674, -0.024117347, -0.002382324, -0.065223716, -0.075244956, 0.0104634315, 0.01934602, -0.025076125, -0.053971708, 0.018148407, -0.005203158, -0.017032096, 0.013642629, -0.07720259, 0.006564749, -0.03573486, -0.06373131, 0.016197223, -0.038065594, 0.044488475, 0.021357084, 0.0670966, -0.04673998, -0.03359298, 0.02678088, -0.0136126885, 0.034184415, 0.00917508, -0.014431439, 0.002702915, 0.013287029, 0.0097402595, -0.05246272, -0.059895273, -0.028654216, 0.010455256, 0.007231726, 0.00029709956, 0.018643113, -0.0055354945, 0.0051755207, 0.017736614, 0.036717363, 0.0052796206, 0.022165932, 0.04299376, 0.01710925, 0.0035113024, -0.02789788, 0.010820182, 0.027620586, 0.010053021, -0.029402552, -0.015366727, 0.03390758, -0.0058692135, -0.003334885, 0.060081366, 0.0114814015, -0.014787729, -0.025703028, 0.002428098, 0.041928694, -0.07486357, -0.007908376, 0.052042633, 0.013118442, -0.012184422, 0.006610811, -0.03081936, 0.027328553, -0.068271175, -0.033138808, -0.08302943, -0.04031434, -0.0012473576, -0.015789116, -0.008291151, -0.0056091943, 0.010630637, -0.01470758, 0.027619436, 0.045072567, 0.012785876, -0.007017538, -0.020335428, 0.05220886, -0.022402229, 0.006881079, 0.05672621, -0.0045665815, -0.008406363, 0.021319773, -0.018747212, 0.01843952, 0.040512405, -0.0019233131, 0.020612722, 0.043799385, -0.043642774, 0.011267846, -0.028501378, 0.031893294, 0.02269979, -0.021712681, 0.04331113, 0.03556466, -0.018571258, -0.010105992, -0.015656572, -0.03310564, -0.005992199, 0.021863535, -0.012182925, -0.014696525, -0.022859624, 0.018283369, 0.052468244, -0.03805454, -0.06314909, 0.074677475, -0.002614937, 0.043991003, 0.036142047, -0.04014483, 0.07186401, 0.0055329613, -0.012337233, -0.022861466, -0.023680447, -0.04491757, -0.031746816, 0.011734742, -0.011861874, 0.030818207, 0.03922175, 0.024193117, 0.0072160647, -0.08612847, -0.005602572, -0.027766373, -0.04129822, -0.0517681, -0.029631883, -0.007911025, 0.0064265635, 0.028259005, -0.0076158824, -0.02783293, 0.079462394, 0.0013074109, -0.015589206, 0.01086348, -0.014111539, -0.021032806, 0.01507239, -0.010167714, 0.05771746, 0.04029131, 0.036363143, -0.019248368, 0.015198831, -0.059773672, 0.01737733, 0.013398039, 0.0017720031, -0.0062344847, 0.014491895, -0.012579461, 0.02864938, 0.002730322, 0.038036115, -0.026349276, 0.036472775, 0.01607562, -0.036569502, -0.010831928, 0.03263397, -0.050798498, 0.033954564, 0.008683599, -0.0034631675, 0.022206927, -0.046780515, 0.08503773, 0.019897042, 0.013112916, 0.012229448, 0.007215201, 0.010067991, 0.034392614, -0.0292217, 0.006841351, -0.010637546, -0.048534553, -0.00029341463, 0.010622519, -0.015918318, 0.0020711755, 0.027380144, 0.040159803, -0.018344631, -0.073812425, -0.039633546, 0.042361334, -0.018439174, -0.013660131, -0.015336095, 0.0025817722, -0.013280581, -0.0052105277, 0.00055827084, -0.018999862, 0.012030459, -0.06809062, -0.0039955284, 0.002274539, 0.021789605, -0.017424315, 0.043643698, 0.0045932974, -0.037487056, -0.032324433, -0.0033088026, 0.0027869781, 0.010681766, 0.002035017, 0.022368602, 0.040275186, 0.016299367, -0.0044988706, 0.005787338, -0.0376234, 0.024431258, 0.062707126, -0.0040847734, 0.006657794, 0.017081613, 0.029126352, 0.00917554, -0.018859604, 0.02436919, -0.018926164, 0.04858983, 0.016048443, -0.07096488, 0.0059926594, 0.01325732], [-0.03456276, -0.09177372, -0.018701851, -0.043540273, -0.014934794, 0.02490981, 0.02300267, -0.03349785, 0.04130805, 0.05624339, -0.013353838, 0.018937876, -0.090426974, -0.032888725, -0.023066917, 0.037815556, -0.008981084, -0.037573934, -0.0029927795, 0.034538735, -0.013701987, -0.021844529, -0.009015131, 0.030769069, -0.00012849733, 0.07311387, -0.0096845245, -0.014850777, 0.013942509, -0.0035649769, -0.010865162, -0.055770036, -0.0016563936, -0.0011417866, 0.0029817969, 0.026393022, 0.022104286, -0.0051091416, -0.03863706, -0.046704937, -0.06478235, 0.01862113, -0.04712667, 0.03144615, 0.007362787, 0.03736746, 0.018944295, 0.029986965, -0.036212083, -0.042645734, 0.019865192, -0.006017409, -0.0420988, 0.022349749, -0.044589672, 0.047458347, 0.042136136, 0.028358921, 0.024259087, -0.009613686, -0.0012805802, -0.011126001, -0.059510734, 0.013792466, 0.024315648, 0.031038402, -0.008879494, -0.0020669398, 0.0093555935, -0.025880678, -0.023929605, 0.027574893, 0.027632417, -0.029178778, 0.076000124, -0.0032959017, -0.0853947, 0.028626349, -0.014722828, -0.033523526, 0.0051750373, 0.02227342, 0.025340606, -0.0451237, -0.059157092, 0.006600589, -0.023320343, -0.00047251146, 0.052571878, 0.021946136, -0.03819995, -0.0032986472, 0.03438896, -0.013645427, 0.004221192, 0.012313228, -0.0005919663, 0.07330937, 0.031513695, 0.04126851, 0.047485255, -0.05139948, -0.0044573196, -0.020627664, -0.008341893, 0.023089865, 0.023052638, -0.022845067, 0.009771837, 0.0017402052, -0.02156229, -0.012632275, -0.0028121145, -0.05469154, 0.0015447135, -0.021767119, 0.03209866, -0.016430086, -0.0531276, -0.020618878, -0.020557376, 0.03909284, 0.015478161, 0.011082619, -0.025752181, 0.0061880522, 0.0027003658, 0.004658852, -0.06199502, 0.012058704, 0.026220867, 0.017245, 0.026942704, -0.03311936, -0.055315353, -0.0004382088, -0.00221905, 0.061968658, -0.02213339, 0.042225648, -0.03926966, 0.0050081005, 0.028115653, 0.021260267, 0.04102222, -0.024292585, 0.012672362, -0.056508068, -0.012971023, -0.007819117, -0.010357214, -0.009630259, 0.013447739, 0.018330637, 0.027513804, -0.06851104, 0.016142339, 0.015101731, -0.023454607, 0.035021562, -0.01281651, -0.0031059012, 0.01710607, 0.026205765, -0.018380608, -0.03600822, 0.021903852, 0.0058718883, 0.0048345746, 0.050336905, 0.063620456, 0.00016474015, 0.02078362, 0.04239643, -0.047685686, -0.0053035347, 0.022917826, -0.05242032, 0.036116533, 0.042080127, -0.009016229, -0.011127649, -0.006009172, -0.018270781, -0.013752783, 0.022938421, -0.016704652, -0.010679555, -0.019763362, 0.03130722, 0.02242992, -0.021339342, 0.027898196, -0.010871752, -0.035419133, 0.034049597, -0.05228633, 4.2832442e-05, 0.021211531, 0.027412213, 0.011078227, 0.012699271, 0.039392117, -0.038150527, -0.015854044, -0.047473717, 0.03434448, -0.0183224, 0.039623305, -0.026252992, 0.00749252, 0.04489279, 0.026712067, 0.06040651, 0.026665049, 0.037190296, 0.005650313, -0.043034524, 0.012269847, 0.07258232, -0.045701116, -0.014536671, 0.029964587, -0.01574916, -0.036687497, 0.01174213, -0.012847536, 0.010242444, 0.018033968, -0.0012501032, 0.0652404, 0.0054979282, -0.033460923, -0.059108768, -0.0030251783, 0.0058955015, -0.045630828, 0.019573327, -0.034779668, 0.040004402, -0.019353675, 0.025490794, 0.030731179, -0.02521348, -0.016258018, -0.01608578, -0.024937266, 0.0023388984, -0.022693781, 0.007693365, 0.051484868, -0.018788615, -0.027783977, 0.004336922, -0.014237667, -0.0067583276, -0.003253069, -0.0126645025, -0.0071947523, 0.0682686, 0.005435327, -0.043552905, -0.0034613279, -0.05469593, 0.053252805, 0.017538443, 0.027055277, -0.0041404692, 0.037047867, -0.023722583, -0.02795256, -0.06863954, 0.03189809, 0.04585927, -0.012435961, 0.024963899, -0.0036868847, 0.011156203, 0.043906547, 0.019550813, -0.05588865, -0.0187348, 0.008611517, 0.021196567, 0.0015677772, -0.0059898146, -0.0007067353, -0.055811767, 0.010370942, -0.038357, -0.004294227, 0.008345188, 0.022753911, 0.036875438, 0.039330065, -0.038366888, 0.04716401, -0.019376738, -0.04194065, -0.028487965, 0.017534943, -0.0028285885, 0.009049039, 0.002160567, -0.020471163, -0.037567347, -0.069997, 0.058502525, 0.018730408, -0.021183113, -0.03002664, -0.02631889, -0.054799166, 0.013922053, 0.016422398, -0.024429318, 0.015243956, 0.111513704, -0.027288642, -0.022767639, -0.01799323, -0.032440633, 0.01330771, -0.056770556, 0.021790732, 0.074972145, 0.021438187, 0.016939132, -0.03199034, -0.0145020755, 0.038492087, 0.028526543, -0.012634747, 0.01671893, 0.015755748, 0.012230859, -0.00068092596, 0.00393729, 0.024620967, 0.040891252, 0.0033625697, -0.045608863, -0.02483293, -0.019810004, 0.027713688, -0.08008129, -0.010027184, -0.08041077, 0.008446675, 0.016215099, 0.020220207, -0.022318996, 0.015894886, 0.017656852, -0.0036949846, -0.004322164, -0.0011795396, 0.0044073486, -0.01167239, -0.015999015, 0.007709565, -0.012556907, -0.04185114, 0.054134715, 0.037896827, -0.027434729, 0.052766275, 0.001124077, 0.05208425, -0.021237204, 0.066484734, 0.013363722, -0.046210714, 0.019736849, -0.02002142, 0.02329975, -0.049525283, 0.013793144, 0.031066423, -0.013882104, 0.014178088, -0.0130540095, 0.030230917, 0.025053684, 0.017380636, 0.04243267, 0.04786443, 0.0240765, -0.011621869, 0.042300373, 0.0064666006, -0.0025699465, 0.029472563, 0.018517893, 0.0115592675, -0.0192735, 0.03795057, 0.049568117, 0.005116143, -0.00020976913, 0.0027083282, 0.053591073, -0.010205104, -0.0048955283, -0.009982156, -0.051949162, -0.03832625, 0.011046377, -0.015772497, 0.02918866, 0.0140841855, -0.011540597, -0.026078366, 0.032097973, 0.03344884, -0.041892324, -0.025530333, 0.042800594, 0.0028872087, 0.019861074, 0.028881283, 0.057199977, -0.052974943, 0.050138116, 0.010599382, -0.003181956, -0.012677579, -0.012790837, -0.043312524, 0.052932113, 0.0062241578, 0.022611205, -0.014767308, 0.07773539, 0.04771534, -0.02319926, -0.008266661, -0.012012578, -0.06765549, -0.0372159, -0.032620087, -0.038894054, -0.008228771, 0.007896545, -0.02729305, 0.004426019, -0.024352988, 0.014580946, 0.048008714, -0.04091047, 0.0127817085, -0.01966668, -0.023176745, -0.038057175, -0.03774746, 0.04087478, 0.064050145, -0.04665661, -0.021733621, -0.041836865, -0.033809073, 0.0018143383, 0.04467643, -0.007307873, 0.012297303, 0.022064198, 0.051344566, -0.031855803, -0.0058015995, -0.0039304257, -0.0035703313, -0.019493978, -0.008044674, -0.04409435, -0.022522178, 0.0040619434, 0.028581321, 0.038492087, 0.012980976, 0.023491398, 0.042496372, 0.012755281, 0.024557265, 0.039785847, 0.039785847, 0.024098191, -0.032789882, 0.0034183585, 0.00079377304, 0.0030537336, 0.013822798, 0.014617944, 0.013139675, 0.0722133, -0.053665757, -0.014053297, 0.0132784685, 0.047357306, -0.03722798, -0.008437442, 0.06370831, 0.039990123, -0.051155116, 0.02226985, 0.0062908777, -0.07770464, 0.017518468, 0.052523557, -0.03317949, -0.01194778, -0.018073505, -0.052308295, -0.027797155, -0.035463065, 0.05393202, 0.023787381, -0.013806324, -0.0337937, -0.01726065, -0.020582635, -0.028012004, -0.0066236523, -0.02303287, 0.033899132, 0.018559352, -0.036102805, 0.04337718, -0.04670713, 0.0017209855, -0.023800286, -0.0075165443, -0.04492025, -0.03621428, -0.014889661, 0.0068509937, -0.006829578, 0.03136433, 0.012627882, 0.0030817392, -0.03278933, -0.019114252, 0.017850146, 0.014510313, 0.0056807897, -0.012564182, -0.009097638, -0.022490326, 0.01612861, 0.010706635, -0.013198982, -0.0007682383, -0.01075259, -0.053182516, -0.072806366, 0.059873164, -0.0022415644, -0.02727438, 0.035386186, 0.040618334, 0.019065928, -0.04790424, 0.0010773321, 0.025334839, 0.021281134, 0.03427515, 0.034529537, -0.01229291, -0.091855474, -0.055027608, 0.035538845, -0.022420038, -0.020269217, -0.03412757, -0.034421906, 0.0088399565, -0.020457981, 0.008123646, -0.028851494, 0.019995062, -0.01909613, -0.0024731616, -0.010870105, 0.00573941, -0.037692547, 0.012666322, 0.037806116, 0.0021386705, 0.0012506524, 0.014475169, -0.012786821, 0.036698617, -0.017906431, 0.0516098, 0.011707534, -0.021623794, -0.0028730682, -0.043641314, -0.013280974, -0.020665554, -0.04345845, -0.01929272, -0.059725996, 0.004687544, -0.032762427, 0.016033337, -0.01621867, -0.027888862, 0.031689968, 0.015529505, 0.02495484, -0.0015970186, 0.00068902574, -0.03202343, -0.011692707, 0.0011301176, 0.009061258, -0.027866347, 0.00028115654, -0.022384893, -0.009811924, 0.023233855, -0.018029163, -0.012626904, 0.012736199, -0.014075948, 0.011868293, 0.014898825, 0.08843911, 0.021223476, 0.009291619, 0.03734989, -0.003821697, 0.07979574, -0.0066236523, -0.06459132, 0.092860736, 0.006522337, -0.02721782, -0.014236845, 0.0032135313, 0.011553776, 0.02727438, -0.015001925, 0.00041452743, 0.00334752, 0.008295217, 0.017646862, -0.0012168806, -0.033781, 0.009418195, 0.050028153, 0.004698389, 0.018584887, -0.03689301, 0.042959563, -0.0017012168, 0.020748474, -0.012546611, -0.029926699, -0.019633183, 0.017459711, -0.06496912, 0.03110953, 0.036515206, 0.010180393, -0.02450455, 0.018444309, -0.0072749252, -0.03957498, -0.008925073, 0.040634807, 0.018637054, 0.018704873, -0.02706571, 0.009310565, -0.01128072, -0.009732849, -0.036978673, 0.0046506147, 0.028733978, -0.049968988, 0.0028269412, 0.017394366, -0.005140785, 0.059126344, 0.02355949, 0.015520719, 0.027685134, -0.04468961, -0.05323084, -0.038436078, 0.0129861925, -0.02020483, -0.0059585143, -0.04088631, -0.027647791, 0.02661542, 0.03901706, 0.034168754, 0.022832163, 0.046319444, 0.051809683, 0.0057731816, 0.03736197, -0.003884024, -0.030750949, -0.009350977, 0.007933336, -0.016320808, -0.07333573, -0.020241074, 0.009945912, 0.014802452, 0.06309329, 0.024324434, 0.0048196106, 0.014003737, -0.02637792, 0.030917335, -0.00054007315, -0.0073563345, 0.011723459, -0.054096274, -0.0023722583, 0.03673596, -0.017603036, -0.036238443, -0.05124517, -0.025039405, 0.00024381543, -0.018012276, -0.033186905, 0.013769532, 0.029028863, 0.027714582, -0.005745313, -0.04605476, -0.04458747, 0.020886855, 0.0062678135, 0.017375968, -0.019410785, 0.004352435, -0.019876998, 0.0010874222, -0.057818305, -0.031045282, -0.01489251, 0.04264354, 0.0015017438, 0.014565364, 0.037868273, -0.0074111107, 0.022052668, -0.0050553265, -0.039117, 0.044370014, -0.024872985, 0.019995062, 0.0014211583, -0.0078086834, -0.07596499, -0.0125532, -0.002205459, -0.009368773, 0.0060558487, -0.007098516, 0.029366031, 0.0147265345, 0.00057869055, 0.0011806377, 0.0069926707, -0.00870686, -0.04156724, 0.0041536484, 0.005617639, -0.08285771, -0.025874227, -0.011315658, -0.048042074, -0.058641937, 0.0011669095, 0.021750093, -0.014480385, -0.05174708, 0.06034322, -0.035023756, -0.01837022, 0.004811511, -0.052279193, 0.0063842307, -0.031911265, -0.032836627, 0.020797072, -0.040840182, 0.035560813, -0.0038103026, 0.05507593, -0.022580933, -0.025864206, -0.00379122, 0.019704022, 0.015739275, 0.027257908, 0.00630845, 0.014046844, 0.00729744, 0.013095745, -0.044669293, -0.075393885, 0.0054034772, 0.015248486, -0.0032596586, 0.011786609, 0.039375097, 0.009566461, -0.007695871, 0.016466843, 0.008532717, 0.010630134, 0.0065276916, 0.050975, 0.016430086, -0.00064042734, -0.031599905, -0.006977844, -0.0006908104, -0.010260017, -0.0129650505, -0.010668573, 0.028237563, 0.03286017, 0.018243324, 0.049379762, 0.012796055, -0.008670686, -0.0048433607, -0.019711709, 0.04296423, -0.067249134, -0.008579118, 0.057355933, 0.010147444, 0.018433325, 0.009349554, -0.021605123, 0.019363558, -0.06248704, 0.005724171, -0.06008403, -0.04466875, -0.0095900735, -0.013942509, 0.0031374763, 0.021443676, 0.025695072, -0.0021800615, 0.05353012, 0.0022415644, 0.038621135, -0.0037077519, -0.025781834, 0.055241767, 0.0047857016, -0.0051927473, 0.033378, -0.013093787, 0.0022646282, 0.029569762, -0.028311145, 0.0073364284, 0.014016093, -0.028286435, 0.023899404, 0.045506176, -0.047919616, -0.006324924, -0.016664565, 0.0016572861, 0.0051313816, -0.02459598, 0.025424898, 0.03146537, 0.003080778, -0.025572341, -0.02976635, -0.029137043, 0.00072101277, 0.012726726, 0.008644465, -0.022569401, -0.011518856, 0.0007687874, 0.028595597, -0.034081444, -0.054671768, 0.068455026, 0.02573461, 0.041830823, 0.028673023, -0.04107109, 0.0356937, 0.014354358, -0.025512759, -0.012061176, -0.02874654, -0.04229319, -0.045646753, 0.028465452, -0.003346971, 0.03342873, 0.08186817, 0.037048414, 0.008678512, -0.09356362, -0.012295107, -0.00341726, -0.031770688, -0.050735574, -0.02714698, -0.001094973, 0.0016979219, 0.01964142, 0.008193626, -0.029948149, 0.057391077, 0.017571185, -0.015202771, 0.0030026638, -0.024916675, -0.0056154425, 0.0006007525, -0.032324214, 0.06401967, 0.03389213, 0.03670917, -0.050177656, 0.012099615, -0.040359143, -0.011316036, -0.013319242, 0.04006261, -0.017696884, 0.02856265, -0.004708274, -0.007547536, 0.02214602, 0.056259863, -0.039894573, 0.030988447, -0.0022750616, -0.034456093, -0.005792813, 0.026605537, -0.042203132, 0.04996679, 0.018808248, -0.010243543, 0.042709433, -0.03266248, 0.053349454, 0.027109504, 0.031025926, 0.023596281, -0.0013560861, 0.0057472354, 0.025836749, -0.038689774, 0.00085143204, -0.0016787022, -0.035924338, 0.0023354662, -0.011172197, -0.025756026, 0.04516297, 0.021329457, 0.033153407, -0.02832762, -0.059273507, -0.030140858, 0.063444726, -0.0030921728, -0.030342942, -0.0030718548, -0.0011218805, -0.03954203, -0.0037047316, 0.013842567, -0.015650865, 0.0014755226, -0.06796959, -0.020684225, 0.012969856, 0.03301942, 0.0026048853, 0.032665227, -0.014091324, -0.061208654, -0.0034449913, -0.0056352112, -0.0010981305, 0.05288379, 0.025679696, 0.02486739, 0.02911892, 0.043840654, -0.01802827, -0.006604708, -0.020072764, 0.040945616, 0.05578349, 0.0067496104, -0.0059071872, 0.014326191, 0.014966094, -0.0056052837, -0.0038998113, -0.005294749, -0.008229045, 0.03013427, 0.0041680974, -0.058994547, 0.0020361883, 0.0011257244], [-0.032257114, -0.084951125, -0.02520521, -0.04405821, 0.018841831, 0.02710692, -0.025887033, -0.0027094258, 0.01327847, 0.03839737, 0.0066404766, -0.0020936474, -0.05152279, 0.009325321, 0.00432212, 0.035524465, 0.03194302, -0.028630227, 0.04200405, 0.0659042, -0.014603388, 0.00692006, -0.017169297, 0.0028544317, -0.014341682, 0.044318184, 0.042478044, 0.027164776, -0.0063027916, 0.0027680243, -0.004747951, -0.041174732, -0.002294272, -0.00055767695, 0.0025485288, 0.021377448, -0.0066389875, 0.0018737485, -0.044067897, -0.05511119, -0.06929694, 0.0376489, -0.015635313, 0.012295211, -0.0050841463, 0.035595976, -0.0035804545, 0.03392245, -0.012131832, -0.044851523, 0.030817732, 0.0102765495, -0.033046454, 0.033196673, -0.011722978, 0.027532257, 0.04006037, 0.010064472, -0.0028365543, -0.00530749, -0.034141075, 0.0032119805, -0.08242594, -0.01631714, 0.023415478, 0.033507295, -0.028135123, -0.005151931, 0.020432925, -0.0363071, -0.022405898, 0.020619646, 0.01493052, -0.022871707, 0.016789526, 0.001454777, -0.078120455, -0.0027138952, -0.017151171, -0.013152336, 0.0058687674, 0.024721526, 0.014814441, -0.04553186, -0.02153934, 0.025076093, -0.018104635, -0.048515406, 0.043446656, 0.0162501, -0.06576913, 0.003669221, 0.03425616, -0.010917158, -0.014872046, 0.02175511, 0.024900671, 0.046509158, 0.020924555, 0.021485707, 0.045485184, -0.05077107, 0.009564432, -0.006785886, 0.00787967, 0.002810483, -0.0029418326, -0.02879932, -0.012561884, 0.024120644, -0.0069235363, 0.0021378442, -0.0049450994, -0.050096568, -0.0015305078, -0.02136491, 0.02181793, -0.010025273, -0.034235302, -0.007954965, 0.007031794, 0.03214653, -0.008143113, 0.011714194, -0.023220813, -0.015340337, 0.03236016, -0.0026279842, -0.05306025, 0.012446052, 0.018771315, -0.0060137734, 0.040583782, -0.041254684, -0.008804641, 0.011327812, -0.008815565, 0.039880604, -0.0076375166, 0.041181684, -0.035890084, 0.011289605, 0.011079049, 0.0026314603, 0.016697284, -0.021849692, -0.015873183, -0.03670239, 0.0108645195, -0.01256238, -0.025511112, 0.00886324, 0.0058598286, -0.0047427365, -0.0015513648, -0.05428535, 0.02958667, 0.01908119, -0.030153288, 0.06657609, -0.016837573, -0.006547117, 0.01824691, 0.026305912, -0.0056472854, -0.06744529, 0.001892526, -0.0069016865, -0.007958193, 0.008018281, 0.10138497, -0.0075730835, 0.03318401, 0.028527124, -0.041859042, -0.015099984, -0.0020626101, -0.016570527, 0.032564756, 0.028985294, 0.006624586, 0.0027486568, -0.020722937, -0.0076445933, -0.037441324, 0.038067035, 0.006276597, 0.0020449809, 0.01771369, 0.022881141, 0.035906844, -0.007585995, 0.0155047085, -0.0067983326, -0.0051755197, 0.03855196, -0.028739976, -0.004736529, 0.005361875, 0.047081985, 0.028914528, 0.0077061714, 0.016309692, -0.021382911, -0.031726502, -0.077202745, 0.04984852, 0.0039146636, 0.040611174, -0.021654053, -0.02315129, 0.028174851, 0.0123553, 0.038580514, 0.03561584, 0.032409817, 0.030764721, -0.03461371, 0.039273515, 0.044844575, 0.011549822, 0.017369332, 0.0384226, 0.00825342, -0.008881333, 0.00944227, -0.005570313, 0.031462315, 0.008591104, -0.0058325157, 0.06996039, 0.006469151, -0.023574565, -0.05115134, -0.0008139202, -0.0073227994, -0.052508034, 0.034859028, -0.034229342, 0.06454203, -0.00703375, 0.0187733, 0.034725938, -0.028456917, -0.0119500775, -0.013553585, -0.023522247, 0.027931767, -0.0413108, -0.008025979, 0.073760346, 0.0012553938, -0.015374167, 0.023734542, -0.0022028983, -0.027036652, -0.010179218, -0.000275114, 0.021743936, 0.032552343, 0.02638897, -0.015871197, -0.024096062, -0.044684544, 0.036197852, 0.04502335, 0.013557558, -0.024878448, 0.0018707999, -0.036732186, -0.03407838, -0.07471579, 0.02871018, 0.016101617, -0.015277267, 0.008902967, 0.0016615469, 0.012391054, 0.047422897, 0.034306813, -0.066267714, 0.0015300112, -0.0034444493, -0.01465553, 0.011516053, -0.00285617, 0.010473699, -0.05327056, -0.015939975, -0.030206919, -0.032191314, -0.0064756074, 0.008570745, 0.020889295, 0.035238426, -0.012904535, 0.0379558, 0.021640643, -0.0610614, -0.014733, 0.020283947, -0.0031662937, 0.0070774807, -0.008019523, -0.0068579856, -0.05819753, -0.02522979, 0.040291786, 0.03273608, -0.009955129, -0.02841123, -0.024861814, -0.056975413, 0.010532421, -0.007420629, -0.0017490099, 0.028431095, 0.090888925, -0.03016918, -0.027858518, -0.032302678, -0.010420563, -0.02382517, -0.06980149, 0.03786244, 0.057078704, 0.0309538, 0.0014401274, -0.05151758, -0.0032104908, 0.034348525, 0.04173539, -0.023773028, 0.003898524, 0.046125792, 0.0029401875, -0.017326098, 0.008584648, 0.019357298, 0.0388894, 0.008325675, -0.06651501, 0.0033828097, 0.0012285776, 0.038342647, -0.04967943, 0.0044177147, -0.070455, 0.0038839986, 0.009445249, 0.035674438, -0.021288559, 0.016843531, 0.00556932, -0.032354202, -0.021680247, -0.018244924, -0.020249184, -0.006528246, 0.010799403, 0.012504279, -0.017263683, -0.059027348, 0.033622008, 0.009015198, -0.0034955367, 0.081910476, 0.016562458, 0.035290074, 0.007901147, 0.06666598, 0.045332227, -0.0036037946, 0.016624035, 0.008017536, 0.07929937, -0.051197022, -0.0112675065, 0.054387156, -0.006830177, 0.02276295, -0.026750613, 0.06720628, 0.053235054, 0.008762306, 0.07180773, 0.042574137, 0.036013365, -0.041078392, 0.03617004, -0.011097423, 0.028870085, 0.013158543, 0.063858226, 0.0041555744, -0.008277256, 0.025502669, 0.011468379, 0.0037299297, 0.020669242, -0.0016694303, 0.04802676, -0.002649586, -0.021702718, 0.012909501, -0.043265402, -0.010621188, -0.014147017, -0.0073722107, 0.009401549, 0.03694473, 0.020336585, -0.016243644, 0.032165494, 0.03001896, -0.026180523, -0.033514246, 0.03175034, 0.029416587, 0.01104466, 0.02915215, 0.042879045, -0.068140864, 0.00723515, 0.02668407, -0.022542339, 0.022632593, -0.0196488, -0.027509412, -0.016097024, 0.031257715, 0.051933974, 0.0034662376, 0.088020585, 0.03454518, -0.05711247, 0.009056912, -0.043009154, -0.06289483, -0.018477377, -0.035437066, -0.03493873, -0.0071996436, 0.00597057, 0.0018997266, 0.0072975974, -0.024305377, 0.008990368, 0.018128721, -0.03969984, 0.03002087, -0.018248897, -0.01602452, 0.0028852206, -0.030939894, 0.010075926, 0.05903529, -0.038708635, -0.036309086, -0.038253758, -0.036642797, -0.03006837, 0.017544724, -0.014135595, 0.014381161, 0.01087743, 0.013546136, -0.056184832, 0.017779117, 0.007980788, -0.00020310763, -0.026315598, -0.021548279, -0.02636774, -0.021452434, -0.015327052, 0.03646204, 0.008308542, -0.0112630995, -0.010702629, 0.023876319, 0.027101459, 0.029139735, 0.007861109, 0.058464453, 0.04218878, -0.04152334, -0.006333581, -0.036322992, -0.00045935097, 0.009387644, 0.013877862, 0.020398162, 0.06104551, -0.054756623, -0.048146937, 0.024071977, 0.041826263, -0.06636107, -0.0018297067, 0.047029596, 0.028756239, -0.057835516, 0.016958244, -0.0040224246, -0.05553727, 0.054063234, 0.05614709, -0.020825235, 0.019067287, -0.00049709226, -0.06124812, -0.012785352, -0.038516954, 0.019163625, 0.03605036, 0.015744068, -0.028305704, -0.030743241, -0.031466287, -0.02662597, 0.013650421, -0.019983506, 0.039079595, 0.021713644, -0.02284936, 0.03216748, -0.019040758, 0.014301272, 0.015428234, -0.021264846, -0.045017388, -0.04988204, 0.008521581, -0.005953189, -0.036666635, 0.02512988, -0.0025564744, 0.022733776, 0.0032929257, -0.0031484163, 0.026305027, 0.027049068, -0.004856457, -0.03525432, -0.026992457, -0.011500162, 0.028683364, 0.00407854, 0.015261377, -0.014397301, -0.023883644, -0.107431516, -0.06831567, 0.045667928, -0.004180839, -0.029581208, 0.021828359, 0.060934275, -0.007933736, -0.048018314, 0.022149965, 0.01572197, 0.020078355, -0.0051963767, 0.016819073, 0.013489524, -0.08829471, -0.04012046, 0.04158343, -0.04303535, -0.04532925, -0.016925469, -0.049826417, 0.00038684803, -0.015081112, 0.041142445, -0.00077981036, 0.014767264, -0.0041706585, -0.022869224, -0.039548878, 0.0016613606, -0.006976176, 0.005056337, 0.029672584, -0.03999184, -0.016037308, 0.026667185, -0.012074351, 0.056599487, 0.0032906912, 0.032383125, 0.017821327, -0.010905985, -0.020655649, -0.044975672, 0.020890467, 0.0095194895, -0.055759747, -0.04959203, -0.018230027, -0.0026173072, -0.022730177, 0.03372679, -0.033623125, -0.017477931, 0.04489001, 0.0019387715, 0.027291408, -0.008171481, 0.018137658, -0.015467961, -0.014625735, -0.0013231791, -0.008247833, -0.009198938, 0.0007170841, -0.020268552, 0.0019387094, 0.030124733, 0.00022520611, 0.0091204755, 0.037286386, 0.0041048597, 0.012520511, -0.02177603, 0.069914214, 0.018959029, 0.0022028983, 0.0409314, -0.0072445236, 0.06394762, -0.029342843, -0.06636107, 0.057962645, -0.03969587, -0.04097113, -0.009449222, 0.0022734147, -0.017034223, 0.040269934, -0.025274733, -0.00022272315, 0.03041996, -0.011309469, 0.015326927, 0.02531446, -0.03682952, 0.015623892, 0.05200052, 0.011763358, 0.01819421, -0.043781485, 0.042707223, 0.024516927, 0.0037488006, -0.036837466, -0.023306228, -0.03780452, 0.021534933, -0.035232466, 0.025048284, 0.016347928, 0.031008674, -0.025636626, 0.0128946025, -0.011949084, -0.01554245, -0.035633966, 0.019337434, 0.011670991, 0.011925, -0.03413654, 0.003865997, 0.003133022, -0.03891969, -0.021584032, -0.0030719405, 0.044014268, -0.011330327, -0.020181647, 0.009767043, 0.035761096, 0.031314824, 0.03914763, -0.044135433, 0.057292238, -0.041129045, -0.057871766, -0.0028493418, 0.02990896, 0.009782562, -0.022548422, -0.017295433, -0.01709729, 0.043348826, 0.0469998, 0.03741153, 0.028987281, 0.076222464, 0.05986063, 0.0049291463, 0.026534999, 0.026407963, -0.012435748, 0.03767721, -0.004129689, -0.04023418, -0.051204972, -0.013863647, 0.009325073, 0.0071887183, 0.054792374, 0.08069133, -0.021259757, 0.021491792, -0.031222954, 0.0054347427, 0.013656431, -0.013343525, -0.016318133, -0.0547745, -0.03585619, 0.04339054, -0.024569567, -0.029820569, -0.039394934, -0.012822596, -0.008732138, -0.011120763, -0.057008184, -0.02263483, 0.022214709, -0.009747179, 0.005342873, -0.0038108751, -0.07411193, 0.03531391, -0.0071579297, -0.008142182, -0.021705328, 0.003312293, 0.01030436, 0.030445285, -0.058594313, -0.0045200135, -0.030207913, 0.005333437, -0.0033296738, -0.020868935, 0.043051366, 0.03681959, 0.028089559, -0.0012663188, -0.019106021, 0.041551646, -0.04905918, 0.0022962582, 0.037267517, 0.013374314, -0.039024472, 0.014806247, -0.01628188, 0.005585118, -0.0006098195, -0.0060942215, 0.03849808, -0.0053045107, -0.013938695, 0.019010674, -0.004313678, -0.009383019, 0.01452654, -0.009757856, 0.0027556093, -0.07032242, -0.026491392, 0.0068592275, -0.03932243, -0.0414568, 0.013166737, 0.014602333, -0.013443977, -0.014211077, 0.06789853, -0.019744145, -0.019642824, 0.017445404, -0.05431167, 0.027086312, -0.023073323, -0.029064748, 0.032922305, -0.038467787, 0.048439927, 0.006074358, 0.044061936, -0.03267835, 0.006587838, 0.0019188456, -0.01956587, 0.026910517, -0.013871903, 0.0030828656, 0.0069322265, 0.013638502, 0.021472795, -0.012116933, -0.06123223, -0.016192494, 0.0138182705, 0.0022168339, 0.022494294, 0.04061159, 0.01461183, 0.002538597, -0.0048060524, 0.038809944, -0.029101498, -0.021972371, -0.014905815, -0.0053349272, -0.009806739, -0.01497449, 0.0062973294, 0.0053751515, -0.011854731, -0.044793796, 0.010233844, 0.039801147, 0.026458118, 0.018871132, 0.027850572, 0.028375475, -0.0067159594, -0.028318118, 0.010663399, 0.007065066, -0.0735915, -0.0018292101, 0.052051168, -0.011146586, -0.004834855, 0.02962938, -0.016389394, 0.041425016, -0.052246828, 0.0012017614, -0.04690048, -0.064116456, 0.005414879, -0.014312384, 0.028207129, 0.0022545443, 0.028103342, -0.011754839, 0.03461346, 0.027469685, 0.018739471, 0.025658103, -0.020266812, 0.036650743, -0.016581472, -0.025749478, 0.060479388, -0.00872593, 0.021977337, 0.023951055, -0.034032695, 0.031402722, 0.02438086, -0.050124377, 0.058538694, 0.014185442, -0.042671468, -0.012226185, -0.0029625655, 0.0132511575, 0.005578259, -0.018811043, 0.04575831, 0.03332256, -0.02391704, -0.041726448, -0.015094521, -0.015733143, -0.010545891, 0.032937203, -0.004817723, -0.0009460147, -0.040126912, -0.040427353, 0.05181479, -0.038766243, -0.048710074, 0.06799387, -0.004239716, 0.044001352, 0.017302385, -0.020558905, 0.06878843, 0.03626638, -0.020853044, -0.020180654, -0.002974608, -0.009372994, -0.041471448, 0.022110423, -0.011439825, 0.044981632, 0.07533555, 0.07269763, 0.00013954338, -0.07819519, -0.019533092, -0.014143541, -0.0122242905, -0.05014027, -0.033393823, 0.01323924, 0.011248885, 0.04296595, 0.014379671, -0.01124094, 0.07019677, 0.005413885, 0.004839076, -0.0078506805, -0.022853455, -0.03688911, -0.0064423354, -0.01764305, 0.07756824, 0.04330711, 0.028127922, -0.020937467, 0.0021217049, -0.03377744, 0.013745767, 0.0142068565, -0.008444299, -0.0025847182, 0.028043253, -0.017731445, -0.015065967, 0.04469907, 0.044926014, -0.049058188, 0.061687358, -0.011181596, -0.026406473, -0.02188621, 0.03709669, -0.04269332, 0.021977337, 0.04471099, -0.0015781809, -0.0027868948, -0.010129309, 0.082683176, 0.014972359, 0.034569886, 0.01456515, 0.00023091698, 0.017903887, 0.033291772, -0.03578096, -5.4749667e-05, 0.006272996, -0.0109519195, -0.013476116, -0.020133974, -0.03494643, 0.016501065, 0.011726113, 0.039863717, -0.023176119, -0.065228835, -0.03716919, 0.056202706, -0.030632006, -0.02160191, 0.007219508, -0.0087390905, -0.020373333, -0.018363114, 0.020107158, -0.024498552, -0.010392753, -0.058439374, 0.011542869, 0.022294164, 0.029450107, -0.016431358, 0.039736837, 0.0011223061, -0.034529287, -0.0003075479, 0.02906568, -0.005018161, 0.03787138, 0.013808587, 0.021856168, 0.03490869, 0.008460499, 0.01730735, 0.017361294, -0.043198854, 0.030013496, 0.05891859, -0.0072880373, -0.0084972475, -0.012705897, 0.017440936, 0.005456096, 0.021410225, -0.03221118, -0.03298537, 0.049925737, 0.030569434, -0.041852087, 0.020578677, 0.0030818724], [-0.018039286, -0.10094941, -0.019886632, -0.025895681, -0.025436237, 0.038366087, 0.0108148055, -0.041323215, 0.046363685, 0.032423284, 0.021714132, 0.0025742059, -0.078776695, 0.0052026655, -0.02332519, 0.04586798, -0.02033494, -0.02008423, 0.029340949, 0.051932994, -0.032084055, -0.0009945601, -0.008087118, 0.015438096, -0.036515743, 0.0476922, -0.008025012, -0.011546376, 0.019990142, 0.010795958, -0.004155279, -0.03537698, -0.0033180555, 0.0009234589, 0.036929216, 0.0055770176, 0.021566218, -0.011971271, -0.0430285, -0.06342569, -0.054879837, 0.0119921155, -0.022471404, 0.022134457, -0.0009677186, 0.04208848, 0.025300032, 0.036577422, -0.030781677, -0.04915976, 0.024584452, 0.014883564, -0.054114573, -0.01051084, -0.036799006, 0.04108496, 0.017154519, 0.036327142, 0.030448442, -0.0011996541, 0.008492452, -0.034675393, -0.036769312, -0.0018520576, 0.0032101187, 0.031740114, 0.02404134, -0.012246538, 0.0008456919, -0.023845457, -0.020970425, 0.011037711, 0.013838586, -0.019232443, 0.043766353, 0.010536825, -0.066635236, 0.021230416, -0.018311555, -0.026596984, -0.020680454, 0.0030296533, 0.030173248, -0.060590778, -0.078982286, 0.019679897, -0.014361014, -0.004942532, 0.035572298, -0.015089444, -0.03627817, 0.0177219, 0.019657338, 0.000102796905, -0.022990527, 0.0139798075, 0.0003629302, 0.04674975, 0.047405366, 0.02097942, 0.022938415, -0.05838179, -0.01434131, 0.005886836, 0.0155194765, -0.0027047007, 0.026548441, -0.04367041, -0.0031147462, -0.0055121984, 0.021136185, -0.012829053, 0.0056998027, -0.059370924, 0.016860977, 0.003991518, 0.058666192, -0.026649525, -0.06458387, -0.04118044, -0.024760349, 0.012772515, 0.0048897057, -0.0009103237, -0.007028024, -0.010327377, 0.012191713, 0.018639361, -0.05236474, -0.0025893396, 0.051212844, 0.01754115, 0.01942276, 0.0050273393, -0.053673692, 0.0025693516, -0.009075253, 0.03197241, -0.022243965, 0.013841603, -0.03452716, -0.03865783, 0.031452995, 0.0010185103, 0.035036325, -0.035796165, 0.007463055, -0.057726458, 0.0028109243, -0.0061872317, 0.005737209, -0.0024614148, -0.0012472691, 0.008179778, 0.015279047, -0.036851548, 0.008306328, 0.030599212, -0.016897528, 0.031303942, -0.016235342, 0.035183955, 0.036808427, 0.023506226, -0.024216667, -0.04878912, 0.02969003, 0.0016675943, 0.0073901694, 0.04994787, 0.057424635, -0.008134661, -0.0019393992, 0.05547149, -0.048064977, -0.017633095, 0.028117238, -0.041740112, 0.036865827, 0.04855669, -0.016913518, 0.013011804, -0.0074009486, -0.0010719433, -0.04247225, 0.015198522, -0.046784297, -0.03993317, 0.0037446627, 0.03159577, 0.04738024, -0.020486565, 0.005567023, -0.0027755164, -0.0077032, 0.050162893, -0.054578304, 0.022431426, 0.029767128, 0.011723416, -0.028236026, -0.011883893, 0.01567767, -0.012100624, -0.048442468, -0.055763893, 0.0272309, -0.0029902477, 0.045746904, -0.050839495, 0.008232604, 0.04361073, 0.016088856, 0.06204878, 0.014074038, 0.04168072, 0.024127005, -0.046160378, 0.032349043, 0.059887193, -0.035181668, 0.0025850567, 0.042562485, -0.012629171, -0.029117223, 0.006342569, 0.0061226976, 0.022924852, 0.018927194, 0.00177496, 0.043467097, 0.0018857521, -0.047588114, -0.052370455, 0.013725385, -0.00682343, -0.041518528, 0.05727958, -0.058635354, 0.035399828, -0.043521926, 0.014687394, 0.03502633, -0.032783646, -0.0093153985, -0.02049599, -0.06799216, 0.005295754, -0.007971329, 0.002828628, 0.07033821, -0.017271878, -0.03236732, 0.0007230049, 0.008811123, 0.016066015, -0.0115327425, -0.02310189, -0.023929404, 0.03771904, -0.022280088, -0.02784229, 0.006801336, -0.050190017, 0.05432531, 0.029354228, 0.013804196, -0.020368636, 0.02580659, -0.0457609, -0.014072325, -0.068316534, 0.04995016, 0.03597424, -0.0096219685, 0.022553926, 0.023927407, 0.020693017, 0.06345081, 0.02364129, -0.05196783, -0.035691015, 0.023036785, 0.0007315713, 0.029931033, -0.014605156, 0.0007308574, -0.03608628, 0.010758267, -0.036332425, -0.01988549, 0.02672948, 0.018586822, 0.04115417, 0.04416933, -0.025717787, 0.052129455, -0.011034248, -0.041813213, -0.028546128, 0.036593415, -0.003770362, -0.0031907016, 0.00018503443, 0.002181579, -0.030030973, -0.05475648, 0.03053582, 0.036566574, -0.008844389, -0.011035819, -0.014824171, -0.038578536, -0.018782707, 0.00683942, -0.01057666, 0.040611632, 0.089721136, -0.02436208, -0.013306488, -0.018421205, -0.0403672, -0.011588352, -0.053408418, 0.020127634, 0.06764607, 0.03738495, -0.021888886, -0.039542545, -0.050168317, 0.03582358, 0.048314545, -0.0050581787, 0.016176235, 0.0316683, 0.012351547, 0.004233519, -0.006692364, 0.018915057, 0.025962787, 0.035869267, -0.076370105, -0.046546437, -0.00661441, 0.06328634, -0.062210403, -0.021966556, -0.057091687, -0.0020468007, -0.0048143216, 0.01704287, -0.039472297, 0.012679427, -0.0006830283, -0.025486778, 0.0016727342, 0.004080466, 0.005474506, 0.008322838, 0.0059773545, 0.006391683, -0.020089084, -0.056243613, 0.045952212, -0.0025253773, -0.029650053, 0.05945316, -0.0029808248, 0.034574024, -0.0063515636, 0.0680881, 0.029354228, -0.019220738, 0.0050033536, -0.007236902, 0.053577747, -0.049834225, -0.0068762563, 0.03062434, 0.009608655, -0.0015944942, -0.009303833, 0.03796975, 0.021834062, 0.032481253, 0.028120665, 0.025888829, 0.04118372, -0.02999842, 0.03859224, 0.011818217, 0.014206532, -0.0045139263, 0.022161977, 0.015485782, -0.019626213, 0.052695975, 0.04382061, -3.5122277e-05, -0.01675229, -0.012912433, 0.026369119, 0.016433798, -0.009184618, -0.020915171, -0.058948312, -0.047526438, 0.0151020065, 0.01505632, 0.022957975, 0.030747695, -0.019858077, -0.022898583, 0.03587726, 0.026312865, -0.006742906, -0.022300074, 0.013770787, 0.0137833515, 0.027703336, 0.052234534, 0.040218715, -0.059539966, 0.04388971, 0.017348833, -0.010176893, -0.030328512, -0.01518653, -0.051003255, 0.018865516, 0.0070727123, 0.040922947, -0.0033957246, 0.09296039, 0.053139146, -0.005315742, 0.004713809, -0.002654016, -0.032486103, -0.02007852, -0.042059924, -0.03231021, -0.027240608, 0.016970627, -0.037024017, 0.009232875, -0.03116686, 0.043909125, 0.059569094, -0.0186999, -0.002236975, -0.021741545, -0.00427321, -0.030940512, -0.029749423, 0.05008265, 0.075822994, -0.0515892, -0.0127719445, -0.045525678, -0.038683616, -0.012252249, 0.039792683, -0.011580071, -0.0019474302, 0.012867888, 0.037153084, -0.05257262, 0.0012552644, -0.013597603, 0.008507014, -0.041752104, -0.0097507145, -0.040923446, -0.021911303, -0.011790805, 0.05519051, 0.009941602, -0.0045247767, 0.036526773, 0.03525134, 0.010113502, 0.03688467, 0.03499035, -0.0028029287, 0.022539936, -0.034408405, -0.009022713, 0.00010850784, -0.010435028, 0.00931911, 0.013859306, 0.0065061874, 0.059722718, -0.042455122, -0.0020433739, 0.02283005, 0.029613717, -0.050388757, 0.007857109, 0.056358974, 0.052202553, -0.08285887, 0.031592913, 0.011184303, -0.06765407, 0.026588991, 0.048495583, -0.037121102, 0.0020503697, -0.039199315, -0.019959018, -0.025861418, -0.02465298, 0.03572078, 0.03874301, -0.01416884, -0.0323202, -0.025553027, -0.013403574, -0.0043920693, -0.010608355, -0.008020443, 0.025973352, 0.023787204, -0.013597746, 0.031310793, -0.042231824, 0.02702245, -0.015370421, -0.0113028055, -0.048847944, -0.03901485, -0.016097425, -0.025240066, -0.024230372, 0.036490615, 0.006257476, 0.005809167, -0.019709593, -0.02372724, -0.01394183, 0.0065818573, 0.016751327, -0.010539252, -0.004671441, -0.017917927, 0.030952148, 0.03530731, -0.0063951095, -0.009140929, 0.017251603, -0.06704186, -0.058890063, 0.057790134, -0.009815534, -0.018832393, 0.04984108, 0.06612125, 0.028387938, -0.021762677, 0.03538498, 0.00044887981, 0.03189788, 0.014309329, 0.050630905, 0.0037096832, -0.0865527, -0.049680598, 0.025614133, -0.037255883, -0.030241707, -0.037852675, -0.008260302, 0.004721233, -0.018563122, 0.010478716, -0.01794948, -0.00079496275, 0.0037623667, 0.008334973, -0.021067083, -0.0005570664, -0.005148554, 0.009301264, 0.05001469, -0.008416211, -0.013729668, 0.047689196, -0.010349935, 0.049083237, -0.03537013, 0.058562253, 0.014876995, -0.059736423, -0.006670377, -0.027051577, -0.009332817, -0.0009842804, -0.049959294, -0.033123445, -0.062478814, 0.0008446479, -0.028609887, 0.014355017, -0.005833724, -0.016927224, 0.029060684, 0.004180407, 0.0035669098, -0.040251557, 0.025889972, -0.042832118, -0.021173878, 0.024502214, -0.008096925, -0.0066955048, -0.0056960904, -0.017538294, 0.014589665, 0.016922655, -0.019289268, -0.00655987, 0.01856512, -0.0072371876, 0.02203423, -0.010631484, 0.06917547, 0.0075155953, 0.009177193, 0.03849858, 0.004081608, 0.049598932, -0.009763992, -0.08309645, 0.11800171, 0.022667859, -0.05233276, -0.010913033, 0.007296296, 0.0040661884, 0.036771595, 0.003364314, 0.00026612976, 0.0018330687, -0.0020293822, 0.030859059, 0.01964506, -0.04568751, 0.018481597, 0.034171976, -0.0125709195, 0.018222464, -0.03976184, 0.022128176, -0.0035407823, 0.0019691319, 0.002974257, -0.015841004, -0.018357135, 0.021194438, -0.06553417, 0.0042306636, 0.03124112, 0.00440085, -0.0045390544, 0.049242, -0.017882092, -0.036243904, -0.015200806, 0.025945652, -0.002419368, -0.005215801, -0.031174302, 0.018553128, 0.0074234353, -0.031251974, -0.025599854, 0.009527417, 0.04798674, -0.02367898, -0.015067742, -0.021696, -0.029944167, 0.031718556, 0.03991604, 0.014610867, 0.036850974, -0.038774993, -0.054918386, -0.018316695, 0.010711437, -0.02696177, -0.027648369, -0.021325218, -0.026059702, 0.040434588, -0.0059747845, 0.03280706, 0.024506781, 0.024456525, 0.049685173, 0.027329128, 0.009790263, 0.012331917, -0.0037594398, 0.0439057, -0.001886109, -0.027702624, -0.09095013, -0.0021307513, 0.032470115, 0.024381142, 0.057456616, 0.030694583, -0.009678899, 0.024213238, -0.03071857, -0.008036434, -0.0062716105, 0.0032677993, 0.017725559, -0.08582856, -0.011673159, 0.025909387, -0.042978242, 0.0006307732, -0.03613854, -0.0034939526, 0.012024954, -0.02061078, -0.022957405, 0.011534954, 0.028796839, 0.028537849, 0.003912279, -0.03395496, -0.041330066, 0.00944932, -0.009259717, 0.004919974, -0.014190542, 0.03450264, -0.008833394, 0.009882209, -0.027912784, -0.016006013, -0.039607648, 0.015666962, 0.017357115, -0.0045573297, 0.040139336, 0.023980234, 0.012793431, -0.017902652, -0.016994612, 0.03369911, -0.021497115, 0.008230605, -0.0005759482, 0.019574244, -0.061728362, -0.01599634, 0.010278548, -0.011126052, 0.021432012, -0.010734852, 0.011771666, 0.0018639435, 0.0052379305, 0.003533358, 0.009621005, -0.0020599356, -0.009672618, 0.023172136, 0.022007102, -0.0866555, -0.04929911, 0.006145541, -0.038334105, -0.052780498, -0.019993998, 0.024572743, -0.01667023, -0.0073636845, 0.04486096, 0.0062866015, -0.0047672065, 0.020670174, -0.08384572, 0.02764323, -0.009311115, -0.033528924, 0.021152178, -0.059245285, 0.04245284, 0.006013012, 0.049520697, -0.028809119, -0.019989429, -0.016794158, -0.012751956, 0.022052791, 0.011600059, 0.0023891001, 0.0067066415, -0.026392533, 0.026491905, -0.018500015, -0.07876527, 0.009425334, 0.031742543, -0.01569623, -0.018108245, 0.013480242, 0.01771419, 0.008678343, 0.02483516, 0.026619831, -0.019104233, -0.007129536, 0.035775606, 0.003370596, -0.00291315, -0.022125721, 0.010433314, 0.018858662, 0.0061001396, -0.03932324, 0.011292383, 0.028759148, -0.013665135, 0.022679852, 0.06460386, 0.00732485, -0.021476557, -0.01659656, -0.028604953, 0.038175344, -0.07171569, -0.046606403, 0.02608243, 0.0031681436, 0.024154989, -0.019204745, -0.035049178, 0.019347519, -0.05486842, -0.007362257, -0.05451434, -0.04661725, -0.03434673, -0.02474093, -0.02207735, 0.021398604, 0.0075352984, -0.013084904, 0.071203984, 0.018948896, 0.029518703, 0.006250052, -0.050027825, 0.02908924, -0.0024008788, 0.027646655, 0.050966706, -0.041258108, 0.021534236, 0.03125711, -0.036068007, 0.031881317, 0.017168796, -0.017104262, 0.0030994695, 0.050475564, -0.04049741, -0.0075675654, -0.012790006, 0.006270611, 0.036530595, -0.0064031053, 0.042983953, 0.014462248, 0.005078988, -0.024502497, -0.02161726, -0.03183506, 0.014217382, 0.01491526, 0.00427321, -0.0153384395, -0.023792915, -0.00017018599, 0.030299101, -0.02418811, -0.051030666, 0.057837464, 0.007453632, 0.04771604, 0.042661287, -0.043174274, 0.04395253, 0.01765137, -0.012737678, -0.022656437, -0.002942276, -0.033973806, -0.0548747, 0.011126623, -0.0144075565, 0.03729015, 0.06350564, 0.022476256, 0.017237613, -0.041490544, -0.018600814, 0.0013158004, -0.03573463, -0.022847468, -0.007604544, -0.002212989, 0.027321134, -0.010028409, -0.0032355324, -0.039413188, 0.040481422, 0.024468875, 0.0123493355, 0.021199077, 0.015839862, -0.011919872, 0.023166995, -0.019106517, 0.05970901, 0.013384157, 0.03154951, -0.045815434, 0.001445296, -0.037148517, 0.010541536, -0.0076566557, 0.0064764903, -0.026893953, 0.03808511, -0.017027166, -0.008692799, 0.0138752265, 0.057049997, -0.0077725877, 0.002818491, -0.0341537, -0.043720666, 0.0060947146, 0.035528325, -0.038765855, 0.030783106, 0.009327105, -0.011338498, 0.030574083, -0.022398302, 0.05951655, 0.02539369, 0.011922728, 0.029040124, 0.010102651, -0.01142302, 0.048019003, -0.026937356, 0.011309943, 0.0056294156, -0.0148804225, 0.044773765, -0.016548589, -0.022611894, 0.009530415, 0.008325951, 0.05648347, -0.048195757, -0.05641494, -0.035627123, 0.0557025, -0.016469207, -0.039685316, -0.0053043202, 0.014061188, -0.011581784, -0.00042603604, 0.0018834678, -0.012316211, -0.013211686, -0.06813379, -0.016356701, 0.0014054622, 0.026181228, 0.008161218, 0.041659016, 0.011756682, -0.04039622, -0.022425717, 0.016923226, 0.011110633, 0.054647405, 0.021935144, 0.0483648, 0.03100526, 0.0072137727, 0.006978768, 0.017597402, -0.067162074, 0.011124909, 0.045082007, -0.005674389, 0.013560053, 0.007464197, -0.0052974666, 0.0038297556, 0.007877098, 0.011244874, -0.005896544, 0.028490733, 0.020579511, -0.049463585, -0.0129986685, -0.0084756045], [-0.04188384, -0.0789863, -0.0413133, -0.013041144, -0.018205017, 0.021349367, 0.012660978, -0.04332615, 0.033209674, 0.038555212, -0.030836975, 0.0271839, -0.09418365, -0.015083593, -0.0065167993, 0.051988136, -0.011025393, -0.009084226, 0.042662166, 0.030076643, -0.021137228, -0.023845403, -0.0055758883, 0.020804076, -0.033799656, 0.06618254, -0.012923321, -0.012032833, 0.014609764, -0.002885779, -0.0060446393, -0.060550284, 0.01181997, 0.0020848187, 0.0111159375, 0.029583298, 0.017328314, -0.0073032673, -0.03673408, -0.049246293, -0.059066765, -0.0010453113, -0.031184059, 0.038238313, 0.0029716792, 0.026982497, 0.03645995, 0.019722197, -0.018093, -0.025087671, 0.028355157, 0.009170996, -0.024024168, 0.01627923, -0.041310985, 0.032054666, 0.02748571, 0.014845626, 0.02850142, -0.014763209, 0.018065719, -0.0129677225, -0.04794618, 0.009541876, 0.0022693877, 0.011103748, 0.020758804, 0.01047749, 0.019798812, -0.03443433, -0.01583696, 0.015946077, 0.0013167601, -0.02585767, 0.060956568, -0.0061325706, -0.06946205, 0.023685211, -0.031741247, -0.030589722, -0.012316218, 0.021681938, 0.0044560675, -0.05403813, -0.035058558, -0.0047900914, -0.019537048, -0.023066789, 0.042436972, 0.008424014, -0.050003145, -0.0019649286, 0.012311138, -0.0025897718, 0.022399612, 0.009182604, 0.001975122, 0.063329265, 0.036600407, 0.038160536, 0.030907786, -0.05545127, 0.006100648, -0.013552482, -0.029055128, 0.0029147994, 0.028957618, -0.047388997, -0.020977473, 0.021060616, 0.0030169508, 0.0016988486, 0.01114902, -0.05681479, 0.04140283, -0.019936368, 0.030029051, -0.02035426, -0.053866323, -0.005098287, -0.043365616, 0.011770635, 0.0061012288, 0.0057297684, -0.010039864, 0.0031109767, 0.011832159, 0.0182944, -0.048928235, 0.012104368, 0.054079045, 0.01909819, 0.028727777, -0.009916383, -0.032539885, 0.032312367, 0.0001439407, 0.056077674, -0.025279006, 0.056547802, -0.029623928, -0.0023642841, 1.625137e-05, 0.01870997, 0.020683352, -0.007844188, -0.00041092752, -0.04577764, -0.019202154, -0.009482094, 0.010699205, -0.01660716, 0.022316612, 0.02161026, 0.02578802, -0.047393635, 0.019415164, 0.036934722, -0.035214398, 0.02631561, -0.010714876, 0.012441004, 0.03975085, 0.0064385897, -0.030824205, -0.048234068, 0.031324513, 0.011707951, 0.004850744, 0.06824183, 0.07002483, 0.004037305, 0.011421716, 0.028318012, -0.06261885, -0.02478334, 0.0057843267, -0.032110386, 0.021791345, 0.026316773, 0.004198077, 0.0037958557, 0.0062364633, 0.0008694483, -0.030559542, 0.0012467123, -0.027406774, -0.0066131465, -0.020194866, 0.016112072, 0.023617158, -0.034465022, 0.023746733, 0.013661018, -0.030212458, 0.029305283, -0.036386818, -0.00493171, 0.017041303, 0.037798945, 0.025405534, 0.004017281, 0.025150936, -0.030246122, -0.01091606, -0.051516842, 0.024774052, -0.021460515, 0.044694748, -0.024692794, 0.024905805, 0.048106376, 0.028873462, 0.04480387, 0.024735166, 0.04477949, 0.03636476, -0.056294743, 0.029860733, 0.04348257, -0.04316364, 0.021604601, 0.052507013, -0.016049389, -0.026883828, -0.005724545, -0.023945233, 0.030167187, 0.020509228, 0.00137919, 0.05048488, 0.0003557889, -0.022881929, -0.04985224, 0.0051795435, -0.003528869, -0.037981775, 0.038127456, -0.019785173, 0.03833466, -0.03470364, 0.027775478, 0.051122166, -0.034127876, -0.030320413, -0.027196668, -0.04077701, -0.0038398942, -0.02086676, 0.025264494, 0.062669925, -0.024086852, 0.006116609, -0.003163213, -0.02008089, -0.007464394, -0.009013706, 0.013695261, -0.014031897, 0.04875643, -0.01113451, -0.040983632, -0.012558391, -0.02647116, 0.064671166, 0.0033001888, 0.020636916, -0.043771904, 0.023064902, -0.020527802, -0.01955098, -0.070988305, 0.034394864, 0.023254842, -0.010983678, 0.03198966, 0.009963831, 0.02130473, 0.048426762, 0.0044598402, -0.062295564, -0.019205637, -0.009399676, 0.047360558, 0.03183469, 0.0019301404, -0.0061752307, -0.05058819, 0.008100147, -0.04282468, -0.013344697, -0.007527286, 0.026450556, 0.052731052, 0.04379396, -0.02344115, 0.03983907, -0.015124221, -0.042246092, -0.040054984, 0.009501211, -0.0016795862, -0.021386802, -0.011266261, -0.0016778088, -0.029047001, -0.06381797, 0.03694981, -0.0026849585, 0.004962472, -0.0383039, 0.007944598, -0.05637368, -0.0031220044, 0.012439263, -0.016834931, 0.024998087, 0.07808319, -0.010875938, -0.017754622, -0.017545676, -0.04034519, -0.0053432183, -0.07221935, 0.02420715, 0.066783845, 0.037510484, 0.002890422, -0.04219204, -0.043833427, 0.03927608, 0.038958598, 0.0066584186, 0.01921028, 0.040025093, 0.017378518, -0.0017545676, 0.014682532, 0.021065257, 0.042748068, 0.01779409, -0.056081157, -0.025988262, -0.013081628, 0.032548662, -0.06463866, -0.030068154, -0.063454635, 0.00553127, 0.014954743, -0.00011608121, -0.025551796, 0.015711593, 0.008679392, 0.0052573183, -0.0045717135, 0.02252643, -0.014834889, -0.022158742, -0.004794299, 0.0023941752, -0.012501947, -0.033072352, 0.042522293, -0.0014031318, -0.027740799, 0.06710887, 0.008186047, 0.058193833, -0.019233495, 0.05565398, 0.0126760695, -0.022647446, -0.010460368, 0.00457447, 0.028305242, -0.050188877, 0.007836643, 0.05131022, -0.0011271485, 0.022136109, -0.020980373, 0.037783857, 0.037668355, 0.021233575, 0.054908738, 0.026805473, 0.032617804, -0.0112523325, 0.05352273, -0.006551043, -0.004478413, 0.046348907, 0.032135922, 0.014662037, -0.028309887, 0.026961602, 0.039387517, 0.03140949, 0.00914662, 0.0034278783, 0.020976456, -0.009042727, -0.01856835, 0.007512196, -0.052789092, -0.037854664, 0.020191167, -0.008769319, 0.04180897, 0.028569907, -0.008838278, -0.00929796, 0.039424516, 0.034123234, -0.005758789, -0.03238666, 0.039342247, 0.017197432, 0.017007058, 0.044512212, 0.038412433, -0.054753184, 0.034126714, 0.026682284, -0.0013825273, -0.01657814, -0.023321876, -0.022502342, 0.05018118, 0.006602119, 0.013659276, -0.019264838, 0.07635822, 0.054035805, -0.04565699, -0.0032398265, -0.0018410481, -0.041533858, -0.03929117, -0.027502287, -0.02431205, -0.022060074, -0.008008733, -0.041887905, 0.013517948, -0.053462364, 0.01776507, 0.0348441, -0.04413408, 0.004639186, -0.03322012, -0.029837515, -0.04449625, -0.019833637, 0.03570078, 0.06761499, -0.06411165, -0.017304953, -0.054939207, -0.058114897, -0.002752866, 0.019115092, -0.010732434, 0.012605241, 0.01303592, 0.033942148, -0.07091169, 0.010984262, 0.0090647815, 0.009283015, -0.043495633, -0.004577082, -0.028773632, -0.023952197, 0.0020302604, 0.02764358, 0.022907466, -0.0002854147, 0.013203078, 0.022408318, 0.013458456, 0.029319791, 0.052012507, 0.033205032, 0.038067672, -0.025384638, 0.0052448395, 0.02811371, -0.00046316406, 0.030590156, 0.038083926, 0.012576239, 0.05433065, -0.029727237, -0.024832092, 0.004680104, 0.036971867, -0.046571784, -0.015782837, 0.06840434, 0.01772444, -0.059080694, 0.043135777, 0.018640323, -0.0562251, 0.03041328, 0.04829907, -0.033642657, -0.012665622, -0.02219705, -0.053165197, -0.016787665, -0.04503835, 0.054003593, 0.038337126, -0.020934084, -0.042074796, -0.018888734, -0.025982749, -0.014676148, -0.028668286, -0.024688734, 0.05790131, 0.01753697, -0.034848742, 0.031014143, -0.047005925, 0.023096679, -0.018127242, -0.011286286, -0.058686018, -0.06145804, -0.001599309, -0.0008659659, -0.011252913, 0.03873166, 0.008305611, 0.007436743, -0.022666018, -0.033557918, -0.010729314, 0.008583045, 0.004842328, -0.015684893, -0.0077903555, -0.018933427, 0.015853211, -0.004826657, -0.026808957, -0.0062782527, -0.01659555, -0.055375382, -0.045987602, 0.031564806, 0.0026437496, -0.01200512, 0.0300453, 0.06121659, 0.015463759, -0.03863589, 0.0068412465, 0.016964689, 0.014704008, 0.03426253, 0.015276289, -0.010743316, -0.072598554, -0.074301265, 0.030985268, -0.03856218, -0.022100702, -0.022931263, -0.0368198, 0.004775581, -0.0027662152, 0.0024751415, -0.032121994, 0.018438341, -0.026148826, 0.0009820471, -0.017970532, 0.00834769, -0.0092991935, -0.001773721, 0.029842593, -0.0028894064, 0.0130881565, 0.017890437, -0.009107732, 0.044145685, -0.0025388415, 0.054223854, -0.0044591147, -0.007688639, -0.019820867, -0.035870258, -0.0071703363, -0.018494058, -0.022020606, -0.0031940471, -0.05574452, -0.013769554, -0.011792981, 0.0073374934, -0.04125889, -0.015201706, 0.023848886, 0.0055042813, -0.0051540784, 0.012303447, -8.5900094e-05, -0.02661626, -0.01955214, -0.004885931, 0.0032967064, -0.045935657, 0.027246002, -0.032794103, -0.0071929726, 0.023557812, -0.027175194, -0.015888037, -0.003363453, 0.0018068041, 0.0036530758, 0.0025938347, 0.07156871, 0.026945932, -0.018064559, 0.027025448, 0.0019178793, 0.08739523, -0.020729784, -0.054889727, 0.08364348, 0.019160945, 8.241767e-05, -0.018077327, 0.014199925, -0.0012072447, 0.017558444, -0.018864939, 0.015575778, -0.0035143588, -0.019550398, 0.013654343, 0.012172276, -0.029809656, 0.019091297, 0.054911055, -0.022648025, 0.0019176616, -0.04454036, 0.022816924, -0.0010627235, -0.015464049, -0.016141092, -0.030696517, -0.018295487, 0.024201771, -0.051530775, 0.038443778, 0.042385317, 0.022303846, 0.014813123, 0.0069143777, -0.009184346, -0.045002367, -0.03135847, 0.049343806, 0.014291919, 0.025347494, -0.026642961, -0.0053252256, -0.004206783, -0.011803138, -0.02042304, -0.0036995083, 0.033830274, -0.048329253, -0.009425795, 0.013865031, -0.0057976763, 0.06363108, 0.030996006, -0.011599416, 0.011113905, -0.026508305, -0.055180367, -0.018781941, 0.014675567, -0.028333973, 0.010858237, -0.007905421, -0.020693943, 0.045629203, 0.024356162, 0.042613417, 0.025189916, 0.010542786, 0.04369703, 0.02897155, 0.028465435, 0.0011740164, -0.0296425, 0.013209026, 0.010815287, -0.007701989, -0.08914108, -0.0042021037, 0.017653052, 0.019979898, 0.06333391, 0.032484747, 0.0024075243, 0.013200755, -0.040707648, 0.02765693, 0.016244404, 0.014224302, -0.003623475, -0.06269314, -0.012634279, 0.028442219, -0.030020922, -0.043975193, -0.032653645, -0.027451467, -0.002477173, -0.025616802, -0.054047413, 0.0007849992, 0.023320425, 0.041283123, 0.00035870908, -0.05871156, -0.024710208, 0.027580097, 0.014645241, 0.03404778, -0.04249849, -0.0026617423, -0.0071842666, 0.019588705, -0.04801119, -0.043614034, -0.015726682, 0.0346189, 0.00553098, 0.019455211, 0.056158785, 0.013424212, -0.0013854292, -0.022913272, -0.07632107, 0.051280037, -0.022793708, 0.0038554925, 0.0069973753, 0.019120608, -0.091295555, -0.012778365, 0.02223797, 0.001304898, 0.010202378, -0.015606249, 0.032696016, 0.015081852, 0.008922002, 0.012290679, 0.0044145687, -0.0035828466, -0.01977516, -0.0034864992, -0.01788173, -0.081628315, -0.025770029, -0.0028277382, -0.04432213, -0.062232297, -0.009009643, 0.02578396, -0.007959398, -0.05618331, 0.049592216, -0.028847922, -0.024834996, 0.026247123, -0.065467484, 0.01567372, -0.032466177, -0.06760897, 0.03685056, -0.060917098, 0.016803626, 0.0074825953, 0.05268694, -0.03334781, -0.020459604, 0.015520059, 0.0029928638, 0.035186537, 0.019178938, -0.015145116, 0.019601474, 0.006168991, 0.012807241, -0.0337599, -0.08395341, -0.015298343, 0.019030355, -0.009908692, 0.0028117772, 0.024358481, -0.028988091, 0.003167276, 0.029793983, 0.0047001285, 0.009057817, -0.0017284492, 0.048898634, 0.012530967, -0.017783642, -0.024986772, 0.015057185, 0.0040901215, -0.013251832, -0.017430754, -0.0027618625, 0.028307565, 0.026117403, 0.03217191, 0.0402796, 0.017792927, -0.0008424413, -0.006890001, -0.002527088, 0.045456246, -0.079074524, -0.008670106, 0.050429165, 0.017479219, -0.0006013007, 0.0031272278, -0.052965537, 0.02677413, -0.0446814, 0.01537844, -0.056118302, -0.050527833, 0.0015740613, -0.028753318, -0.0020499942, 0.022757068, 0.03889359, -0.013434079, 0.019217826, 0.04203301, 0.017489957, 0.01130631, -0.010810643, 0.0775585, -0.0063153985, -0.007449512, 0.037572008, -0.02839927, -0.00950589, 0.033338524, 0.0083706165, 0.02634347, 0.03776354, -0.013662759, 0.0082319, 0.04419618, -0.05999077, 0.010453694, -0.041394558, -0.0028347033, 0.009230779, -0.015706368, 0.028651165, 0.02747178, -0.024062473, -0.02847008, -0.029708084, -0.03365775, -0.022150617, 0.01562163, 0.013311033, -0.01932172, -0.004863803, -0.009648816, 0.01575135, -0.041724235, -0.05724661, 0.053321905, -0.010396814, 0.03488937, 0.039530296, -0.034726854, 0.041938692, 0.030712767, -0.019848727, -0.036085587, -0.013222231, -0.0437217, -0.05993273, 0.031922333, 0.0060408665, 0.028620983, 0.086290136, 0.024883168, 0.026997153, -0.06903582, 0.007077472, -0.003709085, -0.027220463, -0.031880546, -0.0025630733, -0.014242585, -0.010478651, -0.024462664, -0.009338734, -0.036923114, 0.07815516, 0.019833056, -0.020173464, 0.02282447, -0.0066067623, -0.01825261, 0.006816144, -0.022242755, 0.052556932, 0.02381232, 0.030983238, -0.02116886, -0.009328286, -0.043920487, -0.00035869094, 0.009236583, 0.020560304, -0.01107676, 0.015381921, -0.014630876, 0.0008856997, 0.01780976, 0.07217466, -0.026646517, 0.038703945, 0.004055007, -0.04169289, -0.0088848565, 0.020553049, -0.046527673, 0.05757628, -0.0028950656, -0.02610086, 0.025135066, -0.037845667, 0.039783355, 0.031425506, 0.0048003937, 0.042814232, -0.0075659556, -0.0041104355, 0.03028791, -0.016103657, -0.0047790636, -0.00034592202, -0.02471224, 0.00354454, -0.022316324, -0.026177183, 0.03393518, 0.028321495, 0.05224119, 0.0250422, -0.022151778, -0.05417452, 0.047613613, 0.00017151, -0.024641285, -0.031444658, 1.33493395e-05, -0.027029512, -0.01988239, 0.013667403, -0.0082303025, 0.0116969235, -0.067875005, -0.029417302, 0.030101018, 0.018651929, -0.0017864899, 0.04942274, 0.021730404, -0.056062583, -0.01770703, 0.016893009, 0.02514203, 0.04908958, 0.015608136, 0.0056309546, 0.0042132223, 0.010068304, 0.0043344726, 0.015884552, -0.03120089, 0.027281407, 0.060548395, 0.009231068, 0.021800052, -0.0046787984, 0.015589707, -0.006743738, -0.02258476, 0.0008399927, -0.023478584, 0.055296447, 0.03337422, -0.047370423, -0.0073386542, -0.0026745114], [-0.026414223, -0.07734965, -0.014197629, -0.052858856, 0.013242648, 0.061387666, -0.01211907, -0.016811894, 0.037821945, 0.030417945, 0.01768851, 0.020156672, -0.024351612, -0.02157369, -0.015761245, -0.006511068, 0.030444644, -0.014277972, 0.02381825, 0.03635004, -0.021383092, 0.0074167284, -0.018121129, 0.021710152, -0.029825624, 0.012886663, 0.01512047, 0.01966027, -0.014573638, 0.017855005, -0.027892428, -0.05147348, 0.0031175895, -0.03009459, -0.024624286, 0.0062267743, -0.0092037, 0.012320054, -0.069818586, -0.050129883, -0.04167128, 0.04607536, -0.0173701, 0.0220696, -0.016851325, 0.036651146, -0.006981265, 0.021304725, -0.010048671, -0.02958138, 0.055741347, -0.034655157, -0.06550202, 0.012261712, -0.007673458, 0.016875675, 0.019218255, 0.0015864207, -0.010863976, -0.0065402393, -0.001221227, 0.021090144, -0.075723484, -0.011726745, 0.040441893, 0.03299241, -0.0067120516, 0.019747289, -0.015489311, -0.035680592, -0.005466103, 0.044413105, -0.0030330434, -0.0046035806, 0.027416298, 0.007566972, -0.058068104, -0.015705869, -0.01521639, -0.009006425, 0.0068574115, -0.0028429371, 0.0027553623, -0.0384108, -0.031213969, 0.014974122, 0.024148775, 0.00042990153, 0.017899133, 0.02609841, -0.026700865, 0.021058165, 0.05637223, -0.010753225, -0.00030753165, 0.036161173, 0.023819365, 0.04379013, 0.014547927, 0.0024586462, 0.026704328, -0.010234574, -0.02436669, -0.030822383, 0.019046813, -0.00739003, 0.03485293, -0.010115912, -0.003750452, 0.044363663, 0.009769406, -0.011389301, -0.014733831, -0.040200613, 0.007025763, -0.016517837, 0.058982786, -0.004606022, -0.03666388, 0.0016837604, -0.0029818702, 0.012148983, -0.010193042, 0.017570835, -0.028799355, -0.023070807, 0.031596653, -0.011504254, -0.062155012, -0.005252265, 0.026865633, 0.009294675, 0.049613453, -0.019982636, -0.050888084, 0.0061016846, -0.0008326098, 0.029910667, -0.029232316, 0.05717814, -0.04086314, 0.0068635917, 0.020088937, 0.009090477, 0.017349828, -0.0014419871, 0.0108877085, -0.043610163, -0.018365374, -0.0057328446, -0.020289179, 0.004336592, -0.02651793, 0.013118548, 0.01791001, -0.027242756, 0.00081777707, 0.04608253, -0.058816664, 0.013522679, -0.004872547, -0.0027964613, -0.0032441623, 0.03344462, -0.009955719, -0.04478096, -0.0053669713, 0.005276986, -0.0147714075, 0.0039989003, 0.08385429, -0.01894385, 0.04530307, -0.009773029, -0.066317074, -0.016455416, 0.03416172, -0.025948355, 0.026205948, 0.0045635323, 0.011689664, -0.019720837, -0.0088131055, -0.010413926, -0.060834404, 0.033260882, 0.00041828258, -0.004124978, 0.0058880937, 0.02968422, 0.0053691342, -0.012854032, -0.0036646698, -0.0040932116, -0.03003625, 0.010917311, -0.06576381, 0.0143724065, 0.03914193, 0.0043113763, 0.0060042837, 0.032796804, 0.03342874, -0.009596767, -0.05406426, -0.048413984, 0.05298753, 0.009229905, 0.07073821, 0.0098617785, -0.017069489, 0.007813875, 0.039494578, 0.027084539, 0.023439277, 0.03532362, 0.0052685807, -0.053219784, 0.018149804, 0.05859912, -0.008553038, -0.0029002903, 0.03475602, -0.04100158, -0.024095993, 0.0029352708, 0.002282755, 0.015956046, 0.016071742, -0.011330589, 0.058729645, -0.015917668, -0.001566582, -0.065140344, 0.0028711194, -0.012210786, -0.04285419, 0.03974868, -0.047868636, 0.043944392, 0.00021062455, 0.035481833, 0.0200301, -0.019387163, -0.0018606407, 0.0016830188, -0.031659443, 0.00035202978, -0.017951295, -0.011747511, 0.052764915, 0.030822383, -0.02261643, 0.014595888, 0.008745122, 0.014386498, 0.01673526, 0.020957638, 0.02520573, 0.0234881, 0.010781901, -0.025820792, 0.021055534, -0.045975238, 0.03916035, 0.011448681, 0.022715809, -0.022280717, -0.017383942, -0.009103664, 0.016621541, -0.03711343, -0.0019440746, -0.00047711903, -0.032092065, 0.026544627, 0.011419214, -0.007837607, 0.030534135, 0.019190753, -0.06916891, -0.012809534, 0.032102942, -0.028817989, 0.002026767, -0.0033007737, 0.011636761, -0.055084255, -0.008584434, -0.047874074, -0.0093465885, -0.0103349425, -0.01283994, 0.020186339, 0.068633944, -0.025385698, 0.0364603, -0.03795641, -0.09510738, 0.014639891, 0.018498251, 0.007855407, 0.022510128, 0.028120853, -0.019911438, -0.02657281, -0.034902893, 0.05778035, 0.020047404, -0.0039749513, -0.026261078, -0.027739156, -0.05767998, 0.015306374, 0.0264141, -0.032298733, 0.04356072, 0.101392485, -0.023182917, -0.009758444, -0.022744488, 0.014431244, -0.006669778, -0.04564521, 0.008609897, 0.07538975, -0.015613658, -0.0070880605, -0.060125895, -0.018038066, 0.026452666, 0.021857738, -0.006718108, -0.007193867, -0.0020731192, 0.009267357, -0.01556644, 0.0074222907, -0.011127257, 0.030272583, -0.0021250336, -0.08143754, -0.016179033, -0.0047622905, 0.057400633, -0.050557803, 0.003817941, -0.07670294, -0.00543405, -0.022645602, 0.03568356, -0.0061328337, 0.006708343, 0.0035966865, -0.01602329, 0.009717036, 0.026378503, -0.039952416, -0.0032968184, 0.0193473, 0.033826504, -0.030395202, -0.05922011, 0.024847766, 0.016980493, -0.028977688, 0.08971617, 0.013406798, 0.044644993, -0.0048767575, 0.0473579, -0.0053699375, 0.0113717485, 0.021301758, 0.0013407539, 0.043418325, -0.0544242, 0.0023415915, 0.016765418, -0.0048067886, 0.0015149147, -0.028425418, 0.07309982, 0.06421973, 0.017113369, 0.06643475, 0.03772899, 0.0051281643, -0.014447065, 0.03321144, 0.0012929185, 0.0144745065, 0.012177165, 0.03841278, 0.027483046, 0.010890427, 0.04481853, 0.0004451669, 0.04297532, 0.0013324723, -0.0068546925, 0.02615354, 0.0034122665, 0.004089874, -0.024179304, -0.054173034, -0.011153214, -0.014863556, 0.021254292, 0.030975655, 0.04298323, 0.0032261156, -0.012986043, 0.025108822, 0.024711305, -0.039503478, -0.036331996, 0.0058144247, 0.037540615, 0.0029620933, 0.033485845, 0.030974666, -0.049100243, 0.04554237, 0.026067037, -0.016269512, -0.006852715, -0.04762587, -0.04331351, 0.0055785845, 0.037558414, 0.028361883, 0.004791956, 0.090368815, 0.02415137, -0.01828948, 0.0095305145, -0.029279782, -0.07754248, 0.006841838, -0.036373775, -0.046907045, 0.02257391, 0.033922423, -0.019019127, -0.0018046472, -0.037672132, 0.010940364, -0.0066582514, -0.07252407, 0.016921656, -0.038387068, -0.03271108, -0.008221774, -0.04874624, 0.024804255, 0.063717395, -0.030488152, -0.030274129, -0.020568034, -0.037228636, 0.0074200663, -0.0032025068, 0.006265339, -0.0017176284, -0.011684472, 0.028194025, -0.022631263, 0.0011668403, 0.011582374, 0.027865728, -0.018972775, -0.028304776, -0.03374245, -0.052764915, -0.003969235, 0.021828813, 0.0034837103, -0.019753221, 0.036302578, 0.008424982, 0.017184196, 0.051665314, 0.0048038224, 0.040287137, 0.036870178, -0.05672426, 0.0061783204, -0.027223224, -0.024734048, 0.015492131, 0.027726427, 0.012285445, 0.07956664, -0.036233358, 0.010128273, 0.028874354, 0.019003429, -0.065761335, 0.014905396, 0.035353284, 0.05463878, -0.043632906, 0.008762921, 0.025292749, -0.06942107, 0.046489686, 0.07728834, 0.0058982293, 0.0009473162, -0.013538809, -0.044628676, -0.020254446, -0.017920393, 0.0041531604, 0.036791317, 0.03283469, -0.032796126, -0.021326974, -0.01829838, -0.017298903, 0.0066250325, -0.009322857, 0.032196883, -0.0024761364, -0.024533683, 0.04906366, -0.025471235, -0.015568418, 0.033644553, -0.044713713, -0.030998893, -0.017915944, 0.026809638, 0.01695775, -0.018838044, 0.026221275, -0.0015396359, -0.0026450132, 0.015656427, -0.017929122, 0.045427665, 0.014007028, -0.025732785, -0.027601708, -0.02108273, -0.02943948, 0.050961256, -0.02740542, -0.0029905227, -0.010472393, -0.0112617705, -0.072411336, -0.05268927, 0.057193406, -0.012314615, -0.03324506, 0.031117061, 0.048955873, 0.008569849, -0.030057017, -0.003714112, 0.014059437, 0.032539025, -0.025716962, 0.022801839, 0.01917969, -0.048778377, -0.050470788, 0.042161502, -0.010986098, -0.008050704, -0.053726077, -0.026860999, 0.034991365, -0.02340998, 0.010454592, -0.029705975, -0.0048696967, -0.021904955, 0.0027660544, -0.004496291, 0.005992417, -0.022751655, 0.046103545, 0.03023501, -0.017657854, -0.0070663057, 0.05623775, -0.0040013725, 0.07663175, -0.016629452, 0.015022574, 0.0363184, -0.034093738, -0.020245174, -0.048801616, 0.017298903, -0.028103052, -0.051281642, -0.027038123, -0.0088225, -0.011282258, -0.019931214, 0.03993956, -0.034659114, -0.011536392, 0.037451617, -0.009648434, 0.01610388, -0.008780967, 0.016183728, -0.015720207, 0.002434543, 0.013040924, -0.0018842494, -0.0097327335, 0.019946048, -0.0033798814, -0.016017664, 0.030314118, -0.013008292, 0.016602753, 0.045839027, -0.008608167, 0.013016697, 0.013060207, 0.05613489, -0.0005596878, -0.034997053, 0.035721134, 0.0027242755, 0.04963274, -0.01888353, -0.060928844, 0.08946303, 0.00018392569, -0.040808264, -0.03678909, -0.014231991, -0.012415446, 0.03839696, -0.0451765, -0.021118078, 0.0051012184, -0.0054297624, -0.011033872, -0.0017794315, -0.023647057, 0.032449532, 0.046156447, 0.00985807, 0.008929789, -0.029413275, 0.01563838, 0.0008721637, -0.01071466, -0.012299906, 0.0033096734, -0.05162972, 0.017931765, -0.003912376, 0.023940004, 0.03945107, 0.067059696, -0.035070475, 0.003727956, 0.0007213644, -0.020953683, -0.026044272, 0.034284342, 0.020859743, 0.003992967, -0.035270717, -0.0075588753, 0.02523045, -0.036306534, -0.031558085, 0.0049778596, 0.03453254, -0.032651752, -0.0071770567, 0.007631185, 0.010897102, 0.011474589, 0.02003356, -0.020319585, 0.046717122, -0.041031245, -0.037152, -0.020422673, 0.02982167, 0.034277417, -0.01596391, -0.025549354, -0.027832888, 0.028156202, 0.066703714, 0.035656117, 0.015487333, 0.07046529, 0.052952796, 0.05004163, 0.009708012, 0.04956698, -0.022239186, 0.013599128, -0.025565669, -0.028082285, -0.039389357, -0.032720726, 0.014531612, -0.04720759, 0.04096005, 0.08292477, 0.016301896, 0.04684913, -0.042897575, 0.014101216, 0.0019173757, 0.027029162, 0.009129536, -0.03442179, -0.03358819, 0.025125138, 0.006249147, -0.048728436, -0.026371889, 0.0066711376, -0.0072274883, -0.014094789, -0.026951045, -0.03929681, 0.024786457, 0.017312992, -0.0063451887, -0.023431737, -0.07285435, 0.010663734, 0.012055042, 0.022030538, -0.04476118, 0.025609178, -0.00995918, 0.0017843139, -0.051960982, -0.012795195, 0.027447445, 0.0051667294, 0.012548477, -0.010398847, 0.0369834, 0.0040013725, 0.02094874, -0.00849618, -0.0022066135, 0.03487468, -0.042615384, 0.023110854, 0.043233413, 0.019722568, -0.042417612, -0.005806954, -0.01619337, 0.0027346583, 0.039947473, -0.03225819, 0.034403004, -0.0050515286, 9.1962844e-05, 0.0141207455, 0.01674317, 0.0047632796, -0.01891542, -0.009650134, -0.017012136, -0.048414975, -0.036915664, 0.009071689, -0.040923465, -0.07409436, 0.0037497107, 0.02962291, -0.023190457, -0.038667902, 0.03718562, -0.020374713, -0.048588023, -0.0027857076, -0.064405635, 0.008208425, -0.019899571, -0.046740115, 0.020789597, -0.009010844, 0.0659957, 0.013641154, 0.03688402, -0.041101735, 0.015266821, 0.016588334, -0.0017868478, 0.027139915, 0.03270713, -0.008612988, 0.01696764, 0.05804141, 0.0070247743, -0.057628192, -0.055831242, -0.019839253, -0.0021576658, -0.00825317, 0.02164254, 0.03280502, 0.008319176, -0.006734053, -0.010819972, 0.040999606, -0.026822109, 0.012983323, 0.022613958, -0.032232482, 0.015584241, -0.012684939, -0.011719577, 0.026687624, -0.0029517105, -0.029034546, 0.018032627, 0.051616862, -0.03543437, 0.011517418, 0.05041838, -0.013680338, -0.011774457, -0.0301559, 0.005378837, 0.03448606, -0.05680436, 0.0028330488, 0.05046881, -0.010474122, 0.0031633237, 0.011106737, -0.0041043363, 0.042448267, -0.066527694, -0.017646976, -0.06938547, -0.049288124, 6.563477e-05, -0.0025643604, -0.0063671907, -0.0016226992, -0.009661042, -0.018720865, 0.045360424, 0.008162938, 0.0509484, 0.05349073, -0.008656373, 0.040172927, -0.02623512, -0.019398225, 0.034878638, 0.030375425, 0.0054415674, 0.04582815, -0.03355358, 0.009663515, 0.021931652, -0.026372073, 0.032194905, 0.013591712, -0.041008506, -0.009875128, -0.031884655, 0.013275281, -0.023443602, -0.011811786, 0.023245584, 0.02744893, -0.0024701417, -0.03001462, -0.019595254, -0.005935064, -0.033163976, 0.016710043, 0.010778192, -0.00047168037, -0.028399706, -0.009011709, 0.05584814, -0.02795899, -0.040544737, 0.060573846, -0.0022647085, 0.04343019, 0.03019941, -0.031691704, 0.09022247, -0.0039296807, -0.022837438, -0.025489528, -0.035583686, -0.02477657, -0.015898447, 0.0050841607, -0.030540561, 0.070298664, 0.00061914226, 0.061988883, 0.002186095, -0.097708434, -0.032875232, -0.0499467, -0.03462846, -0.06056099, -0.010867436, 0.013143888, 0.013438441, 0.06391714, -0.008569354, -0.013229299, 0.07403404, 0.004003844, -0.034750085, 0.0006140744, -0.012539084, -0.04178376, 0.0010738886, 0.0010125801, 0.041658174, 0.038432557, 0.014602314, -0.016456403, 0.00012459482, -0.05769432, 0.022777118, 0.0071195797, 0.022003839, -0.0005315057, 0.027353505, 0.014353124, 0.011644671, 0.024932805, 0.030191498, -0.031279232, 0.06326054, 0.0042139743, -0.033063114, -0.009031888, 0.016395282, -0.038565062, 0.019939497, 0.0148144225, -0.032929618, 0.017658843, -0.002103279, 0.09602107, 0.0026085803, 0.024365703, 0.016734602, -0.010324066, -0.0032414428, 0.020122556, -0.033790905, 0.02102562, -0.007745644, -0.018876363, -0.01056176, 0.0075755315, -0.025428219, 0.0010736414, 0.027989335, 0.02805361, -0.028822193, -0.0681771, -0.054623086, 0.04629229, -0.035147604, -0.048841167, -0.029297581, -0.008415836, -0.022401355, -0.007743172, 0.020521557, -0.01635863, 0.021990737, -0.044751294, 0.053302847, -0.015531337, 0.023738772, 0.0039840676, 0.026460266, -0.002468164, -0.02741877, -0.014156591, 0.026170844, -0.0026179743, 0.014564739, 0.010357439, 0.009679428, 0.055331964, 0.027365865, -0.005152391, -0.00028281045, -0.020059146, 0.03385419, 0.066589996, -9.93792e-05, -0.005131131, -0.0019111028, 0.05070811, -0.014948411, -0.01562231, -0.009068722, -0.038526498, 0.032453984, 0.01574567, -0.06685006, 0.025785195, 0.019831093], [-0.0040735803, -0.08004377, -0.015585565, -0.043900892, 0.010234397, 0.06180658, 0.01432359, -0.035671577, 0.036497436, 0.050429955, -0.008305703, 0.020671535, -0.051877975, -0.019303355, -0.03237389, 0.00041281097, 0.019057645, -0.03255213, 0.028181164, 0.045841835, 0.007900219, 0.002906612, -0.045305192, 0.011514026, -0.023401108, 0.0369894, 0.011865823, 0.025676193, -0.005365461, 0.025843384, -0.017226359, -0.050760496, 0.0021566579, -0.035053257, 0.007796686, -0.0041282745, -0.009887765, 0.02894601, -0.046267495, -0.04958944, -0.051517654, 0.013846043, -0.023839382, 0.031722426, -0.010294271, 0.043396436, 0.014386048, 0.0019664068, -0.0037166197, -0.021938432, 0.062058326, -0.037888765, -0.055855952, 0.020146424, 0.023350902, 0.02484949, -0.0014405745, 0.017092064, -0.006350827, -0.016644558, 0.003038971, 0.012414835, -0.07867549, 0.01135164, 0.023588477, 0.005514395, -0.007376308, 0.0031043096, -0.03186223, -0.046965085, -0.008749262, 0.03294705, -0.0114895245, 0.016082931, 0.0037656238, 0.037333626, -0.070211016, 0.023023728, -0.002111017, 0.0036748222, 0.00034014566, 0.018988583, 0.0084570395, -0.047133233, -0.03341739, 0.017613107, 0.008637201, -0.005743801, 0.03834037, 0.03273854, -0.020562477, 0.008478179, 0.060255744, -0.0013811811, -0.007057542, 0.020983336, -0.019624194, 0.016747849, -0.0008666988, 0.018052222, 0.04385915, -0.041456692, -0.049484465, -0.02442707, -0.00067692826, -0.008335491, 0.016965965, -0.007886407, -0.01157456, 0.02849825, 1.681511e-05, 0.014345692, 0.00015950332, -0.052712966, 0.015519925, -0.02196702, 0.018675612, -0.0014854949, -0.029877087, -0.0066510965, -0.0094818, 0.0036013161, 0.012618058, 0.02622869, -0.024769617, -0.01749396, 0.027628666, 0.013277691, -0.06565772, 0.0020088651, 0.035851736, 0.030999377, 0.06515615, -0.011046086, -0.0344508, 0.023690568, -0.029836971, 0.042248204, -0.009522157, 0.055468723, -0.032177392, -0.011389354, 0.020872595, 0.010195722, 0.014117005, 0.0036499598, 0.00626579, -0.055991434, -0.020284308, -0.01690543, -0.035391483, 0.004004638, -0.005617688, 0.010727079, -0.0060270163, -0.03245124, -0.0009118594, 0.033936735, -0.031247279, 0.013852527, -0.039601985, -0.011960828, 0.031710416, 0.0259534, 0.015670842, -0.050531805, -0.004999252, 0.005440409, 0.00905902, -0.0050675934, 0.06962801, -0.014833088, 0.026799561, -0.004579235, -0.044232387, 0.0058963387, 0.0033457265, 0.010986333, 0.048246875, 0.013528957, -0.003246277, -0.03442005, -0.0053267865, -0.0019082747, -0.0514158, 0.013300272, -0.027473249, -0.017656825, 0.023206772, 0.024531322, 0.015660632, -0.014053589, 0.004723965, -0.015743626, -0.028073547, 0.01620352, -0.07525675, -0.0022955027, 0.020278782, 0.029172776, 0.010010275, 0.042929694, 0.029148752, -0.0065353126, -0.05308338, -0.03997768, 0.029566249, 0.01150778, 0.04918083, -0.042724792, -0.013058134, -0.001632507, 0.03655749, 0.06592868, 0.023310846, 0.022477718, 0.009435439, -0.021381132, 0.02708482, 0.04377982, -0.017998893, 0.0072401054, 0.022826992, -0.05272738, -0.017921304, 0.011208952, 0.00046794047, 0.043739703, 0.036692012, -0.02999047, 0.057993874, -0.009862062, 0.00810104, -0.050579853, -0.0035840205, -0.03453549, -0.031236708, 0.037487127, -0.063082606, 0.031173293, -0.009049412, 0.054646708, 0.021543037, -0.01913079, -0.03672564, -0.005488932, -0.04243557, 0.0058362847, -0.0034652038, 0.009468708, 0.049157772, 0.035084005, -0.02882302, -0.002106693, 0.012590194, 0.024336748, -0.0020705706, 0.009315811, 0.023385974, 0.034431882, 0.028470384, -0.07927508, 0.024230095, -0.040146794, 0.031008985, 0.026936846, 0.03539821, -0.031106992, -0.019174991, -0.017367607, -0.0039712484, -0.037576485, 0.011703316, 0.003740161, -0.039435755, 0.0019577593, -0.008377648, 0.014914523, 0.03575661, 0.01655832, -0.05908157, 0.02700891, 0.05008981, 0.0082639055, 0.0100603225, -0.016632546, 0.004231162, -0.038479697, -0.008967738, -0.04458112, 0.001027163, -0.005014746, 9.080159e-05, 0.051349502, 0.05091423, -0.0324964, 0.03338712, -0.03141783, -0.08574746, -0.0010511846, 0.05074608, 0.027052147, 0.034216344, 0.039643783, -0.0013202264, -0.025169818, -0.037598524, 0.065355286, -0.014927734, 0.0077839545, -0.015439154, -0.02675236, -0.051766276, 0.0030656348, -0.022816181, -0.017882029, 0.046613406, 0.05681009, -0.0037353565, -0.010863762, -0.03559038, -0.013645462, 0.013190253, -0.06181811, 0.020906465, 0.04509332, -0.035816666, 0.0030910976, -0.04597347, -0.031332556, 0.028875867, 0.03302872, -0.03139141, -0.012248126, 0.006792464, 0.0080799, -0.035747964, -0.0012904396, -0.0069672205, 0.010513287, 0.006861045, -0.100587025, -0.014128475, -0.025746817, 0.055593636, -0.05394287, 0.0020067631, -0.056594856, -0.018337118, -0.017446397, 0.031239891, 0.0050152265, 0.011636537, 0.041033674, -0.013070264, 0.0073955255, 0.0010434977, -0.014858793, -0.023391258, 0.012685319, 0.00093972444, -0.035903923, -0.06159519, 0.057280913, 0.034812193, -0.055178545, 0.03505494, -0.010453233, 0.044287633, -0.030597735, 0.058685694, 0.0020447173, -0.032045998, 0.021408038, 0.002308955, 0.06748501, -0.039466504, -0.001315422, 0.01231971, -0.011378065, 0.0010241603, 0.009981449, 0.06030571, 0.052567877, -0.0126122935, 0.047557935, 0.049769543, 0.004984479, -0.0367242, 0.032913417, -0.025033373, 0.025001185, 0.0081673395, 0.038477775, 0.0090902485, 0.0010862561, 0.037859462, 0.020478882, 0.033187624, 0.01063916, -0.008570902, 0.010606491, 0.014837172, 0.02050963, -0.015850402, -0.05073743, 0.0016885974, -0.011125838, 0.011686983, 0.040147755, 0.061893053, 0.0039258176, -0.02066721, 0.023548841, 0.012227887, -0.023596885, -0.032230362, 0.020774828, 0.028803803, 0.012721471, 0.026069665, 0.03760435, -0.062390786, 0.049078982, 0.054969072, -0.024576964, 0.016927531, -0.051404275, -0.05209225, 0.014403704, 0.02365838, 0.044168487, 0.003040172, 0.100817636, 0.033262208, -0.007931568, 0.003531173, -0.036668953, -0.04866389, 0.016394733, -0.029740645, -0.04458094, 0.017129073, 0.010273552, -0.0028806685, -0.0044430327, -0.048575487, 0.0026079034, 0.027025964, -0.03961736, 0.030778136, -0.03316132, -0.022845728, -0.003936177, -0.059608124, 0.025762672, 0.064325966, -0.0360122, -0.017540922, -0.018861748, -0.026678853, 0.0080068745, 0.016739322, -0.03575181, -0.013771035, -0.039978884, 0.01570195, -0.035817146, 0.018723385, 0.007073757, 0.023956245, -0.025042022, -0.013095847, -0.039075192, -0.024547178, 0.004598692, 0.045544926, 0.03758465, -0.0049820766, 0.02154508, 0.017244134, 0.0055734883, 0.043289, -0.00944829, 0.030827863, 0.02329253, -0.041542932, -0.0052309404, -0.041924395, -0.016597714, 0.004452521, 0.033783957, 0.013801362, 0.059131533, -0.038798705, -0.01323205, 0.026020842, 0.013463618, -0.051178467, 0.01746081, 0.040323596, 0.06684823, -0.05808227, -0.0075168344, 0.012355742, -0.071184605, 0.021658102, 0.055749297, 0.018229501, -0.004859086, -0.016017715, -0.042341888, 0.014976978, -0.041382466, 0.046623494, 0.036805842, 0.004033712, -0.026279615, -0.016655607, -0.01387775, 0.0011681697, -0.021879822, 0.0041247467, 0.026654352, -0.013852288, -0.018808901, 0.030279689, -0.02374726, 0.022463065, 0.0046967003, -0.022037402, -0.028963337, -0.02353863, 0.022194263, 0.0140021825, -0.022331906, 0.00526433, 0.02006343, 0.010342134, -0.0010384532, -0.0007163237, 0.050887085, -0.012633072, 0.0102159, -0.01203001, -0.03662331, -0.023969699, 0.04912895, 0.014157361, 0.01962059, -0.020213323, -0.023620905, -0.09161256, -0.05682162, 0.05870107, -0.005946784, -0.01914136, 0.009699436, 0.04560834, 0.0063704643, -0.0484746, 0.008488268, 0.033957634, 0.041683216, -0.028213352, 0.030753395, -0.0006161537, -0.054177325, -0.084794275, 0.011452171, -0.018820433, -0.025781887, -0.070504315, -0.03620341, 0.0015911898, -0.021409959, 0.047702063, -0.036866408, -0.016938102, 0.0019116378, 0.027067523, -0.03504353, -0.0042485776, -0.021032821, 0.037748482, 0.045035668, -0.00324964, 0.014323111, 0.044465877, -0.012200083, 0.06507351, -0.012579625, 0.036023732, 0.00987095, -0.012730961, -0.025868366, -0.027022602, 0.020923281, -0.0109747425, -0.035675626, -0.034200974, -0.04197436, 0.00664389, -0.015421858, -0.0054860497, -0.03178056, -0.033156034, 0.02209025, -0.0047399392, 0.015711077, -0.0012159126, 0.012113845, -0.017485552, -0.021653056, -0.008185656, -0.0011400644, -0.018122846, 0.019534113, -0.031334717, -0.024399685, 0.0101198135, 0.014416315, -0.00058660714, 0.016572012, 0.014369713, 0.005880484, 0.018086812, 0.047213946, 0.0063687833, -0.008402751, 0.03847393, 0.00359459, 0.041447803, 0.00048775828, -0.06264253, 0.08595884, -0.009231015, -0.027615214, -0.0153315365, -0.007849294, 0.008554568, 0.04327729, 0.0059013832, -0.039896008, 0.058178358, 0.013283936, 0.0022032598, -0.029511, -0.035353526, 0.029992392, 0.046890136, 0.001935179, 0.016834807, -0.03540037, 0.023824608, 0.009941093, -0.0004316679, -0.020837044, -0.0016056028, -0.027606508, 0.032543004, -0.020149305, 0.025641002, 0.0247504, 0.035904102, -0.02244745, 0.023534909, -0.034492597, -0.032019813, -0.038331244, 0.041929677, 0.007888208, 0.024763372, -0.034751546, -0.022536092, 0.008985995, -0.059089255, -0.028713482, 0.009066707, 0.029280992, -0.041223444, -0.038355745, 0.020570165, 0.009104181, 0.0319494, 0.047357593, -0.0020709008, 0.05772099, -0.05816779, -0.021067891, -0.026634173, 0.026256552, 0.013092725, -0.017028654, -0.03169471, 0.0007062046, 0.022718655, 0.040117968, 0.020745762, 0.039307002, 0.030044278, 0.043415654, 0.022562755, 0.012228309, 0.01720618, -0.03985085, -0.0057624183, -0.01719261, -0.057473566, -0.042339485, -0.011903177, 0.014681992, -0.05315052, 0.05406202, 0.054360848, -0.011052332, 0.021332128, -0.028476147, -0.018871358, 0.018771429, 0.001400939, 0.024575043, -0.043537684, -0.0137096, 0.015253467, -0.03220334, -0.037774906, -0.06123006, -0.0151047725, 0.010158248, -0.02178109, -0.014410069, -0.023711227, 0.039667808, 0.04279926, 0.012854011, -0.044204522, -0.05257268, 0.02280417, 0.0031131976, 0.02991552, -0.029048104, 0.01793764, 0.0043611187, 0.002521666, -0.051072296, -0.010842383, 0.0024799886, 0.0028597699, 0.003842373, 0.008576667, 0.062068176, 0.021629035, 0.027262457, -0.042570096, -0.013202263, 0.03802713, -0.01929702, 0.014861194, 0.03401264, 0.02312558, -0.05287535, -0.002751913, 0.03206053, -0.0121088, 0.040882178, -0.05990215, 0.020093815, 0.00017343584, 0.008315792, -0.0039669247, 0.009772942, -0.0019255703, -0.015201821, 0.007430237, -0.015320007, -0.053084824, -0.027118148, 0.025872208, -0.040590715, -0.049936075, 0.016644558, 0.040089145, -0.025870766, -0.038499877, 0.07788759, -0.007341417, -0.012817438, 0.018809382, -0.058608826, 0.01572435, -0.0053034555, -0.04838908, 0.009441684, -0.034795508, 0.054001328, 0.0034427736, 0.04763673, -0.012345173, -0.010642643, 0.024066385, -0.017595451, 0.044240072, -0.01492323, -0.015653906, 0.0049292296, 0.013241178, -0.024777064, -0.052278657, -0.06623712, -0.029083895, -0.005277062, 0.009801768, 0.010979426, 0.02612876, 0.012681716, 0.018015709, 0.0019885069, 0.04257778, -0.012986309, 0.0027648844, 0.0328327, -0.0024847928, 0.05721197, -0.035570923, 0.004029861, 0.01230674, 0.020269414, -0.024880597, 0.0047543524, 0.046186782, 0.013845562, 0.0096662855, 0.03979512, 0.017851882, -0.016751694, -0.058416653, 0.020304006, 0.032565102, -0.0843984, 0.01810699, 0.06330937, 0.014543628, -0.0036886346, 0.037850812, -0.003068998, 0.056885038, -0.06510762, -0.023554245, -0.040049028, -0.050230093, -0.023272114, 0.01693714, 0.004419011, -0.010135667, -0.002449481, -0.028391112, 0.026844602, 0.016198475, 0.021642968, 0.02182217, 0.008100078, 0.0803474, -0.059933137, 0.005499021, 0.061043654, 0.013129238, 0.00842389, 0.0181387, -0.028270524, 0.0051347343, 0.02203356, -0.029918043, 0.03417311, 0.03456486, -0.06570672, 0.020931449, -0.020052738, 0.030945567, 0.007892532, -0.029238835, 0.033353493, 0.031557158, -0.005131251, -0.03424277, -0.0015244099, -0.025939949, 0.008055879, 0.021196647, 0.0041972916, 0.009359291, -0.003822795, -0.0091666365, 0.033500504, -0.029519167, -0.04828627, 0.06791287, 0.006401272, 0.061706647, 0.014823721, -0.038523898, 0.065250315, 0.0004170147, -0.0073823137, -0.02077771, -0.006546603, -0.02880957, -0.050772022, 0.0062982193, -0.028709639, 0.039073993, 0.011036478, 0.042239554, 0.0061603356, -0.09242857, -0.02135495, -0.05500655, -0.005655402, -0.031774312, -0.020853618, -0.00025486902, 0.01129591, 0.04437886, -0.014693524, -0.0097116865, 0.06880839, -0.0073630963, -0.033533655, -0.008837061, -0.004901124, -0.053885218, 0.023040544, -0.0073736655, 0.048825316, 0.051780928, 0.021159653, -0.0211229, -0.018844454, -0.049536355, 0.024790818, -0.0031742123, 0.024059061, -0.003539821, 0.032583255, -0.00747828, 0.014416795, 0.004779095, 0.009129163, -0.052348197, 0.050714098, -0.01171869, -0.018802837, 0.0008352305, 0.015625563, -0.03034791, 0.011270927, 0.025988353, -0.012434534, 0.022167841, -0.033612445, 0.08000533, 0.002980118, 0.0054454533, 0.03603238, 0.0026049009, 0.0050848895, 0.0054747295, -0.03161745, 0.019712444, 0.003172771, -0.042992875, -0.026303878, -0.007683064, -0.035636503, 0.004028885, 0.05285902, 0.0081404345, -0.027105957, -0.069839396, -0.035617765, 0.04769342, -0.016105512, -0.017348869, -0.0134924445, 0.006659984, -0.035873838, 0.010072731, 0.0264647, -0.009138051, 0.022435682, -0.07804901, 0.039534245, 0.005561177, 0.01095096, 0.00027462677, 0.007884365, 0.01325415, -0.0023550764, -0.012672648, 0.004220112, -0.024031913, 0.00012299052, 0.011119592, 0.01748291, 0.039603908, 0.027372956, 0.012902474, -0.0023666066, -0.009439702, 0.02851074, 0.04622522, -0.023611777, 0.01177346, 0.009766336, 0.048637707, 0.02677446, -0.010559769, 0.0065490045, -0.032306872, 0.023439301, 0.026403144, -0.071215354, 0.021708788, 0.048348967], [-0.013772746, -0.0753809, -0.003260124, -0.054936774, -0.00698429, 0.057297196, 0.0046571004, -0.035637148, 0.026860071, 0.029211977, 0.0078944005, 0.03543469, -0.021808581, -0.011417056, -0.036653925, 0.0028552099, 0.009175839, -0.017968524, 0.032026034, 0.045187622, 0.00476909, 0.011788858, -0.036809314, 0.028342547, -0.018014643, 0.007502849, -0.0071588387, 0.017772276, -0.013392429, 0.021439617, -0.0036366559, -0.052017707, -0.006098778, -0.029795222, -0.0014652109, 0.0032026358, -0.004927082, 0.021761987, -0.04906269, -0.04272503, -0.055272628, -0.0047170566, -0.0194387, 0.036920477, 0.007926685, 0.037682675, -0.0023320387, 0.015431663, -0.004178453, -0.052275743, 0.071322896, -0.02102619, -0.032728013, 0.02101484, 0.013468115, 0.042945225, -0.0061259773, 0.026005305, 0.015958145, 0.0074426564, 0.004679214, 0.009882546, -0.061331198, 0.025880424, 0.029941862, 0.005165785, 0.0061806124, 0.0117449835, -0.04517438, -0.07507178, 0.011942118, 0.070826806, -0.00574708, 0.008380676, 0.013680268, 0.025853464, -0.082382925, 0.019615142, 0.006479567, 0.011163512, -0.027077666, 0.012562734, 0.022695042, -0.043872368, -0.043849893, -0.0014522026, 0.013560356, -0.013135752, 0.022066502, -0.0017314049, -0.042768076, -0.005692918, 0.05505314, 0.012817225, -0.008693467, 0.013432164, -0.0057955654, 0.027822215, 0.013349857, 0.01149416, 0.021006087, -0.011727836, -0.03136805, -0.017034288, -0.012317705, -0.00032402566, 0.025891777, 0.015211941, 0.0019545606, 0.011352724, 0.015503534, 0.021203103, -0.0043036286, -0.061266866, 0.0055048885, -0.009177731, 0.0045689982, 0.012271348, -0.03204259, -0.02114226, -0.025619313, 0.0006731219, 0.014647261, 0.02938629, -0.014549048, -0.0032608334, 0.01905744, -0.0018005893, -0.062212925, 0.018297752, 0.044127565, 0.03224079, 0.06363107, -0.0019176643, -0.05627876, 0.034201972, -0.02413305, 0.047013517, -0.014113328, 0.044124253, -0.033990055, -0.0015737714, 0.010225493, 0.016272828, 0.009050486, -0.005163006, 0.009648396, -0.05409951, -0.016071673, -0.026122145, -0.030051133, -0.005080048, -0.018849779, 0.0012137954, -0.009833351, -0.037562378, 0.005590507, 0.0185144, -0.032758284, 0.002337715, -0.033744078, 0.0074190046, 0.023448104, 0.02042828, -0.010723594, -0.061210103, 0.0119865835, 0.027180078, 0.009310179, 0.016717833, 0.040042948, -0.021891836, 0.031857874, -0.00034578505, -0.05790646, 0.016859267, 0.0033445598, 0.0005697648, 0.013139594, 0.024128322, -0.0076773386, -0.015031006, -0.007357511, -0.011876841, -0.039217982, 0.035800815, -0.0574287, -0.01679541, 0.022740452, 0.019139746, 0.013719057, -0.023684146, 0.026055448, -0.02330856, -0.0070188213, 0.00449899, -0.059893187, -0.005199548, -0.007692712, 0.03366461, -0.0127131585, 0.024438629, 0.044591606, 0.009756484, -0.056786176, -0.045562264, 0.0441252, 0.008987573, 0.049229078, -0.036740016, 0.01824288, 0.0038012702, 0.06178105, 0.055301957, 0.010716972, 0.025206832, 0.0061792224, -0.054003958, 0.042760033, 0.041020703, -0.025963679, -0.010051655, 0.02997119, -0.04833363, -0.03288695, 0.0055228635, 0.019761309, 0.03786701, 0.0405051, -0.016615657, 0.051197, -0.0013909452, 0.0065949867, -0.041910473, -0.014451072, -0.030795446, -0.031168904, 0.012991301, -0.06383258, 0.020457134, -0.05043637, 0.026134916, -0.00807699, -0.018277649, -0.061234698, 0.0010546207, -0.03987928, -0.017857835, 0.009620488, 0.005712194, 0.049452465, 0.039682973, -0.039492343, -0.0022951423, 0.012514249, 0.02309688, 0.009767836, 0.0018696516, 0.0012828577, 0.0201447, 0.042848017, -0.07595918, 0.02212167, -0.031309865, 0.025825555, 0.002573964, 0.05082709, -0.030500984, -0.022747075, -0.063274875, -0.013345837, -0.054012477, 0.00049195136, -0.014067323, -0.033392146, 0.017847251, 0.017172888, -0.0014342275, 0.04308359, 0.010978054, -0.041762885, -0.0062449444, 0.03973075, -0.019898012, 0.0106257945, -0.005317805, 0.015621615, -0.029106729, -0.0045850812, -0.03267503, -0.004801729, 0.018191734, -0.02391262, 0.015692776, 0.06408991, -0.026284393, 0.034083713, -0.0319617, -0.078560844, -0.0027369524, 0.07101602, 0.018783554, 0.031401634, 0.04337048, -0.01620554, -0.007587167, -0.047883894, 0.05048917, 0.012804926, 0.00035098835, -0.051121313, -0.029640423, -0.065298975, 0.0042799767, -0.010535328, -0.008307297, 0.044708915, 0.045783877, 0.0016515848, -0.014519188, -0.035817843, 0.007132112, 0.036052465, -0.04924244, 0.03802311, 0.06318264, -0.0042444994, -0.011993444, -0.050249048, -0.028599404, 0.025573902, 0.0046472847, -0.013254305, -0.026208708, 0.01045432, -0.004476284, -0.013540872, 0.017927725, 0.0022308102, 0.018490039, 0.0039542955, -0.11099937, -0.012378253, -0.016309608, 0.06048542, -0.07260824, -0.024106564, -0.046513055, -0.027610771, -0.00843933, 0.030898329, -0.010777873, 0.010277999, 0.04236742, 0.016596854, 0.020316644, 0.015557075, -0.007517868, -0.022411695, -0.0019469921, 0.004726281, -0.04380827, -0.08581902, 0.057462756, 0.046474267, -0.03202083, 0.039554473, -0.011222167, 0.020105984, -0.03205347, 0.03866643, 7.3792704e-05, -0.017725386, -0.001141747, -0.008429633, 0.061749358, -0.022067921, -0.0004957356, 0.013599144, -0.024846619, -0.019449107, -0.026077205, 0.055849724, 0.026732353, 0.004329172, 0.04654995, 0.02966798, -0.0013821941, -0.051545147, 0.031746, -0.0062260227, 0.027613372, 0.02072889, 0.022652468, 0.017655378, -0.000112108144, 0.03156814, 0.027776921, 0.012622336, -0.0016502839, -0.028743206, -0.00039734534, 0.0013452978, 0.02224566, -0.013453924, -0.053823262, 0.0056858226, -0.024711097, 0.017030979, 0.0482188, 0.04617484, -0.0064596995, -0.014354573, 0.023454728, 0.037969183, -0.019365618, -0.025335731, -0.008760045, 0.0327273, 0.032835864, 0.0097921975, 0.027674157, -0.038201917, 0.054977454, 0.02494235, -0.021294871, 0.00036423324, -0.077238254, -0.06199628, 0.01938247, 0.007962398, 0.049628433, 0.029450146, 0.08002535, 0.028725466, 0.020998755, 0.033884097, -0.009583709, -0.04580824, -0.0013985137, -0.039840255, -0.034171224, -0.007774014, -0.0011087827, -0.020246163, 0.047247674, -0.04207698, 0.008928681, 0.018117528, -0.064195864, 0.013346545, -0.02959655, -0.0083679035, -0.025975358, -0.058340345, 0.050448664, 0.06393192, -0.028639138, -0.034078985, -0.011971447, -0.018501155, 0.008910942, 0.0010406664, -0.022138758, -0.022423286, -0.03742591, 0.053039927, -0.011124724, 0.005526411, 0.024256041, 0.026964374, -0.052436337, -0.020211158, -0.017168866, -0.03763428, 0.014073594, 0.04549415, 0.040365558, -0.0049722563, 0.010012156, 0.015136018, -0.0085523855, 0.04678599, -0.002149922, 0.010179135, 0.0070415265, -0.007413447, -0.0040680594, -0.07071611, -0.016424553, -0.006355485, 0.0322564, 0.015403281, 0.073657416, -0.045407113, -0.01100079, 0.0010766166, 0.021280207, -0.034404427, 0.018346002, 0.047592513, 0.051461894, -0.053569715, 0.004458605, 0.035773378, -0.058315158, 0.04546766, 0.046091113, -0.0072979094, 0.0008099163, -0.03804865, -0.054776892, 0.024548491, -0.02414062, 0.022626925, 0.059253648, -0.0069052945, -0.022608949, -0.014702029, -0.025433412, -0.007726474, -0.024835235, 0.010709402, 0.03825868, -0.00480031, -0.005611557, 0.029271608, -0.058010526, -0.00023107525, -0.015201298, -0.01629033, -0.028143402, -0.03933624, 0.010376389, 0.014043319, -0.007600412, 0.016037615, -0.008337629, -0.017694639, 0.013171052, 0.0029439032, 0.05173223, -0.0009598373, -0.0037369383, -0.0084038535, -0.018895425, 0.0033944645, 0.057633996, 0.01611661, 0.0007937446, 0.00411347, -0.0019815234, -0.07518531, -0.06309844, 0.05755831, -0.0080225915, -0.0017383858, 0.012218841, 0.0650899, 0.013143586, -0.027430072, 0.0037863697, 0.041437913, 0.024839288, -0.018097188, 0.03079367, 0.0029744136, -0.04622025, -0.061963167, 0.011867262, -0.0049493145, -0.02201293, -0.05400869, -0.03090436, 0.012411838, -0.030332588, 0.020241905, -0.04594826, -0.014849363, 0.0034408213, 0.022748966, -0.0488636, -0.022401642, -0.022579622, 0.03504018, 0.028129213, -0.016838573, -0.0022317562, 0.028815106, -0.0017800125, 0.036239784, -0.030263998, 0.040179655, 0.0015250492, -0.03840437, -0.02772477, -0.036946494, 0.033344842, -0.03187088, -0.003765793, -0.04902863, -0.056621235, 0.0070883567, 0.00091578637, 0.008538194, -0.019564528, -0.02476171, 0.07474662, -0.00040538685, -0.011583562, -0.012506917, 0.02322578, -0.025061138, -0.032517985, 0.0059053083, 0.010471824, -0.02581574, 0.011744393, -0.03248298, -0.022327024, 0.0044180425, 0.017383622, -0.008316462, 0.0035780002, 0.010886316, 0.0015039993, 0.023176823, 0.043542426, 0.0140693365, -0.0029053513, 0.060385134, -0.008977166, 0.034340806, 0.012826685, -0.07994115, 0.086885706, -0.014835172, -0.028640084, -0.02649915, 0.011402865, 0.012687141, 0.033919573, 0.0018694152, -0.044498894, 0.05401153, 0.01914826, -0.0031262564, -0.013929082, -0.017681867, 0.015045241, 0.022730518, 0.020082021, -0.017647455, -0.029919984, 0.040584095, 0.004558828, -0.003922366, -0.0027691184, -0.015556542, -0.011203068, 0.054747242, -0.04266543, 0.02921245, 0.0149761345, 0.024333915, -0.021590041, 0.03401844, -0.039948344, -0.03796351, -0.01602295, 0.06035108, -0.011824808, 0.004826327, -0.041849922, -0.0150040435, 0.010773734, -0.053441055, -0.01863597, 0.027868098, 0.03232416, -0.04066924, -0.026240991, 0.02732222, -0.016653528, 0.049730606, 0.009200791, 5.1796804e-05, 0.047443032, -0.03895498, -0.029509515, -0.025593769, 0.03444511, 0.015610941, -0.00620994, -0.01936751, 0.016410362, 0.028580481, 0.052183744, 0.0009233548, 0.016706007, 0.04261434, 0.025407396, 0.027220046, 0.005948827, 0.016346976, -0.049925495, -0.016543461, -0.01271032, -0.04564883, -0.05169652, -0.026688362, 0.023286978, -0.031312704, 0.052710697, 0.042928435, -0.004427089, 0.012239655, -0.00470665, -0.020671891, 0.012117614, 0.019256584, 0.009395798, -0.06096034, -0.02170357, 0.0038305982, -0.032177404, -0.024041284, -0.06419066, -0.021524942, 0.0076025403, -0.025231782, -0.037604008, -0.039273564, 0.020832248, 0.020718249, 0.011775613, -0.03803588, -0.030339208, 0.0020311915, 0.0057137315, 0.009604404, -0.052477017, 0.025762878, 0.020466123, -0.017276125, -0.04435367, -0.0041948315, 0.005056219, 0.011763432, -0.0019299631, 0.00797245, 0.069652036, 0.03092482, 0.034512278, -0.053268872, -0.005818862, 0.05463404, -0.04361906, 0.018875794, 0.012426502, 0.02016906, -0.06848341, -0.029962203, 0.01314057, -0.0059433873, 0.011490198, -0.047881532, 0.025394388, 0.01451635, 0.010862901, -0.010658848, 0.010595875, -0.019860644, -0.039783727, 0.00079090643, -0.008192882, -0.062549725, -0.05437387, 0.0076063247, -0.024834557, -0.07063475, 0.00991211, 0.03881307, -0.026589971, -0.015530527, 0.04400694, 0.005655312, -0.018897792, 0.021620315, -0.06621098, 0.012103423, -0.013186425, -0.04320279, 0.019398257, -0.032195024, 0.062267795, -0.0016239126, 0.047116645, -0.028174149, -0.03101564, 0.020132164, -0.019365855, 0.045969073, 0.02657578, -0.029785762, -0.0082515385, 0.020959966, -0.023235952, -0.043072235, -0.06017795, -0.031696804, -0.00020739416, -0.0070166923, -0.009543502, -0.006623959, -0.0020541335, 0.017096255, 0.02209098, 0.041605838, -0.010031077, -0.017243842, 0.028750772, -0.008329588, 0.051310997, 0.0014462898, 0.004317819, 0.028961685, 0.038142312, -0.0020564394, 0.0026291015, 0.023419783, 0.017775055, -0.013538123, 0.048631754, 0.029053986, -0.031785734, -0.03315634, -0.004214226, 0.045484684, -0.08944102, 0.012532107, 0.04988576, 0.014937051, -0.0032866136, 0.018760376, -0.0055486434, 0.055821344, -0.059283923, -0.039837074, -0.06398774, -0.0027121773, -0.02114634, 0.017063143, -0.024438394, 0.0075098267, -0.007893927, -0.027078139, 0.02275559, 0.012502187, 0.031100787, -0.0047138045, -0.018993108, 0.06582688, -0.07151838, 0.010493938, 0.046225924, -0.0013282686, 0.017740523, 0.013434293, -0.025258215, -0.0019323281, 0.014910856, -0.0237389, 0.019393291, 0.051704086, -0.037382625, 0.03980454, -0.021109682, 0.040597342, 0.026047466, -0.019131232, 0.022829114, 0.032447975, -0.010773734, -0.019995932, -0.010421564, -0.014462424, -0.010838776, 0.028721118, 0.00011400027, 0.01946358, -0.012233506, 0.0005941259, 0.05030865, -0.020881495, -0.06741058, 0.06394517, 0.008053811, 0.053876244, 0.01804421, -0.030412763, 0.058260284, -0.01324106, -0.026930552, -0.017539958, -0.012048551, -0.013062018, -0.018447703, -0.012635758, -0.019920247, 0.039830085, 0.015686626, 0.010190016, -0.0071923053, -0.07630875, -0.016056536, -0.034767717, -0.026202323, -0.019315714, -0.03294797, 0.018676177, 0.0065417704, 0.028209627, -0.003603721, -0.027993925, 0.07733097, -0.027619284, -0.031930067, -0.004647048, -0.009789374, -0.03680278, 0.029624932, -0.0019573988, 0.029624932, 0.062852465, 0.004421058, -0.023331739, 0.029636523, -0.058625467, 0.0526388, 0.00182022, 0.03152273, -0.0141797885, 0.010239211, -0.009147162, 0.0047491044, -0.012810603, -0.0072726016, -0.040657118, 0.056631643, 0.010160984, -0.01931193, 0.0019130226, 0.0062392675, -0.03480272, 0.017166028, 0.00052127923, -0.025108442, 0.037479125, -0.040394884, 0.060969803, 0.014718805, 0.00035690123, 0.031348653, -0.00036186806, 0.008858909, 0.0012847498, -0.030474495, 0.011796426, -0.023313764, -0.062298074, -0.03839086, 0.010011683, -0.017285941, 0.001397804, 0.037438918, 0.023925867, -0.037017565, -0.064737014, -0.036915272, 0.049460035, -0.019099066, -0.027717201, -0.019894939, 0.015041413, -0.023140637, -0.010762382, 0.01818517, -0.014878099, 0.045418464, -0.06999711, 0.03096834, 0.0034505185, 0.016760167, -0.010949703, 0.015942536, 0.020608326, -0.019878618, -0.012207253, -0.009053797, -0.008890602, 0.002339607, 0.015554, 0.019119406, 0.040363427, 0.025405029, -0.0115580475, -0.00061777735, -0.033710968, 0.024048854, 0.045543816, -0.0026698413, 0.011945903, 0.0013514472, 0.054876227, 0.03648576, -0.019901797, 0.016437799, -0.035743933, 0.03719909, 0.04732099, -0.057429176, 0.01463366, 0.028148249], [-0.0029529114, -0.09543552, -0.0034611998, -0.0245132, 0.017383855, 0.05229558, -0.0062991413, -0.039222494, 0.015522956, 0.057534378, -0.0011361851, 0.0294918, -0.063511804, -0.015230489, -0.021706926, 0.011192624, 0.0257932, -0.001344543, 0.03167149, 0.044053245, 0.025842818, 0.01427402, -0.036274828, -0.0052502933, -0.023607258, 0.032589737, 0.019170124, 0.030984392, -0.012727169, 0.021180283, 0.011024405, -0.03717724, 0.007017653, -0.026234925, 0.022491544, 0.0032167374, 0.012370561, 0.014519831, -0.059025962, -0.045907285, -0.04460571, -0.0009996332, -0.004011442, 0.060626663, -0.01852246, 0.037462443, 0.019983789, 0.028969193, -0.031116912, -0.021069145, 0.05634091, -0.03771578, -0.046980515, 0.019042296, 0.006868545, -0.004382119, -0.0030820007, 0.015668586, 0.0029385907, -0.012719204, -0.0067478893, -0.001304606, -0.08230394, -0.0005611339, 0.01037069, -0.0075656255, 0.015409802, 0.012283225, -0.013478508, -0.056710422, -0.0069643534, 0.044240426, 0.015363209, -0.018382076, 0.026776293, 0.015657693, -0.08667845, 0.0013336511, -6.454452e-05, -0.0124909775, 0.0047988845, 0.0013216498, 0.0145358285, -0.05791741, -0.032087497, 0.015755316, 0.014636074, -0.018367, 0.048687544, 0.008706022, -0.038036082, 0.025489436, 0.061026838, -0.0020912422, -0.008079007, 0.02879008, -0.02010844, 0.026673323, -0.00165476, 0.01888855, 0.04820628, -0.028752968, -0.033299323, -0.012211823, 0.0025941853, -0.004869304, 0.028794218, 0.0036181237, 0.002638257, 0.049694438, 0.01801024, -0.00022429219, -0.0050806617, -0.056904063, 0.028013933, -0.026606863, 0.02541763, 0.0041631213, -0.041001905, -0.015788397, -0.030079762, 0.01374193, 0.0036532194, 0.017924013, -0.022169024, -0.013257041, -0.0011989144, 0.0081677055, -0.078865334, 0.02251227, 0.029513787, 0.047653217, 0.036332916, -0.013436453, -0.020731445, 0.025049323, -0.0137882205, 0.03821822, 0.013318205, 0.027874697, -0.043135908, -0.034606956, 0.013004586, 0.0034055302, 0.016578259, 0.002807384, 0.02954364, -0.057920635, -0.005988118, -0.021523982, -0.020527376, 0.01748753, 0.009830634, 0.020856753, 0.008029338, -0.05418835, 0.0039162384, 0.022818102, -0.048192162, 0.025814578, -0.038725097, -0.00987047, 0.034309443, 0.008314443, 0.002292944, -0.06014016, 0.016727116, 0.007815736, 0.004618967, -0.004054606, 0.08523426, -0.024957348, 0.0018548481, 0.008792173, -0.08496721, 0.0021331962, 0.0073358878, -0.016943742, 0.046559792, 0.022074023, -0.01734195, -0.01668153, -0.01853167, -0.015585484, -0.017233185, 0.039728764, -0.023098867, -0.026814213, 0.029024761, 0.02834775, 0.016917318, -0.024608403, 0.017984925, -0.009481388, -0.037505914, 0.054563515, -0.06431781, 0.006856443, 0.025429329, 0.013971871, 0.018318137, 0.0076770657, 0.0014120878, -0.028131222, -0.0580707, -0.031136174, 0.05109828, 0.009587483, 0.052070886, -0.04192691, -0.016308181, 0.015626227, 0.022267858, 0.048383377, -0.008287516, 0.061421372, 0.01940173, -0.02983676, 0.048737563, 0.046312306, -0.008778722, -0.002156997, 0.043464683, -0.034305006, -0.03341147, 0.031386383, 0.01294763, 0.035349265, 0.022098443, -0.0029892179, 0.06544249, -0.0046488186, -0.01557076, -0.038349528, -0.01617821, -0.02477985, -0.031448144, 0.015380152, -0.054062486, 0.012938957, -0.009860183, 0.057353653, 0.019342378, -0.0035039606, -0.0257696, -0.047913816, -0.045807246, 0.018093845, -0.014016863, 0.0013209438, 0.055997208, -0.0027408225, -0.017709402, -0.0026866654, 0.012544277, 0.008958779, 0.0014853308, -0.008803115, 0.012835282, 0.026989693, 0.00016942936, -0.07214947, 0.00975429, -0.032207713, 0.039599676, 0.02936493, 0.018521402, -0.032441687, -0.0045766095, -0.033301417, -0.018629968, -0.05307153, 0.007846395, -0.0019649772, -0.05307657, 0.031290375, -0.0071892506, 0.030074516, 0.05506938, 0.015888037, -0.05170621, -0.003967067, 0.04301085, -0.00026841444, -0.01538711, -0.012655768, -0.0068981955, -0.0272515, -0.025074739, -0.05390516, -0.013717324, -0.011613928, 0.009810868, 0.045915358, 0.056274753, -0.03573709, 0.048531026, -0.019230636, -0.07727673, -0.010744167, 0.043877363, -0.013211657, 0.020545125, 0.02182472, -0.017308418, -0.035526108, -0.023105323, 0.039176907, 0.022187177, 0.022108112, -0.02715549, -0.0035299798, -0.035063002, 0.022687398, 0.005403183, -0.028331513, 0.039123658, 0.06369172, -0.01937271, -0.0031969703, -0.010751099, 0.0029504912, 0.0027818687, -0.031261332, 0.03715505, 0.05890212, -0.024869809, 0.0092516495, -0.049015913, -0.047667738, 0.0066940733, 0.030545691, -0.009531208, 0.004614126, 0.016601657, 0.031492077, -0.026643168, 0.012014155, 0.019243948, 0.0043591755, 0.0085583, -0.094686806, -0.0062727183, -0.023623127, 0.062097475, -0.0521439, 0.022484083, -0.07062986, 0.002876971, -0.011576462, 0.0077203307, -0.0029279005, 0.022959292, 0.02714097, -0.024774473, 0.007824611, 0.006013494, -0.01778282, -0.025283223, 0.0051831766, -0.006698511, -0.04461156, -0.06481238, 0.042711526, 0.017098952, -0.038490318, 0.041440807, -0.005878594, 0.063886166, -0.018616151, 0.047059808, -0.0071739214, -0.021079432, 0.025468864, -0.0005645628, 0.076643385, -0.053257294, 0.0053265365, 0.018891374, -0.016970366, 0.009081312, -0.009936629, 0.05650953, 0.020387193, 0.0076001165, 0.040382072, 0.029807867, 0.012397388, -0.04420331, 0.036373254, -0.02770069, 0.015366133, 0.017932685, 0.030560216, 0.036965452, -0.01526155, 0.053502258, 0.027085299, 0.041175973, -0.006853014, 0.0052369805, 0.024702799, 0.00792647, -0.0017848576, 0.009277468, -0.041568283, 0.008264119, -0.018712666, 0.015773268, 0.031303287, 0.027762413, -0.0020299251, -0.010692606, 0.02414207, 0.026831156, -0.014517675, -0.0072915135, 0.024477905, 0.023880664, -0.00874558, 0.0439766, 0.03739225, -0.05971013, 0.036002934, 0.062261254, -0.021577232, 0.030224584, -0.038484666, -0.03824666, 0.009872084, 0.024311878, 0.051063385, 0.009689897, 0.081479385, 0.045659598, -0.0090773795, -0.0056056916, -0.022511512, -0.055108108, 0.00034369953, -0.030972494, -0.056580532, 0.015130848, 0.0036844832, -0.008628064, 0.012259425, -0.05705735, 0.0067486335, 0.014577783, -0.03725348, 0.0049715415, -0.037234522, -0.005859028, -0.005845514, -0.07516209, 0.04169737, 0.061093908, -0.019454122, -0.010068138, -0.0312579, -0.035909344, -0.0039791693, 0.009105567, -0.03731258, 0.020578304, -0.0031679254, 0.021055229, -0.061070405, 0.015071952, 0.039329797, 0.0015666165, -0.0038629891, -0.012605342, -0.055081885, -0.037800495, -0.0051490385, 0.032987013, 0.02743626, 0.012595358, -0.002825033, 0.021334384, 0.03719257, 0.056987967, 0.027827863, 0.019331284, 0.0147948135, -0.025588006, 0.022098832, -0.057729423, -0.040943816, -0.0034837902, -0.0014990898, 0.0114268, 0.056773353, -0.044643827, -0.03532239, 0.0030192714, 0.011889907, -0.043859612, 0.01671703, 0.043446526, 0.052075323, -0.034488555, 0.017207569, 0.012778201, -0.052199166, 0.03500572, 0.03906103, 0.005703718, -0.009823675, -0.030665705, -0.04403227, 0.030816779, -0.041227005, 0.061102476, 0.010270898, -0.0014897682, -0.035789933, -0.0031569328, -0.009307319, 0.0017952453, -0.024376448, 0.019856112, 0.028080344, -0.03254496, -0.028505279, 0.04835675, -0.029767124, 0.02980938, 0.015916677, -0.012427644, -0.03378439, -0.0037177643, 0.030464608, -9.520316e-05, -0.024307868, 0.022283189, 0.012423055, 0.0018883306, 0.00086328294, -0.0068316334, 0.04048232, 0.008124932, 0.015340618, -0.0139279, -0.017623276, -0.022008017, 0.03804052, 0.021286782, 0.012882985, -0.0066392105, -0.02111221, -0.0790154, -0.07339196, 0.062494017, -0.0040203165, -0.026219092, 0.027006233, 0.037438996, -0.01640298, -0.056788687, 0.021061784, 0.028662607, 0.04006278, -0.025781803, 0.037731916, 0.01208828, -0.045721725, -0.09371864, 0.023828221, -0.014890419, -0.021268629, -0.06151738, -0.014845037, 0.009273434, -0.036207054, 0.03620907, -0.022357415, -0.027982064, -0.0042797048, 0.0027108698, -0.022332, -0.0140210865, -0.011901202, 0.06159806, 0.07835866, -0.015271232, 0.005913891, 0.036792796, -0.03325172, 0.045538574, -0.01893252, 0.022874374, 0.01112344, -0.04110356, -0.042778492, -0.020995526, 0.012588601, -0.012652995, -0.050680354, -0.03997968, -0.028495494, -0.007755881, -0.018281024, 0.010388037, -0.037349492, -0.010450968, 0.02501584, -0.020677038, 0.007492206, 0.010565533, 0.01947792, -0.026316011, -0.038031846, 0.0090822205, -0.017255168, -0.01803172, 0.016119992, -0.037518114, -0.02854562, 0.009346046, 0.0018153145, -0.004756326, 0.030156963, -0.014332564, 0.017368525, 0.026737465, 0.06480592, 0.007779556, -0.022874577, 0.028997986, 0.0212416, 0.04655556, 0.00418309, -0.06195144, 0.08995933, -0.009259718, -0.023898516, -0.0068493835, -0.00958123, -0.0005720258, 0.019350447, -0.0005115153, -0.02830872, 0.039837077, 0.023837904, 0.039751355, -0.018814525, -0.029554935, 0.014366361, 0.042934205, -0.0065278714, 0.019633636, -0.07538961, 0.028827194, 0.012815718, 0.006034307, -0.025288945, -0.019607011, -0.01736792, 0.014869442, -0.021730121, 0.004037663, 0.02748144, 0.038791537, -0.015597989, 0.020671995, -0.044902813, -0.0034567623, -0.024683034, 0.03502831, 0.0121775335, 0.024252601, -0.03093296, -0.024367975, -0.010300901, -0.031328194, -0.036081795, -0.002255629, 0.043733753, -0.0033192018, -0.03194772, 0.015787588, 0.011279356, 0.02695137, 0.021209328, -0.013572905, 0.045418363, -0.0455886, -0.049250696, -0.020020096, 0.037404355, 0.02747418, -0.019430522, -0.010378758, -0.006279375, 0.047348045, 0.036537845, 0.012205368, 0.025306292, 0.047181636, 0.022241235, 0.004576206, 0.02594367, 0.026000952, -0.032893095, 0.010256779, -0.010123807, -0.058233675, -0.047979165, -0.012724144, 0.028547334, -0.02315131, 0.053547747, 0.018631985, 0.007576266, 0.0140753435, -0.027587133, -0.013512395, -0.012027871, 0.0135220755, 0.02482034, -0.061916746, -0.040624317, 0.017322134, -0.009302478, -0.02292944, -0.058977555, -0.0045455475, -0.0066482867, 0.008565461, -0.033273306, 0.0038931563, 0.03974732, -0.000108112064, 0.002505739, -0.023495011, -0.047368415, 0.023340305, -0.0089303395, 0.027096292, -0.03889705, 0.0031159117, -0.01922176, 0.009410591, -0.058345012, -0.032364234, 0.018096214, -0.0074335113, -0.0008531978, 0.013750856, 0.047904942, 0.046367165, 0.012184391, -0.01218376, -0.006732397, 0.039633155, -0.046705168, 0.018900247, 0.00413811, -0.00459799, -0.05839988, 0.010106058, 0.033680942, -0.012748752, 0.034026254, -0.043280326, 0.014144023, 0.00937852, -0.022020774, -0.01970698, 0.010488887, -0.0074177785, 0.007416165, -0.00036144932, -0.0026525778, -0.07589144, -0.029316926, 0.024825435, -0.029481312, -0.056351803, 0.0035106167, 0.058102973, -0.030320467, -0.044352166, 0.05273992, -0.009345239, -0.024936672, 0.015263569, -0.05929866, 0.013772186, 0.010657914, -0.06111882, 0.03184707, -0.06577369, 0.04527475, 0.0034224729, 0.011120213, -0.031046318, 0.00047682264, 0.016034473, -0.012947227, 0.0444986, 0.0066802567, 0.0047436184, 0.006331313, 0.019634442, -0.021774093, -0.042266976, -0.06797264, -0.022962922, -0.008986008, 0.0086041875, 0.016213482, 0.038362034, 0.011528961, -0.0074571106, 0.031316195, 0.028802184, -0.0044027427, 0.010018922, 0.025785735, 0.014025522, 0.03725469, -0.007898111, -0.0055804783, -0.0012602317, 0.010532859, -0.041989334, -0.01267372, 0.049905017, 0.016610531, 0.00472602, 0.0515868, 0.005600044, -0.018021297, -0.03744772, 0.008312527, 0.023521231, -0.067662016, 0.0025856886, 0.06439526, 0.021238776, -0.013977115, 0.046384916, -0.0043474766, 0.02322816, -0.06957657, -0.010603959, -0.056218274, -0.038484164, -0.0050905454, 0.0061273426, -0.004589115, 0.005094378, 0.0064116907, -0.03991433, 0.042962443, 0.01946461, 0.022976235, 0.026839225, -0.009270206, 0.080415204, -0.038065936, -0.017969597, 0.05710092, 0.023911323, 0.010976804, 0.0039021194, -0.002213877, -0.0020258154, 0.017691048, -0.043196216, 0.01811956, 0.017293695, -0.059510045, 0.036533408, -0.015786529, 0.03278942, -0.0023175515, -0.03255948, 0.039260816, 0.003901716, -0.012072648, -0.03741484, -0.024038903, -0.02145379, 0.023389723, 0.033932462, -0.0053148377, 0.015015878, -0.003467654, -0.009991088, 0.029567441, 0.010202874, -0.04809212, 0.04811592, -0.008247175, 0.055229936, 0.02607316, -0.040497247, 0.070160694, 0.0096154185, -0.025893444, -0.024614053, -0.03207822, -0.047048163, -0.027361428, 0.026522957, -0.03572297, 0.023200527, 0.026857376, 0.040421356, 0.011559922, -0.07752522, -0.02189108, -0.059101798, -0.024381692, -0.041218128, -0.013556163, 0.019127667, -0.0013407106, 0.047198176, -0.006834155, -0.00041550532, 0.06762007, 0.0006256784, -0.016199866, -0.009031392, -0.013002896, -0.01998742, 0.0011402193, -0.017032491, 0.04273936, 0.027403584, 0.039669868, -0.039881248, -0.013046061, -0.063206024, 0.018844174, 0.0017408867, -0.007791734, -0.019553559, 0.045865536, -0.025877308, 0.015379345, 0.036917444, 0.034716476, -0.04427653, 0.074818395, -0.005292953, -0.01649082, -0.025154611, 0.027036892, -0.044198472, 0.027177578, 0.012330423, 0.012161801, 0.019189488, -0.026526183, 0.07386636, 0.01614823, 0.028942164, 0.043819867, 0.008202398, 0.008383122, 0.01454672, -0.0397925, 0.010271806, 0.0029480709, -0.019495672, -0.028939137, -0.0012457093, -0.04587663, -0.018357268, 0.034887522, 0.042568494, -0.009773653, -0.04298826, -0.031163303, 0.059313186, -0.015339408, -0.01857349, -0.0055685784, 0.0065093143, -0.011441726, 0.009156043, 0.021633709, -0.033965744, -0.0021243214, -0.09088836, 0.015657894, 0.01930486, 0.022268767, -0.0361296, 0.014808529, 0.017011564, -0.009069059, -0.00951245, -0.0058299834, -0.03542375, 0.004331744, -0.003267566, -0.005776129, 0.04058912, 0.023828624, 0.004825862, 0.009886202, -0.025788154, 0.03604327, 0.033339664, -0.0012077893, 0.015277889, 0.0013421226, 0.0371136, 0.0017687214, 0.0019520179, -0.013298591, -0.030734485, 0.04623001, 0.017717369, -0.03859762, 0.020323252, 0.035066027], [-0.01678883, -0.052661914, -0.016869731, -0.06964183, 0.024899187, 0.0020973962, 0.014354547, -0.042665172, 0.035190854, 0.033922397, -0.020236796, 0.022286497, -0.033317447, -0.0075346883, 0.0012092933, -0.013372259, -0.010979634, -0.00972506, 0.025627598, 0.031657536, -0.02521411, 0.02613957, 0.010738741, 0.052040063, -0.03347382, 0.03386504, -0.005867155, -0.0004515983, 0.02456924, 0.020657603, -0.04801915, -0.057374716, 0.0019331786, -0.04898151, 0.016872145, -0.013348261, 0.02886848, -0.011700048, -0.023640083, -0.061022516, -0.021284286, 0.032555528, -0.014091315, 0.011894905, -0.013886647, 0.046710234, -0.012576982, 0.028646303, -0.007256967, -0.035516877, 0.025010275, -0.0030715324, -0.022705493, 0.018488964, -0.01131773, 0.047070064, 0.03381312, 0.037761588, -0.00940787, 0.01161477, -0.036456298, 0.009387268, -0.0398783, 0.007982664, -0.0030202144, 0.033404086, -0.014131766, -0.0039013745, -0.007957307, -0.03981551, -0.011064008, 0.03801395, -0.0064078053, -0.00386032, 0.02871815, 0.00087180204, -0.049555063, -0.020161327, 0.012581962, -0.033133306, -0.025243618, 0.00844513, -0.0036381432, 0.0062016277, -0.04461284, 0.019240623, -0.02387675, -0.027216645, -0.001268309, 0.0038797907, -0.08695803, 0.014073808, 0.053177506, 0.019677127, -0.0017416419, -0.011811589, 0.02750161, 0.010613767, 0.044560917, 0.025079928, 0.04888068, -0.021774523, 0.0035741467, -0.046151172, -0.0063320356, 0.005498873, -0.022855218, 0.0027470216, -0.0065662875, 0.029113598, -0.01426006, 0.010261786, -0.04419505, -0.013788237, -0.022011342, 0.0043276157, 0.03316229, -0.021696037, -0.009893504, -0.008415471, -0.020441879, 0.05096057, 0.019515023, 0.038537998, -0.027069334, -0.018594922, 0.009442509, 0.019836515, -0.058041245, 0.00071324455, 0.053749856, 0.01075142, 0.062332634, -0.02369261, -0.058975838, 0.062330224, -0.010222845, 0.029052319, -0.0081915585, 0.06217808, -0.034965564, 0.02537584, 0.02416534, 0.0009128564, 0.030389607, 0.011771742, -0.008486184, -0.052018326, -0.0012594038, -0.016583558, -0.034399956, 0.022031715, -0.026343634, 0.004576885, 0.02168034, -0.01072478, -0.0114783235, -0.010133189, -0.06160332, 0.031607047, 0.022566631, 0.008438224, 0.016526807, 0.023132639, -0.019544305, -0.044886936, 0.007867953, -0.022374038, 0.023620764, -0.013453764, 0.10461625, -0.039918523, 0.017044816, 0.039310787, -0.06868037, -0.0032583901, 0.009519033, -0.057558853, -0.0061601577, 0.022471242, 7.969381e-05, -0.026238585, -0.03335986, -0.01498606, -0.029205367, 0.01863688, -0.027021032, 0.021636872, 0.016217692, 0.028398769, 0.018104985, -0.011407686, 0.00086817954, -0.034007523, 0.006093407, 0.012263187, -0.06465583, -0.018161736, 0.023451716, 0.06723109, 0.011599677, -0.02254852, 0.013552703, -0.028800258, -0.009597671, -0.05338761, 0.037545446, 0.010675349, 0.024381476, -0.0018776346, 0.025007555, 0.0012111044, 0.028059468, 0.07059423, 0.009653819, 0.019250283, 0.004319314, -0.015923781, 0.014199989, 0.02321022, -0.012922171, -0.014520274, 0.047434423, -0.017266389, -0.025539754, 0.010934957, -0.00697985, 0.011952817, 0.01237186, 0.005047888, 0.065199204, -0.03502664, -0.005881947, -0.007642154, -0.022423243, -0.024832472, -0.033479854, 0.02225148, -0.041953813, 0.011018575, -0.033741876, 0.0017055683, -0.009766115, -0.019826854, -0.0031047382, -0.009356589, 0.01116136, 0.00016663253, -0.04398857, -0.00080267363, 0.04640897, 0.034690354, -0.024673687, 0.03843521, -0.002492243, 0.006902873, -0.010976012, 0.00890035, -0.011123324, -0.012415633, 0.006618209, -0.02701862, 0.020745749, -0.053834375, 0.06098267, 0.0046657105, 0.022691002, 0.0014749393, -0.023032041, -0.03775494, -0.03883021, -0.046005066, 0.054153156, 0.008960724, -0.0039700503, 0.021744335, 0.019220699, 0.008153824, 0.03891413, 0.07661715, -0.037687927, -0.011740008, 0.03409084, -0.0038246994, 0.0121041015, 0.0154219605, 0.054133836, -0.030491335, -0.0043463316, -0.06439939, -0.044053774, -0.017562827, -0.016542504, 0.057519615, 0.036688134, -0.034847934, 0.017946202, 0.014136596, -0.08185762, 0.012332014, 0.050120164, 0.034306977, 0.0050690095, 0.049235076, -0.017888846, -0.05041539, -0.054161604, 0.040855758, 0.014381112, 0.007539367, 0.0027433992, -0.03383606, -0.03783645, 0.0024795644, 0.010546148, -0.032503, 0.0072227046, 0.03860803, -0.013395202, 0.010273257, 0.0061400463, 0.013930719, 0.009670723, -0.02701862, 0.048439346, 0.055370297, 0.018835513, -0.021140594, -0.07036964, -0.034241173, 0.08725657, -0.0021244136, -0.027566815, 0.021751583, -0.046176527, 0.010442304, 0.016327571, -0.035784937, 0.011339463, 0.009377305, -0.018228149, -0.07790191, -0.054446574, -0.03606507, 0.026598413, -0.0612942, -0.007392205, -0.05846145, -0.001305288, 0.0035487898, 0.042597853, -0.043945856, 0.0011869548, 0.023881579, -0.014741771, -0.019034747, 0.028514689, -0.010476114, 0.005737351, 0.029911745, -0.004151927, -0.0143847335, -0.05707043, 0.045027003, 0.042447824, 0.0031901675, 0.10411393, -0.017112434, 0.028601816, -0.010234618, 0.07367331, 0.019136176, 5.5544173e-05, 0.022323929, -0.0044675325, 0.03819598, -0.03402443, -0.028438013, 0.011279391, 0.01883491, 0.015275855, -0.01613679, 0.059530977, 0.04470853, 0.048240114, 0.03546858, 0.054896966, 0.04215199, -0.03492038, 0.050299175, -0.01106778, 0.0063078864, 0.035100296, 0.047370426, 0.025038347, 0.03643456, 0.027371202, 0.046437345, 0.022268986, -0.011751215, -0.03187994, 0.023369003, 0.008886464, 0.013183893, -0.029323097, -0.03840759, -0.009609142, 0.0027747937, 0.005450574, -0.024869904, 0.04025564, -0.011345501, 0.019865494, 0.026743311, 0.028443448, -0.034036502, -0.0222225, 0.03847883, 0.05800291, 0.0048638885, 0.027504139, 0.026490798, -0.03400088, 0.05339214, 0.03495419, -0.024040967, -0.008454713, -0.0350206, -0.028164519, 0.019386878, 0.033549886, 0.07390756, -0.00032194488, 0.087040134, 0.024677008, -0.02452396, -0.005076858, 0.005576152, -0.06717464, -0.002399267, -0.04527333, -0.021973757, -0.036621723, 0.009432548, -0.009543636, 0.016222067, -0.024698442, 0.0059764325, 0.0012563851, -0.048864383, 0.0042708637, 0.010509924, -0.014531065, -0.009913427, -0.022189597, 0.035404578, 0.02452396, -0.040151797, -0.03881089, -0.035236742, -0.024993442, 0.014346093, 0.013372109, -0.042258702, -0.0047852513, -0.037977725, 0.047764216, -0.026977565, 0.026257904, 0.021683961, 0.044630345, -0.05598913, -0.014462616, -0.01844791, -0.019252999, 0.012125534, 0.044326667, 0.025996184, -0.00670711, 0.056396995, 0.018665258, 0.019420538, 0.0045208125, 0.041933436, 0.024062702, 0.020676922, -0.003541243, -0.046461497, -0.023484318, -0.016082453, 0.023385305, 0.00956205, 0.02329595, 0.07075845, -0.08528688, 0.014222328, -0.0004165813, 0.019467026, -0.046087176, 0.022050131, 0.020154687, 0.03350038, -0.06508811, 0.01017779, 0.015259855, -0.07321205, 0.019997714, 0.03781366, -0.024797454, 0.0027204573, -0.026563397, -0.04592175, 0.0013475498, -0.0330355, 0.017001348, 0.03822888, 0.021085957, -0.0451067, -0.0058399867, -0.030852072, -0.014482539, -0.0006700016, 0.008928122, 0.03575596, 0.011690841, -0.025076987, 0.02558896, -0.06545277, 0.0110981185, -0.0011631071, -0.04278264, -0.056853082, -0.04752891, 0.035833236, -0.014024073, -0.008138428, 0.06650811, -0.0033966468, 0.02672369, -0.009015061, -0.018489342, 0.035407297, 0.021052392, 0.003694593, -0.012847608, -0.025605863, -0.03150079, 0.04563437, -0.020405238, 0.033318054, 0.0078637265, -0.008024925, -0.051518425, -0.05936948, 0.06023886, -0.025981996, -0.041851327, 0.028325113, 0.043161444, 0.03566902, -0.04986418, 0.0116787655, 0.036924195, 0.023298366, 0.03198016, 0.028554535, 0.01827645, -0.07989184, -0.024799267, 0.028022941, -0.0017333404, -0.018973166, -0.025756799, -0.015821638, -0.007883047, -0.0040269527, 0.015579838, -0.0030410436, -0.022414489, -0.015492673, 0.007519594, -0.03885677, -0.02369925, -0.024827037, 0.034870874, 0.030320479, -0.010352347, -0.009120112, 0.032289576, 0.0011570696, 0.05786012, -0.026468309, 0.04978207, 0.012633884, -0.009483262, -0.0059752245, -0.031790588, 0.0040041613, -0.00533043, -3.6224462e-06, -0.040786028, -0.04480513, 0.014422276, -0.0320831, 0.014500047, -0.008180993, -0.015610328, 0.042428505, -0.027617227, 0.029984195, 0.018549338, 0.013745975, -0.007020904, -0.008908803, 0.03262858, 0.0061050295, -0.0017955258, 0.0021671285, 0.0034872082, -0.008072018, 0.017642068, -0.0058417977, 0.012437669, 0.04491592, -0.048110913, 0.011689887, 0.00074260146, 0.0632787, 0.04251242, 0.0046463907, 0.044836223, 0.01038676, 0.018453345, -0.016142223, -0.06700801, 0.058244105, -0.025603447, -0.037707247, -0.0390391, 0.002389607, 0.024831869, 0.00039484663, -0.011656126, -0.03336333, 0.024365176, -0.027586134, 0.03878432, -0.0034678883, 0.020727636, 0.0030159883, 0.0586631, 0.0005083499, 0.012081895, -0.04911916, -0.007050487, -0.046408363, 0.01569787, 0.003146698, 0.0038772249, -0.03788052, 0.031505622, -0.047550645, 0.03022569, 0.022847975, 0.042086788, -0.04191291, 0.017582146, -0.0004938601, -0.039779287, 0.005165608, 0.01542679, -0.0054095197, 0.0073882807, -0.0038334536, 0.014247835, 0.027436407, -0.022073979, -0.014673926, 0.04004252, 0.025777325, -0.049194023, 0.019200172, 0.027086237, 0.023381984, 0.029854992, -0.002445151, -0.010279295, 0.0037021397, -0.03046115, -0.06839178, -0.029605648, -0.0026612906, 0.009933954, 0.0065373075, 0.00571305, 0.013269624, 0.046219997, 0.07197559, 0.05870536, 0.0009385154, 0.09303891, 0.006782427, 0.008020699, 0.005580378, 0.03378052, -0.03828382, 0.025585337, -0.013638509, -0.05182513, -0.04057502, -0.024187751, 0.014673926, -0.026794026, 0.07040767, 0.058594275, 0.019387934, -0.014091315, -0.008402867, 0.0058707776, 0.014388091, 0.018406855, 0.00012195569, -0.03960541, -0.061815836, 0.030732833, -0.01267675, -0.015687607, -0.054295637, -0.040000256, -0.01648213, -0.0027249851, -0.020099746, 0.009089924, 0.011849021, 0.03997007, -0.002034607, -0.064948045, -0.058234442, -0.0005107649, 0.026210207, -0.001359021, -0.0410399, -0.00016376475, -0.007595062, 0.010683197, -0.007231308, 0.0024088512, 0.004606544, 0.028960852, -0.0076095513, 0.010966351, 0.011019481, 0.017304122, 0.011640127, -0.012566869, -0.013382523, 0.01732314, -0.030993648, 0.010682593, 0.03821077, 0.02722389, -0.034847934, -0.039292675, -0.03310916, 0.014825314, 0.03687118, -0.038308576, 0.0103541585, 0.011346709, 0.012946622, 0.020351505, 0.056021128, -0.032878757, -0.04906241, -0.00022398792, -0.023134148, -0.07643361, -0.03341193, -0.022217369, -0.0088266935, -0.041636396, 0.007992625, -0.0073777153, -0.05404931, -0.005485591, 0.047481816, 0.0018498624, -0.011709557, -0.011465948, -0.08200252, 0.0050011077, -0.026772292, -0.07712429, 0.035135917, -0.027259814, 0.027508857, 0.00807564, 0.07879545, -0.060924713, 0.0044166674, -0.01377737, -0.0013040806, 0.04198415, 0.037363946, -0.0121038, -0.0039104307, 0.015380906, -0.005422802, -0.040175345, -0.074926674, -0.033652525, 0.023088263, -0.00069249095, -0.002179505, 0.023458356, -0.012240246, -0.033678487, -0.0023422134, 0.033943526, 0.001960951, -0.019058293, 0.054916285, 0.020938946, 0.03427136, 0.0015606706, -0.0011706161, -0.008850844, -0.03551929, -0.0025592581, 0.0026099724, 0.029964874, 0.0069200797, -0.009377305, 0.013955172, 0.007677171, -0.0015316909, -0.009113168, -0.02664128, -0.0052114925, -0.038059834, 0.011342483, 0.017980615, 0.0018919734, 0.0051197237, 0.022090884, 0.015878389, 0.015588593, -0.034058843, -0.0182366, -0.0630692, -0.041021787, -0.02776967, -0.018192528, -0.014305643, -0.012655921, -0.010051081, -0.037856977, 0.006855479, 0.006063975, 0.033205755, 0.011917848, -0.0050834995, 0.036493126, -0.025673784, -0.05701006, 0.020386145, -0.024465397, 0.0110448385, 0.032870077, -0.025532207, 0.03065797, 0.003822888, -0.028643887, 0.03375697, 0.022304608, -0.065609746, -0.019526191, 0.016928295, 0.03876093, -0.019295562, 0.011625637, 0.011231394, 0.01578979, -0.034495346, -0.013379269, -0.039484814, -0.010763495, -0.02111403, 0.03495057, 0.039147776, 0.00154686, -0.04760298, -0.041112952, 0.022128316, -0.022066735, -0.03148751, 0.040759765, 0.04009263, 0.044845883, 0.024037646, -0.059898354, 0.056392428, -0.0025151852, -0.0065650796, -0.020199968, -0.036928423, -0.0005261226, -0.02800996, -0.017262766, -0.022796053, 0.07316043, 0.06265866, 0.028560875, -0.03285317, -0.042165272, -0.00572105, -0.022793034, -0.029457731, 0.0033583094, -0.045506373, 0.0034968678, 0.029454712, 0.02479051, 0.029274195, -0.026712824, 0.028024452, 0.0038796398, -0.005466271, -0.021971947, -0.0269836, -0.029635232, 0.010074476, -0.00906819, 0.039900035, 0.02988035, 0.044717893, -0.022678927, 0.00094908086, -0.016784, 0.00974438, 0.018713556, 0.02760787, -0.00040390273, 9.780604e-05, -0.017012214, 0.0014767506, -0.006049485, -0.0077985227, -0.043053374, 0.004256374, 0.02772288, -0.02618606, -0.0052259825, 0.034411427, -0.003983483, 0.059963558, 0.027074615, -0.017625313, 0.013447728, -0.0073580933, 0.07514764, 0.007824484, 0.0070323753, 0.057167027, 0.009112263, 0.017228354, 0.002489828, -0.05745924, 0.042218402, 0.009882787, -0.035376202, 0.015989477, 0.010332423, -0.028153047, 0.014781996, 0.030205466, 0.037635706, -0.01186819, -0.023043437, -0.086792596, 0.038558524, 0.00020587568, -0.0309858, 0.009287197, 0.0005252547, -0.032424517, -0.0029982908, -0.025049213, 0.003746213, 0.035982963, -0.084538236, 0.03251266, 0.026180625, 0.001988723, -0.028380658, 0.029228913, 0.012446725, -0.02621504, -0.034586437, 0.035270553, -0.020961888, 0.028629247, 0.022614328, -0.015161749, 0.050018735, 0.045887943, -0.0054647615, -0.004296825, 0.016763775, 0.013812086, 0.08294556, 0.0070898817, -0.041047145, -0.028730828, 0.03913668, -0.007264212, 0.022872576, -0.028302774, -0.023241311, 0.014751808, 0.029205367, -0.03271465, -0.023369003, -0.011715896], [0.0013085525, -0.070639655, -0.040976, -0.07945517, 0.0241898, 0.028353874, 0.0025785817, -0.0046689063, 0.011434183, 0.047039576, -0.009492801, -0.0074331597, -0.034737058, -0.00809746, -0.024302177, 0.0058120554, 0.006591476, -0.01279593, 0.026021883, 0.039825685, -0.032285914, -0.008167786, 0.0023637933, 0.046039548, -0.022546295, 0.038050935, 0.0064880014, 0.01294599, 0.019102009, 0.029630957, -0.04505183, -0.07363102, 0.009288651, -0.04502003, -0.001342932, -0.014248663, 0.034812756, -0.01758578, -0.025118383, -0.031120367, -0.03148992, 0.023487423, -0.016613297, 0.023784187, -0.012840277, 0.05194522, -0.016278012, 0.03495789, -0.013182056, -0.031755548, 0.023009468, -0.008928841, -0.050577205, 0.016165353, -0.0033282137, 0.03724195, 0.049637422, 0.037150346, -0.015889421, 0.0026034426, -0.037645996, 0.019585172, -0.06764292, 0.008078254, 0.022235872, 0.032290395, -0.031388685, 0.003327094, -0.0058010817, -0.03801902, -0.034511294, 0.030461164, 0.016776571, 0.0050729504, 0.027817238, 0.008796865, -0.04244346, -0.0107427845, -0.014003583, -0.020571318, -0.0031857681, 0.012603314, 0.016754845, -0.018482113, -0.03836539, 0.032380875, -0.007402924, -0.025991872, 0.033633325, 0.018345939, -0.061464895, -0.007520061, 0.04563046, 0.016364241, -3.404364e-05, -0.0050859405, 0.03328393, 0.023937158, 0.043382347, 0.016719235, 0.06022947, -0.048092015, 0.001445063, -0.035110865, 0.027019005, 0.0053990525, -0.02746605, -0.0045495294, -0.01429956, 0.03203596, -0.013198854, -0.007948294, 0.00063787034, -0.027998641, -0.026827509, 0.0085566, 0.044312276, -0.02925827, -0.02646938, -0.0017523515, 0.00078837905, 0.04494298, 0.03687128, 0.05106994, -0.038052954, -0.009220451, 0.017336275, -0.012240257, -0.06152783, 0.0026839813, 0.029332515, 0.00804281, 0.05506021, -0.024185097, -0.043968704, 0.04262085, -0.0025911275, 0.03272266, -0.03052147, 0.06806399, -0.056530364, 0.015540026, 0.02018967, -0.0070792856, 0.011445831, -0.001319919, -0.006820374, -0.040294904, 0.007922761, -0.023616657, -0.039442245, -0.0009550137, -0.020369297, -0.009860338, -0.00352934, -0.031183973, -0.011640237, -0.0029199703, -0.061722916, 0.045562487, 0.025064856, -0.0015050874, 0.0051567154, 0.0033954051, -0.007896837, -0.071491644, 0.00063831825, -0.0056337747, 0.008797593, -0.019028602, 0.09747232, -0.033857297, 0.034962818, 0.017727777, -0.07879311, 0.010268777, 0.0010656555, -0.042603824, 0.0044220896, 0.0059880973, -0.014895884, -0.012299498, -0.028994432, -0.014989784, -0.03328953, 0.03126819, -0.0043391646, 0.018746398, 0.0306124, 0.028858816, 0.0362511, 0.011051641, 0.00045645353, -0.03724598, -0.013920265, 0.0029465668, -0.04845306, -0.020489793, -0.011853458, 0.07786856, 0.008625584, 0.009747679, 0.026516413, -0.008946647, -0.017783323, -0.060339667, 0.06733832, 0.010460469, 0.033944197, -0.00670167, 0.00021904394, 0.00029250653, 0.0418898, 0.040763676, 0.01711768, 0.01785141, -0.019104753, -0.023897516, 0.006446567, 0.061902765, -0.0101638185, -0.016285626, 0.039015803, -0.0345319, -0.011150636, 0.009953006, -0.010430344, 0.008161067, 0.0027279707, -0.00979785, 0.05671833, -0.005692455, -0.020251486, -0.031895306, -0.04540347, -0.0321475, -0.02548704, 0.019801753, -0.052712098, 0.011331158, -0.026045626, 0.014017917, 0.0018647853, 0.0057600946, -0.0021357907, -0.0059128427, 0.021397324, 0.0006450374, -0.034928773, 0.008351554, 0.054774426, 0.0082464, -0.049825557, 0.03044039, 0.02070391, 0.008796026, -0.020189894, -0.007739329, 0.014046585, 0.0023169832, 0.017806169, -0.048105456, 0.0056732497, -0.06994534, 0.047915526, 0.010328662, 0.024790488, -0.015847314, -0.02003737, -0.02127414, -0.027169513, -0.041877262, 0.049191266, 0.012684839, -0.025238879, 0.0074994555, -0.004632623, 0.024863167, 0.040881038, 0.05491508, -0.05268074, -0.001140462, 0.00539043, -0.025607537, -0.0026088178, 0.009508702, 0.029538905, -0.027885327, 0.0155415945, -0.05440532, -0.0146566825, -0.019849233, -0.019108336, 0.058211043, 0.057902858, -0.048216544, 0.011085684, 0.0036467009, -0.079210594, 0.013189671, 0.026362319, 0.0114879375, 0.018334292, 0.015815958, -0.010351059, -0.05743431, -0.039061494, 0.04615959, 0.028532602, 0.003820167, 0.014755511, -0.043613486, -0.04764497, 0.0072983294, 0.006328982, -0.03362974, 0.030288089, 0.048387658, -0.043919876, -0.013238049, -0.018791642, 0.004359378, -0.010792729, -0.042986367, 0.028195301, 0.04018919, -0.0022166441, 0.0040334994, -0.07015499, 0.0019180904, 0.07093261, 0.017478721, -0.03850795, -0.0064526135, -0.013155516, 0.0006844563, -0.013710236, -0.024497533, 0.0037745887, 0.015417738, -0.0006548921, -0.06820912, -0.02437592, -0.022999166, 0.03449024, -0.068400845, 0.009374543, -0.051206116, -0.0036453572, -0.005917322, 0.067560054, -0.02312459, 0.0068438076, 0.007536971, -0.005956741, 0.0022428487, 0.0016869521, -0.02091377, 0.0060364753, 0.019755166, 0.017353298, 0.0036375183, -0.046199013, 0.020363024, 0.042879757, -0.012536123, 0.07548729, -0.00740046, 0.025371471, -0.013263805, 0.0663627, 0.035854224, -0.0063657127, 0.025447452, 0.010032628, 0.05563806, -0.045069303, -0.02841804, 0.025253214, 0.028558135, 0.024108721, -0.010988929, 0.052609745, 0.056651305, 0.014808284, 0.04648211, 0.050024442, 0.03584168, -0.035048824, 0.036983486, -0.021282202, 0.017716074, -2.0605361e-05, 0.033337682, 0.04510603, 0.015072263, 0.03335381, 0.049047925, 0.009059192, 0.008378991, -0.0038630574, 0.027190117, 0.0037178118, 0.0021492287, -0.024106259, -0.03211211, -0.012519998, -0.001945191, -0.002100963, -0.0029922568, 0.04815966, 0.006014526, 0.0055164136, 0.036519866, 0.0423037, -0.03166417, -0.045294166, 0.039670695, 0.03557023, 0.017874703, 0.011066871, 0.044306006, -0.035101008, 0.04897088, 0.04448384, -0.027912201, -0.0015901963, -0.04301952, -0.032440905, 0.024521276, 0.045727775, 0.058802776, 0.005636462, 0.086890124, 0.03745741, -0.009508926, -0.0120339785, -0.02907506, -0.07332642, -0.009112497, -0.025030866, -0.027179815, -0.009671978, -0.00020023037, -0.012938039, 0.0023837269, -0.031001214, -0.009327509, 0.025930503, -0.06973213, 0.030024253, 0.026664235, -0.029265884, 0.0024708516, -0.030356625, 0.0057251547, 0.026620224, -0.049943812, -0.020741535, -0.016805016, -0.016680656, -0.011418701, 0.01835221, -0.043086704, 0.01391265, -0.045433927, 0.023138925, -0.032111216, 0.01134594, 0.016670857, 0.04519215, -0.05623472, -0.03846394, -0.035237856, -0.019343955, -0.0007740449, 0.042732835, 0.014020156, -0.0048301653, 0.042486466, 0.01875267, 0.018428361, 0.013719587, 0.005879695, 0.026888654, 0.02183026, -0.0022208996, -0.035088465, -0.035477057, 0.005122, 0.027759004, 0.014260926, 0.0077891625, 0.05393229, -0.062016316, 0.014973266, 0.016464245, 0.019872136, -0.03867313, 0.02244152, 0.04871466, 0.044118766, -0.03428374, -0.0015713827, 0.024222052, -0.08723772, 0.046617392, 0.03505263, 0.013632687, 0.01218404, 0.007191719, -0.053323988, -0.0057659172, -0.031085426, -0.0067746844, 0.019265117, 0.033532985, -0.033235103, -0.01888571, -0.04161387, -0.032045815, 0.0068264217, 0.007242337, 0.029078644, 0.01689371, -0.0245598, 0.014621799, -0.037086513, 0.01066529, 0.011437767, -0.019377103, -0.03977462, -0.026175978, 0.03416727, -0.002452374, -0.0056664743, 0.03513483, 0.010192486, -0.005733477, 0.0030906922, -0.019408459, 0.047863122, 0.005786971, 0.0052371216, -0.04393421, -0.027535032, -0.03268033, 0.036810134, -0.006728994, 0.026329173, -0.016002303, -0.017076945, -0.06223894, -0.0846101, 0.05977016, -0.014709541, -0.03171434, 0.032941703, 0.03011608, 0.017419593, -0.045541767, -0.0019673642, 0.033167467, 0.013209072, 0.025190502, 0.02995482, 0.028654106, -0.08677186, -0.032660395, 0.029192198, -0.008333189, -0.057380106, -0.050501946, -0.04240438, 0.022064926, -0.017493056, 0.003640878, -0.00023684966, -0.01732239, -0.01402598, -0.015044602, -0.026032636, -0.014176937, -0.020770652, -0.0040792455, 0.026685959, -0.006238273, -0.0050989315, 0.037095472, 0.006609338, 0.07129096, -0.019769948, 0.046111215, 0.0003225187, 0.00588843, -0.004147501, -0.03386088, 0.017627537, 0.0044111153, -0.024576599, -0.027593266, -0.049602482, 0.019671848, -0.029428711, 0.010545017, -0.01541729, -0.016487872, 0.058909833, -0.027496064, 0.036405195, -0.016051352, 0.0090975575, -0.011122192, -0.003504367, 0.018151084, 0.020587442, -0.012081909, -0.01684533, -0.012730082, 0.013264477, 0.030406347, -0.0035954115, 0.027945798, 0.06921968, -0.04117668, 0.027847698, -0.012459973, 0.056083314, 0.04005884, 0.00079756184, 0.05656709, -0.0117045175, 0.020811612, -0.010352402, -0.0669961, 0.05768157, -0.023531321, -0.0320391, -0.027604466, 0.0116702495, 0.010769885, 0.019375758, -0.010260799, -0.028913802, 0.037752606, -0.019386956, 0.018770365, 0.012615856, -0.01583119, 0.009997183, 0.07062084, -0.019394124, -0.012415514, -0.053373262, 0.010593844, 0.013342419, 0.007916043, -0.004380879, 0.015132397, -0.026712961, 0.038003452, -0.05857656, 0.041123036, 0.018679209, 0.04889742, -0.04454252, 0.022993343, -0.0077183875, -0.02951046, -0.016328406, 0.013921161, 0.007845716, 0.01564742, -0.00824528, -0.006147229, 0.01655932, -0.004704294, -0.02783202, 0.030879151, 0.038691495, -0.046684586, -0.013410059, 0.03271773, 0.02313355, 0.030304214, 0.0014955965, 0.012953234, 0.022953477, -0.05397261, -0.039603394, -0.035899915, 0.00011912474, 0.013735713, -0.0040098005, -0.013318483, 0.00031355984, 0.05871722, 0.07325072, 0.0457009, 0.012646317, 0.072333775, 0.02798376, 0.020118896, 0.022357713, 0.03248659, -0.045479618, 0.006748032, 0.016826518, -0.043851793, -0.034168616, -0.016066134, -0.00045421382, -0.01386472, 0.067592755, 0.0675605, 0.015166442, 0.014609202, -0.01255852, 0.0042129005, 0.021784347, -0.010603698, 0.0049697557, -0.037851155, -0.06415614, 0.016478913, -0.024849392, -0.016342066, -0.061848335, -0.022537787, -0.020306135, -0.022317147, -0.029815063, -0.016312279, 0.022249311, 0.01802622, 0.004826134, -0.042700354, -0.06500633, -0.004085965, 0.016102362, 0.005892685, -0.03908389, 0.004976531, 0.006067383, 0.0109515255, -0.05666833, -0.0083389, -0.013530555, 0.03001238, -0.02458578, -0.010829461, 0.017856786, 0.01127382, 0.015680231, -0.012501183, 0.005389646, 0.013662698, -0.032110095, 0.021563062, 0.0455813, 0.023284059, -0.033561654, -0.042567987, -0.035288922, -0.012520445, 0.039231263, -0.01166689, 0.024815576, 0.009417546, 0.004570359, 0.02245178, 0.027210724, -0.03334261, -0.01769239, 0.026203636, -0.003078542, -0.083492026, -0.013414482, -0.016127726, -0.026397709, -0.027863825, 0.024819605, -0.0028686246, -0.048950836, -0.015889421, 0.05933, -0.00039060597, -0.022450887, -0.0081404615, -0.06275139, 0.0021904395, -0.030671556, -0.05418404, 0.02577686, -0.02250419, 0.031628333, -0.009732118, 0.054378446, -0.053831954, -0.010661036, -0.007427785, -0.0116073135, 0.045070417, 0.014004926, -0.0020008478, -0.013025948, -0.0018773276, 0.0012175081, -0.05023408, -0.0465502, -0.030549688, 0.018843602, 0.0025736545, 0.015335988, 0.0295454, 0.0037551313, -0.03498253, -0.028912457, 0.04417252, 0.0014047482, -0.0010065271, 0.025456134, 0.019553592, 0.019897163, 0.0018302656, -0.012161194, -0.0064432067, -0.017767085, -0.022403851, 0.011031035, 0.022812374, 0.007894541, 0.011462628, 0.031218018, 0.026101168, 0.01119543, 0.011370577, -0.027820794, -0.01370167, -0.055249248, 0.0059478944, 0.049775388, -0.032500926, 0.018109424, 0.040619105, 0.0057354574, 0.033214945, -0.04045639, -0.017609969, -0.052862607, -0.07355577, -0.002326614, 0.00016394701, -0.0041383184, -0.021025978, -0.012105202, -0.023058295, 0.007373808, 0.018502383, 0.048190564, 0.024013309, -0.0011857041, 0.04317809, -0.028832275, -0.05806053, 0.030119214, -0.004769693, 0.019165225, 0.02398464, -0.0056116013, 0.03800569, 0.019632429, -0.04640327, 0.06592641, -0.008004511, -0.055632688, 0.00047638698, 0.006863937, 0.03691764, -0.025995905, -0.017430345, 0.016616879, 0.04255455, -0.019448325, -0.040848784, -0.028698342, -0.0119968, -0.021219939, 0.030266589, 0.017012862, 0.00074974395, -0.018673832, -0.010381631, 0.04850323, -0.017455652, -0.025554681, 0.041585874, 0.027688904, 0.053396557, 0.030887436, -0.0727638, 0.062036023, -0.01620298, -0.014671017, -0.025402827, -0.022198245, 0.01505804, -0.027540859, -0.001491649, -0.011669018, 0.04268356, 0.054241374, 0.052353743, -0.0014802264, -0.08410123, -0.018685928, -0.02662571, -0.026128046, -0.0273586, -0.03479536, -0.0033094, 0.032543927, 0.057023995, 0.012212372, -0.015705764, 0.039309204, 0.016413067, 0.010760031, -0.041809175, -0.007936424, -0.047038455, 0.012435784, -0.032610223, 0.03870941, 0.030047992, 0.03238194, -0.05325142, -0.02432866, -0.028558135, 0.011360722, 0.024499774, 0.01952806, -0.017008381, 0.014340661, 0.016136685, -0.016347444, 0.026909482, 0.016263902, -0.050472382, 0.017530683, 0.0019823702, -0.017464386, -0.0037299346, 0.03966801, -0.003985794, 0.046164967, 0.032026105, -0.017566293, 0.0066864397, -0.019156268, 0.09938951, 0.0058078, 0.012187847, 0.029208548, -0.010716132, 0.01945415, 0.01945023, -0.08611966, 0.018162282, -0.0042735967, -0.040595252, 0.0070407623, 0.007012542, -0.030812183, -0.0038469315, 0.02019594, 0.031260125, -0.04319287, -0.04645165, -0.078200035, 0.05961758, -0.01783394, -0.04532821, 0.019775772, -0.0022406091, -0.04060152, -0.0026595474, -0.009707812, -0.014981889, 0.02889454, -0.06950636, 0.038079154, 0.028184775, -0.0023418441, 0.0041681062, 0.038013868, -0.013167721, -0.025535867, -0.019735904, 0.02391868, -0.017300328, 0.03660184, 0.027200254, 0.005997056, 0.04440545, 0.033045635, -0.0012788762, -0.0072154603, -0.008936679, 0.001194439, 0.08283624, -0.013169961, -0.010195174, -0.031974144, 0.028226433, 0.014232929, 0.025702052, -0.03460357, -0.011737217, 0.014234722, 0.027783195, -0.037578803, -0.015513457, -0.012851922], [-0.031069523, -0.09897025, -0.011526084, 0.0029643166, -0.03237656, 0.029080609, 0.014859692, -0.027620114, 0.05008307, 0.029380035, 0.00038880002, 0.025656264, -0.08659216, -0.005735821, -0.012252418, 0.042706303, -0.000979032, -0.03944846, 0.017597625, 0.05484394, -0.051906843, 0.005140599, 0.005220672, 0.001050486, -0.0052957553, 0.033424553, -0.0014032188, -0.005265813, 0.020793203, -0.001845439, 0.00092186895, -0.029517952, -0.0133593865, 0.004654939, 0.015933089, 0.020264784, 0.018984057, -0.013105782, -0.026493523, -0.06103389, -0.09331858, 0.0054962803, -0.030087767, 0.023728257, 0.005687051, 0.020620039, 0.025286973, 0.0148125095, -0.024846908, -0.05631022, 0.03800441, 0.0013084005, -0.04083081, 0.024060234, -0.008943308, 0.047608722, -0.0017911114, 0.03981185, 0.029000763, -0.020384101, -0.009548285, -0.03980391, -0.040765475, 0.0050444193, 0.0026390313, 0.013463505, 0.03178633, -0.001958064, -0.008790419, -0.051631916, -0.017305683, 0.018372957, 0.0011196715, -0.028162597, 0.03674228, -0.004930547, -0.065512575, 0.01278594, -0.027636444, -0.0375589, -0.009892851, 0.023907345, 0.030058734, -0.048911676, -0.0678862, 0.0069911415, -0.018721038, 0.026763234, 0.017103571, -0.005329555, -0.03501877, -0.021489253, 0.030368142, 0.014153887, 0.00081752345, 0.029759591, -0.022651117, 0.03471707, 0.015641375, 0.018976344, 0.014035704, -0.039795972, -0.03336149, 0.012640764, -0.007909608, 0.012303684, 0.02133126, -0.03464993, -0.0037414632, 0.0063895676, 0.014806159, 0.014567865, 0.004285193, -0.06397643, 0.016461167, -0.0067858533, 0.033037566, -0.022094004, -0.035443865, -0.024038458, -0.042470388, 0.014426432, 0.029295199, 0.024823772, 0.00017336081, -0.003280642, 0.017572671, 0.0025049702, -0.046467047, 0.011740218, 0.030707035, 0.006398641, 0.03720594, 0.02006199, -0.023986286, 0.034035653, 0.0014116118, 0.05133068, -0.03550284, 0.028281685, -0.035604462, -0.029506156, 0.030688887, -0.006206283, 0.051363792, -0.023296243, 0.014200048, -0.03621647, -0.0033209056, -0.017073289, -0.015462172, 0.013261846, 0.018348457, -0.0016314175, 0.020349167, -0.063407525, 0.0006800597, 0.013684104, -0.028427316, -0.0062895324, -0.025618268, 0.020146374, 0.024828646, 0.026750531, -0.015543835, -0.05565693, 0.034051985, 0.011414932, -0.0029673507, 0.043618187, 0.04314841, -0.016096411, -0.013996801, 0.029523054, -0.032955, -0.020834485, -0.003978395, -0.023053074, 0.03960724, 0.058008783, 0.009236836, 0.0044859448, -0.011330095, -0.007794601, -0.012209773, 0.020762013, -0.047108773, 0.0039197574, -0.024809139, 0.024995713, 0.059354156, -0.015087437, 0.052290652, -0.008817384, 0.0025478422, 0.032123636, -0.035700645, -0.0074396, 0.03187956, 0.029039098, 0.012841346, 0.021965386, 0.047358748, -0.01987292, -0.027562609, -0.07333837, 0.0018288798, -0.023942277, 0.012024219, -0.042866904, 0.019801581, 0.015663153, 0.056195896, 0.085685715, 0.02111724, 0.019551039, 0.032378603, -0.04718227, 0.026907729, 0.05885988, -0.05308731, -0.025929378, 0.043356873, -0.041318964, -0.029247789, 0.020911725, -0.015827836, 0.021036033, 0.026630761, -0.011622716, 0.05092713, -0.00030124062, -0.04136365, -0.021821218, 0.0007793864, 0.008823991, -0.038025275, 0.048688468, -0.035766654, 0.030442089, -0.04774482, 0.023903886, 0.031678356, -0.0081820395, -0.01767188, -0.008269656, -0.04729841, 0.003545702, -0.03704511, 0.01678237, 0.0380035, -0.008920624, -0.038787905, -0.00390524, -0.0034151566, -0.0010382367, -0.0041783527, -0.0010556465, 0.014051243, 0.0297584, 0.02978562, -0.023867873, -0.0048169014, -0.031698316, 0.02686066, 0.016503813, 0.03013756, -0.023808219, 0.03869309, -0.054867532, -0.006064736, -0.04388495, 0.027529946, 0.030278314, -0.017489253, 0.019772885, 0.009469118, 0.021908903, 0.065242186, -0.009373846, -0.049534634, -0.033241834, -0.0024008516, 0.0009994474, 0.022885215, 0.00954647, -0.009678716, -0.037056226, -0.0008583543, -0.013868864, -0.0040903394, -0.007959739, -0.010534859, 0.061772473, 0.044645764, -0.033689044, 0.026799073, -0.023529435, -0.029569443, -0.021643505, 0.050588463, 0.0026417533, 0.019557843, 0.011664, -0.0004246404, -0.0025887017, -0.07773188, 0.025440654, 0.009170599, 0.0007884599, -0.029022537, 0.0072734696, -0.058986906, -0.017239675, 0.005310727, -0.0126379365, 0.04464168, 0.06508612, -0.019397356, -0.023707727, -0.01802181, -0.03163344, 0.0042836056, -0.029634604, -0.0033617364, 0.081712425, 0.012249242, 0.0053052832, -0.074430026, -0.03149053, 0.048421707, 0.035521895, 0.0009754026, 0.0054345806, 0.012400628, -0.010107213, -0.03115073, 0.015722582, 0.031281844, 0.015537426, 0.049787726, -0.08282302, -0.051327046, -0.020004828, 0.05850329, -0.07248285, -0.038448103, -0.05446285, -0.014846082, 0.0048559173, 0.019050166, -0.03383808, 0.02566806, 0.018993132, 0.0008882969, 0.013783007, -0.0016654432, 0.0022370745, -0.0050707324, -0.013192207, -0.009506319, -0.02535457, -0.03473749, 0.039505165, 0.013523163, -0.024628008, 0.046920948, 0.010864624, 0.02720194, -0.038054314, 0.06840067, 0.0151723875, -0.021928411, 0.000506302, -0.0053506503, 0.021702483, -0.04019294, 0.016471375, 0.009825254, 0.0057154056, -0.004998371, -0.014660528, 0.015761599, 0.008552694, 0.00488155, 0.047658626, 0.031417944, 0.020628631, -0.024737118, 0.039346382, 7.2588105e-06, 0.01865741, 0.026164383, 0.02086908, 0.026042342, -0.0044405772, 0.03477696, 0.061476678, 7.07734e-05, 0.00783702, 0.00061336946, 0.016952043, -0.0021031268, -0.02314653, -0.008436552, -0.04244589, -0.03333427, 0.010588562, 0.010798387, 0.015362819, 0.025070569, -0.018149067, -0.015443118, 0.0170886, 0.042859644, -0.007896565, -0.05413031, -0.009818675, 0.003417085, 0.021348162, 0.01883752, 0.019058786, -0.070744365, 0.046610635, -0.013626374, -0.039673027, -0.0047635944, -0.040581513, -0.03598147, 0.056263037, -0.01894005, 0.040072262, -0.008422035, 0.07548255, 0.07451894, -0.01509651, 0.004737735, 0.025073687, -0.0628867, -0.0115102045, -0.02721963, -0.0507409, -0.00991871, 0.027024552, -0.024804715, 0.017936066, -0.032780785, 0.0225504, 0.0546348, -0.037819423, -0.00097222684, -0.021863535, -0.008422715, -0.023249969, -0.027596183, 0.04582895, 0.06466148, -0.058293235, -0.04707701, -0.030998975, -0.035813157, 0.005737182, 0.017681554, 0.00493894, -0.00065391674, -0.0022531801, 0.062289666, -0.03852795, 0.0011083296, 0.017624391, -0.0020433553, -0.010674761, -0.013883948, -0.050308093, -0.02616302, -0.0032061257, 0.047131453, 0.0060239052, -0.002360928, 0.029075162, 0.037440035, 0.005867841, 0.05349811, 0.0024353308, -0.000421011, 0.0017040058, -0.006851409, -0.015744813, -0.005873398, -0.012082063, 0.006008197, 0.04104449, -0.014789826, 0.06827591, -0.018272864, -0.020855922, 0.030790512, 0.040471498, -0.041362513, -0.005422331, 0.06453264, 0.037762146, -0.07397091, 0.022199256, 0.005798882, -0.091679685, -0.0009232299, 0.048056953, -0.03594291, -0.005332503, -0.04047059, -0.02366463, 0.0004062665, -0.03424843, 0.040892508, 0.02792952, 0.015763188, -0.029536098, 0.000421672, 0.003203404, 0.013501387, -0.027044967, -0.026524147, 0.035973758, -0.00021549594, -0.04289866, 0.019950839, -0.051875994, 0.021664372, -0.032328926, -0.0020129588, -0.044295527, -0.05141778, -0.00038959397, -0.007238848, 0.0026050054, 0.036954604, 0.014569679, -0.0038718947, 0.0030300997, -0.04288868, -0.015212651, -0.0067062904, 0.031543612, -0.009554069, 0.0073078074, -0.0054078135, 0.020208528, 0.016039701, 0.0067416197, -0.01588704, 0.006941237, -0.059348032, -0.0739455, 0.015679881, -0.026565433, -0.01921112, 0.049959667, 0.048051283, 0.009447342, -0.032071237, 0.008253381, 0.013185629, 0.021063251, 0.061772473, 0.019588353, -0.012114501, -0.06498904, -0.053464763, 0.026767315, -0.042795904, -0.046261303, -0.049591284, -0.0243093, -0.0076555493, -0.04131805, 0.008406383, -0.03387732, -0.019677727, -0.027311273, 0.03243781, -0.034317046, -0.0013741836, -0.0119527085, 0.010081353, 0.016546912, 0.003331794, -0.005564445, 0.03914223, 0.009146554, 0.022708282, -0.017108109, 0.05955491, 0.02349314, -0.030236574, 0.0062830104, -0.036079917, -0.022378799, 0.010782055, -0.043617, -0.022800151, -0.05484394, -0.00048398683, -0.013738206, 0.012818151, -0.0023328003, -0.019509867, 0.007805886, 0.016164463, 0.003940343, -0.025091892, 0.034528345, -0.053369492, -0.044425733, 0.0043257973, 0.009721362, -0.035182547, 0.0052028084, -0.017455624, -0.0059059495, 0.025388822, -0.0011160421, -0.04357963, 0.00261544, 0.0066289953, -0.0020803863, 4.1738156e-05, 0.08594069, 0.015652008, -0.016115014, 0.03167926, -0.018836612, 0.05152122, 0.024775226, -0.08150192, 0.09572919, 0.02736027, -0.028291112, -0.038600538, 0.024903161, 0.010799976, 0.004112116, 0.011187243, 0.0076327524, 6.169989e-05, -0.021169527, 0.0043273284, -0.010458748, -0.019682264, 0.0066190143, 0.043370485, -0.018441007, -0.004054046, -0.05125083, 0.016188735, -0.029434474, 0.0021454322, 0.017540915, -0.0017987106, 0.014655991, 0.05423329, -0.05160651, 0.030565944, 0.0531236, 0.0030378122, -0.020056093, 0.024801541, -0.012867148, -0.06307543, -0.018385036, 0.035887558, 0.0038777925, -0.008551332, -0.013434243, -0.0056723063, -0.01012967, -0.032174677, -0.021956086, -0.008226953, 0.023791658, -0.02814876, -0.025921665, 0.009753573, -0.008693786, 0.049744796, 0.026486492, 0.01494952, 0.007727457, -0.044820204, -0.03717191, -0.01773282, -0.0025659895, -0.03661616, -0.032048326, -0.040860694, -0.02726001, 0.019510547, 0.024854166, 0.041674644, 0.04421704, 0.033575628, 0.052807845, 0.020180173, 0.015602812, 0.0030924801, -0.02841053, 0.001562232, 0.016704338, -0.0006555613, -0.079476714, -0.0056346515, 0.014477696, 0.019569753, 0.057451665, 0.038090605, -0.016003862, 0.021923421, -0.02420405, 0.0011704832, 0.035106555, -0.022411577, 0.008686981, -0.0687119, 0.014515352, 0.049907953, -0.02514815, -0.02510278, -0.062200744, -0.024498483, 0.030857204, -0.030438913, -0.030154912, 0.00606519, 0.029874088, 0.03706598, -0.00066236645, -0.04204303, -0.061158992, 0.020955278, 0.015232612, 0.010404598, -0.027541742, 0.032236375, 0.009204589, 0.008975292, -0.017312262, -0.035807088, -0.026175383, 0.032953184, 0.005330462, -0.018401084, 0.06469596, 0.014034909, -0.0029626156, -0.036968213, -0.029417349, 0.028289396, -0.016813956, 0.015207207, -0.0075527923, -0.009898296, -0.07104198, -0.017948315, -0.00079030293, -0.014904379, -0.0053222957, -0.0027103717, 0.023202786, 0.019840144, -0.013724595, 0.009897388, 0.0073332135, -0.0033746664, -0.025369542, -0.0027905589, 0.016695263, -0.07071896, -0.052604597, -0.008158903, -0.039541177, -0.052669473, -0.02119754, 0.01922133, -0.024871407, -0.031489626, 0.065322034, 0.0047799265, 0.014002245, 0.015191783, -0.05507622, 0.02756624, -0.03406106, -0.040680185, 0.03541392, -0.05700344, 0.04295296, -0.009456868, 0.05073001, -0.033700842, -0.041043125, -0.00021731063, -0.021926142, 0.013997254, 0.033019308, 0.021735147, -0.0005589284, -2.495216e-05, 0.009931867, -0.032047648, -0.07615218, 0.0033277108, 0.009859505, -0.027993603, -0.018460969, 0.026118333, -0.0036945075, 0.027732285, 0.00491671, 0.012987826, -0.0063237846, -0.008727812, 0.05132795, 0.0057735895, -0.0119929155, -0.02666524, 0.02905248, 0.009862228, 0.0027595956, -0.009008184, 0.003962176, 0.02985163, 0.0020283838, 0.0058369907, 0.042873256, 0.030402618, -0.037820216, -0.032233994, -0.016364079, 0.058153957, -0.082510896, 0.006284542, 0.059544023, 0.012789116, 0.027628846, -0.0024081103, -0.082782194, 0.020724697, -0.055003636, -0.009662838, -0.048742004, -0.044371292, 0.007618121, -0.003453379, 0.0059422436, 0.011314671, 0.0054268683, -0.0043843216, 0.04142966, 0.02801311, 0.011116869, 0.012064143, -0.0054150727, 0.049180254, -0.018894684, 0.018593328, 0.040028255, -0.033559293, 0.03421531, 0.027466431, -0.028670939, 0.0069974926, 0.032526273, -0.027372973, 0.025988355, 0.047810152, -0.044607207, -0.0016673715, -0.033921555, -0.014357926, 0.029916734, 0.011483551, 0.037872843, -0.0018646069, -0.01766613, -0.025855314, -0.027041988, -0.049850784, 0.008700478, 0.018867463, 0.0019435465, -0.0050058, -0.029661313, 0.041538995, 0.014996702, -0.0056131305, -0.07025439, 0.049039617, 0.020102369, 0.06540914, 0.02844274, -0.025889454, 0.050319884, 0.016557345, -0.022699207, -0.05428615, -0.0059184823, -0.045275014, -0.053132676, 0.03133447, -0.008333, 0.050506804, 0.07131055, 0.0056196805, 0.018971354, -0.07170616, -0.00018646069, -0.039067823, -0.0053436183, -0.03618154, -0.014400912, 0.0011034525, 0.01180413, -0.017286856, -0.0035309575, -0.04311552, 0.063122615, 0.015596914, 0.00084701244, -0.003342682, 0.020493437, 0.016513793, 0.0132520925, -0.05163555, 0.04647544, 0.028714038, 0.040618487, -0.0156754, -0.004768131, -0.04698628, -0.0012770969, -0.027505899, 0.030114988, -0.006633645, 0.019817006, -0.0020497064, -0.007321871, 0.007218433, 0.042779796, -0.019298455, 0.018939598, -0.015402742, -0.031025968, 0.0039923456, 0.030093668, -0.0364111, 0.06675565, -0.00643244, -0.011415387, 0.028152557, -0.04167374, 0.057072394, 0.016895901, 0.0061981166, 0.0063380753, 0.004003461, -0.01880506, 0.02165757, -0.02466589, 0.016351832, 0.007730179, -0.013085821, 0.017597398, -0.005632383, -0.020586895, 0.037112482, 0.034819607, 0.048089616, -0.024021218, -0.044813626, -0.04981387, 0.07461875, -0.03047702, -0.056750286, -0.020710519, -0.0040003983, -0.030695241, -0.01780314, 0.0044067786, -0.001839201, -0.009890582, -0.08950839, -0.016585475, -0.001208592, 0.046668254, -0.0065209637, 0.03018976, 0.015875017, -0.029419959, -0.02675949, -0.0073059923, 0.027095778, 0.057175834, 0.0038419522, 0.034769844, 0.02131731, 0.0030570508, -0.009690626, -0.006892808, -0.051769152, 0.015686288, 0.06015648, -0.008047752, 0.02406341, 0.01893472, 0.026128996, 0.02360497, -0.0002871767, -0.0013115762, -0.010246547, 0.03351302, 0.009569763, -0.060943156, -0.007318695, -0.0047853705], [-0.015094252, -0.09131266, -0.025539173, -0.031860787, 0.020618957, 0.041094616, -0.00872935, -0.012390482, 0.029613925, 0.04496912, 0.008573658, 0.028150652, -0.06678134, -0.017750708, -0.02242857, 0.015915748, -0.0049358467, -0.02755706, 0.052302197, 0.07082799, -0.014733749, -0.0010028738, -0.038310632, 0.017491596, -0.018548546, 0.039178092, 0.00711272, 0.012573888, -0.006865029, -0.004197154, 0.007840373, -0.02254945, 0.0035669499, -0.0015547248, 0.022559363, 0.020811826, 0.04187105, 0.00046730175, -0.05452425, -0.051079415, -0.056569196, -0.004326428, -0.0130493, 0.03024641, 0.0009066645, 0.03818626, 0.024050044, 0.031434268, -0.017765578, -0.03934302, 0.048298366, -0.011927911, -0.040812977, 0.035310797, -0.002102182, 0.011902901, 0.026710553, 0.034511834, 0.024850812, -0.011195415, 0.00654966, 0.005191522, -0.054937925, 9.64345e-05, 0.027270235, 0.017489342, 0.0014188603, 0.0025397423, 0.0007020792, -0.06040315, -0.024112456, 0.042220283, -0.0058203177, -0.017836327, 0.035372984, 0.02148484, -0.06440743, 0.00578607, -0.01669759, -0.033717826, 0.0002338762, 0.013455316, -4.3767293e-05, -0.05216476, -0.05795083, 0.026934814, 0.0031814373, -0.010846629, 0.048861198, 0.012079209, -0.044665847, 0.011728959, 0.046101097, -0.011761629, -0.013332295, 0.012287287, -0.008178007, 0.029439364, 0.027612712, 0.011182572, 0.03710092, -0.03899142, -0.019224713, -0.009188766, -0.0104793655, 0.005650149, 0.03901812, -0.010259009, -0.020255301, 0.016767437, 0.013166464, 0.0037586922, -0.010425066, -0.08394037, 0.03289768, -0.0019854691, 0.038405266, -0.010992632, -0.040930588, -0.017609661, -0.01861907, 0.006420611, -0.017080735, 0.011771318, -0.009969705, -0.018966729, -0.017197786, 0.0053962762, -0.07293152, -0.009395605, 0.030217346, 0.002424832, 0.038569745, -0.016391162, -0.019232374, -0.0018309037, -0.026036132, 0.052621465, -0.03015606, 0.027113417, -0.033727065, -0.025242858, 0.0103248, 0.0027695629, 0.024227366, -0.029651187, 0.012060621, -0.054464877, -0.0048101214, -0.045881193, 0.000280474, 0.0062439083, 0.0040461933, 0.020148952, -0.0036248555, -0.054006923, 0.005677074, 0.017832723, -0.039882425, 0.019075105, -0.0066264924, 0.0025613725, 0.05755788, 0.013985143, -0.01875775, -0.06939679, 0.0035423907, -0.0017495229, 0.009370369, 0.01995383, 0.062049743, -0.017798023, 0.0046370234, 0.029090773, -0.07883791, -0.023542412, 0.0064552533, -0.02343133, 0.049825095, 0.035114776, -0.0036843386, 0.012443655, -0.010000123, -0.014842801, -0.029572045, 0.03504335, -0.031012254, -0.019860324, 0.017048178, 0.01793524, 0.02705123, -0.01459028, 0.027201403, 0.005638489, -0.029832734, 0.032919314, -0.04238837, 0.017115716, 0.03185741, 0.048365958, -0.0037339076, 0.008920191, 0.022114145, -0.005175919, -0.04553083, -0.04879045, 0.034733884, -0.0032102775, 0.06429027, -0.039914872, -0.005027831, 0.024533119, 0.04395971, 0.04901306, 0.020637885, 0.04805367, 0.026268039, -0.019762736, 0.06163697, 0.062596135, -0.034327075, -0.003077793, 0.033299644, -0.048334412, -0.03478852, 0.011785368, -0.012596869, 0.0210074, 0.012471144, -0.017441576, 0.0834564, -0.023605723, -0.008641252, -0.0379285, -0.01839826, -0.01852083, -0.048312787, 0.037498686, -0.047202438, 0.042766448, -0.022768682, 0.033103622, 0.027338732, -0.0010972804, 0.0030946913, 0.005562108, -0.060344566, 0.014819143, -0.031724248, 0.0035457704, 0.03573056, -0.005178172, -0.038498994, 0.014341703, 0.0043697446, -0.02048557, -0.0065751206, 0.0057202782, 0.008595288, 0.031538587, 0.032197855, -0.044030685, 0.012581711, -0.0136058265, 0.033223037, 0.021035338, 0.028302174, 0.0024216212, -0.00918978, -0.04964687, -0.042377103, -0.063133955, 0.026842138, 0.010969312, -0.014459767, 0.04592265, 0.03691549, 0.014715725, 0.05023607, 0.03846565, -0.055328168, -0.0047532297, 0.030053318, -0.0049519846, 0.015114079, 0.008072559, -0.008665586, -0.041699357, -0.0073028854, -0.054473773, -0.012112895, -0.008262836, 0.020887533, 0.029300654, 0.06911019, -0.004609479, 0.059971448, 0.005593877, -0.06274912, -0.010742082, 0.017687395, -0.008370875, -0.010879975, 0.0076570795, -0.0006447367, -0.038031243, -0.049167853, 0.028874401, 0.039217297, -0.0011463988, -0.034839217, -0.0062538222, -0.06702333, 0.03959132, 0.029756352, -0.005918555, 0.057365462, 0.069455825, -0.018600818, -0.03296798, -0.04800816, -0.0023432681, 0.01186505, -0.050715532, 0.03614041, 0.057471357, 0.016159538, 0.004138572, -0.050472196, -0.025245111, 0.022321096, 0.028052527, -0.008119425, -0.018940479, 0.035629846, 0.015914395, -0.040107742, 0.020036746, 0.005433678, 0.0030169578, 0.007861214, -0.07272784, -0.0076210294, -0.01111723, 0.037171446, -0.06236338, 0.010028005, -0.057513718, 0.02033281, -0.012012403, 0.017368123, -0.024016697, 0.017542066, 0.023192948, -0.01837663, 0.006822924, 0.006853158, -0.019647403, -0.020457633, 0.017023169, -0.00033031066, -0.044276953, -0.070983, 0.043854494, 0.0053485096, -0.010551917, 0.07591468, -0.012842012, 0.034659415, -0.008803775, 0.058210615, 0.02590573, -0.027372751, -0.002743877, 0.0118028615, 0.07008896, -0.036018737, -0.010422361, 0.022822531, 0.0009970156, 0.004501328, -0.026295977, 0.05495685, 0.007909431, 0.04500517, 0.046987936, 0.038483676, 0.014681026, -0.02299191, 0.013145735, -0.0055866665, 0.016882347, 0.023001881, 0.05082008, 0.033724416, -0.011268416, 0.042342857, 0.045490045, 0.029672986, 0.0062249824, 0.0025193514, 0.019521212, -0.003465333, -0.0038060083, -0.028604995, -0.04073772, -0.034591146, 0.0012397916, -0.0093635535, 0.027292317, 0.045297176, -0.009827757, 0.0019575302, 0.010236477, 0.03221363, -0.019999795, -0.022250231, 0.0048055025, 0.016363222, -0.0067119994, 0.029256605, 0.03780007, -0.061146684, 0.020428794, 0.012359614, -0.028346336, -0.007937822, -0.04329999, -0.05810618, 0.028783672, 0.023450257, 0.030367855, 0.0076084114, 0.089465976, 0.043756027, -0.026754942, 0.0014200431, -0.02304627, -0.071047895, -0.0134746935, -0.027282402, -0.060841158, 0.011847925, 0.022051955, -0.02006153, 0.008394758, -0.01934841, 0.015919354, 0.02515769, -0.030421931, 0.004651613, -0.042856574, -0.007073065, -0.029469302, -0.050365847, 0.02923137, 0.07018989, -0.055947334, -0.016202798, -0.034368534, -0.051162556, -0.019178748, 0.021278905, -0.017375559, 0.012121006, -0.011219749, 0.022058604, -0.04293003, 0.0006723378, 0.04082424, 0.017219417, -0.03277207, -0.037703186, -0.06437933, -0.020832444, 0.0017412286, 0.05216476, 0.015531587, -0.00841477, -0.0049276226, 0.021513006, 0.013843308, 0.036729828, 0.01953159, 0.015420508, 0.016307795, -0.03637023, 0.011766811, -0.034561403, -0.02084178, 0.0041982806, 0.05919715, 0.0119867185, 0.051371653, -0.01710045, -0.0370331, 0.017113067, 0.04243073, -0.033255484, -0.0082708355, 0.04228878, 0.03907129, -0.065517776, 0.020507652, 0.018794475, -0.08096893, 0.034387913, 0.042056706, -0.009085571, 0.0063237827, -0.027457245, -0.042121146, 0.015476386, -0.021879816, 0.0524099, 0.049230713, 0.013137286, -0.015853336, -0.023276765, -0.024465522, 0.0055913986, 0.0049048658, -0.010749067, 0.029912045, -0.021878464, -0.024963975, 0.042743918, -0.032324485, 0.011604585, -0.015685026, -0.024027513, -0.02304469, -0.03371512, 0.0055553485, -0.0018339453, -0.0050452366, 0.01925806, 0.007515153, -0.010865554, 0.014362094, 0.009105175, 0.024061197, 0.011955625, 0.011509052, -0.027154872, -0.012567128, -0.0031530475, 0.018526465, 0.011322717, -0.006635054, 0.0031845917, 0.0010391494, -0.086030394, -0.06980776, 0.0732616, -0.004864535, -0.012838631, 0.024368187, 0.03567851, 0.0071933824, -0.024068069, 0.016580256, 0.0061166063, 0.023074882, 0.0031707913, 0.033874646, -0.004966377, -0.060314372, -0.075568594, 0.03607146, -0.042557355, -0.03970037, -0.059601758, -0.016354773, 0.0056423196, -0.029858645, 0.020572769, -0.053311154, -0.012240197, -0.017730426, -0.0029795556, 0.01574727, -0.011740675, -0.024136113, 0.022682836, 0.03295041, -0.005732896, 0.020761358, 0.047344834, -0.00825236, 0.029363403, -0.01494025, 0.027547821, 0.025402829, -0.04166573, -0.034137364, -0.03573574, 0.042268954, -0.02442577, -0.03134617, -0.01844873, -0.06397663, -0.02094341, -0.025274852, 0.012767432, -0.01683458, -0.015130022, 0.04610831, -0.017311795, 0.028677998, 0.0021368803, 0.023754654, -0.023878578, -0.027866868, -0.0077589215, 0.0042190095, -0.033968374, 0.011587018, -0.0422293, -0.0017096845, 0.007587232, 0.013986946, 0.02031253, 0.013413408, -0.00039204682, 0.008096893, -0.00084245, 0.055968963, 0.017361702, -0.011453906, 0.049230266, 0.004202336, 0.07318928, -0.0212228, -0.0638126, 0.08918839, -0.00014915803, -0.034714166, 0.0009973536, 0.0021125465, 0.008498853, 0.0354194, 0.003965531, -0.008303506, 0.024721818, 0.004466123, 0.0049267216, -0.0028057257, -0.0093397265, 0.025977831, 0.044284165, -0.0132816, -0.023723563, -0.0634557, 0.028458541, -0.0019747666, -0.015730089, 0.010171137, -0.002515859, -0.055068605, 0.047694974, -0.06285006, 0.03123937, 0.019621717, 0.017880714, -0.0011554115, 0.050667543, -0.009089346, -0.011655506, -0.034541577, 0.04381191, -0.011725692, 0.04607226, -0.023404744, -0.017054487, -0.002177437, -0.038153365, -0.0043872064, 0.007789677, 0.038005617, -0.009903913, -0.01300176, 0.005028113, -0.007779651, 0.035163444, 0.006272749, 0.008655672, 0.018044516, -0.05817434, -0.04880667, -0.021822136, 0.030325497, 0.028342279, -0.013224144, -0.010001249, -0.004793448, 0.033465926, 0.03687289, 0.019154416, 0.03293193, 0.046970244, 0.04678155, 0.0001429619, 0.03347787, 0.023217732, -0.036510654, 0.041958924, 0.015793629, -0.044507228, -0.06107278, -0.013647679, 0.02688506, -0.0041890424, 0.059922777, 0.033767734, 0.01262678, 0.02323894, -0.05844201, 0.0037059688, -0.011732564, 0.0060943, 0.024488956, -0.06693095, -0.047387194, 0.058408663, -0.038840573, -0.032218136, -0.030267984, 0.0014351392, -0.0021170527, -0.01904266, -0.025913844, 0.008169444, 0.046712153, 0.01070851, -0.020308025, -0.03489667, -0.04663284, 0.02587872, -0.0025582178, 0.00819851, -0.040084306, 0.018529845, -0.0034829078, 0.020378772, -0.06792684, -0.001585987, -0.010049917, -0.020807054, -0.004261143, -0.01754004, 0.03749353, 0.033834767, 0.010990182, -0.017392458, -0.043588392, 0.031934015, -0.059725173, 0.030790543, 0.01925851, 0.0046186885, -0.06579717, 0.013507139, 0.00600823, -0.0029628826, 0.02369765, -0.031110039, 0.012338208, 0.017040066, -0.01214579, -0.0039330856, 0.0129314605, -0.020792449, -0.011382876, 0.0036030847, -0.0048149657, -0.08634042, -0.04533683, 0.027363965, -0.038644098, -0.060302656, -0.00041007195, 0.021550773, -0.046436366, -0.037288606, 0.056710698, -0.01861569, -0.023783721, 0.008698031, -0.04217516, 0.027210303, -0.00075435214, -0.037445426, 0.017769633, -0.038404252, 0.0635296, -0.01264013, 0.049910937, -0.02822782, -0.015373311, 0.0038929798, -0.009294213, 0.02412665, 0.014851815, 0.007676119, 0.0038519723, 0.004985078, 0.02234019, -0.03856389, -0.07274225, -0.021798255, 0.01534976, -0.0036478378, 0.003010649, 0.045618024, 0.028857348, 0.0038321447, 0.015071608, 0.025260432, 0.0021454422, 0.016264083, 0.010849332, 0.0006664796, 0.034226134, -0.0058104037, -0.004352846, 0.025605612, 0.0038206538, -0.019614058, 0.014200656, 0.041073885, 0.015959008, 0.0047606085, 0.053204805, 0.0110548185, -0.011207132, -0.013853222, 0.0018962447, 0.01682782, -0.05773092, -0.0041036485, 0.06397122, 0.013827648, 0.008875129, 0.013700459, -0.011115202, 0.02924669, -0.053433727, -0.019155316, -0.05729471, -0.016964812, -0.0023917109, 0.0037149813, -0.0049440707, 0.006241205, 0.007504542, -0.02068565, 0.04630433, 0.044828527, 0.008844936, 0.041293796, -0.02458052, 0.05686819, -0.045816302, 0.006402586, 0.031244779, 0.010154013, 0.0041590757, 0.03320231, -0.02274953, -0.0024108626, 0.024364244, -0.038742, 0.007977927, 0.019391334, -0.06723467, 0.010762811, -0.01567188, 0.025696864, 0.021332752, -0.0259553, 0.02241246, 0.026550693, -0.006957704, -0.034199324, -0.0185704, -0.03833857, -0.0077117183, 0.042779516, -0.0024525458, -0.0072510634, -0.03225013, -0.0064444947, 0.026390608, -0.007286212, -0.05383749, 0.06978546, -0.0071631907, 0.05896384, 0.046420146, -0.02160223, 0.082728185, 0.03330032, -0.008875805, -0.036068305, -0.017568653, -0.03123847, -0.048127126, 0.019155316, -0.020510808, 0.050310675, 0.04820103, 0.03252997, 0.022407614, -0.060810514, -0.012644185, -0.03452468, -0.043357674, -0.047963094, -0.023593105, 0.0027966006, 0.009345134, 0.03748576, -0.027755111, -0.015287122, 0.062257934, -0.010062534, -0.020686945, -0.018300924, 0.000618713, -0.022520611, 0.029448124, 0.00812303, 0.041612163, 0.027085928, 0.029422436, -0.011585658, 0.017191477, -0.053934827, 0.02903129, -0.011502236, 0.0057319948, -0.033391573, 0.019461744, -0.01375859, 0.010692513, -0.0008350146, 0.047681, -0.040084306, 0.05140905, 0.0070347614, -0.03446407, -0.016813174, 0.02883459, -0.044972725, 0.049804818, 0.016162694, 0.011344573, 0.036430612, -0.022097245, 0.091834486, 0.021945355, 0.014306103, 0.037896506, -0.0009741461, 0.023550747, 0.026673602, -0.015568314, -0.0052092653, 0.011341418, -0.008128437, -0.0062817615, -0.0034103566, -0.0063277255, 0.0062371492, 0.024710665, 0.046879783, -0.016985089, -0.0763572, -0.061022762, 0.06316009, -0.017974671, -0.016179366, -0.006879295, -0.0022923474, -0.008658988, -0.009809281, 0.02159592, -0.029907312, -0.021024523, -0.0600814, 0.01685621, -0.003380615, 0.047662076, -0.013080393, 0.020807998, 0.010148041, -0.012732959, -0.018013649, 0.0029584887, 0.014259914, 0.036750246, 0.011789794, 0.030776123, 0.012879414, 0.022649942, 0.010742082, -0.0055118627, -0.02509146, 0.033433933, 0.043905634, -0.0039276783, -0.018198181, -0.00597263, 0.028279867, -0.01396678, 0.010185106, -0.001213092, -0.0005817614, 0.061137673, 0.023046944, -0.043415356, 0.0074389754, 0.025306396], [0.016846398, -0.08529866, -0.028279437, -0.030420447, 0.018903207, 0.014463206, 0.005903364, 0.0058875764, -0.009389105, 0.058531053, 0.0057015456, 0.023305811, -0.059738196, -0.035654265, -0.023614036, 0.0052712895, 0.026611833, -0.026059581, 0.035550248, 0.05389169, 0.010130552, 0.05273431, -0.006408995, 0.02128712, -0.052102957, 0.014961675, 0.019325942, 0.023708073, 0.010258745, -1.0416425e-05, 0.038484063, -0.055153236, -0.0018656976, 0.00038725228, 0.020826485, 0.016395742, 0.030644111, -0.016272048, -0.06911096, -0.02673115, -0.022194508, 0.028701592, 0.015254854, 0.034333695, -0.0017195782, 0.010056136, 0.015600189, 0.025631351, -0.015170366, -0.00274603, 0.0461014, -0.012926783, -0.035404887, 0.031833753, 0.029029781, 0.008423126, 0.002582116, 0.037602574, -0.001373232, -0.024379063, -0.008493437, -0.021099193, -0.0702773, 0.0036758406, 0.018917277, 0.01670404, 0.014437743, -0.0071746022, -0.010408323, -0.05180725, 0.001225883, 0.019442078, 0.019428369, -0.013779067, 0.047482695, 0.009715703, -0.07151599, 0.004966899, -0.017870028, -0.021012824, -0.011197657, 0.011954222, 0.028256867, -0.02578528, -0.051993005, 0.0191519, -0.0059200013, 0.00861178, 0.055029973, 0.010008015, -0.022835119, 0.011700955, 0.03133029, -0.0024082195, -0.015592955, 0.0026048296, 0.026065657, 0.012012879, 0.023602208, 0.0356887, 0.014721329, 0.0019559008, -0.00025433436, -0.02843626, 0.023682574, 0.0047756415, -0.00075490144, -0.026319558, 0.0013509524, 0.022407103, 0.0010992222, -0.00012138028, -0.008503419, -0.032800164, 0.0009235897, 0.018152647, 0.018828917, -0.022407033, -0.023362884, -0.006911208, -0.041357078, 0.05913475, 0.0075841467, 0.04384389, -0.000616486, -0.031121964, 0.0045540035, -0.016147194, -0.04119696, 0.011482662, 0.015216697, 0.026735779, 0.03136212, 0.0058835438, -0.0138287805, 0.028486716, -0.0018390777, 0.044363555, 0.006270688, 0.022797793, -0.054232538, -0.03830445, 0.025264353, -0.012214127, 0.016133253, -0.024256382, 0.015157056, -0.051247075, -0.0005069327, -0.026529241, -0.005065023, 0.017633054, -0.012673607, -0.02208978, -0.0016961412, -0.054197818, -0.0057571004, 0.026071733, -0.026772527, 0.005012615, 0.00023769704, -0.0077608153, 0.013766753, 0.024343185, -0.010149938, -0.044736084, -0.020497933, 0.011898017, -0.01122357, 0.00888257, 0.09487743, -0.014654463, -0.0028188005, 0.02918147, -0.06595904, -0.043639034, 0.00010184949, -0.030289698, 0.029442316, 0.03174941, -0.04186405, -0.01890979, -0.015786093, -0.009035851, -0.020878566, 0.029880095, -0.018482499, -0.012206893, 0.047800396, 0.012571178, -0.00091375195, -0.010938982, 0.013878151, -0.0062421877, -0.024172181, 0.051285703, -0.060620558, 0.013382502, 0.038727112, 0.033741985, 0.013130772, -0.03948809, 0.00661443, -0.020952638, -0.054969788, -0.03712718, 0.024651337, 0.008767736, 0.021975763, -0.02580843, -0.018310195, 0.033152297, 0.033576477, 0.03195038, 0.012020554, 0.037595194, 0.049557302, -0.010634592, 0.045922544, 0.04544686, -0.023158498, -0.006640525, 0.053879865, -0.05310319, -0.044072617, 0.03188352, -0.006768651, 0.021408647, 0.0044821007, -0.004168282, 0.0606398, -0.021025844, -0.04539594, -0.032250408, -0.009314454, -0.042950395, -0.044916786, 0.012436633, -0.035176266, 0.016934212, 0.0040274677, 0.023394711, 0.013971524, -0.022125067, 0.006640326, -0.004350015, -0.03585102, 0.009796069, -0.01849089, -0.013735576, 0.05264953, 0.019112984, -0.015914418, -0.025083402, -0.018972578, 0.0048563327, 0.0069983904, 0.0019768784, 0.012589516, -0.0061653666, 0.0019195155, -0.03675772, -0.0008140906, -0.027652353, 0.042029116, 0.0053007486, 0.036598977, -0.029805588, -0.0075982036, -0.021798683, -0.012285595, -0.063760094, 0.029987006, 0.038465977, -0.056838382, 0.03410598, 0.015520473, 0.014879646, 0.03648522, 0.0036735258, -0.035411216, -0.011737576, -0.0062265266, -0.04969445, 0.0048119547, -0.01430421, 0.008244022, -0.038235225, -0.024375591, -0.040518157, 0.021221152, -0.0008703502, -0.0037985954, 0.04698155, 0.057882916, -0.04028321, 0.024443878, 0.021869574, -0.05385581, 0.0025424757, 0.016921483, 0.0060172216, -0.017851872, 0.018451829, -0.0550673, -0.038681686, -0.027510935, 0.054758567, 0.039382767, 0.008471737, -0.028808687, -0.032249253, -0.035800062, 0.014069159, 0.008364678, -0.048708364, 0.032773256, 0.05027155, -0.024367925, -0.020412866, -0.014016747, -0.012386141, 0.042915672, -0.0155259585, 0.04075238, 0.055989876, 0.008163583, 0.028837293, -0.067561515, -0.048067175, 0.04413595, 0.06595333, 0.007170262, 0.0125633655, 0.020897953, 0.023517394, -0.045450628, -0.020395938, 0.021051234, -0.0051732017, 0.01778778, -0.04514247, -0.02064002, -0.023874735, 0.048746556, -0.06898075, 0.040225957, -0.073647596, 0.0346153, 0.015878972, 0.01697805, -0.013368903, 0.014042499, -0.007302782, -0.025659852, -0.0012827393, 0.02524652, 0.0035528692, 0.00547007, -0.019285142, -0.030874863, -0.014757706, -0.04974581, 0.042357814, 0.01529435, -0.0048938394, 0.034959547, -0.021159666, 0.05087382, -0.010223205, 0.069278486, 0.0060393205, -0.008537129, 0.011434197, 0.02193992, 0.06955741, -0.062627025, -0.022311116, 0.027503414, -0.01223825, 0.035689812, -0.022951726, 0.036060218, 0.0076564704, 0.024824655, 0.051340245, 0.06022372, 0.002918335, -0.053615075, 0.027316496, -0.0022602195, -0.0030507105, 0.034894735, 0.034967724, 0.036949374, 0.029158467, 0.06297944, 0.041500196, 0.028145181, 0.02268408, -0.01975956, 0.036135375, 0.0051141754, -0.030092835, 0.003343094, -0.03079956, -0.010043603, -0.009085149, 0.016379828, -0.012971487, 0.02400639, -0.016428981, -0.01543772, 0.0046358877, 0.030258505, -0.014618006, -0.005366774, 0.011118377, 0.010083208, -0.012455874, 0.05804437, 0.0016084696, -0.0535988, -0.0063441815, 0.044699796, -0.0158636, 0.01142132, -0.050821736, -0.031471204, 0.021009207, 0.050825212, 0.048542853, -0.011392096, 0.09637044, 0.04026932, -0.015872896, -0.013997984, -0.008966372, -0.10468623, -0.024440695, -0.03654892, -0.021842232, 0.019188503, 0.02308685, -0.027659224, 0.023438258, -0.038788453, 0.050344896, 0.0013376427, -0.029076293, 0.027639983, -0.032554943, -0.033224635, 0.005959352, -0.05721858, 0.055573363, 0.046789423, -0.039168652, -0.023313116, -0.045376264, -0.059753243, -0.01106369, 0.051675305, -0.02937779, -0.009541373, 0.026330408, 0.02542765, -0.05006944, 0.025409278, 0.028535217, -0.0068453276, -0.020131476, -0.017054338, -0.04634904, -0.0055661686, 0.003472648, 0.023941573, 0.02870304, -0.03713969, 0.031923342, 0.036804777, 0.044920254, 0.06091988, 0.028115813, 0.028955348, 0.057459313, -0.033350497, -0.0032172287, -0.041733697, -0.035966467, 0.005206187, -0.0016090485, -0.010231823, 0.045362953, -0.044342652, -0.041607253, -0.01678758, 0.018604314, -0.046072137, 0.029083239, 0.03725724, 0.04340351, -0.038216706, 0.018089857, 0.01174394, -0.058930635, 0.024351288, 0.04794449, -0.014283523, 0.0038610215, -0.04274843, -0.01866797, 0.015244728, -0.04399927, 0.059868984, -0.0061653666, 0.0019449781, -0.07312938, 0.015109748, -0.0060838433, 0.022641838, 0.0037807643, 0.02046126, 0.016668594, -0.015054844, -0.037107646, 0.035530716, -0.040744282, 0.03869174, 0.018417433, -0.0027914573, -0.059044927, -2.1574297e-05, 0.033688165, 0.017631391, -0.011489317, 0.019382363, 0.017071942, 0.025923587, 0.014281244, -0.024760421, 0.020298863, 0.025035156, -0.008107379, -0.046030182, -0.010521529, -0.022160916, -0.0008066219, -0.0010105378, 0.01609193, -0.018748408, -0.016872076, -0.054980785, -0.05820872, 0.041287236, 0.00024304993, -0.013938912, 0.050344896, -0.009642571, 0.006619204, -0.047713306, 0.025467277, 0.016909113, 0.016999315, 0.022473872, 0.030404894, 0.03293254, -0.061486997, -0.07575013, 0.05157751, -0.010286219, -0.014463351, -0.050802063, -0.022692472, -0.0023243094, -0.035239346, 0.019079419, -0.021791162, -0.0395584, 0.0010419862, -0.028780002, -0.008685562, 0.01240929, -0.020982297, 0.01761092, 0.054465752, -0.03426133, 0.00715565, 0.027623925, -0.049188673, 0.021292042, -0.0042154696, 0.021836298, 0.023184069, -0.045416772, -0.030645702, -0.022058517, -0.009285902, 0.03010072, -0.06273003, -0.035411794, -0.009457354, 0.00038019952, -0.018598817, 0.027989224, -0.013112832, -0.0011736563, 0.053155597, -0.013564644, 0.0068796147, -0.0046583842, 0.0129203815, -0.01937701, -0.0051234346, 0.02055139, -0.011151941, -0.04635743, -0.040374644, -0.03460818, -0.010822145, 0.03264421, -0.016543888, -0.010859702, 0.048026662, -0.046184257, 0.00419536, -0.0037995356, 0.10452536, 0.0057076225, -0.0066971825, 0.017385304, -0.001456039, 0.05999398, -0.018820599, -0.081506215, 0.058826182, -0.022205504, -0.05829205, -0.027993562, -0.023961538, 0.029178144, 0.018788338, 0.00866878, -0.012560979, 0.020394024, 0.031999256, 0.024464712, -0.02408017, -0.022181198, -0.005693155, 0.04991493, -0.014577497, 0.045969635, -0.07424249, 0.017750166, -0.01568598, 0.02274137, -0.020182403, -0.009533778, -0.020795815, 0.015280172, -0.035905417, 0.013550119, -0.0055412487, -0.011517962, -0.014115631, 0.013619476, -0.023993945, 0.012468231, -0.04303537, 0.019289194, -0.003795051, 0.03197452, -0.003967356, -0.0101126125, -0.031084927, -0.019413901, -0.0065235756, 0.021346726, 0.007285711, -0.007746059, -0.021969218, 0.0014357305, -0.0038151059, 0.013761978, 0.01373695, -0.0025219324, 0.021625655, -0.025386851, -0.04832469, -0.0038196454, 0.040339053, 0.0055149184, -0.010847332, -0.024767945, -0.024754055, 0.05056827, 0.034611758, 0.04102451, -0.0066311397, 0.09308233, 0.04049559, -0.01372203, -0.0059472, -0.0014096894, -0.015140997, 0.05088134, -0.026605142, -0.067578584, -0.0747733, 0.0024413497, 0.008165753, -0.039613213, 0.040728077, 0.054586984, 0.01555411, 0.02076167, -0.018773798, -0.004663249, -0.0016920904, 0.015155609, 0.042296726, -0.051225666, -0.06217448, 0.056521837, -0.034082253, -0.045629404, -0.018444378, -0.007844436, -0.014097184, -0.015493075, -0.029344516, 0.011134841, -0.0020709878, 0.005473253, -0.0060303505, -0.030308902, -0.06454827, 0.016818186, -0.00033766578, 0.0123682385, -0.008123364, 0.013679081, -0.033953495, 0.029159624, -0.057572376, -0.03865622, -0.01783321, 0.015060776, -0.003420349, 0.0013775722, 0.02823372, 0.038269944, 8.383775e-05, 0.008715075, -0.0070251552, 0.02409898, -0.037087537, -0.0054778825, -0.017296474, -0.012907107, -0.030925605, 0.017478617, -0.0009771186, -0.036037646, 0.0122824125, -0.027923541, 0.017087137, 0.0064153606, -0.022968072, -0.028016493, 0.0015972214, -0.013117607, -0.0031628318, 0.0079088155, -0.001669449, -0.072338596, -0.02160974, 0.038247954, -0.018877456, -0.008042059, 0.016867375, 0.035323836, -0.04803303, -0.02018573, 0.057957713, -0.029136477, -0.028677285, -0.008167055, -0.06328557, 0.011179718, 0.008488663, -0.05848707, 0.0158166, -0.0436697, 0.030599985, 0.005848027, 0.010336276, -0.020783082, 0.0076606297, 0.0039322004, 0.0037681418, 0.028720688, 0.0036877762, 0.0024391797, -0.017145472, 0.011509426, 0.0025370505, -0.04470375, -0.074711226, -0.029282596, -0.018267805, -0.003081526, -0.0047080433, 0.00887125, 0.028279653, -0.028016713, -0.0026556097, 0.0138862515, 0.0037134555, -0.009686118, 0.033374228, 0.015190113, 0.002342249, -0.032024648, -0.009536816, -0.013332115, -0.009322013, -0.040178467, -0.011371554, 0.060587715, 0.019486237, 0.015850326, 0.030980837, 0.019085204, -0.017974952, -0.028566685, 0.012693282, -0.0060169324, -0.05152702, -0.017218532, 0.06257494, 0.037463974, -0.009083123, 0.035720814, 0.025846045, 0.0070527876, -0.060287375, 0.008998272, -0.060563408, -0.051893037, 0.0012994354, 0.015117994, -0.00078217225, -0.0064918203, -0.015802296, -0.023788655, 0.07716835, 0.01019768, 0.042922903, 0.047033634, 0.0046983864, 0.07753524, -0.030870885, -0.011416402, 0.041920904, 0.014142322, 0.028988332, 0.019256497, -0.024075434, 0.021352803, 0.0022657171, -0.05919423, 0.01949065, 0.0050079855, -0.06481186, 0.004194257, 0.0036923334, 0.020350294, -0.024950558, -0.0101394495, -0.008556225, 0.00409134, -0.024883393, -0.053026695, -0.035402823, -0.008363666, 0.0049111275, 0.027415995, -0.0014052046, 2.9585539e-05, -0.012881067, -0.04060138, 0.03223247, 0.012130217, -0.062125582, 0.036124162, -0.015585287, 0.051813614, 0.039365984, -0.03820716, 0.05411767, 0.024698574, -0.050460927, -0.0111872405, -0.015009924, -0.038991284, -0.04146692, 0.016304996, -0.0542988, 0.018481052, 0.032101683, 0.05697987, 0.011803256, -0.062105622, -0.016352775, -0.065439746, -0.024849828, -0.031127533, -0.027543053, 0.027214067, 0.034262516, 0.037374206, -0.0150781, -0.0052245427, 0.055843614, -0.0054755677, -0.0022030738, -0.021812536, -0.00060386333, -0.032058284, 0.009149672, -0.03656686, 0.044368472, -0.024810188, 0.04342955, -0.007168526, -0.0024169, -0.049376167, -0.015457975, -0.006061518, 0.005795366, -0.032873876, 0.02317944, -0.02252552, -0.02519878, 0.055113163, 0.033388983, -0.0614326, 0.043814667, 0.0054046777, -0.03420407, -0.016934212, 0.036104485, -0.025617896, 0.022540564, 0.0015804032, -0.022398062, 0.007740561, -0.003884169, 0.078812115, 0.011524183, 0.017211117, 0.029131992, -0.016970526, 0.027611699, -3.5697954e-05, -0.052176744, 0.016164266, 0.035558783, 0.02390772, 4.8826994e-05, 0.015359109, -0.020876251, -0.023429144, 0.026290515, 0.07851207, -0.010129177, -0.014570264, -0.070481, 0.07433161, -0.04348626, -0.05247101, 0.03292632, -0.010537371, -0.029867942, 0.013252587, -0.012303643, -0.032325637, -0.020569718, -0.07676443, 0.0326422, 0.018577766, 0.02955581, -0.00951289, 0.026928483, 0.04002251, -0.01991823, -0.006655517, 0.01442154, -0.011535034, 0.040882155, 0.009834697, 0.0019925754, 0.0121798385, 0.003017612, 0.0070932237, 0.00835202, -0.022910312, 0.040081248, 0.037973076, 0.00067417417, -0.027829794, 0.004703884, 0.014414018, -0.03294513, -0.011494597, -0.043091305, -0.010887624, 0.010113192, 0.007157531, -0.040620703, 0.015710862, 0.047262214], [-0.017063864, -0.09589102, -0.043416463, -0.035870675, 0.02472432, 0.036489226, 0.009854869, -0.014042752, 0.03194096, 0.018179798, 0.024997119, -0.0004172812, -0.058823433, -0.010048821, -0.006850357, 0.019326203, 0.04490998, -0.02542827, 0.04231216, 0.056592107, -0.01312825, 0.017876256, -0.031098751, 0.029857282, -0.033085015, 0.036651287, 0.0072819446, 0.018763566, 0.013326897, -0.0036117046, -0.017724786, -0.04328148, -0.00028066282, 0.004808617, 0.0010536322, 0.010784878, 0.028337553, -0.011424001, -0.05281528, -0.041160677, -0.058349907, 0.030205434, -0.024137441, 0.031182187, 0.0031539076, 0.026948873, 0.02637881, 0.03925676, -0.0030890384, -0.05180446, 0.041128352, 0.0044180914, -0.046429716, 0.022662705, -0.007830602, 0.026089959, 0.03589339, 0.020245345, 0.007127307, -0.016804386, -0.022632126, -0.002773936, -0.076290175, -0.011623154, 0.037687887, 0.028625425, -0.009617234, -0.0018084734, -0.010437162, -0.042479027, -0.00081009994, 0.019373488, 0.020057453, -0.005175335, 0.03093232, 0.018789776, -0.07154216, 0.0014415367, -0.0023012168, -0.0059282104, -0.008062722, 0.009093312, 0.0024438961, -0.050483488, -0.066860214, 0.030352646, -0.005414827, -0.022702236, 0.057298023, 0.00068582204, -0.039427336, 0.007179726, 0.0418465, 0.010480845, -0.014116794, 0.007987205, 0.00069106393, 0.039037466, 0.011072859, 0.009209345, 0.034056086, -0.03561469, 0.0033216225, -0.017640697, 0.010998051, 0.0023881458, -0.0016704352, -0.011149631, -0.0033024293, 0.01993951, -0.006889344, 0.003376035, 0.02398455, -0.07179727, 0.01421639, 0.016620481, 0.040274788, 0.00020159672, -0.038791098, -0.009153594, -0.015692655, 0.02853631, -0.0043399534, 0.0106490245, -0.021917036, -0.013060759, 0.0076881954, -0.0042014243, -0.069441885, -0.009712681, 0.022350153, -0.013648294, 0.05114747, -0.0089471005, -0.02569692, 0.029121662, -0.024195103, 0.040527273, -0.029079728, 0.015691128, -0.029719245, -0.014580487, 0.009224087, -0.013378334, 0.034049533, -0.022570096, -0.0059455745, -0.04443253, -0.0072976705, -0.019593896, -0.017862167, -0.00096277177, 0.0072202967, 0.0094119245, 0.010686592, -0.037823956, 0.006406538, 0.009547996, -0.024567278, 0.025512142, -0.019751674, 0.022895096, 0.029649353, 0.0087009845, -0.026937187, -0.07432039, 0.012115816, 0.0010630242, -0.021100603, 0.02471968, 0.059642922, -0.013370471, 0.014416677, 0.036219265, -0.063081644, -0.019677412, 0.01095961, -0.012858828, 0.041754767, 0.024955185, 0.005740483, 0.021789264, -0.03741705, -0.0029577713, -0.04190625, 0.026418563, -0.023032263, -0.0027729922, 0.013107499, 0.028619308, 0.021556433, -0.029482046, 0.030779865, -0.0027707263, -0.02092762, 0.024285961, -0.03385864, -0.0043241736, 0.0016555829, 0.049261242, -0.014401387, 0.013614987, 0.04158615, 0.003365333, -0.059772223, -0.04635414, 0.043309875, -0.020681247, 0.042044383, -0.034348764, -0.012061402, 0.028338863, 0.04492178, 0.0527479, 0.024952782, 0.03189553, 0.030428983, -0.02785573, 0.03652592, 0.048711706, -0.0108525865, 0.01863339, 0.048806064, -0.039467327, -0.031945765, 0.018329138, -0.0044049867, 0.019804094, 0.010571433, 0.0020513504, 0.07857336, -0.010316161, -0.02441177, -0.034487676, -0.005442019, -0.008401101, -0.037120882, 0.04183951, -0.0687246, 0.04743098, -0.036842182, 0.035355218, 0.043956384, 0.0049300552, -0.013274369, 0.013709888, -0.04273938, 0.022491891, -0.015368528, 0.014983463, 0.04667259, -0.009276943, -0.029135859, 0.0031163404, 0.00964044, 0.005169001, 0.001852047, -0.007562484, -0.013138515, 0.040025797, 0.037953477, -0.03912942, -0.0066079167, -0.036162477, 0.036435056, 0.013455871, 0.024084145, -0.019160315, -0.019375017, -0.07241931, -0.037147526, -0.07605024, 0.04731036, -0.003902633, -0.017880296, 0.015404786, 0.03425004, 0.007564136, 0.05802491, 0.014086325, -0.07095855, -0.029180195, 0.008302378, -0.024453703, 0.0094840005, 0.0020504766, 0.017149044, -0.042019486, -0.0013222824, -0.025604311, -0.025549272, -0.0056071407, 0.023482196, 0.03769531, 0.05781523, -0.013213649, 0.049327638, 0.008325966, -0.0799153, -0.020125926, 0.0024016874, -0.0072308355, -0.008499388, 0.012059983, -0.0012147131, -0.036188688, -0.040253818, 0.028196458, 0.028180076, -0.016637463, -0.050217025, -0.033422682, -0.051707484, 0.011570734, 0.016222749, -0.02076053, 0.0453953, 0.07962, -0.032023083, -0.023493115, -0.040244207, -0.0291138, 0.013190934, -0.05984212, 0.0318632, 0.067582734, -0.00064890995, -0.005982377, -0.07854016, -0.02295265, 0.046101216, 0.03781806, -0.015746823, -0.006307815, 0.020972392, 0.00875395, -0.02549151, 0.005665676, 0.0064493474, 0.019230919, 0.015529336, -0.081699304, -0.016487248, -0.013430753, 0.054711994, -0.0713482, 0.0087852925, -0.055162802, -0.0008282283, 0.0020710076, 0.032675706, -0.017075557, 0.0036536404, 0.009947477, -0.025829498, -0.0010641161, -0.012409447, 0.012047316, -0.018846564, 0.00676424, -0.009372588, -0.006577721, -0.052018944, 0.051461115, 0.014575246, -0.009753961, 0.072457746, -0.008114104, 0.042553727, -0.01477881, 0.07103543, 0.04728939, -0.0075042904, 0.010680695, 0.018387893, 0.090960965, -0.061334327, -0.019442398, 0.0098837, 0.008571465, 0.0038997934, -0.036291778, 0.06339485, 0.021334743, 0.034771614, 0.05335957, 0.039381035, 0.010310482, -0.046529308, 0.021609072, -0.0009052195, 0.028834227, 0.02936716, 0.067740865, 0.016927136, 0.01137711, 0.030322943, 0.041795827, 0.0052171615, 0.0009549089, -0.017019743, 0.03976457, -0.008849506, -0.01660956, 0.01347531, -0.04540491, -0.012647956, -0.0075160847, 0.01884438, 0.005330082, 0.049253374, 0.00077537197, -0.010757795, 0.026300618, 0.031694587, -0.010178995, -0.022598054, 0.018429829, 0.01805328, 0.036781028, 0.04241612, 0.038911007, -0.058521148, 0.02132131, 0.023407867, -0.026042014, 0.0149982385, -0.02040779, -0.06273917, 0.021839717, 0.025632707, 0.03750671, 0.0069844634, 0.088896506, 0.037545368, -0.034001045, 0.018404493, -0.010401561, -0.063918605, 0.00022431185, -0.026387984, -0.05403884, -0.01744172, 0.011493852, -0.01693456, 0.016062213, -0.034189757, 0.010461078, 0.029402515, -0.055893183, 0.027142717, -0.029324789, 0.004425081, -0.018234594, -0.051258422, 0.041516256, 0.07752497, -0.05139949, -0.024178939, -0.0123687675, -0.043798253, -0.012603836, 0.0072758016, -0.0059408783, -0.011433898, -0.010585248, 0.03464231, -0.047538385, 0.013780654, 0.026159085, 0.018857047, -0.030200604, -0.013321546, -0.042184714, -0.014457957, -0.012715172, 0.027011776, 0.009721199, -0.00789711, 0.025311671, 0.015080111, 0.0261379, 0.04256115, -0.005268161, 0.018576821, 0.022618147, -0.032227084, 0.00319628, -0.04678267, -0.024009885, -0.005640995, 0.029893538, 0.015962644, 0.041939106, -0.021493748, -0.058674037, 0.004505894, 0.04279966, -0.0430919, 0.01877121, 0.043871637, 0.031249022, -0.07023516, 0.018848857, -0.002157063, -0.07590346, 0.055783972, 0.046356324, -0.013959972, 0.021023283, -0.019429075, -0.05098322, -0.015745949, -0.03580253, 0.029005466, 0.050963998, 0.0075786607, -0.027732981, -0.0021402452, -0.024632368, -0.026535409, -0.006307815, 0.0057443054, 0.03072832, 0.0038526158, -0.028666923, 0.03059203, -0.025748465, 0.010429954, 0.008213264, -0.028777005, -0.017393887, -0.04978063, 0.01122564, -0.0047020307, -0.015961306, 0.014815502, 0.0079489825, 0.0014092113, 0.0035732635, -0.03935308, 0.03295309, 0.0123360595, 0.0092765065, -0.0394352, -0.0067342697, -0.007698352, 0.042716663, 0.007862054, -0.0020251407, -0.017960673, -0.017012317, -0.087547585, -0.07361098, 0.047843073, -0.024264555, -0.02603328, 0.022415895, 0.04571921, 0.0014214425, -0.043987397, 0.015388622, 0.004332473, 0.00040799854, 0.017467929, 0.014382168, 0.01174174, -0.10060004, -0.06971097, 0.029206844, -0.035447825, -0.040736955, -0.05414237, -0.03222402, 0.0087339645, -0.04082956, 0.031792, -0.030447438, -0.02537465, -0.008136819, 0.003413384, -0.03620616, -0.013735224, -0.0063568354, 0.003438788, 0.021502485, -0.026541747, -0.015921554, 0.034488764, -0.017086579, 0.04397364, 0.00014328, 0.033143114, 0.02403959, -0.018752208, -0.01330036, -0.030172674, 0.016567625, 0.0063903756, -0.060069215, -0.033580814, -0.050657343, -0.0031503632, -0.02578778, 0.03180423, -0.005780234, -0.0062200124, 0.04725095, -0.0019847886, 0.017876364, -0.009616688, 0.04812723, -0.025672456, -0.022384007, 0.007534527, 0.009166863, -0.03089781, 0.0017551802, -0.02236566, -0.01600406, 0.026793852, 0.005809939, 0.014472592, 0.019350663, -0.005497497, 0.011377656, 0.00010047074, 0.05658381, 0.025155688, -0.013858846, 0.06458783, 0.0029601739, 0.033389483, -0.011642375, -0.07895428, 0.090189524, 0.00082473375, -0.035550915, -0.009319371, 0.012147349, 0.021167874, 0.044583455, -0.00030621732, -0.018362556, 0.025527172, 0.012254154, -0.005204821, -0.005081854, -0.025305085, 0.02111196, 0.043018952, -0.005975825, -0.020957869, -0.058185227, 0.04146908, 0.0062221964, 0.007232146, -0.00027529802, -0.0063676606, -0.04523411, 0.03951689, -0.07250667, 0.022115357, 0.04464745, 0.025645455, -0.015799241, 0.034600373, -0.0016835402, -0.010035934, -0.033423994, 0.03674171, 0.010681787, 0.0066546574, -0.03581061, -0.0039960872, 0.010822882, -0.037323132, -0.008632184, -0.0013469631, 0.029335707, -0.015612498, -0.020371534, 0.0146641405, -0.0014342198, 0.054575704, 0.01775034, -0.008958058, 0.04116958, -0.06013567, -0.047327887, -0.018347703, 0.027011776, 0.011940292, -0.01943366, -0.021980377, 0.0014903523, 0.041915517, 0.036605857, 0.025257034, 0.041628085, 0.03125317, 0.056073155, 0.02878836, 0.011637351, 0.028608114, -0.01113041, 0.020919755, -0.007845618, -0.051856007, -0.060638897, -0.004926561, 0.020020653, 0.0025187577, 0.049183484, 0.062198374, -0.006323268, 0.009694621, -0.044746608, -0.024474671, 0.0044249715, -0.006493085, -0.015161035, -0.07046581, -0.040099617, 0.03238128, -0.045190427, -0.040702008, -0.04577709, -0.000933941, -0.005232341, -0.02144264, -0.034055214, -0.011633201, 0.043386757, 0.02267406, -0.000109862565, -0.020691292, -0.057155184, 0.015275811, 0.0008059501, -0.012414689, -0.018649554, 0.01996834, -0.001082463, 0.00962182, -0.0651994, 0.00046751657, -0.00980092, 0.007372805, -0.0047146985, -0.011582965, 0.06041524, 0.03660455, 0.01408425, -0.007517832, -0.03175749, 0.043022007, -0.03418484, 0.010250636, 0.011044137, 0.017371828, -0.039014537, 0.0069937464, -0.027911644, -0.0043390254, 0.015225466, 0.00021033331, 0.021363573, 0.0031264417, 0.004825653, -0.0060867793, 0.0035780687, -0.016576799, -0.0016468464, 0.0019901942, 0.0062842267, -0.06887575, -0.04389086, 0.024636734, -0.049026225, -0.042292062, 0.01262393, 0.009670746, -0.045944832, -0.042371787, 0.04384019, -0.0029890046, -0.017079972, 0.015703576, -0.043022443, 0.0107888095, 0.007096292, -0.041430637, 0.021566836, -0.03986242, 0.044332057, -0.006171306, 0.037266344, -0.03884798, -0.021924462, 0.0024091818, -0.021909365, 0.03178632, 0.005837841, -0.007985895, -0.0073022568, -0.00071618165, 0.0143210115, -0.030044245, -0.06570262, -0.01707522, 0.01901111, 0.0047221794, 0.015398232, 0.021955915, 0.017107982, -0.0023239318, 0.0019530639, 0.054579202, -0.012477156, -0.014401387, -0.0018000643, 0.0065734074, 0.007865548, -0.003208948, 0.012944563, 0.0066773724, -0.004231565, -0.029382886, 0.0322439, 0.04124193, 0.01157756, -0.0010060179, 0.0391766, 0.033823255, 0.0018886314, -0.01819678, -0.013111868, 0.014785143, -0.074959904, -0.00085919205, 0.063106105, 0.013718188, 0.009936556, 0.01991625, -0.015510934, 0.04143151, -0.04037351, -0.036952265, -0.04398696, -0.046941675, -0.0049658758, -0.0013803806, -0.010811525, 0.020461084, -0.01492295, -0.01688083, 0.050566047, 0.032948725, 0.024439724, 0.020902282, -0.030985177, 0.045007396, -0.04163267, 0.010640288, 0.062176537, 0.005479587, 0.03682336, 0.030836107, -0.022255195, 0.025944166, 0.023807196, -0.026178196, 0.032754336, 0.015669286, -0.053548284, -0.00025269893, -0.013740029, 0.027436811, 0.012358774, -0.017117592, 0.030109769, 0.03468075, -0.012860254, -0.041152813, -0.014030957, -0.033432294, 0.004362177, 0.03211569, 0.015155056, 0.01946686, -0.040404093, 0.0073931175, 0.03757955, -0.038313422, -0.045508876, 0.054007716, -0.002681695, 0.060584728, 0.024881795, -0.019870492, 0.08453171, 0.027827064, -0.011241038, -0.047785632, -0.0046209986, -0.011288106, -0.032511458, 0.016510837, 0.0027793539, 0.041909404, 0.035208005, 0.04627333, 0.010287766, -0.08206843, -0.009360767, -0.029581206, -0.014286939, -0.04006948, -0.04165604, 0.013977023, 0.011208002, 0.0378814, -0.0030347623, 0.001497014, 0.068943895, -0.012450508, -0.00815735, -0.001690857, -0.0050672195, -0.041942604, 0.016870266, -0.03207725, 0.057846684, 0.03332811, 0.033733707, -0.018360808, 0.0069654617, -0.026867623, 0.031042838, 0.013545203, 0.0150976945, -0.025532672, 0.013843121, -0.021047309, 0.00011199211, 0.031805106, 0.04682111, -0.023802284, 0.036893293, -0.013713983, -0.021330373, -0.03648693, 0.045482665, -0.036760278, 0.03535172, 0.01305377, -0.011182394, 0.01947123, -0.042540185, 0.08197975, 0.010111724, 0.006645921, 0.03125426, 0.0036252462, 0.023041872, 0.008445221, -0.020202482, -0.01576779, 0.016721716, -0.020760313, 0.00421786, -0.011916485, -0.025379783, 0.022976346, 0.00439625, 0.046976622, -0.023718083, -0.058058985, -0.05686469, 0.06245261, -0.034354657, -0.03407094, -0.0111566195, 0.01390646, -0.020719906, 0.0049486207, 0.003264862, -0.016932815, -0.01905078, -0.05784319, 0.013581678, 0.0018023577, 0.03137832, -0.015402054, 0.041677885, 0.012943689, -0.029057011, -0.017227674, 0.0013238111, -0.0050423206, 0.05437826, 0.014624281, 0.03832522, 0.03766779, 0.005425966, 0.013948178, 0.009890526, -0.055052724, 0.018941792, 0.054565877, 0.0046618422, -0.014718964, 0.0012816571, 0.029264942, 0.012603836, 0.007244814, 0.0029673814, -0.02599571, 0.04654809, 0.032966197, -0.048015047, 0.0013937448, 0.015575586], [-0.04400251, -0.07553266, -0.04134802, -0.038891904, -0.011280744, 0.03889462, 0.0077498946, -0.034796312, 0.033935092, 0.029837819, 0.010749007, 0.036146563, -0.07820279, -0.004194457, -0.003494907, 0.04694369, -0.031706817, -0.04153929, 0.036921456, 0.043050822, -0.024470873, -0.020497862, -0.037353102, 0.017587356, 0.004089001, 0.05066226, 0.008988565, 0.01870902, 0.013112717, -0.030536722, 0.014236546, -0.034238018, 0.0028754827, 0.008999679, 0.009579299, 0.018725662, 0.019240534, -0.011269824, -0.033208273, -0.056878988, -0.07710274, 0.014099299, -0.020636274, 0.034365185, -0.024422348, 0.04670249, 0.03619283, 0.037134953, -0.0302431, -0.041493796, 0.027477466, -0.011424777, -0.027408198, 0.009848754, -0.030251708, 0.02017516, 0.054885663, 0.032624904, 0.011974932, -0.015145329, 0.008076165, -0.027065983, -0.06443149, -0.013617252, 0.025943704, 0.011862755, 0.0017033196, -0.0017539798, -0.0011470914, -0.03324342, -0.019721935, 0.021991627, -0.0044250125, -0.024034642, 0.060626805, -0.00071027654, -0.07082915, 0.01870537, -0.01573671, -0.02210025, -0.0054177972, 0.014399125, 0.008832449, -0.054020304, -0.049646985, 0.021337245, -0.016008621, 0.008547615, 0.04826572, -0.0007084672, -0.045302615, 0.014369917, 0.027790733, -0.020247793, 0.0031836764, 0.015295759, 0.00085786305, 0.06748351, 0.02529908, 0.007885413, 0.027575169, -0.043507796, -0.04570583, -0.019754373, 0.009386609, 0.008186273, 0.0316895, -0.027974246, -0.0017772422, 0.007665197, -0.020950574, 0.0043777768, -0.013847549, -0.05494356, -0.003950461, -0.0073808795, 0.033259965, -0.025407119, -0.03592273, -0.017112289, -0.0036983876, 0.031145679, -0.0026007285, 0.026689649, -0.020676594, -0.013965671, 0.008548454, 0.0077809915, -0.07034529, 0.011862755, 0.015845267, 0.01961816, 0.039359864, -0.044075917, -0.046295658, 0.0074113784, 0.0037359304, 0.06202875, -0.031312134, 0.040512644, -0.03128215, 0.0032507817, 0.020878203, -0.0015456527, 0.038119726, -0.037100833, 0.018814575, -0.041925956, -0.017132448, -0.011510202, -0.0033694196, 0.012679522, -0.008759043, -0.01145043, 0.01649713, -0.072570205, 0.016163442, 0.030707313, -0.03164504, 0.033368524, -0.01833692, -0.0009615097, 0.020264076, 0.010690333, -0.015142679, -0.04183808, 0.011164627, -0.002916838, -0.00064720976, 0.03664903, 0.05676836, 0.002135999, 0.02080376, 0.040863127, -0.025123319, -0.028075665, 0.030009182, -0.024999253, 0.039225977, 0.033611484, 0.0010951388, 0.0121357, -0.007680705, -0.014864113, -0.010009006, 0.032213677, -0.021410003, -0.04051471, -0.015117413, 0.019525884, 0.058528025, -0.025594769, 0.028550634, -0.02474595, -0.014795877, 0.04153722, -0.014492304, 0.024392104, 0.04476745, 0.045662407, 0.028851235, 0.0002707477, 0.020720016, -0.03713702, -0.025338367, -0.03813213, 0.029888995, -0.00097140425, 0.04931375, -0.05906771, -0.019093463, 0.049099028, 0.016843997, 0.043536745, 0.044142604, 0.025040092, 0.033166915, -0.06424952, 0.025733309, 0.06823204, -0.035047546, 0.0029170965, 0.020796524, -0.030128468, -0.033217575, -0.014538958, -0.0005965496, 0.017845828, -0.006864973, 0.0007397421, 0.052215666, 0.010265667, -0.032633435, -0.056449927, -9.615097e-05, 0.028672634, -0.055672444, 0.033057325, -0.06228515, 0.041930094, -0.003610831, 0.02083426, 0.041384205, -0.032854684, -0.003555518, -0.0017382131, -0.06830234, 0.009294594, -0.021888724, 0.005755876, 0.06315775, -0.021249559, -0.023182206, -0.005552977, -0.015325224, -0.0033952666, 0.0142903095, -0.0074336072, 4.264761e-05, 0.048674297, 0.020867862, -0.049428836, -0.010909516, -0.05535401, 0.049204484, 0.012527864, 0.008890993, -0.028039511, 0.00921912, -0.020658243, -0.027569998, -0.073604085, 0.028803937, 0.023369856, -0.031375974, 0.035724673, 0.0057253772, 0.03575989, 0.053346217, 0.04340234, -0.055980545, -0.015057448, 0.007813042, 0.008118037, 0.013858147, -0.016955655, -0.008293279, -0.054555856, -0.005082949, -0.045326397, 0.0005744322, 0.02191751, 0.026589878, 0.04430802, 0.047318425, -0.03298702, 0.062487796, -0.001551856, -0.023134649, -0.046751082, 0.03823991, 0.0019919826, 0.0005913802, 0.0126257595, -0.024002591, -0.026335932, -0.06463206, 0.04436178, 0.02822548, 0.00542232, -0.013739379, -0.03196968, -0.050136272, 0.02058251, 0.016651306, -0.029001407, 0.034794245, 0.10089855, 0.0037364473, -0.01348233, -0.0356145, -0.037649825, 0.008873029, -0.060159493, 0.013356618, 0.059898954, 0.03122658, 0.0025983378, -0.04767641, -0.012925133, 0.035780568, 0.021449938, -0.0123114595, 0.010416097, 0.024284841, 0.010230774, -0.007336423, -0.011962266, 0.028210811, 0.040039126, 0.01224219, -0.07654858, -0.012252011, -0.031125, 0.027151795, -0.06061621, -0.030991629, -0.06110291, 0.012197991, -0.0065878923, 0.01635833, -0.012948718, 0.013707717, 0.013018117, -0.026206825, 0.003878073, 0.0056692883, -0.0024192827, -0.0011744893, -0.012835896, 0.006266097, -0.020935582, -0.052318536, 0.053923123, 0.0129653895, -0.02159578, 0.058248878, -0.007995005, 0.051867764, -0.04587529, 0.059271384, 0.026076041, -0.011942105, 0.009569607, -0.012280961, 0.038778823, -0.038026158, -0.0043112854, 0.040089786, 0.0015053313, 0.00589726, -0.011960974, 0.056094266, 0.025112849, 0.026772875, 0.03789796, 0.021774575, 0.04447603, -0.01639581, 0.037256952, 0.0022884966, -0.0011899329, 0.01584656, 0.020725187, 0.0016100118, -0.007999658, 0.052399177, 0.028834436, 0.015714675, 0.006445734, 0.01376303, 0.019399233, -0.009357402, -0.018821811, -0.01616577, -0.035520032, -0.021138223, 0.008006378, -0.01616732, 0.011789867, 0.036743112, -0.009532386, -0.010063802, 0.0231729, 0.038194682, -0.03308834, -0.035044443, 0.041855656, 0.014350274, 0.009008209, 0.020982621, 0.042883337, -0.054489687, 0.030016163, 0.027748344, -0.004380814, 0.005807312, -0.040052567, -0.035369083, 0.01787891, -0.018151274, 0.0007795466, 0.01004726, 0.09399636, 0.042773742, -0.02196843, -0.0074770306, -0.009924228, -0.07363924, -0.029417029, -0.030234827, -0.03068767, 0.014567388, 0.021913892, -0.031095533, 0.016242277, -0.044196364, 0.03305629, 0.041618537, -0.002194478, 0.01397575, -0.013996105, -0.016528144, -0.04130563, -0.036094867, 0.02685384, 0.061625537, -0.05129706, -0.032896683, -0.044721574, -0.044932485, -0.03356677, 0.018645018, -0.0202244, 0.010965346, 0.03644393, 0.032200236, -0.05152865, -0.013308122, 0.01981731, -0.0066478574, -0.04413407, 8.723375e-05, -0.037889685, -0.028654542, -0.011118361, 0.05327384, 0.020907344, 0.010945961, 0.015638879, 0.03317622, 0.025825324, 0.040997535, 0.025353355, 0.018934503, 0.021392558, -0.03435381, -0.0037943448, -0.0010519744, 0.0047703288, 0.022692146, 0.006161481, 0.002134739, 0.04713181, -0.050965182, -0.026373282, 0.029231962, 0.074646235, -0.041964214, -0.0061236797, 0.059563976, 0.044944894, -0.05646026, 0.045917578, 0.01035639, -0.08277668, 0.012243741, 0.045536272, -0.02657282, -0.0068484624, -0.023846991, -0.037432194, -0.029474923, -0.027191082, 0.058535263, 0.03402517, -0.010728587, -0.046157636, -0.03172827, -0.012513842, -0.030265328, -0.0021608123, -0.027344096, 0.024322836, 0.021438565, -0.040753536, 0.053464077, -0.040701844, 0.010757729, -0.020126052, -0.0011362357, -0.039809603, -0.04620416, -0.0067098904, 0.014687578, -0.0048657046, 0.03677723, 0.019492283, -0.008201781, -0.025700131, -0.022085775, 0.010677926, 0.017305108, 0.0003895148, -0.01683831, -0.02757982, -0.027905235, -0.011213478, 0.019037893, -0.028109169, -0.009421502, -0.022193816, -0.08379402, -0.0672912, 0.04899952, -0.001732656, -0.0004342302, 0.041541353, 0.05365444, 0.0044728294, -0.000994594, -0.014681375, 0.03607936, 0.017919233, 0.032430794, 0.048383586, -0.003481337, -0.067851566, -0.06693762, 0.03178875, -0.032929122, -0.030678427, -0.02182317, -0.041575473, -0.00012303189, -0.016143154, 0.021421636, -0.018647343, 0.00045904337, -0.011443646, 0.004270447, 0.00392358, 0.033773806, -0.033300288, 0.010196397, 0.036431395, -0.0026363975, -0.009289425, 0.040465083, -0.007822347, 0.018074833, -0.009865297, 0.05639203, 0.02743094, -0.045451496, -0.010190194, -0.037526794, -0.0013242082, 0.0054439027, -0.034386896, -0.026233707, -0.06400553, -0.012106751, -0.0012352299, 0.016535383, -0.029994968, -0.020369532, 0.048410464, -0.014551622, 0.03683306, -0.011139555, 0.0135634905, -0.01674707, -0.019786423, 0.0008240035, 0.0029282107, -0.03509407, 0.011196936, -0.03259001, -0.0014602282, 0.015675323, -0.004735177, -0.00089383894, 0.0244606, -0.023696562, 0.020948505, -0.009400825, 0.05162351, 0.007458162, 0.010587979, 0.016496612, 0.00054459705, 0.06887304, -0.01624331, -0.038819145, 0.08832655, -0.005318286, -0.03636187, -0.020517375, -0.0012106751, 0.0026042825, 0.034241118, 0.0038798985, 0.023393635, 0.014777267, -0.009342153, 0.015360377, 0.007291449, -0.035598606, 0.0017658694, 0.05478072, -0.019318074, 0.023234416, -0.052455004, 0.044836335, -0.0019995268, -0.00094936165, -0.01970061, -0.014408462, -0.03256106, 0.02302609, -0.03941156, 0.025703324, 0.037567113, -0.0032670654, -0.0087445695, 0.024632225, -0.01627717, -0.02035299, -0.0063577243, 0.038874976, 0.024907237, 0.016856402, -0.030108435, -0.0004957461, -0.03340781, -0.040355492, -0.011199004, -0.006666467, 0.03159335, -0.021124782, -0.014066991, -0.006274626, -0.0138643505, 0.0306856, 0.013195041, -0.008067506, 0.030282388, -0.05655745, -0.059100796, -0.027801072, 0.016444918, 0.00877439, -0.0044172583, -0.023624191, -0.0021980319, 0.034120154, 0.01267125, 0.046166427, 0.013324664, 0.033135902, 0.047153264, 0.018613743, 0.016995719, 0.0060670744, -0.01864114, 0.032340843, -0.018632611, -0.014037783, -0.06478508, -0.018101713, 0.018508287, 0.009714349, 0.03549108, 0.036545638, -0.0015526314, 0.038733333, -0.033545315, 0.030685084, 0.0020478605, -0.0039137583, 0.008158359, -0.07135436, -0.021800973, 0.0321899, -0.021869693, -0.031115696, -0.03127336, -0.011786249, 0.0076463283, -0.0028765164, -0.016697701, 0.013124092, 0.019843802, 0.026602026, 0.005884853, -0.029347757, -0.0501815, 0.012597328, 0.007195815, 0.008627741, -0.018984132, 0.033893734, -0.015211497, 0.00763935, -0.054398704, -0.04695657, -0.023783926, 0.042841204, -0.005365845, -0.002375601, 0.06684922, 0.025612345, 0.009319407, -0.008061061, -0.070360795, 0.051292926, -0.042451426, 0.020919558, 0.023967437, 0.010799926, -0.07909709, -0.0021856253, 0.005771772, 0.0070035127, 0.006480369, -0.024810826, 0.023166424, 0.00965852, 0.0022225867, -0.0046134377, 0.011593429, 0.0043523824, -0.023785992, 0.022509148, 0.007471215, -0.0843151, -0.027321868, 0.010766163, -0.049518265, -0.045153476, -0.015589252, 0.023214772, -0.01782825, -0.05367085, 0.052320212, -0.031798057, -0.032687195, 0.030220354, -0.065473646, 0.022162378, -0.021618977, -0.02976131, 0.029601188, -0.044263564, 0.06474579, 0.025073176, 0.03981064, -0.030886173, 0.0035027904, 0.0024213502, -0.0101472875, 0.0124363005, 0.023809254, 0.02567076, -0.008736298, 0.008206434, 0.01347057, -0.04010891, -0.07553951, -0.007989577, -0.0034903835, 0.000871562, -0.0049409196, 0.033084657, 0.008292505, 0.0066463067, 0.011988889, 0.015187718, -0.01680794, 0.022187093, 0.025348704, 0.0062151784, -0.015212272, -0.024591904, 0.014683184, -0.005671098, -0.0063212803, -0.034692924, 0.0008963752, 0.052190334, 0.017331503, 0.0035950642, 0.06083772, 0.001434252, -0.008606546, -0.02713913, -0.008309119, 0.025873914, -0.07484991, -0.012360569, 0.06240508, 0.0013910874, 0.019461783, 0.0142262075, -0.035728876, 0.01971405, -0.03835674, -0.010660998, -0.053184927, -0.04999644, -0.030215183, -0.012160513, 0.019289643, 0.012553387, 0.02344403, -0.0022786746, 0.05496527, 0.039377443, 0.018787693, 0.013483882, -0.030869631, 0.038472798, -0.016144898, -0.00011088378, 0.036016293, -0.0005414954, -0.0007976395, 0.03297255, -0.032903794, 0.017501028, 0.016956689, -0.030433334, 0.023793748, 0.046524666, -0.067280866, -0.006982738, -0.01768506, -0.0040507475, 0.02115218, -0.02959589, 0.019141281, 0.024191014, 0.0073963874, -0.008149829, -0.018736, -0.03152201, 0.005328108, 0.021231012, -0.0043703136, -0.016874366, -0.03556552, 0.007743772, 0.025146063, -0.004384174, -0.0577857, 0.06551913, 0.0108573055, 0.055498756, 0.038543098, -0.036063075, 0.052016642, 0.01977505, -0.033068698, 0.018482698, 0.012831502, -0.045106176, -0.05335655, 0.014186921, -0.013153039, 0.04647297, 0.06297165, 0.04015182, 0.016761027, -0.063798755, -0.03799514, 0.0007755403, -0.03689716, -0.04663839, -0.018456334, 0.019270645, -0.0035965506, 0.012586472, 0.0030737293, -0.037839543, 0.063257, 0.018573422, 0.031553026, 0.017970443, -0.009590284, -0.021113409, 0.01799499, -0.016806776, 0.06989349, 0.028516516, 0.031132238, -0.024753189, -0.00024334983, -0.049733832, 8.529522e-05, -0.01689174, 0.007994488, -0.024238573, 0.033015452, -0.015157736, 0.0045056553, 0.0236176, 0.07346451, -0.031011013, 0.03463089, 0.0021712803, -0.019480394, -0.009082713, 0.04254758, -0.060557537, 0.04336926, 0.007307474, -0.0036583894, 0.037794568, -0.030035289, 0.081182435, 0.03743064, 0.016628172, 0.021686697, -0.016598191, 0.0063759466, 0.02891582, -0.010064836, -0.005964462, 0.004089001, -0.010363369, 0.024274115, -0.019246526, -0.0074129296, 0.024612581, -0.008020852, 0.047187384, -0.029461484, -0.065027006, -0.047062285, 0.06738425, -0.014512594, -0.021580722, -0.0067212633, -0.005808604, -0.03041188, -0.003349776, 0.01976471, -0.016645491, -0.010356132, -0.0626863, -0.01054559, -0.019853625, 0.025479233, -0.00024916543, 0.04109782, -0.0028527372, -0.050266083, -0.02168256, -0.003355979, 0.001787064, 0.059533995, 0.028921798, 0.024276827, 0.035691656, 0.023869738, -0.016887419, 0.0038687843, -0.04179259, 0.009369421, 0.05235162, 0.0072051194, -0.025473028, -0.0069065862, 0.01674888, -0.009244968, 0.012318698, 0.0009464538, -0.0075752493, 0.03339023, 0.028468959, -0.047550276, 0.0033597269, -0.0025836697], [-0.028267918, -0.06789761, -0.02738764, -0.008739937, 0.008273694, 0.026809959, 0.013062955, 0.0017371732, 0.031474512, 0.037459027, 0.010558749, 0.052050546, -0.06879371, -0.033377197, -0.009331861, 0.053319152, 0.0023735405, -0.035205606, 0.039198034, 0.06759433, -0.031242866, 0.03162856, 0.0077262707, 0.022738673, -0.028742902, 0.038282454, -0.0015624929, 0.004628564, -0.0048851976, 0.008523335, 0.012190012, -0.030525234, -0.0176702, 0.007659419, 0.01424216, 0.011813143, 0.01557679, -0.017472137, -0.038308587, -0.055929728, -0.07009292, 0.015804652, -0.043634266, 0.029609425, 0.007311807, 0.041380387, 0.006350378, 0.016852275, -0.016671635, -0.027311534, 0.03494508, 0.008466254, -0.052556247, 0.029370215, -0.009959975, 0.035351403, -0.0021071648, 0.026782794, 0.014825344, -0.022007516, 0.0013749754, 0.011317128, -0.05830556, 0.004030193, 0.011914467, 0.015785396, 0.01629832, 0.014787749, -0.009293578, -0.019374363, -0.0061205663, 0.030419096, 0.028540025, -0.026922286, 0.03688868, -0.00079821015, -0.06481411, 0.012645281, 0.007833554, -0.015518447, -0.00072301977, 0.012103818, 0.013784828, -0.053386096, -0.08011261, 0.008343841, -0.018741664, -0.015871491, 0.017006323, 0.0014625448, -0.0483841, -0.014270127, 0.027308324, 0.009594569, 0.020518608, -0.004657678, -0.012342227, 0.024242025, 0.034419317, 0.061071098, 0.010042358, -0.04576481, -0.015002317, -0.02288722, -0.0009091618, 0.0047640447, 0.033347167, -0.04653185, -0.0074250507, -0.0006684609, 0.010300166, -0.0050650355, -0.01823963, -0.0704534, -0.0027068541, -0.0072985105, 0.051050145, -0.031169167, -0.035679214, -0.027360132, -0.02248823, -0.010342117, 0.011023644, 0.03047503, -0.01982711, -0.0006918433, 0.03643983, 0.0051225745, -0.06922284, 2.4757812e-05, 0.03751175, 0.00691614, 0.049775124, -0.028971681, -0.01884207, 0.009131506, 0.017051026, 0.039397586, -0.04396483, 0.034469005, -0.03559348, -0.0016051314, 0.02625616, 0.014440223, 0.046284266, -0.02931875, 0.010310368, -0.032800432, -0.020071937, -0.005360524, -0.0110960845, 0.017366916, -0.009865644, 0.016993945, 0.020062996, -0.043609507, -0.0074923327, 0.032928806, -0.011641672, 0.0014631179, -0.019656785, -0.001623929, 0.029465921, -0.01381142, -0.017707795, -0.04795771, 0.0031159308, 0.0031080795, -0.019407658, 0.030806053, 0.07009211, 0.0043273447, -0.004670974, 0.028880445, -0.047794722, -0.034952525, 0.008052708, -0.035383496, 0.021220194, 0.03264363, 0.0054138512, 6.5766515e-05, -0.0034280398, -0.006245097, -0.00544328, 0.015178372, -0.010460977, -0.009703228, 0.00028035927, 0.0065259757, 0.048569784, -0.052617684, 0.042287745, 0.007325733, -0.046209082, 0.03124619, -0.04239454, -0.015334713, 0.012373518, 0.039212707, 0.00946482, 0.006602312, 0.041252013, -0.0041386806, -0.031170312, -0.061182972, 0.015974062, -0.0010655028, 0.036977164, -0.05358507, 0.015386522, 0.028366491, 0.048458375, 0.0756021, 0.02487147, 0.039655592, 0.022406278, -0.028828178, 0.043600794, 0.0709944, -0.051433895, 0.010963813, 0.047267932, -0.037446648, 0.002212156, -0.01432652, -0.009283262, 0.011222624, 0.03741822, 0.022100445, 0.058749367, 0.0124497395, -0.038929366, -0.046174236, 0.007189393, -0.02182997, -0.05876954, 0.05838534, -0.035257872, 0.04368, -0.032915052, 0.0040187887, -0.008467171, -0.012304977, -0.038580235, -0.01123271, -0.02691449, -0.01730846, -0.01621453, 0.027459161, 0.03500571, 0.007752175, -0.043400783, 0.0032799514, -0.034459203, 0.00867979, 0.0036215174, -0.008938258, 0.00017204386, 0.020537978, -0.0074200076, -0.043883678, 0.03464781, -0.052948706, 0.03853599, 0.018571109, 0.030600654, -0.022065628, 0.022301745, -0.056398295, 0.0011604078, -0.0515696, 0.030232038, 0.025186028, -0.034673657, 0.046005514, 0.02902074, 0.010792572, 0.05429113, 0.026481, -0.058696188, -0.018639652, -0.01609762, 0.0073351893, -0.0016117793, 0.017123235, 0.020652141, -0.029474633, -0.0027261102, -0.02701994, 0.0011993784, -0.0054242527, -0.0062978826, 0.05277815, 0.064201586, -0.027937813, 0.045900866, -0.03662689, -0.061333347, 0.0066726888, 0.0058889203, -0.044856567, 0.0063810963, 0.0035514277, 0.0055552055, -0.020418776, -0.049093824, 0.03481756, 0.008189792, -0.010806326, -0.018190114, -0.01788156, -0.07317308, -0.015117737, 0.0333827, -0.0065482114, 0.019497521, 0.072501875, -0.021792375, -0.02169151, -0.010307502, -0.028329814, 0.019945627, -0.031469014, 0.04326015, 0.050212797, 0.03336986, -0.0042977724, -0.062485047, -0.02786162, 0.031489186, 0.046848945, 0.0016491453, -0.013220672, 0.017532656, 0.022428744, -0.028384142, 0.013586994, 0.029973457, 0.035184573, 0.015297118, -0.066273905, -0.03667686, -0.0031173637, 0.01548922, -0.059554458, -0.03281052, -0.062994815, -0.008002962, -0.008900175, 0.0315183, -0.0372048, 0.024936616, 0.021209192, -0.014273794, 0.020671912, 0.026410164, -0.0014249495, 0.0043908437, 0.012965757, -0.018007338, -0.025900338, -0.042508245, 0.06138103, 0.001062752, -0.022772085, 0.055430904, -0.004144641, 0.02051414, -0.032429524, 0.06739993, 0.014627396, -0.017335052, -0.014594959, 0.012683335, 0.05491099, -0.030556642, 0.0081133405, 0.006519557, 0.009468372, 0.0035440922, -0.0173268, 0.01839047, 0.028101033, 0.02609244, 0.060097292, 0.053719867, 0.0072393673, -0.012201961, 0.047217958, 0.0064301537, -0.0042954804, 0.046966486, 0.0142903, 0.035750277, -0.0022286614, 0.039475184, 0.05283317, 0.028729146, 0.01691071, -0.009935218, 0.0013182102, -0.0016225536, -0.02565918, 0.00405157, -0.0195495, -0.021632826, -0.010450318, 0.022099556, 0.011396845, 0.030514918, -0.047692716, -0.015319125, 0.023066945, 0.015425721, -0.02153746, -0.04017734, 0.015183416, 0.02486051, 0.027619172, 0.021350058, 0.03872122, -0.07059461, 0.03389069, 0.017802242, -0.005990015, -0.014555759, -0.037887245, -0.060722314, 0.049106658, 0.01926066, 0.0315675, -0.018749457, 0.101932496, 0.066926785, 0.0041253846, 0.016948557, -0.011587601, -0.048532642, -0.025054904, -0.03614182, -0.019221574, -0.014390921, 0.015663441, -0.04127815, 0.015734276, -0.04530106, 0.036091387, 0.024126945, -0.060313694, 0.031149223, -0.024914838, -0.039263595, -0.038776234, -0.043019906, 0.035020784, 0.05510905, -0.06960269, -0.02959246, -0.050953407, -0.025584904, 0.007476687, 0.032507923, -0.00791333, -0.01436893, 0.015564296, 0.0663601, -0.014489193, -0.0016074238, 0.012515761, 0.029572519, -0.033455595, -0.01796179, -0.04860577, -0.019466216, -0.0032996659, 0.07199938, 0.015448645, 0.0017614724, 0.032449238, 0.014036303, 0.024003385, 0.031367686, 0.030564435, 0.014103241, 0.023121044, -0.019532079, 0.02490223, -0.0013393287, -0.017523946, 0.022313436, 0.04306621, 0.011757037, 0.03691023, -0.019518325, -0.028049683, 0.0026440425, 0.041148398, -0.034679275, -0.007442473, 0.04580745, 0.028555842, -0.05709701, 0.010887936, 0.0042340187, -0.06335065, 0.008104515, 0.065646715, -0.02887586, -0.0015597421, -0.042456895, -0.044004712, -0.005248656, -0.046852782, 0.049029637, 0.03144242, -0.012137288, -0.036507685, 0.0077734943, -0.03044844, 0.01655289, -0.026835175, -0.013586994, 0.0530514, 0.01674608, -0.02795065, 0.018306108, -0.059070304, 0.0042574266, -0.013056536, -0.022077547, -0.04444944, -0.030575553, 0.026483523, -0.0026380823, 0.014502576, 0.02043803, 0.008923268, 0.0019803382, 0.0034344585, -0.03381321, 0.022190334, 0.0024421976, 0.0005579677, -0.021645205, 0.0048528174, -0.011384697, 0.020578325, -0.021340316, -0.022506682, -0.004523802, 0.024247983, -0.044650253, -0.07249087, 0.055283275, -0.023734717, -0.03837667, 0.0064168577, 0.030498872, 0.034013566, -0.032362357, 0.039191157, -0.00061069266, 0.03132823, 0.028065959, 0.061061934, 0.011120384, -0.0933021, -0.058342237, 0.019146957, -0.012069433, -0.03258036, -0.05482663, -0.032737162, 0.007329229, -0.011212995, 0.007849143, -0.04211212, -0.018630024, -0.03522761, -0.0076538315, -0.027515098, 0.00199713, -0.033785243, 0.03205861, 0.043781895, -0.017224101, -0.018444112, 0.026894663, -0.0071779313, 0.025815979, -0.030200861, 0.036919855, -0.012455929, -0.056785252, -0.018909466, -0.0034288422, -0.0079417555, 0.012885066, -0.016030224, -0.025796263, -0.03550522, -0.001747718, -0.018551853, -0.005187678, 0.011627002, -0.010182338, 0.02846048, 0.009214949, 0.009061359, -0.009368653, 0.034572907, -0.026320305, -0.034396853, -0.00025835235, 0.010938138, -0.024027225, 0.0047122366, -0.019727333, -0.017171836, 0.0092165535, 0.006072999, 0.009511125, 0.01073572, -0.023336759, -0.0022488344, 0.013574386, 0.07838506, 0.045619246, -0.030313646, 0.05701999, -0.002290556, 0.07564519, -0.0021310055, -0.07139602, 0.07276963, 0.022256354, -0.033342354, -0.020727789, 0.013794686, 0.0023872948, 0.0061270995, 0.0051892833, -9.9260484e-05, -0.008357294, -0.006534687, 0.008014897, -0.025576653, -0.016350241, -0.0030442937, 0.05623508, -0.021783207, 0.0006294903, -0.044556726, 0.0434903, -0.0065000714, -0.010684371, -0.00033924505, -0.013274312, -0.039275285, 0.05452089, -0.04779358, 0.032223668, 0.028013004, 0.023695288, 3.851215e-05, 0.04020852, 0.006536864, -0.0341048, -0.03308652, 0.0260741, 0.0029672696, 0.0046544685, -0.017423194, 0.022171076, -0.026861306, -0.03144838, -0.0092814285, 0.0047498317, -0.009792058, -0.040606476, -0.052827667, 0.02785162, -0.0059599844, 0.028623238, 0.02413428, 0.021774037, 0.012803696, -0.044317394, -0.07129149, -0.0139093045, 0.0045604804, -0.013809357, 0.021054225, -0.015553407, -0.007738191, 0.039722532, 0.032752752, 0.039375465, 0.034393184, 0.030856028, 0.034106176, 0.006579159, 0.0009433185, -0.0074894093, -0.038094934, 0.037649296, 0.0010579379, -0.03261108, -0.082867146, 0.01662464, 0.03774374, 0.003728916, 0.017884308, 0.036137234, -0.009116835, 0.02746008, -0.030459559, -0.010251568, 0.0023565767, -0.0054158284, 0.0264959, -0.05231417, -0.024042586, 0.026545875, -0.03880191, -0.02720382, -0.025699526, -0.036302287, -0.02826425, -0.031494457, -0.03058713, 0.005984513, 0.0229239, 0.059783693, -0.005616355, -0.044378836, -0.04839143, 0.036598463, 0.025279615, -0.0019109362, -0.022425303, 0.018691689, -0.015179862, -0.017867804, -0.0444797, -0.04673908, -0.00978392, 0.032092426, 0.008486427, -0.0028370619, 0.041745797, 0.012095566, -0.007876652, -0.017240606, -0.037486993, 0.04470802, -0.023506166, 0.023641877, 0.009611533, -0.007577839, -0.07546548, 0.00096945174, 0.029650688, -0.006753381, -0.0033322182, -0.022916792, 0.01046178, -0.014764366, -0.03207466, 0.014548881, -0.01096496, 0.012768956, -0.014183474, -0.019704238, -0.0035620301, -0.06958504, -0.025439568, -0.018801723, -0.054852303, -0.049920917, -0.0327069, 0.011246922, 0.015221927, -0.042851645, 0.058199193, 0.0007890406, -0.014898701, 0.02857785, -0.07328174, 0.002019051, -0.006564029, -0.035841975, 0.02404399, -0.024389194, 0.044952847, 0.0011266522, 0.028513663, -0.033622943, -0.019264327, -0.0064493343, -0.016402049, 0.012873145, 0.038038544, 0.01027495, -0.0031396572, 0.0050551784, 0.0103616025, -0.037541095, -0.07823285, -0.024439627, -0.0036945408, -0.0007117584, -0.016846314, 0.017036239, 0.008921523, 0.019426629, 0.029308664, 0.026617398, 0.019113947, -0.011529804, 0.05202808, 0.011718698, 0.007457832, -0.009155347, 0.017694041, 0.015232931, -0.02945148, -0.032248653, 0.01683256, 0.041776974, 0.01686706, 0.01286214, 0.061181825, 0.016706938, -0.02692733, 0.009906792, -0.01640801, 0.009402925, -0.1070051, 0.0068881735, 0.066022664, 0.0193386, 0.024215432, 0.034505054, -0.029159658, 0.024577629, -0.03586765, -0.0002315887, -0.06323145, -0.034056205, -0.013257349, -0.00992175, 0.008272332, 0.029174559, 0.0025282768, 0.017939325, 0.03835856, 0.015402109, 0.02110649, 0.02302018, -0.0009504248, 0.054220065, -0.01745013, 0.043397922, 0.028344024, 0.006061079, -0.003078221, 0.037103705, -0.018967692, 0.018667733, 0.0357583, -0.016833019, 0.00012470601, 0.01840789, -0.061802834, 0.013448993, -0.014991772, 0.006534687, 0.0052807494, 0.0065608197, 0.028678713, 0.016116418, -0.012246863, -0.043810323, -0.0020145522, -0.04453655, 0.0073558204, 0.021894846, -0.0016496038, 0.006023025, -0.025672933, 0.019309258, 0.02795707, -0.005884565, -0.06284999, 0.076937534, 0.0075433385, 0.0571667, 0.039227948, -0.062232655, 0.04381491, 0.026378073, -0.040766943, -0.038079914, -0.008820572, -0.040468015, -0.05189971, 0.0011425271, -0.021721082, 0.032432273, 0.03975921, 0.024530176, 0.005966661, -0.062422693, 0.007001876, -0.00846763, -0.048110846, -0.038583674, -0.045429666, -0.0064825346, 0.034744836, -0.0145796, 0.009376562, -0.037980773, 0.06835356, 0.010053792, 0.015455522, -0.00531141, 0.0043619596, -0.0118305655, -0.00037618118, -0.023862861, 0.03196325, 0.014105075, 0.04310335, 0.016596789, 0.00019800517, -0.061179303, -0.0021967972, -0.019080477, 0.052050088, -0.015111663, 0.011229502, -0.0070830267, 0.008076778, 0.014447558, 0.022892723, -0.054104526, 0.02861659, -0.0067517757, -0.031443335, -0.016317002, 0.01916438, -0.025412519, 0.04644886, 0.0071898517, 0.0102967275, 0.0044545718, -0.03488559, 0.06761266, 0.008271172, -0.00053745083, 0.02237258, -0.0045105065, 0.0033034056, 0.0527158, -0.024421975, 0.004421562, 0.022242602, -0.023028431, 0.008414905, 0.014933086, -0.014757031, 0.014131208, 0.0015450708, 0.071495056, -0.009681737, -0.054590054, -0.06653387, 0.047490984, -0.027831675, -0.042882364, -0.028529251, 0.016521484, -0.019753065, -0.019752778, -0.012023012, -0.031107271, 0.017947579, -0.070678964, -0.0044100997, 0.025825836, 0.06251943, -0.012611812, 0.024630355, 0.039654676, -0.02473122, -0.04946427, 0.018154811, 0.011574735, 0.046242088, 0.0027875463, 0.043540735, 0.016941678, 0.023659756, 0.031871554, 0.018458553, -0.04665747, 0.036501724, 0.055572573, -0.0023153138, -0.0065076365, -0.0020214294, 0.02195502, -0.004347059, 0.011131845, 0.008134373, -0.021151882, 0.064740755, 0.05464324, -0.044119336, 0.0113624595, 0.012085479], [-0.029025964, -0.077956624, -0.047697976, -0.023808902, -0.011612218, 0.0321345, 0.012400924, -0.023025924, 0.044412594, 0.024061242, -0.016991334, 0.0094682835, -0.07670065, -0.010083481, -0.0048043844, 0.039474975, -0.002072165, -0.044441987, 0.02917227, 0.033009194, -0.030875947, -0.004172485, -0.020968646, 0.03199258, -0.025435941, 0.056696724, -0.0030433494, -0.012147439, 0.014076254, -0.010365026, -0.0027784114, -0.04866286, -0.018371759, 0.0014399792, 0.015721427, 0.017579045, 0.011296125, -0.01781917, -0.042912297, -0.05268522, -0.066671, 0.018993733, -0.022336856, 0.038781706, 0.005887041, 0.046331294, 0.023163022, 0.015586286, -0.0046652346, -0.032837022, 0.03780289, 0.015519288, -0.035308123, 0.010281039, -0.01656358, 0.030395318, 0.016775452, 0.037337434, 0.011433557, -0.006071429, 0.014725214, -0.026985101, -0.06654139, 0.009986491, 0.02141339, 0.03269043, 0.013726758, 0.004398579, 0.00095247827, -0.02252363, -0.0147166, 0.016319636, 0.008391066, -0.027525285, 0.07112245, 0.00956983, -0.072889924, 0.0076434948, -0.025682937, -0.038609967, -0.0057385387, 0.019145386, 0.008594828, -0.045944955, -0.059686694, 0.01368133, -0.030094113, 0.009836295, 0.055295374, 0.0129680205, -0.044826034, -0.006774621, 0.032811064, -0.011550946, 0.008829989, 0.022442602, -0.012364848, 0.060923487, 0.030374704, 0.02213319, 0.041964017, -0.059746537, -0.02330842, -0.010647141, -0.017768396, 0.007610115, 0.017292729, -0.036672134, 0.0019412232, 0.0056672217, -0.01272427, -0.00010965907, -0.007831724, -0.051187214, 0.014744898, -0.004462714, 0.018192144, -0.017709224, -0.031993918, -0.0146234045, -0.016550599, 0.013338155, 0.004135168, 0.01633109, -0.026850224, 0.007164774, 0.014016844, 0.0052365307, -0.047016922, 0.0019702367, 0.03273681, 0.024050554, 0.03980481, -0.01997761, -0.038968004, 0.019919204, 0.0037121838, 0.06917855, -0.03297426, 0.034836557, -0.03498783, -0.00037669658, 0.02463521, 0.018559393, 0.04440572, -0.021455765, 0.010157732, -0.056317616, -0.015843397, -0.013230858, -0.014830602, -0.022639588, 0.0029389395, 0.013245794, 0.03245832, -0.065387726, 0.017870707, 0.018020164, -0.028510977, 0.026508292, -0.012418245, 0.015919391, 0.023450436, 0.021701233, 0.0032159025, -0.043694127, 0.014161577, 0.0012323046, -0.0050048055, 0.058193177, 0.080412835, -0.008253539, 0.0056116045, 0.029566148, -0.045256272, -0.0073165223, -0.010952546, -0.03229417, 0.026097333, 0.013910298, 0.0022363197, 0.01271549, -0.012932517, -0.0066517913, -0.03434362, 0.020286642, -0.025495593, -0.02125, -0.0093598645, 0.010752507, 0.028523766, -0.024923816, 0.037192643, 0.0020622395, -0.030280793, 0.02351414, -0.035750575, -0.011536524, 0.02292285, 0.05295779, 0.029354654, -0.008753638, 0.02051245, -0.019335978, -0.039342888, -0.057275053, 0.018814024, -0.0037082948, 0.034997705, -0.038919903, 0.01185406, 0.049762122, 0.02188982, 0.047794178, 0.013421736, 0.04134786, 0.032195676, -0.04038966, 0.04064849, 0.041179508, -0.03554901, 0.014400174, 0.027007243, -0.01327896, -0.028985117, -0.003814303, -0.015322492, 0.00445317, 0.021587852, 0.0026294317, 0.07599976, -0.009241902, -0.021005677, -0.054294314, -0.004653782, 0.007055783, -0.05566214, 0.027836034, -0.04159028, 0.029999057, -0.019221354, 0.02747871, 0.031532183, -0.021021329, -0.023751259, -0.012768935, -0.045593742, -0.018455556, -0.032856278, 0.008036703, 0.050452337, -0.00872348, -0.030922139, -0.009860059, -0.0068437187, 0.0013605742, -0.013444451, 0.0057385387, 0.0034350299, 0.059030745, -0.0035677163, -0.03603307, -0.0076707727, -0.034299906, 0.053696107, 0.0060979603, 0.034177743, -0.031415462, 0.031154843, -0.02219408, -0.044234693, -0.07310452, 0.035715643, 0.020247893, -0.018494494, 0.01747368, 0.008728443, 0.014890967, 0.06691704, 0.019458042, -0.06338352, -0.017502408, 0.00046545456, 0.0141741745, 0.0034018173, -0.003853815, 0.008282171, -0.06307811, -0.004020642, -0.044959646, -0.0026163568, -0.0057097636, 0.017826423, 0.06348735, 0.048870344, -0.02616328, 0.04090427, -0.011903449, -0.060121227, -0.024774361, 0.01852198, -0.012254329, 0.008442126, -0.012623487, -0.0046074945, -0.030473197, -0.068227224, 0.023952061, 0.02086061, -0.01853496, -0.01614799, -0.019290071, -0.07080254, 0.00861067, -0.0018675445, -0.030604042, 0.0248698, 0.09366049, -0.013853119, -0.011183603, -0.02306343, -0.029837577, -0.014241364, -0.07313811, 0.009305655, 0.07679227, 0.021086227, 0.0030693088, -0.066265576, -0.03291218, 0.044215225, 0.041337937, 0.022529643, 0.014834802, 0.009836867, 0.01696213, -0.013314463, 0.00084596867, 0.02349062, 0.034202557, 0.018960234, -0.064828075, -0.02906433, -0.017063415, 0.035086323, -0.065679386, -0.028253675, -0.059581235, 0.017935986, 0.0065570204, 0.02134334, -0.033088982, 0.0103063295, 0.021458438, 0.0025081292, 0.002386254, 0.011571371, 0.006787983, -0.009379716, -0.013930233, -0.0012223789, -0.018018827, -0.044119786, 0.024497492, 0.0054573757, -0.026651068, 0.066743724, 0.0024189893, 0.04925248, -0.02537906, 0.06639785, 0.018186035, -0.0136494525, 0.00828179, -0.009153717, 0.0326011, -0.055039886, 0.002350178, 0.047926266, 0.026707185, 0.009607718, -0.018995358, 0.06513348, 0.026937764, 0.040775996, 0.058901712, 0.04565871, 0.029425662, -0.0234407, 0.041376114, 0.01890717, 0.00961564, 0.03764408, 0.029015753, 0.012694875, -0.03806706, 0.030742526, 0.055380408, 0.02462204, 0.009033082, -0.0032992705, 0.011399962, -0.017672958, -0.016699484, -0.010585298, -0.049710583, -0.049567048, 0.025582153, -0.0049498333, 0.03241633, 0.026581587, -0.0059958408, -0.025499409, 0.018287392, 0.034521326, -0.0057270858, -0.026198305, 0.047588028, -0.0011527803, 0.006480383, 0.051787283, 0.046806958, -0.06357286, 0.017645663, 0.039453596, 0.0012758246, -0.0006776148, -0.002610821, -0.03837247, 0.027264928, 0.0070643728, 0.0321909, 0.0021821107, 0.094113246, 0.05230127, -0.02538555, 0.002620365, -0.008639112, -0.07576459, -0.033566937, -0.032569174, -0.040719494, -0.0160421, 0.0025188182, -0.035831317, 0.0012937671, -0.033772323, 0.033007666, 0.034636326, -0.03748756, -0.0004140131, -0.011624816, -0.030225819, -0.02452393, -0.044252258, 0.029653952, 0.06571069, -0.058747485, -0.04058817, -0.040606175, -0.06832495, -0.013954285, 0.03438027, -9.601133e-05, 0.021155467, 0.008358904, 0.027919257, -0.06836465, 0.017440278, 0.006683572, 0.0009047589, -0.023279408, -0.007767565, -0.0552697, -0.0067272834, 0.0070807887, 0.027717117, 0.017155178, 0.0027368004, 0.014914588, 0.026692487, 0.012814488, 0.020927034, 0.020197121, 0.043095157, 0.016066007, -0.033918846, -0.01409038, 0.009985179, -0.009352993, 0.023621652, 0.030703776, 0.0059943143, 0.06914038, -0.03633199, -0.0077057206, 0.00080697, 0.042861905, -0.047852207, -0.0043210587, 0.067375146, 0.019447736, -0.08247736, 0.03502066, 0.015654238, -0.07172676, 0.028046764, 0.057359807, -0.035682622, 0.006991458, -0.046168663, -0.0643379, -0.015334328, -0.028564423, 0.043276493, 0.041073766, -0.0086722765, -0.044549644, -0.013987879, -0.010956364, -0.0003260186, -0.012794894, -0.01887663, 0.04404458, 0.01858268, -0.03383264, 0.044156052, -0.048602734, 0.023456542, -0.004426829, -0.002441322, -0.06039285, -0.055146772, 0.002134773, 0.008526876, -0.02271632, 0.047926646, 0.005372245, -0.0019014253, -0.034822147, -0.02623295, 0.0103869755, 0.00094961515, 0.0098721795, -0.03326459, -0.009497869, -0.008110381, 0.022607902, 0.011663946, -0.0076167723, -0.03916728, -0.00047833877, -0.05479785, -0.06562518, 0.02779242, -0.015942844, -0.021908145, 0.03504242, 0.05971714, 0.0014638389, -0.039813973, -0.003408665, 0.028759308, -0.0020685385, 0.015149559, 0.025510004, -0.020308975, -0.072484545, -0.07924619, 0.040177785, -0.027010452, -0.030032651, -0.031726878, -0.043194793, 0.00036252395, -0.02811777, 0.035771284, -0.03220789, -0.00040160608, -0.03752039, 0.010697044, -0.02931018, 0.010290678, -0.016314961, 0.0088193, 0.04136008, -0.018749125, 0.009502092, 0.018198252, -0.025859307, 0.026079964, -0.008742567, 0.04654355, -0.0067914184, -0.028684294, -0.02735006, -0.041008487, -0.022906147, -0.0057142973, -0.03513748, -0.016865142, -0.06975042, 0.0028799584, -0.00152282, 0.020773951, -0.0333104, -0.024425438, 0.028069286, 0.0018354772, 0.008552358, 0.006805257, 0.022201905, -0.037006546, -0.026052093, -0.012126824, 0.001033792, -0.03641101, 0.006324914, -0.027868865, -0.008265755, 0.0247505, -0.0021139674, -0.005204368, 0.019176308, -0.006971607, 0.026449881, 0.012732669, 0.05175078, 0.02672093, 0.0041084453, 0.02981658, 0.002794827, 0.074387215, -0.017255317, -0.05815882, 0.080796115, 0.017703593, -0.030193752, -0.036882095, -0.018226502, 0.015561091, 0.022503683, 0.0045550982, -0.005032292, 0.004410795, -0.0036506257, 0.021589747, 0.0014631709, -0.029761605, 0.02339699, 0.05241379, -0.014181046, 0.012250512, -0.052304134, 0.042927563, 1.0402819e-05, 0.0018115221, -0.021933341, -0.025214141, -0.031187842, 0.024487663, -0.06467232, 0.03695845, 0.046697773, 0.008852942, -0.0020710197, 0.020877026, -0.007410064, -0.039510883, -0.028508114, 0.04951742, 0.003070072, 0.030245671, -0.018384214, 0.00021826832, 0.004794077, -0.016765526, -0.013082356, -0.02304883, 0.04108598, -0.031301413, -0.020730814, 0.009795829, 0.007867322, 0.06523884, 0.027006099, 0.003920622, 0.01407301, -0.048035447, -0.053297553, -0.026430605, 0.0024932406, -0.0006707432, -0.016958123, -0.011780906, -0.005041454, 0.040094182, 0.015986746, 0.042228956, 0.026129209, 0.03085643, 0.06745302, 0.024264717, 0.030907251, 0.0035841053, -0.024131676, 0.036090147, -0.006982677, -0.012748321, -0.087763146, -0.009514666, 0.009290576, -0.006358317, 0.044558425, 0.041658614, 0.009302601, 0.027460389, -0.023625279, 0.024821317, 0.010243388, 0.0029654715, 0.013197264, -0.058518432, -0.017971108, 0.024664415, -0.026437951, -0.038377047, -0.05356173, -0.0074602524, 0.0069368673, -0.0071349973, -0.033408128, -0.006881894, 0.02340997, 0.016130667, -0.007969132, -0.03293475, -0.05352355, 0.007885528, 0.004752084, 0.005792175, -0.029299682, 0.0063188053, -0.009851684, 0.014389293, -0.030098312, -0.03889337, -0.018909462, 0.032054424, -0.005608682, -0.006551676, 0.039546743, 0.022999201, 0.021476094, -0.01658801, -0.06335756, 0.044166364, -0.032533526, 0.018633071, 0.008455105, -0.0005756863, -0.077079356, -0.009534517, 0.017119925, -0.0054606213, 0.0013889672, -0.015446946, 0.006477043, 0.009138447, 0.0037282177, 0.006139095, 0.010551513, -0.002905345, -0.02065408, -0.0066944524, 0.0075278236, -0.081988715, -0.03229951, 0.004539208, -0.05600859, -0.06823027, -0.0023852042, 0.010982087, -0.028066041, -0.0594837, 0.05825273, -0.018659603, -0.019857358, 0.022386866, -0.064785324, 0.015990565, -0.026937, -0.06841963, 0.03180953, -0.032630876, 0.03626747, 0.0031273356, 0.056986067, -0.04048244, -0.024352139, 0.004961667, 0.00013246892, 0.014295955, 0.022411298, 0.000301974, 0.0041336413, 0.007501387, 0.015969234, -0.045376904, -0.061938956, -0.00012335453, 0.01283393, -0.007133852, 0.0035896404, 0.029546844, -0.0078260815, -0.0034588897, 0.010008794, 0.03362191, 0.025174439, -0.003942764, 0.040603824, 0.043318864, -0.020496225, -0.027406178, 0.0109463, -0.008875132, -0.0017782139, -0.034127355, -0.012931325, 0.050084706, 0.0031376102, 0.016249586, 0.047906414, 0.0018683082, -0.005402785, -0.024024213, -0.0032865272, 0.01841967, -0.09006971, -0.022788186, 0.06283035, 0.020985825, -0.006665153, 0.0044932542, -0.044171326, 0.021719558, -0.05262452, -0.020179179, -0.07336106, -0.032921962, 0.012899877, -0.022123836, 0.0004685563, 0.016132863, 0.026889568, -0.015654048, 0.019455371, 0.037496626, 0.013716451, 0.010569264, -0.014151842, 0.064119086, -0.01419059, 0.002537906, 0.052286666, -0.005394315, -0.0072161206, 0.022616683, -0.008332873, 0.011841271, 0.049144063, -0.020461293, 0.026198115, 0.0269977, -0.048481334, 0.0011479368, -0.029564727, -0.00020003953, 0.010568787, -0.020639192, 0.039533, 0.024394322, -0.007862909, -0.020442396, -0.029611956, -0.017979888, -0.009993959, 0.020016741, -0.00039645238, -0.007374918, -0.027294707, 0.01862811, 0.03125503, -0.016279934, -0.06893576, 0.06304242, 0.012959049, 0.056424886, 0.03779411, -0.03879816, 0.04826297, 0.03130237, -0.024660978, -0.008287134, -0.0039587975, -0.04543951, -0.053994257, 0.029198326, -0.01117091, 0.03364491, 0.06359343, 0.025683511, 0.0030962226, -0.06590615, -0.012767121, -0.02634872, -0.029301114, -0.039087113, -0.010744108, -0.018169621, -0.0063936533, 0.009543107, -0.0012433755, -0.031012138, 0.08502444, -0.00035503198, -0.0030109002, 0.010474971, -0.023222147, -0.0059479307, 0.001557512, -0.01667276, 0.050148077, 0.029422607, 0.03503567, -0.018041732, 0.005625921, -0.051359765, -0.012451697, -0.022898417, 0.028173696, -0.016796257, 0.015515279, -0.008334281, 0.0040611075, 0.009481357, 0.04961133, -0.018022645, 0.030953635, 0.0020994844, -0.02722141, -0.0024591691, 0.04910321, -0.040830202, 0.05706929, -0.005811454, 0.003344554, 0.023070017, -0.042434342, 0.061673254, 0.01644533, 0.022059988, 0.04112606, -0.007596921, 0.020844959, 0.02528553, -0.033502802, 0.0009681302, 0.0038904634, -0.024567831, 0.013731673, -0.0010731128, -0.011630924, 0.021682145, 0.026046367, 0.035755917, -0.004206938, -0.040404454, -0.04561864, 0.050991755, -0.0047234525, -0.024932789, -0.020087557, -0.008056554, -0.02108279, -0.0016373463, 0.002215705, -0.02049489, -0.0012181796, -0.07117895, -0.020546427, 0.018908411, 0.03020215, 0.0055464203, 0.034708384, 0.012480961, -0.029482923, -0.024442235, 0.00391041, 0.006589852, 0.04312455, 0.0037719284, 0.01581572, 0.041769177, 0.015217128, 0.0012513923, 0.007480939, -0.05237447, 0.025027081, 0.045753885, 0.0069857314, 0.0074568647, 0.004999843, 0.010231602, 0.00677412, -0.01483003, -0.0024861782, -0.016660925, 0.031220863, 0.025044262, -0.064657435, -0.005110182, 0.0043046675], [-0.00872509, -0.087099865, -0.011124933, -0.02540624, -0.027002435, 0.03487464, 0.029820291, -0.026918313, 0.06681455, 0.020516116, -0.012878868, 0.0062165344, -0.07394686, -0.025541266, -0.02632396, 0.03991613, -0.014036085, -0.0113061145, 0.039084543, 0.043127947, -0.02853326, -0.011374029, -0.006537488, 0.035614602, -0.023389429, 0.07211866, -0.014492745, -0.0046283766, 0.016063757, -0.01567797, -0.022760382, -0.0662488, 0.015710386, 0.0050430982, 0.01705113, 0.029420571, 0.023869522, -0.013175744, -0.0110656675, -0.06277403, -0.07576007, 0.009981177, -0.035153802, 0.046637673, 0.007746958, 0.03870519, 0.014301995, 0.0017274701, -0.0074446243, -0.012333408, 0.034088597, 0.012734198, -0.03846407, 0.034288995, -0.053208645, 0.038267963, 0.02597367, 0.05113397, 0.04599764, -0.006660592, 0.028052099, 0.011065232, -0.033746213, 0.021732152, 0.021226877, 0.012732054, 0.012561129, -0.0007624659, -0.00576377, -0.031989273, 0.0005956262, 0.010249084, -0.012866142, -0.022497833, 0.04771118, -0.01358936, -0.048692793, 0.011202569, -0.008774519, -0.03715132, -0.0045421105, 0.012920125, 0.0285054, -0.06464939, -0.06638972, 0.00017244896, -0.005923979, -0.0017489026, 0.070110425, 0.020247405, -0.05420661, -0.011114962, 0.026253901, -0.010916711, 0.01637185, 0.008127789, 0.0032588316, 0.05008806, 0.015767986, 0.04963797, 0.038533725, -0.060227834, -0.008228657, -0.010449479, -0.017429015, -0.0067116288, 0.022088468, -0.03714918, -0.002562137, -0.011502357, -0.015963024, 0.005372089, 0.010447335, -0.08106678, 0.024563938, -0.016318, 0.023166798, -0.011925116, -0.038587842, -0.020190878, -0.036028255, 0.0010598436, 0.020095235, 0.026134279, -0.024329253, 0.008267637, 0.0019535844, -0.006588659, -0.05435744, -0.0012522014, 0.03648423, 0.0004457987, 0.047074627, -0.031799592, -0.043392505, 0.0118222395, -0.012182442, 0.052643362, -0.016529916, 0.04257056, -0.008964399, -0.0014617054, 0.035248507, 0.015902342, 0.032035355, -0.007748968, 0.019325804, -0.029859405, -0.030117134, -0.003940925, 0.0063885315, -0.014991322, 0.02426676, 0.03092943, 0.015224669, -0.047688674, 0.014179828, 0.009822574, -0.0193108, 0.010213151, -0.013071292, 0.02490043, 0.029080864, 0.01922882, -0.03071671, -0.030583292, 0.02116365, 0.0005347441, 0.00219296, 0.057713788, 0.05067317, -0.009412006, -0.0038128651, 0.025772737, -0.058549657, -0.013578643, 0.02579953, -0.049612254, 0.010105486, 0.04299145, 0.014380223, 0.0033515277, 0.021286888, -0.013296803, -0.024383903, -0.005925084, -0.018724082, -0.015115497, -0.032312904, 0.021325467, 0.03583107, -0.038827356, 0.022402458, -0.004709017, -0.028672338, 0.0068187914, -0.033593506, -0.0049761212, 0.010300523, 0.020396363, 0.01160577, 0.018722475, 0.031899724, -0.0237787, -0.026697021, -0.047151785, 0.038150083, -0.019289367, 0.037897177, -0.02513726, 0.03541367, 0.028467892, 0.050022688, 0.06592999, 0.024473386, 0.030583695, 0.008395296, -0.04104349, 0.034242913, 0.07585436, -0.041120917, -0.010474662, 0.044822063, -0.02135976, -0.017172359, -0.007034189, -0.03395786, 0.026952606, 0.02995478, 0.0061170063, 0.0704212, -0.0092428215, -0.03821438, -0.055279043, -0.00085472665, -0.0076764985, -0.030508278, 0.028434671, -0.030402185, 0.031043023, -0.02092709, 0.022517122, 0.0373485, -0.025600204, -0.035661757, 0.014954351, -0.026662191, 0.013293589, -0.01309882, 0.046395216, 0.034263544, -0.022531053, -0.028036024, -0.0076881526, -0.008464483, -0.00014413445, -0.0086520845, 0.025997782, -0.022984354, 0.042643283, -0.0015495792, -0.040464807, 0.016791394, -0.035537444, 0.050649595, 0.013253938, 0.033799257, -0.016466156, 0.038145795, -0.024611091, -0.03150436, -0.060872957, 0.034013584, 0.013403968, -0.017472684, 0.019332234, 0.017275771, 0.0074381945, 0.043411795, 0.012403265, -0.048879795, -0.004819127, 0.007657343, 0.042934045, 0.031943463, -0.0011005657, -0.00559174, -0.053903066, -0.016887842, -0.0638971, -0.005817888, -0.009558417, 0.023524456, 0.0260953, 0.02842985, -0.03762177, 0.034427237, -0.027328748, -0.048737805, -0.021909507, 0.008508755, -0.025950896, -0.017325068, 0.016095906, 0.0038428707, -0.008557916, -0.093007974, 0.033634227, -0.006044136, -0.016881948, -0.015097146, -0.0020800368, -0.05850037, -0.002533069, 0.019291243, -0.01559043, 0.022413174, 0.092160314, -0.025489291, -0.002434211, -0.046386644, -0.04331106, 0.016285585, -0.04847204, 0.019878097, 0.06637257, 0.036523346, -0.005267605, -0.06158881, -0.027804552, 0.04657632, 0.016674051, 0.0035128084, 0.015230832, 0.02241947, 0.011948959, -0.0014564812, -0.0024919452, 0.0016031609, 0.027496122, 0.013458353, -0.05087678, -0.043024935, -0.024708608, 0.045111403, -0.07432622, -0.022416389, -0.0435854, 0.0007137066, 0.012586312, 0.020950396, -0.021093037, -0.011738651, 0.037824575, 0.0022011313, -0.0167279, 0.014982748, 0.0011723649, -0.0021446026, -0.023244759, -0.015773345, 0.004339572, -0.046826012, 0.03937402, 0.02545607, -0.027004043, 0.073171, -0.012642439, 0.054027375, -0.011063524, 0.04997875, 0.007245033, -0.060447518, 0.0047711716, 0.0022911483, 0.023554461, -0.04180649, 0.01899708, 0.05600936, 0.00034935187, 0.021475093, -0.021788413, 0.045068532, 0.0074446243, 0.013789755, 0.029592033, 0.033462767, 0.016938912, -0.017228086, 0.053326532, -0.003071296, -0.0022733323, 0.047833346, 0.017830074, -0.0028664637, 0.00017306849, 0.024720397, 0.047303956, 0.025696652, -0.0056820586, -0.00860145, 0.011253203, 0.0029834223, -0.023350852, -0.009321453, -0.06228644, -0.052902166, 0.020057729, -0.0032510622, 0.026839012, 0.016267367, -0.023453997, -0.014380223, 0.041060634, 0.018953947, -0.021054344, -0.026604323, 0.040992048, 0.010958563, 0.012345196, 0.02060533, 0.055221174, -0.043612722, 0.03659461, 0.026018946, -0.009132979, -0.020811085, -0.007864302, -0.06452722, 0.07178471, 0.0014372086, 0.031042755, -0.019941991, 0.08303001, 0.04537127, -0.040910605, 0.022890048, -0.030652948, -0.04151072, -0.0177205, -0.026006352, -0.019725522, -0.017624052, 0.020260267, -0.015328618, 0.018813564, -0.025250854, 0.02738983, 0.04934003, -0.03280157, 0.0072485157, -0.0075718802, -0.014427376, -0.040709138, -0.025390234, 0.035466716, 0.07017043, -0.042927414, -0.013619098, -0.046189465, -0.042915627, 0.0055510513, 0.034809805, -0.00062811, 0.0148538845, -0.013262511, 0.03927101, -0.04809911, 0.012677669, 0.016948389, 0.0018003411, -0.04611445, -0.017530285, -0.046987824, -0.016662799, 0.011408054, 0.022132406, 0.032588314, -0.016591368, 0.033996973, 0.034353293, 0.0019814468, 0.024689319, 0.02427674, 0.035314545, 0.0016160203, -0.01861424, -0.005312613, 0.017592305, -0.01732922, 0.029032776, 0.04351467, 0.024702178, 0.049592964, -0.026889378, -0.0068427688, 0.0039314814, 0.019256147, -0.0383044, -0.0054685357, 0.06722881, 0.035288792, -0.05908119, 0.014077487, 0.0009848294, -0.06924883, 0.019404033, 0.048956417, -0.015955523, -0.0006119016, -0.026239702, -0.044705253, -0.00090934633, -0.045432888, 0.06015711, 0.032148946, -0.0195337, -0.042235143, -0.022127047, -0.029181063, -0.0055677956, -0.030319203, -0.01833776, 0.051524043, 0.0013781182, -0.03111375, 0.04657096, -0.05815982, 0.008083451, 0.0032390065, -0.019416891, -0.05449032, -0.024463203, -0.0062443973, 0.0014781649, 0.01471638, 0.029979963, 0.02105756, 0.008909612, 0.003499279, -0.016885966, 0.0015281466, 0.0016958568, 0.01357007, -0.014512034, -0.01140591, -0.035190236, 0.034928758, 0.007303169, -0.023841659, -0.003292052, -0.0004889319, -0.039750766, -0.048579197, 0.059957784, -0.013687413, -0.010309631, 0.046819583, 0.03835309, 0.030147139, -0.037039872, -0.006081241, 0.023723645, 0.015455003, 0.020371715, 0.016373994, -0.026874911, -0.07780259, -0.07013614, 0.043943323, -0.025369804, -0.018711558, -0.05187768, -0.034085922, -0.0027905286, -0.0008873109, 0.0069002355, -0.054546047, 0.004935399, -0.03163267, 0.010803117, -0.011804959, -0.0080833165, -0.025601545, 0.030412903, 0.026981004, 0.005732894, 0.0004415122, 0.0056753606, 0.011064059, 0.046410754, -0.033684596, 0.04855348, 0.024756832, -0.028132202, -0.004666955, -0.04558292, -0.0072514624, -0.023711992, -0.016964998, 0.005963629, -0.06855442, 0.0029234109, -0.016795816, -0.013474694, -0.0023040078, -0.010612368, 0.029701073, 0.031513467, 0.0031319603, 0.019977354, 0.004702319, -0.047387548, -0.006823614, 0.0065091234, 0.01750028, -0.028103672, 0.016730847, -0.037830334, 0.008882218, 0.027913857, -0.013776359, -0.03773536, 0.0022932915, -0.007423192, 0.005778237, 0.0072664656, 0.07013614, 0.027236586, 0.0012945309, 0.04243018, -0.012505404, 0.064058915, -0.031287353, -0.07194934, 0.10035615, 0.025160436, -0.01203603, -0.02970154, 0.00093231944, 0.030734528, 0.0070312424, -0.0069377422, 0.0007479988, 0.02421673, 0.0068880455, -0.007914129, -0.0026671567, -0.022536278, 0.019801876, 0.061674405, 0.0035149516, -0.010974579, -0.058974024, 0.040992048, -0.009505372, -0.0027573078, -0.0026983682, -0.024402658, -0.023801072, 0.039571602, -0.047758333, 0.02952452, 0.04322747, 0.017089576, -0.0058843284, 0.03165171, -0.015847923, -0.03296553, -0.006196174, 0.03332047, 0.016883554, 0.024850065, -0.022992926, 0.006514448, -0.0012234014, -0.016438829, -0.03261323, 0.015796652, 0.0034710146, -0.060092807, -0.0139863985, 0.015315758, -0.01654867, 0.05600132, 0.038856823, 0.027756862, 0.024144929, -0.028213914, -0.056106344, -0.047510788, 0.017932346, -0.035676755, 0.0011431294, -0.025664503, -0.022533195, 0.03179638, 0.019278651, 0.045213204, 0.03592752, 0.015420242, 0.0617817, 0.01401051, 0.020949325, -0.028773976, -0.030339496, 0.007233647, -0.0066849045, -0.022875851, -0.08479177, -0.016596358, 0.01966551, -0.006879874, 0.061297324, 0.019548703, 0.020798761, 0.008030807, -0.04747006, 0.021346899, 0.00681638, -0.00014071862, 0.012173734, -0.07096773, -0.004354039, 0.016303534, -0.027729537, -0.042850256, -0.028882613, -0.037903607, -0.0104468, -0.023781782, -0.032772634, 0.0146277705, 0.034127176, 0.034511894, -0.023391573, -0.040110096, -0.04245054, 0.03834619, 0.024390334, 0.019984322, -0.034854814, 0.008401591, 0.003181406, 0.010873846, -0.045953702, -0.03278228, -0.0044891983, 0.019273829, 0.0029266258, 0.020744644, 0.046753142, 0.0021164722, 0.0018432062, -0.02430822, -0.07442053, 0.023774145, -0.020758776, 0.008941693, 0.0076463586, 0.022232067, -0.06471475, -0.009887944, 0.005429287, -0.0018635673, -0.009268742, -0.03684135, 0.03803649, 0.014124104, 0.0069291694, 0.0062304656, 0.019914664, -0.015246905, -0.03324844, 0.008627705, -0.0049595106, -0.0638821, -0.04512855, -0.017252197, -0.0884096, -0.043709707, -0.019824648, 0.0006644115, -0.0017553325, -0.05833962, 0.066284694, -0.044918507, -0.0072485157, 0.013394859, -0.06005959, 0.019062182, -0.017416157, -0.06678408, 0.017106187, -0.049585246, 0.035299543, 0.0021847887, 0.062158912, -0.013485411, -0.03940282, -0.014057127, 0.0020876722, 0.03263761, 0.019196672, 0.002038779, 0.0019517089, 0.010785436, 0.017152535, -0.043199614, -0.10032185, -0.03389517, 0.032665893, -0.005436387, 0.025150657, 0.019151127, -0.025651911, 0.0011224, 0.012249284, 0.019843133, 0.014144464, 0.009823914, 0.0521981, -0.0063311993, 0.023027219, -0.01165319, 0.008471247, 0.0057340325, -0.017252197, 0.002719801, -0.008087871, 0.028951198, 0.0054015587, 0.01655242, 0.04339183, -0.003347777, 0.007746557, -0.008697328, -0.0026908668, 0.055882104, -0.07219796, -0.010947787, 0.058313902, 0.017657273, -0.00116915, 0.009768994, -0.038219202, 0.0039489623, -0.045683652, 0.014868887, -0.053020045, -0.04068556, -0.009743274, 0.007869527, 0.011513609, 0.013418971, 0.008235489, -0.014071862, 0.022379417, 0.0182172, 0.02147764, 0.019738114, -0.011117105, 0.057332285, -0.007185825, 0.028053172, 0.025792027, -0.02257124, 0.007274503, 0.029907092, -0.01705716, 0.007677168, 0.041926514, -0.019195063, 0.008290008, 0.037659276, -0.07874777, 0.006492881, -0.040520534, 0.013901472, -0.0015752983, -0.017972734, 0.025765236, 0.022927323, 0.0030836198, -0.020390335, -0.029056218, -0.005977695, -0.019466255, 0.018800704, 0.00019142017, 0.0035476363, -0.018215593, 0.015810853, 0.020036293, -0.035016634, -0.055879157, 0.05927837, 0.01502106, 0.045004237, 0.04786549, -0.031188766, 0.04327248, -0.0005422456, -0.01480191, -0.036583357, -0.013986934, -0.049074963, -0.04372257, 0.02633856, 0.0070716967, 0.04520356, 0.05809529, 0.024984017, 0.00902528, -0.06657833, -0.011993164, -0.012344124, -0.04117637, -0.036088265, -0.03025966, 0.0054321005, 0.01935889, 0.013840121, -0.020146674, -0.049102157, 0.07399401, 0.0014087267, -0.024386583, 0.0045989067, -0.0032993525, -0.016398106, 0.009162449, -0.014267167, 0.046185173, 0.03370256, 0.03389785, -0.015209666, 0.035107184, -0.05511615, -0.010881346, -0.012873018, 0.031832278, -0.01909567, 0.017200692, 0.006874516, -0.01132393, 0.001058772, 0.04852348, -0.033788543, 0.024938073, -0.0027299812, -0.032511156, -0.012480221, 0.034077883, -0.058798816, 0.0674442, 1.9289368e-05, -0.011109069, 0.031605627, -0.062493265, 0.06113283, 0.019664438, 0.0072343163, 0.035487078, -0.01844385, 0.025594847, 0.011788483, -0.025978493, -0.012930306, 0.014605267, -0.034710146, 0.0027369468, 0.016251292, -0.011871534, 0.031655595, 0.02039154, 0.056961503, 0.010786507, -0.055681977, -0.06187165, 0.03987702, 0.008575195, -0.028222488, -0.030211436, 0.004145071, -0.04682816, -0.0109473355, 0.017158294, -0.017904954, -0.0073066517, -0.060049944, -0.00425277, 0.013354136, 0.038025774, -0.011517093, 0.051043153, 0.0019117907, -0.022715373, -0.017722642, 0.022475328, 0.02518334, 0.04075736, 0.029631885, 0.027780974, 0.014056591, 0.018527705, 0.0011723649, 0.004940757, -0.027806161, 0.03615256, 0.05562732, 0.0002207561, -0.0077772317, 0.0055703404, -0.009013761, -0.0048153764, -0.018637815, 0.004670639, -0.0015608313, 0.04164789, 0.017607441, -0.052312765, 0.0023040078, 0.0029185885], [-0.031818904, -0.09430841, -0.032103773, -0.052431367, -0.01440225, 0.018498268, 0.015126923, -0.01712345, 0.041442633, 0.018388195, -0.012825427, 0.023977928, -0.07767625, -0.030426433, 0.009943898, 0.06261012, -0.0061036367, -0.036343448, 0.036803357, 0.043011613, -0.041478913, -0.0051511554, -0.0036498385, 0.02992571, -0.016251685, 0.055967458, 0.004472572, -0.004015607, 0.02047077, -0.029152373, -0.0055565774, -0.05071187, 0.0062550795, 0.0038518445, 0.015818255, 0.034499895, 0.013639335, 0.009688815, -0.03538343, -0.05380619, -0.060476314, 0.0064308546, -0.024156032, 0.012579463, -0.011522683, 0.053651255, 0.0338638, 0.023138035, -0.030827014, -0.036437586, 0.0074872193, -0.003779279, -0.02441994, 0.022041954, -0.027179135, 0.045733787, 0.042990036, 0.014344271, 0.025583189, -0.01171047, -0.015997706, -0.020712981, -0.047712665, 0.0036361096, 0.03888973, 0.029737063, -0.0053561036, 0.0024392728, -0.00096921256, -0.026851121, -0.028259281, 0.021807589, 0.0053992504, -0.021133173, 0.045829892, -0.005083248, -0.0717357, 0.033101544, -0.004895216, -0.040981743, -0.009127538, 0.00908243, 0.00653578, -0.047443178, -0.05039954, 0.019057706, -0.030186184, 0.01565253, 0.03902248, -0.00023166962, -0.046916407, 0.0063034976, 0.025558675, -0.020452628, -0.0035102237, 0.022108883, 0.0047421176, 0.050178904, 0.045935795, 0.016418144, 0.035829607, -0.063518174, -0.021927468, -0.014100222, 0.010927451, 0.01875917, 0.02622549, -0.037826132, -0.0050903573, -0.00057905144, -0.004371569, -0.0077983183, -0.016581263, -0.056793135, -0.011213791, -0.0038739082, 0.05773256, -0.028859416, -0.04327515, -0.021149844, -0.0047638137, 0.027941562, 0.011975726, 0.016494142, -0.024245145, -0.007171952, 0.037702575, 0.0031301142, -0.057837486, -0.009444889, 0.036396403, 0.01273374, 0.03290836, -0.040489964, -0.06830209, 0.015626054, -0.0012576351, 0.05369832, -0.03999819, 0.04633196, -0.028653488, 0.0044894875, 0.023054192, 0.0022701172, 0.02491711, -0.028999938, 0.0049852943, -0.041946173, -0.01685942, -0.0046914937, 0.004304397, 0.019358264, 0.01058105, 0.0029840027, -0.0039577507, -0.062243376, 0.02232339, 0.023226168, -0.03523045, 0.03696957, -0.012211564, -0.005497067, 0.023175787, 0.014116647, -0.027482636, -0.02265018, 0.013752351, -0.012861709, -0.0073516495, 0.02870546, 0.053268816, 0.0020063326, 0.025106613, 0.032782845, -0.03342073, -0.025746463, 0.0059042657, -0.015974171, 0.027865564, 0.03625029, -0.0023171864, 0.03230628, -0.016154114, -0.014090171, -0.020828692, 0.03139013, -0.027643457, -0.02965273, -0.0027388497, 0.028604457, 0.059754584, -0.019983405, 0.028088653, -0.010779379, -0.018479636, 0.034214538, -0.011699683, 0.0070559946, 0.026430683, 0.04991512, 0.026811898, -0.00836266, 0.028192108, -0.025137993, -0.020639434, -0.054569103, 0.032081217, -0.015158793, 0.041701514, -0.037600104, 0.014059527, 0.04129799, 0.025291948, 0.059829112, 0.038547862, 0.029975353, 0.032135643, -0.06724646, 0.019926284, 0.04914289, -0.026978847, 0.024874697, 0.014160775, -0.02443097, -0.02840245, 0.0018739499, -0.006815254, 0.021409705, 0.0142272115, -0.011864427, 0.0594984, 0.0006628938, -0.038361546, -0.061031338, -0.008335939, 0.006280269, -0.038489025, 0.03253671, -0.05635382, 0.040493507, -0.011577107, -0.0036721474, 0.03128251, -0.048140213, -0.021744065, 0.006675456, -0.06498713, -4.5537177e-05, -0.018410012, 0.012502805, 0.051358093, -0.008029252, -0.019378858, -0.0038449804, -0.027329661, 0.008558293, -0.006048416, -0.0013507933, 0.0039704987, 0.03743928, 0.016204124, -0.047922514, -0.006522542, -0.04453989, 0.056891195, 0.00022701171, 0.02035947, -0.026507294, 0.024839887, -0.027241405, -0.021631936, -0.10719268, 0.035360873, 0.04020902, -0.034003217, 0.034064014, 0.005494615, 0.026974924, 0.052804, 0.036535647, -0.07778608, -0.026873676, -0.00448532, 0.00909861, 0.00688831, -0.009372078, 0.004010704, -0.063480906, -0.008282986, -0.05510844, -0.016341902, 0.0050116023, 0.010828409, 0.049111385, 0.044555582, -0.020933434, 0.05107028, 0.0013159049, -0.060235083, -0.04068756, 0.035682574, -0.004408832, -0.012525359, -0.009458739, -0.018512486, -0.030799067, -0.06351425, 0.04399026, 0.031100115, -0.010573206, -0.023421431, -0.017219795, -0.053894445, 0.018942485, 0.019931922, -0.04387651, 0.03213932, 0.100422524, -0.007081, -0.014264475, -0.03197776, -0.031613953, 0.019535754, -0.060599625, 0.014915601, 0.06339461, 0.0452023, 0.006333283, -0.044657078, -0.002020919, 0.03484311, 0.025812777, -0.022138301, 0.010534594, 0.0215617, 0.011442764, 0.014360574, -0.010121878, 0.03032445, 0.033622738, 0.01766965, -0.080614164, -0.013736905, -0.027162956, 0.026217647, -0.06488514, -0.025076214, -0.05370813, 0.0062179393, 0.009737968, 0.028233785, -0.036366984, 0.027463024, 0.02950515, -0.03454108, -0.012955112, -0.0023880356, -0.0023304247, -0.002088704, -0.002285807, 0.012391015, -0.024126492, -0.04256249, 0.05653229, 0.03287723, -0.024863422, 0.06434189, 0.006738767, 0.04491988, -0.026243633, 0.04706399, 0.031999826, -0.008006086, 0.002440376, 0.003607672, 0.04513169, -0.03624931, -0.01162344, 0.043456808, 0.009414857, 0.022419091, -0.0068701073, 0.042333513, 0.014687609, 0.031542372, 0.032268025, 0.03620322, 0.05006601, -0.020812511, 0.040676773, 0.009589407, -0.023138035, 0.037926156, 0.02456078, 0.002958507, -0.0037625628, 0.036098048, 0.033741884, 0.013638354, 0.010590489, -0.011500619, 0.01725289, -0.006195998, -0.0030626357, -0.009057179, -0.034613647, -0.042385977, 0.014699376, -0.0013821728, 0.009933601, 0.027783684, -0.0030016538, -0.0064313444, 0.010372916, 0.027232826, -0.03237589, -0.032001294, 0.03019245, 0.03717893, -0.009584012, 0.023633735, 0.03589629, -0.0603709, 0.011904632, 0.051844966, -0.0017310255, -0.0055724513, -0.022863954, -0.04055922, 0.029630177, 0.010858809, 0.025941113, -0.00671131, 0.09058895, 0.027671894, -0.013300043, 0.0028766259, 0.0128014, -0.0606136, -0.03932549, -0.013686404, -0.036196355, 0.012542888, 0.030310722, -0.020379081, 0.022180466, -0.03474407, 0.032954454, 0.027932737, -0.011515819, 0.009368278, -0.022503579, -0.025941113, -0.049030606, -0.03484311, 0.03996583, 0.050077412, -0.055610515, -0.02340427, -0.03996093, -0.038035985, -0.028412746, 0.018561028, -0.0031211046, 0.011895316, 0.032783825, 0.046526127, -0.050070055, 0.0087229125, 0.016970413, -0.02133665, -0.0478783, 0.00031967956, -0.041235723, -0.018039586, 0.0020396733, 0.045265056, 0.012600866, 0.004456392, 0.014098261, 0.037893794, 0.012482212, 0.04233719, 0.028061686, 0.027030574, 0.021341063, -0.034239054, -0.012313654, -0.0074913865, -0.008722851, 0.03234255, 0.008642135, 0.018382065, 0.043754913, -0.058617074, -0.002362785, 0.0072124023, 0.07347531, -0.034594037, -0.009701932, 0.06378686, 0.029364431, -0.08333046, 0.03328786, 0.011733515, -0.07267513, 0.023175297, 0.042974345, -0.021927468, -0.004094056, -0.02537383, -0.052122477, -0.010624933, -0.043987323, 0.03274068, 0.04455117, -0.017923567, -0.052574538, -0.03802912, -0.015495633, -0.018638495, -0.011734985, -0.031002054, 0.033007406, 0.01642268, -0.037609786, 0.045523938, -0.04443031, 0.009333343, -0.010181742, -0.011445705, -0.068662465, -0.043756876, -0.019551935, 0.0009411425, -0.012840136, 0.046543773, 0.023054192, 0.005069152, -0.022745298, -0.043165565, 0.0068378085, 0.005209502, 0.0016531894, -0.030207757, -0.014274158, -0.017078832, 0.019088106, 0.0073593715, -0.021413626, -0.0075781704, -0.0065936362, -0.07362436, -0.054314144, 0.032796573, -0.0035684477, -0.014591018, 0.028702518, 0.054506343, 0.0148640275, -0.01870383, -0.014815946, 0.026594201, 0.012986247, 0.017955009, 0.031192537, -0.018396284, -0.07532891, -0.065716706, 0.044689436, -0.035067674, -0.034752402, -0.03307409, -0.04725766, -0.018673552, -0.019594101, 0.022835024, -0.018766956, 0.011266253, -0.009151808, 0.0047902903, -0.0017687791, 0.022655755, -0.015802564, 0.021470504, 0.048373625, -0.0033073595, -0.016286988, 0.034584228, -0.026056826, 0.025560513, -0.017374732, 0.05318056, 0.0063725077, -0.050929073, -0.010016953, -0.055440504, -0.027109023, 0.0011154463, -0.03756529, -0.0098948665, -0.056151815, 0.007874453, -0.023428785, 0.016576758, -0.02588816, -0.017738294, 0.04096115, 0.010836745, 0.001140452, -0.016261246, -0.00021548952, -0.01696361, -0.0069020386, -0.004868984, 0.00070898264, -0.03043244, 0.025080873, -0.03671657, 0.013030374, 0.015640764, -0.0006039345, -0.017487258, 0.01846934, -0.030665703, 0.0043786783, -0.00073840097, 0.06587949, 0.010431753, 0.00325171, 0.02317971, 0.0010971212, 0.059581995, -0.014621968, -0.051266402, 0.08647038, -0.0023446437, -0.0076100403, -0.026395781, -0.004238206, 0.027415955, 0.036818065, -0.0049413047, 0.01090833, 0.029015332, -0.030540183, 0.014215321, 0.0098622, -0.03378356, 0.013340248, 0.055384975, -0.007471621, 0.004900119, -0.04715175, 0.037288267, -0.0158261, 0.0014242165, -0.0125871375, -0.029759372, -0.03547953, 0.03275735, -0.056047868, 0.033905648, 0.033615384, 0.008751963, -0.0036706766, 0.020922342, -0.00502956, -0.026592242, -0.006316981, 0.044494294, 0.01187129, 0.02191901, -0.027319854, 0.017726036, -0.012443968, -0.015737845, -0.012681276, 0.0038557672, 0.04581812, -0.039946217, -0.0033184527, 0.012760706, -0.0062874397, 0.040777776, 0.010052745, -0.0015406642, 0.030934146, -0.050548594, -0.063123964, -0.019765219, 0.018198201, -0.009090657, -0.001667531, -0.02061541, -0.0047110138, 0.03136684, 0.010342761, 0.05369048, 0.019273747, 0.038996004, 0.054041047, 0.012948815, 0.008469547, -0.005624546, -0.030959396, 0.041498035, -0.015108291, -0.016446827, -0.096174516, 0.0013842566, 0.014067861, -0.0023233765, 0.041934896, 0.028488744, 0.0016444866, 0.029153598, -0.022825586, 0.026414076, 0.011434918, 0.016991066, 0.0011643544, -0.06388885, -0.012188518, 0.030230312, -0.038949914, -0.032993678, -0.03544913, -0.010593553, 0.0028995322, -0.006345051, -0.03370364, 0.0029364433, 0.010382722, 0.028414708, -0.004451979, -0.031310946, -0.04281941, 0.013371627, -0.019709324, 0.01989662, -0.0117418505, 0.013052193, -0.015743729, 0.009509426, -0.05475542, -0.038413763, -0.022597715, 0.022388358, -0.010229746, 0.0164331, 0.06470201, 0.026277464, 0.009680604, -0.019610036, -0.07717418, 0.060703814, -0.027466396, 0.030954003, 0.018379614, 0.0052859285, -0.08096915, -0.016532876, 0.008929454, 0.0037890852, 0.0053396784, -0.020854678, 0.02621789, -0.0026868773, 0.0036243426, 0.0074327947, -0.0051987157, -0.012026717, -0.044107933, 0.01356726, 0.0006913316, -0.06790531, -0.03540206, 0.0010401843, -0.04301774, -0.05547323, -0.010744844, 0.006587752, -0.02324296, -0.051164422, 0.06444289, -0.024627093, -0.01846787, 0.02931442, -0.047071345, 0.015607914, -0.027442737, -0.056151815, 0.014611121, -0.034560695, 0.04798356, 0.02431722, 0.032644577, -0.03068924, -0.016996952, 0.013706506, 0.002133812, 0.013210071, 0.025746953, 0.022483967, -0.0064033973, -0.005643913, 0.024716329, -0.04229558, -0.07123951, -0.023591567, 0.022501128, -0.026941337, -0.01758826, 0.025364514, -0.0065617664, -0.0048795263, 0.013763382, 0.030806912, -0.0066588465, 0.0017597085, 0.022399142, 0.0059748697, -0.006978036, -0.021683296, 0.018338183, 0.00089333765, 0.0025956805, -0.03940786, 0.0051604714, 0.03330159, -0.0020500922, 0.004980529, 0.059634946, 0.0018612018, -0.0073400657, -0.013053908, -0.0042264382, 0.037988916, -0.0972375, -0.021010932, 0.05055252, 0.008263619, 0.016904773, 0.009677662, -0.03548247, -0.0009796316, -0.028716246, 0.011110336, -0.057322666, -0.037946258, -0.020285923, -0.02503797, 0.017072458, 0.0051207566, 0.0132597145, -0.006046945, 0.05867199, 0.03005184, 0.014332137, 0.013011007, -0.028220363, 0.04489733, 0.002913889, 0.013008924, 0.042584065, -0.010498188, -0.012269665, 0.03317705, -0.025274787, 0.012548158, 0.037278954, -0.011628589, 0.025369419, 0.041597567, -0.0697529, -0.024727605, -0.034449887, 0.00647204, 0.00865096, -0.028490704, 0.021955905, 0.028059727, 0.00024123059, -0.016039629, -0.019102324, -0.031441122, -0.002223538, 0.016412964, 0.0041550375, -0.032895617, -0.03686409, 0.016386028, 0.039259788, -0.019192541, -0.06279252, 0.06886281, 0.008012827, 0.05568357, 0.05254904, -0.040389452, 0.045679852, 0.030770628, -0.014944529, 4.22889e-06, -0.0028355587, -0.03522261, -0.06749456, 0.012933723, -0.0062249256, 0.0542455, 0.069815665, 0.018679773, 0.024297487, -0.06677969, -0.01136364, -0.018336467, -0.023341512, -0.03745583, -0.013110294, 0.0038018334, 0.0140070645, 0.014533652, 0.0055776304, -0.056816667, 0.0777194, 0.0064871167, 0.0049665556, 0.0025187023, -0.009509977, -0.010571979, 0.01549024, -0.0113182245, 0.04579165, 0.025265472, 0.0311717, -0.019749528, -0.0020851186, -0.058744553, -0.0053541423, -0.027501145, 0.0064499765, -0.018332176, 0.013307949, 0.0036878372, 0.0103341965, -0.0024211314, 0.06794858, -0.022071619, 0.030270515, -0.006756418, -0.033836756, -0.00897015, 0.041814283, -0.05044661, 0.027941562, -0.016773371, -0.010834232, 0.036416013, -0.043488186, 0.06977889, 0.029808648, 0.004354163, 0.02481243, -0.021864219, 0.009300616, 0.05094133, -0.03358008, -0.0030773447, 0.002571165, -0.014580722, 0.010775456, -0.009061102, -0.011210603, 0.02832449, 0.0023622946, 0.05128197, -0.024228966, -0.050693728, -0.040365428, 0.057509962, -0.020659538, -0.017945202, -0.00018815495, -0.009095913, -0.030459775, -0.021022364, -0.011920321, 0.001461112, -0.02313546, -0.054449473, -0.030802988, -0.0012630285, 0.027076662, 0.0032173884, 0.050445266, 0.0046834038, -0.04446292, -0.008259696, 0.007489425, 0.0043649497, 0.046922293, 0.021193603, 0.027631689, 0.026711876, 0.02088753, -0.0013603542, 0.01248638, -0.03420179, 0.014680254, 0.043213613, 0.018231511, -0.005240269, 0.01587513, 0.006169031, -0.0018435508, -0.0054768417, -0.0014237262, -0.011934049, 0.03927548, 0.025336321, -0.047606755, -0.004046251, -0.0057022595], [-0.01860901, -0.10150281, -0.020243023, -0.04379841, -0.0014951614, 0.049643133, 0.015343893, -0.0292069, 0.04150602, 0.059049148, 0.014091185, 0.031000683, -0.07439304, -0.011171137, -0.040656302, 0.023572067, -0.033692554, -0.040873658, 0.015269849, 0.036712844, -0.026936904, -0.013490769, -0.031227594, 0.0037583462, 0.00066520454, 0.068407394, 0.00788572, 0.015563937, 0.014626738, 0.013123757, -0.022550078, -0.044826668, 0.0032472014, 0.007288588, 0.016897088, -0.0057312693, 0.029273778, 0.0063908007, -0.018173102, -0.042398732, -0.05486624, -0.014035578, -0.03423236, 0.03196266, 0.00837895, 0.04278806, 0.01206788, 0.026167203, -0.027210092, -0.04392679, 0.023459211, -0.0062495787, -0.043464012, 0.001992628, -0.022639647, 0.029569956, 0.03135299, 0.03523793, 0.02662938, -0.011058279, 0.015580507, 0.03179009, -0.060250573, -0.0015673959, 0.0049000615, 0.040378038, 0.006050361, -0.020944988, 0.011641677, -0.02194578, -0.018532576, 0.025652772, -0.0164665, -0.023587294, 0.05671317, 0.025151182, -0.071759686, 0.03597061, -0.024004688, -0.042969592, -0.021008281, 0.013914361, 0.030041987, -0.050382975, -0.059111245, -0.0092494935, 0.020378308, 0.024038726, 0.028099818, 0.032020584, -0.05362749, 0.01168676, 0.021798586, 0.017417582, -0.029214961, 0.015520643, -0.022575157, 0.034946527, 0.010086746, 0.033144385, 0.044405688, -0.052946463, -0.04079543, -0.012432876, -0.019650405, -0.012252114, 0.023988567, -0.043209035, -0.0268339, -0.008671992, 0.008579885, 0.00565603, -0.026039714, -0.046604924, 0.015603646, -0.01607956, 0.028651569, -0.014698394, -0.03809222, -0.050002605, -0.0102013955, 0.016442018, 0.008267884, 0.008654228, -0.011111424, -0.009248971, -0.00604954, 0.0103671, -0.06653957, 0.0071357223, 0.043588217, 0.016968371, 0.06990739, -0.026996095, -0.027054837, -0.01860901, -0.019123139, 0.06037, -0.023180647, 0.03143631, -0.029568164, -0.005340745, 0.02426265, 0.0074510076, 0.022471255, -0.012604253, 0.016309455, -0.06253879, -0.02201027, 0.00023288133, 0.0144876065, 0.010197814, 0.020199766, 0.03583536, 0.015709935, -0.03732371, 0.0035135222, 0.007830783, -0.035703693, 0.029618323, -0.019969275, -0.010045843, 0.006822826, 0.047940113, -0.017569402, -0.045595326, -0.0046432954, 0.015843095, -0.020851836, 0.01750133, 0.05656508, -0.012168944, 0.020993952, 0.04584896, -0.044812337, -0.023567589, 0.010709555, -0.022078343, 0.05406668, 0.033055414, 0.0055425754, -0.0038971794, 0.0042730733, 0.005694956, -0.02578653, 0.018594677, -0.01603358, -0.06024938, -0.00884949, 0.006828498, 0.01068985, -0.018179372, 0.014679883, -0.030657033, -0.0072778394, 0.036278132, -0.052149888, 0.013544735, 0.052704323, 0.028275376, 0.027382664, 0.016873745, 0.010834355, -0.016671242, -0.00665951, -0.048826255, 0.048059538, -0.012198204, 0.04977211, -0.036299627, 0.0013453375, 0.030185597, 0.02892983, 0.052600127, 0.024060821, 0.04089336, 0.025307631, -0.03650743, 0.045002222, 0.074732214, -0.059020486, 0.0028124899, 0.03929066, -0.0168203, -0.017744362, 0.00020839891, -0.015133702, 0.013415158, 0.021225639, 0.022439308, 0.06419881, 0.003277058, -0.02087751, -0.046780184, -0.0049257386, -0.020737184, -0.060998186, 0.049870044, -0.043599635, 0.049609687, -0.02572204, 0.038542453, 0.015807267, -0.00022362577, -0.00423008, -0.003409024, -0.040797222, 0.032550834, -0.013791351, 6.449021e-05, 0.064516485, -0.022287337, -0.034009032, 0.0016278552, -0.0050290423, -0.007332291, 0.028467352, 0.0009267482, 0.014061254, 0.038437955, 0.0035833865, -0.046595372, 0.0076761264, -0.061726686, 0.06642491, 0.027623307, 0.018196391, -0.008232653, 0.03755002, -0.016793728, -0.032936882, -0.039928325, 0.03479605, 0.013734026, -0.020355022, 0.009544551, -0.008271467, 0.025892818, 0.05181848, 0.0318713, -0.052422777, -0.0087061785, 0.038316738, 0.0037320724, 0.019202558, 0.0032782522, -0.021231608, -0.058394693, 0.001578816, -0.053168, -0.017376529, 0.004445346, 0.030617923, 0.04814672, 0.0421766, -0.049170204, 0.06326728, -0.026832705, -0.08457294, 0.014309661, 0.023153178, 0.02393781, 0.0021353425, 0.02068822, -0.018212514, -0.03251262, -0.06121315, 0.030407134, 0.0043674204, 0.025616944, -0.020724049, -0.009957766, -0.04245964, 0.010440547, -0.015602068, -0.016612798, 0.027531348, 0.08782372, -0.033195738, -0.007848697, -0.04388917, -0.037480757, 0.01714723, -0.07706341, 0.017524915, 0.060931306, 0.004038998, 0.0066663767, -0.044651113, -0.05017458, 0.04137047, 0.028031746, -0.014223674, 0.0065308283, 0.03910973, 0.019859402, -0.019442603, 0.0076265647, 0.031163102, 0.056874394, 0.01361042, -0.05408101, -0.021713495, -0.013987807, 0.026841661, -0.04490429, -0.01108754, -0.0644711, 0.02415875, -0.0059874384, 0.023183037, -0.008962945, 0.0177157, 0.037175022, -0.010671935, -0.0056345337, -0.00092435966, -0.018761875, 0.013012691, 0.0018893243, -0.028381664, -0.004792578, -0.034968026, 0.04434777, 0.018663945, -0.028167741, 0.06826886, 0.008701928, 0.048021324, -0.037093814, 0.03977374, 0.018652001, -0.027268013, 0.019415136, 0.00012666653, 0.039593406, -0.0364716, -0.002295971, 0.026664164, 0.0036400394, 0.00048487083, -0.022212101, 0.043865282, 0.013230046, 0.01583354, 0.008914876, 0.038113713, 0.020926477, -0.01273189, 0.03823075, -0.0057747103, 0.012704572, 0.0258343, 0.016606228, 0.025693377, -0.005407026, 0.052862864, 0.01773839, 0.017147828, -0.018045317, -0.022244345, 0.003121804, 0.010170942, -0.024121204, -0.04088381, -0.047315214, -0.022703242, 0.0007356661, -0.0147548225, 0.0001964563, 0.017149618, -0.0076576155, -0.008449897, 0.026243933, 0.0025246723, -0.041913863, -0.018388666, 0.046098556, -0.009848491, 0.027525377, 0.033570737, 0.05615306, -0.06920994, 0.055800192, -0.005436286, -0.0013327976, -0.024269218, -0.02319259, -0.06794671, 0.03959908, 0.01897326, 0.02355087, -0.024336098, 0.08439619, 0.056770496, 0.0031098612, -0.022896115, -0.051998217, -0.038973585, -0.016299602, -0.027948147, -0.04251099, -0.014866486, 0.008376561, -0.015155797, -0.00069207547, -0.018732017, -0.0024804845, 0.041128032, -0.01021095, -0.0016898823, -0.022545896, -0.0017237696, -0.02565576, -0.032307204, 0.039502643, 0.0575711, -0.04232409, -0.0134014245, -0.0581639, -0.017851846, 0.005183699, 0.036663283, -0.015184458, 0.01054833, 0.0020451755, 0.019472461, -0.03438194, 0.030767204, 0.016878521, 0.006362362, -0.03728161, -0.010917954, -0.058168977, -0.03626738, -0.0060028145, 0.04048791, 0.0063487026, 0.010464134, 0.0075635673, 0.023513269, 0.022217773, 0.01871291, 0.02380465, 0.035105065, 0.007883182, -0.027003184, -0.030028554, 0.0008900246, -0.003980479, 0.023047786, 0.018248938, -0.00014689437, 0.072362795, -0.042243473, -0.0064460356, 0.02456241, 0.023182439, -0.03428491, 0.014463721, 0.05462082, 0.045423802, -0.04884596, 0.015803684, 0.005269686, -0.09043916, 0.03491309, 0.05084695, -0.014424907, 0.012004136, -0.013414262, -0.033334274, 0.0007087952, -0.046832137, 0.04907944, 0.03951339, -0.013280206, -0.014154406, -0.022600237, -0.046354726, -0.023161242, -0.0019260478, -0.025961041, 0.031206096, -0.016491879, -0.022724438, 0.03188444, -0.049131837, -0.0016576372, 0.0018057259, -0.031258643, -0.05519884, -0.02792665, 0.00064520066, -0.012491396, -0.044646632, 0.047603328, 0.018414492, -0.013791351, 0.0039041955, -0.019084325, -0.0005349179, 0.024445374, 0.021757087, -0.021611385, -0.028267013, -0.027256368, 0.013915554, 0.009346602, -0.0018714103, 0.012558872, 0.0077089686, -0.071856424, -0.05192179, 0.07432138, -0.0021589291, -0.022158956, 0.03569712, 0.034161, 0.00332453, -0.0409689, -0.008085231, 0.017452365, 0.034922644, 0.027267417, 0.05372751, 0.0016534573, -0.07234608, -0.08866209, 0.023194084, -0.021140248, -0.022464985, -0.048893135, -0.0174034, 0.010276634, -0.023171093, 0.028838918, -0.041388385, -0.017972616, 0.009974486, 0.00025736372, -0.003063285, -0.0018188627, -0.034074716, 0.034357905, 0.018682456, -0.00052446814, -0.008939059, 0.02606091, 0.0015743375, 0.033693746, -0.052188404, 0.035707273, 0.028889226, -0.04146004, -0.023544302, -0.032688178, 0.012748759, -0.009557091, -0.039783295, -0.024007078, -0.058944203, -0.020509081, -0.0064902236, -0.00586622, -0.012670597, -0.020936629, 0.0058136727, 0.017923502, 0.040996663, -0.00024721248, 0.009279425, -0.015778605, -0.0050708414, 0.0010616999, 0.0033642394, -0.0015501536, 0.009035646, -0.016723266, 0.0071249735, 0.017409371, 0.0069250097, 0.002746805, 0.020997535, -0.03616587, 0.016915543, 0.013587206, 0.06291976, -0.014062448, 0.002286193, 0.03163185, 0.0056751384, 0.06680708, -0.00537299, -0.02965833, 0.1029431, -0.014564635, -0.045140762, -0.0101654185, -0.0103076855, 0.013745969, 0.03300227, 0.0044071297, -0.017548205, 0.04165948, 0.025225526, 0.014272116, -0.017710922, -0.029864939, 0.0035224792, 0.05232903, 0.001538211, 0.038524542, -0.047531676, 0.017587166, -0.013213328, -0.011114708, 0.00034902344, -0.034583323, -0.025036534, -0.00085628673, -0.039110925, 0.0331932, 0.033862136, 0.018957734, -0.0065278425, 0.0350567, -0.02897372, -0.022020422, -0.02310496, 0.041603353, 0.0015752331, 0.036111534, -0.031665888, -0.0005648865, -0.018453754, -0.044087417, -0.016587121, 0.017553281, 0.04339952, -0.026736565, -0.023811517, -0.0009972097, -0.0012172527, 0.055241834, 0.043908276, 0.009906412, 0.040411532, -0.03598703, -0.057081, 0.002522881, 0.010772254, 0.002520567, -0.01829417, 0.0008437469, -0.019028792, 0.037109338, 0.018162355, 0.040463053, 0.04017203, 0.032309595, 0.038278524, 0.013198997, 0.018853832, -0.0052249013, -0.025856992, 0.005080582, -0.021840684, -0.035288088, -0.059015706, 0.005576015, 0.01320258, -0.009076401, 0.050741855, 0.043903504, 0.016350657, 0.0153235905, -0.039810166, 0.0007998578, -0.015136987, -0.0077358396, 0.0029593841, -0.05675258, -0.016498744, 0.032933, 0.012984775, -0.0328709, -0.040466562, -0.021035751, 0.020183047, -0.019031778, -0.034982357, 0.0069995765, 0.026949145, 0.038201492, 0.009604265, -0.018820617, -0.04899554, 0.019213306, 0.016865682, 0.0042533684, -0.050310723, 0.021259079, -0.015168933, 0.0015119371, -0.057717543, -0.019798793, -0.019831039, 0.015248352, -0.001674357, 0.020607695, 0.05561922, 0.03158139, -0.0013447403, -0.012077583, -0.033073924, 0.020373533, -0.051735777, 0.0034893383, 0.0061205984, 0.014952174, -0.08276721, 0.01898759, 9.0764e-05, -0.019010281, 0.030511035, -0.025706962, 0.026240947, 0.009369591, 0.012872963, -0.007810481, 0.0055395896, -0.009445427, -0.03129686, 0.009593114, -0.018463308, -0.06818526, -0.029958092, -0.023666264, -0.050043207, -0.05228753, -0.011653023, 0.028088175, -0.028271792, -0.05640505, 0.08173537, -0.042230338, 0.007857281, 0.021673637, -0.06777682, 0.008247581, -0.0088543305, -0.02541989, 0.022148207, -0.049688514, 0.05483101, -0.0063457177, 0.053952035, -0.028812196, -0.012884905, -0.025454523, 0.008074413, 0.013709786, 0.0074754898, 0.0013417546, 0.0072420114, 0.0154657075, 0.021017538, -0.047856513, -0.09184361, -0.009957766, -0.0058686095, 0.011335349, 0.030780341, 0.03412249, -0.012552303, 0.0037714832, 0.014153092, -0.00061683694, 0.014579565, 0.039539665, 0.027606586, -0.0032006253, 0.01042114, -0.05118612, -0.008986233, 0.0017943804, -0.006241816, 0.008837547, -0.012274936, 0.04275649, 0.02172066, 0.018819198, 0.05791833, 0.00078463095, -0.006403938, -0.03484203, 0.0025722936, 0.04863995, -0.058374986, -0.02736057, 0.07928474, 0.0031568853, 0.022864616, -0.0012695018, 0.0027491937, 0.0019635179, -0.055006567, -0.015422714, -0.05671317, -0.047487486, -0.015697394, 0.009293905, 0.011550913, 0.021543313, 0.0045352145, -0.0051454827, 0.045845374, 0.03067644, 0.032482762, 0.039277524, -0.017384889, 0.04936151, -0.0042420225, -0.009828785, 0.024069179, 0.014229197, -0.013097485, 0.00945513, -0.00069267256, 0.010066444, 0.019496346, -0.018474653, -0.004956192, 0.03612049, -0.07533889, 0.0070569008, -0.0220246, 0.005582359, 0.001466555, -0.01655607, 0.032911506, 0.0029117628, 0.018491074, -0.032245107, -0.0327037, -0.025212687, 0.00011427605, 0.0150035275, -0.0018021432, -0.0037356552, -0.0002085482, 0.0013396646, 0.0062459963, -0.015517062, -0.032236744, 0.06409849, -0.0032279626, 0.03236513, 0.021074826, -0.04226169, 0.07127601, 0.036660593, -0.0071560247, -0.013611614, -0.0177157, -0.028995104, -0.0748803, 0.068240196, -0.01776586, 0.03198356, 0.06267791, 0.019338107, 0.005795013, -0.07795553, -0.022570381, -0.006625772, -0.0440492, -0.06163831, -0.018387472, 0.014816029, 0.007822424, 0.03553172, 0.00065565045, -0.027036794, 0.036114518, 0.015595882, -0.0011130532, 0.0017734808, -0.014481635, -0.025056684, 0.00068132713, -0.023469659, 0.08711821, 0.032172255, 0.022630094, -0.06186761, 0.00566439, -0.035003256, 0.0103665395, -0.0085813785, 0.034428217, -0.0308723, 0.05690485, 0.0050308337, 0.007646867, 0.023147209, 0.040911276, -0.03005005, 0.032169268, -0.002899671, -0.016894046, 0.0095260395, 0.026068972, -0.025117146, 0.055807915, 0.022373924, -0.0110899275, 0.046523713, 0.009437067, 0.070344485, 0.01474079, 0.030294277, 0.021953542, 0.003375585, 0.010943033, 0.04124567, -0.019582931, 0.0082619125, -0.002405246, -0.004873788, 0.013429489, -0.0021680356, -0.036244694, 0.041479148, 0.016010292, 0.044937737, -0.027102608, -0.06085368, -0.037461646, 0.052431732, -0.0073005306, -0.003179427, -0.025763242, 0.009289501, -0.018341493, -0.0019155982, 0.022140445, 0.00085531635, -0.019193003, -0.06583973, 0.0062746587, -0.024723226, 0.029468443, -0.008952794, 0.028009053, -0.012828774, -0.046017047, -0.022136452, 0.021014255, 0.002106083, 0.06011443, 0.024874412, 0.046741072, 0.018580757, 0.02825149, -0.016109416, 0.0024930243, -0.0002687092, 0.03590761, 0.049578045, 0.0037864114, -0.0038512002, -0.0030382057, 0.022686223, -0.011546733, 0.0033104974, -0.011380731, -0.0064269276, 0.032511424, 0.021232283, -0.04564235, 0.00551451, 0.02135462], [-0.0396201, -0.0802494, -0.04616485, -0.020074245, -0.01834719, 0.010305358, 0.028805606, -0.04357365, 0.041823808, 0.020609792, -0.03695569, 0.019747805, -0.08893225, -0.021106536, -0.01790126, 0.039808538, -0.029348852, -0.0047783502, 0.042084962, 0.0285888, -0.010791016, -0.019447234, -0.005674522, 0.026506048, -0.020332934, 0.075220525, -0.027800107, -0.015800953, 0.01505938, -0.0015816968, -0.017983794, -0.066037074, 0.022615554, -0.01062102, 0.0047198376, 0.02568348, 0.004765416, 0.004232948, -0.02371806, -0.05436097, -0.047973208, -0.0007908484, -0.019471562, 0.03035385, 0.025243092, 0.007367547, 0.032984044, 0.021616522, -0.016467385, -0.021025235, 0.037684787, -0.0011936637, -0.0055975313, 0.010068227, -0.04466692, 0.033121705, 0.020978115, 0.015296203, 0.04330018, -0.011603113, 0.028330112, -0.0034969172, -0.037009735, 0.011932017, 0.0009825552, 0.009852961, 0.014185997, 0.006595331, 0.032835606, -0.028546916, -0.0011302234, 0.008901356, -0.025269732, -0.038702298, 0.069239885, 0.0015841605, -0.060648955, 0.016891757, -0.020020043, -0.038473174, -0.022202885, 0.017192021, 0.0035027685, -0.055679668, -0.052077737, -0.00751306, -0.012455862, -0.003959121, 0.039946467, 0.013818906, -0.055866912, 0.00033875904, 0.015516397, 0.006724983, 0.017779307, 0.0075980574, 0.010069767, 0.049487155, 0.035296228, 0.050003298, 0.036932126, -0.033555623, 0.001596479, -0.031398654, -0.04553907, 0.0013784413, 0.041946992, -0.03931576, -0.020406844, 0.008000873, 0.0030722367, 0.011700122, 0.015055068, -0.072142124, 0.05767034, -0.017052514, 0.027353253, -0.0144828735, -0.046924904, -0.019388104, -0.043040875, -0.01207984, 0.019463247, -0.0015324227, -0.009130172, -0.00085983204, -0.00056387985, 0.00038064198, -0.05072763, -0.0030051006, 0.06468696, 0.0041642725, 0.04043551, -0.0152860405, -0.05073748, 0.020739445, -0.015780013, 0.0623021, -0.017545871, 0.06261745, -0.041151218, 0.01138188, 0.0077976175, 0.015682695, 0.03644308, -0.0045452416, -0.0034430237, -0.044302292, -0.029338997, 0.010890796, 0.0060834964, -0.03684713, 0.02537105, 0.016303241, 0.034861386, -0.043341447, 0.016419651, 0.020892503, -0.022707943, 0.024803013, -0.006830614, 0.017951766, 0.03950793, 0.011814684, -0.027327385, -0.04447475, 0.016205002, 0.007112708, 0.014571566, 0.060370557, 0.076167814, 0.004195146, -0.0020103808, 0.035080656, -0.06567891, -0.019433683, 0.0075786556, -0.058212355, 0.008602093, 0.021979919, 0.019778602, 0.0038864901, 0.008736904, 0.0014166287, -0.024099935, -0.00024144282, -0.030710047, -0.004193837, -0.016934257, 0.024029102, 0.021822859, -0.057101224, 0.030376216, 0.007677512, -0.034619942, 0.016288767, -0.031865522, 0.0031818713, 0.022470888, 0.038271148, 0.021256823, 0.001497931, 0.025127914, -0.030516647, -0.023413947, -0.045355525, 0.034993194, -0.018923696, 0.047019757, -0.008120363, 0.034008328, 0.051193267, 0.041562654, 0.05068205, 0.024713397, 0.03811347, 0.029722102, -0.052575406, 0.041910652, 0.05774918, -0.050215177, 0.005567043, 0.042506255, -0.016461842, -0.017034654, -0.0024871074, -0.024023868, 0.021386167, 0.00854258, 0.015914593, 0.050986316, -0.010055601, -0.025945248, -0.038772512, 0.00010840289, 0.0064298008, -0.031023245, 0.02263896, -0.008517634, 0.031240975, -0.038800847, 0.022733811, 0.051272184, -0.015528714, -0.021101609, -0.00975832, -0.036216423, 0.014458621, -0.015693782, 0.02405066, 0.05176608, -0.015364571, -0.005899951, 0.001199823, -0.013385294, 0.002126175, -0.0018087039, 0.035342425, -0.019394264, 0.029151756, -0.008193041, -0.04690889, -0.007568185, -0.025543664, 0.06200892, 0.00039349942, 0.023739003, -0.01692317, 0.033574715, -0.006399466, -0.031853206, -0.060863297, 0.028093595, 0.0110651795, -0.011219083, 0.032700717, 0.028492715, 0.0065238834, 0.049793884, 0.012656038, -0.051264714, -0.02511652, -0.011190597, 0.04920506, 0.030192055, 0.006417944, -0.00019648025, -0.048810866, -0.0016054099, -0.053753052, -0.013185734, -0.013758545, 0.035212465, 0.03608338, 0.032696098, -0.021524133, 0.047455832, -0.01808111, -0.050478794, -0.021809923, 0.01659719, -0.004143947, -0.0306115, -0.0018847322, 0.010776233, -0.0117457, -0.064381465, 0.03854585, -0.00544432, 0.0036585978, -0.03860621, 0.0044540656, -0.051465508, 0.0026072129, 0.02870829, -0.013079795, 0.023467379, 0.067357615, -0.016108917, -0.018139623, -0.03434493, -0.029762138, -0.0011616356, -0.06520927, 0.026001913, 0.07295515, 0.035461295, -0.011731688, -0.045834716, -0.044118747, 0.048722174, 0.013028057, 0.007927578, 0.008272496, 0.031362545, 0.0044679237, -0.008613103, 0.022849606, 0.026016695, 0.039365035, 0.01597218, -0.05905987, -0.031067284, -0.011126695, 0.029901953, -0.06486435, -0.03288057, -0.052570477, -0.0091699, 0.011342423, 0.016615208, -0.015032278, 0.0068503236, 0.020403149, 0.008884726, -0.0051421314, 0.03323288, -0.01147962, -0.01774728, -0.0058882483, -0.011837011, 0.003085787, -0.054214075, 0.033441063, 0.0009325113, -0.025161175, 0.07123795, -0.00053215964, 0.048475802, -0.020902088, 0.051432244, 0.014432367, -0.034942687, -0.0012934436, 0.001794807, -0.0038270534, -0.04249178, 0.0026244586, 0.046480052, -0.015809577, 0.019410277, -0.016705133, 0.04010599, 0.022804027, 0.033770274, 0.045307484, 0.021420505, 0.033142954, -0.0087673925, 0.040637534, 0.0043194857, -0.0013119214, 0.07169373, 0.02394472, 0.011372449, -0.016046092, 0.008429557, 0.040621523, 0.027449645, -0.010996735, -0.0139396265, 0.010868622, -0.008344559, -0.02097473, 0.0024464563, -0.06033853, -0.04768742, 0.019869603, -0.0052091903, 0.033256285, 0.029651271, -0.0061101355, -0.013206676, 0.03928373, 0.028158884, -0.013690793, -0.040452756, 0.03943956, 0.026041333, 0.009123012, 0.02818506, 0.034829356, -0.045095604, 0.042060323, 0.024765134, 0.007595902, -0.025664385, -0.012149131, -0.04165997, 0.059534322, 0.010790399, 0.015711028, -0.026476175, 0.0643519, 0.050158087, -0.048022483, 0.0033118317, -0.0020226995, -0.042218, -0.04416925, -0.03774392, -0.010125816, -0.0231588, -0.0009805535, -0.034134593, 0.017391274, -0.04861377, 0.022972964, 0.024552023, -0.062316883, 0.0010695547, -0.022822505, -0.026267992, -0.049904753, -0.014594971, 0.03803956, 0.07930165, -0.047850024, -0.037311845, -0.053530704, -0.06121807, -0.00025653298, 0.009773507, -0.004477163, 0.0068697254, 0.0044459817, 0.040136173, -0.054245792, 0.013097426, 0.0144160455, 0.010694854, -0.04442055, -0.01788155, -0.034273792, -0.0138064325, -0.013432104, 0.029369794, 0.027901428, -0.0025948943, 0.039741978, 0.024157831, 0.0057182526, 0.019755812, 0.043018702, 0.043273695, 0.030256726, -0.02020359, -0.0075765, 0.040663403, 0.0030045426, 0.028450832, 0.054019134, 0.023150794, 0.048909415, -0.01584407, -0.014415122, 0.0029441242, 0.026610447, -0.041907575, -0.008998056, 0.06554926, 0.012047811, -0.05227976, 0.027127825, 0.026455233, -0.06331961, 0.024701077, 0.058576982, -0.024458095, -0.000802551, -0.03499196, -0.054280285, -0.004292231, -0.048297185, 0.050195467, 0.03189016, -0.013671083, -0.035919853, -0.018209223, -0.030721134, -0.004184598, -0.019530999, -0.016593033, 0.069924794, 0.01809466, -0.032198124, 0.030255495, -0.048424065, 0.018433342, 0.0013536504, 2.8332575e-05, -0.0545168, -0.053454947, -0.018054625, 0.01026132, 0.0070289425, 0.0487813, 0.01951868, 0.00033875904, -0.011277751, -0.03602918, -0.0063729817, 0.011904608, -0.0012569501, -0.0039246776, -0.009869283, -0.016726075, 0.03174357, 0.003027274, -0.051245004, 0.004814074, -0.020860475, -0.050707918, -0.052022304, 0.048401892, 0.00081101997, -0.0020698179, 0.034642115, 0.052183677, 0.03589383, -0.040686503, -0.0028221707, 0.010153533, 0.01441235, 0.025892893, 0.019883309, -0.015130211, -0.071073495, -0.06641648, 0.036459096, -0.051796876, -0.027262095, -0.027741902, -0.04038008, -0.00971253, 0.0032841149, -0.015145609, -0.05340321, 0.023955807, -0.029881012, 0.0050518215, -0.014701835, -0.0022161, -0.018448664, 0.0077310973, 0.015968254, 0.009656327, 0.015711645, 0.011279444, -0.00046379192, 0.04488619, -0.012753932, 0.06964886, -1.4782213e-05, -0.0065657664, -0.012346535, -0.048935283, 0.011337264, -0.026447227, -0.008111123, 0.012513143, -0.07491379, -0.018023213, -0.009081206, 0.0021822243, -0.026213253, -0.022331612, 0.035580788, 0.013217762, 0.008627269, 0.028533598, -0.0102834925, -0.02021714, -0.017760828, 0.0048990715, 0.021006757, -0.03764537, 0.02130394, -0.022680841, -0.0070776003, 0.023811681, -0.034966093, -0.029518848, -0.0042301766, 0.003920366, 0.0051405146, 0.0059353663, 0.06403808, 0.015201678, -0.02230328, 0.034659978, -0.009402104, 0.08422412, -0.021182295, -0.04497188, 0.08395311, 0.021027697, -0.009434439, -0.02399153, 0.0060723713, 0.00060853444, 0.009931799, -0.00990108, 0.0030716206, 0.0051428243, -0.0053979713, 0.008527489, 0.0017227437, -0.023531435, 0.019310497, 0.05759766, -0.0064345743, -0.009937959, -0.040106606, 0.021692282, -0.002407037, -0.02539769, -0.011431886, -0.02323148, -0.032164864, 0.021145955, -0.041050207, 0.042080034, 0.036120337, 0.02193538, 0.0080501465, 0.021766808, -0.0015619872, -0.043257684, -0.02692457, 0.0523857, 0.013822601, 0.03422575, -0.027347093, -0.009224563, -2.1557395e-05, -0.03090899, -0.013589781, 0.006643681, 0.011475309, -0.05043198, -0.00063378736, 0.016818771, -0.012482655, 0.07089057, 0.022132052, -0.0023435967, 0.0136680035, -0.018618198, -0.04582486, -0.022768304, 0.00911077, -0.022190565, 0.007131802, -0.0056377687, -0.015098799, 0.041278098, 0.028730463, 0.043942593, 0.022252774, 0.002258599, 0.06491362, 0.027719112, 0.01901085, 0.0013273195, -0.032548584, 0.0036746117, 0.0029441242, -0.024134425, -0.067145735, -0.0056702103, 0.027426856, 0.014388021, 0.05423101, 0.032839917, 0.022279259, 0.012638792, -0.040259358, 0.007237741, 0.0075343186, 0.0037956412, -0.009800614, -0.049882885, -0.0142124435, 0.025554135, -0.02474296, -0.05167492, -0.017302888, -0.022254622, -0.002671269, -0.041489206, -0.06622924, 0.0061918995, 0.032956943, 0.04621166, -0.012114024, -0.038064197, -0.029691307, 0.018113138, 0.037256103, 0.03187476, -0.046825122, 0.011261582, -0.00010532327, 0.0031392185, -0.03420273, -0.038389407, -0.007073289, 0.03043904, -0.005119573, 0.01826096, 0.050262604, -0.010297043, -0.008297749, -0.017484277, -0.08604234, 0.046482053, -0.050239816, -0.0020122288, 0.00080624653, 0.01569871, -0.07589188, -0.01507293, 0.009491875, -0.0022727652, 0.0011345348, -0.031439304, 0.018408397, 0.027145071, 0.000719555, 0.007387411, -0.001752924, -0.014899547, -0.04663788, 0.0011342076, -0.031579733, -0.07358585, -0.029353471, -0.013348338, -0.06911424, -0.06786206, -0.007991018, 0.011584328, -0.022338387, -0.062233116, 0.04816045, -0.05030387, -0.0175083, 0.01973179, -0.057906855, 0.014039099, -0.012596833, -0.07583768, 0.036516994, -0.048818257, 0.018205527, 0.016172512, 0.04447475, -0.032458045, -0.028108686, 0.012626474, 0.014442222, 0.018006584, 0.03206755, -0.013828837, 0.008007032, -0.0009193459, 0.025300065, -0.041484434, -0.08358849, -0.03525681, 0.020382209, -0.0025782643, 0.0058871703, 0.027772699, -0.021311024, -0.0014856124, 0.025176572, -0.0005629559, 0.013490617, 0.0004902767, 0.048910957, 0.0175779, -0.0035107755, -0.021312563, 0.020087179, 0.014947897, -0.013134612, 0.004278219, -0.011019986, 0.014342442, 0.022136364, 0.038003836, 0.0419125, 0.0075740363, 0.01030813, -0.010722032, 0.00789247, 0.04724888, -0.062760346, -0.015341474, 0.051778395, 0.02424283, 0.0030882508, -0.0029897026, -0.042091813, 0.012371211, -0.0482436, -0.0030981055, -0.06087808, -0.04179917, -0.0076833633, -0.02479593, 0.005160224, 0.028386775, 0.025456818, -0.0071769184, 0.011508569, 0.032015808, 0.031463325, 0.013550978, -0.012981246, 0.07498031, 0.00039665605, -0.0041066837, 0.030060861, -0.017342, 0.007218955, 0.0364825, -0.013135228, 0.022234911, 0.025457434, 0.0025593245, 0.0021715995, 0.041260235, -0.060626782, 0.00093905546, -0.043393187, -0.0048270086, 0.0063988506, -0.014010458, 0.040651087, 0.030629668, -0.013743763, -0.020860165, -0.018763555, -0.03836477, -0.029978327, 0.0153316185, 0.009660176, -0.00511249, -0.0096182935, 0.016876975, 0.031412203, -0.051979188, -0.06623478, 0.06583875, -0.0076276218, 0.023952112, 0.043983243, -0.02587534, 0.044755615, 0.017051283, -0.021281458, -0.059240952, -0.003969332, -0.04128549, -0.06873976, 0.032586463, 0.0064973985, 0.048352618, 0.0675966, 0.017356167, 0.01244262, -0.06345511, -0.0063424935, 0.006752661, -0.04019284, -0.037296753, -0.022772, -0.000670127, -0.010605006, -0.012996029, -0.019755503, -0.043343913, 0.06882598, 0.023240102, -0.028438514, 0.039640967, 0.005252613, -0.021545075, 0.0017868, -0.017622862, 0.04586428, 0.021420043, 0.0197515, -0.01231112, 0.0050746105, -0.038394336, 0.00022974022, 0.010554808, 0.042750794, -0.0074240584, 0.020187575, -0.0012395502, 0.003598237, -0.01126959, 0.066037074, -0.024385724, 0.040344354, -0.00055063743, -0.035397857, -0.011917235, 0.017778384, -0.03793855, 0.0664017, 0.0014954673, -0.01555674, 0.027942078, -0.024843972, 0.032146387, 0.014218641, 0.014124905, 0.0261368, -0.0073837154, 0.019268615, 0.014725548, -0.0044195736, -0.00090294686, -0.006212225, -0.023813222, 3.9188264e-05, -0.006732066, -0.018485157, 0.037733775, 0.026255675, 0.053979713, 0.033815544, -0.013030521, -0.06621877, 0.033452764, -0.004971751, -0.04702222, -0.040934104, -0.001679013, -0.029517615, -0.0273705, 0.018135311, 0.008165325, 0.005219353, -0.05594575, -0.010040818, 0.019271387, 0.026582114, -0.014187229, 0.050271228, 0.01779409, -0.06425705, -0.014766199, 0.016182827, 0.052545838, 0.043163445, 0.022774925, 0.0030090273, 0.013949482, 0.016132321, 0.0003498457, 0.013077331, -0.016774116, 0.04201105, 0.0637158, 0.020374818, 0.016228406, 0.004903383, 0.010730251, -0.008402764, -0.026547622, 0.010086859, -0.0025772634, 0.051668763, 0.023370063, -0.04915825, 0.0027605782, -0.0037053311], [-0.030691039, -0.09282487, -0.032112308, -0.0643305, -0.017616512, 0.019572362, 0.016098078, -0.031606894, 0.012721291, 0.025383443, 0.02807347, 0.0025754792, -0.07950847, -0.03803547, -0.029943809, 0.042260982, -0.020389656, -0.06053282, 0.02266784, 0.05159856, -0.024050018, 0.008732867, -0.037856456, 0.0205399, -0.017435899, 0.035170157, -0.014462962, 0.031453453, -0.0036687525, -0.0033879753, -0.0053662034, -0.043867327, 0.03325806, 0.019593675, 0.014883329, 0.008352992, 0.04659412, 0.012865676, -0.03761883, -0.03680687, -0.042180486, 0.045371912, -0.025989218, 0.00054184167, 0.0029995756, 0.035667777, -0.008506101, 0.052721053, -0.060822655, -0.02957006, 0.021741861, -0.03759519, -0.011265191, 0.04983771, -0.017775882, 0.035076518, 0.04187258, 0.04281015, 0.052772816, -0.0065416587, 0.003611212, -0.011424227, -0.06463526, -0.03294738, 0.031132717, -0.03024563, 0.0024273652, -0.022142783, 0.025832046, -0.029342027, -0.018637195, 0.039675646, -0.017636226, -0.013797947, 0.06316691, 0.011170022, -0.057357427, 0.00438588, -0.0059117745, -0.046254203, 0.0031407634, 0.0065290052, -0.0026170362, -0.058248244, -0.06295699, 0.03225103, -0.00018221223, -0.01122683, 0.05326564, -0.0133537045, -0.017526606, 0.01759307, 0.024907665, 0.0029646116, -0.032936726, 0.02159328, 0.011236954, 0.035830807, 0.05623858, 0.029457109, -0.0012421865, -0.0068534706, -0.052183025, -0.034043852, -0.014152882, -0.006146466, 0.028680844, -0.014408618, -0.04241389, -0.056083005, -0.0004097111, -0.007940617, -0.007149965, -0.057944022, -0.01687168, 0.0066864425, 0.07535701, -0.032694843, -0.04862829, 0.0011620026, 0.026083522, 0.024220373, -0.0031536832, 0.013564155, -0.010097328, 0.011402116, -0.018660104, -0.00043182165, -0.044432614, 0.013563623, 0.019274537, 0.024611438, 0.031664435, -0.0475803, -0.03885526, -0.00293351, -0.019998591, 0.06466296, -0.015914267, 0.06264158, -0.016604489, 0.005502596, 0.012768708, 0.015798653, 0.03009805, -0.04818714, 0.015501891, -0.03623919, 0.011140454, -0.018015034, 0.024093205, 0.005822267, 0.0065403827, -0.01835655, 0.012791219, -0.079804696, 0.005141901, 0.016611548, -0.030040508, 0.0348036, -0.03443385, -0.0013848395, 0.016112994, 0.009884747, 0.012676004, -0.013543776, 0.015811972, 0.021243706, -0.020271378, -0.02178395, 0.03993538, 0.00033458852, 0.029581781, 0.029037809, -0.026106397, -0.030425046, -0.0042684013, -0.00356446, 0.05773677, 0.060360197, -0.010488391, 0.03332992, -0.012115581, -0.016116725, 0.02578183, 0.014760256, -0.02745997, -0.03857092, 0.009162025, 0.035872366, 0.031512592, -0.01395735, 0.032559246, -0.001956384, -0.0400771, 0.067221925, -0.024228897, 0.018089093, 0.008576228, 0.036146216, 0.036701113, -0.0007796632, 0.004378421, -0.021568708, -0.010381969, -0.039584808, 0.035435483, -0.03330781, 0.048346978, -0.026626427, -0.005555234, 0.052317284, 0.026383476, 0.03951768, 0.011549573, 0.042963725, 0.033078447, -0.054109573, 0.03769076, 0.080740266, -0.044050608, -0.022880739, 0.0068920976, -0.054203343, -0.024287505, -0.0018413024, -0.044152897, -0.002874904, 0.012356333, -0.010444437, 0.06590115, 0.015006952, 0.005901119, -0.051100407, 0.023543738, -0.013300427, -0.023862343, 0.01951056, -0.027723907, 0.03935784, -0.030620845, -0.015446482, 0.018195648, -0.02127088, 0.021635305, -0.004711944, -0.064530835, 0.016174264, -0.04260463, 0.008927333, 0.023959843, -0.0027636853, -0.03949104, -0.0076633194, -0.02496787, -0.004493503, -0.0033608032, 0.0002035236, 0.014020751, 0.02600254, -0.011977257, -0.03386164, 0.0007906519, -0.049081687, 0.015445416, -0.013087314, 0.013605046, 0.015279521, 0.023953715, -0.015717138, -0.011194332, -0.041569963, 0.03511901, 0.016164675, -0.02249815, 0.029842313, 0.011160232, 0.03497196, 0.020853711, 0.008004818, -0.03429639, 0.031878617, 0.009480097, 0.0011295027, 0.030019198, 0.022398252, -0.0035312942, -0.047551, -0.004289979, -0.03149874, -0.0063982066, -8.204878e-05, 0.023361526, 0.04744404, 0.013566553, -0.009931632, 0.06597361, 0.018101545, -0.026665853, -0.057148572, 0.047987882, -0.02146961, -0.0107388, 0.028046032, 0.00052026386, -0.010500247, -0.05258155, 0.05069869, 0.0061691096, -0.015911603, -0.039465997, -0.014167801, -0.04354473, 0.021910222, -0.0014731486, -0.034632575, 0.010150606, 0.050627295, -0.03846063, -0.024637543, -0.018924497, -0.051718436, 0.049510576, -0.008244304, 0.052275732, 0.048323534, 0.045298915, 0.0196664, -0.040818736, -0.00056475133, 0.0417599, 0.044932894, -0.03633376, 0.014863616, 0.022816753, 0.021165121, 0.0024694551, 0.0045097526, 0.043828964, 0.02045572, 0.0071078753, -0.051198438, -0.005791382, -0.03336828, 0.025569385, -0.06630394, 0.0053214496, -0.08326779, 0.029197643, -0.012160269, 0.012039859, -0.016657101, 0.011832074, 0.010592551, -0.017155854, 0.004311557, 0.01959181, -0.003791293, -0.0063678375, -0.005425875, -0.0013490098, -0.016398568, -0.066697136, 0.05351579, 0.025794217, 0.0018061388, 0.059134793, -0.020877685, 0.024610372, -0.020596376, 0.059373483, -0.020122731, -0.032171648, 0.041193016, 0.0187608, 0.03847768, -0.021799134, -0.025437787, 0.03780744, -0.014787962, 0.022104153, 0.008527479, 0.030437168, 0.013827351, 0.0148281865, -0.0032638365, 0.060477413, 0.0071638175, 0.004419712, 0.04192799, 0.012804671, 0.0076108235, 0.012407481, -0.0057575335, 0.01906995, -0.020613158, 0.06779999, 0.022503745, 0.046846658, 0.011748427, 0.019235644, 0.014745871, -0.0040108003, -0.0042196517, -0.041469797, -0.05166609, -0.035709865, -0.0155844735, 0.031674024, 0.017895693, 0.026786262, 0.014100136, -0.01758914, -0.038654566, 0.0040049395, -0.037171293, -0.06375829, 0.013790589, 0.020096624, -0.019023063, 0.0066054594, 0.036048185, -0.061103962, 0.041883238, 0.028693631, -0.028028982, 0.0015567957, -0.021317298, -0.04068261, -0.0080088135, 0.032049373, 0.017989993, 0.031660173, 0.103944086, 0.017725734, 0.00434752, -0.018455647, 0.00598343, -0.078447156, 0.0017283523, -0.029594036, -0.008844219, 0.020173345, 0.02897068, -0.029083095, 0.0027841975, -0.006638226, -0.0064301733, 0.026289973, -0.026515609, 0.038892187, -0.07540816, -0.036745068, -0.050582543, -0.0075143897, 0.016761394, 0.022484608, -0.033075247, -0.0067206244, -0.04739236, -0.032414597, 0.016258445, 0.037697684, 0.0042601433, -0.007883077, 0.01888374, 0.037103098, -0.016390042, -0.014884927, 0.018370403, 0.0141475545, -0.046296824, -0.020795103, -0.04279963, -0.03299, -0.0041185827, 0.04894796, -0.0060726753, -0.044353224, 0.0041732993, 0.038924687, 0.002672979, 0.028791662, 0.03266597, 0.036432322, 0.03174382, -0.03284722, -0.00706104, -0.033015575, 0.0006369436, 0.013105428, 0.022091366, -0.028359484, 0.04018046, -0.04194078, -0.029074037, 0.0047684195, 0.052503757, -0.037942763, -0.006761566, 0.036620393, 0.04501388, -0.020684818, 0.034115244, 0.0034066227, -0.079802565, 0.034121636, 0.022954477, -0.042490613, -0.0134773115, -0.01951056, -0.029600963, -0.034292445, -0.010343274, 0.03364746, 0.016621005, -0.007526677, -0.011357895, -0.0030730998, -0.037127342, -0.018251592, -0.007645055, -0.02398142, 0.027246587, -0.0012928011, -0.04486257, 0.044250935, -0.027033476, -0.01263398, -0.008429314, -0.013260469, -0.04888882, -0.019053698, -0.0015040501, 0.008935325, 0.0075326376, 0.04683387, 0.044459783, 0.028932318, 0.00028557237, -0.008672662, 0.018688207, 0.0074925455, 0.0061291507, -0.026340855, 0.013718129, -0.020386191, 0.021473339, 0.012517034, 0.0037987519, -0.026952492, -0.03156001, -0.036941133, -0.05496416, 0.06007622, 0.01265466, -0.019136546, 0.055899728, 0.02434185, 0.008008281, -0.015644677, 0.014534355, 0.00075655367, 0.02463488, 0.0004134406, 0.012967969, 0.020795636, -0.06961786, -0.07173834, 0.053638056, -0.032991335, -0.0563771, -0.02549373, -0.027321177, 0.010640767, -0.038204897, -0.0003423139, -0.052451547, -0.010532612, 0.016985696, -0.029043138, 0.03779998, 0.006881442, -0.027484212, 0.01848715, 0.04487802, 0.020610228, 0.01261207, 0.05736595, -0.025727088, 0.015775742, -0.012940265, 0.00047044852, -0.009223562, -0.048717793, -0.0062457137, -0.03416213, 0.03716703, 0.012784692, -0.0032830168, -0.012703708, -0.0523386, -0.0022121205, -0.007561275, 0.030811982, -0.010004548, -0.025532622, 0.027406424, -0.011829742, 0.022161696, -0.0019554514, 0.013648868, -0.03351107, -0.028369699, -0.0034124833, 0.0068803765, -0.0113589605, 0.00987569, -0.036382772, 0.0014102801, -0.00239047, -0.017929256, -0.009466245, 0.018639725, -0.040703654, 0.0029742683, 0.012827314, 0.080137685, -0.01864745, 0.024472648, 0.051322043, -0.0031516855, 0.069193766, -0.03707859, -0.051778108, 0.08763449, -0.006199478, -0.017213395, 0.0051232534, 0.050390735, -0.0018365075, 0.028769819, 0.012914691, 0.027810806, 0.028471459, 0.01152226, 0.028919531, 0.0040225214, -0.013801244, -4.2089956e-05, 0.057787914, -0.023793614, 0.029921899, -0.023375379, 0.03781916, 0.0023208084, -0.01159575, 0.019406667, -0.022527453, -0.024573077, 0.02445107, -0.06580099, 0.024361627, 0.037500557, 0.017696964, -0.017010737, 0.04930386, -0.015111894, -0.036141954, -0.011092569, 0.0069773435, 0.012189571, 0.03710949, -0.0040755332, -0.00807701, -0.046972394, -0.041671723, -0.046363752, 0.024157505, 0.006310297, -0.047481738, 0.017445488, -0.015770415, -0.0156548, 0.009093029, 0.01780352, -0.0031412963, 0.038321577, -0.07869011, -0.062301666, -0.010007287, 0.021023668, -0.013614503, 0.0032707627, 0.016055454, -0.027415015, 0.024121275, 0.05519006, 0.0061103697, 0.044033553, 0.06410887, 0.03596933, 0.016439592, 0.00359676, 0.026966078, -0.012544139, 0.032527547, 0.0056192763, -0.0023362592, -0.0763019, -0.013500621, 0.012064901, -0.040948737, 0.050186146, -0.0063507888, 0.034720488, 0.020160025, -0.05701964, 0.043963227, 0.030975014, 0.0038760058, -0.0073221875, -0.055703662, -0.013281247, 0.031437203, -0.030090591, -0.08149043, -0.029357214, 0.0055217766, -0.0251325, 0.008286394, -0.037996043, 0.02922455, 0.0148471, 0.012294531, -0.00052479253, -0.04438093, -0.07692766, 0.0030065018, 0.0010165524, 0.023175051, -0.011983383, 0.031007513, -0.0011199126, -0.030855669, -0.062201496, -0.061805107, -0.011967401, -0.012741003, -0.0056517757, 0.02304099, 0.06077151, 0.043413393, 0.011989245, -0.0082746735, -0.049221147, 0.030447558, -0.04556425, 0.049287874, -0.010747325, -0.00208958, -0.069219336, -0.016085023, -0.0070103756, 0.011317404, 0.0092960205, -0.022573536, 0.0035078516, 0.008576228, 0.0046544033, -0.018663434, 0.011110151, -0.033388793, -0.0054469197, 0.011966069, -0.018933022, -0.060871672, -0.0087067615, -0.003208427, -0.040470295, -0.031216897, -0.01152519, 0.021123832, -0.039905544, -0.056027595, 0.04168291, -0.042697333, -0.024597585, 0.019451555, -0.02680118, 0.028714942, -0.009374489, -0.04424134, 0.0055659977, -0.038592763, 0.06256166, -0.014081605, 0.055418093, -0.008041847, -0.0021247438, -0.0145780435, 0.013050518, 0.020453589, 0.018977642, -0.0036299925, -0.004788665, 0.04263127, 0.029191252, -0.06603115, -0.067646556, -0.026331266, -0.003037936, -0.011824614, -0.019957567, 0.025195368, 0.03460327, 0.012507778, 0.014731486, 0.006338468, -0.010232888, 0.020957602, 0.030826366, -0.01937078, 0.02839314, -0.022116674, -0.015181156, 0.03847129, -0.012964773, -0.008177839, 0.010731041, 0.05277868, 0.05214466, 0.003749203, 0.036061503, 0.01068339, -0.0066576726, -0.012412809, -0.028124616, 0.025782496, -0.022415299, -0.00023469147, 0.040873345, 0.013849194, 0.004304897, 0.032508366, 0.012223404, 0.030046903, -0.03889112, 0.0056373905, -0.06599919, -0.009015243, -0.046045348, -0.007052998, 0.029599365, 0.015525866, 0.004762825, -0.025558727, 0.049609676, 0.0046746493, 0.016128447, 0.044002656, -0.031577058, 0.060512308, -0.045177974, 0.00018088028, 0.025990283, 0.012980756, 0.014556732, 0.0412098, -0.030898292, -0.0028338796, 0.013906735, -0.046719853, -0.0035466116, 0.023168925, -0.042908315, -0.028682975, -0.008650285, 0.02018613, 0.020455187, 0.0009078644, 0.012592889, 0.02734249, -0.002246352, -0.0117468275, -0.015369095, -0.046629284, 0.031702798, 0.011931029, 0.021750387, -0.021596411, -0.004791862, -0.001366059, 0.03746965, -0.016675882, -0.05354056, 0.049354073, 0.005352351, 0.028346255, 0.059949152, -0.022071121, 0.039328005, 0.004397335, -0.032534257, -0.013785494, -0.0014854027, -0.04844714, -0.06680476, 0.017236253, -0.018235343, 0.0387185, 0.04631174, 0.021068556, 0.025569117, -0.07187686, -0.02204182, 0.019502303, -0.059607904, -0.052756302, -0.034115244, 0.023270952, 0.0154699255, 0.028522072, -0.008545327, -0.035476506, 0.04822071, 0.031754475, 0.002130338, -0.030777885, 0.007100949, -0.007095888, 0.037229903, -0.040056854, 0.017903684, 0.03479028, 0.015911069, -0.015286647, 0.00036429128, -0.018148765, -0.017694833, 0.0056115505, 0.010249704, 0.010654621, 0.02178022, 0.0054810187, -0.0022142516, 0.04486856, 0.035018846, -0.05937561, 0.042373396, 0.0051388545, -0.023789885, 0.007400107, 0.02098211, -0.02421398, 0.046147645, 0.013971736, -0.011980721, 0.015149722, 0.010362122, 0.05453314, 0.051178727, 0.014757992, 0.021758111, 0.02779483, -0.010732407, 0.0077082566, 0.0035065198, 0.018081367, -0.008129222, 0.00028344124, -0.004005472, 0.0033793175, -0.018743351, -0.0017454013, 0.013419771, 0.07581547, -0.013306821, -0.086903505, -0.08391566, 0.056121364, -0.0231611, -0.02145842, -0.00015184352, 0.0039798985, -0.009744092, -0.030201944, 0.007171277, -0.050178956, -0.015523203, -0.071124576, 0.023809599, -0.0017251555, 0.042266972, 0.020136584, 0.021302847, 0.0002477447, -0.04068767, -0.008556516, 0.0014070834, 0.003946067, 0.04412946, 0.054130353, 0.00076707616, 0.0073311115, 0.038756862, 0.0040797954, -0.011464985, -0.006189888, 0.002891953, 0.01715299, -0.016611282, -0.016277626, 0.0046089836, 0.024011098, -0.016484879, -0.0007108008, 0.04023144, -0.005331572, 0.054247033, 0.009052571, -0.036622528, 0.004056886, 0.008909885], [-0.05261466, -0.06720773, -0.037335027, -0.038825102, -0.028990192, 0.03172243, 0.012444489, -0.011514167, 0.0001507226, 0.042288862, 0.021679562, 0.04919274, -0.069398925, -0.050692685, -0.02021684, 0.044168998, -0.023788575, -0.03979421, 0.057860326, 0.022829797, 0.00061744294, 0.022398418, -0.049466413, 0.018378802, 0.0051884954, 0.012402911, 0.030352414, 0.030328507, 0.024735462, -0.011696073, -0.005068437, -0.010731449, -0.0066359523, 0.030767681, 0.047029607, 0.028111326, 0.0055307397, -0.02126228, -0.04132918, -0.045337517, -0.091231875, 0.0026215338, -0.012017788, 0.008754644, -0.02958113, 0.009262684, 0.018527446, 0.033944808, -0.008369782, -0.009356755, 0.044447053, -0.004698907, -0.03671239, 0.008273631, -0.021042954, 0.025974182, 0.03441218, 0.028192922, -0.013009569, -0.0065361634, 0.02400829, -0.0063740066, -0.074381344, -0.018451435, 0.015136708, 0.008269994, 0.009319854, -0.012783095, 0.009156139, -0.02802453, 0.016529072, 0.054068875, 0.0046323813, -0.027953714, 0.033445086, -0.006593204, -0.06482943, 0.0007858365, 0.0053738332, -0.024096906, 0.01863659, 0.03055498, -0.0028363501, -0.051278945, -0.059948094, 0.047805574, -0.006657911, 0.033749387, 0.0015784295, -0.00913275, -0.022144789, 0.035682794, 0.028901057, 0.02820072, -0.0020427462, -0.008505659, -0.013343108, 0.04402763, 0.049297724, 0.016333133, -0.013486684, -0.01273398, -0.03179727, 0.006388559, 0.041347887, -0.033991583, 0.019373572, -0.0669042, -0.010521217, -0.008487241, -0.037102968, -0.009928982, 0.026494434, -0.08008048, 0.010003043, 0.0036329345, 0.0071421727, -0.041803174, -0.031321198, -0.016546223, -0.026463315, 0.022155443, 0.0007291855, 0.028757352, 0.0020294278, -0.051387053, -0.01355256, 0.016185528, -0.069336556, 0.001371056, 0.022412973, 0.012621199, 0.06303427, -0.017292561, -0.044429384, 0.041253295, -0.0009824905, 0.066160984, -0.018290449, 0.04504007, -0.0227443, -0.011044751, 0.0061484426, -0.018733261, 0.04608993, -0.04676502, 0.0029661169, -0.067316875, -0.015166851, -0.030165311, 0.00035120963, 0.03401783, -0.023285601, 0.007676458, -0.007257683, -0.09114143, -0.010191966, 0.02948082, -0.041894644, 0.0136513105, -0.05004887, -0.021209268, 0.043963574, 0.00024219562, 0.0067664054, -0.047690712, 0.0010020455, 0.026905542, -0.0026340073, 0.028826477, 0.057104114, -0.0067077405, -0.015902735, 0.034968164, -0.02463275, -0.020727996, 0.035338216, -0.031207373, 0.014243806, 0.053872414, 0.0013341549, 0.0100139575, 0.012693961, -0.024897294, -0.011475707, 0.039773095, -0.01483838, -0.022860982, 0.03604453, 0.010602036, 0.059422124, -0.028865978, 0.02073865, -0.014326183, -0.002432351, 0.03614406, -0.0028143548, 0.027736077, 0.0063597145, 0.051800758, 0.039483085, 0.012952789, 0.043753214, -0.04422266, -0.044969387, -0.0130328275, 0.029491216, 0.012788552, 0.052752912, -0.014122188, -0.024764374, 0.03199269, 0.055058446, 0.05606881, 0.028323894, 0.025335949, 0.04488675, -0.06591151, 0.031666297, 0.06965255, -0.0329095, 0.004257654, -0.012575332, -0.04155448, -0.011889935, 0.020923935, -0.009440952, 0.028842071, 0.0102117155, -0.00564664, 0.057712205, -0.0018065922, -0.0015155418, -0.042438287, -0.012097308, -0.014800959, -0.04048305, 0.03748861, -0.052770577, 0.04442445, -0.010810449, 0.019391308, 0.022489892, 0.00073028996, -0.009818798, 0.010790699, -0.05840553, 0.029722497, -0.021255786, -0.005556986, 0.03108056, -0.01074938, -0.04242685, 0.010970526, -0.015537941, -0.015450626, 0.0415997, -0.009134829, 0.046547294, 0.0037628678, 0.008318328, -0.07539872, -0.008204507, -0.015691003, 0.024368728, -0.0006568777, 0.028336888, -0.032268148, 0.014364643, -0.046061605, -0.007817955, -0.06468598, 0.03659025, 0.00047971366, -0.049300484, 0.030251067, -0.014959478, 0.008430071, 0.03676904, 0.013872196, -0.029624786, -0.008149415, 0.008144348, 0.012359254, 0.014278107, -0.015725954, 0.008241928, -0.028559335, -0.0067003993, -0.025324836, -0.045633085, 0.029594643, 0.016862221, 0.05625123, 0.033501998, 0.0054388773, 0.07514925, 0.010445856, -0.007037186, -0.056220572, 0.04501928, 0.0010641535, 0.005451221, 0.021486806, -0.011838871, 0.008905627, -0.034578882, 0.039499097, 0.016574288, 0.016550511, -0.064954035, -0.030783271, -0.06833659, 0.009729924, 0.035022736, -0.027370963, 0.024470594, 0.058817152, -0.013099353, 0.022080341, -0.020339236, -0.013685612, 0.036527883, -0.03757917, 0.038120735, 0.042966336, 0.04287694, 0.006430658, -0.055276733, 0.0050570033, 0.03714169, 0.021294504, -0.014446501, -0.023417097, 0.00023076149, 0.007265739, -0.022201959, 0.007338632, 0.0042521963, 0.029505767, 0.0088766515, -0.06467455, 0.0153735755, -0.041347887, 0.0030581097, -0.06400409, -1.9230125e-05, -0.08608443, 0.031591456, -0.010776146, 0.02631097, 0.0013077784, 0.01702074, 0.010472622, -0.004473343, 0.023516785, -0.008369522, 0.008590149, -0.029529158, -0.009536323, -0.022441035, -0.029904922, -0.062995814, 0.040862456, 0.016381469, -0.02264646, 0.032996558, -0.025488751, 0.03006864, -0.051120948, 0.06426188, 0.003296667, 0.009001349, 0.045904383, 0.01616214, 0.06339912, -0.011140998, -0.020844936, 0.008905107, -0.00913353, 0.022373471, -0.027375901, 0.057326235, 0.0066010654, 0.036012307, 0.033556048, 0.052784093, -0.0007803793, -0.031946953, 0.03214887, 0.011570558, 0.027834436, 0.045001615, -0.0075562694, 0.010677397, -0.019966068, 0.043945514, 0.04428607, 0.021179644, 0.014878918, 0.025999129, -0.014794722, 0.0018720786, -0.017456796, -0.04073772, -0.022712337, -0.026441356, -0.028359756, 0.01816779, 0.022658285, 0.047204237, 0.006240955, -0.017938068, 0.05012098, 0.0048537874, -0.016340408, -0.031922527, 0.032423746, -0.0048220837, 0.0020794522, -0.0025194061, 0.013672749, -0.050330956, 0.021382738, 0.0069098515, -0.016489053, -0.027082771, -0.018399982, -0.028217707, 0.013770328, 0.012998525, -0.007079805, 0.04416484, 0.101264805, 0.027358752, -0.006206133, 0.012542199, -0.023711262, -0.065329865, -0.021100646, -0.043927845, -0.028223587, 0.043359254, 0.0025807347, -0.026333837, -0.0006483021, -0.01018313, 0.03403628, 0.010224645, -0.020468129, 0.029110251, -0.00798466, -0.012128621, -0.042657614, -0.06694163, 0.030015627, 0.035994638, -0.058626153, -0.021330886, -0.058995947, -0.027911745, 0.012993327, 0.01149078, -0.0074163317, -0.008787648, 0.012569225, 0.047170978, -0.040437836, -0.004923172, 0.03127676, 0.0013991215, -0.010393753, -0.027769601, -0.048006706, 0.002241089, 0.0069935285, 0.06771187, 0.003255608, -0.015979715, 0.044135734, 0.017881937, 0.01668759, 0.03727526, 0.0049725464, 0.001115737, -0.009996027, -0.008267394, -0.019323677, -0.016114844, -0.0065382426, 0.028336888, 0.0142921405, -0.008524728, 0.057628006, -0.041710664, -0.036149386, 0.017152231, 0.059254773, -0.011190894, -0.027023261, 0.04582722, 0.04897874, -0.038863562, 0.0002276431, -0.0006216008, -0.0790618, 0.019793775, 0.05481729, -0.008633806, -5.587131e-06, -0.031336788, -0.006999895, 0.014037991, -0.010235883, 0.060686115, 0.026666466, -0.021189518, -0.04698595, -0.025506422, -0.039836504, 0.006962345, -0.012421621, 0.006497703, 0.030066041, 0.015397897, 0.0036552828, 0.0040044948, -0.013991735, 0.036121972, -0.023068875, -0.008689938, -0.038930282, -0.013956652, -0.018531993, 0.013267746, 0.015901495, 0.012239715, 0.048707306, -0.009956008, -0.028103268, -0.025038661, 0.0071889483, 0.015804045, -0.013935084, -0.017845687, 0.0046848743, 0.013460828, -0.0054883817, 0.012139277, -0.03020273, 0.00045424677, -0.024745531, -0.07378547, -0.05710249, 0.059191365, -0.009076099, 0.002040472, 0.031813905, 0.015467257, 0.032223452, -0.024695639, -0.0033463016, 0.018034479, 0.027773757, 0.0026828623, 0.041368674, 0.03303034, -0.07053402, -0.057694532, 0.044061933, -0.0153282285, -0.039637703, -0.04889753, -0.026176877, 0.02563941, -0.023351088, 0.022019265, -0.031038461, -8.9394096e-05, 0.012526607, 0.0069633843, -0.0032410559, -0.011258719, -0.016012976, 0.008184757, 0.03563706, 0.015266641, -0.019417228, 0.08395769, 0.0027449704, 0.012031562, -0.016120043, 0.06390639, 0.029048923, -0.057009526, -0.038142174, -0.027134487, 0.034148283, 0.022058772, -0.029330391, -0.033482246, -0.04540804, 0.0013648191, 0.014576954, -0.01796714, -0.02507998, 0.0033527985, 0.05579023, -0.00873314, 0.0140307145, 0.012994238, -0.010007981, -0.029374275, -0.029239146, -0.0059003676, 0.00056845805, -0.030647622, -0.015814958, -0.027290145, 0.0014947524, 0.007629682, 0.011272492, 0.0148134325, 0.024174346, -0.026231969, 0.026544848, 0.012473076, 0.03010814, 0.018254066, -0.009876489, 0.05678812, 0.0172515, 0.05704902, 0.008106797, -0.064579956, 0.07731134, -0.024755927, -0.0679603, -0.018365288, 0.03055199, 0.013091948, 0.01629883, 0.052582957, 0.00019957752, 0.03154572, 0.0093253115, 0.009913909, 0.0016901721, -0.025018392, -0.0075961594, 0.029728735, -0.009981734, 0.01542256, -0.047712017, 0.023518963, 0.0090433555, -0.019032627, -0.031561315, -0.010581506, -0.025037102, 0.03371197, -0.03302696, 0.03257687, 0.0054727895, 0.018061765, -0.029231869, 0.025740463, 0.003670355, -0.033831246, -0.020658351, 0.05226124, 0.00084612553, 0.0115493145, -0.030213125, -0.023264814, -0.024430573, -0.048389234, -0.0073164124, 0.0028594416, 0.006724307, -0.024993965, -0.024887031, -0.0030752607, -0.008252582, 0.025281249, 0.01635665, 0.0026857208, 0.010823443, -0.043864436, -0.05143902, -0.014507829, 0.015883043, 0.028825438, 0.0021465302, -0.04490624, 0.015452705, 0.06829293, 0.022744235, 0.033184197, 0.020268098, 0.034707777, 0.04351933, 0.0003084616, -0.0072219516, -0.004871978, -0.018096067, 0.039418735, -0.021590753, -0.05181739, -0.025850356, 0.017927673, 0.01146206, -0.014132583, -0.0004937464, 0.017212002, -0.010890228, 0.036232676, -0.049775876, 0.008935122, -0.010687792, 0.001028032, 0.0031029528, -0.03589485, -0.02551266, 0.039539345, -0.03609027, -0.05298783, -0.011954122, -0.020392248, -0.0052771103, -0.010656088, -0.047955774, 0.050335113, 0.0025019953, 0.007728431, 0.009259566, -0.021708213, -0.05357305, -0.004715019, 0.0037912745, 0.030189479, -0.010702084, -0.00060496933, -0.0234857, -0.01692225, -0.051829863, -0.048482783, -0.017437045, 0.028951084, -0.008397847, 0.020404203, 0.057050068, 0.0485254, -0.0060026655, -0.019354861, -0.03989679, 0.04881437, -0.06671814, 0.0016023372, -0.011270932, 0.027044833, -0.05573098, -0.0002868927, 0.008912384, -0.021856856, -0.00334916, -0.05657464, 0.015122155, 0.012418763, -0.004654015, -0.021539299, -0.00012057808, -0.014943366, -0.031265065, 0.010687272, 0.008984626, -0.073257424, -0.014007847, -0.006650245, 0.00072450796, -0.022360997, -0.038257033, 0.008402168, -0.012748013, -0.050150085, 0.01811166, -0.044135734, -0.0182299, 0.014205605, -0.04439976, 0.016947458, -0.020378346, -0.03404148, 0.009162245, -0.030398149, 0.04517416, 0.026422191, 0.0072788624, -0.014988063, 0.011602262, 0.013187188, -0.021046462, 0.02930333, 0.060746405, 0.018464038, -0.00849036, -0.0067788786, -0.001084683, -0.047925632, -0.025958588, -0.04702649, -0.0067367805, 0.011122288, -0.0055741374, 0.027579118, 0.024342218, -0.008692017, 0.021294245, -0.008082889, 0.026537571, 0.029937146, 0.00778872, -0.030284848, 0.023694113, -0.010253295, 0.014777052, 0.03177476, -0.035326, -0.041663885, 0.006486789, 0.020901067, 0.05158455, 0.024674589, 0.022302268, 0.0066224393, -0.035171703, -0.011516246, 0.0138242515, 0.00876793, -0.070229456, 0.011337197, 0.07818449, 0.019469723, 0.0030294594, 0.006927003, 0.0058469977, 0.010804212, -0.047371075, 0.016029608, -0.06370264, -0.013278142, -0.011475707, 0.010500687, 0.013871417, 0.03322914, -0.010221672, -0.031525128, 0.05004562, 0.044391442, 0.007805872, 0.036977973, 0.00058418006, 0.061034597, -0.034380347, 0.040960684, 0.0022339427, 0.010973742, 0.018643865, 0.03797378, -0.047524396, 0.02196613, -0.012414946, -0.038706083, -0.019593159, 0.036193173, -0.062288977, -0.005421596, -0.027029239, -0.00033158972, 0.033605944, 0.009490326, 0.04954304, 0.063763194, 0.009499682, -0.023171261, -0.017705748, -0.022722732, 0.010453392, 0.026610335, -0.00825648, 0.013022432, 0.0073718945, -0.00013279181, 0.06332272, 0.023636423, -0.058116555, 0.051566362, -0.004009611, 0.030720644, 0.035563257, -0.031190224, 0.071464345, 0.013510851, -0.02050451, 0.013895584, -0.0032015562, -0.03514955, -0.047417067, 0.022313181, -0.02864561, 0.032785285, 0.044614017, 0.06087374, 0.013447574, -0.04684511, -0.037337627, -0.016070148, -0.02155645, -0.05137536, -0.02757418, 0.014070085, 0.012523489, 0.025289042, -0.0067586093, -0.014853452, 0.061745334, 0.00055507495, 0.019774806, -0.0005927556, 0.011434387, -0.050890185, 0.004733859, -0.0154032, 0.026937766, 0.005755784, 0.054687746, -0.024142642, 0.013854006, -0.06336586, -0.003075001, -0.0071502277, 0.041120503, -0.044552043, 0.028607931, -0.009885324, -0.025998026, -0.0005489924, 0.04241126, -0.032732792, 0.05707085, 0.0077344086, -0.02147641, -0.018222623, 0.045617495, -0.026647627, 0.017199008, 0.021082973, 0.0044061677, 0.004860544, -0.025946636, 0.10019623, 0.03283206, -0.00496579, 0.021139625, -0.019943198, 0.018080994, 0.0488731, -0.028832195, -0.007498709, 0.016446434, -0.0021392214, 0.015722966, 0.009106244, 0.0038315372, -0.0108811, -0.016273882, 0.07195809, -0.03179909, -0.058652923, -0.049975455, 0.07125749, -0.014528359, -0.048276186, -0.011779752, 0.0113065345, -0.037969492, 0.01308584, 0.015248969, -0.010893606, 0.0018344305, -0.062089395, 0.0014853973, 0.0009282434, -0.00644521, -0.008423834, 0.02731808, 0.017531117, -0.000630956, -0.025609327, -0.013666901, 0.008274151, 0.052359995, 0.022699602, 0.028175836, 0.035950977, 0.053062674, 0.0046682428, 0.030048888, -0.023074852, 0.0477879, 0.04895827, 0.008543762, -0.012115238, -0.011215321, 0.0043241144, -0.005628092, 0.018188579, 0.0012224122, 0.014728717, 0.050839253, 0.046350837, -0.056354664, 0.03622592, 0.0049109585], [-0.06521064, -0.081392825, -0.04276104, -0.06854308, 0.008502797, 0.028117394, 0.029889965, -0.015214193, 0.023059478, 0.019637862, -0.009899805, 0.05058029, -0.08262836, -0.026659457, -0.0190487, 0.023828054, -0.01918501, -0.027927399, 0.032693118, 0.024567822, -0.012126597, 0.016478255, -0.05294556, 0.040376935, -0.0005063596, 0.024821524, 0.04405668, 0.031885214, 0.022768665, -0.02636255, 0.004270518, -0.044159155, 0.022965863, 0.02310933, 0.0504191, 0.022872249, -0.005228251, 0.0056714807, -0.03448425, -0.044544138, -0.07398708, -0.016323432, -0.0126605835, 0.002731974, 0.011839662, 0.021014651, 0.024452606, 0.015636286, -0.016870437, -0.008472332, 0.024377272, -0.01878038, -0.051998347, 0.011560967, -0.03141936, 0.04383345, 0.03769066, 0.020018134, 0.0031754626, 0.005931463, 0.0037251671, 0.027082657, -0.06594072, -0.03531133, 0.023149766, 0.017369596, -0.013173521, 0.01777334, 0.008490543, -0.017739274, -0.021540606, 0.016955465, 0.010383938, -0.0108459145, 0.052986555, -0.017838703, -0.054070596, -0.0031906264, -0.00744341, -0.034003437, -0.010462596, 0.020316424, 0.0049889544, -0.07356166, -0.06779859, 0.05764177, -0.0022335597, 0.02202197, 0.047438413, 0.026825635, -0.016675454, 0.0014247034, 0.03358799, 0.015550288, -0.019708212, -0.011534723, -0.004922483, 0.052175604, 0.043025818, 0.028065326, 0.033334292, -0.028404329, -0.018995307, -0.01150675, 0.0040691565, -0.002538099, 0.024679441, -0.04410487, 0.003140773, -0.015593079, -0.027243298, 0.0055459295, -0.0054218494, -0.04345456, -0.0015249642, -0.004886339, 0.036133844, -0.05513912, -0.04659312, -0.03811691, -0.008374287, 0.010760055, 0.004877829, 0.03726358, -0.01762101, -0.054112136, -0.01837269, 0.013666517, -0.04767549, 0.024130775, 0.015906049, -0.0018321176, 0.033300776, 0.001164911, -0.026692692, 0.024173426, -0.022571467, 0.055542275, -0.011497611, 0.030036204, -0.030249465, -0.0038622646, 0.031279217, -0.00013072706, 0.026154274, -0.033472497, 0.019250667, -0.09444143, 0.006733759, -0.0072149145, -0.011217601, 0.03221913, -0.023400662, -0.01989184, -0.032747682, -0.06322758, 0.0012878831, 0.014663587, -0.048036654, 0.013778964, -0.020059817, -0.009252816, 0.027362946, 0.009084976, -0.0139113525, -0.01994363, 0.00204538, 0.0020251614, -0.01618135, 0.018997522, 0.071922034, -0.0040760804, 0.017182853, 0.020927407, -0.026249548, -0.018775951, 0.033625655, -0.023783738, 0.005892688, 0.049653016, 0.017745644, 0.012811528, 0.0042120703, -0.030710887, -0.038065944, 0.037618373, -0.028926132, -0.027102044, 0.012887694, 0.020747935, 0.029398078, -0.013913881, 0.039538287, -0.013258825, -0.018028148, 0.052917868, -0.03246019, 0.0026893215, -0.002584352, 0.051495384, 0.029207528, -0.007476923, 0.0060245236, -0.03556219, -0.033925887, -0.037908632, 0.027942354, -0.006268251, 0.051446635, -0.028822545, 0.01575081, 0.033297732, 0.038339585, 0.056292396, 0.024815984, 0.02280467, 0.057954185, -0.046721075, 0.012945302, 0.059412125, -0.034871995, -0.007407128, 0.0012729269, -0.056770995, 0.0066158418, 0.026134333, -0.020806374, 0.044136997, -0.00084640225, -0.023905326, 0.07869769, -0.021377752, -0.027241634, -0.049885664, -0.019191395, -0.0017930656, -0.038085885, 0.055141337, -0.07388959, 0.05202272, -0.021372765, 0.017719056, 0.027975867, -0.030070547, -0.0169286, 0.01077058, -0.034432177, 0.0012385835, -0.039400637, -0.02126295, 0.016854927, -0.0029823494, -0.026626773, -0.0028264879, -0.012384727, -0.00042070844, 0.01295195, 0.0022038727, 0.042222623, 0.033710964, 0.0053431913, -0.07544502, 0.0062034507, -0.04322634, 0.032149993, 0.0060835164, 0.021198833, -0.014961601, 0.017638182, -0.021315157, -0.019095013, -0.0806381, 0.037919708, 0.024168095, -0.025167452, 0.037229516, -0.0018562134, 0.024134306, 0.04376476, 0.046863433, -0.03873322, 0.0049212365, -0.0024649806, 0.0005295554, 0.04072037, -0.013243316, 0.02076289, -0.0665139, -0.013450762, -0.023678008, 0.003804379, 0.039357707, 0.028588789, 0.058911372, 0.052291375, 0.0032948342, 0.034791123, 0.0019379178, -0.051104862, -0.04405945, 0.053081833, 0.008692241, -0.017836487, 0.019304398, -0.0008270148, -0.013210079, -0.055768386, 0.04526258, 0.017873878, 0.018697293, -0.027568037, -0.029975826, -0.04415057, 0.0018578753, 0.031249307, -0.018897815, 0.020731317, 0.078631215, -0.03727144, -0.011459667, -0.03084383, -0.018803647, 0.020539658, -0.02953102, 0.018214267, 0.040671624, 0.022616887, 0.02415127, -0.020952888, -0.025934918, 0.036398623, 0.01907064, 0.014852477, 0.0005362025, -0.01094119, 0.049598727, -0.0394131, 0.011464374, 0.008235251, 0.02342237, 0.021525096, -0.041140247, 0.0006562664, -0.02186853, 0.032628585, -0.06961326, -0.020649614, -0.08263944, 0.025775388, 0.012982969, 0.032411445, -0.010409428, 0.014180008, 0.026408527, -0.027458083, -0.0048436867, -0.011355529, 0.0054849973, -0.017257633, 0.0032748235, 0.009443645, -0.031948917, -0.047817748, 0.041658722, 0.009161696, -0.005674994, 0.03260643, -0.006032555, 0.031292513, -0.033814646, 0.06663978, 0.008652358, -0.00554039, 0.023046182, 0.01409138, 0.029949792, -0.053775348, -0.02826976, 0.02546657, 0.0054484378, -0.0002960746, -0.02578425, 0.05817354, 0.002792629, 0.038186703, 0.034243844, 0.060041387, 0.026828682, -0.03341184, 0.04864265, 0.02991877, -0.008826292, 0.008653467, 0.010554271, -3.4620512e-05, -0.042631976, 0.043969296, 0.035574377, 0.009928955, 0.016181627, -0.0030410658, 0.010718478, -0.00236832, -0.030386286, -0.011772083, -0.020069927, -0.06801795, -0.025681218, -0.007182787, 0.03022454, 0.06527268, 0.0049964325, -0.01922408, 0.021921154, 0.009050356, -0.026363244, -0.04967185, 0.01997022, 0.0097239325, 0.005606861, 0.0069916816, 0.026790183, -0.0678983, 0.0070692315, 0.026425837, 0.013701969, -0.030960709, -0.023069171, -0.038899053, 0.020053862, -0.0011628338, 0.040944155, 0.025034403, 0.08545118, 0.012043507, 0.021589905, 0.0222236, -0.0015388125, -0.038297556, -0.03130359, -0.013186261, -0.031765565, 0.019873282, 0.025225889, -0.002358055, -0.0023325917, -0.0024195584, 0.020479834, 0.019402998, -0.051487073, 0.023476586, 0.014264759, -0.01786917, -0.04287626, -0.054495454, 0.013990011, 0.02747484, -0.061235655, -0.03234664, -0.042159475, -0.039425425, 0.0042441976, 0.037089925, 0.0052667493, -0.010201142, -0.0035916704, 0.061871566, -0.06567373, 0.014121152, -0.0051948773, -0.008868114, 0.0062571727, -0.03690159, -0.062268175, -0.030618936, 0.0036370927, 0.050457872, 0.014318767, -0.023620052, 0.011583746, 0.006931303, -0.013963561, 0.01904959, 0.015261553, 0.012635362, 0.011698964, -0.018012082, -0.011059454, -0.0064117187, -0.013878083, 0.010768364, 0.04887752, -6.09321e-05, 0.058053892, -0.034020606, -0.017738996, 0.03801526, 0.040075045, -0.018297357, -0.022483114, 0.053879492, 0.018945452, -0.050134934, 0.034016732, -0.001781433, -0.07589703, 0.0003402504, 0.052259803, -0.007195527, 0.016494874, -0.014701255, -0.027776176, 0.010080663, -0.018342087, 0.053409755, 0.058357447, -0.000810397, -0.081726566, -0.028168911, -0.036995202, -0.015004807, 0.013289153, -0.0068509844, 0.009647214, 0.015654841, 0.0023431163, 0.069134675, -0.038278654, 0.011376577, -0.018111791, -0.03978818, -0.04904231, -0.005437359, 0.0018429192, 0.02803763, -0.007018824, 0.040738095, 0.06101962, 0.01292363, 0.014979327, -0.04050988, 0.015001483, -0.006857077, 0.0033462802, -0.0048745684, -0.03537455, 0.0035362777, 0.026306465, 0.026882134, -0.023606203, -0.025990209, -0.010802915, -0.057345416, -0.07273742, 0.061096065, 0.00034205065, 0.014386623, 0.03748958, 0.033026308, 0.038855292, -0.029390324, -0.015400312, 0.020181267, 0.007336476, -0.00018695078, 0.043740388, 0.025638012, -0.06670729, -0.06646252, 0.030106828, -1.7725702e-05, -0.028414302, -0.05067335, -0.011136726, -0.009745813, -0.0017826102, 0.012677201, -0.035383824, -0.0017603837, -0.0032993348, 0.0054240646, 0.0141041195, -0.011888961, -0.02527602, 0.017595805, 0.018988105, 0.013343022, 0.023333672, 0.050172597, 0.0051933536, 0.030127048, -0.017838703, 0.03390927, 0.010768364, -0.052480265, -0.018405927, -0.050672796, 0.005802502, -0.011854064, -0.03222699, -0.033729795, -0.050272793, -0.010005051, 0.011887299, 0.0047443947, 0.006696715, -0.0068908664, 0.051110957, -0.0032701152, 0.0028937208, 0.01824141, -0.0023641656, -0.013521387, -0.0349573, -0.019258976, -0.0045006666, -0.022046514, -0.0080164485, -0.0033345092, -0.010527959, 0.03266182, 0.013461287, 0.008436326, 0.03458063, -0.03756762, -0.00060599745, -0.010309711, 0.04798514, 0.034425877, 0.01019214, 0.07097593, 0.012196392, 0.064889364, 0.007016055, -0.037456624, 0.0927719, -0.0058051674, -0.051404536, -0.028906189, 0.009360001, 0.036665615, 0.017852828, 0.017437521, -0.0015050229, 0.013196232, 0.004878792, 0.00816047, -0.005846158, -0.021374982, -0.00094417064, 0.041213714, -0.006929088, 0.014498239, -0.041690852, 0.04448431, 0.005191415, -0.01302313, -0.0037836758, -0.008731155, -0.037044503, 0.04435303, -0.031992678, 0.057768065, 0.020157447, 0.008670084, -0.014984866, 0.037130084, -0.0071670003, -0.029891629, -0.006544108, 0.0336035, 0.00324048, 0.0049504563, -0.015733777, -0.03393586, -0.018914431, -0.061265014, -0.009190845, -0.010001174, 0.025799206, -0.04199579, -0.026554212, -0.0018988659, 0.0035275533, 0.032373503, 0.02067821, -0.020534672, 0.037165746, -0.03991385, -0.056977052, 0.013275444, 0.024616567, 0.012445659, 0.01698787, -0.019963574, -0.026513772, 0.047759686, 0.019972434, 0.04066719, -0.0018866794, 0.07058818, 0.035442818, 0.013156626, 0.007825344, 0.014544008, -0.040287476, 0.022831535, -0.0334484, -0.029125545, -0.07286593, -0.0077649658, 0.013535789, -0.034407806, 0.020620532, 0.03455958, -0.0061851623, 0.031193914, -0.039983645, 0.00068243954, -0.0031188927, 0.02891173, -0.010140209, -0.04629732, -0.008831832, 0.05507154, -0.026960794, -0.029513018, -0.033316564, -0.007622052, -0.001820762, -0.024557196, -0.0466474, 0.0049343924, 0.0030587222, 0.04099678, 0.017450124, -0.03143875, -0.05682639, 0.013013435, 0.013909138, 0.00035506798, -0.010563964, 0.0047200224, 0.0049908934, -0.021356147, -0.04870137, -0.031907927, -0.0253821, 0.028301854, 0.0018191002, 0.040143732, 0.046697255, 0.054205198, 0.016467178, -0.04223592, -0.038989898, 0.02569562, -0.06321539, 0.023854917, 0.009068913, -0.0020140829, -0.06728011, -0.018553998, -0.021658594, -0.01074053, 0.022066284, -0.06554965, 0.011728875, 0.0042073615, 0.0025857368, -0.017987156, 0.014818861, -0.01724136, -0.041956738, -0.024174398, -0.01093842, -0.07104794, -0.009477088, -0.019146666, 0.0051889224, -0.037678886, -0.008394782, 0.005826494, -0.019724276, -0.05288131, 0.0015997447, -0.021482999, -0.0035199367, -0.0056993673, -0.069894664, 0.03094049, -0.02195162, -0.036598038, 0.00056583766, -0.04709719, 0.04397304, 0.04094859, 0.027479824, -0.033881016, -0.0024239898, 0.0010081494, 0.023052275, 0.01467245, 0.04756914, -0.002059505, 0.0028671324, -0.001041108, 0.009467741, -0.037901983, -0.063489035, -0.039678432, 0.013244423, 0.007257567, 0.006607256, 0.038526814, 0.028188298, -0.018884521, 0.017078714, 0.0051714736, 0.024017774, 0.02376795, 0.03959915, -0.021330668, 0.02885606, -0.035150032, 0.012948626, 0.04100066, -0.028150631, -0.016753005, -0.013765393, 0.03991773, 0.003772251, 0.020171572, 0.061760016, 0.005946973, 0.015157692, -0.029309448, 0.0020226687, 0.02076566, -0.06757592, 0.0048047733, 0.036293376, 0.039942656, 0.004411484, 0.019119386, 0.004024565, 0.03251448, -0.05449324, -0.0064940467, -0.050025254, -0.035889007, -0.0133075705, -0.011656311, 0.030299872, 0.000895148, -0.021440344, -0.032367133, 0.072298706, 0.05598663, 0.014398255, 0.05710889, 0.0059484965, 0.059010252, -0.03266847, 0.028627565, 0.01375736, -0.00805744, -0.007137815, 0.027310874, -0.019342411, -0.0036825147, 0.01872499, -0.00766332, -0.019616814, 0.024215525, -0.08714841, -0.010200034, -0.03349964, 0.013730773, 0.063101284, -0.015032504, 0.042278882, 0.051408965, 0.013415033, -0.038918994, -0.013435407, -0.034064647, -8.765914e-05, -0.003912395, -0.012446767, -0.009720419, -0.0076154047, -0.0016695396, 0.05175905, 0.016864898, -0.074461244, 0.051607274, 0.015547657, 0.028785156, 0.03642521, -0.047708727, 0.050744254, 0.027634371, -0.020379018, 0.001967553, -0.033253316, -0.039520286, -0.07404026, 0.023745794, -0.0016784024, 0.008616907, 0.033200793, 0.04402178, -0.0004869029, -0.069981076, -0.021482581, -0.013031991, -0.04217886, -0.048575073, -0.035471346, 0.015562059, 0.0073250076, 0.037026778, 0.0033460034, -0.042240348, 0.048295893, 0.0042056413, 0.016806182, 0.0012020242, 0.015841238, -0.032484565, 0.00027834892, -0.03230523, 0.057630137, 0.0062920703, 0.031336274, -0.027264347, 0.016790949, -0.037538607, -0.0013604476, 0.018908061, 0.029677259, -0.0117222285, 0.028762167, -0.0071213013, -0.018407589, -0.0059370026, 0.052434847, -0.0077070803, 0.020377738, -0.0007134595, -0.023446396, -0.01487408, 0.02714248, -0.012869968, 0.049042586, 0.01645776, 0.0019548128, 0.029289506, -0.00061375246, 0.09050522, 0.024352068, -0.0009649429, -0.002546962, -0.0026727037, 0.00724732, 0.03933001, -0.04050766, 0.0042120703, 0.018398171, -0.018205404, -0.0064078416, 0.010850346, -0.01505106, -0.006947368, -0.0068011303, 0.0419235, -0.026961347, -0.060601268, -0.06565074, 0.016864622, -0.014550586, -0.022563713, -0.011040897, 0.015738348, -0.0219134, 0.0017318565, 0.009629488, 0.0027751802, 0.0021043732, -0.047557365, 0.01114836, -0.02163865, -0.008278319, 0.0006420028, 0.056276336, 0.023144228, -0.022655664, -0.0124606155, -0.009848843, 0.014771604, 0.024443744, 0.0020406714, 0.019972434, 0.024590326, 0.035110187, 0.01145302, 0.01863636, -0.013070351, 0.027085427, 0.025026476, 0.018029809, -0.031122455, 0.016328141, 0.028105484, -0.010732358, 0.0021899552, 0.010566735, 0.024565056, 0.050616298, 0.031691343, -0.068009086, 0.0395117, 0.004535564], [-0.012971586, -0.081713244, -0.034566995, 0.008401239, 0.009536903, 0.048374947, 0.033813097, -0.041670445, 0.0019731664, -0.0052136215, -0.006536289, 0.02628427, -0.049959593, -0.0014933514, -0.0073686414, 0.034678288, 0.018879848, -0.07662055, 0.035576116, 0.0498376, -0.0121330125, -0.0399711, -0.021306077, 0.021913903, 0.0018662881, 0.00538056, 0.020492785, 0.0107169775, 0.019969147, 0.020773156, 0.0035784792, -0.058980696, -0.0058813756, 0.022812001, 0.024851382, 0.002009149, 0.025925515, -0.030253343, -0.050980486, -0.046534404, -0.08646136, 0.03724577, -0.02376307, 0.05183979, 0.003373016, 0.058488443, 0.02501939, 0.029843487, 0.0045769005, -0.02170523, 0.05202492, -0.011205889, -0.029122228, 0.016177129, -0.01775823, 0.011208664, 0.039318323, 0.032138895, -0.016567454, -0.0154059725, 0.019630536, -0.006824686, -0.06289359, -0.04600229, -0.005393134, -0.017242381, 0.041721813, -0.0032225307, -0.012741644, -0.063440956, -0.027752476, 0.029514426, 0.022434518, -0.022528153, 0.02324707, 0.019518977, -0.03425987, 0.023481093, -0.017700844, 0.009114741, 0.033213295, 0.0072717955, -0.035033565, -0.067548074, -0.0247433, 0.0011139943, -0.021346474, 0.010756839, 0.04430187, -0.0029653006, -0.027154544, 0.016033597, 0.052278537, 0.019694477, 0.029740222, -0.0053955414, 0.00088552374, 0.03903153, 0.025468841, -0.0071505373, 0.03524866, -0.016201606, -0.04006821, 0.005676448, 0.008281654, -0.030682461, 0.0015923375, -0.036766626, 0.0076830555, -0.016812745, -0.005701596, 0.0068375273, 0.016939988, -0.067190655, 0.019016022, 0.008151099, 0.03235399, -0.011199869, -0.024935387, 0.0066076526, -0.030734899, 0.006087909, 0.010942773, 0.029894318, -0.046962187, -0.046118934, 0.0015805662, -0.017007407, -0.035463486, 0.0031126428, 0.016641427, 0.012118566, 0.038639333, -0.011674467, -0.024575558, 0.03397415, 0.029596692, 0.044816595, -0.029609133, 0.044275116, -0.03899194, -0.033231486, -0.00022579517, 0.0059815994, 0.04559136, -0.028745279, 0.035702392, -0.025144594, -0.026410546, -0.011387674, -0.011543913, 0.017607743, -0.0006420716, 0.023297032, 0.011800474, -0.07998874, 0.005229941, 0.019780086, -0.053129286, -0.014028194, -0.012737363, -0.0028318034, 0.031706564, 0.012046333, -0.025831344, -0.050034497, 0.02017282, 0.012792206, -0.016038949, 0.01787795, 0.04404183, 0.033857774, -0.014104173, 0.012727062, -0.025386976, -0.013904863, 0.038216103, -0.0054297857, -0.0074262265, 0.015536595, -0.00940635, 0.0019026722, -0.019909035, -0.012772409, 0.0034634413, 0.030476999, -0.034679357, -0.01685759, 0.021699881, 0.014844696, 0.038070563, -0.04684447, -0.0012199361, 0.015467504, -0.029329833, 0.008100803, -0.016280795, 0.009317027, 0.020843249, 0.03774525, 0.025000129, -0.017163109, 0.043908067, -0.030168204, -0.056709904, -0.02973313, 0.026133385, 0.032970376, 0.048570976, -0.058980696, -0.010536395, 0.051421378, 0.044831578, 0.060013898, 0.012449768, -0.0029604852, 0.016672458, -0.06904838, 0.04716444, 0.06955347, -0.0062516374, 0.015292006, 0.03344404, -0.042920344, -0.0433698, 0.008178387, -0.013522295, 0.015031966, 0.019867033, -0.026218057, 0.054745167, -0.021731984, 0.008726422, -0.033419825, 0.00068144867, -0.030511243, -0.030122254, 0.01603788, -0.075697035, 0.026519697, 0.008304126, 0.02503223, 0.047106653, -0.008398698, -0.047613893, -0.018638268, -0.07240856, -0.015857028, -0.030663198, 0.005849272, 0.06491665, -0.023772702, -0.013000746, 0.012237884, -0.008351746, 0.021645838, 0.018989269, 0.00564916, 0.009982073, 0.007382912, -0.018024823, -0.06983599, -0.005111291, -0.03893455, 0.06617404, 0.0020193153, 0.028456079, -0.06044034, 0.004599373, -0.04797345, -0.005416142, -0.054913707, 0.03236469, 0.020143926, -0.045497786, 0.020743193, 0.0002653896, 0.05402658, 0.026654532, 0.014832924, -0.033830754, -0.010751221, -0.0035367445, 0.0043018796, 0.0106883515, -0.006494287, 0.0086166, -0.02931806, 0.0071505373, -0.021860933, -0.012596374, 0.02495652, 0.014976855, 0.045578524, 0.044255454, -0.028804403, 0.010996547, -0.0074777263, -0.030390318, -0.052705515, 0.052801825, -0.035636045, 0.010091693, -0.00658926, 0.0012314398, -0.021282533, -0.030182716, 0.021908287, 0.014898937, 0.025240904, -0.023254229, -0.014205165, -0.064630926, 0.008566305, 0.020371862, -0.028546369, 0.053822722, 0.08952618, -0.0033756245, -0.015531454, -0.02505651, -0.030821042, -0.011901332, -0.05262419, 0.028287536, 0.046252698, 0.012579253, 0.009475104, -0.047641713, -0.03972283, 0.06022525, 0.019725509, 0.028159121, -0.00014660635, 0.019184355, 0.040852875, -0.017944831, 0.007570024, 0.022442542, 0.0075978474, 0.023086753, -0.06921532, -0.0064774323, -0.011700551, 0.026271965, -0.053840917, -0.0018818049, -0.04036918, 0.020842714, 0.010700925, 0.039750654, -0.0055360617, 0.007854676, -0.018500222, -0.023985654, 0.026225416, 0.01937772, 0.013439094, 0.007515448, -0.007128065, 0.000809445, -0.025440482, -0.0058326186, 0.023406856, 0.00043232823, -0.042740565, 0.039303344, 0.002097434, 0.039305482, -0.012999809, 0.08335802, -0.011260331, 0.027774947, 0.028826874, 0.032426447, 0.051967137, -0.07040743, 0.0023751298, 0.029905822, 0.02031889, 0.03501591, -0.005445837, 0.045467228, 0.0059937383, 0.034379724, 0.05219614, 0.009032343, 0.026052056, -0.02905588, 0.05441771, 0.032031346, 0.036467526, 0.02085716, 0.013531659, -0.003863666, -0.0066170827, 0.043982442, 0.04297546, 0.035700787, 0.018943252, 0.0029535294, 0.010185931, -0.008827782, -0.029462526, -0.01009069, -0.023568308, -0.012413384, -0.02701905, 0.033283386, 0.012499262, 0.063871145, -0.020244518, -0.002160571, 0.04927498, 0.0042654956, 0.010037719, -0.019716948, 0.018701406, 0.00707991, 0.0017578048, 0.0025725667, 0.048713975, -0.03523903, 0.014093472, 0.022280956, -0.015388316, 0.0019452763, -0.028768284, -0.048894823, 0.012189729, 0.023348933, -0.00029107244, 0.008252225, 0.08637575, 0.027331918, -0.012630618, 0.009064446, 0.010642069, -0.0679911, 0.004342277, -0.0314488, -0.0231523, 0.0011945207, 0.022166453, -0.011978916, 0.010192351, -0.07315015, 0.032956466, 0.03209074, -0.032336865, 0.034045845, -0.022433981, -0.0301573, -0.02011256, -0.046819862, 0.05577676, 0.061249353, -0.04069236, -0.004103373, -0.0523695, -0.05558628, -0.00035099915, 0.03612081, 0.0030301767, -0.02305987, -0.0008346931, 0.053229876, -0.06512077, 0.033120193, 0.016216587, 0.012004599, -0.023421703, -0.007823642, -0.037428495, -0.028437352, -0.0038497543, 0.043187875, 0.019701298, 0.003918777, 0.029715072, 0.02555271, 0.012602795, 0.019038092, -0.021897852, 0.007800635, 0.014437514, 0.008530991, 0.015495864, 0.0006602636, 0.01876053, 0.024779683, -0.011996037, 0.007545411, 0.06775568, -0.034641102, -0.033400565, 0.038327392, 0.04863371, -0.024991099, -0.027907375, 0.050766997, 0.031918984, -0.04287968, 0.008207815, -0.029279267, -0.07430909, 0.018982846, 0.042256072, -0.023009438, -0.0335354, -0.024113, -0.02914149, 0.0053051165, -0.019160822, 0.07394525, 0.03604991, -0.013997162, -0.05559698, 0.012150134, -0.03139302, 0.0043564555, -0.03989833, 0.0024412097, 0.054096673, 0.0063716243, -0.012760103, 0.023083009, -0.04311939, 0.05702238, 0.016870966, -0.019929903, -0.036620554, -0.01810428, 0.01594451, 0.0072960737, 0.016113857, -3.5581466e-05, 0.044281002, 0.0090607, -0.018432805, -0.044399317, 0.014547612, -6.581234e-05, -0.0018103744, -0.025051493, 0.0011889025, -0.01589903, -0.003290617, 0.022945365, -0.018482432, -0.014550145, -0.0048867, -0.07227158, -0.05737552, 0.049101155, -0.024074474, -0.013784868, 0.04902645, 0.03347333, 0.03872548, -0.021784654, 0.009358461, 0.03801813, 0.032888245, -0.01596919, 0.033490453, 0.0054683764, -0.059759747, -0.06426615, 0.04696861, -0.01452794, -0.02539072, -0.061121874, -0.013356293, 0.016938651, -0.025423026, 0.0119951, -0.01677198, -0.03328713, 0.004671071, 0.037773073, -0.02484028, -0.02546028, -0.02883624, 0.038040433, 0.03861927, -0.033016395, -0.001966612, 0.033312812, 0.013885334, 0.05389549, -7.192372e-05, 0.061647434, 0.015326249, -0.033571783, -0.04859626, -0.021678478, 0.034658488, -0.014429489, -0.038637795, -0.012237618, -0.03836164, 0.00047660441, 0.012309583, 0.008256439, 0.0002447898, 0.021982927, 0.07044809, 0.008387595, 0.024968024, 0.016462449, 0.022887712, -0.02286417, -0.036671802, -0.033210084, -0.003273495, -0.05919044, 0.023413142, -0.05745257, -0.007159098, 0.016842607, 0.0004965354, 0.0023183466, 0.035634976, -0.042460065, 0.056944527, -0.0017507152, 0.045851402, 0.049567927, -0.036743615, 0.042085655, 0.019262683, 0.08261214, -0.009395648, -0.05183658, 0.08997563, -0.006367745, -0.014463197, -0.0356842, -0.011743489, -0.029634817, 0.017792372, -0.0011675002, -0.008190693, 0.003554, -0.0007062788, -0.0055153947, -0.010683002, -0.021239461, -0.0014489416, 0.043765742, -0.013192431, 0.011208965, -0.029627323, 0.017821766, 0.003159193, -0.009071401, -0.029313244, 0.006024772, -0.025660392, 0.02618368, -0.024138683, 0.064136535, 0.01670871, 0.046405457, 0.009870112, 0.0016404929, -0.010500012, -0.019272849, -0.016208028, 0.055930857, 0.0134304, 0.0034238466, -0.018270683, -0.039647922, -0.010477404, -0.026761545, -0.028399363, 0.0058171684, 0.020431789, -0.023809085, -0.06772678, 8.520826e-05, -0.005765268, 0.03425345, 0.032527346, 0.0033387723, 0.016430613, -0.0564199, -0.062489085, -0.03542416, 0.03666443, 0.002081382, -0.010894751, -0.010727947, 0.015412929, 0.07066212, 0.04978463, 0.039828237, 0.028509049, 0.012927042, 0.056286134, -0.024887232, 0.00077904685, 0.002716665, -0.03559431, 0.010792154, -0.0002718103, -0.029925888, -0.04996815, 0.009548675, 0.012712215, -0.006785627, 0.02036116, 0.039684303, -0.021057272, 0.04597206, -0.02513523, 0.012336335, 0.03883035, -0.010582411, 0.015467806, -0.0746344, -0.03553652, -0.0036413486, -0.013005161, -0.05111746, -0.040919226, -0.034402195, -0.022049807, -0.02440618, -0.029444333, -0.0047502597, -0.006901701, 0.026352758, 0.0073281773, -0.043504633, -0.018461699, 0.025426036, 0.038237505, 0.037216075, -0.020047616, 0.017069474, -0.006880065, 0.007424488, -0.035051223, -0.061181396, -0.01500615, 0.034579836, 0.007880894, -0.0044595553, 0.073881574, 0.01851253, -0.024895791, -0.017246043, -0.022837417, 0.01750588, -0.016823346, 0.027763175, -0.0006987879, -0.00051258714, -0.04096631, -0.014133067, 0.0286792, 0.012608146, 0.0100930985, -0.027916202, -0.0070630554, 0.0137595935, -0.015842047, -0.0034377584, 0.0026228626, 0.015056044, 0.013434813, -0.029968692, 0.004341407, -0.06376199, -0.026931157, 0.0037882226, -0.030281704, -0.043823525, -0.036710445, 0.0053067217, 0.013856975, -0.024141893, 0.04762245, -0.03866769, -0.018124076, -0.0013547711, -0.047395587, 0.009261883, -0.0063685477, -0.02686267, 0.03569597, -0.047252726, 0.02052489, 0.0363862, 0.030153822, -0.034564853, -0.025579598, 0.006521976, -0.012312792, 0.038903117, 0.04192968, 0.039321534, -0.01415982, -0.017398, -0.03252962, 0.001063431, -0.055708274, -0.038350403, -0.0009973512, -0.012041652, -0.005139783, -0.005511115, 0.024033675, 0.014751695, 0.017774682, -0.0026319586, -0.01837823, 0.013783673, 0.007156156, -0.015379756, 0.0068609444, -0.023352679, 0.04338906, 0.00063886127, -0.0072833155, -0.017231062, 0.0064651924, 0.054558963, 0.033935625, 0.012520663, 0.023391737, -0.011740012, -0.015655845, -0.0068723066, 0.0043457546, -0.0030776632, -0.07677143, -0.008347466, 0.065251596, 0.005985177, 0.008331949, 0.0055397404, -0.03556408, 0.013196177, -0.039464664, 0.00048289134, -0.059006378, -0.042503003, 0.007132345, -0.014692739, 0.01587736, 0.011186627, 0.018048165, 0.008580752, 0.032535106, 0.056717396, -0.0036457626, 0.034064442, 0.0024181854, 0.04995852, -0.03129778, -0.034935918, 0.032183304, 0.0017220895, -0.0009845097, 0.012978039, -0.039781753, 0.004678562, 0.033670235, -0.028123807, 0.01918082, 0.014434338, -0.0520185, -0.007888118, -0.02509102, 0.022981815, 0.017590087, -0.0034950096, 0.0609144, 0.028837577, -0.03692233, -0.046848144, 0.0051750974, -0.022807453, 0.009925357, 0.05924181, -0.03094571, 0.025071826, -0.009977792, 0.026807293, 0.025453726, -0.02236349, -0.03172262, 0.042549018, 0.013438626, 0.041922998, 0.04091588, -0.025150213, 0.06659139, 0.039209172, -0.0022419, -0.01604537, -0.009811389, -0.017037371, -0.049276855, 0.025606886, 0.002933197, 0.03406511, 0.040029418, 0.016904676, -0.006256988, -0.09122339, -0.024391897, -0.020956948, -0.037184473, -0.037308104, -0.048138246, -0.012983757, 0.021294305, 0.019940069, -0.011927551, -0.027746055, 0.08751008, -0.017357336, -0.0086166, -0.008687363, 0.0005527166, -0.059027784, -0.016263139, -0.007542201, 0.059598424, 0.0076692775, 0.062366556, 0.0042440933, 0.018610446, -0.0678782, 0.03560073, 0.01810856, 0.018686423, -0.008369404, 0.047135744, -0.0016059815, 0.007870727, 0.05144385, 0.042868983, -0.03945958, 0.024069123, -0.012440138, -0.050860632, -0.0071457215, 0.060838424, -0.032084852, 0.050751477, 0.02620401, -0.0008527847, 0.025225922, -0.043712236, 0.05408383, 0.009599506, 0.009344282, 0.0021841135, -0.016270094, 0.0042515844, 0.034852717, -0.0321207, -0.021066368, 0.013102542, -0.040078107, -0.013686558, -0.013348669, 0.029569538, -0.009291846, -0.030233013, 0.058976416, -0.02269576, -0.027096491, -0.052431565, 0.047089532, -0.01040049, -0.014656355, -0.05282965, 0.013257708, -0.032513436, 0.0146049885, 0.0063936957, -0.0070997067, -0.005989458, -0.05979827, 0.011242674, -0.010868132, 0.019000772, -0.010009093, 0.038796104, 0.03630487, -0.014403004, -0.04921907, 0.02796302, 0.0057296865, 0.019069126, 0.013434278, 0.031691317, 0.013472267, 0.008689369, -0.022874337, 0.012478661, -0.032378867, 0.013068297, 0.048420757, -0.019834796, 0.018602954, 0.014007328, 0.035067275, 0.008530991, 0.016610928, -0.0011551938, -0.023626631, 0.04874782, 0.047484938, -0.03135503, 0.010494761, 0.004259075], [-0.028988728, -0.08603851, -0.03553385, -0.046307094, 0.014943654, 0.048048966, 0.029605076, -0.0033203268, 0.03673357, 0.0113343075, -0.012992773, 0.02908135, -0.08921578, -0.02796625, -0.0073644146, 0.03087172, -0.0065196636, -0.018138383, 0.040800452, 0.06693706, -0.0028960118, 0.011762016, -0.0058385767, 0.05430458, -0.006751703, 0.030832924, -0.019880258, -0.0089828735, 0.024703387, -0.00960601, 0.014818541, -0.066169165, 0.010623882, 0.015624012, 0.03657257, 0.022253208, -0.0033719721, -0.036222454, -0.04818087, -0.053998105, -0.062335055, 0.00812406, -0.023880944, 0.02391683, 0.031588446, 0.0073040402, 0.011206043, 0.03218491, 0.013370413, -0.03355724, 0.038855147, -0.0015144415, -0.057683587, 0.0090958625, -0.008006222, 0.024641072, 0.031356156, 0.026960138, 0.019762903, -0.024671623, 0.004872593, 0.01680579, -0.063528225, 0.004561267, 0.0062747733, 0.02512819, 0.025567537, 0.017948048, -0.0043023136, -0.029327696, 0.0038872121, 0.015487595, -0.008472726, -0.0028801304, 0.03402159, -0.020380707, -0.06624881, 0.006710484, -0.0028960118, -0.025734352, 0.011042863, -0.01016247, -0.014001916, -0.038966194, -0.058543853, 0.046080142, 0.006621984, 0.040258054, 0.029267564, 0.003824171, -0.043682642, -0.02837335, 0.013725748, -8.0013715e-06, -0.0027272555, -0.019059753, 0.0007172139, 0.02815125, 0.049738467, 0.04581052, 0.016728733, -0.036113344, -0.014775382, -0.04758731, 0.0265317, -0.0027667775, 0.03023064, -0.029293751, 0.0076134265, -0.049849033, 0.004425486, 0.0032172787, -0.01024903, -0.057350926, 0.020404954, -0.0155992815, 0.064288355, -0.038982686, -0.047051944, -0.04469324, -0.023164215, -0.012040853, 0.032709125, 0.034973267, -0.008080901, -0.050099257, 0.0050820834, 0.0066425935, -0.051941995, 0.013561597, 0.044346027, 0.0064476514, 0.027069246, -0.023149665, -0.058829963, 0.04348479, 0.00076376734, 0.06303336, -0.029246468, 0.02056789, -0.011238775, -0.020867577, 0.009428162, -0.008749622, 0.021395184, -0.025963482, 0.0033753668, -0.033005357, 0.010080759, -0.010254364, 0.0007603728, 0.017459478, 0.003503146, 0.028305702, -0.012067705, -0.06220412, 0.0082642045, 0.03459405, -0.021320505, 0.0058987085, -0.009070646, 0.0037878011, 0.035724428, 0.019211173, -0.01376042, -0.024037091, 0.024881842, 0.023171972, -0.0047496627, 0.025511768, 0.09328533, 0.0010605456, 0.014730283, -0.0075115906, -0.046085477, -0.027423369, 0.020384707, -0.04412102, 0.01840958, 0.057918295, 0.02252765, 0.016154345, 0.018444616, -0.033693776, -0.042112436, 0.01890312, -0.026139755, -0.01168758, 0.012379334, 0.028160948, 0.021968372, -0.025130128, 0.033114042, 0.0028938295, -0.00375919, 0.048288524, -0.047810376, 0.020451507, 0.014689792, 0.037711438, 0.024879295, 0.017336791, 0.058630176, -0.04546622, -0.03448058, -0.039580725, 0.017237136, 0.0076248227, 0.05667881, -0.02972437, -0.0020017978, 0.031176254, 0.0368405, 0.052225683, 0.019980395, 0.02114605, 0.025788482, -0.04433051, 0.014082415, 0.05033396, -0.046262477, 0.013020899, 0.02447741, -0.032646567, -0.03835421, 0.02383148, 0.00324589, 0.030130742, 0.016093912, -0.011838636, 0.06844907, -0.0069568297, -0.028866526, -0.04609372, -0.03670399, 0.0022820884, -0.055940744, 0.04403761, -0.035990655, -0.00066726597, -0.017001703, 0.029834632, 0.027210483, -0.0037213652, -0.036896992, 0.009029912, -0.04115712, -0.010152529, -0.020008279, -0.005354494, 0.04085646, -0.010390145, -0.046561196, -0.002510976, -0.011309091, 0.0003801864, -0.012918578, 0.02258178, -0.00971706, 0.018993316, 0.0042465464, -0.07130435, 0.019638762, -0.03644746, 0.055332642, 0.019049084, -0.003577583, -0.043883406, 0.01922269, -0.029928526, 0.0067900126, -0.06052965, 0.033219755, 0.030804798, -0.023935255, 0.009826655, 0.01157544, 0.016859256, 0.05455869, 0.014379193, -0.065692715, -0.013210507, 0.0026642145, -0.018610464, 0.031398736, -2.0852061e-05, 0.0036641434, -0.035204098, -0.0052189557, -0.04495801, 0.0053575244, 0.028884467, 0.008212318, 0.069585755, 0.052260112, -0.030475045, 0.026143633, -0.028469851, -0.031190803, -0.028554715, 0.013638217, 0.028897077, -0.014165096, 0.039250366, 0.024178691, -0.012497658, -0.044183332, 0.04282522, 0.002390834, -0.006699876, -0.030608885, -0.023687152, -0.020432595, 0.00023895006, 0.047681876, -0.016779816, 0.019322101, 0.05680295, -0.017260171, 0.012955433, -0.016080333, -0.015213275, 0.019240025, -0.05604185, 0.032726582, 0.053596586, 0.004256851, 0.0032970503, -0.07526139, -0.03416586, 0.045083128, 0.02934588, 0.00035012062, 0.008644391, -0.009536604, 0.015872782, -0.0075135306, 0.00042079945, -0.01680676, 0.019285731, -0.020644508, -0.08168577, -0.012154084, -0.011083597, 0.032176185, -0.0493641, -0.010494891, -0.060046174, 0.020522306, 0.0234028, 0.039656013, -0.023365945, 0.0047731823, -0.013999491, -0.006044673, -0.002623965, -0.0021336991, -0.009463926, -0.009266074, 0.00145431, -0.034791417, -0.009148721, -0.048083395, 0.031762175, 0.039243095, -0.034705102, 0.056712758, -0.0006711454, 0.027718207, -0.03268536, 0.051674314, 0.009989591, -0.023276718, 0.036849104, 0.019072846, 0.05856034, -0.0418399, -0.024405155, 0.020238865, -0.0045767543, 0.018047823, -0.043369375, 0.05234061, 0.02214489, 0.019148495, 0.0068564485, 0.03894389, 0.034366135, -0.04023611, 0.051870227, 0.0141095705, 0.02246858, 0.035860453, -0.0015285045, 0.022908172, 0.016002744, 0.050731607, 0.046652365, -0.0016642854, 0.009886786, -0.03070684, -0.011661394, 0.0014344278, -0.02901273, 0.0033867627, -0.045013294, -0.050619103, -0.010718929, 0.014569104, 0.033501986, 0.055656575, -0.01645567, -0.003164785, 0.029333513, 0.03482973, -0.006091711, -0.035898518, 0.015981892, 0.023671452, 0.009119261, 0.032861877, 0.057353836, -0.038131144, 0.013626578, 0.04192137, 0.0021792827, -0.009775737, -0.012918578, -0.056337416, 0.022173135, 0.008250385, 0.029088138, 0.0041757463, 0.09308747, 0.024578277, -0.017117359, 0.01312322, 0.008039681, -0.032877393, 0.0013519893, -0.015116774, -0.0044176057, -0.013033023, 0.0238373, -0.042626943, 0.017555496, -0.030352842, 0.064313576, 0.03339715, -0.02255417, -0.005653818, -0.022631032, -0.015388335, -0.012872995, -0.045584787, 0.053369634, 0.048805337, -0.06153782, -0.028587203, -0.036875658, -0.052874524, 0.0004604426, 0.021707237, 0.00020585347, -0.017706795, 0.028952358, 0.06667228, -0.057291765, 0.036551237, -0.014132848, 0.008220955, -0.0068939095, -0.02333491, -0.039928302, -0.015544969, 0.017744618, 0.0498083, 0.011215862, -0.034792878, 0.041336544, 0.041208036, 0.010112764, 0.03770489, -0.025213536, -0.009608435, 0.009831989, -0.0021237582, -0.03150892, -0.019831885, -0.009311657, 0.0038663598, 0.037995365, 0.011973932, 0.066076785, -0.040722135, -0.017519126, 0.017832391, 0.000269622, -0.050575458, -0.019135183, 0.05403981, 0.042541113, -0.054510195, -0.0004969337, -0.0013374414, -0.08821876, 0.042111464, 0.07460576, -0.025347376, -0.009956949, -0.02904886, -0.022436816, -0.008233169, -0.00494703, 0.04283886, 0.02167693, -0.011581137, -0.065859534, 0.00043934805, -0.007087276, -0.0077521172, -0.019417146, -0.013154741, 0.020334154, 0.023669513, -0.020667786, 0.019911293, -0.05813603, 0.0012021456, 0.006565247, -0.026051497, -0.06710678, -0.018807588, -0.006943251, -0.0008554194, -0.005454511, 0.029618412, 0.022518769, -0.0051318724, -0.008874249, -0.04543131, 0.002756109, -0.018973012, -0.027209515, -0.009707361, -0.016393842, -0.0049942504, 0.029237013, 0.025616512, -0.007828737, 0.008969296, 0.011275509, -0.075082935, -0.043651603, 0.07432984, -0.030169537, -0.039071426, 0.050032094, 0.03926346, 0.021348145, -0.031294823, -0.0032587405, -0.0051252423, 0.03518373, 0.004199023, 0.041176513, 0.022839312, -0.0626842, -0.07279794, 0.04289899, -0.023977688, -0.008942139, -0.051266488, -0.002709798, -0.010694682, -0.023249563, 0.0005664002, -0.027365662, -0.018417703, -0.0049909162, 0.02063675, -0.0002633179, -0.0013750236, -0.030708294, 0.017016737, 0.040526707, 0.008463875, 0.0041496814, 0.0346891, -0.00537671, 0.029016368, -0.017442992, 0.07184553, 0.00040346314, -0.050470714, -0.021770522, -0.025871709, -0.014974689, -0.0096305, -0.020021858, -0.030393576, -0.055027135, -0.013546079, -0.0062114894, 0.0014383072, 0.001634462, -0.023309695, 0.037580263, 0.01421759, -0.003376094, -0.006364728, -0.00013384114, -0.034155432, -0.02490706, -0.040862765, 0.008359737, -0.06337086, -0.019222206, -0.022481432, -0.021082887, 0.00312199, -0.0005043289, -0.021483442, 0.00723324, -0.009324265, 0.017637327, -0.008700401, 0.064024314, 0.036862746, -0.0038964257, 0.068557695, -0.0018815347, 0.049451876, 0.0029328666, -0.05880087, 0.08993736, -0.016694803, -0.026056347, -0.017675515, -0.011097175, 0.005959385, 0.021873811, 0.029569311, -0.029867424, 0.012414462, -0.004873917, -0.013092457, -0.008954748, -0.04023914, -0.020227954, 0.06888163, 0.010640855, -0.009939644, -0.037150614, 0.015990134, 0.021508658, 0.016218053, 0.012760733, -0.00801301, -0.009750338, 0.039335717, -0.044161752, 0.018725635, 0.04645257, -0.0023722856, -0.00021336992, 0.023495907, -0.009239038, -0.03772768, -0.028088331, 0.041013576, 0.01215966, 0.008416474, -0.020540249, -0.005643392, -0.021312261, -0.050542485, -0.010910234, 0.0043852367, -0.007906568, -0.0384415, -0.037994392, 0.028034868, -0.0057163737, 0.0376941, 0.025379866, 0.0063899136, 0.015037245, -0.054277427, -0.054772057, -0.017466268, -0.005477485, -0.015405914, -0.009827745, -0.0024827288, -0.03622512, 0.056595735, 0.02993774, 0.05649696, 0.04392947, 0.05104972, 0.05592135, -0.011522945, -0.02804675, -0.016025657, -0.03261941, 0.027268676, -0.015915092, -0.038181577, -0.096604206, -0.016363049, 0.034794815, -0.008562559, 0.040499065, 0.026351245, -0.017564224, 0.0057404996, -0.012407461, -0.01156271, 0.03305876, 0.009032337, 0.0062337965, -0.063025594, -0.0058502154, 0.034112033, -0.02078029, -0.017830936, -0.031265117, -0.056729242, -0.023312602, -0.0147371935, -0.047577612, 0.02340474, -0.021588186, 0.010663374, -0.005638785, 0.0031908501, -0.033564057, 0.022670068, 0.02474897, 0.030177295, 0.007273005, 0.02184326, -0.0051536113, 0.0024935184, -0.052146155, -0.028630713, -0.022427117, 0.03967226, -0.033151865, 0.04109135, 0.04541288, 0.030154988, 0.0034784148, -0.013539171, -0.04637692, 0.05202686, -0.034901984, 0.010697107, -0.0052847853, 0.012676113, -0.06507686, -0.023541491, 0.0066348347, 0.012241129, -0.00534872, -0.045792338, -0.016535502, -0.014967901, -0.0015236553, 0.022047902, 0.0020568375, 0.0026215403, -0.025631547, -0.017558768, -0.0035925554, -0.058603015, -0.011467178, -0.013926146, -0.018370604, -0.027233275, -0.02116193, 0.004368264, -0.032309055, -0.030948337, 0.048112977, -0.039069973, -0.031744413, -0.0026303902, -0.0480286, -0.0038051372, 0.009297958, -0.044501208, 0.024102073, -0.013186003, 0.053396795, 0.029563857, 0.040240597, -0.024698537, -0.0032534366, 0.0023519185, -0.022689952, 0.0073487754, 0.023633415, -0.0002932624, -0.018934095, -0.021207029, 0.00962856, -0.022578416, -0.08177887, -0.047113534, 0.0018255251, -0.009935279, -0.005759048, 0.0073350756, 0.0024949734, 0.013580025, 0.037887707, 0.028548652, 0.0066339863, 0.0044613713, 0.022821853, -0.031629182, -0.007861712, -0.023312602, 0.0010232057, 0.03938906, -0.0020529581, 0.0073573827, 0.019956391, 0.04049373, 0.005052745, 0.029412072, 0.067704216, 0.016856223, 0.00032635898, -0.023732312, -0.00875344, 0.029382978, -0.08046762, -0.012007271, 0.042286526, 0.026492057, 0.036059756, 0.007443943, -0.030497352, 0.04474658, -0.052068565, -0.00972106, -0.051562782, -0.04098448, -0.010679649, -0.018816317, 0.011637633, 0.01795411, -0.025193168, 0.0059006484, 0.043488424, 0.018669868, 0.037067205, 0.036133226, -0.010619033, 0.06824152, -0.03196136, 0.04822257, 0.017856153, -0.0053929244, 0.015387366, 0.053394854, -0.034221623, 0.0042606094, 0.059945308, -0.028490704, -0.007959668, 0.03577353, -0.06995042, 0.0061342637, -0.027974736, 0.014454721, 0.02377523, -0.01689732, 0.014668212, 0.021453377, -0.02044981, -0.0224373, 0.0008418413, -0.0075879074, -0.0024566636, -0.0036248642, -0.031159768, 0.0005370618, -0.019341012, 0.019832188, 0.03086493, -0.008465936, -0.050091498, 0.060727865, 0.031181589, 0.03030241, 0.035657994, -0.06403195, 0.03543129, 0.023510091, -0.015252556, -0.008342763, -0.00968166, -0.014465511, -0.067812845, 0.036998343, -0.030543903, 0.015378152, 0.034458727, 0.009465381, 0.02029342, -0.05832952, -0.011376754, -0.012403581, -0.02172639, -0.04030121, -0.038638383, 0.0018390957, 0.014922317, 0.021977587, -0.011027223, -0.033592425, 0.065844014, -0.011135243, -0.00903464, 0.0026002033, -0.004417, -0.025134007, 0.014597412, -0.0144626, 0.02992901, 0.0005084508, 0.037010953, -0.023340972, 0.013993914, -0.057148222, 0.0152902575, -0.015640015, 0.04342496, -0.03589522, 0.023696668, 0.013330771, -0.02666724, 0.0014632812, 0.034425784, 0.011857912, 0.05205547, -0.02312542, -0.02128783, -0.014383073, 0.035530116, -0.015309777, 0.06296886, 0.010174836, -0.007499468, 0.035728794, -0.02163183, 0.08169352, 0.0028590357, 0.016401842, 0.0057445, -0.01716852, -0.0015918487, 0.043650635, -0.05432786, 0.015500355, 0.03925425, -0.009410826, 0.0023863486, 0.0048660007, 0.011485121, -0.013158135, 0.0060044234, 0.031543832, -0.03137835, -0.021159507, -0.0432142, 0.06297129, -0.021843746, -0.06726362, -0.013807944, 0.022014199, -0.009946917, 0.007817825, 0.0193575, 0.00533934, -0.0057299524, -0.080917634, 0.010480099, -0.0065463344, 0.012613556, 0.0062054885, 0.050722394, 0.044582676, 0.004873563, -0.0064248596, -0.0037099693, -0.004009657, 0.050438706, -0.013503891, 0.02703397, 0.029032372, 0.023305815, 0.030837286, 0.017259687, -0.0047345087, 0.049032405, 0.060550015, 0.010366868, -0.02101921, 0.014731253, 0.0043842667, -0.0025449211, -0.0011003099, 0.01404362, -0.00634921, 0.06765378, 0.02028134, -0.06850338, 0.0004383782, -0.009745186], [-0.021821983, -0.08397242, -0.047934677, -0.051238738, 0.013107692, 0.028754773, 0.005944847, -0.018565645, 0.010017668, 0.022595543, 0.02932272, 0.022329113, -0.06237499, -0.022189405, -0.02946026, 0.038208704, -0.020636031, -0.030248558, 0.051314056, 0.062275805, -0.009616736, 0.033504426, -0.024035584, 0.03905267, -0.009999422, 0.006752674, -0.009616269, 0.030486682, 0.025774922, -0.006619577, 0.019808905, -0.03056598, 0.014186745, 0.03962904, 0.034872133, 0.0009716852, 0.02310992, -0.042774737, -0.045954585, -0.038861796, -0.07022707, -0.008152425, 0.005288129, 0.010900466, -0.00911452, 0.042561408, 0.025082765, 0.044972606, -0.009053468, -0.015990118, 0.050205763, -0.021835083, -0.032530755, 0.019122362, 0.02528908, 0.01455101, 0.032027718, 0.05541366, -0.004586616, -0.015423456, 0.03144457, -0.016136197, -0.063120715, 0.0021370526, 0.024028743, 0.013509091, 0.024040496, -0.005421695, -0.0027442973, -0.051025406, -0.015122173, 0.03740272, 0.016289178, -0.023873422, 0.054298587, 0.011752269, -0.07074168, 0.01723022, 0.0019597446, -0.032742683, 0.010318483, 0.032980807, -0.012173902, -0.04454782, -0.049455363, 0.04382794, -0.031999182, 0.034381844, 0.056502774, -0.010526201, -0.033326417, -0.0004388256, 0.055928275, 0.021796485, 0.0042867367, -0.032967124, -0.002623597, 0.03197766, 0.021770127, 0.038883783, -0.0052771354, -0.024389908, -0.04142551, -0.0064297537, 0.022012858, -0.0014280545, 0.023647929, -0.033219695, -0.023234366, -0.023911783, -0.030115107, 0.01590848, 0.0057758433, -0.05612664, 0.0074394504, 0.0019536628, 0.036635853, -0.05355941, -0.015463281, -0.023248633, -0.012365713, 0.0015920294, 0.0016439586, 0.030802235, -0.014358673, -0.037172925, -0.0069940756, -0.017334078, -0.064691685, 0.0066244886, 0.010520587, 0.0042932862, 0.039468106, -0.009629835, -0.03476921, 0.032239176, -0.011226076, 0.06547952, -0.02915617, 0.042538013, -0.03329823, -0.03174889, 0.014101833, 0.003538207, 0.03095545, -0.05897058, 0.0017335484, -0.02855267, -0.00250699, -0.03864589, 0.009201536, 0.027538413, -0.02137614, -0.01008644, -0.023028519, -0.07745073, 0.0068350127, 0.015433924, -0.013506606, 0.0043532858, -0.0153864985, 0.0038184084, 0.037535496, 0.020637434, -0.038605426, -0.052584216, 0.006445777, 0.01717411, -0.02207508, 0.014889486, 0.059732676, 0.0034502544, 0.002820086, 0.029800843, -0.047906373, -0.03178702, 0.023088869, -0.016383447, 0.020930765, 0.032949816, -0.01698414, 0.008434995, -0.0064640227, -0.0037256903, -0.021564208, 0.020251006, -0.0017865886, -0.03656159, 0.048682507, 0.006895831, 0.021945257, -0.04202106, 0.02178181, -0.0027442973, -0.026832921, 0.061045412, -0.022649283, 0.027205316, 0.007817633, 0.052932285, 0.027645078, -0.009009024, 0.02586498, -0.05005793, -0.044186182, -0.025554808, 0.02499528, 0.016215961, 0.045684643, -0.03779514, -0.014855977, 0.054670513, 0.011632153, 0.04679902, 0.024431078, 0.04160399, 0.026346376, -0.04209825, 0.036075395, 0.063989945, -0.029715698, -0.013143715, 0.019695925, -0.06686336, -0.034447342, 0.011367361, -0.0029203189, 0.016207542, 0.019154409, -0.020856848, 0.06388702, -0.009735098, -0.016087778, -0.046164643, -0.015621992, -0.015144629, -0.04617306, 0.02518148, -0.052279193, 0.025017738, -0.03037534, 0.019271368, 0.019327508, 0.007391615, -0.009511943, 0.014124758, -0.047585912, 0.010178601, -0.015378779, -0.027223561, 0.055462312, -0.012605242, -0.05159955, -0.024835283, -0.007708629, -0.0079606725, 0.0064324443, -0.003703702, 0.021318596, 0.01086491, 0.014802879, -0.06678664, 0.0031873335, -0.028499575, 0.04149475, 0.03252467, 0.026660759, -0.033630975, -0.0028734189, -0.052459776, -0.023865001, -0.06791785, 0.042913213, 0.0116703985, -0.027087422, 0.048562743, 0.011953086, 0.024616338, 0.038422268, 0.008575344, -0.032692038, 0.0063858945, -0.0021660582, -0.0025698328, 0.00921253, -0.0065018, -0.009868664, -0.036330946, 0.0058160764, -0.027847182, 0.008584467, 0.020610534, 0.01628415, 0.03911957, 0.05352877, -0.015412229, 0.052486908, 0.03125264, -0.04298526, -0.042101994, 0.015745558, -0.005769761, -0.0126089845, 0.009336272, -0.0039934064, -0.011591686, -0.031670295, 0.048016787, 0.036515154, 0.017845653, -0.032168068, -0.02803057, -0.05103663, 0.004268959, 0.0306068, -0.023552021, 0.045117166, 0.062147625, -0.030095575, 0.0082347635, -0.030885393, -0.042973567, 0.026847659, -0.033745594, 0.048180994, 0.03780637, 0.02411541, 0.01595959, -0.051876858, -0.018078633, 0.027958758, 0.04049359, 0.009710303, -0.0033487354, 0.009613929, 0.03641317, -0.02273519, 0.008918966, 0.017567994, 0.00855476, 0.009882465, -0.036842637, -0.009809483, -0.018169157, 0.021497777, -0.056858324, 0.0137018375, -0.068146154, 0.035777856, -0.0013515641, 0.02307542, -0.00979077, 0.029971134, 0.0061407513, -0.023739623, 0.009916558, 0.0072462587, 0.0060986467, -0.016121695, -0.013733651, -0.04783854, -0.006904603, -0.06574992, 0.02829115, 0.00032186782, -0.016450813, 0.030600835, -0.017116537, 0.019448675, -0.041955974, 0.060921904, -0.002762075, -0.0058113984, 0.032457948, 0.03359589, 0.062120486, -0.040150203, -0.024437625, 0.028026827, 0.007982135, 0.019756509, -0.03613247, 0.06218692, -0.0052761994, 0.027295139, 0.035459727, 0.04725656, 0.03311496, -0.027984256, 0.04823339, 0.013641488, 0.011389524, 0.016318886, 0.03144334, 0.01341383, -0.006885334, 0.04525892, 0.053322926, 0.022406772, 0.019545283, 0.01489855, -0.0026713156, -0.0040769144, -0.041584574, -0.021634383, -0.022105254, -0.044068754, -0.011442682, 0.027970219, 0.010219304, 0.042125385, -0.008776512, -0.0035854578, 0.013665347, 0.027387537, -0.018484943, -0.03834718, 0.023655413, -0.013162896, -0.011442214, 0.008741424, 0.02623644, -0.06886568, 0.005902392, 0.02483739, -0.01017907, -0.011284554, -0.025384048, -0.045330968, 0.015509537, -0.005787071, 0.0045061493, 0.008390785, 0.10136591, 0.023545941, -0.0007232669, 0.027135141, -0.013631429, -0.057065107, -0.026721578, -0.015306031, -0.037731517, 0.0113378875, 0.020532642, -0.019380372, 0.014763815, -0.015871843, 0.041897085, 0.037070937, -0.002016352, 0.010967482, -0.014218791, -0.02884556, -0.027009647, -0.053930636, 0.037934557, 0.041168205, -0.053940695, -0.018076206, -0.039517693, -0.035549905, -0.015039134, 0.05903093, -0.0032848762, -0.0028714307, 0.0058409884, 0.041376855, -0.031320125, 0.008968323, 0.033622555, -0.0048408825, -0.014860656, -0.009111011, -0.055049688, -0.0012638458, -0.00334125, 0.04852719, -0.0040046345, -0.008035351, 0.014339959, 0.050634533, 0.028572317, 0.004011652, 0.0063353693, 0.005832919, 0.023376586, -0.0076780445, 0.0011377654, -0.05635307, -0.005599003, 0.012998572, 0.01095567, -0.0354616, 0.064579405, -0.027985776, -0.034386173, 0.027573965, 0.040496398, -0.024353534, -0.00088852824, 0.045679968, 0.031446993, -0.0449829, -0.006779809, -0.0051952647, -0.07123571, 0.028553605, 0.042677425, -0.017619455, 0.0025131889, -0.029958969, -0.019197216, -0.006779809, -0.020601412, 0.060526118, 0.020120481, -0.012669569, -0.06299253, 0.0052428665, -0.023685355, 0.00090572104, -0.016797945, 0.010589357, -0.0025811412, 0.014935041, -0.02215929, 0.05047711, -0.012179515, 0.0053131585, 0.009183525, -0.020970063, -0.02867413, -0.030268675, 0.020402115, 0.009648549, -0.015620413, 0.0058495263, 0.019192772, 0.006645541, 0.014812469, -0.020109612, 0.021560349, 0.014734342, -0.012623955, -0.0058273044, -0.011372829, 0.013666401, -0.012734363, 0.016540857, -0.021796253, -0.001648637, 0.009308553, -0.07789575, -0.07287312, 0.083351366, -0.011547827, -0.010179537, 0.04852064, 0.028294425, 0.015460882, -0.031006912, 0.00010385851, 0.026671052, 0.040583413, 0.004944975, 0.046767674, 0.050976753, -0.08212121, -0.06926146, 0.042996954, -0.023427112, -0.03146445, -0.057152122, -0.020828309, 0.0022839515, -0.018976167, 0.009844804, -0.024076462, -0.016280524, -0.014670716, -0.006927643, -0.0060481206, -0.0077781607, -0.037884966, 0.01739864, 0.035208035, 0.0009001071, -0.0037522395, 0.06249382, 0.0016303915, 0.022893783, -0.02188865, 0.0601032, 0.022269698, -0.059866477, -0.021561984, -0.018524243, 0.038229756, 0.0011753087, -0.006996882, -0.022801151, -0.05353801, -0.01253647, 0.022876943, 0.00018689853, 0.022191102, 0.014982526, 0.041319665, -0.011535984, 0.010490645, 0.024828264, -1.3099271e-05, -0.028321503, -0.029550318, -0.0086378, -0.008616046, -0.0521982, -0.025746385, -0.035206165, -0.00839289, 0.00082244707, 0.012828866, 0.017500628, 0.038128704, -0.04181849, 0.026947541, -0.016040994, 0.05800732, 0.02895547, -0.016306723, 0.065211914, 0.0008367745, 0.0800328, -0.003161603, -0.07124507, 0.08376797, -0.006457371, -0.042962804, 0.0043283734, 0.021044478, 0.022486536, 0.025204167, 0.0423262, 0.013048278, 0.002446523, 0.017285425, -0.009702818, -0.010862688, -0.019001428, -0.0132181, 0.03538881, -0.012915881, 0.016433973, -0.04846356, 0.029121552, 0.019746918, 0.0042011235, 0.0041936385, -0.001778226, -0.038335953, 0.03495997, -0.05803726, 0.031968772, 0.0022073882, 0.024589203, -0.002944529, 0.043018006, 0.00023812604, -0.012957519, -0.028021125, 0.045110617, -0.009676268, 0.02205824, -0.0059227417, -0.026780525, -0.024433885, -0.037069067, -0.014979017, 0.0014280545, 0.0110621005, -0.020204691, -0.01768694, 0.009012767, -0.026196789, 0.036640532, -0.0060892897, 0.008811775, 0.021999292, -0.05994601, -0.04618429, -0.010847132, 0.03855864, 0.026931169, 0.01205133, -0.01809138, 0.014671885, 0.07482772, 0.03328525, 0.040443067, 0.0007934416, 0.046129316, 0.028727872, -0.016465785, -0.004817725, 0.007103138, -0.026495382, 0.04953329, -0.037316084, -0.052684803, -0.06495742, 0.012449922, 0.013088511, -0.016128479, 0.034761723, 0.039964475, -0.008118274, 0.01573082, -0.03895267, -0.0063143168, 0.009012065, -0.0030380222, 0.028025191, -0.04005383, -0.034761723, 0.027701218, -0.061433714, -0.03375343, -0.025259607, -0.032272395, -0.023289453, -0.00826377, -0.06013829, 0.03327402, 0.004640417, 0.013759849, -0.009441768, -0.03383308, -0.0422634, 0.0011070054, 0.03177696, 0.005889058, 0.005528828, 0.016055964, -0.022685131, 0.001188642, -0.06362504, -0.02570428, -0.025915973, 0.00053145614, -0.022119055, -0.005197838, 0.061987624, 0.03926413, -0.0074118483, 0.0031424216, -0.021982916, 0.030780131, -0.056324765, 0.0364927, 0.0036098433, -0.0065608635, -0.065883726, -0.015930586, 0.012328754, -0.00017216185, -0.003208152, -0.04526225, 0.004445331, 0.008705636, -0.010401524, -0.017509984, -0.009815097, -0.02379623, -0.022077886, 0.00841979, 0.013952128, -0.08866336, -0.008753588, 0.015063226, -0.013910023, -0.034606405, -0.020557202, 0.0093173245, -0.022150869, -0.043978933, 0.044281155, -0.023429625, -0.016320758, 0.008090251, -0.045516226, 0.009403406, -0.00207641, -0.040927503, 0.02279086, -0.050609972, 0.0616957, 0.013484296, 0.00883078, -0.032489937, -0.00043017074, 0.0030718378, -0.014603348, 0.013727568, 0.04526547, 0.012295538, -0.0137111945, 0.0068757143, 0.026838537, -0.03627937, -0.06530174, -0.037157487, 0.0093528805, 0.012076359, -0.00953206, 0.02524791, 0.05032179, -0.011937881, 0.032518007, -0.0020116738, -0.010875203, 0.007665881, -0.002911781, -0.008779319, 0.008448563, -0.006388702, 0.006613904, 0.031640355, -0.019319555, -0.014727323, 0.012906058, 0.046214227, 0.022554137, 0.033031683, 0.042067375, 0.008043889, -0.010976254, -0.008856979, -0.0019961183, -0.006161336, -0.06856159, 0.0032239414, 0.06039138, 0.017700274, 0.014809194, 0.020257087, 0.0034488512, 0.019663176, -0.054785594, 0.011823964, -0.050785877, -0.028904477, -0.021240937, 0.021052634, 0.026478307, 0.010976488, -0.0015709769, -0.01507539, 0.070852086, 0.050146822, -0.0024140086, 0.033198934, -0.01613456, 0.061353948, -0.036808953, 0.0063629714, 0.02067252, 0.015758423, 0.028567642, 0.036371063, -0.03560943, 0.004465448, 0.017444488, -0.04856976, -0.014040547, 0.024104998, -0.07013537, 0.005380175, -0.011371104, 0.030024, 0.023305474, -0.023396702, 0.04020073, 0.021298012, 0.0076743015, -0.028881319, -0.009992873, -0.01613538, 0.016216898, 0.032114737, 0.002360208, 0.011622797, 0.015003344, 0.010814848, 0.045238335, 0.010740686, -0.07685904, 0.047740765, -0.023299394, 0.04675545, 0.049002502, -0.05147546, 0.06862334, 0.03573294, -0.038103912, -0.0097131105, -0.0033908403, -0.038411275, -0.04469238, 0.018037697, -0.013214358, 0.021596739, 0.03563376, 0.04178434, 0.016252922, -0.066355295, -0.032289702, -0.023069689, -0.031019075, -0.04210106, -0.020936377, 0.026426846, 0.019932413, 0.050225414, -0.009627263, -0.0077365236, 0.062017564, -0.020372875, 0.0148068555, 0.0003368384, 0.004892578, -0.05334117, 0.0031469245, -0.012070043, 0.053180877, -0.016398417, 0.076046884, -0.0051845047, 0.01067731, -0.048392452, 0.020431122, 0.015761172, 0.043788057, -0.033706766, 0.01645362, -0.018308103, -0.028726935, 0.013096932, 0.04106715, -0.052281063, 0.03818483, 0.0052209953, -0.030968431, -0.038549285, 0.046245106, -0.03980354, 0.056964986, 0.02720906, 0.007188693, 0.028142849, -0.00779126, 0.10420283, 0.041709483, 0.02986587, 0.023699624, -0.021750374, 0.013385584, 0.032326195, -0.019981068, -0.020889595, 0.0254444, -0.014854106, 0.019179204, 3.0876854e-05, 0.03007967, -0.015997017, -0.007127407, 0.06477028, -0.031232523, -0.062069025, -0.05074658, 0.043169588, -0.004067324, -0.033441506, -0.009173232, 0.015211061, -0.014682881, -0.0008767155, 0.01501083, -0.010413599, -0.029903766, -0.07164553, 0.013583945, 0.005191054, 0.030554987, -0.016611747, 0.013182078, 0.030083414, -0.0073146564, -0.022278117, 0.003138679, 0.0041842815, 0.054543495, 0.011537885, 0.015865557, 0.026045093, 0.01723022, 0.019836975, 0.019872531, -0.028745417, 0.0493618, 0.0403771, 0.00041309488, -0.020390887, -0.020610768, 0.021621985, -0.028660271, 0.008711951, -0.023307346, 0.0005871281, 0.054171104, 0.04250339, -0.054220222, 0.036178548, 0.024662187], [-0.040112197, -0.0666735, -0.039849482, -0.032038968, -0.0041152025, 0.019958457, 0.038697343, -0.02164295, 0.06132068, -0.00029950283, 0.006402429, 0.02454181, -0.06618818, -0.021455659, -0.018303325, 0.034509443, -0.008863629, -0.037096735, 0.039682023, 0.04797059, -0.026691914, 0.00043947762, -0.017190045, 0.034505934, -0.0030703584, 0.044890203, -0.0060168793, -0.0073399814, 0.038678356, -0.009065177, -0.014486937, -0.04496942, 0.010165674, 0.022599522, 0.015892765, 0.032870483, 6.3171974e-05, -0.0017531475, -0.011667763, -0.039345108, -0.04466359, 0.018756058, -0.032353826, 0.025581013, 0.029459195, 0.041743636, 0.010205783, 0.008336695, -0.017601917, -0.039106708, 0.036222607, -0.011984625, -0.03685834, 0.016817782, -0.027842293, 0.021413293, 0.0444861, 0.019121554, 0.044314634, -0.013741408, 0.022288926, -0.011714265, -0.063649274, 0.0004944084, 0.008014819, 0.023889031, 0.001847028, -0.008050917, 0.004959626, -0.057705086, -0.00997716, -0.0009712691, -0.021587767, -0.017147493, 0.06497288, -0.008682887, -0.06320004, 0.027522925, -0.008779901, -0.03112874, -0.0182201, 0.019709358, 0.015160271, -0.056716397, -0.06436578, 0.03970709, -0.022998609, 0.017428571, 0.04444499, 0.0102841845, -0.04937842, 0.0155503955, 0.016019985, -0.012016713, -0.007226172, -0.0020105983, -0.039732162, 0.025900258, 0.037261434, 0.033518996, 0.051640578, -0.039625872, -0.038487274, -0.024681188, -0.015938137, -0.016593171, 0.024573896, -0.036669824, 0.011251629, -0.020619132, 0.0067859734, -0.0018034094, 0.028916093, -0.055924244, 0.03416576, 0.03134232, 0.046696275, -0.02553752, -0.006071027, -0.02550443, -0.03730957, 0.0055931006, -0.004284664, 0.013325275, -0.00736505, -0.031148294, 0.011128294, 0.021392234, -0.058856223, 0.010414852, 0.038857408, -0.0024276087, 0.020896638, -0.026987083, -0.069340765, 0.022495236, -0.013853713, 0.05894045, -0.039687037, 0.029578019, -0.022605037, -0.02267974, 0.0023684476, 0.011869311, 0.027051643, -0.020766532, 0.035007298, -0.044643532, -0.004866247, -0.008750822, -0.004473428, -0.009733497, 0.0064664474, 0.04735942, 0.017061446, -0.053122614, 0.013473178, 0.007697956, -0.022007912, 0.014960727, -0.020632667, 0.011302768, 0.013786155, 0.01025313, -0.010802408, -0.045692384, -0.0006748371, 0.000100210294, -0.007204871, 0.06569083, 0.091633454, -0.0065764026, 0.013075846, 0.042237982, -0.04561718, -0.019764805, 0.014218206, -0.018308843, 0.016036656, 0.054416638, 0.02366091, 0.018059913, 0.009355343, -0.010142109, -0.022567436, 0.03324049, -0.041597236, -0.019810429, -0.0049655177, 0.040781893, 0.015050973, -0.026024846, 0.03694006, 0.0038344383, -0.024277717, 0.026542256, -0.026582867, 0.0070276307, 0.037899174, 0.06603978, 0.022033982, 0.013534344, 0.02592357, -0.030314524, -0.023040222, -0.044802967, 0.042497188, -0.005200156, 0.044439476, -0.025703972, 0.029520864, 0.050302938, 0.028855553, 0.057592783, 0.012355017, 0.012169127, 0.035745308, -0.050818343, 0.036588103, 0.06259841, -0.051279597, 0.015461214, 0.0049218987, -0.050036024, -0.031623084, 0.028987912, -0.0071023344, 0.043781243, 0.022633614, -0.022035362, 0.059908085, -0.004262604, -0.018953595, -0.035544764, -0.004205448, 0.0022609988, -0.034259263, 0.018083228, -0.019060638, 0.034097698, -0.022990586, 0.026233414, 0.027122835, -0.013081738, -0.020509332, 0.017300345, -0.07377684, -0.026516685, -0.014343484, 0.018200547, 0.048408158, -0.009226115, -0.022719726, -0.019197261, -0.0066953516, -0.002798117, -0.027342433, 0.0065498305, 0.0048722634, 0.0250898, 0.014042227, -0.05765696, -0.028127572, -0.03676609, 0.038516853, -0.0046817684, 0.028037326, -0.01762498, 0.031181885, -0.033220436, -0.0081351455, -0.078291126, 0.030947749, 0.027711939, -0.028587824, 0.047096208, 0.011838729, 0.015718164, 0.05092864, 0.028937776, -0.062497135, -0.033054985, -0.008053424, -0.0037344159, 0.01727202, 0.01754376, -0.016261237, -0.036776114, -0.00020706368, -0.05893143, 0.010681076, 0.005618545, 0.0035935326, 0.0470551, 0.023052756, -0.031492732, 0.050383158, -0.04866849, -0.056289237, -0.0265954, 0.029574508, -9.48833e-05, -0.005498468, 0.014165813, -0.0095819915, -0.024915827, -0.0638057, 0.037632447, 0.018890675, 0.007979222, -0.061431233, -0.008600601, -0.039636903, 0.010982397, 0.021659838, -0.032405216, 0.047048077, 0.07098524, -0.005777227, -0.008191299, -0.02604114, -0.015088073, 0.01844421, -0.053768374, 0.021612834, 0.053075608, 0.028958833, 0.0017848589, -0.04778809, -0.04702511, 0.05931146, 0.033124674, 0.00894742, 0.013024456, 0.020880843, 0.018696899, -0.0071183783, 0.025573118, 0.010070289, 0.02827748, 0.005108407, -0.07459306, -0.009924016, -0.011353909, 0.026546266, -0.061064232, -0.001552727, -0.046804417, 0.011016771, 0.01687494, 0.0056304527, -0.02292641, 0.022157317, 0.009149908, -0.0027630215, 0.0041401456, 0.013260098, 0.005440811, 0.013662694, -0.007080274, -0.027275437, -0.009359479, -0.039131403, 0.05663718, 0.006137708, -0.034951147, 0.07550642, -0.0015213917, 0.044144172, -0.0321796, 0.06459484, 0.014169573, -0.04712084, 0.034056712, -0.013236032, 0.01992073, -0.044633508, -0.0071429447, 0.013235907, -0.016184058, 0.0010749262, -0.03868381, 0.0386081, -0.0035596904, 0.04350142, 0.034114867, 0.05031096, 0.031147793, -0.002423347, 0.04063061, 0.022724863, -0.0014335273, 0.04633213, 0.004389449, 0.024303662, -0.0040399977, 0.014637848, 0.04762364, 0.028625928, 0.027198542, -0.0045012534, 0.025033146, 0.015880229, -0.038984127, -0.00044220377, -0.046466496, -0.045552354, 0.0037612391, -0.0011100217, 0.023451842, 0.059568163, -0.020459697, 0.0026963402, 0.025626387, 0.05241469, -0.016904518, -0.039003927, 0.011543674, 0.005234249, 0.0061507444, 0.0180366, 0.04443133, -0.05245655, 0.026485225, 0.016746087, -9.12484e-05, -0.019486798, -0.03031515, -0.07140137, 0.05427575, 0.0012363658, 0.018703917, 0.020464208, 0.07565395, 0.028714169, 0.00873177, -0.009514903, 0.009123962, -0.06285912, -0.032936662, -0.025095941, -0.042012367, -0.025389116, 0.005903571, -0.02532469, -0.0031988332, -0.03187377, 0.04027765, 0.028316082, -0.037241884, 0.0025083283, -0.02271233, -0.043675397, -0.02374163, -0.06328829, 0.051756393, 0.0568267, -0.039824665, -0.020492537, -0.014071306, -0.05185316, 0.0020957051, 0.05100886, -0.011456437, -0.0053939335, 0.019421872, 0.029083172, -0.055041842, 0.0027403978, 0.008288188, 0.00027274247, -0.05241669, 0.010460475, -0.0422074, -0.021504542, 0.016626261, 0.05308451, 0.02138622, -0.006517273, 0.048397753, 0.033070024, 0.0064114537, 0.031520307, 0.0008819007, 0.039049804, 0.017810484, -0.019043593, -0.020455183, -0.0056814663, -0.011378977, 0.030145064, 0.039928697, -0.009776615, 0.056237597, -0.035245948, -0.007320428, 0.009299065, 0.05782567, -0.03583756, 0.0021084899, 0.052713, 0.020687066, -0.06900786, 0.005933653, -0.007947886, -0.08854505, 0.01695315, 0.078870706, -0.024926856, 0.0052756118, -0.039505545, -0.03692452, -0.007566849, -0.044307116, 0.073905185, 0.046991922, -0.0070178546, -0.043296743, -0.0044140164, -0.026042895, 0.005077823, -0.0068328506, -0.02823386, 0.034814775, 0.015786726, -0.036066182, 0.034855887, -0.036000002, 0.02197432, -0.0061888476, -0.043570485, -0.057502788, -0.05088878, -0.0167877, -0.012114792, 0.013030724, 0.049554903, 0.0043638796, -0.00976032, -0.012410284, -0.03168225, -0.0035649547, 0.009364493, -0.0026069093, 0.009229876, -0.030218763, -0.0071727764, 0.0043869424, 0.017119605, -0.026616456, -0.009204714, -0.014310958, -0.06979801, -0.058487214, 0.06307571, -0.015426494, -0.012251477, 0.041112922, 0.02830405, 0.01099092, -0.035159715, -0.010192873, 0.023882013, 0.020125788, 0.011822183, 0.031810597, -0.008939335, -0.08283149, -0.062169243, 0.038860288, -0.03649435, -0.03404819, -0.051169366, -0.012156342, 0.0051906304, -0.027984181, 0.01593162, -0.03347112, -0.0036246171, -0.024273908, 0.015906801, 0.007875188, 0.005075066, -0.013184893, 0.020439642, 0.024760405, -0.0010097488, 0.02444354, 0.033667654, -0.0026554791, 0.04136862, -0.015502953, 0.038906414, 0.011840233, -0.031696286, -0.00074252137, -0.04146513, -0.0068937666, -0.020334356, -0.043554567, 0.0064214813, -0.045978162, 0.040189408, 0.0019427888, 0.030097935, -0.019785862, -0.0276608, 0.035152193, -0.0005444822, 0.006463094, 0.0004899588, -0.0058860234, -0.019949574, -0.03395594, -0.052817784, -0.0025995767, -0.043638796, 0.0066423323, -0.02433324, -0.029514972, 0.011418083, 0.00022987578, 0.010301042, 0.001665487, -0.021830428, 0.042858172, 0.008176258, 0.069105625, 0.03555479, 0.0034333465, 0.030964293, 0.0018945638, 0.077559136, -0.0015166287, -0.057107463, 0.072682105, 0.0081000505, -0.019991422, -0.010008245, 0.0021994878, 0.022151303, 0.031048521, -0.012427832, -0.017349731, 0.0009916996, 0.029143086, -0.011160554, -0.003962537, -0.022603031, 0.009771601, 0.05236154, -0.014219209, -0.0005374631, -0.051977497, 0.029179748, -0.011381484, 0.00045273246, -0.007430227, -0.013358365, -0.014819343, 0.034503426, -0.048730657, 0.05054259, 0.0040394966, 0.023335526, -0.01523748, 0.023780739, -0.014879506, -0.027695395, -0.013869757, 0.046121556, -0.0010729834, 0.023089606, -0.03485689, -0.020218289, -0.0076743914, -0.025173152, -0.008923542, 0.011033536, 0.0033325723, -0.07176286, -0.036831137, 0.0074733444, -0.009865858, 0.032619298, 0.0121591, -0.0007615732, 0.021568215, -0.030744696, -0.053153697, -0.03235107, 0.0053184787, -0.023684476, 0.015016379, -0.0064986907, -0.014248789, 0.020072643, 0.025556572, 0.031397972, 0.022117209, 0.012522089, 0.04880085, 0.011589863, 0.0186242, -0.0081106415, -0.016018607, 0.032283887, 0.013315248, -0.021173641, -0.07370063, -0.0016936418, 0.008288563, -0.011101722, 0.032849424, 0.024557853, -0.0055791885, 0.024334872, -0.020530388, 0.015009735, 0.0250715, 0.016193708, 0.013802072, -0.07084084, -0.013337183, 0.02864197, -0.03497847, -0.03881767, -0.03475461, -0.01863924, 0.021518579, -0.021957776, -0.035015322, 0.025013093, 0.006794496, 0.053787425, -0.0074923965, -0.006631051, -0.038517106, 0.015858673, 0.011599578, 0.0042335247, -0.0066982345, 0.0099510895, -0.0061557577, -0.0028249403, -0.057520587, -0.04739828, -0.05594229, 0.04236859, -0.026674615, 0.02544978, 0.032031197, 0.004133189, -0.00013386442, -0.023818027, -0.051319707, 0.03116083, -0.040288676, 0.012218261, 0.011222551, 0.022023953, -0.09294101, -0.0026592393, -0.004320198, -0.017233916, -0.0025115872, -0.045198385, 0.0036870372, 0.01654504, -0.0031846697, -0.0083286725, -0.008283706, -0.016477043, -0.016679406, 0.0047549442, 0.004856784, -0.07066838, -0.022626845, 0.008983706, -0.0382762, -0.04957596, -0.015120162, 0.00042565877, -0.014580944, -0.045426663, 0.059059903, -0.023463875, -0.032792773, 0.007364047, -0.050797787, 0.019856052, 0.0019332629, -0.05111515, 0.008074607, -0.04007961, 0.047173418, -0.0038163892, 0.059886023, -0.049325276, 0.0022170355, 0.0114847645, 0.0077214576, 0.019225838, 0.01291917, 0.009917874, 0.004940951, -0.00039307005, 0.02136817, -0.025883462, -0.07368459, -0.035277035, -0.008982954, -0.003642917, -0.0029966577, 0.021762745, 0.0007034149, -0.012621358, 0.01722088, 0.017789427, 0.009549998, 0.01611587, 0.048461925, 0.007308897, -0.0016382097, -0.026762856, 0.0035005293, 0.02741463, -0.010603804, -0.025378086, -0.0014604757, 0.01887438, 0.029561475, 0.017401058, 0.038011476, 0.01424528, -0.025289346, -0.039341096, -0.00917247, 0.014130467, -0.076337814, 0.0029436385, 0.04800268, 0.030686537, 0.018963624, 0.023727594, -0.007912039, 0.012148322, -0.045661304, -0.027192025, -0.06228957, -0.022775501, -0.0040710825, -0.03304195, 0.0047253636, 0.026777897, 0.03256114, -0.011031249, 0.056620136, 0.02184547, 0.017997995, 0.015063005, -0.0128659, 0.05282581, -0.003826166, 0.01380859, 0.03751613, -0.017277032, 0.012216757, 0.025865413, -0.014387166, -0.0005174085, 0.03994073, -0.013313241, 0.021945743, 0.015439719, -0.05523286, -0.00793341, -0.014392179, 0.0025359034, 0.024008358, -0.024988024, 0.020295374, 0.027486825, -0.0012117989, -0.00096211914, -0.0059607266, -0.036776613, 0.0050462373, 0.011298759, 0.0059963237, -0.004636622, -0.020576514, 0.012775779, 0.011738456, -0.03778085, -0.06049669, 0.079183556, -0.0026023341, 0.05008434, 0.05317024, -0.03595939, 0.06742856, 0.03370506, -0.000121831654, -0.022976547, -0.0075266776, -0.0065754, -0.08311225, 0.038581528, -0.018777115, 0.06497288, 0.047862418, 0.024371345, 0.0024356304, -0.082612894, 0.011142458, -0.014884645, -0.037341654, -0.040214475, -0.046598915, -0.0046702134, 0.0021002174, 0.028389204, -0.016894657, -0.02443502, 0.07118378, -0.036401093, 0.008026851, 0.0037221326, -0.00014339035, -0.019924238, 0.010642722, -0.017577851, 0.054494347, 0.02378475, 0.04833959, -0.009533201, 0.004369896, -0.042226955, -0.0072887167, -0.02394268, 0.026211355, 0.005423765, 0.026050918, -0.024697233, 0.015797004, -0.0007014094, 0.06610746, -0.013697288, 0.023730602, -0.0028171064, -0.038422596, -0.03407827, 0.019330624, -0.034719516, 0.06081355, 0.009136121, -0.003002674, 0.019098084, -0.046285126, 0.067227766, 0.034561083, -0.015518371, 0.014155535, -0.0071574845, 0.029400034, 0.022018941, -0.030410787, 0.0021047296, 0.0042836615, -0.013417526, -0.0066114357, 0.007250488, -0.014151525, 0.008117348, 0.0037948308, 0.053954877, -0.015298522, -0.052864913, -0.070575126, 0.05299326, -0.012616847, -0.041053258, -0.0059412047, -0.0031024455, -0.020789595, -0.0050632837, 0.022256589, 0.00057017716, 0.0022352724, -0.060613003, -0.016702468, -0.0030723638, 0.0029003955, 0.010776335, 0.04899613, 0.026678627, -0.019627431, -0.03752415, -0.01104607, 0.027491465, 0.06196368, 0.014943681, 0.05765094, 0.023738623, 0.035755336, 0.012161106, 0.0066873142, -0.0560561, 0.043420203, 0.04266214, -0.0021242357, 0.0029898891, -0.008203207, 0.021391233, -0.010376248, 0.0023185618, 0.0244285, -0.004170854, 0.032556627, 0.02731403, -0.04901343, -0.013104172, -0.007688179], [-0.02833671, -0.09439012, -0.031455237, -0.035625756, -0.01632824, 0.04873072, 0.024611596, -0.022940062, 0.028339552, -0.0073705018, -0.012826836, 0.0006117128, -0.081018955, -0.0046446915, -0.0036675734, 0.044486996, -0.0077422853, -0.063914284, 0.04138462, 0.064638585, -0.022596218, -0.01163204, -0.016542312, 0.041224066, -0.015207969, 0.03837264, 0.004890375, 0.00941583, 0.017530037, -0.008026859, -0.012986281, -0.033786457, 0.02364772, -0.0045992155, 0.027269747, 0.021560242, 0.023743108, 0.0025755162, -0.0050722808, -0.045508932, -0.07423964, 0.044196393, -0.020549782, 0.006011756, 0.0061032637, 0.027631894, -0.0042750575, 0.008226096, -0.020380214, -0.0476415, 0.040726874, -0.025410762, -0.0053928336, 0.02311975, -0.030252889, 0.025714122, 0.034415085, 0.04810736, 0.020995669, 0.008647168, 0.0052764737, 0.0070642293, -0.07738528, -0.06323657, 0.028630156, -0.024807923, 0.002888305, 0.000289496, 0.00737272, -0.036239132, -0.008766959, 0.003776065, -0.042059, -0.017441856, 0.031648792, 0.00941583, -0.04829814, 0.0123191085, -0.0046428894, -0.012788985, -0.009932708, 0.020465204, -0.015459752, -0.08002512, -0.057888106, 0.031984318, -0.012467739, 0.011281194, 0.032388233, -0.0069678696, -0.039846186, -0.0023464705, 0.019548537, 0.012683752, 0.0069967085, 0.030627789, -0.0021584646, 0.045216836, 0.056590367, 0.049336746, 0.016078675, -0.030209629, -0.054855615, -0.03452212, -0.012356821, -0.0352564, 0.042754453, -0.014738785, -0.0014588491, -0.05465152, -0.009359262, 0.015785197, 0.0070421845, -0.08800679, 0.01745184, 0.011072113, 0.042169362, -0.033395194, -0.04493843, -0.00060977176, 0.0122874975, 0.0046200124, 0.0017447402, 0.008618329, -0.013844162, -0.017873328, -0.01160646, -0.020235606, -0.051940687, 0.014402704, 0.03163049, 0.0020558652, 0.013086107, -0.05792582, -0.03315672, 0.04063592, 0.0031567267, 0.055000912, -0.018203864, 0.050584156, -0.013982878, 0.0010869965, 0.017811421, 0.0035191511, 0.017360887, -0.031778008, 0.018421818, -0.013746069, 0.019238729, -0.008795798, 0.03091063, -0.005624098, 0.0029256705, -0.005691481, 0.017534405, -0.07201684, 0.01907568, 0.02344252, -0.043550845, 0.02789976, -0.028590227, -0.00041982468, 0.022371054, 0.017691422, -0.01770917, -0.03385495, 0.034812726, 0.018198457, -0.025410205, 0.035775494, 0.038260058, -0.0078884885, 0.009028172, 0.019650234, -0.023574723, -0.025651176, 0.012950787, -0.02041335, -0.0012373944, 0.05086589, 0.0037476595, 0.015710704, -0.006213627, -0.01878244, -0.0037368278, 0.017305428, -0.017376969, -0.023702346, 0.003973083, 0.02060912, 0.031291354, -0.04642806, -0.010722443, -0.028792096, -0.017622653, 0.021473726, -0.0064659654, 0.011709615, -0.012158554, 0.01394683, 0.019705694, 0.0128285, 0.029645057, -0.027984614, -0.041811652, -0.03924501, 0.013649571, 0.008212924, 0.023280581, -0.047801223, -0.021007178, 0.04810514, 0.060222935, 0.034041293, 0.007728767, 0.043122705, 0.04808074, -0.057357922, 0.03441786, 0.08811105, -0.039120782, 0.004485455, 0.027128328, -0.051539715, -0.038014792, 0.00035753727, -0.019533772, 0.011969162, 0.015757013, -0.018566428, 0.044975035, -0.0050525926, 0.009030945, -0.05913261, 0.009737215, -0.0023342695, -0.025961382, 0.021966757, -0.050367337, 0.0066417702, -0.026238764, 0.015612264, 0.04673198, -0.022764873, -0.06054681, -0.014152583, -0.064013004, -0.002284911, -0.04082393, 0.030389871, 0.059285674, 0.0018062998, -0.02326339, 0.011966945, 0.011421782, 0.0023753091, -0.006177024, 0.022475732, -0.0016759711, 0.015621139, -0.008307205, -0.07167633, 0.001976559, -0.032554436, 0.044784255, 0.0005823195, 0.0072562564, -0.029813653, -0.00039486814, -0.047299877, 0.00038599467, -0.061803516, 0.03954227, 0.007125373, -0.04479202, 0.02409139, 0.013529779, 0.014264056, 0.04852885, 0.022732092, -0.04543756, -0.016936624, 0.009469625, 0.019410651, 0.054619353, 0.00059895724, 0.008332854, -0.05853809, -0.023971599, -0.024557248, -0.02840312, -0.000726513, 0.035149917, 0.01347432, 0.028407158, -0.031416416, 0.041186076, -0.015877359, -0.0122603215, -0.055017553, 0.040497277, -0.03961825, 0.008546232, 0.007985958, 0.0090886215, 0.011182477, -0.03936979, 0.033369128, 0.0045712083, -0.01007191, -0.03909527, -0.025381923, -0.057382323, -0.013228081, 0.004465559, -0.03302473, 0.010786638, 0.06672827, -0.014036674, -0.008061521, -0.031010456, -0.062626526, 0.0049308604, -0.02311975, 0.043834798, 0.06450326, 0.023112124, 0.0073843664, -0.061952144, -0.030209629, 0.036150396, 0.026099006, -0.0034029644, 0.025003139, 0.0009838428, 0.042958546, 0.0013886935, 0.004767256, 0.0065341797, 0.019781256, 0.0020472691, -0.05416792, -0.018464245, -0.03479082, 0.014776497, -0.07787554, -0.031154929, -0.042852063, -0.0003970865, 0.009708948, 0.001428624, 0.004347986, 0.0057433345, -0.011341366, -0.024851179, 0.012950787, 0.014813932, 0.01808435, 0.011076272, -0.019623615, 0.009666504, -0.01833336, -0.044430427, 0.027576713, -0.0020717406, -0.029745992, 0.051685575, -0.020801842, 0.0017935443, -0.024277734, 0.052972224, 0.0006271027, -0.025161752, 0.029596252, 0.024373125, 0.037714064, -0.048446074, -0.009998219, 0.043675076, 0.012151346, 0.021408286, -0.022090431, 0.051928483, 0.02586497, 0.01726106, 0.0139302965, 0.03610603, 0.01721503, -0.02686767, 0.04769031, 0.017944315, 0.04702036, 0.025657553, 0.002328169, -0.0033081295, -0.033776753, 0.034473315, 0.017794576, 0.042538073, -0.0072207623, 0.008497671, 0.020297997, 0.0010958699, -0.014928455, -0.019556232, -0.051761, -0.00857008, -0.022325575, 0.019517133, 0.0024008204, 0.040784553, 0.009053683, -0.040040847, 0.006691129, 0.024039816, -0.016507927, -0.051550254, -0.0072240904, -0.0048382436, 0.01926288, 0.021922667, 0.045813385, -0.04735644, 0.037130915, 0.026726803, -0.012727842, -0.0030402625, -0.0075928923, -0.06041482, 0.006315672, -0.017548477, 0.02277951, 0.030062107, 0.084430784, 0.018026395, -0.024551565, -0.010314958, 0.0015828001, -0.067482516, -0.01941287, -0.01680186, -0.012061223, -0.008606128, 0.015463079, -0.03284726, -0.007910049, -0.033894323, 0.0034839348, 0.03230709, -0.04286052, 0.028649013, -0.055729643, -0.0058387243, -0.034341604, -0.0094610285, 0.016774131, 0.06521535, -0.081686676, -0.007283986, -0.054041475, -0.0378889, -0.010063036, 0.018078042, 0.030067654, -0.026970547, 0.016286092, 0.03248123, -0.032537796, -0.0061370935, 0.022631157, -0.012984894, -0.054011527, -0.015608382, -0.043699477, -0.029298993, -0.009831773, 0.053515717, -0.0033466737, -0.03278792, 0.024188722, 0.010661993, 0.011759527, 0.052874893, -0.018899735, 0.029239096, 0.034138344, -0.0069696717, -0.0051876353, 0.0021473728, 0.005004066, -0.016321931, 0.013509675, 0.011269547, 0.024984628, -0.022534102, -0.025600431, 0.019501604, 0.048248224, -0.030066546, 0.0022222423, 0.05469145, 0.013986207, -0.0502148, 0.039575543, 0.0005215919, -0.072410606, 0.037115384, 0.044653375, -0.041483752, 0.00082523, -0.024347335, -0.05004177, -0.013922983, -0.026945867, 0.02529818, 0.042727835, -0.01777156, -0.019573702, -0.009669832, -0.030267306, -0.028993966, 0.00028006796, -0.023115868, 0.05851147, 0.004997411, -0.035056192, 0.040102683, -0.04787665, 0.030732607, -0.013023992, -0.0005155954, -0.020655151, -0.0040116273, 0.012977407, -0.0025289305, 0.016448032, 0.029459823, 0.043391123, 0.0249291, -0.019169128, -0.03349336, -0.0010642584, -0.0004791658, -0.009851841, -0.019512141, -0.006221946, -0.0062535577, 0.0249926, 0.018224679, -0.020781599, -0.008080377, -0.012350719, -0.06637333, -0.07364068, 0.03962213, -0.011668575, -0.008746995, 0.064057365, 0.04096812, 0.057974625, 0.0020719485, 0.02049543, -0.010476761, -0.0018929545, 0.00070155645, 0.019164415, 0.008028662, -0.058334, -0.06344732, 0.055263788, -0.0547031, -0.03187839, -0.017622653, -0.050607454, 0.004368367, -0.008834619, -0.0069687013, -0.045108136, 0.009382554, 0.009431636, 0.045815796, -0.021850849, -0.016182937, -0.028956257, 0.017770175, 0.048818346, 0.008246199, -0.00079694594, 0.02905331, -0.0046287472, 0.02964048, -0.014993343, 0.015241244, 0.003929825, -0.06615594, -0.021402739, -0.041230444, 0.031641856, -0.016941616, -0.021210851, -0.016588898, -0.051780965, 0.006561632, -7.154211e-05, 0.010922651, -0.021159275, -0.007514695, 0.057768315, 0.011814986, -0.005807667, 0.008565089, 0.012078972, -0.053506847, -0.021786135, -0.034163855, 0.024193438, -0.019131139, 0.025511697, -0.06314341, -0.01988649, -0.0032102447, -0.020617232, -0.02319462, 0.021318443, -0.047260914, 0.03953118, -0.0009583316, 0.06197211, 0.015765887, -0.006284337, 0.055632036, 0.0006965651, 0.060911734, -0.022714345, -0.0462151, 0.08580506, -0.0067615616, -0.012990718, -0.020739587, 0.0568782, -0.006511442, 0.020796018, 0.020820143, 0.015731502, 0.02463489, 0.036900204, -0.0048149507, -0.010843344, -0.00046731145, 0.0071691857, 0.04856434, -0.038521826, 0.00967205, -0.044718813, 0.04450391, 0.026988572, -0.017411355, 0.012751135, -0.02639904, -0.043079443, 0.033213288, -0.06342736, 0.041212693, 0.042985167, 0.031652395, -0.00013642915, 0.02702739, -0.0129252765, -0.053101998, -0.02370096, 0.0342354, 0.036168143, -0.017690867, -0.018444555, -0.020152694, -0.015636113, -0.06588752, -0.035471577, 0.016389245, 0.011001958, -0.023991564, -0.026223237, -0.021462357, -0.011303793, 0.020442467, 0.041976366, -0.011082927, 0.034034636, -0.06222944, -0.044774827, -0.031571288, 0.016576696, -0.006370021, 0.00226966, 0.00854443, -0.015248453, 0.049702358, 0.041501082, 0.021798717, 0.052739296, 0.03736162, 0.06557029, 0.026236268, -0.02481014, 0.011897067, -0.035340417, 0.0003706048, 0.0063633663, -0.01905287, -0.07592116, -0.033437345, 0.034599762, -0.0071131717, 0.022960858, -0.0007231854, 0.0067526884, 0.024662621, -0.051887445, 0.029987793, 0.03939683, -0.009024289, 0.005327253, -0.06713201, -0.011772838, 0.025868854, -0.0209208, -0.066142626, -0.041429818, -0.022626165, 0.0019377377, -0.018654412, -0.06077198, 0.02731356, 0.0081754895, 0.01999103, -0.010456796, -0.03161607, -0.0580922, 0.0527038, 0.010696933, 0.014251854, -0.00075597555, 0.03473952, 0.0009095277, -0.03083299, -0.013993417, -0.04915165, 0.00964543, 0.020612586, -0.0017860573, 0.025775127, 0.07227861, 0.034638587, -0.0073388903, -0.0002524078, -0.04631936, 0.047608644, -0.06387436, 0.020124964, -0.032498978, -0.0068336586, -0.049569815, -0.008717046, 0.0067567094, 0.017721232, -0.02009973, -0.039293814, -0.028127698, -0.0013210335, 0.006625133, -0.015131435, 0.02531038, 0.0069377827, -0.01570599, -0.012860805, -0.03129441, -0.06586589, -0.0113094775, -0.020150336, -0.016089767, -0.04171834, -0.019251762, 0.012114465, -0.009436836, -0.04865973, 0.034491066, -0.04008189, -0.026264483, 0.026226286, -0.04131585, 0.03476392, -0.007846895, -0.022682179, 0.05074499, -0.06062889, 0.04554737, 0.019219873, 0.07055716, -0.041470025, -0.041687425, 0.0033829992, 0.008525228, 0.005649886, 0.033259876, 0.024148516, -0.0007597884, 0.0020824857, 0.018307017, -0.008514621, -0.07766035, -0.04134358, -0.00079195463, -0.007628152, -0.023818811, 0.025099635, 0.0065657916, -0.0023370425, 0.0051210844, 0.016140511, -0.011248057, 0.00894221, 0.02831515, -0.02977594, 0.0075607263, -0.009798497, 0.023974512, 0.021103261, 0.0015794726, -0.027216367, -0.008214033, 0.017324561, 0.03098772, 0.009120233, 0.02969719, 0.019512141, -0.021408422, 0.014371647, -0.011936997, 0.0074936207, -0.05249749, -0.01642252, 0.060046576, 0.014124576, 0.010040298, -0.0020664025, -0.034881495, 0.024435239, -0.026956404, -0.013275777, -0.07084111, -0.02943764, -0.009166264, -0.0047445176, 0.02890967, 0.018798385, -0.008293894, 0.00872592, 0.013386141, 0.049848218, 0.0036170364, 0.014899616, -0.028363952, 0.055729643, -0.03748807, -0.009526332, 0.003933014, 0.003250591, 0.015120342, 0.046656553, -0.049061254, -0.0038910038, 0.050534245, -0.042960763, -0.00303028, 0.04348208, -0.043486513, -0.04563389, -0.027370542, 0.0025003692, 0.04870521, -0.010154543, 0.051627897, 0.023490217, -0.01557067, 0.0042348495, -0.011962508, -0.023562867, 0.016712015, 0.030804096, -0.01903575, 0.009028172, -0.022702698, 0.04425629, 0.027400076, -0.03203936, -0.048342504, 0.07678494, 0.0052300617, 0.038414232, 0.06362479, -0.020205934, 0.038248967, -0.0005257514, -0.0063877683, -0.019632487, -0.02207934, -0.029805887, -0.065210916, 0.034888703, -0.013009851, 0.04415424, 0.03732391, 0.007428179, 0.007225199, -0.07198801, -0.017544456, 0.013388912, -0.03952452, -0.04740331, -0.06610713, 0.004660775, -0.006218064, -0.0006732723, -0.008181866, -0.053157456, 0.09481271, -0.0118043795, 0.0031561719, -0.012720632, -6.6550805e-05, -0.054380883, 0.049788877, -0.00657522, 0.051233582, 0.022093758, 0.02111657, 0.0027765897, 0.022320863, -0.03827115, 0.023505745, 0.011047988, 0.024704074, -0.0011798904, 0.031201238, 0.00019365591, -0.010172845, 0.015479717, 0.016083112, -0.03380781, 0.026433287, -0.0069479044, -0.018638663, -0.013367838, 0.06452932, -0.018219393, 0.036852784, 0.011640533, 0.009157945, 0.00802159, -0.02616334, 0.034964684, 0.019873735, -0.00483658, 0.0028779758, -0.0042459415, -0.006888008, 0.011597588, -0.03308906, -0.020832343, -0.0107013695, -0.03056734, 0.0093162805, 0.005359974, 0.016863974, 0.0030136423, -0.01743631, 0.044946194, -0.0007010018, -0.05340702, -0.08129846, 0.05217195, -0.025637588, -0.03015424, -0.04346655, 0.027519869, -0.025282096, -0.0113391485, -0.008347689, -0.020159902, -0.011039461, -0.05016794, -0.008749213, 0.004358523, 0.035537574, 0.0021672512, 0.050631855, -0.0013049504, -0.006377786, -0.03873257, 0.0060505774, 0.02056524, 0.027736157, 0.029364435, 0.025828367, 0.014760414, 0.013184824, -0.0065957396, -0.006780418, -0.030852677, 0.025715787, 0.040776372, -0.010020956, 0.0082800295, -0.0015678261, 0.021440659, 0.015983285, 0.0026753424, 0.035321288, -0.015705574, 0.057637088, 0.05179871, -0.03347422, -0.012487981, -0.012482159], [-0.009820051, -0.07988214, -0.015858492, -0.031506218, -0.039293315, 0.015026787, 0.024084449, -0.030137645, 0.017033162, 0.052339487, -0.002006491, 0.029638834, -0.043518938, -0.024817916, -0.042419206, 0.03660722, -0.04032659, 0.007722461, 0.06298621, 0.030159188, -0.00047960944, 0.002246764, -0.021033483, 0.020595808, -0.0039783227, 0.05026719, 0.012504504, 0.01299512, 0.0036275147, 0.020374501, -0.020564191, -0.06934571, 0.01524774, -0.0027914767, 0.017113836, 0.013148043, 0.0064302906, 0.008524776, -0.047481336, -0.027520226, -0.05220483, 0.0009791246, -0.014915666, -0.011522101, 0.02298191, 0.03077088, 0.026322315, -0.0042451173, -0.034831636, -0.035627864, 0.020325324, -0.025512038, -0.012386476, 0.04733005, -0.012039883, 0.023576738, 0.016904535, 0.0114975115, 0.065047026, -0.022667166, 0.05545847, -0.00033441518, -0.02948193, -0.011843549, -0.0019648063, -0.026334492, 0.014817309, 0.03599155, 0.04442476, -0.020810584, -0.0062384354, 0.018626623, 0.0026809417, -0.029933436, 0.058748413, -0.01637323, -0.06447656, 0.023618892, 0.005708945, -0.07574269, 0.0033015304, 0.04052325, 0.0140709635, -0.021473119, -0.06526717, 0.0071382597, -0.012830021, 0.0071768123, 0.055250224, 0.00059576484, -0.058591038, -0.017091706, 0.015324083, 0.009528491, 0.00863297, -0.012094682, -0.0105813835, 0.036577713, 0.0374278, 0.033907544, 0.025543885, -0.02791102, -0.019195735, 0.020172283, -0.0049885935, -0.005923926, 0.020690652, -0.050061107, 0.011172112, -0.015892215, -0.033040594, 0.012173836, -0.009580011, -0.07729112, -0.022807207, 0.021560412, 0.05648525, -0.022623139, -0.0010383731, -0.025373401, -0.008608703, 0.015153363, 0.00410689, 0.025303964, -0.05548505, 0.017985353, -0.0060875327, 0.0047094463, -0.053975735, 0.010837932, 0.021424232, -0.026090004, 0.0009142555, -0.022529935, -0.05373686, 0.025336867, 0.023645941, 0.039097946, 0.0011090968, 0.01832539, -0.025075516, 0.027509628, 0.0066058706, 0.013327428, 0.012006862, -0.018474331, 0.0051932707, -0.042692266, -0.029905334, -0.01975204, -0.01835677, 0.037854485, 3.817204e-05, 0.024237137, 0.021438636, -0.06366171, 0.02827752, 0.008720554, -0.005599815, 0.0018926774, -0.025693763, 0.0145559, 0.031906206, 0.014056268, -0.01989536, -0.017921656, -0.02524132, 0.018178089, 0.008122916, 0.052584678, 0.06008607, -0.022943271, 0.020239437, 0.011357763, -0.04382806, -0.023891248, 0.012204983, -0.022192707, 0.044562463, 0.056222964, -0.020183876, 0.020081421, 0.002487974, -0.009071597, -0.013776593, 0.011001041, 0.02167516, 0.0044024307, 0.034461625, 0.009711155, 0.05571982, -0.023912089, 0.039518133, -0.0051380033, -0.024657147, 0.04967564, -0.019318331, -0.026496546, -0.007979128, 0.058422424, 0.05704636, -0.0012149481, -0.0010505507, -0.02860046, -0.03749759, -0.03192822, 0.04828131, -0.009332771, 0.026630385, -0.017650235, 0.006920614, 0.012214321, 0.043556172, 0.040941972, 0.0240067, 0.013651071, 0.0584791, -0.073669314, -0.012652743, 0.0327577, -0.02831581, -0.0512839, 0.030646294, -0.029068828, -0.010014423, 0.01395551, -0.025682522, 0.023908753, 0.009196886, -0.024094753, 0.07032273, 0.0055089514, -0.02129953, -0.03905398, 0.029933436, -0.031923767, -0.012447832, 0.013758328, -0.0071332534, 0.024848826, -0.03312865, -0.016145602, 0.049870133, -0.029480522, 0.028779758, 0.016100405, -0.007373995, -0.0024366875, -0.037447795, -0.00031661717, 0.015796315, -0.0045600366, -0.02686094, 0.017403025, 0.01196588, 0.02231589, 0.0035317335, 0.0016880004, 0.01685471, 0.028013946, -0.03569718, -0.032614436, -0.000994083, -0.012644547, 0.0032441549, 0.01277405, 0.011787432, 0.029994326, 0.006728964, -0.022996899, -0.022531807, -0.049577635, 0.047119055, 0.0397111, -0.0372709, 0.030798718, 0.025228206, 0.015584965, 0.020337032, 0.008756385, -0.04481339, -0.0073463614, -0.013069358, 0.02986242, -0.0028099774, -0.008608234, -0.011271758, -0.043085225, 0.0041037286, -0.046615202, -0.010610891, 0.02912316, 0.0039474103, 0.03725404, 0.025993053, 0.00530849, 0.06383302, 0.010105492, -0.005294907, -0.026252938, 0.022607215, -0.03732359, -0.030359417, -0.01785702, -0.022687774, 0.0021271252, -0.08157904, 0.07818243, 0.036768805, -0.0015231348, 0.003551639, -0.0065477933, -0.045243468, 0.0061678286, 0.044139054, -0.040755562, 0.011490017, 0.065981895, -0.05020349, 0.027817348, -0.012497948, -0.043653827, 0.003227528, -0.029241422, 0.0540666, 0.039731707, 0.04273957, 0.023806239, -0.046568953, -0.002084006, -0.0071857106, 0.04932858, 0.0030589153, 0.006449904, 0.0023055444, 0.019558135, 0.0041928357, -0.0015723134, 0.05155427, 0.04002116, -0.008050319, -0.040067997, -0.019629328, -0.03712137, 0.037891954, -0.07117329, 0.0077725765, -0.06256491, 0.030453794, -0.013285041, -0.006062563, -0.023620764, -0.0008571145, 0.02416969, 0.0027811727, -0.013650837, 0.04477885, -0.047683667, -0.016532943, -0.016037878, -0.012842199, 0.007501391, -0.100628056, 0.014394138, 0.010170536, -0.013503066, 0.060127288, -0.03265981, 0.028471658, -0.010395909, 0.05932731, -0.011746684, -0.015340944, 0.043954577, -0.039769176, 0.048589498, -0.0076241186, -0.032002218, 0.045636896, 0.0068503586, 0.031131525, -0.026417395, 0.030868066, 0.017663117, 0.03255911, 0.026755292, 0.047033574, 0.05891702, -0.0022130415, 0.06986186, -0.0012018338, -0.058152173, 0.052150853, -0.039121892, -0.0048204497, -0.00927604, 0.04132978, 0.02255663, 0.06306115, -0.0097709885, -0.006222277, 0.013265604, -0.033180166, -0.027316544, -0.0049618967, -0.013451546, -0.0543982, 0.0013638893, 0.048626028, -0.003123433, -0.0161449, -0.0075182524, -0.029645566, 0.021802088, 0.0108797345, -0.08677933, -0.041130256, 0.0133410115, -0.0036254071, -0.02869788, -0.028295083, 0.057231717, -0.04113307, 0.018194247, 0.04567156, 0.0155638885, 0.008794089, 0.018139916, -0.022161327, 0.031407394, 0.036447212, 0.053553265, -0.0032887673, 0.10065054, 0.004710617, -0.021338113, 0.024121918, 0.012877326, -0.060676683, -0.0159459, -0.06258013, -0.010851632, -0.01955439, 0.01793922, 0.006496272, -0.004469173, -0.01784578, 0.032206167, 0.021241453, -0.036553357, -0.010686532, -0.036429707, -0.031013494, -0.05008031, -0.031790048, 0.009503667, 0.022936476, -0.067720935, 0.002834596, -0.044403218, -0.014425518, 0.018768935, 0.037461992, 0.012751803, 0.025489554, -0.004880401, 0.03892705, -0.04359856, 0.03369303, 0.006387845, 0.022612834, -0.058724053, -0.007217209, -0.010225424, -0.02398422, 0.0010997294, 0.021968711, 0.015847016, 0.0039778985, -0.0024467574, 0.02456757, -0.030554494, 0.0033851925, 0.022271395, 0.008919143, -0.0005437759, -0.008335087, -0.04050639, -0.014018271, 0.0028294146, -0.018150162, 0.030163873, 0.033398896, 0.03804277, -0.018448101, -0.017618386, -0.010194745, 0.060480434, -0.03895902, -0.021240983, 0.046826556, 0.021475635, -0.021088295, 0.025840834, 0.019435422, -0.044993363, 0.029606193, 0.05727305, -0.026570316, -0.013241483, -0.05654848, -0.018808132, -0.02295287, -0.013468876, 0.016225811, 0.034553424, -0.01738268, -0.053502683, 0.011959784, -0.024780212, -0.014670474, -0.04282692, -0.0062154853, 0.03846149, 0.027512908, 0.0094445385, 0.045411143, -0.022065781, 0.0065799933, -0.016210588, -0.026126537, -0.03925561, -0.0054096575, -0.0049918722, 0.013392298, -0.017780209, 0.032920692, 0.043567646, 0.042797647, -0.009615841, -0.004427957, -6.0419545e-05, 0.005550168, -0.011335924, -0.04095977, 0.0040949467, 0.022279356, -0.011796331, 0.026932364, -0.005775921, 0.009550972, -0.003508549, -0.06211317, -0.049384784, 0.038089607, 0.002133653, -0.010697655, 0.03080835, 0.09901687, 0.019862575, -0.04066938, 0.03148444, 0.0029030656, 0.010898995, 0.035792727, 0.02129391, 0.036702298, -0.07684242, -0.04397419, 0.023707882, -0.035708424, 0.01281316, -0.043664716, -0.026157213, -0.007624572, -0.011095184, 0.005838683, -0.04263278, -0.014355029, 0.0091641005, 0.013136802, -0.0004397981, 0.019860702, -0.05368488, 0.025006901, 0.011456764, 0.018385341, 0.0021559005, 0.041760564, -0.03205421, 0.024675764, -0.020100975, 0.030304503, -0.00053113, -0.060291216, -0.023445595, -0.056042172, 0.002852365, -0.0012322777, 0.012892548, 0.012101708, -0.025709191, 0.03542459, -0.0069583175, -0.00751673, 0.01796334, -0.010588497, 0.034415726, -0.012178052, 0.00069552736, -0.0144468285, -0.009596872, -0.00579893, -0.027611265, 0.014984048, 0.0021832122, -0.03713039, 0.008237974, -0.011151856, 0.020026973, -0.0009219836, -0.05554102, -0.00706815, 0.0011788837, -0.024616048, 0.0094034355, -0.021237472, 0.106229745, 0.046331022, 0.020067018, 0.05932731, 0.010842967, 0.10567894, -0.016859863, -0.042081572, 0.072821945, -0.018128112, -0.00029881916, 0.008772895, 0.017237838, 0.005930015, -0.00917815, 0.0039317203, -0.0060002995, -0.01943074, -0.024801055, 0.019478982, 0.0006681278, -0.010820251, -0.0021320137, 0.021072254, 0.0045206933, 0.026860002, -0.012435655, 0.033767503, -0.0070248265, -0.009495704, 0.0019727685, -0.019848991, -0.012604735, 0.027165143, -0.038591698, 0.023572521, 0.02538347, 0.019220911, -0.008507447, 0.035552923, -0.008070928, -0.028613808, -0.03440729, 0.04373532, -0.04001835, 0.028712166, -0.013060926, 0.008262022, -0.049408205, -0.028587814, -0.00076437753, 0.0140248295, 0.021748226, -0.08153735, 0.0109720025, 0.01385364, 0.002808572, 0.029040026, 0.01989583, -0.016186818, 0.02866767, -0.04290631, -0.08196075, -0.02870069, -0.0034520812, -0.010850461, 0.00531692, -0.022135569, 0.013836545, 0.04686426, 0.029289898, 0.03603675, -0.025971975, 0.056070745, 0.011877826, 0.016662681, 0.018835912, 0.015710019, -0.027554007, 0.039948095, -0.013765916, -0.019049019, -0.055260003, -0.0030462695, 0.0365276, -0.008091535, 0.02596776, -0.019354863, 0.048210114, 0.014524578, -0.020074746, 0.024905968, -0.0018940825, 0.013318528, 0.043428075, -0.07135689, -0.014014759, 0.016156843, 0.00412539, -0.0261667, -0.040937286, -0.0211356, -0.04206588, -0.0053440854, -0.034573097, 0.027562555, -0.0001401593, 0.019240173, 0.02131077, -0.07671409, -0.057313792, -0.017795196, 0.034453195, 0.0279691, -0.021092482, -0.008987993, -0.010054, -0.03987409, -0.0152489105, -0.036225773, 0.00022060159, 0.016924968, 0.034811027, 0.010008803, 0.06302743, 0.02283578, 0.0291255, -0.013854812, -0.0273183, 0.06872653, -0.016603665, 0.026895598, -0.011894689, -0.002215149, -0.06604747, -0.0165669, 0.023019848, -0.010483026, -0.032044843, -0.038276017, 0.0065981424, 0.016578784, 0.006248974, 0.010299426, 0.010128939, -0.026183678, -0.06698212, -0.0044278395, -0.00096366834, -0.054620206, -0.034456473, -0.007827142, -0.042701166, -0.071479134, -0.029140957, -0.025185933, 0.016106728, -0.061359096, 0.024691923, -0.009731879, -0.015991041, -0.007019908, -0.035622243, 0.02136159, 0.010468858, -0.097821586, 0.0023437163, -0.037056096, 0.05263339, 0.011787901, 0.014066045, -0.044791963, 0.024557034, 0.015036856, 0.044161536, 0.019769838, 0.034843814, -0.0045380234, -0.00051333196, 0.0063920603, 0.008372088, -0.04829442, -0.06886002, -0.014533008, 0.0067089116, -0.015650067, -0.015534849, 0.018197758, -0.01709311, -0.019540338, 0.018546226, -0.029785432, 0.025518594, 0.005892311, 0.074568026, -0.034919456, -0.0077674245, 0.008507447, 0.025635451, -0.0013432811, 0.026589286, -0.028624931, 0.016230846, 0.05813016, 0.026526524, 0.03940057, 0.03660675, 0.02784896, 0.0123639945, -0.0068827057, -0.017671078, 0.034670517, -0.052743454, -0.0045562168, 0.052448384, -0.0014341446, 0.03785355, 0.012327461, 0.0183926, 0.024515348, -0.039956525, 0.04495964, -0.04435732, -0.03646952, -0.015845846, -0.034636796, 0.018568825, 0.0015777143, 0.020913478, -0.03268463, 0.04743075, 0.0046645706, -0.019764218, 0.015604168, -0.027553422, 0.052393585, -0.00442983, 0.014601859, -0.0001924995, -0.03496471, 0.0018944337, 0.01637042, -0.03369022, 0.0075416714, 0.030447705, -0.025868934, -0.01758045, 0.06514632, -0.03153713, -0.0386198, -0.024442986, 0.018599853, -0.00283082, 0.025088398, 0.03032031, 0.02922292, -0.0077870963, -0.054286584, -0.017293105, -0.015511432, 0.012933061, 0.0124501735, 0.012629559, -0.014613568, 0.015556394, 0.017342282, 0.078862034, 0.014636051, -0.03236146, 0.051577687, 0.034120418, 0.028720245, 0.075860724, -0.060962856, 0.009195714, 0.014461349, -0.05653209, -0.03784231, -0.014356375, -0.06889046, -0.07761102, 0.00033956722, 0.0007882643, -0.0008669503, 0.064427845, 0.035093922, 0.024534786, -0.03140786, -0.026704503, -0.0092707705, -0.058699697, -0.044096902, -0.02472424, 0.005521129, -0.0012364931, -0.021172134, -0.00479586, -0.028934876, 0.05043206, 0.011434751, -0.0143554965, 0.04313581, -0.0018547397, 0.0004992809, 0.040217288, -0.06952089, -0.0034748265, 0.0067372476, 0.058677215, -0.014784874, -0.0016214921, -0.019475702, 0.023158016, -0.0071381712, 0.026181804, 0.0077974005, -0.011194244, -0.008839872, 0.0023179562, 0.02085177, 0.046593305, -1.1357939e-05, -0.001213543, -0.00027071705, -0.0042584073, -0.005378862, -0.009830822, -0.044910926, 0.037165046, -0.016540905, 0.004315548, -0.00553518, -0.012778969, 0.049131397, 0.041686207, 0.010743438, 0.00948581, 0.01434455, 0.012260953, 0.025627023, -0.01823078, -0.011210871, 0.008044698, -0.019332148, 0.00553237, 0.030326866, 0.006151553, -0.0072006984, 0.022142507, 0.07002391, 0.034490194, -0.0003471782, -0.053636633, 0.051197194, -0.021890026, -0.022946313, 0.024349546, -0.004498212, -0.017629394, -0.018070012, 0.048086934, -0.019409487, 0.012629032, -0.08002359, -0.049000725, 0.001956844, 0.011899372, -0.02834754, 0.022066953, -0.0032055145, -0.03744232, -0.008344923, 0.004947846, -0.014224589, 0.025320942, 0.026717149, 0.010611358, 0.047708027, 0.027162801, -0.013544283, 0.001961996, 0.0070285737, 0.047411546, 0.017007751, -0.041860912, 0.021975093, 0.012115057, 0.03386949, -0.019989269, -0.0103500085, -0.0022701826, 0.009722395, 0.040777106, 3.9342962e-05, -0.066706926, 0.04067793, -0.007842364], [-0.026218222, -0.081444345, -0.05756673, -0.035453487, -0.0056560016, 0.044037905, 0.03764579, -0.0066006216, 0.030081693, 0.00726063, 0.0116366185, 0.03243954, -0.080843195, -0.03471697, -0.015621453, 0.051356725, -0.0054293084, -0.032549992, 0.059776813, 0.05592991, -0.015297106, -0.0010999239, 0.0018738846, 0.056686357, -0.016081033, 0.021128884, -0.006700296, -0.024819544, 0.034122158, -0.013106955, 0.012986807, -0.0461564, 0.012083808, 0.034819342, 0.036803138, 0.021771112, 0.007920369, -0.040106952, -0.04322219, -0.049775936, -0.08653274, 0.025928086, -0.031925544, 0.019292714, 0.025920678, 0.033822592, 0.022815272, 0.038744908, 0.010567271, -0.030437022, 0.03845181, -0.006333924, -0.037755705, 0.0075774333, -0.009568638, 0.008555593, 0.03006102, 0.042387076, 0.013947995, -0.029613627, 0.022527294, -0.00069987815, -0.06327243, -0.010312292, 0.0036374535, 0.0036378575, 0.04797317, -0.0022875348, -0.022247396, -0.052102398, -0.002635773, -0.000915391, -0.015365666, -0.02528074, 0.04424911, -0.0006132689, -0.053735986, 0.006648573, -0.006504179, -0.00013388738, 0.018239934, 0.009408215, -0.016129253, -0.0739123, -0.048337385, 0.030318843, -0.031572238, 0.029942283, 0.033726692, -0.0075177634, -0.040020745, -0.006900723, 0.023548523, -0.0011670024, 0.02138063, -0.016964097, 0.002793047, 0.04325344, 0.020434933, 0.04621593, 0.016141916, -0.032247733, -0.026023181, -0.026528021, 0.015469785, -0.02316656, 0.023481343, -0.014999461, 0.0026955276, -0.048068535, -0.019952184, 0.026032882, 0.00809251, -0.0649599, 0.007840359, -0.004727275, 0.04741122, -0.02508678, -0.03967808, -0.03193039, -0.04149701, -0.0042476244, 0.023085741, 0.031721342, -0.008084698, -0.041772865, 0.008031626, -0.0007914711, -0.047634277, 0.0012564402, 0.04042914, 0.0047563696, 0.02404693, -0.018645233, -0.04302284, 0.058953553, -0.009209944, 0.06305908, -0.033909876, 0.03654883, -0.022040505, -0.010358358, 0.003799223, 0.006918772, 0.031141613, -0.035113517, 0.03028387, -0.022379937, -0.007019255, -0.018711908, 0.021159055, 0.017348789, 0.0011723902, 0.019326119, -0.0024212874, -0.068079986, 0.009896352, 0.03266529, -0.018934963, 0.005606029, -0.013947995, 0.01707401, 0.033139955, 0.011071167, -0.02474061, -0.019970503, 0.022510054, 0.013049305, -0.0043741036, 0.0361372, 0.08005011, 0.014775564, -0.0066596176, 0.023314185, -0.031334497, -0.029319182, 0.025219318, -0.023670858, 0.0028389783, 0.04618657, 0.011596209, 0.013028832, 0.012013229, 0.0073538385, -0.02743641, 0.019342283, -0.02941859, -0.027554402, 0.018019034, 0.011988982, 0.029206846, -0.035793997, 0.017300298, 0.0046874057, -0.029185025, 0.011284794, 0.0033813973, 0.019922685, 0.023343818, 0.05486096, 0.011805662, 0.0030915325, 0.04512409, -0.060084995, -0.04084185, -0.039441824, 0.0360413, 0.007016022, 0.07536055, -0.041257787, -0.006095227, 0.047143918, 0.033649646, 0.043917757, 0.016371438, 0.01809554, 0.020401258, -0.035697557, 0.021411205, 0.06327243, -0.027271273, 0.024786675, 0.023495216, -0.055664826, -0.03905794, 0.023102982, -0.0012413543, 0.030464903, -0.003666952, -0.0271029, 0.06359732, -0.0059664743, -0.0223961, -0.034987845, -0.013755919, -0.009260589, -0.03197996, 0.0268292, -0.050754365, 0.0010172209, -0.015648391, 0.016213035, 0.040542286, -0.005389708, -0.023594351, -0.00017733513, -0.06697279, -0.009973937, -0.010382873, -0.00026939114, 0.051921368, -0.025982235, -0.029517723, 0.019392928, 0.00086151285, 0.008294013, -0.004753676, 0.022572955, -0.00072910707, 0.010365093, 0.0038152516, -0.06316252, 0.0024094342, -0.049565542, 0.05199464, 0.008511379, 0.005382435, -0.04376905, 0.013042302, -0.057037644, -0.012361483, -0.062716946, 0.041238125, 0.0071194014, -0.0056120907, 0.038826805, 0.026865838, 0.024017297, 0.057516083, 0.015533631, -0.049992528, -0.024823852, 0.00083942275, 0.016173165, 0.030043373, 0.0099575035, 0.006483167, -0.029372253, -0.017877871, -0.027490288, 0.006053488, 0.027532713, 0.019367874, 0.055416986, 0.039224427, -0.020159345, 0.023566335, -0.0052956906, -0.026648171, -0.059089325, 0.0111463275, 0.011642545, -0.004687911, 0.012642795, 0.005875151, -0.01728629, -0.04522188, 0.032212712, 0.010597847, 0.018801345, -0.030886231, -0.015676677, -0.030014008, -0.00899672, 0.0490766, -0.013052, 0.036887188, 0.062204566, -0.014891941, 0.008831718, 0.0018089614, -0.03415381, -0.022567434, -0.053130396, 0.036622107, 0.051509198, 0.02796172, 0.02422796, -0.061537556, -0.056873955, 0.050510835, 0.035529457, 0.013909607, 0.012598883, -0.00030495075, 0.013845626, -0.011617762, 0.008617284, 0.012449911, 0.029401077, 0.014314096, -0.058628127, -0.0075953817, -0.012931852, 0.035302628, -0.047701627, -0.020305626, -0.06709778, 0.012791229, 0.013546913, 0.049619418, -0.017264672, 0.003075369, -0.044007733, -0.007230458, 0.014297529, -0.0047008754, 0.0039395755, 0.0074804523, -0.015358526, -0.013018595, -0.031301096, -0.039193444, 0.03914738, 0.015756147, -0.044894572, 0.042587504, -0.006768721, 0.015036335, -0.044762027, 0.055154063, -0.00676761, -0.022324981, 0.034888305, 0.031898063, 0.045533564, -0.05518854, -0.025057685, 0.033322606, -0.014523414, 0.028076213, -0.02835072, 0.05367241, 0.011119388, 0.016534418, 0.023216126, 0.008906609, 0.03459467, -0.021779733, 0.043897822, 0.01558266, 0.024441317, 0.025764566, -0.0005597948, -0.001311396, 0.0055381428, 0.042082127, 0.03870073, 0.0117346775, 0.02607275, -0.010845686, -0.004874363, -0.00076965045, -0.032325856, -0.0134146, -0.036132894, -0.03421806, 0.0016626819, 0.009983365, 0.02920577, 0.050164934, -0.021844387, 0.0010517029, 0.018309707, 0.037728764, -0.01298546, -0.0366464, 0.011889981, 0.0020581482, 0.01261828, 0.021411205, 0.046766296, -0.03787693, 0.004043998, 0.047513053, -0.0035538077, -0.004698181, -0.017836386, -0.049020562, 0.027936937, 0.0039997846, 0.024772938, 0.012017268, 0.086621106, 0.03446698, -0.009208865, 0.006008769, 0.004885139, -0.06136299, -0.0056824014, -0.022863762, -0.0077218274, -0.022715058, 0.014027734, -0.033725616, 0.010143822, -0.04928349, 0.050850272, 0.04079282, -0.016235126, 0.024086665, -0.028564079, -0.023916006, -0.011179731, -0.029253721, 0.062065557, 0.06839948, -0.051996797, -0.01544527, -0.041057363, -0.045962702, 0.007766529, 0.025140658, 0.010573332, -0.014344, 0.019738287, 0.0662659, -0.06806328, 0.008751086, -0.00692443, 0.01573783, -0.025607241, -0.006408276, -0.036409825, -0.005719712, 0.0032596325, 0.07315801, 0.0049468963, 0.0028630889, 0.030009903, 0.022255747, 0.032898046, 0.040901653, -0.02165689, -0.02140582, 0.021154206, -0.005179583, 0.0019308609, -0.016517447, -0.00425638, 0.023326444, 0.020118669, -0.0016774986, 0.066554695, -0.026505932, -0.009644337, 0.02455985, 0.032865718, -0.043768786, -0.018714264, 0.045851853, 0.014940701, -0.05369719, -0.0046308334, -0.019946797, -0.08083673, 0.025889566, 0.07162787, -0.027143849, -0.023982275, -0.037115633, -0.0041507785, -0.0070925294, -0.033035163, 0.05540621, 0.03803587, -0.031117909, -0.06463447, -0.0019557795, -0.014610899, -0.009728656, -0.025011888, -0.004578841, 0.028932605, 0.022101386, -0.019921472, 0.016501283, -0.041042812, 0.025202079, -9.69808e-05, -0.007845747, -0.03373437, -0.018755548, 0.008646377, -0.017514734, 0.020133484, 0.022731224, 0.0066345646, 0.020530298, -0.01742314, -0.03709381, 0.002146117, -0.0006152893, -0.006928201, -0.012081654, -0.018733459, -0.007095762, -0.0014999699, 0.011145249, -0.02777099, 0.01823697, -0.0048382645, -0.08428278, -0.046572335, 0.060382403, -0.01937636, -0.013573003, 0.038471308, 0.042134658, 0.039024, -0.0136979995, 0.0034609225, -0.0028543337, 0.045741536, 0.016654836, 0.041343994, 0.0065335426, -0.07112141, -0.06918826, 0.030709377, -0.040227637, -0.019580424, -0.056901872, -0.03148859, 0.00097627344, -0.0037596223, -0.002143545, -0.02276786, -0.016363895, -0.030733755, 0.020948932, -0.0036310556, -0.0029870085, -0.028755886, 0.01766236, 0.04259909, -0.016461145, 0.013862868, 0.043141373, -0.01076689, 0.030264476, -0.0027520997, 0.06323148, 0.025327615, -0.054606657, -0.026540445, -0.033009034, -0.016752625, 0.00039856418, -0.014864463, -0.01694578, -0.07777753, -0.02956729, -0.0031648069, 0.010071995, 0.009549646, -0.0037364548, 0.059132427, 0.0041734073, 0.0062307473, -0.0052059838, -0.0055594244, -0.026955813, -0.016291967, -0.028233267, 0.00835328, -0.05633076, -0.02323229, -0.05017356, -0.0068683964, -0.0006034361, -0.008099985, -0.008862698, 0.0026939113, -0.03908219, 0.040395737, -0.0056922343, 0.03425362, 0.03285767, -0.020368932, 0.06318946, -0.003825354, 0.06557411, 0.0036820378, -0.079061985, 0.083584525, 0.0027112868, -0.021294829, -0.035212655, 0.011511622, -0.0063985777, 0.041429795, 0.029638411, 0.012372595, -0.0068974905, 0.012612913, -0.015068661, -0.01175569, -0.032324106, 0.0034445697, 0.056121174, -0.010147964, -0.0014870389, -0.04398187, 0.023865359, -0.0015678564, -0.008159049, 0.0055138976, 0.003259902, -0.025069, 0.035004683, -0.040896807, 0.03408121, 0.0372013, 0.024341105, 0.0047288914, 0.012102127, -0.019655315, -0.02204697, -0.03140885, 0.032746106, -0.018358601, 0.007082831, -0.026389554, -0.025588453, -0.020189248, -0.05044295, -0.027452841, -0.0035128603, -0.0063231485, -0.034091983, -0.06077464, 0.00659685, -0.029244022, 0.029350702, 0.01731754, 0.0034632923, 0.02409542, -0.057274707, -0.059781663, -0.033459455, 0.014516949, -0.00818518, -0.011968778, -0.013301455, -0.020485781, 0.07457231, 0.043240506, 0.04177293, 0.020786623, 0.014745392, 0.0518718, 0.0070117125, -0.0062575517, -0.0038856976, -0.014532035, 0.033958904, 0.00063037523, -0.044045985, -0.08918948, 0.004530081, 0.024150375, -0.0016544656, 0.04421678, 0.03685055, -0.010163067, 0.03466633, -0.027127417, -0.01086616, 0.026830412, -0.008215352, 0.012216146, -0.06553963, -0.010313369, 0.024761623, -0.009095184, -0.029272038, -0.02922786, -0.054104514, -0.02583838, -0.025216088, -0.05834581, 0.03456827, -0.010640949, 0.023947254, -0.0043037925, -0.017840696, -0.043695778, 0.010525919, 0.029097205, 0.021485558, -0.0066130133, 0.031986423, -0.008505755, 0.01812221, -0.041300893, -0.035590876, -0.041385077, 0.028689615, -0.01600749, 0.02749729, 0.06528748, 0.0256824, -0.01893604, -0.0050149853, -0.038296644, 0.040604785, -0.048446223, 0.020210227, -0.00184607, -9.9135934e-05, -0.079619355, -0.017023902, 0.0044654272, 0.0030150253, 0.0008062539, -0.05479038, -0.010579527, -0.010491976, 0.0042299796, 0.0008239327, 0.012666367, -0.009293993, -0.008775685, -0.0030148907, 0.00039250287, -0.07692087, -0.014857997, -0.00165029, -0.027026935, -0.028299, -0.03405104, -0.0044219205, -0.0065588653, -0.030611586, 0.04808093, -0.03774924, -0.015067517, 0.007527596, -0.054662693, -0.0026685884, -0.0049734986, -0.041158654, 0.03454456, -0.030612396, 0.033885904, 0.028193815, 0.033235323, -0.06555902, -0.0036351637, 0.012758364, -0.010492246, 0.039231967, 0.04331378, 0.010218006, -0.01278207, -0.019291637, -0.010148368, -0.014667808, -0.08305867, -0.05330252, 0.019690335, 0.0067194225, -0.019815333, 0.018690053, 0.009198225, 0.003267445, 0.03508981, 0.027587805, 0.0010570908, 0.0035818245, 0.0047983946, -0.039278843, -0.008843572, -0.013868255, 0.019036254, 0.042409707, -0.012101049, -0.018452484, 0.01778116, 0.035336033, 0.0030585995, 0.019946257, 0.038872063, -0.0012957713, -0.012760519, 0.0002974078, -0.017419368, 0.0145121, -0.09787814, -0.015682066, 0.04869945, 0.0048932205, 0.02168437, 0.009471792, -0.023336815, 0.04029768, -0.038199123, -0.019752633, -0.060632396, -0.037280228, -0.0010215312, -0.00047278142, -0.0044137044, 0.02269728, 0.002306813, 0.009994882, 0.06161083, 0.037279423, 0.017568612, 0.015298721, -0.020073678, 0.062132366, -0.024730105, 0.015635999, 0.024191324, 0.009798294, 0.026671875, 0.04646458, -0.033089515, -0.0048739254, 0.043973252, -0.040404357, -0.0020660951, 0.03057266, -0.057248846, -0.017346093, -0.034608677, 0.0034072588, 0.044622485, -0.013834312, 0.015005085, 0.04130022, -0.0028116351, -0.008414701, 0.011383391, -0.013688402, 0.005538681, 0.031743366, -0.031801082, 0.0052908417, -0.009573083, 0.033852763, 0.025070617, -0.0171555, -0.059240185, 0.06688658, -0.0020204335, 0.019656932, 0.05121664, -0.05701946, 0.030117927, 0.033663116, 0.005892122, -0.0135020185, 0.018148342, -0.011072514, -0.06761609, 0.021714002, -0.028189087, 0.0066905976, 0.018634323, 0.023856739, 0.005784703, -0.07889711, 0.0012887671, -0.007478297, -0.030288722, -0.03119199, -0.03347993, 0.009222335, 0.012483045, -3.2326934e-06, -0.02085222, -0.029710742, 0.06645125, -0.01038853, 0.013286371, 0.014842913, -0.008214004, -0.048945133, 0.0063646343, -0.023318496, 0.08665342, 0.005152105, 0.042964652, -0.0012165703, 0.021299947, -0.069235675, 0.036080092, 0.0052983845, 0.031025236, -0.02182984, 0.02446287, -0.002894069, -0.011561189, 0.025924047, 0.043162387, -0.018534109, 0.038069274, -0.004832607, -0.039768193, -0.017099602, 0.029558672, -0.027212812, 0.05218466, 0.014993233, -0.010665733, 0.05100651, -0.028115813, 0.091334365, 0.023634626, 0.014593995, 0.013248521, -0.012488702, 0.0016082651, 0.036817145, -0.03575359, 0.0021276511, 0.021424137, -0.010367247, -0.0053361, -0.005078023, 0.0235661, 0.004523885, -0.0081402585, 0.031274155, -0.02500273, -0.03727107, -0.058166932, 0.034577966, -0.016428549, -0.039865576, -0.03316528, 0.03230296, -0.02662554, 0.003189591, 0.026102923, 0.00026898703, -0.020663377, -0.06715894, -0.0074308845, -0.00058403995, 0.021992553, 0.011084367, 0.058717564, 0.038188886, 0.008239058, -0.024074946, -0.0069977036, 0.007427652, 0.06595772, 0.022138022, 0.023441875, 0.010368595, -0.0028814075, 0.025994625, 0.007690578, -0.037073337, 0.038024828, 0.052541643, 0.0040866635, 0.011409253, -0.0022117011, 0.0031823171, -0.009671141, 0.00918516, 0.015156483, -0.0055031213, 0.044938747, 0.032844704, -0.05245584, -0.006976422, -0.008232054], [-0.024726758, -0.060409717, -0.038933527, -0.017655639, 0.0031501483, 0.03794834, -0.00090051006, -0.034356374, 0.012523033, 0.04917953, -0.012047532, 0.046271514, -0.07731695, -0.013964957, -0.05071907, 0.03634626, -0.013326465, -0.072347015, 0.03934242, 0.039120816, -0.037702564, 0.003447926, -0.014741067, 0.044316377, -0.0192547, 0.047454562, 0.004449668, 0.0016224794, 0.025294863, -0.0019548195, 0.016621916, -0.03579427, 0.002004617, -0.0023237993, 0.009806897, 0.012292869, 0.023296418, 0.00794947, -0.021847945, -0.045625843, -0.06307801, 0.020715762, -0.02517802, 0.0141785005, 0.0024920155, 0.037818905, -0.002805532, 0.06172624, -0.023282314, -0.060197186, 0.029082244, 0.0043282905, -0.024530338, 0.005918411, -0.003393659, 0.03675471, 0.04803123, -0.0072896997, 0.0074705067, -0.015096134, 0.04429019, -0.02592492, -0.07285468, -0.016801463, 0.023828262, -0.0025171975, 0.026898457, 0.0016358258, 0.020927291, -0.04650016, -0.021859026, 0.01738468, -0.008902358, -0.038120586, 0.026063925, -0.0034177075, -0.06894442, -0.006783037, 0.013117833, -0.0036463607, 0.017622398, 0.036128685, -0.0071758768, -0.035347033, -0.058698345, 0.021921413, -0.01120853, 0.015780583, 0.037787173, -0.0018435777, -0.014187062, 0.011677042, 0.020668417, 0.03989189, 0.0055934363, 0.012314022, -0.007449417, 0.037819408, 0.029559696, 0.030468011, 0.03581504, -0.014548173, -0.04396181, -0.016794411, 0.008182151, -0.032524377, 0.014830212, -0.032811202, 0.024540285, -0.012192849, -0.011016139, -0.012012844, 0.011835311, -0.018765662, 0.01999908, 0.0052648108, 0.03570613, -0.029463502, -0.015230607, -0.0036549226, -0.00010752735, 0.025167948, 0.012978828, 0.019973142, -0.0207417, -0.013153843, -0.025602084, 0.009989813, -0.05734903, 0.029178943, 0.01161396, 0.005914256, 0.045997027, -0.04578298, -0.028759914, 0.042679545, -0.002194348, 0.060898248, -0.02683399, 0.023503665, -0.027436346, -0.007816256, 0.016817579, 0.013956395, 0.036893714, -0.044425163, 0.014978282, -0.040030394, -0.007901623, -0.029322986, 0.029925339, -0.012843852, -0.012165448, -0.0021563624, 0.011259398, -0.08294564, -0.0014654063, 0.040956084, -0.027162867, 0.004175184, -0.004468806, 0.018281914, 0.028459743, -0.0049739582, -0.013197407, -0.049351778, 0.01309114, 0.022226684, -0.00836831, 0.00845311, 0.07145255, -0.0012057164, 0.0050802263, 0.055867884, -0.048476573, -0.0277345, 0.029637257, -0.016768979, 0.027900701, 0.04908535, 0.006356956, -0.0067185704, -0.011235726, 0.007984094, -0.01877473, 0.024144044, -0.02943278, -0.019276103, 0.012184334, 0.002547416, -0.0068522873, -0.029848786, 0.008435986, -0.01990325, -0.025689216, 0.039593734, -0.016512373, 0.024399642, 0.022911636, 0.025188848, 0.019929577, -0.010221897, 0.017463246, -0.03759327, -0.059758008, -0.03866754, 0.04286589, -0.01496821, 0.022434182, -0.04070376, -0.020331232, 0.05747148, 0.028905464, 0.02459581, 0.008535707, 0.040370602, 0.0030324222, -0.016055822, 0.030806208, 0.06448619, -0.061367642, -0.0076401075, 0.03158232, -0.026462052, -0.020038962, 0.024700062, -0.01771809, 0.014294086, 0.0024315785, -0.008682518, 0.07067518, -0.006586742, 0.026418991, -0.055811226, 0.0012208257, -0.016550146, 0.002504103, 0.044924773, -0.04610531, 0.015365079, -0.015659709, 0.01735446, 0.053941965, -0.04692322, 0.00519405, 0.010098001, -0.062640846, -0.004483412, -0.04435668, -0.010803161, 0.040891618, -0.024518752, -0.034820728, -0.024124151, -0.024624517, 0.008571969, 0.019430973, -0.007906157, 0.025849877, 0.028113239, -0.024419537, -0.081263475, -0.00068249647, -0.022121925, 0.026856655, 0.015413964, 0.0019702436, -0.019946197, -0.0015622943, -0.03607681, -0.004609889, -0.05620986, 0.0074720173, 0.022080375, -0.01856874, 0.030338263, 0.022737626, 0.015610856, 0.064314954, -0.0061088502, -0.046510234, 0.0118375765, 0.022098757, 0.010713451, 0.021722035, 0.019279, -0.0076392265, -0.020323424, -0.02038638, -0.007940403, -0.01219768, 0.0110100955, 0.008485343, 0.053625174, 0.03140856, -0.025397355, 0.037204966, 0.019236488, -0.03319699, -0.07600043, 0.022991965, -0.023408854, 0.0003968691, 0.02947307, -0.0023021428, -0.022404972, -0.0519828, 0.03474216, 0.0053420253, 0.02990721, -0.026868237, 0.0033280596, -0.023127193, 0.041000403, 0.034291904, -0.031508535, 0.005474577, 0.057900205, -0.009714227, -0.013653707, -0.012688227, -0.009324913, -0.0047241524, -0.015089083, 0.04693128, 0.038660202, 0.02076814, 0.022804864, -0.05782201, -0.02847586, 0.010818208, 0.046776157, 0.0134323565, 0.023175543, 0.0077681583, 0.061381746, -0.014574614, 0.0030550233, 0.026035216, 0.029404573, 0.011281054, -0.025461426, -0.011532371, -0.02289149, 0.03374596, -0.063402355, 0.010797055, -0.06452119, 0.004625942, 0.0076459153, 0.0041199718, 0.0012026946, 0.020842427, -9.443268e-06, -0.019874869, 0.0039515668, 0.022497643, -0.00765635, -0.0026884354, -0.047876805, -0.012093679, 0.0154648, -0.03184723, 0.04025703, 0.009138818, -0.008189202, 0.05473973, -0.046431668, 0.01613565, -0.053162325, 0.060220193, -0.021439996, 0.006636729, 0.0438767, -0.0011664325, 0.034295935, -0.036417272, -0.016151765, -0.0048413747, 0.0026002983, 0.023137266, -0.028862655, 0.0115590645, 0.02468143, 0.0340421, 0.019942168, 0.021073848, 0.03883777, -0.02554341, 0.07401306, 0.013366631, 0.016395403, 0.03691487, 0.012395611, 0.013382748, 0.016463269, 0.032053724, 0.02741217, 0.030988526, 0.05289842, -0.0081630135, 0.0038568825, -0.031372804, -0.0074108248, -0.0019178648, -0.029211177, -0.04155441, -0.017608423, -0.020814473, 0.02239515, -0.004911507, -0.032249138, -0.011599355, 0.043143775, -0.00330187, -0.011190399, -0.011647201, 0.017857598, 0.0016952555, 0.028296564, -0.00010929009, 0.03430097, -0.05414594, -0.0066470536, 0.04006132, -0.004418946, 0.008769901, -0.037706718, -0.024480477, 0.03444451, -0.018462282, -0.022059474, 0.0059007835, 0.07988149, 0.0409581, -0.022317339, -0.01683974, -0.012881122, -0.08000639, 0.0034056203, 0.0012913354, -0.034577973, 0.020763103, -0.011885927, -0.023010347, -0.021352867, -0.04521034, 0.066724375, 0.02223575, -0.016168889, 0.024697544, -0.040563244, -0.0024738845, -0.012772713, -0.024945842, 0.03828782, 0.06859993, -0.050760966, -0.022335468, -0.047490325, -0.05150736, -0.012998973, 0.058502935, -0.050502095, -0.0019601707, -0.0022182867, 0.034191176, -0.039856132, 0.004963885, 0.02776195, 0.019953752, -0.011348542, -0.020428183, -0.048849776, -0.03703549, 0.024370681, 0.053385943, 0.008900595, -0.011311272, 0.016745748, 0.018591402, 0.015444654, 0.015964411, 0.01792962, 0.041104153, 0.024422558, -0.029375363, 0.031899866, -0.02150698, 0.0040583387, 0.0024240238, 0.026105726, 0.0081489105, 0.06859993, -0.016869202, -0.033089213, 0.028733725, 0.03889953, -0.026155084, -0.0023107047, 0.015329572, 0.03489426, -0.04318822, 0.016649364, -0.006948231, -0.0497839, 0.005497202, 0.041123293, -0.056145895, -0.022409001, -0.018323466, -0.00049734546, 0.0075717387, 0.004313244, 0.060007814, 0.04398196, 0.019122995, -0.06732572, 0.012420793, 0.002241706, -0.027855374, -0.014003737, 0.011249325, 0.023992952, 0.03203358, -0.017930752, 0.04178004, -0.058833323, 0.018538017, 0.004719116, -0.016291779, -0.007796866, -0.00036060694, 0.004396408, -0.02839106, 0.031338554, 0.03779926, 0.02931719, 0.016568843, -0.025010811, -0.012080018, 0.023179572, 0.019266596, 0.0029382415, -0.028741783, -0.010332699, -0.0033265485, -0.001951357, 0.04450675, -0.024586493, -0.013729253, -0.00773303, -0.09574013, -0.054292496, 0.07944231, -0.019969365, -0.018749546, 0.04148088, 0.045524105, -0.006946216, -0.035303216, 0.00082143844, 0.03426471, 0.045964293, 0.0134323565, 0.018845238, 0.028739767, -0.1098582, -0.055614054, 0.06790994, -0.03720295, -0.0030215941, -0.047812656, -0.024697544, 0.02247334, -0.021078384, 0.0043761367, -0.030851787, 0.0070759035, -0.01461012, -0.0020603952, -0.0027477392, 0.014858668, -0.026501838, 0.019330747, 0.023923954, 0.044461425, 0.0012188111, 0.050637823, -0.018500542, 0.011649216, -0.014927918, 0.03665499, 0.010626825, -0.041562468, -0.05211576, -0.0058573443, 0.011630581, 0.005811261, -0.022345541, -0.0031981515, -0.07131317, -0.010630539, -0.010243554, 0.0080149425, 0.0048309243, 0.0025443942, 0.037597805, -0.0023000024, -0.012089398, -0.009279837, -0.010775398, -0.04995313, -0.0016793909, -0.04079089, 0.012227396, -0.04765048, -0.032942146, -0.01815122, 0.005260278, 0.027719894, -0.013366631, 0.01024752, 0.008892285, -0.0498524, 0.03740164, -0.00996907, 0.06629174, 0.008307055, -0.020898331, 0.061673857, -0.00025635326, 0.06735896, -0.036195166, -0.059679437, 0.065287985, 0.01425858, -0.03126339, -0.021633897, 0.041546352, -0.021297969, 0.029170886, 0.020555602, 0.0037939274, -0.030911468, 0.029930124, -0.025155356, -0.014829204, -0.027108539, 0.025784403, 0.05002666, -0.028682353, 0.01653957, -0.051278707, 0.022527609, 0.016926367, 0.004502047, 0.011584876, -0.021169038, -0.034531638, 0.035297677, -0.043035112, 0.034975853, -0.019321682, 0.031250417, -0.00108585, 0.010667871, -0.04531963, -0.02205746, -0.05236859, 0.0372372, 0.00763419, 0.030344369, 0.0031271696, -0.009103814, 0.00738388, -0.02657109, -0.041642044, 0.018241877, -0.0014003736, -0.01108177, -0.024706611, 0.040481653, -0.014705876, 0.04351231, -0.00367255, -0.007537994, 0.014648901, -0.050249267, -0.047244042, -0.03785869, 0.053788856, 0.016210439, 0.029239632, -0.010736685, -0.005148218, 0.06476823, 0.07017129, 0.045125224, 0.008191972, 0.04780963, 0.029208658, 0.019190734, -0.0066266563, 0.029281685, 0.006483874, 0.024234194, -0.03278904, -0.024204984, -0.060336187, -0.008874154, -0.003040984, -0.014599545, 0.009355634, 0.0032998556, -0.017735213, 0.039027892, -0.07374109, 0.044926792, 0.022393892, 0.004286992, 0.0061716167, -0.062097922, -0.047015894, 0.02086572, -0.007959039, -0.021249117, -0.056000847, -0.022163225, -0.025323762, 0.0053295284, -0.05434689, 0.04368078, 0.0052643074, 0.011028226, -0.016973708, -0.028671272, -0.049959168, 0.015881814, 0.02802762, 0.016390618, -0.027363822, 0.021985818, -0.015622943, -0.01153086, -0.07792736, -0.039511643, -0.027572328, 0.009244833, 0.026386758, 0.010288881, 0.052897412, 0.030310122, -0.009723796, -0.009282481, -0.037219066, 0.037106253, -0.04215173, 0.033890128, -0.03390511, -0.0049578417, -0.08155861, -0.0111727705, 0.03551676, 0.015074981, 0.012714921, -0.068243355, -0.0026889392, -0.03911125, -0.0051023867, -0.036145303, 0.027057607, -0.00803811, 0.008457139, 0.0024502133, -0.003510881, -0.05816449, 0.0009841145, -0.009813948, -0.0069779456, -0.06718369, -0.01906684, 0.008174596, -0.006963214, -0.048949875, 0.017904561, -0.010504817, -0.0058331694, 0.030053265, -0.050829463, 0.04654549, -0.015574971, -0.030359477, 0.023560576, -0.047476217, 0.05557376, 0.0060809613, 0.02587405, -0.03144533, -0.012553503, 0.027529016, -0.01623183, 0.037112296, 0.026557997, 0.0048205997, -0.033933315, 0.021146877, 0.003982667, -0.058430407, -0.062612645, -0.008481817, -0.014617424, -3.5254867e-05, -0.025834767, 0.019050723, 0.02701505, -0.03652807, 0.012683693, -0.011778148, 0.0009003841, 0.03428385, 0.027331587, 0.0121396985, 0.0045780963, -0.018887544, 0.03408894, 0.009600404, -0.031157497, -0.019954255, -0.0013104739, 0.038238436, 0.053476598, 0.0007917236, 0.030176656, 0.019477937, -0.030316496, 0.004415924, -0.0067941165, -0.010728559, -0.08764964, 0.0020840662, 0.053839218, 0.017587017, -0.03551676, 0.011897007, -0.007131556, 0.035808872, -0.06063837, 0.008602188, -0.057451334, -0.04424587, -0.011487546, 0.0013913081, 0.022355614, 0.006563953, 0.028463773, 0.017006949, 0.05044392, 0.020948224, -0.009065538, 0.016644327, -0.013203955, 0.06699734, -0.058689725, -0.006855435, 0.01148805, -0.0022391877, 0.008707953, 0.047181085, -0.055180922, 0.035799704, 0.011959962, -0.042863876, 0.020760331, 0.015892895, -0.030760376, -0.02506772, -0.005013557, -0.0010455587, 0.023819195, -0.00970428, 0.010348815, 0.02864886, 0.007642248, -0.021418842, -0.018058551, -0.008861311, 0.025548197, 0.030421425, -0.029726904, 0.013997694, 0.013860074, 0.0015706044, 0.031229768, -0.0068203057, -0.06657731, 0.027716873, -0.014731184, 0.05516153, 0.059800312, -0.05132303, 0.029630207, 0.030065352, -0.041425478, -0.0095142815, 0.005676034, -0.01945968, -0.07929928, 0.015178228, -0.025694253, 0.015191826, 0.036199193, 0.035103776, -0.0088711325, -0.03133503, -0.008831848, -0.033387367, -0.059937302, -0.050575625, -0.045835864, 0.009608966, -0.019790256, 0.008718025, 0.0029523433, -0.022549516, 0.05101984, 0.00024074038, 0.01740684, 0.003146497, -0.012785933, -0.042212684, 0.035671882, -0.04285506, 0.035579212, 0.064744055, 0.03976346, -0.03231411, 0.0057659335, -0.053653374, 0.012774349, 0.027020589, 0.01515355, -0.0035899528, 0.0070771626, -0.0040331567, 0.008988984, 0.047489315, 0.078687854, -0.024828997, 0.024561562, 0.036885656, -0.05620633, -0.035839092, 0.046401702, -0.0425909, 0.03308216, 0.0034300468, 0.00860118, 0.0147456005, -0.018268066, 0.0859977, 0.018776743, 0.0014555224, -0.0098197395, 0.005074183, 0.0051109483, 0.03518713, -0.023765307, -0.011897942, -0.0059476225, 0.010504943, 0.029742202, 0.028204523, 0.030934637, 0.0023449524, -0.012358783, 0.059866793, -0.013707093, -0.046794415, -0.052206416, 0.062712364, 0.008610246, -0.04678069, -0.043065332, 0.010077541, -0.016056074, -0.0009125974, 0.011098233, -0.012292869, -0.014994399, -0.06322507, -0.004162593, 0.0035552017, 0.017127318, 0.017030116, 0.05268286, 0.029303845, -0.005704741, -0.030434016, -0.004039704, 0.010323381, 0.025720945, 0.006268819, 0.006646046, 0.044885334, 0.02729347, -0.013895455, -0.020724447, -0.019335784, 0.025716413, 0.03788866, 0.005159802, -0.030057544, 0.011575684, 0.0050565554, -0.043851074, 0.00019497202, -0.006178668, -0.019047702, 0.054348905, 0.019164545, -0.05017876, 0.0314695, 0.025653457], [-0.034291934, -0.09041018, -0.039843358, -0.033949826, 0.00059767434, 0.03318973, 0.014215102, 0.0045510996, 0.022604413, -0.0035572427, -0.008405313, 0.03702274, -0.06353217, -0.017662732, -0.017736208, 0.027329803, -0.011241932, -0.020134771, 0.026754264, 0.059514605, -0.0023906974, -0.019206123, -0.022216633, 0.039381433, -0.00551962, 0.035021693, 0.021481073, 0.01692584, -0.002380813, -0.008978183, 0.036488008, -0.059169233, 0.010304215, 0.006754974, 0.013173373, 0.014241773, 0.021418666, -0.034226127, -0.045841437, -0.048034348, -0.058215246, 0.017841153, -0.04698185, 0.030410185, 0.029349519, 0.039921768, 0.01831648, 0.03475419, -0.009099666, -0.00053099944, 0.049670182, -0.009583326, -0.030407518, 0.009868161, -0.004122113, 0.0038196754, 0.033769537, 0.014774105, 0.02221583, -0.012485821, -0.00033710862, -0.0033193463, -0.0698967, -0.022611346, 0.015007468, -0.0027726118, 0.007832974, 0.024654685, -0.021768043, -0.043725174, -0.01062799, 0.02233558, -0.0029497005, -0.029385524, 0.048701793, 0.004426951, -0.038930576, -0.024487313, -0.012683978, -0.028465409, -0.0064565367, 0.0051947795, -0.021675231, -0.078781, -0.057487685, 0.031180413, 0.012135376, -0.0047568586, 0.061690874, 0.030579671, -0.050314527, -0.0035345731, 0.0085688, 0.00049179455, -0.00052646553, -0.006300284, 0.00930249, 0.050754048, 0.045202423, 0.030676883, 0.038609605, -0.04535818, -0.034797262, -0.032272816, 0.015722489, -0.012230856, 0.015345376, -0.04201696, 0.0031353233, -0.034697652, -0.013887328, 0.02442224, -0.0024917102, -0.07415963, 0.021214373, -0.002608858, 0.046154544, -0.02284951, -0.050920468, -0.021806449, -0.022667354, 0.019023167, 0.014244973, 0.062604055, -0.0008655744, -0.03995204, -0.0018925022, 0.011338477, -0.053145815, 0.024284622, 0.053984318, 0.003342816, 0.05320342, -0.009942571, -0.031938374, 0.013793716, 0.0021608688, 0.05371335, -0.029792508, 0.039872695, -0.027115108, -0.009425039, 0.021054354, -0.011348612, 0.008611205, -0.027522359, 0.009450243, -0.058733713, 0.019338941, -0.002702203, -0.011752396, 0.0059442064, -0.00656375, -0.009093398, -0.024797752, -0.053696282, -0.0033485168, 0.015853707, -0.0308113, 0.013811853, -0.011316874, -0.00055241876, 0.028654767, 0.01920559, -0.015387247, -0.025963765, 0.022417722, 0.016228152, -0.022479597, 0.030866442, 0.08622299, 0.021216506, 0.00063367886, 0.0026744662, -0.04943202, -0.015405409, 0.02744555, -0.021097027, -0.0010958697, 0.024799353, 0.020993546, 0.024919366, 0.01752378, -0.0124719525, -0.042705584, 0.029898388, -0.027999751, -0.036279716, 0.00081930193, 0.0157985, 0.04107391, 0.008538662, 0.011144186, 0.0026104583, -0.019808332, 0.03119748, -0.029607952, 0.015766678, 0.044625822, 0.046135876, 0.025716266, 0.0060796896, 0.010601852, -0.046766352, -0.02952794, -0.04215858, 0.034189854, -0.0030297101, 0.059139095, -0.037073415, 0.0057675177, 0.037182227, 0.029218037, 0.068618536, 0.014017744, 0.0012214853, 0.017510712, -0.040544778, 0.027566364, 0.06475899, -0.0471632, 0.020095302, 0.0101601975, -0.053425316, -0.021062221, 0.03130843, -0.025074054, 0.025766408, 0.020365201, -0.0011264068, 0.0717956, -0.006009548, -0.031735685, -0.031115338, -0.016583413, 0.0019663782, -0.040699467, 0.054829225, -0.05534982, 0.040095653, -0.017681133, 0.045139182, 0.02228544, -0.019817932, -0.025258077, 0.0077833687, -0.05641662, 0.009896165, -0.031428978, 0.009866028, 0.048586316, -0.019447954, -0.018349817, 0.024707075, -0.00733958, -0.010069519, 0.0041927886, 0.0034692318, -0.0018391622, 0.032177337, -0.0030398448, -0.0913351, 0.0055216537, -0.044092953, 0.05420621, 0.01653219, 0.024372099, -0.019356942, 0.010286613, -0.053009264, -0.022464663, -0.057544228, 0.024829756, 0.009430507, -0.02603764, 0.044971995, 0.024896964, 0.03870855, 0.055124726, 0.016363636, -0.053401846, -0.011826006, -0.008249635, -0.020300658, 0.018693527, 0.007409989, 0.017141866, -0.034588303, -0.011657984, -0.06639973, 0.012217521, 0.028353397, 0.01713173, 0.057075903, 0.04352328, -0.0067453724, 0.039324358, -0.01761179, -0.029849049, -0.030824102, 0.02246893, -0.009390769, -0.018850213, 0.033864215, 0.002856889, -0.014294579, -0.08092314, 0.027572766, -0.007774834, 0.014292979, -0.04268158, -0.04596252, -0.03279875, -0.0051921126, 0.031367105, 0.0071539567, 0.043725975, 0.071569435, -0.027406344, -0.019108512, -0.044694632, -0.008953648, 0.015410451, -0.058659032, 0.046167877, 0.061016656, 0.032695435, 0.03281155, -0.048344683, -0.030577673, 0.02698149, 0.028317124, 0.013881194, 0.010198602, 0.0068877907, 0.030148286, -0.028044024, 0.007896449, -0.009140337, 0.023066437, -0.0006070089, -0.060617678, -0.003953959, -0.020181712, 0.033021707, -0.055659194, -0.02287218, -0.060048006, 0.007482531, 0.0033945558, 0.05277457, -0.035505418, 0.021165302, 0.014084419, -0.021800047, -0.007156091, -0.01079736, 0.011353946, -0.017096527, 0.013343793, -0.029296445, -0.015228562, -0.05447398, 0.044112027, 0.013992141, -0.02051522, 0.06660776, -0.007723628, 0.044839714, -0.029006008, 0.049341604, 0.03174995, -0.011432889, 0.01122673, 0.017470675, 0.056331277, -0.06421279, -0.032779627, 0.035594296, -0.007180627, -0.0077465638, -0.034180786, 0.04334966, 0.030953184, 0.004376011, 0.03419199, 0.033646587, 0.02810803, -0.037099082, 0.041038707, 0.01711293, 0.01117259, 0.021045819, 0.0068701883, 0.014174564, -0.012874136, 0.04013086, 0.022226166, 0.0057788524, 0.028204177, -0.012031363, 0.0076617533, -0.008871238, -0.030078143, -0.020584429, -0.03889124, -0.03923155, -0.024021657, 0.0062322426, 0.02788747, 0.048782602, -0.016211085, -0.0041618515, 0.03056407, 0.04667701, -0.007637751, -0.024791252, 0.0011884146, 0.0036564548, 0.02372562, 0.0030982525, 0.045793433, -0.054320358, 0.010626789, 0.019122913, 0.005826859, -0.0134512745, -0.026070446, -0.04407535, 0.03319026, 8.4277155e-05, 0.037707094, 0.02321889, 0.09399783, 0.006010198, -0.030512597, 0.0070036715, 0.004303069, -0.0546676, -0.024046725, -0.030711021, -0.025722668, -0.007271305, 0.007399321, -0.03720543, 0.008554664, -0.02103395, 0.029261243, 0.029561011, -0.047162138, 0.013691837, -0.004963832, -0.0087709585, -0.012892804, -0.028723042, 0.052652955, 0.052608147, -0.04445193, -0.03358317, -0.04457408, -0.05170777, 0.007158224, 0.011578774, -0.013537684, -0.024502251, 0.0034478959, 0.059979733, -0.068701886, 0.017390432, -0.0010241275, -7.147556e-05, -0.008736021, -0.016452448, -0.03519371, -0.043715306, -0.0034777662, 0.059565812, 0.01630923, -0.00012908273, 0.010287147, 0.029123625, 0.008248493, 0.039662402, 0.008088007, 0.0066628293, 0.018591646, -0.004440019, 0.017635262, -0.010721334, -0.011422754, -0.00092864886, 0.025172733, -0.016281493, 0.04785022, -0.038155146, -0.02070511, 0.030779298, 0.021452269, -0.054741744, -0.00033124123, 0.0533037, 0.016431445, -0.056463562, 0.025406893, -0.0057100444, -0.062608324, 0.013452341, 0.05828085, -0.019038636, 0.013996676, -0.03150045, -0.016436713, 0.003245204, -0.030711288, 0.04584677, 0.053249292, -0.008478922, -0.060106747, -0.011064044, -0.016073467, -0.015801966, 4.747257e-05, -0.020134771, 0.03737185, 0.029347518, -0.023099408, 0.038163684, -0.043277387, 0.022045411, -0.006824316, -0.051675763, -0.05414327, -0.013811318, 0.0037153957, -0.010804278, 0.0091696745, 0.03407411, 0.028359795, -0.008361573, 0.008033, -0.050923448, 0.0049035437, 0.0075289365, -0.028536886, -0.014715431, -0.018144125, -0.006812648, 0.036842853, 0.013943068, -0.027726118, 0.014525541, 0.0045543, -0.084575854, -0.03141564, 0.058633428, -0.009251284, 0.00037124622, 0.026979357, 0.023917643, 0.01899863, -0.022227833, 0.012341003, 0.0077134934, 0.0052395854, -0.0051291715, 0.039489716, -0.013204844, -0.060751025, -0.08493431, 0.039280888, -0.027572498, -0.03036218, -0.066324525, 0.0035751115, -0.008925377, -0.019134749, 0.0021560017, -0.036480274, -0.015639013, -0.0033540174, 0.023764024, 0.010051917, 0.00039578258, -0.030148817, 0.027590634, 0.0273218, -0.007126753, 0.03457337, 0.033533774, -0.0039882963, 0.016448447, -0.027386874, 0.054001387, 0.024287289, -0.040915225, -0.030109612, -0.037617482, -0.0147549035, -0.0029746369, -0.019165585, -0.030839037, -0.052661154, -0.006458404, -0.0081503475, 0.011971624, 0.009032591, -0.009130737, 0.07130487, 0.016275626, 0.014807176, 0.011065378, 0.009388101, -0.014190299, -0.02131625, -0.047809683, 0.013098163, -0.030030405, -0.023006596, -0.03600875, -0.019144248, 0.0058108564, 0.005125038, -0.0016071333, 0.0022296107, -0.019944616, 0.018343616, -0.013144302, 0.07169746, 0.044963993, -0.006832217, 0.05899254, 0.0041726525, 0.049354408, 0.0023114877, -0.07667301, 0.084895894, -0.010413028, -0.024704942, -0.03940757, -0.025311949, 0.013185574, 0.039036326, 0.0044805575, -0.01457088, 0.019573636, 0.0060535534, 0.010829089, -0.020496067, -0.0104380995, -0.0019879807, 0.066532016, -0.0061741015, -0.0031171879, -0.048718594, 0.04197369, -0.005530821, -0.01317924, 0.0023869637, 0.004776061, -0.0190125, 0.038034067, -0.020639101, 0.05236278, 0.04331366, 0.0054828157, -0.005155842, 0.009247018, -0.01872313, -0.027295131, -0.018668989, 0.04112512, -0.0018528306, 0.02351226, -0.036542147, -0.014702629, -0.02900401, -0.06461604, -0.012078236, -0.0019458422, 0.006540014, -0.05940953, -0.056834806, 0.013085362, 0.006353724, 0.044060953, 0.02542343, 0.0068941917, 0.048107322, -0.06982843, -0.05665625, -0.011135919, 0.013994276, -0.01186441, -0.014853049, -0.009748413, -0.050732713, 0.048510835, 0.0385712, 0.044751603, 0.03570364, 0.047988903, 0.059927456, -0.003089451, 0.009947371, -0.0013801717, -0.022633217, 0.011963088, -0.012574898, -0.028719308, -0.10563234, -0.00471632, 0.010418096, -0.058272053, 0.03703221, 0.031610336, -0.025690664, 0.03246911, -0.004623509, -0.02529168, 0.014003342, 0.017840354, 0.01148783, -0.060052272, -0.008443184, 0.0412382, -0.028441407, -0.04665541, -0.021183435, -0.021859786, -0.0009889231, -0.017642729, -0.03977455, 0.017298153, 0.006009815, 0.020394005, 0.008458586, -0.009928469, -0.04267299, 0.033593513, 0.02047348, -0.014973597, -0.012482345, 0.016853297, 0.010407696, 0.0076990915, -0.043332323, -0.015615276, -0.036120627, 0.020152241, -0.001111605, 0.025936028, 0.046879433, 0.023103142, -0.015296537, -0.030664084, -0.04330512, 0.03861814, -0.039002188, 0.013392599, -0.0022914852, 0.020052295, -0.05178511, 0.0036601888, 0.0026584642, -0.029567413, 0.014983198, -0.03758868, -0.015967587, -0.025505042, -0.00093878346, 0.009563857, -0.00077449635, 0.0045829704, -0.019087175, -0.007804171, -0.0027683445, -0.040743202, -0.015771562, -0.016713947, -0.04305709, -0.024095798, -0.01186681, 0.02447558, -0.03470565, -0.04698185, 0.051357858, -0.034711387, -0.009293423, -0.010287147, -0.055952564, 0.0020986611, 0.013867326, -0.03206799, 0.023131413, -0.016818494, 0.040030584, 0.029266108, 0.03923475, -0.05172697, -0.019511761, 0.006057287, -0.016722081, 0.020534622, 0.01906584, 0.014618087, -0.019347474, -0.018539907, -0.017629927, -0.014934125, -0.07359209, -0.028528549, -0.0007379585, 0.004168252, -0.008258094, 0.0067261704, 0.019577902, 0.0018039579, 0.02778539, 0.023168217, -0.004941415, -0.0034052238, 0.028030576, -0.03706915, 0.022194896, -0.028927332, 0.0021281315, 0.047775548, -0.017791014, -0.01381932, 0.006470672, 0.060466193, 0.03655428, 0.011385949, 0.049981687, 0.021681631, -0.004816599, -0.028582755, -0.0022434792, 0.04238554, -0.0939893, -0.0070368755, 0.03315826, 0.011645182, -0.0022626815, 0.015201892, 0.0034465622, 0.031256422, -0.043405935, -0.027807994, -0.04625296, -0.056053907, -0.010705332, -0.010539979, 0.020555092, -0.0048175035, 0.0025074952, -0.025601052, 0.050952476, 0.04166225, 0.018866064, 0.043766513, -0.0034478959, 0.054394502, -0.033284143, 0.031619936, 0.024918301, 0.00083103677, -0.0012364206, 0.040636525, -0.04139395, 0.0020855928, 0.015172021, -0.023931913, 0.018739931, 0.016060665, -0.09672031, 0.018154792, -0.04570595, 0.027503157, 0.03754707, -0.009050326, -0.00417812, 0.0080069965, -0.01451114, -0.030517932, -0.0040058317, -0.03628825, -0.00012854933, 0.019935016, -0.024637735, 0.014130825, -0.041554105, 0.026659051, 0.018581511, -0.015311773, -0.04972352, 0.06487181, -0.0043536085, 0.03324187, 0.05295272, -0.05675373, 0.03821676, 0.029255908, -0.01868179, 7.894316e-05, -0.012213786, -0.009975108, -0.06719343, 0.01851537, -0.0101473965, -0.0020087834, 0.06388208, 0.017921098, 0.027487153, -0.06693953, -0.0018440961, -0.017718606, -0.027327934, -0.034143984, -0.03048486, 0.0013864392, 0.011928951, 0.004514695, 0.004377545, -0.027663976, 0.06661309, -0.020289991, -0.006177835, 0.009517984, 0.005548424, -0.045486726, 0.016772887, -0.019239727, 0.065824725, 0.020740181, 0.04481091, -0.0030609057, 0.019539498, -0.055121526, 0.023980584, 0.00334775, 0.040704265, -0.0034150248, 0.039252885, -0.0069021923, -0.0147373, 0.019936347, 0.038171414, -0.023755489, 0.018904053, -0.0013833721, -0.011173658, -0.017047454, 0.028274452, -0.03639733, 0.052432127, 0.028596627, 0.004084775, 0.037296373, -0.040339954, 0.10499013, 0.0061634337, -0.00032964104, 0.0027307398, -0.028282987, 0.009381434, 0.02871744, -0.022537205, 0.02341838, 0.012507689, -0.0020389871, -0.022642817, 0.0085050585, -0.021611223, -0.0050784987, -0.0091488715, 0.02840887, -0.015194424, -0.04404602, -0.068130076, 0.042021766, -0.014146561, -0.017418701, -0.011183525, 0.0035172377, -0.028891062, 0.014987466, 0.030310972, -0.0023941647, 0.010905357, -0.067182764, 0.0026632645, -0.012086838, 0.032302685, 0.01114592, 0.05013584, 0.019614708, -0.01262317, -0.02525541, 0.009914834, 0.019389879, 0.028718242, 0.013938868, 0.040043384, 0.014081752, 0.014172697, 0.021721104, -0.004132964, -0.043375064, 0.038080472, 0.0415305, 0.017101862, -0.0065618833, 0.01739663, 0.024682805, 0.003288676, 0.008314835, 0.030983455, -0.0032307354, 0.03714649, 0.026660385, -0.04909624, 0.016998915, 0.015694754], [-0.04772085, -0.08009926, -0.025633628, -0.017436722, -0.010431913, 0.053805113, 0.003946205, -0.03656205, -0.01415363, 0.04568374, 0.039935503, 0.021257268, -0.05496544, -0.023642408, -0.022243232, 0.08653509, 0.003238383, -0.054366805, 0.0684456, 0.033982076, -0.030371428, -0.02471308, -0.0016060728, -0.0031687298, 0.0076749814, 0.03746942, 0.021483172, 0.023820186, 0.009282878, 0.013886784, -0.031804956, -0.049998447, 0.017888995, 0.0153650725, 0.038329728, 0.014254814, 0.02320284, -0.008069367, -0.038687404, -0.046368033, -0.070733316, 0.004893577, -0.043952774, 0.025879296, -0.006522887, 0.020163063, 0.017888289, 0.017025629, -0.03291187, -0.022282295, 0.013941847, 0.0049938206, -0.049546648, 0.036699947, -0.021159379, 0.05431315, 0.046335086, 0.024466943, 0.005148657, 0.00915322, 0.031044483, 0.013667866, -0.058056522, -0.029563831, 0.0039935037, 0.034584478, 0.033199895, -0.019191219, -0.0035866466, -0.022972234, -0.012334187, 0.05394324, -0.005758589, -0.05796804, 0.051031, 0.010625341, -0.071998365, 0.011112321, -0.014365412, -0.03942164, 0.010094944, 0.004995233, 0.0066057174, -0.057497416, -0.05184048, 0.040615413, 0.014676261, 0.03407879, -0.0034899327, -0.008092898, -0.0379777, 0.011940037, 0.04218322, 0.0036390626, 0.0017893229, -0.004575433, 0.0056077535, 0.02567175, 0.055831395, 0.027177755, 0.012713923, -0.011381637, -0.04688243, 0.022004155, 0.028827772, -0.011459408, 0.025344193, -0.038207363, -0.01980821, 0.014458596, -0.01983786, -0.029884798, 0.018797304, -0.057927568, -0.0053915004, 0.012018749, 0.038833767, -0.058353953, -0.039813142, -0.024573306, -0.02885695, 0.0061139124, -0.012844817, 0.0065398295, 0.007315423, -0.014613903, 0.018120307, 0.018843425, -0.06110994, -0.0048902826, 0.03725858, 0.017988648, 0.055043332, -0.041462217, -0.048611037, 0.037906162, 0.01723694, 0.063205175, -0.023587814, 0.026908558, -0.0277083, -0.030800639, 0.03786663, 0.01660936, 0.02295388, -0.034637187, 0.015017229, -0.031188082, -0.012707275, -0.015870476, 0.019528305, 0.022348184, -0.0033287432, 0.042766795, -0.012587149, -0.06118901, -0.008315975, 0.033334494, -0.030314011, 0.007988889, -0.05004269, -0.011111028, 0.043604273, -0.002108408, -0.031609472, -0.025738578, -0.0034256924, 0.017272001, -0.008930143, 0.042731028, 0.052852325, 0.0048248656, -0.0051288907, 0.04359204, -0.021007838, -0.027125044, -8.518345e-05, 0.0021564118, 0.045844696, 0.0361319, -0.0009826687, 0.028431505, -0.00086077634, 0.0028567044, -0.012785252, 0.03800217, -0.01433188, -0.029861268, 0.020482853, -0.011438114, 0.04242677, -0.048771992, 0.010301079, -0.031529877, -0.013282029, 0.029934688, -0.014044445, 0.002099466, 0.008653533, 0.03735459, 0.009309939, 0.007648744, 0.043561216, -0.026758898, -0.007480259, -0.02984656, 0.04865528, 0.0027959936, 0.049400754, -0.019661846, -0.033079885, 0.045930587, 0.058241002, 0.052526653, 0.014713676, 0.042083446, 0.033847008, -0.045116313, 0.022516783, 0.08599292, -0.03554644, 0.008597175, 0.02050203, -0.028889425, -0.022419482, 0.014298582, -0.0036535934, 0.024561541, 0.035413723, 0.0018477984, 0.059801012, -0.012123345, -0.008347036, -0.054440223, -0.0046034358, -0.01645264, -0.065835975, 0.029476061, -0.06732975, 0.031991325, -0.0035880583, 0.011338105, 0.0324836, 0.00041056302, 0.0048885182, -0.01098984, -0.028265843, 0.005223604, -0.01665407, 0.01569705, 0.05186307, -0.028331993, -0.020215303, 0.019163921, 0.013766774, -0.020065174, 0.012386897, -0.003151317, 0.014160513, -0.0047092093, 0.005096888, -0.063903585, 0.034484234, -0.022543022, 0.055052035, -0.0038384318, 0.013380861, -0.02869882, 0.03145387, -0.017893229, -0.02263809, -0.066896774, 0.034280457, 0.025135236, -0.02604637, 0.0020547565, -0.04144904, 0.021759428, 0.045737393, -0.020419553, -0.028904485, -0.017697921, 0.01509959, 0.008762129, 0.007759694, -0.021188088, -0.0039664423, -0.018979907, -0.010945367, -0.043496266, -0.03687737, 0.020358844, -0.0051898663, 0.04997209, 0.06685018, -0.029531829, 0.063500725, -0.011314927, -0.046971373, -0.051463977, 0.030573798, -0.010419677, 0.0097697405, -0.020226598, -0.014948989, -0.03491674, -0.038480327, 0.02861411, 0.022387715, 0.023214135, -0.03834526, 0.0072278855, -0.030179061, 0.02739989, 0.012762457, -0.03474402, 0.015371141, 0.090134434, -0.018408095, 0.018252788, -0.027985351, -0.034805674, 0.0063233417, -0.04277527, 0.04175024, 0.06647132, 0.019740911, 0.01699598, -0.062363695, -0.026641238, 0.058801048, 0.022516197, -0.00071629393, 1.882507e-05, 0.006657074, 0.025882589, -0.013637822, -0.0008386569, 0.018004652, 0.033441797, 0.0021907676, -0.059571937, 0.013905609, -0.04322424, 0.0008904259, -0.037470363, -0.01762968, -0.071023226, 0.019389823, -0.0011523296, 0.029318167, -0.018565286, 0.014660965, 0.008995619, 0.014614843, 0.023342617, 0.002172413, -0.0064373505, 0.00738884, -0.01971879, -0.049660537, -0.008436455, -0.053947005, 0.0508564, -0.0019662785, -0.0104761515, 0.049269915, 0.010524627, 0.02681349, -0.05290786, 0.062207446, 0.013502282, -0.03134798, 0.022102986, 0.015282192, 0.036820307, -0.018713063, 0.02053621, 0.015169595, 0.02290352, 0.016643245, -0.030037282, 0.037645552, -0.006087087, 0.040117167, 0.022543022, 0.055199817, -0.009927754, 0.0030844877, 0.046849955, 0.01596755, 0.02095807, 0.03482862, 0.00022543022, 0.018730946, -0.02267762, 0.058553502, 0.049516525, 0.020417202, -0.0034351049, 0.01892296, 0.009397475, 0.0152459545, -0.025866942, -0.029843384, -0.012076283, -0.027633322, 0.0018577992, 0.008808251, 0.028503804, 0.06564679, -0.0032162631, 0.0017987356, 0.055450186, -0.007573194, -0.02263809, -0.017231293, 0.052184977, -0.015798941, 0.00028684703, 0.009742444, 0.02115091, -0.084637515, 0.03046273, 0.018673528, 0.0016377813, 0.0051223016, -0.023785478, -0.04532136, 0.027083158, 0.025348898, 0.023407094, -0.0032668558, 0.0726083, 0.019308874, 0.029584538, 0.00021319394, -0.022186406, -0.03251749, -0.023467332, -0.034308694, -0.05609495, 0.016438052, -0.0059859017, -0.025646571, 0.00870236, -0.007933356, 0.055775862, 0.019668903, -0.039706312, 0.02988127, -0.004533548, -0.018503867, -0.033152834, -0.03270291, 0.030753577, 0.034482587, -0.088903286, -0.006945392, -0.049710892, -0.015634222, -0.012642918, 0.04233288, -0.0039104377, 0.027585201, 0.03997692, 0.057571303, -0.01612732, 0.008735304, 0.016809847, 0.01784146, -0.03403855, -0.029572776, -0.047706023, -0.02093348, 0.009879397, 0.06981089, -0.0013566993, -0.0045259586, 0.046371795, 0.01870412, 0.010845124, 0.050272983, 0.020825235, 0.036087662, -0.0065718326, -0.0020228054, -0.007997831, -0.01792832, -0.009276054, 0.024885802, -0.00018625055, 0.022127988, 0.045500197, -0.037284933, -0.012234296, -0.009225696, 0.059688654, -0.030963477, -0.032770682, 0.04988738, 0.04120808, -0.038261253, 0.014155512, -0.0046839127, -0.06868327, 0.017460253, 0.02992151, -0.00066546624, -0.02657347, -0.03023118, -0.017669683, 0.0031164906, -0.011499824, 0.039375458, 0.0285934, -0.027427187, -0.035391133, 0.0005155716, -0.054080665, 0.00056663464, -0.035504084, 0.02932193, 0.036046248, -0.0050926525, -5.0592378e-05, 0.0075848564, -0.019882098, 0.02598707, -0.026987622, -0.00055628084, -0.04671253, -0.025521854, -0.033159424, -0.0029653017, -0.00830468, 0.024348818, 0.038636576, -0.0002602566, -0.00555069, -0.028615285, 0.018171841, 0.020674398, -0.011999806, -0.01714211, -0.00092195784, -0.002872706, -0.005051237, 0.0049547586, -0.037429888, 0.003315095, 0.005909896, -0.05460677, -0.06345178, 0.028678112, -0.026685009, -0.0062725134, 0.039073315, 0.035700336, 0.040876757, -0.040071987, -0.014151747, 0.0338936, 0.03625426, 0.019510303, 0.03734141, 0.011264098, -0.06421232, -0.077499054, 0.06552536, -0.016521588, -0.03267656, -0.03209298, -0.010607927, 0.02209875, -0.022626145, 2.8237606e-05, -0.040746868, -0.019676905, 0.010161303, 0.0020387552, -0.00741143, 0.016504174, -0.022928936, 0.025958832, 0.037066683, -0.005755766, -0.018913843, 0.06895247, -0.02877977, 0.0041038655, -0.055695858, 0.051616464, -0.020322606, -0.04257666, -0.01633169, -0.020044465, 0.024165744, 0.023094596, -0.030777108, -0.009175987, -0.030786464, 0.01328144, 0.008919318, -0.045834344, -0.01995834, -0.020691577, 0.023285672, -0.005511981, 0.016651247, -0.000948313, 0.0033838064, -0.031367626, -0.011353048, -0.0006544948, 0.026226148, -0.008025127, 0.017944762, -0.04977349, 0.0015036527, 0.0007153527, -0.0052121915, 0.038213715, 0.048797406, -0.037540957, 0.028459389, 0.041219845, 0.033649813, 0.023387326, -0.0020029875, 0.042919282, 0.034432936, 0.05776096, -0.012510672, -0.049652774, 0.08530675, -0.013906551, -0.0429254, -0.039551474, 0.006776084, 0.0026359805, -0.012983652, 0.02504958, -0.025962597, 0.0127135115, 0.014745678, 0.0035247593, 0.011387286, -0.014067034, -0.011019726, 0.051603284, -0.01487463, 0.015962247, -0.07213014, 0.027164105, -0.002130998, -0.004268585, -0.014928281, -0.009878986, -0.046121422, 0.048245832, -0.06285314, 0.017108224, 0.031208703, 0.018165136, -0.009870279, 0.030581329, -0.014634139, -0.012997535, -0.039453585, 0.039912917, -0.003458401, 0.0141190095, -0.04252866, -0.0038862005, -0.014280698, -0.021240328, -0.0138298385, 0.0001826032, 0.022197584, -0.037734855, -0.03095783, 0.008676005, -0.0058734217, 0.041595876, 0.045829635, 0.008901435, 0.017444722, -0.036675002, -0.07602882, -0.00047533304, 0.006406642, 0.01935335, -0.0026352745, -0.028587751, -0.005532571, 0.0652571, 0.05237576, 0.017429192, 0.026082842, 0.02117444, 0.050183874, -0.0014062327, -0.01882207, -0.015528565, -0.02322449, 0.058768105, 0.008570379, -0.039668187, -0.07135173, 0.0104427375, 0.008828017, 0.0039499705, 0.02417892, 0.014275052, 0.00073747215, 0.022207228, -0.032209698, 0.038374435, 0.011816497, -0.0004197991, 0.020680282, -0.04972619, -0.0329627, 0.018859897, -0.012980181, -0.031216731, -0.025986362, -0.026137786, -0.019669846, 0.009752394, -0.04980596, 0.031746365, -0.0019180394, 0.029023759, 0.004141986, -0.014011852, -0.038357966, 0.025492912, 0.004614025, 0.011867324, -0.016653128, -0.004574845, -0.046708766, -0.0012965767, -0.068483725, -0.05026059, -0.020639809, 0.04766508, -0.007852878, 0.053229768, 0.06360239, 0.014298582, -0.0070958748, 0.005676538, -0.029943157, 0.041515633, -0.056183424, 0.04108101, 0.016371222, 0.013012889, -0.06755659, 0.014031266, 0.034415055, -0.0049631563, -0.0029056496, -0.027850868, -0.008498578, 0.011782141, -0.010988665, -0.017335067, 0.015808353, -0.0042667026, -0.006583127, 0.007355249, 0.0067980858, -0.06177447, -0.015041232, -0.01283714, -0.018066892, -0.030976715, -0.057925213, -0.011355283, 0.004214463, -0.053583685, 0.07254806, -0.0067501995, -0.021337746, 0.021193264, -0.0429927, 0.029519593, 8.0006546e-05, -0.018265378, 0.037642613, -0.036676105, 0.0517953, 0.012496082, 0.0050812988, -0.01847563, 0.017812753, 0.0053419666, -0.01098584, 0.049107082, 0.06957746, 0.026459578, -0.0036238262, -0.0020628748, 0.021668596, -0.04180107, -0.055901986, -0.034001373, 0.019253813, 0.0060426127, -0.012313713, 0.03388701, 0.014249402, 0.0105008595, 0.009672321, -0.00873295, 0.024489535, 0.035040986, 0.038954716, -0.0090059135, 0.03512005, -0.031912025, 0.0075234394, -0.006789262, -0.026382394, -0.0066697225, 0.0032303822, 0.017646622, 0.02546185, 0.015867181, 0.036995027, -0.008056659, -0.02254114, -0.01694821, 0.005259725, 0.0194663, -0.06877928, -0.002460437, 0.07947945, 0.01202828, 0.010222955, 0.018541753, 0.0008645414, 0.009009679, -0.03223417, 0.023008473, -0.05444399, -0.017192937, -0.0035165232, -0.015996603, 0.015396672, 0.029956335, -0.008445397, -0.0056446977, 0.045733627, 0.04292681, 0.0082595, 0.021303626, -0.0020688751, 0.07312504, -0.020735344, 0.005806593, 0.01312131, 0.016958212, -0.010244603, 0.028210897, -0.016623478, 0.012272064, 0.042865627, -0.01660677, -0.0130453035, 0.035995416, -0.060883105, -0.012694687, -0.022620205, -0.0057263514, 0.033657346, -0.003177672, 0.03215981, 0.05479231, 0.031710126, 0.002468908, -0.012903645, -0.011069142, -0.024806738, 0.029252278, -0.0108046485, 0.028444681, -0.0093417065, 0.01865188, 0.031242087, 0.013088836, -0.04552655, 0.029431116, 0.010605103, 0.012118639, 0.054932967, -0.0403606, 0.0506545, 0.034749668, -0.019747028, 0.0033859245, -0.011321162, -0.034163974, -0.06815052, 0.04850797, -0.029264044, 0.040624503, 0.07700419, 0.074646115, -0.0074655525, -0.048037816, -0.010340611, -0.014921928, -0.04462483, -0.03416374, -0.035774224, 0.0109688975, -0.0049399342, 0.011340222, -0.00139357, -0.037519306, 0.055666678, 0.0016471937, 0.0073144813, -0.005984961, 0.0005336908, -0.03241489, -0.016545355, -0.01261468, 0.04224675, -0.00095113675, 0.035121467, -0.041264556, -0.004614025, -0.07156162, 0.002691985, 0.0032775626, 0.027888166, -0.027303882, 0.044620592, 0.0047349758, 0.007864644, 0.007802521, 0.04694502, -0.035987888, 0.05022623, -0.02588071, -0.037560254, 0.026719837, 0.035558674, -0.04253054, 0.018074421, 0.022206053, -0.0061016763, 0.020974424, -0.016622538, 0.08916307, 0.0014598842, -0.0046460275, 0.043718405, -0.046964787, 0.0008372451, 0.056034707, -0.044901557, -0.00158713, -0.010045058, -0.013720182, 0.036624175, 0.012337482, 0.00254237, -0.009571607, 0.0015211097, 0.061853535, -0.0131067205, -0.024244336, -0.020400964, 0.026337922, 0.007327071, -0.0464278, -0.041613877, -0.0069335094, -0.027319647, 0.0046408507, 0.026096607, -0.020193888, 0.010240838, -0.064076774, -0.007565443, -0.016361104, 0.014834744, -0.012535498, 0.024340818, -0.0013983499, -0.021874733, -0.038570218, 0.013158725, 0.013049539, 0.025334781, 0.01832644, 0.039980687, 0.028149128, 0.038095355, -0.003960795, 0.0015690697, -0.018064773, 0.04217192, 0.029641015, 0.0090105245, -0.004621055, 0.005045119, 0.0010549099, -0.010005054, 0.009364061, 0.01843645, 0.0053194943, 0.05652792, 0.0289379, -0.06578233, 0.047186684, -0.008881984], [-0.049032204, -0.052222688, -0.03915785, -0.07435498, 0.005829609, 0.034094647, -0.025023935, -0.039076626, 0.0006500358, 0.008922225, 0.03509402, 0.033906363, -0.050691158, -0.016779907, -0.018473772, 0.043488394, 0.006623651, -0.07020108, 0.052005656, 0.058746666, -0.023968704, 0.020522794, -0.024873588, 0.04246249, 0.0063820113, 0.04807984, -0.0018935521, 0.034143988, 0.0042753876, 0.0155617595, 0.009916014, -0.046945944, 0.017464621, 0.009691189, 0.016168972, -0.014980847, 0.025946505, -0.01377899, -0.037511174, -0.056085546, -0.05963107, 0.02187174, -0.023072664, 0.016124519, -0.01953133, 0.052107655, 0.0218089, 0.04373603, -0.04475821, -0.008215401, 0.049293797, -0.0040375297, -0.026440376, 0.029690787, -0.0035781062, 0.043868225, 0.045348436, 0.030993216, 0.025445655, -0.016312106, -0.010474351, 0.015245004, -0.07548887, -0.025343252, 0.028382804, 0.033188365, 0.0030134849, -0.037020154, 0.02399151, -0.05528912, -0.019748708, 0.013105856, 0.0031329957, -0.0035473849, 0.0248623, 0.026060548, -0.06858495, 0.024443489, -0.0008448371, -0.02945386, -0.031366616, 0.0024383324, -0.006814554, -0.036869574, -0.05181993, 0.01973009, -0.0095157055, 0.013512972, 0.064479455, -0.030877749, -0.02217104, 0.022352312, 0.033084102, 0.037236135, -0.022518285, -0.024027122, 0.021486325, 0.057838056, 0.045683578, 0.027267057, 0.01558643, -0.028614433, -0.05201217, -0.014690391, 0.04261982, -0.028427722, 0.015874559, -0.028192889, -0.020051265, -0.0044322526, -0.015000396, 0.011635944, 0.031126777, -0.07484326, -0.0017203955, 0.030697143, 0.05884907, -0.038291834, -0.033722237, -0.009526411, -0.0027630595, 0.019264134, -0.03444934, 0.041336507, -0.014581469, 0.0044238744, -0.0029995209, -0.030647224, -0.06394509, -0.015348049, 0.018163765, -0.0025947904, 0.046868674, -0.040722076, -0.00960368, 0.030481163, -0.017820595, 0.034792393, -0.03140094, 0.054177564, -0.036120858, -0.004693268, -0.00021086016, -0.00481627, 0.05055431, -0.018308062, -0.020580975, -0.012287608, 0.005002925, -0.017207215, 0.011271011, 0.02448864, -0.023850007, 0.00971167, 0.009513843, -0.058427352, 0.02586179, 0.004857697, -0.023659395, 0.042963345, -0.02451005, 0.0052115745, 0.028327877, 0.009864812, -0.0021430468, -0.030302422, -0.010050406, 0.026405698, -0.020033577, -0.0043196077, 0.06906904, 0.002391145, 0.020596337, 0.059020367, -0.026801119, -0.047269918, -0.0029278377, -0.032145936, 0.050896894, 0.05487275, -0.03573242, 0.012651611, -0.002346925, -0.00076710276, -0.00863363, 0.015662303, 0.006201989, -0.05496515, 0.018458877, -0.009453448, 0.018891767, -0.040314324, 0.00059068773, 0.013827517, -0.005783061, 0.06479225, -0.021482602, 0.017671874, 0.009954648, 0.053744208, 0.012062551, 0.012282721, 0.015936002, -0.021665532, -0.030324765, -0.022375848, 0.00515979, -0.0025549922, 0.014635931, -0.051990066, -0.023904935, 0.053596653, 0.037626203, 0.034108143, 0.022050481, 0.03089916, 0.011752313, -0.04471911, 0.040432554, 0.06280002, -0.04576178, -0.017105276, 0.03461883, -0.060022067, -0.055385936, 0.002952275, -0.032344926, 0.0006544578, -0.011366899, 0.008965397, 0.06361739, -0.0037942904, -0.0060420977, -0.045758054, -0.005269177, -0.030204963, -0.012028572, 0.048894245, -0.028744012, 0.012046493, -0.023625648, 0.035802476, 0.02511005, 0.005923053, 0.01794406, -0.0072846836, -0.045825083, 0.014781623, -0.04923841, 0.016198995, 0.056366228, -0.013969719, -0.030813048, -0.014651291, -0.010845369, -0.0057960944, 0.009119237, 0.018637618, 0.030671602, -0.015730146, 0.012676281, -0.044075362, -0.005091365, -0.027305935, 0.05017867, 0.0069299918, 0.03366062, -0.013617936, -0.013779689, -0.049128093, -0.031265024, -0.044848517, 0.02187174, 0.021537993, -0.022321388, 0.058862105, 0.04731274, 0.02072062, 0.026973344, -0.0003276944, -0.016252235, -0.00243938, 0.015942765, -0.007204389, 0.029500408, -0.016198296, -0.0006842482, -0.06787091, -0.009624161, -0.04303409, -0.016723586, 0.010340992, 0.0067442674, 0.019365156, 0.03166673, -0.031816147, 0.06735237, 0.034690455, -0.022089116, -0.046392728, 0.021072984, -0.01564601, 0.014376384, 0.013939114, -0.010866978, -0.014377592, -0.033414587, 0.036325667, 0.012945499, 0.025677694, -0.03163368, -0.014500012, -0.054008134, 0.007842323, 0.016026536, -0.03144842, 0.037080903, 0.055677325, -0.033725522, -0.009537582, -0.028704913, -0.012644861, 0.028813833, -0.024111489, 0.01756051, 0.044261087, 0.05578625, -0.00680763, -0.045259062, 0.014239811, 0.034993943, 0.019525047, -0.024350045, 0.021450948, 0.03596539, 0.008412064, -0.0064105215, -0.0041106096, 0.043504223, 0.05069581, 0.015630417, -0.040028058, -0.03365384, -0.03236756, 0.013201569, -0.03648579, 0.0035245768, -0.06681428, 0.011460342, -0.019302549, 0.027580325, -0.010065431, 0.016230183, -0.019869847, -0.026359385, -0.0012551532, -0.0069242893, -0.047070693, -0.03731992, -0.035466634, -0.023619596, -0.0043719155, -0.07454675, 0.029733611, 0.034396086, -0.027128581, 0.04668388, -0.008203532, -0.01095542, 0.005114174, 0.069862746, 0.016395425, 0.0067298375, 0.01722816, 0.030890781, 0.05152063, -0.0031996751, -0.03692427, -0.005126276, 0.014752648, 0.016520638, -0.02349904, 0.033186503, 0.010063046, 0.025731456, 0.031492177, 0.037441876, 0.03422261, -0.016992165, 0.029794123, 0.0004035668, 0.004098042, 0.025014278, 0.051153842, 0.042354498, -0.013542064, 0.056771193, 0.013354477, 0.024503535, 0.024104157, 0.008125913, 0.025444726, -0.037080668, -0.03369281, -0.032321304, -0.026245806, -0.03924885, -0.01721533, 0.022869717, 0.027079472, 0.030334074, 0.016649108, -0.029708475, 0.01599372, 0.01030003, -0.035968184, -0.041525953, 0.0037275238, -0.010208711, -0.015573862, -0.026897121, 0.032448728, -0.07909165, 0.021815883, 0.0030106923, -0.022512233, 0.000285918, -0.030566812, -0.065563545, 0.030480698, 0.026097322, 0.02279338, 0.027511433, 0.10475422, 0.056143265, 0.004224942, 0.03480077, -0.010937092, -0.03988376, -0.026871871, -0.026127577, -0.013350521, 0.007871182, 0.009380718, -0.03233748, 0.017856784, -0.002045297, 0.027479315, 0.023747602, -0.020244438, 0.010945179, -0.033912178, -0.022673754, -0.06511251, -0.023191826, 0.044838276, 0.04570499, -0.05512341, 0.011993429, -0.040525183, -0.03802372, -0.012246182, 0.023069872, -0.014434379, -0.021215187, -0.0029520423, 0.042308882, -0.015720021, -0.06547208, 0.021666931, 0.019331176, -0.034361828, -0.019194325, -0.037425585, -0.0030805133, 0.011654097, 0.057832472, 0.006549931, -0.025381304, 0.007811543, 0.0295167, 0.019985633, 0.021426221, 0.027599365, 0.033568192, 0.008435803, -0.023753189, -0.0029287688, -0.02232325, -0.0012158207, 0.022374917, 0.019186879, -0.006100515, 0.04433463, -0.03771092, -0.033050586, 0.017930098, 0.0516043, -0.038823873, 0.006009544, 0.035647936, 0.013661225, -0.024180261, 0.027906157, 0.016934505, -0.07175762, 0.051660273, 0.055510685, -0.033732507, -0.011042463, -0.025567612, -0.010976831, 0.0008948757, -0.021702422, 0.029207624, 0.048466187, -0.014526078, -0.026109423, 0.0070505496, -0.026787154, -0.026721524, 0.023152728, -0.015098612, 0.010111048, 0.0024809816, -0.046346415, 0.017427383, -0.0002532184, 0.0026405232, -0.01535695, -0.01353322, -0.0072060185, -0.022054438, 0.010253483, -0.005474684, 0.016019788, 0.027445337, 0.008568464, 0.024210285, 0.015548727, -0.020785088, 0.020925377, -0.023162967, -0.004258165, -0.017266445, 0.0064533455, 0.007509508, 0.00066376734, 0.0059618037, -0.010137114, -0.0085673, -0.012953703, -0.06633949, -0.04156878, 0.08789657, -0.004974066, -0.026106631, 0.07031279, 0.014507924, -0.009521291, 0.0028245023, 0.016844608, 0.005226121, 0.018394176, 0.012041023, 0.014582401, 0.018740954, -0.06788394, -0.03521411, 0.029653551, -0.025457291, -0.047619022, -0.045141764, -0.012186135, 0.009962794, -0.012905527, -0.00066440733, -0.017940337, 0.0034966483, -0.020493934, -0.012374653, -0.018396096, 0.025088869, -0.02975991, 0.0002122566, 0.010869539, 0.015815211, -0.01876609, 0.04961684, 0.003284857, 0.008814234, -0.018896421, 0.06493935, 0.008909657, -0.06740078, -0.023014879, -0.027462093, 0.042946585, 0.02393193, -0.03803303, -0.03057775, -0.060042784, -0.005592449, 0.0032341203, 0.017510705, -0.006917889, 0.015506369, 0.031608544, -0.011169072, 0.03617113, 0.022950476, 0.0047180546, -0.0061445315, -0.03769789, -0.004303782, 0.016198529, -0.02515194, 0.011351772, -0.044938818, -0.0070407744, 0.008837042, -0.0051651434, 0.041038137, 0.037170973, -0.044163335, 0.002622486, -0.017856551, 0.07619546, -0.0042730602, 0.01372453, 0.06717363, -0.010923302, 0.07172039, -0.016843794, -0.06473919, 0.073403545, -0.005276159, -0.03895746, 0.005729532, 0.028878532, -0.028573647, 0.041549228, 0.011528419, 0.02146724, 0.0029418892, 0.025732854, -0.019320935, 0.016617341, -0.026295148, -0.015150745, 0.046131827, -0.016446512, 0.03147728, -0.037197035, 0.002752819, 0.008968772, -0.009935563, 0.007180882, -0.02234978, -0.024422541, 0.008268931, -0.03904218, 0.037440013, 0.02791919, 0.016463384, 0.011136955, 0.04619653, -0.029546492, -0.011523299, -0.048971694, 0.062160693, 0.004190613, 0.031743184, -0.041859236, -0.022664124, -0.010879082, -0.053103715, -0.033560745, 0.026678698, 0.05411775, -0.016049577, -0.006563663, -0.007991275, -0.021362508, 0.025089568, 0.02313783, -0.0073628835, 0.021151183, -0.055179264, -0.044949986, -0.008803994, 0.02598328, 0.025824552, -0.005492139, -0.031121658, -0.028884584, 0.03407847, 0.05576018, 0.036026835, 0.020393157, 0.059017867, 0.039427128, 0.018974623, -0.0030255874, -0.012887141, -0.030094821, 0.043303605, -0.016150469, -0.029214142, -0.06818092, -0.011300318, 0.004875734, -0.009214543, 0.024984835, 0.036197197, 0.027639672, 0.028582957, -0.07110968, 0.021005955, 0.042631373, -0.027995527, 0.033179056, -0.058184374, -0.01403826, 0.042779945, -0.052495338, -0.049310558, -0.019800374, -0.024004545, -0.05236035, -0.014366419, -0.019960498, 0.018654376, 0.013053316, 0.018497627, 0.0047587836, -0.04894516, -0.031885967, -0.015221031, 0.030335238, -0.007869786, -0.039770182, 0.0038783376, -0.0035590217, 0.0041902056, -0.038104743, -0.028545253, -0.05351659, -0.011896145, -0.022939073, -0.0010538354, 0.07431773, 0.035219233, 0.022399588, -0.0003332801, -0.033832584, 0.028487999, -0.039628677, 0.042868387, -0.008648525, 0.009654358, -0.046320345, -0.0073684687, 0.011905454, -0.00083133834, -0.010864652, -0.043204457, -0.00043289174, 0.039909825, -0.008884987, 0.010853015, 0.024878241, -0.028323224, -0.032395195, 0.025875755, 0.007845115, -0.065757185, -0.021571508, 0.010066828, -0.014302184, -0.04924702, -0.039211612, 0.045772947, -0.04364014, -0.034383707, 0.040523324, -0.007606327, -0.0033493834, 0.023145279, -0.038624182, 0.028984196, 0.027936878, -0.047249436, 0.012431907, -0.03606407, 0.044858757, -0.013521584, 0.04120012, -0.006539458, 0.0074139694, -0.0016068197, 0.00058859313, 0.0075332476, 0.028049523, 0.008253803, 0.0019447545, 0.046008013, 0.032984488, -0.01600303, -0.052021485, -0.045417793, -0.02843866, -0.009180098, -0.030794429, 0.020380357, 0.025533399, -0.013375482, 0.018268963, 0.012776357, -0.007288873, 0.031101177, 0.011619186, -0.026250113, -0.00788468, -0.023152668, 0.02090547, 0.02008804, -0.012882486, -0.02394543, 0.0064831357, 0.025366524, 0.034072768, 0.0055289115, 0.026891422, 0.0051984247, -0.008948292, 0.005724411, -0.0053953207, 0.018883824, -0.063959986, 0.0023748532, 0.075213306, 0.0009155893, 0.0149329025, 0.010348905, 0.01020228, 0.013215708, -0.011188622, 0.0067873234, -0.0762839, -0.026131766, -0.018819153, -0.007391743, 0.046933845, 0.033624053, 0.0010449913, 0.0025272963, 0.07148206, 0.0379269, 0.00799593, 0.03079955, -0.03465182, 0.050010633, -0.035584632, -0.023653578, 0.033418313, -0.013776198, 0.017332427, 0.03175936, -0.021972282, 0.029328648, -0.008264043, -0.031197762, -0.0071773916, 0.02729266, -0.018010624, -0.010218921, 0.00739535, 0.042879555, 0.01928044, 0.017338945, 0.020789975, 0.022390278, -0.005332868, -0.01629209, -0.028010424, -0.013101259, -0.026602827, 0.002324582, -0.020866545, -0.018520318, -0.0032496555, -0.00034631338, 0.07284009, -0.008164199, -0.05044259, 0.045005847, 0.0050708847, 0.04800537, 0.052472066, -0.04069089, 0.042510897, 0.018024703, -0.041431926, -0.021612003, -0.0020532103, -0.034165863, -0.05658919, -0.018905733, -0.017217223, 0.048769444, 0.053801462, 0.061094522, 0.022856217, -0.06949728, -0.025941618, -0.0062527256, -0.066045314, -0.047639504, -0.048226003, 0.016422888, 0.01317015, 0.00786839, -0.003924885, -0.025793832, 0.02426428, 0.011329428, -0.011372951, 0.003610224, -0.017618228, -0.019676559, 0.021219144, -0.04169539, 0.04873197, 0.008943404, 0.044748902, 0.012062493, -0.011320236, -0.04613788, 0.029971935, 0.0295167, 0.010413607, 0.007786931, 0.03251174, -0.00081830507, 0.0064161075, 0.020865848, 0.02224598, -0.06592801, 0.029471083, -0.015216377, -0.027344376, -0.03409674, 0.031074993, -0.022584844, 0.060400035, 0.03679651, -0.02602843, 0.041502215, 0.021335047, 0.0708777, 0.03748121, 0.016896917, 0.026463067, 0.012733533, 0.005227284, 0.029631905, -0.02348135, -0.009434713, -0.0056666927, -0.021329926, 0.014659668, 0.0069351117, -0.008471179, -0.0067102876, -0.013711729, 0.07166453, -0.033665247, -0.08462265, -0.08158519, 0.056713473, -0.018429086, -0.014796519, -0.02808676, -0.006490583, -0.023761334, -0.026295613, 0.031915758, -0.01555245, -0.040487014, -0.06168102, 0.024788406, -0.016614897, 0.035871364, -0.02409764, 0.012209176, 0.005966924, -0.017066175, -0.052951213, 0.037499886, -0.010116749, 0.0409078, 0.019357244, 0.022451721, 0.025697943, 0.035490606, -0.014805363, 0.017042669, -0.022384692, 0.022029767, 0.030924063, 0.0063174265, -0.030591017, -0.019821787, 0.0016145001, -0.010250341, 0.03205447, 0.010996381, 0.009898354, 0.046957117, 0.036101542, -0.046915226, 0.03315299, 0.009866615], [-0.01741441, -0.09539766, -0.028508762, -0.0017792612, -0.011010347, 0.042617895, 0.025392383, -0.013860294, 0.0215941, -0.0011460134, -0.008913393, 0.030110203, -0.057295196, -0.019793212, -0.00698101, 0.04013697, 0.0025268497, -0.05048146, 0.039470546, 0.0520554, -0.010423522, -0.01848947, -0.026101526, 0.026514836, 0.00886213, 0.022326736, 0.021304674, 0.026548477, 0.02666542, 0.006526249, 0.0020686847, -0.07129646, 0.0018171746, 0.017556319, 0.04134379, -0.015750626, 0.017836398, -0.022111654, -0.035725128, -0.049291994, -0.07727077, 0.040437073, -0.0333494, 0.038650334, -0.0013424557, 0.038067218, 0.016881753, 0.022398826, -0.005929447, -0.012298367, 0.031098086, -0.0018225145, -0.032031506, 0.017768048, -0.0021039282, 0.016773352, 0.03278083, 0.0464338, -0.002243834, -0.014947235, 0.021255549, -0.015596302, -0.072272606, -0.03872296, 0.0038180423, -0.0031377366, 0.028877214, -0.0032707003, -0.03286934, -0.06346814, -0.015103428, 0.018258251, 0.009898934, -0.010395255, 0.03925695, 0.02358135, -0.04692721, 0.025812637, -0.032396223, -0.0126257045, 0.016635183, 0.021981245, -0.015453726, -0.08689117, -0.01815439, -0.0016126557, -0.0016123886, 0.008358042, 0.039982647, 0.009598104, -0.030986482, 0.010923339, 0.03428869, -0.006545423, 0.014840703, 0.005063401, -0.003093949, 0.045645628, 0.026227549, 0.01366165, 0.036897775, -0.014969929, -0.03881694, -0.023944197, 0.0024627708, -0.03948977, 0.010013684, -0.030239964, -0.025894603, -0.02484344, -0.01617782, 0.011308881, 0.014080834, -0.048220806, 0.005501986, 0.0109948935, 0.022416981, -0.015270033, -0.033639353, 0.0024029636, -0.014111271, 0.024978539, 0.01689764, 0.04238187, -0.0057767243, -0.031864367, 0.005936922, -0.003369489, -0.052279945, 0.009622468, 0.026777292, 0.00862397, 0.03989267, -0.0126257045, -0.02257718, 0.039208088, 0.025717052, 0.06434389, -0.028544005, 0.041185997, -0.031784266, -0.031909224, 0.033042353, 0.005682742, 0.04285552, -0.017974168, 0.043550245, -0.026831893, -0.0077714515, -0.01500624, -0.0071982113, 0.010731102, -0.027942728, 0.008360177, 0.0069408272, -0.09615993, 0.0012438006, 0.027139474, -0.034927346, 0.006814805, -0.020313052, -0.00032026166, 0.008211194, 0.025279712, -0.011162568, -0.038933784, 0.01236672, 0.00043934185, -0.0052291155, 0.025718119, 0.068128824, 0.023755964, -0.02047592, 0.011354404, -0.03566819, -0.006555168, 0.024327604, 0.004238294, -0.0093280375, 0.011376164, 0.01731749, -0.0024809265, -0.011223376, -0.0029275522, -0.011549178, 0.018890498, -0.035890665, -0.057690352, 0.011642091, 0.012516237, 0.047522075, -0.014398558, -0.008588726, -0.013458198, -0.020963455, 0.00087040686, -0.0022021825, 0.013052899, 0.04224944, 0.035092346, 0.015876649, -0.013119647, 0.036429998, -0.044743184, -0.02852051, -0.038990486, 0.038814805, 0.020644128, 0.057884723, -0.049451925, 0.0066914526, 0.03792731, 0.034901712, 0.07323165, 0.0144968135, 0.0100907115, 0.029152505, -0.03889577, 0.055600308, 0.065531485, -0.0052769086, 0.018764475, 0.02407663, -0.05088302, -0.030143846, 0.005365551, -0.0042751394, 0.016390348, 0.022457564, -0.016227346, 0.07268271, -0.013429897, -0.00676995, -0.041044753, -0.017891932, -0.025699964, -0.029938657, 0.025907686, -0.06641578, 0.022286152, 0.00410533, 0.0452163, 0.041120317, -0.024112672, -0.02567273, -0.020062344, -0.057884723, 0.008567634, -0.015797082, -0.011194473, 0.08093876, -0.029341253, -0.0004923406, 0.020125087, 0.009948803, 0.015112105, 0.031342655, 0.019110637, 0.0030966194, 0.03562794, -0.0064260587, -0.06518012, -0.0051284586, -0.05577973, 0.07257591, 0.011896807, 0.025343258, -0.043167908, 0.0031329973, -0.055605646, -0.03327604, -0.04806141, 0.026084436, 0.011503253, -0.01992938, 0.028997097, -0.0054120086, 0.05139138, 0.059909623, 0.01835437, -0.020690052, -0.0010869405, -0.0016964923, -0.0046784366, 0.026005408, -0.016878417, 0.012809399, -0.049738146, 0.0032520108, -0.06700531, 0.017956013, 0.022846844, 0.00536475, 0.04103621, 0.047458, -0.025879651, 0.028572839, -0.014018356, -0.03312512, -0.032083303, 0.049430564, -0.03192097, 0.012189968, 0.012929012, 0.0028963722, -0.0270798, -0.058389883, 0.030930948, 0.005339919, 0.017100157, -0.0372171, -0.02615706, -0.04466949, 0.0035964358, 0.016378067, -0.016977739, 0.025994977, 0.071222246, -0.020886427, -0.02561666, -0.03447879, -0.024631713, 0.0059908554, -0.062953375, 0.02536355, 0.053324435, 0.034486935, 0.01860628, -0.051421285, -0.040562026, 0.05376391, 0.007286587, 0.023123987, 0.0016201984, 0.013206154, 0.022041583, -0.01508634, -0.01411661, -0.0015280179, -0.0014973134, 0.017574742, -0.056562558, 0.0021286253, -0.01910623, 0.022697862, -0.052407037, -0.010139438, -0.044437736, 0.020884424, 0.02404886, 0.06087615, 0.002846177, -0.0005879251, -0.008863732, -0.013238728, 0.01261943, 0.009667924, 0.01629957, 0.0052373926, -0.01054614, -0.025847344, -0.02085452, -0.03611174, 0.03143998, 0.0061067315, -0.038730435, 0.04877696, 8.7841676e-05, 0.048996963, -0.034314588, 0.06439515, -0.0032124955, 0.01673851, 0.020177115, 0.016761472, 0.040955044, -0.05867076, 0.0029532423, 0.03038414, 0.01174889, 0.02066976, -0.008155659, 0.05112866, 0.02900217, 0.0039312486, 0.044710077, 0.011257485, 0.029844807, -0.024070753, 0.050039314, 0.020270335, 0.022108335, 0.024285419, 0.004038047, -0.011308414, 0.0017392117, 0.050569035, 0.012969295, 0.020887628, 0.013899542, 0.0014043987, 0.00635664, 0.0020032707, -0.042237695, -0.022211928, -0.02521144, -0.020152856, -0.01657511, 0.037214432, 0.026403766, 0.060263123, -0.035961155, 0.010971665, 0.023381371, 0.013450189, -0.007594433, -0.04281334, 0.021649102, 0.0091462135, 0.011687748, 0.0042807464, 0.039036945, -0.042651005, 0.011898408, 0.029253947, -0.009966426, -0.0034175483, -0.0131773185, -0.032396223, 0.016784433, 0.00540827, 0.030235423, 0.02529306, 0.07868905, 0.03730788, -0.019298468, 0.015050028, 0.007879585, -0.06087935, -0.002167473, -0.03383907, -0.022906119, -0.0006204986, 0.01574859, -0.017680474, 0.017036477, -0.045285184, 0.031899877, 0.01951648, -0.037108168, 0.02574642, -0.024114542, -0.009483964, -0.0028074626, -0.04552922, 0.075822316, 0.058410175, -0.03242966, -0.016439475, -0.052395288, -0.059713114, -0.0024189835, 0.0070151184, -0.013033675, -0.005977506, -0.006983947, 0.056573242, -0.06772727, 0.024096586, 0.024268866, 0.000328939, -0.039789874, -0.0027022662, -0.045840006, -0.03712632, -0.008522511, 0.046205256, 0.03477142, 0.0070257317, 0.026123952, 0.0341365, 0.01063011, 0.034888946, -0.018729232, 0.018268663, 0.01895885, 0.015736476, 0.022535795, -0.00790308, 0.0120423185, 0.018533258, -0.024291292, 0.00330274, 0.066824816, -0.03787498, -0.027327571, 0.017732803, 0.043898944, -0.051993724, -0.009218303, 0.08179902, 0.02925635, -0.041716516, 0.025003638, -0.026418984, -0.08571211, 0.02536248, 0.038400427, -0.035453327, -0.007657177, -0.03767206, -0.003554584, 0.00014631379, -0.03277322, 0.06264793, 0.035870373, -0.015940726, -0.073152624, 0.0057628406, -0.01151607, 0.02311117, -0.025540834, 0.0119793, 0.051628474, 0.009827588, -0.02378934, 0.024722226, -0.044150453, 0.05852338, -0.0078080297, -0.043883458, -0.041935455, -0.011854621, 0.023241464, 0.0017899409, 0.019042686, 0.026592799, 0.034779962, 0.02056937, 0.0024562294, -0.04604399, 0.0021554586, 0.008760671, -0.0055643963, -0.03648233, -0.017666055, -0.026161866, 0.009426026, 0.008280479, -0.009821179, 0.0032362582, -0.008706205, -0.076578714, -0.052352834, 0.040064346, -0.022708539, 0.010793446, 0.046549145, 0.05198945, 0.032859728, -0.020619564, 0.00532123, 0.029014986, 0.024982277, -0.023867836, 0.022319928, -0.020496747, -0.06537343, -0.0681363, 0.04860154, -0.01840233, -0.030183358, -0.047013585, -0.012884424, 0.025064077, -0.01562674, -0.006420051, -0.033886194, -0.023816308, 0.0075442377, 0.028414778, -0.01855143, -0.006344892, -0.032318793, 0.044132296, 0.038406804, -0.034899577, 0.007884391, 0.028792845, -0.0040700864, 0.025457531, -0.017410273, 0.062665015, 0.019510997, -0.053481426, -0.030393219, -0.035354536, 0.021325503, -0.00172159, -0.01571218, -0.010245703, -0.038643926, -0.005766045, 0.012617695, 0.0017796616, -0.019482963, 0.005668858, 0.075168975, 0.00082982343, 0.020614224, 0.029961219, 0.015768781, -0.039527684, -0.01812542, -0.027700296, 0.013958015, -0.03784721, 0.010788239, -0.048909385, -0.0034447818, 0.018779429, -0.012028703, -0.005215232, 0.020300237, -0.026773822, 0.039142575, 0.019289657, 0.059136935, 0.04603785, -0.00370537, 0.035081133, 0.019125221, 0.07200934, -0.0021605315, -0.069370896, 0.08989006, -0.009916765, -0.013746421, -0.05390328, -0.020776557, -0.0088527845, 0.027671462, 0.010443814, -0.019150019, 0.01773334, 0.015857425, -0.0028975736, -0.00821066, -0.015810166, 0.015219837, 0.061447516, -0.009805694, 0.0008156727, -0.05531302, 0.03431432, -0.0154515905, -0.018434469, -0.018982878, -0.0066407234, -0.018499617, 0.022671161, -0.028331477, 0.061020326, 0.025959484, 0.04465347, -0.009222041, 0.0022107265, -0.023998665, -0.019032873, -0.0012116276, 0.045347665, -0.006559557, 0.0062202048, -0.01816427, -0.03715142, -0.017694356, -0.03965958, -0.017129393, -0.009209759, 0.0051904013, -0.04727751, -0.06198151, 0.013924373, 0.0028850583, 0.03528218, 0.027282717, 0.011911607, 0.027637286, -0.042905185, -0.063458, -0.017673263, 0.025001502, -0.0057788603, -0.019828187, -4.2719355e-05, -0.015872909, 0.06947021, 0.042102057, 0.0365934, 0.032366853, 0.028446283, 0.047856625, -4.378734e-05, -0.0038655675, 0.0050686514, -0.021827454, 0.0057073054, -0.01465968, -0.029832527, -0.072909124, 0.0041162767, 0.016205586, -0.022893302, 0.031883053, 0.039338116, -0.014214865, 0.06976925, -0.021265695, 0.013076395, 0.025530152, 0.009049027, 0.019622868, -0.063412614, -0.038084306, -0.00304055, -0.012372592, -0.05532156, -0.034648065, -0.028597336, 0.0012046858, -0.026216868, -0.03999279, -0.00063117844, -0.0008618629, 0.016963856, -0.017200947, -0.02789467, -0.033045024, 0.02761486, 0.034938022, 0.040910255, -0.014350432, 0.034443546, 0.008879217, 0.011956613, -0.030982213, -0.03990842, -0.011304075, 0.03250409, 0.019132799, 0.0133626135, 0.08723933, 0.03350793, -0.033054102, -0.0113740275, -0.025170242, 0.032057673, -0.046443682, 0.013867771, 0.004955445, 0.023314355, -0.055225443, -0.0016003739, 0.011890932, -0.0065563526, 0.0091900015, -0.03245603, -0.017814506, -0.0005500117, -0.0061602225, -0.0012153656, 0.008342022, 0.017894069, -0.0049896203, -0.016408103, 0.00590525, -0.054381434, -0.024791643, -0.005576478, -0.043814037, -0.038026635, -0.009153105, 0.015778393, -0.0053997263, -0.035972368, 0.052049264, -0.039641425, -0.00079404603, -0.009322431, -0.048040047, -0.0022614556, 0.0012320529, -0.042189635, 0.031684943, -0.05245403, 0.04927891, 0.037853617, 0.013563929, -0.050842438, -0.014414578, -0.00370003, -0.010323932, 0.038962185, 0.038043723, 0.02150225, -0.027536895, -0.019434903, -0.028016835, -0.023269232, -0.07069626, -0.030031705, -0.005619731, 0.003900277, -0.010249441, -0.00410533, 0.028264726, 0.014962987, 0.009633748, 0.018892635, -0.018433401, -0.008941695, 0.022554751, -0.03784294, 0.014532057, -0.034776226, 0.02353142, 0.021779396, -0.01659006, -0.009891132, 0.016131362, 0.049964555, 0.026908655, 0.019196475, 0.019382838, -0.004293829, -0.01754911, -0.030022096, 0.005617061, 0.012397157, -0.08532337, -0.0076592467, 0.046925075, 0.0036055134, -0.0006044789, -0.0063902815, -0.031781062, 0.012248707, -0.03633655, -0.025204953, -0.05222227, -0.03145853, -0.0031959417, 0.0029177319, 0.01841204, 0.000661616, 0.015427027, -0.000858659, 0.05410406, 0.05677028, 0.01294228, 0.030003939, 0.019427694, 0.056248773, -0.045822915, -0.019162301, 0.039453458, 0.029843207, 0.0054648733, 0.026922803, -0.017219638, -0.0157571, 0.018099122, -0.029122317, 0.0074182157, 0.014552882, -0.068538934, 0.009334712, -0.038708273, 0.018085772, 0.02716684, -0.0075212764, 0.012343758, 0.012855543, -0.010720422, -0.0454598, -0.0068613957, -0.030518707, -0.0040092114, 0.039068453, -0.015277776, 0.035811637, -0.028051663, 0.02434576, 0.021621201, -0.008231753, -0.052703403, 0.030806528, -0.017209493, 0.036432132, 0.036753595, -0.037903115, 0.07117899, 0.022178821, -0.0024269933, 0.00609178, 0.00064185826, -0.015234122, -0.07148123, 0.024841838, -0.015073524, 0.018273737, 0.06352314, 0.024842372, 0.01233548, -0.096333206, -0.016644794, -0.014210593, -0.030851917, -0.015330908, -0.034619763, -0.012001469, 0.01321363, 0.02173, -0.0015325567, -0.028825952, 0.07940674, -0.008537463, -0.00145139, -0.003690952, -0.030113941, -0.032060273, -0.01028682, -0.015733538, 0.081070654, 0.004320529, 0.04953523, 0.0029006442, 0.015030804, -0.088954516, 0.021954544, 0.0025450054, 0.03140086, -0.022148918, 0.03602523, -0.002252912, 0.001074592, 0.012156325, 0.03244695, -0.038270134, 0.03130127, -0.0106611485, -0.019867703, 0.0004827287, 0.055214766, -0.068377934, 0.051557988, 0.018441144, -0.0007868037, 0.03903481, -0.05201722, 0.07994072, 0.01008337, 0.0024755865, 0.0253251, -0.027480826, 0.0074716154, 0.021785334, -0.033949636, 0.0072315857, 0.026509494, -0.028436806, -0.020303976, -0.0038906652, 0.013008043, -0.006770217, -0.011440244, 0.04427861, -0.025009379, -0.041604646, -0.041303206, 0.04548757, -0.010323132, -0.014818276, -0.043202084, 0.001687014, -0.044912994, 0.014691186, 0.027446117, 0.0009844141, 0.013129793, -0.040516105, 0.017177451, -0.014608951, 0.023862496, 0.016008545, 0.054132897, 0.020148583, -0.028512767, -0.036166206, 0.01231599, 0.0017675132, 0.016078496, 0.04190021, 0.013989921, 0.008378066, 0.0017942128, -0.009204953, 0.004620098, -0.036285687, 0.021979107, 0.04846511, 0.0073279715, 0.005964022, 0.0057243933, 0.014909054, 0.007951673, 0.02274325, 0.005706505, -0.014120882, 0.037394386, 0.03031005, -0.0412968, 0.008412509, 0.030388413], [-0.020643618, -0.06667794, -0.035270628, -0.018603075, 0.0011831159, 0.0066239983, 0.05131073, -0.0511009, 0.011390541, 0.014773781, -0.02280622, 0.035624474, -0.03878106, 0.0024643613, -0.01828234, 0.03868148, -0.014538426, -0.046885706, 0.015446489, 0.04679096, -0.007765542, -0.002597054, -0.036709946, 0.03857707, -0.0039938316, 0.019882146, 0.006309163, 0.031268094, 0.040760092, -0.016474435, 0.017618878, -0.054636505, -0.027201755, -0.0025146345, 0.013052221, 0.012218601, 0.042154696, -0.017786376, -0.034849346, -0.05316214, -0.09071634, 0.023933986, -0.013999197, 0.047413338, 0.0058829496, 0.041257024, 0.058585867, 0.0556178, -0.01773006, -0.015933422, 0.047454182, -0.014721634, -0.011964575, 0.01950345, -0.025780322, 0.022700535, 0.031683818, 0.04422702, -0.0026566025, -0.0041726884, 0.032440696, 0.00034055367, -0.045438413, -0.03601989, 0.012345493, -0.028461006, 0.02944375, -0.009776959, 0.01868912, -0.057087332, -0.010415769, 0.025302727, 0.03809947, -0.00021293668, 0.031053618, 0.008782852, -0.04022932, 0.0110236425, 0.0010808771, 0.007873581, 0.044146292, 0.012141016, -0.042724617, -0.07296985, -0.045233935, 0.021457057, -0.029688109, 0.0258057, 0.02665068, 0.021181038, -0.009409699, 0.012348394, 0.04637717, 0.029435052, 0.011732907, 0.02527055, -0.012077207, 0.048820503, 0.008084585, -0.009344319, 0.01849963, -0.013895267, -0.029767627, -0.00045150856, 0.0017537667, -0.027146162, 0.014546403, -0.061775323, 0.0031210573, -0.001209461, 0.007885183, -0.0046792896, 0.03308869, -0.078343295, 0.018069405, 0.005808929, 0.042463586, -0.029883161, -0.03135148, -0.0044714287, -0.052361637, -0.0048291427, 0.008448824, 0.026445236, -0.053394172, -0.025641346, -0.008393717, -0.01171756, -0.02382643, 0.03722452, 0.023342306, -0.0052613, 0.018797401, -0.0020728093, -0.058116, 0.055353865, 0.011737499, 0.02638771, -0.00846526, 0.04455307, -0.037774626, -0.038903844, 0.005065041, -0.012796745, 0.05935978, -0.028725425, 0.016296182, -0.03788291, -0.040392708, -0.018108077, -0.012090259, -0.026015496, 0.002705939, 0.017601477, -0.0015224611, -0.062898256, -0.0040644077, 0.027817601, -0.03814201, 0.01995659, -0.029924128, 0.0006568165, 0.030770678, 0.012863211, -0.016124332, -0.040832117, 0.010965634, 0.023086106, 0.005275319, 0.040442016, 0.05453499, 0.004900444, 0.006319941, 0.04090608, -0.037168447, -0.027764428, 0.041570265, -0.020012422, 0.0038292347, 0.032751158, -0.029632278, -0.010213226, -0.020389713, -0.01699457, 0.036798164, 0.048674278, -0.016904173, -0.0024169884, 0.03291358, 0.043891784, 0.030701796, -0.046868302, -0.0010808771, 0.014249596, -0.02867805, 0.019109737, -0.0370476, 0.011741004, 0.010480545, 0.013360145, 0.005004616, -0.026196288, 0.033033464, -0.04823342, -0.05118843, -0.03334477, 0.033130627, 0.0061236816, 0.045414247, -0.03325196, -0.030857207, 0.044665944, 0.026226258, 0.06554083, 0.030399913, 0.0041030794, 0.032893278, -0.051846337, 0.040224, 0.044484187, -0.03670153, -0.007952859, 0.037807498, -0.038962577, -0.037646044, 0.008948658, -0.0041422346, 0.008048571, 0.0017537667, -0.02011031, 0.04091865, -0.015175545, -0.0071968245, -0.020643497, 0.017033484, 0.0056190146, -0.04265211, 0.026594607, -0.06314986, 0.00530964, -0.03461804, 0.041232854, 0.046986252, -0.014851427, -0.019422436, 0.0035209022, -0.073460974, -0.0006617714, -0.031939052, 0.0016945505, 0.052147977, -0.011407158, -0.04634063, 0.021637121, -0.013628914, 0.022675421, 0.015652295, 0.009271567, 0.0005380216, 0.03315576, -0.042264428, -0.058711063, -0.00305888, -0.017393133, 0.054401577, 0.038831335, 0.06234718, -0.03784037, -0.00012290386, -0.03361354, -0.019292401, -0.053626202, 0.0468161, 0.023305086, -0.010418187, 0.034942884, 0.032319, 0.048915975, 0.035844903, 0.009116578, -0.04966283, 0.024027765, -0.0030896966, 0.002130817, 0.023902323, 0.015190772, 0.0060047656, -0.020398416, -0.024231758, -0.026778297, -0.018845258, 0.0010107845, 0.012416069, 0.024257863, 0.04824502, -0.008221144, 0.009659252, -0.0045432127, -0.017974658, -0.07106139, 0.039048865, -0.009651276, -0.0015855443, -0.019580506, 0.003140393, -0.031020597, -0.02695232, 0.004301273, 0.013107509, 0.032509945, -0.0050244355, -0.030360758, -0.06918581, 0.011975935, 0.014931671, -0.014463016, 0.056537706, 0.07874355, -0.0059941313, 0.022276415, -0.014498667, -0.038094636, -0.0035611906, -0.0323219, 0.031142412, 0.037136544, 0.026693221, 0.0061908737, -0.05150373, -0.027173717, 0.029385986, 0.011086726, 0.01781417, 0.012650517, -0.02758654, 0.019427752, -0.010433897, 0.006387617, 0.008603511, 0.024790566, 0.03399301, -0.08127389, -0.006084043, -0.022098042, 0.028170483, -0.037611965, 0.0029999658, -0.07057606, -0.011154885, -0.0076275324, 0.03050046, -0.0090115, 0.019463524, -0.0063426606, -0.017729577, 0.008656685, 0.03938815, 0.011544745, -0.002762376, -0.040469088, -0.0016706224, -0.011653992, -0.021256354, 0.030953402, 0.0094339885, -0.03161034, 0.05212187, -0.027243327, 0.024762528, -0.03041538, 0.068258174, 0.0095181, 0.03745027, 0.035500724, 0.026473757, 0.030526562, -0.040543046, -0.023269797, 0.044751022, 0.006792462, 0.033890527, -0.007569766, 0.061677676, -2.6586874e-06, 0.052023254, 0.03708047, 0.02856655, 0.0010819648, -0.026087523, 0.051688746, 0.04561147, 0.02852433, 0.018971425, 0.0040064, -0.0035114007, -0.014165002, 0.053158272, 0.0247896, 0.0068236417, 0.013051736, -0.0066995295, -0.0321793, -0.018231343, -0.033202652, -0.006812523, -0.005038212, -0.051093202, -0.0120317675, 0.023284784, 0.012774751, 0.035718255, 0.0014927321, -0.03463834, 0.049670074, 0.0019332885, -0.008557105, -0.017386848, 0.012052328, -7.927722e-05, 0.015275004, -0.0027553665, 0.020905014, -0.028809534, 0.024476357, 0.044062663, -0.011029685, -0.021275299, 0.008281086, -0.031882465, 0.011414711, 0.02230977, -0.0014115212, 0.005340577, 0.09981968, -0.009235554, 0.0033552633, -0.0029156131, 0.025934769, -0.028559376, 0.0047363304, -0.050538257, -0.027432756, -0.026608141, 0.00834151, -0.027449254, 0.012890766, -0.04189608, 0.032133374, 0.02414064, -0.013472051, 0.004445023, -0.018794501, -0.03310404, -0.016168686, -0.03736084, 0.022014897, 0.05875022, -0.017455611, -0.01865335, -0.048526358, -0.040835503, 0.003344145, 0.08554399, 0.015822452, -0.02506127, -0.021422409, 0.016596977, -0.05740444, 0.026347106, 0.0039793295, 0.007917329, -0.013559304, -0.031361632, -0.027540738, -0.019809637, 0.016355276, 0.0266734, 0.019390047, -0.020067288, 0.030796904, -0.0052434145, 0.007939807, 0.019575672, -0.00030212355, -0.005518226, 0.039435584, -0.018725859, 0.0012336309, -0.009319182, -0.002262301, 0.013922397, 0.00023783166, 0.014028201, 0.08604479, -0.04473749, -0.007935456, 0.026975524, 0.033594202, -0.025755307, -0.01307494, 0.028766995, 0.036705352, -0.049165413, -0.0100534335, 0.0018117746, -0.058216546, 0.02322339, 0.029776089, -0.02456627, -0.029360607, -0.032975696, -0.03152357, 0.0026893828, 0.0056494684, 0.085348696, 0.0334197, 0.015266182, -0.06157163, -0.010029535, -0.021735493, -0.02444252, -0.039423015, -0.0024464757, 0.047519926, 0.019517664, -0.0162789, 0.02947759, -0.059156276, 0.050165076, 0.019031366, -0.00086516095, -0.018702535, -0.008368097, 0.0037705016, 0.018469658, 0.018460957, 0.0060231346, 0.017685587, 0.014417759, -0.047566812, 0.00015347876, 0.025136678, -0.007924821, -0.010425921, -0.016787434, -0.0056905574, -0.014082462, 0.0007985729, 0.042378504, -0.003292905, -0.029849805, -0.012233647, -0.09142791, -0.05924135, 0.06825962, -0.02169682, 0.0024937277, 0.07725855, 0.03935389, 0.026371278, 0.0070363367, 0.011289994, 0.05296492, 0.020759877, 0.009042678, 0.04177523, 0.02891987, -0.07559953, -0.06821708, 0.04267048, -0.023223149, -0.00078600465, -0.038319115, 0.0017762448, -0.0033796746, -0.019430652, 0.025320914, -0.018261798, -0.023328051, 0.0073109665, 0.004679229, -0.024605183, -0.015241529, -0.047492854, 0.018200647, 0.050813437, -0.004542971, -0.008064523, 0.02470162, 0.0059712906, 0.03809609, 0.0042442316, 0.061484315, 0.0278031, -0.017063938, -0.05224949, -0.019601775, 0.012111045, -0.012078174, -0.023205988, -0.01564713, -0.05569128, -0.03245725, 0.0099115865, 0.002610831, -0.014665651, -0.012112918, 0.056194015, 0.0111535555, 0.009679072, 0.0024046616, 0.03478578, -0.028643247, -0.04262407, -0.01947845, -0.01262393, -0.041033454, 0.00046502857, -0.034617074, -0.003238281, -0.01519609, 0.016965324, -0.0130536705, 0.0119346045, -0.030506743, 0.0598601, -0.024245292, 0.01977169, 0.03855918, -0.021673618, 0.036070168, -0.0032077665, 0.10009812, 0.009911163, -0.036893394, 0.08877502, 0.016588274, -0.01799472, 0.010027843, -0.007580974, 0.004359522, 0.014733961, 0.026403181, -0.010430755, -0.0029545263, -0.008408582, 0.045141608, -0.02060821, -0.020318171, 0.012343106, 0.039292015, -0.025131846, 0.013871579, -0.02357724, 0.041558664, 0.0071643163, -0.03296603, -0.034385525, 0.019439355, -0.026263962, 0.038629275, -0.034294162, 0.0435696, 0.0025349373, 0.039927196, 0.021051235, 0.015500493, -0.018452255, 0.0081317155, -0.004913737, 0.064011335, -0.0032315135, 0.015477426, -0.0116090365, -0.027897144, -0.022401372, -0.01638138, -0.030434716, 0.022441255, -0.003472729, -0.022072904, -0.040090103, 0.015776439, -0.01498714, 0.02889461, 0.00483591, 0.0022406692, 0.022692863, -0.04827016, -0.032900047, -0.06218041, 0.029948419, 0.025149247, -0.015763598, -0.02577718, 0.001922956, 0.09395704, 0.042850304, 0.037997957, -0.017624678, 0.048525393, 0.037909012, -0.00061198144, 0.0025513729, 0.014959707, -0.022337321, 0.045902476, -0.012233586, -0.037676014, -0.0395748, -0.0052231727, 0.01254707, -0.015194156, 0.013759431, 0.022816129, 0.003784037, 0.028289156, -0.011898109, 0.016334973, 0.06285011, -0.011223285, 0.017992062, -0.0816826, -0.027174683, 0.014548336, -0.0048653977, -0.051174413, -0.059211377, -0.03665411, -0.01711693, 0.013040136, -0.017820455, -0.0028307769, 0.0034577434, 0.029767627, 0.033195883, -0.0377084, -0.024712255, 0.005168488, 0.022428926, 0.010580609, -0.020595642, 0.0022424818, -0.009751097, 0.0070856432, -0.049437683, -0.049339432, -0.025669867, 0.023895435, -0.0024273815, -0.011682936, 0.036822334, 0.021302367, 0.030834002, -0.031020112, -0.05352179, 0.014644593, -0.03844643, 0.020272974, -0.004249005, -0.0015413134, -0.046515424, -0.024976991, 0.025663583, 0.018897118, 0.0076328493, -0.044573978, -0.007270301, 0.009122681, -0.006465927, -0.033195883, 0.022889847, 0.007896785, -0.024374845, -0.027463755, -0.011615079, -0.0828969, -0.010456858, -0.0005791104, -0.025001328, -0.031400546, -0.04830605, 0.024408441, -0.0021999427, -0.041148745, 0.03284784, -0.039642476, -0.008015216, 0.011691456, -0.05682823, 0.030032529, -0.004729563, -0.05831323, 0.03118205, -0.060632568, 0.029101023, 0.027255002, 0.04071743, -0.0318095, -0.014490812, 0.03784182, 0.0015628246, 0.03571511, 0.050476383, 0.011788135, -0.00080866384, -0.013654594, -0.018674618, -0.03475436, -0.06765247, 0.004859234, 0.007702217, -0.011734599, -0.011592965, 0.013079653, 0.04235337, -0.014808405, 0.02520496, 0.0043065897, -0.023447204, 0.046448715, 0.012213767, 0.009646684, -0.0044183754, -0.026440086, 0.048091304, 0.03263321, -0.00091192976, -0.015292768, 0.00781373, 0.044791628, 0.038360506, 0.0006852162, 0.042062365, 0.010828108, -0.020579206, -0.023338683, -0.0013515798, 0.01644658, -0.061047327, -0.028093863, 0.037345372, 0.0014985328, 0.008490276, 0.019567937, -0.0046135476, 0.037730638, -0.047027823, 0.0023331188, -0.061898105, -0.037953, 0.01355447, -0.057738952, 0.0080195675, 0.004325926, 0.013545648, 0.00073718146, 0.05515229, 0.057075728, -0.006294079, 0.03139571, -0.022370677, 0.06667794, -0.027005976, -0.024107525, 0.05299392, -0.022546634, 0.014336351, 0.01806167, -0.0681204, 0.029013528, -0.0014540602, -0.031180117, 0.0126159545, 0.03790128, -0.058413774, -0.0042548664, -0.026699806, 0.017149499, 0.028543666, 5.655753e-05, 0.06375804, 0.0220352, -0.025924858, -0.035057932, 0.017904082, -0.024734976, 0.02039648, -0.0047319797, -0.014817105, 0.025810536, -0.01770299, 0.033075035, 0.022959456, -0.009069507, -0.06054459, 0.03290367, 0.004988664, 0.027719958, 0.021192154, -0.0190304, 0.03132586, 0.040153913, -0.016206391, -0.017274216, -0.02037274, -0.04655603, -0.064274006, 0.027312454, 0.019245753, 0.019533373, 0.020832023, 0.004751799, -0.0027974225, -0.062395036, -0.026321668, 0.006747733, -0.039365973, -0.054465383, -0.028686753, 0.007860046, 0.025533669, -0.0071069123, -0.027740743, -0.029599406, 0.062385373, 0.013117479, 0.011368547, 0.010673663, 0.017815137, -0.06576142, 0.009104855, -0.0014250564, 0.047133207, 0.039999224, 0.053351633, 0.0046130638, 0.0027877544, -0.037013758, 0.015737979, 0.020604342, 0.012068023, -0.0016046385, 0.024743676, -0.01866075, 0.023384, 0.046620805, 0.060476918, -0.04047386, 0.007976062, 0.020220526, -0.06199672, -0.030734425, 0.034561, -0.025567144, 0.038421415, 0.024272364, 0.028035132, 0.017475793, -0.045601804, 0.07026282, 0.011838408, 0.010964667, -0.009230962, 0.018627366, -0.017627096, 0.020229226, -0.023743527, -0.030863974, 0.008085793, -0.021665882, 0.015185213, 0.025469257, 0.035527796, -0.012533534, -0.052318174, 0.05427299, -0.027022414, -0.029938994, -0.059367035, 0.044598524, -0.00648913, -0.008431422, -0.02932967, 0.0318095, -0.029665148, 0.013303104, -0.007190661, -0.014290686, -0.007902344, -0.075058125, -0.0029815969, 0.00859747, 0.00283126, -0.02802933, 0.046798695, 0.031866785, -0.024012899, -0.027541582, 0.003698959, 0.01251367, 0.0131479325, 0.02372854, 0.010397975, 0.0436067, 0.037277695, -0.014028442, 0.0016396849, -0.011052223, 0.038301654, 0.06145773, 0.020842656, -0.019668002, 0.009086305, 0.005568741, 0.010092377, 0.010541573, 0.021053176, -0.020745493, 0.05578409, 0.066248685, -0.0628301, 0.021387808, 0.0001256834], [-0.04069654, -0.047850702, -0.012926069, -0.025447914, -0.031640526, 0.03012772, 0.039397124, -0.026957251, 0.043493148, 0.039408833, -0.016947927, 0.018221539, -0.041801646, -0.034712546, -0.04040508, 0.03802918, -0.021615915, -0.028250594, 0.040069602, 0.030082613, -0.009542764, 0.0007590049, -0.026024433, 0.03570478, 0.0030008883, 0.05823779, -0.009657578, 0.0071639214, 0.016700601, -0.0019721114, -0.0034116183, -0.056404036, 0.017603274, 0.02689306, 0.0041734423, 0.00042027183, 0.003982824, 0.021441886, -0.05292042, -0.045376346, -0.08940123, 0.018900298, -0.013505515, 0.0024452966, 0.04410382, 0.018273367, 0.022159742, 0.01816407, -0.047073048, -0.047901448, 0.018124167, -0.030498117, -0.0100897765, 0.0101680625, -0.00875935, 0.04082839, 0.042342063, 0.036721956, 0.055323213, 0.0075583872, 0.062344227, -0.022266926, -0.046459768, -0.008721182, -0.0071451087, 0.008094028, 0.0017000625, 0.029488856, 0.03055103, -0.025280502, -0.022396713, -0.00037973284, -0.013726521, -0.035802476, 0.061844584, 0.022746725, -0.08622989, 0.020041198, 0.018658508, -0.08943246, 0.015011814, 0.04560882, -0.0037884507, -0.0114752855, -0.04512479, -0.012698585, -0.028606242, 0.011441889, 0.033762757, -0.0048507457, -0.06698153, 0.00011883847, -0.0007119466, -0.022502977, 0.0037084976, 0.0038592145, -0.01811029, 0.028067024, 0.029655838, 0.06332616, 0.022597527, -0.0061629023, 0.009364818, -0.012060153, -0.003219048, 0.011708626, 0.015132388, -0.031166041, -0.00579099, -0.031053273, -0.027349979, 0.0074373805, 0.019620491, -0.039852526, 0.013386677, 0.009323616, 0.073396206, -0.036261782, -0.008405437, -0.023126662, -0.023147047, 0.00017326997, -0.009011122, 0.011184695, -0.04595406, 0.0011168214, -0.030436527, -0.02264003, -0.060696103, 0.047568027, 0.012381321, -0.013803045, -0.011812067, -0.031428874, -0.065819606, 0.028801413, 0.024101656, 0.077706486, -0.02383709, 0.020500937, -0.04147202, 0.030306412, 0.05538003, 0.03389125, 0.01861904, -0.011919412, 0.027130954, -0.06877191, -0.014249286, -0.00901958, 0.014303121, 0.00014052432, 0.0234256, 0.00556459, 0.046879392, -0.073074386, 0.03558562, -0.00058009656, -0.021746574, 0.022618128, -0.0039072484, 0.011032759, 0.030448673, 0.037861764, -0.017202953, -0.01655151, 0.0027783914, 0.016873762, 0.033696346, 0.016742345, 0.06669527, -0.055360947, 0.030747505, 0.028450537, -0.028745247, -0.024024455, 0.028830472, -0.01977663, 0.02032192, 0.051257547, 0.018221647, 0.005191593, 0.00060525216, 0.0055251215, -0.0010684078, 0.0116808675, -0.012599913, 0.006235116, 0.02717953, 0.00223039, 0.07114261, -0.026024759, 0.049669277, -0.014369479, -0.023133764, 0.048591923, -0.028073639, -0.035596028, 0.04657774, 0.053126004, 0.027046597, -0.04588336, 0.031187726, -0.03779237, -0.052459814, -0.065813966, 0.032962605, -0.026288025, 0.016261788, -0.0123474905, 0.024864104, 0.051823117, 0.025931075, 0.04332573, 0.023647988, 0.0070603713, 0.046693977, -0.063680075, 0.0020650353, 0.047797352, -0.033764005, -0.018044582, -0.002306941, -0.020632789, -0.028319446, 0.039325994, -0.014250424, 0.00033743188, 0.019016758, -0.032657485, 0.052236885, -0.0022789664, -0.016226223, -0.036831252, 0.042160552, -0.021352759, -0.005349466, 0.010597442, 0.0035803344, 0.033745788, -0.050028395, 0.012013962, 0.04860754, -0.035429504, 0.02263103, 0.0012200732, -0.056501187, 0.011082772, -0.0369065, -0.032618992, 0.017951116, -0.010247867, -0.02639732, -0.0049940348, 0.0011523862, 0.016745023, -0.00035586485, -0.007562074, 0.0512029, 0.027473373, -0.01583848, -0.053970233, -0.0058937813, -0.036650393, 0.005939321, 0.0037811454, 0.056090027, 0.026652781, 0.027067848, 0.00075293286, -0.0068180324, -0.019317323, 0.04343763, 0.052413836, -0.02756185, -0.011087326, 0.009405588, 0.016949663, 0.02819291, 0.009354843, -0.032375026, -0.031267095, 0.0031934585, -0.0050519365, -0.008640511, 0.0068804873, 0.0029649711, -0.043958094, 0.018912666, -0.0444213, 0.018115276, -0.0065725823, -0.00063582923, 0.033464253, 0.02811267, -0.0030393808, 0.049684346, 0.014392466, 0.013685509, -0.047125094, 0.028117768, 0.012098104, -0.026638035, 0.00378288, 0.0057502203, -0.0104510635, -0.07382558, 0.07803611, 0.038180545, -0.018156262, -0.025799876, -0.034011222, -0.031049587, 0.009843642, 0.03617287, -0.06087913, -0.0026977202, 0.038382225, -0.032874018, 0.0006180468, -0.015954282, -0.05788214, 0.02406262, -0.055630285, 0.031305697, 0.07392187, 0.033404455, 0.0034020224, -0.041266635, -0.035301965, 0.00033135983, 0.03818445, -0.023301393, 0.029056441, -0.0033760536, 0.020729072, -0.00986663, -0.028047614, 0.022070127, 0.029995222, -0.030563174, -0.04604015, -0.041657656, -0.017686006, 0.046865728, -0.09011513, -0.017455377, -0.050922286, 0.04226486, 0.0060865683, 0.02160952, -0.0153978225, 0.017003443, 0.015331898, 0.016749285, -0.033947032, 0.027799746, -0.026619818, -0.023981951, 0.0068989205, -0.03897208, -8.587598e-05, -0.068943664, -0.005702512, 0.035410393, -0.009699648, 0.036432557, -0.018372254, 0.042421, -0.0032294572, 0.07127532, -9.932121e-05, -0.04396503, 0.0292167, -0.037226804, 0.029366331, -0.030939639, -0.016976552, 0.039445184, 0.011600413, 0.02271463, -0.028084915, 0.028205922, 0.02799901, 0.020757426, 0.03509248, 0.016113456, 0.023628471, -0.009515318, 0.07116906, -0.0075176177, -0.025251009, 0.05260576, -0.051581103, 0.0024077801, 0.009806776, 0.055877067, 0.044170614, 0.010840758, -0.0040327013, -0.0023273258, 0.027881935, -0.04574674, 0.0049734334, 0.00012859711, -0.02225142, -0.07378741, 0.002253377, 0.045222808, 0.026342237, 0.0027462963, 0.0030290799, -0.00850259, -0.017624525, 0.015664125, -0.07732307, -0.025185354, 0.016789187, -0.009078782, 0.0029413064, -0.008547045, 0.038640287, -0.027550576, 0.02388122, 0.015697088, 0.019329902, -0.004399626, 0.0149372155, -0.029812843, 0.057063285, 0.037466213, 0.047923323, -0.0037145698, 0.09193414, 0.031931985, -0.014109683, 0.03151345, 0.040416356, -0.0591139, -0.012161209, -0.06287336, -0.017353019, -0.043642346, -0.0036610058, -0.017041177, -0.0040377975, 0.0032099402, 0.027511975, -0.0023459757, -0.04525729, -0.01664888, -0.038488053, -0.042676024, -0.020815816, -0.038798593, 0.037662253, 0.019381339, -0.026042106, -0.018317118, -0.05102495, -0.050567724, 0.033578373, 0.043212097, 0.014555111, 0.025318233, 0.010053562, 0.05939495, -0.059842546, 0.030206874, 0.004003642, 0.0111571, -0.038769316, 0.002309977, -0.0206857, -0.021003615, 0.0061095557, 0.0250914, 0.016005026, 0.0012200461, 0.040121105, 0.016295617, -0.04255957, -0.0016567992, 0.029690536, 0.012575191, -0.0035261197, -0.017134426, -0.052512724, -0.014959334, -0.01591297, -0.017398776, 0.031530797, 0.00030563498, 0.0541576, -0.012569987, -0.02891158, -0.008008802, 0.06598224, 0.0019326432, -0.0028026795, 0.07008868, 0.023978915, -0.03625663, 0.03243683, 0.028310446, -0.052150138, 0.0055292416, 0.042740215, -0.04134885, 0.020929286, -0.038098138, -0.020467976, -0.039670367, -0.007947432, 0.036421824, 0.018764876, -0.025603835, -0.053474925, 0.022660848, -0.010779929, -4.3371705e-07, -0.022975998, 0.010574888, 0.01467872, 0.019317107, -0.023751646, 0.04505279, -0.036116485, 0.002415804, -0.010177604, -0.02108212, -0.033173498, -0.06556501, -0.036829084, 0.007991021, -0.018295053, 0.044658978, 0.038289476, 0.017940272, -0.0038661538, 0.02602801, 0.0026461077, 0.014155657, -0.0056075277, -0.026018687, 0.008831346, 0.0022439435, 0.009938626, 0.016133407, -0.012570855, 0.0077769808, -0.023838446, -0.04262051, -0.04565132, 0.02544748, -0.0054565943, -0.029916935, 0.033187162, 0.06575107, 0.003124064, -0.025589306, -0.0075825667, -0.010143992, 0.02319687, 0.0174827, 0.025925871, -0.0027072618, -0.04612581, -0.04697676, 0.043826237, -0.058499753, 0.0016162466, -0.03401903, -0.013823755, -0.021869397, -0.03305401, -0.01470214, -0.069339216, -0.0045841723, 0.021998344, 0.021063035, -0.02586382, 0.03371196, -0.033263497, -0.011154336, 0.005020709, 0.015831757, 0.033395346, 0.04407292, -0.023109745, 0.019669719, -0.0063435454, 0.056942713, -0.0011267969, -0.040557314, -0.0004139016, -0.056413576, 0.014698671, -0.0025711423, 0.010394029, 0.011338014, -0.035988107, 0.03984385, -0.0075137145, 0.0071613193, 0.015756398, -0.03077049, -0.0010062236, -0.0015232143, 0.012977465, -0.010150497, 0.003284539, -0.015074271, -0.023888268, 0.0060313237, 0.009401685, -0.02942857, 0.022615742, 0.012172486, 0.004897316, -0.027965425, -0.042326447, -0.008040952, -0.03821828, -0.02183592, 0.007287856, 0.020207746, 0.07636369, 0.060208436, 0.04755794, 0.04236548, -0.011248018, 0.08147288, -0.034520842, -0.02534881, 0.06952658, 0.0053325514, -0.008004248, -0.0073328544, 0.016718926, 0.014226571, 0.0282931, 0.005395007, -0.044895355, -0.023669023, 0.015109835, 0.047684588, 0.009273305, -0.026530473, 0.017908176, 0.029465001, -0.006762516, 0.03232927, -0.020772228, 0.046171345, -0.018290281, 0.0058985515, 0.009802222, -0.022100486, 0.010635237, 0.023351327, -0.06213257, 0.040092804, 0.025877293, 0.015246022, -0.0045984853, 0.0024843311, -0.020579875, -0.040620204, -0.027303789, 0.041399594, 0.0012118055, 0.039406665, 0.011170166, 0.015153695, -0.0029180483, -0.026002204, -0.00053694175, 0.00702665, 0.011064122, -0.07579466, 0.020365618, 0.013512021, -0.013242791, 0.024288157, 0.006732156, 0.0027677652, 0.029762099, -0.02385704, -0.052766886, -0.014619734, 0.006166372, 0.01347136, -0.012471534, -0.04531476, -0.007798666, 0.045098547, 0.05345129, 0.037239812, -0.020904347, 0.049813274, 0.00602433, -0.013211672, 0.00047036613, 0.013945738, 0.00063257635, 0.02610413, 0.003416606, 0.0034871935, -0.064278714, -0.0021742235, 0.0251494, -0.012417644, 0.04177563, 0.0066853142, 0.054963008, 0.022018949, -0.026309278, 0.019152945, 0.024311576, -0.009843642, 0.03114869, -0.04582828, -0.031909216, -0.017740438, -9.438768e-05, -0.038881864, -0.014262351, -0.028973438, -0.019965297, -0.002993244, -0.048533805, 0.018102644, 0.00648754, 0.024248688, -0.013993447, -0.06315267, -0.043081116, -0.01919198, 0.047025338, 0.023581197, -0.021881893, 0.025382856, -0.00205712, -0.008708713, -0.0011155203, -0.020937094, -0.003898249, 0.033943564, -0.0015076004, 0.03805, 0.03454491, -0.01873213, 0.03774119, -0.026451645, -0.039852526, 0.06395592, -0.017930731, 0.006916215, 0.0036748846, -0.009323182, -0.043573815, -0.023707354, -0.0013448482, -0.021932313, 0.002118057, -0.007330035, 0.010738401, 0.022051042, 0.03435427, -0.0009298894, -0.0077060675, -0.03376227, -0.061428215, -0.015327561, 0.00010712811, -0.078972936, -0.031096213, -0.027461879, -0.03608526, -0.059115633, -0.03538784, -0.0121423425, -0.0030262608, -0.07213929, 0.014302904, -0.02113644, -0.03573308, 0.01221564, -0.046032995, 0.026913445, 0.02020601, -0.08140349, 0.017022744, -0.033182826, 0.050647743, 0.010901044, 0.04623424, -0.041489374, 0.010708475, -0.0009450694, 0.057049405, 0.0016624375, 0.039869007, -0.0012365273, -0.009363084, 0.012310624, 0.039042775, -0.069436364, -0.04288822, 0.012966838, -0.008933704, -0.020553852, -0.012683189, 0.00036085257, -0.005928912, 0.011877342, 0.032272886, -0.044024013, 0.01566586, -0.0035772983, 0.085372865, -0.03279248, -0.029684354, -0.009896989, -0.0051677385, 0.027459197, 0.014982864, -0.0062169004, 0.00918179, 0.05309304, 0.02831305, 0.023178706, 0.020303596, 0.026038202, 0.019160643, -0.044159338, -0.02287207, 0.017418077, -0.032767758, -0.024215074, 0.011625352, 0.0026448066, 0.028910657, -0.012465461, -0.0021633806, 0.055411693, -0.056865513, 0.023447828, -0.0518448, -0.022522928, -0.011198792, -0.004933098, -0.0031769776, -0.009749959, 0.02677292, -0.008968401, 0.03762734, -0.016806211, -0.0051284875, 0.0014017735, -0.018658074, 0.07096912, -0.03242729, 0.01067291, 0.008760435, -0.0066521354, -0.0031895554, 0.024138957, -0.034880824, -0.032605223, 0.024220062, -0.013826899, 0.0035673229, 0.058541395, -0.03148043, -0.022692945, -0.015545069, 0.01830763, -0.0023543246, -0.006656689, 0.0054582916, 0.0083212955, -0.031181222, -0.026363926, -0.043866143, -0.012974863, 0.029595984, 0.033535, -0.01722464, -0.024429547, 0.0035989843, 0.00017348681, 0.064707115, -0.011391145, -0.07583803, 0.054267544, 0.041581754, 0.0357115, 0.061624255, -0.04507101, 0.04084227, -0.015631163, -0.018157132, -0.027660739, -0.0027016234, -0.018478949, -0.07376334, 0.0138613265, 0.006029534, -0.028304227, 0.07901241, 0.0046248334, 0.023141298, -0.037955448, -0.00096473965, -0.023739938, -0.029268311, -0.025862547, -0.02770411, 0.017584842, -0.0053749606, -0.005588878, -0.016706781, -0.0060074693, 0.02729815, 0.0019213664, -0.02021295, 0.06397543, -0.015798144, 0.0009298894, 0.032141037, -0.05164009, 0.012604468, 0.0066238353, 0.033387564, 0.01344783, -0.0055663246, -0.032788143, -0.013242249, -0.010198098, 0.051365975, -0.003014767, 0.00068136945, -0.016376723, -0.012179643, 0.0036440906, 0.051572427, 0.03655107, 0.008140218, 0.008639671, 0.0005462666, 0.008322488, 0.013627335, -0.05648731, 0.037803862, -0.0025728096, 0.0073037683, 0.00521683, -0.041215047, 0.041673705, 0.029458063, -0.0047013843, 0.0014937216, 0.020552551, 0.00085008546, -0.0042469576, -0.011513398, 0.0035673229, -0.0147823775, -0.0051985327, -0.005479581, -0.0042252718, 0.017225994, 0.023099769, 0.05285406, 0.0703038, -0.007490727, 0.006882222, -0.050818626, 0.038018335, 0.0050901035, -0.0566261, 0.039156843, -0.017967163, -0.024334129, -0.01618567, 0.017510893, -0.007272567, -2.233643e-05, -0.07821827, -0.021276424, -0.012338382, 0.009480188, -0.00055237935, 0.018907461, -0.0015735255, -0.024734017, -0.009189597, -0.0115768835, -0.002022194, 0.03137249, 0.021204237, 0.008114846, 0.05785048, 0.053989775, -0.0071988357, -0.02956931, 0.017229095, 0.024914442, 0.025734166, -0.028556798, -0.01573352, 0.020026993, 0.032177467, 0.019970069, -0.002679504, 0.010187146, 0.025471335, 0.026377153, 0.008547695, -0.066823654, 0.009275039, -0.0011181226], [-0.016063781, -0.089416064, -0.038344495, -0.02807248, 0.0029731637, 0.033557862, 0.019148018, -0.04411564, 0.015500706, -0.01601868, 0.019732464, 0.043821923, -0.06123947, 0.0012971094, -0.000984014, 0.021572271, -0.0022504972, -0.04228428, 0.069589674, 0.046530448, 0.004498634, 0.0051556374, -0.008227948, 0.039664716, -0.011502031, 0.0066579985, 0.0067390054, -0.009832687, 0.0341761, -0.01179649, 0.014946577, -0.033418708, 0.016506588, 0.022069747, 0.030287754, 0.025806265, -0.01243964, -0.021322293, -0.039785974, -0.055589836, -0.07182706, 0.011108425, -0.00035981118, 0.015536488, 0.022352029, 0.048918422, 0.027640607, 0.015368014, 0.01766883, -0.016763523, 0.03625073, -0.022078132, -0.038067926, 0.0028501928, -0.0265321, 0.018545186, 0.028152244, 0.051443066, 0.015791189, -0.005654602, 0.029033942, 0.0031582876, -0.0666923, -0.030683348, 0.0079352595, -0.004452912, 0.018714655, -0.020603664, -0.001584362, -0.033458468, -0.013339354, 0.020469233, -0.019759798, -0.012126731, 0.03784379, 0.013126151, -0.058879826, -0.003984263, 0.009074796, -0.008367102, 0.0036987497, 0.023641739, -0.015084241, -0.054252718, -0.054924387, 0.014729399, -0.018084986, 0.022591572, 0.019994557, -0.0060755103, -0.052179582, 0.009588174, 0.052254125, 0.016342957, 0.03929683, -0.0074160118, -0.013167897, 0.020873522, 0.039197557, 0.03991196, 0.026526384, -0.022858944, -0.04262657, 0.019117208, 0.0059730397, -0.026061589, 0.034322213, -0.028909141, 0.013236481, -0.036584448, -0.0050950064, -0.010061296, 0.002804937, -0.0956899, 0.02695801, 0.019887025, 0.055251893, -0.026914276, -0.04100357, -0.036100395, -0.015601624, -0.03357973, 0.00041373319, 0.027159782, -0.028306307, -0.054508414, 0.009834177, -0.02271209, -0.06250378, -0.014166821, 0.018845858, -0.012452499, 0.010601757, -0.050709523, -0.05645756, 0.026987828, -0.016966539, 0.054981537, -0.021616006, 0.039702483, -0.011071649, -0.0025892493, 0.01572832, 0.01469461, 0.035847183, -0.01894822, 0.031065026, -0.01994666, -0.028377872, -0.022237513, 0.018167485, 0.013584363, -0.022655185, 0.020650877, 0.011393938, -0.043420367, 0.012653527, 0.016345443, -0.037316997, -0.012775534, -0.022737684, 0.01450874, 0.044932667, 0.012293219, -0.0430859, -0.038147196, 0.02364417, 0.026518185, -0.011515076, 0.022479255, 0.035549745, 0.016641766, -0.0098138, 0.04395462, -0.037360728, -0.024018887, 0.020191887, -0.033297945, -0.004142799, 0.05270389, 0.0039857537, 0.0031816456, -0.0045585195, -0.019410113, -0.027402058, 0.024815047, -0.03048406, -0.035151664, 0.033931587, 0.02263189, 0.035511974, -0.06771408, 0.003977802, 0.009234326, -0.009768576, 0.014586765, -0.015139358, 0.03023905, 0.01084801, 0.032872036, 0.0046646865, -0.007135593, 0.032959502, -0.039982777, -0.064626865, -0.020413322, 0.016896218, 0.012667443, 0.04503206, -0.037851743, -0.002039053, 0.059265476, 0.031902928, 0.043490443, 0.0208114, 0.02084917, 0.040218346, -0.061404467, 0.046522, 0.063004486, -0.029118864, -0.014909304, 0.032586023, -0.058297116, -0.041452836, 0.029860353, 0.019017315, 0.04355306, 0.00995693, -0.026395122, 0.037180945, -0.023415063, -0.008718215, -0.055055093, 0.0011063946, 0.0033347143, -0.042822506, 0.009964385, -0.04756043, 0.0037770236, -0.0034032972, -0.0039855675, 0.036715154, -0.0013064278, -0.035277154, 0.006632078, -0.05688595, -0.031130627, -0.012073182, -0.0020516445, 0.060851827, -0.026261125, -0.034021046, 0.003399073, 0.004759547, 0.010809369, -0.0010138327, 0.0007350287, -0.00089257036, -0.004793838, 0.0003888222, -0.068136014, 0.02023292, -0.051411256, 0.04598427, -0.0070630345, 0.01018057, -0.03293018, 0.009328193, -0.06263889, -0.008030276, -0.05499968, 0.051174697, 0.021137169, -0.035947327, 0.023453608, 0.023057237, 0.0012697757, 0.047987085, 0.024031004, -0.030456726, -0.034795333, -0.0017155639, 0.02892206, 0.030790694, -0.039021626, 0.0025696184, -0.023621306, -0.0019971014, -0.020653144, -0.0115291085, 0.009800383, 0.006098402, 0.022251764, 0.036424424, -0.025153983, 0.03867175, 0.0013557527, -0.010909636, -0.059459794, 0.04166405, -0.015194654, -0.0077148196, -0.0070689977, 0.005332561, -0.010923301, -0.030080017, 0.035354603, 0.015058149, 0.01470003, -0.0101711275, -0.008115134, -0.04335228, -0.020653114, 0.0635101, -0.04343229, 0.04097077, 0.067302585, 0.0009686078, 0.0009003977, -0.0014968942, -0.020943597, -0.022805272, -0.058737192, 0.026157876, 0.07411912, 0.011077614, -0.008162844, -0.03555919, -0.02731866, 0.05766621, 0.030347392, 0.01736238, -0.0022522989, 0.012082998, 0.018396093, 0.02181728, 0.0039330744, 0.021173697, 0.012819517, 0.0113062225, -0.09404193, -0.025365695, -0.020538064, 0.048982035, -0.05807994, -0.023618015, -0.033816043, 0.018383669, 0.0039189104, 0.027836166, -0.022845898, -0.00736619, -0.029081592, -0.015182642, 0.017989567, 0.011874764, -0.012620228, 0.0037129137, -0.005388409, 0.006414479, -0.016613439, -0.02120072, 0.034320224, -0.013625116, -0.043312028, 0.026832275, -0.0040732217, 0.0125978645, -0.04858843, 0.06449069, -0.016676988, -0.010982194, 0.012210223, 0.021221904, 0.04431443, -0.051914696, -0.024278404, 0.023084573, -5.3673495e-05, 0.026210556, -0.021364039, 0.04777985, -0.015910216, 0.05306992, 0.016519012, 0.041990563, 0.025085403, -0.0017453826, 0.057235822, 0.01171921, 0.03261013, 0.035285354, 0.001135095, 0.010190013, -0.010840057, 0.05501558, 0.048658997, 0.023126258, -0.008199496, -0.021111574, 0.01789514, -0.0132359825, -0.011706785, -0.032424755, -0.03744124, -0.015763607, -0.016171625, 0.004688479, 0.00271076, 0.027203517, -0.025842793, -0.009488654, 0.033892326, 0.02442964, -0.0076554306, -0.030880151, 0.020120913, 0.012458214, 0.0023466623, 0.03501649, 0.043069996, -0.027540468, 0.025119197, 0.054020885, 0.030931836, -0.0041589504, -0.03144571, -0.05585224, 0.022386817, 0.022693701, 0.0012476603, 0.0037582628, 0.059430473, 0.0147085255, 0.0066187372, 0.018427402, 0.009799389, -0.052076954, -0.018199539, -0.01602452, -0.019844284, -0.0045863506, 0.025293138, -0.026650382, 0.032203104, -0.05096398, 0.04539529, 0.03139216, -0.0046671093, 0.028977724, -0.037416887, -0.03829216, -0.048481084, -0.026834758, 0.053304367, 0.06512931, -0.053607892, -0.0073393537, -0.036085982, -0.053193413, 0.0002720948, 0.034806266, 0.013069868, -0.0144131975, 0.03358768, 0.06829654, -0.059120357, 0.009937548, 0.008456557, -0.0008237391, -0.010557527, -0.0011013006, -0.050876506, -0.004727616, -0.012420444, 0.0885215, -0.021890525, -0.016953867, 0.041435193, 0.022960328, -0.009061626, 0.03912301, -0.02250311, 0.010955356, 0.0058920328, 0.011616335, -0.0126868235, -0.008282615, -0.013057661, 0.02314421, 0.03431426, -0.018945688, 0.055512313, -0.014800963, -0.02257865, 0.025415393, 0.05904457, -0.0130854, -0.020021953, 0.049547594, 0.029965714, -0.07135792, 0.016725257, 0.002545515, -0.092597716, 0.014253294, 0.058820188, -0.02467291, -0.004740165, -0.047709774, -0.033242032, 0.0014859607, -0.013754547, 0.049718555, 0.042016406, -0.024947241, -0.053600438, -0.008983352, -0.027844366, -0.0024150587, 0.012493003, 0.010577157, 0.04237423, -0.010930508, -0.004646733, 0.029339522, -0.037060056, 0.036025353, 0.00035248083, 0.007393027, -0.021585442, -0.036072563, 0.0078411065, -0.018404294, 0.018268866, 0.030021375, 0.048544694, 0.0051044486, -0.017353436, -0.042982157, 0.0014570118, 0.01428535, -0.0034721906, -0.008837242, 0.0022418625, 0.023382757, 0.0015510647, 0.033624955, -0.035841968, 0.018697882, 0.0052581388, -0.061452176, -0.074272186, 0.07168294, -0.029421026, -0.02013601, 0.053808674, 0.0068962984, 0.048067596, -0.019590825, 0.0019479005, 0.0088551715, 0.029411584, -0.008712997, 0.052820686, 0.0039156806, -0.049329914, -0.034076706, 0.04528751, -0.02718662, -0.019844284, -0.037361722, -0.025619155, -0.0053648646, -0.041012514, -0.0011724925, -0.024482071, -0.00077826565, -0.008370084, 0.051715408, -0.0076161693, -0.024719628, -0.030214699, 0.02203471, 0.037861682, 0.0034529949, -0.026807923, 0.044691134, -0.007650585, 0.023738595, 0.0114316465, 0.055055093, 0.021596624, -0.036810078, -0.034759056, -0.04993135, 0.02049023, -0.029790776, -0.027095672, -0.019327926, -0.057826232, -0.0075597623, 0.012482069, 0.005184462, 0.021625448, -0.008535452, 0.050504774, 0.021223892, 0.00900522, -0.007840803, -0.0051623466, -0.019796574, -0.013800052, -0.042197306, 0.021703972, -0.07378714, -0.006021868, -0.056854147, -0.013994277, 0.0048201783, -0.0025498637, -0.006541209, 0.046837576, -0.03870999, 0.036197554, 0.004330656, 0.0424617, 0.021588549, -0.009561337, 0.053211305, -0.00046367935, 0.07127443, -0.014276653, -0.056466505, 0.102782756, 0.0033526055, -0.040054344, -0.00824236, 0.025908394, -0.0028180447, 0.007996606, 0.006386649, 0.009434608, -0.0012496482, 0.02409034, 0.00697656, -0.030488532, -0.028679287, -0.037827637, 0.04737382, 0.0016499631, -0.017217264, -0.036219668, -0.0020567384, 0.023587512, 0.015589167, -0.0057957433, 0.014120416, -0.045968365, 0.05944737, -0.04198162, 0.035788044, 0.0057149846, 0.024845112, 0.018158538, 0.036102723, -0.02486746, -0.052659664, -0.030844368, 0.06718133, 0.012974076, 0.024004476, -0.022192001, -0.028667858, -0.013352276, -0.0471052, -0.03314388, -0.00244115, 0.018411003, -0.015220163, -0.060135946, 0.0083541805, -0.03583402, 0.041765932, 0.010203928, 0.00034151622, 0.0129452525, -0.062175523, -0.049030736, -0.011113396, 0.03587775, 0.004254494, 0.01028742, -0.020127064, 0.007891992, 0.039458964, 0.012142634, 0.028277481, 0.03390028, -0.0020067925, 0.056967955, -0.008971751, 0.0015190096, -0.0044896887, -0.03608449, 0.030039266, 0.023674482, -0.033427402, -0.06673206, -0.003490268, 0.039582215, 0.008235651, 0.027894314, 0.019367186, -0.0070528463, 0.021963766, -0.035665043, -0.008940116, 0.010531933, -0.006456723, 0.019462606, -0.06395197, -0.027711427, 0.0035861847, -0.011989069, -0.030003484, -0.012948234, -0.02651371, -0.009959167, -0.023607362, -0.027410258, 0.04449235, 0.0010670092, 0.024239173, -0.013256235, -0.022689972, -0.031608224, 0.017758891, 0.014754247, 0.03661899, 0.013891496, 0.031486463, -0.011642675, -0.022076206, -0.02304382, -0.058544863, -0.027037527, 0.038643427, -0.038104206, 0.011641185, 0.06130159, 0.009735775, -0.022686742, -0.01648969, -0.04898601, 0.043177348, -0.034049373, 0.035540797, -0.027491266, -0.03935162, -0.05658901, -0.0070391796, 0.022224804, 0.0047414694, 0.0081862025, -0.059375808, -0.0016986667, -0.0021456974, -0.0033784483, -0.006608301, -0.0031607726, -0.016962813, -0.0057788463, -0.013969739, -0.0081056915, -0.08285995, -0.027360562, -0.021228364, -0.013591384, -0.044660326, -0.06661713, 0.009285763, 0.018154066, -0.029424008, 0.028346563, -0.0400941, -0.037324946, 0.015889654, -0.03771855, 0.021096665, 0.010476643, -0.018449767, 0.039155807, -0.033192087, 0.028564239, 0.03480527, 0.030531768, -0.028183553, -0.0059693125, 0.0033458965, 0.0053078053, 0.016363459, 0.027882388, 0.016092109, -0.0035613046, -0.03280668, 0.008571856, 0.012466166, -0.06323533, -0.06385357, 0.017400151, -0.024003979, -0.021018889, 0.029450845, 0.0091923, 0.018393112, 0.03457865, -0.010175227, -0.012426408, 0.018969977, 0.01894078, -0.044275664, 0.0074998764, 0.00997681, 0.017315665, 0.039780013, -0.011283486, -0.02027715, 0.0124828145, 0.043890506, 0.0073547596, 0.03137837, 0.038913783, -0.0019595795, -0.014136754, 0.0058086645, -0.012645699, -0.008985341, -0.069946505, -0.003777272, 0.061831865, 0.009591466, 0.016028, 0.005389465, -0.033727452, -0.0019739917, -0.046392787, -0.0004890252, -0.039674655, -0.030613273, -0.007072974, -0.031039182, 0.0041641686, 0.014165827, -0.0018900029, 0.013769985, 0.03138309, 0.050472964, -0.000942268, -0.004817693, -0.004824651, 0.04839759, -0.013367185, 0.019085772, 0.0060923146, 0.0051049455, 0.024058895, 0.06415474, -0.03634491, -0.0010943429, 0.05394783, -0.024689808, -0.0032512222, 0.027866483, -0.07751981, -0.025887521, -0.008267706, -0.0036443311, 0.042554136, -0.015261164, 0.050389472, 0.031582877, 0.0049578403, 0.0043845777, 0.0028106521, -0.035878494, 0.025161935, 0.032402888, -0.008524146, -0.005595213, 0.018472876, 0.025842793, 0.035647154, -0.018372394, -0.049141064, 0.068719715, 0.0243541, 0.04554444, 0.04051355, -0.037459128, 0.051013675, 0.010429058, -0.0077227713, -0.04850742, 0.004384454, -0.03324725, -0.06751976, 0.030436845, -0.02593896, 0.027136162, 0.020435685, 0.014269696, 0.008882342, -0.04273603, -0.009720867, 0.011639196, -0.034385327, -0.04065469, -0.040382348, -0.005180486, 0.02139485, 0.00066247006, -0.029504769, -0.047664054, 0.07749657, -0.018252965, 0.01660996, 0.016128201, 0.03468799, -0.06827269, 0.03589564, -0.00046616426, 0.050765187, 0.013135967, 0.032419536, 0.0049995864, 0.016447293, -0.027818775, 0.051526558, -0.0028337617, 0.032140486, -0.009744224, 0.028088383, 0.0039579235, -0.01859538, 0.010886028, 0.06394401, -0.009551894, 0.009985755, -0.0055015334, -0.052608006, -0.025607228, 0.048764605, -0.03518049, 0.063724354, -0.021986006, 0.0135826245, 0.012810074, -0.018492507, 0.07473736, 0.012960161, 0.0029703062, -0.004926531, -0.015626939, -0.020368345, 0.03458909, -0.034280468, -0.001756316, 0.0023392697, -0.025422351, 0.0071287593, -0.0046124416, 0.03146857, -0.021997685, -0.01837025, 0.053931925, -0.009939536, -0.012537731, -0.05970878, 0.036024854, -0.026557447, -0.06432868, -0.05431062, 0.0065101474, -0.035786554, -0.00031992883, 0.017335048, 0.012183387, -0.023159118, -0.0656725, -0.0068165343, -0.01177686, 0.02990359, -0.012949477, 0.027033549, 0.059682935, 0.015443057, -0.036706705, 0.0032253794, 0.025097234, 0.053736113, -0.0060057165, 0.022892741, 0.02277744, -0.0181832, -0.013801543, 0.011357908, -0.033999924, 0.02563804, 0.04232118, -0.015021621, 0.010279966, -0.0060690804, 0.019658973, -0.008473951, 0.0021784978, 0.016288415, -0.006624701, 0.049151257, 0.05936686, -0.020123584, 0.0026667775, -0.019087264], [-0.018850485, -0.079456784, -0.0383701, -0.0374874, -0.024204776, 0.066711396, 0.024032801, -0.015101035, 0.018997349, 0.015673524, -0.00018846174, 0.012416661, -0.07432545, -0.016718559, -0.015947971, 0.06288889, -0.04269939, -0.046174392, 0.03188643, 0.04815286, -0.01861941, 0.000927486, -0.0060145417, 0.04149145, -0.0117157, 0.033755194, 0.0013371501, 0.017412545, 0.021071188, -0.004351107, -0.008553068, -0.029560719, 0.021419702, -0.00015688234, 0.03509751, 0.014918915, 0.00072036515, 0.0057644434, -0.011818554, -0.04992942, -0.05185006, 0.012380896, -0.029258557, 0.02300032, -0.0024502561, 0.030908737, 0.007925539, -0.0011754127, -0.0140752755, -0.019654302, 0.04192322, -0.02298561, -0.02590981, 0.026469868, -0.020320386, 0.029202182, 0.019431597, 0.03947398, 0.0179759, 0.01580745, 0.033155568, 0.003365361, -0.06996267, -0.052635357, 0.022002336, -0.019660896, -0.00961586, 0.0023637617, 0.016160022, -0.022928918, -0.0021314183, 0.038947403, -0.03762538, -0.01647404, 0.026777292, 0.009713769, -0.046955634, 0.032932863, 0.0037874973, -0.022044187, -0.0006754691, 0.032860827, -0.0036446927, -0.056758687, -0.0695543, 0.069755696, 0.01016628, 0.035760928, 0.022861447, -0.020004844, -0.015190067, 0.012186346, 0.005088213, 0.039518625, -0.0030902775, 0.017258834, 0.008404937, 0.035949774, 0.044995427, 0.047193047, 0.0066134087, -0.010664448, -0.06197575, -0.037875734, -0.012000675, -0.025194898, 0.048020963, -0.007189764, 0.008550531, -0.04692678, -0.006527612, 0.0044132513, -0.0070971185, -0.11254741, 0.007439546, 0.017283691, 0.04316814, -0.06276613, -0.044314634, -0.022857895, 0.0021296428, 0.0034770302, -0.012003211, 0.0130388625, -0.006094695, -0.039153367, -0.023701536, -0.00980077, -0.047530912, 0.028039454, 0.020171747, 0.009777308, 0.006533002, -0.069462985, -0.041659933, 0.026171576, 0.0037749894, 0.064763874, -0.026777292, 0.022465754, -0.018313255, -0.0135875065, 0.015204778, -0.009969384, 0.012949784, -0.03217293, 0.017572852, -0.03533404, 0.016347723, -0.01951175, 0.010987851, 0.014446872, -0.023538692, 0.010417901, 0.010632394, -0.08176144, 0.022272473, 0.015396537, -0.052584626, 0.038736876, -0.043149747, -0.029119238, 0.018007606, 0.011656726, -0.0043566874, -0.019716699, 0.002629206, 0.024127668, -0.02821929, 0.034352794, 0.05168772, -0.017609123, 0.010308324, 0.015056107, -0.005054224, -0.023402166, 0.010430964, -0.028841874, 0.022298854, 0.06538734, -0.0078595895, 0.023045596, -0.00018059858, -0.037805982, -0.010346117, 0.024778532, -0.008312228, -0.025383234, 0.020395465, 0.022319146, 0.030905696, -0.04210585, -0.0006791471, -0.023388531, -0.017121863, 0.05292249, -0.022570767, 0.01099115, 0.012388505, 0.002312778, 0.029438585, 0.025448674, 0.03565554, -0.027101964, -0.02923668, -0.027159795, 0.021723067, 0.010764386, 0.042531982, -0.04066512, -0.0270837, 0.026540384, 0.058152746, 0.04369522, 0.008946479, 0.04362166, 0.051736426, -0.05764443, 0.035104994, 0.081429414, -0.054835007, -0.017637532, 0.016776454, -0.05398731, -0.024490895, -0.0037318529, -0.010915055, 0.029058618, 0.009951185, -0.022634178, 0.03514266, -0.0093754, 0.006137816, -0.0426375, -0.021134093, -0.019791778, -0.04491781, 0.017960398, -0.047426406, 0.02048475, -0.053296875, 0.006977396, 0.018092325, -0.027646802, -0.051310293, -0.014620877, -0.041828867, 0.00828014, -0.02769449, 0.0064877253, 0.046279658, 0.003261428, -0.047229573, 0.020886533, 0.0035774754, -0.0015688234, -0.0015937128, 0.019228477, 0.003041767, 0.015439245, -0.007456287, -0.062647924, 0.0068642683, -0.01131785, 0.0290713, -0.005070965, 0.008612421, -0.015012512, 0.027240962, -0.037824243, -0.002390395, -0.07014936, 0.03287503, 0.01269466, -0.036416996, 0.010178963, 0.0075709363, 0.014782704, 0.014665011, 0.020914434, -0.041517384, 0.019583026, 0.009726452, 0.03720686, 0.022208808, -0.0075810826, 0.008028901, -0.059947822, 0.0012251281, -0.026759028, -0.042054106, 0.0019392788, 0.027759423, 0.042763308, 0.037718724, -0.02450459, 0.053798087, 0.0050659236, -0.016377654, -0.026286226, 0.037058223, -0.014533114, 0.011403076, 0.012947295, -0.0007440814, 0.003992541, -0.030144745, 0.05081111, 0.014360632, 0.00040685412, -0.026812803, -0.040668163, -0.05114187, -0.004889859, -0.008047798, -0.01835517, 0.00060584233, 0.04815286, -0.010357024, 0.022114702, -0.02065013, -0.06031181, 0.022264862, -0.022231888, 0.050218582, 0.053141642, 0.014724873, 0.014120679, -0.05538695, -0.019884108, 0.022612872, 0.04701169, -0.006199706, 0.012479565, -0.004614395, 0.040432777, -0.001230962, -0.0069383336, 0.0123639, 0.014780168, 0.0033015045, -0.06512101, 0.0069682645, -0.04213426, -0.002509103, -0.051438127, -0.010863309, -0.049520537, 0.015253985, -0.015843214, -0.010564002, -0.0032901221, -0.005211994, -0.008649962, 0.0031472857, 0.033755194, 0.017912742, 0.012057238, 0.024040919, -0.0023386502, -0.013979649, -0.0522701, -0.066439986, 0.0333108, -0.012768726, -0.013387632, 0.060339205, -0.015945435, -0.004212107, -0.022037087, 0.0469952, -0.0019716192, -0.03892153, 0.03820472, 0.017000748, 0.04168479, -0.03441164, -0.014760384, 0.025228253, 0.0080133015, 0.020874863, -0.013201959, 0.037182003, 0.018224223, 0.014513836, 0.0037996725, 0.061000723, -0.014396903, -0.0038240228, 0.033224054, 0.018733552, 0.04851, 0.018628035, -0.005312439, 0.015591339, -0.05358908, 0.06592457, 0.028063804, 0.053398333, 0.0047351327, 0.03432185, 0.0072351038, -0.004803848, -0.012426807, -0.035382103, -0.035338983, -0.029695531, -0.0284737, 0.019490696, -0.012108729, 0.03272151, 0.023613011, -0.045299806, 0.012064087, 0.016094819, -0.020437444, -0.048156917, -0.0056315307, -0.015925143, 0.00040381032, 0.006260582, 0.032568622, -0.060599957, 0.06001225, -0.00036982127, -0.0092977835, -0.03117152, -0.0033704974, -0.04438464, -0.0035592124, -0.013803966, 0.021630231, 0.0147347655, 0.094081715, 0.0011718617, 0.0071730865, -0.030860038, -0.0037114024, -0.053040184, -0.016621158, -0.010406739, -0.010167802, 0.018469756, 0.01924694, -0.035810772, -0.028985059, -0.00361603, -0.021577472, 0.0326658, -0.03144039, 0.021006761, -0.052312713, -0.03191116, -0.026753955, -0.022511918, 0.0044804686, 0.04662893, -0.083535984, -0.024779547, -0.054977052, -0.025385262, 0.0027329486, 0.030432891, 0.04207947, -0.026566762, 0.02690919, 0.02344408, -0.0058755414, -0.01401589, -0.0074613597, -0.020583166, -0.04620077, -0.026476972, -0.049335882, -0.02834789, -0.01603269, 0.054885738, -0.008837663, -0.020998644, 0.02758745, 0.021533845, 0.0016061099, 0.04991826, -0.0032447823, 0.0050121183, 0.030327879, -0.006256016, -0.029562872, -0.011174537, 0.0061025578, -0.03256253, 0.010659375, 0.02321922, 0.032877058, -0.027594551, -0.025636692, -0.00035866068, 0.045087755, -0.039489605, 0.0028487397, 0.05267797, 0.04444298, -0.038697813, 0.014060311, 0.015632305, -0.055411298, 0.033152524, 0.045790877, -0.029543342, -0.006367622, -0.03135922, -0.0353712, -0.0053403405, -0.019858615, 0.03403015, 0.048994977, -0.012304673, -0.009699564, -0.0024188035, -0.042692285, -0.01957364, -0.018811677, -0.007985907, 0.041489482, 0.012911278, -0.04011825, 0.029727364, -0.021509748, 0.021355277, -0.014415421, -0.028078515, -0.030341577, 0.01742675, -0.015302178, 0.018282562, 0.0056776945, 0.008579447, 0.05130617, 0.044804685, -0.029224504, -0.0063940017, 0.010812072, -0.01370406, -0.010930274, -0.015420633, -0.003683501, -0.008034608, 0.014964318, 0.002659517, -0.0058522057, -0.0028099315, 0.0049816803, -0.04855464, -0.068751246, 0.067986235, 0.010627796, 0.00058872096, 0.053075694, 0.05116799, 0.0580107, -0.006542133, 0.027407357, -0.0015714932, -0.011807902, 0.011976705, 0.046775036, 0.037681185, -0.05998562, -0.060283404, 0.041914597, -0.053327315, -0.034848932, -0.032186117, -0.03968045, -0.00052860595, -0.007006819, -0.025741387, -0.042998698, 0.0053890417, 0.006017839, 0.01441339, 0.019564057, -0.0040000556, -0.046949543, 0.011348288, 0.049330298, 0.014823289, -0.023808576, 0.04240414, -0.010409276, 0.030748433, -0.021775827, -0.0019596976, -0.005470717, -0.06835149, -0.0124682775, -0.04237168, 0.037005972, -0.01727012, -0.0100722, -0.017030548, -0.036562085, -0.017570823, -0.0030656103, 0.002194831, -0.014694783, -0.021804744, 0.041239385, -0.0015394001, 0.0064985054, 0.013812749, -0.009358501, -0.029282337, -0.052280247, -0.040409185, 0.015850062, -0.014643197, 0.025535932, -0.04480874, -0.021057999, -0.020251391, -0.014672114, 0.009381235, 0.005078574, -0.03575649, 0.025216332, 0.0019338254, 0.0728766, 0.018431202, -0.0040198406, 0.037596975, 0.02512045, 0.061188422, -0.0049342476, -0.029599905, 0.08648644, -0.0012743361, -0.02386793, -0.013778061, 0.060720187, -0.005205399, 0.032513835, 0.025798647, 0.03411379, 0.029025644, 0.020102248, 0.015524756, -8.1167906e-05, 0.010873455, 0.024541117, 0.055815853, -0.04656831, 0.012608229, -0.02272346, 0.056431986, 0.029076373, -0.036918968, 0.015862238, -0.005587903, -0.04333859, 0.022793913, -0.06603212, 0.031585477, 0.021497194, 0.03831125, -0.011506565, 0.05596527, 0.0011667886, -0.044764098, -0.025749503, 0.036853272, 0.010880558, -0.015842961, -0.022341466, -0.023989173, -0.05227213, -0.045813195, -0.023389546, 0.019003436, 0.0059412373, -0.032619353, -0.009675468, -0.03205422, 0.003235302, 0.032944024, 0.05265768, -0.011920522, 0.022397824, -0.051726278, -0.044873673, -0.0028510226, -0.006140479, -0.0004195366, 0.021651538, -0.0040568733, 0.011112901, 0.050197277, 0.027199365, 0.006633447, 0.028940415, 0.0605959, 0.042903326, 0.01718591, -0.032264244, 0.008572091, -0.013981172, 0.012536382, -0.005604644, -0.032385994, -0.049680848, -0.019823233, 0.04241784, 6.594892e-05, 0.027751306, -0.010328616, 0.024729831, 0.028449478, -0.051245354, 0.044784393, 0.02895665, -0.0066618556, -0.007558309, -0.042012505, -0.014501661, 0.04567318, -0.028571103, -0.04857392, -0.04173958, -0.014107997, -0.0074811443, 0.0025994023, -0.061906762, 0.036428154, 0.009460373, 0.03275937, -0.009945732, -0.052958, -0.06915633, 0.017716417, 0.019458039, 0.023774587, 0.0039396873, 0.014226197, -0.025837267, -0.034028627, -0.038007885, -0.034929086, 0.006169395, 0.017899172, -0.009921762, 0.05259477, 0.048390273, 0.026694855, 0.029800795, -0.0053261365, -0.0399965, 0.0717849, -0.07813425, 0.03541432, -0.0162975, 0.0019414349, -0.07112744, -0.0163878, 0.022753473, 0.029177325, -0.01516115, -0.0648387, -0.005766219, 0.0010556901, 0.007933338, -0.021165546, 0.038295016, 0.009653907, -0.043810375, -0.0028215994, -0.020228056, -0.07301865, -0.002729778, -0.027978957, 0.028895775, -0.028217513, -0.010738514, 0.013790427, -0.024853613, -0.06624112, 0.029415248, -0.0419983, -0.026919335, 0.01297266, -0.024490386, 0.048052415, -0.005831914, -0.018065946, 0.039422616, -0.06514739, 0.06656199, 0.015040413, 0.062787116, -0.01724133, -0.028736483, -0.0053253756, 0.022919279, -0.004910658, 0.04638898, 0.0071650967, 0.011999153, 0.01394008, 0.03431373, -0.029609038, -0.06273468, -0.026164666, 0.025646204, 0.016495347, -0.01642534, 0.053684454, 0.010654301, 0.010120116, -0.007374104, -0.024569526, 0.012609941, 0.018096384, 0.030920913, -0.01800101, 0.02788016, -0.0004139563, 0.006729834, 0.019842003, 0.0053859977, -0.037518848, 0.012584576, 0.010530014, 0.05094605, 0.02488836, 0.04711949, 0.023784224, -0.031378496, 0.00791311, -0.0037101975, 0.005599571, -0.036979683, -0.0012702777, 0.055283457, 0.03276545, 0.0305724, 0.010417267, -0.0125683425, 0.011367565, -0.044697136, -0.017204806, -0.05796606, -0.01227005, -0.0038260522, -0.02789741, 0.019494502, 0.03698111, 0.007994277, -0.009499181, 0.046168305, 0.040668163, -0.0052586654, 0.02994284, -0.010374273, 0.068101905, -0.040111147, -0.0046265707, 0.003399667, 0.01795434, -0.004346541, 0.03538515, -0.033113968, 0.012287299, 0.050490495, -0.025188684, -0.010063298, 0.049532715, -0.03843706, -0.03241846, -0.046536606, -0.0035389205, 0.05247201, -0.019179976, 0.049832527, 0.03688422, 0.0032720813, 0.0077555934, -0.0029687162, -0.010261399, 0.02958494, 0.0069916, 0.014701537, 0.013889858, 0.0018201902, 0.018846173, 0.054246288, -0.01447376, -0.036172476, 0.07608705, 0.009018261, 0.021717995, 0.07243018, -0.036626, 0.035906903, 0.00516342, -0.011104023, -0.012429344, -0.018534692, -0.06301369, -0.06830076, 0.025884192, -0.012644438, 0.06296803, 0.020993065, 0.029221207, 0.025952421, -0.04828577, -0.04641181, 0.026735695, -0.050361007, -0.045985676, -0.05588207, -0.0028423986, -0.019313904, 0.013230114, -0.0031612364, -0.057488184, 0.08780135, -0.020564903, 0.012267514, -0.036425374, -0.006348345, -0.04484121, 0.043513615, -0.017240062, 0.014180033, 0.033933256, 0.0057434533, -0.017969053, 0.0011363507, -0.030494783, 0.008053885, -0.02666721, 0.016159514, -0.00692172, 0.035038155, 0.015775235, -0.013905869, 0.012155147, 0.015380303, -0.014330193, 0.033128936, -0.0013108617, -0.039056983, -4.33741e-05, 0.036026374, 9.23285e-05, 0.016390843, 0.013016288, 0.007761681, 0.0033304207, 0.015283917, 0.03946333, 0.027809137, -0.0064132786, 0.021253817, 0.00687898, -0.02270539, 0.014265259, -0.042525895, -0.010033621, -0.017224843, -0.032844212, 0.01918505, 0.004896961, 0.018017245, 0.010737499, -0.015025194, 0.055973385, -0.008168091, -0.068910785, -0.07909001, 0.050750233, -0.0047752094, -0.027873058, -0.0060505597, 0.038317844, -0.0087358225, -0.007085054, -0.008619778, -0.026114948, -0.010103375, -0.05044078, -0.011679047, -0.0014853725, 0.02112192, 0.009499181, 0.039302006, 0.0023356064, -0.01122254, -0.03406059, -0.0011277266, 0.008684966, 0.02378727, 0.032143377, 0.023340464, 0.01307615, 0.028163234, -0.008852881, 0.0050608185, -0.00053875195, 0.040304936, 0.053200487, -0.00801197, -0.0044434355, -0.015872257, 0.012749448, 0.0149734495, 0.00372009, 0.03269659, -0.004349585, 0.048600297, 0.053676333, -0.056394443, 0.018723153, -0.0053236], [-0.030278739, -0.0653635, -0.06514516, -0.03899555, 0.0027952816, 0.036229778, 0.034321822, -0.011430433, 0.013713872, 0.02066748, 0.0136266155, 0.03282904, -0.08233208, -0.029878577, -0.012964841, 0.047048647, -0.018637415, -0.052766025, 0.045537036, 0.052498788, -0.023200352, -0.0036253692, -0.03778679, 0.053329125, -0.0107084615, 0.0015955593, 0.0012902865, 0.00011981958, 0.046963174, -0.0057018604, 0.0184629, -0.028759753, 0.013502201, 0.03696243, 0.019872751, 0.023903545, 0.009471598, -0.029509706, -0.039194103, -0.03814893, -0.08282662, 0.0055178064, 0.0032989818, 0.016567666, 0.009358647, 0.03949518, 0.031447425, 0.018582974, 0.035098232, -0.02088473, 0.047797587, -0.010683213, -0.014673321, 0.009452773, -0.008067852, 0.012045047, 0.038633294, 0.037624367, -0.014562531, -0.021308552, 0.046578526, 0.00575134, -0.066854745, -0.011757837, 0.017588802, -0.0044836947, 0.020071434, -0.013454391, -0.0012943568, -0.037244305, 0.0017568134, 0.013812069, -0.006077346, -0.024761695, 0.047569137, -0.0071403314, -0.045489214, 0.010247755, 0.0060209977, -0.0038545148, 0.015878512, 0.028944967, -0.02021313, -0.0486035, -0.066006094, 0.05636252, -0.02906183, 0.0410073, 0.021252904, -0.0043430147, -0.022135332, 0.011820164, 0.036571175, 0.03658593, 0.02317803, -0.023989357, -0.018545069, 0.039905265, 0.014541925, 0.046735745, 0.014576268, -0.038266968, -0.0364511, -0.020882158, 0.02475521, -0.013495093, 0.032382835, -0.033028737, 0.0007143384, -0.022828048, -0.03408969, 0.017472798, 0.015552124, -0.08689896, 0.0353221, 0.00665393, 0.01867354, -0.05415947, -0.04263415, -0.040232923, -0.038275104, -0.010126918, -0.0018021273, 0.026841749, -0.0024777977, -0.0639806, -0.015872661, -0.010565493, -0.05288445, 0.009939683, 0.019641763, -0.0156839, 0.009681219, -0.0215052, -0.047922745, 0.0587757, -0.0050398, 0.060566127, -0.012057767, 0.029999161, -0.015047407, -0.0069765016, -0.01028973, -0.013825297, 0.05275496, -0.029208504, 0.027902698, -0.026288059, -0.039474957, -0.036746707, 0.012943441, 0.00676828, -0.014455685, 0.003818963, -0.009079196, -0.09422144, 0.002299722, 0.007678629, -0.02073006, -0.002930619, -0.016149443, 0.008055132, 0.046277322, 0.008112117, -0.033881214, -0.0318542, 0.017890515, 0.022814564, -0.023399161, 0.0611665, 0.06294319, -0.00491184, -0.002384181, 0.030557048, -0.05685579, -0.023601659, 0.038173348, -0.025286766, 0.013427679, 0.055420756, -0.008925159, -0.0012154946, 0.008770998, 0.0023246368, -0.02216535, 0.044295087, -0.005834272, -0.017377656, 0.029137272, 0.018019238, 0.024337877, -0.051003456, -0.0011407027, -0.008185128, -0.019526267, 0.037089504, -0.028309856, 0.03270693, -0.005507758, 0.050972424, 0.030896122, -0.0022091577, 0.048779547, -0.048696104, -0.06762404, -0.02897904, 0.018533114, 0.026282972, 0.054816823, -0.023245763, -0.022379296, 0.02995337, 0.023642361, 0.040091477, 0.041660585, 0.027534591, 0.017767895, -0.033074275, 0.014095464, 0.058884077, -0.032719776, 0.009315146, 0.013717943, -0.058154475, -0.029697958, 0.022785563, 0.012469377, 0.04093912, 0.012684546, -0.023746157, 0.05362321, -0.031029964, -0.00087918574, -0.053986482, -0.027242037, 0.008071413, -0.031631354, 0.023180636, -0.06400961, 0.0015670671, -0.027714703, 0.017858364, 0.034007393, -0.0026080473, -0.03573524, 0.010057722, -0.041183338, -0.028097311, -0.012999535, -0.016584456, 0.043100454, -0.010197512, -0.022632927, -0.008994355, 0.00035157253, 0.009595742, 0.014453651, 0.009837925, 0.024789171, 0.004021588, -0.0032531908, -0.06978944, 0.007909618, -0.022770556, 0.05859534, 0.023993682, 0.0107551105, -0.041733593, -0.010098361, -0.035370436, -0.0076369084, -0.07003162, 0.03008718, 0.01259403, -0.019935079, 0.04986988, 0.013385196, 0.0025246064, 0.036086302, 0.007773645, -0.04625087, -0.022089286, 0.0027693333, 0.020467525, 0.023305545, 0.0043089893, -0.018726453, -0.02275758, -0.01801313, -0.002610337, -0.021136073, 0.024428949, 0.022437552, 0.03827765, 0.048524134, -0.021709986, 0.027586488, 0.012256195, -0.0049739117, -0.04942367, 0.008231554, -0.0018428303, 0.010775621, -0.002071785, -0.00026609615, 0.0033335793, -0.01810166, 0.028770437, 0.017326267, 0.00082118384, -0.03512876, -0.021705024, -0.052490644, 0.0022122103, 0.054890092, -0.027063325, 0.03168325, 0.051279727, 0.0032593596, 0.024879735, 0.008572681, -0.04764495, 0.0134840915, -0.05914763, 0.03081017, 0.036148373, 0.0033770807, 0.022316525, -0.042722933, -0.029589077, 0.010526062, 0.04586419, 0.018082581, 0.005257561, 0.0059978478, 0.025804712, -0.023557078, 0.011558138, 0.0033651243, 0.036216807, 0.019819202, -0.061592355, 0.0018926915, -0.022626314, 0.02141934, -0.04144562, -0.009377536, -0.07802773, 0.015982559, 0.010626039, 0.0077839484, -0.00901954, 0.02193894, -0.014967527, -0.027197774, 0.014990597, 0.023366727, 0.014018637, 0.015513456, -0.046117567, -0.009224708, -0.0024566832, -0.042879637, 0.022251844, 0.008804068, -0.027771305, 0.030898824, -0.020245185, 0.0094074905, -0.052200634, 0.040815376, -0.008089221, -0.0108963, 0.03315212, 0.023812043, 0.043772053, -0.051147442, -0.022954483, 0.008732838, -0.009004531, 0.02374412, -0.035197195, 0.055776395, -0.006113597, 0.04594763, 0.021550227, 0.038602766, 0.02250573, -0.027977746, 0.05296992, 0.026549578, 0.02347014, 0.03287483, -0.0005656451, -0.006240794, -0.018459847, 0.042536717, 0.031714667, 0.022283897, 0.028973443, -0.001102194, -0.014713388, -0.007872095, -0.029003972, -0.01585587, -0.024016831, -0.06510859, -0.013221064, -0.008361932, 0.008086678, 0.041466225, -0.010981681, -0.016657721, 0.035867523, 0.014448308, -0.015821273, -0.018756472, -0.01179854, -0.021380546, -0.0062346887, 0.017945018, 0.028500272, -0.03235485, -0.012254923, 0.03785383, 0.014486213, -0.01941128, -0.027824093, -0.032386392, 0.02949406, -0.03288704, -0.010753744, 0.016895834, 0.108648635, 0.012294354, 0.0075911176, 0.015017515, -0.0131516615, -0.046840552, -0.023289263, 0.014138457, -0.032651983, 0.018071134, 0.006130896, -0.03303815, -0.0035940788, -0.025101058, 0.03408982, 0.036320087, -0.001474913, 0.033342406, -0.010721945, -0.029799715, -0.034501936, -0.059437636, 0.009536724, 0.06491321, -0.062244624, -0.021982696, -0.045606486, -0.048382692, -0.013166925, 0.060975704, 0.020659594, -0.0016988432, 0.029049253, 0.026769374, -0.04906243, 0.016728189, -0.00963441, -0.0049393144, -0.020113153, -0.030356329, -0.03175753, -0.006349675, 0.0071204887, 0.069622554, -0.008820349, -0.0107650645, 0.010439981, 0.011931842, 0.023234824, 0.017072128, -0.016872939, -0.010663435, 0.022773862, -0.010726269, -0.0057898806, -0.0057406556, 0.006004208, 0.014935473, 0.022592733, -0.009839515, 0.05591377, -0.010595001, -0.026337732, 0.029656237, 0.054425057, -0.01491156, -0.0043468303, 0.04320526, 0.032823697, -0.07719739, -0.0040601287, -0.011765723, -0.06813995, 0.012619884, 0.043391924, -0.032457624, -0.019283067, -0.027756423, -0.03150161, -0.00829528, -0.008685838, 0.060084306, 0.032811742, -0.014333577, -0.05792043, 0.0036856607, -0.013468637, -0.018983899, -0.012639058, 0.004733764, 0.024450319, 0.017046943, -0.013876685, 0.03413001, -0.04779351, 0.039170574, -0.00959269, -0.0032739236, -0.058272514, 0.0006347131, 0.0067256694, 0.0041295784, -0.00061487034, 0.0042351517, 7.4919044e-05, 0.02324958, -0.031727005, -0.027404848, 0.009101964, 0.013431749, -0.0015004158, 0.0018397776, -0.018799208, 0.011692966, -0.008169101, 0.022480546, -0.030970946, -0.01287132, 0.0015523124, -0.10200997, -0.060000356, 0.0743034, -0.02516822, 0.0025496641, 0.05004846, 0.038654663, 0.039270297, -0.0046870825, -0.003934076, 0.010290238, 0.015472371, 0.030300807, 0.05070378, 0.040534124, -0.0725084, -0.06032191, 0.04570341, -0.02594819, -0.005911481, -0.048076402, -0.040664375, 0.0052130423, -0.016069561, 0.014673957, -0.020377278, 0.001644403, -0.024065675, 0.019300113, -0.010735428, 0.015724305, -0.032346964, -0.0022580014, 0.038734544, 0.0062387586, 0.0014069261, 0.06396687, 0.002335846, 0.012793857, 0.017964797, 0.03582275, 0.02215263, -0.049598694, -0.039482463, -0.028410215, 0.008871737, -0.019277629, -0.012613873, -0.017104436, -0.0703084, -0.038795087, 0.018449163, 0.010214174, 0.005623125, 0.010902311, 0.047146335, 0.005083301, 0.005674004, 0.024784084, -0.01144735, -0.026681863, -0.040907577, -0.022093995, -0.013881773, -0.056835692, -0.029177722, -0.0433986, -0.007823506, -0.008413319, -0.004551618, 0.0062474087, 0.015559755, -0.038798142, 0.018516323, -0.016965028, 0.015722567, 0.03251512, -0.028367033, 0.05124513, 0.013938248, 0.073696926, -0.00032715072, -0.045497864, 0.0800344, 0.016602516, -0.029048745, -0.01599299, 0.0295036, 0.010632653, 0.035135377, 0.042944256, 0.02341112, -0.012637278, 0.019485565, 0.0051937085, -0.022479529, -0.045777313, -0.010263876, 0.043843284, -0.0061624404, -0.0030985193, -0.044457898, 0.02570092, 0.021552261, -0.0055356137, -0.0055315434, 0.009746852, -0.02766128, 0.048621822, -0.052356325, 0.039343562, 0.016188618, 0.03674654, 0.0019158414, 0.02692201, -0.0067007383, -0.021816831, -0.041252535, 0.053267565, -0.0066443267, -0.0054999986, -0.023377284, -0.041055445, -0.024765767, -0.041826446, -0.033008896, 0.0014205363, 0.005473542, -0.025487484, -0.047394626, -0.016825367, -0.020700552, 0.026633019, 0.021251058, 0.008909896, -0.0012098979, -0.07157223, -0.031793147, -0.028084591, 0.037515994, 0.0045218538, 0.0028105453, -0.007649342, 0.017923076, 0.07835743, 0.04069083, 0.046314552, -0.0147202555, 0.040515777, 0.040308733, 0.0069539878, 0.0010241903, 0.003041535, -0.016020719, 0.0351252, -0.028428022, -0.052113123, -0.058921725, 0.010024035, 0.024450827, 0.011041718, 0.027829435, 0.023696803, 6.512487e-05, 0.017334154, -0.043262247, 0.010420997, 0.02393339, -0.00452745, 0.0012027749, -0.044317476, -0.007165771, 0.03407252, -0.022113962, -0.008338018, -0.032033294, -0.038850803, 0.004119148, -0.0074913953, -0.04671081, 0.05168269, -0.0051316363, 0.0154055925, 0.016924325, -0.028489077, -0.01715805, 0.0241018, 0.02745929, 0.012529668, 0.0036355448, 0.019607674, -0.020544352, -0.013936976, -0.06596539, -0.020576533, -0.024327701, 0.034962457, -0.032432184, 0.0074588326, 0.041106004, 0.028750593, 0.013184733, -0.01974759, -0.04858824, 0.03139483, -0.049396195, 0.011537278, -0.0190592, -0.014593058, -0.08079147, -0.009897963, 0.011829576, 0.033451796, 0.0047368165, -0.06855206, -0.011886306, -0.008172663, 0.015122707, -0.016354945, 0.00871096, -0.009524004, -0.035804432, -0.0072339484, 0.0064417655, -0.09289248, -0.013636537, -0.009067112, -0.00431147, -0.031935606, -0.036650103, -0.012643383, -0.00019893612, -0.03195494, 0.023202611, -0.043201193, -0.001303515, 0.013881773, -0.06994818, 0.028910862, -0.018021908, -0.04386262, 0.02754782, -0.045735974, 0.05204291, 0.03692962, 0.030323131, -0.02441572, -0.008424894, 0.02595226, 0.0085349195, 0.018628765, 0.049389075, 0.016770542, -0.014263873, -0.008720881, -0.0018285842, -0.020295555, -0.05953329, -0.04104088, 0.019094815, -0.0034302806, -0.013851245, 0.04134615, 0.016701411, -0.015633022, 0.04400406, 0.008558832, -0.008250507, 0.03357187, 0.009666464, -0.018673442, -0.0023643381, -0.0024046914, 0.043597274, 0.012888619, -0.02455831, -0.02903348, 0.013464566, 0.0236879, 0.034674924, 0.02220351, 0.042377844, 0.0037960676, 0.00025286767, 0.0008262718, -0.006425993, 0.012708508, -0.08890155, 0.001613049, 0.048326727, 0.025615443, 0.02654805, 0.01682562, -0.021833114, 0.021928765, -0.0452048, 0.0031524505, -0.0622174, -0.02961757, 0.0020593195, -0.03375554, 0.009953929, 0.03525189, 0.0006296252, 0.0013940792, 0.043654013, 0.07774091, -0.002428954, 0.01866845, -0.010151848, 0.05232783, -0.02356808, 0.015481403, 0.011759109, 0.01217498, 0.0050151236, 0.041541524, -0.046051424, 0.015273913, 0.024946896, -0.026357256, -0.018002193, 0.022181695, -0.05691099, -0.0050306655, -0.035232045, -0.0023430604, 0.05860017, -0.029433897, 0.04017187, 0.027788984, -0.0059731714, -0.0038306653, 0.0042423382, 0.00077666494, 0.018327817, 0.023051152, -0.017338479, 0.009516626, 0.010474419, 0.02680499, 0.028832255, -0.0055179335, -0.06698907, 0.056650497, 0.00655319, 0.029264469, 0.05113269, -0.053107295, 0.03976484, 0.038405355, -0.010984098, -0.013183716, 0.009050322, -0.030686025, -0.07450285, 0.013197962, -0.028544027, 0.03381202, 0.01844929, 0.026756018, -0.0009935875, -0.05671155, -0.03468052, 0.0033788614, -0.019810172, -0.0657924, -0.031272147, 0.014386491, -0.015407374, 0.017355777, 0.006258093, -0.032368075, 0.08950599, -0.027111534, 0.023353372, 0.020639496, 0.006362649, -0.06861566, 0.027657209, -0.01002109, 0.079000555, -0.00011040701, 0.045503967, 0.007165262, 0.016885912, -0.06959406, 0.040362664, -0.0022747915, 0.045293093, -0.019508205, 0.013803737, -0.009107306, -0.0030242363, 0.009707167, 0.054164555, -0.015703488, 0.00051718304, 0.0025714147, -0.03485796, -0.030512782, 0.02591054, -0.0135927815, 0.03939037, 0.011819401, 0.005219148, 0.038792036, -0.017461605, 0.080950215, 0.03774902, 0.018790305, 0.015336398, -0.007731543, -0.0044997213, 0.03525367, -0.048333846, -0.026424542, 0.0142250145, -0.027753625, 0.030875294, -0.0059253452, 0.050931722, -0.0064242124, -0.024763733, 0.029322727, -0.017160403, -0.038779825, -0.06545863, 0.05081673, 0.007463157, -0.03556632, -0.029259382, 0.023502955, -0.021343658, 0.00779565, 0.016287941, 0.0021837184, -0.015743937, -0.05652839, -0.011030525, 0.011837209, -0.0092182215, 0.0008456057, 0.043875843, 0.038142823, 0.0277493, -0.010162532, -0.0009275206, 0.004672137, 0.05715318, 0.00881577, 0.027072547, 0.025059845, 0.01932377, 0.0010867713, -0.0074071907, -0.02849213, 0.056369647, 0.06461812, 0.011953466, 0.0012790931, -0.0045088795, 0.0053949337, -0.010967944, -0.011414151, 0.01819477, -0.0016932465, 0.04985716, 0.045463264, -0.06577103, 0.00725837, 0.00021979643]], 'embedding_model': 'text-embedding-3-large', 'embedding_dimensions': 1024}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'content': ['Save both time and money with [product].', 'Save both time and money on [task].', 'Is [product] worth the price? Let’s find out!', 'Why is it challenging and costly to find a good [product category]?', 'Searching for an affordable [product type]? Check this out!', 'How to locate an affordable [service].', 'I can’t believe this costs only [price].', \\\"Don't waste your money on [X]; instead buy [X].\\\", 'What’s inside [product]?', 'Common questions I get about [product].', 'Now you can get X delivered right to your door.', 'Thinking of trying [product type]?', 'Allow me to introduce you to [product].', '[category] Tip #X.', 'Here’s how to achieve [value prop].', 'I know this sounds unbelievable, but…', 'How to get X done in just 10 minutes.', 'How to find time for X.', 'Here’s my biggest life hack for X.', 'Add more [value prop] to your day.', 'Before you try [product type], watch this first.', 'Hate [the worse alternative]? Give this a try!', 'Thinking about [worse alternative]?', 'Instead of [worse alternative], try this.', 'Still using [the worse alternative to the product]? Watch this.', 'Something that’s always annoyed me about X.', 'Don’t buy X that doesn’t work. Try this instead.', 'I tested every [product category] so you don’t have to: here’s what I found.', 'Stop doing [worse alternative]. Try [product] instead.', 'Dealing with [negative experience]? I used [product] to help.', 'Why millennials are switching to [product].', 'How to do X without [worse alternative].', 'I only get my [product category] from [brand name].', 'I no longer buy my [product category] from [worse alternative].', '[Worse alternative] can be difficult to deal with.', 'Your new X alternative.', '[value prop] without the [negative side effect].', 'I kept experiencing [pain point], so I tried this instead!', 'If you have [pain point] — you need to see this!', 'I wanted to stop doing X, so I tried this instead.', \\\"Your X isn't [adverb]; you just need X.\\\", 'My secret to [popular trend] revealed!', 'Guys, it’s here…', 'What I ordered vs. what I received.', '[Product] unboxing.', 'Let’s create X with [product].', 'POV: You tried [product].', 'A day in the life of X.', 'Get ready with me to do [task].', '“Put a finger down” [product category] edition.', 'Trying home remedies for X.', '[Product category] ASMR.', 'TikTok made me try [product].', 'Things TikTok made me try #13.', 'This [product type] is going viral on [social media platform].', 'I tested the viral [product type] to see if it lives up to the hype.', 'This [product type] has over 5,000 reviews… let’s see if it’s worth it.', '[Publication] can’t stop raving about us.', 'It’s so good it sold out in a week.', 'Are you [accomplishing the goal optimally]?', 'Life Hack: Try [product] for [pain point].', 'My go-to [product] for [pain point].', 'How to easily [task].', '[Task] has never been easier than with [product].', 'My favorite [product] to make [hard task] simpler.', 'Here’s my top product for [task].', 'Struggling to do [task]?', 'I’ve been struggling with [task], but [product] has really helped.', 'Easiest way to do [task]?', 'Make your week easier.', 'Why adults avoid [task]… [product] makes it easy.', '[Product] made [task] so much easier! You’ve got to try it.', 'When I use [product], it’s one less thing I have to worry about.', 'How to do [X] in half the time.', 'This trick/hack/method will save you hours...', 'Easy hack to [X]...', 'Simple [X] that will make you [X].', '5 Ways [product] Helps with [pain point].', '3 reasons to buy [product].', '3 reasons to try [service].', 'Get [value prop] in 3 steps.', 'Here are 3 ways [worse alternative] affects your life.', '5 things you didn’t know about [topic].', 'The ultimate [X] checklist to [action].', 'Reasons why [X].', 'Here are the 3 best ways to [X].', 'Here are [X] mistakes you might be making...', 'If you want [X], do these 5 things...', 'The internet’s #1 [product type].', 'The best way to [accomplish the goal of the product].', 'What makes [the product type] the best?', 'My skin has never looked better with [product].', 'The best way to find X in 2022.', '[Product] changed how I do [task], and I’m never going back.', 'Why is [product] so good though?', 'After hours of researching, I found the best [product type] for [task].', 'I found the best [product category] for [value prop].', 'This is going to blow your mind.', 'How I got [X] in 24 hours.', 'Must-have [products] for [X].', \\\"The best [target audience] know something that you don't.\\\", 'Hey, [customer type], you’ve got to try this.', 'People looking for [product category], stop scrolling.', 'Wait, have you tried X?', 'Take control of your X with [product].', 'Imagine if X was also X.', 'Watch this if you X.', 'PSA: [statement about product category].', 'Did you know? [fact about product category].', 'I just found out [fact about product category].', 'Are you one of [fact about product category] people who do X?', 'New customers get [discount].', 'Take [discount] off when you try [product].', 'I didn’t know X could be related to X.', 'Why is it important to [do product-related task]?', \\\"99\\\\\\\\% of your [target audience] don't. To be the 1% you need to [X].\\\", 'This [product] is the secret to [X].', 'Is there anything worse than [X]?', 'I will never [adjective] from learning this.', 'X people start scrolling. I have the perfect [X] for you.', \\\"Here's a challenge for you...\\\", \\\"There's nothing more painful than [X].\\\", 'What would you do if...', 'Watch till the end…', \\\"Why you're failing at [activity].\\\", 'The worst mistake you can make in [subject].', 'Avoid these common pitfalls in [topic].', 'The dark side of [popular trend].', \\\"Don't be fooled by [misconception].\\\", 'Why [common practice] is ruining your [outcome].', 'What no one tells you about [issue].', 'The hidden dangers of [activity].', 'Stop doing this if you want to succeed in [field].', 'The ugly truth about [common belief].', 'Why [habit] is wasting your time.', 'Exposing the myths about [topic].', \\\"The biggest regret you'll have in [situation].\\\", 'How [action] is destroying your [goal].', 'The shocking reality of [popular topic].', 'Why [trend] is a bad idea.', \\\"The real reason you're not seeing results in [field].\\\", 'The downside of [seemingly positive aspect].', 'What you should never do in [activity].', 'Why [common advice] is actually harmful.']}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'caption': 'There are just so cute!! 🎃🦇', 'description': 'Discover adorable Halloween snacks perfect for your spooky celebration! 🎃🦇', 'virality_score': 0, 'engagement_score': 0}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'caption': 'خوراکی هالوینی به مناسبت هالوین👻🎃', 'description': 'Discover Halloween snacks with a touch of ASMR magic, perfect for satisfying your spooky cravings!', 'virality_score': 0.0, 'engagement_score': 0.05474452554744526}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'caption': 'Kolejny filmik już w przygotowaniu 👻 Na planie nawet straszna Chupa czacha 💕 @chupachupspl #halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin', 'description': 'Get ready for our next Halloween-themed reel featuring spooky DIY Halloween snacks with a special twist from Chupa Chups!', 'virality_score': 0, 'engagement_score': 0}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'caption': 'Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger', 'description': 'Transform your afternoon snack into a fun and delicious Halloween treat with spider-themed donuts!', 'virality_score': 0, 'engagement_score': 0}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"There are just so cute!! 🎃🦇\\\",\\n\",\n      \"  \\\"virality_score\\\": 0,\\n\",\n      \"  \\\"engagement_score\\\": 0,\\n\",\n      \"  \\\"description\\\": \\\"Discover adorable Halloween snacks perfect for your spooky celebration! 🎃🦇\\\",\\n\",\n      \"  \\\"hooks\\\": [\\n\",\n      \"    \\\"How to add more Halloween delight to your snack table!\\\",\\n\",\n      \"    \\\"Stop serving boring treats, try these cute Halloween snacks instead!\\\",\\n\",\n      \"    \\\"Looking for spooky yet adorable Halloween snacks? Check this out!\\\"\\n\",\n      \"  ]\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"خوراکی هالوینی به مناسبت هالوین👻🎃\\\",\\n\",\n      \"  \\\"virality_score\\\": 0.0,\\n\",\n      \"  \\\"engagement_score\\\": 0.05474452554744526,\\n\",\n      \"  \\\"description\\\": \\\"Discover Halloween snacks with a touch of ASMR magic, perfect for satisfying your spooky cravings!\\\",\\n\",\n      \"  \\\"hooks\\\": [\\n\",\n      \"    \\\"What's inside these spine-tingling Halloween snacks?\\\",\\n\",\n      \"    \\\"Unveil the magic of Halloween ASMR treats!\\\",\\n\",\n      \"    \\\"Crave the spooky flavors of Halloween with these snacks!\\\"\\n\",\n      \"  ]\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"Kolejny filmik już w przygotowaniu 👻 Na planie nawet straszna Chupa czacha 💕 @chupachupspl #halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin\\\",\\n\",\n      \"  \\\"virality_score\\\": 0,\\n\",\n      \"  \\\"engagement_score\\\": 0,\\n\",\n      \"  \\\"description\\\": \\\"Get ready for our next Halloween-themed reel featuring spooky DIY Halloween snacks with a special twist from Chupa Chups!\\\",\\n\",\n      \"  \\\"hooks\\\": [\\n\",\n      \"    \\\"Imagine if Halloween treats were both spooky and delicious—let's get creative with Chupa Chups!\\\",\\n\",\n      \"    \\\"Simple DIY Halloween snacks that will make your party unforgettable!\\\",\\n\",\n      \"    \\\"This trick will save you hours in preparing the ultimate Halloween treats!\\\"\\n\",\n      \"  ]\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger\\\",\\n\",\n      \"  \\\"virality_score\\\": 0,\\n\",\n      \"  \\\"engagement_score\\\": 0,\\n\",\n      \"  \\\"description\\\": \\\"Transform your afternoon snack into a fun and delicious Halloween treat with spider-themed donuts!\\\",\\n\",\n      \"  \\\"hooks\\\": [\\n\",\n      \"    \\\"Let’s create spooky and fun spider donuts with this easy recipe!\\\",\\n\",\n      \"    \\\"Stop serving boring snacks – try these creepy-cute spider donuts for Halloween!\\\",\\n\",\n      \"    \\\"Upgrade your kid’s snacks with these adorable spider-themed donuts!\\\"\\n\",\n      \"  ]\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  {'caption': 'Get ready for a spooktacular Halloween with fun and easy snack ideas! 🎃👻🧁 Visit Rio Grande Supermarket to stock up on treats and ingredients for your Halloween party or trick-or-treaters. #HalloweenSnacks #RioGrandeSupermarket', 'description': 'Discover delightful Halloween snack ideas that are perfect for kids and parties. Shop at Rio Grande Supermarket for all your spooky treat essentials, from cake mix to candies.', 'virality_score': 0, 'engagement_score': 0}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  ```json\\n\",\n      \"{\\n\",\n      \"  \\\"caption\\\": \\\"Get ready for a spooktacular Halloween with fun and easy snack ideas! 🎃👻🧁 Visit Rio Grande Supermarket to stock up on treats and ingredients for your Halloween party or trick-or-treaters. #HalloweenSnacks #RioGrandeSupermarket\\\",\\n\",\n      \"  \\\"virality_score\\\": 0,\\n\",\n      \"  \\\"engagement_score\\\": 0,\\n\",\n      \"  \\\"description\\\": \\\"Discover delightful Halloween snack ideas that are perfect for kids and parties. Shop at Rio Grande Supermarket for all your spooky treat essentials, from cake mix to candies.\\\",\\n\",\n      \"  \\\"hooks\\\": [\\n\",\n      \"    \\\"Halloween snacks have never been easier than with these quick ideas!\\\",\\n\",\n      \"    \\\"Stop stressing over Halloween snacks; Rio Grande Supermarket has you covered!\\\",\\n\",\n      \"    \\\"I can't believe how easy these Halloween snack ideas are to make!\\\"\\n\",\n      \"  ]\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  ['```json\\\\n{\\\\n  \\\"caption\\\": \\\"خوراکی هالوینی به مناسبت هالوین👻🎃\\\",\\\\n  \\\"virality_score\\\": 0.0,\\\\n  \\\"engagement_score\\\": 0.05474452554744526,\\\\n  \\\"description\\\": \\\"Discover Halloween snacks with a touch of ASMR magic, perfect for satisfying your spooky cravings!\\\",\\\\n  \\\"hooks\\\": [\\\\n    \\\"What\\\\'s inside these spine-tingling Halloween snacks?\\\",\\\\n    \\\"Unveil the magic of Halloween ASMR treats!\\\",\\\\n    \\\"Crave the spooky flavors of Halloween with these snacks!\\\"\\\\n  ]\\\\n}\\\\n```', '```json\\\\n{\\\\n  \\\"caption\\\": \\\"Kolejny filmik już w przygotowaniu 👻 Na planie nawet straszna Chupa czacha 💕 @chupachupspl #halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin\\\",\\\\n  \\\"virality_score\\\": 0,\\\\n  \\\"engagement_score\\\": 0,\\\\n  \\\"description\\\": \\\"Get ready for our next Halloween-themed reel featuring spooky DIY Halloween snacks with a special twist from Chupa Chups!\\\",\\\\n  \\\"hooks\\\": [\\\\n    \\\"Imagine if Halloween treats were both spooky and delicious—let\\\\'s get creative with Chupa Chups!\\\",\\\\n    \\\"Simple DIY Halloween snacks that will make your party unforgettable!\\\",\\\\n    \\\"This trick will save you hours in preparing the ultimate Halloween treats!\\\"\\\\n  ]\\\\n}\\\\n```', '```json\\\\n{\\\\n  \\\"caption\\\": \\\"Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger\\\",\\\\n  \\\"virality_score\\\": 0,\\\\n  \\\"engagement_score\\\": 0,\\\\n  \\\"description\\\": \\\"Transform your afternoon snack into a fun and delicious Halloween treat with spider-themed donuts!\\\",\\\\n  \\\"hooks\\\": [\\\\n    \\\"Let’s create spooky and fun spider donuts with this easy recipe!\\\",\\\\n    \\\"Stop serving boring snacks – try these creepy-cute spider donuts for Halloween!\\\",\\\\n    \\\"Upgrade your kid’s snacks with these adorable spider-themed donuts!\\\"\\\\n  ]\\\\n}\\\\n```', '```json\\\\n{\\\\n  \\\"caption\\\": \\\"There are just so cute!! 🎃🦇\\\",\\\\n  \\\"virality_score\\\": 0,\\\\n  \\\"engagement_score\\\": 0,\\\\n  \\\"description\\\": \\\"Discover adorable Halloween snacks perfect for your spooky celebration! 🎃🦇\\\",\\\\n  \\\"hooks\\\": [\\\\n    \\\"How to add more Halloween delight to your snack table!\\\",\\\\n    \\\"Stop serving boring treats, try these cute Halloween snacks instead!\\\",\\\\n    \\\"Looking for spooky yet adorable Halloween snacks? Check this out!\\\"\\\\n  ]\\\\n}\\\\n```', '```json\\\\n{\\\\n  \\\"caption\\\": \\\"Get ready for a spooktacular Halloween with fun and easy snack ideas! 🎃👻🧁 Visit Rio Grande Supermarket to stock up on treats and ingredients for your Halloween party or trick-or-treaters. #HalloweenSnacks #RioGrandeSupermarket\\\",\\\\n  \\\"virality_score\\\": 0,\\\\n  \\\"engagement_score\\\": 0,\\\\n  \\\"description\\\": \\\"Discover delightful Halloween snack ideas that are perfect for kids and parties. Shop at Rio Grande Supermarket for all your spooky treat essentials, from cake mix to candies.\\\",\\\\n  \\\"hooks\\\": [\\\\n    \\\"Halloween snacks have never been easier than with these quick ideas!\\\",\\\\n    \\\"Stop stressing over Halloween snacks; Rio Grande Supermarket has you covered!\\\",\\\\n    \\\"I can\\\\'t believe how easy these Halloween snack ideas are to make!\\\"\\\\n  ]\\\\n}\\\\n```']\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish\\n\",\n      \"Transition output:  {'hooks': [{'hooks': [\\\"What's inside these spine-tingling Halloween snacks?\\\", 'Unveil the magic of Halloween ASMR treats!', 'Crave the spooky flavors of Halloween with these snacks!'], 'caption': 'خوراکی هالوینی به مناسبت هالوین👻🎃', 'description': 'Discover Halloween snacks with a touch of ASMR magic, perfect for satisfying your spooky cravings!', 'virality_score': 0.0, 'engagement_score': 0.05474452554744526}, {'hooks': [\\\"Imagine if Halloween treats were both spooky and delicious—let's get creative with Chupa Chups!\\\", 'Simple DIY Halloween snacks that will make your party unforgettable!', 'This trick will save you hours in preparing the ultimate Halloween treats!'], 'caption': 'Kolejny filmik już w przygotowaniu 👻 Na planie nawet straszna Chupa czacha 💕 @chupachupspl #halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin', 'description': 'Get ready for our next Halloween-themed reel featuring spooky DIY Halloween snacks with a special twist from Chupa Chups!', 'virality_score': 0, 'engagement_score': 0}, {'hooks': ['Let’s create spooky and fun spider donuts with this easy recipe!', 'Stop serving boring snacks – try these creepy-cute spider donuts for Halloween!', 'Upgrade your kid’s snacks with these adorable spider-themed donuts!'], 'caption': 'Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger', 'description': 'Transform your afternoon snack into a fun and delicious Halloween treat with spider-themed donuts!', 'virality_score': 0, 'engagement_score': 0}, {'hooks': ['How to add more Halloween delight to your snack table!', 'Stop serving boring treats, try these cute Halloween snacks instead!', 'Looking for spooky yet adorable Halloween snacks? Check this out!'], 'caption': 'There are just so cute!! 🎃🦇', 'description': 'Discover adorable Halloween snacks perfect for your spooky celebration! 🎃🦇', 'virality_score': 0, 'engagement_score': 0}, {'hooks': ['Halloween snacks have never been easier than with these quick ideas!', 'Stop stressing over Halloween snacks; Rio Grande Supermarket has you covered!', \\\"I can't believe how easy these Halloween snack ideas are to make!\\\"], 'caption': 'Get ready for a spooktacular Halloween with fun and easy snack ideas! 🎃👻🧁 Visit Rio Grande Supermarket to stock up on treats and ingredients for your Halloween party or trick-or-treaters. #HalloweenSnacks #RioGrandeSupermarket', 'description': 'Discover delightful Halloween snack ideas that are perfect for kids and parties. Shop at Rio Grande Supermarket for all your spooky treat essentials, from cake mix to candies.', 'virality_score': 0, 'engagement_score': 0}], 'summary': [{'code': 'DByK3vHglSI', 'caption': 'خوراکی هالوینی به مناسبت هالوین👻🎃\\\\n\\\\nاگه توهم عاشق ای\\\\u200cاس\\\\u200cام\\\\u200cآری پیجمو از دست نده😉👇🏻\\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n\\\\n#asmr #asmrartist #asmrfood #mukbang #halloween #halloween_snacks #happy #ایاسامار #ای_اس_ام_آر #ایاسمار #هالووین', 'hashtags': ['#asmr', '#asmrartist', '#asmrfood', '#mukbang', '#halloween', '#halloween_snacks', '#happy', '#ایاسامار', '#ای_اس_ام_آر', '#ایاسمار', '#هالووین'], 'media_id': 3490900471793734792, 'username': 'khatisaw_asmr', 'full_name': 'ASMR | خاٰطؕݺ࣮\\\\u200cثٙۛاٰ | ای اس ام آر', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 15, 'play_count': 274, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 36.942, 'virality_score': 0.0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad', 'engagement_score': 0.05474452554744526}, {'code': 'CG7QNDNjazG', 'caption': 'Ready! Set! Film!\\\\nKolejny filmik już w przygotowaniu 👻\\\\n\\\\nNa planie nawet straszna Chupa czacha 💕 @chupachupspl\\\\n\\\\n#halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin', 'hashtags': ['#halloween', '#ytchannel', '#diy', '#chupachups', '#halloween_snacks', '#halloween_party', '#pumpkin'], 'media_id': 2430607689442503878, 'username': '4crazy_hands', 'full_name': 'No Full Name Available', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 5, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/122271405_3676949662369294_5352096118873851662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=dO8fE8ZIN3MQ7kNvgEw_L10&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD688O9MqNvC3AWhO3YWANr_IJeDinBX8qovw7wEaiijQ&oe=67ABDE00&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'BomPez0HE_n', 'caption': 'Και κάπως έτσι το βαρετό απογευματινό σνακ... μεταμορφώνεται σε αραχνο-ντονατ!!! Σούπερ νόστιμο και διασκεδαστικό!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts  #για_ενα_νικολα_γινονται_ολα #greekmombloggerscommunity #greekbloggerscommunity #momblogger', 'hashtags': ['#halloween_kids', '#halloween_snacks', '#spider_donuts', '#cute_food', '#kids_snacks', '#donuts', '#για_ενα_νικολα_γινονται_ολα', '#greekmombloggerscommunity', '#greekbloggerscommunity', '#momblogger'], 'media_id': 1884261582018203623, 'username': 'elpida_touve', 'full_name': 'Elpida Touve', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 77, 'play_count': 0, 'comment_count': 6, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/475820641_405922235900340_3354549167503917651_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=BJ5jjgI1S1wQ7kNvgEa8cis&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAQ2PldBSkgIil_veixaVS6a6ZRgs1k_fmg9-2Jer3lYQ&oe=67ABC61E&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'CG9i8GshD7I', 'caption': 'There are just so cute!! 🎃🦇\\\\n\\\\n#halloween\\\\n#halloween_costume\\\\n#halloween_snacks', 'hashtags': ['#halloween', '#halloween_costume', '#halloween_snacks'], 'media_id': 2431253037789232840, 'username': 'life.by_a', 'full_name': 'No Full Name Available', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 46, 'play_count': 0, 'comment_count': 8, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/231734336_1025030578256388_2356445558213588438_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6WsYnjkiAyYQ7kNvgG_3UvF&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTL2ZatiNXGYsh4b00nQhUxAAmfVMUZ2geexXJvD5skw&oe=67ABE3E3&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'B4KreEynrxE', 'caption': 'Halloween is just around the corner and you could create some fun party snacks with the kids or for your guests. \\\\nCome in to Rio Grande Supermarket and get your ingredients for all the spooktacular snacks. Buy extra candy for the trick-or-treaters.\\\\n\\\\nShurfine Cake Mix ASSORTED 16.5 OZ. 70¢\\\\nMazola Cooking Oil SELECT VARIETY 40 OZ. 2 FOR $5\\\\nLay’s or Wavy Lay’s 2 FOR $4\\\\nBuffalo Style Wing Sections $3.38 LB .\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n\\\\n#mondaymorning #happymonday #mondaymood #riograndesupermarket #canutillosupermarket #grocerystore #canutillobusiness #iamelpaso #elpasotx #itsallgoodep #recipeshoppinglist #halloweensnackideas #snackideasforkids #halloweentime #halloweenpartyideas #halloween_cupcakes #halloween_snacks #snacksforhalloween', 'hashtags': ['#mondaymorning', '#happymonday', '#mondaymood', '#riograndesupermarket', '#canutillosupermarket', '#grocerystore', '#canutillobusiness', '#iamelpaso', '#elpasotx', '#itsallgoodep', '#recipeshoppinglist', '#halloweensnackideas', '#snackideasforkids', '#halloweentime', '#halloweenpartyideas', '#halloween_cupcakes', '#halloween_snacks', '#snacksforhalloween'], 'media_id': 2164733753633455172, 'username': 'riograndesupermarket', 'full_name': 'Rio Grande Supermarket', 'has_audio': True, 'audio_type': 'No Audio Type Available', 'like_count': 8, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 15.0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/21909505_2012064525693566_3455111339192614912_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=myA3c6JjKckQ7kNvgHiHwfB&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx7dSZqcDmnemLgDaWR4YhVFRz9blBP-lcZU2gbkTiBQ&oe=67ABD6D3&_nc_sid=2011ad', 'engagement_score': 0}]}\\n\",\n      \"--------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Lists all the task steps that have been executed up to this point in time\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"# Transitions are retrieved in reverse chronological order\\n\",\n    \"for transition in reversed(transitions):\\n\",\n    \"    print(\\\"Transition type: \\\", transition.type)\\n\",\n    \"    print(\\\"Transition output: \\\", transition.output)\\n\",\n    \"    print(\\\"-\\\"*50)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 69,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{\\n\",\n      \"    \\\"hooks\\\": [\\n\",\n      \"        {\\n\",\n      \"            \\\"hooks\\\": [\\n\",\n      \"                \\\"What's inside these spine-tingling Halloween snacks?\\\",\\n\",\n      \"                \\\"Unveil the magic of Halloween ASMR treats!\\\",\\n\",\n      \"                \\\"Crave the spooky flavors of Halloween with these snacks!\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"caption\\\": \\\"\\\\u062e\\\\u0648\\\\u0631\\\\u0627\\\\u06a9\\\\u06cc \\\\u0647\\\\u0627\\\\u0644\\\\u0648\\\\u06cc\\\\u0646\\\\u06cc \\\\u0628\\\\u0647 \\\\u0645\\\\u0646\\\\u0627\\\\u0633\\\\u0628\\\\u062a \\\\u0647\\\\u0627\\\\u0644\\\\u0648\\\\u06cc\\\\u0646\\\\ud83d\\\\udc7b\\\\ud83c\\\\udf83\\\",\\n\",\n      \"            \\\"description\\\": \\\"Discover Halloween snacks with a touch of ASMR magic, perfect for satisfying your spooky cravings!\\\",\\n\",\n      \"            \\\"virality_score\\\": 0.0,\\n\",\n      \"            \\\"engagement_score\\\": 0.05474452554744526\\n\",\n      \"        },\\n\",\n      \"        {\\n\",\n      \"            \\\"hooks\\\": [\\n\",\n      \"                \\\"Imagine if Halloween treats were both spooky and delicious\\\\u2014let's get creative with Chupa Chups!\\\",\\n\",\n      \"                \\\"Simple DIY Halloween snacks that will make your party unforgettable!\\\",\\n\",\n      \"                \\\"This trick will save you hours in preparing the ultimate Halloween treats!\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"caption\\\": \\\"Kolejny filmik ju\\\\u017c w przygotowaniu \\\\ud83d\\\\udc7b Na planie nawet straszna Chupa czacha \\\\ud83d\\\\udc95 @chupachupspl #halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin\\\",\\n\",\n      \"            \\\"description\\\": \\\"Get ready for our next Halloween-themed reel featuring spooky DIY Halloween snacks with a special twist from Chupa Chups!\\\",\\n\",\n      \"            \\\"virality_score\\\": 0,\\n\",\n      \"            \\\"engagement_score\\\": 0\\n\",\n      \"        },\\n\",\n      \"        {\\n\",\n      \"            \\\"hooks\\\": [\\n\",\n      \"                \\\"Let\\\\u2019s create spooky and fun spider donuts with this easy recipe!\\\",\\n\",\n      \"                \\\"Stop serving boring snacks \\\\u2013 try these creepy-cute spider donuts for Halloween!\\\",\\n\",\n      \"                \\\"Upgrade your kid\\\\u2019s snacks with these adorable spider-themed donuts!\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"caption\\\": \\\"\\\\u039a\\\\u03b1\\\\u03b9 \\\\u03ba\\\\u03ac\\\\u03c0\\\\u03c9\\\\u03c2 \\\\u03ad\\\\u03c4\\\\u03c3\\\\u03b9 \\\\u03c4\\\\u03bf \\\\u03b2\\\\u03b1\\\\u03c1\\\\u03b5\\\\u03c4\\\\u03cc \\\\u03b1\\\\u03c0\\\\u03bf\\\\u03b3\\\\u03b5\\\\u03c5\\\\u03bc\\\\u03b1\\\\u03c4\\\\u03b9\\\\u03bd\\\\u03cc \\\\u03c3\\\\u03bd\\\\u03b1\\\\u03ba... \\\\u03bc\\\\u03b5\\\\u03c4\\\\u03b1\\\\u03bc\\\\u03bf\\\\u03c1\\\\u03c6\\\\u03ce\\\\u03bd\\\\u03b5\\\\u03c4\\\\u03b1\\\\u03b9 \\\\u03c3\\\\u03b5 \\\\u03b1\\\\u03c1\\\\u03b1\\\\u03c7\\\\u03bd\\\\u03bf-\\\\u03bd\\\\u03c4\\\\u03bf\\\\u03bd\\\\u03b1\\\\u03c4!!! \\\\u03a3\\\\u03bf\\\\u03cd\\\\u03c0\\\\u03b5\\\\u03c1 \\\\u03bd\\\\u03cc\\\\u03c3\\\\u03c4\\\\u03b9\\\\u03bc\\\\u03bf \\\\u03ba\\\\u03b1\\\\u03b9 \\\\u03b4\\\\u03b9\\\\u03b1\\\\u03c3\\\\u03ba\\\\u03b5\\\\u03b4\\\\u03b1\\\\u03c3\\\\u03c4\\\\u03b9\\\\u03ba\\\\u03cc!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts #\\\\u03b3\\\\u03b9\\\\u03b1_\\\\u03b5\\\\u03bd\\\\u03b1_\\\\u03bd\\\\u03b9\\\\u03ba\\\\u03bf\\\\u03bb\\\\u03b1_\\\\u03b3\\\\u03b9\\\\u03bd\\\\u03bf\\\\u03bd\\\\u03c4\\\\u03b1\\\\u03b9_\\\\u03bf\\\\u03bb\\\\u03b1 #greekmombloggerscommunity #greekbloggerscommunity #momblogger\\\",\\n\",\n      \"            \\\"description\\\": \\\"Transform your afternoon snack into a fun and delicious Halloween treat with spider-themed donuts!\\\",\\n\",\n      \"            \\\"virality_score\\\": 0,\\n\",\n      \"            \\\"engagement_score\\\": 0\\n\",\n      \"        },\\n\",\n      \"        {\\n\",\n      \"            \\\"hooks\\\": [\\n\",\n      \"                \\\"How to add more Halloween delight to your snack table!\\\",\\n\",\n      \"                \\\"Stop serving boring treats, try these cute Halloween snacks instead!\\\",\\n\",\n      \"                \\\"Looking for spooky yet adorable Halloween snacks? Check this out!\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"caption\\\": \\\"There are just so cute!! \\\\ud83c\\\\udf83\\\\ud83e\\\\udd87\\\",\\n\",\n      \"            \\\"description\\\": \\\"Discover adorable Halloween snacks perfect for your spooky celebration! \\\\ud83c\\\\udf83\\\\ud83e\\\\udd87\\\",\\n\",\n      \"            \\\"virality_score\\\": 0,\\n\",\n      \"            \\\"engagement_score\\\": 0\\n\",\n      \"        },\\n\",\n      \"        {\\n\",\n      \"            \\\"hooks\\\": [\\n\",\n      \"                \\\"Halloween snacks have never been easier than with these quick ideas!\\\",\\n\",\n      \"                \\\"Stop stressing over Halloween snacks; Rio Grande Supermarket has you covered!\\\",\\n\",\n      \"                \\\"I can't believe how easy these Halloween snack ideas are to make!\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"caption\\\": \\\"Get ready for a spooktacular Halloween with fun and easy snack ideas! \\\\ud83c\\\\udf83\\\\ud83d\\\\udc7b\\\\ud83e\\\\uddc1 Visit Rio Grande Supermarket to stock up on treats and ingredients for your Halloween party or trick-or-treaters. #HalloweenSnacks #RioGrandeSupermarket\\\",\\n\",\n      \"            \\\"description\\\": \\\"Discover delightful Halloween snack ideas that are perfect for kids and parties. Shop at Rio Grande Supermarket for all your spooky treat essentials, from cake mix to candies.\\\",\\n\",\n      \"            \\\"virality_score\\\": 0,\\n\",\n      \"            \\\"engagement_score\\\": 0\\n\",\n      \"        }\\n\",\n      \"    ],\\n\",\n      \"    \\\"summary\\\": [\\n\",\n      \"        {\\n\",\n      \"            \\\"code\\\": \\\"DByK3vHglSI\\\",\\n\",\n      \"            \\\"caption\\\": \\\"\\\\u062e\\\\u0648\\\\u0631\\\\u0627\\\\u06a9\\\\u06cc \\\\u0647\\\\u0627\\\\u0644\\\\u0648\\\\u06cc\\\\u0646\\\\u06cc \\\\u0628\\\\u0647 \\\\u0645\\\\u0646\\\\u0627\\\\u0633\\\\u0628\\\\u062a \\\\u0647\\\\u0627\\\\u0644\\\\u0648\\\\u06cc\\\\u0646\\\\ud83d\\\\udc7b\\\\ud83c\\\\udf83\\\\n\\\\n\\\\u0627\\\\u06af\\\\u0647 \\\\u062a\\\\u0648\\\\u0647\\\\u0645 \\\\u0639\\\\u0627\\\\u0634\\\\u0642 \\\\u0627\\\\u06cc\\\\u200c\\\\u0627\\\\u0633\\\\u200c\\\\u0627\\\\u0645\\\\u200c\\\\u0622\\\\u0631\\\\u06cc \\\\u067e\\\\u06cc\\\\u062c\\\\u0645\\\\u0648 \\\\u0627\\\\u0632 \\\\u062f\\\\u0633\\\\u062a \\\\u0646\\\\u062f\\\\u0647\\\\ud83d\\\\ude09\\\\ud83d\\\\udc47\\\\ud83c\\\\udffb\\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n@khatisaw_asmr \\\\n\\\\n#asmr #asmrartist #asmrfood #mukbang #halloween #halloween_snacks #happy #\\\\u0627\\\\u06cc\\\\u0627\\\\u0633\\\\u0627\\\\u0645\\\\u0627\\\\u0631 #\\\\u0627\\\\u06cc_\\\\u0627\\\\u0633_\\\\u0627\\\\u0645_\\\\u0622\\\\u0631 #\\\\u0627\\\\u06cc\\\\u0627\\\\u0633\\\\u0645\\\\u0627\\\\u0631 #\\\\u0647\\\\u0627\\\\u0644\\\\u0648\\\\u0648\\\\u06cc\\\\u0646\\\",\\n\",\n      \"            \\\"hashtags\\\": [\\n\",\n      \"                \\\"#asmr\\\",\\n\",\n      \"                \\\"#asmrartist\\\",\\n\",\n      \"                \\\"#asmrfood\\\",\\n\",\n      \"                \\\"#mukbang\\\",\\n\",\n      \"                \\\"#halloween\\\",\\n\",\n      \"                \\\"#halloween_snacks\\\",\\n\",\n      \"                \\\"#happy\\\",\\n\",\n      \"                \\\"#\\\\u0627\\\\u06cc\\\\u0627\\\\u0633\\\\u0627\\\\u0645\\\\u0627\\\\u0631\\\",\\n\",\n      \"                \\\"#\\\\u0627\\\\u06cc_\\\\u0627\\\\u0633_\\\\u0627\\\\u0645_\\\\u0622\\\\u0631\\\",\\n\",\n      \"                \\\"#\\\\u0627\\\\u06cc\\\\u0627\\\\u0633\\\\u0645\\\\u0627\\\\u0631\\\",\\n\",\n      \"                \\\"#\\\\u0647\\\\u0627\\\\u0644\\\\u0648\\\\u0648\\\\u06cc\\\\u0646\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"media_id\\\": 3490900471793734792,\\n\",\n      \"            \\\"username\\\": \\\"khatisaw_asmr\\\",\\n\",\n      \"            \\\"full_name\\\": \\\"ASMR | \\\\u062e\\\\u0627\\\\u0670\\\\u0637\\\\u0615\\\\u077a\\\\u08ee\\\\u200c\\\\u062b\\\\u0659\\\\u06db\\\\u0627\\\\u0670 | \\\\u0627\\\\u06cc \\\\u0627\\\\u0633 \\\\u0627\\\\u0645 \\\\u0622\\\\u0631\\\",\\n\",\n      \"            \\\"has_audio\\\": true,\\n\",\n      \"            \\\"audio_type\\\": \\\"original_sounds\\\",\\n\",\n      \"            \\\"like_count\\\": 15,\\n\",\n      \"            \\\"play_count\\\": 274,\\n\",\n      \"            \\\"comment_count\\\": 0,\\n\",\n      \"            \\\"reshare_count\\\": 0,\\n\",\n      \"            \\\"video_duration\\\": 36.942,\\n\",\n      \"            \\\"virality_score\\\": 0.0,\\n\",\n      \"            \\\"profile_pic_url\\\": \\\"https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/453733984_452269454314129_3660045369565868680_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=NttJL9SJqxgQ7kNvgGQiqD9&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFYbuJBdVM8hTF3I1sQRCGJDSWy1rtGknClMxNB7Wb8g&oe=67ABE9AD&_nc_sid=2011ad\\\",\\n\",\n      \"            \\\"engagement_score\\\": 0.05474452554744526\\n\",\n      \"        },\\n\",\n      \"        {\\n\",\n      \"            \\\"code\\\": \\\"CG7QNDNjazG\\\",\\n\",\n      \"            \\\"caption\\\": \\\"Ready! Set! Film!\\\\nKolejny filmik ju\\\\u017c w przygotowaniu \\\\ud83d\\\\udc7b\\\\n\\\\nNa planie nawet straszna Chupa czacha \\\\ud83d\\\\udc95 @chupachupspl\\\\n\\\\n#halloween #ytchannel #diy #chupachups #halloween_snacks #halloween_party #pumpkin\\\",\\n\",\n      \"            \\\"hashtags\\\": [\\n\",\n      \"                \\\"#halloween\\\",\\n\",\n      \"                \\\"#ytchannel\\\",\\n\",\n      \"                \\\"#diy\\\",\\n\",\n      \"                \\\"#chupachups\\\",\\n\",\n      \"                \\\"#halloween_snacks\\\",\\n\",\n      \"                \\\"#halloween_party\\\",\\n\",\n      \"                \\\"#pumpkin\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"media_id\\\": 2430607689442503878,\\n\",\n      \"            \\\"username\\\": \\\"4crazy_hands\\\",\\n\",\n      \"            \\\"full_name\\\": \\\"No Full Name Available\\\",\\n\",\n      \"            \\\"has_audio\\\": false,\\n\",\n      \"            \\\"audio_type\\\": \\\"No Audio Type Available\\\",\\n\",\n      \"            \\\"like_count\\\": 5,\\n\",\n      \"            \\\"play_count\\\": 0,\\n\",\n      \"            \\\"comment_count\\\": 0,\\n\",\n      \"            \\\"reshare_count\\\": 0,\\n\",\n      \"            \\\"video_duration\\\": 0,\\n\",\n      \"            \\\"virality_score\\\": 0,\\n\",\n      \"            \\\"profile_pic_url\\\": \\\"https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/122271405_3676949662369294_5352096118873851662_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=dO8fE8ZIN3MQ7kNvgEw_L10&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD688O9MqNvC3AWhO3YWANr_IJeDinBX8qovw7wEaiijQ&oe=67ABDE00&_nc_sid=2011ad\\\",\\n\",\n      \"            \\\"engagement_score\\\": 0\\n\",\n      \"        },\\n\",\n      \"        {\\n\",\n      \"            \\\"code\\\": \\\"BomPez0HE_n\\\",\\n\",\n      \"            \\\"caption\\\": \\\"\\\\u039a\\\\u03b1\\\\u03b9 \\\\u03ba\\\\u03ac\\\\u03c0\\\\u03c9\\\\u03c2 \\\\u03ad\\\\u03c4\\\\u03c3\\\\u03b9 \\\\u03c4\\\\u03bf \\\\u03b2\\\\u03b1\\\\u03c1\\\\u03b5\\\\u03c4\\\\u03cc \\\\u03b1\\\\u03c0\\\\u03bf\\\\u03b3\\\\u03b5\\\\u03c5\\\\u03bc\\\\u03b1\\\\u03c4\\\\u03b9\\\\u03bd\\\\u03cc \\\\u03c3\\\\u03bd\\\\u03b1\\\\u03ba... \\\\u03bc\\\\u03b5\\\\u03c4\\\\u03b1\\\\u03bc\\\\u03bf\\\\u03c1\\\\u03c6\\\\u03ce\\\\u03bd\\\\u03b5\\\\u03c4\\\\u03b1\\\\u03b9 \\\\u03c3\\\\u03b5 \\\\u03b1\\\\u03c1\\\\u03b1\\\\u03c7\\\\u03bd\\\\u03bf-\\\\u03bd\\\\u03c4\\\\u03bf\\\\u03bd\\\\u03b1\\\\u03c4!!! \\\\u03a3\\\\u03bf\\\\u03cd\\\\u03c0\\\\u03b5\\\\u03c1 \\\\u03bd\\\\u03cc\\\\u03c3\\\\u03c4\\\\u03b9\\\\u03bc\\\\u03bf \\\\u03ba\\\\u03b1\\\\u03b9 \\\\u03b4\\\\u03b9\\\\u03b1\\\\u03c3\\\\u03ba\\\\u03b5\\\\u03b4\\\\u03b1\\\\u03c3\\\\u03c4\\\\u03b9\\\\u03ba\\\\u03cc!! #halloween_kids #halloween_snacks #spider_donuts #cute_food #kids_snacks #donuts  #\\\\u03b3\\\\u03b9\\\\u03b1_\\\\u03b5\\\\u03bd\\\\u03b1_\\\\u03bd\\\\u03b9\\\\u03ba\\\\u03bf\\\\u03bb\\\\u03b1_\\\\u03b3\\\\u03b9\\\\u03bd\\\\u03bf\\\\u03bd\\\\u03c4\\\\u03b1\\\\u03b9_\\\\u03bf\\\\u03bb\\\\u03b1 #greekmombloggerscommunity #greekbloggerscommunity #momblogger\\\",\\n\",\n      \"            \\\"hashtags\\\": [\\n\",\n      \"                \\\"#halloween_kids\\\",\\n\",\n      \"                \\\"#halloween_snacks\\\",\\n\",\n      \"                \\\"#spider_donuts\\\",\\n\",\n      \"                \\\"#cute_food\\\",\\n\",\n      \"                \\\"#kids_snacks\\\",\\n\",\n      \"                \\\"#donuts\\\",\\n\",\n      \"                \\\"#\\\\u03b3\\\\u03b9\\\\u03b1_\\\\u03b5\\\\u03bd\\\\u03b1_\\\\u03bd\\\\u03b9\\\\u03ba\\\\u03bf\\\\u03bb\\\\u03b1_\\\\u03b3\\\\u03b9\\\\u03bd\\\\u03bf\\\\u03bd\\\\u03c4\\\\u03b1\\\\u03b9_\\\\u03bf\\\\u03bb\\\\u03b1\\\",\\n\",\n      \"                \\\"#greekmombloggerscommunity\\\",\\n\",\n      \"                \\\"#greekbloggerscommunity\\\",\\n\",\n      \"                \\\"#momblogger\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"media_id\\\": 1884261582018203623,\\n\",\n      \"            \\\"username\\\": \\\"elpida_touve\\\",\\n\",\n      \"            \\\"full_name\\\": \\\"Elpida Touve\\\",\\n\",\n      \"            \\\"has_audio\\\": false,\\n\",\n      \"            \\\"audio_type\\\": \\\"No Audio Type Available\\\",\\n\",\n      \"            \\\"like_count\\\": 77,\\n\",\n      \"            \\\"play_count\\\": 0,\\n\",\n      \"            \\\"comment_count\\\": 6,\\n\",\n      \"            \\\"reshare_count\\\": 0,\\n\",\n      \"            \\\"video_duration\\\": 0,\\n\",\n      \"            \\\"virality_score\\\": 0,\\n\",\n      \"            \\\"profile_pic_url\\\": \\\"https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/475820641_405922235900340_3354549167503917651_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=BJ5jjgI1S1wQ7kNvgEa8cis&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAQ2PldBSkgIil_veixaVS6a6ZRgs1k_fmg9-2Jer3lYQ&oe=67ABC61E&_nc_sid=2011ad\\\",\\n\",\n      \"            \\\"engagement_score\\\": 0\\n\",\n      \"        },\\n\",\n      \"        {\\n\",\n      \"            \\\"code\\\": \\\"CG9i8GshD7I\\\",\\n\",\n      \"            \\\"caption\\\": \\\"There are just so cute!! \\\\ud83c\\\\udf83\\\\ud83e\\\\udd87\\\\n\\\\n#halloween\\\\n#halloween_costume\\\\n#halloween_snacks\\\",\\n\",\n      \"            \\\"hashtags\\\": [\\n\",\n      \"                \\\"#halloween\\\",\\n\",\n      \"                \\\"#halloween_costume\\\",\\n\",\n      \"                \\\"#halloween_snacks\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"media_id\\\": 2431253037789232840,\\n\",\n      \"            \\\"username\\\": \\\"life.by_a\\\",\\n\",\n      \"            \\\"full_name\\\": \\\"No Full Name Available\\\",\\n\",\n      \"            \\\"has_audio\\\": false,\\n\",\n      \"            \\\"audio_type\\\": \\\"No Audio Type Available\\\",\\n\",\n      \"            \\\"like_count\\\": 46,\\n\",\n      \"            \\\"play_count\\\": 0,\\n\",\n      \"            \\\"comment_count\\\": 8,\\n\",\n      \"            \\\"reshare_count\\\": 0,\\n\",\n      \"            \\\"video_duration\\\": 0,\\n\",\n      \"            \\\"virality_score\\\": 0,\\n\",\n      \"            \\\"profile_pic_url\\\": \\\"https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/231734336_1025030578256388_2356445558213588438_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=6WsYnjkiAyYQ7kNvgG_3UvF&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTL2ZatiNXGYsh4b00nQhUxAAmfVMUZ2geexXJvD5skw&oe=67ABE3E3&_nc_sid=2011ad\\\",\\n\",\n      \"            \\\"engagement_score\\\": 0\\n\",\n      \"        },\\n\",\n      \"        {\\n\",\n      \"            \\\"code\\\": \\\"B4KreEynrxE\\\",\\n\",\n      \"            \\\"caption\\\": \\\"Halloween is just around the corner and you could create some fun party snacks with the kids or for your guests. \\\\nCome in to Rio Grande Supermarket and get your ingredients for all the spooktacular snacks. Buy extra candy for the trick-or-treaters.\\\\n\\\\nShurfine Cake Mix ASSORTED 16.5 OZ. 70\\\\u00a2\\\\nMazola Cooking Oil SELECT VARIETY 40 OZ. 2 FOR $5\\\\nLay\\\\u2019s or Wavy Lay\\\\u2019s 2 FOR $4\\\\nBuffalo Style Wing Sections $3.38 LB .\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n.\\\\n\\\\n#mondaymorning #happymonday #mondaymood #riograndesupermarket #canutillosupermarket #grocerystore #canutillobusiness #iamelpaso #elpasotx #itsallgoodep #recipeshoppinglist #halloweensnackideas #snackideasforkids #halloweentime #halloweenpartyideas #halloween_cupcakes #halloween_snacks #snacksforhalloween\\\",\\n\",\n      \"            \\\"hashtags\\\": [\\n\",\n      \"                \\\"#mondaymorning\\\",\\n\",\n      \"                \\\"#happymonday\\\",\\n\",\n      \"                \\\"#mondaymood\\\",\\n\",\n      \"                \\\"#riograndesupermarket\\\",\\n\",\n      \"                \\\"#canutillosupermarket\\\",\\n\",\n      \"                \\\"#grocerystore\\\",\\n\",\n      \"                \\\"#canutillobusiness\\\",\\n\",\n      \"                \\\"#iamelpaso\\\",\\n\",\n      \"                \\\"#elpasotx\\\",\\n\",\n      \"                \\\"#itsallgoodep\\\",\\n\",\n      \"                \\\"#recipeshoppinglist\\\",\\n\",\n      \"                \\\"#halloweensnackideas\\\",\\n\",\n      \"                \\\"#snackideasforkids\\\",\\n\",\n      \"                \\\"#halloweentime\\\",\\n\",\n      \"                \\\"#halloweenpartyideas\\\",\\n\",\n      \"                \\\"#halloween_cupcakes\\\",\\n\",\n      \"                \\\"#halloween_snacks\\\",\\n\",\n      \"                \\\"#snacksforhalloween\\\"\\n\",\n      \"            ],\\n\",\n      \"            \\\"media_id\\\": 2164733753633455172,\\n\",\n      \"            \\\"username\\\": \\\"riograndesupermarket\\\",\\n\",\n      \"            \\\"full_name\\\": \\\"Rio Grande Supermarket\\\",\\n\",\n      \"            \\\"has_audio\\\": true,\\n\",\n      \"            \\\"audio_type\\\": \\\"No Audio Type Available\\\",\\n\",\n      \"            \\\"like_count\\\": 8,\\n\",\n      \"            \\\"play_count\\\": 0,\\n\",\n      \"            \\\"comment_count\\\": 0,\\n\",\n      \"            \\\"reshare_count\\\": 0,\\n\",\n      \"            \\\"video_duration\\\": 15.0,\\n\",\n      \"            \\\"virality_score\\\": 0,\\n\",\n      \"            \\\"profile_pic_url\\\": \\\"https://scontent-ber1-1.cdninstagram.com/v/t51.2885-19/21909505_2012064525693566_3455111339192614912_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-ber1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEKdi-I6QB8SHWB7BLD2f1CqU7ByVRk8LfrAz0fC-vqEgArXFJwvDMXefsegR_NGjA&_nc_ohc=myA3c6JjKckQ7kNvgHiHwfB&_nc_gid=139340752f7c43428a918be99459fce9&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx7dSZqcDmnemLgDaWR4YhVFRz9blBP-lcZU2gbkTiBQ&oe=67ABD6D3&_nc_sid=2011ad\\\",\\n\",\n      \"            \\\"engagement_score\\\": 0\\n\",\n      \"        }\\n\",\n      \"    ]\\n\",\n      \"}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import json\\n\",\n    \"response = client.executions.transitions.list(execution_id=execution.id).items[0].output\\n\",\n    \"print(json.dumps(response, indent=4))\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/05-video-processing-with-natural-language.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install --upgrade julep --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import uuid\\n\",\n    \"\\n\",\n    \"# NOTE: these UUIDs are used in order not to use the `create_or_update` methods instead of\\n\",\n    \"# the `create` methods for the sake of not creating new resources every time a cell is run.\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## creating julep client with the api key\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"JULEP_API_KEY = os.environ.get(\\\"JULEP_API_KEY\\\")\\n\",\n    \"\\n\",\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=JULEP_API_KEY, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Create agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=\\\"Spiderman\\\",\\n\",\n    \"    about=\\\"AI that can crawl the web and extract data\\\",\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 218,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"\\n\",\n    \"cloudinary_api_key = os.environ[\\\"CLOUDINARY_API_KEY\\\"]\\n\",\n    \"cloudinary_api_secret = os.environ[\\\"CLOUDINARY_API_SECRET\\\"]\\n\",\n    \"cloudinary_cloud_name = os.environ[\\\"CLOUDINARY_CLOUD_NAME\\\"]\\n\",\n    \"\\n\",\n    \"# Define the task\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: Julep Video Processing With Natural Language\\n\",\n    \"description: Process a video using natural language instructions\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### INPUT SCHEMA ###################\\n\",\n    \"########################################################\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    video_url:\\n\",\n    \"      type: string\\n\",\n    \"      description: The url of the file to upload\\n\",\n    \"    public_id:\\n\",\n    \"      type: string\\n\",\n    \"      description: The public id of the file to upload\\n\",\n    \"    transformation_prompt:\\n\",\n    \"      type: string\\n\",\n    \"      description: The prompt for the transformations to apply to the file\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ##########################\\n\",\n    \"########################################################\\n\",\n    \"                          \\n\",\n    \"# Define the tools that the task will use in this workflow\\n\",\n    \"tools:\\n\",\n    \"- name: cloudinary_upload\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: cloudinary\\n\",\n    \"    method: media_upload\\n\",\n    \"    setup:\\n\",\n    \"      cloudinary_api_key: \\\"{cloudinary_api_key}\\\"\\n\",\n    \"      cloudinary_api_secret: \\\"{cloudinary_api_secret}\\\"\\n\",\n    \"      cloudinary_cloud_name: \\\"{cloudinary_cloud_name}\\\"\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### MAIN WORKFLOW ##################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"# Step 0: Upload the video to cloudinary\\n\",\n    \"- tool: cloudinary_upload\\n\",\n    \"  arguments:\\n\",\n    \"    file: $ steps[0].input.video_url\\n\",\n    \"    public_id: $ steps[0].input.public_id\\n\",\n    \"    upload_params:\\n\",\n    \"      resource_type: video\\n\",\n    \"\\n\",\n    \"# Step 1: Generate the transformation json\\n\",\n    \"- prompt:\\n\",\n    \"  - role: user\\n\",\n    \"    content:\\n\",\n    \"\\n\",\n    \"      - type: text\\n\",\n    \"        text: |-\\n\",\n    \"          You are a Cloudinary expert. You are given a medial url. it might be an image or a video.\\n\",\n    \"          You need to come up with a json of transformations to apply to the given media.\\n\",\n    \"          Overall the json could have multiple transformation json objects.\\n\",\n    \"          Each transformation json object can have the multiple key value pairs.\\n\",\n    \"          Each key value pair should have the key as the transformation name like \\\"aspect_ratio\\\", \\\"crop\\\", \\\"width\\\" etc and the value as the transformation parameter value.\\n\",\n    \"          Note: Provide the image url as it is when overlaying images.\\n\",\n    \"          Note: When you use overlay with an image url, you need to add a nested json containing url: <image_url>\\n\",\n    \"          Given below is an example of some key value pairs that you might need to use when constructing the json.\\n\",\n    \"            \\\"aspect_ratio\\\": \\\"1.0\\\",\\n\",\n    \"              \\\"width\\\": \\\"250\\\",\\n\",\n    \"              \\\"fetch_format\\\": \\\"auto\\\"\\n\",\n    \"              \\\"overlay\\\":\\n\",\n    \"                \\\"url\\\": \\\"<image_url>\\\"\\n\",\n    \"              \\\"flags\\\": \\\"layer_apply\\\"\\n\",\n    \"            \\n\",\n    \"         \\n\",\n    \"      - type: image_url\\n\",\n    \"        image_url:\\n\",\n    \"          url: $ _.url\\n\",\n    \"\\n\",\n    \"      - type: text\\n\",\n    \"        text: |-\\n\",\n    \"          $ f'''Hey, check the video above, I need to apply the following transformations using cloudinary.\\n\",\n    \"          {{steps[0].input.transformation_prompt}}'''\\n\",\n    \"\\n\",\n    \"  unwrap: true\\n\",\n    \"  settings:\\n\",\n    \"    model: gemini/gemini-1.5-pro\\n\",\n    \"\\n\",\n    \"# Step 2: Extract the json from the model's response\\n\",\n    \"- evaluate:\\n\",\n    \"    model_transformation: >-\\n\",\n    \"      $ extract_json(_)\\n\",\n    \"\\n\",\n    \"# Step 3: Upload the video to cloudinary\\n\",\n    \"- tool: cloudinary_upload\\n\",\n    \"  arguments:\\n\",\n    \"    file: $ steps[0].input.video_url\\n\",\n    \"    public_id: $ steps[0].input.public_id\\n\",\n    \"    upload_params:\\n\",\n    \"      transformation: $ _.model_transformation\\n\",\n    \"      resource_type: video\\n\",\n    \"\\n\",\n    \"# Step 4: Return the transformed video url\\n\",\n    \"- evaluate:\\n\",\n    \"    transformed_video_url: $ _.url\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 219,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating the task object\\n\",\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 220,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"'067ffb5c-1240-7967-8000-a40019c3084d'\"\n      ]\n     },\n     \"execution_count\": 220,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# creating an execution object\\n\",\n    \"transformation_prompt = \\\"\\\"\\\"\\n\",\n    \"1- I want to add an overlay an the following image to the video, and apply a layer apply flag also. Here's the image url:\\n\",\n    \"https://avatars.githubusercontent.com/u/112750682?s=200&v=4\\n\",\n    \"\\n\",\n    \"2- I also want you to to blur the video, and add a fade in and fade out effect to the video with a duration of 3 seconds each.\\n\",\n    \"\\\"\\\"\\\"\\n\",\n    \"\\n\",\n    \"input_video_url = \\\"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4\\\"\\n\",\n    \"\\n\",\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    input={\\n\",\n    \"        \\\"video_url\\\":  input_video_url,\\n\",\n    \"        \\\"public_id\\\": \\\"video_test2\\\",\\n\",\n    \"        \\\"transformation_prompt\\\": transformation_prompt,\\n\",\n    \"    }\\n\",\n    \")\\n\",\n    \"execution.id\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Checking execution details and output\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 221,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{'url': 'https://res.cloudinary.com/dpnjjk8mb/video/upload/v1738934100/video_test2.mp4', 'base64': None, 'meta_data': {'url': 'http://res.cloudinary.com/dpnjjk8mb/video/upload/v1738934100/video_test2.mp4', 'tags': [], 'type': 'upload', 'audio': {'codec': 'aac', 'bit_rate': '191999', 'channels': 2, 'frequency': 44100, 'channel_layout': 'stereo'}, 'bytes': 2252313, 'video': {'codec': 'h264', 'level': 31, 'profile': 'High', 'bit_rate': '1002377', 'time_base': '1/48', 'pix_format': 'yuv420p'}, 'width': 1280, 'format': 'mp4', 'height': 720, 'api_key': '518455844981529', 'version': 1738934100, 'asset_id': '069d70c84e88ee9293a1d753b3ca3898', 'bit_rate': 1197518, 'duration': 15.046531, 'existing': True, 'is_audio': False, 'rotation': 0, 'nb_frames': 361, 'signature': '836eddb515d796dc8484d7dc108cb67fbe0ba1d5', 'created_at': '2024-11-20T08:55:44Z', 'frame_rate': 24.0, 'version_id': '85846ee1c860645e1149e8029051c07d', 'placeholder': False, 'asset_folder': '', 'display_name': 'video_test2', 'playback_url': 'https://res.cloudinary.com/dpnjjk8mb/video/upload/sp_auto/v1738934100/video_test2.m3u8', 'resource_type': 'video'}, 'public_id': 'video_test2'}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Get execution details\\n\",\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"# Print the output\\n\",\n    \"print(execution.output)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 242,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Transition type:  init\\n\",\n      \"Transition output:  {'public_id': 'video_test2', 'video_url': 'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4', 'transformation_prompt': \\\"\\\\n1- I want to add an overlay an the following image to the video, and apply a layer apply flag also. Here's the image url:\\\\nhttps://avatars.githubusercontent.com/u/112750682?s=200&v=4\\\\n\\\\n2- I also want you to to blur the video, and add a fade in and fade out effect to the video with a duration of 3 seconds each.\\\\n\\\"}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'url': 'https://res.cloudinary.com/dpnjjk8mb/video/upload/v1738934100/video_test2.mp4', 'base64': None, 'meta_data': {'url': 'http://res.cloudinary.com/dpnjjk8mb/video/upload/v1738934100/video_test2.mp4', 'tags': [], 'type': 'upload', 'audio': {'codec': 'aac', 'bit_rate': '191999', 'channels': 2, 'frequency': 44100, 'channel_layout': 'stereo'}, 'bytes': 2252313, 'video': {'codec': 'h264', 'level': 31, 'profile': 'High', 'bit_rate': '1002377', 'time_base': '1/48', 'pix_format': 'yuv420p'}, 'width': 1280, 'format': 'mp4', 'height': 720, 'api_key': '518455844981529', 'version': 1738934100, 'asset_id': '069d70c84e88ee9293a1d753b3ca3898', 'bit_rate': 1197518, 'duration': 15.046531, 'existing': True, 'is_audio': False, 'rotation': 0, 'nb_frames': 361, 'signature': '836eddb515d796dc8484d7dc108cb67fbe0ba1d5', 'created_at': '2024-11-20T08:55:44Z', 'frame_rate': 24.0, 'version_id': '85846ee1c860645e1149e8029051c07d', 'placeholder': False, 'asset_folder': '', 'display_name': 'video_test2', 'playback_url': 'https://res.cloudinary.com/dpnjjk8mb/video/upload/sp_auto/v1738934100/video_test2.m3u8', 'resource_type': 'video'}, 'public_id': 'video_test2'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  Sure, here's the JSON representation of the Cloudinary transformations you requested to apply to your video:\\n\",\n      \"\\n\",\n      \"```json\\n\",\n      \"[\\n\",\n      \"  {\\n\",\n      \"    \\\"overlay\\\": {\\n\",\n      \"      \\\"url\\\": \\\"https://avatars.githubusercontent.com/u/112750682?s=200&v=4\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"flags\\\": \\\"layer_apply\\\"\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"effect\\\": \\\"blur:100\\\" \\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"effect\\\": \\\"fade:3000\\\"\\n\",\n      \"  },\\n\",\n      \"   {\\n\",\n      \"     \\\"effect\\\": \\\"fade:-3000\\\"\\n\",\n      \"   }\\n\",\n      \"]\\n\",\n      \"```\\n\",\n      \"\\n\",\n      \"**Explanation:**\\n\",\n      \"\\n\",\n      \"* **Overlay:** The `overlay` parameter specifies the image to be overlaid on the video. The nested `url` object provides the URL of the overlay image. The `flags: \\\"layer_apply\\\"` ensures that the transformations are applied to the overlay image and not to the base video.\\n\",\n      \"\\n\",\n      \"* **Blur:**  The `effect: \\\"blur:100\\\"` applies a blur effect to the video. The value `100` represents the blur strength. You can adjust this value to control the intensity of the blur.\\n\",\n      \"\\n\",\n      \"* **Fade In and Fade Out:** The `effect: \\\"fade:3000\\\"` and the `effect: \\\"fade:-3000\\\"` applies the fade-in and fade-out effects to the video for the start and ending respectively, both having a duration of 3 seconds (3000 milliseconds).\\n\",\n      \"\\n\",\n      \"\\n\",\n      \"You can apply these transformations by including them in the delivery URL of your video in Cloudinary's Dynamic Image Manipulation syntax.  The order of transformations in the JSON array matters; they are applied sequentially. If the transformation is not being applied check whether you have provided a video url or an image url to Cloudinary and modify the transformation array if needed.\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'model_transformation': [{'flags': 'layer_apply', 'overlay': {'url': 'https://avatars.githubusercontent.com/u/112750682?s=200&v=4'}}, {'effect': 'blur:100'}, {'effect': 'fade:3000'}, {'effect': 'fade:-3000'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'url': 'https://res.cloudinary.com/dpnjjk8mb/video/upload/v1744811467/video_test2.mp4', 'base64': None, 'meta_data': {'url': 'http://res.cloudinary.com/dpnjjk8mb/video/upload/v1744811467/video_test2.mp4', 'etag': 'a4dccd7720185599448773735e49ad8a', 'tags': [], 'type': 'upload', 'audio': {'codec': 'aac', 'bit_rate': '128290', 'channels': 2, 'frequency': 44100, 'channel_layout': 'stereo'}, 'bytes': 1100622, 'pages': 0, 'video': {'codec': 'h264', 'level': 31, 'profile': 'High', 'bit_rate': '450256', 'time_base': '1/12288', 'pix_format': 'yuv420p'}, 'width': 1280, 'format': 'mp4', 'height': 720, 'api_key': '518455844981529', 'version': 1744811467, 'asset_id': '069d70c84e88ee9293a1d753b3ca3898', 'bit_rate': 585203, 'duration': 15.046009, 'is_audio': False, 'rotation': 0, 'nb_frames': 361, 'signature': '0f965ee84e69beacefff7b9e285bb621884109af', 'created_at': '2024-11-20T08:55:44Z', 'frame_rate': 24.0, 'version_id': '637b3869e172dad6380706279cb32f02', 'overwritten': True, 'placeholder': False, 'asset_folder': '', 'display_name': 'video_test2', 'playback_url': 'https://res.cloudinary.com/dpnjjk8mb/video/upload/sp_auto/v1744811467/video_test2.m3u8', 'resource_type': 'video', 'original_filename': 'ForBiggerMeltdowns'}, 'public_id': 'video_test2'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition type:  finish\\n\",\n      \"Transition output:  {'transformed_video_url': 'https://res.cloudinary.com/dpnjjk8mb/video/upload/v1744811467/video_test2.mp4'}\\n\",\n      \"--------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Lists all the task steps that have been executed up to this point in time\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"# Transitions are retrieved in reverse chronological order\\n\",\n    \"for transition in reversed(transitions):\\n\",\n    \"    print(\\\"Transition type: \\\", transition.type)\\n\",\n    \"    print(\\\"Transition output: \\\", transition.output)\\n\",\n    \"    print(\\\"-\\\"*50)\\n\",\n    \"\\n\",\n    \"if transitions[0].type == \\\"finish\\\":\\n\",\n    \"    transformed_video_url = transitions[0].output['transformed_video_url']\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)lep.ai/concepts/tasks)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/06-browser-use.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install julep -U --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Global UUID is generated for agent and task\\n\",\n    \"import uuid\\n\",\n    \"\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4() \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## creating julep client with the api key\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"api_key = os.getenv(\\\"JULEP_API_KEY\\\")\\n\",\n    \"\\n\",\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=api_key, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Defining the agent\\n\",\n    \"name = \\\"Browser Use Assistant\\\"\\n\",\n    \"about = \\\"an assistant that can interact with a web browser to perform tasks on behalf of users.\\\"\\n\",\n    \"\\n\",\n    \"# Create the agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=name,\\n\",\n    \"    about=about,\\n\",\n    \"    model=\\\"claude-3.5-sonnet-20241022\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an an \\\"tool\\\"\\n\",\n    \"\\n\",\n    \"Tools are the object which define the actions that the agent can perform.\\n\",\n    \"\\n\",\n    \"To learn more about the tools, please refer to the Tools section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tools).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Adding the tools to the agent\\n\",\n    \"try:\\n\",\n    \"    client.agents.tools.create(\\n\",\n    \"        agent_id=AGENT_UUID,\\n\",\n    \"        **{\\n\",\n    \"            \\\"name\\\": \\\"computer\\\",\\n\",\n    \"            \\\"type\\\": \\\"computer_20241022\\\",\\n\",\n    \"            \\\"computer_20241022\\\": {\\n\",\n    \"                \\\"display_height_px\\\": 768,\\n\",\n    \"                \\\"display_width_px\\\": 1024,\\n\",\n    \"                \\\"display_number\\\": 1,\\n\",\n    \"            },\\n\",\n    \"        }\\n\",\n    \"    )\\n\",\n    \"except Exception as e:\\n\",\n    \"    print(\\\"Already added\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"browserbase_api_key = os.getenv(\\\"BROWSERBASE_API_KEY\\\")\\n\",\n    \"browserbase_project_id = os.getenv(\\\"BROWSERBASE_PROJECT_ID\\\")\\n\",\n    \"\\n\",\n    \"# Defining the task\\n\",\n    \"task_def = yaml.safe_load('''\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: computer-use-task\\n\",\n    \"description: A task that uses a computer to navigate the web.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### INPUT SCHEMA #######################\\n\",\n    \"########################################################\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    goal:\\n\",\n    \"      type: string\\n\",\n    \"  required:\\n\",\n    \"    - goal\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ##########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"tools:\\n\",\n    \"- name: create_browserbase_session\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: browserbase\\n\",\n    \"    method: create_session\\n\",\n    \"    setup:\\n\",\n    \"      api_key: \\\"YOUR_BROWSERBASE_API_KEY\\\"\\n\",\n    \"      project_id: \\\"YOUR_BROWSERBASE_PROJECT_ID\\\"\\n\",\n    \"\\n\",\n    \"- name: get_session_view_urls\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: browserbase\\n\",\n    \"    method: get_live_urls\\n\",\n    \"    setup:\\n\",\n    \"      api_key: \\\"YOUR_BROWSERBASE_API_KEY\\\"\\n\",\n    \"      project_id: \\\"YOUR_BROWSERBASE_PROJECT_ID\\\"\\n\",\n    \"\\n\",\n    \"- name: perform_browser_action\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: remote_browser\\n\",\n    \"    method: perform_action\\n\",\n    \"    setup:\\n\",\n    \"      width: 1024\\n\",\n    \"      height: 768\\n\",\n    \"\\n\",\n    \"- name: create_julep_session\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: session\\n\",\n    \"    operation: create\\n\",\n    \"\\n\",\n    \"- name: session_chat\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: session\\n\",\n    \"    operation: chat\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### MAIN WORKFLOW ######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"\\n\",\n    \"# Step #0 - Create Julep Session\\n\",\n    \"- tool: create_julep_session\\n\",\n    \"  arguments:\\n\",\n    \"    agent: $ str(agent.id)\\n\",\n    \"    situation: \\\"Juelp Browser Use Agent\\\"\\n\",\n    \"    recall: 'False'\\n\",\n    \"\\n\",\n    \"# Step #1 - Store Julep Session ID\\n\",\n    \"- evaluate:\\n\",\n    \"    julep_session_id: $ _.id\\n\",\n    \"\\n\",\n    \"# Step #2 - Create Browserbase Session\\n\",\n    \"- tool: create_browserbase_session\\n\",\n    \"  arguments:\\n\",\n    \"    project_id: \\\"c35ee022-883e-4070-9f3c-89607393214b\\\"\\n\",\n    \"\\n\",\n    \"# Step #3 - Store Browserbase Session Info\\n\",\n    \"- evaluate:\\n\",\n    \"    browser_session_id: $ _.id\\n\",\n    \"    connect_url: $ _.connect_url\\n\",\n    \"\\n\",\n    \"# Step #4 - Get Session View URLs\\n\",\n    \"- tool: get_session_view_urls\\n\",\n    \"  arguments:\\n\",\n    \"    id: $ _.browser_session_id\\n\",\n    \"\\n\",\n    \"# Step #5 - Store Debugger URL\\n\",\n    \"- evaluate:\\n\",\n    \"    debugger_url: $ _.urls.debuggerUrl\\n\",\n    \"\\n\",\n    \"# Step #6 - Navigate to Google\\n\",\n    \"# Navigate to google to avoid sending a blank \\n\",\n    \"# screenshot when computer use starts\\n\",\n    \"- tool: perform_browser_action\\n\",\n    \"  arguments:\\n\",\n    \"    connect_url: $ steps[3].output.connect_url\\n\",\n    \"    action: \\\"navigate\\\"\\n\",\n    \"    text: \\\"https://www.google.com\\\"\\n\",\n    \"\\n\",\n    \"# Step #7 - Run Browser Workflow\\n\",\n    \"- workflow: run_browser\\n\",\n    \"  arguments:\\n\",\n    \"    julep_session_id: $ steps[1].output.julep_session_id\\n\",\n    \"    cdp_url: $ steps[3].output.connect_url\\n\",\n    \"    messages:\\n\",\n    \"    - role: \\\"user\\\"\\n\",\n    \"      content: |-\\n\",\n    \"        $ f\\\"\\\"\\\"\\n\",\n    \"        <SYSTEM_CAPABILITY>\\n\",\n    \"        * You are utilising a headless chrome browser to interact with the internet.\\n\",\n    \"        * You can use the computer tool to interact with the browser.\\n\",\n    \"        * You have access to only the browser.\\n\",\n    \"        * You are already inside the browser.\\n\",\n    \"        * You can't open new tabs or windows.\\n\",\n    \"        * For now, rely on screenshots as the only way to see the browser.\\n\",\n    \"        * You don't have access to the browser's UI.\\n\",\n    \"        * YOU CANNOT WRITE TO THE SEARCH BAR OF THE BROWSER.\\n\",\n    \"        </SYSTEM_CAPABILITY>\\n\",\n    \"        <GOAL>\\n\",\n    \"        * + {steps[0].input.goal} + NEWLINE + </GOAL> \\\"\\\"\\\"\\n\",\n    \"    workflow_label: \\\"run_browser\\\" # <----- REMOVE THIS\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################# RUN BROWSER SUBWORKFLOW ##############\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"run_browser:\\n\",\n    \"\\n\",\n    \"# Step #0 - Agent Interaction\\n\",\n    \"- tool: session_chat\\n\",\n    \"  arguments:\\n\",\n    \"    session_id: $ _.julep_session_id\\n\",\n    \"    messages: $ _.messages\\n\",\n    \"    recall: $ False\\n\",\n    \"\\n\",\n    \"# Step #1 - Evaluate the response from the agent\\n\",\n    \"- evaluate:\\n\",\n    \"    content: $ _.choices[0].message.content\\n\",\n    \"    tool_calls: |-\\n\",\n    \"      $ [ \\n\",\n    \"        { \\n\",\n    \"          'tool_call_id': tool_call.id, \\n\",\n    \"          'action': load_json(tool_call.function.arguments)['action'], \\n\",\n    \"          'text': load_json(tool_call.function.arguments).get('text'), \\n\",\n    \"          'coordinate': load_json(tool_call.function.arguments).get('coordinate') \\n\",\n    \"        } \\n\",\n    \"        for tool_call in _.choices[0].message.tool_calls or [] if tool_call.type == 'function']\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"# Step #2 - Perform the actions requested by the agent\\n\",\n    \"- foreach:\\n\",\n    \"    in: $ _.tool_calls\\n\",\n    \"    do:\\n\",\n    \"      tool: perform_browser_action\\n\",\n    \"      arguments:\\n\",\n    \"        connect_url: $ steps[0].input.cdp_url\\n\",\n    \"        action: $ _.action if not (str(_.get('text', '')).startswith('http') and _.action == 'type') else 'navigate'\\n\",\n    \"        text: $ _.get('text')\\n\",\n    \"        coordinate: $ _.get('coordinate')\\n\",\n    \"\\n\",\n    \"# Step #3 - Convert the result of the actions into a chat message\\n\",\n    \"- evaluate:\\n\",\n    \"    contents: >-\\n\",\n    \"      $ [ \\\\\\n\",\n    \"        { \\\\\\n\",\n    \"          'type': 'image_url', \\\\\\n\",\n    \"          'image_url': { \\\\\\n\",\n    \"            'url': result['base64_image'], \\\\\\n\",\n    \"          } \\\\\\n\",\n    \"        } if result['base64_image'] is not None else \\\\\\n\",\n    \"        { \\\\\\n\",\n    \"          'type': 'text', \\\\\\n\",\n    \"          'text': result['output'] if result['output'] is not None else 'done' \\\\\\n\",\n    \"        } \\\\\\n\",\n    \"        for result in _]\\n\",\n    \"\\n\",\n    \"# Step #4 - Convert the result of the actions into a chat message\\n\",\n    \"- evaluate:\\n\",\n    \"    messages: \\\"$ [{'content': [_.contents[i]], 'role': 'tool', 'name': 'computer', 'tool_call_id': steps[1].output.tool_calls[i].tool_call_id} for i in range(len(_.contents))]\\\"\\n\",\n    \"\\n\",\n    \"# Step #5 - Check if the goal is achieved and recursively run the browser\\n\",\n    \"- workflow: check_goal_status\\n\",\n    \"  arguments:\\n\",\n    \"    messages: $ _.messages\\n\",\n    \"    julep_session_id: $ steps[0].input.julep_session_id\\n\",\n    \"    cdp_url: $ steps[0].input.cdp_url\\n\",\n    \"    workflow_label: \\\"check_goal_status\\\" \\n\",\n    \"\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"############## CHECK GOAL STATUS SUBWORKFLOW ##############\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"check_goal_status:\\n\",\n    \"\\n\",\n    \"# Step #0 - Check if the goal is achieved and recursively run the browser\\n\",\n    \"- if: $ len(_.messages) > 0\\n\",\n    \"  then:\\n\",\n    \"    workflow: run_browser\\n\",\n    \"    arguments:\\n\",\n    \"      messages: $ _.messages\\n\",\n    \"      julep_session_id: $ _.julep_session_id\\n\",\n    \"      cdp_url: $ _.cdp_url\\n\",\n    \"      workflow_label: \\\"run_browser\\\" \\n\",\n    \"''')\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating the task object\\n\",\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def,\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Started an execution. Execution ID: 0683064e-362b-7b1b-8000-6ada185329ea\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=task.id,\\n\",\n    \"     input={\\n\",\n    \"        \\\"agent_id\\\": str(AGENT_UUID),\\n\",\n    \"        \\\"goal\\\": \\\"Navigate to JulepAI's Github repository and tell me the number of stars it has. Remember bro, the link for julep's repository is https://github.com/julep-ai/julep\\\",\\n\",\n    \"        }\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"print(\\\"Started an execution. Execution ID:\\\", execution.id)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Checking execution details and output\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Transtion Index:  0\\n\",\n      \"Transition Type:  init\\n\",\n      \"{'agent_id': '5502720b-cab1-481b-8750-a5ea04c1814f',\\n\",\n      \" 'goal': \\\"Navigate to JulepAI's Github repository and tell me the number of \\\"\\n\",\n      \"         \\\"stars it has. Remember bro, the link for julep's repository is \\\"\\n\",\n      \"         'https://github.com/julep-ai/julep'}\\n\",\n      \"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\\n\",\n      \"Transtion Index:  1\\n\",\n      \"Transition Type:  step\\n\",\n      \"{'auto_run_tools': False,\\n\",\n      \" 'context_overflow': None,\\n\",\n      \" 'created_at': '2025-05-23T12:07:00.327671Z',\\n\",\n      \" 'forward_tool_calls': False,\\n\",\n      \" 'id': '0683064e-453d-77ed-8000-3ba4d4b3b53d',\\n\",\n      \" 'kind': None,\\n\",\n      \" 'metadata': {},\\n\",\n      \" 'recall_options': {'confidence': 0.5,\\n\",\n      \"                    'lang': 'en-US',\\n\",\n      \"                    'limit': 10,\\n\",\n      \"                    'max_query_length': 1000,\\n\",\n      \"                    'metadata_filter': {},\\n\",\n      \"                    'mmr_strength': 0.5,\\n\",\n      \"                    'mode': 'vector',\\n\",\n      \"                    'num_search_messages': 4},\\n\",\n      \" 'render_templates': True,\\n\",\n      \" 'situation': 'Juelp Browser Use Agent',\\n\",\n      \" 'summary': None,\\n\",\n      \" 'system_template': None,\\n\",\n      \" 'token_budget': None,\\n\",\n      \" 'updated_at': '2025-05-23T12:07:00.327671Z'}\\n\",\n      \"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\\n\",\n      \"Transtion Index:  2\\n\",\n      \"Transition Type:  step\\n\",\n      \"{'julep_session_id': '0683064e-453d-77ed-8000-3ba4d4b3b53d'}\\n\",\n      \"----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import pprint\\n\",\n    \"import time\\n\",\n    \"\\n\",\n    \"def reformat_output(output):\\n\",\n    \"    if isinstance(output, dict):\\n\",\n    \"        for key, value in output.items():\\n\",\n    \"            if (key == \\\"base64_image\\\" or key == \\\"url\\\") and value is not None:\\n\",\n    \"                output[key] = value[:20] + '...'\\n\",\n    \"            else:\\n\",\n    \"                output[key] = reformat_output(value)\\n\",\n    \"    elif isinstance(output, list):\\n\",\n    \"        for i, item in enumerate(output):\\n\",\n    \"            output[i] = reformat_output(item)\\n\",\n    \"    return output\\n\",\n    \"# List all the task steps that have been executed\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"# Transitions are retrieved in reverse chronological order\\n\",\n    \"for index, transition in enumerate(reversed(transitions)):\\n\",\n    \"    print(\\\"Transtion Index: \\\", index)\\n\",\n    \"    print(\\\"Transition Type: \\\", transition.type)\\n\",\n    \"    output = transition.output\\n\",\n    \"    pprint.pprint(reformat_output(output))\\n\",\n    \"    print(\\\"----\\\"*100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/07-personalized-research-assistant.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install julep -U --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Global UUID is generated for agent and task\\n\",\n    \"from dotenv import load_dotenv\\n\",\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"import uuid\\n\",\n    \"\\n\",\n    \"load_dotenv()\\n\",\n    \"\\n\",\n    \"# NOTE: these UUIDs are used in order not to use the `create_or_update` methods instead of\\n\",\n    \"# the `create` methods for the sake of not creating new resources every time a cell is run.\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4()\\n\",\n    \"SESSION_UUID = uuid.uuid4()\\n\",\n    \"USER_UUID = uuid.uuid4()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## creating julep client with the api key\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"api_key = os.environ['JULEP_API_KEY']\\n\",\n    \"\\n\",\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=api_key, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Defining the agent\\n\",\n    \"name = \\\"Research Assistant\\\"\\n\",\n    \"about = \\\"This is a research assistant that can search the arxiv for information.\\\"\\n\",\n    \"\\n\",\n    \"# Create the agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=name,\\n\",\n    \"    about=about,\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"user\\\"\\n\",\n    \"\\n\",\n    \"User is the object to which persona, metadata, and documents are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the User section in [Julep Concepts](https://docs.julep.ai/docs/concepts/users).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"User(id='63837636-bca5-4b08-b576-e4e8235da0eb', created_at=datetime.datetime(2025, 4, 21, 16, 18, 2, 798552, tzinfo=datetime.timezone.utc), updated_at=datetime.datetime(2025, 4, 21, 16, 18, 2, 798552, tzinfo=datetime.timezone.utc), about='This is a test user', metadata={'age': 25, 'city': 'San Francisco', 'ppid': '63837636-bca5-4b08-b576-e4e8235da0eb', 'state': 'California', 'top_journals': \\\"['Nature', 'Science', 'IEEE Transactions on Quantum Engineering']\\\", 'top_scientist': 'Richard Feynman', 'top_research_area': 'Quantum Computing', 'research_interests': \\\"['Quantum Computing', 'Artificial Intelligence', 'Machine Learning']\\\", 'favorite_scientists': \\\"['Richard Feynman', 'Alan Turing', 'Geoffrey Hinton']\\\", 'latest_research_read': 'Quantum Machine Learning'}, name='user_new_1')\"\n      ]\n     },\n     \"execution_count\": 5,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Create a user with metadata\\n\",\n    \"client.users.create_or_update(\\n\",\n    \"    user_id=USER_UUID,\\n\",\n    \"    name = f\\\"user_new_1\\\",\\n\",\n    \"    about = \\\"This is a test user\\\",\\n\",\n    \"    metadata={\\n\",\n    \"          \\\"ppid\\\": str(USER_UUID),  # Ensure it's a native int\\n\",\n    \"          \\\"age\\\": int(25),  # Ensure it's a native int\\n\",\n    \"          \\\"state\\\": str(\\\"California\\\"),  # Convert to string if not already\\n\",\n    \"          \\\"city\\\": str(\\\"San Francisco\\\"),  # Convert to string if not already\\n\",\n    \"          \\\"research_interests\\\": str([\\\"Quantum Computing\\\", \\\"Artificial Intelligence\\\", \\\"Machine Learning\\\"]),  # Convert to string or json serializable format\\n\",\n    \"          \\\"favorite_scientists\\\": str([\\\"Richard Feynman\\\", \\\"Alan Turing\\\", \\\"Geoffrey Hinton\\\"]),  # Same as above\\n\",\n    \"          \\\"top_research_area\\\": str(\\\"Quantum Computing\\\"),\\n\",\n    \"          \\\"top_scientist\\\": str(\\\"Richard Feynman\\\"),\\n\",\n    \"          \\\"latest_research_read\\\": str(\\\"Quantum Machine Learning\\\"),\\n\",\n    \"          \\\"top_journals\\\": str([\\\"Nature\\\", \\\"Science\\\", \\\"IEEE Transactions on Quantum Engineering\\\"])\\n\",\n    \"        }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"user\\\" document\\n\",\n    \"\\n\",\n    \"User documents are used to store the persona of the user.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"Doc(id='068066fd-3ee0-7190-8000-6ffce2993bb3', content=['This is a test google scholar persona. The user is a 25 year old living in San Francisco. He is a fan of Google Scholar and is a student at Stanford University.    He uses Google Scholar to stay updated with the latest research in quantum computing and artificial intelligence.    Over the last 3 months, he has read 100+ research papers on quantum computing and artificial intelligence.    He is particularly interested in the latest research in quantum machine learning and quantum error correction.    He is also interested in how LLMs are being used to solve problems in quantum mechanics.'], created_at=datetime.datetime(2025, 4, 21, 16, 18, 27, 934304, tzinfo=datetime.timezone.utc), title='Google Scholar Persona', embedding_dimensions=1024, embedding_model='text-embedding-3-large', embeddings=[], language='english', metadata={}, modality='text')\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"# Create a user document\\n\",\n    \"client.users.docs.create(\\n\",\n    \"    user_id=USER_UUID,\\n\",\n    \"    title=\\\"Google Scholar Persona\\\",\\n\",\n    \"    embed_instruction=\\\"Represent the query for User persona used for document retrieval: \\\",\\n\",\n    \"    content=\\\"This is a test google scholar persona. The user is a 25 year old living in San Francisco. He is a fan of Google Scholar and is a student at Stanford University.\\\\\\n\",\n    \"    He uses Google Scholar to stay updated with the latest research in quantum computing and artificial intelligence.\\\\\\n\",\n    \"    Over the last 3 months, he has read 100+ research papers on quantum computing and artificial intelligence.\\\\\\n\",\n    \"    He is particularly interested in the latest research in quantum machine learning and quantum error correction.\\\\\\n\",\n    \"    He is also interested in how LLMs are being used to solve problems in quantum mechanics.\\\"\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"import os\\n\",\n    \"brave_api_key = os.environ[\\\"BRAVE_API_KEY\\\"]\\n\",\n    \"llamaparse_api_key = os.environ[\\\"LLAMA_API_KEY\\\"]\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"\\n\",\n    \" # yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json                      \\n\",\n    \"name: Julep Personalized Research Paper Recommendation Assistant\\n\",\n    \"description: A research paper recommendation assistant that can search the arxiv for information and recommend research papers to the user based on their persona.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### INPUT SCHEMA ###################\\n\",\n    \"########################################################\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    topics:\\n\",\n    \"      type: array\\n\",\n    \"      items:\\n\",\n    \"        type: string\\n\",\n    \"      description: The topics to search for.\\n\",\n    \"    user_id:\\n\",\n    \"      type: string\\n\",\n    \"      description: The user id to search for.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ##########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Define the tools that the task will use in this workflow\\n\",\n    \"tools:                         \\n\",\n    \"- name: brave_search\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: brave\\n\",\n    \"    setup:\\n\",\n    \"      brave_api_key: {brave_api_key}\\n\",\n    \"      \\n\",\n    \"- name: arxiv_search\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: arxiv\\n\",\n    \"                          \\n\",\n    \"- name: llama_parse_scrape\\n\",\n    \"  type: integration\\n\",\n    \"  integration:\\n\",\n    \"    provider: llama_parse\\n\",\n    \"    setup:\\n\",\n    \"      llamaparse_api_key: {llamaparse_api_key}\\n\",\n    \"      params:\\n\",\n    \"        result_format: \\\"text\\\"\\n\",\n    \"        num_workers: 3\\n\",\n    \"\\n\",\n    \"- name: get_user_from_id\\n\",\n    \"  description: Get a user from the user id\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    operation: list\\n\",\n    \"\\n\",\n    \"- name: list_user_docs\\n\",\n    \"  description: List the user docs\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: list\\n\",\n    \"\\n\",\n    \"- name: get_user_docs\\n\",\n    \"  description: Get user docs\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: list\\n\",\n    \"                          \\n\",\n    \"- name : create_agent_doc\\n\",\n    \"  description: Create an agent doc\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: agent\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: create\\n\",\n    \"                          \\n\",\n    \"- name: create_user_doc\\n\",\n    \"  description: Create a user doc\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: create\\n\",\n    \"\\n\",\n    \"########################################################  \\n\",\n    \"####################### MAIN WORKFLOW ##################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"\\n\",\n    \"# Step 0: Calling brave search for each topic\\n\",\n    \"- over: _.topics\\n\",\n    \"  parallelism: 2\\n\",\n    \"  map:\\n\",\n    \"    tool: brave_search\\n\",\n    \"    arguments:\\n\",\n    \"      query: $ 'the latest news about ' + _\\n\",\n    \"\\n\",\n    \"# Step 1: Prompting the agent to extract keywords from the news snippet\\n\",\n    \"- prompt:\\n\",\n    \"  - role: system\\n\",\n    \"    content: |\\n\",\n    \"      $ f'''You are a research assistant.\\n\",\n    \"      Based on the following latest html news snippet, generate keywords:\\n\",\n    \"                        \\n\",\n    \"      {{ '\\\\\\\\n'.join([doc['snippet'] for docs in _ for doc in docs['result']]) }}\\n\",\n    \"                          \\n\",\n    \"      Your response should be a list of keywords, separated by commas. Do not add any other text.\\n\",\n    \"      Example: `KEYWORDS: keyword1, keyword2, keyword3`'''\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 2: Extracting the top 8 keywords\\n\",\n    \"- evaluate:\\n\",\n    \"    keywords: $ str(_).split(',')[:8]\\n\",\n    \"\\n\",\n    \"# Step 3: Calling arxiv search for each keyword\\n\",\n    \"- over: $ _.keywords\\n\",\n    \"  parallelism: 4\\n\",\n    \"  map:\\n\",\n    \"    tool: arxiv_search\\n\",\n    \"    arguments:\\n\",\n    \"      query: $ _\\n\",\n    \"      max_results: $ 2\\n\",\n    \"\\n\",\n    \"# Step 4: Get the arxiv results\\n\",\n    \"- evaluate:\\n\",\n    \"    arxiv_results: $ _\\n\",\n    \"                          \\n\",\n    \"# Step 5: Get the user from the id using metadata_filter (returns a list)\\n\",\n    \"- tool: get_user_from_id\\n\",\n    \"  arguments:\\n\",\n    \"    limit: $ 1\\n\",\n    \"    sort_by: created_at\\n\",\n    \"    direction: desc\\n\",\n    \"    metadata_filter:\\n\",\n    \"      ppid: $ steps[0].input['user_id']\\n\",\n    \"\\n\",\n    \"# Step 6: Unwrap the list to get the user\\n\",\n    \"- evaluate:\\n\",\n    \"    user_info: $ _[0]\\n\",\n    \"\\n\",\n    \"# Step 7: Get the user persona from user docs\\n\",\n    \"- tool: get_user_docs\\n\",\n    \"  arguments:\\n\",\n    \"    user_id: $ steps[0].input['user_id']\\n\",\n    \"    limit: $ 1\\n\",\n    \"    sort_by: created_at\\n\",\n    \"    direction: desc\\n\",\n    \"\\n\",\n    \"# Step 8: Unwrap the list to get the user persona\\n\",\n    \"- evaluate:\\n\",\n    \"    persona: $ _[0].content[0]\\n\",\n    \"\\n\",\n    \"# Step 9: Prompting the agent to select the top 5 papers\\n\",\n    \"- prompt:\\n\",\n    \"  - role: system\\n\",\n    \"    content: |\\n\",\n    \"      $ f'''As an expert in recommending research papers tailored to individual user personas, your task is to select papers top 5 papers that align closely with the user's interests and professional needs. \\n\",\n    \"      This careful selection ensures that the recommendations are both relevant and beneficial to the user's ongoing research and professional development.\\n\",\n    \"\\n\",\n    \"      Below is a detailed description of the user's persona:\\n\",\n    \"      {{ _.persona }}\\n\",\n    \"\\n\",\n    \"      Based on this persona, please review the following list of research paper titles. \\n\",\n    \"      These titles have been gathered from a comprehensive search to match the user's interests:\\n\",\n    \"\\n\",\n    \"      {{ \\\"\\\\\\\\n\\\".join([f\\\"- (Title: {{doc['title']}}, \\\\\\\\n\\\\\\\\n  - URL: {{doc['pdf_url']}})\\\" for result in steps[4].output.arxiv_results for doc in result['result']]) }}\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"      After reviewing the titles, please compile a list of the top 5 relevant research papers. \\n\",\n    \"      Your response should be a list of Titles and URLs of the papers, separated by double commas. \\n\",\n    \"      Do not add any other text.\\n\",\n    \"      Example: `Title1,url1,,Title2,url2,,Title3,url3`'''\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 10: Extracting the titles and urls\\n\",\n    \"- evaluate:\\n\",\n    \"    paper_titles_and_urls: |-\\n\",\n    \"      $ list(\\n\",\n    \"        zip(\\n\",\n    \"          [pair.split(',')[0] for pair in str(_).split(',,')],\\n\",\n    \"          [pair.split(',')[1].replace(\\\"http://\\\", \\\"https://\\\") for pair in str(_).split(',,')]\\n\",\n    \"        )\\n\",\n    \"      )\\n\",\n    \"                          \\n\",\n    \"# Step 11: Calling llama parse scrape for each url\\n\",\n    \"- over: $ _['paper_titles_and_urls']\\n\",\n    \"  parallelism: 5\\n\",\n    \"  map:\\n\",\n    \"    tool: llama_parse_scrape\\n\",\n    \"    arguments:\\n\",\n    \"      file: $ _[1]\\n\",\n    \"      filename: $ _[0]\\n\",\n    \"      params:\\n\",\n    \"        result_format: text\\n\",\n    \"\\n\",\n    \"# Step 12: Extracting the paper contents\\n\",\n    \"- evaluate:\\n\",\n    \"    paper_contents: $ str(_)\\n\",\n    \"\\n\",\n    \"# Step 13: Create a new persona document\\n\",\n    \"- tool: create_user_doc\\n\",\n    \"  arguments:\\n\",\n    \"    user_id: $ steps[0].input['user_id']\\n\",\n    \"    data:\\n\",\n    \"      embed_instruction: $ \\\"Represent the query for User persona used for document retrieval:\\\"\\n\",\n    \"      title: Research Papers\\n\",\n    \"      content: $ _['paper_contents']\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Create the task\\n\",\n    \"task = chat_task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 9,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    input={\\n\",\n    \"            \\\"topics\\\": [\\\"Quantum Computing\\\", \\\"LLMs\\\"],\\n\",\n    \"            \\\"user_id\\\": str(USER_UUID)\\n\",\n    \"            }\\n\",\n    \"          )\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Checking execution details and output\\n\",\n    \"\\n\",\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Transition number:  0\\n\",\n      \"Transition type:  init\\n\",\n      \"Transition output:  {'topics': ['Quantum Computing', 'LLMs'], 'user_id': '63837636-bca5-4b08-b576-e4e8235da0eb'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  1\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  Quantum Computing\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  2\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  LLMs\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  3\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'link': 'https://llm.extractum.io/static/llm-news/', 'title': 'LLM News, Updates and Articles', 'snippet': 'A newsfeed of <strong>the</strong> <strong>latest</strong> <strong>news</strong>, updates and articles related to LLM.'}, {'link': 'https://llm-guide.com/news', 'title': 'LLM News | LLM GUIDE', 'snippet': '<strong>The class of 2023 is doing very well</strong>, indeed! For the fifth year in a row, graduate salary figures have reached another all-time high.'}, {'link': 'https://www.startus-insights.com/innovators-guide/llm-news-brief/', 'title': \\\"What's Currently Happening in LLMs? | Q2 2024\\\", 'snippet': 'You can catch up on the latest, must-know breakthroughs, major acquisitons &amp; investments, and other events in the LLM landscape, covering everything from the growing focus on AI safety to <strong>China&#x27;s acceptance of 14 LLMs for public release</strong>. LARGE LANGUAGE MODEL NEWSLLM NEWS BRIEFLARGE LANGUAGE ...'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  4\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'link': 'https://www.sciencenews.org/article/quantum-computing-milestone-challenged', 'title': 'A quantum computing milestone is immediately challenged by a supercomputer', 'snippet': 'In just minutes, <strong>a special quantum processor, called a quantum annealing processor, solved a complex real-world problem that a classical supercomputer would take millions of years to complete</strong>, researchers claim March 12 in Science. And that supercomputer, the team reports, would consume more ...'}, {'link': 'https://www.nature.com/articles/d41586-025-00451-2', 'title': 'Quantum-computing technology that makes qubits from atoms wins mega investment', 'snippet': 'Firms using ‘neutral atoms’ to create qubits are re-entering the race to build useful <strong>quantum</strong> machines.'}, {'link': 'https://www.sciencedaily.com/news/matter_energy/quantum_computing/', 'title': 'Quantum Computing News -- ScienceDaily', 'snippet': '<strong>Quantum</strong> <strong>Computing</strong> <strong>News</strong>. Read <strong>the</strong> <strong>latest</strong> <strong>about</strong> <strong>the</strong> development of <strong>quantum</strong> <strong>computers</strong>.'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  5\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [{'result': [{'link': 'https://www.sciencenews.org/article/quantum-computing-milestone-challenged', 'title': 'A quantum computing milestone is immediately challenged by a supercomputer', 'snippet': 'In just minutes, <strong>a special quantum processor, called a quantum annealing processor, solved a complex real-world problem that a classical supercomputer would take millions of years to complete</strong>, researchers claim March 12 in Science. And that supercomputer, the team reports, would consume more ...'}, {'link': 'https://www.nature.com/articles/d41586-025-00451-2', 'title': 'Quantum-computing technology that makes qubits from atoms wins mega investment', 'snippet': 'Firms using ‘neutral atoms’ to create qubits are re-entering the race to build useful <strong>quantum</strong> machines.'}, {'link': 'https://www.sciencedaily.com/news/matter_energy/quantum_computing/', 'title': 'Quantum Computing News -- ScienceDaily', 'snippet': '<strong>Quantum</strong> <strong>Computing</strong> <strong>News</strong>. Read <strong>the</strong> <strong>latest</strong> <strong>about</strong> <strong>the</strong> development of <strong>quantum</strong> <strong>computers</strong>.'}]}, {'result': [{'link': 'https://llm.extractum.io/static/llm-news/', 'title': 'LLM News, Updates and Articles', 'snippet': 'A newsfeed of <strong>the</strong> <strong>latest</strong> <strong>news</strong>, updates and articles related to LLM.'}, {'link': 'https://llm-guide.com/news', 'title': 'LLM News | LLM GUIDE', 'snippet': '<strong>The class of 2023 is doing very well</strong>, indeed! For the fifth year in a row, graduate salary figures have reached another all-time high.'}, {'link': 'https://www.startus-insights.com/innovators-guide/llm-news-brief/', 'title': \\\"What's Currently Happening in LLMs? | Q2 2024\\\", 'snippet': 'You can catch up on the latest, must-know breakthroughs, major acquisitons &amp; investments, and other events in the LLM landscape, covering everything from the growing focus on AI safety to <strong>China&#x27;s acceptance of 14 LLMs for public release</strong>. LARGE LANGUAGE MODEL NEWSLLM NEWS BRIEFLARGE LANGUAGE ...'}]}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  6\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  quantum processor, quantum annealing processor, supercomputer, neutral atoms, qubits, quantum machines, quantum computing, quantum computers, LLM, AI safety, China, LARGE LANGUAGE MODEL, breakthroughs, investments, graduate salary, class of 2023\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  7\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'keywords': ['quantum processor', ' quantum annealing processor', ' supercomputer', ' neutral atoms', ' qubits', ' quantum machines', ' quantum computing', ' quantum computers']}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  8\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:   neutral atoms\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  9\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:   quantum annealing processor\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  10\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:   supercomputer\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  11\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  quantum processor\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  12\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/1608.00249v1', 'http://arxiv.org/pdf/1608.00249v1'], 'title': 'Comments on the parallelization efficiency of the Sunway TaihuLight supercomputer', 'authors': ['János Végh'], 'comment': '4 figures', 'pdf_url': 'http://arxiv.org/pdf/1608.00249v1', 'summary': 'In the world of supercomputers, the large number of processors requires tominimize the inefficiencies of parallelization, which appear as a sequentialpart of the program from the point of view of Amdahl\\\\'s law. The recentlysuggested new figure of merit is applied to the recently presentedsupercomputer, and the timeline of \\\"Top 500\\\" supercomputers is scrutinizedusing the metric. It is demonstrated, that in addition to the computingperformance and power consumption, the new supercomputer is also excellent inthe efficiency of parallelization. Based on the suggested merit, a \\\"Moore-law\\\"like observation is derived for the timeline of parallelization efficacy ofsupercomputers.', 'updated': '2016-07-31 19:02:34', 'entry_id': 'http://arxiv.org/abs/1608.00249v1', 'published': '2016-07-31 19:02:34', 'categories': ['cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.DC'}, {'doi': None, 'links': ['http://arxiv.org/abs/1708.01462v2', 'http://arxiv.org/pdf/1708.01462v2'], 'title': \\\"How Amdahl's low restricts supercomputer applications and building ever bigger supercomputers\\\", 'authors': ['János Végh'], 'comment': '30 pages, 10 figures', 'pdf_url': 'http://arxiv.org/pdf/1708.01462v2', 'summary': \\\"This paper reinterprets Amdahl's law in terms of execution time and appliesthis simple model to supercomputing. The systematic discussion results inpractical formulas enabling to calculate expected running time using largenumber of processors from experimental runs using low number of processors,delivers a quantitative measure of computational efficiency of supercomputingapplications. Through separating non-parallelizable contribution to fractionsaccording to their origin, Amdahl's law enables to derive a timeline forsupercomputers (quite similar to Moore's law) and describes why Amdahl's lawlimits the size of supercomputers. The paper validates that Amdahl's 50-yearsold model (with slight extension) correctly describes the performancelimitations of the present supercomputers. Using some simple and reasonableassumptions, the absolute performance bound of supercomputers is concluded,furthermore that serious enhancements are still necessary to achieve theexaFLOPS dream value.\\\", 'updated': '2017-12-29 06:26:45', 'entry_id': 'http://arxiv.org/abs/1708.01462v2', 'published': '2017-08-04 11:56:45', 'categories': ['cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.DC'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  13\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/1908.10698v1', 'http://arxiv.org/pdf/1908.10698v1'], 'title': 'Thermal surface neutralization of Fr ions with metal foils for magneto-optical trapping of radioisotopes', 'authors': ['H. Kawamura', 'T. Aoki', 'K. Harada', 'T. Inoue', 'S. Ito', 'K. Kato', 'L. Koehler', 'K. Sakamoto', 'A. Uchiyama', 'Y. Sakemi'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/1908.10698v1', 'summary': 'We investigate neutralization processes (especially thermal surfaceneutralization), which are required for the magneto-optical trapping ofradioactive atoms. A variety of neutralization methods are first summarized:neutral beam injection for fusion reactors, neutral atom implantation insemiconductor processing, and the production of radioactive neutral atoms inaccelerators. We focus on thermal surface neutralization, which producesneutral atoms in the thermal energy range for laser cooling. The experimentswere carried out with yttrium, gadolinium, and zirconium foils to neutralizefrancium and rubidium ions for magneto-optical trapping. The results reconfirmthat yttrium foil is a good neutralizer (i.e., it has a neutral releaseefficiency $>65\\\\\\\\%$). In addition, the release fraction when using yttrium foilexceeds 75\\\\\\\\% at 1350 K, which is greater than the release fraction for theother foils. This reconfirmation is important because few previous studies havefocused on thermal surface neutralization. Moreover, the results show that theneutralization efficiency is strongly influenced by the experimental processitself.', 'updated': '2019-08-28 13:01:01', 'entry_id': 'http://arxiv.org/abs/1908.10698v1', 'published': '2019-08-28 13:01:01', 'categories': ['physics.ins-det'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'physics.ins-det'}, {'doi': None, 'links': ['http://arxiv.org/abs/1908.10686v1', 'http://arxiv.org/pdf/1908.10686v1'], 'title': 'Alkali ion-to-neutral atom converter for the magneto-optical trap of a radioactive isotope', 'authors': ['Hirokazu Kawamura', 'Ken-ichi Harada', 'Tomoya Sato', 'Saki Ezure', 'Hiroshi Arikawa', 'Takeshi Furukawa', 'Tomohiro Hayamizu', 'Takeshi Inoue', 'Taisuke Ishikawa', 'Masatoshi Itoh', 'Tomohiro Kato', 'Akihito Oikawa', 'Takatoshi Aoki', 'Atsushi Hatakeyama', 'Yasuhiro Sakemi'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/1908.10686v1', 'summary': 'We have developed a unique neutralizer device that uses an yttrium targetsurrounded by a platinum wall to magneto-optically trap radioactive atoms. Ingeneral, the radioactive nucleus produced in a nuclear reaction is extractedand transported in ion form. For the magneto-optical trap, thermalneutralization must occur on the surface of a metal with a small work function.The converter can produce a neutral atomic beam with small angular divergencethat, given the recycling of atoms and ions, converts ions into neutral atomswith remarkable efficiency. We demonstrated the ion neutralization processusing stable rubidium and confirmed $10^6$ neutralized atoms in themagneto-optical trap. Additionally, the experiment using francium demonstratedthe obtaining of neutralized francium atoms.', 'updated': '2019-08-28 12:38:44', 'entry_id': 'http://arxiv.org/abs/1908.10686v1', 'published': '2019-08-28 12:38:44', 'categories': ['physics.atom-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'physics.atom-ph'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  14\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'doi': '10.1109/TPDS.2020.3044846', 'links': ['http://dx.doi.org/10.1109/TPDS.2020.3044846', 'http://arxiv.org/abs/2009.06387v2', 'http://arxiv.org/pdf/2009.06387v2'], 'title': 'Inferring the Dynamics of the State Evolution During Quantum Annealing', 'authors': ['Elijah Pelofske', 'Georg Hahn', 'Hristo Djidjev'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2009.06387v2', 'summary': 'To solve an optimization problem using a commercial quantum annealer, one hasto represent the problem of interest as an Ising or a quadratic unconstrainedbinary optimization (QUBO) problem and submit its coefficients to the annealer,which then returns a user-specified number of low-energy solutions. It would beuseful to know what happens in the quantum processor during the anneal processso that one could design better algorithms or suggest improvements to thehardware. However, existing quantum annealers are not able to directly extractsuch information from the processor. Hence, in this work we propose to useadvanced features of D-Wave 2000Q to indirectly infer information about thedynamics of the state evolution during the anneal process. Specifically, D-Wave2000Q allows the user to customize the anneal schedule, that is, the schedulewith which the anneal fraction is changed from the start to the end of theanneal. Using this feature, we design a set of modified anneal schedules whoseoutputs can be used to generate information about the states of the system atuser-defined time points during a standard anneal. With this process, called\\\"slicing\\\", we obtain approximate distributions of lowest-energy annealsolutions as the anneal time evolves. We use our technique to obtain a varietyof insights into the annealer, such as the state evolution during annealing,when individual bits in an evolving solution flip during the anneal process andwhen they stabilize, and we introduce a technique to estimate the freeze-outpoint of both the system as well as of individual qubits.', 'updated': '2020-11-20 02:12:21', 'entry_id': 'http://arxiv.org/abs/2009.06387v2', 'published': '2020-09-10 18:14:28', 'categories': ['quant-ph', 'cond-mat.dis-nn', 'cond-mat.stat-mech', 'cs.ET'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': '10.1088/1361-6633/ac8c54', 'links': ['http://dx.doi.org/10.1088/1361-6633/ac8c54', 'http://arxiv.org/abs/2112.07491v3', 'http://arxiv.org/pdf/2112.07491v3'], 'title': 'Quantum Annealing for Industry Applications: Introduction and Review', 'authors': ['Sheir Yarkoni', 'Elena Raponi', 'Thomas Bäck', 'Sebastian Schmitt'], 'comment': 'major revision with extended noise section and discussion of\\\\n  alternative platforms', 'pdf_url': 'http://arxiv.org/pdf/2112.07491v3', 'summary': 'Quantum annealing is a heuristic quantum optimization algorithm that can beused to solve combinatorial optimization problems. In recent years, advances inquantum technologies have enabled the development of small- andintermediate-scale quantum processors that implement the quantum annealingalgorithm for programmable use. Specifically, quantum annealing processorsproduced by D-Wave Systems have been studied and tested extensively in bothresearch and industrial settings across different disciplines. In this paper weprovide a literature review of the theoretical motivations for quantumannealing as a heuristic quantum optimization algorithm, the software andhardware that is required to use such quantum processors, and thestate-of-the-art applications and proofs-of-concepts that have beendemonstrated using them. The goal of our review is to provide a centralized andcondensed source regarding applications of quantum annealing technology. Weidentify the advantages, limitations, and potential of quantum annealing forboth researchers and practitioners from various fields.', 'updated': '2022-06-13 08:37:49', 'entry_id': 'http://arxiv.org/abs/2112.07491v3', 'published': '2021-12-14 15:58:30', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  15\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0311196v1', 'http://arxiv.org/pdf/quant-ph/0311196v1'], 'title': 'Von Neumann Quantum Processors', 'authors': ['Alexander Yu. Vlasov'], 'comment': 'LaTeX 8 pages, for 304th WEH Seminar \\\"Elementary Quantum Processors,\\\"\\\\n  13-15 October 2003', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0311196v1', 'summary': 'Most modern classical processors support so-called von Neumann architecturewith program and data registers. In present work is revisited similar approachto models of quantum processors. Deterministic programmable quantum gate arraysare considered as an example. They are also called von Neumann quantumprocessors here and use conditional quantum dynamics. Such devices have someproblems with universality, but consideration of hybrid quantum processors,i.e., models with both continuous and discrete quantum variables resolves theproblems. It is also discussed comparison of such a model of quantum processorswith more traditional approach.', 'updated': '2003-11-27 15:43:16', 'entry_id': 'http://arxiv.org/abs/quant-ph/0311196v1', 'published': '2003-11-27 15:43:16', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': '10.1126/sciadv.abj6624', 'links': ['http://dx.doi.org/10.1126/sciadv.abj6624', 'http://arxiv.org/abs/2105.02447v2', 'http://arxiv.org/pdf/2105.02447v2'], 'title': 'Programmable and sequential Gaussian gates in a loop-based single-mode photonic quantum processor', 'authors': ['Yutaro Enomoto', 'Kazuma Yonezu', 'Yosuke Mitsuhashi', 'Kan Takase', 'Shuntaro Takeda'], 'comment': '17 pages, 6 figures. 5 pages, 3 figures in the supplementary\\\\n  materials', 'pdf_url': 'http://arxiv.org/pdf/2105.02447v2', 'summary': 'A quantum processor to import, process, and export optical quantum states isa common core technology enabling various photonic quantum informationprocessing. However, there has been no photonic processor which issimultaneously universal, scalable, and programmable. Here, we report on anoriginal loop-based single-mode versatile photonic quantum processor which isdesigned to be universal, scalable, and programmable. Our processor can performarbitrarily many steps of programmable quantum operations on a givensingle-mode optical quantum state by time-domain processing in a dynamicallycontrolled loop-based optical circuit. We use this processor to demonstrateprogrammable single-mode Gaussian gates and multi-step squeezing gates. Inaddition, we prove that the processor can perform universal quantum operationsby injecting appropriate ancillary states and also be straightforwardlyextended to a multi-mode processor. These results show that our processor isprogrammable, scalable, and potentially universal, leading to be suitable forgeneral-purpose applications.', 'updated': '2021-11-14 23:50:51', 'entry_id': 'http://arxiv.org/abs/2105.02447v2', 'published': '2021-05-06 05:27:35', 'categories': ['quant-ph'], 'journal_ref': 'Science Advances 7, eabj6624 (2021)', 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  16\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:   quantum computers\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  17\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:   quantum machines\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  18\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:   qubits\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  19\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:   quantum computing\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  20\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2208.00733v1', 'http://arxiv.org/pdf/2208.00733v1'], 'title': 'The Rise of Quantum Internet Computing', 'authors': ['Seng W. Loke'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2208.00733v1', 'summary': 'This article highlights quantum Internet computing as referring todistributed quantum computing over the quantum Internet, analogous to(classical) Internet computing involving (classical) distributed computing overthe (classical) Internet. Relevant to quantum Internet computing would be areasof study such as quantum protocols for distributed nodes using quantuminformation for computations, quantum cloud computing, delegated verifiableblind or private computing, non-local gates, and distributed quantumapplications, over Internet-scale distances.', 'updated': '2022-08-01 10:36:13', 'entry_id': 'http://arxiv.org/abs/2208.00733v1', 'published': '2022-08-01 10:36:13', 'categories': ['cs.ET', 'cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.ET'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0003151v1', 'http://arxiv.org/pdf/quant-ph/0003151v1'], 'title': 'Unconventional Quantum Computing Devices', 'authors': ['Seth Lloyd'], 'comment': '9 pages, plain TeX, article from 1998 conference proceedings\\\\n  proposing fermionic quantum computers', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0003151v1', 'summary': \\\"This paper investigates a variety of unconventional quantum computationdevices, including fermionic quantum computers and computers that exploitnonlinear quantum mechanics. It is shown that unconventional quantum computingdevices can in principle compute some quantities more rapidly than`conventional' quantum computers.\\\", 'updated': '2000-03-31 22:07:23', 'entry_id': 'http://arxiv.org/abs/quant-ph/0003151v1', 'published': '2000-03-31 22:07:23', 'categories': ['quant-ph'], 'journal_ref': \\\"in `Unconventional Models of Computation,' C.S. Calude, J. Casti,\\\\n  M.J. Dinneen, eds., Springer, Singapore, 1998\\\", 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  21\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2412.18979v1', 'http://arxiv.org/pdf/2412.18979v1'], 'title': 'Quantum memristors for neuromorphic quantum machine learning', 'authors': ['Lucas Lamata'], 'comment': 'Invited Perspective', 'pdf_url': 'http://arxiv.org/pdf/2412.18979v1', 'summary': 'Quantum machine learning may permit to realize more efficient machinelearning calculations with near-term quantum devices. Among the diverse quantummachine learning paradigms which are currently being considered, quantummemristors are promising as a way of combining, in the same quantum hardware, aunitary evolution with the nonlinearity provided by the measurement andfeedforward. Thus, an efficient way of deploying neuromorphic quantum computingfor quantum machine learning may be enabled.', 'updated': '2024-12-25 20:21:24', 'entry_id': 'http://arxiv.org/abs/2412.18979v1', 'published': '2024-12-25 20:21:24', 'categories': ['quant-ph', 'cs.NE'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0501176v2', 'http://arxiv.org/pdf/quant-ph/0501176v2'], 'title': 'Simulations of Quantum Turing Machines by Quantum Multi-Stack Machines', 'authors': ['Daowen Qiu'], 'comment': '25 pages', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0501176v2', 'summary': 'As was well known, in classical computation, Turing machines, circuits,multi-stack machines, and multi-counter machines are equivalent, that is, theycan simulate each other in polynomial time. In quantum computation, Yao [11]first proved that for any quantum Turing machines $M$, there exists quantumBoolean circuit $(n,t)$-simulating $M$, where $n$ denotes the length of inputstrings, and $t$ is the number of move steps before machine stopping. However,the simulations of quantum Turing machines by quantum multi-stack machines andquantum multi-counter machines have not been considered, and quantummulti-stack machines have not been established, either. Though quantum countermachines were dealt with by Kravtsev [6] and Yamasaki {\\\\\\\\it et al.} [10], inwhich the machines count with $0,\\\\\\\\pm 1$ only, we sense that it is difficult tosimulate quantum Turing machines in terms of this fashion of quantum computingdevices, and we therefore prove that the quantum multi-counter machines allowedto count with $0,\\\\\\\\pm 1,\\\\\\\\pm 2,...,\\\\\\\\pm n$ for some $n>1$ can efficiently simulatequantum Turing machines.  Therefore, our mail goals are to establish quantum multi-stack machines andquantum multi-counter machines with counts $0,\\\\\\\\pm 1,\\\\\\\\pm 2,...,\\\\\\\\pm n$ and $n>1$,and particularly to simulate quantum Turing machines by these quantum computingdevices.', 'updated': '2005-06-06 17:29:54', 'entry_id': 'http://arxiv.org/abs/quant-ph/0501176v2', 'published': '2005-01-30 04:42:12', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  22\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2208.00733v1', 'http://arxiv.org/pdf/2208.00733v1'], 'title': 'The Rise of Quantum Internet Computing', 'authors': ['Seng W. Loke'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2208.00733v1', 'summary': 'This article highlights quantum Internet computing as referring todistributed quantum computing over the quantum Internet, analogous to(classical) Internet computing involving (classical) distributed computing overthe (classical) Internet. Relevant to quantum Internet computing would be areasof study such as quantum protocols for distributed nodes using quantuminformation for computations, quantum cloud computing, delegated verifiableblind or private computing, non-local gates, and distributed quantumapplications, over Internet-scale distances.', 'updated': '2022-08-01 10:36:13', 'entry_id': 'http://arxiv.org/abs/2208.00733v1', 'published': '2022-08-01 10:36:13', 'categories': ['cs.ET', 'cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.ET'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0003151v1', 'http://arxiv.org/pdf/quant-ph/0003151v1'], 'title': 'Unconventional Quantum Computing Devices', 'authors': ['Seth Lloyd'], 'comment': '9 pages, plain TeX, article from 1998 conference proceedings\\\\n  proposing fermionic quantum computers', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0003151v1', 'summary': \\\"This paper investigates a variety of unconventional quantum computationdevices, including fermionic quantum computers and computers that exploitnonlinear quantum mechanics. It is shown that unconventional quantum computingdevices can in principle compute some quantities more rapidly than`conventional' quantum computers.\\\", 'updated': '2000-03-31 22:07:23', 'entry_id': 'http://arxiv.org/abs/quant-ph/0003151v1', 'published': '2000-03-31 22:07:23', 'categories': ['quant-ph'], 'journal_ref': \\\"in `Unconventional Models of Computation,' C.S. Calude, J. Casti,\\\\n  M.J. Dinneen, eds., Springer, Singapore, 1998\\\", 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  23\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'result': [{'doi': '10.1088/1361-648X/aa761f', 'links': ['http://dx.doi.org/10.1088/1361-648X/aa761f', 'http://arxiv.org/abs/1611.09106v1', 'http://arxiv.org/pdf/1611.09106v1'], 'title': 'Three-electron spin qubits', 'authors': ['Maximilian Russ', 'Guido Burkard'], 'comment': '42 pages, 13 figures', 'pdf_url': 'http://arxiv.org/pdf/1611.09106v1', 'summary': 'The goal of this article is to review the progress of three-electron spinqubits from their inception to the state of the art. We direct the main focustowards the resonant exchange (RX) qubit and the exchange-only qubit, but wealso discuss other qubit implementations using three electron spins. For eachthree-spin qubit we describe the qubit model, the physical realization, theimplementations of single-qubit operations, as well as the read-out andinitialization schemes. Two-qubit gates and decoherence properties arediscussed for the RX qubit and the exchange-only qubit, thereby, completing thelist of requirements for a viable candidate qubit implementation for quantumcomputation. We start with describing the full system of three electrons in atriple quantum dot, then discuss the charge-stability diagram and restrictourselves to the relevant subsystem, introduce the qubit states, and discussimportant transitions to other charge states. Introducing the various qubitimplementations, we begin with the exchange-only qubit, followed by thespin-charge qubit, the hybrid qubit, and the RX qubit, discussing for each thesingle-qubit operations, read-out, and initialization methods, whereas the mainfocus will be on the RX qubit, whose single-qubit operations are realized bydriving the qubit at its resonant frequency in the microwave range similar toelectron spin resonance. Two different types of two-qubit operations arepresented for the exchange-only and the RX qubit which can be divided intoshort-ranged and long-ranged interactions. Both of these interaction types canbe expected to be necessary in a large-scale quantum computer. We also takeinto account the decoherence of the qubit through the influence of magneticnoise as well as dephasing due to charge noise.', 'updated': '2016-11-28 13:21:43', 'entry_id': 'http://arxiv.org/abs/1611.09106v1', 'published': '2016-11-28 13:21:43', 'categories': ['cond-mat.mes-hall'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cond-mat.mes-hall'}, {'doi': '10.1103/PhysRevB.77.212506', 'links': ['http://dx.doi.org/10.1103/PhysRevB.77.212506', 'http://arxiv.org/abs/cond-mat/0703505v1', 'http://arxiv.org/pdf/cond-mat/0703505v1'], 'title': 'Macroscopic Many-Qubit Interactions in Superconducting Flux Qubits', 'authors': ['Sam Young Cho', 'Mun Dae Kim'], 'comment': '5 pages, 1 figure', 'pdf_url': 'http://arxiv.org/pdf/cond-mat/0703505v1', 'summary': 'Superconducting flux qubits are considered to investigate macroscopicmany-qubit interactions.  Many-qubit states based on current states can be manipulated through thecurrent-phase relation in each superconducting loop.  For flux qubit systems comprised of $N$ qubit loops, a general expression oflow energy Hamiltonian is presented in terms of low energy levels of qubits andmacroscopic quantum tunnelings between the many-qubit states.  Many-qubit interactions classified by {\\\\\\\\em Ising type- or tunnel-}exchangeinteractions can be observable experimentally.  Flux qubit systems can provide various artificial-spin systems to studymany-body systems that cannot be found naturally.', 'updated': '2007-03-20 02:20:35', 'entry_id': 'http://arxiv.org/abs/cond-mat/0703505v1', 'published': '2007-03-20 02:20:35', 'categories': ['cond-mat.supr-con', 'cond-mat.mes-hall'], 'journal_ref': 'Phys. Rev. B 77, 212506 (2008)', 'pdf_downloaded': None, 'primary_category': 'cond-mat.supr-con'}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  24\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [{'result': [{'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0311196v1', 'http://arxiv.org/pdf/quant-ph/0311196v1'], 'title': 'Von Neumann Quantum Processors', 'authors': ['Alexander Yu. Vlasov'], 'comment': 'LaTeX 8 pages, for 304th WEH Seminar \\\"Elementary Quantum Processors,\\\"\\\\n  13-15 October 2003', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0311196v1', 'summary': 'Most modern classical processors support so-called von Neumann architecturewith program and data registers. In present work is revisited similar approachto models of quantum processors. Deterministic programmable quantum gate arraysare considered as an example. They are also called von Neumann quantumprocessors here and use conditional quantum dynamics. Such devices have someproblems with universality, but consideration of hybrid quantum processors,i.e., models with both continuous and discrete quantum variables resolves theproblems. It is also discussed comparison of such a model of quantum processorswith more traditional approach.', 'updated': '2003-11-27 15:43:16', 'entry_id': 'http://arxiv.org/abs/quant-ph/0311196v1', 'published': '2003-11-27 15:43:16', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': '10.1126/sciadv.abj6624', 'links': ['http://dx.doi.org/10.1126/sciadv.abj6624', 'http://arxiv.org/abs/2105.02447v2', 'http://arxiv.org/pdf/2105.02447v2'], 'title': 'Programmable and sequential Gaussian gates in a loop-based single-mode photonic quantum processor', 'authors': ['Yutaro Enomoto', 'Kazuma Yonezu', 'Yosuke Mitsuhashi', 'Kan Takase', 'Shuntaro Takeda'], 'comment': '17 pages, 6 figures. 5 pages, 3 figures in the supplementary\\\\n  materials', 'pdf_url': 'http://arxiv.org/pdf/2105.02447v2', 'summary': 'A quantum processor to import, process, and export optical quantum states isa common core technology enabling various photonic quantum informationprocessing. However, there has been no photonic processor which issimultaneously universal, scalable, and programmable. Here, we report on anoriginal loop-based single-mode versatile photonic quantum processor which isdesigned to be universal, scalable, and programmable. Our processor can performarbitrarily many steps of programmable quantum operations on a givensingle-mode optical quantum state by time-domain processing in a dynamicallycontrolled loop-based optical circuit. We use this processor to demonstrateprogrammable single-mode Gaussian gates and multi-step squeezing gates. Inaddition, we prove that the processor can perform universal quantum operationsby injecting appropriate ancillary states and also be straightforwardlyextended to a multi-mode processor. These results show that our processor isprogrammable, scalable, and potentially universal, leading to be suitable forgeneral-purpose applications.', 'updated': '2021-11-14 23:50:51', 'entry_id': 'http://arxiv.org/abs/2105.02447v2', 'published': '2021-05-06 05:27:35', 'categories': ['quant-ph'], 'journal_ref': 'Science Advances 7, eabj6624 (2021)', 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}, {'result': [{'doi': '10.1109/TPDS.2020.3044846', 'links': ['http://dx.doi.org/10.1109/TPDS.2020.3044846', 'http://arxiv.org/abs/2009.06387v2', 'http://arxiv.org/pdf/2009.06387v2'], 'title': 'Inferring the Dynamics of the State Evolution During Quantum Annealing', 'authors': ['Elijah Pelofske', 'Georg Hahn', 'Hristo Djidjev'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2009.06387v2', 'summary': 'To solve an optimization problem using a commercial quantum annealer, one hasto represent the problem of interest as an Ising or a quadratic unconstrainedbinary optimization (QUBO) problem and submit its coefficients to the annealer,which then returns a user-specified number of low-energy solutions. It would beuseful to know what happens in the quantum processor during the anneal processso that one could design better algorithms or suggest improvements to thehardware. However, existing quantum annealers are not able to directly extractsuch information from the processor. Hence, in this work we propose to useadvanced features of D-Wave 2000Q to indirectly infer information about thedynamics of the state evolution during the anneal process. Specifically, D-Wave2000Q allows the user to customize the anneal schedule, that is, the schedulewith which the anneal fraction is changed from the start to the end of theanneal. Using this feature, we design a set of modified anneal schedules whoseoutputs can be used to generate information about the states of the system atuser-defined time points during a standard anneal. With this process, called\\\"slicing\\\", we obtain approximate distributions of lowest-energy annealsolutions as the anneal time evolves. We use our technique to obtain a varietyof insights into the annealer, such as the state evolution during annealing,when individual bits in an evolving solution flip during the anneal process andwhen they stabilize, and we introduce a technique to estimate the freeze-outpoint of both the system as well as of individual qubits.', 'updated': '2020-11-20 02:12:21', 'entry_id': 'http://arxiv.org/abs/2009.06387v2', 'published': '2020-09-10 18:14:28', 'categories': ['quant-ph', 'cond-mat.dis-nn', 'cond-mat.stat-mech', 'cs.ET'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': '10.1088/1361-6633/ac8c54', 'links': ['http://dx.doi.org/10.1088/1361-6633/ac8c54', 'http://arxiv.org/abs/2112.07491v3', 'http://arxiv.org/pdf/2112.07491v3'], 'title': 'Quantum Annealing for Industry Applications: Introduction and Review', 'authors': ['Sheir Yarkoni', 'Elena Raponi', 'Thomas Bäck', 'Sebastian Schmitt'], 'comment': 'major revision with extended noise section and discussion of\\\\n  alternative platforms', 'pdf_url': 'http://arxiv.org/pdf/2112.07491v3', 'summary': 'Quantum annealing is a heuristic quantum optimization algorithm that can beused to solve combinatorial optimization problems. In recent years, advances inquantum technologies have enabled the development of small- andintermediate-scale quantum processors that implement the quantum annealingalgorithm for programmable use. Specifically, quantum annealing processorsproduced by D-Wave Systems have been studied and tested extensively in bothresearch and industrial settings across different disciplines. In this paper weprovide a literature review of the theoretical motivations for quantumannealing as a heuristic quantum optimization algorithm, the software andhardware that is required to use such quantum processors, and thestate-of-the-art applications and proofs-of-concepts that have beendemonstrated using them. The goal of our review is to provide a centralized andcondensed source regarding applications of quantum annealing technology. Weidentify the advantages, limitations, and potential of quantum annealing forboth researchers and practitioners from various fields.', 'updated': '2022-06-13 08:37:49', 'entry_id': 'http://arxiv.org/abs/2112.07491v3', 'published': '2021-12-14 15:58:30', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/1608.00249v1', 'http://arxiv.org/pdf/1608.00249v1'], 'title': 'Comments on the parallelization efficiency of the Sunway TaihuLight supercomputer', 'authors': ['János Végh'], 'comment': '4 figures', 'pdf_url': 'http://arxiv.org/pdf/1608.00249v1', 'summary': 'In the world of supercomputers, the large number of processors requires tominimize the inefficiencies of parallelization, which appear as a sequentialpart of the program from the point of view of Amdahl\\\\'s law. The recentlysuggested new figure of merit is applied to the recently presentedsupercomputer, and the timeline of \\\"Top 500\\\" supercomputers is scrutinizedusing the metric. It is demonstrated, that in addition to the computingperformance and power consumption, the new supercomputer is also excellent inthe efficiency of parallelization. Based on the suggested merit, a \\\"Moore-law\\\"like observation is derived for the timeline of parallelization efficacy ofsupercomputers.', 'updated': '2016-07-31 19:02:34', 'entry_id': 'http://arxiv.org/abs/1608.00249v1', 'published': '2016-07-31 19:02:34', 'categories': ['cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.DC'}, {'doi': None, 'links': ['http://arxiv.org/abs/1708.01462v2', 'http://arxiv.org/pdf/1708.01462v2'], 'title': \\\"How Amdahl's low restricts supercomputer applications and building ever bigger supercomputers\\\", 'authors': ['János Végh'], 'comment': '30 pages, 10 figures', 'pdf_url': 'http://arxiv.org/pdf/1708.01462v2', 'summary': \\\"This paper reinterprets Amdahl's law in terms of execution time and appliesthis simple model to supercomputing. The systematic discussion results inpractical formulas enabling to calculate expected running time using largenumber of processors from experimental runs using low number of processors,delivers a quantitative measure of computational efficiency of supercomputingapplications. Through separating non-parallelizable contribution to fractionsaccording to their origin, Amdahl's law enables to derive a timeline forsupercomputers (quite similar to Moore's law) and describes why Amdahl's lawlimits the size of supercomputers. The paper validates that Amdahl's 50-yearsold model (with slight extension) correctly describes the performancelimitations of the present supercomputers. Using some simple and reasonableassumptions, the absolute performance bound of supercomputers is concluded,furthermore that serious enhancements are still necessary to achieve theexaFLOPS dream value.\\\", 'updated': '2017-12-29 06:26:45', 'entry_id': 'http://arxiv.org/abs/1708.01462v2', 'published': '2017-08-04 11:56:45', 'categories': ['cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.DC'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/1908.10698v1', 'http://arxiv.org/pdf/1908.10698v1'], 'title': 'Thermal surface neutralization of Fr ions with metal foils for magneto-optical trapping of radioisotopes', 'authors': ['H. Kawamura', 'T. Aoki', 'K. Harada', 'T. Inoue', 'S. Ito', 'K. Kato', 'L. Koehler', 'K. Sakamoto', 'A. Uchiyama', 'Y. Sakemi'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/1908.10698v1', 'summary': 'We investigate neutralization processes (especially thermal surfaceneutralization), which are required for the magneto-optical trapping ofradioactive atoms. A variety of neutralization methods are first summarized:neutral beam injection for fusion reactors, neutral atom implantation insemiconductor processing, and the production of radioactive neutral atoms inaccelerators. We focus on thermal surface neutralization, which producesneutral atoms in the thermal energy range for laser cooling. The experimentswere carried out with yttrium, gadolinium, and zirconium foils to neutralizefrancium and rubidium ions for magneto-optical trapping. The results reconfirmthat yttrium foil is a good neutralizer (i.e., it has a neutral releaseefficiency $>65\\\\\\\\%$). In addition, the release fraction when using yttrium foilexceeds 75\\\\\\\\% at 1350 K, which is greater than the release fraction for theother foils. This reconfirmation is important because few previous studies havefocused on thermal surface neutralization. Moreover, the results show that theneutralization efficiency is strongly influenced by the experimental processitself.', 'updated': '2019-08-28 13:01:01', 'entry_id': 'http://arxiv.org/abs/1908.10698v1', 'published': '2019-08-28 13:01:01', 'categories': ['physics.ins-det'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'physics.ins-det'}, {'doi': None, 'links': ['http://arxiv.org/abs/1908.10686v1', 'http://arxiv.org/pdf/1908.10686v1'], 'title': 'Alkali ion-to-neutral atom converter for the magneto-optical trap of a radioactive isotope', 'authors': ['Hirokazu Kawamura', 'Ken-ichi Harada', 'Tomoya Sato', 'Saki Ezure', 'Hiroshi Arikawa', 'Takeshi Furukawa', 'Tomohiro Hayamizu', 'Takeshi Inoue', 'Taisuke Ishikawa', 'Masatoshi Itoh', 'Tomohiro Kato', 'Akihito Oikawa', 'Takatoshi Aoki', 'Atsushi Hatakeyama', 'Yasuhiro Sakemi'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/1908.10686v1', 'summary': 'We have developed a unique neutralizer device that uses an yttrium targetsurrounded by a platinum wall to magneto-optically trap radioactive atoms. Ingeneral, the radioactive nucleus produced in a nuclear reaction is extractedand transported in ion form. For the magneto-optical trap, thermalneutralization must occur on the surface of a metal with a small work function.The converter can produce a neutral atomic beam with small angular divergencethat, given the recycling of atoms and ions, converts ions into neutral atomswith remarkable efficiency. We demonstrated the ion neutralization processusing stable rubidium and confirmed $10^6$ neutralized atoms in themagneto-optical trap. Additionally, the experiment using francium demonstratedthe obtaining of neutralized francium atoms.', 'updated': '2019-08-28 12:38:44', 'entry_id': 'http://arxiv.org/abs/1908.10686v1', 'published': '2019-08-28 12:38:44', 'categories': ['physics.atom-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'physics.atom-ph'}]}, {'result': [{'doi': '10.1088/1361-648X/aa761f', 'links': ['http://dx.doi.org/10.1088/1361-648X/aa761f', 'http://arxiv.org/abs/1611.09106v1', 'http://arxiv.org/pdf/1611.09106v1'], 'title': 'Three-electron spin qubits', 'authors': ['Maximilian Russ', 'Guido Burkard'], 'comment': '42 pages, 13 figures', 'pdf_url': 'http://arxiv.org/pdf/1611.09106v1', 'summary': 'The goal of this article is to review the progress of three-electron spinqubits from their inception to the state of the art. We direct the main focustowards the resonant exchange (RX) qubit and the exchange-only qubit, but wealso discuss other qubit implementations using three electron spins. For eachthree-spin qubit we describe the qubit model, the physical realization, theimplementations of single-qubit operations, as well as the read-out andinitialization schemes. Two-qubit gates and decoherence properties arediscussed for the RX qubit and the exchange-only qubit, thereby, completing thelist of requirements for a viable candidate qubit implementation for quantumcomputation. We start with describing the full system of three electrons in atriple quantum dot, then discuss the charge-stability diagram and restrictourselves to the relevant subsystem, introduce the qubit states, and discussimportant transitions to other charge states. Introducing the various qubitimplementations, we begin with the exchange-only qubit, followed by thespin-charge qubit, the hybrid qubit, and the RX qubit, discussing for each thesingle-qubit operations, read-out, and initialization methods, whereas the mainfocus will be on the RX qubit, whose single-qubit operations are realized bydriving the qubit at its resonant frequency in the microwave range similar toelectron spin resonance. Two different types of two-qubit operations arepresented for the exchange-only and the RX qubit which can be divided intoshort-ranged and long-ranged interactions. Both of these interaction types canbe expected to be necessary in a large-scale quantum computer. We also takeinto account the decoherence of the qubit through the influence of magneticnoise as well as dephasing due to charge noise.', 'updated': '2016-11-28 13:21:43', 'entry_id': 'http://arxiv.org/abs/1611.09106v1', 'published': '2016-11-28 13:21:43', 'categories': ['cond-mat.mes-hall'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cond-mat.mes-hall'}, {'doi': '10.1103/PhysRevB.77.212506', 'links': ['http://dx.doi.org/10.1103/PhysRevB.77.212506', 'http://arxiv.org/abs/cond-mat/0703505v1', 'http://arxiv.org/pdf/cond-mat/0703505v1'], 'title': 'Macroscopic Many-Qubit Interactions in Superconducting Flux Qubits', 'authors': ['Sam Young Cho', 'Mun Dae Kim'], 'comment': '5 pages, 1 figure', 'pdf_url': 'http://arxiv.org/pdf/cond-mat/0703505v1', 'summary': 'Superconducting flux qubits are considered to investigate macroscopicmany-qubit interactions.  Many-qubit states based on current states can be manipulated through thecurrent-phase relation in each superconducting loop.  For flux qubit systems comprised of $N$ qubit loops, a general expression oflow energy Hamiltonian is presented in terms of low energy levels of qubits andmacroscopic quantum tunnelings between the many-qubit states.  Many-qubit interactions classified by {\\\\\\\\em Ising type- or tunnel-}exchangeinteractions can be observable experimentally.  Flux qubit systems can provide various artificial-spin systems to studymany-body systems that cannot be found naturally.', 'updated': '2007-03-20 02:20:35', 'entry_id': 'http://arxiv.org/abs/cond-mat/0703505v1', 'published': '2007-03-20 02:20:35', 'categories': ['cond-mat.supr-con', 'cond-mat.mes-hall'], 'journal_ref': 'Phys. Rev. B 77, 212506 (2008)', 'pdf_downloaded': None, 'primary_category': 'cond-mat.supr-con'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2412.18979v1', 'http://arxiv.org/pdf/2412.18979v1'], 'title': 'Quantum memristors for neuromorphic quantum machine learning', 'authors': ['Lucas Lamata'], 'comment': 'Invited Perspective', 'pdf_url': 'http://arxiv.org/pdf/2412.18979v1', 'summary': 'Quantum machine learning may permit to realize more efficient machinelearning calculations with near-term quantum devices. Among the diverse quantummachine learning paradigms which are currently being considered, quantummemristors are promising as a way of combining, in the same quantum hardware, aunitary evolution with the nonlinearity provided by the measurement andfeedforward. Thus, an efficient way of deploying neuromorphic quantum computingfor quantum machine learning may be enabled.', 'updated': '2024-12-25 20:21:24', 'entry_id': 'http://arxiv.org/abs/2412.18979v1', 'published': '2024-12-25 20:21:24', 'categories': ['quant-ph', 'cs.NE'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0501176v2', 'http://arxiv.org/pdf/quant-ph/0501176v2'], 'title': 'Simulations of Quantum Turing Machines by Quantum Multi-Stack Machines', 'authors': ['Daowen Qiu'], 'comment': '25 pages', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0501176v2', 'summary': 'As was well known, in classical computation, Turing machines, circuits,multi-stack machines, and multi-counter machines are equivalent, that is, theycan simulate each other in polynomial time. In quantum computation, Yao [11]first proved that for any quantum Turing machines $M$, there exists quantumBoolean circuit $(n,t)$-simulating $M$, where $n$ denotes the length of inputstrings, and $t$ is the number of move steps before machine stopping. However,the simulations of quantum Turing machines by quantum multi-stack machines andquantum multi-counter machines have not been considered, and quantummulti-stack machines have not been established, either. Though quantum countermachines were dealt with by Kravtsev [6] and Yamasaki {\\\\\\\\it et al.} [10], inwhich the machines count with $0,\\\\\\\\pm 1$ only, we sense that it is difficult tosimulate quantum Turing machines in terms of this fashion of quantum computingdevices, and we therefore prove that the quantum multi-counter machines allowedto count with $0,\\\\\\\\pm 1,\\\\\\\\pm 2,...,\\\\\\\\pm n$ for some $n>1$ can efficiently simulatequantum Turing machines.  Therefore, our mail goals are to establish quantum multi-stack machines andquantum multi-counter machines with counts $0,\\\\\\\\pm 1,\\\\\\\\pm 2,...,\\\\\\\\pm n$ and $n>1$,and particularly to simulate quantum Turing machines by these quantum computingdevices.', 'updated': '2005-06-06 17:29:54', 'entry_id': 'http://arxiv.org/abs/quant-ph/0501176v2', 'published': '2005-01-30 04:42:12', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2208.00733v1', 'http://arxiv.org/pdf/2208.00733v1'], 'title': 'The Rise of Quantum Internet Computing', 'authors': ['Seng W. Loke'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2208.00733v1', 'summary': 'This article highlights quantum Internet computing as referring todistributed quantum computing over the quantum Internet, analogous to(classical) Internet computing involving (classical) distributed computing overthe (classical) Internet. Relevant to quantum Internet computing would be areasof study such as quantum protocols for distributed nodes using quantuminformation for computations, quantum cloud computing, delegated verifiableblind or private computing, non-local gates, and distributed quantumapplications, over Internet-scale distances.', 'updated': '2022-08-01 10:36:13', 'entry_id': 'http://arxiv.org/abs/2208.00733v1', 'published': '2022-08-01 10:36:13', 'categories': ['cs.ET', 'cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.ET'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0003151v1', 'http://arxiv.org/pdf/quant-ph/0003151v1'], 'title': 'Unconventional Quantum Computing Devices', 'authors': ['Seth Lloyd'], 'comment': '9 pages, plain TeX, article from 1998 conference proceedings\\\\n  proposing fermionic quantum computers', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0003151v1', 'summary': \\\"This paper investigates a variety of unconventional quantum computationdevices, including fermionic quantum computers and computers that exploitnonlinear quantum mechanics. It is shown that unconventional quantum computingdevices can in principle compute some quantities more rapidly than`conventional' quantum computers.\\\", 'updated': '2000-03-31 22:07:23', 'entry_id': 'http://arxiv.org/abs/quant-ph/0003151v1', 'published': '2000-03-31 22:07:23', 'categories': ['quant-ph'], 'journal_ref': \\\"in `Unconventional Models of Computation,' C.S. Calude, J. Casti,\\\\n  M.J. Dinneen, eds., Springer, Singapore, 1998\\\", 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2208.00733v1', 'http://arxiv.org/pdf/2208.00733v1'], 'title': 'The Rise of Quantum Internet Computing', 'authors': ['Seng W. Loke'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2208.00733v1', 'summary': 'This article highlights quantum Internet computing as referring todistributed quantum computing over the quantum Internet, analogous to(classical) Internet computing involving (classical) distributed computing overthe (classical) Internet. Relevant to quantum Internet computing would be areasof study such as quantum protocols for distributed nodes using quantuminformation for computations, quantum cloud computing, delegated verifiableblind or private computing, non-local gates, and distributed quantumapplications, over Internet-scale distances.', 'updated': '2022-08-01 10:36:13', 'entry_id': 'http://arxiv.org/abs/2208.00733v1', 'published': '2022-08-01 10:36:13', 'categories': ['cs.ET', 'cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.ET'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0003151v1', 'http://arxiv.org/pdf/quant-ph/0003151v1'], 'title': 'Unconventional Quantum Computing Devices', 'authors': ['Seth Lloyd'], 'comment': '9 pages, plain TeX, article from 1998 conference proceedings\\\\n  proposing fermionic quantum computers', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0003151v1', 'summary': \\\"This paper investigates a variety of unconventional quantum computationdevices, including fermionic quantum computers and computers that exploitnonlinear quantum mechanics. It is shown that unconventional quantum computingdevices can in principle compute some quantities more rapidly than`conventional' quantum computers.\\\", 'updated': '2000-03-31 22:07:23', 'entry_id': 'http://arxiv.org/abs/quant-ph/0003151v1', 'published': '2000-03-31 22:07:23', 'categories': ['quant-ph'], 'journal_ref': \\\"in `Unconventional Models of Computation,' C.S. Calude, J. Casti,\\\\n  M.J. Dinneen, eds., Springer, Singapore, 1998\\\", 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  25\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'arxiv_results': [{'result': [{'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0311196v1', 'http://arxiv.org/pdf/quant-ph/0311196v1'], 'title': 'Von Neumann Quantum Processors', 'authors': ['Alexander Yu. Vlasov'], 'comment': 'LaTeX 8 pages, for 304th WEH Seminar \\\"Elementary Quantum Processors,\\\"\\\\n  13-15 October 2003', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0311196v1', 'summary': 'Most modern classical processors support so-called von Neumann architecturewith program and data registers. In present work is revisited similar approachto models of quantum processors. Deterministic programmable quantum gate arraysare considered as an example. They are also called von Neumann quantumprocessors here and use conditional quantum dynamics. Such devices have someproblems with universality, but consideration of hybrid quantum processors,i.e., models with both continuous and discrete quantum variables resolves theproblems. It is also discussed comparison of such a model of quantum processorswith more traditional approach.', 'updated': '2003-11-27 15:43:16', 'entry_id': 'http://arxiv.org/abs/quant-ph/0311196v1', 'published': '2003-11-27 15:43:16', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': '10.1126/sciadv.abj6624', 'links': ['http://dx.doi.org/10.1126/sciadv.abj6624', 'http://arxiv.org/abs/2105.02447v2', 'http://arxiv.org/pdf/2105.02447v2'], 'title': 'Programmable and sequential Gaussian gates in a loop-based single-mode photonic quantum processor', 'authors': ['Yutaro Enomoto', 'Kazuma Yonezu', 'Yosuke Mitsuhashi', 'Kan Takase', 'Shuntaro Takeda'], 'comment': '17 pages, 6 figures. 5 pages, 3 figures in the supplementary\\\\n  materials', 'pdf_url': 'http://arxiv.org/pdf/2105.02447v2', 'summary': 'A quantum processor to import, process, and export optical quantum states isa common core technology enabling various photonic quantum informationprocessing. However, there has been no photonic processor which issimultaneously universal, scalable, and programmable. Here, we report on anoriginal loop-based single-mode versatile photonic quantum processor which isdesigned to be universal, scalable, and programmable. Our processor can performarbitrarily many steps of programmable quantum operations on a givensingle-mode optical quantum state by time-domain processing in a dynamicallycontrolled loop-based optical circuit. We use this processor to demonstrateprogrammable single-mode Gaussian gates and multi-step squeezing gates. Inaddition, we prove that the processor can perform universal quantum operationsby injecting appropriate ancillary states and also be straightforwardlyextended to a multi-mode processor. These results show that our processor isprogrammable, scalable, and potentially universal, leading to be suitable forgeneral-purpose applications.', 'updated': '2021-11-14 23:50:51', 'entry_id': 'http://arxiv.org/abs/2105.02447v2', 'published': '2021-05-06 05:27:35', 'categories': ['quant-ph'], 'journal_ref': 'Science Advances 7, eabj6624 (2021)', 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}, {'result': [{'doi': '10.1109/TPDS.2020.3044846', 'links': ['http://dx.doi.org/10.1109/TPDS.2020.3044846', 'http://arxiv.org/abs/2009.06387v2', 'http://arxiv.org/pdf/2009.06387v2'], 'title': 'Inferring the Dynamics of the State Evolution During Quantum Annealing', 'authors': ['Elijah Pelofske', 'Georg Hahn', 'Hristo Djidjev'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2009.06387v2', 'summary': 'To solve an optimization problem using a commercial quantum annealer, one hasto represent the problem of interest as an Ising or a quadratic unconstrainedbinary optimization (QUBO) problem and submit its coefficients to the annealer,which then returns a user-specified number of low-energy solutions. It would beuseful to know what happens in the quantum processor during the anneal processso that one could design better algorithms or suggest improvements to thehardware. However, existing quantum annealers are not able to directly extractsuch information from the processor. Hence, in this work we propose to useadvanced features of D-Wave 2000Q to indirectly infer information about thedynamics of the state evolution during the anneal process. Specifically, D-Wave2000Q allows the user to customize the anneal schedule, that is, the schedulewith which the anneal fraction is changed from the start to the end of theanneal. Using this feature, we design a set of modified anneal schedules whoseoutputs can be used to generate information about the states of the system atuser-defined time points during a standard anneal. With this process, called\\\"slicing\\\", we obtain approximate distributions of lowest-energy annealsolutions as the anneal time evolves. We use our technique to obtain a varietyof insights into the annealer, such as the state evolution during annealing,when individual bits in an evolving solution flip during the anneal process andwhen they stabilize, and we introduce a technique to estimate the freeze-outpoint of both the system as well as of individual qubits.', 'updated': '2020-11-20 02:12:21', 'entry_id': 'http://arxiv.org/abs/2009.06387v2', 'published': '2020-09-10 18:14:28', 'categories': ['quant-ph', 'cond-mat.dis-nn', 'cond-mat.stat-mech', 'cs.ET'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': '10.1088/1361-6633/ac8c54', 'links': ['http://dx.doi.org/10.1088/1361-6633/ac8c54', 'http://arxiv.org/abs/2112.07491v3', 'http://arxiv.org/pdf/2112.07491v3'], 'title': 'Quantum Annealing for Industry Applications: Introduction and Review', 'authors': ['Sheir Yarkoni', 'Elena Raponi', 'Thomas Bäck', 'Sebastian Schmitt'], 'comment': 'major revision with extended noise section and discussion of\\\\n  alternative platforms', 'pdf_url': 'http://arxiv.org/pdf/2112.07491v3', 'summary': 'Quantum annealing is a heuristic quantum optimization algorithm that can beused to solve combinatorial optimization problems. In recent years, advances inquantum technologies have enabled the development of small- andintermediate-scale quantum processors that implement the quantum annealingalgorithm for programmable use. Specifically, quantum annealing processorsproduced by D-Wave Systems have been studied and tested extensively in bothresearch and industrial settings across different disciplines. In this paper weprovide a literature review of the theoretical motivations for quantumannealing as a heuristic quantum optimization algorithm, the software andhardware that is required to use such quantum processors, and thestate-of-the-art applications and proofs-of-concepts that have beendemonstrated using them. The goal of our review is to provide a centralized andcondensed source regarding applications of quantum annealing technology. Weidentify the advantages, limitations, and potential of quantum annealing forboth researchers and practitioners from various fields.', 'updated': '2022-06-13 08:37:49', 'entry_id': 'http://arxiv.org/abs/2112.07491v3', 'published': '2021-12-14 15:58:30', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/1608.00249v1', 'http://arxiv.org/pdf/1608.00249v1'], 'title': 'Comments on the parallelization efficiency of the Sunway TaihuLight supercomputer', 'authors': ['János Végh'], 'comment': '4 figures', 'pdf_url': 'http://arxiv.org/pdf/1608.00249v1', 'summary': 'In the world of supercomputers, the large number of processors requires tominimize the inefficiencies of parallelization, which appear as a sequentialpart of the program from the point of view of Amdahl\\\\'s law. The recentlysuggested new figure of merit is applied to the recently presentedsupercomputer, and the timeline of \\\"Top 500\\\" supercomputers is scrutinizedusing the metric. It is demonstrated, that in addition to the computingperformance and power consumption, the new supercomputer is also excellent inthe efficiency of parallelization. Based on the suggested merit, a \\\"Moore-law\\\"like observation is derived for the timeline of parallelization efficacy ofsupercomputers.', 'updated': '2016-07-31 19:02:34', 'entry_id': 'http://arxiv.org/abs/1608.00249v1', 'published': '2016-07-31 19:02:34', 'categories': ['cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.DC'}, {'doi': None, 'links': ['http://arxiv.org/abs/1708.01462v2', 'http://arxiv.org/pdf/1708.01462v2'], 'title': \\\"How Amdahl's low restricts supercomputer applications and building ever bigger supercomputers\\\", 'authors': ['János Végh'], 'comment': '30 pages, 10 figures', 'pdf_url': 'http://arxiv.org/pdf/1708.01462v2', 'summary': \\\"This paper reinterprets Amdahl's law in terms of execution time and appliesthis simple model to supercomputing. The systematic discussion results inpractical formulas enabling to calculate expected running time using largenumber of processors from experimental runs using low number of processors,delivers a quantitative measure of computational efficiency of supercomputingapplications. Through separating non-parallelizable contribution to fractionsaccording to their origin, Amdahl's law enables to derive a timeline forsupercomputers (quite similar to Moore's law) and describes why Amdahl's lawlimits the size of supercomputers. The paper validates that Amdahl's 50-yearsold model (with slight extension) correctly describes the performancelimitations of the present supercomputers. Using some simple and reasonableassumptions, the absolute performance bound of supercomputers is concluded,furthermore that serious enhancements are still necessary to achieve theexaFLOPS dream value.\\\", 'updated': '2017-12-29 06:26:45', 'entry_id': 'http://arxiv.org/abs/1708.01462v2', 'published': '2017-08-04 11:56:45', 'categories': ['cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.DC'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/1908.10698v1', 'http://arxiv.org/pdf/1908.10698v1'], 'title': 'Thermal surface neutralization of Fr ions with metal foils for magneto-optical trapping of radioisotopes', 'authors': ['H. Kawamura', 'T. Aoki', 'K. Harada', 'T. Inoue', 'S. Ito', 'K. Kato', 'L. Koehler', 'K. Sakamoto', 'A. Uchiyama', 'Y. Sakemi'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/1908.10698v1', 'summary': 'We investigate neutralization processes (especially thermal surfaceneutralization), which are required for the magneto-optical trapping ofradioactive atoms. A variety of neutralization methods are first summarized:neutral beam injection for fusion reactors, neutral atom implantation insemiconductor processing, and the production of radioactive neutral atoms inaccelerators. We focus on thermal surface neutralization, which producesneutral atoms in the thermal energy range for laser cooling. The experimentswere carried out with yttrium, gadolinium, and zirconium foils to neutralizefrancium and rubidium ions for magneto-optical trapping. The results reconfirmthat yttrium foil is a good neutralizer (i.e., it has a neutral releaseefficiency $>65\\\\\\\\%$). In addition, the release fraction when using yttrium foilexceeds 75\\\\\\\\% at 1350 K, which is greater than the release fraction for theother foils. This reconfirmation is important because few previous studies havefocused on thermal surface neutralization. Moreover, the results show that theneutralization efficiency is strongly influenced by the experimental processitself.', 'updated': '2019-08-28 13:01:01', 'entry_id': 'http://arxiv.org/abs/1908.10698v1', 'published': '2019-08-28 13:01:01', 'categories': ['physics.ins-det'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'physics.ins-det'}, {'doi': None, 'links': ['http://arxiv.org/abs/1908.10686v1', 'http://arxiv.org/pdf/1908.10686v1'], 'title': 'Alkali ion-to-neutral atom converter for the magneto-optical trap of a radioactive isotope', 'authors': ['Hirokazu Kawamura', 'Ken-ichi Harada', 'Tomoya Sato', 'Saki Ezure', 'Hiroshi Arikawa', 'Takeshi Furukawa', 'Tomohiro Hayamizu', 'Takeshi Inoue', 'Taisuke Ishikawa', 'Masatoshi Itoh', 'Tomohiro Kato', 'Akihito Oikawa', 'Takatoshi Aoki', 'Atsushi Hatakeyama', 'Yasuhiro Sakemi'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/1908.10686v1', 'summary': 'We have developed a unique neutralizer device that uses an yttrium targetsurrounded by a platinum wall to magneto-optically trap radioactive atoms. Ingeneral, the radioactive nucleus produced in a nuclear reaction is extractedand transported in ion form. For the magneto-optical trap, thermalneutralization must occur on the surface of a metal with a small work function.The converter can produce a neutral atomic beam with small angular divergencethat, given the recycling of atoms and ions, converts ions into neutral atomswith remarkable efficiency. We demonstrated the ion neutralization processusing stable rubidium and confirmed $10^6$ neutralized atoms in themagneto-optical trap. Additionally, the experiment using francium demonstratedthe obtaining of neutralized francium atoms.', 'updated': '2019-08-28 12:38:44', 'entry_id': 'http://arxiv.org/abs/1908.10686v1', 'published': '2019-08-28 12:38:44', 'categories': ['physics.atom-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'physics.atom-ph'}]}, {'result': [{'doi': '10.1088/1361-648X/aa761f', 'links': ['http://dx.doi.org/10.1088/1361-648X/aa761f', 'http://arxiv.org/abs/1611.09106v1', 'http://arxiv.org/pdf/1611.09106v1'], 'title': 'Three-electron spin qubits', 'authors': ['Maximilian Russ', 'Guido Burkard'], 'comment': '42 pages, 13 figures', 'pdf_url': 'http://arxiv.org/pdf/1611.09106v1', 'summary': 'The goal of this article is to review the progress of three-electron spinqubits from their inception to the state of the art. We direct the main focustowards the resonant exchange (RX) qubit and the exchange-only qubit, but wealso discuss other qubit implementations using three electron spins. For eachthree-spin qubit we describe the qubit model, the physical realization, theimplementations of single-qubit operations, as well as the read-out andinitialization schemes. Two-qubit gates and decoherence properties arediscussed for the RX qubit and the exchange-only qubit, thereby, completing thelist of requirements for a viable candidate qubit implementation for quantumcomputation. We start with describing the full system of three electrons in atriple quantum dot, then discuss the charge-stability diagram and restrictourselves to the relevant subsystem, introduce the qubit states, and discussimportant transitions to other charge states. Introducing the various qubitimplementations, we begin with the exchange-only qubit, followed by thespin-charge qubit, the hybrid qubit, and the RX qubit, discussing for each thesingle-qubit operations, read-out, and initialization methods, whereas the mainfocus will be on the RX qubit, whose single-qubit operations are realized bydriving the qubit at its resonant frequency in the microwave range similar toelectron spin resonance. Two different types of two-qubit operations arepresented for the exchange-only and the RX qubit which can be divided intoshort-ranged and long-ranged interactions. Both of these interaction types canbe expected to be necessary in a large-scale quantum computer. We also takeinto account the decoherence of the qubit through the influence of magneticnoise as well as dephasing due to charge noise.', 'updated': '2016-11-28 13:21:43', 'entry_id': 'http://arxiv.org/abs/1611.09106v1', 'published': '2016-11-28 13:21:43', 'categories': ['cond-mat.mes-hall'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cond-mat.mes-hall'}, {'doi': '10.1103/PhysRevB.77.212506', 'links': ['http://dx.doi.org/10.1103/PhysRevB.77.212506', 'http://arxiv.org/abs/cond-mat/0703505v1', 'http://arxiv.org/pdf/cond-mat/0703505v1'], 'title': 'Macroscopic Many-Qubit Interactions in Superconducting Flux Qubits', 'authors': ['Sam Young Cho', 'Mun Dae Kim'], 'comment': '5 pages, 1 figure', 'pdf_url': 'http://arxiv.org/pdf/cond-mat/0703505v1', 'summary': 'Superconducting flux qubits are considered to investigate macroscopicmany-qubit interactions.  Many-qubit states based on current states can be manipulated through thecurrent-phase relation in each superconducting loop.  For flux qubit systems comprised of $N$ qubit loops, a general expression oflow energy Hamiltonian is presented in terms of low energy levels of qubits andmacroscopic quantum tunnelings between the many-qubit states.  Many-qubit interactions classified by {\\\\\\\\em Ising type- or tunnel-}exchangeinteractions can be observable experimentally.  Flux qubit systems can provide various artificial-spin systems to studymany-body systems that cannot be found naturally.', 'updated': '2007-03-20 02:20:35', 'entry_id': 'http://arxiv.org/abs/cond-mat/0703505v1', 'published': '2007-03-20 02:20:35', 'categories': ['cond-mat.supr-con', 'cond-mat.mes-hall'], 'journal_ref': 'Phys. Rev. B 77, 212506 (2008)', 'pdf_downloaded': None, 'primary_category': 'cond-mat.supr-con'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2412.18979v1', 'http://arxiv.org/pdf/2412.18979v1'], 'title': 'Quantum memristors for neuromorphic quantum machine learning', 'authors': ['Lucas Lamata'], 'comment': 'Invited Perspective', 'pdf_url': 'http://arxiv.org/pdf/2412.18979v1', 'summary': 'Quantum machine learning may permit to realize more efficient machinelearning calculations with near-term quantum devices. Among the diverse quantummachine learning paradigms which are currently being considered, quantummemristors are promising as a way of combining, in the same quantum hardware, aunitary evolution with the nonlinearity provided by the measurement andfeedforward. Thus, an efficient way of deploying neuromorphic quantum computingfor quantum machine learning may be enabled.', 'updated': '2024-12-25 20:21:24', 'entry_id': 'http://arxiv.org/abs/2412.18979v1', 'published': '2024-12-25 20:21:24', 'categories': ['quant-ph', 'cs.NE'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0501176v2', 'http://arxiv.org/pdf/quant-ph/0501176v2'], 'title': 'Simulations of Quantum Turing Machines by Quantum Multi-Stack Machines', 'authors': ['Daowen Qiu'], 'comment': '25 pages', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0501176v2', 'summary': 'As was well known, in classical computation, Turing machines, circuits,multi-stack machines, and multi-counter machines are equivalent, that is, theycan simulate each other in polynomial time. In quantum computation, Yao [11]first proved that for any quantum Turing machines $M$, there exists quantumBoolean circuit $(n,t)$-simulating $M$, where $n$ denotes the length of inputstrings, and $t$ is the number of move steps before machine stopping. However,the simulations of quantum Turing machines by quantum multi-stack machines andquantum multi-counter machines have not been considered, and quantummulti-stack machines have not been established, either. Though quantum countermachines were dealt with by Kravtsev [6] and Yamasaki {\\\\\\\\it et al.} [10], inwhich the machines count with $0,\\\\\\\\pm 1$ only, we sense that it is difficult tosimulate quantum Turing machines in terms of this fashion of quantum computingdevices, and we therefore prove that the quantum multi-counter machines allowedto count with $0,\\\\\\\\pm 1,\\\\\\\\pm 2,...,\\\\\\\\pm n$ for some $n>1$ can efficiently simulatequantum Turing machines.  Therefore, our mail goals are to establish quantum multi-stack machines andquantum multi-counter machines with counts $0,\\\\\\\\pm 1,\\\\\\\\pm 2,...,\\\\\\\\pm n$ and $n>1$,and particularly to simulate quantum Turing machines by these quantum computingdevices.', 'updated': '2005-06-06 17:29:54', 'entry_id': 'http://arxiv.org/abs/quant-ph/0501176v2', 'published': '2005-01-30 04:42:12', 'categories': ['quant-ph'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2208.00733v1', 'http://arxiv.org/pdf/2208.00733v1'], 'title': 'The Rise of Quantum Internet Computing', 'authors': ['Seng W. Loke'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2208.00733v1', 'summary': 'This article highlights quantum Internet computing as referring todistributed quantum computing over the quantum Internet, analogous to(classical) Internet computing involving (classical) distributed computing overthe (classical) Internet. Relevant to quantum Internet computing would be areasof study such as quantum protocols for distributed nodes using quantuminformation for computations, quantum cloud computing, delegated verifiableblind or private computing, non-local gates, and distributed quantumapplications, over Internet-scale distances.', 'updated': '2022-08-01 10:36:13', 'entry_id': 'http://arxiv.org/abs/2208.00733v1', 'published': '2022-08-01 10:36:13', 'categories': ['cs.ET', 'cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.ET'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0003151v1', 'http://arxiv.org/pdf/quant-ph/0003151v1'], 'title': 'Unconventional Quantum Computing Devices', 'authors': ['Seth Lloyd'], 'comment': '9 pages, plain TeX, article from 1998 conference proceedings\\\\n  proposing fermionic quantum computers', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0003151v1', 'summary': \\\"This paper investigates a variety of unconventional quantum computationdevices, including fermionic quantum computers and computers that exploitnonlinear quantum mechanics. It is shown that unconventional quantum computingdevices can in principle compute some quantities more rapidly than`conventional' quantum computers.\\\", 'updated': '2000-03-31 22:07:23', 'entry_id': 'http://arxiv.org/abs/quant-ph/0003151v1', 'published': '2000-03-31 22:07:23', 'categories': ['quant-ph'], 'journal_ref': \\\"in `Unconventional Models of Computation,' C.S. Calude, J. Casti,\\\\n  M.J. Dinneen, eds., Springer, Singapore, 1998\\\", 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}, {'result': [{'doi': None, 'links': ['http://arxiv.org/abs/2208.00733v1', 'http://arxiv.org/pdf/2208.00733v1'], 'title': 'The Rise of Quantum Internet Computing', 'authors': ['Seng W. Loke'], 'comment': None, 'pdf_url': 'http://arxiv.org/pdf/2208.00733v1', 'summary': 'This article highlights quantum Internet computing as referring todistributed quantum computing over the quantum Internet, analogous to(classical) Internet computing involving (classical) distributed computing overthe (classical) Internet. Relevant to quantum Internet computing would be areasof study such as quantum protocols for distributed nodes using quantuminformation for computations, quantum cloud computing, delegated verifiableblind or private computing, non-local gates, and distributed quantumapplications, over Internet-scale distances.', 'updated': '2022-08-01 10:36:13', 'entry_id': 'http://arxiv.org/abs/2208.00733v1', 'published': '2022-08-01 10:36:13', 'categories': ['cs.ET', 'cs.DC'], 'journal_ref': None, 'pdf_downloaded': None, 'primary_category': 'cs.ET'}, {'doi': None, 'links': ['http://arxiv.org/abs/quant-ph/0003151v1', 'http://arxiv.org/pdf/quant-ph/0003151v1'], 'title': 'Unconventional Quantum Computing Devices', 'authors': ['Seth Lloyd'], 'comment': '9 pages, plain TeX, article from 1998 conference proceedings\\\\n  proposing fermionic quantum computers', 'pdf_url': 'http://arxiv.org/pdf/quant-ph/0003151v1', 'summary': \\\"This paper investigates a variety of unconventional quantum computationdevices, including fermionic quantum computers and computers that exploitnonlinear quantum mechanics. It is shown that unconventional quantum computingdevices can in principle compute some quantities more rapidly than`conventional' quantum computers.\\\", 'updated': '2000-03-31 22:07:23', 'entry_id': 'http://arxiv.org/abs/quant-ph/0003151v1', 'published': '2000-03-31 22:07:23', 'categories': ['quant-ph'], 'journal_ref': \\\"in `Unconventional Models of Computation,' C.S. Calude, J. Casti,\\\\n  M.J. Dinneen, eds., Springer, Singapore, 1998\\\", 'pdf_downloaded': None, 'primary_category': 'quant-ph'}]}]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  26\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [{'id': '63837636-bca5-4b08-b576-e4e8235da0eb', 'name': 'user_new_1', 'about': 'This is a test user', 'metadata': {'age': 25, 'city': 'San Francisco', 'ppid': '63837636-bca5-4b08-b576-e4e8235da0eb', 'state': 'California', 'top_journals': \\\"['Nature', 'Science', 'IEEE Transactions on Quantum Engineering']\\\", 'top_scientist': 'Richard Feynman', 'top_research_area': 'Quantum Computing', 'research_interests': \\\"['Quantum Computing', 'Artificial Intelligence', 'Machine Learning']\\\", 'favorite_scientists': \\\"['Richard Feynman', 'Alan Turing', 'Geoffrey Hinton']\\\", 'latest_research_read': 'Quantum Machine Learning'}, 'created_at': '2025-04-21T16:18:02.798552Z', 'updated_at': '2025-04-21T16:18:02.798552Z'}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  27\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'user_info': {'id': '63837636-bca5-4b08-b576-e4e8235da0eb', 'name': 'user_new_1', 'about': 'This is a test user', 'metadata': {'age': 25, 'city': 'San Francisco', 'ppid': '63837636-bca5-4b08-b576-e4e8235da0eb', 'state': 'California', 'top_journals': \\\"['Nature', 'Science', 'IEEE Transactions on Quantum Engineering']\\\", 'top_scientist': 'Richard Feynman', 'top_research_area': 'Quantum Computing', 'research_interests': \\\"['Quantum Computing', 'Artificial Intelligence', 'Machine Learning']\\\", 'favorite_scientists': \\\"['Richard Feynman', 'Alan Turing', 'Geoffrey Hinton']\\\", 'latest_research_read': 'Quantum Machine Learning'}, 'created_at': '2025-04-21T16:18:02.798552Z', 'updated_at': '2025-04-21T16:18:02.798552Z'}}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  28\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [{'id': '068066fd-3ee0-7190-8000-6ffce2993bb3', 'title': 'Google Scholar Persona', 'content': ['This is a test google scholar persona. The user is a 25 year old living in San Francisco. He is a fan of Google Scholar and is a student at Stanford University.    He uses Google Scholar to stay updated with the latest research in quantum computing and artificial intelligence.    Over the last 3 months, he has read 100+ research papers on quantum computing and artificial intelligence.    He is particularly interested in the latest research in quantum machine learning and quantum error correction.    He is also interested in how LLMs are being used to solve problems in quantum mechanics.'], 'language': 'english', 'metadata': {}, 'modality': 'text', 'created_at': '2025-04-21T16:18:27.934304Z', 'embeddings': [[0.011083192, 0.010265074, -0.02482141, -0.010460598, 0.020221423, 0.015950741, 0.009189685, 0.03535919, 0.035400353, 0.050548412, 0.024059892, -0.043386016, 0.00232958, -0.00874718, 0.00012373079, 0.055199854, -0.04733768, -0.025047809, -0.06557298, -0.004569115, -0.004548534, -0.05141284, -0.11072901, -0.011587441, 0.04960166, 0.032333694, 0.022084057, -0.022289874, -0.014191014, -0.034679998, 0.013017862, 0.011494824, 0.026570847, -0.06581996, 0.006838237, -0.07590494, 0.015333292, 0.0196863, 0.045979295, 0.06479088, 0.04733768, -0.033012886, -0.009791696, 0.0067044566, 0.048531413, -0.06306203, 0.059233848, -0.005171127, 0.008994159, -0.018369079, 0.033609755, -0.022742668, 0.045979295, -0.06392645, -0.02212522, -0.085537136, 0.073640965, 0.011865293, 0.05178331, -0.04182181, -0.020046478, 0.035338607, -0.017710468, -0.044044625, 0.06339133, 0.04626744, 0.02173417, -0.008850088, -0.0050450647, 0.023504188, -0.01414985, 0.040031213, 0.03099589, 0.024059892, -0.0017404316, 0.012997281, 0.035811987, 0.0022202402, -0.08339664, -0.047749314, -0.018801292, -0.020375784, 0.00232958, 0.0047929403, 0.044579748, -0.046596743, 0.008438456, -0.13723812, 0.0285261, 0.0413896, -0.015395037, 0.027867487, 0.016948948, -0.015415619, 0.020036189, 0.02854668, 0.048160944, -0.014036652, 0.03124287, 0.009045614, -0.0020092789, -0.06442041, 0.027455855, -0.04227461, 0.08035057, -0.025088971, -0.061374333, 0.0055107237, 0.022578016, 0.0847962, -0.0013982625, -0.020344913, -0.06211527, 0.03420662, -0.045361847, 0.054623567, -0.068083934, -0.021528354, 0.018749839, -0.09014741, 0.013625019, -0.019521648, -0.006894836, -0.031819154, -0.015786087, 0.029081801, -0.0006901268, 0.019820081, 0.025315369, -0.012575358, -0.034721162, 0.039290275, -0.044826727, -0.08331432, -0.04820211, 0.01619772, 0.010918539, 0.036820482, 0.025953399, 0.009235993, -0.03817887, -0.029411107, 0.031716246, -0.03667641, -0.0413896, -0.021939985, -0.03175741, 0.009199975, 0.011031738, 0.03151043, -0.024862574, 0.0038204596, -0.010980284, -0.0146541, 0.052771226, 0.0007904621, 0.07442307, 0.0019526794, -0.004623142, 0.017237091, -0.023565933, 0.02867017, 0.013028153, 0.02955518, -0.04420928, -0.00048013014, 0.0004119536, 0.0045433883, -0.004880412, 0.039043296, 0.0085259285, 0.030069718, -0.010393708, 0.021548936, -0.010203329, 0.036655832, 0.025191879, -0.021960568, -0.06866022, -0.025624093, -0.053512163, 0.0795273, 0.027435273, 0.024059892, 0.010131293, 0.0023540205, 0.08150314, -0.013336877, 0.060139436, -0.0113301715, -0.004090593, -0.027702834, -0.0127503015, -0.02932878, 0.033136375, 0.033609755, 0.052112613, -0.0050810827, -0.015724342, -0.012287215, 0.01634179, -0.012174017, 0.0041214656, 0.0071418155, -0.03163392, 0.065490656, 0.042603914, 0.022969067, -0.052812386, 0.0004016628, -0.007954788, -0.032457184, -0.030646004, -0.046185113, -0.03342452, -0.013532402, 0.011988782, -0.043221362, 0.011206682, 0.021693008, -0.008654563, 0.012297506, 0.09278186, -0.00976597, -0.012565067, -0.00083548436, 0.0046540145, -0.003130976, -0.015528818, 0.03305405, 0.021672426, 0.009735097, 0.016815167, 0.093440466, 0.011021447, 0.050301433, -0.022042895, 0.024121637, 0.02457443, 0.026097469, -0.025109554, -0.019861246, -0.011155227, -0.045979295, 0.048613742, -0.013007572, -0.030831238, 0.003130976, 0.031263452, 0.056640565, -0.05178331, -0.030234372, 0.006354569, 0.037458513, 0.0015011705, 0.016557898, 0.053059366, -0.034350693, -0.0030898128, 0.006390587, 0.038919806, -0.00029634289, -0.016640224, 0.057710808, -0.028567262, -0.02019055, 0.018369079, -0.039146204, -0.038096543, -0.022166384, 0.0012651252, -0.04375648, 0.062609226, -0.009524136, -0.009853441, -0.05647591, -0.033115797, -0.041245528, 0.012812046, -0.025624093, 0.018863037, 0.018585185, -0.005737121, -0.0570522, -0.02492432, -0.003943949, -0.000830339, -0.04947817, -0.015034859, -0.012410705, -0.031592757, -0.018163262, -0.010012949, 0.032848235, 0.006339133, -0.033033468, 0.009446954, 0.0022189538, -0.023277791, -0.0076717916, 0.021898823, -0.031572174, -0.015734633, -0.023936402, 0.0008541364, 0.036861647, 0.028093886, 0.047173027, -0.03743793, 0.0006843382, 0.09064137, 0.019274669, -0.008772907, -0.028135048, 0.044867888, -0.040977966, 0.019676011, -0.0063339877, 0.033609755, -0.055899628, -0.016249174, 0.00016384883, -0.048531413, 0.027126549, -0.0047929403, -0.0011911602, -0.0006164833, -0.0034525634, -0.021034395, -0.028587844, 0.0018536304, -0.06536716, -0.03972249, -0.004142047, 0.021044686, -0.0074608303, 0.008227495, 0.08710133, -0.025562348, -0.016990112, -0.069195345, -0.025768165, -0.06651973, 0.0046128514, 0.025418276, -0.006977163, 0.035400353, 0.03290998, -0.0012902091, 0.0005965448, 0.0012651252, -0.01066127, 0.004136902, -0.043921135, 0.026076889, -0.017659014, 0.004093166, -0.037746657, 0.0028093886, -0.010259928, 0.015333292, -0.016732842, 0.010774468, 0.0040700114, 0.015127476, -0.038137708, 0.004391599, 0.014129269, 0.042603914, 0.016033066, -0.034350693, 0.052647736, -0.03214846, -0.012822337, -0.05824593, -0.027949814, -0.024368616, 0.021939985, -0.015888996, 0.027497018, -0.014839334, 0.030399024, 0.05478822, -0.009169103, 0.0018832164, -0.0011326312, 0.05141284, 0.027620507, -0.011855002, 0.030501932, -0.010753887, 0.006827946, 0.0021263366, -0.051906798, 0.034885813, 0.02403931, -0.0045511066, -0.018955654, 0.021281375, 0.00066504296, 0.01336775, 0.017761922, -0.058163602, -0.0020568736, 0.046349764, 0.0055210143, -0.016269755, -0.040092956, 0.023586513, 0.019490777, -0.005325489, -0.006020118, -0.006863964, -0.017885411, 0.014705554, 0.061374333, 0.0058914833, 0.05717569, -0.026776662, 0.047543496, 0.02918471, 0.044785563, -0.008901542, 0.0012175303, -0.061374333, 0.021178467, -0.0032493202, 0.0054798513, -0.023216046, -0.058204766, 0.0017275681, 4.4982055e-05, 0.0034885814, 0.034391854, 0.015384747, 0.004450771, 0.027352948, 0.012174017, -0.0096476255, -0.014314503, -0.046102785, -0.046349764, -0.01530242, -0.0393726, -0.050836552, -0.011669768, -0.031963225, -0.057134524, -0.015724342, 0.008459038, -0.013378041, 0.005361507, -0.10010891, -0.017772213, -0.009874023, -0.035791405, 0.040072378, 0.032827653, -0.001458721, -0.024903737, 0.006761056, 0.032663, 0.010177601, -0.0851255, -0.010218765, 0.021003524, -0.021795915, -0.09129998, -0.000582395, 0.015652306, 0.012523904, -0.003046077, -0.008062842, 0.0053975247, 0.016094811, 0.0096116075, 0.019398158, 0.00970937, -0.027497018, 0.017895702, -0.0066684387, 0.032580674, 0.01530242, -0.043921135, -0.016177138, -0.030934146, 0.00078338716, -0.007471121, -0.039434347, -0.0011049747, -0.061168518, 0.046843722, -0.020766836, -0.02222813, -0.04515603, -0.054253098, -0.03200439, -0.022166384, 0.025932817, 0.036161873, 0.0027476437, 0.014170432, 0.0181221, -0.027579345, -0.0019205206, 0.019233506, 0.015600854, -0.005423252, -0.12027887, 0.0063442783, 0.027826324, 0.02827912, -0.021548936, 0.01221518, 0.02224871, 0.02222813, 0.004641151, -0.0029791866, 0.0879246, 0.018852746, 0.0127503015, 0.0027553618, -0.0014021215, 0.02570642, -0.0149936965, 0.026118051, 0.016578479, -0.04589697, -0.01048118, -0.014005779, -0.062403414, 0.010990575, -0.027579345, -0.03408313, -0.02842319, -0.03163392, 0.0020272876, 0.023586513, 0.039269693, -0.011433079, 0.021363702, 0.008520783, -0.018616058, -0.012235762, 0.017669303, 0.019995024, 0.05371798, -0.06520251, 0.011649186, -0.0021739316, 0.010723014, 0.009169103, -0.011947619, -0.034659415, 0.010270218, 0.011278717, -0.02263976, -0.0037973053, 0.007229287, -0.028052721, 0.044291604, -0.00042063647, -0.018935073, 0.0036841065, -0.030419605, -0.01156686, -0.010450307, 0.042007048, -0.03461825, 0.051001206, -0.025088971, -0.025253624, -0.04169832, -0.0029457416, -0.003995403, 0.030769493, 0.021651844, -0.00970937, 0.04215112, -0.01583754, 0.017134182, -0.012101981, 0.015652306, 0.016413826, -0.011175809, 0.023360116, -0.028731914, -0.018317625, 0.004587124, -0.00507851, -0.023174882, 0.07285887, -0.0108773755, 0.010193038, 0.00079946656, -0.006817655, 0.052153777, 0.03021379, 0.015672889, 0.0015461928, 0.008093715, -0.0021070414, 0.045320686, 0.04412695, -0.029164128, -0.006004682, 0.035420936, 0.010445163, -0.01042458, 0.03111938, 0.00591721, -0.025541766, 0.052894715, 0.034391854, -0.00032914482, -0.014726135, 0.02920529, 0.01581696, -0.07257073, 0.027332366, -0.010270218, -0.027702834, 0.00282997, -0.022145802, -0.039928306, 0.022269292, 0.015086314, 0.07487586, 0.026920734, 0.0075328657, 0.023092557, -0.0072189965, -0.0042835455, -0.02443036, 0.013470657, 0.036326524, -0.007805572, 0.023936402, 0.042974383, -0.034474183, -0.00874718, -0.0038384686, -0.00456397, 0.06392645, -0.007800427, 0.008798635, 0.011144937, 0.0025070962, 0.020674217, 0.005310053, 0.04192472, 0.018976236, 0.035029884, 0.018194135, 0.028217375, 0.0017622996, 0.0034165457, 0.018708674, -0.023154302, 0.036182456, -0.0056753764, -0.004857258, 0.025253624, -0.0051608365, -0.02200173, 0.0039696763, -0.010949411, -0.015189221, -0.054458916, 0.05911036, 0.029637504, -0.0206948, -0.060756885, -0.04462091, 0.014437993, -0.018410241, -0.0324366, -0.017484069, 0.0063597145, 0.03330103, 0.0075174295, -0.0360178, 0.013645601, 0.021651844, 0.015384747, -0.01298699, -0.02945227, 0.07277654, -0.034268364, -0.01156686, -0.025809327, -0.013902871, 0.016002195, 0.02469792, 0.0037870146, -0.020869743, -0.023524769, -0.049560495, -0.013439786, -0.053923793, -0.039537255, -0.01658877, 0.012400415, 0.03099589, 0.028629007, -0.010589234, 0.009148521, -0.0033856733, -0.029040638, -0.0324366, 0.023710003, -0.006905127, 0.0057319757, 0.054211937, -0.0019179479, 0.0470907, -0.022042895, 0.014870207, -0.011453661, 0.03614129, 0.008206913, 0.03933144, -0.016105102, -0.036985137, -0.027867487, 0.01555969, 0.03519454, -0.012235762, 0.009055904, 0.006184771, 0.013203097, -0.012523904, 0.07368213, -0.0002317038, 0.019953862, 0.034144875, 0.019439321, -0.0197995, 0.057628483, 0.013697055, 0.01825588, -0.038405266, 0.027682252, -0.07005977, -0.0036017802, 0.012184308, 0.0028942877, 0.0066272756, -0.0075740293, 0.037746657, 0.0094572455, 0.023895238, 0.00014945779, -0.055611484, -0.052153777, -0.07310584, 0.0249449, -0.008515637, 0.020015607, 0.025233041, -0.022701506, 0.008587673, -0.012544486, 0.022413364, 0.010774468, -0.0057319757, -0.054253098, -0.02109614, -0.012204889, -0.05141284, 0.011196391, -0.025109554, 0.059521988, 0.027023641, 0.016506443, -0.008675145, -0.0023565933, -0.0066169845, -0.0024427788, -0.030172627, -0.014571773, 0.0101724565, -0.03805538, 0.01735029, -0.06586112, -0.0439623, 0.05334751, -0.02366884, 0.029225873, 0.01015702, -0.025953399, -3.400788e-05, -0.034124292, -0.012359251, 0.019995024, 0.011227263, 0.0059995367, 0.021960568, 0.008592818, -0.025912235, 0.014973114, -0.030419605, -0.006483204, 0.0108773755, -0.03356859, -0.0153641645, 0.036285363, -0.0077746995, -0.0029122964, 0.007249869, -0.0086134, -0.017566396, 0.025253624, 0.04898421, 0.021590099, 0.0023077119, -0.044950217, -0.009143376, -0.022310454, -0.0137999635, 0.0035734805, -0.013697055, 0.02776458, -0.003028068, 0.045732316, 0.04013412, -0.015158349, -0.020519856, -0.00662213, 0.0019230933, 0.016990112, 0.035791405, -0.046432093, 0.0021469183, 0.0065500946, 0.020550728, -0.032868817, 0.010146729, -0.0007647351, 0.041471925, 0.0275176, 0.027990976, 0.008711162, -0.034535926, 0.0028762787, 0.040360518, -0.02043753, -0.029493434, 0.026900152, 0.011824129, 0.019964153, 0.054458916, -0.031469267, -0.0034602815, -0.017381161, -0.0102444915, -0.026303286, -0.021569518, -0.034885813, -0.02403931, -0.008803779, 0.00996664, 0.0068896906, -0.04227461, 0.01530242, -0.04951933, 0.0051171007, -0.026961897, -0.013336877, -0.017700177, -0.0550352, -0.0267355, -0.011433079, -0.04976631, -0.018194135, 0.04515603, 0.034000803, -0.016763713, -0.028875986, 0.03443302, -0.033630334, 0.015981613, -0.027167713, -0.021487191, 0.014067524, -0.035276864, -0.052318428, 0.015786087, 0.031201707, 0.01735029, -0.058163602, 0.008695726, -0.015076023, -0.041492507, 0.022289874, 0.018996818, -0.044579748, 0.00047466316, -0.05248308, -0.008371566, 0.014077815, 0.022578016, -0.015117186, -0.018235298, -0.011381625, -0.043427177, 0.029987393, 0.001988697, 0.028855404, -0.0060612815, -0.013316296, -0.023092557, 0.0015847832, -0.00077631226, 0.015930159, 0.0111037735, -0.04293322, -0.020807998, 0.035956055, -0.048778392, 0.026900152, 0.0026807536, -0.030790074, 0.019737756, -0.017823666, -0.026015144, -0.0024762237, 0.015096604, -0.0027682253, 0.021590099, 0.013769091, 0.020746253, 0.008078278, 0.016948948, 0.046226274, -0.051454, -0.016527025, -0.025233041, -0.03906388, -0.045444176, -0.03227195, -0.031057635, -0.013110479, -0.0036789612, -0.009246284, -0.027435273, 0.05141284, 0.0065140766, 0.05116586, 0.07207677, 0.012122563, -0.013933743, -0.0071006524, 0.047131866, 0.00048495395, -0.025006644, -0.0050862283, 0.015209802, -0.007995952, 0.002745071, -0.016033066, 0.055076364, -0.026694337, -0.0027013351, -0.036964554, 0.024265707, 0.0030049137, -0.0073013227, -0.010141584, -0.020272877, -0.023154302, 0.0150657315, -0.013316296, 0.020344913, 0.014890788, -0.0241628, -0.024389196, -0.000617448, -0.0038075962, 0.027435273, -0.022413364, -0.06273272, -0.010059257, 0.03179857, 0.04387997, -0.029472852, 0.028320283, 0.013110479, -0.027455855, 0.013192806, 0.022660343, -0.04227461, 0.023874657, -0.057710808, -0.0016542461, 0.0033342193, 0.027702834, -0.013347168, -0.009678498, 0.0017905993, -0.025191879, 0.0018279034, 0.014880497, -0.014057233, 0.025047809, 0.051906798, 0.049683984, -0.028711332, -0.0042784004, 0.036182456, -0.0023488752, -0.011289008, 0.045073707, -0.053800303, -0.021775333, -0.014180723, -0.020766836, -0.023874657, 0.028999476, 0.010023239, -0.028464355, -0.016681388, 0.029760994, -0.022042895]], 'embedding_model': 'text-embedding-3-large', 'embedding_dimensions': 1024}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  29\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'persona': 'This is a test google scholar persona. The user is a 25 year old living in San Francisco. He is a fan of Google Scholar and is a student at Stanford University.    He uses Google Scholar to stay updated with the latest research in quantum computing and artificial intelligence.    Over the last 3 months, he has read 100+ research papers on quantum computing and artificial intelligence.    He is particularly interested in the latest research in quantum machine learning and quantum error correction.    He is also interested in how LLMs are being used to solve problems in quantum mechanics.'}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  30\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  Quantum memristors for neuromorphic quantum machine learning,http://arxiv.org/pdf/2412.18979v1,,Simulations of Quantum Turing Machines by Quantum Multi-Stack Machines,http://arxiv.org/pdf/quant-ph/0501176v2,,Inferring the Dynamics of the State Evolution During Quantum Annealing,http://arxiv.org/pdf/2009.06387v2,,Quantum Annealing for Industry Applications: Introduction and Review,http://arxiv.org/pdf/2112.07491v3,,The Rise of Quantum Internet Computing,http://arxiv.org/pdf/2208.00733v1\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  31\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'paper_titles_and_urls': [['Quantum memristors for neuromorphic quantum machine learning', 'https://arxiv.org/pdf/2412.18979v1'], ['Simulations of Quantum Turing Machines by Quantum Multi-Stack Machines', 'https://arxiv.org/pdf/quant-ph/0501176v2'], ['Inferring the Dynamics of the State Evolution During Quantum Annealing', 'https://arxiv.org/pdf/2009.06387v2'], ['Quantum Annealing for Industry Applications: Introduction and Review', 'https://arxiv.org/pdf/2112.07491v3'], ['The Rise of Quantum Internet Computing', 'https://arxiv.org/pdf/2208.00733v1']]}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  32\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['The Rise of Quantum Internet Computing', 'https://arxiv.org/pdf/2208.00733v1']\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  33\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['Quantum memristors for neuromorphic quantum machine learning', 'https://arxiv.org/pdf/2412.18979v1']\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  34\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['Inferring the Dynamics of the State Evolution During Quantum Annealing', 'https://arxiv.org/pdf/2009.06387v2']\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  35\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['Quantum Annealing for Industry Applications: Introduction and Review', 'https://arxiv.org/pdf/2112.07491v3']\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  36\\n\",\n      \"Transition type:  init_branch\\n\",\n      \"Transition output:  ['Simulations of Quantum Turing Machines by Quantum Multi-Stack Machines', 'https://arxiv.org/pdf/quant-ph/0501176v2']\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  37\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'documents': []}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  38\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'documents': []}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  39\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'documents': []}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  40\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'documents': []}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  41\\n\",\n      \"Transition type:  finish_branch\\n\",\n      \"Transition output:  {'documents': []}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  42\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  [{'documents': []}, {'documents': []}, {'documents': []}, {'documents': []}, {'documents': []}]\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  43\\n\",\n      \"Transition type:  step\\n\",\n      \"Transition output:  {'paper_contents': \\\"[{'documents': []}, {'documents': []}, {'documents': []}, {'documents': []}, {'documents': []}]\\\"}\\n\",\n      \"--------------------------------------------------\\n\",\n      \"Transition number:  44\\n\",\n      \"Transition type:  finish\\n\",\n      \"Transition output:  {'id': '0680672a-42b3-729c-8000-b640dbec6313', 'title': 'Research Papers', 'content': [\\\"[{'documents': []}, {'documents': []}, {'documents': []}, {'documents': []}, {'documents': []}]\\\"], 'language': 'english', 'metadata': {}, 'modality': 'text', 'created_at': '2025-04-21T16:30:28.173367Z', 'embeddings': [], 'embedding_model': 'text-embedding-3-large', 'embedding_dimensions': 1024}\\n\",\n      \"--------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Lists all the task steps that have been executed up to this point in time\\n\",\n    \"transitions = [*client.executions.transitions.list(execution_id=execution.id)]\\n\",\n    \"\\n\",\n    \"# Transitions are retrieved in chronological order that is the latest transition is at the start of the list\\n\",\n    \"for index, transition in enumerate(reversed(transitions)):\\n\",\n    \"    print(\\\"Transition number: \\\", index)\\n\",\n    \"    print(\\\"Transition type: \\\", transition.type)\\n\",\n    \"    print(\\\"Transition output: \\\", transition.output)\\n\",\n    \"    print(\\\"-\\\"*50)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{'content': [\\\"[{'documents': []}, {'documents': []}, {'documents': []}, \\\"\\n\",\n      \"             \\\"{'documents': []}, {'documents': []}]\\\"],\\n\",\n      \" 'created_at': '2025-04-21T16:30:28.173367Z',\\n\",\n      \" 'embedding_dimensions': 1024,\\n\",\n      \" 'embedding_model': 'text-embedding-3-large',\\n\",\n      \" 'embeddings': [],\\n\",\n      \" 'id': '0680672a-42b3-729c-8000-b640dbec6313',\\n\",\n      \" 'language': 'english',\\n\",\n      \" 'metadata': {},\\n\",\n      \" 'modality': 'text',\\n\",\n      \" 'title': 'Research Papers'}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import pprint\\n\",\n    \"# Retrieves the output of the last transition that took place\\n\",\n    \"output = client.executions.transitions.list(execution_id=execution.id).items[0].output\\n\",\n    \"# Pretty printing the output\\n\",\n    \"pprint.pprint(output)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{'paper_titles_and_urls': [['Quantum memristors for neuromorphic quantum '\\n\",\n      \"                            'machine learning',\\n\",\n      \"                            'https://arxiv.org/pdf/2412.18979v1'],\\n\",\n      \"                           ['Simulations of Quantum Turing Machines by Quantum '\\n\",\n      \"                            'Multi-Stack Machines',\\n\",\n      \"                            'https://arxiv.org/pdf/quant-ph/0501176v2'],\\n\",\n      \"                           ['Inferring the Dynamics of the State Evolution '\\n\",\n      \"                            'During Quantum Annealing',\\n\",\n      \"                            'https://arxiv.org/pdf/2009.06387v2'],\\n\",\n      \"                           ['Quantum Annealing for Industry Applications: '\\n\",\n      \"                            'Introduction and Review',\\n\",\n      \"                            'https://arxiv.org/pdf/2112.07491v3'],\\n\",\n      \"                           ['The Rise of Quantum Internet Computing',\\n\",\n      \"                            'https://arxiv.org/pdf/2208.00733v1']]}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# top 5 research papers selected by the agent based on the user persona\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items[13]\\n\",\n    \"# pretty printing the research papers\\n\",\n    \"pprint.pprint(transitions.output)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 26,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{'paper_contents': \\\"[{'documents': []}, {'documents': []}, {'documents': []}, \\\"\\n\",\n      \"                   \\\"{'documents': []}, {'documents': []}]\\\"}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"#  get the parsed papers from the llama parse scrape tool\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items[1]\\n\",\n    \"# pretty printing the research papers\\n\",\n    \"pprint.pprint(transitions.output)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 27,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{'arxiv_results': [{'result': [{'authors': ['Alexander Yu. Vlasov'],\\n\",\n      \"                                'categories': ['quant-ph'],\\n\",\n      \"                                'comment': 'LaTeX 8 pages, for 304th WEH '\\n\",\n      \"                                           'Seminar \\\"Elementary Quantum '\\n\",\n      \"                                           'Processors,\\\"\\\\n'\\n\",\n      \"                                           '  13-15 October 2003',\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/quant-ph/0311196v1',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/quant-ph/0311196v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/quant-ph/0311196v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/quant-ph/0311196v1',\\n\",\n      \"                                'primary_category': 'quant-ph',\\n\",\n      \"                                'published': '2003-11-27 15:43:16',\\n\",\n      \"                                'summary': 'Most modern classical processors '\\n\",\n      \"                                           'support so-called von Neumann '\\n\",\n      \"                                           'architecturewith program and data '\\n\",\n      \"                                           'registers. In present work is '\\n\",\n      \"                                           'revisited similar approachto '\\n\",\n      \"                                           'models of quantum processors. '\\n\",\n      \"                                           'Deterministic programmable quantum '\\n\",\n      \"                                           'gate arraysare considered as an '\\n\",\n      \"                                           'example. They are also called von '\\n\",\n      \"                                           'Neumann quantumprocessors here and '\\n\",\n      \"                                           'use conditional quantum dynamics. '\\n\",\n      \"                                           'Such devices have someproblems '\\n\",\n      \"                                           'with universality, but '\\n\",\n      \"                                           'consideration of hybrid quantum '\\n\",\n      \"                                           'processors,i.e., models with both '\\n\",\n      \"                                           'continuous and discrete quantum '\\n\",\n      \"                                           'variables resolves theproblems. It '\\n\",\n      \"                                           'is also discussed comparison of '\\n\",\n      \"                                           'such a model of quantum '\\n\",\n      \"                                           'processorswith more traditional '\\n\",\n      \"                                           'approach.',\\n\",\n      \"                                'title': 'Von Neumann Quantum Processors',\\n\",\n      \"                                'updated': '2003-11-27 15:43:16'},\\n\",\n      \"                               {'authors': ['Yutaro Enomoto',\\n\",\n      \"                                            'Kazuma Yonezu',\\n\",\n      \"                                            'Yosuke Mitsuhashi',\\n\",\n      \"                                            'Kan Takase',\\n\",\n      \"                                            'Shuntaro Takeda'],\\n\",\n      \"                                'categories': ['quant-ph'],\\n\",\n      \"                                'comment': '17 pages, 6 figures. 5 pages, 3 '\\n\",\n      \"                                           'figures in the supplementary\\\\n'\\n\",\n      \"                                           '  materials',\\n\",\n      \"                                'doi': '10.1126/sciadv.abj6624',\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/2105.02447v2',\\n\",\n      \"                                'journal_ref': 'Science Advances 7, eabj6624 '\\n\",\n      \"                                               '(2021)',\\n\",\n      \"                                'links': ['http://dx.doi.org/10.1126/sciadv.abj6624',\\n\",\n      \"                                          'http://arxiv.org/abs/2105.02447v2',\\n\",\n      \"                                          'http://arxiv.org/pdf/2105.02447v2'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/2105.02447v2',\\n\",\n      \"                                'primary_category': 'quant-ph',\\n\",\n      \"                                'published': '2021-05-06 05:27:35',\\n\",\n      \"                                'summary': 'A quantum processor to import, '\\n\",\n      \"                                           'process, and export optical '\\n\",\n      \"                                           'quantum states isa common core '\\n\",\n      \"                                           'technology enabling various '\\n\",\n      \"                                           'photonic quantum '\\n\",\n      \"                                           'informationprocessing. However, '\\n\",\n      \"                                           'there has been no photonic '\\n\",\n      \"                                           'processor which issimultaneously '\\n\",\n      \"                                           'universal, scalable, and '\\n\",\n      \"                                           'programmable. Here, we report on '\\n\",\n      \"                                           'anoriginal loop-based single-mode '\\n\",\n      \"                                           'versatile photonic quantum '\\n\",\n      \"                                           'processor which isdesigned to be '\\n\",\n      \"                                           'universal, scalable, and '\\n\",\n      \"                                           'programmable. Our processor can '\\n\",\n      \"                                           'performarbitrarily many steps of '\\n\",\n      \"                                           'programmable quantum operations on '\\n\",\n      \"                                           'a givensingle-mode optical quantum '\\n\",\n      \"                                           'state by time-domain processing in '\\n\",\n      \"                                           'a dynamicallycontrolled loop-based '\\n\",\n      \"                                           'optical circuit. We use this '\\n\",\n      \"                                           'processor to '\\n\",\n      \"                                           'demonstrateprogrammable '\\n\",\n      \"                                           'single-mode Gaussian gates and '\\n\",\n      \"                                           'multi-step squeezing gates. '\\n\",\n      \"                                           'Inaddition, we prove that the '\\n\",\n      \"                                           'processor can perform universal '\\n\",\n      \"                                           'quantum operationsby injecting '\\n\",\n      \"                                           'appropriate ancillary states and '\\n\",\n      \"                                           'also be straightforwardlyextended '\\n\",\n      \"                                           'to a multi-mode processor. These '\\n\",\n      \"                                           'results show that our processor '\\n\",\n      \"                                           'isprogrammable, scalable, and '\\n\",\n      \"                                           'potentially universal, leading to '\\n\",\n      \"                                           'be suitable forgeneral-purpose '\\n\",\n      \"                                           'applications.',\\n\",\n      \"                                'title': 'Programmable and sequential Gaussian '\\n\",\n      \"                                         'gates in a loop-based single-mode '\\n\",\n      \"                                         'photonic quantum processor',\\n\",\n      \"                                'updated': '2021-11-14 23:50:51'}]},\\n\",\n      \"                   {'result': [{'authors': ['Elijah Pelofske',\\n\",\n      \"                                            'Georg Hahn',\\n\",\n      \"                                            'Hristo Djidjev'],\\n\",\n      \"                                'categories': ['quant-ph',\\n\",\n      \"                                               'cond-mat.dis-nn',\\n\",\n      \"                                               'cond-mat.stat-mech',\\n\",\n      \"                                               'cs.ET'],\\n\",\n      \"                                'comment': None,\\n\",\n      \"                                'doi': '10.1109/TPDS.2020.3044846',\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/2009.06387v2',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://dx.doi.org/10.1109/TPDS.2020.3044846',\\n\",\n      \"                                          'http://arxiv.org/abs/2009.06387v2',\\n\",\n      \"                                          'http://arxiv.org/pdf/2009.06387v2'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/2009.06387v2',\\n\",\n      \"                                'primary_category': 'quant-ph',\\n\",\n      \"                                'published': '2020-09-10 18:14:28',\\n\",\n      \"                                'summary': 'To solve an optimization problem '\\n\",\n      \"                                           'using a commercial quantum '\\n\",\n      \"                                           'annealer, one hasto represent the '\\n\",\n      \"                                           'problem of interest as an Ising or '\\n\",\n      \"                                           'a quadratic unconstrainedbinary '\\n\",\n      \"                                           'optimization (QUBO) problem and '\\n\",\n      \"                                           'submit its coefficients to the '\\n\",\n      \"                                           'annealer,which then returns a '\\n\",\n      \"                                           'user-specified number of '\\n\",\n      \"                                           'low-energy solutions. It would '\\n\",\n      \"                                           'beuseful to know what happens in '\\n\",\n      \"                                           'the quantum processor during the '\\n\",\n      \"                                           'anneal processso that one could '\\n\",\n      \"                                           'design better algorithms or '\\n\",\n      \"                                           'suggest improvements to '\\n\",\n      \"                                           'thehardware. However, existing '\\n\",\n      \"                                           'quantum annealers are not able to '\\n\",\n      \"                                           'directly extractsuch information '\\n\",\n      \"                                           'from the processor. Hence, in this '\\n\",\n      \"                                           'work we propose to useadvanced '\\n\",\n      \"                                           'features of D-Wave 2000Q to '\\n\",\n      \"                                           'indirectly infer information about '\\n\",\n      \"                                           'thedynamics of the state evolution '\\n\",\n      \"                                           'during the anneal process. '\\n\",\n      \"                                           'Specifically, D-Wave2000Q allows '\\n\",\n      \"                                           'the user to customize the anneal '\\n\",\n      \"                                           'schedule, that is, the '\\n\",\n      \"                                           'schedulewith which the anneal '\\n\",\n      \"                                           'fraction is changed from the start '\\n\",\n      \"                                           'to the end of theanneal. Using '\\n\",\n      \"                                           'this feature, we design a set of '\\n\",\n      \"                                           'modified anneal schedules '\\n\",\n      \"                                           'whoseoutputs can be used to '\\n\",\n      \"                                           'generate information about the '\\n\",\n      \"                                           'states of the system '\\n\",\n      \"                                           'atuser-defined time points during '\\n\",\n      \"                                           'a standard anneal. With this '\\n\",\n      \"                                           'process, called\\\"slicing\\\", we '\\n\",\n      \"                                           'obtain approximate distributions '\\n\",\n      \"                                           'of lowest-energy annealsolutions '\\n\",\n      \"                                           'as the anneal time evolves. We use '\\n\",\n      \"                                           'our technique to obtain a '\\n\",\n      \"                                           'varietyof insights into the '\\n\",\n      \"                                           'annealer, such as the state '\\n\",\n      \"                                           'evolution during annealing,when '\\n\",\n      \"                                           'individual bits in an evolving '\\n\",\n      \"                                           'solution flip during the anneal '\\n\",\n      \"                                           'process andwhen they stabilize, '\\n\",\n      \"                                           'and we introduce a technique to '\\n\",\n      \"                                           'estimate the freeze-outpoint of '\\n\",\n      \"                                           'both the system as well as of '\\n\",\n      \"                                           'individual qubits.',\\n\",\n      \"                                'title': 'Inferring the Dynamics of the State '\\n\",\n      \"                                         'Evolution During Quantum Annealing',\\n\",\n      \"                                'updated': '2020-11-20 02:12:21'},\\n\",\n      \"                               {'authors': ['Sheir Yarkoni',\\n\",\n      \"                                            'Elena Raponi',\\n\",\n      \"                                            'Thomas Bäck',\\n\",\n      \"                                            'Sebastian Schmitt'],\\n\",\n      \"                                'categories': ['quant-ph'],\\n\",\n      \"                                'comment': 'major revision with extended noise '\\n\",\n      \"                                           'section and discussion of\\\\n'\\n\",\n      \"                                           '  alternative platforms',\\n\",\n      \"                                'doi': '10.1088/1361-6633/ac8c54',\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/2112.07491v3',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://dx.doi.org/10.1088/1361-6633/ac8c54',\\n\",\n      \"                                          'http://arxiv.org/abs/2112.07491v3',\\n\",\n      \"                                          'http://arxiv.org/pdf/2112.07491v3'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/2112.07491v3',\\n\",\n      \"                                'primary_category': 'quant-ph',\\n\",\n      \"                                'published': '2021-12-14 15:58:30',\\n\",\n      \"                                'summary': 'Quantum annealing is a heuristic '\\n\",\n      \"                                           'quantum optimization algorithm '\\n\",\n      \"                                           'that can beused to solve '\\n\",\n      \"                                           'combinatorial optimization '\\n\",\n      \"                                           'problems. In recent years, '\\n\",\n      \"                                           'advances inquantum technologies '\\n\",\n      \"                                           'have enabled the development of '\\n\",\n      \"                                           'small- andintermediate-scale '\\n\",\n      \"                                           'quantum processors that implement '\\n\",\n      \"                                           'the quantum annealingalgorithm for '\\n\",\n      \"                                           'programmable use. Specifically, '\\n\",\n      \"                                           'quantum annealing '\\n\",\n      \"                                           'processorsproduced by D-Wave '\\n\",\n      \"                                           'Systems have been studied and '\\n\",\n      \"                                           'tested extensively in bothresearch '\\n\",\n      \"                                           'and industrial settings across '\\n\",\n      \"                                           'different disciplines. In this '\\n\",\n      \"                                           'paper weprovide a literature '\\n\",\n      \"                                           'review of the theoretical '\\n\",\n      \"                                           'motivations for quantumannealing '\\n\",\n      \"                                           'as a heuristic quantum '\\n\",\n      \"                                           'optimization algorithm, the '\\n\",\n      \"                                           'software andhardware that is '\\n\",\n      \"                                           'required to use such quantum '\\n\",\n      \"                                           'processors, and '\\n\",\n      \"                                           'thestate-of-the-art applications '\\n\",\n      \"                                           'and proofs-of-concepts that have '\\n\",\n      \"                                           'beendemonstrated using them. The '\\n\",\n      \"                                           'goal of our review is to provide a '\\n\",\n      \"                                           'centralized andcondensed source '\\n\",\n      \"                                           'regarding applications of quantum '\\n\",\n      \"                                           'annealing technology. Weidentify '\\n\",\n      \"                                           'the advantages, limitations, and '\\n\",\n      \"                                           'potential of quantum annealing '\\n\",\n      \"                                           'forboth researchers and '\\n\",\n      \"                                           'practitioners from various fields.',\\n\",\n      \"                                'title': 'Quantum Annealing for Industry '\\n\",\n      \"                                         'Applications: Introduction and '\\n\",\n      \"                                         'Review',\\n\",\n      \"                                'updated': '2022-06-13 08:37:49'}]},\\n\",\n      \"                   {'result': [{'authors': ['János Végh'],\\n\",\n      \"                                'categories': ['cs.DC'],\\n\",\n      \"                                'comment': '4 figures',\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/1608.00249v1',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/1608.00249v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/1608.00249v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/1608.00249v1',\\n\",\n      \"                                'primary_category': 'cs.DC',\\n\",\n      \"                                'published': '2016-07-31 19:02:34',\\n\",\n      \"                                'summary': 'In the world of supercomputers, '\\n\",\n      \"                                           'the large number of processors '\\n\",\n      \"                                           'requires tominimize the '\\n\",\n      \"                                           'inefficiencies of parallelization, '\\n\",\n      \"                                           'which appear as a sequentialpart '\\n\",\n      \"                                           'of the program from the point of '\\n\",\n      \"                                           \\\"view of Amdahl's law. The \\\"\\n\",\n      \"                                           'recentlysuggested new figure of '\\n\",\n      \"                                           'merit is applied to the recently '\\n\",\n      \"                                           'presentedsupercomputer, and the '\\n\",\n      \"                                           'timeline of \\\"Top 500\\\" '\\n\",\n      \"                                           'supercomputers is scrutinizedusing '\\n\",\n      \"                                           'the metric. It is demonstrated, '\\n\",\n      \"                                           'that in addition to the '\\n\",\n      \"                                           'computingperformance and power '\\n\",\n      \"                                           'consumption, the new supercomputer '\\n\",\n      \"                                           'is also excellent inthe efficiency '\\n\",\n      \"                                           'of parallelization. Based on the '\\n\",\n      \"                                           'suggested merit, a \\\"Moore-law\\\"like '\\n\",\n      \"                                           'observation is derived for the '\\n\",\n      \"                                           'timeline of parallelization '\\n\",\n      \"                                           'efficacy ofsupercomputers.',\\n\",\n      \"                                'title': 'Comments on the parallelization '\\n\",\n      \"                                         'efficiency of the Sunway TaihuLight '\\n\",\n      \"                                         'supercomputer',\\n\",\n      \"                                'updated': '2016-07-31 19:02:34'},\\n\",\n      \"                               {'authors': ['János Végh'],\\n\",\n      \"                                'categories': ['cs.DC'],\\n\",\n      \"                                'comment': '30 pages, 10 figures',\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/1708.01462v2',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/1708.01462v2',\\n\",\n      \"                                          'http://arxiv.org/pdf/1708.01462v2'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/1708.01462v2',\\n\",\n      \"                                'primary_category': 'cs.DC',\\n\",\n      \"                                'published': '2017-08-04 11:56:45',\\n\",\n      \"                                'summary': \\\"This paper reinterprets Amdahl's \\\"\\n\",\n      \"                                           'law in terms of execution time and '\\n\",\n      \"                                           'appliesthis simple model to '\\n\",\n      \"                                           'supercomputing. The systematic '\\n\",\n      \"                                           'discussion results inpractical '\\n\",\n      \"                                           'formulas enabling to calculate '\\n\",\n      \"                                           'expected running time using '\\n\",\n      \"                                           'largenumber of processors from '\\n\",\n      \"                                           'experimental runs using low number '\\n\",\n      \"                                           'of processors,delivers a '\\n\",\n      \"                                           'quantitative measure of '\\n\",\n      \"                                           'computational efficiency of '\\n\",\n      \"                                           'supercomputingapplications. '\\n\",\n      \"                                           'Through separating '\\n\",\n      \"                                           'non-parallelizable contribution to '\\n\",\n      \"                                           'fractionsaccording to their '\\n\",\n      \"                                           \\\"origin, Amdahl's law enables to \\\"\\n\",\n      \"                                           'derive a timeline '\\n\",\n      \"                                           'forsupercomputers (quite similar '\\n\",\n      \"                                           \\\"to Moore's law) and describes why \\\"\\n\",\n      \"                                           \\\"Amdahl's lawlimits the size of \\\"\\n\",\n      \"                                           'supercomputers. The paper '\\n\",\n      \"                                           \\\"validates that Amdahl's \\\"\\n\",\n      \"                                           '50-yearsold model (with slight '\\n\",\n      \"                                           'extension) correctly describes the '\\n\",\n      \"                                           'performancelimitations of the '\\n\",\n      \"                                           'present supercomputers. Using some '\\n\",\n      \"                                           'simple and reasonableassumptions, '\\n\",\n      \"                                           'the absolute performance bound of '\\n\",\n      \"                                           'supercomputers is '\\n\",\n      \"                                           'concluded,furthermore that serious '\\n\",\n      \"                                           'enhancements are still necessary '\\n\",\n      \"                                           'to achieve theexaFLOPS dream '\\n\",\n      \"                                           'value.',\\n\",\n      \"                                'title': \\\"How Amdahl's low restricts \\\"\\n\",\n      \"                                         'supercomputer applications and '\\n\",\n      \"                                         'building ever bigger supercomputers',\\n\",\n      \"                                'updated': '2017-12-29 06:26:45'}]},\\n\",\n      \"                   {'result': [{'authors': ['H. Kawamura',\\n\",\n      \"                                            'T. Aoki',\\n\",\n      \"                                            'K. Harada',\\n\",\n      \"                                            'T. Inoue',\\n\",\n      \"                                            'S. Ito',\\n\",\n      \"                                            'K. Kato',\\n\",\n      \"                                            'L. Koehler',\\n\",\n      \"                                            'K. Sakamoto',\\n\",\n      \"                                            'A. Uchiyama',\\n\",\n      \"                                            'Y. Sakemi'],\\n\",\n      \"                                'categories': ['physics.ins-det'],\\n\",\n      \"                                'comment': None,\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/1908.10698v1',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/1908.10698v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/1908.10698v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/1908.10698v1',\\n\",\n      \"                                'primary_category': 'physics.ins-det',\\n\",\n      \"                                'published': '2019-08-28 13:01:01',\\n\",\n      \"                                'summary': 'We investigate neutralization '\\n\",\n      \"                                           'processes (especially thermal '\\n\",\n      \"                                           'surfaceneutralization), which are '\\n\",\n      \"                                           'required for the magneto-optical '\\n\",\n      \"                                           'trapping ofradioactive atoms. A '\\n\",\n      \"                                           'variety of neutralization methods '\\n\",\n      \"                                           'are first summarized:neutral beam '\\n\",\n      \"                                           'injection for fusion reactors, '\\n\",\n      \"                                           'neutral atom implantation '\\n\",\n      \"                                           'insemiconductor processing, and '\\n\",\n      \"                                           'the production of radioactive '\\n\",\n      \"                                           'neutral atoms inaccelerators. We '\\n\",\n      \"                                           'focus on thermal surface '\\n\",\n      \"                                           'neutralization, which '\\n\",\n      \"                                           'producesneutral atoms in the '\\n\",\n      \"                                           'thermal energy range for laser '\\n\",\n      \"                                           'cooling. The experimentswere '\\n\",\n      \"                                           'carried out with yttrium, '\\n\",\n      \"                                           'gadolinium, and zirconium foils to '\\n\",\n      \"                                           'neutralizefrancium and rubidium '\\n\",\n      \"                                           'ions for magneto-optical trapping. '\\n\",\n      \"                                           'The results reconfirmthat yttrium '\\n\",\n      \"                                           'foil is a good neutralizer (i.e., '\\n\",\n      \"                                           'it has a neutral releaseefficiency '\\n\",\n      \"                                           '$>65\\\\\\\\%$). In addition, the '\\n\",\n      \"                                           'release fraction when using '\\n\",\n      \"                                           'yttrium foilexceeds 75\\\\\\\\% at 1350 '\\n\",\n      \"                                           'K, which is greater than the '\\n\",\n      \"                                           'release fraction for theother '\\n\",\n      \"                                           'foils. This reconfirmation is '\\n\",\n      \"                                           'important because few previous '\\n\",\n      \"                                           'studies havefocused on thermal '\\n\",\n      \"                                           'surface neutralization. Moreover, '\\n\",\n      \"                                           'the results show that '\\n\",\n      \"                                           'theneutralization efficiency is '\\n\",\n      \"                                           'strongly influenced by the '\\n\",\n      \"                                           'experimental processitself.',\\n\",\n      \"                                'title': 'Thermal surface neutralization of Fr '\\n\",\n      \"                                         'ions with metal foils for '\\n\",\n      \"                                         'magneto-optical trapping of '\\n\",\n      \"                                         'radioisotopes',\\n\",\n      \"                                'updated': '2019-08-28 13:01:01'},\\n\",\n      \"                               {'authors': ['Hirokazu Kawamura',\\n\",\n      \"                                            'Ken-ichi Harada',\\n\",\n      \"                                            'Tomoya Sato',\\n\",\n      \"                                            'Saki Ezure',\\n\",\n      \"                                            'Hiroshi Arikawa',\\n\",\n      \"                                            'Takeshi Furukawa',\\n\",\n      \"                                            'Tomohiro Hayamizu',\\n\",\n      \"                                            'Takeshi Inoue',\\n\",\n      \"                                            'Taisuke Ishikawa',\\n\",\n      \"                                            'Masatoshi Itoh',\\n\",\n      \"                                            'Tomohiro Kato',\\n\",\n      \"                                            'Akihito Oikawa',\\n\",\n      \"                                            'Takatoshi Aoki',\\n\",\n      \"                                            'Atsushi Hatakeyama',\\n\",\n      \"                                            'Yasuhiro Sakemi'],\\n\",\n      \"                                'categories': ['physics.atom-ph'],\\n\",\n      \"                                'comment': None,\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/1908.10686v1',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/1908.10686v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/1908.10686v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/1908.10686v1',\\n\",\n      \"                                'primary_category': 'physics.atom-ph',\\n\",\n      \"                                'published': '2019-08-28 12:38:44',\\n\",\n      \"                                'summary': 'We have developed a unique '\\n\",\n      \"                                           'neutralizer device that uses an '\\n\",\n      \"                                           'yttrium targetsurrounded by a '\\n\",\n      \"                                           'platinum wall to magneto-optically '\\n\",\n      \"                                           'trap radioactive atoms. Ingeneral, '\\n\",\n      \"                                           'the radioactive nucleus produced '\\n\",\n      \"                                           'in a nuclear reaction is '\\n\",\n      \"                                           'extractedand transported in ion '\\n\",\n      \"                                           'form. For the magneto-optical '\\n\",\n      \"                                           'trap, thermalneutralization must '\\n\",\n      \"                                           'occur on the surface of a metal '\\n\",\n      \"                                           'with a small work function.The '\\n\",\n      \"                                           'converter can produce a neutral '\\n\",\n      \"                                           'atomic beam with small angular '\\n\",\n      \"                                           'divergencethat, given the '\\n\",\n      \"                                           'recycling of atoms and ions, '\\n\",\n      \"                                           'converts ions into neutral '\\n\",\n      \"                                           'atomswith remarkable efficiency. '\\n\",\n      \"                                           'We demonstrated the ion '\\n\",\n      \"                                           'neutralization processusing stable '\\n\",\n      \"                                           'rubidium and confirmed $10^6$ '\\n\",\n      \"                                           'neutralized atoms in '\\n\",\n      \"                                           'themagneto-optical trap. '\\n\",\n      \"                                           'Additionally, the experiment using '\\n\",\n      \"                                           'francium demonstratedthe obtaining '\\n\",\n      \"                                           'of neutralized francium atoms.',\\n\",\n      \"                                'title': 'Alkali ion-to-neutral atom converter '\\n\",\n      \"                                         'for the magneto-optical trap of a '\\n\",\n      \"                                         'radioactive isotope',\\n\",\n      \"                                'updated': '2019-08-28 12:38:44'}]},\\n\",\n      \"                   {'result': [{'authors': ['Maximilian Russ', 'Guido Burkard'],\\n\",\n      \"                                'categories': ['cond-mat.mes-hall'],\\n\",\n      \"                                'comment': '42 pages, 13 figures',\\n\",\n      \"                                'doi': '10.1088/1361-648X/aa761f',\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/1611.09106v1',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://dx.doi.org/10.1088/1361-648X/aa761f',\\n\",\n      \"                                          'http://arxiv.org/abs/1611.09106v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/1611.09106v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/1611.09106v1',\\n\",\n      \"                                'primary_category': 'cond-mat.mes-hall',\\n\",\n      \"                                'published': '2016-11-28 13:21:43',\\n\",\n      \"                                'summary': 'The goal of this article is to '\\n\",\n      \"                                           'review the progress of '\\n\",\n      \"                                           'three-electron spinqubits from '\\n\",\n      \"                                           'their inception to the state of '\\n\",\n      \"                                           'the art. We direct the main '\\n\",\n      \"                                           'focustowards the resonant exchange '\\n\",\n      \"                                           '(RX) qubit and the exchange-only '\\n\",\n      \"                                           'qubit, but wealso discuss other '\\n\",\n      \"                                           'qubit implementations using three '\\n\",\n      \"                                           'electron spins. For eachthree-spin '\\n\",\n      \"                                           'qubit we describe the qubit model, '\\n\",\n      \"                                           'the physical realization, '\\n\",\n      \"                                           'theimplementations of single-qubit '\\n\",\n      \"                                           'operations, as well as the '\\n\",\n      \"                                           'read-out andinitialization '\\n\",\n      \"                                           'schemes. Two-qubit gates and '\\n\",\n      \"                                           'decoherence properties '\\n\",\n      \"                                           'arediscussed for the RX qubit and '\\n\",\n      \"                                           'the exchange-only qubit, thereby, '\\n\",\n      \"                                           'completing thelist of requirements '\\n\",\n      \"                                           'for a viable candidate qubit '\\n\",\n      \"                                           'implementation for '\\n\",\n      \"                                           'quantumcomputation. We start with '\\n\",\n      \"                                           'describing the full system of '\\n\",\n      \"                                           'three electrons in atriple quantum '\\n\",\n      \"                                           'dot, then discuss the '\\n\",\n      \"                                           'charge-stability diagram and '\\n\",\n      \"                                           'restrictourselves to the relevant '\\n\",\n      \"                                           'subsystem, introduce the qubit '\\n\",\n      \"                                           'states, and discussimportant '\\n\",\n      \"                                           'transitions to other charge '\\n\",\n      \"                                           'states. Introducing the various '\\n\",\n      \"                                           'qubitimplementations, we begin '\\n\",\n      \"                                           'with the exchange-only qubit, '\\n\",\n      \"                                           'followed by thespin-charge qubit, '\\n\",\n      \"                                           'the hybrid qubit, and the RX '\\n\",\n      \"                                           'qubit, discussing for each '\\n\",\n      \"                                           'thesingle-qubit operations, '\\n\",\n      \"                                           'read-out, and initialization '\\n\",\n      \"                                           'methods, whereas the mainfocus '\\n\",\n      \"                                           'will be on the RX qubit, whose '\\n\",\n      \"                                           'single-qubit operations are '\\n\",\n      \"                                           'realized bydriving the qubit at '\\n\",\n      \"                                           'its resonant frequency in the '\\n\",\n      \"                                           'microwave range similar toelectron '\\n\",\n      \"                                           'spin resonance. Two different '\\n\",\n      \"                                           'types of two-qubit operations '\\n\",\n      \"                                           'arepresented for the exchange-only '\\n\",\n      \"                                           'and the RX qubit which can be '\\n\",\n      \"                                           'divided intoshort-ranged and '\\n\",\n      \"                                           'long-ranged interactions. Both of '\\n\",\n      \"                                           'these interaction types canbe '\\n\",\n      \"                                           'expected to be necessary in a '\\n\",\n      \"                                           'large-scale quantum computer. We '\\n\",\n      \"                                           'also takeinto account the '\\n\",\n      \"                                           'decoherence of the qubit through '\\n\",\n      \"                                           'the influence of magneticnoise as '\\n\",\n      \"                                           'well as dephasing due to charge '\\n\",\n      \"                                           'noise.',\\n\",\n      \"                                'title': 'Three-electron spin qubits',\\n\",\n      \"                                'updated': '2016-11-28 13:21:43'},\\n\",\n      \"                               {'authors': ['Sam Young Cho', 'Mun Dae Kim'],\\n\",\n      \"                                'categories': ['cond-mat.supr-con',\\n\",\n      \"                                               'cond-mat.mes-hall'],\\n\",\n      \"                                'comment': '5 pages, 1 figure',\\n\",\n      \"                                'doi': '10.1103/PhysRevB.77.212506',\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/cond-mat/0703505v1',\\n\",\n      \"                                'journal_ref': 'Phys. Rev. B 77, 212506 (2008)',\\n\",\n      \"                                'links': ['http://dx.doi.org/10.1103/PhysRevB.77.212506',\\n\",\n      \"                                          'http://arxiv.org/abs/cond-mat/0703505v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/cond-mat/0703505v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/cond-mat/0703505v1',\\n\",\n      \"                                'primary_category': 'cond-mat.supr-con',\\n\",\n      \"                                'published': '2007-03-20 02:20:35',\\n\",\n      \"                                'summary': 'Superconducting flux qubits are '\\n\",\n      \"                                           'considered to investigate '\\n\",\n      \"                                           'macroscopicmany-qubit '\\n\",\n      \"                                           'interactions.  Many-qubit states '\\n\",\n      \"                                           'based on current states can be '\\n\",\n      \"                                           'manipulated through '\\n\",\n      \"                                           'thecurrent-phase relation in each '\\n\",\n      \"                                           'superconducting loop.  For flux '\\n\",\n      \"                                           'qubit systems comprised of $N$ '\\n\",\n      \"                                           'qubit loops, a general expression '\\n\",\n      \"                                           'oflow energy Hamiltonian is '\\n\",\n      \"                                           'presented in terms of low energy '\\n\",\n      \"                                           'levels of qubits andmacroscopic '\\n\",\n      \"                                           'quantum tunnelings between the '\\n\",\n      \"                                           'many-qubit states.  Many-qubit '\\n\",\n      \"                                           'interactions classified by {\\\\\\\\em '\\n\",\n      \"                                           'Ising type- or '\\n\",\n      \"                                           'tunnel-}exchangeinteractions can '\\n\",\n      \"                                           'be observable experimentally.  '\\n\",\n      \"                                           'Flux qubit systems can provide '\\n\",\n      \"                                           'various artificial-spin systems to '\\n\",\n      \"                                           'studymany-body systems that cannot '\\n\",\n      \"                                           'be found naturally.',\\n\",\n      \"                                'title': 'Macroscopic Many-Qubit Interactions '\\n\",\n      \"                                         'in Superconducting Flux Qubits',\\n\",\n      \"                                'updated': '2007-03-20 02:20:35'}]},\\n\",\n      \"                   {'result': [{'authors': ['Lucas Lamata'],\\n\",\n      \"                                'categories': ['quant-ph', 'cs.NE'],\\n\",\n      \"                                'comment': 'Invited Perspective',\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/2412.18979v1',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/2412.18979v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/2412.18979v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/2412.18979v1',\\n\",\n      \"                                'primary_category': 'quant-ph',\\n\",\n      \"                                'published': '2024-12-25 20:21:24',\\n\",\n      \"                                'summary': 'Quantum machine learning may '\\n\",\n      \"                                           'permit to realize more efficient '\\n\",\n      \"                                           'machinelearning calculations with '\\n\",\n      \"                                           'near-term quantum devices. Among '\\n\",\n      \"                                           'the diverse quantummachine '\\n\",\n      \"                                           'learning paradigms which are '\\n\",\n      \"                                           'currently being considered, '\\n\",\n      \"                                           'quantummemristors are promising as '\\n\",\n      \"                                           'a way of combining, in the same '\\n\",\n      \"                                           'quantum hardware, aunitary '\\n\",\n      \"                                           'evolution with the nonlinearity '\\n\",\n      \"                                           'provided by the measurement '\\n\",\n      \"                                           'andfeedforward. Thus, an efficient '\\n\",\n      \"                                           'way of deploying neuromorphic '\\n\",\n      \"                                           'quantum computingfor quantum '\\n\",\n      \"                                           'machine learning may be enabled.',\\n\",\n      \"                                'title': 'Quantum memristors for neuromorphic '\\n\",\n      \"                                         'quantum machine learning',\\n\",\n      \"                                'updated': '2024-12-25 20:21:24'},\\n\",\n      \"                               {'authors': ['Daowen Qiu'],\\n\",\n      \"                                'categories': ['quant-ph'],\\n\",\n      \"                                'comment': '25 pages',\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/quant-ph/0501176v2',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/quant-ph/0501176v2',\\n\",\n      \"                                          'http://arxiv.org/pdf/quant-ph/0501176v2'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/quant-ph/0501176v2',\\n\",\n      \"                                'primary_category': 'quant-ph',\\n\",\n      \"                                'published': '2005-01-30 04:42:12',\\n\",\n      \"                                'summary': 'As was well known, in classical '\\n\",\n      \"                                           'computation, Turing machines, '\\n\",\n      \"                                           'circuits,multi-stack machines, and '\\n\",\n      \"                                           'multi-counter machines are '\\n\",\n      \"                                           'equivalent, that is, theycan '\\n\",\n      \"                                           'simulate each other in polynomial '\\n\",\n      \"                                           'time. In quantum computation, Yao '\\n\",\n      \"                                           '[11]first proved that for any '\\n\",\n      \"                                           'quantum Turing machines $M$, there '\\n\",\n      \"                                           'exists quantumBoolean circuit '\\n\",\n      \"                                           '$(n,t)$-simulating $M$, where $n$ '\\n\",\n      \"                                           'denotes the length of '\\n\",\n      \"                                           'inputstrings, and $t$ is the '\\n\",\n      \"                                           'number of move steps before '\\n\",\n      \"                                           'machine stopping. However,the '\\n\",\n      \"                                           'simulations of quantum Turing '\\n\",\n      \"                                           'machines by quantum multi-stack '\\n\",\n      \"                                           'machines andquantum multi-counter '\\n\",\n      \"                                           'machines have not been considered, '\\n\",\n      \"                                           'and quantummulti-stack machines '\\n\",\n      \"                                           'have not been established, either. '\\n\",\n      \"                                           'Though quantum countermachines '\\n\",\n      \"                                           'were dealt with by Kravtsev [6] '\\n\",\n      \"                                           'and Yamasaki {\\\\\\\\it et al.} [10], '\\n\",\n      \"                                           'inwhich the machines count with '\\n\",\n      \"                                           '$0,\\\\\\\\pm 1$ only, we sense that it '\\n\",\n      \"                                           'is difficult tosimulate quantum '\\n\",\n      \"                                           'Turing machines in terms of this '\\n\",\n      \"                                           'fashion of quantum '\\n\",\n      \"                                           'computingdevices, and we therefore '\\n\",\n      \"                                           'prove that the quantum '\\n\",\n      \"                                           'multi-counter machines allowedto '\\n\",\n      \"                                           'count with $0,\\\\\\\\pm 1,\\\\\\\\pm '\\n\",\n      \"                                           '2,...,\\\\\\\\pm n$ for some $n>1$ can '\\n\",\n      \"                                           'efficiently simulatequantum Turing '\\n\",\n      \"                                           'machines.  Therefore, our mail '\\n\",\n      \"                                           'goals are to establish quantum '\\n\",\n      \"                                           'multi-stack machines andquantum '\\n\",\n      \"                                           'multi-counter machines with counts '\\n\",\n      \"                                           '$0,\\\\\\\\pm 1,\\\\\\\\pm 2,...,\\\\\\\\pm n$ and '\\n\",\n      \"                                           '$n>1$,and particularly to simulate '\\n\",\n      \"                                           'quantum Turing machines by these '\\n\",\n      \"                                           'quantum computingdevices.',\\n\",\n      \"                                'title': 'Simulations of Quantum Turing '\\n\",\n      \"                                         'Machines by Quantum Multi-Stack '\\n\",\n      \"                                         'Machines',\\n\",\n      \"                                'updated': '2005-06-06 17:29:54'}]},\\n\",\n      \"                   {'result': [{'authors': ['Seng W. Loke'],\\n\",\n      \"                                'categories': ['cs.ET', 'cs.DC'],\\n\",\n      \"                                'comment': None,\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/2208.00733v1',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/2208.00733v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/2208.00733v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/2208.00733v1',\\n\",\n      \"                                'primary_category': 'cs.ET',\\n\",\n      \"                                'published': '2022-08-01 10:36:13',\\n\",\n      \"                                'summary': 'This article highlights quantum '\\n\",\n      \"                                           'Internet computing as referring '\\n\",\n      \"                                           'todistributed quantum computing '\\n\",\n      \"                                           'over the quantum Internet, '\\n\",\n      \"                                           'analogous to(classical) Internet '\\n\",\n      \"                                           'computing involving (classical) '\\n\",\n      \"                                           'distributed computing overthe '\\n\",\n      \"                                           '(classical) Internet. Relevant to '\\n\",\n      \"                                           'quantum Internet computing would '\\n\",\n      \"                                           'be areasof study such as quantum '\\n\",\n      \"                                           'protocols for distributed nodes '\\n\",\n      \"                                           'using quantuminformation for '\\n\",\n      \"                                           'computations, quantum cloud '\\n\",\n      \"                                           'computing, delegated '\\n\",\n      \"                                           'verifiableblind or private '\\n\",\n      \"                                           'computing, non-local gates, and '\\n\",\n      \"                                           'distributed quantumapplications, '\\n\",\n      \"                                           'over Internet-scale distances.',\\n\",\n      \"                                'title': 'The Rise of Quantum Internet '\\n\",\n      \"                                         'Computing',\\n\",\n      \"                                'updated': '2022-08-01 10:36:13'},\\n\",\n      \"                               {'authors': ['Seth Lloyd'],\\n\",\n      \"                                'categories': ['quant-ph'],\\n\",\n      \"                                'comment': '9 pages, plain TeX, article from '\\n\",\n      \"                                           '1998 conference proceedings\\\\n'\\n\",\n      \"                                           '  proposing fermionic quantum '\\n\",\n      \"                                           'computers',\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/quant-ph/0003151v1',\\n\",\n      \"                                'journal_ref': 'in `Unconventional Models of '\\n\",\n      \"                                               \\\"Computation,' C.S. Calude, J. \\\"\\n\",\n      \"                                               'Casti,\\\\n'\\n\",\n      \"                                               '  M.J. Dinneen, eds., '\\n\",\n      \"                                               'Springer, Singapore, 1998',\\n\",\n      \"                                'links': ['http://arxiv.org/abs/quant-ph/0003151v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/quant-ph/0003151v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/quant-ph/0003151v1',\\n\",\n      \"                                'primary_category': 'quant-ph',\\n\",\n      \"                                'published': '2000-03-31 22:07:23',\\n\",\n      \"                                'summary': 'This paper investigates a variety '\\n\",\n      \"                                           'of unconventional quantum '\\n\",\n      \"                                           'computationdevices, including '\\n\",\n      \"                                           'fermionic quantum computers and '\\n\",\n      \"                                           'computers that exploitnonlinear '\\n\",\n      \"                                           'quantum mechanics. It is shown '\\n\",\n      \"                                           'that unconventional quantum '\\n\",\n      \"                                           'computingdevices can in principle '\\n\",\n      \"                                           'compute some quantities more '\\n\",\n      \"                                           \\\"rapidly than`conventional' quantum \\\"\\n\",\n      \"                                           'computers.',\\n\",\n      \"                                'title': 'Unconventional Quantum Computing '\\n\",\n      \"                                         'Devices',\\n\",\n      \"                                'updated': '2000-03-31 22:07:23'}]},\\n\",\n      \"                   {'result': [{'authors': ['Seng W. Loke'],\\n\",\n      \"                                'categories': ['cs.ET', 'cs.DC'],\\n\",\n      \"                                'comment': None,\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/2208.00733v1',\\n\",\n      \"                                'journal_ref': None,\\n\",\n      \"                                'links': ['http://arxiv.org/abs/2208.00733v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/2208.00733v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/2208.00733v1',\\n\",\n      \"                                'primary_category': 'cs.ET',\\n\",\n      \"                                'published': '2022-08-01 10:36:13',\\n\",\n      \"                                'summary': 'This article highlights quantum '\\n\",\n      \"                                           'Internet computing as referring '\\n\",\n      \"                                           'todistributed quantum computing '\\n\",\n      \"                                           'over the quantum Internet, '\\n\",\n      \"                                           'analogous to(classical) Internet '\\n\",\n      \"                                           'computing involving (classical) '\\n\",\n      \"                                           'distributed computing overthe '\\n\",\n      \"                                           '(classical) Internet. Relevant to '\\n\",\n      \"                                           'quantum Internet computing would '\\n\",\n      \"                                           'be areasof study such as quantum '\\n\",\n      \"                                           'protocols for distributed nodes '\\n\",\n      \"                                           'using quantuminformation for '\\n\",\n      \"                                           'computations, quantum cloud '\\n\",\n      \"                                           'computing, delegated '\\n\",\n      \"                                           'verifiableblind or private '\\n\",\n      \"                                           'computing, non-local gates, and '\\n\",\n      \"                                           'distributed quantumapplications, '\\n\",\n      \"                                           'over Internet-scale distances.',\\n\",\n      \"                                'title': 'The Rise of Quantum Internet '\\n\",\n      \"                                         'Computing',\\n\",\n      \"                                'updated': '2022-08-01 10:36:13'},\\n\",\n      \"                               {'authors': ['Seth Lloyd'],\\n\",\n      \"                                'categories': ['quant-ph'],\\n\",\n      \"                                'comment': '9 pages, plain TeX, article from '\\n\",\n      \"                                           '1998 conference proceedings\\\\n'\\n\",\n      \"                                           '  proposing fermionic quantum '\\n\",\n      \"                                           'computers',\\n\",\n      \"                                'doi': None,\\n\",\n      \"                                'entry_id': 'http://arxiv.org/abs/quant-ph/0003151v1',\\n\",\n      \"                                'journal_ref': 'in `Unconventional Models of '\\n\",\n      \"                                               \\\"Computation,' C.S. Calude, J. \\\"\\n\",\n      \"                                               'Casti,\\\\n'\\n\",\n      \"                                               '  M.J. Dinneen, eds., '\\n\",\n      \"                                               'Springer, Singapore, 1998',\\n\",\n      \"                                'links': ['http://arxiv.org/abs/quant-ph/0003151v1',\\n\",\n      \"                                          'http://arxiv.org/pdf/quant-ph/0003151v1'],\\n\",\n      \"                                'pdf_downloaded': None,\\n\",\n      \"                                'pdf_url': 'http://arxiv.org/pdf/quant-ph/0003151v1',\\n\",\n      \"                                'primary_category': 'quant-ph',\\n\",\n      \"                                'published': '2000-03-31 22:07:23',\\n\",\n      \"                                'summary': 'This paper investigates a variety '\\n\",\n      \"                                           'of unconventional quantum '\\n\",\n      \"                                           'computationdevices, including '\\n\",\n      \"                                           'fermionic quantum computers and '\\n\",\n      \"                                           'computers that exploitnonlinear '\\n\",\n      \"                                           'quantum mechanics. It is shown '\\n\",\n      \"                                           'that unconventional quantum '\\n\",\n      \"                                           'computingdevices can in principle '\\n\",\n      \"                                           'compute some quantities more '\\n\",\n      \"                                           \\\"rapidly than`conventional' quantum \\\"\\n\",\n      \"                                           'computers.',\\n\",\n      \"                                'title': 'Unconventional Quantum Computing '\\n\",\n      \"                                         'Devices',\\n\",\n      \"                                'updated': '2000-03-31 22:07:23'}]}]}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"#  arxiv results\\n\",\n    \"transitions = client.executions.transitions.list(execution_id=execution.id).items[19]\\n\",\n    \"# pretty printing the arxiv results\\n\",\n    \"pprint.pprint(transitions.output)\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/08-rag-chatbot.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<div align=\\\"center\\\" id=\\\"top\\\">\\n\",\n    \"<img src=\\\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\\\" alt=\\\"julep\\\" />\\n\",\n    \"\\n\",\n    \"<br>\\n\",\n    \"  <p>\\n\",\n    \"    <a href=\\\"https://dashboard.julep.ai\\\">\\n\",\n    \"      <img src=\\\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\\\" alt=\\\"Get API Key\\\" height=\\\"28\\\">\\n\",\n    \"    </a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://docs.julep.ai\\\">\\n\",\n    \"      <img src=\\\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\\\" alt=\\\"Documentation\\\" height=\\\"28\\\">\\n\",\n    \"    </a>\\n\",\n    \"  </p>\\n\",\n    \"  <p>\\n\",\n    \"   <a href=\\\"https://www.npmjs.com/package/@julep/sdk\\\"><img src=\\\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\\\" alt=\\\"NPM Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://pypi.org/project/julep\\\"><img src=\\\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\\\" alt=\\\"PyPI - Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://hub.docker.com/u/julepai\\\"><img src=\\\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\\\" alt=\\\"Docker Image Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://choosealicense.com/licenses/apache/\\\"><img src=\\\"https://img.shields.io/github/license/julep-ai/julep\\\" alt=\\\"GitHub License\\\" height=\\\"28\\\"></a>\\n\",\n    \"  </p>\\n\",\n    \"  \\n\",\n    \"  <h3>\\n\",\n    \"    <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\">Discord</a>\\n\",\n    \"    ·\\n\",\n    \"    <a href=\\\"https://x.com/julep_ai\\\" rel=\\\"dofollow\\\">𝕏</a>\\n\",\n    \"    ·\\n\",\n    \"    <a href=\\\"https://www.linkedin.com/company/julep-ai\\\" rel=\\\"dofollow\\\">LinkedIn</a>\\n\",\n    \"  </h3>\\n\",\n    \"</div>\\n\",\n    \"\\n\",\n    \"# Task Definition: Chatbot for a Website\\n\",\n    \"\\n\",\n    \"### Overview\\n\",\n    \"\\n\",\n    \"This task implements an automated system to index and process a website. The system crawls the website, extracts relevant information, and creates a searchable knowledge base that can be queried programmatically. Finally, it creates a chatbot that can answer questions about the website using the RAG knowledge base.\\n\",\n    \"\\n\",\n    \"### Task Tools:\\n\",\n    \"\\n\",\n    \"- **get_page**: Web crawler component for systematically scraping a website's page using JIna's API\\n\",\n    \"- **create_agent_doc**: Document processor for converting web content into indexed, searchable documents\\n\",\n    \"\\n\",\n    \"### Task Input:\\n\",\n    \"\\n\",\n    \"Required parameter:\\n\",\n    \"- **url**: Entry point URL for the crawler (e.g., \\\"https://en.wikipedia.org/wiki/Artificial_intelligence\\\", or \\\"https://julep.ai\\\")\\n\",\n    \"- **reducing_strength**: Number of sentences to club together to reduce the size of the chunks list\\n\",\n    \"\\n\",\n    \"### Task Output:\\n\",\n    \"\\n\",\n    \"- Indexed knowledge base containing processed documentation about the given website links\\n\",\n    \"- Query interface for programmatic access to the documentation\\n\",\n    \"\\n\",\n    \"### Task Flow\\n\",\n    \"\\n\",\n    \"1. Create an agent with the get_page tool\\n\",\n    \"2. Get the get_page tool's API key \\n\",\n    \"3. Crawl website using get_page tool:\\n\",\n    \"    - Specify URL and page limit\\n\",\n    \"    - Enable smart mode, proxy, readability\\n\",\n    \"    - Filter out images and SVGs\\n\",\n    \"    - Use sentence-based chunking (15 sentences per chunk)\\n\",\n    \"4. For each crawled page:\\n\",\n    \"    - Extract content\\n\",\n    \"    - Break into chunks\\n\",\n    \"    - Generate succinct context for each chunk\\n\",\n    \"    - Combine chunk with context\\n\",\n    \"5. Create agent documents:\\n\",\n    \"    - Store processed chunks as documents\\n\",\n    \"    - Add metadata like source\\n\",\n    \"    - Index for search/retrieval\\n\",\n    \"6. Finally chat with the agent in the session and retrieve the documents that are relevant to the user's query\\n\",\n    \"\\n\",\n    \"```plaintext\\n\",\n    \"+----------------+     +----------------+     +----------------+     +---------------+\\n\",\n    \"|  Jina AI       |     |  Extract       |     |  Process       |     |  Create       |\\n\",\n    \"|  Crawler       | --> |  Content       | --> |  Content       | --> |  Agent Docs   |\\n\",\n    \"|  (URL Entry)   |     |  (Web Pages)   |     |  (Chunks)      |     |  (Index)      |\\n\",\n    \"+----------------+     +----------------+     +----------------+     +---------------+\\n\",\n    \"                                                                             |\\n\",\n    \"+----------------+     +----------------+     +----------------+     +---------------+\\n\",\n    \"|  Query         |     |  Search        |     |  Retrieve      |     |  Chat with    |\\n\",\n    \"|  Interface     | <-- |  Index         | <-- |  Documents     | <-- |  Agent        |\\n\",\n    \"|  (User Input)  |     |  (Knowledge)   |     |  (Context)     |     |  (Session)    |\\n\",\n    \"+----------------+     +----------------+     +----------------+     +---------------+\\n\",\n    \"```\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Implementation\\n\",\n    \"\\n\",\n    \"To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\\n\",\n    \"\\n\",\n    \"<a target=\\\"_blank\\\" href=\\\"https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/08-rag-customer-support-chatbot.ipynb\\\">\\n\",\n    \"  <img src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/>\\n\",\n    \"</a>\\n\",\n    \"\\n\",\n    \"### Additional Information\\n\",\n    \"\\n\",\n    \"For more details about the task or if you have any questions, please don't hesitate to contact the author:\\n\",\n    \"\\n\",\n    \"**Author:** Julep AI  \\n\",\n    \"**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or  <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\">Discord</a>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 1,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"\\n\",\n      \"\\u001b[1m[\\u001b[0m\\u001b[34;49mnotice\\u001b[0m\\u001b[1;39;49m]\\u001b[0m\\u001b[39;49m A new release of pip is available: \\u001b[0m\\u001b[31;49m24.0\\u001b[0m\\u001b[39;49m -> \\u001b[0m\\u001b[32;49m25.1.1\\u001b[0m\\n\",\n      \"\\u001b[1m[\\u001b[0m\\u001b[34;49mnotice\\u001b[0m\\u001b[1;39;49m]\\u001b[0m\\u001b[39;49m To update, run: \\u001b[0m\\u001b[32;49mpip install --upgrade pip\\u001b[0m\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"!pip install julep -U --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### NOTE:\\n\",\n    \"\\n\",\n    \"- UUIDs are generated for both the agent and task to uniquely identify them within the system.\\n\",\n    \"- Once created, these UUIDs should remain unchanged for simplicity.\\n\",\n    \"- Altering a UUID will result in the system treating it as a new agent or task.\\n\",\n    \"- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Global UUID is generated for agent and task\\n\",\n    \"import uuid\\n\",\n    \"\\n\",\n    \"# NOTE: these UUIDs are used in order not to use the `create_or_update` methods instead of\\n\",\n    \"# the `create` methods for the sake of not creating new resources every time a cell is run.\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4()\\n\",\n    \"SESSION_UUID = uuid.uuid4()\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Creating Julep Client with the API Key\\n\",\n    \"\\n\",\n    \"Get your API key from [here](https://dashboard.julep.ai/)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"from dotenv import load_dotenv\\n\",\n    \"\\n\",\n    \"load_dotenv(override=True)\\n\",\n    \"\\n\",\n    \"JULEP_API_KEY = os.environ.get(\\\"JULEP_API_KEY\\\")\\n\",\n    \"\\n\",\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=JULEP_API_KEY, environment=\\\"production\\\")\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Create agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=\\\"Website Navigator\\\",\\n\",\n    \"    about=\\\"An AI assistant that can navigate a company's website and assist you in finding the information you need to make the most of our services.\\\",\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Number of documents in the agent's document store: 0\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"docs = [*client.agents.docs.list(agent_id=AGENT_UUID)]\\n\",\n    \"print(f\\\"Number of documents in the agent's document store: {len(docs)}\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"jina_api_key = \\\"jina_api_key\\\"\\n\",\n    \"\\n\",\n    \"task_def = yaml.safe_load('''\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: Julep Jina Crawler Task\\n\",\n    \"description: A Julep agent that can crawl a website and store the content in the document store.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### INPUT SCHEMA #######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    url:\\n\",\n    \"      type: string\\n\",\n    \"    reducing_strength:\\n\",\n    \"      type: integer\\n\",\n    \"      \\n\",\n    \"########################################################\\n\",\n    \"################### TOOLS ##############################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"tools:\\n\",\n    \"- name: get_page\\n\",\n    \"  type: api_call\\n\",\n    \"  api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: https://r.jina.ai/\\n\",\n    \"    headers:\\n\",\n    \"      accept: application/json\\n\",\n    \"    x-return-format: markdown\\n\",\n    \"    x-with-images-summary: \\\"true\\\"\\n\",\n    \"    x-with-links-summary: \\\"true\\\"\\n\",\n    \"    x-retain-images: \\\"none\\\"\\n\",\n    \"    x-no-cache: \\\"true\\\"\\n\",\n    \"    Authorization: \\\"Bearer {jina_api_key}\\\"\\n\",\n    \"\\n\",\n    \"- name : create_agent_doc\\n\",\n    \"  description: Create an agent doc\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: agent\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: create\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### INDEX PAGE SUBWORKFLOW ##############\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"index_page:\\n\",\n    \"\\n\",\n    \"# Step #0 - Evaluate the content\\n\",\n    \"- evaluate:\\n\",\n    \"    document: $ _.document\\n\",\n    \"    chunks: |\\n\",\n    \"      $ [\\\" \\\".join(_.content[i:i + max(_.reducing_strength, len(_.content) // 9)]) \\n\",\n    \"        for i in range(0, len(_.content), max(_.reducing_strength, len(_.content) // 9))]\\n\",\n    \"    label: docs\\n\",\n    \"\\n\",\n    \"# Step #1 - Process each content chunk in parallel\\n\",\n    \"- over: \\\"$ [(steps[0].input.content, chunk) for chunk in _['chunks']]\\\"\\n\",\n    \"  parallelism: 3\\n\",\n    \"  map:\\n\",\n    \"    prompt: \\n\",\n    \"    - role: user\\n\",\n    \"      content: >-\\n\",\n    \"        $ f\\\"\\\"\\\"\\n\",\n    \"        <document>\\n\",\n    \"        {_[0]}\\n\",\n    \"        </document>\\n\",\n    \"\\n\",\n    \"        Here is the chunk we want to situate within the whole document\\n\",\n    \"        <chunk>\\n\",\n    \"        {_[1]}\\n\",\n    \"        </chunk>\\n\",\n    \"\\n\",\n    \"        Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. \\n\",\n    \"        Answer only with the succinct context and nothing else.\\\"\\\"\\\"\\n\",\n    \"    \\n\",\n    \"    unwrap: true\\n\",\n    \"    settings:\\n\",\n    \"      max_tokens: 16000\\n\",\n    \"\\n\",\n    \"# Step #2 - Create a new document and add it to the agent docs store\\n\",\n    \"- evaluate:\\n\",\n    \"    final_chunks: |\\n\",\n    \"      $ [\\n\",\n    \"        NEWLINE.join([chunk, succint]) for chunk, succint in zip(steps[1].input.chunks, _)\\n\",\n    \"      ]\\n\",\n    \"\\n\",\n    \"# Step #3 - Create a new document and add it to the agent docs store\\n\",\n    \"- over: $ _['final_chunks']\\n\",\n    \"  parallelism: 3\\n\",\n    \"  map:\\n\",\n    \"    tool: create_agent_doc\\n\",\n    \"    arguments:\\n\",\n    \"      agent_id: \\\"$ str(agent.id)\\\" # <--- This is the agent id of the agent you want to add the document to\\n\",\n    \"      data:\\n\",\n    \"        metadata:\\n\",\n    \"          source: \\\"jina_crawler\\\"\\n\",\n    \"\\n\",\n    \"        title: \\\"Website Document\\\"\\n\",\n    \"        content: $ _\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### MAIN WORKFLOW ######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"\\n\",\n    \"# Step 0: Get the content of the product page\\n\",\n    \"- tool: get_page\\n\",\n    \"  arguments:\\n\",\n    \"    url: $ \\\"https://r.jina.ai/\\\" + steps[0].input.url\\n\",\n    \"\\n\",\n    \"# Step 1: Chunk the content\\n\",\n    \"- evaluate:\\n\",\n    \"    result: $ chunk_doc(_.json.data.content.strip())\\n\",\n    \"\\n\",\n    \"# Step 2: Evaluate step to document chunks\\n\",\n    \"- workflow: index_page\\n\",\n    \"  arguments:\\n\",\n    \"    content: $ _.result\\n\",\n    \"    document: $ steps[0].output.json.data.content.strip()\\n\",\n    \"    reducing_strength: $ steps[0].input.reducing_strength\\n\",\n    \"''')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<span style=\\\"color:olive;\\\">Notes:</span>\\n\",\n    \"- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\\n\",\n    \"- The `$` sign is used to differentiate between a Python expression and a string.\\n\",\n    \"- The `_` refers to the output of the previous step.\\n\",\n    \"- The `steps[index].input` refers to the input of the step at `index`.\\n\",\n    \"- The `steps[index].output` refers to the output of the step at `index`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Create the task\\n\",\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution_homepage = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    input={\\n\",\n    \"        \\\"url\\\": \\\"https://julep.ai/\\\",\\n\",\n    \"        \\\"reducing_strength\\\": 2\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Monitoring and analyzing execution\\n\",\n    \"\\n\",\n    \"There are multiple ways to track and analyze the execution:\\n\",\n    \"\\n\",\n    \"1. **Stream Execution Status**: This method streams real-time status updates from the execution, allowing you to monitor its progress as it happens. Each event contains the current status of the execution (e.g., `running`, `succeeded`, `failed`).\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: The streaming status updates will continue until the execution completes. You can see the transitions after the execution has completed to analyze the detailed outputs of each step.</span>\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"running\\n\",\n      \"running\\n\",\n      \"running\\n\",\n      \"running\\n\",\n      \"running\\n\",\n      \"running\\n\",\n      \"running\\n\",\n      \"running\\n\",\n      \"running\\n\",\n      \"succeeded\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"for event in client.executions.status.stream(execution_id=execution_homepage.id):\\n\",\n    \"    print(event.status)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Index:  0 Type:  init\\n\",\n      \"output:  {\\n\",\n      \"  \\\"url\\\": \\\"https://julep.ai/\\\",\\n\",\n      \"  \\\"reducing_strength\\\": 2\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  1 Type:  step\\n\",\n      \"output:  {\\n\",\n      \"  \\\"json\\\": {\\n\",\n      \"    \\\"code\\\": 200,\\n\",\n      \"    \\\"data\\\": {\\n\",\n      \"      \\\"url\\\": \\\"https://julep.ai/\\\",\\n\",\n      \"      \\\"title\\\": \\\"Julep AI\\\",\\n\",\n      \"      \\\"usage\\\": {\\n\",\n      \"        \\\"tokens\\\": 4630\\n\",\n      \"      },\\n\",\n      \"      \\\"content\\\": \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[![Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n[New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\nDeploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\nOpen-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n[Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n[Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n![Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\nIterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\nConnect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\nLLM Platforms\\\\n\\\\n![Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n![Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n![Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n![Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n![Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n![Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n![Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n![Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ![Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\nAny REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\nDefine multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\nReal people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\nScale to millions.\\\\n----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\nProduction Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\nAnswers.\\\\n---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\nJulep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\nWho is Julep for?\\\\n\\\\nJulep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\nHow does Julep's approach differ from typical AI development?\\\\n\\\\nWhile most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\nHow is Julep different from agent frameworks?\\\\n\\\\nWhile LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\nWhat types of workflows can I build with Julep?\\\\n\\\\nYou can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\nHow does Julep handle scaling and fault tolerance?\\\\n\\\\nJulep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\nIs Julep secure and enterprise-grade?\\\\n\\\\nYes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\nWhat are Julep\\\\u2019s pricing models?\\\\n\\\\nWe offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\nKeep me informed\\\\n\\\\nDev Resources\\\\n\\\\n[Docs](https://docs.julep.ai/)\\\\n\\\\n[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n[Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n[Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n[Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n[Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n[About](https://julep.ai/about)\\\\n\\\\n[Contact Us](https://julep.ai/contact)\\\\n\\\\n[Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n[Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n[Twitter](https://x.com/julep_ai)\\\\n\\\\n[Dev.to](https://dev.to/julep)\\\\n\\\\n[Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n[Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n![Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n[Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\",\\n\",\n      \"      \\\"description\\\": \\\"Backend for building AI agent workflows. A new DSL for building tasks and a server for running them. \\\\nAllows companie so build and deploy AI pipelines in minues.\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"meta\\\": {\\n\",\n      \"      \\\"usage\\\": {\\n\",\n      \"        \\\"tokens\\\": 4630\\n\",\n      \"      }\\n\",\n      \"    },\\n\",\n      \"    \\\"status\\\": 20000\\n\",\n      \"  },\\n\",\n      \"  \\\"content\\\": \\\"eyJjb2RlIjoyMDAsInN0YXR1cyI6MjAwMDAsImRhdGEiOnsidGl0bGUiOiJKdWxlcCBBSSIsImRlc2NyaXB0aW9uIjoiQmFja2VuZCBmb3IgYnVpbGRpbmcgQUkgYWdlbnQgd29ya2Zsb3dzLiBBIG5ldyBEU0wgZm9yIGJ1aWxkaW5nIHRhc2tzIGFuZCBhIHNlcnZlciBmb3IgcnVubmluZyB0aGVtLiBcbkFsbG93cyBjb21wYW5pZSBzbyBidWlsZCBhbmQgZGVwbG95IEFJIHBpcGVsaW5lcyBpbiBtaW51ZXMuIiwidXJsIjoiaHR0cHM6Ly9qdWxlcC5haS8iLCJjb250ZW50IjoiSnVsZXAgQUlcblxuPT09PT09PT09PT09PT09XG5cblshW0ltYWdlIDFdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OWFpDZlQ1SHk1MTBYVTlGdUEwUUFMMzEwWTAucG5nKV0oaHR0cHM6Ly9qdWxlcC5haS8pXG5cbltOZXcgTGF1bmNoIE9wZW4tU291cmNlIFJlc3BvbnNlcyBBUEldKGh0dHBzOi8vZG9jcy5qdWxlcC5haS9yZXNwb25zZXMpXG5cbk9wZW4gU291cmNlXG5cbltHaXRodWIg4piFIDQuN0tdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWxlcC1haS9qdWxlcClcblxuRGVwbG95IHNlcnZlcmxlc3NcblxuQUkgd29ya2Zsb3dzXG5cbmF0IHNjYWxlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5pbiBtaW51dGVzLCBub3Qgd2Vla3MuXG5cbk9wZW4tc291cmNlIEFQSSB0byBidWlsZCBcblxuaW5maW5pdGVseSBzY2FsYWJsZSwgZHVyYWJsZSBhbmQgbG9uZyBydW5uaW5nIEFJIHBpcGVsaW5lc1xuXG51c2luZyBhZ2VudHMsIHRhc2tzIGFuZCB0b29sc1xuXG5bRGVwbG95IHlvdXIgZmlyc3Qgd29ya2Zsb3ddKGh0dHBzOi8vZGFzaGJvYXJkLmp1bGVwLmFpLylcblxuW0dldCBhIGRlbW9dKGh0dHBzOi8vY2FsZW5kbHkuY29tL2lzaGl0YS1qdWxlcClcblxuQ1VTVE9NRVIgU1RPUklFU1xuXG5WaWRlbyBFZGl0aW5nXG5cblJBRyBBc3NpdGFudHNcblxuTWFya2V0aW5nXG5cblVzZXIgUHJvZmlsaW5nXG5cblZlcmlmaWNhdGlvbnNcblxuIVtJbWFnZSAyXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvQUV3WWgxWWR6cEN0VXVDMGNTNTMxWURXVWxzLnBuZz9zY2FsZS1kb3duLXRvPTEwMjQpXG5cblZpZHlvIGJ1aWx0IHBlcnNvbmFsaXNlZCBtYXJrZXRpbmcgaW50ZWxsaWdlbmNlIGZvciB0aG91c2FuZHMgb2YgdXNlcnMgdXNpbmcgcG9zdGluZyB0cmVuZHMgYW5kIGN1cnJlbnQgdG9wIHRyZW5kcy5cblxuSXRlcmF0ZSBhbmQgZGVwbG95IEFJIGZlYXR1cmVzIHN1cGVyIGZhc3QgYnkgYnJpbmdpbmcgZGF0YSBmcm9tIGRpZmZlcmVudCBzb3VyY2VzIGluIG9uZSBwbGFjZS5cblxuQ29ubmVjdCB3aXRoIGFueSBBSSBtb2RlbCxcblxuQVBJIG9yIGRhdGEgc291cmNlXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblNlYW1sZXNzbHkgaW50ZWdyYXRlIHdpdGggeW91ciBleGlzdGluZyBzdGFjayBhbmQgZmF2b3JpdGUgQUkgbW9kZWxzLlxuXG5MTE0gUGxhdGZvcm1zXG5cbiFbSW1hZ2UgM10oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL3p4V3hORjRTekR0Y0ZMOW1WbUF2b0RGNERFLnBuZz9sb3NzbGVzcz0xKVxuXG4hW0ltYWdlIDRdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9waDdFRzdvWWtRNUF3dTg2aGMwNXdSanZHdy5wbmc/bG9zc2xlc3M9MSlcblxuIVtJbWFnZSA1XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvSU1IV0tiZmhjOGRabzdNaG5rcGxLM0l0bW1NLnBuZz9sb3NzbGVzcz0xKVxuXG4hW0ltYWdlIDZdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9RWXRXM3BnSUwyakVUQk4zY0VwVzZIUGRsWS5wbmc/bG9zc2xlc3M9MSlcblxuIVtJbWFnZSA3XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvWHZsMFlud0xtaWw2VDNBR2pSbGZwQXhJeUpBLnBuZz9sb3NzbGVzcz0xKVxuXG4hW0ltYWdlIDhdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy84MDlmeTlyOXh1aFhQaGlIVzFrdllIanVGNC5wbmc/bG9zc2xlc3M9MSlcblxuIVtJbWFnZSA5XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvdXpYRmxMckgzbTdhOEl5ZzFwdmV3MWdyNFUucG5nP2xvc3NsZXNzPTEpXG5cbiFbSW1hZ2UgMTBdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy82U0l6T3A5bTh0SHFBWjZ6bk8xTGdxUjVYRFkucG5nP2xvc3NsZXNzPTEpXG5cbkxhbmd1YWdlc1xuXG5JbnRlZ3JhdGlvbnNcblxuKiAgICFbSW1hZ2UgMTFdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAxMl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMTNdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDE0XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAxNV0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAxNl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMTddKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAxOF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMTldKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDIwXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyMV0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyMl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMjNdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyNF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMjVdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDI2XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyN10oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAyOF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMjldKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzMF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMzFdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDMyXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzM10oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzNF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMzVdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9OZnhrN1VBdXFUMHVWOEd0Z0wwVlQza2ZuT2sucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzNl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dGT294bkF4d3pVZzUyS3RsVUhwS2h3LnBuZz9sb3NzbGVzcz0xKSAgIFxuKiAgICFbSW1hZ2UgMzddKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ySnJaUTZlbG9tT2JKTEtqWHVES050Y1MxOC5wbmc/bG9zc2xlc3M9MSkgICBcbiogICAhW0ltYWdlIDM4XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvaE9IUkhpVHZNUUhzNW55SmhXQW1DY0s2ZVEucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSAzOV0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2lMRTU3WDdXeWFCSFhETzBheVNKelM2UTAucG5nP2xvc3NsZXNzPTEpICAgXG4qICAgIVtJbWFnZSA0MF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL25NekRmeWFyU2JVazVPbjJqbG4yRlByMEtFLnBuZz9sb3NzbGVzcz0xKSAgIFxuXG5BbnkgUkVTVCBBUElcblxuIyMjIEJ1aWxkIHdpdGggSnVsZXBcblxuQ3JlYXRlIGFuIGFnZW50XG5cbkRlZmluZSBhZ2VudHMgdGhhdCBjYW4gdGFsayB0byB1c2VycyBpbnNpZGUgb2YgYSBzZXNzaW9uXG5cbkFkZCB0b29sc1xuXG5FcXVpcCBhZ2VudHMgd2l0aCB0b29scyAtIHdlYiBzZWFyY2gsIEFQSSBjYWxscywgb3IgY3VzdG9tIGludGVncmF0aW9uc1xuXG5EZWZpbmUgeW91ciB0YXNrc1xuXG5EZWZpbmUgbXVsdGktc3RlcCBwcm9jZXNzZXMgaW4gWUFNTCB3aXRoIGRlY2lzaW9uIHRyZWVzLCBsb29wcywgYW5kIHBhcmFsbGVsIGV4ZWN1dGlvblxuXG5EZXBsb3lcblxuRXhlY3V0ZSBwcm9kdWN0aW9uLWdyYWRlIHdvcmtmbG93cyB3aXRoIG9uZSBjb21tYW5kXG5cbmFnZW50ID0ganVsZXAuYWdlbnRzLmNyZWF0ZShcblxubmFtZT1cIlNwaWRlcm1hblwiLFxuXG5hYm91dD1cIkFJIHRoYXQgY2FuIGNyYXdsIHRoZSB3ZWIgYW5kIGV4dHJhY3QgZGF0YVwiLFxuXG5tb2RlbD1cImdwdC00by1taW5pXCIsXG5cbmRlZmF1bHRfc2V0dGluZ3M9e1xuXG5cInRlbXBlcmF0dXJlXCI6IDAuNzUsXG5cblwibWF4X3Rva2Vuc1wiOiAxMDAwMCxcblxuXCJ0b3BfcFwiOiAxLjAsXG5cbn1cblxuKVxuXG5SZWFsIHBlb3BsZSwgUmVhbCByZXN1bHRzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiogICAgIEp1bGVwIHRvIG1lIHNpdHMgaW4gdGhlIGludGVyc2VjdGlvbiBvZiB3aGF0IFphcGllciBkaWQgZm9yIHNpbXBsaWZ5aW5nIHdvcmtmbG93cywgYW5kIHdoYXQgVmVyY2VsIGRpZCBmb3Igc2ltcGxpZnlpbmcgc2hpcHBpbmcuIFRoZSBuZXcgcG9zc2liaWxpdGllcyBhcmUgZW5kbGVzcy4gSSBhbSBleGNpdGVkIGFidXQgd2hhdCBhbGwgY2FuIGJlIGRvbmUgd2l0aCB0aGlzIHRlY2ggYXQgRVMuICAhW0ltYWdlIDQxXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvRE5IMXRQWDRvREhiZjlycU1FcDlqcTFuenM4LmpwZWcpICBTdXJ5YW5zaCBUaWJhcmV3YWwgQ0VPLCBFc3NlbnRpYWxseVNwb3J0cyAgICAgXG4qICAgICBGb3IgVmlkeW8sIHdlIHNoaXBwZWQgNiBtb250aHMgd29ydGggb2YgcHJvZHVjdCBkZXZlbG9wbWVudCBpbiA2IGhvdXJzLiBHQU1FIENIQU5HRVIhISAgIVtJbWFnZSA0Ml0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL2ZUYnM4Yjc2WDRsQlM3cG9ZQmMxNTZHRS5qcGVnKSAgVmVkYW50IE1haGVzaHdhcmkgQ0VPLCBWaWR5by5haSAgICAgXG4qICAgICBXZSB0cmllZCBidWlsZGluZyBvdXIgYWkgc3RhY2sgd2hlcmUgd2UgbmVlZGVkIHNpbXBsZSBhdXRvbWF0ZWQgY29tcHV0ZXIgdXNlLiB3ZSBzcGVudCBtb250aHMgdHJ5aW5nIHRvIGdldCBpdCByaWdodCwgYnV0IG91ciBkZXZlbG9wbWVudCB0aW1lIGdvdCBjdXQgdG8gYSBjb3VwbGUgd2Vla3MgYmVjYXVzZSBtb3N0IG9mIHRoZSBpbmZyYSBvcmNoZXN0cmF0aW9uIHdhcyBoYW5kbGVkIGJ5IGp1bGVwLiBhbGwgdGhhdCB3ZSBoYWQgdG8gZG8gd2FzIHJlZmluZSBvdXIgcHJvbXB0cyAgIVtJbWFnZSA0M10oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL3Rja3N0VllxTm5ZOEdZVVZSR0pqS3N1Y2hudy5qcGVnKSAgTWFkaGF2YW4gQ0VPLCBSZWNsYWltIFByb3RvY29sICAgICBcbiogICAgIFwiU2FtZSBleHBlcmllbmNlIGFzIHJldmlld2luZyBkZXNpZ25zIG9uIEZpZ21hIHdpdGggbXkgZGVzaWduZXIuIFNhdCB3aXRoIG15IGRldmVsb3BlciBvbmNlLCBhbmQgd2Uga2VwdCBicmFpbnN0b3JtaW5nLCB0ZXN0aW5nLCBwcm90b3R5cGluZyBhbmQgc2hpcHBpbmcgYXQgb25jZS4gSSBnb3QgY29udHJvbCBiYWNrIGluIG15IGhhbmRzIGFzIGEgbm9uLWRldmVsb3Blci5cIiAgIVtJbWFnZSA0NF0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL015Uk1WSnA3aGJYeWxObktNY0hhc0hiS3lCWS5qcGVnKSAgQWtzaGF5IFBydXRoaSBDRU8sIENhbG0gU2xlZXAgICAgIFxuKiAgICAgV29ya2luZyB3aXRoIEp1bGVwIGFjY2VsZXJhdGVkIFVrdW1pLCBieSBlbmFibGluZyB1cyB0byBmb2N1cyBvbiBvdXIgY29yZSBzdHJlbmd0aHMgYW5kIGxldHRpbmcgSnVsZXAgbmF2aWdhdGUgdGhlIGNvbXBsZXggd2ViIG9mIGNhbGxzIHRvIGFpIG1vZGVscyB3ZSBjb3VsZCBkbyBtb3JlIHdpdGggbGVzcy4gICFbSW1hZ2UgNDVdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9HVjhGU0toRnNhUTVzd3NzajRlNUxZUVQ3Z00uanBnKSAgU2FjaGluIEdhdXIgQ29mb3VuZGVyLCBVa3VtaSBBSSAgICAgXG4qICAgICBKdWxlcCB0byBtZSBzaXRzIGluIHRoZSBpbnRlcnNlY3Rpb24gb2Ygd2hhdCBaYXBpZXIgZGlkIGZvciBzaW1wbGlmeWluZyB3b3JrZmxvd3MsIGFuZCB3aGF0IFZlcmNlbCBkaWQgZm9yIHNpbXBsaWZ5aW5nIHNoaXBwaW5nLiBUaGUgbmV3IHBvc3NpYmlsaXRpZXMgYXJlIGVuZGxlc3MuIEkgYW0gZXhjaXRlZCBhYnV0IHdoYXQgYWxsIGNhbiBiZSBkb25lIHdpdGggdGhpcyB0ZWNoIGF0IEVTLiAgIVtJbWFnZSA0Nl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0ROSDF0UFg0b0RIYmY5cnFNRXA5anExbnpzOC5qcGVnKSAgU3VyeWFuc2ggVGliYXJld2FsIENFTywgRXNzZW50aWFsbHlTcG9ydHMgICAgIFxuKiAgICAgRm9yIFZpZHlvLCB3ZSBzaGlwcGVkIDYgbW9udGhzIHdvcnRoIG9mIHByb2R1Y3QgZGV2ZWxvcG1lbnQgaW4gNiBob3Vycy4gR0FNRSBDSEFOR0VSISEgICFbSW1hZ2UgNDddKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9mVGJzOGI3Nlg0bEJTN3BvWUJjMTU2R0UuanBlZykgIFZlZGFudCBNYWhlc2h3YXJpIENFTywgVmlkeW8uYWkgICAgIFxuKiAgICAgV2UgdHJpZWQgYnVpbGRpbmcgb3VyIGFpIHN0YWNrIHdoZXJlIHdlIG5lZWRlZCBzaW1wbGUgYXV0b21hdGVkIGNvbXB1dGVyIHVzZS4gd2Ugc3BlbnQgbW9udGhzIHRyeWluZyB0byBnZXQgaXQgcmlnaHQsIGJ1dCBvdXIgZGV2ZWxvcG1lbnQgdGltZSBnb3QgY3V0IHRvIGEgY291cGxlIHdlZWtzIGJlY2F1c2UgbW9zdCBvZiB0aGUgaW5mcmEgb3JjaGVzdHJhdGlvbiB3YXMgaGFuZGxlZCBieSBqdWxlcC4gYWxsIHRoYXQgd2UgaGFkIHRvIGRvIHdhcyByZWZpbmUgb3VyIHByb21wdHMgICFbSW1hZ2UgNDhdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy90Y2tzdFZZcU5uWThHWVVWUkdKaktzdWNobncuanBlZykgIE1hZGhhdmFuIENFTywgUmVjbGFpbSBQcm90b2NvbCAgICAgXG4qICAgICBcIlNhbWUgZXhwZXJpZW5jZSBhcyByZXZpZXdpbmcgZGVzaWducyBvbiBGaWdtYSB3aXRoIG15IGRlc2lnbmVyLiBTYXQgd2l0aCBteSBkZXZlbG9wZXIgb25jZSwgYW5kIHdlIGtlcHQgYnJhaW5zdG9ybWluZywgdGVzdGluZywgcHJvdG90eXBpbmcgYW5kIHNoaXBwaW5nIGF0IG9uY2UuIEkgZ290IGNvbnRyb2wgYmFjayBpbiBteSBoYW5kcyBhcyBhIG5vbi1kZXZlbG9wZXIuXCIgICFbSW1hZ2UgNDldKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9NeVJNVkpwN2hiWHlsTm5LTWNIYXNIYkt5QlkuanBlZykgIEFrc2hheSBQcnV0aGkgQ0VPLCBDYWxtIFNsZWVwICAgICBcbiogICAgIFdvcmtpbmcgd2l0aCBKdWxlcCBhY2NlbGVyYXRlZCBVa3VtaSwgYnkgZW5hYmxpbmcgdXMgdG8gZm9jdXMgb24gb3VyIGNvcmUgc3RyZW5ndGhzIGFuZCBsZXR0aW5nIEp1bGVwIG5hdmlnYXRlIHRoZSBjb21wbGV4IHdlYiBvZiBjYWxscyB0byBhaSBtb2RlbHMgd2UgY291bGQgZG8gbW9yZSB3aXRoIGxlc3MuICAhW0ltYWdlIDUwXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvR1Y4RlNLaEZzYVE1c3dzc2o0ZTVMWVFUN2dNLmpwZykgIFNhY2hpbiBHYXVyIENvZm91bmRlciwgVWt1bWkgQUkgICAgIFxuKiAgICAgSnVsZXAgdG8gbWUgc2l0cyBpbiB0aGUgaW50ZXJzZWN0aW9uIG9mIHdoYXQgWmFwaWVyIGRpZCBmb3Igc2ltcGxpZnlpbmcgd29ya2Zsb3dzLCBhbmQgd2hhdCBWZXJjZWwgZGlkIGZvciBzaW1wbGlmeWluZyBzaGlwcGluZy4gVGhlIG5ldyBwb3NzaWJpbGl0aWVzIGFyZSBlbmRsZXNzLiBJIGFtIGV4Y2l0ZWQgYWJ1dCB3aGF0IGFsbCBjYW4gYmUgZG9uZSB3aXRoIHRoaXMgdGVjaCBhdCBFUy4gICFbSW1hZ2UgNTFdKGh0dHBzOi8vZnJhbWVydXNlcmNvbnRlbnQuY29tL2ltYWdlcy9ETkgxdFBYNG9ESGJmOXJxTUVwOWpxMW56czguanBlZykgIFN1cnlhbnNoIFRpYmFyZXdhbCBDRU8sIEVzc2VudGlhbGx5U3BvcnRzICAgICBcbiogICAgIEZvciBWaWR5bywgd2Ugc2hpcHBlZCA2IG1vbnRocyB3b3J0aCBvZiBwcm9kdWN0IGRldmVsb3BtZW50IGluIDYgaG91cnMuIEdBTUUgQ0hBTkdFUiEhICAhW0ltYWdlIDUyXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvZlRiczhiNzZYNGxCUzdwb1lCYzE1NkdFLmpwZWcpICBWZWRhbnQgTWFoZXNod2FyaSBDRU8sIFZpZHlvLmFpICAgICBcbiogICAgIFdlIHRyaWVkIGJ1aWxkaW5nIG91ciBhaSBzdGFjayB3aGVyZSB3ZSBuZWVkZWQgc2ltcGxlIGF1dG9tYXRlZCBjb21wdXRlciB1c2UuIHdlIHNwZW50IG1vbnRocyB0cnlpbmcgdG8gZ2V0IGl0IHJpZ2h0LCBidXQgb3VyIGRldmVsb3BtZW50IHRpbWUgZ290IGN1dCB0byBhIGNvdXBsZSB3ZWVrcyBiZWNhdXNlIG1vc3Qgb2YgdGhlIGluZnJhIG9yY2hlc3RyYXRpb24gd2FzIGhhbmRsZWQgYnkganVsZXAuIGFsbCB0aGF0IHdlIGhhZCB0byBkbyB3YXMgcmVmaW5lIG91ciBwcm9tcHRzICAhW0ltYWdlIDUzXShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvdGNrc3RWWXFOblk4R1lVVlJHSmpLc3VjaG53LmpwZWcpICBNYWRoYXZhbiBDRU8sIFJlY2xhaW0gUHJvdG9jb2wgICAgIFxuKiAgICAgXCJTYW1lIGV4cGVyaWVuY2UgYXMgcmV2aWV3aW5nIGRlc2lnbnMgb24gRmlnbWEgd2l0aCBteSBkZXNpZ25lci4gU2F0IHdpdGggbXkgZGV2ZWxvcGVyIG9uY2UsIGFuZCB3ZSBrZXB0IGJyYWluc3Rvcm1pbmcsIHRlc3RpbmcsIHByb3RvdHlwaW5nIGFuZCBzaGlwcGluZyBhdCBvbmNlLiBJIGdvdCBjb250cm9sIGJhY2sgaW4gbXkgaGFuZHMgYXMgYSBub24tZGV2ZWxvcGVyLlwiICAhW0ltYWdlIDU0XShodHRwczovL2ZyYW1lcnVzZXJjb250ZW50LmNvbS9pbWFnZXMvTXlSTVZKcDdoYlh5bE5uS01jSGFzSGJLeUJZLmpwZWcpICBBa3NoYXkgUHJ1dGhpIENFTywgQ2FsbSBTbGVlcCAgICAgXG4qICAgICBXb3JraW5nIHdpdGggSnVsZXAgYWNjZWxlcmF0ZWQgVWt1bWksIGJ5IGVuYWJsaW5nIHVzIHRvIGZvY3VzIG9uIG91ciBjb3JlIHN0cmVuZ3RocyBhbmQgbGV0dGluZyBKdWxlcCBuYXZpZ2F0ZSB0aGUgY29tcGxleCB3ZWIgb2YgY2FsbHMgdG8gYWkgbW9kZWxzIHdlIGNvdWxkIGRvIG1vcmUgd2l0aCBsZXNzLiAgIVtJbWFnZSA1NV0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL0dWOEZTS2hGc2FRNXN3c3NqNGU1TFlRVDdnTS5qcGcpICBTYWNoaW4gR2F1ciBDb2ZvdW5kZXIsIFVrdW1pIEFJICAgICBcblxuQnVpbGQgQUkgcGlwZWxpbmVzIFxuXG5pbiBtaW51dGVzLlxuXG5TY2FsZSB0byBtaWxsaW9ucy5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuUmFwaWQgUHJvdG90eXBpbmdcblxuXCJGcm9tIGlkZWEgdG8gZGVtbyBpbiBtaW51dGVzXCIgdXNpbmcgYnVpbHQtaW4gUkFHLCBpbi1ob3VzZSBzdGF0ZSBtYW5hZ2VtZW50IGFuZCBleHRlcm5hbCB0b29scy5cblxuUHJvZHVjdGlvbiBSZWFkeVxuXG5cIkdvIGxpdmUgaW5zdGFudGx5IHdpdGggbWFuYWdlZCBpbmZyYXN0cnVjdHVyZVwiIGFuZCBmZWF0dXJlcyBzdWNoIGFzIGxvbmctcnVubmluZyB0YXNrcywgYXV0b21hdGljIHJldHJpZXMgYW5kIGVycm9yIGhhbmRsaW5nXG5cbk1vZHVsYXIgRGVzaWduXG5cblwiQnVpbGQgZmVhdHVyZXMgbGlrZSBMZWdvIGJsb2Nrc1wiIGJ5IGNvbm5lY3RpbmcgdG8gYW55IGV4dGVybmFsIEFQSSwgc3dpdGNoIGJldHdlZW4gTExNcyBhbmQgYWRkIGN1c3RvbSB0b29sc1xuXG5JbmZpbml0ZSBTY2FsZVxuXG5IYW5kbGUgbWlsbGlvbnMgb2YgY29uY3VycmVudCB1c2VycyB3aXRoIGF1dG9tYXRpYyBzY2FsaW5nIGFuZCBsb2FkIGJhbGFuY2luZ1xuXG5GdXR1cmUgUHJvb2ZcblxuXCJBZGQgbmV3IEFJIG1vZGVscyBhbnl0aW1lXCIgXCJJbnRlZ3JhdGUgd2l0aCBhbnkgbmV3IHRvb2wgb3IgQVBJXCJcblxuQ29tcGxldGUgQ29udHJvbFxuXG5cIkZ1bGwgdmlzaWJpbGl0eSBpbnRvIEFJIG9wZXJhdGlvbnNcIiBcIk1hbmFnZSBjb3N0cyBhbmQgcGVyZm9ybWFuY2UgZWFzaWx5XCJcblxuUXVlc3Rpb25zPyBcblxuQW5zd2Vycy5cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5XaGF0IGlzIEp1bGVwP1xuXG5KdWxlcCBpcyBhIHNlcnZlcmxlc3MgQUkgd29ya2Zsb3cgcGxhdGZvcm0gdGhhdCBsZXRzIGRhdGEgc2NpZW5jZSB0ZWFtcyBidWlsZCwgaXRlcmF0ZSBvbiwgYW5kIGRlcGxveSBtdWx0aS1zdGVwIEFJIHBpcGVsaW5lcyB1c2luZyBhIHNpbXBsZSwgZGVjbGFyYXRpdmUgWUFNTC1iYXNlZCBjb25maWd1cmF0aW9uLlxuXG5XaG8gaXMgSnVsZXAgZm9yP1xuXG5KdWxlcCBpcyBkZXNpZ25lZCBmb3IgZGF0YSBzY2llbnRpc3RzIGFuZCBNTCBlbmdpbmVlcnPigJRlc3BlY2lhbGx5IGluIGVudGVycHJpc2Ugc2V0dGluZ3PigJR3aG8gd2FudCB0byBxdWlja2x5IG1vdmUgZnJvbSBBSSBwcm90b3R5cGVzIHRvIHByb2R1Y3Rpb24gd2l0aG91dCB0aGUgbmVlZCBmb3IgaGVhdnkgYmFja2VuZCBlbmdpbmVlcmluZy5cblxuSG93IGRvZXMgSnVsZXAncyBhcHByb2FjaCBkaWZmZXIgZnJvbSB0eXBpY2FsIEFJIGRldmVsb3BtZW50P1xuXG5XaGlsZSBtb3N0IHBsYXRmb3JtcyBmb2N1cyBvbiBwcm9tcHQgZW5naW5lZXJpbmcgYW5kIGNoYWluaW5nIExMTSBjYWxscywgSnVsZXAgYnJpbmdzIHNvZnR3YXJlIGVuZ2luZWVyaW5nIGRpc2NpcGxpbmUgdG8gQUkgZGV2ZWxvcG1lbnQuIFRocm91Z2ggb3VyIDgtRmFjdG9yIEFnZW50IG1ldGhvZG9sb2d5LCB3ZSB0cmVhdCBBSSBjb21wb25lbnRzIGFzIHByb3BlciBzeXN0ZW0gZWxlbWVudHM6IC0gUHJvbXB0cyBhcyBDb2RlOiBUcmFjayBwcm9tcHRzIHNlcGFyYXRlbHkgZnJvbSBhcHBsaWNhdGlvbiBjb2RlLCBlbmFibGluZyBzeXN0ZW1hdGljIGltcHJvdmVtZW50cyBhbmQgcHJvcGVyIHZlcnNpb25pbmcuIC0gQ2xlYXIgVG9vbCBJbnRlcmZhY2VzOiBEZWZpbmUgZXhwbGljaXQgaW50ZXJmYWNlcyBmb3IgYWxsIHRvb2wgaW50ZXJhY3Rpb25zLCBtYWtpbmcgY2FwYWJpbGl0aWVzIG1vZHVsYXIgYW5kIG1haW50YWluYWJsZS4gLU1vZGVsIEluZGVwZW5kZW5jZTogVHJlYXQgbW9kZWwgcHJvdmlkZXJzIGFzIGV4dGVybmFsLCByZXBsYWNlYWJsZSByZXNvdXJjZXMgdG8gYXZvaWQgdmVuZG9yIGxvY2staW4gYW5kIGVuYWJsZSBlYXN5IHN3aXRjaGluZy4gLUNvbnRleHQgTWFuYWdlbWVudDogRXhwbGljaXRseSBkZWZpbmUgaG93IGFwcGxpY2F0aW9uIGFuZCB1c2VyIHN0YXRlIGlzIG1hbmFnZWQgYW5kIHJlZHVjZWQuIC1Hcm91bmQgVHJ1dGggRXhhbXBsZXM6IE1haW50YWluIGNsZWFyIGV4YW1wbGVzIG9mIGV4cGVjdGVkIHByb21wdCByZXN1bHRzIGZvciB2YWxpZGF0aW9uIGFuZCB0ZXN0aW5nLiAtU3RydWN0dXJlZCBSZWFzb25pbmc6IFNlcGFyYXRlIHByb2Nlc3NlcyBpbnRvIGRlbGliZXJhdGl2ZSAocGxhbm5lZCwgbXVsdGktc3RlcCkgYW5kIGltcHJvbXB0dSAocXVpY2sgcmVzcG9uc2UpIHJlYXNvbmluZy4gLVdvcmtmbG93LUJhc2VkIE1vZGVsOiBjb21wbGV4IHByb2Nlc3NlcyBhcyBjbGVhciB3b3JrZmxvd3MgcmF0aGVyIHRoYW4gY2hhaW5zIG9mIHByb21wdHMuIC1GdWxsIE9ic2VydmFiaWxpdHk6IFNhdmUgZXhlY3V0aW9uIHRyYWNlcyBmb3IgZGVidWdnaW5nLCBtb25pdG9yaW5nLCBhbmQgY29udGludW91cyBpbXByb3ZlbWVudC5cblxuSG93IGlzIEp1bGVwIGRpZmZlcmVudCBmcm9tIGFnZW50IGZyYW1ld29ya3M/XG5cbldoaWxlIExhbmdDaGFpbiBpcyBncmVhdCBmb3IgY3JlYXRpbmcgc2VxdWVuY2VzIG9mIHByb21wdHMgYW5kIG1hbmFnaW5nIG1vZGVsIGludGVyYWN0aW9ucywgSnVsZXAgaXMgYnVpbHQgZm9yIGNyZWF0aW5nIHBlcnNpc3RlbnQgQUkgYWdlbnRzIHdpdGggYWR2YW5jZWQgdGFzayBjYXBhYmlsaXRpZXMuIFRoaW5rIG9mIExhbmdDaGFpbiBhcyBhIHRvb2wgZm9yIHByb21wdCBjaGFpbnMsIHdoaWxlIEp1bGVwIGlzIGEgY29tcGxldGUgcGxhdGZvcm0gZm9yIGJ1aWxkaW5nIHByb2R1Y3Rpb24tcmVhZHkgQUkgc3lzdGVtcyB3aXRoIGNvbXBsZXggd29ya2Zsb3dzLCBzdGF0ZSBtYW5hZ2VtZW50LCBhbmQgbG9uZy1ydW5uaW5nIHRhc2tzLlxuXG5XaGF0IHR5cGVzIG9mIHdvcmtmbG93cyBjYW4gSSBidWlsZCB3aXRoIEp1bGVwP1xuXG5Zb3UgY2FuIGJ1aWxkIG11bHRpLXN0ZXAgQUkgd29ya2Zsb3dzIHRoYXQgaW5jbHVkZSBkZWNpc2lvbi1tYWtpbmcsIGxvb3BzLCBwYXJhbGxlbCBwcm9jZXNzaW5nLCBzdGF0ZSBtYW5hZ2VtZW50LCByZXRyaWVzLCBhbmQgaW50ZWdyYXRpb25zIHdpdGggZXh0ZXJuYWwgdG9vbHMgYW5kIEFQSXMuXG5cbkhvdyBkb2VzIEp1bGVwIGhhbmRsZSBzY2FsaW5nIGFuZCBmYXVsdCB0b2xlcmFuY2U/XG5cbkp1bGVwIGF1dG9tYXRpY2FsbHkgc2NhbGVzIHRvIGhhbmRsZSB0aG91c2FuZHMgdG8gbWlsbGlvbnMgb2YgZXhlY3V0aW9ucyBhbmQgaXMgYnVpbHQgd2l0aCByb2J1c3QgZmF1bHQgdG9sZXJhbmNlLCBzdGF0ZSBtYW5hZ2VtZW50LCBhbmQgbG9uZy1ydW5uaW5nIGV4ZWN1dGlvbiBjYXBhYmlsaXRpZXMgdG8gZW5zdXJlIHJlbGlhYmxlLCBwcm9kdWN0aW9uLWdyYWRlIHdvcmtmbG93cy5cblxuSXMgSnVsZXAgc2VjdXJlIGFuZCBlbnRlcnByaXNlLWdyYWRlP1xuXG5ZZXMuIEp1bGVwIGlzIGJ1aWx0IHdpdGggZW50ZXJwcmlzZSBuZWVkcyBpbiBtaW5kLiBXZSBvZmZlciBwcml2YXRlIGRlcGxveW1lbnRzLCByb2J1c3Qgc2VjdXJpdHkgbWVhc3VyZXMsIGFuZCBjb21wbGlhbmNlIGZlYXR1cmVzIHRoYXQgZW5zdXJlIG91ciBwbGF0Zm9ybSBpcyByZWxpYWJsZSBhbmQgcHJvZHVjdGlvbi1yZWFkeS5cblxuV2hhdCBhcmUgSnVsZXDigJlzIHByaWNpbmcgbW9kZWxzP1xuXG5XZSBvZmZlciBhIGdlbmVyb3VzIGZyZWUgdGllciBmb3IgZXhwZXJpbWVudGF0aW9uLiBGb3IgcGFpZCBwbGFucywgd2UgaGF2ZSB0d28gbWFpbiBtb2RlbHM6IGEgdXNhZ2UtYmFzZWQgcHJpY2luZyBtb2RlbCAoY2hhcmdpbmcgcGVyIHdvcmtmbG93IHN0ZXAgZXhlY3V0ZWQpIGZvciBvdXIgY2xvdWQgcGxhdGZvcm0sIGFuZCBkZWRpY2F0ZWQgZW50ZXJwcmlzZS9vbi1wcmVtIGRlcGxveW1lbnRzIGZvciBsYXJnZSBvcmdhbml6YXRpb25zLlxuXG4jIyMgQnVpbGQgZmFzdGVyIHVzaW5nIEp1bGVwIEFQSVxuXG4jIyMgRGVwbG95IG11bHRpLXN0ZXAgd29ya2Zsb3dzIGVhc2lseSB3aXRoIGJ1aWx0LWluIHRvb2xzIGFuZCBTdGF0ZSBtYW5hZ2VtZW50IHRoYXQgaXMgcHJvZHVjdGlvbiByZWFkeSBmcm9tIGRheSBvbmUuXG5cbktlZXAgbWUgaW5mb3JtZWRcblxuRGV2IFJlc291cmNlc1xuXG5bRG9jc10oaHR0cHM6Ly9kb2NzLmp1bGVwLmFpLylcblxuW0dldCBBUEkgS2V5XShodHRwczovL2Rhc2hib2FyZC5qdWxlcC5haS8pXG5cbltQeXRob24gU0RLXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvcHl0aG9uLXNkay9ibG9iL21haW4vUkVBRE1FLm1kKVxuXG5bSmF2YXNjcmlwdCBTREtdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWxlcC1haS9ub2RlLXNkay9ibG9iL21haW4vUkVBRE1FLm1kKVxuXG5bSW50ZWdyYXRpb24gTGlzdF0oaHR0cHM6Ly9kb2NzLmp1bGVwLmFpL2RvY3MvaW50ZWdyYXRpb25zL3N1cHBvcnRlZC1pbnRlZ3JhdGlvbnMpXG5cblVzZWNhc2VzXG5cbltSQUcgQ2hhdGJvdF0oaHR0cHM6Ly9naXRodWIuY29tL2p1bGVwLWFpL2p1bGVwL2Jsb2IvZGV2L2Nvb2tib29rcy8wOC1yYWctY2hhdGJvdC5pcHluYilcblxuW1dlYiBDcmF3bGVyXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXAvYmxvYi9kZXYvY29va2Jvb2tzLzAxLXdlYnNpdGUtY3Jhd2xlci5pcHluYilcblxuW0Jyb3dzZXIgVXNlXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXAvYmxvYi9kZXYvY29va2Jvb2tzLzA2LWJyb3dzZXItdXNlLmlweW5iKVxuXG5bVmlkZW8gUHJvY2Vzc2luZ10oaHR0cHM6Ly9naXRodWIuY29tL2p1bGVwLWFpL2p1bGVwL2Jsb2IvZGV2L2Nvb2tib29rcy8wNS12aWRlby1wcm9jZXNzaW5nLXdpdGgtbmF0dXJhbC1sYW5ndWFnZS5pcHluYilcblxuW0hvb2sgR2VuZXJhdG9yIGZvciBSZWVsc10oaHR0cHM6Ly9naXRodWIuY29tL2p1bGVwLWFpL2p1bGVwL2Jsb2IvZGV2L2Nvb2tib29rcy8wNC1ob29rLWdlbmVyYXRvci10cmVuZGluZy1yZWVscy5pcHluYilcblxuQ29tcGFueVxuXG5bQWJvdXRdKGh0dHBzOi8vanVsZXAuYWkvYWJvdXQpXG5cbltDb250YWN0IFVzXShodHRwczovL2p1bGVwLmFpL2NvbnRhY3QpXG5cbltCb29rIERlbW9dKGh0dHBzOi8vY2FsZW5kbHkuY29tL2lzaGl0YS1qdWxlcClcblxuU29jaWFsc1xuXG5bR2l0aHViXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXApXG5cbltMaW5rZWRJbl0oaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvanVsZXAtYWkpXG5cbltUd2l0dGVyXShodHRwczovL3guY29tL2p1bGVwX2FpKVxuXG5bRGV2LnRvXShodHRwczovL2Rldi50by9qdWxlcClcblxuW0h1Z2dpbmcgRmFjZV0oaHR0cHM6Ly9odWdnaW5nZmFjZS5jby9qdWxlcC1haSlcblxuW1lvdXR1YmVdKGh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL0BqdWxlcF9haSlcblxuIVtJbWFnZSA1Nl0oaHR0cHM6Ly9mcmFtZXJ1c2VyY29udGVudC5jb20vaW1hZ2VzL05YWkNmVDVIeTUxMFhVOUZ1QTBRQUwzMTBZMC5wbmcpXG5cbkJ1aWx0IGJ5IEVuZ2luZWVycywgZm9yIEVuZ2luZWVyc1xuXG7CqSBKdWxlcCBBSSBJbmMuIDIwMjVcblxuW1ByaXZhY3kgUG9saWN5XShodHRwczovL3d3dy50ZXJtc2ZlZWQuY29tL2xpdmUvZmE1MmJkYzUtNjJmMy00NWFkLWEyMjAtNzE2ZTFjYTZlMmY5KSB8IFtUZXJtcyBvZiBTZXJ2aWNlXShodHRwczovL3d3dy50ZXJtc2ZlZWQuY29tL2xpdmUvZTQ5ZmNhMDQtZTlkMi00MTg2LWFhZWItMDFlZDFhMGQ3ODUwKSIsInVzYWdlIjp7InRva2VucyI6NDYzMH19LCJtZXRhIjp7InVzYWdlIjp7InRva2VucyI6NDYzMH19fQ==\\\",\\n\",\n      \"  \\\"headers\\\": {\\n\",\n      \"    \\\"nel\\\": \\\"{\\\\\\\"success_fraction\\\\\\\":0,\\\\\\\"report_to\\\\\\\":\\\\\\\"cf-nel\\\\\\\",\\\\\\\"max_age\\\\\\\":604800}\\\",\\n\",\n      \"    \\\"date\\\": \\\"Tue, 10 Jun 2025 14:34:44 GMT\\\",\\n\",\n      \"    \\\"vary\\\": \\\"Accept-Encoding\\\",\\n\",\n      \"    \\\"cf-ray\\\": \\\"94d9975758eb3448-EWR\\\",\\n\",\n      \"    \\\"server\\\": \\\"cloudflare\\\",\\n\",\n      \"    \\\"alt-svc\\\": \\\"h3=\\\\\\\":443\\\\\\\"; ma=86400\\\",\\n\",\n      \"    \\\"report-to\\\": \\\"{\\\\\\\"endpoints\\\\\\\":[{\\\\\\\"url\\\\\\\":\\\\\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=sqOmshWjmTtznQnP9Ef1NzIE%2FR38Bo1J4RgBmwwG7SOQk%2BE3fu8qjaMorv8FCcpxR5PjyTMY3f4ZGcqdv2yLOTob%2BSRZ9kkN8RNonYum9PdsDKNS1QVVxnx4jQ%3D%3D\\\\\\\"}],\\\\\\\"group\\\\\\\":\\\\\\\"cf-nel\\\\\\\",\\\\\\\"max_age\\\\\\\":604800}\\\",\\n\",\n      \"    \\\"connection\\\": \\\"keep-alive\\\",\\n\",\n      \"    \\\"traceparent\\\": \\\"00-46f61c43e27a22cadff131cc46346eeb-9cd0803c0973b922-00\\\",\\n\",\n      \"    \\\"content-type\\\": \\\"application/json; charset=utf-8\\\",\\n\",\n      \"    \\\"server-timing\\\": \\\"cfL4;desc=\\\\\\\"?proto=TCP&rtt=1821&min_rtt=1482&rtt_var=798&sent=4&recv=6&lost=0&retrans=0&sent_bytes=2828&recv_bytes=792&delivery_rate=1954116&cwnd=244&unsent_bytes=0&cid=34ad012006f0e80d&ts=280&x=0\\\\\\\"\\\",\\n\",\n      \"    \\\"cf-cache-status\\\": \\\"DYNAMIC\\\",\\n\",\n      \"    \\\"content-encoding\\\": \\\"gzip\\\",\\n\",\n      \"    \\\"transfer-encoding\\\": \\\"chunked\\\",\\n\",\n      \"    \\\"x-cloud-trace-context\\\": \\\"46f61c43e27a22cadff131cc46346eeb/11299672460417546530\\\"\\n\",\n      \"  },\\n\",\n      \"  \\\"status_code\\\": 200\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  2 Type:  step\\n\",\n      \"output:  {\\n\",\n      \"  \\\"result\\\": [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ]\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  3 Type:  step\\n\",\n      \"output:  {\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"document\\\": \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[![Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n[New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\nDeploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\nOpen-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n[Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n[Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n![Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\nIterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\nConnect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\nLLM Platforms\\\\n\\\\n![Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n![Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n![Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n![Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n![Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n![Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n![Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n![Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ![Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\nAny REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\nDefine multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\nReal people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\nScale to millions.\\\\n----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\nProduction Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\nAnswers.\\\\n---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\nJulep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\nWho is Julep for?\\\\n\\\\nJulep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\nHow does Julep's approach differ from typical AI development?\\\\n\\\\nWhile most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\nHow is Julep different from agent frameworks?\\\\n\\\\nWhile LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\nWhat types of workflows can I build with Julep?\\\\n\\\\nYou can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\nHow does Julep handle scaling and fault tolerance?\\\\n\\\\nJulep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\nIs Julep secure and enterprise-grade?\\\\n\\\\nYes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\nWhat are Julep\\\\u2019s pricing models?\\\\n\\\\nWe offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\nKeep me informed\\\\n\\\\nDev Resources\\\\n\\\\n[Docs](https://docs.julep.ai/)\\\\n\\\\n[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n[Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n[Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n[Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n[Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n[About](https://julep.ai/about)\\\\n\\\\n[Contact Us](https://julep.ai/contact)\\\\n\\\\n[Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n[Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n[Twitter](https://x.com/julep_ai)\\\\n\\\\n[Dev.to](https://dev.to/julep)\\\\n\\\\n[Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n[Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n![Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n[Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\",\\n\",\n      \"  \\\"reducing_strength\\\": 2\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  4 Type:  init_branch\\n\",\n      \"output:  {\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"document\\\": \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[![Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n[New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\nDeploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\nOpen-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n[Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n[Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n![Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\nIterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\nConnect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\nLLM Platforms\\\\n\\\\n![Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n![Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n![Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n![Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n![Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n![Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n![Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n![Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ![Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\nAny REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\nDefine multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\nReal people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\nScale to millions.\\\\n----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\nProduction Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\nAnswers.\\\\n---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\nJulep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\nWho is Julep for?\\\\n\\\\nJulep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\nHow does Julep's approach differ from typical AI development?\\\\n\\\\nWhile most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\nHow is Julep different from agent frameworks?\\\\n\\\\nWhile LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\nWhat types of workflows can I build with Julep?\\\\n\\\\nYou can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\nHow does Julep handle scaling and fault tolerance?\\\\n\\\\nJulep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\nIs Julep secure and enterprise-grade?\\\\n\\\\nYes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\nWhat are Julep\\\\u2019s pricing models?\\\\n\\\\nWe offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\nKeep me informed\\\\n\\\\nDev Resources\\\\n\\\\n[Docs](https://docs.julep.ai/)\\\\n\\\\n[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n[Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n[Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n[Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n[Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n[About](https://julep.ai/about)\\\\n\\\\n[Contact Us](https://julep.ai/contact)\\\\n\\\\n[Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n[Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n[Twitter](https://x.com/julep_ai)\\\\n\\\\n[Dev.to](https://dev.to/julep)\\\\n\\\\n[Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n[Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n![Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n[Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\",\\n\",\n      \"  \\\"reducing_strength\\\": 2\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  5 Type:  step\\n\",\n      \"output:  {\\n\",\n      \"  \\\"label\\\": \\\"docs\\\",\\n\",\n      \"  \\\"chunks\\\": [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"document\\\": \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[![Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n[New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\nDeploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\nOpen-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n[Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n[Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n![Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\nIterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\nConnect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\nLLM Platforms\\\\n\\\\n![Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n![Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n![Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n![Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n![Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n![Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n![Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n![Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ![Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ![Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ![Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ![Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ![Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ![Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ![Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\nAny REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\nDefine multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\nReal people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ![Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ![Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*     We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ![Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ![Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ![Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)  Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\nScale to millions.\\\\n----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\nProduction Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\nAnswers.\\\\n---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\nJulep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\nWho is Julep for?\\\\n\\\\nJulep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\nHow does Julep's approach differ from typical AI development?\\\\n\\\\nWhile most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\nHow is Julep different from agent frameworks?\\\\n\\\\nWhile LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\nWhat types of workflows can I build with Julep?\\\\n\\\\nYou can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\nHow does Julep handle scaling and fault tolerance?\\\\n\\\\nJulep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\nIs Julep secure and enterprise-grade?\\\\n\\\\nYes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\nWhat are Julep\\\\u2019s pricing models?\\\\n\\\\nWe offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\nKeep me informed\\\\n\\\\nDev Resources\\\\n\\\\n[Docs](https://docs.julep.ai/)\\\\n\\\\n[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n[Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n[Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n[Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n[Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n[About](https://julep.ai/about)\\\\n\\\\n[Contact Us](https://julep.ai/contact)\\\\n\\\\n[Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n[Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n[Twitter](https://x.com/julep_ai)\\\\n\\\\n[Dev.to](https://dev.to/julep)\\\\n\\\\n[Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n[Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n![Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n[Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  6 Type:  init_branch\\n\",\n      \"output:  [\\n\",\n      \"  [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\"\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  7 Type:  init_branch\\n\",\n      \"output:  [\\n\",\n      \"  [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\"\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  8 Type:  init_branch\\n\",\n      \"output:  [\\n\",\n      \"  [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\"\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  9 Type:  finish_branch\\n\",\n      \"output:  \\\"This chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  10 Type:  finish_branch\\n\",\n      \"output:  \\\"This chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  11 Type:  finish_branch\\n\",\n      \"output:  \\\"The chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  12 Type:  init_branch\\n\",\n      \"output:  [\\n\",\n      \"  [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\"\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  13 Type:  init_branch\\n\",\n      \"output:  [\\n\",\n      \"  [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\"\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  14 Type:  init_branch\\n\",\n      \"output:  [\\n\",\n      \"  [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\"\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  15 Type:  finish_branch\\n\",\n      \"output:  \\\"The chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  16 Type:  finish_branch\\n\",\n      \"output:  \\\"The chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  17 Type:  finish_branch\\n\",\n      \"output:  \\\"This chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  18 Type:  init_branch\\n\",\n      \"output:  [\\n\",\n      \"  [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   !\\\",\\n\",\n      \"    \\\"*   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use.\\\",\\n\",\n      \"    \\\"GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  !\\\",\\n\",\n      \"    \\\"Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n\\\",\\n\",\n      \"    \\\"Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes.\\\",\\n\",\n      \"    \\\"Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n!\\\",\\n\",\n      \"    \\\"[Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\"\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  19 Type:  finish_branch\\n\",\n      \"output:  \\\"This chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  20 Type:  step\\n\",\n      \"output:  [\\n\",\n      \"  \\\"The chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\\\",\\n\",\n      \"  \\\"This chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\\\",\\n\",\n      \"  \\\"This chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\\\",\\n\",\n      \"  \\\"The chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\\\",\\n\",\n      \"  \\\"The chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\\\",\\n\",\n      \"  \\\"This chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\\\",\\n\",\n      \"  \\\"This chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\\\"\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  21 Type:  step\\n\",\n      \"output:  {\\n\",\n      \"  \\\"final_chunks\\\": [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\\\",\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\\\",\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\\\",\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\\\",\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\\\",\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\\\",\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\\\"\\n\",\n      \"  ]\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  22 Type:  init_branch\\n\",\n      \"output:  \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  23 Type:  init_branch\\n\",\n      \"output:  \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  24 Type:  init_branch\\n\",\n      \"output:  \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  25 Type:  finish_branch\\n\",\n      \"output:  {\\n\",\n      \"  \\\"id\\\": \\\"0684842a-7657-7461-8000-0679f7c457a8\\\",\\n\",\n      \"  \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"language\\\": \\\"english\\\",\\n\",\n      \"  \\\"metadata\\\": {\\n\",\n      \"    \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"  },\\n\",\n      \"  \\\"modality\\\": \\\"text\\\",\\n\",\n      \"  \\\"created_at\\\": \\\"2025-06-10T14:35:19.400193Z\\\",\\n\",\n      \"  \\\"embeddings\\\": [],\\n\",\n      \"  \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"  \\\"embedding_dimensions\\\": 1024\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  26 Type:  finish_branch\\n\",\n      \"output:  {\\n\",\n      \"  \\\"id\\\": \\\"0684842a-76e8-7da2-8000-c6d8ab7a6278\\\",\\n\",\n      \"  \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"language\\\": \\\"english\\\",\\n\",\n      \"  \\\"metadata\\\": {\\n\",\n      \"    \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"  },\\n\",\n      \"  \\\"modality\\\": \\\"text\\\",\\n\",\n      \"  \\\"created_at\\\": \\\"2025-06-10T14:35:19.435869Z\\\",\\n\",\n      \"  \\\"embeddings\\\": [],\\n\",\n      \"  \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"  \\\"embedding_dimensions\\\": 1024\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  27 Type:  finish_branch\\n\",\n      \"output:  {\\n\",\n      \"  \\\"id\\\": \\\"0684842a-77e9-7a7e-8000-6451affc72c2\\\",\\n\",\n      \"  \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"language\\\": \\\"english\\\",\\n\",\n      \"  \\\"metadata\\\": {\\n\",\n      \"    \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"  },\\n\",\n      \"  \\\"modality\\\": \\\"text\\\",\\n\",\n      \"  \\\"created_at\\\": \\\"2025-06-10T14:35:19.498033Z\\\",\\n\",\n      \"  \\\"embeddings\\\": [],\\n\",\n      \"  \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"  \\\"embedding_dimensions\\\": 1024\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  28 Type:  init_branch\\n\",\n      \"output:  \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  29 Type:  init_branch\\n\",\n      \"output:  \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  30 Type:  init_branch\\n\",\n      \"output:  \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  31 Type:  finish_branch\\n\",\n      \"output:  {\\n\",\n      \"  \\\"id\\\": \\\"0684842a-8607-71fa-8000-249a60bff59f\\\",\\n\",\n      \"  \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"language\\\": \\\"english\\\",\\n\",\n      \"  \\\"metadata\\\": {\\n\",\n      \"    \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"  },\\n\",\n      \"  \\\"modality\\\": \\\"text\\\",\\n\",\n      \"  \\\"created_at\\\": \\\"2025-06-10T14:35:20.380747Z\\\",\\n\",\n      \"  \\\"embeddings\\\": [],\\n\",\n      \"  \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"  \\\"embedding_dimensions\\\": 1024\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  32 Type:  finish_branch\\n\",\n      \"output:  {\\n\",\n      \"  \\\"id\\\": \\\"0684842a-866e-76ef-8000-35be7f9f61b1\\\",\\n\",\n      \"  \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"language\\\": \\\"english\\\",\\n\",\n      \"  \\\"metadata\\\": {\\n\",\n      \"    \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"  },\\n\",\n      \"  \\\"modality\\\": \\\"text\\\",\\n\",\n      \"  \\\"created_at\\\": \\\"2025-06-10T14:35:20.406044Z\\\",\\n\",\n      \"  \\\"embeddings\\\": [],\\n\",\n      \"  \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"  \\\"embedding_dimensions\\\": 1024\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  33 Type:  finish_branch\\n\",\n      \"output:  {\\n\",\n      \"  \\\"id\\\": \\\"0684842a-86c4-700b-8000-028f20c56cf7\\\",\\n\",\n      \"  \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"language\\\": \\\"english\\\",\\n\",\n      \"  \\\"metadata\\\": {\\n\",\n      \"    \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"  },\\n\",\n      \"  \\\"modality\\\": \\\"text\\\",\\n\",\n      \"  \\\"created_at\\\": \\\"2025-06-10T14:35:20.426705Z\\\",\\n\",\n      \"  \\\"embeddings\\\": [],\\n\",\n      \"  \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"  \\\"embedding_dimensions\\\": 1024\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  34 Type:  init_branch\\n\",\n      \"output:  \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  35 Type:  finish_branch\\n\",\n      \"output:  {\\n\",\n      \"  \\\"id\\\": \\\"0684842a-95d7-7c74-8000-70b120c31efa\\\",\\n\",\n      \"  \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"  \\\"content\\\": [\\n\",\n      \"    \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\\\"\\n\",\n      \"  ],\\n\",\n      \"  \\\"language\\\": \\\"english\\\",\\n\",\n      \"  \\\"metadata\\\": {\\n\",\n      \"    \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"  },\\n\",\n      \"  \\\"modality\\\": \\\"text\\\",\\n\",\n      \"  \\\"created_at\\\": \\\"2025-06-10T14:35:21.369126Z\\\",\\n\",\n      \"  \\\"embeddings\\\": [],\\n\",\n      \"  \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"  \\\"embedding_dimensions\\\": 1024\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  36 Type:  finish_branch\\n\",\n      \"output:  [\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-76e8-7da2-8000-c6d8ab7a6278\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:19.435869Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-7657-7461-8000-0679f7c457a8\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:19.400193Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-77e9-7a7e-8000-6451affc72c2\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:19.498033Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-8607-71fa-8000-249a60bff59f\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:20.380747Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-86c4-700b-8000-028f20c56cf7\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:20.426705Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-866e-76ef-8000-35be7f9f61b1\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:20.406044Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-95d7-7c74-8000-70b120c31efa\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:21.369126Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  }\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Index:  37 Type:  finish\\n\",\n      \"output:  [\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-76e8-7da2-8000-c6d8ab7a6278\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"Julep AI\\\\n\\\\n===============\\\\n\\\\n[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\\\n\\\\n [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\\\n\\\\nOpen Source\\\\n\\\\n[Github \\\\u2605 4.7K](https://github.com/julep-ai/julep)\\\\n\\\\n Deploy serverless\\\\n\\\\nAI workflows\\\\n\\\\nat scale\\\\n=========================================\\\\n\\\\nin minutes, not weeks.\\\\n\\\\n Open-source API to build \\\\n\\\\ninfinitely scalable, durable and long running AI pipelines\\\\n\\\\nusing agents, tasks and tools\\\\n\\\\n [Deploy your first workflow](https://dashboard.julep.ai/)\\\\n\\\\n [Get a demo](https://calendly.com/ishita-julep)\\\\n\\\\nCUSTOMER STORIES\\\\n\\\\nVideo Editing\\\\n\\\\nRAG Assitants\\\\n\\\\nMarketing\\\\n\\\\nUser Profiling\\\\n\\\\nVerifications\\\\n\\\\n! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\\\n\\\\nVidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\\\n\\\\n Iterate and deploy AI features super fast by bringing data from different sources in one place.\\\\n\\\\n Connect with any AI model,\\\\n\\\\nAPI or data source\\\\n----------------------------------------------\\\\n\\\\nSeamlessly integrate with your existing stack and favorite AI models.\\\\n\\\\n LLM Platforms\\\\n\\\\n! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\\\n\\\\n! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\\\n\\\\n! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\\\n\\\\n! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\\\n\\\\n! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\\\n\\\\n! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\\\n\\\\n! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\\\n\\\\nLanguages\\\\n\\\\nIntegrations\\\\n\\\\n*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   !\\\\nThe chunk introduces Julep AI, highlighting its open-source API for building scalable AI workflows using agents, tasks, and tools. It emphasizes the platform's customer stories, integration capabilities with existing AI models, and showcases its ability to deploy serverless workflows quickly. The chunk also includes visual elements and links related to the platform's functionalities and integrations.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:19.435869Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-7657-7461-8000-0679f7c457a8\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\\\n*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\\\n*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   !\\\\nThis chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:19.400193Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-77e9-7a7e-8000-6451affc72c2\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\\\n*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\\\n *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\\\n*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\\\n\\\\n Any REST API\\\\n\\\\n### Build with Julep\\\\n\\\\nCreate an agent\\\\n\\\\nDefine agents that can talk to users inside of a session\\\\n\\\\nAdd tools\\\\n\\\\nEquip agents with tools - web search, API calls, or custom integrations\\\\n\\\\nDefine your tasks\\\\n\\\\n Define multi-step processes in YAML with decision trees, loops, and parallel execution\\\\n\\\\nDeploy\\\\n\\\\nExecute production-grade workflows with one command\\\\n\\\\nagent = julep.agents.create(\\\\n\\\\nname=\\\\\\\"Spiderman\\\\\\\",\\\\n\\\\nabout=\\\\\\\"AI that can crawl the web and extract data\\\\\\\",\\\\n\\\\nmodel=\\\\\\\"gpt-4o-mini\\\\\\\",\\\\n\\\\ndefault_settings={\\\\n\\\\n\\\\\\\"temperature\\\\\\\": 0.75,\\\\n\\\\n\\\\\\\"max_tokens\\\\\\\": 10000,\\\\n\\\\n\\\\\\\"top_p\\\\\\\": 1.0,\\\\n\\\\n}\\\\n\\\\n)\\\\n\\\\n Real people, Real results\\\\n-------------------------\\\\n\\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*     \\\\nThis chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:19.498033Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-8607-71fa-8000-249a60bff59f\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\\\n*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\\\n*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\\\nThe chunk is a set of testimonials from various CEOs and cofounders praising Julep AI's ability to simplify and accelerate AI development and deployment processes. They highlight Julep AI's capabilities in reducing development time, integrating easily with existing systems, and providing comprehensive toolsets for building AI workflows.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:20.380747Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-86c4-700b-8000-028f20c56cf7\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\\\n*     \\\\\\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\\\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\\\n*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\\\n\\\\nBuild AI pipelines \\\\n\\\\nin minutes.\\\\n\\\\n Scale to millions.\\\\n ----------------------------------------------------\\\\n\\\\nRapid Prototyping\\\\n\\\\n\\\\\\\"From idea to demo in minutes\\\\\\\" using built-in RAG, in-house state management and external tools.\\\\n\\\\n Production Ready\\\\n\\\\n\\\\\\\"Go live instantly with managed infrastructure\\\\\\\" and features such as long-running tasks, automatic retries and error handling\\\\n\\\\nModular Design\\\\n\\\\n\\\\\\\"Build features like Lego blocks\\\\\\\" by connecting to any external API, switch between LLMs and add custom tools\\\\n\\\\nInfinite Scale\\\\n\\\\nHandle millions of concurrent users with automatic scaling and load balancing\\\\n\\\\nFuture Proof\\\\n\\\\n\\\\\\\"Add new AI models anytime\\\\\\\" \\\\\\\"Integrate with any new tool or API\\\\\\\"\\\\n\\\\nComplete Control\\\\n\\\\n\\\\\\\"Full visibility into AI operations\\\\\\\" \\\\\\\"Manage costs and performance easily\\\\\\\"\\\\n\\\\nQuestions? \\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Answers.\\\\n ---------------------\\\\n\\\\nWhat is Julep?\\\\n\\\\n Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\\\n\\\\n Who is Julep for?\\\\n\\\\n Julep is designed for data scientists and ML engineers\\\\u2014especially in enterprise settings\\\\u2014who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\\\n\\\\n How does Julep's approach differ from typical AI development?\\\\n\\\\n While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\\\nThe chunk highlights customer testimonials and key features of Julep, an AI workflow platform, emphasizing its benefits such as infrastructure orchestration, rapid prototyping, production readiness, modular design, scalability, future-proofing, and providing full visibility and control for data scientists and ML engineers.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:20.426705Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-866e-76ef-8000-35be7f9f61b1\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\\\n\\\\n How is Julep different from agent frameworks?\\\\n\\\\n While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\\\n\\\\n What types of workflows can I build with Julep?\\\\n\\\\n You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\\\n\\\\n How does Julep handle scaling and fault tolerance?\\\\n\\\\n Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\\\n\\\\n Is Julep secure and enterprise-grade?\\\\n\\\\n Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\\\n\\\\n What are Julep\\\\u2019s pricing models?\\\\n\\\\n We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\\\n\\\\n ### Build faster using Julep API\\\\n\\\\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\\\n\\\\n Keep me informed\\\\n\\\\nDev Resources\\\\n\\\\n [Docs](https://docs.julep.ai/)\\\\n\\\\n [Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n\\\\nThis chunk discusses the advanced capabilities and enterprise features of Julep, contrasting it with other AI development frameworks by emphasizing its production-readiness, scalability, fault tolerance, security, and pricing models. It highlights the platform\\\\u2019s efficiency, automation, and comprehensive tools available for AI workflow deployment, catering to enterprise needs.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:20.406044Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  },\\n\",\n      \"  {\\n\",\n      \"    \\\"id\\\": \\\"0684842a-95d7-7c74-8000-70b120c31efa\\\",\\n\",\n      \"    \\\"title\\\": \\\"Website Document\\\",\\n\",\n      \"    \\\"content\\\": [\\n\",\n      \"      \\\"[Get API Key](https://dashboard.julep.ai/)\\\\n\\\\n [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\\\n\\\\n [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\\\n\\\\n [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\\\n\\\\nUsecases\\\\n\\\\n[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\\\n\\\\n [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\\\n\\\\n [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\\\n\\\\n[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\\\n\\\\n [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\\\n\\\\nCompany\\\\n\\\\n [About](https://julep.ai/about)\\\\n\\\\n [Contact Us](https://julep.ai/contact)\\\\n\\\\n [Book Demo](https://calendly.com/ishita-julep)\\\\n\\\\nSocials\\\\n\\\\n [Github](https://github.com/julep-ai/julep)\\\\n\\\\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\\\\n\\\\n [Twitter](https://x.com/julep_ai)\\\\n\\\\n [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Dev.to](https://dev.to/julep)\\\\n\\\\n [Hugging Face](https://huggingface.co/julep-ai)\\\\n\\\\n [Youtube](https://www.youtube.com/@julep_ai)\\\\n\\\\n! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\\\n\\\\nBuilt by Engineers, for Engineers\\\\n\\\\n\\\\u00a9 Julep AI Inc. 2025\\\\n\\\\n [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\\\nThis chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"language\\\": \\\"english\\\",\\n\",\n      \"    \\\"metadata\\\": {\\n\",\n      \"      \\\"source\\\": \\\"jina_crawler\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"modality\\\": \\\"text\\\",\\n\",\n      \"    \\\"created_at\\\": \\\"2025-06-10T14:35:21.369126Z\\\",\\n\",\n      \"    \\\"embeddings\\\": [],\\n\",\n      \"    \\\"embedding_model\\\": \\\"text-embedding-3-large\\\",\\n\",\n      \"    \\\"embedding_dimensions\\\": 1024\\n\",\n      \"  }\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import json\\n\",\n    \"execution_transitions = client.executions.transitions.list(\\n\",\n    \"    execution_id=execution_homepage.id, limit=2000).items\\n\",\n    \"\\n\",\n    \"for index, transition in enumerate(reversed(execution_transitions)):\\n\",\n    \"    print(\\\"Index: \\\", index, \\\"Type: \\\", transition.type)\\n\",\n    \"    print(\\\"output: \\\", json.dumps(transition.output, indent=2))\\n\",\n    \"    print(\\\"-\\\" * 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Lisitng the Document Store for the Agent\\n\",\n    \"\\n\",\n    \"The document store is where the agent stores the documents it has created. Each document has a `title` , `content`, `id`, `metadata`, `created_at` and the `vector embedding` associated with it. This will be used for the retrieval of the documents when the agent is queried.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Number of documents in the document store:  4\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"docs = [*client.agents.docs.list(agent_id=AGENT_UUID)]\\n\",\n    \"print(\\\"Number of documents in the document store: \\\", len(docs))\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# # # UNCOMMENT THIS TO DELETE ALL THE AGENT'S DOCUMENTS\\n\",\n    \"\\n\",\n    \"# for doc in client.agents.docs.list(agent_id=AGENT_UUID, limit=1000):\\n\",\n    \"#     client.agents.docs.delete(agent_id=AGENT_UUID, doc_id=doc.id)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Creating a Session\\n\",\n    \"\\n\",\n    \"A session is used to interact with the agent. It is used to send messages to the agent and receive responses.\\n\",\n    \"Situation is the initial message that is sent to the agent to set the context for the conversation. Out here you can add more information about the agent and the task it is performing to help the agent answer better. Additionally, you can also define the `search_threshold` and `search_query_chars` which are used to control the retrieval of the documents from the document store which will be used for the retrieval of the documents when the agent is queried.\\n\",\n    \"More information about the session can be found [here](https://github.com/julep-ai/julep/blob/dev/docs/julep-concepts.md#session).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Agent created with ID: cd2bc3ee-fe18-4ddc-8f8a-d547dbf183d7\\n\",\n      \"Session created with ID: 0684842b-fa18-7840-8000-eba0bbbca948\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"situation = \\\"\\\"\\\"\\n\",\n    \"You are an AI agent designed to assist users with their queries about our company and products.\\n\",\n    \"Your goal is to provide clear and detailed responses.\\n\",\n    \"\\n\",\n    \"**Guidelines**:\\n\",\n    \"1. Assume the user is unfamiliar with the company and products.\\n\",\n    \"2. Thoroughly read and comprehend the user's question.\\n\",\n    \"3. Use the provided context documents to find relevant information.\\n\",\n    \"4. Craft a detailed response based on the context and your understanding of the company and products.\\n\",\n    \"5. Include links to specific company pages for further information when applicable.\\n\",\n    \"\\n\",\n    \"**Response format**:\\n\",\n    \"- Use simple, clear language.\\n\",\n    \"- Include relevant website links.\\n\",\n    \"\\n\",\n    \"**Important**:\\n\",\n    \"- For questions related to the business, only use the information that are explicitly given in the documents above.\\n\",\n    \"- If the user asks about the business, and it's not given in the documents above, respond with an answer that states that you don't know.\\n\",\n    \"- Use the most recent and relevant data from context documents.\\n\",\n    \"- Be proactive in helping users find solutions.\\n\",\n    \"- Ask for clarification if the query is unclear.\\n\",\n    \"- Avoid using the following in your response: Based on the provided documents, based on the provided information, based on the documentation... etc.\\n\",\n    \"\\n\",\n    \"{%- if docs -%}\\n\",\n    \"**Relevant documents**:{{NEWLINE}}\\n\",\n    \"  {%- for doc in docs -%}\\n\",\n    \"    {{doc.title}}{{NEWLINE}}\\n\",\n    \"    {%- if doc.content is string -%}\\n\",\n    \"      {{doc.content}}{{NEWLINE}}\\n\",\n    \"    {%- else -%}\\n\",\n    \"      {%- for snippet in doc.content -%}\\n\",\n    \"        {{snippet}}{{NEWLINE}}\\n\",\n    \"      {%- endfor -%}\\n\",\n    \"    {%- endif -%}\\n\",\n    \"    {{\\\"---\\\"}}\\n\",\n    \"  {%- endfor -%}\\n\",\n    \"\\n\",\n    \"{%- else -%}\\n\",\n    \"There are no documents available for this query.\\n\",\n    \"{%- endif -%}\\n\",\n    \"\\\"\\\"\\\"\\n\",\n    \"\\n\",\n    \"# Create a session for interaction\\n\",\n    \"session = client.sessions.create(\\n\",\n    \"    situation=situation,\\n\",\n    \"    agent=str(AGENT_UUID),\\n\",\n    \"    recall_options={\\n\",\n    \"        \\\"mode\\\": \\\"hybrid\\\",\\n\",\n    \"        \\\"num_search_messages\\\": 1,\\n\",\n    \"        # \\\"max_query_length\\\": 800,\\n\",\n    \"        \\\"confidence\\\": 0.5,\\n\",\n    \"        \\\"alpha\\\": 0.5,\\n\",\n    \"        \\\"limit\\\": 10,\\n\",\n    \"        # \\\"mmr_strength\\\": 0.5,\\n\",\n    \"    },\\n\",\n    \")\\n\",\n    \"print(f\\\"Agent created with ID: {agent.id}\\\")\\n\",\n    \"print(f\\\"Session created with ID: {session.id}\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Chatting with the Agent\\n\",\n    \"\\n\",\n    \"The chat method is used to send messages to the agent and receive responses. The messages are sent as a list of dictionaries with the `role` and `content` keys.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 23,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"def chat_with_agent(user_question):\\n\",\n    \"    response = client.sessions.chat(\\n\",\n    \"        session_id=session.id,\\n\",\n    \"        messages=[\\n\",\n    \"            {\\n\",\n    \"                \\\"role\\\": \\\"user\\\",\\n\",\n    \"                \\\"content\\\": user_question,\\n\",\n    \"            }\\n\",\n    \"        ],\\n\",\n    \"        recall=True,\\n\",\n    \"    )\\n\",\n    \"\\n\",\n    \"    return response\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Building with Julep involves a few straightforward steps to create, deploy, and manage AI workflows. Here's a step-by-step guide:\\n\",\n      \"\\n\",\n      \"1. **Create an Agent**: Define agents that can interact with users within a session. Agents are the core of your AI workflows.\\n\",\n      \"\\n\",\n      \"2. **Add Tools**: Equip your agents with necessary tools such as web search, API calls, or custom integrations. This allows your agent to access and retrieve data efficiently.\\n\",\n      \"\\n\",\n      \"3. **Define Your Tasks**: Use YAML to define multi-step processes. You can incorporate decision trees, loops, and parallel execution to handle complex workflows.\\n\",\n      \"\\n\",\n      \"4. **Deploy**: Once you have configured your agent and defined its tasks, you can execute production-grade workflows with a single command.\\n\",\n      \"\\n\",\n      \"Here's a basic example of creating an agent with Julep:\\n\",\n      \"\\n\",\n      \"```python\\n\",\n      \"agent = julep.agents.create(\\n\",\n      \"    name=\\\"Spiderman\\\",\\n\",\n      \"    about=\\\"AI that can crawl the web and extract data\\\",\\n\",\n      \"    model=\\\"gpt-4o-mini\\\",\\n\",\n      \"    default_settings={\\n\",\n      \"        \\\"temperature\\\": 0.75,\\n\",\n      \"        \\\"max_tokens\\\": 10000,\\n\",\n      \"        \\\"top_p\\\": 1.0,\\n\",\n      \"    }\\n\",\n      \")\\n\",\n      \"```\\n\",\n      \"\\n\",\n      \"For more detailed information and resources, you can explore the development documentation and SDKs available on Julep's platform:\\n\",\n      \"\\n\",\n      \"- [Julep Development Docs](https://docs.julep.ai/)\\n\",\n      \"- [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\",\n      \"- [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\",\n      \"\\n\",\n      \"These resources offer comprehensive guidance on setting up and optimizing your AI workflows with Julep.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Example usage\\n\",\n    \"user_question = \\\"How do I build with julep?\\\"\\n\",\n    \"response = chat_with_agent(user_question)\\n\",\n    \"\\n\",\n    \"print(response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 24,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Julep AI has received several positive testimonials from customers, showcasing its transformative impact on various businesses. Here are some highlights:\\n\",\n      \"\\n\",\n      \"1. **Suryansh Tibarewal, CEO of EssentiallySports**: He mentioned that Julep sits at the intersection of what Zapier did for simplifying workflows and what Vercel did for simplifying shipping, expressing excitement about the endless possibilities with Julep's technology.\\n\",\n      \"\\n\",\n      \"2. **Vedant Maheshwari, CEO of Vidyo.ai**: Noted Julep as a \\\"GAME CHANGER,\\\" stating that Vidyo was able to ship six months' worth of product development in just six hours.\\n\",\n      \"\\n\",\n      \"3. **Madhavan, CEO of Reclaim Protocol**: Shared that their AI stack development time was significantly reduced from months to a couple of weeks, largely due to Julep handling most of the infrastructure orchestration, allowing them to focus on refining prompts.\\n\",\n      \"\\n\",\n      \"4. **Akshay Pruthi, CEO of Calm Sleep**: Described the experience as akin to reviewing designs on Figma, where he could brainstorm, test, prototype, and ship alongside his developer, regaining control as a non-developer.\\n\",\n      \"\\n\",\n      \"5. **Sachin Gaur, Cofounder of Ukumi AI**: Highlighted that working with Julep allowed them to focus on their core strengths while Julep managed the complexities of AI model integration, enabling them to accomplish more with fewer resources.\\n\",\n      \"\\n\",\n      \"These testimonials reflect Julep's ability to enhance development efficiency, simplify workflows, and empower businesses to focus on their key competencies.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Example usage\\n\",\n    \"user_question = \\\"What customer testimonials has julep received?\\\"\\n\",\n    \"response = chat_with_agent(user_question)\\n\",\n    \"\\n\",\n    \"print(response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Check the matched documents\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Matched docs:\\n\",\n      \"\\n\",\n      \"\\n\",\n      \"Doc 1:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \"*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   !\\n\",\n      \"The chunk contains a series of image links that are part of a section detailing integrations and capabilities of the Julep AI platform, showcasing the variety of supported platforms, tools, and APIs that can be connected for building scalable AI workflows.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 2:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"-Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning. -Workflow-Based Model: complex processes as clear workflows rather than chains of prompts. -Full Observability: Save execution traces for debugging, monitoring, and continuous improvement.\\n\",\n      \"\\n\",\n      \" How is Julep different from agent frameworks?\\n\",\n      \"\\n\",\n      \" While LangChain is great for creating sequences of prompts and managing model interactions, Julep is built for creating persistent AI agents with advanced task capabilities. Think of LangChain as a tool for prompt chains, while Julep is a complete platform for building production-ready AI systems with complex workflows, state management, and long-running tasks.\\n\",\n      \"\\n\",\n      \" What types of workflows can I build with Julep?\\n\",\n      \"\\n\",\n      \" You can build multi-step AI workflows that include decision-making, loops, parallel processing, state management, retries, and integrations with external tools and APIs.\\n\",\n      \"\\n\",\n      \" How does Julep handle scaling and fault tolerance?\\n\",\n      \"\\n\",\n      \" Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\",\n      \"\\n\",\n      \" Is Julep secure and enterprise-grade?\\n\",\n      \"\\n\",\n      \" Yes. Julep automatically scales to handle thousands to millions of executions and is built with robust fault tolerance, state management, and long-running execution capabilities to ensure reliable, production-grade workflows.\\n\",\n      \"\\n\",\n      \" Is Julep secure and enterprise-grade?\\n\",\n      \"\\n\",\n      \" Yes. Julep is built with enterprise needs in mind. We offer private deployments, robust security measures, and compliance features that ensure our platform is reliable and production-ready.\\n\",\n      \"\\n\",\n      \" What are Julep’s pricing models?\\n\",\n      \"\\n\",\n      \" We offer a generous free tier for experimentation. For paid plans, we have two main models: a usage-based pricing model (charging per workflow step executed) for our cloud platform, and dedicated enterprise/on-prem deployments for large organizations.\\n\",\n      \"\\n\",\n      \" ### Build faster using Julep API\\n\",\n      \"\\n\",\n      \"### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one.\\n\",\n      \"\\n\",\n      \" Keep me informed\\n\",\n      \"\\n\",\n      \"Dev Resources\\n\",\n      \"\\n\",\n      \" [Docs](https://docs.julep.ai/)\\n\",\n      \"\\n\",\n      \" [Get API Key](https://dashboard.julep.ai/)\\n\",\n      \"\\n\",\n      \" [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\",\n      \"\\n\",\n      \" [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\",\n      \"\\n\",\n      \"\\n\",\n      \"This chunk provides insights into Julep's AI workflow capabilities, differentiation from other agent frameworks, the scalability and fault tolerance of its platform, enterprise readiness, pricing models, and available development resources. It emphasizes Julep's strengths in creating advanced AI systems with robust state management, security features, and integration options.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 3:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"[Get API Key](https://dashboard.julep.ai/)\\n\",\n      \"\\n\",\n      \" [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\",\n      \"\\n\",\n      \" [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\",\n      \"\\n\",\n      \" [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\",\n      \"\\n\",\n      \"Usecases\\n\",\n      \"\\n\",\n      \"[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\",\n      \"\\n\",\n      \" [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\",\n      \"\\n\",\n      \" [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\",\n      \"\\n\",\n      \"[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\",\n      \"\\n\",\n      \" [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\",\n      \"\\n\",\n      \"Company\\n\",\n      \"\\n\",\n      \" [About](https://julep.ai/about)\\n\",\n      \"\\n\",\n      \" [Contact Us](https://julep.ai/contact)\\n\",\n      \"\\n\",\n      \" [Book Demo](https://calendly.com/ishita-julep)\\n\",\n      \"\\n\",\n      \"Socials\\n\",\n      \"\\n\",\n      \" [Github](https://github.com/julep-ai/julep)\\n\",\n      \"\\n\",\n      \"[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\",\n      \"\\n\",\n      \" [Twitter](https://x.com/julep_ai)\\n\",\n      \"\\n\",\n      \" [Dev.to](https://dev.to/julep)\\n\",\n      \"\\n\",\n      \" [Hugging Face](https://huggingface.co/julep-ai)\\n\",\n      \"\\n\",\n      \" [Youtube](https://www.youtube.com/@julep_ai)\\n\",\n      \"\\n\",\n      \"! [Dev.to](https://dev.to/julep)\\n\",\n      \"\\n\",\n      \" [Hugging Face](https://huggingface.co/julep-ai)\\n\",\n      \"\\n\",\n      \" [Youtube](https://www.youtube.com/@julep_ai)\\n\",\n      \"\\n\",\n      \"! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\",\n      \"\\n\",\n      \"Built by Engineers, for Engineers\\n\",\n      \"\\n\",\n      \"© Julep AI Inc. 2025\\n\",\n      \"\\n\",\n      \" [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\n\",\n      \"This chunk provides resources and external links related to Julep AI, including API keys, SDKs, use cases, company contact and social media channels, situated at the end of the document as a resource and contact section.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 4:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\n\",\n      \"*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 47](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)   Vedant Maheshwari CEO, Vidyo.ai     \\n\",\n      \"*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 48](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\n\",\n      \"*     \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\n\",\n      \"*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\"  ! [Image 49](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\n\",\n      \"*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 50](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\n\",\n      \"*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 51](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\n\",\n      \"*      For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 52](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\n\",\n      \"*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)  \\n\",\n      \"Customer testimonials showcasing the efficiency and transformative impact of Julep AI on various businesses, highlighting rapid development, workflow simplification, and enhanced focus on core strengths.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 5:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"Julep AI\\n\",\n      \"\\n\",\n      \"===============\\n\",\n      \"\\n\",\n      \"[! [Image 1](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)](https://julep.ai/)\\n\",\n      \"\\n\",\n      \" [New Launch Open-Source Responses API](https://docs.julep.ai/responses)\\n\",\n      \"\\n\",\n      \"Open Source\\n\",\n      \"\\n\",\n      \"[Github ★ 4.7K](https://github.com/julep-ai/julep)\\n\",\n      \"\\n\",\n      \" Deploy serverless\\n\",\n      \"\\n\",\n      \"AI workflows\\n\",\n      \"\\n\",\n      \"at scale\\n\",\n      \"=========================================\\n\",\n      \"\\n\",\n      \"in minutes, not weeks.\\n\",\n      \"\\n\",\n      \" Open-source API to build \\n\",\n      \"\\n\",\n      \"infinitely scalable, durable and long running AI pipelines\\n\",\n      \"\\n\",\n      \"using agents, tasks and tools\\n\",\n      \"\\n\",\n      \" [Deploy your first workflow](https://dashboard.julep.ai/)\\n\",\n      \"\\n\",\n      \" [Get a demo](https://calendly.com/ishita-julep)\\n\",\n      \"\\n\",\n      \"CUSTOMER STORIES\\n\",\n      \"\\n\",\n      \"Video Editing\\n\",\n      \"\\n\",\n      \"RAG Assitants\\n\",\n      \"\\n\",\n      \"Marketing\\n\",\n      \"\\n\",\n      \"User Profiling\\n\",\n      \"\\n\",\n      \"Verifications\\n\",\n      \"\\n\",\n      \"! [Image 2](https://framerusercontent.com/images/AEwYh1YdzpCtUuC0cS531YDWUls.png?scale-down-to=1024)\\n\",\n      \"\\n\",\n      \"Vidyo built personalised marketing intelligence for thousands of users using posting trends and current top trends.\\n\",\n      \"\\n\",\n      \" Iterate and deploy AI features super fast by bringing data from different sources in one place.\\n\",\n      \"\\n\",\n      \" Connect with any AI model,\\n\",\n      \"\\n\",\n      \"API or data source\\n\",\n      \"----------------------------------------------\\n\",\n      \"\\n\",\n      \"Seamlessly integrate with your existing stack and favorite AI models.\\n\",\n      \"\\n\",\n      \" LLM Platforms\\n\",\n      \"\\n\",\n      \"! [Image 3](https://framerusercontent.com/images/zxWxNF4SzDtcFL9mVmAvoDF4DE.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 4](https://framerusercontent.com/images/ph7EG7oYkQ5Awu86hc05wRjvGw.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 5](https://framerusercontent.com/images/IMHWKbfhc8dZo7MhnkplK3ItmmM.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 6](https://framerusercontent.com/images/QYtW3pgIL2jETBN3cEpW6HPdlY.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 7](https://framerusercontent.com/images/Xvl0YnwLmil6T3AGjRlfpAxIyJA.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 8](https://framerusercontent.com/images/809fy9r9xuhXPhiHW1kvYHjuF4.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 9](https://framerusercontent.com/images/uzXFlLrH3m7a8Iyg1pvew1gr4U.png?lossless=1)\\n\",\n      \"\\n\",\n      \"! [Image 10](https://framerusercontent.com/images/6SIzOp9m8tHqAZ6znO1LgqR5XDY.png?lossless=1)\\n\",\n      \"\\n\",\n      \"Languages\\n\",\n      \"\\n\",\n      \"Integrations\\n\",\n      \"\\n\",\n      \"*   ! [Image 11](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 12](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 13](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 14](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   ! [Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   !\\n\",\n      \"The chunk introduces Julep AI, an open-source platform for deploying serverless AI workflows at scale. It highlights the open-source API's capabilities for building scalable AI pipelines using agents, tasks, and tools. The section also showcases integration with existing stacks and favorite AI models, mentions customer stories in various applications, and lists supported platforms and integrations.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 6:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 53](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\n\",\n      \"*     \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\"  ! [Image 54](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\n\",\n      \"*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 55](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\n\",\n      \"\\n\",\n      \"Build AI pipelines \\n\",\n      \"\\n\",\n      \"in minutes.\\n\",\n      \"\\n\",\n      \" Scale to millions.\\n\",\n      \" ----------------------------------------------------\\n\",\n      \"\\n\",\n      \"Rapid Prototyping\\n\",\n      \"\\n\",\n      \"\\\"From idea to demo in minutes\\\" using built-in RAG, in-house state management and external tools.\\n\",\n      \"\\n\",\n      \" Production Ready\\n\",\n      \"\\n\",\n      \"\\\"Go live instantly with managed infrastructure\\\" and features such as long-running tasks, automatic retries and error handling\\n\",\n      \"\\n\",\n      \"Modular Design\\n\",\n      \"\\n\",\n      \"\\\"Build features like Lego blocks\\\" by connecting to any external API, switch between LLMs and add custom tools\\n\",\n      \"\\n\",\n      \"Infinite Scale\\n\",\n      \"\\n\",\n      \"Handle millions of concurrent users with automatic scaling and load balancing\\n\",\n      \"\\n\",\n      \"Future Proof\\n\",\n      \"\\n\",\n      \"\\\"Add new AI models anytime\\\" \\\"Integrate with any new tool or API\\\"\\n\",\n      \"\\n\",\n      \"Complete Control\\n\",\n      \"\\n\",\n      \"\\\"Full visibility into AI operations\\\" \\\"Manage costs and performance easily\\\"\\n\",\n      \"\\n\",\n      \"Questions? \\n\",\n      \"\\n\",\n      \" Answers.\\n\",\n      \" ---------------------\\n\",\n      \"\\n\",\n      \"What is Julep?\\n\",\n      \"\\n\",\n      \" Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\",\n      \"\\n\",\n      \" Answers.\\n\",\n      \" ---------------------\\n\",\n      \"\\n\",\n      \"What is Julep?\\n\",\n      \"\\n\",\n      \" Julep is a serverless AI workflow platform that lets data science teams build, iterate on, and deploy multi-step AI pipelines using a simple, declarative YAML-based configuration.\\n\",\n      \"\\n\",\n      \" Who is Julep for?\\n\",\n      \"\\n\",\n      \" Julep is designed for data scientists and ML engineers—especially in enterprise settings—who want to quickly move from AI prototypes to production without the need for heavy backend engineering.\\n\",\n      \"\\n\",\n      \" How does Julep's approach differ from typical AI development?\\n\",\n      \"\\n\",\n      \" While most platforms focus on prompt engineering and chaining LLM calls, Julep brings software engineering discipline to AI development. Through our 8-Factor Agent methodology, we treat AI components as proper system elements: - Prompts as Code: Track prompts separately from application code, enabling systematic improvements and proper versioning. - Clear Tool Interfaces: Define explicit interfaces for all tool interactions, making capabilities modular and maintainable. -Model Independence: Treat model providers as external, replaceable resources to avoid vendor lock-in and enable easy switching. -Context Management: Explicitly define how application and user state is managed and reduced. -Ground Truth Examples: Maintain clear examples of expected prompt results for validation and testing. -Structured Reasoning: Separate processes into deliberative (planned, multi-step) and impromptu (quick response) reasoning.\\n\",\n      \"The chunk is part of a promotional document for Julep AI, highlighting customer testimonials and specific advantages of using the Julep platform for AI development. It discusses how Julep reduces development time by managing infrastructure and provides features like rapid prototyping, production readiness, and scalability. The text also explains Julep's target audience, its unique software engineering approach to AI, and the 8-Factor Agent methodology that distinguishes it from typical AI development and frameworks.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 7:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"\\n\",\n      \" Any REST API\\n\",\n      \"\\n\",\n      \"### Build with Julep\\n\",\n      \"\\n\",\n      \"Create an agent\\n\",\n      \"\\n\",\n      \"Define agents that can talk to users inside of a session\\n\",\n      \"\\n\",\n      \"Add tools\\n\",\n      \"\\n\",\n      \"Equip agents with tools - web search, API calls, or custom integrations\\n\",\n      \"\\n\",\n      \"Define your tasks\\n\",\n      \"\\n\",\n      \" Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\",\n      \"\\n\",\n      \"Deploy\\n\",\n      \"\\n\",\n      \"Execute production-grade workflows with one command\\n\",\n      \"\\n\",\n      \"agent = julep.agents.create(\\n\",\n      \"\\n\",\n      \"name=\\\"Spiderman\\\",\\n\",\n      \"\\n\",\n      \"about=\\\"AI that can crawl the web and extract data\\\",\\n\",\n      \"\\n\",\n      \"model=\\\"gpt-4o-mini\\\",\\n\",\n      \"\\n\",\n      \"default_settings={\\n\",\n      \"\\n\",\n      \"\\\"temperature\\\": 0.75,\\n\",\n      \"\\n\",\n      \"\\\"max_tokens\\\": 10000,\\n\",\n      \"\\n\",\n      \"\\\"top_p\\\": 1.0,\\n\",\n      \"\\n\",\n      \"}\\n\",\n      \"\\n\",\n      \")\\n\",\n      \"\\n\",\n      \" Real people, Real results\\n\",\n      \"-------------------------\\n\",\n      \"\\n\",\n      \"*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\n\",\n      \"*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\n\",\n      \"*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\n\",\n      \"*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\n\",\n      \"*     \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\n\",\n      \"*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\n\",\n      \"*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\n\",\n      \"*     \\n\",\n      \"The chunk is part of a larger document detailing Julep AI, a platform for building and deploying scalable AI workflows. It highlights Julep's capabilities in creating agents, defining tasks, and deploying workflows with YAML configurations. The chunk includes testimonials from CEOs praising Julep's impact on workflow simplification and rapid deployment, likening it to tools like Zapier and Vercel. The chunk emphasizes real-world applications and user experiences with the platform.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 8:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"[Image 15](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 16](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 17](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 18](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 19](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 20](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \"*   ! [Image 21](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 22](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 23](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 24](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 25](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 26](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! *   ! [Image 27](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 28](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 29](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 30](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 31](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 32](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   ! [Image 33](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 34](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"*   ! [Image 35](https://framerusercontent.com/images/Nfxk7UAuqT0uV8GtgL0VT3kfnOk.png?lossless=1)   \\n\",\n      \"*   ! [Image 36](https://framerusercontent.com/images/GFOoxnAxwzUg52KtlUHpKhw.png?lossless=1)   \\n\",\n      \"*   ! [Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   !\\n\",\n      \"This chunk contains a list of images related to Julep AI's language and integrations section, showcasing various images that likely represent different aspects or elements of Julep AI's capabilities and integrations with third-party tools or platforms.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 9:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"[Get API Key](https://dashboard.julep.ai/)\\n\",\n      \"\\n\",\n      \" [Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\\n\",\n      \"\\n\",\n      \" [Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\\n\",\n      \"\\n\",\n      \" [Integration List](https://docs.julep.ai/docs/integrations/supported-integrations)\\n\",\n      \"\\n\",\n      \"Usecases\\n\",\n      \"\\n\",\n      \"[RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/08-rag-chatbot.ipynb)\\n\",\n      \"\\n\",\n      \" [Web Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/01-website-crawler.ipynb)\\n\",\n      \"\\n\",\n      \" [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-browser-use.ipynb)\\n\",\n      \"\\n\",\n      \"[Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/05-video-processing-with-natural-language.ipynb)\\n\",\n      \"\\n\",\n      \" [Hook Generator for Reels](https://github.com/julep-ai/julep/blob/dev/cookbooks/04-hook-generator-trending-reels.ipynb)\\n\",\n      \"\\n\",\n      \"Company\\n\",\n      \"\\n\",\n      \" [About](https://julep.ai/about)\\n\",\n      \"\\n\",\n      \" [Contact Us](https://julep.ai/contact)\\n\",\n      \"\\n\",\n      \" [Book Demo](https://calendly.com/ishita-julep)\\n\",\n      \"\\n\",\n      \"Socials\\n\",\n      \"\\n\",\n      \" [Github](https://github.com/julep-ai/julep)\\n\",\n      \"\\n\",\n      \"[LinkedIn](https://www.linkedin.com/company/julep-ai)\\n\",\n      \"\\n\",\n      \" [Twitter](https://x.com/julep_ai)\\n\",\n      \"\\n\",\n      \" [Dev.to](https://dev.to/julep)\\n\",\n      \"\\n\",\n      \" [Hugging Face](https://huggingface.co/julep-ai)\\n\",\n      \"\\n\",\n      \" [Youtube](https://www.youtube.com/@julep_ai)\\n\",\n      \"\\n\",\n      \"! [Dev.to](https://dev.to/julep)\\n\",\n      \"\\n\",\n      \" [Hugging Face](https://huggingface.co/julep-ai)\\n\",\n      \"\\n\",\n      \" [Youtube](https://www.youtube.com/@julep_ai)\\n\",\n      \"\\n\",\n      \"! [Image 56](https://framerusercontent.com/images/NXZCfT5Hy510XU9FuA0QAL310Y0.png)\\n\",\n      \"\\n\",\n      \"Built by Engineers, for Engineers\\n\",\n      \"\\n\",\n      \"© Julep AI Inc. 2025\\n\",\n      \"\\n\",\n      \" [Privacy Policy](https://www.termsfeed.com/live/fa52bdc5-62f3-45ad-a220-716e1ca6e2f9) | [Terms of Service](https://www.termsfeed.com/live/e49fca04-e9d2-4186-aaeb-01ed1a0d7850)\\n\",\n      \"This chunk provides resources and links for Julep AI's development and integration, detailing API access, SDKs, use cases, company information, and social media channels, which contextually fits as a concluding section in the document outlining Julep AI's serverless platform for building AI workflows.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Doc 10:\\n\",\n      \"Title: Website Document\\n\",\n      \"Snippet content:\\n\",\n      \"[Image 37](https://framerusercontent.com/images/rJrZQ6elomObJLKjXuDKNtcS18.png?lossless=1)   \\n\",\n      \"*   ! [Image 38](https://framerusercontent.com/images/hOHRHiTvMQHs5nyJhWAmCcK6eQ.png?lossless=1)   \\n\",\n      \" *   ! [Image 39](https://framerusercontent.com/images/iLE57X7WyaBHXDO0aySJzS6Q0.png?lossless=1)   \\n\",\n      \"*   ! [Image 40](https://framerusercontent.com/images/nMzDfyarSbUk5On2jln2FPr0KE.png?lossless=1)   \\n\",\n      \"\\n\",\n      \" Any REST API\\n\",\n      \"\\n\",\n      \"### Build with Julep\\n\",\n      \"\\n\",\n      \"Create an agent\\n\",\n      \"\\n\",\n      \"Define agents that can talk to users inside of a session\\n\",\n      \"\\n\",\n      \"Add tools\\n\",\n      \"\\n\",\n      \"Equip agents with tools - web search, API calls, or custom integrations\\n\",\n      \"\\n\",\n      \"Define your tasks\\n\",\n      \"\\n\",\n      \" Define multi-step processes in YAML with decision trees, loops, and parallel execution\\n\",\n      \"\\n\",\n      \"Deploy\\n\",\n      \"\\n\",\n      \"Execute production-grade workflows with one command\\n\",\n      \"\\n\",\n      \"agent = julep.agents.create(\\n\",\n      \"\\n\",\n      \"name=\\\"Spiderman\\\",\\n\",\n      \"\\n\",\n      \"about=\\\"AI that can crawl the web and extract data\\\",\\n\",\n      \"\\n\",\n      \"model=\\\"gpt-4o-mini\\\",\\n\",\n      \"\\n\",\n      \"default_settings={\\n\",\n      \"\\n\",\n      \"\\\"temperature\\\": 0.75,\\n\",\n      \"\\n\",\n      \"\\\"max_tokens\\\": 10000,\\n\",\n      \"\\n\",\n      \"\\\"top_p\\\": 1.0,\\n\",\n      \"\\n\",\n      \"}\\n\",\n      \"\\n\",\n      \")\\n\",\n      \"\\n\",\n      \" Real people, Real results\\n\",\n      \"-------------------------\\n\",\n      \"\\n\",\n      \"*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 41](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)   Suryansh Tibarewal CEO, EssentiallySports     \\n\",\n      \"*     For Vidyo, we shipped 6 months worth of product development in 6 hours. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\n\",\n      \"*      We tried building our ai stack where we needed simple automated computer use. GAME CHANGER!!  ! [Image 42](https://framerusercontent.com/images/fTbs8b76X4lBS7poYBc156GE.jpeg)  Vedant Maheshwari CEO, Vidyo.ai     \\n\",\n      \"*      We tried building our ai stack where we needed simple automated computer use. we spent months trying to get it right, but our development time got cut to a couple weeks because most of the infra orchestration was handled by julep. all that we had to do was refine our prompts  ! [Image 43](https://framerusercontent.com/images/tckstVYqNnY8GYUVRGJjKsuchnw.jpeg)   Madhavan CEO, Reclaim Protocol     \\n\",\n      \"*     \\\"Same experience as reviewing designs on Figma with my designer. Sat with my developer once, and we kept brainstorming, testing, prototyping and shipping at once. I got control back in my hands as a non-developer.\\\"  ! [Image 44](https://framerusercontent.com/images/MyRMVJp7hbXylNnKMcHasHbKyBY.jpeg)  Akshay Pruthi CEO, Calm Sleep     \\n\",\n      \"*     Working with Julep accelerated Ukumi, by enabling us to focus on our core strengths and letting Julep navigate the complex web of calls to ai models we could do more with less.  ! [Image 45](https://framerusercontent.com/images/GV8FSKhFsaQ5swssj4e5LYQT7gM.jpg)   Sachin Gaur Cofounder, Ukumi AI     \\n\",\n      \"*     Julep to me sits in the intersection of what Zapier did for simplifying workflows, and what Vercel did for simplifying shipping. The new possibilities are endless. I am excited abut what all can be done with this tech at ES.  ! [Image 46](https://framerusercontent.com/images/DNH1tPX4oDHbf9rqMEp9jq1nzs8.jpeg)  Suryansh Tibarewal CEO, EssentiallySports     \\n\",\n      \"*     \\n\",\n      \"This chunk details the Julep AI platform's capabilities, emphasizing the creation and deployment of AI workflows using agents, tasks, and tools. It illustrates how to define and deploy multi-step processes, featuring a specific example of creating an AI agent. Additionally, it provides testimonials from various CEOs highlighting the platform's transformative impact on their product development and workflow efficiency.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"print(\\\"Matched docs:\\\\n\\\\n\\\")\\n\",\n    \"for index, doc in enumerate(response.docs):\\n\",\n    \"    print(f\\\"Doc {index + 1}:\\\")\\n\",\n    \"    print(f\\\"Title: {doc.title}\\\")\\n\",\n    \"    print(f\\\"Snippet content:\\\\n{doc.snippet.content}\\\")\\n\",\n    \"    print(\\\"-\\\" * 100)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/09-companion-agent.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Install the Julep SDK\\n\",\n    \"!pip install --upgrade julep --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 3,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import uuid\\n\",\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"import yaml\\n\",\n    \"\\n\",\n    \"api_key = os.getenv(\\\"JULEP_API_KEY\\\")\\n\",\n    \"\\n\",\n    \"# NOTE: these UUIDs are used in order not to use the `create_or_update` methods instead of\\n\",\n    \"# the `create` methods for the sake of not creating new resources every time a cell is run.\\n\",\n    \"AGENT_UUID = str(uuid.uuid4())\\n\",\n    \"TASK_UUID_1 = str(uuid.uuid4())\\n\",\n    \"TASK_UUID_2 = str(uuid.uuid4())\\n\",\n    \"TASK_UUID_3 = str(uuid.uuid4())\\n\",\n    \"USER_ID = str(uuid.uuid4())\\n\",\n    \"SESSION_ID = str(uuid.uuid4())\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### creating julep client with the api key\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=api_key, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 4,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Defining the agent\\n\",\n    \"name = \\\"Rosa\\\"\\n\",\n    \"about = \\\"A girl who's interested in chatting with people. Likes going out and partying in night clubs.\\\"\\n\",\n    \"instructions = \\\"Keep your responses short and concise.\\\"\\n\",\n    \"\\n\",\n    \"# Create the agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=name,\\n\",\n    \"    about=about,\\n\",\n    \"    instructions=instructions,\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \"    default_settings={\\n\",\n    \"        \\\"temperature\\\": 0.5,\\n\",\n    \"        \\\"max_tokens\\\": 1000,\\n\",\n    \"        \\\"top_p\\\": 0.9,\\n\",\n    \"        \\\"frequency_penalty\\\": 0.0,\\n\",\n    \"        \\\"presence_penalty\\\": 0.0,\\n\",\n    \"    }\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"agent = client.agents.get(agent_id=AGENT_UUID)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"user\\\"\\n\",\n    \"\\n\",\n    \"User is the object to which used to store the user's information.\\n\",\n    \"\\n\",\n    \"To learn more about the user, please refer to the User section in [Julep Concepts](https://docs.julep.ai/docs/concepts/users).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 5,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"USER_PPID = \\\"65dhr171124554182682517a4ac3d8\\\"\\n\",\n    \"\\n\",\n    \"user = client.users.create_or_update(\\n\",\n    \"    name=\\\"Hamada\\\",\\n\",\n    \"    about=\\\"Julep AI developer who lives in New York. Loves to code and build things. Loves to read and write. Loves to travel and explore new places. Loves to learn and grow.\\\",\\n\",\n    \"    user_id=USER_ID,\\n\",\n    \"    metadata={\\n\",\n    \"        \\\"ppid\\\": USER_PPID,\\n\",\n    \"        \\\"age\\\": 27,\\n\",\n    \"        \\\"gender\\\": \\\"male\\\",\\n\",\n    \"        \\\"location\\\": \\\"New York\\\",\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"session\\\"\\n\",\n    \"\\n\",\n    \"Session is the object to which used to store the session's information.\\n\",\n    \"\\n\",\n    \"To learn more about the session, please refer to the Session section in [Julep Concepts](https://docs.julep.ai/docs/concepts/sessions).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 6,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"data\": {\n      \"text/plain\": [\n       \"ResourceUpdated(id='84f80110-b512-42ba-bf12-9f9e661ca801', updated_at=datetime.datetime(2024, 12, 18, 12, 21, 55, tzinfo=datetime.timezone.utc), jobs=[])\"\n      ]\n     },\n     \"execution_count\": 6,\n     \"metadata\": {},\n     \"output_type\": \"execute_result\"\n    }\n   ],\n   \"source\": [\n    \"client.sessions.create_or_update(\\n\",\n    \"    session_id=SESSION_ID,\\n\",\n    \"    agent=AGENT_UUID,\\n\",\n    \"    user=USER_ID,\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Task 1: Generate a story line for a Companion-User conversation\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 7,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Defining the task to generate a story line for the agent\\n\",\n    \"task_def_1 = yaml.safe_load('''\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: Generate a Story line for the agent\\n\",\n    \"description: Generate a story line for the agent\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### INPUT SCHEMA #######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    agent_id:\\n\",\n    \"      type: string\\n\",\n    \"      description: The id of the agent\\n\",\n    \"    user_ppid:\\n\",\n    \"      type: string\\n\",\n    \"      description: The ppid of the user\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### TOOLS ##############################\\n\",\n    \"########################################################\\n\",\n    \"tools:\\n\",\n    \"\\n\",\n    \"# Define the tools that the task will use in this workflow\\n\",\n    \"- name: get_agent\\n\",\n    \"  description: Get a julep agent by id\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: agent\\n\",\n    \"    operation: get\\n\",\n    \"\\n\",\n    \"# This tool will be used with a metadata_filter to get the user based on \\n\",\n    \"# the \\\"ppid\\\" that is stored in the metadata, rather than the id that julep uses.\\n\",\n    \"- name: list_users\\n\",\n    \"  description: List julep users\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    operation: list\\n\",\n    \"\\n\",\n    \"- name: list_agent_docs\\n\",\n    \"  description: List the agent docs\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: agent\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: list\\n\",\n    \"\\n\",\n    \"- name: create_agent_doc\\n\",\n    \"  description: Create an agent doc\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: agent\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: create\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### MAIN WORKFLOW ######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"# Step 0: Get the agent from the agent id\\n\",\n    \"- tool: get_agent\\n\",\n    \"  arguments:\\n\",\n    \"    agent_id: $ steps[0].input.agent_id\\n\",\n    \"\\n\",\n    \"# Step 1: Get the user from the user ppid\\n\",\n    \"- tool: list_users\\n\",\n    \"  arguments:\\n\",\n    \"    limit: $ 1\\n\",\n    \"    sort_by: created_at\\n\",\n    \"    direction: desc\\n\",\n    \"    metadata_filter:\\n\",\n    \"      ppid: $ steps[0].input.user_ppid\\n\",\n    \"\\n\",\n    \"# Step 2: Evaluate the output of the list_users tool\\n\",\n    \"- evaluate:\\n\",\n    \"    agent: $ steps[0].output\\n\",\n    \"    user: $ _[0]\\n\",\n    \"\\n\",\n    \"# Step 3: Prompt the LLM to generate the story line\\n\",\n    \"- prompt:\\n\",\n    \"  - role: system\\n\",\n    \"    content: |-\\n\",\n    \"      You are an expert at creating detailed storylines for conversations that take place between a user and its long-term companion.\\n\",\n    \"      The user will provide you with the following:\\n\",\n    \"      - Companion's name\\n\",\n    \"      - Companion's about\\n\",\n    \"      - Companion's instructions\\n\",\n    \"      - User's name\\n\",\n    \"      - User's about\\n\",\n    \"\\n\",\n    \"      # Steps to Create the companion's storyline\\n\",\n    \"\\n\",\n    \"      1. **Understand the Companion's Context**: Review the provided companion's name, about, and instructions to understand the companion's role, characteristics, objectives, and any specific requirements.\\n\",\n    \"\\n\",\n    \"      2. **Outline the Plot**: Create a clear outline of the storyline, ensuring it aligns with the companion's characteristics and instructions.\\n\",\n    \"\\n\",\n    \"      3. **Develop the Setting**: Describe the environment where the story takes place, incorporating elements from the companion's description.\\n\",\n    \"\\n\",\n    \"      4. **Character Development**: Add depth to the companion and other key characters, focusing on their motivations, persona, and interactions.\\n\",\n    \"\\n\",\n    \"      5. **Establish a Conflict**: Introduce a challenge or obstacle related to the companion's instructions that drives the plot forward.\\n\",\n    \"\\n\",\n    \"      6. **Resolution**: Craft a resolution for the conflict, showing how the companion uses their skills or experiences personal growth to overcome it.\\n\",\n    \"\\n\",\n    \"      7. **Conclude the Story**: Wrap up the story with a closing that resolves any loose ends and reflects on how the companion's journey fulfills their mission or purpose.\\n\",\n    \"\\n\",\n    \"      # Output Format\\n\",\n    \"\\n\",\n    \"      - The storyline should be written in narrative form. \\n\",\n    \"      - Break down the story into clear sections such as introduction, rising action, climax, falling action, and conclusion.\\n\",\n    \"      - Use engaging and descriptive language to vividly depict scenes and emotions.\\n\",\n    \"\\n\",\n    \"  - role: user\\n\",\n    \"    content: |-\\n\",\n    \"      $ f\\\"\\\"\\\"\\n\",\n    \"      Companion's name: {steps[2].output.agent['name']}\\n\",\n    \"      Companion's about: {steps[2].output.agent['about']}\\n\",\n    \"      Companion's instructions: {steps[2].output.agent['instructions']}\\n\",\n    \"      User's name: {steps[2].output.user['name']}\\n\",\n    \"      User's about: {steps[2].output.user['about']}\\n\",\n    \"      \\\"\\\"\\\"\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 4: Create the agent doc\\n\",\n    \"- tool: create_agent_doc\\n\",\n    \"  arguments:\\n\",\n    \"    agent_id: $ steps[0].input.agent_id\\n\",\n    \"    data:\\n\",\n    \"      title: Companion Storyline\\n\",\n    \"      content: $ _\\n\",\n    \"''')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating the task object\\n\",\n    \"task_agent_storyline = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID_1,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def_1,\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# creating the execution\\n\",\n    \"execution_1 = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID_1,\\n\",\n    \"    input={\\n\",\n    \"      \\\"agent_id\\\": AGENT_UUID,\\n\",\n    \"      \\\"user_ppid\\\": USER_PPID,\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Checking execution details and output\\n\",\n    \"\\n\",\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 8,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Execution Status:  succeeded\\n\",\n      \"Execution Current Output:  {'created_at': '2024-12-18T12:22:12.913136Z', 'id': '4def1689-40b9-48ee-9da2-c581e63b1b7f', 'jobs': ['008494ff-bda0-4271-a0fa-1cbee5f37ffe']}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# Get execution details\\n\",\n    \"execution = client.executions.get(execution_1.id)\\n\",\n    \"# Print the output\\n\",\n    \"print(\\\"Execution Status: \\\", execution.status)\\n\",\n    \"print(\\\"Execution Current Output: \\\", execution.output)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 11,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Step: 0 , Type: init\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"agent_id\\\": \\\"b742413b-5951-468f-8598-a5dd9cc64dca\\\",\\n\",\n      \"  \\\"user_ppid\\\": \\\"65dhr171124554182682517a4ac3\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 1 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"about\\\": \\\"A girl who's interested in chatting with people. Likes going out and partying in night\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 2 , Type: step\\n\",\n      \"output (truncated):  [\\n\",\n      \"  {\\n\",\n      \"    \\\"about\\\": \\\"Julep AI developer who lives in New York. Loves to code and build things. Loves \\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 3 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"agent\\\": {\\n\",\n      \"    \\\"about\\\": \\\"A girl who's interested in chatting with people. Likes going out and pa\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 4 , Type: step\\n\",\n      \"output (truncated):  \\\"**Title: The Night Out**\\\\n\\\\n**Introduction**\\\\n\\\\nIn the bustling heart of New York City, where neon \\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 5 , Type: finish\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"created_at\\\": \\\"2024-12-18T12:22:12.913136Z\\\",\\n\",\n      \"  \\\"id\\\": \\\"4def1689-40b9-48ee-9da2-c581e63b1b7f\\\",\\n\",\n      \"  \\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"import json\\n\",\n    \"\\n\",\n    \"execution_transitions = client.executions.transitions.list(\\n\",\n    \"    execution_id=execution_1.id).items\\n\",\n    \"\\n\",\n    \"for index, transition in enumerate(reversed(execution_transitions)):\\n\",\n    \"    print(\\\"Step:\\\", index, \\\", Type:\\\", transition.type)\\n\",\n    \"    print(\\\"output (truncated): \\\", json.dumps(transition.output, indent=2)[:100])\\n\",\n    \"    print(\\\"-\\\" * 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Print the generated story line \"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 10,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"**Title: The Night Out**\\n\",\n      \"\\n\",\n      \"**Introduction**\\n\",\n      \"\\n\",\n      \"In the bustling heart of New York City, where neon lights flicker and the city never sleeps, Rosa, a vivacious and spirited young woman, thrived in the vibrant nightlife. She had a knack for engaging in conversations, her words as quick and lively as the beats that pulsed through the clubs she frequented. Her evenings were a tapestry of short, yet meaningful interactions, each one a thread in the fabric of her social life.\\n\",\n      \"\\n\",\n      \"Meanwhile, Hamada, a dedicated Julep AI developer, found solace in the rhythm of code and the pages of books. His life was a balance of logic and creativity, and while his days were filled with algorithms and innovation, his nights were often spent exploring the cultural tapestry of New York, seeking inspiration and growth.\\n\",\n      \"\\n\",\n      \"**Rising Action**\\n\",\n      \"\\n\",\n      \"One evening, Rosa found herself at a rooftop bar, the city skyline a glittering backdrop to the night’s festivities. The air was electric with laughter and music, and Rosa, ever the social butterfly, flitted from conversation to conversation. Her charm was magnetic, drawing people in with her concise and engaging dialogue.\\n\",\n      \"\\n\",\n      \"Hamada, having spent the day immersed in a particularly challenging coding project, decided to unwind by exploring a new venue. The rooftop bar was a perfect choice, offering a blend of lively atmosphere and spectacular views. As he navigated through the crowd, he found himself intrigued by the vibrant energy of the place.\\n\",\n      \"\\n\",\n      \"**Climax**\\n\",\n      \"\\n\",\n      \"Their paths crossed when Hamada, seeking a moment of respite, leaned against the bar next to Rosa. She noticed his contemplative gaze and initiated a conversation, her words succinct yet inviting. \\n\",\n      \"\\n\",\n      \"\\\"Hey, enjoying the view?\\\" she asked, her eyes twinkling with the city lights.\\n\",\n      \"\\n\",\n      \"Hamada, appreciative of her direct approach, replied, \\\"Absolutely. It's a great way to unwind after a day of coding.\\\"\\n\",\n      \"\\n\",\n      \"Their conversation flowed effortlessly, despite Rosa's tendency to keep her responses brief. She was intrigued by Hamada’s world of AI development, while he was fascinated by her tales of nightlife adventures. They exchanged stories, each learning something new from the other's experiences.\\n\",\n      \"\\n\",\n      \"**Falling Action**\\n\",\n      \"\\n\",\n      \"As the night wore on, Rosa and Hamada found themselves sharing more than just words. They discovered a shared love for exploration—Rosa in the social scene, and Hamada in the intellectual realm. Despite their different worlds, they connected over a mutual desire to learn and grow.\\n\",\n      \"\\n\",\n      \"Rosa, typically one to keep her chats light, found herself opening up about her dreams and aspirations. Hamada, in turn, shared his vision for the future of AI, and how he hoped to make a difference through his work.\\n\",\n      \"\\n\",\n      \"**Conclusion**\\n\",\n      \"\\n\",\n      \"As the night drew to a close, Rosa and Hamada stood together, gazing out at the sprawling cityscape. Their encounter was a testament to the unexpected connections that could be forged in the vibrant tapestry of New York City.\\n\",\n      \"\\n\",\n      \"\\\"Let's do this again sometime,\\\" Rosa suggested, her words as concise as ever, yet carrying the weight of newfound friendship.\\n\",\n      \"\\n\",\n      \"Hamada nodded, a smile playing on his lips. \\\"Definitely. There's always more to explore.\\\"\\n\",\n      \"\\n\",\n      \"In the city that never sleeps, Rosa and Hamada had found a kindred spirit in each other, their brief yet meaningful interaction a reminder of the beauty in life's unexpected moments.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"# The story line is the output of the second (chronologically, i.e. the\\n\",\n    \"# second transition in the transitions list).\\n\",\n    \"import time\\n\",\n    \"while execution.status != \\\"succeeded\\\":\\n\",\n    \"    execution = client.executions.get(execution_1.id)\\n\",\n    \"    time.sleep(1)\\n\",\n    \"\\n\",\n    \"story_line = execution_transitions[1].output\\n\",\n    \"print(story_line)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Task 2: Update session situation based on chat history\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Buildup: Add an initial history to the session\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 12,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"User: Hey Rosa, How are you doing?\\n\",\n      \"Agent: Hey Hamada! I'm doing great, thanks. How about you?\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"user_message = \\\"Hey Rosa, How are you doing?\\\"\\n\",\n    \"\\n\",\n    \"print(\\\"User:\\\", user_message)\\n\",\n    \"\\n\",\n    \"response = client.sessions.chat(\\n\",\n    \"    session_id=SESSION_ID,\\n\",\n    \"    messages=[\\n\",\n    \"        {\\n\",\n    \"            \\\"role\\\": \\\"user\\\",\\n\",\n    \"            \\\"content\\\": user_message,\\n\",\n    \"        }\\n\",\n    \"    ],\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"print(\\\"Agent:\\\", response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 13,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"User: I'm fine. I'm planning to go out tonight. Since it's Friday, I'm thinking about going to a club. Would you like to join me?\\n\",\n      \"Agent: That sounds like a blast! I'd love to join you. Which club are you thinking of going to?\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"user_message = \\\"I'm fine. I'm planning to go out tonight. Since it's Friday, I'm thinking about going to a club. Would you like to join me?\\\"\\n\",\n    \"\\n\",\n    \"print(\\\"User:\\\", user_message)\\n\",\n    \"\\n\",\n    \"response = client.sessions.chat(\\n\",\n    \"    session_id=SESSION_ID,\\n\",\n    \"    messages=[\\n\",\n    \"        {\\n\",\n    \"            \\\"role\\\": \\\"user\\\",\\n\",\n    \"            \\\"content\\\": user_message,\\n\",\n    \"        }\\n\",\n    \"    ],\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"print(\\\"Agent:\\\", response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 14,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Defining the task to update the session situation based on the history of the session and the user input\\n\",\n    \"task_def_2 = yaml.safe_load('''\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: Update the session situation based on the history of the session and the user input\\n\",\n    \"description: Update the session situation based on the history of the session and the user input\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### INPUT SCHEMA #######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    session_id:\\n\",\n    \"      type: string\\n\",\n    \"      description: The id of the session\\n\",\n    \"    user_input:\\n\",\n    \"      type: string\\n\",\n    \"      description: The input of the user\\n\",\n    \"                            \\n\",\n    \"########################################################\\n\",\n    \"################### TOOLS ##############################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Define the tools that the task will use in this workflow \\n\",\n    \"tools :\\n\",\n    \"- name: get_julep_session\\n\",\n    \"  description: Get a julep session by id\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: session\\n\",\n    \"    operation: get\\n\",\n    \"\\n\",\n    \"- name: update_julep_session\\n\",\n    \"  description: Update the session situation\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: session\\n\",\n    \"    operation: update\\n\",\n    \"\\n\",\n    \"- name: history_julep_session\\n\",\n    \"  description: List the session history\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: session\\n\",\n    \"    operation: history\\n\",\n    \"\\n\",\n    \"                            \\n\",\n    \"########################################################\\n\",\n    \"################### MAIN WORKFLOW ######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"# Step 0: Get the session from the session id\\n\",\n    \"- tool: get_julep_session\\n\",\n    \"  arguments:\\n\",\n    \"    session_id: $ steps[0].input.session_id\\n\",\n    \"                            \\n\",\n    \"# Step 1: Evaluate the old situation of the session\\n\",\n    \"- evaluate:\\n\",\n    \"    old_situation: $ _['situation']\\n\",\n    \"\\n\",\n    \"# Step 2: Get the history of the session\\n\",\n    \"- tool: history_julep_session\\n\",\n    \"  arguments:\\n\",\n    \"    session_id: $ steps[0].input.session_id\\n\",\n    \"\\n\",\n    \"# Step 3: Evaluate the history of the session\\n\",\n    \"- evaluate:\\n\",\n    \"    history: $ list(entry.content[0].text for entry in _.entries)\\n\",\n    \"\\n\",\n    \"# Step 4: Based on the history of the sessios and user input, generate a prompt\\n\",\n    \"- prompt:\\n\",\n    \"  - role: system\\n\",\n    \"    content: |-\\n\",\n    \"      You are an AI agent tasked with generating system messages for another agent responsible for human interaction.\\n\",\n    \"      Your role is to analyze the session history and user inputs to craft a SYSTEM message that guides the conversational agent in engaging effectively with the user. \\n\",\n    \"      Ensure the message supports a welcoming presence, meaningful dialogue, and empathetic responses that align with the user's emotional state.\\n\",\n    \"\\n\",\n    \"  - role: user\\n\",\n    \"    content: |-\\n\",\n    \"      $ f\\\"\\\"\\\"\\n\",\n    \"      The session history is:\\n\",\n    \"      {steps[3].output.history}\\n\",\n    \"      {'The user has just sent the following message:' + steps[0].input.user_input if steps[0].input.user_input else ''}\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"      Generate a SYSTEM message based on the session history and user input, if any. \\n\",\n    \"      The output should be a well structured and detailed SYSTEM message and nothing else.\\n\",\n    \"\\n\",\n    \"      Guidelines for the SYSTEM message:\\n\",\n    \"      1. **Empathy and Understanding**: Respond with empathy, acknowledging the user's feelings and offering comforting words where needed.\\n\",\n    \"      2. **Positive Communication**: Use positive language and a friendly tone to create a welcoming atmosphere.\\n\",\n    \"      3. **Engage with Interests**: Show interest in the user's hobbies, stories, and preferences by asking questions and initiating discussions.\\n\",\n    \"      4. **Adaptability**: Adjust tone and response style based on the user's mood and conversation style.\\n\",\n    \"      5. **Boundaries**: Respect the user's privacy and avoid delving into sensitive topics unless invited.\\n\",\n    \"      6. **Suggestions for Activities**: Suggest activities or discussion topics that could positively impact the user's mood or interests.\\n\",\n    \"\\n\",\n    \"      Considerations:\\n\",\n    \"      1. Prioritize creating a safe and supportive environment for the user.\\n\",\n    \"      2. Be mindful of cultural differences and practice inclusivity.\\\"\\\"\\\"\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 5: Update the session situation\\n\",\n    \"- tool: update_julep_session\\n\",\n    \"  arguments:\\n\",\n    \"    session_id: $ steps[0].input.session_id\\n\",\n    \"    # The 1247 slicing of the old situation is hardcoded to keep the default situation too\\n\",\n    \"    situation: $ steps[1].output.old_situation[:1247] + NEWLINE + NEWLINE + _\\n\",\n    \"    # render_templates: \\\"True\\\"\\n\",\n    \"''')\\n\",\n    \"\\n\",\n    \"# creating the task object\\n\",\n    \"task_update_session_situation = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID_2,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def_2,\\n\",\n    \")\\n\",\n    \"\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 71,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution_2 = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID_2,\\n\",\n    \"    input={\\n\",\n    \"      \\\"session_id\\\": str(SESSION_ID),\\n\",\n    \"      \\\"user_input\\\": \\\"I'm not really sure. What kind of clubs are you into?\\\",\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Checking execution details and output\\n\",\n    \"\\n\",\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Step: 0 , Type: init\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"session_id\\\": \\\"84f80110-b512-42ba-bf12-9f9e661ca801\\\",\\n\",\n      \"  \\\"user_input\\\": \\\"I'm not really sure. What\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 1 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"agent\\\": \\\"b742413b-5951-468f-8598-a5dd9cc64dca\\\",\\n\",\n      \"  \\\"auto_run_tools\\\": false,\\n\",\n      \"  \\\"context_overflow\\\"\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 2 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"old_situation\\\": \\\"{%- if agent.name -%}\\\\nYou are {{agent.name}}.{{\\\\\\\" \\\\\\\"}}\\\\n{%- endif -%}\\\\n\\\\n{%- \\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 3 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"created_at\\\": \\\"2024-12-18T12:26:39.745720Z\\\",\\n\",\n      \"  \\\"entries\\\": [\\n\",\n      \"    {\\n\",\n      \"      \\\"content\\\": [\\n\",\n      \"        {\\n\",\n      \" \\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 4 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"history\\\": [\\n\",\n      \"    \\\"Hey Rosa, How are you doing?\\\",\\n\",\n      \"    \\\"Hey Hamada! I'm doing great, thanks. How a\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 5 , Type: step\\n\",\n      \"output (truncated):  \\\"SYSTEM MESSAGE:\\\\n\\\\nEngage with Hamada in a friendly and enthusiastic manner, acknowledging their ex\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 6 , Type: finish\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"id\\\": \\\"84f80110-b512-42ba-bf12-9f9e661ca801\\\",\\n\",\n      \"  \\\"jobs\\\": [],\\n\",\n      \"  \\\"updated_at\\\": \\\"2024-12-18T12:26:48\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"execution_transitions = client.executions.transitions.list(\\n\",\n    \"    execution_id=execution_2.id).items\\n\",\n    \"\\n\",\n    \"for index, transition in enumerate(reversed(execution_transitions)):\\n\",\n    \"    print(\\\"Step:\\\", index, \\\", Type:\\\", transition.type)\\n\",\n    \"    print(\\\"output (truncated): \\\", json.dumps(transition.output, indent=2)[:100])\\n\",\n    \"    print(\\\"-\\\" * 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Print the new session situation\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"New situation:\\n\",\n      \"\\n\",\n      \"{%- if agent.name -%}\\n\",\n      \"You are {{agent.name}}.{{\\\" \\\"}}\\n\",\n      \"{%- endif -%}\\n\",\n      \"\\n\",\n      \"{%- if agent.about -%}\\n\",\n      \"About you: {{agent.about}}.{{\\\" \\\"}}\\n\",\n      \"{%- endif -%}\\n\",\n      \"\\n\",\n      \"{%- if user -%}\\n\",\n      \"You are talking to a user\\n\",\n      \"  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n\",\n      \"    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n\",\n      \"  {%- endif -%}\\n\",\n      \"{%- endif -%}\\n\",\n      \"\\n\",\n      \"{{NEWLINE+NEWLINE}}\\n\",\n      \"\\n\",\n      \"{%- if agent.instructions -%}\\n\",\n      \"Instructions:{{NEWLINE}}\\n\",\n      \"  {%- if agent.instructions is string -%}\\n\",\n      \"    {{agent.instructions}}{{NEWLINE}}\\n\",\n      \"  {%- else -%}\\n\",\n      \"    {%- for instruction in agent.instructions -%}\\n\",\n      \"      - {{instruction}}{{NEWLINE}}\\n\",\n      \"    {%- endfor -%}\\n\",\n      \"  {%- endif -%}\\n\",\n      \"  {{NEWLINE}}\\n\",\n      \"{%- endif -%}\\n\",\n      \"\\n\",\n      \"{%- if tools -%}\\n\",\n      \"Tools:{{NEWLINE}}\\n\",\n      \"  {%- for tool in tools -%}\\n\",\n      \"    - {{tool.name + NEWLINE}}\\n\",\n      \"    {%- if tool.description -%}: {{tool.description + NEWLINE}}{%- endif -%}\\n\",\n      \"  {%- endfor -%}\\n\",\n      \"{{NEWLINE+NEWLINE}}\\n\",\n      \"{%- endif -%}\\n\",\n      \"\\n\",\n      \"{%- if docs -%}\\n\",\n      \"Relevant documents:{{NEWLINE}}\\n\",\n      \"  {%- for doc in docs -%}\\n\",\n      \"    {{doc.title}}{{NEWLINE}}\\n\",\n      \"    {%- if doc.content is string -%}\\n\",\n      \"      {{doc.content}}{{NEWLINE}}\\n\",\n      \"    {%- else -%}\\n\",\n      \"      {%- for snippet in doc.content -%}\\n\",\n      \"        {{snippet}}{{NEWLINE}}\\n\",\n      \"      {%- endfor -%}\\n\",\n      \"    {%- endif -%}\\n\",\n      \"    {{\\\"---\\\"}}\\n\",\n      \"  {%- endfor -%}\\n\",\n      \"{%- endif -%}\\n\",\n      \"\\n\",\n      \"SYSTEM MESSAGE:\\n\",\n      \"\\n\",\n      \"Engage with Hamada in a friendly and enthusiastic manner, acknowledging their excitement about the night out. Express interest in their plans and preferences by asking about the types of clubs they enjoy. You might say something like, \\\"That sounds like a fun night ahead! Do you have a preference for a certain type of club, like one with live music or a specific genre of DJ?\\\" This will help to understand their interests better and foster a more engaging conversation.\\n\",\n      \"\\n\",\n      \"Maintain a positive and open tone, offering suggestions if they seem unsure, such as recommending popular local spots or asking if they’re in the mood for something new and different. Encourage Hamada to share more about their favorite past club experiences or what they enjoy most about going out, which can deepen the connection and keep the conversation lively.\\n\",\n      \"\\n\",\n      \"Remember to be adaptable and responsive to Hamada's mood, ensuring they feel supported and understood. Keep the conversation light and enjoyable, focusing on building anticipation for the night out.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"new_situation = client.sessions.get(session_id=SESSION_ID).situation\\n\",\n    \"\\n\",\n    \"print(\\\"New situation:\\\\n\\\")\\n\",\n    \"print(new_situation)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Continue the conversation\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"User: I'm not really sure. What kind of clubs are you into?\\n\",\n      \"Agent: I love clubs with live music or a great DJ spinning some dance tracks. How about you? Any preferences?\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"user_message = \\\"I'm not really sure. What kind of clubs are you into?\\\"\\n\",\n    \"\\n\",\n    \"print(\\\"User:\\\", user_message)\\n\",\n    \"\\n\",\n    \"response = client.sessions.chat(\\n\",\n    \"    session_id=SESSION_ID,\\n\",\n    \"    messages=[\\n\",\n    \"        {\\n\",\n    \"            \\\"role\\\": \\\"user\\\",\\n\",\n    \"            \\\"content\\\": user_message,\\n\",\n    \"        }\\n\",\n    \"    ]\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"print(\\\"Agent:\\\", response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Task 3: Update the user persona (and about section) based on chat history\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Make changes in the conversation to trigger the user persona update\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"User: No, I don't like loud music. I want a club with a chill vibe, maybe some jazz or blues.\\n\",\n      \"Agent: That sounds perfect for a relaxed night out! Have you checked out any jazz clubs in the area? They can have such a cool atmosphere.\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"user_message = \\\"No, I don't like loud music. I want a club with a chill vibe, maybe some jazz or blues.\\\"\\n\",\n    \"\\n\",\n    \"print(\\\"User:\\\", user_message)\\n\",\n    \"\\n\",\n    \"response = client.sessions.chat(\\n\",\n    \"    session_id=SESSION_ID,\\n\",\n    \"    messages=[\\n\",\n    \"        {\\n\",\n    \"            \\\"role\\\": \\\"user\\\",\\n\",\n    \"            \\\"content\\\": user_message,\\n\",\n    \"        }\\n\",\n    \"    ]\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"print(\\\"Agent:\\\", response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"User: Hey Rosa, it's been a while since we last talked. Sorry, but I've been busy moving to San Francisco this week.\\n\",\n      \"Agent: Hey Hamada! No worries at all. Moving is a big deal! How's San Francisco treating you so far?\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"user_message = \\\"Hey Rosa, it's been a while since we last talked. Sorry, but I've been busy moving to San Francisco this week.\\\"\\n\",\n    \"\\n\",\n    \"print(\\\"User:\\\", user_message)\\n\",\n    \"\\n\",\n    \"response = client.sessions.chat(\\n\",\n    \"    session_id=SESSION_ID,\\n\",\n    \"    messages=[\\n\",\n    \"        {\\n\",\n    \"            \\\"role\\\": \\\"user\\\",\\n\",\n    \"            \\\"content\\\": user_message,\\n\",\n    \"        }\\n\",\n    \"    ]\\n\",\n    \")\\n\",\n    \"\\n\",\n    \"print(\\\"Agent:\\\", response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# The profiler workflow to update the user persona\\n\",\n    \"task_def_3 = yaml.safe_load(f'''\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\\n\",\n    \"name: generate_update_persona\\n\",\n    \"description: Update the user persona based on the session chat history and the user data\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### INPUT SCHEMA #######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    user_ppid:\\n\",\n    \"      type: string\\n\",\n    \"    session_id:\\n\",\n    \"      type: string\\n\",\n    \"  required:\\n\",\n    \"    - user_ppid\\n\",\n    \"    - session_id\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"################### TOOLS ##############################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Define the tools that are going to be used in the workflow\\n\",\n    \"tools:\\n\",\n    \"- name: get_user_from_ppid\\n\",\n    \"  type: system\\n\",\n    \"  description: Get a user from the user ppid\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    operation: list\\n\",\n    \"  \\n\",\n    \"- name: list_user_docs\\n\",\n    \"  type: system\\n\",\n    \"  description: List the user docs\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: list\\n\",\n    \"\\n\",\n    \"- name: create_user_doc\\n\",\n    \"  description: Create a user doc\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: create\\n\",\n    \"\\n\",\n    \"- name: history_julep_session\\n\",\n    \"  description: List the session history\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: session\\n\",\n    \"    operation: history\\n\",\n    \"\\n\",\n    \"- name: update_user\\n\",\n    \"  description: Update the user information\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: user\\n\",\n    \"    operation: update\\n\",\n    \"\\n\",\n    \"                            \\n\",\n    \"########################################################\\n\",\n    \"################### MAIN WORKFLOW ######################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"# Step 0: Get the session history\\n\",\n    \"- tool: history_julep_session\\n\",\n    \"  arguments:\\n\",\n    \"    session_id: $ steps[0].input.session_id\\n\",\n    \"\\n\",\n    \"# Step 1: Evaluate the session history\\n\",\n    \"- evaluate:\\n\",\n    \"    session_chat_history: $ list(entry.content[0].text for entry in _.entries)\\n\",\n    \"\\n\",\n    \"# Step 2: Get the user from the ppid using metadata_filter (returns a list)\\n\",\n    \"- tool: get_user_from_ppid\\n\",\n    \"  arguments:\\n\",\n    \"    limit: \\\"1\\\"\\n\",\n    \"    sort_by: created_at\\n\",\n    \"    direction: desc\\n\",\n    \"    metadata_filter:\\n\",\n    \"      ppid: $ steps[0].input.user_ppid\\n\",\n    \"\\n\",\n    \"# Step 3: Unwrap the list to get the user\\n\",\n    \"- evaluate:\\n\",\n    \"    user: _[0]\\n\",\n    \"\\n\",\n    \"# Step 4: Get the user persona document using metadata_filter (returns a list)\\n\",\n    \"- tool: list_user_docs\\n\",\n    \"  arguments:\\n\",\n    \"    user_id: $ _['user']['id']\\n\",\n    \"    limit: \\\"1\\\"\\n\",\n    \"    sort_by: created_at\\n\",\n    \"    direction: desc\\n\",\n    \"\\n\",\n    \"# Step 5: Get the doc if it exists\\n\",\n    \"- evaluate:\\n\",\n    \"    doc: $ _[0] if len(_) > 0 else {{}}\\n\",\n    \"\\n\",\n    \"# Step 6: Get the user persona from the doc if the doc exists\\n\",\n    \"- evaluate:\\n\",\n    \"    user_persona: $ _['doc'].get('content', \\\"\\\")\\n\",\n    \"\\n\",\n    \"# Step 7: Create the user persona using the prompt step\\n\",\n    \"- prompt:\\n\",\n    \"    - role: user\\n\",\n    \"      content: |\\n\",\n    \"        $ f\\\"\\\"\\\"\\n\",\n    \"        You are an expert at updating detailed user personas for a user.\\n\",\n    \"        Your task is to update the existing user persona based on the provided user data, session chat history, and past user persona.\\n\",\n    \"        Focus on identifying and highlighting the changes in the user's preferences and experiences.\\n\",\n    \"\\n\",\n    \"        #Input#\\n\",\n    \"        Following is the user data:\\n\",\n    \"        User details:\\n\",\n    \"        {{steps[3].output.user['metadata']}}\\n\",\n    \"                        \\n\",\n    \"        Session chat history:\\n\",\n    \"        {{steps[1].output.session_chat_history}}\\n\",\n    \"        \\n\",\n    \"        User past persona:\\n\",\n    \"        {{_.user_persona}}\\n\",\n    \"\\n\",\n    \"        #Task#\\n\",\n    \"        Carefully review the user data and update the existing user persona by focusing on the following sections:\\n\",\n    \"\\n\",\n    \"        1. Demographics\\n\",\n    \"        2. Psychographics\\n\",\n    \"        3. Content Preferences\\n\",\n    \"\\n\",\n    \"        For each section, follow these processes:\\n\",\n    \"\\n\",\n    \"        1. Demographics:\\n\",\n    \"          - Update the user's age, gender, and location if there are any changes.\\n\",\n    \"          - Make reasonable assumptions for any missing information based on other details provided.\\n\",\n    \"\\n\",\n    \"        2. Psychographics:\\n\",\n    \"          - Update the description of the user's personality traits if there are any changes.\\n\",\n    \"          - Modify the interest graph to reflect any new primary and secondary interests based on the session chat history and other relevant areas.\\n\",\n    \"\\n\",\n    \"        3. Content Preferences:\\n\",\n    \"          - Update the list of the user's thematic interests if there are any changes.\\n\",\n    \"          - Specify any new content categories that would appeal to this user.\\n\",\n    \"          - Identify any new entity preferences (e.g., specific topics, authors, or genres).\\n\",\n    \"          - Update the user's engagement level with various content types if there are any changes.\\n\",\n    \"          - Highlight any new correlations between the user's interests in various topics and entities.\\n\",\n    \"          - Update the user's content needs and expectations if there are any changes.\\n\",\n    \"\\n\",\n    \"        #Instructions#\\n\",\n    \"\\n\",\n    \"        When updating the user persona:\\n\",\n    \"        - Be specific and concise.\\n\",\n    \"        - Make logical inferences based on the given information.\\n\",\n    \"        - Ensure consistency throughout the persona.\\n\",\n    \"        - Use bullet points or short paragraphs for easy readability.\\n\",\n    \"\\n\",\n    \"        Format your response as follows:\\n\",\n    \"        - Use headers for each main section (Demographics, Psychographics, Content Preferences).\\n\",\n    \"        - Use subheaders for subsections within Content Preferences.\\n\",\n    \"        - Include a brief introduction and conclusion.\\n\",\n    \"\\n\",\n    \"        Present the updated user persona within <user_persona> tags, highlighting the changes. Begin with a concise introduction, then proceed with the sections as outlined above.\\n\",\n    \"        Your work will be evaluated for comprehensive and detailed updates to the persona.\\n\",\n    \"        \\\"\\\"\\\"\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 8: Create a new persona document\\n\",\n    \"- tool: create_user_doc\\n\",\n    \"  arguments:\\n\",\n    \"    user_id: $ steps[3].output.user['id']\\n\",\n    \"    data:\\n\",\n    \"      title: User Persona\\n\",\n    \"      content: $ _\\n\",\n    \"\\n\",\n    \"# Step 9: Update the about section of the user with the new persona\\n\",\n    \"- tool: update_user\\n\",\n    \"  arguments:\\n\",\n    \"    user_id: $ steps[3].output.user['id']\\n\",\n    \"    name: $ steps[3].output.user['name']\\n\",\n    \"    about: $ steps[7]\\n\",\n    \"''')\\n\",\n    \"\\n\",\n    \"# creating the task object\\n\",\n    \"task_user_persona = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID_3,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def_3,\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution_3 = client.executions.create(\\n\",\n    \"    task_id=TASK_UUID_3,\\n\",\n    \"    input={\\n\",\n    \"      \\\"user_ppid\\\": USER_PPID,\\n\",\n    \"      \\\"session_id\\\": SESSION_ID,\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Checking execution details and output\\n\",\n    \"\\n\",\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 21,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Step: 0 , Type: init\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"session_id\\\": \\\"84f80110-b512-42ba-bf12-9f9e661ca801\\\",\\n\",\n      \"  \\\"user_ppid\\\": \\\"65dhr171124554182682517a4a\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 1 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"created_at\\\": \\\"2024-12-18T12:29:25.007520Z\\\",\\n\",\n      \"  \\\"entries\\\": [\\n\",\n      \"    {\\n\",\n      \"      \\\"content\\\": [\\n\",\n      \"        {\\n\",\n      \" \\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 2 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"session_chat_history\\\": [\\n\",\n      \"    \\\"Hey Rosa, How are you doing?\\\",\\n\",\n      \"    \\\"Hey Hamada! I'm doing great, \\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 3 , Type: step\\n\",\n      \"output (truncated):  [\\n\",\n      \"  {\\n\",\n      \"    \\\"about\\\": \\\"Julep AI developer who lives in New York. Loves to code and build things. Loves \\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 4 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"user\\\": {\\n\",\n      \"    \\\"about\\\": \\\"Julep AI developer who lives in New York. Loves to code and build things\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 5 , Type: step\\n\",\n      \"output (truncated):  []\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 6 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"doc\\\": {}\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 7 , Type: step\\n\",\n      \"output (truncated):  {\\n\",\n      \"  \\\"user_persona\\\": \\\"\\\"\\n\",\n      \"}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Step: 8 , Type: step\\n\",\n      \"output (truncated):  \\\"<user_persona>\\\\n\\\\n**Introduction:**\\\\n\\\\nThis updated user persona reflects the latest changes in the\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"execution_transitions = client.executions.transitions.list(\\n\",\n    \"    execution_id=execution_3.id).items\\n\",\n    \"\\n\",\n    \"for index, transition in enumerate(reversed(execution_transitions)):\\n\",\n    \"    print(\\\"Step:\\\", index, \\\", Type:\\\", transition.type)\\n\",\n    \"    print(\\\"output (truncated): \\\", json.dumps(transition.output, indent=2)[:100])\\n\",\n    \"    print(\\\"-\\\" * 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 25,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"New about:\\n\",\n      \"\\n\",\n      \"<user_persona>\\n\",\n      \"\\n\",\n      \"**Introduction:**\\n\",\n      \"\\n\",\n      \"This updated user persona reflects the latest changes in the user's demographics, psychographics, and content preferences based on the most recent user data and session chat history. The user, Hamada, has experienced a significant change in location, which may influence his interests and preferences.\\n\",\n      \"\\n\",\n      \"**Demographics:**\\n\",\n      \"\\n\",\n      \"- **Age:** 27\\n\",\n      \"- **Gender:** Male\\n\",\n      \"- **Location:** Updated from New York to San Francisco\\n\",\n      \"\\n\",\n      \"**Psychographics:**\\n\",\n      \"\\n\",\n      \"- **Personality Traits:**\\n\",\n      \"  - Hamada appears to be sociable and enjoys spending time with friends. He is open to exploring new places and experiences, as indicated by his willingness to go out and try different clubs.\\n\",\n      \"  \\n\",\n      \"- **Interest Graph:**\\n\",\n      \"  - **Primary Interests:**\\n\",\n      \"    - Socializing in relaxed environments\\n\",\n      \"    - Exploring new cities and local culture\\n\",\n      \"  - **Secondary Interests:**\\n\",\n      \"    - Jazz and blues music\\n\",\n      \"    - Chill and laid-back nightlife\\n\",\n      \"\\n\",\n      \"**Content Preferences:**\\n\",\n      \"\\n\",\n      \"- **Thematic Interests:**\\n\",\n      \"  - Nightlife and social events in San Francisco\\n\",\n      \"  - Music genres like jazz and blues\\n\",\n      \"\\n\",\n      \"- **Content Categories:**\\n\",\n      \"  - Local event guides and reviews for San Francisco\\n\",\n      \"  - Music recommendations and playlists featuring jazz and blues\\n\",\n      \"\\n\",\n      \"- **Entity Preferences:**\\n\",\n      \"  - Jazz and blues artists\\n\",\n      \"  - San Francisco nightlife venues with a relaxed vibe\\n\",\n      \"\\n\",\n      \"- **Engagement Level:**\\n\",\n      \"  - Likely to engage with content that provides insights into the local culture and music scene\\n\",\n      \"  - Interested in recommendations for social activities and venues\\n\",\n      \"\\n\",\n      \"- **Correlations:**\\n\",\n      \"  - Increased interest in content that combines social activities with music and cultural exploration\\n\",\n      \"  - Preference for venues and events that offer a chill atmosphere\\n\",\n      \"\\n\",\n      \"- **Content Needs and Expectations:**\\n\",\n      \"  - Looking for information and recommendations that help navigate the social and cultural landscape of San Francisco\\n\",\n      \"  - Expecting content that aligns with his interest in music and relaxed social settings\\n\",\n      \"\\n\",\n      \"**Conclusion:**\\n\",\n      \"\\n\",\n      \"Hamada's recent move to San Francisco has shifted his focus towards exploring the local culture and social scene, with a particular interest in venues that offer a relaxed atmosphere. His content preferences now reflect a stronger inclination towards jazz and blues music, as well as events that combine socializing with cultural experiences.\\n\",\n      \"\\n\",\n      \"</user_persona>\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"about_user = client.users.get(user_id=USER_ID).about\\n\",\n    \"\\n\",\n    \"print(\\\"New about:\\\\n\\\")\\n\",\n    \"print(about_user)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### The user persona is also added as a doc to the user\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 28,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"User docs: \\n\",\n      \"<user_persona>\\n\",\n      \"\\n\",\n      \"**Introduction:**\\n\",\n      \"\\n\",\n      \"This updated user persona reflects the latest changes in the user's demographics, psychographics, and content preferences based on the most recent user data and session chat history. The user, Hamada, has experienced a significant change in location, which may influence his interests and preferences.\\n\",\n      \"\\n\",\n      \"**Demographics:**\\n\",\n      \"\\n\",\n      \"- **Age:** 27\\n\",\n      \"- **Gender:** Male\\n\",\n      \"- **Location:** Updated from New York to San Francisco\\n\",\n      \"\\n\",\n      \"**Psychographics:**\\n\",\n      \"\\n\",\n      \"- **Personality Traits:**\\n\",\n      \"  - Hamada appears to be sociable and enjoys spending time with friends. He is open to exploring new places and experiences, as indicated by his willingness to go out and try different clubs.\\n\",\n      \"  \\n\",\n      \"- **Interest Graph:**\\n\",\n      \"  - **Primary Interests:**\\n\",\n      \"    - Socializing in relaxed environments\\n\",\n      \"    - Exploring new cities and local culture\\n\",\n      \"  - **Secondary Interests:**\\n\",\n      \"    - Jazz and blues music\\n\",\n      \"    - Chill and laid-back nightlife\\n\",\n      \"\\n\",\n      \"**Content Preferences:**\\n\",\n      \"\\n\",\n      \"- **Thematic Interests:**\\n\",\n      \"  - Nightlife and social events in San Francisco\\n\",\n      \"  - Music genres like jazz and blues\\n\",\n      \"\\n\",\n      \"- **Content Categories:**\\n\",\n      \"  - Local event guides and reviews for San Francisco\\n\",\n      \"  - Music recommendations and playlists featuring jazz and blues\\n\",\n      \"\\n\",\n      \"- **Entity Preferences:**\\n\",\n      \"  - Jazz and blues artists\\n\",\n      \"  - San Francisco nightlife venues with a relaxed vibe\\n\",\n      \"\\n\",\n      \"- **Engagement Level:**\\n\",\n      \"  - Likely to engage with content that provides insights into the local culture and music scene\\n\",\n      \"  - Interested in recommendations for social activities and venues\\n\",\n      \"\\n\",\n      \"- **Correlations:**\\n\",\n      \"  - Increased interest in content that combines social activities with music and cultural exploration\\n\",\n      \"  - Preference for venues and events that offer a chill atmosphere\\n\",\n      \"\\n\",\n      \"- **Content Needs and Expectations:**\\n\",\n      \"  - Looking for information and recommendations that help navigate the social and cultural landscape of San Francisco\\n\",\n      \"  - Expecting content that aligns with his interest in music and relaxed social settings\\n\",\n      \"\\n\",\n      \"**Conclusion:**\\n\",\n      \"\\n\",\n      \"Hamada's recent move to San Francisco has shifted his focus towards exploring the local culture and social scene, with a particular interest in venues that offer a relaxed atmosphere. His content preferences now reflect a stronger inclination towards jazz and blues music, as well as events that combine socializing with cultural experiences.\\n\",\n      \"\\n\",\n      \"</user_persona>\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"persona_doc = client.users.docs.list(user_id=USER_ID).items\\n\",\n    \"\\n\",\n    \"print(\\\"User docs: \\\")\\n\",\n    \"print(persona_doc)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"ai\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/10-reel-generator.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<div align=\\\"center\\\" id=\\\"top\\\">\\n\",\n    \"<img src=\\\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\\\" alt=\\\"julep\\\" />\\n\",\n    \"\\n\",\n    \"<br>\\n\",\n    \"  <p>\\n\",\n    \"    <a href=\\\"https://dashboard.julep.ai\\\">\\n\",\n    \"      <img src=\\\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\\\" alt=\\\"Get API Key\\\" height=\\\"28\\\">\\n\",\n    \"    </a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://docs.julep.ai\\\">\\n\",\n    \"      <img src=\\\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\\\" alt=\\\"Documentation\\\" height=\\\"28\\\">\\n\",\n    \"    </a>\\n\",\n    \"  </p>\\n\",\n    \"  <p>\\n\",\n    \"   <a href=\\\"https://www.npmjs.com/package/@julep/sdk\\\"><img src=\\\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\\\" alt=\\\"NPM Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://pypi.org/project/julep\\\"><img src=\\\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\\\" alt=\\\"PyPI - Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://hub.docker.com/u/julepai\\\"><img src=\\\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\\\" alt=\\\"Docker Image Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://choosealicense.com/licenses/apache/\\\"><img src=\\\"https://img.shields.io/github/license/julep-ai/julep\\\" alt=\\\"GitHub License\\\" height=\\\"28\\\"></a>\\n\",\n    \"  </p>\\n\",\n    \"  \\n\",\n    \"  <h3>\\n\",\n    \"    <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\">Discord</a>\\n\",\n    \"    ·\\n\",\n    \"    <a href=\\\"https://x.com/julep_ai\\\" rel=\\\"dofollow\\\">𝕏</a>\\n\",\n    \"    ·\\n\",\n    \"    <a href=\\\"https://www.linkedin.com/company/julep-ai\\\" rel=\\\"dofollow\\\">LinkedIn</a>\\n\",\n    \"  </h3>\\n\",\n    \"</div>\\n\",\n    \"\\n\",\n    \"## Task Definition: Julep Reel Generator\\n\",\n    \" \\n\",\n    \"### Overview\\n\",\n    \" \\n\",\n    \"This task generates viral social media reels by analyzing trending content on Instagram and creating engaging video content. It combines trend analysis, content generation, and video production capabilities.\\n\",\n    \" \\n\",\n    \"### Task Tools:\\n\",\n    \" \\n\",\n    \"- **api_tool_call**: An `api_call` type tool that fetches trending reels from Instagram\\n\",\n    \"- **get_page**: An `api_call` type tool that retrieves webpage content\\n\",\n    \"- **get_replicate_model**: An `api_call` type tool for generating images and audio\\n\",\n    \"- **get_replicate_url**: An `api_call` type tool for retrieving replicate urls\\n\",\n    \"- **get_hooks_doc**: A `system` type tool for accessing hook templates\\n\",\n    \"- **create_reel**: An `api_call` type tool for video creation\\n\",\n    \"- **get_reel_url**: An `api_call` type tool for retrieving video URLs\\n\",\n    \" \\n\",\n    \"### Task Input:\\n\",\n    \" \\n\",\n    \"A dictionary containing:\\n\",\n    \"- **topic**: The topic to generate hooks and content for\\n\",\n    \" \\n\",\n    \"### Task Output:\\n\",\n    \" \\n\",\n    \"A generated social media reel package with:\\n\",\n    \"- Video URL\\n\",\n    \"- Social media caption and title\\n\",\n    \"- Scene descriptions and narration\\n\",\n    \"- Generated images and audio\\n\",\n    \" \\n\",\n    \"### Task Flow\\n\",\n    \" \\n\",\n    \"1. **Trend Analysis**: Fetch and analyze trending Instagram reels\\n\",\n    \"2. **Content Generation**: Create engaging video script and scenes\\n\",\n    \"3. **Asset Creation**: Generate images and audio for each scene\\n\",\n    \"4. **Video Production**: Combine assets into final video reel\\n\",\n    \"5. **Hook Generation**: Create viral social media copy\\n\",\n    \" \\n\",\n    \"```plaintext\\n\",\n    \" +------------+     +-------------+     +------------+     +------------+\\n\",\n    \" |  Instagram |     |   Content   |     |   Asset    |     |   Video    |\\n\",\n    \" |   Trends   | --> | Generation  | --> | Generation | --> | Production |\\n\",\n    \" |            |     |             |     |            |     |            |\\n\",\n    \" +------------+     +-------------+     +------------+     +------------+\\n\",\n    \"       |                |                    |                  |\\n\",\n    \"       |                |                    |                  |\\n\",\n    \"       v                v                    v                  v\\n\",\n    \"   Analyze         Create video        Generate images    Produce final\\n\",\n    \"   trending        script and          and audio for     video with\\n\",\n    \"   content         scenes              each scene        viral hooks\\n\",\n    \"```\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Implementation\\n\",\n    \"\\n\",\n    \"To recreate the notebook and see the code implementation for this task, you can access the Google Colab notebook using the link below:\\n\",\n    \"\\n\",\n    \"<a target=\\\"_blank\\\" href=\\\"https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/10-reel-generator.ipynb\\\">\\n\",\n    \"  <img src=\\\"https://colab.research.google.com/assets/colab-badge.svg\\\" alt=\\\"Open In Colab\\\"/>\\n\",\n    \"</a>\\n\",\n    \"\\n\",\n    \"### Additional Information\\n\",\n    \"\\n\",\n    \"For more details about the task or if you have any questions, please don't hesitate to contact the author:\\n\",\n    \"\\n\",\n    \"**Author:** Julep AI  \\n\",\n    \"**Contact:** [hey@julep.ai](mailto:hey@julep.ai) or  <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\">Discord</a>\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"Installing the Julep Client\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install julep\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"#### NOTE:\\n\",\n    \"\\n\",\n    \"- UUIDs are generated for both the agent and task to uniquely identify them within the system.\\n\",\n    \"- Once created, these UUIDs should remain unchanged for simplicity.\\n\",\n    \"- Altering a UUID will result in the system treating it as a new agent or task.\\n\",\n    \"- If a UUID is changed, the original agent or task will continue to exist in the system alongside the new one.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Global UUID is generated for agent and task\\n\",\n    \"import uuid\\n\",\n    \"\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4()\\n\",\n    \"\\n\",\n    \"print(f'AGENT_UUID: {AGENT_UUID}')\\n\",\n    \"print(f'TASK_UUID: {TASK_UUID}')\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating Julep Client with the API Key\\n\",\n    \"\\n\",\n    \"Get you API key from [here](https://dashboard.julep.ai/)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 2,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"\\n\",\n    \"# Create a client\\n\",\n    \"JULEP_API_KEY = \\\"YOU_API_KEY\\\"\\n\",\n    \"\\n\",\n    \"client = Client(api_key=JULEP_API_KEY,environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 15,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"#  Creating an agent for handling persistent sessions\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=\\\"AI Agent for Reels\\\",\\n\",\n    \"    about=\\\"An AI agent specialized in generating reels\\\",\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"docs\\\"\\n\",\n    \"\\n\",\n    \"Document im Julep is a vector database that can be used to store and retrieve information.\\n\",\n    \"\\n\",\n    \"To learn more about the Document, please refer to the Document section in [Julep Concepts](https://docs.julep.ai/docs/concepts/docs).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"hooks_data = [\\n\",\n    \"    {\\\"categories\\\": \\\"Price-Focused\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Save both time and money with [product].\\\",\\n\",\n    \"         \\\"Save both time and money on [task].\\\",\\n\",\n    \"         \\\"Is [product] worth the price? Let’s find out!\\\",\\n\",\n    \"         \\\"Why is it challenging and costly to find a good [product category]?\\\",\\n\",\n    \"         \\\"Searching for an affordable [product type]? Check this out!\\\",\\n\",\n    \"         \\\"How to locate an affordable [service].\\\",\\n\",\n    \"         \\\"I can’t believe this costs only [price].\\\",\\n\",\n    \"         \\\"Don't waste your money on [X]; instead buy [X].\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Informative\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"What’s inside [product]?\\\",\\n\",\n    \"         \\\"Common questions I get about [product].\\\",\\n\",\n    \"         \\\"Now you can get X delivered right to your door.\\\",\\n\",\n    \"         \\\"Thinking of trying [product type]?\\\",\\n\",\n    \"         \\\"Allow me to introduce you to [product].\\\",\\n\",\n    \"         \\\"[category] Tip #X.\\\",\\n\",\n    \"         \\\"Here’s how to achieve [value prop].\\\",\\n\",\n    \"         \\\"I know this sounds unbelievable, but…\\\",\\n\",\n    \"         \\\"How to get X done in just 10 minutes.\\\",\\n\",\n    \"         \\\"How to find time for X.\\\",\\n\",\n    \"         \\\"Here’s my biggest life hack for X.\\\",\\n\",\n    \"         \\\"Add more [value prop] to your day.\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Versus the Alternative (or Competition)\\\",\\n\",\n    \"        \\\"content\\\": [\\\"Before you try [product type], watch this first.\\\",\\n\",\n    \"                    \\\"Hate [the worse alternative]? Give this a try!\\\",\\n\",\n    \"                    \\\"Thinking about [worse alternative]?\\\",\\n\",\n    \"                    \\\"Instead of [worse alternative], try this.\\\",\\n\",\n    \"                    \\\"Still using [the worse alternative to the product]? Watch this.\\\",\\n\",\n    \"                    \\\"Something that’s always annoyed me about X.\\\",\\n\",\n    \"                    \\\"Don’t buy X that doesn’t work. Try this instead.\\\",\\n\",\n    \"                    \\\"I tested every [product category] so you don’t have to: here’s what I found.\\\",\\n\",\n    \"                    \\\"Stop doing [worse alternative]. Try [product] instead.\\\",\\n\",\n    \"                    \\\"Dealing with [negative experience]? I used [product] to help.\\\",\\n\",\n    \"                    \\\"Why millennials are switching to [product].\\\",\\n\",\n    \"                    \\\"How to do X without [worse alternative].\\\",\\n\",\n    \"                    \\\"I only get my [product category] from [brand name].\\\",\\n\",\n    \"                    \\\"I no longer buy my [product category] from [worse alternative].\\\",\\n\",\n    \"                    \\\"[Worse alternative] can be difficult to deal with.\\\",\\n\",\n    \"                    \\\"Your new X alternative.\\\",\\n\",\n    \"                    \\\"[value prop] without the [negative side effect].\\\",\\n\",\n    \"                    \\\"I kept experiencing [pain point], so I tried this instead!\\\",\\n\",\n    \"                    \\\"If you have [pain point] — you need to see this!\\\",\\n\",\n    \"                    \\\"I wanted to stop doing X, so I tried this instead.\\\",\\n\",\n    \"                    \\\"Your X isn't [adverb]; you just need X.\\\",\\n\",\n    \"                    \\\"My secret to [popular trend] revealed!\\\"\\n\",\n    \"                    ]},\\n\",\n    \"    {\\\"categories\\\": \\\"User Experience\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Guys, it’s here…\\\",\\n\",\n    \"         \\\"What I ordered vs. what I received.\\\",\\n\",\n    \"         \\\"[Product] unboxing.\\\",\\n\",\n    \"         \\\"Let’s create X with [product].\\\",\\n\",\n    \"         \\\"POV: You tried [product].\\\",\\n\",\n    \"         \\\"A day in the life of X.\\\",\\n\",\n    \"         \\\"Get ready with me to do [task].\\\",\\n\",\n    \"         \\\"“Put a finger down” [product category] edition.\\\",\\n\",\n    \"         \\\"Trying home remedies for X.\\\",\\n\",\n    \"         \\\"[Product category] ASMR.\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Responding to Hype\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"TikTok made me try [product].\\\",\\n\",\n    \"         \\\"Things TikTok made me try #13.\\\",\\n\",\n    \"         \\\"This [product type] is going viral on [social media platform].\\\",\\n\",\n    \"         \\\"I tested the viral [product type] to see if it lives up to the hype.\\\",\\n\",\n    \"         \\\"This [product type] has over 5,000 reviews… let’s see if it’s worth it.\\\",\\n\",\n    \"         \\\"[Publication] can’t stop raving about us.\\\",\\n\",\n    \"         \\\"It’s so good it sold out in a week.\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"It’s Easier\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Are you [accomplishing the goal optimally]?\\\",\\n\",\n    \"         \\\"Life Hack: Try [product] for [pain point].\\\",\\n\",\n    \"         \\\"My go-to [product] for [pain point].\\\",\\n\",\n    \"         \\\"How to easily [task].\\\",\\n\",\n    \"         \\\"[Task] has never been easier than with [product].\\\",\\n\",\n    \"         \\\"My favorite [product] to make [hard task] simpler.\\\",\\n\",\n    \"         \\\"Here’s my top product for [task].\\\",\\n\",\n    \"         \\\"Struggling to do [task]?\\\",\\n\",\n    \"         \\\"I’ve been struggling with [task], but [product] has really helped.\\\",\\n\",\n    \"         \\\"Easiest way to do [task]?\\\",\\n\",\n    \"         \\\"Make your week easier.\\\",\\n\",\n    \"         \\\"Why adults avoid [task]… [product] makes it easy.\\\",\\n\",\n    \"         \\\"[Product] made [task] so much easier! You’ve got to try it.\\\",\\n\",\n    \"         \\\"When I use [product], it’s one less thing I have to worry about.\\\",\\n\",\n    \"         \\\"How to do [X] in half the time.\\\",\\n\",\n    \"         \\\"This trick/hack/method will save you hours...\\\",\\n\",\n    \"         \\\"Easy hack to [X]...\\\",\\n\",\n    \"         \\\"Simple [X] that will make you [X].\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Lists\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"5 Ways [product] Helps with [pain point].\\\",\\n\",\n    \"         \\\"3 reasons to buy [product].\\\",\\n\",\n    \"         \\\"3 reasons to try [service].\\\",\\n\",\n    \"         \\\"Get [value prop] in 3 steps.\\\",\\n\",\n    \"         \\\"Here are 3 ways [worse alternative] affects your life.\\\",\\n\",\n    \"         \\\"5 things you didn’t know about [topic].\\\",\\n\",\n    \"         \\\"The ultimate [X] checklist to [action].\\\",\\n\",\n    \"         \\\"Reasons why [X].\\\",\\n\",\n    \"         \\\"Here are the 3 best ways to [X].\\\",\\n\",\n    \"         \\\"Here are [X] mistakes you might be making...\\\",\\n\",\n    \"         \\\"If you want [X], do these 5 things...\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"The Best\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"The internet’s #1 [product type].\\\",\\n\",\n    \"         \\\"The best way to [accomplish the goal of the product].\\\",\\n\",\n    \"         \\\"What makes [the product type] the best?\\\",\\n\",\n    \"         \\\"My skin has never looked better with [product].\\\",\\n\",\n    \"         \\\"The best way to find X in 2022.\\\",\\n\",\n    \"         \\\"[Product] changed how I do [task], and I’m never going back.\\\",\\n\",\n    \"         \\\"Why is [product] so good though?\\\",\\n\",\n    \"         \\\"After hours of researching, I found the best [product type] for [task].\\\",\\n\",\n    \"         \\\"I found the best [product category] for [value prop].\\\",\\n\",\n    \"         \\\"This is going to blow your mind.\\\",\\n\",\n    \"         \\\"How I got [X] in 24 hours.\\\",\\n\",\n    \"         \\\"Must-have [products] for [X].\\\",\\n\",\n    \"         \\\"The best [target audience] know something that you don't.\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Other Video Hooks that Address Viewers Directly\\\",\\n\",\n    \"        \\\"content\\\": [\\n\",\n    \"            \\\"Hey, [customer type], you’ve got to try this.\\\",\\n\",\n    \"            \\\"People looking for [product category], stop scrolling.\\\",\\n\",\n    \"            \\\"Wait, have you tried X?\\\",\\n\",\n    \"            \\\"Take control of your X with [product].\\\",\\n\",\n    \"            \\\"Imagine if X was also X.\\\",\\n\",\n    \"            \\\"Watch this if you X.\\\"\\n\",\n    \"        ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Facts & Stats\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"PSA: [statement about product category].\\\",\\n\",\n    \"         \\\"Did you know? [fact about product category].\\\",\\n\",\n    \"         \\\"I just found out [fact about product category].\\\",\\n\",\n    \"         \\\"Are you one of [fact about product category] people who do X?\\\",\\n\",\n    \"         \\\"New customers get [discount].\\\",\\n\",\n    \"         \\\"Take [discount] off when you try [product].\\\",\\n\",\n    \"         \\\"I didn’t know X could be related to X.\\\",\\n\",\n    \"         \\\"Why is it important to [do product-related task]?\\\",\\n\",\n    \"         \\\"99\\\\% of your [target audience] don't. To be the 1% you need to [X].\\\",\\n\",\n    \"         \\\"This [product] is the secret to [X].\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Curiosity & Engagement\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Is there anything worse than [X]?\\\",\\n\",\n    \"         \\\"I will never [adjective] from learning this.\\\",\\n\",\n    \"         \\\"X people start scrolling. I have the perfect [X] for you.\\\",\\n\",\n    \"         \\\"Here's a challenge for you...\\\",\\n\",\n    \"         \\\"There's nothing more painful than [X].\\\",\\n\",\n    \"         \\\"What would you do if...\\\",\\n\",\n    \"         \\\"Watch till the end…\\\"\\n\",\n    \"     ]},\\n\",\n    \"    {\\\"categories\\\": \\\"Negative Hooks\\\",\\n\",\n    \"     \\\"content\\\": [\\n\",\n    \"         \\\"Why you're failing at [activity].\\\",\\n\",\n    \"         \\\"The worst mistake you can make in [subject].\\\",\\n\",\n    \"         \\\"Avoid these common pitfalls in [topic].\\\",\\n\",\n    \"         \\\"The dark side of [popular trend].\\\",\\n\",\n    \"         \\\"Don't be fooled by [misconception].\\\",\\n\",\n    \"         \\\"Why [common practice] is ruining your [outcome].\\\",\\n\",\n    \"         \\\"What no one tells you about [issue].\\\",\\n\",\n    \"         \\\"The hidden dangers of [activity].\\\",\\n\",\n    \"         \\\"Stop doing this if you want to succeed in [field].\\\",\\n\",\n    \"         \\\"The ugly truth about [common belief].\\\",\\n\",\n    \"         \\\"Why [habit] is wasting your time.\\\",\\n\",\n    \"         \\\"Exposing the myths about [topic].\\\",\\n\",\n    \"         \\\"The biggest regret you'll have in [situation].\\\",\\n\",\n    \"         \\\"How [action] is destroying your [goal].\\\",\\n\",\n    \"         \\\"The shocking reality of [popular topic].\\\",\\n\",\n    \"         \\\"Why [trend] is a bad idea.\\\",\\n\",\n    \"         \\\"The real reason you're not seeing results in [field].\\\",\\n\",\n    \"         \\\"The downside of [seemingly positive aspect].\\\",\\n\",\n    \"         \\\"What you should never do in [activity].\\\",\\n\",\n    \"         \\\"Why [common advice] is actually harmful.\\\"\\n\",\n    \"     ]}\\n\",\n    \"]\\n\",\n    \"\\n\",\n    \"hooks_doc_content = []\\n\",\n    \"\\n\",\n    \"for category in hooks_data:\\n\",\n    \"    hooks_doc_content.extend(category['content'])\\n\",\n    \"\\n\",\n    \"doc = client.agents.docs.create(\\n\",\n    \"    agent_id=AGENT_UUID, title=\\\"hooks_doc\\\", content=hooks_doc_content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"print(f'The length of the doc is {len(client.agents.docs.list(agent_id=AGENT_UUID).items)}')\\n\",\n    \"for doc in client.agents.docs.list(agent_id=AGENT_UUID):\\n\",\n    \"    print(doc.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 16,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"RAPID_API_KEY = \\\"YOUR_RAPID_API_KEY\\\"\\n\",\n    \"RAPID_API_HOST = \\\"YOUR_RAPID_API_HOST\\\"\\n\",\n    \"JINA_API_KEY = \\\"YOUR_JINA_API_KEY\\\"\\n\",\n    \"REPLICATE_API_KEY = \\\"YOUR_REPLICATE_API_KEY\\\"\\n\",\n    \"SHOTSTACK_API_KEY = \\\"YOUR_SHOTSTACK_API_KEY\\\"\\n\",\n    \"\\n\",\n    \"#  Defining a Task\\n\",\n    \"import yaml\\n\",\n    \"\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"\\n\",\n    \"# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create_task_request.json\\n\",\n    \"name: Julep Reel Generator\\n\",\n    \"description: This gets the trending reels from Instagram and generates reels.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### INPUT SCHEMA ###################\\n\",\n    \"########################################################\\n\",\n    \"input_schema:\\n\",\n    \"  type: object\\n\",\n    \"  properties:\\n\",\n    \"    topic:\\n\",\n    \"      type: string\\n\",\n    \"      description: The topic to generate hooks for.\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### TOOLS ##########################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"# Defining the tools that the task will use in this workflow\\n\",\n    \"tools:\\n\",\n    \"- name: api_tool_call\\n\",\n    \"  type: api_call\\n\",\n    \"  api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: \\\"https://instagram-scraper-api2.p.rapidapi.com/v1/hashtag\\\"\\n\",\n    \"    headers: \\n\",\n    \"      x-rapidapi-key: \\\"{RAPID_API_KEY}\\\"\\n\",\n    \"      x-rapidapi-host: \\\"{RAPID_API_HOST}\\\"\\n\",\n    \"    follow_redirects: true\\n\",\n    \"\\n\",\n    \"- name: get_page\\n\",\n    \"  type: api_call\\n\",\n    \"  api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: https://r.jina.ai/\\n\",\n    \"    headers:\\n\",\n    \"      accept: application/json\\n\",\n    \"      x-return-format: markdown\\n\",\n    \"      x-with-images-summary: \\\"true\\\"\\n\",\n    \"      x-with-links-summary: \\\"true\\\"\\n\",\n    \"      x-retain-images: none\\n\",\n    \"      x-no-cache: \\\"true\\\"\\n\",\n    \"      Authorization: \\\"Bearer {JINA_API_KEY}\\\"\\n\",\n    \"\\n\",\n    \"- name: get_replicate_model\\n\",\n    \"  type: api_call\\n\",\n    \"  api_call:\\n\",\n    \"    method: POST\\n\",\n    \"    url: \\\"https://api.replicate.com/v1\\\"\\n\",\n    \"    headers:\\n\",\n    \"      Content-Type: application/json\\n\",\n    \"      Prefer: wait\\n\",\n    \"      Authorization: \\\"Bearer {REPLICATE_API_KEY}\\\"\\n\",\n    \"\\n\",\n    \"- name: get_replicate_url\\n\",\n    \"  type: api_call\\n\",\n    \"  api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: \\\"https://api.replicate.com/v1\\\"\\n\",\n    \"    headers:\\n\",\n    \"      Content-Type: application/json\\n\",\n    \"      Prefer: wait\\n\",\n    \"      Authorization: \\\"Bearer {REPLICATE_API_KEY}\\\"\\n\",\n    \"\\n\",\n    \"- name: get_hooks_doc\\n\",\n    \"  type: system\\n\",\n    \"  system:\\n\",\n    \"    resource: agent\\n\",\n    \"    subresource: doc\\n\",\n    \"    operation: list\\n\",\n    \"\\n\",\n    \"- name: create_reel\\n\",\n    \"  type: api_call\\n\",\n    \"  api_call:\\n\",\n    \"    method: POST\\n\",\n    \"    url: \\\"https://api.shotstack.io/edit/stage/render\\\"\\n\",\n    \"    headers:\\n\",\n    \"      content-type: application/json\\n\",\n    \"      x-api-key: \\\"{SHOTSTACK_API_KEY}\\\"\\n\",\n    \"\\n\",\n    \"- name: get_reel_url\\n\",\n    \"  type: api_call\\n\",\n    \"  api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: \\\"https://api.shotstack.io/edit/stage/render\\\"\\n\",\n    \"    headers:\\n\",\n    \"      content-type: application/json\\n\",\n    \"      x-api-key: \\\"{SHOTSTACK_API_KEY}\\\"\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"########## SUB WORKFLOW TO CREATE REEL #################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"generate_reel:\\n\",\n    \"\\n\",\n    \"# Step 0: Generate the clips for the reel\\n\",\n    \"- evaluate:\\n\",\n    \"    clips: |\\n\",\n    \"      $ [\\n\",\n    \"        {{\\n\",\n    \"          \\\"clips\\\": [\\n\",\n    \"                {{\\n\",\n    \"                  \\\"asset\\\": {{\\n\",\n    \"                    \\\"type\\\": \\\"audio\\\",\\n\",\n    \"                    \\\"src\\\": transcibe_url,\\n\",\n    \"                    \\\"volume\\\": 1\\n\",\n    \"                  }},\\n\",\n    \"                  \\\"start\\\": i * 5,\\n\",\n    \"                  \\\"length\\\": 5,\\n\",\n    \"                  \\\"transition\\\": {{\\n\",\n    \"                    \\\"in\\\": \\\"fadeFast\\\", \\n\",\n    \"                    \\\"out\\\": \\\"fadeFast\\\"\\n\",\n    \"                    }} # Smooth crossfade between audio clips\\n\",\n    \"                }},\\n\",\n    \"                {{\\n\",\n    \"                  \\\"asset\\\": {{\\n\",\n    \"                      \\\"type\\\": \\\"text\\\",\\n\",\n    \"                      \\\"text\\\": scene.text_overlay,\\n\",\n    \"                      \\\"font\\\": {{\\n\",\n    \"                          \\\"family\\\": \\\"Open Sans\\\",\\n\",\n    \"                          \\\"size\\\": 40,\\n\",\n    \"                          \\\"weight\\\": \\\"600\\\",\\n\",\n    \"                          \\\"lineHeight\\\": 1.5,\\n\",\n    \"                          \\\"color\\\": \\\"#000000\\\", \\n\",\n    \"                      }},\\n\",\n    \"                      \\\"stroke\\\": {{\\n\",\n    \"                          \\\"color\\\": \\\"#FFFFFF\\\",\\n\",\n    \"                          \\\"width\\\": 5\\n\",\n    \"                      }},\\n\",\n    \"                      \\\"alignment\\\": {{\\n\",\n    \"                          \\\"horizontal\\\": \\\"center\\\",\\n\",\n    \"                          \\\"vertical\\\": \\\"center\\\"\\n\",\n    \"                      }}\\n\",\n    \"                  }},\\n\",\n    \"                  \\\"start\\\": i * 5,\\n\",\n    \"                  \\\"length\\\": 5,\\n\",\n    \"                  \\\"transition\\\": {{\\n\",\n    \"                        \\\"in\\\": \\\"fadeFast\\\", \\n\",\n    \"                        \\\"out\\\": \\\"fadeFast\\\"\\n\",\n    \"                  }},\\n\",\n    \"                  \\\"opacity\\\": 1 # Ensure text is fully visible\\n\",\n    \"                }},\\n\",\n    \"                {{\\n\",\n    \"                    \\\"asset\\\": {{\\\"type\\\": \\\"image\\\", \\\"src\\\": image_url}},\\n\",\n    \"                    \\\"start\\\": i * 5,\\n\",\n    \"                    \\\"length\\\": 5,\\n\",\n    \"                    \\\"scale\\\": 1.1,\\n\",\n    \"                    \\\"position\\\": \\\"center\\\",\\n\",\n    \"                    \\\"fit\\\": \\\"cover\\\",\\n\",\n    \"                    \\\"effect\\\": \\\"zoomIn\\\",\\n\",\n    \"                    \\\"transition\\\": {{\\n\",\n    \"                        \\\"in\\\": \\\"fadeFast\\\",\\n\",\n    \"                        \\\"out\\\": \\\"fadeFast\\\"\\n\",\n    \"                    }}\\n\",\n    \"                }}\\n\",\n    \"              ]\\n\",\n    \"        }}\\n\",\n    \"        for i, (image_url, scene, transcibe_url) in enumerate(zip(_.image_urls, _.scenes, _.transcibe_urls))\\n\",\n    \"        ]\\n\",\n    \"\\n\",\n    \"# Step 1: Create the reel\\n\",\n    \"- tool: create_reel\\n\",\n    \"  arguments:\\n\",\n    \"    json: |\\n\",\n    \"      $ {{\\n\",\n    \"        \\\"timeline\\\": {{\\n\",\n    \"          \\\"soundtrack\\\": {{\\n\",\n    \"            \\\"src\\\": \\\"https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/music/freepd/advertising.mp3\\\",\\n\",\n    \"            \\\"effect\\\": \\\"fadeInFadeOut\\\",\\n\",\n    \"            \\\"volume\\\": 0.2\\n\",\n    \"          }},\\n\",\n    \"          \\\"tracks\\\": steps[0].output.clips\\n\",\n    \"        }},\\n\",\n    \"        \\\"output\\\": {{\\n\",\n    \"          \\\"format\\\": \\\"mp4\\\", \\n\",\n    \"          \\\"fps\\\": 60,\\n\",\n    \"          \\\"size\\\": {{\\n\",\n    \"            \\\"width\\\": 1280,\\n\",\n    \"            \\\"height\\\": 720\\n\",\n    \"          }}\\n\",\n    \"        }}\\n\",\n    \"      }}\\n\",\n    \"\\n\",\n    \"########################################################\\n\",\n    \"####################### MAIN WORKFLOW ##################\\n\",\n    \"########################################################\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"\\n\",\n    \"# Step 0: Get the trending reels from Instagram\\n\",\n    \"- tool: api_tool_call\\n\",\n    \"  arguments:\\n\",\n    \"    params:\\n\",\n    \"      hashtag: $ steps[0].input.topic\\n\",\n    \"\\n\",\n    \"# Step 1: Extract the caption, virality score, engagement score and one-liner description for each reel\\n\",\n    \"- evaluate:\\n\",\n    \"    summary: >-\\n\",\n    \"      $ list({{\\n\",\n    \"                'caption': ((response.get('caption') or {{}}).get('text') or 'No Caption Available'),\\n\",\n    \"                'code': (response.get('code') or 'No Code Available'),\\n\",\n    \"                'play_count': (response.get('play_count') or 0),\\n\",\n    \"                'like_count': (response.get('like_count') or 0),\\n\",\n    \"                'media_id': ((response.get('caption') or {{}}).get('id') or 0),\\n\",\n    \"                'hashtags': ((response.get('caption') or {{}}).get('hashtags') or 'No Hashtag Available'),\\n\",\n    \"                'video_duration': (response.get('video_duration') or 0),\\n\",\n    \"                'comment_count': (response.get('comment_count') or 0),\\n\",\n    \"                'reshare_count': (response.get('reshare_count') or 0),\\n\",\n    \"                'has_audio': (response.get('has_audio') or False),\\n\",\n    \"                'audio_type': (((response.get('clips_metadata') or {{}}).get('audio_type')) or 'No Audio Type Available'),\\n\",\n    \"                'username': (((response.get('user') or {{}}).get('username')) or 'No Username Available'),\\n\",\n    \"                'full_name': (((response.get('user') or {{}}).get('full_name')) or 'No Full Name Available'),\\n\",\n    \"                'profile_pic_url': (((response.get('user') or {{}}).get('profile_pic_url')) or 'No Profile Pic URL Available'),\\n\",\n    \"                'virality_score': (((response.get('reshare_count') or 0) / (response.get('play_count') or 1)) if (response.get('play_count') or 0) > 0 else 0),\\n\",\n    \"                'engagement_score': (((response.get('like_count') or 0) / (response.get('play_count') or 1)) if (response.get('play_count') or 0) > 0 else 0),\\n\",\n    \"                'video_duration': (response.get('video_duration') or 0)\\n\",\n    \"                }} for response in _['json']['data']['items']) \\n\",\n    \"\\n\",\n    \"# Step 2: Generate a description for each reel\\n\",\n    \"- over: $ _['summary'][:3]\\n\",\n    \"  parallelism: 3\\n\",\n    \"  map:\\n\",\n    \"    prompt:\\n\",\n    \"      - role: system\\n\",\n    \"        content: >-\\n\",\n    \"          $ f'''You are a skilled content analyst tasked with analyzing trending reels for the topic: {{steps[0].input.topic}}.\\n\",\n    \"          Analyze the following metrics to understand what content performs well:\\n\",\n    \"\\n\",\n    \"          Caption: {{_['caption']}}\\n\",\n    \"          Virality Score: {{_['virality_score']}} \\n\",\n    \"          Engagement Score: {{_['engagement_score']}}\\n\",\n    \"          Video Duration: {{_['video_duration']}}\\n\",\n    \"          Play Count: {{_['play_count']}}\\n\",\n    \"          Comment Count: {{_['comment_count']}}\\n\",\n    \"          Reshare Count: {{_['reshare_count']}}\\n\",\n    \"\\n\",\n    \"          Return a list of JSON responses and nothing else in the response. The JSON response should contain the following fields:\\n\",\n    \"          - Key themes and patterns from the caption\\n\",\n    \"          - What aspects drove virality and engagement\\n\",\n    \"          - A one-line summary of why this content resonated\\n\",\n    \"          '''\\n\",\n    \"    unwrap: true   \\n\",\n    \"\\n\",\n    \"# Step 3: Get the trending content analysis\\n\",\n    \"- evaluate:\\n\",\n    \"    analysis: $ list(extract_json(res) for res in _)\\n\",\n    \"\\n\",\n    \"# Step 4: Get the page content\\n\",\n    \"- tool: get_page\\n\",\n    \"  arguments:\\n\",\n    \"    url: $ \\\"https://r.jina.ai/\\\" + steps[0].input.url\\n\",\n    \"\\n\",\n    \"# Step 5: Extract the page content\\n\",\n    \"- evaluate:\\n\",\n    \"    content: $ steps[4].output.json.data.content\\n\",\n    \"\\n\",\n    \"# Step 6: Create an engaging video script based on trends\\n\",\n    \"- prompt:\\n\",\n    \"  - role: system\\n\",\n    \"    content: >-  \\n\",\n    \"      You are an expert scriptwriter and visual storyteller. \\n\",\n    \"      Transform the provided content into a dynamic, trend-driven script with a flexible scene structure, designed to generate realistic, story-driven images for an engaging video.\\n\",\n    \"\\n\",\n    \"  - role: user\\n\",\n    \"    content: >-\\n\",\n    \"      $ f'''\\n\",\n    \"\\n\",\n    \"      Here are the trending insights:\\n\",\n    \"      {{steps[3].output.analysis}}\\n\",\n    \"\\n\",\n    \"      Here is the content to adapt:\\n\",\n    \"      {{steps[5].output.content}}\\n\",\n    \"\\n\",\n    \"      Requirements:\\n\",\n    \"\\n\",\n    \"      Create a viral-worthy video script following these guidelines:\\n\",\n    \"\\n\",\n    \"      1. Hook viewers instantly with an attention-grabbing opening (3-5 seconds)\\n\",\n    \"      2. Keep scenes ultra-concise (3-8 seconds each) for short attention spans\\n\",\n    \"      3. Deliver key points with compelling, punchy narration (2-3 sentences)\\n\",\n    \"      4. Use quick, dynamic transitions between scenes\\n\",\n    \"      5. Keep visuals simple and authentic with darker color schemes\\n\",\n    \"\\n\",\n    \"      For each scene, provide:\\n\",\n    \"      - Brief scene description\\n\",\n    \"      - Engaging narration (2-3 impactful sentences)\\n\",\n    \"      - Simple image prompt (using darker, moodier colors and lighting)\\n\",\n    \"      - Bold text overlay (1-5 words)\\n\",\n    \"      - Quick pacing guidance\\n\",\n    \"      - Maintain consistent narration length (10-15 words) across scenes for uniform audio generation and smooth transitions\\n\",\n    \"\\n\",\n    \"      Return a JSON response following this structure:\\n\",\n    \"      ```json\\n\",\n    \"      {{{{\\n\",\n    \"        \\\"scenes\\\": [\\n\",\n    \"            {{{{\\n\",\n    \"                \\\"scene\\\": \\\"Brief scene description\\\",\\n\",\n    \"                \\\"narration\\\": \\\"Compelling and engaging narration that hooks viewers. Follow up with an impactful point.\\\",\\n\",\n    \"                \\\"image_prompt\\\": \\\"Simple visual description with darker shades, deep shadows, and low-key lighting setup.\\\",\\n\",\n    \"                \\\"text_overlay\\\": \\\"1-5 word text\\\",\\n\",\n    \"                \\\"tone\\\": \\\"Quick pacing note\\\", \\n\",\n    \"                \\\"start_time\\\": \\\"Start time of the scene in seconds. Return only the number and nothing else\\\",\\n\",\n    \"                \\\"duration\\\": \\\"Duration of the scene in seconds. Return only the number and nothing else\\\"\\n\",\n    \"            }}}},\\n\",\n    \"            ...(additional scenes as needed)\\n\",\n    \"        ]\\n\",\n    \"      }}}}\\n\",\n    \"      ```\\n\",\n    \"      '''\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 7: Generate video script\\n\",\n    \"- evaluate:\\n\",\n    \"    script: $ extract_json(_)\\n\",\n    \"\\n\",\n    \"# Step 8: Generate captions\\n\",\n    \"- over: $ steps[7].output.script.scenes\\n\",\n    \"  parallelism: 3\\n\",\n    \"  map:\\n\",\n    \"    tool: get_replicate_model\\n\",\n    \"    arguments:\\n\",\n    \"      url: https://api.replicate.com/v1/predictions\\n\",\n    \"      json: \\n\",\n    \"        version: \\\"f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13\\\"\\n\",\n    \"        input:\\n\",\n    \"          text: $ _.narration\\n\",\n    \"          voice: am_adam\\n\",\n    \"          speed: $ 1\\n\",\n    \"\\n\",\n    \"# Step 9: Generate the image for each scene\\n\",\n    \"- over: $ steps[7].output.script.scenes\\n\",\n    \"  parallelism: 3\\n\",\n    \"  map:\\n\",\n    \"    tool: get_replicate_model\\n\",\n    \"    arguments:\\n\",\n    \"      url: https://api.replicate.com/v1/models/black-forest-labs/flux-1.1-pro/predictions\\n\",\n    \"      json: \\n\",\n    \"        input:\\n\",\n    \"          prompt: $ _.image_prompt # + \\\"Add the following text to the image - \\\" + _.text_overlay\\n\",\n    \"          prompt_upsampling: $ False\\n\",\n    \"          output_format: png\\n\",\n    \"          safety_tolerance: $ 2\\n\",\n    \"          output_quality: $ 100\\n\",\n    \"          width: $ 1280\\n\",\n    \"          height: $ 720\\n\",\n    \"\\n\",\n    \"# Step 10: Sleep for 90 seconds. Basically, we need to wait for the audio to be generated.\\n\",\n    \"- sleep:\\n\",\n    \"    minutes: 1\\n\",\n    \"    seconds: 30\\n\",\n    \"\\n\",\n    \"# Step 11: Get the audio url\\n\",\n    \"- over: $ steps[8].output\\n\",\n    \"  parallelism: 3\\n\",\n    \"  map:\\n\",\n    \"    tool: get_replicate_url\\n\",\n    \"    arguments:\\n\",\n    \"      url: $ _.json.urls['get']\\n\",\n    \"\\n\",\n    \"# Step 12: Extract the image url\\n\",\n    \"- workflow: generate_reel\\n\",\n    \"  arguments:\\n\",\n    \"    image_urls: $ [url.json.output for url in steps[9].output]\\n\",\n    \"    transcibe_urls: $ [url.json.output for url in steps[11].output]\\n\",\n    \"    effects: $ [\\\"zoomIn\\\", \\\"slideUp\\\", \\\"slideLeft\\\", \\\"zoomOut\\\", \\\"slideDown\\\", \\\"slideRight\\\", \\\"zoomIn\\\"]\\n\",\n    \"    scenes: $ steps[7].output.script.scenes\\n\",\n    \"\\n\",\n    \"# Step 13: Get the video id\\n\",\n    \"- evaluate:\\n\",\n    \"    video_json: $ _.json\\n\",\n    \"\\n\",\n    \"# Step 14: Sleep for 60 seconds\\n\",\n    \"- sleep: \\n\",\n    \"    minutes: 1\\n\",\n    \"    seconds: 30\\n\",\n    \"\\n\",\n    \"# Step 15: Get the hooks document\\n\",\n    \"- tool: get_hooks_doc\\n\",\n    \"  arguments:\\n\",\n    \"    agent_id: {AGENT_UUID}\\n\",\n    \"\\n\",\n    \"# Step 16: Extract the hooks document\\n\",\n    \"- evaluate:\\n\",\n    \"    content: $ _[0]['content']\\n\",\n    \"  label: hooks_doc\\n\",\n    \"\\n\",\n    \"# Step 17: Generate the hook for the reel\\n\",\n    \"- prompt:\\n\",\n    \"  - role: system\\n\",\n    \"    content: >-\\n\",\n    \"      You are an expert social media content creator specializing in viral hooks and engaging captions. \\n\",\n    \"      Your expertise lies in crafting compelling, scroll-stopping content that drives high engagement and conversions.\\n\",\n    \"  \\n\",\n    \"  - role: user\\n\",\n    \"    content: >-\\n\",\n    \"      $ f'''\\n\",\n    \"      Using the provided hook templates, create high-converting social media content optimized for maximum virality:\\n\",\n    \"\\n\",\n    \"      {{_.content}}\\n\",\n    \"\\n\",\n    \"      Based on this script:\\n\",\n    \"       \\n\",\n    \"      {{steps[7].output.script}}\\n\",\n    \"      \\n\",\n    \"      Generate a viral social media package with:\\n\",\n    \"\\n\",\n    \"      1. Title (max 60 chars):\\n\",\n    \"         - Use numbers, stats or surprising facts\\n\",\n    \"         - Create urgency/FOMO\\n\",\n    \"         - Include power words that trigger emotion\\n\",\n    \"      \\n\",\n    \"      2. Caption (2-3 sentences):\\n\",\n    \"         - Open with a bold claim or question\\n\",\n    \"         - Build intrigue and curiosity\\n\",\n    \"         - End with a clear call-to-action\\n\",\n    \"      \\n\",\n    \"      3. Description (one line):\\n\",\n    \"         - Highlight the key transformation/benefit\\n\",\n    \"         - Use \\\"before vs after\\\" framing\\n\",\n    \"         - Make it specific and measurable\\n\",\n    \"\\n\",\n    \"      Requirements:\\n\",\n    \"      - Target the core pain point of {{steps[0].input.topic}} users\\n\",\n    \"      - Use proven psychological triggers (scarcity, social proof, etc.)\\n\",\n    \"      - Match the hook templates' viral formulas\\n\",\n    \"      - Optimize for platform-specific engagement metrics\\n\",\n    \"      - Keep language simple, direct and emotionally resonant\\n\",\n    \"\\n\",\n    \"      Format response as:\\n\",\n    \"      ```json\\n\",\n    \"      {{{{\\n\",\n    \"        \\\"title\\\": \\\"string\\\", // Attention-grabbing headline\\n\",\n    \"        \\\"caption\\\": \\\"string\\\", // Engaging hook + CTA\\n\",\n    \"        \\\"description\\\": \\\"string\\\" // Clear value proposition\\n\",\n    \"      }}}}\\n\",\n    \"      ```\\n\",\n    \"\\n\",\n    \"      Return the JSON repsonse and nothing else\\n\",\n    \"      '''\\n\",\n    \"  unwrap: true\\n\",\n    \"\\n\",\n    \"# Step 18: Get the content of the product page\\n\",\n    \"- tool: get_reel_url\\n\",\n    \"  arguments:\\n\",\n    \"    url: $ \\\"https://api.shotstack.io/edit/stage/render/\\\" + steps[13].output.video_json.response.id\\n\",\n    \"\\n\",\n    \"# Step 19: Extract the details\\n\",\n    \"- evaluate:\\n\",\n    \"    social_media: $ extract_json(steps[17].output)\\n\",\n    \"    scenes: $ steps[7].output.script.scenes\\n\",\n    \"    image_urls: $ [url.json.output for url in steps[9].output]\\n\",\n    \"    transcibe_urls: $ [url.json.output for url in steps[11].output]\\n\",\n    \"    reel_url: $ _.json.response.url\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<span style=\\\"color:olive;\\\">Notes:</span>\\n\",\n    \"- The `unwrap: True` in the prompt step is used to unwrap the output of the prompt step (to unwrap the `choices[0].message.content` from the output of the model).\\n\",\n    \"- The `$` sign is used to differentiate between a Python expression and a string.\\n\",\n    \"- The `_` refers to the output of the previous step.\\n\",\n    \"- The `steps[index].input` refers to the input of the step at `index`.\\n\",\n    \"- The `steps[index].output` refers to the output of the step at `index`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 17,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Creating/Updating a task\\n\",\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 18,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Creating an execution of the task\\n\",\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=task.id,\\n\",\n    \"    input={\\n\",\n    \"        \\\"topic\\\": \\\"ChatGPT\\\",\\n\",\n    \"        \\\"url\\\": \\\"https://github.com/julep-ai/julep/blob/dev/README.md?raw=true\\\"\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"client.executions.get(execution.id)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Checking execution details and output\\n\",\n    \"\\n\",\n    \"There are multiple ways to get the execution details and the output:\\n\",\n    \"\\n\",\n    \"1. **Get Execution Details**: This method retrieves the details of the execution, including the output of the last transition that took place.\\n\",\n    \"\\n\",\n    \"2. **List Transitions**: This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"\\n\",\n    \"<span style=\\\"color:olive;\\\">Note: You need to wait for a few seconds for the execution to complete before you can get the final output, so feel free to run the following cells multiple times until you get the final output.</span>\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 20,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"Type:  finish\\n\",\n      \"output:  {'scenes': [{'tone': 'Fast zoom transition', 'scene': 'Opening hook - rapid zoom into laptop screen showing code patterns', 'duration': 3, 'narration': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'start_time': 0, 'image_prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'text_overlay': 'OVERWHELMED?'}, {'tone': 'Dynamic split reveal', 'scene': 'Split screen transition showing messy vs clean workflows', 'duration': 4, 'narration': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'start_time': 3, 'image_prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'text_overlay': 'Chaos → Clean'}, {'tone': 'Smooth feature showcase', 'scene': 'Quick demo of Julep interface in action', 'duration': 4, 'narration': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'start_time': 7, 'image_prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'text_overlay': 'JULEP AI'}, {'tone': 'Quick cuts between features', 'scene': 'Split screen showing parallel processing visualization', 'duration': 3, 'narration': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'start_time': 11, 'image_prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'text_overlay': 'PARALLEL POWER'}, {'tone': 'Dramatic reveal', 'scene': 'Code snippet transformation', 'duration': 3, 'narration': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'start_time': 14, 'image_prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'text_overlay': 'SIMPLIFY'}, {'tone': 'Energetic finale', 'scene': 'Call-to-action with floating elements', 'duration': 4, 'narration': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'start_time': 17, 'image_prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'text_overlay': 'GET STARTED FREE'}], 'reel_url': 'https://shotstack-api-stage-output.s3-ap-southeast-2.amazonaws.com/f97dat95gd/496b9b8b-2933-43a9-8d72-3e23419ec88a.mp4', 'image_urls': ['https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png', 'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png', 'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png', 'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png', 'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png', 'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png'], 'social_media': {'title': 'Turn 80 Lines of AI Code into 5-Line Magic (See How)', 'caption': 'Still wrestling with messy AI workflows and infrastructure headaches? 👀 We turned complex serverless deployments into drag-and-drop simplicity. Get your free API key now at Julep.ai before we hit capacity! 🚀', 'description': 'From 2-hour AI deployments to 5-minute workflows: How data teams are building serverless AI apps 10x faster'}, 'transcibe_urls': ['https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav']}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'json': {'message': 'OK', 'success': True, 'response': {'id': '496b9b8b-2933-43a9-8d72-3e23419ec88a', 'url': 'https://shotstack-api-stage-output.s3-ap-southeast-2.amazonaws.com/f97dat95gd/496b9b8b-2933-43a9-8d72-3e23419ec88a.mp4', 'data': {'output': {'fps': 60, 'size': {'width': 1280, 'height': 720}, 'format': 'mp4'}, 'timeline': {'tracks': [{'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'type': 'audio', 'volume': 1}, 'start': 0, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': 600, 'lineHeight': 1.5}, 'text': 'OVERWHELMED?', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 0, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png', 'type': 'image'}, 'scale': 1.1, 'start': 0, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'type': 'audio', 'volume': 1}, 'start': 5, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': 600, 'lineHeight': 1.5}, 'text': 'Chaos → Clean', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 5, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png', 'type': 'image'}, 'scale': 1.1, 'start': 5, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'type': 'audio', 'volume': 1}, 'start': 10, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': 600, 'lineHeight': 1.5}, 'text': 'JULEP AI', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 10, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png', 'type': 'image'}, 'scale': 1.1, 'start': 10, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'type': 'audio', 'volume': 1}, 'start': 15, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': 600, 'lineHeight': 1.5}, 'text': 'PARALLEL POWER', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 15, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png', 'type': 'image'}, 'scale': 1.1, 'start': 15, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'type': 'audio', 'volume': 1}, 'start': 20, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': 600, 'lineHeight': 1.5}, 'text': 'SIMPLIFY', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 20, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png', 'type': 'image'}, 'scale': 1.1, 'start': 20, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav', 'type': 'audio', 'volume': 1}, 'start': 25, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': 600, 'lineHeight': 1.5}, 'text': 'GET STARTED FREE', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 25, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png', 'type': 'image'}, 'scale': 1.1, 'start': 25, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}], 'soundtrack': {'src': 'https://shotstack-assets.s3-ap-southeast-2.amazonaws.com/music/freepd/advertising.mp3', 'effect': 'fadeInFadeOut', 'volume': 0.2}}}, 'plan': 'sandbox', 'error': '', 'owner': 'f97dat95gd', 'poster': None, 'status': 'done', 'created': '2025-02-19T07:31:27.533Z', 'credits': 0, 'updated': '2025-02-19T07:32:33.063Z', 'billable': 30, 'duration': 30, 'thumbnail': None, 'renderTime': 62296.39}}, 'content': 'eyJzdWNjZXNzIjp0cnVlLCJtZXNzYWdlIjoiT0siLCJyZXNwb25zZSI6eyJpZCI6IjQ5NmI5YjhiLTI5MzMtNDNhOS04ZDcyLTNlMjM0MTllYzg4YSIsIm93bmVyIjoiZjk3ZGF0OTVnZCIsInBsYW4iOiJzYW5kYm94Iiwic3RhdHVzIjoiZG9uZSIsImVycm9yIjoiIiwiZHVyYXRpb24iOjMwLCJiaWxsYWJsZSI6MzAsInJlbmRlclRpbWUiOjYyMjk2LjM5LCJjcmVkaXRzIjowLCJ1cmwiOiJodHRwczovL3Nob3RzdGFjay1hcGktc3RhZ2Utb3V0cHV0LnMzLWFwLXNvdXRoZWFzdC0yLmFtYXpvbmF3cy5jb20vZjk3ZGF0OTVnZC80OTZiOWI4Yi0yOTMzLTQzYTktOGQ3Mi0zZTIzNDE5ZWM4OGEubXA0IiwicG9zdGVyIjpudWxsLCJ0aHVtYm5haWwiOm51bGwsImRhdGEiOnsib3V0cHV0Ijp7ImZvcm1hdCI6Im1wNCIsImZwcyI6NjAsInNpemUiOnsid2lkdGgiOjEyODAsImhlaWdodCI6NzIwfX0sInRpbWVsaW5lIjp7InNvdW5kdHJhY2siOnsidm9sdW1lIjowLjIsInNyYyI6Imh0dHBzOi8vc2hvdHN0YWNrLWFzc2V0cy5zMy1hcC1zb3V0aGVhc3QtMi5hbWF6b25hd3MuY29tL211c2ljL2ZyZWVwZC9hZHZlcnRpc2luZy5tcDMiLCJlZmZlY3QiOiJmYWRlSW5GYWRlT3V0In0sInRyYWNrcyI6W3siY2xpcHMiOlt7InN0YXJ0IjowLCJsZW5ndGgiOjUsImFzc2V0Ijp7InR5cGUiOiJhdWRpbyIsInZvbHVtZSI6MSwic3JjIjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC84eDZveWE1V1pQWjFNTmRhaEI4U25LTjlZYTN6UW1Lc2dEZ1huNlZKMXBmdjBaSUtBL291dHB1dC53YXYifSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX0seyJzdGFydCI6MCwibGVuZ3RoIjo1LCJhc3NldCI6eyJ0ZXh0IjoiT1ZFUldIRUxNRUQ/IiwidHlwZSI6InRleHQiLCJhbGlnbm1lbnQiOnsiaG9yaXpvbnRhbCI6ImNlbnRlciIsInZlcnRpY2FsIjoiY2VudGVyIn0sInN0cm9rZSI6eyJjb2xvciI6IiNGRkZGRkYiLCJ3aWR0aCI6NX0sImZvbnQiOnsid2VpZ2h0Ijo2MDAsImxpbmVIZWlnaHQiOjEuNSwic2l6ZSI6NDAsImNvbG9yIjoiIzAwMDAwMCIsImZhbWlseSI6Ik9wZW4gU2FucyJ9fSwib3BhY2l0eSI6MSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX0seyJmaXQiOiJjb3ZlciIsImVmZmVjdCI6Inpvb21JbiIsInN0YXJ0IjowLCJsZW5ndGgiOjUsInNjYWxlIjoxLjEsInBvc2l0aW9uIjoiY2VudGVyIiwiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9YQVVLekhrTVE2cTRCdFdvR1RlcHFqZzk0MkFiOHBLUkcxcXVrMVNHbVVYMDBaSUtBL3RtcHc0YzhiYWJrLnBuZyJ9LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZUZhc3QiLCJvdXQiOiJmYWRlRmFzdCJ9fV19LHsiY2xpcHMiOlt7InN0YXJ0Ijo1LCJsZW5ndGgiOjUsImFzc2V0Ijp7InR5cGUiOiJhdWRpbyIsInZvbHVtZSI6MSwic3JjIjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9WY3JrbXJXNWZHMGlKaVFmaThpa2RwU3RSSjVIb3Z0T2Y5OTJZSE42VUNEQVRuaG9BL291dHB1dC53YXYifSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX0seyJzdGFydCI6NSwibGVuZ3RoIjo1LCJhc3NldCI6eyJ0ZXh0IjoiQ2hhb3Mg4oaSIENsZWFuIiwidHlwZSI6InRleHQiLCJhbGlnbm1lbnQiOnsiaG9yaXpvbnRhbCI6ImNlbnRlciIsInZlcnRpY2FsIjoiY2VudGVyIn0sInN0cm9rZSI6eyJjb2xvciI6IiNGRkZGRkYiLCJ3aWR0aCI6NX0sImZvbnQiOnsid2VpZ2h0Ijo2MDAsImxpbmVIZWlnaHQiOjEuNSwic2l6ZSI6NDAsImNvbG9yIjoiIzAwMDAwMCIsImZhbWlseSI6Ik9wZW4gU2FucyJ9fSwib3BhY2l0eSI6MSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX0seyJmaXQiOiJjb3ZlciIsImVmZmVjdCI6Inpvb21JbiIsInN0YXJ0Ijo1LCJsZW5ndGgiOjUsInNjYWxlIjoxLjEsInBvc2l0aW9uIjoiY2VudGVyIiwiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9YaFJ3ZmN6cVlOV3JJU0dUeGZjYjF1Mk1obXB4bGVkYzNlWDdKNzVoYW9iaG1PRFJCL3RtcHJfOHY2NWwyLnBuZyJ9LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZUZhc3QiLCJvdXQiOiJmYWRlRmFzdCJ9fV19LHsiY2xpcHMiOlt7InN0YXJ0IjoxMCwibGVuZ3RoIjo1LCJhc3NldCI6eyJ0eXBlIjoiYXVkaW8iLCJ2b2x1bWUiOjEsInNyYyI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvZUJORzZ3WWlUSlhnWWFCZHZMa2VnQWNPMkdWQjVlZXd6cnV1bVZnOG5lWWVYNk1FRi9vdXRwdXQud2F2In0sInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlRmFzdCIsIm91dCI6ImZhZGVGYXN0In19LHsic3RhcnQiOjEwLCJsZW5ndGgiOjUsImFzc2V0Ijp7InRleHQiOiJKVUxFUCBBSSIsInR5cGUiOiJ0ZXh0IiwiYWxpZ25tZW50Ijp7Imhvcml6b250YWwiOiJjZW50ZXIiLCJ2ZXJ0aWNhbCI6ImNlbnRlciJ9LCJzdHJva2UiOnsiY29sb3IiOiIjRkZGRkZGIiwid2lkdGgiOjV9LCJmb250Ijp7IndlaWdodCI6NjAwLCJsaW5lSGVpZ2h0IjoxLjUsInNpemUiOjQwLCJjb2xvciI6IiMwMDAwMDAiLCJmYW1pbHkiOiJPcGVuIFNhbnMifX0sIm9wYWNpdHkiOjEsInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlRmFzdCIsIm91dCI6ImZhZGVGYXN0In19LHsiZml0IjoiY292ZXIiLCJlZmZlY3QiOiJ6b29tSW4iLCJzdGFydCI6MTAsImxlbmd0aCI6NSwic2NhbGUiOjEuMSwicG9zaXRpb24iOiJjZW50ZXIiLCJhc3NldCI6eyJ0eXBlIjoiaW1hZ2UiLCJzcmMiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS94ZXpxL25zSDZnZnRScGJUV2VFSTlnMmp6SzgzZldDYkpaT2xqcEJlS3h3ZTJBZ0JITmRHaUMvdG1wZ3ozeHE5eXYucG5nIn0sInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlRmFzdCIsIm91dCI6ImZhZGVGYXN0In19XX0seyJjbGlwcyI6W3sic3RhcnQiOjE1LCJsZW5ndGgiOjUsImFzc2V0Ijp7InR5cGUiOiJhdWRpbyIsInZvbHVtZSI6MSwic3JjIjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9FeG9nWDA1NzJPSXJCNURjVWo5anN3bGRnMzhDZ0xOQVh0SmV3cTBrZ043eDBaSUtBL291dHB1dC53YXYifSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX0seyJzdGFydCI6MTUsImxlbmd0aCI6NSwiYXNzZXQiOnsidGV4dCI6IlBBUkFMTEVMIFBPV0VSIiwidHlwZSI6InRleHQiLCJhbGlnbm1lbnQiOnsiaG9yaXpvbnRhbCI6ImNlbnRlciIsInZlcnRpY2FsIjoiY2VudGVyIn0sInN0cm9rZSI6eyJjb2xvciI6IiNGRkZGRkYiLCJ3aWR0aCI6NX0sImZvbnQiOnsid2VpZ2h0Ijo2MDAsImxpbmVIZWlnaHQiOjEuNSwic2l6ZSI6NDAsImNvbG9yIjoiIzAwMDAwMCIsImZhbWlseSI6Ik9wZW4gU2FucyJ9fSwib3BhY2l0eSI6MSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX0seyJmaXQiOiJjb3ZlciIsImVmZmVjdCI6Inpvb21JbiIsInN0YXJ0IjoxNSwibGVuZ3RoIjo1LCJzY2FsZSI6MS4xLCJwb3NpdGlvbiI6ImNlbnRlciIsImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L3hlenEvMUluOEM3ak1qQUx6RWRRQXA1U0FERVVMRWxsUDdubGlJMTVjZUdHY1I2ZXRwelFVQS90bXBfeG05cHF1di5wbmcifSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX1dfSx7ImNsaXBzIjpbeyJzdGFydCI6MjAsImxlbmd0aCI6NSwiYXNzZXQiOnsidHlwZSI6ImF1ZGlvIiwidm9sdW1lIjoxLCJzcmMiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsLzM3TG56NmNDcUlwUkhkWDRGbTVlVkpKeVZKNHVLMmg4MmdBOUJqQVh3dUt4MFpJS0Evb3V0cHV0LndhdiJ9LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZUZhc3QiLCJvdXQiOiJmYWRlRmFzdCJ9fSx7InN0YXJ0IjoyMCwibGVuZ3RoIjo1LCJhc3NldCI6eyJ0ZXh0IjoiU0lNUExJRlkiLCJ0eXBlIjoidGV4dCIsImFsaWdubWVudCI6eyJob3Jpem9udGFsIjoiY2VudGVyIiwidmVydGljYWwiOiJjZW50ZXIifSwic3Ryb2tlIjp7ImNvbG9yIjoiI0ZGRkZGRiIsIndpZHRoIjo1fSwiZm9udCI6eyJ3ZWlnaHQiOjYwMCwibGluZUhlaWdodCI6MS41LCJzaXplIjo0MCwiY29sb3IiOiIjMDAwMDAwIiwiZmFtaWx5IjoiT3BlbiBTYW5zIn19LCJvcGFjaXR5IjoxLCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZUZhc3QiLCJvdXQiOiJmYWRlRmFzdCJ9fSx7ImZpdCI6ImNvdmVyIiwiZWZmZWN0Ijoiem9vbUluIiwic3RhcnQiOjIwLCJsZW5ndGgiOjUsInNjYWxlIjoxLjEsInBvc2l0aW9uIjoiY2VudGVyIiwiYXNzZXQiOnsidHlwZSI6ImltYWdlIiwic3JjIjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9OWGhUMW5ETTdPcXRNQmtER041UVhpWnhCRUNTZHNSUnRvYVZlWjFLM3NpMjBaSUtBL3RtcGc2bnZjYm9pLnBuZyJ9LCJ0cmFuc2l0aW9uIjp7ImluIjoiZmFkZUZhc3QiLCJvdXQiOiJmYWRlRmFzdCJ9fV19LHsiY2xpcHMiOlt7InN0YXJ0IjoyNSwibGVuZ3RoIjo1LCJhc3NldCI6eyJ0eXBlIjoiYXVkaW8iLCJ2b2x1bWUiOjEsInNyYyI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvS3N4anlRWkZ2QjcxRmhnM2VHb2UwWHJUT1JJMlZVZ2ZmNXdmRzQ4SWs4VVZNZEdpQy9vdXRwdXQud2F2In0sInRyYW5zaXRpb24iOnsiaW4iOiJmYWRlRmFzdCIsIm91dCI6ImZhZGVGYXN0In19LHsic3RhcnQiOjI1LCJsZW5ndGgiOjUsImFzc2V0Ijp7InRleHQiOiJHRVQgU1RBUlRFRCBGUkVFIiwidHlwZSI6InRleHQiLCJhbGlnbm1lbnQiOnsiaG9yaXpvbnRhbCI6ImNlbnRlciIsInZlcnRpY2FsIjoiY2VudGVyIn0sInN0cm9rZSI6eyJjb2xvciI6IiNGRkZGRkYiLCJ3aWR0aCI6NX0sImZvbnQiOnsid2VpZ2h0Ijo2MDAsImxpbmVIZWlnaHQiOjEuNSwic2l6ZSI6NDAsImNvbG9yIjoiIzAwMDAwMCIsImZhbWlseSI6Ik9wZW4gU2FucyJ9fSwib3BhY2l0eSI6MSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX0seyJmaXQiOiJjb3ZlciIsImVmZmVjdCI6Inpvb21JbiIsInN0YXJ0IjoyNSwibGVuZ3RoIjo1LCJzY2FsZSI6MS4xLCJwb3NpdGlvbiI6ImNlbnRlciIsImFzc2V0Ijp7InR5cGUiOiJpbWFnZSIsInNyYyI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L3hlenEvbG9kSVFXMW5mWDA4TWFTQkQwd3ZmbllNNWVNYU5IVDd5cWFEVkI2UzRzZGFUbmhvQS90bXBpczF4a2J0My5wbmcifSwidHJhbnNpdGlvbiI6eyJpbiI6ImZhZGVGYXN0Iiwib3V0IjoiZmFkZUZhc3QifX1dfV19fSwiY3JlYXRlZCI6IjIwMjUtMDItMTlUMDc6MzE6MjcuNTMzWiIsInVwZGF0ZWQiOiIyMDI1LTAyLTE5VDA3OjMyOjMzLjA2M1oifX0=', 'headers': {'date': 'Wed, 19 Feb 2025 07:33:16 GMT', 'connection': 'keep-alive', 'content-type': 'application/json', 'content-length': '5498', 'x-amz-apigw-id': 'GOJhbFmVSwMFqaA=', 'x-amzn-trace-id': 'Root=1-67b5893b-36e079db644809915dd41376;Parent=7521cb0af19a6e25;Sampled=0;Lineage=2:1d71269a:0', 'x-frame-options': 'DENY', 'x-amzn-requestid': '13044dfc-1845-4351-9c25-8abd42c6d301', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-security-policy': \\\"default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'\\\", 'strict-transport-security': 'max-age=63072000; includeSubdomains; preload', 'access-control-allow-origin': '*'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  Based on the script content and provided hook templates, I'll create a viral social media package targeting developers and data teams struggling with AI workflow complexity.\\n\",\n      \"\\n\",\n      \"```json\\n\",\n      \"{\\n\",\n      \"  \\\"title\\\": \\\"Turn 80 Lines of AI Code into 5-Line Magic (See How)\\\",\\n\",\n      \"  \\\"caption\\\": \\\"Still wrestling with messy AI workflows and infrastructure headaches? 👀 We turned complex serverless deployments into drag-and-drop simplicity. Get your free API key now at Julep.ai before we hit capacity! 🚀\\\",\\n\",\n      \"  \\\"description\\\": \\\"From 2-hour AI deployments to 5-minute workflows: How data teams are building serverless AI apps 10x faster\\\"\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"\\n\",\n      \"Note: The viral hooks and triggers used include:\\n\",\n      \"- Numbers/specificity (80 to 5 lines)\\n\",\n      \"- Before/after transformation\\n\",\n      \"- Urgency/scarcity (capacity limit)\\n\",\n      \"- Problem-agitation-solution format\\n\",\n      \"- Time-saving value proposition\\n\",\n      \"- Social proof implication\\n\",\n      \"- Clear CTA\\n\",\n      \"These align with the most successful hook templates while addressing the core pain points shown in the script.\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'content': ['Save both time and money with [product].', 'Save both time and money on [task].', 'Is [product] worth the price? Let’s find out!', 'Why is it challenging and costly to find a good [product category]?', 'Searching for an affordable [product type]? Check this out!', 'How to locate an affordable [service].', 'I can’t believe this costs only [price].', \\\"Don't waste your money on [X]; instead buy [X].\\\", 'What’s inside [product]?', 'Common questions I get about [product].', 'Now you can get X delivered right to your door.', 'Thinking of trying [product type]?', 'Allow me to introduce you to [product].', '[category] Tip #X.', 'Here’s how to achieve [value prop].', 'I know this sounds unbelievable, but…', 'How to get X done in just 10 minutes.', 'How to find time for X.', 'Here’s my biggest life hack for X.', 'Add more [value prop] to your day.', 'Before you try [product type], watch this first.', 'Hate [the worse alternative]? Give this a try!', 'Thinking about [worse alternative]?', 'Instead of [worse alternative], try this.', 'Still using [the worse alternative to the product]? Watch this.', 'Something that’s always annoyed me about X.', 'Don’t buy X that doesn’t work. Try this instead.', 'I tested every [product category] so you don’t have to: here’s what I found.', 'Stop doing [worse alternative]. Try [product] instead.', 'Dealing with [negative experience]? I used [product] to help.', 'Why millennials are switching to [product].', 'How to do X without [worse alternative].', 'I only get my [product category] from [brand name].', 'I no longer buy my [product category] from [worse alternative].', '[Worse alternative] can be difficult to deal with.', 'Your new X alternative.', '[value prop] without the [negative side effect].', 'I kept experiencing [pain point], so I tried this instead!', 'If you have [pain point] — you need to see this!', 'I wanted to stop doing X, so I tried this instead.', \\\"Your X isn't [adverb]; you just need X.\\\", 'My secret to [popular trend] revealed!', 'Guys, it’s here…', 'What I ordered vs. what I received.', '[Product] unboxing.', 'Let’s create X with [product].', 'POV: You tried [product].', 'A day in the life of X.', 'Get ready with me to do [task].', '“Put a finger down” [product category] edition.', 'Trying home remedies for X.', '[Product category] ASMR.', 'TikTok made me try [product].', 'Things TikTok made me try #13.', 'This [product type] is going viral on [social media platform].', 'I tested the viral [product type] to see if it lives up to the hype.', 'This [product type] has over 5,000 reviews… let’s see if it’s worth it.', '[Publication] can’t stop raving about us.', 'It’s so good it sold out in a week.', 'Are you [accomplishing the goal optimally]?', 'Life Hack: Try [product] for [pain point].', 'My go-to [product] for [pain point].', 'How to easily [task].', '[Task] has never been easier than with [product].', 'My favorite [product] to make [hard task] simpler.', 'Here’s my top product for [task].', 'Struggling to do [task]?', 'I’ve been struggling with [task], but [product] has really helped.', 'Easiest way to do [task]?', 'Make your week easier.', 'Why adults avoid [task]… [product] makes it easy.', '[Product] made [task] so much easier! You’ve got to try it.', 'When I use [product], it’s one less thing I have to worry about.', 'How to do [X] in half the time.', 'This trick/hack/method will save you hours...', 'Easy hack to [X]...', 'Simple [X] that will make you [X].', '5 Ways [product] Helps with [pain point].', '3 reasons to buy [product].', '3 reasons to try [service].', 'Get [value prop] in 3 steps.', 'Here are 3 ways [worse alternative] affects your life.', '5 things you didn’t know about [topic].', 'The ultimate [X] checklist to [action].', 'Reasons why [X].', 'Here are the 3 best ways to [X].', 'Here are [X] mistakes you might be making...', 'If you want [X], do these 5 things...', 'The internet’s #1 [product type].', 'The best way to [accomplish the goal of the product].', 'What makes [the product type] the best?', 'My skin has never looked better with [product].', 'The best way to find X in 2022.', '[Product] changed how I do [task], and I’m never going back.', 'Why is [product] so good though?', 'After hours of researching, I found the best [product type] for [task].', 'I found the best [product category] for [value prop].', 'This is going to blow your mind.', 'How I got [X] in 24 hours.', 'Must-have [products] for [X].', \\\"The best [target audience] know something that you don't.\\\", 'Hey, [customer type], you’ve got to try this.', 'People looking for [product category], stop scrolling.', 'Wait, have you tried X?', 'Take control of your X with [product].', 'Imagine if X was also X.', 'Watch this if you X.', 'PSA: [statement about product category].', 'Did you know? [fact about product category].', 'I just found out [fact about product category].', 'Are you one of [fact about product category] people who do X?', 'New customers get [discount].', 'Take [discount] off when you try [product].', 'I didn’t know X could be related to X.', 'Why is it important to [do product-related task]?', \\\"99\\\\\\\\% of your [target audience] don't. To be the 1% you need to [X].\\\", 'This [product] is the secret to [X].', 'Is there anything worse than [X]?', 'I will never [adjective] from learning this.', 'X people start scrolling. I have the perfect [X] for you.', \\\"Here's a challenge for you...\\\", \\\"There's nothing more painful than [X].\\\", 'What would you do if...', 'Watch till the end…', \\\"Why you're failing at [activity].\\\", 'The worst mistake you can make in [subject].', 'Avoid these common pitfalls in [topic].', 'The dark side of [popular trend].', \\\"Don't be fooled by [misconception].\\\", 'Why [common practice] is ruining your [outcome].', 'What no one tells you about [issue].', 'The hidden dangers of [activity].', 'Stop doing this if you want to succeed in [field].', 'The ugly truth about [common belief].', 'Why [habit] is wasting your time.', 'Exposing the myths about [topic].', \\\"The biggest regret you'll have in [situation].\\\", 'How [action] is destroying your [goal].', 'The shocking reality of [popular topic].', 'Why [trend] is a bad idea.', \\\"The real reason you're not seeing results in [field].\\\", 'The downside of [seemingly positive aspect].', 'What you should never do in [activity].', 'Why [common advice] is actually harmful.']}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  [{'id': '067b0d51-c1cf-712e-8000-d0230a2bd39f', 'title': 'hooks_doc', 'content': ['Save both time and money with [product].', 'Save both time and money on [task].', 'Is [product] worth the price? Let’s find out!', 'Why is it challenging and costly to find a good [product category]?', 'Searching for an affordable [product type]? Check this out!', 'How to locate an affordable [service].', 'I can’t believe this costs only [price].', \\\"Don't waste your money on [X]; instead buy [X].\\\", 'What’s inside [product]?', 'Common questions I get about [product].', 'Now you can get X delivered right to your door.', 'Thinking of trying [product type]?', 'Allow me to introduce you to [product].', '[category] Tip #X.', 'Here’s how to achieve [value prop].', 'I know this sounds unbelievable, but…', 'How to get X done in just 10 minutes.', 'How to find time for X.', 'Here’s my biggest life hack for X.', 'Add more [value prop] to your day.', 'Before you try [product type], watch this first.', 'Hate [the worse alternative]? Give this a try!', 'Thinking about [worse alternative]?', 'Instead of [worse alternative], try this.', 'Still using [the worse alternative to the product]? Watch this.', 'Something that’s always annoyed me about X.', 'Don’t buy X that doesn’t work. Try this instead.', 'I tested every [product category] so you don’t have to: here’s what I found.', 'Stop doing [worse alternative]. Try [product] instead.', 'Dealing with [negative experience]? I used [product] to help.', 'Why millennials are switching to [product].', 'How to do X without [worse alternative].', 'I only get my [product category] from [brand name].', 'I no longer buy my [product category] from [worse alternative].', '[Worse alternative] can be difficult to deal with.', 'Your new X alternative.', '[value prop] without the [negative side effect].', 'I kept experiencing [pain point], so I tried this instead!', 'If you have [pain point] — you need to see this!', 'I wanted to stop doing X, so I tried this instead.', \\\"Your X isn't [adverb]; you just need X.\\\", 'My secret to [popular trend] revealed!', 'Guys, it’s here…', 'What I ordered vs. what I received.', '[Product] unboxing.', 'Let’s create X with [product].', 'POV: You tried [product].', 'A day in the life of X.', 'Get ready with me to do [task].', '“Put a finger down” [product category] edition.', 'Trying home remedies for X.', '[Product category] ASMR.', 'TikTok made me try [product].', 'Things TikTok made me try #13.', 'This [product type] is going viral on [social media platform].', 'I tested the viral [product type] to see if it lives up to the hype.', 'This [product type] has over 5,000 reviews… let’s see if it’s worth it.', '[Publication] can’t stop raving about us.', 'It’s so good it sold out in a week.', 'Are you [accomplishing the goal optimally]?', 'Life Hack: Try [product] for [pain point].', 'My go-to [product] for [pain point].', 'How to easily [task].', '[Task] has never been easier than with [product].', 'My favorite [product] to make [hard task] simpler.', 'Here’s my top product for [task].', 'Struggling to do [task]?', 'I’ve been struggling with [task], but [product] has really helped.', 'Easiest way to do [task]?', 'Make your week easier.', 'Why adults avoid [task]… [product] makes it easy.', '[Product] made [task] so much easier! You’ve got to try it.', 'When I use [product], it’s one less thing I have to worry about.', 'How to do [X] in half the time.', 'This trick/hack/method will save you hours...', 'Easy hack to [X]...', 'Simple [X] that will make you [X].', '5 Ways [product] Helps with [pain point].', '3 reasons to buy [product].', '3 reasons to try [service].', 'Get [value prop] in 3 steps.', 'Here are 3 ways [worse alternative] affects your life.', '5 things you didn’t know about [topic].', 'The ultimate [X] checklist to [action].', 'Reasons why [X].', 'Here are the 3 best ways to [X].', 'Here are [X] mistakes you might be making...', 'If you want [X], do these 5 things...', 'The internet’s #1 [product type].', 'The best way to [accomplish the goal of the product].', 'What makes [the product type] the best?', 'My skin has never looked better with [product].', 'The best way to find X in 2022.', '[Product] changed how I do [task], and I’m never going back.', 'Why is [product] so good though?', 'After hours of researching, I found the best [product type] for [task].', 'I found the best [product category] for [value prop].', 'This is going to blow your mind.', 'How I got [X] in 24 hours.', 'Must-have [products] for [X].', \\\"The best [target audience] know something that you don't.\\\", 'Hey, [customer type], you’ve got to try this.', 'People looking for [product category], stop scrolling.', 'Wait, have you tried X?', 'Take control of your X with [product].', 'Imagine if X was also X.', 'Watch this if you X.', 'PSA: [statement about product category].', 'Did you know? [fact about product category].', 'I just found out [fact about product category].', 'Are you one of [fact about product category] people who do X?', 'New customers get [discount].', 'Take [discount] off when you try [product].', 'I didn’t know X could be related to X.', 'Why is it important to [do product-related task]?', \\\"99\\\\\\\\% of your [target audience] don't. To be the 1% you need to [X].\\\", 'This [product] is the secret to [X].', 'Is there anything worse than [X]?', 'I will never [adjective] from learning this.', 'X people start scrolling. I have the perfect [X] for you.', \\\"Here's a challenge for you...\\\", \\\"There's nothing more painful than [X].\\\", 'What would you do if...', 'Watch till the end…', \\\"Why you're failing at [activity].\\\", 'The worst mistake you can make in [subject].', 'Avoid these common pitfalls in [topic].', 'The dark side of [popular trend].', \\\"Don't be fooled by [misconception].\\\", 'Why [common practice] is ruining your [outcome].', 'What no one tells you about [issue].', 'The hidden dangers of [activity].', 'Stop doing this if you want to succeed in [field].', 'The ugly truth about [common belief].', 'Why [habit] is wasting your time.', 'Exposing the myths about [topic].', \\\"The biggest regret you'll have in [situation].\\\", 'How [action] is destroying your [goal].', 'The shocking reality of [popular topic].', 'Why [trend] is a bad idea.', \\\"The real reason you're not seeing results in [field].\\\", 'The downside of [seemingly positive aspect].', 'What you should never do in [activity].', 'Why [common advice] is actually harmful.'], 'language': 'english', 'metadata': {}, 'modality': 'text', 'created_at': '2025-02-15T17:55:40.116866Z', 'embeddings': [[-0.019299017, 0.0035340947, -0.014854765, 0.03621153, -0.018385815, 0.0045325295, -0.026592463, 0.04368762, -0.035773195, 0.04636635, -0.004197689, -0.011902076, 0.03406855, -0.05040879, 0.008005744, 0.01403897, -0.0150617575, -0.013722394, 0.022610899, -0.014392075, -0.0077378713, -0.053866785, -0.016961219, -0.02297618, 0.009466869, -0.005674033, -0.046098474, 0.048923314, 0.028954616, 0.006794228, 0.02632459, 0.025642732, 0.0076282867, -0.038963318, -6.449495e-05, 0.018471047, 0.0045903656, 0.031876862, 0.012906599, 0.0062249987, -0.0540129, -0.0040911483, -0.020151341, -0.053379744, 0.0061245463, 0.01839799, 0.014343371, -0.009284228, 0.0079692155, -0.021977747, 0.006361979, 0.011402858, -0.04536791, -0.043176226, -0.000504164, 0.017216915, 0.07344585, 0.0073908544, 0.043127522, 0.013527577, -0.06351021, 0.04390679, 0.082310006, 0.010483568, 0.001678771, 0.013892857, -0.006909901, -0.0030835813, 4.4019227e-05, 0.03957212, -0.032144736, -0.002658942, 0.018824153, -0.02444948, 0.043030113, -0.053379744, 0.053623267, 0.010404423, 0.017557845, 0.0030120471, 0.04100889, -0.0071838615, 0.026129775, 0.0030348771, 0.030975837, -0.040594906, 0.03345975, -0.12867635, -0.017984007, -0.020942783, -0.018458871, -0.030342683, 0.016571585, -0.00032704073, -0.037161265, 0.003677163, -0.051869914, 0.03017222, -0.013162295, 0.004447297, -0.035213098, -0.035310507, -0.073835485, -0.049629524, 0.06472781, 0.052113436, 0.020699263, 0.011360242, -0.0097408295, -0.0692573, 0.031633344, -0.025861902, -0.011676819, 0.0121395085, 0.00028347335, 0.006063666, 0.007676991, -0.05367197, -0.0028750666, 0.008310145, -0.09195343, -0.066042826, 0.07037749, 0.00400896, 0.029173784, 0.007348238, -0.05449994, 0.059126835, 0.035554025, -0.019092025, -0.07938776, -0.009004179, 0.025399212, 0.035748843, 0.052990112, 0.032022975, 0.06511744, -0.035773195, -0.059370354, 0.010489656, -0.058347568, 0.0051991674, -0.013174471, 0.041252412, -0.011542883, -0.05557143, 0.020979311, -0.02055315, -0.051382873, -0.00813968, -0.0117255235, -0.04614718, 0.017289972, 0.04273789, 0.017716134, -0.014501659, 0.009290316, -0.004072884, -0.009004179, 0.01508611, 0.056204583, -0.04183686, -0.021527233, 0.04074102, 0.015719263, -0.07003656, 0.04500263, -0.029149432, -0.053087518, 0.04614718, -0.0034579944, -0.006623764, -0.0025737097, -0.03372762, -0.03265613, 0.022403907, 0.030269627, -0.0025052195, -0.009686037, -0.05367197, -0.013271879, 0.06443559, 0.0487285, 0.013990266, 0.01932337, 0.04212909, 0.009850414, 0.036917742, 0.051382873, -0.046780333, -0.043176226, 0.019749532, -0.046098474, -0.019554716, -0.021356769, -0.027663955, 0.0071716853, 0.033678915, -0.011810755, 0.008456257, -0.0031901216, -0.0405462, 0.028832855, -0.0117377, -0.03431207, 0.021868162, 0.04005916, 0.030951485, -0.0024839113, -0.01904332, -0.009655597, 0.01898244, 0.028004885, -0.016973395, 0.009978262, 0.045635786, -0.03545662, -0.022123858, -0.04921554, -0.02924684, -0.0041063684, -0.036674224, 0.009253788, -0.039523415, -0.0087058665, 0.0055157444, 0.023511926, 0.006550708, 0.05235696, 0.033898085, -0.017630901, -0.056545515, -0.037891828, 0.017691782, -0.11533142, -0.02878415, -0.025228748, -0.040083513, 0.016388945, 0.025618382, 0.0002659703, 0.014830412, -0.030342683, 0.015463566, -0.008547578, 0.013844154, 0.04663422, 0.034579944, 0.0040972363, 0.027055154, -0.0013698041, -0.017375205, -0.0052356957, 0.017375205, 0.008090977, 0.050895832, 0.043663267, -0.0074456464, 0.022416083, 0.038719796, -0.011622027, -0.006252395, -0.03358151, 0.08157945, -0.005966258, 0.023487575, -0.0015889728, -0.060539253, -0.05566884, 0.016401121, 0.036869038, -0.04359021, 0.027858771, 0.020321805, 0.03289965, -0.019432954, 0.042470016, 0.04979999, -0.020638382, 0.0657993, -0.012675254, 0.031730752, 0.014355547, -0.0038780677, -0.003018135, -0.022464788, 0.024120728, -0.06326669, -0.037770066, 0.02479041, -0.019761708, -0.013819802, 0.05674033, 0.024814762, 0.07023138, 0.045148745, 0.032120384, 0.018264055, -0.072228245, 0.04212909, -0.034945223, 0.031901214, -0.015658382, -0.02724997, -0.0014147032, 0.034653, 0.00860237, 0.06540967, -0.005555317, -0.009265964, 0.0587372, 0.0025463137, -0.0009512529, -0.011475914, 0.0041094124, -0.012328237, -0.01569491, 0.040570553, 0.06131852, -0.009107675, 0.011603762, -0.018824153, -0.08503744, 0.02091843, 0.032607425, 0.005567493, 0.002631546, -0.03326493, 0.0037228232, 0.011841196, -0.07451735, -0.010587064, 0.021941219, 0.046098474, -0.03194992, -0.09497309, -0.0067759645, -0.037916176, -0.014367723, -0.009588629, -0.0021977746, 0.004983043, -0.010830585, -0.013259704, 0.069354706, 0.0060819304, -0.021929042, 0.019603418, 0.019311193, -0.010587064, 0.0014923254, 0.008316233, 0.03090278, 0.03735608, 0.017338676, -0.029344248, -0.0071534216, -0.022269972, -0.050554905, -0.005686209, 0.02888156, -0.058201455, 0.00055477064, 0.04882591, 0.006690732, 0.021405471, -0.013515401, 0.018763272, 0.014842588, 0.010806233, -0.03662552, 0.039279893, 0.0028933308, -0.040107865, -0.005296576, -0.0044564293, 0.08849543, 0.006982957, -0.0086997785, 0.0015121115, 0.018142294, -0.033678915, -0.019530363, 0.032436963, 0.062925756, 0.013162295, -0.06497133, 0.00722039, 0.03945036, -0.0031535935, -0.010854936, 0.049824342, 0.024339898, -0.01716821, 0.018836329, 0.041885566, -0.008486697, 0.013478872, 0.029417304, 0.015707087, -0.01385633, 0.0021247184, -0.047535248, -0.034604296, 0.006922077, -0.023743272, 0.016023664, -0.02995305, 0.022708308, 0.04802229, -0.045489673, 0.033021413, -0.015548798, 0.007853543, 0.017643077, 0.0014900424, 0.021807281, -0.008553666, -0.0073908544, 0.013710218, -0.0029192048, -0.016754227, -0.0334841, 0.058980722, -0.011530707, 0.019104201, -0.03229085, 0.018921562, -0.007037749, 0.0012510878, -0.010611416, -0.00887633, 0.0014778664, -0.0003833549, -0.008937211, -0.008711955, 0.017046452, -0.016255008, -0.03701515, 0.033118818, 0.0010912772, -0.05191862, 0.03406855, 0.026592463, -0.04064361, 0.016425474, -0.0587372, -0.04712126, 0.07446864, -0.039913047, -0.02055315, -0.007329974, -0.061659448, -0.03182816, 0.016218482, -0.00878501, 0.013137943, 0.015524447, 0.024571242, -0.055181798, 0.041666396, 0.014611244, 0.05508439, -0.022708308, 0.045903657, -0.016462002, -0.045026984, 0.062682234, 0.023110118, 0.05381808, -0.04687774, 0.015646206, -0.01545139, 0.0007587193, -0.00198165, -0.043979846, -0.011116722, -0.002623936, 0.019481659, 0.026154127, -0.02595931, -0.011743788, 0.0030972792, 0.035432268, -0.0061823823, 0.005951038, 0.013174471, 0.017131684, 0.08075147, 0.030975837, -0.021624641, 0.03604107, -0.030805372, 0.01668117, -0.032096032, 0.0018751096, -0.016644642, -0.044369478, -0.007664815, -0.027079506, 0.0005745567, 0.06701691, 0.0217464, 0.035797548, -0.037088208, -0.030610556, 0.013150119, -0.042470016, 0.011007137, 0.003990696, 0.011713347, 0.011755963, -0.044466887, -0.011390682, -0.023390166, -0.011719435, -0.018653689, 0.026641168, -0.0147451805, 0.042884, 0.00062135834, -0.018434519, -0.026714224, -0.018568456, -0.035188746, -0.01716821, 0.004983043, 0.0092477, 0.066773385, -0.05177251, 0.014672124, -0.0078657195, -0.036016718, -0.0055461847, -0.030050458, 0.02009046, -0.0014185082, 0.006301099, -0.010605328, 0.0021825545, -0.03983999, 0.017789189, 0.0027837465, 0.037404783, 0.0074578226, 0.041739453, 0.072666585, -0.015877552, -0.023548454, 0.009625157, -0.03747784, 0.02233085, 0.03182816, 0.019980876, 0.019274665, -0.020979311, -0.052405663, -0.061951675, -0.04215344, -0.02077232, 0.012145597, 0.037429135, 0.09735959, 0.0125534935, -0.009497308, -0.051431578, 0.037161265, 0.02012699, -0.025813198, -0.027785715, 0.025618382, 0.040205274, 0.01579232, -0.037161265, -0.042470016, 0.058347568, 0.021892514, -0.0028172305, -0.0042463928, -0.0055066124, -0.061756857, -0.010325279, 0.022708308, -0.036065422, 0.0041763806, 0.02608107, -0.017095156, -0.023597158, -0.03453124, 0.030805372, -0.002290617, 0.014842588, 0.012736134, -0.0057196934, -0.007037749, 0.016230656, 0.0062189107, -0.02559403, 0.02924684, 0.039547767, -0.032096032, -0.032607425, -0.0012807668, 0.0054700845, -0.051285464, -0.020382686, 0.022659604, -0.05717867, 0.027517842, 0.009880854, -0.06297446, 0.042859647, 0.025399212, -0.02107672, 0.017825717, -0.035846252, -0.007634375, 0.07860849, 0.0035614907, 0.038208403, 0.033289284, -0.012145597, 0.054451235, -0.03182816, 0.043444097, 0.012157773, -0.0130770635, 0.017363029, -0.011993396, -0.03219344, 0.015305278, -0.008937211, -0.018945914, -0.020942783, 0.035480972, -0.0072569177, 0.015609679, 0.034482535, -0.0109949615, 0.038110994, -0.0017168211, 0.018653689, -0.021673346, 0.11270139, -0.02313447, -0.02279354, 0.01139677, 0.0027670043, 0.061367225, 0.0015402687, -0.047657005, 0.013771097, 0.024084201, 0.056691628, 0.012334325, -0.052016027, -0.014379899, -0.0031688134, -0.018203175, 0.038598035, -0.027323026, -0.040814076, -0.0009436428, 0.030781021, 0.0358219, 0.0007244742, -0.009716477, 0.0020592723, 0.010848848, 0.01716821, 0.06180556, -0.047145613, -0.04536791, -0.037891828, -0.009673861, -0.032729186, -0.005926686, 0.05026268, -0.015682735, -0.04161769, 0.0067516123, -0.047048204, 0.010100022, -0.009558189, -0.005920598, -0.012590022, -0.04193427, 0.0237798, -0.04921554, 0.0024275973, 0.009028531, -0.052113436, -0.012188213, 0.017472612, 0.04215344, 0.009412076, -0.0031535935, -0.0032114296, -0.0140146185, -0.013990266, -0.0032540457, -0.039547767, 0.020492269, -0.022318674, 0.031195005, 0.027274322, -0.007652639, -0.013746745, -0.04546532, -0.02995305, 0.04546532, -0.0070073092, 0.0017274752, 0.04203168, 0.033045765, 0.028150996, -0.022221267, 0.024157256, -0.080264434, 0.05191862, 0.039328597, 0.017716134, -0.013698041, -0.051967323, 0.025934957, 0.0015676647, 0.067406535, -0.0040515764, -0.013125767, -0.010934081, 0.019067673, -0.049288597, -0.010349631, -0.009753006, 0.0068307566, 0.009150292, 0.014513835, -0.023852855, 0.015341806, 0.021283712, 0.01889721, -0.0029283368, -0.029295543, -0.031633344, -0.012918775, -0.0054426882, 0.025228748, -0.025642732, 0.009959998, -0.028467573, -0.024376426, -0.029344248, -0.014672124, -0.015487919, 0.008285793, 0.027103858, -0.03124371, 0.0028750666, 0.03945036, -0.03433642, 0.008285793, -0.002009046, 0.014026795, -0.038524978, 0.03983999, 0.00872413, -0.03650376, -0.057617005, 0.028613687, 0.043297987, 0.023049237, 0.063120574, 0.004377285, 0.010903641, -0.020638382, -0.003707603, 0.007999656, 0.023122294, -0.024960876, -0.033776324, 0.016145425, 0.012943127, -0.025618382, -0.009132028, 0.02700645, 0.033167522, 0.001342408, 0.01563403, -0.015317454, 0.012577846, 0.0007324647, 0.036162827, 0.02196557, 0.01668117, 0.03160899, -0.033118818, 0.0047334344, -0.03475041, 0.01750914, 0.008669338, 0.008054448, -0.07349455, -0.0014139422, 0.030829724, 0.02444948, 0.032948356, -0.021028016, -0.025277453, -0.0066359397, 0.030367035, -0.00049008545, 0.0057562212, -0.010337455, 0.020309629, 0.01262655, 0.0022251706, -0.009777358, -0.024619946, -0.013746745, 0.020285277, 0.0008043794, -0.012029924, 0.0022099507, -0.018178822, 0.005686209, 0.064630404, 0.013247528, -0.01004523, -0.039620824, 0.010008702, -0.028564982, -0.044539943, -0.04782747, 0.0030105251, 0.020358333, 0.026641168, 0.013028359, 0.06321798, 0.013296232, 0.0017640033, -0.046561163, 0.0054639964, 0.0060240943, 0.007469998, -0.042762242, 0.016608113, -0.020041756, -0.0040394003, 0.010690561, 0.052795295, 0.0093268445, 0.031219358, 0.024400778, -0.03604107, 0.0035736668, 0.016717698, -0.074614756, 0.003637591, 0.01738738, 0.009935645, 0.023889383, 0.023609335, 0.035554025, -0.029879993, -0.004203777, 0.020906255, -0.014964349, -0.05425642, -0.016303713, -0.0016178909, -0.044612996, -0.012115156, 0.0009756049, 0.026251534, 0.016778579, -0.065604486, 0.021855986, -0.0217464, -0.013953738, -0.047949232, -0.004252481, -0.0074456464, -0.07778052, 0.005010439, -0.022014273, -0.0146843, -0.018811977, -0.035894956, -0.019006792, 0.006410683, -0.025520973, 0.016133249, 0.0071473336, -0.017411733, 0.015999312, 0.020979311, -0.01603584, -9.212884e-05, 0.0058505856, 0.017472612, -0.00012670689, -0.01124457, -0.01649853, -0.024583418, -0.0045051337, -0.022111682, 0.016997747, -0.0015136335, -0.021247184, -0.015414862, 0.008657162, 0.047754414, 0.036065422, -0.034360774, 0.024571242, 0.010100022, -0.026714224, -0.032607425, -0.027810067, -0.044199012, 0.047316078, -0.033411045, 0.017107332, 0.023049237, -0.028150996, 0.018544104, 0.015999312, -0.0029207268, -0.008200561, -0.022854421, 0.027517842, 0.010818409, 0.04636635, -0.017484788, -0.004015048, -0.014550364, 0.037161265, -0.004249437, -0.028564982, -0.012188213, 0.008468433, 0.09877201, -0.03477476, -0.022002097, 0.030561851, -0.0822126, 0.0074639106, 0.022598723, 0.012882247, 0.007421294, 0.0024823896, 0.053038817, -0.011658555, -0.00408506, 0.0024702135, 0.0073725902, 0.0030957572, 0.029100727, 0.00041474623, 0.011956868, 0.018909385, -0.016072368, -0.012328237, 0.015609679, 0.034190312, -0.020723615, 0.022744836, -0.027347378, 0.031755105, 0.017545668, -0.055376615, -0.007409118, 0.014160731, 0.004316405, 0.016303713, 0.019152906, -0.028394517, -0.015280926, -0.060636662, 0.029052023, 0.013344936, -0.046488106, -0.007299534, -0.015548798, 0.012029924, -0.04802229, -0.045806248, 0.013990266, 0.028321462, -0.026446352, -0.0057653533, -0.055961065, -0.010465303, 0.0048491065, -0.010733176, 0.022306498, 0.01333276, -0.0126630785, 0.03136547, -0.028638039, -0.0039024197, 0.0034214663, -0.045733195, 0.03255872, -0.03618718, 0.00795704, -0.02503393, 0.0094303405, -0.028857207, 0.00927814, 0.013673689, -0.0007952474, 0.023499751, -0.010246134, 0.01397809, 0.054353826, 0.04992175, -0.0012320627, -0.004979999, 0.025082635, -0.008383201, -0.025350507, -0.0014550363, 0.015889728], [0.0004025556, -0.004082042, -0.007941153, 0.016267916, -0.0036361804, 0.006489091, -0.013520446, 0.052876752, -0.035331503, 0.051334314, 0.02036502, -0.03552431, 0.0020922348, -0.039284006, 0.0024823635, 0.0132673895, -0.020834982, -0.008694298, 0.021799007, -0.04422463, -0.0066517703, -0.034656685, -0.016255865, -0.026125068, 0.00061569543, 0.014785728, -0.029234048, 0.04446564, 0.011616497, 0.00019242836, 0.0091702845, 0.035813514, 0.022112316, -0.025691258, -0.0005991263, -0.02070243, 0.030848788, 0.032752737, -0.038753793, -0.0070313546, -0.057455868, 0.022124365, -0.023269145, -0.048610944, 0.015906407, 0.008850952, -0.014665225, -0.009140159, 0.01832852, -0.0021178417, 0.02817362, 0.008977479, -0.0039193626, -0.0429714, -0.00019807694, 0.015062885, 0.061890382, -0.0036934195, 0.011965956, 0.024389824, -0.047044404, 0.026486577, 0.05123791, 0.00028337052, 0.008808775, 0.005992016, 0.005919714, 0.0035789416, 0.020810882, 0.033041947, -0.030246273, 0.006040217, -0.030607782, -0.049791873, 0.027595205, -0.06377023, 0.073651485, -0.005940802, 0.0072181346, 0.002620942, -0.0072964616, -0.022196667, 0.011200761, -0.0033168474, 0.042417083, -0.039597314, 0.019063588, -0.11828583, -0.011417667, -0.02894484, 0.0061155315, -0.03834408, 0.011128459, 0.026052766, -0.04658649, 0.035427906, -0.031885114, 0.024365723, -0.02933045, -0.008399065, -0.052973155, -0.052250136, -0.06806014, -0.0587573, 0.08406295, 0.03010167, 0.047984328, -0.0068506002, 0.0016975872, -0.053455167, 0.047430012, -0.018171865, 0.0044646394, 0.020943435, -0.030294474, 0.022389473, 0.021750806, -0.058516297, -0.010369291, 0.028824337, -0.089847095, -0.028318224, 0.057022057, 0.008634046, -0.00576306, 0.015002633, -0.053503368, 0.046345484, 0.027812112, 0.0060341917, -0.047839724, 0.027643407, 0.050659496, 0.02853513, 0.05711846, 0.015846156, 0.05003288, -0.021654403, -0.064782456, 0.01214671, -0.066373095, -0.0031722437, -0.020931385, 0.045405563, 0.0074952915, -0.044923548, 0.020087864, 0.000472598, -0.04501995, 0.00823036, -0.004548991, -0.039597314, 0.02419702, 0.048345838, -0.0024929075, -0.039621413, 0.012423867, 0.018870782, -0.010303013, 0.02189541, 0.07663996, -0.044272833, -0.019497398, 0.024160868, 0.0010303013, -0.08902767, 0.044682544, -0.017135538, -0.044345133, 0.049141157, 0.0021886372, -0.016966835, 0.00018630906, -0.03788617, -0.018015211, 0.031620007, 0.019642003, 0.014219363, -0.01603896, -0.06217959, -0.031065695, 0.086714014, 0.054660197, -0.00763387, 0.028004916, 0.042079676, -0.014038609, 0.009953555, 0.052924953, -0.06757813, -0.054370992, 0.026823986, -0.029908866, -0.034102373, -0.010935655, -0.05707026, -0.016593274, 0.041236155, -0.009302838, -7.639707e-05, 0.0104897935, -0.04738181, 0.001467125, 0.024871835, -0.03870559, 0.0043561864, 0.035765316, -0.0054678274, 0.023968063, -0.030294474, 0.007639895, 0.022052065, 0.016231766, -0.029017143, 0.017015034, 0.038078975, -0.03588582, 0.007151858, -0.039308105, -0.030414978, -0.012387717, -0.035331503, 0.015448495, -0.023968063, -0.003008058, 0.017894708, 0.031812813, 0.008453291, 0.028125418, 0.05981773, -0.0038139226, -0.05663645, -0.032897342, 0.014978533, -0.09813771, -0.051286113, -0.016581224, -0.037717465, 0.02071448, 0.032294825, 0.035403807, 0.042778593, -0.030969292, 0.0008111364, 0.0032023694, 0.02343785, 0.05403358, 0.039404508, 0.012845629, -0.0012042776, 0.010321089, -0.032222524, 0.0047538467, 0.025594855, 0.026076866, 0.02583586, 0.024401873, -0.008881077, 0.042754494, 0.033764962, -0.007591694, 0.007844751, -0.03164411, 0.088401064, -0.017557299, 0.0013775008, -0.0032806965, -0.061649375, -0.045959875, -0.00381091, 0.036946245, -0.033066045, 0.009754725, 0.007278386, 0.010080082, -0.038464583, 0.04340521, 0.031017493, -0.018039312, 0.07273566, -0.0044345134, 0.019774556, 0.008585844, 0.02108804, -1.7381157e-05, -0.01562925, 0.011604447, -0.05205733, -0.024329573, 0.026823986, -0.026390174, -0.021329045, 0.0508523, 0.06063715, 0.09158234, 0.014845979, 0.02459468, -0.0009715561, -0.09346219, 0.02617327, -0.029475054, 0.041187953, -0.004907488, -0.015810004, -0.007953203, 0.023028139, 0.012652824, 0.056973856, 0.023365548, -0.010369291, 0.051527116, -0.00013415382, -0.007784499, -0.017051186, 0.023232995, -0.020039663, -0.01327944, 0.048008427, 0.071819834, -0.004458614, 0.01912384, -0.025618955, -0.093703195, 0.022015912, 0.040922847, 0.008453291, -0.010622347, -0.044706643, -0.0124600185, 0.0024371748, -0.061311968, -0.009718574, 0.008905178, 0.013544546, -0.02078678, -0.095968656, -0.014147062, -0.030680085, -0.010272888, -0.0024552504, -0.022497926, 0.0041061426, 0.005091255, -0.023630654, 0.054226387, 0.013002283, -0.010248787, 0.0071337824, 0.011128459, 0.0037596961, 0.0013616849, 0.012339516, 0.041284356, 0.040440835, 0.010592221, -0.04429693, -0.036247328, -0.017557299, -0.04849044, -0.008748524, 0.009802925, -0.08141188, 0.015436444, 0.024305472, -0.017039135, 0.03393367, -0.014580873, -0.0026902312, -0.011965956, -0.006410764, -0.02540205, 0.043188304, 0.012640773, -0.06940977, -0.021232642, -0.0057299216, 0.07119322, 0.005196695, -0.0023724043, -0.005998041, -0.011520094, -0.05750407, 0.0012216, 0.028993042, 0.041597664, 0.014689325, -0.048635043, 0.0047538467, 0.0041784444, 0.002547134, -0.009146184, 0.06314362, -0.014665225, -0.032656334, 0.010441592, 0.03287324, -0.019834807, 0.0030547532, 0.022172567, -0.0007132276, -0.02305224, 9.541396e-05, -0.031933315, 0.012604622, -0.004657444, -0.0017292192, 0.028438726, -0.030752387, 0.01678608, 0.053406965, -0.029258149, 0.03010167, -0.043670315, -0.009790875, 0.024968239, 0.028077219, 0.02108804, -0.018882833, -0.010971806, 0.00033345463, -0.021063939, -0.026004566, -0.039284006, 0.05547962, 0.018159814, 0.020967536, -0.02655888, 0.05278035, 0.0024718195, -0.012954081, 0.005995028, 0.007314537, 0.03562071, 0.009296813, -0.010086108, -0.02390781, 0.009989706, -0.0041272305, -0.047526415, 0.018123664, 0.026462477, -0.041645866, 0.019834807, 0.008682247, -0.010863353, -0.010893479, -0.07215725, -0.025739457, 0.07500112, -0.036898043, -0.013725301, -0.023931911, -0.089413285, -0.04224838, 0.03055958, -0.01640047, 0.018858733, -0.005452764, 0.02459468, -0.056781054, 0.029812463, 0.0123997675, 0.04253759, -0.04379082, 0.026486577, -0.021003688, -0.024582628, 0.08247231, 0.022425624, 0.05899831, -0.04651419, 0.017689852, -0.00819421, 0.017762154, -0.0008849445, -0.0142916655, -0.02930635, 0.0039073126, 0.025956364, -0.0067481725, -0.044055928, -0.038030773, 0.022136416, 0.021955661, -0.0038621237, -0.0049044755, 0.008670197, 0.011905705, 0.054419193, 0.031041594, 0.015834104, 0.018545425, 0.0136771, 0.002223282, -0.015581048, -0.009308863, -0.027643407, -0.049044754, -0.011737, -0.04918936, -0.00400974, 0.046032175, 0.02030477, 0.023196843, -0.02111214, -0.030728286, 0.01368915, -0.044417437, 0.03055958, -0.040055223, 0.001111641, 0.007965254, -0.04576707, 0.01329149, -0.02817362, 0.008465341, -0.011863529, 0.0033590235, -0.033066045, 0.049936477, -0.0066276696, -0.02420907, -0.0008540656, -0.04109155, -0.0071337824, -0.009055806, 0.011248963, 0.014978533, 0.050659496, -0.050129283, -0.009338989, -0.0018256217, -0.021461599, -0.0075314427, -0.0151592875, 0.022003863, -0.013183037, 0.019437147, -0.024642881, 0.005256947, -0.015990758, 0.031957418, -0.0041844696, 0.0066216444, 0.004859287, 0.04065774, 0.04726131, -0.005835362, -0.008784675, 0.009501668, -0.07162703, 0.013460194, 0.016533023, 0.0137614515, 0.0018798481, -0.028366426, -0.04494765, -0.057600472, -0.027812112, -0.0029734136, 0.014833929, 0.04065774, 0.10102978, 0.038416382, -0.0022368385, -0.038536884, 0.03938041, 0.016496873, -0.045935776, -0.014219363, 0.05244294, 0.030222174, 0.01447242, -0.036175024, -0.0313067, 0.05822709, 0.022015912, -0.016171513, -0.0047237207, -0.001937087, -0.044827145, 0.0009903847, 0.025329748, -0.039669614, 0.013544546, -0.02078678, -0.019919159, -0.029764261, -0.02305224, 0.050370287, -0.0058504245, 0.007284411, 0.031981517, 0.0017894708, 0.020521674, 0.028438726, -0.0070554554, -0.008778649, 0.037331853, 0.040995147, -0.037428256, -0.0087967245, -0.016882481, 0.008844926, -0.055383217, -0.033403452, 0.023702957, -0.019364845, 0.018593626, 0.048442237, -0.009700498, 0.054178186, 0.002532071, -0.03562071, 0.045935776, -0.0047899974, -0.000121162084, 0.047140807, 0.0021961688, 0.02935455, 0.0010408454, -0.011158586, 0.04617678, -0.031475406, 0.021184443, 0.017039135, 0.009134133, 0.0029267187, -0.016316118, -0.038826093, -0.0061366195, 0.01212261, -0.021943612, -0.029089443, 0.033764962, -0.013737352, 0.019738404, 0.05755227, -0.024377773, 0.059094712, -0.006947003, 0.011815327, -0.013785552, 0.11471894, -0.025112841, -0.014544722, 0.019075638, -0.00018094291, 0.04350161, -0.0029884763, -0.03352396, 0.01638842, 0.015255691, 0.059624925, -0.010025856, -0.04497175, -0.017738054, -0.017099388, -0.026679382, 0.03272864, -0.012116585, -0.014568822, -0.016870432, 0.009338989, 0.037042648, 0.009085933, -0.011261013, -0.0038560985, 0.0033590235, 0.044851247, 0.074085295, -0.056058034, -0.06719252, -0.013098685, -0.041212052, -0.020533726, -0.0051846453, 0.07196444, -0.024076516, -0.030848788, -0.01606306, -0.07312127, 0.0010039413, 0.0052328464, -0.0020124014, 0.0011026032, -0.03945271, 0.031499505, -0.03788617, 0.0010348202, 0.013990408, -0.053744376, -0.004777947, 0.013038433, 0.03834408, 0.024028314, -0.0018406846, -0.010122259, 0.00508523, 0.011592397, -0.010658498, -0.039356306, 0.018473122, -0.021750806, 0.01640047, 0.029209947, -0.0051575317, -0.05282855, -0.06608389, -0.026125068, 0.04106745, -0.022208719, 0.00093691144, 0.0313549, 0.018051362, 0.037355956, -0.036584735, 0.027402401, -0.0626134, 0.033017844, -0.010959756, -0.016701726, -0.008905178, -0.05972133, 0.01567745, -0.01679813, 0.063240014, 0.000861597, -0.010013806, -0.017882658, 0.0099776555, -0.04882785, -0.02461878, -0.012206962, -0.019425096, 0.008435216, -0.0018934046, -0.028390527, -0.0023739107, 0.0068988013, 0.02308839, -0.013665049, -0.05046669, -0.017280143, -0.00028261737, 0.01600281, 0.025353849, -0.006657795, 0.00200487, -0.019895058, -0.015954608, -0.018931035, 0.0009768282, -0.0019340744, 0.0010882935, 0.030848788, -0.029908866, -0.012080434, 0.03164411, -0.024847735, 0.008712373, 0.006802399, 0.028077219, -0.035042297, 0.04771922, 0.011483944, -0.0105681205, -0.056588247, 0.04424873, 0.0470203, 0.019834807, 0.042200178, 0.010423517, -0.0006405492, -0.010351215, -0.006808424, 0.006736122, 0.017051186, -0.036078624, -0.026414275, 0.0313067, 0.024172919, -0.00821831, -0.014002458, 0.026655281, 0.026004566, 0.0074470905, 0.020955486, -0.012472069, 0.03010167, 0.01133934, 0.041621763, 0.033307053, 0.009332963, 0.02426932, -0.034198776, 0.031186197, -0.017701903, 0.001273567, 0.013086635, 0.005199708, -0.051768124, 0.001132729, 0.025161043, 0.020630127, 0.008507517, -0.022991989, 0.004323048, -0.008519568, 0.043573916, -0.0036663061, -0.007121732, -0.014219363, 0.010092133, -0.017328342, 0.017472947, 0.0027158381, -0.016966835, -0.0013933169, -0.016219715, -0.003524715, 0.011773151, 0.007585669, -0.007513367, -0.015882306, 0.082665116, 0.013363792, -0.024847735, -0.040826444, -0.0020952474, -0.024703132, -0.045140453, -0.058950108, 0.004970752, 0.030655984, 0.0030306524, 0.0049797897, 0.061552975, 0.025305647, 0.021304945, -0.03207792, 0.0012517257, 0.002391986, -0.0006349006, -0.036873944, 0.017774204, -0.007718222, 0.022027964, 0.00704943, 0.054853003, 0.034271076, 0.053310562, 0.038271777, -0.0049797897, -0.019256392, 0.020485524, -0.0587573, 0.022811234, 0.017750103, -0.00040971048, 0.018171865, 0.031836916, 0.003768734, -0.026727583, 0.0044616265, 0.018617727, -0.015086986, -0.05629904, -0.0006567418, -0.021353146, -0.049791873, -0.010236736, 0.015448495, 0.011604447, 0.01014636, -0.051575318, 0.00419652, -0.0547084, -0.0047749346, -0.035693012, -0.0021449549, -0.018015211, -0.062227793, -0.011393567, -0.0147254765, -0.009814976, -0.012291314, -0.034897693, -0.040802345, 0.0026766746, -0.026751684, 0.013628898, -0.01444832, -0.029764261, 0.013460194, 0.015400294, -0.03164411, -0.007959229, 0.002908643, 0.009869202, -0.0066758706, -0.0055672424, -0.03484949, -0.037042648, -0.008212285, -0.017665751, -0.0071759587, -0.008808775, -0.020847034, -0.0059769526, 0.011532145, 0.03824768, 0.023799358, -0.013749402, 0.034873594, -0.0068204743, -0.025884062, -0.035042297, -0.03284914, -0.04188687, 0.030342676, -0.02894484, -0.006874701, 0.034102373, -0.015303891, -0.0016840305, 0.022365373, -0.0096040955, 0.013580698, -0.029089443, 0.024462126, 0.0079291025, 0.032294825, -0.015460545, -0.0022744955, -0.007615795, 0.027040891, -0.0031812813, -0.05514221, -0.00723621, 0.0017141564, 0.1017046, -0.016689677, -0.0065734433, 0.02855923, -0.07519392, 0.023546303, 0.025932264, -0.02501644, -0.0027052942, 0.0067782984, 0.06912057, -0.0071096816, 0.0024673005, -0.0062360344, 0.01678608, -0.0032957592, 0.033114247, -0.014484471, 0.035500206, 0.03492179, -0.012869729, -0.042344783, 0.012285289, 0.02351015, -0.00957397, 0.024895936, -0.019846858, 0.010049957, 0.01915999, -0.065939285, -0.0070313546, 0.0074470905, 0.0052448967, -0.022750981, 0.0076820715, -0.021292895, -0.0058233114, -0.03721135, 0.034873594, 0.010718749, -0.06560188, -0.02069038, -0.027547004, 0.003696432, -0.03631963, -0.036970347, 0.008712373, 0.007772449, -0.0056003807, -0.016292017, -0.046080377, 0.0041814568, 0.020883184, -0.041477162, 0.01756935, 0.015412344, -0.020172216, 0.01950945, -0.032102022, -0.022377422, -0.0044977777, -0.035379704, 0.047213107, -0.024847735, 0.01567745, -0.015207489, 0.0126769245, -0.030029368, 0.011833402, -0.009742674, 0.009194385, 0.021943612, 0.0016554111, -0.0017638638, 0.08430395, 0.06584288, -0.013195087, -0.009134133, 0.021738756, -0.02499234, -0.010441592, -0.0069891787, 0.01601486], [-0.04829467, -0.015156305, -0.030055726, 0.06109229, -0.020223977, -0.024801228, -0.028350933, 0.024240747, -0.010263785, 0.070200086, -0.041825797, -0.016662596, 0.015016186, -0.015179659, 0.025221588, 0.0048750057, -0.009604054, -0.016300619, -0.023785358, -0.01591529, -0.016627565, -0.074543804, -0.04630964, -0.03472639, -0.02937848, -0.022162301, -0.015401516, 0.016475769, 0.041709032, 0.015308103, 0.019733557, 0.035823997, 0.031503633, -0.0070818947, 0.00042984707, -2.6979473e-05, 0.031947345, 0.011443128, 0.02587548, 0.022173978, -0.06576295, -0.012575763, 0.028911412, -0.04885515, -0.027113207, -0.030896444, -0.015144629, -0.013860197, -0.002287166, 0.0005028262, -0.024007214, 0.02000212, 0.00029264632, -0.014946125, 0.0028447264, 0.01842577, 0.07417015, -0.032250937, 0.057822824, -0.012003607, -0.020515893, 0.018682657, 0.06753781, -0.029471893, -0.010760043, -0.00108374, -0.043016817, 0.03860304, 0.05371264, 0.05259168, -0.00702935, 0.027907219, 0.030873092, -0.0054296474, 0.009078604, -0.060064744, 0.07290907, 0.035170104, 0.0066673732, 0.027580272, 0.042993464, 0.0053099617, -0.0025936782, -0.020235654, 0.0052924464, -0.002259434, 0.049041975, -0.12134386, -0.032741357, 0.023633562, 0.0018390741, 0.0063287504, 0.0051348116, 0.007689081, -0.029752132, 0.04135873, -0.043600652, 0.018052118, 0.010462288, 0.0267162, 0.019523377, -0.025501827, -0.053946175, -0.030989857, -0.0029118673, 0.023131466, 0.03710843, 0.030079078, -0.005137731, -0.024264101, 0.005531818, -0.0017704737, -0.036174294, 0.008558992, 0.00639881, 0.05828989, -0.036524594, -0.053292282, -0.014245526, -0.022535956, -0.10742528, -0.035707228, 0.063007265, 0.028864706, 0.047640778, 0.0067199185, -0.04950904, 0.038135976, 0.019184753, -0.039326996, -0.046659935, 0.032741357, 0.016989542, 0.041802447, 0.021414995, 0.024287455, 0.06529589, -0.0042649005, -0.026809614, 0.019733557, -0.061886303, 0.009808395, -0.009417227, 0.053245574, -0.014432353, -0.0019908706, -0.037575494, 0.019009603, -0.05147072, -0.01325301, -0.00021236927, -0.0527318, -0.028514406, 0.026132368, 0.009983545, -0.040261127, 0.00036763237, 0.029051533, -0.037528787, 0.05175096, -0.014607503, -0.049322214, -0.02475452, 0.0414755, -0.010228755, -0.03636112, 0.04367071, 0.0010450612, -0.067818046, 0.02007218, 0.021917092, -0.017795231, 0.02073775, -0.03640783, -0.028374286, 0.03381561, 0.035847347, 0.0012953796, -0.0133347465, -0.06632344, -0.017199721, 0.06576295, 0.04598269, -0.039747354, -0.008763334, 0.058383305, 0.05955097, -0.0027498535, 0.040191066, -0.02678626, -0.010292976, 0.009212885, -0.047757544, -0.0021937527, -0.036057528, -0.0068425233, 0.0017690142, -0.0040167714, -0.007840877, 0.018273974, -0.024894642, -0.035356928, 0.02171859, -0.02098296, -0.005931744, -0.018203914, 0.038229387, 0.013755106, 0.024894642, 0.015483253, 0.006252852, -0.009142825, 0.008710789, 0.0002731244, -0.022173978, 0.032928184, -0.021998828, -0.002608274, -0.026225781, -0.043203644, 0.013941933, -0.04423119, 0.018892838, -0.016919482, -0.0053333146, 0.019803617, 0.008494771, 0.012902711, 0.039770707, -0.015623372, -0.005003449, -0.040541366, -0.061839595, 0.024988053, -0.103968985, -0.038929988, -0.040518012, -0.02853776, -0.00054187, 0.027813805, -0.009469772, 0.01667427, -0.02112308, -0.014817683, -0.009557347, 0.029261712, 0.02853776, 0.00010408649, -0.039957535, 0.035170104, 0.017538344, -0.04175574, 0.007829201, 0.041942567, -0.013825166, 0.06931266, 0.04843479, 0.015448222, -0.0020974202, 0.029682072, -0.020866193, 0.05618809, -0.041872505, 0.057682704, -0.026692847, 0.011472319, -0.008062734, -0.061606064, -0.07986836, 0.021029666, 0.024310809, -0.017620081, 0.015494929, 0.034749743, -0.0013158137, 0.023867095, 0.07160129, 0.057495877, -0.070013255, 0.040401246, 0.009884293, 0.02077278, 0.01241229, 0.005426728, 0.037435375, -0.03423597, 0.041452147, -0.06137253, -0.022033859, 0.0033103332, -0.017351517, 0.0018507508, 0.03453956, 0.011279655, 0.048761737, 0.002713364, 0.022932962, 0.0069884816, -0.03281142, 0.022173978, -0.009563185, 0.011168726, -0.040891666, -0.011168726, -0.016464092, 0.030709619, -0.0133347465, 0.07417015, -0.020866193, -0.05231144, 0.06310067, -0.010065282, -0.015378162, 0.0010414122, 0.020831162, -0.0015413192, 0.016744332, 0.050583296, 0.0667905, -0.038579687, 0.036197647, -0.032647945, -0.07300248, 0.008208693, 0.04294676, -0.0034212617, -0.004877925, -0.027930573, -0.027183266, 0.026062308, -0.0478276, -0.0036985823, -0.013766783, 0.020504216, -0.018974574, -0.08327795, -0.02440422, -0.077626444, 0.019464994, -0.0151096, 0.01447906, 0.024731169, -0.040307835, -0.017036248, 0.025011407, -0.029915605, -0.008523962, 0.029168298, 0.0057711895, 0.03185393, 0.0013939014, 0.030616205, 0.015973672, 0.01996709, 0.012015284, -0.016615888, 0.0012523219, -0.042152748, -0.026692847, -0.004010933, 0.07398333, -0.047056943, 0.022115596, 0.08304441, -0.020842839, 0.014035346, -0.042152748, -0.007280398, 0.015518283, -0.0038795706, -0.035170104, 0.009820072, 0.00695929, -0.008488933, 0.027533567, 0.012435644, 0.037972502, 0.00850061, -0.077673145, 0.023586854, -0.009253753, -0.05539408, -0.009341328, 0.03874316, 0.03318507, 0.014700916, -0.006381295, -0.0015092085, -0.0045509785, -0.004422535, 0.0007042486, 0.038439568, -0.017596727, 0.013439837, 0.012435644, 0.032321, -0.023411704, 0.029728778, 0.012458997, 0.008985191, 0.005882118, 0.01842577, -0.069265954, -0.051143773, 0.03696831, -0.06945278, 0.039467115, -0.029401831, -0.009370521, 0.03923358, -0.011326361, 0.04857491, -0.04268987, 0.03780903, 0.02440422, 0.007087733, 0.027066499, 0.023621885, 0.0063462653, 0.015424869, 0.015681755, -0.0548336, -0.0038241064, 0.026692847, -0.08183004, 0.043997657, -0.012458997, 0.023586854, 0.01220211, -0.006147762, 0.0015588342, -0.004822461, -0.01279762, -0.031760518, -0.023575177, -0.019523377, -0.0013442755, -0.016849421, -0.0019558407, 0.028304227, 0.017806908, -0.036944956, 0.01947667, 0.032531176, -0.079448, 0.030125786, -0.08449232, -0.024801228, 0.049882695, -0.023411704, -0.017806908, -0.0012318877, -0.06146594, -0.012996123, 0.05095695, -0.016896129, -0.0044779996, 0.0034416958, 0.016207205, -0.05095695, -0.00930046, 0.024544341, 0.043997657, 0.016230559, 0.033371896, 0.019184753, 0.0037686422, 0.019558407, 0.024731169, 0.03626771, -0.060718637, -0.011361391, -0.036034174, 0.032647945, -0.0034738067, -0.023633562, 0.011752559, -0.010783397, 0.03122339, 9.053973e-06, -0.019710204, -0.016172174, -0.005727402, 0.039910827, 0.023294939, -0.015051216, 0.05511384, 0.00954567, 0.08878933, 0.022839548, -0.07795339, 0.0386731, -0.007975159, -0.005674857, -0.032110818, -0.016662596, -0.006171115, -0.07916776, -0.01325301, -0.015459899, 0.022500925, 0.005867522, 0.011215433, 0.038439568, 0.016510798, 0.004317445, -0.025198234, -0.028304227, 0.04913539, -0.0012450239, 0.0326713, -0.038556334, -0.0274168, -0.004661907, -0.015681755, -0.015027863, 0.001157449, 0.030406024, 0.0012946498, 0.032741357, -0.016183851, -0.024801228, -0.05189108, -0.009831749, -0.030102432, 0.00660899, 0.0070643798, -0.0011625575, 0.038135976, -0.0077124345, -0.0019222703, -0.010252108, -0.016370678, 0.0029644123, 0.017818585, -0.028771292, 0.030592851, 0.008535639, 0.00032931834, 0.023785358, -0.037879087, 0.003675229, -0.014607503, 0.02930842, -0.010579055, 0.025548534, 0.07921447, -0.003479645, -0.031760518, 0.01031633, -0.02517488, 0.00335704, 0.0358707, 0.00095310743, 0.032180876, -0.028724587, -0.05034976, -0.03542699, 0.018262297, -0.04219945, -0.019173076, 0.025361707, 0.07697255, 0.0022608934, -0.0066673732, -0.057495877, 0.019324875, 0.017982058, -0.00639881, -0.011361391, -0.02615572, 0.058103066, 0.012283848, -0.016464092, -0.02699644, 0.074263565, 0.007986836, -0.049976107, -0.039910827, -0.017585052, -0.04507191, 0.012085344, -0.0011873705, -0.043834183, 0.015319779, -0.009679952, -0.011904356, -0.050162934, -0.014420676, -5.2362528e-05, -0.0020098453, 0.04082161, -0.02594554, -0.024871288, 0.01870601, -0.0062294984, 0.021917092, 0.0049567427, 0.01115705, 0.031176684, -0.03507669, -0.034352735, 0.011273816, 0.01339313, -0.032788064, 0.001968977, -0.016615888, -0.06669708, 0.049322214, 0.006486385, -0.102287546, 0.008267076, 0.032928184, -0.030943152, -0.0059959656, -0.060344983, -0.011162887, 0.04866832, 0.011122019, 0.038089268, 0.06604319, 0.034516208, 0.046239577, -0.0020010876, 0.034422796, 0.013136243, -0.04175574, 0.0022550551, -0.0053070425, -0.010678306, -0.02280452, 0.00019868568, -0.02587548, -0.012248817, -0.0019908706, -0.010614085, 0.01115705, 0.0181105, -0.03178387, 0.047220416, 0.028981471, 0.03783238, -0.018227268, 0.124519914, -0.013241333, -9.824815e-05, 0.019908708, -0.0047027753, 0.05380605, -0.007875908, -0.057355758, 0.033371896, -0.0011756938, 0.05791624, 0.0096274065, -0.03437609, 0.018986251, 0.0034504533, 0.00078452565, 0.046706643, -0.043133587, -0.04056472, 0.016300619, 0.0555342, -0.00039700646, -0.01909134, -0.025151527, -0.017993735, -0.012225464, 0.02112308, 0.034959923, -0.029121593, -0.050162934, -0.027790453, -0.02105302, -0.03381561, -0.023446735, 0.045725804, -0.031667106, -0.061979715, -0.0001835425, -0.04619287, 0.014677563, -0.017771877, -0.011168726, -0.008623214, -0.030709619, 0.016277265, -0.017678464, -0.0003192837, 0.035403635, -0.043203644, -0.00036069934, 0.07388991, 0.038135976, 0.005041398, -0.024707815, -0.02930842, -0.01220211, -0.018624274, -0.005158165, -0.0077883326, 0.015646726, -0.046356343, 0.024544341, 0.020679366, 0.0055610095, -0.01818056, -0.059317436, -0.008897616, 0.02769704, 0.0177602, 0.017643435, 0.08537974, 0.0137084, 0.006906745, 0.014105407, 0.025268294, -0.073095895, 0.026739553, 0.046286285, -0.0074847396, -0.0019047552, -0.015506606, 0.045538977, -0.026832966, 0.025128175, 0.018332358, 0.034399442, -0.013509897, 0.014420676, -0.042900052, -0.0029323015, 0.00027786804, 0.020679366, 0.012879357, -0.033488665, -0.011629954, 0.038229387, 0.011840134, 0.043156937, -0.028257519, -0.026179073, -0.03909346, -0.008810041, -0.0108184265, 0.014490736, 0.017351517, 0.015319779, -0.024287455, -0.023376675, -0.031550337, -0.0102229165, -0.015856905, 0.0034212617, 0.033488665, 0.00671408, -0.0032198392, 0.003289899, -0.043156937, 0.0056982106, 0.009312137, 0.00071629015, -0.005461758, 0.01902128, 0.022372482, -0.041942567, -0.04294676, 0.007671566, 0.028350933, 0.014338939, 0.09444083, -0.008757495, -0.021917092, -0.02804734, -0.0043904246, 0.03115333, 0.0013304095, -0.033932377, 0.02000212, 0.0066732117, 0.029098239, 0.012820974, -0.011542379, 0.044744965, 0.050022814, -0.015226366, 0.0053829406, -0.004489676, -0.009679952, 0.028397638, 0.017982058, 0.022687752, 0.027183266, 0.050162934, -0.027253326, 0.019359903, -0.013871873, 0.03290483, 0.0009290243, 0.023259908, -0.055067133, -0.00965076, 0.05259168, -0.0056135547, 0.020796133, -0.02433416, -0.018075472, -0.058243185, 0.04885515, 0.00018454598, 0.003975903, -0.01339313, 0.041825797, 0.0070527033, -0.010742528, 0.019873677, 0.0004612281, -0.0065973136, 0.02650602, -0.024357514, -0.030429378, -0.026179073, -0.030943152, 0.025922187, 0.024474282, 0.031643752, 0.002465235, -0.003021336, -0.02052757, -0.033068303, -0.009557347, -0.021975476, 0.00082977273, -0.0013676289, 0.031013211, 0.002282787, 0.07440368, 0.022045536, 0.0034416958, -0.046916824, -0.032321, 0.009697467, 0.020901224, -0.041288674, 0.017059602, 0.0062995586, 0.008518124, 0.0016449495, 0.040237773, -0.0020331985, 0.022103919, 0.049088683, -0.026038954, -0.033652138, -0.0030855576, -0.050162934, -0.021660205, -0.011845972, 0.034866508, -0.0028724587, -0.005990127, -0.0024243668, -0.050723415, 0.0037131782, 0.011933547, -0.009662437, -0.042012624, -0.033231776, -0.026249133, -0.023726976, -0.024310809, 0.0123305535, 0.02853776, 0.023691945, -0.015763491, 0.0018040441, -0.01007112, 0.003319091, -0.025385061, 0.004863329, -0.020796133, -0.058523424, 0.027953926, -0.012097021, -0.03675813, 0.024310809, 0.0007049784, -0.022582661, -0.015051216, -0.013474867, -0.025455121, -0.020247329, -0.017900322, 0.008319621, 0.022711106, 0.0074146795, 0.017982058, -0.025782067, 0.037365314, 0.013264687, 0.014338939, 0.009078604, -0.028514406, 0.0181105, -0.04056472, 0.017468285, -0.003479645, -0.00954567, -0.02930842, -0.00954567, 0.0025717847, 0.008728304, -0.063007265, -0.008862586, -0.04098508, -0.02552518, -0.008675759, 0.0031818901, -0.032601237, 0.009983545, 0.00047545903, 0.019500023, 0.0056573423, -0.03493657, 0.02094793, -0.0018595082, 0.013404807, -0.0049713384, -0.027486859, 0.015284749, 0.03360543, 0.03682819, 0.022279069, -0.025548534, -0.021286553, 0.015308103, 0.040891666, -0.026646141, -0.015658403, 0.03115333, 0.050816827, -0.018659305, -0.00975585, 0.011104505, -0.048154548, -0.020270683, 0.021496732, 0.028817998, 0.006416325, 0.0043904246, 0.028771292, -0.028911412, 0.005899633, 0.0017106308, -0.010100312, 0.0002266002, 0.005318719, 0.0274168, 0.006054349, 0.017281458, -0.0239138, 0.0047903503, -0.0032461118, 0.041452147, -0.028374286, 0.025922187, -0.045305446, 0.0071986616, 0.026179073, -0.033418603, -0.006906745, 0.00346213, 0.01818056, 0.03878987, 0.020095533, -0.0131128905, -0.0067783017, -0.04437131, 0.040961727, -0.024474282, -0.028070692, 0.012984447, 0.0049538235, 0.0040080138, -0.029121593, -0.06721086, 0.00912531, 0.015319779, 0.0050122067, 0.0048662485, -0.094674364, -0.020819487, 0.017643435, -0.0029527356, 0.011122019, 0.02573536, -0.02307308, -0.019710204, -0.029588658, -0.0020988798, -0.029612012, -0.028817998, -0.0042357086, -0.027393447, 0.0034738067, -0.04318029, 0.021496732, -0.04196592, 0.02059763, -0.0033833124, -0.0022273231, 0.0009472691, 0.0072745597, -0.017141338, 0.025898835, 0.028584465, -0.018565891, -0.0010764422, 0.053525813, -0.00027057013, 0.0075139315, 0.017316489, 0.015553312], [-0.007790109, -0.011703004, -0.022668624, -0.00071842945, -0.001183383, -0.025546802, -0.024405045, -0.023108676, -0.030946357, -0.0007232611, -0.028329832, -0.026379332, 0.011595964, -0.04802513, 0.03651242, -0.012559322, -0.013879477, -0.030185187, 0.018482182, -0.0061964076, -0.024975924, -0.056992676, -0.029923534, 0.0052984636, 0.011506764, -0.024119606, -0.010781273, 0.0054322635, -0.01623435, 0.017388, 0.061179116, 0.04628871, 0.01912442, -0.044005197, 0.005191424, 0.007962562, -0.034776, 0.03149345, 0.012000336, 0.040675074, -0.031160437, 0.014545502, -0.048144065, -0.001601135, 0.007903095, -0.014819047, -0.01623435, 0.0065888865, -0.021669587, -0.04112702, -0.058467448, 0.0010027536, -0.0054530767, -0.009377864, -0.013927051, 0.016186778, 0.04802513, -0.04379112, 0.041245952, 0.0544713, -0.010971566, 0.013808117, 0.02262105, -0.012499855, 0.01731664, 0.03884351, -0.05851502, 0.07673555, 0.038914867, 0.02464291, -0.03268278, -0.019742873, 0.061036397, 0.008366934, 0.012785294, -0.07630739, 0.0649374, 0.028472552, 2.1881808e-05, 0.010596927, 0.04217363, -0.009003226, 0.061416984, -0.032587633, 0.040246915, -0.024619125, 0.036559995, -0.10399499, -0.015473179, 0.021063028, -0.030042468, -0.03161238, 0.024523977, 0.0040437207, -0.014890407, 0.031802677, -0.016674401, 0.027354583, -0.0130112665, -0.00096633035, 0.022085851, -0.0022582398, -0.040603716, -0.032135688, -0.032801714, 0.015520752, -0.001196763, 0.017911306, 0.013296706, 0.07064618, 0.048048917, -0.0025808455, -0.044932876, 0.03503765, -0.028662845, 0.009312451, -0.019136315, -0.05014214, 0.03030412, -0.0055244365, -0.077258855, -0.049618833, 0.060846105, -0.033229873, -0.0011729763, -0.008985385, -0.0025644922, 0.040056624, -0.004596759, 0.017019307, -0.03434784, 0.028805565, 0.027069144, 0.013035053, 0.042126056, 0.021633906, 0.09310073, -0.009544371, -0.02680749, -0.016579255, -0.0058544753, 0.00963357, -0.036155622, 0.014236276, -0.011441352, -0.02947159, -0.02947159, 0.019695299, -0.03870079, -0.008699946, -0.021241428, -0.034776, -0.008806986, 0.019100634, 0.03311094, -0.0235963, -0.0070705647, 0.005768249, -0.004561079, 0.037368737, 0.019005489, -0.082206465, -0.018684369, 0.019160101, 0.004162654, -0.036988154, -0.016388962, -0.07992295, -0.059847068, 0.03254006, 0.020837056, -0.010168768, 0.0017631812, 0.0059763817, 0.018018344, 0.014795261, 0.03218326, 0.04022313, -0.016579255, -0.041935764, -0.019766659, 0.046193566, 0.060798533, -0.0045997323, 0.0009440304, 0.036012903, 0.057563554, -0.0011595964, 0.059466485, -0.0013127226, -0.022965956, 0.05404314, -0.00435592, 0.007171658, -0.028757991, -0.062749036, -0.029209936, -0.01186951, -0.031541023, 0.027402155, -0.0074689905, -0.075070485, 0.031921607, 0.04000905, 0.0126306815, 0.010400688, 0.029519163, 0.0032766033, 0.03030412, 0.013237239, -0.00214228, 0.028948285, 0.027497303, -0.03881972, -0.019838018, 0.02059919, -0.021847986, -0.0075522433, -0.02932887, -0.03763039, 0.028757991, -0.03791583, 0.050094567, -0.0070705647, -0.016424643, 0.001610055, -0.010519621, 0.03113665, 0.036464848, -0.019219568, -0.024904564, -0.04733532, -0.06465196, -0.014307636, -0.022395078, -0.028781777, -0.05166448, -0.03855807, -1.5389276e-06, 0.015960803, 0.024405045, 0.0003488081, -0.05137904, -0.015068807, 0.027877888, 0.02687885, 0.02042079, -0.023798486, -0.0409843, 0.04214984, -0.0029004777, -0.038486708, -0.010240128, 0.027758954, -0.005325224, 0.12302426, 0.060084935, -0.014105449, 0.0046621724, 0.01695984, 0.012178736, 0.044576075, -0.033420164, 0.03820127, -0.04895281, -0.0061012614, 0.0048108385, -0.056231506, -0.020504044, 0.0087177865, 0.041222166, -0.056279078, 0.040746436, 0.017613972, 0.05927619, 0.00649374, 0.090246335, -0.0032349767, -0.0317551, 0.049047954, 0.02897207, 0.049190674, -0.0126306815, 0.0012644061, -0.006464007, -0.009223252, 0.044028983, -0.07740158, -0.02161012, 0.0018746809, -0.029661883, -0.025047284, 0.017721012, -0.0075344034, 0.027973033, -0.017197708, 0.06060824, 0.03394347, -0.017459359, 0.006666193, -0.034300268, -0.0137129715, -0.03541824, -0.0129518, 0.0036839487, 0.045432393, -0.030232761, 0.060322803, 0.02806818, -0.059085898, 0.032777924, 0.010929939, 0.009294611, -0.015080701, 0.040342063, 0.02013535, 0.043458108, 0.028662845, 0.04181683, -0.018101597, -0.019421754, -0.031374518, -0.105422184, -0.00049022684, 0.02045647, -0.0070765116, 0.021693373, -0.031041505, -0.034823574, 0.035442024, -0.051759627, 0.006279661, -0.017043095, 0.03820127, -0.024761844, -0.08539387, -0.0064699533, -0.04243528, -0.016983628, -0.028876925, 0.03881972, 0.030827425, -0.08444241, 0.01958826, 0.016507896, -0.019088741, -0.049000382, 0.016603041, 0.028377406, 0.005735542, 0.0014599022, 0.016674401, -0.017066881, 0.004263747, 0.040056624, -0.005253864, -0.013974624, -0.046169776, 0.0351328, -0.028520126, 0.070408314, -0.08382396, -0.002296893, 0.06255874, 0.010894259, 0.03874836, 0.03463328, 0.01623435, 0.006541313, 0.015199633, -0.044528503, 0.044980448, 0.043719757, -0.032302193, -0.040199343, 0.019838018, 0.023643874, 0.030256547, -0.03874836, 0.01948122, -0.01518774, -0.008967546, -0.008955653, 0.016139204, 0.0008303008, 0.004421333, -0.045741618, 0.010977513, -0.020397004, -0.0005203317, -0.007237071, 0.014616862, -0.007266804, 0.0014747687, 0.021491187, -0.009217305, 0.0058544753, 0.016733868, 0.002362306, -0.00055786996, -0.016519789, 0.067982085, -0.048572224, -0.006291554, 0.04547997, -0.044718795, 0.030018682, -0.016805228, -0.055280045, 0.059181046, -0.062035434, -0.00537577, -0.03917652, 0.015449393, -0.002600172, -0.004611626, 0.0014442923, 0.03503765, 0.013403745, 0.0017676412, 0.040532354, -0.007189498, 0.016329497, 0.009229198, -0.069552, -0.0068445923, -0.02464291, 0.047145028, 0.02244265, -0.015889443, 0.014450355, -0.023655767, -0.010067675, -0.02283513, 0.02034943, -0.0025466522, -0.033372592, 0.021871774, -0.016745761, 0.01710256, -0.0130112665, -0.0063153408, 0.013820011, 0.037392523, -0.04474258, -0.030280333, -0.071692795, 0.0017691279, 0.02514243, -0.020182924, -0.009484904, 0.010448261, -0.092434704, -0.022323718, 0.08244433, -0.032920644, 0.03499008, -0.040175557, 0.05856259, -0.07744915, 0.003996148, 0.0115602845, 0.06836267, 0.020325644, 0.025523014, 0.043814905, -0.03185025, 0.016864695, 0.019457433, 0.05194992, -0.04735911, -0.017518826, -0.07830547, 0.042482857, -0.002045647, -0.030660918, 0.026926424, -0.017982665, 0.03910516, -0.024226645, -0.022799449, 0.042197417, -0.031374518, 0.088105544, 0.016650615, -0.019814232, 0.036012903, 0.035156585, 0.056754813, 0.004201307, -0.0402707, 0.06236845, 0.00858696, 0.013558358, -0.0018954942, -0.025118643, -0.033087153, -0.07859091, -0.012143056, 0.0055393027, 0.018375143, 0.016769549, -0.006767286, 0.0015847818, 0.025023496, -0.041650325, -0.0056641824, 0.014569288, 0.0635102, -0.0071121915, 0.0027027517, 0.0066364594, -0.032730352, 0.0068564857, 0.016591148, -0.027259436, -0.028163327, 0.061749995, 0.0008273274, 0.024214752, -0.011679217, -0.055755775, -0.040817793, -0.025047284, -0.06726848, -0.012345242, 0.011435404, 0.007492777, 0.062653884, -0.015045021, -0.003550149, -0.001520112, -0.007439257, -0.0056344494, 0.00640454, -0.03484736, 0.041222166, 0.017661545, 0.0015505885, -0.016139204, -0.03715466, 0.0629869, -0.012143056, 0.03315851, -0.024666697, 0.023227608, 0.07055104, -0.030922571, 0.00043484865, -0.0003891338, -0.025998747, 0.0076533365, 0.035251733, 0.000864494, 0.008289628, -0.03330123, 0.0047721853, -0.020825163, 0.0031992968, -0.06165485, -0.0029287243, 0.036964364, 0.08206375, 0.032207046, -0.0024262324, -0.0129993735, 0.010430421, 0.018838981, -0.028472552, -0.013938944, -0.017019307, 0.024952136, -0.005860422, -0.031874035, -0.017459359, 0.04426685, 0.0041745473, -0.014081663, -0.038914867, 0.010567194, -0.027116716, -0.026664771, -0.002943591, -0.045694046, 0.0070110983, 0.0122976685, 0.011393778, -0.041555177, -0.026379332, 0.00977629, 0.016281923, 0.053234395, -0.029638095, -0.008200428, 0.0043826797, 0.002692345, 0.022406971, 0.004766239, -0.010275808, 0.030589558, -0.0060239546, -0.02737837, 0.0077484827, -0.00437376, -0.0019118474, 0.0022032333, 0.0035739357, -0.075403504, 0.020694336, 0.0015401819, -0.069218986, -0.014902301, 0.030613346, -0.0397474, 0.027425943, -0.03625077, 0.020908415, 0.05014214, -0.018030237, 0.037273593, 0.020860841, 0.048762515, 0.025665734, -0.03644106, 0.03541824, 0.030874997, 0.013213453, -0.027045356, -0.016365176, -0.004317267, -0.016805228, -0.028496338, -0.044028983, -0.0030506307, 0.014093556, -0.031874035, 0.008004189, 0.039128944, 0.008432347, -0.015259099, 0.011007246, 0.03617941, -0.029019644, 0.090864785, -0.024452617, -0.038653214, 0.04105566, -0.018161064, 0.08477542, -0.0016606016, -0.035870183, 0.039485745, -0.011982497, 0.0436484, -0.013308599, -0.012452282, -0.023358434, 0.031874035, 0.00432024, 0.039557103, -0.017602079, -0.025118643, 0.004126974, 0.032754138, 0.003110097, 0.016329497, -0.009169731, -0.035204157, -0.018874662, 0.024880776, 0.036298342, -0.044219278, -0.056279078, -0.04419549, -0.027616234, -0.033063363, -0.00885456, 0.03686922, -0.03315851, -0.046455216, -0.012321455, -0.03936681, 0.01068018, -0.009395705, -0.0085453335, -0.0015609952, -0.047097456, 0.003410403, -0.0019460407, -0.0043232134, 0.0014264523, -0.035299305, 0.01905306, 0.023417901, 0.048286784, -0.015556432, -0.011096446, -0.04469501, -0.016044058, 0.018874662, 0.0010919533, 0.0034163494, 0.006374807, 0.0060031414, 0.028377406, 0.007897149, 0.001825621, -0.056326654, -0.045265887, -0.0015297753, 0.0018776542, -0.0003567989, 0.014129236, 0.025570588, 0.040175557, -0.0050189714, 0.0031784836, 0.04279208, -0.06679276, 0.010626661, 0.011512712, 0.0087832, 0.05865774, -0.047906198, 0.022525905, -0.02095599, 0.00644022, -0.0023578461, 0.03798719, -0.005842582, 0.00048279352, -0.059799496, 0.0033895895, -0.004245907, -0.005586876, 0.015592112, -0.015972698, 0.00993685, 0.028091967, 0.008563174, 0.022525905, -0.04055614, -0.04300616, -0.034680855, -0.013046946, -0.0047394787, 0.014188703, 0.016745761, 0.01655547, -0.008355041, 0.010828847, -0.029947322, -0.015259099, -0.019505007, 0.014795261, 0.028401192, 0.006062608, -0.028472552, -0.008242055, -0.021669587, -0.024690485, -0.009169731, 0.00221364, -0.025285149, 0.05523247, 0.00071396946, -0.01811349, -0.05356741, 0.018268105, 0.016936054, 0.0065888865, 0.039224092, -0.00979413, -0.016032163, 0.008135015, -0.028520126, 0.043719757, 0.031089077, -0.060465522, -0.0030863106, -0.014569288, 0.030470626, 0.037178446, -0.008337201, -0.00056455994, 0.04369597, 0.021693373, -0.00952653, -0.008212321, 0.0033955362, -0.028924497, 0.019041168, 0.016139204, 0.034657065, 0.05537519, 9.407783e-05, 0.03185025, -0.012713934, 0.0108229, 0.000654503, 0.017923199, -0.051997494, 0.013772437, 0.020266177, -0.04008041, -0.031303156, -0.027758954, -0.026545838, -0.050570298, 0.00075931265, 0.045075595, -8.376412e-05, 0.006374807, 0.028329832, 0.041079447, 0.0027622182, 0.013938944, -0.025047284, -0.031588595, 0.025475442, -0.034252696, -0.040817793, 0.021003561, -0.006832699, 0.0037790951, 0.0702656, 0.036203194, -0.016293816, 0.0029673774, -0.00986549, -0.051093604, -0.033467736, -0.0056701293, 0.012440388, 0.001271096, 0.029542949, 0.013546465, 0.042482857, 0.031326942, 0.00033728647, -0.033562884, -0.018018344, -0.026403118, 0.013772437, -0.033182297, 0.022169106, 0.0019742872, 0.014854727, -0.0035144691, 0.043458108, 0.06379564, 0.01825621, 0.03268278, -0.0413411, -0.037868258, -0.017019307, -0.023572514, 0.00015953742, -0.041364886, 0.036298342, 0.010031995, 0.012487962, -0.015235313, -0.010466101, 0.0029926507, -0.008176642, -0.021193855, -0.076925844, -0.007189498, -0.034109976, -0.0019653672, -0.04300616, 0.00059354986, 0.03156481, -0.0022597264, -0.02272809, -0.011126179, 0.03518037, 0.01905306, -0.019790446, 0.03135073, 0.02716429, -0.06151213, -0.038462922, -0.0077484827, -0.036559995, 0.048857663, 0.020694336, -0.026426906, -0.025356509, -0.0051854774, -0.02499971, 0.015960803, 0.007986349, -0.000434477, 0.03622698, -0.006273714, 0.0175664, 0.005218184, 0.03541824, 0.0018181878, 0.020408897, -0.03729738, -0.014604968, 0.010656394, 0.0060685547, 0.03296822, 0.0058782618, -0.02045647, -0.016281923, -0.01075154, 0.01161975, 0.04300616, -0.038177483, 0.04614599, -0.027544875, -0.0022805396, -0.025190003, 0.023215715, -0.041864403, 0.019742873, 0.01999263, -0.015544538, 0.026093893, -0.015175846, 0.018838981, -0.012440388, 0.0007663743, 0.0062677674, -0.044671223, -0.019719087, 0.020908415, 0.037606604, 0.023976887, 0.004798945, -0.018910341, 0.014604968, -0.0015052453, -0.019397967, -0.025927387, 0.020622976, 0.044147916, -0.04041342, -0.012773401, 0.026712345, -0.036012903, 0.02561816, -0.008503707, 0.047097456, -0.005851502, -0.02464291, 0.034680855, -0.026545838, 0.01832757, 0.0027354583, -0.02081327, -0.0016650616, 0.029352656, -0.020706229, 0.041436244, -0.007492777, -0.034871146, -0.0014881487, -0.012749614, 0.0017066881, 0.011804097, -0.021181962, -0.0055898493, -0.02081327, 0.023513047, -0.006190461, -0.016805228, -0.024809416, 0.06251117, 0.02168148, 0.007064618, 0.038772147, 0.0050665443, -0.03763039, 0.017221494, -0.028139539, -0.047573186, -0.035251733, 0.0075522433, 0.009425438, -0.03812991, -0.039699823, -0.004088321, -0.029542949, -0.018589223, 0.028163327, -0.041840617, 0.008253948, 0.024321793, -0.041578963, 0.026070107, -0.0011685163, 0.0023950126, -0.0040615606, -0.01641275, -0.04153139, -0.015520752, -0.044504717, 0.0083609875, -0.03644106, 0.011804097, -0.018375143, 0.0056522894, -0.040532354, -0.004908958, -0.011893297, 0.032373555, -0.0045462125, -0.01594891, -0.00017663404, 0.0057652756, -0.024738057, 0.008682107, -0.027330795, -0.030684706, 0.010739647, -0.022942169, -0.03315851, 0.011875457], [-0.03887, 0.022472093, -0.027009727, 0.06141412, 0.03406827, -0.0024548841, -0.024476815, 0.051714625, -0.02226802, 0.048377424, -0.023168344, -0.01918291, 0.03651715, -0.021151617, 0.010371735, 0.011164021, -0.03445241, -0.013540877, 0.019999202, -0.010365733, -0.028426237, -0.03891802, -0.04792126, -0.027970074, 0.016613984, -0.013108721, -0.02074347, 0.01113401, 0.03262775, 0.0051048384, 0.04861751, 0.018690731, 0.016121807, -0.015869716, -0.00049967994, -0.028522272, 0.0021832862, 0.0427594, 0.004033453, -0.008355009, -0.050850313, -0.018978836, -0.012856631, -0.04880958, -0.006017167, -0.009741508, 0.02040735, -0.005870114, 0.01996319, -0.010191671, -0.00441459, 0.0060201683, -0.045688454, -0.005978153, -0.03154736, -0.022316037, 0.06794447, 0.033059906, 0.023648517, -0.00083204964, -0.038725946, 0.037741594, 0.05627627, -0.010155657, -0.004810733, 0.027561927, 0.016902087, 0.028978437, 0.02660158, 0.060789894, -0.01024569, 0.021871878, 0.031067189, -0.012856631, 0.0046636797, -0.06122205, 0.055459972, 0.04295147, 0.007916851, -0.000580334, 0.04095875, -0.026553564, 0.035772882, -0.026817659, 0.024044659, -0.023624508, 0.008973232, -0.1413629, -0.041054785, 0.015293508, 0.021727825, -0.01490937, 0.054211523, 0.026289469, -0.0070345337, 0.013480855, -0.032411672, 0.0037753598, -0.02201593, 0.032243613, -0.0026259457, -0.016481936, -0.045352332, -0.04895363, 0.03783763, 0.018534675, 0.01010764, 0.037309438, -0.010587813, -0.007994879, 0.028714342, -0.0013879999, -0.0007101308, 0.023312395, 0.0026829662, 0.04556841, -0.017334243, -0.04040655, -0.019026853, -0.013204756, -0.080332935, -0.069144905, 0.09483416, 0.034380384, 0.007250611, -0.012796609, -0.050994366, 0.05008204, -0.006134209, -0.0025089036, -0.036781248, -0.020071229, 0.022868237, 0.04631268, 0.067992486, 0.005296908, 0.08234966, -0.033492062, -0.043407634, -0.01063583, -0.08335802, 0.013804972, -0.034836546, 0.04876156, -0.030995162, -0.048137337, -0.00683046, -0.039782327, -0.019627068, -0.031643398, -0.014765318, -0.05344325, 0.013444842, 0.02732184, 0.018342607, 0.009117284, 0.00073038804, 0.020419354, -0.024080673, 0.030899128, 0.033107925, -0.050178073, 0.013504864, -0.017862434, 0.003445241, -0.048713546, 0.039086077, -0.013780964, -0.03658918, 0.033972234, 0.042711385, -0.028282186, 0.01402105, -0.014681287, -0.033972234, 0.028138135, 0.034908574, 0.016505945, -0.026241452, -0.07846026, -0.024056664, 0.055075835, 0.06261455, -0.013588894, 0.00034943834, 0.047441088, 0.039278146, 0.023996642, 0.049073674, -0.04897764, -0.045760483, 0.0054019457, -0.047104966, 0.0041444926, -0.018738749, -0.042447288, -0.03990237, -0.0125925355, 0.019555043, -0.025161061, 0.006686408, -0.03426034, 0.03550879, 0.013396825, -0.003337202, 0.01907487, 0.055411957, 0.02423673, 0.0064463215, -0.012436479, -0.017442282, 0.016001763, 0.0071965917, -0.01890681, -0.021355692, 0.04095875, -0.028690333, -0.009213318, -0.026025373, -0.030779086, 0.03315594, -0.02840223, 0.0063022696, -0.013060704, -0.028834386, 0.007820817, 0.036397107, 0.0211036, 0.03269978, 0.023228366, -0.038966034, -0.05339523, -0.017958468, 0.021247653, -0.09478614, -0.004372575, -0.052722987, -0.021703817, 0.04326358, 0.036109004, 0.001743628, 0.022075951, -0.039542243, 0.0021262658, 0.022676166, 0.011758234, 0.017226204, -0.013540877, -0.020635432, 0.030827103, -0.0043215565, -0.019146895, -0.0067884447, 0.014417193, 0.014093076, 0.05786084, 0.025473174, -0.013756955, -0.010947943, 0.008979234, -0.015893724, 0.022027934, -0.029866757, 0.06050179, -0.025185071, 0.019134892, 0.029938783, -0.07308232, -0.06271058, -0.0023258377, 0.035868917, -0.02645753, 0.035364736, 0.0402625, 0.029074471, -0.010119645, 0.029530635, 0.0255452, -0.044151902, 0.044055868, -0.03190749, 0.03757353, -0.013648916, -0.017226204, -0.008583091, 0.023252374, 0.023888603, -0.051570572, -0.016421914, 0.013120726, -0.022412071, -0.022592137, 0.022976276, -0.003853388, 0.038942024, 0.020395346, 0.04170302, 0.01366092, -0.03121124, 0.020659441, -0.011140012, 0.016722022, -0.046984922, -0.0319315, 0.010515788, 0.030250896, -0.021331683, 0.08566285, 0.011326079, -0.06170222, 0.07173783, -0.021151617, -0.014201115, -0.028834386, 0.031475335, 0.0047597145, 0.020263297, 0.037333447, 0.0855188, -0.035700858, -0.006908488, -0.047609147, -0.11802651, 0.06967309, 0.007850828, -0.034380384, 0.0036703218, -0.027609944, -0.0054379585, 0.042183194, -0.06727223, -0.019098878, -0.0023663524, -0.00049330265, -0.021043578, -0.09704295, 0.0019191912, -0.026217442, 0.035772882, -0.021535756, 0.016397906, 0.0094414, -0.047657166, -0.04542436, 0.03265176, -0.02590533, -0.005861111, 0.018582692, 0.013192751, -0.003673323, 0.0014007544, 0.014705297, 0.0072566136, 0.02163179, 0.009129288, -0.020347329, -0.021355692, -0.04484815, -0.017670363, -0.010179666, 0.045328327, -0.064631276, 0.0012086853, 0.06981715, 0.002288324, 0.009531433, -0.00045128755, 0.013720942, 0.027153779, 0.009501422, -0.035028614, 0.03375616, -0.013396825, -0.019819139, -0.036109004, -0.005714058, 0.05291506, -0.007346646, -0.050322123, -0.0012514507, 0.0056810463, -0.04115082, -0.008643113, 0.025641235, 0.055988163, -0.009291346, -0.025329122, 1.289527e-05, -0.0015035415, -0.018414631, 0.004003442, 0.029170506, 0.021307673, -0.018342607, 0.03269978, 0.018678727, -0.012082351, 0.032267623, -0.0062542525, 0.00046554266, 0.004642672, 0.014705297, -0.049649883, -0.030490981, 0.016637992, -0.07749991, 0.013708937, -0.040526595, 0.016529953, 0.06088593, -0.053683333, -0.011446122, -0.012952665, 0.04309552, 0.015425555, 0.01763435, 0.014489219, -0.0031301274, -0.0065963757, -0.0102516925, 0.01687808, -0.039974395, -0.032219604, 0.029890765, -0.046576776, 0.019639073, -0.026553564, 0.01935097, -0.0188828, -0.043911815, 0.003784363, 0.005762075, -0.0009445902, -0.0048167347, -0.00043815782, -0.049361777, 0.013312794, -0.014213119, 0.021283666, 0.046408713, 0.018954827, 0.018198553, -0.019002844, 0.057092562, -0.080332935, -0.016974114, -0.06439119, 2.7830336e-05, 0.041030776, -0.026361493, 0.009027251, -0.012196393, -0.07514706, -0.018978836, 0.036613185, -0.010341724, 0.01268857, 0.019110883, 0.03706935, -0.07658758, 0.024968993, 0.028330203, 0.054787733, 0.004294547, 0.032387666, -0.0013317296, -0.015929738, 0.03195551, 0.011091995, 0.035124652, -0.0076647606, 0.013276782, -0.03368413, 0.0713537, 0.004273539, -0.04403186, 0.010887922, 0.004531632, 0.04098276, 0.020455368, -0.047273025, -0.027393866, 0.004264536, 0.07293827, 0.01219039, -0.03656517, 0.01852267, 0.03531672, 0.041582976, 0.02926654, -0.020959549, 0.036829263, -0.014153098, -0.011608181, -0.032267623, -0.02660158, -0.024092678, -0.07740388, -0.03995039, -0.014525231, 0.013096717, 0.07082551, 0.04878557, 0.012748592, -0.00624825, -0.010119645, -0.008841184, -0.019915173, 0.040070433, -0.008583091, 0.013456847, -0.009471411, -0.019038858, -0.032195594, -0.021607783, -0.025617227, 0.019483017, 0.008228964, 0.015245491, 0.025737269, 0.0006943751, -0.054835748, -0.04323957, -0.00405446, -0.042711385, -0.0067704385, 0.008925214, 0.0020002204, 0.021751834, -0.06266257, 0.0025284106, -0.0060771885, 0.017946463, 0.0197111, 0.021523751, -0.039254136, 0.019194914, 0.0043875803, -0.014261136, -0.0019356972, -0.053827386, 0.047777206, -0.020863514, 0.019290948, -0.037405472, 0.053299196, 0.07841224, -0.033972234, -0.021919895, 0.024140695, -0.022664163, 0.044127893, 0.004351567, 0.0022778204, 0.014201115, -0.029698696, -0.048545483, -0.051426522, 0.011374096, -0.036973316, -0.0010226183, 0.013985037, 0.07730784, 0.0006872475, 0.0025869317, -0.03834181, 0.019543039, 0.028858393, -0.030010808, 0.004003442, 0.003934417, 0.050322123, 0.02057541, -0.03298788, -0.025161061, 0.07961267, 0.01854668, -0.03229163, -0.024020651, -0.009519429, -0.053779367, -0.022075951, 0.02282022, -0.028258177, 0.017922455, 0.0047567133, 0.010311713, -0.056996528, -0.05133049, -0.0065903733, -0.019278944, 0.040214483, -0.030971155, -0.016722022, -0.026673608, 0.003271178, 0.035052624, 0.009477413, -0.00095659454, 0.026913693, -0.028330203, -0.0299868, 0.01490937, -0.014873357, -0.008739147, 0.013852989, 0.0496979, -0.05622825, -0.0029215522, 0.025209079, -0.12388462, 0.0060801897, 0.05766877, -0.024068668, -0.0006898735, -0.032267623, 0.00015127323, 0.054163508, 0.009039256, 0.05944541, 0.038389828, 0.015701655, 0.04595255, -0.023528473, 0.04955385, 0.011362093, -0.018090516, -0.0016550961, 0.008769158, 0.004381578, 0.0013264777, -0.030034818, -0.03495659, -0.019002844, 0.04040655, -0.010647835, 0.0039884364, 0.029074471, -0.012544518, -0.0010128648, 0.02926654, 0.04645673, 0.01374495, 0.08974432, -0.020107241, -0.010749872, 0.02732184, -0.00038638915, 0.07039335, -0.0008493059, -0.014093076, 0.029530635, 0.025713261, 0.04451203, -0.011302071, -0.037693575, -0.03923013, 0.03937418, -0.003934417, 0.01996319, -0.043359615, -0.06189429, 0.036445126, 0.02229203, 0.019927178, 0.020731466, 0.010101638, -0.007388661, -0.0070405356, 0.05675644, 0.065591626, -0.04347966, -0.06429516, -0.036853272, 0.005530992, -0.04278341, -0.007460687, 0.050130054, -0.0056930506, -0.057044543, -0.022604141, -0.04451203, -0.008096917, 0.0038473858, -0.0063923025, -0.0147173, -0.051186435, 0.024920976, -0.03634909, -0.017706377, 0.0018681728, -0.07231405, -0.014129088, 0.06794447, 0.023588495, 0.004480614, -0.0038143739, -0.026505547, -0.009165301, -0.0010781382, -0.022388063, -0.013876998, 0.024428798, -0.026913693, 0.02446481, 0.043695737, -0.012976673, -0.02556921, -0.06102998, -0.02785003, 0.0299868, -0.015617625, 0.014669283, 0.05925334, -0.003065604, 0.015845707, -0.011103999, 0.015341525, -0.06395903, 0.046552766, 0.051234454, 0.031715423, 0.017238209, -0.04227923, 0.020527393, -0.04148694, 0.02501701, -0.0043875803, 0.02962667, -0.006194231, -0.0061372104, -0.045904532, 0.0014930377, 0.001766136, 0.0040664645, 0.009753513, -0.00018747376, -0.018282585, 0.030659042, 0.026217442, 0.024944983, -0.017778402, -0.027033737, -0.05022609, 0.00026859675, -0.017778402, 0.01960306, -0.015425555, -0.004705695, -0.010101638, -0.0024083673, -0.027729986, -0.002926054, -0.040310517, 0.015821699, 0.02929055, 0.017046139, -0.0057410677, -0.018246572, -0.040766682, -0.0059631476, -0.006566365, -0.0050778287, 0.014957387, 0.018330602, 0.008751152, -0.029746713, -0.033828184, 0.020335324, 0.032795813, 0.027129771, 0.06170222, 0.016662002, 0.004384579, -0.004966789, -0.019651078, 0.03920612, 0.026913693, -0.015209477, -0.002687468, 0.007850828, 0.0099275755, 0.003862391, -0.02396063, 0.023972634, 0.015485577, -0.014357171, -0.0010721361, 0.027465891, 0.0067764404, 0.022616146, 0.009687489, 0.014249132, 0.012142373, 0.061318085, -0.0062542525, 0.017370256, -0.021619786, 0.029530635, -0.0063202763, 0.014405188, -0.03142732, 0.0013182248, 0.022388063, -0.008102918, 0.03706935, -0.023084315, -0.005909128, -0.03051499, 0.008084912, 0.009429396, -0.009153296, 0.004375576, 0.029650679, -6.9986145e-06, 0.010887922, -0.008096917, 0.005750071, 0.0017346247, 0.003487256, -0.029002445, -0.029026454, -0.008823178, -0.021859873, 0.021331683, 0.040862717, 0.0236005, -0.024500825, -0.0344284, -0.00047679673, -0.029074471, -0.013432838, -0.0294346, -0.006017167, 0.0012507004, 0.02357649, 0.007484696, 0.065783694, 0.006650395, 0.030394947, -0.04376776, -0.0063202763, 0.02246009, -0.019386983, -0.05622825, 0.025137054, 0.0023813576, -0.002818015, 0.010317716, 0.03500461, 0.06439119, 0.033828184, 0.003484255, -0.024872959, -0.02013125, -0.015533594, -0.07745189, -0.01438118, -0.028978437, 0.024993, -0.0050958353, 0.030587016, 0.01863071, -0.038221765, 0.0031781446, 0.028066108, -0.010569807, -0.06319076, 0.00957945, -0.01330079, -0.0073226374, -0.0013542378, 0.00084255345, 0.04984195, 0.0077367863, -0.019591056, -0.0028750354, -0.005119844, -0.014069067, -0.024920976, 0.015737668, 0.0029050463, -0.09017648, -0.008421033, -0.0031061186, -0.05714058, 0.004417591, 0.011392103, -0.006434317, 0.0026724625, -0.0056510353, -0.005377937, -0.008270979, -0.04134289, -0.0010293707, 0.05392342, -0.014213119, -0.004423593, -0.015425555, 0.035388745, 0.020791488, -0.0025674247, -0.01577368, -0.038413834, 0.017310234, -0.002307831, 0.022352051, 0.026937703, -0.013384821, -0.011656198, 0.0039554248, 0.012070348, 0.035892926, -0.010533794, 0.04259134, -0.036853272, -0.004264536, -0.00010775756, -0.0067404276, -0.035340726, 0.0169381, -0.018114524, 0.018234568, 0.035556804, -0.03810172, 0.0050328127, -0.0049127694, 0.003976432, 0.008841184, -0.048185356, -0.0066924104, 0.0102516925, 0.017226204, 0.015017409, 0.0011486637, -0.025329122, 0.007928856, 0.003640311, -0.018570688, -0.02368453, 0.027778005, 0.07442681, -0.016950104, 0.008781163, 0.014141093, -0.04945781, -0.0030415955, 0.00735865, 0.040718663, 0.014957387, -0.011350088, 0.045760483, -0.012448483, -0.004168501, 0.009057262, -0.008240968, -0.0124965, 0.022484098, 0.00674643, -0.01127206, 0.004297548, -0.012892643, -0.020347329, -0.0032621748, 0.019819139, -0.019002844, 0.024752915, -0.022051942, 0.0009903567, 0.017586334, -0.032939862, 0.024452807, 0.042159185, 0.049937986, 0.039830346, 0.03406827, -0.020275302, 0.012166382, -0.052194797, 0.031691413, -0.0045496384, -0.036997326, -0.017058143, -0.0026529555, 0.008282983, -0.026001364, -0.018582692, 0.014213119, 0.029242532, -0.009657478, 0.013816976, -0.0438638, -0.019278944, 0.027057745, -0.008721141, 0.012940661, 0.011001962, -0.005083831, 0.033636115, -0.026241452, -0.0035982959, -0.03245969, -0.04876156, 0.018774763, -0.029218523, 0.043551687, -0.023384422, -4.011601e-05, -0.024944983, 0.013360812, -7.845013e-05, 0.012280423, -0.009471411, -0.024584854, 0.004945781, 0.014681287, 0.028834386, 0.0012739588, 0.018162541, 0.040526595, -0.020227285, -0.032579735, 0.0026994722, -0.00041639997], [-0.01794873, 0.012526588, -0.006025645, 0.015772369, 0.023889948, 0.011525962, 0.0014462174, 0.027817406, -0.027367122, 0.07229523, -0.023552237, -0.02921828, 0.01352096, -0.009887436, 0.028467812, -0.01064416, -0.022001266, -0.012757982, 0.040375262, -0.007829899, -0.049556006, -0.041225795, -0.023051923, -0.00880551, 0.041951247, 0.013258295, -0.0049812417, 0.016122587, 0.026991889, -0.004312073, 0.024190135, 0.017923715, 0.021663554, -0.0583365, 0.013308327, -0.017811144, -0.015734846, 0.039149497, -0.0066729253, 0.029618531, -0.059036937, -0.025478441, 0.019412145, -0.054484088, 0.0015970931, -0.04930585, 0.015384626, 0.029193265, 0.018699199, -0.030469064, -0.0034740486, -0.012145099, -0.0017776748, -0.02440277, -0.0016307078, 0.003952473, 0.051682338, 0.043227047, 0.013358358, -0.042826798, -0.042826798, -0.0033395896, 0.08175115, -0.007986247, -0.008480306, 0.045078203, 0.0039868695, 0.013145725, -0.0061225807, 0.039099462, -0.0065791165, 0.025691075, 0.02531584, -0.032820534, 0.009818643, -0.020687943, 0.034596648, 0.0010530025, -0.021088194, -0.032895584, 0.026266435, -0.025390886, 0.019324591, 0.021200765, 0.021638539, 0.00044637304, 0.0039556, -0.13248289, -0.017798636, 0.009862421, 0.021701079, -0.014108827, 0.045678582, 0.018674184, -0.0067167026, 0.0058630435, -0.019974997, 0.022601642, -0.03319577, 0.021038163, -0.01090057, -0.026566623, -0.07074426, -0.02514073, 0.034496583, 0.031119471, 0.015059423, -0.009230776, -0.010906824, 0.0086679235, 0.013621022, -0.023502205, 0.03434649, 0.037648555, -0.021951234, 0.05298315, -0.0042182645, -0.012326462, -0.011832403, 0.008793002, -0.096110135, -0.04820516, 0.08855541, 0.0037898712, 0.038073823, -0.0279675, -0.05143218, 0.044377767, 0.015759861, -0.01340839, -0.015409642, 0.007417141, 0.025440918, 0.01783616, 0.048530366, 0.010150101, 0.08840531, -0.028492827, -0.025190761, -0.008236404, -0.07754852, 0.0077673597, -0.046804283, 0.04647908, -0.0058411546, -0.0497061, 0.010300195, 0.008549099, -0.04280178, -0.05143218, -0.025540981, -0.054283965, -0.0031660434, 0.019687317, 0.039024416, -0.012020021, 0.011688563, 0.032370254, -0.021826155, 0.06253913, 0.015959986, -0.086854346, -0.0035428416, -0.012270177, 0.024315214, -0.051582273, 0.050481584, -0.008192626, -0.028267687, 0.03026894, 0.033345863, -0.06138841, -0.0022170122, -0.0329206, -0.038073823, 0.05020641, 0.038298965, 0.0088117635, -0.020662928, -0.044953126, -0.034771755, 0.059687346, 0.09550976, -0.040250182, -0.025065683, 0.074946895, -0.009230776, -0.0039931233, 0.050431553, -0.020737976, -0.040425293, 0.02819264, -0.023977503, -0.033896208, -0.021626031, -0.062339004, 0.0035834922, 0.01489682, 0.037598524, -0.0035459686, -0.022351485, -0.06358979, 0.026441544, 0.048080083, -0.011213266, 0.0014915583, 0.06343969, -0.0051469705, 0.0076422817, 0.004546595, 0.0062163896, 0.013095694, 0.03894937, -0.015584751, -0.03584743, 0.054534122, -0.05843656, -0.005184494, -0.02744217, -0.04935588, 0.059287094, -0.042651687, 0.007617266, -0.01686055, -0.0022342105, 0.018974371, 0.03957476, 0.002726706, 0.046779267, 0.013120709, -0.030869314, -0.03997501, 0.0041244556, 0.040075075, -0.08945597, -0.027592264, -0.031794894, -0.017861176, 0.026266435, 0.027717343, -0.029193265, 0.06138841, -0.018436536, 0.0034115096, -0.013108201, -0.01691058, 0.01691058, 0.01916199, 0.013058171, 0.012682935, -0.0073108245, -0.0348468, 0.023839917, -0.0010045348, 0.0353221, 0.040875576, -0.0064165145, -0.022401515, 0.019224528, 0.0223765, 0.0021560364, -0.0028986887, 0.0023030036, 0.044502843, -0.026091324, -0.0015126652, 0.020462804, -0.055734873, -0.047354627, 0.0035866192, 0.03227019, -0.03969984, 0.01904942, 0.047079455, 0.06469048, -0.023264557, 0.033470944, 0.012576619, -0.01021264, 0.04245156, -0.022876814, 0.020475311, -0.010619144, 0.0019152608, -0.019136975, 0.009055666, 0.021500953, -0.06764232, -0.022363992, 0.021525968, -0.015709829, -0.017936222, 0.039774887, 0.017673558, 0.071244575, -0.0022217026, 0.054534122, -0.004308946, -0.0715948, 0.04492811, -0.0013578809, 0.022976877, -0.04287683, -0.021901203, -0.0033427165, 0.011995005, -0.042426545, 0.07209511, 0.0027814277, -0.019036911, 0.08620393, -0.0012562547, -0.02744217, -0.019374622, 0.058986906, 0.015809892, 0.0064165145, 0.03146969, 0.08595378, -0.043277077, 0.008361482, -0.023439666, -0.13548477, 0.030469064, -0.005616014, -0.039499715, 0.009480932, -0.020675436, -0.008161357, 0.015909955, -0.047479708, 0.0043152, -0.00917449, 0.0061538504, -0.040800527, -0.07434652, -0.010694191, 0.0032207652, 0.042701717, -0.041375887, 0.025003145, -0.014183874, -0.0002708726, 0.00020090696, 0.004762355, 0.008692939, -0.016372744, -0.0035490957, 0.024778003, -0.010700445, 0.0015970931, 0.0059412173, -0.014696696, 0.017098198, -0.0042088833, -0.039024416, -0.041125733, -0.037073195, -0.0329206, -0.02497813, 0.08125084, -0.06469048, -0.032895584, 0.08000006, -0.031569753, -0.024815526, -0.044377767, 0.011438407, 0.004887433, 0.020212647, -0.058536626, 0.037398398, -0.005397127, -0.053133246, -0.03089433, -0.02146343, 0.061888725, -0.032020036, -0.0054096347, -0.012970615, 0.016360236, -0.06464045, -0.017010644, 0.014696696, 0.058586657, 0.015684813, -0.06368985, -0.010894316, 0.014659172, 0.015146977, -0.026716717, 0.05143218, 0.036823038, -0.045078203, 0.014233906, 0.0418762, -0.050331492, 0.010550351, 0.008899318, -0.004968734, -0.0005417452, 0.04775488, -0.025128223, -0.0009545035, -0.00042018478, -0.053083215, 0.01165104, -0.029193265, -0.016097572, 0.064240195, -0.028367748, -0.00409944, -0.011400883, 0.0058692973, 0.010581621, 0.0279675, 0.00021595543, -0.0030284573, -0.01852409, -0.007979993, 0.015859922, -0.035997525, -0.028042546, 0.04963105, -0.027642295, 0.04230147, -0.024803018, 0.064240195, 0.0066479095, -0.043001905, -0.021563493, -0.0114571685, 0.012332716, -0.005881805, -0.010569113, -0.039224543, -0.0014493443, -0.023652298, -0.01852409, 0.049981274, 0.019749857, -0.0043183267, -0.014534093, 0.070344016, -0.052082587, -0.042726733, -0.03239527, 0.00496248, 0.029993767, -0.06754226, -0.017048167, 0.0050125113, -0.03912448, -0.038624167, 0.003161353, -9.845027e-05, -0.05183243, -0.012245161, 0.053183276, -0.08340219, -0.014796758, 0.009280806, 0.06373988, -0.037723605, 0.007636028, 0.051182024, -0.0295685, 0.026441544, 0.0174234, 0.0423515, -0.0071294606, 0.0132457875, 0.00037992522, 0.016210143, -0.004252661, -0.052732993, -0.001909007, -0.03089433, 0.033470944, -0.012983124, -0.040300217, 0.003373986, 0.020412771, 0.07139467, 0.036197647, -0.006966859, 0.014008765, 0.017786128, 0.040800527, 0.014884313, -0.011025649, 0.047254566, 0.017348355, -0.013170741, -0.017523464, -0.024640417, 0.004681054, -0.050506603, -0.03344593, -0.04532836, -0.006535339, 0.071144514, 0.025065683, -0.007567235, -0.03089433, -0.0070856833, -0.014108827, -0.032245174, 0.07134464, -0.02991872, 0.0026422783, 0.022001266, -0.029643547, -0.020237662, -0.01909945, -0.0070981914, 0.037948743, -0.0038961878, 0.0045028175, -0.005184494, 0.011344598, -0.052783027, -0.041050684, -0.01973735, -0.01478425, 0.0018120713, 0.018273933, -0.0023733599, -0.0053689843, -0.04010009, 0.023227032, -0.014446539, 0.012432779, -0.0008388061, 0.01403378, -0.022138853, 0.002474986, 0.030944362, -0.021500953, 0.010794254, -0.042676702, 0.053483464, -0.007692313, 0.011676055, -0.004903068, 0.02197625, 0.035197023, 0.006178866, -0.036622915, 0.026616653, -0.032720473, 0.03227019, -0.0030628538, 0.0075109494, 0.037773635, -0.013358358, -0.04993124, -0.051232055, -0.009974991, -0.019574748, -0.021550983, 0.036973134, 0.11787375, 0.015997509, -0.014521586, -0.028742984, 0.016260173, 0.02819264, -0.030243924, -0.010187624, 0.025816152, 0.028868062, 0.025766121, -0.047379646, -0.039074447, 0.03089433, 0.023164494, -0.042326484, -0.003661666, -0.018574122, -0.04452786, 0.0062851827, 0.04913074, -0.01904942, 0.021013148, -0.010387749, 0.010838031, -0.06809261, -0.031719845, -0.009687311, -0.010925586, 0.0030644173, -0.0059162015, -0.030644173, 0.0018996261, 0.009756104, 0.032370254, 0.006307071, 0.012188876, 0.035021912, -0.044903096, -0.008317704, -0.011744848, -0.02911822, -0.048130114, -0.0037617288, 0.024840543, -0.02766731, -0.0072295233, 0.042376515, -0.0696936, 0.004374612, 0.085503496, -0.05023143, 0.021025656, -0.037648555, -0.00046591653, 0.05288309, -0.00018458815, 0.028442796, 0.0006793313, -6.4982065e-05, 0.022176376, -0.027317092, 0.034046303, 0.018098824, 0.015084438, -0.023327095, 0.0038711722, 0.003796125, -0.0295685, -0.030218907, -0.039949995, -0.03464668, 0.02934336, -0.0012023147, -0.03139464, 0.02376487, -0.019399637, -0.00024800675, 0.052382775, 0.03479677, -0.0051282085, 0.1281802, -0.036547866, -0.013608514, 0.025503457, 0.01064416, 0.049255818, -0.0045809913, -0.030944362, 0.03402129, 0.010925586, 0.04492811, -0.006491562, -0.02323954, -0.029593516, 0.002118513, 0.008155103, 0.00805504, -0.029043172, -0.031369627, 0.022839291, 0.049806163, 0.0046966886, -0.0015540974, -0.00026872283, 0.01737337, 0.0010616017, 0.049856193, 0.0489056, -0.04377739, -0.028117593, -0.011976243, -0.01996249, -0.025465934, 0.011626024, 0.053983778, 0.0025906835, -0.030293955, -0.022501579, -0.068993166, -0.023689823, -0.00640088, -0.0026563494, -0.0018105078, -0.056485344, 0.0018683565, -0.018373996, -0.03369608, -0.00794247, -0.050556634, -0.008211387, 0.03186994, 0.031544738, -0.0066041322, 0.020162616, -0.045103222, 0.008223896, -0.0011991878, -0.023802392, -0.028267687, 0.011131965, -0.012808014, 0.019724842, 0.03474674, -0.0006457165, -0.013495944, -0.03204505, -0.01703566, 0.030394018, -0.017961238, 0.02392747, 0.075997554, 0.01668544, 0.019899951, -0.055784903, 0.01617262, -0.06604132, 0.028492827, 0.00730457, -0.008749224, 0.010750476, -0.04537839, 0.02290183, -0.012495318, 0.033746116, 0.01973735, 0.012526588, -0.0018105078, 0.0068730502, -0.05638528, -0.018123839, 0.0079925, 0.017986253, -0.008974365, 0.020262677, -0.007948724, 0.015809892, 0.036773007, 0.016772995, -0.03509696, -0.0045528486, -0.04230147, -0.02934336, 0.011031902, -0.008880557, -0.005756727, 0.003508445, 0.004468421, 0.005809885, 0.002127894, 0.011494692, -0.018549105, 0.011969989, 0.03602254, 0.025015652, 0.018949356, -0.01219513, -0.034496583, -0.011894942, 0.011607262, 0.002795499, -0.0007473426, 0.00716073, -0.0046966886, -0.019036911, -0.05183243, 0.034096334, 0.061138254, 0.021676062, 0.055884965, -0.014446539, -0.029318344, 0.007548473, 0.013545975, 0.022514086, 0.009424646, -0.0209381, -0.014721711, 0.022539102, 0.025490949, 0.018361488, -0.024640417, 0.03262041, 0.0018433408, 0.012188876, -0.018173872, -0.009787374, 0.008261419, 0.033520974, 0.03176988, 0.004662292, 0.02232647, 0.04345219, -0.002915887, 0.03842404, -0.03544718, 0.007417141, 0.018399011, 0.0073546018, -0.037148245, 0.011582247, -0.0053439685, -0.021713587, 0.03139464, -0.031719845, -0.019987505, -0.031269565, 0.03709821, 0.009418393, -0.0010709825, 0.005540967, 0.053583525, 0.0060694227, 0.0021466557, -0.0088117635, 0.0032176382, -0.006610386, -0.0055847443, -0.031219533, -0.003119139, 0.012664174, -0.013270804, -0.00087242085, 0.05408384, 0.026091324, -0.019687317, -0.021088194, 0.006397753, -0.029818658, -0.04045031, -0.023902455, 0.005456539, -0.008717955, -0.0011303948, -0.0020309582, 0.0640901, 0.023652298, 0.009274553, -0.022514086, 0.019599764, 0.038123854, -0.018899325, -0.05823644, 0.0073420936, 0.019374622, -0.020612897, -0.0054252697, 0.050406538, 0.043101966, 0.029893704, 0.00276892, -0.0180613, -0.010969363, 0.0033239548, -0.059637316, -0.023652298, -0.028317718, 0.010000007, 0.006679179, 0.04660416, -0.0054815547, -0.043177016, 0.021988759, 0.0044183894, -0.029143235, -0.058886845, 0.010118831, -0.021525968, 0.0016682313, 0.013383374, 0.01064416, 0.046454065, 0.0119199585, -0.028818032, -0.0046560382, -0.0126016345, 0.019374622, -0.036973134, 0.016360236, 0.03377113, -0.051682338, -0.011200758, -0.00063242693, -0.043902468, 0.028217655, -0.0017464051, -0.029768625, -0.015459673, -0.0096685495, -0.009149475, -0.022001266, -0.0073733632, -0.0035584765, 0.06619141, -0.03904943, -0.004158852, -0.014984376, 0.017498448, 0.0034740486, 0.023402141, -0.00974985, -0.041050684, -0.0019136973, -0.0051407167, 0.013658546, 0.010600382, -0.05120704, -0.012426525, -0.005953725, 0.023439666, 0.03422141, 0.017510956, 0.05073174, -0.030193891, -0.0122076385, -0.008936842, 0.006169485, -0.02352722, -0.014221398, -0.017385878, 0.0108130155, 0.018449044, -0.015334595, -0.00088102, 0.008261419, 0.03197, 0.0028033166, -0.034321476, -0.025340855, 6.165967e-05, 0.0073671094, 0.021213273, 0.0119574815, -0.025916215, 0.008223896, -0.013220772, -0.0093120765, -0.015547228, 0.049831178, 0.08445284, -0.05303318, 0.013483437, 0.03957476, -0.024065057, -0.02456537, 0.041626044, 0.014446539, -0.020262677, -0.008386497, 0.052282713, -0.014521586, -0.004965607, 0.022589134, -0.009587249, -0.016185127, 0.0026141356, 0.020637913, 0.017523464, 0.0047779894, -0.020300202, -0.02899314, -0.004956226, 0.031069439, -0.012789252, 0.00842402, -0.00142042, -0.0037523478, 0.022764243, -0.014734219, 0.0201376, 0.004749847, 0.017223276, 0.03492185, 0.029043172, -0.0127079515, -0.018486567, -0.03969984, 0.039149497, 0.006454038, -0.035347115, -0.016873058, -0.0006246095, 0.0008567861, -0.0055691097, 0.0015884939, 0.002340527, -0.009681057, -0.01656036, 0.041851185, -0.022639165, -0.00016885565, 0.023777377, 0.0043152, 0.025741106, 0.008899318, -0.026191387, -0.0021888695, -0.020287694, -0.0345216, -0.01921202, -0.030043798, 0.013633531, 0.0057817427, 0.025591012, -0.010794254, 0.013533467, -0.0316448, -0.00701689, -0.005025019, 0.013846164, -0.019036911, -0.014871805, -0.047029424, 0.05983744, 0.022939352, -0.021563493, -0.004615388, -0.003317701, -0.032745488, -0.030569127, -0.009268299, -0.012983124], [0.00965674, 0.003063987, -0.014517674, 0.018224062, 0.010023827, -0.02058052, -0.02794593, 0.057786502, -0.039147984, 0.036045514, -0.015133432, -0.028703786, 0.04701074, -0.042321507, 0.034079827, -0.021812035, -0.024559263, -0.0324457, -0.028822202, -0.021717304, -0.016814925, -0.04828962, -0.026477585, -0.027851198, -0.011249421, -0.003999465, -0.03490873, 0.039219033, 0.023150126, -0.00087479054, 0.008555481, 0.038058568, 0.040000573, 0.01853194, 0.027377538, 0.013286158, 0.014908443, 0.045305565, -0.0068207015, -0.015524201, -0.06294939, 0.019716091, 0.0009362183, -0.0392664, 0.023919823, -0.014742662, -0.006601634, 0.021847561, -0.02414481, -0.013487464, -0.0036708638, 0.03632971, -0.012255948, -0.031853624, -0.03443507, 0.04035582, 0.060012702, -0.034482438, 0.018271428, -0.030124767, -0.03497978, 0.026477585, 0.067543894, -0.020959448, -0.0016074831, 0.0050622397, 0.0017051754, 0.04092421, 0.039597962, 0.024417166, 0.01812933, 0.020047653, 0.039432183, -0.017134644, 0.041847847, -0.041895214, 0.08516404, 0.026288122, -4.574703e-05, -0.05873382, 0.037277028, -0.006749653, -0.008969933, -0.023635626, 0.05129736, 0.0020219355, -0.009739631, -0.10733132, -0.03166416, 0.01290723, 0.0018457932, 0.040640015, -0.01599786, -0.015784714, -0.051013164, 0.02723544, 0.010414596, 0.031356283, -0.023161966, -0.013783501, 0.013250634, -0.061670512, -0.08644292, -0.05295517, 0.0034014697, 0.04101894, 0.009964619, 0.0023002105, 0.009147556, -0.012013198, 0.025340801, 0.0031646397, -0.048739597, 0.044902954, 0.022984345, 0.05129736, -0.019372687, -0.018981919, 0.0035021224, -0.02066341, -0.099279106, -0.051771022, 0.053949855, 0.004331027, 0.066975504, -0.008928488, -0.05295517, 0.039455865, 0.0070042447, -0.03362985, -0.024748726, 0.0046951533, 0.02342248, 0.041042626, 0.01116061, 0.0042392556, 0.030456327, -0.015322896, -0.034340337, 0.010799444, -0.09492143, 0.00049068197, 0.0032830548, 0.055465568, -0.033416703, -0.012326998, 0.0031764812, -0.013333525, -0.017276743, -0.017821452, 0.0036294186, -0.06323359, -0.025790779, -0.0036619827, -0.0040320293, -0.023398796, 0.0032179265, 0.06181261, -0.03483768, 0.015903128, 0.0172649, -0.019775297, -0.0023579379, -0.0106218215, -0.002572565, -0.021077862, 0.053949855, 0.01084089, -0.004600421, 0.03261148, 0.07294361, -0.024097444, 0.023623785, -0.0692017, -0.015962336, 0.09511089, 0.04954482, 0.026714414, -0.016874133, -0.043979317, -0.016980706, 0.070670046, 0.064465106, -0.05342883, -0.030337913, 0.06522296, 0.017750403, 0.005192496, 0.046797592, -0.027259124, -0.013890075, 0.023517212, -0.022072548, -0.06465457, -0.05461298, -0.030101083, 0.013120377, 0.03483768, 0.017987233, 0.026596, -0.0088455975, -0.047081787, 0.039384816, -0.048384354, -0.060912654, -0.02960374, 0.015630774, -0.003460677, 0.03696915, 0.0011567662, 0.0324457, -0.017442524, 0.021551523, -0.0094021475, -0.015772874, 0.032966726, -0.032493066, -0.03910062, -0.010633663, -0.05887592, 0.020994972, -0.042226776, -0.004940864, -0.024677677, -0.020047653, 0.03031423, 0.01938453, 0.013380891, 0.050302677, 0.021492315, -0.019751616, -0.053523563, -0.046916008, 0.011894783, -0.10676293, -0.02920113, -0.016957022, -0.012599352, 0.038816422, 0.007939723, 0.0153347375, 0.061149485, -0.010604059, -0.004931983, -0.039953206, 0.020201592, 0.0034162716, -0.058165427, 0.019360846, -0.021598889, 0.027259124, -0.048265938, 0.048147522, 0.061386317, 0.0016814924, 0.050444774, 0.021752829, 0.0155005185, 0.05162892, 0.0058615403, -0.006761494, 0.02003581, -0.016921498, 0.07772758, -0.003395549, 0.026951244, 0.0011848897, -0.08180106, -0.04779228, -0.018958235, 0.05295517, -0.016258374, 0.031356283, 0.0007741378, 0.034790315, 0.004576738, 0.03666127, 0.04883433, -0.032990407, 0.039597962, 0.021148913, 0.069864824, 0.01662546, 0.030053716, 0.029698472, -0.012102009, 0.014186112, -0.04487927, -0.036045514, -0.00031250448, -0.018401684, 0.01962136, 0.049355354, 0.018638514, 0.050397407, 0.020355532, 0.04383722, -0.0038188824, -0.045400295, 0.024985557, -0.020462105, 0.018295111, -0.041942578, -0.0202608, -0.023458004, 0.006903592, 0.018484576, 0.061575778, -0.026548633, 0.00902322, 0.06683341, -0.01297828, -0.0010013465, -0.05494454, -0.004301423, -0.053381465, 0.0067555737, 0.04322146, 0.05617606, -0.0052694655, 0.0034310734, -0.030929988, -0.032824628, 0.019881872, 0.02818276, 0.015879447, 0.00506816, -0.046655495, -0.027827516, -0.0074364594, -0.022664623, -0.007975248, 0.019349005, 0.0008511075, -0.025696047, -0.07739602, -0.026809147, -0.05200785, 0.010479724, 0.011036274, 0.003531726, -0.010888255, -0.031285234, -0.041847847, 0.02666705, -0.002175875, 0.0054352465, 0.0010538931, 0.019206906, 0.039124303, 0.0013699131, 0.041966263, 0.009775155, 0.0042629386, 0.013262476, -0.030693159, -0.003419232, -0.020841032, -0.012119771, -0.021658096, 0.042060994, -0.0035761318, 0.0056128693, 0.06498613, -0.026288122, -0.021255486, -0.0083482545, 0.016803082, 0.01100075, -0.017620146, -0.040403184, -0.0012848023, -0.025056606, -0.060344264, -0.02177651, -0.028514322, 0.03701652, -0.01210793, -0.038982205, 0.0073417276, 0.0049675074, -0.032327283, -0.013463781, 0.004946785, 0.06403881, -0.0038988125, -0.03569027, 0.009638978, 0.010823128, -0.0036205375, -0.004076435, 0.006151657, 0.012729608, -0.026240755, 0.022119915, 0.010574456, -0.028466957, 0.038366448, -0.023067234, 0.017430682, 0.022048866, 0.03142733, 0.004810608, -0.01701623, 0.017478049, -0.06730706, 0.034790315, -0.019325322, -0.00029474223, 0.00625231, -0.012575669, 0.03706388, -0.045163468, 0.014553199, -0.00022369326, 0.044121414, 0.004946785, -0.04693969, -0.017916184, 0.015725506, 0.055749763, -0.04395563, -0.048479084, 0.04656076, -0.068728045, 0.023458004, -0.042132042, 0.04504505, 0.006625317, -0.029177446, -0.03831908, -0.016057068, -0.0030255022, 2.180963e-05, -0.019976603, -0.032966726, -0.01100075, 0.013546672, -0.032019407, 0.047389667, 0.06692813, -0.03412719, 0.0063766455, 0.044855587, -0.040663697, -0.001273701, -0.074980356, -0.036992833, 0.04779228, -0.0167794, -0.0190056, -0.0022454436, -0.057881232, -0.05120263, 0.07128581, -0.0026480546, 0.020758143, 0.01013632, -0.0323036, -0.07526455, 0.03166416, 0.009106111, 0.03443507, -0.0005650614, 0.014553199, 0.02042658, 0.03410351, 0.016282057, 0.01630574, 0.038200665, -0.048313305, 0.010740237, -0.01210793, 0.03846118, -0.013901916, -0.03521661, -0.021066021, 0.021823877, 0.035903417, -0.013357207, -0.00082816463, -0.012255948, 0.011823733, 0.06574398, 0.009100189, -0.012954596, 0.018863503, 0.03872169, 0.03673232, 0.007448301, -0.067733355, 0.05342883, 0.028135395, 0.0008503674, -0.015737347, -0.02730649, -0.045637127, -0.07062268, -0.01385455, -0.016495204, 0.0058911443, 0.0416347, 0.004407997, 0.012291473, -0.018472733, -0.051865753, -0.031001037, -0.006554268, 0.031711526, -0.016708352, 0.029272178, -0.004138603, -0.030598426, -0.0032948963, -0.038650643, -0.007471984, 0.0150387, 0.001527553, 0.010609981, 0.029082714, -0.014197954, -0.030266864, -0.038958523, -0.010154082, -0.033014093, 0.014505832, 0.022617258, -0.011835575, 0.08710604, -0.015891287, 0.037253346, -0.02406192, -0.02280672, -0.0071996297, 0.01637679, 0.0033985095, 0.001527553, 0.0024793132, -0.0063588833, 0.050160576, -0.009230446, 0.03869801, -0.04061633, 0.050160576, -0.019668724, -0.008360096, 0.048336986, -0.00585858, -0.012812499, 0.016092593, -0.022629099, 0.009100189, -0.0048224493, 0.03365353, 0.022143597, -0.0111487685, -0.02643022, -0.040237404, -0.032493066, -0.021018656, -0.019573992, 0.0019804903, 0.105247214, 0.0323036, 0.0017110961, -0.027732784, 0.033345655, 0.022214647, -0.010752078, -0.015157115, 0.0021936372, 0.025790779, 0.025151338, -0.017300425, 0.02287777, 0.06432301, 0.054281417, -0.015737347, -0.02335143, -0.02541185, -0.0427478, -0.012054643, 0.022925137, -0.033842996, 0.0004740299, -0.04615815, 0.0033985095, -0.06323359, -0.00073343265, 0.0011708279, -0.020450264, 0.048739597, 0.019372687, -0.02730649, -0.009112031, 0.015311054, 0.042534653, 0.01599786, 0.01899376, 0.07081214, -0.047034424, -0.025932876, 0.014671613, -0.010195528, -0.04172943, 0.0035554091, 0.00090365415, -0.024961874, 0.038105935, 0.028561689, -0.070670046, 0.043718804, -0.008407462, -0.028230127, 0.017229376, -0.051392093, -0.0071463427, 0.039953206, 0.0032948963, 0.040284768, 0.059254847, 0.042771485, 0.017039914, -0.007839071, 0.0053109108, -0.016293898, -0.008460749, -0.012291473, -5.7264733e-05, -0.036921784, 0.01709912, 0.0045945006, -0.018851662, 0.0013010844, 0.013866392, -0.00025533227, -0.009094269, 0.029059032, -0.008028534, 0.008981775, 0.027140709, 0.007815387, -0.02042658, 0.08161159, -0.011415202, -0.03190099, 0.0064003286, 0.015678141, 0.019479262, -0.021563364, -0.026311804, 0.038484864, -0.010047509, 0.06749653, -0.0059325895, -0.011515855, -0.022842245, 0.012954596, -0.0052665053, 0.026596, -0.04343461, -0.0289643, -0.005985876, 0.05451825, 0.0013173664, -0.016660985, -0.010337626, -0.017063595, -0.004482006, 0.024369799, 0.027519636, -0.025909193, -0.014647931, -0.012102009, -0.024511896, 0.00016004522, -0.009946857, 0.027732784, -0.040095307, -0.050918434, -0.032635164, -0.051960483, 0.005408603, -0.02943796, 0.0007778383, -0.013641403, -0.021551523, 0.047768597, -0.014079539, 0.00082816463, 0.014138746, -0.039763745, 0.00411492, 0.060344264, 0.01559525, -0.01100075, -0.020698935, -0.010681029, -0.0056217504, -0.025980242, -0.023304064, -0.07858017, 0.0066904454, -0.017774086, 0.044595074, 0.022037024, 0.018330636, -0.006921354, -0.046679176, 0.0071048974, 0.016732033, 0.016400471, 0.03322724, 0.10600507, 0.008259444, 0.016258374, -0.0015046101, 0.04940272, -0.066217646, 0.007921961, -0.011036274, -0.002002693, -0.016080752, -0.011261263, 0.03287199, -0.056412887, 0.023339588, -0.0130611705, 0.035524487, -0.0049675074, -0.024725044, -0.048550133, -0.023517212, -0.010503407, -0.034932412, -0.00094065885, 0.022013342, -0.04210836, 0.027922248, 0.020000286, 0.0038928918, -0.028632738, -0.030622108, -0.03576132, -0.0055921464, 0.026169706, 0.0014498432, 0.017170168, 0.03199572, 0.0010945983, -0.016874133, -0.01796355, 0.014979493, 0.00054655905, 0.01100075, 0.020000286, 0.008259444, 0.009887649, -0.0028922854, -0.0417768, -0.011539537, 0.014553199, 0.0077443384, -0.029674789, 0.04440561, 0.030266864, -0.03609288, -0.05579713, 0.020402897, 0.03663759, 0.04774491, 0.07265942, -0.031072086, 0.020746302, -0.03782174, -0.0067555737, 0.04566081, 0.012658559, -0.042487286, -0.019301638, 0.02328038, 0.01559525, -0.010799444, 0.00474844, 0.037774373, 0.01892271, -0.009917253, 0.034695584, -0.0038218428, 0.0035554091, 0.04338724, 0.01638863, 0.02010686, 0.015311054, 0.04575554, -0.017513573, 0.03204309, -0.020166067, -0.0067555737, 0.006737811, 0.013416415, -0.050160576, 0.0059177876, -0.013641403, 0.00045219713, 0.019964762, -0.011101402, -0.03450612, -0.033132505, 0.028111711, -0.010308023, 0.012433571, -0.016696509, 0.04549503, 0.009710027, -0.016755717, 0.018733246, -0.030503694, -0.040782113, 0.006435853, -0.011687556, 0.0147781875, 0.015086066, -0.002572565, 0.032587796, 0.053949855, 0.04549503, 0.023244856, -0.02105418, -0.018614832, -0.047081787, -0.01297828, -0.038153302, 0.01321511, 0.023789566, 0.04850277, -0.013167744, 0.061670512, 0.0025710848, -0.025198704, -0.050871067, -0.0033067379, 0.03166416, -0.015618933, -0.040332135, -0.01013632, 0.001638567, 0.0019479261, -0.021338375, 0.037727006, 0.035335023, 0.040284768, 0.01599786, -0.0041830083, -0.046418663, 0.013961124, -0.039029572, -0.029864253, -0.029958986, 0.041350503, -0.035950784, -0.007696972, 0.02350537, -0.054565612, 0.0054914937, 0.005183615, -0.00022017781, -0.061054755, -0.02429875, -0.054328784, 0.0031883228, -0.012102009, 0.02960374, 0.047058105, 0.0074838256, -0.060012702, 0.0007733977, 0.008135107, 0.016637301, -0.042700436, -0.00084740703, -0.0009117952, -0.046229202, -0.0031202342, 0.01836616, -0.044121414, 0.02050947, 0.004635946, -0.024369799, 0.018010916, -0.015607092, -0.010349467, -0.010112638, -0.025601314, 0.018816138, 0.019917397, -0.00083630567, -0.00021185176, 0.010734316, 0.010343547, 0.004920142, -0.003386668, 0.01613996, -0.023256699, -0.0011523255, -0.04362407, -0.04170575, 0.004520491, -0.014304527, 0.0062641515, 0.0034014697, 0.033819314, 0.020616045, -0.042937264, 0.028206443, -0.054281417, -0.045329247, -0.009479118, 0.01796355, 0.013570354, -0.017158328, -0.0066667623, 0.020071335, 0.0048638945, -0.020367373, 0.015263689, 0.00038632881, 0.008904805, -0.015547885, -0.024630312, -0.0070160865, 0.016104434, 0.017939866, 0.009627136, -0.022984345, -0.029461643, 0.034648217, 0.002286889, -0.036542855, -0.005562543, 0.037561227, 0.05328673, -0.014920285, -0.008496273, 0.024748726, -0.027685417, 0.008336414, 0.026335487, 0.021705462, -0.017395157, -0.016708352, 0.03294304, -0.025838144, 0.015512359, -0.00016837128, -0.012398046, 0.0017273782, 0.0073358067, -0.009739631, -0.0071345014, -0.010254735, -0.015180798, -0.02936691, 0.0065720305, 0.037277028, -0.016057068, 0.018010916, -0.04227414, -0.015914971, -0.009230446, -0.045305565, -0.011936228, 0.0010797965, -0.005524058, 0.023102758, 0.035429757, -0.02382509, -0.0013232871, -0.036471806, 0.040782113, 0.010195528, -0.04987638, -0.024109285, 0.019029284, 0.016826766, -0.026738098, -0.054091953, 0.043600388, 0.028040662, 0.0074305385, 0.016637301, -0.04677391, -0.014943968, 0.036140244, -0.002437868, 0.020876557, 0.030053716, -0.032516748, 0.012646718, -0.0043724724, -0.016092593, -0.023019869, 0.005219139, -0.017513573, -0.013570354, 0.017833292, -0.032516748, 0.008194315, -0.05072897, 0.011918466, -0.011930307, 0.025056606, 0.03294304, -0.0049823094, -0.011237579, 0.021575205, 0.023375113, -0.026003925, -0.012125692, 0.087011315, -0.03450612, -0.040000573, -0.024582947, 0.001993812], [0.0078096157, -0.010749706, -0.023842297, 0.037095673, 0.006150072, -0.011174641, -0.0037870894, -0.0044847867, -0.014091762, 0.040058732, -0.05622923, 0.0005778254, 0.028459158, -0.05420792, 0.019926004, -0.011840755, -0.03344353, -0.00845276, -0.06628986, 0.0029400906, -0.0089293765, -0.057056133, -0.02967654, -0.04864931, -0.0028539551, 0.024692167, -0.049200576, 0.021327142, -0.02411793, -0.007424877, 0.030962829, 0.025312342, 0.015022025, -0.0081599, 0.029446844, 0.032088332, -0.0031554291, -0.009865382, -0.021327142, 0.01860526, -0.044721533, -0.0053633684, -0.01311556, -0.049246516, -0.031858638, -0.0015604876, 0.012357568, -0.018019538, -0.01692849, -0.033190865, -0.016262377, 0.006919549, -0.010422391, -0.009176298, -0.0024893149, 0.038726505, 0.0034540321, -0.03987498, 0.03810633, 0.0040454958, -0.072261915, 0.011168899, 0.051865034, 0.0057481066, -0.05342696, -0.010123788, -0.009250949, -0.00417757, 0.03089392, 0.021533865, -0.031904574, 0.0096012335, 0.05071656, -0.016090104, -0.01588338, -0.020592118, 0.05967465, 0.019730764, -0.014608575, 0.023405878, 0.035809383, -0.026093304, 0.032432873, -0.027471472, 0.033558376, 0.00269604, 0.05342696, -0.08223066, -0.041345023, -0.027241776, 0.00806228, -0.010606147, 0.020580634, 0.0038760959, -0.07010278, -0.0012877252, -0.012104904, 0.0050647655, -0.005326043, -0.015676655, -0.0020988341, -0.05126783, -0.07533982, -0.0052198092, 0.021476442, 0.026322998, 0.011306715, 0.0047173523, -0.011381366, 0.016457615, 0.041046422, 0.0148153, -0.010072107, 0.02137308, -0.0027534638, 0.041965198, 0.0088662105, -0.057745215, -0.032111302, 0.0012819829, -0.07763676, -0.032455843, 0.07414541, 0.029745447, 0.026805356, 0.018065479, -0.04860337, 0.040724847, 0.0127365645, -0.01270211, -0.06628986, 0.02834431, 0.03300711, 0.03466091, 0.016239407, 0.018421505, 0.048419617, -0.026782388, -0.02875776, 0.005641873, -0.03342056, 0.006936776, -0.0019021581, 0.022085134, -0.037601, -0.035694536, 0.009974487, -0.0028195009, -0.05246224, -0.03633768, 0.0011398593, -0.04543359, -0.01505648, 0.025886578, 0.013517526, -0.0016279602, 0.0029271701, 0.007355969, -0.011559379, 0.011794817, -0.00012947238, -0.052967567, -0.01692849, 0.038381964, 0.010462588, -0.0861814, 0.082644105, 0.004823586, -0.060271855, 0.04325149, -0.0015576163, -0.03773882, 0.01566517, -0.011456016, 0.010416649, 0.03468388, 0.03631471, 0.03815227, 0.023015397, -0.06408478, -0.033719163, 0.035717506, 0.08636516, -0.012162328, -0.008504442, 0.032754447, 0.015538838, 0.012173813, 0.045617342, 0.007958917, -0.045180924, -0.010692283, -0.053059448, -0.020890722, -0.017548665, -0.035740476, 0.016871067, -0.02202771, -0.0020026495, 0.032340996, 0.020121245, -0.03769288, 0.021889893, -0.004068465, -0.042975854, -0.0035889777, 0.02625409, 0.011944118, -0.008395337, -0.024163868, 0.008803044, 0.03133034, 0.0094749015, -0.0023385778, 0.009985971, 0.020190153, -0.056091417, -0.0022065034, -0.03227209, -0.050532807, 0.06284443, -0.04116127, 0.028941516, -0.02710396, -0.001190105, 0.036682222, 0.0171467, 0.029331997, 0.03472982, 0.028459158, 0.0074995277, -0.037302397, -0.023566663, 0.021820985, -0.09729862, -0.018593775, -0.047133327, 0.0128514115, 0.036659256, 0.006730051, 0.0304575, 0.039576374, -0.030158898, -0.015848925, 0.004714481, 0.040747818, 0.008073764, -0.020224607, -0.025932517, 0.00080752, -0.02050024, -0.046765815, -0.004817844, 0.00740765, 0.003402351, 0.052232545, 0.041390963, -0.03649847, 0.024738105, -0.019122073, 0.0050561517, 0.03976013, 0.005690683, 0.09693111, -0.0076201176, 0.02492186, 0.016606918, -0.08801896, -0.06578453, 0.0037928317, -0.013620888, -0.029929202, 0.017525695, 0.0037756045, 0.048189923, -0.041781444, 0.053151324, 0.026024396, -0.022601945, 0.07125126, 0.009492128, 0.034454186, 0.0025740147, -0.0055212835, 0.04189629, 0.033167895, -0.05632111, -0.006419963, 0.00020188, -0.018008055, -0.010652086, -0.075202, 0.08383852, 0.025633914, 0.074788556, 0.0009137537, 0.017766876, 0.009038482, -0.05664268, 0.05131377, -0.061144695, 0.009641429, -0.03222615, -0.06560077, -0.01695146, 0.016538009, 0.012058965, 0.080163404, -0.02135011, -0.026483783, 0.07258348, 0.011570864, -0.0032358223, -0.0030980057, 0.007901493, -0.026391907, -0.023084305, 0.010990885, 0.09518543, -0.0016351383, 0.0075110127, -0.033948857, -0.102351904, -0.014528181, 0.027471472, 0.0043957797, -0.016974429, -0.005578707, -0.029538723, 0.012748049, -0.09601233, -0.028252432, -0.0032875035, 0.014505212, -0.027907891, -0.080209345, 0.00922798, -0.048189923, -0.039461527, 0.0016107332, 0.0019150785, 0.035258118, -0.03204239, -0.024829984, 0.0024175353, -0.025473129, -0.033719163, 0.012139359, 0.007826842, -0.045824066, 0.0014413334, 0.041712534, 0.011088505, -0.015401022, 0.029033395, 0.009394508, -0.031192522, -0.049338393, -0.029607631, -0.012725079, 0.03440825, -0.0600881, -0.013885037, 0.06863274, -0.0074765584, 0.012782503, -0.046398304, 0.023865266, 0.01544696, 0.025542036, 0.0058026593, -0.002345756, -0.036636285, -0.04026546, 0.0025338184, -0.009451931, 0.058709934, 0.001488708, -0.027816013, -0.0026371807, -0.010123788, -0.044308085, 0.010692283, 0.010422391, 0.017043337, 0.017881723, -0.0708378, 0.019087618, 0.0007077464, 0.004995857, -0.028022738, -0.007120532, 0.006804702, -0.02492186, -0.016021196, 0.042011138, 0.006356797, 0.022556007, 0.013862068, -0.01904168, -0.011685711, -0.0178243, -0.01736491, -0.010330513, 0.031996455, 0.031468157, -0.011748877, -0.0397831, -0.023934174, 0.053840406, -0.05108407, 0.03771585, -0.056045476, 0.06886243, 0.011553637, 0.025105616, 0.026391907, -0.02135011, 0.016974429, 0.015022025, 0.043619, -0.057285827, 0.022590462, 0.03987498, 0.017158184, 0.038221177, 0.01292032, 0.003672242, -0.043756817, -0.02217701, -0.011421563, 0.017594604, -0.012656171, 0.035671566, -0.027310684, -0.05071656, -0.054253858, -0.014172155, -0.0014700453, 0.0036492725, 0.025312342, -0.01860526, 0.0046168608, 0.06964339, -0.011421563, -0.013127045, -0.05338102, -0.029033395, 0.045663282, -0.014930148, -0.026920203, -0.020293515, -0.0768558, 0.012139359, 0.036153927, -0.004289546, 0.0049929856, -0.0041057905, 0.014631544, -0.03971419, 0.03638362, 0.015182812, 0.015492899, -0.025312342, 0.035855323, 0.04187332, -0.037302397, 0.03849681, -0.014172155, 0.013953946, -0.064222604, 0.024738105, -0.020431332, -0.033259775, -0.027149899, -0.03507436, -0.032295056, -0.012966258, 0.04694957, -0.010382195, -0.019730764, -0.04276913, 0.028091647, 0.004140245, 0.026506754, -0.013150014, -0.00086853263, -0.016239407, 0.07805022, 0.0050647655, -0.034569032, 0.05080844, -0.012219751, 0.009905579, -0.027471472, -0.02786195, -0.019857096, -0.036429558, -0.020844782, 0.0015777146, 0.03176676, 0.05632111, 0.034569032, 0.0107439635, -0.014643029, -0.01886941, -0.029423876, -0.033627287, 0.016595433, -0.022578977, 0.028482128, -0.027379593, -0.029056363, -0.004680027, -0.018008055, 0.0078211, -0.005656229, 0.044997167, 0.007568436, 0.039599344, -0.018995741, -0.035349995, -0.049430273, -0.010158243, -0.03652144, -0.002965931, 0.033328682, -0.01826072, 0.07014872, 0.006333828, 0.023003912, -0.011932633, -0.05558609, -0.022154042, -0.010881781, -0.006167299, 0.034109645, -0.0050159553, -0.013069621, 0.03468388, -0.049200576, 0.048465554, 0.023911204, 0.04357306, 0.0067702476, 0.04364197, 0.046421275, -0.01377019, -0.031927545, 0.039530437, -0.026070334, 0.06624392, 0.0037239233, 0.00718944, 0.008584835, -0.03649847, -0.037026767, -0.0532432, -0.0050819926, -0.008699682, 0.008010598, 0.01224272, 0.043435242, 0.008464245, -0.012771018, -0.033213835, 0.060915, 0.0120130265, -0.012529839, -0.040449213, 0.011760362, 0.03387995, 0.003499971, -0.0061098756, -0.044262145, 0.07414541, -0.016572464, -0.005862954, 0.021625744, -0.018214779, -0.036751132, 0.0020973985, -0.011725908, -0.04327446, -0.0038330283, -0.00014508443, -0.013586434, -0.032869294, -0.010100819, 0.048189923, -0.017330455, 0.030641256, 0.011387109, -0.010554465, 0.03218021, 0.015044995, 0.02222295, -0.0029716736, 0.027907891, 0.06270662, 0.018387051, -0.026300028, 0.01603268, 0.010950689, -0.06973527, -0.015194296, 0.016595433, -0.048052106, 0.024071991, 0.00750527, -0.049659967, 0.044744503, 0.01355198, -0.046903633, 0.014654513, -0.028688852, -0.0065175835, 0.060731247, 0.014470758, 0.043481182, 0.028596975, -0.023865266, 0.08259817, -0.028574005, -0.0040598516, -0.012518355, -0.0039507467, 0.028252432, -0.021223778, -0.020856267, -0.021602774, -0.010364967, 0.015630716, -0.04446887, -0.0045048846, -0.021017054, 0.017031852, 0.04644424, -0.053564776, 0.018490413, 0.026116272, 0.042815067, 0.009899836, 0.07313475, -0.009360054, -0.0040885634, 0.039599344, 0.006017998, 0.07832585, 0.007643087, -0.035671566, 0.017858753, -0.006379767, 0.035671566, 0.0023529339, -0.001818894, -0.019018712, 0.00913036, -0.010812872, 0.04456075, -0.057699278, -0.06651955, 0.014218094, 0.03560266, -0.019811157, -0.044422932, -0.015320628, -0.016859582, 0.004763291, -0.014941632, 0.078463666, -0.024439503, -0.023314, -0.0091073895, -0.05664268, -0.036613315, 0.008567608, 0.014355911, -0.028459158, -0.041689564, -0.00019003637, -0.0027836112, -0.0069597457, -0.0028424703, -0.011266518, 0.002078736, -0.0460997, 0.009922805, -0.0241409, 0.01989155, 0.019926004, -0.03261663, -0.003264534, 0.028459158, 0.02163723, -0.021028537, 0.015251719, -0.025978457, -0.0041976683, 0.020672511, -0.0030836496, -0.031054707, -0.022521554, -0.05044093, 0.022395222, 0.021131901, -0.0004504167, -0.021120416, -0.05250818, -0.014401849, 0.017916176, 0.00015333908, 0.02829837, 0.070929684, 0.032318026, 0.038198207, 0.0015360825, 0.03390292, -0.048465554, 0.012001541, 0.007660314, 0.04364197, -0.012610232, -0.03851978, 0.036452528, -0.052278485, 0.038749475, -0.0020313615, 0.036957856, -0.003637788, 0.016779188, -0.0052714907, -0.026047364, 0.009515097, -0.025174525, 0.0018016668, -0.013104076, 0.0038416418, 0.02492186, 0.008263262, 0.0019035938, 0.008401079, -0.022372251, -0.044698562, -0.012759534, -0.009555294, 0.044744503, -0.003468388, 0.0034396762, 0.020534694, -0.047179267, -0.007361711, 0.012518355, -0.031881608, -0.012150843, 0.05962871, 0.0053203003, 0.012759534, 0.003276019, -0.052094728, -0.016802158, -0.0020227479, -0.02222295, -0.05250818, 0.025656885, -0.014884208, -0.0042235088, -0.04021952, 0.03769288, 0.021752076, 0.012139359, 0.058893688, -0.02878073, -0.033627287, -0.0044359765, -0.012793988, 0.020511726, 0.011128702, -0.026047364, -2.6782745e-05, 0.03769288, 0.01483827, 0.038726505, -0.028229464, 0.045043107, 0.011054051, 0.0061845263, 0.019386223, -0.0011369882, 0.008240293, 0.015263204, 0.016342768, 0.013632373, -0.04697254, 0.04573219, -0.021361595, 0.024209809, -0.051543463, -0.005972059, 0.025427189, 0.0017313228, -0.037463184, 0.009773504, 0.027035052, 0.014149185, -0.002945833, 0.0053978227, -0.030319683, -0.025450159, 0.047087386, 0.018766047, -0.002576886, -0.0088662105, 0.042585373, 0.028642913, 0.02178653, 0.013804643, -0.036199864, -0.028688852, 0.021843953, 0.024439503, 0.009704595, -0.009773504, 0.009049966, 0.0033994797, 0.031054707, -0.003766991, -0.044124328, -0.011806301, -0.025243433, -0.04270022, -0.03298414, -0.03973716, 0.0077119954, 0.00028586207, 0.037509125, -0.0515894, 0.04061, 0.01588338, 0.0011068407, 0.019558493, 0.00085704785, 0.022578977, 6.958131e-05, -0.03893323, 0.03723349, 0.013896522, 0.006620946, -0.018593775, -0.00041560363, 0.03776179, 0.013402678, 0.015802987, -0.02368151, -0.025610944, -0.021292686, -0.06459011, 0.01503351, -0.006081164, 0.01505648, 0.060363732, 0.05007342, 0.007907236, -0.031192522, 0.0037440215, -0.00058931013, 0.0037239233, -0.06766802, -0.021166354, -0.084481664, -0.025863608, 0.025679853, -0.013873552, 0.052967567, -0.0026572791, -0.051175952, 0.0070056845, -0.0053547546, 0.016170498, -0.016136045, -0.008148415, -0.006414221, -0.022395222, -0.013540495, -0.033305712, -0.034614973, -0.00803931, -0.014413334, -0.03344353, 0.028045708, 0.012541324, 3.878339e-05, -0.023796357, 0.04449184, 0.008917891, -0.013012198, -0.041413933, -0.013643858, 0.0030980057, 0.012621717, 0.009193526, 0.014895693, -0.013620888, 2.1511436e-05, -0.0070229117, -0.01695146, 0.0567805, 0.02091369, 0.03002108, -0.025335312, 0.0135749495, -0.0031870122, 0.055218574, -0.025059678, 0.03971419, 0.0008010598, -0.033765104, -0.028183524, -0.029837325, -0.025748761, 0.0482818, 0.019707795, 0.043710876, 0.050486866, 0.0016681568, 0.023980113, 0.019018712, 0.030985799, -0.024209809, -0.030181866, 0.016974429, 0.02455435, 0.02832134, 0.01267914, 0.006305116, -0.002134724, 0.017652027, 0.0106807975, -0.042125985, -0.014298487, 0.03218021, 0.0688165, 0.004998728, -0.008871953, -0.0147808455, -0.031422216, -0.007252606, 0.025197495, 0.0057739476, -0.017858753, -0.017629059, 0.045938917, -0.0023227865, 0.015102418, -0.009388765, 0.007867039, 0.0039335196, 0.025542036, -0.022062164, -0.006483129, -0.014505212, -0.011323943, -0.031583004, -0.0013178727, 0.021464959, -0.04274616, 0.020661026, -0.00084412756, 0.0057739476, 0.031537063, -0.048741188, -0.0012403507, 0.024531381, 0.033535406, 0.04359603, 0.0048666536, -0.0034080932, -0.016802158, -0.019087618, 0.030962829, 0.032134272, -0.047133327, -0.00051142933, -0.02110893, -0.01207045, -0.018674169, -0.025059678, 0.029469814, 0.037118644, 0.007947432, 0.044262145, -0.048833065, -0.0012934676, 0.033374622, 0.005044667, 0.004114404, -0.017502727, 0.025082648, 0.011794817, -0.004855169, 0.0045163697, -0.04315961, -0.02967654, 0.007011427, -0.06739239, -0.0026414876, 0.0024405047, 0.013885037, -0.0557239, 0.007987629, 0.006167299, 0.0068161865, -0.013000713, 0.010060622, 0.023635572, 0.026070334, 0.020879237, -0.016802158, -0.027724136, 0.08374664, -0.022590462, 0.008418306, 0.0018734464, 0.028642913], [-0.020986488, 0.0053201043, -0.020398632, 0.050978944, -5.1483396e-05, 0.0072365175, -0.033648923, 0.028405242, 0.0057874504, 0.025771642, -0.028193612, 0.019928345, 0.012333236, -0.0252073, 0.011592536, 0.054035798, -0.035483036, 0.000433177, 0.009840723, -0.02171543, -0.0004960042, -0.056058027, -0.048768602, 0.0037799194, 0.03336675, -0.029651497, -0.013849907, -0.0036858623, 0.021762459, 0.023420215, 0.019646175, 0.010987043, 0.03792852, -0.01728299, 0.0015254884, -0.010011202, -0.014132078, 0.056669395, 0.007730317, -0.032449696, -0.03908072, 0.0033919339, 0.010128773, -0.031955898, -0.027300071, 0.001748874, 0.007824374, -0.009923023, -0.0060372893, -0.013285564, -0.0103580365, -0.019516846, -0.000622026, -0.018200047, -0.024784043, 0.010963529, 0.041972976, -0.0010449155, 0.060572766, -0.013344349, -0.02828767, 0.019340489, 0.047263686, -0.0136735495, -0.009346923, 0.02138623, 0.0029774946, 0.022079902, 0.044818204, 0.064429104, 0.022150444, 0.03929235, 0.0066075106, 0.003250848, 0.0052113505, -0.06753299, 0.05878568, 0.020269303, 0.026006784, -0.023878744, 0.026383014, -0.0096702445, -0.004482408, 0.008429866, -0.0047969115, -0.01626012, 0.04321923, -0.11653674, -0.022985201, 0.0050232364, 0.011845315, 0.010052351, 0.043242745, 0.0031156412, -0.015495906, 0.017435834, -0.009105902, 0.01769449, 0.013226778, 0.019563874, 0.0071013104, -0.021468531, -0.07049579, -0.06593402, 0.010557909, 0.050132427, 0.06993145, 0.007089553, -0.01235675, -0.033319723, 0.0032978768, -0.033084583, -0.0232321, 0.03197941, -0.01392045, 0.019587388, -0.023608329, -0.045523632, -0.048251286, -0.018329374, -0.10844783, -0.05488231, 0.0700255, 0.03886909, 0.005243683, 0.03484815, -0.01888196, 0.01051088, 0.00529659, -0.0009839253, -0.037434723, -0.0047675185, 0.018893717, 0.044512518, 0.060948994, 0.010275737, 0.08371081, 0.0020001829, -0.039174777, 0.035694666, -0.06471128, 0.0153077915, -0.01785909, 0.03649415, -0.029627983, -0.013861664, -0.042937063, -0.032990523, -0.07284722, -0.016530534, -0.016095519, -0.03324918, -0.024454843, 0.021762459, 0.030074755, -0.022397345, 0.01814126, 0.047733974, -6.392943e-05, 0.06000842, 0.038022578, -0.08145344, -0.013567735, 0.041831892, 0.0135442205, -0.06696865, 0.011239822, -0.02015173, -0.048439402, 0.014602363, 0.028405242, 0.0060666823, 0.03752878, -0.013309078, -0.039809663, -0.021903545, 0.016906762, 0.0021001184, -0.040914834, -0.054223914, -0.031603184, 0.042513803, 0.079196066, -0.03675281, 0.0059990785, 0.06555779, 0.033648923, 0.03247321, 0.036564693, -0.059538137, -0.018905476, 0.013403135, -0.029980697, -0.0135442205, -0.010998801, -0.033413783, -0.006542846, -0.032708354, -0.029251754, 0.0056434255, 0.009787816, -0.012709464, 0.016471747, -0.0104168225, -0.018940747, 0.03809312, 0.007377603, 0.0136853065, 0.0007028563, 0.028499298, 0.03818718, 0.006983739, -0.0034830517, -0.004841001, -0.029651497, 0.012462565, -0.06527562, -0.007130703, -0.0042795977, -0.04528849, 0.048086688, -0.015589963, 0.027111957, -0.0120275505, -0.009693759, 0.028852012, 0.017635705, -0.0038298871, 0.028640384, -0.010892986, -0.030121783, -0.024172671, -0.035577092, 0.008500409, -0.07458727, -0.016365934, -0.04056212, -0.015448877, 0.038163666, 0.0028422878, -0.022491401, 0.009799573, -0.046581775, 0.00038725068, 0.010093502, 0.044042233, 0.016119033, 0.05488231, -0.027111957, 0.02245613, 0.029204726, 0.016495261, 0.024501871, 0.008218238, -0.0017914936, 0.09297543, 0.003756405, -0.0047557615, -0.02476053, 0.03193238, -0.02311453, 0.041831892, -0.04376006, 0.041643776, -0.031532638, -0.0237259, 0.017870847, -0.04067969, -0.0687087, 0.016389448, 0.068003275, -0.03324918, 0.013638278, 0.03383704, 0.018752633, 0.023514273, 0.08512167, 0.037105523, -0.059067853, 0.030098269, 0.010169922, 0.020092946, -0.002426379, -0.019716717, 0.029533926, 0.010316887, 0.03268484, -0.019693203, -0.02746467, 0.021703674, -0.01051088, -0.0047880937, 0.020880673, 0.014766963, 0.028264156, 0.01626012, 0.021703674, 0.00076127454, -0.045100376, 0.036306035, -0.004896847, -0.009940659, -0.03665875, -0.035083294, 0.020727832, 0.04535903, -0.009928902, 0.107413195, -0.003950398, -0.028804984, 0.068238415, -0.040326975, -0.044489004, -0.018917233, 0.025560014, 0.010957651, 0.020045917, 0.044230346, 0.059302993, -0.04573526, -0.0054582506, -0.032449696, -0.09255218, 0.012568379, 0.051825456, -0.009164687, 0.013791121, -0.017412318, -0.021092303, 0.026218414, -0.040468063, 0.0019854864, -0.013226778, 0.0077655884, -0.055822883, -0.09678475, -0.009000088, -0.050226487, 0.018364647, -0.025113244, 0.011357393, 0.0073129386, -0.049615115, -0.044112775, 0.009875994, -0.016248362, -0.03550655, 0.034989238, 0.014026264, 0.028029013, 0.0012536047, 0.03494221, 0.012885821, 0.039433435, 0.00780086, 0.003868098, -0.0013028376, -0.031861838, 0.005954989, 0.018176533, 0.053377397, -0.06504048, 0.044042233, 0.0723299, 0.004494165, -0.020727832, -0.018058961, -0.018588033, 0.0088060945, 0.0033066946, -0.04408926, 0.047028545, -0.040820777, -0.007089553, -0.0003042159, -0.03313161, 0.04211406, -0.0010008262, -0.052577913, 0.009511523, 0.0255365, -0.019975374, -0.048674542, 0.040374007, 0.046652317, 0.023573058, -0.032426182, -0.0073246956, 0.029369326, -0.023537787, 0.013697064, 0.052577913, 0.0031009447, 0.008371081, 0.03193238, 0.035906292, -0.038680978, 0.01658932, -0.0031891232, 0.023502516, -0.010957651, 0.009682002, -0.03708201, -0.06109008, 0.046299603, -0.067109734, 0.021621373, -0.03440138, 0.0020516203, 0.040091835, 0.00086267985, 0.017341776, 0.0011066404, 0.038234208, 0.03628252, 0.015390092, -0.025019186, 0.061560366, -0.020821888, 0.017835576, -0.0029995393, -0.033766493, -0.062453907, 0.022714786, -0.07016659, 0.03362541, -0.05850351, 0.013779364, 0.0003887203, -0.03143858, -0.004911544, 0.0136030065, 0.01436722, -0.022491401, -0.005722786, -0.051590312, -0.049427, -0.06409991, 0.0073129386, 0.069978476, -0.006143104, -0.017424075, 0.027488185, 0.009458616, -0.06649836, -0.0036270765, -0.08483949, -0.023667116, 0.03665875, -0.019117104, -0.024125643, -0.010258101, -0.037105523, -0.028311184, 0.04474766, 0.004211994, 0.031132897, 0.0033478446, 0.055070426, -0.07731493, -0.00035014222, 0.027582241, 0.066827565, -0.000121245466, 0.040021293, -0.01999889, -0.0069484673, 0.023866987, 0.012697707, 0.038492862, -0.0006242304, 0.0054700077, -0.03715255, 0.06071385, 0.00047285733, -0.035929807, 0.004861576, -0.00090823876, 0.025183786, 0.0065781176, -0.013932207, -0.020868916, -0.030333411, 0.054412026, 0.017929632, -0.0065898746, 0.040585633, 0.030474497, 0.08173561, 0.014273163, -0.026335984, 0.037223093, -0.012239179, -0.027911441, -0.01469642, -0.015495906, -0.012862307, -0.038916122, 0.0063664895, 0.0025219058, 0.010599058, 0.03193238, 0.03214401, 0.042137574, 0.008224117, 0.0066898107, -0.025936242, -0.039268836, 0.028217128, -0.0112221865, 0.005537611, -0.008788459, -0.037246607, 0.013120964, -0.016154304, -0.05036757, 0.003965094, 0.00361238, 0.0056404863, 0.024360785, 0.0009222004, -0.014931563, -0.063253395, -0.035106808, -0.025301358, -0.0033772374, -0.0018252954, -0.0078067384, 0.010022959, -0.034213267, -0.009429223, -0.0068720463, 0.015731048, 0.029345812, 0.02762927, -0.0028217128, 0.039104234, -0.0051790182, 0.013767607, 0.00052649924, -0.02336143, 0.03933938, -0.003062734, 0.020339845, -0.020457417, 0.04672286, 0.05455311, -0.00771856, -0.021703674, 0.0012829974, -0.017153662, 0.01535482, 0.011269215, 0.012544864, 0.010111137, -0.030639097, -0.045053344, -0.04303112, 0.0023837592, -0.041526206, 0.015495906, 0.036070894, 0.079619326, 0.036964435, -0.020410389, -0.06358259, 0.014390735, 0.009035359, -0.0063370964, 0.027017899, -0.0089001525, 0.062124707, 0.0067133247, -0.0048351223, -0.036917407, 0.07943121, -0.017835576, -0.037552293, -0.03054504, -0.016942034, -0.050978944, 0.0002768438, -0.012615407, -0.04011535, 0.015413606, 0.02988664, -0.016448233, -0.04368952, -0.037011463, -0.0023470183, 0.005496461, 0.027934955, -0.00119041, -0.0076127457, -0.0076421383, -0.01063433, 0.027746841, -0.020175247, 0.0057580573, 0.025089728, -0.006196011, -0.017212447, 0.00730706, 0.0032302733, -0.026829785, 0.002541011, 0.031579666, -0.036893893, 0.02692384, 0.017576918, -0.11268039, -0.003465416, 0.065087505, -0.008958938, 0.005755118, -0.029792583, -0.000784054, 0.062594995, 0.02093946, 0.024995672, 0.0687087, 0.033554867, 0.06080791, -0.029463382, 0.02955744, -0.002898134, -0.0151784625, -0.002476347, -0.013297321, 0.011310365, -0.0011037012, -0.017377047, -0.04314869, -0.012885821, -0.0044500763, 0.017388804, 0.034636524, 0.023643602, 0.00845926, -0.009699637, 0.010258101, 0.0458058, 0.005246622, 0.074258074, -0.021397987, -0.032167524, 0.029651497, -0.018682089, 0.049944315, -0.022491401, -0.027605755, 0.030803697, -0.032073468, 0.045476604, 0.0001872875, -0.011480844, -0.015131434, 0.01695379, -0.024807557, 0.026500585, -0.039692093, -0.06767408, 0.0068250177, 0.037364177, 0.032073468, -0.029439868, -0.022656001, -0.018388161, -0.003912187, 0.016436476, 0.0467934, -0.048909687, -0.02336143, -0.045147404, -0.012009915, -0.025465958, 0.005487643, 0.027347099, -0.051167056, -0.031509124, -0.017917875, -0.07745601, -0.009023602, -0.032379154, -0.023443729, -0.0042884154, -0.03708201, -0.006501696, -0.029181212, -0.017259477, 0.006448789, -0.04573526, -0.015460634, 0.06395882, 0.01662459, -0.011069343, 0.0063782465, -0.028264156, 0.013567735, 0.002939284, -0.0036829228, -0.0033272696, -0.018223561, -0.0063253394, 0.025113244, 0.037364177, -0.0019120043, -0.016836219, -0.038892608, -0.008288781, 0.019657932, -0.0028760894, 0.028593356, 0.04535903, 0.008400474, 0.00086341467, -0.008623859, -0.005058508, -0.08380487, 0.030403955, 0.027088441, -0.002270597, 0.00020078984, -0.028193612, 0.0135912495, -0.054600142, 0.014543577, -0.0006084318, 0.045782287, -0.007495174, 0.0012374385, -0.035153836, 0.016166063, -0.003394873, -0.0010544681, -0.0023190952, -0.023667116, -0.009617337, 0.030897753, 0.0135442205, 0.049944315, -0.016224848, -0.03284944, -0.042960577, 0.009370438, -0.03654118, 0.024219701, -0.011539629, 0.009517401, -0.031062353, -0.022244502, -0.041596748, -0.01477872, -0.022561945, 0.01904656, 0.038234208, 0.021362716, -0.00792431, 0.007695046, -0.023138044, -0.021409744, 0.00086929323, -0.00029668398, -0.010322765, 0.041361604, 0.0004026819, -0.0059667467, -0.063065276, 0.0062547964, 0.0248781, 0.03597684, 0.08234698, -0.0063077034, 0.026288956, 0.0013212082, -0.0049820864, 0.032073468, -0.0040914835, -0.018834932, -0.028076041, -0.0059461715, 0.021633131, -0.00018315413, -0.006154861, 0.044042233, 0.0121098505, 0.009417466, -0.02126866, -0.0055493684, -0.0152490055, 0.024313757, 0.017682733, 0.021644888, 0.015119677, 0.059302993, -0.017188933, 0.017964903, -0.01777679, 0.055070426, -0.012286208, 0.037223093, -0.061184138, -0.009329287, 0.047357745, 0.03132101, 0.027347099, -0.021974087, -0.014190863, -0.03306107, 0.018646818, 0.005111415, 0.0049997224, -0.01588389, 0.025160272, -0.00067640276, 0.00020942399, 0.02581867, 0.004367776, 0.022397345, 0.029439868, -0.005390647, -0.039268836, -0.015072648, -0.018117746, 0.046958003, 0.05229574, 0.026782757, 0.019563874, -0.010975286, -0.018987775, -0.011251579, -0.028005498, -0.005690454, 0.0012146591, 0.020727832, 0.037505265, 0.040797263, 0.06395882, 0.027746841, 0.017765032, -0.04705206, -0.03197941, 0.00089721644, -0.01243905, -0.03654118, 0.013414892, 0.018047204, -0.013073935, 0.0024851647, 0.02861687, 0.023173315, 0.030521525, 0.030780183, -0.025136758, -0.022820601, -0.010199316, -0.057751052, -0.013638278, -0.00829466, 0.022632487, 0.020857159, 0.027558727, 0.014966834, -0.025607042, -0.0030862482, 0.0003953337, -0.037340663, -0.05845648, -0.010622572, 0.008882516, -0.0006315787, -0.043618973, 0.03291998, 0.067062706, 0.032778896, -0.03247321, 0.02692384, -0.00369468, 0.004870394, -0.032825924, 0.021374473, -0.00406503, -0.06979036, 0.0030274626, -0.013097449, -0.043454375, 0.03708201, -0.010522637, -0.020469174, -0.008888395, -0.0066898107, -0.01658932, 0.008465138, -0.04006832, 0.015401849, 0.033319723, 0.0057198466, -0.009517401, -0.034260295, 0.03990372, 0.0088413665, -0.012145122, 0.01723596, -0.035812236, 0.039762635, -0.03197941, 0.018693846, 0.018787904, -0.022397345, -0.018999532, -0.019469818, 0.033390265, 0.0257011, -0.055963967, 0.022573702, -0.022855872, -0.01469642, 0.001510792, 0.008647374, -0.042843003, 0.021280417, 0.0235613, 0.031603184, 0.01535482, -0.031532638, 0.013567735, 0.00722476, 0.0056463648, 0.01728299, -0.033413783, -0.004335444, 0.01486102, 0.0136735495, 0.045217946, -0.005837418, -0.016119033, -0.0005764671, 0.03016881, -0.0027599877, -0.015002105, 0.050884884, 0.08526275, -0.027441155, -0.016060248, 0.023772929, -0.042137574, -0.041643776, 0.023655359, 0.025748128, 0.009834845, -0.02003416, 0.028170098, -0.033413783, -0.004297233, 0.002389638, 0.01695379, 0.009258744, 0.03252024, 0.016847976, 0.032449696, 0.028146584, -0.019034803, 0.027441155, -0.0025072093, 0.048909687, -0.034001637, 0.030074755, -0.035906292, 0.016977305, 0.0120980935, -0.045711745, -0.012427293, -0.010375673, 0.009823088, 0.03480112, 0.024666471, 0.0032361518, -0.011927615, -0.06104305, 0.00533774, -0.0044353795, -0.032285094, -0.0076009887, 0.01703609, -0.0014968304, -0.010563787, -0.0112339435, 0.041831892, 0.02188003, -0.0051055364, 0.038140148, -0.070448756, -0.010375673, 0.01827059, -0.0027776235, -0.0088178525, 0.01863506, -0.010175801, -0.009105902, -0.03136804, 0.0021706612, 0.0021971148, -0.034307323, 0.015648749, -0.04244326, 0.030333411, -0.0066075106, 0.011851193, -0.047992628, 0.013826392, 0.0028760894, -0.0020780738, 0.010687237, -0.001790024, 0.0063077034, 0.02845227, 0.036682263, 0.004949754, 0.013555978, 0.070213616, 0.002122163, -0.0121098505, 0.00025296214, 0.013520706], [-0.0077964854, -0.00078553264, -0.024242656, 0.026549239, 0.0070491997, 0.025443021, -0.05827652, 0.030762283, -0.0032245086, 0.06307798, -0.048202872, -0.02709058, 0.018087845, 0.009391087, 0.028879358, 0.03153899, -0.03255106, 0.028549846, -0.018076077, -0.024478022, -0.009067459, -0.022277353, -0.053004332, 0.009038039, 0.021041684, -0.006019475, -0.018229065, -0.008990966, -0.011374042, -0.008278985, 0.028855821, 0.01785248, 0.024454486, -0.0231129, -0.006660846, -0.0146162035, -0.018911626, 0.031844966, -0.020888695, 0.017087542, -0.067597, -0.01613431, 0.019135222, -0.021382963, -0.04267178, -0.023089364, -0.009903007, 0.02852631, 0.019523576, -0.05747628, 0.00061893795, -0.031562526, -0.013168705, 0.0021962551, -0.021347659, -0.0015181081, 0.051827505, -0.05422823, 0.05733506, -0.030597527, -0.046061046, 0.0284557, 0.05206287, -0.024595704, -0.0035451942, 0.04104776, -0.014957484, 0.036081545, 0.05121555, 0.04471946, 0.008708527, 0.028596919, -0.0032656975, 0.004080651, -0.009932428, -0.08379015, 0.06434895, 0.017052237, 0.020370891, 0.006937401, 0.0044778306, 0.0052280584, 0.0018167282, -0.01648736, 0.0011716794, -0.045260802, 0.021583024, -0.12446132, -0.020688636, 0.020841623, -0.0008664396, 0.0033863224, 0.03448106, 0.011856542, -0.005042708, 0.006137158, -0.0067491084, 0.023913145, -0.016710958, -0.03681118, 0.025960825, -0.023171743, -0.05874725, -0.042224586, 0.051497992, 0.056723107, 0.0394002, -0.024925217, -0.017252298, 0.0065902364, -0.010509074, -0.01764065, -0.03892947, 0.01915876, -0.028596919, 0.036764104, -0.0026640443, -0.053992867, -0.041824467, -0.040741783, -0.075646505, -0.04857946, 0.07343406, 0.009055691, 0.036269836, 0.012686205, 0.016381444, 0.0406241, 0.013851265, -0.022818694, 0.0017034585, 0.013380534, 0.023924913, 0.031774353, 0.050980188, 0.0039806208, 0.08652039, 0.026078507, -0.052580673, 0.020359123, -0.037093617, -0.022548024, -0.021830158, 0.021430038, -0.030291552, -0.02338357, -0.044837147, 0.03003265, -0.042977758, -0.037988007, -0.024148509, -0.061524566, -0.023877839, 0.0071786507, 0.027067043, -0.04453117, 0.00422187, 0.021324122, 0.018899858, 0.041377272, 0.035869718, -0.09452282, 0.0035893254, 0.021465342, 0.017499432, -0.04363678, 0.03761142, -0.011715323, -0.07927113, 0.010256056, 0.008431972, 0.019711869, 0.031586062, -0.022418573, -0.034622278, -0.009802977, 0.04027105, 0.005919445, -0.020606257, -0.06792651, -0.0023242352, 0.045472633, 0.052863114, -0.03605801, 0.028691066, 0.009279288, 0.0070903883, 0.010544378, 0.046437632, -0.04556678, -0.025089972, 0.02791436, -0.042601172, -0.021229977, -0.009408739, -0.024266193, -0.019664796, -0.03634045, -0.03323362, -0.010703251, 0.012250779, -0.055216767, -0.029608991, 0.005675253, -0.0019388241, -0.0009304296, 0.028361553, 0.04213044, 0.00021182903, 0.013851265, 0.01709931, 0.00957938, 0.012909803, -0.054369453, -0.027137652, 0.015828336, -0.047685068, -0.029185334, -0.031421307, -0.04766153, 0.06364286, -0.01471035, 0.017522968, -0.013227547, -0.000463376, 0.025843142, 0.02305406, 0.014839801, -0.018440895, 0.0076788026, -0.005428119, -0.0036981818, -0.07169236, 0.034457523, -0.07945942, 0.009497002, -0.036081545, -0.03125655, 0.02989143, 0.0070197787, 0.0010981276, 0.033351306, -0.01853504, -0.022159671, 0.021406502, 0.060206518, 0.040035687, 0.011232823, -0.034622278, 0.012191937, 0.031444844, -0.012050718, 0.027490702, 0.028243871, 0.011503493, 0.08812088, 0.0101736775, -0.01792309, -0.008649685, 0.020806318, -0.015840104, 0.026431557, -0.0537575, 0.009873587, -0.007743528, -0.026455093, 0.04022398, -0.042153977, -0.033751424, 0.0015548839, 0.08336649, -0.04952092, 0.046343487, 0.065290414, -0.011591756, 0.018617418, 0.075646505, 0.04330727, -0.026666922, 0.029373625, 0.012415535, 0.01415724, 0.028973505, -0.0036834716, 0.018440895, 0.023418877, 0.011644713, -0.05535799, -0.016404983, -0.005128028, -0.008873283, -0.012886266, 0.061477493, -0.009185142, 0.038435202, 0.015522361, 0.01395718, 0.014745655, 0.013686509, 0.02497229, -0.028949969, 0.000640268, -0.06712627, -0.035516668, 0.01729937, 0.032574598, 0.009826514, 0.085578926, 0.0005402376, -0.041259587, 0.045825683, -0.020064916, -0.03789386, -0.03810569, 0.04549617, 0.03215094, -0.0035981515, 0.013239315, 0.041259587, -0.04994458, -0.025254728, 0.0068314862, -0.07856503, 0.032480452, 0.04417812, 0.008632033, 0.016016629, -0.016028397, -0.026666922, 0.03495179, -0.057852864, -0.00731987, -0.0018711565, -0.018311443, -0.012486145, -0.082942836, -0.025278265, -0.048532385, 0.022959914, -0.017628882, -0.0099206595, 0.031280085, -0.035116546, 0.0038805902, 0.029773748, -0.027655456, -0.041024223, 0.03304533, 0.012156633, 0.01696986, 0.0014195488, 0.020806318, 0.045660924, 0.024525095, 0.01820553, -0.020017844, -0.0153105315, -0.046790678, 0.008579076, 0.012262547, 0.07253967, -0.049003117, 0.021053452, 0.074752115, 0.026007898, -0.03838813, -0.029773748, -0.02996204, 0.010450233, 0.018276138, -0.069574066, 0.0556875, 0.0118271215, -0.0067491084, 0.008120113, 0.010185446, 0.061383348, -0.007572888, -0.043424953, 0.012615596, 0.03236277, -0.009279288, -0.03725837, 0.024995826, 0.027584847, 0.010926847, -0.032668743, 0.015134008, 0.015898947, -0.00029935563, -0.00014774708, 0.024242656, 0.026031435, 0.002063862, 0.012780352, 0.01942943, -0.031233015, 0.012980413, 0.01812315, 0.010897427, 0.011921267, 0.02920887, -0.044319343, -0.04177739, 0.04535495, -0.07842381, 0.051733356, -0.023065828, -0.0071433457, 0.051121406, -0.022971682, 0.035540204, 0.017440591, 0.035516668, 0.038058616, 0.02421912, -0.022406805, 0.06947992, 0.004245407, -0.01567535, 0.027325945, -0.026102044, -0.010632641, 0.011121024, -0.042153977, 0.027820213, -0.050697748, 0.04905019, 0.0012474377, -0.015286995, 0.0057458626, -0.011897731, 0.01867626, -0.013380534, 0.017828943, -0.06449017, -0.032480452, -0.027937897, -0.025607776, 0.036764104, -0.01792309, -0.020053148, 0.01101511, 0.020300282, -0.059547495, -0.009655873, -0.0805421, -0.04780275, 0.026243264, -0.03276289, 0.005381046, -0.015616507, -0.025042899, -0.0014761835, 0.011050414, -0.035610814, 0.0284557, 0.008861515, 0.04441349, -0.10148964, 0.007461089, -0.023607168, 0.06449017, -0.019370588, 0.04321312, -0.0313507, -0.025301801, 0.020347355, 0.004925025, 0.0022036103, -0.030879965, -0.0094793495, -0.0025860795, 0.016287299, 0.0027390672, -0.05662896, 0.012274316, -0.015898947, 0.018793942, -0.010709135, -0.029938504, -0.0006292352, -0.011379926, 0.07244553, -0.0092263315, -0.028243871, -0.0041394923, 0.024925217, 0.080259666, 0.01880571, -0.03078582, 0.04055349, 0.0017887785, -0.010297244, 0.0022168497, -0.035351913, -0.0044366415, -0.033539597, -0.030950576, 0.022289122, 0.053710427, 0.01634614, 0.018111382, 0.03412801, 0.05267482, -0.0056281798, 0.004386626, -0.00029273596, 0.029091187, -0.0033598437, -0.0023742504, -0.026996434, -0.024948753, -0.018735101, -0.021100525, -0.055781644, -0.015051629, -0.0023389456, 0.042883612, 0.018134918, -0.0030979996, -0.0316096, -0.048485313, -0.023783693, -0.03057399, -0.0055722804, -0.017628882, -0.0011819766, 0.0070021264, -0.02906765, -0.020570952, -0.025207656, -0.00824368, 0.009903007, 0.015581203, -0.02647863, 0.05945335, 0.017617114, -0.0011724149, 0.026007898, -0.045119584, 0.040883005, -0.0050838967, -0.0009767672, 0.0024639836, 0.02633741, 0.010926847, -0.01381596, 0.0072963336, 0.006190115, -0.015781263, 0.022853998, 0.0092381, 0.028879358, 0.038364593, -0.040412273, -0.031844966, -0.022395035, 0.03641106, -0.031680208, 0.01594602, 0.06449017, 0.09033331, 0.0369524, -0.024266193, -0.034763496, 0.013098096, 0.01259206, -0.015028093, 0.016852176, -0.035140082, 0.050791893, 0.015510593, -0.0011076893, -0.02271278, 0.060300663, 0.03473996, -0.044389952, -0.04747324, -0.0006913864, -0.0037334866, 0.0046072816, 0.0027478933, -0.05874725, 0.008667338, 0.045872755, 0.016287299, -0.004742617, -0.032480452, -0.010509074, 0.022971682, 0.0067491084, -0.03358667, -0.014851569, 0.022406805, 0.007714107, 0.014263155, -0.007708223, 0.0107503235, 0.030503381, -0.023689548, -0.026313873, 0.03172728, 0.006160694, -0.051356774, -0.03796447, 0.009832398, -0.059971154, 0.0073492904, 0.016981628, -0.07164529, 0.010591452, 0.06401944, -0.01036197, 0.024525095, -0.0272318, -0.03003265, 0.043001294, 0.030974112, 0.04069471, 0.04328373, 0.03784679, 0.074752115, -0.036858253, 0.03768203, 0.0141101675, -0.005178043, 0.006660846, -0.017311139, 0.0059959386, 0.011073951, 0.0043219007, -0.017122846, -0.023289425, 0.006560816, 0.015781263, 0.024383875, 0.0006443133, -0.0077964854, 0.02906765, 0.0031627251, 0.038976543, -0.0042836536, 0.14997496, -0.029303016, -0.051733356, 0.028196799, 0.026031435, 0.02852631, -0.019617721, -0.024101436, 0.016863944, -0.022724548, 0.027608383, 0.006937401, -0.030691674, 0.00257284, 0.0011819766, -0.0048985463, -0.008461393, -0.024383875, -0.049850434, 0.006949169, 0.022312658, 0.0038099806, -0.019864855, -0.045025438, 0.009273404, 0.0004251291, 0.011738859, 0.08637917, -0.03671703, -0.049897507, -0.043660317, -0.032056794, -0.0072963336, 0.0012577348, 0.033727888, -0.019299978, -0.036764104, -0.0071198093, -0.054134086, 0.004745559, -0.026972897, 0.006431365, -2.624878e-05, -0.035893254, 0.0037776178, -0.03351606, -0.017358212, 0.033374842, -0.043660317, -0.014792727, 0.07856503, 0.024030827, -0.0034745845, -0.002400729, -0.046625923, -0.011821236, -0.026384482, -0.0085261185, -0.0066255415, 0.020370891, -0.022901071, 0.030738747, 0.031797893, -0.008596729, 0.0031744933, -0.037399594, -0.009661757, 0.022489183, -0.025937289, 0.013898338, 0.046978973, -0.01586364, 0.025231192, 3.8637652e-05, -0.012203706, -0.09584087, 0.037046544, 0.03419862, 0.049379703, -0.007855327, -0.0015857756, 0.014757423, -0.05512262, 0.019405894, -0.00201826, 0.033727888, -0.008890935, -0.0017770103, -0.013368766, 0.008520234, -0.002815561, 0.0027655456, -0.009714715, -0.01901754, 0.005260421, 0.043236658, 0.0057429206, 0.029514845, -0.028808748, -0.013627668, -0.071739435, -0.004466062, -0.01950004, 0.020888695, -0.016852176, 0.034457523, -0.030409234, 0.008855631, -0.002394845, 0.012815656, -0.03577557, -0.00615481, 0.03297472, 0.025137044, 0.00051081687, -0.009391087, -0.031562526, 0.0034687005, 0.03521069, -0.02633741, -0.02756131, 0.023630705, 0.0028317424, -0.052392382, -0.059359204, 0.0029155912, 0.026925825, 0.011609408, 0.08223674, -0.022194976, -0.0016681537, -0.008520234, 0.017040469, 0.038670566, -0.034457523, -0.079176985, -0.007208071, 0.0072492603, 0.006031243, -0.0024904623, 0.002066804, 0.057805788, 0.0031803777, -0.0068432544, -0.002894997, 0.009591148, 0.002653747, 0.036693495, 0.006519627, -0.012050718, 0.0078023695, 0.058794323, -0.023701316, 0.01026194, -0.017146384, 0.027184727, 0.013274619, 0.028879358, -0.046414096, 0.016087238, 0.023501255, -0.0043101325, 0.016028397, -0.018252602, -0.01805254, -0.043966293, 0.042036295, 0.037093617, 0.02831448, 0.019394124, 0.015487056, -0.0067608766, -0.014357301, 0.024595704, 0.0039776787, 0.00041924496, 0.032786425, -0.026290337, -0.016652117, 0.008802673, -0.02633741, 0.033421915, 0.015840104, 0.00513097, -0.0069727055, -0.018546809, 0.005525207, -0.033610206, -0.030268015, -0.02052388, -0.0045190193, -0.0117977, 0.025207656, -0.003068579, 0.042789463, 0.013768887, 0.027396554, -0.05747628, -0.027726067, -0.0008083337, -0.004616108, -0.03521069, 0.026761068, 0.018982235, -0.004836763, -0.00025154697, 0.0369524, 0.0012937753, 0.0146162035, 0.020700404, -0.036575813, -0.0106208725, -0.025960825, -0.058182374, -0.017570041, -0.02756131, 0.0153223, 0.021700708, 0.023101132, -0.0016505013, -0.02633741, -0.00013119793, -0.011350506, -0.009220447, -0.067267485, -0.025160583, 0.005916503, -0.023783693, -0.046272874, 0.03876471, 0.0014717705, 0.014769191, -0.021853695, 0.008267216, 0.00919691, -0.00015942342, -0.032809965, 0.0046602385, 0.009873587, -0.067597, -0.0119565725, -0.012956876, -0.04043581, 0.033963256, -0.006784413, 0.0072198394, 0.024407413, 0.0071668825, -0.0025522457, 0.031280085, -0.009332246, 0.00011795862, 0.024407413, -0.01002069, -0.02443095, -0.027208263, 0.018640954, -0.005672311, 0.02031205, 0.0041365502, -0.044860683, 0.034763496, -0.023924913, 0.008938008, 0.0033510176, 0.0074728574, 0.013839497, -0.029232407, 0.049285553, 0.011091604, -0.041494954, 0.026784604, -0.005180985, -0.0067902976, -0.021018147, 0.021324122, -0.011250475, 0.017817175, 0.031562526, 0.025701923, 0.022959914, -0.011974225, 0.009061575, 0.022289122, 0.012721511, 0.0018299675, -0.036975935, 0.027584847, 0.0053339726, 0.026290337, -0.0033863224, -0.03429277, -0.02195961, 0.0075964243, 0.008161302, -0.039776783, -0.009444044, 0.042718854, 0.080071375, -0.024948753, -0.016169617, 0.034080938, -0.031327162, -0.018982235, 0.0059606335, 0.035869718, 0.00025007594, 0.013262851, 0.0053633936, -0.014957484, -0.016393213, 0.00038430787, -0.013874802, -0.0055369753, 0.026455093, 0.020876927, 0.011744743, 0.018793942, -0.034386914, 0.02428973, 0.01286273, 0.0084672775, -0.0063431025, 0.037164226, -0.0262668, 0.009149837, 0.016310835, -0.023348266, -0.006101853, -0.02181839, 0.014133704, 0.04227166, 0.02298345, 0.0032186245, 0.006690267, -0.070468456, 0.015086935, 0.01436907, -0.03876471, 0.0036363984, 0.023936681, -0.0036775875, -0.025301801, -0.030903501, 0.04391922, 0.031303626, -0.0148044955, 0.0028935256, -0.06802066, 0.0020697461, 0.00999127, 0.019888392, 0.0034981212, 0.02203022, -0.0151222395, -0.006690267, -0.042459954, 0.017228762, -0.00605478, -0.049144335, 0.011732975, -0.0009135127, 0.061712857, -0.018040773, -0.009855934, -0.051545065, 0.021406502, -0.00016383652, -0.024572168, -0.035869718, -0.0024639836, 0.022724548, 0.043118976, 0.03229216, -0.019382356, -0.017275834, 0.07164529, 0.005678195, -0.0041453764, -0.007855327, 0.008549655], [0.0048156595, 0.018794574, -0.020930866, 0.06610505, -0.019766707, -0.035356842, 0.028563911, 0.043878008, -0.0037655158, 0.033964653, -0.014257953, -0.04001348, -0.03156432, -0.029884093, -0.023415206, 0.009121249, -0.049974844, 0.021122893, -0.019430662, -0.024579367, -9.779464e-05, 0.011929634, -0.03314854, -0.010669461, 0.049590793, -0.005001685, -0.015746156, -0.0035944923, 0.02592355, 0.019418659, 0.020054746, 0.040493544, 0.0101293875, -0.006732922, 0.020042745, -0.009139252, -0.022875132, 0.00035311087, -0.014137936, -0.018962597, -0.070569664, -0.011797615, -0.005382737, -0.030652197, -0.028083846, -0.018866584, 0.013669872, -0.021230908, -0.03163633, 0.012553719, -0.015098068, -0.008209124, -0.07076169, -0.015746156, -0.043781996, 0.011995642, 0.03221241, -0.0036665022, 0.023559226, -0.049878832, -0.05592766, -0.007104973, 0.07513029, 0.022527086, -0.045318205, 0.0011784114, -0.01766642, 0.05155906, 0.03468475, 0.05002285, -0.0011566584, 0.044286065, -0.02621159, -0.04212577, -0.00175224, -0.058375996, 0.051223014, -0.03175635, -0.0066189063, -0.0033694615, 0.045102175, -0.012361693, 0.04212577, 0.01059145, 0.0048966706, -0.038861323, -0.00027359996, -0.12836958, -0.025347471, 0.027315741, 0.045318205, 0.018926593, -0.0010261405, -0.024147308, -0.026715659, 0.020702835, -0.0054217423, -0.0061088367, -0.017174352, 0.019082613, -0.012973777, -0.05285524, -0.06557698, -0.06543296, -0.0012646732, 0.0072549935, 0.010999506, -0.024603369, -0.021878997, -0.06514492, 0.048606656, -0.016046198, 0.011275544, 0.08693991, -0.018602548, 0.059864197, -0.012445704, -0.04642236, -0.037445128, 0.0056767776, -0.06543296, -0.059624165, 0.057511877, 0.02810785, 0.012409699, 0.006330867, 0.010093383, 0.02307916, -0.009553309, -0.018674558, -0.05381537, 0.048078585, -0.00781307, 0.028827948, 0.056551743, 0.0053257295, 0.06308064, -0.0020537812, -0.042533826, 0.028083846, -0.057367858, 0.016322235, 0.004839663, 0.013981915, -0.013477846, -0.00723099, -0.017018331, -0.0628406, -0.01401792, -0.025371475, -0.06413678, -0.021951007, -0.020690834, -0.00047556512, 0.0642328, 0.03314854, 0.026787668, 0.025587505, -0.040925603, 0.019370653, 0.04080559, -0.04680641, 0.0037565145, 0.05141504, 0.020570816, -0.07964291, 0.052759226, -0.015194081, -0.029764077, 0.019394657, 0.002322318, -0.05045491, 0.033436578, -0.02928401, -0.023187175, 0.033508588, 0.06543296, 0.009889354, -0.019778708, -0.060488284, -0.04109363, 0.03074821, 0.049494777, -0.03739712, -0.018530538, 0.021794984, 0.02585154, 0.0019817713, 0.046782408, -0.052183148, 0.0061808466, 0.0032314425, -0.048438635, -0.021002876, -0.017582407, -0.023535224, 0.020306781, -0.021578955, -0.027555773, 0.0016307234, 0.016094204, -0.044430085, 0.008011097, -0.03518882, -0.01877057, 0.04512618, 0.01555413, 0.0011281545, 0.010885491, 0.0103994245, 0.027771803, 0.019670693, -0.016862309, 0.0012639231, -0.024051294, 0.014065926, -0.065528974, -0.019154623, -0.025755526, -0.020234771, 0.063176654, -0.044502094, -0.013117797, -0.040637564, 0.030292148, -0.008587176, 0.028011836, 0.0077890665, 0.013129798, 0.018866584, -0.03170834, -0.050982982, -0.025539497, 0.03754114, -0.07892281, -0.038453266, -0.027411753, -0.018494533, 0.04051755, 0.018734565, 0.0045036166, 0.040781584, -0.034300696, -0.01737838, 0.024939416, 0.04337394, 0.03718109, 0.04073358, -0.008113111, 0.00022653102, 0.018590545, 0.035284832, 0.06164044, 0.0047766543, 0.00016145961, 0.06668113, 0.004068557, -0.043565966, 0.010729469, 0.027795807, -0.040349524, -0.010801479, 0.020342786, 0.09529305, -0.04169371, -0.016670283, 0.019322647, -0.0481986, -0.046614382, -0.006762926, 0.04186173, -0.0013989416, 0.010087381, -0.0042455816, 0.0040715574, -0.033268556, 0.022203041, -0.009703329, -0.02052281, 0.049638797, -0.021338923, -0.013645869, 0.0025863543, -0.05563962, 0.008539169, 0.034348704, -0.007777065, -0.0467344, -0.063032635, 0.001226418, -0.00059633167, 0.009517304, 0.009337279, 0.01650226, 0.06519293, 0.0062468555, 0.02599556, 0.03118027, -0.06812133, 0.0554956, -0.0070509654, 0.010471434, -0.041957747, -0.03082022, 0.0147980265, -0.0059858197, -0.032908507, 0.12107258, 0.013309822, 0.03190037, 0.075466335, -0.038837317, -0.020822851, -0.04841463, 0.01599819, -0.020114755, 0.016814303, 0.04344595, 0.077386595, -0.03667702, 0.015638141, -0.0204388, -0.111471266, 0.018854583, 0.02241907, 0.038141225, 0.0027048704, 0.001285676, 0.0049776817, 0.033244554, -0.06327266, -0.004593629, -0.0051607066, -0.025803534, -0.04147768, -0.062264528, -0.015662145, -0.018926593, 0.020414796, 0.011815618, 0.023019152, -0.015002054, -0.016718289, -0.039029345, -0.02935602, -0.025539497, -0.0035914918, 0.030316152, 0.048174597, -0.049926836, 0.0014904541, 0.027387751, 0.019766707, 0.023763254, 0.00035329838, 0.01007538, -0.042245787, -0.048606656, -0.007044965, 0.011917632, 0.038813315, -0.01614221, -0.0011664097, 0.05813596, 0.0045306203, 0.027531771, -0.029308014, -0.0019487669, -0.009217262, 0.0204388, -0.040613562, 0.022743115, -0.054199424, -0.03228442, -0.008149116, -0.03542885, 0.019682696, -0.009697328, -0.002169297, -0.012421701, -0.009811344, -0.05775191, -0.056263704, 0.017858446, 0.015206083, 0.008443156, -0.017174352, -0.017042333, 0.05592766, 0.013285819, 0.0027993834, 0.03710908, -0.0029809081, 0.004905672, 0.0321164, 0.022131031, 0.00040918103, 0.03278849, 0.012481709, 0.026547635, -0.04776654, 0.003732511, -0.020210767, 0.019622687, 0.029380023, -0.047814548, 0.016658282, -0.019898726, 0.029932098, 0.058231976, -0.022527086, 0.0073330044, -0.002512844, -0.0055537606, 0.0043475954, 0.008485162, -0.012139662, 0.031732347, -0.014726017, -0.0018347512, 0.04200575, -0.055735633, -0.060776323, 0.030340156, 0.0160702, 0.044502094, -0.032692477, 0.044502094, -0.013741882, -0.013729881, -0.01578216, 0.015686149, 0.020858856, -0.009913358, -0.008119112, -0.018386519, -0.046758402, -0.04483814, 0.000306792, 0.041501682, 0.022755116, -0.015398108, -0.0090852445, -0.0031504314, -0.0028083846, 0.02089486, -0.06408878, 0.019598683, 0.03242844, -0.039677434, -0.042677846, -0.013021783, -0.05578364, -0.025827536, 0.028227866, -0.06624907, 0.0061298395, 0.033052526, 0.023175174, -0.052087132, 0.048846688, -0.010843485, 0.06620107, -0.022215042, 0.024747388, -0.0068889433, -0.060632303, 0.02789182, 0.017210357, 0.003687505, -0.011257541, -0.001160409, -0.021626962, 0.0076930537, 0.0021587957, -0.032596465, -0.01592618, 0.016298233, 0.009793341, -0.040205505, -0.026907684, -0.015206083, 0.032908507, 0.018170489, 0.021434935, -0.022731112, 0.00452762, 0.025347471, 0.077866666, 0.040133495, 0.027267734, 0.028515905, 0.011443567, 0.024627373, -0.014581997, -0.043781996, -0.009043238, -0.042965885, 0.0039005342, -0.0072189886, -0.0011784114, 0.026643649, 0.017042333, 0.006432881, -0.010321413, -0.009757336, -0.0025533496, -0.00387053, 0.017978461, -0.027435757, 0.005892807, -0.011545581, -0.0153381005, 0.021806987, -0.042533826, -0.0014627003, -0.016658282, 0.009925359, -0.025731524, 0.039365392, 0.01884258, -0.06140041, -0.04344595, -0.021134894, -0.023307191, 0.00013454967, -0.0077590626, -0.0017762432, -0.0160702, -0.009739334, -0.022947142, -8.007346e-05, -0.009955363, 0.010711467, -0.00956531, 0.02103888, -0.0057457867, 0.0006038327, -0.004986683, 0.015590135, -0.041597698, 0.052039128, 0.020990875, 0.013033785, -0.03096424, 0.031132264, 0.0321404, 0.022587093, -0.020618824, 0.045510232, -0.05175109, 0.04752651, -0.008077106, 0.033028524, 0.034036662, -0.034036662, -0.03593292, -0.040109493, -0.029644059, -0.010567447, -0.0074830246, 0.0401575, 0.064808875, 0.042029757, 0.012661734, -0.05578364, 0.028611919, 0.010753472, -0.02899597, 0.02345121, 0.0103994245, 0.061160374, 0.0043265927, -0.025251457, 0.02352322, 0.08295536, 0.034204684, -0.054535467, -0.0137898885, -0.034324702, -0.022359062, -0.004980682, 0.022467077, -0.039965473, 0.011149527, -0.018014466, -0.011935635, -0.060776323, -0.03204439, 0.015206083, 0.0093432795, 0.018278504, -0.009337279, 0.015446115, -0.013825893, 0.017402383, 0.020558815, 0.027027702, 0.02306716, 0.029404027, -0.027243732, 0.0070629674, 0.007699054, -0.03818923, -0.014606, -0.010165392, 0.04563025, -0.024303328, 0.025203452, 0.02402729, -0.061880473, 0.015890175, 0.043926015, -0.026547635, 0.019946732, -0.039005343, -0.0045396215, 0.062024493, 0.025059432, 0.054439455, 0.016898314, 0.00606083, 0.0423418, -0.033460584, -0.0011709103, -0.008641183, -0.026595643, 0.013153802, -0.000912875, 0.0024273323, 0.022047019, -0.019454664, 0.017690422, 0.0019892724, 0.037925195, 0.016994327, -0.012565721, 0.011965639, -0.042701848, -0.012433703, 0.020198766, 0.03979745, -0.016754294, 0.06591303, -0.03146831, -0.027195724, 0.040493544, -0.012913768, 0.05323929, 0.031732347, 0.0137658855, 0.058087956, 0.015938183, 0.040709574, 0.026739663, -0.03125228, -0.046614382, 0.0016817303, -0.03178035, -0.0057847924, -0.054631483, -0.047574516, -0.012865762, 0.034804765, -0.0031774351, -0.031228276, -0.027651787, -0.016178215, -0.0011056514, 0.013057788, 0.07239392, -0.026595643, 0.0008611179, -0.020786846, -0.0046836413, -0.024231318, -0.0025203452, 0.053767364, -0.03614895, -0.030148128, -0.040853593, -0.00576679, -0.01578216, -3.2113774e-05, 0.0022218043, -3.4364082e-05, -0.05856802, -0.0142699545, -0.011617591, 0.00868919, -0.0074530207, -0.011887628, -0.0009661323, 0.04762252, -0.019826716, -0.013561857, 0.00810711, -0.027363747, 0.020690834, -0.0314203, -0.0030514179, -0.036268968, -0.01979071, -0.035284832, 0.034996793, 0.014666009, -0.0111615285, -0.01190563, -0.044742126, -0.0060878335, 0.028755939, -0.02803584, 0.029956102, 0.050694942, 0.04738249, 0.018926593, -0.055111546, 0.011437566, -0.05146305, 0.020198766, -0.033772625, 0.027147718, 0.022167036, -0.053767364, 0.021722974, -0.068361364, 0.0080291, -0.0037025071, 0.06168845, -0.015962185, 0.01986272, -0.045174185, -0.021374928, 0.004218578, 0.027363747, -0.03182836, -0.017210357, -0.010753472, 0.038861323, 0.039461404, 0.018686559, -0.017102342, -0.02124291, -0.022971146, -0.02059482, -0.00262836, 0.01884258, -0.012457706, 0.015818166, -0.02249108, 0.015950184, -0.0013201808, 0.016178215, -0.019406658, -0.0060848333, 0.0048156595, 0.040781584, -0.028827948, 0.0049356758, -0.013333826, -0.011251541, 0.0043145907, -0.015254089, -0.012115659, 0.02577953, 0.0046236333, -0.025827536, -0.00789108, 0.030388162, 0.029764077, 0.0379732, 0.014341964, -0.015206083, -0.028827948, 0.012169667, 0.016550267, 0.004137567, -0.016886313, -0.033316564, -0.045462225, 0.004710645, 0.0007283497, 0.036100943, -0.04337394, 0.012985778, -0.022755116, 0.016010193, 0.016826304, 7.566661e-05, -0.00942129, 0.029548047, 0.013705877, 0.011437566, 0.018362515, 0.05900008, 0.014930044, 0.03590892, -0.04222178, 0.06869741, -0.0057367855, 0.014774024, -0.04548623, -0.016178215, 0.020786846, -0.0059708175, 0.0048156595, -0.028635921, -0.046830412, -0.036557008, 0.01766642, 0.017018331, 0.019850718, -0.0021167898, 0.034876775, -0.03718109, 0.025035428, 0.007897082, -0.00642688, -0.001555713, 0.02277912, -0.003753514, -0.03593292, 0.029187998, 0.008209124, 0.011887628, 0.059720177, 0.017186353, -0.033388574, -0.026979694, -0.056167692, -0.0024408342, -0.030628195, -0.048366625, 0.013309822, -0.0080351, 0.042989887, -0.00035967425, 0.082283266, 0.01598619, 0.015638141, -0.014473982, -0.010885491, 0.00018593171, 0.0068949442, -0.09879753, 0.007194985, -0.009997369, 0.0021167898, 0.0035824906, 0.055543605, 0.045534234, 0.044550102, -0.016634278, 0.010453432, -0.01036942, -0.008071105, -0.04207776, 0.011113522, -0.009547307, 0.00018640053, 0.018194491, 0.03074821, 0.0525672, -0.02293514, -0.019454664, -0.021206904, -0.010117386, -0.059816193, -0.0182665, -0.051655073, -0.013333826, -0.01380189, 0.010867489, 0.03264447, -0.0085691735, -0.03658101, 0.0023103163, -0.035140812, 0.006462885, -0.04769453, 0.0035584874, 0.02606757, -0.034036662, -0.0111615285, 0.03149231, -0.048870694, 0.009691327, -0.020126756, -0.0020942867, -0.0024108302, 0.013297821, -0.0033484586, 0.016838307, 0.01592618, 0.021698972, 0.012793752, -0.044670116, -0.033316564, -0.030052116, 0.014449979, 0.008791204, 0.0070209615, -0.0066129058, -0.024459349, -0.0017207357, 0.011101521, -0.013093793, 0.031204274, 0.00083111384, -0.017354377, 0.0050796955, 0.05285524, 0.04102162, -0.030316152, 0.03768516, 0.013969913, -0.003891533, -0.029644059, 0.027003698, -0.081083104, -0.0008783703, -0.0078010685, 0.006534895, 0.042749856, -0.0029914097, 0.0030274147, 0.02885195, 0.030676201, 0.010675462, -0.028371885, 0.015158076, 0.018458528, 0.008023099, -0.001635224, -0.00057720405, -0.0048516644, 0.018974598, -0.038717303, -0.035812903, -0.009913358, 0.032476448, 0.098605506, -0.04577427, -0.0031804356, 0.00927127, -0.040613562, -0.032164406, 0.014666009, 0.02899597, -0.020270776, 0.003498479, 0.0423418, -0.006576901, 0.0137658855, -0.010429428, 0.002649363, -0.01007538, 0.04322992, 0.02825187, 0.005226716, 0.01993473, -0.0043986025, -0.022155033, 0.0027333742, 0.014377969, -0.030436167, 0.030484175, -0.0182545, -0.006972955, -0.0122176735, -0.049878832, 0.00024603368, 0.008377147, 0.014413974, -0.0053167283, 0.02906798, 0.00912725, -0.022287052, -0.04733448, -0.005673777, 0.0148100285, -0.063032635, -0.0027543772, 0.008341142, -0.008857213, 0.0204508, -0.004812659, 0.03586091, 0.029524043, -0.026307603, 0.0577039, -0.03768516, 0.0008798705, 0.026811672, 0.020270776, -0.014581997, 0.006096835, -0.009385285, -0.002688368, -0.015722154, -0.018638553, -0.039125357, -0.051127, 0.0138739, -0.021230908, 0.020702835, -0.0072909985, 0.02081085, -0.037061077, 0.01788245, -0.008851212, -0.00861718, -0.0076810517, 0.0007463522, -0.018938594, 0.058808055, 0.052903246, 0.0031564322, -0.008845211, 0.103598185, -0.0075970404, -0.0017147348, 0.026811672, -0.009283272], [-0.01511445, 0.026105627, -0.031746667, 0.04512833, 0.02312068, 0.023816325, -0.040296767, 0.023879565, -0.0012766651, 0.043079343, 0.0006592809, -0.0009644157, 0.00039525234, -0.029621791, -0.00473038, 0.03265733, -0.04515363, 0.011421212, -0.014937377, -0.022235315, -0.014557934, -0.04626666, -0.06076135, -0.02410723, 0.034276284, -0.024410784, -0.021893818, 0.016467793, 0.04310464, 0.018402949, 0.056916337, 0.034807503, 0.037463598, 0.009580917, 0.0022845585, -0.028964091, 0.0022813966, 0.024145175, 0.013280479, -0.0023730951, -0.06141905, -0.019857477, 0.0029011522, -0.053931393, -0.02272859, -0.012527918, 0.008841004, 0.0073801517, 0.0019493846, -0.053374875, -0.0066339155, -0.002673487, -0.007911371, -0.0054766163, -0.0061153444, -0.0017312053, 0.07184107, -0.020312808, 0.06784427, 0.007405448, -0.041612167, 0.030405972, 0.05084526, -0.017707305, -0.0027019451, -0.0045912513, 0.0027809956, 0.045634255, 0.0243096, 0.042725198, -0.038450148, 0.021716746, 0.018542077, -0.0019841667, 0.021931762, -0.06926086, 0.0565116, 0.04047384, -0.007974612, 0.0053406497, 0.043054048, -0.015089153, 0.02339894, -0.026687438, -0.0027952245, -0.018542077, 0.048265055, -0.12253455, -0.03199963, 0.024347544, 0.024018694, -0.0138243465, 0.04614018, 0.019048002, -0.0131666465, 0.0049106153, 0.007241023, 0.009966684, -0.004395206, 0.008183304, 0.0071524866, -0.004379396, -0.046342548, -0.06759132, 0.030153012, 0.046696693, 0.026130924, 0.027319843, -0.03627468, -0.026459774, 0.014304973, -0.020300161, -0.0037880985, -0.005375432, -0.017466992, 0.036957674, -0.012433058, -0.049125124, -0.009087642, -0.010036248, -0.096732475, -0.04396471, 0.05157885, 0.032682627, 0.0056600138, 0.018377652, -0.00065177114, 0.05807996, 0.0044837426, 0.0021375248, -0.008404646, 0.0047556763, 0.012211717, 0.054943237, 0.07406713, 0.0021770499, 0.065365255, -0.016720755, -0.034250986, 0.007089246, -0.03331503, 0.01892152, -0.015418003, 0.02772458, -0.01596187, 0.00015118402, -0.012926333, -0.03685649, -0.044065893, -0.017859083, -0.023538068, -0.044040598, 0.013406959, 0.005068716, 0.006690832, 0.0010403042, 0.015215634, 0.019958662, 1.5439545e-07, 0.03389684, 0.0229942, -0.058383513, 0.0031556948, 0.04811328, 0.0021438487, -0.022032946, 0.048265055, -0.006102696, -0.04823976, 0.011060742, -0.009441788, -0.019490683, 0.033947434, 0.009542973, -0.03594583, -0.00026462146, 0.038854886, 0.017833786, 0.002825264, -0.079935834, -0.02463845, 0.059294175, 0.07310587, -0.006197557, 0.0075256047, 0.06511229, 0.038753703, 0.030405972, 0.045305405, -0.04750617, -0.016708108, 0.009517676, -0.049580455, 0.016505739, -0.043686453, -0.012040967, -0.02503054, -0.020603715, -0.008727171, 0.011282083, -0.014747656, -0.032530848, 0.020287512, -0.00053556694, 0.016316017, 0.011604609, 0.039183736, 0.032227296, 0.02404399, -0.019743646, 0.030051826, 0.009802259, 0.010510551, -0.035262834, -0.018997408, 0.04548248, -0.03923433, -0.015772149, -0.014014067, -0.031746667, 0.06141905, -0.019465387, 0.035060465, -0.036679417, -0.008980134, 0.025827369, 0.010934261, 0.015278875, 0.017897027, 0.006226015, 0.002516967, 0.00066323346, -0.017378455, -0.008720848, -0.070677444, -0.007942991, -0.04763265, -0.027648693, 0.036654122, 0.03245496, 0.009720046, 0.003377036, -0.05018756, -0.00877144, 0.039613772, 0.03146841, 0.03554109, 0.036957674, -0.014836192, 0.028837612, 0.008916893, 0.011048093, -0.0012173773, 0.018289117, 0.013836994, 0.07173988, 0.017011661, -0.00067074323, -0.016733404, 0.022311205, -0.021059046, 0.040777393, -0.03215141, 0.04492596, -0.041485686, -0.02338629, 0.05216066, -0.07983465, -0.065415844, 0.003860825, 0.026510365, -0.044571817, 0.0134954965, 0.022779183, 0.030304788, 0.0047999443, 0.07472483, 0.02017368, -0.06693362, 0.027243953, -0.0059604053, 0.03475691, 0.014229084, 0.002877437, 0.029672384, -0.0007177783, -0.0032948235, -0.039740253, -0.04922631, 0.015797446, -0.034529246, -0.030633638, 0.038399555, -0.018440893, 0.050617598, 0.020464586, 0.017897027, 0.015607725, -0.010953233, 0.024423433, -0.01445675, -0.04593781, -0.03215141, -0.028028134, 0.031190153, 0.04474889, 0.013900234, 0.07831688, -0.010194348, -0.05539857, 0.06976678, -0.022589462, -0.012793528, -0.027496915, 0.015620373, 0.0010750864, 0.03159489, 0.033365622, 0.05737167, -0.029495312, -0.017264623, -0.043332305, -0.101994075, 0.009353251, 0.021324655, -0.017112846, 0.029292941, -0.039057255, -0.009226771, 0.03607231, -0.066731244, -0.002681392, -0.0071904305, -0.0017580824, -0.050035786, -0.0992115, 0.021653505, -0.051148817, 0.007702678, -0.02174204, 0.009555621, 0.024840819, -0.052615993, -0.043003455, 0.010112136, -0.036679417, 0.0020837705, 0.023677196, 0.0034940308, 0.02437284, 0.0015493892, 0.03915844, 0.024676394, 0.0027746714, 0.019667758, 0.018845633, -0.018744448, -0.038526036, -0.0054197004, 0.013255183, 0.071335144, -0.07735563, 0.018946817, 0.08524802, 0.0044647707, -0.013280479, -0.039993215, -0.0076584094, -0.00150354, -0.0032758515, -0.051857106, 0.047860317, 0.012363493, -0.008550099, -0.026965696, -0.023639252, 0.058838844, -0.006545379, -0.04823976, 0.022425037, 0.0071398383, -0.037438303, -0.018099396, 0.04459711, 0.021312006, -0.0059667295, -0.014330269, 0.018365005, 0.036805898, -0.016606923, 0.03113956, 0.023500124, 0.0036521317, 0.0128188245, 0.041941017, 0.01780849, -0.017517583, 0.02214678, -0.0063366857, -0.00338336, -0.017416399, 0.014823544, -0.041030355, -0.03194904, 0.06986797, -0.063493334, 0.0124899745, -0.041030355, -0.017859083, 0.026333293, -0.037160046, -0.0012727126, 0.0087081995, 0.030431269, 0.0032473933, 0.038551334, -0.011244139, 0.05408317, -0.0022561003, -0.009188826, 0.04330701, -0.02411988, -0.04581133, 0.02595385, -0.07644497, 0.04915042, -0.04565955, 0.029621791, 0.0005679776, -0.028179912, 0.033669177, -0.010504226, -0.021134933, -0.023221865, -0.0046355193, -0.044065893, -0.0011256787, -0.0055240467, -0.011427536, 0.052615993, 0.028331688, -0.007373828, 0.0005260809, 0.02208354, -0.053931393, -0.008847329, -0.074269496, -0.040423248, 0.042750493, 0.0063145515, -0.009093966, 0.008366702, -0.06824902, -0.000723707, 0.030330084, -0.013267831, 0.016644867, 0.009233095, 0.04479948, -0.084185585, -0.0053501357, 0.016809292, 0.06258268, -0.0039525237, 0.04285168, -0.01386229, -0.046013698, 0.044673, 0.018365005, 0.043585267, -0.03215141, 0.0051193084, -0.03291029, 0.04952986, 0.011604609, -0.053121917, 0.0076204655, 0.0061817467, 0.02490406, -0.0052900575, -0.050288748, -0.0026703249, -0.006709804, 0.04907453, 0.04001851, -0.0096757775, 0.03521224, 0.016847236, 0.1077616, 0.008613339, -0.02385427, 0.009960359, -0.03541461, 0.008366702, -0.003882959, -0.05157885, 0.007930343, -0.03956318, -0.012395114, 0.007550901, 0.017757898, 0.04545718, 0.019730996, 0.014279677, -0.011800654, 0.015797446, -0.024866115, -0.029141165, 0.060558982, 0.0038070707, 0.014507342, -0.020312808, -0.008733496, 0.010877345, -0.0027794144, -0.050212856, -0.015582428, 0.018048802, 0.004142245, 0.03882959, 0.0028537218, -0.05630923, -0.050617598, -0.019085946, -0.039917324, -0.009542973, -0.023335699, 0.001098011, 0.0282558, -0.05026345, -0.012433058, -0.017555527, -0.0074686883, 0.009043374, 0.026055034, -0.00602997, 0.038222484, -0.013609329, -0.015316819, 0.011218843, -0.041359205, 0.044900667, -0.012369817, 0.015342115, -0.013672569, 0.05211007, 0.0604578, -0.026004443, -0.014469398, 0.0051762247, -0.024537265, 0.01484884, 0.018023508, 0.011256787, 0.02056577, -0.040726803, -0.04581133, -0.033036772, 0.0034655726, -0.032859698, 0.005650528, 0.021602912, 0.07745681, 0.015999814, -0.022703296, -0.06354393, 0.024334896, 0.015721558, 0.007860779, 0.013128702, -0.011446508, 0.06754072, -0.006716128, -0.026333293, -0.009909767, 0.0624309, 0.008600691, -0.04548248, -0.00082370586, -0.028028134, -0.042927567, -0.0002069146, -0.008107416, -0.050010487, 0.019073298, 0.03149371, -0.0147856, -0.057321075, -0.040752098, -0.017365808, 0.0042750495, 0.027092177, -0.0058307624, -0.008486859, -0.00234938, 0.0061311545, 0.031316634, 0.0036110254, 0.0033106336, 0.023942806, -0.046747286, -0.038627222, 0.009808582, 0.008335082, -0.032859698, -0.00038220902, 0.016581627, -0.065466434, 0.0059698913, -0.0047872965, -0.11342794, -0.022564165, 0.08661402, -0.021021102, -0.0072663194, -0.024663746, -0.007253671, 0.04889746, 0.013723161, 0.049706936, 0.039664365, 0.023209218, 0.04080269, -0.046013698, 0.057017524, 0.021312006, 0.00272566, 0.019642461, -0.013735809, -0.00026205232, -0.018428246, -0.018377652, -0.0076457616, -0.0115034245, -0.0025501682, -0.010295534, 0.034149803, 0.0018687531, 0.0017391103, -0.007557225, 0.0051509286, 0.003541461, 0.014659119, 0.10280356, -0.036426455, -0.019060649, 0.029798865, -0.010459959, 0.07553431, -0.032404367, -0.035490498, 0.021008452, -0.016100999, 0.042472236, 0.004948559, -0.0236519, -0.019958662, 0.024878765, -0.031164857, 0.0035256508, -0.038551334, -0.037817746, 0.042067498, 0.00090038485, 0.009106614, -0.00074939843, -0.018390302, -0.0022845585, 0.007892399, 0.0024474026, 0.08575395, -0.05959773, -0.057523444, -0.04393941, -0.0064600045, -0.035439905, 0.014241733, 0.040600322, -0.032303184, -0.050035786, -0.02595385, -0.05544916, -0.0126543995, -0.024752283, 0.0018814012, -0.0023778381, -0.04672199, 0.02595385, -0.04750617, -0.0017343673, 0.020413993, -0.045963105, -0.025877962, 0.0545385, 0.02372779, -0.011414887, -0.015076506, -0.06197557, -0.0039651715, 0.005384918, -0.026156219, -0.0011557179, -0.013621977, -0.031240746, 0.015822742, 0.026358588, -0.012237012, -0.021387896, -0.061166093, -0.019920718, 0.035338722, -0.006178585, 0.025827369, 0.059698913, 0.014418806, 0.013267831, -0.012717639, -0.008644959, -0.06713598, 0.050238155, 0.01268602, 0.020249568, -0.021957058, -0.009049698, 0.008467887, -0.029217053, 0.008467887, -0.0020663792, 0.043711748, -0.0055335327, 0.03824778, -0.028609946, 0.015190338, 0.0039493614, 0.01116825, 0.015607725, -0.037564784, -0.0015509702, 0.038450148, 0.011048093, 0.032682627, -0.016100999, -0.05413376, -0.06025543, -0.016202183, -0.02936883, 0.023234515, -0.035009872, -0.0058212765, -0.03936081, 0.0073042633, -0.035009872, -0.019237721, -0.038778998, -0.020059846, 0.03718534, 0.023411587, 0.01137062, -0.0036173495, -0.033011477, -0.032429665, 0.0047525144, 0.000839516, -0.0018244848, 0.0269404, 0.00026244755, -0.0063398476, -0.04285168, 0.023563365, 0.040069103, 0.029520607, 0.07442127, -0.011705793, -0.0029564875, -0.0051098224, -0.008632312, 0.03495928, -0.013836994, -0.036375865, -0.012774556, -0.017138142, 0.012540567, 0.0056315553, -0.007879751, 0.05342547, -0.020907268, -0.008727171, -0.018112043, 0.009011754, -0.014924728, 0.025612352, 0.014633823, 0.021274062, 0.020957861, 0.056258637, -0.004939073, 0.0013849642, -0.024549915, 0.040524434, -0.01649309, 0.010940585, -0.05433613, 0.0056884717, 0.042725198, 0.013546089, -0.00020711223, -0.019832183, -0.011990375, -0.038930774, 0.030405972, 0.007936667, 0.0063398476, 0.020338105, 0.012009347, 0.00502761, 0.018542077, -0.009821231, 0.017909674, -0.0064821383, 0.031721372, 0.0023035307, -0.042269867, 0.019085946, -0.016075704, 0.02379103, 0.060407206, 0.013343719, -0.016442498, -0.025928553, -0.003863987, -0.029217053, -0.024195768, -0.02391751, 0.008417294, -0.0249673, 0.042801086, -0.024651099, 0.059901282, 0.004565955, 0.0147856, -0.058636475, -0.026889808, 0.014064659, 0.0046260334, -0.05347606, 0.011345323, 0.021590265, 0.02523291, -0.0041074622, 0.033264436, 0.038222484, 0.008189629, 0.025435278, -0.0031351417, -0.004411016, -0.0061374786, -0.04717732, 0.005192035, -0.018934168, 0.028812315, 0.031063672, 0.016720755, 0.009720046, -0.047531467, 0.019832183, -0.0030924543, -0.042876974, -0.057928182, -0.0027889006, 0.007405448, -0.0106812995, -0.009916091, 0.022652702, 0.018238524, 0.015519188, -0.015089153, 0.032505553, -0.012799852, -0.021463783, -0.0136599215, 0.030102419, -0.005501913, -0.06582058, 0.008139037, 0.005909813, -0.05737167, 0.025397334, 0.005226817, -0.011117658, 0.00234938, -0.0069754133, -0.0011343742, 0.032353777, -0.040119693, 0.022007652, 0.014659119, 0.008670256, 0.015544484, -0.02805343, 0.015987167, -0.002705107, -0.02142584, -0.007835482, -0.045305405, 0.046418436, -0.0018798201, 0.008670256, 0.022614758, -0.0022592624, 0.0048094303, -0.026560958, 0.014089956, 0.013065462, -0.031974334, 0.034023322, -0.014241733, 0.002716174, -0.009682101, 0.02358866, -0.0243096, 0.032834403, 0.035439905, 0.054437317, 0.019237721, -0.023866918, 0.007399124, 0.008176981, 0.001339115, 0.026156219, -0.03121545, 0.016644867, 0.027901653, 0.026130924, 0.004733542, 0.0047904584, -0.020451937, 0.014279677, 0.017580824, -0.029824162, -0.035490498, 0.021337302, 0.052717175, -0.013356367, 0.0054987506, 0.00438572, -0.047986798, -0.025131725, 0.009909767, 0.04889746, -0.0016252777, -0.008752468, 0.011440184, -0.024954652, 0.008954837, 0.0037975844, -0.028888203, 0.0037153722, 0.034453355, 0.012635427, 0.040043805, 0.014633823, -0.0073928, 0.0025201289, 0.0057833325, 0.040903874, -0.006118506, 0.0054197004, -0.010959557, 0.009245743, 0.01649309, -0.054285537, 0.0223365, 0.019313611, 0.033011477, 0.020477233, 0.010080515, -0.012907361, 0.012717639, -0.07082922, 0.0086892275, 0.024208415, -0.039714955, -0.024524618, -0.0010300276, 0.0064441944, -0.031240746, -0.016594274, 0.022045596, 0.0058054663, -0.031316634, 0.029444719, -0.07052567, -0.016872533, 0.043256417, -0.00082686794, -0.010618059, 0.01892152, -0.0048315646, 0.002354123, -0.014254381, -0.011237815, -0.030583046, -0.048366237, 0.018415598, -0.04211809, 0.029444719, -0.00096283475, -0.017074902, -0.039866734, 0.0037469922, 0.012755584, -0.006267121, -0.040752098, -0.022551518, 0.029014684, 0.031114265, 0.014140548, 0.0003685728, -0.00072173076, 0.05610686, 0.0030877113, -0.011364295, 0.022020299, 0.0020537311], [-0.036087133, 0.015177688, -0.021734817, 0.029048536, -0.008987392, -0.0049980907, -0.059197567, 0.048284307, -0.0030378303, 0.03663738, -0.038402762, 0.0154184215, 0.019407723, 0.008093239, -0.001474494, 0.017940395, -0.045899898, 0.01662209, -0.02181506, -0.022514334, -0.004639856, -0.044042807, -0.04294231, -0.017951857, 0.023981664, -0.019235771, -0.02377532, 0.01381353, 0.004714369, 0.011515097, 0.04555599, 0.01188766, 0.009956059, 0.011320217, 0.0029145975, 0.004849065, 0.0040896074, 0.077218205, -0.0030722208, -0.0025721253, -0.055758517, -0.0011305887, 0.010896067, -0.03079099, -0.003863203, -0.004499428, 0.010076426, -0.021792134, -0.008339704, -0.02158579, -0.0016034585, -0.0046484536, -0.039296914, -0.01293084, -0.023385562, 0.0032499053, 0.06057319, -0.049155533, 0.061077584, -0.025999242, -0.042896457, 0.042781822, 0.064012244, -0.018100884, 0.0153496405, 0.021688962, 0.012942303, 0.016301112, 0.039824236, 0.054291185, 0.013137183, 0.021390911, 0.015131834, -0.0057030963, -0.010827286, -0.053603377, 0.05011847, 0.016175013, 0.02909439, -0.018903328, 0.027237302, -0.014971345, 0.013068402, -0.0072392067, -0.005880781, -0.048421867, 0.013137183, -0.1146351, -0.029759273, -0.016312575, 0.016553309, 0.019212844, 0.005270349, -0.009291176, -0.038219344, 0.00062834367, 0.01694307, 0.015166225, -0.0039893016, 0.0034705778, 0.002036206, -0.02024456, -0.06965229, -0.04525794, 0.015831107, 0.05516241, 0.037210554, -0.010517771, -0.012128394, -0.041291565, 0.020886516, -0.021069933, -0.018983573, 0.033840284, -0.017160876, 0.015831107, -0.039893016, -0.038815446, -0.06314102, -0.020496758, -0.09033246, -0.06419566, 0.044042807, 0.0061444417, 0.032372955, 0.0157394, -0.0024188007, 0.07295378, 0.02204433, -0.0015848303, -0.021666035, 0.0051356526, 0.008953001, 0.025609482, 0.076484546, 0.038975935, 0.06763471, -0.022617506, -0.032029048, 0.011400461, -0.074329406, 0.02112725, -0.020863589, 0.034849074, 0.0023285255, -0.010064962, -0.0054251063, -0.03347345, -0.046037458, -0.03679787, -0.044593055, -0.050072614, -0.020382121, 0.010769968, 0.042827677, -0.018949183, 0.021047005, 0.044295006, -0.013687432, 0.02448606, 0.031937342, -0.062453207, 0.013114256, 0.047137957, 0.01439817, -0.07180743, 0.034872, -0.04580819, -0.030355375, 0.016954532, 0.018502107, -0.019694312, 0.060206357, -0.027741695, -0.0595644, 0.024967525, 0.03762324, -0.015246469, -0.016599163, -0.06488347, -0.02054261, 0.06653421, 0.04665649, -0.017436, 0.023190683, 0.044295006, 0.05502485, 0.024440205, 0.050072614, -0.05442875, 0.039961796, -0.0056830356, -0.039755456, -0.008437144, -0.005101262, 0.019568212, 0.022571653, -0.013893775, 0.023248, -0.013435234, -0.016415747, -0.04117693, 0.028337799, -0.05011847, -0.02632022, 0.016037451, 0.006345053, 0.02269775, -0.0136645045, 0.026503636, 0.005201568, 0.005688767, 0.0022697751, -0.035812005, -0.0061559053, 0.018605277, -0.03356516, -0.03601835, -0.013274745, -0.03725641, 0.038884226, -0.02393581, 0.026847541, -0.013171574, -0.02478411, 0.011944978, 0.046587706, -0.008270923, 0.028773412, 0.010930457, -0.048834555, -0.046587706, -0.016312575, 0.02693925, -0.05433704, 0.014489877, -0.004688576, -0.019304551, 0.025747044, 0.00024055461, 0.0014042801, 0.0037285069, -0.040580828, -0.006837984, 0.00594383, 0.05094384, 0.023007266, 0.01639282, -0.0119793685, 0.0030836842, -0.0046742465, 0.0076232343, 0.016404284, 0.037898365, -0.015624765, 0.09322127, 0.009319834, -0.024119226, -0.008110434, 0.049063824, -0.043767683, 0.029644638, -0.035766155, 0.050072614, -0.024531912, 0.00043203105, 0.04865114, -0.036889575, -0.05773024, 0.02824609, 0.024050444, -0.055208266, 0.015888426, 0.008907148, 0.044776473, -0.024531912, 0.063462, 0.06364541, -0.0022353847, 0.028910974, -0.005413643, 0.022032868, 0.020909443, 0.009577763, 0.009027515, -0.023339707, 0.010741309, -0.023889955, -0.037004214, 0.023018729, -0.032212466, 0.015716473, 0.03787544, -0.010116548, 0.04358427, 0.02556363, -0.002597918, -0.0035651517, -0.027672915, 0.0066832267, -0.022468481, -0.024073372, -0.044134516, -0.03024074, 0.0073538423, 0.06089417, 0.026985103, 0.09257931, -0.021792134, 0.0133206, 0.069744, -0.015005736, -0.026664125, -0.025082162, -0.017883077, 0.013824994, 0.02994269, 0.013228891, 0.01909821, -0.03230417, 0.013056939, -0.028933901, -0.10858237, 0.0038975936, 0.04016814, 0.029025609, 0.016037451, -0.025609482, -0.01685136, 0.02377532, -0.05442875, 0.0071360352, -0.0010360148, 0.027283154, -0.035147123, -0.08840659, 0.0029160306, -0.04679405, 0.021964086, -0.0223997, -0.022732142, 0.014994272, -0.06048148, -0.0033874675, 0.021207495, -0.039044715, 0.0011384699, 0.03695836, 0.016473064, 0.018628204, 0.0013677401, 0.022090185, 0.019178454, 0.018536497, 0.027535353, -0.0057288893, -0.014489877, -0.039228134, -0.029392442, 0.014948417, 0.061169293, -0.030836843, 0.025976315, 0.08455485, 0.018995037, -0.037279338, -0.008316777, -0.018433325, -0.025265578, -0.006322126, -0.04665649, 0.02987391, -0.022674823, -0.024508985, 0.0013906672, -0.016094768, 0.06589226, -0.016060378, -0.057134137, 0.0125181535, 0.031157821, -0.04108522, -0.022067258, 0.025128014, 0.014501341, -0.0147076845, -0.033771504, 0.02207872, 0.035124198, -0.0006759889, 0.020393586, 0.039388623, 0.016484529, -0.0076518934, 0.024577767, 0.023981664, -0.06112344, 0.0142032895, 0.0036511282, 0.025494847, 0.007422623, 0.0010138042, -0.030378303, -0.020577002, 0.050301883, -0.066671774, 0.0031352702, -0.02269775, 0.0131257195, 0.050393593, -0.02563241, 0.016576236, -0.0014494177, 0.030515864, 0.011096679, 0.03503249, -0.024807038, 0.046931613, -0.020256024, 0.042804748, 0.054382894, -0.03294613, 0.0035737494, 0.04810089, -0.08244557, 0.031891488, -0.06557128, 0.024508985, -0.04473062, -0.011194118, 0.007961408, 0.0038374101, -0.038586177, -0.007915554, -0.017974785, -0.04532672, 0.0069870097, -0.037462752, -0.0091478815, 0.05818878, -0.026732907, -0.028269017, 0.034298822, 0.018215518, -0.0828124, 0.014730611, -0.072632805, -0.015487202, 0.06337029, -0.021792134, -0.021505546, -0.009291176, -0.05626291, -0.008311045, -0.018284298, -0.013377917, -0.006494079, 0.044845253, 0.022915557, -0.04548721, 0.015338177, 0.009640812, 0.052732147, -0.02220482, 0.055070706, 0.0072449385, -0.044455495, 0.031364165, 0.024921672, 0.036522746, 0.0011750099, 0.021906769, -0.008540316, 0.050531156, 0.007846773, -0.05332825, -0.016862825, 0.015922816, -0.0025491982, 0.028475361, -0.02771877, -0.0014422529, -0.021482619, 0.035215903, 0.02524265, -0.023454342, 0.05773024, 0.025747044, 0.09074515, -0.0027512426, -0.047504786, 0.018490642, -0.016965996, 0.003370272, -0.035238832, -0.049384803, 0.0012251626, 0.018651132, 0.009973254, 0.0004141193, -0.0012144156, 0.07556746, 0.059151713, 0.005247422, -0.0030836842, 0.021872379, -0.026801689, -0.04833016, 0.013217428, 0.023270927, -0.006534201, -0.012713033, -0.013412307, -0.0034849073, -0.015968671, -0.052823856, -0.0040408876, -0.002410203, 0.008356899, 0.034665655, -0.0064310296, -0.022502871, -0.05763853, -0.020943834, -0.023167755, -0.021367984, 0.0039319843, 0.014948417, -0.016404284, -0.06304931, 0.008603364, -0.026251439, -0.003063623, -0.0013992648, -0.016839897, 0.024417277, 0.026664125, 0.018949183, -0.006855179, 0.0016550444, -0.033152472, 0.03448224, -0.0004871992, 0.012919377, -0.005201568, 0.038517397, 0.057363406, -0.0120481495, -0.013916702, 0.016003061, -0.025747044, 0.03948033, 0.015097443, 0.026847541, 0.032372955, -0.04142913, -0.04855943, -0.0572717, 0.012392055, -0.025609482, -0.009445933, 0.012071077, 0.07818114, 0.04434086, -0.020920906, -0.06474591, 0.025540702, 0.00014804049, -0.0013276178, 0.021826524, 0.03131831, 0.04424915, 0.0054394356, -0.021929696, -0.025380213, 0.05424533, 0.011136801, -0.024440205, -0.012392055, -0.020588465, -0.050760426, 0.007451282, -0.0029919762, -0.05433704, 0.016736725, 0.04363012, -0.026136804, -0.037439827, -0.038219344, -0.0147764655, 0.012839132, -0.0055655343, 0.013205964, 0.0063851755, -0.005018152, -0.008477266, 0.016346967, -0.018903328, -0.020382121, 0.008465802, -0.024050444, -0.02289263, 0.03778373, 0.010930457, -0.0074168914, -0.003212649, 0.010019109, -0.03810471, 0.04094766, -0.007703479, -0.12499812, -0.0074627455, 0.063920535, -0.034505166, 0.020336268, -0.04349256, -0.0022396834, 0.053603377, 0.022296527, 0.035972495, 0.04755064, 0.022709215, 0.0538785, -0.046358436, 0.042621333, 0.019361869, -0.010534966, 0.021757742, 0.0005767579, -0.0046255267, -0.002178067, -0.011131069, -0.035238832, -0.0031352702, -0.017653806, -0.025999242, 0.02171189, 0.0008912879, 0.006740544, 0.011497901, 0.02586168, 0.058005363, 0.0063393214, 0.120321006, -0.029461222, -0.0223997, 0.033611014, -0.0091478815, 0.035926644, -0.0016708067, -0.010936189, 0.0031897218, 0.0037141775, 0.05103555, 0.020267487, -0.021975549, -0.0066373725, 0.0071073766, -0.018330153, 0.012105467, -0.030309523, -0.024761183, 0.023030194, 0.018949183, 0.001335499, -0.035972495, -0.043951098, -0.041199856, -0.0059839524, -0.0071761576, 0.07414599, -0.0754299, -0.042208645, -0.048376016, -0.014145972, -0.029415369, -0.0046742465, 0.021952624, -0.008912879, -0.037233483, -0.018914793, -0.07666796, -0.010666797, -0.01669087, 0.00416412, 0.0060298066, -0.04688576, -0.003602408, -0.03154758, -0.003092282, 0.010649601, -0.03478029, -0.01577379, 0.047917474, 0.0016507455, 0.003275698, 0.011910588, -0.05085213, 0.018100884, 0.015670618, -0.0011570981, -0.04408866, -0.02609095, -0.03718763, 0.031455874, 0.03287735, -0.006975546, 0.004682844, -0.048146743, -0.049659926, 0.043056946, 0.004241499, 0.022984339, 0.060252212, 0.010787164, -0.009296907, -0.00088913855, 0.0042615603, -0.08826903, 0.040649608, 0.0069927415, 0.00623615, 0.007336647, -0.037393972, 0.020256024, -0.04317158, 0.026847541, -0.0157394, 0.034115408, -0.010764237, 0.02282385, -0.028360724, -0.0022353847, -0.007955676, 0.005576998, -0.01116546, -0.013366453, 0.00078381755, 0.009978986, -0.0008153422, 0.022720678, -0.030126106, -0.026893396, -0.059151713, 0.002509076, -0.020657247, 0.024463132, -0.016140623, 0.010609479, -0.011400461, -0.02439435, -0.036752015, -0.0030034399, -0.034344677, 0.019648457, 0.04631258, -0.0040580826, -0.01335499, 0.0037027139, -0.0057231574, -0.017080631, 0.037921295, -0.026159732, 0.006901033, 0.0114577785, 0.009583495, -0.0147764655, -0.033358816, 0.0075831125, 0.0012695838, 0.052732147, 0.06566299, -0.03131831, 0.0076920157, -0.008763853, -0.008672146, 0.049751636, 0.0030464279, -0.032923203, -0.04294231, -0.009262516, 0.018719913, 0.0005821314, -0.014123045, 0.04695454, -0.018559424, -0.040626682, -0.011606804, 0.017596489, -0.029552931, 0.014031337, 0.022445554, -0.0022511468, 0.01224303, 0.052686296, 0.0014845246, 0.023729468, -0.016495991, 0.0071589625, 0.010001913, 0.018685522, -0.06460834, 0.01067826, 0.06442493, -0.0014730612, 0.024761183, -0.005556937, -0.023305317, -0.04640429, 0.01400841, 0.011022165, 0.037646167, -0.016530382, 0.029415369, 0.0070156683, 0.023500197, 0.018570887, -0.0005864302, 0.009016051, 0.002272641, -0.033083692, -0.058922444, 0.016713798, -0.04408866, 0.044134516, 0.049751636, 0.009807033, 0.007147499, -0.0039033254, -0.011113874, -0.040878877, -0.024761183, -0.02217043, -0.0069698147, 0.0030607574, 0.046106238, -0.00036898174, 0.06910204, 0.00074297877, -0.0052617514, -0.018662596, -0.007818114, -0.004169852, 0.010460453, -0.036453962, 0.026274366, -0.021792134, -0.022594579, 0.007072986, 0.017298438, 0.019831873, 0.023064584, 0.018226981, -0.01466183, -0.0028845058, -0.014638903, -0.057913654, -0.013332062, 0.01955675, 0.01508598, 0.03755446, 0.0071704257, 0.014959881, -0.016484529, -0.0136645045, 0.0021307801, -0.04232328, -0.037967145, -0.011704245, 0.03432175, -0.0032957592, -0.029896835, 0.01316011, 0.040282775, 0.03934277, -0.026572417, 0.021241885, -0.011452047, -0.015647693, -0.015361104, -0.007921286, -0.008471535, -0.04787162, 0.0054079113, -0.00076733873, -0.029667566, 0.01462744, 0.006717617, 0.015326713, 0.012758887, 0.002977647, 0.0013885177, 0.048146743, -0.039572038, 0.0068265204, 0.020611392, -0.025540702, -0.010609479, -0.024531912, 0.04379061, 0.016152086, -0.009938864, 0.025380213, -0.021081395, 0.043515485, -0.015143298, 0.03354223, 0.02393581, -0.02547192, -0.014914027, -0.033748575, 0.0357203, 0.0054222406, -0.06034392, 0.015235006, -0.008333972, -0.04541843, 0.020760417, 0.02762706, -0.023821175, 0.032900274, 0.007514331, 0.043309145, 0.013343526, -0.03248759, 0.013286209, -0.00069855765, 0.011910588, 0.002011846, -0.049338948, -0.0032842958, 0.031432945, 0.012151321, 0.014294998, -0.0064482247, -0.007732138, 0.035582736, 0.016220868, -0.0035021026, -0.0032241123, 0.016083306, 0.070844494, -0.017023314, -0.0131257195, 0.04209401, -0.08015287, -0.026687052, 0.041062295, 0.004290219, 0.037485678, -0.020164315, 0.052136045, -0.020622855, -0.00057425024, 0.002529137, -0.014340851, 0.007898359, 0.05717999, 0.006511274, 0.011497901, 0.021459691, -0.022067258, 0.00016013092, 0.009210931, 0.013251818, -0.010259842, 0.049155533, -0.04401988, 0.011795952, 0.017779905, -0.025678264, 0.0032842958, 0.0097554475, 0.000590729, 0.021459691, 0.009572031, -0.010397404, -0.00848873, -0.060619045, 0.0109877745, 0.014914027, -0.053374104, 0.014226217, 0.02024456, -0.0007060806, -0.018754303, -0.0102942325, 0.03578908, 0.015716473, -0.038402762, 0.024967525, -0.048238453, -0.043194506, 0.015854035, 0.0047860155, -0.0011857569, 0.028521214, 0.0039463136, -0.0043303412, -0.0062762722, 0.020038217, -0.0072220117, -0.024050444, 0.0191326, -0.035376392, 0.0025205393, 0.012598398, 0.018272836, -0.053465813, 0.019029427, 0.018880403, 0.023637759, -0.027030958, -0.010271305, 0.034436386, 0.032923203, 0.025426066, -0.0016120562, 0.004241499, 0.048376016, 0.0011728604, -0.024463132, 0.019614067, 0.0017668136], [0.04311408, 0.011898586, -0.022592679, 0.035189196, 0.022266228, 0.06056234, -0.004789828, 0.064524785, 0.016570216, 0.03127178, -0.06979303, 0.0053470465, -0.015545835, -0.038093485, 0.0036472487, 0.043676928, -0.030956585, 0.023527006, -0.015241897, -0.054168396, 0.025575768, -0.039601915, -0.058040783, 0.011437051, 0.021849722, -0.016468903, -0.020904139, 0.0041256687, -0.026566379, 0.03302786, 0.011853558, 0.017594598, 0.039016556, -0.02472024, 0.027489448, -0.035301764, 0.01302428, 0.043361735, -0.06479495, -0.009157521, -0.05605956, -0.0075477785, -0.022705248, -0.014847904, -0.018956687, 0.010896718, -0.019936042, -0.019834729, -0.006849848, -0.068262085, 0.001447924, -0.021883491, 0.0035149795, -0.0049727536, -0.017774709, -0.025485713, 0.013801008, -0.033725794, 0.01990227, -0.02762453, 0.0023850643, 0.06547037, 0.033590708, -0.022412568, -0.007964285, -0.017797222, 0.013947349, 0.027894698, 0.026296213, 0.0182475, 0.0040271706, 0.032239877, -0.023842199, -0.05043109, 0.0047335434, -0.08303119, 0.08820938, 0.024877839, -0.025080463, -0.0317896, 0.0031603859, -0.033455625, 0.042731345, -0.003914601, 0.012697829, -0.06294881, 0.03410853, -0.09028066, -0.028097322, 0.008347021, 0.0040384275, -0.0037795177, 0.04862998, 0.033433113, -0.049035233, 0.019823471, 0.038386166, 0.007181928, -0.038363654, -0.025575768, -0.014307571, -0.02994346, -0.06565048, -0.042573746, 0.020431347, 0.03185714, 0.027872184, -0.04862998, -0.014588995, 0.034896515, 0.006669737, -0.043699443, -0.009776653, 0.023369407, -0.026543865, 0.04790954, -0.03946683, -0.09816052, -0.07172922, 0.015523321, -0.09671963, -0.006979303, 0.04309157, 0.022648964, -0.025913477, 0.0016111495, 0.01063218, 0.042371124, 0.0066021956, -0.016198738, -0.021500755, 0.0073057543, 0.04664876, 0.035639472, 0.056780007, -0.016300049, 0.062048256, -0.0034586948, -0.04246118, -0.0033967816, -0.08438203, -0.011853558, 0.0038161029, 0.033095405, -0.036810193, -0.011864815, -0.02240131, -0.036742654, -0.055339117, -0.010598409, -0.033748306, -0.005876123, -0.0031744572, 0.015849773, 0.030934071, -0.019992325, 0.02100545, -0.0035487504, 0.0052992045, 0.02196229, 0.04230358, -0.09473841, 0.0059774355, 0.0032757695, -0.0145327095, -0.068127, 0.049980816, -0.02512549, -0.027827157, 0.020532658, 0.042708833, -0.026949115, 0.018191215, 0.022682734, -0.034783944, 0.039556887, -0.0016941695, 0.04682887, 0.002249981, -0.07857344, -0.074340835, 0.046040885, 0.011729732, -0.066686116, 0.03068642, 0.011707217, 0.010969888, 0.008566531, 0.033117916, -0.0640745, -0.014352599, 0.010609666, -0.020228721, -0.0223, -0.021444472, -0.04194336, -0.015388237, -0.02778213, -0.022637706, 0.02726431, 0.0063883136, -0.050971426, -0.047819484, 0.012889196, -0.051781926, 0.008211938, 0.002909919, -0.009315118, 0.0066134525, -0.014240029, 0.025035435, 0.024675213, 0.0150505295, -0.0015717503, -0.008527133, 0.028164865, -0.03302786, 0.025800908, -0.0009012588, -0.066821195, 0.06299384, -0.005653798, 0.04084018, 0.0030787732, -0.013913578, 0.043046538, 0.018044876, -0.0010356385, -0.013069307, 0.044690054, 0.039309237, -0.059301563, -0.044239774, 0.020510145, -0.04248369, -0.03683271, -0.033275515, -0.02332438, 0.038949013, -0.002096605, 0.012146238, 0.046963956, -0.012934225, -0.021286873, 0.029065419, 0.056870062, -0.0057157115, -0.009939878, -0.025215546, 0.013936092, -0.014172488, -0.025688337, 0.07010823, 0.024922866, -0.016423875, 0.045815747, -0.022198686, -0.018754063, -0.021286873, 0.012044926, -0.008814184, 0.06776678, -0.027647045, 0.07028834, 0.0012227851, -0.043181624, 0.035774555, -0.04966562, -0.036044724, -0.04252872, 0.039534375, -0.037260473, 0.012574002, 0.03057385, 0.07213447, 0.009849823, 0.005605956, 0.0027115154, -0.05655487, 0.058220897, -0.046333566, 0.05227723, 0.014735335, 0.009883594, 0.06155295, 0.041898333, -0.024067339, 0.014667793, -0.034783944, -0.018461382, -0.002718551, -0.021050477, 0.052997675, 0.00421291, 0.054438565, -0.010699722, -0.008645331, -0.0262737, -0.045095302, -0.024089852, -0.02755699, 0.023279352, -0.023864713, -0.045815747, -0.009562771, 0.028480059, 0.009669712, 0.0945583, -0.0036528772, -0.013868551, 0.059661783, -0.012236294, -0.027466934, -0.037688237, 0.024089852, -0.04020979, 0.010356385, 0.028862795, 0.05605956, -0.05025098, 0.007007445, -0.018675264, -0.09347763, -0.016660271, 0.021455728, -0.0026383454, -0.012022412, -0.005780439, -0.05655487, 0.022637706, -0.07303503, -0.0037007192, -0.031181725, -0.0373055, -0.04709904, -0.07042342, -0.014881675, -0.03597718, 0.0155796055, -0.025508227, -0.022108631, 0.009939878, -0.02273902, -0.04705401, -0.007288869, 0.021331903, 0.0032532557, -0.015500807, 0.021388186, -0.014622766, 0.001215046, 0.056644924, 0.051331647, 0.044374857, -0.0057522967, 0.001238967, -0.04466754, -0.04102029, 0.012562745, 0.0181687, 0.06556042, -0.059976976, 0.010367642, 0.020352548, 0.006118147, -0.043654416, -0.024967894, -0.013249419, -0.027872184, 0.04077264, -0.045748204, 0.025102977, -0.04351933, 0.0072494694, -0.024269963, -0.021872235, 0.029650781, -0.01850641, -0.03777829, 0.009039323, -0.0102269305, -0.03615729, -0.0027410649, 0.010491468, -0.013710953, 0.041808277, 0.00075210433, 0.0071312715, 0.008082483, -0.028705198, -0.015163098, 0.033860877, 0.0014929516, -0.012528975, 0.018022362, 0.0113807665, -0.010266329, -0.0012600737, 0.016209994, 0.007508379, -0.012281322, 0.008763528, -0.0059211506, -0.028525086, 0.04248369, -0.029155476, -0.021399444, 0.0043311077, 0.007924886, 0.05425845, 0.0041678823, -0.020465117, -0.0027072942, -0.0074914936, 0.020037353, 0.015028016, -0.016862897, 0.036292374, -0.04131297, -0.010519611, 0.047684398, -0.02634124, -0.063083895, 0.03127178, -0.0056003276, 0.05344795, -0.05227723, 0.044892676, 0.008724129, -0.037440583, -0.03046128, 0.02814235, 0.023121756, 0.006022463, 0.0030365596, -0.07587178, -0.038251083, -0.03208228, 0.01633382, 0.027421907, -0.006669737, -0.032735184, 0.021838464, 0.014026147, 0.0062307166, -0.006061862, -0.03453629, 0.0262737, 0.007908001, -0.0047448003, -0.014543966, 0.0028874052, -0.054213423, -0.0109642595, 0.053492982, -0.003149129, -0.010637809, 0.01041267, 0.025508227, -0.086633414, -0.02048763, 0.021185562, 0.024877839, -0.018112417, 0.028119836, -0.0061350325, -0.028412517, 0.044397373, -0.0140036335, -0.0016055211, -0.001162279, -0.0150505295, -0.028682685, 0.029155476, -0.03196971, -0.037913375, 0.0015506435, 0.009264462, 0.037395556, -0.029695809, -0.024517616, -0.038070973, 0.019733416, 0.07501625, 0.022097373, 0.0037373041, 0.03230742, 0.015962342, 0.05732034, 0.026566379, 0.04009722, 0.050971426, 0.015455779, -0.0014169674, 0.01302428, -0.0017701539, -0.04311408, -0.05511398, 0.018303785, -0.0071200146, 0.030056031, 0.03870136, 0.03446875, 0.058446035, 0.024562644, -0.006461484, -0.01964336, -0.037868347, 0.015039273, -0.02645381, -0.042708833, -0.021860978, -0.042618778, 0.019440737, -0.017448258, 0.0059549212, 0.009979278, 0.015455779, 0.004846113, 0.014611509, -0.0127428565, -0.036540028, -0.026138615, -0.030551337, -0.003866759, -0.007328268, 0.008977409, -0.0142175155, -0.017380716, -0.025035435, 0.01236012, -0.018675264, 0.0017265332, 0.02354952, -0.0046406738, 0.0011770538, 0.023932256, 0.020859111, -0.045703176, 0.0020135853, -0.027399393, 0.060832504, -0.0005850091, -0.013958606, 0.010215674, 0.04966562, 0.015917314, 0.024990408, -0.014870418, 0.021770922, -0.06150792, 0.03969197, 0.0019784071, 0.024382534, 0.025575768, -0.027061684, -0.035774555, -0.011898586, -0.00029074567, -0.0030956585, 0.023774657, 0.01607491, 0.071504086, 0.071459055, -0.008836698, -0.01699798, 0.033117916, 0.010525239, 0.017437, 0.034761433, 0.027421907, 0.028390003, -0.012348863, -0.026611406, -0.0143188285, 0.044397373, 0.0068667335, -0.030011002, 0.010271958, 0.0011144371, 0.004581575, -0.018179959, 0.023504492, -0.038251083, -0.0072269556, 0.010789777, -0.023414435, -0.035256736, -0.034761433, 0.04293397, 0.011251312, 0.01865275, 0.02454013, -0.010851691, 0.026814032, 0.03829611, 0.034446236, 0.0064783692, 0.012247551, 0.012607773, 0.00077321107, 0.008617188, 0.0036950905, 0.0068667335, -0.0079192575, -0.024427561, 0.052322257, -0.05128662, 0.0031941568, 0.03521171, -0.046693787, -0.02645381, 0.047774453, 0.01792105, 0.015410751, -0.018596465, 0.005400517, 0.034964055, -0.005197892, 0.085732855, 0.060202118, 0.008313251, 0.059571728, -0.047324177, 0.030483793, -0.0027931284, 0.015129328, 0.0036416203, -0.023752144, 0.021298131, 0.014588995, -0.052412312, -0.015557092, -0.03138435, 0.0069061327, 0.05308773, 0.020453861, 0.066100754, -0.034828972, 0.044532456, 0.018709036, 0.021759665, -9.594783e-05, 0.054033313, -0.046783842, -0.030708933, 0.05750045, 0.0009097015, 0.04709904, -0.01810116, -0.017380716, 0.027669558, -0.00978791, 0.023369407, 0.024585158, -0.0053104614, -0.030934071, 0.044037152, -0.021466985, 0.010981145, -0.040389903, -0.0468739, -0.0006912465, 0.031226752, -0.0019966997, -0.021906005, -0.017200604, -0.023527006, -0.015140585, 0.022018576, 0.080779806, -0.014082433, -0.023166783, -0.043699443, -0.042191014, -0.0015548649, -0.009613427, 0.027286824, -0.0012157495, -0.02343695, -0.06294881, -0.008605931, -0.045635637, -0.026836546, -0.054978896, -0.013215648, -0.0603372, 0.0020684628, -0.005746668, 0.0062644873, -0.002358329, -0.01847264, -0.0036416203, 0.022705248, -0.0068892473, -0.008752271, -0.0036331774, -0.018371327, 0.0070581017, 0.029515697, -0.036112264, -0.010598409, -0.0041847676, 0.0016238136, 0.01681787, 0.05124159, -0.018866632, -0.010716607, -0.06411953, -0.03208228, 0.02726431, 0.019733416, 0.016671529, 0.062318422, 0.0042185383, 0.021804694, -0.028480059, 0.017223118, -0.08100494, 0.016401362, -0.025688337, -0.013530842, 0.00062581553, -0.0108573185, 0.02818738, -0.05245734, 0.02755699, -0.00081331393, 0.05169187, 0.0024343133, -0.001939008, 0.0054793158, 0.0027002585, -0.0028789626, -0.02505795, -0.02126436, -0.04241615, 0.006191317, 0.04097526, -0.023684602, -0.01563589, -0.010879832, -0.038116, -0.025080463, 0.026971629, 0.015095557, 0.005135979, -0.027647045, 0.012450176, 0.010986773, -0.0044718194, -0.007514008, 0.03980454, -0.02825492, 0.01055901, 0.022435082, 0.018697778, -0.016277535, 0.027827157, -0.029988488, -0.02395477, -0.0031829, -0.02111802, -0.026881574, 0.06038223, 0.028390003, 0.0262737, -0.034738917, 0.03028117, 0.010733493, 0.013001766, 0.05110651, -0.00459846, -0.019384451, 0.020982936, -0.03782332, 0.047369204, -0.004893955, -0.029155476, -0.02818738, 0.024472589, -0.0063995705, 0.0071594142, -0.03701282, 0.023594547, 0.006692251, 0.0013986748, 0.0049136546, -9.014347e-05, -0.025260573, 0.0253056, 0.046738815, 0.030596364, 0.016390106, 0.060427256, -0.00011072256, 0.058491062, -0.01946325, 0.021680867, 0.005341418, 0.003664134, -0.019699646, -0.0126528, 0.02564331, -0.0029549468, -0.009433316, -0.02064523, -0.030191114, -0.049530536, 0.020667743, 0.023842199, 0.011358253, 0.0063376576, 0.028052295, -0.029650781, 0.020588944, 0.020093638, -0.029673295, -0.008195053, -0.003484023, -0.0049868245, -0.029830892, 0.023234325, 0.027489448, 0.03719293, 0.051016454, 0.011279454, -0.017380716, -0.0049164686, -0.032059766, -0.0010440812, -0.037237957, -0.010801034, 0.035774555, 0.038025945, 0.0076547195, -0.027354365, 0.0109642595, 0.009438944, -0.005079694, -0.010902347, -0.008673472, -0.01236012, -0.0035346793, -0.02280656, 0.03183463, 0.008566531, 0.010024305, -0.008251337, 0.023054214, 0.07105381, 0.027084198, -0.014397627, 0.004083455, -0.010553381, -0.028840281, -0.07258475, 0.0012671093, -0.009225062, -0.009326375, 0.03248753, 0.027647045, 0.004553432, -0.0127428565, -0.0046153455, -0.048404843, 0.0044352342, -0.0444424, -0.008583417, -0.049530536, -0.037170418, 0.022570165, 0.018438868, 0.030123573, 0.022851588, -0.047549315, 0.0014943589, -0.030258656, 0.016705299, 0.013339474, 0.023977283, 0.03845371, -0.058175866, -0.03302786, -0.025913477, 0.005423031, 0.013125592, -0.009714739, -0.02123059, 0.0079474, 0.015770974, -0.014960473, 0.01975593, 0.009208177, 0.0054286593, 0.012776627, -0.02173715, -0.015320696, -0.019620847, 0.017628368, -0.009444573, -0.006382685, 0.00373449, -0.025845936, 0.00820631, 0.008695986, -0.0014563666, 0.050566174, 0.002106455, -0.03410853, 0.01798859, 0.035414334, 0.026498837, -0.052862592, 0.02512549, 0.01607491, -0.013226905, -0.0285476, 0.013767238, -0.041515596, 0.027376879, 0.033275515, 0.014206259, 0.060247146, 0.0023301865, -0.0036106636, 0.013879808, -0.0072832406, 0.03156446, -0.015253154, 0.019485764, 0.0017209047, 0.04691893, 0.0067935633, -0.03415356, 0.020149924, -0.019271882, 0.0033827105, -0.028750226, -0.0020417275, 0.034919027, 0.0978003, -0.025328116, -0.017301917, 0.022356283, -0.009551514, -0.027759615, 0.0374631, 0.004944611, -0.005448359, -0.0030956585, 0.033590708, -0.05637476, -0.023166783, -0.0018151816, 0.010784149, -0.0018799091, 0.054663703, 0.056599896, -0.004466191, 0.012438919, -0.011341367, 0.0082344515, 0.0038048457, -0.0018813162, -0.01497173, 0.025035435, -0.0037457468, -0.017527057, 0.02354952, -0.036179807, -0.0051134652, 0.03741807, 0.03410853, -0.01077852, -0.0019685575, 0.028885309, 0.004333922, -0.014183745, 0.0047504287, 0.022266228, -0.03289278, -0.0140036335, -0.007637834, -0.022176173, 0.017346945, -0.028727712, 0.057410397, 0.015028016, -0.022029832, 0.06006703, -0.030236142, 0.020352548, 0.037688237, -0.0074126953, 0.026093587, -0.021939777, -0.0006789342, -0.023234325, -0.025418172, 0.0047251005, -0.046198484, -0.008195053, 0.042033415, -0.05074629, 0.024922866, 0.0019544864, -0.014262543, -0.0437895, -0.03347814, -0.01563589, 0.0016716557, 0.0016561773, -0.0031660146, 0.02593599, 0.042798888, 0.05007087, -0.024877839, -0.005780439, 0.088749714, -0.04962059, -0.028727712, -0.03469389, -0.011420166], [0.008519967, -0.009940936, -0.020712234, 0.044956423, 0.020068996, 0.046687316, -0.016408393, 0.050383005, -0.0028243954, 0.04002104, -0.013543064, 0.03728436, 0.005257001, -0.04577509, -0.0035758133, 0.03197473, -0.007052217, 0.009666099, -0.020162558, -0.024910817, -0.002787848, -0.07634639, -0.08860298, 0.01727384, -0.034524288, -0.0038564985, -0.004663469, 0.023273487, -0.0013793049, 0.03625518, 0.016501954, 0.029565515, 0.01413952, -0.0014765215, 0.01465411, -0.022232613, 0.0046049925, 0.042874675, -0.049961977, -0.00836793, -0.03197473, -0.015145309, -0.006122447, -0.039904088, -0.014934795, 0.00799953, 0.026758661, 0.0063621993, -0.0030670713, -0.05295595, 0.021589374, -0.043272313, 0.008443948, -0.003640137, -0.04112039, 0.012151333, -0.0023653582, -0.052160677, 0.03244254, -0.032138463, -0.041307516, 0.022174137, -0.020934442, -0.03733114, -0.02720308, -0.026501367, 0.007695454, 0.0055055246, 0.028512945, 0.07494297, -0.006280333, 0.01118063, 0.009151509, -0.021121565, 0.017998943, 0.012326761, 0.08841586, 0.019846788, 0.0026270386, 0.0045494405, 0.024279276, -0.034430727, -0.017191973, 0.018513532, -0.010712821, -0.013882225, 0.06647563, -0.06558679, -0.02451318, 0.0048886016, -0.016899591, -0.027366813, 0.04851177, 0.008648614, -0.044933032, 0.06699022, 0.002634348, 0.022220917, -0.03983392, -0.03679316, -0.054733627, -0.02108648, -0.037611824, -0.049213484, 0.03782234, 0.0021636155, 0.086684965, -0.015823632, 0.012689313, -0.0012601599, 0.022115659, -0.026501367, 0.024700303, -0.0072919694, -0.040091213, 0.025799654, -0.024606742, -0.066007815, -0.017168581, -0.0003117507, -0.08172619, 0.00431846, 0.08107126, 0.016104316, -0.019215245, 0.027928183, -0.014314949, 0.028746849, -0.0089468425, -0.0016680306, -0.042640768, 0.017975552, 0.0035465753, 0.037705388, 0.0834103, 0.045283888, 0.055201434, -0.007683759, -0.028723458, -0.0036547561, -0.042383473, -0.0048739826, 0.006894332, 0.02610373, -0.006397285, -0.025214892, 0.01658382, -0.014256473, -0.05328342, -0.026828833, -0.010467221, -0.060113426, 0.012315066, 0.039740354, 0.052581705, -0.015215481, 0.025121331, 0.012455408, 0.04324892, 0.03943628, 0.02023273, -0.08907079, -0.02507455, 0.06259281, 0.024864037, -0.06324775, 0.031085894, 0.024723694, -0.0533302, 0.034056477, -0.0026840528, -0.011929124, 0.03307408, -0.050570127, -0.049540948, -0.012373542, 0.05328342, -0.008286063, -0.033518497, -0.049447387, -0.037869122, 0.034898534, -0.0024077534, -0.017460963, 0.01868896, 0.051505744, 0.0256827, -0.004976316, 0.023320267, -0.045658138, -0.03244254, 0.03475819, 0.013893921, 0.0036021275, -0.02350739, -0.05393835, -0.01788199, -0.07760947, -0.010601716, -0.015870413, -0.016291441, -0.048231084, -0.0036313655, 0.03625518, -0.04855855, -0.015624813, 0.055201434, 0.023273487, 0.017460963, 0.03040757, 0.005590315, -0.001991111, 0.04650019, -0.03950645, -0.024185713, 0.0256827, -0.07971461, 0.034056477, -0.038734566, -0.042453647, 0.056183834, -0.045400843, -0.012806265, -0.019975435, -0.0087831095, 0.042874675, 0.0069761984, -0.009011166, 0.0003239941, 0.007882577, 0.0071340837, -0.0039003557, -0.018501837, 0.0927197, -0.034992095, -0.034968704, -0.04170515, -0.015262261, 0.056230616, 0.036021274, -0.025823044, -0.008215891, -0.05173965, -0.012876436, 0.023577562, 0.026010167, -0.027670888, 0.0026241147, 0.011625048, 0.0030027477, 0.004371088, 0.007028827, -0.0071399314, 0.004616688, -0.0073212073, 0.031062502, -0.020478329, -0.03779895, 0.0026080338, -0.01812759, 0.0025817198, 0.009578384, 0.007905968, 0.036933504, 0.027553936, -0.029425172, 0.028091917, -0.062265348, -0.05347054, 0.002621191, 0.044628955, -0.048277866, -0.023051277, 0.025238283, 0.021928536, 0.0042950693, 0.045821868, 0.029986542, -0.08093092, 0.06773871, 0.005642943, 0.019109989, 0.012326761, 0.054733627, 0.024864037, -0.016794335, -5.3222386e-05, -0.014186301, -0.06755158, -0.0041722693, -0.00042906837, -0.041284125, 0.04170515, 0.030056713, 0.023811467, 0.02659493, 0.0047073257, -0.017765038, -0.029752638, 0.030337399, -0.00419566, -0.0038740414, -0.021834975, -0.065165766, -0.028302431, 0.06633528, 0.004540669, 0.06535289, -0.06413658, -0.024372837, 0.07550433, 0.047248688, -0.03885152, -0.04107361, -0.0007916202, -0.03948306, 0.004166422, 0.0883223, 0.07653352, -0.0097947465, -0.03356528, -0.07049878, -0.121349595, 0.0067481417, 0.025799654, 0.04266416, -0.0008033154, -0.05487397, -0.029401781, 0.006087362, -0.07199577, -0.017262144, -0.011777086, -0.022758897, -0.047599543, -0.11929124, -0.013882225, -0.06755158, -0.033635452, -0.033378154, -0.009116423, -0.009338632, 0.016642297, -0.00022056453, 0.04271094, -0.040956657, 0.00043674334, -0.00083109154, 0.06554001, -0.036535867, 0.0014699429, 0.06773871, 0.02213905, 0.016501954, 0.00022641214, 0.0030056713, 0.014396815, -0.032746613, -0.031249626, -0.009695337, 0.090567775, -0.049961977, -0.012595751, 0.033986308, -0.007905968, -0.03824337, -0.057493698, 0.015835326, 0.0028127003, 0.005312553, -0.05117828, 0.02399859, -0.010514002, -0.00027721326, -0.018478446, -0.0048798304, 0.032770004, -0.001168791, -0.040699363, 0.00853751, -0.03136658, -0.029214658, 0.013051865, 0.0042424407, -0.029799419, 0.039366107, 0.019998824, 0.029144486, 0.00326589, 0.027811231, 0.0146775, 0.029261438, -0.009432195, -0.026010167, 0.055622462, 0.016478565, -0.041401077, -0.011970057, 0.03630196, 0.010016955, -0.017928772, 0.012537275, -0.019320503, -0.037565045, 0.03199812, 0.008765567, -0.01900473, 0.03560025, 0.042944845, 0.023600953, 0.020653758, 0.01440851, 0.009806441, 0.0024764626, 0.022220917, 0.014771062, -0.016197879, 0.03520261, -0.0028404763, 0.012934913, 0.027366813, -0.052020334, -0.0069469605, 0.035413124, -0.044395052, 0.0034266992, -0.063200966, 0.035576858, 0.02130869, -0.025472188, -0.03412665, -0.015671594, 0.051552527, -0.031740826, -0.022209221, -0.039366107, -0.0340097, -0.039459668, -0.019145073, 0.016911287, 0.010180688, -0.046242896, -0.00034793277, 0.042009227, -0.03623179, -0.00014966226, -0.06329453, 0.0015013738, 0.013718492, -0.0068124654, -0.028700069, -0.014712586, -0.11152561, -0.042874675, 0.032653052, 0.01781182, 0.03515583, 0.002185544, 0.04579848, -0.069001794, -0.021402251, -0.012385237, 0.053564105, -0.002979357, 0.050991155, 0.022934325, -0.014513767, 0.03772878, 0.023940114, 0.025846435, 0.02455996, 0.0020934443, 0.014361729, -0.0050494107, -0.025378626, 0.0034880992, -0.0139874825, 0.052394584, 0.04170515, 0.0032337282, -0.0092977, -0.051037937, 0.03800946, 0.06497864, 0.024443008, -0.019168464, 0.029425172, -0.005458744, 0.055154655, 0.037120625, -0.00088664383, -0.012946608, 0.0034705563, -0.00060193834, 0.0055376864, -0.0059879525, -0.041260734, -0.01027425, 0.035015486, -0.007397226, 0.039880697, 0.02191684, 0.0261739, 0.04425471, 0.022372954, 0.019846788, -0.021799888, -0.056698423, 0.038617615, -0.00041152554, -0.0425706, -0.032582883, -0.024489788, 0.018256238, -0.0016914211, -0.029261438, 0.004719021, 0.0244664, -0.01790538, 0.0042015077, -0.0011702529, -0.010280098, -0.032395758, -0.0060756663, -0.0032395758, 0.0085901385, 0.011718609, -0.010531545, -0.029378392, -0.018934561, 0.009204137, -0.012876436, 0.0053096297, 0.021226823, 0.007011284, 0.014045958, 0.0100988215, 0.0030758427, -0.020408157, 0.013203902, 0.025846435, 0.027881403, -0.016349917, 0.025799654, -0.009666099, 0.0288638, 0.024817256, 0.006303723, -0.044675738, 0.06366877, -0.020361377, 0.0315537, -0.015133614, 0.02451318, 0.03295713, 0.0073913787, -0.033307984, -0.027858013, -0.014443596, -0.04841821, 0.0030816903, -0.01159581, 0.06525932, 0.045728307, 0.018197762, -0.056745205, 0.034921926, -0.0043915547, -0.02350739, -0.02453657, -0.0061633806, 0.04490964, 0.031249626, -0.0049032206, -0.047810055, 0.04214957, 0.007403074, -0.034313772, -0.011689371, -0.030103495, -0.023086363, -0.025121331, 0.00027977157, -0.022770591, 0.0078007113, 0.004163498, -0.055154655, -0.07176187, -0.033214424, 0.0063271136, -0.0025364007, 0.027998354, 0.015753461, -0.04172854, 0.019145073, 0.006637037, 0.004327231, 0.022232613, 0.0086720055, 0.03728436, -0.01051985, -0.01279457, -0.013800358, 0.0060347333, -0.021741413, -0.026501367, 0.031062502, -0.04694461, 0.009707032, 0.027507156, -0.03307408, -0.03772878, 0.0071340837, -0.014069349, -0.0024530722, 0.012689313, -0.016922982, 0.04799718, 0.010414593, 0.010157298, 0.070264876, -0.01078884, 0.086544625, -0.026010167, 0.014665805, -0.013624931, -0.022010403, 0.026711881, -0.0065376274, 0.00017899167, -0.027296642, -0.020115778, -0.017753342, -0.014817843, 0.021928536, 0.02135547, -0.020665452, 0.028700069, -0.0023638962, 0.026618319, 0.019460846, 0.022326173, -0.0004221243, 0.023530781, -0.0340097, -0.02554236, 0.028653286, 0.0068826363, 0.0138237495, -0.036559254, -0.039459668, 0.01658382, 0.030711645, 0.07208933, 0.021788193, 0.027974965, -0.012350151, -0.0077773207, -0.022314478, 0.024887426, -0.026899004, -0.009759661, -0.007537569, 0.023402134, 0.0076311305, -0.011104611, 0.0105081545, -0.04479269, -0.011285886, 0.0035728896, 0.057259794, -0.02157768, -0.01631483, -0.027366813, -0.01306356, -0.02879363, 0.0017367401, 0.030758427, -0.061002266, -0.022466516, -0.040418677, -0.019905264, -0.018022332, 0.02272381, -0.011256648, -0.023706209, -0.029378392, 0.0066136466, -0.012163028, 0.013484588, 0.027320033, -0.054312598, -0.013005083, 0.042640768, 0.012467104, 0.021168347, 0.016162792, -0.0026314242, 0.013215598, -0.022162441, -0.008338692, -0.04584526, -0.015414299, -0.021390555, 0.05393835, 0.010046193, -0.0068241605, -0.0001689411, -0.03524939, -0.008479034, 0.0063621993, 0.04100344, 0.031834386, 0.054312598, 0.0072276457, 0.0011176243, -0.0415882, -0.0021007538, -0.10254368, 0.005841762, -0.020981224, -0.042757723, -0.02319162, -0.00853751, 0.02500438, -0.05492075, 0.034430727, 0.01438512, 0.023893332, -0.0048301257, 0.017203668, -0.008666158, 0.035857543, -0.0063563515, -0.03248932, -0.0077773207, -0.023331963, -0.0005350563, 0.011063677, -0.019870177, 0.011490553, -0.007432312, -0.02558914, -0.023273487, -0.008549205, 0.0008654462, 0.020384768, -0.022501603, 0.02451318, -0.07316529, -0.00019004731, -0.0052248393, 0.034313772, -0.01051985, 0.020419853, 0.027577328, 0.014993271, -0.009262614, 0.025308454, -0.044020806, -0.021753108, 0.002339044, -0.010502307, -0.01281796, 0.028512945, 0.010537392, -0.016069232, -0.049307045, 0.011478858, 0.029986542, 0.028559726, 0.07686098, 0.012092857, -0.038032852, -0.014244777, -0.021729717, -0.010671888, -0.020373072, -0.022910934, -0.014420206, 0.012560666, 0.015613118, -0.027156299, -0.012665923, 0.04002104, 0.025729483, -0.012607446, 0.0027951575, -0.004988011, -0.015402604, 0.035296172, 0.055014312, 0.006894332, 0.010859011, 0.087760925, -0.020431548, 0.021180043, -0.011718609, 0.016080927, 0.0052043726, 0.008625224, -0.05478041, -0.0025130103, 0.0474592, -0.030524522, -0.022197526, -0.020291205, -0.0025963387, -0.05435938, 0.0041167173, 0.018186066, 0.024255885, 0.019378979, -0.013472892, -0.029565515, 0.025565749, 0.044137757, 0.011034439, 0.02050172, 0.01783521, 0.01157242, -0.048792455, 0.0012338456, 0.008502425, 0.0069878935, 0.026314244, -0.015741765, -0.008174959, 0.01227998, -0.010157298, 0.011320972, 0.005616629, -0.026197292, 0.034407336, -0.01387053, 0.027366813, -0.04692122, 0.058803562, -0.0058037527, -0.0011307815, -0.004958773, 0.0034851753, -0.017940467, -0.00032326317, -0.07466228, -0.0003757089, 0.0063738944, -0.008262672, 0.0042044315, 0.03347172, 0.057306573, 0.037752166, 0.04437166, 0.0043213833, -0.043412656, 0.011706915, -0.04046546, -0.022162441, -0.021530898, -0.010964268, -0.00890591, 0.032676443, 0.021636156, -0.037986074, 0.010619259, -0.024980988, -0.008759719, -0.043015018, -0.014022568, -0.03569381, -0.02182328, 0.012665923, 0.02135547, 0.041915666, 0.01604584, -0.011753695, -0.025214892, -0.006274485, 0.032348976, 0.00084278674, 0.019262027, 0.01081223, -0.038734566, -0.02409215, 0.0004897373, 0.00022513297, -0.023519086, 0.011665981, -0.013426112, -0.030009933, -0.011051983, -0.03515583, 0.01815098, -0.0068066176, 0.015355823, 0.030126885, 0.0031372425, -0.027928183, -0.0064966944, 0.005485058, 0.017168581, 0.0004897373, 0.0085082725, -0.026033558, -0.0066721225, -0.00094731274, -0.040792923, -0.00500263, -0.011870648, 0.022478212, -0.014560548, 0.041892275, 0.039740354, -0.04584526, 0.009946784, 0.003909127, -0.023273487, -0.042547207, -0.008309454, -0.016630601, -0.022489907, 0.008169111, 0.059598837, 0.026431195, -0.013320855, 0.0074849403, -0.013391026, 0.01546108, -0.011747848, 0.016911287, 0.03997426, 0.011309277, 0.016080927, 0.026407804, -0.013730188, -0.00026168054, 0.015367518, -0.002784924, -0.015507861, -0.00115271, 0.07199577, 0.05178643, -0.017566219, -0.03312086, 0.04119056, -0.034266993, -0.02827904, 0.067458026, 0.0033828423, -0.021051394, 0.0042570597, 0.051131498, -0.015753461, 0.0026884386, 0.02050172, 0.024068762, 0.012338457, 0.049260262, 0.0021168347, 0.0048710587, 0.018735742, -0.05384479, -0.010332726, -0.0033652994, 0.0256827, -0.029588904, 0.03740131, -0.033962917, 0.01754283, 0.003850651, -0.032676443, -0.006397285, 0.009233376, -0.004485117, 0.03305069, 0.017753342, 0.0016621831, -0.0011585577, -0.0008398629, 0.040933266, 0.02077071, -0.03312086, -0.011291734, -0.0064031323, -0.0031664807, -0.0024530722, 0.025823044, 0.030758427, 0.0066721225, -0.017659782, 0.053236637, -0.044348273, 0.0048652114, 0.029892981, 0.014396815, 0.010742059, -0.0105900215, 0.012747789, 0.008794805, -0.03843049, -0.009543299, -0.039670184, -0.013975787, 0.05435938, -0.050429784, 0.011098763, -0.014069349, 0.0010766911, -0.039553232, 0.029776027, -0.04490964, 0.009098881, 0.015297347, -0.004976316, 0.017297229, 0.029612295, 0.02776445, -0.020642063, -0.008461491, 0.06895501, 0.01626805, -0.0076486734, 0.01599906, 0.004026079], [0.050021157, 0.018876132, -0.031180484, 0.016003933, 0.022020184, -0.0011797582, -0.05030483, 0.01200295, 0.004243288, 0.06042253, -0.017705977, 0.023036681, -0.0057709897, 0.016370345, 0.030353103, 0.051959593, -0.03446637, -0.0066367863, -0.0055552796, -0.069500096, -0.01290716, -0.04935925, -0.059146, 0.002582614, -0.015909376, -0.006506769, -0.051108573, -0.0063885716, -0.0069559193, 0.021653771, 0.041558217, 0.012611667, 0.03134596, -0.01758778, 0.047704484, -0.02900565, 0.0109096235, 0.034820966, -0.0020034465, -0.008208812, -0.05427626, 0.01431371, 0.018249685, 0.0019842396, 0.011813834, -0.019597135, -0.0013297212, -0.0003311375, -0.028792895, -0.007783301, 0.032551575, -0.023190336, -0.015802998, -0.0136636235, -0.052432384, 0.02028268, 0.02491602, -0.12453282, 0.06231369, -0.046238836, -0.036546648, 0.03725583, 0.030376742, -0.013533606, -0.014999255, -0.035908382, 0.018722475, 0.0059689707, 0.062408246, 0.06080076, 0.041818254, 0.034348175, 0.0116069885, -0.022871204, 0.032906167, -0.0050027063, 0.07635555, 0.029809393, -0.03787046, -0.01336813, 0.03924155, -0.040305328, -0.014573744, -0.008421567, 0.045884244, -0.03087317, 0.01940802, -0.10420286, -0.019301642, 0.039572503, 0.015271109, 0.0010822453, -0.020211762, -0.016524002, -0.055505518, 0.060233414, 0.032787967, 0.016405804, -0.0267599, 0.014443727, -0.011713366, -0.042172845, -0.10202803, -0.05125041, -0.011819744, 0.022516612, 0.033473514, 0.009030284, 0.0042314683, 0.0508249, 0.036121137, -0.013994576, -0.022280216, 0.028391024, 0.013202654, 0.045647852, -0.056167424, -0.014160053, -0.030802252, 0.0056823418, -0.105432115, -0.08855352, 0.073518805, 0.043638494, 0.008811619, 0.024041358, -0.028958373, 0.01384092, -0.00090938155, -0.03924155, -0.025979796, -0.009639001, 0.0032001957, 0.0045062774, 0.052952453, 0.0096094515, 0.029549358, -0.0070800264, -0.024868742, 0.026547145, -0.080988884, 0.032882527, -0.009461705, 0.022989402, -0.018237865, 0.0070327474, -0.019029787, -0.053188846, -0.028958373, -0.03283525, -0.0050913547, -0.050966736, -0.023686767, 0.0019591225, 0.045553293, -0.038177773, 0.059618786, 0.01936074, 0.011400143, 0.009763109, 0.003093818, -0.07730112, 0.030825892, -0.011293765, -0.03092045, -0.05942967, 0.02680718, 0.03089681, -0.003418861, 0.018178767, 0.05177048, -0.045104142, 0.028391024, -0.0665688, -0.047349893, 0.07611915, 0.03735039, 0.021890165, -0.008427477, -0.055127285, -0.05025755, 0.045458734, 0.05673477, -0.05427626, 0.033378955, 0.06699431, 0.043543935, 0.0051770476, 0.021961084, -0.052810617, 0.004701303, -0.004293522, -0.026854457, -0.031416878, -0.04829547, -0.016784037, -0.0069677387, -0.055080004, 0.0012839197, 0.019455299, -0.017906912, -0.037728623, 0.004887464, -0.02393498, -0.050966736, 0.023946801, 0.010052692, 0.0100940615, 0.043023866, 0.02307214, 0.028296467, -0.025176054, 0.009727649, -0.0036316162, -0.032267902, 0.0023432642, -0.0627392, -0.0026505776, 0.034939162, -0.043591216, 0.098151155, -0.022776647, 0.015495684, -0.022445694, -0.00089682307, 0.04704258, 0.028721977, 0.025057856, 0.035270113, 0.022292037, -0.0064299405, -0.015259289, -0.0018926364, 0.008344739, -0.07403888, -0.018202405, -0.013344491, 0.005171138, 0.04560057, 0.01755232, 0.0060251146, 0.04335482, -0.03782318, -0.018828852, 0.010188619, 0.02306032, -0.0015483864, -0.012694404, -0.0017020431, -0.044111285, 0.045931526, 0.0054961806, 0.039879814, 0.041345462, 0.004751537, 0.061273552, -0.01336813, -0.019538036, -0.02862742, 0.007919229, -0.04987932, 0.02489238, -0.038957875, 0.05678205, -0.0023122374, -0.017717795, 0.03820141, -0.046735268, -0.057018444, -0.057538513, 0.013202654, -0.012138877, 0.0026254605, 0.018568818, 0.046404313, 0.005404578, 0.05309429, 0.03089681, -0.032267902, 0.080563374, 0.008108344, 0.056923885, -0.021618312, 0.011861113, 0.027209051, 0.026405308, 0.000545555, -0.061368108, -0.052716058, 0.0012041364, -0.008362468, 0.0078010308, 0.017008612, 0.015779357, 0.018226044, -0.006140357, 0.0058182687, 0.016689477, -0.025152415, -0.012647126, 0.02815463, -0.0138291, -0.035341036, -0.042220123, 0.014124594, 0.04065992, 0.017375024, 0.10845797, -0.0010896326, -0.049217414, 0.04257472, 0.016181229, -0.01847426, -0.036144778, 0.013864559, -0.04422948, 0.02397044, 0.045293257, 0.04654615, -0.049737483, 0.0054223076, -0.017481402, -0.055032726, 0.019999007, 0.055080004, -9.575839e-05, -0.015649341, 0.0016429444, -0.0056557474, -0.035151917, -0.021500114, -0.0010194529, -0.011772465, -0.0025087406, -0.033946306, -0.09422699, -0.031180484, -0.039501585, 0.034017224, 0.032196984, -0.007871949, -0.005307065, -0.012085688, -0.030045789, 0.0062171854, -0.027067212, 0.030093068, -0.009166211, 0.0368776, 0.0020182212, 0.0012654513, 0.09559809, -0.004237378, 0.051723197, -0.03087317, -0.0036611657, -0.045033224, -0.05664021, -0.024821462, 0.026121633, 0.06297559, -0.021417376, 0.043023866, 0.040447164, 0.02163013, -0.051392246, -0.0012624963, 0.013758182, 0.03170055, 0.022800285, -0.030944088, 0.015365667, -0.007464168, -0.05073034, -0.050919455, -0.025246972, 0.029785754, -0.010555031, -0.008563404, 0.016524002, 0.019159805, -0.004748582, 0.018486079, 0.04432404, 0.022292037, -0.012599847, -0.011494701, 0.008474756, -0.011618808, -0.016736757, 0.011813834, -0.0036375262, -0.029691197, -0.06595417, 0.029738475, 0.011376503, -0.042007368, -0.024230475, -0.026925376, 0.043567576, 0.022386594, 0.00035293016, 0.011612899, -0.02858014, 0.019266183, -0.03642845, 0.019774431, -0.013569065, 0.016193049, 0.026476227, -0.0026372804, 0.025601566, 0.0019384379, 0.000716572, 0.015862096, 0.070162, -0.016524002, 0.037610423, 0.016854955, 0.007990147, 0.008504306, -0.046427954, -0.015141091, 0.02671262, -0.07961779, 0.0230485, -0.060517088, 0.049453806, -0.014538284, -0.03978526, -0.039099712, -0.022835745, -0.0032563393, 0.009650821, -0.030282183, -0.050446667, -0.00925486, -0.020341778, 0.020400878, 0.058815043, 0.015472044, -0.020826388, -0.00013361851, -0.0156020615, -0.032622494, -0.021417376, -0.08169807, -0.015613882, 0.035837464, -0.024726903, -0.04839003, -0.032196984, -0.05853137, -0.01706771, 0.016831314, -0.024065, 0.024655985, 0.013332671, 0.026901737, -0.05673477, -0.018486079, 0.00092194, 0.056025587, -0.02862742, 0.03874512, -0.024171377, 0.0136045255, 0.030542217, 0.030376742, 0.017339565, 0.014691941, 0.0012514153, -0.00875843, 0.049170133, 0.0089120865, -0.029242046, 0.017008612, 0.047728125, 0.044678632, -0.051108573, -0.06741982, 0.021535574, 0.036664844, 0.036641207, 0.019951727, -0.020436337, 0.01294262, 0.016784037, 0.025057856, 0.02588524, -0.035671987, 0.025223333, 0.010212258, -0.017895091, 0.013687263, -0.006223095, -0.029171128, -0.051534083, -0.014573744, 0.0019074111, 0.031511437, 0.021523753, -0.0048490497, 0.04706622, -0.0083211, 0.0026402352, -0.032386098, -0.020034466, 0.020389058, -0.03555379, 0.0010741192, -0.025459727, -0.01888795, 0.019171624, -0.028509222, 0.0063767517, 0.007097756, 0.0072159534, 0.03413542, -0.0018571772, 0.0030376741, -0.018048748, -0.049028296, -0.023556748, 0.0156257, 0.0014117206, 0.030211264, 0.007795121, 0.012528928, -0.04422948, -0.02536517, -0.020920947, -0.0034277258, 0.006873181, 0.012038409, 0.013001719, 0.022764826, -0.007428709, -0.019715333, 0.010324546, 0.013261752, 0.04484411, -0.028036432, -0.0041310005, -0.053661637, 0.02349765, 0.04758629, 0.005218417, 0.0061048977, 0.043662135, -0.056545652, 0.017150449, -0.001591233, 0.060658924, -0.027634561, -0.0014582609, -0.010945083, -0.056167424, 0.0076296446, -0.032433376, -0.025861599, 0.0052479664, 0.05994974, 0.03839053, -0.013332671, -0.024561428, 0.017162267, 0.012162516, -0.010111791, 0.004252153, -0.009260769, 0.024585066, 0.019218903, -0.010247718, 0.013580886, 0.07384976, 0.021511933, -0.036688484, -0.026358029, -0.04257472, -0.032977086, -0.04560057, 0.022126561, -0.04004529, 0.0313696, 0.008108344, 0.0054518566, -0.02813099, -0.03737403, -0.0049642925, -0.01850972, 0.0312514, 0.00921349, -0.012162516, -0.02900565, 0.011624718, 0.025436088, 0.013651804, -0.0018231955, 0.02768184, -0.043520298, -0.021275539, -0.0012307308, 0.0037291292, -0.026050715, 0.0074227992, 0.03881604, -0.03647573, 0.0024555519, 0.052810617, -0.05021027, -0.008805709, 0.023994079, -0.0080965245, 0.022516612, -0.022764826, 0.0029859627, 0.055978306, -0.00058544666, 0.03240974, 0.05498545, 0.007470078, 0.04578969, -0.030849531, 0.003593202, 0.0009418858, -0.0069913785, -0.0029815303, 0.0068081724, -0.014963795, -0.012174336, -0.016654018, -0.007056387, -0.018769752, -0.002582614, 0.014431907, 0.0032947536, 0.03318984, -0.01937256, 0.015590242, 0.009006645, 0.026192551, -0.011293765, 0.040518083, -0.024277754, -0.042527437, 0.036192056, -0.017280465, 0.018722475, -0.0030524489, -0.030707695, 0.040872674, -0.003652301, 0.058815043, -0.008380198, 0.002718541, -0.0032858888, 0.009048014, -0.036333892, 0.0101531595, 0.0043585305, -0.0526215, -0.013273573, -0.008185172, 0.014680122, -0.022753006, -0.0051327236, -0.0019354831, -0.0055139107, -2.3085438e-08, 0.06316471, -0.034442734, -0.0113646835, -0.029573, -0.02900565, -0.0054104878, 0.0014892877, 0.0396907, -0.038414165, -0.03560107, -0.03553015, -0.045104142, -0.018190585, 3.2042586e-05, -0.005256831, 0.00876434, -0.004656979, 0.030353103, -0.036641207, -0.016476722, 0.014869237, -0.049926598, 0.0023757685, 0.07427527, -0.042598356, 0.004444224, -0.013923658, -0.040849034, -0.006778623, 0.01898251, -0.019112526, -0.01938438, -0.028840175, -0.020980045, 0.040707197, 0.018391522, 0.020578174, -0.0016296472, -0.02900565, -0.0103954645, 0.012682585, 0.012883521, 0.020389058, 0.055552796, 0.00322679, -0.04101451, -0.0029135668, 0.003182466, -0.0627392, 0.039336108, -0.018273324, -0.055080004, -0.007996056, -0.023627669, 0.03647573, -0.060658924, 0.019620774, -0.017410483, 0.044891387, -0.002143806, 0.012127057, -0.02583796, 0.024821462, 0.0016237373, -0.0124225505, 0.0045742407, 0.0065717776, -0.03224426, 0.013805461, 0.03092045, -0.014230971, -0.02348583, -0.025908878, -0.03274069, 0.015141091, 0.018616097, -0.010111791, 0.002946071, 0.02302486, 0.009355327, -0.0031499618, -0.021949263, 0.0120325, -0.010832795, 0.037988655, 0.056356538, 0.011731096, 0.032527935, 0.009497164, -0.0018379701, 0.00038192546, 0.0032386098, -0.01340359, -0.003974389, 0.022847565, 0.021322818, -0.014940156, -0.07517357, -0.016937694, 0.027350888, 0.049170133, 0.067939885, -0.017635057, -0.00089460687, 0.021334637, -0.019348921, -0.0027170635, -0.028651059, -0.03782318, -0.007747842, 0.008847078, 0.02213838, -0.012729864, -0.013521787, 0.05446538, 0.0026062536, -0.012741684, -0.018285144, 0.0069795586, -0.012564387, 0.03701944, 0.043591216, 0.02628711, -0.0093671465, 0.02402954, 0.0031647363, 0.04562421, 0.00089682307, 0.00068074337, -0.012623486, 0.03266977, -0.03212606, 0.0015587287, -0.009591722, -0.025648843, -0.04987932, -0.0045476463, -0.05664021, -0.015129272, 0.042527437, 0.00968628, 0.029691197, -0.0067727133, 0.07550453, -0.033000726, 0.00414873, 0.038414165, -0.010891894, 0.0103954645, 0.02216202, -0.010933263, -0.037137635, 0.040730838, -0.018746113, 0.055694632, 0.0600443, 0.0039271098, -0.007304602, -0.03560107, -0.029833034, -0.036192056, -0.025648843, -0.03657029, 0.022504792, 0.026854457, 0.022091102, 0.012552568, 0.040092573, 0.016937694, 0.0075350865, -0.0025589745, 0.018155126, 0.016500363, 0.011748825, -0.035648346, -0.021062784, -0.0033922663, -0.03420634, -0.011323314, 0.032055143, 0.07087118, 0.009349417, -0.022173839, 0.017150449, -0.021358278, -0.038532365, -0.0094262455, 0.0025013532, 0.0045919702, 0.03404086, 0.014479186, 0.0048283655, 0.033851746, -0.02905293, 0.010383645, -0.027421806, 0.009769018, -0.032622494, -0.02723269, -0.013687263, -0.02124008, -0.019514397, 0.020649092, 0.03352079, -0.0014449636, -0.07526813, 0.0009825162, -0.036262974, 0.013072637, -0.020199941, 0.0074227992, 0.057538513, -0.0091839405, -0.057302117, 0.02076729, -0.035128277, -0.0017389798, -0.0069559193, -0.029856673, 0.013060817, -0.031204123, -0.020637272, -0.002027086, 0.01566116, 0.032480657, 0.043567576, 0.0013777389, -0.030825892, 0.012517109, 0.024348672, 0.008137894, -0.0027791173, 0.004671754, -0.034939162, 0.038792398, -0.026547145, -0.030069428, -0.0036227515, -0.012292533, -0.01105737, -0.02815463, 0.005221372, 0.046853464, -0.025696123, 0.030731333, -0.028296467, -0.016051212, 0.011341044, 0.025719762, -0.0056498377, 0.024372311, 0.012038409, 0.020696372, 0.017304106, -0.030211264, 0.0025338575, 0.008835259, 0.0045771957, 0.01846244, -0.025459727, -0.014254611, 0.003732084, 0.03274069, 0.017906912, -0.015826637, -0.028651059, -0.010732328, 0.020164482, 0.0021452834, 0.018273324, 0.009804477, 0.060091577, 0.016405804, -0.050966736, 0.04153458, -0.018663375, -0.009733559, 0.009621272, 0.016854955, -0.016370345, -0.018273324, 0.041676417, -0.031724192, 0.005661657, -0.014526465, 0.0026165957, 0.008923907, 0.038957875, 0.005948286, 0.0221502, 0.013911839, -0.011293765, -0.004284657, -0.0037143545, 0.02163013, 0.01475104, 0.024632346, -0.028887454, 0.013486328, -0.0033538523, -0.030684054, 0.012091598, 0.003551833, 0.01937256, -0.017954191, 0.054087147, 0.031109566, -0.016665839, 0.006518589, 0.005230237, 0.017729616, -0.05106129, -0.014384628, 0.04153458, -0.01150652, -0.066710636, -0.0035311484, 0.042338323, 0.023757685, -0.026499866, 0.0240059, -0.03562471, -0.017788714, 0.051912315, 0.00043289812, -0.0021349413, 0.044111285, 0.018746113, -0.0022885979, -0.010371825, -0.009319868, -0.010088151, -0.02997487, -0.023734046, -0.026381668, 0.048508227, -0.010862345, 0.020625453, -0.029643917, 0.0040630368, 0.017327745, 0.008468847, -0.02631075, -0.012859881, -0.013048997, 0.021322818, 0.026192551, 0.01201477, 0.02118098, 0.12566751, -0.008498396, -0.030944088, 0.0018734294, -0.016902234], [0.0062641534, 0.00071490003, -0.015618248, -0.0053961608, 0.0052332366, 0.02973085, 0.023932999, 0.06836073, 0.016011514, 0.04328165, -0.036787152, 0.01584297, 0.025977977, -0.06777646, 0.008415876, 0.036225345, -0.0339107, 0.022258813, 0.026944285, 0.006707981, -0.03811302, -0.04125914, -0.061933655, 0.020393612, 0.027820706, -0.00974736, -0.005491668, 0.0128991, 0.0027388113, 0.019640788, 0.019202579, 0.032629777, 0.04294456, -0.04157375, 0.014337326, 0.011561997, 0.0049073882, -0.027708344, -0.015663192, 0.008679925, -0.051551454, 0.027056647, -0.026854398, -0.06287749, -0.0087192515, -0.008966447, -0.025977977, -0.014753064, 0.022798147, -0.050607618, 0.042292867, -0.021640824, 0.0139440615, -0.026427424, -0.020404847, -0.030787049, 0.047056995, -0.06148421, 0.031708412, -0.027573511, 0.009134989, -0.005859652, 0.02914657, -0.009904666, -0.004045014, -0.037056822, -0.011910318, 0.033506196, 0.008545091, 0.034674756, -0.028921848, 0.036832098, -0.021045309, -0.05923698, -0.024876835, -0.076315925, 0.062607825, 0.0014178616, -0.023123994, -0.004154566, 0.0043511987, -0.04458504, 0.013371018, -0.011663123, 0.04719183, -0.07483275, -0.0006523989, -0.10103545, -0.04143892, 0.026629673, 0.0011945431, -0.011685595, 0.025506059, 0.03233764, -0.053349238, 0.005494477, 0.012988988, 0.002786565, -0.029056681, -0.026045395, -0.014696883, -0.03665232, -0.045798544, -0.06148421, 0.037393905, 0.052630123, 0.07011357, -0.02914657, -0.0032641015, -0.045933377, 0.008977683, -0.01251707, 0.026472367, 0.034090478, -0.039259106, 0.009752978, 0.008657453, -0.08674307, -0.040697332, 0.01779806, -0.069034904, -0.023123994, 0.05258518, 0.052944735, -0.042967036, 0.002022507, 0.028292624, 0.048270497, 0.028674653, -0.021528462, -0.030360075, 0.046697438, 0.0054551507, 0.007696762, 0.06098982, -0.0155283585, 0.053079568, -0.0071798996, -0.038202908, 0.025461115, -0.028022956, 0.003382081, -0.00013676501, 0.022281284, -0.024090305, -0.01896662, -0.026966758, -0.037573684, -0.03636018, 0.05024806, -0.051191896, -0.007825978, -0.038742244, 0.035528705, -0.008146209, -0.04361873, 0.013876645, 0.030315131, -0.004747273, 0.034742173, 0.026629673, -0.049618836, -0.0016573321, -0.012505834, 0.0062079723, -0.07752943, 0.027124064, 0.003008479, -0.043034453, 0.028674653, -0.009938374, -0.0142362015, -0.009865339, -0.024899308, -0.023708275, 0.010005791, -0.0010189783, 0.012696849, -0.021517226, -0.08256323, -0.06265277, 0.05024806, 0.028787015, -0.03370845, 0.029955573, 0.03110166, -0.014674411, -0.03615793, 0.0028258916, -0.032876972, -0.023034107, 0.007595637, -0.01534858, -0.012550779, 0.0016938496, -0.060540374, 0.00081602536, -0.021854311, -0.00043118722, 0.00916308, -0.03355114, -0.017910423, 0.00315174, 0.022741966, -0.05892237, 0.04418054, 0.03939394, -0.046562605, 0.039663605, 0.0074327127, 0.04818061, 0.010101298, 0.0061349375, -0.022281284, -0.0056854915, 0.013112586, -0.08633857, 0.005289417, -0.011528289, -0.052270565, 0.028921848, 5.266945e-05, -0.011382219, -0.017067712, 0.008348459, 0.0054776226, 0.0035393871, 0.04125914, 0.032674722, 0.00691585, 0.0010955245, -0.059866205, -0.03627029, 0.059192035, -0.060001038, -0.028831959, 0.011663123, -0.02737126, 0.040787224, 0.040607445, 0.028382514, 0.060001038, -0.012438417, -0.039955746, 0.048630055, 0.014157549, 0.004286591, 0.042382754, -0.013427199, 0.019157635, 0.005542231, -0.022640841, 0.0438884, 0.009179934, 0.02284309, 0.06961918, 0.009320386, -0.021640824, -0.013651921, 0.009882193, -0.0027205527, 0.0151575655, -0.028719598, 0.06773151, -0.022876801, -0.0017149172, 0.02386558, -0.0582482, -0.020741932, -0.024315028, 0.037393905, -0.04602327, 0.021202615, 0.034854535, 0.0166295, -0.01251707, -0.009674325, 0.011129406, -0.009061955, 0.07532714, -0.009179934, -0.012112569, 0.026449896, 0.0017430077, 0.0653045, -0.0155283585, 0.01735985, -0.07973172, -0.06800117, 0.018786842, 0.0012570443, -0.0009979105, 0.052854847, 0.03624782, 0.05757403, 0.017326143, -0.0022416117, 0.027640928, -0.047865998, 0.019078981, -0.018932912, 0.012404709, -0.037416376, -0.03498937, -0.01744974, 0.026854398, -0.019764386, 0.06337188, 0.0042809728, 0.023798164, 0.055371743, -0.034674756, -0.009893429, -0.021281267, 0.05914709, -0.042877145, 0.04240523, 0.029303877, 0.050293006, -0.04651766, 0.018753134, -0.05182112, -0.1073277, 0.0066012377, 0.0059270686, 0.029416239, -0.02914657, -0.024854362, -0.020550918, 0.011775484, -0.08458573, -0.019337414, -0.022483535, 0.03110166, -0.05689986, -0.09914778, -0.0012668759, -0.024899308, 0.015741846, 0.0002756368, -0.031551108, -0.015505886, -0.0075282203, -0.046877217, 0.000109025765, 0.0028062284, 0.005022559, 0.01934865, 0.029753324, -0.024764473, 0.0013665967, 0.027146537, 0.057618976, 0.037888296, -0.02462964, -0.017528392, -0.053214405, -0.0016531185, 0.0109496275, 0.012505834, 0.08395651, -0.075461976, -0.0013146295, 0.017494684, -0.03107919, -0.036877044, -0.030225242, -0.012674376, -0.025371226, -0.003986024, -0.054472852, 0.043349065, -0.0011397669, -0.017438503, -0.028045429, -0.009887812, 0.02737126, 0.012876627, -0.06854051, -0.006640564, -0.04289962, -0.020528445, 0.0126519045, 0.027258899, 0.010370966, 0.032292694, -0.06188871, -0.010045118, 0.04262995, 0.023146467, -0.0019803713, 0.0062922435, -0.03388823, -0.01818009, 0.009792305, 0.07672043, 0.004918624, 0.010376584, 0.03469723, 0.053933516, -0.022562187, -0.009685561, -0.041011944, -0.004443897, 0.023685804, -0.021663295, 0.009567581, 0.018078964, 0.02004529, 0.03766357, -0.006634946, 0.03656243, -0.021550935, -0.026652146, 0.030135352, 0.041416448, -0.04152881, 0.016798044, -0.040899582, 0.008865322, 0.0011531098, -0.020292485, -0.056540303, 0.008320369, -0.015213747, 0.014730592, 0.00072613615, 0.017876714, 0.0113990735, -0.006258535, -0.038562465, -0.014674411, 0.008505765, -0.0068034884, 0.0021292502, -0.041506335, -0.021202615, -0.028854432, -0.010078826, 0.013460907, 0.021584643, -0.04310187, 0.045214266, 0.016393542, -0.014584522, 0.022753203, -0.048270497, 0.010365347, 0.045056958, -0.0050759306, -0.043865927, -0.046427768, -0.06427077, 0.017135128, 0.10175457, -0.05141662, -0.025191447, 0.014303618, -0.006084375, -0.065843835, 0.0072585526, 0.012449654, 0.05842798, 0.0046236753, 0.010747377, -0.03732649, -0.044225484, 0.034674756, 0.0034129804, 0.024494806, -0.011831665, -0.004278164, -0.06013587, -0.021764422, 0.0014817672, -0.0038820896, -0.039146744, -0.007134955, 0.028404986, -0.034068003, -0.034832064, -0.048944667, 0.021629587, 0.04966378, 0.008202389, 0.001584297, 0.021191377, -0.013775519, 0.07519231, 0.040989473, 0.0154497055, 0.039124273, 0.03303428, -0.0070169754, 0.011022663, -0.031146606, -0.04683227, -0.06031565, 0.0053793066, -0.026607202, -0.01925876, 0.046787325, -0.008590036, 0.04301198, 0.01891044, -0.0051573925, -0.016966585, 0.0022430164, 0.0068989955, -0.036315236, -0.02921399, -0.0018048065, -0.021393629, 0.025528532, -0.009039482, -0.0152924, 0.00089397613, 0.00061377464, 0.00097333145, 0.038247854, -0.00014685998, -0.02384311, -0.01073614, -0.029101627, 0.0016798043, 0.006033812, -0.0019859895, 0.020202596, 0.007842832, -0.028809488, -0.02121385, -0.018843023, -0.02903421, 0.02384311, -0.012505834, -0.027348788, 0.010236132, 0.025101557, -0.01759581, 0.0064326953, -0.028876904, 0.041393973, -0.018067729, -0.008994537, -0.04840533, 0.017966602, 0.03662985, -0.011281094, -0.011899082, 0.021573408, -0.06287749, 0.04568618, 0.004502887, 0.031978082, 0.0002556224, -0.03218033, 0.0017837387, -0.063506715, 0.025506059, -0.003837145, 0.035618592, -0.0014340136, 0.07348441, 0.03606804, -0.035326455, -0.036000624, 0.027034175, 0.014449688, -0.0010414505, 0.028876904, 0.037775934, 0.06337188, 0.008887794, -0.024697056, -0.051012117, 0.02795554, -0.008039465, -0.04800083, -0.032629777, 0.006320334, 0.032112915, 0.005741672, 0.014078896, -0.06121454, -0.0043259175, -0.01797784, -0.042000726, -0.032899447, -0.042360283, 0.041011944, 0.003679839, 0.033685975, 0.019562136, 0.027843177, 0.008067555, 0.0045590675, 0.030742105, 0.017494684, 0.018494701, 0.01158447, -0.03685457, 0.028045429, -0.03128144, 0.016663209, -0.05856281, -0.013326073, 0.026764508, -0.013989006, -0.015460942, 0.008387785, -0.029303877, 0.015359816, 0.05757403, -0.0055113314, 0.020753168, -0.012753029, 0.014371035, 0.037978183, -0.02961849, 0.018247506, 0.002185431, 0.005651783, 0.039641134, -0.035438813, 0.007988902, 0.021079017, -0.03128144, 0.03968608, -0.014708119, -0.051012117, 0.00869678, -0.01651714, -0.013415962, -0.009185552, 0.016202528, 0.042202976, 7.075263e-05, 0.04595585, -0.0010210851, 0.05896731, 0.0063652787, 0.021112725, 0.016854225, 0.08701274, -0.030854465, -0.020966655, 0.04067486, 0.010893446, 0.01730367, 0.0087192515, -0.014798009, 0.02982074, 0.01251707, 0.04674238, 0.012640668, 0.002459312, -0.03361856, 0.011011426, -0.042742312, 0.037978183, -0.006033812, -0.024067832, -0.0054579596, 0.026090339, 0.02865218, -0.0019494719, -0.01584297, -0.007567547, -0.009292295, 0.024112776, 0.08031599, -0.039663605, -0.014663175, -0.005323126, -0.064899996, 0.013213712, -0.011179969, 0.03303428, -0.03802313, -0.021955436, -0.02503414, -0.030112881, -0.03253989, -0.0032809556, -0.0053849244, 0.00014905454, -0.049214333, -0.012393473, -4.516405e-05, 0.011432782, 0.0005604029, -0.02223634, -0.00796643, 0.049978394, -0.020674516, 0.010842884, -0.010281077, 0.034944426, 0.011921555, -0.010752995, -0.006483258, 0.010106917, -0.026202701, -0.015663192, 0.022225104, 0.053439125, -0.02267455, -0.015168802, -0.06979896, -0.027303843, 0.032899447, -0.026382478, -0.00019452584, 0.03649501, 0.008309132, 0.0054579596, -0.020000346, 0.015483414, -0.06337188, 0.018112672, -0.00015195136, -0.023281302, -0.0027261707, -0.02375322, 0.015269927, -0.01969697, 0.07137202, -0.0071798996, 0.0380456, -0.02541617, 0.031146606, -0.046652492, 0.0073372056, 0.008674308, 0.011753012, -0.0019213816, 0.011230531, 0.01797784, 0.026225172, 0.012112569, 0.012303583, -0.02366333, -0.039259106, -0.011854137, -0.012505834, -0.025865616, 0.033191584, -0.007516984, 0.007393386, -0.045012016, -0.0073540597, -0.031124134, 0.060675208, 0.015090149, -0.017371086, 0.014146312, 0.004067486, -0.028674653, 0.0347197, -0.003682648, 0.013899117, 0.0015224982, -0.022517243, -0.02728137, 0.06836073, -0.012708085, 0.010517036, -0.040427666, 0.022944218, 0.007297879, 0.022157686, 0.020011581, 0.026360007, -0.007960812, -0.008932739, -0.043910872, 0.020764405, 0.0014859807, -0.03469723, 0.002226162, 0.032629777, 0.019359885, -0.0046433387, -0.01491037, 0.007376532, 0.017696936, 0.005042222, -0.024022887, -0.0042304103, 0.004578731, 0.0320455, 0.039731026, 0.02051721, 0.028337568, 0.06804612, -0.011157496, 0.044697404, -0.017292434, 0.0449446, 0.018741896, -0.010337258, -0.028674653, -0.022798147, 0.018932912, 0.018696953, -0.009224879, -0.028674653, -0.011320421, -0.040832166, 0.02775329, -0.0024874026, 0.035416342, -0.0062866258, 0.0062641534, -0.03696693, 0.03186572, 0.012944044, -0.019123927, 0.0012198244, 0.011174351, 0.030921884, -0.052135732, 0.017809296, -0.0071798996, 0.049484003, 0.031775832, 0.0032023026, -0.016584557, -0.029888157, -0.017764352, -0.024472333, -0.051776174, -0.036989402, 0.026876869, 0.033461254, 0.022528479, -0.033348892, 0.021629587, 0.009427129, 0.016696919, -0.011842902, 0.001846942, -0.012348528, 0.007899013, -0.056989748, 0.017843004, 0.012876627, 0.032787085, -0.004797836, 0.06332694, 0.04809072, 0.024562223, 0.019887984, -0.014483397, -0.0156070115, 0.010410292, -0.04809072, 0.023438608, 0.015730608, 0.001110272, 0.020247541, 0.015247455, 0.0038174817, -0.011944027, 0.009331622, -0.043753564, -0.025977977, -0.061798822, -0.0035843316, -0.038629882, -0.040607445, 0.018618299, 0.021831838, 0.031933136, 0.0047865994, -0.056180745, -0.007438331, -0.046562605, 0.014033951, -0.017584573, 0.0029410622, 0.009005774, -0.047101937, -0.024202665, 0.00077318755, -0.011887846, -0.0091293715, -0.0051461565, -0.052045844, -0.029685907, -0.02903421, -0.012135041, 0.015517122, -0.023775691, 0.03997822, -0.02097789, -0.03528151, -0.017764352, 0.0019466629, 0.0049944683, 0.0012556397, 0.0124945985, -0.015775554, -0.037191655, 0.0006924277, 0.013056406, -0.028854432, 0.007376532, -0.0049073882, -0.016685681, -0.032899447, 0.03539387, 0.044719875, -0.0309893, 0.048944667, -0.013236184, -0.02453975, -0.04377604, 0.010747377, -0.055776246, -0.0046967105, 0.0085226195, 0.01216875, 0.0528099, 0.017225018, 0.018348632, 0.028315097, 0.017831769, 0.03107919, -0.029843213, 0.008668689, 0.008320369, 0.037101764, -0.00046559793, -0.025168974, -0.021146433, 0.027034175, -0.013090114, -0.03462981, 0.011460872, 0.024944251, 0.06521461, -0.022786912, 0.0072754067, 0.04467493, -0.034135424, -0.013876645, 0.051866066, 0.009809159, -0.04496707, 0.03761863, 0.045933377, 0.002710721, -0.011606942, -0.0046377205, -0.002459312, 0.0044129975, 0.06337188, 0.01187661, 0.022809383, 0.04768622, -0.0043596257, 0.017573338, 0.00662371, 0.035506234, 0.005115257, 0.03627029, -0.01753963, -0.011685595, -0.011163115, -0.05249529, 0.0102642225, 0.001164346, -0.002039361, -0.009719269, 0.00315174, -0.014719356, -0.013764283, -0.00992152, 0.0005709368, -0.01677557, -0.04584349, -0.00472761, -0.00018855663, -0.02214645, -0.013326073, -0.027978012, 0.031438746, 0.01735985, 0.010696814, -0.0121238055, -0.0073315874, 0.047641274, 0.026697092, -0.0028399366, -0.00074299035, 0.023213884, 0.0064102234, 0.019191343, -0.03696693, 0.013663158, -0.010955245, -0.07483275, 0.043438952, -0.024135249, 0.028472403, -0.006016958, 0.0027851604, -0.03649501, 0.03402306, -0.010286694, -0.0069720307, 0.0071742814, 0.0014185639, 0.010955245, 0.047551382, 0.06746184, -0.0119664995, 0.053034626, 0.09182181, 0.020146417, -0.022854328, 0.032000553, -0.021314975], [-0.0014392347, 0.0071069645, -0.015926737, 0.035136357, 0.007767109, 0.01170419, -4.781032e-05, 0.050718155, 0.0027089727, 0.014463713, -0.005816411, 0.02182641, 0.0039727637, -0.021255475, 0.026810206, 0.02481193, -0.01611705, 0.035445616, -0.013726255, -0.0025811067, -0.03794346, -0.019970868, -0.052526116, 0.02309912, 0.015665058, -0.0033512758, -0.004516937, -0.0010749656, -0.0063219275, -0.0057955957, 0.032162733, 0.045746252, 0.04248716, -0.049576283, -0.023896053, -0.041797277, 0.026929151, -0.0058788573, -0.015462852, -0.00044753062, -0.06075711, 0.027642822, -0.027999656, -0.091207035, 0.017342184, -0.04655508, -0.021184107, -0.03575487, 0.023943631, -0.055713844, 0.016354939, -0.0024577014, 0.007606534, -0.018567316, -0.022718498, -0.017544389, 0.05086089, -0.03408964, 0.052526116, 0.0015626401, 0.031401485, 0.021695571, 0.021421997, 0.0005698209, 0.022290295, 0.002365519, -0.033542495, 0.02108895, -0.0022317057, -0.0006861641, -0.00757085, 0.010645579, -0.011930184, -0.034731943, 0.0037200053, -0.10124599, 0.0198995, 0.030045511, -0.02111274, -0.009836753, 0.0064170836, -0.04198759, -0.0042493106, 0.0058283056, 0.012441648, -0.05699845, 0.04962386, -0.10077021, -0.020720221, 0.0343989, 0.040393725, -0.027833134, 0.020696433, 0.002222785, -0.028213758, 0.029165318, 0.016366834, 0.015653163, -0.022849336, -0.018472161, -0.01008059, -0.036087915, -0.04488985, -0.08854267, 0.0365637, 0.04241579, 0.012810378, -0.06399242, -0.00601267, 0.020446647, 0.023943631, -0.02623927, 0.010574211, 0.010514739, -0.026929151, 0.05247854, -0.025882434, -0.07555387, -0.01979245, 0.014202035, -0.086021036, 0.01170419, 0.08568799, 0.017925013, -0.020922428, 0.056855716, 0.019483194, 0.059472505, 0.022587659, -0.009485865, 0.005997802, 0.025335288, 0.0037289262, -0.015106017, 0.045579728, 0.011311671, 0.051193934, 0.005730176, -0.024431305, 0.015772108, -0.047673162, 0.013678676, -0.03765799, 0.013286158, -0.036896743, -0.012108603, -0.01583158, -0.035017412, -0.022207035, 0.031044649, -0.032353044, -0.030449923, -0.015367696, 0.022742286, 0.011882607, -0.024407517, 0.0146421315, 0.019554561, -0.019269092, 0.03356628, 0.033518706, -0.08811446, 0.024324255, 0.008439149, 0.005664756, -0.09387141, 0.004326625, -0.02338459, -0.027880711, 0.011603086, 0.01527254, -0.05557111, -0.00967023, 0.008005, -0.022730391, 0.020803483, 0.017056715, 0.03416101, -0.009384762, -0.06832202, -0.07084365, 0.054238927, 0.045674887, -0.02277797, 0.0053673936, 0.013095846, -0.012774695, -0.01905499, 0.0006508522, -0.041226342, -0.025478022, 0.023479745, 0.0005980704, -0.03458921, -0.026762629, -0.0700824, 0.011067834, -0.015010861, -0.023729531, -0.005563653, -0.047292538, -0.04555594, -0.027761767, 0.015296329, -0.046578865, 0.043081883, 0.036397174, -0.03125875, 0.019031202, -0.029474575, 0.034898467, 0.02528771, -0.002023552, -0.026881574, -0.00071218325, 0.030069299, -0.04705465, 0.033019137, 0.0070891227, -0.0941093, 0.043319773, -0.03054508, 0.032757457, -0.0144518195, 0.02576349, 0.055285644, 0.0096821245, 0.047578007, 0.019090675, -0.003508878, 0.01300069, -0.013976039, -0.029022584, 0.03934701, -0.054952595, -0.046412345, -0.021945355, -0.020767799, 0.06884538, -0.016176522, 0.007499483, 0.038609553, -0.027999656, -0.016771248, 0.01931667, 0.021731254, 0.008575936, 0.060138598, 0.011924238, 0.026857784, 0.010615842, 0.0020532883, 0.0348271, -0.0060691694, 0.00022376531, 0.060138598, -0.008837614, -0.005673677, -0.011418722, 0.043462507, 0.0057837013, -0.0018168851, -0.011014308, 0.07545871, -0.04655508, -5.9937134e-05, 0.029997932, -0.056570247, -0.034898467, -0.019257197, 0.02254008, -0.034470264, 0.013821411, 0.007897949, 0.051574558, -0.03228168, 0.0063992417, 0.01209076, -0.006119721, 0.08054956, -0.0002943889, 0.07060576, 0.009878383, -0.024645407, 0.06156594, 0.024407517, -0.007309171, -0.09472781, -0.023003966, -0.0054149716, 0.007368644, -0.014094984, 0.044461645, 0.03147285, 0.039656267, -0.0052871057, -0.030021721, -0.007386485, -0.0530019, -0.022099983, -0.021683676, 0.018495949, -0.031401485, -0.018698156, -0.003357223, 0.0139641445, -0.0063040857, 0.06323117, -0.0040143942, -0.027119463, 0.03527909, -0.0013269803, 0.015106017, -0.020589381, 0.0445568, 0.001809451, -0.0075351666, 0.04274884, 0.041535597, -0.041131187, 0.020696433, -0.043557663, -0.10286365, 0.011835028, 0.022587659, -0.0002637234, -0.024157733, -0.021850199, -0.023860369, 0.009349078, -0.0731274, 0.021231685, -0.010871574, -0.018626789, -0.06860749, -0.07569661, 0.004302836, -0.030616447, 0.038324084, -0.014380452, -0.0065598176, 0.030711602, -0.0056052837, -0.07189037, -0.018924152, 0.011412774, 0.007666006, 0.017829858, 0.034803312, -0.021065162, 0.001511345, 0.023420272, 0.039037753, 0.04251095, -0.014416136, 0.008784089, -0.03977521, -0.03761041, 0.036801588, -0.016652303, 0.07774246, -0.06461093, -0.01157335, 0.043938287, -0.024907086, -0.04272505, -0.033090502, -0.0322341, -0.02232598, 0.0231467, -0.04869609, 0.094585076, 0.03416101, -0.02459783, -0.026072746, -0.016105155, 0.03604034, 0.006286244, -0.043938287, -0.008790037, -0.06285054, -0.00369919, 0.02219514, 0.02003034, 0.009289606, 0.015486641, -0.050147217, -0.0091528185, 0.019126358, 0.017425444, 0.006095932, 0.0072734877, -0.029736253, -0.011995604, 0.03178211, 0.032757457, -0.018103432, 0.010401742, 0.078551285, 0.041535597, 0.004243363, 6.016945e-06, -0.020125497, -0.005073005, 0.05266885, -3.259372e-05, -0.02299207, -0.0015626401, 0.019554561, 0.042296845, 0.001706861, 0.07327013, -0.026048958, -0.021778831, 0.013214791, 0.034256164, -0.0467216, 0.02204051, -0.02407447, -0.020648854, 0.0022510344, -0.015676953, -0.03530288, 0.0031936737, 0.0018049906, 0.033019137, -0.0068869162, 0.05100362, 0.017663335, -0.06270781, -0.028475435, -0.019376142, 0.015902948, 0.028760904, 0.024122048, -0.044461645, -0.034613, -0.021029478, 0.0049986644, 0.03142527, -0.014713498, -0.014832444, 0.03815756, 0.0052900794, -0.011501983, 0.016485779, -0.06765592, 0.027856922, 0.03385175, -0.01540338, -0.021255475, -0.05414377, -0.026167903, 0.00601267, 0.0858783, -0.029117739, -0.014023617, -0.019423721, -0.009265817, -0.08035925, 0.03316187, 0.028665747, 0.056427516, -0.012429754, 0.0376342, 0.016212204, -0.025335288, 0.05414377, 0.006220824, 0.026596105, -0.0021454706, -0.0024041762, -0.04405723, -0.0046299347, 0.0072734877, -0.001706861, -0.0109013105, -0.044176176, 0.023265645, -0.06870264, -0.013072057, -0.03102086, 0.004469359, 0.06080469, 0.0051919497, 0.027761767, -0.025121186, 0.017294604, 0.031544216, 0.0419638, 0.04836304, 0.06132805, -0.001416189, 0.0047607743, 0.011109464, -0.024157733, -0.042320635, -0.07522082, 0.02042286, -0.023979316, 0.023170488, 0.036349595, -0.0014384913, 0.04167833, 0.019459404, -0.008076366, 0.0019328565, -0.04895777, 0.01920962, -0.07759973, -0.0066311844, 0.030069299, -0.0024636486, 0.024550252, 0.00366648, 0.0050997674, -0.016747458, 0.0068690744, 0.029117739, 0.0047815894, -0.0054149716, -0.022016723, -0.013131529, -0.029902777, -0.035112567, 0.0008236942, 0.008338045, 0.017116187, -0.025715912, -0.04362903, -0.01211455, -0.0046001985, -0.010508792, 0.021921566, 0.021969143, -0.042891573, 0.014332874, 0.04962386, -0.046697814, 0.009093346, -0.040893294, 0.05438166, -0.016378729, -0.0073745907, -0.022873126, -0.0058758836, 0.061946563, 0.024122048, -0.009902173, 0.034613, -0.07331771, 0.013631099, -0.0018451345, 0.037301157, -0.007719531, -0.004977849, -0.010068695, -0.041250132, -0.0050640837, 0.0070772283, 0.025192553, 0.018388899, 0.09196828, 0.062089298, -0.026167903, -0.018900363, 0.045722462, 0.04674539, 0.0050938204, 0.02740493, 0.025478022, 0.044699535, 0.0006460201, -0.01871005, -0.026167903, 0.030354768, 0.0051592398, -0.049290814, -0.02362248, -0.02933184, 0.0196854, 0.015284434, 0.026358215, -0.028189968, -0.00067426957, -0.03768178, -0.039275642, -0.065086715, -0.03406585, 0.029189106, -0.013976039, 0.037848305, -0.0035059042, 0.02742872, 0.0220643, 0.019602139, 0.011597139, 0.004130366, 0.012917428, -0.012905534, -0.016902087, 0.015688848, -0.04886261, -0.0054714708, -0.055666268, -0.009384762, 0.04431891, -0.031901054, -0.010395794, 0.030878125, -0.04919566, 0.008373729, 0.021410102, -0.014237718, 0.046103086, -0.017675228, -0.0042493106, 0.07055818, -0.012227547, 0.023836581, 0.035445616, 0.023527324, 0.05323979, -0.020410964, 0.010508792, 0.049766593, -0.008682986, 0.022635236, -0.032091364, -0.023896053, 0.011121359, -0.025977591, -0.006833391, -0.0059888815, 0.05699845, 0.047197383, -0.0016161654, 0.05485744, -0.005691519, 0.022575764, 0.018674368, 0.0063278745, 0.0089506125, 0.08273815, -0.035136357, -0.010086537, 0.041273918, 0.0070118085, 0.026905362, 0.0102649545, -0.01609326, 0.056665406, 0.021445787, 0.051669713, 0.022111878, -0.013547837, -0.001075709, 0.002118708, -0.01823427, 0.034898467, -0.027500087, -0.02182641, -0.0018243191, 0.018638683, 0.01442803, -0.010181693, -0.0005371111, 0.012822272, -0.01905499, 0.020946218, 0.07288951, -0.053620413, -0.012441648, -0.026786417, -0.03554077, -0.0068452857, -0.030854337, 0.05509533, -0.037229788, -0.035945185, -0.019221514, -0.047340114, -0.022004828, -0.0072734877, 0.013012584, 0.0012377716, -0.040655404, -0.02013739, -0.013072057, 0.0051741083, 0.027048096, -0.007588692, 0.007380538, 0.022337874, -0.03382796, 0.00028862752, -0.022016723, 0.003827056, -0.0033453286, 0.019399932, -0.015891055, 0.0011537666, 0.011115411, 0.0050284006, 0.0036813482, 0.028499225, -0.017853646, -0.032519568, -0.06289812, -0.03551698, 0.013357525, -0.016200311, 0.019602139, 0.027214618, 0.03554077, -0.0006240896, -0.0016622565, 0.018495949, -0.056189623, 0.015807793, -0.009420445, -0.01918583, -0.0056944927, -0.04596035, 0.020351492, -0.007237804, 0.06741803, -0.016378729, 0.019780556, -0.008831668, 0.013857094, -0.027928289, 0.027095674, 0.0016488753, 0.010895363, 0.0027357354, -0.0005274468, 0.019661611, -0.0032650407, 0.01825806, -0.02431236, -0.031187383, -0.03975142, 0.004389071, 0.021326842, -0.023348907, 0.009468023, -0.017330289, -0.009628599, -0.033994485, -0.0062743495, 0.01791312, 0.017223237, -0.0030107957, 0.030164456, 0.026405793, 0.017794173, -0.030426135, 0.035112567, -0.023741424, -0.008605672, -0.0025588046, 0.003714058, -0.013631099, 0.027024306, 0.007529219, 0.012715222, -0.038823653, 0.025834857, 0.026382005, -0.009432339, 0.03392312, 0.0013656374, -0.019328564, -0.016902087, 0.017365972, -0.005403077, 0.0028041287, -0.011103517, 0.007065334, 0.032947768, 0.015819687, 0.009485865, -0.042796414, 0.033304606, 0.019970868, 0.0025067662, -0.024264783, -0.0072021205, -0.009812963, -0.0050462424, 0.017163765, 0.045294262, 0.014178245, 0.059757974, 0.0033691176, 0.031401485, -0.01992329, 0.05671298, 0.0005270751, 0.0022792837, -0.016128944, 0.0048083523, 0.004508016, 0.026358215, -0.02121979, -0.02407447, -0.02351543, -0.01068721, 0.0062743495, 0.0073270127, 0.005248449, 0.022789864, 0.031377696, 0.007350802, 0.019364249, 0.013916567, -0.013309947, 0.009717807, 0.016021892, -0.0062802965, -0.05890157, 0.020541804, -0.0035386141, 0.051241513, 0.019721083, 0.013631099, -0.022028616, -0.02528771, -0.020518014, -0.026025169, -0.026762629, -0.028784694, 0.028808482, 0.021873988, 0.026429582, -0.049814172, 0.038347874, -0.010038959, 0.024193415, -0.005453629, 0.007903896, -0.01786554, -0.004849983, -0.0276904, 0.028047234, -0.0170924, 0.00852241, -0.0039162645, 0.06475367, 0.043391142, 0.0038924755, 0.022218928, -0.026405793, -0.001555206, 0.0029944407, -0.08073988, -0.011942079, 0.0077433204, -0.004332572, 0.060328912, 0.037277367, 0.0018793312, -0.031401485, -0.003110412, -0.029212896, -0.0134764705, -0.0854501, 0.0010816562, -0.04488985, -0.042606104, -0.00032375345, 0.02621548, 0.008076366, 0.003476168, -0.035445616, -0.009123082, -0.06537218, 0.012072919, -0.01897173, -0.012667644, 0.019530771, -0.050194796, -0.010098431, -0.015320118, -0.01611705, -0.022801759, -0.018495949, -0.06494398, -0.026358215, -0.0040025, -0.017556284, 0.013155319, 0.001714295, 0.024764352, 0.00895656, -0.030878125, 0.0057509914, -0.0026866705, 0.018567316, -0.014166351, -0.014166351, -0.01765144, -0.0486723, 0.010163851, -0.019566454, 0.007475694, 0.008159628, -0.035088778, -0.018828996, -0.012881745, 0.046079297, 0.05076573, -0.0298552, 0.05752181, -0.034684367, -0.009598862, -0.035136357, 0.005792622, -0.050908465, -0.00027413107, 0.0071485955, -0.012144286, 0.07260404, 0.037229788, -0.0106574735, 0.032733668, 0.0025885408, 0.047578007, -0.03796725, 0.01109757, 0.027595242, 0.026429582, -0.006220824, -0.02085106, -0.03268609, -0.012417859, -0.010134115, -0.021873988, -0.009277711, 0.050432686, 0.06365937, -0.04298673, 0.0039400537, 0.021814516, -0.035445616, 0.009372867, 0.049100503, 0.023134805, -0.03147285, 0.015010861, 0.023503534, 0.010936994, -0.00095453375, 0.0162241, 0.010419583, -0.019411827, 0.0633739, 0.03102086, 0.045032583, 0.014463713, -0.0018614895, 0.018876573, -0.0070891227, 0.017056715, 0.006232719, 0.039156698, -0.033780385, -0.014142562, 0.022730391, -0.01442803, -0.0023878212, 0.012429754, 0.03385175, 0.0017886356, 0.042106535, -0.008819773, -0.001143359, -0.031163594, -0.017473023, -0.013250475, -0.055190485, -0.006999914, -0.012465438, -0.027214618, -0.018936045, -0.026976729, 0.03290019, 0.022611447, -0.0079336325, 0.039727636, -0.002658421, 0.034731943, 0.008807878, -0.027000519, 0.045603517, 0.005629073, -0.02005413, -0.01103215, -0.023348907, 0.00032877145, -0.023979316, -0.04795863, 0.016997242, -0.044295125, 0.0057004397, 0.002627198, 0.018876573, -0.04103603, 0.003110412, -0.00757085, 0.0026539606, -0.012394071, -0.009575074, 0.012513015, 0.055000175, 0.058520947, 0.016497673, 0.020839166, 0.0811205, -0.0054476815, 0.0036694536, -0.0005898929, -0.0026613947], [0.005778001, 0.010572267, -0.019732583, 0.030090742, -0.016503615, 0.053052295, -0.023181446, 0.04976546, 0.0042329575, 0.028239004, -0.054950327, -0.009819998, 0.011637016, -0.011405549, -0.010335012, 0.04009013, -0.013378807, 0.014258383, -0.018262766, -0.037335668, -0.0032087148, -0.06036666, -0.07087527, 0.024604969, 0.024697555, 0.0015161105, 0.02364438, 0.010022532, -0.011058348, -0.00090995565, 0.01748735, 0.033400726, 0.048330363, 0.017649379, 0.05351523, -0.029674102, 0.013876461, 0.0008332821, -0.0010958528, 0.01720959, -0.030437943, 0.024998464, -0.025669718, -0.015462012, 0.045992542, -0.02784551, -0.01314734, -0.024720702, -0.037636574, -0.028678792, -0.010022532, -0.02381798, -0.015242118, -0.015959667, -0.051293142, 0.03046109, 0.056570597, -0.07235666, 0.055783607, -0.024836436, -0.015068518, 0.029141726, 0.04657121, -0.06444048, -0.002522993, -0.009270263, -0.0049157855, 0.0070018843, 0.03527561, 0.019130768, -0.008969356, 0.013529261, -0.036363505, -0.028308444, 0.017024416, -0.083652265, 0.057218704, 0.007806233, -0.017591512, -0.01961685, 0.006498443, -0.05846863, 0.009756344, -0.010201919, 0.05758905, -0.066616274, 0.03342387, -0.10304922, -0.02784551, 0.0131126195, -0.016260574, 0.012869579, 0.041432638, 0.049024764, -0.03425715, 0.03208136, 0.004652492, 0.011122001, -0.04515926, -0.0040391036, -0.00939757, -0.03400254, -0.025901185, -0.061940636, 0.013679715, 0.042497385, 0.036872733, -0.038400415, -0.00788146, -0.031896185, 0.00038843098, -0.0020817586, -0.00931077, 0.029928716, -0.029720394, 0.02742887, -0.03441918, -0.073976934, -0.050043218, -0.00075009855, -0.035507075, -0.028794525, 0.077217475, 0.04316864, -0.01996405, 0.044997234, 0.03914111, 0.045136113, 0.02884082, -0.0068861507, -0.00917189, 0.025114197, 0.03809951, 0.013135767, 0.058931563, 0.02230187, 0.06041295, 0.006863004, -0.03314611, 0.0289797, -0.023794834, 0.0056015076, 0.0034228219, 0.039002232, -0.048006307, -0.020577438, -0.021132959, -0.01628372, -0.050830208, 0.014165795, -0.031317517, -0.023980007, -0.036803294, 0.00086221553, 0.051246848, -0.03520617, 0.06119994, 0.057774227, -0.009987812, 0.041895572, 0.021514881, -0.06800508, -0.0065620965, 0.024327207, -0.003457542, -0.0727733, 0.0664311, -0.03004445, -0.044210244, 0.018297486, 0.034951556, -0.0016737975, 0.021538027, -0.0029497608, -0.030761998, 0.005080706, 0.06277392, -0.00026474067, -0.012244618, -0.060644418, -0.038145803, 0.06698662, 0.00396677, -0.02409574, 0.032127656, 0.025739158, 0.007840953, -0.0026821268, 0.03513673, -0.079624735, -0.04013642, -0.008986716, -0.01700127, -0.049302526, 0.026549293, -0.02205883, -0.012811712, -0.03717364, -0.0028195605, -0.03228968, 0.012163604, -0.02188523, -0.012834859, 0.005494454, -0.040182713, 0.024790142, 0.03724308, -0.01452457, 0.008517995, 0.010034105, -0.0053729336, 0.029164873, -0.015774492, -0.036108892, -0.0071986313, -0.005260093, -0.06041295, 0.022174563, -0.026618734, -0.07587496, 0.06550523, 0.015635613, 0.028100124, -0.044349127, 0.053283762, 0.042705707, 0.0065620965, 0.0349747, 0.0046264515, 0.037196785, 0.03823839, -0.06633852, -0.011625443, 0.053700402, -0.04990434, -0.04219648, -0.03316926, 0.009588531, 0.063236855, -0.010398666, 0.012765419, 0.031109199, -0.026803907, -0.034905262, 0.05971855, 0.053052295, 0.0010567927, 0.039256845, 0.02082048, 0.03187304, -0.03418771, 0.010699574, 0.05194125, 0.036919028, -0.012603392, 0.054117043, 0.010867387, -0.043284375, -0.03259059, -0.011990003, -0.05407075, 0.022776376, -0.002540353, 0.08920748, 0.008604795, -0.01631844, 0.025021609, -0.056616887, -0.055089206, -0.02188523, 0.020288104, -0.06832913, 0.043701015, 0.012638112, 0.05920932, -0.0088073285, 0.019003462, -0.0059429216, -0.036155183, 0.08416149, 0.023389766, 0.012591818, 0.035738543, 0.035715397, 0.019269649, 0.036294065, 0.017024416, -0.022915257, -0.048237775, -0.018910874, 0.007042391, -0.002844154, 0.068884656, 0.008286527, 0.050830208, -0.026641881, -0.021595893, 0.036525533, -0.049209937, 0.01466345, -0.01799658, -0.012846433, -0.048098896, -0.027938098, -0.04256683, 0.039766073, 0.0087668225, 0.101012304, -0.032173946, 0.015681906, 0.070690095, 0.017846124, -0.023169871, -0.020126076, 0.019165488, -0.03937258, 0.014860197, 0.027313136, 0.07508797, -0.03793748, -0.021769496, -0.039812367, -0.082865275, 0.032521147, 0.010971548, -0.0038163164, -0.03951146, -0.0035298755, -0.035090435, 0.028748233, -0.06990311, -0.019778876, -0.027104815, 0.0042271707, -0.011052561, -0.06897724, -0.009513304, -0.05263565, -0.020426985, 0.021376, -0.05666318, -0.010149839, -0.018841434, -0.05485774, 0.019906184, -0.0067588435, 0.012915873, 0.013020033, 0.023598086, -0.023563366, 0.0014032702, 0.018285913, 0.045552753, 0.02257963, -0.01961685, 0.0124297915, -0.011619656, -0.03307667, -0.009108236, 0.002496953, 0.079671025, -0.061894342, 0.0059168814, 0.047404494, 0.03066941, -0.022602776, -0.030368503, -0.042798296, 0.007869886, 0.048422948, -0.04981175, 0.03731252, -0.019917756, -0.011405549, -0.036016304, -0.006006575, 0.040877115, -0.029743541, -0.04786743, 0.017788257, -0.019246502, -0.032035068, 0.008836262, 0.0101729855, 0.008830476, 0.027938098, -0.057403877, -0.009461224, 0.03228968, -0.009131383, -0.0071754847, 0.030715704, 0.003770023, -0.026271533, 0.017603084, 0.02453553, -0.026989082, 0.013934328, 0.014466703, 0.021688482, -0.017336898, 0.0029164874, -0.03201192, -0.039187405, 0.077124886, -0.0024087061, -0.014235236, 0.0033620617, -0.007187058, 0.029581515, 0.01996405, 0.02223243, -0.02784551, -0.019778876, 0.027521456, 0.031340666, -0.028956553, 0.032891497, -0.0015450439, -0.0017475777, 0.018945595, -0.02791495, -0.047196172, 0.04967287, -0.0235055, 0.01982517, -0.042705707, 0.030137036, -0.0044297045, -0.026109505, -0.050506152, 0.035298757, 0.00046691284, 0.018251192, -0.028215857, -0.07837481, -0.044302832, -0.03448862, 0.032058213, 0.023262458, 0.020913066, -0.04659436, 0.020589013, 0.02522993, -0.016191134, 0.0003113958, -0.04340011, 0.011712243, 0.05633913, -0.02148016, -0.018251192, -0.025044756, -0.0671718, -0.006585243, 0.046895266, -0.049163643, 0.003304195, 0.03407198, 0.013552408, -0.06680145, 0.0068514305, 0.022024108, 0.03599316, 0.0031624213, 0.048654415, -0.019952476, -0.050274685, 0.038192097, -0.0012926, 0.024720702, -0.0052832398, -0.026040066, -0.050783914, -0.018008152, -0.03886335, -0.025044756, 0.0013699968, -0.008309674, 0.04580737, -0.048747003, -0.021121386, -0.021109814, 0.015612466, 0.054024454, -0.005607294, -0.006585243, -0.023366619, 0.020542718, 0.05189496, 0.006203322, 0.029164873, 0.024813289, 0.025553985, -0.021040373, -0.011538642, -0.037844896, -0.06471825, -0.039395727, -0.005954495, 0.02522993, 0.034465473, 0.042589974, 0.0022235322, 0.03178045, 0.0031045545, -0.00038155928, -0.020426985, 0.0048579187, 0.019605275, -0.06758843, -0.014003769, -0.0051501463, -0.019362235, -0.019188635, -0.01679295, -0.016353162, 0.004756652, 0.046316598, 0.021491734, -0.004985226, 0.0020832052, 0.013726008, -0.008234448, -0.015045371, -0.018482659, 0.03351646, 0.02247547, -0.019362235, 0.009623251, -0.039326284, -0.008315461, -0.026757615, -0.0671718, -0.006064442, 0.022984698, -0.0072333515, 0.041918717, 0.012314058, -0.01965157, 0.031919334, -0.028470472, 0.04967287, 0.024373502, -0.03724308, 0.014061635, 0.028239004, 0.031294372, 0.0145824365, -0.027336283, 0.0635609, -0.05786681, 0.016272148, -0.00931077, 0.02735943, 0.007331725, -0.016735082, -0.027799217, -0.004664065, -0.002093332, -0.014050062, 0.010115119, -0.0059602815, 0.048839588, 0.055089206, -0.02374854, -0.02209355, 0.057357583, 0.033886805, -0.010277146, 0.022371309, -0.0005529897, 0.049533993, 0.013517687, -0.008494848, -0.027521456, 0.07499539, -0.0018039979, -0.05569102, -0.018158605, -0.0051761866, 0.010838454, 0.004218491, -0.0038249963, -0.021156106, -0.009872078, -0.012695978, -0.04219648, -0.0027038269, -0.029650955, 0.013598701, -0.019906184, 0.010572267, -0.019061329, 0.012788566, 0.008130287, 0.051293142, 0.012985312, 0.028424177, 0.015299985, 0.036294065, -0.018285913, 0.00020723553, -0.00520512, 0.0014531803, -0.06365349, -0.013506114, 0.04870071, -0.027868656, -0.011012054, 0.029581515, -0.025901185, -0.016885536, 0.04367787, 0.019396955, 0.03425715, -0.021757921, -0.021538027, 0.04573793, 0.00037504928, 0.048376653, 0.046617504, -0.015948093, 0.03504414, -0.023135152, -0.0020962253, 0.010948401, -0.018887728, 0.0076152724, -0.0113939755, -0.0208552, -0.017452631, -0.020762613, -0.017834552, -0.010751653, 0.039951246, 0.0441871, -0.0025924332, 0.045969397, -0.024350354, 0.03624777, 0.005734601, 0.014999078, 0.024651263, 0.07328253, -0.03300723, -0.033747926, 0.03682644, -0.00022766973, 0.0153694255, 0.013066326, -0.01074008, 0.047960013, -0.0074358853, 0.045182407, 0.040946558, 0.024859583, -0.0081245005, 0.0034980488, -0.039002232, 0.002891894, -0.0060355086, -0.0074532456, 0.0073722317, 0.029998155, -0.00800298, -0.033261843, -0.014235236, -0.024211474, -0.0019978518, 0.031502694, 0.070597515, -0.044140805, -0.028493619, -0.029141726, -0.0070828977, -0.026595587, -0.026989082, 0.039951246, -0.014212089, -0.032405414, -0.02643356, -0.036780145, -0.023320325, -0.007910393, -0.01448985, -0.008251808, -0.036780145, -0.013760728, 0.0035009421, 0.006550523, 0.0074358853, -0.023250885, -0.02381798, 0.024373502, -0.0063248426, -0.0153694255, 0.011781683, -0.007927753, 0.03478953, -0.016353162, -0.0002889724, -0.01851738, -0.001728771, -0.01593652, 0.045668487, 0.041247465, -0.007713646, 0.0013801234, -0.0494877, -0.028447324, 0.02629468, -0.007736793, 0.013841742, 0.04657121, 0.020091357, 0.010392879, -0.03231283, 0.009131383, -0.07443987, 0.024998464, -0.01979045, 0.006347989, -0.018228047, -0.028424177, 0.018494233, -0.06689403, 0.068236545, -0.023146724, 0.05189496, -0.020507999, 0.0069498043, 0.0058937347, 0.015543026, 0.008112927, 0.023135152, -0.016364735, 0.011289815, 0.009229757, 0.0007754153, 0.014709744, 0.0046322383, -0.038192097, -0.012314058, -0.035020996, 0.043631576, -0.018991888, 0.020762613, -0.005685414, 0.020183943, 0.014119502, -0.0071812714, 0.009108236, 0.050830208, 0.014756037, -0.00396677, 0.038955938, 0.0017041776, -0.008859409, 0.032613736, -0.015276838, -0.02013765, 0.0072738584, -0.0040535703, -0.030437943, 0.03724308, -0.0035356623, -0.006064442, -0.026641881, 0.0023725394, 0.009235543, -0.011671736, 0.053376347, -0.0022191922, -0.015184252, -0.029650955, -0.014269955, -0.015392572, -0.008818902, -0.033817366, -0.007823593, -0.0056593744, 0.0019356449, 0.011602296, -0.0053468933, 0.04515926, 0.04316864, -3.0380077e-05, -0.011399762, 0.020484852, -0.0028991273, 0.023274032, 0.036155183, 0.031849895, 0.006828284, 0.053607814, -0.029928716, 0.044325978, -0.04340011, 0.03837727, 0.0102366395, -0.010063038, -0.054996617, -0.014223662, 0.012661259, 0.012302484, -0.0182049, -0.0022929725, -0.031896185, -0.05999631, 0.04777484, 0.010190345, 0.029350048, -0.01717487, 0.0501821, -0.0055667874, -0.013830168, 0.019628422, -0.0388865, -0.007077111, -0.011058348, 0.009831571, -0.04536758, 0.042103894, 0.013992195, 0.032197095, 0.021040373, 0.002246679, -0.016850816, -0.034141418, -0.015392572, -0.019396955, -0.02226715, -0.049858045, 0.025993772, 0.032173946, 0.029442634, -0.021607468, 0.030646265, 0.019130768, 0.014084782, 0.022012535, 0.0046148784, -0.031039758, 0.022498617, -0.060135193, 0.008118714, -0.017325323, 0.0068514305, 0.0018850114, 0.030275917, 0.041108582, 0.019744156, -0.010253999, -0.026803907, -0.021746349, -0.004357371, -0.058329746, 0.00805506, -0.023239313, -0.013644994, 0.029975008, 0.030854585, 0.010282933, -0.03400254, 0.020519571, -0.03673385, 0.0063248426, -0.023528647, -0.011093068, -0.058190867, -0.046548065, 0.015415719, 0.017047564, 0.016086973, 0.032197095, -0.018077591, 0.004962079, -0.03228968, 0.01041024, -0.0023103324, -0.0013482968, 0.027266841, -0.01649204, -0.0011001928, 0.009935732, -0.017012842, -0.009704265, 0.019917756, -0.020970933, 0.0049476125, -0.011446055, 0.01675823, 0.0027154002, 0.022382883, -0.012325631, 0.0040998636, -0.014154222, -0.00957117, -0.002913594, 0.017753538, 0.013506114, -0.016908683, -0.015658759, 0.014061635, 0.012788566, -0.018228047, -0.010948401, -0.0066199633, -0.0019052648, -0.010091972, 0.015612466, 0.043099202, 0.05407075, -0.02877138, 0.0055320673, 0.020218665, -0.038585592, -0.03272947, 0.015716625, -0.03263688, 0.02770663, 0.036919028, 0.00929341, 0.05407075, -0.00948437, 0.012742272, -0.008460128, 0.034048833, -0.008801542, -0.0053874003, 0.00017974878, 0.011185654, 0.051570904, -0.0040506767, 0.017799832, 0.0038452498, 0.0009526324, -0.02742887, -0.036919028, -0.014443557, 0.032706324, 0.06300539, -0.0009562491, 0.0105664795, 0.011538642, -0.05258936, -0.010659067, 0.039696634, 0.0016477575, -0.021329707, 0.004120117, 0.03948831, 0.0027761604, 0.00065534166, -0.020288104, 0.011417122, 0.0073838052, 0.048006307, 0.029720394, 0.029164873, 0.022961551, -0.005537854, 0.00899829, 0.009351277, 0.01851738, -0.000326405, 0.019107621, -0.01717487, 0.0024781462, 0.029882422, -0.05837604, 0.012661259, 0.012186751, 0.0074532456, -0.0038278897, 0.030715704, 0.002255359, -0.010178773, -0.013239927, -0.0046669585, 0.047543373, -0.03965034, 0.007256498, 0.013969049, -0.028262151, 0.0013815701, -0.0007696286, 0.05786681, 0.0014596904, -0.0022061723, 0.04485835, 0.002062952, 0.05263565, 0.018066019, -0.03196563, -0.01614484, -0.0007472052, -0.033979394, -0.01597124, -0.017834552, 0.028239004, -0.046825826, -0.031155491, 0.039974395, -0.03603945, 0.040877115, -0.01335566, 0.002128052, -0.054394804, -0.011110428, 0.016769802, -0.019096049, 0.0019067115, -0.011700669, 0.013598701, 0.037567135, 0.039766073, -0.022625923, 0.005931348, 0.14471333, -0.03238227, 0.013020033, 0.0138996085, -0.0037353027], [-0.012503004, 0.0064848117, -0.017444383, 0.031179741, 0.027781794, 0.01454895, -0.013735358, 0.04333577, 0.0015150171, 0.039004587, -0.018006718, 0.05695148, -0.00035183394, -0.0202441, -0.007836811, 0.013376419, -0.040272836, -0.013376419, -0.03414696, -0.038143136, -0.006933484, -0.054558564, -0.08868159, 0.0024138575, 0.000847243, 0.0050849537, -0.010911712, 0.014010543, 0.023749726, 0.042282887, 0.009260599, -0.002089318, 0.055324297, 0.0001343213, 0.010893766, -0.006185697, 0.019251037, 0.035798073, -0.014213941, -0.012138084, -0.040583912, -0.01959801, -0.031012235, -0.009745165, 0.011420208, -0.021883247, 0.03890887, 0.010756173, -0.014931818, -0.03347694, 0.0047828476, -0.035774145, -0.024862433, -0.017635817, -0.025125654, 0.021440558, 0.02940898, -0.06350808, 0.03086866, -0.0045704762, -0.0350802, -0.0079923505, -0.017193126, -0.031084023, -0.021572169, -0.017922966, -0.0026501582, 0.031107953, 0.018281905, 0.04809768, -0.0036492022, 0.03287871, -0.009691324, 0.0050251307, 0.012359429, -0.016200064, 0.06633173, 0.016977763, -0.0071309, -0.017863143, 0.06503955, -0.022672912, -0.002282247, 0.009625519, 0.018880134, -0.020531248, 0.07288832, -0.093036704, -0.01397465, 0.0046302993, 0.025963176, -0.011127075, 0.044962958, 0.012239783, -0.060780153, 0.042905044, -0.016582932, 0.018616913, -0.018365657, -0.028738962, -0.052739944, -0.03682703, -0.02849967, -0.08561866, 0.062263764, 0.01678633, 0.0653267, -0.020411603, 0.041612867, -0.07422836, 0.038717438, -0.036180943, 0.024180451, 0.0047918214, -0.02854753, 0.023953123, -0.020339815, -0.07059112, -0.027422857, 0.00024097446, -0.08212499, -0.018018683, 0.06346022, -0.001512026, -0.0014694021, 0.031442963, -0.026752839, 0.03448197, 0.020100523, 0.0059015374, -0.05206993, 0.053888544, -0.006389095, 0.022768628, 0.086049385, 0.013543924, 0.07748273, 0.031538676, -0.0372099, -0.0017602914, -0.013747322, -0.008183785, 0.00042324763, 0.044532232, 0.0071847406, -0.05824366, 0.027733937, -0.02183539, -0.040559985, -0.0058207763, 0.0045585115, -0.029361121, 0.011797093, 0.04012926, 0.07260118, -0.03086866, 0.031323314, 0.030820802, -0.02240969, 0.020447496, 0.029528625, -0.07374977, -0.034051243, 0.05403212, 0.022541301, -0.07298404, 0.029815776, 0.0024901319, -0.044771522, 0.050012015, -0.014836101, -0.025891388, 0.025149584, -0.0063173072, -0.06255092, 0.030126855, 0.041373577, 0.015793268, -0.01262265, -0.06848536, -0.019968912, 0.05910511, 0.01917925, -0.0368031, 0.0029447866, 0.018628879, 0.05585074, -0.014429304, 0.04340756, -0.044747595, -0.010552775, 0.0086085275, 0.0053780866, 0.0015464242, -0.018844241, -0.054175697, 0.0040021576, -0.029337192, 0.011880845, -0.011916739, -0.036707383, -0.04003354, -0.022313973, -0.020052664, -0.017217055, 0.012766225, 0.04536975, 0.016678648, 0.025819601, 0.031897616, -0.010157943, -0.02790144, 0.046494424, -0.028595388, -0.018904064, 0.019119427, -0.038454216, 0.036779173, -0.0039722463, -0.03469733, 0.04929414, -0.033070147, 0.008692279, -0.026250327, -0.03175404, 0.008817908, 0.012114154, 0.0074060857, 0.015601834, 0.014118224, 0.02495815, -0.034051243, -0.024371885, 0.07260118, -0.037879914, -0.014680561, -0.035463065, -0.022900239, 0.04190002, 0.043287914, 0.0051866528, -0.0049234317, -0.04570476, 0.007376174, 0.0018948931, 0.03584593, 0.019645868, 0.026346043, -0.003368034, 0.003463751, 0.004929414, 0.01514718, 0.011198862, -0.00676598, -0.014058402, 0.031562608, -0.018904064, -0.020447496, -0.015733445, 0.0109894825, -0.0010805527, 0.029815776, 0.013184986, 0.06791105, -0.008698262, -0.01707348, 0.018700665, -0.024264203, -0.058387235, 0.007998333, 0.042976834, -0.056616474, -0.008070121, 0.04513046, 0.02522137, 0.016810259, 0.06326879, 0.028284308, -0.040847134, 0.04276147, 0.013926791, 0.0048666, 0.0013392871, 0.021919142, 0.021225195, -0.013627676, 0.02995935, -0.021560203, -0.04422115, -0.01082796, -0.0010999951, 0.0057250597, 0.048217326, 0.04268968, 0.05503715, -0.011462084, -0.016822224, -0.0010169907, -0.047044795, 0.04041641, -0.005165715, 0.005306299, -0.016331675, -0.056903623, -0.0194664, 0.052979235, 0.0074300147, 0.07738701, -0.07312762, -0.03560664, 0.06815035, 0.042976834, -0.051782776, -0.04182823, -0.008686298, -0.023833478, 0.020136418, 0.04575262, 0.06436953, -0.024982078, -0.05972727, -0.06264663, -0.11371153, 0.016547037, 0.01780332, 0.050538458, -0.017276878, -0.022002894, -0.024886362, 0.016487215, -0.08260358, -0.002654645, -0.0039722463, -0.011097164, -0.022601124, -0.09179239, 0.0072984044, -0.017564029, -0.011617624, -0.033907667, 0.003034521, -0.0043252017, 0.024503496, -0.022421654, 0.04067963, -0.028284308, 0.018006718, 0.032447986, 0.05340996, -0.029241476, 0.0014611764, 0.07312762, 0.039746393, 0.050059874, -0.0044598035, -0.0051208474, -0.027303211, -0.033979457, -0.036946677, -0.0064967764, 0.07676485, -0.031107953, 0.013484101, 0.035558783, -0.002404884, -0.025652096, -0.041756444, 0.012431216, 0.011803075, -0.012718366, -0.04630299, 0.03146689, -0.034314465, -0.016391499, -0.025891388, -0.014788242, 0.019526223, 0.011623606, -0.050825607, -0.003888494, -0.026752839, -0.016822224, 0.0009878271, -0.0005922476, -0.0014043446, 0.035271633, -0.009996421, 0.004932405, 0.025149584, 0.03242406, 0.0013863976, 0.030677227, -0.013675534, -0.0067420504, 0.060157996, 0.04072749, -0.02969613, 0.0008345306, 0.060062278, 0.035367347, -0.008787996, 0.009828917, -0.027207494, -0.04515439, 0.04099071, 0.005111874, -0.01616417, 0.0145250205, 0.07915778, 0.042282887, 0.010786084, 0.021404665, -0.009033271, 0.024599211, 0.038645647, 0.014118224, -0.020519285, 0.017109374, 0.0151830735, -0.01673847, 0.05728649, -0.047762673, -0.015577906, 0.05494143, -0.038143136, 0.02183539, -0.08159855, 0.011121093, 0.0073821563, -0.020447496, -0.061450172, 0.010845907, 0.059822984, 0.0072026877, -0.00010225992, -0.060157996, -0.022349868, -0.006287396, -0.009775076, 0.022290044, -0.004767892, -0.07695629, -0.0071368823, 0.04632692, -0.064560965, 0.01616417, -0.07628627, -0.0066283867, 0.010678403, -0.007633413, -0.0433597, 8.17425e-05, -0.094663896, -0.0007859245, 0.03385981, 0.011713341, 0.06293378, 0.013831074, 0.03201726, -0.071596146, -0.0072385813, -0.0068317847, 0.030964378, -0.007465909, 0.03055758, 0.005108883, -0.0026307157, 0.008973448, 0.020698752, 0.03857386, -0.031634394, -0.027470715, -0.029456839, 0.02318739, -0.017444383, -0.029935421, -0.03539128, 0.037497047, 0.02672891, -0.008345307, -0.024371885, -0.05637718, 0.031969402, 0.09140952, 0.00793851, -0.014967711, 0.023103638, -0.023689901, 0.064800255, 0.030796872, -0.012491039, -0.0011164465, 0.014812171, 0.015195038, -0.0052375025, 0.00817182, -0.023438646, -0.027207494, 0.04067963, -0.012861942, 0.02912183, 0.051208477, 0.05503715, 0.0510649, 0.009918651, 0.007878687, -0.02761429, -0.07666914, 0.04656621, -0.02134484, -0.046518352, -0.0141541185, -0.036898818, 0.012191924, -0.015673622, -0.026872486, -0.0009250129, 0.02212254, -0.008949518, 0.019789444, -0.008177802, 0.0018589993, -0.034338392, -0.007059112, -0.034888767, -0.014477163, -0.010935642, -0.013292667, 0.0029911492, -0.011988526, -0.0060839974, -0.0067001744, -0.023043813, 0.0058566704, 0.012514968, 0.023869371, 0.03682703, -0.009894722, -0.028332166, 0.0145250205, -0.022170398, 0.030342218, -0.008339324, 0.0033770076, -0.011713341, 0.025412804, 0.034314465, 0.017456347, -0.029169688, 0.057142917, -0.02646569, 0.026968202, -0.0031137865, 0.017061515, 0.036659524, -0.02165592, -0.0641781, -0.02225415, -0.024120627, -0.051878493, 0.019454435, -0.027327139, 0.07465909, 0.056807905, 0.019933019, -0.0744198, 0.0015808224, 0.011378332, -0.01277819, -0.034649473, 0.002176061, 0.042258956, 0.009990439, -0.007089024, -0.046494424, 0.04575262, 0.01259872, -0.046446566, -0.0499163, -0.06183304, -0.03299836, -0.020579107, 0.008219678, -0.01631971, 0.032782998, 0.015518082, -0.045393683, -0.062311623, -0.03596558, 0.0011530881, 0.0062335553, 0.033309437, 0.03620487, -0.011324491, 0.016523108, 0.022648983, -0.014297694, 0.0054319273, 0.024252238, 0.026393902, -0.024192415, -0.006033148, 0.008680315, -0.0049533434, -0.02404884, -0.027997157, 0.032543704, -0.037520975, 0.0017692648, 0.026393902, -0.07485052, -0.012682473, 0.008100032, -0.0024512468, -0.011809058, -0.0041816267, -0.03273514, 0.059440117, 0.01381911, 0.027087849, 0.035798073, -0.024527425, 0.08351289, -0.035128057, 0.023055779, -0.0095118545, -0.017743498, 0.019035675, 0.017432418, 0.010815996, -0.019921055, -0.012694438, -0.010265624, -0.0011231765, 0.0023226275, 0.00757359, -0.0082376255, 0.02435992, -0.031873688, 0.025006007, 0.018700665, 0.04307255, -0.015290755, 0.040871065, -0.031179741, -0.017815284, 0.03503234, 0.014860029, 0.032854784, -0.013759287, -0.03326158, 0.0049623167, 0.017922966, 0.06987324, -0.0068198205, 0.029313263, -0.020507319, 0.004393998, -0.033692304, 0.0070232186, -0.036276657, -0.010068209, -0.018210117, 0.01277819, -0.017300807, -0.028236449, -0.009254616, -0.031107953, 0.018521197, -0.009685341, 0.051495627, -0.017791355, -0.025771743, -0.015865056, -0.028021086, -0.03208905, -0.010062226, 0.014010543, -0.04369471, -0.011551819, -0.008273519, -0.046757646, -0.008692279, 0.011091181, -0.0060181925, -0.009691324, -0.032352272, 0.030078998, -0.0063651656, 0.02522137, 0.038717438, -0.045202248, -0.017336702, 0.036683455, 0.0522135, 0.012275676, 0.02285238, -0.024575282, 0.016307745, -0.020615, -0.0012989066, -0.031706184, -0.0074300147, -0.034912694, 0.045585115, 0.022361832, -0.0056263516, -0.0026815652, -0.03807135, -0.031538676, 0.013017482, 0.035534855, 0.0071787583, 0.044651877, 0.025053866, 0.013890897, -0.026848556, 0.029911492, -0.06963395, 0.0111151105, 0.01975355, -0.039913896, -0.020136418, -0.018461373, 0.014417339, -0.020184275, 0.033740163, 0.0019098488, 0.020902151, -0.018545125, -0.0084410235, -0.011246721, 0.010917695, -0.013627676, -0.02519744, -0.0034966534, -0.0379517, 0.023450611, 0.024814574, -0.011749234, 0.04285719, -0.011288597, -0.03625273, -0.028068945, -0.011330473, -0.037808128, 0.05910511, -0.025508521, 0.027566431, -0.052979235, -0.021045726, -0.033309437, 0.029002184, -0.02001677, 0.006849732, 0.015350578, 0.03886101, -0.016810259, 0.042043593, -0.042354673, 0.003906441, 0.0004367078, -0.0074300147, -0.022493443, 0.03333337, 0.03510413, -0.013137127, -0.02821252, 0.024371885, 0.03857386, 0.026585335, 0.048001964, -0.011444137, -0.02763822, 0.006825803, 0.0008031236, 0.00077470765, 0.0007563869, -0.029337192, -0.018676735, 0.0029133793, -0.013053375, -0.032519776, -0.034649473, 0.03503234, 0.018210117, 0.005943414, 0.0010087651, -0.02165592, -0.050825607, 0.05202207, 0.025699954, 0.010552775, -0.005270405, 0.070256114, -0.028260378, 0.014405375, 0.00033781293, 0.03211298, -0.0028296271, 0.003987202, -0.037616692, -0.00918881, 0.023283105, -0.013807145, -0.024036875, -0.03261549, -0.0062335553, -0.03417089, 0.008417094, 0.011372349, 0.0109894825, 0.01186888, 0.0044986885, -0.034051243, 0.028930396, 0.040751416, 0.014381446, -0.00096165447, 0.0002699512, 0.012287641, -0.050012015, -0.0022957071, -0.008303431, 0.0134960655, 0.025987105, -0.0016660702, -0.013783216, -0.018162258, -0.012114154, -0.012754261, -0.03089259, -0.05116062, 0.0120184375, 0.006149803, 0.056616474, -0.02207468, 0.060205854, 0.003164636, 0.027973227, -0.0055126883, -0.011222792, -0.034649473, 0.020447496, -0.06355594, -0.005324246, -0.010953588, 0.012036385, 0.0039034497, 0.039985683, 0.063603796, 0.0335248, 0.009547749, -0.0065386523, -0.03716204, 0.0065685636, -0.04807375, -0.037616692, -0.018234046, -0.0018859196, -0.0014866012, -0.002201486, 0.016905976, -0.035510924, 0.012682473, -0.013161057, 0.013077305, -0.07753059, -0.016259888, -0.022182362, -0.029672202, 0.0066164224, 0.030437935, 0.03261549, 0.02209861, -0.010361341, -0.00030528416, 0.014608773, 0.02360615, 0.0040769363, 0.02615461, -0.0049024937, -0.037568834, -0.02703999, -0.0060032364, -0.013448208, -0.0005466325, -0.0017303799, 0.019251037, -0.0122637125, -0.01061858, -0.012610685, 0.010451076, -0.016223993, 0.027494645, 0.049868442, -0.007567608, -0.023953123, -0.0033082112, 0.00994258, 0.016044525, 0.009882757, 0.018987816, -0.009326403, 0.008159855, -0.031897616, -0.048480548, -0.011743252, -0.0111151105, -0.014058402, -0.03438625, 0.045274034, 0.04268968, -0.05790865, 0.009936598, -0.019358719, -0.024024911, -0.03862172, -0.0039393436, -0.016307745, 0.0015105304, 0.014010543, 0.049677007, 0.025891388, -0.031586535, 0.009972491, -0.006359183, 0.01975355, 0.0035893791, -0.028786821, 0.0064608823, 0.019251037, 0.026250327, 0.043814354, -0.04718837, -0.008710227, -0.023019886, 0.0024452645, -0.03570236, -0.00845897, 0.04041641, 0.044962958, -0.022840416, -0.010965553, 0.022708805, -0.020291956, -0.048767697, 0.018784417, 0.0018889108, 0.016582932, 0.014740383, 0.040105328, -0.03213691, -0.015661657, 0.040847134, 0.018317798, -0.01067242, 0.010546792, 0.025006007, 0.009607571, 0.009051218, -0.01012205, -0.014596809, 0.0011224288, 0.018006718, -0.025604239, 0.041612867, -0.025795672, 0.034673404, 0.017240984, -0.034314465, 0.0091409525, 0.0053003165, 0.005485768, 0.013304632, 0.009625519, 0.02298399, 0.009051218, -0.03661167, 0.015948808, 0.020447496, -0.043981858, -0.009302475, -0.00564729, 0.01988516, -0.0041906, 0.011773163, 0.040894993, 0.014309658, 0.00061243784, 0.05254851, -0.051017042, 0.0012981588, 0.041421436, 0.0122338, 0.0017288843, -0.021404665, 0.017444383, -0.006149803, -0.027494645, -0.0066582984, -0.036946677, -0.019992841, 0.035510924, -0.038502075, 0.009392208, -0.00012927373, 0.044771522, -0.060110137, 0.027662149, -0.03675524, -0.0054827766, 0.023271142, 0.01928693, 0.014046437, 0.025652096, 0.028045015, -0.016307745, -0.007771006, 0.0898302, -0.0071967053, 0.011725306, -0.0014933313, -0.004729007], [0.013730884, -0.011162517, -0.021769376, 0.047712352, -0.000125505, 0.008748499, -0.031339012, 0.0397109, 0.018250221, 0.053293608, -0.03212928, 0.011495911, 0.0021269287, -0.022596687, 0.0337839, 0.024634095, -0.009896856, 0.029066997, -0.0272642, 0.013236967, 0.015854726, -0.026498629, -0.03763645, -0.011483563, 0.012613397, -0.001620664, -0.027906291, 0.024819313, 0.023720348, -0.0009183763, 0.058430344, 0.020608673, -0.009106589, -0.007748318, 0.023090605, 0.03810567, 0.0068222242, 0.0640116, -0.0308204, -0.0028523689, -0.014051929, -0.033882685, -0.0066061355, -0.041069172, -0.051367335, 0.008192843, -0.010792079, -0.04166187, -0.01642273, -0.06193715, -0.011971305, -0.0049576885, -0.020855632, -0.03148719, -0.0030283267, -0.02270782, 0.05773886, -0.0343766, 0.044378415, 0.005871434, -0.040081337, 0.033685118, 0.03738949, 0.0063128723, -0.009291807, -0.0038710719, 0.008044668, 0.0231153, 0.026918458, 0.075075336, -0.023819132, -0.0015056741, 0.014953327, 0.0031826755, 0.0043619014, -0.0403036, 0.0640116, 0.036895577, 0.025782451, -0.013545665, 0.021769376, -0.008199017, 0.016879601, -0.0072297053, 0.019213358, -0.007427272, 0.04640347, -0.11587285, -0.007877971, -0.0073346626, 0.030869791, 0.011298344, 0.026819676, 0.010415467, -0.06850624, 0.026943155, 0.010822949, -0.006958051, -0.028820038, -0.005945522, -0.0051212986, -0.017052474, -0.041810047, -0.06919773, -0.005633737, 0.04331649, 0.026597412, 0.031017967, -0.01848483, -0.012020697, 0.0048249485, -0.018324308, 0.026004713, 0.030128917, 0.011823131, 0.017867435, -0.017052474, -0.046551645, -0.018793529, -0.006420917, -0.071667306, -0.07117339, 0.026720893, 0.060652968, -0.0044298153, 0.018620659, -0.009588158, 0.049045924, -0.013261663, -0.03395677, -0.0021176678, -0.015718898, -0.015274373, 0.051910643, 0.061690193, -0.00073778804, 0.038723066, -0.05020663, -0.0053126914, 0.02525149, -0.032326847, 0.029215172, -0.01867005, 0.03311711, -0.009668419, -0.012681311, -0.007581621, -0.028820038, -0.046329383, 0.01831196, -0.03331468, -0.041464306, -0.015508983, -0.0022519513, 0.01458289, 0.011724347, 0.015743595, 0.029956046, 0.0064023947, 0.025066271, 0.035932437, -0.086435415, -0.02815325, 0.04025421, 0.031635363, -0.04067404, 0.06623422, -0.03687088, -0.04902123, 0.032079887, -0.02186816, -0.006507352, 0.04926819, -0.0002035477, -0.036525138, -0.03111675, 0.034524776, 0.050404195, -0.023386955, -0.08322496, -0.04084691, 0.0444772, 0.04961393, 0.0042754663, -0.021139633, 0.045020506, 0.040031947, 0.028894125, 0.003707462, -0.046502255, 0.01754639, -0.0012718354, -0.03704375, 0.013076444, -0.03783402, -0.03484582, -0.014780456, -0.0521576, -0.0046582515, 0.025634276, -0.019781362, -0.02205338, 0.060949318, 0.025708362, -0.024634095, 0.00022322718, 0.020188844, 0.017620478, -0.010915559, -0.011582346, 0.013360446, 0.015805334, 0.004303249, -0.04884836, 0.012514614, 0.025412014, -0.085694544, -0.010662426, -0.036475748, -0.022609036, 0.065345176, -0.039735597, 0.020719804, -0.0063344813, -0.012292352, 0.016101684, 0.022139816, 0.027511159, 0.022991821, 0.029783176, -0.00655057, -0.0021006893, -0.032376237, 0.0036796792, -0.058825474, 0.015632464, -0.0069086594, -0.021127285, 0.044995807, 0.01890466, 0.018262569, 0.02027528, -0.05724494, -0.011569998, 0.026943155, 0.057837643, 0.01926275, -0.013953146, -0.01327401, -0.00773597, 0.019546753, 0.014632282, 0.0012062371, 0.037019055, 0.022893038, 0.08608968, 0.041044477, -0.024621746, -0.031388406, 0.0038093324, -0.03768584, 0.05536806, -0.039982554, 0.017608128, 0.007871797, -0.0077544916, 0.027782813, -0.06648119, -0.06771597, 0.023374606, 0.024646442, -0.04588486, 0.030919183, 0.047292523, 0.016286902, -0.0052077337, 0.06499943, 0.043365885, -0.028721254, 0.04467476, -0.006112219, 0.023263475, -0.0126936585, 0.002969674, -0.00044298152, 0.0006150806, -0.036722705, -0.009977117, -0.06159141, -0.010415467, -0.034179036, -0.048996534, 0.047811136, -0.018176133, 0.054429617, 0.04551442, 0.010557469, 0.01547194, -0.009180676, 0.016286902, -0.021917552, -0.055466842, -0.017694565, -0.007100052, -0.003701288, 0.057936426, 0.018447788, 0.053343, 0.025782451, -0.04855201, 0.046255298, -0.049885582, -0.03783402, -0.019163966, -0.007871797, 0.0047416002, 0.01937388, 0.020534586, 0.06554274, -0.035512608, 0.007260575, -0.022497904, -0.11123004, -0.013669144, 0.0462306, -0.006661701, -0.0040470297, -0.070926435, -0.03822915, 0.014298888, -0.07117339, -0.02933865, -0.009322677, 0.014138365, -0.04583547, -0.118540004, -0.0012193568, -0.054627184, 0.016743775, -0.05025602, -0.0012664333, -0.021596506, -0.04995967, -0.04758887, -0.023646262, -0.029684393, 0.016225163, 0.02216451, 0.0064456128, -0.008649716, 0.001518022, 0.019176316, 0.027906291, 0.008606498, 0.010717992, 0.034993995, -0.041513696, -0.013409838, -0.005247865, 0.023794435, 0.06964225, -0.060899924, 0.034747038, 0.089892834, 0.020522239, -0.0065567438, -0.07680404, -0.041340824, 0.019929538, 0.003272198, -0.05102159, 0.03146249, -0.036179397, 0.0019756667, -0.010946428, -0.025387317, 0.044304326, -0.005210821, -0.0260788, 0.02288069, -0.013520969, -0.06218411, -0.002319865, 0.039340463, 0.017929176, -0.009007805, -0.035784263, 0.02573306, 0.0020837109, -0.023448694, 0.014903936, 0.026251672, -0.014533498, -0.0016607948, 0.03504339, 0.039587423, -0.027362984, 0.03788341, 0.022831298, -0.0006293579, -0.018879965, 0.03657453, 0.0042476836, -0.014768109, 0.0031765017, -0.048873056, 0.005297256, -0.008501541, -0.00023711858, 0.045193374, -0.036228787, -0.036179397, -0.031166142, 0.039340463, 0.010545121, 0.031141447, -0.0015326851, 0.026301064, -0.028202642, 0.02679498, 0.0068592676, -0.0055534756, -0.01937388, 0.016966037, -0.05304665, 0.04304484, -0.02038641, 0.029980741, -0.027412375, -0.025226794, 0.043538753, -0.019349186, -0.04309423, -0.023263475, 0.0030808053, -0.03205519, 0.008260757, -0.02186816, -0.014619933, 0.057985816, -0.01161939, -0.023016516, 0.0029557827, 0.016817862, -0.06988921, -0.027461767, -0.084805496, -0.030351179, 0.03450008, -0.017101865, -0.0491941, -0.002026602, -0.062579244, -0.017706912, -0.001254857, 0.012656615, 0.0066431793, 0.00036657878, 0.016706731, -0.07892788, 0.010866167, -0.011520606, 0.08658359, 0.02091737, 0.06969164, -0.008341018, -0.035216257, 0.055763192, 0.010261119, 0.010063552, -0.005760303, -0.009711636, -0.043711625, 0.041143257, 0.038970027, -0.0509722, -0.043711625, 0.012514614, 0.0004163563, -0.02869656, -0.039809685, 0.005676955, 0.015150894, 0.044971112, 0.022275642, -0.0048126006, 0.012434352, 0.0055442145, 0.066135444, -0.010322859, -0.026498629, 0.021053199, -0.020312322, 0.017447606, 0.012082437, -0.062628634, -0.008050842, -0.009884507, -0.0028708908, -0.015101503, 0.0010210184, 0.066728145, 0.029388042, 0.026004713, -0.024708182, 0.012940617, -0.035784263, -0.022448514, 0.038970027, 0.030351179, -0.031092055, -0.015669506, -0.010390772, 0.021608854, -0.00018946335, -0.026054105, 0.008013798, 6.665946e-05, -0.013743231, 0.02276956, -0.014237148, -0.036302876, -0.059714526, -0.02525149, -0.039142895, -0.0060196095, -0.02205338, 0.0057016504, -0.0013420642, -0.038303237, -0.025856538, -0.013792623, 0.0033555464, -0.014163061, 0.020139452, -0.026350455, 0.023658609, -0.011471215, -0.017274735, -0.009446156, -0.058479734, 0.03531504, 0.0036086787, 0.019682579, -0.026004713, 0.05838095, 0.06707388, -0.022115119, -0.0022179945, 0.012496091, -0.009532592, 0.061788976, 0.03632757, 0.014731064, 0.013212271, -0.032079887, -0.049712714, -0.06015905, -0.014484107, -0.006982747, 0.026523326, -0.005917739, 0.07201305, 0.02394261, -0.020423455, -0.057837643, 0.03282076, 0.0069024856, -0.010847645, 0.034870517, -0.022855993, 0.056504067, -0.018633006, -0.009952421, 0.0049823844, 0.05245395, 0.012335569, -0.04077282, 0.009446156, -0.011285996, -0.057343725, 0.014681673, 0.008143451, -0.061443236, -0.01795387, 0.023621565, -0.017459955, -0.045909554, -0.03432721, -0.017805696, -0.00302987, 0.031585973, -0.010977298, -0.014212452, -0.013076444, 0.0032197193, 0.03331468, 0.00056993356, -0.015965857, 0.035117477, -0.0023846915, -0.023090605, 0.015076807, 0.008933717, 0.0073099667, 0.0022967125, 0.0031950234, -0.049860887, -0.0051367334, -0.0070877043, -0.052206993, -0.0015257394, 0.034722343, -0.028968213, 0.03077101, -0.02104085, 0.003722897, 0.051713075, 0.028202642, 0.042773183, 0.036352266, 0.038155064, 0.068950765, -0.04084691, 0.03704375, 0.030005438, -0.0125825275, 0.004769383, -0.0024155611, -0.032228064, -0.00049584603, -0.010452512, 0.011576172, -0.020201191, 0.0061307405, -0.019472664, 0.041489, 0.024029046, 0.018719442, -0.021139633, -0.0011329213, 0.023547478, 0.025881235, 0.11686069, -0.025239142, -0.03311711, 0.029857263, -0.009118937, 0.048823662, -0.038500804, -0.012854181, 0.033932075, 0.007161792, 0.05003376, 0.014854544, -0.019398578, 0.0111439945, 0.012940617, -0.042353354, 0.02483166, -0.036525138, -0.042575616, 0.043020144, -0.009088066, 0.0111439945, 0.0018876878, -0.031363707, -0.03775993, -0.005927, 0.002648628, 0.07334662, -0.045069896, -0.039142895, -0.023263475, -0.005596693, -0.038797155, -0.009798072, 0.020127105, 0.013051748, -0.023139996, -0.036846183, -0.052947868, -0.015175589, 0.017978568, 0.023152344, -0.0069642253, -0.06154202, 0.02269547, -0.03395677, -0.0106686, 0.026004713, -0.0669751, -0.009964769, 0.04452659, 0.023695653, -0.023535129, 0.009563462, -0.06569092, 0.03170945, 0.009841289, -0.034006163, 0.0071432698, -0.040155426, -0.032030497, 0.03064753, 0.019065185, -0.018707095, 0.007130922, -0.047020867, -0.030548746, 0.029635001, -0.006371525, 0.013323402, 0.07635952, 0.0065011783, 0.025757754, -0.028005075, -0.017879784, -0.042402748, 0.033759203, 0.008408931, 0.028597776, 0.010841471, -0.022893038, 0.018954052, -0.0349693, 0.027930988, 0.014940979, 0.02423896, -0.01076121, 0.059912093, -0.027214808, 0.0033987642, -0.009069545, 0.0037938973, 0.010989646, -0.020830935, 0.0142865395, 0.01090321, 0.016039943, 0.03687088, -0.0096622445, -0.033512246, -0.053293608, -0.0075260554, -0.014916283, 0.041439608, -0.032573804, -0.00951407, -0.014978023, 0.023843827, -0.02756055, -0.0207445, -0.028227339, -0.024683487, 0.044007976, -0.0065937876, 0.015718898, 0.0009276373, -0.028573079, 0.005494823, 0.029215172, 0.0010387686, -0.013483925, 0.022115119, -0.003861811, -0.023868524, -0.030548746, 0.02091737, 0.028350817, 0.020682761, 0.042303964, 0.0047045564, -0.04131613, -0.01902814, -0.017768653, 0.021510072, 0.0031857626, -0.008587976, 0.0022488644, -0.019781362, -0.011539129, -0.0025652798, -0.030203005, 0.062529854, -0.006803702, -0.039562725, -0.018682398, 0.0325985, -0.021942249, 0.0037969844, 0.036475748, 0.008161973, 0.007847101, 0.03538913, 0.0067234407, -0.0056121284, -0.026103497, 0.03148719, -0.025807146, 0.021065546, -0.053639352, 0.00024309961, 0.04766296, -0.014484107, 0.012965312, -0.0035284173, -0.025930624, -0.057985816, 0.028177947, 0.028770646, 0.006834572, 0.00012135687, -0.006359177, 0.014780456, 0.01689195, 0.00398529, 0.007989102, -0.022423817, 0.043020144, -0.006096784, -0.03847611, 0.020225888, -0.03746358, 0.014990371, 0.048206266, -0.008495367, -0.0020188843, 0.021979293, -0.031511884, -0.019670231, -0.019522056, -0.037537668, 0.010298163, 0.0066061355, 0.05176247, -0.05897365, 0.0486014, 0.017632825, -0.006674049, -0.033289984, -0.008878152, -0.032153975, -0.0044082063, -0.022868343, 0.005368257, 0.023325214, 0.005525693, 0.014619933, 0.043439973, 0.05596076, 0.0008303974, 0.011835478, 0.026943155, -0.023930263, -0.0003517227, -0.039686203, 0.013940798, -0.00014981496, 0.04262501, 0.060702357, 0.02110259, 0.022399122, -0.03976029, 0.010662426, -0.01004503, -0.04558851, -0.05981331, -0.050009064, 0.0032968938, -0.02620228, -0.010446338, 0.020164149, 0.018756486, 0.009680767, 0.0002953853, 0.02050989, -0.014706369, -0.038327932, -0.009112762, 0.00053559087, -0.006408569, -0.09088067, -0.004948428, -0.022423817, -0.01884292, 0.002014254, -0.013199924, 0.0066061355, 0.024053741, 0.016558556, -0.014249496, 0.03284546, -0.011304518, 0.00054755295, 0.019534405, -0.010575991, -0.02743707, -0.034821127, 0.002301343, -0.0054392572, 0.018867617, 0.007390228, -0.01689195, 0.04872488, 0.005192299, 0.02679498, 0.049120013, 0.013718535, -0.009199198, -0.023448694, 0.0095511135, 0.025152707, -0.033635724, 0.022559645, -0.015336113, -0.0014107495, -0.006562918, -0.004914471, -0.008439801, -0.0032228064, 0.0070012687, 0.037266012, 0.02654802, -0.027214808, 0.02288069, -0.004337206, 0.017620478, 0.031511884, 0.00026451552, -0.017645173, 0.024140177, 0.008976935, -0.019781362, -0.0042291614, -0.0025668233, 0.010792079, 0.00019814548, -0.045736685, -0.009588158, 0.046304688, 0.050157238, -0.02423896, 0.021114938, -0.013434534, -0.0171883, -0.009310329, 0.02186816, 0.011174865, -0.00025930625, -0.02099146, 0.030474659, -0.020262932, 0.0006779778, -0.05045359, -0.037068445, 0.0067543103, 0.01224296, 0.008717629, 0.016015248, -0.0029094778, -0.029215172, 0.01274305, -0.002168603, 0.008341018, -0.008439801, 0.027288897, -0.02662211, 0.013520969, 0.04665043, -0.044501893, -0.015928812, 0.027609942, -0.0009561918, 0.041069172, 0.006072088, 1.8425408e-05, -0.0021361897, -0.06983982, 0.0019447969, 0.022497904, -0.04452659, -0.0052663865, -0.004114943, 0.005031776, -0.04309423, -0.025609579, 0.002755129, 0.0046736863, -0.0149286315, 0.033512246, -0.06840746, -0.0084212795, 0.032746676, 0.014619933, 0.0011560738, 0.02696785, 0.008513888, 0.032153975, 0.011100777, 0.026523326, 0.001336662, -0.0610481, 0.0075507513, -0.041884135, 0.032746676, 0.00385255, -0.023992002, -0.046971474, -0.0010943342, 0.026745588, -8.018911e-07, -0.043365885, -0.012990008, 0.025955321, 0.012063915, 0.017496997, 0.006970399, -0.012273829, 0.07621134, 0.017743956, -0.01884292, 0.056800418, -0.004948428], [-0.022775114, -0.045125846, -0.026358774, 0.022586498, -0.024354752, 0.032182224, -0.047412787, 0.028928638, -0.026901038, 0.030366817, 0.003297794, -0.009318699, -0.025227092, -0.026500234, -0.010314816, -0.0034510426, -0.06667497, -0.012307049, 0.00028807807, -0.018649187, -0.002432823, -0.03307814, -0.04585672, 0.006630953, 0.05493376, 0.007426667, 0.012625334, 0.010827609, -0.0048509105, 0.0023724076, 0.03553012, 0.0022397884, 0.019757293, 0.019309334, 0.045691684, -0.018012615, 0.007898201, 0.031003388, -0.0071909, 0.0014138665, -0.023953948, -0.0013711337, -0.007102487, -0.012000551, -0.004441265, -0.00049179565, 0.027773378, 0.03725122, 0.00408172, -0.010609524, 0.022727959, -0.010692043, -0.02127799, -0.048803814, -0.011145895, 0.05861173, 0.03357325, -0.08119823, 0.057008512, -0.043121822, -0.07162608, -0.02271617, -0.003563032, -0.012601757, -0.034469165, 0.004181921, -0.015407387, 0.02451979, 0.020228827, 0.026405929, -0.026005123, 0.0053430744, 0.016008593, 0.020523535, 0.0005186879, -0.044984385, 0.0657319, -0.007255736, -0.04062269, -0.010874763, 0.01920324, -0.06205393, -0.012424932, -0.016161842, 0.02149018, -0.0379821, 0.035223622, -0.10232297, -0.027773378, 0.0069138734, 0.03574231, -0.0022839948, 0.044489272, 0.0065602227, -0.060450714, 0.035317928, 0.000816344, -0.009189027, -0.03784064, 0.004290963, -0.01359198, -0.017364256, -0.06247831, -0.06992856, -0.002219159, 0.016138265, 0.037369102, -0.00470945, 0.021195473, 0.03147492, 0.036119536, -0.0352472, 0.00061815215, -0.01366271, 0.0023665135, -0.045172997, -0.019167874, -0.048379432, -0.039302394, 0.002516815, -0.10232297, -0.012967196, 0.05285901, 0.06780665, 0.0060533234, -0.008976837, -0.029282289, 0.015725672, 0.0070435456, -0.0151951965, -0.028315643, 0.012978985, 0.054179307, -0.006348032, 0.055028066, -0.02257471, 0.036496766, -0.024331177, -0.056867052, -0.0063539264, -0.03840648, -0.021006858, -0.025651474, 0.033101715, -0.05328339, 0.0017402568, -0.0386894, -0.026759578, -0.056489825, -0.006206572, -0.0071850056, -0.024826288, -0.0033390531, -0.002303151, 0.04321613, -0.027773378, 0.019356487, 0.017753271, -0.008481725, -0.012990774, 0.020004848, -0.043994162, 0.02250398, 0.019780869, -0.026429504, -0.04234379, 0.009684138, 0.01927397, -0.013886689, 0.045267306, -0.00065057015, -0.028504256, 0.0042526512, 0.0046888203, -0.04434781, 0.044607155, 0.022032445, -0.0005470536, 0.0044235825, -0.08643226, -0.030673314, 0.033172447, 0.087894015, -0.046351835, 0.03963247, 0.047059137, 0.0243076, 0.025981547, 0.046493296, -0.038948745, -0.019356487, -0.0067134714, -0.056914207, -0.012978985, 0.0118001485, -0.010379652, -0.033856172, -0.056489825, 0.031144848, 0.012483874, 0.008045556, -0.050501335, -0.003692704, -0.007114276, -0.01769433, 0.014711874, 0.039113782, 0.016208995, 0.018425208, -0.01991054, 0.04738921, -0.015525271, -0.008045556, -0.0314985, -0.0076919054, 0.0054668523, -0.036355305, 0.020158097, 6.391502e-05, -0.020947916, 0.058706038, 0.023282012, 0.048190817, -0.037722755, -0.014028149, 0.02588724, 0.015065525, 0.00034996695, 0.023175918, 0.018955683, 0.013497673, -0.026971769, -0.0014256549, 0.010079049, -0.07709588, -0.02574578, -0.051302947, -0.008499408, 0.040646266, 0.017776847, 0.030649738, 0.021195473, -0.031592805, -0.021631641, 0.015489906, 0.027844109, -0.0066840006, 0.021089377, -0.024849864, -0.03013105, 0.024991324, -0.012212741, 0.026877463, 0.031168425, -0.011935716, 0.05040703, -0.0008126601, -0.06841964, -0.0003621237, -0.008929683, -0.018095134, 0.04889812, -0.010285345, 0.10477495, -0.033030987, -0.038524363, 0.039373126, -0.031380616, -0.09194921, 0.022527557, 0.04479577, -0.043499053, -0.009914012, 0.040316194, 0.041872256, -0.046917677, 0.048214395, 0.030036744, -0.026665272, 0.035412237, 0.0066132704, 0.034893546, 0.04149503, 0.03465778, 0.052764703, -0.023812488, -0.008982731, -0.025533589, -0.056914207, -0.013863112, -0.005092572, 0.0032064342, 0.03826502, 0.013285482, 0.04717702, 0.02071215, 0.013250117, 0.017576445, -0.059649106, 0.018814223, 0.03402121, -0.0020334923, 0.01899105, -0.06205393, -0.011752996, 0.03286595, 0.01840163, 0.10873584, -0.041164957, -0.008145757, 0.06969279, -0.004965847, -0.033101715, -0.020052, 0.041801527, -0.02753761, 0.016975239, 0.02294015, 0.051114332, -0.021077588, -0.060497865, -0.014499684, -0.07761457, 0.006020905, 0.019144299, 0.008546561, -0.019757293, -0.017352467, -0.024425482, -0.008328477, -0.03781706, -0.011022117, -0.0007522448, -0.0026906934, -0.026335198, -0.117034845, -0.022162117, -0.044135623, 0.06280839, -0.0151951965, -0.044277083, 0.032748066, 0.018602032, -0.022185694, 0.011570276, -0.017989038, -0.024826288, -0.03543581, 0.043381166, -0.018790647, 0.0013114552, 0.06304415, 0.054886606, 0.03809998, -0.014759027, -0.03637888, -0.014747239, -0.030154627, -0.0060415347, 0.027514033, 0.06705219, -0.04507869, 0.024566943, 0.048214395, -0.0025403916, -0.04875666, -0.036426034, -0.013521249, -0.043970585, 0.031875726, -0.022539346, -0.039561737, -0.012472086, 0.017717905, -0.061393782, -0.032252956, 0.054037847, -0.0034834605, -0.03293668, -0.0050631007, -0.014971218, -0.038665824, -0.014370011, 0.017776847, 0.040528383, 0.009660562, -0.030720469, 0.021737738, 0.041542184, -0.054603685, 0.024166139, 0.009047567, -0.02057069, -0.023140552, 0.028810753, 0.053236235, -0.030508278, 0.023069821, -0.020287769, -0.01776506, 0.030579008, -0.035459388, -0.018236594, -0.0075799157, 0.027018923, 0.0038105876, -0.008841271, -0.010638995, 0.004641667, 0.026830308, -0.0022000028, 0.034917124, -0.029423747, 0.0678538, 0.016550858, 0.07016432, -0.006530752, 0.035836615, -0.008422784, 0.014181398, 0.006182995, -0.026288044, 0.009967059, 0.05285901, 0.00044058997, 0.08053808, -0.049746882, 0.016857356, 0.01797725, -0.03652034, -0.013403366, 0.00036801788, -0.0071732174, 0.0057615614, -0.04371124, -0.052764703, -0.04359336, -0.003171069, 0.011652795, 0.04731848, 0.036708955, -0.03270091, 0.022138542, 0.011587959, -0.047483515, -0.003138651, -0.05328339, 0.042108025, 0.014358223, -0.022209272, -0.004055196, 0.0077331644, -0.052717548, -0.041683644, 0.05766866, -0.023411684, 0.011546699, 0.026830308, -0.01092781, -0.09213783, 0.014605779, 0.031734265, 0.05601829, -0.01854309, 0.017081335, -0.01168816, 0.007285207, 0.039208088, 0.0029559315, 0.017824002, -0.022881208, -0.021148318, -0.0468941, 0.010303027, -0.01146418, -0.033455368, -0.049511116, -0.015985018, 0.051727325, -0.047931474, -0.009872752, -0.066627815, 0.039302394, 0.0074325614, 0.055263836, -0.043616936, 0.02200887, -0.004408847, 0.04694125, 0.020971494, -0.022822266, 0.008464043, 0.03006032, -0.014016361, -0.008581926, -0.013167599, -0.04738921, -0.0684668, 0.0064659156, -0.0014234446, 0.0032889526, 0.029918859, 0.032889526, 0.0012672488, -0.0061417357, -0.009713609, -0.013191176, -0.020900764, -0.008522985, -0.042579558, 0.028079875, -0.014181398, -0.022032445, 0.0007102487, -0.025297822, -0.01783579, -0.012531027, 0.020016637, 0.03437486, 0.0047890213, 0.00073419383, -0.008045556, -0.08195268, -0.027301842, -0.010485747, -0.0027348998, 0.041872256, -0.0007404564, 0.002205897, -0.026901038, 0.0035689261, -0.0020659103, -0.022751536, 0.021890985, -0.010827609, -0.02193814, 0.03055543, 0.0369683, -0.04580957, 0.070447244, -0.013026139, 0.02904652, -0.010303027, -0.014983007, -0.015148044, 0.034775663, 0.010721514, 0.019108932, -0.019462584, 0.041377146, -0.047129866, 0.04809651, -0.011929821, 0.028409949, -0.010420911, -0.039208088, -0.012648911, -0.046634756, 0.0031799104, 0.0024151404, 0.005493376, 0.030673314, 0.07370083, 0.01969835, -0.00026800102, -0.031545654, 0.0441592, -0.002478503, -0.015572424, -0.024944171, 0.024755558, 0.057574354, 0.013898477, -0.03237084, -0.05314193, 0.052811857, -0.0091241915, -0.026217313, 0.009607514, -0.030720469, -0.014181398, -0.0014698613, -0.01236599, -0.029942436, 0.03812356, 0.00068040943, -0.032394417, -0.052528936, -0.015348446, 0.025981547, -0.023199493, 0.019875176, 0.031970035, -0.018095134, -0.022209272, 0.0060415347, -0.0025757567, 0.027702648, 0.012967196, 0.015265927, -0.024920594, -0.0260287, 0.016810203, -0.0070789107, -0.06276123, -0.001227463, 0.050501335, -0.03171069, 0.028197758, 0.014888699, -0.06587336, -0.017529292, 0.061535243, -0.014193187, 0.005172143, -0.021549122, -0.0076624346, 0.062384006, 0.021537336, 0.028645717, 0.03718049, -0.011163577, 0.0547923, -0.01790652, 0.03241799, -0.0028675187, -0.018932108, -0.005089625, 0.0027864738, -0.0048568044, -0.032347262, 0.0029131987, 0.010308921, -0.029329441, -0.021985292, 0.014157821, 0.0035983971, 0.023564933, -0.012142012, 0.019497948, 0.033997633, 0.017152065, -0.00035788727, 0.0025315504, -0.029140828, 0.0035512436, 0.044819348, -0.0045031537, 0.056819897, 0.0032270637, -0.010238191, 0.019497948, 0.0018198282, 0.049558267, 0.0067252596, -0.038878012, -0.025392128, 0.02588724, -0.03486997, 0.009247969, -0.022963727, -0.009778446, 0.009678244, 0.019179663, -0.004865646, -0.016869145, -0.024236869, -0.038524363, 0.01359198, 0.0188378, 0.06177101, -0.037604872, -0.04960542, -0.006236043, -0.037769906, -0.014865123, 0.021690583, 0.09152483, -0.026948193, -0.02034671, -0.042037293, -0.01380417, -0.01962762, -0.016928086, -0.005077836, -0.010650784, -0.008352053, 0.014157821, -0.035129316, -0.0062890905, -0.00559063, -0.06257262, -0.009548572, 0.08987446, -0.00204086, -0.009902223, 0.017658964, -0.04738921, 0.011747101, 0.0033449472, -0.009159557, -0.0012142011, -0.04156576, -0.057574354, 0.014169609, 0.0031651747, -0.0017770954, 0.0032535875, -0.03680326, -0.04177795, 0.026075853, 0.026358774, -0.01024998, 0.03163996, 0.040952764, 0.006182995, -0.030437548, 0.007055334, -0.048285127, -0.0017903573, -0.0009578043, -0.009424794, -0.01024998, -0.020523535, 0.013533038, -0.06889118, 0.034186244, -0.011694054, 0.047342055, -0.01017925, 0.018967472, -0.027867684, -0.015336657, -0.0068608257, -0.0044589476, -0.03560085, 0.017340679, 0.0057939794, 0.032441568, 0.029588785, 0.027749801, 0.002960352, -0.03784064, -0.053236235, 0.015041948, -0.01790652, 0.022468615, 0.011593853, 0.009342276, 0.021914562, -0.01755287, -0.021879198, 0.020888975, -0.051397253, 0.015383811, 0.039113782, 0.0034893549, -0.0076977997, 0.000494006, -0.046186797, -0.033620406, -0.016515493, 0.003203487, -0.01718743, 0.014051726, -0.00259786, 0.022173906, -0.03458705, 0.030036744, -0.0061947834, 0.006383397, 0.086620875, -0.033761866, 0.0014087091, 0.028645717, -0.00069109263, 0.009542678, -0.011953398, -0.025344975, 0.014039937, 0.02200887, -0.0061653126, 0.011387557, -0.014016361, 0.03284237, 0.009825598, 0.014865123, 0.002264839, -0.01006726, -0.0008472884, 0.035930924, 0.038571514, 0.012766794, 0.0071201697, 0.03718049, -0.0036809156, 0.0155134825, -0.023435261, 0.0070730164, 0.00862908, -0.041825105, -0.025462858, -0.031828575, 0.027348997, 0.011299144, -0.027844109, -0.029942436, -0.027160384, -0.035695154, 0.026924616, -0.012200953, 0.036001652, 0.006448233, 0.060592175, 0.0050631007, 0.06040356, 0.016668743, 0.0026582754, 0.003760487, 0.018354477, -0.015159831, -0.0033537885, 0.018342689, -0.02337632, 0.032394417, 0.05931903, 0.011741207, -0.03949101, -0.052010246, -0.02890506, -0.028197758, -0.044607155, -0.013450519, -0.0020143362, 0.00542854, 0.021160107, -0.03675611, 0.048709504, 0.00869981, -0.0035070372, 0.015419176, 0.00031239155, 0.001234094, 0.003692704, -0.07233338, 0.018366266, -0.009029884, -0.0008023453, -0.027207537, -0.009218498, 0.051114332, -0.0010189564, 0.004641667, 0.00075740216, -0.028999368, -0.0145939905, -0.0602621, 0.0118001485, -0.008440467, 0.03406836, 0.029753823, -0.00065278047, -0.010167461, -0.00995527, 0.0023311484, 0.0076270695, -0.039561737, -0.054084998, -0.006707577, -0.058941804, -0.022904785, -0.005649572, 0.013061504, 0.010438593, 0.035978075, -0.041212108, 0.028386373, -0.024130775, 0.03364398, 0.012896466, 0.009183133, 0.006902085, -0.029164404, -0.023541356, 0.036567494, -0.035860192, 0.031852152, 0.008599609, -0.00927744, 0.03406836, -0.014971218, 0.024849864, -0.029282289, 0.00874107, 0.022551134, 0.035789464, 0.010291239, -0.018024404, 0.015478117, 0.017505715, 0.02271617, -0.013309059, 0.024991324, 0.019462584, 0.041306417, -0.01748214, -0.014370011, -0.016633376, 0.031522077, -0.04566811, -0.040151156, 0.041306417, 0.04646972, -0.029848129, 0.007285207, -0.021667007, -0.03206434, 0.011935716, 0.01976908, -0.023164129, 0.016550858, 0.020995071, 0.021124743, 0.03630815, -0.036426034, -0.014087091, 0.0019244499, 0.0005610523, 0.033549674, -0.0072675245, 0.029470902, 0.006348032, 0.043899857, 0.0050837304, -0.026830308, -0.036001652, -0.010344286, 0.0032152755, -0.039726775, -0.011216626, -0.006206572, 0.062384006, 0.012531027, -0.019710138, 0.022433251, -0.061535243, -0.035176467, 0.0023989314, -0.0010874763, 0.00408172, -0.020122731, 0.013780594, -0.021230837, -0.0015133308, -0.011794255, -0.016739473, 0.0034923018, 0.0014499683, 0.004977635, 0.024048256, 0.031215578, -0.009118297, 0.008316688, -0.0047212383, -0.0040050955, 0.0054550637, 0.028574986, -0.007815683, 0.023918584, 0.02178489, -0.039891813, -0.008564244, 0.015607789, -0.0037811166, -0.02250398, 0.015867133, -0.0029264605, 0.018319113, -0.036331728, 0.005316551, 0.016869145, -0.024566943, 0.008652656, -0.027372573, 0.00093791145, -0.0020776985, -0.00013768437, 0.034422014, 0.027891262, -0.03006032, 0.033266753, -0.040787727, 0.014134244, 0.049699727, 0.004211392, 0.004936376, 0.03876013, 0.017753271, 0.013603768, -0.022845842, 0.0018743493, -0.043475475, -0.014464319, 0.03781706, -0.07719018, 0.041589335, 0.03142777, 0.0007993982, -0.043970585, -0.01976908, 0.01783579, -0.009613408, -1.8016392e-05, -0.049086735, -0.011776572, 0.054084998, 0.04005685, -0.04012758, 0.013674499, 0.12957767, -0.028527834, -0.032960255, 0.038241442, -0.004777233], [-0.020327397, 0.0102389855, -0.023778036, 0.04421836, 0.04073008, 0.03350256, -0.025434341, 0.018533066, -0.02815721, 0.028282687, 0.011820005, -0.003296928, 0.0085262135, -0.006719334, -0.007221245, 0.025108099, -0.052098367, 0.0133382855, -0.028383069, -0.03295046, -0.016826568, -0.049513523, -0.06745684, -0.013099878, 0.0046614986, 0.009944112, 0.0036106226, 0.009950386, -0.0035008295, 0.011625514, 0.049839765, 0.009247711, 0.03628817, -0.00818115, 0.003466323, -0.03538473, 0.014956949, 0.016575612, -0.031971734, -0.00806822, -0.041784093, 0.016061153, -0.0024421108, -0.041156705, -0.0020358767, 0.005935098, -0.03756804, 0.018608352, 0.014492681, -0.020227015, 0.034656957, -0.038571864, 0.009605322, -0.036012117, -0.010188794, 0.0205909, 0.030491095, -0.10233966, 0.048484605, -0.011713349, -0.04040384, -0.009693157, 0.010753444, -0.018470326, -0.020892046, -0.014643255, -0.017704912, 0.030240139, 0.004197231, 0.014467586, -0.018043702, 0.012152521, -0.006606404, -0.018369945, 0.009586501, -0.06344155, 0.08883826, 0.026199756, -0.020615995, -0.013012043, 0.037091225, -0.050216198, -0.01500714, -0.026827145, 0.02483205, -0.041056324, 0.035736065, -0.097621694, 0.0019684325, 0.032297976, 0.020465422, -0.03751785, 0.03232307, 0.023627462, -0.06098219, 0.001930789, -0.005928824, 0.0116631575, -0.0023417287, -0.00916615, 0.00576884, -0.018758925, -0.06424461, -0.049613904, 0.015496504, 0.024907336, 0.030440904, -0.008739525, -0.0017927635, 0.115640305, 0.019210644, -0.02307536, -0.030139757, -0.028859885, -0.04050422, -0.005878633, -0.006719334, -0.04263734, -0.0096680615, 0.0089716595, -0.101135075, -0.025095552, 0.07132156, 0.03864715, -0.013827649, 0.0057217856, -0.014367203, 0.04150804, -0.014969497, 0.01466835, -0.0016688542, 0.017855486, 0.03756804, 0.008061946, 0.0541562, -0.016525421, 0.04539785, -0.034832627, -0.048660275, -0.0116819795, -0.03340218, -0.018533066, -0.0006599346, 0.027780775, -0.047857217, -0.035535302, -0.01568472, -0.020126633, -0.060530473, -0.016337205, 0.0042944765, -0.031770967, 0.016901854, 0.03154511, 0.02725377, -0.02730396, -0.0008210951, 0.036413647, -0.02956256, 0.03490791, 0.043741547, -0.052098367, -0.011173794, 0.020101536, -0.029035553, -0.04835913, 0.04032855, 0.0060605756, -0.029863706, 0.029662943, -0.021820582, -0.030742051, 0.0018539339, -0.010533858, -0.021080263, 0.040203072, 0.036237977, 0.03633836, -0.024468163, -0.061735056, -0.02470657, 0.022974977, 0.072475955, -0.06509786, 0.061182957, 0.057820152, 0.0014618159, 0.029361796, 0.019536886, -0.048484605, -0.025748037, -0.018407587, -0.035861544, -0.02752982, -0.020854404, -0.037818998, -0.046677727, -0.06344155, -0.0017159084, 0.015559242, -0.020641092, -0.043741547, -0.022096634, 0.024668928, -0.039475303, 0.020503066, 0.034255426, 0.010765992, 0.01742886, -0.04773174, 0.029236319, -0.020741474, 0.00840701, -0.051320404, -0.03390409, 0.031243961, -0.043189444, 0.022611093, -0.008043124, -0.04891123, 0.08386933, -0.009109685, 0.042838108, -0.048509702, -0.019336123, 0.05219875, -0.006226834, 0.019511791, 0.014982045, 0.020917142, 0.011612967, -0.03791938, -0.0064621046, 0.014455038, -0.034155045, -0.011362012, -0.0366646, 0.020917142, 0.051747028, 0.004482693, 0.008538761, 0.014944401, -0.03977645, -0.01097303, 0.010922839, 0.033653136, 0.005878633, 0.017140262, -0.014931853, -0.019863129, 0.014793828, -0.0030647942, 0.013589242, 0.015546694, -0.0031557656, 0.02228485, -0.0014171144, -0.040880654, -0.021180646, 0.016776375, -0.0037329632, 0.03131925, -0.020691283, 0.07960309, -0.02865912, -0.017918224, 0.032925364, -0.040253267, -0.06590092, 0.009743348, 0.03796957, -0.044670083, -0.012874018, 0.021067716, 0.045146897, -0.030967912, 0.062939644, 0.031168675, -0.03513377, 0.037668422, 0.015082426, 0.043013778, 0.014743636, 0.0123407375, 0.061233148, 0.012874018, -0.0038898105, -0.0050002886, -0.049990337, 0.021055168, -0.0109855775, -0.0259488, 0.01703988, 0.025459437, 0.031871352, 0.014166439, 0.0145679675, 0.021230837, -0.06002856, 0.015358478, 0.0059633306, -0.01828211, -0.004758744, -0.066453025, 0.014429943, 0.04574919, 0.00919752, 0.10570247, -0.0030757736, -0.03277479, 0.0727771, -0.010828731, 0.0057939356, -0.05827187, 0.03764333, -0.010257807, 0.016174084, 0.024944978, 0.05726805, -0.02730396, -0.030867528, -0.023765488, -0.0840701, -0.0066942386, 0.026776955, -0.02815721, 0.0045171995, 0.00023115356, -0.035635684, 0.004589349, -0.08166093, -0.007880003, -0.011136151, -0.029386891, -0.04783212, -0.11744718, -0.015019688, -0.03397938, 0.03503339, -0.021481792, -0.0073529966, 0.04123199, -0.00023507474, -0.05455773, -0.004545432, -0.01387784, 0.007610226, -0.02617466, 0.040880654, -0.0041784095, 0.0014335834, 0.07704335, 0.07679239, 0.037367277, 0.02730396, -0.017278288, -0.016663447, -0.03525925, -0.010584049, 0.001163022, 0.0677078, -0.065649964, 0.03204702, 0.05490907, -0.031720776, -0.037317086, -0.04564881, 0.003914906, -0.014856567, 0.025371604, -0.04271263, 0.0047995243, 0.018884404, -0.020239562, -0.03756804, -0.020628544, 0.047530975, -0.009134781, -0.042461675, 0.0075349393, -0.025434341, -0.033126127, -0.007371818, 0.026099375, 0.032574028, -0.0036168965, -0.012221534, 0.018231919, 0.030039376, -0.04534766, 0.0033471193, 0.030867528, 0.00032075253, -0.0338539, 0.023853322, 0.039299633, -0.05325276, -0.0013433963, 0.0017676679, 0.007064398, 0.013965675, -0.016412491, 0.012347012, 0.010565227, 0.024681475, 0.0030004869, 0.0040246993, -0.040378742, 0.0004528963, 0.03729199, 0.012422298, 0.018093893, -0.0055555278, 0.035409823, -0.007509844, 0.05972741, -0.0025581778, 0.033477467, -0.0013614336, -0.008557583, -0.003044404, -0.05822168, -0.014078605, 0.043641165, -0.0035572944, 0.04557352, -0.06986602, 0.03475734, -0.0027652162, -0.036463838, -0.0035980747, 0.021130454, 0.0026695393, -0.018445231, -0.023175742, -0.052801043, -0.050517347, -0.039400015, 0.0055304323, 0.04303887, 0.05862321, 0.03249874, 0.013488859, 0.030742051, -0.031394534, -0.013614337, -0.0778464, 0.00097245263, 0.02346434, -0.004021562, -0.018771473, 0.01563453, -0.0778464, -0.015835293, 0.10640514, -0.0077294298, 0.018445231, -0.039726257, 0.0076478696, -0.08833634, -0.0068385378, 0.033427276, 0.045849573, -0.0072839838, 0.026551094, -0.0126795275, -0.016726185, 0.057619385, 0.017341027, 0.012773636, 0.0019292205, -0.016048605, -0.05952665, 0.017303383, -0.009322997, -0.04592486, -0.040253267, 0.018206824, 0.016801473, -0.045949955, -0.0031714505, -0.019373765, 0.018257014, 0.017077522, 0.038898107, -0.018231919, 0.034506384, 0.0074282833, 0.05179722, 0.0022585997, -0.0029283373, -0.0016186631, 0.021531984, 0.0078674555, -0.016901854, -0.018357396, -0.03661441, -0.08738271, 0.0084383795, 0.011349463, 0.03380371, 0.029938994, 0.008212519, 0.0006622873, -0.0005136746, -0.023840774, -0.034606766, -0.043691356, 0.011600419, -0.043967407, 0.022598544, 0.0025173975, -0.03548511, 0.0071773278, -0.009410832, -0.015371026, -0.019474149, 0.015772555, 0.029989185, 0.021393958, -0.0069765635, -0.017466504, -0.05952665, 0.0037800174, -0.0045611165, 0.017817842, 0.0076980605, -0.0108601, -0.028583834, -0.055812508, -9.9696e-05, 0.024919882, -0.025133194, 0.019499244, 0.016048605, -0.016450135, 0.040654793, 0.01631211, -0.06088181, 0.053804863, 0.009642966, 0.057870343, -0.013300642, 0.025246125, -0.03638855, 0.03485772, 0.026977718, 0.013827649, -0.025133194, 0.010847553, -0.0631906, 0.0035478836, -0.014818924, 0.025321411, -0.0012210554, -0.036990844, 0.007058124, -0.0338539, -0.007553761, -0.002878146, 0.043967407, 0.018420136, 0.06735646, 0.05325276, -0.009467297, -0.04040384, 0.04170881, 0.010477393, -0.007942742, 0.00042936922, 0.0075600347, 0.04015288, -0.008733252, -0.0518976, -0.041884474, 0.053905245, -0.0016021942, -0.0428632, -0.0008461906, -0.036363456, -0.031946637, -0.0026601285, -0.006371133, -0.03784409, 0.02662638, 0.0084195575, -0.00727771, -0.050567538, -0.01754179, 0.00803685, -0.025998991, 0.014680898, 0.02036504, -0.019047523, -0.019474149, 0.029010458, -0.0088838255, 0.014429943, -0.016839115, 0.00044858298, -0.012629337, -0.030867528, 0.0008328586, -0.0046081706, -0.05026639, -0.01957453, 0.034330714, -0.026701666, 0.0012657569, 0.017855486, -0.076742195, -0.039977215, 0.060279515, -0.032824982, 0.0030945952, -0.03515887, 0.0048246197, 0.027780775, 0.016876759, 0.038295813, 0.044143077, 0.015408669, 0.06394347, -0.034280524, 0.029261414, 0.0293367, -0.009028125, 0.017918224, -0.014178987, -0.018984785, -0.03232307, -0.03114358, 0.0014712267, -0.034155045, -0.007942742, 0.00012753638, 0.020641092, 0.013664528, -0.015371026, 0.0025409246, 0.017980963, 0.016826568, -0.004658362, 0.024041539, -0.031469822, -0.018947141, 0.062136587, 0.008839908, 0.061835438, -0.02025211, -0.028734406, 0.031243961, -0.010176246, 0.04208524, 0.0067444295, -0.034732245, -0.023113003, 0.02402899, -0.026400521, 0.022498162, -0.052499894, -0.008877551, -0.010119781, 0.01878402, -0.0013943716, -0.0036043485, -0.025973896, -0.012121151, 0.017704912, 0.030541286, 0.06349175, -0.055260405, -0.049965244, -0.019449053, -0.04539785, -0.03377861, -0.0028310919, 0.084622204, -0.03631326, -0.025672749, -0.01563453, -0.043139253, -0.010427202, -0.0377939, -0.026927527, 0.01018252, -0.016061153, -0.0036168965, -0.049990337, 0.015973318, 0.023966253, -0.057920534, -0.036539122, 0.077444874, 0.016550517, -0.012384655, 0.016412491, -0.038622055, -0.0012139974, 0.02364001, -0.024694024, -0.02675186, -0.021895869, -0.027906254, -0.00851994, 0.028508548, -0.0014288779, -0.017303383, -0.054206394, -0.01624937, 0.00806822, 0.019561982, 0.0036043485, 0.024806952, 0.021757843, 0.015973318, -0.031344343, -0.011901566, -0.05505964, 0.0003509456, -0.00288442, -0.018432682, -0.002153512, -0.009661787, -0.003974508, -0.068109326, 0.020227015, -0.010835004, 0.045673903, 0.0049595083, 0.0074722003, -0.010734622, 0.0057311966, -0.006556213, -0.01765472, 0.004181546, -0.036012117, 0.0073655443, 0.048886135, -0.007509844, 0.03141963, -0.01934867, -0.04429365, -0.038948298, -0.0011316525, -0.021745296, 0.028985362, -0.024468163, -0.0097935395, -0.0009810792, 0.014392299, -0.026450712, 0.023715297, -0.017328478, 0.0024577957, 0.03357785, 0.025572367, 0.015973318, 0.0029330426, -0.043590974, -0.041206896, 0.01277991, 0.021143002, -0.024794405, -0.005489652, 0.01037701, 0.012899114, -0.051747028, 0.0445697, 0.02865912, 0.020603448, 0.057669576, -0.034380905, 0.012522681, 0.021143002, 0.005539843, 0.0050473427, -0.013438668, -0.03638855, -0.0052982983, 0.0112177115, -0.0077294298, 0.011249081, -0.020892046, 0.036187787, 0.0083129015, 0.02160727, -0.0053453525, -0.0003725121, -0.008551309, 0.040830463, 0.030315427, -0.0023950567, -0.0031996828, 0.056163844, -0.006088808, 0.03530944, -0.02752982, -0.02680205, -0.032072116, -0.031770967, -0.043490592, -0.026902432, 0.017930772, 0.009065768, -0.03493301, -0.043616068, -0.029612752, -0.035409823, 0.014844019, 0.01432956, 0.006026069, 0.034531478, 0.028257592, 0.005593171, 0.051245116, -0.0041784095, 0.028910076, 0.010765992, 0.020979881, 0.0025330822, -0.014818924, 0.015923128, -0.01968746, 0.033176318, 0.054407157, 0.021419054, -0.02533396, -0.03769352, -0.020791665, -0.03232307, -0.042361293, -0.018809116, 0.029261414, -0.0014359361, 0.008231341, -0.05219875, 0.035560396, 0.010533858, 0.0059131393, -0.042838108, -0.001957453, -0.0016390532, -0.008902647, -0.045046516, 0.024794405, 0.0112177115, 0.0138903875, -0.013175164, 0.002376235, 0.066101685, 0.012083508, 0.010671884, 0.016638352, -0.02978842, -0.016261918, -0.026877336, 0.020892046, -0.038722437, 0.027856063, 0.055661935, 0.019185549, -0.013024592, -0.03530944, 0.0078862775, -0.0118764695, -0.019925868, -0.06730627, -0.0045140623, -0.055260405, -0.0129116615, 0.0017551201, 0.032875173, 0.025660202, 0.03164549, -0.04733021, 0.02747963, -0.026601285, 0.02916103, -0.016199179, 0.01760453, 0.007854908, -0.051696837, -0.023150647, 0.030767146, -0.04931276, 0.029487273, -0.02020192, -0.041081417, 0.023025168, -0.003309476, 0.028583834, -0.007836086, -0.015107522, 0.009316724, 0.047656454, 0.0031996828, 0.004467008, 0.0033753517, 0.016550517, 8.347212e-05, -0.027027909, 0.0055241585, -0.033101033, 0.039701164, -0.014818924, -0.0019260836, 0.0104522975, 0.02860893, -0.03222269, -0.01266698, 0.028734406, 0.023803132, -0.035409823, 0.026325233, -0.011562776, -0.017265739, -0.012710897, -0.008752074, -0.030415809, 0.019963512, 0.033828802, 0.016437586, 0.038496576, -0.024794405, -0.016788924, 0.010615419, -0.010251533, 0.039249443, -0.029487273, 0.011267902, 0.025509628, 0.038295813, -0.0045046518, -0.022937335, -0.016613256, 0.012347012, 0.016964594, -0.03548511, -0.022498162, 0.0082250675, 0.10118526, 0.016625803, -0.019260837, 0.018947141, -0.03869734, -0.028859885, 0.004090575, 0.0123407375, -0.018721282, -0.011104782, -0.0042411485, -0.013702171, -0.0050473427, -0.0040717535, -0.017290834, 0.000325654, 0.044318743, 0.006217423, 0.073881306, 0.019449053, -0.0016845389, -0.022008799, -0.0022178194, 0.014982045, -0.0068636336, 0.0050034258, -0.020779116, -0.008337997, 0.016713638, -0.03706613, 0.012742266, 0.019787842, 0.024405424, -0.012390928, 0.036187787, -0.0023119277, 0.007158506, -0.024342686, 0.025195934, 0.02415447, -0.03262422, 0.0036764983, -0.015509051, 0.0021880185, -0.038847916, 0.0008571699, 0.032398358, 0.022385232, -0.034882817, 0.048961423, -0.049287662, 0.0091159595, 0.06394347, -0.0032718326, -0.0042725177, 0.02662638, 6.543469e-05, 0.010809909, -0.018533066, -0.013564146, -0.035234153, -0.0024640695, 0.023539627, -0.054206394, 0.025170838, 0.020063894, 0.0016923812, -0.032649312, -0.030365618, 0.021469245, 0.008752074, 0.007961564, -0.024957526, 0.020653639, 0.037241798, 0.021908417, -0.0019072619, 0.008162328, 0.079803854, -0.014818924, -0.012704623, 0.0034851448, -0.002522103], [-0.0050521563, -0.01681753, -0.028094359, 0.032761425, 0.016599122, 0.037198585, -0.03827914, 0.03151994, -0.03889988, 0.027243711, -0.009931885, 0.015668007, 0.011121642, -0.02574933, -0.026370073, -0.0014110403, -0.037474472, -0.009972118, -0.04805009, -0.015622026, -0.037221577, -0.055499002, -0.048923727, -0.0030462376, 0.04218752, 0.017369302, 0.015461093, 0.011282574, -0.038922872, 0.031014148, 0.046900567, 0.005902804, 0.020852359, 0.0020892592, 0.039658565, -0.021783473, 0.01648417, 0.037106622, -0.029565748, -0.021473102, -0.028761081, 0.0022099593, -0.0007687439, -0.007971946, -0.016943978, 0.0011258147, -0.010236508, 0.022507673, 0.012817189, -0.0032617734, 0.0335431, -0.028508186, -0.034209825, -0.026416054, -0.033267215, 0.015139227, 0.022783559, -0.061936334, 0.042555366, -0.029565748, -0.046440754, 0.009006518, -0.0026338461, -0.015162217, -0.029289862, -0.021714501, 0.0019197045, -0.00728798, 0.027933424, 0.017679675, -0.032485537, -0.0071845227, -0.0063568656, 0.0074891467, 0.007943208, -0.061522506, 0.07573062, 0.013529894, -0.026944835, 0.0014512736, 0.02261113, -0.055499002, -0.024139997, -0.009443337, 0.063959494, -0.058073934, 0.05191249, -0.06841965, -0.013541388, -0.0037704376, 0.038463064, -0.015185207, 0.05292407, 0.047360376, -0.08699595, 0.024852702, 0.004083683, 0.023036454, -0.032669462, -0.0029542758, -0.014541474, -0.055177137, -0.062074278, -0.044509556, 0.048877746, 0.0061786897, 0.029841634, -0.014644931, -0.01361036, 0.06681032, 0.0044975113, -0.023243368, -0.0039917207, -0.018162474, -0.02067993, 0.011023932, -0.018840693, -0.037106622, -0.042900223, 0.012966627, -0.06566079, 0.0043595685, 0.05922346, 0.038968854, -0.017530236, -0.0042848494, 0.0070235897, 0.030370414, -0.012035512, 0.02067993, -0.016449684, 0.016139312, 0.061016716, 0.010495151, 0.03940567, 0.0014886331, 0.028945006, -0.055315077, -0.065338925, 0.0045492398, -0.04678561, -0.02478373, -0.0139092365, 0.023300845, -0.023128416, -0.020013208, -0.008236337, -0.02304795, -0.059131496, -0.030002568, -0.004894097, -0.05779805, 0.0306463, -0.0072937277, 0.04809607, -0.02263412, 0.007500642, 0.010707813, -0.015380627, 0.03066929, 0.055085175, -0.06074083, -0.03749746, 0.03694569, 0.0076673226, -0.068741515, 0.030968167, 0.0058913087, -0.04168173, 0.042670317, -0.0052475757, -0.032784414, 0.036232986, -0.00958128, -0.019151064, 0.049245592, 0.054487422, -0.015851932, -0.004454404, -0.043107137, -0.017415283, 0.012932141, 0.04621085, -0.03591112, 0.06694826, 0.042417422, 2.8962608e-05, 0.062809974, 0.01481736, -0.025657369, -0.039934453, 0.0073224655, -0.038187176, -0.02258814, -0.007845499, -0.024944663, -0.0038738947, -0.081892066, 0.017357808, 0.034554683, -0.023208883, -0.052188374, -0.032347597, 0.029243883, -0.04623384, 0.018553311, 0.046808604, 0.0005456645, -0.017139398, -0.03014051, 0.045498148, 0.0054573636, 0.013322979, -0.050303154, 0.0072362516, 0.011500984, -0.040624168, 0.014288579, -0.023657197, -0.05729226, 0.05834982, -0.018794712, 0.040141366, -0.062488105, -0.022910006, 0.0494755, 0.011506732, -0.00040879936, 0.034393746, 0.036738776, -0.014782874, -0.025427463, -0.011851589, 0.022772064, -0.017783131, -0.041497804, 0.00080825883, 0.002754546, 0.07531679, -0.01896714, 0.014863341, 0.030370414, -0.0325775, -0.025404474, 0.031818815, 0.009403104, 0.0023737664, 0.006943123, -0.0020001712, -0.030255463, -0.009190442, -0.00481363, 0.0064833136, 0.01310457, -0.017840607, 0.037681386, 0.024806721, -0.068879455, 0.0072649894, -0.018955646, -0.0028134591, 0.035612244, -0.014162132, 0.054717325, 0.018530322, -0.028577158, 0.030485367, -0.038026243, -0.08115637, 0.0044773947, 0.013782789, -0.043107137, -0.019300502, 0.0345087, 0.07200616, -0.03988847, 0.07425923, 0.043497976, 0.010293985, 0.05444144, 0.013564379, 0.020748902, 0.0021294926, 0.049291573, 0.0306463, -0.0060924753, -0.029749673, 0.0041181687, 0.0016294498, -0.008632923, -0.0038451566, -0.05108483, 0.04570506, 0.012690742, 0.04085407, 0.027335674, 0.018265931, 0.0044658994, -0.0680518, 0.028600149, -0.0058826874, 0.009178947, 0.0022688722, -0.07977694, -0.00078814215, 0.050395116, 0.014794369, 0.0680518, 0.0004493919, -0.0047619017, 0.051176794, 0.0046871826, -0.018288922, -0.05149866, 0.031795826, -0.026094187, -0.023323836, 0.012667751, 0.053199954, -0.010903232, -0.055315077, -0.016852017, -0.09977865, 0.011742384, 0.023461778, 0.015070255, -0.015587541, -0.012736722, -0.019231532, -0.004365316, -0.08129431, -0.0029830139, 0.0016179546, -0.011817103, -0.058533743, -0.10308928, -0.007173028, -0.04273929, 0.032485537, -0.04377386, -0.024139997, 0.070902616, -0.018196959, -0.05876365, -0.023415796, -0.029105939, 0.014288579, -0.037727367, 0.044739462, -0.041957613, 0.0012400487, 0.07416727, 0.03549729, 0.017438274, -0.0016639355, -0.018127989, -0.009839922, -0.028439216, -0.020266103, 0.020886844, 0.084329054, -0.06745405, -0.009230675, 0.025197558, -0.016415197, -0.035060473, -0.05057904, -0.018771721, 0.012989617, 0.017852103, -0.013644846, -0.0059660277, -0.0031525686, -0.011667665, -0.0709486, -0.009610018, 0.061430544, 0.009018013, -0.035750184, -0.0015734105, -0.014162132, -0.030462377, -0.019610874, 0.014323065, 0.049889326, -0.005078021, -0.03202573, 0.03262348, 0.027036797, -0.040003423, -0.023933083, 0.0016208284, 0.007017842, -0.076834165, 0.041980606, 0.044808432, -0.062442124, 0.00092105585, 0.007632837, 0.005089516, 0.010753794, -0.005316547, 0.02285253, -0.028577158, -0.020748902, 0.024829712, -0.0006351118, -0.011437761, 0.0019038985, 0.038991842, -0.022335244, 0.013322979, -0.013874751, 0.04034828, 0.010477908, 0.033681042, 0.009891652, 0.027772492, -0.014828855, 0.021898426, 0.0089547895, -0.050946888, 0.0014886331, 0.026393063, 0.049107652, 0.05586685, -0.028508186, 0.030738262, -0.024185978, -0.017748645, -0.014644931, -0.0053079254, -0.00011899366, -0.004799261, -0.04129089, -0.042555366, -0.052740145, -0.034186833, -0.0021510462, 0.050625023, 0.0057188803, 0.0051383707, 0.009742213, 0.04080809, -0.034784585, -0.023565235, -0.06745405, 0.027565578, 0.032094702, -0.0008255017, -0.021553569, 0.029680701, -0.08308757, -0.02159955, 0.07150037, 0.011587199, 0.0033364925, 0.0026266617, 0.032094702, -0.089754805, 0.0064833136, 0.026094187, 0.049889326, -0.024691768, 0.045911975, -0.005830959, -0.045406185, 0.040440243, 0.0025519426, 0.007121299, 0.010023846, -0.0039055066, -0.049889326, 0.0051268754, -0.02818632, -0.027082777, -0.029473787, 0.019047607, 0.039083805, -0.028393235, -0.02285253, -0.052326318, 0.050762966, 0.015645018, 0.030255463, -0.016897999, 0.032761425, -0.0013902052, 0.05641862, 0.0060062613, 0.0089547895, 0.019346483, 0.010150294, 0.0070695705, -0.0040147114, -0.041773688, -0.049613442, -0.019898254, 0.0019685593, 0.017001456, 0.008793856, 0.058165897, 0.011357293, -0.00680518, -0.026990816, 0.013162046, -0.02623213, -0.033244226, -0.01361036, -0.027634548, 0.0059832707, -0.012656256, -0.0364399, 0.0052935565, -0.0025691853, 0.013644846, -0.019576387, -0.0025404473, -0.0027042544, 0.0035204163, -0.026944835, -0.0020217248, -0.046946548, -0.006052242, 0.005437247, 0.0037848067, 0.044969365, -0.023036454, 0.013024103, -0.027933424, -0.01749575, 0.012932141, -0.035152435, -0.017645188, -0.020001711, 0.0025073984, 0.0422335, 0.0063626133, -0.041704718, 0.05048708, 0.021300673, 0.073201664, 0.005043535, -0.0064948085, -0.02423196, 0.04313013, 0.008242085, 0.0073569515, -0.02135815, 0.036072053, -0.03945165, 0.06474117, -0.0032445306, 0.055682927, -0.0047820183, -0.033933938, -0.024622796, -0.050441097, 0.005511966, -0.0054487423, 0.016208284, 0.019231532, 0.076834165, 0.028899025, -0.022783559, -0.04073912, 0.042601347, -0.0072764847, -0.009598522, -0.0012134659, 0.01262177, 0.02311692, 0.015518569, -0.035106454, -0.061936334, 0.08359336, -0.0041813925, -0.017438274, 0.021852445, -0.018507332, -0.025703348, -0.035842147, -0.029956587, -0.044739462, 0.015219693, 0.008799603, -0.016461179, -0.05103885, -0.011253837, 0.019656854, -0.016645102, 0.004595221, 0.019116579, -0.010523889, 0.0020806377, 0.03731354, -0.011046923, 0.012828684, -0.011184866, 0.02138114, -0.00982268, -0.0105698705, 0.028048377, -0.012713731, -0.059499346, -0.029220892, 0.038049232, -0.04476245, 0.048601862, 0.014989789, -0.0837313, -0.010851503, 0.029680701, -0.03149695, 0.011058418, 0.0058654444, -0.00083915226, 0.036278967, 0.022795055, 0.04660169, 0.05494723, -0.004845242, 0.09072041, -0.036692794, 0.006040747, 0.018863684, 0.0074201752, 0.005402761, 0.015380627, -0.023887102, -0.02526653, -0.029887615, 0.0034686876, -0.037566435, -0.017863598, 0.00019703554, -0.017990045, 0.040141366, -0.025335502, 0.021082263, -0.00072024844, 0.019151064, 0.017185379, 0.028600149, -0.02473775, -0.01530016, 0.03604906, 0.0062131756, 0.07692613, -0.022001883, -0.014679417, 0.02772651, 0.014782874, 0.053613782, -0.020932825, -0.0050952635, -0.008345542, 0.011098651, -0.030991158, 0.0020806377, -0.032278623, -0.01262177, 0.0012177767, 0.034301788, -0.0036526115, -0.033750016, -0.0055895587, -0.02331234, 0.0047504064, 0.01284018, 0.058165897, -0.048417937, -0.038807917, -0.0010094255, -0.025381483, -0.03883091, 0.010121556, 0.04467049, -0.008437504, -0.020277597, -0.039037824, -0.023864111, -0.040026415, -0.024990644, 0.014828855, 0.0026510889, -0.012437846, -0.012449341, -0.06074083, 0.027496606, 0.015484083, -0.083271496, -0.05205043, 0.06552285, 0.03007154, 0.0013758361, 0.022266272, -0.05885561, -0.011144632, 0.012265418, -0.012690742, -0.023289349, -0.023197388, -0.05540704, 0.024806721, 0.015564551, -0.00054171303, 0.009018013, -0.059085514, -0.038623996, 0.022887016, 0.03163489, 0.0013988266, 0.04671664, 0.0011890385, 0.011529722, -0.045888983, -0.008242085, -0.042900223, 0.005451616, -0.0067534517, -0.018863684, -0.019967226, -0.022783559, 0.010529636, -0.0564646, 0.029795654, -0.0053970134, 0.056096755, -0.00466994, 0.033152264, -0.017530236, -0.000918182, -0.00089806534, -0.028922016, -0.0029600235, -0.0041612755, 0.009454832, 0.031290036, 0.0033623567, 0.0029140424, -0.010679075, -0.028462205, -0.036968682, 0.017449768, -0.037980262, 0.023254864, -0.009684737, 0.0014843225, 0.0032042973, -0.023220377, -0.002125182, 0.010058332, -0.04713047, 0.010759542, 0.06372959, 0.017829113, -0.007931713, -0.009621513, -0.038486052, -0.0074719037, -0.0019211414, -0.009472075, -0.030876206, -0.005463111, -0.0024628544, -0.008276571, -0.048785783, 0.03409487, 0.026370073, 0.038118206, 0.06023504, -0.0072477465, 0.0048423684, 0.0287151, -0.012483827, 0.0032244138, -0.008437504, -0.022680102, 0.012943637, 0.004606716, -0.015989874, 0.011569955, -0.0077190516, 0.010110061, -0.0018449855, -0.012230932, -0.00875937, -0.019714331, 0.0013923605, 0.03598009, 0.02109376, 0.013506903, 0.0040980517, 0.070120946, 0.0003339007, 0.042072564, -0.03356609, -0.004325083, -0.0069143847, -0.053567804, -0.037658393, -0.031427976, 0.04365891, 0.0058165896, -0.03894586, -0.031979747, -0.045636088, -0.01054688, 0.027818473, 0.009190442, 0.02768053, -0.000112976624, 0.02190992, -0.0042043827, 0.05388967, 0.0035031734, 0.03014051, 0.021725997, 0.018817702, 0.01841537, 0.015403617, 0.0055378303, -0.022047864, 0.01064459, 0.011449256, 0.01773715, -0.023415796, -0.04041725, -0.024002055, -0.03827914, -0.03055434, -0.024599805, 0.014667922, 0.0034571923, 0.021553569, -0.039428663, 0.047360376, 0.024852702, -0.00740868, 0.00031791514, 0.019334989, -0.004626833, 0.008299561, -0.042946205, 0.018852187, -0.0023292224, -0.0032933853, -0.009305394, 0.0028350127, 0.07375344, -0.0042130044, -0.0025806807, 0.00076227786, -0.01628875, -0.012529808, -0.0436819, 0.0340259, -0.012541303, 0.028554168, 0.06023504, 0.042486396, 0.017484255, -0.016461179, 0.0034054639, 0.010075575, -0.013322979, -0.06745405, 0.009701979, -0.062488105, -0.03800325, 0.031864796, 0.017840607, 0.028462205, 0.020461522, -0.046969537, 0.02434691, -0.01867976, 0.025818301, -0.016242769, 7.804188e-05, 0.03151994, -0.031129101, -0.029427806, 0.023933083, -0.01674856, 0.005000428, -0.015242684, -0.02873809, 0.028807063, 0.017438274, 0.017346311, 0.00052698475, 0.020254606, 0.012058503, 0.03781933, -0.004069314, -0.009604271, -0.002228639, 0.025128588, 0.003540533, -0.017219864, -0.00029923537, -0.008839837, 0.009069742, -0.01018478, 0.015139227, 0.012633265, 0.029496778, -0.01167916, -0.018541817, 0.027542587, 0.030738262, 0.0050665257, 0.02820931, 0.012403361, -0.015070255, -0.012322893, -0.0055234614, -0.004322209, 0.032094702, 0.045015346, 0.07329363, 0.04467049, -0.024691768, 0.0092766555, 0.012035512, 0.0068454132, 0.033152264, -0.00871339, 0.037796337, 0.018530322, 0.034807578, -0.013828769, 0.0048107565, -0.010225013, -0.00094835705, 0.018909665, -0.022208797, -0.007333961, 0.025059616, 0.09610018, 0.01600137, -0.027335674, 0.015139227, -0.047728222, -0.027956415, 0.018541817, 0.020220121, 0.0006318788, -0.0030462376, 0.0030893448, -0.0024887188, 0.005557947, 0.0053107995, -0.026140168, 0.0047446587, 0.052280337, 0.01505876, 0.044578526, 0.0111791175, -0.004546366, -0.03066929, 0.0012069999, -0.0011143195, -0.037290547, 0.026875863, 0.02048451, 0.017277341, 0.029726682, -0.028876035, 0.006655742, 0.02138114, 0.0066959755, 0.015093246, 0.009161703, 0.009747961, 0.01165617, -0.021771979, 0.026852872, 0.0027904687, -0.011989532, 0.0058510755, -0.03554327, -0.0029140424, -0.04483142, 0.009161703, 0.045015346, 0.0075351275, -0.03312927, 0.061752412, -0.03448571, 0.0019254521, 0.035451308, 0.012989617, -0.022726083, 0.013299989, 0.008897313, 0.017196873, -0.0047676493, -0.007063823, -0.008753623, -0.02019713, 0.012575788, -0.069753096, 0.032324605, -0.006144204, -0.0074489135, -0.069983, -0.03501449, 0.009587027, -0.0075696134, -0.013185036, -0.008178861, 0.03414085, 0.051636603, 0.020323578, -0.019047607, 0.0010554064, 0.059039537, -0.002047589, -0.036232986, 0.04432563, 0.017300332], [-0.01687672, -0.010194283, -0.03084965, 0.06303951, 0.0017559234, 0.02663047, -0.013501375, 0.037079144, -0.016231433, 0.028864153, -0.009666885, -0.014630626, 0.024992436, -0.013153913, -0.010585178, 0.018626438, -0.050605338, 0.005394966, -0.028864153, -0.013687516, -0.009375266, -0.03271105, -0.061252564, -0.014518943, 0.036284946, -0.0092884, -0.0017000813, 0.025352307, 0.014394849, 0.010225306, 0.03201613, 0.010945049, 0.011962616, -0.0013417612, 0.023031758, 0.016938766, 6.14166e-05, 0.02376391, -0.04042967, 0.006508705, -0.01244658, -0.010498312, 0.029832084, -0.023677044, -0.020798074, 0.010951254, -0.012291463, 0.009908868, 0.008878891, -0.027970681, 0.018564392, -0.03256214, -0.036086395, -0.025960365, 0.01994183, 0.031023381, 0.07539923, -0.059316706, 0.04176988, -0.020152789, -0.041645788, 0.011404195, 0.040305577, 0.010212897, -0.041347962, 0.0010951253, -0.020611934, 0.0067382785, 0.02948462, 0.035689298, -0.010032961, -0.00853143, 0.03412572, 0.015697831, -0.005826191, -0.04986078, 0.06606739, 0.0065025007, -0.01954473, -0.025302669, 0.025910728, -0.034026444, -0.0083639035, -0.017943924, 0.022746343, -0.037922982, 0.018390661, -0.102650166, -0.019656414, 0.005184007, 0.04718036, -0.004135417, 0.055147164, -0.0047217584, -0.08353976, -0.0035118468, -0.01703804, -0.01301741, -0.027077207, -0.00425951, -0.0009159653, -0.026506377, -0.06428044, -0.05137472, 0.05996199, 0.024036916, 0.02625819, 0.011993639, 0.0038158759, 0.057182297, 0.030254, 0.0044146273, -0.019110402, 0.023751501, -0.008767207, 0.006009229, -0.026779382, -0.05802613, -0.013439328, 0.0018645052, -0.08726256, -0.030204363, 0.052764565, 0.06874781, 0.0032326363, 0.019035947, -0.021654319, 0.018254157, -0.0062015736, -0.015400006, -0.037625156, -0.0113855805, 0.019532321, 0.02089735, 0.012769223, 0.021542635, 0.05748012, -0.055990998, -0.041645788, 0.03318261, -0.031941675, -0.0019792917, -0.026704926, 0.017484777, -0.041397598, -0.016020473, 0.006688641, -0.01799356, -0.05534571, -0.00021774536, 0.0023981074, -0.05072943, 0.012856089, 0.011273896, 0.038444173, -0.021381315, 0.010212897, 0.031966493, -0.053955864, 0.038617905, 0.031743124, -0.049885597, -0.021939736, 0.045269318, -0.029707989, -0.075349584, 0.08706401, 0.014692673, -0.046088334, 0.033207428, -0.008934733, -0.02299453, 0.039064642, -0.012105323, -0.034249812, 0.013166323, 0.036905415, -0.004526311, -0.021902507, -0.07872493, -0.0046379953, 0.022014191, 0.018142473, -0.04065304, 0.019966647, 0.04385465, 0.028467054, 0.043432735, -0.0004897816, -0.04291154, -0.0009663783, 0.0036018146, -0.04752782, -0.029832084, -0.0020770153, 0.0058665215, -0.014469305, -0.05177182, 0.038394537, 0.014518943, -0.03027882, -0.024756659, 0.00014231975, -0.012967773, 0.0011664791, 0.016578894, 0.041620966, 0.031321205, 0.0075386814, 0.01236592, 0.02299453, -0.0030433936, 0.0015465155, -0.03350525, 0.008823049, 0.04003257, -0.05211928, 0.009195331, -0.034299448, -0.025401944, 0.05867142, -0.0106099965, 0.06338697, -0.04519486, -0.039039824, 0.030254, 0.03142048, 0.013786791, 0.052268192, 0.05020824, -0.01607011, -0.047056265, -0.014357621, 0.033232246, -0.061054014, -0.021989372, -0.037426606, -0.01914763, 0.038270444, 0.014394849, 0.025190985, -0.004107496, -0.015064954, -0.024173418, -0.0034280836, 0.04159615, -0.008165354, 0.030924106, -0.032289136, -0.047577456, 0.027499124, -0.026953114, -0.025786635, 0.03889091, -0.0306511, 0.07862566, 0.04425175, -0.052615654, -0.036706865, 0.015908789, -0.015635785, 0.042961176, -0.030874468, 0.07639197, -0.0052832817, -0.015089773, 0.0068127345, -0.028715242, -0.074505754, 0.035292197, 0.0444503, -0.04368092, 0.023044167, 0.042985998, 0.03333152, -0.032040946, 0.055097524, 0.03603676, 0.0026819713, 0.025761815, 0.0014495675, 0.024458833, -0.014903632, 0.059415977, 0.046783257, 0.030973744, -0.007507658, -0.018154882, -0.051126532, 0.01667817, -0.021530226, -0.019122813, 0.035292197, -0.0054911384, 0.026332647, 0.013935703, 0.0125830835, 0.043978743, -0.03561484, 0.019867374, -0.007395974, -0.03124675, -0.027350213, -0.068598896, -0.0018334818, 0.04176988, 0.022944892, 0.10890447, -0.0012455888, -0.0337038, 0.08448287, -0.008084693, -0.021803232, -0.023838365, 0.04581533, -0.0046286886, 0.021418542, 0.012794042, 0.04214216, -0.022858027, -0.022944892, 0.0050878343, -0.104933485, 0.03082483, 0.04236553, -0.0010020552, -0.022585021, -0.041447237, -0.048843212, 0.0069120093, -0.06974056, -0.026233371, 0.0004114476, 0.023689454, -0.026134096, -0.1257812, -0.010765113, -0.092424855, 0.023056576, -0.021182764, -0.014891223, 0.021331677, -0.01705045, -0.026680108, 7.2650455e-06, 0.0011750106, -0.0055469805, -0.024582926, 0.039709926, -0.023267535, 0.0015379841, 0.058323957, 0.0800155, 0.04142242, 0.002807616, -0.012601697, -0.013389691, -0.03027882, -0.013613059, 0.010206692, 0.07817892, -0.060458366, 0.015350369, 0.061848212, 0.027275756, -0.014928451, -0.057926856, -0.014159071, 0.017943924, 0.01727382, -0.025277851, 0.0014573233, -0.029261252, 0.023031758, -0.038617905, -0.02262225, 0.06323806, 0.023664635, -0.04023112, 0.020338928, -0.008761003, -0.029286072, -0.024247874, 0.048396476, 0.042812265, 0.018911853, -0.028119592, 0.025761815, 0.04978632, -0.043010816, 0.012142551, 0.0076193423, 0.011373172, -0.01743514, 0.058274318, 0.04986078, -0.04718036, 0.0038375922, -0.0026773177, -0.0013402101, -0.0053825565, -0.004560437, -0.022820799, -0.03293442, 0.007222243, 0.011844727, -0.010262534, -0.03871718, -0.0031457709, 0.020016285, -0.009524178, -0.0007852793, -0.03447318, 0.026233371, -0.0110319145, 0.04420211, 0.014059796, 0.0417947, 0.004284329, 0.029732808, 0.009635862, -0.025203394, -0.0007174157, 0.011553107, -0.0018862216, 0.05916779, -0.04293636, 0.010020552, -0.031693485, -0.015933609, 0.008419746, 0.007011284, -0.027325394, -0.030700738, -0.013761972, -0.011726838, -0.026382282, -0.046932172, 0.001999457, 0.060408726, 0.011553107, 0.008022646, 0.018130064, 0.05187109, -0.072867714, 0.00048823046, -0.07013766, -0.006707255, 0.024086554, -0.04695699, -0.03127157, 0.0107464995, -0.04038003, -0.022262378, 0.033951987, -0.006378407, 0.005004071, 0.008692752, -0.0021390622, -0.09401325, 0.021219993, 0.009933687, 0.06442936, -0.0010811648, 0.030924106, -0.0031411173, -0.007005079, 0.047602277, 0.0057548373, 0.014630626, 0.0012564469, 0.005863419, -0.042663354, 0.02452088, -0.028318143, -0.04333346, -0.031073019, -0.009728932, 0.02739985, -0.0544026, -0.023999687, -0.006120913, 0.0073649506, 0.016789854, 0.034398723, -0.036657225, -0.00017305229, -0.0024911775, 0.05291348, -0.0022243764, -0.03732733, 0.028516691, 0.009269786, 0.022858027, -0.007861325, -0.039412104, -0.022200331, -0.064330086, -0.001881568, -0.00059952686, 0.02203901, 0.053608403, 0.008953348, 0.012918136, -0.007315313, -0.018911853, -0.011633768, 0.008891301, -0.003294683, -0.04057858, 0.024260284, -0.0053608404, -0.02453329, 0.0017109395, 0.002066157, -0.021219993, -0.0367565, 0.013513785, 0.040156662, 0.0058572143, -0.005109551, -0.022200331, -0.079668045, 0.005295691, -0.02511653, 0.010454879, 0.008959552, 0.008860278, 0.012707177, -0.032735873, -0.016913947, 0.01706286, -0.030502189, 0.017149724, 0.009784774, -0.0224237, 0.039263193, -0.009232558, -0.022585021, 0.049984872, -0.012241826, 0.023813548, 0.013488966, 0.014432076, -0.050878346, 0.04521968, 0.03951138, -0.007011284, -0.020152789, 0.03757552, -0.04387947, 0.05390623, 0.01783224, 0.011757861, -0.0020801176, -0.054104775, 0.004743475, -0.060756188, -0.009375266, -0.003487028, 0.018924262, 0.039015003, 0.08979408, 0.01667817, -0.023540542, -0.080710426, 0.048694298, 0.019569548, -0.028293323, 0.001962229, -0.02238647, 0.04556714, 0.022820799, -0.024806295, -0.039362464, 0.06844999, -0.020736028, -0.029186796, 0.0041974634, -0.028839335, -0.052764565, 0.0037041917, 0.02568736, -0.032686234, -0.013923293, 0.027350213, -0.014345211, -0.039213553, -0.024843523, 0.012856089, 0.0012386085, 0.010107418, -0.006614185, -0.032859966, -0.027871406, -0.003322604, -0.017162135, 0.029186796, -0.013613059, 0.030924106, 0.0019281032, -0.025637722, 0.0010889206, 0.015871562, -0.018341023, 0.0051498814, 0.024582926, -0.021530226, 0.021654319, -0.0011866443, -0.08418505, -0.0065397285, 0.04809865, -0.022324424, 0.006763097, -0.03772443, 0.011435218, 0.072222434, 0.020463021, 0.024223056, 0.06805289, -0.002880521, 0.08334121, -0.033678982, 0.06596812, 0.020934578, -0.014481714, 0.006347384, 0.0056462553, -0.018614028, -0.03598712, -0.016951175, 0.021406133, -0.029980995, -0.03581339, -0.0020304802, -0.0026090664, -0.010752704, -0.0031767942, 0.015883971, 0.019867374, 0.05206964, 0.009431108, 0.07048512, -0.016554076, -0.021790823, 0.034001626, 0.018961491, 0.060656913, -0.025538446, 0.0056214365, 0.01321596, 0.013650288, 0.041248687, 0.014097025, -0.04787528, 0.018365841, 0.028144412, -0.045542322, 0.017211773, -0.024247874, -0.010901616, 0.007718617, 0.026382282, 0.0017233489, -0.018514754, -0.0067879157, -0.03544111, -0.016740216, 0.02933571, 0.018092835, -0.030303638, -0.059564892, -0.021306857, -0.02548881, -0.039834023, -0.021443361, 0.04229107, -0.006285337, -0.01455617, -0.033306703, -0.039362464, -0.02950944, -0.002450847, -0.012359715, -0.003670066, -0.05187109, -0.012756814, -0.050456427, -0.0065707522, 0.032537322, -0.075746685, -0.009220148, 0.06095474, 0.018179702, -0.027548762, 0.01284368, -0.047800824, 0.029832084, 0.0039803, -0.016913947, -0.0059378752, -0.0077682547, -0.041546512, 0.01727382, 0.017112497, -0.0015131654, -0.0036452473, -0.045716055, -0.042266253, 0.03427463, 0.0046504047, -0.004554232, 0.05867142, 0.001872261, 0.012341101, -0.03504401, 0.0039958116, -0.044872217, 0.015189047, 0.031494938, -0.011639972, -0.010026757, -0.03161903, 0.014146661, -0.039263193, 0.050555702, 0.008202582, 0.057976495, -0.008550044, 0.0306511, -0.03392717, -0.014916042, -0.0070981495, -0.023652226, -0.00032807226, -0.012880907, 0.026233371, 0.03908946, 0.023031758, 0.011826113, 0.0014681815, -0.039337646, -0.048024192, -0.0021980065, -0.05425369, 0.033455614, -0.013302825, -0.008357699, 0.0040485514, 0.022163102, -0.017174544, -0.00034765576, -0.036632407, 0.013774381, 0.051225808, -0.0005467871, 0.008761003, -0.0003055803, -0.027350213, -0.02416101, 0.005947182, 0.0071043544, -0.0045294138, -0.016082522, 0.008779617, -0.034969553, -0.014258346, 0.009164306, -0.0023252023, 0.004420832, 0.06522355, -0.013724743, -0.01216737, 0.002053748, -0.0017838444, 0.00871757, -0.0056183343, -0.017522005, 0.017695736, 0.0051746997, -0.018130064, 0.0027300576, -0.030129908, 0.045170043, 0.022535384, 0.0041726446, -0.027846586, 0.018614028, -0.009666885, 0.016020473, 0.041819517, 0.016765036, -0.016442392, 0.03563966, 0.0017155929, 0.023478495, -0.020810483, 0.012930545, -0.014717492, -0.04499631, -0.047651913, -0.010014348, 0.02874006, 0.007780664, 0.0009733586, -0.008947143, -0.01702563, -0.019246906, 0.014307983, 0.006663822, -0.0018877727, 0.012347305, 0.025588084, 0.005587311, 0.02359018, 0.019408228, -0.010976072, -0.020028695, 0.031544574, -0.025712177, -0.0089223245, 0.018055608, -0.042638533, -0.0051064487, 0.052020006, 0.019296544, -0.0035242562, -0.037476245, -0.011162212, -0.019308953, -0.033951987, -0.033629347, 0.014878813, 0.006120913, 0.031494938, -0.044226933, 0.059465617, 0.015598556, 0.019966647, -0.003266762, -0.00058828085, -0.0023112418, -0.002540815, -0.034820642, 0.0056834836, 0.010597587, -0.013687516, 0.007886143, -0.0052274396, 0.05326094, 0.013923293, 0.021517817, 0.00073913205, -0.026804201, -0.035217743, -0.043358278, 0.015735058, -0.019197268, 0.02546399, 0.049364403, 0.022485746, 0.022634659, -0.018862216, -0.0026757666, -0.0029146466, -0.03851863, -0.044152476, -0.036359403, -0.058175042, -0.06447899, -0.025029663, 0.013675107, 0.041248687, 0.023813548, -0.024595337, 0.015797105, 0.004845852, 0.010436266, -0.011056733, 0.023329582, 0.0117392475, -0.063635156, -0.0053329193, 0.009865435, -0.02834296, 0.0096855, -0.015064954, 0.0029115444, 0.030874468, -0.015040135, 0.009195331, -0.021902507, -0.0012548957, 0.008512815, 0.036260128, -0.02146818, -0.022957303, 0.004616279, 0.013848837, 0.005159188, -0.0097661605, 0.03142048, 0.020239653, 0.030030632, -0.014034977, 0.0016457904, 0.01358824, 0.047254812, -0.036359403, -0.028516691, 0.029261252, 0.035738934, -0.026283009, 0.011156008, -0.00958002, -0.0039616856, -0.0012207701, -0.010727885, -0.017670918, 0.0245457, 0.019792916, 0.020574706, 0.04690735, -0.048843212, -0.0152510945, -0.021803232, -0.0067382785, 0.026357464, -0.016355526, 0.012769223, 0.030527007, 0.026977932, -0.015027726, -0.019706052, -0.025327489, -0.012198393, 0.031172292, -0.030502189, -0.032239497, 0.024223056, 0.08388722, -0.00234847, -0.017559234, 0.0014433628, -0.02128204, -0.024707021, -0.0005068445, -0.0013851939, -0.0013471904, -0.00021483691, 0.013377282, -0.0076255472, -0.0051498814, -0.05137472, -0.05802613, 0.0051715975, 0.023825957, 0.011435218, 0.032735873, 0.02011556, 0.00039865045, 0.010858184, 0.0052522584, 0.0022243764, -0.00832047, 0.043953925, -0.0371536, 0.020078331, 0.022944892, -0.0624935, -0.019780507, 0.014320392, 0.0059626936, 0.02262225, 0.006930623, -0.0011858688, 0.00026369875, -0.031817578, 0.024992436, 0.013265598, -0.031817578, 0.012769223, -0.014605808, 0.0034994374, -0.033306703, -0.025513628, 0.05192073, 0.027499124, -0.024570517, 0.04502113, -0.067755066, -0.00042230578, 0.022349244, 0.02107108, 0.00080971024, 0.018676076, -0.009617248, 0.0056958925, -0.0040423465, 0.012415557, -0.025836272, -0.047279634, 0.019234495, -0.053608403, 0.0337038, -0.0045201066, -0.011236669, -0.057777945, -0.008978167, 0.008723775, -0.00030267186, -0.0017745374, -0.057579394, -0.0112490775, 0.02717648, 0.01780742, -0.019197268, 0.0016550974, 0.10503276, -0.0052615656, -0.021021442, 0.046262067, -0.00851902], [0.008956671, 0.014922054, -0.02409075, 0.033717882, -0.00039898156, 0.04804397, -0.021936106, 0.029706577, -0.012985166, -0.012308975, -0.023093654, -0.005441048, -0.013053931, -0.026612142, -0.029087689, 0.05867966, -0.051253013, 0.033465743, -0.0071974266, -0.014750141, -0.006097183, -0.071378306, -0.065281115, 0.03105896, 0.009615671, -0.0125611145, -0.023128036, 0.0018982067, -0.010584114, 0.026887203, 0.0040943963, 0.008635766, 0.027024733, 0.00671034, 0.020492036, -0.023334332, -0.0046531134, -0.002131722, -0.032640558, 0.030738056, -0.06592293, 0.003226235, -0.011564018, -0.01910527, 0.016515115, -0.034451377, -0.04160296, 0.007833505, 0.0009233164, 0.010154331, 0.005383744, -0.03002748, 0.0054181265, -0.007569905, -0.022348698, 0.035368245, 0.043001186, -0.08829455, 0.007289114, -0.028102055, -0.028079133, 0.013466523, 0.021156767, -0.043505464, -0.0012220154, 0.016469272, -0.029660733, 0.009397914, 0.059046406, 0.009048358, -0.0029683656, 0.014509462, -0.024136594, 0.015987914, -0.000875324, -0.091686964, 0.08169308, 0.011432218, -0.01539195, -0.015953531, -0.0029855568, -0.032594714, 0.0075126006, 0.019930454, 0.027735308, -0.054691274, 0.054186996, -0.07247855, -0.015827462, -0.012148523, -0.006332131, 0.04476616, 0.0066644964, -0.037179064, -0.01724861, -0.00043121525, 0.002600185, 0.013936419, -0.016492194, -0.013455062, -0.018005028, -0.033878334, -0.049281742, -0.08801948, 0.0014927784, 0.025374368, 0.03768334, -0.035712074, -0.016217131, 0.06688564, 0.014761602, -0.0060112267, -0.043253325, 0.002918224, -0.027597776, 0.042428143, -0.019804385, -0.047035415, -0.04513291, 0.00072131853, -0.060467552, -0.019288646, 0.050565362, 0.025741115, -0.010383549, 0.039035726, 0.010521079, 0.03688108, 0.014360471, 0.0051287394, -0.0039941133, 0.061292738, 0.07197427, 0.00519464, 0.05478296, 0.0056301528, 0.041259136, 0.018681219, -0.043024108, -0.0116614355, -0.02580988, -0.0045728874, -0.015999375, 0.031288177, -0.027918682, -0.005527005, -0.034978576, -0.024526263, -0.010773218, -0.020297201, -0.023769846, -0.042542752, -0.032365497, -0.021569358, 0.04226769, -0.016629724, 0.036010057, 0.04199263, -0.020744177, 0.011804697, -0.0011253143, -0.073899694, 0.0163432, 0.023139497, -0.026818438, -0.100213856, 0.051161326, 0.032044593, -0.036376804, 0.003856583, 0.03461183, -0.014371932, 0.02013675, 0.0016618263, -0.0046960916, 0.03793548, 0.028102055, -0.0022162457, -0.01080187, -0.037179064, -0.04199263, 0.044697396, 0.04226769, -0.032227967, 0.007065627, 0.010544001, 0.0006504044, 0.01461261, 0.008217445, -0.050473675, -0.0038222005, 0.00986781, -0.010956592, -0.027712384, -0.0064180875, -0.023116576, -0.043665916, -0.060880143, -0.013936419, 0.0009254653, 0.0042691743, -0.043780524, -0.006177409, -0.024388732, -0.031815376, 0.024503341, 0.008910827, 0.00056194083, 0.01118581, 0.0031746612, 0.04582056, 0.03843976, 0.0018609589, -0.01883021, -0.014853288, -0.01040074, -0.04169465, 0.044147275, -0.011558288, -0.06615215, 0.07247855, -0.007438105, 0.02356355, -0.018635375, 0.037224907, 0.034680594, 0.031494472, 0.006481122, 0.0052462136, 0.016744332, 0.0014433534, -0.05304091, -0.05001524, 0.017982107, -0.06858185, -0.02580988, -0.04224477, 0.015036662, 0.051436387, -0.012446506, -0.0030228046, 0.059413154, -0.029454438, -0.027689463, 0.031242333, 0.028652176, 0.012205827, 0.0037677612, -0.0075126006, -0.005724705, 0.0019397524, -0.0065842704, 0.07371632, 0.021282837, -0.014394853, 0.06317232, 0.01315708, -0.038118854, -0.027941603, -0.022279933, -0.047172945, 0.046256073, 0.0042978264, 0.10232265, -0.028285429, -0.020641029, 0.056387484, -0.06496021, -0.06981962, -0.053361814, 0.020939011, -0.061751172, 0.03564331, 0.011426488, 0.015048123, -0.019185496, 0.022841515, 0.036697708, -0.01448654, 0.033626195, -0.003827931, 0.027735308, 0.016560959, 0.00816587, 0.03133402, 0.055012178, -0.030394228, -0.024342889, -0.044445258, 0.011065471, 0.008205984, -0.024113672, 0.02988995, 0.017134001, 0.056570858, -0.036628943, -0.008326323, 0.038921118, -0.03461183, -0.012790332, 0.004687496, 0.0020529286, -0.012847636, -0.074999936, 0.009707358, 0.018520767, -0.008876444, 0.1653116, 0.0028451611, -0.00559004, 0.047723066, 0.019391794, -0.0060914527, -0.04084654, 0.026291236, -0.024572106, 0.024297046, 0.026474612, 0.07380801, -0.021030698, -0.04002136, -0.026360003, -0.108282305, 0.021248454, 0.039264943, -0.032846857, -0.010211635, -0.0013273121, -0.042038474, 0.005767683, -0.049923554, 0.011827619, -0.00645247, -0.014922054, -0.013684279, -0.07697121, -0.015575323, -0.074999936, 0.008022609, -0.0057734135, -0.027735308, -0.005845044, -0.047677223, -0.028285429, -0.026795516, 0.024274124, 0.01197661, -0.01092794, 0.061934546, -0.045178752, 0.0013867654, 0.05950484, 0.040342264, 0.01830301, -0.005635883, 0.024136594, 0.0031689308, -0.05290338, -0.016962089, 0.010968053, 0.066656426, -0.037316594, 0.03713322, 0.05991743, -0.0013781697, -0.071653366, -0.037316594, -0.008922288, -0.049694333, 0.012538193, -0.050886266, 0.030462993, -0.020595184, -0.012056836, -0.031654924, -9.168697e-05, 0.012068297, -0.017684123, -0.033717882, 0.0012922132, -0.010234557, 0.015346106, -0.011386375, 0.0038995612, -0.027689463, 0.03186122, -0.045109987, 0.007844966, 0.04433065, 0.008658688, 0.019770002, 0.029935794, 0.007610018, -0.040479794, 0.020939011, 0.026405847, -0.036651865, -0.0019354546, -0.0045872135, 0.03461183, -0.00841801, -0.027781151, -0.00091113924, -0.02028574, 0.060375866, -0.010945131, -0.024732558, 0.0073234965, -0.014406314, 0.038508527, 0.009535444, 0.017993568, 0.0029655003, 0.004335074, 0.027024733, 0.012652801, -0.032823935, 0.023494786, 0.015346106, -0.019380333, 0.03225089, -0.08453538, -0.04763138, 0.07142415, -0.022016332, 0.031654924, -0.07394554, 0.030371306, 0.04570595, -0.060788456, -0.03779795, 0.005512679, -0.004974018, -0.024732558, 0.00841801, -0.046164386, -0.048273187, -0.04886915, -0.005263405, 0.03754581, 0.030715134, -0.027597776, 0.021706888, 0.007214618, -0.016767254, 0.024870088, -0.0079194615, 0.010905018, 0.018944819, 0.0018609589, -0.00017630043, -0.03672063, -0.023322871, -0.03277809, 0.0766503, -0.031838298, 0.031517394, 0.002999883, 0.0069567487, -0.08018025, -0.010973783, 0.021340141, 0.05592905, -0.014807445, 0.030233776, -0.023930298, -0.022417463, 0.015712854, -0.0076042875, 0.0059023486, -0.016217131, -0.006630114, -0.06876522, -0.001263561, -0.06239298, -0.03724783, -0.017202767, -0.021787114, 0.062026232, -0.064593464, -0.02223409, -0.06491437, -0.030073324, 0.04279489, 0.0012735892, 0.009546905, -0.018543689, 0.049281742, 0.03683524, 0.018257167, 0.021030698, 0.042886578, 0.03619343, -0.044514023, 0.010503888, -0.009787584, -0.035139028, -0.042565674, 0.010521079, 0.014154175, 0.012079758, 0.03474936, 0.01711108, 0.02238308, 0.029935794, -0.025443133, -0.0481815, -0.003607309, 0.0015973588, -0.06436425, 0.0075928266, -0.029683655, -0.038600214, -0.008137218, -0.03160908, -0.03330529, -0.018257167, 0.026680907, 0.039287865, 0.0037620307, 0.008354975, -0.04359715, -0.0339471, -0.016962089, -0.022990506, 0.019689776, 0.028881393, 0.016400507, -0.05409531, -0.05620411, -0.048914995, -0.009162966, 0.0025127959, 0.015770158, 0.01104828, -0.010607036, 0.045201674, 0.033098996, -0.051711448, 0.0402735, 0.0015328914, 0.076741986, 0.018578071, 0.0024239742, -0.019025045, 0.041029915, 0.008246097, 0.03633096, -0.0047619916, 0.030852664, -0.06198039, 0.040365186, -0.010647149, 0.06170533, 0.01066434, -0.011632783, -0.024297046, -0.02354063, 0.0069395574, 0.021695428, -0.008956671, 0.009386453, 0.07334957, 0.04721879, -0.019414715, -0.030485915, 0.04698957, 0.00078506966, -0.031975828, -0.0019025045, -0.021007776, 0.025076386, 0.0055441963, -0.010171522, -0.013019549, 0.043253325, 0.029958716, -0.056158267, -0.00020253507, -0.015254418, -0.012320436, -0.004578618, 0.016148366, -0.022520611, -0.0068536005, 0.016377585, -0.033053152, -0.027139341, -0.054828804, -0.0036416915, -0.029912872, 0.0145323835, 0.014177097, -0.010119949, 0.029523203, 0.04886915, 0.001974135, 0.0113004185, 0.016652646, 0.004157431, 0.01830301, 0.012515271, 0.002776396, -0.012320436, -0.017134001, -0.004294961, -0.0017735697, -0.01856661, -0.0049797483, 0.01329461, -0.03594129, 0.021500593, 0.04499538, -0.011220193, 0.03397002, -0.01303101, 0.011369184, 0.05262832, 0.02869802, 0.07004884, 0.021580819, 0.007598557, 0.06330985, -0.006750453, 0.04096115, 0.026222471, -0.02711642, -0.011988071, -0.008435201, -0.027735308, -0.022520611, 0.004753396, -0.027070576, -0.025580663, 0.0037992785, 0.034932733, -0.0011238817, 0.019701237, -0.03422216, 0.0011167186, 0.03866898, 0.034841046, 0.015357567, 0.017924802, -0.029133532, -0.039723378, 0.04357423, 0.014016645, 0.0056158267, 0.020675411, -0.012457967, 0.024388732, -0.027574854, 0.024388732, 0.014073949, -0.01829155, -0.011311879, 0.025718194, -0.020067984, 0.004524179, -0.037752107, -0.014922054, 0.00519464, 0.021145307, -0.03328237, -0.02277275, -0.009237462, -0.020709794, -0.0072490005, 0.03367204, 0.072432704, -0.055699833, -0.03580376, -0.03935663, -0.0545079, 0.008607114, -0.010882096, 0.018268628, -0.035345323, -0.016801637, -0.013374836, -0.03158616, -0.02739148, -0.037087377, -0.024824245, 0.0076902444, -0.019655393, -0.021764193, -0.0052318876, 0.026360003, -0.012320436, -0.03254887, -0.021821497, 0.039585847, -0.0075355223, 0.023231184, 0.010085566, 0.0026976024, 0.01343214, -0.011311879, -0.011008166, -0.008905097, -0.00080082833, 0.0031030306, 0.0133519145, 0.0018222785, 0.0046387874, 0.0069567487, -0.03314484, -0.0024053503, 0.021363063, 0.0050886264, 0.029729499, 0.05423284, 0.019666854, -0.00017253983, -0.004604405, -0.013363375, -0.06097183, 0.00552414, -0.023861533, 0.0013989425, 0.0012563979, -0.04400974, 0.038256384, -0.07367048, 0.01934595, -0.014818906, 0.033190683, -0.0033609003, -0.021168228, 0.02318534, 0.0057590874, 0.011758854, -0.011203001, 0.00960994, 0.014326088, 0.00064789737, 0.020377427, 0.0069223656, -0.0014648425, -0.038233463, -0.022807132, -0.046691585, -0.012606958, -0.015827462, 0.04566011, -0.025466055, 0.01382181, 0.014624071, 0.008326323, 0.0016475002, 0.014108332, -0.014887671, 0.020228436, 0.023769846, 0.04676035, -0.0011031087, 0.00015346822, -0.009162966, -0.025328524, -0.032296732, 0.0041001267, -0.009168697, 0.043688837, 0.013443601, 0.03672063, -0.023414558, -0.008612844, 0.027689463, 0.009701627, 0.05620411, -0.018738523, 0.0035757916, 0.041625883, 0.016790176, -0.023930298, -0.015426332, -0.03976922, -0.022463307, 0.018257167, -0.028652176, 0.008200253, -0.03754581, 0.042886578, 0.012400662, 0.0035041613, 0.0061143744, -0.012962244, -0.0014727219, 0.02608494, 0.02911061, 0.02367816, -0.009713088, 0.06253051, 0.0056015006, 0.05606658, -0.019552246, 0.05359103, 0.013924958, -0.004360861, -0.013237306, 0.012778871, 0.009827697, 0.019025045, -0.03660602, -0.0132716885, -0.019254263, -0.055149708, 0.01118008, 0.035116106, 0.020388888, 0.023861533, 0.027735308, -0.010652879, 0.036101744, 0.024388732, -0.021569358, 0.0017348893, 0.014761602, 0.0052548093, -0.032915622, 0.03188414, -0.0049539614, 0.03910449, 0.034703515, 0.013008088, -0.027208107, -0.02766654, -0.007340688, -0.043620072, -0.018749984, -0.024847167, -0.0018294415, 0.029362751, -0.0067848354, -0.033236526, 0.067573294, 0.013145618, -0.007753279, -0.0050084004, -0.0126413405, -0.026795516, -0.032044593, -0.012331896, 0.035734996, -0.008887906, 0.014864749, 0.004183218, 0.04054856, 0.029293986, 0.021798575, 0.010578384, -0.008933749, -0.012584036, -0.02514515, -0.05148223, 0.01815402, -0.020641029, -0.021970488, 0.017684123, 0.033901256, 0.018910436, -0.019403255, -0.009432296, -0.027322715, -0.007082818, -0.04263444, -0.018073794, -0.07266192, -0.023024889, -0.0060456092, 0.019036505, 0.014853288, 0.012412122, -0.01698501, 0.02117969, -0.0037964133, 0.023746924, -0.0039969785, -0.010102757, 0.018486384, -0.02686428, -0.032090437, 0.00026700247, -0.03188414, 0.0027491762, -0.010320514, -0.049831867, 0.022406003, -0.010062644, 0.00631494, 0.041786335, 0.025099307, -0.0040628784, -0.0024511938, -0.009930844, -0.0032090438, 0.006991131, 0.026910124, 0.0015715719, -0.01473868, 0.013798888, -0.026520455, 0.031356942, 0.001684748, -0.001988461, 0.03353451, -0.006137296, -0.053911936, -0.007776201, 0.01790188, 0.025122229, -0.08008856, 0.04043395, -0.024274124, -0.011953688, 0.00075785007, 0.016538037, -0.041786335, 0.022818593, 0.023494786, -0.027299793, 0.028124977, -0.0031488743, -0.0059653833, -0.0012714403, 0.01383327, 0.024388732, -0.040181812, 0.026405847, -0.0052949223, 0.044582788, -0.0057189744, -0.032594714, -0.026291236, -0.015735775, 0.001494211, -0.021088002, 0.013970802, 0.035689153, 0.07330373, -0.0049682874, -0.008177332, 0.01593061, -0.0584046, -0.0028809763, 0.046301916, -0.008074183, -0.029523203, 0.0063665137, 0.03435969, -0.03369496, 0.014314627, -0.0015486501, -0.0026890067, 0.0107101835, 0.055745676, 0.0088993665, 0.016824558, 0.010521079, 0.001640337, -0.011781775, 0.0020715524, 0.010435123, 0.010131409, 0.011082662, 0.0014010915, -0.021832958, 0.019357411, -0.023093654, 0.015999375, 0.022165325, -0.016916245, 0.019036505, 0.016091062, 0.021890262, 0.011770315, -0.005948192, -0.0040084394, 0.04373468, -0.049144212, -0.020446192, 0.006355053, -0.032205045, 0.0050227265, -0.01513981, 0.034841046, 0.016629724, 0.008320592, 0.03843976, -0.040594403, 0.018807288, 0.018406158, -0.018131098, 0.0026173764, 0.012159984, 0.0065670786, -0.028652176, -0.027345637, -0.006899444, -0.041878022, -0.011122775, 0.03241134, -0.073395416, 0.0113806445, 0.03408463, -0.009340609, -0.06019249, -0.011535366, 0.016939167, 0.008148679, -0.009821966, 0.006876522, -0.026016176, 0.061063517, 0.031792454, -0.02856049, 0.0026947372, 0.16201086, -0.011288958, 0.023242645, -0.015036662, 0.015449254], [0.016614608, -0.0042083054, -0.025820656, 0.054458994, 0.0022028324, 0.02442396, -0.023318749, 0.018011304, 0.00033494135, 0.05402177, -0.056402225, -0.005662691, 0.019578032, -0.04622456, 0.021156907, 0.043334007, -0.033739313, -0.0017853417, -0.061114553, 0.0011014162, -0.0100501375, -0.05334164, -0.049795244, -0.006333712, 0.031893246, -0.010214098, -0.023585944, -0.012643134, -0.022687199, 0.019517306, 0.048459273, 0.01748906, 0.026597947, 0.019262258, 0.056645125, -0.036386963, -0.01779269, -0.011398253, -0.037650064, 0.0074389237, -0.04994099, 0.008197998, 0.02036747, -0.051252667, -0.018715724, 0.02165486, -0.01403983, -0.002128443, -0.026112141, -0.0026840852, -0.008623079, 0.005632328, -0.03891316, -0.009552185, -0.0015439562, 0.03143173, 0.055770673, -0.0020176184, 0.08054684, -0.010244461, -0.055624932, 0.041245036, 0.036969934, -0.011033897, -0.025553461, 0.0013541877, -0.018800741, 0.0071656574, 0.048337825, 0.024691153, -0.023974588, 0.004985597, -0.0032609813, -0.01272815, -0.023755975, -0.037188545, 0.06767295, 0.033982217, -0.013991249, 0.013371845, 0.0287355, -0.025626333, 0.0048459275, -0.026403625, 0.04148794, -0.016772496, 0.045568723, -0.10133939, -0.03213615, 0.0053803152, 0.01774411, 0.038524516, -0.0005514672, 0.03816016, -0.05955997, 0.03259767, -0.025504882, 0.009388225, -0.047050435, 0.002076826, 0.005043287, -0.029731404, -0.08865982, -0.024387525, 0.017003255, 0.005899522, 0.029609952, 0.02006384, -0.008817402, 0.00041331572, -0.011131059, -0.006424801, 0.014792832, 0.024035314, -0.0126188435, 0.041900877, -0.01265528, -0.06033726, -0.037188545, 0.005541239, -0.077000454, -0.028516887, 0.055916417, 0.051544152, 0.024970494, 0.036508415, 0.001552306, 0.050038148, 0.009952976, -0.023938153, -0.042313814, 0.035026703, 0.03152889, 0.019954534, 0.027593853, -0.014428476, 0.022444295, -0.023670958, -0.042046618, -0.013274684, -0.030290082, 0.029367048, -0.02878408, 0.03087305, -0.04474285, -0.0032427635, -0.016845366, -0.02735095, -0.047924887, -0.0020236908, -0.030921632, -0.044451363, -0.018460676, -0.01204802, 0.03077589, -0.00635193, 0.002570224, 0.016942529, -0.009564331, 0.03820874, -0.011137132, -0.04615169, 0.003424941, 0.04554443, 0.0021815782, -0.08312162, 0.0562079, 0.010863865, -0.045665883, 0.04160939, 0.019833082, -0.031043084, 0.019565888, 0.0057082353, -0.015788736, 0.032306183, 0.02871121, 0.023476636, -0.0064673093, -0.07782632, -0.034662347, 0.05300157, 0.053730283, -0.031237407, 0.014877847, 0.044985753, 0.015642993, 0.0013724056, 0.020221727, -0.03135886, -0.015521542, 0.00047859605, -0.05280725, -0.0048064557, -0.046273142, -0.007949022, -0.0052436823, -0.053293057, 0.0040322, 0.0058934493, 0.012691715, -0.02404746, 0.033204928, -0.018569984, -0.022164956, 0.019250114, 0.03687277, 0.0016228999, 0.0040838174, -0.016080221, 0.028856952, 0.039739035, -0.009625057, -0.020233873, -0.0058813044, 0.018788597, -0.05334164, 0.016444575, -0.036386963, -0.033739313, 0.06271772, -0.052078538, 0.012485247, -0.021606278, -0.014027685, 0.036386963, 0.029269887, 0.0034097598, 0.044961464, 0.0547019, -0.005653582, -0.04398985, -0.00016339065, 0.016578173, -0.088028274, 0.01204802, -0.035561092, -0.0053408435, 0.027788175, 0.009716146, 0.0076271743, 0.045908786, -0.052224282, -0.019116515, 0.003010487, 0.034540895, 0.009248556, 0.011446834, -0.024812605, -0.0036860625, -0.025966398, 0.0016760351, -0.0016001277, 0.025602043, 0.020598227, 0.10639179, 0.03949613, -0.052029956, -0.0018460676, 0.018533546, -0.024764026, 0.04933373, -0.03281628, 0.07350264, -0.0030378136, 0.016978964, 0.008732386, -0.057082355, -0.07253102, -0.023379475, -0.011714027, -0.027982498, 0.023804557, 0.021290503, 0.04610311, -0.03733429, 0.03675132, 0.044912882, -0.030824471, 0.0627663, 0.019918097, 0.03888887, -0.00836803, -0.0043904833, 0.025942108, 0.04622456, -0.04343117, -0.021837037, -0.027763885, -0.007226383, 0.0010323405, -0.05484764, 0.056499384, 0.010378058, 0.057179514, 0.005413715, 0.017476916, -0.0003717564, -0.046054527, 0.028638339, -0.041075002, -0.0037801878, -0.02339162, -0.059997197, -0.03475951, 0.02807966, 0.0015758373, 0.09274061, 0.009588621, -0.02013671, 0.06820734, -0.00073516305, -0.031237407, -0.027472401, 0.04345546, -0.013663329, -0.011392181, 0.018667145, 0.07981814, -0.032524798, -0.012460956, -0.042726748, -0.10804354, 0.027472401, 0.024897622, -0.02548059, -0.020646809, 0.00075603754, -0.04894508, 0.015922332, -0.06344643, -0.02280865, 0.0017322066, 0.015193623, -0.047341917, -0.09891036, -0.028541178, -0.054118928, 0.0057416344, 0.024970494, -0.00082587235, 0.013153232, -0.050038148, -0.048410695, -0.00449979, -0.045252945, 0.002846527, 0.004915762, 0.041196454, -0.05800539, 0.0014354086, 0.029755695, 0.029051274, 0.015436525, 0.001644154, -0.007451069, -0.019262258, -0.011513632, -0.044014137, -0.029124146, 0.07311399, -0.07539729, -0.0026370226, 0.058636937, 0.011088551, -0.0026597949, -0.053730283, -0.00054539455, 0.014889993, 0.011847625, -0.021764165, 0.024241783, -0.030387245, -0.022286408, -0.03609548, -0.011987294, 0.069324695, 0.0023182116, -0.022577893, -0.00063382665, -0.014707815, -0.065681145, -0.022723636, 0.035682544, 0.026816562, 0.0046728584, -0.053633124, 0.02737524, 0.022602184, -0.016918238, 0.001818741, -0.018242063, 0.0019508197, 0.009643274, 0.031893246, 0.021254068, -0.018569984, 0.03080018, 0.016189527, -0.0059784655, -0.0084409015, 0.026549367, -0.022687199, -0.03813587, 0.0016608536, -0.00610599, -0.0025337886, -0.00024404224, -0.026889432, 0.049212277, -0.024666864, 0.03203899, -0.0073235445, 0.06334927, 0.007608956, 0.05028105, 0.011465051, -0.003412796, 0.025942108, 0.0012972573, 0.046540335, -0.03813587, -0.0030332592, 0.01504788, -0.02871121, 0.027132336, -0.027399529, 0.022723636, -0.01774411, -0.03347212, -0.028832661, -0.007979385, -0.02742382, -0.0010900301, -0.023403766, -0.035682544, -0.057713903, -0.03267054, 0.005012924, 0.034540895, 0.0020434267, -0.025577752, -0.0011985776, 0.07010199, -0.04697756, -0.03293773, -0.05339022, -0.0007268132, 0.06631269, -0.029318469, -0.019019354, -0.003965402, -0.059025582, -0.010973171, 0.036702737, -0.001223627, 0.009291064, 0.023197297, -0.0023303567, -0.07724336, -0.0026355044, 0.016991109, 0.051884215, 0.017185433, 0.014003394, 0.015983058, -0.027205206, 0.020027405, -0.0064976723, 0.014088411, -0.0166389, 0.0059754294, -0.0041749063, 0.030848762, -0.024302509, -0.008295159, -0.009691855, 0.008957071, 0.07102502, -0.02674369, -0.039739035, -0.012764586, 0.014258443, 0.026500786, 0.04432991, -0.018193481, 0.019165097, -0.00088356197, 0.05951139, 0.034395155, -0.024290362, 0.07296825, -0.017294738, 0.001160624, -0.035779703, -0.042605296, -0.029731404, -0.036362674, -0.0022468586, -0.030411534, 0.038645968, 0.07996388, 0.06004578, 0.02182489, -0.004472463, -0.01000763, -0.020877568, -0.0075178673, 0.028929822, -0.032524798, 0.023464492, -0.049795244, -0.026233593, -0.009206047, -0.021788456, -0.0048459275, -0.016699625, 0.019432291, 0.015230058, 0.04296965, 0.015108606, -0.046928983, -0.056547966, -0.027132336, -0.021922052, 0.004554443, 0.007329617, 0.017987015, 0.04279962, -0.0036951716, -0.04075923, -0.0012342541, -0.02531056, -0.0046698223, -0.009224266, -0.03415225, 0.034662347, 0.018351369, -0.043771233, 0.025553461, -0.052758668, 0.043285426, 0.0040838174, 0.022930102, -0.019590179, 0.0413422, 0.050475374, 0.0052406457, -0.015497251, 0.03752861, -0.043722656, 0.07019915, 0.012716006, 0.029197017, 0.0032306183, -0.01068776, -0.03816016, -0.034419443, 0.0061211716, 0.0010710532, -0.008598789, 0.026185011, 0.055867836, 0.011428616, -0.0030150414, -0.057908226, 0.06694424, 0.024253927, -0.029974308, 0.0047882376, -0.006661632, 0.04671037, 0.003670881, -0.0067102127, -0.0486536, 0.055770673, -0.019128662, -0.024533266, 0.010183735, -0.0011758053, -0.025772076, -0.011428616, -0.01711256, -0.04962521, 0.0023789376, 0.0058570136, -0.020343179, -0.04797347, -0.021314794, -0.012849602, -0.029221307, 0.03361786, -0.012643134, -0.014537782, -1.5442409e-05, 0.0068316646, 0.020428196, -0.0027584743, 0.0247033, 0.043601204, 0.01406412, -0.02374383, 0.013274684, 0.009716146, -0.04680753, 0.0019128661, 0.02006384, -0.053293057, 0.023197297, 0.021776311, -0.035099573, 0.04277533, 0.056547966, -0.018497111, 0.0044542453, 0.0014338905, -0.006722358, 0.06223191, 0.024970494, 0.06320353, 0.058977, -0.0055655297, 0.076563224, -0.04875076, 0.023816701, -0.013286829, -0.018509258, 0.004739657, -0.028468305, -0.019748066, -0.017622659, -0.03199041, 0.0150964605, -0.02266291, 0.03463806, 0.03619264, 0.025334848, 0.038281612, -0.01403983, 0.012224126, 0.039714742, 0.04671037, 0.03429799, 0.10095075, -0.028152531, -0.011240366, 0.033909347, 0.02669511, 0.062183328, 0.0018521402, -0.048896503, 0.029731404, -0.011963004, 0.047074724, 0.009485387, -0.0073235445, -0.002509498, 0.03944755, -0.025067655, 0.029124146, -0.032549087, -0.046394594, 0.025091944, 0.03152889, 0.012497392, -0.0039016395, -0.0027812466, 0.01535151, 0.016954673, 0.01731903, 0.07515439, -0.023549506, -0.033690732, -0.025966398, -0.04697756, -0.03271912, 0.003834841, 0.016165236, -0.0147563955, -0.03558538, -0.004472463, -0.019250114, -0.019140806, 0.0029376158, 0.008289087, 0.003698208, -0.04544727, -0.009649347, -0.019432291, 0.00477002, 0.033034895, -0.035949737, -0.016966818, 0.038427353, -0.007183875, 0.0013405244, 0.0065583983, -0.020416051, -0.0042204508, -0.003330816, -0.0027736558, -0.011082478, -0.022590037, -0.03497812, 0.025213396, 0.012394158, -0.0034036872, -0.016347414, -0.05538203, -0.009254629, 0.023585944, -0.0060270466, 0.03004718, 0.06951902, 0.026476495, 0.003197219, -0.008125126, 0.008082618, -0.061697524, 0.03740716, -0.0040261275, 0.0071049314, 0.0065037445, -0.025723495, 0.034613766, -0.0441113, 0.0630092, -0.0033125982, 0.040370584, -0.005189029, 0.019954534, -0.011428616, -0.007305327, 0.0065280353, -0.011592576, -0.0025778147, -0.009606838, -0.010116937, 0.030265793, 0.01019588, -0.005559457, -0.0068195197, -0.036338385, -0.055236287, 0.008981362, -0.005598929, 0.016602464, 0.009145321, 0.0054501505, -0.001254749, -0.01938371, 0.002363756, 0.012199835, -0.022626473, 0.0041263252, 0.057082355, 0.009060306, 0.004642496, -0.0004182497, -0.033083476, -0.041585103, -0.007669682, -0.021096181, 0.001706398, 0.023233732, -0.014622798, -0.0028951077, -0.037771516, 0.023913862, 0.006424801, -0.0057719974, 0.061940428, -0.01174439, -0.04160939, 0.0031015757, -0.0071595847, 0.010754558, -0.021411955, -0.016553883, -0.00060460233, 0.017816981, 0.012321287, 0.00075717614, -0.018740015, 0.05008673, 0.021642713, -0.014634944, -0.03539106, 0.023160862, 0.010293041, 0.013043925, 0.008756676, 0.023549506, -0.013578313, 0.063737914, -0.010705978, 0.036338385, -0.013311119, 0.046418883, 0.023403766, -0.018387806, -0.058442615, 0.0036921352, 0.022298554, 0.0040564905, -0.023537362, -0.027083755, -0.040564906, -0.060288683, 0.032330472, 0.025261978, 0.015934478, -0.005929885, 0.028905531, -0.0006569784, 0.03998194, 0.0031607836, -0.009552185, -0.009691855, 0.016395995, 0.0057902155, -0.040613487, -0.00013445095, -0.0053317347, 0.018958628, 0.027496692, 0.003792333, -0.03531819, -0.03429799, -0.016857512, -0.058928423, -0.031626053, -0.045763046, 0.001243363, -0.015898043, 0.044694267, -0.02379241, 0.064612366, -0.018484967, 0.0041991966, 0.012412376, -0.031893246, 0.026427915, 0.019189388, -0.039253227, 0.03599832, -0.017549787, 0.018849323, -0.019748066, 0.023002975, 0.057373837, 0.037139967, -0.015837317, -0.0014870256, -0.0028647447, -0.010906373, -0.05883126, 0.021436246, -0.0033551063, 0.008805256, 0.031188827, 0.03675132, 0.0015712829, -0.024788316, -0.0085077, -0.00096022844, -0.015266493, -0.038937453, -0.019335128, -0.048313532, -0.034492318, 0.017355464, 0.009005652, 0.03599832, 0.008957071, -0.03288915, -0.0012957391, -0.026476495, 0.015521542, -0.007463214, 0.013663329, 0.006825592, -0.047876306, -0.010463074, -0.03349641, -0.04357691, 0.010274824, 0.007857933, 0.0038560953, 0.024994783, -0.0017929324, -0.010286969, 0.003525139, -0.0013959368, 0.00575378, -0.010317332, -0.017901998, -0.020452486, -0.029002694, 0.035075285, 0.004460318, 0.00267194, -0.010857793, 0.007675755, 0.008125126, -0.022322845, 0.01406412, 0.028419726, 0.027739596, -0.03211186, 0.007894368, -0.010627034, 0.04933373, -0.03879171, 0.051544152, -0.01999097, -0.047609113, 0.0020085094, 0.0008197998, -0.029537082, 0.023185153, 0.03743145, 0.034200832, 0.045641594, -0.026330754, 0.009789016, 0.013991249, 0.026257882, -0.005444078, -0.017306883, 0.024266073, 0.014319169, 0.024691153, 0.0012904255, 0.0027478472, -0.0150357345, -0.013262538, 0.024715444, -0.023027264, -0.01908008, 0.043674074, 0.08890273, 0.0027417748, -0.011993367, 0.0038166232, -0.02599069, -0.0020616446, 0.036508415, 0.01706398, -0.031140245, -0.023962444, 0.03626551, 0.008094763, -0.0032336547, -0.0107302675, 0.01272815, -0.0049673794, 0.029731404, 0.012114818, 0.012382013, -0.018387806, -0.019493017, -0.014088411, 0.0014703261, 0.0017686421, -0.030435825, 0.014270589, -0.006136353, 0.0024244818, 0.022869376, -0.0494066, 0.003974511, 0.057665322, 0.011750463, 0.037164256, 0.0117201, 0.015667284, 0.0015682465, -0.03259767, 0.020525357, 0.039787617, -0.061989006, -0.010171589, -0.020537501, -0.015278638, -0.021363374, -0.04012768, 0.04398985, 0.033666443, -0.01595877, 0.054944802, -0.03998194, 0.009436806, 0.04622456, 0.0065948335, 0.014549928, -0.008465191, 0.024496831, 0.0131167965, 0.0017048799, -0.013043925, -0.048386402, -0.0617461, 0.015825171, -0.069178954, 0.025869237, -0.02250502, 0.018970774, -0.041730843, -0.005231537, -0.006011865, -0.015873753, -0.020598227, 0.003968438, -0.011902278, 0.03607119, -0.0004026887, -0.010274824, 0.017379755, 0.089194216, -0.017306883, 0.0067466483, 0.028832661, -0.00021007369], [0.027191086, -0.006151197, -0.03669748, 0.03627808, -0.005297835, 0.024628088, -0.046483476, 0.013304293, -0.0039406107, 0.07269596, -0.028612386, 0.0016455617, -0.016741041, -0.00995492, 0.025443587, 0.01879144, -0.0006007028, 0.011912119, -0.029288085, -0.017486641, -0.006238572, -0.08471876, -0.06631177, -0.013432443, 0.0051463847, -0.012535393, -0.030965684, -0.009494745, 0.026981387, 0.00973357, 0.03783918, 0.031944282, 0.029218186, -0.009797645, 0.023171838, -0.035951883, -0.01073547, 0.025490187, 0.007461821, 0.010636444, -0.051586173, 0.021121439, 0.004263898, -0.016076991, -0.049209576, 0.0070715463, 0.028169686, -0.046669878, -0.008259846, -0.055081174, -0.030476384, 0.005227935, -0.006337597, -0.013269343, -0.02113309, 0.0023751426, 0.029497785, -0.010432569, 0.06766316, -0.012302394, -0.035788782, 0.01866329, 0.00118029, -0.00865012, -0.031315185, -0.01980499, -0.022938838, 0.0014635305, 0.062770166, 0.053543374, -0.024371788, 0.006553122, -0.00826567, 0.028658986, 0.022612639, -0.06887477, 0.07931316, 0.032992784, -0.010333545, 0.030476384, 0.071484365, -0.025233887, 0.028006585, -0.002447955, -0.0011788338, -0.016391542, 0.01873319, -0.11547474, -0.032247182, 0.02034089, 0.008807396, 0.0071064965, 0.033155885, 0.012348994, -0.037186783, 0.011574269, -0.01918754, 0.01943219, -0.015133343, 0.03383158, 0.005877422, -0.034507282, -0.061931368, -0.06412157, 0.01911764, 0.014178043, 0.0036085856, 0.025490187, -0.02121464, -0.013141193, -0.013490694, -0.009657845, -0.033738382, -0.0146556925, -0.035532482, 0.007741421, -0.04019248, -0.09338635, -0.01830214, -0.016845891, -0.051120173, -0.026981387, 0.08821376, 0.023113588, 0.007817146, 0.027587187, 0.023008738, 0.05498797, 0.018511841, -0.031128785, -0.023101939, 0.043128278, 0.027354186, 0.008714195, 0.033482082, -0.0011882994, 0.05792377, -0.011900469, -0.032992784, -0.019665191, -0.06398177, 0.007659871, -0.004983285, 0.0028790047, -0.042289477, -0.014842092, -0.032713182, 0.005693935, -0.051632773, -0.04559808, -0.03837508, -0.030942384, -0.030010385, 0.007799671, 0.028425986, -0.008568571, 0.047392175, 0.010933519, -0.0016848803, 0.050374575, 0.00973357, -0.070039764, -0.007986071, 0.048137777, 0.04303508, -0.015214892, 0.023206789, -0.024744587, -0.020049639, 0.029264785, 0.02136609, -0.01653134, 0.0042901104, 0.02241459, -0.008172471, 0.008341396, 0.038771182, 0.02003799, -0.004077498, -0.048463974, -0.03627808, 0.05964797, 0.03383158, -0.025769787, 0.03837508, 0.04012258, 0.051819175, 0.030662784, 0.034507282, -0.02051564, -0.03536938, -1.7224698e-05, -0.02142434, 0.027121186, -0.024255287, -0.014317843, -0.0009130683, -0.02226314, -0.015902242, -0.0063201217, 0.025606686, -0.048044577, 0.04478258, -0.01910599, 0.02177384, 0.01809244, 0.05806357, -0.0071880464, 0.002436305, 0.03700038, -0.025793087, 0.029917184, 0.00446486, -0.044712678, -0.016356591, 0.012057744, -0.030639485, 0.015051792, -0.053217173, -0.02052729, 0.046763077, -0.030919084, 0.025676588, 0.0002588483, -0.047508676, 0.027913386, 0.041683678, 0.0103451945, 0.046949476, 0.032177284, 0.011347095, -0.06868836, -0.036883883, 0.01745169, -0.09935115, 0.050793976, -0.045458276, -0.032759782, 0.0044415602, -0.0023008739, 0.01022287, 0.025070786, -0.027400786, -0.02172724, 0.022635939, 0.026538687, 0.03704698, -0.02318349, -0.021913638, 0.036254782, -0.017975941, -0.030196784, -0.012150944, 0.045015577, 0.0074385214, 0.082761556, 0.06612536, -0.030825885, -0.04077498, -0.0039697355, -0.016869191, 0.06496037, -0.026818287, 0.03730328, -0.0089471955, -0.0056036473, 0.015226542, -0.04082158, -0.08350716, -0.03893428, 0.015226542, -0.03306268, 0.030173484, 0.04238268, 0.032829683, 0.00438331, 0.03849158, 0.0067278715, -0.04436318, 0.07595796, 0.0041037104, 0.029101685, -0.023195138, 0.024721287, -0.024674688, -0.00066113716, 0.026189188, -0.026235787, 0.026352286, 0.0022164113, -0.022729138, -0.022484489, 0.05494137, -0.04131088, 0.013642143, -0.032619983, 0.024884388, -0.004170698, -0.005760922, -0.00433671, 0.00038226543, -0.018127391, -0.029404584, -0.011317969, 0.011224769, 0.02155249, -0.0010601495, 0.07059897, -0.025699887, -0.07563176, 0.02149424, -0.020818539, -0.019001141, -0.047322277, -0.024558188, -0.026095986, 0.002359124, 0.03571888, 0.037792582, -0.03460048, 0.022216538, -0.047951374, -0.10196075, 0.034111183, -0.01033937, -0.025350388, -0.006203622, -0.024744587, -0.0050269724, 0.0027290112, -0.031338483, 0.0045609726, -0.016682792, 0.0064715715, -0.028658986, -0.09907155, -0.041380778, -0.08099076, 0.025000887, -0.033272382, -0.003154236, 0.01870989, -0.04107788, -0.02060884, 0.0046599978, -0.04012258, -0.023416488, -0.0018144866, 0.012523743, -0.0053240475, 0.0013062556, 0.01732354, -0.013898443, 0.02108649, 0.014317843, -0.016042043, -0.02002634, -0.049535774, -0.014259593, 0.027796887, 0.064913765, -0.07479296, 0.015832342, 0.08369356, 0.02074864, 0.020736989, -0.0045027225, 0.0025906675, 0.013898443, 0.026352286, -0.030709384, 0.04221958, -0.016601242, -0.02020109, -0.052378375, -0.008620996, 0.06962036, -0.008556921, -0.018768141, 0.01919919, 0.0053444346, -0.0040629352, -0.011714069, -0.013642143, -0.007589971, 0.028961886, 0.0068035964, 0.0149119925, -0.012943143, -0.04513208, 0.008347221, 0.050840575, 0.02106319, 0.009657845, -0.0006087122, 0.045504875, -0.04119438, 0.07973256, -0.007822971, -0.0054026847, -0.023171838, 0.022903888, -0.07414056, -0.046949476, 0.026026087, -0.048790175, 0.01910599, 0.01880309, -0.033715084, 0.07987236, -0.052937575, 0.012430544, -0.03790908, 0.01875649, 0.01693909, 0.031408384, 0.029777385, 0.03464708, -0.029637584, -0.0036784858, 0.015214892, 0.00544346, -0.0022746613, -0.015774092, -0.07167076, 0.012943143, -0.014282892, 0.023591239, -0.01947879, -0.043897178, -0.031804483, -0.0040512853, -0.0145275425, -0.0038707105, -0.0032299608, -0.04170698, -0.013560593, -0.04014588, -0.013642143, 0.028798785, 0.008143346, -0.028169686, 0.02138939, 0.022146638, -0.07269596, -0.018313792, -0.06174497, 0.01896619, 0.011626694, 0.014049893, -0.0016892492, -0.0018203115, -0.051958974, -0.031944282, 0.013246044, -0.018150691, 0.02292719, 0.023008738, 0.047019377, -0.07511916, 0.010793719, 0.030383185, 0.01152767, 0.01801089, 0.045947578, -0.028099786, -0.013642143, 0.023544637, -0.00239553, 0.033388883, -0.032247182, -0.007857921, -0.033155885, 0.03644118, -0.012803343, -0.017638091, 0.01827884, 0.027493985, 0.047205776, 0.004260985, -0.03954008, 0.051446375, -0.016088642, 0.053030774, 0.03900418, -0.016216792, 0.04513208, 0.0068734963, 0.06817576, 0.009494745, -0.06239737, 0.04044878, -0.030755984, -0.0076948213, -0.02102824, -0.01942054, -0.0131295435, -0.06663796, -0.04030898, -0.014830442, 0.021890339, 0.051120173, 0.048137777, 0.022787388, 0.015377992, 0.011923769, -0.008055971, -0.007351146, 0.052005574, 0.02014284, -0.00482601, -0.04294188, -0.016158542, -0.031851083, -0.01866329, -0.0016484741, -0.02059719, 0.04513208, -0.01843029, 0.022612639, -0.004654173, -0.046133976, -0.05852957, -0.024954287, -0.04089148, 0.0062618717, -0.005437635, 0.0012472775, -0.013898443, -0.023160188, 0.014981893, -0.04555148, -0.0029314298, -0.015051792, 0.03634798, -0.049628977, 0.00071174186, 0.02027099, -0.0034862608, 0.0070074713, -0.033016082, 0.032223884, -0.0038182857, 0.025210587, 0.0008839433, 0.053729773, 0.044689376, -0.012663543, -0.012360644, 0.0039289603, -0.042242877, 0.06030037, 0.0008861277, 0.00093855266, 0.016647842, -0.0075724963, -0.04478258, -0.03490338, 0.014434342, -0.012593644, -0.028915286, 0.0021159302, 0.074047364, 0.0077006463, 0.01843029, -0.057317972, -0.004971635, 0.02070204, -8.8785695e-05, 0.01959529, -0.0012225213, 0.038258582, -0.0010914588, -0.050747376, -0.03408788, 0.056292772, -0.024651388, -0.05759757, -0.00019022256, -0.01074712, -0.01990984, -0.02256604, -0.02200684, -0.054708373, 0.01952539, 0.00073795434, -0.000952387, -0.034973282, -0.018639991, -0.0054667597, 0.01811574, 0.030825885, -0.025699887, -0.01801089, -0.01031607, -0.029614285, 0.0030464735, -0.0018319616, -0.009180196, 0.043827277, 0.017638091, -0.055826772, 0.026165888, 0.03828188, -0.004936685, 0.02211169, 0.014108143, -0.080711156, 0.02074864, 0.014166393, -0.06402837, 0.00980347, 0.033854883, 0.006133722, -0.00019823194, -0.027540587, 0.025956187, 0.042802077, 0.032410283, 0.06733697, 0.055733573, 0.008096746, 0.049908575, 0.000625095, 0.01098012, 0.032340385, -0.004193998, 0.012337344, -0.007217171, 0.015354692, -0.0018800178, -0.030849185, -0.027097886, -0.000163555, 0.023672787, 0.00020642333, 0.010164619, 0.027167786, -0.0057929596, 0.028845385, 0.035858683, 0.026072687, 0.011783969, 0.11211954, -0.023579588, -0.025140688, 0.02028264, -0.0056764595, 0.06957377, -0.0068385466, -0.015389643, 0.03900418, 0.008749146, 0.06640497, 0.015995443, -0.012733444, -0.016671142, 0.053776372, -0.025676588, -0.02060884, -0.011917944, -0.056152973, 0.007648221, 0.02134279, 0.00975687, -0.0018130303, -0.024231987, -0.026958086, -0.02076029, 0.038002282, 0.07926656, -0.07246296, -0.02213499, -0.046390276, -0.016682792, -0.049442574, -0.035439283, 0.029148286, -0.03879448, -0.03772268, -0.029614285, -0.049675576, 0.03592858, -0.016741041, -0.007782196, -0.0044735977, -0.033808284, 0.012488794, 0.002692605, -0.02055059, -0.017090542, -0.05913537, -0.014294542, 0.03588198, 0.022065088, -0.0034076234, 0.019152591, -0.031501584, 0.0046366975, 0.010968469, 0.004459035, -0.016193492, -0.016344942, -0.007351146, 0.028192986, 0.0031513234, -0.0147838425, -0.01822059, -0.025583386, -0.028938586, 0.02052729, -0.016717741, 0.011859694, 0.064307965, 0.01867494, -0.010933519, -0.0027435736, 0.005440547, -0.06663796, 0.051446375, 0.048836775, 0.016251741, 0.0015669242, -0.023299988, -0.0096403705, -0.06281677, 0.023929087, -0.012290744, 0.043128278, -0.00929087, 0.011440294, -0.032200582, 0.04175358, -0.0020008865, -0.0044066105, -0.00246543, -0.012721794, -0.0069783465, 0.024511587, -0.008032671, 0.03485678, -0.06701077, -0.03679068, -0.07595796, 0.0071647465, -0.0015698367, 0.01997974, -0.014212993, -0.0026343549, -0.019385591, -0.01801089, -0.015051792, -0.0043017603, -0.033225782, -0.029357985, 0.033179183, -0.020713689, 0.0018246804, 0.0008402558, -0.001553818, -0.03536938, -0.017253641, -0.01770799, -0.020969989, 0.03571888, 0.00034385687, -0.008556921, -0.05955477, 0.013269343, 0.0135139935, 0.024604788, 0.06020717, 0.0040978855, 0.012209194, -0.00030107953, -0.026515387, 0.04354768, 0.004339623, -0.028589085, 0.016030392, 0.00465126, 0.015296442, 0.04047208, -0.028146386, 0.025839686, 0.036674183, -0.0044735977, -0.016729392, 0.015867293, -0.021971889, 0.009220971, 0.01035102, 0.002956186, 0.030919084, 0.04124098, -0.008737495, 0.016519692, -0.0068734963, 0.01775459, -0.002529505, 0.0034280107, -0.06826896, -0.0030056986, 0.030872485, 0.007811321, -0.011813094, 0.008551096, -0.024488287, -0.05717817, 0.02101659, 0.03828188, -0.014725593, -0.010665569, 0.032503482, -0.01949044, 0.020736989, 0.025140688, -0.0028848299, -0.034064583, 0.03865468, -0.02200684, -0.075398766, -0.00085263397, -0.00446486, 0.023253389, 0.050514374, 0.003113461, -0.014597443, -0.024721287, -0.014946942, -0.046646576, -0.04119438, -0.016589591, 0.00080530584, 0.015447892, 0.050048374, 0.014760543, 0.05536077, 0.024278589, 0.017894391, -0.01896619, -0.019665191, 0.00076453085, 0.025047487, -0.05438217, 0.015715841, -0.008591871, -0.0058919843, 0.006355072, 0.046599977, 0.023253389, 0.04177688, -0.005918197, -0.030056985, -0.015925542, -0.0052687097, -0.05736457, 0.0023649489, -0.03818868, 0.028053185, 0.008580221, 0.0072579463, 0.02027099, -0.0006676903, 0.0031338483, 0.01990984, -0.031361785, -0.07022616, -0.030662784, -0.017638091, -0.029544385, -0.0075608464, 0.026678486, 0.027167786, -0.011183995, -0.014702292, 0.010368494, -0.013910093, 0.021529188, 0.009092821, -0.0013972712, 0.0034949982, -0.06118577, 0.009564646, -0.023404839, -0.036114983, 0.025676588, -0.00998987, -0.0025921236, 0.002950361, -0.024488287, -0.049535774, 0.0070074713, -0.0021945676, 0.015366342, 0.02051564, 0.016170193, -0.016636191, -0.021564139, 0.03783918, 0.010426745, -0.0032969483, -0.029148286, -0.016589591, 0.008201596, -0.027027987, -0.01138787, 0.0068618464, -0.00961707, 0.014201343, -0.01961859, -0.033342283, 0.048696976, -0.014352793, -0.0036318856, -0.035346083, 0.0095762955, -0.02050399, 0.04503888, -0.06356237, 0.01877979, 0.004153223, 0.0035998481, 0.03464708, -0.051399775, 0.03460048, 0.0054114223, 0.012849944, 0.022274788, -0.014772193, 0.008149171, 0.02053894, 0.030126885, 0.0041211853, 0.031641383, 0.005918197, 0.02138939, 0.023882488, -0.04135748, -0.03909738, 0.032363683, 0.05769077, -0.026655186, -0.0070074713, -0.014574143, -0.046832975, -0.003984298, -0.003990123, 0.051399775, 0.013840193, -0.027540587, 0.024185387, -0.00990832, -0.00497746, 0.010700519, 0.0061861468, -0.0034367482, 0.018977841, 0.012395593, 0.0075025964, 0.01982829, -0.029987086, 0.000102301514, 0.00095020264, 0.029614285, -0.0070424215, -0.01051412, -0.028262885, 0.010881094, 0.026981387, -0.053496774, 0.0052541476, 0.025187287, 0.0035212107, 0.004319235, 0.00113369, -0.010170445, 0.0029882235, -0.04156718, 0.0116674695, -0.004001773, -0.043617576, -0.022123339, -0.0066521466, 0.01809244, -0.029544385, -0.029171586, 0.017078891, 0.037233382, -0.00902292, 0.04273218, -0.054568574, 0.0015829429, 0.06016057, -0.0152847925, -0.028286185, 0.025257187, 0.036208183, 0.01951374, -0.0047881478, 0.014329493, -0.032596685, -0.048650376, 0.0123722935, -0.04329138, 0.008149171, 0.011183995, 0.02151754, -0.017230341, -0.0006083481, 0.008143346, 0.00050604664, 0.0024421301, -0.009360771, 0.022845639, 0.032946184, 0.013770293, -0.016205141, 0.02123794, 0.06239737, 0.013921743, -0.032223884, 0.014143093, 0.02053894], [-0.015128733, -0.03308593, -0.027476536, 0.04392443, -0.015711064, 0.026097955, -0.033062164, 0.026929857, -0.019977532, 0.014629591, -0.014439442, 0.011628802, 0.03365638, -0.0270487, -0.019965649, -0.021974098, -0.038243726, -0.016673693, -0.035629176, -0.017030222, -0.044542413, -0.06888149, -0.049010914, -0.010238337, -0.0019475421, 0.0050894576, -0.013690731, 0.028403513, -0.0018168146, 0.024125159, 0.05347942, 0.017802704, 0.023626018, 0.011082123, 0.050484568, 0.026597096, -0.011943736, 0.011854604, -0.0026398033, 0.010909801, -0.03363261, 0.013191589, 0.009115269, -0.021950329, -0.01985869, 0.015283229, 0.0012203705, -0.014582054, 0.0025061048, -0.004914164, 0.016293395, -0.0209877, -0.02740523, -0.022663388, 0.015663527, 0.018717796, 0.046087373, -0.0569021, 0.043781817, 0.0031790542, -0.07054529, 0.033846527, 0.021463072, 0.0074990024, -0.044970248, -0.0061382484, 0.011842719, -0.017481826, 0.024695607, 0.01770763, -0.048297856, -0.018872293, 0.0282609, -0.0061382484, -0.010909801, -0.07586946, 0.07083052, 0.006191728, -0.01716095, -0.0018717796, 0.0318975, -0.03244418, -0.020583633, -0.043472823, 0.051720537, -0.031255748, 0.03570048, -0.088181615, -0.04492271, -0.011444595, 0.014665244, -0.011902141, 0.028308438, 0.032705635, -0.084711395, 0.010398775, -0.02792814, 0.012050695, -0.035153802, 0.019003019, 6.1092804e-05, -0.07401551, -0.04789379, -0.025408665, 0.04836916, 0.023233835, 0.024861986, 0.009275707, -0.03089922, 0.0779611, 0.040145215, 0.004183279, -0.0025402722, -0.028142057, -0.023673555, 0.0057936036, -0.0012500813, -0.039289545, -0.038243726, -0.004753726, -0.080242895, -0.043401517, 0.046087373, 0.048820764, -0.015722949, 0.0066314475, -0.003401885, 0.050246883, 0.0036068896, -0.016376587, -0.027024932, 0.02410139, 0.06179844, 0.02966325, 0.047751177, -0.025598815, 0.059944484, -0.039741147, -0.037554435, 0.013132168, -0.024208348, -0.004162481, -0.0140116075, 0.020702476, -0.051673, -0.017493712, -0.0037287038, -0.019038672, -0.058375753, -0.018052274, -0.022568313, -0.046016067, -0.00058196, 0.020559864, 0.012728101, -0.023923125, -7.005246e-05, -0.0055678017, -0.025884038, 0.022687158, 0.029924704, -0.04661028, -0.022235554, 0.050722256, 0.005927302, -0.062986866, 0.051387776, -0.017030222, -0.068976566, 0.04423342, -0.022152362, -0.023911241, 0.009709485, -0.0010027391, -0.023863705, 0.03555787, 0.030827912, -0.006459125, 0.0019891371, -0.07263693, -0.016626157, 0.02688232, 0.04981905, -0.03976492, 0.054715384, 0.034725968, 0.0073445067, 0.042854838, 0.04299745, -0.028023215, -0.014772203, -0.001963883, -0.06350978, -0.008556707, 0.0061739017, 0.009620353, -0.0013325288, -0.038814172, 0.019038672, 0.0111950245, -0.008021913, -0.029782092, 0.0007420269, -0.0036871086, -0.033537537, 0.0030319858, 0.051435314, 0.009162807, -0.0077901683, -0.005134024, 0.026953626, 0.02090451, 0.012324034, -0.039693613, 0.004376399, 0.02178395, -0.05186315, 0.0131797055, -0.055428445, -0.04059682, 0.04839293, 0.0068988446, 0.029425563, -0.048250318, -0.006946382, 0.03812488, 0.01049385, 0.007582193, 0.04299745, 0.03085168, -0.013037093, -0.0338703, -0.043853123, 0.025979113, -0.07971998, -0.028379744, -0.034250595, 0.007059283, 0.040739432, -0.015592221, 0.040335365, 0.0004092661, -0.034773506, -0.008473516, 0.031255748, 0.03396537, -0.00663739, 0.017018339, -0.03332362, -0.015663527, 0.0040168986, -0.0282609, -0.03332362, 0.022425702, -0.020952048, 0.06678985, 0.034060445, -0.07306477, 0.002567012, 0.021938445, -0.0018064159, 0.064127766, -0.019074325, 0.07049776, -0.0063640503, 0.01335797, 0.01569918, -0.026929857, -0.057805307, 0.03572425, 0.017386753, -0.060752615, 0.014166103, 0.001754422, 0.06056247, -0.023732977, 0.058423292, 0.054335088, 0.023590365, 0.05561859, -0.008366558, 0.02357848, 0.014582054, 0.064983435, 0.03436944, -0.010101668, 0.015615989, -0.01344116, -0.015746716, 0.0041743657, -0.02029841, -0.028831348, 0.046229985, 0.0042100186, 0.037150368, 0.0004924563, 0.037316747, 0.044851404, -0.080337964, 0.020690592, -0.031255748, -0.014296831, 0.008111045, -0.060134634, 0.00011726476, 0.051245164, 0.02671594, 0.0690241, -0.016626157, -0.017695745, 0.06579157, -0.006726522, 0.017969083, -0.017315447, 0.025812732, -0.01839692, -0.010517619, 0.0010525046, 0.04767987, -0.015936866, -0.0443998, -0.029354258, -0.11199778, 0.01666181, 0.033798993, 0.00859236, -0.009453973, 0.002489764, -0.036888912, 0.006690869, -0.076012075, 0.0071662418, 0.005665847, 0.0064294143, -0.042022936, -0.0779611, 0.0012589946, -0.039004322, 0.007332622, -0.013928417, -0.011551554, 0.06160829, -0.03698399, -0.030305002, -0.02897396, -0.020369716, 0.014926699, -0.008740913, 0.022497008, -0.021807717, 0.0013726384, 0.017101528, 0.04872569, 0.027975677, 0.014284946, -0.013464929, -0.010790958, -0.037388053, -0.030590227, 0.020048838, 0.10020854, -0.09307795, -0.020999584, 0.0419754, 0.020583633, -0.0064294143, -0.0419754, -0.015164386, 0.019133747, 0.0143324835, -0.017446173, -0.0055648303, -0.013809574, 0.0071484153, -0.072066486, 0.0051459083, 0.0690241, -0.007950607, -0.048416696, 0.0015078224, -0.0057193264, -0.034654662, -0.00106736, 0.037506897, 0.069071636, 0.0111950245, -0.041690174, 0.0050894576, 0.029853398, -0.04630129, 0.00045903167, -0.0027333924, 0.016507313, -0.029710786, 0.00784959, 0.06493589, -0.01958535, 0.002434799, 0.0012537952, -0.010018477, -0.0029369113, -0.03482104, -0.009269766, -0.0139165325, 0.018717796, 0.023043687, -0.016982686, -0.044114575, -0.029306721, 0.042664688, -0.032206494, 0.008491343, -0.014914815, 0.08200177, 0.01162286, 0.034749735, 0.017398637, 0.017089644, -0.01101676, 0.016542966, 0.025242284, -0.026597096, 0.0100422455, 0.032372873, 0.006298687, 0.030566458, -0.008931062, 0.00875874, -0.027262619, 0.0066968114, 0.012359687, 0.016649924, -0.027096238, -0.0010718167, -0.036033243, -0.024505457, -0.03520134, -0.02479068, 4.1154082e-05, 0.0492486, 0.0018242423, -0.016840074, 0.015818022, 0.05115009, -0.039289545, -0.02255643, -0.07216156, -0.00914498, 0.034060445, -0.023673555, -0.016483545, 0.032705635, -0.04577838, -0.030019779, 0.04542185, -0.0030007896, -0.011331694, -0.012739985, 0.04283107, -0.07035514, 0.037697047, 0.02200975, 0.040192753, -0.0112247355, 0.03451205, -0.0036306581, -0.03817242, 0.028569892, -0.004272411, 0.023043687, -0.021665106, 0.0046259696, -0.027500303, 0.0030141594, -0.025765194, -0.012430993, -0.02652579, 0.004715102, 0.02966325, -0.033394925, -0.0053390283, -0.03382276, 0.022342512, -0.010945454, 0.060895227, -0.010404717, 0.0367463, -0.006690869, 0.069309324, -0.006530431, -0.041048422, 0.037174135, -0.014094797, 0.010268048, -0.016162667, -0.070307605, -0.03365638, -0.042902377, 0.010915743, -0.001999536, 0.024315309, 0.047584794, 0.019537814, 0.01231215, -0.03213519, 0.012419109, -0.024671838, 0.0061025955, 0.0054251896, -0.041880324, 0.036698762, 0.009935287, -0.0686438, -0.013334201, -0.010963281, -0.014712782, -0.032111418, 0.016257742, 0.026121724, 0.019525928, -0.015853675, -0.026502023, -0.05709225, -0.019133747, -0.03541526, -0.004937933, 0.034060445, 0.0011936309, 0.051245164, -0.029687019, -0.008449748, 0.024648068, -0.03239664, -0.0015850705, -0.010630519, -0.011664455, 0.03346623, -0.0027987561, -0.02035783, 0.05119763, -0.018694026, 0.024327192, 0.020120146, 0.034203056, -0.022176132, 0.05913635, 0.03135082, -0.019074325, -0.00870526, 0.03902809, -0.036888912, 0.062321346, 0.005101342, 0.033727687, 0.0024763942, -0.04853554, -0.021367999, -0.044494875, 0.0016266656, -0.010600809, 0.0063699926, 0.035320185, 0.08328528, 0.0078020524, -0.027381461, -0.07729559, 0.050579645, -0.0010153662, -0.01837315, -0.008628013, -0.004946846, 0.04822655, 0.008229888, -0.044090807, -0.077152975, 0.081621476, -0.04195163, -0.008081334, 0.0010450769, -0.017386753, -0.051673, -0.012787523, -0.008782509, -0.025979113, 0.012056638, 0.025931574, -0.019133747, -0.05813807, -0.016745, 0.008972658, -0.0017618496, 0.025717657, 0.0030720953, -0.00997094, -0.015627874, 0.000944803, -0.00084081525, 0.021807717, -0.016709346, 0.032158956, 0.0139165325, -0.03368015, 0.026977394, 0.0015130218, -0.05362203, -0.0070830514, 0.019977532, -0.026169261, 0.04943875, -0.0050538047, -0.089037284, 0.01517627, 0.05119763, -0.041571334, 0.0060669426, -0.012549836, -0.0006261548, 0.052528672, 0.018183002, 0.04140495, 0.026288103, -0.009412377, 0.08898975, -0.032491717, 0.036223393, 0.030637763, -0.00892512, 0.021724528, 0.001718769, -0.022223668, -0.010256164, -0.024148928, 0.014475095, -0.029758325, -0.01691138, -0.021653222, 0.00045494642, 0.01247853, -0.01622209, -0.010363122, 0.0076950938, 0.017992852, 0.024766913, 0.07163865, -0.024671838, -0.025907807, 0.04839293, 0.012965787, 0.09716616, -0.022164246, -0.03831503, 0.023982547, 0.0143324835, 0.05481046, -0.011605034, -0.029924704, -0.007855532, 0.031636044, -0.027143775, 0.037364285, -0.022271207, -0.019216936, 0.015651643, 0.03087545, 0.029211646, -0.04475633, -0.032349106, -0.025004597, -0.0046705357, 0.011884315, 0.06403269, -0.054049864, -0.04287861, -0.011290099, -0.015746716, -0.04680043, 0.023459638, 0.035938166, -0.009774849, -0.006601737, -0.009222228, -0.012003158, -0.030970525, -0.01619832, -0.013643193, 5.533634e-05, -0.03831503, -0.004970615, -0.049105987, 0.011408942, 0.019109977, -0.06650463, -0.03586686, 0.03089922, 0.03156474, -0.01638847, 0.026359411, -0.07125835, 0.008354673, -0.009026137, -0.018848523, -0.020856973, -0.014629591, -0.058233142, 0.0097213695, 0.027642917, -0.0021168937, 0.00073088537, -0.041214805, -0.040192753, 0.043211367, 0.0050062677, -0.007914954, 0.052718822, 0.014700897, 0.0067800013, -0.017303562, 0.015711064, -0.030233696, 0.02288919, 0.010398775, -0.0009908547, -0.010071957, -0.037411824, 0.006952324, -0.057329934, 0.03748313, 0.0022208814, 0.057329934, -0.005624252, 0.037055295, -0.021486841, -0.008883526, -0.00589462, -0.0036811666, 0.012823176, -0.023019917, 0.009703543, 0.049676437, 0.001074045, -0.015841791, -0.011343579, -0.02619303, -0.025860269, 0.002263962, -0.058185603, 0.022128593, -0.0049527884, -0.007059283, 0.0012277983, -0.008966715, -0.016626157, 4.201291e-05, -0.03764951, 0.010511677, 0.06698, -0.015794255, -0.0025179891, -0.012490415, -0.038766634, -0.014463211, 0.012549836, 0.008657724, -0.024244001, -0.0031463723, -0.023542827, -0.02054798, -0.030566458, 0.019312011, 0.00223128, 0.025955344, 0.033109702, -0.010826611, -0.016745, 0.0043942253, -0.013726383, 0.0019935938, -0.0022624764, -0.02167699, 0.02669217, -0.013191589, 0.020203335, -0.008770624, -0.0055291774, 0.044661254, 0.014296831, -0.005169677, -0.0028908595, 0.016507313, -0.005059747, 0.01914563, 0.009370782, 0.026097955, 0.005579686, 0.045350544, -0.000622441, 0.01839692, -0.054049864, 0.008277426, -0.013060862, -0.038552716, -0.045612, -0.034535818, 0.042902377, 0.0036336293, -0.020227104, -0.011902141, -0.03952723, -0.03729298, 0.025931574, -0.006162017, 0.02721508, 0.008170466, 0.03085168, 0.016590504, 0.031778656, -0.00093143317, -0.002440741, -0.019514045, 0.017125297, -0.010018477, -0.010487908, -0.004691333, -0.027024932, -0.014308715, 0.04701435, -0.008657724, -0.008556707, -0.024113275, -0.01473655, -0.063795, -0.019490276, -0.04981905, 0.0013793233, -0.015223807, 0.04789379, -0.052718822, 0.04544562, -0.003098835, -0.007701036, 0.010731536, 0.009554989, -0.0059480993, -0.00077322323, -0.05709225, 0.017862124, 5.640407e-05, 0.010868206, -0.007368275, -0.02134423, 0.05309912, 0.018789101, 0.01283506, -0.01162286, -0.031231979, -0.0062689763, -0.040644355, 0.018503878, 0.0052320696, 0.012597374, 0.03517757, 0.048963375, 0.020250872, -0.022603966, 0.014237409, 0.024113275, -0.035819326, -0.065981716, -0.006185786, -0.05443016, -0.045374315, 0.018634606, 0.009994709, 0.038433872, 0.018610837, -0.05428755, 0.03729298, 0.004299151, 0.0018955482, -0.009067732, 0.021142196, 0.006411588, -0.041666407, -0.0025358156, -0.0020946104, -0.036770068, -0.00022988721, -0.008883526, -0.013251011, 0.03517757, 0.007059283, 0.011896199, 0.015615989, -0.0010487908, 0.022235554, 0.020488558, -0.013797689, -0.017006455, 0.00086161285, 0.019656656, 0.0072613163, -0.0051132264, 0.0040555224, -0.009644122, 0.0145582855, -0.0014491436, 0.022473238, 0.019704195, 0.040620588, -0.013096515, -0.031778656, 0.021712642, 0.04333021, -0.006046145, 0.017541248, 0.018076044, -0.043948196, 0.005131053, -0.003318695, -0.034440745, 0.024362845, 0.04734711, 0.057615157, 0.045160394, -0.03120821, 0.0209877, 0.010268048, 0.0035712365, 0.024743143, -0.023031803, 0.03867156, 0.021451188, 0.02211671, -0.006892903, 0.012716217, -0.030946756, 0.004397196, 0.03936085, -0.0362947, -0.02324572, 0.017386753, 0.08342789, -0.023126876, -0.012942019, 0.029544406, -0.03831503, -0.016269626, 0.0076119034, 0.019312011, -0.018979251, -0.030756606, 0.0013756094, 0.0021659164, -0.015806139, -0.016103247, -0.047133192, 0.000274082, 0.027714223, -0.013738268, 0.021427419, 0.007469292, -0.0022060259, 0.006892903, 0.0053390283, 0.022188015, -0.023364563, 0.020595517, -0.009846155, 0.028546125, 0.034274362, -0.0391707, -0.017232256, 0.023721091, 0.020155799, 0.017089644, -0.006839423, 0.0041803075, 0.0051904744, -0.0480364, 0.023875589, 0.0018138435, -0.036651228, 0.010006593, -0.03401291, 0.0030230726, -0.048416696, -0.007397986, 0.05115009, 0.029782092, -0.02773799, 0.029211646, -0.06070508, 0.0026888263, 0.038267493, 0.009347013, -0.010701826, 0.022294974, -0.00016220233, 0.028308438, -0.0071246466, -0.0075168293, -0.015936866, -0.03919447, 0.01300144, -0.044494875, 0.03089922, -0.0025833528, 0.014237409, -0.051577926, 0.000867555, 0.017244142, 0.0053895367, -0.007249432, -0.040882044, 0.031018062, 0.035985705, 0.01785024, -0.03308593, -0.005858967, 0.065981716, -0.00020221905, -0.049010914, 0.06441299, 0.01396407], [-0.0074373726, -0.031441525, -0.026062373, -0.03373966, -0.00041314354, 0.005158178, -0.031214237, 0.00652822, 0.011932626, 0.0017299153, -0.019710932, -0.02050644, -0.08359152, -0.0071216947, 0.019268982, 0.056114912, -0.05949898, 0.00036381884, 0.014104491, -0.0298, 0.009116779, -0.04788203, -0.020178135, 0.011244449, 0.018422965, 0.00028312366, -0.028057456, 0.019900339, -0.01686983, -0.018713389, 0.017564321, -0.0022981355, 0.012229364, 0.01967305, -0.0058526695, 0.013195339, -0.0014963135, 0.014369661, -0.029471694, 0.008618008, -0.023461185, 0.021276694, -0.00541072, -0.013334237, -0.0016304767, -0.05353898, 0.0031883474, -0.022690931, 0.01796839, -0.045078814, 0.0078035593, -0.05023068, 0.013561525, -0.026390677, -0.041391693, -0.0019303707, 0.061014235, -0.068438984, 0.09167288, -0.036921695, -0.028537288, 0.016314236, 0.031795084, -0.005186589, -0.004640466, 0.007045932, -0.01472322, -0.026037117, -0.0069070337, 0.056973558, 0.008220254, -0.024294576, 0.008220254, 0.012235678, 0.010082754, -0.06258, 0.064347796, 0.034396272, -0.0037755084, -0.029471694, 0.03303254, -2.2529048e-05, 0.0060799574, -0.038487457, -0.0018025212, -0.035557967, 0.040810846, -0.14112067, -0.034396272, 0.024130423, 0.011717966, -0.042629153, 0.031492032, 0.0018451377, -0.017627457, -0.019079575, -0.015139915, 0.018107288, -0.06182237, 0.017930508, 0.0010022775, -0.03416898, -0.06475186, -0.08147017, 0.024736525, 0.04631627, 0.03303254, -0.018258814, -0.038285423, 0.087783724, -0.01765271, -0.021605, -0.008453855, -0.015922796, 0.031087965, 0.015165169, 0.0009975424, -0.05889288, -0.0259361, -0.013738304, -0.09399627, -0.021453474, 0.09485491, 0.038537964, 0.0207211, -0.0095966095, -0.01071411, 0.031492032, 0.013069067, 0.0052023726, -0.0012208845, 0.00030147246, 0.029825253, 0.042275593, 0.05465017, 0.0259361, 0.04810932, -0.031694066, -0.03618932, -0.0014671133, -0.0061967582, -0.0071974574, -0.055458304, 0.045634404, -0.07192407, 0.0078225, -0.060660675, -0.027224068, -0.06359017, -0.01642788, -0.031971864, -0.037704576, -0.01406661, -0.020304406, 0.04952356, -0.02476178, 0.034472033, 0.03992695, -0.030077796, 0.00418589, 0.023549575, -0.075712204, 0.012652373, 0.03522966, 0.0020866313, -0.007045932, 0.033360846, -0.03702271, -0.026567457, 0.037931863, -0.014205508, -0.0053759958, 0.013447881, -0.027703898, -0.0333861, -0.007727796, 0.041922033, -0.0018151483, -0.009653432, -0.06121627, -0.039952204, 0.04088661, 0.056165423, -0.036694407, 0.021049406, 0.024534492, -0.0057737497, -0.016326863, 0.034194235, -0.024597626, -0.020493813, -0.0022602542, -0.03320932, 0.015581864, 0.018220931, 0.029648473, -0.03224966, -0.022312118, 0.031214237, -0.05083678, -0.015847033, -0.029193897, 0.02116305, -0.029875763, -0.025696186, 0.014786355, 0.049675085, 0.021478727, -0.019079575, -0.001073305, 0.00773411, 0.027527118, -0.002571197, -0.004356356, -0.037603557, 0.0107961865, -0.039447118, -0.0063072457, -0.026592711, -0.02414305, 0.055559322, -0.0008183951, 0.05560983, -0.036643896, -0.019016441, 0.03947237, 0.029901017, -0.003980699, 0.020569576, -0.01323322, 0.011913686, -0.030986948, 0.009710254, -0.004040678, -0.049043726, 0.040507797, -0.046543557, -0.0023596927, -0.010524703, -0.025746694, 0.031441525, 0.03207288, -0.041947287, -0.02357483, -0.013498389, 0.020430677, 0.050508473, 0.03063339, -0.008643262, 0.031921357, 0.0083086435, -0.0070396187, 0.010310042, 0.055761356, 0.041088644, 0.06924712, 0.038411696, -0.011433856, 0.0028032202, 0.019496271, -0.0045489194, 0.021567117, 0.006850212, 0.04495254, 0.016503643, -0.006370381, 0.0005066631, -0.005445445, -0.007721483, 0.0070080506, 0.03896729, -0.059903048, 0.063135594, -0.0022855084, 0.060509153, 0.015064152, 0.06010508, 0.0339922, -0.004309004, 0.035330676, 0.010764618, 0.015783899, 0.026415931, 0.032931525, 0.030532371, -0.009678686, 0.0067555085, -0.04197254, -0.021352457, 0.016314236, -0.009009449, -0.0071216947, 0.03815915, -0.024092542, 0.058488812, 0.005600127, 0.029875763, 0.03303254, -0.044624235, 0.031188982, -0.0121283475, 0.0033840677, -0.04881644, -0.035456948, 0.0018703919, 0.058438305, 0.028815083, 0.040861353, -0.058741353, -0.052478302, 0.061670847, 0.028638305, -0.02247627, -0.04035627, 0.009230424, -0.027602881, 0.01835983, 0.019243728, 0.024029406, -0.020064492, -0.03671966, -0.013271102, -0.059903048, 0.03886627, 0.009779703, -0.004435275, -0.010922457, 0.0042774365, -0.00028016418, 0.0048361863, -0.04543237, 0.03457305, -0.0025001694, 0.021099914, -0.056771524, -0.102279656, -0.034775086, -0.07409593, 0.011635889, -0.03896729, -0.028082712, -0.014735847, -0.03747729, -0.0207211, 0.04017949, -0.048614405, -0.023044491, 0.01770322, 0.00032061042, -0.025304746, 0.0015515572, 0.028234236, 0.047679998, 0.056367457, 0.032274913, -0.03957339, -0.008548559, -0.019281609, -0.0094198305, 0.037931863, 0.064903386, -0.038184404, 0.009438771, 0.06227695, 0.015392457, -0.06788339, -0.039169323, -0.012039958, -0.030380847, 0.061367795, -0.029345423, 0.034724575, 0.03815915, -0.00031409957, -0.03975017, -0.0028600423, 0.077479996, -0.021478727, -0.027325084, 0.030911185, 0.0066039828, -0.031239491, -0.0572261, 0.0024764936, -0.00865589, 0.039977457, -0.04881644, 0.053185422, 0.0363661, -0.044624235, -0.0009714989, 0.02130195, -0.004337415, -0.022968728, 0.0091672875, 0.025342626, -0.027628135, 0.027476609, 0.004182733, 0.0056190677, 0.013675169, 0.015796525, -0.02059483, -0.018940678, 0.026617965, -0.026870508, 0.013624661, -0.021794407, -0.0001860527, 0.06424678, -0.0036902754, 0.01603644, 0.024723899, 0.046366777, 0.030885931, 0.05091254, 0.006133623, 0.061014235, -0.006818644, 0.018498728, 0.0101143215, -0.01621322, -0.02086, 0.026567457, -0.053488474, 0.0050634746, -0.04487678, 0.0022602542, 0.032098133, -0.032628473, -0.041088644, 0.03325983, -0.038815763, 0.004902479, 0.012563983, -0.03790661, 0.0030478707, -0.0028600423, -0.011926313, 0.054953218, 0.0015989089, -0.024736525, 0.00502875, 0.043235254, -0.040432032, -0.014874745, -0.07202508, -0.0011206567, 0.047048643, -0.026870508, -0.03553271, -0.007064873, -0.043311015, -0.037174236, 0.017463304, -0.030153558, -0.007974025, -0.025342626, 0.02949695, -0.06227695, -0.019003812, 0.030305084, 0.054801695, -0.03671966, 0.025254237, -0.039901692, -0.029673727, 0.039447118, -0.0025806674, 0.039270338, -0.005259195, -0.031441525, -0.038058136, 0.0058526695, -0.009331441, -0.035911523, -0.0061052116, -0.015165169, 0.052478302, 0.009160974, -0.0022476271, 0.019066948, -0.012406143, 0.039194576, 0.022324745, -0.013826694, 0.021491356, -0.0061841314, 0.037325762, -0.019142712, -0.03939661, 0.011080297, -0.02572144, -0.036340848, -0.013561525, -0.03384068, -0.043765593, -0.045558643, 0.0027795443, 0.0022823517, 0.044851523, 0.02616339, 0.018738644, 0.03565898, 0.025784576, -0.011863178, -0.026264407, -0.0026974683, 0.028688813, -0.031668812, 0.023271779, 0.0022492055, -0.027350338, 0.005944216, -0.044548474, -0.049018472, 0.0024812287, 0.025342626, 0.024092542, 0.020961016, -0.00821394, 0.003425106, -0.050634746, -0.013536271, -0.013826694, -0.017374914, 0.019900339, 0.011844237, -0.0076267794, -0.023461185, 0.016364746, -0.010278475, -0.0054044067, -0.01220411, -0.0008207627, -0.04876593, 0.04197254, 0.023057118, -0.01454644, 0.013170084, -0.0092114825, 0.036744915, 0.0128228385, 0.010947712, -0.017033983, 0.023031864, 0.030961694, -0.018220931, -0.027173558, 0.022728814, -0.038916778, 0.05333695, -0.0072100847, 0.03045661, 0.019811949, -0.0542461, -0.027855422, -0.0047351695, -0.00039479474, 0.0063798516, -0.009337754, 0.009022076, 0.058842372, 0.025481524, -0.041997794, -0.06222644, 0.0068817795, 0.06485288, 0.010265848, 0.0017930508, -0.011143432, 0.046088982, -0.008422288, -0.014647457, -0.023208644, 0.051493388, -0.007405805, -0.044018134, -0.0046909745, -0.010512076, -0.032704238, -0.009943856, -0.029219152, -0.029395932, 0.0156197455, 0.03583576, -0.0091672875, -0.04065932, -0.044750508, -0.0019572033, 0.002263411, 0.0021308262, 0.009552415, -0.015897542, -0.031668812, 0.024244066, 0.015543982, 0.017715847, 0.0132963555, -0.01708449, -0.015240932, -0.046619322, 0.009583983, -0.0007422378, -0.04917, -0.028764576, 0.026744237, -0.052882373, 0.03558322, 0.01779161, -0.03964915, -0.020872626, 0.053488474, -0.013119576, 0.011408601, -0.0482861, -0.004005953, 0.056013897, 0.010600466, 0.059296947, 0.025835084, 0.0070711863, 0.07237864, -0.03027983, 0.047174916, -0.007847754, 0.009066271, -0.00067121023, -0.018700762, 0.0026422245, -0.0408361, -0.013069067, -0.040305763, -0.049927626, -0.02139034, 0.0077846185, 0.015847033, 0.028512033, 0.014824237, -0.023360169, 0.033865932, 0.042401865, -0.015543982, 0.1001078, -0.03497712, -0.023006609, 0.041467458, 0.0108025, 0.033865932, -0.011156059, -0.05752915, 0.019319491, 0.012033644, 0.045407116, -0.0019240571, -0.033588134, -0.017362287, 0.05066, -0.020064492, -0.0095966095, -0.03237593, -0.02130195, -0.0035324364, 0.009666059, 0.038058136, -0.004649936, -0.046215255, 0.0064903386, 0.014382288, 0.027426101, 0.052074235, -0.053690508, -0.07404542, -0.034194235, -0.01023428, -0.023031864, 0.00025273967, 0.044573728, -0.035280168, -0.010947712, -0.05055898, -0.06919661, -0.02247627, -0.009779703, -0.03808339, -0.0075447033, -0.020544322, 0.029421186, -0.014142373, -0.010549957, 0.005284449, -0.049018472, -0.013460509, 0.03492661, 0.024016779, -0.019445762, 0.018991185, -0.06510542, -0.0073994915, 0.0033525, -0.009830211, -0.054145083, 0.0052749785, -0.028916102, 0.038462203, 0.033461865, -0.005123453, -0.0013818803, -0.029597966, -0.03313356, 0.019205848, -0.035179153, -0.0020345445, 0.06444881, 0.0001618836, 0.015607119, -0.022539407, 0.026415931, -0.050154913, 0.044371694, 0.0071595763, 0.01498839, -0.0022081672, -0.027577626, 0.005555932, -0.028006949, 0.04770525, 0.021958558, 0.0336639, -0.013485762, 0.033613387, -0.011642203, 0.021226186, -0.0045331353, -0.012298813, -0.030658644, -0.00038492982, 0.017905254, 0.039851185, 0.023941016, 0.018018898, -0.051038813, -0.024269322, -0.06116576, 0.021226186, -0.032678984, 0.028385762, -0.026239151, 0.0050571607, -0.014508559, 0.007348983, -0.029118136, 0.010019618, -0.053387456, -0.017665338, 0.047351696, -0.0009857045, 0.005240254, -0.013851949, -0.03780559, -0.022678304, -0.0024433474, -0.010777245, -0.02226161, 0.040558305, -0.024913304, 0.0059347455, -0.02896661, 0.02584771, 0.003466144, -0.002713252, 0.06641864, -0.04788203, -0.004829873, -0.017097117, -0.02130195, 0.023688475, -0.00904733, -0.043007966, -0.014293898, -0.029597966, 0.02181966, 0.0060925847, -0.0029894703, 0.03045661, -0.007058559, 0.009186229, -0.018119914, -0.035987288, -0.010467881, 0.01520305, 0.049220506, 0.0027890147, 0.004552076, 0.052074235, -0.022362627, 0.0363661, -0.069348134, 0.027981695, 0.0027542901, -0.028688813, -0.05169542, -0.015594491, 0.04917, -0.0085611865, -0.011989449, -0.010783559, -0.03401746, -0.028360508, 0.034850847, 0.0016131144, 0.04048254, -0.005167648, 0.03416898, 0.017198136, 0.024130423, -0.012147288, 0.0056948303, -0.024168305, 0.04023, 0.0013763559, -0.03182034, 0.027400848, -0.010827754, 0.019054322, 0.059347454, -0.0062188557, 0.0048961653, -0.03176983, -0.0015736546, -0.04841237, -0.04459898, 0.011440169, 0.01305644, -0.010871949, 0.024105169, -0.022009067, 0.04934678, 0.016225846, -0.01722339, -0.02694627, 0.0042363983, 0.036467116, 0.0043595126, -0.014167626, 0.02572144, -0.020746356, 0.018763898, 0.014836864, 0.054347117, -0.013043813, 0.029042372, 0.007405805, -0.0071406355, -0.020178135, -0.024610253, -0.053437963, 0.032805253, -0.0414422, 0.012197796, 0.03141627, -0.0016241631, -0.004536292, -0.036643896, 0.023751609, -0.033891186, -0.035179153, -0.06126678, -0.0070080506, -0.021276694, -0.039623898, 0.009236737, 0.020127626, 0.045331355, 0.008491737, -0.02274144, 0.027350338, -0.0030163028, -0.0007888003, -0.018347204, 0.032173898, 0.017324407, -0.039775424, -0.01603644, 0.0048204022, -0.05364, 0.03224966, -0.011440169, -0.013220593, -0.009924915, -0.027022034, 0.010259533, -0.001332161, 0.004722542, 0.006660805, 0.0014655349, -0.0027795443, -0.010316356, -0.009268305, 0.011080297, 0.00865589, -0.022046948, -0.0007209295, -0.024294576, 0.03045661, -0.019319491, -0.00062740996, -0.015455592, -0.0032356991, 0.0061651906, -0.010531017, 0.010859322, 0.027931185, -0.03772983, 0.00830233, -0.0304061, 0.0074815676, 0.009571356, 0.033613387, -0.049018472, 0.0025127965, 0.03462356, 0.03409322, 0.018031524, -0.032830507, -1.9865516e-05, 0.0007382918, 0.012500847, 0.037098475, -0.0132079655, 0.018031524, 0.011515932, 0.045684915, 3.1469146e-05, -0.014596948, -0.04452322, 0.015607119, 5.8104473e-05, -0.084551185, -0.076924406, 0.062782034, 0.07682339, -0.03957339, -0.009748136, -0.005669576, -0.066671185, -0.044270676, -0.008908432, 0.044902034, -0.0031820338, -0.034648813, 0.004552076, -0.030810168, -0.007879321, -0.015278813, -0.037275255, -0.018599745, 0.012058898, -0.015329322, 0.01770322, 0.0026232838, -0.023044491, 0.009495593, 0.00867483, 0.01651627, 0.027880678, 0.03921983, 0.00624411, 0.0012548199, 0.039800677, -0.053134914, -0.0053917794, 0.0036839617, 0.018637627, 0.019142712, 0.027072541, -0.0060957414, -0.0076141525, -0.06217593, 0.01397822, 0.008984195, -0.05323593, 0.020834746, 0.005170805, -0.016642543, -0.027022034, -0.003608199, 0.03230017, 0.011591694, -0.018220931, -0.009230424, -0.08071254, 0.01099822, 0.017097117, -0.013915084, 0.020632712, 0.024092542, 0.025557287, 0.013763559, 0.0055243643, 0.0008618008, 0.0067113135, -0.01910483, 0.036088303, -0.06222644, 0.030557627, 0.0149, -0.009495593, -0.039497625, -0.00428375, 0.02944644, 0.013308982, -0.0023660064, -0.03063339, -0.0021844914, 0.04399288, 0.018321948, -0.00773411, 0.01305644, 0.06010508, 0.010669915, -0.029951524, 0.019609915, -0.007506822], [-0.029817006, -0.02351499, -0.029182103, 0.060198374, -0.028076896, 0.0224333, -0.06828753, 0.028100412, 0.014743898, 0.033955645, -0.0011801586, -0.011304831, 0.03710665, -0.0019061838, -0.019552713, 0.0017415789, -0.036565807, -0.044278726, 0.0011323937, 0.0018885476, -0.00034445786, -0.06320829, -0.07642371, 0.00896509, 0.024714254, -0.009788115, -0.03040488, 0.009500056, -0.004203304, 0.0009905689, 0.024949403, 0.0013410893, 0.027136298, -0.0013932631, -0.0011118181, 0.012921487, -0.0063843196, 0.030616516, -0.0036947927, 0.018059513, -0.055119134, 0.004382606, 0.018529812, -0.01562571, -0.00033821168, 0.0075541902, 0.04284431, -0.02045804, -0.019928953, -0.043620307, -0.008941575, 0.016495764, -0.032779895, -0.006025716, -0.04811167, -0.009782235, 0.07426034, -0.06236175, 0.036989078, -0.035977934, -0.060151342, 0.028664771, 0.07477766, -0.018388722, -0.061233032, 0.039669786, 0.006490137, 0.0005544394, -0.0023544384, 0.038705673, -0.043620307, 0.03125142, 0.08747576, -0.00018848733, -0.0171777, -0.053567145, 0.08512426, 0.018188844, -0.045031205, -0.020293435, 0.009441269, -0.037012592, 0.039223004, 0.009423632, 0.025302129, -0.03139251, 0.052391395, -0.11061451, -0.051450796, -0.0014424976, -0.010035022, -0.016072495, 0.032591775, -0.008812242, -0.026007578, -0.023985289, 0.00013006729, 0.024220439, -0.010281929, 0.00024139606, -0.016025465, -0.030522456, -0.04014009, -0.047994092, 0.046489134, 0.022680208, -0.004076911, 0.011739858, -0.006425471, -0.010105567, 0.0748247, -0.014108994, -0.06626524, 0.030169731, -0.028829377, 0.050604258, -0.023679594, -0.0654187, -0.00056582945, 0.014896746, -0.0953768, -0.06207957, 0.051685948, 0.005176237, -0.0037330047, -0.052814666, -0.01750691, 0.030616516, 0.029628886, 0.010487685, -0.038188342, 0.04651265, 0.022268696, 0.037671015, 0.046206955, 0.0071838293, 0.094530255, -0.029699432, -0.058646385, 0.014061963, -0.058599353, 0.044325754, 0.009264906, 0.02121052, -0.024996433, 0.0009692585, -0.0037065502, -0.0074836453, -0.0072249803, -0.014779171, -0.011363619, -0.026407333, 0.020352224, -0.00553778, 0.050698318, -0.00071867683, 0.018859021, 0.013356514, 0.0072073443, 0.026713029, 0.0077893403, -0.007901036, -0.016342917, 0.04317352, -0.002843844, -0.0607157, 0.031510085, -0.028923437, -0.06913407, 0.035225455, 0.00802449, -0.027771203, -0.005484871, -0.021245793, -0.017330548, 0.004482545, 0.021880697, -0.04477254, -0.012251309, -0.054978047, -0.00090826646, 0.056341916, 0.022997659, 0.0073837065, 0.02121052, 0.048817117, 0.041174747, 0.04975772, 0.013732754, -0.03903488, -0.03543709, 0.009270784, -0.003383219, -0.031510085, -0.019352837, 0.002285363, 0.013591664, -0.016742673, -0.00403576, 0.016307645, -0.01609601, -0.062314723, 0.009688175, -0.022256937, 0.011322468, 0.004782361, 0.045078233, 0.056294885, 0.00032976098, 0.009876296, 0.024079349, 0.011845676, 0.060104314, -0.035272483, -0.014273599, 0.043902487, -0.008518305, -0.005461356, -0.02191597, 0.013309484, 0.06457216, 0.006842862, 0.03228608, -0.028453138, -0.025372673, -0.0006205753, 0.018282903, 0.022750752, 0.045501504, 0.018823748, -0.049522568, -0.010834531, -0.033861585, 0.064007804, -0.043526247, -0.01079338, -0.020846037, 0.008059762, 0.025490249, 0.0014630732, 0.022868328, 0.0053496603, -0.0387527, -0.0362366, 0.039763846, 0.0005897118, 0.011604647, 0.009076786, -0.01680146, 0.0010545003, 0.019129444, -0.03280341, -0.047476765, 0.00811855, 0.0021604397, 0.06612415, 0.030522456, -0.039199486, 0.0023853017, 0.057705782, 0.008359578, 0.039693303, -0.03426134, 0.075812325, 0.012204279, -0.008847515, 0.0028291473, -0.04072796, -0.03270935, -0.0030569485, 0.03713017, -0.058834504, 0.026289757, 0.027112782, 0.02229221, -0.0048734816, 0.059586983, 0.030475426, -0.012874457, 0.060057282, 0.026524909, 0.052250307, 0.041927226, 0.012169007, 0.004729452, -0.015919648, 0.009088543, -0.055401314, -0.033062074, 0.029229132, -0.036965564, -0.006866377, 0.055025075, -0.011681071, 0.033579405, -0.011475314, 0.044325754, 0.035977934, -0.028594228, 0.004397303, -0.028053382, -0.025490249, -0.044278726, -0.043526247, -0.0069369217, 0.07007467, -0.0056435973, 0.059492923, -0.0046442105, -0.032356624, 0.08940399, 0.014026691, -0.0028614802, 0.0006988361, 0.027794717, -0.012010281, 0.021139976, 0.0077364314, 0.073084585, -0.04547799, 0.004029881, -0.029158587, -0.11710465, 0.027794717, 0.005590689, 0.017436365, 0.023362141, 0.018576842, -0.044419814, 0.013862086, -0.050180987, -0.023879472, 0.0051262677, -0.0011853024, -0.009899811, -0.054131504, 0.058693413, -0.058176085, -0.0083125485, 0.010428898, -0.012010281, 0.025584308, -0.040281177, -0.011487072, -0.007307283, 0.003674217, -0.050886437, 0.055636466, 0.04665374, 0.02238627, 0.0014601338, 0.0105112, 0.008077399, -0.020222891, 0.031180875, 0.0073601916, 0.0073837065, -0.04481957, -0.020857796, 0.03158063, 0.038352948, -0.08060938, -0.00031910575, 0.06631227, -0.0013227181, -0.054742895, -0.04359679, -0.026031094, 0.033203166, -0.015378803, -0.040257663, 0.057329543, -0.023268081, 0.014285356, -0.030945726, -0.004782361, 0.06809941, 0.008794606, -0.018929567, 0.03738883, 0.01830642, -0.049428508, -0.015837345, 0.033485346, 0.0111049535, 0.0023632564, -0.03214499, -0.008324306, -0.016272373, 0.027347934, 0.047453247, -0.00511451, 0.014438204, 0.018682659, 0.045736656, 0.080891564, 0.0024470286, 0.023961775, -0.0011323937, -0.016295888, -0.013509361, 0.001177954, -0.005987504, -0.002366196, 0.045501504, -0.028523682, -0.022774268, -0.056153793, -0.019635016, -0.005611264, -0.04416115, 0.005440781, -0.02078725, 0.035742782, 0.0107463505, 0.0098586595, -0.034449458, 0.05032208, 0.020634403, 0.035742782, 0.053190906, 0.014179539, -0.036001448, 0.050369106, -0.060950853, 0.017683271, -0.008083277, 0.028335562, -0.0095470855, 0.0162371, 0.026289757, 0.006266745, -0.013509361, 0.010975622, -0.033438314, -0.02304469, -0.005543659, -0.044043574, -0.037718043, 0.014308871, 0.015660983, 0.0052761757, 0.003924064, 0.014732141, -0.07157963, 0.005693567, -0.06664148, -0.04557205, 0.03847052, -0.018764962, -0.03449649, 0.0017327608, -0.048817117, -0.029182103, 0.0066194697, -0.04434927, 0.0072308592, 0.02375014, 0.07590639, -0.06311423, 0.050604258, 0.03496679, 0.045713138, -0.023620807, 0.024067592, -0.023079962, -0.030781122, 0.021645548, -0.0011294544, 0.03651878, -0.023714866, 0.0050439653, -0.0031774628, 0.0080009755, 0.0048205727, -0.047570825, -0.007801098, -0.014261841, 0.025349159, 0.029440766, -0.01788315, 0.012698094, 0.036189567, 0.021657305, 0.0018694417, 0.0011007955, -0.009699933, 0.028829377, 0.07534203, -0.014614566, -0.023620807, 0.03877622, -0.010699321, -0.009164968, -0.021692578, -0.07661183, -2.0449315e-05, -0.043197036, -0.011322468, -0.011575254, -0.0014630732, 0.047241613, 0.014873231, 0.027418477, -0.028711801, 0.0015578681, -0.03228608, 0.014391174, 0.023773653, -0.01774206, 0.009259027, 0.018459266, -0.05013396, -0.014132509, -0.004209183, -0.033626433, -0.018776719, 0.025631338, 0.03299153, 0.044701993, 0.025937034, -0.04792355, -0.023526747, -0.029769976, -0.025443219, 0.0045354534, 0.017142428, 0.0049175723, 0.0738841, -0.041174747, -0.014179539, 0.016954307, -0.027394963, 0.025090493, 0.015355288, -0.008206732, 0.022844812, -0.017095398, 0.001238946, 0.007942188, -0.0066900146, 0.02059913, 0.009347208, 0.0034714004, -0.002103122, 0.043244064, 0.01788315, -0.037271257, -0.024996433, 0.033015046, -0.006631227, 0.03680096, -0.008377215, 0.0047382703, 0.023961775, -0.051827036, -0.028029867, -0.012827427, -0.015284743, -0.04232698, 0.00016194112, 0.013521119, 0.08564159, 0.009694055, -0.0411042, -0.06847565, 0.034990303, 0.026360303, -0.006237351, 0.011445921, -0.0065489244, 0.021445671, 0.020175861, -0.042797282, -0.015966678, 0.070168726, -0.02177488, -0.012286582, -0.009023877, -0.0095470855, -0.034919757, 0.012263067, 0.022033544, -0.026430849, -0.012792154, 0.046583194, -0.04528987, -0.047900032, -0.027724173, 0.028265018, 0.0020634404, 0.023303354, -0.049099296, -0.026618969, 0.028923437, -0.020093558, -0.004412, 0.00046515587, 0.011510587, -0.001797427, -0.0024235137, 0.00079803995, 0.021657305, 0.0022118788, -0.031157361, 0.035883874, -0.007795219, -0.055777553, 0.03501382, -0.008200852, -0.057799842, -0.0017988967, 0.056577064, -0.009253148, 0.009629388, -0.039434638, 0.030992756, 0.061562244, 0.00971757, 0.027959323, 0.02516104, 0.053661205, 0.058082025, -0.043926, 0.028923437, 0.015402318, 0.0037036107, 0.019364594, -0.0024220438, 0.023479717, -0.028711801, 0.0058552325, -0.036730412, -0.014932019, 0.0055730524, -0.022503845, -0.014967291, -0.03134548, -0.009323693, 0.005237964, 0.013309484, 0.054319624, -0.007054497, 0.11362443, -0.028688287, -0.041809652, 0.024502618, 0.010763986, 0.040375236, -0.01651928, -0.030898696, 0.0060374737, -0.017847877, 0.04119826, 0.018459266, -0.026219213, -0.014861473, 0.03186281, -0.027042238, 0.017236488, -0.03148657, -0.038305916, -0.00088769087, 0.024079349, 0.021187006, -0.07426034, -0.015531651, -0.012815669, 0.0071074055, 0.018482782, 0.06819347, -0.058646385, -0.037153684, -0.046630222, -0.0013124304, -0.042961884, 0.010099688, 0.030710576, -0.0021457428, -0.0018606235, 0.006366683, -0.04613641, -0.017894907, -0.0098469015, 0.010040901, -0.036213085, -0.041598015, -0.009317814, -0.031933356, 0.015708013, 0.017800847, -0.053990416, -0.010517079, 0.046583194, 0.043855455, -0.018188844, -0.007771704, -0.054931015, 0.014896746, -0.016672127, 0.017730301, -0.036542293, 0.0027130418, -0.015543408, 0.028006352, 0.029911067, 0.0041680317, -0.022809539, -0.024220439, -0.03139251, 0.054225564, 0.009376602, 0.012321854, 0.08512426, -0.0025557855, -0.003688914, -0.011240165, 0.034520004, -0.08916884, 0.034896243, 0.030945726, 0.025842974, 0.0071132844, -0.024149895, 0.0043855454, -0.012909729, 0.06292611, -0.009047392, 0.038823247, 0.0013851798, 0.015684498, -0.027583083, -0.0050762985, 0.013121364, 0.01055823, 0.0064842585, -0.01928229, 0.0056435973, 0.051968127, 0.02224518, 0.0035331273, -0.013885601, -0.017365819, -0.052156247, 0.0015990193, -0.031180875, 0.03675393, -0.039669786, -0.015649226, -0.042985402, 0.014896746, -0.008289034, 0.008865151, -0.035695754, 0.0061491695, 0.033485346, -0.014297114, 0.0045501506, 0.018365206, -0.029135073, -0.0013227181, 0.014884988, -0.0022985903, -0.023644323, 0.01934108, -0.009805751, -0.014743898, -0.051827036, -0.007895158, 0.017330548, 0.006425471, 0.044607934, -0.006913407, 0.015237713, -0.005546598, 0.020446284, 0.03604848, -0.0059728073, -0.03459055, -0.019446896, -0.010252535, -0.004097487, 0.0040063662, 0.01642522, 0.029417252, 0.016578067, 0.0075306753, 0.0010949167, 0.023244567, 0.009264906, -0.0051879943, 0.032685835, 0.024149895, 0.02177488, 0.032685835, -0.021010643, 0.027018722, -0.027747687, 0.017777331, -0.0020311072, 0.011475314, -0.061327092, -0.00019785659, 0.02106943, -0.009276663, 0.0005173298, 0.0020693191, -0.020869553, -0.038987853, 0.022609662, -0.0065489244, 0.0047382703, -0.015978435, 0.043338124, 0.005940474, 0.0019943651, 0.010816895, -0.014626323, -0.020893069, 0.03167469, -0.037365317, -0.0625969, 0.03129845, 0.0017606849, -0.027112782, 0.012921487, 0.0047470885, -0.011163741, 0.014308871, 0.009952719, -0.03049894, -0.047194585, -0.03275638, 0.027489023, -0.009470662, 0.018471025, -0.015014321, 0.06551276, 0.018682659, -0.0005243108, -0.023691352, 0.005908141, 0.0037976708, -0.015484621, -0.058881532, 0.024220439, 0.0027365568, -0.034755155, 0.024761284, 0.008800485, 0.0011897115, 0.04491363, 0.042444557, -0.003665399, -0.0010611139, -0.027559567, -0.008994483, -0.008577093, -0.020481557, 0.018271146, 0.02219815, 0.041315835, 0.052767634, -0.0058464142, 0.010299565, -0.014332386, -0.034896243, -0.04293837, -0.00030532744, -0.028570712, -0.02323281, -0.010952107, 0.010787501, 0.059681043, 0.022033544, -0.01604898, 0.03148657, 0.02172785, -0.0017165942, -0.025772428, 0.020340465, -0.015543408, -0.033626433, -0.0028423744, -0.008253762, -0.035037335, 0.0014101645, -0.031039786, 0.00013962024, -0.027841747, -0.0023867714, 0.00090312253, 0.056859244, -0.054836955, 0.021857183, 0.0064313496, 0.017071882, -0.007912794, -0.003594854, 0.060198374, 0.024949403, 0.0033244316, 0.02205706, 0.020023013, 0.023867715, 0.0008568274, 0.014085479, 0.034143765, 0.0057523544, -0.01032308, -0.04011657, 0.03710665, 0.03261529, -0.015555166, 0.04312649, 0.0038711552, -0.030075671, 0.008147944, 0.011669314, -0.06334938, 0.00089063024, 0.032027416, 0.04510175, 0.023056448, -0.028006352, 0.025560793, 0.020434525, 0.0238442, -0.014932019, 0.0013778314, 0.016601583, 0.018235873, 0.029393736, 0.0035919147, -0.012509975, -0.052391395, 0.018917808, 0.013238939, -0.013015547, -0.0038094283, 0.015214198, 0.050180987, -0.039669786, 0.00024598883, 0.046065863, -0.04378491, -0.017271759, 0.03125142, 0.030428397, 0.018776719, -0.026007578, 0.0076423716, 0.0046118773, 0.0046971194, 0.012227794, -0.020434525, 0.009076786, 0.029887551, -0.022162877, 0.0040886686, 0.029652402, 0.002882056, 0.011128468, 0.00455309, 0.027206842, -0.0162371, 0.031110331, -0.0051938733, 0.0076188566, 0.027136298, -0.035836846, -0.013262454, 0.020058285, 0.019317564, 0.0034390672, 0.018694416, 0.004279728, -0.015131895, -0.04042227, 0.026336787, 0.035789814, -0.035977934, -0.0024338013, 0.04129232, -0.014732141, -0.018929567, -0.03228608, 0.008947453, 0.004655968, -0.037929676, 0.00088254694, -0.06099788, -0.014767413, 0.0038447008, -0.0057494147, -0.028735317, 0.012380642, 0.009206118, -0.004356152, -0.014003176, -0.012921487, 0.012274824, -0.04331461, 0.027441993, -0.04002251, 0.014567536, 0.0020120014, -0.0034008552, -0.054037444, 0.0014638081, 0.02360905, -0.0034890366, 0.011434164, -0.018341692, 0.033297226, 0.019693803, 0.053661205, -0.012357127, -0.01918823, 0.054742895, 0.025184553, -0.060245402, 0.034567036, -0.0119808875], [0.013145372, -0.012827522, -0.029287618, 0.03196664, 0.025428008, 0.044862274, -0.021954361, 0.017345535, -0.016187653, 0.010647979, -0.029469246, 0.008814665, 0.012191822, -0.0014941794, 0.0027684178, 0.024156608, -0.042523805, 0.0051622265, -0.023566315, -0.020580795, -0.017266072, -0.04990247, -0.046678558, 0.009240357, 0.011749103, 0.015324916, -0.011539094, 0.020410517, -0.031353645, 0.019071007, 0.029968726, 0.013531334, -0.006680528, -0.014257848, 0.014938955, -0.036166802, 0.0018914919, -0.011919379, -0.035031624, 0.0110509675, -0.022658173, 0.024270127, 0.005562377, -0.039436117, -0.006260512, -0.019422913, -0.0425011, -0.0046230163, -0.005287096, -0.028129734, 0.032307193, -0.050311133, 0.005338179, -0.040798333, -0.023952276, 0.02454257, 0.022726282, -0.075512104, 0.038913935, -0.05258149, -0.055351328, 0.019876983, 0.022748986, -0.0072481176, -0.02803892, -0.01807205, -0.0052076336, 0.01338376, 0.01591521, -0.004472605, -0.02143218, 0.01090907, -0.011346114, -0.017141202, -0.006794046, -0.057167612, 0.09680806, 0.014541643, -0.0058121164, -0.007872466, 0.0041093477, -0.037824165, -0.04270543, -0.01056284, 0.035939768, -0.050856017, 0.034600254, -0.06947295, -0.007072165, -0.0060107727, 0.03164879, -0.006856481, 0.05244527, 0.055169698, -0.078372754, 0.004574771, -0.008383296, 0.0103812115, -0.035281364, -0.02588208, -0.027516738, -0.02638156, -0.05485185, -0.027312405, 0.029946022, 0.021068921, 0.05035654, -0.01138017, -0.022090582, 0.072333604, 0.026313448, 0.0019354802, -0.015109232, 0.0025796941, -0.023566315, -0.00014775064, -0.015268157, -0.074195296, -0.034259703, 0.03596247, -0.039299898, -0.0056361635, 0.06556794, 0.04368169, -0.017652033, -0.007934901, 0.008962238, 0.018957488, 0.004739372, 0.020660257, -0.022919264, 0.040230744, 0.05993745, 0.015211399, 0.046338007, -0.01940021, 0.037619833, -0.043749798, -0.059392564, 0.0077703, -0.024769606, -0.0025640854, -0.042478397, 0.02352091, -0.049630024, -0.02080783, -0.028901657, -0.008491139, -0.06456898, -0.009382254, -0.015007066, -0.027471332, 0.024837716, 0.018117456, 0.032057453, -0.036893316, 0.0019099386, 0.022056527, -0.010006603, 0.02327117, 0.04084374, -0.07764624, 0.011499363, 0.03748361, 0.0008684119, -0.08536546, 0.036643576, -0.0069416193, -0.04363628, 0.028016217, -0.018503418, -0.039753966, 0.026971852, -0.008820341, -0.020966755, 0.020478629, 0.03341967, 0.022204101, 0.0016630372, -0.05980123, -0.041275106, 0.005497104, 0.04554338, -0.04794996, 0.053580448, 0.06075478, -0.020592147, 0.02910599, 0.02626804, -0.036439244, -0.024519866, -0.013372408, -0.017538516, -0.03748361, -0.0063342988, -0.05276312, -0.022226805, -0.0862736, 0.0019808873, 0.024633383, -0.037846867, -0.044362795, 0.00088614906, 0.03464566, -0.05149172, 0.03178501, 0.046451524, -0.02080783, 0.019059654, -0.024202015, 0.020387815, 0.035871655, -0.009773891, -0.033828333, -0.0024519865, -0.008116529, -0.05403452, 0.02581397, -0.051900383, -0.05880227, 0.046769373, -0.020444574, 0.026994556, -0.041138887, 0.009075756, 0.05467022, -0.0013544104, 0.017674737, 0.03832364, 0.029287618, 0.03603058, -0.04288706, -0.03571273, 0.026903741, -0.047677517, -0.03369211, -0.011715047, 0.032057453, 0.060800187, -0.00963767, 0.009944168, 0.04586123, -0.030899571, -0.023861462, 0.029787097, 0.022056527, -0.008201668, 0.029355729, -0.014212441, -0.027176185, 0.032511525, -0.014042164, 0.025337195, 0.010000926, -0.018355845, 0.02797081, 3.724806e-05, -0.08068852, 0.0090417005, -0.0070948685, 0.0128956335, 0.023123596, 0.00075773196, 0.08568331, -0.010318777, -0.012396154, 0.023543611, -0.043409243, -0.061889958, 0.022124639, 0.024837716, -0.04858566, -0.030059539, 0.022612765, 0.0621624, -0.03836905, 0.04917595, 0.024315534, 0.016357929, 0.07655647, 0.0024690144, 0.008133558, 0.00624916, 0.037574425, 0.054534, -0.014507587, -0.036620874, -0.020762423, -0.02835677, 0.0028180818, 0.014507587, -0.053807482, 0.04002641, 0.028720029, 0.054443184, 0.024338238, 0.023816055, 0.009467392, -0.051854976, 0.034849994, -0.021704622, 0.003408375, -0.015041121, -0.060981814, -0.0055339974, 0.032579638, 0.008854396, 0.07392286, 0.009240357, -0.0074524498, 0.089497514, 0.00091949495, -0.014700567, -0.049539212, 0.0367798, -0.017129852, -0.004475443, 0.013758369, 0.042569213, -0.018174216, -0.04111618, -0.036825206, -0.10198448, -0.0029287618, 0.030604426, -0.011136105, -0.03832364, -0.021227846, -0.037778758, -0.0024023226, -0.078736015, -0.022238156, 0.014802733, -0.0060788835, -0.052672304, -0.096898876, -0.022351675, -0.057167612, 0.019774817, -0.030331982, -0.0062832157, 0.043341134, -0.038777713, -0.0602553, 0.008689795, 0.006260512, 0.0065613342, -0.006907564, 0.026744816, -0.040866442, 0.001324612, 0.044385497, 0.056849763, 0.015279509, 0.004418684, -0.0070551373, -0.002694631, -0.035576507, -0.010642303, 0.018162863, 0.0951734, -0.08236859, 0.0006176083, 0.039277192, -0.016414689, -0.031467162, -0.06352462, -0.01991104, -0.013996757, 0.048676476, -0.04606556, -0.02055809, 0.0073105525, -0.037710644, -0.03857338, -0.0109374495, 0.05789413, 0.00529561, -0.042069733, -0.013905942, -0.025836673, -0.022930615, -0.008808989, 0.018730452, 0.026222635, 0.017652033, -0.012634542, 0.021988416, 0.026971852, -0.011425576, -0.017277423, 0.029809799, -0.004174621, -0.033578593, 0.027448628, 0.07110761, -0.05480644, 0.006714584, 0.006901888, 0.014394069, 0.009416309, -0.04245569, -0.014360014, -0.01941156, 0.0103301285, 0.036303025, -0.022556007, -0.012123711, 0.0036354107, 0.037006836, 0.005128171, 0.021193791, -0.0016304008, 0.021806788, 0.004955056, 0.05126468, 0.0073900153, 0.04370439, -0.0030053863, 0.00047358248, 0.015324916, -0.06007367, -0.0027215916, 0.012021545, 0.002542801, 0.0412297, -0.035758138, 0.055669177, -0.0117831575, -0.039209083, -0.023361983, 0.011136105, -0.002904639, -0.026404263, -0.046088267, -0.04286436, -0.048948918, -0.052036606, 0.0021511642, 0.011624233, 0.0020944052, 0.005233175, 0.0076340786, 0.018764509, -0.01991104, -0.019071007, -0.075012624, 0.031943936, 0.034532145, -0.020217538, -0.020001853, 0.008377621, -0.04597475, -0.03312452, 0.08418487, -0.0077986796, 0.0074410983, -0.02213599, 0.018128809, -0.07306012, 0.02715348, 0.007957605, 0.045361754, -0.010244991, 0.041774586, -0.0006935234, -0.02974169, 0.050628982, -0.005000463, -0.0016076972, 0.020853238, -0.0009606452, -0.075693734, -0.014870845, -0.04863107, -0.024088498, -0.034146182, -4.347824e-05, 0.037687942, -0.060209893, 0.009949843, -0.034532145, -0.00057610334, 0.012464265, 0.034804586, -0.015358971, 0.02118244, 0.027607553, 0.055987027, -0.013349704, 0.010693386, 0.03748361, 0.04781374, 0.009688753, -0.0052019577, -0.04338654, -0.0704265, -0.029650874, 0.015324916, -0.00030507936, 0.037960384, 0.020978108, -0.0073048766, 0.008076798, 0.029832503, -0.023316575, -0.043931425, -0.0010216611, 0.00562765, -0.07147087, 0.0018446659, 0.0017779741, -0.034532145, -0.009331171, -0.026563188, 0.00938793, -0.012486969, 0.0052473648, 0.014609753, 0.005497104, -0.021227846, -0.013939998, -0.045452565, -0.016664427, -0.01762933, 0.02340739, 0.02949195, -0.0029855208, -0.00226752, -0.02701726, 0.0010188231, 0.009779567, -0.03989019, 0.018083401, -0.008979266, -0.02962817, 0.017799607, 0.027357813, -0.041524846, 0.033714816, -0.0014728947, 0.060845595, 0.025950192, 0.02054674, -0.021965712, 0.044067647, 0.03285208, 0.011107726, -0.018128809, 0.06334299, -0.072515234, 0.04529364, -0.022885209, 0.043931425, 0.02626804, -0.039549634, -0.00929144, -0.050538167, 0.014598401, -0.0029344377, 0.021613808, 0.0075716437, 0.08404865, 0.026086412, -0.007180007, -0.06638527, 0.06157211, 0.032715857, -0.011953435, 0.006748639, 0.0059256344, 0.055987027, 0.005119657, -0.0259956, -0.054715626, 0.06139048, -0.015234102, -0.016755242, 0.017095795, -0.01820827, 0.0046173404, -0.017209314, -0.012838874, -0.039095566, -0.0034764856, 0.0136335, -0.017107148, -0.04508931, -0.021000812, 0.027289702, -0.01732283, -5.024054e-05, 0.008916831, -0.0151319355, 0.01750446, 0.020149427, -0.023702538, 0.024224719, -0.010977181, 0.017969884, 0.014598401, -0.0068848603, -0.012078304, 0.00060909445, -0.05798494, -0.028379474, 0.026858335, -0.049766246, 0.015449786, 0.023089541, -0.0589839, -0.0026080736, 0.02061485, -0.039731264, 0.018412603, -0.011045291, -0.0044499016, 0.05131009, -0.0037262249, 0.02835677, 0.036507357, -0.006708908, 0.08858937, -0.023725241, 0.01927534, 0.029673578, -0.0013920132, 0.0021710298, -0.011119078, -0.018889379, -0.017663386, -0.04649693, 0.0012657245, -0.024111202, 0.007838411, 0.030876867, -0.019195877, 0.04345465, -0.02340739, 0.035031624, 0.026608596, 0.020194834, 0.025042048, 0.03260234, -0.031739604, -0.028107032, 0.04908514, 0.016187653, 0.053625856, -0.021863546, -0.025836673, 0.034668367, 0.025700452, 0.05176416, -0.008298159, -0.016914167, -0.00022082779, 0.025042048, -0.026994556, 0.029310321, -0.040889148, -0.026449671, 0.0029202478, 0.026358856, 0.0020546739, -0.03603058, -0.023339279, -0.015551952, 0.010625275, 0.03832364, 0.06988162, -0.028969767, -0.02772107, -0.0142692, -0.04166107, -0.02327117, 0.0074751535, 0.04168377, -0.012078304, -0.023929574, -0.010227962, -0.022181397, -0.026676705, -0.028742732, -0.049811654, 0.001511207, -0.034395922, -0.04649693, -0.04522553, 0.014575698, 0.007838411, -0.042296767, -0.03253423, 0.05589621, 0.002112852, -0.005091278, 0.0010926097, -0.025791267, 0.015631415, 0.0061356425, 0.006430789, -0.024247423, -0.03469107, -0.029650874, 0.0026917933, 0.0005172159, -0.006731611, 0.0022419784, -0.075693734, -0.018378548, 0.011930731, 0.0038255532, 0.0059596896, 0.046769373, 0.039299898, 0.007889494, -0.025132863, 0.0007733407, -0.05993745, 0.0026861173, -0.015120584, -0.017515812, 0.010971505, -0.049448397, 0.014212441, -0.06738422, 0.031557977, -0.013735666, 0.056214064, -0.0052729063, 0.013474574, -0.00156229, -0.00232286, 0.004594637, -0.020694314, -0.006640797, -0.008678443, 0.012214526, 0.02987791, -0.00562765, -0.008479787, -0.008843044, -0.03369211, -0.037665237, 0.014859493, -0.04147944, 0.029946022, 0.008650064, -0.012929688, -0.024746902, -0.0131226685, 0.003947585, 0.040117227, -0.0032721534, 0.00958091, 0.050583575, 0.012350747, 0.0015708039, 0.024202015, -0.037619833, -0.021670567, 0.0014345824, -0.0055169696, -0.0336013, 0.008286807, 0.0074467743, -0.022873856, -0.050538167, 0.040185336, 0.011817213, 0.02803892, 0.05766709, -0.013758369, -0.0025740184, -0.00015289441, -0.018787213, -0.016403336, -0.007889494, -0.015722228, 0.013054558, 0.026949149, -0.02252195, 0.008774933, -0.026654003, 0.037256572, 0.023952276, 0.0038028497, -0.0085989805, -0.0042994902, -0.00995552, 0.042001624, 0.029264914, 0.018321788, 0.005673057, 0.08486598, -0.008559249, 0.04561149, -0.048313215, -0.041638363, 0.0011295031, -0.048994325, -0.03419159, -0.025723156, 0.00821302, 0.02563234, -0.025836673, -0.040503185, -0.027743774, -0.01877586, 0.020455925, 0.023679834, 0.046201784, 0.015722228, 0.024724199, -0.0038000117, 0.04134322, 0.0071970345, -0.00464572, 0.015676823, 0.03278397, 0.01967265, -0.015778989, -0.0039617745, -0.013712962, 0.012906985, 0.033260744, 0.003672304, -0.029673578, -0.014995715, -0.014984363, -0.020217538, -0.025904784, -0.031353645, 0.03242071, 0.01706174, 0.011374493, -0.04452172, 0.025064752, 0.020331055, -0.015075177, -0.0030053863, 0.0131226685, -0.023293873, -0.010920422, -0.048812695, 0.023861462, -0.009773891, 0.0074865054, -0.0034793236, 0.0022547492, 0.06570416, 0.0037914978, 0.012373451, 0.004208676, -0.015211399, -0.009807946, -0.04508931, 0.039368007, -0.023384687, 0.027539441, 0.05226364, 0.034395922, 0.0072651454, -0.014303255, -0.0052643926, -0.021352716, -0.013531334, -0.049539212, -0.00034959966, -0.09444689, -0.047541294, 0.023679834, 0.013769721, 0.047450483, 0.019684004, -0.06593119, -0.0009124001, -0.021591105, 0.033396967, -0.007713541, -0.006896212, 0.024587976, -0.0026903742, -0.025337195, 0.023169003, -0.025405306, -0.008547897, -0.00045868327, -0.020353759, 0.026041005, 0.01306591, 0.006203753, -0.008457083, 0.017788254, 0.0028322716, 0.012532376, -0.041842695, -0.016970925, 0.0150184175, 0.011363141, -0.0034736476, -0.0037574423, -0.008967914, -0.02188625, 0.006975675, 0.011715047, 0.008178964, 0.013145372, 0.014076219, -0.025927488, -0.012509672, 0.024951234, 0.055487547, -0.025450712, 0.02461068, 0.010125796, -0.025450712, -0.029355729, 0.0073275804, -0.029855207, 0.0034906752, 0.027948106, 0.011737751, 0.06425113, -0.02454257, -0.0075092087, -0.0054744007, -0.005829144, 0.03405537, -0.018991545, 0.032897487, 0.0128956335, 0.05176416, -0.006731611, -7.454046e-05, -0.014609753, 0.0045492295, 0.011805861, -0.049947876, -0.0016105352, 0.01616495, 0.1065252, -0.014246496, -0.003507703, 0.026926445, -0.037892275, -0.015154639, 0.047087222, 0.0009088527, -0.03391915, -0.0044158464, 0.018083401, 0.0047308584, 0.0011827146, -0.013974053, -0.012918336, 0.0050089774, 0.04922136, 0.0080938265, 0.055532955, 0.027516738, -0.029923318, 0.0045520677, -0.0048273485, 0.00767381, -0.007951928, 0.030831462, -0.029083285, -0.023134947, 0.031035794, -0.04490768, -0.0055226455, 0.025972895, -0.019479671, 0.009172246, 0.015165991, -0.004824511, -0.005176416, -0.020717015, 0.0374155, 0.010568516, -0.04572501, -0.013099966, -0.02454257, -0.012123711, -0.019842928, 0.013270242, 0.046769373, 0.0076227267, -0.027857292, 0.047495887, -0.022873856, 0.028788138, 0.029015174, -0.017424997, -0.005701436, 0.019184524, 0.008644388, 0.010994208, -0.014780031, 0.0012281218, -0.017754199, -0.020240242, 0.025223676, -0.043045986, 0.005519808, 0.0007712122, -0.0005608494, -0.050401945, -0.0011685248, 0.01313402, -0.008979266, 0.001724053, -0.032239083, 0.0061924015, 0.02899247, 0.03278397, -0.024497163, 0.0057042744, 0.077373795, -0.0034991892, -0.039186377, 0.020966755, 0.010222287], [0.046226997, 0.016752096, -0.02142852, 0.023565268, 0.027692242, -0.006059204, -0.03721603, 0.007332095, -0.013882751, 0.0073748296, -0.016483476, -0.019890063, -0.01472524, -0.032942533, 0.03494497, 0.047545675, -0.025372345, 0.0035561575, -0.0048717833, -0.02835158, -0.013504242, -0.04854689, -0.03609271, -0.01451767, -0.012472497, 0.007197785, -0.02245416, -0.0011958153, 0.015775299, 0.012539652, 0.02905976, 0.015311318, 0.047741033, -0.0039987694, -0.005054933, -0.010769205, -0.009212432, 0.05636128, 0.0016544528, -0.010451745, -0.024981625, 0.004945043, -0.031355236, -0.006636126, -0.048034072, -0.0055005974, 0.025396764, -0.0025686752, -0.022490788, -0.039731286, -0.015958447, 0.013357721, -0.030695897, -0.013577501, -0.05836372, -0.0132234115, 0.03606829, 0.016947456, 0.027423622, 0.026813123, -0.08239297, 0.02964584, 0.04358964, -0.0022374794, -0.02212449, 0.0073748296, 0.015408998, 0.04283262, 0.06520131, 0.053040165, 0.019865643, -0.0117704235, 0.025030466, 0.0047374736, 0.027179422, -0.04385826, 0.05782648, 0.017155027, 0.015360159, -0.020488352, 0.066471145, -0.01067763, 0.0436629, 0.020256363, -0.01089741, -0.029108599, 0.02815622, -0.1265931, -0.032991376, 0.012258823, -0.00728936, -0.018901054, 0.031159878, -0.0039865593, -0.037411388, 0.017765526, 0.04307682, 0.010329646, -0.032796014, -0.027130583, -0.01395601, -0.023382118, -0.06319887, -0.05084237, 0.061635993, 0.0737483, 0.016837567, 0.008840028, -0.033430934, 0.02108664, 0.02111106, -0.02130642, -0.0004967937, 0.047081694, -0.049157392, 0.024847316, -0.05684968, -0.0737483, -0.0022878456, -0.02157504, -0.09470063, -0.088888675, 0.067447945, -0.034041435, 0.031916894, 0.025250245, 0.00043688845, 0.052991327, 0.031379655, -0.0042460216, -0.025616545, -0.046129316, 0.015384579, 0.019572603, 0.031868055, 0.039316144, 0.09030504, -0.029108599, -0.076385655, -0.0076129246, -0.05074469, 0.008827818, -0.022734988, 0.027618982, -0.009847351, -0.026593342, -0.027692242, -0.016190438, -0.07018298, -0.038217247, -0.031868055, -0.054651882, -0.008394363, 0.010561636, 0.03389491, -0.018656854, 0.010842465, -0.009126962, 0.020940121, 0.0436629, 0.05543332, -0.033113476, 0.0001473783, 0.0298412, 0.024481015, -0.04388268, 0.010073236, -0.054749563, -0.034310054, 0.012362608, 0.01473745, -0.015213639, 0.012527443, 0.00041590256, -0.031648275, 0.0029227647, 0.012356503, 0.01459093, -0.032087836, -0.029670259, -0.017093977, 0.0589498, 0.040756922, -0.03687415, 0.009517682, 0.048742253, 0.016459057, 0.039584763, 0.019487133, -0.018998733, -0.04542114, 0.024346706, 0.0037789897, 0.010940145, -0.0023565267, -0.015738668, -0.031550597, -0.015506678, -0.0220146, 0.04935275, 0.048766673, -0.054310005, 0.032625075, -0.013198991, -0.006782646, 0.038485866, 0.040170845, 0.046349097, 0.0032020682, 0.03492055, 0.019352823, 0.0049725156, 0.011868103, -0.04395594, -0.012698382, 0.030256338, -0.048839934, -0.020793602, -0.02903534, -0.025299085, 0.032673914, -0.034700774, 0.016227068, -0.02219775, 0.0015048804, 0.006483501, 0.0003592406, 0.010982879, 0.015824137, 0.014969439, -0.03775327, -0.06251511, -0.032063417, -0.00726494, -0.062417433, 0.020988962, -0.03465193, -0.025640965, 0.0287423, -0.03413911, 0.044835057, 0.007973119, -0.03726487, 0.022161119, 0.024407756, 0.032747176, 0.055140283, -0.014908389, -0.02908418, 0.052502926, 0.0029563422, 0.020427302, -0.004584849, 0.037680008, -0.017167237, 0.054847244, 0.016336957, 0.0015407472, -0.0077777593, 0.018632434, -0.025934003, 0.04869341, -0.018815584, 0.0019184935, -0.0047191586, -0.029816778, 0.027838761, -0.031452917, -0.027252682, -0.016752096, 0.044175718, -0.058998637, 0.039731286, 0.03589735, 0.05137961, -0.015579939, 0.08107429, 0.02257626, -0.035384532, 0.055042602, -0.027838761, 0.04283262, 0.00041781037, 0.025738643, -0.009835142, 0.02172156, 0.005860792, -0.017631216, -0.004239917, 0.02937722, -0.012844902, 0.0069535854, -0.009920611, -0.0218925, 0.0026999325, -0.0006772725, 0.0589498, -0.012832692, -0.020561611, 0.0022390056, -0.026715443, -0.03543337, -0.06383379, -0.027448041, 0.041758142, 0.051965687, -0.00038556836, 0.05152613, 0.026666604, -0.04466412, 0.016532317, 0.016507898, -0.018217295, -0.028058542, -0.026153784, 0.01489618, 0.002530519, 0.05040281, 0.053137846, -0.0214041, -0.019194093, -0.04285704, -0.087863036, 0.022490788, 0.0025656228, 0.020610452, 0.045128096, -0.031794798, 0.027789922, 0.012539652, -0.08083009, 0.022796039, 0.02090349, 0.002463364, -0.03763117, -0.06300351, 0.030915678, -0.05167265, 0.031111037, -0.037948627, 0.031111037, 0.027741082, -0.01055553, -0.01452988, 0.016288117, -0.030500539, -0.027618982, 0.019633653, 0.026642183, -0.017631216, 0.0014255155, 0.015250269, 0.002217638, -0.0029410797, 0.007075685, -0.014102531, -0.041587204, -0.031770375, -0.009987766, 0.05064701, 0.040341783, -0.02233206, 0.031721536, 0.069987625, 0.047936395, 0.004007927, 0.015506678, -0.010561636, 0.0055219647, 0.025763065, -0.044688538, 0.038314927, -0.019096414, -0.027350362, -0.033919334, 0.006312561, 0.0421977, -0.011605589, -0.05030513, 0.016166018, -0.026544504, -0.005824162, -0.051965687, 0.0029899196, -0.0075823995, 0.012368713, -0.039462667, 0.026568923, -0.0069841105, -0.026593342, -0.00057844794, 0.003090652, 0.040732503, -0.037069507, 0.02212449, 0.0056104874, -0.027496882, 0.07267382, 0.004963358, 0.027960861, -0.023443168, 0.012283243, -0.027765501, -0.048864353, 0.03455425, -0.076874055, 0.011636114, 0.0011973415, -0.017814366, 0.09709378, -0.045396715, -0.0056318548, 0.0076495544, 0.041880243, 0.021184321, 0.0058943694, 0.020195313, 0.017484697, -0.023492007, 0.0013591237, 0.03814399, 0.00063987944, -0.04258842, 0.056263603, -0.04554324, 0.011526224, -0.06905966, 0.054993764, -0.008858343, -0.039487086, -0.010549425, -0.02117211, -0.031404078, -0.0056806947, 0.004661161, -0.031770375, -0.02915744, -0.02263731, -0.02109885, 0.026715443, 0.006428556, -0.022503, 0.004346754, 0.026202623, -0.024065876, 0.003577525, -0.032649495, -0.04947485, 0.040781345, 0.0062881415, -0.016227068, -0.013015842, -0.059633557, -0.042564, 0.0421977, -0.023162337, 0.06788751, 0.02932838, 0.050940048, -0.07975561, -0.002333633, -0.01128813, 0.03516475, 0.037069507, 0.05098889, -0.012338188, -0.041513942, 0.0419535, 0.0046825283, 0.05733808, -0.04349196, 0.0044780113, 0.012142828, 0.033430934, -0.018815584, -0.030622637, -0.008345524, 0.049279492, 0.0058577396, 0.02212449, -0.0054639676, 0.022100069, -0.0061172014, 0.083907, 0.007173365, -0.027936442, 0.008528673, 0.04986557, 0.040170845, 0.02090349, -0.032551814, 0.03682531, -0.029548159, -0.0035347901, -0.010018291, 0.009743567, -0.0068375906, -0.044859476, -0.027155003, -0.0058272146, 0.001015718, 0.062856995, 0.032820433, 0.00041895505, 0.034236792, 0.012441973, -0.039316144, 0.005763112, 0.015518889, 0.047765452, 0.013870541, -0.017728895, -0.05079353, -0.03802189, 0.006199619, -0.03501823, -0.024664165, 0.029572578, -0.019987741, 0.0014178843, -0.014126951, -0.054310005, -0.030402858, -0.025103725, -0.044566438, -0.0014911442, -0.00060553884, 0.0021520096, 0.018339396, -0.049279492, 0.023308858, -0.024798475, 0.019951113, 0.0010019818, 0.031965736, 0.0018086038, 0.036019452, -0.0057264823, 0.01445662, -0.01078752, -0.023565268, 0.04241748, -0.032502975, 0.008150164, -0.019780172, 0.05054933, 0.06441987, -0.031770375, -0.0057173246, 0.017704476, -0.030964518, 0.024505436, 0.004545166, 0.012649543, 0.02881556, -0.03455425, -0.024615325, -0.030451698, -0.022796039, -0.013614131, -0.0083577335, 0.009829036, 0.070231825, 0.030964518, -0.008449309, -0.027350362, -0.019902272, -0.020012163, -0.02168493, 0.024493227, -0.001151554, 0.007197785, 0.00047008434, -0.024126926, -0.016996296, 0.055189125, 0.013565292, -0.029303959, -0.024664165, -0.017936464, -0.048253853, 0.011764319, 0.008534778, -0.034480993, 0.004484116, 0.011202659, -0.013113522, -0.005799742, -0.03748465, -0.009658096, 0.02064708, 0.032380875, -0.001207262, -0.022234378, -0.013748441, -0.019609233, 0.006211829, -0.020378461, 0.030549377, 0.045201357, -0.010189231, -0.05811952, 0.019523762, -0.0142978905, -0.026056103, -0.011886419, 0.0021214846, -0.06676419, 0.017875414, 0.009126962, -0.0873258, 0.006721596, 0.041343004, -0.020158682, -0.0024099455, -0.027814342, 0.023968197, 0.068961985, 0.022026809, 0.07965793, 0.062466275, 0.022429738, 0.041269742, -0.017411435, 0.02227101, -0.023992617, 0.017741105, 0.011776528, -0.0076922895, 0.0035256327, 0.023699578, -0.05089121, -0.032038994, -0.037533488, 0.0141391605, -0.0038003572, 0.0026236202, -0.0002739615, -0.0068742204, 0.047618933, 0.013430981, 0.018827794, 0.0032997478, 0.06373611, -0.026300304, -0.047130536, 0.012625122, -0.008589723, 0.033186734, -0.0043620165, -0.025030466, 0.039438244, -0.029938878, 0.02952374, 0.021050012, -0.01407811, -0.048913192, 0.056507803, -0.005134298, 0.027252682, -0.029548159, -0.06300351, 0.024713006, 0.026788702, 0.004484116, 0.0067277006, -0.010189231, -0.047081694, 0.0049419906, 0.017093977, 0.06485943, -0.05045165, -0.022356478, -0.022368688, -0.038730066, -0.038852166, 0.015201429, 0.01401706, -0.03638575, -0.027374782, -0.028082961, -0.025470024, 0.010476165, -0.033772815, -0.0021764294, -0.010140391, -0.05880328, 0.012246613, -0.024725216, -0.0075579793, -0.019548183, -0.023479797, -0.0117704235, 0.045128096, 0.021184321, -0.026666604, 0.02197797, -0.012735012, 0.009444422, 0.025738643, -0.00049259653, -0.031697117, -0.037313707, 0.027448041, 0.026837543, 0.03670321, -0.0030708108, -0.023064658, -0.0018864424, -0.024395546, 0.0297191, -0.025372345, 0.0011958153, 0.053528566, 0.020073213, 0.008601933, -0.018229505, 0.023394328, -0.09543323, 0.031990156, 0.019035364, 0.036922988, 0.015225849, -0.016178228, 0.0107264705, -0.05792416, 0.017667845, -0.025421185, 0.053528566, 0.00181013, 0.0059523666, -0.026373563, 2.768709e-05, 0.0074664047, -0.018766744, -0.02180703, -0.020354042, -0.02881556, 0.047203794, 0.023809467, 0.016275907, -0.039658025, -0.017008506, -0.059242837, -0.032576233, 0.0031181243, -0.007173365, -0.044957157, 0.022161119, 0.009609257, -0.025421185, -0.041855823, -0.006446871, 0.002301582, 0.04593396, 0.003983507, -0.013650761, -0.012649543, -0.00045024313, -0.0051678754, -0.009761881, 0.013589711, -0.01462756, -0.011526224, 0.06564087, -0.027936442, -0.030524958, -0.05767996, 0.030744737, 0.03645901, 0.02854694, 0.04918181, -0.0017948676, -0.0038827746, 0.016678836, -0.026715443, 0.033162314, -0.017020717, -0.039755706, -0.03633691, -0.0037454122, 0.038559128, 0.04156278, -0.046422355, 0.026202623, 0.029230699, 0.03440773, -0.01462756, 0.04363848, -0.027252682, 0.012228298, 0.027643401, -0.0068864306, 0.0059065796, 0.061342955, 0.0062881415, 0.048473634, -0.010054921, 0.051477287, 0.02212449, 0.0028891873, -0.07223426, 0.003504265, 0.016703257, -0.019682493, -0.055628683, -0.024810685, -0.0421977, -0.046202578, 0.016068337, 0.0045207464, 0.026104944, -0.014981649, 0.008467623, 0.016349167, 0.0049603055, -0.004749683, -0.017484697, -0.00705737, 0.0049236757, -0.025665384, -0.032161094, -0.026813123, -0.0055097546, 0.030744737, 0.068473585, 0.0123076625, 0.014847339, -0.02188029, -0.029621419, -0.031648275, -0.075604215, -0.018119615, -0.006446871, -0.002321423, 0.037045088, -0.0144322, 0.04358964, -0.00054715987, 0.034749612, -0.04114764, -0.015934028, -0.0032020682, -0.0036172075, -0.024835106, 0.019987741, 0.029890038, -0.040463883, 0.0034920552, 0.044737376, 0.039584763, 0.04830269, 0.019780172, -0.005164823, -0.02932838, -0.013137942, -0.031721536, -0.011025615, -0.024151346, 0.012551863, 0.027374782, 0.0025350978, 0.0020405934, -0.02178261, -0.023638528, -0.0065811807, -0.029108599, -0.048595734, -0.01459093, -0.0032783805, -0.01421242, -0.024713006, 0.00025335714, 0.04310124, 0.0047191586, -0.020671502, 0.059975438, 0.018363815, 0.010061026, -0.015628777, 0.0016971877, 0.006300351, -0.059487037, -0.020390673, -0.027521301, -0.032991376, 0.03650785, 0.013833911, -0.0023550005, 0.0059126844, 0.011623904, -0.030378439, 0.027618982, -0.01472524, 0.0111294, 0.01462756, -0.02144073, -0.040732503, -0.004413909, 0.023528637, 0.01423684, 0.01432231, -0.030402858, -0.0078815445, 0.014163581, -0.016629998, -0.006361401, -0.012600702, -0.018595804, 0.016910827, 0.0001976491, 0.025860744, 0.044712957, -0.01421242, 0.026373563, -0.017777735, 0.02207565, 0.004829048, 0.015421209, -0.051965687, 0.019084204, -0.0033516404, 0.004001822, 0.038388185, -0.032869276, 0.016190438, 0.02150178, 0.0077594444, 0.02257626, -0.032063417, -0.006162989, 0.018302765, 0.02147736, 0.0284981, -0.015567728, 0.020195313, 0.0021596407, -0.0021626933, -0.026568923, -0.018827794, 0.04249074, 0.098558985, -0.043785, -0.015982868, 0.023101289, -0.05709388, -0.023638528, 0.0042704414, 0.067447945, 0.019230723, -0.0059035267, 0.03587293, -0.032038994, -0.016764307, 0.015445628, -0.031159878, -0.012039043, 0.04297914, -0.006929165, 0.012057358, 0.002179482, -0.013479821, -0.02146515, 0.0059706816, 0.009908401, -0.016568948, 0.03655669, -0.0088644475, 0.010567741, 0.02810738, -0.047887553, 0.0067765405, 0.0056165922, 0.006562866, 0.0023076867, 0.0020573821, 0.0044291713, 0.004181919, -0.051330768, 0.025518864, 0.00020108315, -0.039609186, -0.032014575, 0.038192827, 0.009175803, -0.012124513, -0.04351638, 0.045396715, 0.009566522, -0.013003632, 0.033772815, -0.030109819, -0.01432231, 0.030549377, -0.005115983, -0.0067887506, -0.004389489, 0.0074236696, 0.009835142, -0.019926693, -0.044297818, -0.028400421, -0.009847351, 0.0030982832, -0.05255177, 0.049792312, 0.0042704414, -0.0005257924, -0.017631216, 0.002666355, 0.0066605457, 0.024358917, 0.018717904, -0.0071001053, 0.00087072444, 0.007094, 0.024798475, -0.011465174, -0.0023611055, 0.06373611, 0.027106162, -0.048229434, -0.026715443, -0.0016330852], [0.044561706, -0.01966697, -0.027470924, 0.054439176, -0.006207976, 0.034282103, -0.054037042, -0.0013493552, 0.0040276446, 0.02578698, -0.002348412, -0.03483504, -0.0074583683, -0.02450517, 0.006798614, -0.0025243466, -0.011027326, 0.003427582, -0.030838814, -0.00036875566, -0.008457425, -0.053785704, -0.027470924, -0.03202009, 0.026892852, 0.01888783, -0.043305032, 0.010669174, 0.0077474033, 0.0026437307, 0.02365063, 0.02636505, 0.025095807, 0.040238746, 0.0063462104, 0.00019566828, 0.00038642768, -0.006723213, -0.015457107, 0.015582775, -0.044209838, 0.029406203, 0.0073704007, -0.0063996194, -0.0007335842, 0.011768765, -0.0035218326, 0.0034244403, -0.00087653106, -0.030059675, -0.01579641, 0.0016650949, -0.046924256, -0.026214248, -0.011624247, 0.022004385, 0.034483172, -0.040716283, 0.031215815, 0.013484127, -0.059365343, 0.024681104, 0.014489467, -0.014879036, -0.07655666, 0.038755868, -0.020622043, -0.008338041, 0.04013821, 0.011071309, -0.0015983339, -0.025460243, 0.02995914, -0.03181902, 0.019918304, -0.081784435, 0.104253784, 0.016349345, 0.012566754, 0.0034432905, 0.04795473, -0.032723825, 0.0339051, -0.027646858, 0.0016383905, -0.012956323, 0.024140734, -0.11591574, -0.025259174, -0.008545392, -0.014615134, -0.052227426, 0.034784775, 0.0034621407, -0.07424438, 0.007653153, 0.015896942, 0.008287774, -0.0053565786, 0.0014836623, -0.010568639, -0.05876214, -0.04981461, -0.046547256, 0.0533333, 0.0580584, -0.002579326, 0.021702783, -0.039861742, 0.06479418, 0.013119691, -0.007552619, -0.03935907, -0.0029908873, -0.015494807, 0.018108692, -0.038730733, -0.05016648, -0.019981138, 0.017141052, -0.07922082, -0.0338297, 0.06564872, -0.0048224917, 0.04601945, -0.026214248, -0.010530939, 0.03518691, 0.024304101, -0.034407772, -0.045893785, 0.015507374, 0.017128484, 0.020094238, 0.025598478, 0.015846675, 0.07152996, -0.0481558, -0.0675086, -0.005334587, -0.02938107, 0.03677032, -0.021627383, 0.019189432, -0.048105534, -0.039459605, -0.0058026984, -0.02767199, -0.06303483, -0.03016021, -0.019151732, -0.054841314, -0.0037386091, 0.025171207, 0.039434474, 0.004618282, 0.0030678588, 0.017027952, -0.040540345, 0.03254789, 0.025686445, -0.030185342, -0.030336143, 0.07454598, -0.0036003748, -0.06770967, 0.040439814, -0.0384794, -0.036895987, 0.034081034, -0.010700591, -0.04471251, 0.020885944, -0.02601318, 0.025397409, 0.020546641, 0.03935907, -0.0051083853, 0.023047427, -0.04106815, -0.0043889387, 0.037800796, 0.035538778, -0.034885306, 0.03511151, 0.060672287, 0.017706556, 0.02737039, 0.050493214, -0.020031406, -0.017430088, 0.024819339, -0.037499193, -0.0051932107, -0.0064970115, 0.024756504, -0.0066729463, 0.006704363, 0.0050926767, 0.018209226, 0.024668537, -0.048759002, 0.03325163, -0.029054334, 0.011661948, 0.010920509, 0.031442016, 0.038956936, 0.038529668, 0.050417814, 0.031215815, 0.019956004, -0.003930252, -0.041193817, 0.0063776276, 0.01788249, -0.035563912, 0.00191643, -0.04242536, -0.021200113, 0.038303465, -0.014414066, 0.02020734, -0.037750527, -0.016663516, 0.023009725, 0.019453334, 0.020043971, 0.041445155, 0.066402726, -0.040238746, -0.04664779, -0.022481922, 0.019604135, -0.08560473, -0.010336155, -0.047100194, 0.01147973, 0.055645585, -0.012736404, 0.044209838, 0.037147325, -0.040464945, 0.007690853, 0.0068488806, 0.021853585, 0.030562345, 0.030135075, -0.034081034, 0.010964492, 0.019352801, -0.016688649, -0.03483504, 0.03604145, -0.030763412, 0.056650925, 0.05695253, -0.05039268, -0.013069424, -0.0036914838, -0.0076091695, 0.0433553, 0.017568322, 0.08806781, -0.03410617, 0.014577434, 0.009355948, -0.005494813, -0.021966685, 0.025359709, 0.028325463, -0.04370717, 0.04363177, 0.029858606, 0.04780393, -0.020094238, 0.061376024, 0.028149528, 0.015394273, 0.059516143, 0.011228395, 0.037901327, -0.00822494, 0.03762486, 0.0016745199, 0.024681104, -0.01644988, -0.03269869, -0.010530939, 0.0088469945, -0.012610737, -0.0005949572, 0.0048947507, -0.020508941, 0.04599432, 0.0032799228, 0.06489471, 0.041017883, -0.060370684, 0.020571776, -0.019842904, 0.0030819962, -0.032170888, -0.055092648, 0.027923327, 0.05051835, 0.0071944664, 0.073490374, 0.015419407, -0.050995886, 0.04041468, 0.032070354, 0.035010975, -0.03568958, 0.010235621, -0.009035496, 0.009475332, -0.0065661287, 0.06313537, -0.021112146, -0.028928667, -0.029431337, -0.105761796, 0.0044800476, 0.010486956, 0.010763424, 0.0240402, 0.025560776, 0.01012252, 0.004464339, -0.06710646, -0.020257607, 0.00924913, -0.0017609163, -0.025560776, -0.06258243, 0.026616383, -0.09113409, -0.01304429, -0.02636505, 0.020194773, 0.01347156, -0.04687399, -0.03754946, -0.011561413, -0.026138848, -0.013169957, -0.0036255084, 0.019440768, -0.021966685, 0.0015716297, -0.0072824336, 0.045818385, -0.005406846, 0.018950664, -0.007049949, -0.023261061, -0.04579325, -0.022268288, 0.015934644, 0.079421885, -0.047678262, 0.013697761, 0.051825292, 0.042023223, 0.0034809907, -0.014879036, 0.02349983, 0.028099261, 0.04064088, -0.037750527, 0.014577434, -0.02013194, -0.021124713, -0.051976092, 0.013421292, 0.06695566, 0.000312598, -0.038781002, -0.0010540364, 0.0019776928, -0.04828147, -0.04142002, 0.017027952, 0.001905434, 0.0031212673, -0.026390182, 0.014451766, 0.0055293716, -0.03355323, 0.010468106, 0.00012399851, 0.04285263, -0.033276763, 0.03410617, 0.023550097, -0.021979252, 0.055494785, -0.021350915, -0.018171526, -0.008469992, -0.004976434, -0.028702466, -0.022821225, 0.028777866, -0.0011255099, -0.009092046, -0.030411543, -0.032346822, 0.041394886, -0.040666014, 0.019566435, 0.0048539084, 0.05117182, -0.0021646232, 0.03669492, 0.04501411, 0.009808351, 0.0058843824, 0.0067797634, 0.058360003, -0.030914214, -0.0066917962, 0.007144199, 0.00020165712, 0.017606022, -0.032648426, 0.033151098, -0.033930235, -0.006302227, -0.028425997, 0.03956014, -0.03254789, 0.006867731, -0.03267356, -0.018510828, -0.050845087, -0.021841018, 0.017279286, 0.01892553, 0.0057932734, -0.03410617, 0.015670741, 0.030863946, -0.02458057, 0.016248813, -0.06956955, -0.013270492, 0.030185342, -0.005504238, 0.035086375, 0.010380139, -0.061828427, -0.031090148, 0.03262329, -0.023097692, 0.047351528, -0.018850131, 0.059415612, -0.08469992, 0.014577434, 0.021438882, 0.028601931, 0.025397409, 0.0036380752, -0.01551994, -0.05639959, 0.041872423, -0.009368515, 0.041269217, -0.02357523, 0.022016952, -0.021187546, 0.023022292, -0.034332372, -0.0339805, 0.00054076314, 0.011347778, 0.004294688, 0.0103110215, -0.009934018, 0.023311328, 0.021313215, 0.029934008, 0.034885306, -0.034005634, 0.0020986479, 0.010675457, 0.04405904, -0.0070939325, -0.04536598, 0.051724758, 0.008180956, 0.05725413, -0.012673571, -0.039886877, -0.012491353, -0.054439176, -0.02225572, -0.025334574, 0.015922077, 0.049839746, 0.023135394, -0.0067546302, 0.006211118, -0.028853266, -0.049412474, -0.021187546, 0.0434307, -0.016713781, 0.012686138, 0.00013764523, -0.049211405, -0.032447357, -0.015067537, -0.021099579, -0.034357503, 0.03925854, 0.02837573, 0.027898192, -0.004294688, -0.037524328, -0.040741414, 0.005922083, -0.028476264, 0.006459311, 0.014615134, -0.019252267, 0.02616398, -0.0039742356, 0.010688024, -0.009305681, -0.030512078, 0.0051460858, 0.03626765, -0.020307874, 0.03254789, -0.020270173, 0.0013627073, 0.03935907, -0.027194455, 0.034734506, 0.009104613, 0.024241267, -0.004234996, 0.04707506, 0.018133825, -0.008312907, -0.016173411, 0.025711577, -0.052478764, 0.049915146, -0.017053084, 0.014263265, 0.020873377, -0.050819952, -0.0108890915, -0.01966697, -0.017983025, 0.010530939, -0.00027175606, 0.026817452, 0.057304397, 0.014577434, 0.011856732, -0.056449857, 0.012177184, 0.01300659, -0.032723825, -0.0039459607, -0.0192774, 0.017530622, 0.005032985, -0.04463711, -0.046421587, 0.062682964, -0.036091715, -0.030587478, -0.015545074, -0.018988365, -0.05539425, -0.012661004, -0.04242536, -0.03812753, -0.008331758, 0.01110901, -0.018447993, -0.023939665, -0.028199796, 0.00016081518, -0.0079798885, 0.02287149, 0.0037134758, -0.027546324, 0.01761859, -0.0070310985, -0.00868991, 0.009462765, 0.0045428816, 0.058309738, 0.026742052, -0.057153594, 0.030863946, -0.012943756, -0.028627064, -0.0029783207, 0.01153628, -0.055444516, 0.05534398, 0.015607907, -0.08530312, 0.027395522, 0.03677032, -0.024203567, -0.006431036, -0.050920486, -0.00043316028, 0.047527462, 0.028727598, 0.06961981, 0.07152996, 0.02744579, 0.06755887, -0.036544118, 0.026616383, -0.009607283, 0.012692421, 0.0025934638, -0.0114671625, 0.011065027, -0.0119384155, -0.03503611, 0.006358777, -0.017316986, -0.0076468694, -0.007653153, 0.0036223668, -0.009066912, -0.024191001, 0.051473424, 0.05129749, 0.010920509, -0.00027450503, 0.070826225, -0.031994954, -0.043455835, 0.03073828, -0.013182525, 0.07203263, -0.016663516, -0.03247249, 0.029330803, 0.0015331439, 0.051222086, 0.021614816, -0.034458037, -0.03468424, 0.047929596, -0.024970138, 0.023889398, -0.043832835, -0.036619518, 0.020760277, 0.05740493, -0.014627701, -0.032120623, -0.023763731, -0.027043654, -0.015758708, 0.026465584, 0.03948474, -0.03468424, -0.055142913, -0.051196955, -0.02132578, -0.041972958, 0.021501714, 0.027697125, -0.026390182, -0.0290292, 0.0016588115, -0.019880604, 0.023876831, -0.024442336, -0.0040559196, -0.005067543, -0.044033904, -0.0024929298, -0.012145767, 0.0054602544, 0.008815577, -0.061174955, -0.02132578, 0.01842286, 0.029783206, -0.045692716, 0.022016952, -0.053433836, 0.008294057, -0.008583093, 0.021011611, -0.03194469, -0.008507692, -0.00024406992, 0.038102396, 0.0008474704, 0.0059566414, -0.015607907, -0.022004385, -0.035790116, 0.02202952, -0.015595341, 0.010398989, 0.027269855, 0.033452697, 0.025812112, -0.02578698, 0.04393337, -0.062029496, 0.021702783, 0.034307238, 0.02454287, 0.0027552608, -0.03898207, -0.006987115, -0.07947215, 0.042953163, 0.0095695825, 0.06931821, 0.0021489148, 0.02311026, -0.011837882, 0.0039962274, 0.0009754942, -0.031215815, -0.01819666, -0.02024504, -0.00074104575, 0.06368831, 0.012309135, 0.022708124, -0.017543187, -0.026390182, -0.06474391, -0.018334894, -0.030185342, -0.001966697, -0.038152665, 0.0013226508, 0.0030772837, -0.006440461, -0.038906667, 0.009820918, -0.032447357, 0.042249426, 0.037298124, -0.0050235596, 0.014326099, -0.035362843, -0.03460884, -0.019415634, 0.0029610414, -0.033779435, -0.050342415, 0.013019157, -0.015381706, -0.054137573, -0.05051835, 0.01687715, 0.0007296571, 0.0144392, 0.046446722, -0.010442972, 0.00874646, 0.0155702075, -0.0047942162, -0.002015393, 0.008771594, -0.042324826, -0.020534076, -0.006572412, 0.0019996846, 0.036895987, -0.04436064, 0.007169333, 0.030512078, 0.027269855, -0.012101783, -8.608962e-06, 0.0004995284, -0.0050455513, 0.030587478, 0.00060163334, 0.010757141, 0.07524972, -0.011624247, 0.013886263, -0.03596605, 0.017869923, 0.012629587, -0.040867083, -0.05539425, -0.008821861, 0.03724786, 0.0029861748, -0.033653766, -0.017593455, -0.04285263, -0.041822154, -0.0006503295, -0.0036883422, 0.016198546, -0.010713157, 0.042827494, 0.030260742, 0.00095350243, 0.005067543, -0.028903533, -0.034055904, 0.03355323, -0.021690216, -0.03066288, 0.0044706226, -0.017656289, -0.01812126, 0.04765313, -0.009381082, -0.031844154, -0.03053721, -0.015381706, -0.054489445, -0.043757435, -0.036870856, 0.0043072547, -0.041872423, 0.021815885, -0.04606972, 0.06388938, 0.0050361264, 0.006616396, 0.0014561726, 0.0028070987, 0.0075149187, -0.0077474033, -0.021061879, 0.010474389, -0.010920509, -0.016361913, 0.022431655, -0.0011702789, 0.029481603, 0.04579325, 0.023210794, -0.024555437, -0.025673877, -0.03282436, -0.037373524, 0.017895058, -0.030637745, 0.012441086, 0.032522757, 0.028124394, 0.02024504, -0.04136975, -0.008834428, 0.02558591, -0.02737039, -0.04049008, 0.002298145, -0.0527301, -0.029255401, -1.6015248e-06, -0.009368515, 0.06499525, -0.0014930874, -0.045089513, 0.04730126, 0.0145397335, 0.015457107, -0.020948779, 0.018975798, 0.014791069, -0.029707806, -0.021363482, 0.019453334, -0.014753369, 0.040113077, -0.0037543175, 0.015708443, 0.009959152, -0.009092046, 0.008011306, 0.02469367, -0.011944699, -0.0058938074, 0.010958209, 0.007860504, -0.02128808, 0.0058089816, 0.019252267, 0.0024536587, 0.006258243, 0.0144392, 0.03940934, 0.018548528, -0.014916737, 0.0056173387, -0.007571469, 0.015142938, -0.015545074, -0.018586228, -0.009267981, 0.040113077, -0.027697125, 0.03073828, -0.001053251, -0.011699648, 0.001471881, 0.020898512, -0.04473764, 0.04451144, 0.028224928, 0.020006271, 0.030436678, -0.045818385, 0.013873696, -0.021137279, 0.024216134, 0.0031825304, -0.03194469, 0.018749597, 0.020257607, 0.042400226, -0.0030992755, -0.0023955374, -0.011259811, 0.02078541, -0.007307567, -0.033276763, -0.03925854, 0.005331445, 0.08751487, -0.019893171, -0.02260759, 0.006685513, -0.039836608, -0.0072698668, -0.0037040506, 0.021665083, -0.0030694297, -0.031291217, 0.036720052, -0.0095633, 0.005416271, 0.000569431, -0.036368184, -0.023047427, 0.024982706, -0.034458037, 0.0002811811, 0.025259174, -0.00774112, -0.041595954, -0.0019368508, -0.00047046784, -0.037499193, 0.028853266, -0.01304429, -0.012617021, 0.052428495, -0.0382532, -0.005381712, 0.00034931648, 0.01343386, -0.0015936214, 0.00038289328, -0.011115293, 0.0047847913, -0.04873387, 0.040012542, 0.017543187, -0.04136975, 0.006170276, 0.014137598, 0.0007320134, -0.014401499, -0.025937779, 0.055494785, 0.035312578, -0.032346822, 0.017316986, -0.039912008, -0.00977065, 0.03800186, 0.022042086, 0.00069234957, 0.0044109304, 0.02465597, 0.01354696, -0.012610737, -0.027571457, -0.048180934, -0.026892852, -0.009487899, -0.06745833, 0.0015048687, 0.0006000625, 0.02182845, -0.057656266, -0.012183468, 0.007408101, -0.012918622, 0.003650642, -0.0059723496, 0.0030631463, 0.014225565, 0.023223361, -0.01629908, -0.02275839, 0.061577093, 0.006355636, -0.02802386, 0.016939985, -0.003914544], [-0.039217077, -0.014562494, -0.021053765, 0.036400113, 0.044924498, 0.031182598, -0.03101113, 0.007281247, -0.027655266, 0.009951242, 0.013692909, 0.01606896, -0.036743045, -0.013349974, -0.032627825, 0.017097764, -0.046859633, 0.0030971325, -0.030055812, -0.025646647, -0.007814021, -0.0354203, -0.046467707, 0.025646647, 0.023956466, 0.018089827, -0.021776378, 8.444203e-05, -0.020416886, 0.023809494, 0.019045146, -0.0012109895, 0.026871415, -0.038286254, 0.030055812, -0.017244736, -0.0005090443, 0.020943537, -0.034905896, -0.0076364297, -0.009583811, -0.0014214966, -0.01080858, -0.02895352, 0.014329788, -0.004510209, -0.04465505, 0.012455893, 0.015517813, -0.00084585557, 0.028708568, -0.046810642, -0.028880036, -0.04580633, -0.02118849, 0.04164212, 0.044410095, -0.06589253, 0.027581781, 0.0101165855, -0.027434807, -0.011990481, 0.01627717, -0.00616977, 0.0070607886, 0.006785216, -0.021310966, 0.026381508, 0.0070056743, 0.013288735, -0.01812657, -0.03059471, 0.0047582244, -0.0010433494, 0.0039896825, -0.053203933, 0.10297851, 0.017942855, -0.014415522, -0.010924933, 0.0008787712, -0.039143592, -0.038114786, -0.018591981, 0.02520573, -0.067264274, 0.015909739, -0.076474525, -0.0047919056, 0.01442777, 0.036792036, -0.022437753, 0.03995194, -0.013827633, -0.054771636, 0.009510325, -0.0068097115, 0.033730116, -0.0417401, -0.01791836, 0.008671359, -0.024348393, -0.07461288, -0.057956032, 0.0203434, 0.007507829, 0.045463398, -0.010183948, 0.00562781, 0.15471272, 0.017844873, -0.016583363, 0.010796332, -0.0030910089, -0.04215652, 0.01933909, -0.016571114, -0.05658429, -0.023001147, 0.018432762, -0.09489504, -0.017587671, 0.06275713, 0.012872314, 0.006821959, -0.0008550413, -0.00028188806, 0.04830486, -0.02821866, 0.011806766, -0.020747574, 0.012290549, 0.0570742, -0.01870221, 0.021004776, 0.021433445, 0.04406716, -0.038163777, -0.034636445, -0.0073057422, -0.032088928, -0.009498077, -0.010643235, 0.034881398, -0.002579668, 0.009914499, -0.03470993, -0.026259031, -0.048745774, -0.018714458, -0.0038120912, -0.03301975, 0.025720133, 0.023184862, 0.041225698, -0.032456357, 0.018089827, 0.032848284, -0.013680661, 0.021274224, 0.055163562, -0.0650107, 0.005281813, 0.019633034, -0.02303789, -0.068685, 0.050705403, 0.016987536, -0.017550929, 0.02790022, -0.012762085, -0.04004992, 0.04215652, -0.0085733775, -0.014513504, 0.041127715, 0.04338129, 0.026993891, -0.031158103, -0.03456296, -0.01870221, 0.0016289417, 0.051244304, -0.062169235, 0.053007968, 0.037036993, 0.008022232, 0.03159902, 0.02087005, -0.046957612, -0.015505565, 0.0027924716, -0.021359958, -0.019375833, -0.013227497, -0.041617624, -0.032676816, -0.052958976, 0.014856438, 0.03662057, -0.0057900916, -0.059572726, -0.027263341, 0.026185544, -0.03493039, 0.03835974, 0.03777185, -0.0138031375, 0.0038059673, -0.0195473, 0.021788627, -0.016240427, 0.022572478, -0.031354066, -0.029124988, 0.01064936, -0.05437971, 0.01579951, -0.0039406917, -0.040025424, 0.10297851, -0.059719697, 0.024654584, -0.022486744, -0.0061452747, 0.040564325, -0.0067239776, 0.01101679, 0.01870221, 0.032652322, -0.003622252, -0.020478124, -0.015370841, 0.011249496, -0.014023596, -0.025622152, -0.032162413, -0.005437971, 0.05437971, -0.03213792, 0.028757557, 0.017624415, -0.053203933, -0.02292766, -0.006583129, 0.036400113, 0.004448971, 0.0003549914, -0.019155376, -0.026087563, 0.0066443677, -0.012357911, 0.026699947, 0.009253124, -0.018494, 0.059278782, 0.019167623, -0.033950575, 0.0054838997, 0.002160185, 0.0021709017, 0.046884127, -0.056045394, 0.060405567, -0.025022015, -0.032235898, 0.028022697, -0.039853957, -0.057368144, -0.0067178537, 0.049970545, -0.044826515, -0.012357911, 0.02425041, 0.04242597, -0.027140863, 0.07309417, 0.024532108, -0.012566122, 0.06902794, 0.033558648, 0.029149484, -0.0036406235, 0.040931754, 0.040490836, -0.0037845338, 0.010361539, -0.027042883, -0.023209358, 0.017073268, 0.009357229, -0.031990945, 0.0022872547, 0.029712876, 0.042719916, -0.0011099462, 0.028782053, 0.027287835, -0.044900004, -0.0017805068, -0.014660476, -0.007826269, -0.019877989, -0.07280023, 0.015236117, 0.041397166, 0.03794332, 0.0908778, -0.0019137004, -0.032995258, 0.049015224, 0.013276488, -0.0038641437, -0.056192365, 0.040074416, -0.027263341, 0.010122709, 0.045953304, 0.040931754, -0.004856206, -0.054869615, -0.013386717, -0.06251217, 0.0019290099, 0.052175127, -0.023760503, -0.024397383, -0.010104338, -0.043405786, -0.0129458, -0.062659144, 0.041593127, 0.0034262892, -0.019951474, -0.033166725, -0.09572788, -0.02282968, -0.053840812, 0.04058882, -0.044728536, -0.016497629, 0.060650524, -0.023919724, -0.028439118, 0.0030986636, 0.014293045, -0.002464846, -0.05222412, 0.053399894, -0.03456296, 0.0013526034, 0.08543983, 0.037110478, 0.054134756, -0.00895918, -0.03333819, 0.0054073515, -0.040074416, -0.022658212, -0.014207311, 0.058837865, -0.053987782, 0.035959195, 0.03872717, -0.018947164, -0.03931506, -0.02029441, -0.01326424, -0.020992527, 0.02598958, -0.022768442, -0.0037906577, 0.012051719, -0.031403057, -0.07613159, -0.034318004, 0.06829307, -0.0040019304, -0.03524883, 0.0012018038, -0.041176707, -0.02214381, -0.040539827, 0.005395104, 0.037477907, 0.009112275, -0.029124988, 0.03059471, 0.036204148, -0.044900004, 0.010183948, 0.022241792, 0.010961676, -0.04935816, 0.0048715156, 0.042499457, -0.05658429, -0.018689962, -0.010502388, 0.029565904, 0.008879569, 0.0025184297, 0.011090276, -0.012676351, 0.0005679863, -0.004268317, -0.015370841, 0.004856206, -9.9990844e-05, 0.070203714, 0.002665402, 0.037281945, 0.0077589066, 0.033558648, 0.017759139, 0.050705403, 0.010263558, 0.05290999, -0.006558634, 0.0057166056, -0.010355416, -0.02445862, 0.005422661, 0.051489256, 0.009228628, 0.058249976, -0.066823356, 0.05104834, 0.0100430995, -0.017881615, -0.021237481, -0.0034385368, 0.014293045, -0.020514868, -0.019498311, -0.042670924, -0.04872128, -0.054281726, -0.016154693, 0.04999504, 0.014525751, 0.016191436, 0.018322533, 0.039486527, -0.042842392, -0.015983226, -0.06858702, 0.025499674, 0.056290347, -0.019718768, -0.022535736, -0.010851447, -0.06858702, -0.045683853, 0.08465598, -0.01053913, 0.028684072, -0.027704258, -0.0055206427, -0.081912495, -0.010496263, 0.013117268, 0.054820627, -0.00018897791, 0.034171034, -0.00856113, 0.0014551778, 0.041985054, 0.014856438, -0.008107966, -0.0067239776, -0.011947614, -0.07539673, 0.02821866, -0.03762488, -0.018396018, -0.045830827, 0.017734643, 0.044091657, -0.046100277, 0.0041029737, -0.029320952, 0.0041489024, 0.04771697, 0.0036436855, -0.028610585, 0.014489008, 0.019877989, 0.05785805, -0.0008581032, 0.01241915, -0.0010632519, 0.022841927, -0.00041029736, -0.0037692243, -0.03360764, -0.02477706, -0.06608849, 0.01511364, 0.024850547, 0.03470993, 0.021335462, 0.00808347, -0.0037232954, 0.022792937, 0.002270414, -0.034171034, -0.009712412, -0.0045132707, -0.047937427, -0.0077772783, -0.01627717, -0.021408949, 0.00409685, -0.0054134754, -0.0070301695, -0.022890918, 0.0098226415, -0.006289185, 0.011347477, -0.010894313, -0.025499674, -0.04852532, -0.013215249, -0.015076897, 0.0060350453, 0.031060122, -0.016019968, -0.010465644, -0.033681124, -0.0029057625, 0.0038182149, -0.03867818, 0.005970745, -0.015493318, -0.021592664, 0.039217077, 0.024434127, -0.050558433, 0.066823356, 0.03228489, 0.0760826, -0.010110462, -0.002506182, -0.04301386, 0.033166725, 0.0046541193, 0.023625778, -0.01739171, 0.028880036, -0.05859291, 0.031990945, -0.0055726953, 0.038702674, -0.006736225, -0.042278998, 0.008726474, -0.026552975, 0.00993287, -0.024985272, 0.033093236, 0.01955955, 0.07676847, 0.0427934, -0.0018233737, -0.021323215, 0.021813123, 0.006368795, -0.01426855, -0.0050582928, 0.0047184196, 0.024274906, -0.018824687, -0.02262147, -0.0396335, 0.058641903, -0.0028016572, -0.018347029, 0.032578833, -0.007550696, -0.033534154, -0.028194165, -0.0062248847, -0.044140648, 0.020649591, 0.03159902, 0.004571447, -0.05183219, -0.023086881, 0.031378563, -0.01141484, -0.0058390824, -0.008806083, -0.018787945, 0.012259929, 0.029100493, 0.0005121062, 0.0069811787, -0.013251992, 0.014072587, -0.017501937, 0.0061054695, 0.0075751916, -0.019290099, -0.036694057, -0.0078017735, 0.040196892, -0.04570835, 0.009400096, 0.031256083, -0.05717218, -0.02895352, 0.039217077, -0.037894327, 0.01141484, -0.0332892, -0.0048960107, 0.06388391, 0.01447676, 0.05575145, 0.043454777, -0.009069408, 0.0961688, -0.027973706, 0.02890453, 0.02657747, -0.0013135639, -0.0151993735, 0.0021341585, -0.021066014, -0.028194165, -0.03218691, -0.018273542, -0.04044185, 0.0005672208, 0.0332892, -0.014782952, 0.024936281, -0.020282162, -0.011286239, 0.024372887, 0.034587454, 0.0027970644, -0.015726024, -0.037036993, -0.036326624, 0.05325292, -0.00011520476, 0.053350903, -0.025450684, -0.036571577, 0.028806549, 0.025499674, 0.049750086, 0.016681343, -0.034318004, 0.0010234469, 0.049970545, -0.031329572, 0.033264704, -0.031476542, -0.007593563, -0.016473133, 0.03145205, -0.0029149484, -0.005177708, -0.01595873, -0.011525069, 0.0007566771, 0.037869833, 0.054526683, -0.05785805, -0.040980745, -0.026430499, -0.05004403, -0.025230225, -0.0030435491, 0.06981179, -0.04788844, -0.025230225, -0.0565353, -0.03424452, -0.024875043, -0.018579734, -0.013215249, 0.009669545, -0.015260612, -0.013166258, -0.018347029, 0.010153329, 0.009755279, -0.062169235, -0.01986574, 0.06736225, 0.010502388, 0.0077160397, 0.0121435765, -0.06114043, -0.0076609254, 0.038702674, -0.02118849, -0.025181234, -0.0258916, -0.022376515, 0.01669359, 0.024115685, 0.015872996, -0.015811758, -0.032799292, -0.018396018, 0.018114323, 0.014599238, -0.0016365965, 0.021568168, -0.0071403985, -0.011819013, -0.039755978, -0.022743946, -0.07059564, -0.004470404, -0.0077405353, -0.042278998, -0.0074588386, -0.038702674, 0.008457025, -0.050852377, 0.02525472, 0.0069566835, 0.058151994, 0.0010655484, 0.008585625, -0.02753279, 0.009712412, -0.010882066, -0.018383771, 0.011806766, -0.002428103, 0.011127019, 0.04580633, 0.016926296, -0.00079609937, -0.02689591, -0.039755978, -0.046418715, -0.009461335, -0.024287153, 0.020306658, -0.012119082, 0.01213133, 0.018396018, 0.025940591, -0.01315401, 0.0075690676, 0.0028827982, 0.02927196, 0.0049113207, 0.03448947, -0.008144708, 0.013937863, -0.026699947, -0.031525534, -0.00040034612, 0.025499674, -0.020625098, 0.0030726374, 0.026773434, 0.0012867721, -0.04999504, 0.043944683, -0.010404406, -0.0034660941, 0.06437382, -0.034415986, 0.00470311, 0.02721435, -0.025377197, -0.0013755678, -0.01085757, -0.033779107, -0.003309936, -0.010679979, 0.010067595, -0.00723838, -0.0061177174, 0.0054471567, 0.013839881, -0.015052401, -0.012872314, -0.009057161, 0.0111882575, 0.02394422, 0.03735543, 0.024299402, -0.0059095067, 0.05633934, -0.010263558, 0.046149265, -0.007918127, 0.008928561, -0.006212637, -0.031035626, -0.032015443, -0.022254039, 0.023858486, 0.014880934, -0.028316641, -0.047104586, -0.035640754, -0.020012712, -0.008873446, 0.021139499, 0.0248383, 0.018138817, 0.02763077, -0.019804502, 0.052665032, 0.015481071, 0.037600383, 0.023270596, -0.0037875958, -0.0046357475, 0.0034324129, 0.016889554, -0.01976776, 0.033681124, 0.020282162, 0.03343617, -0.027704258, -0.02129872, -0.0019580983, -0.038923133, -0.021151748, -0.024899539, 0.033705622, -0.0018769572, 0.01637515, -0.04411615, 0.03931506, 0.011825137, -0.0028644267, -0.011200505, 0.008248814, -0.026161049, 0.005967683, -0.03826176, 0.02478931, 0.00067400525, -0.0018846121, -0.028022697, 0.025499674, 0.05501659, 0.023454312, 0.018138817, 0.027606275, -0.046222754, -0.027704258, -0.027802238, 0.036571577, -0.02420142, 0.031525534, 0.050803386, -0.0020989466, 0.005306308, -0.017881615, -0.010024728, -0.022633716, -0.020404639, -0.056731265, -0.015738271, -0.050999347, -0.047790457, -0.01262736, 0.0055237045, 0.049799077, 0.012774332, -0.04771697, 0.006558634, -0.018285789, 0.038849648, -0.003655933, 0.01101679, 0.026920406, -0.04286689, -0.030374251, 0.014893182, -0.040735792, 0.036057178, 0.006534138, -0.041838083, 0.007446591, 0.0035303943, 0.0046847383, -0.01326424, 0.01117601, 0.012112957, 0.0544287, -0.026234536, -0.01033092, -0.019045146, 0.03708598, -0.0030603895, -0.034440484, 0.016889554, -0.032162413, 0.04602679, 0.0024082004, 0.010239062, -0.013398964, 0.009044914, -0.0343425, -0.025597656, 0.03561626, 0.01273759, -0.059768688, 0.054526683, -0.00631368, -0.0060013644, -0.0019749387, 0.0076486776, -0.036841027, -0.008450901, 0.021641655, 0.005900321, 0.05447769, -0.040245883, -0.008095718, -0.0015906678, -0.019057393, 0.038090292, -0.02858609, 0.02187436, 0.008585625, 0.036130663, -0.011898623, -0.02271945, -0.011273991, -0.016656848, 0.004583695, -0.027263341, -0.013300983, -0.006289185, 0.08950606, 0.011451582, -0.0285371, 0.012296673, -0.04004992, -0.026675452, -0.0036344996, 0.011506697, -0.033411678, -0.010686102, 0.018102074, -0.033681124, -0.015003411, -0.0075445725, -0.014917677, -0.014305293, 0.041421663, -0.023662522, 0.05246907, -0.001619756, -0.023919724, -0.013864377, -0.0037845338, -0.013178506, 0.010569749, 0.029541409, 0.0026516232, 0.0028154359, 0.031109113, -0.015787262, 0.013129516, 0.008046728, 0.019192118, -0.019314595, 0.029075997, 0.01728148, 0.017869368, -0.014133825, 0.027067378, 0.0041489024, -0.04374872, -0.014807448, -0.015970977, 0.00792425, -0.0014375717, 0.010208443, 0.016093455, 0.013619423, -0.029565904, 0.05447769, -0.056878235, 0.03581222, 0.038825154, 0.013496946, -0.008536634, 0.010918809, -0.013729651, 0.01575052, -0.005689048, -0.0027863476, 0.002310219, 0.01210071, 0.01976776, -0.057417136, 0.052567054, -0.0022642903, 0.017673405, -0.05903383, -0.020061703, 0.011690413, 0.006362671, -0.0060289213, -0.043626245, 0.018469505, 0.054967597, 0.018934917, 0.0016243488, -0.011561812, 0.054918606, -0.006016674, -0.022866422, -0.021923352, -0.008052851], [-0.026248652, 0.0055240965, -0.027583713, 0.045618348, 0.014583841, 0.040391244, -0.020659499, 0.06340407, -0.01516086, 0.012999871, -0.01960729, -0.014866693, 0.0043870322, -0.021112062, -0.010154381, 0.029054541, -0.058561645, 0.024461027, -0.042744573, -0.035707217, -0.0019997626, -0.025117245, -0.07784083, -0.0035724188, 0.022990199, -0.008791035, -0.0124454815, -0.0050404198, -0.016631689, 0.012547308, 0.030118065, 0.0011017079, 0.044554822, 0.03396485, 0.028556723, -0.04066278, 0.009486851, -0.022594206, -0.038332082, 0.0049272794, -0.033761196, 0.017231334, -0.014470701, -0.042563546, -0.018362742, -0.028669864, -0.026655959, -0.022843115, -0.03249402, 0.012456795, 0.009334111, -0.00012613424, -0.04070804, -0.0132940365, -0.007784083, 0.019686488, 0.05607255, -0.01852114, 0.05557473, -0.021553311, -0.008824978, 0.001227577, 0.040006567, -0.015873646, -0.030706396, -0.0017847952, -0.007772769, 0.023850068, 0.023669044, 0.010171353, -0.0056711794, 0.007359805, -0.0258866, -0.004593514, -0.048062187, -0.03299184, 0.08530812, 0.019629918, -0.026904868, 0.034168504, 0.017593386, 0.006234055, -0.012230514, 0.026452305, 0.021711707, -0.040323358, 0.05462435, -0.10580922, -0.009311483, -0.009226628, 0.018905818, 0.0035582762, 0.027312174, -0.0043559186, -0.041092716, -0.009351082, 0.025728205, -0.00486788, -0.04496213, -0.020998921, -0.019641232, -0.034123246, -0.052859355, -0.062091637, 0.0064829644, 0.011019908, 0.022843115, -0.018985016, -0.024709938, 0.01910947, 0.043513928, 0.00427672, -0.02799102, 0.031113703, -0.006697932, 0.030842166, -0.046976034, -0.0481527, -0.04987244, 0.0012919258, -0.07743352, -0.024596797, 0.019120784, 0.013090383, -0.016020728, 0.026995381, 0.003595047, 0.04643296, 0.008496869, 0.02674647, -0.06439971, 0.035775103, 0.055393707, 0.014391502, 0.059919335, 0.007823682, 0.04401175, -0.014945892, -0.066436246, -0.0010182667, -0.053311918, 0.017152136, -0.0043078335, 0.027357431, -0.03176992, -0.015522909, 0.0144593865, -0.06000985, -0.04140951, -0.047700137, -0.012920672, -0.0065055927, -0.018012006, -0.023488017, 0.03701965, -0.028194673, 0.020636871, 0.032833442, -0.0056146095, 0.059557285, 0.036363434, -0.047835905, 0.0025668805, 0.041160602, -0.01380317, -0.13006659, 0.032675046, 0.0057418924, -0.038671505, 0.020127738, 0.022741288, -0.0442154, 0.024619425, 0.018181717, -0.06467125, 0.054036018, 0.02396321, 0.025071988, -0.0004903944, -0.06498804, -0.0496009, 0.015421083, 0.04265406, -0.01861165, 0.030683769, 0.010918082, 0.04792642, 0.0011985847, 0.01430099, -0.076664165, 0.015285314, 0.013169582, -0.019426266, -0.020365333, -0.025863973, -0.022820488, -0.0132940365, -0.014753552, 0.0040985234, 0.03337652, 0.01852114, -0.046613984, -0.0057249214, -0.025388783, -0.041567907, 0.027674224, -0.0063698236, -0.024890963, 0.024166862, -0.02357853, 0.040006567, 0.020093795, -0.0061096, 0.00040553883, -0.010012955, 0.018226974, -0.025931858, 0.0024268688, -0.0047688824, -0.06403766, 0.091327205, -0.010827569, 0.050279744, -0.031000562, 0.025207756, 0.029371336, -0.0020718898, 0.006398109, 0.033218123, 0.029733386, 0.0012777832, -0.0443738, -0.01491195, 0.04846949, -0.074491866, -0.033195492, -0.026701214, -0.015647365, 0.070192516, 0.00073824334, -0.00595686, 0.01729922, -0.035141513, -0.022560263, 0.05390025, 0.032561906, 0.016258324, 0.032177225, -0.009085202, 0.005017792, 0.0397124, 0.02529827, 0.06322305, 0.022843115, -0.014764867, 0.055167425, -0.005371357, -0.050370257, -0.042993482, 0.01691454, -0.012038175, 0.028398326, -0.0046500843, 0.1085246, -0.04609354, -0.0063811378, 0.04620668, -0.034032736, -0.067341365, -0.013554261, 0.020308763, -0.022119015, -0.0042314637, 0.032810815, 0.0418847, -0.02529827, 0.042201497, 0.017174764, -0.040911693, 0.044939503, -0.014504643, 0.046116166, 0.018045949, 0.009203999, 0.067250855, 0.032788187, -0.018985016, -0.03165678, -0.01385974, 0.009305825, -0.002149674, 0.0083497865, 0.0198562, 0.012898045, 0.029167682, -0.02857935, 0.016065985, 0.00024060086, -0.054217044, -0.023917953, 0.013022499, 0.021824848, -0.03373857, -0.052633073, 0.008921147, 0.041703675, 0.004604828, 0.12246354, 0.0037110164, 0.0127622755, 0.056389347, -0.0011045365, -0.017830981, -0.030072808, 0.047383342, -0.0076992274, 0.025139872, 0.04851475, 0.054714862, -0.018928446, -0.0068733, -0.030208578, -0.11277869, 0.028986657, 0.033331264, 0.009950728, -0.021836163, -0.0017975235, -0.016484605, 0.0091644, -0.0542623, -0.004440774, -0.007857624, -0.008547783, -0.056163065, -0.059783567, 0.04217887, -0.014233105, 0.022039816, 0.0105730025, -0.0072579784, 0.015964158, -0.012422853, -0.035526194, -0.043513928, -0.0019361209, -0.0022034158, -0.0130451275, 0.04951039, 0.011732695, 0.0013619317, 0.020908408, 0.070102006, 0.00855344, -0.01947152, 0.020308763, -0.02382744, -0.06082446, -0.011857149, 0.009939414, 0.06480701, -0.021123376, 0.026452305, 0.0517732, -0.016167812, -0.04104746, -0.04593514, -0.026407048, -0.02382744, 0.014006823, -0.024257375, 0.017672583, -0.050777566, 0.022254784, -0.045278925, -0.03957663, 0.03885253, -0.022707347, -0.013429806, 0.0024862678, -0.013554261, -0.043875977, -0.020693442, 0.028873516, 0.03249402, -0.005968174, -0.031724665, -0.016722202, 0.03591087, -0.019641232, 6.0945735e-05, -0.023284364, -0.02957499, 0.002619208, 0.042359892, 0.061005488, -0.022820488, -0.0014043595, 0.024325259, 0.026655959, -0.0023844412, -0.038558364, -0.02396321, 0.005657037, 0.029597618, 0.006833701, -0.040164962, 0.0067827874, 0.00397124, 0.029416593, 0.004763225, 0.0046953405, -0.0024042407, 0.0059116036, 0.012094745, 0.017084252, -0.052859355, 0.049148336, 0.0076200287, -0.012931987, 0.039486118, -0.056389347, -0.039802913, 0.034507927, 0.024868336, 0.058742672, -0.03516414, 0.014086022, 0.0096565625, -0.024845706, -0.019980654, 0.0009836173, 0.013542946, -0.021553311, -0.015126917, -0.051999483, -0.05204474, -0.079515316, 0.032923955, 0.054352812, 0.018181717, -0.010488147, 0.017446302, 0.011710066, -0.019528091, 0.028013647, -0.042676687, 0.018374056, 0.022492379, -0.041703675, -0.004692512, -0.023895325, -0.04923885, -0.011019908, 0.049284108, -0.017763097, 0.0132940365, 0.046704497, 0.030389603, -0.08381466, 0.02638442, 0.020376647, 0.0747634, -0.024642054, 0.036363434, -0.009492508, -0.049148336, 0.02027482, -0.012049489, 0.0010918082, 0.015669992, 0.0114555, -0.03910144, 0.021915361, -0.0389883, -0.04618405, -0.034983117, -0.01827223, 0.06390189, -0.04041387, -0.0062906253, -0.042224124, 0.008236646, 0.02035402, 0.03701965, 0.0021906877, 0.0043389476, 0.053719223, 0.07195751, 0.028760375, 0.02860198, 0.030072808, 0.01582839, 0.00057843205, -0.002535767, -0.03348966, -0.06344933, -0.0496009, 0.02168908, -0.008163105, -0.011223561, 0.05743024, 0.02957499, 0.003365937, -0.0019332924, 0.02302414, -0.04982718, -0.024777822, 0.033761196, -0.06847277, 0.021225203, -0.036295548, -0.012207886, 0.0108219115, -0.019788316, -0.033195492, -0.0397124, 0.009628277, 0.025524551, -0.0040985234, 0.0005794927, -0.042314637, -0.046003025, -0.026701214, -0.010369349, -0.01588496, 0.019505464, -0.025071988, 0.018600337, -0.0033404804, -0.039486118, 0.00656782, -0.013735286, 0.021496741, -0.017627327, -0.00028603393, 0.050008208, 0.004593514, -0.03968977, 0.015081661, -0.011857149, 0.05548422, 0.020489788, -0.014742238, -0.018000692, 0.03631818, 0.032629788, 0.016722202, -0.01849851, 0.055665243, -0.07480866, 0.044803735, 0.008728808, 0.033874337, 0.012875416, -0.014040766, -0.02271866, -0.05815434, 0.0033913937, 0.004664227, 0.0043191477, 0.004910308, 0.0797416, 0.048650518, -0.028737748, -0.048424236, 0.04643296, 0.026497561, -0.014436758, 0.0144933285, 0.01907553, 0.046840265, -0.011811893, -0.0041041803, -0.02382744, 0.06548586, 0.017978063, -0.03656709, -0.0046274564, -0.028443582, -0.010391977, -0.0060586864, 0.0047745393, -0.024868336, 0.0040108394, -0.0025767803, -0.028239928, -0.051139615, -0.04679501, 0.0063075963, -0.010912424, 0.017061623, 0.005526925, 0.018351428, 0.011308417, 0.037245933, 0.010804941, 0.028307812, 0.011364987, -0.011710066, 0.010329749, 0.0012728333, -0.008666581, -0.023397505, -0.032629788, -0.024619425, 0.04631982, -0.03921458, 0.0055325823, 0.024619425, -0.0693779, 0.0068280436, 0.029122427, -0.009588677, 0.010776656, 0.007167466, -0.008417671, 0.063494585, 0.002579609, 0.058109082, 0.042043097, 0.006754502, 0.05376448, -0.034259018, 0.008943776, 0.010499461, -0.025230385, 0.0021581596, -0.0072296932, 0.007806711, -0.0037760723, -0.026723843, -0.010697457, -0.017876238, 0.020693442, 0.046387702, 0.0017593385, 0.028556723, -0.045663603, 0.02313728, 0.03543568, 0.042224124, 0.05534845, 0.026904868, -0.030638512, -0.012366283, 0.051275384, 0.014832751, 0.043332905, 0.0034932203, -0.00041119588, 0.040210217, 0.0008421914, 0.025094615, 0.018464569, -0.024461027, -0.004684027, 0.032561906, -0.03860362, 0.0021906877, -0.055122167, -0.031747293, 0.0074276896, 0.025207756, -0.007495574, -0.052587815, -0.002716792, -0.047338087, 0.0026418362, -0.0016080128, 0.048424236, -0.022888372, -0.010957681, -0.028443582, -0.028941402, -0.010533403, 0.016903227, 0.024347886, -0.01910947, -0.016088612, -0.016314894, -0.023284364, -0.028239928, -0.018803991, -0.01991277, -0.015839703, -0.04217887, -0.02304677, -0.0065169064, 0.027538456, 0.021281773, -0.021700393, -0.029393964, 0.047428597, -0.021406228, -0.015907587, -0.013305351, 0.0032329967, 0.013407177, -0.012173943, 0.014934578, -0.037200674, -0.0036233321, -0.018713478, -0.002121389, 0.0093737105, 0.0051733605, -0.01636015, -0.046116166, -0.039554004, 0.03763061, 0.018724792, 0.029303452, 0.07367725, 0.047338087, -0.0037760723, -0.018113833, 0.005080019, -0.06132228, 0.028398326, -0.021394914, -0.021598568, -0.014278362, -0.040142335, 0.024166862, -0.049555644, 0.04579937, -0.021971932, 0.054760117, -0.015047719, 0.0062283976, 0.00049887993, 0.0043361187, 0.009085202, 0.0037166732, 0.0057616923, -0.020908408, -0.0014524442, 0.044147518, -0.002875189, 0.011619554, 0.016156498, -0.028986657, -0.033625428, 0.01191372, -0.016756143, 0.01380317, -0.02321648, -0.0065112496, -0.0040362957, -0.018113833, 0.00092421845, 0.030864794, -0.030253833, 0.014436758, 0.049419876, 0.012909358, 0.012592564, 0.0055495533, -0.025071988, -0.034281645, 0.01557948, -0.017729154, -0.013271409, 0.016088612, -0.0036374747, 0.03253928, -0.018226974, 0.009158743, -0.0030434858, 0.00046953408, 0.03154364, -0.010063869, -0.0028440754, 0.052723587, 0.003230168, -0.018668221, -0.015081661, -0.0038269856, 0.0002793162, 0.016993739, -0.0038382995, 0.02493622, -0.045595717, 0.033580173, -0.00083229155, 0.02271866, -0.0047434256, 0.011857149, -0.019177355, 0.03957663, 0.010239237, 0.047971673, -0.0077105416, 0.035480935, 0.009826274, 0.057656523, -0.015409769, 0.010488147, -0.004788682, -0.0047575682, -0.045188412, -0.016133869, 0.01516086, 0.016179126, -0.016020728, -0.02046716, -0.0319962, -0.047066547, 0.008519498, 0.019901456, 0.020670813, 0.020693442, 0.03763061, -0.009701818, 0.004712312, -0.006126571, -0.019618604, 0.017978063, 0.009028631, -0.028488839, -0.035820358, -0.000954625, 0.004604828, 0.015851017, 0.032109343, 0.019731745, -0.02602237, -0.03763061, -0.05543896, -0.008615667, -0.027402688, -0.03860362, 0.026203396, 0.02185879, 0.0106918, -0.021711707, 0.037064906, -0.01109345, 0.015805762, -3.226279e-05, -0.0032103686, -0.032697674, -0.0007573358, -0.06426394, 0.025863973, 0.01810252, 0.02810416, -0.013825798, 0.028896146, 0.046387702, 0.018837932, 0.005787149, 0.007325863, -0.012773589, -0.019313125, -0.0754875, 0.0057192645, 0.0013732457, -0.0055014687, 0.043808095, 0.06267997, -0.007801054, -0.015918903, -0.009803645, -0.010261865, -0.0002473186, -0.04774539, -0.00025173815, -0.04324239, -0.026927495, 0.017378418, 0.026135512, 0.025434038, 0.031068448, -0.04118323, 0.003954269, -0.041386884, 0.04788116, -3.5710047e-05, -0.0102222655, 0.01338455, -0.026497561, 0.0060417154, 0.011314074, -0.029710758, 0.0014383016, -0.023035455, -0.0066074193, 0.01109345, -0.005071534, 0.00021090142, 0.026836984, 0.006217084, 0.012106059, -0.002760634, -0.037585355, -0.005756035, -0.01405208, 0.042314637, 0.0050064777, -0.023510646, 0.011676124, -0.011732695, -0.002738006, -0.01810252, 0.0025329383, 0.03539042, 0.04545995, -0.03312761, -0.0066809608, 0.036861252, 0.046478216, -0.058471136, 0.035707217, 0.005608952, -0.031204216, -0.016824028, 0.013848427, -0.037811637, 0.011732695, 0.014267047, 0.004681198, 0.042631432, -0.023397505, 0.0031679408, -0.023555903, 0.017819667, 0.032267738, -0.02993704, 0.03620504, 0.010640887, 0.031339984, 0.0020223907, -0.006997755, -0.021813534, -0.041839447, -0.00097513176, -0.017231334, 0.0015217429, 0.027425315, 0.08331684, -0.015228744, -0.005855033, 0.024302632, -0.062860996, -0.034304272, 0.033942223, -0.014323617, 0.0035441336, -0.0056230947, 0.038490478, -0.00078208535, -0.02932608, 0.0029756015, 0.015794447, 0.00017306997, 0.04242778, 0.006754502, 0.02713115, 0.01502509, 0.006890271, -0.009203999, 0.019030273, 0.032584533, -0.036861252, 0.043355532, -0.005798463, -0.035865616, 0.027221663, -0.0427672, 0.0144593865, 0.0099733565, 0.018770048, 0.00013488498, 0.0013407178, 0.007376776, 0.009837587, -0.027425315, -0.01090111, 0.043672327, -0.06367561, 0.01202686, -0.033308633, -0.021078119, 0.011376302, 0.005476012, 0.057475496, 0.029552361, -0.016484605, 0.07213853, -0.030366974, 0.022628147, 0.02846621, -0.010488147, 0.012864103, 0.011981605, -0.005809777, -0.02310334, -0.018543767, 0.047338087, -0.06394715, -0.03265242, 0.01624701, -0.076030575, 0.0017621671, -0.0004985264, 0.017333161, -0.068925336, -0.016450664, -0.0037308158, -0.0076200287, -0.0114215575, -0.007637, 0.015307942, 0.04593514, 0.045640975, -0.013407177, 0.020365333, 0.10092154, -0.012185258, -0.012038175, -0.0037619297, -0.028330442], [0.009542418, 0.00014478397, -0.008323343, 0.049531695, 0.051789686, 0.012875358, -0.047898255, 0.029449979, -0.03449443, -0.0043148063, -0.0115061505, 0.055585034, -0.03305316, -0.048907142, 0.002884044, 0.052174024, -0.0367284, -0.008161199, -0.022880184, -0.045952536, -0.02300029, -0.04765804, -0.051741645, -0.01100771, -0.034830727, 0.021667114, -0.03456649, 0.016202293, 0.009362259, 0.013427845, 0.0027714449, 0.0052546356, -0.022339707, 0.010245037, -0.005302678, -0.014688958, 0.0004838018, 0.042301316, -0.04061983, -0.0066899015, -0.03975507, -0.041292425, -0.0201778, 0.0009233145, 0.0019036793, -0.0026002938, 0.023036322, -0.008089136, -0.0055879294, -0.00988472, 0.034638558, -0.024381509, -0.014400704, -0.02159505, -0.03233252, 0.031828076, -0.012148717, -0.084698714, 0.023324575, -0.017907798, -0.04739381, 0.020598171, -0.036368083, -0.020033672, -0.057794984, -0.009746598, -0.012382924, 0.009704561, 0.027864581, 0.052750535, -0.04736979, 0.009962789, -0.00042750212, 0.0076807756, 0.026663521, -0.0115061505, 0.09483566, 0.017799702, 0.011416071, 0.01270721, 0.022676004, 0.0052936696, -0.03454247, 0.018484306, -0.020718277, -0.060052976, 0.0747059, -0.08023077, -0.016082186, -0.0022895196, -0.010455223, -0.030386806, 0.05731456, -0.018892666, -0.083305486, 0.026087012, -0.022375738, 0.021174679, -0.038049567, -0.005687017, -0.057843026, -0.042685654, -0.04403084, -0.042277295, -0.002206947, 0.014785043, 0.04861889, 0.0012866351, 0.03048289, 0.09478762, -0.0028074766, -0.039899196, 0.014496788, -0.012647157, -0.04275772, 0.031611886, -0.025174208, -0.042085126, -0.029017597, 0.0018286131, -0.08892645, 0.017907798, 0.037689246, -0.0003023292, -0.008653634, -0.004299793, -0.020694256, 0.00564498, 0.0019231966, 0.00035224823, -0.05870779, 0.006128406, 0.028176857, 0.0063295835, 0.050876882, 0.011626257, 5.3203185e-05, -0.027576327, -0.054095723, 0.010010831, -0.046553068, 0.0037983507, -0.024069233, 0.03612787, -0.039899196, -0.041124277, 0.0026588456, -0.022027431, -0.04016343, -0.030074531, 0.019072825, -0.049195398, 0.02865728, 0.01716314, 0.0671152, -0.017859755, 0.037809353, 0.022688014, 0.01957727, 0.0068280236, 0.015241445, -0.069229074, -0.010028847, 0.061205994, -0.018292136, -0.02320447, 0.044751476, 0.011908505, -0.02923379, 0.046889365, -0.0081311725, -0.0025762727, 0.07235183, -0.04280576, -0.018820602, 0.0018916688, 0.022940237, 0.0151453605, -0.014496788, -0.057170432, -0.036199935, 0.03732893, 0.018075947, -0.0431901, 0.009200116, 0.038722157, 0.024837911, 0.0057590804, 0.03855401, -0.042661633, -0.027816538, 0.0060743587, 0.029017597, -0.026687542, 0.0028149833, -0.05616154, -0.007752839, -0.088253856, 0.008725697, 0.0055518975, 5.9290583e-06, -0.05693022, 0.035359193, -0.001397733, -0.064328745, 0.009236148, 0.032356545, 0.009260169, 0.0076627596, 0.0064256685, 0.0027744474, -0.021703146, 0.024717804, -0.015289487, -0.027936645, -0.0036362077, -0.06519351, 0.0005138283, -0.03939475, -0.03454247, 0.074561775, -0.04196502, -0.013571973, -0.025918864, -0.0018196051, 0.06913298, -0.006377626, -0.013800174, 0.017703617, 0.010239032, 0.012280834, -0.0025297317, -0.038794223, 0.07182336, -0.031924162, 0.02141489, -0.022051454, 0.021631083, 0.050396457, 0.003188813, -0.012064643, 0.026687542, -0.082344644, 0.0020838382, 0.008941888, 0.018111978, 0.022123516, -0.0069301133, 0.021510975, -0.008899851, -0.012034616, -0.024285423, 0.0013361787, 0.004257756, -0.01978145, 0.021835262, -0.023732936, -0.044487245, 0.0042637615, -0.027672412, -0.020225842, 0.022063464, -0.002657344, 0.036608294, 0.038722157, -0.033365432, 0.038818244, -0.04299793, -0.046072643, 0.019685365, 0.034158133, -0.053759426, -0.01858039, 0.028801408, 0.03190014, 0.015565732, 0.030026488, 0.033917923, -0.049579736, 0.009974799, -0.004071592, -0.025150187, -0.011043742, 0.024369497, 0.053038787, -0.002688872, 0.00066696334, -0.008857814, -0.046721216, 0.019084835, 0.0153375305, -0.017787691, 0.0274322, 0.051117092, 0.03348554, 0.015169382, 0.018844623, 0.0015914039, -0.045063753, 0.04924344, -0.024285423, -0.0016019131, -0.0124549875, -0.054768313, -0.03425422, 0.056978263, 0.011350012, 0.039658986, -0.02925781, -0.027696433, 0.06235901, 0.033437498, -0.030218657, -0.04741783, 0.016418483, -0.028777387, -0.009067999, 0.020862404, 0.06360811, -0.0058671758, -0.048450742, -0.073120505, -0.07124685, -0.019361079, -0.010941653, 0.045303967, -0.024861932, -0.014628905, -0.017631553, -0.014148481, -0.09027164, 0.005443802, -0.001642449, -0.011680304, -0.02928183, -0.09526804, 0.02503008, -0.080951415, -0.0018676475, -0.050492544, -0.015577742, -0.01513335, -0.0031617892, -0.017667586, 0.04621677, -0.037521098, -0.00837739, -0.009464349, 0.048522804, -0.020261874, 0.001520091, 0.054768313, 0.038722157, 0.023624841, 0.0067019123, 0.0029320866, -0.010263054, -0.014220545, -0.015493668, 0.027504263, 0.0690369, -0.0119985845, 0.02442955, 0.041892957, -0.029522043, -0.037785333, -0.060004935, 0.0011447598, -0.02906564, 0.02321648, -0.033653688, 0.0032128342, -0.03312522, -0.008443449, 0.003942478, -0.014052397, 0.04756196, 0.03127559, -0.008161199, 0.0032548713, -0.012016601, 0.00032484907, 0.01735531, -0.026062991, -0.019493196, 0.021174679, -0.0009781128, 0.043262165, 0.018484306, -0.0036812474, -0.011356018, 0.0092962, -0.015878007, -0.08215247, 0.036344063, 0.04679328, -0.087725386, 0.0041586687, 0.021655103, 0.008407417, -0.008881835, 0.015433615, -0.005897202, -0.034614537, 0.005521871, 0.06788389, -0.048162486, 0.017439384, 0.07489807, 0.039466817, 0.020093726, 0.008065115, 0.026375268, 0.01794383, 0.023168439, 0.0548644, 0.04400682, 0.011512156, 0.009974799, -0.037593164, 0.011380039, -0.06956537, 0.0055068578, 0.06764367, -0.011205886, -0.012292844, -0.06255118, 0.012280834, 0.017511448, -0.03451845, -0.04878704, 0.06865256, 0.054191805, -0.012394934, -0.01919293, -0.034614537, -0.051981855, -0.0028855456, -0.00096685294, 0.023540767, 0.020886425, -0.032620776, 0.01733129, 0.023336586, -0.018724518, -0.004807241, -0.072159655, -0.0042817774, 0.009542418, 0.029377917, -0.013235676, 0.0038253746, -0.07691585, -0.03595972, 0.05587329, 0.04679328, 0.049723864, -0.020454044, 0.0102930805, -0.0621188, -0.01895272, -0.0154095935, 0.037256867, -0.004909331, 0.04878704, 0.0039454806, -0.011854458, 0.034374323, 0.02016579, 0.004101618, 0.008197231, -0.0040055336, -0.067307375, 0.019661345, -0.024861932, 0.005224609, -0.061254036, 0.024261402, 0.03471062, -0.0007671768, 0.0029516038, -0.056353714, 0.008485486, 0.03531115, 0.010881599, -0.006395642, 0.059092127, -0.019397112, 0.054095723, 0.0046871346, -0.0077228127, -0.020009652, 0.02201542, 0.008809771, 0.018424254, 0.006797997, -0.036464166, -0.02420135, 0.04417497, -0.006179451, 0.054191805, 0.00047366784, 0.048738994, 0.017403353, 0.0359357, -0.010977684, -0.029161725, -0.08849406, 0.020478064, -0.034230195, -0.027864581, -0.04544809, -0.027071882, -0.02503008, -0.03353358, -0.030602997, 0.0067499545, -0.0096505135, -0.009902736, 0.028272942, -0.030915271, -0.005873181, -0.044559307, 0.0022324694, 0.003615189, 0.0020673238, -0.00533871, -0.019072825, -0.027216008, -0.04520788, 0.02582278, -0.0077348235, -0.0011252427, 0.027191987, -0.013752132, -0.021751188, 0.013307739, -0.026159076, -0.037857395, 0.021090604, 0.024958016, 0.0617825, 0.006984161, 0.03206829, -0.00022820132, 0.03812163, 0.014292608, 0.019301027, -0.022555897, 0.07398526, -0.017883776, 0.04616873, -0.008443449, 0.060869697, 0.03211633, -0.026759606, -0.06548177, -0.01715113, -0.019925578, -0.012623136, -0.0017295257, -0.02039399, 0.05505657, 0.02239976, 0.00655178, -0.0737931, 0.051933814, 0.0054077706, -0.017799702, -0.032764904, 0.013559962, 0.03651221, 0.015757902, -0.0005813879, -0.037521098, 0.057218477, -0.010815541, -0.01979346, -0.012028611, -0.028272942, -0.012623136, -0.036800463, 0.0023540766, -0.017907798, 0.0153375305, 0.01513335, -0.037689246, -0.048282593, -0.035623424, 0.01169832, 0.0012325874, 0.039082475, 0.036632314, -0.045544177, 0.015361551, 0.013055517, -0.0050744764, 0.0096505135, 0.022171559, 0.0427337, 0.008779746, -0.02620712, -0.0067739757, -0.0011004708, -0.042637613, -0.028753364, -0.0036302025, -0.033749774, 0.024861932, 0.02966617, -0.04986799, -0.01716314, -0.006239504, -0.036824483, 0.007951014, 0.017523458, -0.02603897, 0.05837149, -0.0055699134, 0.039779093, 0.030314742, -0.035094958, 0.09733386, -0.022039441, 0.0165506, -0.037521098, -0.023348598, 0.0009375771, 0.003155784, 0.01652658, -0.028849449, -0.022531876, -0.036296017, -0.011452102, 0.0063055623, 0.018087957, -0.0060593453, 0.05150143, -0.02140288, 0.026975797, 0.05707435, 0.05630567, -0.0045219893, -0.008305327, -0.038241737, -0.03713676, 0.017523458, -0.010449218, 0.026062991, -0.011157843, -0.031011356, 0.048306614, 0.043526396, 0.04153264, 0.027672412, -0.0014195022, 0.007230378, 0.011265938, -0.025870822, 0.009848688, -0.031539824, -0.0084374435, -0.016694728, 0.015757902, -0.01171033, -0.021150658, -0.029425958, -0.029425958, 0.01716314, 0.020814361, 0.047898255, -0.0048702965, -0.019637324, -0.021054573, -0.024345476, -0.02220759, 0.021799231, 0.049435608, -0.057794984, 0.010437207, -0.013776152, -0.018712508, -0.04138851, 0.016034145, -0.0042037084, -0.011950542, -0.008797761, 0.022663994, -0.014664937, 0.036055807, 0.009926757, -0.06908494, -0.01816002, 0.025174208, 0.0040145414, -0.007951014, 0.0144247245, -0.012394934, 0.0067739757, -0.018184042, -0.014304619, -0.04400682, -0.020946478, 0.002050809, 0.023696905, -0.005266646, 0.015517689, -0.006617838, -0.022916216, -0.02863326, 0.0011717837, 0.018472295, 0.02400918, 0.07874146, 0.015469647, -0.005428789, -0.019313037, 0.032668818, -0.049483653, 0.0031798051, -0.024958016, -0.03937073, -0.03819369, -0.033941943, 0.035839617, -0.04525592, 0.021090604, 0.024585688, 0.045952536, -0.00017743777, 0.014893138, 0.003936473, 0.029786276, -0.020838384, -0.08686063, -0.008521518, -0.017271236, -0.016982982, 0.041316446, -0.037545122, 0.020141767, -0.0006361862, -0.0035221071, -0.023456693, -0.023468703, 0.002073329, 0.029690191, -0.027047861, 0.006906092, -0.04496767, -0.021306796, -0.014496788, 0.013764142, -0.021823252, 0.017175151, 0.040884066, 0.02140288, -0.006011303, 0.035791572, -0.06538568, -0.013379803, -0.014280598, -0.008455459, -0.029474001, 0.040836025, 0.01713912, -0.015289487, -0.054239847, 0.026879713, -0.0018751542, 0.023660872, 0.03891433, 0.0104071805, -0.012244802, 0.007884956, 0.026135055, -0.034182154, -0.020333938, 0.0035671468, -0.025078123, 0.0065037375, 0.0035431257, -0.029209768, -0.00908001, 0.025678653, 0.0049003228, -0.011518161, -0.0042817774, -0.021294786, -0.014953191, 0.042157188, 0.0383138, 0.005840152, -0.0061854566, 0.084842846, -0.027216008, 0.03555136, -0.023504734, -0.0032698845, 0.007914982, -0.015673827, -0.03045887, -0.042205233, 0.030530933, 0.0017925813, -0.043069996, -0.006353605, 0.008959904, -0.032933053, -5.6534245e-06, -0.010731467, 0.016898908, 0.016514568, -0.017487427, -0.018664464, 0.018904677, 0.034134112, 0.0067859865, 0.010335118, 0.026567437, 0.005786104, -0.012034616, 0.0035791574, -0.016430493, 0.017643563, 0.034422364, -0.014208534, -0.0124549875, -0.030410826, -0.012695199, -0.018628433, -0.0266395, -0.028152835, 0.027552305, -0.023540767, 0.015517689, -0.044679414, 0.03595972, 0.014460756, -0.034398343, -0.009470355, -0.011163848, -0.01834018, -0.02178722, -0.030050509, 0.019625312, 0.009812656, -0.013367793, 0.010851573, 0.03312522, 0.024525635, 0.013620015, 0.03209231, 0.027744476, -0.030362785, -0.00998681, -0.04777815, -0.007746834, -0.04657709, 0.0009263172, 0.0048252568, 0.007386516, 0.016934939, -0.039034434, 0.0075546643, -0.025174208, -0.01049726, -0.07547458, -0.014460756, -0.07191944, -0.023913095, 0.0274322, 0.019961609, 0.062262926, 0.009764614, -0.03206829, 0.012124696, -0.015025254, 0.03564745, -0.008239268, 0.022027431, 0.017247215, -0.016454516, -0.02928183, 0.01191451, -0.004410891, -0.03670438, -0.04544809, -0.017283246, -0.014052397, -0.003930467, -0.022063464, -0.010515276, -0.020634202, 0.032572735, 0.01615425, -0.01431663, -0.042229254, -0.009410301, 0.033893898, 0.015109329, 0.0022609946, 0.036440145, -0.004966381, -0.0010989695, -0.014436736, -0.019216953, 0.0055128634, -0.004497968, 0.021258753, 0.023048332, 0.009446333, -0.00077017944, -0.05246228, -0.00018785322, -0.027023839, -0.029425958, -0.029594107, -0.01735531, -0.02844109, -0.026999818, 0.0033749773, 0.044271056, 0.02420135, -0.033149242, -0.006882071, 0.008983925, 0.02219558, 0.015505678, -0.0056539876, 0.04294989, 0.005215601, 0.042397402, 0.04763402, -0.0335576, 0.007530643, -0.005428789, -0.019529227, -0.0008144685, -0.008053104, 0.05448006, 0.074609816, -0.026471352, -0.025246272, 0.018472295, -0.04777815, -0.029185746, 0.017307268, 0.0014134969, -0.0124549875, -0.03651221, 0.020321928, -0.020225842, -0.008521518, 0.006533764, 0.01049726, 0.0064496896, 0.008215247, -0.0085095065, 0.03125157, 0.0008407417, -0.05707435, -0.020958489, -0.021174679, 0.043622483, -0.012274829, 0.05707435, -0.0075366483, -0.0011717837, 0.03346152, -0.030506913, 0.00021131142, 0.023048332, 0.005488842, 0.060197104, -0.0076687653, 0.013776152, -0.0023946124, -0.016994992, 0.049723864, 0.030338764, -0.014460756, -0.020009652, -0.02261595, 0.02503008, 0.0002467802, 0.015685838, 0.035839617, -0.007987046, -0.012124696, 0.066346526, -0.044078883, -0.013067528, 0.01252705, 0.021114627, 0.00084524567, -0.013764142, 0.021078594, -0.006026316, -0.0043508383, -0.00077693537, -0.004494965, 0.0064136577, 0.053999636, -0.055392865, 0.0154095935, 0.008983925, 0.025438441, -0.0561135, 0.03233252, -0.012815305, -0.0073324684, 0.02256791, -0.0030596992, 0.005572916, 0.0069721504, -0.008203236, -0.016958961, -0.01593806, 0.074561775, 0.027720453, -0.017991873, 0.0067139226, 0.0106714135], [0.036007036, 0.00016491573, -0.029105488, -0.010715246, 0.0029881913, 0.038601063, -0.054593615, 0.03917223, -0.022572817, 0.013160536, -0.013065342, -0.012625071, -0.04236122, -0.04888199, 0.005449842, -0.00045997917, -0.043812923, 0.018300997, -0.025083553, -0.03410316, 0.019431423, -0.07696415, -0.03469812, 0.008734026, 0.029652853, -0.0041944743, 0.008900615, 0.016765999, -0.028510528, 0.013422319, 0.042147033, 0.016670804, 0.019062549, 0.0502623, 0.06958663, -0.035078894, 0.0024557011, 0.047382686, -0.022894096, 0.0018622277, -0.03836308, 0.041099902, 0.015742665, -0.0062827873, -0.010524859, -0.010608153, -0.01277976, 0.009346836, 0.0125417765, -0.0258689, 0.009977494, -0.042979978, -0.0013275066, -0.07972477, -0.021240106, 0.0074786586, 0.032508664, -0.07924879, 0.060638417, -0.045716796, -0.051499818, -0.03626882, 0.014731232, -0.046644937, 0.007966527, 0.011310207, -0.012815459, -0.013279527, 0.06777795, 0.03438874, -0.00089021027, -0.007199027, -0.03641161, -0.033413004, 0.013017745, -0.09348026, 0.08434166, 0.022501422, -0.025440529, -0.03412696, 0.031747114, -0.021585181, -0.0009757359, -0.069158256, 0.03636401, -0.053022917, 0.052927725, -0.10366599, -0.022810802, 0.0030402504, -0.015956853, -0.0032782347, 0.03134254, 0.0055807335, -0.017860727, 0.027844172, 0.011054374, 0.029367272, -0.055021986, 0.010596254, -0.027510993, -0.058068186, -0.04388432, -0.09400383, 0.043027572, 0.011155517, 0.036768585, -0.0033109575, -0.03407936, 0.014743132, 0.0042242226, -0.04626416, -0.016908789, -0.022168243, -0.020442856, 0.029034093, 0.0085436385, -0.049405556, -0.05159501, -0.0040873815, -0.057259038, 0.0022534146, 0.051975787, 0.030795177, 0.0076690465, 0.008204511, 0.00020414597, 0.017158672, -0.0064136786, -0.029914634, 0.0023962052, 0.014909721, 0.047763463, 0.020526152, 0.03472192, 0.022144446, 0.04140928, 0.01385069, -0.0334844, 0.010614103, -0.021811267, -0.006163795, 0.0030179394, 0.035745252, -0.026701847, -0.003593564, -0.029462464, -0.023179678, -0.039624397, 0.0014576543, -0.049833927, -0.039362613, -0.0038850948, 0.015361891, 0.07748771, -0.030842774, 0.058734544, 0.027058823, 0.009150499, 0.018824564, 0.054546017, -0.04795385, 0.0019425474, 0.04735889, 0.011988463, -0.06611206, 0.007068136, -0.04493145, -0.015778363, 0.03241347, 0.0119111175, 0.008632883, 0.02755859, 0.027915567, -0.027748978, 0.0094420295, 0.06892027, 0.00016426499, 0.0167422, -0.058496557, -0.009810906, 0.022763206, 0.027201613, -0.025083553, 0.05678307, 0.031747114, -0.024084019, 0.00087161775, 0.037577733, -0.06592167, -0.02634487, 0.01658751, -0.009971545, 0.0054557915, -0.018622277, 0.03393657, -0.012208598, -0.07948678, 0.018455688, 0.010988928, -0.002573206, -0.053689275, -0.023834135, -0.019145843, -0.03384138, 0.044336487, 0.04355114, -0.0055361115, 0.04369393, 0.007805887, 0.044574473, 0.045811992, -0.00624114, -0.04064773, -0.009495576, -0.0068004034, -0.020859329, 0.030818976, -0.046383154, -0.04793005, 0.051499818, 0.012815459, 0.03472192, -0.040671527, 0.024845568, 0.029414868, 0.015814062, 0.0028335014, 0.023120182, 0.022275336, 0.017444255, -0.039719593, 0.0011438123, 0.02451239, -0.099953435, -0.03260386, -0.033294015, -0.014612241, 0.048620205, -0.018717472, 0.0020689766, 0.0517378, -0.026249675, -0.022858398, 0.02648766, 0.045288425, 0.0016986134, 0.012446582, 0.0012992459, -0.03698277, 0.013362822, 0.008311604, 0.036792383, 0.038125098, -0.0065088724, 0.060162447, 0.041575868, -0.06977702, 0.026106885, -0.012732164, -0.0094420295, 0.0074846083, 0.0052773035, 0.06382741, 0.03562626, -0.030485798, 0.023322469, 0.012232397, -0.026059289, -0.023262972, 0.03288944, -0.030509597, 0.0487392, 0.014052977, 0.048644006, -0.0117326295, 0.05768741, 0.05345129, -0.006104299, 0.03700657, 0.039957576, 0.026106885, 0.021335298, 0.015314294, -0.01080449, 0.023655646, -0.005881189, -0.022572817, 5.103649e-05, 0.001804219, -0.020490455, -0.015492782, 0.039362613, 0.016873091, 0.06715919, 0.034793314, 0.0114173, 0.017015882, -0.042051837, 0.006562419, 2.4821025e-05, 0.022763206, -0.024988359, -0.050881058, -0.027677583, 0.020311967, 0.03210409, 0.06297066, -0.042147033, -0.013315225, 0.057354234, 0.034293547, 0.0030580992, -0.05573594, 0.024536189, -0.03638781, 0.005750297, 0.017979719, 0.031056961, -0.014207667, -0.03548347, -0.014017279, -0.090386465, 0.042718194, 0.0056580785, -0.0076095504, -0.020609446, -0.018991152, -0.011131719, -2.1393029e-05, -0.038886648, -0.024072118, -0.0020912876, -0.005604532, -0.06820632, -0.102999635, -0.043789122, -0.075393446, -0.015457084, 0.0011029089, -0.061685547, 0.008020073, -0.024607584, -0.055355165, -0.0054617412, -0.007413213, -0.0005551729, -0.006502923, 0.016194837, -0.03258006, 0.0013185821, 0.050452687, 0.0072704223, 0.0113280555, 0.03788711, -0.013172435, -0.026106885, -0.008609084, -0.04902478, 0.05111904, 0.10623622, -0.04324176, 0.019502819, 0.061828338, 0.016516116, -0.016052045, -0.020680841, -0.03029541, -0.013493714, 0.009489627, -0.030937968, 0.027844172, -0.01796782, -0.027225412, -0.036792383, -0.010935382, 0.06339904, 0.014683636, -0.027986962, 0.032556262, -0.038244087, -0.018063014, -0.014326659, 0.0023010115, 0.036792383, 0.008793523, -0.010554607, -0.003641161, 0.019717004, -0.029676652, -0.016028248, 0.02558332, -0.012279994, -0.02008588, 0.05097625, -0.0049143774, -0.02877231, 0.024940763, -0.023072585, -0.009513425, -0.0032514615, 0.019574214, -0.004747788, -0.021811267, 0.040576335, 0.006818252, 0.015314294, 0.015171504, -0.03714936, 0.06044803, -0.014838326, 0.029890837, 0.0032841843, 0.011583889, 0.042908583, 0.06425578, 0.020121578, 0.0039773136, -0.03317502, 0.015254798, 0.0042747944, -0.03624502, -0.039553, 0.03745874, -0.038934242, 0.004762662, -0.038315482, 0.025392933, -0.006318485, 0.0023129105, -0.009412282, -0.013743597, -0.0055599096, -0.0041052303, -0.022941694, -0.041623466, -0.048168037, -0.023096383, -0.0052505303, 0.042385016, -0.0006176438, -0.03398417, 0.025464328, 0.004277769, -0.045098037, -0.026130684, -0.09181437, -0.002103187, 0.037577733, -0.037244555, -0.005571809, 0.007972476, -0.051499818, -0.042075638, 0.004976848, -0.011244762, 0.023334367, -0.0032246881, 0.01719437, -0.12660769, -0.008876817, 0.013255729, 0.056402296, 0.004854881, 0.0059406846, -0.059876867, 0.016111542, 0.034222152, 0.009739511, 0.022180144, 0.012434684, 0.017908324, -0.06325625, 0.029176883, -0.030343007, -0.022917895, -0.023786537, 0.014874023, 0.06439857, -0.01703968, -0.03698277, -0.029200682, -0.0020050183, 0.03410316, -0.010792591, -0.020799834, 0.00035493137, 0.013719799, 0.039386414, -0.009091003, 0.026225878, -0.0125179775, -0.04126649, -0.031223549, -0.01294635, -0.05145222, -0.059258107, -0.022049252, -0.025035955, 0.028510528, 0.05435563, 0.059400897, 0.0001610113, 0.009650266, 0.007954627, -0.0060537276, -0.018063014, 0.008388949, 0.022929793, -0.05435563, 0.02558332, -0.0089482125, -0.037101764, -0.0044384087, 0.003302033, -0.024631383, -0.016337628, 0.033579595, 0.050643075, 0.038339283, -0.0038018003, 0.020918826, -0.062399503, -0.017539447, 0.008847069, 0.0019172616, 0.028724713, -0.01385069, 0.012648869, -0.00959077, -0.003992188, -0.011762378, -0.02663045, -0.014993016, 0.002107649, -0.02314398, 0.06306586, 0.011262611, -0.037077963, 0.029986031, -0.011869471, 0.007841585, -0.0036768585, 0.015814062, -0.0051553366, 0.04781106, 0.010399917, -0.012470381, -0.00898391, 0.023120182, -0.059448496, 0.051975787, -0.0043521393, 0.044098504, 0.009001759, -0.036816183, 0.009489627, -0.019407624, 0.014993016, 0.018039215, -0.045478813, 0.02372704, 0.06758756, 0.018051114, -0.03683998, -0.06796834, 0.03167572, -0.029557658, -0.004548476, 0.014255264, 0.013779295, 0.03460293, 0.0027710304, -0.020240571, -0.047097106, 0.055545554, 0.018884059, -0.039005637, -0.006776605, -0.003899969, -0.018538982, -0.018372394, -0.030461999, -0.023239173, 0.011661234, 0.024440994, -0.0031384188, -0.026392467, -0.052308965, -0.010376118, 0.0012211573, 0.0135294115, 0.023715142, -0.0019380852, 0.009364685, 0.06425578, 0.017979719, 0.018289099, 0.01599255, 0.011167416, -0.01599255, -0.016016347, 0.020038284, -0.034007967, -0.037672926, 0.005268379, 0.04490765, -0.03700657, 0.03638781, 0.029248279, -0.024048321, 0.031294946, 0.044146102, 0.0139101865, 0.031152153, -0.016171038, 0.0022459775, 0.038767654, 0.04045734, 0.030985564, 0.047858655, 0.015123907, 0.06482694, -0.04807284, 0.0039654146, 0.01599255, 0.013624605, -0.012232397, -0.006181644, -0.03488851, -0.028201148, -0.010316622, -0.01095918, -0.014945419, 0.006377981, 0.03993378, -0.0058722645, 0.037101764, -0.009317088, 0.006443427, 0.020692741, 0.009912049, 0.0029450567, 0.067635156, -0.017158672, -0.018991152, 0.02755859, 0.009192146, 0.030152619, 0.0020764137, -0.014862124, 0.015647473, 0.007984376, 0.065112524, -0.024583785, 0.0005990513, -0.026511459, 0.020835532, -0.028653318, -0.00746081, -0.04248021, 0.0063422835, 0.010887785, 0.0041796006, -0.004289668, -0.012506079, -0.015814062, -0.017872626, 0.010316622, 0.041242693, 0.057497025, -0.053641677, -0.064017795, -0.030723782, -0.0059109367, -0.019157741, -0.012279994, 0.026678048, -0.009828755, -0.009156449, -0.013231931, -0.05345129, -0.0053843963, -0.044693466, -0.000985404, 0.005408195, -0.027772777, 0.007567903, -0.021394795, -0.0029777794, -0.011078172, -0.05159501, -0.00032908775, 0.07063376, 0.044622067, -0.010596254, 0.007746391, -0.035340678, -0.0018369418, -0.021525687, -0.03246107, -0.031247348, 0.033698585, -0.046335556, 0.016837394, 0.0033883024, 0.0019246986, -0.019514719, -0.052451756, -0.02070464, 0.009299239, 0.0007299427, 0.0056402297, 0.051832996, 0.006598117, 0.008484143, -0.033531997, 0.0020065056, -0.067492366, 0.01782503, -0.022560919, -0.006526721, -0.016968286, -0.03714936, 0.017920222, -0.07130012, 0.019752702, 0.015659371, 0.047477882, -0.014552744, 0.0049084276, -0.032556262, 0.0025404831, -0.011161467, -0.0055599096, -0.037244555, -0.0034805215, 0.015730767, 0.015159604, 0.013279527, 0.012506079, -0.03165192, -0.028986497, -0.044193696, 0.008323504, -0.0047864607, 0.015814062, -0.022334833, -0.0048757046, -0.013220032, -0.028296342, -0.0011802537, 0.021525687, -0.040481143, -0.020549951, 0.021501888, 0.022013554, 0.007062186, -0.004051684, -0.02479797, -0.009620518, -0.028248744, -0.0075322054, -0.016670804, 0.034031764, 0.003197915, 0.006366082, -0.042242225, 0.009751409, 0.02115681, 0.010762843, 0.054784, -0.029295877, 0.0050898907, -0.007425112, -0.030914169, 0.010316622, -0.010286874, -0.056687877, 0.006139997, -0.0058960626, -0.011357804, 0.027439598, 0.0073001706, 0.025059754, 0.02267991, -0.01658751, -0.04121889, -0.030176418, -0.017218169, 0.035721455, 0.0456454, 0.023786537, -0.0060210046, 0.07882042, -0.04488385, 0.028105954, -0.048453618, 0.0066397637, 0.010304723, -0.029962232, -0.044503078, -0.034769516, 0.036007036, -0.025226343, -0.015135806, -0.004325366, -0.031199751, -0.04688292, 0.020454757, 0.0070205387, 0.027653784, -0.017706037, 0.012232397, -0.01768224, 0.03607843, 0.018098712, 0.0072228257, 0.005009571, 0.039481606, -0.0062946863, -0.04400331, 0.033103626, -0.004729939, 0.013041544, 0.013124838, 0.01110197, -0.015349992, -0.019931192, -0.010673599, -0.04552641, -0.004729939, -0.02479797, 0.036720987, 0.009162398, 0.054403227, -0.040861916, 0.055069584, 0.0031324693, -0.029414868, -0.023512855, 9.6774114e-05, 0.01736096, 0.003730405, -0.039719593, 0.0075441045, -0.020157276, 0.0243696, -0.0050006467, 0.01875317, 0.020966424, 0.029010294, 0.004685317, -0.03779192, -0.027130218, -0.0120241605, -0.021989755, 0.03150913, -0.05283253, 0.026440063, 0.01400538, -0.007984376, 0.0008195587, -0.040623933, 0.026749443, -0.0039326916, -0.022120647, -0.087340266, 0.006041828, -0.016730301, -0.039719593, 0.0063720313, 0.026440063, 0.009620518, 0.02451239, -0.014493248, 0.007335868, 0.007335868, 0.025535723, -0.020133477, 0.011024626, 0.016635107, -0.039767187, -0.027225412, -0.0076630968, -0.0517378, 0.01293445, 0.02315588, -0.027011225, 0.0024497516, -0.026820838, -0.007520306, 0.02251332, 0.01872937, 0.0018860261, -0.011661234, 0.026130684, -0.00027833015, 0.0068896473, 0.0167541, 0.0023441461, -0.022596616, -0.007734492, -0.029700449, 0.018170107, -0.035245486, -0.010132184, 0.013957784, 0.005500414, -0.0046972167, -0.025630917, 0.017265767, 0.014743132, -0.03396037, 0.0066278647, -0.018229602, -0.024893165, 0.00062545267, 0.03334161, -0.011518443, 0.011494645, 0.03788711, 0.06268508, 0.021406693, -0.028558124, -0.01902685, 0.0019722953, 0.03474572, 0.028581923, -0.018408092, 0.05402245, 0.008734026, 0.035269283, 0.017015882, 0.021359097, -0.010935382, -0.0021805319, -0.009674065, -0.058020588, -0.02558332, 0.06506493, 0.04236122, -0.0044532823, 0.028629519, 0.015445186, -0.091481194, 0.0073120696, 0.026582854, 0.05083346, 0.0013817968, -0.026225878, -0.010518909, -0.013469915, -0.001207027, -0.005280278, -0.039695792, -0.010227378, 0.03788711, -0.018289099, 0.007984376, 0.018360494, -0.03224688, -0.026535258, -0.0006864362, 0.03469812, 0.020192973, 0.013148637, -0.021513786, 0.013624605, 0.02510735, -0.020169176, 0.004932226, 0.026297273, 0.018229602, -0.012565575, 0.016099643, -0.011768327, 0.015706968, -0.051690206, 0.004206374, 0.022560919, -0.03379378, 0.012982047, -0.009638367, -0.033746183, 0.004813234, 0.005985307, 0.02160898, 0.0073180194, -0.012470381, 0.04826323, -0.03274665, 0.031889904, 0.005283253, 0.017789332, 0.019502819, 0.024440994, -0.009067205, -0.017111076, 0.00837705, -0.008537689, -0.008847069, -0.014957317, 0.032841843, -0.058972526, 0.002406617, -0.00037519724, -0.00057971507, -0.02908169, -0.018408092, 0.0009088028, -0.017551348, -0.024024522, -0.008888716, -0.0064017796, 0.060543224, 0.009721662, -0.046930518, 0.008650732, 0.11956335, 0.0045752493, -0.03943401, 0.054070048, 0.014017279], [-0.007678009, -0.0032887682, -0.02456457, 0.011162839, 0.015583702, -0.0013558264, -0.0115486365, 0.036657117, 0.0013226224, 0.040198866, -0.0050027226, -0.011314628, -0.022350974, -0.013268915, -0.015697544, 0.02610776, -0.036682416, 0.018505646, 0.008879675, -0.035366908, 0.0065901857, -0.03364663, -0.019074855, -0.009739813, -0.0029693784, 0.004417701, -0.009341367, 0.01830326, -0.054391168, 0.024855498, 0.049736295, 0.026436638, 0.01885982, -0.0026057165, 0.040806025, -0.035240415, -0.0067482996, 0.04998928, -0.05039405, -0.009101034, -0.043386444, 0.009189578, 0.02144024, -0.018050278, 0.001340015, 0.013673686, -0.00709615, 0.013838125, -0.009410937, -0.023388201, -0.019808505, -0.037112486, 0.003127492, -0.0866211, 0.011099593, 0.0053916825, 0.07179634, -0.07068322, 0.06435867, -0.019884398, -0.054998323, 0.0029377555, 0.022692502, -0.0061980635, -0.009676568, 0.00716572, 0.0035132898, 0.020529503, 0.03617645, 0.037770238, -0.01220639, 0.023881517, -0.012503644, -0.031293895, -0.016393244, -0.052873276, 0.06911473, 0.06790042, 0.015267475, -0.091326565, 0.036581222, 0.0035923468, 0.017670805, -0.024109202, 0.014015213, -0.034430873, 0.06683789, -0.115663454, -0.018935716, 0.039111044, -0.0050280206, 0.029295336, -0.0011439538, 0.00979041, -0.00894292, -0.006659756, 0.018240014, 0.013230967, -0.044929635, -0.004708631, -0.021313747, -0.047535352, -0.05778113, -0.0780703, 0.043867107, 0.01320567, 0.03984469, -0.041210797, -0.007962614, -0.008696263, 0.015027141, -0.052721485, 0.00049529166, -0.0024112363, 0.027650952, 0.041691463, -0.016519736, -0.025399411, -0.024589868, -0.020251224, -0.121330254, -0.048218403, 0.035695784, 0.037820835, -0.031243298, 0.01928989, -0.028839968, 0.026461935, -0.014053159, -0.012263311, -0.008348412, 0.0144452825, 0.030459054, 0.05181075, 0.045359705, 0.015204228, 0.056819797, 0.0069506853, -0.022920186, 0.0068937642, -0.03109151, 0.008500201, -0.02198415, 0.0022736774, -0.04030006, -0.011732048, 0.015090386, 0.008209271, -0.06172765, 0.0050944285, -0.03728957, -0.04300697, -0.005565608, 0.015583702, 0.08834138, -0.017202787, 0.021073416, 0.049458016, 0.0054359543, 0.04073013, 0.012079899, -0.04766184, -0.0026879357, 0.05778113, -0.0122886095, -0.061272282, 0.02709439, -0.035240415, -0.02567769, 0.046093352, -0.005518174, -0.010979426, 0.026057163, 6.7544264e-05, -0.05178545, 0.026588427, 0.039389323, 0.02099752, -0.01589993, -0.053328644, -0.027069094, 0.025905374, 0.030610843, -0.044904336, 0.029067652, 0.026436638, 0.010713795, -0.0022041071, 0.018366506, -0.069519505, 0.0075578424, -0.0041805306, -0.016266754, -0.022654554, -0.011921785, -0.026158357, -0.019884398, -0.08980867, 0.034152593, 0.008146026, -0.035847574, -0.05464415, 0.0026167843, -0.017696103, -0.058843654, 0.047510054, 0.044246584, 0.00048422368, 0.016228806, 0.014280844, -0.008601394, 0.053581625, 0.012579539, 0.012712355, -0.02709439, 0.021022819, -0.027650952, 0.017354578, -0.024665762, -0.026689619, 0.06294197, 0.0019542873, 0.02909295, -0.018935716, 0.037365466, 0.020934274, 0.035695784, -0.0054106563, 0.015646948, -0.0005747439, 0.0006043902, -0.041084304, 0.002338504, -0.0041678813, -0.1135384, -0.03266, -0.025525901, -0.023502044, 0.038933955, -0.0034721803, 0.0061411425, 0.039566413, -0.01588728, 0.02028917, 0.03534161, 0.030408457, 0.0076527107, 0.013167722, -0.01688656, -0.00030891495, 0.01591258, -0.013951967, 0.029345931, 0.031243298, 0.00063759414, 0.050748225, 0.01362309, -0.05196254, -0.017974384, 0.011441119, -0.0137875285, 0.020099433, -0.019403733, 0.06435867, -0.0028017776, -0.046042755, 0.02356529, 0.010486111, -0.03053495, -0.030281967, 0.055150114, 0.0031227488, 0.041059006, 0.027701547, 0.02909295, -0.010871909, 0.089758076, 0.061272282, -0.022186536, 0.036505327, 0.006103195, 0.019871749, -0.00089966785, 0.008405332, 0.012630135, 0.01589993, 0.006194901, -0.047332965, -0.04184325, 0.008139702, -0.01213682, -0.017696103, 0.03857978, 0.02371708, 0.058590673, 0.031723965, -0.023628535, 0.015975824, -0.045081425, 0.007621088, 0.018265313, -0.006305581, -0.0610699, -0.02371708, -0.03291298, 0.045663282, 0.012680732, 0.07781732, -0.014141704, -0.034936838, 0.068861745, -0.015014492, -0.031470984, -0.054593552, 0.00415207, 0.016937157, 0.041286692, 0.023742378, 0.025842128, -0.055301905, -0.012946363, -0.009600674, -0.10185062, 0.0022452169, 0.034329683, -0.035164524, 0.0014910137, -0.024577219, -0.016367948, 0.0120419515, -0.07225171, -0.006470019, 0.012965336, -0.0020586425, -0.046245143, -0.08813899, -0.056415025, -0.07427557, -0.01773405, -0.011668803, -0.042526305, -0.0030041633, -0.044069495, -0.015710194, 0.014293493, -0.004269074, -0.027853338, -0.023071975, 0.036125854, -0.0010229967, 0.0013526641, 0.049179737, 0.0075704916, 0.06597775, 0.020820433, -0.046068054, -0.023679132, -0.016861262, -0.028865267, 0.009594349, 0.08110609, -0.045207914, 0.013357459, 0.09841007, -0.004885718, -0.039490517, -0.014369387, -0.011055321, -0.021528782, 0.008266193, -0.041109603, 0.030560248, -0.0040888246, -0.041691463, -0.035265714, 0.00016058439, 0.046169247, -0.02313522, -0.036075257, 0.035113927, -0.028865267, -0.02285694, 0.0057774805, 0.029320635, 0.04786423, 0.02101017, -0.011441119, -0.008670964, 0.043867107, -0.0072795623, -0.028890565, 0.06739445, -0.01191546, -0.045739178, 0.03192635, 0.0037504607, -0.028612284, -0.0003903436, -0.02313522, -0.006723001, -0.012212714, 0.011757347, 0.0054707397, 0.014457932, 0.021617327, -0.030914422, 0.018265313, -0.021629976, -0.008367386, 0.0723529, -0.031319194, 0.018480347, -0.011681452, 0.035974067, 0.017506367, 0.044727247, 0.013749581, 0.007855097, -0.0137875285, 0.03645473, -0.0123392055, -0.018290611, -0.036100555, 0.06967129, -0.05874246, 0.031066211, -0.05732576, 0.047079984, 0.029295336, -0.034759752, -0.009366665, 0.0025630256, -0.045739178, -0.02426099, 0.018897768, -0.015798736, -0.02894116, -0.020782486, -0.013420705, 0.029826598, -0.016734771, -0.0009795154, 0.025374113, 0.0020048837, -0.050722927, -0.007678009, -0.069519505, -0.006397287, 0.025513252, -0.05095061, -0.023729729, -0.011738373, -0.0681028, -0.016140264, -0.0054675774, -0.032963578, 0.009404613, -0.0036872153, 0.0014973383, -0.12709825, -0.0075578424, -0.01085926, 0.06774863, -0.036910098, 0.023476746, -0.0030152313, 0.028966459, 0.0667367, 0.030206071, 0.019365786, -3.40933e-05, -0.0047370913, -0.016861262, 0.019656716, 0.00829149, -0.04460076, -0.023451447, -0.001226173, 0.06015916, -0.0042595873, -0.008474903, -0.04245041, 0.016684175, 0.06233481, 0.0099358745, -0.013218319, 0.0036208073, 0.015722843, 0.06704028, 0.02285694, 0.003911737, 0.013749581, -0.011257707, -0.03534161, -0.013446002, -0.032887682, -0.03900985, -0.03804852, 0.012022978, 0.0234135, 0.03731487, 0.034253787, 0.0024855498, 0.041463777, 0.026461935, -0.010663198, -0.03377312, -0.023615886, 0.015204228, -0.039996482, -0.0028049399, -0.012800898, -0.03961701, -0.021946203, 0.007013931, -0.020921625, -0.0067356504, 0.01744312, 0.025197025, 0.022338327, -0.015798736, -0.011700425, -0.05631383, -0.02227508, 0.004493596, -0.005613042, 0.00865199, 0.014154353, -0.019011611, -0.03875687, 0.0021519295, -0.004278561, 0.0066091595, 0.002283164, -0.009309744, -0.028207513, 0.035240415, 0.04242511, -0.04513202, -0.0053379238, -0.03136979, 0.032179333, -0.018632138, 0.00752622, -0.024944043, 0.033570733, 0.03878217, 0.003627132, -0.025209675, 0.015760789, -0.045385003, 0.027322074, 0.0008063807, -0.0035164522, -0.012143144, -0.035594594, 0.0061790897, -0.04996398, -0.0036334565, -0.011055321, -0.02427364, 0.0031290732, 0.07488272, 0.028081022, -0.030585544, -0.060057968, 0.041716762, -0.009120007, -0.019631417, 0.023944763, 0.00936034, 0.0283846, 0.0048446087, -0.02370443, -0.017088946, 0.067647435, 0.0030405296, -0.052063733, -0.003820031, -0.005034345, -0.040679533, 0.014533826, 0.006425747, -0.017519016, 0.022806343, 0.010144585, 0.00979041, -0.057983514, -0.06906413, 0.016051719, -0.0058344016, 0.047206473, -0.012718678, -0.011333602, 0.0102647515, 0.042070936, 0.015090386, 0.03179986, 0.006308743, 0.012813548, -0.04184325, -0.015811386, 0.009537428, 0.0005636759, -0.026133059, 0.01745577, 0.050444648, -0.03066144, 0.03445617, 0.021882959, -0.037669048, -0.019011611, 0.05449236, -0.0042943726, 0.03192635, -0.033317752, -0.0035164522, 0.044803143, 0.014483229, 0.0056826123, 0.035670485, 0.027069094, 0.065218806, -0.05368282, 0.04940742, -0.0047971746, 0.0015985311, -0.008525499, -0.0024934555, -0.03878217, -0.042627495, -0.033671927, -0.02911825, -0.022907536, -0.017291332, 0.016734771, -0.009758787, 0.044347774, -0.014154353, 8.1626284e-05, 0.039945886, 0.045587387, -0.00851285, 0.10989546, -0.017594911, -0.027347373, 0.0411602, 0.008689938, 0.05196254, -0.01191546, -0.002681611, 0.024880797, -0.012004004, 0.06359972, -0.018543594, -0.017101595, -0.024349535, 0.008955569, -0.028131617, 0.00013706496, -0.03984469, 0.002087103, 0.00013153096, 0.0068052206, -0.009733489, 0.010448164, -0.03814971, -0.030813228, 0.01533072, 0.033823717, 0.062688984, -0.06992427, -0.04525851, -0.018935716, -0.032584105, -0.018505646, 0.002428629, 0.02284429, -0.018847171, -0.015077738, -0.009524778, -0.062132422, -0.01872068, -0.016911859, -0.019049557, 0.0094741825, -0.047510054, 0.0049805865, -0.025083182, -0.018100874, -0.0017186976, -0.03916164, 0.0013740094, 0.042323917, 0.03182516, -0.015204228, 0.014812106, -0.048749667, 0.02045361, -0.004986911, -0.032381717, -0.030155476, 0.0066534313, -0.05631383, 0.041716762, 0.03787143, -0.0036555924, 0.009942199, -0.041387882, -0.019833803, 0.028156916, 0.005742695, -0.019947644, 0.031142106, 0.0037662722, 0.0031954811, -0.043259952, 0.03379842, -0.07007606, 0.006454208, -0.011112242, -0.017987033, -0.01688656, -0.044651356, 0.019859102, -0.055554885, 0.0117130745, -0.0072732377, 0.03205284, -0.01072012, -0.0034848296, -0.019125452, -0.011763671, -0.014508528, -0.016633578, -0.021642625, 0.015027141, -0.00042018757, 0.032103438, 0.007842448, 0.005884998, -0.023375552, -0.027372671, -0.030990316, 0.001813566, 0.013180371, 0.037770238, -0.027777443, -0.016405893, -0.010024419, -0.016292052, -0.04485374, 0.030357862, -0.019808505, 0.0022072694, 0.00951213, 0.03435498, -0.0007107218, 0.0065965103, -0.028232811, -0.02015003, 0.014091107, 0.024438078, 0.003959171, 0.043082863, 0.024956692, 0.0009233849, -0.010486111, 0.03491154, 0.024362184, 0.020213276, 0.08748124, -0.023261711, 0.003399448, -0.0036302942, -0.0059735416, 0.033823717, -0.008689938, -0.039515816, -0.0018942041, -0.01658298, -0.022502765, 0.009499481, -0.006602835, 0.026284847, 0.0070645274, -0.011504364, -0.039794095, -0.018619489, 0.0011273518, 0.051178295, 0.05064703, 0.01885982, -0.023451447, 0.059552003, -0.020213276, 0.02198415, -0.0368848, 0.009113682, -0.009600674, 0.0002446812, -0.043664724, -0.025197025, 0.0069064135, -0.023805622, 0.014888001, -0.0025725125, -0.049609806, -0.059653196, 0.009701867, 0.0255512, 0.020352416, -0.0008103335, 0.0067103524, -0.018113524, 0.02909295, 0.010106638, 0.004838284, 0.012617486, 0.022781044, -0.027170286, -0.04743416, 0.018227365, -0.023944763, 0.022072695, 0.026765514, 0.010049717, -0.018290611, -0.027347373, -0.013876072, -0.047611244, -0.0411855, -0.00581859, 0.024539271, 0.021022819, 0.037390765, -0.035872873, 0.057932917, -0.00037888033, -0.019315189, -0.010271076, -0.010966777, 0.006811545, 0.0072036674, -0.018366506, 0.008835402, -0.020934274, 0.0052145952, -0.013534547, 0.03792203, 0.023223763, 0.0003581279, 0.005986191, -0.017506367, -0.016873911, -0.019859102, -0.0045473548, 0.021541432, -0.025842128, 0.01775935, 0.032381717, 0.016405893, -0.019315189, -0.026259549, 0.020415662, -0.008639341, -0.017670805, -0.09198432, -0.03023137, -0.0065522385, -0.0127756, -0.012219039, 0.030762633, -0.001778781, 0.023084624, -0.011320952, 0.0066724047, -0.0006960963, 0.012940038, -0.0066344575, 0.0031796696, 0.009992796, -0.054391168, -0.0024602516, -0.0066534313, -0.076400615, 0.013496599, 0.00479085, -0.04614395, 0.02911825, 0.009088385, -0.02316052, -0.008506525, -0.0028334004, 0.004550517, 0.034506768, -0.021933554, -0.018581541, -0.024185097, -0.008380035, 0.023995358, -0.016798016, 0.018050278, -0.035417505, 0.024779605, -0.017987033, -0.006836843, 0.02013738, 0.0025930672, -0.037340168, -0.024235692, 0.017620208, 0.027701547, -0.04047715, 0.024855498, -0.04743416, 0.0020143706, 0.02255336, 0.0023827758, -0.019378435, 0.0036492678, 0.0035291014, 0.020086784, 0.023438798, -0.02653783, 0.009214875, 0.015861982, 0.02273045, 0.00723529, -0.014141704, 0.029219441, 0.026284847, 0.057072777, 0.015748141, -0.001734509, -0.011687776, -0.0085191745, -0.0067040278, -0.058438882, 0.0022294053, 0.058590673, 0.05778113, -0.031723965, 0.009050437, 0.0046074376, -0.06638252, -0.0009099453, 0.043259952, 0.034582663, 0.011966057, -0.013496599, 0.023590587, -0.030737335, 0.0049647754, -0.009841006, -0.00915163, -0.0072732377, 0.024513973, -0.016975105, 0.008076456, 0.017088946, -0.033899613, -0.0069759833, -0.008335763, 0.05322745, 0.01462237, 0.038427994, -0.0496351, 0.026360743, 0.025159078, -0.0062138746, 0.0019337325, 0.02709439, 0.05434057, 0.008196622, 0.008715236, -0.0011700426, -0.0012909997, -0.05135538, -0.003867465, 0.0155331055, -0.045486197, 0.033823717, 0.00915163, -0.019188698, -0.0059355944, -0.0062454976, 0.017923787, 0.01503979, -0.00091626984, 0.018227365, -0.06486463, 0.0019653554, -0.0033235534, 0.012680732, 0.020314468, 0.027423268, -0.039794095, -0.0021139823, -0.013028582, -0.013863423, -0.019492276, -0.029877195, 0.035164524, -0.051911943, 0.006488993, 0.010916181, -0.00053126254, -0.014394686, -0.00766536, 0.0050659683, -0.0081080785, -0.022161238, 0.004654872, -0.01831591, 0.03721368, 0.041640867, 0.002474482, 0.00422164, 0.07139157, -0.011972382, -0.005647827, 0.014318791, 0.007469299], [0.017163169, -0.0014361518, -0.024587136, 0.049478624, -0.021206677, 0.021989292, -0.04134813, 0.028391512, -0.0060326527, 0.015619679, -0.046391644, -0.007364184, -0.008695716, -0.052391686, 0.006951138, -0.0046820994, -0.058652602, 0.027348027, -0.023021907, -0.039065503, 0.015228372, -0.03645679, -0.072000526, 0.0008716096, -0.003937529, -0.011717477, -0.024674093, 0.017315343, 0.010837035, 0.007380489, 0.016163161, 0.02236973, -0.0067120055, 0.028956734, 0.036282875, -0.040522035, 0.009983769, -0.017630564, -0.033869814, 0.015760984, -0.03273937, 0.041695956, -0.01052725, -0.053696044, -0.02017406, -0.018761007, -0.03852202, -0.055739537, -0.0070815734, -0.020304495, 0.030521963, -0.026174104, 0.019152313, -0.040500294, -0.025195837, -0.012858789, -0.01405445, -0.072652705, 0.037717666, -0.023130603, -0.030521963, -0.0040788343, 0.027608898, -0.023761043, -0.020652324, 0.009788115, -0.023152342, -0.04063073, 0.033174157, 0.013934884, -0.029956741, 0.022391468, -0.020163191, -0.046087295, 0.011293561, -0.102870315, 0.08400061, 0.036261134, -0.058913473, 0.034652427, -0.012282698, -0.038761154, -0.0139892325, -0.042000305, 0.023630608, -0.034717645, 0.051522117, -0.08965283, -0.02265234, -0.00793484, -0.0075978814, -0.00046128055, 0.038891587, 0.00016312959, -0.056174323, 0.027043676, 0.018097958, 0.023695825, -0.037739407, 0.014217495, -0.016315337, -0.0629135, -0.03695679, -0.075478815, 0.030108916, 0.04826122, 0.0060109133, -0.010369641, -0.033869814, 0.06508743, 0.009891377, -0.00015098616, -0.0015108807, -0.0009524526, -0.00734788, 0.0244567, -0.0072065745, -0.08300061, -0.023717564, 0.022782775, -0.044130757, -0.012467482, 0.046043813, 0.025174096, -0.020347975, 0.020369714, 0.041174214, 0.030065438, 0.0144457575, -0.02817412, -0.026695848, 0.01255444, 0.06087001, 0.009353329, 0.07269619, -0.022217553, 0.0099783335, -0.01802187, -0.023717564, -0.011728346, -0.030108916, 0.021000152, 0.0028206727, 0.031021966, -0.036804616, 0.007684839, -0.0250654, -0.04800035, -0.021771898, 0.006304394, -0.049000356, -0.009048979, -0.015467504, 0.018815355, 0.019489273, -0.018369699, 0.050565585, 0.01087508, -0.0040217685, 0.007646795, 0.012663136, -0.06587005, 0.0044755763, 0.056130845, 0.030652398, -0.0905224, 0.01407619, -0.01989145, -0.03089153, 0.019391445, 0.027913248, -0.05960913, -0.006853311, 0.027369766, -0.0037690492, 0.01191313, 0.036326353, 0.023608869, 0.020674065, -0.06952225, -0.03676114, 0.04826122, 0.026739325, -0.039652463, 0.06239176, 0.05230473, -0.04158726, -0.0066957013, 0.012891399, -0.084304966, -0.01956536, -0.000466036, -0.01132617, 0.010250075, -0.007157661, 0.005481018, -0.0041223126, -0.058087382, 0.002782629, -0.005940261, 0.00019599329, -0.053304736, -0.028043684, 0.0047364477, -0.025587143, 0.02293495, 0.050000366, -0.048782963, 0.027391504, -0.009815289, 0.034978516, 0.04773948, -0.007793535, -0.028978473, 0.011858782, 0.008429409, -0.050565585, 0.019130575, -0.023521911, -0.059826523, 0.05726129, 0.0022636035, 0.012858789, -0.030782834, 0.00267665, 0.05265256, -0.014521846, 0.015163154, 0.017000124, 0.034435034, 0.013543577, -0.0397829, -0.05108733, 0.039282896, -0.046000335, -0.030761095, -0.01772839, 0.03428286, 0.086131066, -0.05686998, 0.01680447, 0.04895688, -0.050609067, -0.020739282, 0.026174104, 0.04617425, -0.0128370505, 0.026782805, -0.017250126, -0.03486982, -0.006673962, 0.00018376493, 0.019174052, 0.006673962, -0.023695825, 0.06530482, 0.009146806, -0.05165255, -0.0024280068, 0.01254357, -0.0143261915, 0.03578287, 0.019945798, 0.07865275, 0.008108755, -0.011717477, 0.030152394, -0.020326236, -0.035978522, -0.007407663, 0.018587092, -0.040217686, 0.03882637, 0.017913174, 0.04552207, -0.015271851, -0.012032697, 0.02354365, -0.032956764, 0.05634824, 0.0072989664, 0.031000227, -0.0023492018, 0.017706651, 0.07100052, 0.0134131415, -0.0149022825, -0.008831587, -0.030935008, -0.0025828993, -0.0106033385, -0.0329785, 0.053435173, -0.018597962, 0.07434837, 0.013206618, 0.011239213, 0.028261077, -0.063522205, 0.0074130977, -0.013695752, 0.03119588, -0.024565397, -0.041630737, -0.0075435336, 0.011103342, 0.029913262, 0.068652675, -0.03310894, -0.019728405, 0.028587166, 0.0060924357, 0.008163103, 0.0046032947, 0.010896819, -0.041695956, 0.008777238, 0.019652318, 0.04895688, 0.012619657, -0.026130626, -0.05569606, -0.07643534, 0.04217422, -0.002732357, -0.013543577, -0.03728288, 0.008054406, -0.008907674, -0.010543555, -0.045174245, -0.0036494832, -0.015674027, -0.029869784, -0.07787013, -0.08752238, -0.009250067, -0.029782826, -0.0032310018, -0.014358801, -0.025434969, 0.00917398, -0.013771839, -0.0996529, -0.028304555, -0.017978393, 0.06052218, 0.016326206, -0.028239336, -0.014097929, 0.0011773184, 0.016087074, 0.020869717, -0.011125081, -0.010793557, 0.01376097, -0.032087192, -0.026826283, -0.026826283, 0.0099076815, 0.10773992, -0.0732614, 0.03421764, 0.017184908, -0.0001951441, -0.031065444, -0.040130727, -0.03854376, 0.03543504, 0.026434975, -0.0075978814, 0.015076197, -0.0060706963, -0.011413127, -0.023369735, -0.02138059, 0.033869814, 0.006201132, -0.026087146, -0.0010883232, -0.01835883, -0.029869784, -0.0075054895, 0.027500201, 0.01222835, -0.022347989, -0.04128291, 0.00137501, -0.00022078966, -0.036782876, 0.009440286, -0.0145653235, -0.024239307, -0.006641353, 0.03091327, 0.03332633, -0.044869892, 0.013858797, -0.0110598635, -0.012434874, -0.012206611, -0.027891507, -0.03882637, -0.008271799, 0.035608955, -0.0110598635, -0.03821767, 0.005187538, -0.03643505, 0.049043838, 0.010510947, 0.025869755, -0.0056793895, 0.036152437, 0.031369794, 0.061087403, 0.0035842652, 0.0069022244, -0.043391623, -0.005081559, 0.052696038, -0.034782864, -0.053043865, 0.017891435, 0.009972899, -0.007250053, 0.004423945, -0.004157639, -0.03367416, -0.022347989, -0.023174083, 0.0011705249, -0.022456685, 0.031413272, -0.040522035, -0.061652623, -0.07247879, -0.01621751, 0.017619694, 0.06508743, 0.018565353, -0.04739165, 0.030739356, 0.0131414, 0.006657657, -0.00794571, -0.09747897, 0.01959797, 0.052478645, 0.0071467916, -0.009456591, -0.006788093, -0.02447844, -0.03328285, 0.05647867, -0.03641331, 0.010038117, -0.030456744, 0.034739383, -0.08434844, 0.030239351, 0.008152233, 0.050652545, 0.050043844, 0.031674143, -0.06239176, -0.037717666, 0.02630454, -0.009712027, 0.021652332, 0.054000393, 0.028630644, -0.04408728, 0.022282772, -0.027956726, 0.021108849, -0.0071087475, -0.0068043973, 0.05604389, -0.020587107, -0.004043508, -0.048130788, 0.00198371, 0.03578287, 0.005070689, 0.014304453, 0.034326337, 0.013326184, 0.025434969, -0.018011002, 0.033587202, 0.0046956865, -0.022739297, -0.0053614522, 0.033587202, -0.05200038, -0.04956558, -0.042674225, -0.016750121, 0.0027160523, 0.027304547, 0.04426119, 0.021021893, -0.0076304907, -0.0077120126, 0.00902724, -0.0336959, -0.005413083, 0.042304657, -0.04839166, 0.016054465, 0.0039483984, -0.031608928, -0.013065313, -0.0061087403, -0.01956536, -0.010462033, 0.024934964, 0.04132639, 0.039674204, 0.007929406, -0.014097929, -0.0519569, -0.027891507, -0.02020667, -0.001500011, 0.05265256, -0.013032704, -0.003198393, -0.017239256, -0.0062500457, -0.009456591, -0.010353336, 0.0071522263, 0.034717645, -0.047782958, 0.03428286, 0.0023478433, -0.031326316, 0.051217765, -0.0067120055, 0.028304555, -0.0017595238, 0.020424062, -0.008695716, 0.032804586, 0.016641425, -0.0029755651, -0.011070733, 0.03150023, -0.072348356, 0.058869995, 0.006141349, 0.074130975, 0.02723933, -0.045435116, -0.0069457027, -0.019152313, 0.014174016, 0.02419583, -0.02630454, 0.0067120055, 0.07739187, 0.04158726, -0.029739348, -0.041239433, 0.035087213, -0.013739231, 0.030217612, 0.01586968, 0.010869645, 0.029326301, 0.01434793, -0.007951145, -0.052261252, 0.055217795, -0.022695817, -0.010597903, -0.0107066, -0.018543614, -0.0017051755, -0.02569584, -0.00014954254, -0.010690295, -0.012978355, 0.011103342, -0.027913248, -0.026065407, -0.0402829, -0.014554454, -0.007304401, 0.00048030243, 0.016924037, 0.028717602, 0.028326293, 0.034674168, 0.0024973007, 0.016543599, -0.0041739433, 0.013119661, 0.011576171, -0.011456605, 0.0039810073, -0.03513069, -0.059565652, -0.016304467, 0.013282706, -0.016771862, 0.026369758, 0.04063073, -0.025761059, 0.0397829, 0.035565477, -0.0056359107, 0.022521904, -0.017315343, -0.016141422, 0.026239322, 0.030326309, 0.04350032, 0.025674101, 0.013424011, 0.07604403, -0.03919594, -0.011880522, 0.036326353, -2.8660195e-05, 0.019250141, -0.011815304, -0.03206545, -0.0028179553, -0.025739318, 0.0056739543, -0.017945783, 0.02539149, 0.037456796, -0.0019864275, 0.0373481, -0.011565302, 0.013206618, 0.025478447, -0.0064891777, 0.03643505, 0.059739567, -0.02908717, -0.039217677, 0.050348192, 0.016934907, 0.018804485, -0.028500209, -0.01591316, 0.030869791, 0.026695848, 0.046391644, -0.009923985, 0.0026223017, -0.025174096, 0.026152365, -0.029587172, -0.004752752, -0.055609103, -0.0141087985, 0.01346749, 0.015500113, 0.011989218, -0.034674168, -0.016065335, 0.0012241937, 0.011847912, 0.05113081, 0.06821789, -0.048522092, -0.023521911, -0.018597962, -0.009451156, -0.009233763, -0.015413156, 0.044369888, 0.0047446, -0.009440286, -0.015924029, -0.010597903, -0.026348019, -0.010755514, -0.008891369, 0.009081588, -0.04076117, 0.013880536, -0.013510969, 0.001476913, -0.0068696155, -0.03639157, -0.011858782, 0.011858782, 0.0053913435, -0.015130545, 0.0022867015, -0.028000204, 0.007869623, -0.0035108952, -0.028630644, -0.02168494, 0.008891369, -0.010597903, -0.0046820994, -0.0042799227, -0.003622309, -0.03763071, -0.046000335, -0.014391409, 0.011891391, -0.009326155, 0.023956697, 0.05413083, 0.025500186, 0.021293635, -0.006364177, -0.026739325, -0.05017428, 0.0014483802, -0.02847847, -0.015402286, -0.0127174845, -0.02813064, 0.009298981, -0.07521794, 0.038369846, 0.0037174185, 0.075957075, -0.0076033166, 0.01744578, -0.0031902406, 0.022543643, -0.011750086, -0.00871202, -0.01160878, -0.025739318, 0.015206633, 0.015717506, 0.0021793637, -0.009434852, -0.020967545, -0.030608919, -0.0017554476, 0.0052554733, -0.034130685, -0.003959268, -0.011847912, -0.023848, 0.023021907, -0.0143261915, 0.019402316, 0.0470873, -0.019413184, -0.008777238, 0.06843528, 0.0018981117, -0.008929413, 0.0038886154, -0.0018981117, -0.028608905, -0.01955449, -0.006456569, -0.015271851, 0.039565507, -0.016760992, 0.011782695, -0.04682643, 0.01806535, 0.022054508, 0.0053288434, 0.011717477, -0.021282764, -0.018152306, -0.008315278, -0.018282741, -0.045435116, -0.017500129, -0.037261143, 0.015782723, -0.0034592643, -0.015619679, 0.029130647, -0.042391613, 0.03332633, 0.017956654, -0.00081386464, -0.028630644, 0.0007765002, -0.01559794, 0.0035081778, -0.0002517002, 0.04656556, 0.0073587494, 0.06704397, -0.021815376, 0.018695788, -0.040565513, 0.025174096, 0.008271799, -0.01991319, -0.036326353, -0.026239322, 0.045348156, -0.0050489497, -0.04860905, -0.044826414, -0.041695956, -0.057826508, 0.025195837, 0.011684868, -0.0013641404, -0.012130523, 0.022978429, -0.027630636, 0.0161849, 0.020663194, -0.020576237, -0.00885876, 0.026108887, -0.0033478506, -0.06343525, 0.0489134, -0.00038757076, 0.01038051, 0.036869835, -0.007907666, -0.026217584, -0.013195748, -0.011380518, -0.01991319, 0.0062120017, -0.04002203, 0.043195967, 0.01991319, 0.04093508, -0.07191357, 0.018434918, -0.0007527229, -0.021728419, -0.0035081778, 0.017021863, -0.004388619, -0.010081596, -0.06969616, 0.023891479, 0.004410358, 0.02847847, -0.018097958, -0.008793542, 0.040848125, 0.014771847, 0.019434925, -0.015674027, -0.04800035, 0.00068105117, -0.041391607, 0.016380554, -0.003364155, 0.015771855, 0.0070924433, 0.026261061, -0.0027391505, -0.028608905, 0.0023655065, 0.0060489574, -0.01558707, -0.068348326, 0.029608913, -0.0507395, -0.03517417, 0.02082624, 0.026152365, -0.002137244, 0.01072834, -0.025543666, 0.014282713, -0.053174302, -0.004383184, -0.013913145, 0.002902195, 0.009554418, -0.046000335, -0.043782927, 0.005481018, -0.010516381, -0.004665795, -0.0030761093, 0.0006878447, 0.014391409, -0.005896782, 0.012402264, 0.03754375, 0.004163074, 0.025739318, -0.024108872, 0.031608928, -0.009304415, 0.0036358961, 0.012413134, -0.002343767, -0.02047841, -0.0010577523, -0.005690259, 0.018456656, 0.026848022, -0.0016929471, 0.0318698, 0.0073261405, 0.0004589028, -0.021652332, 0.015956638, 0.023804521, 0.006380481, 0.031695884, -0.011924, -0.04428293, -0.016858818, 0.04291336, -0.016304467, 0.017358823, 0.027261069, 0.029478475, 0.051435158, -0.02478279, -0.0022894188, 0.017641433, 0.021000152, 0.04334814, -0.023261039, 0.049000356, 0.0022785494, 0.02415235, 0.014978371, 0.009326155, -0.030869791, 0.0017703933, -0.0015013696, -0.027369766, -0.02354365, 0.059435215, 0.06887007, -0.023304518, 0.017858826, 0.039304636, -0.04041334, -0.0030489352, 0.03891333, 0.017065343, -0.03910898, -0.022282772, -0.011695738, -0.0015706636, -0.031913277, -0.016706644, -0.04591338, -0.009641374, 0.044217713, 0.00734788, 0.017641433, 0.015304459, -0.021434939, -0.009358764, 0.017097952, 0.020956675, -0.03273937, 0.048522092, 0.0032011103, -0.013097921, 0.02168494, -0.04673947, -0.017641433, 0.050000366, 0.008396801, -0.020326236, 0.011956609, -0.014402279, 0.017543606, -0.06347872, 0.025021922, 0.010076161, -0.05382648, -0.005557106, -0.010929428, -0.055174317, -0.0057391725, -0.004000029, 0.050652545, 0.024065394, -0.021184938, 0.050391674, -0.00885876, 0.03058718, 0.03550026, -0.020891458, 0.0045842724, 0.05752216, 0.0041087256, -0.0013505534, 0.011924, 0.015967509, -0.03402199, -0.027282808, 0.03860898, -0.04621773, 0.00946746, -0.0010400891, 0.003073392, -0.069000505, -0.007027225, -0.009347894, -0.022543643, -0.026956718, -0.0009707951, 0.029761087, 0.04804383, 0.05630476, -0.05260908, -0.011184865, 0.11391388, -0.011673998, -0.043217707, 0.035282865, -0.0020394172], [0.046153463, 0.026512703, -0.019118398, 0.047174968, 0.014370721, 0.0065237037, -0.0065120957, -0.0006123227, -0.033988263, -0.017086996, -0.02915933, 0.009843595, -0.012107158, -0.00844483, -0.023935724, 0.037145644, -0.04926441, 0.024051804, -0.045549847, -0.030923748, -0.003978647, -0.03429007, -0.05831866, -0.009257391, -0.0015975529, 0.016901268, -0.020813169, 0.01951307, -0.04137096, 0.01782991, 0.03716886, 0.0004998701, 0.02033724, -0.008990407, 0.036100924, -0.00821267, 0.014254641, -0.046501704, -0.062033225, 0.055904195, -0.021846281, -0.009663671, -0.022554372, -0.019640759, -0.019489855, -0.0019501463, 0.005804007, -0.03600806, -0.026303759, -0.025096526, 0.0045706555, 0.008659578, 0.02016312, 0.012118766, -0.020998897, 0.022716884, 0.026094815, -0.09054251, 0.040163726, -0.01022666, -0.04703567, 0.020789953, 0.042926434, 0.01034274, -0.059711624, 0.012246454, 0.014068913, 0.009112291, 0.0031922038, 0.019780055, -0.036449164, 0.047592856, -0.026326975, -0.036100924, -0.033918615, -0.060872424, 0.023819644, 0.02033724, -0.0011622524, -0.04225317, 0.0068777483, -0.03289711, 0.02442326, -0.0016367299, 0.025398334, -0.0037958205, 0.039049357, -0.08979959, -0.008456438, -0.0006544018, 0.035009768, -0.0063611916, 0.024632204, -0.0003366324, -0.022182913, -0.020244377, 0.009541787, 0.009884223, -0.022043617, -0.022078441, -0.015891371, -0.086456485, -0.045689143, -0.0032908719, 0.033454295, -0.0053716083, 0.017203076, -0.028416418, -0.0063379756, 0.026535919, 0.022658844, -0.017156644, 0.0068197083, 0.024214316, 0.0104530165, 0.029832596, -0.018433526, -0.03168988, 0.00047737957, 0.017841518, -0.05836509, -0.039049357, 0.05534701, -0.020778345, -0.034916904, 0.029437922, 0.017388804, 0.08408845, -0.0071563404, -0.023401756, -0.037029564, 0.038724333, 0.038886845, 0.025839439, 0.068162255, 0.04506231, 0.025955519, -0.04213709, -0.060222376, 0.00035839743, -0.059061572, -0.004135355, 0.023076732, 0.042392466, -0.03038978, -0.033732887, -0.008723422, -0.0019283813, -0.054696962, -0.02214809, -0.0038364485, -0.027023455, 0.0053164703, 0.0019008123, 0.01630926, -0.00091340556, 0.049635865, 0.04517839, -0.0010040932, 0.032409575, 0.033756103, -0.03250244, -0.011062437, 0.037377805, -0.018329054, -0.09105326, 0.023111556, 0.0015554739, -0.04294965, 0.025793007, 0.012455399, -0.022612412, 0.039304733, -0.032177415, 0.0028280024, 0.02980938, 0.025560847, 0.034104344, 0.03770283, -0.05223606, -0.037075996, 0.039977998, 0.061754633, -0.027627073, -0.010882513, -0.015635995, -0.01490469, -0.018166542, 0.0037755065, -0.013651025, -0.009814575, -0.01858443, 0.0038480565, -0.024748284, 0.021126585, -0.065887086, 0.00815463, -0.031016612, -0.015810115, 0.018271014, -0.007545209, -0.045224823, -0.028323554, -0.037609965, -0.018735334, 0.03208455, -0.00085681654, -0.02162573, 0.0029803575, 0.0072608124, 0.034731176, 0.002517488, 0.025375118, -0.0017615161, 0.00092211156, 0.009048447, -0.0883602, -0.030645156, -0.016854836, -0.051586013, 0.06467985, -0.047360696, 0.016854836, 0.00088583655, 0.033570375, 0.036959916, 0.003961235, -0.019130006, 0.042578194, 0.026141247, -0.0006282837, -0.006158051, 0.00057350844, 0.025375118, -0.10493644, -0.021138193, -0.00012560234, 0.0064946837, 0.036263436, -0.013047407, 0.0068429243, 0.042090658, -0.026187679, -0.037958205, 0.018549606, -0.002579881, 0.004355907, 0.009547591, -0.051586013, -0.012908111, -0.04371578, 0.013743889, 0.06189393, 0.0014945318, 0.0067036278, 0.06686216, 0.024678636, -0.060222376, -0.042229954, 0.012339318, 0.015856547, 0.0068429243, 0.017725436, 0.072155416, -0.0015902979, -0.026837727, 0.028253905, -0.07243401, -0.04856793, -0.04232282, 0.055857763, 0.010859297, -0.024260748, 0.008375182, 0.03774926, -0.031898823, 0.025514415, -0.006111619, 0.0015670819, 0.038840413, -0.0026625881, 0.04271749, -0.019791663, -0.025212606, 0.06867301, 0.030366564, -0.06672286, -0.017934382, -0.04120845, 0.007794781, 0.0017542611, -0.050657373, 0.05715786, 0.050007325, 0.039513677, -0.0026132541, 0.023599092, -0.010656157, -0.038236797, -0.015624386, -0.014985946, -0.013000975, -0.05488269, -0.02220613, -0.038817197, 0.015984235, -0.017330764, 0.09193547, 0.011991078, -0.009826183, 0.08520282, 0.010580705, -0.018921062, -0.033315, 0.02145161, -0.029484354, 0.014080521, -0.026907375, 0.04575879, -0.033732887, -0.04815004, -0.03670454, -0.09472139, -0.019756839, 0.038306445, 0.004350103, -0.0327346, -0.017818302, -0.006105815, -0.00021910126, -0.09439637, 0.043553267, -0.012234846, -0.0032473418, -0.012908111, -0.06328689, 0.0049450137, -0.043112163, 0.0029339255, -0.025955519, 0.01168927, -0.0016338279, -0.00056262594, -0.06714075, -0.035218712, -0.0048115216, 0.03015762, -0.009959675, 0.013047407, -0.056136355, 0.0014401192, 0.030436212, 0.01741202, -0.03440615, -0.0053629023, -0.03289711, -0.068858735, -0.044017587, 0.010191836, 0.005061094, 0.026651999, -0.031759527, -0.01221163, 0.050703805, -0.010731609, -0.083716996, -0.057064995, 0.01131201, -0.014568057, 0.00057568494, -0.053071838, 0.035683036, -0.0014517272, -0.020859601, -0.015566346, -0.01659946, 0.026907375, -0.010563293, -0.019443423, -0.0066397837, 0.0053629023, -0.015392226, -0.0053193723, 0.0062799356, 0.007580033, 0.024980446, -0.039165437, 0.017713828, 0.016750364, 0.014138561, -0.02846285, -0.008665382, -0.011596406, -0.04411045, 0.023413364, 0.03570625, -0.056322083, -0.012641127, 0.030529076, 0.06500488, -0.017922774, -0.030900532, -0.04559628, -0.009669475, 0.043460403, 0.022415074, -0.033732887, -0.004437163, -0.027510993, 0.05530058, -0.06282257, 0.03127199, -0.014893082, 0.036217004, -0.0044487715, 0.015229714, -0.028207473, 0.013894793, -0.004094727, -0.02262402, 0.03886363, -0.057529315, -0.0018210071, 0.04306573, 0.015102026, 0.072108984, -0.036054492, 0.020929249, 0.014370721, -0.05427907, -0.06983381, 0.01625122, 0.03015762, 0.007516189, -0.011967862, -0.071923256, -0.033338215, -0.049217977, 0.01782991, 0.05335043, 0.018421918, -0.027139535, -0.0071621444, 0.01858443, 0.010064148, 0.050750237, -0.057807907, 0.03763318, 0.02904325, -0.0157869, -0.014126953, -0.031411286, -0.06556206, -0.024887582, 0.06147604, -0.02611803, 0.028439634, 0.011909822, -0.009617239, -0.090403214, 0.01852639, -0.028323554, 0.033756103, -0.02623411, 0.022937436, 0.028509282, -0.008891739, 0.04768572, -0.0012137629, 0.007527797, -0.004315279, -0.022670452, -0.028068177, -0.025909087, -0.04457477, -0.027859233, -0.05172531, -0.031550582, 0.031434502, -0.009460531, -0.020975681, -0.042346034, -2.2875949e-05, 0.032061335, 0.013523336, 0.009646259, 0.018804982, 0.027394913, 0.069090895, -0.0037087605, 0.027371697, 0.047592856, 0.0069473963, 0.003984451, -0.010325328, -0.040767346, -0.057482883, -0.06946235, 0.021207841, -0.0053658043, -0.012838463, 0.059990216, 0.004245631, -0.014115345, 0.020882817, -0.007429129, -0.037493885, -0.025630495, 0.024748284, -0.0064192316, -0.011190125, -0.056832835, -0.014985946, 0.02857893, -0.0018834003, -0.014126953, -0.021811457, 0.043205027, 0.0022998378, 0.021695377, -0.04271749, -0.042578194, -0.04506231, -0.02220613, 0.028369986, -0.00079659995, -0.019896135, -0.024400044, -0.0026045481, -0.0163673, 0.008874326, -0.02009347, -0.023819644, -0.012025902, 0.00088003254, -0.0021155605, 0.012072334, 0.043506835, -0.0104472125, 0.02337854, -0.019037142, 0.076195, 0.011288794, 0.02565371, 0.00020060099, -0.008845306, 0.016854836, 0.006024559, -0.012977759, 0.07053029, -0.04926441, 0.046664216, -0.011381658, 0.017284332, 0.025259038, -0.01355816, -0.03781891, -0.04007086, 0.0047273636, 0.0018311641, 0.02576979, -0.006053579, 0.061290313, 0.014382329, -0.0169477, -0.03886363, 0.064958446, -0.007446541, 0.00069103955, 0.008462242, -0.00677908, 0.032247063, 0.026280543, 0.031411286, -0.0038132325, 0.093885615, 0.008369378, -0.052143198, -0.019013926, -0.007870234, 0.010853493, 0.00080530596, 0.015717251, -0.009866811, -0.040256593, 0.03979227, -0.026768079, -0.06435483, -0.04271749, 0.04062805, -0.01648338, 0.012107158, 0.010093168, 0.043924723, 0.026791295, -0.0037958205, 0.03134164, 0.01226967, 0.031527366, 0.021962361, -0.010023519, -0.01209555, 0.0021910125, -0.0056095724, -0.05488269, -0.03821358, 0.009234175, -0.052978974, 0.0019457933, 0.04220674, -0.08074535, -0.0016715539, 0.028648578, -0.03238636, 0.005737261, 0.0011818409, -0.028648578, 0.042856786, -0.009512767, 0.051400285, 0.025328686, -0.0019153223, 0.026675215, -0.047964312, -0.039304733, 0.012803639, -0.005899773, 0.0026321171, -0.026512703, -0.030877316, -0.027093103, -0.047546424, -0.036100924, -0.017737044, 0.01209555, 0.019013926, -0.021846281, 0.06709432, -0.036867052, -0.014150169, 0.02297226, 0.031434502, 0.055486307, 0.046733864, -0.020639049, -0.007771565, 0.048939385, 0.03821358, 0.065887086, 0.018955886, 0.014115345, 0.016471772, 0.008816286, 0.042694274, 0.028671794, -0.009060055, -0.023134772, 0.005864949, -0.035079416, 0.007928274, -0.049217977, -0.043901507, 0.017562924, -0.0031312618, -0.010928945, -0.028834306, -0.03127199, -0.04715175, -0.025584063, 0.03937438, 0.079491675, -0.044505123, -0.017783478, -0.011277186, -0.044992663, -0.026280543, 0.014672529, 0.015113634, -0.02285618, -0.0169477, -0.030946964, 0.008833698, 0.0030471035, -0.00783541, -0.014985946, 5.296156e-05, -0.04178885, -0.010551685, -0.014951122, -0.0045155175, -0.01764418, -0.0068545323, 0.0027873742, 0.047314264, -0.018491566, 0.0023622308, 0.0375171, 0.020824777, 0.03470796, -0.013035799, -0.02214809, -0.022066833, -0.026512703, -0.0049885437, 0.056368515, 0.029530786, 0.0017992421, -0.0022592098, -0.037563533, -0.027441345, 0.049635865, 0.0024405848, 0.05766861, 0.04383186, 0.028509282, 0.019362167, -0.02711632, -0.018154934, -0.06375121, 0.02553763, -0.0015467678, 0.0070344564, -0.026257327, -0.027046671, 0.020081863, -0.066304974, 0.04582844, -0.0050117597, 0.06728005, 0.0022359937, -0.0296933, 0.0071621444, 0.0010889767, 0.0046315975, -0.029600436, -0.0045822635, -0.01355816, 0.007748349, 0.005922989, 0.029739732, -0.01221163, -0.018387094, -0.0398387, -0.011259774, -0.00047375206, -0.016970916, 0.009245783, -0.023935724, -0.023169596, 0.020186337, -0.029786164, -0.006076795, 0.008938171, -0.026326975, 0.042113874, 0.039629757, 0.05669354, -0.0020444614, 0.0053164703, -0.011549974, 0.00056044944, -0.0027699622, -0.007580033, -0.051911037, 0.011491934, -0.03062194, 0.009443119, -0.033454295, 0.030529076, 0.012919719, 0.009396687, 0.04441226, 0.00038923122, -0.017446844, -0.010133796, 0.009565003, -0.0053309803, -0.01933895, -0.023007084, -0.010615529, 0.01986131, -0.021718593, 0.03805107, -0.05855082, 0.028555714, -0.026930591, 0.017272724, -0.0010570547, 0.011503542, -0.008891739, 0.013743889, -0.013186703, 0.026651999, -0.017632572, 0.031039828, 0.0004940661, 0.043158595, -0.04027981, 0.022577588, -0.0105284685, -0.008810482, -0.030412996, 0.00024286141, -0.0032908719, -0.029321842, 0.004161473, 0.009373471, -0.02576979, -0.018607646, 0.010720001, 0.036077708, 0.016576244, 0.0002927396, 0.044621203, -0.0004976936, 0.03138807, 0.0033198919, -0.023099948, -0.011619622, 0.014510017, -0.008990407, -0.007765761, 0.005824321, 0.0045880675, 0.025212606, 0.02074352, 0.011294598, -0.019768447, -0.010853493, -0.039977998, -0.036193788, -0.030900532, -0.008404202, 0.027603857, -0.026744863, 0.013488512, -0.05427907, 0.033640023, 0.017957598, 0.010754825, -0.009605631, 0.0031370658, -0.012362534, 0.004390731, -0.022473114, 0.0030877315, -0.0032734598, -0.009733319, -0.022658844, 0.033152487, 0.042578194, 0.0066281757, -0.0028816895, -0.0010621332, -0.020778345, -0.017133428, -0.07531279, 0.0104762325, -0.00870601, -0.01945503, 0.021985577, 0.047871448, 0.03624022, -0.010731609, -0.014266249, -0.026303759, 0.016297651, -0.04633919, 0.01016862, -0.05901514, -0.020105079, -0.017098604, 0.018654078, 0.053954046, -0.0023694858, -0.022298994, 0.007788977, -0.040001214, 0.032363143, 0.004312377, -0.018909454, 0.02442326, -0.019501463, -0.06361192, -0.020476537, -0.009361863, 0.018085286, -0.031225557, -0.019791663, 0.011741506, 0.012060726, -0.0027989822, 0.014138561, 0.041301314, 0.031782743, 0.0028221984, -0.032943543, -0.016274435, -0.022879396, 0.005037878, 0.015856547, -0.02203201, -0.009872615, -0.017957598, -0.027441345, 0.014405545, 0.009594023, 0.014359113, 0.02700024, -0.019257694, -0.018050462, 0.014579665, 0.054325502, -0.0073594805, 0.041394178, -0.03127199, -0.054139774, 0.0062799356, -0.00090832706, -0.052375358, 0.016924484, 0.005920087, 0.006198679, 0.045665927, -0.015554738, 0.030993396, 0.005673417, 0.032293495, 0.013778713, -0.04062805, 0.026071599, 0.024353612, 0.02730205, -0.008055962, -0.017098604, -0.05859725, -0.00088946405, -0.004263043, -0.026141247, -0.013906401, 0.0338954, 0.08250976, -0.022229346, -0.03624022, -0.0037145645, -0.038817197, -0.009025231, 0.0557649, 0.008549302, -0.024167884, 0.005687927, 0.016785188, -0.008659578, 0.005925891, 0.008816286, -0.0070866924, 0.0030587115, 0.039072573, 0.019907743, 0.007498777, 0.0068835523, -0.038120717, -0.002529096, 0.012989367, 0.047314264, -0.017086996, 0.041301314, -0.007562621, -0.010104776, 0.019954175, -0.008206866, -0.00040700598, 0.0048550516, 0.038724333, 0.016216395, -0.004051197, -0.0034591882, -0.006100011, -0.0013711966, 0.004283357, 0.048242904, -0.08733869, -0.028903954, -0.00031323498, -0.034081127, 0.0046606176, 0.0034562862, 0.04148704, 0.024353612, 0.015438658, 0.033872183, -0.021474825, -0.0022069735, 0.044899795, -0.0068893563, 0.01019764, -0.007736741, 0.010749021, -0.004051197, -0.01151515, -0.00081981596, -0.0046780296, -0.04120845, 0.029089682, -0.0569257, 0.0046344995, -0.0037203685, -0.0055196104, -0.06235825, 0.01197947, -0.006181267, -0.004329789, -0.015624386, 0.004396535, -0.0048666596, 0.05056451, 0.011300402, -0.0047970116, 0.029600436, 0.12313781, 0.004428457, 0.013523336, -0.022252562, 0.014277857], [0.038279593, -0.049870428, -0.031688243, -0.010440455, 0.011771162, 0.013605548, -0.028206017, 0.03579229, -0.009532589, 0.05571559, -0.053874984, 0.037359294, 0.006560262, -0.034250163, -0.0020893347, 0.01670224, -0.0013680167, -0.033503972, 0.030096367, -0.06506785, -0.009986522, -0.060839433, -0.04554252, -0.0091905845, 0.038702436, 0.01973675, -8.428654e-05, 0.017112644, -0.03231007, 0.042209532, 0.038503453, 0.03355372, 0.06486887, -0.041985676, 0.03012124, -0.009153276, 0.017075336, 0.054024223, -0.016689803, -0.038379088, -0.026116682, 0.0061187656, -0.0007858323, -0.01744843, -0.019201979, 0.005167372, -0.005748779, -0.0120509835, -0.010309871, -0.029598907, 0.0020644616, 0.012685246, -0.020209339, 0.010459109, -0.0853145, 0.004278161, 0.031489257, -0.0927764, 0.010757586, -0.005338374, -0.02930043, 0.013506056, 0.04668668, -0.01085086, -0.028628858, -0.037558276, 0.028977081, 0.042383645, 0.029350176, 0.08645865, -0.005540468, 0.0078225685, 0.022248926, 0.005723906, 0.00603171, -0.022671768, 0.081633285, 0.033503972, -0.0230573, -0.015694883, 0.015396406, -0.046811044, 0.036389243, -0.0027935524, 0.027086731, -0.034971483, 0.018555282, -0.13321996, -0.013033468, -0.008904545, -0.004029431, -0.024897903, 0.035170466, 0.032608543, -0.032285195, 0.05203438, 0.013058341, 0.0022214726, -0.054770414, 0.014699961, -0.034722753, 0.010129542, -0.07143535, -0.066410996, 0.030146113, 0.005397448, 0.04365217, 0.016142597, -0.024201458, 0.011522432, 0.0194134, -0.03300651, 0.009041347, 0.02765881, 0.0030018638, 0.032135956, -0.057804924, -0.051835395, -0.05695924, 0.018182186, -0.095462695, -0.037757263, 0.045617137, 0.03798112, -0.015781939, 0.023753745, -0.0416872, 0.037035942, 0.03206134, -0.025295872, -0.015533208, 0.039274517, 0.022236489, 0.0020831164, 0.0508156, 0.038105484, 0.07949421, -0.0040916135, -0.030917177, 0.02212456, -0.041911058, -0.0010726495, -0.036016148, 0.032185704, -0.026464906, 0.012822048, -0.019836241, -0.0071696513, -0.041239485, -0.0011029635, -0.021079894, -0.023604507, 0.008755307, 0.018953249, 0.045169424, -0.016540566, 0.040169943, 0.073574424, -0.014836763, -0.0048378045, -0.011963928, -0.032708034, 0.0012211103, 0.023703998, 0.0076546753, -0.07496732, 0.025843078, -0.009967867, -0.0369862, 0.042806488, 0.0401202, 0.009339823, 0.036314625, -0.02551973, -0.054919653, 0.02441288, 0.06531658, 0.010595911, -0.06377445, -0.103770286, -0.025469983, 0.08193176, 0.004393199, -0.031862352, 0.015558081, 0.045418154, 0.06412268, 0.012560881, 0.069246516, -0.042532884, -0.014874073, -0.0023489469, -0.011329666, -0.057307463, 0.015980922, -0.0025790224, -0.004794277, -0.029225811, -0.017187264, 0.028703477, -0.0011565959, -0.077554114, 0.01916467, -0.034275036, -0.030966923, 0.01695097, 0.043552678, -0.0006295986, 0.02773343, 0.032931894, 0.051188696, 0.010260126, -0.004794277, -0.025843078, -0.0019789606, 0.0028199798, -0.04380141, 0.024300952, -0.010608348, -0.05775518, 0.026987238, -0.030842558, 0.018617464, -0.03051921, 0.019885989, 0.047383122, 0.021726593, 0.041960802, 0.037458785, 0.009439316, -0.0082454095, -0.06845058, -0.0092589855, 0.04827855, -0.06820185, -0.028827842, -0.035245083, 0.019189544, 0.0543227, 0.034498893, 0.020296393, 0.01698828, -0.030096367, 0.017734472, -0.0012327696, 0.070788644, 0.0151849855, -0.00034569626, 0.02691262, 0.0131453965, 0.0050865347, 0.023480142, 0.025544602, 0.052581586, -0.020259084, 0.041189738, -0.0070639406, -0.03206134, 0.027061857, 0.021030148, -0.035916656, 0.017062899, -0.016764423, 0.065714546, 0.011049844, -0.028703477, 0.036364373, -0.057954162, -0.022174306, -0.018804012, 0.03536945, -0.050492253, 0.041562833, 0.0091905845, 0.031116161, 0.0053197197, 0.045517646, 0.0041164868, -0.047258757, 0.03768264, 0.020047663, 0.009084875, 0.032111082, -0.003715409, 0.019537766, 0.0017535486, -0.017746907, -0.06830134, -0.025644096, -0.0073686354, -0.016677367, 0.0040263217, 0.012038547, 0.017361376, 0.027808048, -0.001476059, 0.016403764, 0.00092496583, -0.021191822, 0.030668447, -0.019077614, -0.017535487, -0.06909728, -0.031986717, 0.0022183633, 0.07422113, 0.031713113, 0.071982555, -0.028703477, -0.038528323, 0.036414117, 0.024325823, -0.025619222, -0.03094205, -0.009924339, -0.016465947, -0.0069084843, 0.041537963, 0.08785155, -0.044174504, 0.039448626, -0.03305626, -0.08347389, 0.027036985, 0.010054923, 0.014463668, 0.03758315, 0.019749187, 0.01591874, 0.054670922, -0.0663115, -0.034076054, -0.019276598, 0.0067095, -0.026539523, -0.081384555, 0.0126355, -0.037558276, -0.009551244, -0.019052742, -0.0356928, 0.006877393, -0.010539947, -0.04026944, 0.038030863, -0.027235968, -0.0018794684, 0.015520771, 0.04096588, 0.010272562, 0.0014651769, 0.013593111, 0.050765857, -0.00023901428, 0.005015025, -0.02887759, -0.024860594, -0.01220644, 0.0077106394, 0.0056865965, 0.06964449, -0.06660998, 0.012909103, 0.0676049, 0.040667407, -0.06238156, -0.004340344, -0.013095651, -0.0059073446, 0.024064658, -0.033081133, 0.011186645, -0.06576429, -0.05685975, -0.0011830236, -0.027335461, 0.026539523, -0.020109845, -0.042433392, 0.045467902, -0.0051766997, -0.046910536, 0.014140318, 0.008904545, 0.01613016, 0.027186222, -0.017995639, 0.0017457758, 0.00685252, 0.010110887, -0.018443352, -0.0065664803, 0.012759865, -0.01899056, 0.048626777, 0.042483136, 0.0075614015, 0.008798835, -0.01645351, 0.0059197815, -0.014351739, 0.0076608937, -0.0067405915, -0.023791054, 0.039175022, -0.01948802, 0.0051051895, -0.016142597, 0.019861115, 0.037856754, -0.0027158242, 0.014986001, -0.020756545, -0.008040207, 0.03987147, 0.013841841, -0.015110366, 0.040393803, 0.011112027, 0.03604102, 0.05457143, -0.0014628451, 0.0021173167, 0.0274847, -0.055815082, 0.020358576, -0.01744843, 0.0037993556, 0.01317027, -0.042831358, -0.025146633, 0.022547403, 0.040543042, 0.0050088065, -0.021651974, -0.094268784, -0.040418677, -0.08098659, -0.010707839, 0.032782655, 0.021403244, -0.034722753, -0.0033081132, 0.03723493, -0.04405014, -0.018853758, -0.020619743, -0.023641815, -0.0045268917, -0.025445111, -0.068251595, -0.008935636, -0.073027216, -0.0039392663, 0.0048098224, -0.037259802, -0.020569997, 0.026241047, 0.021913141, -0.048950125, 0.021316187, 0.0071323416, 0.051238444, -0.023728872, -0.013891588, -0.02551973, -0.0055839955, 0.055914573, 0.008121044, 0.028653732, -0.018443352, -0.0156327, -0.03862782, 0.03012124, 0.0021002165, -0.017473305, -0.022385728, 0.008749088, 0.020582434, -0.00878018, -0.043229327, 0.009588554, 0.05268108, 0.06601302, 0.03494661, -0.0343994, 0.014264683, 0.018505534, 0.04151309, -0.0119204, -0.02412684, 0.037881628, 0.012237531, -0.0043310164, -0.014314429, -0.0216271, -0.024972523, -0.0004803604, 0.025345618, 0.005739452, 0.053974476, 0.038553197, 0.025395365, 0.05596432, 0.030146113, -0.017759344, -0.0042159786, -0.012256186, 0.046064854, 0.0033081132, -0.012299714, -0.024462625, -0.040916137, 0.001870141, -0.020507814, -0.0056834877, 0.013891588, 0.045194298, -0.004725876, -0.0016991389, 0.0034915516, -0.016490819, -0.020358576, -0.0017426667, -0.0075800563, 0.016590312, 0.001120841, 0.016714677, -0.03489686, -0.022920499, -0.032732908, -0.03619026, -0.0069022663, -0.008276501, 0.028081652, -0.008183227, 0.016055541, 0.0054409755, -0.02080629, -0.00066807406, 0.006945794, 0.028603986, 0.0010283444, -0.021987759, 0.014513413, 0.014874073, 0.025544602, -0.016179906, -0.028081652, 0.04932322, -0.027310587, 0.036762338, 0.01506062, 0.00924655, 0.0093273865, 0.012007455, -0.04569176, -0.04161258, -0.031141035, -0.024139276, 0.002470203, -0.0015918739, 0.047482617, -0.000988703, -0.014749708, -0.012299714, 0.022161871, -0.022161871, -0.049273476, 0.013580675, 0.017000716, 0.014389048, 0.007797695, -0.008749088, -0.021763902, 0.08640891, 0.0068152105, -0.05317854, -0.005714579, 0.0014931591, -0.011609487, 0.00806508, 0.009302514, -0.045343537, 0.020159591, 0.028156271, -0.00020889459, -0.019525329, -0.069743976, -0.0057767616, -0.0069582304, 0.017075336, 0.0117773805, -0.010794896, -0.0154585885, -0.01899056, 0.029524287, 0.037035942, 0.027534446, 0.03768264, -0.010403145, -0.003376514, 0.009196803, 0.010054923, -0.021341061, -0.021614663, 0.024524808, -0.042955723, 0.038005993, 0.035866912, -0.07168408, -0.009551244, 0.051337935, -0.028579112, 0.03444915, -0.023741309, 0.03464813, 0.07004245, -0.012679027, 0.03076794, 0.062083084, 0.02330603, 0.06282928, -0.009115966, 0.015309351, 0.011901746, -0.031041542, 0.017249446, 0.010987662, -0.0091905845, -0.01710021, -0.016441073, -0.028156271, -0.028081652, -0.01826924, 0.02376618, 0.019848678, 0.03012124, -0.044671964, 0.023467705, -0.007362417, 0.019649694, 0.014451231, 0.032384686, -0.038403958, -0.055914573, 0.02576846, -0.01370504, 0.033752702, -0.041289233, -0.00011630085, -0.0010532174, -0.00036901474, 0.057307463, -0.015719756, -0.04215979, 0.024524808, 0.018281678, -0.06014299, -0.011329666, -0.009147057, -0.025494857, 0.0060907835, 0.041811567, -0.008686906, 0.0044367267, -0.012411643, -0.041065373, -0.008997819, 0.0029070354, 0.08322516, -0.032185704, -0.0764597, -0.00403254, -0.019550202, -0.017423559, -0.008357339, 0.04758211, -0.01780909, -0.057904415, -0.051138952, -0.040916137, 0.012274841, 0.005742561, -0.04161258, -0.012654155, -0.0067405915, 0.015732192, -0.019201979, -0.043826282, -0.006728155, -0.053128794, -0.009352259, 0.045865867, 0.040567912, -0.036240008, -0.011174209, -0.034921736, -0.0040916135, 0.021278879, -0.0016898116, 0.00061599613, -0.020756545, -0.022248926, 0.028728351, 0.0018872413, -0.011124463, -0.0018903504, -0.036463864, -0.068002865, 0.017858837, 0.008444394, -0.020545123, 0.05521813, 0.023293594, 0.003964139, -0.0010664312, 0.012896666, -0.10367079, 0.03862782, 0.014202501, -0.0056492873, -0.0146377785, -0.06103842, 0.01948802, -0.029474542, 0.02887759, 0.015122803, 0.03380245, -0.008077517, 0.044323742, -0.034275036, -0.010732713, -0.00082081003, 0.013307071, -0.0041879965, -0.006970667, 0.0061685117, 0.0081397, 0.010726495, 0.009016474, -0.021676846, 0.022099689, -0.039050657, 0.0064732064, 0.008948073, 0.036513608, -0.0008480149, 0.017062899, -0.018070256, -0.017062899, 0.0019369873, 0.018953249, 0.006516734, 0.023828363, 0.022883188, -0.0035537344, -0.0056617237, 0.01603067, -0.03415067, -0.00011474629, 0.033926815, -0.020619743, -0.028380128, 0.04176182, -0.013232453, 0.0014986001, -0.031936973, 0.003982794, 0.026241047, 0.029673526, 0.076260716, -0.008083735, -0.012797174, 0.010539947, -0.02412684, 0.008842362, -0.016553001, -0.039697357, -0.020719234, -0.010720276, 0.014252246, 0.010396927, 0.0072256154, 0.0069147027, 0.047631856, 0.005810962, -0.0029676636, 0.00063970324, 0.00015807977, 0.0064918613, 0.060341973, 0.026241047, 0.024276078, 0.057257716, -0.02469892, 0.027385207, -0.007953152, -0.017585233, 0.022957807, 0.02716135, -0.05646178, -0.0068836114, 0.04405014, -0.01777178, -0.023430396, -0.009762664, -0.03509585, -0.042060297, 0.04300547, 0.0012996158, 0.0059197815, -0.02773343, -0.010247689, -0.009115966, 0.0019851788, 0.05571559, -0.006177839, -0.01670224, -0.026141556, -0.020918218, -0.042731866, 0.002002279, -0.02433826, 0.020545123, 0.03151413, 0.0083013745, -0.011509995, -0.027310587, 0.0051518264, -0.010340963, -0.03340448, -0.03420042, 0.032782655, 0.04914911, 0.030817686, 0.005941545, 0.042881105, 0.04375166, 0.015073056, 0.014724834, 0.01616747, -0.002762461, 0.013767223, -0.068002865, 0.008680688, -0.036737468, -0.016590312, 0.03208621, 0.01767229, 0.028355256, 0.01673955, 0.0072069606, -0.018120004, 0.007356199, -0.018430917, -0.0254078, 0.014998438, -0.009936776, 0.025693841, -0.011802253, 0.025942571, 0.024823286, -0.044124756, 0.006821429, -0.029151192, -0.0039019568, -0.052581586, -0.016018232, -0.04250801, -0.028678605, 0.003186857, 0.008183227, 0.036637973, 0.036712594, -0.0369862, -0.011360757, -0.0048378045, -0.0034697878, -0.009439316, 0.031116161, 0.007362417, -0.008792616, -0.00810239, 0.003929939, -0.041637454, 0.005717688, 0.0030640466, 0.001759767, -0.006053474, -0.028405001, -0.012772301, 0.019400964, -0.026489777, -0.015483461, 0.009656955, -0.020097408, -0.015657572, 0.004753858, 0.008842362, 0.0063674957, 0.01891594, 0.0098745935, 0.0050958623, 0.034772497, 0.0006113325, -0.018306552, -0.00038125692, 0.009103529, -0.021838522, -0.026265921, -0.004293707, 0.058799844, -0.03372783, 0.0074743456, -0.008450612, -0.03536945, -0.027758302, -0.0027391426, -0.03693645, 0.01456316, 0.027534446, 0.026987238, 0.0407669, -0.016503256, 0.0077355127, 0.046985157, 0.043179583, 0.006560262, -0.032285195, 0.003104465, 0.007001758, 0.04778109, 0.020072537, 0.012237531, -0.026713636, -0.0010804223, 0.0381801, -0.03544407, -0.00072287244, 0.020333704, 0.06541607, -0.043552678, 0.0081645725, 0.037906498, -0.023044864, -0.0055560134, 0.04539328, 0.06516734, 0.0068400833, -0.034822244, 0.012809611, -0.015607827, 0.015421279, 0.0147745805, 0.010005177, 0.014874073, 0.026937492, -0.0076671117, 0.0075116553, 0.02330603, -0.03519534, -0.05193489, -0.00043722126, 0.025382929, -0.025146633, 0.037135433, -0.01752305, -0.0008705561, 0.038254723, -0.038030863, -0.011435376, -0.013021031, 0.009986522, -0.0073188893, 0.022000195, 0.0035319703, -0.014103008, -0.004738312, 0.04753236, -0.017411122, -0.018928377, 0.0059757456, 0.023405522, -0.0014263128, -0.027459826, -0.0016245198, 0.043851152, -0.012100729, 0.0032366032, 0.01570732, -0.02030883, 0.009147057, -0.017821526, -0.0071820877, 0.011988801, 0.022248926, -0.03619026, -0.004660584, -0.038677562, 0.029972002, 0.011199082, -0.033280116, 0.024674047, -0.035419196, 0.047010027, -0.020818727, -0.03355372, -0.0029878728, 0.0038335558, 0.0018685864, 0.0058327257, 0.004411854, 0.017908582, 0.001095968, 0.03912528, 0.042458262, -0.009178149, 0.0053228284, 0.10476521, 0.030046621, -0.03783188, 0.008705561, -0.008469267], [-0.002492442, 0.022371748, -0.0320547, 0.041577034, -0.015327515, 0.011547264, -0.0026028669, 0.054151103, 0.0072335317, 0.015419297, -0.05121409, 0.013824592, 0.016589511, 0.015270152, -0.0096829515, 0.041691758, -0.023174835, 0.025813555, 0.015706114, -0.0312975, -0.0069811326, -0.02817693, -0.06989163, 0.022819182, 0.023656689, -0.017243454, -0.0011429668, 0.0011035295, 0.018975832, 0.024528613, 0.03790577, 0.03290368, 0.054380555, -0.024918685, 0.043160263, -0.04123285, 0.010612239, 0.076912925, -0.030494412, -0.054151103, -0.037882827, 0.00013426633, 0.0012039156, -0.028589945, -0.01249376, 0.015189843, 0.0062526166, 0.014421172, -0.0025125192, 0.005245888, 0.007405622, -0.0052917786, -0.013365685, -0.017036946, -0.019170867, 0.020432863, 0.017427018, -0.06828546, 0.040934563, -0.014535899, -0.031871136, 0.017449964, 0.03542767, -0.011369437, -0.05401343, -0.019664193, 0.018390724, 0.011415328, 0.06539434, 0.05823538, 0.03572596, 0.013457467, -0.016807493, -0.032123536, 0.009413343, -0.010078759, 0.08613697, 0.0201231, -0.018849632, -0.049286682, 0.049516134, -0.020054264, -0.03120572, 0.028635837, 0.02822282, -0.028062202, 0.027488569, -0.11729679, -0.0057678954, 0.024115596, 0.024184434, 0.018321889, 0.012333143, -0.0076293396, -0.062090203, -0.008128402, 0.016830439, 0.02647897, -0.029438926, 0.04104929, -0.015419297, -0.041370522, -0.037699264, -0.08095131, -0.03951195, 0.003685602, 0.0365061, -0.01018775, -0.018952886, -0.044491097, 0.042907864, -0.013182122, -0.044950005, 0.046212, -0.009614116, 0.05534426, -0.037538644, -0.068147786, -0.02574472, 0.005016434, -0.095269226, -0.05222369, 0.06677106, 0.041921213, -0.005429451, 0.027052606, -0.0136869205, 0.027052606, -0.0071073323, -0.006751679, -0.07200261, 0.016658347, -0.012310198, 0.07310399, 0.078427315, -0.001842801, 0.048185304, 0.03492287, -0.034762256, 0.01833336, -0.07140603, 0.01095642, 0.026226573, 0.027557405, -0.024505667, -0.041370522, 0.017472908, -0.05933676, -0.027327951, 0.018471032, -0.043412663, -0.020088682, -0.015373406, 0.038135227, 0.028612891, -0.033224914, 0.019618303, 0.03437218, -0.015247206, 0.052636705, -0.0010769989, -0.040613327, 0.033270802, 0.032352988, -0.03563418, -0.043160263, 0.02404676, 0.0048787617, -0.014650626, 0.010646657, 0.021213006, -0.03040263, 0.02911769, -0.04634967, -0.039833184, 0.055481933, 0.05171889, 0.017828561, -0.04203594, -0.010795802, -0.021958731, 0.034762256, 0.02191284, -0.051305875, 0.01607324, 0.019147921, 0.006091999, 0.012367561, 0.025974173, -0.07856499, -0.0110195195, 0.01138091, -0.005280306, -0.062686786, -0.016589511, -0.058373053, -0.010170541, -0.019847756, 0.02349607, -0.005931381, -0.021029443, -0.02494163, 0.016084712, -0.0103885215, -0.053279176, 0.033477314, 0.008053829, 0.0086332, 0.010583557, 0.029094744, 0.02916358, 0.02792453, 0.010285268, 0.03294957, 0.009143734, -0.0037831198, -0.046280835, 0.044009242, 0.036001306, -0.056399748, 0.05649153, 0.00467799, 0.043320883, -0.031320445, -0.0061493623, 0.039672565, 0.022027567, 0.040062636, 0.0021238818, 0.007170432, -0.0045259767, -0.055665497, 0.00773833, 0.025675884, -0.063558705, -0.009883723, -0.040475655, -0.010296741, 0.06186075, -0.0023992264, -0.0054868143, 0.045982547, -0.013904901, 0.02822282, 0.013010032, 0.031939972, 0.0055556507, 0.032926623, -0.0066312156, -0.016784547, 0.00946497, 0.037446864, 0.045454804, -0.01078433, -0.0056875865, 0.05447234, 0.008621727, 0.003338553, -0.020111628, 0.008552891, -0.060162794, 0.05226958, -0.039695513, 0.059015524, -0.051948346, 0.0036913385, 0.05658331, -0.0077440664, -0.06424707, -0.05644564, 0.03315608, -0.0069811326, 0.006212462, 0.010704021, 0.0015731928, -0.009361716, 0.042747248, 0.042793136, -0.026570752, 0.06305391, 0.011621836, 0.011661991, 0.025010467, -0.035909522, 0.03925955, 0.02574472, -0.011885708, -0.03405095, -0.01995101, 0.037951663, 0.01572906, -0.003335685, 0.021671914, 0.032582443, 0.042747248, 0.0033930484, 0.0022142294, 0.015224261, -0.026570752, -0.01500628, 0.047221597, 0.016532147, -0.01743849, -0.022188185, 0.0007034194, 0.04293081, 0.013457467, 0.13427638, -0.0071876408, -0.01863165, 0.04065922, -0.0083406465, -0.03189408, -0.060851153, 0.0005632374, -0.017415546, 0.025285812, 0.060942937, 0.03717152, -0.05461001, 0.018574286, -0.022245549, -0.08641231, -0.014616208, 0.045798983, 0.02574472, 0.035657123, -0.0123790335, -0.035817742, 0.029943723, -0.05148944, 0.007669494, -0.025216974, 0.0028151115, -0.043550335, -0.06828546, -0.035817742, -0.047680505, 0.036230758, -0.03324786, 0.0068549328, -0.009470707, -0.036047194, 0.019859228, -0.014742408, -0.008059566, 0.024620395, 0.010044341, 0.025010467, 0.022291439, 0.0011838384, 0.073930025, 0.014730935, 0.044284586, -0.009969768, 0.007090123, -0.025125194, -0.034555744, 0.023151891, 0.006722997, 0.041967105, -0.03040263, 0.026960824, 0.054288775, 0.040223256, -0.018035071, -0.03065503, 0.008392273, -0.003068945, 0.030264959, -0.037102684, 0.021075334, -0.05401343, -0.027006716, -0.0058338633, -0.018493978, 0.012424924, -0.016383003, 0.001245504, 0.01977892, 0.023002746, -0.009057689, 0.017530272, 0.020031318, 0.05282027, -0.022704456, 0.00064533885, -0.013973738, 0.034005057, -0.018562814, 0.0010612239, 0.0486901, 0.00033772734, -0.019767446, 0.07191083, 0.009172416, -0.033087242, 0.00952807, 0.003685602, 0.025171084, -0.024092652, -0.014570317, 0.0015631542, -0.012711742, -0.0083234375, -0.015866732, 0.0032410352, -0.010801539, 0.008742191, 0.02767213, 0.030517358, 0.053554524, 0.01059503, 0.034509856, 0.03960373, 0.036207814, -0.03368382, 0.029209472, -0.0031004949, 0.015109534, 0.0015717587, -0.0432291, -0.046625018, 0.056812767, -0.020490225, 0.016119132, -0.066816956, -0.004824267, 0.00660827, -0.031526957, -0.028314602, 0.0123790335, 0.023564907, -0.025767663, -0.007703912, -0.03597836, -0.014294973, -0.037148573, 0.016818965, 0.067505315, -0.0073654675, -0.0015789291, 0.0437339, -0.007784221, -0.062595, 0.013193595, -0.06989163, 0.0048041893, 0.01543077, -0.040131472, -0.033362586, -0.029393034, -0.061126497, -0.04561542, 0.030219069, -0.02817693, 0.004537449, 0.026593698, 0.04084278, -0.08677944, 0.025584102, 0.0038605605, 0.07457249, -0.02668548, 0.026960824, -0.012665851, 3.110175e-05, 0.020386972, 0.016635401, 0.04327499, 0.02136215, 0.012011908, 0.00037142838, 0.032513607, -0.016222386, -0.0347852, -0.016715711, 0.052682597, 0.05956621, 0.007893211, -0.021247424, 0.010790066, 0.03790577, 0.0355424, -0.02156866, -0.030127287, 0.019469157, 0.0199969, 0.054839462, 0.075949214, -0.00035404006, 0.010922002, 0.022670038, 0.0019116371, -0.0033901802, -0.007686703, -0.025377592, -0.026708424, -0.014214665, -0.026456026, 0.008948699, 0.05387576, 0.028337548, 0.037974607, 0.0044055134, -0.028199874, -0.02946187, -0.05103053, 0.0103885215, -0.023220727, 0.007853057, -0.0063788164, -0.008593045, -0.016291222, -0.022142293, 0.0017166014, -0.0024867058, 0.007468722, 0.023461653, -0.009642797, 0.019297067, -0.038984206, -0.059199087, 0.017794143, -0.002009155, 0.0006048259, 0.020214882, -0.01577495, 0.0136983935, -0.0380205, -0.02618068, -0.015752004, 0.011174401, 0.015017753, 0.009637061, -0.0090290075, 0.0320547, 0.023197781, -0.026226573, -0.0075777126, -0.029530708, 0.040131472, -0.01918234, -0.0019833415, -0.0312975, 0.027901584, 0.022543838, 0.032513607, 0.007422831, 0.012183998, -0.059703883, 0.029002963, 0.0110482015, 0.015212788, 0.0017739648, 0.0061608353, -0.0491949, -0.057501126, -0.015281624, -0.012367561, -0.006275562, -0.004150246, 0.05828127, 0.039947912, -0.01131781, -0.040108528, 0.008093984, 0.00401831, -0.007749803, 0.02702966, 0.018872578, 0.0047210124, 0.019021722, 0.0039265286, 0.0071991137, 0.09008357, 0.0023060108, -0.04651029, -0.024735123, -0.027695077, -0.008300492, -0.019079085, 0.008294756, -0.029760161, 0.01825305, -0.0048500802, -0.0033586302, -0.033569094, -0.040819835, 0.027305005, -0.012046326, 0.005248756, -0.021304788, -0.0040555964, -0.026020063, 0.035909522, 0.023679635, 0.02370258, 0.0038404833, 0.044674657, -0.034762256, -0.005770764, -0.01334274, 0.002569883, -0.046556182, -0.019606829, 0.050938748, -0.0123790335, 0.026364245, 0.04327499, -0.09719664, 0.009390398, 0.05162711, 0.004918916, -0.004746826, -0.025584102, -0.010302477, 0.06594503, 0.044238698, 0.019079085, 0.04745105, 0.047038034, 0.05759291, -0.014294973, 0.05947443, -0.0077555394, -0.01875785, -0.0012541085, 0.0072507407, -0.0019489235, -0.022796238, -0.017277872, -0.0088225, 0.009573961, 0.015270152, 0.021901367, -0.00411296, 0.01863165, -0.029025909, 0.037194464, 0.016015876, 0.026111845, -0.0011236067, 0.066679284, -0.024758067, -0.017885925, 0.012229889, 0.008191502, -0.0059199086, -0.04224245, 0.0055269687, 0.016922219, 0.01172509, 0.0715437, 0.01731229, 0.03189408, -0.0064992793, 0.0061493623, -0.032421824, -0.033270802, 0.010778593, -0.0740218, -0.0090404805, 0.015442242, -0.019044667, -0.029324198, -0.010457358, -0.017231982, 0.018344833, 0.014627681, 0.028567001, -0.050892856, -0.00929288, -0.052682597, -0.01969861, -0.031090993, 0.019342957, 0.04988326, -0.041668814, -0.018780796, -0.038846534, -0.063879944, -0.019675665, -0.001858576, -0.0031922762, 0.0078071663, -0.034762256, 0.004792717, -0.046280835, -0.017025474, 0.026203627, -0.04800174, 0.0035708752, 0.09150618, 0.019905118, 0.024390941, -0.01607324, -0.06975396, 0.008076775, 0.0026616643, -0.009298616, -0.04873599, -0.0039093196, -0.005549914, -0.005475342, 0.026088899, 0.008507, -0.006441916, -0.03031085, -0.045776036, 0.02643308, 0.014008156, 0.002387754, 0.030815648, -0.0077784844, -0.03253655, -0.026547806, -0.016807493, -0.05456412, 0.013859011, -0.010285268, -0.022107875, -0.040337984, -0.027832748, 0.016864857, -0.0434815, 0.030379687, -0.00023285978, 0.02996667, -0.0076580215, 0.0012182564, -0.06589914, 0.030494412, -0.0077268574, -0.017151672, -0.027075551, -0.019893646, -0.004267841, 0.02618068, 0.01091053, -0.01309034, -0.039672565, -0.028062202, -0.027511513, 0.0047382214, -0.0069467146, 0.020834407, 0.008260338, -0.017874453, -0.03568007, -0.020662317, -0.017002529, 0.029025909, -0.0030603404, 0.035358835, 0.037630428, 0.028750563, 0.023312509, 0.018562814, 0.0061436263, -0.045477748, 0.007812902, -0.034693416, -0.027350895, 0.024643341, 0.027327951, 0.015717587, -0.042563684, 0.012608487, 0.011570209, 0.037240356, 0.056124404, -0.017702362, 0.043297935, 0.02847522, -0.01930854, 0.025974173, -0.0109908385, -0.057960037, -0.019928064, 0.014730935, 0.01833336, 0.005819523, -0.012780578, 0.04472055, 0.023725525, -0.014535899, -0.023587853, 0.03354615, 0.005931381, 0.028934127, 0.013308322, 0.0041703233, 0.022715928, 0.068193674, 0.0053405375, 0.02762624, 0.01577495, 0.028108094, -0.002009155, -0.008730718, -0.038479406, 0.032513607, 0.039672565, 0.006803306, 0.0054351874, -0.05323329, -0.015935568, -0.036483157, 0.023220727, 0.00053025346, 0.012000435, -0.02208493, 0.02144246, -0.034991708, 0.011839817, 0.03781399, 0.0008661882, 0.01709431, 0.0016319903, -0.0055757277, -0.04199005, 0.058694288, -0.009413343, 0.044743497, 0.0385253, 0.022199657, -0.016899275, -0.02455156, -0.034349237, 0.0055585187, -0.015992932, -0.018539868, 0.0005094592, 0.054655902, 0.031045102, 0.007812902, 0.044399314, 0.02054759, 0.02728206, -0.01649773, -0.005690455, -0.0045202402, 0.04164587, -0.045408912, 0.03060914, -0.008593045, -0.0058482043, 0.008736454, 0.016899275, 0.051397655, 0.0046923305, 0.0027261982, -0.015270152, -0.0043223365, -0.0075777126, -0.04726749, -0.0071761683, -0.0036769975, 0.023140417, -0.010159068, 0.036643777, 0.034257457, -0.016291222, -0.008856918, -0.007520349, -0.007336786, -0.061493624, -0.0002739105, -0.001510093, -0.023358399, 0.009614116, -0.00033145322, 0.047818176, -0.025997117, -0.028291656, -0.0010741306, -0.034968764, -0.011943071, -0.028934127, -0.009579697, 0.019320011, -0.06415529, -0.0010834523, 0.015338988, -0.07631634, 0.009614116, 0.015350461, -0.022027567, 0.026960824, -0.0088225, -0.009115053, 0.016945165, -0.044491097, 0.032834843, 0.04726749, -0.025010467, 0.009746051, -0.014535899, 0.0325595, 0.012413451, -0.02400087, 0.019377375, -0.03253655, 0.0058568087, -0.022589728, -0.014971862, 0.032926623, -0.020100154, -0.023564907, -0.01901025, 0.02647897, 0.034739308, -0.05823538, 0.0136639755, -0.0027620504, 0.02345018, -0.009728842, 0.017128728, -0.028750563, 0.025629992, -0.023977924, -0.012321671, 0.0066484245, -0.041278742, 0.026914934, 0.025308756, -0.0034733573, 0.009172416, -0.0069467146, 0.0028151115, 0.030196123, 0.005931381, 0.04293081, -0.003436071, -0.023278091, 0.0110080475, 0.035152327, -0.010147595, 0.0043166, 0.03985613, 0.08838561, -0.013572194, -0.028842345, 0.04462877, -0.03444102, -0.013904901, 0.048965447, -0.0037945926, 0.0037114155, -0.0066025336, 0.02553821, -0.01602735, 0.02693788, -0.0024981785, 0.008294756, -0.020386972, 0.04263252, 0.0063788164, -0.004460009, 0.017174618, -0.00022479304, 0.038295843, 0.022578256, 0.0051340293, 0.013847538, 0.032261208, -0.025056357, -0.001477109, 0.0076752305, -0.04114107, 0.0042448957, 0.0034504118, -0.015866732, -0.00060303335, 0.034418073, 0.0032955306, -0.016417421, -0.008851181, -0.045730148, 0.01393932, -0.03691912, 0.01321654, 0.02161455, -0.025125194, -0.003304135, -0.021247424, 0.029691324, 0.029530708, -0.0042907866, 0.038984206, -0.039466057, 0.0110195195, 0.035909522, -0.019618303, -0.015224261, 0.01364103, -0.012310198, -0.008902809, -0.025859445, -0.012688796, -0.03547356, -0.035221163, 0.010021396, -0.04288492, 0.02911769, 0.0014183114, 0.005412242, -0.030379687, -0.0014699386, -0.021178588, 0.0042076097, -0.014099937, -0.012482288, -0.031182775, 0.041806486, 0.02852111, 0.028750563, -0.0020062868, 0.123537935, -0.023484599, 0.003384444, -0.008025147, 0.020731153], [0.016054904, 0.019261321, -0.014503044, 0.05029852, -0.008997365, 0.030945914, -0.02171463, 0.0142634185, -0.026746763, 0.0549541, -0.0046384637, -0.009356802, -0.04128404, 0.0020339636, 0.02683805, 0.04441058, -0.044821367, 0.033296525, -0.033661667, -0.017652407, 0.012243719, -0.0134988995, -0.0048352988, -0.0015932239, 0.0034403366, -0.018394105, -0.015278975, -0.012335004, 0.06285033, 0.00094423833, 0.02096152, 0.05166781, 0.058788106, 0.028321445, 0.059974823, -0.0013650092, 0.022638898, -0.0015390229, 0.011821521, -0.0072458168, -0.096945606, -0.00496367, 0.03509942, -0.056003887, -0.046966586, -0.022319397, 0.0004143523, 0.0041021593, 0.019900322, -0.021771682, -0.020265466, -0.020299697, -0.027522692, 0.030466663, -0.0014206365, 0.0026558486, 0.024670009, 0.004059369, 0.035327636, -0.048381515, -0.046647083, -0.024282044, 0.036445886, -0.03523635, -0.0273173, 0.013122345, -0.09685432, 0.030398197, 0.06084204, 0.051028807, 0.057692677, -0.031128485, -0.0043959855, 0.011513432, -0.002624469, -0.031082842, 0.107534766, -0.010657626, 0.000992734, -0.01521051, 0.0023021158, -0.008569462, 0.0076280762, 0.021532057, -0.0035858236, -0.008529524, 0.010030036, -0.119675785, -0.047879443, 0.040645037, 0.006937727, -0.03350192, 0.04096454, -0.02082459, -0.003266323, 0.021965666, 0.007126004, 0.014172133, -0.020219823, 0.010343831, -0.021851558, -0.073667705, -0.07453492, -0.023392007, 0.036559995, 0.01707046, 0.00368852, -0.023802793, -0.023175202, 0.022844292, 0.02560569, 0.024806937, -0.024145115, 0.0387965, -0.010081384, 0.0425164, -0.024624366, -0.04488983, -0.022148237, -0.016853655, -0.09721946, -0.035281993, 0.06627355, 0.042653326, 0.021201145, 0.03229238, 0.0017586795, 0.03427785, 0.020436626, -0.0387965, -0.025537224, 0.0047097807, 0.00853523, 0.017218798, 0.0060305735, 0.0034260731, 0.026587013, -0.008221434, -0.02017418, 0.0018742132, -0.020870235, -0.007941872, 0.0057139257, -0.008951722, -0.025651332, -0.004564294, -0.015495778, -0.02498951, -0.048153304, -0.024008187, -0.045871153, -0.05773832, -0.047423016, -0.00016278126, 0.044342116, -0.02235363, 0.04018861, 0.026655477, -0.007565317, 0.04997902, 0.016374405, -0.050207235, -9.342539e-05, 0.011901396, 0.05198731, -0.062120043, 0.02063061, 0.0045699994, -0.053995598, 0.0034003991, 0.037039246, 0.0065269405, 0.021349486, -0.0074569155, -0.039321393, 0.004558589, 0.047788158, 0.031288236, -0.07060963, -0.034118097, -0.02514926, 0.04256204, 0.064402185, -0.030489484, -0.0043731644, 0.011051297, -0.022570433, -0.0027499872, 0.0273173, -0.019010285, -0.032520596, -0.006475592, 0.0116788875, -0.016705316, -0.0017073313, 0.013099524, -0.027066264, -0.027157549, -0.017823568, 0.055319242, 0.0119470395, -0.059974823, 0.013464667, -0.046441693, -0.021920022, 0.037952106, -0.001384978, 0.018896177, -0.015541421, 0.02080177, -0.0014156443, -0.0058052116, -0.00048673915, -0.004609937, -0.034483243, 0.022467738, -0.07809507, 0.026952157, -0.06024868, -0.042014327, 0.030489484, -0.057829604, -0.02049368, -0.0085124085, -0.036149208, 0.01710469, 0.039526787, 0.02592519, -0.01289413, 0.023962544, -0.041991506, -0.058879394, -0.030261269, 0.008472471, -0.09731075, -0.013772757, -0.050252877, -0.002245062, 0.00075881387, 0.010634805, -0.0106291, 0.100323185, -0.020197, -0.03400399, -0.027659621, 0.03058077, 0.06412833, 0.007314281, -0.024852581, -0.004621348, 0.003500243, 0.019615054, 0.0017429898, 0.050526734, -0.0024304865, 0.06618226, -0.0014106521, 0.008289899, 0.032543417, -0.014480223, -0.003993757, 0.022399273, -0.041557897, 0.08275065, 0.0077592996, -0.039024714, 0.024555901, -0.06746027, -0.05276324, 0.023026863, 0.030694878, -0.032041345, -0.006116154, -0.008101622, -0.03459735, -0.024190757, 0.042790256, 0.04965952, -0.036514353, 0.0019983049, 0.014206365, 0.03792928, 0.010845903, 0.013555953, 0.025948012, 0.010532108, 0.016853655, -0.006378601, -0.011473494, 0.008426827, -0.00042077084, -0.012871309, 0.01124528, -0.030535126, -0.001985468, -0.027271656, 0.043908507, 0.023643043, -0.023665864, 0.032771632, 0.0010447954, -0.0010982832, -0.04797073, -0.05436074, 0.01102277, 0.014058026, -0.022410683, 0.086539015, -0.014388937, -0.0024033862, 0.013784168, 0.0010440822, 0.00039081767, -0.012802845, -0.010172671, -0.0400745, -0.011810111, 0.046167836, 0.038728036, -0.02109845, -0.030215627, -0.012163844, -0.06421962, 0.02268454, 0.016089136, 0.027408585, -0.0119470395, -0.024236402, -0.03756414, 0.0080788005, -0.07604114, 0.017195977, -0.031174129, -0.015221921, -0.056140818, -0.05869682, -0.06709512, -0.063534975, -0.0008436812, -0.039526787, 0.0023306427, 0.00916282, -0.038157497, -0.032064166, 0.008746329, -0.032520596, -0.033342168, 0.024898224, 0.0050720717, -0.022307986, 0.0012815682, 0.051941667, 0.0059963414, -0.0038026276, 0.023083918, -0.015324617, -0.013624418, -0.03678821, -0.0025317569, -0.0034146626, 0.024236402, -0.063945755, 0.032383665, 0.05413253, -0.010115617, -0.0232779, -0.039549608, 0.016979173, -0.034574527, 0.015781047, -0.050115947, 0.014331883, -0.05294581, -0.048381515, 0.004216267, -0.017344316, 0.033798598, 0.0016089136, -0.00049886305, 0.017937675, 0.014948063, -0.03754132, -0.0717507, -0.014651384, -0.0019112981, 0.026107762, -0.01335056, 0.030375376, 0.007502558, -0.023528935, -0.0014299077, 0.009351097, 0.013019648, 0.017777925, -0.011062708, -0.008187203, 0.0017515478, 0.03290856, -0.014286241, 0.00721729, -0.0053716036, 0.032315202, -0.017504068, 0.030215627, 0.014172133, -0.052398097, 0.019443892, 0.027910657, -0.048837945, 0.07197892, 0.0006543343, 0.029371232, 0.0034260731, 0.030169984, 0.00030024495, 0.01800614, 0.014776902, 0.029074553, -0.060933325, 0.015290385, 0.002978202, -0.06613662, -0.03802057, 0.034255028, -0.0049950494, 0.06878391, -0.06065947, 0.05979225, -0.0063101365, -0.03226956, -0.013590185, -0.015142045, -0.028823517, 0.0065611727, -0.031744666, -0.04580269, -0.06065947, -0.024236402, 0.0027927775, 0.055227958, 0.009345392, 0.035761245, -0.015107813, 0.0025303306, -0.046647083, -0.025103617, -0.07699964, 0.0025545782, 0.029462518, -0.008084506, -0.04267615, -0.0033661667, -0.059564035, -0.047742516, 0.039389856, -0.015324617, 0.025057973, -0.05153088, 0.034506064, -0.089003734, -0.027111907, -0.007884818, 0.054269455, 0.009864581, 0.037176173, -0.010292483, -0.022250934, 0.016260298, 0.028549658, 0.024099473, -0.036537174, -0.01584951, -0.038134675, 0.018428337, -0.015267563, -0.021509236, -0.030626412, 0.05947275, 0.03619485, 0.006738039, -0.03418656, -0.024966689, -0.0043617534, 0.03416374, 0.012198076, -0.006007752, 0.031288236, 0.03617203, 0.03521353, 0.045095224, -0.002303542, 0.048153304, 0.004481566, -0.017344316, -0.021840148, 0.008757739, 0.0028298623, -0.058879394, -0.04208279, 0.0031864478, 0.007782121, 0.035030957, 0.051759094, -0.00090216123, 0.020972932, -0.009847464, -0.039800644, 0.011821521, 0.0023220845, -0.001134655, 0.008951722, -0.04829023, -0.041831754, -0.0071431203, -0.03137952, -0.0064071277, -0.008774855, -0.034483243, 0.034095276, 0.017812157, -0.010269661, -0.028138872, -0.020060072, -0.017287264, -0.02544594, -0.021611933, 0.030169984, -0.013122345, -0.010446528, 0.0064812973, -0.036696922, -0.0052004424, 0.023392007, 0.023506114, 0.04486701, 0.0027071969, 0.023825616, 0.006395717, -0.009596428, 0.011707414, 0.0038140381, 0.017344316, -0.024190757, 0.029371232, -0.049568232, 0.040394, 0.00878056, 0.030375376, -0.056871105, -0.039549608, 0.0080160415, -0.0015204805, 0.008860435, 0.014354705, 0.0103951795, 0.03589817, -0.016032083, -0.03169902, -0.0041734762, -0.0060591004, -0.017287264, 0.09000788, 0.05340224, 0.04098736, -0.00916282, -0.022581846, 0.01772087, 0.046350405, 0.0045272093, -0.009488027, 0.00979041, 0.03681103, -0.010737502, -0.017903443, -0.0060020466, 0.07421542, 0.033661667, -0.022410683, -0.019078748, -0.018268587, -0.029257124, -0.018531034, -0.007531085, -0.06065947, 0.02296981, 0.00064898556, 0.007251522, -0.022593256, 0.00644136, -0.0027942038, 0.046441693, 0.018565265, 0.00078734074, 0.028983267, -0.0035972341, 0.0071374145, -0.010092795, 0.01584951, 0.048564088, 0.024031008, 0.02544594, -0.01103418, 0.02206836, -0.029622268, -0.024145115, -0.018257177, 0.013989561, -0.0014541555, 0.046008084, 0.030831806, -0.096945606, 0.027728086, 0.023574578, -0.043246686, 0.0034175152, -0.030489484, 0.0049551115, 0.042493578, 0.045186512, 0.003391841, 0.06339804, 0.03151645, 0.04285872, -0.030055877, -0.01646569, 0.017230209, -0.016248887, 0.019329784, -0.029074553, -0.012620273, -0.022079771, -0.0026344534, -0.023346364, -0.027271656, 0.005034987, 0.038933426, -0.038591105, 0.013955329, -0.03183595, -0.021691807, -0.020893056, 0.02109845, -0.018108837, 0.07736478, -0.013019648, -0.0060305735, 0.056460317, 0.036377423, 0.009351097, 0.0329542, -0.024898224, 0.02469283, -0.019170035, 0.028298622, -0.00939674, -0.024282044, -0.052991454, 0.018416926, -0.014799723, 0.008866142, -0.03012434, -0.04288154, -0.02889198, 0.005522796, 0.032657523, -0.003408957, -0.03074052, -0.0022607518, 0.016716726, 0.027659621, 0.049157448, -0.046875298, -0.01008709, 0.010851609, -0.032338023, -0.02686087, -0.0074455044, 0.04860973, -0.030261269, -0.044479046, -0.059700966, -0.025537224, 0.0276368, -0.004413102, 0.031174129, 0.023460472, -0.018382695, 0.019067338, 0.03462017, -0.011011359, 0.003508801, -0.02312956, 0.00333764, 0.056460317, 0.02592519, -0.028595302, -0.00923699, -0.032429308, 0.0001780253, -0.0101669645, -0.027979122, -0.039093178, 0.040896073, -0.020550733, 0.0038796498, 0.0062644933, 0.0065155295, -0.0091742305, -0.016808013, 0.00948232, -0.0029268535, -0.006019163, 0.03420938, 0.08165522, 0.010372358, 0.0066353423, -0.031767488, -0.023015453, -0.06453912, 0.016442869, -0.0072458168, 0.0017201683, 0.01985468, 0.0181773, 0.020687662, -0.08457637, 0.0058422964, 0.031288236, 0.041192755, -0.005112009, 0.0036029397, -0.012791434, -0.006041984, -0.003993757, -0.01879348, -0.0035915289, 0.00075168215, -0.023083918, 0.025742618, -0.0027728085, 0.062028755, -0.021611933, -0.0076451926, -0.06020304, -0.025879547, -0.017857801, -0.0004835299, -0.047559943, 0.025537224, -0.011250985, 0.0045699994, -0.01798332, 0.0051148618, 0.029530982, -0.0020810328, 0.005648314, 0.023574578, -0.016602619, -0.007006191, -0.01288272, -0.023506114, -0.011290923, -0.0025545782, -0.007884818, -0.022262344, -0.022810059, -0.002615911, -0.060933325, 0.010583457, 0.038979072, 0.034414776, 0.07307435, -0.02950816, 0.005305992, 0.00048780892, -0.020082893, 0.016260298, 0.012335004, -0.023939721, -0.013670061, 0.014320472, 0.00698337, 0.0019740572, -0.02640444, 0.013247863, 0.025651332, 0.032977026, 0.001314374, -0.034574527, 0.009853169, 0.026883692, 0.02017418, 0.01241488, 0.0047839507, 0.047559943, -0.010286777, 0.03256624, -0.034255028, 0.05125702, 0.01156478, 0.009682009, -0.07307435, 0.0024219286, 0.011114056, -0.0036856674, -0.032703165, -0.04516369, -0.023962544, -0.05089188, 0.041466612, 0.021908611, 0.04034836, -0.0011332287, 0.03884214, -0.026883692, 0.041877396, 0.020516502, -0.0056682825, 0.014674205, 0.017937675, 0.003654288, -0.0026544223, 0.016420048, -0.029120196, 0.008483881, 0.031950057, -0.023163792, 0.008038863, -0.004313258, -0.007839175, -0.02779655, -0.09114895, 0.008717801, -0.012141022, 0.005927877, 0.044798546, -0.022559023, 0.08959709, 0.0027071969, -0.00030274107, -0.02670112, -0.0010540667, 0.027385764, 0.0121752545, -0.02328931, 0.0070404233, -0.0033804302, -0.016648263, 0.009687714, 0.010805966, 0.01241488, 0.060294323, 0.0043703117, -0.0016830834, -0.020402394, -0.011867165, -0.0037084888, 0.0478338, -0.060978968, 0.029371232, 0.044821367, 0.05778396, 0.022832882, -0.004564294, 0.0276368, -0.00043075526, -0.014320472, -0.07900793, -0.031242592, -0.048837945, -0.0021523498, -0.019706339, 0.045620117, 0.043132577, -0.00051954505, -0.013179399, 0.024031008, -0.026313156, 0.009522258, -0.04085043, -0.023620222, 0.031060021, -0.04669273, -0.03169902, 0.027362943, -0.043383613, 0.02996459, 0.018245766, -0.021475004, -0.0106233945, -0.0057681263, 0.01521051, -0.009761884, 0.0071830577, 0.019945964, -0.0038140381, -0.0046869596, -0.02482976, -0.029759197, -0.011062708, -0.0058394438, 0.012323594, -0.012072558, -0.022753006, 0.0023620222, 0.0072914595, 0.02514926, 0.02220529, -0.002941117, 0.015005116, -0.0037427212, 0.04500394, 0.015438724, -0.036856674, 0.009128588, -0.039846286, -0.02514926, 0.0049208794, 0.0021295284, -0.043406434, 0.016032083, 0.0018970347, 0.028344266, 0.0028355676, 0.004609937, 0.017287264, 0.033912703, 0.012962595, 0.02530901, -0.056779817, 0.022216702, 0.0015818131, -0.009950161, 0.00620744, -0.004433071, 0.0031778896, -0.019911733, -0.0055427644, -0.03058077, -0.040667858, 0.05865118, 0.07951, -0.010355242, 0.0016631146, -0.002845552, -0.03430067, -0.012517576, 0.009202758, 0.024304865, 0.0012551808, -0.024510259, 0.015278975, -0.028389908, 0.017618176, 0.0175383, -0.026267512, -0.003751279, 0.01878207, 0.016853655, -0.00868357, 0.012061147, -0.00885473, -0.0029981707, -0.009944456, -0.013019648, -0.025742618, 0.004552883, 0.00791905, -0.009967277, 0.010646216, -0.041786112, 0.0054001305, -0.003192153, -0.017766515, -0.004133539, 0.028937625, 0.005015018, -0.003120836, -0.062439542, 0.012814255, -0.01396674, -0.054588955, 0.006954843, 0.030306913, -0.026518548, -0.011599012, 0.021623343, 0.022798648, 0.017059049, 0.0040878956, 0.033159595, -0.068053626, -0.0047297496, 0.01612337, 0.0024518818, 0.013031059, -0.0029839072, 0.013179399, -0.02421358, -0.010355242, -0.047559943, -0.044912655, -0.017116103, -0.0047240444, 0.0023135266, 0.04021143, 0.0038767972, 0.0025403148, -0.04546037, 0.031105664, 0.0044872714, -0.015187688, -0.0034488947, 0.06024868, -0.050161593, 0.08713237, 0.03665128, -0.007434094, 0.00014254505, 0.10917791, -0.015381671, 0.014959473, 0.026199048, -0.0037427212], [-0.01017513, 0.009160078, -0.01887382, 0.04808272, -0.008993979, 0.014296858, -0.04982984, 0.06703036, 0.033293717, 0.011633114, -0.009147774, -0.02353691, -0.015022774, -0.02864293, -0.0028421464, 0.046926174, -0.03417958, 0.017594239, -0.010538088, -0.044243976, 0.0031743452, -0.059057586, -0.05812251, 0.008686387, 0.031423558, -0.016142407, -0.021346858, 0.0061702877, 0.020645548, 0.00842801, 0.019895025, -0.00075321493, 0.0011419338, -0.0007455251, 0.007037696, 0.00041524865, 0.0087479055, 0.043727223, -0.015588743, -0.029897904, -0.073329836, -0.036935598, -0.006028795, -0.020460993, -0.021088481, 0.0002589537, 0.007283769, -0.017717276, -0.009849083, -0.0021531412, -0.013287957, -0.045794237, -0.038584292, -0.025124082, -0.023758376, -0.016080888, 0.054923557, 0.01071034, 0.059894238, -0.029184291, -0.02679738, 0.026969632, 0.05886073, -0.016573036, 7.2187904e-05, 0.026182197, -0.0017763415, 0.030931411, 0.054382194, 0.06299476, 0.013829319, 0.03186649, 0.015871726, 0.0030313153, 0.020596333, -0.044514656, 0.08371413, 0.021371465, -0.00046407882, -0.010531937, 0.026452878, -0.03213717, -0.006564005, 0.012918848, -0.011706936, -0.034228794, 0.030439265, -0.12933612, -0.044219367, -0.016659161, 0.0062041227, 0.0026591294, 0.020793192, 0.0047307587, -0.015121203, 0.053004183, -0.012328272, 0.016302355, -0.0007770533, -0.0073083765, 0.019919632, -0.047664393, -0.063043974, -0.07889109, 0.015957853, 0.039863873, 0.076971725, 0.0022577224, -0.018553926, 0.012832722, 0.03841204, -0.028372249, -0.02984869, 0.05093717, -0.023918323, 0.04594188, -0.04143874, -0.031718846, -0.06658743, 0.0021500653, -0.07200104, -0.060386382, 0.05359476, 0.010205889, 0.015231936, 0.014432198, -0.01689293, 0.018861517, 0.016043978, 0.012260601, -0.04704921, 0.018492406, 0.0031743452, 0.03445026, 0.024791883, -0.0023223166, 0.084206276, 0.0025053336, -0.034868583, 0.03757539, -0.069934025, 0.02404136, -0.017680366, 0.023327747, -0.035877485, -0.0011288612, 0.001685602, -0.017692668, -0.039371725, -0.008292669, -0.006890052, -0.041783243, -0.033662826, 0.04289057, 0.050986383, -0.021777485, 0.029701045, 0.032014135, 0.007585209, 0.053348687, 0.03639424, -0.07195183, 0.006367146, 0.059992667, -0.014161517, -0.055120416, 0.029947119, -0.005810405, -0.036271203, 0.014038481, 0.02229424, -0.018393978, 0.069737166, -0.015035077, -0.06368376, 0.0039371727, 0.024668846, -0.005705824, -0.026108375, -0.0745602, -0.033638217, 0.069687955, 0.039543975, -0.022983244, 0.009885994, 0.039199475, 0.05792565, 0.009615313, 0.013693978, -0.06491413, 0.005748887, 0.030045548, -0.024065968, 0.008532591, -0.0005086796, -0.03932251, -0.0013003435, -0.029307328, -0.035311516, 0.00082280755, 0.004078665, -0.029996334, 0.022860209, -0.011854581, -0.044686906, 0.044243976, 0.021100784, 0.008298822, -0.003626505, 0.028667537, 0.0426445, 0.008766361, -0.0095845545, 0.013152617, -0.00718534, 0.026821988, -0.060730886, 0.0012811191, -0.03260471, -0.044785336, 0.05856544, -0.023192408, 0.022761779, -0.01588403, 0.010827225, 0.024152093, 0.01870157, 0.010519633, 0.022614134, 0.009363089, -0.019599738, -0.00028048508, -0.015797904, 0.00936924, -0.054283764, -0.029873297, -0.026600521, -0.011017931, 0.02324162, -0.00601034, -0.008827879, 0.018812303, -0.04060209, -0.02044869, -0.00674856, 0.04707382, 0.018086387, 0.033662826, -0.02330314, 0.004226309, 0.026920417, 0.033072248, 0.029331936, 0.012562041, 0.00044177845, 0.066242926, -0.015133507, 0.010371989, -0.013570941, 0.028396856, -0.055218846, 0.062601045, -0.04864869, 0.061321463, -0.016609946, -0.021162301, -0.0021408375, -0.036984812, -0.07898952, 0.004804581, 0.09710052, -0.040503662, 0.039002616, 0.0379445, 0.015773298, 0.014653664, 0.06894974, 0.03774764, -0.06087853, 0.04643403, -0.0010781086, 0.011614659, 0.009110863, -0.01363246, 0.02844607, -0.013041884, -0.010833376, -0.008255758, -0.018246334, 0.016130103, 0.0013395614, 0.016326962, 0.030094761, 0.04134031, 0.04355497, -0.0013633998, 0.0167945, -0.007628272, -0.028076962, 0.0138416225, 0.0026129906, 0.0017624999, -0.027486386, -0.032850783, 0.021912826, 0.06776858, 0.013214136, 0.113587424, -0.010661125, -0.036615703, 0.06171518, -0.020657852, -0.04328429, -0.046458635, -0.00128035, 0.013730889, 0.007585209, 0.049190048, 0.055218846, -0.031325128, -0.01883691, -0.035213087, -0.084206276, 0.020288741, 0.063142404, 0.0069638737, 0.0016210077, -0.024890313, -0.027338741, -0.005819633, -0.052167535, 0.009258507, 0.005524345, 0.008249607, -0.05027277, -0.08351727, 0.014973559, -0.035483766, 0.013804711, -0.033761255, 0.018332459, 0.011503926, -0.04087277, -0.030143976, 0.020227224, -0.03447487, -0.023278533, 0.007825131, 0.02353691, 0.029725652, 0.0014226112, -0.0006021106, 0.02874136, 0.025394762, 0.007874345, 0.0012557427, -0.00533979, -0.017335862, -0.010556544, 0.0010050555, 0.042423032, -0.039839264, 0.052856542, 0.051724605, 0.037083242, -0.03112827, -0.015625654, -0.00010333156, 0.012334423, -0.0050414265, -0.059648164, 0.048771724, -0.032752354, -0.015391883, -0.0048414916, -0.03378586, 0.031743452, -0.0025883834, -0.024841098, 0.010574999, 0.013976962, -0.034770153, -0.0396178, 0.02532094, 0.009682983, 0.015933245, -0.0372801, 0.008089659, 0.010956413, -0.035852876, 0.0060472507, 0.03166963, 0.0012257525, -0.015318062, 0.03814136, 0.06437277, -0.0138416225, 0.052265964, 0.009418455, 0.03368743, -0.029996334, -0.010427355, -0.05940209, -0.052758113, 0.031325128, -0.060287952, 0.019267539, -0.0017640379, 0.04284136, 0.030020941, 0.026009945, -0.0045462037, 0.006742408, 0.029922511, 0.033170678, -0.00402945, -0.01951361, 0.06555392, -0.028470678, 0.00095814787, 0.0064225127, -0.041783243, -0.03250628, 0.04963298, -0.032358635, 0.057089, -0.076578006, 0.020128794, 0.012697381, -0.011897643, -0.009141622, 0.022183506, -0.00064209744, -0.019242931, -0.0020747054, -0.047565967, -0.026502091, -0.038707327, -0.0139277475, 0.060829315, 0.009221597, -0.023093978, 0.003740314, -0.017754188, -0.040749736, -0.003035929, -0.06378219, -0.0110856015, 0.03905183, -0.00866178, -0.015760994, -0.021629842, -0.055317275, -0.027510993, 0.021728272, -0.0037218584, 0.021482198, 0.010371989, 0.023906019, -0.07844816, -0.00018349761, 0.0426445, 0.07682408, 0.00020243372, 0.050248165, -0.011497774, -0.03213717, 0.031275913, 0.018652355, 0.024164395, -0.0011265542, 0.0055428008, -0.02058403, 0.053545546, 0.02145759, -0.026403664, -0.004207853, 0.0014033867, 0.011411648, -0.026231412, -0.026009945, -0.025222512, -0.037132457, 0.0533979, 0.0061764396, -0.025911516, 0.02716649, 0.046557065, 0.08760209, 0.025665443, -0.0028698295, 0.014173821, -0.00483534, 0.0047645937, -0.008889398, -0.05516963, -0.011836125, -0.036591098, -0.004592343, -0.0127588995, 0.020116491, 0.017655758, 0.040651307, 0.013312564, 0.034843978, -0.0069331145, -0.021211516, -0.01588403, 0.036689527, 0.0052659684, -0.016203925, -0.027018847, -0.0040079188, 0.009879842, -0.01763115, -0.040208373, 0.0059918845, 0.0057089003, -0.0065024863, 0.01763115, -0.0004725376, -0.03221099, -0.052364394, -0.01413691, -0.016425392, -0.021740574, -0.023044763, -0.0025776175, 0.010513481, -0.039470155, -0.004576963, -0.030143976, -0.006564005, 0.0060195676, 0.020325653, -0.013607852, 0.035754446, -0.011036387, -0.0060564787, -0.004281675, -0.015588743, 0.04301361, 0.03272775, 0.028076962, -0.04355497, 0.059057586, 0.061124604, -0.006656282, -0.024029056, 0.017040575, -0.028323034, 0.03398272, 0.0024468913, 0.034770153, 0.0045984946, -0.022491097, -0.03868272, -0.029430365, 0.003663416, -0.022712564, 0.01806178, 0.0322356, 0.085289, 0.03902722, -0.007628272, -0.051084813, 0.016437694, 0.012931151, -0.008735602, 0.038338218, 0.0061026174, 0.056301568, -0.0029144303, -0.00041986254, -0.0024453532, 0.06575078, 0.006234882, -0.028150784, -0.017409684, -0.00015446865, -0.043235075, -0.01222369, 0.023512302, -0.05782722, 0.017249737, 0.011233245, -0.023364658, -0.052758113, -0.02827382, -0.014186124, 0.022060469, 0.031374343, -0.010138219, -0.0011288612, 0.016228532, 0.0017794174, 0.02524712, -0.005524345, -0.0007259162, 0.030242406, -0.036910992, -0.0017302028, 0.02827382, -0.007142277, -0.031325128, 0.007855889, 0.028347641, -0.032580104, 0.05083874, 0.0117130885, -0.10364606, 0.0065270937, 0.046852354, -0.020399475, -0.017077485, -0.023512302, -0.004460078, 0.05452984, 0.017877223, 0.047270678, 0.07977696, 0.014321465, 0.043801043, -0.036787957, 0.028421463, 0.020239528, -0.00090508827, -0.0049706805, -0.025591621, 0.012279057, -0.0032358638, -0.03233403, -0.017262042, -0.019673558, -0.001724051, 0.020190313, 0.016720679, 0.033441357, -0.0036172771, -0.006668586, 0.016130103, 0.04318586, -0.009965968, 0.05792565, -0.036714133, -0.036172774, 0.007905104, -0.006038023, 0.03823979, -0.016769893, -0.03221099, 0.04660628, -0.016130103, 0.052856542, 0.0027006543, -0.022208113, -0.028716752, 0.034228794, -0.031915706, 0.003472709, -0.032899998, -0.06963874, 0.018443193, 0.024865706, 0.009553795, -0.01907068, -0.034917798, -0.010261256, 0.0014764396, 0.026305234, 0.084157065, -0.028593715, -0.036861777, -0.05590785, -0.013890836, -0.034770153, -0.0075236904, 0.049239263, -0.038805757, -0.021186909, -0.03582827, -0.07529842, -0.0027637105, -0.026969632, -0.016708376, -0.009910601, -0.054874342, 0.009196989, -0.025345547, -0.013435601, 0.019279841, -0.05930366, -0.01782801, 0.07579057, 0.0117992135, 0.00183017, -0.011313219, -0.03646806, 0.040823556, -0.003152814, -0.0018117145, -0.019562826, -0.02334005, -0.009553795, 0.011220941, 0.044047117, -0.001426456, 0.0051736906, -0.03720628, -0.0171267, 0.01437068, 0.0050321985, 0.026600521, 0.06205968, 0.015797904, -0.013238743, 0.0027544827, -0.0008212696, -0.07244398, 0.02407827, -0.00433089, -0.00079973816, -0.005684293, -0.036049735, 0.030267013, -0.04872251, 0.008083507, 0.010193585, 0.07131204, -0.01061191, 0.018590836, -0.039174866, -0.009984423, -0.006600916, -0.0011034849, -0.009836779, -0.019009162, -0.003035929, 0.040257588, 0.03388429, 0.03297382, 0.0013764724, -0.030808374, -0.036443453, -0.0047030756, -0.03932251, 0.013337172, -0.024152093, -0.014862826, -0.022577224, -0.0013941589, -0.015674869, -0.001684064, -0.018652355, 0.008169633, 0.040848166, 0.0285445, -0.012555889, 0.004656937, -0.013940051, -0.012291361, 0.0050629578, -0.016474606, -0.016843716, 0.035582196, 0.036664918, 0.003737238, -0.043358114, 0.0067854705, 0.026132982, 0.035779055, 0.048107326, -0.012494371, -0.0007278386, 0.00738835, -0.02891361, 0.030513087, -0.044145547, -0.02770785, -0.008981675, -0.016265444, 0.0031620418, -0.021100784, -0.01464136, 0.036689527, 0.018664658, -0.009572251, -0.006810078, -0.010488873, -0.008901701, 0.036345024, 0.027683245, 0.021543715, 0.009479973, 0.045818847, -0.024287432, 0.028052354, -0.024435077, 0.059254445, -0.006001112, 0.027068062, -0.044317797, -0.014087696, 0.049977485, -0.0040479056, 0.002716034, -0.014013873, -0.0024838021, -0.006410209, 0.036172774, -0.000989676, 0.027412564, -0.0025360927, 0.03058691, -0.007000785, 0.010937957, 0.015871726, -0.0032481672, 0.00038871888, 0.01883691, -0.015711779, -0.033121463, 0.025567014, -0.028470678, 0.007966623, 0.046630885, -0.002931348, 0.019489003, -0.025468584, -0.022121988, -0.032260206, -0.032924604, -0.023647642, 0.00019080291, 0.018320156, 0.010279711, -0.0010527322, 0.069934025, 0.014358376, 0.0027560208, -0.044342406, -0.017975653, -0.010205889, -0.0019885798, -0.035385337, 0.007818978, 0.0028421464, 0.01574869, -0.00042793681, 0.022958636, 0.03509005, 0.023057066, 0.010827225, 0.000697464, -0.035065442, -0.01621623, -0.048033506, -0.011540837, 0.0032051045, 0.030340835, 0.014112303, 0.010568847, 0.015847119, -0.051429316, 0.0015979384, -0.017618846, -0.04180785, -0.05369319, -0.01067958, 0.016449999, -0.01782801, -0.035286907, 0.02844607, 0.07209947, 0.02324162, -0.028470678, 0.037157066, -0.0074560205, 0.0071668844, -0.033121463, -0.011633114, 0.016929843, -0.066981144, -0.001501047, -0.0037095547, -0.021445286, 0.033219893, -0.021605235, -0.025197905, 0.0061456803, 0.005349018, -0.016942145, 0.045572773, -0.020054972, 0.009455366, 0.017717276, -0.03609895, -0.009855235, -0.02178979, 0.027215704, -0.008649476, -0.008797119, 0.02132225, -0.054480623, 0.008298822, 0.001354941, -0.0047861254, 0.023315443, -0.0025976112, 0.00893246, -0.014087696, 0.035016228, 0.02514869, -0.07195183, 0.027732458, -0.03341675, -0.027289527, 0.01155314, 0.0052136774, -0.027412564, -0.0034911647, 0.0007428337, 0.029454973, 0.018996857, -0.014284554, 0.025911516, 0.014309161, 0.0020331806, 0.010273559, -0.0275356, 0.00555818, 0.021039266, 0.023143193, 0.031546596, -0.017938742, 0.01003979, -0.03755078, 0.010390445, -0.006994633, -0.032653924, 0.02367225, 0.07761151, -0.019181412, -0.014518323, 0.009486125, -0.062305756, -0.044613086, 0.011454712, 0.023967538, 0.0007751308, -0.009849083, 0.035409946, -0.03417958, 0.01390314, 0.013004973, 0.0024530431, 0.0070807585, 0.038584292, -0.0051521594, 0.031202093, 0.015207329, -0.03700942, 0.014912041, -0.0015610274, 0.03885497, -0.05039581, 0.018024867, -0.035754446, 0.010968717, 0.006154908, -0.06343769, -0.0043401173, 0.008391099, 0.024939528, 0.024164395, 0.038658112, 0.009498429, 0.0018055626, -0.05930366, 0.008655627, 0.01675759, -0.032260206, -0.020965444, 0.004072513, -0.029356543, -0.008292669, -0.011546989, 0.021026962, 0.0053705494, -0.016068585, 0.0463356, -0.069737166, -0.008581806, 0.017803403, 0.007425261, -0.015428795, 0.013041884, -0.028593715, 0.0020900848, -0.03959319, 0.0015994763, 0.005459751, -0.04604031, 0.022614134, -0.038264394, 0.03341675, -0.002823691, 0.014210732, -0.0533979, 0.025037955, 0.0070807585, 0.00096429966, 0.0015717931, 0.0049706805, -0.0007593668, 0.04318586, 0.03981466, -0.0017317407, -0.0082065435, 0.09591936, -0.0032881543, -0.017348167, -0.0019316752, 0.009424606], [-0.009367895, 0.0011487029, -0.02216321, 0.05815111, 0.010736562, 0.032733, -0.018183723, 0.039564837, -0.0011803318, -0.00033479874, -0.001889106, -0.0036258183, -0.0009948716, -0.009586422, 0.003942107, 0.034228183, -0.060727425, 0.015676416, -0.01734412, -0.02035749, -0.028914535, -0.046511687, -0.055666804, -0.0053999103, 0.014503273, -0.025326096, -0.0188163, 0.0139627075, 0.002899792, 0.060635414, 0.024313973, 0.024106948, 0.05529876, -0.008959595, 0.027028304, 0.014997833, -0.0036603224, 0.052078366, -0.012364011, 0.0013104414, -0.020507008, -0.0053769075, -0.016343499, -0.041658092, -0.013008091, -0.005917473, 0.010431776, -0.031927902, -0.019264854, -0.0077749505, -0.021082077, -0.026890287, -0.008309766, -0.029075556, -0.042187158, 0.0035194303, 0.004988735, -0.0040456196, 0.05194035, 0.0023261595, -0.0034475464, 0.058657173, 0.07871562, 0.0073321466, 0.022013692, -0.00047587068, -0.020553013, 0.02339386, 0.031007791, 0.052308396, 0.016067464, -0.004140506, 0.027879408, 0.0027617752, 0.007993477, -0.046281658, 0.069836535, 0.014261744, 0.0073263957, 0.012064975, 0.025947172, -0.0278104, -0.005928975, -0.017804177, -0.0006501889, -0.0286385, 0.021243097, -0.122466974, -0.024797032, -0.028661504, 0.015480893, -0.0014132353, 0.021806667, 0.016895566, -0.023370856, 0.019448878, 0.018505763, 0.035056286, -0.015020836, -0.02216321, -0.0023175334, -0.0139052, -0.043567326, -0.050238144, -0.0063200225, 0.044625457, 0.06390181, -0.0012263374, -0.05686295, -0.013675172, -0.0013068473, -0.00079791003, -0.04260121, 0.022416241, -0.010759565, 0.028063431, -0.039288804, -0.059347257, -0.04522353, 0.008930841, -0.07337897, -0.053044487, 0.06160153, -0.004833466, 0.008614553, 0.026223207, -0.013008091, 0.046166644, 0.027442355, 0.035999402, -0.054516666, -0.030501729, 0.043981377, 0.054332644, 0.09141318, 0.028086433, 0.044970497, -0.039564837, -0.08023381, -0.010437526, -0.08142996, 0.001746776, 0.0045948117, 0.028270457, -0.016803555, -0.008482287, -0.021933181, -0.02838547, -0.038897756, -0.03404416, -0.039334808, -0.039725855, -0.008033732, 0.02330185, 0.011346137, -0.014422763, 0.010943588, 0.010126988, 0.024152953, 0.030133683, 0.037310563, -0.047569815, -0.015273867, 0.018954318, -0.0028135316, -0.08722667, 0.014112226, 0.0048162136, -0.041773107, 0.0072458857, 0.0070676142, -0.012525031, 0.034343198, -0.006601807, -0.047339786, 0.020645024, 0.005397035, 0.011788941, 0.012502029, -0.05792108, -0.05102024, 0.044924494, 0.06542, 0.013939704, 0.008660559, 0.03981787, 0.04720177, 0.021553636, 0.016573526, -0.058611166, 0.009166621, 0.010000473, -0.024175955, 0.022588762, -0.003942107, -0.021565137, -0.015722422, -0.038345687, -0.025142074, -0.011093106, 0.0033900396, -0.04547656, 0.018931314, -0.0294436, -0.031030795, 0.04124404, -0.002416733, 0.0016389504, -0.0049053496, 0.00851104, -0.0012486214, 0.045085512, 0.031191813, -0.016159475, -0.0072343843, 0.019414373, -0.052032363, -0.009891209, -0.014756304, -0.054746695, 0.033676118, -0.03075476, 0.014974831, -0.022749782, 0.033492096, 0.0014290498, -0.0020817546, -0.0013995774, 0.0062280116, 0.0023074695, -0.0028926036, -0.048305906, -0.026315218, 0.021174088, -0.060635414, -0.024198959, -0.01947188, -0.027856406, 0.052032363, -0.0061820056, 0.01774667, -0.003099629, -0.057277, -0.0060899947, 0.042739224, 0.038966764, 0.0066535636, 0.036666483, -0.02069103, 0.024797032, 0.01104135, 0.03017969, 0.008401778, 0.01791919, -0.010771067, 0.072044805, 0.021001568, -0.0021910178, -0.0121684875, 0.04432642, -0.0392658, 0.033745125, -0.038782742, 0.06127949, -0.035240307, -0.037218552, -0.0018661031, -0.05299848, -0.05511474, -0.00637753, 0.06753626, -0.064499885, 0.018252732, -0.0070618633, 0.052032363, 0.011846448, 0.07917568, 0.027051307, -0.038322683, 0.042394184, -0.01659653, 0.049502052, 0.022726778, 0.011938459, 0.013836192, 0.0076771886, -0.017942194, -0.036137417, -0.05079021, 0.006693818, 0.008804326, -0.008884836, 0.041129027, 0.007056113, 0.046833728, 0.023037316, 0.0068203337, -0.0034532973, -0.011834946, 0.023186835, -0.021404117, -0.041865118, -0.051664315, -0.013560158, -0.015285369, 0.049778085, 0.008367273, 0.08129194, 0.017758172, 0.013192113, 0.063165724, -0.024590006, -0.03949583, -0.015446388, -0.0016188229, -0.008119993, 0.028454479, -0.008442032, 0.023290347, -0.022853294, -0.027350344, -0.047339786, -0.13350832, 0.0228993, 0.066294104, 0.012122482, -0.03779362, -0.022853294, 0.006590306, 0.017792676, -0.057369012, -0.043314297, 0.0441654, 0.013778685, -0.054516666, -0.07738146, 0.021220094, -0.05529876, 0.03337708, -0.042440187, 0.01211098, 0.045729592, -0.036022402, -0.02567114, 0.0005060619, -0.010362767, 0.008229256, 0.03616042, 0.030294703, 0.01864378, 0.0013902325, 0.015388882, 0.04161209, -0.0030191191, -0.012145485, 0.022485249, 0.012801065, -0.0261772, -0.012272, 0.019977942, 0.06077343, -0.034113172, 0.027948417, 0.033837136, 0.007556424, -0.03908178, -0.021404117, -0.024336975, -0.014457268, -0.014158231, -0.050514176, 0.05488471, -2.1913324e-05, -0.019207349, 0.039633844, -0.04858194, 0.037402574, 0.006665065, -0.051756326, 0.013882197, 0.022519752, -0.04057696, -0.020058453, 0.013571659, -0.009413901, 0.03673549, -0.040922005, 0.011604919, 0.017689163, 0.0034763, -0.0095231645, 0.011185117, -0.027994422, 0.00036570878, 0.015101346, 0.03696552, -0.001893419, 0.024636012, 0.023600886, 0.04964007, -0.026936293, -0.005259018, -0.029328587, -0.04844392, 0.062521644, -0.044280414, -0.01832174, -0.001245746, 0.018586272, 0.056816947, -0.01448027, 0.045016505, -0.009960217, 0.013491149, 0.022910802, -0.010126988, -0.010086733, 0.04326829, -0.025004057, 0.011599168, 0.041497074, -0.07324095, -0.06440788, 0.05773706, -0.03940382, 0.031674873, -0.036114417, 0.04589061, -0.022048196, -0.031260822, -0.02886853, 0.004750081, -0.011426647, -0.041658092, -0.0061072465, -0.037172545, -0.049686074, -0.059577283, 0.010776818, 0.037080534, 0.0051094997, -0.015135851, 0.037241552, 0.0026496365, -0.02102457, 0.025372103, -0.07880764, -0.0067858296, 0.022266721, -0.009068859, -0.009931464, -0.032364957, -0.046097636, -0.029627623, 0.028822524, 0.005742077, 0.0031830142, 0.026453234, 0.02649924, -0.07715143, 0.019575393, 0.0062855184, 0.06477592, 0.0012824067, 0.047937863, -0.00793597, -0.03875974, 0.020322984, 0.00494848, 0.015434887, 0.01382469, 0.023623887, -0.034458213, 0.009689935, -0.026844282, -0.06339575, -0.015434887, -0.031605866, 0.026200203, 0.035355322, -0.009224128, -0.0785316, -0.03648246, 0.035286315, 0.002106195, 0.0037983393, 0.018701287, 0.031674873, 0.08050984, 0.059669293, 0.0014376758, 0.029811645, -0.008718066, 0.0017108342, -0.009914212, -0.037126537, -0.030938782, -0.028270457, 0.01275506, -0.035769373, 0.012225995, 0.051756326, -0.009643929, 0.037126537, 0.011150613, 9.4437324e-05, -0.040991012, -0.03574637, 0.033791132, 0.0056960713, 0.008039483, -0.024728023, -0.020967063, 0.023577882, -0.025257088, -0.030087678, 0.015664915, 0.032272946, -0.004660945, -0.005839839, -0.0014836814, -0.056632925, -0.03475725, -0.008775573, -0.035677362, 0.003924855, 0.032502975, 0.01030526, 0.027902411, -0.056126863, -0.017976698, 0.018310238, 0.022795787, 0.017838681, 0.00519576, -0.018425252, 0.047799844, 0.024774028, -0.001516748, 0.0057535786, -0.017125593, 0.036137417, 0.007510418, 0.02870751, 0.0015081218, 0.043567326, 0.058703177, -0.009764694, -0.008735318, 0.02838547, -0.024152953, 0.01676905, 0.00948866, 0.04646568, 0.027764395, -0.016412506, -0.027833402, -0.052492417, -0.0044941744, -0.011409394, 0.02438298, -0.010334013, 0.086168535, 0.05539077, -0.014836814, -0.06399383, 0.032019913, 0.008608802, -0.008252259, 0.04204914, 0.02723533, 0.055022728, 0.019782418, -0.0054344144, -0.01686106, 0.076185316, 0.011811944, -0.014227239, -0.006739824, -0.017275112, -0.02012746, 0.007050362, -0.02216321, -0.020978564, -0.01725211, 0.019356867, -0.017447634, -0.020081455, -0.05120426, -0.0040542455, 0.006199258, 0.012697552, 0.006417785, -0.01104135, 0.020518508, 0.0023002813, 0.0028063431, -0.015745426, 0.018620776, 0.009787696, -0.03132983, -0.016585028, 0.0155038955, -0.013767183, -0.035769373, -0.007510418, 0.017677661, -0.10691707, 0.016009957, -0.012766561, -0.081751995, -0.009971719, 0.04858194, -0.019575393, 0.007826707, -0.03747158, -0.022266721, 0.076047294, 0.0072458857, 0.07080266, 0.05571281, 0.012007468, 0.042992257, -0.031214816, 0.030455723, -0.016677039, -0.013353133, 0.010834324, -0.01742463, 0.0018790422, -0.0011271378, -0.039794866, 0.0010926336, -0.03475725, 0.018839303, 0.006268266, 0.015998457, 0.037977643, -0.010167243, -0.0033411584, 0.015181856, 0.03903577, 0.0047817095, 0.076829396, -0.03990988, -0.031375837, 0.028408473, -0.010167243, 0.04922602, -0.0057564536, -0.016700042, 0.03779362, -0.0072746393, 0.039771862, 0.029029548, -0.03075476, -0.015181856, 0.02675227, -0.02347437, 0.025165077, -0.033147052, -0.059347257, 0.023646891, 0.023428364, 0.017298115, -0.0008841706, -0.018379247, -0.01480231, -0.023784908, -0.013422141, 0.08350021, -0.03648246, -0.03149085, -0.042256165, -0.011926958, -0.026039183, -0.00031988285, 0.01906933, -0.021783663, -0.0045919362, -0.017850183, -0.02649924, -0.03264099, -0.026039183, -0.009333391, -0.015952451, -0.07314894, -0.019494884, -0.037172545, 0.0013492587, 0.018988822, -0.03583838, -0.032940026, 0.060129352, -0.021864174, -0.0032980281, 0.008194752, -0.016987577, 0.026729267, -0.002855224, 0.00046365045, -0.03043272, -0.02470502, -0.009373646, 0.03174388, 0.027626378, -0.014020214, 0.013755682, -0.060727425, -0.0036574472, 0.041520078, 0.017769672, 0.060497396, 0.057461023, 0.023048818, 0.019828424, -0.014204237, 0.024359979, -0.06528198, 0.029098557, -0.028178444, -0.0023577882, -0.006693818, -0.01594095, 0.04303826, -0.042647213, 0.015388882, -0.021611143, 0.032525975, -0.003582688, 0.0023922925, -0.016228484, -0.010011974, 0.01857477, 0.009005601, 0.0010164367, -0.030938782, -0.012007468, 0.020253977, 0.011443899, 0.020599019, -0.04211815, -0.038207673, -0.02184117, 0.009758943, -0.032364957, 0.013353133, -0.029880654, -0.019402873, -0.014836814, -0.015664915, -0.02985765, 0.01791919, -0.013077099, 0.018781796, 0.039978888, -0.013215115, 0.0012241809, 0.0010796945, -0.035769373, -0.04566058, 0.011880953, -0.009120615, -0.01496333, 0.025855161, -0.0045200526, 0.013341631, -0.060267366, 0.005051993, 0.037655603, 0.030570738, 0.047661826, -0.03484926, -0.0018704162, 0.013767183, -0.02142712, 0.0130886, -0.017608652, -0.0016820807, -0.029489605, 0.015975453, -0.0044855485, 0.0029386093, -0.027120316, 0.027212327, 0.022715278, -0.019080833, -0.022922302, 0.012156987, -0.014066219, 0.03084677, -0.013111603, 0.029305583, 0.003844345, 0.06560402, 0.00082666357, 0.066018075, -0.0129390815, 0.057967085, -0.0040772483, 0.015009335, -0.047799844, 0.010518036, 0.0425552, 0.023899922, 0.013433643, -0.02151913, -0.0066478127, -0.047477804, 0.029374592, 0.018022703, -0.0033037788, -0.0010394396, 0.009546167, 0.00087626337, 0.0051382533, -0.025119072, -0.007188379, 0.009327641, 0.03751759, -0.0025518744, -0.038828745, 0.014008713, 0.018862305, 0.03277901, 0.037747614, 0.0425552, -0.00568457, -0.0015109972, -0.017114092, -0.037126537, -0.053596552, -0.025717145, 0.0034159175, -0.0048794714, 0.028661504, 0.017850183, 0.040415943, 0.023002813, 0.011374891, -0.04303826, -0.007159625, -0.02110508, -0.021576637, -0.028201448, 0.026269212, -0.013537155, -0.00035384795, 0.0012126795, 0.0719528, 0.02870751, 0.056540914, -0.01816072, -0.018873807, 0.0014908698, -0.008482287, -0.07383902, -0.00039715794, 0.008643307, 0.0030162437, 0.03565436, 0.03075476, 0.021461625, -0.031375837, -0.00932189, 0.0026036308, 0.0114899045, -0.04214115, -0.0037523338, -0.014974831, -0.018206727, -0.008741069, 0.0043159025, 0.031283826, 0.011553163, -0.041911125, 0.009954467, -0.031812888, -0.011846448, 0.007268889, 0.0037523338, 0.0062107593, -0.06749025, -0.0060324874, -0.024912046, -0.012950583, 0.0069238464, -0.0036171922, -0.007188379, -0.009971719, 0.009942966, -0.038644724, 0.053366523, -0.007964724, 0.02240474, -0.01071356, -0.017137095, 0.007159625, -0.029558614, 0.054102615, 0.008729567, -0.004971483, -0.0036689485, -0.011593417, 0.016619531, -0.020921057, 0.009114864, 0.014583783, -0.03549334, -0.017896188, 0.0010394396, 0.03852971, 0.035286315, -0.03827668, 0.031536855, 0.008315517, -0.009459906, -0.005928975, 0.01594095, -0.036344443, 0.01790769, 0.028109437, 0.03657447, 0.020161966, -0.0009891209, 0.009390898, -0.009442654, 0.028270457, 0.016941572, -0.0108918315, 0.019345365, 0.027534366, 0.015365879, -0.0026798276, 0.01857477, -0.015515397, 0.020806044, 0.0046005626, -0.0141352285, -0.032848015, 0.03372212, 0.09642779, -0.02355488, -0.0014247367, 0.014537778, -0.067122206, -0.0054861708, 0.045407552, -0.007412656, 0.005986482, -0.0011091669, 0.023853917, -0.041911125, 0.0037149542, -0.0012471838, 0.018298738, 0.018425252, 0.04973208, 0.009793447, 0.031145807, 0.004916851, -0.022979809, 0.03091578, 0.0035021782, 0.05585083, -0.043521322, 0.03282501, -0.029052552, 0.0026438858, 0.023669893, -0.06500595, 0.008499539, 0.007205631, 0.024175955, 0.0012306505, 0.015009335, -0.0121684875, 0.0015843187, -0.070480615, 0.040277924, 0.03754059, -0.04382036, 0.00083960267, 0.010535288, -0.021415617, 0.011225373, -0.03165187, 0.019747915, 0.0048133386, -0.033009037, -0.004295775, -0.041865118, -0.004353282, 0.018988822, -0.015952451, -0.010437526, 0.008781323, 0.011869451, 0.0014031716, -0.03247997, 0.026384225, -0.015929447, -0.047891855, 0.023669893, -0.05750703, 0.0012917516, -0.006308521, -0.014215738, -0.06325773, 0.008482287, -0.0057363263, 0.03001867, 0.008557046, -0.019391371, 0.03593039, 0.026062187, 0.040300928, -0.0010013412, 0.020012446, 0.05792108, 0.01923035, -0.03526331, 0.00368045, -0.006969852], [-0.027086528, 0.023026071, -0.022471227, 0.026002059, -0.003707374, 0.016847115, -0.04822108, 0.036266692, -0.007887627, 0.0589649, -0.025005858, -0.0049084877, -0.044892013, -0.02943201, -0.005091334, 0.038158208, -0.064210705, 0.040806334, -0.025295893, -0.004697268, 0.0015778408, -0.07445012, -0.03929312, 0.016191388, 0.008845996, -0.0064879046, -0.015964406, 0.016910166, 0.013303672, 0.006765327, 0.04020105, 0.03389599, 0.036291912, 0.010447481, 0.028473642, 0.025535485, 0.0059046866, 0.005535841, 0.015396951, 0.019760052, -0.060730316, 0.0006687302, 0.018726021, -0.05336601, -0.05215544, -0.041083757, 0.024160981, -0.015800474, -0.0072445115, 0.0073327823, -0.01959612, -0.02938157, -0.0019293476, -0.0174524, -0.0044324556, -0.012887538, 0.07727479, -0.082419716, 0.06940608, -0.046455666, -0.060679875, 0.017906364, 0.058359616, -0.031121766, -0.0067401067, 0.018171176, -0.028070118, -0.0002492468, 0.027969236, 0.057149045, 0.008934267, -0.00981067, 8.255685e-05, 5.4036314e-05, 0.0042464565, -0.072735146, 0.061688684, 0.02726307, -0.023732238, -0.01736413, 0.028776284, -0.011260834, -0.0015668068, -0.028675403, -0.0049904534, -0.02411054, 0.046455666, -0.14395708, -0.041689042, 0.002580345, 0.022357736, -0.006216787, 0.03371945, 0.011475205, -0.004735098, 0.020478828, 0.012975809, 0.008959487, -0.023467425, 0.012048965, 0.012206592, -0.053214688, -0.02066798, -0.04557296, 0.0392679, 0.0391418, 0.016758844, -0.023618747, -0.0093567055, 0.04433717, 0.009344095, -0.0064563793, 0.007547154, 0.0032817826, -0.002659158, 0.035333544, 0.021487636, -0.02832232, -0.038561735, -0.034551717, -0.07677039, -0.03470304, 0.07959505, 0.024135761, 0.024652775, 0.007402138, 0.022446007, 0.049608193, -0.0031840543, -0.022357736, -0.019217817, 0.0055925865, 0.032433216, 0.051398832, 0.05482878, 0.018839512, 0.045068555, -0.009091893, -0.03177749, -0.008877521, -0.04791844, 0.009589992, 0.010018737, 0.030894782, -0.03732594, 0.007168851, -0.020617539, -0.042395208, -0.034299515, -0.019734832, -0.030491259, -0.037477262, -0.013757636, 0.008398337, 0.030037295, -0.006292448, 0.039847966, 0.031474847, 0.0133667225, 0.04690963, 0.025321113, -0.06637965, 0.016128337, 0.03487958, 0.022181194, -0.070414886, 0.035762288, 0.0025488196, -0.054072175, 0.012528149, -0.014728615, -0.012856013, 0.057098605, 0.014262041, -0.04037759, 0.009167554, 0.03493002, 0.008360507, -0.00653204, -0.04791844, -0.01856209, 0.06854859, 0.025800297, -0.04032715, 0.027111748, 0.019192597, 0.0415125, -0.017111927, 0.025510265, -0.057199486, -0.018473819, 0.011014936, -0.024224032, 0.01948263, -0.010592497, 0.0014627734, -0.019306088, -0.026960427, -0.013240621, -0.010025042, -0.016657963, -0.030415598, 0.019192597, -0.019129544, -0.011273444, 0.038032107, 0.0674389, 0.033215046, 0.0031273086, 0.016746234, 0.0174524, -0.004164491, 0.023568306, -0.025081519, -0.044160623, 0.04910379, -0.05356777, -0.014388142, -0.03583795, -0.03470304, 0.05099531, -0.008373117, 0.006027635, -0.016708404, 0.0093630105, 0.028952826, 0.0076921703, 0.006311363, 0.014652954, 0.022357736, -0.012402048, -0.026657784, -0.008757725, 0.022269465, -0.071373254, 0.0054412647, -0.039520103, -0.004489201, 0.027994456, 0.0055106203, 0.00021358383, -0.036544114, -0.047187053, 0.0026118702, 0.014224211, 0.047615796, 0.023820508, -0.014375532, -0.0107753435, -0.0056178067, 0.032130573, 0.02073103, -0.011424765, 0.05467746, 0.022029871, 0.10885052, 0.03835997, -0.025749857, -0.0195709, 0.02607772, -0.000536324, 0.05750213, -0.034425616, 0.04940643, -0.010466396, 0.0068094623, 0.023152173, -0.061486922, -0.069052994, -0.0043883203, 0.058662258, -0.037956446, 0.022496447, 0.016544472, 0.026329922, -0.0054286546, 0.05240764, 0.013278452, -0.022660378, 0.019974424, 0.0062451595, 0.020907572, 0.008417252, 0.01040965, 0.009003622, 0.0031273086, -0.0076858653, -0.039419223, -0.0076038996, 0.014451193, -0.0030311565, -0.024677996, 0.027868355, -0.009583687, 0.04128552, 0.039646205, -0.007521934, 0.0036191032, -0.012774047, 0.010170058, 0.017591111, -0.015207799, -0.03061736, -0.023429595, 0.011531951, 0.033240266, 0.012717302, 0.078788005, -0.027590932, -0.060377233, 0.06461423, -0.0017070944, -0.026531683, -0.051651035, 0.02728829, -0.016002236, 0.011727408, 0.018032465, 0.03830953, -0.032962844, -0.042874392, -0.028095338, -0.11228047, 0.010510531, 0.043479677, 0.015460001, 0.01139324, -0.01625444, -0.032004472, 0.02741439, -0.04552252, 0.006248312, 0.002569311, 0.01200483, -0.041134197, -0.11137254, -0.021664178, -0.06890167, -0.0022603632, -0.01861253, -0.00300436, 0.02948245, -0.01530868, -0.027969236, -0.0023044986, -0.026708225, -0.0073390873, 0.0055673663, 0.020882351, 0.023908779, 0.0016156711, 0.030390378, 0.017603721, 0.009583687, 0.015182579, -0.0043788627, -0.009407146, -0.031146986, -0.013921567, 0.0035781204, 0.06612745, -0.04572428, 0.0026497005, 0.07687127, 0.0219416, -0.036594555, -0.05346689, -0.012723607, -0.0073580025, -0.0023454814, -0.04579994, 0.051802356, -0.024148371, -0.0011065376, -0.044110183, -0.016380541, 0.0613356, -0.009413451, -0.026456023, 0.030289497, 0.004523879, -0.041840363, -0.020592319, 0.025762467, 0.012874928, 0.0228117, -0.023782678, 0.0051512322, 0.014842106, -0.03916702, 0.010428566, 0.0049305554, 0.0043347273, -0.0028530387, 0.030339938, 0.0050219786, -0.041714262, 0.04706095, 0.00066439545, 0.025371553, -0.022483837, 0.046405226, -0.042218667, -0.034602158, 0.03820865, -0.033215046, 0.0187008, 0.008814471, -0.025901178, 0.052710284, -0.049860395, 0.021462416, -0.02190377, 0.020050084, 0.03919224, 0.03472826, -0.012704692, 0.045926042, -0.023139562, 0.025901178, 0.023795288, -0.015384341, -0.029154588, 0.04158816, -0.05876314, 0.04554774, -0.067943305, 0.011437375, -0.0059046866, -0.032181013, 0.014489023, 0.0056178067, -0.03273586, -0.005674552, 0.007187766, -0.046001703, -0.0039564236, -0.02819622, -0.006418549, 0.07233162, -0.032811522, -0.018877342, 0.0022067702, 0.009974602, -0.025901178, -0.003010665, -0.0959882, -0.02291258, 0.04279873, -0.008341592, 0.00022048, 0.005214283, -0.05351733, -0.0456234, 0.026859546, 0.0021783975, -0.012250727, -0.006677056, 0.04244565, -0.10133489, -0.0005213495, 0.012244422, 0.06103296, -0.038006887, 0.032407995, -0.020100525, -0.058006532, 0.03919224, 0.008934267, 0.011090597, -0.0014596209, 0.0030437666, -0.0195709, 0.03371945, -0.0070238346, -0.028044898, -0.00095048745, -0.0011751051, 0.024211422, 0.011141038, -0.018814292, -0.013593704, -0.015750034, 0.0374016, 0.021500247, -0.00029732287, 0.012975809, 0.006346041, 0.06537084, 0.009142334, -0.031399187, 0.021109333, -0.026708225, -0.0056051966, -0.009167554, -0.060578994, -0.024791487, -0.027944015, 0.0024999555, -0.013681975, 0.050188262, 0.06491687, 0.048801146, 0.03707374, 0.0026607343, -0.00045199384, -0.0062703798, -0.014224211, 0.016872335, 0.016897555, 0.026002059, -0.027540492, -0.03624147, 0.028877165, -0.0068599028, -0.055030543, -0.032761082, 0.03195403, 0.014741225, 0.01414855, -0.009968297, -0.040579353, -0.05669508, -0.027767474, -0.018852122, -0.0033542907, -0.008228101, 0.020403167, 0.038132988, -0.030819122, -0.010693378, -0.014640344, -0.024879757, 0.02192899, 0.007950678, -0.016960606, 0.041865584, 0.005589434, -0.012805573, -0.004722488, -0.024942808, 0.03185315, 0.008871216, -0.006068618, -0.022193804, 0.029885974, 0.047161832, -0.0038114074, -0.04045325, 0.023215223, -0.021046283, 0.056795962, 0.015195189, 0.023391765, 0.023643967, -0.020012254, -0.04577472, -0.025661586, 0.008612709, -0.009924161, -0.008171355, 0.024778876, 0.073895276, 0.018410768, -0.0306678, -0.043504898, 0.016645353, 0.0034362564, -0.0009772839, 0.006260922, -0.0014572565, 0.05790565, -0.016544472, 0.005942517, -0.029709432, 0.06864947, 0.004189711, -0.039343562, -0.018095516, -0.023719627, -0.038687836, 0.0037830346, 0.00032096685, -0.0374016, 0.013164961, 0.013190181, 0.0114878155, -0.04938121, -0.032004472, -0.023391765, 0.02185333, 0.011077987, 0.0050503514, 0.007925457, -0.009766535, -0.00031604103, 0.02286214, 0.0025125656, -0.0063964813, 0.020529268, -0.020541878, -0.03596405, 0.02287475, 0.005816416, -0.032155793, -0.009703484, 0.036392793, -0.051449273, 0.05639244, -0.0030989358, -0.08312588, 0.018915173, 0.05099531, -0.0144259725, 0.011891339, -0.032458436, 0.00018521107, 0.05477834, 0.034324735, 0.050642226, 0.047767118, 0.012048965, 0.0671867, -0.050112598, 0.02400966, 0.007887627, -0.012496624, 0.005280486, -0.02822144, -0.011185173, -0.038536515, -0.017830703, -0.023379155, -0.014968207, -0.0070112245, 0.017792873, 0.01411072, 0.02733873, 0.0012799267, 0.015926575, 0.024816707, 0.017250638, 0.012710997, 0.12761436, -0.028978046, -0.043404017, 0.038687836, -0.010705988, 0.059570186, -0.028650183, -0.036544114, 0.007282342, 0.0042685242, 0.036771096, 0.019860933, -0.038057327, -0.010617717, 0.026481243, -0.025068909, -0.010170058, -0.0260525, -0.015724814, 0.0067022764, 0.016733624, 0.025573315, 0.0016440438, -0.04917945, -0.051701475, -0.009482807, 0.022622548, 0.07096973, -0.040579353, -0.05129795, -0.050087377, -0.010012432, -0.02832232, 0.007534544, 0.032962844, -0.036897197, -0.009495417, -0.033341147, -0.033114165, 0.002138991, -0.049835175, 0.008612709, -0.013442383, -0.04791844, 0.010743818, -0.0045081163, -0.030012075, 0.012465099, -0.04471547, -0.023190003, 0.048397623, 0.034299515, -0.029885974, 0.0008291151, -0.04817064, -0.0077741365, 0.009482807, -0.03387077, -0.03167661, -0.026683005, -0.036317132, 0.024841927, 0.010851004, -0.0025425146, 0.01416116, -0.043328356, -0.01033399, 0.04453893, -0.0049557756, 0.0282971, 0.097804055, -0.0064815995, -0.008997317, -0.026985647, 0.016519252, -0.07071753, 0.03470304, 0.004476591, 0.013442383, -0.033114165, -0.0056178067, 0.020125745, -0.0134802135, 0.038057327, 4.3002463e-05, 0.050894428, -0.0077993567, 0.01851165, -0.039923627, 0.015094308, -0.0024022271, 0.0126668615, 0.0026244803, -0.009211689, -0.027061308, 0.019217817, 0.015674373, 0.035636187, -0.024854537, -0.039444443, -0.05346689, -0.011361714, -0.035333544, 0.03470304, -0.04433717, -0.022546887, -0.04007495, -0.006175804, -0.012080491, -0.0048769624, -0.05104575, 0.022042481, 0.043126594, 0.0030768681, 0.024690606, 0.009829585, -0.029608551, -0.023442205, -0.0033542907, -0.010088093, -0.022534277, 0.031474847, -0.011033851, 0.006897733, -0.044034522, 0.01413594, 0.025283283, 0.021411976, 0.077526994, -0.012736217, 0.010119618, -0.023089122, -0.012509234, 0.00088113185, -0.012622726, -0.030743461, -0.0023281425, -0.009161249, 0.012679472, -0.0064563793, -0.0059582796, 0.039696645, -0.008782946, -0.012193982, -0.0154852215, 0.00599611, -0.0029728347, 0.03255932, 0.012622726, 0.018448599, -0.0033070028, 0.036720656, -0.018738631, 0.024677996, -0.036771096, 0.04040281, -0.011185173, 0.007414748, -0.05891446, -0.021563297, 0.053113807, -0.014463803, 0.022118142, 0.009394536, -0.036342353, -0.04378232, 0.040024508, 0.015800474, 0.023126952, -0.012080491, 0.0073643075, -0.007181461, 0.036342353, -0.0030989358, -0.011386935, -0.010523141, 0.021411976, -0.017061487, -0.05755257, 0.017729823, -0.021147164, 0.017792873, 0.04441283, -0.010882529, -0.0020822454, -0.008833386, 0.0050755716, -0.03351769, -0.020365337, -0.02404749, 0.011002325, -0.011292359, 0.058309175, 0.0015463154, 0.071575016, 0.010813174, 0.014274651, -0.05346689, -0.011664357, 0.011122122, 0.018751241, -0.03621625, 0.021613738, 0.0042811343, 0.021475026, 0.01305147, 0.033013284, 0.015094308, 0.0091297235, 0.008827081, -0.011033851, -0.0077552213, -0.011462595, -0.049683854, 0.0036632386, 0.0020002795, 0.010497921, 0.02607772, -0.008644234, 0.022282075, -0.060528554, 0.011090597, -0.015775254, -0.018057685, -0.066783175, -0.033189826, 0.009684569, -0.042193446, -0.024741046, 0.032382775, 0.032256674, 0.031474847, -0.003445714, 0.03268542, -0.0042212363, -0.0071562408, -0.020163575, 0.0037641195, -0.0021358384, -0.072583824, -0.021777669, -0.009917856, -0.040024508, 0.017641552, 0.0031541053, -0.008757725, 0.012212897, -0.001639315, -0.002091703, 0.046632208, 0.0028230897, 0.020907572, 0.008310067, 0.007187766, -0.015724814, -0.033442028, 0.014476413, 0.009400841, 0.01945741, -0.0093567055, -0.025648976, 0.003319613, -0.016153557, 0.019873543, 0.015964406, -0.0022335667, 0.015006037, -0.012792963, 0.027641373, 0.022370346, -0.06476555, 0.016985826, -0.011260834, -0.021172384, 0.03197925, 0.011286054, -0.022244245, 0.01535912, 0.00976023, 0.05649332, 0.02612816, -0.021096723, 0.021096723, -0.011910254, 0.023934, 0.029078927, -0.027187409, 0.024173591, 0.023555696, 0.03177749, 0.019860933, 0.016809285, -0.025258062, -0.0068157674, -0.006229397, -0.019016054, -0.030894782, 0.05452614, 0.057451688, -0.023240443, -0.025434604, 0.002258787, -0.0676911, -0.014652954, 0.021714618, 0.0523572, 0.0064280066, -0.03064258, 0.0008519709, -0.039394002, -0.0013169689, -0.0086568445, -0.038006887, -0.00873881, 0.005680857, 0.013732416, 0.01535912, 0.0017338909, -0.021575907, 0.009154944, 0.0022067702, 0.036266692, 0.0026323616, 0.018927783, -0.019381749, 0.04582516, 0.04438761, -0.04917945, 0.0073706126, 0.024387963, 0.030768681, 0.013442383, 0.021084113, -0.030163396, 0.0043883203, -0.077577434, -0.0028656488, 0.019230427, -0.047741897, 0.00023860703, 0.0013421891, -0.0061600413, -0.021298485, -0.036972858, 0.040755894, 0.030188616, -0.010743818, 0.025459824, -0.07283603, -0.021702008, 0.012597506, 0.0042401515, 0.0010970801, 0.016910166, 0.0069229533, -0.013972008, -0.013328892, 0.0075030187, -0.02607772, -0.031348746, 0.0022934647, -0.02819622, 0.04910379, 0.0011049614, -0.009041453, -0.050617006, 0.005655637, 0.008612709, 0.014262041, -0.02197943, -0.001692908, 0.024551895, 0.045169435, 0.008852301, 0.01143107, 0.027187409, 0.10784171, 0.0007778865, -0.014753835, 0.027187409, 0.004656285], [0.010355329, 0.018373888, -0.010491739, 0.04967711, 0.001801507, 0.037530653, -0.013463113, 0.055607997, 0.0083091725, 0.0040893466, -0.043627605, 0.0010549566, -0.022228964, -0.022739021, 0.014257852, 0.052856065, -0.05736354, 0.03382978, -0.03897779, -0.018895807, 0.013724073, -0.03390095, -0.08459817, 0.031884447, 0.0153372735, -0.017401222, 0.00615033, -0.006500252, 0.016748825, -0.00488112, 0.006179984, 0.025882391, 0.07790813, -0.010657804, 0.0167251, -0.042227916, 0.006719695, 0.005643239, -0.035466705, 0.0033212968, -0.03250126, 0.010254503, -0.027329527, -0.027709104, 0.017614735, -0.022169655, -0.020449698, -0.017496116, -0.027898893, -0.027495593, -0.014245991, -0.017745214, -0.0069569303, -0.027993787, -0.04232281, 0.0044956123, 0.061396543, -0.022110347, 0.035727665, -0.031172741, 0.007366162, 0.028254746, 0.039096408, -0.0334502, 0.04239398, 0.017840108, -0.005236973, 0.009341147, 0.030176353, 0.012644651, 0.013024228, 0.024553873, -0.023237215, -0.00195571, -0.018231547, -0.079806015, 0.08013815, 0.034802444, -0.027234633, -0.010479878, 0.02607218, -0.059119083, -0.02406754, 0.00198833, 0.0080066975, -0.056794174, 0.037981402, -0.12355224, -0.0009133566, 0.0064883903, 0.009103912, 0.023996368, 0.032003067, -0.0030929577, -0.03890662, -0.008765851, 0.032406367, 0.0006253379, 0.007039963, -0.0097147925, -0.027258357, -0.055655442, -0.046379536, -0.08018559, 0.038218636, 0.049772006, 0.037151076, -0.036344476, -0.008902261, 0.0302238, 0.02614335, 0.002765276, -0.04438676, 0.04272611, -0.025289303, 0.04747082, -0.03558532, -0.08564201, -0.03015263, -0.0013433459, -0.038598213, -0.049534768, 0.063294426, 0.01998709, 0.0011913669, 0.046047408, 0.04165855, 0.024245465, -0.010782353, 0.015254241, -0.02647548, 0.031172741, 0.014459503, 0.005838958, 0.06106441, 0.0061206752, 0.044837505, 0.016392972, -0.024909725, 0.021161405, -0.044078354, -0.01323774, -0.01952448, 0.029440923, -0.007449194, -0.017152125, -0.011221238, -0.048016462, -0.023083013, -0.013166569, -0.025526538, 9.443084e-05, 0.0043977527, 0.025621431, 0.03095923, -0.03449404, 0.036676604, 0.051574994, -0.039072685, 0.04085195, 0.0228695, -0.06932021, 0.024435254, 0.036961287, -0.002105465, -0.08953267, 0.0375781, -0.02948837, -0.035727665, 0.010005406, 0.030128906, -0.03382978, 0.019239798, 0.011120413, -0.050388817, 0.048728168, 0.019287245, 0.055560548, -0.054991186, -0.041065462, -0.03738831, 0.06637849, 0.022098485, -0.04787412, 0.0017169918, 0.025028342, 0.029369753, -0.0015983741, -0.009886788, -0.07420726, 0.020675072, 0.0054386235, 0.0019571928, -0.021968005, -0.035253193, -0.044078354, 0.0090446025, -0.032714773, -0.005812269, -0.0224662, -0.02574005, -0.023450727, -0.017080955, -0.02406754, -0.057031408, 0.03603607, 0.016464142, -0.042156745, 0.027092291, -0.016748825, 0.043295477, 0.02226455, -0.013498698, -0.01544403, -0.009530935, 0.00058641646, -0.045169637, 0.018943254, 0.036202133, -0.0719298, 0.07169256, -0.011790603, 0.038669385, -0.007947389, 0.008979363, 0.03890662, 0.007828771, 0.024221743, 0.003905489, 0.002025398, 0.028919006, -0.045952514, -0.013569869, 0.035395533, -0.057600774, -0.01170164, -0.013581731, -0.008647233, 0.05209691, -0.012680236, 0.020686934, 0.051005628, -0.021576567, -0.015491477, 0.026997397, 0.046687942, -0.023628654, 0.023355832, -0.013558008, -0.013320772, 0.020509006, 0.026167074, 0.06680551, 0.0066900407, 0.0056936517, 0.05522842, -0.013522422, -0.020580178, -0.027851446, 0.039357368, -0.046118576, 0.038218636, -0.010723044, 0.08047027, -0.035893727, -0.043414094, 0.047969013, -0.042014405, -0.06386379, -0.036534265, 0.052476488, -0.045359425, 0.0045845755, 0.021588428, 0.03729342, -0.022857638, 0.042488873, -0.00085182366, -0.017816385, 0.07050639, 0.021778217, 0.013249601, -0.002313046, -0.013154707, 0.03871683, 0.037672993, 0.008386274, -0.048040185, -0.015147486, 0.017282605, -0.0055513103, -0.010610357, 0.0453357, 0.027471868, 0.05356777, -0.003852111, -0.012276936, 0.0028127232, -0.04934498, 0.011458473, 0.012288798, 0.0074373325, -0.035087127, -0.03684267, 0.0091454275, 0.0019690546, -0.003777975, 0.10390914, 0.020841137, -0.013119122, 0.047020074, 0.012573481, -0.024292912, -0.064622946, 0.039428536, -0.03235892, 0.014613706, 0.03938109, 0.057648223, -0.046450708, -0.02366424, -0.02974933, -0.097741015, 0.023889612, 0.045074742, -0.0110017955, -0.038598213, 0.006399427, -0.052523937, 0.0023011842, -0.049629662, -0.037222248, 0.0026303483, -0.017223297, -0.03938109, -0.089627564, -0.008060075, 0.0037127354, 0.020900445, 0.008273588, -0.014435779, 0.023687962, -0.024553873, -0.046094853, -0.01724702, 0.016416695, 0.016274353, 0.030318694, 0.027305804, -0.00037494325, 0.0013515009, 0.038621936, 0.0522867, 0.017519841, -0.006974723, 0.024767384, -0.015384721, -0.027519315, 0.0021173267, 0.008949708, 0.04789784, -0.028942728, 0.044623993, 0.046189748, 0.01891953, -0.06675807, -0.02915624, -0.025289303, 0.014495088, 0.04666422, -0.055987574, 0.038337253, -0.017401222, -0.035015956, -0.0025295233, -0.025289303, 0.038360976, -0.0019097456, -0.031504873, -0.01437647, -0.011927014, -0.03169466, -0.008042282, 0.015396583, -0.021896835, 0.029108793, -0.054706503, -0.016819995, 0.043342922, -0.011660124, 0.024031954, 0.02460132, -0.021303747, 0.009269976, 0.04044865, 0.04673539, -0.024909725, 0.020366667, 0.039428536, 0.031386252, -0.01417482, -0.0052873855, -0.030081458, -0.02794634, 0.059546106, -0.038954064, 0.012739546, 0.00869468, 0.04085195, 0.062203143, 0.024055678, 0.04158738, -0.018658571, -0.00408045, 0.017887555, 0.016132012, -0.061159305, 0.03893034, -0.022359444, -0.024233604, 0.030911783, -0.06875084, -0.04118408, 0.044315588, -0.03055593, 0.07406492, -0.045762725, 0.029915394, -0.006612939, -0.05537076, -0.044457927, 0.0030455105, 0.024435254, 0.016867442, 0.005678824, -0.06599891, -0.04398346, -0.03430425, 0.01912118, 0.04414952, -0.009382663, -0.023711687, 0.02647548, 0.0019482963, -0.048301145, -0.00039699874, -0.067232534, 0.0043651327, 0.061491437, -0.014969558, -0.04519336, -0.035348088, -0.026167074, -0.004199068, 0.065904014, -0.020675072, 0.0047980878, -0.012846301, 0.016926752, -0.06604636, 0.046237197, 0.008564201, 0.058265034, -0.00021443864, 0.01966682, -0.01450695, -0.012834439, 0.026499202, -0.00015420307, 0.012253213, 0.011612677, -0.013913861, -0.05589268, 0.019737992, -0.017935002, -0.03437542, -0.027258357, -0.006340118, 0.030389866, -0.052002016, -0.023427004, -0.05945121, 0.0069332067, 0.07387513, 0.015728712, 0.019227935, -0.003603014, 0.034185633, 0.033924673, 0.010260435, 0.018943254, 0.0429159, 0.022964394, -0.006506183, -0.0037394243, -0.039096408, -0.03885917, -0.035348088, 0.038028847, -0.021968005, 0.021778217, 0.04386484, 0.051100522, 0.04566783, -0.019097457, -0.014044341, -0.007117064, -0.029037623, 0.035276916, -0.06903552, -0.01129834, -0.02406754, -0.004709124, 0.019773576, -0.03250126, -4.8049453e-05, -0.0018667467, 0.010912832, 0.042702388, 0.027851446, 0.015194933, -0.018694155, -0.006974723, -0.024008231, -0.019085594, -0.012644651, 0.011927014, -0.011155998, -0.003448811, -0.0064053577, -0.01905001, -0.012656513, -8.41908e-05, 0.017294466, 0.026688991, -0.02842081, 0.036012344, 0.041278973, -0.028847834, 0.01644042, -0.015088176, 0.07482407, -0.0032145407, -0.00215736, -0.01805362, 0.030271247, 0.032952007, 0.02386589, -0.01645228, 0.02989167, -0.08445583, 0.032382645, -0.005370418, 0.0355616, -0.004285066, -0.0011431784, -0.046687942, -0.024387807, 0.016547175, -0.0054060034, 0.010592564, -0.0003465862, 0.054991186, 0.07743366, -0.017519841, -0.03769672, 0.03563277, 0.05489629, -0.0001389125, 0.027970063, 0.032406367, 0.040424924, -0.0010616288, -0.012158318, -0.019536342, 0.07487152, 0.020817414, -0.0506735, -0.008765851, -0.047257308, -0.0063757035, 0.0011617125, 0.0087777125, -0.032809667, -0.008724335, -0.017519841, -0.0053051785, -0.041943233, -0.035466705, 0.00983341, -0.003463638, 0.023023704, 0.008653164, 0.037554376, 0.012431139, 0.012419278, 0.0032797805, 0.010207056, 0.021576567, -0.008166831, 0.0036563918, 0.023996368, -0.0057855803, -0.0032056444, -0.037198525, 0.01303609, 0.040757056, -0.01952448, 0.00095709687, 0.052666277, -0.04981945, -0.0042168605, 0.0032323333, 0.011790603, 0.011778741, -0.006897622, 0.015823606, 0.046830285, -0.0021810837, 0.044007182, 0.01891953, 0.00067315565, 0.082747735, -0.023687962, -0.0031641282, 0.01884836, -0.006132537, 0.0153372735, -0.022822054, 0.007947389, 0.0049819453, -0.022774607, -0.0167251, -0.0032086098, 0.03684267, 0.056604385, 0.003949971, 0.043841116, -0.031196466, 0.027044844, 0.028658045, 0.044623993, 0.019536342, 0.047114965, -0.041563656, -0.016215045, 0.04305824, 0.014234128, 0.022347583, -0.014151096, -0.00032934957, 0.032975733, -0.0036801153, 0.03390095, 0.01965496, -0.003671219, -0.007561881, 0.030911783, -0.045430593, 0.016025256, -0.035751387, -0.06514486, 0.009910512, 0.025668878, -0.01945331, -0.021102097, -0.022786468, -0.008190555, -0.017614735, 0.036012344, 0.06467039, -0.023450727, -0.036320753, -0.033806056, -0.011019588, -0.0031255775, -0.020081984, 0.03826608, -0.015360997, -0.0038728693, -0.024482701, -0.05902419, -0.027732827, -0.022822054, -0.005764822, -0.005797442, -0.061823566, -0.0040152106, -0.0064053577, 0.014364609, 0.013605455, -0.019844748, -0.005311109, 0.049724557, 0.0147679085, -0.021956144, -0.0128107155, 0.0041545862, 0.018753465, -0.0019230901, -0.015823606, -0.002808275, -0.007882149, 0.00073320593, 0.0016384076, 0.028871559, -0.015372859, -0.014257852, -0.062345482, -0.020959755, 0.018551815, -0.0006746384, 0.020912308, 0.0661887, 0.037364587, 0.0045578866, 0.006005023, -0.00247318, -0.07226193, 0.016701378, -0.011422888, -0.041943233, -0.013949446, -0.043034516, 0.0025977285, -0.03537181, 0.034446593, -0.027400699, 0.0425126, -0.0063816346, 0.00025743755, -0.0330469, 0.01630994, -0.0007198614, 0.016345525, -0.010177402, -0.030650824, -0.0043087895, 0.019880334, 0.03302318, 0.00223891, -0.03356882, -0.028634323, -0.02507579, 7.149499e-05, -0.0057470296, 0.049534768, -0.017638458, -0.00023630878, -0.010319743, -0.018041758, 0.002738587, 0.026285691, -0.027803998, -0.0019527446, 0.04353271, 0.027566763, -0.0064883903, 0.030935507, -0.0058804746, -0.027756551, -0.010942486, -0.007466987, -0.0025458334, 0.018504368, 0.03885917, 0.0075678118, -0.03368744, 0.0153372735, 0.03511085, 0.012348107, 0.025906114, -0.0047328477, 0.011707571, 0.029179964, 0.00909205, -0.032192856, -0.039428536, -0.033663716, -0.012834439, 0.018753465, -0.033663716, 0.017080955, -0.045240805, 0.036724053, -0.013415666, 0.013071675, -0.015681265, -0.02005826, -0.022478063, 0.017828247, 0.005483105, 0.03643937, 0.018136652, 0.041136634, -0.017080955, 0.049250085, -0.0005645463, 0.037981402, -0.00010740466, 0.027305804, -0.027353251, 0.0046913316, 0.0037928023, 0.016903028, -0.044078354, -0.03518202, -0.035609044, -0.036463093, 0.010147748, 0.00982748, 0.0038995582, -0.0017362671, 0.045027293, -0.018943254, 0.03724597, 0.019963365, 0.0053911763, -0.010663735, 0.0055720685, -0.0026777955, -0.057031408, 0.021315608, -0.010325674, 0.04367505, 0.032074235, 0.009554659, -0.011980392, -0.024909725, -0.028112404, -0.023901474, -0.02533675, -0.04626092, 0.018278994, 0.031077849, 0.019144904, -0.020852998, 0.049866896, 0.019358415, 0.0070992718, 0.0024479737, -0.010556979, -0.015384721, -0.006280809, -0.03416191, 0.029844223, -0.025028342, 0.019417724, 0.00058901124, 0.027566763, 0.048633274, 0.022501785, -0.008635372, -0.005990196, -0.035276916, -0.022430615, -0.0686085, -0.006310464, -0.017555425, 0.00061532954, 0.026356861, 0.025052067, 0.009530935, -0.032975733, 0.003724597, -0.022561094, 0.008012628, -0.051859677, -0.00835662, -0.05081584, -0.044884954, -0.003958867, 0.041634828, 0.04545432, 0.029061347, -0.025194408, 0.0131784305, -0.052523937, 0.01671324, -0.0028097578, -0.0043295473, -0.0036623226, -0.04621347, -0.04500357, 0.006197777, -0.045122188, 0.0056877206, 0.0054534506, -0.03451776, 0.007247544, -0.004465958, -0.0069509996, 0.009335216, 0.011055173, 0.013047951, 0.012988643, -0.023118598, -0.00038736107, -0.025597708, 0.031528596, 0.018136652, 0.0038669384, -0.00010314183, -0.0224662, 0.014649291, -0.0019008493, 0.011078897, 0.029796775, -0.016096428, -0.022003591, -0.008718404, 0.036273304, 0.057885457, -0.024114987, 0.02728208, 0.0039143856, -0.027139738, -0.003303504, 0.030935507, -0.05086329, 0.002253737, 0.03055593, -0.006986585, 0.052476488, 0.00143824, -7.9047604e-05, 0.013225878, 0.0016769583, 0.03382978, -0.022430615, 0.010396845, 0.022584818, 0.028539428, 0.0039825905, -0.008137177, -0.026095903, -0.038882896, 0.0025695567, -0.033877227, -0.011707571, 0.04479006, 0.07601025, -0.015432168, 0.017804522, 0.002003157, -0.02413871, -0.035442982, 0.03930992, 0.0039618327, -0.024031954, -0.0041308627, 0.03261988, -0.033616267, -0.0051124245, 0.0081609, 0.021564705, 0.0047328477, 0.042204194, 0.031837, 0.030816888, 0.020212462, 0.01397317, 0.009993545, 0.007336507, 0.023806581, -0.033331584, 0.022549232, -0.027661657, -0.004006314, 0.02199173, -0.0506735, 0.0033865364, 0.012371831, 0.0060257814, -0.019607512, 0.030745719, 0.011067036, -0.012265074, -0.0421093, 0.004709124, 0.022513647, -0.067564666, -0.013747796, 0.01170164, -0.030366141, -0.004540094, -0.020105707, 0.044291865, 0.022110347, 0.008848883, 0.042939622, -0.037625547, 0.012929333, 0.038194913, -0.026380586, 0.00095190736, 0.010218918, -0.022501785, -0.025431644, -0.009269976, -0.003724597, -0.02072252, -0.016191322, 0.01945331, -0.041160356, 0.03850332, -0.0030603376, 0.0100825075, -0.049582217, 0.0018548849, 0.001119455, -0.0040092794, 0.009584313, -9.141906e-05, -0.009720724, 0.051053077, 0.052239254, -0.010853523, 0.015455891, 0.111121096, -0.0090446025, 0.014756047, -0.020900445, -0.025597708], [-0.0098037515, -0.010194091, -0.01183465, 0.022639709, 0.027697153, 0.02396347, -0.028986974, 0.06906186, 0.026429964, 0.03706531, -0.008412105, -0.0009737281, -0.0062737223, 0.0142672025, 0.008027423, 0.011302883, -0.030751988, 0.022424739, -0.029371655, -0.0383325, -0.004800048, -0.0152628515, -0.059105366, 0.008966501, -0.020116642, -0.0076653683, 0.010805058, 0.030525703, 0.016213244, -0.00018703782, 0.019211506, 0.025479572, 0.034870356, -0.031928662, -0.019550933, 0.0021539403, 0.022085313, 0.06354053, -0.01684684, -0.020603152, -0.032381233, 0.0419983, -0.012898184, -0.025434315, -0.012920813, -0.009922551, 0.0045765927, -0.015059196, 0.041794643, -0.055982646, 0.00026800504, -0.02380507, 0.04088951, -0.014097489, -0.03394259, -0.012705843, 0.0182498, -0.0713247, -0.0005738419, 0.019901672, 0.0056259846, 0.007003488, 0.049918238, 0.013995661, 0.007529598, 0.0046784203, 0.01647347, -0.0010854558, 0.031249812, 0.09128294, 0.007885995, 0.0100074075, -0.016167987, -0.02706356, 0.008270678, -0.08879382, 0.06498875, -0.0014446815, -0.0066923476, -0.03453093, -0.016722383, -0.04819848, -0.010641002, 0.03394259, 0.012196705, -0.04973721, -0.0066357767, -0.11341351, -0.023171475, -0.005077246, 0.012604016, 0.0058268113, 0.011472596, 0.03550395, -0.039531805, 0.028760688, 0.064626694, -0.00059258105, -0.053900834, -0.038694553, -0.035209782, -0.061503977, -0.017220208, -0.0546702, 0.0108333435, 0.05032555, 0.073451765, -0.023465645, 0.009232385, -0.106443964, 0.012038305, 0.0039401692, 0.039916486, 0.050370805, -0.0439896, 0.030050507, 0.006963888, -0.066617996, -0.035707604, 0.062318597, -0.07892784, -0.05086863, 0.046320323, 0.04378594, -0.0024085096, 0.026226308, -0.01887208, 0.032041807, 0.0020902979, 0.00061450235, 0.022334225, 0.031136671, 0.0019403847, 0.02021847, 0.07652923, -0.011359454, 0.013135782, -0.0076653683, -0.058245488, -0.0007835081, -0.06340476, -0.010544832, -0.0011186912, 0.043197606, 0.029145371, 0.0071958294, -0.001895128, -0.0122759035, -0.06797569, 0.024167124, -0.04061797, -0.043220233, 0.006952574, -0.029100114, 0.00037973275, -0.039961744, 0.033195853, 0.045030504, 0.0058494397, 0.025479572, 0.03326374, -0.048017453, -0.0032613173, 0.025524829, 0.004095739, -0.06639171, 0.00046069996, -0.006952574, -0.02234554, 0.03523241, -0.004958447, 0.026362078, 0.01903048, -0.05978422, -0.0049923896, 0.001354875, 0.043808572, 0.018272428, -0.027832925, -0.053176727, -0.046094038, 0.040120143, 0.029371655, -0.017525692, 0.030593589, 0.03437253, -0.025208032, -0.022255026, 0.014244574, -0.049691953, 0.013701493, -0.0030604904, -0.0123437885, -0.029416913, 0.013045269, -0.012117505, -0.0022006114, -0.031498723, 0.00834422, 0.030480446, -0.018068772, -0.044849478, 0.008417763, 0.0069978307, -0.03903398, -0.008994787, 0.008728903, -0.024981746, 0.036454342, -0.003764799, 0.042631894, -0.0034027447, 0.008627075, -0.03758576, 0.008762846, -0.008887302, -0.07277291, -0.005427986, 0.0011540481, -0.032109693, -0.019607503, -0.038966093, -0.004234338, 0.0048339907, 0.006256751, 0.01636033, 0.023646671, -0.015489136, 0.029620567, -0.0023024392, -0.01938122, -0.0109578, 0.0027210645, 0.036658, -0.04111579, -0.034417786, 0.018396884, -0.036952168, 0.04061797, 0.017604891, 0.049239386, 0.036386456, -0.03957706, -0.0015429736, 0.033286367, 0.04661449, 0.031023528, 0.026701504, -0.015670164, 0.014154061, 0.002095955, 0.017604891, -0.031792894, 0.026226308, 0.022549195, 0.04792694, -0.0051988736, -0.02185903, 0.023397759, 0.012366418, -0.0271767, 0.016134044, -0.027538756, 0.034327272, 0.018068772, -0.043921713, 0.016880782, -0.037653647, -0.05580162, -0.05213582, 0.081416965, -0.035141896, -0.013735435, -0.007161887, 0.008451705, -0.022232397, 0.053719807, 0.03946392, -0.03197392, 0.048379507, 0.0046529635, -0.0036318572, 0.04973721, 0.030276792, 0.018080087, -0.020297669, 0.039667577, -0.040278543, -0.030616216, 0.015409936, -0.008825074, 0.011365111, 0.046976548, -0.0047717625, 0.04842476, 0.0380157, 0.028127093, -0.001823, -0.04815322, 0.0154665075, -0.03930552, -0.013271553, -0.0331506, -0.005396872, 0.003897741, 0.050642345, 0.023737185, 0.038513526, 0.008270678, -0.020376869, 0.037427362, -0.006013496, -0.024008727, -0.029416913, 0.020716295, -0.027968695, 0.015319423, 0.014221946, 0.04607141, 0.009747181, 0.011653623, -0.024121867, -0.08553533, 0.04229247, 0.058426514, 0.025773741, 0.0054987, -0.061051406, -0.006658405, 0.02735773, -0.05086863, 0.01957356, -0.029394284, -0.0021341403, -0.042631894, -0.08449443, -0.012015677, -0.017220208, 0.032630146, -0.069107115, -0.025909511, 0.0041325106, -0.0164961, -0.059965245, -0.006268065, -0.0025980226, 0.0109182, 0.042903434, 0.02971108, 0.0029982622, 0.0012424403, 0.009566153, 0.034146246, -0.0025145803, 0.02509489, 0.0035668006, -0.08028554, -0.033173226, -0.031046156, 0.026226308, 0.036250688, -0.107982695, 0.058336, 0.019607503, 0.015862504, -0.061232433, -0.037449993, -0.015455193, -0.014301145, 0.016812896, -0.06317848, 0.033490025, -0.009175814, -0.062228084, -0.0122759035, -0.014470858, 0.038785066, -0.030118393, -0.019403849, 0.01957356, -0.015783304, -0.017050495, -0.0017197579, -0.017276779, 0.008915587, -0.0013371967, -0.0182498, -0.0062341224, -0.037563134, 0.036409087, 0.0025626656, 0.008689303, -0.011563109, 0.0012424403, 0.015647534, 0.044849478, -0.053176727, 0.014029604, 0.036861654, 0.04084425, -0.05073286, -0.042880807, 0.004814191, 0.013113154, 0.06820198, -0.07471896, 0.00789731, -0.01846477, -0.0016547013, 0.05521328, -0.003991083, 0.004469108, -0.022764165, -0.009769809, 0.029484797, 0.019550933, 0.001854114, 0.026271565, -0.04806271, -0.016054846, 0.0053742435, -0.03364842, -0.010788087, 0.05000875, -0.0038609698, 0.027923439, -0.02692779, 0.036703255, -0.017423863, -0.022119256, -0.011127513, -0.022560509, 0.023375131, -0.015138396, -0.047972195, -0.07082687, 0.0064660637, -0.03158924, -0.024053983, 0.04602615, 0.010516546, -0.03154398, 0.012807671, -0.01892865, -0.004299395, -0.0007566369, -0.040708482, 0.035413437, 0.043107092, -0.0040250258, -0.031068785, -0.012434303, -0.08843176, 0.0062058372, 0.043604914, -0.011546138, -0.012705843, 0.029371655, 0.0034734586, -0.062997445, 0.032064434, -0.018589227, 0.073316, 0.017718032, 0.006081381, -0.055439565, -0.03310534, 0.036703255, 0.014346402, 0.044917364, -0.02760664, -0.006714976, -0.01331681, 0.032471746, 0.009328555, -0.030616216, -0.061232433, 0.013214982, -0.03493824, 0.00812925, -0.02407661, -0.058245488, 0.023986097, 0.054489173, -0.037223708, 0.0017367293, 0.015941704, 0.015828561, 0.0603273, -0.010465632, 0.014991311, -0.0124116745, 0.051049657, 0.0020549411, -0.0005646491, -0.051049657, -0.022549195, -0.004638821, 0.014459544, -0.031091413, 0.007637083, 0.07254663, -0.014210631, 0.025705855, 0.0064547495, -0.008310278, -0.021451717, -0.02930377, 0.05046132, -0.0153986225, -0.0033518309, 0.010810715, -0.020275041, 0.031521354, -0.004531336, -0.013475209, 0.016914725, -0.0052441303, -0.008581818, 0.004460622, -0.017186265, -0.023782441, -0.00200827, -0.035707604, -0.01066363, -0.021519603, 0.0052101878, -0.0012728472, -0.030480446, -0.02719933, -0.02466495, -0.004285252, 0.025864255, -0.020308984, 0.0435144, -0.00055439566, 0.0108786, 0.018691054, -0.02620368, -0.017016552, -0.03000525, 0.033082712, -0.015953017, -0.009271985, -0.027946066, 0.040482197, 0.02220977, -0.013294182, -0.004361623, 0.03410099, -0.076619744, 0.023510901, -0.004336166, 0.01585119, 0.007806796, -0.0363412, -0.02450655, -0.039848603, -0.018939966, -0.008016109, 0.032154948, -0.019449105, 0.068020955, 0.040007, -0.01600959, -0.061458718, 0.014142746, -0.0056825555, -0.0015146881, 0.056887783, 0.07992349, 0.030933015, 0.022583136, -0.0057249838, -0.004587907, 0.06159449, 0.039418664, -0.047791168, -0.013690178, -0.01660924, -0.022492623, 0.010443004, 0.031928662, -0.04815322, 0.0064717205, -0.015568336, -0.020886008, -0.019980872, 0.012140133, 0.004686906, 0.0069978307, 0.01682421, 0.041658875, 0.0044945646, 0.016914725, 0.018781567, 0.016269816, 0.025185402, 0.02971108, 0.015421251, -0.08865805, -0.006092695, 0.024257638, 0.021745887, -0.011812022, -0.021168863, 0.021610117, 0.008887302, -0.008632733, 0.024981746, -0.03407836, 0.0037676275, 0.0236693, -0.021304633, 0.013181039, -0.046252437, 0.015104453, 0.049510926, 0.008728903, 0.039554432, 0.014482172, 0.021304633, 0.027289843, -0.02536643, -0.003589429, 0.04638821, -0.021802457, 0.03523241, -0.011823336, -0.036024403, -0.010889915, -0.012705843, -0.02056921, -0.027402986, 0.0023547672, 0.014380344, 0.010550489, 0.025162775, -0.01725415, 0.030684102, 0.0016334872, 0.01204962, 0.005396872, 0.09141871, -0.03224546, -0.00069617666, 0.045980897, -0.011597052, -0.008581818, -0.02078418, -0.018476084, -0.0066527477, 0.009266327, 0.06173026, -0.0054958714, -0.024189753, -0.00939644, 0.019290706, -0.076755516, 0.01838557, -0.012196705, -0.011812022, -0.0038326841, -0.008604446, 0.01655267, 0.004675592, -0.021689316, -0.021587487, -0.0061775516, 0.052090563, 0.06761364, -0.067477874, -0.07938041, -0.015477821, -0.034870356, -0.025411686, -0.0019870559, 0.057249837, -0.022413425, -0.007999137, -0.03828724, -0.055303793, -0.0071958294, 0.0027677354, -0.006420807, 0.0077389106, -0.06458144, 0.02021847, -0.028081836, 0.0018003716, 0.029281141, -0.03423676, -0.019946929, 0.054534428, -0.0004911069, 0.035141896, 0.020037442, -0.05734035, 0.017966945, 0.0020690837, -0.005396872, -0.06286168, -0.040074885, 0.0054138433, 0.016586613, 0.0124795595, -0.019120993, -0.018962594, -0.10445267, -0.05000875, 0.045980897, -0.040504824, -0.0012671901, 0.07227509, 0.012060934, 0.036997423, -0.049510926, -0.011116198, -0.02437078, 0.013226297, -0.05367455, -0.03892084, -0.004273938, -0.017797232, 0.0014390245, -0.047021803, 0.03720108, -0.016563984, 0.028127093, -0.024778092, 0.05200005, -0.032698028, -0.020987835, -0.009735866, 0.0098376945, 0.0032669744, -0.036816396, 0.014154061, -0.024959119, 0.03186078, 0.014900797, -0.040074885, -0.059557933, -0.0027055074, 0.0025442801, 0.010250662, 0.023375131, -0.017457806, 0.0032726314, -0.018340314, 0.01345258, -0.050054006, 0.012366418, 0.01671107, -0.00019817523, 0.04595827, 0.0075126267, -0.031453468, 0.029484797, -0.0009213999, 0.014108804, 0.023284618, 0.0071336012, -0.0013584108, 0.013633607, -0.0064830347, 0.008593133, -0.044872105, 0.02706356, 0.042088814, 0.011229341, 0.037133195, 0.011800707, -0.009967808, 0.010839, -0.03129507, 0.023001762, -0.0022868821, -0.028941715, -0.0006767304, 0.0055071856, 0.0035668006, 0.015828561, -0.029643197, 0.036567483, 0.008067022, -0.012785043, -0.026022654, 0.017152322, -0.0108786, 0.006290694, 0.04002963, 0.008479991, 0.03539081, 0.042337727, -0.019607503, 0.038083587, 0.0063981786, 0.028059209, 0.040074885, 0.03310534, -0.030254163, 0.006556577, 0.047293343, -0.015658848, -0.0063472646, -0.037698906, 0.009820723, -0.02633945, 0.052633643, -0.009769809, 0.0015769162, -0.028919088, 0.0057193264, -0.029349027, 0.041455217, 0.0093907835, 0.00473782, 0.022684965, -0.017559635, 0.0043870797, -0.012422988, 0.023986097, -0.012966069, 0.042722408, 0.04905836, 0.008496962, -0.01951699, -0.002822892, -0.025049632, -0.028421262, -0.02973371, -0.037449993, 0.0326754, 0.023465645, 0.0044068797, -0.03550395, 0.043378633, 0.041930415, 0.0035243724, -0.035368178, 0.004865105, -0.032177575, 0.014561372, -0.059965245, 0.022356853, 0.010952143, 0.00012233475, 0.030978272, 0.05340301, 0.03636383, 0.037970446, 0.03887558, 0.01563622, -0.056706756, 0.010963457, -0.03957706, 0.020399498, 0.0030859471, 0.0032556602, 0.028421262, 0.003363145, -0.01577199, -0.011466939, -0.01932465, -0.008666675, -0.013712807, -0.044012226, -0.00061839155, 0.00037407564, -0.03199655, -0.029530054, 0.0009645353, 0.018114028, 0.0123777315, -0.002667322, 0.011913849, -0.05381032, -0.0017834003, -0.005804183, 0.028059209, -0.027538756, -0.04002963, -0.012830299, 0.018476084, -0.0182498, -0.015228909, -0.0092889555, -0.04088951, -0.012219333, 0.00047590342, -0.011959107, 0.0218364, -0.02275285, 0.01910968, 0.04960144, -0.044170626, -0.023420388, -0.041817274, 0.030955642, -0.0050687604, -0.00795388, 0.0011830407, -0.010143178, 0.019335963, -0.005572242, -0.03439516, 0.006132295, -0.036228057, 0.003926026, -0.018589227, 0.02437078, 0.016858153, -0.035684977, 0.020195842, -0.018408198, 0.012875556, 0.0089778155, 0.02132726, -0.020376869, -0.0055241566, 0.024845976, -0.0152967945, 0.024008727, -0.008825074, -0.002930377, -0.0024792235, 0.007518284, 0.05195479, -0.043152347, -0.017899059, 0.026973046, 0.014663199, 0.0013782106, -0.014561372, -0.038355127, 0.023986097, 0.03339951, -0.042767666, -0.019528303, 0.051819023, 0.041794643, -0.03425939, -0.0036827712, 0.051094912, -0.03367105, -0.010776773, 0.036590114, -0.014323774, -0.010222377, -0.002456595, 0.04792694, -0.018362941, 0.022888621, 0.02943954, 0.023714557, -0.016167987, 0.041749388, 0.008315935, 0.01924545, 0.007863367, -0.021157548, -0.025456943, 0.027561383, 0.028330749, -0.011812022, 0.0386493, -0.013135782, -0.0035300294, 0.015568336, -0.02493649, 0.0077671963, 0.0066527477, 0.012875556, -0.03394259, -0.0020153413, 0.00198847, -0.022492623, -0.03554921, 0.013690178, 0.009792438, -0.065305546, 0.004701049, 0.016269816, -0.05412712, -0.028398635, -0.00947564, 0.0035498294, -0.026656248, 0.031023528, 0.006556577, -0.025140146, 0.002930377, 0.045573585, -0.027674526, -0.0043842513, 0.015557021, 0.0021808115, 0.006992174, -0.01550045, -0.012875556, 0.04905836, -0.035413437, 0.07512627, -0.04242824, 0.04806271, 0.0067036618, -0.003332031, -0.04693129, 0.032811172, -0.015557021, 0.017853802, -0.025570085, -0.006675376, 0.009532211, 0.06435515, 0.045392558, -0.035752863, 0.027131444, 0.098297745, 0.014312459, -0.014561372, 0.03287906, 0.010245006], [-0.013466202, -0.039265934, -0.030582123, 0.013566884, -0.0032941853, -0.008809665, -0.041380253, 0.05031577, 0.028014734, 0.029323598, -0.044098664, 0.038233947, 0.0034294766, -0.029323598, -0.01915473, 0.041833322, -0.041934006, -0.0032045157, -0.042110197, -0.064335726, -0.0030314685, -0.046238154, -0.0652922, 0.017657086, -0.00020529666, -0.029776666, -0.009973799, 0.009124296, -0.024729988, 0.06312754, 0.012604114, 0.009143174, 0.016398562, -0.025560614, -0.013554298, -0.005808086, 0.022728935, 0.048830714, -0.025824903, -0.017720012, -0.041858494, 0.012805477, -0.032444738, -0.021470413, -0.04372111, 0.009168344, 0.018953364, 0.015316231, -0.011811243, -0.02992769, 0.013743077, 0.02033774, 0.0013324618, -0.012792892, 0.0015597827, -0.0071861693, 0.01817308, -0.016499244, 0.07571278, 0.013403276, 0.0019538577, 0.03843531, 0.023093907, -0.024075555, -0.0262528, -0.019028876, -0.03352707, 0.003583646, -0.00073073024, 0.058143787, 0.034961782, 0.016197197, 0.011647635, -0.029650815, -0.0021127465, -0.04329321, 0.10319893, 0.020727882, 0.027410643, -0.0379319, 0.04276463, -0.016524414, 0.002331415, -0.03053178, -0.0043167355, -0.0154546695, 0.047144294, -0.11538144, -0.011150518, 0.010370234, 0.005034094, -0.024453113, 0.025245983, 0.040927187, -0.0039265933, 0.006877831, 0.035591047, 0.0109113995, -0.018424785, -0.01704041, 0.004228639, 0.001503149, -0.065443225, -0.04435037, -0.016134271, 0.017078165, 0.0074504595, 0.0033539652, -0.028568484, -0.054921966, 0.028618826, -0.0566839, -0.013982196, 0.023849022, -0.019620381, 0.027335132, -0.048025258, -0.031865817, -0.052052535, -0.02678138, -0.08130062, -0.08316324, 0.065443225, 0.043746278, 0.020451007, 0.017480891, 0.007570019, 0.036673374, 0.009652875, -0.008199281, -0.026504505, 0.025950756, 0.035137977, 0.004942851, 0.09000961, 0.012868403, 0.056633558, -0.0039580567, -0.040247582, 0.024390187, -0.05024026, 0.0077399197, 0.0050498256, 0.03843531, -0.04273946, -0.0057420135, -0.027460983, -0.013239668, -0.03103519, -0.025875244, -0.045659233, -0.007418996, -0.0024163653, 0.016952312, 0.037680194, -0.025245983, 0.014598873, -0.0038101801, 0.0021442096, 0.0619697, 0.0021111732, -0.06458743, 0.004999485, 0.042965993, -0.007997917, -0.026580017, 0.013554298, -0.0071169506, -0.0019444189, 0.01521555, 0.020929247, -0.006364983, 0.03325019, 0.0061856434, 0.009256441, 0.02675621, 0.037227128, 0.01870166, 0.04533202, -0.023106493, 0.0026444725, 0.03790673, 0.052656624, -0.055677082, 0.03428218, 0.040977526, 0.013164156, 0.039744172, 0.011326712, -0.059200946, -0.0075826044, 0.02620246, -0.019947598, -0.015114868, 0.0046408055, -0.06977255, -0.047446337, -0.0039140084, -0.00076376647, 0.026806552, -0.002617729, -0.059502993, 0.029701157, -0.013227083, -0.0026916673, 0.03961832, 0.04012173, -0.0416823, 0.023030981, 0.03319985, 0.03841014, 0.05602947, 0.005213434, 0.035591047, -0.00776509, 0.029222917, -0.024855841, 0.008419522, -0.014535947, -0.025850074, 0.034483545, -0.026277972, -0.011502905, -0.003044054, -0.027888881, 0.04163196, 0.002922921, 0.039190423, -0.009243855, -0.015970664, 0.015492425, -0.06282549, -0.055727422, 0.019884672, -0.037831217, -0.0046408055, -0.031714793, -0.022074504, 0.054670263, 0.023861606, 0.0051599466, -0.005065557, -0.057892084, 0.010464624, 0.021961236, 0.037327807, 0.019909842, -0.0124279205, -0.042437416, -0.0073308996, 0.0202874, 0.013806003, 0.008086014, 0.016385976, -0.0029795545, 0.08316324, 0.019708479, -0.016537, -0.0060346206, 0.014661799, -0.03579241, 0.0619697, -0.032243375, 0.064990155, 0.0016691169, -0.0018201397, 0.026907234, -0.06967186, -0.037680194, -0.0236099, 0.04319253, -0.02776303, 0.019406432, 0.004665976, 0.04422452, 0.019431604, 0.0522539, 0.018047228, -0.037000593, 0.03574207, -0.013466202, 0.085227214, -0.005930792, -0.0039989585, -0.0126481615, -0.017720012, 0.007783968, -0.026831722, -0.03168962, 0.014586288, -0.0031588941, -0.012497139, 0.034810763, 0.009055077, 0.040247582, -0.003514427, -0.008620886, -0.003759839, -0.0326461, -0.023320442, -0.031186214, -0.009797606, -0.048704863, -0.01846254, 0.020765638, 0.058949243, 0.0065757856, 0.02937394, -0.04976202, -0.045684405, 0.050844353, -0.080042094, -0.049434803, -0.048704863, -0.0028065075, -0.044199347, 0.00858313, 0.056331515, 0.068715386, -0.023786096, -0.0039265933, -0.055324696, -0.12071758, 0.011314127, 0.04054963, -0.008734154, 0.014636629, -0.058395494, -0.049308952, -0.017392796, -0.044098664, -0.024427943, -0.023660243, -0.0014756188, -0.04384696, -0.048453156, -0.016763534, -0.03189099, 0.024654476, -0.058949243, 0.020463593, -0.012119582, -0.008803372, -0.025950756, -0.014624043, -0.018009473, -0.025900414, -0.008463571, 0.0055563813, 0.024629306, 0.0015409047, 0.01896595, -0.007897235, 0.010527549, 0.032268543, 0.0020718444, -0.011742025, -0.0663997, 0.013654981, 0.01901629, 0.06473845, -0.060157426, 0.05456958, 0.050617818, 0.014108049, -0.05980504, -0.009803899, 0.010452038, 0.021495583, 0.030380758, -0.065896295, 0.04012173, -0.031312067, -0.019884672, -0.048453156, -0.011742025, 0.035943434, 0.0030015786, -0.032973316, 0.020362912, -0.012868403, 0.019079218, -0.01189934, 0.011697976, 0.017732596, 0.010559012, -0.011949681, 0.05200219, 0.01975882, 0.007733627, -0.03735298, 0.06841334, 0.0044834903, 0.013277424, 0.048377644, 0.041883662, -0.035364512, 0.046666052, -0.0009092833, 0.028643996, -0.008715276, 0.019746235, -0.02300581, -0.008910347, 0.05356276, -0.035289, 0.025371835, -0.011219737, -0.0032060887, 0.025006862, 0.02348405, 0.047244973, 0.01920507, 0.0113392975, 0.01444785, 0.014586288, -0.014233901, 0.06388266, -0.0152407205, -0.0126418695, 0.05985538, -0.031916156, -0.007223925, 0.010615646, -0.04289048, 0.011880462, -0.0619697, 0.010540134, 0.013227083, -0.0098353615, -0.013038304, -0.02887053, -0.00855796, -0.0039454713, -0.008463571, -0.034055647, -0.04533202, -0.009728387, -0.03262093, 0.024503453, -0.011477735, -0.008476156, -0.009678046, 0.025220811, -0.022603083, 0.009829069, -0.039316274, -0.0056727948, 0.03752917, 0.010647109, 0.0018154202, -0.0072994367, -0.04377145, -0.009168344, 0.024339845, 0.008683813, 0.100228816, -0.02002311, 0.035314173, -0.097963475, -0.0083188405, 0.048377644, 0.06081186, -0.028568484, 0.022615667, -0.015995834, -0.0454327, 0.038384967, 0.014321998, 0.05507299, -0.024289504, 0.004209761, -0.045608893, 0.0491831, 0.012320946, -0.040776163, -0.018122738, 0.02192348, 0.023937117, -0.0041122255, -0.012352409, -0.016486658, -0.027033085, 0.0416823, 0.020161547, -0.060761515, 0.030556953, -0.0236099, 0.047370825, -0.0015841665, 0.014548533, 0.07314539, -0.02478033, 0.0070854877, 0.008948103, -0.036245476, -0.017392796, -0.040398605, -0.020929247, 0.021986406, 0.03423184, 0.017241772, 0.03581758, 0.037755705, 0.05024026, -0.03954281, -0.034357693, -0.023131663, 0.049208272, 0.028190928, -0.011603587, -0.016285295, -0.03898906, -0.010068188, -0.02295547, -0.046389177, 0.004492929, 0.038586333, 0.00068786176, -0.0034326229, 0.0021803922, -0.04007139, -0.059654016, -0.018714245, -0.05552606, -0.0032973317, -0.012767721, -0.012585236, -0.02050135, -0.025636125, -0.007456752, -0.019846916, 0.012484553, 0.016222369, 0.0043607843, -0.018726831, 0.019821746, 0.016813874, -0.02113061, 0.014334584, -0.021206122, 0.012409043, 0.004861047, 0.021583678, -0.049334124, 0.0525056, 0.048830714, -0.0040461533, -0.0031761988, -0.0023817557, -0.020677542, 0.01189934, 0.0113518825, 0.038762525, 0.0236099, -0.02298064, -0.035112806, -0.03622031, 0.012767721, -0.030179394, 0.017933961, -0.010634524, 0.08442176, 0.03357741, 0.0043607843, -0.06901743, -0.0028898846, -0.012723673, 0.0010217638, 0.022351379, 0.020992173, 0.027586836, -0.02488101, -0.035440024, 0.008853713, 0.064889476, -0.0122076785, -0.034408033, -0.010401697, -0.020702712, -0.032369226, -0.008834835, -0.0138941, -0.052656624, 0.0137304915, 0.016977483, -0.0034200377, -0.03740332, 0.0013647114, 0.024969107, 0.0029197747, 0.05200219, 0.01920507, -0.037126444, -0.022779277, 0.018512882, 0.0036339867, -0.013592054, 0.00030204566, 0.016134271, 0.02271635, -0.036522355, 0.019557456, 0.026605187, -0.014485606, -0.018361859, 0.014498191, -0.04477827, -0.0038699599, 0.023672828, -0.06957118, -0.01766967, 0.06363095, -0.0128746955, -0.01605876, -0.040851675, -0.027712688, 0.052555945, 0.021533338, 0.043242868, 0.04855384, 0.019293167, 0.043570086, -0.025220811, 0.01983433, -0.04387213, -0.0060094497, -0.024641892, -0.0020938686, -0.009080247, 0.025975926, -0.047949746, -0.02374834, -0.040197242, -0.0179843, -0.0039863735, 0.01788362, 0.043066677, -0.016222369, -0.0005073423, 0.028568484, 0.05391515, -0.033803944, 0.06040913, -0.03634616, -0.030305248, 0.023093907, -0.014926089, 0.044501394, -0.024000045, -0.025422176, 0.02990252, -0.020539105, 0.048503496, -0.0100618955, -0.02060203, 0.004653391, 0.048906226, -0.03526383, 0.0122139715, -0.025925586, -0.06760789, 0.014649214, 0.0069848057, 0.007702164, -0.0047509265, -0.05718731, -0.050491966, 0.00014787652, -0.0036182553, 0.05628117, -0.05396549, -0.05170015, -0.06363095, -0.0029701155, -0.038133264, -0.020513933, 0.00694705, -0.05769072, -0.02276669, -0.039844856, -0.03433252, -0.009369708, -0.0021740994, -0.01245309, -0.0028411169, -0.00073230336, 0.01814791, -0.045256507, -0.0063995924, -0.020828566, -0.055173673, -0.021092854, 0.029852178, 0.011647635, -0.031286895, 0.0021158927, -0.025308909, 0.018412199, 0.04691776, -0.01785845, -0.0386115, -0.022867372, -0.032419566, 0.014963845, 0.036018945, -0.022439474, 0.017292114, -0.03780605, -0.0111379335, 0.013214497, -0.0042412244, 0.026454166, 0.047698043, 0.021017343, 0.0017792376, -0.015366573, -0.018084984, -0.07415221, 0.037151616, -0.0054242364, 0.0022181477, 0.024843255, -0.0014441558, 0.005226019, -0.039140083, 0.028543314, -0.004448881, 0.055928785, -0.004156274, 0.03050661, 0.020551689, -0.00817411, -0.015442084, -0.028140586, 0.016524414, -0.026051437, -0.0059905723, 0.0288957, -0.016864216, 0.0304311, -0.0326461, -0.034559056, -0.035515536, -0.012302068, -0.023660243, 0.012440505, -0.014384924, -0.0085390825, -0.031840645, -0.0029827007, -0.06257379, 0.025850074, -0.026479336, -0.0035993773, 0.0009918739, 0.030582123, 0.004439442, -0.0054588458, 0.005326701, -0.03780605, -0.025170472, -0.03382911, -0.062422767, 0.032872636, 0.022087088, -2.7702266e-05, -0.042160537, -0.0031085531, 0.008092307, 0.048780374, 0.05552606, -0.014787652, 0.018538052, 0.012679624, -0.026580017, 0.015479839, -0.00097535574, -0.028996382, -0.06322822, -0.014573703, 0.023030981, 0.0154546695, -0.009224977, 0.038284287, -0.0018390175, 0.018777171, 0.00032918257, 0.021860555, -0.009533316, 0.0030786633, 0.023811266, -0.0117797805, 0.034634568, 0.06680243, 0.005987426, 0.048276965, -0.01002414, 0.020438422, 0.005248043, 0.017178847, -0.043544915, 0.010395405, 0.04445105, 0.015479839, 0.013478788, -0.015781885, -0.013566884, -0.035515536, 0.02163402, 0.02345888, 0.00788465, 0.0013835893, 0.011962267, -0.008910347, 0.0094074635, 0.00949556, -0.008073429, 0.022615667, 0.06760789, -0.020954417, -0.020614617, 0.006330373, -0.00932566, 0.048327304, 0.035037294, 0.024604136, -0.013013134, -0.02824127, -0.016763534, -0.017581575, -0.044425882, -0.010496086, -0.004348199, 0.0081174765, 0.016914556, -0.01788362, 0.05119674, 0.029550133, 0.02612695, -0.0390394, -0.03053178, 0.01738021, -0.023119077, -0.02990252, -0.025132716, 0.0077462127, 0.0019176753, 0.015668618, 0.03735298, 0.03103519, 0.06821197, 0.053613104, 0.0049271197, -0.019318337, -0.020828566, -0.03045627, -0.019557456, -0.0137304915, 0.017090749, 0.0038636674, -0.008388059, 0.011119056, 0.0010532269, -0.003391721, 0.018135324, -0.030078713, -0.064990155, -0.029852178, -0.019003706, -0.012415335, 0.01600842, 0.036673374, 0.058093447, 0.008602008, -0.0055343574, -0.015114868, -0.0050246553, 0.03206718, -0.027662348, 0.024641892, 0.052354578, -0.06413436, -0.005559528, -0.035616215, -0.028190928, 0.05769072, -0.029625645, 0.009992677, -0.015656034, 0.015202965, -0.02826644, 0.021004759, -0.007160999, 0.06650038, 0.013327764, 0.0008841128, -0.013667566, -0.0502906, 0.0032406983, 0.015781885, -0.009564779, 0.012667039, -0.019721065, -0.0015228135, 0.0023660243, 0.0191799, 0.059452653, 0.023421124, 0.004291565, -0.013529128, 0.00635869, 0.023572147, -0.06806096, 0.019054046, -0.029675985, -0.035137977, 0.007790261, 0.048377644, -0.04709395, 0.0048044138, -0.0005561101, 0.004615635, 0.029776666, -0.017392796, 0.019683309, -0.019167313, 0.032998487, -0.003678035, -0.03053178, -0.002852129, 0.019935014, 0.030305248, 0.02942428, -0.004448881, -0.00354589, -0.0066512967, -0.014548533, -0.03370326, -0.042512927, 0.044199347, 0.04709395, 0.023144249, -0.010017848, 0.06514118, -0.017292114, -0.027083427, 0.010760376, 0.039316274, 0.002546937, 0.006040913, 0.049283784, -0.02892087, 0.009967507, -0.015089697, -0.013717907, 0.0012821208, 0.036320988, -0.015932908, 0.024516039, -0.0044142716, -0.028568484, -0.02725962, -0.0011546954, 0.012333531, -0.016310465, 0.014284242, -0.021734701, 0.018915609, 0.013692737, -0.03206718, 0.0034924028, 0.013315179, 0.057590038, 0.010338771, 0.0007692725, 0.021810213, -0.010810717, -0.06685277, 0.011672806, -0.004357638, -0.020954417, 0.01651183, 0.009678046, 0.009004736, -0.0021048805, -0.021206122, 0.0015786604, 0.013315179, 0.006091254, 0.04175781, -0.045558553, 0.0045873183, 0.025057204, -0.0055249184, -0.018550636, 0.021092854, -0.03362775, -0.014321998, -0.039089743, 0.0048547545, -0.025585784, -0.012742551, 0.0386115, -0.036195137, 0.02427692, 0.008520205, 0.0022323062, -0.008683813, -0.0068086125, 0.0024698526, 0.021986406, 0.01783328, -0.0074630445, 0.028442632, 0.009527023, 0.035314173, -0.016109101, -0.012195094, 0.09574847, -0.010256967, -0.037655026, -0.0020010525, -0.019456774], [-0.0136161605, -0.0050589084, -0.011407641, 0.056022163, 0.026915949, 0.048185878, -0.0008281947, -0.003080063, 0.020284306, 0.023727894, -0.055292077, -0.02092922, -0.033511087, -0.055632785, 0.0068202484, 0.028108427, -0.037842948, -0.015903773, -0.03467923, -0.05203101, -0.013981205, -0.03781861, -0.017290942, 0.03236728, 0.04971906, 0.04743145, -0.009278215, 0.0127278855, 0.008949675, 0.040106226, 0.044900477, -0.004608687, 0.05947792, 0.016061958, 0.03850003, -0.032805335, -0.0028868937, 0.061619513, -0.01651218, -0.004295357, -0.0735443, -0.0018343487, -0.0033401572, -0.029033206, -0.019103996, -0.020637183, 0.013725674, -0.032683652, 0.01849559, -0.018982315, 0.026477896, -0.0032123916, -0.018179217, -0.039205782, -0.032269936, 0.0014023794, 0.030152677, -0.0012312648, 0.05611951, -0.03275666, -0.028059755, 0.0056277695, 0.054172605, 0.021902671, -0.025042053, 0.0071913768, -0.00023385664, -0.0023879996, 0.000930103, 0.029252233, 0.005500004, 0.01788718, -0.011748349, -0.012174235, -0.0071487883, -0.041006666, 0.028570818, -0.0013400175, -0.029446924, 0.021817494, 0.0213186, -0.0059593515, 0.05626553, 0.016256649, 0.04915933, -0.04409738, 0.036431443, -0.12577, -0.021987848, 0.026502231, 0.022389397, 0.021927007, 0.050035436, 0.031369492, -0.037745602, 0.009302551, 0.016658198, 0.0068993415, -0.05782305, -0.022596255, 0.0049007228, -0.050911542, -0.0740797, -0.051592957, 0.013482311, 0.037185866, 0.020442493, -0.02499338, -0.008183082, 0.08649121, -0.017753331, -0.025115063, -0.003641319, 0.024810858, 0.03414383, 0.062738985, -0.030055331, -0.06867704, -0.057287652, 0.031272147, -0.06157084, -0.031247811, 0.055389423, 0.058845177, -0.004039826, 0.04889163, 0.029763296, 0.042004455, 0.03684516, -0.010902663, -0.016633863, 0.038694717, 0.040471267, 0.01019691, 0.021756653, 0.00743474, 0.043391626, -0.013324125, -0.018410413, -0.0049068066, -0.037088525, 0.022231212, 0.0075442535, 0.021756653, -0.031369492, -0.020150457, -0.011955208, -0.03711286, -0.043221273, -0.04258853, -0.0659027, -0.012375009, 0.014589612, -0.008821909, 0.027329667, -0.043172598, 0.062398277, 0.03270799, 0.018544262, -0.005925889, 0.018957978, -0.0568496, 0.050960213, 0.037794277, 0.014954657, -0.07252218, -0.031880554, -0.005259683, -0.046409328, 0.018507756, 0.018179217, -0.042126138, -0.006044529, 0.0151493475, -0.049792074, 0.004413997, 0.04229649, 0.026137188, 0.0031074414, -0.08868148, -0.05480535, 0.033730112, 0.039716844, -0.009229542, 0.025163736, 0.01684072, -0.023630548, -0.016025454, 0.00861505, -0.061960224, -0.031296484, -0.032732327, -0.08517706, -0.0065038763, 0.0037569164, -0.02711064, -0.0029507766, -0.029008871, 0.02342369, -0.012009964, -0.019201342, -0.018349571, -0.0415664, 0.002750002, -0.02973896, 0.0072400495, 0.061668187, -0.03222126, 0.013275452, 0.016889393, 0.019359527, 0.044511095, -0.019688068, -0.013652665, -0.010768813, 0.03317038, -0.06006199, -0.018252226, 0.01900665, 0.010975672, 0.0568496, -0.050230127, 0.031953562, -0.01375001, 0.036480114, 0.063469075, -0.008097904, -0.017485632, 0.011882199, 0.02178099, -0.0030146593, -0.027865065, -0.026356215, 0.006382195, -0.078411564, -0.009442485, -0.06424783, 0.0047425367, 0.07072129, -0.04205313, -0.00030857668, 0.038889408, -0.0385487, -0.0014191106, -0.0038694718, 0.049378354, -0.014589612, 0.052079685, -0.027475683, -0.004949395, 0.024141612, 0.013579656, 0.024567496, 0.0023682262, -0.02170798, 0.05860181, -0.014918152, -0.019359527, -0.007878877, 0.022158202, -0.04013056, 0.027402675, -0.0055425926, 0.027792055, 0.009193038, -0.012472354, 0.049840745, -0.019237846, -0.04480313, -0.016329657, 0.043756668, -0.02927657, 0.014443595, 0.042783216, 0.029519932, -0.049256675, 0.042442508, 0.0019316939, -0.014674789, 0.052079685, 0.030809756, 0.008967927, 0.01954205, 0.016597357, 0.008852329, 0.04643366, -0.028741172, -0.048283223, -0.043975696, 0.013786514, 0.021123908, -0.043196935, 0.039960206, -0.01216815, 0.04533853, 0.0013788035, 0.014029877, 0.03178321, -0.055486765, 0.027427012, -0.0357987, -0.0027332709, -0.06171686, -0.015915941, -0.014394922, 0.019882757, 0.007507749, 0.089168206, -0.07369032, -0.0020822748, 0.07310625, 0.0004928101, -0.025918161, -0.03630976, 0.038865075, -0.028789844, 0.0076294304, 0.01658519, 0.070769966, -0.017692491, 0.00042778655, -0.010513282, -0.07349563, 0.016767712, 0.031296484, -0.028205773, -0.035555337, -0.00924171, -0.0024762186, 0.027354002, -0.06429651, 0.00013907815, 0.013238948, 0.0004996547, -0.044511095, -0.067216866, -0.02625887, -0.058504466, 0.022851788, -0.013044258, -0.033608433, 0.008414276, -0.02039382, -0.057433672, 0.00727047, -0.0011476087, 0.04738278, 0.009789277, 0.000115217175, -0.060354028, 0.0015210188, 0.0113468, 0.0146261165, 0.027938074, -0.019834084, 0.0068871733, -0.049792074, -0.011079101, -0.006716819, 0.016962402, 0.06789828, -0.074761115, 0.019834084, 0.019980103, 0.03618808, -0.013324125, 0.0061966307, -0.032780997, 0.0035652681, 0.016329657, -0.035287637, 0.0028975408, 0.021744484, -0.029690288, 0.0006011827, -0.062057566, 0.03789162, 0.01249669, -0.031588517, 0.016329657, -0.050619505, -0.05149561, -0.01539271, 0.012545363, -0.034630556, 0.023119487, -0.030444713, 0.025893824, 0.051690303, -0.011626668, 0.003966817, -0.019919263, 0.008116157, 0.0127278855, 0.031320818, 0.032075245, -0.052809775, 0.009089609, 0.03604206, 0.010495029, 0.005186674, -0.031612854, -0.0388164, -0.006050613, 0.04112835, -0.012533195, -0.024165947, -0.055243403, 0.003154593, 0.049646053, -0.017059747, 0.041761093, 0.01388386, 0.012557532, 0.005439163, 0.029203562, -0.005557803, 0.030274358, 0.0014426863, -0.027013294, 0.02217037, -0.05071685, -0.025407098, 0.027256656, -0.016560853, 0.01697457, 0.004502216, -0.0053752805, 0.018872801, -0.014090719, -0.011772686, 0.005010236, -0.010227331, 0.008450781, 0.003154593, -0.084495634, -0.024324132, -0.0380133, 0.007976223, 0.05553544, 0.0390841, -0.043975696, 0.029957987, 0.019761076, -7.09175e-05, -0.045825254, -0.013068594, 0.029617278, 0.033073034, -0.018215721, 0.0043805344, 0.01407855, -0.04185844, 0.0010647132, 0.01788718, -0.029349579, 0.004620855, -0.010245583, 0.060743406, -0.07232749, -0.021063069, -0.017071916, 0.051738977, -0.005585181, -0.01697457, -0.0011666215, -0.038378347, 0.031369492, -0.0142610725, 0.01888497, 0.003245854, 0.011371137, -0.10425671, -0.008201334, -0.0006525171, -0.037088525, -0.009856202, -0.022073025, 0.056752253, -0.03343808, -0.028108427, -0.017278774, -0.0064308676, 0.03433852, 0.007672019, -0.046263307, 0.0008806699, 0.009138281, 0.06356642, 0.0018358697, 0.01828873, 0.018446917, 0.0082317535, -0.017582977, 0.019347358, -0.036626134, -0.022121698, -0.05353986, -0.005098455, 0.0062544295, 0.056654908, 0.0593319, 0.0013080762, 0.0139447, 0.013956869, 0.006160126, -0.053831898, -0.010993924, 0.028984535, -0.033365067, 0.017789837, -0.0070818635, -0.026429223, -0.008846246, -0.035896044, -0.006327438, -0.036893833, 0.035750028, 0.05475668, 0.016804216, 0.0023545371, 0.0030222645, -0.062495623, -0.039838526, -0.028084092, 0.0017065831, 0.022644928, -0.012040385, 0.018081872, -0.031320818, -0.01789935, -0.010458525, 0.031588517, 0.034508877, 0.025285417, -0.020649351, 0.0172301, 0.008055315, -0.026867276, 0.0010015909, -0.031564184, 0.029909315, 0.0023362848, -0.048185878, -0.05407526, 0.057384998, 0.05237172, 0.009168701, -0.006923678, 0.033462413, -0.06453987, 0.057677034, 0.012934744, 0.07257085, 0.017351782, -0.053831898, 0.018848466, -0.0019849297, 0.009698016, -0.016171472, 0.017096251, 0.009460737, 0.044316404, 0.016597357, -0.040446933, -0.04769915, 0.013543151, 0.022681432, -0.025455771, 0.02750002, -0.0024290672, 0.043756668, -0.0022997805, 0.0031074414, -0.0453872, 0.056216855, 0.038427018, -0.046044283, -0.005475668, 0.0026922033, 0.0024336302, -0.03506861, -0.0025705218, 0.004039826, -0.016986739, 0.011219035, 0.005554761, -0.009065272, -0.060840752, -0.0108114015, -0.012752222, 0.009199122, 4.8149752e-05, -0.015039834, -0.011717929, 0.055486765, 0.004128045, 0.016427003, 0.01637833, 0.021659307, -0.020296475, -0.005646022, 0.010227331, -0.0050619505, -0.04614163, -0.01046461, 0.036163744, -0.04008189, -0.013482311, 0.028205773, -0.023338513, 0.017473465, 0.04039826, -0.026161524, 0.04762614, -0.033803124, -0.0050224042, 0.056460217, 0.001784155, 0.04862393, 0.0461903, -0.03618808, 0.040252242, -0.013603992, 0.013117266, -0.0024762186, -0.02526108, 0.019700237, -0.029982323, 5.7133268e-05, -0.023046477, -0.044219058, 0.029982323, -0.029179225, 0.054951366, 0.03460622, -0.02145245, 0.015782092, -0.010008303, 0.0044778795, 0.0043987865, 0.029471261, 0.034971263, 0.008085736, -0.04178543, -0.033584096, 0.059039865, 0.065026596, 0.046993397, -0.016938066, -0.036699142, 0.051349595, 0.003221518, 0.04407304, 0.018897139, -0.039911535, -0.015830765, 0.011632752, -0.044584103, 0.000103049024, -0.026867276, -0.024068601, 0.04670136, 0.029252233, -0.0066681467, -0.02308298, -0.034289848, -0.01894581, 0.043902688, 0.024628337, 0.070769966, -0.010969588, -0.071402706, -0.010440273, -0.027475683, -0.02499338, -0.009010515, 0.038110647, -0.022000017, -0.06322571, -0.048283223, -0.055486765, -0.045435876, -0.013141602, 0.015064171, 0.0071548726, -0.0032823586, -0.012521027, -0.0069966866, 0.0008768673, 0.011176446, -0.0031667612, 0.0029416503, 0.020320812, 0.006728987, -0.0030329116, 0.017400455, -0.036407106, -0.00014164488, 0.013640497, -0.036650468, -0.02881418, -0.0026055053, -0.022486743, 0.015648242, 0.0040854565, -0.01736395, -0.016573021, -0.04480313, -0.008535958, 0.0053935326, -0.006881089, 0.026307542, 0.057336327, 0.029227898, 0.010945251, -0.014711294, -0.028862853, -0.041688085, 0.010695804, 0.01611063, 0.021768821, -0.014334082, -0.02369139, 0.017509969, -0.036553126, 0.025480106, -0.017084083, 0.0639558, -0.0016807258, 0.026137188, -0.005801166, 0.0029553396, 0.0077146073, 0.01539271, -0.007860625, -0.029860642, 0.014784303, -0.0053752805, 0.036431443, -0.0032002237, -0.012484523, -0.0035135534, -0.07388501, -0.013713506, -0.004690822, 0.0019301729, -0.012959081, 0.008310847, 0.021890502, -0.0010761208, 0.0014092239, 0.022073025, -0.01546572, -0.0066559785, 0.03190489, 0.009977884, 0.00012177657, -0.007884962, -0.02915489, -0.009247795, -0.0014115055, -0.00031523115, -0.032415953, 0.0032184757, 0.01618364, -0.031856216, -0.03355976, 0.003638277, 0.010458525, -0.019846253, 0.04185844, -0.012235075, -0.037331887, -0.0005475668, -0.032586306, -0.00015951684, -0.00051676616, -0.02361838, -0.019785414, 0.023362849, -0.008462949, 0.016293153, -0.031077456, 0.041298702, 0.010093481, -0.024397142, -0.04288056, -0.053345174, -0.016560853, 0.029252233, 0.016560853, 0.03645578, -0.018191384, 0.030274358, -0.04185844, 0.05149561, -0.04762614, 0.048088532, 0.003641319, -0.019712403, -0.026964622, 0.0057950816, -0.0053722383, -0.0068263323, -0.054318625, -0.0082500065, -0.008864498, -0.061619513, 0.017753331, -0.0034648809, 0.03163719, 0.019396031, -0.007745028, -0.014954657, 0.032415953, -0.013129435, 0.008712396, 0.010087397, 0.022657096, -0.008542041, -0.015867269, 0.0063700266, -0.008213501, 0.049061984, 0.038938083, -0.014188063, -0.029422589, -0.018872801, -0.021501122, -0.03453321, -0.021087404, -0.03270799, 0.033243388, 0.027013294, 0.029519932, -0.028011082, 0.031685863, 0.008803657, 0.0016579105, 0.004669528, 0.007124452, -0.009010515, 0.03626109, -0.027232321, 0.038694717, -0.022085194, 0.002573564, -0.012003881, 0.021501122, -0.00048216296, -0.0018115335, 0.009813613, -0.0028564734, 0.0032793165, -0.023460194, -0.033657104, 0.0067715757, 0.0071609565, -0.0060262764, 0.050765526, 0.029227898, -0.011882199, -0.047139414, 0.015964614, -0.028838517, 0.0091200285, -0.045800917, -0.002908188, -0.032513298, -0.059380576, 0.009454653, 0.023910416, -0.0149059845, -0.010470694, -0.018203553, 0.021793157, -0.028473472, -0.0058833007, 0.0010251667, 0.050181452, 0.012277664, -0.017132755, -0.028789844, -0.027938074, -0.039522152, -0.004794251, 0.0002363283, -0.006546465, 0.0051106233, -0.0082317535, -0.0041067507, 0.03402215, 0.008736732, 0.026915949, 0.010075228, -0.038475692, -0.015709082, -0.03901109, 0.004432249, -0.021269927, -0.0281571, -0.01724227, -0.022547582, -0.006601222, -0.009010515, -0.016524348, -0.002667867, -0.017120589, -0.03533631, -0.016998906, -0.020637183, 0.016828552, -0.021038732, 0.048039857, -0.024178116, -0.01862944, 0.008694144, 0.028205773, -0.031296484, 0.036407106, 0.007343479, -0.0110547645, 0.07042926, -0.0023362848, -0.009424233, 0.013932533, 0.012429765, 0.046068616, -0.047480125, 0.017278774, 0.0077206916, 0.031491175, -0.018398244, 0.0015620863, 0.007179209, 0.009290383, -0.00631527, -0.032805335, -0.036674805, 0.057336327, 0.12246027, -0.03355976, 0.012228991, 0.02178099, -0.041955784, -0.022620592, 0.02019913, 0.019469041, -0.01815488, 0.0019240888, 0.027134975, -0.0016594315, 0.00021256237, 0.0012464749, -0.030225687, -0.01966373, 0.06687616, 0.014832975, -0.00421018, -0.023448026, -0.018933643, -0.001536229, 0.0032854006, 0.00957025, 0.0063335225, 0.035141617, 0.0010099565, 0.009454653, 0.018824128, -0.05981863, -0.0023879996, 0.021488953, 0.02485953, -0.014248904, 0.022596255, 0.006160126, -0.013068594, -0.062641636, 0.021111742, -0.0015202583, -0.06171686, 0.0054330793, -0.036139406, -0.012825231, 0.009746688, -0.017546473, 0.037356224, -0.0064004473, -0.01033076, 0.046506673, -0.017668154, 0.023022141, 0.043318614, -0.004091541, 0.03592038, 0.007021023, -0.018398244, -0.00038462764, -0.0030678948, 0.01987059, -0.011413725, -0.02066152, 0.017388288, -0.061424825, 0.030079668, 0.010215162, 0.006230093, -0.03781861, -0.010519366, 0.010872242, -0.025407098, -0.011212951, 0.0034192502, 0.036090735, 0.052469064, 0.04112835, -0.045581892, -0.001413787, 0.12606204, -0.006704651, -0.023800902, 0.0056977365, -0.009266047], [0.02235817, 0.002345942, -0.018286318, 0.010278341, 0.042125158, 0.007995636, -0.04340841, 0.024727246, 0.022740677, 0.027787305, -0.03637521, 0.00019780872, -0.020877495, -0.032278683, 0.032722883, 0.025541617, -0.02620792, -0.0037818868, 0.004636359, -0.035141315, 0.018088894, -0.034228235, -0.016694592, -0.026035175, 0.031908512, -0.007187436, -0.013375416, 0.023814164, 0.012363623, 0.017582998, 0.011376508, -0.018236961, 0.018816892, -0.02445579, -0.0016919778, -0.014732701, 0.009211022, 0.057005927, 0.014695684, -0.02633131, -0.027392458, -0.002262654, -0.017916149, -0.03543745, -0.02164251, -0.006129371, 0.014930124, -0.004679545, 0.001738249, 0.007101063, -0.005395204, 0.006539641, -0.030575907, -0.026281953, -0.038694933, -0.04121208, 0.057203352, 0.004935578, 0.061151814, 0.01648483, 0.0040625976, 0.023974571, 0.052020993, -0.007304656, -0.0013750212, -0.016472492, 0.00013167968, 0.023666097, 0.023888199, 0.057203352, 0.014991819, -0.002568043, -0.0015446817, -0.001311013, 0.019001976, -0.047899786, 0.057499487, 0.033043697, 0.026010497, -0.05789433, 0.032673527, -0.030255094, 0.04538264, -0.007545265, 0.02024821, -0.028749743, 0.007218283, -0.14135496, -0.03464776, 0.0052132043, -0.012493182, 0.011592439, 0.038694933, 0.012419148, -0.010444918, -0.014165109, 0.02808344, 0.0015200039, -0.0533536, -0.016608221, -0.0019125366, -0.037485715, -0.05616688, -0.090222366, -0.004599342, 0.038324766, 0.045357965, -0.017336218, -0.013622195, 0.0015439106, -0.0032636512, -0.014214465, 0.013597518, 0.018051878, 0.011876235, 0.057400774, -0.057252705, -0.060806323, -0.053649735, -0.013585179, -0.09895834, -0.06297798, 0.038843, 0.027195036, -0.0011791405, 0.012345115, -0.010580646, 0.039953504, 0.019322788, -0.010963153, -0.038102664, -0.009519496, 0.0070948936, 0.015608766, 0.027195036, 0.01006241, 0.034919217, -0.014313176, -0.022395186, -0.007039368, -0.06376767, 0.05315618, -0.007933942, 0.04012625, -0.029687503, -0.044272136, -0.011703489, -0.01848374, -0.047110092, -0.015830867, -0.011944099, -0.023456335, -0.02222244, 0.0051391707, 0.015941918, -0.04390197, 0.0339321, -0.005641983, 0.00795862, 0.063866384, 0.055130407, -0.045728132, 0.011314813, 0.029095232, 0.0030847364, -0.056561727, 0.030921398, -0.026183242, -0.022740677, 0.0125610465, -0.006502624, -0.005898016, 0.035240028, -0.013029926, -0.028774422, 0.0073786895, 0.038053308, 0.01778042, -0.055673324, -0.024628535, -0.019828685, 0.08030186, 0.060658257, -0.0433097, 0.0067308946, 0.0433097, 0.040767875, -0.0032790748, 0.029983638, -0.06840711, -0.050836455, 0.026010497, -0.011610948, -0.017052423, -0.032698207, -0.021630172, -0.004608596, -0.0063915737, 0.017496625, 0.01615168, -0.010919967, -0.048763514, 0.04612298, -0.01931045, -0.031785123, 0.039040424, 0.030279772, 0.018076556, -0.011684981, 0.0437539, -0.017114118, 0.032920305, 0.018236961, 0.0007650146, 0.005311916, 0.024184333, -0.028774422, -0.011721998, 0.007557604, -0.0118515575, 0.028034084, -0.043704543, 0.030378483, 0.0050034425, -0.015510054, 0.021716544, -0.007822892, -0.006514963, 0.006854284, 0.0156828, -0.010272172, -0.013128638, -0.039262526, 0.011074203, -0.03383339, 0.025134431, -0.02118597, -0.015028835, 0.03252546, 0.010037732, -0.042149838, 0.010222816, -0.030970752, -0.0063360487, 0.0031495157, 0.026380666, 0.030378483, -0.00038983356, -0.026997613, 0.0133384, 0.002241061, 0.013350739, 0.007896925, 0.014868429, -0.038917035, 0.072553, 0.054044582, -0.0057962197, -0.012437657, 0.026898902, -0.022876404, 0.010845933, -0.031168176, 0.06213893, -0.024912331, -0.013289045, 0.022617286, -0.06973972, -0.02422135, -0.03602972, 0.047554296, -0.043605834, 0.039361235, 0.03496857, -0.010506612, 0.0231602, 0.07827827, 0.013165655, -0.022370508, -0.00077156967, -0.017027745, 0.03733765, 0.042125158, 0.036547955, -0.010833594, 0.038102664, 0.032254003, -0.060016632, -0.04659186, 0.028108118, -0.0033901252, -0.009136989, 0.014757379, 0.003229719, 0.03871961, -0.01521392, 0.049183037, 0.019791668, -0.028132796, -0.020075465, -0.010093258, -0.015719816, -0.03874429, -0.0343763, -0.0108891195, 0.07975894, -0.004491376, 0.06811098, -0.03371, -0.024246028, 0.050984524, -0.031809803, -0.056068167, -0.016188696, -0.009272718, 0.0008930312, -0.0013927585, -0.0014513684, 0.031266887, -0.032599494, -0.024986364, -0.033290476, -0.11687449, 0.0290212, 0.03018106, 0.03533874, 0.059523072, -0.04469166, 0.045259252, -0.0039762254, -0.07615597, -9.152991e-05, 0.011907082, -0.033487897, -0.037732497, -0.052613262, 0.0030862787, -0.06085568, 0.024961686, -0.046863314, 0.005416797, -0.0057283556, -0.051971637, -0.021334037, 0.0021546884, 0.017755743, -0.026133886, -3.540217e-05, 0.019150043, -0.005339679, 0.0013912161, 0.00760696, 0.017348558, -0.0019125366, 0.0024122638, -0.011148238, -0.0039052763, -0.017854454, -0.0037078531, 0.034450337, 0.05542654, -0.052860044, 0.056216236, 0.029687503, 0.056216236, -0.011826879, -0.012431487, -0.0069591654, 0.01789147, 0.016077645, -0.051181946, 0.029860249, -0.056216236, -0.01989038, -0.051033877, -0.047233485, 0.043951325, -0.030946076, -0.014559955, 0.03289563, 0.031291567, 0.0011105051, -0.008088179, 0.014263821, -0.015263275, 0.021025563, -0.009655225, 0.010802747, -0.020457972, 0.03262417, 0.0030523466, 0.028478285, 0.018940281, 0.005580288, 0.058437247, 0.049355783, -0.053106822, 0.04622169, -0.004818358, -0.008945735, -0.03252546, 0.014646328, -0.010784239, -0.04469166, 0.031513665, -0.05369909, -0.0012840215, -0.0067925896, 0.035067283, 0.08346063, -0.021482104, -0.025122093, 0.009038278, 0.0049911034, 0.008563228, 0.014473583, -0.0038466663, 0.0652977, -0.021802917, 0.026652122, 0.021506783, -0.038818322, -0.021938644, 0.047332194, -0.06144795, 0.037263617, -0.051922284, 0.0074095367, 0.009538005, -0.041582245, 0.016423136, -0.023209557, -0.028675709, -0.003053889, -0.009988376, -0.02269132, -0.010321528, -0.00038539924, -0.015596427, 0.04444488, -0.013943008, -0.022641964, 0.00620032, -0.015287953, -0.037954595, -0.0151769025, -0.015436021, -0.010204308, 0.014695684, 0.0069653345, -0.008217738, -0.02610921, -0.04928175, -0.018940281, 0.016089985, 0.006154049, 0.04703606, 0.035758264, 0.031661734, -0.076452106, 0.0013287502, 0.017003067, 0.10887885, 0.013819619, 0.008951905, -0.0038096495, -0.058684025, 0.04343309, 0.013301383, 0.021543799, -0.03277224, 0.025541617, -0.040224962, 0.045234572, 0.019705296, -0.029564112, 0.0073663504, 0.0052070348, 0.011555422, -0.003124838, -0.021000884, -0.00032563249, -0.0056820842, 0.09347985, -0.014559955, -0.001172971, 0.044148747, 0.039484624, 0.07970959, 0.012992909, -0.01649717, 0.055475898, 0.03765846, -0.011333321, -0.007711841, -0.029662825, -0.013461789, -0.04975063, -0.013646874, -0.007101063, 0.0027346187, 0.02292576, 0.039756082, 0.014646328, -0.0010364715, 0.005580288, -0.020507328, -0.023838842, 0.041606925, 0.03965737, -0.009062955, -0.011432033, -0.018520758, 0.00016137028, -0.012832503, -0.013177994, -0.012419148, -0.0033623627, -0.03358661, -0.010124105, -0.016312085, -0.02071709, -0.047134772, -0.0036399888, -0.041113365, 0.0138689745, 0.0409653, 0.0028287033, -0.011703489, -0.036473922, -0.01169732, -0.051971637, 0.038818322, -0.014411888, 0.013794941, 0.005780796, 0.019396823, 0.00201896, -0.007637807, -0.024986364, -0.027886016, 0.03894171, -0.003615311, 0.010377053, -0.033759356, 0.0550317, 0.07250364, -0.041014656, -0.030230416, 0.04000286, -0.012980571, 0.026898902, 0.036572635, 0.038571544, 0.015818529, -0.031143498, -0.031809803, -0.017866792, -0.02818215, -0.015053513, -0.0047875107, -0.011407355, 0.08005508, 0.04945449, 0.006283608, -0.028108118, 0.008853193, 0.0066753696, 0.009235701, 0.006706217, 0.011043356, 0.031143498, 0.0014606226, -0.016040629, -0.003593718, 0.10394327, 0.006249676, -0.045703452, -0.00760696, -0.019816346, -0.031513665, -0.009093802, 0.016780965, -0.030674618, 0.007773536, 0.046838637, -0.0042168344, -0.031661734, -0.027367782, -0.01615168, 0.016188696, 0.03886768, -0.0077611967, -0.009877326, -0.022777693, 0.0025248567, 0.0056234743, -0.00018122826, 0.023110844, 0.018409707, -0.028478285, -0.021593155, 0.011061865, 0.020556683, 0.0044728676, -0.009815631, 0.02375247, -0.054242004, 0.02376481, 0.04034835, -0.08005508, 0.014769718, 0.048738834, -0.0024770433, -0.0044050035, -0.019643601, 0.0030400078, 0.09155498, -0.013128638, 0.067321286, 0.06949294, 0.028947165, 0.05685786, -0.047603652, 0.052958753, -0.016916694, -0.036893446, 0.028256185, 0.0013989279, 0.04047174, -0.0015161479, -0.026479376, -0.039484624, -0.022901082, 0.020828139, 0.0180272, 0.030329129, 0.020766445, 0.0058208974, 0.018940281, 0.01286952, 0.0033808711, -0.03486986, 0.03674538, -0.041606925, -0.03499325, 0.018520758, -0.018927943, 0.04424746, -0.033167087, -0.04671525, 0.042421296, -0.019939736, 0.049429815, -0.021297019, -0.043605834, 0.01017963, 0.022136068, -0.029292656, -0.0008652685, -0.03652328, -0.065149635, 0.008082009, 0.0074157063, 0.0072367913, 0.012783147, -0.04237194, -0.056216236, 0.011956438, 0.017731065, 0.058881447, -0.04669057, -0.045407318, -0.0155347325, -0.020223532, -0.06465607, -0.008982752, 0.0065087937, -0.035708908, -0.042668074, -0.04187838, -0.053106822, -0.03765846, -0.02620792, -0.004059513, -0.0024847551, -0.024036266, -0.011610948, -0.016447814, -0.050120797, 0.018471401, -0.025220804, -0.016373781, 0.020075465, 0.02142041, -0.013313722, -0.014917785, -0.030279772, 8.078153e-05, 0.013893653, -0.02422135, -0.040792555, -0.03405549, -0.020322243, 0.0364986, 0.053649735, -0.021679526, -0.015238598, -0.036671344, -0.03965737, 0.032846272, -0.010926136, -0.001872435, 0.057746265, 0.029193945, 0.012857181, -0.027589882, 0.00032621087, -0.05873338, 0.04881287, 0.021371054, 0.012881859, 0.0016487916, -0.029909603, 0.020223532, -0.02680019, 0.020026108, 0.00045885454, 0.054784916, -0.010395561, -0.013634535, -0.04269275, 0.012906536, -0.008143704, -0.008088179, 0.022913422, -0.057499487, 0.0013850466, 0.036572635, 0.048220597, -0.0057838806, -0.048886903, -0.029144589, -0.03955866, -0.016694592, 0.006033744, 0.02351803, -0.047332194, -0.007687163, -0.021617832, -0.002844127, -0.069196805, -0.009649055, -0.00889638, 0.013215011, 0.033611286, -0.00021612435, -0.0065458105, -0.013548162, -0.007557604, -0.025134431, 0.029193945, -0.025245482, -0.0057406942, 0.046986703, 0.036449246, 0.00254645, -0.05360038, 0.005228628, -0.0017475032, 0.0068727927, 0.03346322, 0.011555422, -0.021926306, 0.031809803, -0.022099052, 0.041458856, -0.01509053, -0.0048060194, -0.032722883, 0.0028086524, 0.021309359, 0.009081464, -0.02680019, 0.025714362, 0.021790577, -0.0042569363, -0.04459295, -0.0054815765, -0.011154407, 0.029662825, 0.017249845, 0.013165655, -0.0014228347, 0.047233485, 0.019359805, 0.04693735, 0.007884586, 0.023308268, -0.012141522, 0.007847569, -0.014374872, 0.016830321, 0.030082349, 0.02751585, -0.03941059, 0.00035069598, -0.026824867, -0.048615444, 0.020729428, 0.016287409, 0.038226053, 0.0015516224, -0.0026929749, 0.0042785294, 0.015978934, 0.0022441456, -0.014189787, -0.010673188, 0.013400095, -0.015436021, -0.036177788, 0.021087257, -0.020655395, 0.030872041, 0.04303824, -0.0028765167, 0.022703659, -0.018323334, -0.045925554, 0.0012662843, -0.044543594, -0.014633989, 0.004960256, 0.026479376, 0.04155757, -0.0014197499, 0.0746753, 0.029662825, 0.023962231, -0.03405549, -0.015867883, -7.634723e-05, 0.006835776, -0.024357079, -0.004796765, 0.021531459, -0.038423475, 0.013535823, 0.03474647, 0.008353466, 0.028305542, 0.039830115, 0.012406809, -0.013042266, -0.011376508, -0.04483973, -0.020988546, 0.0030554314, 0.004549986, 0.023443997, 0.024974026, 0.008600245, -0.012264912, -0.009538005, 0.011203762, -0.023715453, -0.06840711, -0.04562942, -0.022864066, -0.013733246, -0.033413865, 0.004435851, 0.020075465, -0.011573931, -0.009161667, 0.026972935, -0.007205944, 0.015806189, 0.0012809368, 0.015806189, 0.048023175, -0.0456541, -0.017582998, -0.020988546, -0.019470856, 0.03242675, -0.011450541, -0.012807826, -0.003309922, 0.0047905957, -0.011302474, 0.058782738, 0.014757379, 0.062632486, 0.039015744, -0.017052423, -0.048738834, -0.04012625, 0.028601676, 0.0074835704, -0.0266768, 0.0013171824, -0.0208158, -0.019581906, 0.015867883, -0.0028796014, 0.017175812, -0.0007225995, -0.026010497, -0.014115754, -0.026281953, 0.040298995, -0.047134772, 0.020766445, -0.04200177, 0.006521133, -0.022234779, 0.033956777, -0.037633784, 0.012116845, 0.0035165995, 0.003343854, 0.042445973, -0.028947165, 0.014967141, -0.009655225, -0.0065951664, 0.0360544, -0.049084324, -0.0024847551, 0.031908512, 0.026454698, -0.0004900875, -0.022493897, -0.017533641, -0.007452723, -0.007755027, -0.012770808, -0.0139923645, 0.03933656, 0.07161524, -0.03593101, 0.015016496, 0.029761536, -0.046024267, -0.053304244, -0.020643055, 0.050589677, 0.028502963, -0.021790577, 0.036646668, -0.05021951, 0.01357284, -0.013708568, -0.012326607, -0.010994, 0.04752962, -0.0046980535, 0.0035505316, -0.009846479, -0.02117363, -0.01111122, -0.0016302832, 0.05182357, -0.009389938, 0.009840309, 0.004438936, 0.026183242, 0.044050034, -0.032722883, -0.012369793, 0.0017737234, 0.026726156, -0.013671552, -0.0139923645, 0.0071072327, 0.016225712, -0.08232544, 0.011506067, -0.028256185, -0.010592985, 0.004762833, 0.008674279, -0.0033654473, -0.03005767, -0.020976208, -0.009630547, 0.0040163267, -0.02445579, 0.056068167, -0.07334269, 0.00025333397, 0.033167087, -0.003933039, -0.014448905, -0.0010364715, 0.0056481524, 0.013264366, -0.022938099, 0.007933942, -0.012036641, -0.013905992, 0.049306426, -0.058190465, 0.024727246, -0.0028302455, -0.035042606, -0.037757173, 0.0027947712, 0.004926324, 0.053649735, -0.002497094, -0.0339321, 0.010167291, 0.025985818, 0.050737742, -0.009211022, -0.003896022, 0.119046144, -0.015707478, -0.045876198, 0.00044381645, -0.024073282], [-0.012735546, -0.010034234, -0.021366429, 0.02413985, -0.0025557068, 0.02507172, -0.037785076, 0.008714086, 0.01033931, 0.058663383, -0.03203855, 0.006328945, -0.033436354, -0.03849507, -0.002851076, 0.027601078, -0.024162037, -0.011481959, 0.012524766, 0.0080429185, 0.0072608143, -0.062834606, -0.04220036, -0.0017139737, 0.051430304, -0.024805471, -0.0054026227, 0.029043257, 0.0072552674, 0.01916988, 0.058308385, 0.020423466, 0.0380957, 0.012158674, 0.04921157, 0.050409686, 0.005840823, 0.05928463, 0.015908338, -0.011836957, -0.046637833, 0.02157721, 0.017827544, -0.0361654, -0.057465266, -0.0036304072, 0.049433444, -0.040336624, 0.009141193, -0.03305917, 0.021654865, 0.01636318, -0.01434413, 0.019480504, -0.036320712, 0.02347423, 0.08440072, -0.06301211, 0.047880325, -0.0108052455, -0.04819095, 0.01976894, 0.065585844, -0.0069113635, -0.005385982, -0.013023982, -0.006334492, -0.0011059013, 0.04104662, 0.08231511, -0.0043542697, -0.008913772, 0.029731065, -0.03332542, 0.021477366, -0.060394, 0.013467729, 0.03110668, -0.017716609, 0.029464817, 0.013811633, -0.00019933959, 0.0063788667, -0.028710445, 0.01009525, -0.014155537, 0.033902287, -0.10889557, -0.08990319, 0.007466047, -0.020955963, 0.01479897, 0.02859951, 0.017982857, -0.025781715, 0.00638996, 0.021455178, 0.022764234, -0.056533396, 0.016562866, 0.011748208, -0.015531153, -0.028067013, -0.065363966, 0.02187674, 0.024361724, 0.018093793, 0.043553792, -0.021410804, -0.030707309, -0.007854326, -0.004193411, -0.018881446, 0.06949082, 0.019236444, 0.03860601, -0.032770734, -0.03749664, -0.044308163, -0.011603991, -0.05449216, -0.028754821, 0.029952938, 0.017727703, 0.043198794, -0.007238627, -0.014488347, 0.058397137, 0.04397535, -0.018282386, -0.0013652161, 0.023540791, 0.0072774547, 0.027800765, 0.059329007, 0.0066562085, 0.07357329, -0.046060964, -0.029376067, -0.00085074664, -0.03399104, 0.045794714, -0.0039410302, 0.020423466, -0.012668984, -0.01522053, -0.044685345, -0.03969319, -0.0034473613, -0.013534291, -0.031151056, 0.005341607, -0.021921113, -0.018648477, 0.02203205, 0.0056522302, 0.030840432, 0.011415398, 0.010195093, 0.00499493, 0.06665084, -0.03077387, -0.0040741544, 0.057953387, 0.0259814, -0.093719415, 0.024184225, 0.0040214593, -0.034945093, 0.03314792, 0.014277567, -0.01116579, 0.025582029, 0.008702992, -0.04086912, 0.0032171675, 0.048679072, -0.0064121475, -0.008347995, -0.04490722, -0.011836957, 0.082137614, 0.044219412, -0.005219577, 0.0046482524, 0.071532056, 0.020933775, 0.010572278, -0.0005134294, -0.045439716, -0.027978264, -0.0013617494, -0.020035189, 0.023429854, -0.018692853, 0.006511991, 0.0058019953, -0.06744958, -0.003683102, 0.019724565, -0.019447222, -0.024162037, 0.012036644, -0.034834158, -0.024583597, 0.01395585, 0.036697898, -0.024849845, -0.019591441, 0.01892582, 0.0074605006, 0.020711903, 0.011803676, -0.034701034, 0.014077881, 0.04102443, -0.04379785, -0.028466385, -0.054580912, -0.0026416827, 0.048013452, -0.015608809, 0.03339198, -0.00054983055, -0.01748364, 0.01817145, 0.0424888, 0.0041462635, 0.0074494067, 0.02522703, 0.0072164396, -0.048723448, -0.066473335, 0.022708764, -0.07446079, -0.004304348, -0.03816226, -0.019303005, 0.027556704, 0.016829114, 0.021111274, 0.03044106, -0.053693417, 0.032082926, 0.021765802, 0.0421338, 0.06234649, 0.008514401, -0.033502918, -0.0006039123, 0.018060513, -0.0013340152, -0.020390186, 0.05515778, -0.008947054, 0.110493064, 0.045927837, -0.0363429, 0.003219941, 0.030707309, -0.008542134, 0.051519055, -0.028022638, 0.023984538, 0.027845139, -0.0030063875, 0.020933775, -0.063278355, -0.037319142, -0.010738683, 0.021366429, -0.06518647, 0.050232187, 0.006023869, -0.01181477, 0.030418873, 0.058219638, 0.033347607, -0.011925707, 0.0240511, 0.0099954065, 0.029220756, -0.014066787, 0.03700852, 0.0015725293, -0.017084269, 0.025959214, -0.07126581, -0.0064731627, 0.017439267, -0.028666072, 0.03110668, 0.021754708, -0.040381, 0.04743658, 0.016795833, 0.01032267, 0.042577546, -0.033414166, 0.0034196272, -0.026624834, -0.049300317, -0.027956076, -0.042111613, 0.032593235, 0.005829729, 0.05449216, 0.049078446, -0.046060964, -0.047969077, 0.05711027, 0.040381, -0.027933888, -0.001550342, -0.018071607, -0.0479247, 0.0073162825, -0.0053111, 0.05032094, -0.0070056594, -0.0021230532, -0.011570709, -0.0647871, 0.08604259, 0.04694846, 0.027689828, 0.029287318, -0.061370242, -0.00020315303, 0.0032948232, -0.024406098, 0.00926877, -0.031994175, 0.015775215, -0.03221605, -0.05946213, -0.017350517, -0.046549086, 0.0003196367, -0.011099228, -0.0041490365, 0.021044713, -0.0086918995, -0.081250116, 0.025781715, -0.020778464, -0.009939938, 0.0556459, 0.0073218294, -0.01946941, 0.0013548158, 0.010993837, 0.010239468, -0.002425356, -0.004737002, -0.014177724, -0.042266924, -0.040247876, -0.0014962602, 0.054092787, 0.029331692, -0.086663835, 0.0046177446, 0.064920224, 0.03718602, -0.023696102, -0.055246532, -0.049832813, -0.019147694, -0.007893154, -0.04836845, 0.01286867, -0.053471543, -0.0039770845, -0.008192684, 0.000573058, 0.048057824, -0.023518603, -0.040780373, 0.05431466, 0.0020079562, -0.025448903, 0.02067862, 0.026513897, 0.00977908, 0.017050987, -0.01745036, 0.025116093, -0.03297042, -0.0061126184, 0.020234874, -0.022087518, 0.013911475, 0.03829539, 0.049744066, 0.047969077, -0.03126199, 0.03667571, -0.002195162, -0.021033619, 0.016196774, 0.0031727927, -0.05174093, -0.0058186357, 0.058175262, -0.030330123, -0.02709077, -0.017971763, -0.0068281605, -0.005383209, -0.016019275, -0.0060460563, -0.015420216, -0.017982857, 0.015753027, 0.022187361, -0.0057298862, 0.019724565, -0.0032643157, 0.03589915, 0.058441512, -0.004018686, -0.023917977, -0.002013503, -0.04501816, 0.03254886, 0.0019441675, 0.0010906475, -0.026691396, -0.03929382, 0.012524766, -0.0059295725, -0.030485434, 0.047480956, -0.031128868, -0.055290908, -0.0024309028, 0.017616766, -0.02139971, 0.06895832, 0.008752914, -0.047480956, -4.8794864e-05, 0.037807263, -0.04699283, -0.00786542, -0.032238238, -0.0122696115, 0.040647246, -0.022941733, -0.013844914, 0.003253222, -0.048013452, -0.050897807, -0.022897357, -0.017217392, -0.0011377956, 0.01214758, 0.018049419, -0.08590946, -0.0043237624, 0.024849845, 0.07064456, -0.005549614, 0.03623196, -0.08120575, -0.011071494, 0.03625415, -0.00086045364, 0.021510648, 0.0002816755, 0.011825864, 0.0049228207, 0.04457441, 0.011615084, -0.034856346, -0.016585054, -0.015020844, 0.00649535, 0.023673914, -0.0052833655, 0.016707083, 0.00039521238, 0.024162037, 0.016729271, -0.028288886, 0.013512104, 0.0062346486, 0.0684702, -0.0150985, 0.014011319, 0.031838864, -0.036986332, -0.0143774105, 0.0050975466, -0.054802783, -0.0058685574, -0.025715152, -0.008719633, -0.02742358, 0.04053631, 0.09389692, 0.023607353, 0.0280892, 0.031017931, 0.0062845703, -0.017128643, 0.031971987, 0.047392204, 0.0049394616, -0.01753911, -0.0030590824, -0.045528468, -0.0031838864, -0.031151056, -0.015142875, -0.0051641087, 0.011670552, 0.028355448, 0.017849732, -0.011870239, -0.02851076, -0.021222211, -0.013611946, -0.052805923, 0.0039576706, 0.0037968124, 0.023829227, 0.02959794, -0.0078765135, -0.03332542, -0.027712015, -0.025604216, -0.015409123, 0.022919545, 0.019757846, 0.025582029, -0.01994644, -0.0053083263, 0.016285524, -0.024916407, 0.005763167, 0.0029148646, 0.0076269056, 0.0061126184, 0.03319229, 0.044441286, -0.020312529, -0.03911632, 0.04439691, 0.0038439604, 0.06926894, 0.045927837, 0.03490072, 0.041579116, -0.02245361, -0.039582253, -0.022409236, -0.006428788, -0.0029842001, -0.0068004266, 0.023030482, 0.068337075, -0.0056855115, -0.01032267, -0.06500897, 0.04484066, 0.011093681, 0.0116261775, 0.021865645, -0.011714927, 0.04237786, 0.022653297, -0.009168928, -0.023696102, 0.08196011, -0.010078609, -0.02675796, -2.1602344e-05, -0.025870465, -0.04186755, 0.019114412, -0.015630996, -0.043864414, 0.0009894177, 0.047880325, -9.90631e-05, -0.040514123, -0.022109706, -0.014921001, 0.012569141, 0.001841551, -0.0036193135, -0.003708063, 0.0009228556, -0.022142988, 0.0112878205, 0.013922569, -0.008103934, -0.005366568, -0.01748364, -0.029154193, 0.017794264, 0.008802836, -0.043886602, 0.016352085, 0.020967057, -0.046859708, 0.027379205, 0.026380774, -0.0839126, 0.008170496, 0.06651771, 0.019602533, 0.010777511, -0.059905875, 0.01938066, 0.03962663, 0.012735546, 0.06345586, 0.027401391, 0.026469523, 0.06585209, -0.034257285, 0.011348835, -0.0083646355, -0.023895789, -0.00054567045, 0.0013478822, 0.0065508187, 0.01543131, 0.0014394051, -0.010228374, -0.011221258, 0.00670613, -0.0062845703, 0.0010275522, 0.02926513, -0.01371179, 0.0010067516, 0.035832588, 0.022475798, -0.024627972, 0.09194443, -0.025959214, -0.03625415, 0.014077881, 0.0018748321, 0.032748546, 0.014455066, -0.05111968, 0.031151056, -0.0019150467, 0.052362174, 0.018271292, -0.025093906, 0.02851076, 0.04009256, -0.046549086, 0.014965376, -0.010893995, 0.01244711, 0.0078044045, 0.0035028297, 0.031328555, -0.031816676, -0.027379205, -0.035610717, -0.005452544, -0.0037635313, 0.0345901, -0.04725908, -0.06589647, -0.027312642, 0.037274767, -0.040602874, -0.0046121976, 0.009435176, -0.006145899, -0.023341104, -0.021377522, -0.06567459, -0.020800652, -0.018825976, -0.01190352, -0.02757889, -0.01181477, 0.047525328, -0.024184225, 0.0033807992, 0.015997088, -0.032903858, -0.018027231, 0.05963963, 0.031151056, -0.011936801, 0.019791126, -0.064920224, 0.0034473613, 0.011426492, 0.0027664867, -0.01042806, -0.012668984, -0.013190387, 0.009951032, 0.017050987, -0.007660187, -0.008636431, -0.06762708, -0.027512329, 0.06527522, -0.024694534, 0.032260425, 0.08746258, -0.0021507875, 0.009429629, -0.036431648, 0.00958494, -0.05711027, 0.05138593, 0.013356792, 0.003888335, -0.0049283677, -0.0053804354, 0.008087293, -0.00025359463, 0.0148655325, 0.020789558, 0.017650045, -0.008054012, 0.045262218, -0.010067515, 0.009296505, 0.009956579, 0.01169274, 0.020833934, -0.037785076, -0.0036137665, 0.011714927, 0.0043487228, 0.029952938, -0.051030934, -0.032770734, -0.058752134, 0.0060959775, -0.023230167, 0.030662933, -0.03811789, 0.026203275, -0.040602874, 0.0005387369, -0.020789558, 0.007610265, -0.014122256, 0.024184225, 0.034212913, -0.023185793, -0.003161699, 0.013146012, -0.007366204, -0.012158674, 0.021144556, -0.017683327, -0.0061015245, 0.02362954, -0.026269836, -0.013001794, -0.01916988, -0.016851302, 0.024539223, 0.023318917, 0.05333842, 0.017494734, -0.0077322954, -0.023274543, -0.05205155, 0.029087631, -0.0041407165, -0.03465666, -0.009967673, 0.0001457779, 0.0037496642, -0.0022644976, 0.00055711076, 0.04295473, 0.022675484, -0.022265017, -0.006983472, 0.010783058, 0.007122143, 0.000777251, 0.03303698, 0.038206637, 0.047835954, 0.04155693, -0.040292248, 0.019746752, -0.035854775, 0.058397137, -0.00340576, -0.012047738, -0.05032094, -0.019192068, 0.06190274, -0.022986107, -0.004639932, -0.005649457, -0.02097815, -0.04282161, 0.03592134, -0.009601581, 0.027778577, -0.032615423, 0.023318917, -0.012857576, 0.012624609, -0.022963919, -0.041090995, -0.015475685, 0.01065548, -0.0074216723, -0.051430304, 0.029797627, -0.003411307, 0.022531265, 0.041002244, -0.0018401643, 0.013168199, 0.014066787, -0.020478936, -0.032171674, -0.029154193, -0.0050004767, -0.010389232, -0.025337968, 0.05400404, -0.008775102, 0.03878351, 0.04734783, 0.021000339, -0.012480391, 0.0033336512, 0.01666271, 0.026735771, -0.049655315, 0.026891083, -0.001616904, -0.016873488, 0.061281495, 0.023097044, 0.032171674, 0.04346504, -0.0026014682, 0.011276727, -0.005577348, -0.015409123, -0.016762553, 0.016440835, -0.0060349624, 0.02935388, 0.026247649, 0.016962238, 0.010067515, -0.025382342, -0.003649821, -0.00047286815, -0.041090995, -0.052850295, -0.021044713, 0.021477366, -0.03656477, -0.008919319, 0.011581803, 0.013356792, -0.0003303837, 0.015109593, 0.0053610215, 0.0075159688, -0.0041656774, 0.00041289293, 0.03978194, 0.014100068, -0.02498297, -0.018226918, 0.0023047123, -0.024627972, 0.01778317, 0.00691691, 0.004731455, 0.0047037206, -0.011515241, -0.005663324, 0.057909016, -0.033458542, 0.055956528, -0.011404304, -0.011481959, 0.015819589, -0.02682452, 0.022342673, -0.0042738407, -0.013279136, 5.8588503e-05, -0.01095501, 0.014088974, -0.023074856, 0.010439154, 0.010583372, 0.008569868, 0.0068392544, 0.007410579, 0.0046621193, 0.029908564, -0.020090656, -0.0017333877, -0.024672346, -0.026624834, 0.02715733, 0.045794714, -0.008270339, 0.005516333, 0.033857916, 0.03867257, 0.042577546, -0.00818159, 0.021366429, -0.0026444562, 0.02959794, -0.007826592, -0.04677096, 0.008176043, 0.011481959, 0.0138892885, 0.008508854, -0.01938066, -0.005452544, 0.0033586118, 0.010134078, -0.018803788, -0.0405585, 0.05901838, 0.0481022, -0.047125958, 0.008425651, 0.026536085, -0.05222905, -0.01127118, 0.021510648, 0.04859032, 0.0421338, -0.059728377, 0.011615084, -0.03399104, -0.009479551, -0.009834548, -0.008758461, -0.01564209, 0.030219186, 0.0058630104, 0.010433607, -0.017749889, -0.0030479888, -0.014399597, 0.009152287, 0.0024517034, 0.017938482, 0.01817145, -0.007288548, 0.037718516, 0.04743658, -0.07446079, 0.015453498, -0.0104779815, -0.004296028, 0.010694308, 0.010134078, -0.022764234, -0.0027664867, -0.07814389, 0.032282613, 0.009318692, -0.032326985, 0.010278296, -0.0036331804, -0.016928958, -0.012791014, -0.03270417, 0.030197, 0.008142762, 0.0011773169, -0.009213302, -0.075969525, -0.0036997425, 0.030019501, 0.0035721653, 0.01277992, 0.025116093, 0.0041074352, -0.0038772414, 0.0010670734, 0.00039694578, 0.008797289, -0.05853026, 0.015109593, -0.048812196, 0.04324317, -0.0034334944, 0.025848277, -0.039338194, 0.0145438155, 0.013268042, 0.020290343, -0.015065218, -0.019658003, 0.021166744, 0.018615197, 0.014976469, -0.014843345, 0.00058103155, 0.11856926, 0.010145172, -0.048412822, 0.044796284, -0.03885007], [-0.010279156, -0.008836468, -0.026425246, 0.026016485, -0.009070905, 0.007441869, -0.0063959197, 0.03200364, 0.024357393, 0.045877498, -0.061747074, 0.002449565, -0.0075200144, -0.03813507, -0.00959388, 0.004493374, -0.009221185, -0.008860513, -0.0093414085, -0.038062934, 0.009407532, -0.050205566, -0.040996403, 0.0049802815, 0.064392, -0.0012563413, -0.0007709367, 0.025030648, 0.015965754, 0.03585081, 0.04794535, 0.01844237, 0.04628626, -0.023107063, 0.05059028, 0.0291904, 0.011439319, 0.070643656, -0.00969607, -0.035754632, -0.038664054, 0.011601621, -0.0080610225, -0.016855413, -0.06410346, -0.007093219, 0.012707682, -0.048161756, -0.0017056788, -0.070836015, 0.048907146, -0.016013844, 0.030344551, 0.02004135, -0.0040515508, 0.022602122, 0.08030967, -0.049820848, 0.017408444, -0.010910333, -0.034119587, -0.02803625, 0.058236532, -0.00824737, -0.0072314767, -0.03135443, -0.015268454, 0.009203151, 0.022109203, 0.047320187, 0.0025081744, -0.0098403385, 0.0017387404, -0.022674257, 0.018177876, -0.056312945, 0.04972467, 0.040563595, -0.0328933, 0.03154679, 0.0024871351, 0.025078738, 0.007802541, -0.01674721, 0.005578396, -0.038952593, 0.01399408, -0.10166146, -0.03524969, 0.007760463, -0.009587868, 0.020810783, 0.02923849, 0.028445011, -0.04688738, 0.0075741154, 0.020822806, 0.005803816, -0.07622205, 0.040659774, 0.0027456167, -0.0055453344, -0.041477297, -0.059486862, 0.02748322, 0.026930187, 0.023936609, 0.031667016, -0.016855413, -0.05732283, -0.016554853, -0.005307892, -0.023503803, 0.057947993, 0.0130082425, 0.036956873, -0.040154833, -0.068046816, -0.047897264, 0.02868546, -0.040515505, -0.008319505, 0.029719386, 0.060833372, 0.0011947266, 0.007327656, -0.014198461, 0.022770436, 0.028132427, -0.016771255, -0.0014825128, 0.02599244, -0.008361583, 0.0022782458, 0.045468736, -0.018706862, 0.03952967, -0.0116196545, 0.00043092808, 0.00479694, -0.015400701, 0.044675257, 0.032196, 0.016085979, -0.0077003506, -0.0014479484, -0.04943613, -0.026016485, 0.01779316, 0.01334487, -0.024321325, -0.008590008, -0.026569515, -0.013849811, 0.021279657, -0.008433717, 0.062372237, 0.03390318, -0.019452251, 0.017023725, 0.045613006, -0.041669656, 0.008006922, 0.04804153, -0.000994854, -0.08992759, 0.03313375, 0.023876498, -0.04128494, 0.03738968, 0.042318866, -0.012479257, 0.022349652, -0.0012751264, -0.022662234, -0.016578896, 0.07102837, -0.011812014, -0.018899221, -0.045228288, -0.05313903, 0.060833372, 0.012851952, -0.04118876, -0.012491279, 0.030560954, -1.660125e-05, -0.007964844, -0.004075595, -0.055014525, -0.023972675, -0.021832688, -0.03395127, -0.007814564, -0.01864675, -0.028324787, -0.031330388, -0.07578924, 0.02094303, 0.030993761, -0.0017507628, -0.03493711, -0.01904349, -0.0130082425, -0.02649738, 0.0016801312, 0.020233708, -0.040058654, 0.019199781, -0.014162393, 0.0025652808, 0.022517964, -0.021363813, -0.0015538959, 0.04073191, 0.026016485, -0.04948422, 0.009533768, -0.0151121635, 0.0035526208, 0.05438936, -0.008692199, 0.035466097, -0.005392049, -0.006053281, 0.03878428, 0.03173915, 0.035802722, 0.0060502756, -0.016470695, 0.026232889, -0.047103785, -0.07016276, 0.014366774, -0.060496744, -0.03238836, -0.016723165, 0.017228106, 0.043641333, 0.015605082, 0.018478436, 0.045156155, -0.065449975, 0.007712373, 0.04873883, 0.056361035, 0.022409763, 0.02553559, -0.018454392, -0.022037068, 0.01763687, 0.018983377, 0.028517146, 0.051359717, -0.004589553, 0.074009925, 0.0065401886, -0.046815246, -0.015472836, 0.015905643, -0.014318685, 0.03183533, -0.017660914, 0.047320187, 0.042366955, -0.014943849, 0.02724277, -0.05217724, -0.040106744, -0.04633435, 0.03443217, -0.08473391, 0.018334169, 0.026305024, -0.012467234, 0.00815119, 0.041549433, 0.013609363, -0.027916025, 0.047296144, 0.04058764, 0.04734423, 0.00061201554, 0.03224409, 0.025559634, -0.010657862, 0.009335398, -0.062949315, -0.031667016, 0.0028072316, -0.028469056, 0.008782367, 0.011854092, -0.021207523, 0.0546779, 0.030056013, 0.011114714, 0.029118266, -0.043617286, 0.03484093, -0.03993843, -0.017023725, -0.030152192, -0.043713465, 0.024116945, 0.0094436, 0.027747711, 0.041669656, -0.041693702, -0.0064860876, 0.05352375, 0.04058764, -0.042342912, -0.030248372, -0.041020446, -0.0685758, 0.02369616, 0.042102464, 0.071413085, -0.008355572, 0.012611503, 0.00048390182, -0.051215447, 0.07492363, 0.058861695, -0.010465504, 0.018730907, -0.06617132, -0.019115625, 0.0011669247, -0.013765654, -0.005662553, -0.02553559, 0.019680677, -0.020630447, -0.0717978, -0.016110023, -0.026112664, -0.0067565916, -0.038952593, -0.03464857, 0.022253472, 0.022566054, -0.08540717, 0.010784098, -0.03469666, -0.0016125051, 0.03712519, 0.0015614099, -0.039601803, 0.0014193952, 0.031330388, 0.008235347, -0.0036397832, -0.03460048, -0.031426568, -0.061843254, -0.028877817, -0.01364543, 0.036620248, 0.06501717, -0.11224118, 0.035057332, 0.05588014, 0.018574616, -0.03873619, -0.059150234, -0.018177876, -0.0048570517, 0.010279156, -0.055495422, -0.0130082425, -0.044723347, -0.01939214, -0.0039854273, -0.023107063, 0.008710233, -0.008836468, -0.008680177, 0.05102309, -0.026112664, -0.030512864, 0.0377744, 0.008878546, -0.0038591921, 0.013609363, 0.004544469, 0.014499021, -0.03159488, -0.013705542, 0.010134888, 0.0029064165, -0.011589599, 0.0132246455, 0.03383105, 0.042222686, -0.051552072, 0.030777358, -0.037557993, -0.044050094, -0.0038982648, -0.0028673436, -0.039457534, 0.013380937, 0.05361993, -0.015833508, -0.027170636, -0.021640329, 0.0181899, 0.03320588, 0.029310623, -0.040275056, -0.014535088, -0.046670977, 0.025776036, 0.018815065, -0.014727446, 0.009203151, -0.005358987, 0.021027187, 0.041501343, -0.0057917936, -0.019524386, 0.016566874, -0.05044601, 0.05063837, -0.01754069, 0.013320825, 0.011144769, -0.038760234, -0.009479666, -0.011757912, 0.010213033, 0.03325397, -0.028661415, -0.060063936, -0.0011872125, 0.015100141, -0.030344551, 0.042006284, 0.03270094, -0.059438772, -0.015088119, 0.04568514, -0.02059438, -0.003558632, -0.03265285, 0.0066003003, 0.024056833, -0.031667016, -0.022037068, 0.025174916, -0.027074456, -0.01269566, 0.028012205, -0.029959833, 0.021315724, 0.018069675, -0.02039, -0.07675104, -0.004018489, 0.016530808, 0.060881462, -0.019933147, 0.006528166, -0.060448654, -0.007832597, 0.05612059, -0.015015984, 0.010681907, 0.0176008, 0.0032731, -0.059871577, 0.03265285, 0.019584497, 0.0020257754, -0.03419172, 0.01665103, 0.02004135, -0.0130082425, -0.032965437, 0.017961474, 0.021640329, 0.03322993, 0.029695341, -0.012515324, 0.023323467, -0.0040515508, 0.040419325, -0.0147875585, 0.039697982, 0.04073191, 0.023119085, -0.004908147, 0.024814244, -0.05347566, -0.028853772, -0.05828462, -0.014583178, -0.0081692245, 0.027747711, 0.07285578, 0.012124596, 0.026978277, 0.040347192, 0.005464183, -0.005268819, 0.0010166446, 0.045276377, -0.017805181, -0.045805365, 0.020281797, -0.025511544, -0.00059548474, -0.056361035, 0.00494722, 0.0137896985, 0.006882827, 0.033470377, -0.0181899, 0.0065101325, 0.0012548385, -0.031186119, -0.0049111526, -0.051407807, 0.030368596, 0.006966984, 0.020269776, 0.02459784, -0.02668974, -0.046021767, -0.021616284, -0.022602122, -0.03145061, 0.040395282, 0.015532947, -0.012791839, -0.008049, -0.040419325, 0.0009617924, 0.0037209345, -0.0047248052, -0.021580217, -0.016819345, -0.01744451, 0.037004963, 0.032773077, -0.002421012, -0.015520926, 0.041717745, -0.024153013, 0.05612059, 0.03173915, 0.044891663, 0.022109203, -0.015989799, -0.019560453, -0.032364316, 0.008511863, 0.0023503802, 0.029406803, 0.023022907, 0.05583205, 0.03998652, -0.0032280157, -0.047873218, 0.025223006, 0.023467734, -0.009984608, 0.037654173, 0.004508402, 0.023503803, 0.024501663, -0.012827907, -0.030031968, 0.07304814, -0.0017582767, -0.059150234, -0.00929332, -0.013861833, -0.015508903, 0.0047458443, -0.01214864, -0.040948313, -0.014607223, 0.009551801, -0.002901908, -0.03849574, -0.029887699, 0.01199836, -0.005482217, 0.0009339906, 0.005686598, 0.006870805, -0.022950772, 0.0054311217, 0.020486178, 0.019175736, -0.017552711, 0.001345758, -0.0119442595, -0.006702491, 0.0014915296, 0.021303702, -0.03373487, 0.014030147, 0.040563595, -0.019656632, -0.0011834555, 0.057515185, -0.071413085, 0.003519559, 0.059054054, 0.0075019808, 0.019175736, -0.042294823, 0.020810783, 0.03914495, -0.0058398833, 0.041405164, 0.039697982, 0.022529988, 0.09439993, 0.004469329, 0.012912063, -0.0027606448, -0.024225147, 0.019211804, 0.0012458217, 0.0031859374, -0.011102691, 0.015088119, 0.022529988, -0.027122546, -0.005461178, 0.045661096, 0.01934405, 0.021351792, -0.021904822, 0.006203561, 0.028709503, 0.021916844, -0.0188872, 0.05294667, -0.03108994, -0.039794162, 0.02444155, 0.0119442595, 0.0312823, 0.006077326, -0.03553823, 0.03265285, -0.003844164, 0.059871577, 0.015100141, -0.02729086, 0.025415365, 0.04508402, -0.060881462, 0.00909495, -0.011938249, 0.0039613824, 0.02483829, 0.012256842, 0.004697755, -0.00964798, -0.032364316, -0.027026366, 0.0022121225, 0.017516645, 0.020906962, -0.04897928, -0.08112719, -0.019873036, 0.00055453344, -0.026112664, -0.011090669, 0.02738704, -0.012635548, -0.034456212, -0.040563595, -0.05347566, -0.009641969, 0.00296202, -0.009389498, -0.014547111, 0.0098403385, 0.03702901, -0.0189954, -0.018730907, 0.056264855, -0.016675076, -0.03892855, 0.060208205, 0.0284931, -0.021856733, 0.007706362, -0.02868546, 0.022133248, 0.021075277, -0.020894941, -0.00061201554, -0.020161573, 0.013032287, 0.005503256, 0.026858054, -0.020029327, -0.012130607, -0.0629974, -0.0358989, 0.042968076, -0.030104103, 0.006062298, 0.06328594, -0.004069584, 0.029118266, -0.052850492, 0.0094436, -0.042246733, 0.040058654, -0.020317866, -0.014318685, -0.0069249053, -0.0063899085, -0.012731727, -0.012671615, 0.024165034, 0.033157792, -0.0039764107, -0.003784052, 0.030104103, 0.00432506, 0.03255667, 0.009623935, -0.01793743, 0.021315724, -0.03563441, 0.03373487, 0.021628307, -0.004766884, 0.031522747, -0.045204245, -0.018213945, -0.028228607, -0.014655312, 0.0167953, 0.047368277, -0.021760553, 0.023383578, -0.034263857, -0.0009941027, -0.016314404, 0.062276058, 0.013453072, 0.0022677262, 0.015869575, -0.003844164, -0.020738648, 0.027819846, -0.012912063, 0.0019115624, 0.0026028508, -0.01489576, 0.003738968, 0.03758204, -0.0052207294, -0.0059420737, -0.02469402, -0.010982467, 0.040515505, 0.028060295, 0.027050411, 0.019115625, -0.03368678, -0.011667744, -0.060256295, 0.018478436, -0.011577576, -0.048209846, -0.030488819, 0.0049291863, -0.029743431, 0.0041146684, -0.011012523, 0.042198643, 0.041453253, -0.02608862, -0.012106562, -0.0019491324, 0.009317364, 0.019259892, 0.049820848, 0.030200282, 0.06318976, 0.043473016, -0.03782249, 0.01635047, -0.030007923, 0.050013207, -0.006991029, -0.004520424, -0.048426248, -0.0029950817, 0.03243645, -0.014318685, -0.0314987, -0.008716244, -0.017504621, -0.03260476, 0.045516826, -0.00064094446, 0.01739642, -0.012022405, 0.0081031015, -0.02379234, 0.051263537, -0.0017161984, -0.052850492, -4.639897e-05, 0.016879456, 0.0032460494, -0.06328594, 0.057755634, -0.001383328, 0.017336309, 0.022890659, -0.00815119, 0.0063598524, 0.02099112, -0.023912564, -0.010363313, -0.044146273, -0.0041056513, 0.0052658133, -0.002841796, 0.0474885, -0.016663054, 0.014847671, 0.03318184, -0.007063163, -0.018033609, -0.0015809463, 0.0021369825, 0.019259892, -0.064055376, -0.004018489, 0.0066063115, -0.0047608726, 0.061362356, 0.014607223, 0.0518887, 0.042992122, -0.012611503, 0.027459174, 0.0011579079, -0.012371055, 0.015184298, 0.02923849, 0.0056956145, 0.03243645, 0.044050094, 0.039697982, -0.01394599, -0.036307663, 0.015953733, -0.0067205247, -0.022325607, -0.06737356, -0.029382758, -0.0019867024, -0.033061616, -0.012659593, 0.0053409534, 0.007688328, 0.005806822, -0.0012330479, -0.011192859, -0.021796621, 8.598837e-05, -0.0073456895, 0.021580217, 0.014847671, 0.00057782687, -0.033518467, -0.009617924, -0.024177058, 0.02474211, -0.0016275331, 0.0074959695, -0.0036608223, -0.02124359, -0.0049772756, 0.043112345, -0.030392641, 0.06780636, 0.0035916935, -0.02379234, -0.0015839519, -0.026425246, 0.026232889, -0.004664693, -0.021652352, -0.00059773895, -0.009942529, 0.018827086, -0.008806412, -0.004445284, 0.009852361, 0.0032580718, -0.0014366774, -0.0067746253, -0.0063658636, 0.022313584, -0.026473336, 0.015304522, -0.06323785, -0.029478937, -0.0006781388, 0.043521106, 0.027314905, -0.018851131, 0.017480576, 0.011974316, 0.061218087, -0.0013329842, -0.0055753905, 0.0174926, 0.02129168, 0.00939551, -0.019524386, 0.013164533, -0.0058308668, 0.032676898, 0.012936108, 0.0025427388, 0.0014982922, -0.026569515, 0.0058188443, -0.054245092, -0.025415365, 0.061218087, 0.038399562, -0.03702901, 0.01744451, 0.028252652, -0.041813925, -0.015244409, 0.01719204, 0.025968395, -0.0041928138, -0.038712144, 0.00018522018, -0.024621885, 0.009419555, -0.016458673, -0.004863063, -0.024814244, 0.038447652, 0.003558632, 0.020786738, -0.014607223, -0.010898311, -0.044939753, 0.009984608, -0.035321828, -0.0002939854, 0.008505852, 0.017721025, -0.0018905232, 0.046550754, -0.08415683, 0.013549251, 0.0035225647, 0.010699941, -0.03335015, 0.007183387, -0.0058398833, -0.008770345, -0.04763277, 0.031811286, -0.016158113, -0.03888046, 0.0151121635, -0.009221185, -0.041044492, -0.0015809463, -0.012034427, 0.044242453, -0.0028958968, 0.024321325, 0.024153013, -0.033758912, 0.023828408, 0.025415365, 0.023924587, 0.012310943, 0.034768797, -0.002742611, -0.0142225055, 0.009629946, 0.0077183843, -0.00030074798, -0.05491835, 0.021195501, -0.06251651, 0.04193415, 0.028757593, 0.011974316, -0.023972675, -0.01219673, 0.0005060681, 0.037053052, -0.019428207, 0.008752311, -0.007483947, 0.014907783, 0.019235848, -0.028060295, -0.0016350471, 0.1830291, 0.00865012, -0.028998042, 0.032123867, -0.06472863], [-0.01593707, -0.00025197677, -0.0319215, 0.03540255, 0.023207024, 0.00042884154, -0.05006087, 0.022484764, 0.0038066625, 0.04229362, 0.0036941795, 0.027422179, 0.008797357, -0.022413723, -0.0109345345, 0.0045970036, -0.05048712, -0.0063464106, 0.025054114, -0.024793627, -0.007785009, -0.052997265, -0.05091337, -0.016813252, 0.023491193, -0.015297691, -0.007867891, 2.068587e-05, -0.022875495, 0.037794296, 0.015842346, 0.009478175, 0.049255725, -0.009063764, 0.030642744, -0.0031465646, 0.038836244, 0.07734096, 0.02342015, -0.041772645, -0.008566471, -0.0038836244, -0.019122114, -0.021880908, -0.039807152, 0.0040434687, 0.0075008417, -0.0035935366, -0.031068996, -0.027730025, 0.016623808, 0.006837784, -0.034052756, 0.016090993, -0.06805815, -0.010123473, 0.05948576, -0.039215136, 0.04792961, 0.009584738, -0.02749322, 0.062990494, 0.0646955, -0.015794985, -0.027374817, 0.03942826, 0.01967861, 0.02673544, 0.04127535, 0.054323383, -0.0150016835, 0.009969548, 0.083119035, -0.01748815, -0.012088966, -0.023609595, 0.058491174, 0.039120413, 0.02711433, 0.0006045963, 0.027564261, -0.0038925046, 0.021632262, 0.011846239, 0.0021430976, -0.039901875, 0.05380241, -0.14312577, -0.049587253, -0.018861627, -0.023325428, 0.013059871, 0.039807152, -0.0054909475, 1.3146916e-05, -0.01523849, 0.024391057, 0.020779759, -0.0126691405, 0.026877522, -0.003013361, -0.009791943, -0.035994567, -0.041133266, 0.030334895, 0.019737812, 0.015759464, 0.006618738, -0.015214809, -0.013403241, 0.03575776, -0.040801737, -0.024201611, 0.030926911, -0.000556865, 0.08013528, -0.030642744, -0.02343199, -0.01040172, -0.0008421427, -0.09079156, -0.07989847, 0.05948576, 0.025219878, 0.0094840955, -0.0029245587, -0.05058184, 0.042885635, 0.03303449, -0.014918801, -0.03457373, 0.017203983, 0.015060885, 0.035994567, 0.04546682, -0.006766742, 0.07052094, 0.0050469358, -0.024935711, 0.012503376, -0.037107557, 0.027658984, -0.00043735176, 0.013355879, -0.031471565, 0.00046399247, -0.024556821, -0.0069029056, -0.013107233, -0.028582528, -0.0017656875, -0.020460071, -0.0008665633, 0.012538897, 0.018897148, 0.0021401376, 0.028795654, 0.03237143, 0.023585914, 0.046769258, 0.013462442, -0.028653571, 0.0049640536, 0.030263854, -0.012112645, -0.07743568, 0.05100809, -0.01854194, -0.023372788, 0.026285507, 0.009845225, -0.009353852, 0.048190095, -0.020921843, -0.021111287, 0.018849786, 0.049918782, 0.004990694, -0.050771285, -0.04615356, -0.026593355, 0.0842557, 0.01783152, -0.0061392053, 0.018115688, 0.08051416, 0.05920159, 0.044851128, 0.04125167, -0.042435702, 0.00017917732, -0.019027391, -0.007684367, -0.006109604, -0.035118386, -0.029861283, -0.014516231, -0.06493231, -0.0029245587, 0.016090993, 0.006476654, -0.029624477, 0.034763176, -0.03125844, -0.009146646, 0.0072285146, 0.04129903, -0.00039924073, 0.004120431, 0.022899175, 0.0371786, 0.0010967095, 0.01714478, -0.017938083, 0.017736796, 0.034265883, -0.034431648, -0.031684693, -0.0050350954, -0.0053784647, 0.06479023, -0.03047698, 0.024840988, -0.030429618, 0.0140662985, 0.019003712, 0.017215824, 0.0002817626, 0.0034692134, 0.003827383, 0.0031524848, -0.04241202, -0.036302418, 0.043619733, -0.06270633, -0.01337956, -0.021679623, -0.0002817626, 0.02488835, 0.007021309, 0.02789579, 0.03305817, -0.033579145, -0.0077080475, -0.0003533595, 0.048971556, 0.03421852, -0.0067134607, -0.03530783, 0.03833895, 0.0142557435, -0.001929972, -0.021857228, 0.048876833, 0.005786956, 0.035568316, 0.034479007, -0.004949253, -0.026356548, 0.029269267, -0.04137007, 0.022721572, -0.08946545, 0.043643415, 0.010241875, -0.016564606, 0.034431648, -0.068626486, -0.03530783, 0.009265049, 0.0394993, -0.053991854, 0.029482393, -0.01300067, -0.0029511994, 0.035473593, 0.041512158, 0.030169131, -0.024237132, 0.06507439, 0.0057159136, 0.040564932, -0.0026167105, 0.0319215, -0.007370598, 0.008015895, -0.02269789, -0.08060889, -0.034715813, 0.008838798, -0.035852484, -0.015570018, 0.024248973, -0.020921843, 0.056312554, -0.0048782113, 0.023526713, 0.0512449, 0.001636924, 0.0011647913, -0.028771974, -0.034786854, -0.06460078, -0.024817308, 0.014196542, 0.040991183, 0.033579145, 0.04837954, -0.005860958, -0.07345734, 0.06914746, 0.015202969, -0.024095047, -0.014753037, 0.013983416, -0.021632262, 0.0063700913, 0.018968191, 0.07487817, -0.0289851, -0.02418977, -0.020282466, -0.12190792, 0.069763154, 0.030548021, 0.03575776, 0.011378546, -0.0215849, -0.0009583258, 0.021217851, -0.051481705, -0.013332198, 0.013426921, -0.014468869, -0.014445188, -0.06303786, 0.007548203, -0.050723925, -0.023479352, -0.02934031, 0.008377025, 0.024580501, -0.009738662, -0.016955337, 0.03575776, -0.033626504, -0.052571014, 0.0349763, 0.045656268, 0.008371105, 0.0013697769, 0.01937076, 0.02191643, 0.011118059, 0.034692135, 9.426004e-05, 0.00031691353, -0.0475744, 0.01707374, 0.01597259, 0.015451616, -0.07700943, 0.017997283, 0.062185355, 0.010585245, -0.022472924, -0.04392758, -0.00073002966, 0.00893944, -0.024237132, -0.058207005, 0.019666769, -0.07440456, -0.02043639, -0.008607912, -0.019204997, 0.05986465, -0.025219878, -0.023550393, 0.053755045, 0.013438761, -0.035473593, -0.029435031, 0.040707015, 0.03684707, -0.00631089, 0.013983416, 0.012432334, 0.0022748213, 0.018328814, 0.0033478502, 0.03230039, 0.018056486, 0.0123849735, 0.052286845, 0.0313058, -0.010129392, 0.0046976465, -0.03227671, 0.00817574, -0.031708375, 0.028511487, -0.012929628, -0.00818166, 0.03751013, -0.07819346, -0.0034218521, -0.05645464, 0.014184701, 0.023514872, -0.027043287, 0.008063257, -0.0014252784, 0.02564613, 0.003756341, 0.0024287454, -0.014681995, 0.04089646, 0.0066364985, 0.014930641, 0.041535836, -0.0014008577, -0.01117726, 0.032229345, -0.080087915, 0.035142064, -0.013272997, 0.014018937, -0.024201611, -0.016623808, 0.02675912, -0.0058994386, 0.025054114, -0.0035757762, -0.003312329, -0.040233403, 0.017571032, -0.013663728, -0.0409675, 0.026285507, 0.001041208, 0.021573061, 0.0034484928, 0.046248283, -0.101353124, 0.0019122114, -0.05825437, -0.042151533, 0.011485109, -0.025598768, -0.027019607, -0.009010483, -0.04837954, -0.023917444, -0.009217688, -0.01375845, 0.039120413, 0.016138354, 0.036278736, -0.054844357, 0.025527727, 0.02450946, 0.061048683, -0.021999313, -0.0032797682, -0.058633257, -0.011224622, 0.05541269, 0.014741196, -0.0043897983, 0.003386331, -0.009643939, -0.005357744, 0.024651542, 0.001670965, -0.06317994, -0.023870083, 0.038481034, 0.016659329, 0.042175215, -0.015664741, 0.02640391, 0.027777387, 0.06867385, -0.006233928, -0.034407966, 0.0025885897, 0.024556821, 0.0579702, 0.004798289, -0.035426233, 0.029979687, -0.0008029216, 0.007121952, -0.015723944, -0.051955316, -0.0050350954, -0.011005576, -0.00446084, -0.0034692134, 0.0066957003, 0.022496605, 0.030263854, 0.011946881, 0.021395456, -0.0053518238, -0.002191939, 0.015345053, 0.038362633, 0.020732397, -0.042932995, -0.03414748, -0.035213105, -0.019453643, -0.03651554, -0.0070035486, 0.0023606636, 0.009608419, 0.030192813, 0.036562905, -0.01040764, -0.04797697, -0.054796994, -0.026995927, -0.04238834, -0.0055856705, -0.020886322, 0.017997283, 0.048829474, -0.034952622, -0.038102146, -0.03234775, 0.012302091, 0.009934028, 0.01783152, -0.017038219, 0.018281452, 0.01079837, 0.014267583, -0.005727754, -0.042956676, 0.046058837, -0.015510817, -0.0067371414, -0.0333897, 0.064884946, 0.030003367, -0.03895465, -0.023467511, 0.027635304, -0.0034632932, 0.06251688, 0.0333897, 0.006245768, 0.005413986, -0.0057662353, -0.016529085, -0.044022303, -0.014516231, -0.029813921, -0.009833384, -0.0014104779, 0.049208365, -0.0023073822, -0.013308518, -0.04160688, 0.0357104, 0.0030015206, -0.030524341, 0.012609939, -0.005505748, 0.047408637, -0.0067075402, -0.04383286, 0.010336598, 0.10684703, 0.011041097, -0.03715492, 0.017665755, -0.038930967, -0.03684707, -0.0014311984, -0.01825777, -0.050676562, -0.00816982, 0.06360619, -0.0050291754, -0.05091337, -0.05171851, 0.008678953, 0.021158649, 0.030737467, -0.016387, -0.016268598, 0.012823065, 0.009851145, -0.012965148, 0.0118699195, 0.003122884, 0.00036704988, 0.0011551711, 0.0048959716, 0.019986458, -0.0018026885, -0.047455996, 0.01972597, 0.026995927, -0.079851106, 0.03490526, -0.002151978, -0.12001347, -0.022520285, 0.07464137, -0.0077790893, 0.027351135, 0.0049374127, 0.0275169, 0.06540592, 0.0066128178, 0.055649497, 0.030690106, 0.02010486, 0.059722565, -0.022247959, 0.007577804, -0.009797864, -0.013711089, -0.009093365, 0.017381588, 0.009750502, -0.004724287, 0.006216167, -0.009342011, -0.03715492, -0.02266237, -0.024272652, -0.0032176066, 0.015498977, -0.0015081606, 0.01593707, -0.008282303, 0.0512449, 0.015214809, 0.07099455, -0.028724613, -0.025030434, 0.01375845, -0.011597592, 0.048403222, -0.0096617, -0.010010989, 0.042246256, -0.013426921, 0.03940458, 0.005647832, -0.016517244, 0.019643089, 0.026924884, -0.023585914, 0.0071989135, -0.030713785, -0.04051757, 0.013900534, 0.0037948221, 0.016327798, -0.031708375, -0.035923526, -0.03751013, -0.01857746, -0.0065713767, 0.06526384, -0.055838943, -0.06284841, -0.03755749, 0.009602498, -0.025764532, -0.0027099529, 0.016647488, -0.017618394, -0.018423535, -0.022461085, -0.028511487, -0.059296314, -0.002819476, -0.03983083, -0.032868724, 0.0002717723, 0.026096063, -0.048640028, -0.009845225, 0.0025974698, -0.05081865, -0.027682664, 0.057117697, 0.04944517, -0.007323237, -0.00063826714, -0.05081865, 0.027066968, -0.008519109, 0.014338626, -0.014670155, -0.009164407, -0.023503032, 0.0082231015, 0.022472924, 0.003954666, -0.0071337917, -0.053707685, -0.03646818, 0.03452637, 0.019986458, -0.0027957952, 0.07956694, 0.022875495, 0.0016561645, -0.018423535, 0.0058964784, -0.04650877, 0.045940436, 0.036278736, 0.035520956, -0.0044845208, -0.027635304, 0.024556821, -0.045206334, 0.008732235, -0.022555808, 0.039570343, -0.005280782, 0.035071023, -0.049161002, -0.014551751, 0.003045922, -0.005126858, 0.03201622, -0.018968191, -0.010324758, 0.036586583, 0.03935722, 0.05025031, -0.04345397, -0.023254385, -0.06578481, -0.012373133, -0.04546682, 0.05205004, -0.009128885, -0.013580846, -0.031850457, -0.024296334, -0.008311904, -0.0015836426, -0.042625148, -0.018423535, 0.025575088, 0.008015895, 0.019785171, -0.0025308682, -0.014326786, 0.0016265637, 0.015345053, -0.013272997, 0.005428786, 0.03275032, -0.012231049, -0.030358577, -0.039617706, -0.006589137, 0.012124486, 0.013616366, 0.07061566, -0.008442147, -0.010348438, -0.014705676, -0.039949235, 0.03940458, -0.01965493, -0.0065950574, -0.022378203, -0.035899844, -0.005461347, -0.005277822, -0.0040641893, 0.032442473, 0.01892083, -0.023964806, -0.0030755228, 0.000779241, -0.008069177, -0.014030778, 0.011822558, 0.02529092, 0.025598768, 0.03942826, 0.008684874, 0.020306146, 0.0016635647, 0.015108246, -0.014220223, 0.014078138, -0.059627842, 0.012012003, 0.029174544, -0.032229345, 0.004286195, -0.035023663, -0.021324413, -0.030713785, 0.019287879, 0.028298361, 0.009217688, -0.012491536, -0.02190459, -0.00857239, -0.005798796, -0.013450602, -0.020732397, 0.008655272, 0.01598443, -0.021857228, -0.037107557, 0.013782131, -0.012083045, 0.025196198, 0.0431698, 0.035023663, 0.017192142, -0.0039990675, 0.00780277, -0.026901204, -0.031447887, -0.012231049, -0.025054114, 0.008045496, 0.03819687, 0.012917788, 0.046532452, 0.022887336, 0.0041885125, -0.012444175, -0.003386331, 0.03317657, -0.012160007, -0.05872798, 0.0051357383, -0.013782131, 0.011189101, 0.019619407, 0.01523849, 0.036278736, 0.031187398, 0.038765203, -0.01487144, -0.023171503, -0.033152893, 0.008714475, -0.017346067, 0.0022748213, 0.03975979, 0.039167773, 0.013201955, 0.014835919, -0.004152992, 0.00968538, 0.00014929901, -0.036918115, -0.042198896, -0.053991854, -0.005100217, -0.0102300355, -0.009490015, 0.017286865, 0.06294313, 0.01336772, -0.0357104, 0.014978003, 0.0035195346, -0.0061865663, -0.005082457, 0.033294976, 0.04212785, -0.015664741, -0.03410012, 0.0050528557, -0.061190765, 0.04122799, -0.00409379, -0.0017227663, 0.019110274, -0.03234775, -0.03895465, 0.048971556, -0.052997265, 0.035094704, 0.013675568, -0.03374491, -0.0016324839, -0.042175215, 0.022236118, 0.01525033, -0.006023762, 0.0049936543, -0.040091317, 0.034336925, -0.0017035258, 0.009051924, 0.0067785825, 0.0017656875, -0.0039280257, -0.03677603, 0.008163899, 0.004377958, -0.021395456, 0.024746265, -0.007844211, -0.014942482, -0.0056271115, 0.014480709, -0.031116357, 0.01637516, 0.03464477, 0.024177931, 0.02266237, -0.0020010138, 0.04163056, 0.0061628856, 0.029506074, -0.013284838, -0.051481705, 0.013580846, 0.009217688, 0.031092677, -0.00059534603, -0.007104191, -0.01967861, -0.0016088033, 0.0215849, -0.021869069, -0.017938083, 0.015783144, 0.051150177, -0.022875495, -0.0031406444, 0.030192813, -0.051813234, 0.0034011316, 0.024000326, 0.057070334, 0.029695518, -0.00631089, 0.030263854, -0.015345053, 0.019927256, 0.0003010031, -0.02119417, 0.0066957003, 0.0431698, -0.015025364, 0.012538897, 0.03353178, -0.02571717, 0.0010545284, -0.010005069, 0.023929283, 0.011313424, 0.022721572, -0.031708375, 0.02342015, 0.03452637, -0.040422846, 0.01746447, -0.010117552, 0.0056715123, 0.028298361, 0.019844374, -0.0046562054, -0.008483588, -0.08065625, -0.0007851611, -0.0019580927, -0.07336261, 0.027540581, 0.013983416, -0.01190544, -0.04208049, -0.019631248, 0.026451271, 0.000856203, 0.022330841, 0.008128379, -0.033342335, -0.030003367, 0.015380573, 0.0044164388, -0.009561057, 0.011479189, 0.000630127, 0.0056981533, -0.017215824, 0.034455325, -0.013154594, -0.07284164, 0.0066364985, -0.04385654, 0.02339647, -0.023372788, -0.00079034123, -0.03308185, 0.0045970036, 0.021573061, 0.007027229, -0.0319215, -0.0061628856, 0.02860621, 0.010520123, 0.023289906, 0.004573323, 0.017926242, 0.047313914, 0.013829492, -0.015108246, -0.0044371593, 0.00019092513], [-0.013563452, 0.004578115, -0.032739367, 0.054685537, 0.009252169, -0.009677901, -0.0577556, 0.01767686, 0.016489608, 0.077231325, -0.018300466, 0.025495932, -0.009557976, -0.029981105, -0.00078475545, 0.032091774, -0.046026994, 0.003795608, -0.023972891, 1.9628254e-05, 0.011722612, -0.06586249, -0.080445305, -0.020003393, -0.0075312536, -0.020459106, -0.020686964, 0.007297401, 0.058762968, 0.0005396599, 0.017293101, 0.042309336, 0.048929162, 0.018432384, 0.0276066, -0.0055824816, 0.030220954, 0.0078070797, 0.010193576, -0.019331817, -0.035089884, -0.0054415707, 0.022845602, -0.05348629, -0.059482515, 0.039479118, 0.0322117, -0.017029269, -0.010415436, -0.036888752, 0.00945604, 0.017365057, 0.006967609, 0.019283848, -0.042884972, 0.00915623, 0.06725361, -0.027918406, 0.06212085, -0.01305977, -0.025615856, 0.032235686, 0.059674393, -0.0010231052, -0.024536537, 0.011692631, -0.0053786105, 0.01791671, 0.061401304, 0.08178846, -0.026407357, -0.0040444513, 0.040198665, 0.0051567503, 0.020902827, -0.03098847, 0.07372954, 0.05420584, -0.0129998075, 0.02897374, 0.05780357, -0.028901786, 0.0130118, 0.0047430107, 0.00574438, -0.011554718, 0.021478463, -0.11704624, -0.083803184, -0.004844947, 0.0068836617, 0.019943431, 0.048281573, -0.028230209, -0.0337947, 0.039551076, -0.005510527, 0.015446265, -0.04900112, 0.020159295, 0.006433945, -0.037464388, -0.044084217, -0.048065707, 0.029693287, 0.023793004, 0.031732, 0.020003393, -0.0035467648, 0.064087614, -0.022845602, -0.03549763, -0.03461019, 0.01624976, -0.014235029, 0.032691397, -0.05799545, -0.03933521, -0.016225774, -0.039215285, -0.05650839, -0.0322117, 0.04468384, 0.061017547, 0.040630393, 0.012939845, -0.018084602, 0.026431343, 0.05171141, -0.06212085, -0.04060641, 0.029837197, 0.018888097, 0.0031899896, 0.028158255, -0.018216519, 0.04492369, -0.016849382, -0.017329078, 0.009006324, -0.046818495, 0.0280863, 0.025807735, 0.03609725, -0.009246173, 0.016909344, -0.050752014, 0.011728608, -0.025112174, -0.031444184, -0.0063859755, -0.04885721, 0.0010365967, -0.0063080247, -0.0008604577, 0.0059302626, 0.04588308, 0.042789035, 0.012364208, 0.028661937, 0.0028571994, -0.056124628, -0.003121033, 0.03482605, 0.040798288, -0.029453438, 0.052526895, -0.014918598, -0.014558825, 0.019703582, 0.0021331557, 0.013659392, 0.0325235, -0.00077126396, -0.025112174, 0.0018618266, 0.041805655, 0.009042301, -0.008748487, -0.039766937, -0.036433037, 0.084138975, 0.010907126, 0.019811515, -0.0013161706, 0.07545645, 0.07468893, 0.00067794777, 0.01566213, -0.012184321, -0.01842039, -0.009887769, 0.002714789, 0.023241352, -0.041038137, 0.03703266, -0.00026552015, -0.009114256, 5.9400067e-05, 0.0129998075, 0.022233987, -0.017652875, 0.04588308, -0.029885165, 0.020710947, 0.013959203, 0.052862685, 0.010877145, 0.00672776, 0.023745036, -0.006290036, -0.02008734, -0.017125208, -0.05602869, -0.013323603, 0.014414916, -0.049121045, -0.0012629541, -0.041182045, -0.013287626, 0.021178653, -0.048929162, 0.037944086, -0.017856747, -0.02135854, 0.030340878, 0.017293101, 0.022449851, 0.0034028555, 0.026551267, 0.0026413354, -0.025687812, -0.021430494, 0.042357307, -0.06533483, 0.01689735, -0.052574866, -0.027582617, 0.033626806, 0.004422213, 0.019859483, 0.052862685, -0.02185023, -0.03249952, -0.008292774, 0.0441082, 0.015218409, -0.012556087, -0.058762968, 0.024584506, 0.027774496, -0.009899761, -0.024032854, 0.07967778, 0.0054865424, 0.07435314, 0.016981298, 0.015710099, -0.054829445, -0.00059774827, -0.056652296, 0.03461019, -0.06538279, 0.06279243, 0.010589327, -0.012508118, 0.057036053, -0.050464198, -0.040390544, 0.01875618, 0.0012464644, -0.053390354, 0.042357307, 0.0057863533, 0.021382524, 0.02057903, 0.008862414, 0.017976671, -0.029981105, 0.077231325, 0.018780164, 0.018000655, -0.006182104, 0.0021316565, -0.0198355, -0.013227664, 0.014702734, -0.07843057, -0.026287433, 0.019175915, 0.0027507665, -0.021838237, 0.026743146, -0.03727251, 0.0078070797, -0.013143716, 0.039671, 0.032691397, -0.0033758725, 0.03451425, 0.0013903738, -0.036193192, -0.03883153, 0.013287626, 0.010187579, -0.0022230989, 0.03516184, 0.05631651, -0.023984885, -0.09008723, 0.046098948, 0.05185532, -0.026047584, -0.012316238, 0.021790268, -0.040102728, 0.020746924, 0.013263641, 0.05171141, -0.014067135, 0.021550419, -0.038975436, -0.081836425, 0.052526895, 0.030220954, -0.012034415, -0.02450056, -0.017329078, 0.017077237, 0.016093858, -0.007921008, -0.0023939912, -0.04182964, 0.00070155784, -0.035041917, -0.08600979, -0.005321646, -0.08452273, -0.010757221, -0.013875255, -0.01591397, 0.04111009, 0.004632081, -0.0119564645, 0.044300083, -0.059674393, -0.01964362, 0.017125208, 0.014654764, 0.003339895, 0.0014803171, 0.02346921, 0.018084602, -0.012843906, -0.007873038, 0.017269116, -0.034706127, -0.04698639, 0.008688524, 0.026503297, 0.046914432, -0.045235492, 0.006212085, 0.048065707, -0.01291586, -0.021682335, -0.025471946, 0.01058333, 0.02096279, -0.014055142, -0.04758601, 0.0052197105, -0.05118374, -0.0023924923, -0.023493195, -0.0032589461, 0.07795087, -0.0059422553, -0.013647399, 0.049121045, 0.011158967, -0.043028884, -0.02107072, 0.029381484, 0.011506748, 0.03830386, 0.016705472, 0.032163728, -0.0060921605, 0.013167702, 0.0041913586, 0.012172328, 0.0051417598, 0.007974974, 0.0075312536, 0.04660263, -0.03815995, 0.040222652, 0.011566711, -0.011626673, -0.033626806, 0.018456368, -0.07128308, -0.035137855, 0.034706127, -0.036912736, 0.024584506, 0.0007435314, -0.03559357, 0.028565997, -0.018600278, 0.024632476, -0.012178325, 0.0021346547, 0.05003247, 0.021082714, 0.012508118, 0.032163728, -0.018180542, 0.0147387115, 0.03398658, 0.015362319, 0.02573578, 0.00928215, -0.09670705, 0.043004896, 0.0057173967, 0.01305977, -0.017724829, -0.033650793, -0.015638145, 0.0154702505, -0.008496645, 0.0032109765, -0.026287433, -0.05780357, 0.022042109, -0.002929154, -0.012460147, 0.062936336, 0.012759958, -0.029237574, 0.030652681, -0.005153752, -0.12721583, -0.0151224695, -0.038903482, -0.013791309, -0.00070642977, -0.00482396, -0.021286584, 0.025711795, -0.04487572, -0.018852118, 0.008856419, -0.009468033, 0.007597212, -0.0023085452, 0.036481008, -0.044947673, -0.02209008, 0.00020743177, 0.033866655, -0.0015964939, 0.01129688, -0.04571519, -0.018780164, 0.021610381, 0.008550611, 0.013107739, -0.03904739, -0.027966375, -0.065478735, 0.02489631, 0.0026938024, -0.044420004, 0.01335958, 0.016525585, 0.0041403905, 0.04182964, -0.053630203, 0.055884782, 0.01943975, 0.05977033, 0.019271854, -0.049121045, 0.002441961, -0.01551822, 0.06922038, -7.389874e-06, -0.037296496, -0.00065283856, -0.038135964, 0.0013094248, -0.027774496, -0.037632283, 0.01345552, 0.010397447, -0.011704624, 0.0031240312, 0.034993947, 0.03225967, 0.03151614, 0.0220541, 0.019079976, 0.027966375, 0.0024524545, 0.0035107874, 0.06058582, -0.02480037, -0.032163728, -0.061497245, -0.015374311, -0.01816855, -0.015098484, -0.009689894, -0.013215671, 0.011284888, 0.008220819, 0.046626616, -0.014067135, -0.040678363, -0.05818733, -0.020567039, -0.0068416884, -0.014151081, -0.029189603, 0.009725871, 0.052910656, -0.013287626, -0.0371286, -0.030580727, -0.017964678, 0.01448687, 0.05449366, -0.029789226, 0.018852118, -0.0008469662, 0.0019607642, 0.010685266, -0.00027901167, 0.03151614, -0.038903482, 0.0049858578, -0.0050578127, 0.063511975, 0.0487133, -0.01090113, -0.04027062, -0.013239657, -0.01394721, 0.057659663, 0.026167508, 0.025399992, 0.0075192614, 0.006403964, -0.042261366, -0.03904739, 0.017808776, -0.024536537, -0.02592766, 0.009545984, 0.03885551, -0.0074473065, -0.024272703, -0.050272316, 0.041613773, 0.018864112, -0.009036305, 0.028949756, -0.01870821, 0.064567305, 0.0023715054, -0.04547534, 0.009042301, 0.07761508, -0.0045001637, -0.039263256, -0.016489608, -0.012436163, -0.01802464, 0.011326862, -0.026191493, -0.03722454, 0.011380828, 0.02480037, 0.0027687552, -0.037392434, -0.055548992, -0.0001284503, 0.012496125, 0.04055844, -0.02784645, -0.010259534, 0.03177997, -0.022221996, -0.009324124, 0.026575252, 0.017808776, 0.034202445, -0.0045631244, -0.031204334, 0.037152585, 0.04684248, -0.052958626, 0.053342383, -0.007327382, -0.08154861, 0.013131724, 0.0016519589, -0.11071423, -0.017377049, 0.062840395, -0.0002475315, 0.028685922, -0.040342577, 0.016753443, 0.040582426, 0.019079976, 0.054349747, 0.06643813, 0.026527282, 0.032139745, -0.0058433176, 0.017053252, -0.0056814193, -0.045931052, 0.0065478734, -0.022257973, -0.0076871556, -0.01964362, 0.01738904, -0.022401882, -0.035521615, -0.01085316, -0.010637296, 0.01058333, 0.0184084, -0.009084275, 0.028326148, 0.021430494, 0.041997533, 0.0094140675, 0.06634219, -0.029357499, -0.018156558, -0.0007885031, 0.012460147, 0.04370046, 0.00042835504, -0.01180656, 0.040486485, -0.0045691202, 0.050704047, 0.007980971, -0.03461019, 0.02926156, 0.046794508, -0.026767131, -0.0014728218, -0.0033968592, -0.017377049, 0.023409247, -0.0037086627, 0.01404315, -0.003005606, -0.03751236, -0.021490457, -0.0064159567, 0.022114063, 0.06562264, -0.020051364, -0.06624625, -0.026479313, 0.010955096, -0.020543054, -0.016513593, 0.037104618, -0.029693287, -0.024344657, -0.007273416, -0.005672425, -0.0150864925, -0.019775538, 0.010307504, -0.008526626, 0.0042213397, 0.037104618, -0.0017374051, -0.0028017343, -0.0015874995, -0.05223908, -0.0068236995, 0.050080437, 0.043796398, 0.017844753, -0.0118845105, -0.06178506, 0.00054453185, 0.008652547, -1.2788815e-05, -0.025256082, -0.016573556, -0.032979216, 0.015997918, -0.010019685, 0.009042301, -0.011998438, -0.042956926, -0.013671384, 0.033075154, -0.019127944, 0.007483284, 0.091622256, 0.026551267, -0.018768173, -0.015062507, -0.0007832564, -0.056364477, 0.055357113, 0.045931052, 0.021322561, -0.029045695, -0.031252306, 0.033890642, -0.04449196, 0.008088903, -0.0014435903, 0.034490265, -0.008826437, 0.037944086, -0.034058537, 0.025016235, 0.002654827, 0.0039215283, 0.022353912, -0.057899512, -0.018468361, 0.00032248427, 0.004931892, 0.043916322, -0.02450056, -0.026143523, -0.06715768, -0.02180226, -0.054733507, 0.026383372, -0.015985925, 0.0070995255, -0.0061461264, -0.010337485, 0.008424691, -0.015146455, -0.028350133, -0.034754097, 0.034921993, 0.005999219, 0.016477615, -0.012292253, -0.006919639, -0.0288778, -0.022389889, 0.0013206677, -0.0019652615, 0.03825589, -0.018192535, -0.038927466, -0.07665569, 0.005342633, 0.0085686, 0.020063356, 0.08063718, -0.009959723, -0.0041613774, -0.006071174, -0.021922184, 0.044947673, 0.004614092, -0.008730498, -0.0029096662, -0.005639446, -0.039694984, 0.008844426, -0.032643426, 0.035377704, 0.02691104, -0.021502448, 0.0021226623, 0.0026173505, -0.03756033, -0.008160857, 0.004778988, 0.008388713, 0.014846643, 0.029069679, -0.016933328, 0.00928215, -0.0022365905, 0.012939845, 0.0074473065, 0.009665908, -0.06888459, -0.0025319043, 0.028494043, -0.035977326, 0.008688524, -0.013419542, -0.016033895, -0.0025393995, 0.038927466, -0.01556619, 0.02450056, 0.013755331, 0.020267228, 0.006889658, 0.007705144, 0.00839471, -0.00883843, -0.0071474956, 0.02784645, -0.00016433393, -0.024968265, 0.022965526, -0.012532102, 0.04360452, 0.024728416, 0.03657695, 0.0071834726, 0.0055195214, 0.010553349, -0.016069872, -0.039958816, -0.015302356, -0.022845602, 0.0051417598, 0.041206032, -0.012274264, 0.052143138, 0.003825589, 0.011686635, -0.01842039, -0.017209154, 0.04082227, 0.02990915, -0.063416034, -0.013887248, -0.012256276, 0.013587437, -0.012855898, 0.018840127, -0.00051979744, 0.052143138, 0.024524543, -0.017832762, -0.01758092, -0.019043999, -0.020842865, 0.0035347724, -0.0066558053, 0.04111009, 0.0041883606, -0.0051957257, -0.0147387115, -0.026215479, 0.022641731, 0.041325957, -0.03679281, -0.051087804, -0.014606794, -0.021694329, -0.039215285, -0.0008604577, 0.023013497, 0.049840588, 0.018228512, 0.002978623, 0.026167508, -0.015698107, -0.0009953727, -0.00036389567, 0.029837197, 0.02573578, -0.021430494, -0.02784645, -0.024176763, -0.05857109, 0.015038523, -0.013515483, 0.008046929, -0.015770061, -0.027174873, -0.03432237, 0.005510527, -0.029453438, 0.009659912, -0.001956267, -0.019079976, -0.012604057, -0.026071569, 0.02327733, 0.011812556, 0.020758918, -0.0045121564, -0.027390737, -0.0016204787, -0.006320017, 0.0083707245, 0.0099357385, 0.0069496203, 0.0042843, -0.056748237, -0.019619636, 0.025280068, -0.022677708, -0.0045121564, -0.012484132, -0.020075347, -0.0032889273, 0.0458591, -0.020746924, -0.0024509553, 0.020471098, 0.03314711, 0.011302876, -0.00052579364, 0.02361312, 0.03485004, 0.03206779, -0.00020630748, -0.02258177, 0.022797633, 0.0064699226, 0.033890642, -0.01161468, 0.018012648, -0.019631628, -0.0030325889, 0.03381869, -0.015578182, -0.03909536, -0.0010088641, 0.02361312, -0.029957121, 0.010271527, 0.007357363, -0.061928973, -0.006032198, 0.02902171, 0.04130197, 0.011602688, -0.015686113, 0.011212934, -0.02224598, 0.023265338, -0.01900802, -0.02043512, -0.006829696, 0.023433233, 0.0037536344, 0.028613968, 0.039071377, -0.01640566, -0.0015830024, -0.00906029, 0.020543054, 0.013155709, 0.0017149192, -0.026311418, 0.028374119, 0.050752014, -0.050656077, 0.010607315, -0.0047370144, 0.022413874, 0.04209347, 0.016537577, -0.03883153, -0.004874928, -0.051039834, 0.027966375, 0.014954575, -0.05401396, 0.014127097, 0.0011430297, 0.008988336, -0.035569582, -0.026695177, 0.022042109, 0.0068776654, -0.004910905, -0.013323603, -0.043244746, -0.031012455, 0.035905372, -0.0047250222, -0.019703582, 0.021430494, 0.018672232, -0.005069805, -0.015542205, 0.018732194, -0.03338696, -0.06461528, 0.016081864, -0.04415617, 0.0144269075, -0.00049656205, 0.01085316, -0.034346353, 0.02583172, 0.010157598, -0.029501408, -0.02892577, 0.013143716, -0.00035452656, 0.03211576, 0.0111889485, -0.010241546, 0.02976524, 0.06869271, 0.022473836, -0.054685537, 0.030844562, 0.0017973672], [-0.02292676, -0.00453071, -0.03217032, 0.047219563, 0.0061642705, -0.029233327, -0.033581898, 0.011816274, 0.01568673, 0.048676677, -0.020240208, -0.005205194, -0.0006862233, -0.0008986004, -0.007570157, 0.04114067, -0.006847292, -0.012157786, -0.004357109, -0.022175437, -0.04776598, -0.05414085, -0.06110767, -0.02027436, 0.005444252, -0.013182318, -0.013330306, 0.004658777, 0.00090998405, 0.030212324, 0.01630145, 0.02572715, 0.043713387, 0.0046246257, -0.023313805, 0.0027292408, 0.024042362, 0.04387276, 0.037270214, 0.014001944, -0.022357576, -0.010928347, 0.03346806, -0.021412728, -0.0032471989, -0.01827083, 0.0062439563, -0.0006826659, -0.004644547, -0.0018370437, -0.011747972, 0.015527359, -0.031874344, -0.025567777, -0.022084367, 0.012465145, 0.04542094, -0.005891062, 0.08961244, -0.008446701, -0.032580134, 0.05259267, 0.035494357, -0.04234734, -0.03210202, -0.041049603, 0.0057174605, 0.030667672, 0.08168939, 0.03374127, -0.037725564, 0.019090455, 0.02581822, -0.025431173, -0.0024432254, -0.031601135, 0.055734567, 0.0155956615, -0.015265534, 0.011360927, 0.04070809, 0.02502136, 0.013671817, -0.010228249, 0.022596633, -0.030098489, 0.032580134, -0.115658335, -0.02684275, 0.027093193, -0.009175258, 0.04428257, 0.04455578, 0.01605101, -0.025408406, 0.035016242, 0.006067509, 0.01124709, -0.021617636, 0.020786626, -0.028026655, 0.0043229577, -0.07344759, -0.027161494, -0.009135415, 0.006113044, 0.055552427, 0.033809572, -0.037816633, -0.072810106, -0.0031447455, -0.01512893, -0.04011614, 0.0035232534, -0.0082304105, 0.06456831, -0.055324756, -0.038750093, -0.0020291435, -0.029233327, -0.092572205, -0.04619503, 0.06119874, 0.06743701, 0.032033715, -0.021742856, -0.021378579, 0.053366758, 0.014958174, -0.046240564, -0.050452534, 0.02745747, 0.03959249, 0.055142615, 0.012248855, 0.028186027, 0.046764217, -0.010899887, -0.030189557, 0.009926582, -0.057328284, 0.026637845, -0.017394286, 0.040070605, 0.007928743, 0.0030081412, -0.05309355, -0.022095751, -0.0120781, 0.025044128, -0.0076896856, -0.04316697, -0.05928628, -0.035539895, -0.038158145, -0.0409813, 0.021902228, 0.056690797, -0.008065348, 0.0326029, -0.037862167, -0.042051367, -0.003093519, 0.04567138, 0.006739147, -0.014138549, 0.03173774, -0.0075473893, -0.06675398, 0.024679849, 0.014218234, -0.011679671, 0.01929536, -0.01769026, -0.030895347, 0.03515285, 0.06242818, 0.025909288, -0.008361324, -0.06538794, -0.025294568, 0.06024251, 0.052000716, -0.020809393, -0.0048978343, 0.08059656, 0.033672966, 0.016654344, 0.03392341, -0.01482157, -0.010729132, 0.009619222, -0.04471515, 0.024361106, -0.04649101, -0.02677445, -0.0017360133, -0.017121077, 0.01100234, 0.011736589, -0.037702795, -0.024270035, 0.037543423, -0.03722468, -0.028482003, -0.019682407, 0.027366402, 0.010433156, 0.025522243, 0.012271622, 0.0058227596, -0.0028886124, 0.0094200075, -0.0074278605, 0.00042190816, 0.050088257, -0.036837634, -0.0049718283, 0.013922258, -0.048449002, 0.06898519, -0.035972472, 0.01525415, -0.012533448, 0.0002287411, 0.022334808, 0.0039302204, 0.011258474, 0.048175793, -0.0009846896, 0.019955616, -0.053048015, -0.055324756, 0.0005467731, -0.04662761, -0.03276227, -0.058193445, -0.033081014, 0.016654344, 0.011651211, 0.012556215, 0.05282034, -0.018760327, -0.007564465, 0.015538743, 0.028094957, 0.02483922, -0.019989768, -0.029096723, 0.014229618, 0.029961884, -0.0086686835, 0.004422565, 0.04967844, 0.019705174, 0.050771277, 0.045739684, -0.0014172699, -0.04262055, 0.027093193, -0.013649049, 0.062929064, -0.05327569, 0.077910006, -0.02572715, -0.015447673, 0.017974854, -0.06775575, -0.05081681, -0.02650124, -0.0032671203, -0.061836228, 0.04881328, 0.016438054, -0.01812284, 0.021959146, 0.07107979, 0.042051367, -0.03016679, 0.039433118, 0.013216469, 0.019853164, -0.0071261926, 0.0346292, -0.0025428326, -0.036177382, 0.04027551, -0.06251925, 0.0053161853, 0.0041436646, -0.025749916, -0.01953442, 0.04976951, -0.011099102, 0.030758742, -0.035722032, 0.019488884, 0.021606252, -0.021503799, -0.011782124, -0.01700724, -0.009317554, -0.0788207, -0.05919521, 0.014571128, 0.018999387, 0.0007918782, 0.061335344, -0.018896932, -0.09325522, 0.040935766, 0.0006887135, -0.03731575, -0.03808984, 0.006323642, -0.045807987, 0.019204292, 0.041573253, 0.06420404, -0.024816453, 0.018896932, -0.025772683, -0.05641759, 0.0033382683, 0.01525415, -0.0017644726, 0.016369753, -0.043736152, -0.017052773, 0.026045892, -0.020103604, -0.00016221765, -0.028527537, -0.009152491, -0.025408406, -0.06661738, -0.034743033, -0.0862884, 0.001377427, -0.018896932, -0.032489065, 0.020502033, -0.029984651, -0.0022084366, 0.06169962, -0.03390064, 0.028527537, 0.0025357178, -0.007991353, 0.024270035, 0.0012806656, 0.034902405, -0.009841204, 0.025180731, -0.016529124, -0.017633343, -0.06242818, -0.032443527, -0.018009005, 0.002121636, 0.04330357, -0.062200505, 0.031259626, 0.06215497, -0.009863971, -0.0031902804, -0.06538794, -0.020672789, 0.012260239, -0.029073955, -0.046582077, 0.0051539675, -0.016028242, -0.008634532, -0.019796245, -0.0038676101, 0.034720268, 0.019306745, -0.04437364, 0.041117903, 0.03280781, -0.039228212, -0.0058227596, 0.020479266, 0.01993285, 0.025294568, -0.003648474, 0.040935766, -0.00497752, 0.026751682, 0.015607045, 0.028231561, 0.023154434, 0.0068757515, 0.014127164, 0.021959146, -0.02641017, 0.030439999, -0.013797037, -0.0012500719, -0.029984651, 0.02773068, -0.06015144, -0.04234734, 0.028869048, -0.06689059, 0.033285923, -0.0018754636, -0.016745415, 0.046513774, -0.03362743, 0.030030185, -0.018202526, 0.04234734, 0.0011974224, -0.031464532, 0.058330048, 0.032557365, 0.020354046, 0.0071318843, 0.0346975, -0.017530888, 0.01460528, 0.027935585, -0.06707273, 0.040047836, -0.0054470976, 0.012692819, -0.002643863, -0.028709676, 0.035198383, 0.022118518, 0.0043058824, -0.0032329692, -0.015527359, -0.02572715, 0.022118518, -0.043804456, -0.022072984, 0.018327748, -0.0069440533, -0.00982982, 0.009852587, 0.042825457, -0.0735842, 0.01790655, -0.05327569, 0.01611931, 0.039342046, -0.018407434, -0.0326029, -0.0056377747, -0.07007802, 0.0028046577, 0.028664142, -0.0036399362, 0.012681436, 0.021799775, 0.024725383, -0.09220792, -0.037292983, 0.012009798, 0.04287099, 0.02581822, 0.047720447, -0.010330702, -0.014252385, 0.017963469, 0.026728915, 0.033718504, -0.049496304, -0.011816274, -0.05546136, 0.021685937, 0.009488309, 0.0010885658, 0.019397816, 0.054322988, 0.0305083, 0.021185055, -0.00813365, -0.012374076, 0.01707554, 0.04054872, 0.024634315, 0.0015681039, 0.03419662, -0.0067220717, 0.08200813, 0.03025786, -0.046604846, 0.01611931, -0.030371696, 0.005953672, -0.0059024454, -0.016904786, 0.022095751, -0.029347165, -0.027229797, -0.005558089, 0.02973421, 0.018840015, 0.04480622, 0.023336573, 0.05136323, -0.004359955, -0.041004065, -0.023700852, 0.02859584, -0.0070863497, 0.010677905, -0.05546136, -0.04218797, -0.029187793, -0.03164667, -0.0044026435, 0.0015168772, 0.017963469, -0.017804097, 0.05022486, -0.004889297, -0.0052023483, -0.058876466, -5.1093222e-05, -0.022016065, -0.0034691808, -0.011241398, 0.001751666, 0.028755212, 0.0102965515, -0.011839042, -0.03296718, -0.0063521015, 5.0248338e-05, 0.011537374, -0.017269064, 0.04011614, 0.001228016, 0.006261032, 0.04387276, 0.005484095, 0.020752475, -0.028800746, -0.012863575, -0.0072343377, 0.0663897, 0.052911412, -0.01817976, -0.03531222, 0.012032565, -0.023006447, 0.0020604488, 0.033968944, -0.004912064, 0.037452355, -0.030462766, -0.07649843, -0.052091785, 0.0056434665, -0.034469828, -0.006511473, 0.004359955, 0.06156302, -0.012658668, -0.017952086, -0.040389348, 0.027298098, 0.013330306, -0.005580856, 0.014104397, 0.014571128, 0.059969302, 0.0046758526, -0.020752475, -0.02754854, 0.08150725, -0.0006968955, -0.04854007, -0.026865518, -0.026751682, -0.034925174, -0.006704996, -0.018692026, -0.054778337, 0.021777008, 0.027525773, -0.031259626, -0.042688854, -0.02973421, 0.0135921305, -0.004092438, 0.045807987, -0.066298634, -0.052228387, -0.013888107, 0.018566806, -0.017155228, 0.027298098, -0.002865845, 0.014377606, -0.015515976, -0.016039625, 0.051408764, 0.03339976, -0.021116752, 0.0452388, -0.016790949, -0.08669822, 0.016039625, -0.0053474903, -0.07576987, -0.026205264, 0.050589137, -0.014502826, 0.016073776, -0.04976951, -0.006249648, 0.0744949, 0.012931877, 0.040753625, 0.052501597, 0.016802333, 0.05259267, -0.014024711, 0.048084725, 0.0005151122, -0.018692026, 0.0023407722, -0.0068074493, 0.006340718, -0.005999207, 0.013432759, -0.016130695, -0.03059937, -0.016073776, -0.012442377, -0.006813141, 0.009943657, 0.008532079, 0.033331458, 0.023404876, 0.00594798, -0.012499296, 0.095440894, -0.02276739, -0.0015311069, 0.036860403, -0.0021657478, 0.047720447, -0.03321762, -0.030713208, 0.041596018, -0.0033211927, 0.06725486, 0.032989945, -0.011087718, 0.028732445, 0.01700724, -0.000705789, 0.015288302, -0.02406513, -0.040662557, 0.016107928, 0.03392341, 0.0033268847, -0.024907524, -0.015925787, 0.002383461, -0.007262797, -0.010666521, 0.04899542, -0.031669438, -0.053639967, -0.041004065, -0.007911667, -0.038841166, -0.007217262, 0.031965412, -0.032648437, -0.030030185, 0.0058284514, -0.053639967, -0.0011654057, 0.0015311069, -0.018316364, -0.010626678, -0.0060561253, 0.027753446, -0.0042916527, 0.013125399, 0.0050486685, -0.035630964, -0.035198383, 0.03458366, 0.016130695, -0.0011561564, -0.022972295, -0.06557008, 0.01700724, -0.0021458264, 0.010717748, -0.008714218, -0.011793507, -0.031464532, 0.04471515, 0.0040440573, 0.01827083, -0.005051514, -0.039364815, -0.034492593, 0.027002122, 0.0305083, 0.029483767, 0.070487835, 0.012396843, -0.030394463, -0.01987593, 0.029597605, -0.037634492, 0.029278861, 0.057055075, 0.021947762, -0.01093973, 0.02274462, 0.016346985, -0.03836305, 0.048449002, -0.016938938, 0.021560717, -0.009180949, 0.019249827, -0.020593103, -0.017599192, 0.0051795808, -0.0067960653, 0.059513953, -0.009863971, -0.00047598072, -0.0050315927, 0.039934, 0.0043656467, -0.040685322, -0.03722468, -0.06830216, -0.007837674, -0.0004300902, 0.01895385, 0.02921056, -0.0069838963, -0.042529482, -0.011406462, -0.026524007, -0.004988904, -0.023154434, -0.027844517, 0.030280627, -0.00013696006, 0.0033382683, 0.023564247, -0.011503223, 0.0021942072, 0.0043457253, -0.009778594, -0.03836305, 0.041163437, 0.013136784, -0.037338518, -0.04029828, 0.0144686755, 0.013910875, 0.037520654, 0.10172469, -0.0065968507, -0.010154256, 0.019739326, -0.01229439, 0.032147553, -0.013398608, -0.04453301, -0.01251068, 0.0071603437, 0.012829424, 0.025840987, -0.0022923914, 0.0515909, 0.04150495, -0.023188585, -0.01709831, 0.0008423934, -0.008315789, 0.004180662, -0.019147374, -0.041823693, 0.051272158, 0.037520654, -0.01599409, 0.0028615762, -0.01707554, 0.072901174, 0.0103591615, 0.025180731, -0.056098845, 0.01303433, 0.054550663, -0.03626845, 0.012704203, -0.011918728, -0.018441584, -0.020376813, 0.02493029, 0.00964768, -0.0118618095, -0.018555421, 0.010643754, -0.012351308, -0.020035302, 0.006818833, -0.0077522956, -0.005287726, -0.006591159, -0.0010871429, -0.00018658586, 0.0017402823, -0.0060162824, -0.009488309, 0.04646824, 0.033581898, -0.015800567, -0.012692819, 0.01118448, -0.04881328, -0.030918114, -0.03913714, -0.006437479, 0.023143051, 0.056964006, -0.022756005, 0.05700954, 0.020934613, -0.007962894, 0.0004898546, 0.009755826, 0.021241974, 0.046764217, -0.033422526, -0.0014813032, -0.00423758, 0.01106495, 0.002716434, 0.06461385, -0.015288302, 0.035175614, 0.033012714, -0.009237868, -0.003466335, -0.030827044, -0.06948607, -0.014332071, -0.009630606, 0.03724745, 0.009391548, -0.009516768, 0.021708705, -0.01438899, 0.014001944, 0.05309355, -0.014457292, -0.050543603, -0.013102632, -0.0054499437, -0.04532987, -0.005646312, 0.019671023, 0.020604488, -0.0020746782, -0.015208616, 0.014036095, -0.01611931, -0.0070920414, 0.006733455, 0.012783889, -0.010564068, -0.021902228, 0.004425411, -0.00850362, -0.059605025, 0.034538127, 0.0049689827, -0.03207925, 0.00035236092, -0.014013328, -0.023268271, -0.010586835, -0.015959939, 0.03583587, 0.021139521, -0.00439126, -0.0058967536, -0.029574838, 0.038249213, 0.0071034255, -0.011008033, 0.02406513, -0.033809572, -0.0010914117, -0.0025940593, -0.008156417, -0.018236678, -0.00588537, -0.0023962676, -0.049314164, -0.029483767, 0.009004503, -0.022198204, 0.009818437, -0.023905758, -0.005999207, 0.00976721, 0.012248855, -0.030098489, -0.01605101, 0.03198818, 0.0016435209, -0.0042404262, -0.038226444, 0.03112302, -0.028186027, 0.015550126, -0.008036888, -0.027320866, 0.033263154, 0.026432939, 0.033445295, 0.008110882, 0.0033069632, -0.04234734, -0.0031788966, 0.03635952, -0.000782629, -0.024292804, -0.009778594, 0.06420404, -0.02955207, -0.013079865, 0.02074109, -0.03670103, 0.0047896896, 0.020650022, 0.035107315, -0.0104217725, -0.0049405233, 0.041345578, -0.04330357, -0.002160056, 0.0110251075, -0.019727942, 0.01177074, 0.008315789, 0.009533844, -0.0065740836, 0.010700673, -0.006744839, 0.019056303, 0.030098489, 0.031669438, 0.03164667, 0.028345399, -0.01617623, 0.016312834, 0.04532987, -0.0326029, 0.0039700633, 0.0086060725, 0.013011563, 0.029256094, 0.008754061, 0.005327569, -0.016164847, -0.030235091, 0.0078092143, -0.023165818, -0.01944335, -0.0093573965, 0.004809611, 0.00677899, -0.020433731, -0.05345783, 0.0017915089, 0.01611931, -0.012931877, 0.016312834, -0.08587859, -0.0378394, 0.032329693, 0.032420762, -0.03417385, 0.0071717273, -0.0028331168, -0.012066716, -0.004792535, 0.013512445, -0.010091645, -0.020593103, -0.021913612, -0.013933642, -0.008002737, -0.01756504, 0.010780359, -0.03419662, 0.00955092, 0.0026922438, 0.00072535477, -0.037338518, -0.00058875047, 0.02693382, 0.021606252, 0.022095751, -0.0062781074, 0.03515285, 0.050361462, -0.027252564, -0.01590302, 0.035972472, -0.011326776], [0.027411945, -0.0211414, -0.023768585, 0.0071070297, 0.027312806, -0.0021733136, -0.058392894, 0.03281502, 0.003987248, 0.03997782, 0.0089163175, -0.017411293, -0.020806806, -0.04322462, -0.01884881, 0.039382983, -0.05165144, -0.01603574, -0.011301851, -0.015081527, -0.018402684, -0.028601613, -0.051155746, 0.0046130633, 0.029171662, -0.0042970576, -0.05764935, 0.00057004945, 0.027139312, 0.038862504, 0.03390555, 0.03759848, 0.043199837, -0.03410383, 0.0099201, -0.001857308, 0.00884816, 0.034326892, 0.011580679, -0.007949712, -0.0054309606, -0.0003586045, -0.0015056742, -0.032269757, -0.030906595, -0.010533523, -0.027213667, -0.018439861, -0.01520545, 0.0033738255, 0.018910771, -0.0025063588, -0.016357942, -0.02624706, -0.068009384, -0.013111138, 0.05462561, -0.05368379, 0.07217322, -0.030336546, -0.030559609, 0.035962686, 0.098742485, -0.017039523, -0.011778957, 0.004197919, -0.0063510947, 0.008110813, 0.027213667, 0.042704143, 0.026445339, 0.0619619, 0.031625353, 0.029022954, -0.006729062, -0.03343464, 0.07093398, 0.0422828, -0.036359243, -0.032244973, 0.028502474, -0.041142702, 0.025528302, 0.003909796, -0.010892902, -0.029840851, 0.0073177004, -0.12610486, -0.011698406, 0.029047739, 0.017436078, 0.022826765, 0.02733759, -0.035120003, -0.027659792, 0.027064959, -0.014561047, 0.01671732, 0.0075097824, 0.010000651, -0.030311761, -0.05898773, -0.046694487, -0.06434124, 0.025020216, 0.009436797, 0.036061827, 0.027114527, 0.00067267386, 0.02457409, 0.006760043, -0.057004947, -0.05472475, 0.03254239, -0.059136435, 0.0718758, -0.03395512, -0.0016001661, -0.050486557, 0.012287045, -0.08297937, -0.043720316, 0.069595605, 0.03452517, 0.028576829, 0.029394725, -0.023644662, 0.021314893, 0.0005654023, -0.078765966, -0.023248104, 0.023657054, 0.021290109, 0.017944166, 0.06181319, 0.0005069258, 0.06706756, 0.013495302, -0.048107218, -0.015564829, -0.033707272, 0.012888075, 0.0037765778, 0.02133968, -0.01816723, 0.012702189, -0.007819592, -0.0318732, -0.011004433, -0.0012686698, -0.043968163, -0.009591702, -0.02062092, 0.029642573, 0.0159366, -0.009548329, 0.004204115, 0.016866028, -0.023396812, -0.0013569656, 0.005384489, -0.03742499, 0.03457474, 0.024908684, -0.008123205, -0.011023022, 0.067364976, 0.015552437, -0.038986426, 0.028031563, 0.026222276, -0.018353114, -0.0042908615, -0.054923028, -0.036532737, 0.08084789, 0.040969208, -0.008600311, -0.03566527, -0.000256561, -0.055617, 0.06820766, 0.085755266, -0.039705187, 0.015279804, 0.07043829, 0.0782207, 0.049643874, 0.015552437, -0.04327419, -0.01312353, 0.008042655, -0.04671927, -0.05135402, -0.025429163, -0.01624641, -0.0018929361, -0.04307591, 0.018489432, -0.005827517, 0.0010579994, -0.02473519, 0.037350632, -0.02743673, -0.009003064, 0.056459684, 0.03442603, 0.034401245, 0.02015001, 0.017374117, 0.029593004, 0.029196447, -0.0027015388, 0.02213279, -0.00736727, 0.0064316452, -0.066720575, 0.0052574673, 0.012330418, -0.012609246, 0.045009125, -0.03759848, 0.02133968, -0.024078393, 0.0021098028, 0.048454206, -0.02577615, 0.0001396079, 0.01473454, 0.030163053, 0.004216507, -0.032715883, -0.03920949, 0.028700752, -0.056261405, 0.030733103, -0.03283981, 0.018055698, 0.038986426, 0.013309416, 0.019344505, 0.028452905, -0.021575134, 0.0526924, 0.024227103, 0.026618833, 0.00900926, 0.023929685, -0.011816135, 0.009492563, 0.012621639, -0.03108009, -0.008117009, 0.028502474, -0.0013120432, 0.07286719, 0.012621639, -0.0102051245, -0.011029218, 0.017882204, -0.022616094, 0.027139312, -0.016853636, 0.044463858, -0.039036, 0.004891892, 0.031897984, -0.044736493, -0.021748627, 0.00031465027, -0.00090774184, -0.037053216, 0.033831198, -0.012361399, 0.03499608, 0.013358986, 0.075643085, 0.021637095, -0.047140613, 0.06434124, -0.019803023, 0.024859114, -0.01712627, 0.008575527, 0.02582572, -0.0080798315, -0.0003560873, -0.06295329, -0.018551392, 0.02275241, -0.0021485288, -0.0090650255, 0.04790894, 0.028973384, 0.043522038, -0.031005735, 0.0015715087, -0.010112182, -0.060028687, 0.02696582, -0.0020400956, -0.00070907647, -0.026048783, -0.048082434, 0.025800936, 0.013879466, -0.015887031, 0.10013043, 0.0014258982, -0.037201926, 0.06850508, 0.017448472, 0.0135448715, -0.076931894, 0.020397857, -0.0042691748, 0.02166188, 0.059532993, 0.05581528, -0.06617531, 0.04020088, -0.010093593, -0.08739106, 0.03328593, -0.008110813, 0.02363227, 0.024140356, 0.03930863, -0.021649487, 0.039903462, -0.03437646, -0.03566527, -0.026841896, 0.0027371668, -0.05279154, -0.06662144, -0.00788775, -0.020298718, 0.009548329, -0.026271846, -0.043546822, 0.022033652, 0.018600963, 0.025020216, 0.013891858, -0.017485648, -0.006970714, 0.029617788, 0.05660839, -0.006044383, 0.0014801149, 0.059384286, -0.020038478, 0.049544737, 0.012330418, -0.025330024, 0.0070760488, -0.07732845, -0.0035256322, 0.0083090905, 0.044017732, -0.036384027, -0.014821286, 0.031228798, 0.03135272, -0.057401504, -0.015564829, 0.026941033, -0.01026089, 0.00931907, -0.08620139, 0.0385403, -0.07440385, -0.035764407, -0.018315937, -0.019394075, 0.060375676, -0.015131095, -0.024227103, 0.008612704, 0.03943255, -0.051304452, 0.009331462, 0.047314107, -0.0016869127, 0.011078788, 0.004929069, 0.0069273403, 0.002935445, -0.0066485116, 0.0035999864, -0.0054867263, 0.009678449, -0.049718227, 0.061367065, 0.031179229, -0.01910905, 0.006035089, -0.016258802, 0.0024598874, -0.0117231915, -0.0008945749, -0.01941886, 0.01697756, 0.042307585, -0.044563, 0.009622683, -0.029171662, 0.009312874, 0.023285283, -0.008166579, 0.01255348, 0.021984082, 0.015713537, 0.040795714, 0.04104356, 0.008823374, 0.024623659, -0.02686668, 0.020645704, 0.04515783, 0.015056741, -0.023595091, 0.066770144, -0.07430471, 0.056063127, -0.004015131, 0.026271846, -0.010601681, -0.03759848, -0.030782672, 0.009108399, 0.0013468968, -0.029146878, -0.014486692, -0.018291153, -0.036384027, -0.070586994, -0.04312548, 0.051254883, -0.013594441, 0.011332831, 0.013185492, -0.0032499016, -0.011896685, 0.002802227, -0.063300274, -0.02582572, 0.015701145, -0.024883898, -0.03863944, -0.028576829, -0.072718486, -0.054080345, 0.032517605, 0.01931972, -0.0009836452, 0.024883898, 0.029543433, -0.050684832, 0.02036068, -0.019691491, 0.0126340315, -0.040993992, -0.05284111, -0.011586876, 0.017089091, 0.0011881194, 0.024177533, 0.0072805234, -0.017113877, 0.044786062, -0.021079438, 0.015193058, -0.0022290794, -0.040993992, -0.011425775, 0.023458775, 0.034896944, 0.008135597, -0.033087656, 0.011475344, 0.046545777, 0.06622488, 0.04743803, -0.028725537, 0.0019998203, -0.008086028, 0.03276545, 0.022529347, -0.026643617, 0.070834845, 0.01879924, -0.0026566165, -0.014647793, -0.031774063, 0.017448472, -0.045950945, 0.022380639, -0.02649491, 0.05482389, 0.029146878, 0.034872156, 0.042431507, -0.01070082, -0.0014104077, -0.008346268, -0.029146878, -0.02577615, 0.025528302, 0.014251237, 0.047016688, -0.055369154, 0.016469473, -0.0034450816, -0.00793732, 0.020373072, 0.052394982, 0.0024010236, 0.023210928, 0.022628486, -0.04664492, -0.011475344, -0.011847115, -0.009759, -0.010502542, -0.00017233154, -0.015056741, -0.0040244255, -0.028006779, -0.023830546, -0.013705973, 0.035417423, 0.009771392, -0.022591308, -0.010186536, 0.0015320079, 0.031997126, -0.006044383, 0.018043306, -0.00033478788, 0.01312353, 0.00770806, 0.0029199545, 0.010217518, 0.044141658, 0.040746145, 0.008501173, -0.027882855, 0.03868901, -0.041464902, 0.033930335, 0.0140777435, 0.0330133, -0.0068901633, -0.0045139245, -0.043720316, -0.054774318, -0.009405816, -0.006524588, -0.011320439, 0.02213279, 0.046050083, -0.0019053284, -0.03140229, -0.03868901, 0.032567173, -0.018030914, -0.03098095, -0.004405491, -0.020905945, 0.047636308, 0.024536911, -0.03174928, -0.011524913, 0.063548125, -0.015911816, -0.06216018, 0.0036681443, -0.06761283, -0.00600101, -0.008191363, 0.014276022, -0.05774849, 0.027387159, 0.03145186, -0.008947298, -0.031427074, -0.051056605, 0.011574483, -0.009579309, -0.010174144, -0.021129008, -0.03328593, -0.0042598806, -0.018811632, 0.012658816, 0.029816067, 0.010211321, 0.00015926144, -0.035541344, 0.009040241, 0.00848878, -0.002123744, -0.059384286, -0.008649881, 0.047933724, -0.032195404, 0.017039523, 0.021153793, -0.06339942, -0.007962104, 0.058442462, -0.025999213, 0.031575784, -0.033360288, 0.007962104, 0.07296633, -0.011252281, 0.029072523, 0.0356157, 0.0052078976, 0.07638663, -0.014461908, 0.060623523, 0.004891892, -0.018006127, 0.007503586, 0.010595485, 0.008780001, 0.003819951, -0.012125944, -0.0131731, -0.04213409, 0.027213667, 0.044959553, 0.040275235, 0.03182363, -0.019146226, 0.001993624, 0.021624703, 0.0437451, -0.008346268, 0.10151838, -0.03633446, -0.015750716, 0.062061038, -0.018489432, 0.06756326, -0.03963083, -0.036507953, 0.014399946, -0.033707272, 0.06706756, -0.0014909583, -0.006320114, 0.0034233949, 0.021327285, 0.0046843197, 0.03182363, 0.0018201309, -0.04087007, 0.0010239204, 0.034178182, -0.0119524505, -0.03868901, -0.046545777, -0.02083159, 0.0030733102, 0.0006525363, 0.06696842, -0.028874245, -0.039135136, -0.015750716, -0.018985126, -0.017089091, 0.0057872413, 0.033707272, -0.028353766, -0.009684645, -0.027833285, -0.038465947, -0.031005735, 0.0068715746, 0.017634356, -0.00482993, -0.010242302, 0.021252932, -0.021686666, 0.024710406, -0.009040241, -0.05036263, -0.03174928, 0.07603964, 0.009721822, -0.009876727, -0.0035163378, -0.047289323, -0.0020416446, -0.00016129456, 0.011896685, -0.011233692, -0.016989952, -0.004675025, -0.0019301132, 0.0061621107, 0.0052078976, 0.014387554, -0.024710406, -0.037449773, 0.039556477, 0.024140356, 0.004427178, 0.0655309, 0.04617401, -0.02301265, 0.008240933, -0.0062178764, -0.042431507, 0.036681443, 0.037846327, -0.029543433, 0.0024645345, -0.04562874, 0.03878815, -0.05070962, 0.011710799, -0.021364463, 0.03911035, -0.003844736, 0.03484737, -0.013086353, 0.031526215, 0.0004887245, -0.016940383, 0.010093593, 0.0008171226, -0.006908752, 0.020955514, -0.003683635, 0.022826765, 0.007943516, -0.031848416, -0.05004043, -0.011946254, 0.0037641854, 0.033087656, 0.01239238, 0.01312353, -0.032368895, -0.025602657, 0.0027867365, 0.017200623, -0.043546822, 0.008117009, 0.020583743, 0.029097307, -0.0030857027, 0.025082177, -8.737596e-05, -0.034500387, -0.019245366, -0.031303152, -0.04852856, 0.019220581, 0.011568286, -0.017770672, -0.07048786, -0.0015219392, 0.0024598874, 0.03214583, 0.044538215, -0.018452253, 0.027833285, 0.027758932, -0.03363292, 0.01863814, -0.043670747, -0.04275371, 0.0012477577, 0.010044024, 0.03586355, -0.02743673, -0.03083224, 0.030782672, 0.007150403, -0.019456036, 0.00080473017, 0.010614074, 0.015602007, 0.015738323, 0.01765914, 0.0121817095, 0.024983037, 0.025726581, 0.010366226, 0.059433855, -0.015639184, 0.011016826, 0.011054003, 0.01489564, -0.05804591, -0.0045201206, 0.04540568, -0.015329374, -0.019803023, -0.011729388, -0.04337333, -0.025317632, 0.04151447, -0.0023421599, 0.022331068, -0.007020283, 0.038094174, -0.015577221, -0.017225409, 0.0057190834, 0.0020509388, 0.01291286, -0.004656437, -0.0131731, -0.011989628, 0.042357154, 0.002094312, 0.019691491, 0.020373072, -0.021414032, 0.020026086, -0.0063944682, -0.00030322606, -0.012665012, -0.029915204, 0.0045541995, 0.022888726, 0.009573113, -0.00469981, 0.016915599, 0.063250706, 0.010421991, -0.014337984, -0.00068545353, -0.016122486, 0.019456036, -0.0038602264, -0.064192526, 0.03046047, -0.011165534, -0.0021345874, 0.011469147, 0.016890815, 0.01109118, 0.013334201, 0.0038757168, -0.014697363, -0.0036960272, -0.053237665, -0.03972997, 0.0054278625, -0.008625097, 0.028180271, 0.006329408, 0.023979256, 0.03264153, -0.055170875, -0.010378618, 0.021215754, -0.035913117, -0.074354276, 0.018266369, -0.027758932, -0.022021258, -0.0015072232, 0.004932167, 0.048132002, 0.0030206426, -0.038118962, 0.031848416, -0.005877086, -0.0070884414, -0.009213734, 0.002418063, 0.02979128, -0.029394725, -0.030386116, -0.0037394005, -0.045083478, 0.025528302, -0.004170036, -0.029593004, -0.009356247, 0.024066001, -0.0012601501, 0.009424405, -0.025082177, 0.014114921, 0.017349333, -0.03331072, -0.019518, -0.004867107, -8.863456e-05, 0.016903207, 0.015849855, 0.028502474, -0.05061048, 0.012751759, -0.029270802, -0.011277066, 0.017721104, -0.004368314, -0.040225666, -0.05482389, -0.0049383636, 0.036433596, -0.035838764, 0.0037827739, 0.0021965494, -0.040597435, -0.011977235, 0.045207404, -0.03742499, 0.009777588, -0.0045356113, -0.009015457, 0.05075919, -0.030658748, 0.03462431, 0.013718365, -0.007045068, -0.01738651, -0.022058437, 0.021897335, 0.024363419, -0.0077452376, 0.0017767574, -0.00723715, -0.015961386, -0.012813721, -0.002740265, -0.022554131, -0.0074168392, -0.0061435224, 0.061267927, 0.006549373, -0.04139055, 0.028254626, -0.035169575, -0.031005735, 0.021153793, 0.005341116, -0.018972734, -0.029617788, 0.04347247, -0.03140229, 0.027734146, 0.0024025727, -0.008030262, -0.0068777706, 0.034029476, 0.006952125, 0.0030237406, -0.009232323, -0.004046112, -0.0037022235, -0.008172775, 0.052047994, -0.0008287404, 0.04153926, -0.03296373, 0.0006835172, 0.03328593, -0.04597573, -0.025429163, -0.013631618, 0.0077390415, -0.0108123515, -0.0013314063, 0.009027849, -0.016531434, -0.017584788, -0.014313199, 0.022157576, -0.059334714, -0.020447427, 0.0146849705, 0.018960342, -0.02979128, -0.017138662, 0.010539719, 0.043026343, -0.02218236, 0.043298975, -0.053832497, 0.014176883, -0.015899424, 0.004334235, -0.019914554, 0.020063262, -0.0140777435, 0.013656403, -0.009765196, -0.038342025, -0.043571606, -0.02639577, 0.031650137, -0.0030144465, 0.028775107, -0.024202319, 0.017783064, -0.01863814, 0.022194752, 0.008253325, 0.027783716, -0.026544478, 0.0065059992, -0.009833354, 0.010242302, 0.0263462, 0.010483953, 0.0058925766, 0.08302894, 0.014251237, -0.019815415, 0.013222669, -0.0043125483], [0.0008046326, -0.008120869, -0.009243409, -0.004007816, 0.02067343, -0.029653745, -0.025818402, 0.049017545, -0.03161819, 0.064218596, -0.009781292, 0.044808023, -0.015914332, -0.03956951, 0.01853359, 0.034822103, -0.011734042, -0.011962058, 0.00054555695, -0.014440999, -0.0111669265, -0.04712326, -0.021527028, -0.0121140685, 0.023889037, -0.012558407, -0.048362732, 0.011202006, 0.008535976, 0.010938911, 0.01635867, 0.009301875, 0.019059781, 9.902608e-05, 0.03264718, 0.018381579, -0.016089728, 0.06604272, -0.043381464, -0.03996707, -0.024859566, 0.0025783323, -0.0065306057, -0.0054051434, 0.0013973274, -0.011178619, -0.015633697, -0.014359147, -0.018744066, -0.034985807, -0.022672953, 0.0027361894, -0.02967713, -0.010611503, -0.07212315, 0.0057559367, 0.03818972, -0.04854982, 0.054256063, -0.044924956, -0.036739774, -0.010406874, 0.06908293, -0.011248779, -0.005998569, 0.00071401097, -0.003925964, 0.029700516, 0.0068112407, 0.032179456, -0.0002731439, 0.022240307, 0.034939032, -0.011061688, -0.037277658, -0.05023363, 0.080729276, 0.02074359, -0.017843695, -0.018112637, 0.048783682, -0.008822457, 0.004481387, 4.5493533e-05, 0.048596594, -0.012722111, 0.037768766, -0.10542514, -0.013984968, 0.0075596, 0.0016765007, -0.008769837, 0.01898962, 0.0015069505, -0.032483477, 0.0060394946, 0.011488487, 0.026870782, -0.03309152, -0.021667344, -0.017867083, -0.053554475, -0.07764229, -0.050935216, -0.02471925, 0.008290419, 0.008582748, 0.016148195, -0.016393749, -0.053554475, 0.052057754, -0.024859566, -0.031384327, 0.034728557, 0.008003938, 0.038540512, -0.058605902, -0.0021544567, -0.023164064, 0.008962774, -0.050280403, -0.01508412, 0.08662261, 0.038634058, 0.04911109, -0.024041047, -0.0018387426, 0.03496242, 0.0034202368, -0.016194968, -0.042866968, 0.022544328, 0.0010925756, 0.0010794208, 0.042375855, 0.029981151, 0.045860402, 0.047286965, -0.027806232, 0.019398881, -0.041767813, 0.044410456, 0.021643959, 0.030846441, 0.009448038, 0.01684978, -0.043989506, -0.0507949, -0.049391724, 0.019749675, 0.02464909, -0.028157026, -0.040645275, 0.024157979, 0.012406397, 0.0110792285, -0.023503164, 0.0146514755, -0.026169196, 0.038423583, -0.0030665197, -0.036529295, 0.019691208, 0.013014439, -0.0124999415, -0.05477056, 0.016908247, 0.035406757, -0.034611624, 0.015399835, 0.043030668, -0.03575755, 0.00095006573, -0.033161677, -0.0042153685, 0.03893808, 0.04284358, -0.008278727, -0.047590986, -0.032577023, -0.029232793, 0.08185182, 0.054536697, -0.009693594, -0.0011495795, 0.082927585, 0.035617232, 0.036412366, 0.011757429, -0.012523328, -0.020813748, 0.03297459, -0.004478464, -0.026870782, -0.05916717, 0.0063142832, -0.026987713, 0.0009405651, 0.020404488, 0.051309396, -0.025982106, 0.001484295, 0.017165495, -0.028952157, -0.044433843, 0.06604272, 0.04649183, 0.017235653, 0.018697293, 0.05177712, 0.03353586, 0.031244008, -0.005831942, 0.006974944, 0.0073140445, 0.02014724, -0.078951925, 0.007436822, 0.0024687094, -0.02757237, 0.07076674, -0.036084957, 0.01962105, -0.028765067, 0.027104644, 0.055612464, -0.001581494, 0.02356163, 0.054536697, -0.0009639513, -0.025186973, -0.027829617, -0.0076531447, -0.0020667585, -0.01691994, -0.014055126, -0.012020524, -0.02029925, 0.037955858, 0.0035634774, 0.014955496, 0.04122993, -0.044363685, -0.014148671, 0.007430976, 0.041323476, 0.020053696, 0.030331945, -0.041206542, 0.013657561, 0.03861067, -0.013552322, 0.028671522, 0.036084957, 0.003475779, 0.1088863, 0.0058494816, -0.009301875, -0.018732373, 0.01313137, -0.008670446, 0.020708509, -0.03797924, 0.05004654, -0.07277796, 0.016592532, 0.016124807, -0.041721042, -0.049578816, 0.0026835704, 0.043100826, -0.0069047855, 0.052431934, 0.010740127, 0.0026952634, 0.0073023513, 0.029396495, 0.055425372, -0.009307721, 0.0071386476, 0.05247871, 0.051262625, -0.0128858145, -0.06688463, 0.03297459, -0.006974944, -0.002923279, -0.038891308, -0.005972259, 0.017352585, -0.01583248, -0.0016516527, -0.002550561, 0.019796446, 0.01440592, 0.0059605665, 0.022252, -0.025514381, -0.018510204, 0.019866606, 0.040621888, 0.018112637, -0.042118605, -0.023970889, 0.03203914, 0.025280518, -0.025257133, 0.018919462, 0.015902638, -0.024134593, 0.050280403, 0.011266318, 0.021842742, -0.04296051, 0.052759342, -0.050327174, -0.0032126838, 0.06697817, 0.052010983, -0.005478225, 0.005674085, -0.018779146, -0.090878904, 0.009997615, 0.025374062, 0.008921848, 0.020626659, -0.0097462125, -0.0093603395, 0.04394273, -0.06108484, 0.0031659114, -0.0020287558, 0.026239354, -0.027548984, -0.082927585, -0.033372156, -0.0373712, 0.03199237, 0.016779622, 0.04048157, 0.024532158, -0.015738934, 0.0046947864, -9.8021206e-05, -0.025748244, -0.034845486, 0.014557931, 0.030215014, 0.0008134024, 0.0014002507, 0.058091402, 0.030659351, 0.052385163, -0.022672953, 0.017223962, -0.016838089, -0.030425489, 0.021889515, -0.040692046, 0.051964212, -0.05935426, 0.023514858, 0.027268348, 0.036786545, 0.0072088065, -0.025561154, 0.02843766, -0.02738528, 0.019889992, -0.02408782, 0.026028877, -0.11421836, -0.04464432, -0.023047132, -0.024157979, 0.06594918, 0.008249494, 0.023187451, -0.0010326484, -0.0023459315, -0.025186973, -0.01812433, 0.020883907, 0.027759459, 0.019013008, -0.042071834, -0.005951796, -0.02359671, 0.010330869, -0.010371795, -0.01748121, -0.03290443, 0.002486249, 0.07740843, -0.0014996423, 0.0032126838, 0.061365478, 0.0031776044, 0.04768453, -0.012663646, 0.0027551907, 0.01245317, 0.021562107, 0.0012577409, -0.02288343, 0.035289828, -0.024204751, -0.01999523, -0.012546714, 0.014569623, 0.07347955, 0.037909083, 0.018966235, 0.019761367, 0.0032653029, 0.01853359, 0.0005429991, -0.015937718, 0.0025534844, 0.004788331, -0.0016648074, -0.009588356, 0.031080304, -0.01890777, -0.006513066, -0.06674431, -0.0089276945, -0.027853005, -0.002559331, -0.013914809, -0.01879084, 0.017235653, -0.015575231, 0.007430976, -0.053273838, -0.040458184, -0.0014886799, -0.018475125, 0.10327361, 0.03762845, -0.0034787022, -0.00044360763, 0.0131430635, -0.048970774, -0.023316074, -0.060804207, -0.028180411, 0.038096175, -0.052198075, -0.07965351, -0.04223554, -0.09078536, -0.031431098, 0.10140271, -0.021304859, 0.0631896, 0.029209405, 0.03323184, -0.07782938, 0.0073023513, -0.023351153, 0.05046749, -0.03568739, -0.03271734, -0.029817447, 0.004367379, 0.016896553, 0.013669253, -0.009442192, -0.002616335, 0.025841787, -0.062628336, 0.020369409, 0.03767522, -0.0020477572, -0.027244963, 0.030448876, 0.029794062, 0.004373226, -0.04321776, -0.0016399596, 0.023994276, 0.039148554, 0.053741563, -0.041697655, -0.011716503, 0.02067343, 0.08844674, 0.04359194, -0.0075186742, 0.096631914, -0.002765422, 0.010108699, -0.002161765, -0.037441358, -0.034143902, -0.030612579, -0.014195444, -0.0028238876, 0.0057734763, 0.045603156, 0.037441358, 0.027595755, 0.02457893, -0.031688347, -0.041112997, 0.0066884626, 0.036833316, -0.039148554, -0.008769837, -0.012780577, -0.029583585, -0.018475125, -0.03391004, 0.032857656, -0.0014221753, 0.013645867, 0.034564853, 0.032810885, 0.034845486, -0.023503164, -0.0412767, -0.029770676, -0.03297459, -0.028835226, 0.0015522613, -0.020369409, 0.030472262, -0.011424175, 0.020077081, -0.032436706, -0.010441953, 0.013973274, -0.018393273, -0.037347816, 0.053367384, 0.00046297433, -0.0022596947, 0.0029905145, -0.032319773, 0.045649927, -0.011149387, -0.004542776, -0.0063785953, 0.023912424, 0.0637041, -0.0068930923, -0.036833316, -0.0061505795, -0.044691093, 0.024812793, 0.032506865, 0.037838925, 0.011786662, -0.008360579, -0.03919533, -0.0419549, -0.0007359355, -0.03391004, -0.024929725, -0.014499465, 0.034050357, 0.021328244, -0.030916601, -0.050701354, 0.04118316, -0.009792985, -0.006209045, -0.02558454, 0.007308198, 0.04644506, 0.019165019, -0.030098082, 0.024508772, 0.09419975, 0.0066299974, -0.0057559367, 0.01080444, -0.049204636, -0.045182202, -0.011751582, -0.006290897, -0.037488133, 0.02194798, 0.018288035, 0.00020481224, -0.039686438, -0.05477056, 0.010658276, -0.011932826, 0.010611503, -0.018217877, -0.039429188, -0.0075771394, 0.020509727, 0.0053846803, 0.010517959, 0.012616873, 0.018019093, -0.013037825, 0.00791624, -0.007132801, -0.019702902, -0.029022316, 0.007547907, 0.01437084, -0.026964327, 0.04873691, 0.036763158, -0.062862195, 0.027759459, 0.037838925, -0.0020506803, 0.03868083, -0.022801578, 0.030472262, 0.07754875, -0.009114784, 0.001196352, 0.0623477, 0.044176593, 0.07385372, -0.014452692, 0.0002771634, -0.006366902, -0.03793247, -0.011465101, -0.015154279, -0.018779146, -0.0007330123, 0.002680647, -0.019971844, -0.03383988, 0.005007577, 0.025303904, -0.00033526358, 0.01853359, -0.02986422, 0.01691994, 0.047286965, 0.07464886, 0.012324545, 0.05514474, -0.020603271, -0.018814225, 0.032997977, -0.020907292, 0.06576209, -0.0139615815, -0.047941778, 0.06697817, -0.034985807, 0.071328014, -0.0013067058, 0.0030314405, 0.0037914931, 0.011202006, -0.03793247, -0.013072904, -0.012406397, -0.07137478, 0.017750151, 0.023105599, 0.023187451, -0.006021955, -0.040037233, -0.027899776, 0.0037944163, -0.008056558, 0.043054055, -0.012464862, -0.034985807, -0.017808616, -0.042071834, -0.014978883, 0.0054811486, 0.046351515, -0.040715434, 0.00089160015, 0.034471307, -0.057389818, -0.019971844, -0.0019235177, 0.011973752, 0.0026265664, 0.0011729657, 0.024298297, -0.017270733, 0.0064429073, 0.0016048803, -0.048877228, -0.018568669, 0.032015752, 0.013680947, -0.02074359, -0.020240786, 0.031220622, -0.009588356, 0.020614965, -0.0022173072, -0.01887269, -0.0057559367, -0.007442669, 0.07221669, 0.031641573, 0.012920894, -0.027361894, -0.005437299, -0.038446967, -0.0055863867, 0.020170627, 0.01294428, 0.059073627, 0.038400196, -0.033629403, -0.016522374, -0.021211313, -0.065154046, 0.01819449, -0.012008831, -0.033793107, -0.015002268, -0.009412959, 0.029139247, -0.022672953, -0.0045076967, 0.005542537, 0.03531321, -0.017796924, 0.03898485, -0.0399203, 0.0081091765, -0.013400312, -0.015388141, -0.01898962, -0.01946904, 0.005788093, 0.018580362, 0.013061211, 0.047076486, 0.021035917, -0.0038470353, -0.040879138, -0.011248779, -0.015528459, 0.035289828, 0.005770553, 0.020322638, -0.037792154, -0.05210453, -0.037698608, 0.02108269, -0.009535736, 0.018849304, 0.02757237, 0.02850782, -0.013154756, 0.001974675, -0.02626274, -0.009050473, -0.031805277, -0.010184704, -0.027782844, 0.008758144, 0.02296528, 0.006010262, -0.032506865, 0.018802531, 0.0022874658, -0.02626274, 0.050561037, -0.040130775, 0.021749197, 0.037417974, -0.00377103, 0.039148554, 0.03072951, -0.039148554, -0.034915645, 0.009693594, -0.020240786, 0.005557154, 0.0040458185, 0.017434437, 0.047263578, -0.035500303, 0.0046509374, 0.008033171, 0.010208091, -0.008243647, 0.04228231, 0.025958719, 0.011833434, 0.028390888, -0.016861474, 0.026169196, -0.00845997, 0.005551307, 0.012640259, 0.027993321, -0.032787498, 0.013236608, 0.049017545, -0.016861474, 0.007319891, -0.010962297, -0.008015632, -0.025186973, 0.042305697, -0.02045126, 0.02937311, 0.0010538421, 0.0072731185, -0.00067856617, 0.01583248, -0.011213699, -0.010751821, -0.0023897807, -0.0048526432, 0.01583248, -0.024134593, 0.0013863652, -0.029209405, 0.019328723, 0.031688347, 0.02670708, 0.021375017, -0.0015507996, -0.005256056, -0.020568192, -0.042141993, -0.027455438, 0.008202721, 0.01046534, 0.022088297, -0.0026923402, 0.06973775, -0.0028472738, 0.0028253493, 0.0069574043, 3.2704185e-05, 0.012359625, 0.030027924, -0.09443361, 0.04363871, 0.008617827, -0.0016063419, 0.0041393633, 0.016054649, 0.04408305, 0.035126124, 0.03463501, -0.01898962, -0.02806348, -0.023772106, -0.029887605, 0.024462, -0.006741082, 0.025327291, 0.0036921017, 0.0028253493, 0.04424675, -0.029723903, -0.011354016, 0.032436706, -0.044784635, -0.07703425, -0.04929818, -0.016183274, -0.0015230285, 0.005162511, 0.038072787, 0.06426537, -0.031501256, -0.059073627, 0.002056527, -0.021199621, 0.0039405804, -0.022006446, -0.0027508058, 0.009798832, -0.03035533, -0.056407593, 0.03893808, -0.03861067, 0.02145687, 0.0033530013, -0.0053203683, 0.0036716387, -0.023199143, -0.0021793046, -0.02138671, -0.023339462, 0.04396612, 0.014686555, -0.0028867382, -0.010249017, -0.011956212, 0.006776161, 0.008956928, 0.009798832, 0.03199237, -0.02471925, -0.029630357, -0.0018109714, -0.023023747, 0.033512473, 0.020954065, 0.0004213176, -0.043451622, 0.019375494, 0.013914809, -0.028414274, 0.038096175, -0.008535976, -0.024228137, -0.0071678804, 0.018182797, -0.023737026, 0.022053218, -0.002056527, -0.0013534783, 0.028694909, -0.029794062, 0.012698725, 0.040271092, 0.013178143, -0.02232216, -0.037417974, -0.0137043325, 0.010178858, 0.00024500734, 0.018568669, -0.016627612, -0.021831049, -0.03919533, -0.026122423, -0.0055396142, -0.014125285, 0.05159003, 0.06417182, -0.010102853, -0.03365279, 0.04017755, -0.05406897, -0.025467608, 0.025958719, 0.04854982, -0.012523328, -0.017750151, 0.03568739, -0.020182319, -0.024064435, -0.009372033, -0.008003938, -0.009512351, -0.009050473, -0.019983536, 0.003905501, 0.03353586, -0.02949004, -0.030612579, -0.008740605, 0.016113115, -0.022415705, 0.009120631, 0.008933541, 0.0033266917, 0.005802709, -0.013388619, 0.009190789, -0.015434914, 0.001848974, 0.008547668, 0.04029448, -0.014967189, 0.018054172, -0.028952157, -0.0057530133, -0.0084541235, -0.04745067, -0.029606972, -0.00028209644, 0.026800623, -0.0077993087, -0.052852888, 0.027946549, 0.0373712, -0.011137694, 0.016405443, -0.023234222, 0.0012723573, 0.016791316, -0.0019951381, 0.015013962, 0.027432052, -0.0038470353, 0.0124999415, -0.0024073203, -0.015107507, -0.030308558, -0.033746336, 0.005861175, -0.020685123, 0.031571414, -0.0088399965, 0.010868752, 0.0046333973, 0.0019615204, -0.004218292, 0.025818402, -0.0006617573, -0.017235653, 0.013271688, 0.015376449, 0.03631882, 0.0017145033, -0.017574754, 0.10448969, 0.004303067, -0.0050251167, -0.00032265694, 0.0002919625], [0.011760937, -0.0034884135, -0.016297385, 0.02369101, 0.014183195, -0.017203467, -0.042211313, 0.02771401, -0.05397829, 0.064271376, -0.027762335, -0.037765473, -0.0033313595, -0.023219848, -0.011464951, 0.08253798, -0.01946263, 0.009918571, 0.0031138998, -0.043443587, -0.0053458805, -0.09234782, -0.066204354, 0.011628046, -0.011338099, 0.002713714, 0.023751415, 0.010782369, 0.005992219, -0.004104549, 0.03984342, 0.024560848, 0.028318066, -0.0059801377, 0.021600982, -0.013844925, 0.028680498, -0.016104087, -0.030202715, -0.011730734, -0.039480988, 0.00589859, -0.023848064, -0.008402395, 0.01279387, 0.010432018, -0.02546693, 0.023268173, 0.025563577, -0.065141216, -0.0034521704, -0.029646985, 0.04762364, -0.026336767, -0.015185925, 0.0019661968, 0.0847609, -0.09167128, 0.07089181, 0.004427718, -0.026046822, -0.01535506, 0.0413898, 0.002790731, -0.009562179, -0.05460651, -0.019317657, 0.052335266, 0.06639765, 0.05750597, -0.022084225, 0.019776737, -0.025491092, -0.024548767, -0.0050317724, -0.07171333, 0.10399399, -0.0015433588, -0.014944304, -0.004515306, 0.0025853524, -0.047889426, 0.008154733, -0.019474711, 0.03114504, -0.011730734, 0.02302655, -0.10882642, 0.00084945135, 0.028946282, -0.04346775, -0.038079582, -0.012757626, 0.019510955, -0.019015629, 0.02959866, -0.0072788545, 0.0137966005, -0.008879598, -0.0047267247, -0.028559687, -0.063208245, -0.011162924, -0.05397829, 0.0514171, -0.00467236, 0.032425635, -0.050788887, 0.01657525, 0.0535917, 0.026433416, -0.008819193, -0.015620844, -0.015645007, -0.03614661, 0.013554978, -0.005309637, -0.06697754, 0.023316495, -0.00522507, -0.114335395, -0.016055763, 0.07427452, -0.034890175, -0.036219094, 0.0003108992, 0.013699952, 0.022748685, 0.012407275, -0.026360929, 0.011193126, 0.016514845, 0.023618523, 0.016623575, 0.09800177, 0.013059654, 0.04697126, -0.024379632, -0.038683638, 0.021335198, -0.047526993, -0.017988738, -0.007073476, 0.028946282, -0.037813798, 0.0036756704, 0.00041339966, 0.008680261, -0.047309533, -0.015632926, -0.022205036, -0.03725807, 0.0028390551, 0.037523855, 0.023268173, -0.047092073, 0.0066445973, 0.020296225, -0.021298954, 0.03215985, 0.03914272, -0.06369148, 0.0020432137, 0.0047267247, 0.023558117, -0.03525261, 0.01523425, -0.009803801, -0.06402975, 0.030444337, 0.024440037, 0.014859736, -0.012038802, -0.016949764, -0.011628046, 3.503987e-05, 0.04953245, 0.021093575, 0.0021157002, -0.05185202, -0.03793461, 0.016756466, 0.0442651, -0.03203904, 0.059100673, 0.04938748, 0.04126899, -0.022543306, 0.009435328, -0.051900346, 0.014304006, 0.021782199, -0.003424988, -0.017288035, 0.010335369, -0.031410825, -0.020453278, -0.03271558, -0.022567468, 0.0066143945, -0.016732303, -0.023860145, -0.044216774, 0.043540236, -0.009713193, 0.015947033, 0.06702586, -0.011495153, 0.014062384, 0.0067472863, 0.032884717, 0.024005119, 0.01646652, -0.03312634, -0.021516414, 0.02057409, -0.07277646, 0.01634571, -0.033899527, -0.07427452, 0.014134871, -0.004648198, 0.03795877, -0.021395603, 0.016720222, 0.063208245, 0.014038222, -0.018616954, 0.011815302, -0.02036871, 0.020827793, -0.023195686, -0.00023463734, 0.04648802, -0.07635246, -0.020223739, -0.037451368, -0.003138062, 0.0009944243, 0.016321547, 0.0069949487, 0.04416845, -0.03373039, -0.0056207255, 0.015367141, 0.05639451, 0.012503924, 0.044192612, -0.022434577, 0.017420925, 0.023280252, -0.024790388, -0.006729165, 0.056587808, 0.012358951, 0.015294655, 0.005285475, -0.017988738, -0.025321957, 0.024597092, -0.017215548, 0.022845333, -0.011048153, 0.06378813, -0.0040230015, 0.008535287, 0.021613063, -0.037523855, -0.05562132, 0.0006085847, 0.05397829, 0.0049441843, -0.023944713, 0.022120468, 0.026771687, -0.03435861, 0.0496291, 0.017046412, -0.025418606, 0.07393625, -0.005696232, 0.018749846, 0.034068663, 0.00567509, 0.06117862, -0.016514845, 0.02336482, -0.08287625, -0.0058925496, 0.00025068253, -0.013204627, -0.031773254, 0.06050208, 0.03950515, 0.043201964, -0.020417035, 0.0048354547, -0.01867736, -0.049774073, 0.0033796837, 0.010915261, 0.017855845, -0.0005160889, -0.0587624, -0.013518735, 0.023038631, -0.032739744, 0.0641264, -0.018387413, -0.006019401, 0.054268237, -0.0030278221, -0.006276124, -0.03783796, 0.041848883, 0.007441949, 0.066832565, 0.044120125, 0.0110421125, -0.02323193, -0.006031482, -0.022507064, -0.0831662, 0.017300116, 0.012890519, 0.010317247, 0.023437306, -0.04948413, -0.049677424, 0.009151422, -0.082054734, 0.01190591, -0.03037185, -0.025853524, -0.062338404, -0.10805323, -0.032135688, -0.053640023, 0.0032769947, -0.016309466, -0.0022787948, -0.011464951, 0.013820763, -0.031314176, 0.0145093845, -0.020284144, -0.039529312, -0.017457169, -0.0035790217, -0.050353967, 0.0014633215, 0.08780533, 0.018109547, 0.024089685, -0.009840044, -0.006221759, -0.01913644, -0.045980614, -0.02280909, -0.0038901097, 0.087853655, -0.08553409, 0.0064996243, 0.054896455, 0.0011945174, -0.0035246569, -0.022168793, 0.023666847, -0.009042693, 0.034213636, -0.0413898, 0.023968875, 0.05315678, 0.0030006398, -0.028897958, 0.0038568866, 0.03911856, -0.02524947, -0.04315364, 0.009960855, -0.026940823, -0.04759948, 0.0024992747, 0.012757626, 0.0014323638, -0.010214558, -0.013168383, -0.0043763733, -0.00434315, -0.027979795, -0.009042693, 0.0025068254, -0.007399665, -0.04820353, -0.004660279, 0.03916688, -0.033440445, 0.0019239129, -0.016744385, -0.015306736, -0.015729574, 0.016369872, -0.010365572, 0.0068137324, 0.041776396, -0.009157463, 0.006197597, -0.013554978, -0.019607602, 0.059148997, -0.038514502, 0.04926667, -0.019160602, 0.017553817, 0.016611494, 0.01814579, -0.029308714, 0.003503515, 0.0011318467, -0.01490806, -0.031386662, -0.0130838165, -0.022120468, 0.041752234, -0.030106066, 0.012745546, -0.010510545, 0.050740562, -0.010552828, -0.019160602, 0.00030504743, -0.0071822056, 0.0066687595, 0.0072667734, -0.03614661, -0.046004776, -0.06953873, -0.040447477, -0.002423768, 0.031193364, 0.03281223, 0.0032316905, -0.00059914635, 0.025829362, -0.0050317724, 0.0049864682, -0.057795916, -0.026723363, 0.03827288, -0.017771278, -0.03402034, -0.016623575, -0.07930025, -0.026723363, 0.08094328, -0.035566717, 0.006976827, -0.008468841, 0.022434577, -0.11974772, -0.0022757745, 0.011748856, 0.042670395, -0.03351293, 0.043564398, 0.0031743054, -0.01456979, 0.016321547, 0.018496143, 0.0320632, 0.0057234145, 0.007756057, -0.038756125, 0.0076050437, -0.025273632, -0.028728822, 0.017614223, -0.0202479, 0.035228446, -0.029985255, -0.008976247, -0.0535917, 0.022603711, 0.027883146, -0.0054908535, -0.00056705595, 0.05252856, 0.041196503, 0.057216022, 0.0006557765, 0.013724114, 0.015415465, -0.0059469147, 0.00025559048, -0.031193364, 0.02080363, -0.08505084, -0.067364134, -0.036339905, -0.018266601, 0.0060375226, 0.015210087, -0.03774131, -0.00067238795, 0.021552658, 0.020429116, -0.016116168, -0.030444337, -0.0072969757, -0.015645007, -0.0015176864, -0.040689096, -0.016587332, -0.006904341, -0.008112449, -0.0088071115, -0.015753737, 0.015971195, 0.017638385, 0.01078841, -0.03003358, -0.03281223, -0.037668828, -0.015487952, 0.034213636, 0.004473022, 0.004482083, -0.00091287703, -0.0078889495, -0.014279843, -0.021987576, 0.019643845, -0.01023268, 0.033464607, 0.012268343, 0.00036469777, 0.008571531, 0.042356286, -0.029574499, 0.0045575895, -0.007858747, 0.05151375, -0.022664117, -0.015246331, -0.04552153, -0.010365572, 0.036436554, -0.022205036, -0.0012262302, 0.04470002, -0.046777964, 0.021564739, 0.0044216774, 0.016406115, -0.009592382, -0.043564398, -0.012455599, -0.06702586, 0.0030504742, -0.04383018, -0.00878899, 0.04037499, 0.06330489, 0.06562446, -0.037451368, -0.005406286, 0.035639204, 0.00043642923, -0.0051254006, -0.030202715, -0.0071218, 0.017759196, 0.03281223, -0.054123264, -0.050257318, 0.06837895, 0.010703842, -0.059777215, -0.03670234, -0.023062794, -0.012383113, -0.0077379355, 0.014473141, -0.041993856, 0.023401063, -0.00678957, -0.043709368, -0.059922185, -0.014581871, 0.006170415, -0.017517574, 0.03735472, 0.006251962, -0.012987168, -0.017155143, -0.008142652, 0.009701112, 0.05784424, -0.013071735, 0.025056172, -0.018822333, -0.013881167, 0.016708141, -0.028414715, -0.036557365, 0.011374342, 0.005817043, -0.010305166, 0.020622414, 0.03457607, -0.035953313, 0.0007309057, 0.026868336, -0.011132721, 0.031918228, -0.0037995016, -0.013023411, 0.017964575, 0.003935414, 0.0066445973, 0.02436755, 0.031000067, 0.056104563, -0.0072486517, 0.029429525, 0.020562008, 0.008644017, -0.016792709, -0.04095488, 0.0035004946, -0.033367958, -0.048227694, -0.034890175, -0.025829362, -0.006596273, 0.028052282, -0.01959552, 0.020839874, -0.004705583, 0.066832565, -0.028849633, 0.021637226, -0.009978977, 0.08683885, -0.035735853, -0.0017532676, 0.039698448, -0.026820011, 0.06195181, -0.015560439, -0.017855845, -0.014726844, 0.018109547, 0.07055354, 0.0070372326, -0.021093575, 0.0023769536, 0.029719472, -0.026119309, 0.047575317, -0.05204532, -0.01535506, -0.022978226, 0.040181693, 0.0075506787, 0.024935361, -0.016973926, 0.0007675265, -0.028124768, 0.04404764, 0.055476345, -0.06804068, -0.01981298, -0.035010986, -0.025636064, -0.017179305, -0.0029432545, 0.07267981, -0.018665278, 0.011887789, -0.008770868, -0.017179305, -0.019957954, -0.023159442, -0.031797417, -0.0050649955, -0.049870722, 0.0233769, -0.033053853, -0.010274963, 0.0340445, -0.03015439, -0.021745956, 0.054896455, -0.003304177, 0.055766292, 0.00478411, -0.024645416, 0.04494164, -0.004237441, -0.030347688, 0.009302436, 0.0184599, -0.006475462, 0.012781789, 0.04636721, 0.00068711175, -0.026892498, -0.043226127, -0.049822398, 0.025128659, -0.0033615623, 0.028463038, 0.02102109, 0.005907651, -0.015487952, -0.020634495, 0.022519145, -0.07267981, 0.010226639, 0.035349257, -0.030202715, 0.006396935, -0.05117548, -0.0016762507, -0.036654014, 0.03071012, -0.031072553, 0.024862874, -0.005185806, 0.0067110434, -0.028680498, 0.012528086, -0.019051872, -0.015318817, 0.0133858435, 0.012032761, 0.017650466, 0.021637226, 0.0047780694, -0.0063244486, -0.03327131, -0.010975666, 0.017771278, 0.007822503, -0.005246212, 0.052431915, 0.009827963, 0.008607774, -0.025539415, 0.0072365706, -0.006578151, 0.018278683, 0.009175585, 0.007387584, 0.06475462, 0.0322565, -0.038248718, 0.0018635076, 0.004974387, -0.021117738, -0.010166233, -0.0020854974, -0.027061632, 0.039239366, -0.016780628, -0.01646652, -0.045255747, 0.03015439, 0.036654014, -0.0049230424, 0.071568355, 0.03537342, -0.010721964, -0.025394443, -0.028414715, 0.009030612, 0.02991277, -0.051030505, 0.017867927, -0.01578998, -0.010444099, 0.007145962, -0.019172683, 0.032788068, -0.004741826, 0.005886509, -0.0069949487, -0.013530816, 0.009525936, -0.00544857, 0.010462221, 0.03713726, 0.018556548, 0.066204354, -0.032884717, 0.033778716, -0.04685045, -0.014557709, -0.012576411, -0.0055150157, -0.006819773, -0.013361681, 0.052818507, -0.03771715, -0.018761927, -0.042912018, -0.010752167, -0.041003205, 0.025007848, 0.020984847, 0.020332467, 0.01955928, 0.0122321, 0.0062700836, 0.03126585, 0.0220359, 0.0003884824, 0.028100606, 0.0028209335, -0.016925601, -0.0019616664, 0.003204508, 0.00042850102, -0.0027862005, 0.03827288, 0.013784519, -0.018121628, -0.0022863455, -0.0043008667, -0.002968927, -0.031724934, -0.01523425, 0.043395262, 0.025152821, 0.016104087, -0.027399903, 0.02135936, -0.007931233, 0.052093644, -0.027593201, -0.00047682537, 0.019945873, -0.011295815, -0.0404958, 0.055186402, 0.024270901, -0.00912122, -0.016079925, 0.0087527465, 0.05919732, 0.024959523, 0.06755743, -0.0138932485, -0.03827288, 0.034624394, -0.03795877, 0.0029523154, 0.003437069, 0.012274384, 0.010468261, -0.012999249, -0.0071822056, -0.045763154, 0.008148693, -0.015874548, 0.0041287113, -0.058327485, -0.0041679745, -0.063208245, -0.018037062, -0.02157682, 0.007641287, 0.035518393, 0.040519964, -0.01748133, -0.017420925, -0.019837143, 0.016285304, -0.025080334, 0.009991058, 0.011205208, -0.029985255, -0.037427206, 0.015777899, -0.057022724, -0.017360521, -0.0060798065, -0.020996928, -0.013192546, 0.017553817, -0.005276414, 0.0002925888, 0.0124676805, 0.01001522, 0.061565213, -0.028825471, -0.014714763, 0.0114528695, -0.010413896, 0.013941573, -0.004270664, -0.012745546, -0.04346775, 0.007943314, 0.011803221, -0.014291924, 0.018206196, 0.008662139, -0.0011258062, -0.006529827, 0.039215203, 0.049242508, -0.020380791, 0.008190976, -0.019124359, -0.024053441, -0.015947033, -0.0038538664, -0.032014877, 0.026675038, -0.0040532043, 0.030444337, 0.03902191, -0.013059654, 0.020332467, 0.004470002, -0.0019057913, 0.014714763, -0.017602142, 0.02036871, 0.028946282, 0.032353148, 0.011978397, -0.008058084, -0.012999249, 0.02602266, 0.0024373592, -0.026457578, -0.023763496, 0.05252856, 0.049025048, 0.023993038, -0.02224128, 0.025394443, -0.07267981, -0.011815302, 0.033996176, 0.01722763, 0.015959114, 0.00093477406, 0.049580775, -0.028946282, 0.013712033, -0.019764656, 0.0054938737, 0.0069103814, 0.05939062, 0.010836734, 0.012938843, 0.027544877, -0.0032558527, -0.00444886, -0.018834414, 0.012050883, -0.02381182, 0.000211419, -0.004627056, 0.0077077327, 0.011386423, -0.01722763, 0.0026095146, -0.0123166675, 0.038901098, 0.008933963, 0.03641239, 0.010782369, 0.017106818, 0.0054455497, 0.013542897, 0.041124016, -0.061226945, -0.01313214, 0.014110709, -0.028897958, -0.037451368, -0.013712033, 0.028100606, -0.012334789, -0.0032286702, 0.012213978, -0.04953245, 0.034406934, 0.03839369, 0.005318698, 0.0155241955, -5.2194067e-05, 0.010709883, -0.001913342, -0.04728537, -0.021939252, -0.02768985, -0.033102177, 0.022857415, 0.0072486517, 0.03348877, -0.021395603, 0.024210496, -0.025877686, -0.002727305, -0.04025418, -0.0074781924, 0.010498464, -0.0017381662, -0.003358542, 0.028849633, 0.016671898, 0.0046330965, 0.037403043, 0.0340445, 0.01955928, -0.016768547, 0.013542897, 0.008861477], [-0.008451874, -0.014672108, -0.029640123, 0.027322177, -0.009894426, 0.062387284, -0.031662162, 0.035558283, -0.0049102246, 0.025016561, -0.025472753, 0.009136162, -0.00029147713, -0.01658318, -0.009567694, 0.015510514, -0.04113122, 0.0047499407, -0.012119901, -0.023401396, -0.020220384, -0.058688432, -0.06342296, 0.0072682416, 0.030330576, -0.008186789, 0.0027463967, 0.022723272, -0.0026107721, -0.00570856, 0.05360868, 0.021428674, 0.029171603, 0.015214606, 0.05508822, -0.02973876, -0.016718805, 0.037111804, -0.010104028, 0.011823993, -0.057652753, -0.027667403, -0.040046223, -0.023463042, 0.007724433, -0.011546579, 0.02552207, 0.0051475675, -0.003963935, -0.05296754, -0.010745161, -0.035385672, 0.005415734, -0.021847878, -0.02581798, 0.017298292, 0.08408721, -0.048923466, 0.066086136, -0.009296445, -0.050304372, 0.029196262, 0.061647512, -0.058145933, 0.0070154867, -0.032056708, 0.0041242186, 0.023783611, 0.039725658, 0.04058872, -0.026360476, 0.02202049, -0.0074223606, -0.018691525, -0.014302223, -0.065642275, 0.047887787, 0.02226708, 0.0066517666, -0.013266545, 0.041501105, -0.0544964, 0.031440232, -0.04310394, 0.04529859, -0.06337364, 0.064113416, -0.124084115, -0.034276016, 0.0095492, -0.016657159, 0.028431833, 0.04391769, 0.035089765, -0.009339598, 0.03671726, -0.022131456, 0.02034368, -0.046210974, -0.008513521, 0.0031871763, -0.041229855, -0.03595283, -0.063521594, 0.026656384, 0.0421669, 0.012810353, -0.0016567769, 0.005594512, -0.023894576, 0.0064791534, -0.009481387, 0.0019110729, 0.0026446783, -0.0072497474, 0.017643519, 0.009690989, -0.047739834, -0.040736675, -0.010997917, -0.06569159, -0.06445864, 0.077478595, 0.065099776, -0.0028249973, 0.03864066, -0.008192955, 0.046457566, 0.0049996134, 0.004299914, -0.006423671, 0.00990059, 0.048405625, 0.059082977, 0.07580178, 0.02848115, 0.06337364, -0.01885181, -0.034793857, 0.019677887, -0.037777595, 0.015202276, -0.012101406, -0.0035139082, -0.036125444, -0.0030685049, -0.021256063, -0.015769433, -0.041525763, 0.02897433, -0.046704154, -0.04714802, -0.014807733, 0.0043584793, 0.056222532, -0.009376586, 0.04088463, 0.024659004, 0.030305916, 0.05306618, 0.048997443, -0.07368111, -0.014931028, 0.032032046, -0.0009185479, -0.05775139, 0.054693673, -0.039059862, -0.045767114, 0.02899899, -0.0023025346, 0.00068891095, 0.012409644, 0.030700462, -0.039701, 0.013106261, 0.058096617, -0.012465127, -0.015300913, -0.05646912, -0.0065531307, 0.04556984, 0.023734292, -0.013809043, 0.03319102, 0.028111266, 0.009629342, 0.009438234, 0.037531007, -0.0599707, -0.039725658, -0.00057987194, -0.02924558, -0.0015065111, 0.022378048, -0.022341058, -0.014351541, -0.06095706, -0.00038799402, -0.0035817204, -0.01463512, -0.036248736, -0.03023194, 0.0049965307, -0.02599059, 0.05498958, 0.038295433, -0.0035046611, 0.019875158, 0.008266931, -0.0012761035, 0.03294443, -0.012711717, -0.019123059, -0.013032285, 0.0063558584, -0.029393533, 0.033141702, -0.05706094, -0.029936032, 0.03767896, 0.021502653, 0.03393079, -0.031760797, 0.049194716, 0.0044941036, 0.011750015, 0.007816904, 0.022217764, 0.01636125, -0.011263001, -0.048405625, -0.013278875, 0.030823756, -0.07520997, -0.027815357, -0.033265, -0.019973794, 0.0175942, -0.006960004, 0.0022593813, -0.0076257973, -0.006738073, -0.02677968, 0.04118054, 0.024659004, 0.0041057244, 0.012711717, -0.015510514, 0.042413488, -0.012452798, -0.0050982493, 0.019677887, 0.04088463, -0.0074038664, 0.048676874, 0.06914385, -0.046260294, -0.0035693909, 0.018259993, -0.01064036, 0.038591344, -0.028851036, 0.044386208, 0.026681043, -0.007428525, -0.0048516593, -0.06909453, -0.045495864, 0.012471292, 0.033856813, -0.07881018, 0.041328494, 0.019357318, 0.05055096, -0.020023111, 0.04561916, 0.033832155, -0.02202049, 0.043029964, -0.00458041, 0.009617012, 0.036026806, 0.025965933, -0.0066764257, -0.006337364, 0.01586807, -0.057850026, -0.014437848, -0.010757491, -0.012175384, -0.0065038125, 0.073089294, 0.016274944, 0.056617074, 0.045717794, 0.002657008, 0.04889881, -0.057850026, 0.050846867, -0.024202812, -0.009789625, -0.036298055, -0.023660315, -0.04157508, 0.040958606, 0.004595822, 0.06569159, -0.03393079, -0.027864676, 0.09217536, -0.021046462, -0.02902365, -0.032919772, 0.038591344, -0.02848115, 0.02848115, 0.017409258, 0.038739298, -0.05405254, -0.039750315, -0.039010547, -0.09927715, 0.042413488, 0.033782836, -0.019924477, -0.010806809, -0.017483234, -0.019714875, 0.0043769735, -0.07303997, 0.0008831006, 0.0030731284, 0.0071449466, -0.031045686, -0.11086689, -0.012847342, -0.04700006, -0.017729824, 0.008390226, -0.027445473, 0.013439158, -0.023413725, -0.034991127, 0.04019418, -0.0056284177, -0.011805499, 0.025041219, 0.028555127, -0.023956222, 0.0014918698, 0.011115046, 0.03218, 0.030675802, -0.021921856, -4.163615e-05, 0.004441703, -0.0008792477, -0.030305916, 0.026631726, 0.08551743, -0.09330968, 0.029344216, 0.05903366, 0.020442314, 0.0026308077, -0.03227864, -0.020405326, 0.002288664, 0.004318408, -0.06145024, 0.058392525, 0.0047314465, -0.010523231, -0.052573, 0.02451105, 0.0763936, -0.039306454, -0.07062339, 0.037111804, -0.01462279, -0.016472215, -0.007557985, 0.010751327, 0.03047853, 0.03989827, -0.05355936, -0.014228246, 0.019690216, -0.034399312, -0.03989827, 0.031070346, 0.014080292, -0.017705165, 0.029294899, 0.026631726, -0.020701235, 0.014437848, 0.0066209426, 0.010917774, -0.01240348, 0.01537489, -0.033067726, -0.06095706, 0.028900353, 0.004145795, -0.0036464504, -0.038542025, -0.048553582, 0.03910918, -0.04157508, 0.019899817, 0.0026076897, 0.026409794, 0.0361501, 0.02655775, 0.0023287348, 0.031021029, 0.0074038664, 0.014030973, 0.0037728278, -0.017421586, -0.023857588, 0.029911373, -0.052375726, -0.0013053861, -0.022156116, 0.014413188, 0.007964859, -0.013537793, 0.02702627, 0.024153495, 0.009641671, -0.011330813, -0.024424745, -0.046210974, 0.0030500107, 0.031045686, -0.007533326, 0.013956997, -0.008279261, -0.051142775, 0.010369112, 0.044706777, -0.04431223, -0.032352615, -0.057603437, -0.014043303, 0.05824457, -0.026409794, -0.025213832, 0.012341832, -0.070672706, -0.020158736, 0.033610225, -0.04184633, 0.010775985, 0.01833397, 0.03321568, -0.08280494, 0.009956073, 0.010301299, 0.05262232, -0.017914766, 0.026335817, -0.006442165, -0.031662162, 0.03173614, 0.008217613, 0.024227472, -0.022008162, -0.031045686, -0.02776604, 0.012027429, 0.021157427, -0.046580862, -0.007613468, -0.017655848, 0.062042058, -0.015559833, -0.041032583, -0.016188636, 0.022242423, 0.027445473, 0.020010782, -0.015633808, 0.010554054, 0.0042043603, 0.06559295, -0.008957383, 0.013352851, 0.011515755, -0.013993985, 0.00044694447, -0.034325335, -0.06258456, -0.053657994, -0.035385672, -0.014931028, 0.012471292, 0.034818515, 0.07082066, 0.006916851, 0.038270775, -0.019653227, -0.008488863, -0.00085844164, -0.012076748, 0.052425046, -0.030577166, -0.00830392, 0.0067627323, -0.042043604, 0.0017276715, -0.020775212, -0.028925013, 0.0027217376, 0.030947052, 0.01412961, 0.014474836, -0.0058657606, 0.010603372, -0.028382516, -0.017138008, -0.008994372, 0.0198505, 0.031933412, 0.03247591, 0.04332587, -0.019135388, 0.013513135, -0.00855051, -0.035361014, -0.005421899, 0.008143636, -0.012970637, 0.045002684, 0.01438853, -0.01337751, 0.022217764, -0.033265, 0.04978653, 0.02648377, 0.0050335196, 0.0006449871, 0.029319556, 0.026360476, -0.021712255, -0.011879476, 0.049909826, -0.034349993, 0.04088463, 0.009086844, 0.015818752, 0.009580024, -0.042240877, -0.020984814, -0.026582407, 0.012193878, -0.039972246, -0.010091698, 0.0002265546, 0.047986425, 0.019049082, -0.025349457, -0.061105013, 0.04512598, -0.008106648, -0.005831855, 0.013993985, -0.015596821, 0.063324325, 0.010430759, -0.026385136, -0.054792307, 0.0807829, 0.0037974867, -0.03195807, -0.016644828, 0.00090698904, -0.0009378128, -0.0175942, -0.008901901, -0.015658468, 0.007089464, 0.01485705, -0.01003005, -0.0401202, -0.048405625, 0.008020341, 0.0077490923, 0.021835549, -0.013587112, -0.006701085, 0.010578713, 0.020195724, 0.011349307, 0.018223004, -0.0021222157, 0.021219073, -0.049638577, -0.040046223, 0.01589273, 0.0041118893, -0.053164814, -0.009037525, 0.061647512, -0.074716784, 0.009906755, 0.019209364, -0.08127608, -0.009370422, 0.06943976, 0.001333898, 0.0017877779, -0.02133004, -0.032895114, 0.06095706, -0.00061108096, 0.050846867, 0.030059326, -0.017039372, 0.04411496, -0.041599743, 0.013106261, 0.012446633, -0.011250671, -0.0027279025, -0.004053324, -0.024572698, -0.019172376, -0.018999763, -0.031070346, -0.009684824, 0.041747697, 0.00428142, -0.006278799, 0.04453416, 0.006164751, 0.014450177, 0.007909376, 0.021872537, -0.0007178082, 0.12526774, -0.023191795, -0.032525226, 0.034522608, -0.0023210288, 0.046136998, -0.009388916, -0.03570624, 0.027149564, -0.0014047927, 0.061105013, -0.009937579, -0.009364258, -0.017692836, 0.021194415, -0.033856813, 0.02673036, -0.007829234, -0.0312183, 0.0031933412, 0.021749243, 0.0053540864, -0.012526775, -0.0027417731, -0.032253977, 0.00682438, 0.030059326, 0.07032748, -0.047246654, -0.043301214, -0.030429212, -0.0011135082, -0.031168982, -0.0044910214, 0.038739298, -0.012243196, -0.01265007, -0.011602062, -0.051241413, -0.03644601, -0.03619942, 0.003034599, -0.014166598, -0.03891191, 0.002248593, -0.024424745, -0.03047853, -0.0029159274, -0.045643818, -0.022710944, 0.034276016, 0.0302566, -0.0012614622, -0.0030685049, -0.044262912, 0.029319556, 0.007989517, -0.007354548, -0.023660315, -0.01240348, -0.045767114, 0.02226708, 0.050255053, -0.0136241, 0.003948523, -0.048972785, -0.0071757706, 0.03415272, 0.00743469, -0.011102717, 0.057208892, 0.018654536, -0.020664247, -0.030157963, 0.014733755, -0.061548878, 0.041821674, 0.023068499, 0.019012094, -0.011762345, -0.035977487, 0.020035442, -0.032303296, 0.038246118, -0.021367028, 0.031933412, -0.02325344, 0.0031393995, -0.02705093, -0.0198505, 0.0014348458, 0.03960236, -0.02251367, 0.009370422, 0.014302223, 0.026631726, 0.021243732, 0.015732445, -0.025744, -0.021182084, -0.05060028, 0.012058253, -0.008630652, 0.023598667, -0.023093158, 0.010184169, -0.00782307, -0.0023873, -0.016965395, 0.024523381, -0.027346836, 0.0047221994, 0.019197036, 0.0023210288, -0.017816132, 0.013266545, -0.034103405, 0.004413962, 0.0008399474, -0.006069198, 0.00041612072, 0.0361501, -0.009339598, -0.0053818277, -0.013093932, 0.003914617, 0.021983502, 0.007601138, 0.066628635, -0.01017184, -0.006947675, -0.02083686, -0.0410819, 0.03940509, 0.008254602, -0.032426592, 0.005702395, -0.0035632262, -0.0073977015, -0.00576096, 0.020442314, 0.022341058, 0.009148491, -0.0028835624, -0.03047853, -0.018025734, -0.007847728, 0.02530014, 0.039528385, 0.0215643, 0.026138546, 0.0490221, -0.021946514, 0.011799334, -0.071757704, 0.034054086, 0.009469058, -0.0020066265, -0.058343206, -0.0151283, 0.03767896, -0.017150339, -0.009499881, 0.014055633, -0.015005005, -0.03146489, 0.055334806, 0.010344452, 0.015683128, -0.016940737, 0.035804875, 0.0067257434, 0.021958845, 0.005705477, 0.007841564, -0.01636125, 0.009105338, -0.013229556, -0.036544647, 0.020158736, -0.011725357, 0.0047961767, 0.02599059, -0.011318483, -0.020886177, -0.037555665, 0.009851272, -0.04983585, -0.03545965, -0.0277907, 0.0018031897, -0.005070508, 0.05459504, -0.015041993, 0.059329566, 0.016521534, 0.009401246, -0.01760653, -0.010609536, -0.008766276, 0.016459886, -0.026828997, 0.016546192, -0.032352615, 0.020208055, -0.019024422, 0.03622408, 0.045150638, 0.019394308, 0.0057640425, -0.037333734, -0.033560906, -0.006269552, -0.03151421, 0.006960004, -0.0061493395, 0.013352851, 0.018777832, 0.02776604, 0.009191644, -0.0440903, 0.031908754, -0.04490405, -0.011971947, -0.050748233, -0.00341219, -0.020713564, -0.054890946, -0.0063558584, 0.011078058, 0.025596047, 0.03691453, -0.01906141, 0.037506346, 0.010979422, -0.009715648, -0.01758187, 0.022476682, 0.0032118354, -0.07481542, 0.023906905, -0.01162672, -0.02107112, 0.02278492, 0.016694147, -0.014067963, -0.005529782, -0.01638591, -0.0014325341, 0.019912146, 0.00040302062, 0.013537793, 0.010301299, -0.0037974867, 0.00830392, -0.010757491, 0.0077860807, 0.015535173, 0.00290668, -0.051241413, -0.027396154, 0.010504737, -0.0022223927, 0.006744238, -0.0035231553, 0.0076689506, -0.0038992052, -0.010332123, 0.041007925, 0.017902438, -0.028160583, 0.0005320951, 0.030601826, -0.028382516, -0.0008114354, 0.015880398, -0.0247823, 0.02675502, 0.040785994, 0.031612843, 0.054151174, -0.018025734, 0.035089765, 0.035336353, 0.032056708, -0.0026184781, -0.031168982, 0.005443475, 0.0045588333, 0.047295973, -0.0066209426, 0.015103641, 0.012237031, -0.0052338736, -0.032377273, -0.060315926, -0.015017334, 0.037013166, 0.045545183, 0.0022455107, 0.02949217, 0.017705165, -0.05454572, -0.020614928, 0.0061185155, 0.02801263, 0.006670261, -0.009000537, 0.03200739, -0.0074716783, -0.005569853, -0.018001074, -0.024671335, 0.00091623614, 0.0022516754, 0.004561916, 0.021453334, 0.03565692, -0.006793556, 0.008482697, 0.00034946433, 0.023475373, -0.0056315004, 0.020220384, -0.03417738, 0.060167972, 0.028678423, -0.061844785, 0.009462893, 0.00495646, 0.028579786, 0.006325035, 0.017174996, -0.0016953066, 0.021379357, -0.052720953, -0.008741617, 0.023487702, -0.031045686, -0.01162672, 0.003011481, -0.021835549, -0.014080292, -0.02976342, 0.023980882, -0.012847342, -0.010208828, 0.030922392, -0.039035205, -0.0021961927, 0.0028434915, -0.009999227, 0.004210525, 0.02976342, -0.027174223, 0.016213296, -0.033067726, 0.0034676725, 0.020392997, -0.0446328, 0.030133303, -0.022710944, 0.04381905, 0.0044879387, -0.005548276, -0.025226163, -0.013710407, 0.019123059, 0.0048609064, -0.0003806734, -0.02030669, 0.0069784983, 0.047887787, 0.0013647218, -0.015017334, 0.0043584793, 0.07343452, 0.0076751155, -0.036815893, 0.014178928, 0.011207518], [0.009991007, -0.0014606385, -0.030290289, 0.0012563586, 0.00963782, 0.03742587, -0.06637524, 0.030577628, -0.0037922724, 0.0123914825, -0.000823854, 0.0065609007, -0.019503115, -0.01776711, -0.0053486903, 0.031008637, -0.018724907, 0.008572272, -0.005360663, -0.032469276, 0.0018662051, -0.06848239, -0.022939207, 0.000945075, 0.013804231, -0.01052378, -0.008404657, 0.020796139, -0.015468401, 0.010691395, 0.03352285, 0.023501912, 0.040849987, 0.018281925, 0.030410014, -0.012307675, -0.016090969, 0.03371441, -0.0021610267, 0.014953585, -0.050475836, 0.018066421, 0.016162803, -0.0060460856, 0.0071475506, -0.0057018776, 0.0102723595, 0.026698556, 0.013492947, -0.026602777, -0.023968838, -0.036324404, -0.0017479772, -0.025716815, -0.030888911, 0.0055492288, 0.06718937, -0.046764378, 0.06493855, -0.02299907, -0.059910122, 0.026267547, 0.067764044, -0.041376777, -0.020867974, 0.013109829, 0.019982014, 0.0072732614, 0.023765307, 0.041304942, 0.0021610267, -0.015552208, -0.014857806, -0.018509403, 0.0055492288, -0.055456374, 0.046524927, 0.030362124, 0.015671933, -0.021059534, 0.026746446, -0.019539032, 0.025573146, -0.038934395, 0.035055324, -0.050523724, 0.06383709, -0.11397769, -0.034384865, 0.028302863, -0.01035018, 0.014797944, 0.042119067, 0.015336704, -0.0027716213, -0.013804231, 0.013349278, 0.016462114, -0.016222665, 0.0006319207, -0.01757555, -0.04731511, -0.05866499, -0.08490859, 0.024004756, 0.035653945, 0.04908703, 0.013145747, -0.021741962, -0.04647704, 0.007375027, -0.031631205, -0.023825169, 0.0063693416, 0.0019365433, 0.036635686, -0.027656352, -0.032325607, -0.022795537, -0.04209512, -0.08806932, -0.03704275, 0.04106549, -0.009877268, 0.020903891, 0.00048638065, -0.04243035, 0.06508222, 0.009344495, -0.012367537, -0.018832657, 0.036827244, 0.04561502, 0.059527006, 0.04305292, 0.058712877, 0.07518697, -0.010499836, -0.04365154, 0.012307675, -0.036875136, -0.0039568935, -0.03052974, 0.0040646456, -0.019311557, 0.0019155914, 0.00070936745, -0.005130193, -0.054977473, -0.013026021, -0.034049638, -0.043244477, -0.0008844645, -0.009775503, 0.050284274, -0.028446533, 0.01991018, 0.04345998, 0.005486374, 0.056749396, 0.019096052, -0.036061008, 0.0009368439, 0.07264881, -0.013097856, -0.038790725, 0.028231028, -0.036132842, -0.049757488, 0.024280122, 0.0032924227, 0.021598294, 0.027105618, 0.009464219, -0.03929357, 0.005758747, 0.062017273, -0.03033818, -0.008775803, -0.027321123, -0.011044582, 0.06484277, 0.033738356, -0.01463033, 0.026147824, 0.044513557, 0.015276842, 0.011349879, 0.051960416, -0.05411546, -0.018569265, 0.015647987, -0.021849714, -0.01385212, 0.023717416, 0.019551005, -0.0070338123, -0.02990717, -0.010254401, 0.00836874, 0.008165209, -0.035055324, 0.016749453, -0.04633337, -0.028159194, 0.04223879, 0.04774612, 0.045686856, 0.025213972, 0.027033783, 0.036084954, 0.050667394, -0.0046004127, -0.023693472, -0.005453449, 0.00878179, -0.041759893, -0.009913186, -0.051768858, -0.015252897, 0.031918544, 0.021753935, 0.031080471, -0.024878744, 0.013552809, 0.0033492919, 0.0042292667, -0.008237043, 0.037186418, 0.030960746, -0.0029586907, -0.036827244, -0.015983216, 0.038838618, -0.101909466, -0.007327137, -0.038192105, -0.046213645, 0.00724333, 0.009111032, 0.03318762, 0.031822763, -0.025908375, -0.015899409, 0.038623113, 0.037808985, 0.025357641, 0.0267225, 0.011337907, 0.03400175, -0.016138857, -0.008530368, 0.022615952, 0.0497096, -0.00927266, 0.07379816, 0.066758364, -0.040251367, 0.016653674, 0.053349223, -0.028374698, 0.038910452, -0.033738356, 0.052391425, -0.009242728, -0.017312158, 0.019383391, -0.028733872, -0.027752131, 0.001400028, 0.030649463, -0.040395036, 0.05368445, -0.00022822476, 0.041185215, -0.006489066, 0.07619265, 0.07494751, 0.026602777, 0.04106549, 0.013277443, 0.0066626663, 0.058569208, 0.06024535, -0.01678537, -0.0020667436, 0.050284274, -0.07403761, -0.00044223224, 0.024148425, -0.025142137, 0.016605783, 0.06273562, -0.0130379945, 0.054354906, 0.013433085, 0.03371441, 0.030601574, -0.033905968, 0.034863763, -0.007823993, -0.010559698, -0.053109773, -0.03783293, 0.0074109444, 0.04932648, 0.008117319, 0.08878766, -0.028829651, -0.030170565, 0.08074218, 0.015695877, -0.028662037, -0.02172999, 0.038239993, -0.011673136, 0.0012496241, 0.017264267, 0.047410887, -0.02990717, -0.020353159, -0.031056527, -0.08945812, 0.0492307, 0.01908408, 0.00063977763, 0.015971243, -0.0083328225, 0.0004669254, 0.028997265, -0.052774545, -0.0062137, 0.006674639, 0.021921549, -0.033546794, -0.08792565, -0.030697353, -0.07413339, 0.007159523, -0.019155914, -0.027129564, 0.018748851, -0.050427943, -0.02167013, 0.018784769, 0.0048967307, -0.04290925, 0.014654274, 0.029715613, 0.0075606, 0.0013304381, 0.0070996606, 0.007381013, 0.015647987, 0.023717416, -0.02559709, 0.0073929857, -0.022568062, -0.018150229, 0.06417231, 0.06627946, -0.042693745, 0.019024218, 0.089170784, 0.01962284, 0.00019099793, 0.0011770411, -0.019371418, -0.019706648, -0.036300458, -0.0372822, 0.04195145, 0.0154324835, -0.041041546, -0.051912528, 0.015671933, 0.07580953, -0.007835967, -0.04800951, 0.02387306, -0.013073912, -0.0033732369, -0.027225344, 0.0056360294, 0.04985327, 0.043819156, -0.008584244, -0.010380111, 0.03895834, -0.012846435, -0.0248548, 0.04243035, 0.02103559, -0.020317242, 0.010924857, 0.015731795, 0.003406161, 0.05138574, 0.013840148, 0.021598294, -0.0042681773, 0.00016677244, -0.009087087, -0.033905968, 0.03689908, -0.025429476, 0.01130199, -0.020017931, -0.014223266, 0.041903563, -0.038311828, 0.027416902, 0.00016518235, 0.050332166, 0.032038268, 0.012714738, 0.0009832372, 0.0136007, -0.007135578, 0.013780286, 0.012271757, -0.0154324835, -0.023681499, 0.033451017, -0.05540848, 0.024471682, -0.037210364, 0.013480974, -0.007758145, 0.0008126298, -0.0020832056, 0.013816203, -0.0061777825, -0.017324131, 0.007506724, -0.039030176, -0.0041903565, -0.011535453, -0.01137981, 0.066135794, -0.0022897304, -0.04932648, 0.04252613, 0.009230756, -0.045830525, -0.0018257981, -0.059431225, -0.001954502, 0.030170565, -0.049949046, 0.010457932, -0.012050267, -0.052726656, -0.025716815, -0.000810385, -0.0044387844, 0.025477367, 0.030218456, 0.03033818, -0.085579045, 0.00499251, 0.0019485157, 0.043819156, 0.010817106, -0.0033522851, -0.023430077, -0.0036156788, 0.04942226, 0.008189154, 0.031295974, -0.033546794, 0.013469002, -0.01776711, 0.011577356, -0.0044986466, -0.044705115, -0.013445058, -0.008721927, 0.033259455, 0.026075989, -0.031248085, -0.020664442, -0.0003180181, 0.032804504, 0.035606056, -0.040059805, 0.006938033, 0.035198994, 0.0881651, -0.015923355, -0.0021071506, 0.012726711, -0.035606056, -0.023178656, -0.016067022, -0.031104416, -0.038239993, -0.009087087, -0.016521975, -0.0049206754, 0.043436036, 0.07006276, 0.008440575, 0.03469615, 0.024304066, 0.014905696, -0.02201733, -0.0047021783, 0.026554886, -0.030122675, -0.004313074, -0.0044148397, -0.048919417, -0.00692606, -0.0012122102, -0.030841023, -0.0053456975, 0.013540837, 0.037354033, 0.035198994, -0.008554313, -0.005764733, -0.018748851, -0.034241196, -0.008458533, -0.00189015, -0.0055163046, -0.006405259, 0.024004756, -0.033738356, 0.019143943, -0.029380383, -0.021550404, -0.012229854, 0.0031248087, -0.01385212, 0.04908703, 0.012355565, -0.009242728, 0.027297178, -0.023286408, 0.01977848, 0.0005166859, 0.012343592, -0.0075606, 0.05301399, 0.024830854, -0.027776076, -0.01757555, 0.018341789, -0.050523724, 0.041903563, 0.016138857, 0.008823693, 0.008805734, -0.029835336, -0.02578865, -0.03431303, -0.014929641, -0.010601602, -0.014905696, 0.016043078, 0.0675246, -0.010553712, -0.026028099, -0.058617096, 0.05411546, -0.028422588, -0.012104143, 0.013026021, -0.020867974, 0.04647704, 0.0125710685, -0.033786245, -0.025094248, 0.06034113, 0.0022119095, -0.029380383, -0.008213098, -0.027512683, -0.030841023, -0.018473485, -0.02119123, -0.045543186, 0.021897605, 0.038287885, -0.017348075, -0.023262464, -0.05397179, -0.0063334242, 0.0014651282, 0.017336102, -0.0058545265, -0.018772796, -0.0114277005, 0.011667149, 0.00846452, 0.015935326, 0.013696479, 0.012978132, -0.02803947, -0.055264812, 0.036300458, 0.01187068, -0.038287885, 0.009757544, 0.04408255, -0.057276186, 0.023825169, 0.0272014, -0.09410343, 0.03304395, 0.054594357, 0.006303493, -0.0007856918, -0.033379182, -0.017755138, 0.06287929, 0.031870652, 0.041855674, 0.049661707, 0.011942515, 0.039868247, -0.052535094, 0.054738026, 0.0010371131, -0.0121580195, -0.01756358, -0.006602804, -0.021119395, -0.02309485, -0.00863812, -0.04566291, -0.02892543, 0.0039718593, 0.010457932, -0.012319648, 0.010900913, -0.016557893, 0.018222064, 0.038647056, 0.02407659, -0.0064711072, 0.11436081, -0.031679094, -0.015731795, 0.023477968, -0.013804231, 0.038000546, -0.008919473, -0.033115786, 0.028207084, -0.0031218154, 0.060724247, 3.203565e-05, -0.013397167, -0.017264267, 0.028422588, -0.020508802, 0.010793161, -0.008105346, -0.019682702, 0.0036905066, 0.0243759, 0.00927266, -0.0151212, -0.03881467, -0.0159473, -0.0052678767, 0.021658156, 0.055121142, -0.072265685, -0.07815613, -0.043723375, -0.0052050212, -0.027512683, 0.0019485157, 0.042502183, -0.029835336, -0.019347474, 0.0052708695, -0.045830525, -0.01786289, -0.03812027, -0.005600112, -0.0067045703, -0.040203474, 0.006477094, -0.022915263, -0.013349278, -0.015636016, -0.05603105, -0.020508802, 0.046022084, 0.050811063, 0.007698283, -0.004594426, -0.04999694, 0.020987699, -0.04027531, -0.013445058, -0.045638967, 0.003085898, -0.029021211, 0.03807238, 0.028015524, 0.00029519564, 0.008452548, -0.037354033, -0.05172097, 0.012074213, -0.00073705375, 0.013624644, 0.053445, 0.036731467, 0.024004756, -0.004669254, -0.0027521662, -0.05569582, 0.052678764, 0.009691696, 0.03009873, -0.0045375573, -0.06249617, 0.02499847, -0.065992124, 0.009302591, -0.0042951154, 0.057084624, -0.018784769, 0.001448666, -0.03881467, -0.024543514, -0.0048967307, 0.013469002, -0.016917067, -0.0069799363, 0.0033373195, 0.028685981, 0.016869178, 0.035893396, -0.044585392, -0.02309485, -0.07892237, 0.009841351, -0.02089192, 0.048775747, -0.023058932, -0.0036635685, -0.030745242, 0.001987426, -0.036084954, 0.00954204, -0.026028099, 0.009093073, 0.03033818, -0.0012630931, 0.0009824889, -0.013756341, -0.036084954, -0.013768313, -0.0055971188, 0.0015122696, -0.03342707, 0.038192105, -0.020233436, -0.008715941, -0.038144216, 0.0147859715, 0.029093046, 0.027345069, 0.08351979, -0.008919473, 0.003214602, 0.00066896045, -0.012355565, 0.029500108, -0.0009787475, -0.039964028, -0.019551005, -0.026267547, 0.0029497114, -0.01551629, 0.015348677, 0.009949103, 0.03512716, -0.020448938, -0.018653072, -0.014247212, 0.0063154656, 0.029284604, 0.045399517, 0.02436393, 0.023753334, 0.059048105, -0.021418707, 0.022137053, -0.04575869, 0.03220588, 0.018533347, -0.014187349, -0.046285477, -0.0016162803, 0.041903563, -0.016162803, -0.011589328, 0.015049365, 0.0010296304, -0.042406406, 0.022113109, 0.020652471, 0.0071176193, -0.028422588, 0.02574076, -0.010146649, 0.018952383, -0.017096654, -0.02006582, -0.014331019, -0.011631232, -0.028901486, -0.027273234, -0.0026952971, -0.008410644, 0.013492947, 0.052487206, -0.000603112, 0.0026489038, -0.038766783, 0.014797944, -0.06268773, -0.036659632, -0.029140934, 0.005815616, 0.0023271444, 0.032589, 0.0011747964, 0.08289722, 0.0124274, -0.007189454, -0.017455827, -0.005013462, -0.0060969684, 0.02119123, -0.019191831, 0.016988901, -0.02461535, 0.0027282212, -0.002604007, 0.040778153, -0.0022029302, 0.047410887, 0.030026896, -0.05315766, -0.0013738383, -0.011738984, -0.04135283, 0.01634239, -0.027392957, 0.027081674, 0.013385195, -0.0059443195, 0.02691406, -0.06498644, 0.016905095, 0.01061956, -0.030002952, -0.05358867, 0.004774013, -0.011577356, -0.031583313, -0.015396566, 0.028685981, 0.03615679, 0.013241526, -0.025573146, 0.009733599, 0.024483653, -0.0004063149, 0.007704269, 0.022005357, -0.0016911081, -0.02471113, -0.015839547, 0.014307073, -0.041161273, 0.015492346, 0.01868899, -0.04829685, 0.012056254, -0.030026896, -0.0151571175, 0.032948174, -0.0009675233, -0.004965572, -0.0017749151, -0.0070817024, 0.0075246827, -0.027416902, 0.011996391, 0.00963782, -0.017922752, -0.0050613517, -0.021358844, 0.014773999, -0.013540837, 0.0018138257, 0.007590531, -0.007835967, -0.018090367, -0.025908375, 0.024304066, 0.031679094, -0.04276558, 0.008063443, 0.010050869, -0.02456746, 0.015037393, 0.026267547, -0.049949046, 0.024196314, 0.036348347, 0.035318717, 0.02020949, -0.042358518, 0.014450743, 0.021442652, 0.033546794, 0.01035018, -0.012630931, 0.015935326, 0.010942816, 0.03656385, 0.007051771, 0.01211013, -0.02990717, 0.0105477255, -0.018150229, -0.049949046, -0.029571943, 0.044800896, 0.06733304, -0.022783566, 0.012068226, 0.030745242, -0.079784386, -0.01610294, 0.026291493, 0.050284274, 0.015540236, -0.0041484525, 0.028446533, -0.018665044, -0.0076863104, -0.019119997, -0.011409742, 0.009799448, 0.026890116, -0.019742565, -0.008380713, 0.025261862, -0.023214573, -0.0052918214, 0.0069619776, 0.050092716, 0.012259785, 0.032852393, -0.0581382, 0.008626148, 0.02677039, -0.023825169, -0.021658156, -0.0036934998, 0.008338809, 0.02280751, -0.0013469002, -0.018473485, 0.009847337, -0.07413339, -0.009601902, 0.026195712, -0.036731467, -0.0036964929, 0.004779999, -0.019263666, -0.008296905, -0.025237918, 0.032660834, 0.011284031, -0.011248114, 0.009871283, -0.0689134, 0.00481891, 0.0061897547, -0.0055342633, 0.0062316586, 0.014354964, -0.0032355536, 0.0045704814, -0.025860485, -0.0007617469, 0.019419309, -0.0372822, 0.01385212, -0.055360593, 0.017360048, 0.008727914, -0.0063334242, -0.035318717, -0.0015594112, 0.010942816, -0.0015803629, -0.01502542, 0.00093010947, 0.0053965803, 0.05641417, 0.043100808, -0.031343866, -0.010613574, 0.077342, 0.009661764, -0.020472884, 0.016114913, 0.008769817], [0.021711642, -0.00724461, -0.017085297, 0.047084417, 0.018871488, 0.028334968, -0.024318814, 0.060752656, -3.183125e-05, 0.04093815, -0.004027249, -0.017229524, -0.023564398, -0.017362656, -0.018738355, 0.024784775, -0.050900873, 0.017340468, -0.006318232, -0.04655189, -0.00822646, -0.021245679, -0.03443686, -0.0008494111, 0.02071315, -0.0034891728, 0.013712616, 0.011793293, -0.005586005, 0.0107005, 0.018549751, 0.04138192, 0.040139355, -0.024407567, -0.0028983988, -0.027469609, 0.03288365, 0.039163053, -0.04979144, -0.03235112, -0.04400019, 0.004568098, -0.014045446, -0.066388585, -0.01925979, -0.0028678894, -0.020091867, -0.009374725, 0.018394431, -0.022599189, 0.040516563, -0.020857377, 0.029133761, -0.021611793, -0.012325822, 0.00051554054, 0.047306307, -0.060930166, 0.03168546, -0.007788233, -0.029422214, 0.012736313, 0.050856497, -0.011149821, 0.02145647, -0.009474575, 0.020125149, 0.001034548, 0.05405167, 0.0374989, 0.002150917, 0.03681105, -0.04435521, -0.04828261, 0.0064680055, -0.06527915, 0.07979056, 0.0016516712, -0.0029816064, -0.033970896, -0.031064177, -0.029777233, -0.04160381, 0.007865894, -0.002741691, -0.047838833, 0.023719719, -0.08631404, -0.024318814, -0.0020815772, 0.03476969, -0.015798353, 0.019304167, 0.049480796, -0.028534666, 0.041337546, 0.022111038, 0.027536174, -0.04566434, -0.038985543, -0.028534666, -0.054717332, -0.047616947, -0.069983155, 0.045154, 0.03818675, 0.08232007, -0.020923942, -0.029289082, -0.025472626, 0.011310689, -0.024074737, -0.00012671827, 0.031951725, -0.04686253, 0.020857377, 0.011277406, -0.03650041, -0.03665573, 0.03290584, -0.09550016, -0.000990864, 0.03374901, 0.03270614, -0.039029922, 0.022710133, -0.016619336, 0.006451364, 0.016341977, 0.03767641, -0.0023062378, 0.019914357, 0.06030888, 0.03224018, 0.06922874, 0.03257301, 0.043378904, -0.02469602, -0.0797018, 0.0075774407, -0.051566534, -0.0017293317, -0.006706534, 0.042313848, 0.0018402751, 0.004936985, -0.016719185, -0.038475204, -0.03681105, -0.0024976153, 0.011748916, -0.045753095, 0.01227035, 0.022621378, 0.004751155, -0.026959268, 0.0058356277, 0.024341002, 0.014788767, 0.04863763, 0.069095604, -0.06594481, 0.0059243822, 0.0072945347, 0.0070005343, -0.078681126, 0.033970896, 0.001808379, -0.02609391, 0.029599724, -0.0025711155, -0.016552769, 0.04615249, -0.03186297, -0.024252247, 0.011726727, 0.01560975, 0.010584009, -0.045109622, -0.072512664, -0.04877076, 0.054362312, 0.0518328, -0.029932555, 0.02915595, 0.056137405, 0.006567855, 0.0044848905, 0.022366207, -0.065501034, -0.044932116, 0.029222516, -0.0037582107, -0.032484256, 0.024740398, -0.058578163, -0.029444402, 0.012647558, -0.018993527, -0.015465523, -0.019392923, -0.05627054, -0.024585078, 0.014966277, -0.040339053, 0.04206977, 0.034902822, -0.007915818, 0.042757623, -0.014378277, 0.025517004, 0.02968848, 0.0049813627, -0.013102426, 0.0018319545, 0.0076051764, -0.055294238, 0.019503865, -0.020568924, -0.036611352, 0.02673738, -0.02573889, 0.002822125, -0.006545666, 0.0124145765, 0.029777233, 0.022543717, -0.005377986, 0.016619336, 0.040161543, 0.0040411167, -0.052099064, -0.03818675, 0.04246917, -0.06838557, -0.043356717, -0.00012160447, -0.036389466, 0.062172733, 0.016763562, 0.025627946, 0.036722295, -0.035368785, -0.018682884, 0.036899805, 0.06847432, 0.037410144, 0.033504933, -0.010633933, -0.012847256, 0.017562354, -0.011637973, 0.019603714, 0.036788862, 0.013413068, 0.036611352, -0.015654126, -0.045398075, 0.03308335, 0.02114583, -0.014733296, 0.036877617, -0.03412622, 0.064569116, -0.030908857, -0.035679426, 0.039961845, -0.056803066, -0.014433748, -0.021367716, 0.051610913, -0.014289522, -0.028756553, 0.019126657, 0.007743856, -0.034503426, 0.0651904, 0.029067194, -0.04400019, 0.066921115, -0.003569607, 0.006684345, 0.029888177, 0.050590232, 0.024096927, -0.015876014, -0.010656122, -0.028179647, -0.037143882, 0.01974794, -0.0069117798, -0.02206666, 0.05986511, 0.041670375, 0.0569362, 0.015476617, 0.021090358, -0.019625904, -0.04395581, 0.020058583, -0.01729609, -0.0027000871, -0.024274437, -0.040827204, 0.0017709355, 0.02658206, 0.023786284, 0.07996807, 0.005341929, -0.026670815, 0.06612232, 0.00622393, -0.05986511, -0.043578602, 0.045442455, -0.00032953685, 0.0011101284, 0.0657673, 0.05365227, -0.0057246843, -0.02165617, -0.036921993, -0.08955359, 0.025272928, 0.04615249, 0.0049175704, 0.00473174, -0.042336036, -0.030731346, 0.020524547, 0.0009797697, 0.0045542303, -0.0053336085, -0.01645292, -0.05165529, -0.095588915, -0.010118047, -0.043933623, 0.030398516, -0.045974985, -0.029888177, 0.029577535, 0.0052476274, -0.017817525, 0.024096927, -0.00026019715, -0.034636557, 0.027669307, 0.023830662, 0.03303897, 0.0011593595, 0.03170765, 0.067009866, 0.04211415, -0.011715633, -0.017284997, -0.03496939, -0.017928468, -0.021855868, -0.0018929733, 0.044887736, -0.08183192, 0.034858447, 0.017739864, -0.033327427, -0.02951097, -0.030309763, -0.05063461, -0.048992645, -0.0073555536, -0.050856497, 0.05489484, -0.005880005, -0.057379976, -0.022787793, -0.006795289, 0.024474135, -0.013690427, -0.03479188, -0.008847743, 0.00024667592, -0.03035414, -0.019892167, -0.00075857615, -0.006922874, 0.029133761, -0.014278428, 0.013224464, 0.0022271906, 0.0044377395, 0.009396913, 0.05711371, -0.037010748, 0.0027832948, 0.03665573, 0.018727262, -0.028911874, 0.000531142, -0.009779668, 0.03430373, -0.004670721, -0.014566881, -0.0038525127, -0.0091084605, 0.0069006854, -0.016375259, 0.028002137, 0.006933968, 0.0076218178, 0.053430386, 0.009968272, 0.024740398, -0.0048787403, 0.020613302, 0.05675869, 0.050678987, -0.032817084, 0.047395058, -0.033904333, 0.0078104218, -0.007427667, -0.03448124, -0.0363229, 0.03960683, -0.015543183, 0.039251808, -0.047306307, 0.060974542, -0.020824093, -0.035745993, 0.013756993, 0.007056006, 0.04846012, 0.0012959586, -0.013224464, -0.062616505, -0.03217361, -0.032129236, -0.03971777, 0.018904772, 0.026005154, -0.029865988, 0.012625369, 7.878721e-05, -0.026160475, -0.035612863, -0.08538211, 0.020191716, 0.056492426, -0.030376328, -0.017617827, -0.034503426, -0.08280822, -0.0518328, 0.026892703, 0.021966811, 0.0004826042, 0.027247721, 0.02469602, -0.08826664, 0.0133575965, -0.012103935, 0.028490288, -0.024008172, 0.0062572127, -0.021367716, 0.0033837764, 0.06590044, 0.006639968, 0.04996895, -0.0031729839, -0.0015005107, 0.005868911, 0.03667792, 0.008764536, 0.002842927, -0.019603714, 0.0065844962, 0.04198102, -0.030198818, -0.024141304, -0.055161104, 0.023253756, 0.04504306, 0.017950658, -0.031308252, 0.033416178, 0.007827063, 0.055338614, 0.019903263, 0.026360175, 0.01227035, 0.055516124, -0.036234144, 0.0077771386, -0.018549751, -0.044066753, -0.02334251, 0.02436319, -0.015043938, -0.0016655392, 0.011438274, 0.0049980045, 0.026227042, 0.025295116, 0.022765605, 0.0032922481, -0.021989001, 0.0156208435, -0.031463575, -0.006662157, -0.014045446, -0.045420267, 0.02744742, -0.02829059, -0.031441387, -0.0072612516, -0.005006325, -0.007555252, 0.020890659, -0.0088255545, -0.037099503, -0.018816017, -0.061240807, 0.0076772897, -0.006545666, 0.011149821, 0.010378764, -0.008115516, -0.045131814, -0.02206666, -0.004945306, 0.0073000817, 0.0049231173, 0.0093913665, 0.0042297207, -0.010500802, 0.033549313, -0.04053875, -0.003769305, 0.0018444356, 0.054273557, -0.021278962, -0.008575932, -0.010584009, 0.0532085, 0.024784775, -0.007982384, -0.00049439195, 0.03938494, -0.08161003, 0.023076246, -0.0062738545, 0.03323867, 0.0034226067, -0.021744924, -0.022233076, -0.04262449, -0.0021536904, 0.010595104, 0.0069062323, 0.017185146, 0.117422596, 0.051211517, -0.012470049, -0.037055127, 0.027891194, 0.007405478, -0.004712325, 0.029954743, 0.0490814, 0.036211956, 0.026293607, -0.02487353, -0.03465875, 0.04484336, 0.011482651, -0.01971466, -0.014877522, -0.021079263, -0.0045819664, 0.03186297, 0.008337404, -0.04846012, 0.02968848, -0.015598655, -0.033904333, -0.046241246, -0.014356088, 0.047439437, -0.019448394, 0.0015448881, 0.020801906, -0.00026522428, 0.030265385, -0.0077161198, -0.008492724, 0.012680841, 0.012470049, 0.022743415, -0.048548874, 0.036833238, -0.006002043, 0.025428249, -0.045398075, -0.03545754, 0.031973913, -0.009785216, 0.019404016, 0.055871144, -0.029000629, -0.0013597512, 0.032151423, -0.025960777, 0.013989975, 0.0015310202, -0.020679867, 0.038475204, 0.009618801, 0.024585078, 0.013346503, 0.019858886, 0.05919945, -0.04517619, 0.035213463, 0.022743415, 0.005946571, -0.0042962865, -0.017129675, -0.0068119303, -0.0039052109, 0.0065623075, -0.033527125, -0.03277271, -0.0077937804, 0.012325822, 0.009080725, 0.051788423, -0.007999026, 0.06408096, 0.014755485, 0.019858886, 0.0019997566, 0.054406688, -0.03479188, -0.017617827, 0.025295116, -0.024074737, 0.018505374, -0.045264944, -0.0065955906, 0.021356622, -0.0010650575, 0.045797475, 0.0020261055, -0.028911874, -0.02145647, 0.0155320885, -0.03270614, 0.011194198, 0.001313987, -0.01663043, -0.017229524, 0.014211861, 0.019048998, 0.008170988, -0.015643032, -0.02208885, -0.011083255, 0.044044565, 0.088044755, -0.05542737, -0.036877617, -0.015398957, -0.061640203, -0.0043794946, 0.012936011, 0.073400214, -0.012381294, -0.019470584, -0.03532441, -0.070160665, -0.023764096, -0.013335408, -0.028956251, 0.00015332738, -0.033482745, 0.0005498637, -0.018472092, 0.0031258329, 0.0186496, -0.04499868, -0.029599724, 0.04943642, 0.017151864, 0.035501916, -0.0022882095, -0.053741027, 0.026382362, 0.019858886, 0.00753861, -0.015276919, -0.037188258, -0.018682884, 0.03461437, 0.023919417, 8.346764e-05, -0.04309045, -0.09958288, -0.0074775913, 0.03272833, -0.02778025, 0.02145647, 0.031818595, -0.007627365, 0.020224998, -0.039961845, -0.0015545957, -0.07845924, 0.017861903, -0.050323967, -0.04127098, -0.016619336, -0.020702055, 0.02693708, -0.0749978, 0.035058144, -0.0026182665, 0.03856396, -0.017174052, 0.009879518, -0.03936275, 0.0062960433, -0.0137348045, -0.002245219, -0.009940537, -0.029755045, 0.006035326, 0.0016891147, -0.005022967, 0.018083788, -0.024318814, -0.06221711, -0.019270884, 0.011726727, 0.00997382, 0.0132577475, -0.021944623, -0.006323779, -0.041626, 0.012214879, -0.0054722875, 0.015443334, -6.335913e-05, -0.003225682, 0.04093815, 0.004939759, -0.022477152, 0.004495985, -0.019881073, -0.0031397007, 0.007311176, 0.007521969, -0.0015074447, 0.037254825, 0.006290496, 0.0033283047, -0.050368346, 0.020580018, 0.027358666, 0.028268402, 0.048815135, 0.016863411, -0.0077161198, 0.00015592761, -0.030820101, 0.03150795, -0.015964769, -0.05369665, -0.012370199, 0.00024528912, 0.031175122, -0.0034226067, -0.008032309, 0.033283047, 0.01484424, -0.0006275241, 0.005430684, -0.0047372873, 0.0048066266, 0.031574517, 0.02505104, 0.021423189, 0.02593859, 0.059554465, -0.027735872, 0.046906907, -0.023076246, 0.016242128, 0.03989528, 0.022277454, -0.025073228, 0.0058578164, 0.043001696, 0.01612009, 0.016519485, -0.040028412, 0.026781758, -0.036544785, 0.030908857, 0.012325822, 0.0129803885, 0.0055998727, 0.0007592695, -0.04224728, 0.015021749, 0.013013672, -0.025428249, 0.038763657, -0.005638703, -0.0066288738, -0.019781224, 0.03392652, -0.0018513695, 0.0127917845, 0.053918537, 0.020668773, -0.018150356, -0.046995662, -0.006002043, 0.0028276723, -0.02693708, -0.025517004, 0.030753536, 0.015343485, 0.0041160034, 0.0036472674, 0.044732414, 0.037454523, 0.017007638, -0.0039551356, -0.005874458, -0.0063071377, -0.006473553, -0.051211517, 0.018405525, -0.00097283575, 0.018394431, -0.005757967, 0.033682443, 0.036034446, 0.05729122, 0.03408184, 0.02155632, -0.03510252, 0.0124145765, -0.04877076, 0.009879518, 0.0019512187, 0.005092306, 0.023919417, 0.023120623, -0.0046956833, -0.03288365, -0.006357062, -0.0090308, -0.023852851, -0.035346597, -0.0021217943, 0.00064243213, -0.03388214, -0.025872022, 0.014178579, 0.04996895, 0.020069677, -0.00822646, -0.0036444936, -0.04479898, 0.0048149475, -0.00062787085, 0.007926912, -0.0120373685, -0.04193664, -0.018272392, 0.023298133, -0.0024019266, 0.025627946, 0.00454591, -0.049835816, -0.006667704, 0.010528537, -0.0084428, 0.021212395, -0.03938494, 0.014688918, 0.020391414, -0.039163053, -0.0043989094, -0.0032478708, 0.020768622, -0.0063958922, 0.017340468, -0.008930951, -0.034037463, -0.0002553434, 0.0002205002, -0.030465083, 0.0077161198, -0.0045126267, 0.0072612516, -0.022299642, 0.043889247, 0.03918524, -0.016741373, 0.025561381, -0.002252153, -0.009186121, -0.022099944, 0.008986423, -0.035346597, -0.0042103054, 0.005979854, 0.004851004, 0.050323967, 0.0048870607, 0.00021131268, 0.0054001743, 0.011804388, 0.029178139, -0.027380854, 0.012669747, 0.0049702683, -0.0022493794, 0.027358666, 0.0038220033, -0.014700012, 0.004717872, -0.007832611, -0.030842291, -0.02915595, 0.040605318, 0.07530844, -0.012669747, -0.009868423, 0.014655636, -0.060885787, -0.033172105, 0.035546295, -0.0121261235, 0.0013694587, 0.0004122244, 0.046285626, -0.028556855, 0.0073832893, 0.003863607, 0.018560845, 0.00047948392, 0.0504571, -0.009652084, 0.05232095, 0.05591552, -0.009408008, -0.020058583, 0.009430197, 0.022654662, -0.009186121, 0.023475643, -0.026981458, -0.017196242, 0.016497297, -0.039340563, -0.012336916, -0.013945597, 0.00538908, -0.03237331, -0.0039884187, -0.0126031805, 0.009280423, -0.03137482, 0.01992545, 0.0002692113, -0.06434722, -0.037632033, -0.031308252, -0.02122349, 0.014178579, 0.006512383, 0.03155233, -0.0035196822, -0.0051061744, 0.013413068, -0.03851958, 0.025672324, 0.030975424, -0.03303897, 0.014389371, 0.006512383, -0.017695487, -0.0040300223, -0.029910365, -0.011637973, 0.0011503453, -0.03459218, 0.050767742, -0.010789255, 0.02624923, 0.0031341536, -0.0028512478, -0.054229178, 0.0057357787, -0.03257301, 0.024851343, 0.0023949926, -0.014733296, 0.00086397247, 0.0693175, 0.05591552, 0.0034891728, 0.015731787, 0.065501034, 0.011571406, -0.029178139, 0.012669747, 0.022787793], [0.014993705, 0.012337053, -0.019106057, 0.049979016, -0.007502918, 0.04185136, -0.03949798, 0.034766957, 0.008649281, 0.021435175, 0.033384044, -0.036392488, -0.034451555, -0.0184146, -0.031127708, 0.036222655, -0.037217386, 0.016946768, -0.019057533, -0.0330929, 0.01930015, -0.037338693, -0.009031403, -0.03260767, 0.033747967, -0.01191854, -0.01096627, 0.022247942, -0.009480244, 0.029356608, 0.011718381, 0.017868713, 0.030788045, -0.024613453, 0.019639812, -0.010305139, 0.013756361, 0.03918258, -0.03804228, -0.0039880103, -0.057839796, -0.0009234594, -0.013574398, -0.028264834, -0.006963096, 0.01316195, -0.021459438, -0.029016944, -0.008976813, 0.012051979, -0.004000141, -0.017371347, 0.0065203207, 0.0047006966, -0.0044793086, 0.014459949, 0.06982505, -0.05662671, 0.04808661, 0.014314379, -0.042045455, 0.035591852, 0.06084824, -0.023412501, 0.019615551, -0.011117905, 0.006123036, -0.006447536, 0.05939254, 0.04095368, -0.027706815, 0.028167786, -0.0122642685, -0.024091827, 0.011530354, -0.07948119, 0.07234827, 0.004030468, 0.019821776, -0.012167222, 0.009832038, -0.0061503304, -0.044641454, -0.009607617, 0.019215234, -0.041074988, 0.02821631, -0.114320934, -0.05337565, -0.004060795, -0.002473173, -0.007242105, 0.020197831, 0.032995857, -0.030108718, 0.026566517, 0.00023787799, 0.036489535, -0.011445438, -0.010147439, 0.0009098122, -0.05745161, -0.032656193, -0.07763731, 0.048207916, 0.026978964, 0.059052877, 0.010256616, -0.051531762, -0.040929418, 0.029623486, -0.013538006, -0.0149573125, 0.04299166, -0.030618213, 0.033262733, 0.004106286, -0.024407228, -0.036901984, 0.02838614, -0.07967529, -0.028531712, 0.03248636, 0.022041718, -0.024892462, -0.0002405316, -0.008036675, 0.023448894, -0.0024595256, 0.016910376, -0.020646673, 0.020003738, 0.04257921, 0.062400986, 0.046169937, 0.043404106, 0.0713778, -0.043161493, -0.08894324, 0.014217332, -0.0786563, 0.004594552, -0.020112915, 0.035907254, -0.007842582, 0.01667989, -0.021871885, -0.030375596, -0.024528537, -0.0039758794, 0.0016194658, -0.051580288, 0.018839179, 0.021423046, -0.010638737, -0.013368174, -0.0048765936, 0.018353945, -0.00038003613, 0.058713216, 0.061139382, -0.05774275, -0.0013169532, 0.038284898, 0.007272432, -0.06652547, 0.0605571, -0.0041487436, -0.042360857, 0.03614987, -0.006769003, -0.015102883, 0.056384094, -0.023012184, 0.00921943, 0.0058227982, -0.0006410385, -0.017868713, 0.0038212114, -0.084333524, -0.031079184, 0.041899886, 0.040735327, -0.003211637, 0.063711114, 0.040856633, 0.02062241, 0.019785384, 0.019930953, -0.04461719, -0.018499514, 0.013052773, -0.0074058715, -0.017456263, 0.018511645, -0.047019094, -0.0052708453, 0.016364489, -0.02166566, -0.019312281, -0.0232548, -0.011870016, 0.0080245435, -0.017892973, -0.01812346, 0.040759586, 0.025668835, 0.013113427, 0.04051697, 0.009110253, -0.0018893767, 0.06710775, 0.010032196, -0.022029586, 0.0031570485, -0.0011258926, -0.027318629, 0.005380023, -0.015394023, -0.021629268, 0.016873984, -0.0012919334, 0.0012835934, -0.015952041, 0.0012464428, -0.00849158, 0.024249528, -0.013707837, 0.014993705, 0.050949484, -0.018790655, -0.03508236, -0.046897788, 0.015491069, -0.099375755, -0.057257514, -0.010590214, -0.04080811, 0.015988434, 0.0075089834, 0.03243784, 0.008370272, -0.03988617, -0.029550701, 0.036222655, 0.049542308, 0.045199472, 0.029477915, -0.01665563, -0.014775351, 0.02367938, -0.013428829, -0.02017357, 0.057063423, 0.018814916, 0.06288622, 0.045757487, -0.04578175, 0.01419307, 0.05177438, -0.025280649, 0.031224756, -0.0056347703, 0.05895583, -0.015466807, -0.0011797232, -0.018171983, -0.06269213, -0.035616115, -0.0038060478, 0.06521534, -0.022272203, -0.011572812, 0.007284563, 0.013695707, -0.016582845, 0.05968368, 0.04706762, -0.017892973, 0.04415622, 0.0058591906, 0.034621388, 0.027536983, 0.04546635, 0.0108207, -0.017892973, 0.031709988, -0.04231233, -0.017213646, 0.023351846, -0.018184114, 0.02617833, 0.06405078, 0.015624508, 0.055656247, 5.7100195e-05, 0.042045455, 0.003502777, -0.058422074, 0.012652455, -0.009850234, -0.0046400423, 0.00810946, -0.044956855, 0.011172494, 0.045442086, 0.030351335, 0.07608456, 0.028750066, -0.032073915, 0.084721714, -0.008073067, -0.03263193, -0.019627683, 0.011906409, 0.004048664, 0.024492145, 0.03988617, 0.033602398, -0.020695195, -0.022393512, -0.030739522, -0.095833555, 0.043646723, 0.04767416, 0.012149026, -0.0007323988, -0.030351335, -0.01842673, -0.01698316, -0.007690946, -0.0004814423, 0.01784445, 0.017468395, -0.026493732, -0.101801924, -0.0014807194, -0.06453601, 0.003845473, -0.015927779, 0.0025262453, 0.0040880893, -0.020452578, 0.005592312, 0.03522793, -0.009371066, -0.030521167, 0.008255029, 0.020707326, 0.03595578, 0.0013541038, -0.016873984, 0.046097152, 0.031855557, -0.017929366, -0.017711012, -0.00891616, -0.005801569, -0.009898757, -0.0060987747, 0.033747967, -0.06536091, 0.007660619, 0.03864882, 0.023351846, -0.01214296, -0.011099709, -0.03231653, -0.04008026, -0.014362902, -0.033432566, 0.07259088, -0.0021759674, -0.035591852, -0.045417827, -0.00628377, 0.027003227, -0.011245279, -0.05454021, 0.017310694, 0.02428592, -0.03731443, -0.021629268, 0.019190973, 0.025765881, 0.02734289, -0.026809134, 0.0053496957, 0.003223768, 0.002538376, -0.008067002, 0.038842916, -0.032704715, -0.0053345324, 0.001406418, 0.018705739, 0.0075635724, 0.0029007846, 0.011639531, 0.027003227, -0.016776938, 0.008364207, -0.026542256, -0.028070739, 0.00870387, -0.047043357, 0.02120469, -0.0033450762, 0.008212572, 0.057403084, -0.029162515, 0.014229463, -0.015054359, 0.029890364, 0.05250223, 0.026857657, 0.0072057126, 0.04357394, -0.022429904, 0.008497646, -0.00034364365, -0.03187982, -0.04243364, 0.049930494, -0.011427241, 0.023897734, -0.02400691, 0.039570767, -0.036926243, -0.02676061, 0.025110817, 0.018341815, 0.023206277, -0.010602345, -0.006423274, -0.036343966, 0.0008612889, -0.017298562, -0.020525364, 0.029744795, 0.0067022834, -0.033675183, 0.0066598253, 0.0056529664, -0.038551778, 0.009844168, -0.09432933, 0.01814772, 0.06715627, -0.0321467, 0.0029220136, -0.024237398, -0.062206894, -0.045854535, -0.0008286873, 0.0050312616, 0.023036445, 0.051434718, -9.662016e-05, -0.094086714, 0.019130317, 0.014836004, 0.029866103, -0.028944159, 0.016425144, -0.053860884, -0.0058804196, 0.053424172, 0.021993194, 0.0686605, 0.010371859, -0.0057166535, -0.006950965, 0.039279625, -0.024395099, -0.006116971, -0.015624508, -0.0038909635, 0.016704151, 0.011487896, -0.06487568, -0.031855557, -0.007096535, 0.019045401, 0.042603474, -0.025401957, 0.032122437, -0.008212572, 0.06434192, 0.003812113, 0.010954139, 0.015854994, 0.023303324, -0.017589703, -0.005110112, -0.017783796, -0.037920974, -0.022344988, 0.026420947, -0.025401957, -0.016206788, 0.03583447, 0.02150796, 0.041948408, 0.013210474, 0.0043307063, 0.014120285, -0.023448894, 0.02444362, -0.035616115, -0.0011615269, -0.006550648, -0.040880896, 0.031249017, -0.0067083486, -0.019482112, -0.023824949, 0.0045247995, -0.016158264, 0.042943135, -0.020003738, -0.053618267, -0.0063868817, -0.045611918, 0.0013510712, -0.022478428, 0.002975086, 0.0203434, 0.03668363, -0.04660665, -0.0232548, -0.008285357, -0.013744229, 0.015588116, -0.02469837, 0.018256899, 0.0029265627, 0.017492656, -0.0067326105, 0.010111046, -0.026954703, 0.041899886, -0.008521908, 0.004239725, -0.034500077, 0.062061325, 0.04558766, -0.02676061, 0.0054861675, 0.039255366, -0.057888318, 0.03498531, 0.017601833, 0.02251482, 0.007587834, -0.027900908, -0.045102425, -0.047843993, -0.0039758794, 0.0058440273, -0.005273878, 0.037338693, 0.104810365, 0.012895072, -0.006623433, -0.06482715, 0.021107644, 0.008067002, -0.013125557, 0.016340228, 0.017929366, 0.043379847, 0.031249017, -0.015296976, -0.059732206, 0.057063423, 0.009025337, -0.032219484, -0.028580233, -0.014763219, -0.015842862, 0.005261747, 0.0034390902, -0.056529667, 0.015478939, -0.005834929, -0.031491634, -0.05832503, -0.023655117, 0.025329173, 0.0008286873, 0.006080578, -0.0014587323, -0.011057251, 0.0045217667, -0.02398265, 0.014277986, 0.024674106, 0.024492145, 0.03976486, -0.040565494, -0.010086785, 0.008170114, 0.017456263, -0.050852437, -0.0044520143, 0.014775351, -0.026226854, 0.036222655, 0.045806013, -0.07268793, 0.013562268, 0.04255495, -0.0058379616, 0.0149573125, -0.008940421, -0.02062241, 0.024176743, 0.008776655, 0.055995908, 0.010013999, 0.0038758, 0.04680074, -0.060896765, 0.054637257, 0.015867125, -0.008145852, -0.009383197, 0.0014268889, -0.007484722, -0.0027582473, 0.008212572, -0.043646723, -0.020112915, -0.0070601427, 0.003390567, 0.01944572, 0.039303888, -0.010978401, 0.050076064, 0.041778576, 0.02472263, -0.004351935, 0.073027596, -0.033408303, -0.016764807, 0.015042229, -0.022211548, 0.05575329, -0.038818654, -0.0047916775, 0.017043816, 0.01797789, 0.057160467, 0.00526478, -0.039692074, -0.008697805, 0.016364489, -0.02235712, 0.017310694, 0.0114029795, -0.014144547, -0.004779547, 0.007781927, 0.034403034, -0.0036544125, -0.030230027, -0.02337611, -0.023521679, 0.032073915, 0.07094109, -0.0620128, -0.04726171, -0.024783285, -0.029089728, -0.007442264, 0.0007085163, 0.074677385, -0.047043357, -0.004282183, -0.015017967, -0.05730604, -0.0169589, -0.016146135, 0.0062109847, -0.008946487, -0.03362666, 0.0101717, -0.011099709, -0.005595345, -0.00460365, -0.059004355, -0.051095054, 0.04592732, 0.008503712, 0.03789671, 0.003232866, -0.05366679, 0.034160417, -0.023642987, -0.0024216168, -0.0138898, -0.030812306, -0.031249017, 0.036441013, 0.03614987, 0.0033632724, -0.015830733, -0.068709016, -0.022017455, 0.0418271, -0.025547527, 0.044495884, 0.030666737, 0.010729719, 0.030035933, -0.03804228, 0.009546963, -0.06041153, 0.039643552, -0.032801762, -0.0009916953, 0.00054854096, -0.02530491, 0.014253724, -0.06167314, 0.061381996, 0.0091284495, 0.060217436, -0.018402468, 0.010893485, -0.04648534, -0.008194375, -0.00921943, 0.022599736, -0.014108155, 0.00247014, -0.0010402186, 0.020877158, 0.00841273, 0.02865302, -0.027221581, -0.062740654, -0.024225267, 0.029914625, -0.024067566, 0.006975227, -0.011706251, -0.0079578245, -0.04604863, 0.027124535, -0.03408763, -0.011584942, -0.028580233, 0.025620311, 0.052599277, -0.0071753855, -0.033942062, -0.03345683, 0.0042033326, 0.0042730845, 0.0075393105, 0.010274813, -0.014872397, 0.03345683, 0.001012166, -0.011536418, -0.035713162, 0.021325998, 0.012907202, 0.031782772, 0.06332293, 0.031224756, 0.0022426872, 0.0033511417, -0.01563664, 0.03275324, -0.014168809, -0.055171013, -0.01871787, 0.009365001, 0.0017453231, -0.0062352465, -0.028531712, 0.026251115, -0.00442472, -0.015830733, 0.0034845807, 0.012058045, 0.012246072, 0.039425194, 0.013938323, 0.023084968, 0.032365054, 0.04925117, -0.04139039, 0.040322877, -0.021107644, 0.035494808, -0.002700626, 0.017274301, -0.029550701, -0.021083381, 0.049348213, 0.03260767, 0.03406337, -0.024504276, 0.0069812923, -0.024795415, 0.041220557, 0.006277704, 0.02193254, -0.009474178, 0.037508525, -0.03687772, 0.03202539, 0.005583214, -0.03988617, -0.002473173, 0.013817015, -0.009225496, -0.023133492, 0.018463122, 0.003129754, 0.0064414702, 0.06754446, 0.032801762, 0.015697293, -0.05643262, 9.543551e-05, -0.046849262, -0.029429393, -0.050949484, 0.014132417, -0.002404937, 0.01957916, 0.020840766, 0.06589466, 0.036926243, 0.034621388, -0.01784445, -0.017929366, -0.027464198, 0.009322543, -0.033990584, 0.0184146, -0.017298562, 0.022878744, 0.016000563, 0.056529667, 0.022927267, 0.06725332, 0.027148796, -0.010135308, -0.03481548, 0.0017498721, -0.044059172, 0.0007752358, 0.008746328, 0.015563854, 0.0064960592, 0.017504787, 0.035446282, -0.045078162, -0.0075393105, 0.0019363837, -0.01301638, -0.038551778, 0.0061927885, 0.014423557, -0.033990584, -0.04272478, -0.011008727, 0.046461076, 0.017419871, 0.00053261925, 0.023218408, -0.023060707, -0.02661504, -0.022260072, 0.0014299215, -0.011542484, -0.059149925, -0.020707326, -0.0043034116, -0.010420383, 0.02940513, 0.0077212728, -0.019518504, 0.012082306, -0.003921291, -0.0037726879, 0.0062018866, -0.027828123, 0.018062806, 0.0043094773, -0.034766957, -0.014302248, -0.015891386, 0.03275324, 0.0055164946, 0.0052101915, -0.01206411, -0.003275324, 0.0062109847, -0.0036665432, -0.015588116, -0.0044884067, -0.0057348497, -0.007151124, -0.026493732, 0.05424907, 0.032559145, -0.041147772, 0.0019045402, -0.0075635724, -0.015842862, 0.00305242, 0.026639301, -0.05308451, 0.01842673, 0.011487896, 0.009995803, 0.0292353, -0.029356608, 0.011766905, -0.020573886, -0.0005409592, 0.014593388, -0.054928396, 0.02879859, 0.017432002, 0.053327125, 0.0030281583, 0.0026399717, -0.025765881, 0.020865027, 0.0077273385, -0.04083237, -0.024843939, 0.023024315, 0.07758878, -0.038284898, -0.0136107905, 0.0018454024, -0.078898914, -0.020234223, 0.017140862, -0.004106286, 0.03158868, -0.0015148374, 0.047043357, -0.023024315, 0.0041790707, 0.0019045402, 0.018936224, 0.004952411, 0.02279383, -0.01723791, 0.02515934, 0.035494808, -0.002545958, 0.005049458, 0.0071693202, 0.029526439, 0.01754118, 0.015042229, -0.048911504, 0.024043305, 0.04240938, -0.035179406, -0.031904083, -0.0060684476, 0.007824385, -0.030084457, -0.0033541743, -0.028604496, 0.012506885, -0.055995908, 0.018014282, -0.0017968791, -0.0663799, -0.024916723, -0.029550701, -0.00017722383, -0.019955214, -0.03129754, 0.011057251, 0.0033814688, -0.011924606, -0.017601833, -0.054782826, 0.0004382262, 0.027124535, -0.0041184165, 0.01578221, 0.022587605, -0.015187798, 0.02559605, -0.022429904, -0.006062382, 0.012664586, -0.06662252, 0.02588719, -0.031491634, 0.017953627, -0.014302248, 0.00511921, -0.05483135, 0.0011418143, -0.0029204972, 0.020416185, 0.004585454, -0.047140405, 0.008151918, 0.055898864, 0.053618267, 0.021689923, 0.013962585, 0.049784925, 0.0026748478, -0.0277796, 0.023994781, 0.019846037], [-0.0101313805, -0.0024791353, -0.02329313, 0.026097352, -0.007242354, 0.027702995, -0.036635797, 0.032158088, 0.006812675, 0.038806807, -0.026504416, -0.019742623, -0.014563859, 0.00049010274, -0.022852143, 0.021823175, -0.032723457, 0.017809067, -0.038286667, -0.029127719, -0.0058345897, -0.05459186, -0.041656256, 0.011064237, 0.034758776, -0.006818329, -0.017424619, 0.012370235, -0.013093905, 0.027024554, 0.03342451, 0.013919341, 0.02243377, 0.0060776975, 0.026753178, -0.00054522604, 0.014518631, 0.051290113, -0.0044635744, -0.004709509, -0.04504846, 0.0003869232, -0.007242354, -0.014326406, -0.004938483, 0.010086152, -0.008638811, 0.0014218986, 0.004039549, -0.021608336, -0.0029229487, -0.02700194, 0.019245101, -0.022128474, -0.031479646, 0.02406203, 0.068522505, -0.04016369, 0.05233039, -0.009741277, -0.039620936, 0.022580767, 0.054320484, -0.017605536, 0.014292483, -0.00026201239, 0.009402057, 0.005594309, 0.05309929, 0.035663366, -0.014190718, 0.0017738397, -0.017255008, -0.030009693, 0.018577967, -0.071100585, 0.05459186, -0.0032254201, 0.021834482, -0.02358712, 0.0074458863, -0.036726255, -0.012223239, -0.06517553, 0.042312082, -0.05106397, 0.038083136, -0.097333625, -0.023745423, -0.010114419, -0.004438133, 0.007847297, 0.04407603, 0.040095843, -0.022320699, 0.011590028, -0.0096790865, 0.019595629, -0.021529185, -0.013523584, -0.031909328, -0.037314236, -0.050521217, -0.08905665, 0.02440125, 0.03776653, 0.058707733, 0.021563105, -0.050068922, -0.07856343, 0.01881542, -0.030032307, 0.001994333, 0.010600636, -0.012313698, 0.00034469733, -0.034125566, -0.025260609, -0.031954557, 0.02899203, -0.05517984, -0.05156149, 0.04330713, 0.018430972, 0.008859305, -0.0054105646, -0.016689641, 0.017435925, 0.022388542, 0.010764592, -0.014586475, 0.037359465, 0.043284517, 0.04812406, 0.059160028, 0.043148827, 0.07788499, -0.02435602, -0.07431187, 0.005919395, -0.022083243, -0.0005674874, -0.02584859, 0.03914603, 0.0076494184, -0.008537045, -0.036545336, -0.009588628, -0.060969204, -0.00025812548, -0.0070105535, -0.042786993, -0.00027685327, 0.003553333, 0.022705147, -0.045025848, -0.0021045795, 0.050385527, -0.01490308, 0.0455686, 0.052013785, -0.044528324, -0.013919341, 0.049616627, -0.014371635, -0.04292268, 0.03837713, -0.012992139, -0.043284517, 0.03645488, -0.014360327, 0.006089005, 0.053958647, -0.03953048, -0.044166487, 0.011132081, 0.018272668, -0.029715702, -0.008180864, -0.08534784, -0.025984278, 0.059250485, 0.037065476, -0.03313052, 0.03717855, 0.045410294, 0.03290437, 0.024514323, 0.05251131, -0.037721302, -0.03206763, 0.011725716, -0.02018361, 0.0076833405, 0.024333406, -0.018148288, 0.0074402327, 0.0011886846, -0.02192494, 0.0071010124, -0.013693194, -0.029263407, 0.016384343, -0.04504846, -0.032813914, 0.04041245, 0.029331252, -0.007163203, 0.039191257, 0.008768845, 0.033175748, 0.041995477, -0.010832436, -0.036545336, 0.013059983, 0.00116819, -0.034713548, -0.029014647, -0.03993754, -0.010781553, 0.02575813, 0.004636011, -0.0005639538, -0.019652165, 0.01379496, -0.013919341, 0.029263407, 0.0005681941, 0.05174241, 0.061964247, -0.025531985, -0.049616627, -0.030439371, 0.03588951, -0.0803726, -0.021133427, -0.0102388, -0.042018093, 0.011126427, 0.036341805, 0.04893819, 0.023270516, -0.020522831, -0.019708702, 0.04934525, 0.036251348, 0.044890158, 0.0057865335, -0.01234762, 0.02299914, 0.0032084591, -0.0014423932, 0.012720763, 0.060969204, -0.005656499, 0.059838466, 0.051154427, -0.027160242, 0.0056423647, 0.050023694, -0.05811975, 0.04432479, -0.019312944, 0.06273315, -0.019912234, -0.036047816, -0.0029568707, -0.06436141, -0.041633643, -0.011646565, 0.060878742, -0.037789147, 0.037020247, 0.037314236, 0.020341912, -0.024491709, 0.062914066, 0.05879819, 0.0018374434, 0.032293778, -0.0050487295, 0.007163203, 0.040005386, 0.042651303, 0.0054953694, -0.009724316, 0.033922035, -0.039960157, -0.041972864, 0.022603381, -0.023406204, 0.0060324683, 0.052149475, 0.021563105, 0.042379927, -0.0014657145, 0.041294422, 0.0005017634, -0.029331252, 0.016983632, -0.015638057, -0.025780745, -0.017447233, -0.030507216, 0.0015547599, 0.04054814, 0.035188455, 0.09149903, -0.027612535, -0.026866252, 0.07322636, 0.01958432, -0.037246395, -0.025147535, 0.028539738, -0.021223886, 0.0025540465, 0.0180126, 0.03175102, -0.026300883, -0.032090243, -0.03853543, -0.099866465, 0.06639673, 0.027363773, 0.017108012, 0.0028791325, -0.0423347, -0.017469848, 0.019618243, -0.027273316, -0.031524878, 0.008039522, 0.027906526, -0.039123412, -0.10312298, -0.0021554625, -0.044392634, 0.015818976, -0.028630197, -0.0107758995, 0.005187244, -0.039032955, -0.044731855, 0.03973401, -0.0010459294, -0.031570107, 0.018204825, 0.0148917725, 0.0055292915, 0.0012254334, -0.0038925533, 0.026707947, 0.029218178, 0.008169556, -0.025351066, -0.0061172736, -0.0071914713, -0.0142472545, 0.008633157, 0.044302177, -0.074538015, 0.04195025, 0.04563644, 0.027906526, -0.012946909, -0.01328613, -0.05074736, -0.023994185, -0.030846436, -0.044980615, 0.05020461, 0.0072027785, -0.050792594, -0.0511092, -0.0015816148, 0.041972864, -0.0054727546, -0.044008184, 0.0042289468, -0.015061383, -0.015355374, -0.026775792, -0.008226093, 0.02507969, 0.027318545, -0.028223133, -0.008932802, 0.015445833, -0.0098091215, -0.013896726, 0.022546845, -0.010781553, -0.03150226, 0.00049858325, 0.03670364, -0.002021188, 0.024966616, 0.022806915, 0.02908249, -0.0015717209, 0.0029399097, -0.012325006, -0.025305837, 0.026278269, -0.045500755, 0.00022650024, -0.023474047, -0.013512277, 0.025577214, -0.009187218, 0.026707947, 0.010736324, 0.038942493, 0.025441526, 0.018476201, -0.04364635, 0.047536075, -0.008994993, -0.018057829, 0.051380575, -0.013376589, -0.037065476, 0.038309284, -0.034306485, 0.035030153, -0.04504846, 0.017899526, -0.013693194, -0.020748977, -0.010182263, 0.028720655, -0.0019264888, -0.00076889945, -0.017006246, -0.06051691, 0.0028664118, -0.007163203, 7.8974736e-05, 0.05318975, 0.0014360327, -0.06372819, 0.027612535, 0.029828776, -0.060607366, -0.01575113, -0.07535215, 0.014235947, 0.054184794, -0.046676718, 0.00015989292, -0.044641398, -0.06707517, -0.049661856, 0.016429571, -0.019720009, 0.025192764, 0.03862589, 0.00905153, -0.08200087, 0.009713009, 0.029874004, 0.048304975, 0.0038190556, 0.01996877, -0.05020461, 0.011974478, 0.039620936, -0.0007816202, 0.042786993, -0.0401863, 0.008661426, -0.028471895, 0.05228516, -0.013489662, -0.0091646025, -0.012494616, 0.030755978, 0.0150839975, -0.0031660565, -0.04794314, -0.049661856, 0.012856451, 0.028268361, 0.034758776, -0.04599828, 0.021947555, 0.020805513, 0.091318116, -0.023564506, 0.023360973, 0.03057506, 0.011906634, -0.012121473, -0.007264969, -0.010476255, -0.049752317, -0.016282577, 0.0015929221, 0.009000646, 0.0004010574, 0.06544691, 0.00811302, 0.03500754, 0.007349774, 0.028110059, -0.011895327, -0.0081412885, 0.022467693, -0.040819515, 0.0012770232, -0.00077031285, -0.028494509, -0.008684041, -0.0048254095, -0.038105752, 0.0016593528, 0.014518631, -0.0026953882, 0.031185657, -0.0126416115, -0.037291624, -0.0018586448, -0.038286667, -0.009130681, -0.0054049105, 0.010464948, 0.0002952277, 0.012811221, -0.060064614, 0.0002773833, 0.0028169423, -0.0360252, -0.017492462, 0.011510877, 0.007819029, 0.02593905, 0.030326298, 0.0005476995, 0.028630197, -0.02768038, 0.027228085, 0.0030784246, -0.010594982, -0.016712256, 0.04780745, 0.027476847, -0.017616842, -0.0066091428, 0.04389511, -0.04640534, 0.045975663, -0.0010657172, 0.03444217, 0.018453587, -0.030597674, -0.03916864, -0.05151626, -0.01753769, -0.013546199, 0.0029738317, 0.0155362915, 0.10493216, 0.020839436, -0.012946909, -0.04398557, 0.0272507, -0.0032480347, -0.013014753, 0.033107907, 0.0028876131, 0.039507862, 0.043420203, -0.031027354, -0.03722378, 0.06951755, -0.0172437, -0.0065469523, -0.0064791082, -0.013444433, -0.019516477, -4.1386647e-05, -0.011109466, -0.055677366, 0.022863451, 0.031818867, -0.03457786, -0.044347405, -0.0240168, 0.019776545, -0.011431726, 0.009803467, -0.022252854, 0.0142472545, 0.011827483, 0.008927149, 0.00717451, 0.0240168, -0.011635258, 0.0280196, -0.032225933, -0.048078828, 0.018170903, -0.0021356747, -0.021992786, -0.019177256, 0.020500217, -0.04057075, 0.03193194, 0.032090243, -0.085031234, 0.022772992, 0.029896619, -0.0060098534, 0.017684687, -0.019539092, -0.031841483, 0.06092397, 0.042176396, 0.067889296, 0.028517123, -0.007519384, 0.04394034, -0.03763084, 0.047626536, 0.032994833, -0.0090063, -0.0069087874, -0.0069766315, -0.010894626, 0.0046133967, 0.016814021, -0.0480336, -0.021913635, 0.0024013973, 0.014043722, 0.0011406284, 0.037924834, -0.0204776, 0.024152488, 0.026866252, 0.014643012, 0.0021865577, 0.07743269, -0.03304006, -0.019923542, 0.016361728, -0.0074798083, 0.05594874, -0.022750378, -0.02252423, 0.016621796, 0.0015476928, 0.059838466, 0.007762492, -0.022298083, -0.02197017, 0.014643012, -0.03245208, 0.017209778, -0.0065752207, -0.020138381, 0.0046105697, 0.031117812, 0.0071688564, 0.0029257755, -0.027522076, -0.013580121, -0.020545445, 0.028177902, 0.060697827, -0.05404911, -0.069924615, -0.03837713, -0.007055783, -0.016768793, 0.017085398, 0.068522505, -0.022705147, -0.017266314, -0.023338359, -0.04663149, -0.023564506, -0.049752317, -0.006795714, -0.0013653619, -0.058526814, 0.016655719, -0.038671117, -0.01579636, -0.015185764, -0.040977817, -0.03086905, 0.049028646, 0.025418911, 0.013127827, 0.003796441, -0.07331682, 0.0383319, -0.014326406, 0.00065405923, -0.0020678306, -0.015807668, -0.014552552, 0.052827913, 0.022965217, -0.0028890267, -0.019821774, -0.07331682, -0.041430112, 0.036952402, 0.0023151787, 0.016972324, 0.020816822, 0.037789147, 0.045591213, -0.0054049105, -0.006156849, -0.07060306, 0.048350204, -0.0020565232, 0.023044368, -0.013093905, -0.04640534, 0.009130681, -0.06422572, 0.054998923, 0.0039406097, 0.0617381, -0.02312352, 0.008966724, -0.025893819, 0.0025031634, -0.008084752, 0.036138274, -0.013150441, -0.01728893, 0.007864258, -0.0018105885, 0.017187163, 0.020047922, -0.029353866, -0.05735085, -0.07485462, 0.0207829, -0.023926342, 0.022422465, 0.0025059902, 0.0014784354, -0.022592075, 0.02150657, -0.026866252, -0.01028403, 0.0043872497, 0.016723562, 0.035527676, -0.011075544, -0.018261362, -0.009458594, -0.026278269, -0.00628123, 0.015389296, -0.0034006839, -0.023790654, 0.028177902, 0.0052833566, -0.008734924, -0.040276762, 0.010787207, 0.0015985759, 0.038173594, 0.059295714, 0.01810306, -0.0006954017, -0.008785807, -0.032791298, 0.023360973, -0.010888973, -0.069698475, -0.01273207, 0.009599935, 0.024220333, 0.0027660592, -0.0079434095, 0.008327859, 0.03245208, -0.032248545, 0.01239285, 0.0023561679, -0.00042685226, 0.021766638, 0.01967478, 0.012528538, 0.043194056, 0.06128581, -0.03414818, 0.041452724, -0.026006892, 0.028042214, 0.011267769, 0.009910887, -0.041746717, -0.0076833405, 0.040638596, 0.014676933, 0.0041271807, 0.001994333, 0.009486862, -0.03670364, 0.01873627, 0.025147535, 0.008887573, -0.018261362, 0.040028, -0.008554006, 0.021597028, 0.0049950196, -0.020681133, -0.008774499, -0.01149957, -0.023609735, -0.0065865284, 0.014790007, 0.006207732, 0.03853543, 0.04346543, 0.036929786, -0.018657118, -0.051471032, 0.008576621, -0.032791298, -0.018442279, -0.040842127, -0.0059080874, -0.006671333, 0.025328452, -0.0014883293, 0.057938833, 0.036296576, 0.00988262, -0.009922195, -0.022411156, -0.020624597, 0.0070670904, -0.035188455, 0.028426664, -0.030597674, 0.020217532, 0.013467047, 0.054998923, 0.018962417, 0.068024985, 0.03674887, -0.03052983, -0.048847727, -0.004141315, -0.051154427, -0.00012385075, -0.0070444755, 0.022659918, -0.005348374, -0.011493916, 0.0119970925, -0.036545336, -0.008418318, -0.016972324, -0.009967424, -0.033220977, -0.011318652, 0.00022932708, -0.051923327, -0.037449926, -0.007903834, 0.029286023, 0.014676933, -0.015197071, -0.0045455527, -0.009922195, 0.0112281935, -0.0013484008, 0.0067391773, 0.010227493, -0.055089384, -0.029308638, 0.017673379, -0.0044042105, 0.032972217, 0.012042322, -0.015683288, 0.016497416, -0.013874112, 0.009961771, 0.024604782, -0.008384396, -0.023315744, -0.005605616, -0.027182857, 0.0044211717, -0.024989232, 0.017108012, 0.013614043, -0.009961771, -0.013546199, 2.831253e-05, 0.005817629, 0.011149041, -0.009566014, -0.0060776975, 0.010855051, -0.03751777, -0.030077536, 0.035505064, 0.05097351, -0.0511092, 0.0053936034, -0.0014430998, -0.029353866, 0.00088126614, 0.02537368, -0.031185657, -0.0011794973, 0.021257808, 0.008689694, 0.029987078, -0.048666812, 0.0072819297, -0.0005074171, 0.0028508643, 0.01239285, -0.033695888, 0.028381435, 0.017548999, 0.044008184, -0.0121893175, 0.0042515616, -0.02440125, 0.012607689, -0.0072932374, -0.036929786, -0.02946694, 0.015411911, 0.08661426, -0.04170149, 0.010442332, 0.03095951, -0.070829205, -0.020997738, 0.026210425, 0.027069783, 0.01958432, -0.0041978518, 0.036002584, -0.020364527, -0.016836636, -0.016712256, 0.013173057, 0.0003007047, 0.03659057, -0.001367482, 0.0077511845, 0.028584966, -0.01350097, -0.009939156, 0.0096168965, 0.016203424, 0.016633105, 0.024446478, -0.03328882, 0.017130626, 0.032406848, -0.039417405, -0.01605643, 0.008469201, 0.0077398773, -0.008927149, 0.0034996232, -0.009317252, 0.019595629, -0.061602414, 0.034306485, 0.013331359, -0.04812406, -0.02768038, -0.005399257, -0.01473347, -0.011929248, -0.028471895, 0.025667673, 0.014382943, -0.004636011, 0.0007476982, -0.049978465, 0.027702995, 0.013546199, -0.0036975017, 0.0024098777, 0.04312621, -0.0034204717, 0.018114366, -0.040435065, -0.018939802, -0.002572421, -0.06336636, 0.01362535, -0.045455527, 0.027454233, -0.0058006677, -0.004260042, -0.052827913, -0.007949064, -0.014529938, 0.032926988, -0.0016310845, -0.018091751, -0.004186544, 0.07526168, 0.041226577, -0.01468824, 0.009594282, 0.07616627, 0.019946156, -0.0111603495, 0.01439425, 0.00394909], [0.014577201, -0.0045359577, -0.02212056, 0.02632098, 0.008152297, 0.020045204, -0.066809066, 0.047521923, 0.0094633745, 0.059253275, 2.8956536e-05, -0.013458746, -0.0010283575, 0.008357346, -0.021548904, 0.037952915, 0.00021475895, 0.012849809, -0.029228965, -0.054133236, -0.00075456896, -0.051846616, -0.015273129, -0.0014237004, 0.021002105, -0.009655997, 0.0064186906, 0.014875456, 0.0054307217, 0.013384182, 0.017373338, 0.041929647, 0.041581683, 0.012582622, 0.03345424, -0.0144902095, 0.022915905, 0.047919594, 0.014092537, 0.0021204047, -0.035069786, 0.024456888, -0.009755416, -0.030521402, -4.4320732e-05, 0.011495235, -0.005890531, -0.018069267, 0.009991534, -0.022257261, -0.018964032, -0.013694864, 0.019386558, -0.013757, -0.044812776, -0.019001313, 0.037281845, -0.03094393, 0.06556633, 0.015906919, -0.02454388, 0.03387677, 0.032236367, -0.024966408, 0.0042221686, 0.0019774912, 0.012924372, -0.005847036, 0.045334723, 0.050255924, -0.012508058, 0.0035914842, -0.044688504, -0.037778933, -0.0015922454, -0.087488055, 0.044887338, -0.005244313, 0.02838391, -0.04274985, 0.0049367375, -0.032186657, 0.0060396586, -0.012023394, 0.024668153, -0.048938632, 0.030372275, -0.11522575, -0.04217819, 0.006617527, 0.0046788715, 0.015558956, 0.03904652, 0.05507771, -0.0075992825, 0.011389603, 0.03847486, 0.03469697, -0.0004935961, -0.0010897171, -0.014776037, -0.04608036, -0.052691672, -0.0724759, 0.05552509, 0.04232732, 0.043942865, -0.011557371, -0.035517167, -0.07481223, 0.029651493, -0.005753831, -0.006381409, 0.021499196, -0.040289246, 0.00964357, -0.0079783145, -0.03874826, -0.039469045, -0.0027215746, -0.071034335, -0.032783166, 0.054630328, 0.007294814, -0.0074190865, 0.021747742, -0.026221562, 0.043495484, 0.045359574, 0.0045856666, -0.01058183, 0.04811843, 0.027340017, 0.050802726, 0.03454784, 0.040463228, 0.07292329, -0.032609187, -0.05806026, 0.018131403, -0.049783688, -0.006291311, -0.02056715, 0.04009041, 0.005132467, 0.011290185, 0.0003419444, -0.010277362, -0.054580618, -0.004616735, -0.02947751, -0.049932815, -0.014104964, -0.007363164, -0.0003666048, -0.039319918, -0.0031875975, 0.028433619, 0.0030307032, 0.06725644, 0.015795074, -0.05055418, -0.022244833, 0.026345836, -0.0033491522, -0.046030648, 0.035218913, -0.0020163264, -0.060396586, 0.017721303, 0.017385766, 0.016466148, 0.042799555, -0.044961903, -0.01531041, 0.0034330364, 0.036983587, -0.035765715, -0.026246417, -0.05999891, -0.017895285, 0.093453154, 0.025799036, -0.023338433, 0.038897388, 0.033031713, 0.04396772, 0.018106548, 0.041631393, -0.05072816, -0.03345424, 0.00042757613, -0.010109593, -0.040463228, 0.04242674, -0.030098874, -0.0047006193, 0.018640922, 0.00068932574, -0.014042827, -0.016677411, -0.009065702, 0.01577022, -0.011377175, -0.019995496, 0.033031713, 0.057911128, 0.028209928, 0.019908505, 0.010277362, 0.0074874368, 0.041507117, 0.0006357331, -0.040388662, 0.0028458473, 0.022145415, -0.06178844, 0.028856147, -0.016217602, -0.021151232, 0.026072435, 0.0049553784, 0.008487833, -0.0070276274, -0.033578515, 0.029949747, 0.0014198169, 0.005912279, 0.0060924743, 0.04369432, -0.003920807, -0.04103488, -0.021039387, 0.027066618, -0.05045476, -0.013409036, -0.041208863, -0.011917762, 0.020094912, 0.018429657, 0.046776287, 0.024717862, -0.03280802, -0.027066618, 0.04434054, 0.037878353, 0.024581162, 0.018777622, -0.016789258, 0.056022182, -0.0047006193, -0.02381067, -0.003196918, 0.05373556, 0.026519818, 0.064323604, 0.0444151, -0.03377735, 0.017920138, 0.049386013, -0.036909025, 0.04369432, -0.024307761, 0.0675547, 0.006431118, -0.021275505, 0.015869638, -0.05597247, -0.042799555, -0.02143706, 0.028731873, -0.050206214, 0.026793217, -0.019125585, 0.022008715, -0.002264872, 0.06785295, 0.040189825, -0.016304594, 0.03643679, 0.0032963364, 0.020418022, 0.04369432, 0.08037965, -0.0031316748, 0.0049367375, 0.043296646, -0.040239535, -0.023549698, 0.006549177, -0.023437852, 0.022443669, 0.071233176, -0.02239396, 0.05840822, -0.03377735, 0.035641443, 0.011252903, -0.013247482, 0.03263404, -0.014527491, -0.032112096, -0.07267474, -0.0266938, 0.0049149897, 0.07158114, 0.0064186906, 0.04657745, -0.004135178, -0.02116366, 0.083113655, -0.0027479825, -0.043545194, -0.025600199, 0.029552074, -0.01659042, 0.013570591, 0.026395544, 0.06586459, 0.0020613752, -0.009649783, -0.06293175, -0.10289789, 0.054630328, 0.029154401, 0.012439708, 0.003734398, -0.03427444, -0.016428865, 0.041010026, -0.034448422, -0.0069157816, -0.014204382, 0.008469192, -0.029924892, -0.123378046, -0.031863548, -0.064323604, 0.014639337, -0.023288725, -0.034846097, 0.013744573, -0.024854561, -0.013085927, 0.043719176, -0.011812131, -0.03263404, 0.012321649, 0.010153089, 0.039469045, 0.0014586521, -0.0034019682, 0.042973537, 0.009544152, 0.042302463, -0.023773389, -0.023773389, -0.013545737, -0.010768239, 0.032435205, 0.03248491, -0.097926974, 0.012787672, 0.073320955, 0.011638149, 0.004371296, 0.008972497, -0.038922243, -0.013222627, -0.027166037, -0.058358513, 0.05955153, 0.013781855, -0.048963487, -0.04613007, -0.011035426, 0.04135799, 0.0040015844, -0.071282886, 0.02084055, -0.004421005, -0.03623795, 0.008003169, 0.0034268228, 0.001401176, 0.038325734, -0.029154401, 0.00437751, -0.009395025, 0.009513084, -0.011911549, 0.038648844, -0.006083154, -0.01220359, -0.011240476, 0.013533309, -0.009519298, 0.035169207, 0.041507117, -0.0074936505, -0.017845575, 0.010780666, -0.033653077, -0.014651764, 0.019734522, -0.04021468, 0.014154673, -0.03131675, 0.011439312, 0.044589084, 0.00052427594, 0.026743509, -0.0097367745, 0.016714692, 0.041109446, 0.0132102, 0.0006054416, 0.044042286, -0.030794803, 0.0051573217, 0.0054151877, -0.021511624, -0.035542022, 0.03847486, -0.0416811, 0.017559748, -0.021685606, 0.06720673, -0.030769948, -0.035889987, 0.016242456, 0.006959277, 0.0132102, -0.013955836, -0.03263404, -0.04821785, -0.028955564, -0.027464291, -0.020765986, 0.027911672, 0.021089096, -0.057662584, 0.0042283824, 0.012961654, -0.033901624, 0.002746429, -0.051995743, 0.0025910882, 0.043570045, -0.026122145, 0.022779206, -0.016515857, -0.07615438, -0.026594382, 0.027439436, -0.0029110906, 0.018355094, 0.02500369, 0.037232134, -0.0969825, 0.01751004, 0.015273129, 0.015086719, -0.017485185, 0.03464726, -0.041482262, -0.0074190865, 0.051250108, 0.019386558, 0.06999045, -0.03196297, -0.019138012, -0.025997872, 0.05100156, -0.0033926477, -0.024481744, -0.009258324, 0.022953188, 0.01915044, 0.02664409, -0.032012675, -0.019324422, 0.015645947, 0.036312517, 0.03899681, -0.06636168, 0.01316049, 0.0024419606, 0.07023899, 0.005843929, 0.0089787105, 0.018752767, 0.010774452, -0.021126378, -0.005483538, -0.026370691, -0.04212848, -0.008189579, -0.006201213, -0.031863548, 0.028011091, 0.0533876, 0.03454784, 0.018442085, 0.03198782, 0.025724472, -0.0140055455, -0.032261223, 0.04543414, -0.018640922, -0.013881273, -0.03688417, -0.03651135, 0.0123402905, -0.0042190617, -0.013185346, 0.012737963, 0.0055674217, -0.009065702, 0.021909297, -0.015621092, -0.028731873, -0.006350341, -0.03643679, -0.025438644, -0.02220755, -0.015409828, -0.0094633745, 0.031018494, -0.0283342, -0.016975665, -0.018678203, -0.010507266, 0.004271878, 0.018951604, -0.0011642809, 0.035914842, 0.0027604098, 0.02070385, 0.011308826, -0.016739547, 0.03720728, -0.014266519, -0.014415646, -0.032261223, 0.05279109, 0.036660478, -0.030049166, -0.019038595, 0.028632455, -0.032385495, 0.021374924, 0.0016171, 0.0029607997, -0.0051790695, -0.027737692, -0.045657832, -0.051448945, -0.00091728865, -0.0029343916, -0.010712316, -0.0018268103, 0.089724965, 0.030223148, -0.010103379, -0.043570045, 0.026768364, -0.006216747, -0.004638483, 0.013993118, 0.019001313, 0.04697512, 0.013247482, -0.019809086, -0.0435949, 0.08366045, -0.030421983, -0.038499717, -0.03504493, -0.032658894, -0.03419988, -0.005548781, -0.0072886003, -0.060943387, 0.02125065, -0.018939177, -0.044489667, -0.02582389, -0.023276297, 0.0040761484, -0.004010905, 0.0074004456, 0.0042936257, -0.01681411, -0.005989949, -0.011507662, 0.0030462372, 0.02811051, 0.02307746, 0.04729823, -0.030819656, -0.028582746, 0.0023270084, 0.021051815, -0.040736627, 0.010942221, 0.02345028, -0.033031713, 0.021051815, 0.023301153, -0.07739711, 0.002264872, 0.054928582, 0.0082206465, 0.024345044, -0.02582389, -0.011836985, 0.04128343, 0.0059309197, 0.03139131, 0.041581683, 0.0073693777, 0.033653077, -0.039245352, 0.044067137, 0.011712712, 0.017261494, -0.0008714631, -0.0086742425, -0.036859315, 0.0067666546, -0.0009343762, -0.03400104, -0.031689566, -0.007810546, -0.007555787, 0.020206759, 0.01261369, 0.0026625448, 0.032957148, 0.023164451, 0.016441293, 0.011818344, 0.10488625, -0.026793217, -0.0040761484, 0.020144623, -0.027464291, 0.05328818, -0.014987301, 0.0016745761, 0.034895804, -0.0021840946, 0.06760441, 0.0063876226, -0.014664192, -0.020765986, 0.022766778, -0.034522988, 0.010358139, 0.007605496, -0.022953188, 0.001522342, 0.010202798, 0.027389728, 0.009115411, -0.033081423, -0.018292958, -0.011619507, 0.0416811, 0.07595554, -0.0871898, -0.06844946, -0.02686778, -0.01841723, -0.02550078, -0.0104637705, 0.06313059, -0.029452655, -0.019684814, -0.025625054, -0.07829187, -0.011576012, -0.006723159, 0.012023394, -0.0044582873, -0.03748068, 0.030521402, -0.008817156, -0.00097631826, -0.0062975246, -0.06462186, -0.04608036, 0.025973016, 0.04772076, 0.03382706, 0.0071146186, -0.046403468, 0.022816489, 0.0045390646, -0.0046975124, -0.037853498, -0.02353727, -0.017112365, 0.031813838, 0.0414077, -0.014813319, -0.0066051, -0.05443149, -0.042302463, 0.029179256, -0.013868846, 0.012911945, 0.034299295, 0.0039736233, 0.027439436, -0.027861964, 0.012489418, -0.058109965, 0.021996288, -0.03422473, 0.016801683, -0.0012691361, -0.018578785, -0.00021145795, -0.08167209, 0.05060389, 0.011911549, 0.057712294, -0.017994704, 0.0007304911, -0.03720728, -0.0068722866, -0.008139869, -0.004038866, 0.0011308825, -0.010246294, -0.0106750345, 0.0035728433, 0.005203924, 0.036759898, -0.03318084, -0.031565294, -0.033429384, 0.028160218, -0.01952326, 0.0053654783, -0.008003169, 0.008866865, -0.02582389, -0.0032745886, -0.042600717, 0.014689046, -0.016714692, 0.01988365, 0.033205695, -0.008860651, -0.050156508, 0.0011572905, -0.033081423, -0.016689839, 0.003423716, -0.0013048645, -0.014738755, 0.035392895, -0.02903013, 0.017497612, -0.042724993, 0.0099791065, 0.013868846, 0.021946577, 0.056867238, 0.021300359, -0.01517371, -0.0023316685, -0.04543414, 0.032609187, -0.0006567041, -0.06074455, -0.03989157, 0.0022695323, 0.016491001, -0.0027355552, -0.0017895284, 0.03971759, 0.026395544, 0.0016559352, 0.0111907665, 0.023412997, 0.0009902989, 0.023698825, 0.022543088, 0.0036256593, 0.037778933, 0.055674218, -0.04958485, 0.03208724, -0.017261494, 0.045632977, 0.014154673, -0.005169749, -0.045533556, 0.0021763276, 0.058557346, -0.010681248, 0.0024404074, -0.0029297315, 0.0052163512, -0.045135885, 0.047969304, 0.0036691546, 0.005287808, -0.028011091, 0.01915044, -0.0058066472, 0.0048155715, 0.0065056817, -0.015049437, -0.008052878, -0.02463087, -0.02171046, -0.022356678, -0.0035386682, -0.010264934, 0.0055891695, 0.06526808, -0.0036536206, 0.0035479888, -0.028806437, 0.0012442815, -0.036685333, -0.039295062, -0.041482262, -0.002738662, -0.0051821764, 0.016478574, 0.004647803, 0.060346875, 0.023649115, 0.053636145, 0.0104637705, -0.005259847, -0.0076241367, 0.020318605, -0.029427802, 0.016640129, -0.025848744, 0.0043526553, -0.007294814, 0.04963456, 0.021747742, 0.054829165, 0.027414583, -0.016938385, -0.026743509, -0.0059433472, -0.036213096, 0.0008000062, -0.0018081694, 0.01860364, -0.005244313, 0.007922391, 0.007443941, -0.054530907, 0.007996955, 0.013682436, -0.017261494, -0.064273894, -0.009941825, -0.009562792, -0.02811051, -0.00781676, 0.024357472, 0.03643679, 0.017572176, -0.009513084, 0.0047006193, -0.003647407, -0.004299839, 0.024829708, 0.029726056, -0.001316515, -0.026793217, -0.021996288, 0.00478761, -0.027439436, 0.015645947, 0.012837381, -0.038102042, -0.008388415, -0.01394341, -0.004548385, 0.017746158, -0.034672115, -0.0052287783, -0.0022928333, -0.018653348, 0.0016139931, -0.0384003, 0.044763066, 0.006623741, -0.0077546234, -0.021076668, -0.006934423, -0.010016388, -0.01869063, -0.01462691, -0.012644758, -0.015795074, -0.0027526428, -0.005996163, 0.0051821764, 0.025997872, -0.019088304, -0.003336725, -0.016503429, -0.014179528, 0.008407055, 0.023176879, -0.06327972, 0.02304018, 0.03536804, 0.00930182, 0.021722887, -0.010059884, 0.007325882, 8.490357e-05, 0.011041639, 0.008469192, -0.02198386, -0.00667345, 0.019734522, 0.018429657, -0.00013126315, 0.012812527, -0.013843991, 0.024258053, 0.020977251, -0.03089422, -0.04446481, 0.056022182, 0.10309672, -0.028632455, 0.004256344, 0.039792154, -0.058358513, -0.0056916946, 0.03899681, 0.036262807, 0.013446318, 0.00256468, 0.046428323, -0.011109989, 0.0053033424, -0.008984924, 0.011321253, -0.0028505076, 0.044067137, -0.018653348, 0.0075930688, 0.022195123, -0.0136203, -0.021424633, 0.0044831415, 0.01640401, 0.009556579, 0.012085531, -0.033528805, 0.004405471, 0.03012373, -0.031813838, -0.011700285, 0.010420275, -0.0012551554, -0.009680852, -0.0069157816, -0.015683228, -0.0060924743, -0.05323847, -0.0012085531, -0.002575554, -0.06064513, -0.013284763, -0.01563352, -0.024618443, -0.009823766, -0.021648323, 0.043023247, 0.008742592, -0.006291311, -0.010867657, -0.04391801, 0.020753559, 0.029750912, -0.024146207, 0.008388415, 0.01119698, -0.0042066346, 0.017037801, -0.033926476, 0.011600867, -0.018479368, -0.048714943, 0.012358931, -0.05552509, 0.03720728, 0.0047006193, 0.0060520857, -0.045135885, 0.0129368, -0.021263078, 0.008593465, -0.014676618, 0.0048497464, 0.038226318, 0.046055503, 0.066013716, -0.014390792, 0.013235054, 0.06556633, 0.008034237, -0.013980691, 0.026296126, 0.0055922763], [0.0058636637, 0.019797508, -0.013539228, 0.008086854, 0.023654742, -0.0035209772, -0.030969037, 0.03145814, -0.003357017, 0.030013066, 0.011616168, -0.0072420416, -0.054601546, 0.008364753, 0.011982994, 0.026055787, -0.040773306, 0.039217073, -0.011938531, -0.054334763, -0.008598188, -0.032214023, -0.044397105, 0.009476348, -0.0021009145, -0.0012262283, 0.01520662, 0.0118051395, -0.0023704765, 0.00057073456, 0.023143409, 0.019764159, 0.041929364, -0.0382611, -0.0013262718, -0.011905183, 0.0002495878, 0.028034426, -0.06002613, -0.025366599, -0.05264514, 0.010849168, -0.020008711, -0.020353304, 0.012183081, -0.013005662, -0.028390137, 0.009220681, 0.02385483, -0.02750086, 0.018986043, -0.019063855, 0.029168254, -0.028101122, 0.012850039, -0.0014478525, 0.061271116, -0.07838968, 0.008053506, 0.0074143386, -0.025122048, -0.0077867233, 0.024744105, -0.006658454, 0.027767643, 0.00028936207, 0.009431884, 0.024966424, 0.06647338, 0.044952903, -0.0032458575, 0.031969473, -0.028345672, -0.027745413, 0.00060269295, -0.08363641, 0.07950128, 0.02176503, -0.022298597, -0.014973185, -0.016507186, -0.046153426, -0.026744977, -0.038928058, 0.016018085, -0.029146021, 0.021564944, -0.102266744, -0.03812771, 0.009493021, 0.025411062, -0.00334868, 0.03203617, 0.04221838, -0.01959742, 0.028612455, 0.023410192, 0.012260893, -0.04677592, -0.02292109, -0.026011324, -0.038639043, -0.05277853, -0.031635996, 0.04948821, 0.03230295, 0.06998602, -0.036237996, -0.020086521, 0.038661275, 0.039128143, -0.024232771, 0.0073420852, 0.035037477, -0.036704868, 0.02890147, 0.010949211, -0.05335656, -0.029368341, -0.018674796, -0.096130736, -0.0021120305, 0.047665194, 0.043418903, -0.040417597, 0.026122482, -0.015595678, 0.013561459, 0.0130723575, 0.016362678, 0.012672183, 0.028278977, 0.024121612, 0.029079325, 0.089905806, 0.040773306, 0.057135984, -0.023121176, -0.0837698, -0.017307535, -0.04326328, -0.0016534976, -0.04152919, 0.022298597, -0.00050438626, -0.007853419, -0.01989755, -0.009754246, -0.020442232, -0.0028762522, 0.0005988718, -0.053489953, 0.019730812, -0.0031652667, 0.015117692, -0.039528318, -0.0043463367, 0.015395591, 0.012294241, 0.031413674, 0.038416725, -0.06469483, 0.02129816, -0.008437006, 0.0037544123, -0.061493438, 0.0062138163, -0.017385347, -0.042840872, 0.030791182, -0.0019508493, -0.0034292706, 0.026656048, -0.016640577, -0.014884258, -0.0015909703, 0.02876808, 0.019819738, -0.032814287, -0.0584699, -0.041129015, 0.016518302, 0.053534415, -0.059492566, 0.04003965, 0.025700077, -0.00021815053, -0.01989755, 0.017807752, -0.071942426, -0.04246293, -0.0029485058, -0.002566395, -0.03461507, -0.0047687427, -0.050688732, -0.07118654, -0.025344366, 0.014917606, -0.021198116, -0.03145814, -0.048732325, -0.038550116, 0.019119434, -0.02094245, 0.044708353, 0.023432422, 0.0037766441, 0.055979926, -0.031169124, 0.034081504, 0.039950725, 0.0036238, -0.037772, -0.028412368, 0.012538792, -0.055757605, 0.044263713, -0.0118051395, -0.042640787, 0.030946806, -0.019508492, 0.033859186, -0.005146685, -0.013761546, 0.02923495, 0.025989091, -0.007808955, -0.009020594, 0.03323669, -0.0009893195, -0.017074099, -0.030635558, 0.00850926, -0.054823868, -0.02538883, -0.010560153, -0.01638491, 0.048465542, 0.012416516, 0.044308178, 0.042440698, -0.027234077, -0.013361372, 0.027278543, 0.05286746, 0.034815155, 0.013050126, -0.04306319, -0.012805575, 0.019219479, -0.016318215, 0.013272445, 0.034637302, 0.023454655, 0.05593546, -0.010226674, -0.051400155, 0.021564944, 0.05215604, 0.006675128, 0.04326328, -0.04748734, 0.048954643, -0.025122048, -0.027789876, 0.00848147, -0.040995624, -0.045353077, -0.04957714, 0.057936333, -0.01940845, 0.0057525043, 0.014673054, -0.004927145, -0.037105042, 0.055268504, 0.02305448, -0.0568692, 0.048954643, 0.019197246, 0.0120719215, 0.010699102, 0.018919347, 0.056646883, 0.013972749, -0.009070615, -0.0470427, -0.015884694, 0.01767436, -0.031369213, -0.01671839, 0.050688732, 0.026278106, 0.05406798, 0.004735395, 0.0049743876, 0.00065097783, -0.0315693, 0.00941521, 0.0050077355, 0.0096152965, -0.027145151, -0.06429466, 0.0016437712, 0.046998236, 0.009670877, 0.07252046, 0.019063855, -0.043707915, 0.082213566, -0.016418258, -0.050733197, -0.01718526, 0.033836953, 0.0248108, 0.047309484, 0.041751508, 0.040017422, -0.022876626, -0.025655612, -0.018841535, -0.098887496, 0.013728199, 0.042196147, -0.0006013034, 0.00044046954, -0.040306434, -0.07438794, 0.021242581, -0.034637302, 0.02607802, -0.020653436, -0.002901263, -0.0186081, -0.09092847, -0.011705096, -0.018107884, 0.015273316, -0.04070661, -0.039639477, 0.045086294, -0.023721438, -0.058781143, 0.04048429, 0.01668504, -0.013294676, 0.012672183, 0.035860054, -0.0011470271, 0.0011546693, 0.03975064, 0.038683508, 0.031747155, 0.0012672184, -0.04304096, -0.034592837, -0.01666281, -0.015039881, -0.007119766, 0.056024387, -0.10119961, 0.018430246, 0.048243225, 0.006169352, -0.031658225, -0.04070661, -0.044908438, -0.04877679, 0.005560754, -0.06642892, 0.06407234, 0.022298597, -0.042285074, -0.061093263, -0.0027289658, 0.024588482, -0.02316564, -0.027767643, 0.0067807296, -0.020953566, -0.03683826, -0.012583256, 0.011127066, 0.0019536281, 0.03139144, -0.020953566, 0.0124054, 0.012961198, -0.030680023, 0.0186081, 0.024766337, -0.04819876, -0.02865692, 0.03628246, -0.008909434, -0.040639915, -0.0080146, -0.008570397, 0.011127066, 0.016307099, -0.0098098265, -0.013772663, -0.00025549316, 0.009643087, -0.023032248, 0.01894158, -0.032903213, -0.0113049215, 0.048065368, -0.020842407, 0.059003465, -0.00061415625, 0.025411062, 0.028567992, 0.06807408, -0.0066251066, 0.030079762, -0.036171302, -0.0027414712, 0.013239097, -0.018741492, -0.030746719, 0.044063628, -0.03634916, 0.007908999, -0.061271116, 0.049666066, 0.01674062, -0.04246293, 0.019808624, -0.008414774, 0.010254464, 0.008798274, -0.004265746, -0.06722926, -0.026189178, -0.016107012, 0.0038211078, 0.040395364, 0.031791616, -0.0004067743, 0.011438313, 0.009932102, -0.016295983, -0.017963376, -0.10706883, 0.042440698, 0.052511748, -0.020553391, 0.012083038, -0.0064972728, -0.068296395, -0.022331944, 0.044908438, -0.020553391, 0.009037267, 0.011927415, 0.014250648, -0.089994736, 0.0008802443, -0.011894067, 0.076788984, -0.012449864, 0.022732118, -0.019719696, 0.0021620523, 0.04395247, 0.009081732, 0.042396232, 0.007892325, -0.0032875424, -0.013594807, 0.0491325, -0.027901035, 0.0052272757, -0.02352135, 0.008792717, 0.03499301, -0.044908438, -0.060782015, -0.05544636, -0.0072198096, 0.039328232, 0.01621817, -0.042040523, 0.029279413, 0.008609303, 0.052600678, 0.037127275, 0.04537531, -0.0039711734, 0.029079325, -0.044374872, 0.017874448, -0.01847471, -0.05500172, -0.054734938, -0.017996723, -0.008965014, 0.0382611, 0.029790746, 0.024521787, 0.03228072, 0.032814287, -0.002692839, -0.014161721, 0.002591406, -0.0019063854, -0.048109833, -0.0016423817, 0.009581949, -0.03030208, 0.03134698, -0.03541542, -0.014128373, 0.0016020864, 0.005621892, 0.008248035, 0.0032180676, -0.02157606, -0.05326763, -0.02129816, -0.054245837, 0.013516995, -0.012005227, 0.015840229, -0.0011011738, -0.017774405, -0.032814287, -0.014950953, 0.00837031, 0.023921525, 0.007920114, 0.014295112, 0.005341214, 0.023788134, 0.03886136, -0.042529624, 0.00040746905, -0.016295983, 0.040284205, -0.027367469, -0.007870093, -0.04375238, 0.029590659, 0.013005662, -0.0028484622, -0.0046242354, 0.019175014, -0.08532603, 0.013183517, -0.002563616, 0.008714905, -0.015906924, -0.029812979, -0.0010872788, -0.033303387, 0.018441362, 0.0016159812, 0.024499554, 0.0305244, 0.08270267, 0.046953775, -0.03299214, -0.034437213, 0.006508389, 0.014761982, -0.024210539, 0.034326054, 0.03768307, 0.030924574, 0.04526415, -0.013316908, -0.037482984, 0.07901217, 0.017029636, -0.010543479, -0.025633382, -0.0056302287, 0.00010759893, 0.0045325286, 0.008681557, -0.049043573, 0.014395156, -0.004699268, 0.008253593, -0.05193372, -0.038038783, 0.03437052, -0.017774405, -0.0072920634, -0.011293805, 0.00077672704, 0.033414546, 0.022698771, 0.028479064, 0.008987246, 0.019175014, 0.021542711, -0.030546632, 0.013983865, -0.020897986, 0.017274186, -0.028456833, -0.033503473, 0.04739841, -0.0049799457, -0.003351459, 0.050822124, -0.034904085, 0.012583256, 0.05086659, -0.019452913, 0.02135374, -0.01462859, -0.024299467, 0.04797644, 0.025789004, 0.04575325, 0.0289904, 0.02316564, 0.04584218, -0.047887515, 0.003562662, 0.022698771, 0.011338269, 0.0049410397, -0.026344802, -0.043107655, -0.020075407, -0.013061241, -0.036993884, -0.03112466, -0.0065472946, 0.02994637, 0.019452913, 0.061849147, -0.0072253677, 0.016151475, 0.007119766, 0.023965988, 0.0047854166, 0.062338248, -0.038083244, -0.008025716, 0.054245837, 0.007908999, 0.02876808, -0.023832597, -0.009148427, -0.010810262, -0.0131501695, 0.05086659, -0.016807316, -0.022554263, -0.047220558, 0.02538883, -0.03428159, 0.019719696, 0.01158282, -0.013761546, -0.00941521, 0.0008253593, 0.024855265, 0.020653436, 0.00076977955, 0.0061915843, -0.002481636, 0.061404508, 0.07852307, -0.05838097, -0.037105042, -0.040773306, -0.058292042, -0.0052189385, 0.012460981, 0.081635535, -0.027345238, -0.0073087374, -0.06416126, -0.062871814, -0.017274186, -0.024766337, -0.012338704, -0.00096847716, -0.04575325, -0.013728199, -0.0111882035, 0.010938095, 0.02632257, -0.015762417, -0.01169398, 0.059225783, -0.0034209336, 0.0106157325, 0.015473403, -0.055890996, 0.0022440325, 0.018107884, -0.033659097, 0.014695286, -0.0040795538, -0.023588046, 0.00028918838, 0.04526415, -0.00039843735, -0.03203617, -0.096842155, -0.02280993, 0.035148636, -0.007997926, 0.039239306, 0.008492586, -0.017696593, 0.007970137, -0.04610896, -0.0072865053, -0.06567303, 0.0125721395, -0.032658663, -0.030924574, -0.007314295, -0.0067974036, 0.004932703, -0.054201372, 0.020709015, -0.00669736, 0.038061015, -0.013294676, -0.0004856281, -0.024899729, 0.026856136, -0.011671748, 0.0011289637, -0.020553391, 0.00417126, 0.010043261, -0.002492752, 0.013005662, -0.0087704845, -0.017085215, -0.049354818, -0.022698771, 0.02157606, -0.0082369195, 0.027945498, -0.008787159, -0.017040752, -0.017618781, 0.007742259, -0.010921421, 0.0022065162, -0.017051868, 0.028345672, 0.047531802, 0.02129816, -0.021976234, -0.006280512, -0.02807889, -0.016896244, -0.009159543, 0.03276982, -0.008420332, 0.058292042, -0.032725357, 0.011054813, -0.03895029, 0.032214023, 0.042374004, -0.012727763, 0.057447232, 0.004018416, -0.00848147, 0.011894067, -0.03975064, 0.023032248, -0.0112660155, -0.049399283, 0.0054190257, -0.007392107, 0.026100252, 0.018096767, -0.013083474, 0.040528756, 0.014239532, 0.005110558, -0.0082369195, 0.0039489414, -0.0014645264, 0.048510008, 0.0077255853, 0.008053506, 0.02058674, 0.051755864, -0.014706402, 0.018063419, -0.011549472, 0.035748895, 0.026100252, 0.014550779, -0.018841535, -4.9413873e-05, 0.020731248, -0.0034042597, 0.01715191, -0.020686783, 0.02503312, -0.04575325, 0.025900165, 0.015039881, 0.022732118, -0.0019466808, 0.010988117, -0.05091105, 0.029279413, 0.010549037, 0.011949646, 0.010749124, 0.00392393, -0.016418258, -0.027434165, 0.023610279, -0.009737573, 0.016807316, 0.055713143, 0.024432858, -0.03308107, -0.030969037, -0.012038574, -0.029079325, -0.018552521, -0.031547066, 0.03661594, 0.0106546385, 0.01597362, -0.031413674, 0.032214023, 0.035815593, 0.01597362, -0.021342624, -0.02157606, -0.0008663494, -0.015340012, -0.0584699, 0.025010888, 0.0020967461, 0.012561024, 0.01103258, 0.011260457, 0.04208499, 0.023499118, 0.041506957, -0.0032541945, -0.03530426, -0.008659326, -0.02667828, 0.006413903, -0.021075841, 0.0050271885, 0.022109626, 0.024610713, -0.022298597, -0.02006429, 0.0059803813, -0.014517431, -0.018541405, -0.06576196, 0.022031814, 0.0038600138, -0.040306434, -0.035148636, 0.015384475, 0.022109626, -0.00013625724, -0.00993766, -0.0038294448, -0.026744977, -0.011316038, -0.011949646, 0.019475145, -0.005180033, -0.042885337, -0.041151248, -0.00088927604, -0.035370953, 0.035126403, -0.0054996163, -0.03814994, 0.0075032664, -0.008020158, 0.0007030839, -0.002050893, -0.03788316, 0.006236048, 0.04537531, -0.04444157, -0.03323669, -0.006224932, 0.017718825, 0.010932537, 0.013016778, -0.010754682, -0.044352643, 0.03872797, -0.010393414, -0.0029929697, 0.0001347809, -0.0023121177, 0.010159979, -0.023476887, 0.025433294, 0.043374438, -0.03312553, 0.024499554, -0.016562765, -0.012772227, 0.0028484622, 0.0068474254, -0.028145585, 0.0007607478, 0.01625152, -0.012594372, 0.04677592, -0.0087315785, -0.0055023953, 0.009204007, -0.001789668, 0.028256746, -0.05544636, 0.01023779, 0.013939401, 0.031613763, 0.015684607, -0.030680023, -0.037949853, 0.005546859, 0.010254464, -0.060915407, -0.021275928, 0.06371663, 0.08283606, -0.023543583, -0.008675999, 0.021342624, -0.02632257, -0.018230159, 0.027856572, -0.003112466, 0.008136876, -0.027411934, 0.0050466415, -0.0063249758, 0.0065806424, 0.006236048, -0.016184824, -0.004185155, 0.048910182, 0.02262096, 0.04068438, 0.018430246, -0.0105379205, -0.011249342, 0.008942782, 0.008242477, -0.0019355648, 0.014283996, -0.03334785, 0.008909434, 0.017763289, -0.016173707, -0.007364317, -0.009142869, 0.029457267, -0.016885128, 0.028145585, -0.009804268, 0.008681557, -0.03194724, 0.015351127, -0.009020594, -0.0795902, -0.026233643, 0.0032819842, -0.016284866, -0.011316038, -0.0066251066, 0.021064725, 0.0080423895, -0.0012602708, 0.006919679, -0.04108455, 0.023343496, 0.0465536, -0.014973185, 0.013227981, 0.019052738, -0.012894502, 0.003334785, -0.041840438, -0.027989963, 3.336956e-05, -0.027323006, 0.03977287, -0.0045464234, 0.06616214, 0.023032248, -0.021398203, -0.038061015, -0.0016437712, -0.032836515, 0.00859263, -0.02338796, -0.031169124, -0.015662374, 0.049888384, 0.026344802, 0.006702918, 0.006964143, 0.06963031, 0.009982123, -0.007175346, 0.0141839525, 0.01328356], [0.03464451, 0.026512444, -0.023409419, -0.0112053715, -0.007805121, 0.029532248, -0.04465504, 0.019676276, 0.007614897, 0.03326539, 0.017191477, -0.011050815, -0.046153054, 0.0028236348, -0.023766087, 0.021186177, -0.014742346, 0.018737046, -0.022268075, -0.029342024, 0.007442507, -0.044464815, -0.022208631, -0.013577225, 0.008625461, -0.009677636, -0.009202077, 0.028462239, -0.014266786, 0.013054109, 0.006937225, 0.021079177, 0.039994556, 0.0038312266, 0.033669617, 0.0017149866, 0.011478818, 0.039780553, -0.0331465, 0.0022187824, -0.041682795, 0.036261413, -0.0027731066, -0.007501952, 0.025561325, -0.031268038, -0.014730456, -0.037426535, 0.01116376, 0.00652111, 0.014944458, -0.020056723, 0.013268111, -0.016775362, -0.017096365, 0.0037093644, 0.088834524, -0.08246202, 0.0491253, 0.01157393, -0.03397873, 0.026274664, 0.039590333, -0.03512007, 0.027083116, 0.011145927, -0.009392301, -0.0060812174, 0.06667345, 0.054118674, -0.008256903, 0.007983455, -0.017833482, -0.005522435, 0.021816295, -0.08888208, 0.058018263, 0.023777977, 0.00128624, 0.0010484601, -0.0094933575, -0.014861235, -0.009636025, -0.03535785, 0.016478138, -0.043418586, 0.015313017, -0.124406375, -0.06244097, 0.008869185, -0.024122758, -0.00514496, 0.014956348, 0.01644247, -0.030293142, 0.02491932, -0.004033339, 0.042729024, -0.0052162935, -0.010486088, -0.02232752, -0.061442293, -0.036142524, -0.07894288, 0.04983864, 0.032028936, 0.033289168, -0.004633733, -0.014932569, 0.020294502, -0.007365228, -0.012412104, -0.020829508, 0.02056795, -0.029294467, 0.029199356, 0.0015738049, -0.05159821, -0.040137224, 0.0025041183, -0.08174869, 0.0010714951, 0.050599534, 0.008138012, -0.0013285944, 0.02667889, -0.011365873, 0.03628519, 0.015051459, -0.0076802867, -0.014231119, 0.04203946, 0.01833282, 0.03317028, 0.038211208, 0.05297733, 0.073997065, -0.024015756, -0.079751335, -0.017999928, -0.04582016, 0.0017283617, -0.04054145, 0.03240938, 0.018879713, 0.04277658, -0.039043438, -0.018986715, -0.023575865, 0.01551513, -0.019616831, -0.057304922, 0.00021010071, 0.014314342, 0.021578513, -0.025799105, 0.007626786, 0.025061987, 0.003667753, 0.04639083, 0.040493894, -0.06334453, -0.0063665533, 0.04151635, 0.018237708, -0.055450242, 0.0253711, -0.016287914, -0.019474164, 0.024824208, -0.0012178783, 0.023052748, 0.048007734, -0.016418694, -0.014290564, -0.0038817548, 0.021126732, -0.0015440824, -0.023659088, -0.05392845, -0.03457318, 0.045154378, 0.041421235, -0.016846696, 0.06838546, 0.018225819, 0.018844048, 0.012721217, 0.03443051, -0.047318175, -0.01316111, 0.015550797, -0.008667072, 0.0028726768, 0.019545497, -0.0071512265, -0.029389579, 0.007389006, -0.006818335, -0.03806854, -0.019414717, -0.029365802, 0.012043545, -0.021352623, 0.013708004, 0.05064709, 0.03317028, 0.02551377, 0.04018478, 0.02867624, 0.016121468, 0.047651067, 0.0031565265, -0.04819796, -0.021661736, -0.013422668, -0.046034165, 0.022006517, -0.024824208, -0.024372427, 0.024729095, 0.005350045, 0.03160093, -0.009112909, -0.011009203, 0.0074603404, 0.012661773, -0.0034329453, 0.011805765, 0.061727628, -0.013101665, -0.036594305, -0.04008967, 0.007555452, -0.08293758, -0.03749787, -0.009873805, -0.014885014, 0.020532284, -0.02584666, 0.03621386, 0.014682901, -0.026607556, -0.040065892, 0.017346034, 0.04524949, 0.043585032, 0.01122915, -0.035429187, 0.029579803, 0.027059337, -0.02210163, -0.020698728, 0.065484546, 0.025822883, 0.09297189, 0.052739553, -0.03231427, 0.01681103, 0.05687692, -0.020663062, 0.018760825, -0.011294539, 0.031339373, 0.0032813607, -0.0021147537, -0.0077159535, -0.011294539, -0.023076527, 0.00570077, 0.04408437, -0.033051386, 0.06443832, -0.009499302, 0.019664386, 0.0014734915, 0.05602091, 0.033217832, -0.031814933, 0.045059267, 0.027083116, 0.023135971, 0.039947, 0.058921825, -0.01398145, 0.016561361, 0.036950976, -0.053310223, -0.002658675, 0.0100580845, -0.02972247, 0.037378978, 0.058446266, -0.0033021665, 0.06805257, -0.010723867, 0.012388326, 0.027202006, -0.040969454, -0.0032546106, 0.012507216, -0.01104487, -0.033669617, -0.04586772, 0.010236419, 0.07632731, 0.06296408, 0.04781751, -0.009719248, -0.05021909, 0.07295083, 0.019545497, -0.024871765, -0.003935255, 0.0013271084, -0.017548148, 0.042110797, 0.035714522, 0.009261522, -0.02843846, -0.034715846, -0.028961577, -0.09520702, 0.034715846, 0.044512372, -0.0039620055, -0.015729131, -0.0015069293, -0.024348648, 0.03502496, -0.00998675, 0.019414717, -0.0077040647, 0.026108218, -0.029793805, -0.090689205, -0.0064973324, -0.05326267, 0.014956348, -0.0277489, -0.03269472, 0.036166303, -0.04068412, -0.040042114, 0.039233662, 0.0034923903, -0.00014183192, 0.01245966, 0.016501917, 0.021733072, 0.0012973859, 0.018261487, 0.06581744, 0.03416895, 0.0023138945, -0.030530922, 0.008096402, -0.02187574, -0.0005398344, 0.029365802, 0.04018478, -0.096776366, 0.0049606804, 0.058208488, 0.061061844, -0.0066221664, -0.008506571, -0.030958926, -0.036094967, -0.0019884333, -0.0383301, 0.08360337, 0.0077397316, -0.03676075, -0.056639142, -0.015087127, 0.052121326, -0.023908755, -0.0491253, 0.019533608, 0.007418729, -0.03809232, -0.015420018, 0.00317436, 0.016038245, 0.028628685, -0.019307718, 0.017548148, -0.00022217547, -0.0212694, -0.0027240645, 0.029460913, -0.016834809, -0.020734396, 0.01987839, 0.0055283797, -0.009148576, 0.0041284515, 0.011995989, 0.023659088, -0.00025412714, 0.0305547, -0.039875668, -0.028890243, 0.022268075, -0.029318245, 0.01834471, -0.0063784425, -0.031672265, 0.03535785, -0.049172856, 0.037925873, 0.018035596, 0.018392265, 0.056258693, 0.030269364, -0.0037925872, 0.04234858, -0.034739625, -0.0017491675, 0.0128995525, -0.028581128, -0.026821557, 0.046699945, -0.035904747, -0.0035934467, -0.020758174, 0.03500118, -0.0024862846, 0.012007878, 0.016965587, 0.012530994, -0.0105574215, 0.0015663742, -0.00898213, -0.020663062, -0.008488738, 0.0026423277, -0.0029365802, 0.062916525, -0.00085675024, -0.053024888, 0.021423956, 0.0042324797, -0.03362206, 0.004785318, -0.10909336, 0.007531674, 0.05017153, -0.018523045, 0.028771352, -0.011728487, -0.07204727, -0.042966805, -0.016537583, -0.009968917, -0.00090133393, 0.0149087915, -0.0026022024, -0.097870156, -0.006259552, -0.0033735004, 0.046081718, -0.021828182, 0.025632659, -0.049648415, 0.0030941092, 0.032718495, 0.013660448, 0.078086875, -0.005136043, -0.0020047806, -0.027392229, 0.04161146, -0.042729024, 0.019248271, 0.008613572, 0.008791907, 0.015812354, 0.012447771, -0.059635166, -0.019379051, -0.01658514, 0.009707359, 0.012863886, -0.0371412, 0.024966875, 0.007305783, 0.06905124, 0.009725193, 0.010599033, 0.011062704, -0.012061379, -0.04149257, -0.008167735, -0.048364405, -0.050551977, -0.035762075, -0.0053470726, -0.01797615, 0.015538908, 0.03443051, 0.009927305, 0.033550724, 0.022541523, -0.0053589614, -0.005305461, -0.015657797, 0.01257855, -0.04408437, -0.0048061237, 0.0030212891, -0.031910043, 0.016668363, -0.0048863743, -0.039780553, -0.015336795, 0.010503922, 0.0056234915, 0.04123101, -0.030816259, -0.048697297, -2.900263e-05, -0.02608444, -0.0017892928, -0.027725121, 0.020484727, -0.01339889, 0.026821557, -0.014076563, -0.014694789, -0.005219266, -0.0033051388, -0.012269436, -0.0077278423, -0.00024130932, 0.052359104, 0.0064794985, -0.008459015, 0.039804332, -0.026940448, 0.027725121, -0.014801791, -0.0010692659, -0.014813679, 0.038972106, 0.0240752, -0.010765479, -0.011407484, 0.014718568, -0.058493823, 0.03452562, 0.017369812, 0.02644111, -0.0020478782, -0.034596957, -0.027344674, -0.015764799, -0.0022514772, 0.019367162, -0.006747001, 0.037283868, 0.07718331, 0.017476814, -0.03716498, -0.047318175, 0.014564011, 0.043418586, -0.017203366, 0.020235058, 0.0019795166, 0.05335778, 0.030174254, 0.0049487916, -0.06928902, 0.06286897, 0.022886302, -0.033574503, -0.030364476, -0.012019767, -0.018380376, -0.014480788, -0.024396203, -0.057875596, 0.019807056, 0.0031416651, -0.021935184, -0.036594305, -0.04539216, 0.010973536, 0.0046218443, 0.0041403403, -0.015645908, -0.018285263, 0.0025546465, -0.008809741, 0.02117429, 0.010616867, 0.049505748, 0.0291518, -0.033931173, -0.030031584, 0.004725873, 0.0029068578, -0.04334725, -0.026631335, 0.00023759401, -0.018392265, 0.042015687, 0.040921897, -0.051835988, 0.009790582, 0.062536076, 0.0010915578, 0.033883616, -0.028058013, -0.023837421, 0.032290492, 0.015907466, 0.055402685, 0.023920644, 0.03160093, 0.041088343, -0.072189935, 0.058969382, 0.03183871, 0.0047734287, -0.011764154, -0.014183563, -0.035215184, -0.0031357207, 0.009303133, -0.05911205, -0.020389615, -0.0069015576, 0.005724548, 0.005085515, 0.049695972, 0.026892891, 0.015420018, 0.018927269, 0.018439822, -0.010087807, 0.09777504, -0.027915346, 0.002056795, 0.027392229, -0.0011688361, 0.034882292, -0.007561397, -0.010242363, 0.0039887554, 0.0031684155, 0.06424809, 0.018701378, -0.01621658, -0.03852032, 0.029223133, -0.019616831, 0.020936508, 0.021305067, -0.0032040824, -0.0009771262, -0.00067692925, 0.04104079, -0.011276705, -0.026631335, 0.0020270725, -0.018832158, 0.029460913, 0.049695972, -0.06738678, -0.048126627, -0.051645767, -0.011009203, -0.011276705, 0.0016020412, 0.054879572, -0.03019803, -0.013458335, -0.041088343, -0.060633842, -0.020639284, -0.033455614, -9.436884e-05, 0.0013516294, -0.044155702, 0.013803115, -0.015895577, -0.008958353, 0.0012542882, -0.051550653, 0.0055164904, 0.022482077, 0.022577189, 0.005124154, 0.0128163295, -0.06981214, 0.017357923, -0.037093643, -0.010801146, -0.019557387, 0.0117700985, -0.009540914, 0.046628613, 0.034763403, 0.0076683974, -0.008090457, -0.06767212, -0.023112193, 0.024467539, -0.029365802, 0.035452962, 0.061299626, -0.013838783, -0.0064141094, -0.031125372, 0.009683581, -0.057304922, 0.026060663, -0.0277489, -0.001203017, -0.0022886302, -0.021328846, 0.015479463, -0.054023564, 0.048221737, 0.015479463, 0.06852813, -0.0145759, -0.00064869295, -0.04184924, 0.020437172, -0.009499302, 0.017809704, -0.027915346, 0.012150547, 0.017250922, 0.005980161, 0.012768773, 0.009445801, -0.021483403, -0.046367057, -0.038758103, 0.024705319, -0.038116097, 0.015610242, -0.013922006, -0.0028905103, -0.022874413, 0.018059373, -0.009927305, -0.01574102, -0.032052714, 0.046129275, 0.06206052, -0.018261487, -0.028343348, -0.01596691, -0.017785927, -0.008393626, -0.014647233, 0.020888953, -0.012281325, 0.029579803, -0.040517673, 0.0019423635, -0.043917924, 0.0027448703, 0.0019765443, -0.0059266607, 0.06886102, 0.022719856, -0.0043602865, 0.003750976, -0.033194054, 0.009291245, -0.0033972785, -0.06277386, -0.0012156491, -0.007674342, 0.01234077, -0.0059355777, -0.01739359, 0.024610206, 0.009903528, -0.014183563, -0.013969561, -0.014956348, -0.009392301, 0.019236384, 0.0028340376, 0.015384351, 0.02117429, 0.061632518, -0.04018478, 0.03621386, -0.029865138, 0.0655321, 0.02314786, 0.0025189794, -0.025323546, -0.01987839, 0.044013035, -0.0024952015, 0.008988075, -0.0045534824, -0.01658514, -0.036071192, 0.04945819, -0.004725873, 0.027011782, -0.014564011, 0.03799721, -0.01926016, 0.007977511, -0.0057215756, -0.016858585, -0.010747646, -0.0027701342, 0.0059088273, -0.026013106, 0.04643839, 0.0073533393, 0.011888988, 0.06077651, 0.028818907, 2.5891059e-05, -0.016977476, 0.004294897, -0.06353475, -0.033312947, -0.024467539, 0.020484727, -0.012875775, 0.019664386, 0.019486053, 0.07057303, 0.039447665, 0.014017117, -0.020615505, -0.029627359, -0.004972569, 0.019521719, -0.029009132, 0.0090118535, -0.01858249, 0.013208666, 0.014647233, 0.04251502, 0.013208666, 0.05735248, 0.045344602, -0.032480717, -0.036618084, -0.010147251, -0.039566554, 0.016490027, -0.0317436, 0.012150547, 0.018059373, 0.013149221, 0.006122829, -0.043109473, 0.00096820947, -0.0018799463, -0.029223133, -0.04862596, 0.023231084, 0.0030970816, -0.05197866, -0.03592852, 0.0024223814, 0.026536223, -0.007591119, -0.0016109579, 0.023040859, 0.008482793, -0.0045178155, -0.0032635273, 0.008007234, -0.0026259804, -0.06424809, -0.02760623, 0.016620805, -0.034715846, 0.031577155, 0.00396795, -0.022018407, 0.021376401, -0.02338564, 0.0010640644, 0.030863814, -0.035048738, -0.00887513, 0.005822632, -0.009160466, 0.006039606, -0.026631335, 0.028937798, 0.015622131, -0.02140018, -0.0058137155, -0.026512444, 0.042015687, -0.010914091, -0.0010900716, -0.027202006, 0.00026805955, -0.027178228, -0.04477393, 0.03630897, 0.04125479, -0.037426535, -0.004820985, -0.01773837, -0.008036956, 0.019985389, 0.039304994, -0.05102754, 0.01610958, 0.0371412, 0.022672301, 0.013315667, -0.03350317, 0.014647233, -0.014350009, 0.018439822, 0.016180914, -0.037402757, 0.027487341, 0.016882364, 0.044821486, 0.0022276992, -0.00038899283, -0.04841196, 0.026583778, 0.010022418, -0.055878244, -0.04817418, 0.028604906, 0.0850776, -0.03317028, -0.009202077, 0.03690342, -0.055878244, -0.00080473593, 0.03350317, 0.01751248, 0.026845336, -0.016965587, 0.015764799, -0.019474164, 0.003067359, -0.006616222, -0.007674342, -0.0056591583, 0.03452562, -0.008643295, 0.01596691, 0.0074960073, -0.03141071, -0.012198102, 0.013315667, 0.020603618, 0.023540197, 0.028272014, -0.04843574, 0.0128163295, 0.020841397, -0.030697368, -0.020544171, -0.023064638, 0.019414717, -0.009219911, 0.014397565, -0.041896794, 0.022137297, -0.054118674, 0.0012000448, -0.012120823, -0.09815549, -0.0033170278, 0.011098371, -0.02317164, -0.0126498835, -0.02384931, 0.03148204, 0.010218586, 0.009832193, -0.026702669, -0.064723656, 0.021697404, 0.031719822, -0.010016473, 0.015241683, 0.034692068, -0.009392301, 0.0036974754, -0.0140290065, -0.015883688, -0.006194163, -0.046248164, 0.031339373, -0.030245587, 0.036641862, 0.013922006, -0.017940484, -0.057304922, 0.009356634, -0.006794557, -0.0001413675, -0.0075197853, -0.027867788, -0.00634872, 0.04679506, 0.03892455, 0.0048536793, 0.0066102776, 0.04974353, 2.3940522e-05, -0.023944423, 0.03148204, 0.015099015], [-0.0073389537, 0.0007560193, -0.01630127, 0.029378362, -0.0008236595, 0.025567967, -0.012941811, 0.06227401, -0.0035003766, 0.041440852, -0.012423237, -0.03370733, -0.038284313, -0.017935907, -0.017011492, 0.035511065, -0.05041444, 0.023538765, -0.0029423456, -0.04883617, 0.018894142, -0.026063995, -0.012028669, -0.015376856, 0.022039408, -0.00015412789, 0.03260254, 0.01569251, -0.018657401, 0.0063976287, 0.024530819, 0.04123793, 0.022411428, -0.017969728, 0.006685099, -0.017496247, 0.00868612, 0.011222624, -0.05830579, -0.019784737, -0.047708835, 0.0052956585, -0.024057338, -0.03864506, -0.028837241, -0.011002794, -0.007958989, 0.0095090745, 0.015715057, -0.033188757, 0.02228742, -0.007772978, 0.03515032, -0.018172648, -0.038036298, 0.021667387, 0.022941276, -0.06971443, 0.061417233, -0.009559805, -0.0062116184, 0.0080717215, 0.037585363, -0.02376423, 0.020866979, -0.0013816905, 0.027980465, 0.025635608, 0.049512573, 0.0315203, -0.024981754, 0.027168784, -0.054517943, -0.050459534, 0.008111179, -0.07679409, 0.06894784, 0.00016592968, -0.0060143345, 0.01562487, -0.027078597, -0.053931728, -0.03959202, -0.0021292549, 0.00031265945, -0.0500086, 0.0077109747, -0.076072596, -0.028679414, 0.016966399, 0.034586653, -0.012975631, 0.030979179, 0.061417233, -0.029175442, 0.041756503, 0.0006249666, 0.013426566, -0.04748337, 0.000119867465, -0.008077359, -0.030911539, -0.058350883, -0.07972516, 0.04500323, 0.054157194, 0.08518147, -0.006645642, -0.034248453, -0.023448577, 0.00033344468, -0.013257464, 0.02218596, 0.016910031, -0.038757794, -0.00710785, 0.008161909, -0.06529527, -0.020540051, 0.017620252, -0.060921207, -0.005515489, 0.031069364, 0.05898219, -0.03911854, 0.013584392, -0.0071303966, 0.0009300517, 0.014339707, 0.026695304, 0.012795257, 0.014486261, 0.053841542, 0.023471124, 0.06326607, 0.034857213, 0.03542088, -0.009610535, -0.06944387, 0.00875376, -0.05880182, -0.022231055, -0.0250043, 0.06412284, -0.012829077, -0.00907505, -0.01966073, -0.017766807, -0.060876112, -0.020844432, 0.0029028887, -0.037111882, 0.0005608494, 0.02016803, -0.010348939, -0.05663733, 0.00860157, 0.00014241417, -0.0010131927, 0.046626594, 0.080131, -0.07205928, 0.020156758, -0.0073502273, -0.0029085255, -0.050730094, 0.02513958, 0.004295148, -0.04617566, 0.028589226, 0.009604898, -0.0060368814, 0.03968221, -0.022276148, -0.031633034, 0.00024043952, 0.026312009, -0.014869555, 0.020472411, -0.08418941, -0.033820063, 0.015196482, 0.04748337, -0.041440852, 0.061236862, 0.052443646, -0.0063863555, 0.004433247, 0.012772711, -0.05871163, -0.053616073, 0.019536722, -0.014723001, -0.01053495, 0.030392963, -0.051631965, -0.049151827, -0.008133725, -0.01757516, -0.018747589, -0.012479603, -0.035375785, -0.041959424, 0.03548852, -0.010591317, 0.0018995602, 0.053570982, -0.028701961, 0.06340135, -0.03384261, 0.035263054, 0.034834664, -0.0031762677, -0.015083748, 0.0002804247, 0.0031086274, -0.056682426, 0.010580043, -0.027845185, -0.04049389, 0.024034793, -0.013685852, 0.0033932796, -0.027664812, -0.010850604, 0.02006657, 0.006758376, -0.011149348, 0.02178012, 0.043740615, 0.014655361, -0.028318666, -0.023538765, 0.04256819, -0.07309643, -0.033887703, 0.0005087101, -0.054427754, 0.049106732, 0.030934084, 0.01767662, 0.027822638, -0.04425919, -0.017969728, 0.023448577, 0.06944387, 0.024981754, 0.026289463, -0.008077359, -0.0104503995, -0.00042979664, -0.012265409, 0.045093417, 0.03974985, 0.0015092203, 0.033098567, -0.012299229, -0.035578705, 0.023200564, 0.029220534, -0.037833378, 0.029491095, -0.024124978, 0.06809106, -0.014745547, -0.04829505, 0.030911539, -0.04473267, -0.014587721, -0.026762944, 0.05239855, -0.029896935, -0.026199276, 0.025342502, 0.024192618, -0.0141029665, 0.04815977, 0.028138293, -0.031475205, 0.057313733, -0.0033904614, 0.030122403, 0.026221823, 0.030776259, 0.059027284, -0.023944605, 0.0061101583, -0.028251026, -0.022975096, 0.031881046, 0.0029479822, -0.031745765, 0.0657462, 0.038036298, 0.04883617, 0.009881095, 0.02953619, 0.0010406715, -0.05253383, 0.021520834, -0.01606453, -0.004650259, -0.020224398, -0.024621006, -0.007913895, 0.011250808, 0.0030578973, 0.07273568, -0.00019640297, -0.037247162, 0.08739104, -0.020258218, -0.055194344, -0.045206152, 0.037743192, 0.027010957, 0.037156977, 0.056907892, 0.045702178, 0.01603071, -0.018161373, -0.04398863, -0.07133779, 0.024215166, 0.028521586, 0.029851843, -0.004334605, -0.048204865, -0.03684132, 0.011504458, -0.024192618, -0.021295367, -0.00084338785, -0.014339707, -0.006826016, -0.099295706, -0.012028669, -0.019920018, 0.022490341, -0.008201365, -0.014373527, 0.044755217, 0.027168784, -0.01935635, 0.018826501, -0.006493452, -0.02953619, 0.025658155, 0.02946855, -0.0048137223, 0.0012175223, 0.029896935, 0.032512356, 0.00904123, -0.019581817, -0.039141085, -0.039501835, -0.018679949, -0.008984864, 0.009238514, 0.06543055, -0.08207002, 0.022625623, 0.019750917, -0.022557983, -0.019987658, -0.013482932, -0.04358279, -0.052488737, 0.024350446, -0.055915836, 0.023380937, 0.020044025, -0.035308145, -0.028273573, -0.0011703151, 0.026943317, 0.0076376977, -0.045724727, -0.016414003, -0.021385554, -0.01784572, -0.041801598, 0.019051969, 0.024778834, 0.016786024, -0.031881046, 0.0041655046, 0.0116566485, -0.03995277, -0.0027661994, 0.053616073, -0.053165138, -0.0250043, -0.0061383415, 0.01804864, -0.020630239, -0.020799339, 0.02178012, 0.029716562, -0.0006291941, -0.018837776, 0.020325858, -0.012953084, -0.0036074733, -0.025522875, 0.041350663, -0.011273354, 0.012885444, 0.040877182, -0.01090697, 0.04392099, -0.014193153, 0.02113754, 0.053886633, 0.042432908, -0.056907892, 0.045228697, -0.0073445905, 0.008235185, -0.014745547, -0.04013314, -0.050459534, 0.035849266, -0.016932579, 0.0356238, -0.026244368, 0.036480576, -0.010630773, -0.03817158, 0.0047996305, 0.017079132, 0.04015569, 0.0153092155, -0.014497533, -0.07760577, -0.020382226, -0.0390509, 0.01082242, 0.034857213, 0.038532324, -0.010112199, 0.024237713, -0.008979226, -0.048926357, -0.04322204, -0.075621665, 0.03447392, 0.05898219, -0.030595884, -0.01114371, -0.027642265, -0.05555509, -0.041395757, 0.03986258, 0.001185816, -0.025793435, -0.002797201, 0.03609728, -0.0952373, 0.017518792, 0.018138828, 0.04644622, -0.012907991, 0.018905416, -0.049016546, 0.015500862, 0.049647853, 0.009514711, 0.039772395, 0.0047799023, -0.0010209432, 0.0074009574, 0.026898224, -0.00712476, 0.005752229, -0.018860321, -0.0082859155, 0.05920766, -0.043131854, -0.041057557, -0.058666535, 0.0036863869, 0.049061637, 0.014441167, -0.04130557, 0.020427318, 0.015500862, 0.06277004, 0.025117034, 0.04712262, 0.031903595, 0.04815977, -0.026424743, 0.02003275, -0.0060030613, -0.060515366, -0.035871815, 0.00043402414, -0.0082859155, 0.013133458, 0.022388881, -0.015715057, 0.012986904, 0.02164484, 0.034586653, 0.0174737, 0.00029751088, 0.016650744, -0.04002041, 0.024372993, 0.012626157, -0.029896935, 0.032083966, -0.016955124, -0.0008455016, -0.009401978, 0.00014681782, -0.027957918, 0.011566462, -0.024959207, -0.05212799, -0.009965645, -0.06331116, 0.016075803, -0.00534357, 0.015613596, -0.0060030613, 0.0033594596, -0.031091912, 0.0013380062, -0.008629753, -0.01969455, 0.018003548, 0.010416579, -0.0035736533, -0.010799874, 0.027777545, -0.05988406, 0.011769382, -0.018195193, 0.034789573, -0.01982983, -0.015917977, -0.038013753, 0.041147742, 0.028408853, -0.023335844, 0.0074065938, 0.040448796, -0.06349153, 0.014238247, -0.012051216, 0.030392963, 0.0028944337, -0.012693797, -0.016346363, -0.05501397, -0.0075193276, -0.012344323, 0.01586161, 0.017586432, 0.1000172, 0.04069681, 6.728784e-05, -0.032309435, 0.038893074, -0.005850871, -0.013460386, 0.025545422, 0.042996574, 0.025635608, 0.03918618, -0.021701207, -0.04241036, 0.05934294, 0.00069014065, -0.0318585, -0.028589226, -0.00029680628, 0.0284314, 0.021994315, 0.017552612, -0.06534036, 0.021081172, -0.0034242815, -0.030190043, -0.054698315, -0.013911319, 0.045521807, -0.015940523, 0.019874925, 0.033256397, -0.00020873321, 0.013031998, 0.013978959, -0.002296946, 0.025365047, -0.0047911755, 0.028972521, -0.03041551, -0.00036109964, -0.0043571517, 0.017530067, -0.05898219, -0.025906168, 0.05501397, -0.013494206, -0.024643553, 0.057268642, -0.06317588, -0.01794718, 0.038194124, -0.008545203, 0.008545203, 0.005935421, -0.03481212, 0.01791336, 0.023268204, 0.018375568, 0.027822638, -0.0047235354, 0.04270347, -0.012986904, 0.03670604, 0.011735562, 0.0012330231, 0.018837776, -0.018138828, -0.009943099, -0.0011519958, -0.0023025826, -0.022614349, -0.027191332, -0.014700455, 0.00220535, 0.025996355, 0.05239855, -0.021937948, 0.07156325, 0.0024928206, -0.010157293, -0.0051406496, 0.049783133, -0.037923563, -0.017462427, 0.043402415, 0.006899293, 0.046491314, -0.043875895, -0.029130347, 0.016740931, 0.02023567, 0.044890497, -0.015399402, -0.01804864, -0.026131636, 0.012851624, -0.036277656, 0.008607206, 0.020483686, -0.013956413, 0.003387643, 0.009266698, 0.029694015, 0.0040668626, -0.024530819, -0.0062059816, -0.0057381373, 0.04640113, 0.08527166, -0.06385228, -0.040877182, -0.015444496, -0.04644622, -0.01082242, 0.007795525, 0.07625297, -0.019502902, -0.007733521, -0.031745765, -0.048745986, -0.04274856, -0.038622513, -0.006640006, -0.0033256395, -0.028408853, 0.0039062174, -0.03720207, -0.011701742, 0.013381472, -0.039276365, -0.04322204, 0.073592454, 0.014396073, 0.029513642, 0.009571078, -0.045747273, 0.045409072, 0.0069782063, -0.011397362, 0.0010463082, -0.028408853, -0.044913042, 0.010174203, 0.0421398, -0.006690736, -0.012907991, -0.091494545, -0.025184674, 0.044417016, -0.022039408, 0.028769601, 0.040178236, -0.0049405475, 0.023380937, -0.02037095, -0.0138549525, -0.066828445, 0.020517506, -0.036976602, -0.015004835, -0.0058790543, -0.026920771, 0.023471124, -0.083467916, 0.024012245, 0.0020602054, 0.042523094, -0.019604363, 0.020923346, -0.019412717, 0.00537739, -0.01771044, -0.005783231, -0.011600282, 0.0022363516, -0.00045340022, 0.0040189507, -0.012885444, 0.019006876, -0.026514929, -0.04335732, -0.02026949, 0.007834981, 0.0008687529, 0.02816084, 0.012197769, -0.026808036, -0.035601255, 0.0036722952, -0.014294613, 0.02994203, -0.014745547, -0.0015557229, 0.027304064, 0.009627445, -0.0346092, -0.004517797, -0.0051547415, -0.014373527, 0.013978959, 0.009633081, -0.025658155, 0.044146456, -0.01609835, -0.0077109747, -0.051361404, 0.031610485, 0.037021697, 0.02480138, 0.045521807, 0.03404553, -0.009582351, -0.0050250976, -0.044777762, 0.026447289, -0.041057557, -0.04766374, 0.0012844579, -0.0080717215, 0.03165558, 0.007829345, 0.017090406, 0.028769601, 0.0034721931, -0.005278748, -0.0028916155, -0.0072149467, 0.0045572533, 0.05118103, 0.031407565, 0.026176728, 0.022997644, 0.066602975, -0.018488301, 0.03657076, -0.020878252, 0.016819844, 0.008111179, 0.0068880194, -0.0217463, -0.0014951286, 0.0318585, 0.020404771, 0.028701961, -0.024778834, 0.006718919, -0.025026847, 0.030054763, 0.0037314803, 0.0057465923, 0.008573386, 0.0020108847, -0.030843899, 0.024756286, 0.01842066, -0.016143443, 0.030956632, -0.00040689763, 0.000798999, 0.0022856726, 0.015038655, 0.015579776, 0.021239, 0.03981749, 0.030573336, -0.0121526765, -0.055104155, 0.007626424, -2.03669e-05, 0.00707403, -0.04053898, 0.040245876, 0.030888991, 0.01609835, 0.00022687626, 0.028115746, 0.048249956, 0.014982288, -0.020021478, -0.024012245, -0.010095289, -0.012975631, -0.06957915, 0.00909196, -0.014621541, 0.0069782063, 0.0009807819, 0.025026847, 0.042117253, 0.032828007, 0.025342502, 0.0016388639, -0.036255106, 0.0111606205, -0.053886633, -0.008161909, -0.0047404454, 0.027236424, 0.033887703, 0.0019827012, -0.0062285285, -0.020855706, -0.0064145387, 0.0030578973, -0.029310722, -0.02167866, 0.015072475, -0.012423237, -0.04739318, -0.014858281, 0.006966933, 0.033481862, 0.025883622, -0.023967152, -0.025432687, -0.04640113, 0.0028338395, -0.020292038, 0.011780655, -0.0024392721, -0.066061854, -0.040877182, 0.01791336, -0.02389951, 0.018477028, 8.477034e-05, -0.033301488, 0.017079132, -0.009886731, 0.0050081876, -0.0034017346, -0.0222536, 0.006008698, 0.03616492, -0.034428824, -0.014937195, -0.003320003, 0.025319954, -0.0043402417, 0.0321967, -0.017530067, -0.03740499, 0.026965864, 0.009334338, -0.032918196, -0.012378143, 0.007913895, 0.017981, -0.014971015, 0.056772612, 0.049783133, -0.015230302, 0.012705071, 0.006933113, -0.00087368494, -0.03239962, -0.0023110376, -0.04053898, 0.0013253237, 0.018443208, -0.0049095456, 0.04779902, -0.015388129, -0.011746835, -0.018679949, 0.0047911755, 0.04685206, -0.024079885, 0.022580529, 0.00921033, 0.01767662, -0.00068661774, -0.016549284, -0.02507194, 0.0010984475, 0.004844724, -0.050324254, -0.026853131, 0.032286886, 0.07165344, -0.005935421, -0.027394252, -0.012220317, -0.053390607, -0.025297407, 0.015095022, 0.00024043952, -0.013336378, 0.013595666, 0.020788066, -0.022028135, -0.0061552515, -0.0031847227, 0.012299229, 0.00066829857, 0.037044242, 0.018882869, 0.03713443, 0.057990134, -0.01613217, -0.005374572, 0.011487548, 0.04042625, -0.0032185428, 0.021599747, -0.030550791, -0.0054563037, 0.018105008, -0.037224617, -0.008624116, -0.0009772589, 0.0069218394, -0.012276683, 0.0062623485, -0.008793216, 0.009182147, -0.024530819, 0.034270998, -0.021836488, -0.053029858, -0.01952545, -0.018465756, 0.003303093, -0.011543915, 0.021701207, 0.031542845, 0.011132438, -0.009029957, 0.005743774, -0.026740396, 0.0568628, 0.023403484, -0.03986258, 0.0029592556, 0.0017360966, -0.020934619, -0.0023519036, -0.03959202, -0.01801482, 0.009903642, -0.032174155, 0.048791077, -0.005693044, 0.04802449, -0.0010124882, 0.0008962317, -0.049828228, 0.0013971913, -0.03575908, 0.016289998, -0.024621006, -0.039298914, 0.014880828, 0.06308569, 0.03129483, -0.0029620738, 0.025951263, 0.075621665, 0.02329075, -0.022095775, 0.024823926, 0.008094269], [0.0035326483, 0.0029965204, -0.008282452, 0.0429366, 0.00723338, 0.03136783, 0.002816845, 0.06709424, -0.011423872, 0.039760403, -0.018153, -0.0004346983, -0.031112807, -0.020054081, -0.019231053, 0.011951306, -0.036607392, 0.0037326096, -0.0019894692, -0.034173083, -0.022859335, -0.043608934, -0.035193175, 0.0017779161, 0.012901845, -0.010056021, 0.0044744946, 0.014536312, -0.005845243, 0.033825323, 0.026962887, 0.008404167, 0.059211705, -0.025687773, 0.016089633, -0.005120746, 0.013353932, 0.04560275, -0.032642946, -0.028353922, -0.055177703, -0.026197817, -0.017237237, -0.013840795, 2.2957503e-05, -0.010710966, 0.002822641, -0.009285156, 0.00048867334, -0.054760396, -0.0072217877, -0.019822244, 0.008467923, -0.014223329, -0.037557933, 0.028516209, 0.050726395, -0.041220993, 0.04690105, -0.028214818, -0.043724854, 0.002835682, 0.00079984486, 0.0054743006, 0.0016040368, -0.01701699, 0.0090880925, 0.021375565, 0.04145283, 0.025108173, -0.01802549, 0.0110007655, -0.037789773, -0.053647567, -0.028006162, -0.07530134, 0.07646053, -0.013771242, -0.026522392, -0.030023163, 0.014200144, -0.05828435, -0.025826875, -0.0039731427, 0.030788232, -0.05234927, 0.037210174, -0.11081909, -0.0023488197, 0.009864754, 0.041360095, -0.023288237, 0.022407249, 0.03966767, -0.022499984, 0.012183145, -0.006410351, 0.013295972, -0.013388708, -0.011626731, -0.028284369, -0.017700914, -0.06551773, -0.10414212, 0.059026234, 0.061808303, 0.056893315, -0.02710199, -0.0015113011, -0.08758881, 0.028608944, -0.020123634, 0.0004234686, 0.028261187, -0.0098589575, 0.02431992, -0.029188542, -0.047411095, -0.04599688, 0.035239544, -0.03475268, -0.056476004, 0.06102005, 0.06398759, -0.0047179256, 0.008236084, 0.031646036, 0.025386382, 0.009198216, 0.0063234116, -0.02858576, 0.030788232, 0.023044806, 0.044258084, 0.064033955, 0.02134079, 0.056476004, 0.023195501, -0.054111246, 0.02181606, -0.035169993, -3.830779e-05, 0.00065204746, 0.0348686, -0.029559486, -0.044814497, 0.0076043224, -0.027588852, -0.08364755, -0.002822641, -0.020714823, -0.020506168, 0.0062886355, 0.014246512, 0.056568738, -0.05823798, 0.030880967, 0.029675404, -0.037210174, 0.024829967, 0.07692421, -0.038948968, -0.013655323, 0.031877875, 0.014999989, -0.05782067, 0.04803706, -0.024041714, -0.045579568, 0.04785159, -0.025664588, -0.021433525, 0.03053321, 0.011655711, -0.048408, 0.032689314, 0.0341499, -0.0016851805, -0.026823783, -0.07576501, -0.020795967, 0.057496097, 0.019775875, -0.063709386, 0.02888715, 0.04928899, 0.02288252, 0.012588863, 0.021271236, -0.052581105, -0.01215996, -0.00091721345, -0.031576484, 0.006184308, -0.006178512, -0.07284384, -0.013945121, 0.008230288, 0.0062828395, -0.0011135521, -0.024064898, -0.027125174, -0.014188553, -0.012785926, -0.015591179, 0.051514648, 0.050401818, -0.020749599, 0.0031617058, -0.01796753, 0.004161512, 0.0013613302, 0.002051776, -0.0021169807, 0.0064741066, 0.011916529, -0.057727937, 0.0047700894, -0.007018929, -0.020135226, 0.04850074, 0.0019199175, 0.015278197, -0.0040108166, -0.021375565, 0.02740338, 0.035610486, -0.0013272788, 0.030092714, 0.016286697, -0.00018094317, -0.044721764, -0.018639863, 0.037627485, -0.06876348, -0.044582658, -0.01838484, -0.032040164, 0.035911877, 0.026522392, 0.011939714, -0.0075695463, -0.04887168, -0.0065146787, 0.02027433, 0.0724729, 0.016228737, 0.07080366, -0.019787466, 0.029559486, 0.01779365, 0.008578046, 0.038183898, 0.025200909, 0.012843886, 0.02911899, -4.1522744e-05, -0.015915753, -0.008236084, 0.054945868, -0.018234145, 0.030927336, -0.0121715525, 0.075208604, 0.006879825, -0.035564117, 0.018547127, 1.3256034e-05, -0.0462519, -0.020958254, 0.056754213, -0.027009254, 0.01654172, 0.029629037, 0.0031530117, -0.027357014, 0.03695515, 0.018581904, -0.06352391, 0.053693935, 0.0017518342, -0.01530138, 0.0019039786, 0.0044744946, 0.017758874, 0.004862825, 0.006404555, -0.058979865, -0.023021622, 0.032527026, -0.016437393, 0.0077666095, 0.049938142, 0.035077255, 0.049706303, 0.01090803, 0.0153129725, 0.012878662, -0.051375546, 0.017283605, -0.004604904, 0.02763522, 0.0024009836, -0.040455922, 0.0050338064, 0.03384851, -0.007424647, 0.07386394, -0.018628271, 0.008751926, 0.06208651, 0.010774722, -0.029559486, -0.049799036, 0.037998427, -0.009980673, 0.015324565, 0.047897957, 0.03704789, -0.028377106, -0.036375556, -0.006903009, -0.09959807, 0.025757324, 0.02128283, 0.008966377, -0.023195501, -0.02015841, -0.033639852, 0.010450147, -0.0710355, 0.0011331136, -0.017944345, -0.0024748824, -0.020981438, -0.10970626, -0.015278197, -0.009064909, 0.010397984, 0.009018541, -0.023415748, -0.0057988754, 0.026638312, -0.04636782, 0.035169993, -0.023728732, -0.012241105, 0.026893334, 0.04363212, -0.026452841, 0.0013287278, 0.029953612, 0.066816024, 0.079057135, -0.035680037, -0.005830753, -0.062040143, -0.023473708, -0.013029357, -0.012681599, 0.06528589, -0.062457453, 0.03391806, 0.031692404, 0.019404933, -0.009406871, -0.05828435, -0.024876336, 0.0070305206, 0.01809504, -0.049242623, 0.033894874, -0.020343881, -0.06621324, -0.028307553, -0.016622864, 0.047271993, -0.01992657, -0.039227176, -0.015811427, -0.0073319115, -0.011226809, -0.03048684, 0.0062538595, 0.04217153, 0.027055623, -0.047225624, -0.015463668, 0.044559475, -0.024459025, -0.019972939, 0.03380214, -0.021618996, -0.01802549, 0.035610486, 0.03296752, -0.010965989, 0.004642578, 0.0040195105, 0.035842326, -0.008323024, -0.00032819723, -0.0019474485, -0.032156084, 0.008653394, -0.04031682, 0.022071082, -0.027704772, 0.038253453, 0.04298297, 0.0042919214, 0.019532444, 0.003906489, 0.013539404, 0.05527044, 0.06667692, -0.013794426, 0.02721791, -0.013666915, -0.022442024, 0.033408012, -0.05401851, -0.023380972, 0.05105097, 0.005164216, 0.041499197, -0.053322993, 0.019938162, -0.012901845, -0.0014526169, -0.008653394, -0.006879825, 0.032341555, 0.017886387, 0.00981259, -0.07187012, 0.010513903, -0.02763522, -0.012785926, 0.07038635, 0.016912661, -0.04606643, 0.009789406, 0.04233382, -0.06055637, -0.038856234, -0.06064911, 0.025710955, 0.03600461, -0.005671364, -0.031530116, -0.030208634, -0.058748025, -0.038091164, 0.008537475, -0.043562565, 0.03375577, 0.025989164, 0.012148369, -0.10553316, 0.011168849, -0.0041383277, 0.05105097, -0.01802549, 0.02277819, -0.03350075, 0.010380596, 0.008583843, 0.01275115, 0.030579576, -0.0032051755, -0.006572638, -0.027125174, 0.024690865, 0.0021807365, -0.0026255779, -0.022743415, 0.034312185, 0.024273554, -0.022326104, -0.028910335, -0.03753475, 0.01630988, 0.05870166, 0.019346973, -0.017758874, 0.026105082, 0.0025313932, 0.0749304, 0.04803706, 0.014374024, 0.052395634, -0.00412094, 0.0044107386, 0.0067928857, -0.0402009, -0.020691639, -0.04499997, 0.020204777, -0.015428892, 0.019416524, 0.07210196, 0.0011345625, 0.023670772, -0.003109542, 0.005401851, -0.031020071, -0.03261976, 0.020969847, -0.038554844, 0.014594271, 0.032457475, -0.0308346, 0.0052656457, -0.027125174, -0.021537852, -0.012820702, 0.012299065, 0.030741865, 0.019544035, -0.004561434, -0.02744975, -0.017515443, -0.021943571, 0.003352973, -0.018918071, 0.00030736794, -0.0060741846, 0.008618618, -0.04363212, 0.017654547, -0.013017765, -0.020587312, 0.012855478, -0.01837325, -0.002040184, 0.007853549, 0.040942784, -0.03308344, 0.006821865, -0.02299844, 0.070896395, -0.009702466, -0.014455168, -0.043863956, 0.04013135, 0.027496116, 0.011551383, -0.015081134, 0.028307553, -0.06616688, 0.019289013, -0.007129052, 0.039412647, 0.01429288, -0.053554833, -0.026684681, -0.018964438, 0.00904752, -0.024644496, 0.0014453719, -0.006711742, 0.10571863, 0.039296728, -0.02740338, -0.035610486, 0.0056076082, 0.020077266, 0.0025386382, 0.034961335, 0.022859335, 0.029582668, 0.029721772, -0.044234898, -0.016379433, 0.052998416, 0.012855478, -0.01814141, -0.0052917274, -0.03326891, -0.015915753, 0.0019329585, 0.031970613, -0.038276635, 0.02283615, 0.024064898, -0.026012346, -0.04588096, -0.040293634, 0.033523932, 0.0029791323, 0.033060256, 0.010826886, -0.0062074917, 0.003564526, 0.032040164, -0.007215992, 0.011458647, -0.020459801, -0.0076390984, -0.0521638, 0.008740334, 0.011916529, -0.005146828, -0.052210163, -0.016275104, 0.062874764, -0.021595811, 0.0116151385, 0.04013135, -0.050633658, 0.03681605, 0.040780496, 0.009464831, 0.020749599, -0.035610486, -0.012913438, 0.036259636, 0.014258104, 0.027936611, 0.02756567, -0.011997674, 0.064961314, -0.03878668, 0.03125191, 0.020680048, -0.016031673, 0.023682363, 0.00083606975, -0.0026502106, -0.023995347, -0.022233369, -0.022279738, -0.012936622, 0.015440484, 0.045973692, -0.015162277, 0.029837692, -0.030904151, 0.056197796, 0.01779365, 0.012658414, 0.010699375, 0.101730995, -0.039227176, -0.010426964, 0.01897603, -0.0093025435, 0.043493014, -0.014768151, -0.01950926, 0.028307553, 0.009024337, 0.06125189, 0.0019126725, -0.018465985, -0.030741865, 0.02888715, -0.05248837, 0.014362432, -0.03403398, -0.004894703, 0.0038891009, 0.024690865, -0.0008505597, 0.006711742, -0.007946285, -0.0075347708, 0.014930438, 0.028122082, 0.09421941, -0.051746488, -0.050401818, -0.03326891, -0.052395634, -0.021491485, 0.008960581, 0.054760396, -0.020807559, -0.025270462, -0.016692415, -0.035216358, -0.006607414, -0.008039021, -0.011029745, 0.0004919336, -0.047271993, 0.014362432, -0.027704772, -0.009383688, 0.015428892, -0.031970613, -0.014918846, 0.032132898, 0.01665764, -0.0020908988, -0.000781008, -0.03255021, 0.013052541, -0.008862049, -0.0001782263, -0.006190104, -0.0006332105, -0.015046357, 0.051561017, 0.047063336, -0.017225645, -0.0057814876, -0.05568775, -0.0589335, 0.02116691, -0.0070768883, 0.000119994846, 0.041081887, 0.011348524, 0.013481444, -0.020888703, 0.015023174, -0.10061817, 0.042264268, -0.0014968112, -0.044930417, -0.02585006, -0.025780508, 0.0005517046, -0.053925775, 0.029768141, -0.017805243, 0.02573414, -0.014037858, 0.01655331, -0.0167156, 0.023311421, -0.0070247245, 0.014014673, -0.01707495, -0.012519311, 0.011070317, 0.017747283, 0.019428117, 0.050958235, -0.020923479, -0.028655313, -0.031646036, 0.017503852, -0.0012164308, 0.029513117, -0.027032439, -0.008438943, -0.011064521, -0.0017083643, -0.035169993, 0.0144088, -0.013353932, -0.003619588, 0.033060256, 0.030463658, -0.012681599, 0.0014881172, -0.008311432, -0.012009265, 0.017538628, 0.0025024132, -0.03361667, 0.028353922, 0.033523932, -0.0075637507, -0.021363974, 0.026290553, 0.02870168, 0.025479117, 0.02591961, 0.020378657, 0.007511587, 0.0119860815, -0.00022169614, 0.016854702, -0.012658414, -0.059397176, -0.011928122, 0.01435084, -0.004825151, 0.011192032, -0.017005397, 0.014918846, 0.01956722, -0.004132532, -0.006636394, -0.00762171, -0.0031848897, 0.022233369, 0.023902612, 0.03605098, 0.020946663, 0.057913408, -0.015092725, 0.034961335, -0.025224093, 0.041151438, -6.452553e-06, -0.013458259, -0.041244175, -0.0040340004, 0.032040164, 0.004399147, -0.0004346983, -0.036375556, -0.013632139, -0.017098133, 0.03345438, 0.009122868, 0.013748058, -0.02135238, 0.045857772, -0.031228727, 0.016854702, 0.0133423405, -0.005969857, 0.028840784, 0.009476423, 0.0047758855, -0.058748025, 0.010131368, -0.0119860815, 0.015197053, 0.047944326, 0.011591955, -0.011951306, -0.0550386, -0.022140633, -0.017816834, -0.039041705, -0.053833038, 0.024088083, 0.031460565, 0.027612036, -0.011081909, 0.053322993, 0.0117716305, -0.0059524686, -0.016506944, -0.020019306, 0.0004524485, 0.029652221, -0.049891774, 0.032689314, -0.014037858, 0.02721791, 0.008682374, 0.030510025, 0.052627474, 0.023740323, -0.012484536, 0.004865723, -0.025896426, -0.016275104, -0.03310662, 0.0041760015, 0.003599302, -0.001164267, 0.019149909, -0.020413432, 0.006769702, -0.03600461, -0.009493811, -0.025942795, -0.012612047, -0.06945899, -0.02935083, 0.0038833048, -0.046692394, -0.00061328686, 0.023948979, 0.04525499, 0.026754232, -0.023763508, 0.031854693, -0.031715587, 0.014258104, -0.0018547127, -0.009470627, 0.01861668, -0.05485313, -0.025942795, 0.016750375, -0.026221002, 0.013064133, -0.025131358, -0.0099864695, 0.015023174, -0.014872478, 0.012426576, -0.0030052143, 0.007181216, 0.0054453206, 0.06435853, -0.026731048, 0.0036891396, -0.01547526, 0.030231819, 0.003613792, -0.00916344, -0.01370169, -0.019764284, 0.0078883255, -0.0034573006, -0.014455168, -0.009412668, 0.0017315482, -0.013516219, -0.046808314, 0.040595025, 0.035169993, -0.035054073, 0.024574945, -0.005390259, -0.030092714, -0.01796753, 0.016170777, -0.023323013, 0.0061495323, 0.0013164114, 0.019277422, 0.06839253, -0.02360122, 0.010965989, 0.027241094, 0.0029704385, 0.006132144, -0.03982996, 0.012252696, 0.025432749, 0.021155318, 0.010664598, -0.015765058, -0.025200909, -0.009818385, -0.0016040368, -0.044860866, -0.014907254, 0.030996887, 0.07664601, -0.02893352, -0.017121317, 0.016460575, -0.060092695, -0.034010794, 0.018871702, 0.014849294, -0.005894509, -0.010299452, 0.023380972, -0.020054081, -0.013226421, 0.0055467505, -0.00020774956, -0.022349289, 0.029768141, 0.04933536, 0.030394105, 0.026476026, 0.008780906, -0.011673098, 0.0076159146, 0.013748058, -0.015463668, 0.02277819, -0.0029849284, 0.017955938, 0.00910548, -0.03315299, 0.0024966174, 0.029559486, 0.019486075, -0.0077724056, 0.018790558, -0.012635231, 0.016136002, -0.038925786, 0.014258104, -0.0015779549, -0.053647567, -0.026429657, -0.012310656, -0.009673486, 0.008601231, -0.016217144, 0.042426556, 0.0082129, 0.0016982214, 0.03570322, -0.039157625, 0.002551679, 0.029744957, 0.0057669976, -0.014999989, 0.035448197, -0.0029269685, 0.0085026985, -0.040710945, -0.003326891, 0.000515842, -0.017816834, 0.009969081, -0.018164594, 0.05211743, -0.0052685435, 0.036213268, -0.035100438, -0.012496128, 0.018802151, -0.0045933123, 0.007488403, -0.030695496, 0.018628271, 0.059350807, 0.04998451, 0.029072624, 0.01861668, 0.08350844, -0.0083578, 0.0067291297, 0.014768151, -0.008334615], [-0.02792528, -0.012535485, -0.024564363, 0.020684479, -0.011806463, 0.003024209, -0.045743093, 0.018003156, 0.033757463, -0.0013213538, -0.0017839436, -0.0035400854, 0.0055418094, -0.006585918, -0.0012943244, 0.04554539, -0.058667805, -0.007982182, -0.009761492, -0.038897693, 0.0037007176, -0.02792528, -0.047250565, 0.0076362053, 0.020993385, 0.011324567, -0.011627296, 0.012109193, -0.042950567, 0.008649424, 0.009495831, 0.019893674, 0.005816737, -0.028048845, 0.0024094821, 0.004408117, -0.0012124638, 0.025997696, -0.021438213, 0.032348845, -0.05589999, 0.04188792, -0.019794824, -0.05263792, -0.026615512, -0.03706896, -0.012288359, -0.009557613, -0.03259597, 0.0043834043, 0.0040034475, 0.0015615298, 0.036080454, -0.008791521, -0.052489642, 0.03531436, 0.07107355, -0.07497814, 0.053824127, 0.028716085, -0.045298267, 0.019078156, 0.03528965, -0.024428442, 0.0040219817, 0.024477867, -0.0088718375, 0.02504626, 0.006851579, 0.032249995, -0.031113211, 0.006703303, 0.008637067, 0.01574195, 0.016841663, -0.061682746, 0.07072757, 0.033559762, -0.0067156595, -0.0051958323, -0.018855743, -0.035561487, -0.013011204, -0.044161484, 0.016891088, -0.035437923, 0.046237346, -0.09830687, -0.024230743, 0.011577871, -0.010496693, -0.005263792, 0.035981603, 0.009341377, -0.023415225, 0.010156894, -0.012214221, 0.021660628, -0.035339072, -0.006765085, -0.002071228, -0.03687126, -0.08965745, -0.07794366, 0.032052293, 0.04717643, 0.083232164, 0.01030517, -0.008748274, 0.021512352, 0.018200858, -0.026170684, -0.031879302, 0.00657974, -0.037884474, 0.020808041, 0.00681451, -0.052983895, 0.017545974, 0.027085051, -0.09143676, -0.025948271, 0.035339072, 0.0067218374, -0.028592523, 0.009032469, 0.0032466229, 0.018942237, -0.0016619249, 0.034424704, -0.012127727, 0.045965508, 0.045075852, 0.047522403, 0.045298267, 0.020956317, 0.0676632, -0.05120459, -0.06489539, 0.024156604, -0.050908037, 0.03766206, -0.018299708, 0.028024131, -0.02477442, 0.016063215, -0.024935052, -0.0013105421, -0.025330454, 0.022970397, -0.014728732, -0.0353885, -0.0057889353, 0.021697696, 0.036500566, -0.04146781, -0.017237065, 0.038527004, -0.02205603, 0.021512352, 0.020560915, -0.052094243, -0.0009406248, 0.036228728, 0.011268963, -0.04102298, 0.0063140793, -0.029951718, -0.07665861, 0.048659183, -0.047052864, 0.0026612421, 0.029877579, -0.019597122, 0.008439366, -0.0076856306, 0.00913132, -0.012127727, 0.0019275858, -0.07458274, -0.0377362, 0.079624124, 0.06024941, -0.038823556, 0.020548558, -0.0015700248, 0.018015513, 0.0091869235, 0.047448266, -0.032274704, -0.03672298, 0.023514075, -0.011670544, -0.0050135767, -0.0036914505, -0.06163332, -0.0125663765, -0.011472843, 0.0066785906, -0.015927296, -0.006616809, -0.055010334, -0.00456566, -0.005529453, -0.004408117, 0.057877, 0.02537988, 0.010756176, 0.026813213, 0.0045347693, 0.032299418, 0.03716781, 0.0038366371, -0.02084511, -0.0072222687, -0.009180745, -0.031805165, 0.033658613, 0.0024851647, -0.024082467, 0.056740217, 0.009619394, -0.0010950788, -0.0040436056, 0.0059711915, 0.019634191, 0.019251145, 0.016903445, 0.025997696, 0.021759478, -0.024181318, -0.023662351, -0.033559762, 0.0070678145, -0.0580747, -0.024057753, -0.032422982, -0.0024048486, 0.056542516, 0.03289252, 0.034795396, -0.0014734911, -0.0631655, -0.0233658, 0.016569825, 0.029754017, 0.051748265, 0.009335199, -0.025676431, -0.023341088, 0.027282752, -0.014605169, -0.0012943244, 0.028370108, -0.0016341232, 0.106066644, 0.058173552, -0.066625275, 0.029828155, 0.026541373, -0.014407468, 0.07033217, -0.009069539, 0.076510325, -0.016372124, -0.038823556, -0.012368675, -0.07730113, 0.0035678872, -0.0031307824, 0.045471255, -0.029828155, 0.032670107, 0.01184971, -0.008834768, -0.00012163252, 0.065735616, 0.049573552, -0.008859481, 0.05169884, 0.015494824, 0.0078647975, 0.023353443, 0.033683326, 0.0037532318, -0.025206892, 0.005683907, -0.042283323, -0.04833792, 0.034498844, -0.014568101, 0.0010394753, 0.027109765, 0.0063635046, 0.050537344, -0.0009135954, 0.018620973, 0.042159762, -0.035017807, 0.0021917021, -0.03126149, -0.014716377, -0.0047015795, -0.06405516, 0.021462927, 0.05545516, 0.049351137, 0.070035614, 0.0034381459, -0.046410333, 0.054862056, 0.018546835, -0.036475856, -0.016903445, 0.01574195, -0.015853157, 0.029111488, 0.0031014362, 0.025775282, -0.03595689, -0.038798843, -0.023143386, -0.07300113, 0.02037557, 0.028716085, -0.003713074, 0.010997124, -0.025898846, -0.011837354, 0.021994248, -0.009347555, 0.013480744, -0.04102298, 0.029902292, -0.014765802, -0.11002067, 0.007963648, -0.051649414, 0.019016376, -0.018806318, -0.0016155888, -0.018237928, 0.01644626, 0.004093031, -0.00025504216, -0.0055418094, -0.06761378, 0.026047122, -0.0030458327, 0.019992525, 0.0014742634, 0.01785488, 0.020684479, 0.019053444, -0.00490237, -0.0040219817, -0.0023492451, -0.00019731498, 0.009125141, -0.01409856, 0.06400573, -0.07458274, 0.04616321, 0.046608035, -0.02772758, -0.0658839, -0.04794252, -0.025775282, -0.00298714, -0.02622011, -0.024564363, 0.051105738, 0.02614597, -0.026541373, -0.043593094, 0.020338502, 0.04208562, 0.005850717, -0.03249712, 0.0067156595, 0.00054483645, -0.042283323, 0.0011143856, 0.020462064, 0.024663214, 0.048016656, -0.07344596, 0.025775282, 0.04319769, 0.011089796, 0.00758678, 0.009841808, -0.024675569, -0.04188792, 0.0027044893, 0.06425286, 0.023884766, -0.0041331886, 0.010855027, 0.01762011, -0.026343672, 0.0047417376, -0.006616809, -0.040405165, 0.025355168, -0.02313103, 0.029927004, -0.030520108, -0.016075572, 0.030618958, -0.013418962, 0.009440227, 0.007926579, 0.053626426, 0.028641948, 0.050710335, 0.00775359, 0.06672412, -0.02524396, 0.03921896, 0.031310912, 0.021401145, -0.022241374, 0.047052864, 0.015766663, 0.017904306, -0.02631896, 0.008266377, -0.01433333, -0.06830573, 0.00976767, 0.05703677, 0.010064222, 0.003410344, -0.019720685, -0.04569367, -0.049326427, 0.01386379, -0.025898846, -0.003444324, 0.002889834, -0.046781026, 0.04860976, -0.0056684613, -0.035981603, -0.042604588, -0.052588493, 0.017224709, 0.06291838, -0.01124425, -0.014456893, -0.040874705, -0.07043102, -0.05921148, 0.067070104, -0.038551714, -0.006598274, -0.013851434, 0.015482468, -0.0807609, 0.01752126, 0.0021608113, 0.058025274, -0.0047046687, 0.01587787, -0.010484337, 0.00983563, 0.08639538, 0.020733904, 0.06519194, -0.037217233, 0.013011204, -0.039663784, 0.03541321, 0.0057518664, 0.006925717, -0.029333903, -0.028963212, 0.0031292378, -0.02557758, -0.040701717, -0.00090355583, 0.013752583, -0.0026735985, -0.010465803, -0.028271258, 0.0028450424, 0.007055458, 0.05263792, -0.007877153, -0.008878015, 0.013011204, 0.03692068, -0.029803442, -0.015939651, -0.07557125, -0.015383617, -0.060545962, 0.02238965, 0.0062306738, 0.022636777, 0.0015136491, -0.034054015, 0.04324712, 0.03101436, -0.00020716141, -0.027604017, 5.4251963e-05, 0.033213787, -0.041541945, -0.011991808, -0.005544898, -0.028740799, 0.015420686, 0.009149854, -0.04898045, -0.006487068, 0.023934191, -0.013097698, 0.045421828, -0.007401435, -0.023575857, -0.01902873, -0.022315513, -0.042654015, -0.004871479, 0.015111778, 0.042258613, 0.012615802, -0.04280229, -0.011102153, -0.0067527285, -0.03951551, 0.013011204, 0.0013499279, -0.012220399, 0.02389712, 0.029185627, -0.014741089, 0.011373992, -0.01470402, 0.042308036, 0.0025670254, 0.025923558, -0.020968674, 0.049252287, 0.04188792, -0.025355168, -0.0071543087, 0.021462927, -0.030421257, 0.03118735, -0.003024209, 0.030495396, -0.0047201137, -0.052044816, -0.04727528, 0.00032435337, -0.0070245676, -0.036377005, 0.013690801, 0.0029160914, 0.11239308, 0.018200858, -0.030618958, -0.047621254, 0.025528155, 0.024860915, 0.0038860624, 0.03474597, -0.0017947553, 0.02997643, 0.015309479, 0.0075620674, -0.01920172, 0.058173552, -0.029062063, -0.024836201, -0.010904452, -0.019498272, -0.0064438204, 0.010830314, 0.013666089, -0.027851144, 0.014073848, 0.0379339, -0.023921834, -0.04356838, -0.044458035, 0.0330408, -0.006505602, 0.042975277, 0.011330744, 0.005853806, 0.03897183, -0.027678154, -0.030717809, 0.026294246, -0.0050352, 0.0075373547, -0.004025071, -0.0028512205, 0.01601379, 0.014691664, -0.065537915, -0.010873561, 0.025206892, -0.02977873, 0.012764078, 0.02477442, -0.032052293, 0.025355168, 0.043790795, -0.029581029, 0.025231604, -0.02809827, -0.003527729, 0.043420106, 0.010422555, 0.05159999, -0.0046923123, 0.0340293, 0.070035614, -0.0443839, 0.04514999, 0.0019831893, 0.011837354, 0.00025928963, -0.0016094106, -0.0067156595, -0.014395112, 0.0036636486, -0.032249995, -0.0069751423, 0.009180745, 0.0060638636, 0.034894247, 0.06415401, -0.0077288775, 0.017583042, 0.028048845, 0.026837924, -0.017237065, 0.076708026, -0.026912063, -0.035462637, 0.03625344, -0.0009591593, 0.03785976, -0.04176436, -0.019560054, 0.029877579, 0.009625573, 0.05911263, -0.010780889, -0.020536203, -0.026393097, 0.029581029, -0.03795861, 0.01681695, -0.008581463, -0.022550283, -0.005724065, 0.009798561, -0.0012317706, -0.002712212, -0.011065084, -0.036080454, -0.029655166, 0.011707612, 0.06983791, -0.059310332, -0.055603437, -0.03585804, -0.056344815, -0.012140083, 0.01661925, 0.0469293, -0.058420677, -0.0008178339, -0.023674708, -0.044655737, -0.01470402, -0.017101146, 0.011911492, 0.0017237065, -0.05263792, 0.008488791, -0.046682175, -0.0010371585, -0.024218386, -0.0422339, -0.019584766, 0.04591608, 0.037316084, 0.019881317, -0.04804137, -0.05609769, 0.05703677, 0.01268994, -0.006153447, -0.009242527, -0.02819712, 0.0076918085, 0.054713782, 0.005032111, 0.0019631102, -0.05130344, -0.055208035, -0.01198563, 0.018077295, -0.025108041, -0.0090818945, 0.04099827, 0.016508043, 0.009520544, -0.0075744237, 0.01184971, -0.06059539, 0.046682175, 0.004686134, -0.029136201, -0.00013032055, -0.04075114, 0.0034968383, -0.029482178, 0.030025855, 0.013913215, 0.05589999, -0.017545974, -0.0005784302, -0.028691374, -0.0018920613, -0.0005560344, 0.022117812, -0.0054491367, -0.012214221, 0.009162211, 0.029383328, -0.010255745, 0.03595689, -0.04794252, -0.070183896, -0.037340797, -0.0054676714, -0.015074709, 0.0026365295, -0.007401435, -0.010231032, -0.050067805, 0.008810055, -0.023551144, 0.011231894, 0.0024758975, 0.004760272, 0.04655861, -0.015284766, -0.042925853, -0.012862928, -0.023106316, 0.006968964, -0.006734194, -0.0118002845, -0.036475856, 0.037884474, -0.021969536, 0.0074508605, -0.046978727, 0.0028682107, -0.007951291, 0.02305689, 0.027851144, 0.035882752, -0.008655601, -0.00029539326, 0.015260054, 0.026121259, -0.0085258605, -0.08021723, -0.03850229, -0.02004195, 0.023773558, -0.0023847695, 0.00036837277, 0.02500919, 0.0060700416, 0.0018519034, -0.012961779, -0.003075179, -0.005063002, -0.0016001434, 0.0138885025, 0.032447696, 0.02420603, 0.043963782, -0.03165689, 0.016359767, -0.012004164, 0.04702815, -0.010787067, -0.0026133615, -0.020128444, -0.02950689, 0.0177931, 0.00016236976, 0.0032744245, -0.015692525, 0.0104781585, -0.013208905, 0.017434767, 0.011201004, 0.009279596, -0.012381032, 0.028913787, -0.03795861, -0.00092363486, 0.01540833, -0.0035369964, -0.030099994, -0.0052081887, -0.007457039, -0.023019822, 0.019263502, -0.007833906, -0.014543388, 0.041739646, 0.02557758, -0.0106079, -0.025775282, 0.007271694, -0.04089942, -0.03417758, -0.036129877, 0.015358904, 0.010014797, -0.0075311763, 0.0056437487, 0.04702815, 0.025330454, 0.0030118527, -0.03360919, -0.012677584, -0.022661489, 0.018200858, -0.043494243, 0.024045397, -0.015062353, 0.0120412335, 0.0111701125, 0.039490797, 0.030693097, 0.05580114, 0.06247355, -0.0212158, -0.037439648, -0.011330744, -0.0095020095, -0.0012333151, -0.019448847, 0.040528726, 0.017966088, 0.03484482, 0.029482178, -0.024601432, -0.017817812, -0.018855743, -0.0069071823, -0.04253045, 0.005946479, -0.020128444, -0.042950567, -0.021845972, -0.010348417, 0.04374137, -0.0006085487, -0.0074693947, 0.031212062, -0.017348273, 0.013085342, 0.004266019, 0.009415515, -0.007852441, -0.05743217, -0.045841943, -0.012634336, -0.011652009, 0.03437528, -0.0076856306, -0.0078647975, -0.0036451141, -0.0015769752, -0.008142814, 6.467761e-05, -0.01826264, 0.0028388642, -0.009409337, -0.027875856, -0.012516951, -0.016396835, 0.04166551, 0.0033547406, 0.013233618, 0.0024218385, 0.019411778, -0.0143703995, -0.011336923, -0.01892988, 0.02809827, 0.0100704, -0.0112751415, -0.011231894, 0.015420686, 0.0289385, -0.06252298, 0.031434476, -0.026121259, -0.035462637, -0.01013836, -0.004911637, -0.036549993, -0.020523846, 0.008674136, 0.03081666, 0.029185627, -0.0007101022, 0.012276003, 0.022809764, 0.010224855, 0.028543098, -0.033782177, 0.028889075, 0.030198844, 0.027406316, 0.02631896, 0.01540833, -0.05589999, -0.012652871, 0.002497521, -0.041195966, -0.025429305, 0.03625344, 0.06875056, -0.025268672, -0.01742241, 0.0059681023, -0.02491034, 0.008995401, 0.017867237, 0.01611264, 0.018064938, -0.0212158, 0.013974997, -0.013357181, -0.025429305, -0.015989076, 0.0019244967, -0.016421549, 0.050562058, -0.018237928, 0.045743093, 0.032274704, -0.010329883, 0.009829452, 0.0029006458, 0.037217233, 0.03044597, -0.009125141, -0.016792238, 0.033386774, 0.029383328, -0.056147113, -0.05293447, 0.037365507, 0.009761492, -0.002940804, -0.024700282, 0.003555531, -0.0015599853, -0.058321826, 0.014815227, 0.0028558543, -0.063066654, -0.010502871, -0.011003302, -0.022809764, -0.025701145, -0.026689649, 0.016285628, -0.025083328, 0.0013684623, 0.0051587634, -0.07033217, 0.010243389, 0.01362902, -0.044705164, 0.0140244225, 0.026763787, 0.0130482735, 0.014185054, 0.014135629, -0.021512352, -0.016656319, -0.06959079, 0.0269862, -0.05273677, 0.028048845, 0.02027672, 0.009582326, -0.06415401, 0.010465803, -0.0005811331, 0.039095394, 0.0017962999, -0.026862638, 0.019695973, 0.03548735, 0.027579304, -0.004500789, -0.013196548, 0.06410459, 0.045224126, 0.0006452315, 0.039194245, 0.012170974], [0.022951763, 0.010010993, -0.018264119, 0.032437608, -0.02363722, 0.02870076, -0.037501145, 0.042432014, 0.0062630894, 0.036086008, 0.0007296803, -0.022421086, -0.040884208, -0.013952372, -0.031221472, 0.009751182, -0.058507092, 0.0039773104, -0.033410512, -0.025649369, -0.017722387, -0.054880805, -0.03542266, -0.012769406, 0.011575383, -0.010563781, -0.010143662, 0.024919689, 0.0016556004, 0.017335435, 0.018330453, 0.026312714, 0.025074469, 0.016506253, 0.028324863, -0.005530645, 0.006931963, 0.051873636, -0.018164618, -0.004524571, -0.06001068, 0.014494104, 0.0011415074, -0.019811926, -0.009668265, 0.0016500725, -0.02595893, -0.03584278, -0.025361918, 0.02467646, 0.0066168737, -0.015511234, 0.003949671, -0.017224878, -0.015876075, 0.02682128, 0.07035887, -0.07951304, 0.049397144, -0.0010426965, -0.041127436, 0.0368378, 0.044731613, -0.022509532, -0.004361498, 0.008159152, 0.004267524, -0.00696513, 0.076550096, 0.040707316, -0.009657208, 0.018219896, -0.016561532, -0.0280153, -0.0033139647, -0.07088955, 0.08579271, -0.009845156, -0.010237636, -0.006744015, 0.01617458, -0.011354268, -0.030845577, -0.030690797, 0.02655594, -0.033543184, 0.0074626394, -0.09578712, -0.05669395, -0.010453223, 0.00549195, 0.012692015, 0.008927528, 0.0368378, -0.02655594, 0.030845577, -0.0028123094, 0.028258529, -0.019668201, 0.020154655, -0.009231562, -0.080087945, -0.03542266, -0.09048036, 0.042034008, 0.027617294, 0.060983583, -0.0008651134, -0.035312105, -0.054482795, 0.031066692, -0.045682408, -0.010160246, 0.03365374, -0.02540614, 0.042100344, 0.0005520971, -0.022188915, -0.029828446, 0.027440403, -0.060054902, -0.012039725, 0.033078842, 0.042697355, -0.029563108, 0.0023134183, -0.01500267, 0.030867688, 0.007855119, -0.0013764424, -0.043869264, 0.04727444, 0.03323362, 0.055323035, 0.047362886, 0.029231435, 0.07433894, -0.007390777, -0.06611346, 0.0044748196, -0.0878712, -0.0003589668, 0.00080637966, 0.02786052, 0.020696387, 0.005071831, -0.019170692, -0.028568089, -0.03898262, 0.02152557, -0.008186792, -0.048114676, 0.0013861161, 0.030757131, 0.021713518, -0.02210047, -0.0015588625, 0.029784223, -0.022177858, 0.045638185, 0.050900728, -0.05364256, -0.006141476, 0.04638998, 0.0038722807, -0.049662486, 0.03449398, -0.0045328625, -0.039491184, 0.03929218, -0.0063902307, -0.006185699, 0.054438572, -0.027926855, -0.018562624, 0.026135823, 0.0021503458, -0.034405533, -0.01181861, -0.093045294, -0.037479036, 0.058285978, 0.028501755, -0.004416777, 0.055588372, 0.050723836, 0.039380625, 0.009474788, 0.05669395, -0.04855691, -0.011420602, 0.02567148, -0.019712424, -0.0011739838, 0.0034715093, -0.019867204, 0.009646152, 0.010265275, -0.018264119, -0.021868298, -0.009004918, -0.022023078, -0.01747916, -0.03175215, -0.005450491, 0.045328625, 0.013255859, -0.00939187, 0.027948966, -0.0057489965, 0.023858335, 0.0351131, 0.00084438385, -0.014328267, -0.0083913235, -0.0005586615, -0.01893852, 0.010270803, -0.03073502, -0.003300145, 0.024632238, 0.017700275, 0.005292946, -0.013178469, 0.0037865986, 0.0003620762, 0.036351345, -0.032769278, 0.024322677, 0.065317445, -0.026113711, -0.0349141, -0.032017488, 0.02074061, -0.09101103, -0.0510334, -0.019524476, -0.041879226, 0.011497993, 0.021879353, 0.041989785, -0.012194506, -0.020397881, -0.026511718, 0.047937784, 0.04263102, 0.045638185, -0.013897093, -0.012216617, -0.0037921264, 0.022089412, -0.03730214, -0.0034355782, 0.07318915, 0.016439918, 0.07624054, 0.0308898, -0.016550476, 0.018949576, 0.03336629, -0.028921874, 0.044134602, -0.009972298, 0.07181823, 0.0025359155, -0.02812586, -0.008065179, -0.02522925, -0.0439356, -0.0013280734, 0.054659687, -0.009966769, 0.016274082, 0.01341064, 0.0021558737, 0.0032282826, 0.060408685, 0.037655927, -0.027727852, 0.04426727, 0.006141476, 0.020983838, 0.016771592, 0.064034976, 0.01970137, -0.012957353, 0.018739518, -0.036948357, -0.0054808944, 0.015212729, -0.027617294, 0.0326145, 0.049220253, 0.03873939, 0.05510192, -0.006749543, 0.021956744, 0.014903167, -0.050989177, 0.0026298894, 0.015986633, -0.011564327, 0.013952372, -0.021271287, 0.004635128, 0.04727444, 0.043382812, 0.06430031, 0.0009031176, -0.0362629, 0.058418646, 0.0061138365, -0.033299956, -0.037766483, -0.009762238, 0.0034024108, 0.014206654, 0.03232705, 0.028258529, -0.031685814, -0.010834647, -0.031000357, -0.09163016, 0.036351345, 0.039491184, 0.035179436, -0.0024060102, -0.02306232, -0.01494739, 0.01914858, 0.015201673, -0.01891641, 0.021901464, 0.018640015, -0.04117166, -0.10586998, -0.003996658, -0.073454484, 0.02337188, -0.014018707, -0.03601967, 0.0077445614, -0.033167288, -0.009496899, 0.0040685204, -0.0059314165, -0.016362527, 0.029452551, 0.034869876, 0.03624079, 0.0011421985, 0.006500788, 0.04727444, 0.04294058, -0.0026796404, -0.0034383421, -0.0121281715, -0.0020798652, -0.024897577, 0.009143115, 0.035909116, -0.058241755, 0.026334826, 0.0314647, 0.024455346, -0.00016445447, -0.027506737, -0.026777057, -0.030226454, -0.04179078, -0.02225525, 0.06328318, -0.027064506, -0.04439994, -0.043272253, 0.017810833, 0.027086617, -0.026931837, -0.0439356, 0.008236543, 0.017810833, -0.037545368, -0.012006558, 0.011674885, 0.05236009, 0.029540997, -0.011509049, -0.02713084, 0.0042454125, -0.01813145, -0.01987826, 0.038031824, -0.035334215, -0.0035074407, 0.027595183, 0.017678164, 0.003902684, -0.010906509, 0.009358703, 0.032857724, -0.016052967, 0.007473695, -0.026003152, -0.01181861, 0.023482438, -0.042255122, 0.042852134, -0.015168506, 0.0020052388, 0.032990396, -0.022995986, 0.020419993, -0.01059142, 0.007473695, 0.04455472, 0.04497484, -0.0064786766, 0.0433607, -0.014847889, 0.024919689, 0.021426067, -0.019822981, -0.043183807, 0.055676818, -0.0039386153, 0.04121588, -0.017047985, 0.020519495, -0.024389012, -0.01320058, 0.02392467, 0.02449957, 0.008352628, 0.0032365744, -0.01291313, -0.020563718, -0.0038750446, -0.029939003, -0.012857852, 0.043183807, 0.017810833, -0.059258886, 0.02227736, -0.0019333764, -0.07349871, 0.026334826, -0.100740105, 0.0028634425, 0.03756748, -0.05191786, -0.016008744, -0.026489606, -0.07743456, -0.049264476, -0.0024626711, 0.023172878, 0.009823045, 0.05377523, 0.03234916, -0.101359226, 0.003720264, 0.0055195894, 0.026423272, -0.040552534, 0.02828064, -0.06239872, 0.01435038, 0.03451609, 0.020829055, 0.037655927, -0.009093365, 0.008385796, -0.0029076654, 0.04309536, -0.033587407, -0.009192866, -0.020784833, 0.015069004, 0.036196567, -0.004049173, -0.06748437, -0.042852134, 0.01667209, 0.0058650817, 0.025339806, -0.036616683, 0.02334977, -0.0002447815, 0.081591524, -0.0024322676, -0.0023866626, 0.022387918, 0.026998172, -0.0151353385, -0.012493012, -0.014383547, -0.04333859, -0.01369809, 0.0056494945, -0.02191252, -0.0015160214, 0.05408479, 0.022012023, 0.034471866, 0.0031702397, -0.0021075048, -0.0014607426, -0.037235808, 0.027329843, -0.031796373, 0.004507987, -0.0042923996, -0.046920653, 0.0136759775, -0.0055251173, -0.034162305, -0.014538327, -0.00014026999, -0.02110545, 0.036948357, -0.018043004, -0.05572104, -0.014847889, -0.055146143, -0.0066666245, -0.02350455, 0.016229859, 0.011293462, 0.0399113, -0.043404922, -0.02989478, -0.0021116505, -0.029187212, -0.009043613, -0.008717469, 0.021824075, 0.005959056, 0.008065179, -0.018485235, 0.006086197, -0.020983838, -0.005948, -0.012294007, 0.0061193644, -0.010027576, 0.049220253, 0.036196567, -0.014726276, -0.018628959, 0.01782189, -0.06469832, 0.05585371, 0.018219896, 0.024853354, 0.014516216, -0.0337643, -0.044753727, -0.046168864, -0.0055638123, 0.005071831, -0.024632238, 0.010508502, 0.109319374, 0.011044706, -0.011055762, -0.05731307, 0.028258529, -0.006832461, -0.01828623, 0.020342603, 0.023482438, 0.056207497, 0.034825653, -0.013432751, -0.04309536, 0.07172979, 0.0025690827, -0.029275658, -0.012382453, -0.012979465, -0.016583644, 0.009557706, -0.009552179, -0.06270828, 0.039690185, -0.014726276, -0.030425457, -0.05178519, -0.007678227, 0.034869876, 0.009546651, 0.008092818, -0.002233264, 0.004787145, 0.0006706011, 0.0004235739, -0.0066666245, 0.031995375, 0.010735145, 0.03904895, -0.039557517, -0.01782189, 0.017379658, 0.019369695, -0.03237127, -0.02154768, 0.026666498, -0.023106543, 0.047937784, 0.044731613, -0.058418646, 0.02540614, 0.06328318, 0.009192866, 0.025140803, -0.021945689, -0.038208716, 0.032946173, 0.017302267, 0.03365374, 0.024897577, 0.0088777775, 0.038540386, -0.048380017, 0.040839985, 0.0055472287, -0.011774387, -0.016904261, -0.0029353048, -0.019922484, 0.00605303, 0.00566055, -0.03104458, -0.0076008365, -0.008850138, 0.0106080035, 0.010160246, 0.05757841, -0.02097278, 0.06275251, 0.027904743, 0.010729617, -0.0034272864, 0.09808672, -0.011995502, -0.0038943922, -0.0044499445, -0.028457532, 0.05178519, -0.03268083, -0.009463732, 0.008407908, -0.019214915, 0.06500788, -0.003211699, -0.021116506, -0.015256952, 0.020121487, -0.03825294, 0.0019955651, 0.001347421, -0.003355424, 0.0011352886, 0.007976732, 0.020033041, -0.01312319, -0.035135213, -0.03829716, -0.018429955, 0.026578052, 0.06735171, -0.06381386, -0.043272253, -0.05209475, -0.0118849445, 0.003714736, 0.011409546, 0.06858995, -0.020187821, 0.009121004, -0.019038023, -0.059878007, -0.010127078, -0.03237127, 0.0068379887, -0.0027280094, -0.056915063, 0.023991004, -0.028391197, -0.0010834647, -0.007611892, -0.051740967, -0.023018098, 0.053156104, 0.03480354, 0.014483049, 0.014991614, -0.030934023, 0.029098766, -0.017589718, -0.015688127, -0.01254829, -0.021956744, -0.03756748, 0.039867077, 0.02522925, 0.0066942642, -0.013874982, -0.08278555, -0.034427643, 0.04917603, -0.016030855, 0.024632238, 0.059214663, -0.0035599554, 0.01933653, -0.023084432, 0.02522925, -0.042852134, 0.027661517, -0.024322677, -0.020762721, -0.014383547, -0.02465435, 0.034781426, -0.06226605, 0.040154528, 0.0026174516, 0.05116607, -0.023725666, -0.0071862456, -0.034449756, 0.006500788, -0.012493012, 0.02407945, -0.017644996, -0.01834151, -0.0040740483, 0.01740177, -0.013521197, 0.020696387, -0.025030246, -0.07986683, -0.02812586, 0.025450364, -0.006058558, 0.028568089, -0.009524539, -0.00035447537, -0.045262292, 0.0001318918, -0.018695295, -0.0061525316, -0.020187821, 0.014969502, 0.05191786, -0.00920945, -0.02306232, -0.0064731487, -0.019668201, -0.010829119, 0.0017012054, 0.00024253578, -0.002096449, 0.023460327, 0.00066265475, 0.0046213088, -0.047362886, 0.009308952, 0.009662736, 0.030867688, 0.061381593, 0.039867077, 0.010574836, 0.0019223207, -0.023128655, 0.040287197, -0.00696513, -0.06624613, -0.016384639, -0.0014621245, 0.00083609205, -0.010370305, -0.030845577, 0.02624638, 0.023438215, -0.0118849445, 0.0062133386, -0.00038246028, -0.0032780336, 0.03133203, 0.004601961, 0.016207747, 0.033299956, 0.040994767, -0.04554974, 0.058064863, -0.01912647, 0.045638185, 0.0028468587, -0.007545558, -0.030049562, -0.027064506, 0.052979212, 0.009900435, 0.036351345, -0.019568698, -0.0022913066, -0.037058916, 0.04072943, -0.010818063, 0.025207138, -0.017832944, 0.033167288, -0.040419865, 0.0069153793, 0.00046710594, -0.018982744, 0.0041237995, 0.00083471, -0.012537234, -0.03195115, 0.02958522, 0.0033333122, 0.017877167, 0.048601132, 0.03000534, 0.0008077616, -0.046036195, -0.010337138, -0.0314647, -0.011365323, -0.041547555, 0.002144818, 0.005859554, 0.019369695, 0.025892595, 0.07274692, 0.04119377, 0.03365374, 0.0028192194, -0.01813145, -0.033123065, 0.02974, -0.027661517, 0.0031481283, -0.043471258, 0.044886395, 0.007534502, 0.030823465, 0.010934149, 0.04709755, 0.010812536, -0.016030855, -0.04179078, -0.008319461, -0.040397756, -0.0011311427, 0.010221052, 0.022133635, 0.0024488512, 0.023416104, 0.0037064443, -0.02421212, 0.0076561156, -0.0011484174, -0.022730647, -0.05496925, -0.013797591, 0.011464826, -0.025207138, -0.030978246, -0.004519043, 0.018507347, 0.013333249, -0.014416714, 0.0018836255, -0.019104358, 0.0058208588, -0.0046213088, -0.0009639243, 0.00053171307, -0.07057998, -0.019767703, 0.004469292, -0.01559968, 0.016130358, -0.008805915, -0.014261933, 0.019933539, -0.022929652, 0.0053261137, 0.005909305, -0.03787704, 0.008336045, 0.011896, -0.014803666, -0.010663283, -0.02319499, 0.012316119, 0.019347584, -0.0082089035, -0.008065179, 0.0019361404, 0.002558027, -0.016749479, -0.024035227, -0.0052045, 0.011155264, -0.028744983, -0.043029025, 0.0397123, 0.03597545, -0.0422109, -0.008750636, -0.0030817937, -0.01594241, 0.0036677492, 0.023814112, -0.0349141, 0.016030855, 0.009635096, 0.03867306, 0.021403955, -0.035068877, 0.01270307, -0.012537234, 0.016473087, 0.015920298, -0.04581508, 0.036196567, 0.011553272, 0.04092843, 0.003805946, 0.009568762, -0.031840596, -0.0066887364, -0.0039745467, -0.04448839, -0.019026967, 0.0011352886, 0.06191227, -0.029540997, -0.017644996, 0.027418291, -0.075930975, -0.00306521, 0.028391197, 0.009303424, 0.048645355, -0.016550476, 0.040839985, -0.03551111, 0.0075897807, -0.002088157, 0.019424975, -0.00031007957, 0.032393385, 0.009170755, 0.01709221, 0.032658722, -0.021304455, -0.011741219, 0.017943501, 0.026931837, 0.013863926, 0.030580238, -0.057622634, 0.024919689, 0.014571494, -0.05527881, -0.023482438, -0.001955488, 0.02392467, -0.031553145, 0.0010171301, -0.017954558, 0.013543309, -0.046168864, 0.009010446, -0.0031840596, -0.06956285, -0.020408938, -0.027683629, 0.0033609518, -0.014560439, -0.022995986, 0.009214978, 0.02671072, -0.01588713, -0.030757131, -0.056207497, -0.0064897323, 0.03670513, -0.011221599, 0.00039317054, 0.039513294, -0.0054643103, 0.005143693, -0.013454863, -0.021271287, -0.018673182, -0.057534188, 0.015898187, -0.03655035, 0.014040818, -0.0055444646, 0.0023134183, -0.050281607, 0.024433235, -0.008518465, 0.0050884145, 0.005666078, -0.038275048, 0.0044499445, 0.058949325, 0.04179078, 0.0070148814, 0.021779852, 0.066378795, -0.0027128076, -0.017656052, 0.04554974, 0.01980087], [0.016758539, 0.020425642, -0.02618287, 0.052515928, 0.0069587356, 0.02180237, -0.033867516, 0.022828659, 0.0030788651, 0.031564627, -0.019799856, 0.0019070816, -0.02366721, -0.014655898, -0.0026814912, 0.031564627, -0.029036451, 0.016032627, -0.016808601, 0.00373594, -0.0023654695, -0.060726233, -0.043754928, -0.013179044, 0.019249165, -0.005434948, -0.035394434, 0.01538181, -0.0018382452, 0.002083866, 0.007847351, 0.022227904, -0.0032853743, -0.012853636, 0.0019946916, 0.014080176, 0.020525767, 0.024906266, -0.009217822, -0.00081352127, -0.042628516, -0.018498221, 0.0003068305, -0.012159014, 0.0034574654, 0.008992539, 0.012903699, -0.009524457, -0.0019680958, -0.0047152946, -0.0094806515, -0.018535769, -0.0077534835, -0.027709786, -0.0537675, 0.007158987, 0.07484396, -0.03429305, 0.03406777, -0.019637153, -0.05852347, 0.032816198, 0.05957479, -0.026408153, -0.023191614, 0.003476239, 0.0041051535, 0.011389297, 0.05962485, 0.03937443, -0.028861232, 0.0068773837, -0.00062265666, 0.019449417, 0.025557084, -0.08140219, 0.031239217, 0.01643313, 0.02355457, 0.0019305486, 0.029061483, -0.058323216, 0.021927528, -0.0244557, 0.030262992, -0.04608285, 0.05907416, -0.09892419, 0.009461878, 0.0103129465, -0.0006695906, -0.0004935884, 0.050062846, 0.013542, -0.012916215, 0.011620838, -0.037021477, 0.034743614, 0.01546942, 0.0058354507, -0.027159095, -0.053967748, -0.07048849, -0.08776017, 0.060576044, 0.056721207, 0.04996272, 0.0120463725, -0.035644747, -0.035569653, -0.025657209, -0.045982726, -0.026508277, 0.020363063, -0.006589522, 0.03549456, -0.020688472, -0.025081487, -0.04728436, -0.003132057, -0.06533202, -0.045281846, 0.09947488, 0.0055413316, 0.02778488, 0.016796086, 0.004180248, 0.02918664, 0.023066457, -0.027484503, -0.0297123, 0.006645843, 0.0040613483, 0.024818657, 0.014968791, 0.046032786, 0.08330458, -0.019687215, -0.0594246, -0.031239217, -0.068485975, 0.005738454, -0.018147781, 0.04871115, -0.00040754286, -0.012916215, -0.026633434, -0.029161608, -0.062929, -0.025356833, -0.032941353, -0.06663365, -0.012603322, 0.00481542, 0.025056455, -0.019336775, 0.028610917, 0.052465864, -0.025169097, 0.058673657, 0.04205279, -0.063229375, -0.037221726, 0.03639569, 0.010707191, -0.030913807, 0.0227035, -0.025507022, -0.033467013, 0.012703448, -0.017647155, 0.022540797, 0.056520954, -0.022528281, 0.0070713772, 0.015194074, 0.0013313588, -0.019724762, -0.021789854, -0.025319286, -0.0068836417, 0.060926486, 0.05852347, -0.013854893, 0.03782248, 0.05697152, 0.0038892576, 0.043029018, 0.01844816, -0.046683606, -0.027184127, 0.043054048, 0.008629584, -0.018122751, 0.007878641, -0.020237906, -0.005572621, -0.01862338, -0.031589657, -0.022665953, -0.005860482, -0.02688375, 0.017371807, -0.014180302, -0.021839917, 0.05206536, 0.013567031, 0.0332167, 0.042378202, 0.026858717, 0.009549488, 0.025657209, 0.0077096787, -0.02548199, -0.020613378, -0.020237906, -0.04553216, 0.002198072, -0.031038966, -0.004092638, 0.036671035, 0.011257883, -0.013254139, -0.038348142, -0.0037421978, 0.0062328246, -0.017784826, -0.023416897, 0.0323406, 0.034017704, -0.028385634, -0.04465606, -0.022265451, 0.033341855, -0.07899918, -0.006864868, -0.025406895, -0.033617202, 0.028410666, -0.008585778, 0.029086513, 0.0068148053, -0.049912658, -0.02171476, 0.019511994, 0.020913754, 0.02162715, 0.015594577, -0.026132807, 0.03534437, -0.030112803, 0.007947477, -0.0052972753, 0.027734818, 0.009793544, 0.07879892, 0.05446838, -0.026132807, -0.026933812, 0.019424384, -0.015619609, 0.039824996, -0.0066145537, 0.03642072, 0.0082979165, -0.039724868, 0.012928731, -0.026708528, -0.052515928, 0.02215281, 0.08385527, -0.08540722, 0.049687374, -0.00075094274, 0.03043821, -0.014017597, 0.060025353, 0.04498147, -0.013842377, 0.043154176, 0.015068918, 0.030638462, -0.005222181, -0.0054912684, -0.0029271122, -0.0041896347, -0.0039361916, -0.046358198, -0.017008852, 0.014756024, -0.012340492, -0.0027597144, 0.06773503, 0.0022481347, 0.06698409, 0.010087663, 0.020738535, 0.040275563, -0.041076567, 0.00834798, -0.008541973, -0.0127848, -0.023341803, -0.043905117, 0.025657209, 0.034242988, 0.02197759, 0.08145225, 0.017096462, -0.016758539, 0.061377052, -0.0022121521, -0.0071339556, -0.05291643, -0.005093895, -0.009067633, -0.007265371, 0.025782367, 0.044530902, -0.03729682, -0.033016447, -0.020087717, -0.09757249, 0.0061014094, 0.032766134, 0.00014705962, -0.005378627, -0.015632125, 0.024318028, 0.008654615, -0.054918945, -0.010988795, 0.027985131, 0.021139037, -0.02057583, -0.12065146, 0.018310487, -0.06793528, 0.04658348, -0.021752307, 0.021564571, 0.032991417, -0.020813629, -0.034343112, 0.008954992, 0.0028770491, 0.0071402136, 0.012647127, 0.0047966465, -0.0015355214, 0.001443218, -0.0019899982, 0.011677159, 0.02197759, 0.02145193, 0.026257964, 0.0017866179, -0.022640923, -0.006001284, 0.021038912, 0.03867355, -0.013441875, 0.01996256, 0.04728436, 0.024943814, 0.025782367, -0.02296633, -0.006939962, 0.020838661, -0.0010270706, -0.06337956, 0.07284144, 0.019574573, -0.022027653, -0.013379296, 0.006389271, 0.06618308, -0.017434387, -0.06598283, 1.2405711e-05, 0.051414546, -0.0073216916, -0.036620975, -0.0049656085, 0.030713556, 0.038248014, -0.047684863, 0.02188998, 0.033141606, -0.026358088, -0.03429305, 0.010513198, 0.038273048, -0.028060226, 0.0104881665, 0.016445646, -0.026483247, 0.038022734, 0.0305884, 0.022866206, -0.013441875, 0.013829862, -0.022202874, -0.06923692, 0.032590915, -0.029737331, 0.014005082, 0.00204319, -0.001314932, 0.041627258, -0.045857567, 0.034192923, -0.0010919959, 0.03569481, 0.051064104, 0.03762223, 0.0061952774, 0.041051533, -0.013066404, 0.016220363, 0.026082743, -0.008773514, -0.031789906, 0.047584735, -0.030888777, 0.026758593, -0.04831065, 0.0065457174, -0.036145374, -0.029461985, 0.01698382, 0.008410558, -0.03239066, -0.029812425, 0.00694622, -0.035043992, -0.034843743, -0.029862488, -0.00052448653, 0.038748644, -0.0006527726, -0.04941203, 0.040550906, 0.01538181, -0.043179207, 0.00014226844, -0.036120344, 0.005381756, 0.04275367, -0.026057713, 0.010732223, -0.02092627, -0.045482095, -0.045231782, 0.02504394, -0.015857408, 0.027659724, 0.0014236622, 0.008122697, -0.08035087, 0.021877464, 0.008898671, 0.036671035, 0.03396764, 0.029211672, -0.029862488, -0.003382371, 0.035644747, 0.015769796, 0.036671035, -0.027084, 0.0076596155, -0.034868773, 0.013141497, -0.036520846, -0.03429305, -0.00061522546, 0.011570776, 0.0018664055, 0.01976231, -0.04468109, -0.013729736, -0.02401765, 0.026232932, 0.0035388176, -0.024655953, -0.0045432034, 0.017884953, 0.07083893, 0.004633942, -0.009699677, 0.030863745, -0.022778595, -0.015869923, -0.014368037, -0.021514509, -0.04165229, -0.057071645, -0.0034887546, -0.0044524646, 0.03239066, 0.053917687, 0.006689648, 0.037196696, 0.016833633, -0.009949991, -0.008197791, -0.027759848, 0.056170516, -0.01739684, -0.008879897, -0.005237825, -0.030513305, -0.009336721, 0.006257856, -0.0141552705, 0.0052910172, 0.010707191, 0.002562592, 0.02638312, 0.0007791031, -0.016182816, -0.0144181, -0.02436809, -0.03076362, -0.005294146, -0.011458134, -0.009968764, 0.032941353, -0.0489114, 0.015006338, -0.020150296, -0.023216646, -0.007202792, 0.01252197, -0.018598348, 0.042653546, -0.0058761267, -0.011232851, 0.02848576, -0.018873693, 0.026483247, 0.00010169016, 0.026082743, 0.0016943145, 0.05922435, 0.039424494, -0.007941219, -0.013504453, 0.028410666, -0.03374236, 0.04853593, -0.007828577, 0.019336775, 0.006864868, -0.054818816, -0.019899981, -0.041201722, 0.0012625224, -0.00869842, 0.019236648, 0.009330464, 0.08771011, 0.013692189, -0.0001578153, -0.048235554, 0.0022309257, 0.013642126, -0.024205387, 0.018610863, -0.027384378, 0.04092638, 0.022490734, -0.021614634, -0.037221726, 0.07749729, 0.025056455, -0.035119087, -0.031214185, -0.009167759, -0.02504394, -0.016483193, -0.00027827904, -0.04060097, -0.0029615304, 0.036495816, -0.013904956, -0.034968898, -0.05063857, 0.008717193, 0.0041552163, 0.01485615, -0.004730939, -0.011088921, -0.0020682213, 0.010750997, 0.017359292, -0.0015018855, 0.010894927, 0.04147707, -0.041001473, -0.041226756, 0.03937443, -0.0034856258, -0.056571018, 0.0104881665, 0.025982618, -0.060225606, 0.038998958, 0.026057713, -0.080451, 0.015957532, 0.049687374, 0.004355468, 0.00031367503, -0.03379242, -0.004734068, 0.056621082, 0.030313054, 0.096921675, 0.0794998, 0.026658466, 0.042403232, -0.053216808, 0.042803735, -0.009993796, -0.014981307, 0.017622123, -0.0038047764, 0.013679673, 0.007884898, -0.019149039, -0.046308134, -0.016883695, 0.028360603, 0.013879924, -0.0001313172, 0.028285509, 0.003476239, 0.022140294, 0.027809912, 0.034543365, -0.026132807, 0.1114399, -0.026908781, -0.018761052, 0.020851176, -0.006533202, 0.04680876, -0.007152729, -0.037221726, 0.038323108, 0.0006433858, 0.0502631, 0.014781056, -0.022653438, -0.0227035, 0.017634638, -0.025557084, 0.016971305, -0.002653331, -0.03869858, -0.023003878, 0.030863745, 0.016157784, -0.009186532, -0.03954965, 0.0015120545, 0.0027049582, 0.029261734, 0.065682456, -0.056621082, -0.043129142, -0.044631027, -0.023592116, -0.027284252, 0.002977175, 0.057021584, -0.053366996, -0.02346696, -0.01801011, -0.037597198, -0.020413127, -0.022553314, -0.011664644, -0.0120463725, -0.051414546, 0.02046319, -0.03622047, -0.013429359, -0.020688472, -0.08245351, -0.015481936, 0.033842485, 0.01138304, 0.0047997753, 0.023091488, -0.04115166, 0.031614687, -0.029962614, -0.009624583, -0.030137835, -0.007922445, -0.012628353, 0.041927636, 0.019925013, -0.004042575, 0.01389244, -0.008385527, -0.0076220687, 0.026433183, -0.015456904, 0.009217822, 0.051764984, 0.019274196, 0.024180355, -0.016245393, 0.009067633, -0.07499415, 0.032590915, 0.002603268, -0.0050907657, -0.02548199, -0.039274305, 0.034268018, -0.0707388, 0.030313054, 0.0113204615, 0.056721207, -0.0032321827, -0.010431846, -0.03309154, 0.003186813, -0.0150564015, 0.00083777047, -0.016107721, -0.027084, 0.005560105, 0.024067715, 0.0179225, 0.058573533, -0.03201519, -0.020801114, -0.059274413, -0.017759794, -0.04255342, 0.03168978, -0.044605996, 0.0024186613, -0.024831172, -0.011727222, -0.04538197, -0.002623606, -0.021063942, 0.029862488, 0.03411783, 0.011201562, -0.030037709, -0.019737277, -0.0021261065, -0.026433183, -0.042077824, -0.01573225, -0.03304148, 0.04693392, -0.025281738, -0.0323406, -0.048961464, 0.008973765, 0.006602038, 0.026783623, 0.06257856, -0.00461204, 0.020638408, -0.0072340816, 0.0066708745, 0.016095206, -0.010137727, -0.04220298, -0.025732303, -0.010369267, -0.0029849974, -0.0067584845, -0.02372979, 0.01511898, 0.005553847, -0.0012844249, -0.004959351, 0.005478753, -0.01085738, 0.025544567, 0.02478111, 0.027384378, 0.037747387, 0.060375795, -0.021739792, 0.0314645, -0.038448267, 0.04663354, -0.012096436, -0.00668339, -0.057622336, -0.00075094274, 0.04025053, -0.0007791031, 0.008986281, -0.007152729, -0.03143947, -0.02434306, 0.03389255, 0.000108730244, 0.012384297, -0.01871099, 0.03797267, 0.000657466, 0.015744766, -0.014956276, -0.014430616, -0.021314258, 0.00032247513, 0.011232851, -0.002694007, 0.0071652452, -0.0092804, 0.01249068, 0.024205387, 0.014042629, 0.014042629, -0.04117669, 0.0001271127, -0.043129142, -0.041427005, -0.03762223, 0.027935069, -0.0027956972, 0.043054048, -0.0012062017, 0.056320705, 0.009336721, -0.0073216916, -0.032190412, -0.014968791, -0.008241597, 0.02778488, -0.037171666, 0.018072687, -0.008329206, 0.0067835157, 0.014167786, 0.07083893, 0.029286766, 0.02723419, 0.017759794, -0.0450065, -0.037922606, -0.04202776, -0.062027868, -0.01538181, -0.018698474, 0.04272864, 0.009768513, 0.008153986, 0.046983983, -0.042528387, 0.0017772311, 0.016408099, -0.0063079186, -0.050162975, 0.003604525, -0.018160298, -0.035920095, -0.02046319, -0.0006993154, 0.044405747, -0.0016223491, -0.038998958, 0.047885112, -0.0031883777, -0.00729666, -0.01996256, -0.016095206, -0.03949959, -0.057021584, -0.029086513, 0.0176847, -0.024067715, 0.029662237, 0.0067584845, -0.004687134, 0.017259168, -0.009724708, -0.01319156, 0.03854839, -0.008679646, -0.0095870355, 0.015982565, -0.007177761, -0.0024593375, -0.030613432, 0.034893803, 0.0052253096, -0.025957586, -0.017271683, -0.005744712, 0.033867516, -0.0032024577, -0.00560391, 0.00240771, -0.021489477, -0.020325515, 0.0012719092, 0.040901348, 0.030513305, -0.026508277, 0.020588346, -0.00039013822, 0.00747188, -0.009317948, 0.007390528, -0.05291643, 0.027359346, 0.022403125, 0.020700987, 0.028686011, -0.056571018, 0.011451877, 0.00703383, 0.011107694, 0.015444389, -0.009568262, 0.034968898, 0.0297123, 0.051189262, 0.012384297, 0.007040088, -0.024005136, -0.0069337045, -0.00071496004, -0.048110396, -0.021639666, 0.035119087, 0.09461878, -0.01698382, -0.0022543925, 0.029587142, -0.08190282, -0.01941187, 0.018610863, 0.025707273, 0.0011334541, 0.017008852, 0.03689632, -0.03166475, -0.01468093, -0.0023779853, -0.013441875, -0.0037641004, 0.045131657, 0.0132416235, 0.03239066, 0.021501994, -0.026057713, 0.0067084217, 0.0114956815, 0.0244557, 0.012146498, 0.039074052, -0.028410666, -0.005356725, 0.045657318, -0.053917687, -0.019937528, -0.0025219158, -0.018323002, 0.027759848, 0.01564464, -0.031089028, 0.009549488, -0.06958736, 0.013617095, 0.012734737, -0.057422087, -0.023717275, 0.010982537, -0.0067835157, -0.006357982, -0.028535822, 0.018986335, 0.029236702, -0.019124007, 0.015919985, -0.054618567, 0.018047657, 0.011164015, 0.013491937, -0.012928731, 0.020275453, -0.0041145403, 0.016458161, -0.007740968, -0.0076345843, -0.0035106572, -0.039474554, 0.030388149, -0.06237831, 0.016933758, -0.003432434, 0.0009214693, -0.05627064, 0.011533229, 0.008592037, 0.00022352279, 0.015707219, -0.00052370434, 0.0114018135, 0.023066457, 0.021063942, -0.018610863, -0.0024655953, 0.067234404, 0.014605836, -0.008266628, 0.023842432, 0.03326676], [0.032108143, -0.0072697685, -0.028405946, 0.012789407, -0.013900067, 0.016917918, 0.0009416762, 0.06758192, -0.018611953, 0.05712602, -0.045839928, -0.0049362625, 0.01597554, -0.040634416, 0.011768498, 0.039602287, -0.03565328, 0.026027566, 0.017759327, -0.013552284, -0.052952632, -0.045323864, -0.069780804, 0.014438568, 0.0008182696, 0.009227445, -0.027463568, 0.006938814, -0.004462269, 0.018499766, 0.02800207, 0.03307296, 0.023379933, -0.018208077, 0.004913825, -0.0044931206, 0.017119857, -0.004479097, -0.047702245, -0.004437027, -0.037313655, 0.03222033, -0.023020932, -0.046400867, 0.0077633946, -0.011734842, -0.05389501, 0.020283552, 0.027059693, -0.040252976, 0.032018393, -0.027710382, 0.006865892, -0.008408475, -0.032467145, -0.016873043, 0.052279506, -0.032713957, 0.025197376, -0.038637474, -0.013754223, -0.012082624, 0.04296792, -0.0020446223, -0.019946989, -0.0486895, -0.033521708, 0.030088764, 0.023694059, 0.020923022, -0.03675272, 0.03067214, -0.011190731, -0.04260892, -0.007942895, -0.05681189, 0.078082696, -0.016760854, -0.040006164, 0.024546687, 0.0054046465, -0.03717903, -0.023469685, -0.019958207, 0.067133166, -0.0704988, 0.02194393, -0.085262716, -0.03331977, -0.029348323, -0.012407969, -0.034284588, 0.039153535, 0.051561505, -0.05712602, 0.02883226, -0.0017431177, 0.022056118, -0.03388071, 0.0069163768, -0.023222871, -0.029505387, -0.013574721, -0.07323618, 0.06861405, 0.020216238, 0.03498015, -0.026566068, -0.02396331, -0.03188377, 0.0398491, -0.019946989, -0.018589515, 0.021326898, -0.04415711, 0.0039994945, -0.0048437077, -0.08530759, -0.025556376, 0.017647138, -0.0589659, -0.00403876, 0.049138248, 0.07417856, -0.020698646, 0.0054130605, 0.003012242, 0.023761373, -0.002277412, -0.030447764, -0.008010208, 0.032646645, 0.056138765, -0.008049473, 0.07103731, -0.0064956727, 0.054209135, -0.011970436, -0.040006164, 0.033050522, -0.029797075, 0.013327909, -0.010023979, 0.02681288, -0.030649703, -0.018679265, -0.024726188, -0.023245309, -0.040073477, 0.006933205, -0.03868235, -0.022527307, 0.00021210502, 0.04557068, 0.024613999, -0.022538526, 0.016098946, 0.02764307, 5.3508313e-05, 0.011398279, 0.06291491, -0.07247331, 0.0043921517, 0.012082624, -0.027127005, -0.09064773, 0.046355993, 0.008290677, -0.03340952, 0.022415118, 0.02278534, -0.018567078, 0.0015495938, -0.018006139, -0.03370121, 0.011403888, 0.025533939, 0.00046487813, -0.01937483, -0.093070984, -0.046400867, 0.02708213, 0.035698153, -0.02928101, 0.054568138, 0.034037773, -0.00917696, 0.026745567, 0.037246343, -0.035855215, -0.025825627, -0.0076007224, -0.0129913455, -0.036102027, -0.015538008, -0.0694218, -0.003993885, -0.032085706, -0.014651724, 0.031906206, -0.031906206, -0.05039475, -0.022426337, 0.0037414625, -0.03791947, 0.025062751, 0.02984195, -0.018006139, 0.04067929, -0.026319254, 0.062107157, 0.026207065, -0.033207584, -0.027239194, 0.014315161, -0.0015874571, -0.065068915, 0.04222748, -0.01680573, -0.061972532, 0.020900585, -0.012329438, -0.0018174421, -0.035406463, 0.021371773, 0.016143821, 0.011667529, 0.025960254, 0.05694652, 0.022942401, 0.0033460006, -0.030806765, -0.02432231, 0.040544666, -0.09387874, -0.04148704, -0.003839627, -0.01827539, 0.046670116, 0.04189092, 0.019217767, 0.06529329, -0.05021525, -0.026566068, 0.0131820645, 0.020552801, 0.013384002, 0.05241413, 0.0049783327, 0.014550756, 0.0062095937, -0.034284588, 0.054523263, 0.019599205, -0.0025186157, 0.033925585, -0.008851616, -0.022751682, 0.0022886307, 0.025421752, -0.0021974782, -0.0050905207, -0.009956665, 0.09073748, -0.013810316, -0.0066302978, 0.0054495214, -0.0596839, -0.03150233, -0.014954631, 0.028136697, -0.03735853, 0.0019029853, 0.038615033, 0.04124023, -0.045615554, 0.009289148, 0.02773282, -0.014281505, 0.0890771, 0.013843972, 0.05766452, 0.004423003, 0.020721084, 0.049721625, -0.028854698, -0.013563503, -0.050933253, -0.021820523, -0.02094546, 0.0047735902, -0.053311635, 0.038592596, 0.024501812, 0.03462115, 0.006568595, 0.015728727, -0.022661932, -0.0587864, -0.015616539, -0.017310575, 0.02800207, 0.0075446283, -0.03738097, -0.021293242, 0.013765441, -0.018410016, 0.06318416, 0.010175432, -0.00026416717, 0.05317701, -0.018062234, 0.005115763, -0.015908228, 0.04949725, -0.032646645, 0.018656828, 0.039063785, 0.047612496, -0.026678255, 0.026588505, -0.03874966, -0.1190088, -0.012632344, 0.02782257, 0.049542125, -0.024771063, -0.041531917, -0.0398491, -0.010360542, -0.056991395, -0.03821116, -0.010629793, 0.008487006, -0.07749932, -0.09378899, 0.00026644598, -0.03498015, 0.008139224, -0.008144833, -0.02836107, -0.009283539, -0.029236136, -0.06291491, 0.031995956, 0.005822546, -0.009496695, 0.006871502, 0.028316196, -0.04148704, 0.001264216, 0.026925068, 0.06313928, 0.046984244, -0.020642553, -0.02948295, -0.037964344, -0.0027892687, -0.0036769547, 0.027867446, 0.079787955, -0.06313928, 0.0014058532, 0.022493651, -0.026610943, -0.008414084, -0.039086223, -0.018073453, -0.037156593, 0.028136697, -0.03857016, 0.039288163, -0.010186651, -0.046131615, -0.0293932, 0.029056637, 0.050978128, -0.016166259, -0.038592596, -0.0013637827, -0.027845008, 0.0064507974, 0.0024442913, 0.005755233, 0.053760387, 0.028204009, -0.022706807, -0.0014906952, 0.023581872, 0.0137205655, 0.014853663, -0.013350346, -0.002088095, -0.028405946, 0.021091303, 0.06408166, -0.008430912, 0.017916389, 0.044740487, 0.044269297, -0.011471201, -0.01754617, -0.020014301, -0.020586459, 0.036169343, 0.014853663, 0.011779717, 0.0021708335, 0.009709853, 0.009412555, -0.010321276, 0.06484454, -0.042205043, -0.028877135, 0.01837636, 0.025960254, -0.024995439, 0.0039658383, -0.023020932, -0.0024779476, -0.0056065843, -0.004251917, -0.01763592, -0.0033067348, -0.0111346375, 0.013092314, -0.014719037, 0.028787386, -0.018230515, -0.019801144, -0.023649184, -0.0022788143, 0.009535962, 0.0047399336, -0.04388786, -0.04837537, -0.016469166, -0.013148408, -0.024569124, 0.012553813, -0.0021778452, -0.023133121, 0.04350642, -0.005390623, -0.010265182, -0.0005840777, -0.04599699, -0.0032955161, 0.04554824, -0.033544146, -0.039602287, -0.023200434, -0.06354316, -0.0130698765, 0.09710974, -0.040544666, -0.019094361, 0.0036208606, 0.020451833, -0.0692423, 0.022415118, 0.008105568, 0.08360234, -0.034464087, 0.026768005, -0.016244791, -0.052369256, 0.025825627, -0.003158086, 0.017131075, -0.010259572, 0.03414996, -0.043012794, -0.020631334, 0.00028292357, -0.010725152, -0.010607355, -0.026341692, 0.005141005, -0.039422788, -0.0155941015, -0.035025027, 0.029976575, 0.025040314, -0.0025228227, -0.017972482, 0.010646621, 0.008621631, 0.080999576, 0.026319254, 0.0072585493, 0.05555539, 0.028787386, 0.008234583, 0.010315667, 0.008346771, -0.0897951, -0.046311118, -0.009104039, -0.025578814, 0.006372266, 0.0071856277, -0.0040331506, 0.06071603, 0.0039097443, -0.024075499, -0.028518135, -0.014640505, 0.0016772073, -0.0701398, -0.0052644117, 0.019262642, -0.0244345, -0.002034806, -0.027575757, -0.0014920975, -0.0013714957, 0.017523732, 0.01515657, 0.044112235, -0.0057608425, -0.017052542, -0.017692013, -0.056767017, -0.0047146915, 0.0052111223, 0.006849064, -0.0079597235, 0.04575018, -0.049272873, -0.019958207, -0.009928619, -0.041644104, -0.004776395, -0.0045520193, -0.028204009, 0.0051185675, 0.03910866, -0.01754617, 0.029909262, -0.0059179054, 0.048195872, 0.0056682876, -0.0027556124, -0.029707326, 0.022459995, 0.06224178, 0.014079567, -0.018712923, 0.015728727, -0.081941955, 0.021338116, 0.008918929, 0.031906206, 0.007836317, -0.004709082, -0.018129546, -0.07027443, 0.02360431, -0.008582366, 0.010775637, 0.020350864, 0.09334023, 0.054343764, -0.046580367, -0.03957985, 0.020148925, 0.0047539575, -0.0045604333, 0.026655817, 0.019487018, 0.029146386, 0.01837636, -0.021697117, -0.07489657, 0.048195872, -0.0070397835, -0.020148925, -0.0029365153, -0.0073202527, 0.0023881975, -0.006097406, 0.02267315, -0.036954656, 0.014360036, -0.030537514, -0.020597678, -0.041711416, -0.0026981162, 0.042676233, 0.0006359645, 0.030245826, -0.0045604333, 0.0059066867, 0.034037773, 0.03735853, 0.0018973759, 0.015223882, 0.014180535, 0.016996449, 0.0002045674, 0.020597678, -0.025780752, 0.008318724, -0.046266243, -0.001292263, 0.029617574, -0.03121064, -0.004268745, 0.03222033, -0.026655817, 0.011448763, 0.039624725, -0.017052542, 0.035608403, -0.008195317, 0.015852133, 0.03607959, -0.008604803, 0.0003588256, 0.0674473, 0.005351357, 0.05856202, -0.03188377, -0.016547699, 0.011179512, 0.0027121396, 0.006400313, -0.025421752, -0.03085164, 0.015279976, -0.029527824, -0.00881796, -0.02331262, 0.021708336, 0.04207042, -0.0024400842, 0.046490617, -0.00917696, 0.05941465, -0.023402372, 0.021360554, 0.021540055, 0.058831275, -0.028046945, -0.054568138, 0.043663487, 0.0014458201, 0.027127005, -0.008980632, -0.008116786, 0.02589294, 0.0037639001, 0.05416426, 0.002511604, -0.011302919, -0.007275378, -0.0057075536, -0.02351456, 0.03690978, -0.028383508, -0.039624725, 0.012924032, 0.02892201, 0.01615504, -0.010029588, -0.029640011, -0.010725152, -0.026678255, 0.035608403, 0.05672214, -0.041397292, -0.01928508, -0.021842962, -0.04067929, -0.009771556, -0.00071870297, 0.050305, 2.008205e-05, -0.01165631, 0.00010158253, -0.027239194, -0.021158615, -0.027239194, -0.05039475, -0.0060188747, -0.050933253, -0.011117809, -0.024277436, 0.0069163768, -0.0009311586, -0.025264688, -0.010018369, 0.0029421246, -0.0007790039, 0.043192297, -0.030088764, 0.015437039, 0.019217767, 0.004930653, -0.011375841, -0.018398797, 0.0041705808, -0.04895875, 0.019531893, 0.044762924, -0.012497719, 0.005129786, -0.055331014, -0.051112752, 0.039041348, 0.0013006771, 0.0015986759, 0.0112131685, 0.011746061, -0.0001861616, -0.016592573, 0.008587975, -0.081582956, 0.025219813, -0.0006699714, -0.012295781, -0.016009197, -0.057440143, 0.022897527, -0.043192297, 0.06879355, -0.028877135, 0.0009458832, -0.026364129, 0.04112804, -0.0016491604, 0.01285672, 0.0051466147, 0.0043472764, -0.017748108, 0.0035731809, 0.013372784, 0.007325862, 0.007393175, -0.0011099579, -0.0016267229, -0.032803707, -0.047343243, 0.007325862, -0.029527824, 0.0494075, 0.018286608, 0.015235101, -0.037941907, -0.027934758, -0.012475281, 0.032287642, -0.003480626, 0.0070005176, 0.03040289, 0.036954656, -0.029056637, 0.020350864, -0.035765465, 0.018937297, 0.015235101, -0.014820006, -0.023133121, 0.05564514, 0.009244273, 0.0012621125, -0.051292256, 0.019722613, 0.010130557, 0.019240204, 0.05362576, 0.017490076, -0.015863353, -0.03307296, 0.004591285, -0.0037779235, 0.0028257298, -0.038345784, -0.0075165816, 0.03388071, 0.018869985, 0.005141005, -0.043461546, 0.0448078, 0.0198348, 0.004288378, -0.025601253, 0.0052475836, -0.009872525, 0.010511995, 0.017288137, 0.015728727, 0.016974011, 0.0598634, -0.015358508, 0.027351381, -0.03652834, 0.016682323, 0.006299344, 0.003985471, -0.03204083, -0.015235101, 0.055510513, 0.0058898586, -0.0037723142, -0.034553837, -0.028809823, -0.036977094, 0.04478536, 0.0056149988, 0.036685403, -0.0018679266, 0.0029168823, 0.020339645, 0.0038031659, 0.016222354, -0.028226446, 0.00017739693, 0.017860295, 0.009019897, -0.033095397, 0.038637474, -0.027889883, 0.020249894, 0.035765465, 0.0058898586, -0.022246838, -0.034957714, -0.0035198918, 0.008251412, -0.026700692, -0.054972015, 0.021068865, 0.06372266, 0.01974505, -0.05326676, 0.025758315, -0.0047062775, 0.020014301, 0.009148913, -0.011207559, -0.0006471833, 0.018230515, -0.036259092, 9.115257e-05, -0.0038424316, 0.024928125, -0.010478339, 0.027508445, 0.044134673, 0.010814902, 0.025646128, 0.0002234991, -0.0057243817, -0.009362071, -0.05573489, 0.024726188, -0.0040079085, 0.014517099, 0.034823086, 0.023536997, 0.01836514, -0.012733313, 0.0073146434, -0.020350864, -0.014494661, -0.051471755, -0.00027205536, -0.048869, -0.07597356, 0.0062600784, 0.028248884, 0.0045772614, 0.03132283, -0.04207042, 0.0064900634, -0.034194835, -0.006024484, -0.02811426, -0.00826824, 0.005884249, -0.059100524, -0.016009197, -0.0247935, -0.01377666, -0.0099117905, -0.022527307, -0.010854168, -0.0077577853, -0.014012254, 0.013092314, -0.012912814, -0.025264688, 0.015066819, 0.013081095, -0.027508445, -0.0014640506, 0.0059066867, -0.012082624, -0.0050428407, 0.0225834, -0.013384002, -0.013283034, 0.015919447, 0.0013700933, -0.014909756, 0.0005851294, 0.027889883, 0.0024358772, -0.020406958, 0.031188203, 0.03590009, -0.028944448, 0.03179402, 0.017647138, -0.021831743, -0.047791995, 0.004939067, -0.02773282, 0.0038368222, -0.0067873606, 0.032242768, 0.06376754, -0.00927232, 0.017512513, 0.032153018, 0.010399807, 0.03340952, -0.032332517, 0.037852157, 0.004784809, 0.05142688, -0.023536997, 0.004111682, -0.023940872, 0.027171882, 0.010960747, -0.04608674, 0.0043865424, 0.010528823, 0.03973691, -0.02030599, 0.005701944, 0.02047427, -0.04671499, -0.008071911, 0.050080627, 0.019711394, -0.031547204, 0.010169823, 0.052010257, 0.025646128, -0.006972471, 0.016749635, -0.001348357, 0.005794499, 0.05241413, 0.005777671, 0.01147681, 0.045032177, -0.002378381, 0.025937816, 0.0031665002, 0.017557388, -0.021629805, 0.035585966, -0.012890376, -0.026319254, 0.0006047623, -0.05142688, -0.0051382002, 0.007982161, 0.0040359553, -0.0033628289, 0.02295362, -0.0011730635, -0.013361565, -0.00550842, 0.03188377, 0.0018917664, -0.0403876, -0.00017213813, -0.012026531, -0.032915894, -0.041262668, -0.009014288, 0.03307296, 0.010304448, 0.021506397, 0.025578814, -0.017063761, 0.05591439, 0.008083129, -0.017938826, 0.0015580078, -0.0004729416, 0.0075165816, 0.0056879204, -0.053311635, 0.00044208998, -0.026700692, -0.048150998, 0.03565328, -0.03159208, 0.03165939, -0.0109327, -0.0052391696, -0.02800207, 0.016166259, -0.0060188747, 0.009350852, 0.036326405, -0.008683334, 0.013967379, 0.076377444, 0.05021525, -0.03222033, 0.030694578, 0.09558399, 0.0018791454, -0.022852652, 0.033566583, 0.00082808605], [0.023883808, 0.010560522, -0.021673597, 0.01063382, -0.018076366, 0.039783794, -0.009979778, 0.047993146, 0.0056382925, 0.06630632, -0.03622039, 0.020895513, -0.033040393, -0.04903059, -0.008908503, 0.039152306, -0.03540848, 0.015200837, -0.03137146, -0.031777415, -0.023793595, -0.03430337, -0.08529609, 0.0010832569, 0.0266804, 0.012088499, -0.022880191, 0.010836799, -0.022778703, 0.011705096, 0.028687634, 0.032611884, 0.02553019, 0.00017117504, 0.040325068, -0.043054003, 0.0071211634, 0.032115716, -0.029003378, -0.02195551, -0.04573783, -0.029116143, -0.007983822, -0.021752533, 0.022756148, -0.008248822, 0.00064840366, 0.0044627087, -0.02681572, -0.030469334, 0.050925057, -0.02553019, -0.050203357, -0.024357423, -0.0469557, 0.0048235594, 0.07149355, -0.05507484, 0.03292763, -0.017715516, -0.0320255, 0.011569777, 0.045083787, -0.0155278575, 0.027943378, -0.03229614, 0.00049757934, 0.01971147, 0.050654422, 0.034168053, -0.026522528, -0.0036761668, -0.0024427902, -0.007865418, 0.012528286, -0.06224675, 0.07677099, 0.02916125, -0.0213353, 0.014321263, 0.0313038, -0.049256124, -0.013227435, 0.01347552, 0.039738685, -0.07189951, 0.044226766, -0.08475482, -0.029228909, 0.0107804155, -0.044858254, 0.01756892, 0.028755292, 0.01792977, -0.064321645, 0.068291, -0.014456582, -0.0025710615, -0.06468249, -0.0043781344, -0.048534423, -0.028214017, -0.06914802, -0.08150716, 0.040279962, 0.010470309, 0.044971023, -0.028191462, 0.040573154, -0.032476567, 0.01244935, -0.040528048, -0.029476995, 0.01191935, -0.023771042, 0.01205467, -0.02916125, -0.083852686, -0.046820384, 0.02837189, -0.049120806, -0.0025978433, 0.05015825, 0.059630584, -0.030176142, 0.025214445, -0.007053504, 0.01575339, -0.02268849, -0.026522528, -0.023996573, -0.02539487, 0.03585954, 0.0060611647, 0.048895273, 0.044407193, 0.037754007, -0.009996693, -0.030356567, 0.015291049, -0.035092734, 0.0040003685, -0.022598276, 0.039219964, -0.00013523092, -0.0025287743, -0.035476137, -0.046775274, -0.034979966, 0.014569348, -0.050834846, -0.058728456, -0.033401247, 0.033829756, 0.036829326, -0.0423323, 0.03272465, 0.010132012, -0.013588285, 0.02895827, 0.030063376, -0.09742969, -0.001198842, -0.008446163, -0.025800828, -0.06012675, 0.048850168, -0.013960413, -0.018076366, 0.030198695, 0.0027232952, -0.008919779, 0.05214293, -0.0277404, -0.06314888, 0.028439548, 0.04325698, 0.042422514, -0.02215849, -0.10166969, -0.037099965, 0.015426368, 0.0104252035, -0.043865915, 0.06274292, 0.0238387, 0.016159346, 0.021064661, 0.041565493, -0.0825446, -0.047902934, 0.0073692487, 0.0064051, -0.028416995, -0.039783794, -0.05647314, -0.044610173, -0.045715276, -0.044294428, 0.0017704238, 0.011321692, -0.058367606, -0.021087214, 0.008598397, -0.059089307, 0.030694865, -0.014952752, -0.028574867, 0.024515295, -0.021978065, 0.02325232, 0.007183185, -0.002284918, -0.0056411116, 0.009043821, 0.004620581, -0.06382547, 0.024199551, 0.019903174, -0.035904646, 0.07474121, 0.010267331, 0.0084687155, -0.02496636, 0.004817921, 0.043640386, 0.023996573, 0.0533608, 0.038250178, 0.028078698, -0.013678498, -0.03633316, -0.00044331077, 0.007634248, -0.0853412, -0.069689296, -0.003907337, -0.030785078, 0.045061234, 0.011716372, -0.009111481, 0.029860398, -0.0076793544, -0.011682542, 0.0031377098, 0.050473996, 0.023387637, -0.0077244607, -0.002714838, -0.00518441, 0.019204024, 0.011169458, 0.039152306, 0.036536135, -0.003681805, 0.027424656, -0.0044006873, -0.020997, -0.015234667, 0.012020839, -0.034799542, 0.03470933, -0.029634867, 0.06608079, -0.013058285, -0.0192153, 0.017523814, -0.04111443, -0.055796545, 0.0041920706, 0.017625302, -0.047542084, 0.01813275, -0.016914878, 0.031439118, -0.05327059, 0.0066982917, 0.034799542, -0.04431698, 0.079838224, 0.015031688, -0.00055149547, 0.018685302, 0.011118713, 0.02496636, 0.005164676, -0.0042681876, -0.018549982, -0.011806585, 0.003064412, 0.011862968, -0.027695293, 0.06436675, 0.05584165, 0.076410145, -0.004065209, -0.013610838, 0.009703501, -0.058728456, 0.0104252035, 0.0043414854, 0.0070929723, -0.026206784, -0.0327472, -0.020545939, 0.013103392, -0.006416377, 0.0824995, -0.015347432, -0.015403816, 0.04673017, -0.01842594, -0.0077244607, -0.050970167, -0.007149355, -0.049752295, 0.011530308, 0.06364505, 0.039716132, -0.018279344, -0.003890422, -0.04645953, -0.054668885, -0.008147333, 0.07383908, 0.003718454, -0.014174667, -0.019429557, -0.03935528, -0.0056326543, -0.070095256, -0.01767041, 0.015516581, 0.0071719084, -0.030649759, -0.090348, -0.012979349, 0.0065798876, -0.017320834, 0.037663795, -0.049391445, -0.009641481, 0.039039537, -0.029702526, 0.04594081, -0.008327758, 0.03087529, -0.031033162, 0.015854878, -0.055525906, 0.0012369005, 0.04537698, 0.057600796, 0.034844648, -0.009945949, -0.004124411, -0.038814005, 0.018324452, -0.02278998, -0.01935062, 0.051827185, -0.044068895, 0.028078698, 0.040798686, 0.013554456, 0.01885445, -0.016903602, -0.010989033, 0.0018634557, 0.05426293, -0.028800398, 0.0044937194, -0.031326354, -0.02232764, -0.027898272, 0.0018028441, 0.041362513, -0.009934671, -0.017974878, 0.009748608, -0.006856164, -0.001063523, 0.0050124424, 0.02724423, 0.051015273, -0.003408348, -0.06445696, -0.016328495, 0.01624956, -0.03633316, -0.008260098, 0.035521243, 0.003949624, -0.058006756, 0.034258265, 0.019328067, -0.007927439, -0.0125846695, 0.0042315386, 0.010148927, -0.0076229717, 0.0047559, -0.008141695, -0.03998677, -0.009878289, 0.045692723, 0.0011480973, -0.0044570705, 0.0041948897, 0.055525906, -0.017388495, 0.021515725, -0.012652328, -0.010019246, 0.042693153, 0.033807203, -0.013148499, 0.020816576, -0.013971689, -0.0138702, 0.023568064, -0.0062528667, -0.044294428, 0.03998677, -0.016080411, 0.017512538, -0.04246762, 0.038475707, -0.016723176, -0.012077223, -0.03209316, 0.008891587, 0.04097911, 0.010673288, -0.014129561, -0.050654422, -0.006517866, -0.034731884, -0.030785078, 0.011862968, 0.0062133987, -0.025146784, 0.014219774, 0.0033096778, -0.008919779, -0.024785934, -0.065765046, -0.0027331624, 0.052954845, -0.051601656, -0.051601656, -0.030649759, -0.048399102, -0.019925727, 0.0633293, -0.018707855, -0.0051731337, -0.01423105, 0.013385307, -0.06662206, 0.0052295164, -0.007459461, 0.037190177, 0.001281302, 0.07212504, -0.04465528, -0.0074312696, 0.006140101, -0.001935344, -0.001367286, 0.00081755244, 0.014219774, -0.034258265, 0.024582956, -0.029206356, 0.00086406834, -0.025079126, 0.010278608, 0.055661224, -0.05227825, -0.032454014, 0.010848075, 0.016847217, 0.04325698, -0.0044965385, 0.011874245, 0.005142123, -0.0033576032, 0.035882093, 0.03249912, -0.002387817, 0.028800398, 0.027853165, -0.015167007, 0.011197649, -0.03150678, -0.054398246, -0.038114857, -0.016317219, 0.017275728, 0.02041062, 0.012934243, 0.030717418, 0.043369748, 0.0266804, 0.011851691, -0.002107312, -0.017625302, 0.034731884, -0.036829326, -0.010447756, -0.0044147833, -0.025214445, -0.011242756, -0.039964218, 0.00038164193, -0.011535946, 0.03854337, 0.003084146, 0.015415092, 0.021301469, -0.007572227, -0.029138695, 0.00028649575, 0.04309911, 0.029251462, 0.038114857, 0.0017422324, 0.016948707, -0.043843362, 0.0048122825, -0.01760275, -0.038475707, -0.00016465576, -0.035115287, -0.022541894, 0.02704125, 0.011930627, -0.038678687, 0.0067208447, 0.0033378692, 0.035656564, -0.03477699, -0.028078698, -0.0074876524, 0.06499824, 0.029431887, 0.02347785, -0.0049222293, 0.02017381, -0.06842632, 0.02810125, 0.029905504, 0.044903364, -0.0192153, -0.030694865, -0.02397402, -0.030266354, 0.014400199, -0.0137010515, 0.004775634, 0.011705096, 0.077357374, 0.051195696, -0.0019889078, -0.019643812, 0.069193125, 0.013238711, -0.02433487, 0.021425512, 0.026657848, 0.007701908, -0.019057428, -0.0026514072, -0.02525955, 0.058863774, -0.007887972, 0.007989461, -0.005621378, 0.025597848, 0.004834836, 0.016903602, 0.018234238, -0.029228909, 0.018820621, -0.0075835036, -0.047136128, -0.021245087, -0.026274443, 0.013960413, 0.00022500311, 0.0017774717, 0.020297853, 0.0050829207, -0.008818289, 0.061976112, 0.026139125, 0.0003774132, 0.020117428, 0.030469334, -0.05277442, 0.006822334, -0.011806585, 0.0065065897, -0.01624956, -0.0010007969, 0.051917396, -0.06310377, 0.0011008766, 0.03969358, -0.024425084, -0.00062091695, 0.014896369, -0.009945949, 0.017354665, -0.042287193, -0.009635842, 0.054127607, -0.011220202, 0.023083169, 0.061570156, -0.039783794, 0.06603568, -0.014558071, 0.0046685063, 0.027650187, 0.0082657365, -0.013001903, -0.019508492, -0.019170195, 0.0001888828, -0.035904646, -0.02902593, -0.023207212, 0.0469557, 0.044497404, -0.018256791, 0.06423143, -0.018820621, 0.06811058, -0.057510585, 0.03364933, 0.016982537, 0.06860674, -0.018414663, -0.056382924, 0.035904646, -0.011614882, 0.025552742, -0.0065968023, -0.030920397, 0.02645487, -0.0039580814, 0.033265926, 0.010684565, 0.0110341385, -0.00931446, 0.019282961, -0.038250178, 0.0044937194, 0.0054635056, -0.014388923, -0.0036705285, 0.030785078, 0.004693879, 0.010250416, 0.026522528, -0.021684874, 0.0128102, 0.028777845, 0.06378037, -0.018967217, -0.004087762, -0.03001827, -0.027221676, -0.0146144545, -0.009590736, 0.038250178, -0.014772327, -0.012776371, -0.04567017, -0.038881667, -0.014118285, -0.02374849, -0.020320406, 0.0043386663, -0.047542084, 0.008575843, -0.043414854, -0.03265699, -0.0013271131, -0.03441614, -0.013655945, 0.034122948, 0.0003886898, -0.013813817, -0.009821906, -0.014467859, 0.005621378, 0.022214873, -0.0021157693, 0.011581053, 0.00960765, -0.0026443591, 0.011603606, 0.04068592, -0.0026344922, 0.013464243, -0.02410934, -0.050744634, 0.014456582, 0.010442118, 0.016272113, 0.049752295, 0.020557215, -0.01816658, -0.013013179, 0.014975305, -0.060803346, 0.024876148, -0.02354551, -0.040528048, -0.0105266925, -0.053856973, 0.060848452, -0.01792977, 0.04659485, -0.02123381, 0.026590187, -0.00921297, 0.037009753, -0.013069563, 0.019147642, -0.003163082, -0.0035464861, -0.047045913, 0.0156519, -0.0072000995, 0.010509778, 0.0192153, -0.0009415949, 0.0025964337, -0.01829062, -0.015324879, 0.0038678688, -0.00022641268, 0.021177428, 0.015854878, 0.003354784, -0.014512965, -0.02916125, 0.0023173383, 0.07023057, -0.024379978, -0.023658276, 0.03101061, 0.013971689, -0.033401247, 0.05087995, -0.038588475, 0.0069012702, 0.0142084975, 0.0004915886, -0.042445067, 0.0448357, 0.04454251, -0.017117856, -0.05854803, 0.024357423, 0.01291169, 0.024582956, 0.06720845, -0.005429676, 0.020839129, 0.015663177, -0.01839211, -0.0026471785, -0.009929033, -0.0334238, -0.01162616, -0.0074087167, 0.012189989, -0.010808607, 0.0057848883, 0.023996573, 0.04210677, -0.01717424, -0.008902864, -0.013171052, 0.0023765403, 0.015640624, 0.051376123, 0.033604223, -0.0048883995, 0.04537698, -0.031687204, 0.034483798, -0.029928057, 0.010842437, -0.007668078, 0.008451801, -0.061434835, -0.0112878615, 0.0161819, 0.0018902376, -0.0355889, -0.043640386, -0.060848452, -0.062788025, 0.046279106, -0.022068277, 0.028123803, -0.010588714, 0.012968073, -0.022767426, 0.002103083, 0.03998677, -0.016497644, 0.008767545, 0.0138025405, 0.0017718334, -0.01885445, 0.045557406, -0.013994242, 0.030401673, 0.047812723, 0.01525722, -0.021899128, -0.049165912, 0.011908074, 0.0003515123, -0.025507636, -0.020715088, 0.037077412, 0.04289613, 0.030852737, -0.009855735, 0.03137146, 0.00036472705, 0.018538706, -0.01287786, -0.015843602, -0.018719131, -0.008502545, -0.045174, 0.015279773, -0.035679117, -0.001991727, -0.017681686, 0.040776134, 0.06481781, -0.004437336, -0.013689774, 0.00551425, -0.003907337, -0.014997859, -0.04722634, 0.02278998, -0.0028586143, 0.015742114, 0.03827273, 0.015279773, 0.028755292, -0.020715088, 0.020997, -0.009579459, -5.6382927e-05, -0.04391102, -0.016102964, -0.028529761, -0.05277442, 0.01205467, 0.01291169, 0.03642337, 0.046685062, -0.036107626, -0.005892016, -0.022102106, 0.020015938, -0.0327472, -0.019271685, 0.008959247, -0.050113145, -0.01875296, 0.00525207, 0.006557334, -0.001324294, -0.019666364, -0.0032420182, -0.002833242, -0.017986154, 0.008795736, 0.009291906, -0.03313061, 0.037866775, 0.033333585, -0.00260912, -0.023365084, 0.019734025, 0.018944664, 0.0016506101, 0.013734881, -0.009150949, -0.02625189, 0.03813741, 0.005818718, 0.0030926035, -0.017027644, -0.0072113764, 0.004242815, -0.032814864, 0.029003378, 0.018279344, 0.006331803, 0.015155731, -0.009917757, -0.024785934, -0.024041679, -0.0256204, -0.022857638, 0.008682971, 0.013554456, 0.03579188, 0.057781223, -0.017084027, 0.005260527, 0.019226577, 0.0076962695, 0.024921253, 0.014862539, 0.020264024, -0.011124351, 0.07131313, 0.0089761615, 0.0074650995, 0.007459461, -0.010814245, -0.000483836, -0.049346335, 0.010994671, 0.015618071, 0.09327991, 0.005412761, -0.02965742, 0.03337869, -0.06202122, 0.0027528964, 0.018899556, 0.0068730786, -0.0174336, 0.019835513, 0.026928486, -0.028913165, 0.0070591425, -0.030627206, -0.015978921, 0.0029544653, 0.036017414, 0.027695293, 0.015088071, 0.037167624, -0.02255317, -0.003315316, 0.012111053, 0.027131464, -0.0029798376, 0.026477423, -0.0043076556, 0.015437645, 0.010989033, -0.06905781, 0.013689774, 0.0112935, -0.002110131, 0.0077639287, 0.022462958, 0.0065235044, 0.0103237135, -0.038295284, -0.013520625, 0.014467859, -0.031055715, -0.010983394, 0.026612742, 0.004335847, -0.0115923295, 0.010701479, 0.014456582, 0.013351477, -0.0061626537, 0.044204213, -0.025688061, 0.051827185, -0.0023427105, -0.036513582, 0.00065122277, 0.013193605, -0.015020411, -0.0068110577, -0.014772327, -0.0001421026, 0.016858496, -0.056969307, 0.046414424, -0.023861254, 0.042512726, -0.01518956, -0.003219465, -0.047406763, 0.015144454, -0.0066982917, -0.019192748, 0.0017563282, 0.00019258293, -0.01472722, 0.049165912, 0.020579768, 0.029544653, -0.01347552, 0.12855308, -0.023207212, -0.0120997755, -0.0129906265, 0.027650187], [-0.024294432, 0.013960744, -0.014542443, 0.038802657, 0.030476397, 0.057394173, -0.024841914, 0.061272155, -0.0036669767, 0.03665836, -0.055934224, 0.013036872, -0.006073608, -0.0018577257, -0.016732363, 0.04293157, -0.05356181, 0.0076133963, 0.0018962204, -0.04464245, 0.0069632637, -0.053881176, -0.07733157, 0.015683027, 0.031023877, -0.014131832, -0.013744034, 0.01635597, -0.00953528, 0.009039126, 0.04049072, 0.009797614, 0.028126795, 0.004952985, 0.037160218, -0.024134751, 0.020895494, 0.007710346, -0.0310695, -0.010829843, -0.050048813, -0.02465942, -0.024887538, -0.018203717, -0.0027331237, -0.0064557036, -0.004893104, -0.02630186, -0.027328385, -0.04400372, 0.0072313007, -0.022971356, -0.019823344, -0.037548017, -0.062412743, 0.013470294, 0.028514592, -0.050231308, 0.030841384, -0.023952259, -0.020416448, 0.009238728, 0.07605412, -0.018454645, -0.001471353, 0.0044482765, 0.011360214, 0.022754645, 0.028240852, 0.031388864, -0.02929019, 0.024408491, 0.008936473, -0.031662606, 0.01756499, -0.05534112, 0.08919365, 0.0147135295, -0.04528117, 0.0103565, 0.018956501, -0.060815923, -0.0324382, 0.005648741, 0.010972415, -0.05214749, 0.028628651, -0.0980902, -0.0009381301, 0.0010158324, 0.0013351958, 0.008805307, 0.014884617, 0.021032363, -0.0252069, 0.03720584, 0.022184353, -0.0045110085, -0.05356181, -0.0073738736, -0.018762602, -0.02301698, -0.043775603, -0.068252526, 0.023678519, 0.02751088, 0.05611672, -0.034171887, -0.018545892, -0.006906234, 0.016869234, -0.0144511955, -0.020154115, 0.029039262, -0.03335067, -0.0023296422, -0.009461142, -0.037502393, -0.037342712, 0.052831836, -0.0677963, -0.040011678, 0.03624775, 0.040787272, -0.024157563, 0.023359155, -0.013219365, 0.0238382, 0.008081036, 0.021807961, -0.018557297, 0.021169234, 0.07906526, 0.014724935, 0.11460585, 0.03460531, 0.053288072, 0.006803582, -0.06145465, 0.00046657003, -0.057576668, 0.018443238, 0.0018206567, 0.052512474, -0.050641917, -0.0010785644, -0.026279049, -0.048862606, -0.055432368, 0.019983027, -0.02159125, -0.020199738, 0.0010557529, 0.016264724, 0.033168174, -0.033031303, 0.0036498678, 0.034285948, -0.004128913, 0.024636608, 0.059766587, -0.05055067, 0.011884882, 0.010305174, -0.012763131, -0.06556075, 0.040764462, -0.021967642, -0.045303985, 0.03309974, 0.027077457, -0.047220167, 0.024727855, -0.0004287882, -0.066108234, 0.027100269, 0.029746423, -0.010721487, -0.018591514, -0.08280638, -0.02712308, 0.037570827, 0.027716184, -0.017108755, 0.029039262, 0.03132043, 0.007858622, -0.0074537145, 0.018340586, -0.07422919, -0.05547799, -0.012569233, -0.015146952, -0.03132043, 0.0037667777, -0.06181964, -0.020610347, -0.033419102, -0.018614326, 0.014143238, 0.015717244, -0.046376135, -0.0310695, -0.023028385, -0.062230248, 0.04443714, 0.0025663134, -0.024819102, 0.039692312, -0.01696048, 0.030042974, 0.010926792, -0.0115769245, 0.004710611, -0.0006194795, 0.016344564, -0.052512474, -0.00474768, 0.007887136, -0.05570611, 0.070761815, -0.015306634, -0.010909683, -0.015409286, 0.020473478, 0.011793636, 0.006159152, 0.014097615, 0.021979049, 0.0252069, -0.008514457, -0.048451997, -0.023051197, 0.03257507, -0.07336234, -0.054611146, -0.010698675, -0.0030938333, 0.0662451, 0.012614856, -0.004185942, 0.042064726, -0.03476499, -0.027214328, 0.051828124, 0.055249874, 0.0045908494, 0.0469008, -0.021306103, -0.00017082023, 0.006872017, 0.01605942, 0.046102393, 0.01838621, 0.0046849474, 0.025982497, -0.0038665787, -0.032643504, -0.015979579, 0.002315385, -0.029039262, 0.053607434, -0.037662074, 0.08061646, -0.03923608, -0.037000537, 0.03148011, -0.05953847, -0.044345897, -0.04249815, 0.047493905, -0.028948015, -0.013641382, 0.04208754, 0.045007434, -0.010864059, 0.024864726, 0.013709816, -0.051417515, 0.075050406, 0.014040586, 0.0004455405, 0.0469008, 0.021614062, 0.063963935, 0.023906635, -0.012455174, -0.026666848, -0.0386886, 0.014896023, 0.0052295765, -0.034012206, 0.042840324, 0.045691784, 0.07459418, 0.03159417, 0.016983291, 0.016481435, -0.06268648, 0.015683027, -0.0051868046, 0.0064614066, -0.051736876, -0.026780905, -0.030704513, 0.013242177, -0.0027930043, 0.11104723, -0.036954913, -0.026735282, 0.08914802, -0.01764483, -0.0134817, -0.054976135, 0.028491782, 0.0043000006, 0.04074165, 0.028765522, 0.045714594, -0.015694432, -0.0090163145, -0.04359311, -0.08955863, 0.020827059, 0.043821227, -0.0135387285, 0.00066225143, -0.027031833, -0.034308758, 0.014485413, -0.048953854, -0.003222149, 0.0036726797, -0.029404249, -0.03955544, -0.09088171, 0.0027602126, -0.0016281833, 0.021842178, -0.01682361, -0.044368707, 0.008075332, 0.011987535, -0.036156505, 0.02860584, -0.018454645, 0.003749669, 0.0066895233, 0.04386685, -0.017211407, 0.0013038297, 0.021625467, 0.075369775, 0.022435281, -0.011251858, 0.00021011691, -0.039874807, -0.005942441, -0.008075332, -0.01246658, 0.07518728, -0.049136348, 0.018762602, 0.026142178, 0.0007820127, -0.024340056, -0.031708226, 0.0036156503, -0.02399788, 0.047174543, -0.068617515, 0.015899736, -0.049181968, -0.025229711, -0.0002486116, -0.029427059, 0.01160544, -0.008571487, -0.027328385, 0.013584352, -0.017348278, -0.03090982, -0.02112361, 0.018762602, 0.027875867, 0.033464726, -0.050048813, -0.0107899215, 0.022172948, -0.02874271, 0.027214328, 0.04411778, -0.023381965, -0.01975491, 0.03079576, 0.04124351, -0.049820695, -0.00715146, 0.022036077, 0.048634488, -0.01219284, -0.008086738, -7.6276534e-05, -0.02479629, 0.02063316, 0.0013915121, -0.006655306, -0.011542707, -0.010670161, 0.039806373, -0.015990984, 0.022104513, -0.0062789135, 0.011976129, 0.023769764, 0.03955544, -0.044779316, 0.043228123, -0.0060622026, 0.0041431705, 0.042749077, -0.048725735, -0.032483824, 0.031206371, -0.011896288, 0.04154006, -0.075369775, 0.023861011, -0.013801063, -0.037958626, -0.030339526, 0.025549075, 0.04922759, 0.011325996, -0.029860482, -0.07655598, -0.012991249, -0.038574543, -0.0013786806, 0.03937295, 0.028309288, -0.03353316, 0.049957566, -0.00069539965, -0.0052609425, -0.017006103, -0.072176136, 0.0073282504, 0.027579315, -0.03581433, -0.052649345, -0.024887538, -0.057166055, -0.049683828, 0.05926473, -0.02944987, -0.011514192, 0.031137936, 0.036270563, -0.062412743, 0.028149607, 0.040102925, 0.049181968, -0.0063245366, 0.05488489, -0.014781965, -0.035472155, 0.0320504, -0.014268702, 0.021465786, 0.009655041, -0.008691248, -0.024590984, 0.011559816, -0.01997162, 0.008862335, -0.0019104778, -0.025138466, 0.054428656, -0.022617776, 0.003929311, -0.04124351, 0.024887538, 0.06619948, -0.010801327, -0.0053750006, 0.039327327, 0.028993638, 0.051828124, 0.015717244, 0.028081171, 0.017701859, 0.03378409, -0.025982497, 0.0080126, -0.035107166, -0.035631835, -0.027305573, 0.022811674, 0.0136641925, 0.02205889, 0.06948436, 0.0011006633, 0.01945836, -0.0027231437, 0.023313532, -0.022115918, -0.0030596158, 0.043387804, -0.03690929, 0.0018306369, -0.003407494, -0.028514592, -0.0053436346, -0.0383008, -0.020017244, -0.0064956243, 0.039281704, 0.002937003, 0.0008312004, 0.019640852, -0.047493905, -0.016641116, -0.025503451, -0.0046478785, 0.009118967, 0.026872152, -0.00045159986, 0.013766846, -0.06373582, 0.021625467, -0.008081036, -0.026666848, 0.018808225, 0.0022440983, 0.008668437, 0.021032363, 0.034650933, -0.022503717, 0.0024665124, -0.0051069637, 0.06510452, 0.007487932, -0.01629894, -0.012842973, 0.055614863, 0.0195382, 0.010687269, 0.011793636, 0.04402653, -0.06980372, 0.018317774, -0.008542972, 0.07094431, 0.025982497, -0.020108491, -0.02424881, -0.030750137, -0.005463396, -0.01594536, 0.020051463, -0.019389924, 0.07395545, 0.034263134, 0.009552388, -0.03652149, 0.04443714, 0.019081965, 0.0064271893, 0.039281704, 0.03257507, 0.041585684, 0.020348014, -0.0018805374, -0.024362868, 0.048451997, 0.010248145, -0.0205191, -0.004958688, -0.0075335554, 0.011713794, 0.011736606, 0.0073567647, -0.021306103, 0.025663134, 0.008177985, -0.028560216, -0.010573211, -0.026780905, 0.027168704, -0.026780905, 0.0066267913, 0.022572152, 0.012170028, 0.022252789, 0.04482494, 0.0073624677, -0.0010635944, -0.007647614, -0.0026860747, -0.041083824, 0.019412735, 0.023632895, -0.0117023885, -0.07162866, -0.008120956, 0.06583449, -0.036453057, -0.0016738066, 0.027488068, -0.08248702, -0.013185148, 0.031388864, -0.020336607, -0.001170524, -0.026758093, -0.06314272, 0.04347905, 0.021773743, 0.047220167, 0.02507003, -0.025024407, 0.039988864, -0.024499739, 0.016150665, 0.01586552, -0.011080771, 0.01578568, -0.011673874, -0.00756207, -0.0075107436, -0.035654645, -0.027305573, -0.03567746, -0.0030909819, 0.03090982, -0.015911143, 0.062139, -0.042703453, 0.041905046, -0.010111274, 0.028491782, -0.0022326927, 0.031799473, -0.0431825, -0.0373199, 0.03893953, -0.010162601, 0.035107166, -0.021990454, 0.0018092509, 0.034628123, 0.011884882, 0.034924675, 0.017530771, -0.0021186343, -0.0031964858, 0.027853055, -0.052649345, -0.0028300732, -0.018842444, -0.025366582, 0.011736606, 0.01539788, -0.017405307, -0.027716184, -0.006809285, -0.045053057, 8.448562e-06, 0.046855178, 0.08828118, -0.033715654, -0.031776663, -0.030978253, -0.027624937, -0.02712308, 0.013994962, 0.05137189, -0.002040219, -0.009837534, -0.033578783, -0.041882236, -0.025800003, -0.033168174, -0.015409286, -0.0053379317, -0.053744305, -0.005221022, -0.014177456, -0.0055061677, 0.007961274, -0.03175385, -0.03706897, 0.07231301, -0.017872946, -0.000619836, -0.0045965523, -0.020188332, 0.032940056, 0.02399788, 0.008474537, -0.029997353, -0.013322018, 0.015956767, 0.02159125, 0.040148545, -0.003954974, -0.03611088, -0.063963935, -0.023883823, 0.021739526, -0.010145492, 0.038574543, 0.046855178, 0.029084885, 0.008696951, -0.0072655184, 0.0123525215, -0.06423768, 0.029883293, -0.027077457, -0.015158358, -0.03148011, -0.035221227, 0.02057613, -0.05871725, 0.061500274, -0.020336607, 0.05424616, -0.015968172, 0.008423211, -0.014234485, -0.0061192317, 0.008537269, 0.0012147217, -0.014565254, 0.0019689326, 0.021636873, 0.009056235, 0.024476927, 0.019321488, -0.018351993, -0.028583027, -0.035905574, -0.008913661, -0.020952523, 0.005600266, -0.018500268, 0.006911937, -0.018397616, -0.007887136, -0.0073168445, 0.04744828, -0.029221755, -0.0075848815, 0.03759364, 0.007761672, -0.005574603, 0.032392576, -0.008582893, -0.0107271895, 0.027168704, -0.0025549075, -0.014371355, 0.027351197, 0.028491782, 0.013652787, -0.052512474, 0.026780905, 0.012341116, 0.023883823, 0.0490451, 0.007493635, -0.005537534, 0.003507295, -0.025868438, 0.020188332, -0.032232895, -0.033168174, 0.0021500003, -0.0044311676, 0.02630186, -0.006712335, 0.011445758, 0.016458623, 0.017770294, -0.008497349, -0.015500532, -0.014953053, -0.0044283164, 0.02282308, 0.01430292, 0.047174543, -0.016515652, 0.039669503, -0.020005839, 0.028377723, -0.029632365, 0.028674275, 0.0113773225, 0.01926446, -0.00980902, -0.0008468834, -0.004818966, 0.0073852795, -0.0076761283, -0.03893953, -0.024066316, -0.05082441, 0.04295438, -0.011325996, 0.028833956, 0.008349073, 0.02397507, -0.042566583, 0.020735811, 0.021773743, -0.029084885, 0.006022282, 0.0076818313, -0.008702653, -0.024020692, 0.0279443, -0.0011370194, 0.034628123, 0.03597401, 0.020747218, -0.024705043, -0.039144833, -0.032529447, -0.010601725, -0.019275865, -0.021933425, 0.014679313, -0.004821818, 0.02372414, -0.031137936, 0.020610347, 0.0015440652, 0.008987799, -0.003974934, -0.003983489, -0.016732363, 0.0036840853, -0.05369868, -0.004836075, -0.030841384, 0.0008568635, 0.008377587, 0.021728119, 0.044094965, 0.03259788, -0.0056458893, 0.0021257629, -0.03312255, -0.0044539794, -0.061089665, 0.0030225469, 0.0063644573, 0.005035677, 0.041494437, 0.025389394, 0.011713794, 0.00092743716, 0.013937933, -0.0063758628, -0.01498727, -0.040216982, -0.017770294, -0.020382231, -0.051052526, 0.0124893915, -0.00080696295, 0.022241382, 0.039281704, -0.023746952, -0.013926527, -0.059903458, 0.03134324, -0.010755705, -0.020108491, 0.0279443, -0.03884828, -0.018682761, 0.024590984, -0.013504511, -0.008936473, 0.017656235, -0.016937668, -0.020587536, 0.0059880647, -0.009204511, 0.015922548, -0.0076076933, 0.028902391, -0.00783581, -0.032096025, 0.005226725, -0.0097691, 0.014565254, -0.0022284153, 0.02213873, -0.007927056, -0.018123874, 0.013128119, 0.03544934, -0.008491646, 0.017850135, 0.0023082562, -0.007864324, -0.028993638, 0.038620163, 0.02534377, -0.019572416, 0.037662074, 0.014724935, -0.050185684, -0.0055546425, -0.010698675, -0.024590984, 0.0042315656, 0.035358094, 0.01045345, 0.05036818, -0.0022654843, -0.002968369, 0.03132043, 0.026119366, 0.020473478, -0.017496554, 0.03855173, -0.013036872, 0.020382231, 0.011303185, -0.008657031, -0.031525735, 0.0026989062, -0.004895956, -0.024682231, -0.007727455, 0.020040056, 0.05712043, -0.02233263, -0.0046649873, 0.016892046, -0.0662451, -0.008508755, 0.027989924, -0.0016695294, -0.019994432, -0.011525598, 0.025594698, -0.022754645, -0.0076761283, -0.010761407, -0.0009039126, -0.008394696, 0.051006902, 0.016789392, 0.011628251, 0.049546957, 0.0046279184, -0.0052067647, 0.010881169, 0.025549075, -0.0047163134, 0.00975199, -0.03118356, -0.026461542, 0.028719898, -0.043136876, 0.011565519, 0.022515122, 0.02268621, -0.017359683, 0.0191504, 0.007989789, 0.017154379, -0.027351197, 0.008668437, 0.03132043, -0.060040325, -0.015876925, 0.007134351, -0.016458623, 0.008286341, 0.002442275, 0.03950982, -0.009826128, -0.027054645, 0.023165256, -0.0148389945, 0.014656501, 0.023142444, -0.011953318, 0.013025466, 0.014747747, -0.013572946, -0.012124405, -0.042133164, 0.018580109, -0.01315093, -0.024568174, 0.039601065, -0.039897617, 0.04019417, -0.023085414, 0.0009531003, -0.057439797, -0.011582628, -0.016937668, 0.024590984, 0.0026675402, -0.047220167, -0.0051183696, 0.023199473, 0.019561011, -0.003892242, 0.010419232, 0.116248295, -0.019218836, -0.027488068, -0.0019646555, -0.0042629316], [0.0052235797, -0.016188392, -0.025906133, 0.04298865, 0.011547171, 0.0059059393, -0.009864802, 0.027953211, -0.0011088343, -0.0022235508, -0.0123177655, 0.015223676, 0.00915303, -0.039365087, -0.038118016, 0.0133766, -0.06927126, 0.03275326, -0.0032470901, -0.051388733, -0.029929701, -0.04814164, -0.05472994, -0.00055441714, 0.040612157, -0.013270716, -0.008658907, 0.01991784, -0.031670894, 0.028988516, 0.03124736, -0.0007911841, 0.04425925, 0.0136001315, 0.02316493, -0.01369425, 0.027764974, 0.0159178, -0.024000231, 0.020953143, -0.016117802, -0.016847221, -0.0017235461, -0.02668261, -0.02052961, 0.011747172, -0.00942362, -0.0136001315, -0.010753045, -0.05261227, -0.010347159, -0.027223792, 0.025976721, -0.025294362, -0.0384239, 0.013776603, 0.01816488, -0.084989056, 0.048706353, 0.00048088699, -0.04381219, 0.032376785, 0.059435867, 0.027529677, -0.04112981, -0.01852959, 0.018682534, 0.005717702, 0.034306213, 0.048612233, -0.013858957, 0.040000387, 0.0074883075, -0.03978862, -0.0043882774, -0.021906095, 0.06710653, -0.015541326, -0.027906151, -0.008423611, 0.03329444, -0.021376677, -0.0106118675, -0.008894203, 0.018670768, -0.033341497, 0.020906083, -0.09985979, -0.041506283, -0.009441268, 0.00554123, 0.00415004, 0.03456504, 0.0267532, -0.029600285, 0.024823768, 0.03797684, 0.014941321, -0.039435674, -0.006676535, -0.014917791, -0.028000271, -0.051765207, -0.08630671, 0.019117832, 0.023870818, 0.028870868, -0.0029676757, -0.04705928, -0.024000231, 0.021000203, -0.036941532, -0.011135401, 0.025294362, -0.003505916, 0.0004132393, -0.043388654, -0.03703565, -0.030164996, 0.019682543, -0.08536553, -0.062730014, 0.051906385, 0.044094544, -0.018682534, 0.023682581, -0.005667702, 0.035341516, 0.0059088804, 0.041153338, -0.033459146, 0.0346121, 0.043223947, 0.01335307, 0.088094965, 0.03258855, 0.051388733, -0.03578858, -0.05030637, -0.007188305, -0.07675368, -0.007394189, 0.030494412, 0.053035807, -0.026517903, -0.020517845, -0.018282529, -0.02668261, -0.044635724, -0.033341497, -0.0019485482, -0.03129442, -0.023906114, 0.011958939, 0.039459206, 0.0017647229, 0.026941437, 0.058212325, -0.009253031, -0.005141226, 0.0481887, -0.045553382, -0.017317815, 0.044847492, -0.015447208, -0.077083096, 0.045671027, 0.023741405, -0.036894474, 0.03771801, 0.0027470854, -0.056941725, 0.003805919, -0.008105961, -0.028517922, 0.05741232, 0.049647536, -0.00827655, -0.019200185, -0.07741251, -0.030353233, 0.057035845, 0.053647578, -0.02607084, -0.013294246, 0.03400033, 0.006047117, 0.0017044282, 0.024635531, -0.035953287, -0.016400158, -0.02743556, 0.0042470996, -0.0145883765, -0.009864802, -0.010123627, 0.0030235585, -0.023106106, -0.0011485405, -0.0031500305, -0.009841272, -0.051953442, -0.0009551563, -0.02807086, -0.05030637, 0.016458983, 0.020353138, -0.042847473, 0.0286591, 0.019141361, 0.03527093, 0.033576794, 0.015553092, -0.018541355, -0.018776651, 0.0044618077, -0.034776807, -0.025953192, -0.009894213, -0.039294496, 0.08225962, -0.029412048, -0.006241237, -0.0087942025, 0.018494297, 0.008882439, 0.033647384, -0.010735398, 0.025035536, 0.040612157, -0.00895891, -0.043059237, -0.03174148, 0.06418885, -0.09675387, -0.021717858, -0.0027206144, 0.0065412396, 0.0664477, 0.001986784, 0.011923645, 0.02934146, -0.037506245, -0.0083412565, 0.0573182, 0.070635974, 0.01921195, 0.0048735766, -0.011017754, -0.02672967, 0.0033765032, -0.00043493067, 0.053788755, 0.04367101, -0.003973568, 0.05863586, 0.007611838, -0.014270726, -0.0063294726, 0.022011977, -0.030235587, 0.04360042, 0.014082489, 0.09444797, -0.048706353, -0.026353195, 0.028847337, -0.08616554, -0.05863586, -0.02927087, 0.07364777, -0.02602378, -0.0037353302, 0.023682581, 0.03722389, -0.010988342, 0.06875361, 0.015929565, -0.031365007, 0.043859247, -0.007541249, 0.029623816, 0.035506226, 0.002016196, 0.038870964, 0.022494335, -0.025035536, -0.014858967, -0.07680074, 0.011688348, -0.01174129, -0.03265914, 0.042141583, 0.032894436, 0.06056529, 0.018564885, 0.036659177, 0.010058921, -0.020282548, -0.00219708, -0.026329666, -0.0041559227, -0.048659295, -0.03922391, -0.021023732, 0.04614162, 0.046494566, 0.09844801, -0.047647517, -0.006129471, 0.060282934, -0.0021073732, -0.012729535, -0.024564942, 0.021494325, -0.023200223, 0.025506128, -0.010788339, 0.05157697, -0.016835457, -0.0067706537, -0.043365125, -0.099765666, 0.038070954, 0.046588685, 0.021588443, 0.012517768, -0.066824175, -0.010488337, 0.008758908, -0.041506283, -0.0103706885, -0.012800124, -0.025106125, -0.06673005, -0.07543602, -0.013341305, -0.013458953, 0.007376542, -0.016741337, -0.03578858, -0.0062530017, -0.0055588773, -0.06508298, 0.006794183, 0.0020720789, -0.026894378, 0.0039970973, 0.04623574, -0.010117745, 0.0013632484, 0.043129828, 0.049082827, 0.01664722, -0.0050324015, 0.0010941282, -0.03722389, -0.010600102, -0.01725899, 0.023094341, 0.04171805, -0.06903596, 0.026564963, 0.043318067, -0.018506061, -0.08560082, -0.046188682, 0.0012264824, -0.005497112, 0.010817751, -0.070777155, 0.033765033, -0.0346121, -0.026117899, 0.008311845, -0.030776767, 0.039200377, -0.010117745, -0.04828282, 0.0103001, 0.0024029643, -0.0115177585, -0.011647171, 0.018070763, -0.02468259, 0.028729688, -0.034376804, -0.003617682, -0.0049912245, 0.024235528, 0.0050500487, 0.012094234, 0.00042022465, -0.015506032, 0.010094215, 0.05854174, -0.0040559215, -0.006229472, 0.015882507, 0.03788272, -0.01105893, -0.029717933, 0.0050471076, 0.007970666, 0.058824096, 0.004305924, 0.008182432, -0.005855939, -0.005317698, 0.031553246, -0.00334415, 0.016447218, -0.0036382703, -0.0022411982, -0.0036147407, 0.014658965, -0.07816546, 0.025623776, 0.0146942595, 0.0034382686, 0.05792997, -0.051106375, -0.03830625, 0.037506245, -0.025482599, 0.056377016, -0.03767095, 0.0024691415, 0.014635435, -0.05534171, -0.025576718, 0.016117802, 0.023541404, -0.004217688, -0.009441268, -0.075812496, -0.034800336, -0.018094292, -0.05209462, 0.019317834, 0.04030627, -0.037906248, 0.025929661, 0.005452994, -0.027482618, 0.0075471317, -0.05228286, 0.0030676767, 0.001894136, -0.015929565, -0.035506226, -0.03392974, -0.07477719, -0.024517884, 0.040518038, -0.044471018, 0.010682456, 0.021647267, 0.016823692, -0.06588299, 0.032612078, 0.027082615, 0.065412395, -0.031459127, 0.011305992, 0.0030353235, -0.010753045, 0.046471037, 9.853036e-05, 0.019329598, -0.02018843, -0.0042559234, -0.022259038, -0.0081530195, -0.002389729, -0.034282684, -0.048423998, -0.025106125, 0.045341615, 0.011664818, 0.012164824, -0.06447121, 0.00717654, 0.024988476, 0.017670758, -0.017706053, 0.0520005, 0.014235431, 0.050353426, -0.0075000725, -0.02868263, 0.051671088, -0.0057824086, -0.0020073722, 0.0148001425, -0.014023664, -0.02248257, -0.032894436, 0.022317862, 0.023941407, -0.0152001465, 0.07487131, 0.018647239, 0.041529812, -0.0048706355, -0.004132393, -0.029623816, -0.008905969, 0.008176549, -0.046706334, -0.021988448, -0.026964966, -0.04291806, -0.00052426977, -0.02670614, -0.031153241, -0.011270697, 0.051012255, 0.015729563, 0.02252963, -0.009953037, -0.04828282, -0.019270774, -0.03797684, -0.025835544, -0.018553121, 0.04308277, -0.0043000416, -0.013682485, -0.059577044, -0.009717741, -0.018200176, -0.01887077, -0.017223695, -0.011711878, 0.018706063, 0.026870847, 0.039953325, -0.03583564, 0.0058235857, -0.0077000745, 0.05209462, 0.020611964, 0.009988331, -0.0013463366, 0.031529717, 0.03988274, -0.0075883083, -0.021741387, 0.043788657, -0.029529696, 0.053741693, 0.025223773, 0.050776962, 0.04581221, 0.0121059995, -0.04614162, -0.04748281, -0.021694327, -0.014176607, -0.00021709768, -0.044423956, 0.095295034, 0.05143579, -0.006829478, -0.051953442, 0.04505926, -0.0033117966, 0.0076883095, 0.0052441685, 0.012306001, 0.07769487, 0.005911822, -0.007353012, -0.013494248, 0.049647536, 0.009805977, -0.02677673, 0.02018843, -0.010141274, 0.0030264999, -0.007741251, 0.008129491, -0.027717914, 0.020000193, 0.0331062, -0.01364719, -0.051671088, -0.03058853, 0.044706315, 0.00051360787, 0.009253031, 0.028823808, -0.0021000202, 0.020929614, 0.007164775, 0.019588424, 0.01398837, 0.007776546, -0.009247148, -0.0065353573, -0.011294227, 0.012435414, 0.010847163, -0.03402386, -0.006629476, 0.032282665, -0.03901214, -0.0025250243, 0.036729768, -0.08908321, -0.007782428, 0.027482618, -0.0220708, 0.009858918, -0.016729573, -0.01764723, 0.06833007, -0.0009014793, 0.046588685, 0.020341372, -0.01930607, 0.051106375, -0.03722389, -0.009053028, 0.0071059507, -0.022917869, 0.009635387, -0.0061765304, 0.0076294853, -0.011788349, -0.019200185, -0.022953162, -0.038141545, 0.002275022, 0.016023684, -0.017376639, 0.07435366, -0.018400177, 0.015164852, 0.018294293, 0.034070916, 0.025953192, 0.023647288, -0.032070898, -0.030023819, 0.004747105, 0.009341267, 0.0286591, -0.009541268, -0.0007764781, 0.022859044, 0.0009845684, 0.051106375, 0.009705976, -0.016482512, -0.007382424, -0.0019191361, -0.039506264, -0.016988399, -0.056988787, -0.038282722, 0.026306136, 0.002722085, -0.016811928, -0.018317824, -0.03849449, -0.0346121, -0.017270755, 0.021717858, 0.08720084, -0.025106125, -0.061506476, -0.020564904, -0.017223695, -0.020517845, 0.0065530045, 0.030823827, 0.00034154742, -0.031035593, -0.04496514, -0.010194216, -0.021635503, -0.012282471, -0.012929536, -0.003817684, -0.020988438, 0.007411836, -0.030141467, 0.008058901, 0.0076883095, -0.026329666, -0.030306175, 0.050494604, -0.010000097, -0.00876479, 0.0057941736, -0.029764993, 0.027200263, 0.016270746, 0.0034412097, -0.030965004, -0.03832978, -0.00915303, 0.05750644, 0.018835476, -0.012270707, -0.031788543, -0.054400526, -0.01887077, 0.046635743, 0.025788484, 0.025553187, 0.053741693, 0.034988575, 0.02480024, 0.0010022155, -0.026376724, -0.07548308, 0.041435692, -0.007164775, -0.016411923, -0.032165017, -0.020435492, 0.03131795, -0.04122393, 0.021811975, -0.013364835, 0.047412224, -0.015176617, 0.017717818, -0.0057529965, -0.010523631, -0.0038118016, 0.011776584, 0.023729641, -0.01694134, 0.0013735427, 0.016211921, 0.025223773, 0.008200079, -0.028188508, -0.035341516, -0.04571809, -0.012447179, -0.0013110421, 0.04552985, -0.020859025, 0.008270668, -0.011853056, -0.0074294833, -0.013776603, 0.030541472, -0.0346121, -0.014611905, 0.0377886, -0.0044382783, 0.0042823944, 0.002551495, -0.007917724, -0.021176675, 0.020494316, -0.009829506, -0.014435434, 0.029506167, 0.0025897308, -0.0016294275, -0.04432984, 0.016741337, 0.030400293, 0.054212287, 0.033576794, 0.026894378, -0.016953105, -0.0010529513, -0.01303542, 0.002094138, -0.015658975, -0.04360042, -0.005817703, 0.021306088, 0.0017588405, 0.0011639819, -0.026353195, 0.031482656, -0.0009507445, -0.0069235964, -0.009476562, -0.00390592, 0.016741337, 0.03392974, 0.020247255, 0.034800336, 0.014953085, 0.03265914, 0.00013198657, 0.04884753, -0.042070996, 0.019141361, 0.008947145, -0.0023661994, -0.021659033, -0.013553072, 0.026376724, -0.0028720866, -0.0026897318, -0.014117783, -0.003617682, -0.026635552, 0.021306088, 0.0450122, 0.00844714, 0.020576669, 0.013411894, -0.018459002, 0.03463563, -0.00081471377, -0.031600304, -0.017400168, 0.019635484, 0.0020573728, -0.022470806, 0.021682562, -0.0020103136, 0.042070996, 0.042871002, 0.042094525, -0.0146472, -0.027553206, -0.039482735, -0.008382434, -0.031576775, -0.00011976218, 0.02307081, 0.007423601, 0.02052961, -0.02870616, 0.0280238, 0.031788543, -0.018929595, 0.009582445, -0.005714761, -0.015223676, -0.010458925, -0.053082865, -0.0034676804, 0.006300061, 0.012153058, -0.009800094, 0.035953287, 0.01135305, 0.053129926, 0.020082546, 0.013094244, -0.03663565, 0.0053647575, -0.04625927, 0.019859016, 0.006935361, 0.0044323956, 0.026188487, 0.03830625, 0.011782466, -0.028212037, -0.012188353, -0.0096236225, -0.011258932, -0.051106375, -0.040894512, -0.037106242, -0.034870926, 0.010429513, -0.004526514, 0.040776864, 0.024400236, -0.038353313, 0.012117764, -0.04185923, 0.020976674, 0.0025735542, -0.0048618116, 0.0047765165, -0.058212325, -0.025788484, -0.00051397557, -0.03322385, -0.010382453, -0.020564904, -0.014129548, -4.2601514e-05, -0.019423718, -0.02936499, 0.035412107, 0.013529542, 0.035553284, 0.0055206413, -0.015953096, 0.0051618144, -0.008494199, -0.003805919, 0.0049471064, -0.012541298, 0.01437661, -0.02091785, -0.0012080999, 0.03663565, -0.014494258, 0.025294362, 0.01020598, -0.023576697, -0.035459165, 0.033059143, 0.053035807, -0.04750634, 0.032988552, -0.021247264, -0.058259387, -0.024494354, 0.016458983, -0.03527093, -0.0008463317, 0.00016654572, 0.032235604, 0.04094157, -0.013470719, 0.033623856, 0.02545907, 0.0324709, -0.0032765022, -0.04169452, 0.025153184, 0.015823683, 0.021023732, 0.0011213344, -0.0006698594, -0.034165036, 0.006188295, 0.0024367883, -0.03705918, -0.013164833, 0.020082546, 0.06762418, -0.025435539, -0.0079589, 0.0013529542, -0.04675339, -0.027717914, 0.031623833, 0.015788388, -0.0050324015, -0.018776651, 0.021294324, -0.04569456, 0.0027500265, -0.007911841, -0.0027309088, 0.014070724, 0.041929815, -0.0050882846, -0.004720634, 0.026470844, -0.0060088816, -0.0048029874, 0.011841291, 0.028988516, 0.00085368473, 0.03127089, -0.025576718, -0.00075662497, 0.023506109, -0.04936518, -0.005855939, 0.021070791, 0.04352983, 0.00844714, -0.0032059134, 0.015847212, -0.010864811, -0.030917946, 0.028400274, 0.017223695, -0.041318044, -0.017858995, -0.01991784, -0.009329502, 0.00683536, -0.010753045, 0.031647366, 0.039388616, 0.0017103106, 0.008258903, -0.027200263, 0.027553206, 0.029106162, -0.013129539, 0.015400149, 0.025694367, 0.028729688, 0.0010022155, -0.017788406, 0.005302992, 0.0011897173, -0.047082808, 0.022988457, -0.067200646, 0.02041196, 0.0072294814, -0.021035498, -0.044635724, -0.0036470941, 0.026964966, 0.019929605, -0.0025029653, -0.012870712, 0.01721193, 0.0371533, 0.020953143, -0.028494393, 0.033035614, 0.11990704, 0.031717952, -0.026564963, -0.0049853423, 0.000541917], [0.016744407, -0.007290164, -0.029813508, 0.010330755, -0.007302254, 0.029039757, -0.02480832, 0.049906794, 0.0031796237, 0.011872208, -0.020431804, -0.0069395592, -0.01847325, -0.01237998, -0.024010392, 0.0076528587, -0.024228008, 0.009321255, 0.02959589, -0.031143388, -0.025291912, -0.054694366, -0.037260838, -0.00033152566, 0.017614875, -0.004693874, -0.016913664, 0.01790503, -0.025775505, 0.012041465, 0.05290507, 0.023260823, 0.01789294, -0.015378256, 0.015559604, -0.019911941, 0.014120915, 0.0522764, -0.03024874, 0.031095028, -0.020008659, 0.004884289, 0.02686359, -0.007967195, 0.026645973, -0.01790503, -0.023514709, 0.0027020758, 0.004334202, -0.04661836, -0.0150518315, -0.058998343, -0.026936129, -0.045723714, -0.0022547522, 0.009037144, 0.07669785, -0.038010407, 0.07795519, -0.033948228, -0.05367882, 0.016055286, 0.03781697, -0.017228, -0.045119226, -0.03165116, 0.017228, 0.011473243, 0.027709877, 0.03353717, -0.029136477, 0.05246984, -0.032666706, -0.019537156, -0.016442161, -0.05711233, 0.049181405, 0.01784458, -0.008777212, -0.014048376, 0.050777264, -0.006341113, -0.0032068258, -0.018848035, 0.012742675, -0.052711636, 0.028749602, -0.11848028, -0.02206393, 0.03776861, -0.024905039, 0.019138193, -0.0019268157, -0.009103638, -0.027274644, 0.005658038, -0.026452536, 0.04079107, -0.016671868, -0.012911933, -0.021012114, -0.021531977, -0.08032479, -0.074521676, 0.050728902, 0.020081198, 0.041008685, -0.0021429213, -0.030345459, -0.029982764, -0.00019797088, -0.054017335, -0.049350664, 0.0029604957, -0.004863132, -0.0020446915, 0.0054646004, -0.048746172, -0.03520557, -0.0034486223, -0.046570003, -0.044998325, 0.04461145, 0.029136477, -0.0032310055, 0.023683965, -0.020758228, 0.029354094, -0.023260823, -0.0071148616, 0.0054887803, 0.037405916, 0.039557904, 0.074183166, 0.054646008, 0.02345426, 0.08346815, -0.01234371, -0.029716788, 0.035471544, -0.034335103, 0.010941291, -0.031481903, 0.020335084, -0.040500913, -0.020721959, 0.011884297, 0.022329906, -0.04132302, -0.0079007, -0.03227983, -0.053533744, -0.00064982806, 0.044297118, 0.053437024, -0.04279798, 0.035664983, 0.039461188, 0.0015331409, 0.04245946, 0.037623532, -0.040017318, -0.0075863646, 0.064656384, 0.02485668, -0.04746465, 0.03090159, -0.020528521, -0.03169952, 0.03793787, 0.008118317, -0.0006063802, 0.0041498323, 0.016260814, -0.01593439, 0.0060660695, 0.052711636, -0.010052689, -0.010977561, -0.041081224, -0.013347166, 0.0317237, 0.016635599, -0.026428357, 0.033924047, 0.045506097, -0.0023937852, 0.0037780702, 0.027274644, -0.04202423, 0.018787587, -0.015172729, -0.033948228, -0.007967195, -0.008571685, -0.044466373, 0.022257367, -0.051405933, 0.0067098527, 0.015172729, -0.026259098, -0.022922307, 0.009158042, -0.023792773, -0.0068126163, 0.03844564, 0.03530229, 0.036221113, 0.054646008, 0.041081224, 0.006673583, 0.04245946, 0.020274635, 0.0035664982, -0.02480832, 0.010892931, -0.040500913, 0.017493976, -0.03443182, -0.022849768, 0.046521645, 0.018086378, 0.01792921, -0.031747878, 0.027395543, -0.02207602, 0.012887753, -0.010868752, 0.04057345, 0.01720382, -0.015112281, -0.047271214, -0.027419722, 0.0035332511, -0.0813887, -0.0040259114, -0.008614, -0.02691195, 0.0012981449, -0.03024874, -0.032158934, 0.014205543, -0.009931791, -0.021737505, 0.022414535, 0.038494002, 0.0020386467, 0.016115736, -0.009158042, 0.014834215, 0.0148221245, -0.0386149, 0.051260855, 0.043910243, 0.010252171, 0.036704708, 0.05213132, -0.052614916, 0.025678787, 0.03518139, 0.0060146875, 0.009460287, -0.022861857, 0.04744047, 0.02473578, -0.03636619, 0.020746138, -0.00040274227, -0.010294486, 0.029837687, 0.085934475, -0.036680527, 0.039751343, 0.0087046735, 0.017868761, -0.015728861, 0.06601044, 0.06127123, 0.0026386043, 0.03370643, 0.012500878, 0.012815214, 0.06808989, 0.015329897, -0.014882574, -0.025678787, -0.003451645, -0.037478454, -0.03786533, -0.0030043214, -0.012240947, 0.0033760834, 0.07727816, -0.0028985355, 0.051309213, 0.048770353, 0.004210281, 0.020383444, -0.021217642, 0.019005204, -0.0019585516, 0.019573426, -0.055516474, -0.029692609, -0.047996603, 0.06983083, 0.00085535506, 0.051599372, -0.040670168, -0.029789327, 0.093526885, 0.00010191344, -0.036027677, -0.038203847, -0.009182221, -0.018944755, 0.017228, 0.027274644, -0.0044248756, -0.04828676, -0.032086395, -0.012621776, -0.097492345, 0.014628688, 0.02135063, 0.003623925, 0.00429491, -0.0073082987, -0.013153729, -0.013274627, -0.01661142, -0.007852341, 0.011158908, 0.027298823, -0.043063954, -0.10232827, -0.052856714, -0.058804907, -0.028725423, -0.014036286, -0.048262578, 0.0025690878, -0.025896404, 0.015257359, 0.026621792, 0.016006928, -0.024905039, 0.006395517, 0.030417997, 0.01731263, 0.0014258437, 0.015015562, 0.012246992, 0.047682267, 0.0030587255, -0.0468118, -0.011878252, -0.000679297, -0.03784115, 0.014882574, 0.07123324, -0.059433576, -0.015559604, 0.07278074, 0.011999151, -0.043523367, 0.016744407, -0.0019373944, -0.01797757, -0.010475833, -0.07916417, 0.038590718, 0.016393801, -0.014846304, -0.03298104, -0.008843707, 0.0767462, 0.0148221245, -0.08849751, 0.02485668, 0.0002965785, -0.0129361125, -0.028459447, 0.016937844, 0.034721974, 0.0522764, -0.014737496, -0.004512527, 0.02475996, -0.0025902449, -0.027008668, 0.058321312, 0.013661502, -0.0073929275, 0.02144735, 0.035979316, -0.01861833, 0.03298104, 0.0248325, 0.0014477564, -0.022849768, 0.029160656, -0.011666681, -0.04971336, 0.030829052, 0.0008394872, 0.028120931, -0.028797962, 0.007151131, 0.053920615, -0.035519905, 0.025291912, 0.025799686, 0.01784458, 0.04129884, 0.023272911, 0.004829885, 0.038977593, 0.0046334253, 0.025267733, 0.0044671902, -0.005295343, -0.026355818, 0.018412802, -0.054259133, 0.019742683, -0.026694331, 0.009472378, -6.216106e-06, 0.018678779, 0.022257367, 0.0045367065, -0.004757346, -0.052518196, 0.027371362, 0.0056761727, 0.009829028, -0.010536282, -0.028024213, -0.01850952, -0.007646814, -0.032763425, 0.023804864, 0.007658904, -0.04956828, -0.0019797087, -0.061077792, -0.011944747, 0.038687438, -0.039654624, -0.05169609, 0.008263395, -0.07162012, -0.031578623, -0.0006683406, -0.012295351, 0.03493959, 0.018291904, 0.023176193, -0.09725054, -0.004488347, -0.009532827, 0.04540938, -0.023599338, -0.012694316, -0.00089238014, -0.020153737, 0.01646634, 0.019404167, 0.019005204, -0.0302971, -0.014556148, -0.022813499, -0.007386883, -0.0035725432, -0.057015613, -0.0058031157, 0.0031796237, 0.017578606, 0.010705539, -0.042532, -0.025195194, -0.0041347197, 0.029474992, 0.010959426, -0.04536102, 0.034915414, 0.006486191, 0.08066331, -0.0025418855, -0.00055877655, -0.004300955, -0.007084637, -0.017481886, -0.01726427, -0.071088165, -0.029982764, -0.041492276, 0.01034889, 0.0064499215, 0.05498452, 0.039074313, -0.021967212, 0.05363046, 0.012984471, -0.071088165, -0.031747878, -0.033924047, 0.004234461, 0.00010909177, -0.011436974, 0.032594167, -0.056145143, 0.003439555, -0.013818669, -0.030466357, -0.018533701, 0.028797962, 0.023611426, 0.041540638, -0.009629545, 0.00567315, -0.029740969, -0.013129549, -0.020431804, 0.0075259157, -0.008879976, 0.020552702, 0.027274644, -0.009031099, 0.01923491, -0.018183095, -0.020540612, -0.022583792, -0.01861833, -0.028338548, -0.003844564, 0.036124397, -0.0076105446, 0.0038596764, -0.029886046, 0.037599355, 0.013347166, 0.015172729, -0.0131658185, 0.079647765, 0.025316093, -0.02135063, -0.033271197, 0.029716788, -0.030176202, 0.04054927, 0.010699495, 0.0012180498, 0.023913672, -0.06470474, 6.531339e-05, -0.027758237, 0.02060106, -0.01582558, -0.041806612, 0.017433526, 0.08864259, 0.041564815, -0.03438346, -0.06064256, 0.034818694, -0.014048376, -0.021266, -0.007797937, -0.0013903298, 0.069202155, 0.0020658488, -0.032231472, -0.021955121, 0.052518196, 0.026355818, -0.03518139, -0.018243546, 0.005246984, -0.005630836, -0.016841125, -0.0017031541, -0.032884322, 0.032739244, 0.03387569, 0.0026023346, -0.05711233, -0.04202423, 0.036172755, 0.006462011, 0.026089841, -0.0059572607, -0.053485382, 0.008124362, 0.020274635, -0.0031433543, 0.0145682385, -0.0016109691, -0.011056145, -0.025316093, -0.039678805, 0.01731263, 0.014616597, -0.034818694, -0.015341987, 0.015511245, -0.06610716, 0.033972405, 0.022196917, -0.034093305, 0.0051260856, 0.04553028, -0.019682234, 0.011086369, -0.052034605, -0.0117633995, 0.054646008, -0.0033911958, 0.042507824, 0.057692643, 0.00065360614, 0.02957171, -0.02966843, 0.043934423, -0.0014560682, 0.000798684, -0.0018467207, 0.004279798, -0.020371353, -0.022184828, -0.039485365, -0.021664966, -0.001928327, 0.018400712, 0.04468399, -0.029982764, 0.021024205, 0.028435268, 0.011267716, 0.051260855, 0.027298823, -0.0005557541, 0.1393715, -0.03648709, -0.013214178, 0.0043644267, 0.019367898, 0.023635607, -0.041564815, -0.034335103, 0.009629545, -0.011787578, 0.07210371, -0.0061204736, -0.020576881, -0.015221089, 0.011231447, 0.009526782, 0.0274439, -0.019053563, -0.014024196, 0.030587256, 0.047754806, -0.0074050175, -0.023853224, -0.014725406, -0.020419713, 0.013576873, 0.010052689, 0.083613224, -0.05421077, -0.043015596, -0.018727139, 0.0017923164, -0.027008668, 0.01377031, 0.016333353, -0.01918655, -0.021253912, -0.01797757, -0.04613477, -0.009260805, -0.014616597, -0.032811783, -0.022088109, -0.031336825, -0.018835947, 0.00621417, -0.0034879143, -0.011962881, -0.03924357, 0.018993113, 0.010802258, 0.027685698, 0.0008039733, -0.012682226, -0.0289914, 0.029160656, -0.015499155, -0.008184811, -0.03970298, -0.03595514, -0.060255684, 0.04120212, 0.04272544, -0.015003472, 0.024481894, -0.046400744, -0.02133854, 0.019500887, 0.019077742, 0.005150265, 0.046594184, 0.013262537, 0.0058152056, 0.006057002, 0.037623532, -0.09299493, 0.021145103, 0.056532018, -0.004016844, 0.017639054, -0.036970682, 0.02060106, -0.011642501, 0.011974971, -0.024203828, 0.0522764, -0.024203828, -0.0010661713, -0.03102249, -0.02611402, 0.007435242, 0.012005196, 0.004712009, 0.018195186, 0.013371346, 0.02339381, 0.02405875, 0.030925771, -0.021181373, -0.018376533, -0.08124362, 5.600989e-05, 0.011122638, 0.049278125, -0.011080324, -0.003279365, -0.031143388, -0.0065889545, -0.051405933, 0.049036328, -0.020274635, 0.0067279874, -0.009822982, 0.019404167, 0.009236625, -0.007078592, -0.02962007, -0.028169291, -0.011328165, -0.003645082, -0.021169282, 0.05580663, 0.006957694, -0.029160656, -0.04260454, 0.033924047, 0.009575141, 0.0317237, 0.060835995, -0.01239207, 0.01201124, -0.019392079, -0.033174478, 0.029354094, -0.015269448, -0.059288498, -0.0199603, 0.0061809225, -0.030853232, 0.002028068, 0.012265127, 0.018872216, 0.024518164, -0.025582068, -0.0386149, -0.0466909, -0.0059935306, 0.03094995, 0.05019695, -0.0068428405, 0.009490512, 0.043160673, -0.03914685, -0.0120958695, -0.043136492, -0.007217625, 0.019440437, -0.018497432, -0.03871162, -0.024131289, 0.030611435, -0.035471544, 0.023659786, 0.016236635, -0.031167567, -0.013274627, 0.012996561, 0.017687414, 0.014169274, -0.0061869677, 0.0077918917, -0.001262631, 0.029426632, -0.0063713375, -0.0076830834, 0.0011931146, 0.02485668, 0.0043644267, -0.037478454, -0.008916246, 0.0010518148, -0.001186314, 0.046424925, -0.0007227448, -0.00029204483, 0.0034607123, 0.015728861, -0.041806612, -0.055613194, -0.01374613, 0.040380012, 0.008674449, 0.039751343, -0.023575157, 0.06857348, 0.009133862, -0.017300539, -0.017953388, 0.0039987094, -0.0071148616, 0.033392094, -0.0043311794, 0.010463743, -0.0032612302, 0.01647843, 0.018582061, 0.033367917, -0.01731263, 0.02819347, 0.047053598, -0.031554442, 0.020770319, -0.0075259157, -0.032666706, 0.023998301, -0.018376533, 0.023297092, -0.0077435323, 0.023333361, 0.022160647, -0.055419754, 0.040863607, 0.010276351, -0.030683974, -0.057595924, -0.0010314131, -0.014664957, -0.045747895, -0.0026386043, 0.01994821, 0.013915388, -0.00026673175, -0.03177206, 0.024445625, 0.01589812, 0.000452235, -0.015644232, 0.01237998, -0.015777221, -0.049229763, 0.0059481934, -0.027806597, -0.05706397, 0.021737505, -0.02952335, -0.068428405, -0.016744407, -0.01646634, -0.0049054464, 0.030442178, -0.018461162, 0.005201647, -0.0012928556, -0.012839394, -0.008837662, -0.010530237, 0.021145103, 0.010554417, -0.019500887, -0.02623492, -0.019863581, -0.016659778, 0.011068234, 0.00586961, -0.018243546, -0.016949933, -0.022571702, -0.025171014, 0.002008422, 0.029112296, -0.047658086, 0.042483643, 0.014713316, -0.004418831, -0.0019041473, 0.040162396, -0.046328206, 0.021749593, 0.021060474, 0.01850952, 0.03776861, -0.03211057, 0.017493976, -0.0053074327, 0.010741809, -0.015281538, -0.03319866, 0.029765148, 0.011473243, 0.03912267, -0.004718054, 0.02548535, -0.01380658, 0.0453852, -0.011170997, -0.05435585, -0.01785667, 0.031578623, 0.07466675, -0.022390354, 0.0088316165, 0.031167567, -0.06702599, -0.0011840472, 0.05213132, 0.02611402, 0.009798802, -0.0062746187, 0.023696056, -0.003908036, -0.011340255, 0.008813482, -0.03094995, 0.018981025, 0.018388623, -0.018376533, 0.011134728, 0.027129566, -0.037333377, 0.024953397, 0.016986202, 0.058176234, 0.017832492, 0.030079482, -0.034842875, 0.019343719, 0.0383731, -0.013963747, -0.008559596, -0.0018724116, 0.012132139, 0.031095028, 0.009538871, 0.0027066094, 0.005041457, -0.067896456, 0.023139924, -0.00150745, -0.041564815, -0.003306567, 0.005546207, -0.035326466, -0.012730585, -0.00620208, -0.007767712, 0.017965479, 0.00023877402, 0.011334211, -0.08898111, -0.03854236, 0.018303994, -0.0009467844, 0.018328173, 0.033319555, 0.0143385315, 0.010270306, -0.019162372, -0.012863573, 0.042266026, -0.018038018, 0.018932665, -0.02468742, 0.023768594, 0.012827303, -0.019404167, 0.0012868107, -0.020830767, 0.0275648, -0.009019009, -0.013492244, -0.01512437, 0.022499163, 0.05145429, 0.017095013, -0.0030300121, 0.008873931, 0.041588996, 0.015402436, -0.050583825, 0.02335754, 0.007997419], [0.003804024, -0.025771184, -0.013292505, 0.04680738, -0.0039550755, 0.009994041, -0.052578148, 0.074329525, 0.015055797, 0.061111, -0.0065229456, 0.0056597963, 0.05173966, -0.02900183, 0.0004620163, -0.005425513, -0.010043364, -0.0060882885, -0.008132104, -0.01736164, -0.036055, -0.03469862, -0.06934792, -0.004408229, 0.03524117, -0.011936128, -0.020789579, 0.014833844, 0.0012739166, -0.0094268285, 0.028286649, 0.034304038, 0.016399845, -0.039458275, -0.021763705, -0.0063996385, -0.008421876, 0.025475247, -0.002960912, 0.01960583, -0.0437247, -0.013341828, 0.025056003, -0.074329525, 0.0057152845, 0.012497175, 0.005154237, 0.0019497935, 0.0015783309, -0.030629484, -0.026165767, 0.004035225, -0.03038287, -0.017053373, -0.0043928158, 0.022700839, 0.04251629, -0.023305044, 0.033786148, -0.0138843795, -0.04300952, 0.014155655, 0.059976574, 0.02308309, -0.052874085, -1.9941072e-05, 0.014735199, 0.005354611, -0.012799277, 0.02393391, -0.015894286, 0.040888637, 0.036301613, -0.0144146, -0.0007764494, -0.023280382, 0.071024895, 0.050802525, -0.0020715594, -0.0059927255, 0.062196102, 0.007188804, 0.017065704, 0.006140694, 0.010524262, -0.019346885, 0.009303521, -0.12133419, -0.0542058, 0.0026865536, -0.03935963, -0.021825358, 0.006788056, -0.0135884425, -0.031665266, -0.0016569392, 0.0007922481, 0.014685876, -0.024686083, -0.010068025, -0.0064859535, -0.039630905, -0.11462628, -0.04007481, 0.03627695, 0.033761486, 0.04320681, 0.0036776343, -0.028163342, -0.06481022, -0.009765923, -0.034427345, -0.04981607, -0.010567419, -0.040814653, 0.010937341, -0.0045284536, -0.03450133, -0.007854663, 0.007534064, -0.062048133, -0.037953928, 0.0305555, -0.021060854, 0.029963626, -0.01109764, -0.05918741, 0.037164763, 0.0023936993, 0.015179104, -0.025598554, 0.040469393, 0.033243597, 0.045352355, 0.0010696892, 0.03987752, 0.08113608, -0.0036498902, -0.0081506, 0.004870631, -0.07669702, 0.02519164, -0.017595924, 0.05346596, -0.015006474, -0.014365277, -0.023107752, 0.0021594157, -0.033687502, -0.023822933, 0.012121089, -0.058102306, -0.022182949, 0.016029924, 0.03590703, -0.019815452, 0.023107752, 0.032380447, -0.032035187, 0.031147374, 0.029026492, -0.05055591, -0.005635135, 0.06579667, 0.0049877726, -0.013107545, 0.012355372, -0.028459279, -0.07373765, 0.029667689, 0.005798517, -0.03711544, 0.021208823, -0.011066813, -0.004389733, 0.009050742, 0.02501901, -0.030308885, -0.035339817, -0.033342242, 0.0076142135, 0.036868826, 0.026190428, -0.022096634, 0.020678602, 0.04044473, 0.04562363, 0.020875894, 0.040642023, -0.037411377, 0.028237326, 0.010185167, -0.031640604, -0.016424507, -0.044291914, 0.009297356, 0.0055549853, -0.0025617052, 0.01700405, 0.008366387, -0.0018326518, -0.03021024, 0.038619787, 0.008378718, -0.0138843795, -0.01578331, 0.03171459, 0.07561192, 0.022145957, -0.018989295, 0.054452416, 0.022158287, 0.002123965, -0.024661422, -0.023736618, 0.064958185, -0.033342242, -0.015475041, -0.0130335605, -0.040839314, 0.08503258, -0.020358004, 0.021443106, -0.010302309, -0.014192647, 0.033021644, 0.038767755, 0.022404902, 0.026831625, 0.009402167, -0.036030337, -0.009420663, -0.039063692, 0.043774024, -0.08685753, 0.024057217, -0.0071148197, -0.030456854, 0.026363058, 0.02463676, -0.0055703986, 0.008779466, -0.027670113, 0.020937547, -0.010758545, 0.026979594, 0.014328285, 0.015660003, -0.04651144, -0.005326867, 0.024957357, -0.013107545, -0.009377506, 0.025672538, 0.029593704, 0.070876926, 0.04406996, -0.0073059457, -0.0067633945, 0.017287657, 0.014204978, 0.038767755, -0.039063692, 0.04611686, -0.0116648525, -0.027374176, 0.026165767, -0.053712573, -0.034575313, 0.02048131, 0.07349104, -0.04668407, 0.033391565, 0.030358208, 0.005527241, -0.00149664, 0.08034691, 0.047423914, -0.03953226, 0.018841326, 0.014944821, 0.039137676, 0.013785734, 0.009192545, 0.0052004773, -0.037682652, -0.01475986, -0.02499435, -0.05243018, -0.036055, 0.0061622728, -0.023342036, 0.052134242, -0.022269264, 0.039680228, 0.035783723, 0.053416636, 0.012799277, -0.04162848, 0.031985864, -0.014204978, 0.002683471, -0.046264827, -0.059138086, -0.0024646008, 0.07215932, 0.0062177605, 0.062097456, -0.021554083, -0.017546602, 0.065993965, -0.0025277957, -0.021443106, -0.053613927, 0.034205392, -0.010351632, 0.015992932, 0.0023274217, 0.057707723, -0.024192855, -0.03765799, -0.041406527, -0.054649707, -0.011997782, 0.039137676, 0.028163342, 0.03610432, -0.04160382, -0.038126558, 0.0029824907, -0.03815122, -0.028335972, 0.018459074, 0.060321834, -0.033218935, -0.123208456, -0.03171459, -0.04508108, 0.0031782405, 0.005995808, 0.001801825, 0.035611093, -0.028434617, 0.029569043, 0.04579626, -0.030259563, -0.049766745, 0.018594712, 0.046412796, 0.037904605, 0.0014997227, 0.010912679, 0.01908794, -0.0004165468, 0.050112005, -0.03418073, -0.02030868, -0.0104502775, -0.023046099, -0.002156333, 0.056376006, -0.060667094, -0.021960996, 0.06061777, 0.018853657, -0.028434617, -0.0033477878, 0.007608048, 0.019716807, -0.005499497, -0.05731314, 0.065303445, -0.028089358, -0.015055797, -0.0045962725, 0.023637973, 0.061702874, 0.02744816, -0.041036606, 0.0019343802, 0.0225652, -0.03640026, -0.017460287, 0.025228633, 0.009130891, 0.0029192958, -0.0093405135, 0.035117865, 0.0030395202, -0.041505173, 0.018483736, 0.013230852, -0.0049292017, -0.009081569, 0.012959576, 0.014648884, -0.0139706945, 0.054649707, 0.009950884, 0.011011325, -0.042738244, 0.019346885, -0.010302309, -0.009248033, 0.023490004, -0.0288292, 0.02410654, -0.050062682, -0.0078053395, 0.025253294, -0.03884174, 0.010123514, 0.0068990323, 0.06199881, 0.010351632, 0.003699213, 0.0019682897, 0.029815657, 0.0024137367, 0.00086237903, 0.008113608, 0.0013178447, -0.06614193, 0.026658995, -0.048952922, 0.0038256028, -0.03625229, 0.02341602, -0.013181529, -0.020505972, -0.0047658198, -0.0031011736, 0.006393473, -0.008236915, -0.003575906, -0.042935535, -0.047423914, -0.023280382, -0.0093405135, 0.01785487, 0.031961203, -0.06510615, 0.02658501, 0.019161925, -0.053564604, 0.01353912, -0.07931113, -0.059483346, 0.054304447, -0.032380447, 0.003084219, -0.013650096, -0.03970489, -0.0016307364, 0.035635754, 0.028681232, 0.0009810622, 0.038989708, 0.017028712, -0.047275946, 0.015302411, 0.018816665, 0.028188003, 0.0005240552, -0.00542243, 0.0060605444, -0.02186235, 0.0016631045, 0.006337985, 0.025117656, -0.043058842, 0.0068127173, 0.004306501, 0.013736411, 0.00429417, -0.061160322, 0.020382665, -0.00686204, 0.01753427, 0.038915724, 0.0053885207, -0.011862144, 0.024698414, 0.055882778, 0.030284224, -0.033687502, 0.032158494, 0.009950884, 0.10634004, 0.02446413, -0.06648719, 0.047078654, 0.011917632, -0.00011906842, -0.020937547, -0.04044473, -0.025968475, -0.030654145, 0.009093899, -0.010962002, 0.047275946, 0.040691346, 0.011159293, 0.0340081, -0.013280175, 0.019544177, -0.025401263, -0.024908034, -0.012971907, -0.01855772, -0.0020268606, -0.01612857, -0.041406527, -0.017324649, -0.0178672, -0.056228038, -0.030802114, 0.02848394, 0.016042255, 0.03524117, 0.0114429, -0.02409421, -0.059631314, -0.0036005673, -0.034131408, 0.0021763705, -0.01700405, 0.014389939, 0.033934116, -0.028705893, -0.0025694119, 0.00069321715, -0.029544381, 0.009248033, 0.015918948, -0.014673545, 0.008458868, 0.0022596028, 0.011436734, 0.00035142526, -0.05662262, 0.06441563, -0.008995254, 0.026880948, -0.01259582, 0.062393393, 0.04439056, -0.0038656776, -0.024575107, 0.042097047, -0.03003761, 0.0513944, -0.001382581, 0.0025262544, 0.038940385, -0.035339817, -0.034106746, -0.02727553, 0.01371175, -0.052923407, 0.0042540953, 0.044291914, 0.09006351, 0.0079533085, 0.015524364, -0.030802114, 0.06278798, 0.0082307495, -0.014883167, -0.02586983, 0.0006149942, 0.036844164, -0.0036437248, -0.043576732, -0.021899343, 0.046412796, 0.010252986, -0.014883167, -0.0120286085, 0.01372408, -0.038101897, -0.014155655, -0.008465033, -0.025672538, 0.008717813, 0.029199122, -0.031862557, -0.049199536, -0.055290904, 0.023970902, -0.023342036, 0.02097454, -0.00040806943, -0.028360633, 0.014143324, -0.014426931, 0.03748536, -0.004103044, 0.025993137, 0.03797859, -0.039260983, -0.053219344, 0.025240963, -0.013477466, -0.020025074, -0.0040876307, 0.025795845, -0.053909864, 0.058595534, 0.013489797, -0.0915432, -0.0101728365, 0.04162848, -0.007706694, -0.010308474, -0.040148795, -0.00532995, 0.04823774, -0.008656159, 0.052528825, 0.05282476, 0.017632917, 0.058990117, -0.03726341, 0.056376006, 0.010092687, -0.0055888947, 0.013181529, -0.02552457, 0.015857294, -0.018767342, 0.003162827, -0.0036159807, -0.026708318, 0.019100271, -0.009790584, 0.015992932, -0.0019713724, -0.019926429, 0.013465135, 0.03728807, 0.03607966, -0.007873159, 0.11304795, -0.028212665, -0.018841326, 0.015425718, 0.011923797, 0.0513944, -0.010647569, -0.02900183, 0.033613518, -0.023872256, 0.05297273, 0.04924886, -0.048681647, -0.023502335, 0.007891655, -0.014747529, -0.011257939, -0.03504388, -0.043946654, 0.016856082, 0.049372166, -0.0178672, -0.0077498513, -0.01127027, -0.007484741, -0.008144435, 0.024390146, 0.087696016, -0.03242977, -0.037066117, -0.027546806, -0.009432994, -0.01475986, 0.027842743, 0.0015297788, -0.040543377, -0.044439882, 0.0059711467, -0.02255287, 0.002324339, -0.010851026, -0.007589552, -0.015660003, -0.035783723, 0.009673443, -0.0144392615, 0.015586018, 0.023822933, -0.050802525, -0.024698414, 0.05331799, 0.034649298, 0.015413388, 0.0033508705, 0.00060343416, -0.015401057, -0.029396413, -0.007589552, -0.034106746, -0.009019915, -0.017965846, 0.047473237, 0.029371751, -0.012065601, 0.008397214, -0.013156868, -0.037534684, 0.03748536, 0.0129472455, 0.031813234, 0.035611093, 0.013304836, 0.01891531, -0.030333547, 0.019482523, -0.086660236, 0.03553711, 0.04527837, 0.011886805, 0.0049230363, -0.010339301, 0.007521733, -0.048952922, 0.016535483, 0.003239894, 0.031320006, -0.0061468594, 0.013835057, -0.053959187, -0.0055426545, 0.009839907, 0.004704166, -0.004879879, -0.03435336, 0.0077498513, 0.0374607, 0.042097047, 0.033564195, -0.014858506, -0.020925216, -0.046881363, -0.038397834, 0.0010781665, 0.030999405, -0.014624222, 0.016572475, -0.014648884, -0.0075402292, -0.025376601, 0.01371175, -0.031492636, 0.009494647, 0.011307262, 0.028631909, 0.017053373, 0.003813272, -0.057066526, -0.012090262, 0.027818082, -0.02013605, -0.03329292, 0.035635754, -0.0014049304, -0.02658501, -0.057559755, 0.022133626, 0.020555295, 0.03536448, 0.06836146, -0.030012948, -0.010764711, 0.019211248, -0.011251774, 0.06485954, -0.024686083, -0.05903944, 0.00080149615, 0.0026557269, -0.0017894943, -0.011646356, 0.006337985, 0.04564829, 0.028237326, -0.0067264023, 0.0031566618, -0.01267597, 0.005576564, 0.05780637, 0.031443313, 0.0069421898, 0.03090076, 0.03760867, -0.022626854, 0.0057738554, -0.012102593, 0.02133213, 0.019013956, 0.025795845, -0.06308392, -0.0068127173, 0.0354138, -0.00910623, 0.014328285, 0.011985451, -0.0106599, -0.017028712, 0.01406934, -0.0017848703, -0.0063441503, -0.0042972527, 0.032479092, 0.0032738035, 0.039655566, -0.013637765, -0.03176391, -0.014772191, 0.03188722, -0.011202451, -0.017435625, -0.0047319103, -0.012934915, -0.009556301, 0.0409133, 0.007934812, 0.0042325165, -0.0017124274, -0.012182742, -0.024698414, -0.07689431, -0.019803122, 0.0128609305, -0.040691346, 0.030999405, -0.011732671, 0.03622763, 0.009285025, 0.01942087, -0.024723075, 0.0053792726, 0.0326024, 0.022071972, -0.015425718, 0.003862595, -0.0031844059, -0.016547814, 0.020851232, 0.016868412, -0.0098953955, 0.03728807, 0.023107752, -0.008982923, -0.024587438, -0.030111594, -0.023280382, 0.0037207918, 0.0024584355, 0.013983025, 0.02062928, 0.033169612, 0.011331923, -0.081629306, 0.0038286855, 0.02013605, -0.033761486, -0.06727636, -0.029273106, -0.029371751, -0.021369122, -0.016375184, -0.0039951503, 0.057214495, -0.004534619, -0.04734993, 0.013292505, -0.004047556, 0.009346679, -0.018150806, 0.017965846, -0.011171624, -0.05815163, -0.0036283114, -0.01665879, -0.03188722, 0.028508602, -0.003421772, -0.0068127173, 0.003767032, 0.013983025, 0.004334245, 0.009192545, -0.049569454, 0.028040035, 0.0149941435, -0.019877106, 0.010647569, -0.022639185, 0.01857005, 0.020431988, 0.033095628, 0.03173925, -0.032849014, -0.005903328, -0.008896608, 0.023107752, 0.0054193474, 0.010715388, 0.0077868435, -0.0354138, -0.007151812, 0.004716497, -0.062393393, 0.03921166, -0.003239894, -0.054994967, 0.01596827, 0.0021486264, -0.039063692, 0.022466555, 0.030530838, -0.0028391462, 0.014895498, -0.023613311, 0.007065497, -0.0211595, 0.043330118, -0.039482936, -0.03363818, 0.021011531, 0.020259358, 0.015906617, -0.0019359215, -0.0013062847, -0.027546806, 0.016325861, -0.011208616, -0.002123965, 0.004861383, 0.040716007, 0.07358968, -0.032010525, -0.017484948, 0.021615736, -0.044094622, -0.013095214, 0.034254715, 0.042195693, 0.009488482, -0.013477466, 0.032010525, -0.01664646, 0.0060482137, -0.03072813, -0.00050555915, 0.0014550239, 0.00805812, 0.014278962, 0.03156662, 0.014143324, -0.028286649, -0.0020823488, 0.0044421386, 0.014180317, -0.029914303, 0.018594712, -0.008600671, -0.03363818, 0.047941804, -0.044982433, -0.01372408, -0.010598246, -0.014402269, 0.02499435, 0.003412524, -0.008051954, -0.0032337287, -0.0755626, 0.046782717, 0.021258146, -0.036301613, -0.034106746, -0.00047704435, -0.015376396, -0.035167187, -0.02623975, 0.009784419, 0.03797859, -0.006442796, 0.009587128, -0.08606836, -0.025820507, -0.0036961304, 0.013058222, 0.030086933, 0.00038687605, 0.00885345, 0.009913892, -0.014685876, -0.015844963, -0.0128486, -0.035857707, -0.0020962209, -0.017891861, 0.021233484, 0.011085309, -0.00788549, -0.005709119, 0.024957357, 0.014513246, 0.0046270993, 0.003403276, 0.024303831, 0.03349021, 0.03869377, -0.0030688057, 0.022935122, 0.001710886, 0.052578148, -0.0071271504, -0.011560041, 0.014217309, 0.004648678], [-0.0050837756, -0.02687404, -0.0054150573, 0.030564576, 0.0043252343, 0.02932614, -0.042825084, 0.062268514, 0.0036719597, 0.07876447, 0.0017926347, 0.0137961665, 0.007833102, -0.0069104675, 0.0023963717, -0.0059382957, -0.015492822, 0.0014017536, 0.0125329625, -0.04252786, -0.03960515, -0.041487575, -0.08228162, -0.01024805, 0.04366722, 0.0034366571, 0.016793178, 0.018985208, -0.011480292, -0.013882857, 0.03378451, 0.015814815, 0.03720259, -0.053797618, 0.028905073, -0.039159317, -0.015876736, 0.021858377, -0.031728704, -0.0019118341, -0.058404595, -0.02525169, 0.033858813, -0.052856408, 0.011207837, -0.021746919, -0.009684562, 0.012755881, 0.0029799843, -0.048125584, -0.011269758, -0.020805709, 0.0037710345, -0.017177094, 0.005557477, 0.03314052, 0.030960876, -0.064497694, 0.018056383, -0.06459677, -0.067767166, -0.031035181, 0.055977263, -0.004105412, -0.03447803, 0.018997593, 0.041834336, 0.014972679, -0.015108908, 0.017957307, -0.032174543, 0.054045305, 0.013238871, -0.01992642, 0.020446563, -0.044831347, 0.07103663, 0.009826981, -0.057711072, -0.037103515, 0.052905943, -0.019678732, 0.034973405, 0.012192393, 0.022737667, -0.007987906, -0.0023576706, -0.12701389, -0.031035181, 0.001947439, -0.007938368, -0.021140086, 0.02746849, -0.004662708, -0.045202877, 0.025016388, -0.0041116043, 0.009021999, -0.04322138, 0.024137098, -0.010254242, -0.040744513, -0.08505572, -0.046614695, 0.03623661, 0.040050987, 0.025511762, -0.01278065, -0.03167917, -0.037697963, -0.0015867449, -0.032942373, -0.01924528, 0.0058082603, -0.0556305, -0.0016177058, -0.0019536312, -0.0092387255, -0.02317112, 0.03541924, -0.058949508, -0.011895169, 0.033066217, -0.00970933, -0.0045419605, 0.0014071718, -0.014378231, 0.035295397, 0.008960078, 0.011721787, 0.0035450202, 0.03487433, 0.04017483, 0.007950753, 0.031555325, 0.0243724, 0.05696801, -0.0018499123, 0.00757303, -0.0039041664, -0.08277699, 0.015207982, -0.019133821, 0.043716755, 0.030638883, -0.013387483, -0.011950898, -0.007436802, -0.041413266, -0.03202593, -0.036632907, -0.02727034, -0.0118704, 0.014353462, 0.03509725, -0.04156188, 0.0633088, 0.04530195, -0.016495954, 0.036855828, 0.021102933, -0.08312376, -0.002721461, 0.0389364, 0.010037516, -0.018043999, 0.0320507, -0.040843587, -0.03274422, 0.039010704, 0.004560537, -0.060683317, 0.018043999, 0.018749906, -0.029078454, 0.033561587, 0.008947693, -0.0348991, -0.032546073, -0.014378231, -0.021524, 0.06846069, 0.025016388, -0.050775837, -0.0030867993, 0.046441313, 0.01648357, 0.015096523, 0.026997883, -0.06197129, 0.019059515, 0.0061426377, -0.011282143, -0.022923432, -0.047877897, -0.01295403, 0.009443067, 0.0044645583, 0.03051504, 0.007034311, -0.005093064, -0.051617973, -0.004164238, 0.037425507, -0.022589054, -0.01067531, 0.044335973, 0.024743931, 0.017300937, -0.027864788, 0.052707795, -0.0020078127, 0.023877027, -0.02935091, -0.022849126, 0.045797326, -0.049463093, 0.0172514, -0.027096959, -0.0377475, 0.079111226, -0.02362934, 0.023443574, -0.026502509, -0.00508068, -0.003851533, 0.04329569, -0.016941791, 0.0116474815, 0.009028192, 0.008378013, -0.007535877, -0.029573828, 0.036632907, -0.10051139, 0.0043809637, 0.0025713006, -0.033512052, 0.040075757, 0.022390906, -0.011666058, 0.014947911, -0.018254532, -0.009455452, 0.0057122814, 0.03160486, 0.011969474, 0.017895386, -0.027146496, -0.035592623, 0.011059225, -0.002091407, -0.0067680473, -0.0009265042, 0.021784073, 0.06311065, -0.00095049886, -0.013560863, 0.001770962, 0.0039072623, -0.01380855, 0.029400447, -0.0027880268, 0.03928316, -0.00657609, -0.05696801, 0.039035473, -0.022750052, -0.06365556, 0.019282434, 0.079012156, -0.052162882, -0.0065203602, 0.05662125, 0.04101697, -0.01961681, 0.06103008, -0.0039351275, -0.049958467, 0.018229764, -0.013276024, 0.0018359799, 0.01821738, -0.019170973, -0.0037029206, -0.020310335, -0.024421938, -0.03541924, -0.06320972, -0.014613533, -0.018143073, -0.016743641, 0.029970128, 0.022650976, 0.053649005, 0.019381508, 0.055382814, 0.02553653, -0.053104095, 0.029078454, -0.012830187, 0.027493257, -0.0070281187, -0.037772268, -0.026205285, 0.043815833, -0.007987906, 0.061624527, -0.015703356, 0.018972825, 0.064349085, -0.026948346, -0.05548189, -0.04577256, 0.047159605, 0.013957162, 0.01514606, 0.0036131341, 0.045475334, -0.041859105, -0.014155312, -0.009275879, -0.09758868, 0.0032601801, 0.02305966, 0.0062169437, 0.04807605, -0.035196323, -0.04688715, -0.006046659, -0.02724557, -0.008037443, 0.009164419, 0.041462805, -0.04740729, -0.12473518, -0.036063228, -0.0050063734, 0.025462223, -0.024818238, -0.011263566, 0.016867485, 0.009350184, 0.021400157, 0.006117869, -0.0008065308, -0.012879725, 0.011740364, 0.035691697, 0.026378665, 0.0015023765, 0.014019084, 0.025016388, -0.012669191, 0.020458946, -0.046540387, -0.029474754, 0.00066178874, -0.03239746, 0.029227067, 0.07950753, -0.07049172, -0.055779114, 0.07886354, 0.003959896, -0.066082895, -0.014328693, -0.022155603, -0.0067370865, 0.0037803228, -0.054639753, 0.05186566, -0.026552048, -0.012718728, -0.034552336, -0.0019381508, 0.05998979, 0.019294817, -0.023084428, 0.0036998247, 0.009182996, -0.08064689, -0.04577256, 0.045277186, 0.025028773, 0.0075173005, -0.0077959485, 0.011678442, 0.02066948, -0.04532672, -0.008402782, 0.0063345954, -0.01782108, -0.028682156, 0.012421504, 0.033066217, -0.04252786, 0.007925984, -0.0024366209, -0.00622004, -0.050676763, 0.04079405, 0.004972317, -0.0102047045, 0.018799443, -0.0515189, -0.0018715849, -0.014403, -0.03105995, 0.03965469, -0.048918184, -0.018477451, 0.011913745, 0.034428492, 0.008384205, 0.031703938, -0.011789901, 0.052905943, -0.030193046, -0.019567274, -0.013907625, 0.0007910504, -0.029573828, 0.044930425, -0.030168276, 0.026948346, -0.014724992, 0.026230054, -0.020062648, -0.04535149, -0.008105557, -0.012464848, 0.016892254, 0.0044305013, -0.024310479, -0.046069782, -0.04899249, -0.04398921, -0.02029795, 0.031778242, 0.029846285, -0.056819398, 0.032199312, 0.00017192961, -0.055184666, -0.015356595, -0.07499962, -0.0247687, 0.03108472, -0.047704518, -0.0025743968, 0.008328476, -0.039555613, -0.0055358047, -0.009591679, 0.025288843, -0.033437748, 0.036632907, 0.023889411, -0.058107372, 0.001239983, 0.0032756606, 0.045252416, -0.017263785, 0.013746629, 0.030614113, -0.039134547, 0.007331535, 0.015703356, -0.0048825303, -0.0016331862, 0.0012090222, 0.022935817, 0.0062169437, -0.0036874402, -0.048125584, -0.0032199312, -0.006743279, 0.039976683, 0.0007662817, -0.04332046, -0.012019012, 0.04671377, 0.022167986, 0.0548379, 0.000212469, 0.03105995, 0.0021966742, 0.07173016, 0.016991328, -0.007703066, 0.009170611, -0.00057509827, 0.002439717, -0.0029041301, -0.05795876, -0.010972534, -0.021301083, 0.010706271, -0.04398921, 0.023951333, 0.06548844, 0.0036471912, 0.02266336, -0.04530195, 0.024384785, -0.0109911105, -0.01158556, 0.020558022, -0.022811973, -0.021895532, 0.00049653504, -0.04398921, 0.0050961603, -0.015876736, -0.024892544, -0.010885844, 0.013189333, 0.012693959, 0.017189479, 0.0087619275, -0.017164709, -0.051617973, -0.020397024, 0.005656552, -0.0052540605, 0.007436802, 0.021288699, -0.0071581546, -0.05548189, -0.0029490234, -0.009919864, -0.017300937, 0.0147621455, 0.0007577674, -0.005368616, 0.017412396, 0.025808986, -0.014180081, -0.0031347887, -0.04195818, 0.07891308, -0.014638302, -0.0013824031, 0.013610401, 0.049017258, 0.028929843, 0.021684997, -0.01944343, 0.02325781, -0.04785313, 0.04782836, -0.010526698, 0.027864788, 0.037772268, -0.03182778, -0.048274197, -0.03162963, 0.013981932, -0.036484297, -0.016112039, 0.0701945, 0.1128462, 0.019790191, -0.002043418, -0.02727034, 0.045797326, -0.016954176, -0.0001750257, -0.012793033, 0.011833247, 0.031233331, 0.001451291, -0.047531135, -0.03148102, 0.04116558, 0.014563996, -0.03467618, 0.023641724, -0.010947766, -0.018254532, -0.016495954, 0.0047122454, -0.024632473, 0.02001311, 0.026180517, -0.02687404, -0.07148247, -0.046689, 0.0076597207, -0.011994244, -0.012817803, 0.015604281, -0.014217234, 0.0016161577, -0.0014087198, 0.042973697, 0.010780577, 0.039010704, 0.031703938, -0.07366212, -0.016161578, 0.0058206446, -0.025635606, -0.036632907, -0.00885481, 0.023096813, -0.0030976357, 0.029301373, 0.029846285, -0.023282578, -0.011133531, 0.077476494, -0.014502075, -0.0028824576, -0.04002622, 0.010062285, 0.02573468, 0.0036348067, 0.049413558, 0.006254097, -0.0064398623, 0.06647919, -0.04740729, 0.022836741, 0.020805709, 0.016297804, -0.011554599, 0.0040187216, 0.013659938, -0.033883583, -0.01981496, -0.009684562, -0.031035181, 0.009752676, 0.009715523, 0.026601585, 0.0018189515, -0.018997593, 0.012396734, 0.0560268, 0.027963864, 0.012941646, 0.10561374, -0.045450564, -0.015951043, -0.008421358, 0.014972679, 0.0491411, -0.00891054, -0.025660373, 0.03772273, 0.0033809277, 0.05889997, 0.02917753, -0.028384931, 0.0059197196, 0.0064150933, -0.03640999, -0.012978799, -0.020595174, -0.016793178, 0.016644567, 0.0373512, -0.026750196, -0.0049568363, -0.025511762, -0.005696801, -0.008755736, 0.016694104, 0.08208347, -0.040150065, -0.024929697, -0.011399794, -0.018539373, -0.011523638, 0.028236318, 0.013783782, -0.022787204, -0.041462805, -0.043914907, -0.04062067, -0.004024914, -0.013659938, 0.01286734, -0.007257229, -0.052063808, 0.026750196, -0.02336927, -0.002230731, 0.0056782244, -0.03888686, -0.013449404, 0.053698543, 0.051964734, -0.016978944, 0.0006614017, -0.015232751, -0.0031734898, -0.02496685, -0.048150353, -0.04116558, -0.033016678, -0.038614403, 0.022229908, 0.0070157344, -0.008192248, -0.009876519, -0.020409409, -0.04497996, 0.052707795, -0.0015735865, 0.03544401, 0.054689292, 0.018093536, 0.016904637, -0.071532, 0.022712898, -0.058602747, 0.028929843, -0.0005274959, -0.036087997, -0.0076659126, -0.026180517, 0.005204523, -0.008730967, 0.020310335, 0.022762436, 0.0027988632, -0.013164564, 0.03948131, -0.058107372, -0.014613533, 0.012080934, 0.031703938, -0.020037878, -0.0067370865, 0.011777517, 0.022068912, 0.04188387, 0.032496534, -0.045178108, -0.024360018, -0.010823922, -0.027146496, 0.013511326, 0.046045013, -0.017870618, -0.011727979, -0.0100499, -0.019356739, -0.009703139, 0.011858015, -0.023555035, 0.00452648, 0.022242293, 0.04364245, 0.030465502, -0.0047184373, -0.02115247, -0.0030496463, 0.031555325, -0.009152035, -0.027096959, 0.03683106, 0.0046812845, 0.006080716, -0.055927727, 0.018700369, 0.049116332, 0.059395343, 0.072275065, -0.035518315, -0.022811973, 0.026180517, 0.022106064, 0.02277482, -0.03276899, -0.060336553, 0.00052904396, 0.00082278525, -0.00040171735, -0.016904637, -0.005560573, 0.05508559, 0.0040899315, -0.0053531355, -0.0010534438, -0.0013367358, -0.012217161, 0.061872214, 0.028112475, 0.007418226, 0.03202593, 0.03145625, -0.01363517, 0.019889267, -0.015232751, 0.02251475, 0.021338236, 0.017127557, -0.068658836, -0.009127266, 0.024706779, -0.021722151, -0.017127557, -0.0047927434, -0.02286151, -0.03408173, 0.041438036, -0.00090096146, 0.013659938, -0.006681357, 0.046639465, -0.031555325, 0.046936687, -0.018291686, -0.00106428, 0.0092387255, 0.025412686, -0.014885989, -0.020186491, -0.005591534, -0.0068856985, -0.018056383, 0.043369994, 0.01773439, 0.009121074, -0.012087126, -0.025115462, -0.009257302, -0.06519122, -0.012303852, 0.028880306, -0.017461933, 0.03207547, 0.023616957, 0.017883, 0.027864788, 0.022527132, -0.014885989, 0.01702848, 0.02229183, 0.021895532, -0.0629125, -0.015951043, 0.008526625, -0.0024861584, 0.008415166, 0.028731693, 0.014403, 0.030366426, 0.010148975, 0.024731547, -0.005978545, 0.004879434, -0.013313176, 0.012322429, -0.0007314507, 0.008557586, 0.02954906, 0.025288843, 0.008093173, -0.068559766, -0.010631965, -1.0074378e-05, -0.06647919, -0.052311495, -0.014068622, -0.038193338, -0.018898519, -0.0043995404, 0.024781086, 0.02954906, 0.02781525, -0.013115027, 0.018093536, -0.038242873, 0.02932614, -0.00948022, -0.00939353, 0.024434322, -0.06499307, -0.003928935, -0.014613533, -0.0276171, 0.03373497, -0.010068477, 0.007182923, 0.013981932, 0.012093318, 0.015282288, 0.011703211, -0.029771978, 0.05260872, 0.003569789, -0.020533253, 0.03579077, -0.043518607, 0.02001311, 0.0062138475, 0.021647844, -0.0026115498, -0.052361034, -0.005582246, -0.0012067001, 0.013350329, 0.008904348, -0.00891054, 0.0012067001, -0.052361034, 0.0110901855, -0.002688952, -0.015084138, 0.026997883, 0.0032292192, -0.052658256, 0.033611126, 0.030242583, -0.0055296123, 0.027542794, 0.03373497, 0.006359364, 0.02932614, -0.004767975, 0.009727907, -0.0022864607, 0.04027391, -0.0086257, -0.012941646, 0.0069476203, 0.0040094336, 0.007257229, 0.008693814, 0.00048685976, -0.036558602, -0.0048175124, -0.0025620125, -0.010353317, 0.0038081878, 0.036855828, 0.063606024, -0.02400087, -0.014563996, 0.03856487, -0.026254823, -0.013981932, 0.03546878, 0.018143073, -0.0027818347, -0.016892254, 0.017164709, -0.0018530084, -0.013362714, -0.01101588, -0.02915276, -0.00089631736, -0.010415238, 0.03883732, 0.06296204, 0.031381942, -0.02047133, -0.014056237, 0.014687839, 0.015901506, -0.0105824275, 0.026007136, 0.0036595755, -0.012570116, 0.058850434, -0.0580083, 0.027939094, 0.008743351, -0.014031469, 0.007021927, 0.0017895387, -0.01742478, 0.0006586926, -0.06727179, 0.036509063, 0.03066365, -0.03856487, -0.039332695, -0.024521014, -0.017201863, -0.028806, 0.027022652, 0.017201863, -0.009288263, -0.021301083, 0.041413266, -0.062268514, -0.012662998, 0.024632473, 0.0075606457, 0.037053976, 0.013684707, 0.0041518533, -0.0046069785, -0.0076844892, -0.036335684, -0.004024914, -0.01058862, -0.0097960215, 0.005517228, 0.008260362, 0.022539517, 0.0012895204, -0.00876812, 0.0026672794, 0.002970696, -0.012279083, -0.018204994, -0.003399504, 0.0040496825, 0.070442185, -0.004068259, -0.033561587, -0.010501929, 0.0495374, -0.010099438, -0.026378665, 0.033858813, 0.010978727], [-0.013644407, -0.002611667, -0.01450866, 0.033425014, 0.010073958, 0.034937456, -0.008701955, 0.05574437, 0.009155688, 0.039085876, -0.0025563005, 0.0012626207, 0.009031451, -0.026554197, 0.007886316, 0.018170936, -0.011008432, 0.009685043, -0.011181283, -0.033252165, -0.012585695, -0.06983171, -0.074369036, 0.0057742954, -0.017187847, -0.002094465, 0.004345576, 0.010084761, 0.021941243, 0.019359285, 0.0044049933, 0.024652839, -0.018711094, -0.014152155, -0.020417996, -0.040663138, -0.03582332, 0.05388622, -0.030853858, -0.002752108, -0.041289724, -0.028866075, -0.022708267, -0.045070834, -0.013374327, -0.020655666, 0.05094776, 0.020482814, 0.0011363586, -0.0058229095, -0.005363775, -0.020806909, -0.013817257, 0.007967339, -0.014379022, 0.0099983355, -0.02019113, 0.006092989, 0.00016508598, -0.028001823, -0.023853404, -0.031588476, -0.03889142, -0.032107025, -0.043407146, -0.0154701425, -0.013179869, 0.039626036, 0.018819125, 0.07791248, -0.0023699459, 0.003821622, 0.014087336, 0.0028979508, 0.0020526026, 0.024955327, 0.09005524, 0.011278512, 0.002530643, 0.040987235, -0.004764199, -0.012531679, 0.029557478, 0.02445838, -0.008269828, -0.03078904, 0.0521145, -0.08184483, -0.013503965, 0.028412342, -0.039150696, -0.029146958, 0.033727504, 0.0012538432, -0.07946813, 0.038804993, -0.0073515587, 0.013838863, -0.033533044, -0.015275685, -0.020396389, 0.011213693, -0.06468939, -0.041376147, 0.034310874, 0.005504216, 0.08033238, 0.011024637, 0.023486096, -0.009414964, 0.02216811, -0.010090163, 0.06952921, -0.010570903, -0.017944068, 0.034246054, -0.0058931303, -0.062312696, -0.020860925, -0.008669546, -0.0650351, -0.004693978, 0.022794694, -0.012888184, -0.004016079, 0.023896616, -0.018786715, 0.008410269, -0.020904137, 0.007853906, -0.014843558, -0.008194206, -0.004942451, 0.037314154, 0.061923783, 0.063220166, 0.041937914, 0.011959111, -0.03828644, 0.008680348, -0.051466312, -0.01689616, -0.016939374, 0.047922872, -0.012196781, -0.024112679, -0.025733156, -0.03545601, -0.042996623, -0.025041753, 0.0003067088, -0.03871857, 0.0042105364, 0.027937002, 0.057905003, -0.045891874, 0.04727468, 0.019759001, -0.0059039337, 0.051855225, 0.010808573, -0.07143057, -0.026683835, 0.040619925, 0.0136228, -0.06702288, 0.0007339405, 0.035239946, -0.076270394, 0.022340959, -0.016215561, -0.026078857, 0.06347944, -0.0098146815, -0.07026383, -0.03368429, 0.04770681, 6.241364e-05, -0.027504876, -0.057948213, -7.52002e-05, -0.011364937, 0.025365848, -0.04001495, 0.006757384, 0.00031498, 0.010738353, 0.013460753, 0.022070881, -0.05820749, -0.019251252, 0.03616902, 0.011181283, 0.019078402, -0.028369129, -0.051509526, 0.007675654, -0.057040747, -0.029125351, 0.025192996, -0.051855225, -0.057775363, 0.0036946847, 0.05773215, -0.038502503, -0.023162, 0.013277099, -8.1234786e-05, 0.028239492, 0.033533044, 0.051509526, -0.035131916, 0.056046855, -0.0326904, -0.023421276, 0.015286488, -0.079165645, 0.030983496, -0.03729255, -0.038696963, 0.06922673, -0.050558846, 0.015426929, -0.045589387, -0.0017649683, 0.057170387, -0.0013409437, 0.01760917, 0.01767399, -0.050126716, 0.014152155, -0.019521331, -0.046842553, 0.063436225, -0.0837894, -0.02571155, -0.024588019, -0.034051597, 0.064732604, 0.058596406, -0.0017285075, 0.0045184265, -0.02393983, 0.0007373165, 0.008113182, 0.042650923, -0.021379476, 0.0073407553, 0.016572066, 0.01819254, 0.028390735, 0.017771218, 0.02966551, 0.00657373, 0.00025640652, -0.0015705111, -0.008394064, -0.023788584, 0.021584738, -0.0077296696, -0.009209704, 0.027288813, -0.02789379, 0.021854816, 0.049089614, -0.02571155, 0.025819581, -0.08028918, -0.04999708, 0.004305064, 0.049435314, -0.014908377, -0.019024385, 0.04083599, 0.0009797127, -0.002738604, 0.05915817, 0.021789998, -0.06723894, 0.015308094, 0.0005489362, -0.0022943236, 0.00093514955, 0.039626036, 0.034483723, -0.022859512, 0.04584866, -0.024631232, -0.057948213, -0.013201476, 0.013223083, -0.03007603, 0.0028412342, 0.030054424, 0.0023550915, 0.03733576, 0.020288358, -0.02094735, -0.05241699, 0.048138935, -0.020590845, 0.0005931617, -0.043471962, -0.041635424, -0.008572317, 0.06564007, -0.008394064, 0.04472513, -0.053151608, 0.012866578, 0.08910456, 0.03143723, -0.061232377, -0.04023101, 0.017079815, -0.029298203, 0.007394771, 0.067887135, 0.053021967, -0.008199608, -0.06032491, -0.07341836, -0.078560665, -0.005336767, 0.052330565, 0.0548369, 0.009420366, -0.0333818, -0.023723766, 0.02200606, -0.09048737, -0.02091494, -0.035412796, 0.0054907124, 0.0007373165, -0.10708104, -0.0036892833, -0.058164276, -0.020893335, -0.0053259637, 0.021347068, 0.0020485516, 0.021465903, -0.02162795, 0.039798886, -0.02966551, 0.019672576, 0.008102379, 0.04148418, -0.018948764, 0.0012882783, 0.04645364, 0.04396891, 0.0008959881, -0.0052800504, 0.003994473, 0.010533093, -0.04420658, -0.023896616, 0.007648646, 0.072554104, -0.02973033, 0.008015954, 0.033100918, 0.0029033525, -0.043471962, -0.022124896, 0.010414258, 0.031610083, 0.02244899, -0.03480782, 0.021606345, -0.032474335, 0.0056014447, -0.020255947, -0.0088099865, 0.02594922, -0.0024671743, -0.025020147, -0.0018770511, -0.026856685, -0.021573935, 0.02718078, 0.021444296, 0.0048074117, 0.010208998, 0.011408149, 0.026554197, 0.004459009, 0.006746581, 0.022027668, 0.011645819, 0.018008888, -0.031631686, 0.053108394, -0.034743, -0.03433248, -0.0027467064, 0.03794074, 0.054145496, -0.047317892, 0.0031923372, -0.029276596, -0.01716624, 0.036968455, -0.018030494, -0.01208875, -0.008426474, 0.060195275, 0.051984865, -0.010111769, 0.0142493835, 0.015070424, 0.0043941904, 0.033187345, -0.020104703, -0.041138478, 0.03528316, -0.0123912385, -0.028930895, 0.016464034, -0.03995013, -0.019294465, 0.031782933, -0.04796608, 0.010500683, -0.08128306, 0.021325462, 0.025084965, -0.046410426, -0.022027668, -0.021573935, 0.070652746, 0.034289267, -0.0028979508, -0.042931806, -0.02806664, -0.050904546, 0.01607512, 0.007853906, 0.031610083, -0.05081812, 0.012121159, 0.06965885, -0.010651927, -0.011635017, -0.08469687, -0.0023780481, 0.035499223, -0.04420658, -0.015826646, 0.005220633, -0.055009753, -0.020893335, 0.05803464, 0.028369129, 0.024501594, -0.0061308, 0.028498767, -0.07622718, -0.029298203, -0.011321724, 0.06965885, 0.011926702, 0.034829427, 0.02476087, -0.027223993, 0.009404161, 0.0013200126, 0.011624213, 0.005741886, 0.010608715, 0.0017973777, 0.017706398, -0.033425014, -0.012542482, -0.021671163, 0.03409481, 0.056738257, -0.023097182, -0.0123912385, -0.06551044, 0.035736892, 0.11027878, 0.006206422, -0.031545263, 0.046972193, -0.0067249746, 0.075449355, 0.04396891, -0.03191257, 0.009355547, 0.009652634, 0.014865165, 0.019877836, -0.0051071993, -0.052633055, -0.033295374, 0.025192996, -0.020050688, 0.045935087, -0.0034624166, 0.026683835, 0.005115302, 0.006211824, 0.028952502, -0.0044671115, -0.04159221, 0.060108848, -0.032128632, -0.015578174, -0.059071746, -0.031998996, 0.034678183, 0.0050315773, -0.028001823, -0.0020350476, 0.026014037, -0.01784684, -0.0008595274, -0.013946895, 0.005639256, -0.043644816, 0.005363775, -0.022600235, 0.0059147365, -0.017868446, -0.013752438, -0.016031908, -0.008707357, 0.03351144, -0.0051720184, 0.0049343486, 0.018873142, 0.0012356128, -0.008934223, -0.0072489283, 0.015426929, -0.011192086, 0.019067599, -0.015178457, 0.033403408, -0.022016864, 0.01651805, -0.026921505, 0.045157257, 0.0050531835, 0.02393983, -0.02973033, 0.0626584, -0.0061253984, 0.017511941, -0.014605888, 0.026510984, 0.060065635, 0.008388663, -0.03670918, -0.04455228, -0.0030086834, -0.041505788, 0.019391693, 0.021055382, 0.030205669, 0.031523656, 0.020061491, -0.032258272, 0.027396845, -0.024976933, -0.021411886, -0.008815388, 0.010257612, 0.011008432, 0.007108487, 0.013579587, -0.034418907, 0.0418947, 0.013417539, -0.043515176, -0.035888135, -0.026727047, -0.037659857, -0.0194133, 0.038091984, -0.01689616, -0.0042996625, 0.0027588601, -0.04485477, -0.049305677, -0.045935087, -0.0187327, -0.00803756, 0.04029583, 0.025106572, -0.015318898, 0.012553286, 0.02973033, 0.022578629, -0.003943158, 0.014497857, 0.029708723, -0.0065305172, -0.022967543, -0.031610083, 0.0009175944, -0.031156348, -0.0384809, 0.022146503, -0.039388366, -0.006276643, 0.035650466, -0.037184518, -0.030832253, -0.02983836, -0.013071838, -0.00075149565, 0.002434765, -0.027461663, 0.06555365, 0.004172725, 0.043904092, 0.04206755, -0.028887682, 0.06797356, -0.004761498, 0.017652383, -0.013179869, -0.035499223, 0.008253624, 0.008918018, -0.010268415, 0.012131962, 0.010511486, -0.018095313, -0.019791411, 0.017954871, 0.019737395, -0.023097182, 0.03299289, -0.039734066, 0.060886677, 0.02428553, 0.038848206, -0.0046534664, 0.013547177, -0.030832253, -0.0357585, 0.047317892, 0.024415169, 0.010970621, -0.022578629, -0.050861333, 0.009712052, 0.034181237, 0.032107025, 0.024976933, -0.0010485828, -0.02268666, 0.0067033684, -0.002005339, -0.01181867, -0.017782021, -0.009717453, 0.0020715082, 0.013482358, -0.0074001728, 0.016528852, -0.020050688, -0.010916606, 5.7223053e-05, 0.019100009, 0.038437687, -0.003732496, -0.031782933, -0.004550836, -0.036665965, -0.021941243, 0.012996216, 0.023615735, -0.051984865, -0.018516637, -0.044681918, -0.03351144, -0.022232927, 0.031523656, -0.0051855226, -0.018786715, -0.049781017, 0.0036973855, -0.00858312, 0.027137568, 0.02629492, -0.023270033, -0.0010803172, 0.06365229, 0.008253624, -0.004361781, 0.040447075, 0.006179414, 0.014940787, -0.043407146, -0.01273694, -0.024242317, -0.0025252413, -0.0050720894, 0.042175584, 0.03794074, -0.00459675, 0.011969915, -0.025084965, -0.018300572, 0.017393107, 0.011451363, -0.0015381016, 0.052244138, 0.0096634375, 0.014757133, -0.050861333, -0.005350271, -0.05933102, 0.0048857345, -0.0033084713, -0.037184518, -0.013536374, -0.017522745, 0.040101375, -0.018235754, 0.029600691, 0.017922463, 0.030681008, -0.018062903, 0.04472513, -0.04077117, 0.028650012, -0.009744461, -0.02186562, -0.01968338, -0.016215561, 0.00031616158, 0.023766978, 0.01648564, 0.034959063, -0.043104656, -0.022837905, -0.025797974, -0.044509068, -0.0017366098, 0.029449446, -0.019337678, 0.033835534, -0.04131133, -0.008615529, -0.030681008, 0.02629492, -0.007648646, 0.019283662, 0.008426474, 0.027440056, -0.018030494, 0.003926953, -0.029319808, -0.014865165, 0.038977843, -0.0089774355, -0.023507701, 0.02322682, 0.015729418, -0.01314746, -0.017749611, 0.022405779, 0.04584866, 0.027569694, 0.066201836, 0.015426929, -0.029341415, 0.023291638, -0.016042711, 0.010533093, -0.010090163, -0.020018278, -0.012542482, 0.003051896, 0.02700793, 0.00052091543, -0.019272858, 0.049305677, 0.023183607, -0.009360949, 0.0031410223, -0.018408606, -0.012672121, 0.04826857, 0.028390735, 0.003089707, 0.005671665, 0.037314154, -0.027591301, 0.019694183, -0.014692314, 0.05531224, 0.01791166, 0.030486552, -0.037616644, 0.0039701657, 0.03763825, 0.0026413756, -0.030983496, -0.011073251, 0.007675654, -0.023097182, -0.026078857, -0.0067519825, 0.02216811, -0.0069194315, 0.015826646, -0.021995258, 0.060368124, 0.03871857, 0.012045537, 0.028196279, 0.017025799, 0.012380435, -0.013579587, -0.0089774355, 0.027872184, 0.0207745, 0.058942106, -0.011937505, -0.0016204758, -0.007556819, -0.008982837, 0.012067143, 0.011084055, -0.031415623, 0.031653292, -0.014000911, 0.01968338, -0.05258984, 0.046064727, 0.004361781, -0.0017406611, -0.022600235, -0.019748198, -0.013374327, -0.008350852, -0.07588148, -0.005520421, 0.04260771, 0.02973033, 0.030659402, 0.054447986, 0.034073204, 0.03787592, 0.030421732, 0.010495282, -0.043817665, 0.0042294418, -0.028433949, -0.008161796, -0.015275685, -0.018840732, 0.0011181283, 0.010311628, -0.007551417, -0.04070635, -0.006249635, -0.02097976, -0.009658036, -0.030464945, -0.027072748, -0.007184109, -0.035736892, -0.014832755, -0.0036109602, 0.046324, 0.022600235, -0.026510984, -0.024393562, -0.0035029284, 0.026640622, -0.013017822, 0.034375694, 0.0033705896, -0.05496654, -0.003378692, -0.0013713277, -0.012801759, -0.0023267332, 0.020353176, 0.01014958, -0.031005103, -0.018862339, -0.024112679, -0.001604271, -0.026791867, 0.027029537, 0.03558565, -0.010398053, -0.009490587, -0.012553286, 0.024739264, 0.023140395, 0.01924045, 0.034008384, -0.023529308, 0.016215561, 0.0017204052, -0.020958154, -0.008788381, -0.009447373, 0.02227614, 0.011732245, 0.038913026, 0.046107937, -0.052157715, 0.033057705, -0.014562676, -0.012121159, -0.04416337, -0.013255492, -0.010284619, -0.010954416, 0.003381393, 0.021671163, 0.027396845, -0.006579132, -0.019845426, -0.020515224, 0.00793493, -0.001001319, -0.015329701, 0.012780152, 0.011807867, 0.04628079, 0.041203298, -0.021271445, -0.0063846745, 0.013028625, -0.014389825, -0.010884196, 0.014346613, 0.070047766, 0.047015402, -0.022600235, -0.010570903, 0.03960443, -0.014152155, -0.020180326, 0.04202434, 0.02718078, -0.021671163, 0.016550459, 0.01610753, -0.022578629, 0.014865165, 0.0054502003, 0.04537332, 0.019262055, 0.029795147, 0.010954416, 0.01382806, 0.0010411557, -0.03647151, -0.01760917, -0.012142765, 0.028023427, -0.052373778, 0.058726043, -0.019348482, 0.018203344, 0.00021724503, -0.030594584, -0.0017771218, 0.010338635, -0.0069842506, 0.042715743, 0.021789998, -0.0004338149, 0.012326419, -0.03262558, 0.06110274, -0.013158264, -0.020461207, -0.014379022, -0.004215938, -0.001604271, -0.03463497, 0.03426766, 0.01651805, 0.011526984, 0.0031491246, 0.064991884, -0.051207036, -0.012013127, 0.020850122, 0.037487008, 0.007762079, -0.057948213, -0.021066185, 0.0006350239, -0.020806909, -0.012250797, -0.03651472, -0.032820035, 0.06926994, -0.035153523, 0.033252165, 0.0076108347, -0.0040484886, -0.0364499, 0.045157257, -0.07108487, -0.003041093, -0.001611023, 0.025020147, 0.0024293633, 0.04055511, -0.011256905, -0.029751936, 0.010786967, 0.10336475, 0.0037946142, -0.010263014, 0.022049274, -0.0049262466], [-0.006165536, -0.03253664, -0.026232213, 0.030676713, 0.02228289, 0.051111754, -0.0234544, 0.010918011, 0.019432612, 0.023490634, 0.0019414495, -0.0026087284, 0.023780491, 0.0032427944, 0.0066184406, -0.0043871324, -0.019988174, 0.0070532286, 0.016292475, -0.006539937, -0.035821706, -0.038816914, -0.075266644, 0.039227545, 0.009257362, 0.025652496, 0.018877048, 0.0038406278, -0.009951816, -0.018659655, 0.015579905, 0.011244102, 0.027512422, -0.032391712, 0.003882899, -0.030241925, 0.021389157, -0.0008280599, -0.024239434, 0.017959163, -0.0060689165, 0.019698314, -0.0127779385, -0.071208626, 0.028720167, 0.0009201504, -0.035483535, 0.0040791575, -0.00030552165, -0.02014518, 0.012838325, -0.035217833, -0.014106457, -0.01858719, -0.008695762, 0.031570446, 0.05096682, -0.0765227, 0.019263526, 0.013635437, -0.042778313, -0.015930152, -0.01362336, -0.0031854264, -0.050145555, -0.025241863, -0.026739465, 0.027270874, -0.017741768, 0.013514662, -0.024927849, 0.02029011, -0.027753972, -0.0028261223, -0.016014693, -0.03717438, 0.08043579, 0.033647764, -0.00072766613, 0.008260973, 0.029782983, -0.038430434, -0.022427818, -0.011612465, -0.0076872944, -0.044710707, 0.017596839, -0.093962535, -0.010863663, 0.032609105, 0.010984438, -0.02724672, 0.037271, 0.03536276, -0.079807766, -0.017669303, 0.009039968, 0.022717677, -0.041159935, -0.008466289, 0.003940267, -0.02157032, -0.07768214, -0.055556253, 0.04971077, -0.0005850013, 0.037101913, -0.009722345, 0.0019052172, 0.08038748, 0.002572496, -0.011660774, -0.016582334, -0.019505076, -0.034976285, 0.0139615275, 0.026328832, -0.06642596, -0.009408331, 0.032754034, -0.057150476, -0.006485589, 0.061256807, 0.031908613, -0.019239372, -0.008031501, -0.014698252, 0.002998226, -0.03736762, 0.009831041, -0.012814171, 0.037101913, 0.03446903, -0.0059088906, 0.0022675404, -0.009142627, 0.053189073, -0.048454713, -0.008738033, 0.006029665, -0.055507943, -0.0067271376, 0.00089675037, 0.06231962, -0.03550769, -0.033599455, -0.035870016, -0.013188572, -0.03461396, -0.05859977, 0.0017935007, -0.023140388, 0.020736976, 0.05565287, 0.03821304, -0.031014882, 0.051836397, 0.057730194, -0.011141445, 0.01768138, 0.028961716, -0.04029036, -0.020918136, 0.02236743, 0.013345578, -0.057826813, 0.061594974, -0.0075182104, -0.019879477, 0.044807326, -0.012693396, -0.040459447, 0.0014545774, 0.031425513, -0.015374589, 0.028720167, 0.041546416, 0.02596651, -0.057392024, -0.016207933, 0.00841798, 0.03698114, 0.038527053, -0.08140199, 0.03702945, 0.03647389, 0.0005868884, 0.004803804, 0.0392517, -0.05434851, 0.015761068, -0.022331199, -0.029662209, -0.012415615, -0.0075604813, -0.009360021, -0.00057934, -0.07831016, 0.032367557, 0.029058335, -0.014734484, -0.01891328, -0.023708027, 0.025942355, -0.0077356044, -0.009613647, 0.07884157, -0.0036534276, 0.0026253348, 0.019275604, 0.04024205, -0.019686237, 0.020821517, -0.059131175, -0.03978311, 0.028599393, -0.0417155, 0.048478868, -0.027705662, -0.039227545, 0.07971115, -0.008442135, 0.053285692, -0.04876873, -0.006558053, 0.047367744, 0.033188824, 0.05439682, 0.0068781055, 0.004293532, 0.018937435, -0.052271187, -0.0214737, 0.042295218, -0.043285567, 0.025362637, -0.0073189326, 0.029444814, 0.0340584, -0.0024955024, 0.028309533, 0.0064191627, -0.030096997, -0.018333564, -0.0025694766, 0.027439957, -0.009257362, 0.031280585, -0.03401009, -0.035193678, 0.02335778, -0.02596651, 0.021884333, 0.0076087913, -0.022113804, 0.054686677, 0.018852893, -0.04434838, 0.004127467, -0.025338482, 0.0076631396, 0.02671531, -0.028792633, 0.08299621, 0.009203014, -0.040845923, 0.01915483, -0.031908613, -0.053623863, 0.037391774, 0.054831605, -0.054638367, -0.0034088593, 0.01868381, 0.038816914, -0.019034056, 0.07584636, 0.020749053, -0.011479612, 0.0202418, 0.0278989, 0.017608916, 0.0072343904, 0.0182611, 0.037440084, -0.0031461748, 0.0008235309, 0.009263401, -0.073237635, -0.024287743, 0.00827909, -0.03845459, 0.032923117, 0.007131732, 0.03693283, 0.0066788276, 0.011884207, 0.03777825, -0.07381735, 0.013719979, -0.015724836, -0.009951816, -0.015579905, -0.047850844, -0.027488267, 0.079034805, 0.03016946, 0.06893806, -0.018079937, 0.008097928, 0.073285945, 0.011860052, -0.025048623, -0.093189575, 0.030024532, -0.03642558, 0.024480984, 0.01821279, 0.028502773, -0.022379508, -0.05202964, -0.015169272, -0.05024218, 0.027488267, 0.012186144, 0.039469093, -0.008357593, 0.0019520172, -0.04053191, -0.02416697, -0.07154679, 0.009039968, -0.03536276, 0.008110005, -0.06362399, -0.12203052, -0.033019736, -0.055507943, 0.0007469146, -0.0074095135, -0.037947334, 0.043961905, -0.031232275, -0.036908675, 0.0234544, -0.014203077, -0.010579843, -0.03768163, 0.042246908, 0.015374589, 0.0015089259, 0.08502522, 0.05618428, 0.024058273, 0.046836335, -0.040314514, -0.002472857, -0.026087284, -0.012300879, -0.0029876584, 0.0829479, -0.07072552, 0.01087574, 0.059421036, -0.009450601, -0.046111688, -0.0070894607, -0.015157195, 0.021836022, 0.02917911, -0.062029764, 0.023200775, 0.01016921, -0.031063192, -0.033333752, -0.0064674723, 0.06043554, 0.006238001, -0.063768916, 1.1652848e-05, -0.030386854, -0.01768138, 0.00022475372, 0.0036534276, -0.007258545, -0.028116295, -0.023792569, 0.029686363, 0.04434838, -0.026377143, -0.010628153, 0.040459447, 0.037560858, -0.009287556, 0.013490507, 0.054783296, -0.067682005, -0.009722345, 0.0009828022, 0.016956735, -0.029638054, 0.0071800416, -0.0074638617, -0.0075121718, 0.04062853, 0.028816788, -0.013550894, -0.046546478, 0.0028955678, 0.057150476, 0.00016417778, 0.0174036, -0.005939084, 0.028865097, 0.0006114207, 0.046232466, -0.009637802, 0.06512159, -0.0033937623, 0.009311711, 0.0034450917, -0.027319184, 0.0003308088, 0.041329022, -0.012572622, 0.00780203, -0.046522323, 0.01565237, -0.0026162767, -0.006437279, -0.015495364, 0.0077778753, 0.0069505703, 0.023683872, -0.0404836, -0.0291308, -0.043623734, -0.044541623, -0.0018282235, 0.0070169964, 0.041280713, -0.00875011, 0.030652558, 0.06758539, -0.061208498, -0.025362637, -0.06410708, -0.002374728, 0.023949577, -0.041353177, -0.03613572, -0.0029725614, -0.050918512, -0.00378326, 0.06777863, -0.02440852, 0.01239146, -0.06038723, -0.0018236943, -0.04922767, 0.0037228728, 0.010954244, 0.023043767, -0.010996515, 0.028019676, 0.0021543144, 0.013587127, 0.02512109, -0.0036534276, 0.002869903, -0.020978523, -0.027826436, -0.08082227, -0.0041606803, 0.00036345565, -0.065701306, -0.02671531, 0.023514789, 0.03558016, -0.02483123, 0.005009121, 0.014396316, 0.052850906, 0.027367493, 0.008719916, -0.050532036, 0.032077696, -0.0035900208, 0.024456829, -0.026425453, -0.0424643, 0.0486238, 0.05149823, 0.023297394, -0.017282825, -0.051836397, -0.034493186, -0.07347918, 0.019613773, 0.020773208, 0.04265754, 0.013973605, -0.0054620253, 0.020133102, -0.015265892, -0.0044535585, -0.034130864, -0.03026608, 0.0068781055, -0.07164341, -0.014577477, -0.029444814, -0.03688452, -0.028840942, 0.003901015, -0.034082554, -0.025628341, 0.03504875, 0.020773208, 0.009982009, -0.012645086, 0.019046133, -0.040870078, 0.002113553, -0.0147103295, 0.027174255, 0.033599455, 0.019903632, -0.021135531, -0.032222625, -0.0026872319, -0.00048347528, -0.046377394, 0.019939864, 0.008599142, -0.048068237, 0.012325034, 0.036232337, -0.0587447, 0.041546416, -0.005664322, 0.06236793, -0.013466353, -0.005939084, -0.041329022, 0.06623272, 0.024807075, 0.026352989, -0.03376854, 0.053044144, -0.0481407, 0.05618428, -0.006558053, 0.01698089, 0.0104953, -0.044324227, -0.0053714444, -0.024009963, 0.02458968, -0.024722533, 0.013804521, -0.003315259, 0.05995244, 0.05995244, 0.02085775, -0.032077696, 0.053623863, 0.027488267, -0.008454212, -0.006346698, 0.013599205, 0.034758892, -0.022874683, -0.031715374, -0.047488518, 0.07449369, -0.0010341314, -0.057730194, 0.021159686, 0.016775573, -0.023671795, -0.013140261, -0.018055782, -0.011805704, -0.009021852, 0.011908362, 0.012095562, -0.037198536, -0.05207795, 0.046836335, -0.0033967819, 0.011376955, 0.006364814, -0.017584762, -0.00335753, 0.006364814, -0.014348006, 0.035217833, -0.007542365, 0.014372161, 0.0038708216, -0.04043529, 0.008870884, -0.008466289, -0.040459447, -0.053334, 0.016159624, -0.038285505, 0.0035719047, 0.0004498849, -0.0018282235, -0.029734673, 0.0513533, -0.029686363, -0.0023475536, -0.04872042, -0.0005831142, 0.07294778, 0.0033092203, 0.036232337, 0.024493061, 0.0062802723, 0.08488029, -0.014698252, 0.028019676, 0.021558242, -0.016014693, 0.013671669, -0.0025226765, -0.008405902, -0.044203453, -0.024348132, 0.0010001635, -0.013538817, 0.014819027, 0.032222625, -0.03772994, 0.017826311, -0.027512422, 0.0024154892, 0.019553386, 0.03717438, -0.015072653, 0.012741705, -0.020229723, -0.012306917, 0.018744197, 0.025459256, 0.050870202, -0.02843031, 0.006274233, 0.022270812, 0.01678765, 0.05207795, 0.029927911, -0.025241863, 0.0011850994, 0.031135656, -0.020579968, 0.019782856, -0.028937561, -0.018502647, -0.0059722974, 0.027029324, -0.019480921, -0.02487954, -0.012959099, -0.04033867, -0.003807415, 0.032802343, 0.05372048, -0.046618942, -0.03584586, -0.0048732497, -0.034758892, -0.041546416, -0.015543673, 0.039469093, -0.033937626, -0.044275917, -0.037705787, -0.047585137, 0.002756677, 0.019456767, -0.0072283517, -0.006866028, -0.016546102, -0.018526802, -0.007638985, 0.008188508, 0.023140388, -0.056619067, -0.007439707, 0.037101913, 0.015761068, -0.027802281, 0.01461371, -0.019178985, 0.018563034, 0.00785034, -0.022258734, -0.02004856, -0.04676387, -0.031981077, 0.023865033, 0.023671795, -0.0076269074, 0.01853888, -0.020833595, -0.0034390527, 0.0148673365, 0.022778064, -0.038599517, 0.048527177, 0.023683872, 0.007349126, -0.03140136, 0.011250141, -0.09164366, -0.025048623, 0.03173953, -0.036280647, -0.0029846388, -0.042391837, 0.008430057, -0.021642784, 0.014855259, -0.0034360334, 0.01821279, -0.0062017688, 0.029203266, -0.0059511615, 0.016908424, -0.006238001, -0.01991571, -0.0011518864, -0.034976285, 0.022186268, 0.040845923, 0.014154767, -0.0014726936, -0.027439957, -0.0043961904, -0.048309784, -0.025459256, 0.0090762, 0.035217833, -0.02407035, 0.0033394138, 0.035700932, 0.0058726585, -0.024082428, 0.03845459, 0.013297268, 0.03144967, 0.007892611, 0.0047887075, 0.014927723, 0.022258734, -0.028913407, -0.01821279, 0.020060638, -0.012415615, -0.039324164, 0.008599142, 0.0021965855, -0.026038975, -0.017596839, 0.022391586, 0.0056884773, 0.023321548, 0.06444525, -0.02804383, -0.0047343588, -0.0021980952, -0.02473461, -0.0005491464, -0.014106457, -0.04775422, 0.0057005547, -0.0006148175, -0.019372223, 0.0010152603, -0.031328894, 0.043333877, 0.028889252, 0.009414369, -0.010664385, -0.013599205, 0.0048521142, 0.05140161, 0.048961967, 0.004375055, 0.0046045263, 0.0397348, -0.0031552329, 0.03352699, -0.0021528048, -0.023321548, 0.008273051, -0.055942733, -0.03647389, -0.026425453, 0.024807075, -0.00666675, -0.019565463, -0.024058273, -0.03437241, 0.012814171, 0.0046800105, 0.006884144, 0.008333438, 0.0021950759, 0.0538171, 0.007222313, 0.04913105, 0.015773145, 0.014831104, -0.009245285, 0.03509706, 0.020012328, -0.020604122, -0.0059179487, -0.0057488643, 0.016691031, 0.054251887, -0.0024034118, -0.012234453, -0.022500282, -0.0049728886, -0.011395071, -0.066619195, -0.020084793, 0.009088279, 0.006866028, 0.020676589, -0.03731931, 0.037633322, 0.008925233, -0.0017180167, -0.0047162427, 0.017778002, 0.02085775, 0.018623423, -0.03553185, 0.011515845, 0.0117151225, 0.00094506016, 0.0005868884, -0.015869765, 0.05198133, 0.005945123, 0.029541433, 0.026111439, -0.027488267, -0.026691156, -0.008067735, 0.042826623, -0.025628341, 0.013889063, 0.016087158, 0.024251511, -0.014939801, -0.021546165, -0.005504296, 0.011980827, -0.033551145, -0.06251286, -0.026642846, -0.0933345, -0.0328265, 0.026618691, -0.0013187062, 0.04014543, 0.015579905, -0.056764, 0.019505076, -0.013490507, 0.0234544, -0.021413311, 0.02671531, 0.019782856, -0.012119717, -0.0007118145, 0.021014756, -0.04734359, 0.018937435, 0.012282763, -0.016727263, -0.009184898, 0.005739806, -0.012608854, -0.032295093, -0.02567665, 0.01602677, 0.05202964, -0.007989231, -0.033261288, 0.0023868054, 0.0076691783, 0.018925358, 0.0011269767, -0.007699372, -0.011183715, 0.010199403, 0.00092467945, 0.0022932051, -0.014166844, 0.016002616, -0.0003666637, -0.03707776, 0.019287681, 0.025580032, -0.014021915, 0.060193993, -0.01560406, -0.0120895235, -0.020579968, 0.025169399, -0.03777825, -0.0053140763, 0.02436021, -0.030990727, 0.05391372, -0.026884396, -0.009643841, -0.028671857, 0.003765144, 0.016751418, -0.02256067, 0.009764615, 0.0114192255, 0.04043529, -0.008176431, -0.01158831, -0.008061695, 0.026473762, 0.0010537572, -0.051788088, -0.0011473574, 0.00097298925, 0.09488042, -0.011286373, -0.009571376, -0.004951753, -0.018369796, -0.025797425, 0.005329173, 0.0010039377, 0.0027295027, -0.0050393143, 0.016678954, -0.017693458, 0.006654673, -0.033744384, -0.003541711, -0.00033175235, 0.001778404, -0.011799665, 0.054783296, 0.030700868, -0.0038708216, 0.0029770904, 0.002104495, -0.01673934, 0.0004370526, 0.0034722658, -0.018369796, 0.007312894, 0.038092267, -0.06231962, -0.008140199, 0.00217545, -0.024698377, 0.00052612374, 0.02473461, 0.011503767, -0.002818574, -0.0093298275, 0.063720606, -0.018647578, -0.026352989, 0.010779121, -0.008043579, -0.009535144, -0.039469093, 0.020302188, 0.02927573, 0.012270685, 0.013176494, 0.052319497, -0.06937285, 0.00045063972, 0.031981077, -0.0038436472, -0.014686175, 0.00378326, 0.0017149973, -0.0053140763, 0.0002728748, 0.0014379709, -0.011902323, 0.0070351125, 0.018321486, -0.029468969, 0.02572496, 0.045048874, -0.0009994087, -0.016473636, -0.027729817, 0.034348257, -0.027874745, -0.002374728, -0.008399864, 0.027367493, 0.05840653, 0.013128184, 0.020121025, 0.0148673365, 0.06840666, -0.0020561852, -0.025410946, 0.01868381, 0.0019686238], [0.03079363, 0.02468505, -0.025072534, 0.0068892483, 0.025801916, 0.010866663, -0.029129725, 0.057210963, -0.005564393, 0.04321593, -0.029973073, 0.00597752, 0.010439291, -0.0046783066, -0.026029848, 0.032822225, -0.020536683, -0.0005961849, 0.016468097, -0.067148805, -0.010000521, -0.05748448, -0.0997431, 0.022918575, 0.023112318, 0.0058407607, -0.00028936696, 0.012410904, -0.056299232, 0.014599052, 0.058806486, 0.0001655179, 0.043329895, -0.004988864, -0.021391429, -0.022690643, 0.013254253, 0.048640713, -0.010627335, -0.0005278053, 0.0030628378, -0.031340666, 0.022086622, -0.03747204, 0.003552892, 0.005108529, -0.03371116, -0.014690225, 0.031044355, -0.035785343, 0.00543903, -0.023955666, 0.0022750474, -0.0024958567, -0.01588687, 0.011043311, 0.018679038, -0.09646087, 0.039067566, -0.017186081, -0.019681938, -0.0144395, 0.0044076373, -0.027192302, -0.028765034, -0.03216122, 0.03136346, 0.027944477, 0.056299232, 0.0074590784, -0.02266785, 0.06254458, -0.020422718, -0.016057817, -0.018496692, -0.041757163, 0.07836306, -0.0025827559, -0.032822225, -0.0053706504, -0.0018263061, 0.001937423, 0.0053364607, 0.00081200816, 0.0376088, -0.034167025, -0.00016827801, -0.10366353, -0.007122879, 0.012843975, 0.034531716, 0.00027209398, 0.02944883, -0.011237053, -0.051558245, 0.029471623, 0.016547872, 0.012638836, -0.024046838, -0.018462501, -0.010957837, -0.021015342, -0.06067553, -0.04223582, 0.050783277, 0.022553883, 0.037449248, -0.02924369, -0.008353712, -0.009778288, 0.01927166, -0.025984261, -0.059171177, 0.017300047, -0.02931207, 0.054840468, -0.008803878, -0.050418586, -0.02246271, 0.010735603, -0.046361394, -0.014177378, 0.026782025, 0.05903442, -0.010291135, 0.0076642176, 0.012205765, 0.027716545, -0.0064276857, -0.01614899, -0.0072083534, 0.056527164, 0.027146716, 0.030907596, 0.060994636, -0.010268342, 0.06350189, -0.03136346, -0.026485713, 0.004490263, -0.04654374, 0.0014701622, -0.02094696, 0.01312889, -0.055752195, -0.027556993, -0.033597194, -0.018223172, -0.04731871, -0.04237258, 0.010935043, -0.0010171471, -0.018416915, 0.035238307, -0.0042594816, -0.0151119, 0.042805653, 0.06865315, -0.0036925003, 0.013493582, 0.008718404, -0.067467906, 0.030269386, 0.0025970016, 0.030702457, -0.070203096, 0.060174078, -0.012878165, -0.03361999, 0.020228976, 0.057302136, -0.035215512, -0.020331545, 0.0056698113, -0.02209802, 0.0376088, 0.044765867, 0.002887615, -0.030816423, -0.057028618, -0.03569417, 0.04221303, 0.06395775, -0.06195195, 0.021243274, 0.024115218, 0.036993384, -0.0104164975, 0.07111482, -0.040343985, 0.0008590192, -0.045654804, -0.044515144, -0.055113986, 0.0033733954, -0.038566116, 0.0057125487, -0.05443019, 0.00594333, 0.022052433, 0.019898474, -0.03610445, 0.0026611076, -0.018758813, -0.018565072, -0.013356823, -0.002662532, 0.020263165, 0.045153353, 0.014393914, -0.0064618755, -0.0069120415, 0.0021838746, -0.014542069, 0.0022237627, 0.021095118, -0.0463386, 0.013641737, -3.6282163e-05, -0.048002504, 0.087252416, -0.03434937, -0.007595838, 0.019237472, -0.022177795, 0.0003543632, 0.02011501, -0.0008305277, -0.0048606526, 0.012422301, 0.014029222, -0.041324094, -0.029631175, 0.002028596, -0.060994636, 0.0104164975, 0.00963583, -0.0074761733, 0.05329053, 0.006074391, 0.0149295535, 0.052469973, -0.05288025, -0.004362051, -0.029061345, 0.033232503, -0.00071050716, -0.052697904, -0.040207226, 0.011328226, 0.024001252, -0.0419851, 0.080505624, 0.054886054, -0.0023434272, 0.036628693, 0.0005495301, -0.035078753, 0.018462501, 0.03334647, 0.0011724258, 0.0066214283, -0.03931829, 0.043694586, 0.0402984, -0.039067566, 0.049142163, -0.056253646, -0.057210963, -0.020411322, 0.048276022, -0.059991732, 0.071433924, 0.06765025, 0.0073052244, -0.017083513, 0.060857877, -0.003817863, -0.027739339, 0.048595127, 0.029061345, 0.026326159, 0.0073280176, 0.013391012, -0.016935356, 0.037244108, -0.043671794, -0.018177586, -0.04791133, -0.033802334, -0.025938675, -0.010057505, 0.020730427, 0.035147134, 0.020388529, 0.014120394, 0.0012400931, 0.024890188, -0.0073451125, -0.009379406, 0.004988864, 0.0302238, -0.046293013, -0.029129725, 0.009356613, 0.044971008, -0.008239746, 0.057575654, -0.021311654, -0.038087457, 0.057712413, -0.012616043, -0.08615834, -0.07726899, -0.002165355, -0.026827611, 0.014542069, 0.0020200484, 0.056527164, -0.05689186, -0.031454634, -0.052424386, -0.059854973, -0.0067809806, 0.022690643, 0.0033762446, 0.035169926, -0.009852366, -0.0141431885, -0.015305642, -0.015442401, -0.049142163, -0.029084139, -0.010205661, -0.004290822, -0.07995859, -0.03284502, -0.05420226, 0.011459287, -0.011054708, -0.045153353, -0.007783882, -0.014781398, -0.017881274, -0.0016040723, -0.026554093, -0.004795122, -0.017755913, 0.008034607, 0.03469127, 0.0013355397, 0.059991732, -0.0063650045, 0.04462911, 0.00052495615, -0.052971426, -0.07075013, -0.03336926, -0.031956084, 0.023408629, 0.07002075, -0.08652303, -0.0051227743, 0.037244108, 0.00036380102, -0.058988832, -0.0058578555, -0.01826876, 0.003909036, 0.045654804, -0.025779122, 0.0075616483, -0.037152935, -0.06769584, -0.032206807, -0.021847293, 0.0012835427, -0.0017550773, -0.03979695, 0.011294036, 0.017505188, -0.01575011, 0.0057638334, 0.020696236, -0.017801499, 0.018849986, 0.035010375, -0.01692396, 0.013687324, 0.025984261, 0.006000313, -0.0092369495, 0.0426461, -0.0007023158, 0.010085996, 0.03364278, -0.048276022, 0.034531716, -0.00017201752, 0.0069519295, -0.000514628, 0.016445303, -0.025915882, -0.0010114488, 0.035397857, -0.056846272, 0.007994719, -0.031021561, 0.028354757, 0.043603413, -0.011601745, 0.020981152, 0.008165668, 0.0023818905, 0.036423553, 0.042760067, -0.0020927018, 0.03434937, -0.029836314, -0.012809785, 0.022337347, -0.018040827, -0.016137594, 0.011476383, -0.045016594, 0.03966019, -0.040549126, 0.047136363, -0.03781394, -0.02391008, -0.00597752, 0.009749796, 0.033232503, -0.024821809, -0.015374022, -0.07900127, 0.009219854, -0.061496086, -0.03229798, 0.004313615, 0.028628275, -0.018439708, 0.013345426, 0.015157486, -0.064823896, 0.026326159, -0.080551215, -0.016969547, 0.0238417, -0.03314133, -0.04854954, 0.0069291363, -0.095913835, -0.0033135633, 0.05342729, -0.005490315, 0.06569004, 0.024799015, 0.026713645, -0.08169087, -0.0103310235, -0.01870183, 0.02612102, -0.034531716, 0.016650442, 0.0029602684, -0.0075844415, -0.02099255, -0.0043164645, 0.017961051, 0.007020309, -0.016376922, -0.016639045, 0.05187735, -0.01699234, -0.035238307, -0.014621845, 0.08036887, 0.031545807, -0.004327861, -0.03428099, -0.0144508965, 0.026440125, 0.03918153, 0.013493582, -0.020593667, 0.015351228, -0.005419086, 0.0839702, 0.0014530673, -0.020274563, 0.05342729, 0.06354748, -0.018075017, 0.006137072, -0.01185247, -0.02025177, -0.03475965, 0.008803878, 0.019590765, 0.045039386, 0.044606317, 0.012479284, 0.049917135, 0.023955666, -0.026371745, -0.05110238, -0.021448413, -0.035899308, 0.021220481, -0.018815797, -0.0056584147, -0.055159573, 0.025140913, -0.019932663, 0.010952138, 0.002857699, 0.019032331, 0.00031233823, 0.0366059, -0.021391429, -0.0047894237, -0.027009957, 0.026371745, -0.016878374, 0.007726899, -0.016468097, 0.03462289, 0.007954831, -0.043466654, -0.022006847, -0.028559895, -0.03966019, -0.008222652, 0.011476383, -0.018416915, 0.015305642, 0.028195202, -0.012821182, 0.025528397, -0.020399924, 0.06222547, 0.009840969, -0.0055615436, -0.022690643, 0.061404914, 0.019248867, 0.032890607, -0.009903651, 0.02689599, -0.033300884, 0.058305036, -0.0066670147, -0.0048065186, -0.012342525, -0.02441153, -0.038155835, -0.046110667, 0.031682566, -0.022086622, 0.0013903859, 0.016935356, 0.056162473, 0.06067553, -0.02646292, -0.05151266, 0.018508088, -0.03320971, 0.013277046, 0.0009900802, 0.050418586, 0.03519272, -0.009915047, -0.018451106, -0.023089524, 0.07913803, 0.0068550585, -0.06231664, -0.011185769, 0.0024588178, -0.0144508965, -0.017186081, 0.008416394, -0.041620404, 0.02441153, 0.01249068, -0.013539168, -0.036446344, -0.032252394, 0.031568598, 0.002004378, 0.036583107, 0.015408211, -0.036742657, -0.01799524, 0.015054917, 0.014826984, 0.0137784965, -0.020969754, 0.015328435, 0.004832161, -0.022006847, 0.018211776, 0.035078753, -0.022405727, -0.028924586, -0.010029013, -0.046862844, 9.72273e-05, 0.018941158, -0.0074362853, -0.025779122, 0.061496086, -0.027488614, 0.015966645, -0.023590975, 0.0016938206, 0.05151266, 0.004587134, 0.031067148, 0.04841278, 0.03781394, 0.038588908, -0.014724415, 0.029676761, 0.010792586, 0.0008725526, 0.021676345, 0.0013661681, -0.0060345028, -0.0040942305, -0.011829677, -0.02710113, -0.019499592, 0.005421935, 0.02498136, -0.005678359, 0.06058436, -0.016365526, 0.0113966055, 0.015909662, 0.0024103823, 0.024935775, 0.07731458, -0.034463335, -0.032115635, 0.026759231, 0.03496479, 0.024639463, -0.025095327, -0.009088793, -0.008444885, -0.024639463, 0.050828863, 0.020719029, 0.00913438, -0.022713436, -0.004008756, -0.030839216, 0.0096586235, -0.018291553, -0.010792586, -0.003988812, 0.022804609, -0.03546624, -0.020525288, -0.010889457, -0.031545807, -0.022622263, -0.003746634, 0.0876627, -0.05201411, -0.067787014, -0.012604646, -0.039774153, -0.01655927, -0.010251247, 0.039113153, -0.040571917, -0.024024045, -0.035716962, -0.040002085, 0.027123922, -0.013003527, -0.043808553, -0.009345217, -0.0061484687, 0.008849464, 0.019852888, 0.010085996, 0.013653134, -0.02830917, 0.015704524, 0.033392057, -0.005527354, 0.0013447995, 0.001437397, 0.0015727316, 0.00550741, 0.010348118, -0.015396815, -0.0068721534, -0.011539063, -0.001863345, 0.042418167, 0.02646292, -0.0091799665, -0.007652821, -0.061404914, -0.031614184, 0.024001252, -0.00035525358, 0.03599048, 0.039135944, -0.03485082, -0.024844602, -0.025779122, 0.019636352, -0.08333198, 0.021801706, 0.02830917, -0.008336618, -0.011749901, 0.0033107141, -0.0045415475, -0.031386252, 0.015932456, -0.02327187, 0.038064662, -0.017140495, 0.02844593, -0.020285958, 0.0056983028, 0.014713018, -0.01927166, -0.003384792, -0.011898057, 0.019704731, 0.025232086, 0.014678828, 0.01588687, -0.014359724, -0.03569417, -0.05000831, 0.0027294871, 0.028491516, 0.05584337, -0.027260682, -0.029061345, 0.03279943, -0.0010556106, -0.043945312, 0.05739331, 0.00076570944, 0.03072525, -0.0022209135, 0.023568181, -0.008137177, 0.012467887, -0.018918365, 0.0046298713, 0.029494416, -0.027260682, -0.014986536, 0.05260673, 0.002283595, -0.006712601, -0.050053895, 0.004852105, 0.0059718215, 0.04016164, 0.052424386, -0.024525495, -0.0039546224, 0.030839216, -0.010952138, 0.023146506, -0.006689808, -0.0523788, -0.04782016, 0.02246271, -0.018200379, -0.017163288, -0.026713645, 0.009892254, -0.00013382109, 0.020160597, -0.0056156777, 0.0066613164, -0.042828444, 0.032047257, 0.02111791, 0.0029175312, 0.0055757896, 0.024457116, -0.020832995, 0.03562579, 0.0325715, 0.023682147, 0.007932038, 0.019807301, -0.04038957, 0.006017408, 0.063410714, -0.027853305, -0.011863867, -0.003273675, -0.018724624, 0.0013184448, 0.02696437, 0.0145078795, -0.009709909, 0.017379824, 0.028012857, -0.021049531, 0.054156672, 0.01706072, 0.002296416, 0.033870712, 0.018451106, 0.022610866, -0.06705763, -0.003236636, -0.023089524, 0.019670542, 0.0641401, -0.01500933, 0.0023434272, -0.01809781, -0.0097384, -0.0057097, -0.08242025, -0.031591393, 0.028924586, 0.037244108, 0.027351854, -0.01306051, 0.02008082, 0.033756748, -0.004555793, 0.012912354, 0.021550981, -0.004111326, 0.009829572, -0.019226074, 0.03314133, 0.015921058, 0.0023690695, 0.0085645495, 0.02199545, 0.023306059, -0.020707633, -0.0053478573, 0.013960842, 0.00392898, -0.028696654, -0.018200379, 0.022941368, 0.035147134, -0.014667432, 0.0016026477, 0.05789476, -0.021163497, -0.055113986, 0.028081236, -0.008370807, -0.036856625, -0.058213864, 0.0029773633, -0.033688366, -0.013402409, -0.008553153, 0.03320971, 0.012935148, 0.010365213, -0.0641401, 0.02568795, -0.010781189, 0.0067239976, 0.002031445, -0.012091799, 0.029175311, -0.015487988, -0.012946544, -0.021311654, -0.050692104, 0.039249912, -0.04987155, -0.0238417, 0.03266267, -0.011567555, 0.0037209918, 0.022850195, -0.05274349, 0.02612102, 0.016513683, -0.011026217, 0.004025851, -0.015271452, 0.024935775, 0.00688355, 0.021038136, 0.020844392, -0.03817863, 0.0037694275, -0.023955666, -0.01259325, -0.0037181426, -0.030474525, 0.027807718, -0.0325715, 0.00748757, 0.03029218, -0.03127229, 0.048959818, -0.0033392056, -0.025368845, -0.0093224235, 0.04023002, -0.011487779, 0.015943851, 0.009088793, 0.005527354, 0.03482803, -0.025140913, 0.0020129255, 0.010291135, -0.0010976356, -0.009709909, -0.043626208, 0.004758083, 0.011117389, 0.007971926, 0.025368845, 0.0012279843, 0.0060914857, 0.010245549, 0.01984149, -0.0059946147, -0.00096586236, 0.026234986, 0.05584337, -0.013425202, 0.015989438, 0.030109834, -0.006359306, -0.009271139, 0.047728986, 0.019864284, -0.027579786, -0.020525288, 0.04321593, -0.025391638, 0.02327187, 0.0034275292, -0.00023719187, 0.011294036, 0.03165977, 0.007806675, 0.018587865, 0.032685466, -0.007630028, 0.024138011, 0.01685558, 0.01695815, 0.029334864, 0.03804187, -0.059216764, -0.028058443, 0.020764615, -0.03177374, 0.0032651275, 3.4835328e-05, -0.01490676, 0.047136363, 0.024730636, -0.00027529927, -0.025596777, 0.012684423, 0.037221316, 0.02229176, -0.028559895, -0.03719852, 0.00031483124, -0.021938467, -0.007994719, 0.017345635, 0.034736857, 0.023260472, 0.036013275, -0.0035785343, -0.07526319, -0.018462501, 0.062362228, -0.005960425, -0.022109415, 0.0067809806, -0.016787201, 0.0008739772, -0.036583107, 0.01890697, 0.017300047, 0.015089107, -0.010576051, -0.0092369495, 0.03562579, 0.015943851, -0.011351019, -0.011111691, 0.00068379636, 0.030064246, -0.020673443, -0.018963952, 0.015864076, 0.0406403, 0.056162473, 0.02605264, -0.0053706504, -0.00883237, 0.08807297, 0.005758135, -0.045449663, 0.016046422, -0.02837755], [0.0058563803, 0.007342592, -0.020311555, 0.03493776, 0.023826564, 0.010102699, -0.04310013, 0.05751402, 0.00028142915, 0.0323192, -0.02845033, -0.012963066, -0.017657606, -0.008162367, 0.003597575, 0.012632797, -0.039349213, -0.0053668744, -0.010438865, -0.046685908, -0.0013033837, -0.07303667, -0.042982176, 0.013222563, 0.000995968, -0.017173998, -0.0011146585, 0.037131693, -0.0033056408, 0.0067705186, 0.023519885, 0.012679978, 0.0051014796, -0.02837956, 0.041849826, -0.005676502, 0.024274785, -0.025572272, 0.0007265185, -0.012927679, -0.017999671, 0.015416494, -0.017869921, -0.035102896, -0.007165662, 0.017185792, -0.008315707, -0.024392739, -0.017280156, -0.025548682, 0.0036919378, -0.032177657, 0.034324404, 0.0045588943, -0.042368818, -0.0046827453, 0.048290074, -0.08209548, 0.06666719, 0.0027940185, -0.012278937, 0.0059979246, 0.029794998, 0.005464186, -0.025855359, -0.042156503, 0.006971039, -0.009713452, 0.034984943, 0.041024152, -0.008681362, 0.019651016, -0.014142599, -0.04883266, -0.021266976, -0.04826648, 0.05491905, -0.004063491, -0.016725775, -0.006257422, 0.034819808, -0.020052059, 0.0017634016, 0.016053442, 0.010261935, -0.01706784, 0.030832987, -0.10210036, -0.013552832, -0.023083458, 0.023048071, -0.009784224, 0.0065641003, 0.03165866, -0.009642681, -0.004635564, 0.046119735, 0.0087403385, -0.038971763, -0.02517123, -0.03696656, -0.08577563, -0.059212547, -0.07671682, -0.025949722, 0.01050374, 0.04996501, -0.011028632, -0.025784587, -0.021668019, 0.05600422, -0.028874964, 0.0062220357, 0.00067122787, -0.025949722, -0.010810418, -0.022776779, -0.060627986, -0.020724392, 0.005231228, -0.10238345, -0.0058357385, 0.083888374, 0.005829841, -0.04560074, 0.0388774, 0.005935999, 0.0459546, 0.00076890795, 0.015027248, -0.005304949, 0.050484005, 0.014944681, 0.07327258, 0.06331732, -0.017209385, 0.039726667, -0.037579916, -0.019521268, -0.0023811818, -0.086672075, 0.0011279283, -0.006894369, 0.046214096, -0.03474904, 0.024510693, -0.0095424205, -0.0004581748, -0.052418437, -0.02835597, -0.015251359, -0.025407137, -0.04713413, 0.0055791903, 0.004564792, -0.0110876085, 0.00079249864, 0.047299266, 0.0010107122, 0.037863005, 0.035527527, -0.0568063, -0.018789958, 0.013824125, 0.020618234, -0.069214985, 0.020111034, 0.00674103, -0.045412015, 0.02804929, 0.014402096, -0.010969656, -0.049823467, -0.010999143, -0.0237322, 0.018011466, 0.0426755, 0.035669073, -0.0038364306, -0.09054094, -0.038004547, 0.052559983, 0.05746684, -0.030809397, 0.031776614, 0.050248098, 0.019084841, -0.0100378245, 0.005069042, -0.042227276, -0.044680703, -0.023083458, 0.017516062, -0.03090376, -0.0019226385, -0.03269665, -0.009837303, -0.045152515, -0.013045633, 0.002870688, -0.025737407, -0.008156469, -0.025124049, 0.02800211, -0.042840634, 0.032908965, 0.03411209, -0.0373676, 0.018742777, 0.046544366, 0.012125597, 0.04673309, -0.0001788651, -0.026091266, 0.014579026, 0.021172615, -0.07011143, 0.039773848, 0.0036978354, -0.024605054, 0.051097363, -0.01866021, 0.013316926, 0.023130639, 0.03236638, 0.047487993, 0.06940371, -0.006894369, 0.022694211, 0.03236638, -0.018542256, -0.035197258, -0.0060303616, 0.0653933, -0.05539086, 0.018353531, -0.0019093688, -0.012727159, 0.036541928, 0.006257422, 0.050059374, 0.042533953, -0.052276894, -0.014991862, 0.023036275, 0.06907344, 0.0013483535, 0.0013594116, 0.001651346, 0.020618234, 0.021644427, 0.0062397285, 0.01981615, 0.035385985, 0.032484334, 0.027907746, 0.003211278, -0.021750586, -0.0055054696, 0.05826892, -0.02840315, 0.046544366, 0.016949886, 0.051286086, -0.00989628, -0.012915884, 0.0059418967, -0.049351655, -0.063600406, -0.022965504, 0.089691676, 0.014673389, -0.015333926, 0.02262344, 0.043878622, -0.016820138, 0.079547696, 0.015192383, -0.046851043, 0.08039696, 0.018837139, -0.018094033, 0.05468314, 0.0028028649, -0.01348206, -0.034017727, 0.010497842, -0.057278115, -0.043241672, 0.03878304, -0.030809397, 0.0032171758, 0.057372477, 0.0035533425, 0.041071333, -0.0050189123, 0.010315014, 0.048030578, -0.03203611, 0.010721954, -0.020948503, -0.0053668744, -0.019403314, -0.02837956, 0.027058482, 0.04390221, -0.020252578, 0.07723581, -0.022375738, -0.035150077, 0.07959487, 0.005950743, -0.01815301, -0.0017103226, 0.009052915, -0.0217152, 0.029276004, 0.021325953, 0.052607164, -0.051474813, -0.027742611, -0.04527047, -0.08860651, 0.052135352, 0.0039809234, -0.0070005273, -0.035904977, -0.04059952, -0.060627986, 0.017834537, -0.060863893, 0.008681362, -0.005809199, -0.020252578, -0.03814609, -0.09709914, -0.031422753, -0.023696814, 0.031823795, -0.025595862, -0.026822576, -0.012514844, -0.020240784, -0.037273236, -0.0014124905, 0.003880663, 0.010450661, -0.005582139, 0.032248426, 0.00014928462, 0.0012989605, 0.022552667, 0.0434304, 0.0038836119, 0.013765148, 0.0012805304, -0.020311555, -0.03236638, -0.014673389, 0.0068766763, 0.03628243, -0.097476594, 0.0023841306, 0.01345847, 0.00083525665, -0.032484334, 0.0010210332, -0.01436671, 0.017893514, -0.011541729, -0.027931336, 0.039231263, -0.0058593294, -0.037155285, -0.008663668, 0.0006247838, 0.019143818, -0.024392739, -0.043689895, 0.034064908, -0.0059065106, 0.0016307042, 0.015003658, 0.023531679, -0.008073902, 0.0027497858, -0.045010973, -0.0047092848, 0.029747818, 0.0055438043, -0.013965668, 0.03349873, -0.0076138843, -0.016301144, -0.03092735, 0.045199696, 0.00421683, 0.051097363, -0.009931667, -0.009406774, 0.013210768, -0.009507035, 0.014779546, -0.010214754, 0.027601069, -0.02320141, 0.021502884, 0.0030638366, -0.0029532553, 0.06992271, 0.0132461535, 0.0792646, 0.011801226, 0.03456031, 0.06605384, -0.011064018, -0.030030906, 0.0056234226, -0.013257949, 0.011005041, 0.0072364337, -0.028544694, -0.029771408, 0.04958756, -0.030125268, 0.034961354, -0.03272024, 0.023637837, 0.021349544, -0.039419986, -0.005148661, -0.019993082, 0.04279345, -0.011919179, 0.0023295772, -0.09615552, 0.0017766713, -0.09804277, 0.009854997, 0.020464895, 0.045459196, -0.010297322, -0.01855405, -0.011871998, -0.022694211, -0.049398836, -0.07530138, 0.015499061, -0.0110876085, -0.006811802, -0.013706171, -0.01221996, -0.07539574, 0.024050673, 0.04602537, -0.013717967, 0.024274785, 0.025572272, 0.035385985, -0.079123065, 0.0051014796, 0.045836646, 0.050814275, -0.03734401, 0.048360847, -0.029181642, -0.037556324, 0.06345887, 0.010568614, 0.02100748, -0.015699582, -0.007908768, -0.0023826563, -0.035999343, -0.011783533, -0.011276334, -0.037579916, -0.00851033, 0.048195712, 0.0015953181, -0.013163586, -0.035527527, -0.0040782345, 0.050389644, 0.046237685, -0.0059153573, 0.034064908, 0.07629218, 0.046898223, 0.008339297, 0.0025743304, 0.0142369615, 0.026279991, -0.017209385, 0.026185628, -0.03342796, -0.052276894, -0.018778162, 0.011282232, -0.03706092, -0.029677046, 0.0769999, 0.00454415, 0.062043425, 0.022198807, 0.028591875, -0.04142519, -0.0063105007, 0.020571053, -0.026822576, -0.0489742, -0.0018282759, -0.03371105, 0.024534283, -0.017150408, -0.0065582027, -0.0070889923, 0.028473923, 0.009784224, 0.020323351, -0.018117623, -0.01981615, -0.02012283, -0.03668347, -0.014755956, -0.020913117, -0.004219779, 0.006794109, -0.010444763, -0.03835841, -0.025242003, -0.014661593, 0.00951883, 0.018094033, 0.014980067, 0.0033321802, -0.016194986, 0.0371081, -0.029228823, -0.0052931537, -0.056570396, 0.06930935, -0.0077495305, -0.01853046, -0.031068895, 0.029181642, 0.022057263, -0.02479378, -0.007837996, 0.056334488, -0.05789147, 0.04536483, 0.009282923, 0.03378182, 0.014095417, -0.021821357, -0.058882277, -0.08973885, 0.012385095, -0.044090938, 0.029842181, -0.005764967, 0.050248098, 0.044374026, -0.016879115, -0.029417548, 0.04930447, 0.018778162, 0.0027719021, 0.0035415473, 0.03017245, 0.051521994, 0.009831406, -0.025902541, -0.009943462, 0.0545416, 0.013364106, -0.022658825, -0.021066457, -0.018259168, -0.0046090246, 0.014119008, 0.021219796, -0.026987711, 0.009206254, 0.012609206, -0.024605054, -0.02098389, -0.02691694, 0.04826648, -0.021467498, 0.031753022, 0.0043259365, -0.0057384274, -0.02249369, 0.0037804027, 0.008233139, 0.012090212, 0.010574512, 0.024557874, 0.004862624, -0.016147804, 0.008875985, 0.0045854338, -0.028686238, -0.0020995685, 0.060863893, -0.019674607, 0.028969327, 0.059825905, -0.086483344, -0.023909131, 0.027034892, 0.0019432803, 0.027011301, -0.031399164, -0.008062107, -0.0054553393, 0.032625876, 0.016572436, 0.032578696, 0.0039042537, 0.009359593, -0.046591546, 0.002668693, 0.00853392, -0.030667853, 0.009613193, 0.0052253306, 0.0064992257, -0.041212875, -0.022045469, -0.026020493, -0.03312128, -0.0059713847, 0.01981615, 0.017645812, 0.023107048, -0.015841126, 0.022458306, 0.034064908, 0.037556324, 0.02340193, 0.08870087, -0.04137801, -0.028874964, 0.03953794, -0.0013498279, 0.01936793, -0.009548319, -0.0012783187, 0.026492307, 0.027954929, 0.05567395, -0.002721772, -0.012715364, -0.023696814, 0.013352311, -0.036070112, -0.00019222699, -0.036423974, -0.03769787, 0.013930283, -0.008516227, 0.0064166584, -0.0063871704, -0.019580245, -0.051663537, 0.012302527, 0.03227202, 0.08704952, -0.06298705, -0.050200917, -0.006652565, -0.040410794, -0.019084841, 0.0036447565, 0.050625548, 0.0017206435, -0.042510364, -0.039467167, -0.005532009, -0.006198445, -0.021986492, -0.047912624, -0.009819611, -0.021892129, -0.0025433677, -0.007690554, 0.016855525, 0.0016100623, -0.024723008, -0.03597575, 0.04097697, -0.0042404206, -0.0025551629, 0.03194175, -0.04067029, 0.032201245, 0.01890791, 0.015310336, -0.049351655, -0.025100458, -0.0010438865, 0.0028574183, 0.048785478, -0.016985273, -0.010232448, -0.03373464, -0.03769787, 0.022564463, 0.009630886, 0.008569306, 0.06492148, 0.053645153, 0.039302032, -0.033876184, -0.020865936, -0.04807776, 0.007891075, -0.011294027, -0.046308458, -0.011984053, -0.013446674, -0.0018710339, -0.06624256, 0.026681032, -0.014767751, 0.04930447, -0.018094033, 0.004479276, -0.024392739, -0.03267306, -0.0068353927, -0.0016749366, -0.010692465, 0.0012643117, 0.014449277, 0.015121611, 0.010763237, 0.029794998, -0.019993082, -0.032531515, -0.036494747, 0.043336038, -0.008362887, 0.056334488, 0.016430892, -0.004809545, -0.0066466676, 0.00042242018, -0.017575039, 0.040104117, -0.016277554, 0.014154394, 0.026468717, 0.004334783, -0.0051191724, 0.010197061, -0.00048176543, -0.026987711, 0.00868726, 0.0058268923, -0.014319529, 0.019167408, 0.008345195, 0.016077032, -0.031021712, 0.024675827, 0.020311555, 0.030785806, 0.044421207, -0.018565847, -0.006782314, 0.021090047, -0.058787916, 0.019651016, -0.011069915, -0.045718692, -0.012060723, 0.02403888, -0.0073366943, -0.0074605453, -0.03906613, 0.018141216, 0.025100458, -0.013611808, 0.00431709, 0.027388752, 0.019662812, 0.041944187, 0.0065758955, 0.018046852, 0.013022042, 0.039797436, -0.027176436, 0.05246562, 0.006145366, 0.004231574, -0.013057428, 0.00042094578, -0.017386314, -0.00084410317, 0.014968271, -0.029370368, 0.028945735, -0.014708774, 0.02443992, -0.018318145, 0.048101347, 0.015251359, -0.009023426, -0.0009428891, 0.021479292, -0.04864393, 0.048290074, 0.005564446, -0.025124049, 0.011016836, -0.014331324, -0.023791177, -0.029936543, 0.015357518, -0.018695595, 0.008398274, 0.050767094, -0.004352476, -0.022481896, -0.012408685, -0.05822174, -0.02176238, -0.023118842, -0.02406247, 0.046591546, 0.025194822, 0.022599848, -0.031068895, 0.03479622, 0.025784587, 0.015239564, -0.020559257, -0.0022986145, -0.0355983, 0.016985273, -0.04628487, 0.039419986, 0.026020493, -0.0315643, -0.0067882114, 0.024156833, 0.017763764, 0.052324075, 0.013022042, -0.029606273, -0.013682581, 0.009984746, -0.041519556, 0.02731798, 0.010208856, 0.021797767, 0.001825327, 0.042156503, -0.00926523, -0.012762545, 0.039986163, 0.0030520412, 0.007513624, -0.065865114, -0.020594643, -0.02370861, -0.011005041, 0.025076868, 0.014685184, 0.033286415, 0.012160983, -0.021833152, -0.014968271, -0.06624256, 0.0076492704, 0.0038924583, -0.00754901, -0.006145366, -0.020771572, -0.02837956, 0.012609206, -0.039750256, 0.018223783, -0.01151224, -0.034654673, 0.00071288017, -0.0060981847, -0.017563244, 0.005865227, -0.012408685, 0.01744529, 0.008970347, -0.023637837, -0.0017206435, -0.061335705, 0.035291623, 0.01658423, 0.0009856471, -0.017209385, -0.014496459, 0.0012665234, 0.008881882, -0.022151627, 0.024911733, -0.0029399856, -0.0065405094, 0.0014935834, 0.017964285, 0.037226055, -0.043241672, -0.00053742464, -0.01934434, -0.045459196, -0.01832994, -0.009819611, -0.017386314, 0.0088641895, 0.013434879, 0.011317617, 0.03349873, -0.016265757, 0.013234358, 0.031469937, 0.03267306, 0.0129984515, -0.012715364, 0.014626207, 0.010031926, 0.0021216846, 0.006493328, -0.010261935, -0.023166025, 0.0005293154, 0.027459525, -0.020087443, -0.016949886, 0.04281704, 0.060156174, 0.004688643, 0.00018172177, -0.0063163983, -0.025265593, -0.010315014, 0.033852592, 0.0074605453, 0.01545188, 0.008875985, 0.035763435, -0.01381233, 0.0056440644, -0.013965668, 0.01050374, 0.017964285, 0.032555107, -0.0019948848, 0.020134626, 0.027954929, -0.0055467533, 0.005685348, 0.005965487, 0.030620672, -0.008934961, 0.047582354, -0.015911898, -0.004072337, 0.038287636, -0.0323192, -0.022965504, -0.0008463148, -0.0009768006, -0.0062928074, 0.01421337, -0.0011212934, -0.008168265, -0.016265757, 0.021550065, 0.029794998, -0.031918157, -0.022812165, 0.015121611, -0.011818918, -0.027907746, -0.025808178, 0.034300815, 0.02873342, -0.007944154, -0.017256565, -0.036376793, 0.015699582, 0.055532407, -0.025595862, -0.006670258, 0.021101842, -0.0037715563, 0.015074429, -0.025029687, 0.03151712, 0.004989424, -0.059731543, 0.06506303, -0.04602537, 0.04097697, -0.009660373, -0.012538434, -0.03845277, 0.01689091, 0.015664196, 0.005567395, -0.032106884, 0.019651016, 0.03446595, 0.06827136, 0.049398836, -0.021137228, 0.028214425, 0.06935653, -0.015357518, -0.0084926365, 0.017291952, -0.0032997432], [0.018223498, -0.011204661, -0.02072286, 0.04629885, 0.018247765, 0.01916986, -0.019582376, 0.027274584, 0.020104086, 0.020079821, -0.025260536, 0.018393358, 0.023270752, -0.005987548, -0.010397828, 0.007856002, -0.023452746, -0.0015075032, -0.024435503, -0.039795656, -0.048773944, -0.03511239, -0.078086846, 0.017726053, 0.0036853447, -0.014668582, 0.008923691, -0.015190293, -0.04144572, 0.015469348, 0.01943678, -0.0056265965, 0.027274584, -0.047609195, 0.011059067, -0.011247126, 0.005662995, 0.010628352, -0.031399745, 0.026692208, -0.031545337, -0.012235952, 0.02584291, -0.023416346, -0.014061941, -0.005493135, -0.029628351, -0.00466507, -0.009342273, -0.038655173, -0.013576628, -0.028730523, -0.016415708, -0.047512133, -0.04037803, 0.020468071, 0.019922094, -0.09516986, 0.0011784004, -0.030817369, -0.030598978, 0.013079182, 0.03375351, -0.016488506, -0.016330779, 0.008444444, 0.013649425, -0.012472541, 0.014753512, 0.00838378, -0.030574711, 0.053335886, 0.018272031, -0.02579438, 0.0021581256, -0.07721328, 0.07425287, 0.029725414, -0.041761175, -0.025818646, 0.02790549, -0.022931034, 0.020237548, 0.00672765, 0.012314814, -0.03533078, 0.011532247, -0.10220689, -0.037199233, -0.010215837, -0.009633461, -0.02029821, 0.007322158, -0.0072675603, -0.01235728, 0.013661558, 0.025114942, 0.014522988, -0.020916985, -0.021487229, -0.028512131, -0.03465134, -0.08182375, -0.02166922, 0.0011169779, 0.01904853, 0.05542273, -0.024447637, -0.03297701, 0.09322861, 0.0245447, -0.007291826, -0.06605108, -0.0138071515, -0.05353001, 0.023161558, -0.02239719, -0.079106, -0.019012133, 0.02974968, -0.05605364, -0.010337165, 0.06983653, 0.0044011814, -0.025673052, 0.034627076, -0.0071462323, 0.04222222, -0.00507152, 0.019849297, -0.023149425, 0.06789527, 0.088181354, 0.004486111, 0.03564623, -0.0034517879, 0.061828863, 0.016415708, -0.027711365, -0.022457853, -0.048725415, -0.020225415, -0.014777778, 0.038072795, -0.0146079175, -0.030040868, -0.001534802, -0.00043412755, -0.046250317, -0.01298212, 0.0041827904, -0.0355977, -0.0024144317, 0.011350255, 0.054112386, -0.028900383, 0.042440612, 0.068623245, -0.0125696035, 0.024107918, 0.042489145, -0.08721072, 0.0018836206, 0.055956576, -0.011259259, -0.063867174, -9.0000896e-05, -0.020771392, -0.06304214, 0.022833971, 0.03375351, -0.024520434, 0.0017365102, -0.00014113885, -0.010786079, 0.01766539, 0.014365261, 0.027274584, -0.039431673, -0.04319285, -0.031787995, 0.04088761, 0.032613028, -0.024314176, 0.020152617, 0.023962324, 0.02197254, 0.010507024, 0.020055555, -0.059839077, -0.02545466, -0.024180714, 0.0004853129, -0.03749042, -0.02652235, -0.05047254, -0.029312897, -0.03152107, 0.014547254, 0.005987548, 0.010567688, -0.043314174, -0.0059541827, -0.00023526301, -0.023416346, 0.0011511015, 0.046541505, 0.03804853, 0.007261494, -0.02729885, 0.02584291, 0.010470626, 0.0048470623, -0.037587482, -0.017786717, 0.0466871, -0.046371646, 0.014826309, 0.001763809, -0.07056449, 0.0995862, -0.01999489, 0.017908046, 0.0022536716, 0.02236079, 0.04617752, 0.020176884, 0.004853129, 0.024095785, 0.0140498085, 0.015663473, -0.023925925, -0.04595913, 0.05838314, -0.0553742, 0.017992975, -0.03676245, 0.0022112068, 0.07226309, -0.023125159, 0.00051450747, 0.037393358, -0.04234355, 0.0020110153, 0.026595145, 0.030404853, -0.013867816, 0.013916347, -0.029094508, -0.035840355, 0.0137707535, -0.01457152, 0.05270498, -0.0011738505, 0.023561941, 0.041300125, 0.00061649905, -0.032661557, -0.008116858, 0.006946041, 0.021814814, 0.033340994, -0.012242017, 0.07968838, -0.03142401, -0.03370498, 0.052947637, -0.028099617, -0.04096041, -0.032904215, 0.09284036, -0.06736143, -0.004473978, 0.030744571, 0.011386653, 0.00466507, 0.06915709, 0.018065773, -0.02501788, 0.053627074, 0.0022430555, 0.019885696, 0.009997445, 0.0011761255, 0.030186461, 0.012193486, -0.022409322, -0.043314174, -0.049210727, -0.010416028, -0.010585887, -0.032297574, 0.02729885, 0.023052363, 0.013904214, 0.0050563538, 0.0151660275, 0.010519157, -0.017434865, -0.00083564816, -0.010318966, 0.018927203, -0.05192848, -0.05503448, 0.005796456, 0.029288633, -0.0048440294, 0.10599233, -0.029507024, -0.019837163, 0.068865895, 0.02471456, -0.019, -0.05649042, 0.05168582, -0.014425926, 0.01960664, -0.02484802, 0.07837803, -0.039310344, -0.006873244, -0.020832056, -0.09813026, -0.00838378, 0.017847382, -0.017216474, 0.02192401, -0.047536395, -0.052559387, -0.00019033365, -0.054403573, -0.009142081, 0.012126756, -0.0049168263, -0.031618133, -0.12093997, -0.069011495, -0.029676883, 0.008286717, -0.010203703, -0.031739462, -0.011507981, -0.029919539, -0.02880332, -0.016646232, -0.011168263, -0.035573434, 0.017058749, 0.05047254, 0.018514687, 0.0014574552, 0.035452105, 0.02819668, 0.014753512, 0.032006387, -0.017180076, -0.054063857, -0.048628353, 0.009681992, 0.010494892, 0.054500636, -0.04578927, -0.006090677, 0.03770881, -0.020443805, -0.07357343, -0.029798212, -0.003897669, -0.0013186861, 0.023913793, -0.059596423, 0.062993616, -0.007382822, -0.04646871, -0.0010130906, -0.012144955, 0.0561507, 0.0019230524, -0.042125158, 0.01272733, -0.032394636, -0.042416345, -0.013006385, 0.021705618, -0.029895274, 0.024362708, -0.010707215, 0.025939973, 0.013710089, -0.030647509, 0.00039090437, 0.012812261, -0.032904215, -0.016173052, 0.023015963, 0.05202554, -0.052219667, 0.0037915069, 0.0043010856, 0.027444445, -0.014061941, -0.001210249, 0.002619173, 0.0059845145, 0.038800765, -0.00021156609, -0.020395273, 0.0035336844, 0.003092353, 0.04011111, -0.00063773146, 0.042780332, -0.003497286, 0.0035336844, 0.012496807, 0.041469987, -0.03263729, 0.05192848, -0.0006009539, -0.0063212, -0.0057479246, -0.03297701, -0.04557088, 0.03271009, -0.029167304, 0.054840356, -0.055859514, 0.018890804, -0.014110472, -0.028123882, -0.01457152, 0.025867177, 0.01866028, -0.006478927, -0.002267321, -0.08536654, -0.07245722, -0.023113025, -0.0026100734, 0.043362707, 0.03108429, -0.019812899, 0.0284636, -0.019764367, -0.031205619, 0.0049228924, -0.062022988, -0.01719221, 0.027954021, -0.018720945, -0.003779374, -0.009087483, -0.05047254, -0.008438378, 0.0694968, -0.0033425926, -0.00021308269, 0.004452746, 0.032394636, -0.07303959, 0.018235631, 0.04173691, 0.047172412, -0.022749042, 0.0051746485, 0.020079821, -0.025357598, 0.02072286, 0.00022028656, -0.019084929, 0.0062908684, -0.016743295, -0.014268199, -0.0048227967, -0.022991698, -0.05231673, 0.001487029, -0.023392081, 0.028560663, -0.021378033, -0.011283524, -0.034020435, -0.0042464877, 0.066099614, 0.016998084, -0.01629438, 0.012029693, 0.018308429, 0.07464112, 0.014183269, 0.0035306513, 0.0027935824, 0.026934866, -0.011186462, 0.015202426, -0.025697317, -0.04617752, -0.039771393, 0.031666666, 0.015141762, 0.030065134, 0.0261341, 0.017689655, 0.011756705, 0.02253065, -0.010500957, -0.040523626, -0.014959769, -0.017677521, -0.053287353, -0.020577267, -0.015554278, -0.032297574, 0.014462324, -0.0284636, -0.037053637, -0.023052363, 0.02970115, 0.030671775, 0.04896807, -0.002249122, -0.040693484, -0.032613028, -0.0049319924, -0.024835886, 0.013977011, -0.013467433, 0.0020853288, -0.032467432, -0.02880332, -0.014001276, -5.0355953e-07, 0.003127235, 0.024374839, 0.041033205, -0.021948276, 0.021086846, 0.044503193, -0.021681353, 0.01139272, -0.021050446, 0.09444189, 0.007940932, 0.023610473, 0.0066791186, 0.047754787, 0.04049936, 0.023100894, -0.03275862, 0.037417624, -0.072020434, 0.026692208, -0.02390166, 0.02802682, 0.030647509, -0.039261814, -0.030210728, -0.013867816, 0.024168583, -0.028924648, 0.010798212, 0.033510856, 0.10181864, 0.038024265, -0.005899585, -0.029773945, 0.059450828, -0.0029482758, -0.0050108554, 0.01044636, -0.005817688, 0.033171136, 0.0016166986, -0.028051086, -0.0016197318, 0.0497931, -0.0134553, -0.03465134, -0.0077650063, -0.0018972701, -0.009002554, -0.0107921455, -0.0065031927, -0.019291187, 0.02359834, 0.022166666, -0.028851852, -0.032467432, -0.04394508, 0.020528736, -0.049477648, 0.019509578, 0.0008894875, -0.015614942, 0.04797318, -0.008693167, 0.004307152, 0.004431513, 0.0049259258, 0.028730523, 0.0045103766, -0.0076922094, 0.009772988, -0.02863346, -0.020140484, -0.0128486585, 0.013782886, -0.03855811, 0.027565772, 0.023610473, -0.024314176, -0.016961686, 0.02819668, -0.02089272, 0.024787355, -0.042416345, 0.00956673, 0.027104724, 0.015978927, 0.04071775, 0.04345977, 0.029846743, 0.058480203, -0.03732056, 0.007322158, 0.022021072, -0.013273307, 0.004944125, -0.017726053, 0.016367177, -0.04802171, -0.03152107, -0.008365581, -0.047609195, 0.024823755, 0.027444445, 0.0051412834, 0.028730523, -0.005641762, 0.020455938, 0.040936142, 0.025139207, 0.012557471, 0.08099872, -0.042270754, -0.02415645, 0.049016602, 0.028415069, 0.021547893, -0.012472541, -0.0005429438, 0.025915708, -0.020698594, 0.050763726, 0.03710217, -0.030356321, 0.011787036, 0.014122605, -0.020553, 0.0150083015, -0.058916986, -0.010033844, 0.012369412, 0.019667305, -0.028487867, -0.012545338, -0.012084291, -0.02128097, -0.0158212, 0.02321009, 0.090171136, -0.020965517, -0.02824521, -0.016694764, -0.025114942, -0.0025600255, 0.020734994, 0.029871007, -0.015675606, -0.032346103, -0.01409834, -0.048725415, -0.0030407885, -0.007376756, -0.020407407, -0.006521392, -0.034432948, -0.001006266, -0.025867177, 0.016561301, 0.008972222, -0.054403573, -0.040426563, 0.05765517, 0.019412516, 0.0018396392, 0.011847701, -0.004103927, -0.0040796613, 0.011137931, -0.018551085, -0.038970623, -0.008226054, -0.010652618, 0.01074968, 0.009669859, -0.0030498882, -0.001645514, -0.041639846, -0.049938697, 0.024411239, 0.030501915, 0.02880332, 0.03586462, 0.0011526181, 0.0024113983, -0.0067640482, 0.0005273986, -0.08604597, 0.026061302, 0.0061816727, 0.003439655, -0.00971839, -0.017653257, 0.009706258, -0.042804595, 0.026328225, -0.007394955, 0.044381864, -0.00043943565, -0.009342273, -0.0181871, -0.012472541, 0.0152873555, -0.010033844, 0.0055022347, -0.036422733, 0.013006385, 0.017689655, 0.016148787, 0.028366538, -0.033292465, -0.019485312, -0.02819668, 0.0007059786, -0.010573754, 0.047390804, -0.029725414, 0.0069581736, -0.0038218389, -0.020128353, 0.015190293, 0.030744571, -0.011441251, 0.016476372, 0.049744572, 0.045376755, 0.0029619252, 0.009694125, -0.019715836, -0.03683525, 0.004840996, -0.015396551, -0.01844189, 0.03972286, 0.014171137, 0.005817688, -0.058819924, 0.020734994, 0.00894189, 0.032613028, 0.061634738, -0.042586207, -0.007880268, 0.022033205, 0.002573675, 0.014802043, -0.022421455, -0.052365262, -0.019072797, 0.0134553, -0.0029604086, -0.002626756, -0.018963601, 0.0497931, 0.010543423, -0.0033395593, -0.01625798, -0.004619572, 0.0017516762, 0.0051837484, 0.027541507, 0.048215836, -0.0014847541, 0.052559387, -0.032831416, 0.047900382, -0.018417625, 0.015978927, 0.0110712005, 0.0055507664, -0.03736909, -0.024107918, 0.0073039588, -0.009609195, -0.033729244, -0.021547893, -0.033122603, -0.04557088, 0.032006387, 0.03872797, 0.0158212, 0.013977011, 0.016901022, -0.031399745, 0.018514687, 0.012836526, -0.03448148, 0.010312899, 0.038533844, -0.026061302, -0.068477646, -0.0023537674, 0.0031636334, -0.007904533, 0.018866539, -0.003867337, -0.025721584, -0.0012997285, -0.043750957, -0.028924648, -0.05532567, -0.019497445, 0.018526819, 0.00090465357, -0.007552682, -0.031666666, 0.015918262, 0.031715196, -0.0006604805, -0.016318645, 0.012472541, -0.012618135, 0.02141443, -0.019897828, 0.033219665, -0.008838761, -0.024629628, 0.00917848, 0.020747125, 0.043168582, 0.036010217, 0.020637931, 0.01999489, -0.03460281, -0.032273307, -0.0474636, 0.008662835, -0.03465134, 0.001565134, 0.030065134, 0.026182631, 0.0067215837, -0.038194124, -0.005993614, -0.008110791, -0.028779054, -0.073476374, -0.013722222, -0.07745594, -0.0026161398, -0.020710727, 0.033680715, 0.025163474, 0.023234354, -0.021390166, 0.006600255, -0.025430396, 0.030477649, -0.00077005505, -0.011301724, 0.0036064815, -0.046832692, -0.04183397, -0.009275543, -0.031448275, 0.018235631, -0.01874521, -0.0316424, 0.0073524904, 0.024738824, -0.0026737708, 0.018393358, 0.008153257, 0.015141762, 0.008778097, 0.018805875, 0.026206896, -0.0134553, 0.03486973, -0.0038279053, -0.0007689176, 0.01749553, -0.03271009, 0.017774584, 0.00022369891, -0.014741379, 0.0118719665, 0.0049350252, -0.005750958, -0.035791826, 0.015335888, 0.0074434862, -0.047172412, 0.05047254, -0.024945082, -0.035913154, -0.0023113026, 0.021038314, -0.028730523, -0.002714719, 0.015044699, -0.0015803, 0.044430394, 0.0015818167, 0.013164112, 0.00014900623, 0.03503959, -0.011125798, -0.048773944, 0.028948914, 0.0038430714, 0.0046802363, 0.0007541307, -0.008608237, -0.042246487, 0.0046590036, 0.0021050447, -0.010161239, 0.0010980204, 0.056296296, 0.0933742, -0.010422094, -0.024326308, 0.013042784, -0.041664112, -0.0052899104, 0.046395913, 0.02192401, -0.008426245, -0.027226053, 0.0252848, -0.019752234, -0.02321009, -0.030453384, -0.009354406, 0.0020838121, 0.040402297, 0.014899106, 0.044503193, 0.025697317, -0.011356321, -0.019, 0.010561622, 0.020007024, 0.0011617177, 0.039965518, -0.020492336, -0.04484291, 0.029482758, -0.03826692, -0.010695083, 0.036398467, 0.01637931, 6.3093044e-06, 0.029070241, 0.018842272, 0.0055265003, -0.030744571, 0.030574711, 0.03520945, -0.038630906, -0.042586207, -0.017726053, -0.050375476, 0.00014900623, 0.0023765166, 0.046056192, 0.024666028, -0.006333333, 0.02875479, -0.06410983, 0.017835248, 0.042707533, -0.022967432, 0.020043422, 0.027371647, 0.038703702, -0.0126424, -0.02067433, -0.0069096424, 0.0019397349, -0.0058904854, -0.00015857977, -0.05168582, 0.013734355, 0.024217114, 0.0013732838, -0.03821839, 0.011350255, 0.019509578, 0.016621966, 0.004710568, 0.0059723817, 0.011313857, 0.05610217, 0.038, -0.011586845, -0.020273946, 0.08628863, -0.020734994, 0.0027329181, 0.01367369, -0.010998404], [0.036283687, -4.414074e-05, -0.034981538, 0.023151819, 0.0053630997, 0.075568944, -0.045773946, 0.050364584, 0.030148124, 0.05791265, -0.028183863, 0.0021104792, 0.019355714, -0.016332073, -0.0029408766, -0.0008062582, -0.0031643393, 0.029508084, -0.023416663, -0.035776068, -0.031803403, -0.084352955, -0.074774414, 0.02866941, 0.022589024, -0.011763507, 0.0034705657, -0.00030398485, -0.0363499, -0.0061962563, 0.042021982, 0.01436781, 0.024630532, -0.042904798, -0.018704638, -0.030059844, -0.0001699246, 3.86447e-05, -0.019852297, 0.01118416, -0.020017825, 0.0054044817, 0.022423496, -0.07993888, -0.012712533, -0.0004645123, -0.028801832, -0.022776622, 0.011973175, -0.064842746, -0.0018249437, -0.030744025, 0.017501803, -0.01915708, -0.040918466, 0.01253597, 0.01945503, -0.030567462, 0.059589997, -0.0440966, -0.012447689, -0.0011304168, 0.042617884, 0.0021104792, -0.024807096, -0.044030387, 0.020194389, 0.020481303, -0.02573405, 0.01074827, -0.029794998, 0.038954202, -0.055352487, -0.02202623, -0.011995246, -0.029949492, 0.07225839, 0.017523874, -0.0024470522, 0.027367258, 0.022886973, -0.05808921, 0.0012966342, 0.0037298924, 0.023791859, -0.043942105, 0.013595347, -0.08589788, -0.033039343, 0.007636348, 0.005721743, 0.010014431, 0.023836, 0.020227494, -0.05062943, 0.004477526, 0.035378803, 0.0095344, -0.032575864, -0.007851534, -0.011609014, -0.030126054, -0.055308346, -0.038336232, 0.037784472, 0.022886973, 0.04652434, -0.01645346, -0.023791859, -0.046833325, 0.008833665, -0.0087950425, -0.020028861, -0.013253257, -0.04467043, 0.009457153, -0.008546751, -0.074774414, -0.024520181, 0.01851704, -0.029949492, 0.021319978, 0.044295233, 0.034231145, -0.039550103, 0.00056210475, 0.00020311637, 0.052306775, -0.018958448, 0.025932685, -0.0057769194, 0.027874878, 0.06947752, 0.029927421, 0.037431348, 0.03815967, 0.05429311, -0.008552268, -0.02396842, 0.011443486, -0.06493103, -0.0035947114, -0.015162344, 0.053498577, -0.066520095, 0.0070514833, -0.03626162, 0.015868595, -0.030898517, -0.040123932, -0.0054486226, -0.029419802, 0.012867025, 0.035533294, 0.03639404, -0.033370398, 0.0077246292, 0.006847332, 0.0016332073, 0.039616313, 0.042551674, -0.08951742, 0.016905904, 0.02188277, 0.0075425487, -0.04784856, 0.046215355, 0.0048361695, -0.063386105, 0.030964728, 0.03584228, -0.05446967, 0.015559611, 0.0021628963, -0.048598953, -0.020050932, 0.03943975, -0.04283859, -0.037828613, -0.04793684, -0.016972113, 0.016596917, 0.027852807, -0.040123932, 0.036438182, 0.045045625, 0.017766647, 0.010091676, 0.01434574, -0.07225839, 0.013418784, -0.012083528, -0.052880604, -0.036018845, 0.014136071, -0.0274114, 0.008585374, -0.062238444, -0.008806078, 0.00806672, -0.029949492, -0.036614742, -0.005095497, 0.06091422, 0.015372013, -0.014356775, 0.055661473, -3.0131227e-05, 0.0024070498, 0.0026636177, 0.04890794, 0.029618436, -0.011675226, -0.031869613, -0.020404058, 0.031339925, -0.06139977, 0.040366706, -0.021982089, -0.043986246, 0.08607444, -0.019212257, 0.015482364, -0.04131573, 0.0031698567, 0.051026694, 0.026528584, 0.028470777, 0.021573786, 0.01723696, 0.037298925, -0.05186537, -0.033679385, 0.033282116, -0.0514681, -0.016287932, 0.0008083273, -0.008430881, 0.02685964, 0.022302108, 0.007057001, 0.029971562, -0.031494416, -0.03354696, 0.039638385, 0.050938413, -0.03403251, 0.031361997, -0.025800262, -0.036725096, -0.011377276, -0.012690462, 0.051026694, 0.017468698, -0.017755613, 0.052218493, 0.0065604174, -0.022622129, 0.0088391835, 0.019819193, -0.007823946, 0.017987352, -0.005727261, 0.05429311, 0.025976826, -0.023041466, 0.031759262, -0.04473664, -0.06568142, -0.00440028, 0.04851067, -0.03171512, -0.03996944, 0.028868044, 0.04700989, -0.021960018, 0.043853823, 0.012359407, -0.008061202, 0.053057168, -0.008585374, 0.031538557, 0.022886973, 0.040521197, 0.039219048, 0.0034319425, -0.03385595, -0.021010991, -0.054072406, -0.011906965, 0.011084843, -0.047054026, 0.08541233, -0.0037795508, 0.04851067, -0.004300963, 0.007514961, 0.009926149, -0.042044055, 0.024299476, -0.017954245, -0.0018539111, -0.033061415, -0.038667288, -0.048687235, 0.044538006, -0.007266669, 0.080336146, -0.011454522, 0.0037547217, 0.096844785, 0.0031312336, -0.033171766, -0.058177494, 0.019896438, -0.0082984585, 0.024100844, 0.029110817, 0.04124952, -0.007553584, -0.0079398155, -0.03937354, -0.083426, 0.025866473, 0.03769619, 0.02677136, 0.013010483, -0.037254784, -0.060472813, 0.027014133, -0.08316115, -0.038954202, 0.012293196, 0.008160519, -0.06011969, -0.098080724, -0.046347775, -0.026396163, 0.043787614, -0.029353593, -0.042110264, 0.030920587, -0.013617418, -0.03164891, 0.025005728, -0.027301047, -0.018947413, -0.010880692, 0.06347438, -0.017192818, 0.0013635351, 0.046877466, 0.05557319, -0.0052030897, 0.0016028606, -0.029044606, -0.010422732, -0.04473664, -0.0016704511, 0.0052279187, 0.07044862, -0.1015237, -0.056279443, 0.04113917, 0.03345868, -0.031295784, -0.014290565, -0.014853359, 0.009688892, 0.024829166, -0.049261063, 0.014378846, -0.0111786425, -0.015956877, -0.013782945, -0.008955052, 0.06766775, -0.002280145, -0.07442129, -0.0042319936, -0.0148643935, -0.021573786, 0.014279529, 0.009893043, -0.0022539366, -0.004844446, -0.01029031, 0.033171766, 0.010847587, -0.031384066, -0.0010876554, 0.03540087, 0.009214379, -0.0034126309, 0.0019932303, 0.029397732, -0.043015152, 0.0076032425, 0.0013538792, 0.04486906, -0.053057168, 0.017755613, -0.012701497, -0.006753533, 0.04228683, -0.021673104, 0.012491829, -0.04948177, 0.0023091123, 0.06735877, -0.034451846, 0.021529645, -0.014268494, 0.032708287, 0.03564365, -0.016056193, -0.021684138, 0.061620474, -0.0017587326, -0.02449811, 0.016950045, -0.011128983, -0.033988368, 0.020812359, -0.024961589, 0.028801832, -0.014963711, 0.027278977, -0.022081405, -0.019344678, -0.02385807, -0.01285599, 0.028316284, 0.010417215, -0.019565383, -0.056985695, -0.038446583, -0.0452884, -0.006946649, -0.0068307794, 0.03281864, -0.036769237, 0.047980983, 0.0303909, -0.03646025, -0.015416153, -0.060693517, 0.020955816, 0.024056703, -0.033635244, -0.0016745894, -0.04727473, -0.053630996, 0.002099444, 0.05778023, 0.0019532277, -0.039020415, 0.037232712, 0.018550146, -0.044560075, 0.016442426, 0.033171766, 0.032642078, -0.04361105, 0.0097385505, -0.011106914, -0.04058741, 0.017082466, -0.012017316, 0.0009835109, 0.013749841, -0.004174059, -0.025049869, -0.029640507, -0.016310003, -0.025932685, -0.001725627, 0.0005158949, 0.03224481, -0.024233267, -0.010351003, -0.020448197, 0.03354696, 0.06034039, 0.020492338, -0.049834896, 0.0440966, 0.0129773775, 0.07826153, 0.007503926, 0.003329867, 0.060075548, 0.016530707, -0.00073728827, 0.008436399, -0.03879971, -0.055617332, -0.04131573, -0.0154492585, -0.024321547, 0.038490724, 0.036548533, -0.0011524871, 0.023151819, -0.0030677815, -0.0005096876, -0.036107123, -0.0018511523, -0.00983235, -0.05548491, -0.01196214, -0.031339925, -0.012039387, -0.012039387, 0.0019808158, 0.009898561, -0.020724077, 0.06519587, 0.0143236695, -0.006930096, -0.0172811, 0.0015656168, -0.044515934, -0.021816561, -0.020690972, 0.020172318, 0.011929035, 0.010224098, 0.004750647, -0.038534865, 0.009015746, -0.025049869, -0.047451295, 0.032487582, -0.0029546707, -0.028536988, -0.0082488, 0.040234283, -0.011228301, 0.014069861, -0.05018802, 0.053895842, -0.0022622128, -0.013507066, -0.030059844, 0.05257162, 0.04047706, 0.006808709, -0.007498408, 0.053322013, -0.070095494, 0.061885316, -0.009440601, 0.008690208, 0.018086668, -0.015592716, -0.0286032, -0.041624717, 0.045641523, -0.034827042, 0.018141843, 0.022478672, 0.09163617, 0.030103983, 0.0017614914, -0.040212214, 0.06740291, 0.01221595, -0.005078944, 0.0016345867, 0.015581681, 0.03226688, 0.0135622425, -0.027499681, -0.039130766, 0.058177494, 0.014698866, -0.041381944, 0.028823903, 0.013164976, 0.0025711982, -0.006378337, -0.014665761, -0.017888034, 0.0141912475, -0.0011262785, -0.010560672, -0.044802852, -0.045597382, 0.02869148, 0.0076804888, -0.004535461, 0.009192309, -0.032509655, 0.018384619, 0.027676243, 0.02690378, 0.019234328, -0.0036664403, 0.017159712, -0.02087857, -0.032156527, -0.009159204, -0.016839692, -0.030810237, -0.04105089, 0.027521752, -0.048687235, 0.02119859, 0.01045032, -0.057647806, -0.005147914, 0.024078773, 0.013032554, -0.00478927, -0.017203853, -0.028382495, 0.049746614, -0.0026318915, 0.0598107, 0.05513178, 0.011951105, 0.055882175, -0.008022579, 0.037144434, 0.03533466, 0.025049869, 0.026087176, -0.013860192, 0.0016718305, -0.026815498, -0.030721955, 0.0005276198, -0.038027246, 0.017755613, -0.0039312844, -0.013242221, 0.045200117, -0.03758584, 0.032509655, 0.015316837, 0.016596917, 0.0053548235, 0.05323373, -0.033988368, -0.00669284, -0.004941004, 0.004444421, 0.06938924, -0.027808666, 8.181555e-05, 0.014853359, 0.02445397, 0.054337252, 0.028250074, -0.00868469, 0.0053520645, 0.009964772, -0.011498663, 0.014842324, -0.005586562, -0.023107678, -0.0041464707, 0.016817622, 0.0074928906, -0.017104536, -0.03036883, -0.0013076694, -0.018715674, 0.053322013, 0.074774414, -0.05667671, -0.036548533, -0.020525444, -0.01494164, -0.013849157, 0.007377021, 0.03284071, -0.00848054, -0.05323373, -0.0339663, -0.026219599, -0.009584058, 0.01377191, -0.02021646, -0.021154448, -0.04486906, -0.019499172, -0.020613724, -0.005644497, 0.018605322, -0.020613724, -0.028890114, 0.04471457, -0.005387929, -0.0020221977, 0.009733033, 0.008303977, 0.029684648, -0.02862527, -0.0143236695, -0.025248503, -0.043346208, -0.02745554, 0.019234328, 0.04537668, -0.022070369, 0.031185431, -0.05310131, -0.035047747, 0.038490724, -0.0011683502, 0.029684648, 0.040830184, 0.019477101, 0.018991552, -0.016916938, 0.0041906117, -0.08797249, 0.013330503, 0.023041466, -0.0071287295, 0.028007299, -0.04197784, 0.024895377, -0.063386105, 0.034385636, -0.0053272354, 0.04899622, -0.022302108, 0.023549084, -0.009595093, -0.0010711027, 0.012403548, -0.01643139, -0.01917915, 0.0025353336, 0.033833876, 0.011631085, 0.010284793, -0.013496031, -0.016541742, -0.025976826, -0.031979967, -0.005575527, -0.007812911, 0.07137558, 0.028338354, -0.003385043, -0.004860999, -0.039770804, 0.018230125, 0.049216926, -0.035599507, -0.0014704383, 0.010604813, 0.014798183, 0.006455583, 0.024961589, -0.025557488, -0.009545435, 0.019278469, -0.008099826, -0.03334833, 0.02690378, -0.013396715, -0.022291074, -0.030170195, 0.0147761125, 0.040322565, 0.036085054, 0.056588426, 0.008006027, -0.027808666, -0.01313187, -0.04122745, 0.025380924, -0.015769279, -0.059016168, 0.004805823, 0.0015573405, -0.0049879034, -0.0015752726, -0.008811595, 0.05257162, 0.011410381, -0.032377232, 0.0038926615, -0.004574084, 0.0103234155, 0.042662024, 0.017998386, 0.012613216, 0.020801323, 0.04952591, -0.029132888, 0.032200668, -0.01670727, -0.011261406, 0.01462162, -0.014985781, -0.04467043, 0.0051782606, 0.03540087, -0.0076860064, -0.016894868, -0.005848648, -0.007183905, -0.00075935863, 0.0196647, 0.025402995, 0.009092992, -0.0068694027, 0.025778191, -0.0060472814, 0.050497007, 0.0057162256, -0.013308433, -0.008006027, -0.0048720343, 0.01938882, -0.030324688, 0.00084350194, 0.00076625566, -0.00029346693, 0.046127073, 0.0023118712, 0.0015725138, -0.012911166, 0.0014938881, -0.0028994947, -0.03451806, -0.033326257, 0.036614742, 0.0053520645, 0.018230125, -0.028890114, 0.02630788, 0.008508127, 0.027874878, 0.011708331, 0.011432451, 0.010935868, 0.007338398, -0.05446967, 0.013054623, -0.011228301, -0.010963456, 0.0043920036, 0.008750902, 0.04957005, -0.016563812, -0.006107975, 0.00081798306, -0.011609014, -0.012955307, -0.060075548, 0.03513603, -0.0056776027, 0.014555409, 0.031097151, 0.020470267, -0.0036995457, -0.055661473, -0.0069080256, 0.0057493313, -0.055396628, -0.051732946, 0.006306608, -0.06387165, -0.035489153, 0.034804974, -0.0085688215, 0.035312593, 0.03286278, -0.056367725, -0.037431348, -0.02385807, 0.023460804, -0.014434022, 4.0045652e-05, 0.0025560246, -0.032642078, -0.0009352319, 0.01120623, -0.04226476, -0.010268239, 0.0148643935, -0.022842832, -0.007244599, 0.0070073423, -0.019885402, 0.0061245277, -0.0051782606, 0.032311022, 0.0142353885, -0.026175458, -0.0018580492, -0.00034433225, 0.007183905, 0.017104536, 0.014720936, -0.0021877254, -0.058927886, 0.006786639, 0.001915984, 0.0010911039, -0.0073328805, 0.012204914, 0.01675141, -0.03701201, 0.0106820585, 0.04661262, -0.02754382, 0.047363013, 0.016607953, -0.04354484, -0.022909043, 0.0052086073, -0.037983105, 0.027367258, 0.04177921, -0.028912185, 0.06011969, -0.0071563176, 0.0028525952, -0.025358854, 0.015934806, -0.010902762, -0.00034140103, 0.004792029, 0.011140019, 0.020139212, -0.028536988, 0.009661305, -0.0014731971, 0.025049869, 0.002990535, -0.012127668, 0.005252748, 0.056544285, 0.068197444, -0.014400916, -0.0034760833, 0.013363609, -0.045200117, -0.009137133, 0.05023216, 0.006963202, 0.004452697, 0.018031493, 0.011929035, -0.016464496, 0.0015090615, -0.026992062, 0.0046099485, 0.01700522, 0.03222274, 0.037961036, 0.031207502, 0.008188107, -0.021871736, 0.03822588, 0.011631085, 0.022423496, -0.017479733, 0.0160893, -0.016607953, -0.02215865, 0.02332838, -0.038556937, -0.0027725901, 0.0051755016, -0.021297907, 0.0066045583, 0.03224481, -0.015658928, -0.011906965, -0.004157506, 0.050364584, -0.013871227, -0.026418233, -0.03171512, -0.024939518, -0.03162684, -0.029728787, 0.026197528, 0.032421373, 0.025380924, 0.015040957, 0.056941554, -0.040786043, 0.013683629, 0.0024139467, -0.01813081, -0.0071011414, -0.02447604, 0.010764822, -0.012260091, -0.027830737, 0.0040002544, 0.0100365, -0.022269003, 0.010488943, -0.03045711, 0.030103983, 0.020679936, -0.002213934, -0.0074763377, -0.015603751, -0.0047865114, 0.00031795126, -0.028912185, 0.005782437, 0.057603665, 0.066299394, 0.016563812, -0.00215462, 0.020635795, 0.059236873, -0.0135622425, -0.033326257, -0.0037160984, 0.010582742], [0.0045299283, 0.006787702, -0.029957926, 0.025977341, 0.013345312, 0.0062642437, -0.026460534, 0.006989032, -0.014599312, 0.020995857, -0.03640049, 0.00093259, -0.008145242, -0.0028919638, -0.0026072254, 0.044752814, -0.010739525, -0.014070101, -0.035457116, -0.025747249, -0.021950739, -0.061802603, -0.06511592, 0.03745891, -0.019258667, 0.007989931, -0.014829404, 0.0103426175, -0.013897533, 0.014438247, 0.07123636, 0.0027754798, 0.057338826, -0.011838213, 0.019258667, -0.020558683, -0.005755166, 0.019534776, -0.043165185, -0.0035808005, -0.039805844, 0.0092209205, 0.007713821, -0.030464128, -0.015807293, 0.0017832099, -0.02602336, -0.007892142, -0.04599531, -0.026989743, -0.0022103174, -0.006235482, -0.025033966, -0.016842704, -0.0019227029, 0.012355919, 0.031545557, -0.08697462, 0.022698537, -0.0042164284, -0.028255248, 0.01750997, 0.015577201, -0.007414702, -0.015174541, -0.008570912, 0.009893939, 0.028577376, 0.044430688, 0.052967086, -0.0371828, 0.023745453, -0.011895736, 0.011941753, -0.023526866, -0.063873425, 0.088585265, 0.019891419, -0.049469694, -0.02383749, 0.044039533, -0.046731602, 0.023273764, -0.013632927, 0.044660777, -0.030003944, 0.01140679, -0.09728272, -0.03803414, -0.004184791, 0.007328417, 0.00013985255, -0.015439146, 0.004463777, -0.032396898, -0.025149012, 0.042244818, 0.013724963, -0.031384494, -0.032626987, -0.014783385, -0.018154226, -0.048825435, -0.052967086, 0.027772056, 0.0057695466, 0.030717228, -0.035917297, -0.03531906, 0.025010956, 0.059777796, -0.013207258, -0.042820044, -0.0032730529, -0.051908664, 0.04265898, -0.015163036, -0.049101546, -0.055129945, 0.02281358, -0.072616905, -0.009853672, 0.0668186, 0.04277403, -0.05448569, 0.0334093, 0.054715782, 0.051126353, -0.024136608, -0.007242133, 0.0099227, 0.051172372, 0.0520007, 0.032258842, 0.054025505, -0.0030458374, 0.031913705, -0.039506726, -0.0047571436, -0.029957926, -0.064149536, 0.0010073697, -0.011861222, 0.034513738, -0.04302713, -0.035088968, 0.010940855, -0.009945709, -0.045236006, -0.04189968, -0.037435904, -0.04933164, -0.008294802, 0.01971885, 0.046685584, -0.064379625, 0.026690625, 0.032005742, 0.025241047, 0.003868415, 0.009790397, -0.07910549, 0.0007442025, 0.04077223, 0.020006465, -0.04024302, 0.029796861, 0.018879015, -0.056510497, 0.04514397, 0.016382521, 0.012770084, 0.002024806, -0.0030487136, -0.048273217, 0.017141825, 0.06368935, -0.002716519, -0.012367424, -0.099123456, -0.01560021, 0.05443967, 0.007426206, -0.03334027, 0.0020780147, 0.008070462, 0.018188741, 0.0015588705, 0.045074943, -0.041278433, -0.008887288, -0.059087522, -0.014139129, -0.06562212, -0.013586909, -0.042935092, -0.000655042, -0.049239602, -0.0032586723, 0.0017947145, 0.009111627, -0.027587982, -0.0131842485, 0.019189639, -0.031683613, 0.007897894, 0.022905618, -0.005378391, 0.0021772417, -0.012758579, 0.050528113, 0.008801004, 0.06051409, -0.008277545, -0.025126003, 0.022641012, -0.043050136, 0.043096155, -0.0055941017, -0.046018317, 0.07307709, -0.019109108, 0.0020204918, -0.0019284552, -0.004345855, 0.039759826, 0.017486962, 0.0035779243, -0.02820923, 0.026759652, 0.014875421, -0.062492877, -0.03067121, 0.0009843606, -0.06911951, -0.0004522738, -0.018856006, -0.0022318885, 0.0023771338, -0.011182452, 0.030993339, 0.03288009, -0.028531358, 0.0014316011, 0.023227746, 0.061986677, 0.0032471677, -0.012655037, -0.031844676, -0.014541789, 0.0004522738, -0.037896086, 0.055866238, 0.010083764, 0.005573969, 0.05798308, 0.0038195204, -0.021835692, -0.032143794, 0.061480474, 0.008536398, 0.049653765, -0.034076564, 0.041117366, -0.012816102, -0.040427092, 0.024458736, -0.05963974, -0.071466446, -0.010716516, 0.06106631, -0.030211026, 0.010210315, 0.02903756, 0.025954332, -0.02740391, 0.05697068, 0.0037619977, -0.052921068, 0.04189968, 0.0023152966, 0.005573969, 0.023227746, -7.648748e-05, 0.03660757, 0.03796511, -0.017176338, -0.015024981, -0.06511592, -0.0075239954, -0.018246263, -0.033570364, 0.021674627, 0.03281106, 0.021870205, -0.020869307, -0.015439146, 0.012424946, -0.03755095, 0.017728558, -0.01604889, 0.018257769, -0.026874699, -0.06934961, 0.00087650516, 0.036584564, 0.039506726, 0.097098656, 0.009307205, -0.012068304, 0.053795416, -0.0043918733, -0.009393489, -0.056786604, -0.026230441, -0.04077223, 0.01763652, 0.012114323, 0.050252005, -0.0241136, -0.023227746, -0.03062519, -0.09636236, 0.010227571, 0.014691348, 0.0018838749, 0.004515548, -0.005064891, -0.06332121, 0.027242845, -0.0891835, 0.0016278981, -0.0018047809, -0.025356093, -0.05039006, -0.06194066, -0.0103771305, -0.021893214, 0.009232425, -0.026391506, -0.06930359, 0.001747258, -0.040634174, -0.034076564, -0.013955055, -0.01233291, 0.025102993, -0.03067121, 0.008007187, -0.043326247, 0.0013223076, 0.070315994, 0.026391506, 0.028370293, -0.009151893, -0.024826882, -0.067232765, -0.047444887, 0.0093129575, -0.015404632, 0.014599312, -0.06626638, -0.011751928, 0.032580968, 0.046133365, -0.049193583, -0.041807644, -0.0051885652, -0.0048549324, 0.02054718, -0.020846298, 0.04242889, -0.017878117, -0.029934917, -0.009209416, -0.006172207, 0.041692596, -0.022502959, -0.023929525, 0.008795251, -0.017003769, -0.027933119, -0.0106244795, 0.0039777085, 0.0139320465, 0.033846475, -0.034306657, -0.008933306, 0.060652144, -0.013218762, 0.01492144, 0.045328043, 0.024297673, -0.0054733036, 0.0029020302, 0.0520007, -0.031016346, -0.017544484, -0.014541789, -0.014472761, -0.0099687185, 0.005510694, -0.0238605, 0.013379826, 0.05121839, -0.003336328, 0.022169326, -0.03886247, -0.0008175442, 0.0635513, -0.017774576, 0.051540516, -0.030234035, 0.02901455, 0.013644432, 0.0027337756, -0.024182627, 0.057338826, -0.013552395, -0.0039805844, 0.046869658, -0.022468444, 0.010296599, 0.039023533, -0.0024936176, 0.053013105, -0.037573956, 0.051356442, 0.014691348, -0.03149954, -0.047444887, 0.025264056, 0.028347284, -0.0049297125, -0.028255248, -0.06898146, -0.039460707, -0.08044002, 0.011211213, 0.0057839276, 0.017015273, -0.011625377, 0.046708595, 0.044522725, -0.02273305, -0.0040150983, -0.06764693, 0.0092841955, -0.01560021, -0.02901455, -0.026414515, -0.010526691, -0.09728272, 0.0044148825, 0.062216766, -0.0076908115, -0.008513389, 0.0025079984, 0.03428365, -0.088815354, -0.016348008, 0.022272866, 0.040979315, -0.041807644, 0.032788053, -0.014944449, -0.019212648, 0.021847198, 0.0015905082, 0.011544846, -0.010319608, -0.009663847, -0.060237978, -0.019247161, -0.021835692, -0.026115395, -0.023975544, 0.0023268012, 0.008064711, -0.016324999, -0.022261363, 0.017245365, 0.02313571, 0.0037878829, 0.0023339917, 0.0045788228, 0.03610137, 0.029911907, 0.047444887, -0.005703395, -0.026920717, 0.023906516, 0.02177817, -0.025839286, -0.005582597, -0.04431564, -0.0031292457, -0.0947057, -0.01190724, 0.019810887, 0.03292611, 0.041117366, 0.015094008, 0.067969054, 0.011009883, -0.0072306283, -0.058995485, -0.04544309, -0.012678047, -0.035480123, -0.016566595, -0.023975544, -0.050021913, -0.0035980572, -0.018694943, 0.014633825, 0.009853672, 0.03854034, 0.03172963, 0.016417036, -0.01570375, -0.004880818, -0.036262434, 0.0049469694, -0.03860937, 0.0010541071, -0.021156922, 0.002124033, 0.018108208, -0.045051932, 0.0029854383, -0.025149012, -0.042014726, -0.0071673533, -0.00073773117, -0.0127470745, 0.014955954, 0.043349255, -0.04355634, 0.024044571, -0.030280054, 0.03283407, -0.0057005193, -0.0023728195, -0.0073341695, 0.045236006, 0.0061089317, 0.020213546, 0.0013172744, 0.015117018, -0.089735724, 0.03235088, 0.006684161, 0.0076275365, -0.0021369758, -0.028899504, -0.05641846, -0.040956303, 0.047767013, -0.00013841447, 0.018948043, 0.017843602, 0.08646842, 0.0585353, -0.00092180446, -0.03308717, 0.008950563, 0.029612789, -0.03589429, 0.027173817, 0.014070101, 0.042497918, 0.009617829, -0.02213481, -0.015001972, 0.0482272, 0.0026705007, -0.03531906, -0.015922338, 0.017947145, -0.0073916926, 0.0037821305, 0.022571985, -0.055221982, -0.0032414154, -0.0016394026, -0.008956315, -0.022802077, -0.016209953, 0.03170662, 0.0037217315, 0.023296773, -0.009358976, 0.017590502, 0.012125827, 0.03453675, 0.008524894, 0.0028430694, 0.002973934, 0.025839286, 0.008714719, 0.0012532802, 0.029934917, 0.022445435, -0.026598588, -0.0063275187, 0.029520752, -0.04024302, -0.012424946, 0.014852412, -0.018948043, -0.005139671, 0.030763246, -0.03363939, 0.007144344, -0.03428365, -0.040864266, 0.036584564, 0.0074319583, 0.061388437, 0.0482272, 0.024021562, 0.041991714, -0.048043124, -0.012424946, 0.041715607, 0.020478152, 0.013517881, -0.00896782, -0.0022692783, -0.0115621025, -0.034605775, -0.023492351, -0.015496669, 0.013448854, 0.037320856, 0.0077943527, 0.0366766, -0.037090763, -0.008300554, -0.0066381423, 0.025885304, 0.022491453, 0.07408949, -0.022353398, -0.0120568, 0.033800457, 0.062722966, 0.032488935, -0.02489591, 0.010641736, 0.007719573, 0.028830476, 0.040127974, -0.00028383956, -0.000774402, 0.009151893, 0.008864279, -0.017291384, 0.013080707, -0.01032536, -0.013575404, -0.017947145, 0.0056084828, -0.008910297, -0.013046194, -0.030763246, -0.023630407, -0.029796861, 0.041232415, 0.080992244, -0.052690975, -0.054577727, -0.017774576, -0.047260813, -0.033524346, 0.010423149, 0.036216415, 0.0025065604, -0.023952534, -0.03672262, -0.03801113, 0.01409311, 0.0011497389, -0.018142723, 0.007702316, -0.038149185, -0.013724963, -0.046685584, 0.004866437, 0.015404632, 0.00065971573, 0.0032270346, 0.028715432, -0.029497743, 0.0060456567, 0.022491453, -0.04376342, 0.0065000877, 0.016865714, -0.016451549, 0.013609918, -0.015669238, 0.007483729, 0.013978064, 0.033892494, -0.009180655, -0.02929066, -0.035088968, -0.05287505, 0.024596792, -0.021064885, 0.043671384, 0.038954508, 0.020869307, 0.032626987, -0.0020708244, 0.017417934, -0.07767892, 0.007633289, 0.0093762325, -0.016750667, 0.02230738, -0.03695271, -0.02341182, -0.054669764, 0.028071174, -0.022687031, 0.038149185, 0.00021067762, -0.009082866, 0.008340821, -0.012286891, 0.014323202, -0.0081912605, -0.007616032, -0.021617105, 0.013552395, 0.022249857, 0.026230441, -0.001528671, -0.019580794, -0.015623219, -0.049377657, 0.0062067206, 0.0025295694, 0.02600035, 0.0047744005, -0.0015703752, 0.0029480485, 0.0021369758, -0.0022333264, 0.0575229, -0.013563899, -0.032580968, 0.04015098, 0.019097602, -0.015772779, -0.0028862115, -0.01961531, -0.014967458, 0.0051080333, -0.014380725, -0.041968707, 0.0028488215, 0.022399416, 0.0045328042, -0.05006793, 0.0101873055, 0.022882609, 0.019454245, 0.053197175, -0.011659891, -0.016681641, 0.0025065604, -0.03559517, 0.027541963, 0.01047492, -0.062861025, -0.031614587, 0.025517158, 0.0010994064, -0.004935465, -0.03230486, 0.034559757, 0.0052547166, -0.017694043, -0.0226065, -0.019235658, -0.0019600927, 0.0153241, -0.03037209, 0.0007104078, -0.007702316, 0.0072133713, -0.023676425, 0.02958978, -0.0082832975, 0.01014704, 0.027449926, 0.0032414154, -0.04785905, -0.020340096, 0.012839111, -0.030188017, -0.0011339202, -0.003158007, -0.007800105, -0.038172197, 0.034191612, 0.05807512, 0.015830303, 0.014415238, -0.016129421, -0.014599312, 0.05365736, 0.017970154, 0.003451374, -0.0062009683, 0.023883507, -0.0090023335, -0.020961344, 0.018257769, -0.034099575, 0.021317987, 0.048319235, -0.012873624, -0.04431564, -0.022077288, -0.06474777, -0.047053732, -0.045903273, -0.029474733, 0.037642986, 0.03501994, 0.03152255, -0.047053732, 0.022928627, 0.012896634, -0.004400502, -0.015910834, 0.0123099005, -0.0303951, 0.034812856, -0.05687864, 0.032534953, 0.0022390787, 0.0141506335, 0.034582768, 0.020351602, 0.030763246, 0.02247995, 0.0041358965, -0.0017630769, -0.0049297125, -0.042935092, -0.018303785, 0.04707674, -0.017613512, 0.031591576, 0.00869171, 0.02341182, 0.01776307, -0.025632204, 0.042267825, -0.009698361, -0.0044321395, -0.101056226, -0.0056199874, -0.041715607, -0.030832274, 0.00048067572, 0.018625915, 0.032673005, 0.015001972, -0.029681815, -0.018062191, -0.034444712, 0.0068969955, -0.042520925, 0.008662948, 0.029796861, -0.038885478, -0.031660605, -0.00957181, -0.04380944, 0.018280778, -0.024527764, -0.039092563, 0.01969584, -0.001764515, -0.011320506, 0.0048319236, 0.011619626, 0.030349081, 0.017130319, -0.013161239, -0.034904893, -0.049239602, -0.00082832976, -0.0011137872, 0.011521837, -0.022065785, -0.020972848, 0.01768254, -0.026483543, 0.0066956654, 0.029106587, 0.0019111983, 0.0030142, -0.02351536, 0.00086428155, 0.048365254, -0.035986327, 0.029083578, -0.017348906, -0.034720823, -0.02434369, -0.0036411996, -0.039828856, 0.012240873, 0.024481745, -0.0052662212, 0.06184862, -0.0027150807, 0.00094409456, 0.026529562, 0.033271246, 0.022445435, -0.0143692205, 0.010975369, 0.013448854, 0.027495945, 0.006212473, 0.00396908, -0.0226065, 0.0028143078, 0.01721085, -0.005283478, 0.01286212, 0.029865889, 0.07901345, -0.020972848, 0.003773502, 0.010785543, -0.02190472, 0.00876649, 0.0071500964, 0.018683437, -0.026897708, -0.013851514, -0.0027323377, -0.009416498, -0.0034254887, -0.0053841434, 0.004049612, -0.0025123125, 0.07054608, -0.0037993875, 0.0017098682, 0.036814656, -0.021525068, 0.008524894, 0.024251655, 0.012908138, -0.0120913135, 0.005303611, -0.02625345, -0.036745626, 0.042474907, -0.036584564, 0.0065978765, 0.052414864, 0.023492351, 0.005320868, 0.009422251, 0.03230486, -0.018867511, 0.0016796687, 0.039529737, -0.00073557405, -0.046869658, -0.016693145, 0.004541433, -0.021145418, -0.040910285, 0.008099224, 0.040335055, 0.029635798, 0.011976267, 0.013609918, -0.06769295, -0.005735033, 0.049193583, -0.009272691, 0.025333084, 0.0031695117, 0.011613873, -0.02464281, -0.016140925, 0.028140202, -0.028968532, -0.031292457, 0.012413441, -0.03421462, 0.041232415, 0.016497567, -0.022261363, -0.022721546, -0.016313493, -0.010302351, 0.01994894, 0.018729456, 0.003434117, 0.042290837, 0.05365736, 0.009266939, -0.0040956303, 0.016371017, 0.1002279, -0.01755599, 0.013978064, -0.00075355, 0.013782486], [0.009130622, 0.014622149, -0.035886742, 0.028630475, -0.025144834, 0.013482192, -0.018020099, 0.053314943, -0.01627728, 0.037399378, -0.026043648, 0.0053079277, -0.0065766787, -0.006669848, -0.011185834, 0.020201365, -0.029814277, 0.031940736, -0.0004737264, -0.018107789, -0.023610277, -0.032598402, -0.03400143, 0.02479408, 0.0017400796, -0.015937485, 0.026306715, -0.008324979, -0.051561162, 0.0039706696, 0.048886646, 0.02597788, 0.03439603, -0.0068452265, 0.011289965, -0.04312109, 0.0053408113, 0.017493965, -0.05278881, 0.04309917, -0.025714813, -0.018381817, 0.004699585, -0.05870782, -0.004726988, -0.004252919, -0.011563993, -0.02199899, -0.0034828994, -0.04176191, -0.0110981455, -0.051648848, 0.010593933, -0.01434812, -0.024837922, -0.014950983, 0.007470011, -0.061864622, 0.040008128, -0.05572639, -0.03439603, 0.0036144329, -0.01666092, 0.0008063282, -0.039569683, -0.042046897, -0.00019901304, 0.027643973, 0.033475295, 0.048404355, -0.029397754, 0.02005887, -0.046080597, -0.034922164, -0.0125176115, -0.027797429, 0.08575989, 0.01433716, -0.055287946, -0.012364156, -0.00068746845, -0.05226267, -0.004274841, -0.0009522483, 0.0062642866, -0.037224002, 0.049763534, -0.09023203, -0.018063944, 0.01705552, 0.0069603184, 0.009152545, 0.016058058, 0.03099808, -0.037903592, 0.007026085, 0.034571406, 0.0010515836, -0.07001971, -0.028323563, -0.026153259, -0.050640427, -0.04555446, -0.06940588, 0.03205035, 0.015827874, 0.07694714, -0.04040273, -0.043274544, -0.008642851, 0.01811875, -0.022119563, -0.029858122, 0.024991378, -0.013811025, 0.012144933, -0.026591703, -0.089793585, -0.039876595, 0.025188679, -0.020004064, -0.04757131, 0.07304498, 0.03731169, -0.019236784, 0.0117722545, -0.030406177, 0.009821174, -0.00949234, -0.0007994775, -0.011706488, 0.0018373596, 0.040446572, 0.039284695, 0.07607025, 0.030362332, 0.041126166, -0.0018949056, -0.025934037, -0.0002527911, -0.029901966, -0.0026320417, -0.018436622, 0.042967632, -0.012605301, -0.0014742721, -0.0058093993, -0.00833046, -0.03720208, -0.009136103, -0.036588255, -0.017548772, -0.0029129207, -0.020113675, 0.011289965, -0.022886842, -0.0064396644, 0.030844623, 0.01976292, 0.07221193, 0.015838834, -0.059321642, -0.02838933, 0.024289867, 0.030888468, -0.07037046, 0.017910488, 0.006280728, -0.07532489, 0.024289867, 0.021867456, -0.049938913, 0.010829598, -0.0037624082, -0.04779053, 0.021648234, 0.021396128, 0.02547367, -0.013668531, -0.07804325, -0.042814177, 0.04088502, 0.046562884, -0.028608551, 0.06493374, 0.040775407, -0.026372481, -0.0016016953, 0.0050859647, -0.04121385, -0.029792354, -0.051780384, -0.019072369, -0.031326912, -0.029529287, -0.04730824, 0.0052777845, -0.07278191, -0.03272994, 0.018557195, -0.033080693, -0.038210504, 0.0031266627, 0.02567097, -0.055945612, 0.0063136113, 0.0028855177, -0.00891688, 0.050815802, -0.016354008, 0.043274544, 0.01939024, -0.0029814276, -0.01800914, -0.009662237, 0.010983054, -0.06296074, 0.01706648, -0.013021824, -0.065372184, 0.0920735, -0.011311887, -0.024772156, -0.026197104, 0.016847258, 0.041630376, 0.033102617, -0.0035294842, 0.03272994, -0.006664368, 0.024596779, -0.03091039, -0.02470639, 0.05243805, -0.066687524, 0.008056431, 0.0035979913, -0.013657569, 0.06914281, 0.016397852, 0.019324474, 0.035316765, -0.045379084, -0.039021626, 0.026613627, 0.04377876, -0.018743534, 0.0122107, -0.026635548, -0.0059464136, 0.03305877, 0.012868368, 0.08054239, 0.023500664, 0.027797429, 0.044984482, -0.0075851027, -0.052744962, -0.03275186, 0.0072233854, -0.014775605, 0.059540864, -0.03323415, 0.06559141, 0.0004264565, -0.028937386, 0.05708557, -0.04031504, -0.03724592, -0.006560237, 0.08141928, -0.034966007, -0.01668284, 0.018195478, 0.019357357, -0.020025987, 0.02703015, 0.018907951, -0.012714912, 0.07786787, 0.014490616, 0.022558007, 0.018546233, 0.02317183, 0.0018140672, 0.016299201, -0.08141928, -0.02054116, -0.04241958, -0.006949357, -0.00063026504, -0.03158998, 0.0664683, -0.00852776, 0.035448298, 0.032532636, -0.009810212, 0.031261146, -0.013043746, 0.037158236, -0.031940736, 0.011750332, -0.0544549, -0.030844623, -0.02209764, 0.04369107, -0.0176255, 0.078174785, -0.026328636, -0.004809196, 0.07414109, -0.035711367, -0.021144021, -0.070896596, 0.012243584, -0.026394404, 0.0374213, 0.032708015, 0.037859745, -0.010884403, -0.035777133, -0.05090349, -0.09917632, -0.003526744, 0.037815902, -0.023215676, 0.0023771953, -0.036785554, -0.036719788, 0.0044118552, -0.07414109, -0.019686192, -0.015751146, -0.01909429, -0.056427903, -0.09970245, -0.043362234, -0.019730035, 0.009580028, -0.012627223, 0.0023360911, -0.028016651, -0.01589364, -0.06493374, -0.029068919, -0.020683654, 0.0019072368, -0.0033294435, 0.01862296, -0.0068561872, 0.0011906528, 0.04156461, 0.014238509, 0.011805139, -0.007404244, -0.01685822, -0.035031773, -0.029595055, -0.0025073588, 0.0128902905, 0.056647126, -0.074754916, -0.0070808907, 0.042090744, -0.005127069, -0.039394304, -0.019806763, -0.027271295, -0.011838022, 0.0014866034, -0.05059658, 0.015192128, 0.018283166, -0.019872531, -0.0031540655, -0.008390746, -0.00044872132, -0.00852776, -0.05774324, 0.014600227, 0.0058477633, -0.012769718, 0.011196795, 0.031677667, 0.003228053, 0.019434085, -0.01899564, 0.0130766295, 0.0012721763, 0.00862641, 0.0060724667, 0.007239827, 0.005798438, 0.014556382, -0.015915561, 0.022229174, -0.020793265, 0.011563993, 0.01017741, 0.025407901, -0.008357862, -0.023566432, -0.006346495, 0.01862296, 0.026679393, -0.036895167, 0.026043648, -0.021429012, 0.008335941, 0.040358886, -0.026810927, 0.03158998, 0.0051900954, 0.028608551, 0.020420587, 0.050070446, -0.052876495, 0.045905218, -0.02180169, 0.009086777, 0.01114747, -0.03323415, -0.036390956, -0.005929972, -0.028192028, 0.04487487, -0.014424848, 0.007711156, -0.020782305, -0.05892704, -0.004195373, -0.02479408, 0.0055326307, -0.0100897215, 0.016397852, -0.062434603, -0.052876495, -0.06730135, 0.0015523701, -0.009141583, 0.0018907951, -0.02838933, -0.030099265, 0.03277378, -0.014676955, -0.015827874, -0.06659983, 0.037180156, 0.027885117, -0.009711562, -0.033475295, 0.011125548, -0.08172619, -0.015531923, 0.066862896, -0.041454997, -0.00784817, 0.016704764, 0.022360707, -0.0961072, 0.021878418, -0.012967018, 0.053578008, 0.004729728, 0.04022735, 0.00012622427, -0.03340953, 0.03439603, -0.009377248, 0.016825337, 0.033957586, 0.0072836718, 0.011300926, 0.009333403, -0.038824327, -0.04612444, -0.01668284, 0.040446572, 0.037728213, -0.0135260355, -0.026306715, -0.02762205, 0.049368933, 0.067871325, 0.009717043, -0.004603675, 0.043384157, 0.036807477, 0.08177004, 0.036719788, -0.004252919, 0.004726988, 0.05717326, -0.0073823216, 0.020497315, -0.046562884, -0.023369132, -0.05989162, 0.013657569, -0.011563993, 0.006949357, 0.053183407, -0.0037240442, 0.027315138, 0.04272649, -0.008774386, -0.042266123, -0.018546233, -0.0075028944, 0.0048777033, 0.004222776, -0.00581488, -0.042704567, 0.022558007, -0.01812971, -0.021604389, 0.004294023, 0.02685477, -0.014687915, 0.017110325, 0.0063026506, -0.025627125, -0.030384256, -0.014161781, -0.018294128, -0.026131336, -0.0012249064, 0.012462806, 0.0062259226, 0.0018154373, 0.007130216, 0.015564806, 0.00040521933, -0.017318588, 0.025320213, -0.014841371, 0.010895364, 0.04373491, -0.010813156, 0.024267944, -0.04437066, 0.06752057, -0.01812971, -0.0009803361, -0.055287946, 0.04836051, 0.026109414, 0.013756219, -0.028148185, 0.03724592, -0.045905218, 0.037224002, -0.0024210399, 0.0075248163, 0.025166757, -0.031677667, 0.011279004, -0.06396916, 0.018425662, -0.045685995, 0.009037453, -0.019214863, 0.0430334, 0.055375636, -0.043581456, -0.01879834, 0.032993004, -0.011662643, 0.011163912, 0.0032773782, 0.01502771, 0.065196805, 0.018831223, -0.016134785, -0.024246022, 0.07826248, -0.001666092, -0.037728213, -0.04241958, 0.005275044, 0.012627223, -0.008292096, 0.0031650267, -0.045817528, 0.018020099, -0.021933224, -0.014972905, -0.059716243, -0.013942558, 0.055770233, -0.0056066187, 0.015279816, -0.008659294, 0.012462806, 0.018173555, 0.048141286, 0.008352382, 0.040380806, -0.009086777, -0.010160969, -0.008407188, 0.0016578711, -0.0045570903, -0.00794682, -0.04099463, -0.016430736, 0.04022735, -0.061294645, 0.0190066, 0.014326198, -0.05875166, -0.040600028, 0.043559536, -0.022371668, 0.0101280855, -0.031151535, -0.0153127005, 0.023917189, 0.014238509, 0.03994236, 0.05572639, 0.014983866, 0.03354106, -0.031546135, -0.0019812244, 0.01919294, 0.013734297, 0.02218533, -0.0072233854, -0.00852228, -0.018063944, -0.038999703, -0.017208977, -0.03952584, 0.031568058, 0.03536061, -0.024947533, 0.04941278, -0.008478435, 0.033387605, 0.012802601, -0.00900457, 0.03674171, 0.08282231, -0.021933224, -0.004726988, 0.05300803, 0.014819449, 0.014983866, -0.024267944, 0.0046776626, -0.009700601, 0.008856594, 0.05213114, 0.003855578, 0.0018305089, -0.023347208, 0.008363343, -0.03158998, 0.0033869895, -0.034527563, -0.029244298, 0.04980738, 0.024728311, -0.018052982, -0.004088502, 0.0045762723, -0.015334622, -0.0016222474, 0.00025227727, 0.11224198, -0.052481897, -0.022733387, 0.017219936, -0.035316765, -0.01298894, 0.01114747, 0.033431448, -0.017976254, -0.0072233854, -0.05414799, -0.019839646, -0.008072873, 0.009958187, -0.05116656, -0.007596064, -0.05300803, -0.03130499, 0.014424848, 0.02306222, 0.012572417, 0.009711562, -0.006193039, 0.048272822, -0.035338685, -0.0044913236, -0.02161535, -0.004921548, 0.027556283, 0.021933224, -0.037530914, -0.010692583, -0.048316665, -0.03099808, 0.015093477, 0.018940834, -0.016145745, 0.013230085, -0.08207695, -0.019445047, 0.014797527, 0.007519336, 0.018140672, 0.04246342, 0.02286492, 0.010698064, 0.0021154983, -0.0068726293, -0.08782058, 0.013986403, 0.011443421, -0.03169959, -0.04507217, -0.0022237394, 0.013986403, -0.04787822, 0.03994236, -0.025846347, 0.07672792, -0.01521405, 0.029901966, -0.022338785, -0.018206438, 0.0028334523, -0.024859846, 0.010632297, -0.017713187, 0.016408814, 0.006735615, 0.020990565, 0.018666806, 0.0190066, -0.034461796, -0.045203704, 0.005924491, 0.009158025, 0.043888368, 0.026613627, -0.01668284, -0.017318588, 0.0016976051, -0.028038573, 0.06743288, -0.007667311, -0.01939024, 0.034549486, 0.05235036, -0.029792354, 0.021604389, -0.0076618306, -0.01677053, 0.004669442, -0.015279816, -0.017274743, 0.03479063, -0.014446771, -0.029046997, -0.03625942, 0.01889699, 0.0246187, 0.042814177, 0.06190847, -0.0070589683, -0.036325186, -0.015455195, -0.059628554, 0.017176092, -0.008741502, -0.04621213, -0.018568156, 0.021988029, 0.0029978694, 0.020848071, -0.018052982, 0.0010351418, 0.004302244, 0.013624686, -0.010434996, 0.008714099, 0.005699788, 0.045598306, 0.021714, -0.0010056838, -0.020080792, 0.0444145, -0.025254445, 0.02713976, -0.02239359, 0.021472856, 0.010374711, 0.009163505, -0.047439776, -0.01434812, 0.025144834, -0.008483916, 0.009717043, -0.039197005, -0.015531923, -0.02453101, 0.027885117, 0.01773511, 0.009432053, -0.004121385, 0.0049571716, -0.02946352, 0.049675845, 0.011607838, -0.006308131, 0.031326912, -0.012024361, 0.0006011495, 0.0026101193, -0.0021853754, -0.003343145, 0.017614538, 0.053665698, -0.008538721, -0.012605301, -0.006308131, -0.017592615, -0.0017976254, -0.048886646, -0.011673604, 0.045598306, 0.036873244, 0.053446475, -0.07164195, 0.009371767, -0.006971279, 0.0015825133, -0.005310668, 0.021045372, -0.032708015, 0.029244298, -0.04787822, 0.0101664495, -0.0023799355, -0.009601951, -0.002899219, 0.028126262, 0.03281763, 0.02015752, 0.022930685, -0.014370043, -0.0057600746, -0.0021100177, -0.02317183, 0.010034915, 0.015071555, 0.022448396, 0.024596779, 0.061382335, -0.0018976458, -0.009640315, 0.021078255, -0.009031972, -0.02713976, -0.04189344, -0.012977979, -0.0304281, -0.02453101, 0.0155757675, 0.015257894, -0.0067246538, 0.0046831435, -0.034768708, 0.008445552, -0.047746688, -0.009333403, 0.013536997, -0.02006983, 0.01598133, -0.03362875, -0.016902065, 0.004283062, -0.07203656, 0.0036610179, -0.0072288658, -0.031458445, 0.008182485, 0.015334622, 0.0061327526, 0.030932311, -0.018381817, 0.028915463, 0.0056614242, -0.025736736, 0.007453569, -0.046825953, 0.006938396, 0.005299707, -0.010347308, -0.0063519753, -0.04127962, 0.012473767, 0.011684566, 0.018524311, 0.0246187, -0.011739371, -0.0018770937, -0.017724149, 0.011662643, 0.043756835, -0.035031773, 0.05739248, 1.2491836e-05, -0.016934948, -0.02385142, 0.012572417, -0.020420587, -0.0026512237, 0.018063944, 0.009952707, 0.051648848, 0.0011070742, -0.015740184, 0.008774386, 0.010972092, 0.031677667, -0.015290778, 0.03989852, 0.019883491, 0.008023548, 0.004768092, 0.015049633, -0.028805852, -0.0068835905, -0.0029869082, -0.038035125, 0.014315237, 0.08049855, 0.056954037, -0.013756219, 0.011015937, 0.02606557, -0.00900457, -0.007091852, 0.058050152, -0.008642851, -0.037048623, 0.00678494, 0.042046897, -0.017713187, -0.017877605, 0.008883997, 0.0070041628, 0.018929873, 0.04088502, 0.006384859, 0.015455195, 0.022371668, -0.02974851, 0.01230935, 0.01637593, 0.014041209, -0.013010862, 0.036478642, -0.0044721416, -0.015674418, 0.02722745, -0.021242673, 0.012364156, 0.02122075, 0.010182891, 0.022174368, 0.01618959, 0.033979505, -0.00051894103, -0.02317183, -0.0001239978, 0.0018099567, -0.034264497, -0.01143246, 0.013427385, -0.029704666, 0.0021497519, 0.012101089, 0.0085990075, 0.018042022, -0.0032499754, 0.028718164, -0.03904355, -5.0095794e-05, 0.03229149, -0.00041549536, 0.02103441, 0.013657569, -0.01919294, -0.003354106, -0.00532985, -0.00055970275, -0.02238263, -0.022886842, 0.036215577, -0.042858023, 0.04292379, 0.0022209992, -0.01803106, -0.02946352, 0.018831223, -0.00046482048, -0.0066753286, -0.008253732, 0.020760382, 0.0062259226, 0.035777133, 0.04031504, -0.014720799, 0.016014213, 0.070414305, 0.0020716537, -0.03119538, 0.02510099, -0.021823611], [0.0036573757, 0.01509602, -0.024785224, 0.05741751, 0.023565102, 0.0040072636, -0.0495226, 0.038756818, 0.018588917, 0.02904369, 0.0013614229, 0.033900253, 0.0025508923, -0.027105847, 3.7498005e-05, 0.024928767, -0.032871522, -0.005954076, -0.008289653, -0.023337824, -0.009934425, -0.057513203, -0.074259974, -0.00068370195, 0.036460117, -0.008433197, -0.020443024, 0.009210725, 0.00247613, 0.012183277, 0.02880445, 0.016100826, 0.041412376, -0.03605341, -0.004904412, -0.0067824433, -0.005077861, 0.047082357, 0.020132013, -0.05923573, -0.016196521, -0.00084930065, -0.004449857, -0.0035796228, -0.014904628, 0.016914241, 0.025742183, 0.0021890425, 0.021304287, -0.026340282, -0.020311443, -0.012368688, -0.036125183, 0.0032865542, -0.03253659, -0.010293284, 0.079618946, 0.004120902, 0.063015714, -0.02971356, -0.013241912, 0.0633028, 0.029330777, -0.023122508, -0.003968387, 0.03062267, -0.00077379064, 0.008654493, 0.055168655, 0.03461797, -0.013337608, 0.009629395, 0.03212988, 0.0007524834, 0.0076736105, -0.035287842, 0.070767075, 0.019115245, 0.04507274, -0.014462034, 0.031148998, -0.019234866, 0.051436517, -0.009587527, 0.00416576, -0.023732569, 0.028134579, -0.12249068, -0.032393042, -0.027751796, 0.011961981, 0.019462142, 0.049331207, 0.021459794, -0.026962304, 0.0007663144, -0.010388981, 0.012667738, -0.014282605, 0.037799858, -0.011005023, -0.013361532, -0.050383862, -0.039235298, 0.0055174637, 0.04346984, 0.03703429, 0.038063023, -0.010227494, -0.044378947, 0.041699465, -0.00338225, -0.027345087, 0.032704055, -0.006728614, 0.05224993, -0.032440893, -0.052824106, -0.028158503, 0.006082667, -0.10038494, -0.048828807, 0.07516909, 0.023732569, 0.0018959739, -0.0017972876, -0.04064681, 0.044522494, 0.015383108, -0.014725198, -0.041292757, 0.026818762, 0.041819084, 0.025431171, 0.082537666, 0.017153481, 0.06703494, -0.014593616, -0.041149214, -0.011489483, -0.058422312, 0.019761192, -0.018792272, 0.019127207, -0.04119706, 0.0058195037, -0.011411729, -0.028373819, -0.024258897, -0.036675435, 0.008134147, -0.034306962, -0.011005023, 0.0037919478, 0.007936774, -0.010562429, 0.02409143, 0.029857105, 0.004844602, 0.059474967, 0.020143976, -0.043326296, 0.0033373926, -0.000773043, -0.00017045822, -0.045981854, 0.049139816, -0.035120375, -0.0466278, 0.009635376, 0.05277626, -0.0010758307, 0.043374144, -0.023517255, -0.023062699, 0.008540854, 0.039522383, -0.007930793, -0.021041123, -0.034498353, -0.0041717407, 0.06521672, 0.044666037, -0.019844927, -0.013146217, 0.045264136, 0.048063237, 0.051149428, 0.040216178, -0.036460117, -0.018768348, 0.013517038, -0.024127316, -0.004730963, -0.019055435, -0.038134795, -0.020825809, -0.023804342, -0.004730963, 0.015957283, 0.012655776, -0.011752646, 0.040909976, -0.032225575, 0.029498244, 0.016519496, 0.050958037, 0.02258422, 0.003169925, 0.0484221, 0.0132060265, 0.021352135, 0.017009936, -0.017536264, -0.010227494, 0.029259006, -0.05459448, -0.014246719, -0.009473889, -0.03978555, 0.044977047, -0.019641573, 0.005852399, -0.023409596, -0.015347221, 0.008385348, -0.008038451, 0.0124763455, 0.043039206, 0.0210172, -0.01805063, -0.036460117, -0.049187664, 0.027034076, -0.09397332, 0.007422409, -0.027034076, -0.028971918, 0.0030518004, 0.019952584, 0.016627153, 0.017931009, -0.04957045, -0.0057058646, 0.01745253, 0.022452638, 0.012237106, -0.012512232, -0.023062699, 0.013050521, 0.018026706, 0.017679807, 0.02717762, 0.021459794, -0.0039803493, 0.06191521, 0.027249392, -0.018564994, 0.006274059, 0.019665496, -0.032704055, 0.02046695, -0.043972243, 0.07631744, -0.021124858, -0.014653427, 0.030670518, -0.060862556, -0.06564735, -0.0034330885, 0.022297133, -0.047369443, 0.03540746, 0.016375951, 0.03423519, 0.019402333, 0.08598272, 0.024928767, -0.031029377, 0.02264403, -0.019175055, 0.034522276, 0.02089758, -0.0047190012, -0.026053194, 0.0067645, 0.005526435, -0.055407893, -0.017225252, 0.022632068, -0.016698925, -0.012667738, 0.036818977, -0.016950127, 0.019976508, 0.0071113976, 0.04413971, 0.020335367, 0.0003364307, 0.018864043, -0.010993061, -0.02156745, -0.059570663, -0.033828482, -0.0039085774, 0.04521629, 0.007344656, 0.07803996, 0.003726157, -0.060144838, 0.07105417, -0.011429672, -0.050958037, -0.042895664, 0.004016235, -0.0066508614, 0.015945321, 0.053781066, 0.09239434, -0.033828482, -0.017536264, -0.032153804, -0.110050224, 0.072872385, 0.020586569, 0.011961981, 0.02741686, -0.03815872, -0.030024571, 0.022859344, -0.06497748, -0.010729897, 0.009623414, -0.02404358, -0.003974368, -0.10028925, -0.004796754, -0.052632716, 0.03442658, -0.010825592, 0.013337608, 0.009641357, -0.025096236, 0.010574391, 0.037177835, -0.016866393, -0.037728086, 0.030694442, 0.020730112, 0.031986337, 0.0014556235, 0.02626851, 0.017847275, 0.05004893, 0.020514797, -0.0061155627, -0.016698925, -0.039522383, 0.005098794, -0.010006197, 0.024462251, -0.05483372, 0.027823567, 0.07067138, 0.033254307, -0.006262097, -0.01443811, -0.033780634, -0.004976184, -0.012201221, -0.052584868, 0.027345087, -0.037345305, -0.0049851555, -0.046221092, -0.005598207, 0.052441325, -0.019773154, -0.028254198, 0.014007479, 0.013050521, -0.01649557, -0.0264599, 0.015335259, 0.022691878, -0.013038559, -0.01322995, 0.012906977, 0.021962197, 0.016471647, 0.007081493, 0.019438218, 0.01364862, -0.013875898, 0.048278555, 0.035455313, -0.023242129, 0.04287174, -0.013720392, 0.020407138, -0.021818653, 0.02277561, -0.022237321, -0.056747638, 0.040287953, -0.06296787, 0.007571934, -0.027943186, 0.020706188, 0.02796711, -0.031483933, 0.011597141, -0.007506143, 0.04808716, 0.018828157, -0.028062807, -0.005018051, 0.03181887, -0.0012604938, -0.0065132985, 0.045503374, -0.04856564, -0.015131906, 0.009581546, -0.06469039, 0.041268833, -0.05669979, 0.03732138, -0.01690228, -0.030000648, 0.004129874, 0.014904628, 0.014749122, -0.009743033, 0.011441635, -0.0576089, 0.018337717, -0.0339481, -0.014067289, 0.023397634, 0.022787573, 0.015239564, 0.009683223, 0.050862342, -0.07703516, -0.012284954, -0.069762275, -0.039546307, 0.048469946, -0.0067226333, 0.00015793553, -0.027464708, -0.05660409, -0.011860304, 0.0138160875, 0.006686747, 0.045814388, 0.029809255, 0.032345194, -0.07851844, 0.010598315, 0.010622239, 0.03428304, -0.010245437, 0.023660798, -0.015251526, -0.022321057, 0.022919156, 0.010532524, 0.02500054, -0.03358924, 0.007404466, -0.0293547, 0.048996273, 0.000119993616, -0.06368559, -0.012105525, 0.03442658, 0.027823567, 0.019414295, -0.030215964, -0.0057596937, 0.0077513633, 0.060719013, 0.022990927, -0.011196414, 0.022022007, 0.040024787, 0.0794754, 0.034043796, -0.02662737, 0.03193849, -0.016041016, 0.01322995, -0.002736303, -0.03413949, -0.013110331, -0.043589458, -0.032871522, -0.018864043, 0.0069738347, 0.048828807, 0.050336014, 0.013672544, 0.017978856, 0.0073865233, -0.012655776, 0.009443983, 0.013840011, 0.0042913607, -0.015574499, -0.0049911365, -0.036077335, -0.01660323, -0.031794943, -0.02686661, 0.00093752024, 0.006351812, 0.010879422, 0.0264599, 0.00045679815, -0.023170358, -0.057034723, -0.028828373, -0.0402401, -0.004153798, -0.010873441, 0.0025120159, 0.020801885, -0.04734552, -0.015670195, -0.009384174, 0.006004914, 0.012942863, 0.008074337, -0.021722957, 0.020766, 0.007338675, -0.010269361, 0.0061155627, -0.044474643, 0.07622174, -0.0042375317, 0.009707147, -0.014366339, 0.06263293, 0.04071858, -0.026579522, -0.003911568, 0.027560404, -0.0005932395, 0.02325409, -0.00081117183, 0.0014698284, -0.010927269, -0.024127316, -0.043326296, -0.06009699, -0.013540962, -0.014139061, 0.00742839, 0.024737377, 0.075408325, 0.020921504, -0.013552924, -0.049474753, 0.039761625, 0.007685573, -0.008893733, 0.017105632, -0.009790882, 0.052154236, 0.005514473, -0.0380391, -0.010131798, 0.0875617, 0.0061723823, -0.036125183, -0.022919156, -0.019533914, -0.044594266, -0.008325539, -0.00304881, -0.036914673, 0.0009203249, 0.04789577, 0.0018197163, -0.04402009, -0.046795268, -0.005652036, 0.008917657, 0.027895339, -0.029857105, -0.025144083, -0.021244477, -0.01891189, -0.018230058, -0.0045515336, -0.024833072, 0.022655992, 0.00085827213, -0.006070705, 0.024904843, -0.0034390695, -0.021220554, 0.010299265, 0.05598207, -0.071293406, 0.024952691, 0.009443983, -0.12497877, -0.02210574, 0.07684376, 0.00881598, 0.007882945, -0.017380757, 0.008223861, 0.059474967, 0.0007132331, 0.041938704, 0.05091019, 0.010466733, 0.05158006, -0.019306637, 0.03380456, -0.010125817, 0.014617541, -0.0072429795, -0.0058553894, 0.029426472, -0.0023295959, -0.014832856, -0.010095912, -0.03461797, 0.009683223, -0.013995517, 0.019856889, 0.015658233, -0.020215748, 0.028995842, 0.003274592, 0.04179516, 0.020263596, 0.089332074, -0.03062267, -0.03019204, -0.0035826133, -0.0025628544, 0.04976184, -0.0112622045, -0.019533914, 0.035981636, -0.0022727763, 0.047824, 0.0014503902, -0.012308878, -0.012823244, 0.025407247, -0.0066030133, 0.009109048, -0.017643921, -0.054977264, 0.031053303, 0.0027437792, 0.0014444091, -0.019426256, -0.014450072, -0.01921094, -0.0052273856, 0.030790139, 0.060001295, -0.0656952, -0.04413971, -0.043445915, -0.011088756, -0.03930707, -0.004360142, 0.055599287, -0.017990818, -0.04488135, -0.014485959, -0.05622131, -0.032345194, -0.018433413, 0.006103601, -0.032225575, -0.03736923, 0.019641573, -0.035000756, -0.013923746, 0.02421105, -0.055025112, -0.045311984, 0.052871954, 0.051436517, -0.0037620428, 0.02686661, -0.03399595, 0.01770373, -0.00857076, -0.0013345084, -0.01925879, -0.0029127423, -0.015646271, 0.006256116, 0.046101473, 0.0016208484, -0.008469082, -0.039426688, -0.055360045, 0.045694765, 0.017440569, 0.005807542, 0.040072635, 0.010030121, 0.014151023, -0.021100935, 0.010915307, -0.057273965, 0.03260836, 0.04763261, 0.042608574, 0.021411946, -0.046173245, 0.026435977, -0.04928336, 0.0072609223, 0.0064355456, 0.04976184, -0.015598423, 0.01636399, -0.033182535, -0.019103283, 0.0057836175, -0.0151558295, 0.024007695, -0.010060025, 0.00010933998, 0.024593832, 0.03622088, 0.03617303, -0.054211695, -0.020813847, -0.062585086, -0.010963155, -0.017308986, 0.04909197, -0.0029366664, -0.018923853, -0.053781066, -0.034019873, -0.024187125, -0.004064083, -0.027105847, -0.010131798, 0.01955784, 0.014689312, -0.0016627153, 0.012524194, -0.027632175, -0.025957499, 0.00013812349, -0.02167511, -0.007500162, 0.016591268, 0.00537392, -0.014462034, -0.03768024, -0.0032955257, 0.038182642, 0.035192147, 0.0795711, 0.010550467, 0.015335259, 0.00011345191, -0.008774113, 0.04227364, -0.0044468665, -0.03605341, -0.034306962, -0.018971702, 0.002543416, -0.02004828, 0.0032536588, 0.038804665, 0.020610493, -0.0084571205, -0.00688412, 0.03406772, -0.003678309, 0.0009233154, -0.004745916, 0.0070575685, 0.044666037, 0.028110655, -0.0032147823, 0.034976833, -0.0035228033, 0.020155938, -0.010783725, 0.028613057, -0.04976184, 0.0075838957, 0.044546418, 0.005439711, -0.005900247, -0.0125959655, 0.009402117, -0.04421148, 0.016280256, 0.034522276, -0.014844818, -0.028038884, 0.010735878, -0.025048388, -0.006166401, 0.0031190864, -0.01733291, -0.011513406, 0.0042674365, -0.013529, -0.03193849, 0.009264554, -0.018062592, 0.031029377, 0.056795485, 0.035957713, -0.015311335, -0.029737484, -0.0043750945, -0.050288167, -0.065743044, -0.029378625, -0.0172731, 0.01129211, 0.032440893, 0.016746772, 0.06239369, 0.019198978, 0.01588551, -0.016938165, -0.006351812, 0.009707147, -0.012344765, -0.05119728, 0.011579197, 0.004258465, -0.0009749014, 0.002227919, 0.011459578, 0.059474967, 0.058422312, 0.015215639, -0.030239888, -0.020335367, -0.018971702, -0.071532644, -0.0065073175, -0.011938057, 0.017237214, 0.011710779, 0.018265944, 0.053493977, -0.036340497, -0.006878139, 0.005018051, -0.05789599, -0.06315926, -0.039881244, -0.007882945, -0.005864361, -0.014031404, 0.048924502, 0.06904455, -0.0034988793, -0.0038996057, 0.018265944, -2.3386607e-05, -0.008283672, -0.005113747, 0.022177512, 0.016196521, -0.049139816, -0.023457443, -0.00012148887, -0.04425933, 0.021244477, 0.026818762, -0.0066388994, 0.023600988, -0.032082032, -0.014773047, 0.027871415, -0.043158825, 0.0020484892, 0.022081817, 0.004264446, -0.0143065285, -0.037249606, 0.04650818, 0.022380866, -0.0032596397, -0.0022922147, -0.04009656, 0.00048333878, -0.009192782, 0.0030144192, 0.032345194, -0.0017838303, 0.0032865542, -0.024545984, 0.016292218, 0.018828157, -0.030694442, 0.031914566, -0.020849733, -0.01800278, -0.0037979288, 0.0145457685, -0.05660409, 0.021399984, 0.018672653, 0.024462251, 0.034163415, -0.019725306, 0.023732569, -0.011573216, 0.007404466, -0.0055055018, -0.03521607, 0.003163944, 0.019175055, 0.009916482, 0.014246719, -0.016651077, -0.012942863, 0.01925879, 0.0024312725, -0.0029845142, -0.033110764, 0.037297457, 0.078661986, -0.02626851, 0.0050030984, 0.011333977, -0.05507296, -0.013744316, 0.01147154, 0.039546307, 0.017057784, -0.018457336, 0.031244693, -0.025694335, 0.009037277, -0.00930044, -0.03732138, 0.022452638, 0.037871633, -0.016830508, -0.0048266593, 0.023110546, -0.021962197, 0.015263488, -0.0012171315, 0.010819611, -0.015263488, 0.01479697, -0.023457443, 0.013624696, 0.030550899, -0.0403358, -0.0071293404, -0.016698925, 0.016806582, 0.028038884, 0.028708754, -0.00013933839, -0.005394853, -0.058374465, 0.009653319, 0.027632175, -0.04971399, -0.030694442, -0.009222687, 0.010556448, -0.017859237, -0.025933575, 0.021579413, 0.020454988, 0.009270535, 0.024809148, -0.050288167, -0.016411837, 0.026244586, 0.0029336757, 0.0011393786, 0.0011707789, 0.012512232, 0.024617756, -0.032225575, 0.009850691, -0.00244473, -0.055790678, 0.0030293716, -0.03799125, 0.037464924, -0.0013973089, 0.005983981, -0.033182535, 0.019091321, 0.011148566, 0.013289761, -0.027034076, 0.0052453284, 0.017966894, 0.020502836, 0.022739725, 0.0008126671, 0.012308878, 0.07081492, 0.0018286878, -0.006758519, 0.015263488, -0.014844818], [0.018874079, -0.0016980935, -0.01114087, 0.014973054, -0.0028741378, -0.001709567, -0.061360836, 0.047821984, -0.0042366283, 0.04265886, -0.046146836, 0.02524193, 0.0033015297, -0.030221473, -0.015466419, 0.04906113, -0.030152632, 0.018380715, 0.0026475342, -0.026458131, -0.0005500159, -0.07678136, -0.058331802, -0.0014600161, 0.015259894, -0.02091638, 0.002659008, 0.019562496, 0.008725676, 0.01811682, 0.031345885, 0.03912499, 0.03180483, -0.039354462, 0.0068267947, -0.0008433099, -0.00042990161, 0.013963376, -0.022981629, 0.0032011357, -0.056358345, -0.0017655009, 0.028546328, -0.027421914, -0.029854318, 0.008151996, -0.00622443, -0.0061326413, 0.00789384, -0.04463232, -0.018851131, -0.049152922, 0.027330125, -0.013011067, -0.03155241, 0.010435243, 0.07953502, -0.09628649, 0.09151347, -0.041052558, -0.047821984, 0.030726312, 0.06512418, -0.0054700407, -0.030359156, -0.056450132, 0.0024281016, 0.016430201, 0.026090976, 0.053788256, 0.0020724197, 0.04309486, -0.018828185, -0.047959667, -0.008094627, -0.05360468, 0.08614382, 0.02059512, 0.022740684, -0.0027479283, 0.022935735, -0.046743464, -0.020583646, -0.029165901, 0.028339803, -0.012035811, 0.040387087, -0.088484436, -0.03953804, 0.003396187, -0.011536709, -0.0008103233, 0.0019476443, 0.0041161557, 0.0022617343, 0.012529176, -0.009821406, 0.027743176, -0.007538158, -0.019355971, -0.04119024, -0.047454827, -0.053008053, -0.05030028, 0.031667147, 0.029074114, 0.063517876, 0.0038034997, -0.0010397953, -0.024805933, 0.015730312, -0.009873036, -0.021432692, 0.032401457, -0.033479977, -0.0028970852, -0.009528829, -0.03419134, 0.02025091, -0.016854724, -0.06746479, -0.025310772, 0.048372716, -0.019080603, -0.02244237, -5.8622947e-05, 0.009890247, 0.03561407, 0.01072782, 0.0016493306, -0.0114736045, 0.011255606, 0.0431637, 0.069575936, 0.10904513, 0.026664656, 0.042360548, -0.023291416, -0.0402953, 0.04864808, -0.034558497, 0.0006658276, -0.019539548, 0.023452047, -0.020583646, 0.02183427, 0.0025012458, 0.01524842, -0.067189425, -0.010848293, -0.016418727, -0.061911568, -0.017153038, 0.041282028, 0.033893026, -0.029693687, -0.011077765, 0.017887348, -0.0025356666, 0.0592038, 0.026068028, -0.066959955, 0.00845031, 0.057505704, 0.030244421, -0.015913889, 0.030772207, -0.0061383783, -0.041557394, 0.026481079, 0.035223965, 0.005570435, 0.0055331457, -0.020709855, -0.028913483, -0.040226456, 0.041488554, -0.024576461, -0.015317262, -0.027238337, -0.03485681, 0.04513716, 0.02228174, -0.009482934, 0.049152922, 0.07834177, 0.042199917, 0.021570375, 0.04034119, -0.054201305, 0.008949411, 0.001623515, -0.0037633423, -0.020962276, 0.031277046, -0.029739583, 0.00024614466, -0.04199339, -0.020193543, -0.0041448395, -0.03444376, -0.024668248, 0.005183201, 0.02804149, -0.018862605, 0.0141928485, 0.05443078, 0.019746073, 0.0019921046, 0.020996695, 0.02843159, 0.015776206, 0.008209364, -0.0476843, -0.031713042, 0.036486063, -0.080039866, 0.009643564, -0.019906703, -0.056541923, 0.022178477, -0.03848247, 0.0132405395, -0.012976646, 0.03272272, 0.033663556, -0.004689836, -0.019688705, 0.047317144, 0.0007325179, -0.03634838, -0.0120128635, -0.024851827, 0.04513716, -0.056358345, -0.031116415, -0.014686214, -0.020618066, -0.0143305315, 0.015994204, 0.0049336497, -0.0013008199, -0.019883756, -0.017657878, 0.03345703, 0.02638929, -0.011502288, 0.06108547, -0.0046181255, -0.004600915, 0.014835371, 0.012747174, 0.008444573, 0.07191655, 0.024025727, 0.07636831, 0.01792177, -0.02441583, 0.0041735237, 0.033938922, -0.0316442, 0.041718025, 0.015191052, 0.055853505, 0.0033101349, 0.008983832, 0.021467114, -0.051539432, -0.041121397, 0.03157536, 0.07921376, -0.029877266, -0.03173599, 0.009127252, 0.022603, -0.013263486, 0.07990218, 0.05369647, -0.0012671162, 0.06406861, -0.008106101, -0.007859419, 0.051723007, 0.047087673, 0.02680234, -0.028913483, 0.029716635, -0.077332094, -0.048602186, 0.026825286, -0.009477197, -0.012116126, 0.08187564, -0.0013201816, 0.06732711, 0.017749665, 0.03327345, -0.0016192124, -0.031139363, 0.0386431, 0.0262975, -0.022270266, -0.011978443, -0.029074114, 0.006115431, 0.04160329, 0.0077676303, 0.09394587, -0.006792374, 0.0032957927, 0.103446014, -0.014766528, -0.018197136, -0.026871182, 0.029693687, 0.006385061, 0.027995594, 0.058744855, 0.044815898, -0.013584748, -0.018977342, -0.03380124, -0.09986625, 0.009001043, 0.034053657, 0.026045082, 0.028156225, -0.047821984, -0.021570375, 0.04447169, -0.058607172, -0.0007873761, 0.027192442, 0.015431997, -0.07131992, -0.11602109, -0.017680824, -0.05144764, 0.025999187, -0.014124007, 0.017393984, -0.014146954, -0.030450946, 0.0032412931, 0.0058974326, -0.030634524, -0.07053972, 0.0021197484, 0.053237524, -0.0001826813, 0.0013144448, 0.036210693, 0.014996001, 0.022981629, -0.012999593, 0.011628498, 0.05443078, -0.046743464, -0.025540244, 0.022212898, 0.084858775, -0.06888752, -0.016912093, 0.05493562, 0.027307179, -0.022706263, -0.020709855, 0.010022193, -0.0047902297, -0.018793764, -0.0366008, 0.044609375, 0.014571478, 0.001008243, -0.015041895, 0.003711711, 0.05360468, 0.0069759516, -0.06521597, 0.018805237, 0.015294314, -0.048693977, -0.02638929, 0.03269977, 0.008421626, 0.01754314, -0.024760038, 0.01270128, -0.0021054065, 0.005966274, -0.015477892, 0.016005678, -0.028454538, -0.04052477, 0.015890943, 0.048969343, -0.0032871875, 0.005120096, 0.021776902, 0.026366342, -0.037128583, 0.017979138, -0.011622761, -0.040249404, 0.018644607, -0.028798746, 0.0419475, -0.02811033, -0.005441357, 0.040960766, -0.020652488, 0.037266266, -0.025012458, 0.013825693, 0.030106738, 0.00028917068, -0.021237642, 0.051998373, -0.011364605, 0.044815898, -0.004400127, -0.019160919, -0.02174248, 0.025838558, -0.045228947, 0.026733497, -0.01017135, 0.026710551, -0.03625659, -0.034558497, 0.0069128466, -0.0058974326, 0.0030491103, -0.01632694, -0.0050627277, -0.043714434, 0.0030146895, -0.026205713, -0.009586196, 0.034168392, 0.00025349495, -0.030886943, 0.023865096, -0.008565046, -0.05911201, 0.011582604, -0.058836643, -0.016510516, 0.039813407, -0.040639505, -0.040318247, -0.004919308, -0.046651676, -0.03788584, 0.024071623, -0.01340117, -0.02174248, 0.02581561, 0.05443078, -0.06971362, 0.013011067, -0.0058744852, 0.048189137, -0.023417626, 0.0390332, 0.007813524, -0.014353479, 0.041304976, 0.023291416, 0.031690095, -0.0030720576, 0.016166309, -0.001953381, -0.013137277, -0.009953352, -0.02416341, -0.004314075, -0.013619169, 0.037771106, 0.006815321, -0.046972934, -0.025264876, -0.006895636, 0.025058351, 0.014789476, -0.01883966, 0.032952193, 0.023612678, 0.083573736, -0.020503331, -0.004119024, 0.0043599694, -0.020572172, 0.0021441297, -0.014502636, -0.022430897, -0.033158716, -0.005527409, -0.02165069, -0.030680418, 0.006987425, 0.05039207, 0.014605898, 0.009196094, 0.006832531, 0.014743581, -0.004190734, -0.016441675, 0.008639624, 0.009333777, -0.012770122, -0.019665757, -0.017130092, 0.0015173842, -0.006895636, -0.014238743, -0.02228174, 0.015959784, 0.005326621, 0.0077791037, -0.0015202526, -0.030863995, -0.0353387, -0.02769728, 0.0029487163, -0.003510923, 0.0038895519, 0.008008576, -0.016430201, -0.007796314, 0.0002171021, 0.007446369, -0.0013438459, 0.018885553, -0.02581561, -0.00466402, 0.015925363, 0.011622761, 0.020904908, -0.0035023177, -0.006729269, 0.042544127, 0.0189085, -0.009878773, -0.0072111604, 0.026710551, 0.05466025, -0.038207103, -0.012116126, 0.043186646, -0.031345885, 0.040226456, 0.005926117, 0.01804798, 0.01700388, -0.03618775, -0.01537463, -0.058836643, 0.013997797, -0.051309958, 0.0024668248, 0.035751753, 0.09848942, 0.019700179, -0.02925769, -0.044173375, 0.03559112, 0.0030146895, -0.01569589, -0.009850089, -0.0094370395, 0.054614358, 0.031529464, -0.035545226, -0.022040794, 0.050116703, -0.0041247606, -0.026504027, -0.025700873, -0.012150547, 0.00089852663, 0.0034420814, -0.013837167, -0.059570953, 0.030886943, 0.01846103, -0.031713042, -0.06324251, -0.013630642, -0.000668696, 0.0006342752, 0.024530565, 0.011771918, -0.016854724, 0.0012635307, -0.018988814, -0.012609491, 0.036531955, -0.00197346, 0.0006679789, -0.010745031, -0.038207103, 0.023348784, -0.016005678, -0.036463115, -0.0059031695, 0.029946107, -0.044127483, 0.052916262, 0.008088891, -0.09839763, -0.00816347, 0.030703366, -0.011456394, -0.011278553, -0.006430955, -0.004586573, 0.043714434, 0.016051572, 0.02597624, 0.025654979, 0.026274554, 0.0748079, -0.04979544, 0.0431637, 0.019424813, -0.0070046354, 0.003769079, -0.03049684, 0.009104305, -0.026458131, -0.03132294, -0.048189137, -0.035292808, 0.00061204506, -0.012494755, -0.0031208203, 0.05869896, 0.008823202, 0.035407543, 0.007962681, 0.03717448, -0.00014333041, 0.10234455, -0.03453555, -0.024186358, 0.014135481, -0.021604797, 0.07829588, -0.033021033, -0.027169496, -0.022419423, -0.013917482, 0.07081509, 0.013481485, -0.0055159354, 0.0135159055, 0.024484672, -0.02097375, 0.040249404, -0.014273164, -0.031162309, 0.012896331, 0.018759344, 0.023520889, -0.019849336, -0.012586544, -0.0071652657, -0.033135768, 0.032424405, 0.07081509, -0.043117806, -0.041282028, -0.039239727, -0.0071652657, 0.006878426, 0.0091502, 0.044586428, -0.032194935, -0.00789384, 0.008805991, -0.0118751805, -0.027261283, -0.023658572, -0.010802398, -0.01894292, -0.04052477, 0.01626957, -0.048693977, -0.022086687, 0.008691255, -0.031621255, -0.044081587, 0.043920957, 0.018323347, 0.034673233, -0.021340905, -0.044655267, 0.049198814, 0.0010168481, -0.0013201816, -0.03862015, -0.031690095, -0.037266266, 0.049611866, 0.04924471, 0.0020107492, 0.0017267774, -0.058790747, -0.06728122, 0.028454538, 0.019872284, 0.015936837, 0.054384883, 0.01754314, 0.0040989453, -0.01883966, 0.0063334294, -0.087245286, 0.042039286, 0.02951011, -0.010148403, 0.01865608, -0.03485681, 0.025632031, -0.040432982, 0.0052520423, -0.014938633, 0.05089691, -0.02126059, 0.015558207, -0.03618775, -0.0010648939, 0.0023506547, 0.008496204, 0.010790925, 0.0018587239, -0.0063449033, 0.015191052, 0.015122211, 0.010165613, -0.021535955, -0.024025727, -0.017566089, 0.0037748157, -0.027054759, 0.02811033, 0.018128294, 0.003596975, -0.059066113, -0.0051975427, -0.0084847305, 0.015753258, -0.03361766, -0.0019720257, 0.039583936, 0.010142666, -0.0122882305, 0.015191052, -0.0050311754, -0.0030003474, 0.0004890624, 0.0069472673, 0.0045177317, 0.02944127, -0.012632438, -0.027812017, -0.030703366, 0.016912093, 0.020698382, 0.028454538, 0.060029898, 0.028752852, 0.0022904184, -0.03912499, -0.04125908, 0.025035404, -0.007974155, -0.051493537, 0.013699483, -0.009712406, -0.021054063, -0.0051401746, 0.004282523, 0.030978732, 0.011530972, -0.023819203, 0.0030060844, -0.00023628454, 0.00020042952, 0.009098568, 0.016063046, 0.03157536, 0.042360548, 0.05516509, -0.043737378, 0.011290027, -0.037197426, -0.008886307, -0.0080774175, -0.0045837048, -0.036279537, -0.00514878, 0.044999477, -0.022775104, -0.0015001737, -0.021467114, -0.0047156513, -0.027353073, 0.027398966, 0.022063741, 0.029028218, -0.011978443, 0.010613084, -0.011978443, 0.015535261, 0.0053753834, 0.0038924203, -0.010693399, -0.013814219, -0.009264936, -0.037931737, 0.020836065, -0.019849336, -0.007888103, 0.051309958, 0.013045488, 0.008031523, -0.013883061, 0.014491162, -0.030703366, -0.020273859, -0.036509007, 0.0019304339, -0.0010096772, 0.032034304, 0.0034851073, 0.04472411, 0.019241234, 0.035132177, -0.041557394, 0.002603074, 0.00032681844, 0.0049164393, -0.04061656, 0.023888044, -0.0009824274, -0.02680234, -0.005013965, 0.034810916, 0.014537057, 0.053421102, 0.055256877, -0.024209306, -0.028408645, 0.02983137, -0.06126905, -0.008140522, 0.019149445, 0.03189662, 0.028064435, -0.009804195, 0.040157616, -0.05924969, -0.0051545165, -0.012471808, -0.027513703, -0.042199917, -0.0095747225, -0.033594713, -0.024048675, -0.038321838, 0.009087095, 0.06879573, 0.02330289, -0.013343802, -0.0279497, -0.034650285, 0.01820861, -0.02091638, 0.0054700407, 0.0061326413, -0.032768615, -0.0135159055, 0.0075611053, -0.049198814, 0.0063965344, -0.006528481, -0.03364061, -0.01257507, -0.0051172273, -0.017371036, 0.02030828, -0.0005198977, -0.006574375, 0.022821, -0.016980935, 0.0049221762, -0.009867299, 0.009098568, 0.018243032, 0.0045148632, 0.0003675139, -0.036050066, -0.022648895, 0.009809932, 0.0056019872, 0.012368546, -0.020331226, 0.0016421597, -0.027903806, 0.021478588, 0.018002085, -0.029074114, 0.001401931, 0.0054757777, -0.02489772, -0.008748624, 0.00550733, -0.026940024, 0.03196546, 0.032860402, 0.03607301, 0.038367733, -0.028293908, 0.02202932, -0.010326244, 0.03132294, 0.00050125306, -0.016820304, 0.025586138, 0.02654992, 0.002911427, 0.0135159055, 0.009700933, -0.026871182, 0.008605204, 0.00014431642, -0.026871182, -0.0075611053, 0.0748079, 0.072880335, -0.0010340586, -0.018598713, 0.017175986, -0.096378274, -0.009482934, 0.034902703, 0.018965868, -0.0059892214, 0.0031150836, 0.06058063, -0.025196034, -0.011966969, -0.01216202, 0.00023269904, 0.035132177, 0.03921678, 0.01894292, 0.018919973, 0.035820592, -0.027743176, 0.026618762, -0.010182824, 0.025861504, -0.0018314741, 0.016923565, -0.018793764, 0.029487163, 0.027490756, -0.019206814, -0.004761546, -0.030244421, 0.0056536184, 0.010940081, 0.0055331457, -0.017130092, -0.005679434, -0.03829889, 0.009305093, 0.011594078, -0.03602712, -0.0046439413, -0.011898127, -0.010148403, -0.034558497, -0.019941125, 0.026113924, 0.013022541, -0.010756504, 0.014273164, -0.063196614, -0.009959089, 0.012976646, -0.007239844, -0.0071767396, 0.01811682, 0.013527379, 0.011909601, -0.03848247, -0.021696586, 0.003232688, -0.041511502, 0.011645708, -0.015604102, 0.027284231, -0.022167003, 0.005693776, -0.03972162, -0.0029974792, -0.0047730193, 0.015317262, -0.008226574, -0.013171698, 0.014055165, 0.029533057, 0.01257507, -0.0040301033, 0.0195166, -0.011198238, 0.0250813, -0.02014765, 0.034168392, -0.002681955], [0.02290694, -0.01733894, -0.021844624, 0.053189036, 0.002255894, 0.017619783, -0.04185767, -0.007387366, 0.03506862, 0.04840251, -0.014237469, 0.023663992, 0.019512415, -0.012882101, -0.0014148942, 0.039122514, -0.022125466, 0.010305681, -0.024518728, -0.01026905, -0.014066522, -0.055484615, -0.04608251, -0.025788624, 0.025666518, -0.021624835, -0.013053048, -0.011661049, -0.027546939, 0.018303573, 0.052261036, 0.036314093, 0.045789458, -0.025764203, -0.0024634728, -0.02852378, -0.0007581971, 0.024726307, 0.012967574, 0.019036204, -0.035117462, -0.0029702096, 0.020928835, -0.022955783, -0.036289673, 0.015995784, -0.007228629, 0.014176416, 0.005042946, -0.03467788, -0.035825673, 0.007570524, -0.029329674, 0.017863994, -0.033774305, 0.030550728, 0.072432816, -0.022626098, 0.07233513, -0.013504838, -0.026008412, 0.014982311, 0.04273683, -0.0072591556, -0.019756624, 0.002168894, -0.00023715124, 0.037413042, 0.03856083, 0.03343241, -0.026741045, 0.041833248, 0.052407563, 0.011880838, -0.00852905, -0.05118651, 0.08039408, 0.018095994, 0.02896336, 0.0016865784, 0.03406736, -0.011343575, 0.0136513645, -0.012491364, 0.021441678, -0.019365888, 0.04488588, -0.11126228, -0.016044626, 0.011001681, -0.023505256, -0.013431574, 0.032895148, 0.0007498024, -0.00807726, 0.026130518, -0.0182181, 0.009005261, 0.008303155, 0.025837466, -0.006734103, -0.015373047, -0.054605458, -0.05778019, 0.011966312, 0.03013557, 0.055973034, 0.03433599, -0.013333891, -0.043615986, -0.0026466306, -0.0341162, -0.045862723, 0.01355368, -0.033725463, -0.011032207, -0.03758399, -0.047645457, -0.004899472, -0.013016417, -0.09612123, -0.006898945, 0.05567998, -0.0036631566, 0.0026054203, -0.0037638936, -0.019109467, 0.07218861, 0.014847995, 0.000861605, -0.023578519, 0.011135996, 0.05441009, 0.04373809, 0.04657093, 0.015702732, 0.0799545, -0.00074903923, -0.0345802, 0.026301466, -0.03882946, -0.0018025783, -0.015018943, 0.037608407, 0.0071797874, 0.006520419, 0.003339578, 0.0026557886, -0.02945178, -0.027424833, 0.022088835, -0.07199324, -0.023908203, 0.0115023125, 0.022052204, -0.025397887, -0.014213048, 0.040783145, -0.013297259, 0.048451353, 0.013101891, -0.068427764, -0.0030846833, 0.033090517, 0.002594736, -0.003760841, 0.024872834, -0.029207569, -0.060661875, 0.017009258, 0.011679364, 0.010348418, 0.02571536, -0.013040838, -0.002207052, -0.020086309, 0.023895992, -0.009133471, -0.019365888, -0.05050272, -0.013687995, 0.06559493, 0.018071573, 0.001311868, 0.035361674, 0.084399134, 0.061101455, 0.05914777, 0.04442188, -0.0070027346, -0.009524208, 0.01893852, -0.03255325, 0.007289682, -0.024665255, -0.029940201, -0.009695155, -0.019133888, -0.02199115, 0.008419155, 0.023505256, -0.0200741, 0.03182062, -0.0051619983, 0.032626517, -0.016007995, 0.028352832, 0.035557043, 0.028401675, 0.04041683, 0.039342303, 0.008187155, 0.00218721, -0.035386093, -0.026765466, 0.02477515, -0.05631493, -0.030501885, -0.013749048, -0.037730515, 0.047572196, -0.027962096, 0.0019933677, -0.017851783, -0.0036753672, 0.036289673, 0.011856417, -0.011966312, 0.03738862, 0.025055991, -0.0004037104, -0.019854309, -0.036875777, 0.0038798936, -0.08444797, 0.012009049, -0.034946516, -0.03973304, -0.013687995, 0.048036195, -0.0039775777, 0.008480208, -0.048988614, -0.01660631, 0.022394098, 0.045667354, 0.017424416, 0.006404419, -0.028792411, 0.00771705, 0.017900625, 0.016410941, 0.032064833, 0.043078724, 0.011282522, 0.07497261, 0.03902483, -0.017888416, -0.008791576, 0.006850103, -0.024469886, 0.03018441, -0.019744415, 0.05821977, -0.05348209, -0.022052204, 0.021942308, -0.040831987, -0.042883355, 0.021514941, 0.033237044, -0.033090517, -0.0050276825, 0.014713679, 0.02918315, 0.017607573, 0.08205471, 0.052212194, -0.00828484, 0.017106941, 0.0035746305, 0.056901034, 0.03348125, 0.026521254, 0.036338516, -0.006618103, 0.006599787, -0.06984419, -0.020867784, 0.008290945, -0.01472589, -0.0026496833, 0.05382398, -0.008461892, 0.019353678, -0.009035787, 0.032650936, -0.0076621026, 0.02454315, 0.031527568, -0.006187682, -0.04254146, -0.03277304, -0.042028617, 0.015592837, 0.054849666, -0.028426096, 0.08010103, -0.014090943, -0.053237878, 0.062517874, 0.008797681, -0.007674313, -0.01591031, 0.03440925, 0.015067785, 0.0067218924, 0.03064841, 0.058952402, -0.01799831, -0.011398522, -0.019964203, -0.09846565, 0.015104416, 0.036362935, 0.005311577, 0.034238305, -0.03626525, -0.024115782, 0.014213048, -0.061443347, -0.037730515, -0.010226312, 0.01015305, -0.032846306, -0.11565807, 0.0052261036, -0.05475198, -0.0029946307, -0.015507364, 0.01634989, 0.0128210485, -0.042394932, 0.025446728, 0.022809256, -0.03514188, -0.052700616, 0.019719994, 0.03995283, 0.029354095, 0.0014904469, 0.03665599, 0.013907785, 0.01239368, 0.006856208, 0.011752628, 0.013419364, -0.05797556, 0.025373466, -0.0026695256, 0.070967555, -0.03909809, 0.020428203, 0.081615135, 0.013749048, -0.022479571, -0.019133888, -0.009005261, -0.014188627, -0.0016789468, -0.065839134, 0.035679147, 0.04395788, -0.01262568, -0.016935995, 0.014188627, 0.04068546, -0.002512315, -0.055777665, 0.024396624, 0.027473675, -0.02525136, -0.034287147, 0.051674932, 0.025593255, 0.0059801033, -0.005940419, 0.0034097885, 0.0184501, -0.0058946298, -0.009157891, 0.020269467, 0.0036478937, 0.008321471, 0.01591031, 0.02476294, 0.0028160517, 0.013358312, 0.022076625, 0.0056137876, -0.0016636837, 0.02337094, -0.034189463, -0.051870298, 0.07028376, -0.054800823, 0.045935985, 0.0045087356, -0.0035837884, 0.042858932, -0.02503157, 0.050649248, -0.019817678, 0.016703995, 0.030355358, 0.0061205244, -0.011599996, 0.06686482, 0.005726735, -0.0074484185, 0.019756624, -0.028157465, -0.03155199, 0.015079995, -0.07155366, 0.068427764, -0.024591992, 0.0055344193, 0.003892104, -0.022662729, 0.016655153, 0.009292208, 0.00080971024, -0.017790731, -0.026716623, -0.036216408, -0.016618522, -0.020782309, -0.013346101, 0.051088825, 0.018767573, -0.025983991, 0.018034942, -0.0017583153, -0.08776923, -0.010177471, -0.06349472, -0.034946516, 0.00866947, -0.010623154, 0.013260627, -0.024408834, -0.042492617, -0.014872416, 0.03831662, 0.028230729, 0.038658515, 0.028938938, 0.06959998, -0.07331198, -0.01940252, 0.018791994, 0.065253034, -0.0036570514, 0.009365471, 0.021600414, -0.016203362, 0.029769253, 0.022626098, 0.01214947, -0.03340799, -0.011612207, -0.04957472, 0.01518989, -0.004206525, -0.06627872, 0.008718313, -0.0068073664, 0.025935149, 0.010617049, -0.029940201, 0.010482733, -0.025129255, 0.056510296, 0.02056252, -0.046253458, 0.040050514, 0.02852378, 0.07848924, 0.019060625, -0.032821883, 0.04766988, -0.0033426306, 0.0074728397, -0.0061846296, 0.008730523, 0.003892104, -0.013639154, -0.00085015764, -0.01285768, 0.013932206, 0.02241852, 0.0063738925, 0.039806303, 0.039171357, 0.021453887, -0.01611789, -0.019072836, 0.010476628, 0.0008219208, 0.017106941, -0.03018441, -0.033530094, 0.0012279206, -0.009811155, -0.04185767, -0.024518728, 0.023285465, 0.014945679, 0.035825673, -0.0015522627, -0.056705665, -0.06193177, -0.016252205, -0.04442188, -0.0039562094, 0.00362042, -0.007057682, 0.012259364, -0.024970518, -0.017802943, -0.008022313, -0.0025199465, 0.015775995, 0.02383494, -0.00479263, 0.014799153, 0.0058488403, 0.011984628, -0.0053207353, -0.028426096, 0.022967992, -0.0072835768, 0.0048628408, -0.016410941, 0.030819358, 0.07736587, -0.0327242, -0.013810101, 0.013761259, -0.016020205, 0.015006732, 0.0059098927, -0.00019193414, 0.015018943, -0.043884616, -0.061541032, -0.05563114, 0.013883364, -0.06964882, -0.010812418, 0.04820714, 0.09118818, 0.0022299467, -0.015531785, -0.04674188, 0.055924192, 0.0063983137, -0.020904414, -0.007057682, -0.027693465, 0.054898508, 0.015592837, -0.014371784, 0.0067646294, 0.06530187, -0.020977678, -0.05934314, -0.021539362, -0.02783999, -0.02172252, -0.0086389445, -0.040050514, -0.046375565, 0.019793257, 0.040807568, -0.04793851, -0.06246903, -0.03367662, -0.0027916306, 0.0145671535, 0.045154512, -0.008016208, -0.015250943, 0.011624417, -0.012698944, -0.0007929208, 0.008730523, 0.0017949468, 0.02964715, -0.004255367, -0.035605885, 0.019487994, 0.007454524, -0.03174736, 0.014738101, 0.030990306, -0.0678905, 0.029989043, 0.015385258, -0.12054228, -0.022149887, 0.027986517, -0.010128628, 0.0004472104, -0.009133471, 0.01680168, 0.04488588, 0.013602522, 0.025129255, 0.07511913, 0.014090943, 0.05441009, -0.03975746, 0.055924192, 0.02197894, -0.005436735, -0.004801788, -0.012943153, 0.027864411, -0.0029320517, 0.004273683, -0.028548202, -0.032626517, 0.011447364, -0.020415993, 0.016178941, 0.010262944, -0.016703995, 0.04271241, 0.007912419, 0.032626517, 0.005925156, 0.0617364, -0.032431148, -0.0004991051, 0.0067707347, 0.005363472, 0.088257656, -0.02918315, -0.0458383, 0.0087244185, -0.018144837, 0.053433247, 0.015934732, -0.010549892, 0.0060258927, 0.015739363, -0.008376419, 0.004899472, -0.03973304, -0.039464407, 0.03926904, 0.010091997, -0.00052543404, -0.015995784, -0.024946097, -0.0016865784, -0.022845887, 0.009866102, 0.06149219, -0.041686725, -0.05162609, -0.050209668, 0.012650101, -0.015531785, -0.0054581035, 0.046986092, -0.011258102, -0.039342303, 0.012057891, -0.04044125, 0.0012767627, -0.03015999, 0.0186821, -0.026863148, -0.022601677, 0.00654484, -0.03321262, -0.011978523, 0.014347364, -0.067646295, -0.027180623, 0.051333036, 0.029012201, 0.006801261, -0.005940419, -0.038951565, 0.0038035777, -0.034922093, 0.024408834, -0.014164206, -0.018364625, -0.03274862, 0.029769253, -0.001743052, 0.0060869455, -0.009078523, -0.031527568, -0.055728823, 0.020367151, 0.039659776, 0.03863409, 0.037950303, 0.033359148, 0.0028694728, 0.00443242, 0.025055991, -0.09582818, 0.054068193, 0.047132615, 0.03274862, 0.013578101, -0.045740616, 0.029036622, -0.042956617, 0.009615786, 0.003892104, 0.04251704, -0.012295996, 0.0107025225, -0.022137677, -0.008590102, 0.004902525, -0.005216946, 0.015287574, -0.0072774715, -0.0055954717, 0.020147363, 0.019781046, 0.048182722, -0.02219873, -0.04158904, -0.024921676, -0.010635365, -0.04693725, 0.036094304, 0.0106719965, -0.0012988943, -0.044226512, -0.04185767, -0.025983991, -0.001495789, -0.03834104, 0.001006605, 0.034458093, 0.005867156, -0.009859997, -0.012527996, -0.039879568, -0.02710736, 0.010470523, -0.02195452, -0.014274101, 0.007906313, -7.6697346e-05, -0.016325468, -0.066522926, 0.008370313, 0.031600833, 0.038438726, 0.09001597, 0.024005886, 0.0014805258, -0.003611262, 0.0034158935, 0.023493046, -0.0017644205, -0.061345663, 0.00414242, -0.036167566, 0.02433557, -0.01097726, -0.0032266306, 0.04410441, 0.027498096, -0.0028923675, -0.030794937, 0.0017109994, -0.009878312, 0.0012172364, 0.017619783, 0.04913514, 0.052944824, 0.03738862, -0.007790313, 0.0327242, -0.008870944, 0.028597044, -0.041662302, 0.0037455778, -0.0425903, 0.006715787, 0.040245883, 0.010604839, -0.0009974471, -0.03487325, -0.004182104, -0.048255984, 0.01569052, 0.014750311, 0.0020513677, 0.012247154, 0.00566263, -0.0017384731, -0.016227784, 0.0059129456, -0.012442523, -0.015617258, 0.029866938, -0.022955783, -0.055924192, -0.010323997, 0.011477891, 0.025324624, 0.055093877, 0.048231564, 0.01110547, -0.027278308, 0.018743152, -0.04112504, -0.044739354, -0.022931362, -0.009279997, -0.0077719977, 0.031991567, 0.028474938, 0.051674932, 0.038438726, 0.028890096, -0.04227283, -0.02876799, -0.0110444175, 0.011197049, -0.032064833, 0.02127073, -0.021380624, 0.003015999, -0.0010897891, 0.007918524, 0.029476201, 0.030111149, 0.04298104, -0.021563783, -0.0026786833, -0.019451363, -0.07223745, -0.011050522, -0.0063677873, 0.019707782, 0.012320417, -0.0005765656, 0.021942308, -0.04141809, 0.0005841972, 0.020367151, -0.04271241, -0.06007577, -0.013639154, -0.021392835, 0.0021795782, -0.03697346, -0.0030175254, 0.050111983, 0.00840084, -0.022247571, 0.01564168, -0.02642357, 0.009395997, -0.008327576, -0.0012767627, -0.0066669453, -0.042883355, -0.014469469, 0.016301047, -0.043664828, 0.008339787, -0.004148525, -0.00094707863, 0.007710945, -0.013040838, -0.015714942, 0.009658523, -0.018975152, -0.007924629, -0.0152021, 0.009249471, 0.00356242, -0.009908839, 0.0341162, 0.0043591564, 0.010769681, 0.006212103, -0.019915363, 0.035825673, -0.02969599, 0.007497261, 0.018706521, -0.0031167357, -0.018071573, -0.037266515, 0.03758399, 0.03037978, -0.04417767, 0.0065753665, -0.01191747, -0.004438525, -0.038414303, 0.003650946, -0.046986092, 0.046522092, 0.04740125, 0.027522517, 0.021807993, -0.029500622, 0.01144126, -0.008083366, 0.009566944, 0.012503575, -0.0364362, 0.02244294, 0.021148624, 0.00819326, 0.01109326, -0.006581472, -0.02290694, 0.032821883, 0.008498523, -0.025446728, 0.0035196831, 0.043567143, 0.06364124, -0.013040838, -0.015348626, 0.00362042, -0.06662061, -0.0040508406, 0.028255148, 0.045740616, 0.02221094, -0.012411996, 0.028084202, -0.036411777, 0.0012012102, -0.013126312, -0.011905259, 0.02925641, 0.04417767, 0.01749768, 0.016630732, 0.025617676, -0.0026115256, 0.015250943, -0.010824628, 0.033554517, 0.007497261, 0.020916624, -0.020049678, -0.0036570514, 0.026277045, -0.033701044, -0.006715787, 0.010720839, 0.013590312, 0.039830726, -0.008113892, 0.0018773678, -0.003354841, -0.05538693, 0.015727153, 0.017595362, -0.045325458, -0.029427359, 0.0044843145, 0.023468625, -0.034653462, -0.008126102, 0.04884209, 0.013407154, -0.0048781037, 0.023786098, -0.053921666, -0.006331156, 0.019085046, 0.0008722892, -0.0031045254, 0.002483315, 0.036680408, 0.0086084185, -0.026716623, -0.0028358938, -0.011111575, -0.06456924, 0.008901471, -0.041979775, 0.008419155, 0.002507736, 0.008443576, -0.04837809, 0.0061602085, 0.0067707347, 0.0013706312, -0.013675785, -0.00677684, 0.019829888, 0.037950303, 0.019060625, 0.011947996, 0.013956627, 0.041979775, 0.03269978, -0.0079795765, 0.001123368, -0.0013057628], [0.025811395, 0.012547205, -0.014119943, 0.012605027, 0.018618435, 0.015727373, -0.04917117, 0.01187648, 0.017751116, 0.0041949297, -0.025556982, 0.013252624, 0.002343205, -0.017785808, 0.018098043, 0.046788935, -0.006840251, -0.01937011, 0.0015423811, -0.0028375767, -0.038485806, -0.046511393, -0.02648212, 0.020873463, 0.03540972, 0.030830277, -0.017149774, 0.026458992, 0.015889272, -0.011234663, 0.04012793, 0.007054189, 0.043273404, 0.016363407, 0.025163796, -0.022330556, -0.00877148, 0.01125201, 0.047274634, -0.0121655855, -0.047552176, -0.040081672, 0.032981224, 0.009314999, 0.0023807888, -0.020098658, 0.015588602, -0.010563938, 0.06906167, -0.03781508, -0.013032904, -0.0075861444, -0.042325135, -0.020607485, -0.052316643, 0.0399429, 0.06665631, -0.019844243, 0.042070724, -0.01838715, -0.063464575, 0.018502792, 0.037005585, -0.0056809355, -0.02574201, -0.0061637424, -0.021023797, 0.007135139, 0.014744412, 0.09126502, -0.021787038, 0.0013501255, 0.014073686, -0.03261117, 0.023128489, -0.027962344, 0.020121787, 0.024007373, 0.015877709, -0.046950836, 0.017751116, -0.01430497, -0.005426522, 0.034415193, 0.035964802, -0.003211969, 0.05222413, -0.12332111, -0.050235078, 0.00593824, -0.028263014, 0.011084328, 0.047829717, -0.006134832, -0.031501003, -0.013368267, 0.013402959, 0.033490054, -0.027453518, 0.025371954, 0.00012232803, -0.038069494, -0.05513832, -0.047552176, 0.056433514, 0.031593516, 0.015692681, 0.0026250836, -0.010535027, -0.048754856, -0.018919105, -0.02740726, -0.05148402, 0.023602623, -0.0134607805, 0.064204685, -0.036057316, -0.029118769, -0.028841227, 0.012651284, -0.035317205, -0.053195525, 0.06896915, 0.021382289, 0.037791952, 0.01730011, -0.005672262, 0.0045967875, 0.039572846, -0.02860994, -0.019705473, 0.002460293, 0.017589217, 0.02250402, -0.0013400068, 0.025626367, 0.04653452, -0.024146143, -0.018236814, -0.0031686032, -0.03140849, 0.0024313824, -0.0092167035, 0.033466924, -0.0016681423, -0.02909564, 0.0038364383, -0.026898433, -0.049078654, -0.0410762, -0.019404802, -0.057682455, 0.0077133514, -0.01975173, 0.03471586, -0.013507038, 0.010905083, 0.050142564, 0.016525306, 0.033883236, 0.032241113, -0.02541821, 0.011841787, 0.022874076, 0.016201507, -0.051854074, -0.009898993, 0.003966536, -0.044429827, 0.02067687, 0.0013255515, 0.035039663, 0.024146143, -0.03309687, -0.010280614, 0.020688433, 0.022689048, -0.04135374, 0.006834469, -0.070958205, -0.04426793, 0.052594185, 0.021174133, -0.034345806, 0.013946479, 0.033929493, 0.009095279, 0.03492402, 0.031963572, -0.037283126, -0.002950328, 0.012628156, -0.028193628, -0.021995194, 0.029280668, 0.004299008, 0.022353685, -0.027245361, 0.01601648, 0.026112065, -0.00888134, -0.045840666, 0.03769944, -0.043389045, -0.038555194, 0.0064470666, 0.018086478, -0.008615362, 0.009627234, 0.06920044, 0.024886254, 0.056849826, -0.015542345, -0.020931283, -0.0043510473, -0.010112932, -0.04396726, -0.018479664, 0.0050651394, -0.00037150137, 0.0025181144, 0.0048049437, 0.010060893, 0.004197821, 0.013472346, 0.031154076, 0.0020006143, -0.01272067, 0.05467575, 0.0048945667, -0.033466924, -0.07877564, -0.017034132, 0.018641563, -0.09982256, -0.019404802, -0.013264189, -0.034022007, 0.0159124, -0.013391395, 0.052594185, 0.037283126, -0.019809552, 0.03094592, 0.057821225, 0.02465497, 0.057127368, 0.012986647, -0.006360335, 0.05879262, 0.030760892, -0.016721899, -0.0241924, 0.06656379, 0.009789133, 0.057404913, 0.017392624, -0.041446254, 0.000102994054, 0.039711617, -0.023984244, 0.017022569, 0.0043973043, -0.009182011, 0.011911172, 0.004446452, 0.008048714, -0.0016059845, -0.04898614, -0.063973404, 0.057867482, -0.021914244, 0.05083642, 0.053611837, 0.017138211, 0.001050178, 0.050975192, 0.04257955, 0.01585458, 0.027314747, 0.029326925, 0.030737763, 0.029535081, 0.050743908, 0.005484343, 0.019312289, 0.054490723, -0.038000107, 0.0014527582, 0.033166256, 0.012292792, 0.01272067, 0.077989265, -0.00792729, -0.0025369062, -0.019474188, 0.033605695, 0.028517427, -0.03931843, 0.028540555, -0.023776088, -0.028239885, -0.06702636, -0.011113239, 0.074612506, 0.07882189, 0.02803173, 0.09501184, 0.038855862, -0.011558463, 0.069755524, 0.01874564, -0.0037497063, -0.04715899, 0.034669604, -0.032934967, -0.020179607, 0.023914859, 0.06383463, -0.023498546, -0.00050701987, -0.021255082, -0.042001337, 0.049633738, 0.054907035, -0.00014039715, -0.011286703, -0.010939776, 0.018560613, 0.011171061, -0.040821783, 0.0031396924, 0.03494715, 0.033212513, -0.015750501, -0.05897765, -0.027453518, -0.0679515, 0.040035415, -0.01776268, 0.0040445947, 0.018051786, -0.017415753, -0.07239217, -0.011090111, -0.053658094, -0.047829717, 0.011009161, 0.0016348951, 0.0183062, 0.0013298881, 0.010193882, 0.02364888, 0.012917262, -0.025834523, 0.035872288, -0.006285167, -0.028933741, 0.0034866198, 0.024007373, 0.06910793, -0.04012793, 0.010026201, 0.061197985, 0.0759077, -0.042371392, 0.0010949895, -0.004076396, 0.025302568, 0.044614855, -0.045539998, -0.00956363, -0.029326925, 0.012986647, -0.04621072, -0.005432304, 0.04884737, 0.008904468, -0.06781273, 0.03582603, 0.019416368, -0.049032398, -0.044823013, -0.0072507816, 0.01076053, 0.00514898, -0.0603191, 0.021070054, 0.034854636, 0.0015178071, -0.0050246646, -0.05018882, 0.05264044, 0.011830223, 0.010662233, 0.0023981354, -0.013541731, 0.06869161, 0.004301899, 0.036936197, 0.0241924, 0.00086948666, -0.049541224, -0.035317205, 0.07637027, -0.031755418, 0.00066133024, 0.003816201, -0.0071293567, 0.030367706, -0.005166326, 0.028401785, -0.007088882, 0.0063545527, 0.021706088, -0.018930668, 0.05190033, 0.012743798, 0.020029273, 0.008337821, 0.02465497, -0.041446254, -0.04452234, 0.068044014, -0.03305061, 0.00026796522, -0.01661782, 0.017924579, 0.03626547, -0.04244078, 0.020156479, -0.02588078, -0.026690276, -0.011431256, -0.025603238, -0.044776756, -0.037329383, -0.04715899, -0.022550277, 0.045054298, 0.014351228, -0.07516759, 0.013819273, 0.034970276, -0.047413405, 0.0048830025, -0.017947707, 0.017832065, -0.014397485, -0.020792512, 0.018919105, -0.0010696927, -0.028910613, -0.029928265, -0.02710659, -0.017716423, -0.013217932, 0.07248469, 0.037606925, -0.07132826, 0.0003496377, -0.015577038, 0.04958748, -0.01806335, 0.015056646, -0.029905137, -0.05865385, 0.008251089, 0.027175976, 0.036959328, -0.022446198, 0.008927597, -0.054953292, 0.00019279764, 0.018722512, -0.072207145, -0.014964133, -0.01945106, -0.004197821, 0.047274634, -0.02067687, 0.006053882, -0.0045187287, 0.04567877, 0.008511284, -0.011367653, 0.051252734, 0.014675027, 0.059023906, -0.009893212, -0.029511953, 0.015588602, -0.022318993, -0.0039029326, 0.016421227, -0.0005977269, 0.00880039, 0.0077133514, -0.0049928627, -0.039549716, 0.055323347, 0.07327106, 0.019612959, 0.05296424, 0.057497427, -0.029442567, 0.0032900276, -0.056849826, 0.01953201, 0.002481976, 0.026551506, -0.025811395, -0.045100555, -0.0035617873, -0.015577038, -0.030321449, -0.019728601, 0.014998825, 0.02847117, -0.021752344, 0.0035039661, -0.032102343, -0.0241924, -0.014339663, -0.009176228, -0.025765138, 0.033143125, -0.018375585, -0.00024122292, 0.00193412, -0.005626005, -0.020225864, 0.016721899, -0.0028664873, -0.011812876, 0.01070849, 0.0011535335, -0.020341506, 0.015276368, -0.03890212, -0.004186257, 0.02152106, 0.02726849, -0.027638545, 0.0018459426, 0.048801113, 0.08987731, -0.0030385053, -0.033628825, 0.00994525, -0.03906402, 0.06508357, 0.053843122, 0.023984244, 0.02111631, -0.010639105, -0.044198543, -0.020711562, -0.03383698, -0.008748352, 0.0040388126, 0.020630613, 0.07331731, -0.011622066, -0.01691849, -0.04318089, 0.0046835192, 0.022874076, 0.00048642105, 0.005568184, 0.008401424, 0.031917315, 0.004868547, -0.026597762, -0.016178379, 0.0768791, 0.036381114, -0.05546212, 0.007979329, -0.008956508, -0.009702401, -0.04146938, -0.029835751, -0.038647708, 0.019346982, -0.0011036627, -0.003587807, -0.0017808937, -0.054722007, -0.03323564, 0.008482373, -0.030182678, 0.009569413, -0.045424353, 0.0075398874, -0.013923351, 0.019936757, 0.035895415, 0.04183944, -0.0039000416, -0.039896645, -0.046488263, -0.020237429, 0.011124804, -0.026204579, 0.0051171784, 0.013518603, -0.029835751, 0.046650164, 0.012547205, -0.08576044, -0.009349692, 0.016583128, 0.0005015991, 0.025834523, -0.016270893, 0.0057936865, 0.058237538, 0.019312289, 0.023140054, 0.068044014, 0.015322625, 0.059902787, -0.03274994, 0.04396726, 0.00972553, -0.017693294, 0.0064991056, 0.0064470666, -0.029789494, -0.028054858, -0.026250836, -0.019404802, -0.06415843, -0.02740726, -0.0014599859, 0.007140921, -0.0016941619, -0.024469942, 0.02618145, 0.042510163, 0.036866814, -0.002713261, 0.024562456, -0.028841227, -0.014351228, -0.0012352059, 0.016386535, 0.04824603, 0.012327485, -0.034993406, 0.01983268, -0.023672009, 0.049541224, 0.02509441, -0.015519217, 0.037560668, 0.007308603, -0.035016533, -0.011685669, -0.0075341053, -0.017820502, -0.0053773737, 0.051807817, 0.02007553, -0.005276187, -0.02043402, -0.025927037, -0.0094884625, 0.01983268, 0.04581754, -0.03217173, -0.080903456, -0.029234411, 0.029419439, -0.038624577, 0.024400556, 0.023290388, -0.050281335, -0.023822345, -0.025186924, -0.046997093, -0.018757205, 0.013217932, 0.0032235333, -0.0067014797, 0.018248377, 0.020792512, -0.011616284, -0.038855862, 0.00514898, -0.06984804, -0.023498546, 0.029049383, 0.011269356, 0.0010060893, 0.0011419692, -0.02847117, 3.1417705e-05, -0.014281842, 0.0067650834, -0.022330556, -0.014073686, 0.03337441, 0.034045137, 0.019069439, -0.0009186347, 0.01854905, -0.03140849, -0.07063441, 0.04519307, -0.0026352024, 0.048014745, 0.060411613, 0.03538659, 0.031454746, -0.041307483, 0.0018473881, -0.046627034, 0.050928935, 0.029465696, 0.014489999, -0.031107819, 0.01484849, 0.027916087, -0.033490054, 0.0625857, -0.0062215636, 0.03168603, 0.005053575, 0.0027392805, -0.00088972406, 0.0026814593, -0.011165278, -0.008077625, -0.031871058, -0.017878322, -0.0058948738, 0.010610195, 0.0283324, 0.014755976, -0.053889383, -0.017392624, -0.04704335, -0.0025556982, -0.03413765, 0.02067687, -0.03950346, 0.02326726, -0.031269718, 0.0010089803, -0.03538659, 0.0046025696, -0.029882008, 0.04028983, 0.060041558, 0.008424552, -0.021844858, -0.030853406, -0.025927037, 0.0073953345, 0.017924579, -0.015345753, -0.018861283, 0.004666173, 0.014836926, -0.025834523, -0.053843122, 0.015102903, 0.02144011, 0.015796758, 0.06836782, 0.023937987, 0.014073686, 0.0084187705, 0.032541785, -0.010997597, 0.03372134, -0.03291184, -0.018317765, 0.0026496577, 0.000840576, 0.008256871, -0.03721374, 0.031107819, 0.0015539454, 0.0055306, -0.041770052, -0.020607485, 0.009858519, 0.010477206, 0.007748044, 0.031223461, -0.004770251, 0.031038433, -0.04470737, -0.0019052094, -0.036820557, 0.053010497, -0.012836312, -0.0018025767, -0.04535497, -0.016432792, 0.036357984, -0.028725585, -0.04301899, -0.0045707677, -0.018121172, 0.005521927, 0.015253239, -0.03871709, 0.021787038, -0.012732234, 0.0037728348, -0.012385306, 0.019462625, -0.013194803, -0.0033449577, -0.017415753, 0.013287317, -0.014570949, -0.0009779015, -0.027661674, 0.016178379, 0.011442821, 0.05088268, -0.03413765, 0.03094592, -0.040382344, 0.01070849, -0.05037385, -0.02574201, -0.023914859, 0.011402345, 0.0069616754, 0.04318089, 0.024978768, 0.05546212, 0.01953201, 0.011755055, 0.006614748, 0.0010863162, -0.009800698, 0.013056032, -0.030252064, 0.021636702, -0.017346367, 0.001509134, 0.0086905295, 0.045725025, 0.0005623114, 0.021301338, -0.0019818225, -0.025186924, 0.0026135193, -0.051206477, 0.0064933235, -0.0034374718, -0.016039608, -0.0062678205, 0.030367706, -0.0044580163, 0.042741448, -0.07109698, -0.009771787, 0.024261786, -0.0011253456, -0.04764469, -0.01601648, -0.0065453625, -0.0181443, -0.042857092, 0.002953219, 0.02696782, -0.008511284, -0.027083462, 0.044915527, 0.031963572, -0.004264315, -0.005996061, 0.019786423, 0.0045187287, -0.026366478, 0.0034374718, 0.0049812985, -0.017091954, 0.0033189382, 0.0052530584, -0.013773016, -0.013992736, -0.0064817593, -0.020908155, 0.047737204, 0.022041451, 0.022874076, 0.038855862, 0.0015250348, 0.004024357, -0.0066956975, 0.0030934354, 0.0027465082, -0.00027230184, 0.00506803, 0.004911913, -0.014883183, -0.027152847, -0.011448602, -0.02127821, -0.03048335, -0.030228935, 0.001207018, 0.033027485, 0.039595973, -0.0021234844, -0.019659216, 0.0140621215, -0.021243518, 0.030899663, 0.023799216, -0.03291184, 0.03337441, 0.0055595106, 0.04593318, 0.017022569, -0.0219605, 0.005634678, 0.007216089, 0.023533238, 0.013391395, -0.03832391, 0.031477876, 0.022087708, 0.036219213, -0.00064000866, -0.020757819, -0.004374176, 0.026944691, 0.002187088, -0.038000107, -0.026620891, 0.04410603, 0.10454077, -0.040474858, -0.022769999, 0.021497931, -0.07303977, -0.045910053, 0.0018488336, -0.00042354048, 0.024978768, -0.025210055, 0.030228935, -0.03170916, 0.009083714, 0.019601395, 0.019312289, -0.0024039175, 0.020318378, 0.0032726813, -0.020723127, -0.014813798, -0.020827204, -0.021636702, 0.014871619, 0.03566413, 0.028748713, 0.014941004, -0.03554849, 0.036959328, 0.038347036, 0.008320474, 0.020063965, 0.022654356, 0.0022579187, 0.011269356, -0.009731312, -0.02969698, -0.00088611024, -0.03749128, -0.0102401385, -0.0006067615, -0.05897765, 0.011159496, 0.015935529, 0.0095925415, -0.025371954, -0.03411452, 0.03217173, 0.009956814, -0.03291184, 0.02226117, -0.049679995, -0.012593462, -0.0018719621, -0.00013407297, -0.008742569, 0.02863307, -7.3496194e-05, 0.038624577, -0.030043907, -0.022029886, 0.017438881, -0.037283126, 0.0010198219, -0.03857832, 0.056341, -0.007643966, 0.0058341613, -0.05647977, -0.016502177, 0.018109607, 0.001093544, 0.0031772763, 0.010546591, 0.03823139, -0.00062193954, 0.003920279, -0.030853406, 0.016282456, 0.107778765, 0.010673798, -0.021740781, 0.027222233, 0.0026164104], [0.0024158962, 0.027760409, -0.026135877, 0.03034055, 0.02185953, 0.03891713, -0.033494055, 0.06388239, 0.0012333315, 0.019757193, -0.044101305, -0.01618561, -0.006187561, -0.00602033, -0.022241775, 0.04945271, -0.013545742, 0.013593523, -0.03122449, -0.0631179, -0.0086721415, -0.05437409, -0.071861714, -0.00096680643, 0.01330684, -0.024021594, -0.015253891, 0.0022262677, -0.0109536555, 0.015946707, 0.06942491, 0.021608684, 0.06039442, -0.051746167, 0.00901855, -0.043145698, 0.010625165, 0.022492621, -0.059868835, -0.02429633, -0.05681089, 0.04092391, 0.0013751795, -0.010780452, -0.008684087, -0.03019721, 0.018049045, -0.032227878, 0.015409177, -0.043814622, -0.03722093, 0.005826222, 0.009998048, -0.0020396255, -0.026709242, -0.013880204, 0.044244647, -0.0013079883, 0.07257842, -0.036743123, 0.030722795, 0.009179808, 0.03624143, -0.023460174, -0.0069281575, 0.009621778, -0.012793201, 0.052176192, 0.0125065185, 0.01567197, -0.02293459, 0.03662367, -0.0007726986, -0.028668238, -0.0011265721, -0.042715672, 0.01122242, 0.028692128, -0.03246678, 0.023949923, 0.021632574, -0.034760237, 0.04152116, 0.008397404, 0.04969161, -0.016794808, 0.05470855, -0.117061965, -0.04331293, 0.014274393, 0.019112159, 0.013414346, 0.012028715, 0.00848102, -0.006438408, 0.013474071, 0.008994659, 0.013581578, -0.028739909, 0.029791076, -0.012757366, -0.045009132, -0.038558777, -0.044292428, 0.0277843, 0.014764142, 0.02773652, 0.0026219492, -0.012231781, -0.008277954, 0.029767185, -0.0005147591, -0.036814794, 0.034449667, -0.02654201, 0.078789875, -0.08285121, -0.035357494, -0.013450181, -0.025705853, -0.062066734, 0.0011101476, 0.06479022, -0.008039052, -0.027497618, 0.012829036, 0.015516683, 0.08113111, -0.005903865, 0.02549084, -0.03134394, 0.020808361, 0.008606444, -0.0007398496, 0.0867692, 0.024750244, 0.028381554, 0.002021708, -0.0014655143, 0.014154942, -0.04969161, -0.008056969, -0.03743594, 0.024093265, -0.058292083, -0.00543502, -0.024284385, 0.00817642, -0.02897881, -0.04448355, 0.0005886694, -0.028405445, -0.029289382, -0.006229369, 0.060920004, -0.040446106, 0.023245161, 0.01939884, -0.008050997, 0.047756504, 0.0302211, -0.060920004, 0.04223787, 0.026231438, -0.010852123, -0.0748241, 0.044507436, 0.027449837, -0.059343252, 0.031033367, 0.044005744, -0.054851893, -0.0010653535, 0.010726699, -0.046490323, -0.0048885318, 0.04945271, 0.0017290531, -0.0066653653, -0.057766497, -0.04837765, 0.023149602, 0.05437409, -0.015289727, -0.0110790795, 0.031917304, 0.047780395, 0.0008010682, 0.010314593, -0.068230405, 0.0073522083, -0.0032580257, 0.012148165, -0.017224833, -0.005279734, -0.041425604, -1.7229406e-05, -0.03392408, -0.03347017, 0.00751944, 0.00014772727, -0.05795762, -0.024678575, -0.004610808, 0.006438408, 0.013390455, 0.026995923, -0.01567197, 0.0016469305, -0.02537139, 0.008809511, 0.0037268708, -0.014979154, -0.011945099, -0.0056649633, 0.052367315, -0.049930513, 0.029432723, -0.0077045886, -0.06708367, 0.029886637, -0.04749371, 0.047708724, -0.022731524, 0.0115688285, 0.038941022, 0.02356768, 0.034258544, 0.022158159, -0.020103602, 0.01571975, -0.07066721, -0.048019297, 0.0316784, -0.056667548, -0.045678057, -0.04116281, -0.0046376847, 0.03626532, 0.01637673, 0.004870614, 0.023448229, -0.0235199, -0.020951703, 0.054421872, 0.010643083, -0.0121003855, 0.057384256, 0.011043244, 0.045773618, -0.0029623846, -0.0031027393, 0.047302593, -0.0073462357, -0.036647562, 0.03136783, 0.0065578595, -0.015409177, 0.0051334063, 0.047326483, -0.033231266, -0.004261414, -0.021011429, 0.11075496, -0.010230977, 0.017272612, 0.02764096, -0.048855454, -0.0553297, -0.051125024, 0.0065936944, -0.005530581, -0.0115688285, 0.04099558, 0.045439158, -0.018956872, 0.028357664, 0.00754333, -0.0152777815, 0.029552175, -0.01915994, 0.03390019, 0.00751944, 0.011885373, 0.055186357, 0.048927125, 0.012399012, -0.07128835, -0.060012177, 0.006922185, -0.008690059, -0.0052468847, 0.040422216, 0.026135877, 0.01698593, -0.03621754, -0.016591743, -0.007620973, -0.08509688, -0.00726262, -0.030388331, 0.0033864356, -0.06015552, -0.040207203, -0.015373342, -0.015349452, 0.020055821, 0.12097996, -0.014871648, -0.046108082, 0.09040051, -0.0049452707, -0.027378166, -0.04376684, 0.03626532, 0.0019858726, 0.02658979, 0.041353934, 0.08519244, -0.029337162, 0.012769311, -0.015552519, -0.10693253, 0.023806581, 0.019410785, -0.009902487, -0.0053842533, -0.04149727, -0.014513295, 0.040374435, -0.071049444, 0.004019526, -0.0074836044, -0.022026762, -0.025968645, -0.08199116, -0.041712284, 0.0018126688, 0.051268365, 0.010242922, -0.00033744905, 0.008958824, -0.011777868, -0.035214152, -0.04443577, -0.039657727, -0.016591743, -0.0050348593, 0.066701435, 0.0005886694, 0.0015177741, 0.039609946, 0.045080803, 0.014190777, -0.020844197, -0.004097169, -0.030531673, -0.08562247, -0.00025066044, 0.007818067, 0.065936945, -0.078981, -0.012530409, 0.074202955, 0.0068325964, -0.03153506, -0.026995923, -0.02429633, -0.012637914, 0.000388589, -0.03726871, 0.04713536, -0.04324126, -0.0005140125, -0.011383679, -0.0072865104, 0.016388675, -0.03495136, -0.017200943, -0.00960386, -0.05542526, -0.012375122, 0.028668238, 0.021429507, -0.0034043533, 0.01569586, -0.03397186, -0.025084708, 0.016173664, 0.0026876472, 0.006522024, 0.0097770635, -0.016830644, -0.027139265, 0.059677713, 0.04348016, -0.03401964, 0.035238042, 0.022193994, 0.011085052, 0.00606811, -0.021823695, -0.012685695, -0.0076388908, 0.040302765, -0.011574801, -0.030722795, -0.028572677, 0.014823868, 0.06178005, -0.02541917, 0.03136783, -0.030842245, 0.017033711, 0.023257107, -0.015743641, -0.017869867, 0.03946661, 0.014967209, -0.0005535807, 0.012279562, -0.04864044, -0.013486017, 0.02408132, -0.037937634, 0.040517773, -0.016245335, 0.024117155, -0.0031236433, -0.0072028944, -0.024989147, -0.008015161, 0.04959605, 0.008976742, -0.009239534, -0.06321346, -0.03029277, -0.039299376, 0.04223787, 0.03865434, 0.0024636767, -0.0064563258, 0.013497962, 0.02103532, -0.06574582, 0.023699077, -0.039538275, 0.04969161, 0.041473385, -0.008415322, -0.028787687, -0.026159767, -0.034282435, -0.018168496, 0.038558777, -0.022803193, -0.018550739, 0.041760065, 0.06851709, -0.06307012, 0.04003997, 0.04097169, 0.059916615, -0.043145698, 0.019506346, 0.017284557, -0.024379946, 0.02298237, -0.010463906, 0.0009249986, 0.038104866, 0.0022621031, -0.00850491, 0.012399012, -0.0033237238, -0.018849365, -0.03249067, 0.00069057604, 0.040780567, -0.0399683, -0.0043151667, -0.023937978, 0.0019679551, 0.04257233, 0.012948487, -0.008654224, -0.003511859, 0.021214496, 0.05795762, 0.03270568, -0.0023218286, 0.020891977, -0.006283122, -0.018216277, -0.010881985, -0.016854534, -0.06856487, -0.05074278, 0.010105554, -0.032275658, 0.014931373, 0.04121059, 0.0053454316, -0.00054910127, -0.015206111, 0.012817091, -0.023292942, 0.013545742, 0.024045484, -0.05098168, 0.029599955, -0.011061162, 0.005190145, -0.022528457, -0.010505714, 0.0041957158, 0.00034622123, 0.028787687, 0.022922644, -0.011986907, 0.0010586344, -0.027091485, -0.024726355, -0.024559123, -0.0277843, 0.02520416, -0.0022859932, -0.020927813, 0.0017260668, -0.0014617814, -0.014895538, -0.019757193, -0.007907655, 0.014226613, 0.0045391377, -0.039347157, 0.0030026992, 0.020294722, -0.007835985, 0.014310229, -0.032968473, 0.07324734, 0.039108254, -0.0031833688, 0.004001608, 0.0162095, 0.053944066, -0.010177224, -0.01991248, 0.035261933, -0.045701947, 0.041831736, -0.011777868, 0.018980762, 0.013438236, -0.0035805434, -0.0328968, -0.06569804, 0.0039508413, -0.0072267847, 0.0029190835, 0.03151117, 0.07606639, 0.018586574, -0.03609809, -0.040708896, 0.03848711, 0.034855798, -0.051507264, 0.021047264, -0.0038075002, 0.04104336, -0.002424855, -0.00187986, -0.033494055, 0.06268788, 0.0046018492, -0.023854362, -0.01447746, -0.021847585, -0.019697469, -0.01391604, -0.00637271, -0.042022858, 0.005820249, -0.026900362, -0.018634355, -0.08949268, -0.03662367, -0.011915236, -0.039514385, 0.025634183, -0.019386895, -0.023209328, -0.0035775572, 0.032060646, 0.0014386378, 0.001196003, 0.010123471, -0.016758973, -0.0004893758, 0.009060358, 0.009167863, -0.01932717, -0.033589616, -0.0035029002, 0.029671626, -0.03287291, 0.01386826, 0.028763797, -0.087772585, -0.0051154885, 0.018491013, -0.004879573, 0.015301672, -0.02293459, -0.022659853, 0.05461299, -0.008707977, 0.047708724, 0.054947454, 0.0043748925, 0.0265659, -0.014895538, 0.013521852, 0.038200427, -0.009789009, -0.00693413, -0.015898926, 0.004431632, -0.015779475, -0.037101477, -0.026255326, -0.020772526, 0.019613853, -0.0006599667, 0.009562052, 0.057384256, -0.039036583, 0.04104336, 0.028142653, 0.041998968, 0.015337507, 0.087247, -0.03017332, -0.011753977, 0.01180773, 0.026661461, 0.052940678, 0.0114015965, -0.008588526, 0.04465078, 0.038295988, 0.0509339, 0.020294722, -0.0180371, 0.007184977, 0.03507081, -0.007143169, -0.0051782005, -0.027521508, -0.032108426, 0.029743295, 0.00630104, -0.003804514, -0.025753632, 0.018276, 0.012339287, -0.0061129043, 0.054947454, 0.06608029, -0.03511859, -0.03987274, -0.026709242, -0.01942273, -0.025801413, -0.0025024982, 0.039251596, -0.017690692, -0.033494055, -0.006641475, -0.05184173, -0.0065459143, -0.011204503, -0.031941194, -0.021047264, -0.022564292, -0.01450135, -0.041282263, -0.015074715, 0.0070356634, -0.01581531, -0.025705853, 0.044125196, -0.0037985414, 0.0013617412, 0.030794464, -0.030770574, 0.013927985, -0.018801585, -0.006940102, -0.008964797, -0.007477632, -0.02056946, 0.023221273, 0.020581406, 0.0019321197, -0.014107162, -0.06760926, -0.032108426, 0.036719233, -0.0030698904, 0.017595131, 0.05074278, 0.061254468, 0.00404043, 0.0050497907, 0.022002872, -0.053848505, 0.028692128, 0.008594499, 0.027617069, 0.015600299, -0.03886935, 0.018586574, -0.033087924, 0.04852099, -0.00901855, 0.028070983, -0.015922816, 0.036671452, -0.023866307, 0.011067134, 0.021118935, 0.0079196, 0.020748636, 0.0047362316, 0.013760754, 0.028644348, -0.0031355885, 0.00046623213, -0.059773274, -0.0026279218, -0.022409005, 0.006330902, -0.017750416, 0.031988975, -0.011544938, 0.00172756, 0.0097770635, -0.020390283, 0.011574801, 0.047732614, -0.03170229, 0.005706771, 0.014656636, 0.027306495, -0.046538103, -0.011556883, -0.010935738, -0.015994487, -0.015206111, 0.002511457, -0.012124275, 0.01883742, 0.008946879, -0.026159767, 0.0034969277, 0.01867019, 0.028429335, 0.0023651295, 0.035715844, 0.027067594, 0.0063966005, -0.016603688, -0.017535405, 0.0277843, -0.020700857, -0.009621778, 0.01754735, -0.006283122, 0.005369322, 0.025825303, -0.013462126, 0.0049094358, 0.018347671, 0.0071371966, -0.028309884, 0.0338763, 0.01515833, 0.017929593, -0.010278758, 0.051316146, 0.012554299, 0.059725493, -0.026828691, 0.041664504, -0.026111986, 0.034808017, -0.0034372022, 0.02164452, -0.035883076, 0.008564636, 0.008331707, -0.0009227589, -0.029265491, 0.0013064952, -0.017559296, -0.029432723, 0.007853903, 0.009842762, -0.013545742, -0.020676967, 0.056237526, -0.00048079022, 0.01150313, -0.012267617, -0.017822087, -0.0037447885, -0.006510079, -0.0019948315, -0.042906795, 0.0018111756, -0.00078837655, 0.017714582, 0.03136783, 0.039609946, -0.02056946, -0.0062233964, -0.03614587, -0.032180097, 0.00029844083, -0.04713536, 0.029695516, 0.051363926, 0.03843933, -0.02783208, 0.026948143, 0.033231266, 0.039227705, 0.026135877, 0.001564808, -0.018455178, -0.009615805, -0.052701775, 0.031463392, -0.007447769, -0.007913628, 0.023507955, 0.03249067, 0.06498134, 0.02649423, 0.0042464826, 0.011753977, 0.0053782808, -0.008355597, -0.08715144, 0.0025876071, -0.03275346, 0.0024621836, 0.029265491, 0.040087752, 0.024750244, -0.04374295, -0.006121863, -0.011306036, -0.010923793, -0.03662367, -0.008033079, -0.05542526, -0.028739909, 0.009024522, 0.009800954, 0.017177053, 0.030507782, -0.024965256, -0.045678057, -0.017595131, 0.029313272, -0.015528629, 0.016747028, 0.023065986, -0.032562338, -0.0052767475, 0.012279562, -0.04226176, -0.010201114, -0.03172618, -0.025658073, 0.00939482, 0.0044614943, 0.014489405, 0.0032520532, 0.023663241, 0.04003997, 0.020330558, -0.03841544, 0.014322174, -0.024403837, 0.021608684, 0.011718142, 0.004270373, -0.013115719, -0.051793948, -0.010248895, -0.01825211, 0.015385287, 0.014513295, 0.0038075002, -0.014835813, 0.01749957, 0.008385459, 0.040111642, -0.025610292, 0.045104694, -0.011556883, -0.04448355, -0.016950095, 0.0034969277, -0.021632574, 0.034282435, 0.029886637, -0.01586309, 0.05786206, -0.0043629473, 0.021572849, -0.025753632, 0.020605296, -0.0050348593, -0.042452883, -0.010971573, 0.04345627, 0.019482456, 0.00069057604, -0.03272957, -0.009072303, -0.023926033, 0.0021381727, -0.013677138, -0.030029979, 0.061158907, 0.07468076, -0.028405445, 0.014919428, -0.019470511, -0.05810096, -0.020748636, 0.023687132, 0.029528284, 0.000896629, -0.0062353415, 0.034258544, 0.000429277, -0.00087049906, 0.013235169, 0.005488773, -0.0016708208, 0.03652811, 0.026207548, 0.027545398, -6.7774436e-06, 0.016902314, 0.00469741, -0.004330098, 0.056285307, -0.038104866, 0.040852237, -0.02764096, -0.01988859, -0.0015812324, -0.03282513, -0.0059158104, 0.02546695, 0.017332338, 0.0045719864, 0.031797852, -0.0053752945, -0.006892322, -0.023018206, 0.033637397, 0.014943318, -0.05451743, 0.007435824, -0.028739909, -0.011252283, -0.025180269, -0.011861484, 0.045391377, 0.035333604, 0.002739907, 0.050121635, -0.006940102, 0.021286165, 0.003849308, -0.020927813, 0.011509103, -0.019649688, -0.022552347, -0.020211108, -0.036838684, -9.5140844e-05, -0.03284902, -0.021931201, 0.014991099, -0.043145698, 0.039036583, -0.01274542, 0.0377704, -0.03946661, -0.019721359, -0.0076926434, 0.013091829, -0.020880032, -0.034569114, 0.0037029807, 0.036982026, 0.030698905, -0.007489577, 0.027139265, 0.050599437, -0.014584966, 0.006032275, 0.0015095619, 0.006880377], [0.02884056, 0.00687363, -0.026369143, 0.031488508, -0.034555715, 0.07131805, -0.045544695, 0.027009062, 0.02919362, 0.02972321, 0.019616878, -0.013052174, -0.0029430832, -0.030274864, 0.0043498054, 0.029480482, -0.03773325, 0.023941858, -0.031311978, 0.006823981, 0.005450358, -0.08120372, -0.061961967, -0.016979963, 0.0029044673, -0.0068901796, -0.008931306, 0.016626904, 0.010387677, 0.0058089346, -0.009433312, 0.028752295, 0.01240122, 0.029701144, 0.010624889, -0.016020082, -0.0018177056, 0.02462591, -0.026479473, -0.0046146, -0.042146496, 0.049119424, 0.02866403, -0.021900732, 0.020720188, -0.005902716, -0.034555715, -0.055253834, 0.001624626, -0.0009784993, -0.011992995, -0.039233755, 0.013736227, -0.03140024, -0.0030837555, -0.008131405, 0.043669067, -0.087382264, 0.039057225, -0.020896718, -0.04084459, 0.015049168, 0.028575765, -0.05931402, -0.022529619, 0.0418155, -0.038637966, -0.021404242, 0.055783425, 0.0350853, -0.014111353, -0.00031909836, -0.038064245, -0.010376643, 0.0129859755, -0.102652095, 0.105035245, -0.014475445, -0.027693117, 0.007673531, 0.010067716, -0.029612878, -0.03265802, -0.026435342, 0.024559712, -0.02533203, 0.0420141, -0.09947456, -0.036210682, -0.00092264416, -0.026457408, -0.020863619, 0.043845594, 0.023434334, -0.062138498, 0.036365144, 0.010525591, 0.04708933, 0.001614972, 0.016748266, -0.023941858, -0.07740833, 0.00014670593, -0.09347254, 0.06527191, 0.028509567, 0.020179566, 0.018601831, -0.038042177, -0.015490492, 0.047354124, -0.019396214, -0.043955926, 0.034312986, -0.023500534, 0.048722234, -0.0026810467, -0.053047214, -0.029326018, 0.016075248, -0.040800456, 0.009256783, 0.060593862, 0.060593862, -0.0054806992, 0.0014005159, 0.004427037, 0.0051938384, 0.020179566, -0.02908329, -0.031157514, 0.057725254, 0.037755318, 0.04428692, 0.04673627, 0.003100305, 0.087823585, -0.020841552, -0.06558083, -0.014188585, -0.023324003, 0.0105476575, 0.016924797, 0.035239767, -0.0023155748, 0.012721181, -0.01004565, -0.02731799, -0.034886707, -0.0049373186, -0.03468811, -0.049384218, -0.013239737, 0.020709155, 0.033606865, -0.01594285, 0.028509567, 0.05066406, -0.02912742, 0.038174573, 0.05300308, -0.046206683, -0.030473461, 0.044022124, 0.017862612, -0.040513594, 0.066242814, -0.019892706, -0.023765327, 0.02246342, -0.0130963065, -0.0036492024, 0.04340427, -0.015347062, -0.004625633, 0.00823622, 0.037799448, -0.034379184, -0.037931845, -0.09550264, -0.020289896, 0.06686067, 0.035416298, -0.020874651, 0.08804425, 0.0686701, 0.004733206, 0.012743247, 0.048413303, -0.05159084, -0.026633937, 0.030098336, 0.0067853653, -0.012511551, -0.021338042, 0.005935815, -0.0028093066, -0.016814467, -0.010437326, 0.003138921, -0.0013701748, -0.023125406, 0.010531107, -0.03241529, 0.003031348, 0.023941858, 0.038991027, 0.011783366, 0.055033173, -0.0072322064, 0.031709168, 0.030561727, 0.0062668086, -0.026280878, 0.0065702195, -0.0068074316, -0.02937015, 0.03184157, -0.05247349, -0.022838546, 0.013780359, 0.02462591, 0.003674027, -0.023412269, -0.0032851098, 0.007910742, 0.009863604, 0.022838546, 0.044948906, 0.06911143, 0.004860087, -0.039299954, -0.039454415, 0.021735234, -0.06721373, -0.029303951, -0.040712193, 0.003417507, 0.011226194, -0.010393194, 0.04258782, 0.04991381, -0.031929832, -0.01140824, 0.03486464, 0.022926811, 0.045059238, 0.019672042, 0.0013798288, -0.0042036166, 0.03234909, -0.03036313, 0.003643686, 0.059755348, 0.004347047, 0.07802618, 0.036806468, -0.009836021, 0.0053731264, 0.023103341, -0.012456385, 0.049472485, 0.01853563, 0.05785765, 0.0066088354, -0.015523591, 0.0047994046, -0.014861605, -0.030870654, 0.014795406, 0.035725225, -0.05119365, 0.054680113, 0.0058696168, 0.03892483, -0.0003699541, 0.04234509, 0.029679077, -0.02504517, 0.03486464, 0.020940851, 0.03391579, 0.035283897, 0.041727237, -0.0046725236, -0.011143445, 0.012191591, -0.030583791, 0.008164505, 0.01144134, -0.018999023, -1.9297175e-05, 0.057416327, -0.002374878, 0.07648154, -0.019969936, 0.015457393, 0.039586812, -0.039961938, -0.0025472702, 0.027979977, -0.033099342, -0.004366355, -0.022275858, 0.00065060897, 0.028730229, 0.042521622, 0.04294088, -0.0036133449, -0.05441532, 0.05891683, 0.015358095, -0.008445849, -0.053223744, 0.0012177799, -0.034467448, 0.008423783, 0.0353501, 0.053267874, -0.03707126, -0.0351515, -0.052782416, -0.07498104, 0.058607902, 0.014320982, 0.01360383, 0.0044132457, -0.027185593, -0.008241736, -0.007287372, -0.006327491, -0.041859634, 0.00528762, 0.015236731, -0.053973995, -0.066904806, -0.015678056, -0.05825484, -0.006338524, -0.008572729, -0.02462591, 0.001515674, -0.061873704, -0.022551686, -0.0030341065, -0.020080268, -0.034246787, 0.01913142, -0.008754776, 0.02820064, 0.0012184696, -0.015280863, 0.05459185, 0.0078004114, 0.0042642984, 0.008826491, 0.002823098, -0.025133435, -0.031929832, 0.046868667, 0.043647, -0.07745246, 0.0058971993, 0.026369143, 0.046383213, -0.010122882, -0.027053196, -0.009499512, 0.005102815, -0.0004151209, -0.048457436, 0.062668085, -0.022452388, -0.03323174, -0.015810452, 0.009262299, 0.042036165, -0.013019075, -0.02919362, 0.021988997, 0.024714176, -0.027229726, -0.01007875, 0.007138425, 0.01257775, 0.009339531, -0.0130963065, -0.03270215, -0.0009674662, 0.008666511, -0.010729703, 0.011110346, -0.029988004, -0.009207134, 0.034114387, 0.017244758, -0.01647244, 0.013173538, 0.019694109, 0.026280878, 0.0058641, -0.014111353, -0.049207687, -0.021933831, 0.026104348, -0.027582785, 0.01140824, -0.0200913, -0.021062214, 0.026633937, -0.023699129, 0.032635953, -0.015446359, 0.016704135, 0.034026124, 0.03490877, -0.0153139625, 0.08332208, -0.026479473, 0.02033403, 0.049384218, -0.0039470964, -0.048280906, 0.032327022, -0.018822493, 0.034070257, -0.017123394, 0.027340056, -0.016704135, 0.019098321, 0.016781367, 0.028818494, -0.0067467494, 0.0037181594, -0.027979977, -0.024603844, -0.0037512588, -0.041969966, -0.0033320005, 0.018789394, 0.025001036, -0.056842603, 0.012588783, 0.002704492, -0.030738255, 0.038306974, -0.11977549, 0.00823622, 0.022231724, -0.022165526, -0.015302929, -0.019969936, -0.066507615, -0.04459585, 0.014883671, 0.0035305966, 0.015534624, -0.00020531936, 0.054371186, -0.075554766, -0.004716656, 0.0071053253, 0.03340827, -0.010360094, 0.032282893, -0.09656181, -0.010635922, 0.048236776, -0.0016866873, 0.038704164, -5.8958205e-05, -0.0038202158, -0.0066474513, 0.021867633, -0.026104348, -0.010332512, -0.024118388, 0.007960392, 0.02288268, -0.009080253, -0.02908329, 0.007811445, -0.00059854647, -0.022904744, 0.011099312, -0.030429328, -0.007485968, 0.009014054, 0.04563296, -0.021922797, -0.021426307, 0.021724202, 0.028266838, -0.004189825, 0.0048766364, -0.052958947, -0.046780404, -0.013206637, -0.0004675282, -0.020113368, 0.025398228, 0.04550056, 0.015501525, 0.025133435, 0.022386188, -0.015722187, -0.025111368, -0.025574759, 0.0553421, -0.054724246, 0.0015073993, -0.006459888, -0.035416298, 0.0026989756, -0.019263817, -0.05856377, 0.0048159542, 0.013129406, 0.01374726, 0.05159084, 0.011893697, -0.046780404, -0.007976942, -0.04775132, -0.00014722311, -0.015291896, 0.02820064, 0.01041526, 0.0384835, -0.027913779, -0.014034121, -0.025067234, -0.046868667, 0.00079783204, 0.03217256, -0.018226704, 0.036210682, 0.0073315045, -0.0070170606, 0.024140453, -0.029988004, 0.0063440404, 0.003731951, -0.0031058216, 0.0011964033, 0.049693145, 0.028178573, -0.008423783, -0.021183578, 0.030208666, -0.0538416, 0.042124428, 0.013405234, 0.039035156, 0.010663505, -0.008506531, -0.03824077, -0.017950876, 0.007596299, 0.02004717, -0.014938837, -0.0064433385, 0.085043244, 0.025133435, -0.032260824, -0.07145045, 0.039917808, 0.0055220737, -0.0013108719, 0.024118388, -0.014718174, 0.056489546, 0.0064654048, 0.0015777353, -0.033452403, 0.06430099, -0.007839028, -0.04205823, -0.04088872, 0.0021128412, -0.03252562, -0.012004028, -0.04324981, -0.043779396, -0.0067908815, 0.005064199, -0.029414281, -0.016957896, -0.013151472, 0.010260796, 0.0024396973, 0.016130412, 0.0039443383, -0.014740241, 0.02912742, 0.005902716, -0.027119394, 0.037931845, 0.015468426, 0.035416298, -0.009720174, -0.01828187, 0.0043718712, 0.007888677, -0.023015076, -0.020201633, 0.0017515068, -0.031488508, 0.056886736, 0.047001068, -0.06090279, 0.037975978, 0.04885463, 0.004057428, 0.009262299, -0.033297937, -0.012544651, 0.022860613, 0.025685089, 0.040712193, 0.038218707, 0.038946893, 0.06160891, -0.043669067, 0.03751259, 0.006939829, 0.018866625, -0.03493084, -0.0129308095, -0.009163002, -0.011761299, -0.006592286, -0.039233755, -0.01983754, 0.02270615, 0.043029144, -0.016880665, 0.016185578, -0.011926796, 0.060946923, 0.016075248, -0.015986983, 0.0062999083, 0.10362301, -0.018337036, -0.026942864, 0.018987989, -0.04481651, 0.020984983, -0.032481488, -0.032304958, -0.0009943594, -0.011496505, 0.06509537, -0.01389069, -0.0066419346, -0.023588797, 0.02054366, -0.019782374, 0.011684068, 0.011115862, -0.0073039215, 0.0056048217, 0.009499512, 0.02561889, -0.031797435, -0.029899739, -0.02275028, -0.029303951, 0.042896748, 0.050972987, -0.060152538, -0.06399206, -0.03674027, -0.00818657, -0.013934823, -0.0027375915, 0.06032907, -0.014111353, -0.018392202, -0.0051221233, -0.06558083, 0.011485471, -0.040535662, -0.0051055737, -0.0031996032, -0.055959955, 0.018337036, 0.00427809, 0.0012963909, -0.012666015, -0.06447752, -0.023522599, 0.022728216, 0.029612878, -0.014883671, -0.0141775515, -0.042521622, 0.052782416, -0.033650998, -0.020014068, -0.037644986, -0.01289771, -0.00010291827, 0.015457393, 0.014894704, 0.009637425, 0.017630916, -0.03749052, -0.028972957, 0.035283897, -0.009780856, 0.019363115, 0.08160091, 0.00293205, 0.027825514, -0.020962916, 0.034643978, -0.058475506, 0.022507552, -0.044772375, -0.013945856, 0.00044994417, -0.025354097, 0.031289913, -0.057636987, 0.05441532, 0.01792881, 0.06897903, -0.019109353, 0.014861605, -0.0014012054, 0.0128204785, -0.014232717, -0.0027403496, 0.003486464, -0.025486493, 0.00078541983, 0.0051138485, 0.00435808, 0.014828505, -0.015810452, -0.055959955, -0.031311978, 0.025839552, -0.048060246, 0.021040149, -0.03627688, -0.0070942924, -0.01442028, -0.0062999083, -0.034886707, 0.0026576014, -0.016693102, 0.027009062, 0.038968958, -0.0006350936, -0.0267884, 0.016340042, -0.019440347, -0.001594285, -0.008197604, -0.013692095, -0.016273843, 0.023390202, -0.016571738, -0.014640942, -0.053223744, -0.006586769, 0.019506546, 0.004998001, 0.064256854, 0.025111368, 0.009400213, -0.0017225449, -0.04108732, -0.0022962668, -0.011452372, -0.055606894, -0.023125406, -0.016549671, -0.014497512, -0.023919791, -0.016538639, 0.03124578, 0.037998047, -0.00078541983, -0.000116795854, 0.020576758, -0.015236731, 0.02051056, 0.03294488, 0.021216678, 0.030407263, 0.06068213, -0.040734258, 0.027693117, -0.016737234, 0.029502546, 0.0151484655, -0.006664001, -0.045081303, -0.043602865, 0.061299983, 0.003337517, -0.0032244276, -0.0051552225, -0.01456371, -0.026016083, 0.04316154, -0.008903723, 0.020863619, -0.031687103, 0.03866003, -0.005792385, -0.01611938, -0.008804425, -0.033628933, -0.031510573, 0.01637314, 0.010161498, -0.06412446, 0.04298501, -0.0009019571, 0.01325077, 0.042631954, -0.01632901, 0.008512047, -0.008649961, 0.017873645, -0.033364136, -0.02004717, -0.0385497, 0.022529619, 0.008832008, 0.0037154013, -0.01696893, 0.05856377, 0.052208696, 0.0027872405, -0.0016797916, -0.008114856, -0.01746542, 0.0060185636, -0.032503553, -0.017741248, -0.038637966, 0.0267884, 0.017917776, 0.012654982, 0.016152479, 0.032680083, 0.04441932, -0.03323174, -0.024008056, -0.020709155, -0.05123778, -0.0036988514, -0.01824877, -0.00071646285, -0.004515302, 0.009510544, 0.035879686, -0.043095343, 0.012809445, 0.0069674114, -0.03281248, -0.02703113, 0.019925805, -0.02327987, -0.02696493, 0.00901957, 0.02220966, 0.04322774, 0.026016083, -0.031201646, 0.027538653, -0.0037291925, -0.022033129, -0.0063992064, 0.011684068, 0.00568757, -0.03135611, -0.031267844, 0.0066033187, -0.00017127185, 0.009118869, 0.0128756445, -0.00823622, 0.015016069, -0.02703113, -1.6700515e-06, 0.043095343, -0.046030153, -0.018965922, 0.0042918813, 0.009990484, -0.0038064243, 0.012158492, 0.016009048, 0.01570012, 0.0009784993, -0.013879658, 0.009554677, 0.011981962, -0.016185578, -0.018844558, -0.004664249, 0.0009026466, -0.011148962, -0.033099342, 0.035416298, 0.03301108, -0.0038891728, 0.02491277, -0.021371141, -0.01225779, 0.0064709214, 0.04550056, -0.041903768, 0.0201244, 0.047133464, 0.044948906, 0.028156508, -0.035129435, 0.019429313, -0.008991988, 0.011016564, 0.01757575, -0.05392986, 0.017145459, 0.014740241, 0.044022124, 0.0015473942, 0.006327491, -0.019021088, 0.004625633, -0.008881656, -0.03892483, -0.019683076, 0.0070280936, 0.054900777, -0.0352177, -0.015214664, 0.025927817, -0.074407324, -0.0056324047, 0.01792881, 0.008721677, 0.002028714, -0.029965937, 0.04545643, -0.026854599, -0.0021087038, -0.003227186, 0.0031720202, 0.0014922287, 0.013791393, -0.008462398, 0.02884056, 0.026280878, -0.0151484655, -0.0067302, 0.014585777, 0.024559712, -0.0031058216, 0.034467448, -0.037225727, 0.007320471, 0.029281884, -0.05048753, -0.010012551, -0.017950876, -0.0034478481, -0.023412269, 0.0066805505, -0.02480244, 0.0014315465, -0.043293938, 0.013681062, 0.00604063, -0.055430364, 0.012533617, 0.008980955, -0.010790385, -0.02784758, -0.015291896, 0.03790978, 0.022187592, 0.016990995, -0.019727208, -0.052296963, 0.02908329, 0.021161513, -0.013703127, -0.0011970929, 0.015821485, 0.011099312, -0.0017253032, 0.00032771798, 0.0014274091, -0.0035499046, -0.049516615, 0.0108234845, -0.032304958, 0.006939829, 0.023522599, 0.02150354, -0.047001068, 0.025001036, 0.0047883717, 0.0062943916, 0.008710643, -0.008815458, 4.6244262e-05, 0.055474497, 0.056621943, -0.018359102, -0.023699129, 0.077496596, 0.006338524, -0.03001007, 0.047707185, 7.03361e-05], [0.0047197, 0.0025306784, -0.030888185, 0.05901893, -0.016883284, 0.0069782627, -0.05181088, -0.010491583, -0.0012849921, 0.046658818, -0.015178024, 0.012075902, 0.03352469, -0.015468281, 0.02791305, 0.0381688, -0.032339472, -0.0129285315, -0.010255748, -0.0050280984, -0.020559873, -0.06361467, -0.05089173, -0.028082367, 0.015456187, -0.021624148, -0.012184748, 0.0035707662, -0.003064328, 0.0026788304, 0.0341052, 0.027937239, 0.02174509, -0.035725802, 0.021696713, 0.0074317893, -0.013835585, 0.035580676, 0.023498725, 0.0008949592, -0.034516398, -0.0188788, 0.01390815, -0.008641194, -0.024030862, -0.029267583, 0.0042873383, 0.0018896942, 0.0072140964, -0.0135211395, -0.027114844, -0.025445865, -0.014791015, -0.015831102, -0.053552423, 0.024962105, 0.066033475, -0.0990744, 0.040974617, -0.04462702, -0.04274035, 0.007637388, 0.06796852, -0.02892895, 0.012360112, 0.018806236, -0.025929628, 0.04600574, 0.025445865, 0.047457024, -0.00095089414, 0.025058856, 0.0671945, 0.032653917, -0.004861805, -0.054374818, 0.07087109, 0.049319506, 0.020813847, 0.0007717511, 0.047940787, -0.022591673, 0.023232656, 0.010818121, 0.045908988, -0.029122455, 0.051520623, -0.107104845, -0.023535008, 0.008858887, -0.007510401, -0.010316218, 0.03386332, -0.002285774, -0.024986293, 0.0144160995, -0.018915083, 0.007032686, 0.018528074, 0.02401877, -0.0052427677, -0.04170026, -0.0917696, -0.04840036, -0.009578482, 0.014186312, 0.028856385, -0.0065852064, -0.016617214, -0.010582288, 0.013702551, -0.031154254, -0.06525946, 0.020620342, -0.037491534, 0.012880156, -0.038967006, -0.04448189, -0.023861546, -0.01920534, -0.07179024, -0.03236366, 0.06129261, 0.012529428, 0.0047045825, 0.025203986, -0.018915083, 0.037370592, 0.014645886, -0.0059835277, -0.06777502, 0.020777566, 0.041482568, 0.032944173, 0.046949074, 0.03703196, 0.067678265, 0.0123843, -0.047577966, 0.004846688, -0.041047182, 0.010624616, -0.025881251, 0.01794756, 0.0065973005, -0.00437502, -0.04128906, -0.012517334, -0.026026381, -0.021430643, 0.009511964, -0.07154836, -0.010721369, 0.007879269, 0.03171058, -0.019011835, -0.01477892, 0.0049857693, -0.008719805, 0.06434031, 0.020293804, -0.062115006, -0.004299432, 0.038604185, 0.0043145497, -0.047940787, 0.0026576659, -0.01244477, -0.07522494, 0.021902312, 0.022978682, 0.007631341, 0.027187409, -0.019616537, -0.015710162, -0.01618183, 0.02129761, -0.008610958, -0.02515561, -0.06356629, -0.024816977, 0.043514367, 0.05877705, -0.009391025, -0.0016326958, 0.062405262, 0.06332441, 0.036330506, 0.025711935, -0.023740606, -0.029074078, 0.024696035, -0.023607573, -0.021902312, -0.0257845, -0.014524945, -0.035580676, -0.026945528, -0.021454832, 0.008308607, 0.0023522913, -0.027961427, 0.011737268, -0.032387845, 0.0046501593, 0.025324926, 0.026752023, 0.04034573, 0.02255539, 0.036209565, 0.059067305, 0.0077341404, 0.0020227288, -0.03601606, -0.003416567, 0.015468281, -0.04840036, 0.0027453478, -0.026993904, -0.049585577, 0.066178605, 0.005312308, 0.017729867, -0.011265601, 0.010437159, 0.032532975, -0.0031111925, -0.018020123, 0.022748895, -0.009681282, -0.01534734, -0.031299382, -0.03964427, 0.027719546, -0.07720837, -0.0040545277, -0.03601606, -0.021914406, 0.022894023, 0.041361626, -0.0038277647, -0.007377366, -0.062211756, -0.019749573, 0.021067822, 0.045231722, -0.0003775609, -0.0063191373, -0.04661044, 0.0068452284, 0.02866288, -0.011271648, 0.00068558106, 0.035798367, 0.003706824, 0.11378076, 0.028275872, -0.016738156, -0.008356984, 0.019737478, -0.038483243, 0.037491534, -0.012348018, 0.024042957, -0.039354015, -0.009560341, 0.013472764, -0.025687747, -0.050069336, 0.02198697, 0.064243555, -0.04992421, 0.024478342, 0.01878205, 0.021769278, 0.02330522, 0.10139646, 0.03753991, -0.0066759116, 0.024103427, 0.022748895, 0.05050472, -0.00077023933, 0.018153159, 0.03700777, 0.0098143155, 0.018032217, -0.057180636, -0.022240944, 0.008713758, -0.017560551, -0.008375125, 0.030670492, -0.0001539156, -0.0056872237, -0.010818121, 0.020680813, 0.019822136, 0.008030444, 0.033621438, -0.007861128, -0.012517334, -0.049053438, -0.058293287, 0.007298755, 0.050746605, -0.033065114, 0.092882246, 0.009282178, -0.034782466, 0.06825878, -0.0029857168, -0.016810719, -0.016980037, 0.03799948, -0.014803109, -0.0017007248, 0.024659753, 0.053794302, -0.020571968, -0.008768181, -0.015770633, -0.09191473, 0.017088883, 0.05195601, 0.006204244, 0.021527397, -0.036378883, -0.028324248, 0.028783822, -0.037951108, -0.021527397, -0.014210501, 0.029751346, -0.021563679, -0.119102135, -0.0084839715, -0.045280095, 0.015298964, -0.011495388, 0.057809524, 0.016617214, -0.010642758, 0.009475683, 0.021370174, -0.030767245, -0.048085913, 0.035193663, 0.03611281, 0.023595478, 0.0014399469, 0.039861966, 0.018564356, 0.027501853, 0.009276131, 0.009929209, 0.0031837567, -0.050843358, 0.021781372, 0.02527655, 0.08369078, -0.050069336, 0.013835585, 0.0751282, 0.009203566, 0.0052941674, -0.01762102, -0.0052367207, 0.0021708808, -0.0028330295, -0.049827456, 0.050214466, 0.022277227, 0.000358475, 0.00031803554, 0.0011481782, 0.036838453, 0.018709484, -0.054761827, 0.016387427, 0.025421679, -0.022325603, -0.026969716, 0.03335537, 0.0059865513, 6.6906987e-06, -0.019277904, -0.005581401, 0.006784758, -0.01914487, 0.0012124279, 0.004405255, -0.0033167913, 0.013472764, 0.038725127, 0.0018609709, -0.01843132, 0.030863997, 0.008647241, 0.010279937, -0.00090629735, 0.012831779, -0.033548877, -0.061969876, 0.034298707, -0.034419645, 0.012456864, -0.007087109, -0.007595059, 0.011616328, -0.033065114, 0.047650527, 0.003374238, 0.01193682, 0.042014707, 0.01636324, 0.0007929157, 0.06356629, -0.010975344, 0.01843132, 0.024841163, -0.029364336, -0.04232915, 0.024248555, -0.07657948, 0.033161867, -0.05635824, 0.012287548, -0.020051923, -0.011072096, -0.00016024607, -0.016459992, -0.0020847106, -0.015250588, -0.031952463, -0.02742929, -0.054132935, -0.012293595, 0.015710162, 0.055148836, 0.012299642, -0.030888185, 0.031976648, 0.011846115, -0.066517234, 0.021757184, -0.06879091, -0.039136324, 0.033016738, -0.020608248, 0.0047106296, -0.010352501, -0.05398781, -0.01977376, 0.06405005, -0.013351823, 0.01788709, 0.036959395, 0.05181088, -0.06250201, -0.00545139, 0.012136372, 0.071596734, -0.007903457, 0.0063251844, 0.021128293, -0.016883284, 0.015383623, 0.012112184, 0.011840068, -0.024841163, -0.006573112, -0.064388685, 0.042304963, -0.020511497, -0.03437127, 0.017221916, -0.019156964, 0.013859773, 0.001717354, -0.0047197, 0.019785855, -0.0032714386, 0.03763666, 0.012553616, -0.024236461, 0.04738446, 0.03427452, 0.09984842, 0.03928145, -0.033065114, 0.035193663, -0.0034014496, -0.021636242, -0.008798416, -0.0105580995, -0.018419227, -0.013811397, 0.032871608, -0.0012955744, 0.011398636, 0.028106555, 0.010140855, 0.037467346, 0.024151804, -0.013835585, -0.010685087, -0.0039063757, 0.0056872237, -0.011459106, 0.035725802, -0.02064453, -0.034056824, 0.028953139, -0.013194601, -0.046344373, -0.028058179, 0.036088623, 0.017161448, 0.026776211, 0.0039396347, -0.04496565, -0.068452284, -0.013412294, -0.036717515, -0.017850807, -0.0007566336, -0.002261586, 0.0074680713, -0.036475632, 5.3005922e-05, 0.00018840251, 0.0051762504, 0.014065372, 0.022265133, -0.02198697, 0.035653237, -0.003960799, 0.014911955, 0.018189441, -0.036838453, 0.028904762, -0.013617893, 0.025203986, -0.015117554, 0.025373302, 0.07014545, -0.022797272, -0.019628631, 0.024647659, -0.031444512, 0.033548877, 0.012577805, 0.030984938, 0.012136372, -0.03371819, -0.040248975, -0.03487922, -0.01169494, -0.051665753, 0.011906586, 0.021261327, 0.085383944, 0.01528687, -0.017717773, -0.061969876, 0.040998805, 0.018757861, -0.019036023, -0.010400877, -0.029340148, 0.043006416, 0.026752023, 0.0010287495, -0.02222885, 0.07686973, -0.025324926, -0.022386074, -0.039716836, -0.023728512, -0.034975972, -0.011827974, -0.029654592, -0.049633954, 0.01845551, 0.03463734, -0.027187409, -0.05660012, -0.046078302, 0.0051188036, -0.009233802, -0.01000782, -0.008864934, -0.006561018, -0.0070992033, -0.0068028993, 0.02716322, 5.560425e-05, -0.0012524893, 0.034927595, -0.009554294, -0.030984938, 0.008774228, 0.014549133, -0.029727157, 0.010793934, 0.019785855, -0.050262842, 0.035580676, 0.0116707515, -0.10149321, -0.005877705, 0.03057374, -0.03357306, -0.0017506127, -0.04203889, 0.021563679, 0.050843358, 0.021442737, 0.033645626, 0.06743638, 0.04438514, 0.0609056, -0.058196533, 0.03814461, 0.0077764695, -0.026752023, -0.00094333536, -0.005412084, 0.0016115312, -0.01593995, -0.02054778, -0.034153577, -0.035096914, 0.008393265, -0.007038733, 0.016532557, 0.012432676, 0.0052185794, 0.026631083, 0.011985197, 0.037346404, -0.0077885636, 0.04711839, -0.022978682, -0.019568162, 0.027259972, 0.0024263673, 0.07527332, -0.020898506, -0.055680975, 0.025228174, -0.016641403, 0.055777725, 0.03475828, -0.016520463, 0.02405505, 0.013279259, -0.0057265293, 0.020584062, -0.029388525, -0.038434867, 0.01477892, 0.035072725, 0.015431998, -0.02312381, -0.016726062, -0.02982391, -0.024720224, 0.021575773, 0.049682327, -0.036064435, -0.043199923, -0.030597929, 0.005841423, -0.022446543, 0.003220039, 0.042087268, -0.028977327, -0.013158319, -0.003930564, -0.0598897, -0.010158996, -0.01979795, 0.0066396296, -0.015637597, -0.03942658, -0.0074499305, -0.027792111, -0.0011005579, 0.010503677, -0.07507982, -0.034322895, 0.0659851, 0.021079917, -0.0029993227, -0.010237607, -0.018262004, -0.010539958, 0.0048497114, 0.013859773, -0.016810719, -0.029388525, -0.020451026, 0.031541266, 0.010570194, 0.013315542, -0.014718451, -0.04687651, -0.034709904, 0.014379817, 0.027380913, 0.04552198, 0.047432836, 0.0055844244, -0.01713726, 0.013436481, 0.025349114, -0.07556358, 0.04196633, -0.0028904763, 0.0041240687, 0.003132357, -0.02844519, 0.033089302, -0.047964975, 0.017415421, 0.006180056, 0.02767117, -0.0031111925, -0.00081861555, -0.055148836, 0.0002621006, -0.0026485955, -0.014996613, 0.010225513, -0.0355323, -0.0012056249, 0.012468958, 0.008592818, 0.038338117, -0.033790756, -0.02994485, -0.020898506, -0.0069298865, -0.037733413, 0.036403067, -0.0041543036, 0.014621698, -0.047819845, -0.03928145, -0.02653433, 0.00064400776, -0.048738994, 0.03108169, 0.051375493, 0.01477892, -0.014754732, -0.01023156, -0.040756926, -0.025034668, 0.010775792, -0.017911278, -0.0085565355, 0.021382269, 0.0073168958, -0.033161867, -0.05045635, 0.0033470264, 0.019725384, 0.03536298, 0.0712581, -0.013690457, 0.009415212, 0.014186312, 0.004438514, 0.021128293, 0.0013114478, -0.050069336, -0.018443415, -0.0031595686, 0.0018488768, -0.015311059, 0.002675807, 0.036620762, 0.040152222, 0.004102904, -0.012964814, -0.0058746813, -0.0013144712, -0.011453059, 0.024236461, 0.049101815, 0.024514625, 0.057035506, -0.025010481, 0.017959654, -0.013932337, 0.031758957, -0.03357306, 0.03398426, -0.05761602, -0.011912632, 0.045836423, 0.01307366, -0.010539958, -0.015819008, -0.045038216, -0.059938077, 0.031033315, 0.0022540272, 0.026316637, 0.009094721, 0.029098267, 0.012323829, -0.0017234011, 0.012245218, -0.008864934, -0.010122714, 0.049343694, -0.024381591, -0.036378883, -0.0049766987, -0.020922694, 0.0134485755, 0.046707194, 0.0119670555, 0.011459106, -0.014742638, 0.013255071, -0.02866288, -0.03601606, -0.02844519, -0.006158891, -0.022470731, 0.035411358, 0.008804463, 0.035048537, 0.02539749, 0.025300737, -0.036959395, -0.028953139, -0.00014408918, 0.019640725, -0.042498466, 0.014295159, -0.019616537, -0.025881251, 0.0096691875, 0.038942818, 0.042256586, 0.020813847, 0.04196633, -0.037056148, -0.024913728, -0.015625503, -0.050069336, -0.01197915, -0.025010481, 0.03574999, 0.01843132, 0.013037378, 0.038773503, -0.054810204, -0.022458637, -0.0010083409, -0.024296932, -0.054519944, -0.014295159, -0.03260554, -0.0033954026, -0.039499145, 0.0019033, 0.05761602, 0.0003862535, -0.02219257, -0.0045957365, 0.012245218, 0.0017974771, -0.019423032, 0.0051762504, -0.010328312, -0.04532847, -0.013726738, 0.014827296, -0.024550907, 0.025590995, -0.022361886, 0.0050401925, -0.008701663, -0.00085640943, -0.018600637, 0.024514625, -0.021890217, 0.016822813, 0.012456864, 0.013726738, 0.014670074, -0.008042539, 0.014512852, 0.00931846, 0.017403327, 0.011398636, -0.022579579, 0.036088623, -0.036838453, 0.017717773, 0.012057761, 0.0020771518, -0.02141855, -0.043877188, 0.030307671, 0.036137, -0.040224787, 0.013992808, 0.0022222805, -0.013436481, -0.0071052504, 0.02166043, -0.041530944, 0.017076788, 0.036403067, 0.022434449, 0.020366369, -0.022652142, -0.0024641613, -0.02617151, 0.014319347, 0.004979722, -0.04034573, 0.0027967475, 0.015395717, 0.017028412, 0.007546683, -0.018854612, -0.032871608, 0.004311526, 0.0066154413, -0.01788709, -0.00868957, 0.06114748, 0.07807914, -0.014246782, -0.036161188, 0.03236366, -0.048376173, -0.0023689207, 0.028058179, 0.028904762, -0.0061074914, -0.005868634, 0.026872963, -0.04573967, -0.0033167913, -0.02255539, -0.005678153, 0.005814211, 0.019181153, 0.011507482, 0.01648418, 0.014549133, -0.033645626, 0.012601993, 0.005974457, 0.024514625, 0.007764376, 0.023317315, -0.039015383, -0.011362353, 0.023450349, -0.036596574, -0.02868707, -0.0011708545, 0.0011330607, 0.032557163, 0.011622375, 0.003942658, 0.009082627, -0.04992421, 0.0049706516, 0.007026639, -0.06027671, -0.049319506, 0.020813847, 0.024429966, -0.030380236, -0.024042957, 0.05621311, 0.012329876, -0.013859773, 0.031758957, -0.05253652, -0.022785177, 0.012735027, -0.0123843, -0.006996404, 0.01459751, 0.021684619, -0.00089873857, -0.044119067, -0.034395456, -0.02312381, -0.05229464, -0.00082012726, -0.031105878, 0.044167444, -0.012553616, 0.009451495, -0.038459055, -0.012505241, -0.008641194, 0.013122036, 0.00631309, -0.011096285, 0.010612522, 0.0237527, 0.0190844, 0.010842309, 0.0038731173, 0.086254716, 0.023909923, -0.03246041, 0.022325603, 0.020451026], [0.029022938, 0.020186279, -0.026922904, 0.018015457, 0.022958795, 0.025884684, -0.03256232, 0.031429715, 0.003456797, 0.07706416, 0.006046445, -0.0033211205, -0.016941844, -0.021920577, 0.0006640029, -0.0040850374, -0.02109472, 0.005978607, -0.050919916, -0.01576205, -0.03588934, -0.06068861, -0.039664682, -0.003250333, 0.020386843, -0.009792292, 0.009255486, 0.0028757483, 0.020457631, 0.010865904, 0.029966772, 0.041693926, 0.031783655, 0.01042938, 0.003560029, -0.030910607, -0.009497344, 0.052807588, 0.016635098, -0.0036160692, -0.04480858, 0.030485881, 0.034379203, -0.07305285, -0.013520441, -0.0070197755, 0.021425063, -0.03890961, 0.018369395, -0.019183453, -0.0043711374, 0.0055627297, 0.006300101, -0.012016204, -0.03565338, -0.013178301, 0.072203405, 0.006441676, 0.080037236, -0.01576205, -0.013555835, 0.019372221, 0.016245766, -0.015856434, 0.006913594, -0.0073855114, 0.017272187, 0.009296779, 0.04879629, 0.021460457, -0.02911732, -0.008447327, -0.037116326, -0.01846378, -0.0016089443, -0.08192491, 0.048890673, 0.045445673, 0.03909838, 0.016753078, 0.029329684, -0.024516122, 0.021401467, -0.044289473, 0.03638485, -0.023973418, 0.014971588, -0.10174545, -0.062057175, 0.020198077, -0.018735131, 0.022427887, 0.050683957, 0.017472751, -0.04282653, 0.028975746, 0.03336458, 0.007297027, -0.012199072, 0.013237291, -0.024374548, -0.03199602, -0.06484149, -0.03761184, 0.05988635, 0.021130113, 0.044832177, 0.025648726, -0.011626871, -0.011272933, 0.012128284, -0.009332172, -0.037281495, 0.011969012, -0.02734763, 0.049032245, -0.009821787, -0.06399204, -0.028904958, -0.011426306, -0.056960464, 0.017838487, 0.074043885, 0.009798191, -0.021649223, 0.031594887, -0.026380198, 0.06375608, 0.019372221, -0.008099287, -0.0101993205, 0.031476907, 0.033789307, 0.03225557, 0.058895327, 0.022616655, 0.06753142, -0.019171655, -0.0257903, 0.0069843815, -0.04780526, -0.0042974004, -0.028975746, 0.022109343, -0.016127786, 0.019336827, -0.00900183, 0.014228318, -0.029140916, -0.012942342, -0.011479397, -0.043982726, -0.0063590906, -0.0061172326, 0.00355413, -0.018546365, 0.0050819633, 0.00934397, -0.0051439027, 0.062245943, 0.013614825, -0.075648405, 0.02843304, 0.025129616, 0.01674128, -0.027654376, 0.036266875, -0.027324034, -0.035464615, 0.029801602, 0.01696544, -0.006002203, 0.04664906, -0.0047840653, 0.0034951402, -0.024350952, 0.042614166, 0.031004991, -0.017378367, -0.063189775, -0.036101703, 0.06517183, 0.014747427, -0.0060140006, 0.05261882, 0.05554471, 0.039688278, 0.033671327, 0.06611566, -0.032019615, -0.033553347, 0.0054830937, -0.010323199, -0.0008265933, -0.030084752, -0.012258061, -0.019301433, 0.0032945753, -0.021908779, -0.024327356, 0.011337822, -0.033081427, 0.03994783, 0.011467599, 0.006441676, 0.02103573, 0.07314724, -0.019053675, 0.0183458, 0.019277837, 0.022132939, 0.041245606, -0.009019527, -0.057054847, -0.012788969, 0.022604857, -0.05828183, 0.018664343, -0.017779497, -0.025837492, 0.036880367, -0.038720846, 0.030367902, 0.009969261, -0.024280164, 0.042307418, 0.025884684, 0.033199407, 0.044784985, 0.054270532, 0.0021575487, -0.043935534, -0.029707218, 0.027607184, -0.07229779, -0.020964943, -0.037871394, -0.047781665, 0.03817814, -0.001765267, 0.033199407, 0.02384364, -0.021531243, 0.0053267707, 0.027890334, 0.022604857, 0.008618397, -0.015750252, -0.024327356, 0.03520506, -0.01381539, 0.013945167, 0.008612498, 0.05478964, -0.019018283, 0.049504165, 0.056205396, -0.01822782, 0.0050052768, 0.02630941, -0.012128284, 0.041929886, -0.011225741, 0.045540057, -0.020563813, 0.02642739, 0.012435031, -0.05125026, -0.02298239, -0.028786978, 0.021401467, -0.040514134, 0.041174818, 0.023737459, 0.015561486, -0.008323448, 0.038484886, 0.038744442, -0.016753078, 0.06087738, 0.0038254827, 0.050306424, 0.0031500505, 0.07102361, -0.025459958, 0.0076627634, 0.037753414, -0.06451114, 0.017460953, 0.037800606, -0.03525225, 0.0036367155, 0.06064142, -0.0005331195, 0.05927286, -0.04608276, 0.020764377, -0.0025807999, -0.019006485, 0.02378465, 0.022380695, -0.016127786, -0.048300773, -0.04228382, 0.013744602, 0.031004991, 0.0057573956, 0.09825326, -0.01610419, -0.050636765, 0.07956532, 0.006659938, -0.008465024, -0.04997608, 0.0098748775, -0.00036370842, 0.010966187, 0.019619977, 0.07607313, -0.01880592, -0.004568753, -0.053609848, -0.09721504, 0.06908875, 0.02442174, -0.0014806417, 0.012777171, -0.04832437, -0.019832341, 0.027607184, -0.040207386, -0.023005987, -0.0014577832, 0.012541212, -0.020245269, -0.10401066, -0.038838826, -0.01083051, 0.008529912, -0.0100164525, -0.01427551, 0.044289473, -0.041009646, -0.02814989, 0.017980063, -0.04259057, -0.008889749, -0.00043910465, 0.005760345, -0.00075801776, 0.001306622, 0.008571205, 0.03914557, -0.010470673, 0.005816385, -0.019879531, -0.022097545, -0.014358095, -0.0023433662, 0.03284547, 0.051910944, -0.06531341, -0.0001867393, 0.068475254, 0.012965938, 0.015408112, -0.0059815566, -0.002946536, -0.0002853627, -0.012399637, -0.013603027, 0.05743238, 0.009568131, -0.04712098, -0.060216695, 0.00470148, 0.052241288, -0.019513795, -0.049551357, 0.017744105, -0.021023933, 0.0011149055, 0.0074504004, 0.034709543, 0.032184787, 0.00756838, -0.038933206, -0.003365363, -0.0015927221, -0.020186279, 0.0030055256, 0.031288143, 0.013390664, -0.019655371, 0.011337822, 0.0332466, -0.020375045, 0.014322701, 0.021979565, 0.0101875225, -0.0229234, 0.033105023, -0.04167033, -0.021967767, 0.025601534, -0.042118654, 0.02791393, -0.0036013217, -0.030462286, 0.04379396, -0.061443683, 0.031170161, -0.043699577, 0.029258896, 0.026380198, 0.0026088199, 0.031618483, 0.01060045, -0.012039799, -0.008010803, -0.0030011015, -0.006317798, -0.040514134, 0.015868232, -0.04764009, 0.036762387, -0.0025409816, 0.014747427, -0.008264458, -0.015360921, 0.018723333, 0.015549688, 0.018723333, -0.0051969932, 0.008706881, -0.05875375, -0.0059520616, 0.0065596555, -0.020540217, 0.050589573, 0.013260887, -0.022569463, -0.0033712618, 0.014110338, -0.07423265, -0.019006485, -0.094525106, 0.011992608, 0.06394485, -0.017803093, 0.0011901173, -0.04620074, -0.06139649, -0.006854604, 0.05582786, 0.0074268044, 0.012328849, 0.019065473, 0.04351081, -0.08470922, -0.011455801, 0.021248093, 0.055591904, -0.016776673, 0.039428722, -0.03742307, -0.0030173236, 0.026403794, 0.013709208, 0.0579043, -0.0010367441, 0.028574616, -0.03657362, 0.045209713, -0.005978607, -0.00883076, -0.020493025, 0.0349691, 0.033270195, -0.00266486, -0.05766834, 0.019112665, -0.017272187, 0.06625724, 0.02498804, -0.027040882, 0.022569463, -0.0025498301, 0.067106694, 0.02229811, -0.00042067037, 0.023831842, -0.0043652384, -0.026899308, -0.008187772, -0.0065360595, -0.028904958, -0.023182957, -0.043227658, -0.02326554, 0.012918746, 0.036196087, 0.058376215, -0.0010301078, 0.033576943, 0.018640747, -0.019619977, -0.014440681, 0.007733551, -0.01766152, -0.010712531, -0.013721006, -0.032397147, 0.020056501, -0.0076332684, -0.011715356, -0.022746433, 0.033034235, -0.02280542, 0.035794955, -0.0018670243, -0.05549752, -0.02390263, -0.028456636, -0.011036974, 0.009184698, 0.03187804, 0.004099785, 0.015667668, 0.00065994734, 0.01209289, -0.02304138, -0.026403794, 0.0025837494, 0.015207547, -0.02619143, 0.026521774, 0.014582256, 0.004483218, 0.016092394, -0.045563653, 0.026333006, -0.008665589, 0.013579431, -0.00086641137, 0.061632447, 0.048112005, -0.027206054, 0.008535811, 0.035983723, -0.06092457, 0.055214368, 0.022345303, -0.009520939, -0.015254739, -0.00447142, -0.04110403, -0.047003, -0.009621222, -0.0063826866, -0.028055506, 0.019867733, 0.07116518, -0.002287326, -0.015313729, -0.046672657, 0.04308608, 0.015231143, -0.0021590234, 0.0049167923, 0.010311401, 0.034591567, 0.0063885855, -0.008282155, -0.013968763, 0.0636145, -0.01289515, -0.04263776, -0.023926226, -0.011444003, -0.023772852, -0.009721504, -0.023407117, -0.04308608, 0.030580265, 0.0017991861, -0.029683622, -0.031665675, -0.050495192, -0.00043136225, -0.010511966, 0.028456636, -0.05040081, -0.014145732, -0.008305751, 0.0072439364, 0.025247596, 0.0022312857, 0.003919866, 0.04511533, -0.04860752, -0.028975746, 0.010777419, 0.029825198, 0.0017844387, 0.005887173, 0.018605353, -0.054081764, 0.024445336, 0.037446667, -0.09377004, 0.011013378, 0.045752417, 0.01593902, 0.021861587, -0.007521188, 0.0015425809, 0.04660187, 0.006294202, 0.040325366, 0.021731809, 0.011390913, 0.056960464, -0.020646399, 0.041198414, 0.033317387, 0.010441178, 0.0046011973, -0.02418578, -0.006701231, -0.005707254, -0.009408859, -0.034237627, -0.02550715, 0.02963643, -0.021448659, 0.0008730477, 0.045587245, -0.0020572662, 0.020764377, 0.03680958, 0.01415753, 0.016057, 0.114109695, -0.031099375, 0.007550683, 0.017980063, -0.017496347, 0.083199084, -0.024374548, -0.0043947333, 0.027536396, 0.021849789, 0.068239294, 0.025318382, -0.0034980897, -0.027253246, 0.038956802, -0.031665675, 0.010842308, 0.009149304, -0.009591727, 0.02602626, 0.0025970219, 0.022026757, 0.013131109, 0.013485047, -0.0020616904, -0.008506316, 0.053562656, 0.08334066, -0.06724827, -0.05200533, -0.03501629, -0.0050082263, -0.036998346, -0.0098925745, 0.053751424, -0.020457631, -0.042850126, -0.012824363, -0.062387515, -0.0021708212, -0.020611005, 0.025766704, -0.01129063, -0.019938521, 0.02510602, -0.044950157, -0.020599207, 0.006701231, -0.04712098, -0.04579961, 0.042213038, 0.043038893, 0.03220838, 0.01995032, -0.03822533, 0.0029907783, 0.003365363, -0.016269362, -0.02711167, 0.014015955, -0.01077152, 0.009585828, 0.02412679, -0.006105435, -0.00087673456, -0.037116326, -0.06786176, 0.026450986, -0.002041044, 0.025695918, 0.04615355, 0.01812164, 0.019726159, 0.008453226, 0.022829017, -0.032184787, 0.05120307, 0.029966772, 0.036880367, 0.0054712957, -0.04516252, 0.007291128, -0.05611101, 0.03192523, 0.009774595, 0.0584706, -0.01772051, 0.019230645, -0.040938858, -0.013933369, -0.001441561, -0.02619143, -0.0044743693, 0.010470673, -0.0017800145, 0.007721753, -0.011856931, 0.007149553, -0.022876209, -0.057290804, -0.06323697, 0.031547695, -0.017637923, 0.015608677, -0.0039877044, -0.021967767, -0.022770029, -0.01117855, -0.015585081, -0.012399637, -0.037871394, -0.0037340487, 0.030249923, -0.0021029832, -0.032751087, -0.0030645153, -0.03180725, 0.0103703905, -0.0007934116, 0.022227323, -0.0098925745, 0.025365574, -0.018876707, 0.008665589, -0.026356602, 0.025554342, 0.011031075, 0.03204321, 0.06842806, 0.027654376, -0.0005298013, 0.018782323, -0.045776013, 0.03673879, 0.015207547, -0.05394019, 0.010606349, -0.015679464, -0.0030055256, -0.012706383, -0.006913594, 0.03272749, 0.035606187, -0.021802597, -0.010665339, 0.012847959, 0.009680212, 0.021189103, 0.0066009485, -0.00087083556, 0.028385848, 0.06460553, -0.04294451, 0.026734136, -0.004427178, 0.032231975, -0.0005025186, -0.02803191, -0.046295125, 0.0015779748, 0.059178475, -0.00733832, -0.03187804, -0.0048872973, 0.003335868, -0.030131944, 0.023808246, 0.009509142, -0.021425063, -0.01828681, 0.02446893, -0.03305783, 0.021071125, 0.013249089, -0.0063590906, -0.03489831, -0.02069359, -0.02332453, -0.050259233, 0.043038893, -0.008665589, 0.011591478, 0.051297452, 0.022144737, -0.020375045, -0.03376571, 0.03456797, -0.052099712, -0.014853609, -0.022333505, 0.0035629785, 0.0044743693, 0.041198414, 0.0032886763, 0.07767765, 0.020103693, 0.064369574, -0.0008420781, -0.011491195, 0.0060140006, 0.0022548817, -0.04917382, 0.020587409, -0.032515127, 0.011320125, -0.017637923, 0.025601534, 0.029612834, 0.03336458, 0.01255301, -0.04155235, -0.027371226, -0.006718928, -0.06970224, 0.0030615658, -0.0013213694, 0.014499671, 0.010464774, -0.024752082, 0.0052795787, -0.030698245, 0.031712867, 0.014251914, -0.04075009, -0.04992889, 0.031217353, -0.026663348, -0.02895215, -0.021425063, 0.019808745, 0.030131944, -0.0055096387, -0.018251415, -0.0010957338, -0.0024436486, -0.000865674, -0.0014533589, 0.0030070003, -0.002281427, -0.028338656, -0.029046534, -0.020705387, -0.015313729, -0.007291128, 0.0010824612, -0.0025601534, 0.01198081, -0.03291626, -0.0015160355, 0.026215026, -0.022380695, 0.0027209003, 0.0027931628, 0.0015175103, -0.006070041, -0.027465608, 0.027135266, 0.016729482, 0.009355768, -0.0034803927, -0.029211704, 0.009137506, -0.026333006, -0.0025984966, -0.034072455, -0.012989534, 0.0100459475, -0.025318382, 0.0035010392, 0.02378465, -0.005736749, 0.003111707, -0.031264547, -0.0049787313, -0.017673317, 0.017779497, -0.053468272, 0.024634102, 0.027866738, -0.00378419, 0.035417423, -0.020811569, 0.013768198, -0.025766704, 0.023879034, 0.015644072, -0.033742115, -0.004421279, 0.021755405, 0.011373216, -0.00750939, 0.039853446, -0.0022740532, 0.023182957, 0.017036228, -0.02206215, -0.04792324, 0.033105023, 0.105803944, -0.038720846, -0.0026751834, -0.008948739, -0.0831047, -0.013284482, 0.040254578, 0.029801602, 0.03433201, -0.004105684, 0.030367902, -0.0014629448, 0.0099220695, -0.009456051, -0.0055450327, 0.009520939, 0.02711167, 0.0054300027, -0.0031854443, 0.04063211, -0.007090563, 0.011738952, 0.0073973094, 0.036785983, 0.021885183, 0.024256568, -0.02510602, 0.014240116, 0.031052183, -0.03548821, -0.00020941347, 0.006642241, 0.015183951, 0.022345303, 0.014936195, -0.0028904958, 0.0212009, -0.053279504, 0.011892325, 0.0018109841, -0.05233567, -0.039759062, -0.015561486, -0.026403794, -0.025058828, -0.01295414, 0.023477904, 0.027300438, -0.019844139, -0.008836659, -0.0590369, 0.03296345, 0.035346635, -0.035842147, -0.0052766297, 0.0019732057, 0.0049433378, 0.029589238, -0.004907944, 0.0073855114, 0.024398144, -0.07390231, 0.008376539, -0.038272522, 0.029211704, -0.0072439364, 0.0071731484, -0.019501997, 0.014322701, -0.017283985, 0.008860255, -0.02206215, -0.010618147, 0.022569463, 0.034662355, 0.033105023, -0.004008351, 0.032633107, 0.023713863, 0.011072368, -0.018593557, 0.039877042, 0.02085876], [0.008823103, 0.038670234, -0.024762927, 0.0137209445, 0.0049327845, 0.044447474, -0.04754575, 0.02056977, -0.002674594, 0.0498054, -0.028699836, 0.018962393, 0.00025479257, -0.045798603, 0.010459599, 0.03081971, -0.0071225446, 0.0028740603, -0.027302116, -0.02081437, 0.003508858, -0.081766576, -0.043236118, -0.01254453, -0.0038408162, -0.012765836, -0.0071225446, 0.009079352, 0.0051599136, 0.008898813, 0.03650377, 0.031262323, 0.025182243, -0.0016685274, 0.0072914357, -0.009504491, -0.044540655, 0.05423151, 0.0040737693, 0.018647905, -0.06541327, 0.015316674, 0.015805876, -0.029189037, -0.017797627, 0.0042077173, 0.040114544, -0.017215243, 0.0074486793, -0.046450872, -0.017937398, -0.008019415, 0.010628491, -0.0032060186, -0.043538958, 0.0016627036, 0.04794177, 0.008153362, 0.07100414, -0.008100948, -0.037132744, 0.01757632, 0.0073030833, -0.031029368, -0.039206028, 0.019964091, 0.0004873818, 0.005124971, 0.04023102, 0.04447077, -0.014233441, -0.0002851857, 0.021117209, -0.019381708, 0.01623684, -0.053346287, 0.07426549, 0.03331231, 0.03389469, 0.0080601815, 0.07883137, -0.029165743, 0.048920177, -0.020942494, 0.046730414, -0.020721188, 0.04850086, -0.11656979, -0.06163942, 0.012439702, -0.022852711, -0.009190004, 0.0587508, 0.0060043694, -0.012824074, 0.020826017, -0.007209902, 0.011379764, -0.013837421, 0.012474645, -0.03042369, -0.0413259, -0.057679217, -0.05143607, 0.035269115, 0.02151323, 0.024017477, 0.01379083, 0.003741811, -0.02464645, 0.00047100228, -0.0012805148, -0.022328565, -0.00078476116, -0.032683335, 0.021967487, -0.054883778, -0.085866556, -0.01897404, -0.019346764, -0.08325748, -0.0065459856, 0.07053823, -0.010180055, 0.007897114, 0.009545258, 0.0066158716, 0.110606186, 0.0029133712, 0.0059927213, -0.043538958, 0.019043926, 0.010477071, 0.032776516, 0.076362066, 0.020942494, 0.063409865, -0.0028332935, -0.040999766, -0.024832813, -0.05651445, 5.2414474e-05, -0.021536525, 0.007204078, -0.024460088, -0.028257225, 0.0031361326, -0.0118980855, -0.06816211, -0.022701291, -0.010843973, -0.029911192, -0.02464645, 0.014804177, 0.056374677, -0.006697405, 0.026370304, -0.013022085, 0.0066333427, 0.040906586, 0.021256981, -0.06345645, -0.011938852, 0.051482663, 0.017017232, -0.030982777, 0.019789375, -0.017855864, -0.057446264, 0.029305514, 0.012125215, 0.0043766084, 0.009789859, -0.014210146, -0.020639654, -0.009492843, 0.05138948, -0.007140016, -0.00501723, -0.029841308, -0.025508378, 0.05949625, 0.018275179, -0.029887898, 0.0070293634, 0.038087852, 0.04775541, 0.0054860483, 0.05199516, -0.042653736, -0.04689348, 0.023831114, -0.009405486, 0.016551325, -0.027162345, -0.009690854, -0.0016961906, -0.032706633, -0.026160646, -0.003092454, 0.011531184, -0.042956572, 0.048314497, 0.019859262, 0.03047028, 0.0071283686, 0.06839506, 0.016586268, -0.028000977, 0.059868976, 0.0051657376, 0.0025639413, 0.018333418, -0.044237815, -0.037715126, 0.048873585, -0.04661394, 0.018578019, -0.028746426, -0.018275179, 0.044191226, -0.031262323, 0.0156078655, -0.0030749824, -0.021874307, 0.01752973, 0.014617815, 0.0039864117, 0.025112357, 0.037715126, -0.01394225, -0.048920177, -0.033079356, 0.03207766, -0.08633246, -0.0074312077, -0.048826993, -0.02345839, -0.015817523, 0.001544771, 0.019835966, 0.018228589, -0.03545548, -0.006755643, 0.031937886, 0.016924052, 0.014512985, -0.005223976, -0.013732592, 0.042653736, -0.037878193, 0.007110897, 0.015246788, 0.03869353, -0.031937886, 0.06816211, 0.050224714, -0.0067265243, 0.0007257949, 0.03147198, 0.001133463, 0.030330509, -0.001987382, 0.0722155, 0.0044843494, 0.005177385, 0.0007651057, -0.036037862, -0.05162243, -0.017401606, 0.004991023, -0.043306004, 0.009184181, 0.032147545, 0.054604232, 0.022666348, 0.07016551, 0.021781126, -0.024087362, 0.044330996, -0.0012572194, 0.04652076, 0.0020354288, 0.059076935, -0.016446497, 0.025718035, 0.05721331, -0.08558701, -0.019474888, 0.031868, -0.021443343, 0.0054860483, 0.053951964, -0.02534531, 0.007174959, -0.026253827, 0.01152536, 0.0064062136, -0.028886199, 0.02753507, 0.00025843247, 0.0028405732, -0.04661394, -0.014175204, 0.003578744, 0.03904296, -0.0236564, 0.075150706, -0.040021364, -0.06415532, 0.072914355, 0.03594468, 0.0014952684, -0.020336816, 0.0052996855, 0.008339725, 0.0174249, 0.032729927, 0.073706396, -0.009982046, -0.008817279, -0.049013358, -0.126447, 0.041186128, -0.01603883, 0.0054714885, 0.029957784, -0.030074261, -0.0017587967, 0.03908955, -0.07156323, -0.01628343, -0.009079352, 0.003881583, -0.019428298, -0.08973358, -0.03729581, -0.06746325, -0.007687456, -0.020604713, 0.01882262, 0.007699104, -0.02041835, 0.0060043694, 0.015770933, -0.030120851, -0.044494063, 0.009026937, 0.032543566, -0.008922108, 0.0013212815, 0.021105561, 0.0065867524, -0.013977193, 0.008182482, -0.0057801516, 0.00699442, -0.06923369, 0.010319827, 0.018694496, 0.07426549, -0.046171326, -0.02902597, 0.0861461, 0.021920897, 0.036177635, 0.008281487, 0.03191459, -0.001063577, -0.023132253, -0.03081971, 0.045845192, -0.0038844948, -0.018426599, -0.06238487, -0.0024867756, 0.045379285, -0.022188794, -0.049339492, 0.014990539, -0.0022567343, -0.01573599, -0.010145113, 0.0022873094, 0.0070992494, 0.02779132, 0.0006693765, -0.0046998314, -0.0035292413, -0.016050477, -0.0025624854, 0.035688434, 0.040394086, -0.022398451, 0.035175934, 0.015072073, -0.022654701, 0.03291629, 0.0019961179, 0.01093133, -0.009329776, 0.02206067, -0.041605443, -0.03699297, 0.022049023, -0.045379285, 0.009446253, 0.0055792294, -0.020628007, 0.062012147, -0.051482663, 0.0009587481, -0.016621212, 0.044261113, 0.019032277, -0.004158215, 0.019253584, 0.026743028, 0.0009332688, -0.014454747, 0.024529973, -0.028862903, -0.014361566, 0.018612962, -0.07393935, 0.023388503, -0.025461787, 0.027302116, -0.0021024027, -0.014699348, -0.008520264, -0.0053753955, 0.016958995, 0.000119297525, -0.0018272268, -0.026160646, -0.0114671225, 0.0039776764, -0.009516139, 0.022386804, 0.021117209, -0.017215243, 0.04111624, 0.03081971, -0.08120749, 0.015817523, -0.06699734, 0.0066391667, 0.011717547, -0.0040300908, 0.0025406461, -0.01807717, -0.08740405, -0.040673632, 0.02967824, 0.022852711, 0.03217084, 0.037994668, 0.07752683, -0.07151664, -0.0035962153, 0.02967824, 0.032427087, 0.0031041016, 0.03161175, -0.004501821, -0.028653245, 0.036923084, 0.014349918, 0.033848103, -0.0066333427, 0.011997091, 0.0013336572, 0.04451736, -0.025624854, -0.024739632, -0.0031768994, 0.036736723, 0.041349195, 0.037715126, -0.020499883, 0.011111869, 0.009941279, 0.08349043, 0.014419804, -0.02006892, 0.048314497, 0.02494929, 0.07477798, 0.023388503, -0.03147198, 0.014128612, -0.02221209, -0.0003672653, 0.0021111385, -0.002954138, -0.031868, -0.023609808, -0.053905375, -0.042746916, 0.017017232, 0.057632625, 0.054045144, -0.0015040042, 0.003505946, 0.009620968, -0.0037709302, -0.033778217, 0.03729581, 0.00020165012, 0.00799612, -0.0016699834, -0.037365697, -0.009475372, 0.0036224225, -0.013429753, -0.0073554977, 0.045891784, -0.010756615, 0.016318373, -0.011385588, -0.02215385, -0.042257715, -0.02683621, -0.038856596, -0.0022247033, 0.0007010436, -0.010366418, -0.012742541, 0.007623394, 0.038460575, -0.024343612, -0.018508133, 0.0024314492, 0.023237083, 0.010057755, 0.014862415, 0.015409855, 0.009743269, 0.005815095, -0.02494929, 0.034896392, 0.012765836, 0.012928903, -0.006423685, 0.02793109, 0.05288038, -0.015363265, -0.019405004, 0.021058971, -0.015934, 0.044284407, -0.0012353801, 0.006080079, 0.024739632, 0.00040038835, -0.049339492, -0.046567347, -0.02155982, -0.0413259, -0.014210146, 0.010989568, 0.07277458, 0.0054045147, 0.0021256981, -0.059263296, -0.0067964103, 0.0055442867, -0.016108714, -0.010214998, 0.0005179569, 0.02902597, 0.004673624, -0.011653485, -0.010005341, 0.057492852, -0.020348463, -0.05847126, -0.025298718, -0.021396752, -0.030586757, -0.046380986, 0.006755643, -0.03217084, 0.021280276, 0.007530213, -0.037458878, -0.058890574, -0.0413259, -0.020103863, 0.01339481, 0.04372532, -0.006837177, -0.035339, 0.006965301, -0.015130311, 0.0035816557, 0.020546474, 0.0022552784, 0.03680661, 0.0020063096, -0.079064324, 0.017436549, 0.004659064, -0.008357197, -0.009265714, 0.018286828, -0.057679217, 0.047522455, 0.020173749, -0.09933125, 0.00041385595, 0.01179908, 0.012171806, 0.0012310122, -0.011595246, -0.008217425, 0.059170116, 0.025531672, 0.040953174, 0.06266441, -0.008438731, 0.047615636, -0.029072562, 0.035735022, 0.00253919, 0.013499639, 0.004909489, -0.0054219863, 0.02245669, 0.00583839, -0.0021329778, -0.057492852, -0.00874157, 0.017168652, -0.041256014, 0.0046794475, 0.017983988, -0.006732348, 0.0343606, 0.03948557, 0.01702888, -0.0045600594, 0.09066539, -0.028793018, -0.027348708, 0.02793109, -0.016306724, 0.077014334, -0.0007833052, -0.036480475, 0.017855864, 0.0076816324, 0.06704394, 0.021583116, 0.011880614, -0.025648149, 0.0358515, -0.0069187107, -0.002575589, -0.017785978, -0.037715126, 0.0063246796, 0.0076408656, 0.007530213, -0.010814853, 0.00501723, -0.017459843, -0.041162834, 0.01956807, 0.05651445, -0.04661394, -0.027372003, -0.05269402, 0.0035641843, -0.030097555, -0.008922108, 0.02464645, -0.021024028, -0.03431401, -0.006481923, -0.04766223, -0.00020019418, -0.01588741, 0.010319827, -0.029818011, -0.032380495, 0.031402092, -0.024856107, -0.0186712, -0.0049589914, -0.06434168, -0.021932546, 0.0199175, 0.04188499, -0.0025144387, 0.032823108, -0.023796171, 0.010180055, -0.0078330515, -0.01652803, -0.05502355, 0.014221794, -0.016248487, 0.040603746, 0.031355504, 0.0002129338, -0.007244845, -0.042933278, -0.03743558, 0.010558604, -0.009673382, 0.020604713, 0.04544917, 0.002262558, 0.012288282, -0.006144141, 0.0236564, -0.062058736, 0.058145124, 0.052554246, 0.043585546, 0.016970642, -0.027954387, 0.00063770945, -0.0652269, 0.019253584, -0.0040417383, 0.039369095, -0.010046108, 0.0019801024, -0.03405776, 0.010651786, 0.00144431, -0.021874307, -0.0018214029, -0.006085903, -0.0009310849, 0.023586513, -0.013977193, 0.030843006, -0.04058045, -0.03312595, -0.06313032, -0.010552781, -0.035106048, 0.030936187, -0.019498184, 0.0253919, -0.020092215, -0.0148740625, -0.022747882, -0.001716574, -0.04018443, 0.0059985453, 0.03296288, -0.010296532, -0.008869694, 0.013359867, -0.028676542, -0.0070468346, 0.0060276645, 0.010715848, 0.011263288, 0.03545548, -0.0032031068, -0.017075472, -0.05353265, 0.016469792, 0.018997334, 0.029445287, 0.07324049, 0.021466639, -0.02201408, -0.00046736238, -0.03769183, 0.036014568, 0.01663286, -0.03624752, -0.011001215, -0.0088580465, 0.018729439, -0.0061616125, -0.01254453, 0.015083721, 0.03869353, -0.01299879, -0.014058727, 0.01628343, -0.0060043694, 0.013080323, 0.015666103, -0.0025406461, 0.013767535, 0.06881438, -0.026952688, 0.027045868, -0.0070293634, 0.018764382, -0.0078039328, 0.0002471488, -0.05856444, 0.008112595, 0.04575201, -0.006214027, -0.02928222, 0.0054452815, -0.010098522, -0.053020153, -0.00047318623, 0.022468338, 0.0013678721, -0.014827472, 0.035711728, -0.009195828, 0.0023222524, 0.015223493, -0.011903909, -0.050411075, -0.01762291, -0.03564184, -0.06084738, 0.008007767, -0.0016612476, 0.0057481206, 0.052647427, -0.012579474, -0.003401117, -0.016912403, -0.0008175202, -0.062478054, -0.036224224, -0.025834512, -0.005867509, -0.022549871, 0.05297356, 0.011106045, 0.083816566, 0.015747637, 0.04661394, -0.017506434, -0.005069644, -0.015013834, -0.0010744967, -0.04442418, 0.007885466, -0.008339725, -0.023877705, -0.003156516, 0.02648678, 0.04850086, 0.039415684, 0.0072856117, -0.041908283, -0.019603014, -0.0012339241, -0.0507838, -0.021222038, -0.032823108, 0.019439945, -0.009510315, -0.008677508, 0.03440719, -0.0027197287, 0.016795928, 0.011414708, -0.044284407, -0.07030528, 0.0050317897, -0.024017477, -0.025718035, -0.006272265, 0.010809029, 0.043399185, -0.006365447, -0.037621945, -0.0031536042, 0.01956807, 0.014454747, -0.005008494, 0.012824074, 0.015910706, -0.06816211, -0.024157248, 0.0033050238, -0.017250186, 0.014909006, -0.0068837674, -0.010657609, 0.017133709, -0.029538468, 0.00038728473, 0.023318617, -0.0012462997, 0.023970885, 0.021338515, 0.009941279, -0.011845671, -0.020907551, 0.019661251, 0.016993938, 0.0122649865, -0.011263288, -0.017739387, 0.013802478, -0.034267418, -0.021315219, -0.0015549627, -0.0087066265, 0.015328322, -0.021641353, 0.010348947, 0.0492929, -0.031355504, -0.0029905369, -0.02499588, -0.010325652, -0.0029017236, 0.011903909, -0.05847126, 0.0358515, 0.004737686, 0.026416894, 0.030493576, -0.032590155, 0.02793109, -0.037365697, 0.011461298, -0.0012251884, -0.0224101, -0.0017136621, 0.014617815, 0.0031768994, 0.007594275, 0.021885954, -0.0005871149, 0.014769234, -0.0066449903, -0.015794229, -0.023143902, 0.078645006, 0.062478054, -0.021256981, -0.0067964103, 0.016097067, -0.058890574, 0.0013220095, -0.006481923, 0.028793018, 0.032520268, -0.012439702, 0.0328697, -0.011059454, -0.022969186, 0.004053386, 0.0013140017, -0.0014559577, 0.04360884, 0.003366174, -0.01518855, 0.009306481, -0.020243635, -0.007809757, -0.011356469, 0.042211123, -0.009982046, 0.02494929, -0.04836109, 0.0408367, 0.027185641, -0.020290226, 0.001063577, 0.017285129, 0.03494298, 0.023819467, 0.005462753, -0.016889108, 0.014245089, -0.06345645, 0.009545258, 0.0072215497, -0.044354293, -0.021303572, -0.013185152, -0.007250669, -0.01926523, -0.014664405, 0.033242423, 0.041349195, -0.012579474, 0.03689979, -0.03720263, 0.0067905863, 0.026719734, -0.013592821, -0.013418105, -5.3096956e-05, 0.036853198, 0.014699348, -0.046124738, 0.003948557, -0.026673144, -0.042537257, -0.007174959, -0.052507654, -0.0012375639, -0.0056636753, 0.024366906, -0.0040417383, -0.020744484, -0.02215385, 0.024203839, 0.004493085, -0.026859505, 0.050876983, 0.018438248, 0.009586025, -0.009591849, 0.0011778697, 0.03247368, 0.011484593, -0.030446986, 0.0053753955, 0.014932301], [0.028476568, 0.016555363, -0.019711964, 0.044550605, 0.01914109, -0.0002992544, -0.032036137, 0.048132565, 0.010964151, 0.057982948, -0.004133244, 0.0131525025, -0.014014412, -0.027491529, 0.014708416, 0.019521672, -0.019286606, 0.0002331421, -0.00913959, -0.048759405, -0.0035091997, -0.0373643, -0.06581848, 0.009598529, 0.005910231, -0.008686248, -0.01577181, 0.004905604, 0.010494018, 0.037521012, 0.021245489, 0.018178437, 0.039468702, 0.0026458919, 0.03819263, -0.020405969, 0.027334819, 0.03608823, -0.029394444, -0.040565677, 0.0041668247, -0.029663092, 0.023708086, -0.03176749, 0.02424538, -0.00436831, -0.03602107, -0.024446866, -0.018850055, -0.0010214178, 0.012380143, -0.041483555, -0.00954256, -0.017294142, -0.046252035, 0.023036469, 0.0049615717, -0.088877335, 0.030177997, 0.0047852723, -0.027379593, 0.030580968, 0.041886523, -0.008926911, -0.025431903, -0.01045484, 0.015581518, 0.012917437, 0.033177886, 0.03590913, 0.010790649, 0.07428086, -0.0024038297, -0.015626293, -0.0063971533, -0.014820352, 0.10119032, 0.010857811, -0.028901925, -0.013656216, 0.03212569, -0.029707866, -0.0064587183, 0.026909461, 0.050819032, -0.0146076735, 0.0342077, -0.09357866, -0.0037106848, 0.006178878, 0.00031114763, 0.01979032, 0.0384165, 0.01342115, -0.050371286, 0.02310363, 0.037789658, -0.010762665, -0.03714043, 0.011115264, -0.039289605, -0.03340176, -0.052744333, -0.07141529, 0.0071583195, 0.01864857, 0.029372057, -0.022208141, 0.012995792, 0.0033608843, 0.016365072, -0.031991363, 0.002136582, 0.045938615, 0.002971906, 0.047460947, -0.02270066, -0.01994703, -0.017663531, -0.036513586, -0.07204214, -0.07343014, 0.03185704, 0.04564758, -0.025767712, 0.034342024, -0.025924422, 0.018256793, -0.019073928, -0.01382412, -0.05502783, 0.024827449, -0.0052554044, -0.0031510037, 0.0266632, -0.02634978, 0.032551046, 0.001171832, -0.01954406, 0.007466144, -0.07083322, 0.030177997, 0.00031971774, 0.01933138, -0.0048944103, -0.015939714, 0.0024290155, -0.01731653, -0.06411705, -0.04817734, -0.019868674, -0.052744333, -0.03738669, 0.019521672, 0.025275193, -0.024514027, 0.049386248, 0.046252035, -0.007925083, 0.03161078, 0.008786991, -0.05399802, 0.012424918, 0.025521452, -0.0236857, -0.05458009, 0.05650539, 0.015346453, 0.013275633, 0.019029154, 0.063982725, -0.050460838, 0.024536414, -0.0014159929, -0.04208801, 0.05001309, 0.055744223, 0.04296111, -0.06640055, -0.036938943, -0.021984268, 0.032618206, 0.07463905, -0.03178988, 0.0077403877, 0.05310253, 0.035125576, 0.020305226, -0.010835423, -0.08310143, -0.01080744, -0.035439, -0.025946809, -0.056594938, -0.012380143, -0.04620726, 0.004094066, -0.045849066, 0.027021397, 0.0082552945, -0.018704537, -0.06510209, 0.010572374, 0.0114007015, -0.056684487, 0.016163586, 0.027178109, -0.016219554, 0.008356037, 0.01784263, 0.05780385, 0.0061341035, -0.029215347, -0.026864687, -0.02375286, 0.01948809, -0.06353498, -0.026506491, 0.02112236, -0.05220704, 0.113279425, -0.020976843, 0.0100070955, -0.009173171, -0.0052134283, 0.038013533, 0.01898438, 0.04103581, 0.031431682, 0.013555473, 0.0055240514, -0.03633449, 0.014809159, 0.04629681, -0.05440099, -0.04862508, -0.015838971, 0.009822401, 0.0599978, -0.0011844249, -0.006587445, 0.017003108, -0.011389508, 0.018323954, 0.028476568, 0.0626395, -0.008574313, -0.022510368, 0.0067721396, -0.018637376, 0.027827337, 0.032506272, 0.055788998, 0.037229978, -0.032036137, 0.055341255, -0.008065003, 0.006329992, -0.020058965, 0.01673446, -0.027670627, 0.027760176, -0.015100192, 0.07074367, -0.026573652, 0.0011053699, 0.03924483, -0.039737348, -0.09147426, -0.034252476, 0.02375286, -0.028431794, 0.00025517953, -0.0058094882, 0.041774586, -0.021670846, 0.065012544, 0.034252476, -0.03380473, 0.070564575, -0.005358945, 0.038953796, 0.021413393, -0.016219554, 0.056594938, 0.03978212, 0.025521452, -0.041908912, -0.06031122, 0.027312431, -0.013309213, 0.022219334, 0.037789658, 0.05001309, 0.032215238, -0.026148295, -0.0005838172, 0.002619307, -0.030245159, -0.0005156061, -0.005311372, -0.00231568, -0.01329802, -0.05471441, -0.024446866, 0.049341474, 0.014204703, 0.10235445, 0.0006170483, -0.0016846397, 0.053460725, 0.0038450083, 0.0040380983, -0.038013533, -0.0061844746, -0.02440209, 0.029372057, 0.029707866, 0.07428086, -0.045781903, 0.0111432485, -0.029058635, -0.06904224, 0.00994553, 0.03427486, 0.024066282, 0.0035008045, 0.00013852103, -0.0025339555, -0.015346453, -0.04493119, 0.0068169143, -0.001085781, -0.049431022, -0.08672816, -0.07378834, -0.012066722, -0.02626023, 0.00061809766, -0.0006506291, -0.036603134, -0.018995572, -0.034834545, -0.038326953, -0.007706807, -0.014047992, 0.018301567, -0.025319967, 0.058654565, -0.006178878, 0.0011452471, 0.055654675, 0.019857481, 0.049028054, 0.0011494448, -0.00011167384, -0.020327613, -0.018659763, 0.0023422649, -0.0002247469, 0.04952057, -0.002301688, 0.038617987, 0.06425138, 0.0038897828, -0.026013972, -0.03290924, -0.009643303, -0.011271975, 0.01685759, -0.041550715, 0.0076620323, -0.062863365, -0.02310363, -0.018424697, -0.050729483, 0.031274974, -0.024469253, -0.0014705617, 0.015290484, 0.014394995, -0.001714023, -0.0017084262, 0.034744993, 0.016376264, -0.022846177, -0.011462267, -0.027357206, 0.03293163, 0.024782673, 0.002177159, 0.020697001, -0.013107728, -0.040543288, 0.07235555, 0.041573104, -0.033088338, 0.0069736247, -0.024111057, 0.0039373557, -0.026931848, 0.014820352, 0.007852324, -0.03299879, 0.017954566, -0.03899857, 0.0024444067, -0.026864687, 0.027715402, 0.06308724, 0.027715402, -0.013465924, -0.017820243, -0.0012326973, 0.01580539, 0.04150594, -0.030580968, 0.049654897, -0.0111432485, 0.006878479, 0.051042903, -0.012111496, -0.054087568, 0.05126678, -0.09232497, 0.07571364, -0.05641584, 0.01994703, -0.012044335, -0.014182316, -0.009078025, -0.009178768, 0.023372278, 0.024737898, -0.041550715, -0.061161935, -0.012133883, -0.041080583, -0.035730034, 0.032506272, 0.04255814, -0.00035592212, -0.013756958, -0.0013250447, -0.041864138, 0.01864857, -0.10333949, -0.0037582577, -0.01868215, -0.046744555, -0.03138691, -0.026237844, -0.092683166, -0.01691356, 0.035550933, -0.0016342684, 0.023887184, 0.024916997, 0.015044224, -0.068907924, -0.008283278, 0.0038310161, 0.055923324, -0.031991363, 0.057938173, -0.03452112, 0.009430625, 0.0060949256, 0.017305335, -0.00044144836, 0.03232717, 0.009923143, -0.004480246, 0.05708746, 0.0016622525, 0.0064531215, -0.0023128816, 0.044864025, 0.059236635, -0.060042575, -0.05641584, -0.03154362, 0.02201785, 0.016678493, 0.041796975, -0.019062733, 0.020450743, 0.016398652, 0.05628152, 0.009570545, -0.029551156, 0.024536414, 0.013835314, -0.02489461, 0.0017713902, -0.05538603, -0.030312322, -0.046475906, 0.012939824, 0.015838971, -0.0076956134, 0.05471441, 0.024625963, 0.008781394, -0.01954406, 0.028409407, -0.047237072, -0.04517745, 0.0030362692, -0.01552555, 0.013197278, -0.023618536, -0.036961332, 0.014137541, -0.011322346, -0.0007006506, -0.01407038, 0.0145069305, 0.002764824, -0.00061355025, 0.01731653, -0.03049142, -0.047729593, -0.01357786, 0.03040187, -0.009738449, 0.017327722, -0.003601547, 0.016891172, -0.05319208, -0.014092767, -0.010751472, -0.019465704, 0.0112216035, -0.0005355447, 0.016006876, 0.038685147, 0.021066392, -0.027961662, 0.020372387, -0.0017042286, 0.020529099, -0.034431573, -0.021581298, -0.029304896, 0.033871893, 0.06541551, -0.0032825288, -0.019364962, 0.01642104, -0.028476568, 0.03257343, 0.027513916, 0.041394003, -0.0011998161, -0.04267008, -0.035640486, -0.06375886, -0.0041780183, -0.01657775, -0.028252695, -0.025028933, 0.06120671, 0.054132342, -0.021626072, -0.035841968, 0.01713743, -0.010846617, -0.0013523292, -0.004748893, 0.024916997, 0.036916558, -0.01317489, 0.007891501, 0.018570215, 0.077146426, 0.009016461, -0.02294692, -0.033603244, 0.0069568343, -0.02724527, -0.005154662, 0.010790649, -0.017226981, 0.024267767, -0.004564198, -0.009229139, -0.049475797, -0.018368728, 0.026461717, 0.001928101, 0.015626293, 0.0030334708, -0.021256683, -0.021849945, 0.0019812707, 0.0137905395, 0.017226981, 0.0010375086, 0.04817734, -0.031722717, 0.006380363, 0.030580968, 0.0028935506, -0.018670958, 0.0014103961, 0.02643933, -0.016018068, 0.041394003, 0.02334989, -0.048445985, 0.021670846, 0.06357976, 0.006324395, 0.009430625, -0.028095985, 0.009156381, 0.03129736, 0.022801403, 0.01382412, 0.056371067, 0.007096755, 0.049744446, -0.012133883, 0.0050930968, 0.008663861, -0.01577181, 0.014215897, -0.0012417921, -0.012839082, -0.010119032, 0.00010948759, -0.025364742, -0.0065650577, -0.008675055, 0.026887074, 0.008591102, 0.05641584, -0.008126568, 0.02675275, -0.0076564355, 0.015458388, -0.012458499, 0.03817024, -0.019723156, -0.021189522, 0.020540291, -0.008641474, 0.03040187, -0.010202984, 0.017988147, -0.002724247, 0.00012190551, 0.06765424, 0.010426857, 0.0038701938, 0.00031394605, 0.011389508, -0.02022687, 0.011921205, -0.035528548, -0.039826896, 0.003290924, 0.007376595, 0.009161977, -0.011014521, -0.028095985, -0.025566226, 0.0022079414, -0.0022135382, 0.06819153, -0.057042684, -0.011299958, -0.03463306, -0.032371946, -0.009760836, -0.014450963, 0.06411705, -0.034230087, -0.024558801, -0.046968427, -0.03991645, -0.028252695, -0.02870044, -0.019308994, -0.0049671684, -0.047147524, 0.04361034, -0.019756738, -0.010919375, 0.030648129, -0.041371617, -0.015010644, 0.03373757, -0.017372496, -0.007443757, -0.03187943, -0.032954015, 0.025946809, 0.004908402, -0.03049142, -0.027894499, -0.022185754, -0.020450743, 0.039132893, 0.047550496, 0.01045484, 0.0038869844, -0.06250517, -0.028498955, 0.022476787, 0.013230858, 0.024760285, 0.061833553, -0.0043235356, -0.008658265, -0.0050875, 0.0009738449, -0.06040077, 0.0015866956, -0.04540132, -0.03940154, -0.0021449772, -0.036737457, 0.04920715, -0.031342134, 0.028678052, -0.022622304, 0.043005887, -0.007678823, 0.033603244, -0.03550616, 0.016376264, -0.008977283, -0.03550616, -0.03129736, -0.01926422, -0.02177159, 0.011064893, -0.0055044624, -0.017853823, -0.021782784, -0.03794637, -0.019275412, 0.015626293, -0.008775798, 0.017932178, 0.0031538024, -0.010605955, 0.009850385, -0.020943262, -0.022320077, 0.030827228, 0.011596589, -0.008322456, 0.05238614, 0.021290263, -0.009033251, 0.025006546, -0.021726815, -0.008809378, -0.025879648, -0.004608973, -0.023327503, 0.014238284, 0.031028712, 0.007147126, -0.06429615, 0.00047992644, 0.011977172, 0.050236963, 0.044953573, -0.0153240645, 0.017585175, 0.01673446, -0.01264879, -0.0068896725, -0.003178988, -0.030648129, -0.012133883, 0.019723156, 0.020618647, -0.018726924, -0.01447335, 0.040431354, 0.0068672854, 0.004063284, -0.010952957, 0.022208141, 0.014059186, 0.04305066, 0.037588175, 0.008826169, -0.003414054, 0.04643113, 0.010549986, 0.041774586, -0.0016888373, -0.008395215, -0.023820022, 0.014618867, -0.038729925, -0.019342573, 0.02610352, 0.0117533, -0.021391006, -0.040073156, -0.031252585, -0.02424538, 0.045266997, 0.035640486, 0.020842519, -0.007326224, 0.05390847, -0.009682481, 0.01620836, 0.007997841, -0.0059829894, 0.010191791, 0.02183875, -0.0011760297, -0.04540132, 0.059639603, -0.031901814, 0.047281846, 0.04484164, 0.03129736, -0.006268427, -0.042782012, -0.024939384, -0.024469253, -0.038461275, -0.047281846, 0.026707975, 0.034677833, 0.044237185, -0.009307494, 0.040162705, -0.007348611, -0.005904634, -0.0127943065, -0.013186083, -0.0072702556, 0.023775248, -0.049968317, -0.00822731, 0.0117980745, -0.0033077146, -0.0048972084, 0.02007016, 0.055654675, -0.0012403929, -0.008574313, 0.0514011, -0.0010871802, -0.0047880705, -0.033894278, -0.01043805, 0.008109777, 0.023596149, -0.0066546067, 0.01914109, 0.0060501513, -0.028006436, -0.01540242, -0.039110508, -0.0001422814, -0.06066942, -0.027737789, -0.028185533, -0.00768442, -0.021301458, 0.022868564, 0.03987167, 0.025812486, -0.043073047, 0.0054792766, -0.031812266, 0.048580308, -0.016309103, 0.018189631, 0.02180517, -0.049028054, -0.0019253026, 0.010600357, -0.033513695, -0.016006876, -0.0039933235, -0.027290044, 0.03324505, -0.025499064, -0.016924752, 0.030916777, -0.03152123, 0.021726815, 0.046834104, -0.023887184, -0.028767603, 0.017820243, 0.023394665, 0.023014082, -0.021760397, 0.036737457, -0.00084092066, 0.01617478, -0.048356436, -0.02675275, 0.012436111, 0.01661133, -0.0071919006, -0.057535205, 0.029215347, 0.0387747, -0.024558801, 0.04889373, -0.028476568, -0.035618097, 0.0024038297, 0.0047796755, -0.012368949, 0.016745655, 0.023797635, 0.02814076, 0.032215238, -0.03326744, 0.031431682, -0.0009906354, 0.021189522, 0.02242082, -0.026327392, 0.000106601736, 0.0037862416, 0.033379372, 0.021424588, -0.009917547, 0.0046061743, -0.037409075, 0.0023660513, -0.041550715, 0.0066993814, 0.0022765023, 0.037834432, 0.009357866, -0.040162705, 0.011266378, -0.03819263, -0.008809378, 0.0046145697, -0.00086120906, -0.00542051, -0.015547938, 0.02845418, -0.018659763, 0.0038534035, -0.018760506, 0.0069064633, 0.011406298, 0.04542371, 0.022409625, 0.0065706545, 0.042826787, -0.009749643, -0.016286716, 0.0065426705, 0.045513257, 0.010538792, 0.007729194, -0.040185094, 0.011507041, -0.00095635484, -0.045692354, -0.00013825869, 0.005454091, 0.030133223, -0.005649979, 0.03170033, 0.036983717, -3.7494254e-05, 0.00027196997, 0.018917216, 0.0011606384, -0.038461275, 0.014081573, 0.03040187, -0.007124739, -0.027939273, 0.010628342, 0.050505612, 0.012872662, -0.0059326184, 0.042267106, -0.048445985, -0.0034532316, 0.017518014, -0.009133994, -0.025409516, 0.012033141, 0.0021757598, -0.011132054, -0.026797526, 0.01264879, -0.0143278325, -0.0214022, 0.002971906, -0.02161488, 0.02099923, 0.026148295, 0.01713743, -0.03243911, -0.0035903533, 0.007667629, 0.018547827, -0.03129736, -0.027110945, -0.0033077146, 0.045378935, 0.03170033, 0.037185203, 0.0130741475, 0.13065192, -0.015122579, -0.025006546, 0.006257233, -0.008361634], [0.03192388, 0.009097946, -0.011602133, 0.008875752, -0.015061153, 0.012220673, -0.005128479, 0.07835643, -0.009182019, 0.040163077, -0.0570258, 0.0011740254, -0.01988937, -0.07090993, 0.02185909, 0.041652378, -0.026206888, 0.011812316, -0.014388566, -0.004681088, -0.01937292, -0.028536923, -0.049170945, 0.009272098, 0.037760977, -0.024477378, 0.0016319252, 0.0048792614, 0.0070981993, -0.019096678, 0.015997972, 0.036944266, 0.02870507, -0.014376556, 0.04907486, -0.011536075, -0.01569771, 0.007146241, -0.03017035, -0.002552229, -0.028560944, 0.04025916, -0.0072483304, -0.022723846, 0.008761652, -0.038073253, 0.015997972, -0.034830417, -0.011169755, -0.04297353, -0.0031467483, 0.0041226004, -0.0058190823, -0.036175594, -0.06874804, 0.001974224, 0.06644203, -0.048882693, 0.062983006, -0.039322343, -5.592384e-05, -0.00509545, 0.065433145, 0.003044659, -0.024309231, -0.0052996282, -0.019481014, 0.021991206, -0.005566862, 0.061253496, 0.017583357, 0.03391762, 0.007368435, -0.03384556, -0.012647045, -0.047993917, 0.059283774, -0.019601118, -0.038169336, 0.04688895, 0.029545804, -0.03257245, 0.01693479, 0.016094055, 0.0012678573, -0.01862827, -0.0064376225, -0.13711174, -0.0407636, 0.00072438264, 0.014400576, -0.0053957123, 0.03141944, -0.007590629, -0.048834648, 0.0013369176, 0.055056084, 0.012262709, -0.04049937, -0.011680201, -0.021486765, -0.051837273, -0.04518346, -0.09661238, 0.06038874, 0.036319718, 0.047537517, -0.027504021, -0.0062514595, 0.004326779, 0.009410218, 0.0027999454, -0.003855367, 0.06605769, -0.00859951, 0.03876986, -0.01864028, -0.07653084, -0.018592237, 0.0052816127, -0.06384776, -0.017499283, 0.066826366, 0.0053236494, 0.012502919, 0.015121206, 0.028873216, 0.0555365, 0.002388586, -0.0065156906, -0.029761992, 0.020081539, -0.01399222, 0.0005348421, 0.05375895, 0.028056502, 0.06322321, -0.009001861, -0.036776118, -0.00062304415, -0.060052447, 0.005683964, 0.0045850044, 0.033821538, -0.019673182, 0.026302971, -0.031467482, -0.07331203, -0.013619895, 0.0030026224, -0.033028845, -0.038385525, -0.009212045, 0.021726975, 0.022255437, -0.024501398, 0.04350199, 0.031731714, -0.013643916, 0.01844811, 0.037472725, -0.071390346, 0.034277935, 0.01080944, -0.0017280092, -0.07662692, 0.042565174, -0.022831941, -0.04914692, 0.012671066, 0.039298322, -0.021763006, 0.014340525, -0.013607885, -0.025101922, 0.010088811, 0.046048217, 0.04513542, -0.023456486, -0.08234391, -0.06476056, 0.06528902, 0.014880996, -0.017523304, 0.016622517, 0.04001895, 0.012803182, -0.008755647, 0.031779755, -0.052461818, -0.00527861, 0.003633173, 0.00043725688, -0.011494039, -0.025798531, -0.023240296, 0.021967186, 0.022195384, -0.029593846, -0.009188024, -0.04816206, -0.016598497, -0.00848541, -0.014953059, -0.03242832, 0.04025916, 0.042853426, -0.025582341, 0.033509266, 0.038433567, 0.043574054, 0.026615243, -0.02089825, -0.03214007, -0.026471118, 0.0021393683, -0.09315336, -0.0037472728, 0.0019081665, -0.058370978, 0.049243007, -0.018736362, 0.008077054, -0.033172973, -0.009524318, 0.058082726, -0.00034699054, 0.038697798, 0.028897237, 0.015325384, -0.02402098, -0.07086188, 0.0006388079, 0.048978776, -0.085034266, -0.04218084, -0.00969847, 0.0061013284, 0.04487119, -0.009464266, 0.014160367, 0.07633867, -0.021967186, -0.026110804, -0.0013406709, 0.02406902, 0.014052273, 0.048186082, 0.015121206, 0.0007630414, 0.04833021, 0.0059842262, 0.0461443, 0.053326573, 0.009614397, 0.06596161, -0.009722491, -0.022675803, 0.04739339, 0.020658042, -0.019541066, -0.023576591, -0.007140236, 0.06826762, -0.030338496, 0.007590629, 0.03214007, -0.06658615, -0.020465873, -0.02456145, 0.058082726, -0.057314053, 0.026230909, -0.0069480683, 0.04073958, -0.021787027, 0.0010058784, -0.0019862347, -0.008413347, 0.071342304, 0.01643035, 0.013920157, 0.008581495, 0.0064256117, 0.03096304, -0.01669458, -0.0043928362, -0.05087643, -0.027696189, 0.0030326485, 0.01348778, -0.017126957, 0.024597483, 0.02111444, 0.055392377, 0.026735349, 0.009248077, -0.008671573, -0.02723979, 0.02012958, -0.019517045, 0.024093041, -0.07417678, -0.025053881, -0.010575236, 0.01695881, -0.003025142, 0.04342993, -0.011223802, -0.017967692, 0.066682234, 0.0099326745, -0.008089065, -0.028777132, 0.019456992, -0.041051853, 0.0043207733, 0.019505035, 0.046528634, -0.04809, 0.00029331868, -0.057842515, -0.09569958, 0.051645104, 0.041436188, 0.021066397, -0.009758523, -0.006972089, -0.02456145, 0.011824327, -0.04391035, -0.04126804, -0.027095664, 0.015145227, -0.059956364, -0.10963175, -0.026086783, 0.0017565341, 0.0101188375, 0.0026378038, -0.0024726596, 0.01990138, 0.0054017175, -0.040811643, 0.020946294, -0.016862728, 0.010953566, 0.032019965, 0.026711328, -0.039634615, 0.0015328387, 0.03610353, 0.06740287, 0.017331136, 0.0004308763, -0.024693565, -0.03701633, -0.034878463, -0.002769919, 0.01546951, 0.061253496, -0.047561537, -0.010845472, 0.035695173, 0.0038043226, -0.052942235, -0.045880068, -0.006104331, 0.0045579807, 0.029810034, -0.042877447, 0.04833021, -0.04712916, -0.044655, -0.01862827, -0.010773409, 0.040187098, 0.004915293, -0.03833748, 0.0058250874, -0.017763514, -0.018940542, -0.027431957, 0.005698977, 0.028248671, 0.017355157, -0.031971924, -0.0015133217, 0.015973952, 0.019312866, 0.02699958, 0.029978182, -0.0073804455, -0.011602133, 0.03367741, 0.020573968, 0.006653811, 0.019060647, 0.04321374, 0.033965662, -0.014820944, 0.024117062, -0.015973952, 0.017331136, 0.036992308, -0.0014923033, 0.008653558, -0.010653304, -0.023252307, 0.027407937, -0.0042276923, 0.030842936, -0.015313374, -0.021198513, 0.037160452, -0.0012438362, -0.07331203, 0.003299882, -0.024933776, 0.012358793, 0.019216783, -0.027311852, -0.033293076, 0.026807413, -0.017271083, 0.023600612, -0.029858077, 0.038409546, -0.0027398928, -0.037929125, -0.026399055, 0.0012333271, 0.017295105, 0.014868986, -0.0042457078, -0.053134404, -0.014604755, -0.035238776, -0.015853846, 0.025630385, 0.02699958, -0.0022219406, 0.0068099475, 0.0026528167, 0.03096304, -0.010371057, -0.10175286, 0.0019757254, 0.03607951, -0.019997464, -0.035238776, -0.048882693, -0.035695173, 0.006257465, 0.03257245, -0.058515105, -0.013163496, 0.010256958, 0.021726975, -0.07340811, 0.023756748, -0.0130433915, 0.05865923, -0.0035671154, 0.023540558, -0.02870507, -0.0099326745, 0.02502986, -0.0017039882, 0.019937413, 0.0008429862, -0.0064976746, -0.045567796, -0.025390174, -0.0063475436, -0.016622517, -0.027792273, 0.002571746, 0.03235626, -0.017979702, -0.019973444, -0.01324757, -0.004302758, 0.05087643, -0.006287491, -0.012935297, -0.018580226, 0.010509178, 0.04787381, 0.028945278, -0.014424598, 0.04326178, -0.00085274474, 0.0028389795, -0.009806564, -0.052461818, -0.04645657, -0.040811643, -0.004636049, -0.015577605, 0.008815699, 0.039562553, 0.020994335, 0.02061, 0.03360535, -0.030050244, -0.020802168, 0.012418846, 0.022891993, -0.033221014, 0.007782797, -0.011169755, -0.01937292, 0.013019371, -0.031827796, -0.0067859264, -0.015805803, 0.033989687, 0.017763514, 0.03804923, 0.012028505, -0.025222028, -0.02944972, -0.014124336, -0.018340018, -0.015889877, 0.005593885, -0.005882137, 0.021162482, -0.0026798404, -0.012647045, -0.008287238, -0.006257465, 0.007434493, -0.015997972, -0.014544702, 0.008629536, 0.027696189, 0.004705109, 0.008137107, 0.0035761232, 0.062214334, 0.0036692044, 0.01622617, -0.0008384823, 0.043814264, 0.035935383, 0.018484144, -0.041340105, 0.0294257, -0.04645657, 0.02529409, 0.0018811428, 0.043526012, 0.01963715, 0.034998566, -0.013379685, -0.03290874, -0.006335533, 0.01277916, 0.008083059, -0.011680201, 0.05375895, 0.030866958, -0.013764021, -0.031467482, 0.032740593, 0.04907486, 0.003290874, 0.015829826, 0.032956783, 0.049483217, -0.0029410685, -0.019264825, -0.0062995018, 0.067931324, 0.031491503, -0.041388147, -0.020453863, -0.04326178, -0.007908907, 0.017343147, 0.005605896, -0.0476336, 0.015769772, -0.015277342, -0.031539544, -0.033701435, -0.05443154, 0.00071650074, 0.012262709, 0.018207902, -0.014268462, -0.002330035, 0.0021979196, 0.009109956, 0.007188278, 0.01769145, 0.038625732, 0.0049573295, -0.014220419, 0.02089825, -0.020201642, -0.022783898, -0.05443154, -0.0025642395, 0.034878463, -0.031347375, 0.0030401552, 0.01938493, -0.040619474, 0.012016495, 0.048186082, 0.004792185, 0.031635627, -0.0338936, 0.01937292, 0.03925028, -0.003016134, 0.018460123, 0.029713951, 0.035503007, 0.025702447, -0.037953146, -0.022891993, 0.015553583, -0.011397954, 0.013920157, -0.036511887, -0.026423076, -0.01227472, -0.046696782, 0.003044659, -0.017487273, 0.03247636, 0.058755312, -0.022819929, 0.01914472, -0.00957236, 0.020429842, -0.004326779, 0.023588601, 0.029737972, 0.12442867, -0.03218811, -0.050924476, 0.03610353, 0.0056179063, 0.022471625, 0.024045, -0.015109195, 0.03408577, 0.017126957, 0.049050838, 0.0035881337, -0.017799545, -0.04222888, 0.025798531, -0.038121294, 0.027552063, -0.034181852, -0.036151573, 0.015529563, 0.017078916, 0.02575049, -0.02163089, -0.015193269, -0.045687903, 0.0012258205, 0.02135465, 0.07388853, -0.018568216, -0.046985034, 0.0020733108, -0.026783392, -0.023156224, -0.0022324496, 0.05745818, -0.017739493, -0.0022864968, -0.044534896, -0.021871101, -0.016814684, -0.010088811, -0.043069616, -0.016466381, -0.03067479, 0.005933182, -0.006833968, -0.009758523, -0.0013324136, -0.018748375, -0.004681088, 0.060725033, -0.010989598, -0.013800052, 0.01165618, -0.002721877, 0.003001121, 0.020237675, -0.00932014, -0.035887342, -0.008293243, -0.023360401, 0.0038883958, 0.030002203, -0.014028251, 0.00288552, -0.042060733, -0.020742115, 0.03435, -0.011632158, 0.015901888, 0.06797937, 0.02457346, 0.012118584, -0.018027745, -0.0007600388, -0.07143839, 2.6530983e-05, -0.011397954, -0.0036151572, 0.020345768, -0.055824753, 0.0148930065, -0.04246909, 0.03749675, 0.008275227, 0.046024196, -0.016994843, 0.0126350345, -0.027792273, 0.006335533, 0.012466888, 0.016574476, -0.01918075, 0.008893767, -0.009842596, 0.0029635883, 0.02995416, 0.025125943, -0.03509465, -0.030482622, -0.019925402, -0.01988937, -0.031563565, 0.036319718, -0.012971329, 0.030050244, -0.041075874, -0.025414195, -3.4764736e-05, 0.039706677, -0.024141083, 0.001828597, 0.030458601, 0.023120191, -0.013139475, 0.026567202, -0.017595368, -0.0052455813, -0.013788042, -0.009632412, 0.0030131314, 0.040355243, -0.022027237, 0.006833968, -0.054575663, 0.019937413, 0.03338916, -0.009680455, 0.04837825, -0.0032548427, -0.009073924, -0.00039184222, -0.0010674322, 0.014460629, -0.021498775, -0.036776118, -0.0028810161, 0.016778653, 0.016046014, 0.019829318, -0.0476336, 0.021474754, 0.020345768, -0.0011920411, -0.02651916, -0.032956783, -0.002059799, 0.016778653, 0.032500383, 0.02085021, 0.052077483, 0.07321594, -0.025678426, 0.057314053, -0.03365339, 0.02136666, 0.030482622, 0.003107714, -0.03756881, -0.004308763, 0.019252814, -0.017451242, -0.028633006, -0.015445489, -0.03266853, -0.025630385, 0.04684091, -0.016058024, 0.039466467, 0.0011087183, 0.041075874, -0.024117062, 0.026447097, 0.009968706, -0.04201269, -0.012430856, 0.020814179, 0.033028845, -0.056881677, 0.025198007, 0.0051885312, 0.03905811, 0.06456839, 0.017090926, -0.021979196, 0.010202911, -0.013752011, -0.019120699, -0.0441986, -0.025270069, 0.028633006, 0.0100467745, 0.014052273, -0.030482622, 0.06139762, 0.020273706, 0.037400663, 0.009674449, 0.012971329, -0.00027586592, 0.005716993, -0.082055666, 0.02259173, -0.016274214, 0.003879388, -0.01718701, 0.02551028, 0.011878374, 0.054863915, 0.0018436101, -0.020910261, 0.0067559, 0.009746512, -0.05452762, 0.022279458, -0.011764274, 0.0029275569, 0.052846152, 0.02160687, 0.023720717, -0.027816294, 0.031107167, -0.022735856, -0.031035105, -0.06058091, -0.02776825, -0.051981397, -0.022195384, 0.0036662018, 0.01861626, 0.060725033, 0.0087856725, -0.031107167, -0.015277342, -0.040691536, 0.0023315363, -0.0065937587, -0.001462277, 0.0040115034, -0.030770874, -0.042445067, -0.004699104, -0.02577451, -0.003879388, 0.015661677, -0.026351014, -0.027504021, -0.014100314, -0.023948915, 0.022219405, -0.013019371, 0.031947903, -0.022063268, -0.008113085, 0.0045009307, -0.013055402, 0.011890384, 0.0021498776, 0.03485444, 0.00083022506, -0.0072303144, 0.021714965, 0.025486259, -0.018315997, -0.012959318, 0.007974965, -0.009986722, -0.035887342, 0.059235733, 0.03975472, 0.017727483, 0.048426293, -0.029497761, -0.028560944, -0.03312493, 0.031971924, -0.07667496, 0.020093549, 0.023240296, 0.0121546155, 0.043574054, 0.0045519755, -0.006209423, 0.017763514, 0.038193356, 0.014760891, -0.039586574, 0.033028845, 0.008449379, 0.0051645106, 0.0062034177, 0.004086569, -0.03189986, 0.023000088, -0.02010556, -0.05111664, -0.021666924, 0.036439825, 0.08123895, -0.047321327, 0.009830586, 0.006185402, -0.02776825, -0.034830417, 0.04981951, 0.027311852, -0.017006854, -0.013944178, 0.026230909, 0.015925908, 0.01841208, 0.008923793, -0.0018481141, 0.0050774342, 0.037977166, 0.003672207, 0.010028759, 0.024957797, 0.0076927184, -0.015589615, 0.0075485925, 0.026783392, -0.0116381645, 0.02772021, -0.018207902, -0.010941556, -0.0043688156, -0.059572026, 0.015997972, -0.0040024957, 0.0087856725, 0.008923793, 0.021750996, -0.021330629, -0.019709213, -0.046985034, -0.00072475796, -0.015025122, -0.06552923, 0.0130794225, 0.021498775, -0.03540692, -0.018147849, 0.00957236, 0.03980276, 0.026182866, 0.000116445444, 0.022507656, -0.014376556, 0.031203251, 0.021558829, -0.011536075, 0.04189259, -0.021498775, 0.004831219, 0.00037607845, 0.001196545, -0.004080564, 0.017835576, -0.04686493, 0.026711328, -0.025342133, 0.033773497, -0.030482622, 0.019469002, -0.0417965, 0.031011084, -0.012911276, 0.006431617, 0.007590629, 0.0031047114, 0.0018631271, 0.043790244, 0.02649514, -0.035959404, 0.029257553, 0.1296172, -0.026591223, -0.026375035, 0.027912376, -0.016550453], [-0.01544169, 0.025674414, -0.026577301, 0.03903252, 0.019192146, -0.0032150894, -0.06431337, 0.0010707319, 0.001666869, 0.0077787223, -0.034170818, 0.019747768, 0.021055797, -0.0142031135, -0.022375403, 0.022016563, -0.031994626, -0.0253503, -0.030489814, -0.0228963, -0.01905324, -0.08880708, -0.048339203, 0.0016538467, 0.017525276, -0.007825024, 0.002697087, 0.011737537, -0.028406227, 0.035883985, 0.03914827, -0.0063259997, 0.045445334, 0.02015291, 0.0077092694, 0.013126594, -0.029494323, 0.054173246, 0.019979278, 0.0047488404, -0.017594729, -0.013589613, -0.009225657, -0.026947716, -0.009821795, 0.007662968, -0.0015395388, -0.026392095, -0.0004373361, -0.030860228, -0.026484698, -0.019851947, -0.0052234353, -0.010163271, -0.030235153, 0.0045028618, 0.028035812, -0.01810405, 0.06579503, -0.014793463, -0.04076884, 0.037273046, 0.058710832, -0.0050411215, -0.024655772, -0.0067137782, 0.008855242, 0.0072057364, 0.0041469154, 0.02896185, -0.028012661, 0.010510536, 0.022398554, -0.010823074, -0.027294982, -0.0724162, 0.02205129, 0.019238448, 0.0056661973, -0.019087967, 0.04169488, -0.012837207, 0.027688548, 0.002824417, 0.03764346, -0.02676251, 0.03433287, -0.10908732, -0.054821473, -0.011899593, 0.003735986, 0.020233938, 0.04053733, 0.03884731, -0.015048124, 0.0021761903, -0.0019924294, 0.0005925199, 0.003556566, -0.0060887025, -0.027619096, -0.037180442, -0.056071624, -0.044936012, 0.016402455, 0.025211396, 0.032411344, 0.0021530392, -0.019747768, -0.052737884, 0.037527706, -0.027619096, -0.034911647, 0.0118764425, 0.0019085072, 0.0034118728, -0.06306321, -0.04125501, -0.030096248, 0.014191538, -0.06403556, -0.050746903, 0.09491894, 0.016390879, -0.017039105, -0.005365235, -0.008930483, 0.04171803, 0.01776836, 0.0015786061, -0.023463497, 0.031207493, 0.053756528, 0.030258304, 0.039634444, 0.021565119, 0.10806868, -0.032457646, -0.05741438, -0.01423784, -0.07190688, -0.010579988, -0.027225528, 0.042366255, -0.043732163, -0.0047430526, -0.022259647, -0.009318261, -0.042551465, -0.0021255475, -0.010655229, -0.03914827, -0.025720716, 0.002112525, 0.03162421, 0.0006945288, 0.003762031, 0.020824289, -0.00025176667, 0.06199827, 0.044565596, -0.040213216, -0.017652607, 0.0602851, 0.0011315031, -0.076768585, 0.02870719, 0.008797364, -0.059729476, 0.020789562, 0.021541968, -0.020199211, 0.023104658, -0.020569628, -0.028892398, 0.030443512, 0.041648578, 0.0052871006, -0.006430179, -0.050006073, -0.025952226, 0.05139513, 0.054636266, -0.0011105225, 0.019296324, 0.020673808, 0.043083936, 0.01375167, 0.025929075, -0.036300704, -0.03567563, -0.0054173246, -0.033360533, -0.014631406, -0.008826303, -0.030003643, 0.014295718, -0.027781151, -0.0028345457, -0.030559266, -0.010834649, -0.011494451, 0.012304735, -0.0024800466, -0.015337511, 0.035351515, 0.033939306, 0.04442669, 0.0088031525, 0.024100149, 0.0065980237, 0.059451666, -0.008999935, -0.02433166, 0.011922744, 0.031485304, -0.03907882, -0.014480925, -0.008617945, -0.018532343, 0.05093211, -0.02509564, 0.014816614, 0.020812713, -0.015256482, 0.038916763, 0.0019012726, -0.019805646, 0.02579017, 0.042574614, 0.023104658, -0.038268536, -0.05384913, 0.0140873585, -0.076768585, 0.00880894, -0.059451666, -0.008212803, 0.03741195, 0.010082243, 0.043361746, 0.005324721, -0.053617623, -0.021032646, 0.027943209, 0.031253796, -0.012177405, 0.031161191, -0.031045437, 0.028128415, -0.009972276, -0.016309852, 0.029980492, 0.012594122, 0.02291945, 0.08755693, 0.031022286, -0.02678566, -0.03424027, 0.046417672, -0.040190067, 0.042852428, -0.022826847, 0.086816095, -0.018798579, 0.0011300562, 0.014747161, -0.03546727, -0.041787483, -0.0077787223, 0.052182265, -0.027086623, -0.000812454, 0.026577301, 0.02993419, -0.008722124, 0.072230995, 0.025952226, 0.017085409, 0.048478108, 0.014307293, 0.022699516, 0.020222364, 0.020696959, -0.021854505, 0.016263548, 0.0045260126, -0.03736565, -0.0036810027, -0.00019388928, -0.004384213, -0.003492901, 0.060192496, -0.02184293, 0.0458852, -0.012038499, 0.029772134, 0.031207493, -0.030026795, 0.016147794, -0.016610814, -0.028244171, -0.044472992, -0.024215903, 0.012142679, 0.040166914, -0.0068237456, 0.102142036, -0.0037504553, -0.016969653, 0.058988646, -0.018277682, -0.03692578, -0.021530392, 0.024655772, 0.0028113946, -0.014886067, -0.00765718, 0.062600195, -0.014145236, -0.011899593, -0.03312902, -0.12334831, 0.012374188, 0.022572186, -0.014446199, -0.005926646, -0.026183736, -0.018995361, 0.03349944, -0.07246251, -0.023000479, 0.009144629, -0.0065980237, -0.030235153, -0.102419846, -0.0047517344, -0.045445334, 0.014538802, -0.020569628, 0.0143188685, 0.029401718, -0.045676842, -0.038222235, 0.035883985, -0.039703894, -0.024725225, 0.034124516, 0.037805516, 0.00627391, 0.0013449261, -0.003779394, 0.01098513, 0.010261663, 0.009271959, -0.023752885, 0.020465448, -0.023625555, -0.0002591822, -0.0041671726, 0.028035812, -0.060979627, 0.01654136, 0.05954427, 0.02511879, -0.043778464, -0.031415854, -0.0056835604, -0.020500174, -0.01267515, -0.028058963, 0.018057749, -0.0048125056, -0.03495795, -0.021704024, 0.004355274, 0.04484341, 0.00046410438, -0.06977699, -0.003582611, -0.0071304957, -0.028684039, -0.024447413, 0.0035189458, 0.0069337124, 0.011008281, -0.03815278, 0.020002428, 0.01001279, 0.027341284, -0.021796629, 0.012223707, 0.017606305, 0.023301441, -0.03088338, 0.025003036, -0.017282192, 0.048848525, -0.011980621, 0.049867168, -0.022143893, 0.019006938, -0.06482269, -0.024632622, 0.019608863, -0.038986217, -0.0031109103, -0.04655658, -0.00521186, 0.030096248, -0.047158506, 0.036231253, -0.024053847, 0.072092086, 0.025628112, 0.00013863445, -0.009630799, 0.048802223, -0.009248808, 0.0027737743, 0.015071275, -0.034842193, -0.015754228, 0.016784446, -0.04463505, 0.040884595, -0.03354574, 0.035328366, 0.017293766, -0.059220154, -0.013971604, 0.021646148, -0.011662296, -0.034981098, 0.012420489, -0.08274153, -0.04417203, -0.045491636, 0.011888018, 0.029239662, -0.022248073, -0.05477517, -0.004433409, 0.041903235, -0.033916157, -0.0040109036, -0.033568893, 0.03789812, 0.024470564, -0.038662102, 0.00040731218, -0.028915549, -0.072230995, -0.0022080229, 0.046000957, -0.01776836, 0.01664554, 0.035096854, 0.03669427, -0.07172167, 0.023266714, 0.0031080162, 0.063016914, 0.0024583426, 0.02181978, -0.025466055, -0.036184948, 0.043778464, -0.0039732833, 0.026114283, -0.039680745, -0.005281313, -0.019990854, 0.0075009107, -0.007987081, -0.039634444, -0.0055272914, -0.016217247, 0.021680873, 0.017455824, -0.0150365485, -0.041463368, 0.028359925, 0.0385695, 0.04127816, -0.024748376, 0.010336904, 0.04150967, 0.08130617, 0.02433166, 0.01067838, 0.049589355, 5.2315743e-05, -0.018219804, -0.0038459531, -0.013300226, -0.034402326, -0.03305957, 0.0004138234, -0.023984395, 0.0114713, 0.0676008, 0.038708404, 0.041139256, 0.045908354, -0.007280977, -0.02004873, -0.025165092, 0.01277933, -0.0020054518, -0.0082301665, -0.026507849, -0.030813927, 0.008872605, -0.023602404, -0.026021678, 0.0043523805, 0.037712913, 0.010458446, 0.020685382, -0.0033684645, -0.022931026, -0.042065293, -0.03762031, -0.06963809, -0.02655415, -0.031693663, 8.984562e-05, 0.008507977, -0.04755207, 0.0006840385, 0.0026623604, -0.014573529, 0.008178077, 0.015430114, -0.016784446, 0.019111117, 0.031253796, 0.0021038435, 0.012883509, -0.055145584, 0.061211135, -0.007471972, 0.0029430657, -0.02087059, 0.037712913, 0.058062606, -0.026276339, -0.031994626, 0.062322382, -0.02511879, 0.03553672, -0.0033916156, 0.017722059, 0.012952962, -0.02087059, -0.034587532, -0.043616407, -0.01641403, -0.040722538, 0.01495552, -0.03882416, 0.06338733, 0.0063086366, -0.006250759, -0.055284493, 0.057043966, 0.013705368, 0.010064879, 0.0022716878, -0.008432737, 0.07426828, 0.02798951, -0.013531736, -0.037481405, 0.06824903, -0.030536115, -0.034356024, -0.014700859, -0.03812963, -0.028660888, -0.04144022, 0.0014512758, -0.035559874, 0.014828189, 0.014816614, -0.0135433115, -0.019527834, -0.086538285, 0.00031995348, -0.0073446417, 0.010823074, -0.007923416, -0.033476286, -0.0132655, -0.0018043279, 0.02194711, 0.013022414, 0.010556838, 0.020442298, -0.0071536466, -0.043292295, 0.019574136, 0.014527227, -0.01823138, 0.0241233, 0.015395388, -0.069962196, 0.011234003, -0.016703418, -0.11455095, -0.008241742, 0.027943209, -0.02158827, 0.007946567, -0.023266714, 0.017455824, 0.048431806, -0.0028837414, 0.054451056, 0.03333738, 0.016217247, 0.02581332, -0.035305213, 0.050144978, 0.022861572, 0.01698123, 0.00010987662, -0.016124643, -0.019794071, -0.01195747, -0.033707798, -0.020060306, -0.037319347, 0.049080033, -0.012003773, 0.010655229, 0.038430594, -0.017513702, 0.013334952, 0.03516631, 0.029586926, 0.021761902, 0.05236747, -0.03516631, -0.028383076, 0.0241233, -0.010174846, 0.08167659, 0.004520225, -0.018474465, 0.026808811, -0.013508585, 0.04778358, 0.027873755, -0.006048188, -0.037249893, 0.021090524, -0.01290666, 0.014805038, -0.03914827, -0.0458389, 0.030536115, 0.038916763, 0.028406227, -0.0014454881, -0.028197868, -0.03474959, -0.023521375, 0.019111117, 0.08593636, -0.05500668, -0.0602851, -0.015233331, -0.020233938, -0.02581332, 0.00040116272, 0.02025709, -0.0038401654, -0.04604726, -0.006077127, -0.033707798, -0.00485302, -0.015951011, -0.009329837, -0.0018622053, -0.045491636, 0.00041635553, -0.023451922, 0.007402519, 0.017710485, -0.041417066, -0.04611671, 0.07297182, 0.017988296, -0.0014404238, 0.0180809, 0.011141399, 0.036786873, 0.015048124, 0.010099606, -0.058108907, -0.025072489, -0.011922744, 0.045074917, 0.025743866, -0.004227944, 0.0035420968, -0.062044572, -0.03690263, 0.012964537, 0.01080571, 0.02581332, 0.044727653, 0.04609356, 0.014724011, -0.005000607, 0.006476481, -0.07162907, 0.025604961, 0.020801136, 0.02458632, -0.01216583, -0.024655772, 0.012107952, -0.048941128, 0.025836471, -0.013740094, 0.055840116, -0.007182585, -0.005822466, -0.019006938, -0.025929075, 0.010197998, 0.0061060656, -0.017733635, -0.019886674, 0.008091261, 0.016182521, 0.019354202, 0.031508457, -0.0127098765, -0.035976592, -0.070749335, 0.02181978, -0.0070668305, 0.025026187, 0.00699159, 0.0010150248, -0.014943944, -0.022352252, -0.045399033, 0.0037330922, -0.026230037, 0.01723589, 0.051348828, -0.0080565335, -0.006522783, -0.0004662748, -0.059312757, -0.003892255, 0.019944552, -0.020361269, -0.020372845, 0.035073705, -0.007906052, 0.00548099, -0.04438039, 0.0065343585, 0.021472516, 0.021067373, 0.06653586, -0.020118184, 0.0039067245, -0.019851947, -0.015175454, 0.01580053, -0.013774821, -0.032156684, -0.014573529, 0.02258376, -0.0014845553, -0.007917629, -0.042111594, 0.03037406, 0.018393436, -0.011303456, -0.014226264, 0.0068989857, 0.008536916, 0.02063908, 0.01953941, 0.013740094, -0.002844674, 0.058062606, -0.00791184, 0.0507006, -0.03088338, 0.053895433, 0.0039964346, -0.0022890512, -0.05042279, 0.0136590665, 0.023938091, 0.008872605, 0.012119527, -0.003003837, -0.00061784126, -0.034124516, 0.035583023, 0.02437796, 0.011853292, 0.007651392, 0.029077604, 0.006516995, 0.02435481, 0.016066765, -0.02511879, -0.001166953, 0.0027679866, -0.029610077, -0.04678809, 0.0068179574, -0.0016900201, 0.030327758, 0.017143285, -0.011349758, -0.0069105616, -0.03407821, -0.018127201, -0.06588763, -0.05593272, -0.008062322, 0.017201163, -0.009196718, 0.021217855, 0.0017305342, 0.055377096, 0.0039269817, 0.030559266, -0.011118248, -0.010765196, -0.015707927, 0.007211524, -0.027109774, 0.0059382212, -0.033175323, -0.020222364, -0.0024988567, 0.07982451, 0.034911647, 0.03646276, 0.014133661, -0.02822102, -0.021669298, -0.00084501004, -0.06463748, 0.009960701, 0.0026073768, 0.026901415, 0.027410736, 0.04435724, 0.020731684, -0.02486413, -0.00070610427, 0.013334952, -0.012408914, -0.062137175, -0.041092955, -0.016043615, -0.03479589, -0.006875835, 0.007142071, 0.031577908, 0.012501518, -0.025049338, 0.0065517216, 0.009897036, -0.023984395, 0.0044015762, 0.016865473, -0.0017941993, -0.032365043, -0.026716208, 0.0036318067, -0.04796879, 0.019145843, 0.018381862, -0.01531436, 0.010516323, 0.01810405, -0.028915549, 0.051487733, -0.008791577, 0.013994755, 0.008612157, -0.044611897, 0.018451314, -0.042551465, 0.019863524, 0.0034060848, -0.00970604, -0.010493172, -0.03833799, 0.031184342, 0.0057993154, -0.0015207287, -0.0021241005, -0.020824289, -0.029471172, 0.0023758672, 0.02870719, 0.047135353, -0.03521261, 0.004931154, -0.006250759, -0.026206886, 0.024169602, 0.0062623345, -0.054682568, 0.035073705, 0.031369552, 0.015592171, 0.03400876, -0.024771526, 0.022421705, 0.013624339, 0.00663275, -0.0011119695, -0.025767017, -0.013994755, 0.026739359, 0.036717422, -0.0040456303, 0.00024887282, -0.040375274, 0.009769705, -0.0072867647, -0.016830748, -0.03349944, 0.048339203, 0.084408395, -0.035444118, 0.0008175183, 0.021680873, -0.05667355, -0.015974162, 0.009410865, 0.04917264, 0.017687334, -0.01436517, 0.053386115, -0.042806122, -0.012501518, -0.0029748983, 0.025836471, 0.006904774, 0.041046653, 0.01254782, -0.005318933, -0.0020213681, -0.041463368, -0.011737537, 0.006904774, 0.019388929, -0.013740094, 0.03231874, -0.034147665, 0.006667476, 0.021935534, -0.04081514, -0.007743996, 0.012096376, 0.018300833, 0.00837486, 0.0067600803, 0.0073735807, -0.0053507653, -0.037041534, 0.0048674894, 0.010852012, -0.04537588, -0.02486413, -0.01316132, -0.014943944, -6.633293e-05, -0.029725833, 0.0069395, 0.027711699, -0.0118475035, 0.008878393, -0.048431806, 0.017571578, 0.029633228, -0.027850604, 0.0102385115, 0.01556902, 0.023556102, 0.023093082, -0.023625555, 0.0063954527, -0.0014339125, -0.051765546, 0.0044623474, -0.07389786, 0.017050682, -0.0066616884, 0.010221149, -0.03794442, 0.029008152, -0.012223707, 0.010296389, 0.014307293, 0.013913726, 0.036323857, 0.0313927, 0.040629935, 0.002692746, -0.002446767, 0.061350044, 0.009208295, -0.011511815, 0.0047951424, 0.007211524], [0.033199992, -0.014084486, -0.024561824, 0.00937977, 0.02793166, 0.01751365, -0.027599422, -0.00047907425, -0.01550836, 0.024348244, -0.061084192, 0.008157611, 0.005858648, -0.02400414, -0.030114934, 0.035573117, -0.02852494, 0.031704925, -0.041482195, -0.052303635, 0.0010441742, -0.05894838, -0.067111924, -0.013633593, -0.008270334, 0.017300067, -0.015294779, -0.001211776, -0.046252172, 0.010334952, 0.05301557, 0.011129947, 0.028975835, -0.041363537, -0.014226873, -0.035525654, -0.043214574, 0.004752179, -0.050737374, 0.0035893489, -0.046940375, -0.0028759288, 0.029165683, -0.0689155, -0.017098352, -0.009712007, -0.029687772, -0.0002163621, 0.02676883, -0.039156534, -0.006526089, -0.0031562538, 0.008388991, 0.011385059, -0.038871758, 0.05144931, 0.03452894, -0.10669562, 0.05467676, -0.00948656, -0.020658037, 0.008875481, 0.041411, -0.022983698, -0.01992237, -0.046157245, 0.027907928, 0.048838876, 0.016611863, 0.042502638, 0.015911791, 0.020100353, -0.006081128, -0.0037139377, -0.030660752, -0.011035023, 0.10137982, 0.057382118, 0.019329088, -0.034339093, -0.012245316, -0.03490864, 0.03255925, 0.010946031, 0.032227013, -0.015342241, 0.02381429, -0.09516224, 0.0020379196, -0.0026890452, 0.025155107, 0.020847887, 0.020254606, 0.024443168, -0.052493487, 0.033911932, 0.023043025, -0.024822868, -0.001464662, -0.0073448163, -0.01889006, -0.045421578, -0.07741128, -0.041695774, 0.021631017, 0.028192703, 0.034315363, -0.022259895, 0.008377125, 0.01753738, 0.027504498, -0.008145745, -0.002732058, 0.038848028, -0.02406347, 0.05605317, -0.040983837, -0.044994418, -0.013218296, 0.0113316635, -0.09160256, -0.0058616144, 0.05591078, 0.028548673, -0.0074575394, -0.001038983, 0.019151105, 0.04701157, 0.018854463, -0.017572977, -0.011960541, 0.071146235, 0.016232163, 0.023327801, 0.052161247, 0.01878327, 0.07461099, -0.02755196, -0.0042983196, 0.020895349, -0.043404423, 0.009587417, -0.033437304, 0.031301495, -0.028762253, 0.007748247, -0.0128267305, 0.009587417, -0.07404144, -0.02053938, 0.03910907, -0.018807001, 0.007006646, 0.016955966, 0.06991221, 0.014760827, -0.0078016426, 0.034030586, -0.021037737, 0.0778859, -0.0037495347, -0.060372256, 0.03201343, 0.045326654, 0.0063481047, -0.05263587, 0.050594985, -0.023387128, -0.058283906, 0.042241592, 0.05087976, -0.04432994, 0.017122084, 0.015947388, -0.06393194, 0.0144048575, 0.025012719, -0.0011420655, -0.03740042, -0.047533657, -0.041553386, 0.05301557, 0.03789878, -0.07755367, 0.016683057, 0.036546096, 0.056860033, 0.04003459, 0.053632583, -0.03564431, 0.007516868, 0.00023397511, -0.01472523, -0.046323366, 0.0002239635, -0.040770255, -0.0053780903, -0.07252265, 0.009919655, 0.007593994, 0.029972546, -0.020337665, -0.022188703, -0.032701638, -0.011260469, 0.014131948, -0.0058556814, 0.053205423, -0.0051200134, 0.019874906, 0.010667189, -0.014938811, -0.013989561, -0.026602712, -0.008116081, 0.026507786, -0.03374581, 0.022959966, 0.035383265, -0.030874332, 0.074516065, -0.052161247, 0.051923934, -0.011100284, -0.018118795, 0.06905788, 0.01586433, 0.018664613, 0.04145846, -0.013645458, 0.0038296275, -0.00504882, 0.02203445, 0.049266037, -0.051211998, -0.025772117, -0.041411, -0.0072261603, 0.03832594, 0.017596709, 0.008549176, 0.0005320987, -0.049266037, -0.00069821737, 0.01705089, 0.029948814, -0.0064845593, 0.009456896, -0.025938237, -0.0006485301, 0.0042538233, -0.013158968, 0.06279284, 0.040722795, -0.00824067, 0.10223415, -0.0069591836, -0.049598273, -0.007718583, 0.00963488, -0.02224803, 0.053110495, 0.0043161176, 0.09074823, -0.012174122, -0.010892635, 0.034932375, -0.07337697, -0.07166832, -0.052825723, 0.022319224, -0.010815509, -0.004870835, 0.022176836, 0.054771684, -0.025012719, 0.074421145, -0.008027089, -0.03369835, 0.036664754, 0.029189415, 0.017347531, 0.013870905, -0.0021728908, 0.028453747, 0.03374581, -0.019103643, -0.047913358, -0.022793848, 0.0066269464, -0.03524088, -0.01983931, 0.026033161, 0.049266037, 0.041909356, -0.0007449382, -0.009575552, 0.0051200134, -0.033105068, -0.00013626918, 0.020634307, -0.0077126506, -0.04836425, -0.039275188, 0.0038859893, 0.029094491, -0.026460323, 0.07897754, 0.002555557, -0.052256174, 0.042692486, -0.020563113, -0.033461038, -0.042977262, 0.0007408594, -0.003319406, -0.0047610784, 0.055815857, 0.06972236, -0.026626442, -0.011990205, -0.006205717, -0.057856742, -0.00876869, 0.031657465, 0.025131375, 0.060134944, 0.010180699, -0.036308784, 0.021892061, -0.0854799, -0.007160899, -0.03505103, -0.0161847, -0.0425501, -0.072000556, -0.03604774, -0.05890092, 0.014131948, 0.01567448, -0.028785985, -0.009771335, -0.034339093, -0.0064430293, 0.011462185, -0.012025801, -0.033199992, -0.020563113, 0.046726797, 0.020895349, 0.0012362489, 0.060182404, -0.008021156, 0.043356963, 0.0010085774, -0.008074552, 0.028311359, -0.046916645, -0.023826158, -0.017205143, 0.059660316, -0.08609691, 0.0003546707, 0.06184359, 0.014926945, -0.030494632, 0.0059951027, 0.018012006, -0.007505002, 0.005879413, -0.010151034, 0.019673191, -0.019507073, -0.0447571, -0.0075880615, -0.021915793, 0.015567688, -0.019103643, -0.019613864, -0.0013163418, -0.009213651, -0.02966404, 0.006650678, 0.052113786, 0.030542096, 0.0071905633, -0.010067975, -0.032986414, 0.008157611, 0.016255895, 0.0006704073, -0.009427232, -0.002583738, -0.07100385, 0.008780556, 0.02425332, 0.005125946, 0.018901926, -0.021512361, 0.005971371, -0.017561112, 0.048886336, -0.01212666, -0.0222243, 0.046157245, -0.049171112, 0.016766116, -0.039797276, -0.025202569, 0.05681257, -0.020207144, 0.016054178, -0.0338882, 0.012013936, 0.013206431, 0.024193991, -0.031681195, 0.04079399, -0.020313935, -0.003773266, 0.004428841, -0.009628947, 0.00433095, 0.030755676, -0.064691335, 0.069627434, -0.024894062, 0.02034953, 0.0051229796, -0.027694348, 0.0032867757, -0.015401569, 0.008454251, -0.0049360963, -0.039987125, -0.069390126, -0.0259857, -0.029592846, -0.0070837727, 0.00118582, 0.009563686, -0.024348244, 0.0060158675, -0.0041707642, -0.041149955, -0.010441742, -0.047818433, -0.005265367, 0.016303357, -0.010975695, -0.013408146, -0.021322511, -0.076224715, -0.0091068605, 0.055531085, 0.001879217, 0.04202801, 0.018830733, 0.049218576, -0.070386834, 0.0022010717, 0.019590132, 0.064691335, -0.05050006, 0.033603426, 0.017157681, -0.017478053, 0.01878327, 0.0082940655, -0.0052535012, 0.011468118, 0.0018777337, -0.0076177255, -0.0016730519, 0.003758434, -0.003562651, -0.03718684, 0.018640883, 0.012138525, -0.021097066, -0.010714651, -0.006615081, 0.043072186, 0.035193417, 0.03711565, -0.009356039, 0.010661256, 0.031657465, 0.061701205, -0.021500496, -0.029972546, 0.070386834, 0.025677193, -0.0207055, -0.026816292, -0.009978983, -0.008786488, -0.04081772, -0.013704786, 0.017572977, 0.004983559, 0.05510392, 0.031538807, 0.061463892, 0.03856325, 0.003708005, -0.021536093, -0.019863041, 0.00929671, 0.0035893489, -0.0033757677, -0.000723061, -0.051496774, 0.0058912784, -0.008721228, 0.026840024, 0.0017027159, 0.035003565, 0.017691633, -0.0068167965, -0.013064044, -0.030091202, -0.048221864, -0.034837447, 0.014238739, 0.011147746, -0.010008647, 0.015449032, -0.059660316, -0.031159107, -0.006561686, 0.0020690667, -0.009065331, 0.015104929, -0.003473659, -0.00703631, 0.049550813, 0.020503784, -0.0026667973, 0.015057467, -0.032630444, 0.039987125, -0.00070266693, -0.020836022, 0.0016344886, 0.0031176906, 0.039227728, 0.012613149, 0.0021981054, 0.057524506, -0.039559964, 0.07204802, 0.027124798, 0.01358613, -0.028358823, -0.019827444, -0.057904206, -0.061985977, 0.0035359536, -0.029592846, 0.029189415, 0.036000278, 0.08410349, 0.022793848, -0.056622718, -0.03656983, 0.004149999, -0.0044674044, -0.016149104, 0.0016611862, 0.020681769, 0.029877622, -0.016611863, -0.020859754, 0.0034469615, 0.070434295, -0.011764758, -0.053300347, 0.005648033, -0.03172866, -0.041505925, -0.0021091131, 0.007131235, -0.022461612, 0.031681195, 0.0034973903, -0.017442456, -0.051117074, -0.027694348, 0.009628947, 0.0008357843, 0.042977262, 0.018961255, -0.023458323, -0.024490632, 0.0020898315, 0.037614003, -0.003120657, -0.005404788, -0.0009915206, 0.0023686737, -0.028691059, 0.011100284, 0.0020275372, -0.01875954, -0.0214649, 0.015282913, -0.04508934, 0.013609862, 0.017679768, -0.030708214, -0.022971833, 0.017169546, -0.019257894, 0.006001035, 0.01309964, -0.004414009, 0.052256174, 0.01929349, 0.028857177, 0.0335085, 0.03543073, 0.069437586, -0.03025732, 0.03023359, 0.035169687, 0.013218296, 0.013230162, -0.021607287, 0.007896568, -0.029094491, -0.0035389198, -0.033603426, -0.025534805, -0.0016196566, 0.016967831, 0.035407, 0.07394652, -0.03467133, 0.016766116, -0.01271994, 0.025321225, 0.007694852, 0.05182901, -0.02755196, -0.021251319, 0.052873183, -0.037447885, 0.06834595, -0.027053604, -0.04836425, -0.012506359, -0.008786488, 0.043665465, -0.00019244546, -0.0044377404, -0.011349462, -0.003906754, -0.033223726, 0.013431877, -0.007659255, -0.026080623, -0.0014260988, -0.00064296805, 0.002776554, -0.019981697, -0.0023998208, -0.018415436, -0.028714791, 0.058046594, 0.07010206, -0.059850167, -0.042312786, -0.051734086, -0.032274477, 0.0014298067, 0.00088102196, 0.05761943, -0.04432994, -0.025321225, -0.017976409, -0.033650886, -0.0071905633, -0.004603859, 0.0025451747, -0.002150643, -0.045991126, 0.008424588, -0.047557388, -0.007599927, 0.007593994, 0.003568584, -0.02947419, 0.04869649, -0.008655967, -0.0017071655, 0.0012963186, -0.03386447, 0.044970684, 0.028619865, -0.0070778397, -0.019696923, -0.013942099, -0.026056893, 0.07133608, 0.011551177, 0.0029486055, 0.0040936377, -0.05643287, -0.057097346, 0.018332377, 0.026697636, 0.0033075404, 0.050025437, 0.0029426727, -0.03718684, -0.003782165, 0.0069710496, -0.072949804, 0.041743238, 0.024799136, -0.006241314, -0.01686104, -0.0402719, 0.014582842, -0.044614717, 0.0070897057, -0.014191276, 0.059233155, -0.019246029, 0.014321798, -0.02562973, 0.005167476, -0.0025303427, -0.0144048575, -0.008786488, -0.017489918, 0.025297493, 0.041411, 0.022307359, 0.0021105965, -0.014986273, -0.026104355, -0.040580407, -0.0028833447, -0.020491919, 0.06986475, -0.013882771, -0.022307359, -0.0060336655, -0.019578267, -0.02195139, 0.014084486, -0.040176976, 0.017857753, 0.043214574, 0.016611863, -0.004244924, -0.001098311, -0.01189528, 0.013265759, -0.02503645, 0.0070481757, -0.011313865, 0.02097841, 0.010156968, 0.01039428, -0.029118221, 0.03424417, 0.014084486, 0.02525003, 0.07105131, 0.014048889, -0.011996138, 0.006241314, -0.0015692277, 0.010032378, 0.0049004992, -0.039227728, -0.027670616, -0.024288915, 0.007297354, 0.008157611, -0.0042478903, 0.03566804, -0.005431486, 0.0063362387, 0.010091706, 0.0056569325, 0.0035863824, 0.03543073, 0.02852494, 0.029402995, -0.0031414218, 0.032701638, -0.009498426, 0.02833509, -0.001975625, -0.010121371, -0.0203258, 0.0065438873, -0.019673191, 0.013728518, 0.04411636, -0.027646884, -0.033366114, -0.018545957, -0.022212433, -0.023173548, 0.018462898, 0.03778012, 0.0073804134, -0.0128385965, 0.0064489623, 0.0072142943, 0.02254467, 0.03526461, 0.015140526, -0.012316509, -0.011242671, -0.02072923, -0.037875045, 0.021085199, -0.0519714, -0.0005224579, 0.03702072, -0.01569821, -0.015401569, -0.040224437, -0.005280199, -0.0114265885, -0.045397848, -0.029901352, 0.028287629, 0.027029874, 0.028833447, -0.033769544, 0.05377497, 0.0026252675, 0.03581043, -0.03569177, -0.01726447, 0.0036397777, 0.0052831657, -0.037827585, 0.048482906, 0.00590611, -0.050547525, -0.0032274476, 0.032606713, 0.04974066, 0.009575552, -0.0019340954, -0.006893923, -0.017964542, -0.018332377, -0.038207285, -0.006389634, 0.016540669, -0.00783724, 0.02926061, -0.0024191025, 0.0319897, -0.03203716, 0.001001903, -0.010512936, -0.0050606853, -0.050927226, 0.013443743, -0.013372549, 0.006389634, -0.017952677, -0.02427705, 0.036878336, 0.025724655, -0.0327491, -0.0060395985, -0.035573117, 0.012174122, -0.0047343806, -0.0010871871, 0.020302068, -0.033650886, -0.04062787, 0.017869618, -0.04525546, -0.007095638, -0.028952103, -0.027979122, 0.039583694, 0.021180125, -0.01140879, -0.00049279386, 0.004772944, 0.006976982, 0.03910907, 0.010548533, -0.030992988, -0.032345667, 0.012008003, 0.009706073, 0.012435165, 0.01639828, -0.026128087, 0.030186128, -0.033532232, -0.009237382, 0.059897628, 0.007273623, -0.012102928, -0.0015098996, 0.04857783, 0.039726082, -0.050594985, 0.006520156, -0.042455174, -0.017347531, 0.0009210684, -0.02195139, -0.023149816, 0.035478193, 0.019613864, 0.042146668, 0.04684545, -0.0067456025, 0.008127947, 0.045065608, 0.0203258, 0.030589558, -0.032844026, -0.0075524645, 0.018035736, -0.006947318, 0.0342679, 0.0036308784, -0.0015247316, -0.019803712, -0.007955896, -0.014748961, 0.0021773404, 0.049266037, 0.04003459, 0.004861936, -0.01870021, 0.004001679, -0.03120657, -0.012565687, 0.029877622, 0.033532232, -0.025368687, -0.009735738, 0.06303015, -0.03585789, 0.010257825, -0.032440595, 0.0075583975, 0.019364685, 0.043024722, 0.007878769, -0.006561686, 0.014440455, -0.02100214, 0.0010864454, -0.005624302, 0.022948101, 0.005235703, 0.023660038, -0.037234303, 0.012791134, 0.027267186, -0.016967831, 0.004250857, -0.030969258, 0.01588806, -0.010667189, 0.009207718, 0.0043784124, -0.0063718357, 0.022734521, 0.02235482, 0.0045860605, -0.038017433, -0.030589558, 0.009089062, 0.0041677975, -0.018688345, -0.003737669, 0.057144806, 0.008626303, 0.008572907, 0.033983123, -0.055008996, -0.008501714, 0.037851315, 0.017489918, -0.00014924721, -0.019507073, -0.017596709, 0.007125302, -0.043760393, -0.03778012, 0.023137951, -0.0207055, -0.0060751955, -0.043997705, 0.057429582, 0.038610715, 0.0035507856, -0.042478904, -0.013372549, -0.01253009, 0.005404788, -0.008602572, 0.030779408, 0.018332377, 0.0398922, 0.03429163, 0.020468188, -0.023043025, 0.046940375, -0.0065972824, 0.00078164745, 0.016789846, 0.007825374], [0.0038762626, -0.009705727, -0.021002952, 0.053339303, 0.008656786, 0.006510674, -0.026283832, 0.027031355, 0.010628073, 0.07629546, -0.004063143, 0.022027781, -0.0163008, -0.016385198, -0.022642678, 0.011628788, -0.03867823, -0.005024673, -0.02406538, -0.0125631895, -0.009072745, -0.042150587, -0.033180326, -0.0038491348, 0.034265436, 0.019266773, -0.03501296, 0.0055220164, 0.0027173022, -0.00015541974, 0.042656973, 0.049288217, 0.0559918, -0.008144371, 0.03195053, -0.005624499, -0.035374664, 0.03742432, 0.006133899, -0.009193313, -0.024619995, -0.013045462, 0.03040726, -0.038919363, -0.005528045, -0.008843666, 0.0067578387, 0.035856936, -0.03556757, -0.025970357, -0.00049018447, 0.030889532, -0.045068335, -0.012707871, -0.018724216, 0.042247042, 0.0483719, -0.08690544, 0.031588826, -0.021063237, -0.07711532, 0.052760575, 0.060910974, 0.0057510957, -0.03267394, 0.02041217, 0.013829154, 0.036483888, 0.04846835, 0.05507548, 0.0137568135, 0.047093876, 0.027682422, -0.0026057768, -0.0035145583, -0.01490221, 0.08979908, 0.0005726982, -0.00062356284, -0.06066984, 0.013021348, 0.0045213015, -0.004644884, 0.02686256, 0.022582395, -0.02172636, 0.023896586, -0.12895958, -0.046418697, -0.0021973525, 0.045984652, 0.0148178125, 0.0018929183, -0.013720643, -0.043404493, 0.055895343, 0.01637314, -0.00088692864, -0.034096643, 0.040149156, -0.015396539, -0.065444335, -0.068675555, -0.0701706, 0.023329915, 0.012768156, 0.0013963287, 0.00051128387, -0.02316112, -0.0958757, 0.01497455, -0.012731985, 0.0062695383, 0.025849788, 0.023257576, 0.04391088, -0.00894012, -0.015312141, -0.011273112, -0.0062333676, -0.08232386, -0.07706709, 0.056425843, 0.031371806, 0.024837017, 0.015734129, 0.0142632, 0.08931681, 0.017084492, -0.0066372706, -0.028791647, 0.001168003, -0.0073245084, 0.04892651, 0.06356347, -8.227827e-05, 0.049625807, -0.014371711, -0.029322147, 0.025126379, -0.07243728, 0.04048675, 0.010055374, 0.033976074, -0.00950679, 0.0005451936, -0.012201486, -0.03354203, -0.043525063, -0.019122092, -0.018736273, -0.00027353875, 0.010212113, 0.010513533, 0.061779063, -0.0031528543, 0.03240869, 0.0070230886, -0.024402972, 0.019315, 0.036363322, -0.04497188, 0.013672416, 0.027899444, -0.006824151, -0.034265436, 0.02674199, -0.030696623, -0.018868899, 0.038075387, 0.021557566, -0.027827105, 0.037786026, -0.0031136696, -0.06284006, 0.016505765, 0.026717877, -0.018398684, -0.035447005, -0.05145844, -0.0034904447, 0.08690544, 0.05232653, -0.034337778, 0.016819242, 0.05681166, 0.015107175, 0.008258911, 0.03556757, -0.05150667, -0.0047865515, -0.013539791, -0.044200245, -0.0137327, -0.008891893, 0.0065408163, 0.020375999, -0.030190237, 0.030455487, 0.013660359, 0.00097283337, -0.05300171, 0.015420653, -0.02312495, -0.04632224, 0.0021265189, 0.016228458, 0.007155713, -0.021135578, 0.010851123, 0.030889532, 0.00055385946, -0.00043705915, -0.0008680899, -0.03195053, 0.021364657, -0.047865514, -0.0093681365, -0.017687332, 0.014649017, 0.06467269, -0.021907212, 0.0125631895, -0.022715019, -0.027610082, 0.016650446, 0.029153353, 0.009759983, -0.010899351, 0.040269725, -0.008391536, -0.01640931, -0.023305802, 0.0030277648, -0.08058768, -0.025391629, -0.0304796, -0.015914982, 0.032842733, -5.0205286e-05, -0.00054896134, 0.03930518, -0.04275343, -0.03682148, -0.00011199641, 0.052905258, 0.029611511, -0.017132718, 0.0049372613, 0.012291912, -0.024439141, -0.030455487, -0.0066493275, 0.027489513, 0.031154782, 0.080201864, 0.052905258, -0.023848359, -0.015155403, 0.017410025, -0.030238464, 0.03761723, -0.041330725, 0.0799125, -0.022932041, -0.032866847, 0.046153445, -0.023546938, -0.04328393, -0.028237035, 0.022944098, -0.026380287, 0.03836475, 0.018181661, 0.05821025, 0.028984558, 0.05300171, 0.013202201, -0.048034307, 0.06284006, -0.005597371, 0.053580437, 0.05406271, -0.007197912, 0.011007862, -0.00097057276, -0.045478266, -0.052808803, -0.057631522, -0.0033367206, -0.030720737, -0.012430565, 0.051554896, -0.012852553, 0.04776906, 0.0285264, 0.011074174, 0.026524968, -0.024101552, -0.0015734129, 0.011019919, -0.019302944, -0.019821387, -0.025415743, -0.012183401, 0.057920888, 0.01403412, 0.06337056, -0.034795936, 0.024692334, 0.07436637, 0.0036321122, -0.01915826, -0.03267394, -0.012316026, -0.011405737, 0.027585968, 0.04451372, 0.05319462, -0.044127904, -0.013684473, -0.012804326, -0.09804593, -0.016843356, 0.02361928, 0.03060017, 0.007095429, 0.001874833, -0.012731985, 0.039522205, -0.037665457, 0.00614897, -0.014118518, 0.0134915635, -0.07730823, -0.06370816, -0.013238371, -0.066119514, -0.01942351, -0.00962133, -7.836923e-05, 0.0032342377, -0.032456916, -0.020761816, -0.011170629, 0.012279855, 0.0018235917, -0.002804714, 0.04866126, 0.01863982, 0.0013699543, 0.05425562, -0.020110749, 0.026766105, 0.03768957, 0.009416364, -0.009983034, -0.033325005, -0.030383147, -0.010989777, 0.04644281, -0.035615798, -0.04101725, 0.06404574, 0.028743422, -0.030359033, -0.010260341, 0.014781642, -0.004741338, -0.027513627, -0.043525063, 0.010405022, -0.06915783, 0.004738324, -0.05126553, -0.00411137, 0.041933566, 0.016807185, 0.00314984, 0.024909357, -0.00045702822, -0.07822455, -0.012587303, 0.039594546, 0.02712781, -0.016988037, -0.023522824, -0.017651161, 0.0050909854, 0.0016563034, 0.014504336, 0.034337778, -0.038991705, 0.00244301, 0.026790218, 0.033493802, -0.04229527, 0.004005873, 0.0024580809, -0.014046177, -0.03149237, 0.024909357, -0.011930208, -0.020580964, 0.033107985, -0.07161742, 0.021376714, -0.046105217, 0.008156428, 0.03255337, -0.039980363, -0.00039825132, -0.0026931886, 0.031227123, 0.004623784, 0.04878183, -0.029008672, 0.02278736, 0.014480222, 0.042946335, 0.048082534, -0.010254312, 0.0043525063, 0.040655542, -0.074077, 0.024511483, -0.038919363, 0.033855505, -0.03060017, -0.012949008, -0.028237035, -0.010145801, -0.008403593, 0.0119000655, -0.024318574, -0.020388056, -0.0315406, -0.041812997, -0.030238464, 0.022811474, 0.01754265, -0.054110937, -0.024053324, 0.003553743, -0.025391629, 0.03863, -0.06930251, -0.037834253, 0.020930612, -0.041403066, -0.04504422, -0.004364563, -0.056956343, -0.0076681273, -0.045405924, -0.008228769, 0.031661168, 0.051892485, 0.050300986, -0.0625507, 0.010187999, -0.032505143, 0.026476743, -0.04024561, 0.04017327, 0.0035929277, 0.0012508935, 0.04764849, 0.015517107, 0.023329915, -0.020496568, -0.003237252, -0.0041626114, 0.0073245084, 0.01214723, -0.03995625, 0.003030779, 0.029442716, 0.023040554, 0.008391536, -0.031251237, -0.009175228, 0.05112085, 0.032842733, 0.020568907, -0.025705107, 0.049818713, 0.016771015, 0.074655734, 0.021895157, -0.035133526, 0.038871136, 0.006158013, 0.011707157, -0.017422082, -0.058596067, 0.013407166, -0.017928468, 0.0062092543, -0.041861225, 0.027971786, 0.07706709, 0.042946335, 0.0013360446, -0.021364657, -0.0073667075, -0.040004477, -0.029900875, 0.008512104, 0.022401541, -0.0062936516, -0.023848359, -0.036073957, 0.006938691, -0.015360368, -0.023414314, 0.016650446, 0.013805041, -0.0022365372, 0.024716448, 4.921625e-05, -0.029563284, -0.036773253, -0.012038719, -0.045333583, -0.013334826, 0.007547559, 0.005597371, 0.033059757, -0.024716448, -0.012514963, 0.000645039, -0.0010843588, -0.0152398, -0.00584755, 0.018121377, 0.024981698, -0.016216401, -0.00057684275, -0.017168889, -0.02826115, 0.04241584, -0.026717877, 0.0025816632, -0.013141916, 0.04263286, 0.025705107, 6.5370485e-05, -0.0074571334, 0.007426991, -0.023607222, 0.060525157, 0.010091545, 0.0156135615, 0.020062523, -0.022076009, -0.041668314, -0.039136387, -0.031829964, -0.045140676, -0.0048830057, 0.011785526, 0.08859339, 0.009838352, -0.005657655, -0.04899885, 0.018579535, 0.014323483, 0.00020232824, 0.016553992, 0.018953295, 0.02686256, -0.005024673, -0.028791647, 0.0047594234, 0.07224437, 0.0218831, -0.0421747, 0.013841211, -0.025873901, -0.04311513, 0.000412192, -0.0025078154, -0.028743422, 0.025560426, 0.01610789, -0.021666078, -0.060525157, -0.037062615, 0.006179112, 0.021111464, 0.020267488, 0.018326342, 0.0059289336, 0.027248377, 0.024089495, 0.021810759, 0.012611417, -0.0011808133, 0.04562295, -0.052953485, -0.030117897, 0.020617135, 0.0005742053, -0.01343128, -0.022148348, 0.020315714, -0.034458347, 0.021545509, 0.011146516, -0.057969116, -0.004494174, 0.03428955, -0.03173351, 0.015432709, -0.025391629, 0.00038883192, 0.029129239, 0.0017798857, 0.030093784, 0.0125511335, -0.005726982, 0.07354651, -0.036845595, 0.039039932, -0.0054647466, 0.025078153, 0.01580647, 0.012719928, -0.0036471833, -0.01259936, 0.017410025, 0.0054044626, -0.009078774, -0.010194028, 0.003779808, 0.01184581, 0.015384482, -0.012623474, 0.018760387, 0.03074485, 0.022461826, -0.030527828, 0.104749516, -0.021858986, -0.03428955, 0.015625618, 0.016156118, 0.07542737, -0.05059035, -0.002878562, 0.017699389, 0.015673846, 0.0570528, -0.005398434, 0.016638389, 0.009977005, -0.013925609, -0.023788074, 0.002400811, -0.040872566, -0.042873997, 0.03428955, 0.009494733, 0.0025304218, -0.013672416, -0.020617135, -0.027344832, 0.00830111, 0.017627047, 0.068048604, -0.0370385, -0.05005985, -0.026380287, -0.01904975, -0.0047624377, 0.0045665144, 0.028863989, -0.0035145583, -0.029490942, -0.0483719, -0.018507194, -0.038654115, -0.010971691, -0.0054828315, -0.004765452, -0.048347786, 0.044537835, -0.033325005, -0.002412868, 0.016349027, -0.07899618, 0.013334826, 0.03576048, 0.03600162, -0.02493347, -0.0098323235, -0.04550238, -0.0003072601, -0.012303969, -0.038798794, -0.03920873, -0.021412885, -0.06983301, 0.053435754, 0.040125046, 4.879238e-05, 0.013202201, -0.046274014, -0.03621864, 0.053918026, 0.002623862, 0.022847643, 0.07947845, -0.009952892, -0.0021641965, -0.022582395, 0.030359033, -0.036845595, 0.013672416, -0.008518132, -0.013949722, -0.015336255, -0.034795936, -0.003535658, -0.032722168, 0.037062615, 0.007487275, 0.033276778, -0.010742612, 0.008849694, -0.024716448, 0.007119543, 0.001087373, -0.006037445, -0.014383768, -0.019351171, -0.0061519844, 0.046008766, 0.021400828, 0.023872472, -0.041282497, -0.025656879, -0.031637054, 0.0005896531, 0.0060917004, 0.0421747, -0.021605793, 0.0086387005, -0.013817098, -0.009784097, -0.014673131, -0.0009683121, -0.046225786, 0.013672416, 0.024451198, 0.00259372, 0.007927349, 0.010640129, 0.00043140753, -0.0023480626, 0.023667507, -0.012780213, -0.016228458, 0.014576676, -0.00021080568, -0.01407029, -0.04933644, 0.015107175, 0.007487275, 0.048444238, 0.05435207, -0.036942046, -0.009645443, -0.02018309, -0.029973214, 0.021039123, 0.0022395514, -0.03132358, -0.014444051, 0.0006846004, 0.0108390665, 0.03428955, -0.023366086, 0.02920158, -0.0029735093, -0.022835586, 0.005145241, 0.022702962, 0.003478388, 0.031588826, 0.02867108, 0.02466822, 0.010923465, 0.037665457, 0.007288338, 0.0233902, -0.02787533, 0.027682422, -0.023185235, 0.006420248, -0.060284022, 0.016529879, 0.029611511, -0.00950679, 0.01607172, -8.5056985e-05, -0.03682148, -0.030841306, 0.061103884, 0.013298655, 0.03361437, -0.011966378, 0.004051086, -0.041668314, 0.020689476, -0.02414978, 0.0111585725, 0.0091028875, 0.0053321216, 0.01259936, -0.052374758, 0.023064665, -0.010953606, 0.014588733, 0.060284022, 0.01671073, -0.009295796, -0.030142011, -0.013708586, -0.026790218, -0.04846835, -0.026524968, 0.006896492, 0.014275257, 0.06341879, 0.008861751, 0.070604645, 0.018061092, 0.025608651, -0.02067742, -0.0057782233, 0.01747031, 0.024740562, -0.055557754, -0.019339114, -0.01810932, -0.0122316275, -0.002203381, 0.008578416, 0.024716448, 0.017108604, -0.0053140363, 0.02071359, 0.0051030423, 0.010959635, -0.04904708, -0.013817098, 0.024390915, 0.022051895, 0.029852647, 0.028743422, 0.034241322, -0.010983748, 0.01607172, -0.007764582, -0.03274628, -0.07325714, -0.042994563, -0.0050789285, -0.0062815947, -4.62256e-05, -0.003990802, 0.025367515, -0.01800081, -0.021702247, 0.042271156, 0.00020025598, 0.017602934, -0.006040459, 0.004328393, 0.020580964, -0.053049937, -0.015685903, 0.04188534, -0.078321, 0.0072461395, -0.008451819, 0.0031136696, 0.0034542745, -0.0031227123, 0.0025907059, 0.014528449, -0.01203269, 0.06428688, 0.027320718, -0.055220164, -0.03971511, -0.018097263, 0.010501476, 0.023643393, -0.0025379572, 0.0032312234, -0.024402972, 0.010820982, 0.008698984, 0.013853268, 0.036604457, -0.008855723, -0.018856842, -0.025705107, 0.04096902, 0.03142003, -0.027344832, 0.0026494828, -0.043549176, -0.04456195, 0.0028725336, 0.034024302, -0.033107985, 0.030961873, 0.017494423, 0.058258478, 0.023028497, -0.014576676, 0.026669651, 0.029225694, 0.022944098, -0.013853268, -0.03602573, 0.014805756, 0.018278114, 0.0072220257, 0.008741183, 0.012647588, -0.0233902, 0.023498712, -0.00259372, -0.026042696, -0.005277866, 0.0142873125, 0.04579174, -0.029418603, 0.0037888507, 0.034795936, -0.028984558, -0.0021039124, -0.005666698, 0.025705107, 0.015372425, -0.03281862, 0.031564713, -0.033035643, 0.015818527, 0.027971786, -0.01924266, -0.006040459, 0.039811566, 0.014986607, 0.028357603, 0.007903235, -0.027441286, -0.02312495, 0.005335136, 0.02120792, -0.0057058823, 0.043814424, 0.0044851312, 0.034337778, 0.016481651, -0.046635717, 0.013648302, 0.008343308, 0.020990895, 0.012707871, 0.010513533, 0.019929897, -0.014154688, -0.050349213, 0.013370995, 0.017482366, -0.068868466, -0.015999379, 0.0049553467, 0.045237128, -0.025873901, -0.005937976, 0.028839875, 0.0068603214, -0.034554802, 0.03448246, -0.04473074, -0.025584538, 0.010405022, 0.00032214273, -0.031444144, 0.0304796, 0.01516746, 0.016119948, 0.008307138, -0.011924179, -0.017759673, -0.045020107, 0.00731848, -0.038871136, 0.01142985, -0.009452535, -0.02369162, -0.03889525, 0.0009163171, -0.0036200555, 0.007228054, -0.021895157, -0.023860415, 0.021473167, 0.030551942, 0.037062615, 0.010356795, 0.0055250307, 0.09592393, -0.005368292, 0.004240981, 0.02826115, 0.004554458], [-0.005380206, 0.02858473, -0.02534074, 0.04102003, -0.0039962204, 0.013093499, -0.05707543, 0.018488396, -0.0060824826, -0.003091194, -0.050070293, 0.005656415, 0.033568252, -0.028984353, 0.017336546, -0.0014691987, -0.04743749, -0.00028392265, 0.004442857, -0.033051096, -0.0074870368, -0.06558503, -0.07207301, -0.01676062, 0.006705423, -0.015056348, -0.023436658, 0.009608559, 0.0066760387, 0.03958609, 0.041466665, 0.0036406743, 0.043746863, -0.026139984, -0.007328363, 0.0011709514, 0.027268328, 0.027785486, -2.002931e-05, 0.0001632647, -0.063375354, 0.018182803, -0.019722523, -0.006164758, -0.022555139, 0.007786753, 0.028020557, -0.01267037, 0.018876266, -0.027291834, -0.0056946143, 0.0064292136, -0.049365077, -0.015561753, -0.023330875, -0.05133968, 0.04724943, 0.0050246594, 0.025058653, 0.01882925, -0.045768477, 0.02825563, 0.015549999, -0.016690098, -0.03925699, 0.046802793, 0.014092554, 0.0034173562, 0.03558987, 0.041090548, -0.012423544, 0.004193093, 0.0025975434, -0.021238737, 0.0033938491, -0.06624323, 0.0887161, 0.031264547, 0.007904289, -0.055429928, 0.029901132, -0.013963264, 0.025152681, -0.0019672571, 0.011324584, -0.036224563, 0.05477173, -0.13728192, -0.046802793, -0.0008352395, -0.0008778462, -0.017595123, 0.038363717, 0.006534996, -0.024847088, -0.0047866493, -0.009649697, -0.00021174827, -0.0047073127, 0.0071167983, -0.01345786, -0.045227814, -0.0550068, -0.04668526, 0.035613377, 0.046826303, 0.020274943, 0.018923279, -0.014292365, -0.048894934, 0.034814134, -0.033662282, -0.013551889, 0.011841741, -0.021203475, 0.06638427, -0.03932751, -0.057780646, -0.017089719, -0.0045956536, -0.05810975, -0.09290037, 0.062199995, 0.03749395, -0.011794727, 0.0063704457, 0.0023125187, 0.05890899, -0.01771266, -0.0059473165, -0.024964625, 0.009126662, 0.023389643, 0.034955177, 0.09694361, -0.008098223, 0.06624323, -0.011101265, -0.04532184, 0.029360468, -0.07418866, 0.024729552, -0.028279137, 0.012188473, -0.072778225, -0.049788207, -0.015385449, -0.018488396, -0.05166878, -0.007328363, -0.0110836355, -0.031875737, -0.018441383, 0.035895463, 0.034626074, -0.019604988, -0.00062991894, -0.0018085836, 0.0083509255, 0.004578023, 0.029454496, -0.037776038, 0.019076075, 0.057780646, 0.007622203, -0.040314812, 0.014163076, -0.04052638, -0.062388055, 0.026892213, 0.017113227, -0.030535826, 0.015479478, 0.0012319231, -0.039233483, 0.03408541, 0.050070293, 0.025904913, 0.0011298138, -0.049882233, -0.01283492, 0.04525132, 0.06074255, -0.04823673, 0.021015419, 0.00061449234, 0.0034643705, 0.037164852, 0.056605287, -0.05999032, -0.029901132, 0.012353023, -0.033920858, -0.017477589, -0.019005554, -0.06431564, -0.0020157406, -0.046826303, -0.012282501, 0.002455031, 0.023683483, -0.043041646, 0.0116243, -0.010448941, 0.018241571, 0.027856007, 0.031852227, 0.023742251, -0.018347353, 0.026633633, -0.011430366, 0.031969763, 0.017935978, -0.014151322, 0.008950358, 0.042054344, -0.02121523, -0.0031176396, -0.0035760296, 0.011154156, 0.060225394, -0.014221843, 0.032298863, -0.013093499, -0.016572561, -0.001098226, 0.0009887707, 0.037893575, 0.028326152, 0.027644442, -0.039868176, -0.040032726, -0.03723537, 0.031969763, -0.06981632, -0.008245143, -0.056887373, -0.016983937, 0.029101888, -0.027456386, 0.008668273, 0.005183333, -0.053737413, 0.03742343, 0.04409947, 0.018394368, 0.008198129, -0.011224678, -0.039209977, 0.050117306, 0.009755479, 0.026257519, 0.004190155, -0.006505612, 0.002734179, 0.086976565, 0.03909244, 0.010642875, -0.021885185, 0.03474361, -0.017277777, 0.06708949, -0.03951557, 0.065114886, -0.02874928, -0.004948261, 0.036530156, -0.052797124, -0.045721464, -0.041560695, 0.04123159, -0.022860732, 0.030958956, 0.041678227, 0.024306424, 0.008809315, 0.0320873, 0.014257104, -0.0030500565, 0.033709295, -0.039374527, 0.0085918745, -0.030606348, -0.028678758, -0.006681916, 0.028232122, 0.034978684, -0.04468715, 0.006499735, 0.0087211635, -0.041936807, -0.026939228, 0.021990966, -0.0030441796, 0.026398562, -0.0089621125, 0.004178401, 0.038293194, -0.04743749, -0.008286281, 0.008662395, 0.0009270644, -0.021273997, -0.029642554, -0.032792516, 0.056370217, -0.017430574, 0.056229174, 0.010995483, -0.050775506, 0.060131364, -0.009673204, -0.009890646, -0.031946257, -0.0011856434, 0.0049130004, 0.019828307, 0.067136504, 0.048894934, -0.04181927, -0.003808163, -0.016313983, -0.09308843, -0.004428165, 0.020110391, -0.008139361, 0.039468553, -0.045462884, -0.003919822, 0.016960429, -0.08034754, 0.0052009635, -0.019687263, -0.023859788, -0.03523726, -0.06708949, -0.009837755, -0.018065268, 0.02566984, -0.018382614, 0.02409486, 0.010466572, -0.0011290793, 0.006693669, 0.0015176822, -0.018100528, -0.028138094, 0.009015003, 0.04052638, 0.0037875944, 0.0012480844, 0.008309788, 0.015173884, 0.02458851, 0.043464776, 0.007052154, 0.0060589756, -0.06210597, 0.03368579, -0.014985827, 0.06643129, -0.065443985, 0.022414096, 0.051762808, 0.048048675, 0.00093734876, -0.037117835, 0.010989606, -0.0006842793, -0.0050599203, -0.028138094, 0.036553662, -0.041678227, -0.008932728, -0.051621765, 0.015679289, 0.039821163, -0.02196746, -0.03192275, 0.0033938491, 0.045768477, -0.016936922, -0.013434353, 0.032392893, 0.025199696, -0.0144921765, -0.03723537, 0.028020557, 0.014045539, -0.016549055, 0.0067994515, 0.015902607, 0.042124864, -0.017982991, 0.006869973, 0.019652002, -0.026375055, 0.072308086, -0.0084332, 0.015232652, 0.0033086354, -0.004563331, -0.04600355, -0.032369386, 0.025129175, -0.042453967, -0.010901455, -0.022355327, -0.008979742, 0.03591897, -0.06262313, -0.02055703, 0.010548847, 0.080112465, 0.005477173, 0.0015632274, 0.023037035, 0.036530156, -0.011224678, 0.004666175, 0.02095665, -0.033568252, -0.04111406, 0.016313983, -0.06083658, 0.026351549, -0.059708234, 0.02137978, -0.001884982, -0.03293356, 0.0028884446, 0.019604988, -0.0036347976, -0.010443064, 0.011495011, -0.011559656, 0.006617271, -0.021450302, -0.0229195, 0.03932751, -0.019181859, 0.017148487, 0.03516674, 0.03424996, -0.025199696, 0.029877625, -0.050211336, 0.009949414, 0.01859418, 0.0065114885, -0.025223203, -0.04659123, -0.065114886, -0.046873316, 0.007816137, -0.030159712, 0.048142705, 0.03549584, 0.053878456, -0.060789566, 0.014727248, -0.0020789162, 0.04807218, -0.008192252, 0.051198635, -0.015549999, -0.026116475, 0.059520178, 0.007016893, 0.030747391, -0.00627054, 0.016149431, 0.0106663825, 0.050634466, 0.022449356, -0.021391533, -0.016972184, 0.036130536, 0.013657671, 0.002462377, -0.0149270585, -0.020463, -0.029125394, 0.07291927, 0.018770482, 0.010631122, 0.041772258, 0.022343574, 0.06276417, 0.055947088, -0.002565221, 0.029924639, -0.03457906, 0.005403713, -0.0070639076, -0.021050679, -0.026680648, -0.06793575, -0.008821069, -0.004651483, 0.024847088, 0.030653361, 0.04266553, -0.0079983175, 0.009949414, 0.021321012, -0.0075810654, -0.019816551, 0.010160978, 0.028702267, -0.00083891244, 0.01542071, -0.050728492, -0.005430158, -0.02108594, -0.02884331, 0.021356272, 0.03464958, -0.0062176487, 0.0040696803, 0.0015837962, -0.02933696, -0.04106704, -0.044546105, -0.057827663, -0.0023756942, -0.018065268, -0.00641746, -0.008256896, -0.03584845, 0.0105370935, -0.02940748, 0.013716439, 0.0072931023, 0.0034291097, -0.020451246, 0.01041368, 0.02917241, 0.030441796, -0.006593764, -0.025105668, 0.030888434, -0.00858012, 0.001567635, -0.031217534, 0.047649052, 0.052185938, -0.0373294, 0.009679081, 0.005538879, -0.011113019, 0.03100597, 0.009109032, 0.010219746, 0.008697656, -0.03676523, -0.03850476, -0.02884331, -0.012811413, -0.038716324, 0.012070936, 0.012164965, 0.080958724, 0.003423233, -0.026116475, -0.031899244, -0.023495426, -5.78497e-05, -0.023648223, 0.013845729, -0.00060971745, 0.013540136, 0.0033879722, -0.03935102, 0.006111867, 0.09995253, -0.009896522, -0.037940588, -0.034179438, -0.01529142, -0.03739992, -0.015937869, 0.004745512, -0.013105253, 0.006781821, 0.01915835, -0.0111482795, -0.045039754, -0.047884125, -0.02642207, 0.010061073, 0.03533129, -0.01224724, -0.027456386, -0.0021494378, -0.007363624, 0.004392904, 0.0015779195, 0.011189417, 0.041631214, 0.005491865, -0.032604456, 0.015644027, -0.0033967874, -0.015256159, 0.008245143, 0.0046838056, -0.05392547, 0.045862507, 0.004266553, -0.11810007, 0.019828307, 0.040926, -0.01761863, -0.013340324, -0.0047425735, -0.0053625754, 0.0838266, 0.014139568, 0.059802264, 0.04017377, 0.01679588, 0.07085064, -0.03410892, 0.03617755, 0.011289323, 0.013728193, 0.015479478, 0.0069111106, 0.020686317, -0.004131387, -0.039891683, -0.037940588, -0.030300755, 0.0054595424, -0.026492592, 0.0168664, 0.03258095, -0.016325736, 0.0038199166, 0.0034291097, 0.034461524, 0.018406121, 0.10258533, -0.02566984, -0.030042175, 0.049035978, -0.0014927059, 0.061212696, -0.036483143, -0.018347353, 0.008915097, -0.009925907, 0.04898896, 0.00915017, -0.028866816, -0.04541587, 0.0478136, -0.00900325, -3.1978027e-05, -0.035871956, -0.06342237, 0.015820332, 0.01741882, 0.0109073315, -0.0059208707, 0.014750755, -0.01237653, 0.0031323317, 0.05966122, 0.06897006, -0.048612848, -0.054536656, -0.04409947, -0.029078381, -0.037705515, 0.006129497, 0.01705446, -0.018805744, -0.029195916, -0.013011224, -0.034814134, -0.0068876036, 0.003866931, -0.021885185, -0.008245143, -0.0383167, 0.008674149, -0.021297505, -0.0016954553, -0.0012936294, -0.036812242, -0.008227513, 0.034508538, 0.007757369, -0.0222613, 0.011853496, -0.052515037, 0.0066407784, -0.0027620937, -0.033403702, -0.041090548, -0.01679588, -0.011283446, 0.03300408, 0.048283745, -0.0083509255, -0.0015044595, -0.039703626, -0.027385864, 0.049035978, -0.0025270218, 0.023683483, 0.03857528, 0.018406121, 0.0012025392, -0.018218065, 0.033121616, -0.07983038, 0.061541796, 0.035566363, 0.0118887555, -7.173822e-06, -0.028490702, 0.0141865825, -0.029289946, 0.046802793, -0.036906272, 0.06821784, -0.010125717, -0.001364151, -0.0147977695, 0.013798715, -0.014680234, -0.016513793, 0.01637275, -0.008644765, 0.0056005856, 0.03739992, 0.018323846, 0.00612362, -0.046027057, -0.024517989, -0.041607708, -0.0040843724, -0.0271743, 0.028490702, -0.022825472, -0.008215759, -0.02799705, -0.009602683, -0.038363717, -0.0018570671, -0.041184578, -0.011712452, 0.04783711, -0.010830933, 0.012035676, -0.009731973, 0.00076251413, -0.02321334, -0.01026676, 0.009884769, -0.026516099, 0.050775506, -0.0070227697, -0.016278721, -0.05110461, 0.00535376, -0.0016807633, 0.027127285, 0.03335669, 0.024635524, 0.0009432256, 0.009649697, -0.029948147, 0.031123506, -0.0054477886, -0.022155516, -0.015467724, 0.005071674, 0.020451246, 0.017665645, -0.031781707, 0.03008919, 0.016878154, -0.006476228, -0.006705423, 0.032110807, 0.013681178, 0.011853496, -0.0018600055, -0.023436658, 0.020803854, 0.07357747, 0.010548847, 0.01578507, -0.010090456, 0.050446406, 0.0022170208, 0.012494066, -0.051715795, 0.010519463, 0.035777926, -0.027291834, 0.003896315, 0.0049276925, -0.043229703, -0.051386695, 0.0051803947, 0.012211979, -0.004613284, -0.020321956, 0.028349658, -0.009949414, 0.0089621125, 0.027526908, -0.0062411563, -0.03932751, 0.005538879, -0.036201056, -0.03549584, 0.008039455, -0.026375055, 0.024541495, 0.06257611, -0.007880782, -0.019499205, -0.023695236, -0.032533936, -0.031099997, -0.021591345, -0.03041829, 0.015244406, 0.0009006188, 0.028561223, -0.0124823125, 0.073295385, 0.00052854425, 0.025246711, -0.028537715, -0.020510014, 9.3202296e-05, -0.023037035, -0.053361297, 0.03149962, -0.006011961, -0.008374433, 0.02367173, 0.03300408, 0.025434768, 0.021097694, 0.014891798, -0.0033615266, -0.0324164, -0.006182388, -0.05707543, -0.0004554516, -0.0124823125, 0.0013883928, -0.014268857, 0.03650665, 0.041772258, -0.003496693, 0.019346409, 0.015256159, -0.011254062, -0.06431564, -0.044710655, -0.0072578415, 0.0069463714, -0.004954138, 0.019981103, 0.043370746, 0.0045721466, -0.030112697, -3.1151605e-05, 0.012353023, 0.001001259, 0.004375274, 0.014409901, 0.015667535, -0.083732575, -0.0006240422, -0.030065682, -0.01787721, 0.01287018, 0.0014589144, -0.0022610968, 0.028396674, 0.012012169, -0.014962319, 0.054818742, -0.016067157, 0.029148903, 0.054959785, -0.00823339, -0.023236847, -0.014116061, 0.014362887, 0.01850015, 0.01283492, -0.025481783, -0.0412551, 0.01345786, 0.011971031, 0.010014058, 0.03424996, -0.011071881, -0.018182803, 0.024306424, -0.012494066, 0.05350234, -0.020451246, 0.02220253, -0.016972184, -0.0037582102, 0.022120256, -0.0051128115, -0.057216473, 0.02933696, 0.011359844, 0.015984882, 0.03549584, -0.025152681, 0.05058745, 0.0072578415, -0.023060543, 0.011782974, -0.009402872, 0.004178401, 0.038951397, 0.019499205, 0.016325736, 0.007916043, -0.0133990925, -0.018147543, 0.009161923, -0.025622826, -0.008938605, 0.07273121, 0.08547211, -0.036694705, -0.019346409, 0.007757369, -0.04052638, -0.020756839, 0.0042929985, 0.035683896, 0.011577286, -0.02082736, 0.024517989, -0.009097278, -0.0062822937, 0.010601738, -0.017830195, -0.014915305, 0.0402678, -0.006211772, -0.014327626, -0.0027180177, -0.03375631, 0.011359844, 0.015644027, 0.049459103, -0.03991519, 0.03925699, -0.010930838, 0.047719575, 0.03584845, -0.015644027, 0.0081746215, 0.019005554, 0.04052638, -0.01145975, 0.023001775, 0.0033732802, -0.0062881703, -0.05035238, -0.0004609611, -0.005565325, -0.014398147, -0.02658662, -0.0137517, -0.0059943306, -0.013540136, -0.037211865, 0.018488396, 0.031946257, -0.0006020042, 0.029924639, -0.04090249, -0.02759743, 0.032980572, 0.0078690285, -0.023413152, 0.022425849, -0.0029707197, 0.045768477, -0.052515037, 0.0063528153, -0.018065268, -0.02449448, 0.006023715, -0.0370003, 0.029548524, -0.0013435822, 0.010072826, -0.031052984, -0.013187528, -0.000174651, 0.05825079, -0.021826416, -0.014574451, 0.018359108, 0.019393424, 0.026892213, 0.011265815, -0.003017734, 0.050634466, -0.009731973, -0.022320068, 0.019052569, 0.006793575], [-0.023797827, 0.0038782947, -0.027928416, 0.048440546, -0.024102926, 0.0007103117, -0.0058614467, 0.031495742, 0.0007561501, 0.022037633, -0.04543648, -0.008396126, -0.055669077, 0.01310758, -0.0071815928, 0.009604793, -0.054730307, 0.029219225, -0.058016002, -0.02999371, 0.0068764924, -0.056185402, -0.04905075, 0.016803987, 0.0122861555, -0.01767235, -0.017132558, 0.0062838932, -0.025440674, 0.008460667, 0.02429068, 0.013389211, 0.034288585, 0.0029263229, 0.05332215, -0.02005448, -0.011869577, -0.007093583, -0.005218976, -0.0017645947, -0.07223837, -0.0009901093, -0.0046234434, -0.047243614, -0.020007541, -0.050646655, -0.0120045245, -0.024666188, -0.0102678, -0.030111056, 0.0058731814, -0.013635638, 0.00066960725, 5.1705705e-05, -0.022143243, 0.008748165, 0.037715096, -0.10561165, 0.054495614, -0.04325384, -0.048440546, 0.01668664, 0.032270227, -0.026801892, -0.018458571, 0.0031947526, 0.008372657, 0.01959683, 0.0419865, 0.03288043, -0.01214534, 0.0036524031, -0.03820795, 0.008842043, 0.0040660487, -0.084066875, 0.0794669, 0.009598926, -0.026332507, -0.010778256, 0.026355974, -0.031096766, -0.017308576, -0.03914672, 0.017566739, -0.024079457, 0.06505678, -0.11396671, -0.038325295, 0.033279408, 0.048816055, 0.01343615, 0.010878, 4.7557333e-07, -0.08894848, 0.04144671, 0.005758769, 0.0069938386, -0.024900882, -0.007873936, 0.021650389, -0.06792003, -0.020899372, -0.036095716, 0.0056590247, 0.025769243, 0.016827457, -0.042479355, -0.004714387, 0.054965, 0.005518209, -0.024220273, -0.018493773, -0.024149865, 0.016921334, 0.045366075, -0.016498888, -0.052899703, -0.03982733, 0.009540252, -0.084113814, -0.016381541, 0.05172624, 0.042197723, -0.023739154, 0.046797697, 0.046774227, 0.06322618, -0.0031888853, -0.0008170235, 0.011147897, 0.05515275, 0.015747871, 0.022377936, 0.07589958, 0.025745774, 0.011728761, -0.0035145213, -0.038301826, -0.009364233, -0.07834038, 0.0010253132, -0.004579439, 0.03982733, -0.0392406, 0.0020491595, -0.048158914, -0.024713127, -0.045577295, -0.02149784, -0.03468756, -0.0134126805, -0.023281503, 0.004183395, 0.013295334, -0.01813, 0.028233515, -0.0024496038, 0.005412597, 0.02461925, 0.029500855, -0.10467289, 0.015360628, 0.024361089, 0.0122861555, -0.07923221, 0.008871379, -0.0074749584, -0.055293567, 0.0175198, -0.0038548254, -0.030885542, 0.006571392, 0.009082602, -0.042737518, 0.050552778, 0.02335191, 0.02999371, 0.01896316, -0.07233225, -0.04768953, 0.0011551274, 0.042221192, -0.0010172456, 0.03034575, -0.011247641, 0.015325424, -0.018845813, -0.0056091524, -0.05778131, -0.043347716, -0.011476466, -0.034570213, 0.0065244534, -0.015043793, -0.022659568, -0.01909224, -0.041282423, -0.003763882, -0.0014917647, -0.01688613, -0.016944803, -0.028350862, -0.012121871, -0.034804907, 0.016111644, 0.00068024173, -0.006330832, 0.017109089, -0.015149405, 0.04867524, 0.014128492, -0.034382463, -0.027811069, -0.029406978, 0.009551987, -0.043113023, 0.012380033, -0.005474204, -0.048018098, 0.05749968, -0.003062738, 0.026778422, 0.008730563, -0.025628429, 0.047548715, 0.03128452, 0.0036641378, 0.012497379, 0.029782487, 0.039052844, -0.0044092867, -0.0142927775, 0.0141989, -0.08087506, 0.011482334, -0.012720337, -0.015208079, 0.039287537, -0.015055528, 0.037433464, 0.04008549, -0.064822085, -0.055434383, 0.03940488, 0.055997647, 0.012814214, -0.024642719, -0.02005448, -0.006536188, -0.008390259, -0.0046762493, 0.051022165, 0.019432545, 0.02157998, 0.08754033, -0.0129902335, -0.027106991, -0.04144671, 0.03313859, -0.03543858, 0.02134529, -0.032293696, 0.069938384, -0.029453916, 0.0056326217, 0.04102426, -0.06454045, -0.050646655, -0.030486565, 0.035884492, -0.020066215, 0.026989644, 0.017003477, 0.039686512, -0.023093749, 0.012110136, -0.004696785, -0.042455886, 0.04064875, 0.030791664, 0.048534423, 0.020476926, -0.036565103, 0.04989564, 0.03121411, -0.037057955, -0.042197723, -0.08059343, -0.002412933, -0.03151921, -0.014128492, 0.038043667, 0.022765178, 0.03543858, 0.011728761, 0.014398389, 0.012872887, -0.044755872, -0.018188674, -9.4793795e-05, -0.018118266, -0.013471354, -0.025816182, -0.00077741913, 0.011476466, -0.0010861865, 0.07951384, -0.0135534955, -0.019326933, 0.0606915, -0.022448344, 0.00035552256, -0.011769832, 0.01797745, 0.015935626, 0.010226728, 0.035508987, 0.043066084, -0.03536817, 0.003928167, -0.008800971, -0.12523195, -0.00017290241, 0.039686512, -0.011951719, -0.01688613, -0.015114201, -0.036377348, 0.038020197, -0.06651188, -0.0057441005, -0.0053099194, -0.011030551, -0.049801763, -0.108427964, -0.030862072, -0.015231548, 0.021239677, 0.004098319, -0.01959683, 0.0169096, -0.03344369, -0.075664885, -0.00867189, -0.0037169436, 0.016745314, -0.004553036, 0.02396211, -0.032223288, 0.0013626837, 0.06871799, 0.027247807, 0.012485645, -0.01939734, 0.0070231752, -0.04395792, -0.04109467, 0.01548971, 0.019608565, 0.07810569, -0.08603829, -0.004124722, 0.07740161, 0.02193202, -0.02586312, -0.03374879, -0.023903439, -0.034546744, 0.03123758, -0.05458949, 0.04576505, -0.03194166, 0.015301955, -0.030791664, -0.01579481, 0.015524914, -0.019139178, -0.023997314, 0.008888981, 0.0016912533, -0.04799463, -0.013400946, 0.026050875, 0.024783535, 0.00057939725, -0.017015211, -0.011112693, 0.028984532, -0.040343653, -0.0040836507, 0.018094797, -0.027200868, -0.007363479, 0.027224338, -0.0068236864, -0.023563134, 0.00048075305, 0.009716272, -0.013964208, 0.006765013, -0.0134830875, -0.010197392, 0.01078999, 0.04768953, -0.020629477, -0.0058643804, 0.029899834, 0.0027899079, 0.034006953, -0.039991613, 0.0036201328, -0.005483005, 0.036565103, -0.001908344, 0.057875186, -0.027834538, 0.029406978, -0.011898913, -0.014891244, 0.036236532, -0.048534423, -0.033561036, 0.015360628, -0.07054859, 0.035227355, -0.040789567, 0.01280248, -0.017824901, -0.038114075, -0.023140687, -0.013576965, -0.019890195, 0.0067591458, 0.0007117785, -0.07890364, -0.051350735, -0.034781437, 0.0071053174, 0.040906914, 0.023117218, -0.0071463888, 0.009757344, 0.017378984, 0.0024173334, 0.0009798415, -0.07397509, 0.00274737, 0.027435562, -0.010608104, 0.012497379, 0.025393736, -0.061630268, 0.0018848747, 0.048205853, -0.029805956, -0.012849418, 0.009422907, 0.012579521, -0.09401784, 0.010103515, 0.010743053, 0.05426092, -0.008261179, 0.033326343, -0.03790285, -0.02025397, 0.021533042, 0.012438706, 0.016193787, 0.018235613, 0.019362137, -0.02652026, 0.013717781, -0.008149699, -0.034194708, -0.012227483, -0.017050415, 0.044169143, -0.048769116, -0.03281002, -0.028468208, 0.015078997, 0.019350402, 0.026262099, 0.009757344, 0.007879803, 0.017883573, 0.056373153, 0.0410712, 0.014210635, 0.012872887, -0.003156615, -0.034617152, 0.008560412, -0.05937722, -0.065573104, -0.06468127, 0.00046425124, -0.015137671, 0.02335191, 0.05332215, 0.027036583, 0.018716732, -0.021157535, 0.0039751055, -0.01607644, -0.025182512, -0.008020619, -0.04064875, -0.008243577, -0.020418253, -0.023973845, 0.036823265, -0.012649929, -0.022037633, -0.023445787, 0.014504001, 0.022248855, 0.037996728, -0.021181004, -0.046563007, -0.04700892, -0.00607267, -0.0136943115, 0.00076201744, 0.0061724144, 0.0076451106, -0.004450358, -0.038372234, -0.0432069, -0.019925399, -0.017555004, 0.022377936, 0.01607644, -0.0026300235, 0.042479355, 0.022190182, -0.048111975, 0.027036583, -0.038114075, 0.040789567, 0.0013612169, -0.015301955, -0.023387114, 0.010584635, 0.052946642, 0.018071327, -0.0032798287, 0.019585095, -0.054026227, 0.052289505, 0.008372657, 0.029759018, -0.0030774062, -0.017449392, -0.030064117, -0.012872887, -0.0024950753, -0.012696868, 0.007897405, 0.016416745, 0.04642219, 0.046821166, -0.022941198, -0.025511082, 0.038630396, 0.009686936, -9.470212e-05, 0.008155567, -0.0013934871, 0.059189465, 0.028632494, -0.012908091, -0.019033568, 0.05393235, 0.056607846, -0.066605754, 0.00437995, -0.026942708, 0.015677463, -0.0047114533, 0.011834373, -0.030580442, 0.023258034, -0.004089518, -0.03034575, -0.07810569, -0.059940483, 0.002103432, 0.0023645277, 0.033279408, 0.00032490253, 0.021450901, -0.0032710277, 0.025839651, 0.018564181, 0.027177399, -0.004758392, 0.015407567, 0.007298939, -0.016346337, -0.011265243, 0.0006820753, -0.030087586, -0.01893969, 0.028609024, -0.02907841, -0.0031331459, 0.029008001, -0.039545696, -0.02522945, 0.02684883, -0.013929004, 0.013177987, -0.03248145, -0.005521143, 0.012027994, 0.022483548, 0.04829973, 0.025205981, 0.027670253, 0.05712417, -0.036072247, -0.0047437237, -0.004705586, 0.0047026523, 0.0060609356, -0.00014466596, -0.013459619, -0.013717781, -0.025980467, -0.008008884, -0.007410418, 0.017731024, 0.03884162, 0.032059006, 0.031378396, -0.013987677, 0.03853652, 0.012544318, 0.021556512, 0.028655963, 0.07040777, -0.026754953, -0.026919238, 0.047149736, 0.010508359, 0.039663043, 0.001616445, -0.031002888, 0.04703239, 0.024243742, 0.0432069, 0.0050546913, -0.0033825065, 0.012814214, 0.0211458, -0.029571263, 0.003491052, -0.025346797, -0.018669793, 0.00915301, 0.0074045504, 0.011259376, -0.00094317074, -0.021333555, -0.026050875, 0.006383638, 0.023269769, 0.09669334, -0.04644566, -0.027834538, -0.0413763, -0.030157994, -0.0068119518, 0.0052629807, 0.015630525, -0.010608104, -0.007967813, -0.04398139, -0.03626, -0.034804907, -0.0432069, 0.004843468, 0.007662712, -0.051679302, 0.0068647577, -0.009874689, 0.00450023, 0.015595321, -0.0338192, -0.016792253, 0.062381282, -0.020852435, 0.0072578676, -0.008589748, -0.011675955, -0.003491052, -0.01898663, -0.048487484, -0.02652026, -0.008184903, -0.055997647, -0.007979548, 0.031331457, 0.0028353797, -0.017156027, -0.07773018, -0.00077741913, 0.0359549, -0.009370101, 0.039686512, 0.06796697, 0.015607055, -0.010338208, -0.013084111, -0.029571263, -0.056091525, 0.016146848, -0.015008589, 0.014210635, -0.005169104, -0.04069569, 0.030533504, -0.039357945, 0.03917019, -0.0056091524, 0.057030294, -0.009540252, 0.021380493, -0.011634884, 0.0073400103, -0.0027356353, -0.0011045219, -0.015689198, 0.00047121866, -0.00093290297, 0.009933363, 0.006817819, 0.0061372104, -0.014105023, -0.04224466, -0.045882396, 0.0037844176, -0.009522651, 0.079044454, 0.007633376, 0.001848204, -0.008930053, -0.0232463, 0.0003139013, 0.009892291, -0.04794769, 0.008349188, 0.047290552, 0.031706966, 0.016874395, 0.0013700179, -0.016475419, -0.026590668, 0.0010649175, -0.01096601, -0.026144752, 0.04895687, -0.03161309, -0.0015034992, -0.046586476, 0.013576965, 0.02652026, 0.018470306, 0.04520179, -0.029641671, -0.011922383, 0.013400946, -0.008267046, -0.024431497, -0.009417039, -0.046281375, 0.012215748, 0.015114201, 0.0032123546, 0.008648421, -0.018974895, 0.05895477, -0.010549431, -0.012262687, -0.029970242, 0.024102926, -0.013600434, 0.032223288, -0.0072578676, 0.036072247, -0.018165205, 0.056560908, 0.00066887384, 0.033678383, -0.029641671, 0.05332215, -0.0011888646, 0.019362137, -0.047454838, -0.00773312, 0.014058085, -0.0058995844, -0.007768324, -0.019502953, -0.0474079, -0.061160885, 0.048862994, 0.029101878, 0.028374331, 0.024102926, 0.023797827, -0.03060391, 0.020629477, 0.008120363, 0.018470306, 0.0051456345, 0.011887179, -0.0020344912, -0.038254887, 0.016897865, -0.00028456474, 0.018552447, 0.008818573, 0.016381541, -0.015067263, 0.004362348, -0.030486565, -0.032223288, -0.026121283, -0.04102426, 0.031167174, -0.014750428, 0.050177272, -0.015841749, 0.044333424, 0.0014822303, 0.011869577, -0.0130254375, -0.026191691, -0.013119315, 0.010496625, -0.07655671, 0.034922253, -0.01817694, 0.0205356, -0.0016516489, 0.04919156, 0.034851845, 0.0034793173, -0.009340764, -0.019538157, -0.015712667, 0.007134654, -0.06862411, 0.0050370893, -0.0055446117, -0.0049901507, 0.037386525, 0.040249776, 0.0071757254, -0.015395832, 0.0026578933, -0.01985499, -0.02066468, -0.052852765, 0.0026974976, -0.0146096125, -0.026895769, -0.0012240685, 0.024525374, 0.005483005, 0.01835296, -0.028914124, 0.03323247, -0.041470177, 0.011576211, -0.013929004, -0.021650389, 0.014515735, -0.075711824, -0.02160345, -0.012262687, -0.02966514, -0.010214994, -0.014457062, -0.0024320018, 0.02387997, 0.008695359, 0.0013502156, 0.03464062, -0.0169096, 0.026989644, 0.014105023, -0.012579521, 0.010285402, -0.010549431, -0.0011147897, 0.001968484, -0.00019637166, 0.008272913, -0.04778341, 0.035156947, -0.0077976603, 0.0076216413, 0.01896316, 0.020547334, -0.014492266, -0.02134529, 0.038677335, 0.034358993, -0.057452742, 0.029759018, -0.0032475584, -0.04271405, -0.01090147, 0.025933528, -0.031730436, 0.03283349, 0.036213063, 0.025205981, 0.035532456, 0.004218599, 0.024900882, 0.008624952, 0.0022339798, 0.020218765, -0.021896817, -0.0037873513, 0.020559069, 0.029242694, -0.014093288, -0.013917269, -0.042033438, -0.011822638, -0.005339256, -0.05623234, -0.012591256, 0.048111975, 0.05022421, 0.007768324, -0.0046997187, 0.029571263, -0.03288043, 0.0063777706, 0.034828376, 0.018857548, -0.008712961, -0.0029057874, 0.01166422, -0.007656845, -0.0011939984, -0.036752857, -0.018411633, 0.0014917647, 0.010385146, 0.054871123, 0.011570344, -0.0024070656, -0.015912157, -0.008988725, 0.0021577047, 0.014234104, -0.00821424, 0.0024906748, -0.014281043, 0.011863709, 0.0071229194, -0.056889478, 0.006612463, 0.04299568, 0.04006202, 0.014914713, 0.034828376, 0.005782238, -0.009405305, -0.01896316, -0.0066007283, 0.017531535, -0.067403704, -0.00834332, -0.0071053174, -0.03283349, -0.006295628, -0.013119315, 0.026191691, 0.01483257, 0.0074573564, 0.041188546, -0.03630694, 0.00788567, 0.04445077, -0.0065068514, 0.022917729, 0.008331586, 0.009252754, -0.019831521, -0.01795398, 0.017895307, -0.0129902335, -0.042526294, 0.028702902, -0.037081424, 0.038419172, -0.007662712, 0.001446293, -0.05585683, -0.010173922, 0.005776371, 0.015548383, -0.022002429, -0.017860105, 0.008290515, 0.054448675, 0.032669205, 0.018798875, 0.014140227, 0.10495452, -0.03407736, -0.0019230122, 0.015759606, -0.019127443], [0.00018555428, 0.012299385, -0.023189714, 0.01431744, -0.0035853304, 0.04690484, -0.023440478, 0.050057303, -0.02188813, 0.008991687, -0.017589316, -0.005791458, -0.009690244, -0.034820396, -0.005621297, 0.02615112, -0.055598, 0.011511269, -0.031142522, -0.01609667, 0.01380397, -0.06309704, -0.044874843, -0.007976688, 0.008490158, -0.014174146, -0.02553018, 0.029828994, -0.004651078, 0.04762131, 0.03443828, 0.007546807, 0.03083205, 0.030163346, 0.0034062131, -0.021291072, -0.039787915, -0.0048301956, 0.0068781027, 0.018843135, -0.053735178, 0.0048719896, -0.008979745, -0.040098384, -0.010078331, -0.007690101, -0.015248849, -0.04711978, -0.017863961, 0.0017941579, 0.005000357, -0.0130516775, -0.05865493, -0.020825367, -0.013493501, 0.018007256, 0.07871606, -0.013505441, 0.054833762, -0.027178058, -0.01702808, 0.043418024, 0.044564374, -0.008758834, -0.014890615, 0.003910727, -0.0036301098, 0.02406142, -0.0037614624, 0.047191426, -0.00851404, -0.0005575025, -0.01670567, -0.03302922, 0.0029106555, -0.056266703, 0.08535534, 0.010376859, -0.0027927365, 0.028037822, 0.017923668, -0.007827424, -0.0152607905, 0.018353548, 0.02335689, -0.044636022, 0.060135636, -0.11664116, -0.027369117, -0.00042876194, -0.007839366, 0.0068781027, 0.04454049, -0.015081673, -0.013911441, -0.025100298, -0.011923239, -0.0031912725, -0.031596284, -0.026939236, -0.020491015, -0.03267099, -0.058798227, -0.070691615, 0.008281188, 0.037590742, 0.028300527, -0.005946693, -0.01887896, 0.0067168972, 0.02262848, -0.025816768, -0.010233566, 0.016156377, -0.032312755, 0.026270531, -0.036468275, -0.041674614, -0.05497706, -0.022091128, -0.0654375, -0.029661817, 0.061377514, 0.02190007, -0.011159006, 0.03591898, 0.009917126, 0.025195828, 0.010753006, 0.011553063, -0.05769964, 0.032050047, 0.040026736, 0.05311424, 0.069401965, 0.027106412, 0.07188573, -0.011559034, -0.06954526, 0.005821311, -0.04408673, 0.03228887, -0.045471903, 0.060231164, -0.053018708, 0.021673188, 0.0045406227, -0.017505728, -0.05354412, -0.041029792, -0.033984516, -0.027416881, -0.032838166, 0.014269675, 0.051012594, -0.021088071, 0.004346579, 0.026604883, 0.0050929007, 0.026055591, 0.029255819, -0.05043942, 0.006931838, 0.04652272, 0.03183511, -0.093857445, 0.014998085, -0.012777031, -0.04563908, 0.02418083, -0.0014620447, -0.02677206, 0.01535632, -0.005143651, -0.045782372, 0.006089987, 0.0065736035, -0.00934395, 0.0050570774, -0.08043559, -0.05832058, 0.040862616, 0.025816768, 0.0045943577, 0.028109469, 0.02655712, 0.04513755, 0.029494641, 0.027942292, -0.06758691, 0.010514183, 0.026724296, -0.02574512, -0.010430595, -0.01702808, -0.041770145, -0.00017044127, -0.005179474, 0.024527123, -0.0025628696, -0.014926438, -0.05387847, -0.010388801, -0.036253333, -0.023524066, 0.023858419, -0.0032360519, -0.009732038, -0.001743408, -0.0163952, 0.04057603, 0.008334924, 0.025363004, -0.019034194, -0.038187798, 0.005958634, -0.030426051, -0.009946979, -0.013218854, -0.0593714, 0.09333203, -0.022365775, 0.010132066, -0.013314383, 0.02947076, 0.01866402, 0.031476874, 0.0016120553, 0.008633452, -0.00010084675, -0.050917067, -0.056409996, -0.034151692, 0.050248362, -0.07594572, -0.013039736, -0.02553018, -0.007875189, 0.059801284, -0.030282758, 0.0119471215, -0.006770632, -0.020311898, 0.013780088, 0.068303384, 0.014627909, 0.021016425, 0.04449273, -0.019344663, -0.008322982, -0.00019460345, 0.031620167, 0.03964462, -0.002589737, 0.008997657, 0.07484713, -0.027201941, -0.046809312, -0.0064601623, 0.040862616, 0.0025837664, 0.04532861, -0.008024453, 0.09285439, -0.03219334, -0.017135551, 0.025864532, -0.043441907, -0.06844667, 0.0049645333, 0.030163346, -0.032862045, 0.0034420367, -0.008752864, 0.019464076, 0.015201084, 0.034915924, 0.026819825, -0.04766907, 0.030449934, -0.045925666, 0.018484902, 0.01908196, -0.004286873, 0.036086157, 0.009714126, -0.030640993, -0.041865673, -0.04900648, -0.008137894, -0.014520439, 0.009606656, 0.056266703, -0.008352835, 0.039286386, 0.009899214, -0.0020255176, -0.011385887, -0.047454134, -0.013147207, -0.0046003284, 0.009033481, -0.05082154, -0.037280273, 0.013171089, 0.05860717, 0.02884982, 0.13928159, -0.010006684, 0.012179974, 0.07427396, -0.010191772, -0.042080615, -0.032360516, 0.015236909, -0.013445736, 0.017398257, 0.04919754, 0.03766239, -0.010149978, 0.0071408083, -0.027631823, -0.1141574, 0.010126096, 0.039907325, 0.01805502, -0.0114575345, -0.01651461, -0.028969232, 0.021637365, -0.07307984, 0.020920895, -0.018652078, -0.026748177, -0.040862616, -0.06658386, 0.013887558, -0.023989772, -0.008317011, -2.8406877e-05, -0.017278844, -0.015320497, -0.042510495, -0.03768627, -0.02916029, -0.014209969, 0.009917126, -0.0033674045, 0.07150361, -0.0047048135, 0.0014717468, 0.0065437504, 0.04255826, 0.022592656, -0.012132209, -0.0008545386, -0.018258018, -0.0470959, -0.04045662, 0.016956434, 0.06070881, -0.034700982, -0.0025255533, 0.056218937, 0.013660677, -0.029828994, -0.044755433, -0.03725639, -0.032862045, 0.038760975, -0.07393961, 0.00965442, -0.011505298, 0.034318868, 0.005821311, -0.036492158, 0.023309126, -0.019428251, -0.07971912, 0.01151724, -0.026318297, -0.047979545, -0.026724296, 0.020168604, -0.016526552, 0.014818968, -0.05913258, -0.011135123, 0.061711866, 0.013493501, 0.0021926938, 0.027106412, -0.010126096, -0.0076184543, 0.023739008, 0.043346375, -0.039453562, 0.017625138, 0.035632394, 0.04339414, 0.0133263245, -0.015427967, -0.048003424, -0.04752578, 0.051346947, -0.03436663, -0.032623224, -0.0027106411, 0.03412781, 0.048719894, -0.016634023, 0.020897014, -0.03477263, 0.011027653, 0.028204998, 0.02999617, -0.02574512, 0.06739585, 0.0012276996, -0.031094756, 0.054165058, -0.038737092, -0.049340833, 0.058559403, 0.008675246, 0.047645193, -0.05540694, 0.015595143, 0.0138159115, -0.012114298, 0.009815626, -0.00018033003, -0.030426051, -0.032097813, -0.012597914, -0.037089214, -0.016837023, -0.065771855, 0.01981037, 0.05149024, -0.0067885444, -0.06266716, 0.03405616, 0.03732804, -0.02999617, 0.04296426, -0.052111182, -0.004376432, 0.02553018, -0.03611004, -0.005955649, -0.041053675, -0.040480502, -0.027273588, 0.008961834, -0.023882302, 0.01805502, 0.014401028, 0.020502957, -0.0873137, 0.030115582, 0.0076542776, 0.066965975, -0.021147778, 0.05230224, -0.010705242, -0.0703095, 0.016371317, 0.006251192, 0.028133351, 0.0078931, 0.017625138, -0.003922668, 0.0047376514, -0.009684273, -0.06046999, -0.025792886, -0.035512984, 0.02987676, -0.027464647, 0.0052988855, -0.06132975, -0.0009172296, 0.039477445, 0.020252192, -0.00357936, 0.01690867, 0.03673098, 0.05975352, 0.027345235, 0.019034194, 0.022664305, -0.0011948614, 0.001309795, -0.008161777, -0.005501885, -0.042988144, -0.0040510353, 0.023309126, -0.005767576, -0.004916769, 0.050917067, 0.042080615, 0.02760794, 0.020729838, -0.0016016068, -0.021768717, -0.025458533, 0.026581, -0.04774072, 0.025769003, -0.024933122, -0.004349564, -0.020682072, -0.026198884, -0.044636022, -0.017529609, 0.030163346, -0.0072303666, 0.012574032, 0.0014889123, -0.048194483, -0.022783715, -0.013732323, -0.015583201, -0.0032748606, 0.0077020423, -0.01795949, -0.004245079, -0.018508783, -0.026939236, -0.018019196, 0.003683845, 0.0106515065, -0.025386887, 0.0074393367, 0.012018768, 0.018174432, -0.0065019564, 0.0041973144, -0.036969803, 0.02646159, 0.0029360305, 0.0059228106, -0.015248849, 0.039286386, 0.045830138, 0.019165548, -0.011982945, 0.049054246, -0.054403882, 0.03911921, -0.022341892, 0.03080817, 0.02284342, -0.044397198, -0.029661817, -0.05655329, -0.015750378, -0.012191915, -0.011570975, 0.01163068, 0.10412683, 0.06132975, -0.039286386, -0.043131437, 0.03405616, 0.03489204, -0.027178058, -0.0064721038, 0.0049973717, 0.064816564, 0.002786766, -0.006513898, -0.04535249, 0.06390904, 0.03847439, -0.025339121, 0.009475303, -0.008949893, -0.022652363, 0.0088245105, 0.016060848, -0.047358602, 0.02541077, 0.017087787, -0.0363011, -0.038641565, -0.035106983, 0.008651364, -0.0002255758, 7.7664125e-05, 0.024407713, -0.009170803, 0.008531952, 0.00326889, 0.004609284, 0.01484285, 0.03195452, 0.00018219584, -0.009535009, 0.0069676614, 0.007296043, -0.02521971, -0.03673098, -0.022592656, -0.014639851, -0.05177683, 0.00964845, -0.0024553991, -0.054547176, 0.017768431, 0.053830706, -0.010985859, 0.016586259, -0.038737092, -0.012777031, 0.03570404, 0.02956629, 0.041435793, 0.044874843, 0.018043078, 0.041865673, -0.047692955, 0.04781237, -0.02646159, -0.008567776, 0.0018464004, -0.013218854, 0.0049048276, -0.0072721606, -0.0010194757, -0.0074871015, -0.017159434, 0.0078931, 0.024789829, 0.019774545, 0.027894529, -0.044636022, 0.034987573, 0.025673473, 0.0616641, 0.008800628, 0.07623231, -0.03142911, -0.012526267, 0.0385938, 0.018711783, 0.04482708, -0.0026091414, -0.009564862, 0.017374374, -0.010848535, 0.03322028, 0.030378288, -0.038116153, -0.033578515, 0.01732661, -0.040743206, 0.010012655, -0.02873041, -0.046642136, 0.0138995, 0.024109183, -0.0055377088, -0.05196789, -0.010770918, -0.0217926, -0.01597726, 0.024813712, 0.08315817, -0.028300527, 0.0021001499, -0.04153132, -0.00612581, -0.008597628, 0.00975592, 0.033482987, -0.014950321, -0.020562662, -0.01961931, -0.030951463, 0.00513768, -0.010866447, -0.030640993, -0.014986144, -0.069258675, -0.0042002997, -0.004660034, 0.028276645, 0.025554063, -0.037829567, -0.04026556, 0.020431308, -0.023619596, -0.027273588, 0.013756205, -0.02751241, 0.02127913, -0.01006639, 0.026724296, -0.02863488, -0.030115582, 0.0025748105, 0.050009537, 0.0350831, -0.011971003, 0.0015613055, -0.043752376, -0.02978123, 0.04929307, 0.0010844057, 0.023822596, 0.08086547, 0.03632498, 0.02407336, 0.0034091985, -0.0129442075, -0.06538974, 0.04212838, 0.0074871015, -0.003925653, -0.011720239, -0.04005062, 0.01411444, -0.06357469, 0.036683213, -0.0076602483, 0.061568573, -0.013338265, 0.011666504, -0.009033481, 0.0014501035, -0.000114746996, 0.0054929294, -0.007039308, -0.00043958361, -0.005904899, 0.018580431, -0.006997514, 0.015272732, -0.0138995, -0.0240853, -0.032432165, 0.017983373, -0.029136408, -0.0016374303, -0.026413824, -0.0019493928, -0.02865876, -0.002385245, -0.018807312, 0.0085916575, -0.03673098, 0.008263276, 0.043680727, 0.015248849, 0.0012209826, 0.025816768, -0.021840364, -0.019667076, 0.00047167545, -0.024192771, -0.014986144, 0.030378288, 0.0034838307, 0.016371317, -0.029828994, 0.028348291, -0.006060134, 0.019153606, 0.051872358, -0.0052660475, -0.016060848, 0.018293843, -0.01100377, 1.7841758e-05, -0.006113869, -0.030784287, 0.00082468573, 0.0009433509, -0.013577089, -0.0068422793, -0.033196397, 0.039716266, -0.0134337945, -0.014854792, 0.01047836, -0.004880945, -0.012932266, 0.035775688, 0.016920611, 0.042176142, 0.0039913296, 0.034677103, -0.010024596, 0.018114725, -0.019165548, 0.031596284, 0.0015142872, 0.007045279, -0.038880385, -0.011582916, 0.012275503, 0.052158944, -0.00047204862, -0.02521971, -0.027631823, -0.05674435, 0.018508783, 0.0017747536, 0.02002531, 0.007851306, 0.048194483, -0.02770347, -0.0007664726, -0.003746536, -0.018544607, 0.00012930027, 0.0109978, -0.018281901, -0.043943435, -0.012717325, -0.0038719182, 0.011744122, 0.03443828, 0.017040022, -0.0036539922, -0.02543465, -0.0007634873, -0.035106983, -0.01671761, -0.02947076, 0.033650164, 0.00059481856, 0.024574889, -0.0007149764, 0.039453562, -0.00024759228, 0.017923668, -0.015511555, -0.0026718325, -0.026915353, -0.0063347802, -0.04286873, 0.021709012, 0.01607279, 0.011553063, -0.0024001712, 0.024742065, 0.013720382, 0.039190855, 0.015833966, -0.00694975, 0.0034091985, -0.031667933, -0.07140808, -0.006770632, -0.0031554492, -0.009218568, 0.0439912, 0.047000367, 0.021685129, -0.030879816, -0.017183315, -0.016431022, -0.0029031923, -0.027536293, -0.033602398, -0.023989772, -0.020598484, -0.0064721038, 0.022962833, 0.014281617, 0.024312183, -0.029518524, 0.012323268, -0.035895098, 0.026867589, -0.0010187294, 0.004812284, 0.022055306, -0.0389998, 0.014699557, -0.01597726, -0.009982802, -0.00063437363, -0.0031494785, 0.005540694, 0.00017818436, 0.0076244245, 0.0016672831, 0.034223337, -0.0038629621, 0.011362005, 0.0017463933, -0.030115582, 0.0022747891, -0.011672474, 0.02646159, 0.0038062418, -0.016478788, 0.0087827165, -0.004451064, 0.009242451, -0.029709583, 0.023130009, 0.022891186, 0.0017135551, -0.04267767, -0.0050809598, 0.049675185, 0.033912867, -0.05292318, 0.04556743, 0.0017628124, -0.043322496, -0.023022538, 0.01473538, -0.069401965, 0.01785202, 0.005042151, 0.027106412, 0.040743206, -0.013792029, -0.005624282, 0.006454192, 0.030664874, 0.009845478, -0.029351348, 0.002686759, 0.020538779, 0.043609083, 0.0011560527, -0.0062392512, -0.032527693, -0.013911441, -0.005218283, -0.018532665, -0.010711212, 0.05063048, 0.07436948, -0.01307556, -0.0067407796, 0.036492158, -0.069019854, -0.046021193, 0.051633537, -0.015213026, -0.0028479644, -0.005836237, 0.040504385, -0.018747607, -0.0026748178, -0.0034002427, 0.0044988287, 0.0028643836, 0.018425195, 0.031667933, 0.010914212, 0.011773975, -0.020873131, -0.00492871, 0.0051675327, 0.03840274, -0.020299956, 0.01952378, -0.0031673901, 0.0015448864, 0.023440478, -0.058511637, 0.015953377, 0.01588173, 0.016657906, -0.013947264, 0.00029591663, -0.005913855, -0.0026434723, -0.024240537, -0.00095006777, 0.041889556, -0.036778744, 0.00881854, -0.024646536, -0.014651792, 0.010442536, -0.02354795, 0.04568684, 0.014592086, -0.02055072, 0.036133923, -0.0701662, -0.005552635, 0.005645179, 0.008472246, -0.0073199254, 0.01774455, -0.015284672, 0.005770561, -0.030020053, 0.030903697, -0.033650164, -0.053591885, 0.052541062, -0.03942968, 0.019738723, 0.00934395, 0.015081673, -0.040719323, -0.015416025, -0.0024658476, 0.0224016, 0.006113869, -0.007522925, 0.03775792, 0.04231944, 0.033578515, -0.024789829, 0.007606513, 0.06892432, 0.003403228, -0.005645179, -0.010394772, -0.012454621], [-0.010642229, 0.025316821, -0.033266988, 0.070887096, 0.017355196, 0.018775687, 0.0031588748, 0.03844491, -0.022739315, 0.00080475415, -0.02689769, -0.00592826, -0.009416482, -0.033244077, -0.014640225, 0.06703802, -0.042889673, 0.06254744, -0.042752206, -0.024629487, -0.0034080336, -0.06135606, -0.07881436, -0.017767597, 0.013002077, -0.019646311, 0.00019886161, -0.006168827, 0.017320829, 0.00093362934, 0.029532472, 0.00393499, 0.069466606, 0.0026090073, 0.017801963, -0.036405817, 0.008706237, 0.0054041673, -0.043141697, -0.0016080763, -0.023335006, 0.039132245, -0.024148352, -0.035558105, 0.001913081, 0.022853872, -0.019142266, -0.013632135, -0.027149713, 0.00054628775, -0.006145916, -0.035397727, 0.0041641016, -0.008711965, -0.055536628, 0.005203695, 0.06098948, -0.07391137, 0.055124227, -0.046051413, -0.014067446, 0.02611871, 0.04465383, -0.029142983, 0.03166321, 0.0007224172, -0.037780486, 0.014250735, 0.03067803, 0.028982604, 0.0049917665, 0.063738815, 0.005249517, -0.034618746, 0.0029326272, -0.04263765, 0.072078474, 0.029326271, -0.03608506, 0.0018643948, 0.043279164, -0.044287253, 0.0149838915, 0.010751057, 0.02319754, -0.050954398, 0.0413088, -0.08646668, 0.021914516, 0.008122003, 0.037986685, 0.020253457, 0.044905853, -0.0078986185, -0.036566194, 0.008774971, 0.016347105, 0.007108184, -0.033564836, 0.020459658, -0.028020335, -0.028638937, -0.050587818, -0.030128162, 0.025454286, 0.036841128, 0.014869336, -0.03285459, -0.0023054346, 0.07968498, 0.036795307, 0.015339015, -0.07757715, 0.044310164, -0.025591753, 0.048892394, -0.06337224, -0.06827523, -0.027447557, 0.014537125, -0.063051485, -0.043897763, 0.06680891, 0.00016843274, -0.0029125798, 0.0661674, 0.0017212001, 0.032258898, -0.0018987615, 0.015682682, -0.037528463, -0.009021265, 0.031113341, -0.010602134, 0.08738313, 0.019211, 0.035351902, 0.008614592, -0.03450419, -0.007824157, -0.050083775, -0.0035913228, 0.0022324051, 0.032946233, -0.03665784, -0.023140261, 0.00511205, -0.026874779, -0.0154535705, -0.021639582, -0.0064151217, -0.03631417, -0.020849146, 0.006283383, 0.0080647245, 0.009004082, 0.023621395, 0.04465383, 0.020998068, 0.05915659, 0.030632207, -0.051320974, 0.01804253, 0.023644306, -0.015465026, -0.10933201, 0.041698292, 0.0014054559, -0.029257538, 0.014067446, 0.028753493, -0.04962555, 0.0017398155, -0.00786998, -0.04398941, 0.03125081, 0.011902343, 0.023781773, -0.019325554, -0.03622253, -0.0521916, 0.02083769, 0.034343813, -0.016289828, 0.015671227, 0.038307443, 0.008270925, 0.027401736, -0.016427295, -0.07478199, -0.009296199, -0.018901698, 0.018397653, -0.023380829, -0.0143767465, -0.032946233, -0.009553949, -0.05494094, -0.017103173, 0.008729148, -0.005441398, -0.049304795, 0.0055387705, -0.021502115, -0.05824014, 0.044608008, -0.014113268, -0.017320829, 0.022361282, -0.022441471, 0.02200616, -0.006197466, 0.0034882226, -0.014021624, -0.006850434, 0.014960981, -0.033266988, 0.003259111, 0.017561397, -0.04898404, 0.0589733, -0.03567266, 0.0256834, -0.009834611, 0.026027067, 0.026737312, 0.011627409, -0.0072055566, -0.0041440544, 0.0053239786, 0.0149380695, -0.020379467, -0.011455575, 0.030632207, -0.044333074, -0.026279088, -0.030540563, -0.0086260475, 0.060668726, -0.011902343, 0.002670581, 0.015533759, -0.04401232, -0.043302074, 0.033564836, 0.059889745, -0.02790578, 8.2650186e-05, 0.0154993925, -0.01423928, 0.019634856, 0.014857881, 0.06850434, -0.001616668, 0.008133458, 0.02726427, -0.024400374, -0.015854515, -0.08183863, 0.012005443, -0.042362716, 0.011129091, -0.029669939, 0.08729148, -0.030219806, -0.021639582, 0.051687554, -0.07033723, -0.057965208, -0.026210355, 0.033725213, -0.038696934, -0.005584593, 0.016289828, 0.06891674, -0.04004869, 0.011890886, 0.011226463, -0.004401805, 0.026989335, 0.008093364, 0.053841203, -0.0023383691, -0.017985253, 0.04206487, 0.052466534, -0.01863822, 0.0044103963, -0.060118858, 0.003743109, -0.005361209, -0.00419274, 0.02412544, 0.018993342, 0.017538486, -0.0062948386, -0.015075536, -0.0075835907, -0.029188804, -0.016988618, 0.025316821, -0.030380184, -0.040323623, -0.03812415, -0.01832892, 0.014605858, 0.012326199, 0.1212458, 0.014949525, 0.01763013, 0.065892465, -0.00306723, -0.038238708, -0.042752206, 0.019405743, -0.04486003, 0.018775687, 0.009072815, 0.041789938, -0.008041814, -0.003261975, -0.03070094, -0.07977662, 0.0024142624, 0.03548937, -0.007955897, -0.03943009, -0.0014448344, -0.015797237, -0.021662492, -0.049488083, -0.02410253, 0.016083628, -0.015545215, -0.04898404, -0.09279016, 0.017504118, -0.04364574, 0.007658052, 0.023312096, -0.0030042245, 0.012211643, -0.013265556, -0.030609297, -0.012406387, -0.021444837, 0.0021049618, 0.006357844, 0.043737385, 0.022258181, 0.0013496099, 0.061081126, 0.0468533, 0.030769674, -0.024789864, 0.031388275, -0.017332286, -0.037917953, 0.026645668, 0.006546861, 0.029440828, -0.027951602, 0.031571563, 0.048479993, -0.019485934, -0.073773906, -0.03312952, -0.023965063, -0.04465383, 0.0012909, -0.048892394, 0.047701012, -0.020161811, -0.02205198, -0.008849432, -0.04586812, 0.019142266, -0.008963987, -0.016644951, 0.0018371878, -0.021467747, -0.0021923108, 0.031800676, 0.048342526, -0.018798599, 8.260543e-05, -0.04385194, -0.0060027214, 0.059843924, -0.00269206, -0.01214291, 0.016851151, -0.020413835, 0.0024357417, 0.039979957, 0.051137686, -0.037161887, -0.01384979, 0.008843704, 0.053428803, 0.0018787143, -0.03748264, -0.031617388, -0.026256178, 0.04586812, -0.012440754, -0.023873419, -0.02063149, 0.012979167, 0.07743969, -0.0023627123, 0.035031147, -0.023392284, -0.0022739316, 0.0085802255, 0.025293909, -0.046967857, 0.0704747, -0.011650319, 0.0032161525, 0.033793945, -0.09224029, -0.044149786, 0.047975946, -0.009433666, 0.058011033, -0.047746837, 0.012807333, -0.011593042, -0.05920241, -0.04449345, 0.005066228, 0.023827596, 0.009261833, -0.030952964, -0.06236415, -0.08270925, -0.044218518, 0.015235915, 0.03631417, 0.048067592, 0.002773681, 0.0043788934, -0.018981887, -0.025797954, 0.005255245, -0.06754207, -0.016816784, 0.04025489, -0.0026061432, -0.023461018, -0.037207708, -0.057094585, -0.0024457653, 0.07455288, -0.01604926, 0.011730509, 0.004235699, 0.028753493, -0.06969572, 0.008402664, 0.0120398095, 0.0641054, -0.020230545, 0.05741534, 0.016278371, -0.03727644, 0.04364574, 0.005046181, 0.0030385912, 0.007932985, 0.01744684, -0.021284457, 0.015911793, -0.02453784, -0.038353264, -0.017985253, -0.031823587, 0.021948881, -0.025820866, -0.0065010386, -0.020150356, 0.004519224, 0.0143767465, 0.016874062, 0.011993987, 0.010395934, 0.035443548, 0.017366651, 0.005533043, 0.04405814, 0.009536766, 0.04080476, -0.0051607364, 0.008104819, -0.01423928, -0.056498896, -0.038330354, 0.04577648, 0.0036801035, 0.023346461, 0.035191525, 0.025408465, 0.027058069, -0.0010252739, -0.044333074, -0.021639582, -0.022682039, 0.0033278444, -0.07950169, 0.013632135, -0.026187444, -0.005533043, 0.026943512, -0.023667218, -0.017091718, -0.021502115, 0.0062375604, 0.016473116, 0.010138184, 0.0010059427, -0.036176704, -0.029142983, -0.003505406, 0.00043960768, -0.005249517, 0.018340375, -0.017183362, -0.014743325, -0.04403523, -0.025179354, 0.0031817858, -0.0005566693, 0.0063750274, 0.025958333, -0.00015026492, 0.024652397, 0.024973154, -0.018065441, 0.0073544793, -0.012784421, 0.059935566, 0.017847786, 0.011913798, -0.0009450849, 0.019783778, 0.060256325, 0.026760222, 0.013425934, 0.024217086, -0.0388344, -0.0035397727, 0.014605858, 0.058881655, 0.029807406, 0.010155367, -0.008792154, -0.019577578, 0.0074232128, -0.02451493, 0.02110117, -0.030632207, 0.04025489, 0.05315387, -0.033381544, -0.026347822, 0.035122793, -0.0016367153, -0.012223098, -0.0015006803, -0.003425217, 0.08032649, 0.0056962846, -0.006947806, -0.008471398, 0.08371734, 0.004447627, -0.04765519, 0.012750055, -0.040781848, -0.03425217, -0.03631417, 0.0027593616, 0.004338799, 0.008815065, -0.0107052345, -0.002182287, -0.023942152, -0.0075034015, 0.0031646027, -0.0068046115, 0.031915233, 0.0031073247, 0.032785855, 0.0016782418, 0.02291115, -0.005140689, 0.0077210576, 0.03342737, -0.009662777, -0.008746332, -0.004476266, 0.0053698006, -0.029395005, -0.025637576, -0.00025828741, 0.027333003, -0.03047183, 0.0041841487, 0.010086633, -0.042500183, -0.0017025848, 0.020894969, 0.0033564835, 0.036130883, 0.0120856315, -0.0020992341, 0.042866763, -0.0005341162, 0.038926043, 0.057048764, -0.015201548, 0.028157802, -0.034366723, -0.037963774, -0.013655045, -0.018409109, 0.0032533833, -0.021399014, 0.004227107, -0.017985253, -0.036039237, -0.019222455, -0.0023254817, 0.025270998, 0.035603926, 0.02179996, 0.05604067, -0.01721773, 0.0080189025, 0.043874852, 0.03888022, 0.033335723, 0.009691416, -0.024927331, -0.031846497, 0.051550087, 0.032396365, 0.0065010386, 0.008900981, 0.014101813, 0.045318253, -0.004794158, 0.027126802, 0.02829527, -0.0028782133, -0.0454099, 0.01804253, -0.03748264, -0.009193099, -0.061126947, -0.060852014, 0.0041669654, 0.0049974946, -0.019016255, -0.026370734, -0.013803967, -0.03173194, 0.00052731443, 0.011375386, 0.07592755, -0.022956973, 0.007944441, -0.029876139, -0.003743109, -0.024056707, -0.007251379, 0.032923322, -0.028089069, -0.02728718, -0.025225176, -0.03306079, -0.026691489, -0.015888883, -0.016186727, 0.0001322761, -0.013563401, -0.018477842, -0.026347822, 0.03351901, 0.014399658, -0.015339015, -0.013884157, 0.07033723, -0.008878071, -0.0007517721, 0.018867332, 0.021731226, 0.007108184, 0.016415838, -0.0028180715, -0.03523735, -0.009181643, 0.001454858, 0.008270925, 0.0201389, 0.008076181, -0.027333003, -0.07739387, 0.0041612377, 0.029647028, 0.007337296, 0.035764303, 0.06937496, 0.053428803, -0.02412544, -0.0047998857, -0.006947806, -0.06671727, 0.0010009309, -0.020746047, -0.028089069, -0.0069019836, -0.02747047, 0.053749558, -0.056132317, 0.022086348, -0.028753493, 0.045661923, -0.0012801605, -0.01672514, -0.020723134, 0.017103173, 0.0066957837, -0.0071826456, 0.023667218, -0.025316821, -0.017572852, 0.007686691, -0.0057077403, 8.2113205e-05, -0.017412474, -0.017790508, -0.029784495, 0.024171263, 7.83096e-05, 0.054482713, -0.03388559, -0.019291189, -0.0077153295, -0.004043818, -0.00077110337, 0.020929335, 0.003505406, -0.00880361, 0.03846782, 0.036795307, 0.001913081, -0.0027164032, 0.002289683, 0.005344026, -0.010676595, -0.009639867, -0.0138154235, 0.03168612, 0.029532472, 0.015671227, -0.03629126, 0.0049488083, 0.017045895, 0.04866328, 0.026599845, -0.009485216, 0.006707239, 0.012612588, -0.010991625, -0.028226536, -0.016324194, -0.023461018, -0.021410469, 0.04449345, -0.020058712, 0.0094909435, -0.05915659, 0.052924756, 0.0019359922, 0.009485216, -0.027241357, -0.0007789791, -0.022223815, 0.02410253, -0.0075893183, 0.030036516, -0.033358634, 0.040346533, -0.0036801035, 0.020390924, -0.009771605, 0.014456935, -0.023598485, -0.00072098523, -0.016347105, -0.006249016, -0.019142266, 0.017595762, -0.04128589, -0.023002794, -0.015396292, -0.025568843, 0.0065583168, 0.039590467, 0.019382833, 0.033564836, 0.034000147, -0.011890886, 0.03450419, -0.006357844, -0.0026161668, 0.02231546, 0.009342021, 0.00480275, -0.05315387, 0.0408964, 0.016644951, 0.05956899, 0.045639012, 0.029349184, -0.03049474, -0.014903703, -0.04043818, -0.008563043, -0.035512283, -0.01905062, 0.027859958, 0.019084988, 0.010905707, -0.028272359, 0.031869408, 0.014995348, -0.005260973, 0.002132169, 0.0047254246, -0.030334363, -0.024652397, -0.04486003, 0.0014777691, -0.008351114, 0.019348467, 0.010516218, 0.044539277, 0.044264343, 0.035947595, -0.00069163035, 0.01444548, -0.02102098, -0.0056246873, -0.061447702, 0.0030357274, -0.01374669, -0.00063292054, 0.029005516, 0.044310164, 0.037849218, -0.04128589, 0.0058308877, -0.029944872, 0.045753565, -0.06355553, -0.013196822, -0.041079693, -0.041537914, -0.03530608, 0.03926971, 0.024171263, -0.010115272, -0.036886953, 0.012772966, -0.061218593, 0.017927974, 0.005014678, 0.007560679, 0.034137614, -0.040736023, -0.04403523, -0.026416555, -0.016301284, -0.005361209, -0.0320527, -0.02769958, -0.00058495026, 0.017779052, -0.0050232694, 0.014697502, 0.024010886, 0.03532899, -0.009342021, -0.019841056, 0.009204554, -0.022109259, 0.009920528, 0.015086992, -0.014869336, -0.018672587, -0.024400374, 0.008219375, 0.019944156, -0.0035397727, 0.039796665, 0.004224243, 0.005175056, -0.011633136, 0.023575572, 0.035810128, -0.058927476, 0.029555384, 0.003849073, -0.04538699, -0.025270998, 0.0051664645, -0.017022984, 0.020757502, 0.012314743, 0.009725783, 0.04181285, 0.009273288, 0.002992769, 0.007457579, 0.021834325, 0.009101454, -0.037757576, 0.009771605, 0.020975158, 0.031983964, 0.0045106327, -0.002481564, -0.03768884, -0.013529034, 0.030196896, -0.0063177496, 0.0017641585, 0.039636288, 0.08582517, 0.0093992995, 0.0023641442, -0.016060716, -0.03049474, -0.024560753, 0.04302714, 0.021227181, -0.00030804757, -0.014880791, 0.0339085, -0.017973797, -0.04224816, -0.01586597, 0.021295914, 0.021971792, 0.053520445, 0.01721773, 0.03468748, 0.012223098, -0.013311378, 0.010184006, 0.008540131, 0.035993416, -0.012876066, 0.038811486, -0.028616026, -0.034137614, 0.02451493, -0.06199757, 0.0064724, 0.02091788, 0.040346533, -0.010155367, 0.025752133, 0.0029311953, -0.011650319, -0.027447557, 0.028753493, 0.042156514, -0.04944226, -0.003310661, 0.028455649, -0.022922605, 0.0044046687, -0.0043244795, 0.046051413, 0.009519583, -0.022338372, 0.026783135, -0.020723134, 0.006798884, 0.04359992, -0.014399658, 0.028089069, 0.0021679676, 0.021158447, -0.023850506, -0.0061401883, -0.017618675, -0.052649822, -0.00035082697, 0.035764303, -0.056086496, 0.01216582, 0.0045134965, 0.010086633, -0.06254744, -0.025431376, 0.026599845, 0.009433666, 0.014170546, -0.029005516, -0.010991625, 0.052878935, 0.039338443, -0.008276653, 0.019898333, 0.120421, -0.018993342, 0.0038834398, -0.026989335, -0.021765592], [-0.01281962, 0.02244338, -0.024288537, 0.067293964, 0.0134829115, 0.030029025, 0.009846867, 0.069995366, -0.011336259, 0.022913715, -0.020706762, 0.0057977727, 0.0051917653, -0.030776735, 0.01199955, 0.034804728, -0.0320792, 0.049276546, -0.062277064, -0.023757903, 0.0029908428, -0.01442358, -0.051712636, -0.003039082, 0.035817754, -0.008749421, 0.001885859, 0.012747261, -0.007784633, -0.003280279, 0.018801305, 0.027882373, 0.008743391, 0.0042269775, 0.01360351, -0.031090293, 0.025904557, 0.023082552, -0.062180586, -0.00721782, -0.043174263, -0.014218562, -0.029474273, -0.053497493, -0.00020709023, -0.016268738, -0.015786342, -0.048432358, -0.028702442, -0.03429821, -0.0027315558, -0.013820588, -0.012319136, -0.028027091, -0.0043144114, 0.00025005345, 0.064737275, -0.05378693, 0.02489153, 0.0024134775, -0.007603735, 0.039749265, 0.045320913, 0.0068620546, -0.022901654, 0.00180747, -0.008996648, 0.012433705, 0.0208756, 0.042908944, -0.0006889189, 0.009834807, -0.007941411, -0.032223918, -0.021816269, -0.034949444, 0.057211928, 0.03212744, -0.017872697, -0.028364766, -0.0017908877, -0.040304016, 0.022310723, 0.024674453, 0.0015067274, -0.0559577, 0.02797885, -0.124940045, -0.0051917653, 0.024457375, 0.027134662, 0.017124986, 0.027592937, -0.013748229, -0.041317046, -0.009358443, 0.042016517, -0.022961954, -0.040400498, 0.00064520194, -0.023420228, -0.04165472, -0.061505232, -0.06854819, 0.018113894, 0.030294342, 0.016714951, -0.035624795, 0.0067896955, 0.017764159, 0.016558174, -0.014930094, -0.013977366, 0.059816856, -0.0123734055, 0.06401368, -0.046985175, -0.066473894, -0.043897852, 0.0047726855, -0.045224436, -0.019633435, 0.042040635, 0.04717813, 0.0123734055, 0.063241854, -0.02085148, 0.026845226, -0.004329486, 0.0015738104, -0.023432288, 0.017510902, 0.006675127, 0.016377276, 0.05677777, 0.031476207, 0.022853415, -0.016702892, -0.012614603, -0.015303949, -0.07057424, 0.010051885, -0.0192234, 0.045248557, -0.023697605, 0.009997616, 0.02169567, -0.061842907, -0.053545732, 0.0019717854, 0.00100549, -0.039942224, -0.013217595, 0.0050952863, 0.030969694, 0.0024948814, 0.027737655, 0.022527799, -0.012711082, 0.023142852, 0.027954731, -0.057163686, 0.010600608, 0.054607, -0.019464597, -0.10747738, 0.050651368, -0.012385465, -0.049976017, 0.022986073, 0.009702149, -0.067101, 0.021309754, -0.0032501295, -0.053690452, 0.01687173, 0.047757003, 0.026266353, -0.046237465, -0.05296686, -0.05291862, 0.04165472, 0.0120297, -0.046840455, -0.009919226, 0.020176128, 0.038856834, 0.0017456632, -0.007048982, -0.09059359, -0.0039737206, -0.012481945, 0.0033858027, -0.054703478, -0.040376376, -0.028702442, -0.012771381, -0.044283766, 0.010299112, 0.02013995, -0.012590483, -0.047757003, 0.009340353, -0.009919226, -0.044717923, 0.024143819, 0.015038633, -0.029112477, -0.014122084, -0.033839937, -0.0027164812, 0.026845226, 0.004323456, -0.0015263248, 0.027158782, 0.04165472, -0.06266298, -0.013048757, 0.001763753, -0.033092227, 0.07954677, -0.059961572, 0.021888627, 0.0076700645, -0.0012399033, 0.029956667, 0.031114412, 0.015171291, 0.004000855, 0.022853415, -0.011137271, -0.040521096, -0.031741526, 0.05542707, -0.083743595, -0.036493104, -0.025229206, -0.010884014, 0.07583234, -0.019114861, 0.0085866125, 0.020417325, -0.03362286, -0.0099252565, 0.03456353, 0.06970593, -0.00065160875, 0.030680258, -0.006117359, -0.0121623585, -0.0037867927, 0.025398044, 0.04088289, 0.018101834, -0.016690832, 0.06000981, -0.010021735, -0.008254967, -0.040665813, 0.007706244, -0.06589502, 0.022190124, -0.011649814, 0.06922354, 0.0020139948, -0.04233007, 0.049204186, -0.05296686, -0.05764608, -0.032392755, 0.012747261, -0.02334787, 0.028557723, 0.030246103, 0.041124087, -0.01758326, 0.04088289, -0.0025612107, -0.03210332, 0.03854328, 0.02010377, 0.04240243, -0.0012798515, 0.0059937453, 0.03630015, 0.04889063, -0.038133245, -0.023854382, -0.053545732, -0.0035968502, -0.016341096, -0.037337296, 0.055764746, 0.004712386, 0.04570683, 0.012282957, -0.026941704, 0.014930094, -0.026821105, -0.0020245472, 0.017872697, 0.00082685344, -0.057501364, -0.042667747, -0.03150033, 0.020972079, 0.017124986, 0.11220484, 0.014785375, -0.020779122, 0.056633055, 0.00086755544, -0.03210332, 0.002020025, 0.02085148, -0.014327101, 0.028630083, 0.03137973, 0.05465524, -0.019766094, 0.024674453, -0.003277264, -0.09946964, 0.01125184, 0.038133245, -0.010763416, -0.02157507, -0.03511828, -0.044380248, 0.018849544, -0.08244113, -0.044983238, -0.026676387, -0.01767974, -0.04252303, -0.08099395, -0.03548008, -0.050072495, 0.03429821, -0.0078992015, -0.038205605, -0.014942153, -0.018246552, -0.07949853, -0.063772485, 0.016413456, 0.004079244, 0.016184319, 0.04247479, -0.0043656654, 0.0015353697, 0.033984657, 0.037626732, 0.036565464, -0.026845226, 0.05229151, -0.06816227, -0.034057014, -0.008490134, 0.012988458, 0.045176197, -0.03287515, 0.028798921, 0.05147144, 0.0034370571, -0.06825875, -0.064303115, -0.02493977, -0.018873665, 0.036951378, -0.050699607, 0.022684578, -0.050796088, 0.022624278, 0.0027466307, -0.049831297, 0.027134662, -0.025156846, -0.034225855, 0.016606413, -0.011643785, -0.039676905, -0.010865925, 0.042064756, -0.009491102, 0.04151, -0.037361413, -0.0054088426, 0.012976398, -0.0044711893, 0.0055264262, 0.008984588, -0.039942224, 0.010226753, 0.07641121, 0.035769515, -0.03217568, 0.036468986, 0.032971628, 0.010769445, 0.0013507032, -0.014592418, 0.011330228, 0.012964338, 0.03926687, -0.01921134, -0.020767061, 0.007929351, 0.00320189, 0.039918102, -0.0045827427, -0.005387738, -0.034081135, -0.0013635168, 0.0078027225, 0.019802272, -0.002484329, 0.050458413, -0.026338711, -0.012385465, 0.0073987176, -0.054124605, -0.034635887, 0.01836715, -0.028147688, 0.07067072, -0.040304016, 0.012469885, -0.021128856, -0.07115311, -0.015074812, -0.035190642, -0.029498393, 0.0072600297, 0.005773653, -0.030318461, -0.01770386, -0.046213344, 0.011462887, 0.047105774, 0.001144932, -0.0021315785, 0.019163102, -0.006271122, -0.033357546, 0.027834132, -0.05682601, -0.010238812, 0.021466533, -0.008713242, -0.053497493, -0.03791617, -0.051760875, -0.014001486, 0.021370053, -0.006117359, 0.007784633, 0.014809496, -0.01761944, -0.07679712, 0.03449117, 0.023842324, 0.07621825, -0.026917584, 0.029426033, -0.0054209023, -0.058803827, 0.06357953, -0.006277152, -0.019416358, 0.0321998, 0.012198538, -0.012699022, 0.022720756, -0.018982204, -0.019114861, -0.030632017, -0.016944088, 0.033164587, -0.040496975, 0.008743391, -0.033357546, 0.025470402, 0.061167557, 0.0050862418, 0.019886693, -0.002888334, 0.035817754, 0.051133763, 0.01600342, 0.011426708, 0.024300598, 0.0037415684, 0.0078992015, 0.010486039, -0.03453941, -0.018379211, -0.049373023, 0.042812467, -0.007278119, 0.009062977, 0.049638342, 0.016654652, 0.045248557, 0.000430009, 0.00044847565, -0.027785894, -0.018174194, 0.012210598, -0.046237465, -0.0026486444, -0.028340647, -0.014532119, 0.00965391, -0.0060630892, -0.02086354, -0.014097964, -0.0130246375, 0.003982765, 0.021743909, -0.0067113065, -0.037867926, -0.035745393, -0.021345934, -0.03150033, 0.013494972, -0.0050862418, 0.0066992464, -0.029208956, -0.032537475, -0.029739588, 0.00013501379, -0.0023064462, 0.0072720894, 0.038808595, -0.017112928, 0.022322781, 0.02163537, -0.029040119, 0.016678773, -0.036613703, 0.041944157, -0.007079132, 0.010082034, -0.021008259, 0.028195929, 0.056054182, 0.017269704, -0.026724627, 0.03393642, -0.04867355, 0.03200684, 0.017330004, 0.02477093, 0.022841355, -0.0018210373, -0.029088357, -0.058080237, -0.014797435, 0.015400428, 0.0046159076, -0.021454472, 0.07573585, 0.055571787, -0.018053595, -0.04327074, 0.047781125, -0.0115111265, -0.004808865, 0.01687173, 0.0032260097, 0.038133245, -0.014978333, -0.011589516, 0.013820588, 0.07245558, 0.01764356, -0.03938747, 0.011161391, -0.010962403, -0.031741526, 0.01365175, 0.031572685, -0.019319879, -0.002847632, -0.018716887, -0.0161602, -0.03909803, -0.03504592, 0.0074469573, -0.015665745, 0.027906492, -0.020489685, 0.0062409723, 0.0019582182, 0.019151041, 0.011197571, 0.025422163, 0.017547082, -0.00051744294, -0.007615795, 0.008345416, -0.032344516, 0.0037295085, -0.014097964, 0.009479042, 0.013917066, -0.044524964, -0.0034973563, 0.029932547, -0.014905974, 0.017812397, 0.020393206, -0.0073444485, 0.02489153, -0.014218562, -0.00882178, 0.05928622, 0.024457375, 0.03861564, 0.060781643, 0.010039825, 0.073951, -0.040424615, -0.010220722, -0.0017290809, -0.015593385, 0.012089999, -0.016148139, -0.0134829115, -0.024397075, -0.014809496, 0.0030436045, -0.048842393, 0.0032501295, 0.03224804, 0.014869794, 0.03851916, -0.011378468, 0.02568748, 0.026314592, 0.049324784, 0.01852393, 0.052580945, -0.029377794, -0.029618992, 0.052484464, -0.006253032, 0.007048982, -0.0053847227, 0.027520576, 0.03610719, 0.024312656, 0.02976371, 0.014857735, -0.038133245, -0.012457824, 0.010076004, -0.034780607, 0.0044229496, -0.054076366, -0.058031995, 0.0064640795, 0.0224675, -0.015038633, -0.012385465, -0.014604478, -0.012198538, -0.02486741, 0.0335505, 0.06521967, -0.029836068, -0.016702892, -0.013675869, -0.021032378, -0.01774004, -0.028340647, 0.017800339, 0.0075012264, -0.027399978, -0.024372956, -0.037554372, -0.028364766, 0.010974463, -0.02725526, -0.0067716055, -0.05296686, 0.01679937, -0.027158782, -0.00017298346, 0.016714951, -0.0068379347, 0.0015858703, 0.044307888, -0.012988458, -0.01923546, 0.0064580496, -0.01913898, 0.022274543, 0.0041847676, -0.021297695, -0.0059485207, -0.03678254, -0.0053425133, 0.0016672742, 0.026025156, -0.009708179, -0.005134481, -0.074964024, -0.030559659, 0.031958602, 0.003919451, 0.028461246, 0.07462635, 0.028485365, 0.018560108, -0.024650333, -0.019500777, -0.062035866, 0.014954214, -0.006663067, -0.018234493, 0.007688154, -0.029884307, 0.036517225, -0.047829363, 0.041534122, 0.001839127, 0.046985175, -0.012252808, 0.025012128, -0.013591451, -0.00801377, -0.0023516708, -0.014893915, 0.015424548, -0.009846867, 0.008170548, 0.010678997, 0.016690832, 0.0028672293, -0.030318461, -0.0063856905, -0.009883047, 0.025132727, -0.014013546, 0.039701026, -0.043101903, 0.0024602094, 0.0033888177, 0.012566363, 0.018753067, 0.018089775, -0.026748747, -0.014266802, 0.065123186, 0.025325684, -0.0042420523, 0.021357995, -0.01849981, -0.020308787, 0.019573135, 0.010552368, -0.011589516, 0.03779557, 0.027520576, -0.014616538, -0.032778673, 0.026821105, 0.029160716, -0.016172258, 0.028340647, 0.009123276, -0.042691868, -0.004401845, 0.01760738, -0.017064687, -0.007923321, 0.0030722467, -0.027110541, 0.011318169, -0.043849614, 0.005879177, -0.04078641, 0.050168976, -0.0017999326, -0.0036631792, -0.0029817978, 0.013145236, -0.0032742491, 0.016980268, 0.02809945, 0.04570683, -0.042981304, 0.04643042, 0.019356059, 0.010992553, -0.0050048376, 0.047274612, -0.0052430197, 0.028123569, -0.0054209023, -0.010100124, -0.002853662, -0.0016054675, 0.0152798295, -0.026411071, -0.03842268, -0.041920036, -0.0035033864, 0.019356059, -0.014483879, 0.01770386, -0.0092921145, -0.000470711, 0.022238363, 0.010244843, -0.035817754, -0.02243132, 0.019428417, -0.00030846836, -0.034997683, 0.02797885, -0.011547306, 0.039845742, 0.04488676, 0.026169874, -0.017896816, -0.013965306, -0.055041153, -0.015074812, -0.008996648, -0.036613703, 0.011848803, 0.019741975, 0.023794083, -0.060299248, 0.032440994, 0.01443564, 0.0004073968, -0.014688897, 0.016401395, -0.02978783, -0.01843951, -0.030294342, 0.030800857, -0.006602768, 0.0023200135, 0.015074812, 0.03765085, 0.038060885, 0.0067957253, 0.009768479, 0.027713535, -0.030728497, 0.005110361, -0.042836584, 0.027110541, -0.0075193164, -0.009056947, 0.046864577, 0.015629565, -0.000114851224, -0.025470402, -0.010100124, -0.017293824, -0.0025928677, -0.052822143, -0.055716507, -0.040593453, -0.041920036, 0.0068379347, 0.025156846, 0.030487299, 0.028147688, 0.0031807853, -0.014339161, -0.03784381, -0.01526777, 0.006584678, 0.0012858815, 0.025060367, -0.07216614, -0.015713984, -0.003452132, -0.013446732, -0.018222433, -0.03630015, -0.014025605, 0.01442358, 0.0030722467, -0.021514772, 0.013832647, 0.012210598, 0.035865992, 0.017752098, -0.03461177, -0.019585196, -0.041871797, -0.007881111, 0.0013182923, -0.02957075, 0.025952796, -0.0070911916, 0.024421196, 0.012469885, 0.008755451, 0.053883407, 0.0039556306, -0.0132899545, -0.00879163, 0.030632017, 0.04500736, -0.034587648, 0.050651368, -0.024385016, -0.034708247, 0.014688897, -0.023456408, -0.031669166, 0.009521252, -0.0040099, -0.0074469573, 0.06285594, 0.01679937, -0.011499067, -0.0021858478, 0.01696821, 0.027134662, -0.0027858252, 0.034804728, 0.025084488, 0.010142334, 0.004724446, 0.0046882667, -0.03511828, -0.024300598, -0.008134369, -0.014483879, -0.013000518, 0.06980241, 0.03851916, -0.030342583, -0.0039797504, 0.008767511, -0.022756936, -0.017354123, 0.04182356, -0.007290179, -0.009352413, 0.008677062, 0.04643042, -0.018174194, -0.017088806, -0.045899786, 0.005800788, -0.0121261785, 0.04905947, 0.019886693, 0.015726045, -0.0025506583, -0.011487007, -0.0058912365, 0.012952278, 0.025808077, -0.017378243, 0.0514232, -0.020742942, -0.0074107777, 0.02894364, -0.050940804, 0.00092710095, 0.03359874, 0.026145754, 0.021707729, 0.011360378, -0.00882178, -0.023396108, -0.029739588, -0.00602088, 0.029064238, -0.05856263, 0.02092384, -0.005366633, -0.021864507, 0.0025506583, -0.019030442, 0.056440096, 0.021345934, 0.001386129, 0.036565464, -0.020284668, 0.014556238, 0.020755, -0.0034762516, 0.02010377, 0.0041847676, -0.029329555, -0.024276478, -0.012976398, -0.005761593, -0.04331898, -0.02959487, 0.022093644, -0.052339748, 0.023166971, 0.00888811, -0.0032199798, -0.04271599, -0.022105705, -0.0020908765, -0.0014117562, -0.02179215, -0.001319046, -0.020562043, 0.021816269, 0.051953834, 0.01845157, 0.0024948814, 0.16227734, -0.004555608, 0.0020667568, 0.023661425, -0.025036247], [0.003953579, -0.0058417087, -0.03530638, 0.08138331, 0.02679502, 0.025691697, -0.062889494, 0.04799461, 0.012675095, 0.046418432, 0.023865957, -0.0054640826, 0.011276238, -0.043161, -0.010836222, 0.02900167, -0.05437813, 0.023905363, 0.0055264733, -0.033546317, 5.5207267e-05, -0.06667232, -0.050542764, -0.015971934, 0.025888719, -0.011230267, -0.019255638, 0.011138323, -0.013226758, 0.040980622, 0.026309034, 0.01023202, 0.02330116, -0.017876482, -0.00853763, -0.0025645725, 0.009837976, 0.060052373, -0.021462286, -0.022788903, -0.044132978, -0.022749498, -0.0074802767, -0.033756472, -0.020858085, 0.027346684, -0.0009104068, -0.008491658, -0.015682967, -0.007585355, -0.020739872, -0.010034998, -0.009719763, -0.020148804, -0.03685629, -0.03822231, 0.033651393, -0.021186456, 0.04581423, -0.009562145, -0.06430805, 0.04392282, 0.042583067, 0.011775361, -0.029999916, 0.0009785437, 0.0043935953, 0.058896508, 0.031996407, 0.057635564, 0.008583602, 0.02755684, -0.0058121555, 0.01631344, 0.006981154, -0.067985795, 0.101453304, 0.029527063, 0.008931674, -0.012983764, 0.021882601, 0.002956975, 0.027924616, 0.0031638483, -0.0063638175, -0.036541052, 0.017600652, -0.14469312, -0.006005894, 0.0048598815, 0.005835141, -0.004948541, 0.033992898, -0.0022673972, -0.03233791, -0.0010163062, 0.005969773, -0.0018520089, -0.013463184, -0.01697018, -0.010711441, -0.029421983, -0.069404356, -0.054798447, 0.024943013, 0.057635564, 0.030630387, 0.0024512848, -0.007434305, 0.039194286, 0.0025957676, -0.0015819242, -0.0066856206, 0.034308136, -0.017955292, 0.026978908, -0.023143543, -0.05101562, -0.024995552, -0.01235986, -0.10471074, -0.058423653, 0.060525224, -0.0018011114, 0.0083603095, 0.03317854, 0.0017896184, 0.051908787, -0.008268366, -0.016536731, -0.05453575, -0.0031950437, 0.025323922, 0.028581357, 0.049991105, 0.011079215, 0.048414927, -0.0070074233, -0.04602439, 0.008872567, -0.08490344, 0.007972832, 0.03183879, 0.018165449, -0.028817782, -0.007099367, -0.0030177236, -0.03525384, -0.040481497, -0.0053885574, -0.008603304, -0.025875583, -0.007703569, -0.0027106972, 0.048309848, -0.00851136, 0.011315643, 0.011072649, 0.007211013, 0.05516622, 0.02758311, -0.078703806, -0.006869508, 0.03764438, -0.005460799, -0.02332743, 0.040034913, -0.026256494, -0.05947444, 0.01876965, 0.035805505, -0.017443033, 0.017745133, -0.008347174, -0.0051685493, 0.0057760347, 0.02236859, 0.026361572, -0.01830993, -0.017600652, -0.029605871, 0.05721525, 0.049702138, -0.070980534, 0.023432508, 0.04234664, 0.021120781, 0.025836179, 0.032075215, -0.082171395, -0.0198073, 0.017154068, -0.021659309, -0.028581357, -0.011919844, -0.0037532733, -0.03407171, -0.020963164, -0.02370834, 0.0310507, 0.030367691, -0.05873889, 0.057740644, 0.0071716085, -0.025271382, 0.021633038, 0.023288026, 0.016904507, 0.012911523, 0.03186506, -0.0017699163, 0.0011328778, 0.009575279, -0.02439135, -0.004239261, 0.032127757, -0.026558595, -0.004088211, 0.0075065466, -0.062469177, 0.05936936, -0.022933386, -0.0063342643, -0.015669834, -0.01661554, 0.02005686, 0.02081868, 0.013233325, 0.0030817557, 0.03885278, -0.004508525, -0.03680375, -0.033467505, 0.030682927, -0.034780987, 0.0015014735, -0.028450008, -0.01937385, 0.037381683, -0.019242503, -0.005237507, -0.0077823773, -0.04250426, 0.021436017, 0.009818274, 0.04232037, 0.02155423, 0.00582529, -0.014238139, 0.025205709, 0.009036752, 0.0037204362, 0.027451761, 0.028161041, 0.0038813376, 0.08322218, 0.030551579, -0.013949173, -0.02056912, 0.03246926, -0.02831866, 0.059789676, -0.022289779, 0.040034913, -0.015407138, 0.0004408372, 0.034938607, -0.06141839, -0.058843967, -0.012556883, 0.05390528, -0.0517249, 0.038563814, 0.044474483, 0.02971095, 0.008806893, 0.059842214, 0.053458694, -0.041295856, 0.057005093, -0.02687383, 0.009122129, -0.0011804914, 0.0103370985, 0.035464, 0.011486395, 0.010704874, -0.009936487, -0.022289779, 0.020542849, -0.02515317, -0.02256561, 0.056111928, -0.0008586885, 0.044999875, 0.0127604725, 0.014645318, 0.032942113, -0.032968383, -0.008176422, -0.034281865, -0.0038189474, -0.028765243, -0.02479853, 0.006038731, 0.059947293, 0.0024200894, 0.08584914, -0.0018208136, -0.018152313, 0.042110216, -0.016563, -0.0348598, -0.027872076, 0.025823046, -0.004948541, 0.01023202, -0.008288068, 0.04035015, -0.022854578, -0.0036547622, -0.033572584, -0.11106799, 0.012228512, 0.041873787, 0.027766997, 0.024535833, -0.022434263, -0.012281051, 0.0064196405, -0.05947444, 0.0045512132, -0.014921149, -0.008242096, -0.049702138, -0.08647962, -0.017403629, -0.07434305, 0.01841501, -0.04171617, 0.030183803, 0.007552518, -0.038590085, -0.024627777, -0.009522741, 0.003887905, -0.02340624, 0.0046694265, 0.022683823, 0.010172914, 0.0015261013, 0.05658478, 0.049176745, 0.020280153, 0.03822231, 0.005161982, -0.01061293, -0.087320246, -0.018953538, 0.0050667548, 0.069194205, -0.05369512, 0.0473116, 0.063835196, 0.038511276, -0.037591837, -0.011151457, 0.006170079, 0.012950927, -0.0038846214, -0.057005093, 0.054956064, -0.036304627, -0.02431254, -0.038590085, -0.018809054, 0.049833484, -0.017246012, -0.0011936262, 0.026269628, -0.0041801548, 0.0009005557, -0.005427962, 0.029947376, -0.0037204362, -0.01486861, -0.026703078, 0.0008718233, 0.012977197, -0.018349336, 0.011847602, 0.039824758, 0.024916742, -0.04184752, 0.0053918413, 0.044921067, -0.037591837, 0.020096267, -0.01628717, -0.0072898217, -0.013318702, -0.008209259, -0.057477947, -0.036987636, 0.01519698, -0.041479744, -0.01907175, -0.040980622, -0.013207056, 0.0665147, -0.03246926, -0.012622557, -0.0001415071, 0.058949046, 0.02535019, 0.049780946, -0.013213623, 0.051987596, -0.022460533, -0.00066207675, 0.050595306, -0.049229283, -0.014211869, 0.025678562, -0.029579602, 0.041978866, -0.056900017, 0.01038307, -0.018835323, -0.050752923, -0.0061996323, -0.00014797189, -0.02469345, 0.008603304, -0.020963164, -0.043633852, -0.038379926, -0.049465712, -0.010665469, 0.03265315, -0.007178176, -0.03593685, 0.0067184577, 0.04323981, -0.029395714, 0.009391393, -0.057583027, -0.0053655715, 0.03246926, -0.002937273, -0.042583067, -0.0006678232, -0.054693367, -0.037907075, 0.023629531, 0.004410014, 0.0128064435, -0.012445237, 0.028187312, -0.061365854, 0.031996407, 0.013121679, 0.053484965, 0.005132429, 0.06562153, 0.032154024, -0.043528773, 0.04862508, 0.016182091, 0.025034957, -0.00919437, -0.012550315, -0.011584906, 0.055586535, 0.006721741, -0.06577915, 0.009693493, 0.02586245, 0.006688904, 0.0046136035, -0.022237241, 0.024141788, -0.008143585, 0.087950714, 0.016484192, -0.022421127, -0.005703793, 0.010849357, 0.029894838, 0.009240342, -0.0233537, 0.052828223, -0.008196124, 0.019649683, 0.01841501, -0.0029389148, -0.0113025075, -0.032154024, 0.010862491, -0.006580542, 0.009989026, 0.062889494, 0.027530571, 0.006436059, -0.0015154292, -0.018638302, -0.022985926, -0.01871711, -0.007992535, 0.030814275, -0.011873872, -0.0030078725, -0.04387028, 0.003733571, -0.018217988, -0.019610278, 0.023984171, 0.0024332243, 0.009634387, 0.006659351, -0.0024956148, -0.011893574, -0.060262527, -0.022959655, -0.03943071, -0.018730246, 0.023537587, 0.01721974, -0.015958799, -0.07980713, -0.0006000968, -0.009516173, 0.0061536604, -0.008701814, -0.0063178455, -0.022473667, 0.012077462, 0.020976298, -0.01046188, 0.0064524775, -0.054062895, 0.059579518, 0.021803793, -0.006757862, -0.014553375, 0.068931505, 0.028555086, -0.009844543, 0.016300304, 0.004249112, -0.006843238, 0.037013907, 0.009857678, 0.046155736, 0.02679502, -0.034492023, -0.051094428, -0.012701365, 0.011808198, -0.024325676, 0.0016705842, 0.027924616, 0.0833798, 0.041873787, -0.002502182, -0.041295856, 0.014645318, -0.0011033243, -0.027294144, 0.018073505, -0.008531062, 0.03672494, 0.0035726696, -0.023879092, -0.011046379, 0.070087366, 0.0072044455, -0.007887456, -0.042583067, -0.038590085, -0.018428145, -0.0049124206, 0.027320413, -0.05280195, 0.020555984, 0.03265315, 0.008412848, -0.03039396, -0.038773973, -0.018441278, 0.022907116, 0.02479853, 0.033020925, -0.016602404, -0.024706585, -0.005352437, 0.028712705, -0.017810808, 0.005996043, 0.035910584, -0.016549867, -0.0073949005, 0.002315011, 0.009785437, -0.0108296545, -0.006225902, 0.028476277, -0.06719771, 0.015761778, 0.027872076, -0.088948965, -0.012175973, 0.06572661, -0.025113765, -0.001904548, -0.048651353, 0.022237241, 0.05668986, 0.013154517, 0.051383395, 0.05931682, 0.00022678077, 0.056847475, -0.048992857, 0.03457083, 0.030840544, -0.01223508, 0.00056356564, -0.0063079945, 0.02540273, 0.002091719, -0.020385232, -0.010737711, -0.03735541, -0.015459676, 0.005404976, 0.019675951, 0.02766192, -0.02416806, 0.024128653, 0.02976349, 0.010895329, 0.00673816, 0.11117307, -0.034807257, -0.03401917, 0.03246926, -0.0064426265, 0.055428915, -0.023984171, -0.024233732, 0.01876965, -0.018217988, 0.04823104, 0.015354598, -0.018572627, -0.020753007, 0.0425568, -0.008820028, -0.009397959, -0.039089207, -0.06761803, 0.0022690392, 0.042872034, -0.0089448085, -0.0063966545, -0.044159245, -0.0029389148, -0.0025120333, 0.0022345602, 0.058371115, -0.048861507, -0.0212784, -0.042110216, -0.031287126, -0.03601566, -0.042031407, 0.016168956, -0.019347582, -0.042793225, -0.024181193, -0.05361631, 0.00414075, 0.008866, 0.006731592, -0.00019148097, -0.04959706, -0.00452166, -0.021462286, -0.025337057, -0.0005126682, -0.06677739, -0.024299407, 0.02758311, 0.041269585, -0.0022017232, 0.0040126857, -0.0325218, 0.006248888, -0.0063375477, -0.019623412, -0.024890473, -0.029527063, -0.0041932897, 0.03407171, 0.051567283, -0.005769467, -0.02619082, -0.06031507, -0.0064623286, 0.02439135, 0.020831816, -0.00843255, 0.067775644, 0.025245113, 0.011387884, -0.02441762, -0.000996604, -0.0877931, 0.043397427, 0.019872975, -0.012813011, -0.029290635, -0.03197014, 0.02201395, -0.033073463, 0.011289373, -0.018283661, 0.06241664, 0.0071716085, 0.0054476643, -0.009542443, 0.012333591, -0.01132221, 0.0032853454, 0.004423149, -0.04381774, 0.0073029567, 0.03415052, 0.018756514, 0.03162863, -0.02834493, -0.030709196, -0.05931682, -0.014422026, 0.0212784, 0.0375393, -0.05088427, -0.025415866, -0.014093656, -0.0012946001, -0.03664613, 0.0096409535, -0.028817782, 0.021422882, 0.036908828, 0.011085783, 0.01874338, 0.0015827451, -0.0006431954, -0.0425568, 0.0149605535, -0.01765319, -0.026978908, 0.047731914, 0.0072569847, 0.0062094834, -0.050043643, 0.012215377, 0.008872567, 0.023393104, 0.063362345, -0.00052908674, 0.017613785, 0.026558595, -0.018073505, 0.010809952, -0.0036383437, -0.04662859, -0.011013541, -0.004863165, 0.017390493, 0.0021081376, -0.0348598, 0.030919353, 0.014999958, 0.0040356717, -0.015105036, 0.024916742, -0.008268366, 0.038590085, 0.028476277, 0.013712746, 0.008196124, 0.04812596, 0.013266162, 0.02016194, -0.0076050577, -0.010796817, -0.004341056, -0.023550723, -0.032942113, 0.010626065, 0.037066445, -0.0032754943, -0.02910675, -0.01170312, -0.045052413, -0.04253053, 0.025547214, 0.036514785, 0.007434305, -0.019347582, -0.00024627778, -0.017416764, 0.021396613, 0.009076157, -0.024509564, -0.0021442585, 0.014474565, -0.022381723, -0.049071666, 0.0045052413, -0.018047234, 0.012642259, 0.042294104, 0.011617743, 0.017534977, -0.016457923, -0.01800783, -0.04321354, -0.031602364, -0.014619049, -0.00095473684, 0.0054772175, 0.04823104, -0.017364224, 0.049675867, 0.004574199, 0.02649292, -0.017850213, -0.013331836, 0.021422882, 0.00097526, -0.021055108, 0.024548968, 0.0054969196, 0.008787191, -0.0015523708, 0.022000814, 0.05022753, 0.034281865, 0.020634793, -0.01038307, -0.020240748, -0.02236859, -0.051304586, -0.010192616, 0.0046595754, 0.01598507, 0.025310786, 0.014119925, 0.039168015, -0.040481497, 0.014934284, -0.020726737, -0.02302533, -0.07602431, -0.03244299, -0.035569075, -0.023905363, 0.005684091, 0.017456168, 0.046076927, 0.016168956, -0.01205776, 0.016957045, -0.0129180895, 0.0035431162, 0.009897082, 0.032180294, 0.0073029567, -0.06278441, -0.021830061, -0.012668529, -0.0097525995, 0.02292025, -0.011000407, -0.03533265, -0.0025284518, 0.012556883, -0.0047022635, 0.044789717, 0.018428145, 0.0100218635, 0.05020126, -0.014343217, -0.006682337, -0.02586245, 0.04124332, -0.0054345294, 0.0055593103, -0.008504792, -0.03162863, 0.022499938, 0.0077495403, 0.017416764, 0.032600608, 0.0023117273, -0.017062124, 0.007834917, 0.005161982, 0.0047252495, -0.043607585, 0.02611201, 0.016720619, 0.0019849988, -0.0060650003, 0.012051192, -0.03664613, -0.00046012897, -0.0020966448, 0.02261815, 0.021028837, -0.022079622, 0.025218843, -0.0053688553, -0.0063933707, 0.038012154, -0.034833528, -0.024535833, 0.018231122, 0.018073505, 0.019242503, 0.0074605746, -0.015105036, -0.0023675503, 0.009049887, -0.039378174, -0.021751253, 0.006524719, 0.09646208, -0.02471972, -0.019084886, 0.04250426, -0.028055964, -0.022762634, -0.005073322, 0.04027134, 0.007926861, -0.0325218, 0.03543773, -0.03971968, 0.015998203, -0.018848458, -0.021948274, -0.0009448857, 0.037145253, 0.0017912603, 0.008235528, -0.0021081376, -0.021475421, 0.02971095, -0.01377842, 0.027031448, -0.022250375, 0.0073095243, -0.039903566, 0.009463633, 0.036462244, -0.044343133, 0.001351244, 0.020831816, 0.012734203, 0.010350234, 0.017311685, 0.012313888, -0.00777581, -0.049334362, 0.018204853, 0.02084495, -0.044211786, 0.011900142, -0.002027687, 0.0016648377, -0.047075175, -0.030026186, 0.032495532, 0.0013225116, -0.021409748, 0.054167975, -0.07765302, -0.005125861, 0.01223508, 0.0044034463, -0.019413255, 0.015433406, 0.012425534, 0.015131306, -0.02185633, 0.005749765, -0.028371198, -0.03262688, 0.030026186, -0.06084046, 0.03275823, -0.013844094, 0.0018437996, -0.04662859, -0.010304262, 0.015945664, 0.007795512, -0.0007511472, -0.012885253, 0.03275823, 0.017048988, 0.022289779, -0.0063605336, 0.009588415, 0.06430805, -0.021619905, -0.015853722, -0.008623006, 9.0353155e-05], [0.033290103, 0.0031468258, -0.0247014, 0.036082026, 0.020892084, -0.015722299, -0.029315166, 0.021412611, 0.0004000077, 0.035395876, -0.058866937, -0.004096197, 0.008216054, -0.021081366, -0.012942208, 0.025127286, -0.034118216, -0.023471061, 0.018052842, -0.027445998, -0.008612365, -0.050727777, -0.05640626, -0.029906675, 0.03163388, 0.000912402, -0.015036149, 0.010795032, -0.013959603, 0.033645008, 0.011575824, 0.007080358, 0.011250493, -0.006648557, -0.004208584, -0.0041139424, 0.010729966, 0.04743899, -0.0077605927, -0.006128029, -0.03998598, -0.019425143, -0.018904615, -0.05498664, -0.0041316873, 0.015639488, -0.017082768, -0.009404987, -0.008334356, -0.030498182, -0.0015556676, -0.0172129, -0.01243351, 0.021140518, -0.04547518, 0.003055142, 0.027966527, -0.054276828, 0.055459846, 0.014906017, -0.05635894, 0.040056963, 0.037880212, -0.010511108, -0.020832933, -0.0123507, 0.012244228, 0.012539982, 0.042186394, 0.05574377, -0.01649126, 0.05858301, 0.023198968, -0.020880254, 0.008813478, -0.06984533, 0.085177235, 0.01935416, 0.020726461, -0.034757044, 0.050585814, 0.009588354, 0.027375018, -0.0058411476, 0.011782851, -0.035537835, 0.034236517, -0.120005265, -0.009121062, 0.005223021, 0.009446393, -0.026996452, 0.014125225, -0.0021797093, -0.030758448, 0.00535611, -0.014101565, -0.0053679408, -0.008121413, -0.02342374, -0.021093197, -0.014953338, -0.04216273, -0.06511327, 0.040956054, 0.021743856, 0.0036791835, -0.025079964, -0.027990187, -0.018265786, 0.024393814, -0.01794637, -0.012658284, 0.03373965, -0.0022299874, 0.04138194, -0.022441836, -0.052904528, -0.0022551266, 0.00446589, -0.07784253, -0.0510117, 0.06828375, 0.024322834, 0.030166939, 0.022867722, -0.00039150476, 0.057305355, 0.009718486, -0.020821102, -0.03646059, 0.017023617, 0.0005955752, 0.04135828, 0.09908952, 0.0065125097, 0.07443544, -0.009972835, -0.06378829, 0.005631162, -0.08579241, 0.012232398, 0.002873253, 0.027375018, -0.052904528, -0.021519084, -0.012930378, -0.022903213, -0.07206941, -0.0044422294, 0.0038300182, -0.025695134, -0.006116199, 0.019448802, 0.04251764, -0.008482234, 0.017816238, -0.00018734187, 0.014349999, 0.0096061, 0.053188454, -0.069372125, 0.012279718, 0.023057004, -0.027919207, -0.055933055, 0.02898392, -0.039039567, -0.050585814, 0.028084828, 0.038921267, -0.01792271, 0.023305438, 0.010031986, -0.0053501953, 0.021164177, 0.040246245, 0.021483593, -0.013178811, -0.074388124, -0.04696578, 0.05635894, 0.04325111, -0.052384, 0.012066775, 0.05157955, 0.05441879, 0.023293609, 0.061942782, -0.05834641, -0.018443238, -0.009097402, -0.023885118, -0.0035431364, -0.027871884, -0.023719495, -0.0042292867, -0.029338827, -0.043676995, -0.004335758, 0.02069097, -0.054040227, 0.0052378085, -0.034804367, 0.0005164609, 0.010919249, 0.012717435, 0.025576832, 0.025955398, 0.03094773, -0.009671166, -0.014409149, -0.011280069, -0.010404636, -0.013592867, 0.049828686, -0.00040370462, -0.010037901, 0.0048947334, -0.037667267, 0.0396784, -0.012646453, -0.0036703108, 0.008198309, -0.023825966, 0.0028288898, 0.02751698, 0.006991632, 0.004007471, 0.031681202, -0.016053542, -0.045664463, -0.031775843, -0.00308176, -0.059387464, -0.028487055, -0.02279674, -0.02957543, 0.0199575, -0.00600677, 0.015603997, 0.027375018, -0.05711607, -0.016254656, 0.005702143, 0.035537835, 0.023045175, -0.009215704, -0.03982036, 0.03648425, -0.0024769423, -0.032556634, 0.03773825, 0.05550717, 0.014255357, 0.05550717, 0.003208934, -0.009848618, -0.024038909, 0.053093813, -0.014953338, 0.044457786, -0.037501644, 0.07145424, -0.0133326035, -0.035395876, -0.0056814402, -0.059766028, -0.039725717, -0.00788481, 0.041594885, -0.039749376, 0.033195462, 0.048290763, 0.013202472, 0.00065546547, 0.061043687, 0.0076718666, -0.024157211, 0.069372125, -0.025979057, 0.01993384, 0.014137056, 0.026050039, 0.035821762, 0.039441794, 0.00081184553, -0.017544145, -0.041121677, 0.01033957, -0.044410467, 0.0053501953, 0.043866277, 0.0060156425, 0.028581696, -0.0031823162, 0.010564344, 0.016077204, -0.028226791, 0.006062963, -0.026996452, -0.0144683, -0.05299917, -0.037525304, 0.02967007, 0.0658704, -0.015308242, 0.089057535, 0.0013013189, -0.034662403, 0.06355169, 0.0013405064, -0.04821978, -0.06804715, 0.018833634, -0.021045877, -0.00089983246, 0.0031556983, 0.04874031, -0.031420935, -0.05011261, -0.01651492, -0.07405688, 0.0065775756, 0.025245586, 0.02962275, 0.02402708, -0.019602595, -0.0023453315, 0.002083589, -0.05560181, -0.020903913, 0.011558078, 0.005178658, -0.038873944, -0.09568243, -0.01443281, -0.070507824, -0.0052732993, -0.007358367, 0.0017878347, 0.016148185, -0.050633136, -0.00896727, 0.029741053, -0.0060008545, -0.035514176, 0.012587303, 0.02199229, 0.003942405, 0.0013612092, 0.05437147, 0.0015320072, 0.0369338, 0.01988652, -0.022075102, -0.016266486, -0.050349213, -0.020182274, 0.0164676, 0.06743198, -0.057399996, 0.02687815, 0.06558647, 0.04067213, 0.0031290804, -0.01238619, 0.007707357, 0.009647505, 0.01449196, -0.048290763, 0.07344171, -0.04261228, -0.019697236, -0.019105727, 0.005004163, 0.02751698, -0.021400781, -0.025789775, 0.0064237835, 0.031137012, -0.011475267, -0.019969331, 0.029788373, 0.00930443, 0.004226329, 0.011315559, -0.0039453623, -0.014397319, -0.00022791566, -0.00050204294, 0.05498664, 0.03714674, 0.021708366, 0.04138194, 0.01863252, -0.045522504, 0.040530168, -0.0024769423, -0.020939404, 0.008565045, 0.0315629, -0.02067914, -0.054040227, 0.037359685, -0.053945582, -0.005929874, -0.014835035, 0.008162819, 0.072116725, -0.03447312, -0.020241424, -0.008352102, 0.009026421, 0.011067126, 0.038235117, -0.029362487, 0.047178727, -0.03655523, 0.010233099, 0.04147658, -0.03515927, -0.034023575, 0.0344258, -0.061942782, 0.022134252, -0.048196122, 0.0565009, -0.033976253, -0.021116856, -0.016597731, 0.012741095, -0.013308943, -0.015603997, -0.014409149, -0.05422951, 0.008050432, -0.013427245, -0.0029900759, 0.021613725, 0.015745958, -0.021779347, -0.02416904, -0.0047231964, -0.052904528, 0.001391524, -0.06553915, -0.015166281, 0.022098761, -0.019969331, -0.0480305, 0.005282172, -0.065917715, -0.021897648, 0.028274111, -0.014089735, 0.06251063, 0.025647813, 0.04549884, -0.05777856, -0.006725453, 0.017402183, 0.010008326, -0.006624896, 0.040388208, -0.0069798017, -0.02211059, 0.024890682, 0.0072282352, 0.046989445, -0.0007094406, -0.01999299, -0.03785655, 0.049213514, -0.0053354073, -0.0468948, 0.013391755, 0.024251852, 0.018041013, -0.029717391, -0.013379925, 0.026688868, -0.009464137, 0.04902423, 0.020229595, -0.03920519, 0.0148941865, -0.01208452, 0.06941945, 0.022619288, -0.04000964, 0.042825222, 0.001151963, 0.0071631693, 0.0057583363, -0.01208452, -0.020986725, -0.026499584, -0.010783202, -0.0025641897, 0.032793235, 0.09497262, 0.04114534, 0.021554573, 0.012930378, -0.025032643, -0.02543487, -0.007441178, -0.009848618, 0.02543487, -0.016869824, 0.010428296, -0.06180082, 0.01930684, -0.023991589, -0.020927574, -0.02004031, 0.01851422, 0.027185734, 0.020927574, -0.016917147, -0.035537835, -0.04736801, -0.01655041, -0.04405556, -0.01651492, -0.014976998, 0.033881612, 0.0109251635, -0.043038167, 0.01582877, 0.0011807991, -0.011735531, 0.00930443, 0.014231697, 0.012001709, 0.00046877057, 0.02136529, -0.0042144987, -0.011747361, -0.03094773, 0.03922885, 0.0042026686, -0.011658634, -0.02543487, 0.034615085, 0.052005436, -0.0029605005, -0.006305482, 0.020063972, -0.020016652, 0.03153924, 0.017307542, 0.015686808, 0.009665251, -0.03724138, -0.05219472, -0.04469439, 0.015024318, -0.04275424, -0.00063661113, 0.003241467, 0.078505024, 0.045782767, -0.010173948, -0.060854405, 0.0147995455, -0.036886476, 0.0064296983, -0.006406038, 0.022962363, 0.021176009, 0.008523639, -0.030805768, -0.01164089, 0.088820934, 0.0061576045, -0.052715246, -0.0030137363, -0.008127328, -0.036389608, -0.012587303, 0.0045989794, -0.042493977, 0.017638786, 0.007772423, -0.0053413226, -0.042896204, -0.039157867, 0.00962976, 0.02541121, 0.043747976, 0.025245586, -0.00999058, -0.020761952, 0.04959208, 0.010635325, -0.000629587, 0.0050071203, 0.047983177, 0.0018410705, -0.03487535, 0.023896948, 0.015036149, 6.150765e-05, -0.010546599, 0.018537879, -0.05687947, 0.00446589, 0.021199668, -0.05148491, -0.028581696, 0.059766028, -0.013533717, 0.0075358194, -0.041050695, 0.0073820273, 0.050727777, 0.023494722, 0.035466857, 0.054466113, 0.012634624, 0.053093813, -0.048976913, 0.048432723, -0.0027017156, -0.00616352, -0.009044167, -0.006394208, 0.02334093, 0.0060984534, -0.0510117, -0.030379882, -0.012587303, 0.011209088, 0.0013323731, 0.025624152, 0.0385427, -0.011830172, 0.0064356136, 0.0030788023, 0.019401481, -0.0019889476, 0.08844236, -0.025269248, -0.052904528, 0.04616133, -0.004569404, 0.06714806, -0.048692986, -0.025860757, 0.026901811, -0.023991589, 0.0496394, 0.015402884, -0.0123507, -0.024961663, 0.023802307, -0.00361116, 0.026286643, -0.053945582, -0.038921267, 0.012859397, 0.024251852, -0.0048769885, -0.022725761, -0.02751698, -0.058109805, -0.00793213, 0.0030788023, 0.090003945, -0.04462341, -0.02474872, -0.045782767, -0.015639488, -0.029457128, -0.023530211, 0.017366692, -0.018111993, -0.040340886, -0.031042371, -0.057447314, -0.004108027, -0.027682602, -0.033834293, -0.0031172503, -0.039015908, 0.029196864, -0.014539281, -0.0013257186, 0.0008983537, -0.051958114, -0.021767516, 0.04147658, 0.010546599, 0.0010077828, 0.0103928065, -0.0102685895, -0.01374666, 0.031042371, -0.0019164878, -0.0045220833, -0.032722257, -0.03094773, 0.04684748, 0.024441136, -0.017035447, -0.028818298, -0.073914915, -0.018301276, 0.03241467, -0.0019919053, 0.03224905, 0.045664463, -0.019732727, 0.0042144987, -0.013214302, 0.035135612, -0.08896289, 0.028392414, 0.038140476, 0.006595321, -0.009890024, -0.027209396, -0.0017996649, -0.059387464, 0.019519784, -0.002110207, 0.044434126, -0.0037915702, -0.012232398, -0.00089391734, -0.008003111, -0.003584542, -0.03300618, 0.009121062, -0.032816898, 0.0065716607, 0.037643608, -0.0039926833, 0.010475617, -0.026972791, -0.053377736, -0.04902423, -0.004205626, 0.012279718, 0.060333878, -0.03496999, 0.0045546163, -0.007423433, 0.0029353613, -0.027682602, 0.012965868, -0.03795119, 0.011422031, 0.039015908, 0.0032059767, 0.02067914, 0.030971391, -0.022512818, -0.025576832, 0.010517023, -0.038187794, -0.020241424, 0.06411953, 0.02205144, -0.006459274, -0.038802963, 0.0061812648, 0.009523288, 0.04055383, 0.0754765, -0.0044865925, 0.0041257725, 0.021862159, -0.02751698, 0.03175218, 0.008908119, -0.042493977, -0.034094557, -0.016124524, 0.006074793, 0.0031409108, -0.047722913, 0.034023575, 0.01782807, -0.0061457744, 0.012480832, 0.02754064, -0.017579636, 0.036886476, 0.04587741, 0.009972835, -0.0010129585, 0.04741533, 0.012528152, 0.037312362, -0.011096701, 0.015225431, -0.019661745, 0.0048000924, -0.04824344, -0.0008258939, 0.052620605, -0.024606757, 0.0039897254, 0.0043209703, -0.023104325, -0.025624152, 0.03021426, 0.028037507, 0.02412172, 0.0014772927, -0.00075565226, -0.02543487, 0.01993384, 0.012705605, -0.036389608, 0.014716734, 0.035017308, -0.014326339, -0.057258032, -0.0025449658, -0.019922009, 0.025150945, 0.05934014, 0.004161263, 0.0013264581, -0.020761952, -0.054276828, -0.022761252, -0.060144596, -0.016242826, 0.003877339, 0.0007209011, 0.051437587, 0.022465497, 0.043771636, 0.023778645, 0.035821762, -0.01988652, 0.014255357, 0.006305482, 0.01311966, -0.044268504, 0.02967007, -0.00037690188, -0.006453359, -0.018005522, 0.048692986, 0.029102223, 0.0136756785, 0.008559129, -0.023068836, -0.028392414, -0.01722473, -0.0578732, -0.009890024, 0.00078374887, 0.024464795, 0.0076482063, 0.042233713, 0.028676337, -0.031775843, 0.008452658, -0.014669414, -0.030450862, -0.07088639, -0.029244184, 0.01308417, -0.018987427, -0.027706264, -0.007009377, 0.04147658, 0.010416467, -0.04547518, 0.027635282, 0.013214302, -0.0016665754, -0.021530913, 0.014681243, 0.014515621, -0.041642204, -0.028912941, -0.02486702, -0.015367393, 0.015533016, -0.026949132, -0.005986067, 0.032059766, -0.024985323, -0.0065539153, 0.04204443, -0.04147658, 0.02059633, 0.04930816, 0.0029841608, -0.0118952375, -0.021400781, 0.014267188, 0.017721597, 0.015840601, 0.008050432, 0.0013811726, 0.018597031, -0.00078670646, -0.0048976913, 0.003513561, -0.011818342, -0.011155852, -0.01303685, 0.028794639, 0.034709726, -0.031917803, 0.0037708674, 0.027256716, -0.034141876, -0.009452308, 0.011321475, -0.043085486, 0.029764712, 0.011114446, 0.040411867, 0.027114755, -0.039654735, 0.026286643, 0.010037901, 0.0007881852, 0.0014817291, -0.044954654, -0.018940106, 0.0076482063, 0.027138414, 0.023932438, -0.015284582, -0.008198309, 0.0036703108, 0.027067434, -0.021483593, -0.0019904263, 0.017579636, 0.0743408, -0.022548309, 0.0058352323, 0.030687466, -0.04476537, -0.01578145, 0.015083469, 0.06643824, 0.006139859, -0.008192394, 0.040743113, -0.03506463, 0.0032266795, 0.0058677653, -0.0052851294, -0.0010565822, 0.03373965, 0.0184669, -0.008860799, 0.012847567, -0.0055099027, 0.0053176624, 0.0014410628, 0.037312362, 0.0015734129, 0.018774483, -0.040743113, -0.010499278, 0.011007975, -0.046516236, 0.018892786, 0.023778645, 0.037477985, 0.008393507, 0.040127944, 0.010351401, -0.010380976, -0.041665867, 0.0028067082, 0.010398721, -0.03998598, -0.038968585, 0.0205845, -0.005066271, -0.007914385, -0.03381063, 0.028534375, 0.025150945, -0.004616725, 0.021696536, -0.060002632, -0.025979057, 0.023956098, -0.019058406, -0.03508829, 0.012504492, -3.195533e-05, 0.022631118, -0.04069579, 0.036815494, 0.003152741, -0.026452264, -0.011569908, -0.027091093, 0.025056304, -0.019484293, 0.020915745, -0.027351357, 0.0065065944, 0.025908077, 0.013391755, -0.012587303, -0.021862159, 0.031775843, 0.02815581, 0.03224905, 0.00085916626, -0.0045457436, 0.046445254, 0.0037945276, -0.03911055, 0.016053542, -0.00040333494], [0.03334645, 0.023046158, -0.028190281, 0.02647959, 0.0260218, 0.008481179, -0.03055152, 0.02744336, 0.012408543, 0.042140856, -0.04679105, -0.010836393, 0.005601915, -0.03129844, 0.013673492, 0.014468602, -0.014974581, -0.005909117, 0.0023416607, -0.013974669, -0.0057223863, -0.054983098, -0.050742507, -0.02387741, 0.0038671284, 0.008896804, -0.02546763, 0.0091799125, 0.0007623574, 0.03327417, 0.0056440798, 0.019456113, 0.021455936, 0.014010811, 0.00946302, 0.016384095, 0.011511032, 0.04939323, -0.011595362, -0.0009042876, -0.04023741, 0.0054603615, -0.026551872, -0.043755174, -0.003623174, 0.0074089845, 0.0026578978, -0.015287807, -0.023781033, -0.005351937, -0.008378779, -0.00805953, -0.011848352, 0.011523079, -0.07435488, -0.001536009, 0.0050838883, -0.048188515, 0.032165837, 0.027925245, -0.042429987, 0.034695733, 0.015926305, -0.021624597, -0.034984864, -0.006806628, -0.012938617, 0.019660914, 0.057633467, 0.049634174, -0.014781827, 0.03667146, 0.021178853, -0.020889722, 0.031491194, -0.072186396, 0.07782445, 0.03206946, 0.021480031, -0.030093728, 0.03303323, 0.012480826, 0.043899737, -0.0137457745, 0.018528484, -0.024226777, 0.024672521, -0.10774952, -0.02840713, -0.02043193, -0.0091497945, -0.038671285, 0.025226688, 0.019480208, -0.023058206, 0.008420943, 0.0057374453, 0.015637174, -0.008993182, -0.0012257954, -0.016962359, -0.030792462, -0.032575436, -0.07440307, 0.04871859, 0.024768898, -0.0038099047, -0.008258307, -0.031900797, 0.038623095, 0.006071753, -0.022805216, -0.03546675, 0.051561713, -0.01980548, 0.045875467, -0.03700878, -0.058308106, 0.0041020475, 0.019516349, -0.081920475, -0.024323154, 0.0700661, 0.0077161863, 0.03679193, 0.01711897, 0.02178121, 0.059512816, 0.016914168, -0.023576232, -0.050308812, 0.0013537961, 0.0057464805, 0.009089559, 0.071656324, 0.0043911785, 0.09329297, -0.014167424, -0.050357, -0.018082742, -0.07305379, 0.009824433, 0.012745863, 0.024455672, -0.04606822, -0.015745597, -0.02425087, -0.040381975, -0.054934908, -0.018600767, -0.021106571, -0.02421473, -0.017420148, 0.021973964, 0.0411289, -0.009191959, 0.03575588, 0.010993006, 0.011595362, 0.0054724086, 0.0436347, -0.075655974, 0.00034334318, 0.03349102, -0.0002870605, -0.045971844, 0.008975111, -0.036623273, -0.024817087, 0.01649252, 0.03990009, -0.0069090286, 0.036189575, 0.0081920475, 0.022359472, 0.012179648, 0.0097220335, 0.04120118, -0.003873152, -0.079752, -0.042526364, 0.06895777, 0.042478178, -0.041225277, 0.011432726, 0.053392876, 0.0491041, 0.0133964075, 0.052814614, -0.06009108, -0.013589161, 0.010264154, -0.0079029165, 0.018962182, -0.0232871, -0.010818322, -0.020443978, -0.01678165, -0.060524777, 0.018793521, 0.025612196, -0.060862098, 0.036117293, -0.025226688, 0.022732932, -0.013516879, 0.042791404, 0.004535744, 0.030262388, 0.049875114, -0.00023322488, -2.6470743e-05, -0.0031322537, -0.020805392, -0.011047217, 0.039924186, -0.0059301993, -0.004858005, -0.004800781, -0.06664472, 0.028961299, -0.029925069, 0.011860399, 0.0066078505, -0.020733109, 0.012294095, 0.020925863, 0.01758881, 0.009330502, 0.022540178, -0.015721504, -0.06013927, -0.043032344, 0.00381894, -0.09093173, -0.023311194, -0.023781033, -0.017733375, 0.024792992, -0.02115476, 0.022383565, 0.039996468, -0.054067515, -0.0063608843, -0.002130836, 0.034430694, 0.028503507, -0.028672168, -0.042502273, 0.05686245, -0.009728056, -0.017661091, 0.025419442, 0.065343626, -0.015058911, 0.077101626, 0.029780503, 0.005598903, -0.0381894, 0.032960944, -0.0044303318, 0.0440684, -0.025660384, 0.05522404, -0.012191694, -0.03223812, -0.0023025076, -0.05189903, -0.048284892, 0.0034515024, 0.03785208, -0.04373108, 0.051754467, 0.042478178, 0.017564714, 0.0030358764, 0.06394616, -0.008029412, -0.016890075, 0.062211376, -0.028214376, 0.04968236, -0.010884581, 0.031539384, 0.013998764, 0.043586515, 0.00020310706, -0.018287541, -0.0335633, 0.0023853316, -0.030696085, 0.011306231, 0.013565067, -0.012480826, 0.013577115, -0.020962005, 0.0060356115, 0.0043098605, -0.049080003, -0.015709456, -0.03202127, -0.022696791, -0.065825514, -0.027130134, 0.014649309, 0.039490487, -0.0067162747, 0.07045161, 0.0030931004, -0.04163488, 0.053007368, 0.0043972023, -0.035635408, -0.04476713, -0.025732668, -0.03763523, 0.0012973252, -0.014902298, 0.044670753, -0.02693738, -0.041321654, -0.040526543, -0.0851973, -0.001576668, 0.01564922, 0.018432107, 0.019480208, -0.03423794, 0.008692004, 0.015323948, -0.058115352, -0.020576496, 0.017347867, 0.014661356, -0.059801947, -0.08929332, -0.0042827544, -0.06910233, -0.019323595, -0.016733462, 0.029563654, 0.04204448, -0.03411747, 0.00032056659, -0.0037285865, -0.014781827, -0.011553197, -0.0019576584, 0.008131812, 0.008228189, 0.0014027376, 0.048574023, 0.00019783645, 0.00051426183, 0.021600502, -0.01145682, -0.016721414, -0.061922245, 0.001383161, 0.029226335, 0.06563276, -0.046983805, 0.03626186, 0.054501213, 0.049875114, 0.02999735, 0.018203212, 0.026190458, 0.030117823, 0.005183277, -0.055705924, 0.07584873, -0.037707515, -0.033900622, -0.03129844, -0.0026910275, 0.024491813, -0.016938264, -0.01711897, 0.012318189, 0.010143682, -1.4176553e-05, -0.035298087, 0.0063006487, 0.008113742, 0.0039092936, 0.010246083, 0.0029681115, -0.034141563, -0.016456379, 0.011902563, 0.060862098, 0.025588103, -0.007842681, 0.0587418, 0.008487202, -0.03575588, 0.044959884, -0.001438879, 0.002903358, 0.010752062, 0.033081416, -0.04329738, -0.04430934, 0.036575083, -0.04708018, -0.004144212, 0.008372755, -0.018022506, 0.074595824, -0.033418737, -0.020889722, 0.004677298, -0.0010857475, 0.02144389, 0.017155113, -0.00071191, 0.05710339, -0.059801947, 0.020275319, 0.04108071, -0.0036984687, -0.03643052, 0.035587218, -0.06895777, 0.0121676, -0.032912757, 0.068331316, -0.01598654, -0.019769339, -0.0084450375, 0.019287454, -0.023612373, 0.014781827, -0.015914258, -0.02652778, -0.0047254865, 0.009655774, 0.0018823639, 0.04163488, 0.01476978, -0.02102224, 0.008649839, 0.004839934, -0.06789762, 0.006128977, -0.057729844, -0.013432549, 0.023865363, 0.018938087, -0.030671991, -0.012974758, -0.066837475, -0.041466217, 0.042984158, -0.007758351, 0.0755114, 0.014046952, 0.053441066, -0.045634527, -0.020468073, 0.014697498, 0.02022713, -0.0044212965, 0.04283959, -0.019251313, -0.026359119, 0.024817087, 0.0018311637, 0.041177087, -0.007764375, -0.020504214, -0.03621367, 0.07430669, -0.012529015, -0.025829045, 0.025395349, 0.05098345, 0.021287277, -0.017781563, -0.022841357, 0.04079158, -0.019588633, 0.05416389, -0.015095053, -0.028479414, -0.016516615, 0.013456644, 0.04469485, 0.02614227, -0.030575614, 0.04016513, -0.02278112, 0.0032768191, 0.006186201, -0.01762495, -0.0037376217, -0.038791757, -0.039201356, -0.020407837, 0.017167158, 0.07290923, 0.047272936, -0.011215877, 0.028551696, -0.039490487, -0.030021446, -0.010420767, 0.024070164, 0.0074752434, -0.025106218, 0.0072704423, -0.059946515, 0.008113742, -0.007234301, -0.008083624, -0.017155113, 0.039129075, 0.027226511, 0.04377927, -0.01145682, -0.05618781, -0.04158669, -0.013854198, -0.0520436, -0.011137571, -0.0013854199, 0.02396174, 0.008902828, -0.025491726, 0.018359825, -0.011962799, -0.01762495, 0.0038400225, 0.031226158, -0.0120652, 0.010830369, 0.005267607, -0.015299854, 0.0016730451, -0.022889545, 0.042574555, 0.008673933, -0.005490479, -0.025130311, 0.04864631, 0.04288778, 0.023515996, -0.0056440798, -0.004246613, -0.013601209, 0.04577909, 0.024154494, 0.024913464, 0.013950575, -0.002279919, -0.03886404, -0.03739429, 0.021166805, -0.026214553, 0.0049092053, 0.0012401014, 0.07695706, 0.04652601, 0.013673492, -0.047345217, 0.0038611048, -0.012101341, 0.0016203389, -0.011071311, 0.012384449, 0.013793963, -0.0015932329, -0.0019877763, -0.008186025, 0.0818241, -0.0064753317, -0.05132077, -0.022757027, -0.014540885, -0.035659503, -0.031418912, -0.006830722, -0.034984864, 0.0064632846, 0.010372578, -0.0059573054, -0.025877234, -0.043080535, -0.013504832, 0.023094347, 0.063416086, 0.028093904, -0.011173712, 0.0030900887, 0.02647959, 0.015227571, -0.001466738, 0.00022531896, 0.05401933, 0.008969088, -0.043417852, 0.030069634, -0.0055386676, 0.016878027, -0.017082829, 0.0061922246, -0.06394616, 0.025829045, 0.036623273, -0.07329474, -0.009432903, 0.047104277, -0.005490479, 0.0064512375, -0.03394881, -0.000103247665, 0.050742507, 0.027515642, 0.043899737, 0.07377662, 0.032430872, 0.032334495, -0.04124937, 0.04973055, 0.01346869, -0.007764375, -0.027804773, -0.015721504, 0.020829486, 0.020443978, -0.022925686, -0.027636115, -0.022949781, 0.00633679, -0.0043068486, 0.018395966, 0.040068753, -0.0013854199, 0.012830192, 0.0034545143, 0.0043219076, -0.019299502, 0.09787088, -0.02908177, -0.06958422, 0.026575968, -0.010746039, 0.06201862, -0.02761202, -0.023094347, 0.044574376, -0.03327417, 0.04377927, 0.006029588, 0.0003284725, -0.043466043, 0.03739429, -0.018733285, 0.010420767, -0.048116233, -0.03717744, 0.008758263, 0.0068668635, -0.017612902, -0.017853845, -0.02396174, -0.035298087, -0.028069811, 0.013179559, 0.06837951, -0.03223812, -0.029274523, -0.049585983, -0.009685892, -0.04033379, -0.018612815, 0.013432549, -0.024238823, -0.04124937, -0.05228454, -0.059512816, 0.021287277, -0.03797255, -0.023817174, -0.0017950223, -0.032864567, 0.023214817, -0.014083094, -0.01603473, -0.011083359, -0.056958828, -0.015396231, 0.032671813, 0.02249199, -0.010450885, 0.010770134, -0.012685627, 0.008649839, 0.014203565, -0.018432107, -0.010667733, -0.009318454, -0.010083447, 0.042911872, 0.028889015, -0.008547438, -0.015227571, -0.04339376, -0.0142878955, 0.004897158, -0.013215701, 0.034695733, 0.04305644, -0.011577291, 0.00542422, -0.018889898, 0.028985392, -0.080523014, 0.025997704, 0.017986365, 0.01223386, 0.014926393, -0.030623803, 0.00971601, -0.062259562, 0.016082918, 0.013287984, 0.06515087, 0.0093726665, -0.002629286, -0.004577909, 0.00095774676, -0.0018206224, -0.041104805, 0.0014968558, -0.035322182, -0.007788469, 0.029346807, -0.009812387, 0.012041106, -0.0310575, -0.050453376, -0.05522404, -0.026792815, 0.007927011, 0.018950135, -0.04939323, 0.006764463, 0.01884171, 1.7094217e-05, -0.0260218, 0.025130311, -0.03811712, 0.02828666, 0.005978388, -0.0053368784, 0.014203565, 0.011770045, -0.022455849, -0.028985392, -0.010384626, -0.028840827, -0.010980958, 0.053730197, -0.008812475, -0.001452432, -0.05194722, -2.7153099e-05, 0.0030735238, 0.044285245, 0.06664472, -0.025515819, -0.0008079106, 0.023552138, -0.019648867, 0.026045892, 0.02925043, -0.036478706, -0.025732668, -0.018034553, 0.00011811834, 0.0145770265, -0.043899737, 0.026744626, 0.028503507, 0.01040872, 0.013336172, 0.022636555, -0.022395613, 0.025756761, 0.03679193, -0.0069873347, -0.01754062, 0.060910285, 0.007595715, 0.033153698, -0.009776245, 0.03214174, -0.016588897, 0.0063608843, -0.044478, 0.002169989, 0.035611313, -0.031683948, -0.03664737, 0.017721327, -0.012914523, -0.037081063, 0.03072018, 0.028672168, 0.022504037, -0.009981046, 0.023479855, -0.017914081, 0.011191783, 0.027852962, -0.040092845, -0.010565332, 0.034623448, -0.023263006, -0.068716824, 0.010944817, -0.01145682, 0.020034377, 0.06365703, -0.0013522903, -0.0031232182, -0.0094027845, -0.045514055, -0.028166188, -0.056284185, -0.018962182, -0.00611693, 0.0044062375, 0.053826574, 0.038213495, 0.037562948, 0.019938, 0.04842946, -0.0220342, 0.006499426, 0.0065717087, 0.004451414, -0.03826168, 0.006008506, -0.021094523, -0.011426702, -0.015709456, 0.052236352, 0.037827987, 0.02354009, -0.001645939, -0.023744892, -0.036816027, -0.022793168, -0.06519906, -0.014661356, -0.0201428, 0.024817087, 0.0045959796, 0.011468867, 0.03541856, -0.00025073087, 0.0018853757, -0.011444773, -0.033129606, -0.07782445, -0.0073909136, -0.01519143, -0.008535391, -0.028575791, -0.0027000627, 0.041899916, -0.00029816644, -0.061633114, 0.03247906, 0.017384008, 0.0012566661, -0.02874445, 0.020468073, 0.024491813, -0.05189903, -0.033370547, -0.031780325, -0.012294095, 0.038743567, -0.012263978, 0.0050417236, 0.027539738, -0.034984864, -0.0019441055, 0.04045426, -0.02840713, 0.022094434, 0.04115299, 0.01862486, -0.007661974, -0.018938087, 0.00782461, 0.0035478796, 0.012878381, -0.010312342, 0.011149618, 0.016468426, -0.0061350004, -0.010119588, -0.0064572613, -0.005505538, 0.0039906115, -0.019383831, 0.027009664, 0.024792992, -0.031081593, 0.012962711, -0.0151071, -0.0138421515, -0.009426879, 0.032792285, -0.045682713, 0.036478706, 0.010348484, 0.034382507, 0.01485411, -0.057922598, 0.032262214, -0.0048339106, 0.0027693338, 0.022443801, -0.05426027, -0.037659325, 0.0023461783, 0.024238823, 0.022889545, -0.021684833, 0.0051200297, -0.003044912, 0.010306319, -0.025274877, -0.012926569, 0.01076411, 0.07686068, -0.020865628, 0.026624156, 0.03344283, -0.035635408, -0.0012039599, 0.005782622, 0.059561007, 0.018408014, -0.018901946, 0.0377557, -0.036816027, -0.007168042, 0.00095774676, -0.01372168, -0.013155465, 0.038743567, -0.0019847646, -0.008312519, 0.028142093, -0.012553109, -0.0100714, -0.004556827, 0.030744273, 0.0041924007, 0.031659856, -0.03320189, 0.0013093724, 0.015420325, -0.04288778, 0.015962446, 0.019913904, 0.038912226, 4.280025e-05, 0.042454083, -0.0038430342, -0.0014095141, -0.041899916, 0.008282402, 0.010131636, -0.05512766, -0.035346277, 0.0352499, -0.020287365, -0.015155288, -0.02396174, 0.032214023, 0.012830192, 0.0084149195, 0.02823847, -0.03223812, -0.003873152, 0.026913287, -0.016552756, -0.02252813, 0.008535391, 0.0014034905, 0.015588985, -0.018781474, 0.04498398, -0.008993182, -0.028166188, -0.02631093, -0.026889192, 0.0047254865, -0.013950575, 0.008607673, -0.023275053, 0.014492696, 0.014793875, 0.020793345, -0.00095925265, -0.012408543, 0.032840475, 0.026985569, 0.02970822, -0.004851981, -0.014540885, 0.05040519, 0.0027181336, -0.03597273, -0.010438837, 0.009318454], [0.0070065227, -0.0047412557, -0.041863535, 0.019152332, 0.022523891, -0.006912868, -0.021844897, -0.01078782, 0.015253967, 0.0316552, -0.06007932, -0.047576454, 0.0006076563, -0.024865253, 0.00450712, 0.035331137, -0.034113627, 0.008493287, -0.01780605, -0.027885608, 0.005903156, -0.055630736, -0.07342508, -0.03193616, 0.03256833, 0.0016813898, -0.0004353468, -0.006620198, -0.014294009, 0.029875765, 0.012877485, 0.022231221, 0.040365063, -0.032849293, -0.022114154, -0.021727828, 0.008575235, -0.0032486382, -0.01630758, 0.050948013, -0.037344705, 0.01732607, -0.029875765, -0.0696789, -0.009546899, -0.0111799985, -0.0014267669, -0.017536793, 0.0036086226, -0.041090883, 0.0050836797, 0.011279507, 0.007837705, 0.02384676, -0.038843177, 0.001381403, 0.048185207, -0.075344995, 0.089627296, 0.023074111, -0.048513, 0.033528287, 0.03378584, -0.014598385, -0.047904246, 0.024888666, -0.014188647, 0.036876433, 0.022406824, 0.054506883, -0.041348435, 0.019304521, 0.01163071, -0.0059499834, -0.024958907, -0.07075593, 0.10180237, 0.02945432, 0.01656513, -0.0445561, 0.020147411, -0.004747109, 0.025122803, -0.00397446, -0.0038398318, -0.043315176, 0.030390864, -0.11959671, -0.010179066, 0.0041851825, -0.005121727, -0.026387138, 0.030999618, 0.02465453, -0.025614489, 0.009072773, 0.00064680097, -0.013732081, 0.00041046983, -0.01601491, -0.020849818, -0.017934825, -0.031046446, -0.05609901, 0.046358947, 0.035729166, 0.0130530875, -0.023717986, -0.03128058, 0.014247181, 0.011800459, -0.015125192, -0.029852351, 0.027042719, 0.009236669, 0.047389146, -0.04158257, -0.085553326, 0.016096856, 0.0023530677, -0.104518354, -0.03821101, 0.05872133, 0.01706852, 0.020194238, 0.021271264, 0.006737266, 0.04202743, 0.0100561455, -0.026574446, -0.015253967, 0.042776663, 0.007158711, 0.00057656015, 0.073003635, 0.012327265, 0.071551986, -0.012526281, -0.03697009, 0.017642155, -0.07028765, 0.020931767, 0.022652667, 0.043970756, -0.053617164, -0.021563934, -0.0474828, -0.01553493, -0.025286699, -0.023577504, 0.008065988, -0.008112815, -0.011736072, 0.01073514, 0.02238341, -0.02157564, 0.0118472865, 0.020557148, -0.0029047509, 0.011115611, 0.0056221928, -0.058487196, 0.013790616, 0.045984328, -0.01718559, -0.05876816, 0.006930428, -0.035518445, -0.06092221, 0.028705085, 0.0059587634, -0.021224437, 0.0099098105, -0.0051012402, -0.012725296, 0.027393922, 0.02627007, 0.0034125336, -0.004340298, -0.0898146, -0.022465358, 0.0643406, 0.050760705, -0.035260897, 0.024350153, 0.04106747, 0.036244266, -0.003781298, 0.05319572, -0.040646024, -0.0043227375, 0.003807638, -0.027885608, -0.004375418, -0.026199829, -0.0068016537, -0.006649465, -0.04659308, -0.020311305, -0.0074865017, -0.0020735678, -0.037789565, 0.00039290963, -0.036103785, 0.0056338995, -0.0057948683, 0.017712396, 0.01575736, 0.019105505, 0.01692804, 0.024186257, 0.010600512, 0.033902906, -0.008065988, -0.012502867, 0.01622563, -0.0058387686, -0.012327265, 0.0337156, -0.025029149, 0.048934445, 0.0058709625, 0.008674742, -0.023682866, 0.0038720255, 0.019433295, 0.022582427, 0.0316552, -0.020873232, 0.00023285566, 0.010641485, -0.014867642, -0.049777333, 0.016284166, -0.053476684, 0.0020852746, -0.021364918, -0.013076501, 0.038702697, 0.0013616477, 0.01219849, 0.028705085, -0.061999235, -0.004360785, 0.029665044, 0.053102065, 0.009505926, -0.007814292, -0.033832666, 0.046686735, -0.010489297, -0.010190774, 0.043760035, 0.017337777, 0.013287223, 0.079278484, 0.0151368985, -0.0061343657, -0.052914757, 0.055396598, -0.03106986, 0.047225248, -0.05825306, 0.08091743, -0.05961105, -0.057129208, -0.00018044942, -0.06387232, -0.050713878, -0.004378345, 0.06518349, -0.03315367, 0.0008875221, 0.03490969, 0.026129588, 0.0128891915, 0.060547594, -0.014282302, -0.026714928, 0.036759365, -0.014902762, 0.063825496, -0.0038310518, 0.0063099675, 0.03975631, 0.035916477, 0.003084743, -0.07164565, -0.047576454, -0.010799527, -0.039662655, -0.026714928, 0.030531347, 0.0148442285, 0.013895977, -0.01498471, 0.011706805, 0.03296636, -0.012573108, 0.004094455, -0.03128058, -0.022699494, -0.03128058, -0.030437691, 0.0035559419, 0.03135082, -0.017372899, 0.07192661, 0.004366638, -0.055256117, 0.047435973, -0.017700689, -0.025708143, -0.026199829, 0.026691515, 0.009517632, 0.012584815, 0.017864583, 0.04549264, -0.033879492, -0.036408164, 0.006081685, -0.095761664, 0.029922592, -0.0024394053, 0.025263283, 0.019491829, -0.040435303, -0.020486908, 0.008914731, -0.07801414, -0.01777093, -0.0029749917, -0.025310112, -0.028353881, -0.062467508, -0.010629779, -0.060032494, -0.028307054, -0.0057714544, 0.023694573, 0.014235474, -0.05197821, -0.029922592, 0.01787629, -0.003327659, -0.0031579104, 0.0153476205, 0.00091971585, 0.012783831, 0.0013535992, 0.029641628, -0.026738342, 0.007170418, 0.010225894, -0.0025140364, -0.0055958526, -0.056286316, 0.029805524, -0.0050192922, 0.04048213, -0.062373854, 0.015148605, 0.035518445, 0.044462442, -0.024560876, -0.0361272, -0.007135297, 0.031842507, 0.017408019, -0.06092221, 0.061858755, -0.0001234702, 0.001998937, -0.027791955, 0.035120413, 0.027253442, -0.013205276, -0.022512184, 0.010296134, 0.008586941, -0.010565391, -0.034090213, 0.058346715, 0.009230816, -0.00565146, -0.008616208, 0.03996703, 0.0153476205, 0.0020106437, 0.012233611, 0.026761755, -0.004957832, -0.0057363342, 0.019445002, 0.049121752, 0.0011706805, 0.028260225, 0.0058504757, -0.021294678, 0.03296636, -0.011121464, -0.054225918, -0.0013221372, 0.06377867, -0.07159881, 0.00454224, -0.01216337, -0.024233086, 0.08147936, -0.057456996, 0.032849293, -0.011379014, 0.023729693, -0.014422784, 0.041933775, -0.039217796, 0.053851303, 0.0135564795, -0.006807507, 0.06288896, -0.026831996, -0.04092699, 0.026621273, -0.09276472, 0.021716122, -0.009423978, 0.028892394, 0.015417862, -0.020966887, -0.009663967, 0.0055987793, -0.018367976, 0.014048166, 0.009189841, -0.050901186, -0.02634031, -0.020884939, 0.013673548, 0.011718512, 0.0046066274, -0.033294152, 0.029313838, 0.01696316, -0.04151233, 0.012573108, -0.056567278, -0.019210866, 0.03554186, 0.010641485, -0.0153476205, -0.027932435, -0.09262424, -0.018157253, 0.057363342, -0.03938169, 0.057972096, -0.001079221, 0.042659596, -0.07979358, 0.016799264, 0.036689125, 0.05249331, 0.013380878, 0.023823347, -0.017138762, -0.04256594, 0.033809252, -0.011419988, 0.003310099, -0.015628584, -0.0048934445, -0.027909022, 0.028400708, -0.002658908, -0.04631212, 0.027651472, -0.0033861932, 0.032123473, 0.00033894856, -0.030788897, -0.008633768, -0.0015555416, 0.041348435, 0.02685541, -0.026293483, 0.019058678, 0.024818426, 0.084804095, -0.0108053805, -0.0043315175, 0.05895547, -0.0036408163, -0.0009562996, -0.011894113, -0.023074111, -0.03872611, -0.0737997, 0.017712396, -0.009412271, 0.04916858, 0.054225918, 0.030718654, 0.028962635, 0.050245605, -0.025567662, -0.023870174, 0.016178804, 0.002947188, -0.030390864, 0.01596808, 0.006081685, -0.05216552, 0.011782899, -0.015651997, -0.035705753, -0.019082092, 0.0135564795, 0.026644686, 0.038538802, -0.015406155, -0.03900707, -0.051931385, -0.030203557, -0.046148222, -0.012362385, -0.0025842772, 0.040833335, 0.0064680097, -0.021165902, -0.0048729572, 0.0019082092, -0.0028462168, 0.0029354813, 0.016506594, -0.012210197, 0.036548644, 0.018309442, -0.0007269194, 0.019772792, -0.03392632, 0.035846237, -0.0046066274, -0.0026779315, -0.01133804, 0.03231078, 0.029899178, -0.011572177, -0.0063392348, 0.017162176, -0.039475344, 0.024420394, 0.012900898, -0.0066670254, 0.022980457, -0.02154052, -0.05675459, -0.030180141, 0.032474674, -0.052774277, 0.008563528, 0.009189841, 0.044860475, 0.036361337, -0.033247326, -0.027253442, -0.010015171, 0.018742595, -0.013814029, 0.013849149, -0.018286029, 0.022137567, 0.007960627, -0.027510991, -0.019831328, 0.08686449, 0.017642155, -0.07253536, -0.016530007, -0.016424647, 0.006707999, -0.017501673, 0.022242928, -0.021189317, -0.01897673, 0.01615539, -0.014024752, -0.03373901, -0.026831996, 0.02491208, 0.0146803325, 0.06349771, -0.0022725835, 0.011185852, 0.01802848, 0.02582521, 0.013755496, 0.019222572, -0.00817135, 0.02575497, -6.6033695e-05, -0.023753107, 0.016436353, 0.01751338, -0.015125192, -0.011361454, 0.0005780235, -0.050386086, -0.007884533, 0.022336584, -0.065277144, -0.03399656, 0.04930906, -0.004738329, 0.0049783187, -0.02300387, 0.032427847, 0.044017587, 0.007978187, 0.06686927, 0.040435303, -0.000115421775, 0.047506213, -0.038093943, 0.012690176, -2.1893096e-05, 0.015733946, 0.008891318, -0.024748186, 0.03729788, -0.01586272, -0.011267799, -0.013673548, -0.03128058, 0.01163071, 0.040599197, 0.02608276, 0.008908878, -0.029875765, 0.008698156, 0.004995879, 0.0337156, 0.01787629, 0.07586009, -0.027347095, -0.024865253, 0.058112577, -0.023729693, 0.052727446, -0.0325215, -0.030133314, 0.029056288, -0.006602638, 0.015616877, 0.0033335127, -0.019960102, -0.019456709, 0.024233086, -0.012257025, 0.0023896515, -0.041816704, -0.030976204, 0.022734614, 0.029805524, -0.03198299, -0.017677275, -0.027628059, -0.035893064, -0.014539851, 0.021880018, 0.09946101, -0.058018923, -0.052446485, -0.055911697, -0.029009461, -0.027581232, -0.011987768, 0.0110980505, 0.0093888575, -0.05183773, -0.024420394, -0.038374905, 0.00039400713, -0.0215054, -0.022324877, -0.008897171, -0.04724866, 0.027510991, -0.0170334, -0.0025901305, 0.006257287, -0.033645358, -0.0043724915, 0.04268301, 0.0003663864, -0.020205945, -0.01249116, -0.027253442, -0.0013418925, -0.007825999, -0.01692804, -0.010647339, -0.018578699, -0.04776376, 0.01605003, 0.015558343, -0.018847955, -0.017887997, -0.0827437, -0.021446865, 0.04462634, -0.003075963, 0.021025421, 0.067056574, 0.016658783, 0.0076738102, 0.007697224, 0.037649084, -0.06832091, 0.037649084, 0.030250384, 0.0074279676, -0.005191968, -0.05169725, -0.0069596954, -0.034745798, 0.02326142, -0.0075450353, 0.055115636, 0.002149662, -0.005042706, 0.00568658, -0.020194238, -0.0023106306, -0.009716648, 0.028330468, -0.051556766, 0.011741925, 0.024888666, 0.014656919, 0.004668088, -0.044158068, -0.03807053, -0.060032494, -0.0054787844, -0.008838638, 0.028213399, -0.022769734, -0.0144696105, -0.028026091, -0.004416392, -0.04565654, 0.02978211, -0.032802466, -0.009043506, 0.0424957, 0.005148067, 0.014235474, -0.002512573, -0.004562727, -0.020826405, 0.012982846, -0.02886898, -0.0271832, 0.049590025, -0.013755496, 0.002500866, -0.05520929, 0.009394711, -0.0066319047, 0.01557005, 0.077218086, 0.0076738102, 0.001471399, 0.008862051, -0.017489966, 0.032146886, 0.0065148366, -0.065043, -0.03476921, -0.00425835, 0.0048788106, 0.024350153, -0.050105125, 0.03106986, 0.0040300675, 0.014083286, -0.0010667825, 0.022758028, -0.012034595, 0.012022888, 0.025872039, -0.0001818213, 0.014586679, 0.048559826, 0.020522028, 0.014106699, 0.0017311437, 0.020077169, 0.006327528, 0.00650313, -0.033106845, -0.018543579, 0.016693903, -0.0059236432, 0.0063333814, 0.009628846, -0.026246656, -0.050526567, 0.045188267, 0.042144496, 0.031608373, 0.01271359, 0.0037081304, -0.0005176603, 0.00010298329, 0.0079547735, -0.009792742, -0.02128297, 0.029735284, -0.010577098, -0.04659308, 0.0013367707, -0.0071235904, 0.057831615, 0.038913418, 0.0029164576, -0.020241065, -0.019421589, -0.03605696, -0.025310112, -0.032498088, -0.02971187, 0.012690176, 0.008054282, 0.022465358, -0.029992834, 0.04462634, 0.046031155, 0.0311401, -0.016787557, -0.0031988844, -0.0045393133, -0.006169486, -0.04949637, 0.016682196, -0.0012277511, 0.0056631668, 0.017080227, 0.026551032, 0.010161506, 0.025591075, 0.024537463, -0.007919653, -0.031163514, -0.016611956, -0.061343655, -0.008563528, -0.013989631, 0.016576836, 0.02608276, 0.006081685, 0.02377652, -0.013802323, -0.0021350284, -0.020767871, -0.008522553, -0.07515769, -0.034113627, -0.031257167, -0.009675674, -0.016143683, 0.0049607586, 0.027417336, 0.0033627795, -0.050011467, 0.036103785, 0.0028871908, -0.012327265, -0.017829463, 0.01194094, 0.0063919155, -0.050386086, -0.041114297, -0.017852876, -0.049636852, 0.0007587473, -0.022043914, 0.007170418, 0.010729287, -0.008376218, -0.019398175, 0.042589355, -0.021938551, 0.008253297, 0.03341122, -0.024818426, -0.017969945, -0.03282588, 0.015979787, 0.014633506, 0.014176941, -0.0180636, 0.00044778528, 0.03704033, -0.0011816556, 0.010893182, 0.035658926, 0.0033452194, -0.0311401, -0.016003203, 0.018473338, 0.04432196, -0.032498088, 0.015839307, -0.0041149417, -0.024162844, -0.023659453, 0.01663537, -0.082041286, 0.026714928, 0.039405104, 0.0026486646, 0.022488771, -0.010717579, 0.024935493, 0.00652069, 0.011121464, -0.007463088, -0.014247181, 0.018812835, 0.025333526, 0.030976204, 0.0150549505, -0.010015171, -0.007480648, -0.00088679045, 0.008551821, -0.048747133, -0.02472477, 0.03900707, 0.070521794, -0.038445145, 0.010407349, 0.02523987, -0.03224054, -0.01469204, -0.007176271, 0.051416285, 0.012058008, -0.01622563, 0.0158276, -0.058299888, 0.014610092, 0.008001601, -0.012549695, -0.007872826, 0.070240825, 0.012444333, 0.011460962, 0.00096361636, -0.013825736, -0.008305978, -0.008019161, 0.03313026, -0.035331137, 0.019597191, -0.012081422, -0.0113556, 0.01897673, -0.040458716, 0.01842651, 0.008797663, 0.068929665, -0.0013184788, 0.010910742, 0.041863535, -0.009763475, -0.015289087, 0.020533735, -0.009500072, -0.05806575, -0.014094993, 0.021329798, -0.009839569, -0.028705085, -0.04027141, 0.022242928, 0.0064855698, -0.009985904, 0.012034595, -0.043760035, 0.006690439, 0.014399369, -0.010799527, 0.0059880307, 0.0133457575, 0.008522553, 0.0012592132, -0.032989774, -0.0014274985, -0.008961559, -0.052259177, 0.017244123, -0.064387426, 0.034347765, -0.0099098105, 0.00566902, -0.04425172, -0.0025345231, -0.00039400713, 0.014832522, -0.007972334, -0.013170155, 0.02542718, 0.04034165, 0.029641628, -0.007504062, 0.017372899, 0.05600535, -0.007960627, -0.011103904, 0.007919653, -0.008311831], [-0.009108628, -0.023058455, 0.0005842312, 0.06062856, -0.0077220127, -0.031772617, -0.015444025, 0.07755483, 0.007931201, 0.06780071, 0.012252419, -0.028138727, -0.019520197, -0.019137682, -0.014033503, 0.055416796, -0.01986685, 0.008212109, 0.0067717033, -0.01679478, -0.015444025, -0.018408513, -0.04260256, -0.0203689, -0.014009596, 0.019747315, -0.04434778, 0.004733618, 0.0039237626, -0.01191772, 0.036338884, 0.017978184, 0.031796522, -0.04267428, -0.006087361, -0.011003271, -0.022592267, 0.033900354, -0.0016391347, 0.047694784, -0.06789634, -0.016268823, -0.0054329024, -0.020715555, 0.004706722, -0.007465011, 0.008869557, 0.022926968, -0.0082659, -0.062110804, -0.012563213, 0.018169442, -0.031557452, -0.0105848955, -0.0287125, 0.014021549, 0.023261666, -0.0076443143, 0.03779722, -0.009766075, -0.07205618, 0.05226105, 0.093476996, 0.0004463915, -0.03959026, 0.023417063, -0.0004796374, 0.043582752, 0.024791725, 0.053838924, 0.0207036, 0.03576511, 0.018838841, -0.022986734, 0.0038699715, -0.0064370027, 0.088599935, 0.02651304, 0.0025999036, -0.062110804, 0.0353826, -0.0030421861, 0.005719788, 0.0074709877, 0.039183836, 0.02517424, -0.00082180864, -0.12699483, -0.0049188985, -0.04905749, 0.01865954, -0.03115103, 0.000975711, -0.033900354, -0.02887985, 0.032370295, -0.028258264, 0.008367506, -0.005621171, 0.018002091, -0.018623678, -0.04779041, -0.07693324, -0.065601245, 0.045590956, 0.03308751, 0.008463135, 0.014678996, -0.031222751, -0.04190925, 0.033517838, -0.023668088, -0.033493932, 0.044754203, -0.020153737, 0.057377186, -0.016017796, -0.030457722, -0.009837797, 0.016866501, -0.096871816, -0.067418195, 0.04133548, 0.032633275, 0.04202879, -0.016555708, -0.05010941, 0.05498647, 0.005764614, -0.010058938, -0.027708398, 0.0045961514, 0.01759567, 0.02954925, 0.07301247, 0.02280743, 0.06421463, -0.029501436, -0.014786579, 0.017272923, -0.08807398, 0.024696097, 0.011457507, 0.05111351, -0.0026985207, -0.02180333, -0.026871648, 0.0007956602, -0.047933858, -0.025150333, 0.00037541712, -0.00582737, -0.016316637, -0.0031198845, 0.0717693, -0.019950526, -0.02063188, 0.02427772, -0.009425398, 0.016711105, 0.04905749, -0.020655787, -0.0039237626, 0.02567629, -0.011290156, -0.009431375, 0.050157223, -0.009532981, -0.0474079, 0.035812926, 0.058572542, -0.049774706, 0.008702206, -0.0076801754, -0.036601864, 0.04621254, 0.030386, -0.030409908, 0.0011146714, -0.030983679, -0.009640562, 0.07860674, 0.04881842, -0.05001378, 0.004135939, 0.036936563, 0.026560854, 0.016974084, 0.020548204, -0.072869025, 0.010823967, 0.0076562683, -0.035956368, -0.018743213, -0.01213886, 0.011642787, -0.00646091, 0.014726811, 0.008977138, 0.044323877, 0.02109807, -0.051304765, 0.022891106, -0.016711105, -0.0025461125, -0.0035591784, 0.036984377, 0.05331297, 0.01065064, 0.0067896335, 0.003699633, -0.009527003, 0.021145884, 0.0283778, -0.011027178, 0.03755815, -0.043989174, 0.014977836, -0.011816114, -0.033254858, 0.03896867, -0.02440921, -0.0044766157, -0.038179737, -0.018743213, 0.016185148, 0.012043232, -0.011218435, 0.033972073, 0.016567662, -0.0470732, -0.01048329, -0.04226786, 0.007990968, -0.06894825, -0.007990968, -0.004109043, -0.033517838, 0.056803413, 0.0048800493, -0.019185496, 0.06536218, -0.03959026, 0.0053073894, -0.048890144, 0.0056779506, 0.06961765, -0.015563562, 0.007249846, 0.024433117, -0.024098417, -0.02821045, 0.009801935, 0.034043796, 0.037749406, 0.044802018, 0.041646272, -0.039422907, -0.015396211, 0.02651304, -0.0112483185, 0.01048329, -0.028640779, 0.06129796, -0.02634569, -0.024122324, -0.009993193, -0.04910531, -0.025102518, -0.01806186, 0.05885943, -0.009784006, 0.030696794, 0.007799711, 0.055416796, 0.015348397, 0.05025285, 0.011254296, -0.029071108, 0.06330616, 0.012945727, 0.027732305, 0.0751163, 0.0016047681, -0.0062517226, -0.009228164, -0.028999384, -0.03653014, -0.07306028, -0.015121279, -0.0072199623, -0.006550562, 0.047264457, 0.020739462, 0.04437169, 0.02787575, 0.027660584, -0.013615128, -0.09476798, 0.056086197, -0.021157837, 0.04100078, -0.042124417, -0.0330636, -0.016914316, 0.031868245, -0.0135434065, 0.05790314, 0.0031945943, 0.03753424, 0.07162585, -0.047240548, 0.0030377035, -0.026321784, 0.011308087, -0.025556754, 0.015037604, 0.0042375443, 0.087165505, -0.05689904, 0.016974084, -0.017834742, -0.07019142, -0.010931549, 0.019412614, 0.0028031145, -0.01178623, -0.015898261, -0.035454318, 0.021994587, -0.04446732, -0.026656484, 0.016388359, 0.02066774, -0.055799313, -0.055082098, 0.03999668, -0.004380987, -0.008779905, -0.0104474295, 0.011308087, 0.026728205, -0.016699152, 0.0058602425, 0.057568442, -0.0032424086, -0.024014743, -0.0048292466, 0.037342984, -0.0014142579, 0.0013664436, 0.03997277, -0.0018199326, 0.048866235, 0.04023575, -0.03949463, 0.028282171, -0.014977836, -0.039781515, -0.035980277, 0.024480931, -0.032107316, -0.0058303587, 0.019544104, 0.019328939, -0.020010293, 0.020225458, 0.015444025, 0.0075606396, -0.004416848, -0.03115103, 0.03753424, -0.055177726, -0.007423173, -0.03509571, 0.002813574, 0.027732305, 0.005800475, -0.022161938, 0.0014142579, -0.0023608322, -0.085635446, -0.06096326, 0.048364185, 0.08085401, -0.003048163, -0.035573855, 0.018623678, 0.015934123, 0.0042554745, 0.0018438398, 0.04487374, -0.0323942, -0.01672306, 0.019125728, 0.02517424, -0.05565587, 0.036004182, 0.0069330763, 0.0016301695, -0.018671492, 0.015874354, -0.032107316, -0.02120565, 0.016280776, -0.07267777, 0.027325884, -0.04123985, 0.009359653, 0.015348397, -0.01696213, 0.0060993144, -0.02033304, 0.041885346, 0.020512344, 0.005758637, -0.014212807, -0.040857337, 0.012551259, 0.026058804, 0.021253465, 0.002292099, -0.04420434, 0.060915444, -0.01632859, 0.005038434, -0.031868245, 0.039040394, 0.004461674, 0.027301976, -0.028186541, 0.024504839, -0.00021310992, -0.01729683, -0.015384258, -0.02223366, -0.0161971, -0.020775322, -0.04276991, 0.0056600203, -0.0021949762, -0.042243954, -0.010710408, 0.013017449, -0.027062906, 0.036745306, -0.05111351, -0.04250693, 0.056564342, -0.029357992, -0.054603953, -0.023046503, -0.06870918, -0.029740507, 0.009527003, -0.029883951, 0.00999917, 0.00709445, 0.06239769, -0.047623064, 0.028736407, -0.014810486, 0.049870335, -0.0028494347, 0.04303289, 0.030935865, -0.02100244, 0.04690585, 0.015467932, 0.037677683, -0.047694784, 0.001005595, 0.014200853, 0.0054418673, 0.05125695, -0.029764414, -0.019807082, 0.0300513, 0.0057227765, 0.034163333, 0.008283831, -0.01502565, 0.048961863, 0.03688875, -0.005600252, -0.024289675, 0.025724104, 0.056277454, 0.08836086, 0.05398237, -0.044156525, 0.03335049, 0.05202198, 0.009527003, -0.016842594, -0.050826624, 0.012431723, -0.07095645, 0.0022069297, -0.0584291, 0.012850098, 0.046714593, 0.0118699055, 0.013794431, -0.03055335, -0.020990487, -0.0387296, -0.021432769, -0.007225939, 0.030075207, -0.0066521675, -0.0065923994, -0.03959026, -0.0012035761, -0.06297146, 0.0207036, 0.0015039098, 0.01659157, 0.0035412482, 0.0155396545, 0.015575515, -0.01672306, -0.016209055, -0.016997991, -0.023608321, -0.015623329, 0.012252419, 0.007955108, 0.03208341, -0.006550562, -0.0026641542, 0.017380506, 0.00079117756, -0.042339582, 0.0012252419, 0.012551259, 0.011881859, 0.012383909, 0.013579267, 0.005423937, -0.038275365, 0.050683178, -0.00983182, 0.022114124, -0.013878106, 0.007716036, 0.04418043, 0.018157488, -0.010100775, 0.009503096, -0.024624376, 0.023369249, 0.028569056, -0.014870253, 0.017009944, -0.03425896, -0.036195442, -0.01213886, -0.034211148, -0.018838841, 0.00020825378, 0.011069016, 0.10710408, 0.049870335, 0.0021531386, -0.04410871, -0.0037743428, -0.00951505, 0.0017198214, 0.010686501, 0.013495592, 0.003057128, -0.012013348, -0.038179737, -0.0029256388, 0.04637989, 0.042793818, -0.02096658, 0.010154567, -0.017272923, -0.043248054, 0.0011154185, 0.026991185, -0.046499427, 0.0017646473, -0.0077459197, 0.0027358755, -0.038944766, -0.010513173, 0.01672306, 0.010208357, 0.031939965, 0.022687895, -0.031461824, 0.022819385, 0.03292016, 0.044825926, 0.0011027177, 0.017009944, 0.019711453, -0.02483954, -0.012360002, 0.008821742, -0.022401009, -0.034306776, -0.014021549, 0.036936563, -0.034211148, 0.0293819, 0.019591918, -0.06904388, 0.004844188, 0.013328242, -0.041837532, 0.0041568573, -0.031270567, -0.005603241, 0.050730996, 0.011977487, 0.045064997, 0.031844337, 0.007070543, 0.044084802, -0.026943369, 0.035478227, -0.007668222, 0.014774625, 0.0067238887, 0.008839672, 0.009622632, 0.011481414, -0.009054837, -0.016077565, -0.01910182, 0.008439228, 0.0093477, 0.004046287, -0.0041927183, -0.02997958, -0.001558448, 0.041048594, 0.034928363, -0.020070061, 0.1302462, -0.02050039, -0.034163333, 0.0046409774, 0.021193698, 0.04537579, -0.045853935, -0.053265154, 0.022197798, -0.01863563, 0.039136022, -0.021241512, -0.03576511, -0.020261317, 0.005029469, -0.010321916, 0.030457722, -0.025485033, -0.08726113, 0.0055912873, 0.016149286, 0.006550562, -0.011624857, -0.013364103, 0.0058751847, 0.015372304, 0.039518535, 0.06387993, -0.02217389, -0.05489084, -0.018647585, -0.031246658, -0.022926968, 0.016005844, 0.03930337, -0.03820364, -0.023990836, -0.023118224, -0.054364882, -0.031294473, 0.0070406585, -0.02634569, -0.015754819, -0.020847043, -0.005528531, -0.028640779, 0.012646887, 0.02660867, -0.05154384, -0.013077216, 0.027134627, 0.028282171, -0.0063652815, -0.010041008, -0.0053731343, -0.0061680474, 0.027373698, -0.009042883, -0.04446732, 0.020894859, -0.05135258, 0.042554744, 0.047742598, -0.002202447, 0.019113775, -0.031605266, -0.035956368, 0.03162917, -0.007799711, 0.02550894, 0.04470639, -0.011726462, 0.033135325, -0.005680939, 0.04487374, -0.051878538, 0.0047097104, -0.012108977, -0.007309614, 0.013471684, -0.030338187, 0.019711453, -0.020894859, 0.031533543, -0.0007332774, 0.04226786, -0.0011512792, -0.012431723, -0.008128434, -0.038657878, 0.0026043863, -0.00804476, -0.020177644, -0.025437219, -0.007512825, 0.06966546, 0.028616872, 0.015049557, -0.014033503, -0.017655438, -0.0340677, -0.02016569, 0.00662826, 0.013734664, -0.009264025, 0.0148583, -0.020082016, -0.00606943, -0.05101788, 0.034282867, -0.017846696, 0.0030466688, 0.020679694, 0.011326017, 0.0022517557, -0.0032543621, -0.010256172, 0.0037922733, 0.018014045, -0.017284878, -0.043582752, 0.02474391, -0.00015315524, -0.038753506, -0.029334085, 0.024480931, 0.029095015, 0.03375691, 0.028592963, -0.021241512, 0.01646008, -0.04755134, 0.0025670314, 0.023357296, 0.008331645, -0.023094317, -0.05077881, -0.015898261, 0.0146431355, 0.03148573, 0.0036966447, 0.027301976, 0.022496637, 0.011881859, 0.024468979, -0.010393638, -0.012162767, 0.04487374, 0.035310876, -0.0048591304, 0.008923348, 0.03789285, 0.002208424, 0.028569056, -0.02921455, 0.03411552, 0.0042943237, 0.0135434065, -0.043654475, 0.00938356, 0.020022247, -0.0048531536, 0.010106752, -0.009939402, -0.020954626, -0.03375691, 0.07655073, 0.01672306, 0.020022247, -0.014906115, 0.010112729, -0.020189596, 0.0034964222, -0.034498032, -0.011194528, 0.0121448375, -0.009281955, -0.0014120167, -0.013280427, -0.014212807, -0.012001394, 0.0023937044, 0.046069097, -0.0043989173, -0.0043481146, -0.019651685, 0.0053611808, -0.030864144, -0.045447513, -0.04537579, 0.023010641, 0.006634237, 0.018408513, 0.022532498, 0.05790314, 0.0050593526, 0.027015092, -0.053886738, 0.0009981239, 0.0012603556, -0.018910564, -0.034928363, 0.009449305, -0.014153039, -0.0079013165, 0.0045483373, 0.06397556, 0.028760314, 0.042315673, 0.027158534, -0.019316986, -0.030338187, -0.01096741, -0.03318314, -0.0018438398, -0.00055173243, 0.030768516, 0.012228512, 0.006598376, 0.029238457, -0.037151728, 0.006831471, -0.00061262096, -0.011080969, -0.02734979, -0.037916757, 0.008164295, 0.019938571, -0.007088473, -0.00809855, 0.03770159, -0.001240184, -0.040689986, 0.03820364, -0.0010257666, 0.010094798, -0.0587638, 0.0021964703, -0.006174024, -0.05135258, -0.010142613, 0.0012909867, -0.060150415, 0.025437219, -0.026393505, -0.041144222, -0.0073275445, 0.0077518965, 0.025389405, 0.014272574, -0.024887353, 0.040211845, 0.031437915, -0.06918732, -0.015228861, -0.019054007, 0.03526306, 0.009192303, 0.02327362, 0.0010646157, -0.016448127, -0.012766424, 0.004697757, 0.031437915, 0.025891455, -0.010662594, 0.00028651237, -0.012407816, 0.048125114, 0.0071004266, -0.064071186, 0.0019618813, -0.00964654, -0.028784221, 0.0025984095, 0.0052117608, -0.02887985, 0.029860044, 0.0016182159, 0.02981223, 0.014678996, -0.03612372, 0.019221356, 0.037223447, 0.012491492, -0.040450916, -0.052643567, 0.024959076, 0.023931067, 0.0016316636, 0.012276327, 0.0010803048, -0.002405658, 0.026202248, 0.0038370993, -0.012634934, 0.011314063, 0.0010825461, 0.08491823, -0.021875052, 0.00804476, 0.027684491, -0.03485664, -0.018073814, 0.00068508956, 0.004778444, 0.008182226, -0.004826258, 0.079323955, -0.0207036, -0.0036876795, 0.032442015, -0.016890408, -0.0037713544, 0.029142829, 0.013794431, 0.011379808, 0.01843242, -0.04535188, -0.047623064, 0.006688028, 0.014164993, -0.036004182, 0.04661896, 0.0042853584, -0.011367855, 0.022616174, -0.020560158, 0.013961782, 0.007984991, 0.026680391, 0.003669749, 0.028019192, 0.031103216, -0.026154432, -0.038849134, 0.031939965, 0.021014394, -0.04353494, 0.0052356683, -0.00079192466, 0.00955091, -0.048483722, -0.0055793338, 0.017249016, 0.02113393, -0.013579267, 0.034139425, -0.041598458, -0.032800622, -0.008761974, -0.0029704648, 0.00054052594, 0.008056713, 0.0016451115, 0.0012678267, -0.03411552, -0.014535554, 0.0030317267, -0.022197798, -0.010094798, -0.038514435, 0.038108014, -0.020476483, -0.01712948, -0.039422907, 0.018348746, 0.008672322, 0.041574553, -0.0005352963, 0.0050055617, 0.020894859, 0.06823104, 0.05001378, -0.03368519, -0.020918766, 0.052213237, 0.0104474295, -0.012443677, -0.017990138, -0.0027792074], [-0.03469449, -0.017764954, -0.012912149, 0.06309876, -0.028748266, -0.0215612, -0.049977757, 0.036119618, 0.0024233314, 0.052090876, -0.02197891, -0.021315489, -0.02521002, -0.010756029, 0.01702782, 0.0012976648, -0.02175777, 0.022556333, -0.012132014, -0.0015955903, 0.0047514495, -0.037520174, -0.011376451, -0.002262083, -0.027593423, 0.01775267, -0.04014929, 0.017506957, 0.007991772, 0.02063978, 0.026561433, 0.0119231595, 0.00794263, -0.00699664, -0.019067226, 0.03071396, 0.0067632142, 0.036291614, 0.057545677, 0.042139553, -0.07936487, -0.029731113, -0.03953501, -0.034448776, -0.04395782, 0.0011886302, 0.008673622, -0.007844346, -0.027003715, -0.05828281, -0.009736326, 0.01418985, -0.04221327, 0.00038411646, -0.021634914, 0.028232273, 0.05194345, -0.030517392, 0.03194252, -0.003436892, -0.046365794, 0.0625582, 0.065850735, -0.008962333, -0.017900096, 0.015811548, 0.016941821, 0.01872323, 0.03469449, 0.0744015, -0.026659718, 0.034203067, -0.0042845975, 0.00323418, 0.014767272, -0.039633293, 0.046881787, -0.00026433202, 0.029780256, -0.014902414, 0.039829865, -0.036733896, -0.0040388857, -0.023096899, 0.015799262, 0.0020562997, 0.049166907, -0.108702846, -0.006413075, -0.03508763, 0.020676639, 0.0035966048, 0.034350492, 0.0014896271, -0.004932662, 0.032089945, -0.04437553, 0.018440662, -0.024055174, 0.016573252, -0.0036887466, -0.0529263, -0.07936487, -0.063393615, 0.04059157, 0.023281181, -0.0032710368, 0.00035608996, -0.015160411, 0.021831483, 0.013722997, -0.037028752, -0.011824875, 0.0151112685, -0.012439154, -0.008311198, 0.016057258, -0.015578121, 0.008581481, -0.017396387, -0.10821143, -0.08850535, 0.07867688, 0.05656283, 0.047692638, -0.0067140716, -0.011468593, 0.04307326, 0.0064437888, -0.007426636, -0.031205384, -0.004256955, 0.0202835, 0.022789758, 0.05798796, 0.022912614, 0.0529263, -0.01702782, -0.049019482, -0.0024264029, -0.05867595, 0.04037043, 0.0054486566, 0.040296715, -0.0021069776, -0.0066035013, -0.021966625, -0.009742469, -0.030763103, -0.016757537, -0.023023184, -0.058184527, -0.03199166, 0.009398472, 0.050100613, 0.008274341, 0.012531295, 0.0051845163, -0.005976937, 0.013784425, 0.046365794, -0.066587865, -0.01966922, 0.0431224, 0.007881202, -0.023465466, 0.052533157, -0.007973344, -0.043441825, 0.03513677, -0.0008960798, -0.019742934, 0.02030807, 0.011886302, -0.004281526, 0.011124596, 0.039805293, -0.012537438, 0.0034031067, -0.06147706, -0.0352842, 0.07425407, 0.07956144, -0.017408673, -0.018010667, 0.019693792, -0.010774457, 0.02395689, 0.036316186, -0.0824117, -0.019964075, 0.011867874, -0.036955036, -0.004978733, -0.014632131, 0.0036672468, -0.039019015, -0.007795203, 0.01925151, 0.014668987, 0.0040481, -0.060248505, 0.012476011, -0.012107443, -0.021118918, 0.007230066, 0.04855263, 0.011511592, 0.021438343, 0.0011103096, 0.015086697, -0.0068369275, 0.005178374, -0.0030836817, -0.03828188, 0.01850209, -0.03975615, -0.00446581, -0.036881324, -0.04373668, 0.01460756, -0.012218013, -0.027667135, -0.020222072, 0.0004434328, 0.032753367, 0.02609458, 0.008587623, 0.019681506, -0.028502556, -0.059216514, -0.02946083, -0.03071396, -0.0071686385, -0.07666205, -0.0061182207, -0.026635146, -0.026807144, 0.07174781, -0.012334727, -0.005623726, 0.024558883, -0.055579983, -0.030296251, -0.0047084503, 0.041795556, 0.048822913, -0.06078907, -0.0025139377, 0.03535791, -0.028895695, -0.02017293, -0.020258928, 0.06634215, 0.00699664, 0.05656283, 0.047643494, -0.0242026, -0.024878308, 0.025185447, -0.04371211, 0.026733432, -0.0663913, 0.047397785, 0.03191795, -0.005193731, -0.022912614, -0.062951334, -0.066489585, 0.007377493, 0.04862634, -0.025124019, -0.0151235545, -0.0021376917, 0.021856055, 0.01031989, 0.052238304, 0.056808542, -0.00994518, 0.05105889, 0.0062011485, 0.05155031, 0.030419106, 0.026020868, -0.017494671, -0.005599155, -0.006953641, -0.027470566, -0.051894307, -0.010700744, -0.008950048, -0.035456195, 0.047815494, -0.013403572, 0.016266113, 0.02754428, -0.01663468, -0.008710479, -0.06265648, 0.04734864, -0.039485868, 0.007469635, -0.01418985, -0.021475201, 0.027077427, 0.038306452, 0.008212913, 0.054449707, -0.009324758, -0.017789526, 0.10447661, -0.027224854, -0.010074179, -0.007033497, -0.0062226485, -0.021057492, 0.031377383, 0.0048804483, 0.08771907, -0.017162962, -0.0024955093, -0.03825731, -0.06879927, -0.021401487, 0.02167177, -0.0042753834, -0.043245256, -0.014582989, -0.025775155, 0.02231062, -0.08894763, -0.0072792084, 0.009140475, 0.035652764, -0.057152536, -0.04926519, 0.022740616, -0.044965237, -0.0037194607, -0.03683218, 0.01661011, 0.03808531, -0.000115849216, 0.0021085134, 0.0431224, -0.040935565, 0.010197035, 0.0056513688, -0.004017386, 0.024116602, 0.0014827164, 0.013698426, 0.0039498154, 0.0175561, 0.01176959, -0.03535791, 0.00014013244, -0.0058080098, -0.03282708, 0.013329859, 0.057250824, -0.030763103, 0.0012669509, 0.047446925, 0.031229954, -0.012132014, -0.02353918, -0.0038361736, 0.014693558, 0.019792076, -0.035013914, 0.038036168, -0.0038423163, -0.0046255225, -0.015516693, -0.04162356, 0.061034784, -0.016352113, -0.043859534, 0.01808438, -0.007881202, -0.05105889, -0.017519243, 0.004174027, 0.058184527, 0.012985863, -0.05489199, 0.011321166, 0.026733432, -0.00010308373, 0.016880393, 0.02670886, 0.00079549156, -0.00083849113, 0.023993745, 0.020971492, -0.05906909, 0.070961535, 0.016941821, 0.009103618, -0.040960137, 0.035800193, -0.0580371, -0.055678267, 0.03304822, -0.043269828, 0.0097178975, -0.045186378, 0.012961292, 0.056464545, 0.004358311, 0.045874372, 0.008507767, 0.031795092, 0.046586934, -0.0030836817, 0.008176057, -0.017175246, -0.01927608, 0.00076055445, 0.03412935, 0.005445585, -0.04813492, 0.07361522, -0.022322906, -0.0063086473, -0.006941355, -0.002842577, -0.01997636, -0.002985397, -0.002862541, 0.024153458, -0.021598058, -0.008685908, -0.02567687, -0.007905774, -0.015037555, 0.0035013915, -0.00063385937, 0.03594762, 0.006253362, -0.059462227, 0.020369498, 0.0067447857, -0.006234934, 0.020762637, -0.058970805, -0.03135281, 0.04749607, -0.018219521, -0.051648594, 0.019853504, -0.05464628, -0.046955504, 0.035628196, -0.024755452, -0.013391287, -0.0068123564, 0.036119618, -0.06781642, 0.034252208, 0.019005798, 0.056661114, -0.0007413582, 0.03992815, 0.0031097885, -0.023625178, 0.052041736, 0.013907282, 0.023883175, -0.03872416, 0.035480767, -0.031205384, 0.010774457, 0.03658647, -0.015320123, -0.017408673, 0.005933937, -0.011702019, 0.020799493, -0.008507767, -0.04599723, 0.014890128, 0.016880393, 0.018121237, -0.022568619, 0.052287444, 0.038011596, 0.05636626, 0.007058068, -0.043097828, 0.024841452, 0.013317573, 0.028109416, -0.020799493, -0.05174688, 0.0017660527, -0.051599454, -0.02000093, -0.004613237, 0.014570703, 0.033121936, 0.037495602, 0.027151141, -0.009238759, -0.056464545, -0.046808075, -0.041721843, 0.012175014, 0.014214421, 0.012445297, -0.021389201, -0.055432554, -0.009330901, -0.04142699, -0.013858139, -0.012488296, 0.025603157, -0.019706078, 0.029706543, 0.0050370893, -0.01975522, -0.0391173, -0.01471813, -0.04626751, -0.03113167, 0.028158559, 0.02367432, 0.037348177, -0.025996296, 0.025775155, -0.0039098873, -0.007623205, -0.028133988, 0.027470566, -0.0056513688, -0.0059677223, -0.0151235545, -0.00027162657, 0.020836351, -0.012439154, 0.013415858, -0.008796479, 0.042016696, -0.038355593, 0.03722532, 0.05862681, -0.03557905, -0.018452948, 0.020799493, -0.014324991, 0.07219009, 0.006505217, 0.011333452, 0.014951556, -0.04670979, -0.058184527, -0.02712657, 0.0067140716, -0.010332176, -0.004987947, 0.010958741, 0.10663887, 0.028502556, 0.0013698427, -0.0392893, -0.002715114, 0.0034184637, 0.0020962278, 0.023268897, 0.007991772, 0.033760786, -0.007856631, -0.022163194, -0.026561433, 0.05764396, 0.015332409, 0.00336625, 0.013968709, 0.0043398826, -0.0418447, -0.020541497, -0.002751971, -0.0529263, 0.027028285, -0.011775732, 0.019939503, -0.04815949, -0.016868107, 0.03619333, 0.0070089255, 0.0431224, 0.02963283, -0.0013283788, -0.0010043465, 0.013329859, 0.039191015, -0.025382018, 0.007948773, 0.035235055, -0.018588088, -0.03304822, 0.00011508137, -0.002873291, -0.008133057, -0.04540752, 0.010534888, -0.03727446, 0.017187532, -0.001632447, -0.10034865, 0.02946083, 0.022077195, -0.030173395, -0.01588526, -0.029681971, -0.017285816, 0.043613825, 0.050370894, 0.060641643, 0.033564217, -0.00567594, 0.03847845, -0.014374133, 0.040935565, -0.029043121, -0.009822325, 0.02367432, -0.0038791732, -0.016266113, -0.00032883135, -0.010700744, -0.04034586, -0.011007884, 0.023502322, -0.0012654152, 0.015516693, -0.01504984, -0.010043465, 0.030517392, 0.017076962, 0.03850302, -0.00882105, 0.07376265, -0.021745484, -0.009343186, -0.0071133533, 0.008200628, 0.041770987, -0.03282708, -0.05764396, 0.028453413, 0.009238759, 0.042581834, -0.005040161, -0.027052857, -0.024190316, 0.012267156, -0.032483086, 0.036660183, -0.03304822, -0.07803803, -0.004204741, 0.010866599, 0.030222537, -0.019398937, -0.039461296, -0.02331804, 0.0024893666, 0.015455265, 0.06865185, -0.043024115, -0.0564154, -0.0023588322, -0.0029162904, -0.020406356, 0.014349562, 0.029043121, -0.042311553, -0.043466397, -0.021389201, -0.042188697, -0.02921512, 0.009748611, -0.026610576, -0.0029485403, -0.050567463, 0.022617761, -0.05464628, 0.00034169282, 0.02923969, -0.07066668, -0.0037010321, 0.017298102, 0.010491889, 0.016474968, 0.0019288367, -0.016978677, 0.023096899, 0.021376917, -0.0039805295, -0.038109884, -0.012703294, -0.03978072, 0.032311086, 0.03828188, -0.0049848757, 0.007899631, -0.027495136, 0.0031573952, 0.039485868, -0.0063086473, 0.008495482, 0.054744564, 0.008538481, 0.03744646, -0.010590173, 0.021598058, -0.045309234, 0.0215612, -0.0071870666, -0.009797754, -0.014484704, -0.009883752, 0.028305985, -0.023330323, 0.022040337, -0.0062472196, 0.05361429, -0.0031405024, -0.002079335, 0.0032986794, -0.019804362, -0.019472651, -0.004428953, 0.0036027476, -0.0066096443, -0.015934402, 0.05007604, 0.0021960482, 0.038675018, -0.017150676, -0.03742189, -0.0363899, -0.051206313, -0.019153226, 0.01062703, -0.006554359, -0.012838435, -0.0057035824, -0.02481688, -0.041549847, 0.015467551, -0.015492122, 0.013465, 0.030640246, -0.004035814, -0.0081146285, -0.0008169913, -0.022114052, -0.014398704, 0.0014926984, -0.004714593, -0.040886424, 0.013305288, 0.031377383, -0.032261945, -0.02178234, 0.02818313, 0.048282348, 0.022433477, 0.04292583, -0.031451095, 0.00229894, -0.01115531, -0.0068614986, 0.026217436, 0.03157395, -0.023232039, -0.039485868, -0.02646315, 0.006133578, 0.030173395, -0.015283267, 0.037569318, 0.036045905, -0.015479836, 0.02189291, -0.011652877, -0.019349795, 0.01377214, 0.020492354, 0.012973577, 0.008937762, 0.02457117, -0.017543815, -0.0128998635, -0.04710293, 0.069339834, -0.020762637, 0.010117179, -0.05400743, -0.010326033, 0.03194252, 0.008870192, 0.030025968, -0.014423275, -0.0072177807, -0.025136305, 0.04749607, 0.00089070486, 0.02734771, -0.023612892, 0.026659718, 0.009429186, 0.04813492, -0.025775155, -0.0020685853, -0.01399328, 0.027028285, -0.0027289353, -0.018317806, -0.0061857915, -0.021352345, 0.0023880105, 0.058086243, 0.017482387, -0.0154306935, -0.04034586, -0.012617295, -0.019730648, -0.009613469, -0.036660183, -0.002400296, -0.029952254, 0.03390821, 0.023195183, 0.060887355, 0.010455032, 0.007500349, -0.045088094, 0.005070875, 0.009613469, 0.007967201, -0.024350028, 0.013624713, -0.009810039, 0.00919576, -4.5902972e-05, 0.03258137, 0.0216472, 0.019288367, 0.028133988, -0.01493927, -0.051796023, -0.03258137, -0.03678304, -0.012347012, 0.00036069707, 0.05169774, 0.024239458, 0.019054942, 0.01608183, -0.044596672, 0.00393753, 0.014435561, -0.006105935, -0.038773302, -0.035849333, 0.0018198021, -0.0057342965, -0.0048804483, -0.02364975, 0.01964465, 0.023969175, -0.024853736, 0.025074877, -0.0044565955, -0.0040696, -0.052877154, 0.011136882, -0.036070473, -0.08732593, -0.002882505, -0.045776088, -0.01989036, 0.021573486, -0.027593423, -0.005445585, -0.004100314, -0.0020854778, -0.00021749323, 0.0010688459, -0.05361429, 0.033564217, 0.007893488, -0.017298102, -0.022052623, -0.03641447, 0.010848171, 0.008950048, 0.009564327, 0.002212941, -0.010104893, -0.018440662, -0.0028640768, 0.023391752, 0.035849333, 0.0021453702, 0.019656934, 0.00635779, 0.012617295, 0.02609458, -0.06368847, 0.025799727, -0.036758468, -0.0151112685, -0.0048036636, -0.0076907757, -0.011444022, 0.02756885, -0.024251742, 0.030566534, 0.030517392, -0.05661197, 0.01944808, 0.046464078, 0.014238992, 0.00094829354, -0.041181277, 0.012752436, 0.027249426, 0.023477752, 0.012549724, 0.005660583, 0.027888276, 0.015762404, 0.02114349, -0.010111036, -0.016167829, -0.009177332, 0.0715021, 0.012113586, -0.016966391, 0.03049282, -0.053663433, -0.009502899, 0.015492122, 0.01271558, -0.009103618, -0.0010005073, 0.07848031, -0.038625877, -0.010743744, 0.01430042, -0.034841917, -0.009466043, 0.0109833125, -0.004794449, 0.0063147903, 0.0035321054, -0.03471906, -0.016118687, 0.004825163, 0.0062564337, -0.061722774, 0.021524344, -0.007617062, 0.019620078, 0.029092263, -0.052287444, -0.00972404, 0.045677803, 0.007973344, 0.004272312, 0.02303547, 0.01093417, -0.017040106, -0.063590184, 0.021966625, 0.0076600616, -0.03842931, -0.017900096, 0.0054271566, -0.0041125994, -0.028428841, -0.032065373, 0.0051476597, 0.016376683, -0.014632131, 0.014251278, -0.05739825, -0.04064071, 0.032728795, -0.011468593, -0.010485746, 0.0282077, 0.020824065, 0.019018084, -0.024608025, -0.0073713507, 0.032507654, -0.034375064, 0.01025232, -0.03992815, 0.0647696, -0.008765765, -0.019828932, -0.06521188, 0.034891058, 0.0017076962, -0.005814153, -0.006646501, -0.0112965945, 0.026979143, 0.052877154, 0.03975615, -0.030640246, -0.01966922, 0.09317387, -0.009226474, -0.019202368, -0.023244325, 0.0060936497], [0.029989282, 0.04643359, -0.03552236, 0.055197984, 0.017340666, 0.005798666, -0.00954456, 0.008249819, -0.0070048766, 0.02651451, -0.029236784, -0.017285336, 0.005848463, -0.02717848, -0.005010202, 0.07020369, -0.05170108, 0.018701803, -0.017573055, -0.020074006, 0.0039091194, -0.03981603, -0.07325795, -0.016997615, 0.0070546744, -0.02106996, -0.020284263, -0.00549158, -0.018646473, 0.03218038, 0.016344713, -0.0041110767, 0.018701803, 0.0065843626, 0.005953592, -0.061306503, -0.004000415, -0.015470486, -0.04709756, -0.013766298, -0.034039494, 0.010025937, -0.0056631053, -0.06821179, 0.018015701, -0.003983816, -0.050461672, -0.039882425, -0.02139088, 0.021424077, 0.00173462, -0.014585193, 0.002899333, -0.005129163, -0.051745344, 0.018203827, 0.01632258, -0.08485528, 0.0693184, -0.002940831, 0.0059978566, -0.0017235538, 0.028174432, -0.035942875, 0.035301037, -0.0187682, 0.021545805, -0.0008341115, 0.049133733, 0.004019781, 0.017727982, 0.069052815, -0.010717572, -0.032335307, 0.02518657, -0.027289141, 0.0447294, 0.036695372, -0.027864581, 0.009373034, 0.017871842, -0.025739878, 0.0013991771, 0.02536363, 0.054091368, -0.032512367, 0.017727982, -0.08640455, -0.007453056, 0.013456445, 0.02106996, -0.01934364, 0.024655394, 0.006529032, -0.03848809, 0.0005429333, 0.06387385, 0.026470244, -0.008980186, -0.0038925202, -0.01819276, -0.01350071, -0.051922403, -0.030033547, 0.015138501, 0.0194875, 0.006390705, -0.023128266, -0.042073525, 0.11526508, 0.0026959921, -0.0026088462, -0.04661065, 0.04939932, -0.010064669, 0.070115164, -0.0634312, -0.057101365, -0.020217868, 0.0150831705, -0.046300795, -0.017108276, 0.06639694, -0.0069163474, 0.0025576653, 0.05024035, 0.040236544, 0.0368503, -0.011221082, -0.013888026, -0.02106996, 0.029635165, 0.020461323, 0.002607463, 0.072682515, 0.009068714, 0.06958399, -0.032202512, -0.04163088, -0.027289141, -0.057189893, -0.0060033896, 0.014961443, 0.017916106, -0.028949063, 0.004277069, -0.003618633, -0.028794138, -0.04727462, -0.040900514, -0.02593907, -0.032689426, 0.0016723728, 0.0029325313, 0.030365532, 0.0012283433, 0.041962862, 0.035256773, 0.02317253, 0.015105302, 0.025894804, -0.053781517, 0.013976554, 0.031051634, 0.0062855766, -0.098975696, 0.032711558, 0.002787288, -0.011154685, 0.026735833, 0.055684894, -0.026957156, 0.022563891, 0.019598162, -0.041121837, 0.0043738983, 0.008366014, 0.03286648, -0.020029742, -0.04537124, -0.07927794, 0.0031787532, 0.059491653, -0.0158578, -0.0028772005, 0.017141476, 0.021047829, 0.013434313, 0.0059314594, -0.03368538, 0.026226789, 0.01689802, 0.005322821, -0.024434073, -0.005959125, -0.029059725, -0.013135527, -0.04280389, -0.02872774, 0.0069993436, 0.021280218, -0.060288418, -0.009378567, -0.025407894, -0.004033614, 0.033176336, -0.0005816648, -0.03813397, 0.004470727, 0.0122613, 0.0027222743, 0.004891241, 0.006396238, -0.0044624275, -0.011796522, 0.017196806, -0.028108036, 0.005804199, 0.015503684, -0.06998237, 0.07511707, -0.03600927, 0.023725837, 0.021180622, 0.035787947, 0.023393853, -0.003347512, -0.00448456, 0.011851853, 0.01666563, 0.030365532, -0.045681093, -0.00033319503, 0.012095308, -0.076445006, -0.045127783, -0.016588168, 0.014020819, 0.076931916, -0.044375286, -0.011663728, 0.041431688, -0.05037314, -0.012571153, 0.030498326, 0.03169347, -0.023084002, 0.012460492, -0.01781651, -0.0064903004, 0.02469966, 0.0038454891, 0.076312214, -0.0025493656, -0.033464056, 0.054135635, -0.007845905, -0.021800326, -0.06608708, 0.018214893, -0.030963104, 0.02147941, -0.015249163, 0.07972059, 0.009610957, -0.017528791, 0.025319364, -0.0902113, -0.065157525, -0.048115645, 0.017694782, -0.046212267, 0.0353453, -0.0065677636, 0.054268427, -0.00954456, 0.061217975, 0.00030380057, -0.027731786, 0.02910399, -0.011171284, 0.06883149, 0.00119307, -0.003162154, 0.05187814, 0.05639313, -0.03140575, -0.0317156, -0.061527826, -0.002185566, -0.0026904591, -0.001200678, 0.031671338, 0.05333887, 0.02967943, -0.038620885, -0.0073534604, 0.01263755, -0.030387664, -0.023216795, 0.0036877964, -0.008615002, -0.061616357, -0.048115645, -0.006036588, 0.016787358, 0.033264864, 0.10703186, 0.015891, 0.0019988243, 0.028749872, 0.012947402, -0.013843761, -0.023039736, 0.008249819, -0.055375043, 0.0194875, 0.021092093, 0.07223987, -0.0202068, -0.026536642, -0.039727498, -0.08025176, -0.00895252, 0.018978458, 0.014474532, -0.041697275, -0.0072040674, -0.008620535, 0.016765226, -0.01971989, -0.031560678, 0.024079954, -0.0076854452, -0.03589861, -0.0785697, 0.018668605, -0.04594668, -0.0013224056, 0.0064294366, -0.015492618, 0.022906942, -0.031450015, -0.04709756, -0.026691567, -0.040214412, 0.012648616, 0.01263755, 0.03983816, -0.0031759867, 0.0012753744, 0.07808279, 0.00046408692, 0.032689426, -0.0317156, 0.0079067685, -0.021756062, -0.059226066, -0.012593285, 0.013843761, 0.033109937, -0.046212267, 0.005317288, 0.022431098, -0.0016972716, -0.07215133, -0.028085904, 0.01531556, -0.009251306, -0.00462012, -0.046876237, 0.042560436, -0.004127676, -0.03926272, 0.0009399316, -0.03751427, 0.012161706, -0.017573055, -0.043401465, -0.0067337556, -0.029502371, -0.014054018, -0.021147424, 0.038465958, -0.027908845, 0.014253208, 0.0145187965, -3.6440506e-05, 0.014054018, 0.013190858, 0.0061361836, 0.016931219, 0.0037375942, -0.02354878, 0.076312214, 0.02766539, -0.029458107, 0.0034277418, 0.007790574, 0.038731545, -0.0055884086, -0.028130168, -0.034637067, 0.0053698523, 0.07458589, -0.016798424, -0.05086005, -0.0019033788, 0.0022616456, 0.06272297, -0.018026767, 0.0010021788, -0.012471558, -0.023747971, 0.017683716, 0.033574715, -0.04012588, 0.05006329, -0.017705848, -0.013755232, 0.031737734, -0.08166823, -0.047186088, 0.030409796, -0.035101846, 0.066131346, -0.0484255, 0.040081616, 0.020837571, -0.055065192, -0.03943978, 0.024102088, 0.00042673864, 0.03368538, -0.012892071, -0.0656887, -0.046212267, -0.03879794, -0.010374521, 0.035367433, 0.03868728, -0.012106375, 0.023681574, 0.005748868, -0.029413842, 0.016942285, -0.060332682, -0.022242973, 0.022265105, -0.0027596226, -0.014906112, -0.051922403, -0.062368855, -0.011840787, 0.05754401, -0.032490235, 0.03235744, -0.00967182, 0.011387074, -0.054888133, -0.011387074, 0.021744996, 0.04012588, -0.022552826, 0.05134696, -0.0074253906, -0.0054390156, -0.008891656, -0.004589688, -0.017362798, 0.03503545, -0.023880765, -0.03831103, 0.0520552, -0.04194073, -0.02585054, 0.011088288, 0.015791405, 0.03319847, -0.01900059, -0.020129338, -0.003126189, -0.028772006, 0.038532354, -0.010020404, -0.004946572, -0.024146352, 0.05515372, 0.041608747, -0.009505828, 0.024588998, 0.054135635, 0.011143619, -0.033928834, 0.009677353, -0.025784142, -0.05037314, -0.033087805, 0.009428365, 0.0012892071, 0.00879206, 0.03063112, 0.033928834, 0.010274925, 0.004282602, -0.016234051, -0.05564063, -0.027975243, 0.0034526407, -0.0520552, 0.0038454891, -0.02930318, -0.00837708, 0.0067171566, -0.0090465825, -0.014662656, -0.011696926, 0.028351491, 0.0072262, 0.0061970474, -0.008426878, -0.064936206, -0.017362798, -0.007331328, 0.001653007, 0.0001891621, -0.002141301, -0.0024829686, -0.009312171, -0.037934784, -0.04740741, -0.027023552, -0.0245226, -0.012460492, 0.025584953, 0.0065898956, 0.020317461, 0.050328877, -0.045990944, 0.029148255, -0.0136445705, 0.06595429, 0.016820557, 0.008924855, -0.007181935, 0.0101974625, 0.04545977, 0.03589861, -0.0096386215, 0.043335065, -0.047495943, 0.03877581, 0.029192518, 0.050682995, 0.01891206, -0.0017678184, -0.03999309, -0.038554486, 0.013655636, 0.001493931, 0.027333405, -0.014729054, 0.07494, 0.035367433, -0.016676696, -0.053427402, 0.031450015, 0.024456205, 0.0026946089, 0.017451327, -0.0014953143, 0.043866243, 0.0009772799, 0.0139322905, -0.026492378, 0.0773303, 0.0044624275, -0.060288418, 0.0024802021, -0.030520458, -0.014087216, -0.018458348, -0.0006819519, -0.021678599, -0.0004201681, -0.02536363, -0.02642598, -0.023747971, -0.03149428, -0.0026268288, -0.032313175, 0.036828168, -0.0005470831, 0.014640524, 0.032623027, 0.041542348, 0.018369818, 0.01321299, 0.00066984823, 0.013522842, 0.030299135, -0.009721618, 0.014717987, -0.022320436, -0.020361727, -0.0021385346, 0.025385762, -0.03802331, -0.012980601, 0.0447294, -0.0032119518, 0.03319847, 0.012969535, -0.01704188, 0.026868626, -0.03200332, -0.0018452815, 0.050461672, 0.015448353, 0.077772945, 0.065423116, 0.037292946, 0.04709756, -0.0360978, 0.0076245815, -0.008211087, -0.017971437, -0.017451327, -0.011553067, -0.014419201, -0.015824603, -0.02872774, -0.038620885, -0.007098939, 0.037934784, 0.03237957, 0.004415396, 0.08450116, -0.023106134, -0.020372793, 0.012969535, 0.020361727, 0.012892071, 0.025474291, -0.04098904, -0.04461874, 0.023858631, 0.015171699, 0.0037597264, 0.012958469, 0.008692466, 0.030874575, -0.02245323, 0.043888375, 0.026182525, -0.0007642564, -0.03235744, 0.023593044, -0.052940488, -0.010883564, -0.057853863, -0.05564063, -7.6036595e-05, 0.001018778, -0.021103159, -0.04001522, -0.022110179, -0.011409206, -0.015049972, 0.0052813226, 0.064405024, -0.017207872, 0.0018342154, -0.034238685, 0.0076799123, 0.007790574, -0.009179376, 0.052940488, -0.022951208, -0.014729054, -0.04545977, -0.05732269, -0.02112529, -0.0142200105, 0.0011121486, -0.0034720064, -0.02147941, -0.006241312, -0.0031815197, 0.014983575, 0.010540513, -0.03926272, -0.010612443, 0.047053296, -0.04096691, -0.013002733, 0.032401703, -0.003192586, 0.014286407, 0.019863749, 0.010850366, -0.033264864, -0.006971678, 0.01675416, 0.0142200105, 0.02766539, 0.014695855, -0.018502612, -0.056437396, -0.002448387, 0.028860534, -0.005660339, 0.04723035, 0.07299236, 0.009511361, -0.018580075, 0.0025728813, 0.0061583156, -0.06971678, 0.007746309, -0.03437148, 0.00045129168, 0.002700142, -0.018203827, 0.024544735, -0.050904315, 0.029812224, -0.008321749, 0.03884221, -0.007375593, 0.024345543, -0.0018521978, 0.007524986, 0.0069163474, -0.00895252, -0.0052425913, -0.016333645, 0.01163053, 0.015182766, 0.0022727118, -0.014242142, -0.019775221, -0.028882667, -0.028395755, 0.014430267, 0.0029961616, 0.03388457, -0.045216314, 0.00049002323, 0.034415744, 0.029590901, -0.001229035, 0.03523464, 0.010645642, 0.04433102, 0.034504272, 0.012338764, -0.0057156696, -0.00041498084, -0.00390082, -0.027045684, -0.019620294, -0.0107839685, 0.02337172, 0.032623027, 0.011597332, -0.00052287587, -0.04997476, 0.00627451, 0.014186812, 0.0074807215, 0.02202165, -0.006612028, -0.010700973, 0.016709896, -0.010667774, -0.000668465, -0.012881005, -0.018380884, -0.01815956, 0.047717262, -0.030277003, 0.0017775013, -0.07126604, 0.034924787, 0.01767265, 0.018059967, -0.009539027, 0.0015575615, -0.027953109, 0.03563302, -0.010241727, 0.03474773, -0.014186812, 0.06290003, 0.00281772, 0.015492618, -0.009262373, 0.030144209, -0.0039616837, -0.0009897293, -0.016588168, 0.0047307815, -0.014098283, 0.0081834225, -0.042095657, -0.01502784, -0.039727498, -0.018170629, 0.009173843, 0.050328877, 0.017296402, 0.0096330885, 0.039970953, -0.0061417166, -0.0036490648, 0.023017604, -0.017440261, -0.0021468343, 0.016676696, 0.00023377255, -0.07237266, 0.032401703, -0.0038565553, 0.04855829, 0.017927172, 3.0885814e-05, -0.02178926, -0.00925684, -0.0068554836, 0.0015520283, -0.04815991, -0.025651349, 0.029812224, 0.017086145, 0.010944428, -0.03341979, 0.0069993436, -0.007381126, -0.0014040185, 0.007270464, -0.006844417, -0.021888856, 0.008543072, -0.03649618, 0.026470244, 0.011027425, 0.016112322, -0.0035605356, 0.052276522, 0.0469205, 0.0063021756, -0.028285094, -0.005975724, -0.020505587, -0.025430026, -0.055375043, -0.0040419134, 0.01197358, -0.009804614, 0.037846252, 0.057189893, 0.02642598, -0.036584713, -0.012283433, -0.0426047, 0.023084002, -0.061483562, 0.015570081, -0.045039255, -0.013290453, 0.0012961235, 0.02182246, 0.06458209, 0.002150984, -0.07042502, -0.008166823, -0.04453021, 0.012017845, -0.010844832, -0.0012954319, 0.032822218, -0.02996715, -0.052719165, -0.011995713, -0.002341875, 0.004846976, -0.022486428, -0.019011656, 0.022619223, -0.007519453, -0.006379639, 0.026979288, -0.006324308, 0.00808936, 0.0005647198, -0.017916106, 0.008742264, -0.010125533, 0.0061970474, 0.003920186, -0.011940382, -0.00052633404, -0.031007368, 0.04393264, -0.025518555, -0.012947402, 0.038355295, -0.014762252, -0.016278315, 1.0477185e-05, 0.029767958, 0.010927829, -0.0447294, 0.058650624, -0.001321714, -0.0382889, -0.02317253, 0.03665111, -0.026160393, 0.032977145, 0.011564133, -0.0018729469, 0.057189893, -0.0062855766, 0.0093398355, 0.0025493656, 0.0045813886, 0.012991667, -0.044552345, -0.019244045, -0.00045855384, 0.04377771, 0.008720131, -0.0053809183, -0.028285094, 0.012526888, -0.00022063148, -0.037115887, -0.000744199, 0.012095308, 0.07586957, -0.0055524437, 0.016676696, -0.0016709896, -0.022486428, 0.0019766921, 0.06692811, 0.012250234, 0.0032894148, 0.0019642427, 0.025828408, -0.03848809, -0.039793897, 0.007530519, 0.0223979, -0.0081889555, 0.049177997, -0.00027544354, -0.003275582, 0.024079954, -0.002499568, -0.017628387, 0.011818655, 0.016787358, 0.029037593, 0.0541799, -0.031140162, -0.016455373, -0.006960612, -0.046699177, 0.005992323, 0.006545631, 0.037093755, -0.0043351664, 0.042449772, -0.0093287695, -0.00032161016, -0.0078901695, 0.018967392, 0.029590901, -0.070026636, -0.0093232365, 0.029148255, -0.04758447, 0.02498738, 0.0021924821, 0.04953211, 0.02187779, -0.0038427226, 0.035677288, -0.011719059, 0.018358752, 0.05820798, -0.009195975, 0.011121486, 0.00641837, 0.0034554072, -0.03514611, -0.013733099, 0.01263755, -0.01891206, -0.020217868, 0.015437287, -0.054578282, 0.013268321, -0.0010422935, -0.006944013, -0.06059827, -0.003557769, 0.028108036, 0.002664177, -0.016687764, -0.0039561507, 0.0029740294, 0.05732269, 0.045681093, -0.0144524, 0.02478819, 0.09269012, -0.02651451, -0.02015147, 0.0060199886, -0.0005418958], [-0.014273285, -0.008379341, -0.023966337, 0.041660003, 0.014628341, 0.002834537, -0.035505682, 0.020889176, 0.02752874, 0.044453114, -0.00026925144, -0.0066158925, 0.008136719, 0.013326466, -0.0038405315, 0.02361128, -0.015942052, -0.009988932, -0.01564617, -0.0136341825, -0.012332307, -0.03290193, -0.050512753, -0.012213955, -0.0008454791, 0.0035683212, -0.0061839065, 0.010054026, 0.0038878722, 0.003032777, -0.0014291038, 0.046536114, 0.020995693, -0.028901625, -0.026629262, -0.0010821837, 0.003586074, 0.017551642, -0.043009218, 0.009752228, -0.039932057, -0.00597679, 0.017871194, -0.03481924, -0.013657853, -0.011054102, -0.0060330075, -0.030511217, -0.030274512, -0.015977558, -0.0011014158, -0.033943433, 0.027907467, -0.02003704, -0.0179067, -0.014746694, 0.06708207, -0.11967782, 0.023374574, 0.014143097, -0.019504456, 0.02655825, 0.0072194887, -0.016060404, 0.010775975, -0.00047599807, -0.02549308, 0.020250075, 0.028357206, 0.052785117, -0.047033194, 0.05396864, 0.030487547, -0.002031221, -0.008805409, -0.09496587, 0.07584014, 0.044855513, 0.016628494, -0.035079613, 0.006479787, -0.006651398, -0.011835228, -0.0023744425, 0.036073774, -0.02232124, 0.04012142, -0.087912075, -0.023327233, -0.008870503, -0.020960188, -0.023197046, 0.022877496, 0.053305864, -0.029185671, 0.0326889, -0.023895325, 0.015208268, -0.016013063, 0.017196586, -0.002060809, -0.071011364, -0.05027605, -0.04994466, 0.038204115, 0.03223916, 0.06982785, -0.037257295, -0.012876728, 0.03960067, 0.007521287, -0.020179063, -0.02157562, 0.0065567163, -0.036594525, -0.00999485, 0.016273439, -0.055152163, 0.013113433, 0.01897187, -0.059034117, -0.026865967, 0.060407, 0.01641546, -0.03536366, 0.01946895, -0.019752994, 0.036476173, 0.026842296, -0.004408622, 0.004716338, 0.037304636, 0.046985853, 0.04615739, 0.031884104, 0.01688887, 0.076692276, -0.00042643806, -0.054205343, 0.020616967, -0.038795877, 0.0006879226, -0.016273439, 0.037138946, 0.041802023, -0.0072905, -0.017527971, 0.005426452, -0.06253734, 0.0264399, -0.020096216, -0.055909615, 0.0027916343, 0.021918843, 0.039079923, -0.060170297, -0.016237933, 0.044571467, -0.029185671, 0.054726094, 0.055767592, -0.068312936, -0.043482628, 0.026132183, 0.006219412, -0.053447887, -0.012711034, -0.043837685, -0.08152105, 0.03370673, -0.033422682, 0.0053554405, 0.029540729, -0.005219335, 0.003985513, -0.023670455, -0.02854657, -0.010947586, -0.047885332, -0.0632948, -0.036665536, 0.04175468, 0.014900552, -0.013361972, 0.0651411, 0.02490132, 0.027197354, 0.016486472, 0.0066158925, -0.007491699, -0.040713184, -0.007065631, 0.021031199, 0.007243159, -0.014237779, -0.03754134, -0.058466025, -0.040926218, 0.003112665, -0.03387242, 0.0021495733, -0.01170504, -0.012817551, 0.03964801, -0.039742693, -0.011018597, 0.02646357, 0.02130341, 0.028309865, 0.0025948738, 0.026108513, 0.02601383, 0.016829694, -0.018084228, -0.0009993371, 0.022049028, -0.063673526, 0.04980264, 0.0080893785, -0.042488467, 0.02234491, -0.012166614, -0.004947125, -0.0033612046, 0.0021199852, 0.012616353, 0.01351583, -0.030014137, 0.010917998, 0.014131262, -0.008332, -0.0067815855, -0.013977404, 0.02594282, -0.04265416, -0.0050921068, -0.021658467, -0.025161695, 0.013350137, -0.0005917614, 0.033185977, -0.020072546, -0.046701808, -0.007000537, 0.023291728, 0.02551675, 0.017610818, 0.026392559, -0.05453673, 0.032262832, 0.03377774, -0.023339069, -0.017551642, 0.021670302, 0.037612353, 0.100457415, 0.031505376, -0.015149091, -0.013231785, 0.012722869, -0.027102672, 0.069780506, -0.029540729, 0.02961174, -0.031363353, -0.05027605, 0.02413203, -0.005251882, -0.024593603, 0.006680986, 0.08242053, -0.049660616, 0.017054563, -0.0033996692, -0.024640944, 0.024309557, 0.08639716, 0.04637042, -0.025777126, 0.052737776, -0.03290193, 0.0034529278, 0.020321086, 0.027552411, 0.007260912, -0.026250536, 0.016001228, -0.049045183, -0.023990007, 0.040168762, -0.005272594, -0.009929756, 0.04525791, 0.019824006, 0.063152775, 0.012782046, 0.016746847, 0.031552717, -0.015586995, 0.011480171, -0.010681293, -0.021196892, -0.021693973, -0.021682138, -0.005624692, 0.047411922, 0.0013603115, 0.06566184, 0.0136341825, -0.0399794, 0.05354257, -0.003157047, -0.03844082, -0.0447845, 0.020960188, 0.012142943, 0.051317547, 0.02494866, 0.033517364, -0.0029233012, -0.048406083, -0.04729357, -0.08866952, -0.0038346138, 0.05401598, 0.019090222, 0.02259345, -0.057566546, -0.04002674, -0.0049885483, -0.044050716, -0.009829157, -0.010148708, 0.03223916, -0.036144786, -0.11598523, -0.0168652, -0.052169684, 0.0116340285, -0.011663617, 0.05245373, 0.009906085, -0.022155546, -0.02256978, 0.005672033, -0.027670762, -0.029706422, 0.054442048, 0.034085456, 0.018699659, 0.0013728865, 0.0071011367, 0.008154472, 0.02182416, 0.058986776, -0.002075603, -0.021125881, -0.00037632327, -0.017752841, 0.018900858, 0.07910666, -0.0789173, -0.001554853, 0.016261604, 0.016983552, -0.012947739, -0.027386717, -0.0063259294, 0.018533967, -0.02313787, -0.04468982, 0.05818198, 0.07735505, -0.02646357, 0.030463876, 0.025067013, -0.00845627, 0.026132183, -0.061401162, 0.019906852, 0.012829387, -0.016486472, -0.019184904, 0.033162307, -0.024617273, 0.012876728, -0.032002456, -0.009965261, -0.008917844, 0.014959727, -0.006834844, 0.026155854, -0.057613887, -0.019173069, 0.022013523, 0.041896705, -0.0049707955, 0.015397632, 0.028948966, -0.0037428907, -0.010042191, -0.003370081, -0.03633415, -0.019895017, 0.029256683, -0.02655825, 0.023031354, -0.012864892, -0.009551029, 0.04932923, -0.001547456, 0.056856435, 0.0057578385, 0.017421456, 0.041375957, 0.046654467, -0.022960342, 0.049092524, -0.021232398, 0.023327233, -0.0018418573, 0.0019735242, -0.05751921, 0.04819305, -0.040831536, 0.0068881027, -0.03948232, 0.025445739, 0.028333535, -0.03531632, -0.0018329809, -0.012924069, -0.0018906776, -0.009024361, -0.0020075506, -0.052643094, -0.04106824, -0.029730093, -0.012604518, 0.031008298, 0.017172916, -0.08256255, 0.01043867, 0.004550645, -0.065093756, 0.024285886, -0.08066891, -0.039719023, 0.03219182, -0.017918535, -0.035126954, -0.013503995, -0.06078573, -0.025303718, 0.06476237, -0.028380876, 0.044476785, -0.022901166, 0.058844753, -0.05718782, -0.012403319, 0.0006653617, 0.03803842, 0.0132554555, 0.04890316, -0.023256222, 0.008189977, 0.04047648, 0.020131722, 0.025587762, -0.04154165, -0.029043648, -0.014652012, 0.03967168, 0.017078234, -0.028712263, -0.0064087757, -0.00058436434, 0.016817858, -0.013196279, -0.03886689, -0.008237318, -0.018226251, 0.030085148, -0.03325699, -0.027576081, 0.0064442814, 0.020676143, 0.07049061, 0.010290731, 0.007728404, 0.016746847, 0.01926775, 0.00068570353, -0.0038878722, -0.04525791, -0.03219182, -0.037280966, 0.015563324, -0.02494866, -0.00045676582, 0.03884322, -0.008201812, 0.02286566, 0.055246845, 0.018415615, 6.527868e-05, -0.04424008, 0.053400546, -0.03223916, 0.01326729, 0.0065212105, -0.043908697, 0.035647705, 0.0069650314, -0.054773435, -0.020108052, 0.011113279, -0.0006923608, 0.041612662, -0.002185079, -0.032002456, -0.041991387, -0.03271257, -0.028262524, -0.028806943, -0.01840378, 0.027931137, 0.03498493, -0.043009218, -0.036499843, 0.0083734235, -0.010343989, 0.009953426, 0.038819548, -0.018320933, 0.02075899, 0.0189482, -0.029375035, -0.02599016, -0.040192433, 0.040689513, -0.031907775, 0.009409006, -0.019847676, 0.06286873, 0.043293264, -0.029517058, -0.020818166, 0.024546262, -0.020995693, 0.022380415, 0.0060478016, 0.035268977, 0.026108513, -0.049565934, -0.036192127, -0.038748536, 0.012237625, -0.029493388, 0.018439285, 0.005932408, 0.103203185, 0.029966796, -0.010557023, -0.05917614, 0.027765444, 0.025161695, -0.01899554, 0.023232551, 0.005959037, 0.040665843, 0.00674608, -0.005319935, -0.039221946, 0.057613887, -0.0076692277, -0.0274814, -0.044831842, 0.028167842, -0.023575773, 0.013705194, -0.0005251882, -0.055436205, 0.010154625, -0.019480785, -0.05917614, -0.055862274, -0.01403658, 0.023942666, 0.0015267443, 0.03794374, -0.0030712415, 0.022699967, 0.005606939, 0.015149091, -0.0046660383, 0.021196892, 0.027244695, 0.02859391, -0.01426145, 0.0032753993, 0.018391944, 0.006823009, -0.017314939, 0.004396787, 0.030321853, -0.028144171, 0.014474483, 0.024664614, -0.014675682, -0.0076218867, 0.037138946, -0.03538733, 0.02705533, -0.012592683, 0.037186287, 0.047033194, 0.003003189, 0.026629262, 0.018936364, 0.035600364, 0.07356778, -0.054347366, 0.018309098, 0.008692975, -0.0062134946, 0.0025948738, -0.020936517, -0.031339683, -0.010048108, -0.00553001, -0.03221549, -0.032925602, 0.008024285, -0.0022102287, 0.030392865, 0.041304946, 0.0038789958, 0.030913616, -0.0025534504, 0.03474823, -0.0094918525, 0.13198645, -0.021173222, -0.024380568, 0.012030509, -0.0069058556, 0.04570765, -0.024640944, -0.021409927, 0.0175043, -0.029162, 0.054300025, -0.017374115, -0.016948046, 0.00805979, 0.024333227, -0.011864816, 0.028262524, -0.027339377, -0.01899554, 0.021161387, 0.020841837, 0.025303718, -0.003476598, -0.011219796, -0.03013249, -0.007130725, 0.025919149, 0.08218382, -0.069733165, -0.036168456, -0.019883182, -0.040429138, 0.00637327, 0.013066092, 0.064052254, -0.033328, -0.003849408, 0.00052259926, -0.055341523, 0.009178219, -0.019634644, -0.008272824, 0.004035813, -0.07124807, 0.0044174986, -0.027363047, -0.004890908, 0.025871808, -0.063152775, -0.04218075, 0.05448939, 0.037872728, 0.036570854, 0.0014512948, -0.03328066, 0.008521364, 0.013752535, -0.020380262, -0.012018674, -0.04428742, -0.012190284, -0.00040017863, 0.042843524, 0.0052282116, -0.01224946, -0.05363725, -0.032546878, 0.014947893, 0.0026747615, 0.013503995, 0.05041807, -0.011338148, -0.009533276, -0.03382508, 0.017291268, -0.06447832, 0.031245, -0.03287826, -0.052595753, 0.0022176257, -0.032333843, -0.0042873113, -0.031884104, 0.029919455, -0.016084075, 0.008337918, -0.00972264, 0.023705961, -0.014841376, 0.004979672, -0.017989546, -0.016368119, 0.011030432, -0.0612118, 0.0008950391, 0.009006608, -0.0036274972, 0.021019364, -0.039861046, -0.04265416, 0.022605285, 0.0049737543, -0.02554042, 0.028854284, -0.015385796, -0.00078408385, -0.042441126, 0.010166461, -0.037636023, 0.020108052, -0.020960188, 0.022427756, 0.032949273, 0.0057933438, -0.027599752, 0.028120501, -0.02698432, -0.013539501, 0.027694432, 0.01532662, 0.0072549945, 0.056430366, -0.0014291038, -0.025729785, -0.04684383, 0.015563324, 0.019303257, 0.015989393, 0.057945274, -0.011781969, -0.02703166, -0.005251882, -0.022581615, 0.03683123, -0.00040165804, -0.053921297, -0.016474636, -0.028428217, -0.0026037502, -0.014876882, -0.013137103, 0.031505376, 0.018640483, 0.0014475962, -0.0033582458, 0.013066092, 0.0010215282, 0.015421302, 0.046062708, 0.036239468, 0.014427142, 0.04570765, -0.042512137, 0.020451274, -0.005947202, 0.027931137, -0.0051867887, 0.033067625, -0.04052382, -0.006331847, 0.018664153, -0.01584737, 0.0019705654, -0.021587456, -0.02700799, -0.03259422, 0.033020284, 0.029019978, 0.010805563, 0.0030179832, -0.01024339, -0.020628802, -0.005964955, 0.036215797, -0.018119734, -0.0014823623, 0.044997536, -0.0053731934, -0.038748536, -0.0093498295, -0.0033375341, 0.013563171, 0.022688132, 0.02752874, 0.005574392, -0.010941668, 0.017480632, -0.028451888, -0.030724252, -0.016841529, 0.002090397, -0.011787887, 0.03013249, 0.00486132, 0.0104682585, 0.031102978, 0.050181367, -0.02135075, -0.018983705, -0.024404239, 0.027647091, -0.018439285, 0.0012404798, -0.0058939434, -0.0024143865, 0.010823316, 0.048382413, 0.04305656, 0.038204115, 0.04980264, -0.0057252916, -0.06073839, 0.014438977, -0.046039037, 0.0044027045, 0.0016658083, 0.035032272, 0.01693621, 0.017965876, -0.01872333, -0.042796183, 0.011361819, -0.019386103, -0.0102788955, -0.039245617, -0.027386717, -0.0047429674, -0.031481706, -0.034961265, 0.006515293, 0.03962434, 0.009781816, -0.008503611, 0.010574776, -0.027434058, 0.012237625, -0.0024498922, -0.00585252, -0.015421302, -0.04722256, -0.03422748, -0.012166614, 0.003630456, 0.0018448161, 0.0006383626, -0.0274814, -0.020096216, 0.008550952, -0.017303104, 0.03687857, -0.043435287, -0.0024513716, -0.0032576465, -0.009343912, 0.0033671223, -0.021764984, 0.048619114, -0.0067638326, 0.01351583, -0.0014882799, -0.02449892, 0.016001228, -0.00065352645, 0.006882185, -0.007651475, -0.01842745, -0.012426989, -0.026818626, 0.029375035, 0.0041778353, -0.03803842, 0.017894864, -0.020912847, 0.0017989546, 0.00357128, 0.0008528761, -0.05041807, 0.014379802, 0.01793037, 0.007929603, 0.010101367, -0.0037754376, 0.0017678872, -0.038653854, 0.024853978, 0.027126342, -0.048571773, 0.009190055, 0.021149551, 0.030061478, 0.025729785, -0.03337534, -0.034937594, -0.025445739, 0.01899554, -0.041636333, -0.0011554142, 0.0591288, 0.053873956, -0.04736458, -0.024096524, 0.04352997, -0.06495173, 0.010835151, 0.026889637, 0.012734705, -0.0017738048, 0.014154932, 0.04516323, -0.022889331, -0.022238392, 0.007385182, 0.006580387, -0.012805716, 0.0468675, 0.017232092, 0.048051026, 0.024759296, -0.04258315, -0.009988932, -0.008533199, -0.0037044263, -0.0017427373, -0.0011539347, -0.015267444, -0.0043494464, 0.030937286, -0.04099723, -0.02028558, -0.0006886623, 0.0012131109, -0.00016060774, -0.0057075387, 0.009326159, -0.0012878207, -0.03171841, 0.03533999, 0.021918843, -0.07427789, -0.043908697, 0.014746694, -0.034487855, -0.03548201, -0.037754375, 0.017149245, -0.014995233, -0.0061957417, -0.016308945, -0.0885275, -0.002137738, 0.021114046, -0.031339683, -0.00061987, 0.032262832, -0.0028360165, -0.011592605, -0.02313787, -0.015456808, -0.0052814703, -0.04629941, 0.026037501, -0.04566031, 0.0472699, 0.003157047, 0.01639179, -0.033067625, 0.026865967, -0.0029351364, -0.0023611279, -0.011320395, -0.021125881, -0.0055033807, 0.020865507, 0.03434583, -0.011509759, 0.012308637, -0.0022398168, 0.032002456, 0.0050684363, 0.031789422, 0.020616967], [0.041276723, -0.01853265, -0.018460864, 0.023306392, 0.041085295, -0.028738169, -0.022732107, 0.03847708, 0.03199245, 0.025244603, -0.061161336, 0.014704084, 0.016247476, -0.020147827, -0.03412209, 0.017180687, -0.02074604, 0.017252473, -0.034169946, -0.04163565, -0.034696374, -0.078389876, -0.09490057, -0.0382378, -0.0082732905, 0.0064008827, 0.0027263574, 0.029767096, -0.041539937, -0.0037448157, 0.05570563, 0.019106934, 0.053791344, -0.056423485, -0.00644874, 0.010624269, -0.018628364, -0.008123738, -0.038501013, 0.018101936, -0.011318197, -0.0037059318, -0.016797831, -0.043526005, 0.023784963, -0.0055215093, -0.011108822, -0.014093907, -0.019788899, -0.090354145, 0.0048604836, -0.00555142, 0.062118474, 0.04146815, -0.06010848, 0.018209614, 0.06350633, -0.1184941, 0.073173456, 0.0032871824, -0.046540998, 0.040343508, 0.039577797, -0.0012704557, -0.06628204, -0.04031958, 0.042329576, 0.048072428, -0.007483649, 0.028474957, -0.041061364, 0.022325322, 0.007920345, -0.006723918, -0.03546209, -0.016929438, 0.08848772, 0.00961927, -0.048790284, -0.016821759, 0.04048708, -0.06503776, 0.033188876, 0.0020728093, 0.03529459, -0.014751942, 0.030652452, -0.09643199, -0.06422418, -0.026177816, -0.02391657, 0.01485962, 0.018676221, 0.039075296, -0.05240349, 0.04357386, 0.017910508, -0.0057727587, -0.012299267, -0.00053427933, -0.030748166, -0.0191189, -0.020865683, -0.088057004, 0.017802829, 0.039577797, 0.038812082, -0.02195443, 0.005138653, 0.020303361, 0.039577797, -0.020387111, 0.02548389, 0.0016211582, 0.0119463205, 0.055083487, -0.019621398, -0.081979156, -0.0025124962, -0.00076459144, -0.09356057, -0.0191189, 0.04328672, 0.011144715, -0.037184943, 0.00064195774, -0.01715676, 0.02548389, 0.020351218, 0.01755158, -0.010193556, 0.057189196, 0.024048178, -0.005500572, 0.062932044, 0.012658195, 0.027685314, -0.079921305, -0.009529538, 0.046660643, -0.024526747, 0.0119941775, 0.012430874, 0.015194619, -0.04003244, 0.0024451972, -0.03981708, 0.027876742, -0.040941723, -0.024957461, 0.014512656, -0.036945656, -0.0015882564, 0.0127539085, 0.004540439, 0.0036102177, 0.026010318, 0.043813147, -0.015948368, 0.02744603, -0.015409976, -0.07221632, -0.018245507, 0.006544454, 0.003580307, -0.024012284, 0.06743061, -0.019872649, -0.07255132, 0.034576733, 0.030173883, -0.05211635, -0.031729236, 0.0019681219, -0.061448477, 0.032375306, 0.024431033, -0.000509603, -0.028594598, -0.07819845, -0.046876, 0.08834415, 0.04015208, -0.059486337, 0.011838642, 0.03900351, 0.033356376, 0.008123738, 0.02099729, -0.0038883868, -0.008656147, -0.01738408, -0.005147626, -0.03086781, -0.0044028503, -0.036036372, -0.0046421355, -0.037950657, 0.012849623, 0.047809213, -0.047306713, -0.0010670631, -0.03644316, -0.028474957, -0.022181751, 0.010277306, 0.020554611, 0.03754387, 0.019860683, 0.023796927, 0.052212063, -0.020482825, 0.0012173642, -0.008997129, 0.008051951, 0.0122155165, -0.06690418, 0.038261726, 0.013926407, -0.052307777, 0.055609915, -0.009565432, 0.0077169524, -0.032447092, -0.018472828, 0.033356376, 0.033069234, 0.029264597, 0.03349995, -0.0051296796, -0.02015979, 0.0041815112, -0.0059701693, 0.07561417, -0.025412103, -0.02130836, -0.024179785, 0.033858877, 0.054604914, -0.003711914, -0.0028340358, -0.002769728, -0.01298123, 0.03019781, 0.008530523, 0.032949593, -0.005195483, -0.016642295, -0.018987292, 0.014763906, -0.03771137, -0.030724239, 0.054700628, 0.035222802, 0.007561417, 0.05355206, 0.015254441, -0.054748487, -0.04898171, 0.02890567, 0.0045434306, 0.03280602, -0.0026037237, 0.06302776, -0.015302298, -0.025579603, -0.0035264678, -0.05206849, -0.032758165, -0.023150858, 0.044339575, -0.031585667, -0.022241572, 0.017695151, 0.07264703, -0.0027203753, 0.056279913, -0.0036161998, -0.02467032, 0.045871, 0.011348108, 0.05158992, 0.01651069, 0.0137948, 0.008757844, -0.015302298, -0.041922793, -0.036538873, -0.08398916, 0.0075793634, -0.021104967, -0.012694088, 0.034169946, -0.0010999648, 0.003541423, 0.009936324, 0.02287568, -0.006634186, -0.0015164709, 0.0023031214, -0.02066229, -0.024694247, -0.015709084, -0.038620654, 0.0032094147, 0.029527811, 0.011701053, 0.01371105, -0.0108276615, -0.06417633, 0.06441561, 0.0046810196, -0.014584442, -0.07939488, -0.02441907, -0.004031958, 0.011162661, 0.03737637, 0.061161336, -0.0282596, -0.030149953, -0.027852815, -0.052164204, 0.009200522, -0.026560673, 0.03627566, 0.04634957, 0.01225141, -0.041276723, -0.015469798, -0.061113477, -0.037448157, -0.048790284, -0.028451027, -0.058337767, -0.043837074, -0.01183266, -0.03933851, -0.011521589, 0.0037418245, -0.0066999895, -0.015134798, -0.03933851, -0.021009253, 0.008069898, -0.0071426677, 0.0023061126, -0.016749974, 0.05240349, 0.019657291, 0.001567319, 0.05565777, -0.00077319075, 0.021416038, 0.012706052, -0.0033948608, 0.004824591, -0.014022121, -0.017874615, -0.028881742, 0.037113156, -0.03574923, -0.023414072, 0.036873873, 0.006394901, -0.03562959, -0.008291237, 0.02164336, 0.028451027, -0.0026590584, -0.03804637, 0.060204193, -0.003714905, -0.0021565591, -0.039314583, 0.04082208, 0.019130863, -0.026201745, -0.040439222, 0.010271324, -0.0006490615, -0.011659178, -0.0032812003, 0.04639743, 0.022421036, 0.002657563, -0.030508881, 0.024155855, 0.0038614674, 0.03708923, 0.0056261965, -0.037998512, -0.053599916, -0.06580347, 0.010696054, 0.05714134, -0.034528874, -0.0042174044, -0.0015291829, -0.0045613768, -0.010139717, 0.014955334, -0.052977774, -0.0008689049, 0.065994896, -0.03302138, 0.0044566896, -0.04067851, -0.07690631, 0.032542806, -0.045153145, 0.017084973, -0.015230512, 0.053025633, -0.0027996385, -0.017049082, -0.08011273, 0.0063290973, 0.013423908, -0.006987132, 0.032566734, 0.031250667, -0.021104967, 0.019800862, -0.048766352, 0.013435872, 0.001881381, 0.023964427, 0.008022041, -0.018592471, -0.019836755, 0.006089812, 0.008620255, 0.014596406, 0.016331226, -0.056088485, -0.037950657, -0.041420292, 0.006574365, -0.029575668, 0.039553866, -0.032183878, -0.0141298, 0.023820857, -0.055609915, 0.007812667, -0.07441774, -0.022325322, -0.01984872, -0.0003705184, -0.020650325, -0.0284271, -0.073604174, 0.041061364, 0.07882059, -0.022923537, 0.038620654, 0.015206584, 0.035174947, -0.0832713, 0.009762842, -0.028618528, 0.06302776, -0.017455867, 0.042951718, 0.04606243, -0.0008614272, 0.02644103, 0.008644183, 0.008039988, -0.025818888, -0.009409896, 0.005733875, -0.02924067, 0.00021516987, -0.033715304, -0.03022174, -0.0031256648, 0.029001383, 0.0001112303, -0.032183878, 0.013782836, 0.046612784, 0.014476763, 0.052786347, -0.022169787, 0.008369005, 0.023928534, 0.050297778, -0.010133734, -0.004782716, 0.07073275, 0.009050968, 0.015063012, -0.02400032, -0.044172075, -0.04113315, -0.03285388, 0.0017542607, 0.027637457, 0.011970249, 0.0548442, 0.012777837, 0.031250667, 0.014285335, 0.02041104, -0.024766034, 0.031729236, -0.00030303246, -0.014668192, -0.010845608, -0.012024089, -0.048622783, 0.0050848136, -0.016151762, 0.021320324, -0.01272998, 0.0136273, 0.028068172, -0.005195483, -0.011084894, 0.01272998, -0.033571735, -0.0067777573, 0.0059073567, -0.002374907, -0.009021058, 0.009996145, 0.02279193, -0.036634587, 0.00025162348, -0.0058505265, -0.0027861788, -0.003038924, -0.0043549933, -0.003266245, 0.031442095, 0.014835691, 0.0037896817, -0.005946241, 0.009786771, 0.0694406, -0.010492662, 0.00046997136, -0.00024227641, 0.033882804, 0.04438743, -0.016666224, -0.003714905, 0.06604276, -0.025866745, 0.063267045, -0.009379986, 0.012107839, 0.0041815112, -0.030149953, -0.0048754388, -0.04457886, -0.0057936963, -0.031298522, 0.016355153, 0.02187068, 0.08499415, 0.025388176, -0.03579709, -0.021523716, 0.020937467, 0.0016465823, -0.03426566, 0.008153648, -0.006347044, 0.0022926526, -0.002997049, -0.026249602, -0.017276403, 0.055227056, 0.028618528, -0.054652773, -0.030078167, -0.006050928, 0.009966235, -0.015194619, 0.012741945, -0.032303523, -0.0089432895, 0.0013370068, -0.02531639, -0.042784218, -0.039649583, 0.03625173, -0.0013915938, 0.060682762, 0.005303161, -0.0141298, -0.02383282, -0.021739073, 0.014285335, -0.005380929, 0.008530523, 0.0032782091, 0.004869457, 0.009098825, -0.016845688, -0.000660278, -0.0051177153, 0.008482666, 0.0043968684, -0.051637776, 0.011252393, -0.004465663, -0.015122834, -0.036634587, 0.03168138, -0.008291237, -0.0174439, 0.005066867, 0.012801765, 0.0053839204, -0.011952303, 0.008686058, 0.04622993, -0.007603292, 0.016917475, -0.022815857, -0.011025072, 0.0071845422, 0.0049831173, 0.012053999, -0.026656387, 0.002282184, -0.014871584, -0.010432841, -0.035605658, -0.030437095, -0.006095794, 0.025148889, -0.007519542, 0.052690633, -0.03493566, -0.027206743, 0.0074058813, 0.03153781, 0.03297352, 0.040606722, -0.027613528, -0.029958526, 0.050202064, -0.010582394, 0.041898865, 0.0077767735, -0.0055663753, -0.003179504, -0.010014092, 0.035222802, -0.03148995, -0.0147280125, -0.021906573, 0.01755158, -0.0143690845, 0.021439968, -0.010911412, -0.036156017, 0.0368978, 0.021404075, -0.025747104, -0.015972298, 0.003358968, -0.03316495, -0.0277571, 0.0119463205, 0.10882697, -0.04407636, -0.0060419547, -0.0010767841, -0.054174203, -0.0067777573, -0.00023180767, 0.026488887, -0.0047288765, -0.008201505, -0.025053175, 0.0096611455, 0.01477587, -0.0040110205, -0.022337288, -0.024012284, -0.046828143, 0.039601725, -0.050824206, 0.028977456, 0.004689993, 0.002262742, -0.012849623, 0.045177072, 0.011742928, 0.00955945, -0.010127752, -0.03005424, 0.008680075, -0.011784803, -0.019609435, -0.027781028, -0.049197067, -0.031418167, 0.05489206, 0.058720622, -0.008572398, 0.01272998, -0.037687443, -0.04914921, 0.055753484, 0.04328672, -0.016020155, 0.0555142, 0.02921674, -0.017934436, -0.008010077, 0.04426779, -0.059629906, 0.014261407, 0.015900511, 0.013914443, -0.033811018, -0.0548442, 0.01045677, -0.020351218, 0.017623365, -0.008638201, 0.048239924, -0.0011298755, -0.010414895, 0.0055364645, -0.026584601, -0.0048215995, 0.0010139716, 0.025412103, -0.015278369, 0.004304145, 0.00504593, 0.013244444, -0.021212645, -0.023091035, -1.397389e-05, -0.011384, 0.013029087, -0.0284271, 0.051015634, -0.012119803, -0.0053689647, -0.02279193, -0.025412103, -0.014883548, 0.04311922, -0.0275896, 0.012538552, 0.027541744, 0.012406945, -0.0036999497, -0.011868553, -0.002615688, 0.0047169123, 0.008686058, -0.029743169, -0.03103531, 0.044698503, -0.002545398, 0.014811763, -0.019286398, 0.049914923, 0.012149713, 0.01567319, 0.08202702, 0.00636499, -0.003179504, -0.023103, -0.020817826, 0.033811018, -0.00094891596, -0.06900989, -0.03247102, -0.016833724, -0.019753005, 0.025268532, -0.026799958, 0.013316229, 0.0005716676, 0.019154793, 0.008255345, 0.025818888, 0.0017841713, 0.0009362039, 0.027828885, 0.022409072, 0.014847656, 0.044339575, -0.0046241893, 0.023773, -0.018712115, 0.0048485193, 0.0045763324, 0.027637457, -0.039147083, -0.025507817, 0.012682123, -0.039099224, -0.017108902, 0.018329257, -0.015972298, -0.06963204, 0.061783478, 0.03349995, 0.026153889, -0.024622463, 0.0099303415, -0.011970249, 0.036634587, 0.023103, -0.029791025, -0.048790284, -0.021021217, -0.008524541, -0.02018372, 0.03117888, -0.03328459, 0.0018230552, 0.050489206, -0.008847576, -0.03314102, 0.00824338, -0.018101936, -0.010061949, -0.015529619, -0.0024317373, 0.036706373, 0.019836755, 0.052451346, -0.02711103, 0.038572796, 0.027852815, 0.03247102, 0.009565432, 0.005141644, -0.016187653, -0.010743912, -0.02921674, 0.03383495, 0.0044866004, -0.011198554, -0.020482825, 0.009577396, 0.023210678, 0.017515687, 0.00020526195, -0.036467087, -0.056902055, -0.008973201, -0.042712435, 0.0044447253, -0.0096611455, -0.0052164206, 0.017180687, 0.032829948, 0.03543816, -0.05077635, 0.024036214, 0.00549459, -0.024227642, -0.036491014, -0.038118154, -0.046469215, -0.019753005, -0.034074232, -0.006945257, 0.044363502, 0.019956397, -0.0045763324, 0.0025603531, -0.013866586, 0.0143690845, -0.0011829669, -0.001442442, 0.01648676, -0.008883469, -0.06154419, -0.05891205, -0.04292779, 0.0012555002, -0.016773902, -0.0272546, -0.001586761, 0.0017183679, -0.021475859, 0.028929599, 0.012801765, 0.051972777, 0.024526747, -0.014560513, -0.0065564183, -0.018329257, -0.010307216, 0.022050144, 0.015601404, 0.0028160894, -0.027685314, -0.00022694719, 0.01834122, -0.0014917946, 0.04622993, 0.0039182976, -0.014452835, -0.031083167, 0.016127832, 0.038668513, -0.007393917, 0.039266724, -0.034528874, -0.035773158, -0.02220568, -0.007160614, -0.044459216, 0.030484952, 0.032016378, 0.018987292, 0.04685207, 0.009290254, 0.0280921, 0.04261672, 0.044531003, 0.013495693, -0.009290254, 0.023031214, 0.045559928, -0.0046810196, 0.014381049, -0.0029850847, -0.03251888, -0.0034756197, 0.005599277, -0.04328672, -0.005823607, 0.0006800938, 0.0044866004, -0.019920506, -0.008422844, -0.0008150657, -0.027063172, -0.024107998, 0.055274915, 0.046947785, 0.00094442937, 0.0016241493, 0.025268532, -0.017491758, 0.009266325, 0.023784963, 0.016091939, 0.014931406, 0.05680634, -0.009463735, 0.020052113, 0.002262742, -0.035773158, -0.019776933, -0.007902399, 0.028833885, -0.056662768, 0.024837818, -0.031777095, -0.030772096, 0.03627566, -0.030508881, 0.0020369166, -0.011126769, 0.04194672, -0.006717936, 0.011258376, 0.05321706, -0.03512709, 0.026560673, 0.013280337, 0.0073699886, -0.050489206, -0.011479714, 0.019525684, 0.001445433, -0.028522814, -0.0102892695, 0.051829204, 0.013734979, 0.005509545, 0.005078831, -0.043214932, -0.011234447, 0.0035503963, 0.013196587, 0.017144796, 0.010384984, -0.0055334736, 0.016666224, -0.025292462, -0.036826015, 0.021715146, -0.019968363, 0.011808732, -0.04362172, 0.04359779, -0.017862651, -0.024012284, -0.04357386, 0.017276403, -0.014081943, -0.010247394, 0.004061869, -0.0053420453, 0.059869193, 0.005500572, -0.0058834283, 0.0044716448, 0.025747104, 0.06235776, 0.00075337494, 0.028953526, 0.022696216, 0.034193877], [0.021995302, -0.0051148375, -0.03215898, 0.021935305, -0.023123266, 0.01703946, -0.041422687, 0.0087537225, -0.0027554126, 0.041182693, -0.054382276, 0.03400692, 0.009437701, -0.039382752, 0.0012502103, 0.059806105, -0.025391195, 0.014471541, -0.0094797, -0.032974955, -0.0063837976, -0.049918417, -0.032374974, -0.009065713, 0.046750516, -0.007037777, -0.016223485, 0.018575411, -0.015635503, 0.031942986, 0.007835751, 0.018023428, 0.03568687, 0.0005238584, 0.02145532, 0.006389797, -0.035590872, 0.051934354, 0.0010357172, -0.009089712, -0.02901508, -0.0073017683, 0.008771722, -0.014015555, 0.0061138063, -0.011951621, 0.0016364481, -0.025151202, -0.039454747, -0.014339545, -0.0042718644, -0.018167423, -0.030743025, -0.0008452232, -0.09052513, 0.007859751, 0.044614583, -0.044806577, 0.075501606, -0.003404892, -0.04795048, 0.043702614, 0.08150142, 0.0013702066, -0.023819245, -0.0014392043, 0.041974667, 0.034174915, 0.029087078, 0.04855046, -0.00786575, 0.025055205, 0.035374876, -0.007991746, -0.00093297043, -0.049390435, 0.04627053, 0.028223105, 0.0346789, -0.009593695, 0.03369493, -0.011423638, 0.020051364, 0.0027614124, 0.054718263, -0.03376693, 0.01982337, -0.11798026, -0.022367291, -0.0010889655, -0.016211485, 0.00883172, 0.006401797, 0.016127488, -0.02551119, 0.043462623, 0.007751754, 0.013799562, -0.03369493, -0.0035818864, -0.02649516, -0.027335133, -0.09167709, -0.045766547, 0.0042058667, 0.02867909, 0.062302023, 0.004598854, -0.004475858, -0.0064917943, 0.024743214, -0.043174632, -0.01544351, 0.030023048, 0.008699724, 0.015083522, -0.05102238, -0.023663249, -0.043990605, -0.019667376, -0.08164541, -0.04915044, 0.06465395, -0.013499572, 0.0065877913, 0.0377748, -0.022115298, 0.050014414, -4.626416e-05, -0.0119396215, -0.055342246, 0.024227232, 0.035758864, 0.043894608, 0.054766264, 0.052750327, 0.06892581, -0.03595086, -0.05294232, 0.035878863, -0.03904676, 0.022847276, -0.02740713, 0.031271007, -0.015707502, 0.012803594, -0.03878277, -0.015035523, -0.041542683, -0.025103204, -0.009665693, -0.03213498, -0.02997505, 0.012113616, 0.04276664, -0.012563601, 0.025967177, 0.039454747, 0.005390829, 0.028919082, -0.004766849, -0.06378998, -0.0050608395, 0.049630426, 0.006749786, -0.06710187, 0.018239422, -0.025919179, -0.037678804, 0.019607378, 0.037366815, -0.002431423, 0.043774612, -0.03597486, -0.016259484, 0.0005437328, 0.04977442, 0.02491121, -0.01858741, -0.09234907, -0.012635599, 0.078285515, 0.04036672, -0.006671788, 0.012233612, 0.039454747, 0.030455034, 0.026639154, 0.026759151, -0.040486716, -0.0037768802, 0.014087553, -0.015839498, -0.042118665, -0.0038158789, -0.01765144, 0.0024944209, -0.024383226, -0.0075717596, -0.003059903, -0.027167138, -0.030743025, 0.033838928, -0.026711153, -0.052894324, 0.016595474, 0.024863211, -0.007439764, 0.0070137777, 0.038926765, 0.038998764, 0.038110793, -0.01354757, -0.017411448, 0.015479509, 0.023963239, -0.06820583, -0.015587506, -0.0012517103, -0.047110505, 0.04919844, -0.012071617, 0.024155233, -0.022283293, 0.040150728, 0.017531443, 0.0025694184, 0.007475763, 0.06844583, 0.005759817, -0.035350878, -0.03695883, -0.022823276, 0.01762744, -0.087789215, -0.038110793, -0.024023239, -0.00725377, 0.03088702, 0.009527698, 0.012863592, 0.012263611, -0.006599791, -0.015635503, 0.031702995, 0.032398973, -0.015971493, 0.021311324, -0.004316863, 0.025151202, 0.017279452, 0.027239136, 0.029255072, 0.052126348, -0.025439193, 0.093453035, 0.032374974, -0.016355481, -0.00036955078, 0.039166756, -0.027503127, 0.02491121, -0.0059638107, 0.06806184, -0.024863211, 0.018719407, 0.0009832188, -0.06393397, -0.05582223, 0.0016469478, 0.042814642, -0.049966414, 0.024335228, 0.014795531, 0.05102238, 0.008189741, 0.06052608, 0.024203232, -0.006407797, 0.034918893, -0.007835751, 0.025199201, 0.046606522, -0.0059218123, 0.027047142, 0.018083427, -0.019487381, -0.055438243, -0.045166567, -0.0039448747, -0.008969716, 0.002084934, 0.041062698, 0.003809879, 0.050158408, -0.015383512, 0.019439382, 0.009263706, -0.028295102, 0.02297927, -0.01832342, -0.032974955, -0.06858982, -0.046366528, 0.005870814, 0.08572528, 0.030479033, 0.11404438, -0.01451954, 0.0010702161, 0.070461765, 0.00055010756, -0.027671123, -0.004037872, 0.0024044237, -0.029135076, -0.0032338975, 0.022067301, 0.062638015, -0.023123266, -0.011621632, -0.022859275, -0.12594801, 0.031726994, 0.051502366, 0.020255357, 0.005126837, 0.0019154393, -0.008153741, 0.033046953, -0.0441826, -0.025103204, 0.004004873, 0.047158506, -0.05836615, -0.101372786, 0.004844846, -0.060622077, 0.002269428, -0.0032398973, 0.004835847, -0.005924812, -0.049726423, -0.009905686, 0.006803784, -0.013199582, -0.027239136, 0.0052468334, 0.037606806, -0.0021029334, 0.001418955, 0.014147551, 0.03820679, 0.0077037555, -0.014147551, 0.0096056955, -0.002897908, -0.03964674, 0.0055168252, 0.010211676, 0.06508593, -0.049078442, 0.017831434, 0.066957876, -8.905968e-06, -0.05102238, -0.009599696, -0.011051649, -0.014795531, 0.0010792158, -0.040534716, 0.036478844, -0.018479414, 0.0030104045, 0.00883172, -0.016811466, 0.051358372, -0.01858741, -0.061102062, 0.039382752, 0.010265674, -0.051550366, -0.0019049395, 0.052798327, 0.02427523, 0.017759437, -0.055630237, -0.004283864, 0.015011524, 0.006053808, -0.043030635, -0.0039238757, -0.0048658457, -0.031966984, 0.029087078, 0.04691851, 0.008147742, 0.010787657, 0.013283579, 0.044374593, 0.0021029334, 0.025031205, -0.030647028, -0.07180572, 0.04192667, -0.037150823, 0.0051238374, -0.023423256, -0.00094946986, 0.0441106, -0.004037872, 0.022643281, -0.008873719, 0.0062878006, 0.02997505, -0.019199392, -0.028463097, 0.04442259, 0.023759246, 0.04797448, 0.054718263, -0.040582713, -0.020075364, 0.015335513, -0.06211003, 0.03688683, -0.021959303, -0.005459827, 0.014627536, -0.055726234, 0.021887306, 0.008843719, 0.003440891, -0.015311514, -0.0031019016, -0.049870417, -0.022463288, -0.073245674, -0.0030959018, 0.05414228, 0.007223771, -0.058750138, 0.017219454, 0.021203328, -0.025775183, -0.006845783, -0.04000673, -0.011057649, 0.025007207, -0.034222916, -0.0346549, -0.012143615, -0.05457427, -0.01546751, 0.016355481, -0.024719216, -0.012431606, 0.028415099, 0.02584718, -0.056638204, 0.0153595125, 0.008903718, 0.063214, -0.018119425, 0.03280696, 0.004889845, -0.033334944, 0.044134602, -9.702817e-05, 0.019871369, 0.0023099268, -0.011177645, -0.048694454, 0.010661662, -0.021623313, -0.03215898, -0.0059398115, -0.027911115, 0.023879243, 0.024491223, -0.033550937, -0.0064917943, 0.00850173, 0.058222152, 0.027983112, -0.03847078, 0.03628685, -0.001134714, 0.078045525, -0.004319863, -0.022835275, 0.011645631, -0.017531443, 0.00084597315, -0.0045598554, -0.022907274, -0.015899496, -0.009293705, 0.034870893, -0.012335609, 0.038302787, 0.04670252, 0.020003365, 0.035422876, 0.032662965, 0.0043588616, -0.019979367, -0.021047333, 0.03184699, -0.014411543, -0.0067377863, -0.036982827, -0.0378228, 0.03374293, -0.00756576, -0.01640348, -0.013787563, 0.030191042, 2.0964178e-05, 0.03285496, 0.014735533, -0.022739278, -0.03278296, -0.01795143, -0.0220433, 0.0021869307, -0.008471731, 0.012683597, 0.006335799, -0.029471066, -0.011387639, 0.0012607101, -0.010361671, 0.0003119901, -0.0072657694, 0.017387448, 0.014411543, 0.009569696, 0.014363544, 0.0037378815, -0.017795436, 0.0157675, 0.008105743, 4.5795423e-05, -0.0001229961, 0.039622743, 0.0663339, -0.017195454, -0.027287135, 0.04706251, -0.025319196, 0.051598363, 0.03129501, 0.024431225, 0.02144332, -0.018839402, -0.037654806, -0.05107038, -0.00034573904, -0.0536143, -0.007715755, -0.0054688267, 0.06815784, 0.013199582, -0.038974762, -0.045862544, 0.05107038, -0.016439479, -0.033670932, 0.0013919559, 0.0020129362, 0.064461954, 0.009815688, 0.010289674, -0.004442859, 0.09628495, -0.019475382, -0.036166854, -0.010583664, -0.010511667, -0.008651726, -0.017375449, -0.011249643, -0.038542777, 0.015587506, 0.036406845, -0.025103204, -0.018707406, -0.058798134, 0.00029549064, -0.009815688, 0.010103679, 0.014351545, -0.023927242, -0.016607473, -0.009515698, 0.034774896, 0.019463383, 0.027959114, 0.04288664, -0.01354757, -0.028943082, 0.013391575, 0.0004916094, -0.018983398, 0.0069117807, 0.020279357, -0.06806184, 0.042382658, 0.014267547, -0.08006146, -0.0053068316, 0.04029472, -0.010769659, 0.018575411, -0.012479604, -0.0076797563, 0.061582047, 0.013139583, 0.018095426, 0.06172604, 0.01922339, 0.043102633, -0.048430465, 0.03316695, 0.022211295, -0.036310848, 0.006029809, -0.007151773, -0.0067017875, -0.004451859, 0.0002553669, -0.04262265, -0.024491223, 0.025151202, -0.0013312078, 0.02299127, 0.024671217, -0.011447637, -0.011591632, 0.012059618, 0.036118854, 0.021899305, 0.04223866, -0.033958923, -0.050830387, 0.037606806, -0.014903528, 0.053758293, -0.020435352, -0.025103204, 0.014963525, -0.00082947366, 0.05735818, 0.034774896, -0.00694178, 0.006863782, -4.6240722e-05, -0.025487192, 0.011705629, -0.028583093, -0.027647123, 0.013679566, 0.057598174, 0.012203613, -0.013751564, -0.006014809, -0.02966306, -0.02301527, -0.0220553, 0.05961411, -0.029855054, -0.048070475, -0.032638963, -0.00535783, -0.004229866, -0.006467795, 0.03979074, -0.036742836, -0.031343006, -0.039574746, -0.028007112, -0.024491223, -0.013991556, -0.026111173, -0.018755404, -0.033478938, -0.0025349197, -0.049342435, -0.016415479, -0.005759817, -0.041014697, -0.0056578205, 0.032038983, 0.008807721, -0.011513635, -0.019463383, -0.017423447, 0.0072117713, 0.0024059238, -0.0009337204, -0.019691376, -0.021071332, -0.001385206, 0.06239802, 0.024671217, 0.007961747, -0.0006464795, -0.025151202, -0.06023809, 0.012827593, 0.009077712, 0.0009569696, 0.06906981, 0.04821447, 0.014951526, 0.004133869, -0.0034138917, -0.06911781, 0.06119806, 0.012959589, 0.0033658931, -0.019355386, -0.044662584, 0.05294232, -0.046774518, 0.012971588, -0.00062848005, 0.06686188, -0.012467604, 0.026303167, -0.038638774, -0.021731311, -0.0041458686, 0.026231168, -0.004451859, -0.009707692, -0.0034138917, 0.015695503, 0.01792743, 0.014195549, -0.024959208, -0.009755691, -0.03441491, 0.031319007, -0.025775183, 0.01729145, -0.0017129456, 0.0067257867, -0.0070077777, -0.021311324, -0.014783531, 0.002242429, -0.029231073, 0.020363353, 0.044350594, 0.00025817932, -0.034630902, -0.011921622, -0.048958447, -0.0038428782, 0.0111716455, -0.011609632, -0.026351165, 0.019751374, -0.0039358754, 0.002773412, -0.020699343, -0.0057478175, 0.009035713, 0.020291356, 0.076221585, -0.02049535, -0.02171931, -0.013775563, -0.014687534, 0.013715565, 0.0088917175, -0.025943177, -0.014807531, 0.008939716, 0.0016769468, 0.008765722, -0.018827403, 0.017891433, 0.01701546, -0.026087172, -0.0037678804, 0.013739564, -0.006647789, 0.019751374, 0.036670838, 0.040846705, 0.026303167, 0.052606333, -0.006215803, 0.023435257, -0.020015365, 0.03129501, -0.004634853, 0.010565665, -0.034486905, -0.0060448083, 0.024839211, 0.0011377139, 0.0056548207, -0.0071157743, -0.016847465, -0.029879052, 0.032686964, 0.0088917175, 0.02963906, -0.0251752, 0.026399164, -0.0005774817, -0.0008062244, 0.01640348, -0.015599505, -0.021623313, 0.0034078918, 0.0017474446, -0.05553424, 0.01826342, 0.014003556, 0.041662678, 0.048046477, 0.031247009, -0.010595664, -0.034486905, -0.0125996005, -0.03436691, -0.02740713, -0.029375069, 0.015227517, 0.014471541, 0.04343862, -0.0025379194, 0.048070475, 0.018239422, 0.030551031, 0.010559665, 0.015383512, -0.020843338, 0.006671788, -0.04850246, 0.020339355, -0.011807625, -0.021191329, -0.004574855, 0.049918417, 0.015479509, 0.033670932, 0.0252232, -0.026615156, -0.017735437, -0.004151868, -0.056542207, -0.0060058096, 0.016295483, 0.0283431, -0.0072357706, 0.026327165, 0.04509457, -0.034510907, -0.010361671, -0.016295483, -0.0034648902, -0.06417397, -0.012419606, -0.026159171, -0.044278596, -0.03244697, -0.007721755, 0.048070475, 0.020171361, -0.06307, 0.009575697, -0.017459447, 0.01039767, -0.004346862, -0.012383607, 0.00568782, -0.0409907, -0.024047237, -0.0012584601, -0.011159646, 0.010337672, -0.0048028477, 0.007091775, 0.025967177, -0.028511096, -0.026063174, 0.03628685, -0.010289674, 0.0059218123, 0.0098936865, -0.011855624, 0.012005619, -0.03751081, 0.0066297897, 0.013655567, -0.009677693, 0.01826342, 0.0017129456, 0.017759437, -0.015203518, 0.009629695, 0.01856341, 0.02014736, -0.023255263, -0.037990794, 0.018527413, 0.04319863, -0.031511, -0.0022409288, 0.005381829, -0.059086125, -0.0037678804, -0.010373671, -0.03539888, 0.028535094, 0.04255065, 0.041830674, 0.036982827, -0.010019682, 0.024203232, 0.028919082, 0.052126348, 0.008441732, -0.036094856, 0.02613517, 0.00789575, 0.03398292, 0.016883465, 0.014099553, -0.039550744, 0.008153741, 0.021587316, 0.002171931, -0.023735248, 0.031151012, 0.094748996, -0.007793753, -0.009263706, 0.03374293, -0.0567342, -0.010157678, 0.028775087, 0.03628685, -0.004748849, -0.023231262, 0.0283671, -0.024671217, -0.020171361, -0.016643472, 0.0035218883, 0.03088702, 0.028199106, -0.019127393, -0.012047618, 0.014111552, -0.031415004, 0.012659598, 1.6792435e-05, 0.06978979, -0.01198762, 0.036694836, -0.046726517, 0.011015651, 0.029519064, -0.04475858, -0.016751468, -0.01387156, 0.030383036, 0.031103013, 0.008009746, -0.011099648, -0.0035578872, -0.049918417, 0.012995588, 0.0023459257, -0.051838357, 0.0151675185, 0.028607093, -0.018179424, -0.013631567, -0.055342246, 0.03436691, 0.0036838832, -0.015779499, 0.032278977, -0.038614776, -0.0019604377, 0.0018509413, -0.01544351, -0.004142869, 0.02620717, -0.0075177616, 0.00252442, -0.040582713, 0.030407036, -0.020963335, -0.054958258, 0.011819625, -0.06532593, 0.0019649377, -0.019103395, -0.032230977, -0.04540656, 0.001766944, 0.018719407, 0.015395512, 0.008141742, -0.006239802, -0.0032278977, 0.01610349, 0.04043872, 0.0035098887, -0.006809784, 0.07545361, 0.007337767, -0.011243643, -0.0057238187, -0.01232361], [-0.018155338, 0.005995115, -0.026201712, 0.06174175, 0.031188197, -0.013112189, -0.0022864167, -0.026768358, 0.005581463, -0.03712665, -0.016512066, -0.033318788, -0.017815351, 0.0021036733, -0.027878985, 0.04682763, -0.05947517, -0.009814309, -0.008890676, -0.017668024, 0.00055495894, -0.06441632, -0.036537334, 0.023935128, 0.030870875, 0.006743088, 0.0061027776, -0.001964845, -0.012364216, 0.021192562, 0.03372677, -0.00023568934, 0.043473084, -0.008108704, 0.044243723, -0.020399258, -0.013225518, -0.0035840361, -0.05770723, 0.03989188, -0.010210961, 0.025045754, -0.0072247367, 0.011604911, 0.011412251, -0.0022665842, -0.009542319, 0.014234148, 0.02130589, 0.007513726, -0.0007819715, -0.053536717, -0.005836454, -0.0122622205, -0.017611358, 0.047779594, 0.054352686, -0.14016557, 0.039755885, -0.0071340734, -0.024773763, 0.017214706, 0.027765656, -0.034542743, -0.024161786, -0.011854235, -0.03438408, 0.03263881, 0.011808903, 0.00060241553, -0.022461848, 0.004419839, 0.022371186, 0.007253069, 0.0058024554, -0.08898609, 0.06622959, -0.0047343276, -0.017792685, -0.032253493, 0.018280001, -0.019617286, -0.004408506, 0.004419839, 0.010012635, -0.02572573, -0.009440322, -0.10235894, -0.011854235, -0.015458103, 0.013554173, 0.0018543492, 0.021974534, 0.0075930567, -0.03170951, -0.020342592, 0.0070377435, 0.0056211287, 0.0077970494, 0.00019673242, -0.015684763, -0.02812831, -0.051814113, -0.052947406, -0.01501612, 0.043745074, 0.048550233, -0.04152382, -0.03236682, 0.082095675, 0.01586609, -0.029760249, -0.020999901, -0.002528658, 0.010171296, 0.016092747, -0.0420678, -0.04746227, -0.036492005, 0.029828247, -0.098732404, -0.029170938, 0.06341902, 0.0164894, -0.011423584, 0.01088527, 0.0038220275, 0.03254815, -0.027176343, -0.0058987853, 0.034270752, 0.031074869, 0.06876816, 0.02774299, 0.019583287, -0.0040685185, 0.006884749, -0.03182284, -0.04655564, -0.03270681, -0.020195264, -0.014585469, -0.019617286, 0.028989611, -0.02735767, 0.0029890577, -0.043971732, -0.0012097893, -0.051859446, -0.03705865, 0.017532028, -0.0022665842, -0.01703338, 0.016988048, 0.056165956, -0.020172598, 0.011332921, 0.04168248, -0.0320495, 0.024048457, 0.01978728, -0.059973817, 0.008040708, 0.013644836, -0.011616244, -0.08812479, 0.059067182, -0.007836714, -0.03143752, 0.012296218, 0.0146874655, -0.052403424, -0.0070887418, -0.009440322, 0.010154297, 0.022031197, 0.046079654, 0.0031562184, -0.012058227, -0.061016444, -0.01307819, 0.039529227, 0.06904015, -0.03869059, 0.007485394, 0.01528811, -0.011729573, 0.009400657, 0.020807242, -0.033613443, -0.021249225, -0.021781873, -0.0014201566, -0.029601589, 0.023085158, -0.017407365, -0.051088806, -0.045513008, 0.015820757, -0.00904367, -0.012024228, -0.022745172, -0.013508841, 0.007570391, -0.014109486, 0.017226039, 0.050318167, 0.01482346, -0.0033432115, -0.0013677418, 0.029420262, 0.016421402, 0.0035528706, -0.014109486, -0.025771061, 0.002093757, -0.048686225, 0.002904061, -0.027108345, -0.057299245, 0.07819715, -0.031210864, 0.031097533, -0.016852053, -0.007542059, 0.01850666, 0.013962158, -0.02056925, -0.017974012, -0.012760868, 0.027992314, -0.05743524, -0.011797571, 0.0081540365, -0.048867553, -0.0030457224, -0.028264305, 0.021283224, 0.046034325, -0.020886572, 0.031845506, 0.05195011, -0.04791559, -0.05389937, 0.002222669, 0.057072587, -0.02332315, -0.014188817, -0.0061027776, -0.01956062, 0.029964242, -0.028060311, 0.047008954, 0.02386713, -0.0058931187, 0.019197967, 0.0065220958, -0.029850913, -0.017350702, 0.020659914, -0.0339081, 0.044561043, -0.032389488, 0.081189044, -0.046782296, -0.011876901, 0.028649623, -0.03282014, -0.06690957, -0.019390628, 0.035653368, -0.053536717, -0.015299443, 0.0069357473, 0.045785, -0.0329108, 0.047598265, 0.013984824, 0.008953007, 0.040571857, 0.025453739, 0.057480574, 0.01571876, 0.0023487478, 0.074706614, 0.034293417, 0.012273553, -0.025657732, -0.051315464, 0.020897906, 0.011888234, -0.035200052, 0.018687986, 0.03379477, 0.03612935, -0.009632982, 0.018483993, 0.055440646, -0.043473084, 0.03374944, 0.022552513, -0.0009477155, -0.035653368, -0.027063014, -0.02071658, 0.019775946, -0.028400298, 0.12012896, 0.008817012, -0.027833654, 0.06505097, -0.014857459, -0.013236851, -0.04621565, 0.02239385, -0.0077007194, 0.01327085, 0.011553912, 0.039257236, -0.0114802485, -0.038939916, -0.021487217, -0.07792516, 0.016682059, 0.03526805, -0.04175048, -0.024524441, -0.047552936, -0.054579344, -0.0065277624, -0.061288435, -0.004343342, 0.019979939, 0.009882307, -0.004717328, -0.09170599, -0.025136419, -0.07579457, 0.047824923, -0.014868792, -0.026201712, 0.028740287, -0.02599772, -0.011247924, -0.003187384, -0.0004235679, -0.021521216, -0.033114795, 0.026020385, -0.04016387, 0.0014010323, 0.082412995, 0.050816815, 0.029238936, 0.00095834007, -0.029170938, 0.014993454, -0.057480574, 0.0015653596, -8.574948e-05, 0.058432538, -0.04900355, 0.047326278, 0.039370567, -0.024909759, -0.0878528, -0.021997198, -0.022371186, -0.059339173, 0.05553131, -0.038395934, -0.005357638, 0.016194744, -0.04100251, -0.020852573, -0.021906536, 0.016546063, -0.015446771, -0.08862344, 0.012318885, -0.04437972, 0.014143485, -0.026383039, 0.0074173966, -0.012284886, 0.037897285, -0.037579965, 0.030893542, 0.032842804, -0.0060007814, 0.0048561567, 0.06278438, -0.0065674274, -0.035494708, -0.0016503566, 0.039325234, -0.0429971, 0.013996157, -0.00076072227, 0.005082815, 0.01699938, -0.028468296, 0.0027255674, -0.019447291, 0.05988315, -0.00065837184, -0.0033573776, -0.02556707, -0.0031080535, 0.016908718, -0.0073267333, 0.042974435, -0.04462904, 0.0082277, -0.0027793988, 0.028082978, -0.027289672, 0.024705768, 0.012760868, -0.005776956, 0.00040267283, -0.063917674, -0.010142964, 0.038441267, -0.04900355, 0.05716325, -0.07416263, 0.033704106, 0.00933266, -0.04431172, -0.016784055, 0.047552936, 0.017781353, 0.008556355, -0.0219632, -0.060744453, -0.0448557, -0.06831484, 0.03705865, 0.006085778, 0.025793727, -0.00091867486, 0.029533591, 0.01342951, -0.026451036, 0.001453447, -0.059203178, 0.02615638, 0.031029537, 0.022654507, 0.004654997, -0.035064057, -0.050454162, -0.025635066, 0.08105305, -0.015492102, 0.03805595, -0.05068082, -0.0050346497, -0.05335539, 0.00896434, 0.037919953, 0.048459567, -0.030938873, 0.017101377, -0.006352102, -0.0018401829, 0.041229166, -0.0012537043, 0.006607093, 0.00028367716, -0.001114876, -0.086674176, -0.0020852573, -0.019175302, -0.043291755, -0.04621565, -0.016262742, 0.020059269, -0.03558537, 0.02708568, -0.050544824, -0.0083126975, 0.028377634, 0.036220014, -0.03601602, 0.0090153385, -0.0052896407, 0.050816815, 4.8740414e-05, -0.010074967, 0.030054905, 0.032344155, -0.035789363, 0.009814309, 0.009649982, -0.058568534, -0.060608458, 0.027946983, -0.0030825543, 0.023413815, 0.0015497769, 0.02114723, 0.033114795, 0.038327936, 0.011043931, -0.044243723, -0.009921972, -0.022597844, -0.04233979, -0.0070320773, -0.022541178, -0.027380336, 0.049139544, -0.023663139, -0.0029125605, -0.015548767, 0.034701403, 0.042906437, 0.024909759, -0.015412772, -0.025000423, -0.045694336, -0.044334386, -0.025204415, 0.017996678, 0.029374931, -0.0074627283, -0.013010193, -0.02611105, -0.03624268, -0.013508841, -0.015741426, 0.008669685, -0.007768717, -0.031505518, 0.028309636, 0.025680399, -0.03973322, 0.05281141, -0.011412251, 0.08059973, 0.0021943368, 0.011060931, -0.017826684, 0.012658873, 0.021249225, 0.0292616, 0.0053264727, 0.00888501, -0.050227504, 0.016580062, -0.01199023, 0.023085158, 0.0017240206, -0.0429971, 0.011548246, -0.029420262, 0.024841761, -0.013338847, 0.027403003, 0.008171036, 0.030440224, 0.07366399, -0.027380336, -0.02343648, 0.034905396, 0.04435705, -0.017328035, 0.012001563, 0.004456671, 0.03862259, 0.004309343, -0.0075987233, -0.0059271175, 0.05127013, 0.012114892, -0.075885236, 0.0058421204, -0.041115835, -0.015197447, -0.022960497, -0.0010674194, -0.02409379, 0.004346175, -0.010273293, -0.00906067, -0.0347694, -0.031029537, 0.018619988, -0.028060311, 0.01482346, 0.018495327, -0.01455147, -0.003190217, 0.025385741, 0.011661575, 0.0020328427, -0.017634025, -0.025521737, 0.023300484, -0.0049638194, 0.0052131433, -0.012749536, -0.054896668, -0.006352102, 0.02774299, -0.054534014, -0.03372677, 0.012828866, -0.04360908, -0.029782915, 0.0105792815, -0.020047937, 0.0113215875, -0.022212524, 0.021407887, 0.06033647, -0.0025895725, 0.068813495, 0.025793727, -0.013440844, 0.034542743, -0.0070490767, 0.015163448, 0.0122622205, -0.010222294, 0.008431693, -0.015276777, -0.012341551, -0.022665842, -0.010975934, -0.012976194, -0.03499606, -0.019492622, 0.021181228, 0.018687986, 0.011661575, -0.044243723, 0.018608656, 0.027856318, 0.030870875, 0.000331665, 0.011695574, -0.030440224, -0.039687887, 0.03667333, 0.036106683, 0.058749862, 0.0050346497, 0.017441364, 0.039053243, -0.0017991011, 0.02762966, 0.01123659, -0.047824923, -0.0075987233, 0.019843943, -0.012171556, 0.015888754, -0.04431172, 0.00046783712, -0.018166672, 0.0138261635, -0.01730537, -0.03433875, -0.046963625, -0.0348374, -0.008063373, 0.039529227, 0.06056313, -0.050590158, -0.04156915, -0.03279747, -0.047507603, -0.0072190706, -0.015401439, 0.07457062, -0.032525484, -0.022019865, -0.03146019, -0.03275214, 0.008369362, -0.027901651, -0.019923273, -0.014143485, 0.018653987, -0.028377634, -0.024728432, 0.012953528, 0.004924154, -0.0448557, -0.013939492, 0.06591227, 0.0030485557, 0.014562803, 0.024592437, -0.030553553, -0.0028303969, -0.013792165, -0.019061973, -0.01327085, -0.016682059, -0.03329612, 0.00063924753, 0.0047314945, 0.00667509, 0.0048561567, -0.048958216, 0.0035755364, 0.02855896, 0.0063974336, 0.028241638, 0.038282607, 0.04655564, 0.017373368, 0.0056211287, 0.0070377435, -0.020580584, -0.018280001, -0.00832403, 0.011684241, 0.020523919, -0.036967985, 0.023799133, -0.06192308, 0.033092126, -0.010006969, 0.043722406, -0.0015710262, -0.01171824, -0.011383919, -0.012545543, 0.003042889, -0.03166418, -0.011684241, 0.00043242174, -0.012046895, 0.018517992, 0.037670627, 0.0007798466, -0.048459567, -0.011043931, -0.059928484, 0.014664799, -0.047598265, 0.03721731, -0.012477546, 0.017838016, 0.03130153, -0.011627576, -0.013565506, 0.023935128, -0.026995016, 0.025635066, 0.026473703, 0.030938873, 0.019424627, 0.015299443, -0.02226919, -0.0043263426, -0.0025824893, 0.0025045755, -0.011208259, 0.019277297, -0.0009795893, 0.038599927, -0.04039053, 0.027153678, 0.03170951, 0.009423324, 0.050590158, -0.023912461, 0.01509545, 0.016478067, -0.009995636, -0.015061451, -0.01109493, -0.028626958, 0.015537434, 0.0037398639, -0.0015356108, 0.00585912, -0.052766077, 0.033386786, -0.016863385, 0.030304229, -0.0142568145, 0.0009229247, -0.018019343, 0.021249225, 0.016682059, 0.031188197, -0.018574657, 0.027335005, -0.007876379, 0.051678117, -0.021441886, 0.0153901065, -0.019798612, -0.017702023, -0.01784935, 0.00091513334, 0.016013417, 0.018721985, -0.030508222, -0.0014959455, -0.012579542, -0.036220014, 0.011525581, 0.029216269, 0.008256033, 0.026519034, 0.036696, -0.0030853876, 0.025771061, 0.019605953, 0.009734979, 0.002770899, 0.017056046, 0.010856938, -0.022099195, 0.013282183, -0.015696095, 0.03418009, 0.049184874, 0.028513629, -0.018076008, -0.015152114, 0.011434916, -0.054262023, -0.04082118, -0.0034622073, 0.017781353, 0.019549288, 0.0048023253, -0.03628801, 0.03003224, 0.03395343, -0.00014538012, -0.02670036, 0.0007500977, -0.0047569936, -0.02719901, -0.010233628, 0.012976194, 0.0016248575, 0.013089524, 0.022586511, 0.039778553, 0.05371804, 0.024977757, 0.012624874, 0.0030853876, -0.03220816, -0.026179047, -0.043971732, 0.042589117, -0.017044712, 0.019175302, 0.004541668, 0.0067770863, -0.017101377, -0.00952532, -0.004717328, -0.005513466, -0.00923633, -0.056709934, -0.009553652, -0.088215455, -0.026723027, -0.0035840361, 0.02665503, 0.038418602, -0.0012947862, -0.044221055, 0.026496368, -0.010732275, 0.033205457, -0.012760868, -0.006216107, 0.014902791, -0.035472043, -0.045218352, 0.01520878, -0.035834696, 0.002991891, -0.019617286, -0.044175725, 0.017804017, 0.012443547, 0.007621389, -0.014324811, 0.038985245, 0.009281662, 0.018280001, 0.006414433, -0.0012699955, -0.008114371, -4.5508757e-05, 0.019379294, -0.023028495, 0.0038673591, -0.052856743, 0.052403424, 0.037670627, -0.009649982, -0.0002819064, -0.014324811, -0.048550233, -0.035517372, 0.02095457, 0.025136419, -0.043994397, 0.023141824, -0.029669587, -0.029760249, -0.0040090205, 0.031754844, -0.057208583, 0.007978376, 0.03728531, -0.025045754, 0.036763996, -0.016319405, 0.019288631, -0.00585912, -0.0024592439, 0.012352884, -0.041614484, 0.0016758556, 0.011066597, 0.041954473, -0.011117595, -0.015922753, -0.038735922, 0.0146874655, 0.016852053, -0.059520498, -0.016523398, 0.025453739, 0.09782577, 0.009593317, -0.017248705, -0.020161266, -0.02855896, -0.019957272, 0.0119109, 0.016172078, -0.023776468, -0.007576057, 0.02867229, -0.04986485, 0.017180707, -0.0069980784, -0.0037851955, 0.008108704, 0.043835737, -0.015877422, 0.018903311, 0.017826684, 0.0072927345, 0.007836714, 0.0024521607, 0.021521216, 0.018959977, 0.029578922, -0.014766796, -0.016738724, 0.022484515, -0.036990654, -0.0035443709, 0.00925333, 0.038758587, 0.012375549, 0.038010616, 0.022643175, -0.005380304, -0.020897906, 0.023255153, 0.01839333, -0.045490343, 0.019084638, -0.0031930504, -0.024615103, -0.03422542, -0.0060404465, 0.03880392, 0.017588694, -0.02281317, 0.018631322, -0.04687296, 0.02425245, 0.058387205, -0.004272511, 0.016194744, 0.015140782, 0.027901651, 0.0031165532, -0.016500732, 0.015934085, -0.028218972, 0.0045615006, 0.015299443, -0.06999212, 0.007814049, 0.01594542, 0.0018869312, -0.043745074, -0.04587566, 0.036718663, 0.026405705, 0.0037965283, -0.03837327, 0.0023501643, 0.035880025, 0.042271793, -0.010856938, -0.0055106324, 0.1244808, 0.02409379, -0.0074910605, -0.012658873, 0.00595545], [0.011615093, 0.03908013, -0.030739289, 0.015393074, 0.06555528, 0.038869265, -0.062837474, -0.0032918216, -0.021777567, 0.021695565, -0.014092745, 0.028654078, 0.023429336, -0.06358722, 0.04163393, 0.015615652, -0.0015551221, 0.02258588, -0.061244283, -0.0076262485, 0.008885575, -0.08776629, -0.048076995, -0.009635314, 0.0125932675, 0.0253974, -0.009430308, 0.037158925, -0.0065016407, 0.0056933286, 0.03596403, 0.03209819, 0.040977906, -0.0034792563, -0.004554077, -0.03355081, -0.001198557, -0.0026885162, -0.043859717, 0.042055655, 0.010010184, 0.021543274, -0.007386098, 0.0026943735, 0.050513647, -0.004132349, -0.012757273, -0.027295176, 0.0026592296, -0.044562597, -0.0022433589, -0.007017086, 0.03249649, -0.016775405, -0.025256824, 0.03315251, 0.049529616, -0.1351404, 0.030247271, -0.008065549, -0.0455232, 0.016447393, -0.0024234718, -0.047397546, -0.012358975, -0.0106603475, 0.015744513, -0.008446275, 0.017560286, 0.026193997, 0.007772682, 0.0010023363, -0.0009818355, 0.0053243167, 0.07370869, -0.038892698, 0.041329347, 0.024858525, -0.00024271327, -0.027951198, 0.025819128, -0.036081176, 0.0091374405, -0.006560214, 0.016025666, 0.0023107182, 0.020992685, -0.090530954, 0.016482538, -0.024507085, 0.010379195, 0.014022457, 0.015322785, 0.0120075345, -0.07689508, 0.01618967, 0.024928812, 0.0058895494, 0.016236529, -0.024507085, -0.030575283, -0.046718094, -0.021929858, -0.058995068, 0.0033211082, -0.010144902, -0.014549618, 0.027342035, -0.017033126, 0.016810548, 0.017009698, -0.042781968, 0.0044896463, 0.02928667, -0.030528424, -0.0015756228, -0.00088592176, -0.022644453, -0.025256824, 0.00049018563, -0.05534009, 0.01102936, 0.040767044, -0.016751975, -0.006314206, 0.011960676, 0.011538948, 0.053653177, -0.0044896463, -0.034651987, 0.009342448, -0.0029535606, -0.020699818, -0.0009357091, 0.07225607, 0.024389938, 0.026381431, -0.04191508, -0.044539165, 0.010543201, -0.03069243, 0.018298311, -0.019036336, 0.018192878, -0.0032244623, 0.015170495, 0.01059006, -0.038845837, -0.007895686, -0.0075559607, -0.01425675, -0.01777115, 0.007737538, -0.0005326513, 0.02893523, 0.016283387, 0.025373971, 0.058995068, 0.0074681006, -0.01480734, 0.046858672, -0.016248245, 0.009436165, 0.07258408, -0.025139676, -0.041727647, 0.049763907, 0.004650723, -0.022492161, 0.045288906, 0.005810475, -0.053653177, 0.017876582, -0.025983132, -0.01583823, -0.010900498, 0.029825544, 0.010256192, -0.022995893, -0.048405007, -0.006618787, 0.027107742, 0.0775511, -0.040345315, -0.004138206, 0.025491117, 0.00626149, -0.0013662231, 0.03387882, -0.037158925, -0.018638037, -0.031770177, 0.023909636, -0.031207874, 0.005854405, -0.009242873, 0.02306618, 0.004097205, -0.012276972, 0.025819128, -0.009365877, -0.07263094, -0.034675416, 0.013706161, -0.003719407, -0.0023341475, 0.051216528, 0.045921497, 0.047631837, 0.015357929, 0.034300547, -0.0042143515, -0.008416989, 0.006226346, 0.02680316, -0.0017938085, -0.060447685, -0.06841366, 0.021426126, -0.06138486, 0.049951345, -0.029005516, 0.021367554, 0.0013925812, -0.017009698, 0.01252298, -0.019844647, -0.018556034, -0.004946518, 0.045710634, 0.039642435, -0.02680316, 0.008528278, -0.00046529196, -0.022972463, -0.014584761, -0.00043637137, 0.022574164, 0.076379634, -0.01729085, 0.059885383, 0.026193997, -0.037791517, -0.013917025, 0.009412736, 0.0332228, 0.008885575, 0.025444258, -0.0021745353, -0.0128509905, 0.022984179, -0.024975672, 0.044492308, 0.036573194, -0.07005371, 0.044023722, 0.029778685, -0.024413368, 0.010578345, 0.0069877994, -0.027576327, 0.027552899, 0.039993875, 0.026850019, -0.015346215, -0.01340158, 0.044960894, -0.061197422, -0.02502253, -0.03355081, 0.03917385, -0.004967019, 0.060025956, 0.013448439, 0.03167646, -0.06068198, 0.04835815, 0.024202503, -0.034042824, 0.034956567, 0.0023590412, -0.009447879, -0.009805176, -0.011849387, 0.034956567, -0.014971346, -0.020395236, -0.00652507, -0.027880909, 0.007831255, -0.006946798, -0.032566775, 0.04826443, 0.009254588, 0.04831129, 0.011960676, 0.0120075345, -0.023136469, -0.06372779, -0.011134791, 0.03840068, -0.024858525, -0.012722129, -0.06035397, 0.03144217, 0.0058163325, 0.041727647, 0.06335292, 0.013659302, -0.04826443, 0.051403962, 0.03626861, -0.02502253, -0.02642829, -0.010426054, -0.03102044, 0.03797895, 0.043508276, 0.06344664, -0.025373971, -0.01678712, -0.010560773, -0.039572146, 0.011574091, 0.08720399, -0.023534767, -0.0007878114, -0.06555528, -0.007719966, -0.013507012, -0.07787911, -0.026756302, -0.024460226, 0.031535886, -0.03915042, -0.081815235, 0.0018348098, -0.017349422, 0.028396355, -0.024858525, 0.00026925432, -0.06199402, -0.01249955, -0.083689585, -0.0076438207, -0.012089537, 0.03448798, 0.0011861101, 0.018075733, -0.031770177, 0.0014277251, 0.06311863, 0.01809916, -0.028349496, 0.0049553043, 0.0045160046, -0.030809576, -0.05065422, -0.05857334, -0.0032332484, 0.020629529, -0.042594533, 0.0320279, 0.0020134584, 0.028208919, -0.11752155, -0.0042670676, 0.04407058, 0.05674585, 0.05426234, -0.0058456194, 0.0044047153, 0.050513647, -0.03167646, 0.00012858678, -0.015404788, 0.016412249, -0.018028874, -0.016107667, -0.0010111223, -0.022164151, 0.0016385892, -0.01711513, -0.0025947988, 0.013823308, -0.01041434, -0.032285623, -0.031043869, -0.011152363, 0.019422919, 0.015931947, -0.045499768, -0.016669972, -0.060494542, 0.037955523, 0.034769133, -0.049529616, 0.051169667, 0.007684822, 0.02326533, 0.0023165755, -0.014291895, -0.0138584515, -0.021906428, 0.025959704, -0.0046595093, -0.022140723, -0.0125932675, -0.011128934, 0.05355946, -0.025936274, 0.048451867, -0.0100687565, -0.03704178, 0.02926324, -0.015322785, -0.015076777, -0.012663555, -0.021273836, 0.010560773, 0.07642649, -0.03139531, -0.033738244, 0.010308907, -0.011222651, 0.05013878, -0.035870314, 0.028630648, -0.029146094, -0.036221754, -0.0521537, -0.012382404, 0.0320279, 0.034066252, -0.040603038, -0.080503196, -0.03987673, -0.006882367, -0.026147138, 0.02963811, -0.010379195, -0.05744873, -0.013085283, 0.026264286, -0.036432616, 0.03451141, -0.06996, -0.0099808965, 0.072021775, -0.0015829444, -0.011820099, -0.02341762, -0.021379268, -0.06166601, 0.06297805, -0.0058954065, 0.086969696, 0.021262122, 0.008838717, -0.024741378, 0.004141135, 0.018403742, 0.039970446, -0.033761673, 0.0059744804, -0.01671683, -0.016810548, 0.040134452, -0.016060809, 0.006197059, 0.0075559607, -0.042899113, -0.030739289, 0.016131097, -0.03950186, -0.014233321, -0.095732264, -0.039572146, 0.02431965, -0.014057601, -0.020793535, -0.03732293, 0.019657213, 0.0355423, -0.018813755, -0.023921352, -0.021554988, -0.007848827, 0.064243235, -0.03132502, -0.04660095, 0.025584834, -0.013741305, 0.018286597, 0.026193997, -0.030387849, 0.018813755, -0.0337851, -0.026404861, 0.02376906, -0.0035934744, 0.050560504, 0.034417693, 0.05716758, 0.0051661683, 0.0018392028, -0.07586419, -0.03868183, 0.00854585, -0.0050870944, -0.05402805, -0.021777567, -0.06358722, -0.0035583302, -0.0047239396, 0.026967164, -0.0053858184, 0.06527413, 0.06738277, 0.019680642, -0.01047877, 0.008264698, -0.03099701, -0.014772196, -0.0070815166, 0.0027602685, 0.0683668, -0.038142957, -0.04156364, -0.06466497, 0.0026987665, -0.038611546, -0.019633783, -0.03736979, 0.01749, 0.014795626, 0.021297267, 0.0046390085, 0.029919261, 0.043906573, -0.0095650265, 0.03277764, -0.010578345, -0.018028874, -0.003411897, 0.0073743835, 0.017700862, -0.00687651, -0.005435606, 0.041071624, -0.057683025, 0.03453484, 0.008352558, 0.06714848, 0.006735934, -0.018778613, -0.058011033, -0.026568865, -0.015814802, 0.041118484, 0.025209965, -0.034651987, 0.032683924, 0.064243235, -0.016646544, -0.06677361, 0.011433516, -0.025959704, 0.014479329, -0.02025466, -0.04613236, -0.019692356, -0.00023429336, -0.0015683011, 0.0065074977, 0.06199402, 0.0249991, -0.05843276, -0.009096439, -0.04901417, -0.033175938, -0.019422919, 0.0060037673, -0.024905384, -0.0049816626, 0.016951123, -0.025209965, -0.017384566, -0.015275926, -0.03453484, -0.043203693, 0.0044340016, 0.03172332, -0.013799879, 0.011743954, 0.027224887, 0.032473058, 0.0051310244, -0.0003060457, 0.04575749, 0.00085956376, -0.025959704, 0.021965003, 0.008182695, -0.025842557, -0.0076203914, 0.0066890754, -0.015346215, 0.023546482, 0.023991639, -0.07347439, 0.050185636, 0.0026650869, -0.014057601, -0.0055263946, -0.0578236, 0.010209333, 0.061197422, 0.038845837, 0.054449774, 0.010543201, 0.036948062, 0.030200412, -0.03736979, -0.010396767, -0.0060916273, 0.0002476554, -0.043906573, 0.023687057, -0.04266482, -0.0029740613, 0.00542682, 0.005520537, -0.019844647, -0.019668927, 0.033035364, 0.0066012153, 0.06686732, 0.0033211082, -0.0069585126, 0.014678478, 0.0027500181, 0.0017088772, 0.03139531, -0.019821217, -0.058339044, 0.03811953, -0.023651915, 0.04615579, -0.03879898, -0.03144217, -0.01390531, 0.015990522, 0.051872548, -0.013261003, -0.0019622068, -0.005107595, 0.00077316805, 0.0016063738, 0.016377106, -0.063024916, -0.028794654, 0.010016041, 0.014303609, 0.0073802406, -0.039431572, -0.021554988, -0.02680316, -0.017325994, 0.047491264, 0.04519519, -0.050513647, -0.028700937, -0.0065074977, -0.04439859, -0.008827002, -0.0020500668, 0.07145947, -0.010537344, -0.034370836, -0.061900303, -0.01551022, 0.050185636, 0.022949034, 0.010508057, -0.00016135124, -0.030387849, 0.03868183, -0.034019396, -0.0011831814, -0.006554357, -0.0025845487, -0.022445302, 0.01992665, 0.009213586, -0.00258162, 0.0060096243, -0.040368743, 0.033667956, -0.02043038, -0.017454855, -0.030481566, -0.0065895007, 0.008094835, 0.025280252, 0.009418593, 0.033691384, 0.0069350833, 0.004138206, -0.03237934, 0.030130126, 0.0073216674, 0.04795985, 0.053700037, 0.007005371, -0.009266302, -0.004946518, 0.017208846, -0.03558916, 0.018532604, -0.0053711752, -0.01638882, 0.0077433954, -0.009922324, 0.0022755743, -0.046624377, 0.009957467, 0.032004472, 0.027927767, -0.0071400898, 0.030411277, 0.008270555, 0.0075618178, -0.0043314984, -0.03804924, -0.016529396, 0.018755183, -0.002647515, 0.022351585, 0.058667056, -0.009453737, -0.029052377, -0.02677973, -0.02291389, -0.018720038, -0.014502758, 0.019973509, -0.063868366, 0.0125932675, 0.003842411, -0.03493314, 0.0024088286, 0.037299503, -0.015076777, 0.026311144, 0.0380961, 0.030059837, -0.03598746, -0.006981942, 0.022644453, 0.0082178395, 0.0009042259, 0.0012439513, -0.03598746, 0.038002383, 0.0061853444, -0.017900012, -0.024225933, -0.0081299795, 0.042477384, 0.014889343, 0.03167646, 0.02203529, 0.04261796, 0.0011495018, -0.005520537, -0.026404861, -0.01390531, -0.031348452, -0.016505966, -0.02093411, -0.013600729, 0.022644453, -0.047467835, 0.023979925, -0.010631061, 0.009166728, -0.0012827561, 0.002840807, -0.0026138353, 0.012124681, 0.008950006, 0.016412249, 0.029778685, 0.042125944, -0.027880909, 0.029755255, 0.00026101744, 0.0026899807, 0.014912772, 0.019715786, -0.0011209473, -0.009096439, 0.004009345, -0.06443067, -0.02574884, -0.003025313, 0.007386098, -0.0046155793, 0.00678865, 0.03130159, -0.04163393, 0.014010742, 0.024788236, -0.006829651, 0.038236674, 0.02853693, -0.013413294, -0.016658258, 0.040907618, 0.02058267, -0.04859244, 0.009278017, 0.006407923, 0.003034099, 0.050560504, -0.015486791, -0.0040767044, -0.009553311, -0.007427099, -0.04934218, -0.04191508, -0.0071342327, 0.04055618, 0.008288127, 0.03732293, -0.05398119, 0.0008427239, -0.0003481453, 0.017900012, -0.047280397, -0.014045887, 0.00573433, -0.0345817, -0.021929858, 0.018192878, -0.0030487422, -0.030856434, 0.0070756595, 0.025303682, 0.024389938, 0.034323975, 0.0059217643, 0.019130053, -0.024905384, 0.0051251673, -0.032121617, 0.0408139, -0.020746676, 0.011181651, 0.008856289, -0.016751975, 0.06026025, -0.055902395, 0.011474517, 0.017478283, -0.015475076, -0.046038643, 0.0056230403, -0.038892698, 0.0044457163, -0.013682731, 0.01618967, 0.073099524, -0.011802528, -0.014303609, 0.022667881, -0.00016885596, -0.0037486937, 0.017021412, 0.006741791, 0.024788236, -0.002691445, -0.018626321, -0.010490485, -0.011369085, 0.018766897, -0.009969182, 0.017232276, 0.010648633, -0.032004472, -0.020898968, 0.045499768, 0.00986375, 0.032285623, 0.05880763, -0.02467109, -0.013717876, -0.0062204883, 0.004117706, 0.0040415605, -0.03912699, 0.053418886, -0.01030305, 0.010818495, -0.009330733, 0.0016224815, 0.021847855, -0.011011788, 0.0005300887, -0.03762751, 0.03483942, 0.042524245, 0.0027016953, 0.06761706, -0.0376978, -0.05880763, 0.025561405, 0.03596403, -0.005494179, 0.040696755, 0.0007717037, 0.0023443978, 0.06489926, -0.03816639, 0.03209819, 0.0067300764, 0.0072045205, 0.032754213, -0.043930005, -0.0008961721, 0.037440076, 0.049107887, 0.02713117, -0.023077896, -0.044211157, 0.00077316805, 0.020734962, -0.04130592, -0.017173702, 0.017607145, 0.02050067, 0.003280107, 0.003965415, 0.026709443, -0.049201604, -0.030270701, 0.025537975, 0.018122591, -0.041704215, 0.02996612, 0.018310025, -0.018310025, 0.043203693, 0.007210378, -0.00068787066, -0.019985223, 0.021250406, 0.008516563, 0.013343006, 0.006765221, 0.0066539315, -0.021051258, 0.00031043869, 0.013799879, 0.015744513, 0.04123563, 0.0009620671, 0.008821145, 0.041399635, 0.0072045205, -0.009020294, -0.020992685, 0.014924486, 0.01234726, 0.018790327, -0.03774466, -0.00036553424, -0.0028715578, 0.035401724, 0.031278163, -0.07183434, -0.0062029166, 0.02928667, 0.008094835, -0.046975818, 0.015767943, 0.05009192, 0.00065162836, 0.032543346, 0.024460226, -0.036432616, -0.0046448656, 0.04088419, -0.0057372586, -0.0062673474, 0.020688104, -0.0053653177, -0.022070434, 0.0010799459, -0.022000145, 0.029778685, -0.0068413657, -0.0016708045, -0.044984322, 0.02203529, 0.028630648, 0.0032068903, -0.07010057, 0.0022140723, 0.016623113, -0.039689295, -0.015486791, 0.005406319, 0.014584761, -0.0063610645, 0.029520962, -0.03034099, -0.029848972, 0.096435145, 0.009793462, -0.024952242, -0.003745765, -0.024155645], [-0.004272699, 0.0005031205, -0.027722996, 0.01688095, 0.007332954, 0.01811671, -0.040290445, 0.043554716, -0.01613483, 0.019317497, -0.032176398, 0.010218337, 0.016099855, 0.012136097, 0.00066086935, 0.01712577, -0.049570303, 0.011611482, -0.032805935, -0.0320365, -0.026813664, -0.042318955, -0.06845645, 0.0011359375, 0.015062284, -0.024062349, 0.011011089, 0.0041969214, -0.025111578, 0.03178002, 0.019445734, 0.0055055446, 0.056891598, -0.025134895, -0.0056571, -0.014083003, 0.019748846, -0.011145158, -0.00173123, -0.00077089283, -0.04301844, 0.034228224, -0.01317367, -0.040570237, -0.014969019, -0.02157917, 0.0063711596, -0.024505356, -0.017172402, -0.052881207, 0.015260472, -0.009157449, -0.019515684, -0.006936578, -0.043554716, 0.010649688, 0.029541662, -0.07517152, 0.06090199, 0.0055113737, -0.009786987, -0.0019673067, 0.031989865, -0.025950963, -0.031080533, 0.013873156, 0.0150156515, 0.02459862, 0.008329723, 0.006190459, -0.012275995, 0.008137364, 0.009297347, -0.010935311, -0.011605653, -0.036886275, 0.08156017, 0.019608948, -0.011937909, -0.03765571, 0.0048381174, -0.02330457, 0.013068747, 0.009320662, 0.02900539, -0.041829314, 0.030497627, -0.12161745, -0.014817463, -0.0068608006, -0.026510552, 0.01775531, 0.024248878, 0.008481278, -0.015260472, -0.009180766, 0.041969214, 0.009588799, -0.0034304003, -0.010655517, -0.042458855, -0.0113142, -0.07102124, -0.06397973, -0.0021363494, 0.033715267, 0.023549391, -0.023514416, -0.025950963, -0.07531142, 0.057917513, -0.03702617, -0.01725401, 0.0140363695, -0.014234558, 0.043974407, -0.05334753, -0.057357922, -0.02275664, -0.011244251, -0.076010905, -0.068130024, 0.029541662, 0.021800674, -0.010661346, 0.00852791, -0.0016525377, 0.07904202, -0.014397771, 0.014595959, -0.030497627, 0.066637784, 0.0443941, 0.016146488, 0.09466389, 0.0020868024, 0.014537669, -0.034484703, -0.03844846, 4.615429e-05, -0.069902055, 0.0093264915, -0.042878546, 0.008889312, -0.046772357, -0.030241149, -0.025857698, -0.012777293, -0.03900805, -0.034531336, -0.022371922, -0.016099855, -0.029098654, -0.0025676996, 0.053254265, -0.026440604, 0.035324086, 0.032992464, -0.019270863, 0.023969084, 0.014875754, -0.03686296, 0.03728265, 0.01935247, 0.00056068244, -0.0797415, 0.038634993, -0.030684158, -0.049756832, 0.029145285, 0.04285523, -0.037562445, 0.0015636446, -0.018641325, -0.024085665, 0.032735985, 0.05745119, -0.012147755, -0.016822658, -0.09219237, -0.057637718, 0.056052215, 0.042318955, -0.027653048, 0.009862765, 0.025321424, 0.010183363, 0.025577903, 0.012660712, -0.0834721, -0.027000193, -0.030940635, 0.006219604, -0.048078064, -0.008551227, -0.050223157, -0.0011942281, -0.085523926, 0.027676364, -0.010777927, 0.001168726, -0.029098654, 0.0027484004, -0.0061613135, -0.015342079, 0.03574378, 0.012171072, -0.006400305, 0.0055113737, 0.009786987, 0.030241149, 0.018023444, 0.016531207, -0.00915162, -0.008073244, 0.0075952616, -0.031057216, 0.013092062, 0.005552177, 0.008388014, 0.071394295, -0.039404426, 0.0086852955, -0.013908131, -0.004637015, 0.016997531, 0.033715267, 0.050642848, 0.010731295, 0.022873221, -0.00519369, -0.037492495, -0.029728193, 0.03900805, -0.07437877, -0.016624471, -0.051155806, -0.006312869, 0.079135284, -0.020191854, 0.013814866, 0.010649688, -0.050316423, 0.0076010907, 0.052461516, 0.047705006, 0.014794148, -0.010789585, -0.028002791, 0.004348477, 0.010311603, 0.028818859, 0.036443267, 0.006715074, 0.019702213, 0.067057475, 0.03152354, -0.030311098, -0.030520944, 0.032106448, -0.013092062, 0.024505356, -0.049383774, 0.08748249, -0.039987333, -0.0451169, 0.052135088, -0.087016165, -0.050176524, -0.061927903, 0.045793075, -0.0013516126, 0.027583098, 0.020226829, 0.0478449, -0.0019833366, 0.034974344, 0.004328075, -0.002018311, 0.05101591, 0.007222202, 0.08491771, 0.029844774, 0.0002774267, -0.005001331, 0.047331944, -0.005674587, -0.07810937, -0.06453932, -0.006627638, -0.032619406, -0.02101958, 0.061228417, 0.0035032635, 0.04278528, -0.029331816, 0.0011854845, 0.047728322, -0.018408163, -0.0048672627, -0.0009377496, -0.013779892, -0.06052893, -0.053487428, -0.028772227, 0.054186918, -0.01929418, 0.09513021, -0.044300836, -0.029495029, 0.088928096, -0.0026318193, 0.008661979, -0.0005588609, -0.0010463158, -0.028026108, 0.028049424, 0.02219705, 0.069109306, -0.043438133, -0.010707978, -0.039241213, -0.09209911, 0.030637525, 0.0015111831, -0.008149022, -0.01304543, -0.03938111, -0.0056629293, 0.028166005, -0.063653305, -0.051482234, -0.01712577, -0.019492367, -0.028818859, -0.06850308, -0.0328992, -0.025671167, 0.026044227, -0.009880252, -0.026160808, -0.0015840463, -0.023327887, -0.033458788, -0.01489907, -0.02324628, -0.022301974, -0.0030952294, 0.06188127, -0.012310969, 0.0014390486, 0.03492771, 0.009967688, 0.038565043, 0.020145223, 0.01224102, -0.01910765, -0.029634926, 0.018093394, -0.011465755, 0.034391437, -0.041829314, -0.00013406832, 0.06780359, 0.0063012107, -0.054233547, -0.043997724, 0.01705582, -0.006237091, -0.011844644, -0.036816325, 0.027466517, -0.043508083, -0.00035976214, -0.038611677, -0.011419123, 0.062487494, -0.0217657, -0.06071546, 0.010987773, 0.018932778, -0.018081736, 0.014421088, 0.01570348, 0.037562445, -0.00661598, -0.034158275, 0.03560388, 0.027606415, -0.0058960915, 0.0026449347, 0.0032205542, 0.03418159, -0.0248551, 0.009676235, 0.050549585, -0.041223094, 0.026557185, -6.507596e-05, 0.016706077, 0.008702783, -0.013511755, -0.001224102, 0.027489834, 0.047658373, -0.050129894, -0.002475892, 0.005359818, -0.0054880576, 0.0425288, -0.052881207, 0.043298237, -0.0082714325, 0.0093264915, 0.00086707226, 0.030147884, 0.0007115093, 0.03469455, 0.0026653365, -0.0028489518, 0.021427615, -0.039171264, -0.008300577, 0.025950963, -0.054979667, 0.041199777, -0.05218172, 0.0056775017, 0.0056308694, -0.025181528, -0.03952101, 0.030264465, 0.021917256, -0.009909397, 0.0051324847, -0.05026979, -0.029751508, -0.03604689, -0.040173862, 0.045280118, 0.04036039, 0.017149087, 0.012660712, 0.024108982, -0.011902935, 0.018711274, -0.038425144, 0.038075402, -0.0030515115, -0.0052811257, -0.013103721, -0.047098782, -0.1047365, -0.00398999, 0.043135025, -0.02912197, 0.007770133, 0.025647853, 0.009717039, -0.08067415, 0.016776027, 0.02942508, 0.050969277, -0.01984211, 0.017020848, -0.03133701, -0.029168602, 0.044557314, 0.017790282, -0.0009763671, 0.01946905, 0.038868155, -0.011331688, 0.021812333, -0.0075486293, -0.024155613, -0.02183565, 0.014502695, 0.02590433, -0.0064411084, -0.019935375, -0.019200915, -0.00584363, 0.057404555, 0.040546924, -0.009239056, 0.017417222, 0.035557248, 0.06803676, 0.029401764, 0.0036956223, 0.031430278, -0.012579106, -0.0148291215, -0.0122293625, -0.04185263, -0.06710411, -0.034065012, 0.011611482, -0.011879618, 0.020238487, 0.038961418, 0.04068682, 0.0039171265, 0.015913326, 0.0027221697, -0.033132363, -0.053720593, 0.009472218, -0.042272322, -0.016659446, -0.03518419, -0.0133601995, 0.022057153, -0.011745551, -0.0145260105, -0.011028577, 0.034531336, 0.016414626, 0.0038355198, -0.012322627, -0.02201052, -0.018489769, -0.026207441, -0.028096056, -0.0018405248, -0.0015301275, 0.020728128, -0.036023572, -0.011961225, 0.0110227475, -0.009932714, 0.0051412284, 0.0074611935, -0.017358933, 0.004450485, 0.011908764, 0.044977006, -0.0101950215, -0.013266934, -0.03301578, 0.055865686, -0.005353989, -0.019014385, 0.0048585194, 0.020902999, 0.04891745, -0.02448204, 0.0104573285, 0.041526202, -0.04483711, 0.04854439, 0.019329153, 0.021287717, 0.007006527, -0.007117279, -0.03851841, -0.042622067, -0.032502823, -0.034228224, -0.014222899, -0.01002015, 0.06645125, 0.01298714, -0.022092126, -0.04803143, 0.029868089, 0.010801243, -0.0057882536, 0.013570045, 0.0217657, 0.052834574, -0.0037626564, -0.010399038, 0.02541469, 0.06146158, 0.013010456, -0.058570366, 0.02590433, -0.020075273, -0.010830388, -0.017510489, -0.002662422, -0.02721004, -0.0006080435, 0.0028518662, -0.016123172, -0.047751635, -0.036932908, 0.0019643924, 0.0029232723, 0.047075465, 0.0048060576, -0.013348541, -0.020145223, 0.008411329, 0.020576572, 0.026557185, -0.0061613135, 0.0020970034, 0.009064184, -0.033109047, 0.0077992785, -0.0066859284, -0.0337619, -0.004223152, 0.014432746, -0.047751635, 0.016612813, 0.030147884, -0.071534194, 0.029238552, 0.02942508, 0.0048585194, -0.014502695, 0.006983211, 0.00028926696, 0.057964146, 0.0010193564, 0.050316423, 0.02504163, 0.023316229, 0.047471844, -0.030987268, 0.0058727753, 0.017323958, -0.010900337, 0.014910729, -0.0017982642, -0.0020445418, -0.012147755, -0.0117397215, -0.014782489, -0.028609013, 0.025018314, 0.018443137, 0.0037422548, 0.033855166, -0.028119372, -0.017195718, 0.040919982, 0.038425144, 0.038495094, 0.07433214, -0.03091732, -0.022663375, 0.04334487, 0.008084903, 0.029378448, 0.011226764, -0.0067908517, 0.012625738, 0.015493634, 0.0478449, 0.024738519, -0.022150418, -0.0013071661, 0.025764434, -0.022127101, -0.0038442633, -0.025018314, -0.02343281, 0.0012117153, 0.0064585954, -0.00038362484, -0.01705582, -0.012602421, -0.014969019, -0.0057969973, 0.035347402, 0.082259655, -0.04716873, -0.048870817, -0.040220495, -0.010060953, -0.017300641, -0.012101123, 0.040663503, -0.010807072, -0.025694484, -0.011133499, -0.0038384341, -0.008393843, -0.004383451, -0.019690555, -0.00454375, -0.007991637, 0.00958297, -0.034671232, 0.030007986, -0.0006550403, -0.017848574, -0.014479378, 0.035650514, 0.0028402081, 0.012777293, 0.009233227, -0.0019425333, 0.033062413, -0.0055288607, -0.035394035, -0.054186918, -0.035837043, -0.024808468, 0.028212637, 0.027233355, -0.007828424, 0.0028096056, -0.067990124, -0.04451068, 0.04835786, 0.009839449, 0.004823545, 0.06612483, 0.045606542, 0.0037801436, -0.0014652793, 0.021241084, -0.070321746, 0.06621809, -0.0019833366, 0.007344612, -0.0097403545, -0.032432873, -0.0009800103, -0.053813856, 0.05218172, -0.048684288, 0.06328025, -0.016146488, -0.021858964, -0.01589001, -0.006237091, 0.0035644686, -0.017323958, 0.023689289, -0.002895584, 0.005799912, 0.027070142, -0.007467022, 0.006295382, -0.052461516, -0.03784224, -0.03728265, 0.026930245, -0.02942508, 0.04803143, -0.022278657, 0.0037684855, -0.023572708, -0.005601724, -0.007146424, 0.04896408, -0.033808533, 0.0010004119, 0.044044357, 0.016111514, -0.0011563392, -0.007140595, 0.010678832, -0.013010456, 0.005823228, -0.0011534247, -0.0030398534, 0.025927646, 0.0059514674, -0.013465122, -0.02560122, 0.013406832, 0.002497751, 0.015913326, 0.034881078, -0.012975481, -0.0069715525, 0.0052578095, -0.017230693, 0.0060272454, -0.02101958, -0.054933034, -0.035580564, 0.033528738, -0.0054997155, 0.019830452, -0.036256734, 0.03327226, 0.015435344, -0.00642945, 0.0008313693, 0.02150922, 0.005187861, 0.016706077, 0.011156816, 0.0012940507, 0.016892608, 0.055632524, -0.0064819115, 0.04371793, -0.029541662, 0.02255845, 0.0030136227, 0.004045366, -0.058104042, 0.009670406, 0.015773429, -0.038868155, -0.008673637, -0.032549456, -0.019142624, -0.031010585, 0.0045728954, 0.007717672, 0.010439841, -0.0025764434, -0.00013661853, 0.0024554904, 0.034298174, 0.012823926, -0.020704811, -0.024458725, -0.0153537365, -0.015726797, -0.051855292, 0.037865557, -0.028212637, 0.028282586, 0.036373317, -0.012380918, -0.022593426, -0.027233355, -0.03686296, -0.029868089, -0.031803336, -0.044417415, 0.023969084, 0.030637525, 0.010317432, -0.021928914, 0.06094862, 0.0051907753, 0.033109047, -0.018279923, -0.010125073, -0.011110183, 0.0005544891, -0.051109172, 0.01298714, -0.031313695, 0.018151684, 0.0021858965, 0.053067736, 0.03357537, 0.04203916, 0.0078575695, 0.011803841, -0.032502823, -0.013651652, -0.04026713, 0.0063595013, -0.021602485, 0.003666477, 0.031989865, 0.05311437, 0.026720399, -0.00939644, -0.00028635244, 0.00088674534, -0.020180196, -0.05101591, -0.036723062, -0.022243682, -0.0063536726, 0.0037043658, 0.01749883, 0.03159349, 0.01959729, -0.029774824, -0.0050159036, -0.02337452, 0.00097418117, 0.000119040276, -0.0023126784, 0.0046282713, -0.051575497, -0.031197114, 0.007344612, -0.054979667, -0.022989802, -0.020541597, -0.010095927, 0.007554458, 0.0071056206, -0.030311098, 0.0462594, 0.00023170502, 0.037935503, 0.031873286, -0.023782553, -0.0021334349, -0.035837043, 0.021928914, 0.026114177, -0.0020824308, 0.0011621683, -0.049616937, 0.021346008, 0.008382184, -0.021159478, 0.0426687, -0.028702278, -0.032782618, 0.0089884065, 0.01824495, 0.054746505, -0.044417415, 0.033412155, -0.018023444, -0.026160808, 0.0071988855, 0.01248584, -0.07512489, 0.026720399, -0.00016184742, -0.00958297, 0.034228224, 0.010160047, 0.040173862, 0.016216436, 0.0014667365, -0.012310969, -0.017638728, 0.018023444, 0.031500224, 0.017522147, -0.01298714, -0.0019425333, -0.013966422, -0.015202181, 0.01502731, -0.015726797, -0.0043193316, 0.041479573, 0.10035305, -0.0060738777, 0.0058086556, 0.028795542, -0.045303434, -0.014584301, 0.03728265, 0.014864096, 0.00587569, -0.014269532, 0.02646392, -0.014456062, -0.0013690998, 0.019037701, -0.00041094853, 0.004470887, 0.057171393, 0.0078575695, -0.018816197, 0.017277326, -0.011226764, -0.0032759302, 0.02268669, 0.03159349, -0.01607654, 0.043508083, -0.025438005, -0.008930116, 0.019958692, -0.027839577, 0.0056425272, 0.0027717168, 0.021649119, -0.0041590324, 0.022395238, 0.027839577, -0.00952468, -0.03054426, -0.015248814, 0.02071647, -0.035627197, -0.0059980997, -0.034787815, -0.034228224, -0.020203512, -0.005674587, 0.019632265, 0.02769968, -0.0026201613, 0.012159414, -0.018105052, 0.009938543, 0.04402104, -0.0052344934, 0.019329153, 0.01787189, 0.008166509, -0.009443073, -0.020937974, 0.0024598623, 0.0011235508, -0.031313695, 0.0031447764, -0.051901925, 0.017230693, 0.013196985, 0.018757906, -0.04271533, 0.00024099508, 0.020669837, 0.026883611, -0.032059815, 0.009641261, 0.0389381, 0.038495094, 0.023735922, -0.010160047, 0.028539063, 0.11518217, -0.02133435, -0.021485904, 0.0301712, 0.005286955], [-0.012324785, 0.00046105764, -0.022579486, 0.033576064, -0.013617093, -0.010194871, -0.0009482905, 0.038458116, -0.0037752134, 0.062222216, -0.032092303, -0.0024066237, -0.019324785, 0.0019489314, -0.0046696574, 0.0108589735, -0.028574357, 0.03082393, -0.035969228, -0.056717943, 0.012324785, -0.07007179, -0.06787008, 0.012324785, 0.0067367516, 0.004585897, 0.0019863246, 0.0066649565, -0.015687177, 0.02182564, 0.06968888, 0.03819487, 0.04575726, -0.030201707, 0.037117943, -0.035347003, 0.017601708, 0.024841024, -0.024075212, -0.017494015, -0.047576062, -0.02436239, -0.03082393, -0.054564096, 0.024242733, -0.0010896366, 0.0035867516, 0.017589742, -0.00652735, -0.00389188, 0.006051709, -0.03747692, 0.03525128, 0.014729913, -0.011349572, 0.01365299, 0.031661537, -0.113818794, 0.0377641, 0.0009886752, -0.016476922, 0.03941538, 0.024218801, -0.012599999, 0.02182564, -0.03790769, -0.01636923, 0.065429054, 0.041593157, 0.049825635, 0.021203417, 0.044369224, -0.0010679486, -0.012504272, -0.010470084, -0.032858115, 0.08959999, 0.03290598, -0.02271111, -0.0021358973, 0.038769227, -0.08505298, -0.016105982, -0.026899142, 0.012420512, -0.027999997, 0.023117946, -0.10903247, -0.0024903843, 0.007388888, 0.011762392, -0.0223641, 0.008555555, 0.018068375, -0.08443076, 0.03955897, 0.044105977, -0.01942051, -0.012187178, 0.0056777773, -0.036854696, 0.0040952987, -0.054133326, -0.047743585, 0.010661538, 0.033719655, 0.04547008, -0.018128203, 0.0035478629, -0.017290596, 0.0044363244, -0.013353845, -0.020258117, 0.023871792, -0.029579485, 0.017757263, -0.011846152, -0.05949401, -0.038577773, 0.02759316, -0.05944615, -0.048485465, 0.07165127, 0.02759316, -0.036088884, 0.03494017, -0.009470939, 0.027377775, -0.018654699, 0.012564101, -0.031685468, -0.0006644764, -0.0068923067, -0.011026494, 0.109415375, 0.0410188, -0.0059769223, -0.011373503, -0.050735038, 0.0049329055, -0.05815384, 0.040564097, 0.008597435, 0.031254698, 0.00689829, -0.013808546, -0.012719656, -0.017924784, -0.023955554, -0.024864955, -0.021167519, -0.009536752, 0.01254017, 0.020641023, 0.037285466, -0.06652991, 0.011840169, 0.019025639, 0.0067666657, 0.017829059, 0.03927179, -0.10319315, 0.02627692, 0.010392306, -0.032929912, -0.0587282, 0.029699143, 0.021981195, -0.039894015, 0.02359658, 0.023728203, -0.0429094, 0.032834183, -0.018487178, -0.04858119, 0.005028632, 0.02430256, 0.024039313, -0.00018369389, -0.050399996, -0.0354188, 0.02996239, 0.026588032, -0.041401707, -0.0022256407, 0.036064953, 0.019599998, -0.0045440164, 0.0044572647, -0.06428034, -0.008633332, -0.008202563, 0.016261537, -0.030177774, -0.029555552, -0.06317948, -0.03453333, -0.051405124, 0.006700854, 0.028406834, -0.0040952987, -0.07165127, -0.037596576, 0.035059825, -0.025319654, 0.020664955, 0.009159829, 0.0018547006, 0.037620507, -0.008800854, 0.009147862, -0.017446153, -0.0019220083, -0.01822393, -0.014155554, 0.022232477, -0.070646144, 0.018475212, 0.012288888, -0.061025634, 0.04901196, 0.007466666, 0.0030841876, -0.035179485, -0.04278974, 0.020700853, -0.0035777774, 0.03955897, -0.005378632, -0.011732478, -0.037261534, -0.02776068, 0.0074846144, 0.023441022, -0.03115897, -0.020772647, -0.021430766, -0.01571111, 0.05944615, 0.023692304, -0.0080948705, 0.007323076, -0.05360683, -0.03486837, 0.02524786, 0.06676922, 0.008986324, -0.007711965, 0.0007407585, 0.020258117, 0.03132649, 0.0023438032, 0.04204786, 0.021981195, -0.0024455125, 0.042406835, -0.012982905, -0.04972991, -0.027999997, 0.037620507, -0.01896581, 0.042741876, -0.046858113, 0.05992478, -0.028095724, -0.039319653, 0.009339315, -0.03898461, -0.080314524, -0.05906324, 0.0507829, -0.017458118, 0.015663246, 0.00982393, 0.031541876, -0.032810252, 0.048461534, 0.004038461, -0.04939487, 0.049155552, 0.012755554, 0.027258117, 0.014634186, 0.008172649, 0.023297433, 0.023058116, -0.018283758, -0.03941538, -0.039798286, 0.015806835, -0.02522393, -0.011846152, 0.034724783, 0.00038627133, 0.03412649, 0.008818802, 0.007861538, -0.019923074, -0.033145297, 0.024218801, -0.017733332, -0.029651279, -0.012611965, -0.03642393, -0.020844443, 0.027090596, 0.005387606, 0.08399999, -0.009423076, -0.03864957, 0.032858115, -0.015064956, -0.02430256, -0.055999994, -0.01188205, -0.02539145, 0.07959657, 0.06308375, 0.04530256, -0.008729059, -0.0035209397, -0.053463243, -0.05949401, 0.019863246, 0.05844102, -0.040947005, 0.008914529, -0.03202051, -0.07141196, 0.018235896, -0.055617087, 0.010787179, -0.007149572, -0.00899829, -0.040085465, -0.09534358, -0.029292304, -0.00792735, -0.003126068, -0.003410256, -0.021777775, 0.011618802, -0.009321366, -0.03142222, 0.04501538, -0.029052988, 0.00079797, 0.005363675, 0.040157262, -0.012348717, 0.0013147434, 0.084047854, 0.035753842, 0.0423829, 0.025176065, 0.01196581, -0.054372642, -0.054947004, -0.018343588, 0.009536752, 0.036543585, -0.052170936, 0.011905981, 0.05590427, -0.0027476493, -0.039343584, -0.0058542727, -0.006258119, 0.0072512813, 0.04061196, -0.0563829, 0.03850598, -0.004373504, -0.04118632, -0.03319316, -0.057435893, 0.041258115, 0.018582905, -0.05150085, 0.0068444437, -0.040875208, 0.0101051275, 0.030584613, 0.04499145, 0.012815383, -0.03455726, -0.030728202, -0.0059529906, 0.017290596, -0.05949401, 0.011828204, 0.034365807, -0.06451965, -0.023524784, 0.01845128, 0.017206836, -0.01919316, -0.0030692304, 0.018247861, -0.0065572644, 0.018702563, 0.020294014, -0.0059559825, 0.0064675207, 0.034629054, -0.0261094, -0.003787179, -0.028311107, -0.005597008, 0.06274871, 0.014813674, 0.028717946, 0.009339315, 0.021263245, 0.03458119, 0.053894013, -0.006144444, 0.036591448, -0.04690598, -0.012851281, 0.029794868, -0.020999998, 0.001295299, 0.040683758, -0.069401704, 0.027138459, -0.036112815, 0.06413674, -0.021801706, -0.023141878, -0.03348034, -0.0018756408, 0.022998288, 0.0010357905, -0.024051279, -0.052027345, -0.033121362, -0.036376063, -0.0046367515, 0.049873497, 0.009165811, 0.0043106833, -0.011247862, -0.02228034, -0.05178803, 0.0066230763, -0.0755282, 2.8816103e-05, 0.04176068, -0.009847863, -0.015064956, -0.0011487178, -0.09486495, -0.018188031, 0.058488883, -0.015543588, 0.025271792, 0.0019115383, 0.020066664, -0.07811281, -0.022567518, 0.022376066, 0.07705982, -0.0011719016, 0.061169226, 0.022603417, 0.003000427, 0.018558972, 0.012683759, 0.0077358964, -0.010601709, 0.025989741, -0.0031320509, 0.04530256, 0.0067547, 0.0017918801, -0.00638376, 0.008489743, 0.026755553, -0.035323072, -0.035203416, 0.006311965, 0.021694014, 0.035658117, 0.02716239, -0.029196577, 0.028741878, 0.032116234, 0.035969228, 0.0298188, 0.02162222, -0.006132478, 0.011804272, 0.0032965809, 0.018355554, -0.005564102, -0.030153843, -0.059111103, -0.007987179, 0.012408545, 0.030656407, 0.008968375, 0.035658117, 0.021813672, 0.026899142, -0.014179486, -0.012199144, -0.010320512, 0.03144615, -0.022495724, -0.01109829, -0.03855384, -0.03718974, 0.028550424, -0.026683757, -0.025295723, -0.010320512, 0.018188031, -0.0003728098, 0.027210254, -0.009949571, -0.032642733, -0.043914527, 0.007442734, 0.004977777, -0.008405982, 0.026396578, 0.015399998, 0.02730598, -0.049251277, -0.024099143, 0.016728204, -0.004274786, 0.02864615, 0.0073769223, -0.01674017, 0.022029057, 0.016919656, -0.018188031, 0.0026683758, 0.0038290594, 0.05858461, -0.039008543, 0.00045245723, -0.04767179, 0.0055940165, 0.036256406, 0.02053333, -0.014658118, 0.005522222, -0.046738457, 0.036543585, 0.013700853, 0.044488885, -0.011744443, -0.012659827, -0.0029720082, -0.0395829, 0.020186322, -0.031900853, -0.0029032049, 0.022148715, 0.06672136, 0.066912815, -0.02776068, -0.035347003, 0.01556752, 0.011762392, -2.972756e-05, -0.0075623924, 0.020641023, 0.02893333, 0.004897008, -0.017637605, -0.028741878, 0.068396576, 0.03056068, -0.022256408, 0.00114797, 0.014933332, -0.011666666, -0.0065572644, 0.0052978625, -0.046451278, 0.024182903, 0.009327349, -0.01890598, -0.046116233, -0.012384614, 0.01276752, 0.006904273, 0.018104272, -0.00044797003, 0.03214017, -0.013006836, 0.038793158, -0.0023752134, -0.010392306, -0.02996239, 0.034748714, -0.01291111, 0.0032158117, -0.0026444441, -0.026923073, -0.0049239313, -0.025678629, 0.06887521, -0.020461537, -0.0043316237, 0.043459825, -0.0634188, -0.0023811962, 0.03393504, -0.02393162, 0.01388034, -0.027282048, -0.027186321, 0.05489914, -0.010494016, 0.018008545, 0.018511109, -0.0063717943, 0.03424615, -0.036495723, 0.024625638, 0.0014613246, -0.0014052349, -0.013581195, -0.022029057, -0.026205126, -0.016094016, -0.040085465, 0.0008017093, -0.015029058, -0.015818803, 0.04075555, 0.018427348, 0.0429094, -0.03998974, 0.044488885, -0.036232475, 0.029866664, -0.014646152, 0.06317948, -0.013581195, -0.015148716, 0.04207179, 0.0082205115, 0.05092649, -0.0024141022, -0.011176067, -0.0011180554, 0.008561538, 0.049538456, -0.02019829, -0.0011629272, -0.022100853, 0.017541878, -0.043483756, 0.009895725, -0.015268374, -0.034078628, -0.0076641017, 0.025343588, 0.011391452, 0.0038829055, -0.021658117, -0.039223928, 0.009931623, 0.013042734, 0.07682051, -0.08064956, -0.028861536, -0.018463247, -0.027282048, -0.0068923067, -0.004454273, 0.05915897, -0.040947005, -0.020126494, -0.042263243, -0.056287173, -0.030153843, -0.027617091, -0.01636923, -0.001939957, -0.04104273, 0.013557264, -0.031230766, -0.019384613, 0.03144615, -0.009620512, -0.01379658, 0.07198632, 0.00043749996, 0.02230427, -0.0057286317, -0.045182902, -0.012994871, 0.032642733, -0.012659827, -0.023417091, -0.0006618589, 0.0054085464, 0.015663246, 0.049873497, -0.009123931, -0.003787179, -0.08648888, -0.0023692306, 0.013329913, 0.0031440167, 0.020940168, 0.02102393, 0.012576067, -0.021837605, -0.025104271, 0.0018427349, -0.06968888, 0.018176066, -0.041593157, -0.042670082, -0.006563247, -0.048222218, 0.0106076915, -0.057196576, 0.016656408, -0.0004296474, 0.048485465, -0.010673503, -0.0041102557, -0.035059825, 0.02125128, 0.0021104699, -0.01118205, -0.0024185895, -0.029603416, 0.011762392, 0.030943586, 0.010446153, 0.013593161, -0.034629054, -0.032953843, -0.025319654, 0.022758972, -0.023704272, 0.0072512813, -0.014119657, -0.045374352, -0.028454699, -0.012031622, -0.0018487178, 0.028813671, -0.04681025, 0.015112819, 0.019408545, 0.019863246, -0.027329912, 0.0011128203, -0.00036551812, -0.03395897, 0.022088887, -0.017553844, -0.007694016, 0.023369228, 0.025128203, 0.025271792, -0.076341875, 0.040372644, 0.04532649, 0.03218803, 0.043603413, -0.016692305, -0.0024873929, 0.02613333, -0.04116239, 0.005109401, -0.022148715, -0.044345293, 0.00041730766, -0.0028134612, -0.006652991, 0.01169658, -0.0108589735, 0.042430766, 0.025415381, 0.02110769, -0.026731621, -0.019229058, -0.02479316, 0.017230768, 0.00811282, 0.01528034, 0.017960683, 0.048892304, -0.0214547, 0.026731621, 0.0059320508, 0.006234187, -0.008968375, 0.034916237, -0.041210253, 0.019875212, 0.054516234, -0.03304957, -0.028550424, -0.06308375, -0.006359828, -0.034509398, 0.033432476, 0.0151008535, 0.01239658, 0.011349572, 0.0011883546, -0.026229057, 0.034006834, 0.03082393, 0.02730598, 0.022124784, 0.03319316, 0.0041072643, -0.05121367, 0.03824273, -0.025152134, 0.025104271, 0.057531618, 0.021861536, -0.020389741, -0.024015382, -0.003072222, 9.063167e-05, -0.037620507, -0.016464956, 0.017685467, 0.021143587, 0.04827008, -0.014598289, 0.041282047, 0.012731623, 0.027880339, -0.014227349, 0.0019444443, 0.0047893156, -0.006964102, -0.057531618, 0.0075982898, -0.019061536, -0.015244443, -0.026468374, 0.019145297, 0.064567514, 0.0009834401, 0.011397434, 0.009799999, -0.033863243, -0.020114528, -0.02953162, 0.02059316, -0.004361538, 0.006503418, 0.03175726, 0.008902563, 0.016153844, -0.050543584, 0.035035893, -0.03127863, 0.01982735, -0.044058114, -0.01742222, -0.028167518, -0.00011348823, -0.027210254, 0.008830768, 0.045374352, 0.02627692, -0.017087178, -0.027114527, -0.03383931, 0.012599999, -0.022124784, 0.00062110036, 0.03568205, -0.065429054, -0.041545294, 0.0042209397, -0.033599995, 0.010583759, 0.0026384613, -0.03465299, -0.023680339, -0.02059316, -0.00093482895, 0.02450598, -0.018092306, 0.03970256, 0.05801025, -0.009746153, -0.018499143, -0.0061683753, 0.009865811, 0.0223641, -0.0038440167, 0.010272648, -0.012564101, 0.017960683, -0.007652136, -0.0063478625, 0.019887177, -0.008561538, 0.0058183754, -0.052170936, 0.035490595, 0.027090596, -0.055234183, 0.023213673, -0.019013673, -0.024984613, -0.02250769, 0.027329912, -0.018929912, 0.018475212, 0.021059826, 0.00516923, 0.04824615, 0.007711965, 0.017398288, -0.0073051276, -0.006838461, 0.02716239, -0.03970256, 0.021921365, 0.020796578, 0.02019829, 0.020090597, -0.018427348, -0.025463246, -0.0027551278, 0.016991451, -0.026659826, 0.005387606, 0.029627347, 0.05150085, 0.0119598275, -0.03412649, 0.01859487, -0.0149452975, 0.0115829045, 0.014071793, 0.017147006, -0.02687521, 0.00056314096, 0.024577776, -0.009303418, 0.006772649, 0.01636923, 0.006760683, 0.0029256407, 0.06590769, 0.021598289, 0.014658118, 0.028741878, 0.0012526708, -0.0090042725, 0.00029858437, -0.009141879, -0.014251281, 0.02182564, -0.015950426, -0.02318974, 0.016871793, -0.020664955, 0.017290596, 0.00177094, 0.02790427, -0.023919655, 0.03644786, 0.03144615, 0.0029824784, -0.03707008, 0.0028598288, -0.005707692, -0.060020506, -0.021670083, 0.026683757, -0.00599188, -0.033408545, 0.02893333, 0.0298188, -0.016034186, -0.0060367514, 0.0293641, -0.04118632, -0.020617092, 0.0035329056, -0.025606835, 0.0069341874, 0.012970938, 0.005432478, -0.022112818, -0.048796576, -0.027976066, 0.0060576918, -0.01439487, 0.0040683756, -0.028885467, 0.054659825, 0.008699144, 0.022292305, -0.029747006, 0.009351281, -0.033264954, 0.01682393, -0.01808034, -0.028741878, 0.01639316, 0.033695724, 0.049155552, 0.004968803, 0.00764017, 0.10281025, -0.00811282, -0.016141878, -0.006503418, -0.0044123926], [0.0011353006, -0.00080800673, -0.012215074, 0.053956732, 0.05400349, 0.020303909, -0.01415546, -0.0025379886, -0.006411453, -0.037077717, 0.0035651652, -0.027469305, -0.03593219, 0.0021624772, 0.004155463, 0.03305668, -0.03457626, -0.00547925, -0.007907653, -0.04294563, 0.012472234, -0.06901225, -0.018012851, 0.019064868, 0.031490345, 0.013267091, -0.013769721, 0.016960835, -0.010940966, 0.028614834, 0.04007012, 0.0039099925, 0.045002908, 0.0059701907, 0.05105784, -0.023880763, -0.03343073, 0.05470483, -0.06517824, 0.043015763, -0.0067562805, 0.030742245, -0.027866734, 0.034856796, 0.005631208, -0.0032407937, 0.010175332, 0.011531264, 0.0007130331, -0.027188769, 0.000115886134, -0.047597878, 0.010315601, -0.033874914, -0.046639375, 0.04044417, 0.053722948, -0.13821152, 0.043600217, -0.012215074, -0.029526582, 0.042548202, 0.04109876, -0.052600797, -0.02667445, -0.025645811, 0.0175336, 0.014202216, 0.038153112, 0.010847454, -0.015710106, 0.0059497347, 0.019766212, 0.0037755684, 0.019380473, -0.046382215, 0.05984802, 0.022104025, 0.003991816, -0.04570425, 0.009006426, -0.027539441, -0.019018112, 0.0080479225, 0.016540028, -0.007878431, 0.01477498, -0.086452335, -0.013571006, -0.013419048, 0.009275274, 0.0226651, 0.029339558, -0.0022253061, -0.022174159, 0.006808881, 0.021613084, 0.018749263, 0.007638805, -0.016317938, -0.02627702, -0.047878414, -0.05886614, -0.052039724, -0.0041934527, 0.037007585, 0.046031542, -0.035254225, -0.028240785, 0.080280505, 0.0003966977, -0.034529503, -0.03742839, -0.012916419, 0.006925772, 0.0011338395, -0.013571006, -0.02114552, -0.032612495, 0.03394505, -0.07518408, -0.055546444, 0.045423713, -0.01776738, -0.008205725, 0.006995906, -0.015113963, 0.038129736, -0.040771462, 0.0065517216, 0.019298648, 0.022630032, 0.059801266, 0.057136156, 0.03541787, 0.008778489, 0.0071069524, -0.032098178, -0.039742827, -0.0018381057, -0.01615429, -0.005493861, -0.00093658647, 0.013419048, -0.030625354, 0.0024313258, -0.013126821, -0.025832837, -0.022980705, -0.01927527, 0.009894795, -0.009865572, -0.013968434, 0.030789, 0.061811782, -0.02090005, 0.009438921, 0.05947397, -0.015920509, 0.02580946, 0.018877842, -0.06947981, 0.021180589, 0.025739325, -0.0039392156, -0.08981878, 0.071209796, -0.034108695, -0.0016379304, 0.017720625, 0.0021668607, -0.046499107, 0.0006856368, -0.01765049, 0.007767385, 0.032776143, 0.03759204, 0.0061426046, -0.025902972, -0.024430148, -0.010566916, 0.048860297, 0.062045563, -0.036282863, -0.00078316743, 0.019696077, -0.028614834, 0.0056604305, 0.020175328, -0.056434814, -0.014295728, -0.0038749254, -0.01489187, -0.060315583, 0.022337805, -0.040257145, -0.0132437125, -0.0548451, -0.0024853877, 0.017545288, -0.007159553, -0.032612495, -0.00957919, 0.013033309, -0.013407359, 0.033267085, 0.033594377, 0.0064348313, 0.011899469, 0.010882521, 0.020677958, 0.062793665, -0.022641722, 0.00388077, -0.033360597, 0.009041493, -0.043834, 0.0024941545, -0.029152531, -0.037334878, 0.07752189, -0.025949728, 0.01563997, 0.0006118496, 0.0012047044, 0.00738749, 0.014342485, -0.041916993, -0.004812973, -0.0029631783, 0.000158259, -0.033407353, -0.0066160117, 0.0025949727, -0.07747513, -0.023506712, -0.031116296, -0.0073465784, 0.06966683, -0.029059019, 0.028497944, 0.05073055, -0.034646392, -0.026861474, 0.028638212, 0.057931013, -0.027071878, -0.052694313, -0.014447686, -0.029994145, 0.027025122, -0.0034482747, 0.07022791, 0.03630624, -0.011992983, 0.03434248, 0.02541203, -0.059053164, 0.0017796603, 0.006312096, -0.031981286, 0.0475745, -0.00484804, 0.0634015, -0.020561067, 0.008755111, 0.03242547, -0.045774385, -0.07181762, -0.036376376, 0.023249554, -0.052647557, 0.009900639, -0.005032143, 0.05059028, -0.03170075, 0.048626516, 0.023389822, 0.0073348894, 0.04872003, 0.03130332, 0.03642313, 0.0115078855, 0.00036784032, 0.05844533, 0.026253643, 0.014739913, -0.02978374, -0.030157791, 0.0190298, 0.013606073, -0.033968426, 0.046803024, 0.05423727, 0.04857976, -0.008369371, 0.03219169, 0.022828747, -0.03759204, 0.022337805, 0.02003506, -0.019333716, -0.027445927, -0.039929852, -0.021765042, 0.012565746, 0.02627702, 0.10323784, -0.01616598, -0.027819978, 0.04572763, -0.020198707, 0.02128579, -0.035978947, 0.016177667, -0.016469894, 0.043272924, 0.021449437, 0.03957918, -0.0248042, -0.030438328, -0.027118634, -0.103985935, 0.009210984, 0.049140837, -0.03191115, -0.006323785, -0.064991206, -0.053769704, -0.0127995275, -0.055639956, 0.012156629, 0.028194029, 0.020736404, -0.011741667, -0.07841026, -0.029012263, -0.083366424, 0.04467561, -0.04292225, -0.03406194, 0.033477485, -0.039392155, -0.010280534, -0.00550555, 0.020479245, -0.019731143, -0.011811801, 0.02866159, -0.038620677, 0.0014406774, 0.07583866, 0.04923435, 0.03682056, 0.013009931, -0.029877255, 0.017545288, -0.030742245, -0.02364698, 0.0046727043, 0.06994738, -0.045774385, 0.028848616, 0.0608299, -0.010707185, -0.09687898, 0.004593803, -0.030695489, -0.0460783, 0.046896536, -0.031981286, 0.018059608, 0.008410283, -0.064991206, -0.009725303, -0.035488006, 0.017510222, -0.009041493, -0.0555932, 0.007527759, -0.05297485, 0.009526589, -0.03179426, 0.019438917, 0.0015078896, 0.034202207, -0.062326103, 0.011689067, 0.027329037, 0.0040502613, 0.00021186433, 0.049514886, -0.01890122, -0.04093511, 0.008451195, 0.055078883, 0.006861482, 0.01915838, -0.002960256, 0.05283458, -0.013009931, -0.017019281, 0.014903559, -0.04222091, 0.06255988, 0.002673874, 0.02053769, -0.015312677, -0.0048831077, 0.040981866, -0.0046113366, 0.02966685, -0.05671535, 0.010093509, -0.019251892, 0.0026651071, -0.013033309, -0.0026563404, -0.008077145, 0.0008248098, 0.0046113366, -0.043904133, -0.03193453, 0.050870817, -0.02667445, 0.045610737, -0.063682035, 0.019216824, -0.004330799, -0.04769139, -0.02102863, 0.04895381, 0.015125652, -0.0057919323, 0.011104614, -0.07265924, -0.035230845, -0.024944467, -0.0053740484, 0.038363516, 0.014669779, -0.043132655, 0.020198707, 0.0026139675, -0.020385731, -0.021472815, -0.040257145, 0.028007003, 0.027188769, -0.016049089, -0.01690239, -0.025902972, -0.046943292, -0.04895381, 0.050122716, -0.008345993, 0.017323196, -0.021215655, -0.010824076, -0.069807105, 0.018947978, 0.007364112, 0.06704848, -0.019754522, 0.015791928, 0.014237283, 0.01415546, 0.07424895, -0.00063814997, 0.016797189, 0.009649324, 0.03106954, -0.110999376, -0.023401512, -0.0315371, -0.021250723, -0.04596141, -0.013909989, 0.013442426, -0.033103436, 0.0062068943, -0.050309744, -0.008345993, 0.027258903, 0.042805362, -0.009865572, -0.030952647, 0.018375212, 0.06405608, 0.006370541, -0.0006071009, 0.019883102, -0.002356808, -0.0037200453, 0.010526004, -0.0089246025, -0.050262984, -0.06045585, 0.017358264, 9.999631e-05, 0.03146697, 0.027071878, 0.021741664, 0.025739325, 0.034716528, -0.011414373, -0.035885435, -0.027142012, -0.0063530076, -0.03957918, -0.03354762, -0.016867323, -0.05311512, 0.021589706, -0.030648733, 0.026370535, -0.0038398583, 0.05171243, 0.027960246, 0.009187606, -0.016879013, -0.020923428, -0.030812379, -0.049888935, -0.011215659, 0.019567497, 0.019427229, -0.009491522, -0.0059351237, -0.035160713, -0.013769721, -0.0077849184, 0.0093337195, -0.0010067208, -0.009970774, -0.023459956, 0.01739333, 0.026954988, -0.054190513, 0.02803038, -0.0055230837, 0.08369371, -0.003375218, 0.00895967, -0.03127994, 0.045891274, 0.015078896, 0.013921678, -0.014424308, 0.0102045555, -0.05208648, 0.035324357, -0.0106662735, 0.030695489, 0.012074806, -0.043646973, 0.0014202215, -0.015675038, 0.038737565, -0.0010512854, 0.024266502, -0.001365429, 0.026393913, 0.061811782, -0.016341316, -0.039088238, 0.037101097, 0.023763873, -0.02364698, 0.0060081803, 0.008690821, 0.033968426, -0.005251313, -0.018749263, 0.0045675025, 0.065037966, 0.006598478, -0.05895965, 0.017089415, -0.021227345, -0.009602568, -0.006148449, -0.022969015, -0.041122135, 0.010093509, -0.011274105, 0.020841606, -0.05016947, -0.039859716, 0.025832837, -0.022174159, 0.0136762075, 0.015733484, -0.010730563, 0.0032963168, 0.023004083, 0.020631202, -0.009736992, -0.0021171821, -0.02552892, 0.018947978, 0.007375801, 0.020455867, -0.016621852, -0.040724706, 0.0023582692, 0.037615415, -0.063682035, -0.028848616, 0.017124481, -0.039883096, -0.007685561, -0.012320276, -0.011718289, 0.014973694, -0.019614253, 0.019099934, 0.060502607, 0.007855053, 0.05059028, 0.021367613, -0.008971359, 0.03642313, -0.02392752, 0.00888369, 0.010905899, -0.0008248098, 0.008077145, -0.011653999, -0.007375801, -0.006522499, -0.01803623, -0.0021274101, -0.030999403, -0.0040151943, 0.0093395645, 0.00062061637, 0.04444183, -0.047387477, -0.008720043, 0.049000565, 0.028755104, 0.015967265, 0.017451776, -0.039088238, -0.049140837, 0.010976033, 0.040116876, 0.047036804, -0.012109873, 0.021636462, 0.035604898, -0.010642895, 0.047644634, 0.007615427, -0.030227926, 0.0106312055, 0.027819978, -0.017510222, 0.020771472, -0.034880172, -0.0176388, -0.013465805, 0.010309757, -0.0119345365, -0.011279949, -0.04635884, -0.027352415, -0.017054347, 0.028731726, 0.05685562, -0.058492087, -0.04731734, -0.04229104, -0.0533489, -0.0080186995, -0.014938627, 0.06845117, -0.04032728, -0.006808881, -0.019859724, -0.043436572, -0.014237283, -0.024476904, -0.019707765, -0.013956745, -0.010070131, -0.011782579, -0.019590875, -0.021087077, -0.0065400326, -0.010356513, -0.034716528, 0.04023377, 0.020514311, 0.01251899, 0.024453526, -0.034365855, 0.015090585, -0.007340734, -0.021274101, -0.028778482, -0.021052008, -0.030204548, 0.0059468127, -0.0026329623, -0.000652396, -0.0012229686, -0.02992401, -0.014459375, 0.017194618, 0.009824661, 0.021449437, 0.044488586, 0.046241947, 0.021461125, 0.0054646386, -0.0031969596, -0.025435409, -0.012483923, -0.02917591, 0.0028959662, 0.013945056, -0.050637037, 0.026838096, -0.04469899, 0.016551718, -0.008386905, 0.04556398, -0.0030829913, -0.02002337, -0.011531264, -0.007860897, -0.002215078, -0.01427235, -0.027025122, -0.004085329, 0.0008028927, 0.030485086, 0.04467561, -0.012121562, -0.026510803, -0.01032729, -0.061531246, -0.0044272337, -0.016586786, 0.03177088, -0.016177667, 0.0009124777, 0.0037492681, -0.0065634106, 0.0040473393, 0.03906486, -0.011122147, 0.00022209226, 0.016879013, 0.02842781, 0.012659259, 0.024453526, -0.022700166, -0.01164231, -0.0046317927, 0.014225594, -0.02767971, 0.009292807, 0.025973106, 0.024500282, -0.014248972, 0.022045579, 0.041262403, -0.003857392, 0.035020445, -0.015125652, 0.023611914, 0.015242543, -0.0047486834, 0.0027498528, -0.002377264, -0.02454704, 0.006808881, -0.0019257737, -0.03104616, 0.0076446496, -0.027749844, 0.029292801, -0.01616598, 0.0049152523, -0.008153124, -0.016189357, -0.015803618, 0.038667433, 0.0051022777, 0.025786081, -0.027329037, 0.029199287, -0.02054938, 0.030718867, -0.01978959, 0.005631208, -0.0014596721, -0.013383981, -0.038270004, 0.0077849184, 0.01339567, -0.019766212, -0.045236688, 0.011221504, 0.0046610152, -0.04306252, 0.009018115, 0.04834598, 0.0093454085, 0.02289888, 0.03569841, -0.012869663, 0.03920513, 0.04107538, 0.0077440063, -0.018983044, 0.0012090878, 0.013769721, -0.028591456, 0.018293388, -0.021297479, 0.028848616, 0.054050244, 0.0054091155, -0.008515485, 0.00751607, -0.01076563, -0.054190513, -0.026323779, -0.013804788, 0.032448847, 0.01717124, 0.024874333, -0.05105784, 0.04018701, 0.029479826, -0.00844535, -0.033968426, -0.006452365, -0.008299237, -0.015733484, -0.020526001, 0.022255983, 0.009976618, 0.0057042646, 0.014716535, 0.0445821, 0.04785504, 0.030111035, 0.017475154, 0.016633542, -0.026253643, -0.02627702, -0.033874914, 0.039275263, -0.02091174, 0.021133833, -0.010268845, -0.011741667, 0.004506135, -0.017510222, 0.006545877, -0.019848036, -0.028825238, -0.06125071, -0.01427235, -0.07036818, -0.026954988, -0.01477498, 0.029760363, 0.018725885, 0.007025129, -0.03756866, 0.019731143, -0.011215659, 0.03630624, -0.004231442, -0.0066686124, 0.017381642, -0.045026284, -0.013056687, -0.005601985, -0.04067795, 0.0015488013, -0.01183518, -0.05344241, 0.038410272, -0.0018731729, -0.0337814, -0.0028638213, 0.05685562, 0.0051782564, -0.0065400326, -0.0047048493, -0.009988307, -0.008503796, 0.006084159, 0.011846869, -0.03759204, 0.0021653995, -0.05297485, 0.0097545255, 0.019812968, -0.015943887, 0.015441257, -0.028638212, -0.054517806, -0.021589706, 0.013804788, 0.043740485, -0.043109275, 0.019228514, -0.017206306, -0.0358153, -0.0119403815, 0.019602565, -0.051525407, 0.008123901, 0.03193453, -0.012928108, 0.039485667, -0.012483923, 0.040280525, 0.010759786, 0.007445935, 0.0008240792, -0.03127994, 0.01641145, 0.0029061942, 0.044628855, -0.009970774, 0.0015853296, -0.012741082, 0.02253652, -0.0038281693, -0.07579191, -0.01082992, 0.030952647, 0.09949733, -0.013208645, -0.003047924, 0.0076563386, -0.027632954, -0.014003501, 0.034038562, 0.016247801, -0.033243705, -0.016843945, 0.039883096, -0.04355346, 0.021449437, -0.008182347, -0.0047516054, 0.005140267, 0.04320279, -0.039275263, 0.00725891, 0.016879013, -0.025201628, 0.019824658, 0.0059672683, 0.023576846, 0.02392752, 0.010321446, -0.04119227, -0.00651081, 0.045774385, -0.021180589, -0.0035447094, -0.0035037976, 0.042735226, -0.0127878385, 0.030204548, 0.005809466, 0.0056049074, -0.03392167, 0.036142595, -0.0029456448, -0.04004674, -0.014646401, -0.028100517, -0.017708935, 0.0039742826, -0.011876091, 0.018305078, 0.023226175, 0.016598474, 0.0430859, -0.072051406, 0.020526001, 0.060783144, 0.0013632374, 0.020689648, 0.011414373, 0.010566916, 0.020923428, 0.00047377247, 0.016271181, -0.002970484, 0.0007605199, 0.0132437125, -0.060502607, -0.001183518, 0.025248384, -0.00607247, -0.03590881, -0.009655169, 0.034529503, 0.010870832, 0.0106312055, -0.02364698, 0.0066043227, 0.05016947, 0.04923435, -0.016236113, -0.033009924, 0.12343654, 0.009292807, -0.022443008, -0.0248042, -0.0012193157], [-0.015816497, -0.013118177, -0.012124375, 0.031994376, 0.0041137347, 0.01712952, -0.033873565, 0.008004617, -0.016214019, 0.07714307, -0.03435541, 0.009968128, -0.028838305, 0.009426055, 0.0062760054, 0.040739827, -0.0497262, 0.036427334, -0.017671593, -0.030765677, 0.012015961, -0.05767661, -0.05329184, 0.019285768, 0.023441663, -0.0072155995, -0.021008356, -0.00089818554, 0.0025251587, 0.019743519, 0.016768137, 0.024284888, 0.06369965, -0.023092328, 0.02541722, -0.043751348, 0.025369035, 0.019056892, -0.01980375, -0.025031745, -0.053243656, 0.005664667, -0.040474813, -0.057628427, -0.012588149, -0.007848019, -0.021682937, 0.009763344, -0.022598438, -0.010064497, -0.011690716, -0.06933721, 0.019177353, -0.023128465, 0.009004442, 0.025393128, 0.005628529, -0.13771074, 0.032958064, -0.04423319, -0.059363063, 0.027850527, 0.035873216, -0.026067708, -0.03170527, -0.019731473, -0.009094787, 0.0042161266, 0.03512636, 0.037872862, 0.01927372, 0.031970285, -0.006492835, -0.0414385, -0.00037926316, -0.044546388, 0.10378899, 0.049196173, -0.029536977, -0.016997013, 0.03336763, -0.072613746, -0.013804803, -0.029031042, -0.002127638, -0.049003437, 0.04139032, -0.114485905, 0.014792581, 0.026260445, 0.018960522, -0.00767335, 0.015515346, 0.026790474, -0.038282428, -0.020225361, 0.019454412, -0.009883805, -0.009552538, 0.017201796, -0.034764975, -0.03972796, -0.052424524, -0.07362562, 0.007854042, 0.042956308, 0.032644864, -0.046064194, -0.005258112, 0.040257987, 0.00012055487, -0.023188695, -0.008179286, 0.0039420784, -0.034716792, 0.024610134, 0.011467864, -0.05281, -0.039703865, -0.0012904359, -0.06948177, -0.042257633, 0.05888122, 0.034885436, 0.0043245414, 0.017045198, -0.016972922, 0.02821191, 0.0005386855, 0.0017000025, 0.0077215345, -0.02323688, 0.02127337, 0.027850527, 0.057532057, 0.019454412, 0.03066931, 0.004309484, -0.037270557, 0.014069817, -0.021803398, 0.0014267071, -5.5760156e-05, 0.044546388, -0.018719602, -0.011624463, -0.011389565, -0.05440008, -0.034548145, -0.03765603, -0.016430847, -0.03604186, -0.0033608552, 0.03871609, 0.028573291, -0.025200391, 0.016454939, 0.055460133, -0.016262202, 0.04991894, 0.028308278, -0.08899641, 0.0026516425, 0.008408161, -0.02289959, -0.066928, 0.025778603, -0.01298567, -0.064856075, 0.0188762, -0.008444299, -0.06254323, -0.00032731445, -0.009558561, -0.06986724, 0.0451246, 0.006137476, 0.027681882, -0.029536977, -0.046305116, -0.06490426, 0.040932566, 0.04926845, -0.06620523, 0.068614446, 0.02910332, -0.015973097, -0.015467161, 0.040691644, -0.076179385, -0.02587497, -0.03842698, -0.010022335, -0.010684869, -0.04546189, -0.0054598837, -0.0331508, -0.06442241, -0.004872638, 0.0038547444, -0.044835493, -0.034644514, -0.023164604, 0.040956657, -0.060856774, 0.01494918, 0.0017015082, -0.022429794, 0.0179607, -0.022020226, 0.036692347, -0.031440258, 0.0020071773, -0.02200818, -0.04365498, 0.028645568, -0.039005194, 0.03404221, 0.010630662, -0.04488368, 0.076323934, 0.017454764, -0.024080105, -0.015238286, -0.041173488, 0.0190328, 0.016358571, 0.020285591, -0.0013724997, -0.024453534, -0.01703315, -0.007468567, -0.009805506, 0.04714834, -0.03156072, -5.058411e-05, -0.024345119, 0.012937485, 0.03527091, 0.000672698, 0.020972218, 0.02422466, -0.050304413, -0.029633347, 0.03582503, 0.07015634, -0.0018234748, 0.022092503, -0.0027465052, 0.020141039, 0.01712952, 0.020177176, 0.052279968, 0.01584059, 0.015021456, 0.035439555, -0.042450372, -0.033198986, -0.02765779, 0.042522646, -0.016840413, 0.027730066, -0.022971867, 0.07786583, -0.030910231, -0.039101563, 0.036427334, -0.027007302, -0.050882623, -0.01449143, 0.021767259, -0.04187216, -0.01528647, 0.0011835269, 0.04748563, -0.013467513, 0.054785553, 0.029031042, -0.028332371, 0.050208043, 0.023598263, 0.028139634, -0.00073405774, 0.014937134, 0.013780711, 0.033006247, 0.02155043, -0.032403946, -0.012756795, 0.021297462, -0.022610484, -0.021911811, 0.03895701, 0.013298868, 0.052906364, 0.02295982, -0.00013344793, 0.00624589, -0.050689887, 0.01574422, 0.015816497, -0.04196853, -0.012612241, -0.038161967, -0.009010465, 0.028958766, 0.003887871, 0.07328833, -0.013563882, -0.039053377, 0.076757595, -0.0041799885, -0.012937485, -0.0684699, 0.025369035, 0.005252089, 0.04254674, 0.042739477, 0.04791929, -0.011684693, -0.00043102365, -0.020550605, -0.040257987, -0.0026892864, 0.049629834, -0.049196173, 0.001978568, 0.0077215345, -0.010166888, -0.006110372, -0.05160539, -0.025802694, 0.0064265816, -0.03213893, -0.07757673, -0.08817728, -0.037800588, 0.021369739, 0.0066976184, 0.008956257, -0.0036409264, 0.0051978817, -0.014021632, -0.022827314, -0.016924737, -0.008191331, -6.921788e-05, 0.010371671, 0.007944387, 0.009901875, 0.0013883102, 0.06350691, 0.0033789242, 0.024610134, 0.010118703, 0.03943885, -0.053677313, -0.048858885, -0.035439555, 0.0062820287, 0.064229675, -0.037583757, 0.028645568, 0.050015308, 0.012305067, -0.022586392, -0.029055135, -0.01584059, -0.01163651, 0.051701758, -0.05970035, 0.011528094, 0.060134012, -0.013937309, -0.014238462, -0.0472688, 0.010955906, -0.021008356, -0.028741937, 0.012172559, 0.0032343713, 0.008480437, 0.0025628028, 0.054641, 0.004107712, 0.014298692, -0.038378797, -0.008799658, 0.011889477, -0.04122167, 0.026814565, 0.05497829, -0.024814917, -0.010425879, 0.0026395964, -0.008372023, -0.033006247, -0.0072336686, 0.0010465028, 0.012347228, 0.028814213, -0.03830652, -0.011967776, 0.010425879, 0.02866966, -0.037101913, 0.0273205, -0.038475167, -0.005255101, 0.056134712, -0.0073481062, 0.03794514, 0.0068903556, 0.019297814, 0.0155394375, 0.05497829, 0.0042793686, 0.024104198, -0.035295002, 0.005818255, 0.01141968, -0.019948302, -0.030091098, 0.043751348, -0.049678016, 0.039487038, -0.05338821, 0.017334303, -0.009052626, -0.06167591, -0.028332371, -0.010919767, 0.025007654, 0.010516224, -0.010082565, -0.07290285, -0.027296407, -0.0561829, 0.0124435965, 0.055797424, 0.008119055, -0.014009587, -0.002767586, -0.03686099, -0.02458604, -0.012064145, -0.072035536, -0.007998594, 0.060519487, -0.01847868, -0.020671066, -0.0225623, -0.041173488, -0.022393655, 0.070397265, -0.003098853, -0.007841995, -0.040065248, 0.041510776, -0.06707255, 0.0055743214, 0.038788363, 0.062061384, -0.0202615, 0.068421714, -0.011136597, -0.025682233, 0.06427786, 0.029392425, 0.022429794, 0.020177176, 0.003180164, -0.029729715, 0.0008597887, 0.0013747584, -0.040691644, -0.025393128, 0.0152985165, 0.044185005, -0.026405, -0.0067518256, 0.005508068, 0.000494642, 0.031319797, 0.0101126805, -0.009281501, 0.029536977, 0.024658317, 0.050882623, 0.0046136472, -0.0063121435, 0.016033327, 0.023887368, -0.026284538, 0.007480613, -0.009335709, -0.0491239, -0.01706929, -0.006944563, 0.014118001, 0.05285818, 0.02587497, 0.033656735, 0.036451425, 0.016828367, 0.0067397794, -0.02922378, -0.053484578, 0.048907068, -0.05295455, -0.009672999, -0.007281853, -0.04478731, 0.020189224, -0.028236002, -0.029079227, -0.0045985896, 0.0032524406, 0.023525987, -0.0032825556, 0.013612065, -0.030283835, -0.028862398, -0.009365824, -0.007480613, -0.015720129, 0.015322609, -0.002154742, -0.014322784, -0.03124752, 0.009570607, 0.02541722, -0.014081863, 0.027175948, 0.021959996, -0.009305594, 0.02127337, 0.012997716, -0.04134213, 0.013443421, -0.010793284, 0.03854744, -0.01798479, 0.025658142, -0.04396818, 0.007010816, 0.028139634, 0.013973448, -0.005101513, -0.0132025, -0.042643107, 0.020574698, -0.009727206, 0.031994376, -0.0007317991, -0.026694104, -0.014383014, -0.024429442, 0.007480613, -0.044377744, -0.0010547845, 0.0027480111, 0.060712222, 0.063217804, -0.030910231, -0.0402098, 0.03189801, 0.0045413706, 0.026910933, -0.006667503, 0.023610309, 0.03078977, -0.02311642, -0.027031394, -0.03334354, 0.07415564, 0.0050623636, -0.04681105, -0.017502949, -0.015262378, -0.044522297, -0.009980174, 0.012021984, -0.037391018, 0.03425904, 0.009389916, 0.005965819, -0.059218507, -0.007125254, 0.0135277435, -0.0051316284, 0.026236353, 0.012817025, 0.034210857, -0.027055487, 0.03854744, 0.011461841, -0.007125254, -0.012359274, 0.0059959344, -0.024152381, -0.02597134, -0.0091068335, 0.007426406, -0.032524403, -0.015756268, 0.024296936, -0.045196876, -0.0094682155, 0.032524403, -0.05444826, -0.035680477, 0.043727256, -0.023562124, 0.00747459, -0.037993323, -0.009275478, 0.016804276, -0.00026124928, 0.019297814, 0.019876026, -0.014599844, 0.06490426, -0.043245412, -0.0004012849, -0.004851557, -0.012335181, 0.018213667, -0.026356814, 0.019671243, -0.01578036, -0.037415113, -0.028838305, -0.029151503, 0.0034722814, 0.041944437, 0.011425703, 0.030982507, -0.039679773, 0.062302303, -0.014925088, 0.02161066, -0.0016307376, 0.06080859, -0.019876026, -0.01841845, 0.06124225, 0.009739253, 0.045871455, -0.021189047, -0.03784877, 0.03112706, -0.004821442, 0.015250332, -0.016888598, -0.021369739, -0.021201093, 0.042450372, -0.026356814, -0.005146686, -0.0179607, -0.054110974, -0.0043335757, 0.01516601, -0.0026787461, -0.0124435965, -0.011600371, -0.031440258, 0.005110548, -0.006010992, 0.104752675, -0.055267397, -0.015358747, 0.0028278164, -0.026886841, -0.005782116, 0.004628705, 0.05396642, -0.014370969, -0.031536628, -0.035776846, -0.06451878, -0.009293548, -0.011781062, -0.02339348, 0.0076793735, -0.04064346, 0.025344944, -0.015647853, -0.016840413, 0.01163651, -0.00032411472, -0.042450372, 0.086298086, -0.0020764424, 0.011762993, 0.0018189575, -0.038981102, -0.012672472, 0.013359098, -0.039992973, -0.038282428, -0.040739827, -0.0022511105, -0.01562376, 0.034451775, -0.013937309, -0.011208873, -0.038258336, -0.017358396, 0.012124375, 0.010437924, 0.015153963, 0.039703865, 0.021959996, -0.019201444, -0.0035234771, -0.023610309, -0.07627575, 0.0024829975, -0.015973097, -0.018767785, -0.014587798, -0.03237985, -0.0033096594, -0.058495745, 0.013298868, -0.004827465, 0.0411253, -0.007601074, 0.019538736, -0.032765325, 0.01703315, 0.00070733053, -0.028332371, 0.01685246, -0.019635104, -0.0057188747, 0.008119055, 0.022176826, 0.03582503, -0.02989836, -0.0079022255, -0.016912691, 0.03259668, -0.02676638, 0.036788717, -0.017478855, -0.012178583, -0.023839185, -0.004574497, -0.01718975, 0.048545685, -0.0055984138, -0.013624112, 0.04996712, 0.031102968, 0.011431726, 0.021261323, -0.031536628, -0.002892564, 0.03281351, -2.4703866e-05, -0.03842698, 0.044064544, 0.019984439, -0.0038457096, -0.060085826, 0.036090042, 0.052087232, 0.04601601, 0.05252089, -0.036306873, -0.0006015509, 0.012148468, -0.045847364, -0.001246016, -0.026573643, -0.04546189, -0.023032097, -0.0011150149, -0.00290461, 0.005755013, -0.0104740625, 0.034668606, 0.015647853, 0.01875574, -0.041775793, -0.0035445578, -0.029031042, 0.051123545, 0.01080533, 0.013491605, -0.020381961, 0.045220967, -0.013865033, 0.027681882, -0.0036258688, 0.027730066, -0.014467337, 0.017659547, -0.052087232, 0.0025567797, 0.00876352, -0.012503827, -0.026405, -0.04288403, -0.016816322, -0.03334354, 0.01924963, 0.0114377495, 0.012756795, -0.0050864555, 0.009498331, -0.0039601475, 0.029488795, 0.010239164, 0.015009411, 0.023995783, 0.011510026, 0.0090285335, -0.029392425, 0.022514116, -0.012588149, 0.051894493, 0.04647376, 0.016647676, -0.011588325, -0.033054434, -0.035005897, -0.00890205, -0.023803046, -0.006986724, 0.011907546, 0.0070228623, 0.027874619, -0.038137875, 0.021670891, 0.009841644, 0.009365824, -0.050978992, 0.015864681, 0.022237057, -0.009389916, -0.053918235, 0.0041047004, -0.01556353, -0.010287349, -0.008155193, 0.013973448, 0.03693327, -0.0021186036, -0.017707732, -0.0015358747, -0.02989836, -0.019731473, -0.015443069, 0.0331508, -0.00011199086, 0.0411253, 0.036692347, 0.017225888, -0.010203026, -0.028717846, 0.042040806, -0.011208873, -0.002073431, -0.07343288, 0.0056044366, -0.008618968, -0.021189047, 0.0037282605, 0.023947598, 0.032861695, 0.009950059, -0.024646271, 0.009528446, -0.04399227, -0.0024318015, -0.024405349, 0.0052671465, 0.04466685, -0.05083444, -0.038354706, 0.011046251, -0.03237985, 0.0074866363, -0.031608902, -0.026838657, 0.0056706904, -0.014310738, 0.015479207, 0.015635807, -0.022465931, 0.029850176, 0.040956657, -0.004676889, -0.023983737, -0.022947775, -0.0031380027, 0.01875574, 0.0008883981, 0.0040414585, -0.03919793, 0.036017768, 0.01976761, 0.0042402185, 0.02474264, -0.006836148, 0.03033202, -0.020478329, 0.03931839, 0.029946545, -0.0112389885, 0.038282428, -0.01838231, -0.024116244, -0.0014861847, -0.016647676, -0.007167415, -0.00547193, -0.011166712, 0.0018535899, 0.04577509, -0.008697267, 0.0003265616, 0.035656385, 0.006098326, 0.047967475, -0.039776143, 0.016479032, 0.011534118, 0.036355056, 0.01712952, -0.0048364997, -0.026115892, -0.009823575, 0.0060200263, -0.039462946, 0.0022059376, 0.03794514, 0.048882976, -0.02452581, -0.005845358, 0.0040233894, -0.04791929, -0.013142269, 0.025007654, 0.013708434, -0.019562827, -0.027874619, 0.04288403, -0.02329711, -0.032885786, -0.029488795, -0.0042853914, 0.0067879637, 0.024200566, 0.018550957, 0.052424524, 0.012744748, 0.005902577, 0.013587974, -0.00023734533, 0.025152206, 0.0011842798, 0.007637212, -0.012997716, -0.01881597, 0.027175948, -0.042498555, -0.0033849473, -0.005408688, 0.007564936, -0.019562827, 0.057532057, 0.020875849, -0.0063061207, -0.075745724, -0.0072698067, 0.016310386, -0.047943383, 0.017045198, 0.013816849, 0.017141566, -0.03247622, 0.01709338, 0.056953847, 0.04498005, -0.014419152, 0.019598965, -0.051990863, -0.0027901724, 0.016659724, -0.02989836, 0.0051978817, 0.014913042, -0.0030431398, -0.027031394, -0.020418098, -0.032741234, -0.031416167, -0.017731823, 0.016936783, -0.035295002, 0.05979672, 0.024284888, 0.03536728, -0.014852812, -0.011666625, 0.018045021, -0.010696915, -0.00022831078, 0.006854217, -0.00025372047, 0.014130047, 0.045413706, 0.014925088, 0.002773609, 0.1123658, 0.01703315, -0.006673526, 0.008534645, -0.002010189], [-0.015183306, 0.0015315964, -0.016051613, 0.03755426, 0.014568256, 0.0119934855, -0.018403277, 0.07192473, -0.0062771332, 0.043632407, -0.021864444, 0.023613116, -0.0129401805, -0.013724069, 0.024252286, 0.031427875, 0.0029124452, 0.04240231, -0.027110463, -0.044355996, -0.016835501, -0.0632899, -0.060926184, 0.013121078, 0.0066690776, -0.015931014, -0.0056078136, 0.030366613, 0.02274481, 0.02800289, 0.043704767, 0.012409549, 0.045803174, 0.015400383, 0.038060773, 0.036854792, 0.053449098, 0.04083453, -0.02017607, -0.03762662, -0.021068497, -0.015472742, -0.012240712, -0.02790641, -0.038663764, -0.0046430286, -0.021321751, -0.028364684, -0.019657498, -0.041316923, -0.0072298585, -0.02407139, 0.001821032, -0.017028458, 0.006946453, 0.010232752, 0.0765557, -0.091799304, 0.019934874, -0.011342255, -0.013675829, 0.045634337, 0.050940655, 0.0011939217, -0.0062711034, -0.03646888, 0.0011351301, -0.015774237, 0.04734683, 0.04486251, 0.022238297, 0.03263386, -0.0024602022, -0.029980699, 0.0008004702, -0.020007232, 0.08176554, 0.040738054, -0.014073803, -0.030873125, 0.015110947, -0.047829226, 0.013567291, -0.0005551283, 0.013289915, -0.031982627, 0.046647362, -0.11702844, -0.03128316, 0.020646403, 0.018921848, 0.022419196, 0.026989864, -0.013917026, -0.07245536, 0.02932947, 0.036107086, -0.0033586584, -0.035311136, 0.011728169, -0.021369992, -0.025518568, -0.058369502, -0.08871199, 0.01558128, 0.03704775, 0.020091651, 0.0051435106, 0.012017605, -0.016437527, 0.01817414, -0.023926672, -0.011318136, 0.07279304, -0.006614808, 0.03497346, -0.028364684, -0.078919426, -0.030077178, -0.007814759, -0.07414374, -0.045127824, 0.05065122, 0.04809454, 0.033598643, 0.05407621, -0.036034726, 0.02011577, -0.010184513, -0.019633377, -0.020947898, -0.016051613, -0.028991794, 0.03128316, 0.0662325, 0.013205497, 0.014797392, -0.038494926, 0.023420159, 0.0015217979, -0.065123, 0.0055384696, -0.024505543, 0.018294739, -0.01620839, 0.0047093574, 0.008182584, -0.053304378, -0.053111423, 0.0097383, -0.0010899057, -0.01169199, -0.024794979, 0.02208152, 0.04343945, -0.03188615, 0.046526764, 0.01950072, -0.05340086, 0.0067896754, -0.0065303897, -0.048480455, -0.021357931, 0.039314996, -0.035552334, -0.06965749, 0.046719722, -0.009032801, -0.012566326, 0.037916057, 0.030607808, -0.021780025, 0.013687889, -0.013904966, -0.06767968, -0.010214663, 0.029811861, 0.04553786, -0.068789184, -0.033188608, -0.061167378, 0.025470328, 0.008785575, -0.08055956, 0.0106427865, 0.030873125, 0.06304871, 0.022563912, -0.011468884, -0.08668595, 0.0010017183, -0.016449587, 0.0039465744, -0.0632899, -0.041268684, -0.02662807, -0.02670043, -0.028991794, -0.02344428, 0.04286058, -0.023191024, -0.03576941, 0.0074951747, -0.019741917, -0.046382047, 0.0012843702, 0.031017842, -0.0016220451, 0.013591411, -0.0011607572, 0.0007047454, 0.007724311, 0.0072419187, 0.023842253, 0.02071876, 0.034780506, -0.07694162, 0.004748552, 0.01234925, 0.004226965, 0.044114802, -0.043174136, 0.040979248, 0.0027707424, -0.06912686, 0.044428356, 0.035986487, 0.028871195, 0.002368246, 0.016931979, -0.023323681, -0.030993722, -0.03323685, 0.018017363, -0.075735636, -0.027737573, -0.026531592, -0.018355038, 0.055040993, -0.007591653, 0.020851418, 0.018596234, -0.0059876977, 0.010956341, -0.022057401, 0.05899661, 0.0004341533, 0.027689334, -0.02853352, -0.017281715, -0.00016780102, 0.028388804, 0.032585617, 0.043801244, -0.020887598, 0.052966706, -0.014676794, -0.011613601, -0.043174136, 0.006614808, -0.05981668, 0.04686444, -0.028075248, 0.04814278, 0.032778576, -0.019645438, 0.039532073, -0.03569705, -0.060781464, -0.014737093, 0.028388804, -0.04015918, 0.02466232, 0.047129754, 0.024626141, -0.015713938, 0.065171234, 0.038012534, -0.025783883, 0.04095513, 0.04483839, 0.0076398924, -0.0041184267, -0.001596418, 0.0035214657, 0.030077178, 0.011746259, -0.05783887, -0.064158216, -0.0012255786, -0.029667143, 0.0031717313, 0.06034731, 0.02147853, 0.041196328, -0.005255064, 0.0013883861, 0.013567291, -0.043777127, -0.0072600082, 0.033429805, -0.00034295098, -0.013470813, -0.0624216, -0.025663285, 0.0071755894, 0.00391341, 0.09218522, 0.025904482, -0.03854317, 0.047250353, -0.0115713915, -0.01496623, -0.008285092, -0.009967437, -0.016751083, 0.037433665, 0.026386874, 0.06792087, -0.024819098, 0.031596713, -0.014676794, -0.06956101, 0.0010213156, 0.056970563, -0.042522907, 0.01628075, -0.044066563, -0.062083926, 0.0145200165, -0.045224305, -0.061215617, -0.020441385, 0.023275442, -0.04281234, -0.09059332, -0.033478044, -0.038760245, 0.02021225, -0.034056917, -0.026242156, -0.053690292, -0.00913531, -0.054027967, -0.013977325, -0.002118005, 0.03043897, 0.001397431, 0.032657977, 0.0037807517, 0.0013642665, 0.087168336, 0.013917026, 0.06058851, -0.01745055, 0.05600578, -0.04500723, -0.028726477, -0.012071874, 0.026869267, 0.058851894, -0.03622768, 0.04741919, 0.020091651, 0.023637237, -0.051567767, -0.060492028, 0.0074409056, 0.024445243, 0.012126143, -0.055716343, -0.0032802694, -0.044669554, -0.003126507, 0.0037897967, -0.06256632, 0.026338635, -0.0042420398, -0.0028762657, 0.022624211, -0.006421851, -0.021912683, -0.007615773, 0.03241678, 0.020031352, 0.028895315, -0.01634105, -0.0061022663, -0.0118186185, -0.027592855, 0.018716833, 0.025663285, -0.017257594, -0.010136274, 0.041799318, 0.05060298, -0.032585617, 0.027013984, 0.020947898, -0.013844667, 0.009702121, 0.00911119, -0.0050952714, 0.0068499744, -0.0015089842, -0.021611188, -0.0067354064, -0.039532073, 0.016594304, 0.04428364, 0.0071997093, 0.011878917, -0.043342974, -0.012138203, 0.020477565, 0.04155812, -0.006283163, 0.0063374327, -0.027665215, 0.01944042, -0.020344907, -0.038808484, -0.0014788348, 0.03263386, -0.03970091, 0.058610696, -0.04208875, 0.01951278, -0.049734674, -0.036107086, -0.039218515, -0.03897732, 0.010347321, 0.012144233, -0.009919197, -0.07192473, -0.018933909, -0.023842253, 0.00163109, 0.07149058, -0.00073225686, -0.008737336, 0.029570665, 0.016123971, -0.049686436, 0.0065183295, -0.076507464, -0.046285566, 0.020465504, -0.030945484, -0.06256632, -0.027086344, -0.048986968, -0.050265305, 0.042691745, -0.009406655, 0.039290875, 0.0050410023, -0.0027722497, -0.060684986, 0.018644473, -0.0057525313, 0.08340567, 0.010678966, 0.0427641, -0.028702358, -0.00030564092, 0.055378668, 0.017161116, -0.0021647366, 0.015460682, 0.044428356, -0.040038586, 0.05653641, 0.013965265, -0.0069886623, -0.015894836, 0.016799321, 0.057597674, -0.036637716, -0.00978654, 0.003060178, 0.017824406, 0.061215617, -0.0055143503, 0.015062708, -0.005001808, 0.01882537, 0.03646888, 0.012457788, 0.003575735, 0.021575008, -0.005921369, 0.029618904, 0.022563912, -0.019621318, -0.0019642422, -0.050458264, -0.0010559876, -0.014122043, 0.0133622745, 0.038929082, 0.023637237, 0.07047755, -0.014483837, 0.021840325, -0.03509406, -0.035865888, -0.01298842, -0.018547995, -0.010184513, -0.0027240105, -0.032199703, 0.0010190543, -0.015171247, 0.009587552, 0.01890979, 0.03777134, 0.01035938, 0.01105282, 0.021225274, -0.03309213, -0.032802694, -0.0025370833, -0.010455859, 0.023456339, 0.0011177941, 0.008260973, -0.012542207, -0.028051129, -0.0324409, 0.0048962845, -0.006614808, -0.009653881, 0.025470328, -0.009545343, 0.017969124, 0.025060294, -0.012759284, 0.011486974, -0.007862999, 0.027351659, -0.021683546, 0.0047636265, -0.056922324, 0.026386874, 0.040979248, 0.011854798, -0.016075732, 0.01821032, -0.040810414, 0.030173656, 0.034129273, 0.030656049, -0.030583689, 0.020598164, -0.039917987, -0.053738534, -0.016509887, 0.0014449165, 0.011119149, 0.02272069, 0.08031836, 0.03297153, -0.009792569, -0.037240706, 0.036010604, -0.010968401, -0.028171726, 0.0029154602, -0.010733235, 0.009243848, 0.0030782677, -0.0030089237, 0.018656533, 0.075446196, 0.022877468, -0.045079585, -0.021394111, -0.025735645, -0.02670043, 0.023794014, 0.02602508, -0.042016394, 0.020453446, 0.0023893507, -0.02920887, 0.00076202955, -0.033502165, -0.005725397, -0.017655568, 0.026748668, -0.01169802, -0.017016398, -0.025156774, 0.019018328, 0.0047787013, 0.0037294975, 0.0019763021, 0.010057885, -0.03622768, -0.026121559, -0.0030752528, -0.011866857, 0.017185235, 0.0041395314, 0.055957537, -0.0111854775, -0.009937287, 0.039797388, -0.051760722, 0.03958031, 0.034756385, 0.0025129637, 0.0080619855, -0.042691745, 0.010244812, 0.06362758, 0.022998067, 0.03644476, 0.05407621, 0.026290396, 0.06579835, -0.021514708, 0.03854317, -0.0016748067, -0.008532318, -0.009690061, -0.006946453, -0.02153883, -0.011360345, -0.014773273, 0.008001687, -0.058562458, -0.021575008, 0.028871195, 0.028774718, 0.02860588, 0.012771344, 0.034852862, 0.016196331, 0.038326092, -0.01497829, 0.05065122, -0.026121559, -0.015086828, 0.042739984, 0.008068016, 0.01753497, -0.010678966, 0.00307676, 0.017173177, 0.004736492, 0.053786773, -0.014387359, -0.025639165, 0.011740229, 0.024963817, -0.040183302, -0.0076338626, -0.0010250842, -0.0846599, -0.0011313614, -0.008417751, -0.006940423, 0.0069223335, -0.037867818, -0.0006312559, -0.0045405203, 0.023528699, 0.024372885, -0.027038105, -0.021068497, -0.00062070356, 0.0023953808, -0.02020019, -0.040593334, 0.04676796, -0.000924837, -0.009521224, -0.022575973, -0.056150496, -0.043270614, -0.0024617095, -0.028244086, 0.0062711034, -0.037385426, 0.04488663, -0.03051133, -0.034852862, 0.023540758, -0.030824885, -0.010841773, 0.035190538, 0.021828264, -0.0033888079, -0.0009323744, -0.05851422, 0.041702837, 0.029281229, -0.014013505, -0.0017622404, -0.017378192, -0.008369511, -0.0043264586, 0.023854313, -0.0016748067, 0.006174625, -0.028437043, -0.033357445, 0.010124214, -0.004507356, -0.0022913648, 0.06246984, 0.018427396, 0.0030903274, -0.033453926, -0.031379636, -0.06179449, 0.013253736, -0.005077182, -0.05397973, 0.0021903638, -0.032103226, 0.04088277, -0.0325615, 0.021924743, 0.004730462, 0.022539793, -0.010956341, 0.049589958, -0.046502646, 0.0017682703, -0.0036601536, -0.01690786, -0.009846838, 0.0066690776, 0.0076941615, 0.017848525, 0.033936318, 0.01105885, -0.018801251, 0.0050289426, -0.023866372, 0.027086344, -0.028412923, 0.043198254, -0.0030239986, -0.021683546, -0.022527734, 0.020284608, -0.017088758, 0.028726477, 0.0037777368, 0.0110287005, 0.029040033, 0.0080619855, -0.012469848, 0.035600573, -0.012518087, -0.011462853, 0.021008197, 0.008339361, -0.00026588122, 0.04220935, 0.03128316, -0.040038586, -0.038856722, 0.024517603, 0.022383016, 0.023697535, 0.025856242, 0.0074951747, -0.029450066, 0.012180412, -0.011939216, 0.010908102, 0.0084659895, -0.0050349724, -0.013072839, -0.013892906, 0.001109503, -0.017100817, -0.022986006, 0.045031346, 0.042378187, -0.0063374327, -0.011981426, 0.022383016, 0.0045797145, 0.029040033, 0.032875054, 0.043053538, -0.011456824, 0.03909792, 0.006759526, 0.026893387, -0.0010303603, 0.027761692, -0.02802701, 0.020224309, -0.0123974895, 0.0035455856, 0.033960436, -0.004615894, -0.0107995635, -0.03183791, -0.037481904, -0.016726963, 0.024348766, 0.012879882, -0.039218515, 0.004769657, 0.0012037202, 0.0041335016, 0.03123492, 0.047612146, -0.021900622, -0.029425947, 0.023022186, -0.014507957, -0.029522426, 0.02923299, -0.050217066, 0.015171247, 0.040520977, 0.01360347, 0.004480221, 0.009587552, -0.032730337, -0.022021221, -0.029618904, -0.040641576, 0.038253732, 0.013193437, 0.04749155, -0.013724069, 0.04286058, 0.034346353, 0.014785333, -0.03769898, 0.0028099366, -0.01691992, -0.002662204, -0.036710076, 0.012566326, 0.0029501321, -0.018101782, 0.0153280245, 0.013567291, 0.047033276, 0.003022491, 0.0107995635, 0.025229132, -0.023806073, 0.004350578, -0.029377708, 0.027375778, 0.029377708, 0.037457783, 0.019790156, 0.026796907, 0.019693676, -0.042305827, 0.01752291, -0.027978769, -0.028919434, -0.03707187, -0.04216111, -0.019066567, -0.021321751, -0.008496139, 0.035986487, 0.053063184, 0.021876503, 0.03123492, -0.03562469, -0.03839845, -0.0018150021, -0.024360824, -0.0029395798, 0.042643502, -0.05914133, -0.009497104, -0.0069826324, -0.017016398, -0.019030387, -0.030246014, -0.012855763, 0.009418715, -0.018427396, -0.027375778, -0.011016641, -0.0008750903, 0.03958031, 0.054027967, -0.0045043407, -0.037264828, -0.016027493, 0.01954896, 0.0047817165, -0.009575493, 0.01945248, -0.033429805, 0.02923299, 0.00039081337, -0.0092739975, 0.028919434, -0.0016672694, -0.0042691743, -0.01875301, -0.006747466, 0.034032796, -0.018596234, 0.03837433, -0.044790152, -0.007489145, -0.016365169, -0.017221415, -0.025180893, -0.0033345388, -0.03176555, -0.03164495, 0.054462124, -0.006952483, 0.0139411455, 0.010467919, -0.026555711, 0.014194402, -0.0029742518, 0.012433669, 0.03178967, 0.0015994329, 0.0018541964, -0.011336226, -0.015026528, -0.0033978526, 0.021888563, -0.027641095, -0.0022250358, 0.050410025, 0.07071875, -0.021020256, -0.0094488645, 0.0403039, -0.033188608, -0.01634105, 0.025928602, -0.009599612, -0.009907138, 0.019874575, 0.054799795, -0.039532073, 0.004404847, -0.016594304, -0.028798837, -0.018137962, 0.021924743, 0.024915576, 0.0075012045, 0.03116256, -0.017112877, -0.00051480334, -0.001979317, 0.019247463, -0.00519175, 0.048649292, -0.019778095, -0.0007793655, 0.03236854, -0.028147606, -0.00097609125, 0.014761213, -0.017800286, -0.01684756, 0.023516638, -0.010244812, -0.026290396, -0.020646403, -0.011679931, 0.014725033, -0.037916057, 0.028871195, -0.011167388, -0.005068137, -0.036661837, -0.012626626, 0.036251802, 0.0351423, 0.017088758, 0.023673415, -0.047925703, -0.005327423, 0.038615525, -0.0012135188, 0.0017592254, 0.025952721, -0.036806554, -0.010274962, -0.014061743, -0.034876984, 0.017305834, -0.032995652, 0.046430286, -0.025639165, 0.039917987, -0.005583694, 0.022310657, -0.013350215, 0.0069223335, 0.0034189573, -0.01234322, -0.007073081, -0.016992278, -0.0466956, 0.029618904, 0.043873604, 0.018487696, -0.0057012774, 0.1293777, 0.010902072, -0.030921364, 0.043632407, -0.016485766], [0.00517665, 0.025430808, -0.007950066, 0.025336793, 0.008678675, -0.020871125, -0.039227374, 0.0066279923, -0.00025009213, -0.005508637, -0.009900858, 0.017486619, -0.026041899, -0.012339347, 0.008995972, 0.0004630928, -0.05871179, 0.03866329, -0.014701451, -0.033563025, -0.01916712, -0.04052007, -0.07032253, 0.044797707, -0.015571081, -0.0043128957, 8.6852844e-05, 0.018885078, 0.005582086, -0.020495068, 0.04620792, 0.005852376, 0.06623292, -0.049263377, 0.059087846, -0.014243132, 0.025289787, 0.023738554, -0.043951582, -0.0115226, -0.02712306, 0.036312938, -0.027522622, -0.028110208, -0.03506725, -0.008167473, -0.06383556, -0.003319872, -0.04902834, -0.026088906, 0.00449211, 0.008678675, 0.041319188, 0.0044274754, 0.016041152, -0.0022607448, 0.0747882, -0.11770562, -0.018755808, 0.008473018, -0.021364698, 0.028509768, 0.018932085, -0.014125615, 0.036218923, -0.0047183316, 0.024702199, -0.0030583953, 0.02524278, 0.036171917, -0.0048946077, 0.017122313, -0.02912086, 0.013608538, -0.0121513195, -0.06298943, 0.08296742, 0.07276689, -0.04319947, -0.0454088, -0.0010642688, -0.06928837, -0.01523028, -0.016393704, -0.0016481843, 0.0039867843, -0.011070157, -0.10529576, -0.015347798, 0.005573272, 0.018391503, 0.0037752527, 0.024138113, 0.019390402, -0.043269977, 0.015723854, 0.04442165, -0.002056558, -0.011963291, -0.018415008, -0.02564234, -0.038851317, -0.052741896, -0.048370242, 0.032505367, -0.011593111, 0.036383446, -0.050015487, 0.0029408778, 0.07309595, 0.012057305, 0.0083084935, 0.01655823, -0.020730104, -0.01749837, 0.052271828, 0.030484064, 0.0015115701, -0.0066691237, -0.008461267, -0.08663397, -0.011963291, 0.01115242, 0.0040426054, -0.01535955, 0.06392957, 0.025078256, 0.09171073, 0.0044774204, -0.012104312, -0.012069057, 0.02712306, 0.043669537, 0.06665598, 0.036430456, 0.0044304132, 0.0038222598, -0.023785561, -0.019531425, -0.03351602, -0.06637394, 0.028486265, -0.033539522, 0.034620684, -0.0227044, 0.0030069815, 0.01916712, -0.027005544, -0.025125261, -0.013714303, -0.041319188, -0.027217075, 0.026605984, 0.005317671, -0.009565933, -0.03593688, 0.016781513, 0.050438553, -0.020659594, 0.0058200588, 0.027992692, -0.06872429, 0.0048593525, 0.012550879, 0.031306688, -0.05396408, -0.020365799, -0.039885473, -0.06129718, 0.033845067, 0.007773789, -0.02090638, 0.012057305, 0.011234682, -0.029308889, -0.0025045937, 0.031612232, 0.032035295, -0.045314785, -0.02698204, -0.050579574, 0.106047876, 0.013890579, -0.05062658, 0.059322882, -0.010247534, -0.011175923, -0.042165313, 0.03727658, -0.0059405146, 0.019625438, -0.02411461, 0.025125261, -0.024091108, -0.0105942115, -0.02571285, -0.017380852, -0.038827814, 0.04634894, -0.0125273755, -0.010570708, -0.05979295, -0.04421012, 0.0054910094, -0.038851317, 0.03093063, 0.03187077, -0.0027807602, 0.0126919, -0.014454664, 0.019331645, -0.012069057, 0.044092603, -0.041789256, 0.007591637, 0.033939082, -0.06369454, 0.036547974, -0.028768307, -0.030108009, 0.050814606, -0.021164918, -0.0038780808, 0.012245334, -0.026300438, 0.027005544, 0.016205676, -0.017980192, -0.015183274, -0.016287938, 0.0015174459, -0.047594626, -0.0013969904, 0.029167866, -0.03365704, -0.0012574382, -0.014807217, 0.012797666, 0.02343301, -0.009471918, 0.035889875, 0.010605963, -0.068583265, -0.035090756, 0.010435563, 0.069946475, 0.013114964, 0.0373941, -0.028885825, -0.013702552, 0.05161373, -0.015688598, -0.0035284657, 0.025877375, 0.0098068435, 0.077091545, 0.010265162, -0.075023234, 0.011728256, 0.03847526, 0.0033962585, 0.040990137, -0.044774204, 0.053823058, -0.004480358, -0.03400959, 0.015806116, -0.025595332, -0.019202376, -0.046677988, 0.062096298, -0.015594585, -0.035184767, -0.013737807, 0.0076386435, -0.009736333, 0.016193924, 0.03640695, -0.035325788, 0.08268538, 0.016452463, -0.017380852, 0.008948965, 0.021294188, 0.023562279, -0.037981685, -0.0053646783, -0.028509768, -0.014243132, -0.0006041139, -0.055750348, -0.030484064, 0.040049996, 0.057395592, -0.008578785, 0.01336175, -0.0038428253, -0.011980919, -0.024678694, -0.02477271, -0.0077091544, 0.048793305, -0.005367616, -0.084518656, 0.014701451, 0.011675373, 0.007656271, 0.052882917, 0.022398854, -0.02437315, 0.0721088, 0.002439959, -0.024537673, -0.021717252, 0.0046860143, -0.024702199, 0.029825965, 0.03133019, 0.024937233, -0.023538774, -0.04764163, -0.009742209, -0.08917235, 0.035419803, 0.027828166, 0.004497986, 0.005211905, -0.0063753296, -0.09392006, 0.00283805, -0.035090756, 0.040449556, -0.03252887, -0.020824118, -0.026535474, -0.11159471, 0.0020653717, -0.014008097, 0.034879223, -0.04576135, -0.038710296, -0.02137645, 0.0134322615, -0.05184876, 0.009513049, 0.024138113, 0.006792517, -0.009466043, 0.032763906, -0.034644186, 0.0014234319, 0.046913024, -0.012738908, -0.025266282, 0.032293834, -0.04634894, -0.055844363, -0.029872973, -0.004054357, -0.00013073832, 0.07774964, -0.1021933, -0.0004965118, 0.04587887, -0.0032816788, -0.06049806, -0.02785167, -0.018650042, 0.0031024646, 0.007826672, -0.02498424, 0.06383556, 0.017886179, -0.0514257, -0.04416311, 0.0041278056, 0.0293794, -0.009912609, -0.01436065, 0.025548326, -0.0014623596, -0.062472355, 0.0034226999, 0.034221124, -0.02003675, 0.02712306, -0.02484322, 0.008478895, 0.013549779, -0.010817494, 0.01890858, -0.01756888, -0.028697796, -0.007861927, 0.023609284, -0.0013330902, -0.0010172616, -0.0020785925, -0.014019849, 0.009947864, -0.0037987563, 0.026676495, 0.017592384, 0.0006569968, 0.0072978428, -0.036242425, 0.00965407, 0.013020949, -0.012574383, 0.04714806, -0.013514523, 0.035842866, 0.010723481, 0.016511222, 0.021693747, 0.02571285, 0.0060462803, 0.0043158336, -0.06294242, 0.018262234, 0.03574885, -0.011023151, 0.0046184417, 0.020201275, -0.037159063, 0.029355895, -0.07159172, 0.03920387, -0.022857172, -0.054528166, -0.02625343, -0.015242032, 0.04322297, 0.05711355, -0.010582459, -0.05255387, -0.05363503, -0.027875174, -0.01012414, 0.05617341, 0.044844713, 0.004539117, -0.009184, 0.006886531, -0.018509021, -0.01336175, -0.085129745, -0.0100242505, 0.035490315, -0.00029783364, -0.027334593, -0.0006856417, -0.036430456, -0.033280984, 0.057066545, -0.00026643442, 0.017862674, -0.019872226, 0.003569597, -0.10426161, 0.008490646, 0.0055938377, 0.062190313, -0.015923634, 0.022880675, 0.0041307434, 0.009894981, 0.031024646, 0.032646388, 0.03553732, 0.008702178, -0.0037429354, -0.042846914, 0.012868176, -0.016464215, -0.0060462803, -0.053541016, -0.012174822, 0.009789215, -0.0066573718, -0.044727195, -0.021834768, 0.011405082, 0.05358802, 0.0010503135, -0.0045773103, 0.04790017, 0.01282117, 0.042588376, 0.010494322, 0.016240932, 0.03245836, -0.016099911, 0.007955941, 0.022551626, -0.06618591, -0.023480015, -0.023338994, -0.011769387, -0.03184727, 0.03520827, 0.002591263, 0.046583973, 0.055327285, 0.017862674, 0.019343397, -0.013620289, -0.037370596, 0.0019904543, -0.004110178, -0.017921433, -0.024420157, -0.04169524, 0.043904573, -0.02310396, -0.02977896, -0.0113639515, 0.03231734, 0.010923261, 0.021905279, -0.0454088, -0.0046860143, -0.03431514, -0.02458468, 0.0013999284, -0.011963291, -0.0039280257, 0.019543177, -0.004283516, -0.015582833, -0.023668043, 0.01809771, 0.03633644, 0.027546125, 0.035090756, 0.024185121, 0.016922534, 0.038052198, -0.027710648, 0.00644584, -0.019648941, 0.07314295, -0.031165667, -0.0036841766, -0.05617341, 0.029003343, -0.00054645684, 0.0030877749, -0.019601936, 0.043152463, -0.07051056, 0.033139963, -0.012609638, 0.031753253, -0.0060932874, -0.02491373, -0.027687145, -0.01649947, 0.014184373, -0.0088020675, 0.0067572617, 0.016746257, 0.0948602, 0.053447, -0.018579531, -0.031541724, 0.03440915, 0.001373487, -0.00091516826, 0.0112464335, 0.031048149, 0.010459066, 0.016534725, -0.0029893538, -0.007197953, 0.053682037, -0.011081909, -0.028321741, -0.020330545, -0.015994145, 0.022340095, -0.012027926, -0.010541328, -0.05062658, 0.032622885, 0.016099911, -0.010852749, -0.043458007, -0.0057848035, 0.027428607, 0.0008879923, -0.008572908, 0.038146213, 0.04482121, 0.013326495, -0.027499117, 0.022011045, -0.00046566347, -0.010488445, 0.029214874, 0.029567426, 0.008296742, -0.00089680613, -0.00400735, -0.02658248, -0.029637938, 0.029073853, -0.040825613, -0.035231777, 0.026229927, 0.003475583, 0.0150305005, 0.027358096, -0.054716192, 0.018720552, -0.028110208, 0.016088158, 0.036641985, 0.021576231, 0.03534929, -0.0064399643, 0.021940535, 0.07920686, -0.05363503, 0.00834375, 0.015218529, 0.013267737, 0.01309146, -0.017909681, -0.013549779, -4.030486e-05, -0.012057305, -0.018979091, -0.020694848, 0.010312169, 0.02110616, 0.013138467, 0.050579574, 0.009377904, -0.027640138, -0.027569627, 0.0088608265, 0.0121513195, 0.08837323, -0.02897984, -0.041836265, 0.027146565, 0.012480369, 0.019413907, -0.034620684, -0.011228806, -0.015265536, 0.01535955, 0.035372797, -0.002641208, -0.01689903, 0.00124789, 0.016934285, -0.022022797, 0.020753607, -0.042517867, -0.0038898324, 0.00017489924, -0.010182899, 0.034620684, 0.014572182, -0.011581359, -0.042729396, -0.023127463, 0.02858028, 0.088608265, -0.06505774, -0.05570334, 0.007897182, -0.0394154, -0.00831437, -0.026911529, 0.041648235, 0.003475583, -0.016135165, -0.064305626, -0.026817515, -0.016464215, -0.0023650415, -0.006798393, -0.010799867, -0.033633534, -0.012550879, -0.021317692, -0.036030896, 0.003960343, 0.023021696, -0.022516372, 0.026864523, 0.0044686063, 0.030883623, -0.0075975126, -0.0681132, -0.007427112, 0.0044157235, -0.018814567, 0.0021402892, -0.031635735, -0.026817515, 0.015112762, 0.0071626976, -0.011916284, -0.01997799, -0.023127463, -0.030531071, 0.018144717, 0.012762411, 0.037206072, 0.027522622, -0.0048211594, -0.018156469, -0.041178167, -0.022998193, -0.050673585, 0.013784814, -0.03245836, -0.034761705, -0.029167866, -0.008402508, -0.028533272, -0.020730104, 0.036641985, 0.0047477107, 0.0447507, -0.008302618, 0.014207877, -0.06063908, 0.0056907893, 0.009477794, -0.027381599, 0.017956689, 0.0079735685, 0.0121513195, 0.0077444096, 0.036148414, -0.0012890211, -0.05955792, -0.029073853, 0.0024693385, 0.0075622573, -0.0253838, 0.020365799, -0.010265162, -0.028627286, -0.029802462, 0.00091957516, 0.036806513, 0.026394451, -0.011258186, 0.03480871, 0.03426813, 0.01943741, -0.0320588, 0.0003094018, -0.0059933974, -0.01943741, 0.015994145, -0.016946036, -0.01055308, 0.0113522, -0.013349999, 0.039979488, -0.059745945, 0.014607437, -0.0016702188, 0.0054410645, 0.045126755, -0.03299894, -0.031306688, -0.0032963685, -0.034033097, 0.017204575, 0.004589062, -0.053917073, -0.029966986, -0.037370596, 0.03351602, -0.003654797, -0.01296219, 0.035913378, -0.012257085, -0.0056232167, -0.0347382, 0.024138113, 0.00025211196, 0.0074388636, -0.015006997, 0.042306334, 0.0070451796, 0.03915686, -0.0487463, 0.016722754, 0.019449161, 0.031259682, -0.00050275493, 0.03892183, -0.06933538, 0.0043628407, 0.0054116854, -0.020142516, -0.03266989, -0.013737807, -0.02564234, -0.051049642, 0.03419762, 0.030766107, -0.0015086321, 0.0022651516, 0.010858626, -0.059275877, 0.04047306, 0.012198326, 0.0113051925, 0.007944189, 0.018403256, 0.0014652975, -0.017040052, 0.006157922, -0.03685352, 0.020412806, 0.051942777, -0.013173723, -0.02944991, -0.013878828, -0.01729859, -0.01488948, -0.031283185, -0.020130765, 0.0032669893, -0.0028365809, 0.044891723, -0.047524117, 0.04916936, 0.014266636, 0.011211178, -0.027005544, -0.0034932105, 0.02043631, 0.037464608, -0.045338288, 0.02030704, -0.011881029, -0.030672092, 0.008496522, 0.0016922534, 0.06524577, 0.02618292, 0.054763198, -0.01349102, -0.035490315, 0.005872942, -0.020835869, 0.019002596, 0.013878828, -0.0028292362, -0.013032701, 0.011416835, -0.0038222598, -0.018062454, 0.007421236, 0.012433361, -0.010359176, -0.050814606, 0.013937587, -0.012374603, -0.021870025, -0.04282341, 0.035372797, 0.019872226, 0.032575876, 0.006052156, 0.01015352, -0.040990137, -0.014431161, 0.020013247, 0.0045508686, 0.015853124, -0.033163466, -0.027569627, 0.002489904, -0.015712103, 0.058617778, 0.015312542, -0.022481116, -0.008226232, -0.0027484428, -0.0138670765, 0.024232129, -0.031800263, 0.027240578, 0.0042188815, -0.0032493614, -0.022986442, -0.035278782, 0.024561178, 0.0041689365, 0.014642692, -0.0076503954, -0.015571081, -0.003713556, -0.01950792, -0.006398833, 0.03513776, -0.02991998, 0.035302285, -0.036759503, 0.024091108, 0.03440915, -0.0060697836, 0.034879223, -0.04359903, -0.036971036, -0.0002895707, 0.014807217, -0.04115466, -0.0320588, 0.023080455, 0.022551626, 0.052036792, 0.034221124, 0.008837323, 0.01997799, 0.033751052, 0.015876627, -0.05377605, 0.035772357, 0.012997446, -0.016722754, 0.042635385, -0.018932085, -0.06717306, -0.03111866, -0.0024091108, -0.033280984, -0.0050209393, 0.04822922, 0.04195378, -0.0071039386, -0.044915225, 0.019449161, -0.025219277, 0.019719452, 0.014090359, 0.017745158, -0.013502772, -0.011034902, 0.007873679, -0.004630193, -0.010000748, -3.006798e-06, -0.0015864875, -0.013279488, 0.040731598, -0.007850176, 0.012186575, 0.0011046653, -0.0024752144, 0.004171875, 0.006210805, 0.0019346334, 0.008167473, -0.0019287575, -0.030296035, 0.016099911, 0.032223325, -0.033962585, 0.004295268, 0.021540975, 0.030178519, 0.013244233, -0.00010218522, 0.022128563, -0.022234328, -0.043058448, 0.033045948, 0.014078608, -0.08071108, -0.013632041, 0.000323357, -0.04500924, -0.038451757, 0.008590536, 0.06125017, 0.0048652287, 0.0059875213, 0.04822922, -0.05283591, -0.005629093, 0.047712144, -0.015124515, 0.012139567, 0.028415754, 0.0019654818, -0.010852749, -0.026041899, -0.00069078314, 0.0053617405, -0.022046302, -0.013890579, -0.04228283, 0.041977286, -0.002204924, -0.017474866, -0.020013247, 0.0023430071, 0.0018758746, 0.017110562, -0.013796566, -0.0047829663, 0.008496522, 0.017815668, 0.015477067, 0.013573282, 0.021552727, 0.07398908, 0.009089986, 0.007186201, 0.060074996, -0.004979808], [0.029307727, 0.02368046, -0.015147684, 0.024805913, 0.048601214, 0.014872063, -0.039069314, 0.0020599817, -0.021383615, 0.0017384236, -0.016778443, 0.040447418, 0.018684823, -0.029583348, -0.0039304737, 0.0467178, -0.016663602, -0.002025529, -0.038058702, -0.04320363, 0.0059717936, -0.06628691, -0.028848357, 0.07469336, -0.0113291815, 0.036841374, 0.01271303, 0.030157559, -0.01135215, 0.011013365, 0.054251447, 0.010737744, 0.06412788, -0.03939087, 0.04246864, 0.004320937, -0.031834252, 0.04070007, -0.04203224, -0.008377737, -0.03380954, 0.001703971, 0.020441908, -0.032523308, -0.0036175288, 0.014711284, -0.037851986, -0.012001009, -0.029032106, -0.0354403, 0.009279248, -0.0093424115, 0.008446643, -0.014504568, -0.025977302, 0.03994211, 0.04306582, -0.1249483, 0.0137925465, 0.0011283244, -0.03911525, 0.024461385, 0.010226697, -0.010800907, -0.020637142, -0.017387107, 0.014826126, 0.0142634, -0.0052368036, 0.008779685, -0.015262526, -0.0074302894, 0.015538148, -0.002645677, 0.012988651, -0.04690155, 0.10197986, 0.0074417735, -0.034039225, -0.03236253, 0.010272633, -0.054159574, -0.0054463907, -0.00903808, 0.053103026, -0.02997381, 0.014814642, -0.088795975, -0.033097517, -0.025839493, 0.0040137344, -0.011909135, 0.009560612, 0.022336805, -0.031696443, -0.012104366, 0.016663602, 0.014711284, -0.013183883, -0.025471997, 0.010875555, -0.0073499, -0.063990064, -0.050346814, -0.014091136, 0.023508195, 0.012483345, -0.019282004, 0.026138082, 0.11603654, 0.030708801, 0.008871559, -0.0022652622, 0.0081136, -0.035302486, 0.010215213, 0.002596869, -0.024070922, -0.028641641, 0.008877301, -0.07983829, -0.020258162, 0.050438687, 0.031397853, -0.032408465, 0.005782304, 0.042284895, 0.056318607, -0.007579584, 0.0024002017, 0.024116859, 0.023485227, 0.05278147, 0.03672653, 0.050943993, -0.017903896, 0.024002017, -0.05374614, 0.0095146755, -0.029169915, -0.046189528, -0.018730761, -0.0047946614, 0.046557024, -0.021957826, -0.0028078915, 0.018857086, -0.028343052, -0.069732174, -0.05774265, -0.018282875, 0.000106498184, -0.027171662, 0.03971243, 0.051403362, -0.0371859, 0.021682205, 0.023473743, -0.013838483, 0.009956817, 0.004745853, -0.08264044, 0.0021762594, 0.027056819, -0.008027469, -0.03305158, 0.057512965, 0.015664475, -0.041274283, 0.029652253, 0.0069479523, -0.002411686, -0.006109604, 0.009629517, -0.014114105, -0.004163029, 0.029836, 0.047682475, -0.0626579, -0.04391565, -0.024668101, 0.071385905, 0.049611825, -0.053883955, -0.015779316, 0.023404837, 0.009589323, 0.028917262, 0.06858376, -0.018145066, -0.0019307842, -0.036910277, 0.005291354, -0.060177304, 0.015963065, -0.06008543, -0.009933849, -0.03206394, 0.01344802, 0.015825253, 0.005210964, -0.033396106, -0.0056071696, 0.038862597, -0.032431435, -0.03261518, 0.05765078, -0.006574715, -0.030777706, -0.015251042, 0.034751244, 0.008090632, 0.012977167, -0.019109739, -0.045087043, 0.019350909, -0.05039275, 0.02997381, -0.030249432, -0.06821626, 0.07721989, -0.031512696, 0.01938536, 0.0011620594, 0.01116266, 0.06297945, -0.0020484976, -0.023048827, -0.01587119, -0.011369376, 0.02528825, -0.04703936, -0.017823508, 0.011518671, -0.058523577, 0.029996779, -0.031489726, -0.002608353, 0.01646837, -0.012529283, 0.039459776, 0.006838852, -0.023772333, -0.012161788, 0.008911754, 0.0817217, -0.0013838484, -0.028733514, 0.000197385, -0.019350909, 0.005897146, -0.04304285, 0.05907482, 0.010519545, -0.022796175, 0.05613486, -0.0055382643, -0.041366156, -0.0010845409, 0.04804997, -0.021142447, 0.06293352, -0.009106985, 0.020683078, -0.010054434, -0.012919746, 0.015262526, -0.05659423, -0.059901685, -0.012460377, 0.033304233, -0.051219616, 0.020258162, 0.013482473, 0.027263535, -0.02393311, 0.066884086, 0.030456148, -0.03380954, 0.04382378, 0.017214844, 0.003985024, 0.00036031735, 0.013459505, 0.053562395, 0.011306213, 0.022956952, -0.031788316, -0.040814914, 0.017593823, -0.005210964, -0.03383251, -0.0007364255, 0.03160457, 0.02330148, -0.0061612832, -0.031489726, 0.003835729, -0.059672, 0.018248424, 0.036611687, -0.013470989, -0.019006383, -0.055353932, 0.00855, 0.04660296, 0.014780189, 0.08760162, -0.00030684395, -0.0027030979, 0.059580125, 0.012288114, -0.018443655, -0.046694834, 0.016617665, -0.02368046, 0.00035744632, 0.0324544, 0.06458724, -0.026620418, -0.045500476, -0.035302486, -0.07189121, -0.008578711, 0.039896175, -0.028044462, -0.004010863, -0.016135328, -0.075520225, 0.00952616, -0.0911847, 0.022922501, -0.0074188053, 0.009440028, -0.04749873, -0.06904312, -0.0025337057, -0.038908534, 0.024668101, -0.0057708197, -0.028457893, 0.024484355, -0.03573889, -0.0089060115, -0.004768822, 0.0053315484, -0.0029686706, -0.01905232, 0.020832373, -0.01805319, 0.0014104056, 0.06996186, 0.03465937, 0.033924382, -0.012357019, -0.041526936, -0.025632776, -0.050668374, -8.653538e-05, -0.012850841, 0.04102163, -0.08038953, 0.025793554, 0.030456148, 0.01587119, -0.08176763, -0.019948088, 0.0071604103, -0.038127605, 0.03293674, -0.009503191, 0.017214844, 0.0051420587, -0.08640726, -0.037874952, -0.0069594365, 0.020843856, -0.030800674, -0.026620418, 0.0065230364, -0.0010220954, -0.025816523, -0.022773206, -0.007401579, -0.0015661604, 0.031260043, -0.044489864, -0.008578711, 0.041940365, -0.023198122, -0.016870318, 0.030479116, 0.015618538, -0.051724922, -0.0045850743, 0.056823913, -0.02175111, 0.0010701856, 0.009750102, -0.00152453, 0.013976294, -0.03394735, -0.0015403208, -0.015274011, 0.04878496, -0.009015111, 0.035302486, -0.006356515, -0.008033211, 0.067573145, 0.00900937, 0.0523221, -0.04717717, 0.024070922, 0.006092378, 0.0054463907, -0.004392714, 0.02687307, -0.023772333, 0.042836137, 0.012138819, -0.037691206, 0.017743118, 0.026482608, 0.0010321442, 0.09026596, -0.07083466, 0.028986167, 0.018041708, -0.04173365, -0.0445358, 0.007631263, 0.034866087, 0.031260043, -0.044306114, -0.088841915, -0.019580593, -0.0899444, 0.008584454, 0.018145066, 0.034429688, -0.007906885, 0.03190316, 0.026804166, -0.03482015, 0.005116219, -0.049152456, -0.02107354, 0.024047954, -0.020556752, -0.04850934, -0.024369512, -0.06853782, -0.0006951541, 0.08140014, 0.024576228, 0.0162272, -0.025012627, 0.026367767, -0.08199732, -0.012379988, 0.029192884, 0.023347417, -0.06274977, 0.028251179, 0.029146947, 0.0053229355, 0.044765484, 0.007395837, -0.014860579, -0.014895031, -0.003155289, -0.08489134, -0.007941337, 0.009043822, -0.029055074, -0.060498863, 0.0053860988, 0.0155266635, -0.018248424, 0.006988147, 0.014630894, -0.0071604103, 0.039069314, 0.02425467, -0.009750102, 0.0075681, 0.0024920756, 0.039207123, -0.034774214, -0.03351095, 0.061279792, -0.017077032, -0.002608353, 0.0021820015, -0.04437502, 0.005041572, -0.06821626, -0.017226327, 0.017524919, 0.033740636, 0.011128208, 0.03364876, 0.052230228, 0.022210479, -0.0010744922, -0.03438375, -0.048876833, -0.014435663, 0.018087644, 0.023496712, -0.0293996, -0.06385226, -0.0013558556, -0.006660847, 0.032086905, -0.010531029, 0.029790062, 0.032821897, -0.01050806, -0.02397905, -0.014653863, -0.05466488, -0.009129954, -0.032569245, 0.02496669, 0.029560378, 0.00060794584, -0.02687307, -0.043708935, -0.0023025859, -0.016617665, -0.04731498, -0.016296105, -0.0207405, -0.03236253, 0.022279384, 0.026482608, -0.038724784, 0.035807792, -0.0034940734, 0.068491876, 0.0059660515, -0.009290732, -0.035049837, 0.035164677, 0.014814642, 0.00389315, -0.020487847, 0.013436535, -0.058707327, 0.03629013, -0.016962191, 0.040814914, -0.0048606955, -0.007108731, -0.048739024, -0.05337865, 0.013895905, 0.0023427806, 0.025035597, 0.0109846555, 0.05719141, 0.06775689, -0.0010321442, -0.04037851, 0.012357019, 0.012092882, 0.0010177889, 0.028388988, 0.02588543, 0.024759976, -0.0075393897, -0.03429188, 0.0031409338, 0.042560514, -0.0138844205, -0.029123979, -0.0026040466, 0.002365749, -0.015859706, 0.0062933518, 0.012138819, -0.0684, 0.000944577, 0.021682205, -0.01418301, -0.015779316, 0.004734369, 0.023163669, -0.0011613416, 0.03307455, 0.0037151447, -0.012667093, 0.012506314, -0.0053832275, 0.011989525, -0.00015862577, 0.000108920634, 0.017237812, 0.028848357, -0.00587992, -0.0009732875, 0.02981303, -0.043134727, -0.005920115, 0.018914508, -0.05732922, -0.016939223, 0.023795301, -0.018776698, 0.0074819685, -0.002504995, -0.046648897, -0.006459873, -0.045362663, -0.028113367, 0.038518067, 0.021406583, 0.0114210555, 0.03482015, 0.014860579, 0.04143506, -0.065322235, 0.0040711556, 0.050163068, -0.010197986, 0.030800674, -0.0043467768, -0.03231659, 0.0047142715, 0.0059545673, -0.022635395, -0.020912763, -0.0067297523, 0.009061049, 0.007504937, 0.035669982, -0.036060445, 0.004831985, 0.002687307, 0.023163669, 0.0031208363, 0.026964946, -0.024759976, -0.047269043, 0.031719413, -0.0059603094, 0.05833983, -0.03571592, -0.011610545, 0.015411821, 0.010106113, 0.028136335, 0.011690934, -0.03057099, 0.01747898, 0.004257774, -0.008067664, 0.03190316, 0.011076529, -0.012690062, -0.020947214, 0.00094673026, 0.015365885, -0.016675085, -0.053470522, -0.019971056, -0.016721021, 0.018041708, 0.060498863, -0.05245991, -0.05200054, -0.015078779, -0.07441774, -0.026138082, 3.4833967e-05, 0.08167576, -0.025862461, -0.013160914, -0.011742613, -0.02675823, 0.029284757, -0.0062129623, 0.00034811537, 0.00017387824, -0.007309705, 0.0077403635, -0.055537682, -0.013493957, 0.0037696948, -0.05218429, -0.007556616, 0.020866824, -0.001363751, 0.013252788, 0.041090533, -0.053240836, 0.002398766, 0.038311355, -0.0144012105, -0.020131836, -0.014274884, 0.004550622, 0.016502822, 0.014527537, 0.0044300375, 0.00838348, -0.020648625, -0.050025254, 0.021257289, -0.012311082, 0.00064311625, 0.049611825, 0.026964946, 0.024943722, -0.009508933, 0.0062301885, -0.07336119, 0.021062057, -0.005779433, -0.0146653475, -0.007148926, -0.018030223, 0.0069709206, -0.042973947, -0.0018834119, -0.00988217, 0.050668374, -0.0033763603, 0.016376495, -0.032109875, 0.020258162, -0.0026600321, -0.0064656152, -0.02820524, 0.015882675, -0.019695435, 0.020453393, 0.017812023, -0.025747618, -0.02469107, -0.027401345, -0.045247823, 0.00683311, -0.0056071696, 0.021211352, -0.015664475, -0.026413703, 0.0012259403, 0.0019293487, 0.017134454, 0.058247957, 0.013804031, -0.008636133, 0.023864206, 0.0009826184, -0.020820888, 0.017157422, -0.01053677, -0.0059086303, 0.0018116354, 0.013861452, -0.027240567, -0.0035543656, 0.01047935, 0.027768841, -0.048555277, 0.013585831, 0.026850102, -0.013034588, 0.051495235, -0.0043726163, -0.016158296, 0.015894158, -0.020648625, 0.015538148, -0.0028437797, -0.051633045, -0.020384489, -0.01581377, 0.002183437, -0.03337314, -0.023267027, 0.023772333, -0.005368872, -0.00023219654, -0.020131836, -0.011943587, 0.0033189391, 0.0032529049, 0.008940464, -0.012977167, -0.010588449, 0.030961454, -0.017352654, 0.04791216, 0.014539021, 0.026115114, 0.012001009, -0.008130827, -0.043157693, -0.004309453, 0.026390735, 0.008079148, -0.010324312, 0.014539021, -0.034866087, -0.04777435, 0.0088658165, 0.042284895, 0.004102737, 0.024737006, 0.012667093, 0.0042261924, 0.058431704, 0.024576228, 0.009704165, -0.01837475, 0.022933984, -0.0035945603, -0.0071661524, 0.019660981, -0.03323533, 0.020350035, 0.06647066, 0.008280122, -0.028963199, -0.025334187, 0.0069594365, -0.060452927, -0.05085212, -0.015147684, 0.018719276, 0.031099264, 0.0041429317, -0.039758366, 0.004398456, 0.016916255, -0.00805618, -0.016353527, -0.008917496, -0.00841219, 0.021176899, -0.03939087, 0.054021765, 0.013402083, -0.0057478514, -0.0018532658, -0.016261654, 0.040125858, 0.033028614, -0.0024892043, 0.011581834, -0.008567227, -0.035095774, -0.029790062, 0.050898056, -0.012173272, 0.007935595, 0.028457893, 0.010858329, 0.028297115, -0.020855341, 0.0142634, 0.0111569185, -0.03305158, -0.07414211, -0.033878446, -0.070742786, -0.020384489, 0.0020886923, 0.017031096, 0.049519952, 0.010278376, -0.0389315, 0.008532775, -0.024599196, -0.003051931, -0.014240431, 0.020074414, 0.053103026, -0.016583212, -0.01793835, 0.00639671, -0.041503966, 0.024415448, -0.03819651, -0.02866461, 0.040056955, -0.001391026, -0.009560612, -0.017570855, 0.028894294, 0.0011584705, 0.033694696, -0.021601815, -0.045316726, -0.03808167, -0.0089060115, 0.0108525865, -0.0008792605, 0.0038213737, -0.017398592, 0.020533783, -0.017754601, 0.0022767463, 0.012104366, -0.016009001, -0.002784923, -0.035486236, 0.018937476, 0.025311219, -0.022922501, 0.02703385, -0.04336441, -0.014217462, -0.014171526, -0.012230692, -0.024897786, -0.0075393897, 0.0015905643, -0.0004561388, 0.052643657, -0.011616287, 0.0095146755, 0.0027231954, 0.032982677, 0.047820285, -0.04582203, 0.004797532, 0.020246677, 0.021395098, 0.0044386503, -0.014539021, -0.015423305, -0.009589323, 0.0112487925, -0.011403829, 0.009198859, -0.0012668528, 0.07763332, -0.002411686, -0.038678847, -0.02703385, -0.027424315, -0.003680692, -0.0046970453, 0.011059303, -0.060361054, -0.01565299, 0.019592077, -0.020901278, -0.0061727674, -0.02779181, -0.006149799, 0.020384489, 0.052735534, -0.02689604, 0.03955165, 0.04380081, -0.04772841, 0.010594192, -0.01271303, 0.0052827406, 0.013700672, 0.027240567, -0.0233589, 0.0058655646, 0.03215581, -0.03619826, -0.010427671, -0.0034768472, 0.00033358065, 0.021280257, 0.011266018, 0.021509942, -0.00639671, -0.0037553394, 0.03160457, 0.016181264, -0.028963199, 0.008779685, 0.004458748, -0.0018719276, -0.04818778, 0.0036404973, 0.05599705, 0.027699936, -0.0071718944, 0.020510815, -0.06890531, 0.005311451, 0.054756753, -0.0077518476, -0.0031926127, 0.028388988, 0.0044788453, 0.009084017, -0.020843856, 0.030662864, -0.02409389, 0.0027806165, 0.02368046, -0.02894023, 0.039804302, 0.020051446, -0.02997381, -0.023278512, -0.022141574, 0.0142634, -0.003043318, 0.007935595, -0.0009955382, 0.007154668, 0.0328908, 0.01091575, 0.008745233, 0.0028121981, 0.10243923, 0.031030359, -0.0062876097, -0.0034883313, -0.012655609], [0.0029806716, -0.0054345396, -0.023779863, 0.0015640338, 0.02118133, 0.026116362, -0.065203555, 0.021705404, -0.012010032, 0.015831407, -0.03926189, 0.012850734, 0.019423498, -0.030003244, 0.0072715287, 0.03447971, -0.009012983, -0.0064417445, -0.012807062, -0.067474544, -0.006452663, -0.055595532, -0.08503103, 0.05742979, -0.0061305757, 0.031881176, -0.010143018, 0.012959917, -0.056381643, 0.0072660698, 0.04384754, 0.008619928, 0.051621303, -0.020635419, -0.010890916, -0.0063434807, -0.0067474544, 0.05603226, -0.058652632, -0.018757487, -0.02899877, -0.0062943487, -0.0026039935, -0.029915899, -0.038650468, 0.025548615, -0.02539576, 0.01489244, 0.009204052, -0.03913087, -0.0053635715, -0.028452858, 0.015907833, -0.03022161, 0.005819407, 0.010716224, 0.044895686, -0.064417444, 0.015427433, -0.014204593, -0.03364993, 0.058128558, 0.016868636, -0.02716451, -0.0060213935, -0.004539246, -0.00049302547, 0.040921457, 0.007331579, 0.000994922, -0.034567058, 0.016955983, -0.012359415, -0.016693946, -0.0068948506, -0.06585865, 0.08869955, 0.038825158, -0.029915899, -0.015438351, -0.045376085, -0.028976932, 0.0037012736, -0.0063271034, 0.059002016, -0.01178075, 0.041052476, -0.07970294, 0.010705306, -0.03240525, 0.0012064624, 0.0032563566, 0.027513893, 0.010088427, -0.044589974, 0.010497861, 0.0070040324, 0.022928244, -0.038301084, -0.03155363, -0.015340087, -0.015820488, -0.0582159, -0.032710962, 0.021814587, 0.017228937, 0.041292675, 0.001654109, 0.007746471, 0.06729986, 0.02417292, -0.018102394, -0.0051261, -0.005792111, -0.06585865, 0.05262578, 0.02947917, -0.0862102, -0.050835192, 0.016955983, -0.07773767, -0.022054788, 0.06188442, 0.042515516, -0.043367136, -0.006168789, 0.054198, 0.020668173, -0.021257758, 0.010519696, 0.004146191, 0.028452858, 0.05127192, 0.053630255, 0.080489054, -0.026967982, 0.024216592, -0.023910882, -0.010716224, 0.010110264, -0.037296608, -0.017862193, -0.026422072, 0.025373923, -0.044240594, -0.012676043, -0.020744601, -0.021312349, -0.078567445, -0.052538432, -0.008581714, -0.015602124, 0.0235615, 0.031946685, 0.04576914, -0.03533133, 0.021017557, 0.03755865, 0.0051179114, 0.015722224, 0.036903553, -0.11346205, 0.002735012, 0.0032863817, 0.041882258, -0.029522844, 0.062233806, -0.011453204, -0.09835125, 0.03631397, -0.005732061, -0.007025869, -0.009531599, -0.004975975, -0.035789896, -0.008701814, 0.04314877, 0.03589908, -0.020307872, -0.050529484, -0.021683568, 0.029348152, 0.03943658, -0.04402223, 0.009444253, 0.021628976, 0.020286037, 0.0063434807, 0.0709247, -0.026487581, -0.0266186, -0.028605714, -0.045332413, -0.052756798, -0.014215511, -0.0511409, -0.053193524, -0.06262686, 0.019947572, 0.027317366, 0.0022764471, -0.064286426, -0.019128706, 0.047559727, -0.032317907, 0.0041980525, 0.028736733, 0.012468597, 0.0041107065, -0.013047262, 0.012097378, 0.03443604, 0.00775193, -0.022360496, -0.012053706, 0.0136040915, -0.062495843, 0.036947228, -0.01959819, -0.02069001, 0.057473466, -0.03491644, 0.030243445, 0.0012098743, -0.01257778, 0.052232724, 0.010334087, -0.008783701, -0.053018834, 0.009373285, 0.06061791, -0.042995915, -0.019128706, -0.0027418358, -0.040048, 0.0076209116, -0.02587616, 0.014499385, 0.051795993, -0.023364972, 0.028562041, 0.029653862, -0.034588892, 0.0015763168, -0.0045556235, 0.07882948, 0.029763045, -0.02264437, -0.039458416, 0.0012842546, 0.01489244, -0.04015718, 0.030854866, 0.023212118, 0.018779324, 0.0402882, -0.016268134, -0.027492056, 0.023692518, 0.030025082, 0.0032181428, 0.04895726, -0.022600697, 0.014990704, 0.033846457, -0.023364972, 0.019063197, -0.02112674, -0.05096621, -0.026050853, 0.055289824, -0.020482564, 0.018200658, 0.040615745, 0.016508335, -0.03052732, 0.085118376, 0.012948998, -0.0669068, 0.04716667, 0.022753552, -0.0004920019, -0.0037640533, 0.012119215, 0.036597844, 0.009760881, -0.017774848, -0.0035620665, -0.04395672, 0.00909487, -0.004563812, -0.03821374, 0.027426546, 0.024587812, 0.03681621, 0.016027935, -0.0008686802, 0.041030638, -0.04956868, 0.015121723, -0.010819947, 0.0058303247, 0.00598318, -0.032448925, -0.007495352, 0.03917454, 0.031182412, 0.03790803, -0.011333103, -0.04786544, 0.056731027, 0.0059176707, -0.049787045, -0.06987655, 0.01983839, -0.016639354, -0.014717749, 0.029260807, 0.06537825, -0.031793833, -0.012555943, -0.045856487, -0.075160965, -0.012785225, 0.02441312, -0.01117479, 0.013167363, -0.023779863, -0.06262686, 0.025373923, -0.046729945, -0.02417292, -0.04555078, -0.033431564, -0.055289824, -0.073108345, -0.030505482, -0.02947917, 0.022054788, -0.06603334, -0.0836335, 0.0051288297, 0.0053799488, -0.03943658, -0.005939507, -0.012010032, -0.009820931, -0.007118674, 0.005835784, -0.027317366, 0.0012740188, 0.07149245, 0.028911423, 0.067430876, 0.034741748, -0.029763045, -0.05245109, -0.045376085, 9.724032e-05, 0.0066983225, 0.06952717, -0.077868685, -0.00016650272, 0.013134608, 0.0031362562, -0.024129247, -0.049350314, -0.012807062, 0.0010379124, 0.03773334, -0.025723306, 0.020646337, 0.01874657, -0.07620911, -0.012992672, 0.013986229, 0.054066982, 0.0061742486, -0.008123149, 0.002281906, -0.01477234, -0.05310618, -0.009635322, -0.0071022967, 0.020700928, 0.021388777, -0.020318791, 0.011387695, 0.03998249, -0.031116903, -0.019685535, 0.043672845, 0.008538041, -0.021563467, 0.019751044, 0.065946, -0.02203295, 0.011054689, -0.0013538582, -0.007380711, -0.0056720106, 0.049481332, 0.008330596, -0.0050878865, 0.009908277, -0.01812423, 5.4249864e-05, 4.237204e-05, 0.015307332, 0.07612177, -0.0019816554, 0.013200117, -0.015121723, 0.047035653, 0.015984261, 0.023277627, 0.0068839323, 0.055202477, -0.03600826, 0.0069276053, 0.0074080066, 0.0006069843, 0.016311808, 0.018975852, -0.0053744894, 0.028059803, -0.03437053, 0.04260286, -0.012905326, -0.012665126, -0.008505287, 0.0052462006, -0.0036248462, -0.015482023, -0.04620587, -0.09040279, -0.03284198, -0.06760556, -0.010841784, 0.010137559, 0.0035320413, -0.015449269, 0.042384498, 0.05183967, -0.03814823, -0.045245066, -0.044589974, 0.00042546904, 0.016879555, -0.03192485, -0.036095608, -0.0012542296, -0.07917887, -0.010366841, 0.06629538, 0.018397186, 0.013440318, -0.016835881, 0.05328087, -0.09049013, -0.0042444547, 0.003351891, 0.062233806, -0.044109575, 0.005030566, 0.010836325, -0.02240417, 0.07629646, -0.0060814437, 0.0025248365, 0.019303398, 0.0013115501, -0.03100772, 0.012730635, -0.010716224, -0.0431051, -0.024849849, 0.016213544, 0.03052732, 0.0017660207, -0.024151083, 0.015427433, 0.01812423, 0.038846996, 0.015711306, 0.0168468, 0.011747995, -0.005819407, 0.0537176, 0.0014043549, -0.0043126936, 0.013189199, 0.024107412, -0.027492056, -0.013080018, -0.043716516, -0.0054672942, -0.054110654, 0.0023051074, 0.0076482072, 0.039021686, 0.0063161855, 0.02325579, 0.05633797, 0.026181871, -0.012370333, -0.022011114, -0.02221856, -0.007806521, -0.009602567, -0.026662271, -0.030418137, -0.046598926, 0.022087542, -0.007992131, 0.015252741, 0.008385186, 0.027230019, -0.00787749, 0.0168468, -0.024740666, -0.0017141592, -0.036510497, -0.0003067335, -0.011142035, 0.01844086, 0.012130133, 0.00027432005, 0.0071568876, -0.03749314, -0.0084234, -0.033540744, -0.0669068, -0.0150452955, 0.0039824178, -0.0402882, 0.03515664, 0.027033491, -0.044655483, 0.043017752, -0.04087778, 0.056687355, -0.01922697, 0.014248266, -0.004804013, 0.05402331, 0.0053608418, 0.012686961, -0.006681945, 0.020417055, -0.046293218, 0.022426005, -0.022535188, 0.02777593, -0.014783259, -0.031095065, -0.050704174, -0.018648304, 0.02039522, -0.009695372, 0.015536615, 0.019892981, 0.086952634, 0.054853093, -0.023124771, -0.03869414, 0.02557045, 0.019401662, -0.008505287, 0.029042441, 0.032863814, 0.014237348, -0.0054236213, -0.026356563, -0.04094329, 0.027142674, -0.017185265, -0.022447843, 0.01837535, 0.0053881374, -0.013200117, -0.00039612636, 0.013756947, -0.06328195, 0.015099886, 0.010388678, -0.0012412642, -0.022000195, -0.017556483, 0.026334725, -0.00390872, 0.033344217, 0.0019434416, -0.044764668, 0.013931638, 0.019751044, 0.016955983, 0.021770913, -0.02082103, 0.03375911, 0.0056228787, 0.010181232, 0.022600697, 0.013374809, -0.019936655, -0.0377115, 0.0050878865, -0.069483496, 0.013473073, 0.016835881, 0.009684454, 0.00060289, 0.04651158, -0.030265281, 0.027230019, -0.012566862, 0.0058630793, 0.0407686, 0.027317366, 0.018178822, 0.046293218, 0.028867751, 0.09852594, -0.030985884, 0.0169669, 0.059133034, 0.029501008, 0.029391825, -0.013232872, -0.02587616, -0.0089420155, -0.0050851568, -0.023670683, -0.060399543, -0.014008065, 0.021530712, 0.03161914, 0.06301992, -0.011900851, 0.0057538976, -0.0105087785, 0.009482467, 0.0121628875, 0.047210347, -0.03491644, -0.035418678, 0.0567747, 0.019805636, 0.05092254, -0.033497073, -0.042886734, 0.0070040324, -0.006720159, 0.05232007, -0.023605173, -0.012108296, -0.02587616, 0.02155255, -0.028955096, 0.019936655, -0.009771799, -0.02386721, -0.009859145, 0.0024757045, -0.011616977, -0.0021208625, -0.0075171883, -0.020646337, 0.01727261, 0.0336936, 0.08498736, -0.024107412, -0.0664264, -0.034108493, -0.0749426, -0.026705945, -0.012370333, 0.058565285, -0.03838843, 0.009547976, -0.0139425555, -0.040266365, 0.0100829685, 0.000682047, -0.034195837, -0.0057375203, -0.013582255, -0.00763183, -0.042864896, 0.0073097423, 0.02288457, -0.04729769, -0.0025917103, 0.040637583, 0.008548959, -0.017545566, 0.008205036, -0.038541287, 0.009880981, 0.0303963, -0.014018984, -0.0034392367, -0.005330817, 0.019641861, 0.017753012, 0.041707568, -0.015067131, 0.001587235, -0.04338897, -0.038737815, 0.0036794373, 0.007184183, 0.026029015, 0.05336822, 0.0056174197, 0.024282102, -0.026596762, 0.022087542, -0.066120684, 0.021268675, -0.0034501548, -0.006610977, -0.00020522825, -0.044327937, -0.007375252, -0.04620587, -0.005628338, -0.010596124, 0.0070913783, -0.0039414745, 0.019325234, -0.019194216, 0.015722224, -0.003229061, -0.025133723, -0.04321428, -0.026160035, 0.03022161, 0.06970186, 0.013047262, 0.010514238, -0.01062342, -0.04555078, -0.049131952, 0.012381252, 0.01764383, 0.054285347, -0.0070531643, -0.012282988, -0.010121182, -0.022426005, -0.007222397, 0.038170066, -0.0031662814, -0.008046722, 0.051490285, -0.004798554, -0.010765356, 0.010099346, -0.038475778, -0.0024511383, 0.03437053, -0.014543057, -0.025068212, 0.025592288, 0.0136040915, -0.02197836, -0.040419217, 0.014925195, 0.017283529, -0.0049268426, 0.047472384, -0.013342055, -0.006075985, 0.0018315299, -0.02936999, 0.040397383, -0.017108837, -0.048127476, -0.021072147, -0.0017933162, -0.019456252, -0.039327398, -0.025766978, 0.028343678, -0.000799759, -0.010235823, -0.0083524315, -0.0117370775, -0.020548074, 0.010148478, 0.0057429792, 0.010694388, -0.0111474935, 0.045681797, -0.058390595, 0.02716451, -0.014401121, 0.0028496531, 0.021683568, -0.010203068, -0.03993882, -0.0056665516, 0.04865155, -0.010492401, -0.053804945, -0.0124140065, -0.008385186, -0.03926189, 0.034981947, 0.01917238, 0.028343678, 0.00927502, 0.00024651273, -0.015492942, 0.06546559, 0.011649732, 0.016584763, 0.0075117294, 0.009526139, 0.029042441, -0.014215511, -0.0005919718, -0.045376085, -0.014128165, 0.040855948, 0.003826833, -0.024063738, 0.00038316098, -0.013647764, -0.031793833, -0.042799387, -0.03838843, 0.04456814, 0.045332413, -0.0050824275, -0.04546343, 0.010579747, 0.019620026, -0.019041361, -0.0023897234, -0.007757389, -0.014990704, 0.007893867, -0.028758569, 0.049787045, 0.012468597, 0.013232872, 0.016006097, 0.005306251, 0.0775193, -0.022185806, 0.04083411, 0.005420892, 0.0014507574, -0.03834476, -0.005257119, 0.026160035, -0.027492056, 0.032579944, 0.020198692, 0.037886195, 0.0010508779, -0.024107412, 0.018331677, -0.010579747, -0.013527663, -0.063500315, -0.006987655, -0.05175232, -0.025788816, 0.0034774502, 0.022076624, 0.04480834, 0.032929324, -0.03596459, 0.010224905, -0.017796684, 0.01531825, -0.013473073, 0.0036057392, 0.024587812, -0.0230811, 0.015307332, -0.00579757, -0.042821225, 0.03710008, -0.033671763, -0.021945605, 0.0049896226, 0.008297841, -0.013167363, 0.003979688, 0.0010188055, 0.036641516, 0.01458673, -0.028845914, -0.026946146, -0.014848768, 0.023779863, -0.012676043, 0.006616436, -0.009777258, -0.027099, 0.02032971, 0.0035211232, 0.018113313, 0.008401563, -0.010847243, 0.028125312, -0.01703241, 0.01208646, 0.010825407, -0.030418137, 0.04707933, -0.009018443, 0.008898342, -0.013691437, 0.02032971, 0.006037771, 0.01691231, 0.020624502, -0.003925097, 0.061753403, -0.016584763, 0.022840898, 0.03209954, 0.0111474935, 0.026356563, -0.00071446045, 0.002515283, 0.0077355527, 0.009935573, 0.018626468, 0.007981213, -0.0035183935, 0.019150542, 0.03284198, -0.033846457, 0.005330817, 0.03386829, 0.06769291, -0.011475041, -0.023648845, 0.015514778, -0.026705945, 0.001458946, 0.028518368, 0.0010890915, -0.01208646, -0.025810651, 0.014488466, -0.00035415948, -0.0006144906, -0.022578862, 0.021530712, -0.0010235823, 0.008740028, -0.014717749, 0.05262578, 0.020962967, -0.0306365, 0.010039295, 0.0051670433, 0.0062943487, -0.010809029, 0.023779863, -0.023954555, -0.009302316, 0.012872571, -0.03535317, -0.038104557, 0.027754093, -0.004951409, 0.020984802, 0.015831407, 0.027011655, -0.022622533, 0.00051315594, 0.02081011, 0.03851945, -0.011879014, -0.006458122, -0.027230019, -0.02056991, -0.052232724, 0.016191708, 0.031182412, 0.0106834695, -0.008314218, 0.023386808, -0.054285347, -0.0086417645, 0.055813897, 0.0014343801, 0.0036630598, -0.005333546, -0.008963851, -0.0036166576, 0.0006557751, 0.027513893, -0.03192485, 0.006862096, 0.006922146, -0.03583357, 0.03535317, -0.020471646, -0.015831407, -0.015711306, -0.02502454, 0.013287463, -0.021585304, -0.024369448, 0.0028305463, 0.04218797, 0.044458956, -0.005682929, -0.021738159, -0.013713273, 0.04225348, 0.009231348, 0.0004455995, 0.00067181117, 0.009930113], [-0.021160426, -0.07596693, -0.019618522, -0.009909547, 0.015857782, -0.0033188523, -0.0206966, 0.014403631, 0.003826552, 0.0099534225, -0.0029396443, 0.032367427, -0.009289025, -0.0368051, -0.02039574, 0.026049385, -0.036905386, -0.027403252, 0.022790078, -0.046934023, -0.01691079, -0.06799416, -0.05505722, 0.0073773162, 0.029609552, 0.019806558, 0.0026904955, 0.013388231, -0.03394694, 0.030537201, 0.013751769, -0.008417788, 0.058617387, -0.041092344, 0.008969363, 0.0017973199, 0.002782947, 0.057514235, -0.036604527, -0.032166854, -0.005321446, -0.03803361, -0.008455395, -0.03432301, -0.02320376, -0.0091574, -0.016885718, -0.0013703193, 0.012360295, -0.07165462, 0.0039205705, -0.026525745, -0.019568378, -0.012874263, -0.041092344, 0.014428702, 0.034498513, -0.07962738, 0.009176203, -0.003763873, -0.044251364, 0.00888788, 0.00630864, -0.0014416167, -0.018665802, -0.010429783, 0.004616307, 0.025460204, 0.027754255, 0.06724201, 0.009094721, 0.019768951, 0.025121737, -0.022827687, 0.0019179769, -0.03582731, 0.09201275, 0.023604905, -0.049967688, -0.0083425725, -0.019781487, -0.015506781, -0.0042997785, -0.001107851, -0.0017409088, -0.009326633, 0.04309807, -0.12044393, -0.06042254, 0.0045975037, -0.0002863646, -0.026525745, 0.032944076, 0.010392176, -0.04059091, 0.0072268867, -0.0013162587, 0.0076844436, -0.028882476, 0.0036197114, -0.02225104, -0.0103169605, -0.050594475, -0.05540822, 0.04590609, 0.007088993, 0.019330198, 0.026149672, -0.0024491814, 0.11663305, 0.035025015, -0.0054530716, -0.012084508, 0.013475982, -0.022163289, 0.06904717, -0.030662559, -0.050694764, -0.021887502, 0.039863832, -0.13508575, -0.000832847, 0.038785756, 0.03632874, -0.020270383, 0.008254822, -0.055809367, 0.0051584803, 0.014541524, 0.010398444, -0.008041713, 0.03540109, 0.07536521, 0.015506781, 0.049842328, -0.0071704756, 0.07260734, -0.002157724, -0.013162587, 0.0021216837, -0.025522882, 0.0068006697, -0.020408276, 0.032944076, -0.040039334, 0.0023175555, -0.025146808, -0.0045787, -0.048513535, -0.0061989515, 0.011802453, -0.013037229, 0.01598314, 0.025146808, 0.056210514, -0.010373372, 0.03384665, 0.029208407, -0.03164035, 0.012654887, -0.00630864, -0.03304436, 0.03126428, 0.030938346, 0.010342033, -0.07962738, 0.05550851, -0.008668504, -0.06167612, 0.035952665, 0.026400387, -0.0027422055, 0.014215593, -0.013087372, -0.049491327, 0.027503539, 0.038484897, 0.034247797, -0.07035089, -0.0413932, -0.028907547, 0.058466956, 0.03587745, -0.06418328, -0.008593288, 0.021900037, 0.051045764, 0.019856703, 0.049466252, -0.05219906, -0.0196812, -0.004378127, -0.011909007, -0.052800775, -0.026977034, -0.04267185, -0.02368012, -0.06368185, -0.027729183, 0.008417788, 0.008480467, -0.05400421, -0.012335224, -0.019280056, -0.024494948, 0.029057978, 0.02770411, -0.00029654993, 0.0044031986, -0.0041618845, 0.040039334, 0.015105635, 0.004255903, -0.004450208, -0.023855621, 0.017813368, -0.03397201, 0.02547274, -0.00630864, -0.046507806, 0.048363104, -0.025723455, 0.028882476, -0.007295834, 0.028832333, 0.0371561, 0.035576593, 0.025309773, 0.014027556, -0.0009981628, -0.004249635, -0.056762088, -0.015005349, 0.0123540275, -0.03399708, 0.020019667, -0.034197655, 0.021198032, 0.060823686, 0.006512346, -0.0030117251, 0.00888788, -0.052148916, 0.010342033, 0.008273626, 0.045705516, 0.009270222, -0.055709083, -0.03575209, -0.013099908, -0.023993514, 0.010636624, 0.021599177, 0.04658302, 0.005368455, 0.04896482, -0.018540444, -0.046206947, 0.012222402, 0.026475603, -0.028230615, 0.0456303, -0.04264678, 0.078323655, -0.024745664, -0.03535095, 0.03931226, -0.020859566, -0.034498513, -0.021523964, 0.06623915, -0.06854574, 0.0027469064, -0.006111201, 0.037030745, 0.013425838, 0.0717549, 0.02517188, -0.031891067, 0.042847354, 0.02627503, 0.018678337, 0.03146485, -0.0025228292, 0.0413932, -0.011357432, -0.00065107795, -0.045254227, -0.020759279, 0.012936942, -0.016158642, -0.031690493, -0.0056912517, 0.023843085, 0.061926838, 0.013363159, 0.032317284, -0.019480629, -0.033796508, 0.012673691, -0.0033094503, -0.0049485057, -0.029484194, -0.019292591, 0.012510725, 0.052048627, 0.039136756, 0.10169038, -0.02925855, -0.045855943, 0.03853504, 0.0024538822, -0.026826605, -0.03620338, 0.021022532, -0.023955908, 0.0018568649, 0.022802614, 0.08775058, -0.035075158, -0.0021890635, -0.055608794, -0.090759166, 0.013375695, 0.00703885, 0.02541006, 0.021047603, -0.024469875, -0.04751067, 0.021373533, -0.033921868, 0.00739612, -0.014391094, -0.022614578, -0.03487459, -0.05977068, -0.0051553464, -0.038459826, 0.06197698, -0.019844167, -0.026550818, 0.034548655, -0.040039334, -0.056561515, 0.018954124, -0.04578073, -0.014729561, -0.0014839249, 0.032467715, 0.013588804, 0.0015826443, 0.044126004, 0.032693356, 0.020057274, 0.03853504, -0.015795104, 0.01864073, -0.033771437, 0.00430918, -0.0065186145, 0.027779326, -0.08589528, 0.04219549, 0.039287187, -0.013638947, -0.07421192, -0.01109418, 0.027277894, -0.021210568, 0.034247797, -0.04941611, 0.02019517, -0.06533657, -0.040139623, -0.034247797, -0.04354936, 0.05365321, -0.0024742528, -0.02341687, 0.033796508, -0.034122437, -0.028305829, -0.021423677, 0.012134652, 0.01714897, -0.0092827575, -0.036454096, 0.034022152, 0.051647484, -0.027954826, -0.010881072, 0.0033219862, -0.0115015935, -0.008869076, 0.035300802, 0.037807964, -0.036704812, 0.0042778407, -0.03146485, -0.02037067, 0.007659372, 0.0033595935, -0.004127411, 0.02179975, 0.04452715, 0.0074901385, 0.022163289, -0.017424757, 0.013927271, 0.0123791, 0.0115015935, 0.020069811, -0.031364564, 0.021310855, 0.028105257, 0.05234949, 0.021461284, 0.04813746, 0.0016022315, 0.02173707, 0.016622467, -0.013576268, 0.009746582, 0.020884637, -0.00999103, 0.03993905, -0.0349498, 0.002966283, 0.0393624, -0.032818716, -0.009489598, 0.009740314, -0.0041023395, -0.0183148, -0.02910812, -0.09537234, -0.0019070081, -0.0039989194, -0.026951963, 0.048087317, 0.020345598, 0.002953747, 0.017951261, 0.05320192, -0.043975577, -0.005500081, -0.04768617, 0.009640028, -0.013826984, -0.031891067, -0.05696266, -0.012999621, -0.08118182, -0.019568378, 0.07315891, -0.02863176, 0.016334143, -0.019229913, 0.028230615, -0.07215605, 0.0038046143, 0.047736313, 0.056611657, -0.041794345, -0.011589345, -0.033420436, -0.0074901385, 0.070200466, 0.009063381, 0.022777542, -0.016710218, 0.023040794, -0.05871767, 0.030938346, 0.01088734, -0.039688334, -0.021887502, -0.003274977, 0.032191925, -0.029434051, -0.012611012, -0.0002885192, 0.024081266, 0.038284324, 0.031565137, 0.011752309, 0.015093099, 0.009577349, 0.015707353, -0.024206623, -0.004136813, 0.04999276, 0.023404332, -0.010774517, -0.013613875, -0.042872425, -0.015318744, -0.029659696, 0.01902934, 0.028506402, 0.0060015125, 0.0129620135, 0.045655373, 0.046532877, 0.012516993, -0.012385367, -0.0083112335, -0.015042956, 0.0017973199, -0.0035037552, -0.011526665, -0.038158964, -0.052901063, -0.01589539, -0.047911815, 0.0049203, 0.010774517, 0.014604203, 0.02022024, 0.0029850865, -0.0047322633, -0.0249337, -0.025999242, 0.00035550736, -0.0279799, 0.007828605, 0.01246685, 0.024093801, -0.044251364, -0.019430485, -0.0371561, -0.010536337, -0.0059388336, 0.022990651, 0.007759658, -0.036905386, 0.017913654, 0.009909547, -0.02430691, 0.03978862, 0.029609552, 0.07962738, -0.01649711, -0.0057069217, -0.034573726, 0.04184449, 0.019906845, -0.00975285, -0.031840924, 0.047159668, -0.039086614, 0.0077408548, -0.0035225588, 0.013576268, 0.0035852378, -0.027378181, -0.023567298, -0.03886097, -0.0034786835, 0.00703885, 0.012003025, 0.016108498, 0.06272913, 0.029910412, -0.033771437, -0.0033564596, 0.044577293, 0.021348462, -0.0113198245, 0.011119252, 0.024394661, 0.02472059, -0.025284702, -0.03254293, -0.021448748, 0.073209055, -0.0028675636, -0.04861382, 0.00025404576, -0.040039334, -0.041744202, 0.004494083, 0.02179975, -0.013852055, 0.027553681, 0.02767904, 0.007258226, -0.031189062, -0.04029005, 0.0044063325, -0.015343815, 0.03946269, 0.0016938995, -0.0129620135, -0.010442318, -0.013375695, -0.004694656, 0.012122115, 0.028355973, 0.010454855, 0.023316583, 0.009596152, 0.014165451, 0.023742799, -0.022163289, -0.00054961635, 0.02108521, -0.0366296, 0.039613117, 0.029233478, -0.061224833, -0.023128545, 0.054154642, -0.050769977, 0.020408276, -0.035125304, 0.021874966, 0.0768695, -0.0076781753, 0.032843787, 0.011833793, 0.029358836, 0.08950559, -0.007640568, -0.0009394013, -0.000113018046, -0.0074838707, 0.01556946, -0.014453773, 8.61836e-05, -0.028330902, -0.0011274383, -0.033696223, -0.04673345, -0.045204084, 0.008148268, 0.012448046, 0.051848054, -0.03725639, 0.0037293995, 0.029659696, 0.051095907, 0.022238504, -0.036754955, -0.02376787, -0.030587343, 0.024043659, -0.025698384, 0.034849513, -0.015669746, 0.007032582, 0.05132155, -0.018114226, 0.039713405, -0.005139677, -0.023579834, 0.01470449, 0.03773275, -0.06588815, 0.00924515, -0.011909007, -0.032668285, -0.011219538, 0.010059977, -0.024256768, -0.02863176, -0.007653104, -0.049591612, 0.0009911114, 0.015970604, 0.07797266, -0.03652931, -0.048864536, -0.015393958, -0.023567298, -0.030386772, 0.0031292483, 0.088001296, -0.01022921, -0.004052196, -0.019016804, -0.045580156, 0.011952883, 0.0038547574, -0.03652931, -0.013037229, 0.0109249465, -0.0056473766, -0.03003577, -0.008035446, 0.0040490623, -0.055809367, -0.014767169, 0.06147555, 0.07265748, -0.018954124, -0.017487437, -0.051497053, 0.029358836, 0.04106727, 0.013049765, -0.044752795, -0.016020749, -0.0073835845, -0.0054656076, 0.0281554, -0.0044627436, -0.0075528175, -0.04106727, -0.014980277, 0.010661695, 0.007853677, 0.003271843, 0.0673423, 0.02642546, 0.0038484896, 0.010254282, 0.034974873, -0.04219549, 0.047410384, 0.03289393, 0.00092216453, -0.017976332, -0.04217042, 0.014892527, -0.019806558, 0.020320527, 0.0009409682, 0.036579456, 0.0037325334, 0.040465552, -0.034824442, -0.0040615983, -0.002156157, -0.009627492, -0.0006381504, -0.027478466, 0.01833987, 0.039863832, -0.011965418, -0.0003809707, -0.017199114, -0.0029788187, -0.06533657, -0.00691976, 0.011589345, 0.04154363, -0.004898363, 0.015105635, -0.0153312795, -0.004813746, -0.00903831, 0.020107418, -0.0071203327, 0.0281554, 0.024896093, 0.0052932403, -0.00024033473, 0.027403252, -0.017650401, -0.01807662, 0.041167557, -0.014579131, -0.018853838, 0.030161127, -0.0044188686, -0.0020731073, -0.048814394, 0.016146107, 0.034122437, 0.003331388, 0.047435455, -0.0039143027, -0.020521099, 0.016146107, -0.02502145, 0.015093099, -0.05285092, -0.030812988, -0.018377477, -0.013676554, -0.00071140646, -0.0031872264, 8.030745e-05, 0.025723455, 0.010962554, 0.0174749, -0.01383952, -5.7243542e-05, 0.006907224, 0.008336305, 0.043825146, 0.021248175, -0.0014322147, 0.053001348, -0.0012175393, 0.039562974, -0.006969903, -0.0045442265, 0.019242449, 0.035100233, -0.061776407, -0.019104555, 0.036880314, 0.009426919, -0.041944776, -0.024883557, -0.044727724, -0.016346678, 0.02337926, 0.0279799, 0.009075917, 0.0075653535, 0.0020433348, -0.005725725, 0.03803361, 0.03537602, -0.005988977, 0.0053496514, -0.012197331, -0.035802234, -0.03146485, 0.019129626, -0.008035446, 0.004628843, 0.047736313, -0.0072519584, -0.01246685, -0.041643918, -0.023391796, -0.021411141, -0.034097366, -0.006211487, 0.03489966, 0.023191225, -0.02179975, -0.015205922, 0.0585171, 0.022739936, 0.015218457, -0.017600259, -0.0139021985, -0.01011012, 0.0062428266, -0.018665802, 0.035501376, -0.012623548, 0.015494245, 0.022714864, 0.032317284, 0.026651105, 0.031715564, 0.031339493, 0.013563732, -0.011257146, -0.026651105, -0.016284, 0.029208407, -0.028732046, 0.02359237, 0.032793645, 0.035927594, -0.0025071593, -0.014240665, -0.01145145, -0.014516452, -0.0039769816, -0.0585171, -0.03399708, -0.06057297, -0.023567298, 0.0080981245, 0.032467715, 0.048338033, 0.042521425, -0.012611012, 0.032317284, -0.010385907, 0.01541903, -0.0011940347, 0.036880314, 0.025773598, -0.009878208, -0.0125357965, 0.0064810067, -0.042571567, 0.01714897, -0.0011493759, -0.020470956, 0.013526125, -0.008712378, -0.0050519262, 0.008655968, -0.00042386662, 0.016647538, 0.03525066, -0.033320148, -0.040064406, -0.028230615, 0.010699303, 0.004860755, -0.0035225588, 0.023792943, -0.022000324, 0.047886744, 0.032367427, -0.009809261, 0.007195547, -0.007979034, -0.019906845, -0.046984166, -0.006346247, 0.015055492, -0.05395407, 0.028381044, -0.03347058, -0.023228832, -0.019004269, -0.0067630624, -0.049591612, -0.014391094, 0.04944118, -0.010749445, 0.039638188, -0.00021976819, -0.0002787256, 0.028055113, 0.013037229, -0.013037229, -0.025898956, -0.010210406, 0.0033407898, 0.021122817, 0.03572702, 0.007270762, -0.040565837, -0.015105635, 0.026300102, -0.046006374, -0.009057113, 0.017462365, 0.08875344, -0.03174064, -0.004139947, 0.051095907, -0.039588045, -0.023040794, 0.016484573, 0.034849513, 0.004876425, -0.021987788, 0.0073271734, -0.015393958, 0.023880692, 0.002397471, 0.015732424, 0.0061206026, 0.017499972, -0.031715564, 0.036278594, 0.030436914, -0.02195018, -0.019092018, -0.009238882, -0.0043593235, -0.014428702, 0.046633165, 0.0061362726, -0.0154817095, 0.041042197, -0.017813368, -0.009201275, -0.013363159, -0.007659372, -0.00691976, 0.03289393, 0.030487059, -0.008900416, -0.0035946397, 0.016208785, 0.02499638, -0.011909007, -0.014616739, -0.01902934, -0.0037419354, 0.007352245, -0.006092397, 0.05209877, -0.010511266, 0.037833035, 0.025435131, -0.044301506, -0.0049485057, 0.014403631, -0.017738152, -0.0069636353, 0.009370508, -0.007076457, -0.011620684, -0.014742097, -0.00033219863, 0.013927271, -0.02448241, 0.028406115, -0.036378883, 0.053853784, -0.0108936075, 0.010943751, -0.031916138, -0.028406115, 0.017537579, 0.0060171825, 0.010260549, -0.00012428068, -0.00023171637, 0.030336628, 0.044000648, 0.0030994758, -0.028355973, 0.09131075, 0.022025395, -0.039136756, 0.009000702, -0.020032203], [0.046777755, 0.008638439, -0.020277716, 0.04516701, 0.019328922, 0.023278553, -0.04516701, -0.0028146638, -0.003224245, 0.046424717, -0.044549193, 0.018446323, 0.010640836, 0.0007488302, 0.0142208785, 0.056398086, -0.03510538, -0.0040516816, -0.03287682, -0.0352819, 0.003991003, -0.0418352, -0.07824241, -0.0129300775, -0.02641178, 0.030140761, -0.0008246786, 0.0063657463, -0.03027315, 0.013448604, 0.034818538, 0.004233718, 0.06707753, -0.044791907, -0.006200259, -0.046512976, 0.012510843, 0.02504375, -0.04503462, -0.036561668, -0.057015903, 0.0051052845, 0.01847942, -0.01493799, -0.0015307579, 0.036848515, -0.009261775, -0.0006733266, 0.005703797, -0.016537702, 0.0006443663, -0.027051663, 0.0004747418, 0.011904056, -0.023212358, 0.012047478, 0.057633724, -0.11270791, 0.0036021078, -0.021998784, -0.0352819, 0.020421138, 0.008555695, -0.005119075, -0.0043192194, -0.019064141, 0.023587462, 0.020001903, 0.06747471, 0.029942175, -0.013867839, 0.047836874, -0.0053479993, -0.017872633, 0.0019417182, -0.03695884, 0.09408507, 0.023874307, 0.0007853753, -0.017409269, -0.0005909277, -0.055603746, 0.022153238, 0.003152534, 0.03501712, 0.0032518262, 0.031972155, -0.07118162, -0.031663243, 0.0012356387, 0.037400138, -0.01515864, -0.0028146638, 0.020035, -0.03457582, 0.013393442, -0.0028822378, -0.014728373, -0.0011797869, -0.01254394, -0.026742755, -0.03993761, -0.058163285, -0.019626798, 0.0218002, -0.0030615157, 0.056309827, 0.0042695734, 0.001736238, 0.120474786, 0.009984403, -0.003403523, -0.017012099, 0.031707373, -0.040224455, 0.061208252, 0.0065036523, -0.02100586, -0.033207793, 0.031486724, -0.06862208, -0.008456403, 0.06045804, 0.046512976, -0.0128307855, 0.030295216, 0.03506125, 0.0070111468, -0.0027870827, -0.005502454, -0.014287074, 0.046204064, 0.041636616, 0.03762079, 0.05021989, -0.007104923, 0.020421138, 9.912002e-05, -0.047130793, 0.032413453, -0.04340181, 0.0027457108, 0.004534353, 0.009532071, -0.040665757, 0.0073145404, -0.0029622235, -0.036363084, -0.057104163, -0.041018795, 0.0103705395, -0.017861601, 0.033318117, -0.00092466053, 0.036892645, -0.049425554, 0.015191738, 0.023477137, 0.014595984, 0.012091609, 0.03532603, -0.077977635, 0.025109945, 0.015357225, 0.021579549, -0.0069284034, 0.04037891, 0.011363464, -0.03084684, 0.03217074, 0.00857776, 0.008092331, 0.04419615, -0.012025413, -0.028309368, 0.0062057753, 0.04143803, 0.030184891, -0.012422583, -0.047263183, -0.037025034, 0.0028987864, 0.049734462, -0.057898503, -0.018060185, 0.029434681, 0.03186183, 0.009636879, 0.008224721, -0.037333943, -0.022947578, 0.010580157, 0.002323718, -0.055074185, -0.008820475, -0.05158792, -0.029147837, -0.055338968, 0.010260215, 0.046821885, -7.171118e-05, -0.0814639, -0.01781747, -0.014253976, -0.06694514, -0.0015721298, 0.002210635, 0.045586247, 0.008097847, 0.024845166, 0.037356008, 0.0049370388, 0.029677397, 0.0011356568, -0.010640836, 0.010701515, -0.06756297, -0.0004130288, 0.017276878, -0.066327326, 0.07021076, -0.021899492, 0.0085832765, -0.022175303, 0.028816862, 0.05264704, 0.008616374, -0.0039634216, 0.0044350605, 0.019119304, 0.018236704, -0.041504223, -0.010182988, 0.0017982958, -0.07171118, -0.024536256, -0.003949631, 0.042872254, 0.044460934, 0.000456814, -0.00564036, 0.05136727, -0.03371529, 0.01812638, -0.010651869, 0.022340791, 0.013746481, -0.058295675, -0.06134064, -0.022252532, 0.023477137, -0.00090604316, 0.0605463, 0.022263564, 0.016537702, 0.035789397, -0.023896372, -0.01245568, -0.019670928, 0.020454235, -0.046998404, 0.023079967, -0.03843719, 0.020454235, 0.010784258, -0.03448756, 0.06072282, -0.046115804, -0.07250552, -0.023653656, 0.06579777, -0.008136461, 0.018600777, 0.03642928, 0.047219053, -0.02539679, 0.07219661, 0.05101423, -0.047616225, 0.037333943, 0.03726775, 0.00640436, -0.0065698475, -0.014728373, 0.06350301, 0.058119155, -0.00862189, -0.015268966, -0.05021989, 0.02216427, -0.022969643, -0.031707373, 0.020266684, 0.06588603, 0.0047384542, -0.013779579, 0.03682645, -0.010690482, -0.048145782, 0.011440692, -0.0483223, -0.008792894, -0.022440083, -0.06862208, -0.002998079, 0.0127314925, 0.013283117, 0.117650464, 0.015313095, -0.047704484, 0.053970937, 0.0134265395, -0.03625276, -0.028066652, -0.009256259, -0.026610363, -0.029986305, 0.022859318, 0.055603746, -0.028838927, -0.023786047, -0.035745267, -0.03625276, -0.018104315, 0.043092903, 0.015853686, 0.01817051, -0.05357377, -0.037819374, -0.0024864473, -0.066592105, 0.02579396, -0.022329759, -0.010056114, -0.08177281, -0.07285856, -0.0034642017, -0.020046033, -0.02513201, -0.00627197, -0.022087043, 0.0028712053, -0.033163663, -0.045939285, 0.021281673, -0.02947881, -0.008875637, -0.029853916, 0.035348095, -0.019935708, 0.0012687363, 0.084729515, 0.01564407, 0.0041399417, -0.008572244, 0.02491136, -0.034112457, -0.030582061, -0.017387204, 0.0054886634, 0.03453169, -0.04340181, 0.047307312, 0.06204672, 0.03852545, -0.04355627, -0.039032947, -0.010955262, -0.027029598, 0.023587462, -0.00023685375, 0.011915089, -0.043004643, -0.024271477, -0.006674656, -0.0021127218, 0.007822035, -0.011716504, 0.0011439312, -0.005521761, -0.040599562, -0.05366203, -0.0010694619, 0.031001294, 0.039474245, -0.0038806782, 0.0040213424, 0.018545615, 0.03426691, -0.02251731, -0.00779997, 0.0007957183, 0.012510843, -0.021734005, 0.037289813, 0.04143803, -0.07043141, -0.014386366, -0.01595298, 0.016206726, -0.0053728223, 0.007899262, -0.011418627, -0.046954274, 0.019880546, -0.003742772, -0.028530017, -0.03190596, 0.010762193, 0.0736529, 0.020134293, 0.021281673, -0.011115233, 0.03998174, -0.0060127066, 0.05233813, 0.010376056, 0.03119988, -0.01205851, 0.0024740358, 0.037731115, -0.045542117, 0.005256981, 0.040400974, -0.01808225, 0.058030892, -0.059090015, 0.039959677, 0.0012508085, -0.03380355, -0.027228184, -0.005863768, 0.036054175, 0.021072054, -0.030118696, -0.08186107, -0.04428441, -0.04117325, 0.0031497758, 0.0436004, 0.022704862, -0.012290193, 0.028706538, 0.031641178, -0.028684473, -0.02043217, -0.0823465, 0.0064650388, 0.022881383, -0.044350605, -0.044041697, -0.01896485, -0.06442974, -0.019395117, 0.03695884, 0.0027126132, 0.032325193, -0.021634711, 0.0037593208, -0.09717417, -0.025264401, 0.0026643462, 0.041018795, -0.016074337, 0.048763603, 0.015809556, 0.0039358404, 0.031177815, -0.000901906, -0.002479552, 0.0016176387, 0.01936202, -0.017067261, 0.038900558, -0.027382638, -0.056751125, -0.011727536, 0.014165716, 0.059090015, -0.047660355, -0.03678232, -0.020597657, -0.0021623678, 0.056927644, 0.007347638, 0.0012728735, 0.0030615157, -0.009636879, 0.026963403, -0.0082357535, -0.012025413, 0.023256488, 0.0012418446, -0.008202656, 0.0009874078, -0.027228184, -0.018821428, -0.057060033, 0.0031856312, -0.0019955016, 0.028927187, 0.02996424, 0.02987598, 0.030074567, -0.0008205414, -0.010602222, -0.035348095, -0.05992848, 0.010227118, 0.0051576886, 0.010591189, 0.0017858843, -0.05026402, 0.0034835085, -0.040047936, 0.020101195, 0.0045426274, 0.01559994, 0.012588071, 0.0023775015, -0.004264057, -0.004349559, -0.040599562, 0.0011453104, 0.032545842, -0.018225672, -0.018744199, -0.011528951, -0.034421366, -0.08878947, 0.0007357291, -0.015368258, -0.027338509, -0.0023416458, 0.0006416082, 0.006724302, 0.033384312, 0.03422278, -0.020619722, 0.027956327, 0.018302899, 0.068357304, -0.013250019, -0.010155407, -0.034818538, 0.031795636, 0.021171346, 0.0030753063, -0.0007467616, 0.021237541, -0.043710724, 0.022726929, 0.003337328, 0.01808225, 0.00012058166, 0.0100175, -0.042210303, -0.027846003, 0.028287303, -0.009570684, 0.021105152, 0.034377236, 0.07859545, 0.07850719, 0.0005550721, -0.036407214, 0.03022902, -0.011308301, -0.014827666, -0.009074222, 0.02557331, 0.010778742, -0.002411978, -0.002973256, -0.0012777002, 0.06288519, -0.013393442, -0.018711101, 0.0056762155, -0.00046233027, -0.0018879347, 6.0603275e-06, 0.01856768, -0.048454694, 0.026544169, 0.0156882, -0.0062830024, -0.047660355, -0.027779808, 0.016813513, 0.010508446, 0.045895156, -0.001374924, -0.018148445, 0.007855132, 0.02451419, 0.0002434043, 0.022109108, -0.0041344254, 0.048454694, -0.0066801724, -0.0022864833, 0.020663852, 0.018049153, -0.03040554, -0.012874915, 0.014904893, -0.042408887, 0.00613958, 0.035657007, -0.045939285, 0.009024576, 0.019461311, -0.027934263, -0.00046026165, -0.015897818, -0.02588222, 0.05013163, 0.029434681, 0.03124401, 0.05366203, -0.0013018338, 0.075020924, -0.046115804, 0.0061285477, 0.018942785, -0.0030229022, 0.0018755231, -0.013404475, 0.002569191, -0.017221715, 0.000439231, -0.0027139923, -0.01227916, -0.011694439, 0.013404475, 0.024756907, 0.050440542, -0.04415202, -0.013272084, 0.006249905, 0.05079358, 0.012102641, 0.024072891, -0.03342844, -0.016912807, 0.033869743, -0.006718786, 0.010497414, -0.042122044, -0.01790573, -0.00047267321, -0.008169558, 0.04991098, 0.023124097, 0.0075407065, 0.015125543, 0.023035837, -0.027890133, 0.03856958, -0.05149966, -0.04351214, -0.004694324, -0.00089845835, 0.0028518985, -0.025771895, -0.00666914, -0.008688086, 0.0005829981, 0.02601461, 0.07038728, -0.022539375, -0.038613714, -0.020851405, -0.055692006, -0.022771059, 0.031574983, 0.045851026, -0.053176597, -0.030140761, -0.038238607, -0.03347257, -0.023565397, -0.032766495, -0.01817051, -0.0032987143, -0.023035837, 0.0031635663, -0.008351594, -0.013294149, 0.039959677, -0.044924296, 0.0002275451, 0.029743591, -0.008792894, 0.006922887, -0.011881991, -0.04130564, 0.02641178, 0.036054175, -0.008649471, -0.00824127, -0.0010184366, 0.006851176, 0.023675721, 0.054941796, 0.0038861944, -0.03080271, -0.065047555, -0.0309351, 0.011385529, -0.010353991, 0.023918437, 0.059619572, -0.0007619313, 0.0060071903, -0.0257057, 0.017464431, -0.08040478, 0.050440542, 0.00019617144, -0.029412616, -0.0021582306, -0.03036141, 0.027007533, -0.043048773, 0.0013535485, -0.016648026, 0.038150348, 0.003538671, -0.0068677245, -0.0021458191, -0.0021072056, -0.011760633, -0.025021685, -0.027537093, -0.0074083167, -0.012257095, 0.039209466, 0.030824775, -0.023168227, -0.01028228, -0.010486381, -0.040621627, 0.0019706783, -0.008996995, 0.033340182, -0.019229628, -0.008969414, -0.0121357385, -0.009664461, -0.015346193, 0.020741079, -0.017618885, -0.0051301075, 0.05158792, 0.013018337, 0.004956346, -0.003472476, -0.030471735, -0.032457583, 0.0018824185, 0.013823709, -0.049337294, 0.026831014, 0.022881383, -0.029633267, -0.06085521, 0.020752111, 0.022153238, 0.028794797, 0.07087271, -0.009565168, -0.01617363, 0.013172792, -0.010552576, 0.039959677, 0.0034228298, -0.026301455, -0.0060733855, 0.01839116, -0.0021720214, -0.013448604, -0.008726699, 0.07029902, 0.017045196, -0.013371377, 0.005549342, -0.028088719, -0.012367421, 0.023234423, 0.021535419, 0.012996272, -0.025595374, 0.027470898, -0.009929241, 0.020145325, -0.01515864, -0.00022564888, 0.009024576, 0.0076455153, -0.023653656, -0.0074524465, 0.051323142, -0.00928384, -0.0718877, -0.008599825, -0.03461995, -0.017376171, 0.040643692, 0.044350605, 0.005781024, 0.014904893, 0.044880167, -0.01821464, 0.05163205, 0.025661571, -0.0009832706, 0.0009653428, -0.0045205625, 0.018413225, -0.022991708, 0.017486496, -0.042519215, 0.039827287, 0.046336453, -0.007606901, -0.014584951, -0.006807046, -0.031928025, -0.03523777, -0.07329986, -0.025198206, 0.04029065, 0.009035609, 0.028816862, -0.03775318, -0.010420186, 0.027647419, 0.008009587, -0.024778971, -0.025816025, -0.013250019, 0.0016286712, -0.044681583, 0.01294111, 0.0014493932, -0.012157803, 0.029500876, 0.007441414, 0.054632887, 0.028993381, 0.018578712, 0.04196759, -0.0049922015, -0.019350987, -0.040356845, 0.016967969, -0.019108271, 0.023234423, 0.021965686, 0.03559081, 0.04086434, -0.057060033, -0.0009874078, -0.033538766, -0.014287074, -0.06857795, -0.007165602, -0.06619494, -0.01559994, -0.03124401, 0.031751506, 0.076344825, 0.026036674, -0.032656167, 0.008373659, -0.056045044, 0.027382638, -0.015533745, 0.0335167, 0.040798146, -0.01724378, -0.010960778, -0.0072262804, -0.015941948, 0.03914327, -0.026433844, -0.043666594, 0.007309024, -0.012411551, -0.017464431, 0.016416345, 0.009013544, 0.024359737, 0.023234423, -0.027073728, -0.04373279, -0.015048316, 0.015180705, 0.007910294, 0.033340182, 0.0070718257, -0.041504223, 0.0035276385, -0.017221715, 0.0073145404, 0.0024850683, 0.014960055, -0.014651146, -0.012246063, -0.011253139, 0.032192804, -0.018898655, 0.033119533, -0.0054610823, -0.02416115, 0.013095565, 0.0028684472, -0.014110554, 0.03843719, -0.008914252, 0.037378073, 0.042651605, -0.014684243, -0.01032641, 0.056486346, 0.00051094213, 0.040489234, -0.03146466, -0.005769992, 0.01631705, 0.04187933, 0.022815188, -0.021645743, -0.03000837, -0.0034504111, 0.023940502, 0.0075848363, 0.010254699, 0.021292705, 0.0705638, -0.0030587576, -0.020972762, 0.034244847, -0.033913873, -0.007601385, 0.030295216, 0.018291866, -0.02627939, -0.022682797, -0.0032573424, -0.025021685, -0.009112836, -0.023499202, 0.016416345, 0.009907176, 0.04099673, 0.015147608, 0.03545842, 0.016592864, -0.041857265, 0.010833904, 0.0017458914, 0.023102032, -0.008086815, 0.036517538, -0.036142435, 0.0004409548, 0.029081643, -0.02451419, 0.0069118547, 0.0204763, 0.026897209, 0.02544092, 0.014926958, 0.016151564, -0.016736286, 0.001341137, 0.028066652, 0.032391388, -0.023786047, -0.040489234, 0.0048818765, -0.0068953056, -0.018016055, -0.00749106, 0.039805222, 0.013172792, 0.008511566, 0.05997261, -0.047792744, -0.019869514, 0.058472194, -0.0038034506, 0.0062940354, 0.0008860468, -0.00028649997, -0.007551739, -0.007639999, -0.0067904973, -0.018655939, -0.013007305, 0.02052043, -0.019218596, 0.03717949, -0.022903448, -0.0062057753, -0.045983415, -0.014949023, 0.0057093133, 0.009206613, -0.016361183, 0.017309975, 0.0071821506, 0.045365594, 0.014904893, 0.03347257, -0.006470555, 0.08539147, -0.012146771, -0.015004185, 0.0050997683, -0.007926843], [0.0029889634, -0.052130945, -0.023691434, 0.0067733517, 0.0076116077, -0.0029507217, -0.04596334, 0.016141014, -0.010358884, -0.007446404, -0.012947075, 0.009844917, 0.012885889, -0.02853741, -0.0014348248, 0.045620695, -0.010750478, -0.0075259465, 0.003377498, -0.06456406, -0.0077706925, -0.046036765, -0.05066247, 0.049634535, -0.009783731, 0.038302783, -0.014011721, 0.0162022, -0.017328033, 0.000564446, 0.04992823, 0.024229877, 0.053746272, -0.030984873, 0.0405055, -0.00086273043, -0.0096735945, 0.012102701, -0.061969746, 0.00030918332, -0.024450148, 0.0050723655, 0.014905045, -0.030226158, 0.003974067, -0.023507874, -0.05110301, 0.007709506, -0.021953737, -0.04363825, 0.006877369, -0.01852729, 0.016777353, 0.0123229725, 0.0011663687, 0.01707105, 0.03372603, -0.10661145, 0.028684258, -0.020228276, -0.066522025, 0.008676253, 0.0094594415, -0.022675738, -0.018796511, -0.005069306, -0.02197821, 0.020815667, 0.02070553, 0.05756431, -0.038302783, 0.029932464, 0.017817525, 0.004328949, -0.0078074047, -0.049805857, 0.1036745, 0.03996706, -0.04929189, -0.014317654, -0.00860283, -0.026897611, 4.835172e-05, 0.007697269, 0.047676563, -0.008816983, 0.03521898, -0.10592616, -0.009526747, 0.008908763, -0.008462101, -0.0005284989, 0.018955596, 0.0259431, -0.080864154, 0.007862473, 0.0032612435, 0.019885631, -0.043320082, -0.014170807, -0.026775237, -0.019689834, -0.052767288, -0.056291632, 0.024792792, -0.03842516, 0.030373007, -0.012665617, 0.018600713, 0.13852637, 0.029442972, 0.019188104, -0.01747488, -0.004472737, -0.025820727, 0.029663242, -0.039624415, -0.06632623, -0.0080276765, 0.0044757966, -0.090311356, -0.013155109, 0.049854808, 0.019959055, -0.037397224, 0.0034662185, -0.029932464, 0.027093407, 0.01697315, 0.0076850313, 0.028635308, 0.039085973, 0.06608148, 0.032526772, 0.04023628, -0.028659783, 0.0615292, -0.011509191, -0.012280142, 0.0047603142, -0.008468219, -0.036883257, -0.02785212, 0.025649404, -0.019518511, -0.006681572, 0.023006145, 0.04642836, -0.06784365, -0.029614294, -0.03680983, -0.018539527, -0.01192526, 0.049169518, 0.052130945, -0.023373265, 0.03313864, 0.04004048, -0.045914393, 0.01725461, 0.033016264, -0.05183725, -0.051690403, 0.034558166, 0.012579956, -0.036100067, 0.036711935, 0.0012076696, -0.04956111, 0.038718853, -0.003209235, -0.017854238, -0.036026645, 0.004062787, -0.04965901, 0.0101019, 0.02694656, 0.0355861, -0.06544514, -0.05041772, -0.019848919, 0.07758456, 0.02530676, -0.051984098, 0.0073179123, 0.022320855, 0.017670678, 0.0032918367, 0.054921053, -0.011362343, -0.033432335, -0.028831106, -0.010658698, -0.036932204, 0.012500414, -0.04797026, -0.026799712, -0.050809316, 0.024707131, 0.035439253, 0.018992307, -0.07582238, -0.043295607, 0.0029155393, -0.018172408, 0.023483401, 0.06358507, -0.008584474, -0.0005583273, 0.010132493, 0.03377498, 0.0081011, 0.024364486, -0.017352507, -0.032624673, 0.014709248, -0.05903279, 0.039722312, -0.04987928, -0.049756907, 0.042365573, -0.030838024, 0.026799712, -0.016422471, 0.054872103, 0.07264068, 0.02662839, 0.025062013, 0.042585842, -0.008137812, -0.015467961, -0.019077968, 0.00746476, 0.009569578, -0.05962018, 0.0056689344, -0.030935923, 0.03049538, 0.045155678, -0.034558166, 0.027240256, 0.03441132, -0.038890176, -0.014268705, 0.0082112355, 0.07347282, 0.005717884, -0.018820984, -0.015039655, -0.0112583265, 0.022724686, -0.017682916, 0.015174266, 0.0029430734, -0.012726803, 0.042267673, -0.009802086, -0.074500754, -0.01260443, 0.02462147, -0.0155536225, 0.0682842, -0.047578666, 0.040162854, 0.01588403, -0.030984873, 0.037886716, -0.02520886, -0.019077968, 0.024572521, 0.066424124, -0.026310218, 0.01442779, 0.008994424, 0.03054433, -0.009955052, 0.10191233, 0.04123974, -0.049414262, 0.04356483, 0.02890453, 0.016960913, 0.01775634, -0.0018447747, 0.00091091485, -0.035047658, 0.010071307, -0.040113907, -0.036491662, 0.019604173, -0.011906904, 0.010328291, 0.015406775, 0.028317139, 0.033481285, 0.0058586127, -0.01015085, 0.022871535, -0.026677338, 0.0032122943, 0.0024291063, 0.0058769686, -0.027240256, -0.058690146, 0.00050096493, 0.04119079, -0.0021920083, 0.051935147, -0.0186619, -0.04819053, 0.053012032, -0.0023403857, -0.028390562, -0.06764786, -0.014917282, 0.008847576, -0.00024245173, 0.023458926, 0.05438261, -0.046257038, -0.018172408, -0.05452946, -0.06740311, 0.029442972, -0.025429133, 0.0042738807, -0.00092085765, 0.0061737234, -0.0743539, 0.00021472658, -0.064466156, 0.0053140526, -0.032061756, -0.03154779, -0.056095835, -0.06456406, -0.016911965, -0.07636082, -0.012365803, -0.023630248, -0.033432335, -0.013253008, -0.031376466, -0.01757278, 0.0138159245, -0.014856096, -0.023862757, -0.003144989, 0.021513194, 0.011380699, 0.0014004073, 0.051445656, 0.021488719, 0.027778696, 0.0100407135, -0.0061614863, 0.0003566029, -0.021366345, 0.01779305, -0.030838024, 0.079444624, -0.090262406, -0.019445088, 0.03135199, -0.0048949244, -0.03514556, -0.034656066, -0.018723086, 0.032795995, 0.037079055, -0.03308969, 0.0030700355, 0.0080582695, -0.054872103, -0.01033441, -0.00087420293, 0.03450922, 0.0110441735, -0.028708732, 0.030470906, 0.025551505, 0.0074158106, -0.0050325943, 0.022810347, -0.005711765, -0.0059014433, -0.044029847, 0.026726289, 0.05134776, -0.008700728, -0.016606031, -0.023104044, 0.024609232, -0.014415553, 0.027582899, 0.06466195, -0.018600713, -0.01710776, -0.027362628, -0.0084253885, -0.010903444, 0.02416869, 0.031890433, -0.004641, 0.038204886, 0.037299324, 0.006516368, 0.020864615, 0.002343445, 0.039526515, 0.006498012, 0.04760314, -0.017988848, 0.036222443, 0.0013246889, -0.009453323, -0.022687975, 0.028390562, -0.04774999, -4.115752e-05, 0.018245831, -0.038620956, -0.022430992, 0.03431342, -0.02139082, 0.03431342, -0.03171911, -0.008627305, 0.021745702, 0.014256468, -0.04327113, 0.025527032, 0.012163888, 0.02234533, -0.018723086, -0.07694821, -0.032110706, -0.047456294, -0.020240514, 0.046477307, 0.06970373, -0.005317112, 0.035439253, 0.058004856, -0.009037254, -0.0060268757, -0.08370321, -0.03372603, -0.014660299, -0.033750504, -0.045473848, 0.003787448, -0.09138824, -0.023226418, 0.061822895, -0.014917282, 0.025869677, -0.05761326, 0.050809316, -0.071710646, -0.011472479, -0.018796511, 0.061382353, -0.032379925, 0.051935147, -0.0070058606, 0.0016505073, 0.028121341, 0.004432966, 0.004387076, -0.037593022, -0.02170899, -0.07352176, -0.00080077903, -0.0068651317, -0.019163629, -0.01606759, -0.038767803, 0.023018382, -0.045498323, -0.014586875, 0.011649921, 0.034166574, 0.030935923, -0.015162028, 0.028170291, 0.0055067902, 0.012677855, 0.052033048, 0.0012902715, -0.042292148, -0.0013919942, 0.0156148095, 0.00819288, -0.00746476, -0.051445656, -0.017376982, -0.049071617, -0.0019579697, 0.03149884, 0.039893635, -0.011142072, 0.012231193, 0.040334176, 0.02557598, -0.0024948819, -0.0076544383, -0.01697315, 0.017364744, -0.0005988634, 0.003695668, -0.0128124645, -0.055214748, -0.006244088, -0.02462147, -0.008174524, -0.015455724, 0.022675738, 0.031180669, 0.018270306, -0.0077523366, -0.0040168976, -0.03668746, 0.0028145816, -0.011478598, 0.02393618, 0.030568803, -0.001492952, -0.012922601, -0.025527032, -0.023409976, -0.021770177, -0.036614034, 0.0049499925, 0.007195539, -0.051690403, 0.006608148, 0.0036803714, -0.035243455, 0.03081355, 0.027289204, 0.06089286, -0.010670936, 0.01033441, 0.0021537668, 0.052375693, 0.035292406, -0.004405432, -0.021660041, 0.03519451, -0.031205144, 0.0124147525, -0.007458641, 0.046354935, 0.018209118, -0.03827831, 0.00074456393, -0.047994737, 0.0081011, -0.015039655, 0.006516368, 0.012726803, 0.08145154, 0.040529974, -0.009043373, -0.03213518, 0.059424385, 0.005255925, -0.021452006, 0.038033564, -0.0049438737, 0.0028803572, -0.011851836, -0.02858636, -0.02398513, 0.06304663, -0.013375381, -0.035561625, 0.0031281626, 0.009759256, -0.022932721, 0.011417411, -0.006589792, -0.049512163, 0.011821243, 0.029418496, 0.0080276765, -0.035684, -0.053599425, 0.01829478, 0.009930578, 0.035072133, -0.007972608, -0.0006470478, 0.0024000427, -0.041704755, -0.02731368, 0.0057790703, 0.009043373, 0.04669758, 0.02462147, -0.013044974, 0.016043115, 0.0055465614, -0.049316365, -0.02303062, 0.00427694, -0.044348016, 0.020901328, 0.015627047, 0.0013797568, 0.0024551107, 0.03810699, -0.041631334, 0.009844917, -0.01747488, 0.017217897, 0.02880663, 0.013008262, 0.052718338, 0.028194765, 0.058102753, 0.07919988, -0.04755419, 0.019408375, 0.007574896, 0.010573037, 0.014635825, -0.008523287, -0.008235711, -0.026824186, -0.015675995, -0.033701554, -0.031107245, -0.017132236, 0.025000827, 0.012463702, 0.016593793, -0.019738782, 0.0179399, -0.00864566, 0.041264214, -0.0062073763, 0.05761326, -0.0291248, -0.029198226, 0.041704755, 0.001656626, 0.06378087, -0.021733465, 0.0002919746, 0.027485002, 0.00072850246, 0.050172977, -0.04097052, -0.011038055, -0.00019617939, 0.014880571, -0.035708476, 0.03918387, -0.020032478, -0.0053385273, 0.0017851178, 0.021195022, 0.00632669, -0.00059045025, -0.013742501, -0.046526257, -0.0071098777, 0.027044458, 0.072298035, -0.033995252, -0.04679548, -0.022785874, -0.06334032, -0.020827904, -0.033187587, 0.06960583, -0.012329091, -0.0047939667, -0.02557598, -0.026114423, 0.013620128, 0.018404916, -0.04750524, 0.0004141565, -0.03514556, 0.024388961, -0.020362886, -0.014023959, 0.022724686, -0.04150896, -0.023385502, 0.014782672, 0.043393508, 0.0058249603, -0.0053324085, -0.079346724, 0.021611093, 0.017829763, -0.012231193, -0.0059289774, -0.01087897, -0.04141106, 0.016581558, -0.005665875, -0.00714659, -0.014317654, -0.027998969, -0.035757422, 0.013742501, 0.012531007, -0.02657944, 0.05252254, 0.017903186, -0.003294896, -0.014072908, 0.023189705, -0.07694821, -0.0018876053, -0.003377498, -0.04633046, -0.016765116, -0.052424643, 0.012873651, -0.015896268, 0.0061155963, -0.03198833, 0.0051488485, -0.0013300427, 0.032330975, -0.022932721, -0.007709506, -0.011723344, -0.02485398, -0.018233594, -0.025086489, 0.0047664326, 0.024768319, 0.006081944, -0.016508132, -0.010248749, 0.016960913, -0.026603915, 0.0033071334, 0.0060972404, 0.017670678, -0.0049163396, 0.0016107361, -0.024792792, 0.007819642, -0.00591674, 0.021745702, 0.016397998, -0.0026845601, 0.037935667, 0.014366603, -0.011961971, 0.026187846, -0.033163115, -0.010181443, 0.0049438737, -0.0064735375, -0.032061756, 0.015590334, -0.0095818145, -0.016410235, -0.059424385, 0.013412093, 0.024596997, 0.028047917, 0.06280188, -0.019163629, -0.033677083, 0.007250607, -0.00714659, 0.00914739, -0.02626127, -0.051445656, -0.010701529, -0.030519854, -0.003992423, -0.040848143, -0.0107994275, 0.035684, 0.022382041, -0.0072750817, -0.035292406, -0.026163371, -0.00555268, 0.011295038, 0.027019983, 0.003909821, -0.018233594, 0.046673104, -0.025110962, 0.009881629, -0.013766975, -0.015296639, -0.0017575838, -0.0067917076, -0.0647109, -0.04133764, 0.026408117, 0.008260185, -0.031792536, -0.0106770545, -0.043075334, -0.025331235, 0.042487945, 0.022834823, 0.0019763259, 0.0060268757, 0.012677855, 0.02398513, 0.023972893, 0.026922084, 0.0081806425, 0.0015388419, 0.031156195, -0.021562142, -0.021231735, 0.015284401, -0.043295607, 0.018245831, 0.025049776, -0.01747488, -0.029785616, -0.025527032, -0.008841458, -0.041533433, -0.046208087, -0.04172923, 0.01898007, 0.033016264, 0.0047664326, -0.031229619, 0.05785801, 0.0058310786, -0.00869461, 0.0015694351, -0.018453866, 0.0009583344, 0.008431507, -0.036222443, 0.0341421, -0.002011508, -0.0045767543, 0.0017376982, 0.004619585, 0.060648113, -0.0012038455, 0.04765209, 0.0038669903, -0.008859813, -0.033383384, -0.027387103, 0.036981154, -0.022418754, 0.027803171, 0.025624929, 0.039428618, 0.00080536806, -0.014611349, -0.0034448032, -0.011129835, -0.016642744, -0.0843885, -0.040064957, -0.045449372, 0.0009545103, 0.020277224, 0.03663851, 0.06275293, 0.009930578, -0.02648154, 0.011356225, -0.005751536, 0.00042486415, -0.013509992, 0.036785357, 0.021427533, -0.031792536, -0.033187587, 0.0027289204, -0.0156148095, 0.019383902, 0.02262679, -0.030789075, -0.016544845, -0.0057423585, 0.002621844, 0.010413952, 0.012176124, 0.012641142, 0.0074158106, -0.0018554823, -0.02088909, 0.015002944, 0.013962772, -0.003144989, 0.0010348177, -0.024156453, -0.015847318, 0.016642744, -0.009985646, -0.009747018, 0.032208603, -0.010322172, 0.009802086, -0.019604173, 0.004983645, 0.016006403, -0.03879228, 0.023422213, -0.039012548, -0.021611093, -0.014843859, -0.01037724, -0.045718595, 0.024511335, 0.03441132, 0.011827362, 0.031841483, -0.0068161823, 0.041435536, 0.03458264, 0.02061987, -0.0031159255, -0.032967318, -0.0067978264, 0.012390277, 0.013130635, 0.020717768, -0.00046348816, -0.017315796, -0.010536325, -0.010071307, -0.030348532, -0.046722054, 0.022333093, 0.09540208, -0.019090205, -0.0339463, 0.03800909, -0.050368775, -0.009545103, 0.026677338, 0.019126918, -0.006048291, -0.006589792, 0.03213518, -0.0056872903, -0.011649921, 0.002066576, 0.028512936, 0.008358084, 0.030226158, -0.03277152, 0.039722312, 0.032208603, -0.018820984, -0.008584474, 0.00077095063, 0.0341421, -0.010004002, 0.044910934, -0.0015984988, -0.0022868474, 0.02853741, -0.044348016, -0.0023342671, -0.01802556, -0.01852729, -2.1905265e-05, 0.005317112, 0.030373007, -0.008449864, -0.013583415, 0.016226675, 0.033701554, -0.031327516, 0.0020283344, 0.010156969, -0.043491405, -0.03228203, -0.008351965, 0.06417246, 0.005763774, -0.0035335235, 0.03335891, -0.03764197, -0.0070915218, 0.03277152, -0.0010799427, -0.015272165, 0.029320598, 0.0037568547, 0.0014585345, -0.00591674, -0.0020329233, 0.0080888625, -0.034558166, 0.0053324085, -0.032624673, 0.04150896, 0.008541644, 0.029345073, -0.039061498, -0.0008711436, 0.020264987, -0.027925543, 0.0049805855, -0.010438426, -0.018392678, 0.03277152, 0.0110441735, -0.02339774, 0.0023725086, 0.07396231, 0.040260755, 0.0024795851, 0.002949192, 0.009104559], [0.04947902, -0.0071865716, -0.014559505, 0.01803049, 0.033055898, 0.011525304, -0.012987078, 0.03766835, 0.014116895, 0.033661574, -0.046543825, -0.005165712, 0.00592863, 0.031192282, 0.015479665, 0.07151628, -0.04030071, 0.037878007, 0.022293514, -0.05031765, -0.01375582, -0.01516518, -0.039695032, 0.013662639, 0.00054343353, 0.010651734, -0.024599738, 0.024459967, -0.04850062, 0.04151206, 0.025182119, 0.004353292, 0.033661574, -0.015980512, 0.027884362, -0.036247343, -0.03736551, 0.029421847, -0.06191866, -0.026905965, -0.030004228, -0.028886057, -0.0006315185, -0.041791603, -0.03673654, 0.023388388, -0.043049544, 0.0080717895, -0.02420372, 0.0077980706, 0.0025217063, -0.04826767, -0.01011012, -0.031914435, -0.06066072, 0.014303257, 0.047708586, -0.13697582, 0.03217068, -0.016516302, -0.03426725, 0.0354786, 0.030726379, -0.0057044136, -0.052367624, -0.0135811055, 0.02492587, 0.021781018, 0.05073696, 0.041442174, 0.026300289, 0.032520108, 0.006114992, -0.012963783, 0.011170052, -0.043119427, 0.094112635, 0.0056257923, 0.0069477954, -0.04505293, 0.0070176814, -0.010948747, -0.0062547633, -0.01511859, 0.00036562554, -0.03300931, 0.023446625, -0.098119415, -0.020488136, -0.008706584, -0.0005412496, -0.010663381, 0.014792456, -0.024273606, -0.064620905, 0.027208801, 0.023609692, 0.022037266, -0.033498507, -0.037738234, -0.025112234, -0.031797957, -0.07002539, -0.002057258, 0.01623676, 0.035105877, 0.04647394, -0.027977543, -0.00049866305, 0.1127488, -0.004571684, -0.021256877, -0.04160524, -0.0007549103, -0.015631083, 0.10007621, -0.005582114, -0.027208801, -0.07268105, 0.010733266, -0.061359577, -0.0015607788, 0.030633198, 0.005998516, -0.020406602, 0.028396858, 0.0060392823, 0.034639973, -0.025671318, -0.025834385, -0.012847307, 0.03629393, 0.021082163, 0.009877168, 0.028350268, 0.0043416442, 0.058936875, -0.028000839, -0.031238873, 0.030703083, -0.026113927, -0.016469711, 0.0092423735, 0.0016568716, -0.037947893, -0.001382425, -0.030633198, -0.021012276, -0.056840304, -0.029375257, -0.03422066, -0.041675124, -0.014932227, 0.033847935, 0.07734009, 0.015735913, 0.04563531, 0.040324003, -0.0061091683, -0.022409989, 0.006936148, -0.066950426, 0.013313211, 0.030679788, -0.015596141, -0.06466749, 0.032333747, 0.021478182, -0.0031623244, 0.032333747, 0.05306648, -0.0065983674, 0.021559713, -0.05041083, -0.018158615, 0.015584494, 0.016446415, 0.04952561, -0.05851756, -0.026719602, -0.024390083, 0.05283353, 0.060334586, -0.04151206, 0.02581109, 0.028257087, 0.056607354, 0.028326971, 0.025345186, -0.060334586, -0.00459498, -0.018612871, -0.022980722, -0.05963573, -0.005145329, -0.041185927, 0.001437023, -0.112655625, -0.0040621017, -0.0068080244, -0.007961137, -0.021979028, -0.009434558, -0.029957637, -0.044307485, 0.02858322, -0.004385323, 0.0016073693, 0.026416766, 0.013103554, -0.0072739283, 0.021396648, -0.006266411, -0.054277834, 0.0034855453, -0.00096238323, -0.045355767, 0.005148241, 0.011851436, -0.03163489, 0.0685345, -0.04253705, -0.011478714, -0.014105248, 0.018589575, 0.07319354, 0.045029636, -0.0037738236, 0.0016874466, 0.021781018, 0.003438955, -0.02814061, -0.013546163, 0.035199057, -0.06326978, -0.018240146, -0.04680007, 0.01006353, 0.057026666, -0.019707745, 0.03512917, 0.046240985, -0.05083014, -0.028350268, -0.015468017, 0.049805153, 0.026230404, -0.027534936, -0.030446835, 0.015770854, 0.030120702, -0.025601432, 0.03717915, 0.012241632, 0.019311726, 0.07007198, -0.027255392, -0.05059719, 0.004929848, -0.0073904046, 0.022584703, 0.035897914, -0.027791182, 0.041768305, 0.0035146645, -0.013359801, 0.049106296, -0.022852598, -0.05488351, -0.0116476035, 0.01769271, -0.045961443, 0.015514608, 0.002374655, 0.014943875, -0.0050958265, 0.07738668, 0.021850904, -0.036363818, 0.047079615, 0.01787907, 0.033475213, 0.01769271, 0.018577928, 0.039881393, 0.036154162, 0.009661688, -0.048780166, -0.047219384, -0.023481568, -0.012626003, -0.02002223, 0.014780809, 0.05288012, 0.041768305, -0.0023440802, 0.0120669175, 0.022596352, -0.03748199, 0.0066507817, 0.0074719377, -0.026137222, -0.02100063, -0.03932231, 0.015968865, 0.047312565, 0.01023242, 0.08996609, -0.01608534, 0.0057160617, 0.06350274, -0.007914547, -0.058564153, -0.07324013, -0.0053462503, 0.0058034183, 0.013814058, 0.028117316, 0.07664123, -0.049013115, 0.01268424, -0.024087245, -0.03328885, -0.020360012, 0.0075942376, -0.00052159425, 0.022969075, 0.0044115297, -0.021524772, -0.0137208775, -0.04165183, -0.0037854712, 0.020860858, -0.035618372, -0.049106296, -0.1258873, -0.035711553, -0.035199057, 0.0281872, -0.019067127, -0.057213027, -0.00746029, -0.010442076, -0.020919096, 0.033917822, -0.0046823365, -0.01351122, 0.002201397, 0.042606935, 0.0014319273, 0.0012739566, 0.06434136, -0.008112556, 0.012882249, 0.025694614, -0.0028667664, 0.009108426, -0.04680007, -0.005002646, -0.0044231773, 0.083629794, -0.079390064, 0.021979028, 0.08889451, -0.006167406, -0.027185507, -0.0058820397, -0.0077340086, -0.021664543, 0.014279962, -0.062431157, 0.032426927, -0.03950867, -0.048127897, 0.0054539903, -0.018985594, -0.011234114, 0.019078774, -0.011915498, 0.03238034, -0.019754335, -0.019416556, 0.0006227828, 0.021955732, -0.028210497, 0.033125784, -0.0017806274, 0.023306854, 0.041535355, -0.024180425, -0.0006959443, 0.021466533, 0.0032409457, -0.072261736, 0.03762176, 0.013907239, -0.03480304, -0.0073904046, -0.007105038, 0.003881564, 0.014512914, -0.017622825, -0.0054074, 0.024855986, 0.040906385, -0.047708586, 0.025927566, -0.004525094, 0.0018068345, 0.040743317, -0.009050188, 0.02100063, 0.0007316151, 0.009323907, 0.03091274, 0.02760482, 0.022934131, 0.011892203, -0.028862761, 0.01351122, 0.025112234, -0.01891571, -0.010907981, 0.011420475, -0.02434349, 0.03533883, -0.028420152, 0.047126204, 0.0118630845, -0.059076644, -0.006120816, 0.0049793506, 0.009521916, -0.0081999125, -0.01214845, -0.09019904, -0.03275306, -0.049292658, -0.011094342, 0.02483269, 0.013849, 0.018146966, 0.028350268, -0.0066216625, -0.037645053, -0.0291656, -0.087263845, 0.024459967, -0.014349848, -0.034546793, -0.032939423, -0.023073902, -0.037109263, -0.052414216, 0.054603964, 0.006674077, 0.0041378113, -0.038134255, 0.02055802, -0.064807266, -0.027325278, -0.01841486, 0.03908936, -0.055955086, 0.02158301, 0.017040445, 0.01953303, 0.004708544, 0.01487399, 0.020732734, 0.003290448, 0.012963783, -0.009533564, 0.025764499, -0.01783248, 0.0060392823, -0.031145692, 0.02075603, 0.047219384, -0.02250317, -0.032007616, -0.018799232, -0.02216539, 0.05851756, 0.013487925, -0.020383306, 0.026952555, -0.007524352, 0.04407453, 0.0057160617, -0.018752642, 0.028839467, 0.06713679, -0.02541507, -0.016423121, -0.018985594, -0.0074661137, -0.042257506, 0.05269376, -0.0046648653, 0.045285884, 0.015782503, 0.010972043, 0.043748397, 0.05730621, 0.017541291, 0.003441867, -0.028606514, 0.02921219, -0.0039893044, 0.00013158152, -0.0070002098, -0.05171536, 0.0027706737, -0.03799448, -0.020919096, 0.005925718, 0.046730187, 0.014175134, 0.024320196, -0.026789488, -0.047033023, -0.036620066, -0.009393793, -0.007576766, 0.009556859, 0.0019611653, 0.018193556, 0.020057173, -0.053485796, -0.023167083, -0.014978819, -0.030446835, 0.047405746, 0.018647814, -0.018484747, 0.044051237, 0.032939423, -0.026160518, 0.016294997, 0.022444932, 0.07407876, -0.01380241, 0.024902577, -0.020429896, 0.025252005, 0.01052361, 0.039345603, -0.014978819, 0.01052361, -0.041255813, 0.053625565, -0.026416766, 0.037062675, -0.03829732, -0.0291656, -0.0099295825, -0.00041494588, 0.034872927, -0.020732734, -0.0028929736, 0.036573473, 0.07393899, 0.025065644, -0.04004446, -0.022025619, 0.023225322, -0.018263442, -0.031984318, -0.013278268, 0.026416766, 0.013115202, 0.01540978, -0.010348896, -0.0066799005, 0.066950426, 0.0153748365, -0.034383725, 0.021501476, 0.0032817123, -0.016795844, 0.018356623, -0.00140936, -0.047172796, 0.009521916, 0.016178522, 0.01346463, -0.039042767, -0.030749673, 0.014466324, -0.029980931, 0.027884362, 0.0004025703, -0.0017238454, -0.0046823365, -0.0126143545, 0.023877587, 0.012812364, 0.013639344, 0.013254973, -0.008642522, -0.020942392, 0.029282076, 0.010640086, 0.0036573475, -0.020674497, 0.011222466, -0.026020747, -0.006639134, 0.032683175, -0.024459967, -0.0056141447, 0.0665777, -0.044563733, 0.0078563085, -0.02541507, 0.004405706, 0.04433078, 0.021501476, 0.025484957, 0.045798376, 0.03387123, 0.08954678, -0.032357045, 0.018216852, 0.0011727681, -0.03247352, 0.0025988715, -0.015933922, 0.020721087, -0.01375582, -0.031075805, -0.017180216, -0.066531114, -0.016423121, -0.0017078299, 0.050038107, 0.06918676, -0.0704447, -0.0033399502, -0.0035292238, 0.04155865, 0.009265669, 0.06299024, -0.03736551, 0.00032667888, 0.01899724, -0.0056461757, 0.0064585963, -0.0315883, -0.014151839, 0.024669625, -0.039112654, 0.032240566, 0.020045526, -0.008933712, -0.006615839, 0.060986854, -0.023737816, -0.013406391, -0.015176827, -0.03130876, -0.013359801, 0.013779115, -0.003380717, -0.033382032, 0.030633198, -0.011868908, -0.014140191, 0.0014137279, 0.073845804, -0.042746704, -0.0242969, -0.055582363, -0.03820414, -0.026183812, -0.004525094, 0.026649717, -0.04183819, -0.03468656, -0.031891137, -0.045029636, -0.008392098, -0.02415713, -0.039112654, 0.013650991, -0.03533883, -0.015339894, 0.006196525, -0.015386485, 0.015631083, -0.0359678, 0.023609692, 0.08195254, 0.023539808, -0.017063739, 0.014641038, -0.025601432, -0.00041494588, 0.04023082, -0.038949586, -0.028536629, 0.024436673, 0.007349638, -0.0035816382, 0.026673011, 0.0029468436, -0.00013649535, -0.044004645, -0.01744811, 0.0020936567, 0.0152467135, 0.0291656, 0.039252423, -0.020814268, 0.0028609426, -0.036130868, 0.023947474, -0.08549341, -0.0032729765, -0.036457, -0.020255182, -0.022584703, -0.040160935, 0.040463775, -0.0247861, 0.004117428, -0.01691232, 0.059449367, -0.00029410198, -0.009038541, 0.003468074, 0.023073902, 0.0016408561, -0.031728074, 0.009056012, -0.009155016, 0.0012775966, 0.012591059, 0.00047463985, 0.00061659503, -0.016784197, -0.019649507, -0.03578144, -0.003677731, -0.0021067604, 0.024949167, -0.030982625, -0.028117316, -0.016294997, 0.0060684015, 0.006959443, 0.038716633, -0.018193556, 0.01910207, 0.0075884135, 0.045984738, -0.0038407973, 0.01686573, -0.016399825, 0.006615839, 0.023493217, -0.023807703, -0.010040234, 0.02536848, 0.04477339, 0.01657454, -0.030074112, 0.0010868671, 0.0030371125, 0.00039565453, 0.063782275, -0.029398551, -0.0014173677, -0.0062489393, -0.023632988, 0.02026683, -0.026603127, -0.04505293, -0.010139239, 0.0014668701, -0.011950442, -0.042234212, 0.013115202, 0.039834805, 0.015398132, -0.0020485222, -0.01856628, -0.020488136, -0.037738234, 0.042560343, 0.029957637, 0.037225742, -0.0035292238, 0.04638076, -0.017087035, 0.031075805, -0.020301772, 0.014501266, -0.0027575702, 0.0010511962, -0.045448948, -0.007256457, 0.050364237, -0.009073483, -0.03524565, -0.02133841, -0.031238873, -0.03130876, 0.05497669, 0.012649298, 0.03708597, -0.0071516284, 0.018694405, -0.026323585, 0.0144080855, 0.025787795, 0.016854083, 0.022060562, 0.04607792, -0.004399882, -0.058890283, 0.036340524, -0.04836085, 0.052134674, 0.020930743, -0.023807703, 0.0037796474, 0.008205737, -0.01787907, -0.03873993, -0.042257506, -0.013744173, 0.012043622, -0.0023571837, 0.019311726, -0.016679369, 0.037784826, 0.009580154, -0.012136803, -0.014058658, -0.02362134, -0.0051249457, 0.004766782, -0.029049123, 0.043631922, -0.013103554, -0.017529644, 0.018647814, 0.02711562, -0.012241632, 0.017599529, -0.017867424, 0.0071632764, -0.018787585, -0.01827509, -0.018799232, 0.013814058, -0.012707535, 0.008520222, 0.037412103, 0.023947474, 0.02585768, -0.032147385, -0.009056012, -0.034034297, -0.024180425, -0.05190172, 0.0063887103, -0.027185507, -0.016993854, -0.018531337, 0.02595086, 0.034430318, 0.01613193, -0.029375257, 0.023097198, -0.014140191, -0.0037709116, -0.031611595, -0.004000952, 0.028909352, -0.02022024, -0.04023082, 0.029398551, -0.026509946, 0.03699279, -0.0033603336, -0.04053366, -0.0066857245, 0.0015738824, -0.01011012, 0.0060975207, -0.015968865, 0.030726379, 0.039555263, -0.025578137, -0.017902367, -0.02153642, 0.026742898, 0.0056607355, 0.025578137, 0.036037687, -0.034966107, 0.0015724265, -0.024902577, 0.020476487, 0.00920743, 0.0050055576, 0.010267363, -0.024110539, 0.025554841, -0.00029264603, -0.0153748365, 0.010180006, 0.002761938, -0.04724268, -0.004076661, 0.008461984, -0.020243535, -0.01243964, 0.025135528, 0.020907449, 0.049199477, 0.0053346027, -0.0003843709, 0.010878862, 0.033218965, -0.0031943552, -0.001204071, 0.0015986336, 0.0184731, 0.0031914434, 0.044889864, -0.0016350324, -0.041372288, 0.0045920676, 0.036270637, -0.0177393, -0.00078257336, 0.016143579, 0.07305377, -0.019556327, -0.01836827, -0.009981996, -0.022316808, -0.009044364, 0.012987078, 0.030540017, -0.019428203, -0.00870076, 0.0320775, -0.043911465, 0.013709229, 0.003345774, -0.011094342, 0.007838837, 0.013394744, 0.01769271, 0.020872505, 0.0019859164, -0.01516518, -0.022188684, -0.006691548, 0.020616258, 0.03086615, 0.017750949, -0.047592107, -0.009079307, 0.030633198, -0.019474793, -0.011455419, -0.011129285, 0.0013241869, 0.008858003, 0.031867843, -0.004740575, -0.016562892, -0.024949167, 0.020662848, 0.0066507817, -0.06531976, 0.006179054, -0.0018053786, 0.01003441, -0.0029905222, -0.022293514, 0.024413377, 0.023318503, 0.014722571, 0.040370595, -0.02711562, 0.012917193, 0.042397276, 0.0041844016, 0.021175344, 0.02362134, -0.014175134, -0.01803049, -0.017145272, -0.009545211, 0.0058907755, -0.0015767943, -0.019731041, -0.039788213, 0.015514608, 0.007396228, -0.004493063, -0.03960185, 0.016807493, 0.03922913, 0.0025086026, -0.021350058, 0.039531965, 0.006668253, 0.03897288, 0.041628536, -0.011665075, -0.031821255, 0.09145699, 0.016993854, -0.007495233, 0.022328457, -0.017366577], [0.0018536515, -0.03256188, -0.004463161, 0.048590865, 0.010779973, 0.040192444, -0.044655606, 0.010983935, -0.0228797, 0.0042322045, -0.0063528055, 0.05398985, -0.016292937, -0.006250825, -0.008062485, 0.031026168, -0.04314389, 0.006148844, 0.010731982, -0.04643127, -0.010863958, -0.0664675, -0.090654954, 0.05144633, 0.023911504, 0.025099281, 0.0068867053, 0.011673805, 0.003218395, 0.03270585, 0.00962819, -0.012789596, 0.05653337, -0.025099281, 0.015717044, -0.026035106, 0.02356357, 0.042951927, -0.046335287, -0.014985182, 0.00064900296, -0.0007198647, -0.003914264, -0.0633001, -0.025195263, 0.024883322, -0.02159594, -0.020996053, -0.039808515, -0.015897011, 0.010066108, -0.034385536, -0.0030414283, -0.010785973, -0.01600499, -0.015873017, 0.06229229, -0.08067283, 0.0151291555, 0.030258311, -0.015789032, 0.017732667, 0.02473935, -0.01521314, 0.018944439, -0.023275625, 0.050390527, 0.013257507, 0.03256188, 0.055333596, -0.0063528055, 0.017948626, -0.012369675, 0.0005713926, 0.020240195, -0.047799014, 0.077409446, 0.059220865, -0.046647232, -0.0005380238, 0.015345115, -0.023875512, -0.014313309, 0.014217327, 0.03733698, 0.0022510767, 0.01324551, -0.10356453, 0.0036773086, -0.007330622, 0.008452411, -0.0022645742, 0.03277784, 0.03536935, -0.029058537, 0.012213704, 0.0025780154, -0.0032843826, -0.036473144, -0.006928697, -0.0109359445, -0.016412914, -0.06747531, -0.06142845, 0.03580127, 0.024667362, 0.042759962, 0.015897011, -0.0073606162, 0.09353442, 0.014109347, -0.01000012, 0.002170092, 0.0019061416, -0.027882759, 0.063828, -0.008374426, -0.013221514, -0.037936866, 0.01181178, -0.10625202, -0.017036797, 0.038104836, -0.0069706896, 0.0013295001, 0.03995249, 0.012099725, 0.027426844, -0.016736854, 0.036881067, -0.009460221, 0.0175527, 0.058548994, 0.05101441, 0.03270585, 0.005090043, 0.034169577, 0.0007067421, -0.008632377, 0.012813591, -0.071074635, 0.022999676, -0.04345583, 0.02920251, -0.027114902, 0.021823898, 0.0025120277, -0.0244754, -0.07918511, -0.03916064, -0.007450599, -0.022723729, 0.03978452, 0.031098153, 0.035921246, 0.007960503, 0.013785408, 0.07366615, -0.023983492, -0.014349302, 0.0033203757, -0.07894516, -0.001643691, -0.002798474, 0.045639418, -0.05648538, 0.040888313, -0.035201382, -0.05096642, 0.031266123, 0.0008713362, -0.011607817, 0.0013684927, 0.017972622, -0.02898655, 0.025195263, 0.023371607, 0.043071903, -0.05538159, -0.044271678, -0.040240433, 0.10078105, 0.030474272, -0.059316847, -0.00033574938, 0.0255312, 0.012825589, -0.026946934, 0.046623234, -0.037408967, 0.009712175, -0.013569449, 0.0054799695, -0.05696529, -0.021847893, -0.030018356, -0.0073186243, -0.052790076, 0.025603186, -0.006802721, 0.009172276, -0.0750099, -0.0037043036, 0.01164981, -0.046575245, 0.030042352, 0.020084225, -0.032729845, 0.004205209, 0.003074422, 0.02601111, 0.00026282558, 0.026778966, -0.017924631, -0.005908889, 0.018116593, -0.055045653, 0.0494787, 0.0037432963, -0.03424156, 0.06613157, -0.026299056, 0.018104596, 0.027666798, -0.0077745384, 0.038584746, 0.023791527, 0.008104476, 0.01877647, -0.03186601, -0.00590289, -0.042783957, -0.00500006, 0.022903694, -0.029538447, 0.0007881018, -0.011757789, 0.038800705, 0.06819518, -0.005887893, 0.027138898, 0.0420161, -0.050150573, -0.0239355, 0.032057974, 0.065891616, 0.0096641835, 0.03908865, -0.031961992, 0.011655808, 0.046143327, -0.019100409, 0.00018390293, 0.013149528, -0.033809643, 0.055765517, -0.0015942003, -0.048422895, 0.0085064005, 0.03440953, 0.0033383723, 0.04825493, -0.062100325, 0.07697753, -0.04904678, -0.034505513, 0.06075658, -0.050342537, -0.04743908, -0.030402284, 0.049286734, -0.033737656, -0.032585874, -0.021895884, 0.034481518, 0.037624925, 0.046791203, 0.046935175, -0.042064093, 0.07328222, 0.013233512, -0.010839962, 0.032273933, 0.0083264345, 0.032033976, -0.0006681244, -0.009766164, -0.019028423, -0.023911504, 0.019184394, -0.04223206, -0.059700776, 0.008758353, 0.06641951, 0.018800465, 0.033209756, -0.0020456153, 0.01612497, -0.038272806, -0.024667362, -0.03217795, 0.0070246793, -0.00446616, -0.03851276, 0.016640872, 0.010911949, 0.041608177, 0.0877755, 0.011943755, -0.02701892, 0.06545969, -0.01164981, -0.059076894, -0.029658424, -0.0032213945, -0.02867461, -0.03728899, 0.05202222, 0.061044525, -0.046983168, -0.026251065, 0.008704363, -0.050390527, 0.0067967223, 0.0035453334, -0.0005031554, -0.01612497, -0.030474272, -0.04357581, 0.01239367, -0.01962831, 0.014193332, -0.044247683, -0.0044901557, -0.053557932, -0.09031902, -0.008398421, -0.03224994, 0.082112566, -0.058740955, -0.04638328, -0.0018731478, -0.0058489004, -0.03090619, -0.00909429, 0.010204081, -0.017228762, -0.006484781, 0.01638892, -0.008764353, 0.0014554764, 0.054229803, 0.036713097, -0.005674933, 0.016868828, -0.01015609, -0.02723488, -0.025867136, -0.0110019315, 0.0011457846, 0.09650986, -0.087487556, 0.054085832, 0.028746596, -0.033281744, -0.05514163, -0.032897815, -0.012897575, 0.01287358, 0.017612688, -0.028434655, 0.017228762, -0.017384732, -0.07625766, 0.0009260759, -0.035993233, 0.016784845, -0.008116474, -0.005428979, 0.021128029, -0.02356357, -0.036353167, 0.0030294305, -0.002404048, 0.012909573, 0.023575569, -0.024091471, -0.008896328, 0.03968854, 0.005419981, 0.018872453, 0.032057974, -0.016760848, -0.007144657, 0.05307802, 0.024643367, -0.027210884, 0.010084104, -0.013137531, 0.010258071, -0.0021206012, 0.009292253, 0.01685683, -0.017840646, 0.02031218, -0.033449713, 0.007834527, 0.016988806, 0.009964127, 0.03335373, 0.0095742, -0.0024295433, 0.013929381, 0.011781785, 0.014337305, 0.035129394, 0.04825493, 0.03292181, -0.03606522, 0.01718077, 0.024019483, -0.019340364, 0.018164584, 0.02441541, -0.0446796, 0.044271678, -0.05696529, 0.029394474, 0.022279812, -0.04652725, -2.0410225e-05, -0.0035393345, 0.035297364, -0.00076410634, -0.035921246, -0.0750099, -0.037720907, -0.048686847, -0.030570252, 0.017276753, 0.017840646, -0.013353489, 0.00909429, 0.011505837, -0.023491584, -0.033905625, -0.02723488, 0.00760657, 0.016460905, -0.0034313549, -0.0776974, -0.010546017, -0.014397293, -0.04139222, 0.079089135, -0.0014802217, -0.01670086, -0.054421768, 0.02202786, -0.057829127, 0.009640188, 0.04228005, 0.03208197, -0.030546257, 0.02371954, -0.021739913, 0.006712738, 0.05840502, 0.038704723, 0.019616311, 0.0025765155, -0.0038872692, -0.082880415, 0.0078105316, -0.005827904, -0.017960623, -0.03392962, 0.003170404, 0.04153619, -0.018824462, -0.0001574704, 0.0099581275, 0.027522827, 0.034553505, 0.004187213, -0.017468715, 0.03318576, 0.017324744, 0.05259811, -0.025699168, -0.0130895395, 0.04052838, 0.030474272, -0.0039862506, 0.017672678, -0.055765517, -0.016496899, -0.038272806, 0.032513887, 0.01739673, 0.034769464, -0.010612005, 0.015537079, 0.023587566, 0.026107091, -0.005581951, -0.008338433, -0.062580235, 0.027834767, -0.02574716, -0.013005555, -0.007402608, -0.026179079, 0.016868828, -0.032897815, -0.003929261, 0.009382236, 0.011325871, -0.00808648, 0.019760285, -0.014961188, 0.006742732, -0.037576936, -0.0036083215, -0.027258875, 0.010168089, 0.020528141, 0.017648682, -0.057109263, -0.039064657, -8.8717694e-05, -0.020372171, 0.0014119846, 0.0004724112, 0.026658988, 0.009220267, 0.028794587, 0.009196271, -0.03846477, 0.007558579, -0.024391415, 0.0867197, -0.0065447697, 0.008188461, -0.039424587, 0.058309037, 0.0070306784, -0.0011142906, -0.03733698, 0.040984295, -0.048806824, 0.034841448, 0.0025555196, 0.032897815, -0.020384168, -0.01840454, -0.03812883, -0.0085064005, 0.015081164, -0.030018356, 0.019292373, 0.00025701418, 0.08446412, 0.059076894, -0.021979868, -0.051686283, 0.021068038, 0.021068038, 0.0014727231, 0.016868828, 0.039736528, 0.03527337, -0.0016376921, -0.015429099, -0.0054349783, 0.034553505, -0.021248005, -0.047583055, 0.007792535, -0.009268258, -0.027162893, -0.016724857, 0.02579515, -0.03392962, 0.035561316, -0.0043341853, -0.022903694, -0.008980311, -0.035129394, 0.025675174, -0.0015417101, 0.0118657695, 0.04825493, 0.006031866, -0.011145905, 0.005303003, 0.016244946, -0.014997181, -0.005551956, 0.030162329, 0.009376237, 0.025219258, 0.024559382, 0.01388139, -0.023491584, -0.015153151, 0.017780658, -0.056437388, -0.0075285845, 0.025963118, 0.01824857, -0.019904258, 0.03673709, -0.041080277, 0.026563006, -0.02031218, 0.020120217, 0.076449625, 0.004250201, 0.042903934, 0.017852644, 0.020612124, 0.068291165, -0.021847893, 0.01877647, -0.008416418, 0.010534019, 0.009562203, -0.015933005, 0.02793075, 0.008224454, -0.01840454, -0.0122736925, -0.035609305, -0.0037312985, 0.016148964, 0.0462873, 0.06449988, -0.016772848, -0.00084434124, 0.022327803, -0.0010550517, 0.0034283556, 0.020240195, -0.029058537, -0.047151137, 0.02877059, -0.024271438, 0.013821402, -0.046095334, -0.03325775, 0.033641674, 0.019280376, 0.028314676, 0.012297688, -0.023023672, 0.007852524, 0.016748851, -0.045711406, 0.04218407, -0.035777275, -0.062004343, 0.00033481207, 0.015045172, -0.0075165867, 0.014337305, -0.0066887424, -0.005246014, 0.013425476, -0.0048260926, 0.07798534, -0.035297364, -0.07961703, 0.005111039, -0.033497702, -0.006160842, -0.021295996, 0.05048651, -0.01005411, -0.026658988, -0.036857072, -0.039280616, -0.023059664, 0.0032093967, -0.026970929, -0.012105724, -0.020804089, -0.010947942, -0.042855944, -0.004376177, 0.012309685, -0.019160397, -0.007888517, 0.055189624, 0.017216763, -0.0019121405, -0.030402284, -0.058213055, 0.010701988, 0.048662852, 0.0076785563, -0.009676181, -0.0051830257, 0.032153957, 0.022387791, 0.019316368, -0.010120098, -4.4124517e-05, -0.014577259, -0.031937994, -4.4640045e-05, 0.020504145, 0.004547145, 0.03877671, 0.02946646, 0.0036953052, -0.023179643, -0.00074498495, -0.036929056, 0.0260591, -0.004601135, -0.04652725, -0.023947498, -0.025963118, -0.009688179, -0.015417102, 0.010402044, 0.013857394, 0.03419357, 0.0005702678, 0.045495447, -0.061668407, -0.00058151566, 0.017768659, -0.033593684, 0.020804089, -0.017000804, 0.01739673, 0.047583055, 0.009814155, -9.589994e-06, -0.049718652, -0.025723165, -0.028338673, 0.02026419, 0.019496335, 0.02207585, -0.009160277, 0.0077805375, -0.0064907796, 0.027690794, 0.0015019677, 0.015009178, -0.014565262, 0.02143997, 0.024283435, 0.00978416, -0.011091915, 0.004367179, -0.022819709, -0.014193332, 0.028074723, -0.007084668, -0.0054859687, 0.01956832, 0.012753602, 0.008524397, -0.06181238, 0.0040612365, 0.006580763, 0.012669618, 0.033521697, -0.011943755, -0.050678473, -0.0016646871, -0.024187453, 0.03714502, -0.028698605, -0.03642515, -0.04139222, -0.013545454, 0.0028944558, -0.025027296, -0.018476527, 0.023743536, 0.008008494, -0.0035363352, -0.035225376, -0.014997181, -0.014925194, 0.028314676, 0.0025225258, 0.05485369, 0.02415146, 0.012825589, -0.039112646, 0.02797874, 0.03356969, 0.00712666, -0.00028738347, 0.03781689, -0.048446894, -0.025771156, 0.011127908, 0.019796278, -0.057685155, -0.020144213, -0.025171269, -0.035249375, 0.035945244, 0.017780658, -0.005338996, -0.0013280003, 0.010642, -0.051734272, 0.04499154, 0.009622191, 0.0056509376, 0.017912632, -0.0027144896, 0.01632893, -0.02994637, 0.012861582, -0.058980912, 0.046959173, 0.04652725, 0.015897011, -0.0006527523, -0.03642515, -0.016460905, -0.03287382, -0.02415146, 0.007078669, 0.03200998, 0.009466221, 0.020888073, -0.035849262, 0.019928254, 0.012621627, 0.016520893, -0.014193332, 0.006079857, 0.0003291881, 0.0019061416, -0.03575328, 0.03378565, -0.01361744, -0.008176463, 0.017072791, 0.037193008, 0.079473056, 0.012147716, 0.046839193, -0.0016511895, -0.028074723, -0.015861018, -0.03224994, -0.014145341, -0.007276632, 0.021571945, -0.012441661, 0.018344551, 0.0069047017, -0.015381108, 0.012681616, 0.013125532, -0.008890329, -0.06680344, 0.015633062, -0.044103708, -0.038872693, 0.0035393345, 0.016784845, 0.06440389, 0.037384972, -0.039280616, 0.0147212325, -0.057733145, -0.0137254195, -0.005030054, 0.0044541624, 0.014661244, -0.027138898, -0.016052982, -0.008836339, -0.012981559, 0.047007162, -0.0011217891, -0.037217002, 0.015081164, -0.006070859, -0.015909009, 0.002485033, -0.02505129, 0.02371954, 0.017648682, -0.024079474, -0.012585634, -0.043263867, 0.03064224, 0.0041092276, 0.023203637, -0.0066287536, 0.00016459405, 0.008914324, 0.020804089, -0.024007486, 0.026970929, -0.026371041, 0.0050870436, -0.0056029465, 0.0054979664, 0.021775907, -0.0223398, 0.043071903, -0.023923503, -0.03234592, 0.0005845151, -0.00037530443, -0.050390527, -0.021943875, 0.016844833, -0.00925626, 0.03308978, -0.007276632, 0.0068747075, 0.04139222, 0.019232385, 0.019604314, -0.026443029, 0.019940251, 0.006340808, -0.003335373, 0.041368224, 0.0051500318, -0.05298204, -0.023251629, 0.015261131, -0.033833638, -0.016364923, 0.03659312, 0.069011025, 0.009346243, -0.009862146, 0.026179079, -0.04223206, 0.0063228114, 0.009244262, -0.025099281, -0.0043431837, -0.02718689, 0.011307874, -0.018380545, -0.0026410036, -0.0032783838, 0.037001044, -0.0062808194, 0.023203637, -0.006580763, 0.047799014, 0.037097026, -0.011229889, 0.005566953, -0.012861582, 0.012645623, 0.03649714, 0.007702552, -0.027114902, -0.024547385, 0.030498266, -0.056245428, -0.020168208, 0.01085196, 0.009592197, 0.00067112385, 0.009430227, 0.03572928, -0.041056283, -0.054901678, 0.022987679, 0.023839518, -0.037936866, -0.033113774, -0.017768659, -0.03323375, -0.01611297, -0.014433286, 0.01626894, -0.01845253, 0.020540139, 0.045639418, -0.054709714, 8.557766e-05, 0.03160206, -0.039664544, 0.012465657, 0.023383604, -0.038656734, -0.022303807, -0.010618004, 0.003803285, 0.004217207, -0.03589725, 0.03021032, -0.047367096, 0.0420161, 0.016508896, 0.015093163, -0.00097631646, -0.020408163, 0.02308366, 0.028122714, -0.01584902, 0.023263626, 0.007744544, 0.013077541, 0.052934047, -0.008842338, -0.028722601, 0.07596972, 0.031050162, 0.0065867617, 0.032993797, -0.0067787254], [0.027246032, -0.040976692, -0.021588713, 0.035355255, -0.01466358, -0.009317233, -0.028824817, 0.014065554, 0.007032777, -0.010620928, -0.03903909, 0.013156556, 0.047770258, -0.049372967, -0.010973764, 0.016864313, -0.015189841, 0.012367163, -0.018096244, -0.048129074, 0.0061477, -0.059659, -0.079656966, -0.009383016, -0.022569474, 0.009329194, -0.012582451, 0.018395256, 0.0069251326, -0.006721804, 0.04281861, 0.03174318, 0.026408795, -0.036718752, 0.056740638, 0.0008185471, 0.002178307, 0.02295221, -0.054874796, -0.034661543, 0.020727556, -0.0061596604, -0.0035612404, -0.006919152, -0.007756388, 0.012654214, -0.04231627, -0.020189334, -0.010686711, -0.037795197, -0.004072552, -0.021839883, 0.03336981, -0.047196154, -0.003905105, -0.01563238, 0.024566878, -0.124197885, 0.033585098, 0.034230966, -0.07606881, 0.062864415, 0.011332579, -0.01587159, -0.0050951755, -0.012426965, 0.022425948, 0.0023651898, 0.012953227, 0.014268883, -0.061142102, 0.01161365, 0.006013144, -0.013359885, -0.023131616, -0.05659711, 0.094583675, 0.036790513, -0.03640778, -0.018921519, 0.028705213, -0.07530334, 0.020428544, -0.0298295, 0.01796468, 0.0068832706, 0.02176812, -0.08491959, -0.011326599, -0.011529927, -0.017569982, 0.025499796, 0.021002647, 0.0077683483, -0.03478115, 0.018156048, 0.006422791, 0.008228827, -0.03030792, -0.001372468, -0.024435312, -0.045569524, -0.047267918, -0.07429866, 0.0077683483, -0.0012132438, 0.008037459, -0.018849757, 0.01800056, 0.13022599, 0.051717225, -0.010967784, 0.0097119305, -0.024411391, -0.043631922, 0.045306396, -0.014639659, -0.052052118, -0.02297613, 0.011165132, -0.074442185, -0.055496745, 0.03368078, 0.035666227, -0.045138948, 0.0075650197, 0.037077565, 0.009849476, -0.01041162, -0.023633959, 0.031121235, -0.026432717, 0.066165514, 0.050329804, 0.024925694, 0.0075650197, 0.038177934, -0.023729643, 0.016027076, 0.023909051, -0.022521632, -0.026289191, -0.018586624, 0.033513337, -0.0107405335, 0.009915259, 0.013168517, 0.006841409, -0.031838864, 0.0037286875, -0.064060465, -0.0061656404, -0.0013575173, 0.07209793, 0.028944423, -0.024925694, 0.023813367, 0.026624085, -0.0056961905, 0.014304765, 0.0028495905, -0.06760078, -0.01894544, 0.031049471, 0.009574384, -0.0364317, 0.04480405, -0.032341205, -0.06520867, 0.042005293, 0.024459234, -0.050521173, 0.01017839, 0.0017417485, -0.0059114797, 0.019220533, 0.0029811559, 0.04540208, -0.029709894, -0.05296112, -0.046550285, 0.06740941, 0.02581077, -0.055975165, 0.059993893, 0.012630293, 0.013467529, -0.0034745268, 0.029685974, -0.005062284, -0.017558021, -0.04140727, -0.030140473, -0.021552831, -0.012080111, -0.07597313, -0.024483154, -0.013706739, 0.011326599, 0.022306342, -0.013575174, -0.04399074, -0.015644342, 0.041287664, -0.06133347, 0.026863296, 0.085158795, -0.02412434, -0.02719819, -0.043895055, -0.0096939895, 0.02772445, 0.020739516, -0.042746846, -0.011177092, 0.016433734, -0.06903604, 0.0029273336, -0.013324003, -0.04119198, 0.03224552, -0.0013829335, -0.005232721, -0.02319142, 0.017438417, 0.07592529, 0.0008992805, -2.5089028e-05, -0.0020796328, -0.0074693356, 0.02674369, 0.015704144, -0.00781619, 0.051765066, -0.046478525, -0.0043835253, -0.029016186, 0.05166938, 0.06066368, -0.027102506, 0.029973026, -0.008444116, -0.055353217, 0.0004414174, 0.0018299574, 0.055544585, -0.038273618, -0.009765753, -0.03171926, -0.018885639, -0.0047931727, -0.010094667, -0.008426176, 0.0011459659, 0.02581077, 0.05377443, 0.003908095, -0.055305377, -0.023538275, 0.016660985, -0.042986058, 0.063821256, 0.011996387, 0.041096296, 0.01041162, 0.008384314, 0.0040366706, -0.0085158795, -0.03640778, -0.02133754, 0.018550744, -0.026337033, 0.012594412, 0.009616246, 0.06018526, -0.02959029, 0.04946865, 0.021660475, -0.027628766, 0.06788783, 0.015799828, -0.010220252, -0.014125356, -0.0062075024, 0.03757991, -0.00687131, -0.012618333, -0.04449308, -0.027078584, -0.03667091, -0.020225214, -0.06894035, 0.056932006, 0.023753563, 0.05702769, -0.0024264876, -0.021947527, -0.0034625663, -0.09487073, 0.022569474, 0.009430858, 0.012881464, -0.021349503, -0.08324511, -0.01632609, 0.033465493, 0.04475621, 0.0142569225, -0.00037656902, -0.044851895, 0.02887266, 0.004948659, 0.011589729, -0.04499542, 0.010495343, -0.006494554, 0.024088457, 0.0189574, 0.05654927, -0.033274125, -0.017067641, -0.050042756, -0.05186075, -0.009508601, 0.009873397, 0.006219463, 0.005017432, 0.007834131, -0.06683531, -0.05798453, -0.09391389, 0.014651619, -0.04238803, -0.033585098, -0.05540106, -0.07152382, -0.01135052, -0.014448291, -0.006787587, -0.041263744, -0.020296978, 0.012821661, -0.0005460718, -0.040928848, -0.011727275, -0.011547868, 0.039445747, -0.01160169, 0.009765753, -0.027078584, 0.0014561915, 0.03339373, 0.012989108, 0.043871135, 0.0002195874, 0.021265779, -0.029398922, -0.04401466, -0.0014943157, -0.029781658, 0.068318404, -0.08496743, 0.016254326, 0.025906455, 0.051765066, -0.044660527, -0.035211727, -0.0060938774, 0.07367671, 0.028011503, 0.015273565, -0.0018867697, 0.02437551, -0.044612683, -0.013886146, -0.024255905, 0.04281861, 0.012749898, -0.060902894, 0.0029064028, -0.012618333, -0.04071356, 0.04710047, 0.054492064, 0.011236895, -0.027246032, -0.064012624, 0.023107696, -0.0028271645, -0.014699461, -0.016194524, -0.008097262, -0.015584539, -0.056214374, 0.012020308, 0.060520157, -0.0061656404, -0.012331281, 0.019232493, -0.025786849, 0.014400449, -0.008444116, -0.010746514, 0.0107823955, 0.026145665, -0.0077683483, -0.003905105, 0.0069968957, -0.0026148655, 0.03975672, -0.0073497305, 0.031121235, -0.01608688, 0.05276975, 0.0108182775, 0.014460251, -0.0041801967, 0.017187245, -0.046024024, 0.024925694, 0.0487271, -0.022665158, -0.00520581, 0.01632609, -0.009825555, 0.018837797, 0.0020078698, -0.0075709997, -0.029518528, -0.06300794, -0.039661035, -0.010525244, -0.0019480673, 0.022880446, -0.011464144, -0.08114007, -0.031862788, -0.016768629, -3.609176e-05, 0.06348636, -0.0057410426, -0.042962134, 0.030618893, 0.015799828, 0.0018792944, 0.00022762337, -0.06267305, -0.023633959, 0.022784762, 0.008216867, -0.039852403, -0.026313111, -0.08468038, -0.030953787, 0.0581759, -0.009215569, 0.008808912, -0.036527384, 0.028705213, -0.073581025, 0.031886708, -0.011559828, 0.016756669, 0.011476105, 0.029040108, 0.0040097595, -0.01725901, 0.06449104, 0.019411901, 0.010537205, 0.017139405, -0.0077982494, -0.034111362, 0.0041801967, 0.013300082, 0.011721295, -0.031432208, 0.00024313465, -0.0017731449, -0.03805833, -0.03363294, -0.0017851054, 0.047196154, 0.058271583, 0.018395256, 0.037962645, 0.017785272, -0.017330771, 0.05281759, -0.0029721856, 0.030379683, 0.053200327, -0.03951751, -0.007738447, 0.017199207, -0.06563925, -0.0022306342, -0.046191473, 0.04001985, 0.020560108, 0.045808736, 0.004637686, 0.029183634, 0.04994707, 0.023562195, 0.01681647, -0.028561687, -0.0010300985, 0.027030742, 0.006037065, -0.01017839, 0.0045061205, -0.06879683, 0.01136248, -0.0072002243, 0.02985342, -0.017629785, 0.036575224, -0.00035021856, 0.02722211, -0.009066063, -0.01845506, -0.041335505, -0.025906455, -0.0042908313, -0.014603777, 0.003483497, -0.018323494, 0.032532573, -0.071332455, -0.024028655, -0.009418898, -0.016553339, -0.013395766, -0.01159571, 0.004685528, 0.0058128056, 0.0020078698, 0.010190351, 0.02060795, -0.015811788, 0.053535223, -0.0058427067, 0.035857596, -0.01633805, 0.061381314, 0.020572068, -0.013682818, -0.01896936, 0.035355255, -0.0049067973, 0.03667091, 0.00662612, 0.03621641, 0.019531505, -0.027604846, -0.04001985, -0.038967326, 0.008204906, -0.03451802, 0.0021409304, -0.018156048, 0.07338966, 0.037197173, -0.031862788, -0.03126476, 0.02106245, -0.031838864, 0.0047273897, -0.005059294, 0.022748882, 0.03121692, -0.011039547, -0.017797232, -0.01893348, 0.06946661, -0.010244173, -0.020249136, 0.017450377, -0.021564791, -0.024734326, -0.01347949, 0.00403069, -0.055496745, 0.019986004, 0.03270002, -0.0022650207, -0.045330316, -0.0072062043, 0.021708317, -0.0298295, 0.026624085, 0.0059712823, -0.015106118, 0.013634976, -0.01776135, -0.00041674887, 0.009209589, -0.011314638, 0.022605356, 0.00079163595, 0.009311253, -0.0020243155, 0.008228827, -0.038010485, -0.005418109, 0.01657726, -0.04430171, 0.0096461475, -0.011583749, 0.004849985, 0.02109833, 0.01822781, -0.03595328, 0.033058837, 0.018622506, -0.020440504, 0.03573799, 0.023873169, 0.056453586, -0.008916557, 0.020201294, 0.07090188, -0.04686126, 0.01635001, 0.038273618, -0.0016341041, 0.04922944, -0.010160449, -0.03999593, 0.027006822, -0.024710404, -0.021182055, -0.020536188, -0.013575174, -0.00804344, 0.05611869, 0.036072884, 0.013670858, -0.03009263, 0.0038273616, 0.0383693, 0.008862735, 0.024901772, -0.030594973, -0.01896936, 0.03856067, -0.024758246, 0.0653522, -0.0322216, -0.0075709997, 0.029255396, 0.022940248, 0.052482698, -0.015751986, -0.028466003, -0.021146173, 0.018670348, -0.023334946, 0.059993893, -0.03640778, -0.038680274, 0.005143017, 0.0089943, 0.015046315, 0.0038961347, -0.027580924, -0.028681291, -0.017007839, 0.029709894, 0.085110955, -0.030738499, -0.023370827, -0.007690605, -0.060089577, -0.029925184, -0.0054569803, 0.054539904, -0.0004784202, -0.003994809, -0.050999593, -0.010262114, 0.008796952, 0.04401466, -0.036383856, 0.005137037, -0.02796366, 0.037316777, -0.05037765, 0.019543465, 0.010770435, -0.00876107, -0.006102848, 0.00021267273, 0.0070746387, 0.01962719, 0.0032353166, -0.0875509, 0.0060251043, 0.047459286, -0.0130847925, -0.0010457967, -0.037053645, -0.03667091, 0.021241857, 0.008695288, -0.009299293, -0.011302678, -0.004829054, -0.028131109, 0.032771785, -0.0015294496, 0.0032024253, 0.022808684, 0.016206484, -0.024172181, -0.019352097, 0.01704372, -0.046000104, 0.029877342, 0.0018120166, -0.025667245, -0.010453481, -0.029614212, -0.008928517, -0.043751527, 0.016900195, -0.0005397178, 0.040163375, -0.0019166709, 0.026145665, -0.007965697, 0.025739007, -0.013168517, -0.013587134, 0.0096880095, -0.0019316216, -0.002863046, 0.025284508, 0.021002647, -0.032939233, -0.0032173758, 0.017091563, 0.01918465, 0.013826344, -0.028561687, 0.027748372, -0.01893348, -0.02932716, -0.01160767, -0.036527384, 0.010088686, 0.033417653, 0.008384314, 0.0030364732, 0.058271583, 0.00048813812, -0.005660309, -0.03669483, -0.010034864, 0.014603777, 0.01917269, 0.01279774, -0.04733968, 0.06181189, 0.0024160221, -0.0054031583, -0.022665158, 0.019100927, 0.018084284, 0.032795705, 0.019950124, 0.019220533, -0.02033286, -0.018586624, -0.021732237, -0.00031527143, -0.046287157, -0.022210658, -0.019088967, -0.026671927, 0.019926202, -0.020213254, -0.005397178, 0.0322216, -0.00016286844, 0.016493537, 0.010142509, 0.024435312, 0.00639887, -0.020512266, 0.038201854, 0.02249771, 0.0043207323, 0.07922639, -0.02414826, 0.017354693, -0.010860139, 0.012343242, -0.0046018045, 0.0011549363, -0.040617876, -0.008946458, 0.014938671, -0.035905436, -0.03148005, 0.004467249, -0.034230966, -0.04449308, 0.04755497, 0.029303238, 0.009030182, -0.0050293924, -0.011703354, -0.025643323, 0.030020868, 0.034422334, -0.02648056, -0.039661035, 0.04870318, -0.027054664, -0.009221549, 0.0050981655, -0.003151593, 0.012127953, 0.056979846, 0.0031127215, -0.02435159, -0.026695848, -0.025906455, -0.0130130295, -0.020930884, -0.0142210405, 0.034446254, 0.028226793, 0.023035932, -0.057936687, 0.012080111, -0.0049067973, 0.0030215227, 0.034685466, 0.0007677149, -0.011147191, 0.011619631, -0.049420808, 0.04590442, 0.0096760485, -1.1796983e-06, -0.016876273, 0.0050981655, 0.06783999, 0.032269444, 0.013276161, 0.0096461475, -0.032580417, 0.0077444273, -0.033991758, 0.012438926, -0.00449416, 0.0130608715, -0.007122481, 0.047435366, 0.008234808, -0.0022425947, 0.011183073, -0.008169025, -0.02887266, -0.06664394, -0.022270462, -0.053535223, -0.026145665, 0.017402535, 0.0010375738, 0.03839322, 0.017952718, -0.04135943, -0.009586345, -0.036359936, -0.03193455, 0.01773743, 0.032149836, 0.024519036, -0.039613195, 0.008635485, -0.039182615, -0.011685413, -0.008814893, -0.003049929, -0.027509162, 0.014472212, 0.019950124, -0.0108421985, 0.026432717, 0.014543975, 0.03384823, 0.033919994, -0.008563722, -0.07071051, -0.01349145, 0.023311025, 0.010591027, -0.0007834131, 0.03930222, -0.0217442, -0.0049606194, 0.023526315, 0.009993002, 0.030523209, 0.01871819, 0.0077205063, -0.041072376, 0.0039888285, 0.0009979546, 0.008019519, 0.05985037, 0.0055018323, -0.023167498, 0.0040127495, -0.0028929473, -0.01987836, 0.01965111, 0.009610266, -0.0064048506, 0.06755293, -0.0054569803, 0.036264252, 0.040402588, 0.0142210405, 0.019364059, -0.011153171, 0.0364317, 0.024411391, 0.0009897319, 0.03624033, 0.036790513, -0.04066572, -0.035235647, 0.0065005347, -0.035857596, -0.011547868, 0.026169585, 0.070232086, -0.022928288, -0.025643323, 0.03167142, -0.01989032, 0.0108242575, 0.042531557, 0.010483383, -0.043368794, 0.0119664855, 0.07817386, 0.0030170374, 0.005334385, -0.0217442, 0.0024743294, -0.0059952033, 0.0065483768, -0.03743638, 0.018275652, 0.003528349, -0.01635001, -0.025140982, -0.008312551, 0.012474807, -0.023980813, 0.056692794, -0.010369758, 0.0021618614, 0.03834538, -0.031958472, -0.00015062762, 0.030929867, 0.030140473, 0.011159152, -0.018754072, 0.02461472, -0.021205977, -0.009167727, 0.018431138, 0.00662014, -0.036383856, -0.021241857, 0.013814383, -0.021827921, -0.038034406, -0.011631591, 0.04351232, 0.012121972, 0.013455569, 0.011769137, -0.035594463, -0.004598814, -0.0011190547, -0.0119664855, -0.014711422, 0.044517, -0.0049067973, 0.01728293, 0.0031306623, -0.009658108, -0.015704144, -0.00035582503, 0.04214882, -0.036264252, 0.027269952, -0.01349145, 0.011697374, -0.025667245, 0.0017103523, 0.0073676715, 0.010632889, -0.017151365, -0.023944931, 0.011745216, -0.021552831, 0.010459462, -0.023514353, -0.017175285, 0.05540106, 0.03243689, -0.03193455, 0.03451802, 0.010106627], [0.019307641, -0.06177503, -0.015290615, 0.008257874, 0.032630973, 0.03404459, -0.04207864, 0.0067500174, 0.02109822, 0.028790649, -0.032089088, 0.020414975, 0.03048699, 0.0013252652, -0.003996411, 0.06252895, -0.0028964407, 0.011744794, -0.019366542, -0.019613925, -0.024267077, -0.03698962, -0.060879737, 0.019778846, 0.0042349584, 0.02351315, 0.007957481, 0.016609991, -0.016727792, 0.033761866, 0.038308997, 0.005678025, 0.058994915, -0.02619902, 0.029144054, -0.012604744, -0.012922808, 0.027565515, -0.060832616, -0.014501346, -0.034633595, 0.0012913973, 0.0043174196, -0.025633574, -0.008593609, -0.025468651, -0.022794561, 0.015514437, 0.0149254305, -0.052869245, 0.018589053, -0.024267077, 0.009494789, 0.0016330212, -0.043068174, 0.020332513, 0.051973954, -0.110167824, 0.03392679, -0.015950302, -0.053764537, 0.024738284, 0.004308584, 0.003407404, -0.02445556, -0.00965971, 0.011844926, 0.03411527, 0.05847659, 0.037814233, -0.007079861, 0.039769735, 0.021663668, -0.008369786, 0.01309951, -0.022606079, 0.092780344, 0.0131466305, -0.026057659, -0.0434687, 0.010278167, -0.027353473, 0.019837746, -0.014336424, 0.02782468, 0.022429377, 0.02890845, -0.08392168, -0.03430375, 0.019672826, 0.039345652, 0.0026019374, 0.03232469, 0.015997423, -0.045047235, 0.042973932, 0.01142084, 0.007928031, -0.02008513, -0.011126338, -0.0062375814, 0.0067912475, -0.09136672, -0.046013206, 0.053057726, -0.00039610703, 0.065921634, 0.004028806, 0.029191174, 0.15700564, 0.01849481, 0.0066852267, -0.0143953245, 0.0049977223, -0.011738905, 0.040617906, -0.029332535, -0.05852371, 4.9754963e-06, 0.039675493, -0.09339291, -0.0073684743, 0.04891112, 0.016103445, -0.0037608081, 0.015985643, -0.023147965, 0.011562202, -0.012875687, -0.015208154, -0.015184593, 0.045824725, 0.03840324, -0.00057170464, 0.06304728, -0.03331422, 0.031641442, -0.013535375, -0.027589075, -0.0051155235, -0.04707342, -0.0046914387, 0.011456181, 0.011562202, -0.05927764, -0.012298461, -0.01662177, 0.0016403837, -0.04262053, -0.046837818, 0.011697674, -0.0053805765, -0.008275544, 0.04450535, 0.04200796, -0.021522306, 0.032795895, 0.039345652, 0.008151853, 0.0073979245, 0.0028905505, -0.06785358, 0.035528887, 0.0075392863, -0.005418862, -0.03406815, 0.028036721, 0.004099487, -0.009429998, 0.032795895, -0.0024487956, -0.020520994, 0.001569703, -0.019825967, -0.040877067, 0.032725215, 0.04170168, 0.044128384, -0.03293726, -0.04891112, -0.025916297, 0.03668334, 0.04568336, -0.07793737, 0.005760486, 0.025939858, 0.047426824, -0.009577249, 0.043421578, -0.06742949, -0.016315486, 0.0011088052, -0.0050448426, -0.071434736, -0.018553711, -0.05329333, -0.03201841, -0.030746153, -0.014030141, 0.012192439, 0.019437222, -0.07058657, 0.00047341417, -0.03656554, -0.028178083, -0.030274946, 0.023454249, 0.004703219, 0.006184571, 0.051926833, 0.042314243, -0.00014568714, 0.00875264, -0.002734464, -0.031170236, 0.01136194, -0.046578653, -0.019861307, -0.013617836, -0.028178083, 0.07068081, -0.013876999, 0.007527506, 0.002017348, 0.015867842, 0.04537708, 0.05150275, -0.0041731126, 0.013582495, -0.022464717, -0.020615237, -0.026811587, -0.03477496, 0.015867842, -0.09640862, -0.0036400617, -0.035481766, 0.013723857, 0.07977507, 0.013606056, 0.016327268, 0.037837792, -0.025492212, 0.011197018, -0.016551089, 0.04523572, -0.019708166, -0.068419024, -0.021157121, -0.020897958, 0.03837968, -0.010973196, 0.046837818, 0.020167591, 0.010154476, 0.039722614, 0.0017478775, -0.048487034, -0.023454249, 0.0086642895, -0.03067547, 0.055272393, -0.011037987, 0.045282837, -0.0209922, -0.025610013, 0.028767088, -0.032678094, -0.08203686, -0.020167591, 0.059984446, -0.029191174, 0.019979108, 0.04269121, 0.020886179, 0.013723857, 0.05828811, 0.025021007, -0.04803939, 0.08340336, 0.037743554, 0.030157145, 0.009347537, 0.021569427, 0.048769757, 0.028884891, 0.0031776915, -0.04189016, -0.05131427, 0.0015682305, -0.0052068196, -0.0008496422, -0.012981708, 0.03849748, 0.023489589, 0.01935476, 0.0225943, 0.0051685343, -0.0384268, -0.013770978, -0.00875853, -0.004900536, -0.040452983, -0.028625727, 0.0055454983, 0.027659757, 0.03145296, 0.09697407, -0.008947012, -0.053434692, 0.018977797, 0.0061551207, -0.05484831, -0.0612567, 0.0039787404, -0.017870465, -0.018471252, 0.0052627753, 0.058759313, -0.051832594, -0.009011803, -0.054094378, -0.066816926, 0.030958194, 0.03927497, 0.015620459, 0.011927387, -0.03220689, -0.067900695, -0.0023457194, -0.037248787, 0.015490877, -0.005857672, 0.009017693, -0.04905248, -0.080953084, -0.009453558, -0.050607458, 0.02261786, -0.026952948, -0.02608122, 0.014630928, -0.012592964, -0.03764931, 0.012216, -0.028295884, -0.017705543, -0.005872397, 0.03755507, 0.014253963, 0.0014680993, 0.0961259, 0.04891112, 0.020674137, -0.005094908, -0.015867842, -0.0037372478, -0.043091733, -0.01751706, 0.016174125, 0.056450408, -0.06116246, 0.038615283, 0.04794515, 0.0056603546, -0.091460966, -0.005701585, 0.0021042265, -0.0013451441, -0.0025297839, -0.050466098, -0.0041701677, -0.0016286037, -0.06662844, -0.02718855, -0.014442446, 0.030863954, 0.0139948, -0.01140317, -0.0070091803, -0.04443467, -0.04537708, -0.00871141, 0.026528863, 0.0058311666, 0.006614546, -0.027753998, 0.03135872, 0.03734303, 0.0017316798, -0.0009784874, 0.005904793, -0.0017184272, -0.019578584, 0.033667624, 0.045542, -0.045094356, -0.010619791, -0.02702363, 0.020638796, 0.024903204, 0.028790649, 0.021157121, -0.042172883, 0.048392795, -0.0065556453, 0.008676069, -0.014642708, 1.5139314e-05, 0.04024094, 0.038073394, 0.037225228, -0.009235626, 0.0384268, -0.00035340406, 0.032536734, -0.00480335, 0.02452624, 0.00074914296, -0.01391234, 0.034751397, -0.062199112, -0.0017743828, 0.017835123, -0.047685985, 0.057345696, -0.03920429, 0.00571042, 0.004909371, -0.05352893, -0.045706924, 0.016315486, 0.018188529, 0.022570739, -0.01665711, -0.08260231, -0.014736949, -0.049240965, -0.0070268502, 0.03133516, 0.044835195, -0.013170191, 0.054094378, 0.021345604, -0.03939277, -0.02608122, -0.064083934, 0.00066079193, -0.0038079286, -0.031617884, -0.052869245, 0.0018597888, -0.07873842, -0.0026593655, 0.042031523, -0.014984331, 0.021133563, -0.03757863, 0.0030746153, -0.081188686, -0.0009453558, -0.0157147, 0.0332671, -0.014418885, 0.03244249, 0.01738748, 0.011414951, 0.04629593, 0.01051966, 0.0014850332, -0.054754067, 0.027659757, -0.08076461, 0.0017846904, 0.018223869, -0.03416239, 0.009170835, -0.008605389, 0.056403287, -0.028036721, -0.03244249, -0.012793226, 0.04269121, 0.046555094, 0.028484367, 0.017564181, 0.014760509, -0.018223869, 0.028154522, -0.009135495, -0.031712122, 0.04082995, 0.042502727, 0.017140096, 0.00611389, -0.012216, -0.013417574, -0.04794515, 0.027377034, 0.051785473, 0.023265766, 0.027494835, 0.03324354, 0.045542, 0.010784714, -0.016256586, 0.005510158, -0.02886133, 0.03741371, -0.00051501277, 0.033573385, -0.021145342, -0.04212576, -0.019507904, -0.018859996, 0.0060549895, -0.015314175, 0.0076688677, 0.016115224, 0.0065320847, 0.0026225524, -0.038002715, -0.0646965, -0.00785146, 0.003996411, 0.01397124, 0.015537998, 0.011621103, -0.06672268, -0.05352893, -0.012380921, 0.008687849, -0.028060282, 0.0095713595, 0.016115224, -0.02192283, 0.04535352, 0.023418909, -0.01843591, 0.026905827, 0.018942457, 0.066062994, 0.009259186, -0.015066792, -0.017198997, 0.015808942, 0.025115248, 0.009712721, -0.02358383, 0.03748439, -0.035552446, 0.0129581485, -0.017163657, 0.042149324, -0.014418885, -0.0045059016, -0.023489589, -0.009288636, 0.008982353, -0.015856061, 0.023454249, 0.013888779, 0.06898447, 0.03404459, -0.01835345, -0.015573339, 0.03581161, 0.008145963, -0.0077218786, 0.000606677, -0.005156754, 0.025468651, -0.0020836114, -0.029450336, 0.012734326, 0.051267147, -0.0138652185, -0.04867552, -0.014784069, -0.01049021, -0.026811587, -0.009483009, 0.024738284, -0.02636394, 0.01671601, 0.019696385, 0.005913628, -0.030086465, -0.051031545, 0.0035693808, -0.012439823, 0.048628397, -0.02185215, -0.025727814, -0.0012118814, -0.023890113, 0.004488231, 0.0061551207, -0.0040935967, 0.035340406, -0.0061433404, -0.02004979, 0.020615237, 0.006178681, -0.04120691, 0.0047532846, -0.0022809287, -0.04269121, 0.004876976, 0.025939858, -0.06318864, -0.014477786, 0.0062434715, -0.02874353, 0.015608679, -0.04622525, 0.021451626, 0.05937188, 0.01650397, 0.0262697, 0.042644087, 0.0070268502, 0.06455514, -0.012840347, 0.028979132, 0.01136783, -0.020827278, -0.014324644, -0.0209922, -0.00483869, -0.03948701, 0.017988266, -0.011108668, -0.02433776, -0.008352116, 0.020827278, 0.008905782, 0.05319909, -0.024361318, 0.007904471, 0.056167684, 0.029897982, -0.015373076, -0.008228424, -0.032230448, -0.026976509, 0.048487034, 0.012074638, -0.0028360675, -0.028060282, -0.0014806157, 0.024856085, -0.024714723, 0.039110046, 0.009636151, -0.012899248, 0.0010999701, 0.020662356, -0.04740326, 0.028460806, -0.027612636, -0.029308975, -0.026411062, 0.0066557764, -0.02452624, -0.018777534, -0.045918964, -0.015007892, 0.0040081907, 0.029968662, 0.07440333, -0.0008437522, -0.053434692, -0.031075995, -0.039157167, -0.030439869, -0.029144054, 0.052822124, -0.020886179, -0.033337783, -0.043350898, -0.017034074, 0.019048478, -0.030369187, -0.016951613, -0.014748729, -0.017646642, 0.021216024, -0.022924142, -0.017764444, 0.023866553, -0.04523572, -0.0021174792, 0.046060327, 0.028154522, 0.010390079, -0.017163657, -0.026316822, 0.019590365, 0.026293261, -0.029968662, -0.031853486, -0.00062287465, -0.0054512573, 0.022134874, 0.007221223, 0.012074638, -0.019366542, -0.053010605, -0.016138785, 0.0039846306, -0.0023810598, -0.0073272437, 0.031877045, 0.007362584, -0.008528817, 0.00010197179, 0.018753974, -0.07675936, 0.03484564, 0.04648441, -0.023018384, -0.012828567, -0.024019696, 0.0134882545, -0.029780181, 0.018471252, -0.012934588, 0.0400289, 0.0039434, 0.029473897, -0.011079216, 0.007527506, -0.008717299, -0.010926075, -0.015007892, -0.020615237, 0.010849504, 0.032772336, 0.013547155, -0.025963416, -0.036259256, 0.0016035709, -0.049335204, -0.0018435911, 0.041254032, 0.025916297, 0.0003723627, 0.011155788, -0.00787502, 0.0061669005, -0.016727792, 0.02347781, 1.31721235e-05, 0.008216644, 0.028295884, 0.03305506, 0.019048478, 0.012875687, -0.035976533, -0.011073327, 0.020497434, -0.008947012, -0.033903226, 0.020650577, 0.010643352, -0.002319214, -0.07171746, -0.0025857396, 0.031782802, 0.036400616, 0.07049233, -0.030345628, -0.02364273, 0.014725168, -0.011674114, 0.00038101373, -0.01754062, -0.064460896, -0.021781469, 0.011144008, -0.0032925478, -0.031570762, 0.0011610795, 0.05338757, 0.015196374, 0.00084227964, -0.008958792, -0.01675135, -0.012875687, 0.022358695, 0.026505303, 0.01837701, -0.007315464, 0.02975662, -0.01131482, 0.040806387, -0.018589053, -0.017976485, 0.005837057, -0.0014865057, -0.030840393, -0.01923696, 0.002133677, -0.017658422, -0.041183352, -0.01837701, -0.056167684, -0.026057659, 0.033290662, 0.024267077, 0.012380921, 0.018647954, 0.05866507, -0.0006861928, 0.039911095, 0.022523617, -0.00082019187, -0.012510504, 0.017022295, -0.022888802, -0.045801163, 0.014466005, -0.023336448, 0.033479143, 0.05828811, -0.011061546, -0.018553711, -0.016456848, -0.016857373, -0.027353473, -0.024432, -0.002258841, 0.01750528, 0.037437268, 0.006296482, -0.023831213, 0.038756642, 0.04568336, 0.011615213, -0.00783968, -0.004532407, -0.008216644, -0.009730391, -0.028130962, 0.011067437, -0.0040877066, -0.00058017165, 0.0039875754, 0.026505303, 0.037955593, 0.053764537, 0.018577272, 0.017234337, -0.03585873, -0.051408507, -0.051832594, 0.008092953, -0.038167637, 0.023195086, 0.015337735, 0.024997447, 0.016056323, -0.029120494, -0.005866507, -0.014619147, -0.0005264248, -0.06333, -0.03140584, -0.036824703, -0.017092975, -0.044363987, 0.048298553, 0.050371855, 0.01935476, -0.03430375, 0.032418933, -0.025751375, 0.025539333, -0.02006157, 0.036518417, 0.029544579, 0.00021830063, -0.034374435, 0.0036282814, -0.049476568, 0.01929586, 0.0056309043, -0.012828567, 0.018647954, -0.007751329, -0.015490877, -0.009017693, 0.026646664, 0.0051920945, 0.031712122, 0.001005729, -0.0015888457, 0.0056986404, 0.006043209, 0.005427697, 0.015514437, 0.045000114, -0.02782468, 0.012899248, -0.001247958, -0.011155788, 0.010384189, -0.0014511654, 0.018647954, -0.047002736, 0.0036371166, 0.054754067, -0.043421578, 0.034633595, -0.033596944, -0.050843064, -0.0046089776, 0.008658399, -0.013229092, -0.007339024, 0.015467317, 0.014418885, 0.019060258, -0.025468651, -0.003766698, 0.039746176, 0.02189927, -0.0024694107, -0.043185975, -0.03569381, -0.0019216345, 0.018671514, 0.016833812, -0.022476498, -0.038356118, -0.0007885328, 0.01935476, -0.019178059, -0.023112625, 0.00195992, 0.077890255, -0.019955548, -0.025751375, 0.023713412, -0.026411062, -0.02440844, 0.022193775, 0.026882268, -0.034468673, -0.0075628464, 0.03755507, -0.038026277, 0.0012766721, 0.004891701, 0.024761843, 0.024856085, 0.035670247, -0.006714677, 0.024808964, 0.014937211, -0.017788004, -0.031782802, 0.0029052757, -0.016350826, -0.006632216, 0.03213621, -0.023065504, -0.02893201, 0.0067794677, -0.04111267, 0.0045382967, -0.0025680694, -0.009418217, 0.02186393, 0.013441134, 0.024879646, -0.008605389, -0.009047143, 0.022771, 0.04636661, -0.03564669, -0.025657134, 0.009253296, -0.02002623, -0.015962083, 0.009689161, 0.040264502, 0.014489566, 0.008151853, 0.03258385, -0.040806387, 0.0063612727, 0.054282863, -0.008181304, 0.0073920344, 0.013346893, 0.01053144, 0.02624614, -0.008216644, 0.008552378, -0.010319398, -0.018801095, 0.0072919033, -0.027212111, 0.053858776, 0.0036106114, 0.009889423, -0.04097131, 0.011479741, 0.005068403, -0.014100822, -0.010378298, 0.0013083313, -0.018388791, 0.03833256, 0.020685917, 0.01139139, -0.0027727492, 0.105926976, -0.008876331, -0.006196351, 0.0020040954, -0.032630973], [-0.004942335, -0.049556438, -0.012764171, -0.020374278, -0.005051224, -0.010429114, 0.008789735, -0.0015251974, -0.0072108493, -0.0015282221, -0.008571957, 0.04868533, 0.010326275, -0.033852275, 0.010828372, -0.004128695, -0.0063578878, -0.0109312115, 0.018196505, -0.031529315, -0.035860665, -0.04454756, -0.08609463, -0.014058736, -0.0050754216, 0.021559956, -0.028311051, 0.028504632, 0.022612546, -0.00893492, 0.008414674, 0.047693234, 0.040748555, -0.051831003, -0.002260952, -0.033924866, 0.02717377, 0.0030700553, -0.046604346, -0.009745535, -0.018486874, 0.008475168, -0.043144107, -0.039611276, 0.0024968775, -0.0069688745, 0.008202946, -0.012159234, 0.004071226, -0.04024041, 0.03283598, -0.0055714697, 0.0003794089, -0.031964872, 0.0148935495, 0.030875985, 0.05541223, -0.09112771, -0.01929749, 0.012618986, -0.049701624, 0.010677138, 0.00089076976, -0.008692944, -0.02256415, -0.0076161567, -0.024403159, 0.037143134, 0.041837443, 0.0403372, -0.04563645, 0.014699969, 0.012262073, -0.0046791877, -0.019757243, -0.06993072, 0.062477894, 0.035352517, 0.0018632059, -0.033416722, -0.029448334, -0.036804367, 0.01910391, -0.013756268, 0.02756093, -0.03542511, 0.03283598, -0.09466054, -0.010495657, 0.0061038146, -0.005704556, -0.0053264704, 0.008765537, -0.0020779585, -0.062284313, 0.00350561, 0.009618498, 0.014603179, -0.018825639, -0.026593031, -0.009715288, -0.04311991, -0.0604937, -0.078109466, 0.019236997, -0.006902331, 0.01200195, -0.033174746, 0.027222166, 0.054395936, 0.033852275, -0.0125826895, 0.003284808, 0.025383156, -0.043216698, 0.021451065, -0.014615278, -0.068140104, -0.008481217, 0.0053355442, -0.06886603, -0.007924675, 0.056573708, 0.0316745, -0.049024094, 0.020410575, -0.014736266, 0.018910332, 0.02439106, -0.022007609, -0.015921941, 0.040579174, 0.054589514, -0.00047714406, 0.020216994, -0.031384133, 0.048201382, -0.024064394, -0.021269586, -0.02649624, -0.037820663, 0.0020522487, -0.05396038, 0.022310076, -0.007906526, -0.0576384, 0.02995648, 0.00040077078, -0.052072976, -0.01507503, -0.012304419, -0.023798222, -0.0326424, 0.05154063, 0.009551955, -0.0326424, 0.04503151, 0.05923543, -0.049895205, 0.0020522487, 0.019829836, -0.07418948, -0.022709334, -0.003992584, -7.476643e-05, -0.060542095, 0.030754996, -0.0121894805, -0.016345399, 0.029351544, -0.015087129, -0.010435163, -0.025479946, 0.026326858, -0.0074830707, -0.00021853349, 0.030464627, 0.024161184, -0.05154063, -0.043555465, -0.03295697, 0.05608976, 0.05434754, -0.039320905, 0.029908085, 0.012201579, 0.026205871, -0.0049907304, 0.0364898, -0.038328808, -0.040192015, -0.0121229375, -0.0100722015, -0.052411743, -0.010574299, -0.042950526, 0.0057378276, -0.024572542, 0.01987823, 0.0393935, 0.013514292, -0.041280903, -0.045249287, 0.010689237, -0.042877935, 0.019442676, 0.043966822, -0.0092131905, 0.012836764, 0.017760951, 0.05676729, 0.015353302, 0.02170514, -0.010199238, 0.034529805, 0.01795453, -0.056476917, 0.012606887, -0.015825152, -0.032884374, 0.04628978, -0.044571757, 0.03506215, -0.0074104783, 0.027633522, 0.05415396, 0.019249095, 0.044910524, 0.014070835, -0.008081959, 0.01161479, -0.026351055, -0.0032787586, 0.047765825, -0.08909512, -0.0078036874, -0.044523362, 0.017990826, 0.071140595, -0.0007705385, 0.024475751, 0.043918427, -0.06484925, 0.0123165175, -0.0016545027, 0.06373616, 0.026641425, 0.015232313, -0.030561417, -0.005199434, 0.040409792, -0.01709552, 0.015317005, 0.0066119614, -0.030851787, 0.06504282, 0.021305881, -0.031142157, 0.007537515, 0.039078932, -0.030996973, 0.051395446, -0.016103422, 0.07704478, -0.018208604, -0.030004876, 0.014687871, -0.040313, -0.03092438, 0.0089470185, 0.057590004, -0.033247337, 0.03723992, 0.0018798418, 0.018571567, -0.02804488, 0.06088086, 0.01930959, -0.0499436, 0.05415396, 0.0107315825, -0.014941944, 0.010289978, 0.013647378, 0.070947014, -0.027439943, 0.03600585, -0.039732262, -0.032981165, 0.018305393, -0.013913551, -0.037675478, 0.04975002, 0.044716943, 0.050911497, -0.018462677, -0.01968465, 0.04856434, -0.042587563, -0.005196409, -0.049411256, 0.018087616, 0.003263635, -0.062187523, 0.0011728216, 0.06891442, 0.013611083, 0.053524826, 0.0017391939, 0.0014163088, 0.053766802, 0.015704164, -0.0067268996, -0.0076040584, -0.0011145964, -0.03295697, -0.0079609705, 0.026641425, 0.03665918, -0.05831593, -0.04522509, -0.022237483, -0.072544046, 0.024149084, 0.005108693, 0.024342665, 0.0034330175, -0.0059223333, -0.081109956, -0.01478466, -0.061026044, 0.02036218, -0.035570297, 0.0086385, -0.037723873, -0.09015981, 0.019563662, -0.02448785, -0.0064970236, -0.013453799, -0.041885838, 0.015014537, 0.02736735, -0.024850812, 0.0088199815, -0.006388135, -0.009176894, 0.011487754, 0.009660844, -0.0030035123, 0.0014813395, 0.046676937, 0.038159426, 0.013804662, 0.0239918, -0.013296516, -0.030295245, -0.032569807, 0.0059677036, -0.02717377, 0.07883539, -0.0815939, 0.024705628, 0.038643375, -0.008015416, -0.023120692, -0.03794165, -0.031843882, -0.009908868, 0.016696261, -0.010023806, 0.032400426, -0.015643671, -0.032618202, -0.03513474, 0.009140599, 0.01968465, 0.0070898617, -0.015256511, 0.0075738113, -0.0035419061, -0.01834169, -0.013272318, 0.0019418477, 0.02045897, 0.009945164, -0.07293121, 0.017773049, 0.035376716, -0.0016726508, -0.011554297, -0.020870326, 0.005011903, -0.03215845, 0.046628546, 0.07375392, -0.02295131, -0.020555759, 0.003832276, -0.0027312906, -0.0047759777, 0.0018556443, 0.009515659, -0.0041256705, 0.045951016, 0.021342177, 0.0040288805, -0.0073983795, 0.027028585, 0.035594493, 0.017022928, 0.06059049, -0.046725333, 0.057493214, 0.024330566, 0.03053722, -0.0017906135, 0.03590906, -0.0068539362, 0.02910957, -0.0006121206, 0.0038655475, -0.0012476826, 0.05981617, -0.034360424, 0.0065998626, -0.012921454, -0.01286096, 0.0035509802, -0.0060281972, -0.035691284, 0.031335738, 0.008051711, 0.039998434, -0.011711581, -0.07931934, -0.04520089, -0.015244412, -0.027488338, 0.034844372, 0.043821637, -0.041111518, 0.03861918, 0.020108106, 0.022431064, 0.018874034, -0.07627046, -0.017990826, 0.032061663, -0.038836956, -0.04563645, -0.032981165, -0.03898214, -0.0067268996, 0.064123325, -0.031553514, 0.016006634, -0.035400912, -0.005634988, -0.061606783, 0.04829817, -0.0054202355, 0.027343152, -0.011076396, 0.033489313, 0.0012106302, -0.00094067707, 0.031045368, 0.0053839395, 0.008003317, -0.065575175, -0.027439943, -0.084836364, -0.015232313, 0.015970336, 0.0058709136, -0.032594007, -0.023447359, 0.018027123, -0.044692747, -0.025286367, -0.017627865, 0.0518794, 0.020955019, -0.01861996, -0.018402183, 0.004089374, -0.019515269, 0.06746258, 0.01305454, -0.023640938, 0.025020195, -0.020337982, 0.033465113, -0.006962825, -0.046507556, -0.027004387, -0.086578585, 0.01123368, 0.02572192, 0.016865645, -0.013465898, 0.017373791, 0.035183135, 0.024947602, 0.01123973, 0.0063820854, -0.045854226, 0.0182449, -0.057348028, -0.03658659, 0.019285392, -0.08130354, 0.00021702115, 0.008995413, -0.009969362, -0.049217675, 0.024257975, 0.019854033, 0.031311538, 0.00035048538, 0.0050965943, -0.051347055, -0.03503795, -0.030948577, 0.013042442, 0.022249583, 0.033271536, 0.0022367546, -0.026762413, 0.018172307, -0.010120596, -0.050863102, 0.03419104, 0.010683187, -0.031916477, 0.020398475, 0.030851787, -0.042805344, 0.025068589, 0.012243925, 0.051637422, 0.0028447162, 0.026762413, -0.006267147, 0.019466873, 0.03438462, 0.009443067, -0.04832237, 0.037506096, -0.05502507, 0.025020195, -0.004346472, 0.012570591, 0.0060644937, -0.03571548, -0.013223923, -0.03801424, -0.016768854, 0.004183139, 0.013865156, -0.013260219, 0.10743681, 0.035207335, 0.011862814, -0.016672064, 0.053621616, 0.00729554, 0.016768854, 0.013804662, 0.017543172, 0.015740462, -0.008106156, -0.019236997, -0.016381694, 0.05971938, -0.049120884, -0.050088786, -0.033561904, -0.0072471453, -0.029351544, 0.02910957, 0.017785149, -0.020809833, 0.013526391, 0.02315699, -0.04829817, -0.012897257, -0.02756093, 0.056138154, -0.0062489994, 0.04687052, 0.004966533, 0.003880671, 0.037506096, -0.03791745, -0.04350707, 0.017361691, 0.009328129, 0.032811783, 0.0124496035, -0.009963312, 0.0067450474, 0.009908868, -0.031335738, -0.02142687, 0.012643184, -0.048830517, 0.0101387445, 0.010834422, -0.021995509, 0.02419748, 0.04878212, -0.0364898, 0.0316987, -0.03295697, 0.037990045, 0.068430476, 0.009334178, 0.026036488, 0.012201579, 0.04425719, 0.09824177, -0.046507556, -0.005187335, -0.0041740653, -0.0075738113, 0.016587373, -0.016030831, -0.016853545, -0.017119717, -0.015498486, -0.0011924821, -0.013090837, 0.0017119717, 0.012044296, 0.0038897449, 0.041861642, -0.0028401793, 0.036199432, 0.0020008292, 0.029738704, -0.017337495, 0.049556438, -0.026955992, -0.012153184, 0.038667575, 0.0053325198, 0.054395936, -0.030222652, -0.01939428, 0.034747582, -0.0042859786, 0.054008774, -0.0011501365, -0.022043904, 0.0022170942, -0.01392565, -0.024899207, 0.038062636, -0.028698212, -0.0201686, -0.011106644, 0.0035570296, 0.005792272, -0.009721338, -0.010979607, -0.053137667, -0.008523562, 0.021281684, 0.06175197, -0.04493472, -0.037723873, -0.017990826, -0.07941613, -0.026544636, -0.017410086, 0.049895205, -0.0527989, -0.031166354, 0.009727387, -0.03995004, 0.020628352, 0.015946139, -0.0007425602, -0.0054867784, -0.04331349, 0.024052296, -0.049387056, 0.018559467, 0.011167137, 0.0014064786, 0.013514292, -0.02276983, 0.037723873, 0.012897257, -0.024802417, -0.03319894, 0.01583725, 0.018063419, -0.021922916, 0.00022269244, -0.012310468, -0.044136204, 0.038062636, -0.0027675868, -0.0057892473, -0.033150546, -0.017773049, -0.05212137, 0.009957263, -0.011941456, 0.0007557932, 0.05357322, 0.034747582, 0.013405404, -0.014760463, 0.05821914, -0.052072976, 0.0020416623, 0.014917746, -0.052314952, -0.0148935495, -0.026205871, 0.024306368, -0.0051782606, 0.026060686, 0.00059737527, -0.0007187408, 0.0011947505, 0.02036218, -0.016478484, 0.015873548, -0.0051903594, -0.02910957, 0.004261781, -0.0073015895, 0.013199725, -0.006974924, 0.029932283, -0.014990339, -0.021402672, -0.0060433205, -0.016369596, -0.0030519073, -0.023483654, 0.0144096, -0.005792272, -0.009612449, -0.016841447, -0.02717377, -0.003293882, 0.062477894, 0.019950822, -0.008154551, 0.048951503, -0.004397892, -0.032594007, 0.055557415, -0.0155589795, -0.025334762, 0.011475655, -0.02036218, -0.042297196, 0.03946609, -0.011100594, 0.0154258935, -0.035376716, 0.0071140593, 0.008844179, 0.022539953, 0.05255693, 0.011372816, -0.0014911697, -0.024560442, -0.0021142547, 0.0017785148, 0.02102761, -0.034118447, -0.0037022145, -0.003629622, 0.0046428917, -0.0075496137, -0.02171724, 0.052653715, 0.019430576, -0.0029747777, -0.011124792, 0.0034360422, 0.0037596836, -0.0022670014, 0.041692257, 0.030101666, 0.0060705426, 0.028214263, -0.014627377, 0.0070717135, -0.015909843, 0.036151037, 0.0060584443, -0.01094936, -0.047596443, -0.023253778, 0.07002751, 0.0068055415, -0.0143007105, -0.028407842, -0.02535896, -0.010235534, 0.026133278, -0.021814028, 0.010362571, 0.0017346569, 0.010870718, 0.0073136883, 0.024354763, 0.02927895, -0.02178983, -0.0139014525, 0.027778707, 0.008148502, -0.025455749, 0.051831003, -0.018668355, 0.014518488, 0.05744482, 0.0020809832, -0.020398475, -0.051589027, -0.010786027, -0.04520089, -0.06107444, -0.040579174, 0.026423648, 0.054395936, 0.00431925, -0.0614616, 0.04343448, 0.01861996, 0.012437505, -0.032473017, -0.0044795587, 0.010417015, 0.024378961, -0.07172133, 0.026859203, -0.0027297782, 0.0110642975, -0.014772561, 0.028190065, 0.050137177, 0.0050754216, 0.050911497, 0.01863206, -0.013756268, -0.011681333, -0.025213774, 0.01786984, -0.0044341884, 0.009382573, 0.020325884, 0.026762413, 0.019575762, 0.003992584, -0.006309493, -0.028238459, -0.00950961, -0.06271987, -0.031456724, -0.058993455, -0.042805344, -0.011106644, 0.0017149964, 0.049701624, 0.009618498, -0.025213774, 0.032231044, -0.015885646, -0.0033271536, -0.00012826554, 0.0022004584, 0.013030343, -0.0024469702, 0.0049120886, 0.016018732, -0.0029309199, 0.005943506, 0.008323933, -0.04053078, 0.0069567757, -0.0028235435, -0.0141676245, -0.005414186, 0.00056675036, 0.027633522, 0.008662698, -0.010900965, -0.017639963, 0.013986143, 0.021584153, 0.001810274, 0.012885158, -0.016212313, 0.0008264952, 0.005308322, -0.0036991898, -0.012594788, 0.009733437, 0.008457019, -0.007979119, -0.049701624, 0.017313298, 0.037046343, -0.041619666, 0.03293277, -0.023701431, -0.012534294, -0.031287342, 0.008626401, -0.065139614, 0.009715288, 0.02131798, 0.011082446, 0.035013754, 0.013163429, 0.025867106, 0.03015006, 0.034602396, 0.025431551, -0.061026044, 0.017918235, 0.020955019, 0.0336345, 0.037602883, -0.03353771, -0.029230556, 0.022588348, -0.007912576, -0.03849819, 0.009098252, 0.027294757, 0.06446209, -0.04053078, -0.013659477, 0.017591568, -0.046773728, -0.00091345486, 0.028940186, 0.0220923, -0.01892243, -0.024233777, 0.024185382, 0.006781344, 0.016212313, -0.02082193, -0.0066301096, -0.005199434, 0.021063907, -0.022249583, 0.06601073, 0.051250264, 0.018849837, -0.00045181232, 0.0046822126, 0.0026224018, -0.0032243142, 0.03295697, -0.00011815176, -0.0023516926, 0.027827103, -0.034747582, -0.028940186, -0.013393305, 0.0046126447, 0.00015170686, -0.0029959504, -0.01814811, -0.0036810418, -0.003898819, 0.016357496, 0.007065664, -0.04907249, -0.020398475, 0.008299735, -0.011457507, -0.023411062, -0.022781927, 0.06296185, 0.0040258556, 0.02995648, 0.033465113, -0.027343152, 0.028286854, 0.028093275, -0.020096008, -0.007942823, 0.0094128195, -0.014760463, -0.019176504, -0.0029657036, 0.0059616542, -0.0092797335, -0.042974725, 0.013429602, -0.016393794, 0.011838617, 0.019745143, 0.041038927, -0.030561417, 0.021753535, 0.0017921259, -0.008626401, -0.0155589795, -0.011415161, 0.018196505, 0.047112495, 0.038183622, 0.001178871, 0.004918138, 0.13811922, 0.007289491, 0.011874913, 0.027875498, 0.0122499745], [0.023974752, -0.005470337, -0.024582893, 0.027062234, 0.022045078, 0.018524881, -0.030056152, -0.00038922427, 0.024232043, 0.035272125, -0.046546105, 0.007578361, 0.023670683, -0.0050405455, -0.005999536, 0.037961975, 0.0034441778, -0.0040084617, 0.005821187, -0.053984124, -0.028512413, -0.023553733, -0.08209891, 0.028442243, 0.0006658841, 0.015682997, -0.008233281, 0.013507727, -0.024278823, 0.026594432, 0.038406383, 0.00402308, 0.056650586, -0.034149405, -0.027600203, -0.046920344, -0.0012564817, 0.043458626, -0.053984124, -0.026804943, -0.009934904, 0.0071573406, 0.025799172, -0.017308602, -0.044230495, 0.015893506, -0.023097627, -0.013402471, 0.0026547653, -0.038757235, 0.016641987, -0.026313754, -0.00063335744, -0.015554352, -0.035108395, -0.003429559, 0.048885107, -0.08981761, -0.001862429, -0.020945746, -0.036581963, 0.023074238, 0.044674903, 0.016209273, -0.011309066, -0.00043161865, -0.0008011076, 0.038195875, 0.027319523, 0.040932506, -0.014139256, 0.055808548, 0.016829107, -0.005473261, 0.003628374, -0.035950433, 0.09079999, 0.0011519577, -0.0018712002, 0.004294989, 0.004870968, -0.021448633, 0.016337916, 0.003362313, 0.047247805, 0.0077713286, 0.024348993, -0.10403873, -0.020618288, -0.021425242, 0.038382996, -0.012034156, 0.020466253, -0.023811022, -0.050007824, 0.028489023, 0.0070111533, -0.003698544, -0.022454403, -0.014618752, 0.003067014, -0.0076426836, -0.08743183, -0.042616583, 0.038406383, 0.019706078, 0.06404183, -0.016454866, 0.020863883, 0.1340715, 0.025565272, 0.015858421, -0.034032453, 0.013917051, -0.022711692, 0.06436928, -0.009157186, -0.049306124, -0.038453165, 0.011092708, -0.114611015, -0.014267902, 0.07040391, 0.053563107, -0.028910043, 0.01569469, -0.005596058, -0.017881658, 0.012501956, -0.014431631, 0.0074204784, 0.07952601, 0.044978976, 0.031132093, 0.060720447, -0.027132403, 0.033541262, -0.027857494, -0.011162879, 0.022559658, -0.045563724, -0.0013573511, -0.022898812, 0.017577587, -0.05875569, 0.010040158, -0.01569469, -0.016127408, -0.056089226, -0.064883865, 0.019893197, -0.010893893, 0.012139412, 0.031202264, 0.021238122, -0.051270887, 0.039692834, 0.039552495, 0.0071397983, 0.027319523, 0.007917516, -0.08499927, 0.061468925, 0.014724007, 0.036114164, -0.036090773, 0.022875423, -0.015636217, -0.033213805, 0.023167798, -0.009472951, -0.019530652, -0.012197887, -0.016022151, -0.040488094, 0.032208033, 0.040464703, 0.028676143, -0.07732735, -0.058896028, -0.030640904, 0.016700462, 0.018138947, -0.039365374, -0.035856873, 0.06605337, 0.061796386, -0.007180731, 0.043669134, -0.06254487, -0.010531349, -0.037213493, -0.040417925, -0.048604425, -0.020173877, -0.031225653, -0.021507107, -0.020244047, 0.017893352, 0.007911668, 0.026734773, -0.06698897, 0.0036605354, -0.056744147, -0.045283046, 0.0067129307, 0.016185882, 0.016291136, 0.033003293, 0.034921274, 0.024255432, 0.030477174, -0.0011526885, -0.0017103939, -0.014431631, 0.020665068, -0.038640283, -0.0036166792, -0.019074548, -0.031482942, 0.08883523, -0.015718082, 0.013928747, 0.014922822, 0.016723853, 0.027202573, 0.030430393, -0.0005017886, -0.0026299134, 0.017051311, 0.016150797, -0.032441933, -0.008858964, -0.018793868, -0.044394225, -0.009209814, 0.0074964957, -0.000112381655, 0.05978485, 0.039014526, 0.0028872034, 0.042195566, -0.029448014, -0.004213124, -0.025518494, 0.043762695, 0.0022293597, -0.048089847, -0.046967126, -0.0010934826, 0.032488715, 0.004648763, 0.042172175, 0.039154865, -0.009712699, 0.042523026, -0.022933898, -0.023998143, 0.0048066457, 0.035295513, -0.016899277, 0.010712621, 0.010695078, 0.039341986, -0.0035465092, -0.043224726, 0.038429774, -0.041026063, -0.064696744, -0.019635906, 0.024863573, -0.018840646, 0.038476553, 0.08673013, 0.033237193, 0.016969446, 0.07657887, 0.018571662, -0.021729313, 0.043926425, 0.037377223, -0.0025202727, 0.0038505793, 0.040768776, 0.055293966, 0.042873874, 0.011297371, -0.047130857, -0.044441003, 0.017612671, -0.015905201, -0.021425242, -0.012420092, 0.041213185, 0.014665532, -0.0077011585, 0.025588663, -0.012735857, -0.012724161, -0.011127794, -0.0006370121, 0.018864037, -0.040488094, -0.013811797, 0.008145568, 0.045844406, 0.017612671, 0.09430849, -0.010525501, -0.059457388, 0.059504166, -0.0034061691, -0.06259165, -0.046054915, 0.019635906, -0.009151339, -0.021004222, -0.010601519, 0.058053985, -0.049680367, 0.00067977194, -0.06319979, -0.09861225, 0.040862333, 0.022758473, 0.004216048, 0.018805562, -0.044090156, -0.035856873, -0.013039926, -0.06792457, 0.015215197, -0.023191188, -0.0049352907, -0.028372074, -0.09398103, -0.018735392, -0.037213493, -0.016560122, -0.008467181, -0.055527866, -0.012279752, -0.020922357, -0.023214577, 0.00081791915, -0.052767847, -0.018992683, 0.020934053, 0.020770323, 0.0026781552, 0.0013792792, 0.06619371, 0.0027307828, 0.005023003, -0.019249972, -0.022793557, -0.032652445, -0.028184954, -0.0061808084, 0.024232043, 0.055527866, -0.056136005, 0.035085004, 0.029331064, -0.010040158, -0.048978664, -0.009607444, -0.020290827, -0.0028857416, 0.023354918, -0.021694228, -0.006397166, -0.022372538, -0.067409985, -0.019518957, -0.009233204, 0.012408396, -0.0010817876, 0.00034043417, 0.018676918, -0.027693763, -0.07452055, 0.0028038765, 0.004543508, -0.0061691133, 0.006519963, 0.00071960804, -0.007940906, 0.026968673, 0.0045756693, -0.013577896, -0.015741471, -0.00019424666, -0.012548736, 0.033588044, 0.06404183, -0.034827713, -0.00060960196, 0.002341924, -0.011385084, 0.0029222884, -0.016875887, -0.024185263, -0.015215197, 0.047715604, -0.023740852, 0.005867967, -0.025635444, 0.011847036, 0.041844714, 0.032441933, 0.039575886, -0.009993379, 0.035295513, 0.013636371, 0.036020603, -0.009163033, 0.070918486, -0.006011231, -0.0020539346, 0.055902105, -0.023366613, -0.005455718, 0.021378463, -0.027646983, 0.052533947, -0.037961975, 0.017168261, 0.0059322896, -0.019682687, -0.016758937, 0.008607521, 0.013566202, 0.001018196, -0.028886653, -0.098892935, -0.023226272, -0.06301267, -0.003572823, 0.046382375, 0.022898812, -0.004751094, 0.048931886, 0.019413702, -0.051083766, -0.009291679, -0.07723379, -0.015051466, 0.014805872, -0.031927355, -0.049352907, -0.0017747164, -0.09505697, 0.0072275107, 0.033377532, -0.015823336, 0.044090156, -0.008391163, 0.051224105, -0.059036367, 0.0053563104, 0.0010949445, 0.052861407, -0.028699534, 0.023085933, -0.003125489, -0.026290363, 0.015484182, 0.0045727454, 0.007519886, -0.017378772, 0.028068002, -0.056978047, 0.018361151, -0.003757019, -0.040558264, -0.006455641, 0.010285754, 0.052019365, -0.026407313, -0.059597727, -0.002939831, 0.015916897, 0.061796386, 0.022828642, -0.016513342, 0.019904893, -0.012911282, 0.025775783, -0.015215197, 0.008607521, 0.043177944, 0.040067073, -0.012034156, 0.009548969, -0.008227433, -0.002610909, -0.028863262, 0.031646673, 0.033424314, 0.005751017, 0.028418854, 0.030570734, 0.043482013, 0.029003603, 0.010075243, -0.016326223, -0.037073154, 0.008297604, -0.009554816, 0.0002620411, -0.031950742, -0.051598344, 0.008584131, -0.022009993, 0.039295204, 0.0035055766, 0.021659143, 0.035599586, 0.010999149, -0.011373389, -0.020828797, -0.052580725, 0.031225653, 0.013554507, 0.0020817101, 0.017647756, 0.021027612, -0.041727766, -0.051458005, -0.014712311, -0.012817722, -0.015074857, -0.002893051, 0.038546726, -0.018162336, 0.036488403, 0.0118587315, -0.022887118, 0.011578051, 0.006192503, 0.045727454, 0.0038710455, -0.016197577, -0.014092477, 0.043786086, 0.039154865, 0.004739399, -0.012583821, 0.0142795965, -0.030056152, 0.025307983, -0.0077537857, 0.028161563, -0.016864192, -0.0049089766, -0.041634206, -0.018676918, 0.014302987, -0.020255743, -0.009426171, 0.0053007593, 0.055106845, 0.034149405, -0.015905201, -0.028208343, 0.016349612, 0.016525038, 0.006145723, 0.0050405455, 0.012548736, -0.015951982, 0.006654456, -0.008718624, -0.0009049007, 0.062357746, -0.008929133, -0.061562486, -0.018396238, -0.0083560785, -0.032675833, -0.0064205555, 0.037283663, -0.024068313, 0.0071631884, 0.034897882, 0.014022307, -0.041002676, -0.026056463, 0.0047744843, 0.0032570579, 0.042406075, -0.003561128, -0.027413083, 0.012279752, 0.00087200856, -0.026454093, 0.008344383, -0.004543508, 0.027740544, 0.025682222, -0.026945284, 0.026266973, 0.0044060918, -0.0024734929, -0.0011746167, -0.0007543276, -0.049961045, 0.013133487, 0.040113855, -0.030500563, -0.032324985, 0.018384542, -0.026500873, 0.018536577, -0.042523026, 0.0023199958, 0.07671921, 0.030243274, 0.019694382, 0.075035125, 0.039763004, 0.057586186, -0.030734463, 0.034687374, 0.041774545, -0.024746623, 0.0136246765, -0.022781862, 0.017448941, -0.027740544, 0.015063162, -0.015367231, -0.038944356, 8.588516e-05, 0.026758162, 0.012022462, 0.032465324, -0.019039461, -0.007391241, 0.027646983, 0.019600822, 0.028629363, 0.028114783, -0.038078923, -0.010630757, 0.040909115, 0.014840957, 0.0075725135, -0.054030906, -0.017975217, 0.020173877, -0.0068181856, 0.048557647, -0.0040435465, 0.00038666598, 0.002762944, -0.0059205946, -0.036488403, 0.026711384, -0.013729932, -0.0136246765, 0.0013127639, -0.009139644, -0.009303373, -0.021460328, -0.026571043, -0.015881812, 0.018899122, 0.021893043, 0.07573683, -0.011794409, -0.09384069, -0.056837708, -0.042803705, -0.016852496, -0.030360224, 0.061843168, -0.032278202, -0.018571662, -0.041610815, -0.027974444, 0.0028652754, -0.026687993, 0.0034120167, -0.012618907, 0.0014764939, 0.00055258884, -0.018396238, -0.020208962, 0.059176706, -0.051130544, 0.015659606, 0.041657593, 0.028044613, 0.002445717, -0.019004377, -0.036441624, 0.029331064, 0.025003912, -0.028044613, 0.0072450535, 0.024746623, 0.012583821, 0.031061923, -0.0034178642, -0.0049703754, -0.043598965, -0.07115239, -0.049306124, 0.0086133685, -0.015051466, 0.013870272, 0.053142086, 0.023273053, 0.0036254504, -0.027483253, 0.017437248, -0.075690046, 0.051130544, 0.030219883, -0.009689309, 0.0034880342, -0.015554352, 0.0057042367, -0.033167023, -0.0060930955, -0.001299607, 0.039669443, -0.007379546, 0.008098789, 0.000983842, 0.010502111, -0.0032570579, -0.0011497649, -0.011244744, -0.005148724, 0.013414167, 0.016817411, 0.017881658, -0.0038154942, -0.021191342, -0.021062698, -0.037073154, 0.0004612216, 0.014139256, 0.042195566, -0.017811486, -0.021670837, -0.002284911, -0.023308137, -0.0019209039, 0.033868723, -0.006929288, -0.0011541505, 0.047177635, 0.0038242654, -0.008256671, -0.0028886653, -0.017963521, 0.00026569582, 0.032769393, -0.008958371, -0.030079544, 0.031412773, 0.006017078, -0.020127097, -0.06357402, 0.022781862, 0.034547035, 0.024793403, 0.055293966, -0.008379469, -0.012724161, 0.036348063, -0.025869343, 0.0048329593, -0.008888201, -0.048043065, -0.0043066842, -0.0006249516, -0.006344538, 0.00043600428, -0.024886962, 0.06418217, 0.012946366, -0.003853503, -0.0016533808, -0.0059176707, -0.013460946, 0.011782714, 0.020477947, 0.043856256, -0.0023097629, 0.042406075, -0.008239129, 0.044487786, 0.008052008, 0.0054177092, 0.013449252, 0.013215352, -0.038944356, -0.007128103, 0.041493863, -0.00012773134, -0.038944356, -0.011741782, -0.046896957, -0.043084383, 0.029471403, 0.026173413, 0.037447393, 0.0027892578, 0.07915177, -0.011309066, 0.030523954, 0.020454558, 0.013180266, 0.019507263, 0.025635444, 0.00096045196, -0.06034621, 0.012338227, -0.010104481, 0.025822563, 0.060205866, 0.0056983894, -0.012022462, -0.021214733, -0.041727766, -0.010975759, -0.045867797, -0.025635444, -0.0025202727, 0.038499944, 0.0006044854, -0.023998143, 0.022793557, 0.030898193, 0.031132093, -0.009051931, -0.008268366, 0.017016226, 0.006011231, -0.054779384, 0.036254503, 0.00029401964, 0.010502111, 0.023623902, -0.012045851, 0.030968364, 0.025916124, 0.022431012, 0.057445846, -0.010320839, -0.053750224, -0.020945746, 0.034196183, -0.018290982, 0.012408396, -0.005385548, 0.039716225, 0.00087931793, -0.043037605, 0.017940132, -0.012396702, 0.0064264033, -0.039716225, -0.0065141157, -0.059083145, -0.013028231, -0.021472022, 0.024933742, 0.06254487, 0.022664912, -0.027272742, 0.020758627, -0.034476865, 0.021132868, -0.039061304, 0.0078064133, 0.012525346, 0.0005226204, -0.0013449251, -0.032137863, -0.035482634, 0.008069551, -0.020583203, 0.0086133685, -0.005800721, -0.0073678507, -0.029120553, 0.0065667434, -0.021846263, 0.018864037, 0.021109477, -0.018115558, -0.016641987, -0.009853039, 0.019682687, 0.004414863, 0.020162182, 0.0034734155, -0.042499635, 0.022922203, -0.007929211, 0.0044528716, 0.0038564266, 0.023202883, 0.0037190104, -0.043879643, -0.0032570579, 0.041423693, -0.020629982, 0.021425242, -0.032488715, -0.013729932, -0.002388704, 0.016910972, -0.021448633, 0.0070930184, 0.0015452021, 0.014115866, 0.028863262, -0.021846263, -0.009554816, 0.035131782, 0.030570734, 0.029611744, -0.046522714, -0.024770012, 0.011700849, 0.019413702, 0.009782868, -0.011244744, -0.016408088, 0.0017396314, 0.041072845, -0.012303141, -0.012420092, 0.012431786, 0.06301267, 0.012630601, -0.018676918, 0.0046341443, -0.041470475, -0.032254815, 0.065024205, 0.018302677, -0.021062698, -0.029401233, 0.027062234, -0.019752856, 0.023787633, -0.012268056, 0.010162956, 0.010168804, 0.023506952, 0.003300914, 0.044768464, 0.034663983, -0.021776093, 0.004745247, 0.0017118558, 0.006876661, 0.0005829227, 0.032652445, -0.07288325, -0.051925804, 0.0072392058, -0.058568567, -0.0073386133, 0.0034412541, -0.008151416, 0.015846727, 0.013343996, 0.019589128, -0.029424623, 0.008379469, 0.050054606, 0.040979285, -0.010010921, -0.015542657, 0.005151648, -0.009572359, -0.020127097, 0.0063737757, 0.041891493, 0.0038739692, 0.012291446, 0.021904737, -0.058194328, -0.026500873, 0.043482013, -0.0009940751, 0.003198583, -0.0025729004, 0.013379081, 0.009905666, -0.013636371, -0.0028623515, -0.0114026265, 0.0018551196, -0.0034441778, -0.019869808, 0.037774853, -0.0066427607, 0.011256439, -0.009706851, 0.0009765326, 0.0029793016, -0.011899664, -0.035693143, -0.0015656683, 0.010046006, 0.041704375, 0.024559503, 0.015975371, 0.0046546105, 0.08602843, 0.0053241495, -0.021121172, 0.005259827, -0.028114783], [0.0053123767, -0.009773032, -0.012626608, 0.018402146, 0.04471224, 0.01363997, -0.013055577, -0.00051872607, -0.023350833, -0.014348701, -0.03260164, 0.0046067536, -0.011998697, 0.0022225566, 0.015069867, 0.03899266, -0.026906922, 0.02648417, -0.0009014565, -0.05853872, 0.011706501, -0.07385726, -0.0134907635, 0.007752526, 0.037276782, 0.007404377, 0.007435462, 0.036655087, -0.02010559, 0.006478053, 0.047447696, 0.029194757, 0.042125996, -0.036107995, 0.011227797, 0.044140287, -0.03526249, 0.038196888, -0.05077998, -0.0116070295, -0.042250335, -0.012713646, -0.01146404, -0.03583445, 0.01636299, 0.016736006, -0.010755309, 0.023748716, -0.019633101, -0.040559325, -0.03839583, -0.036530748, 0.010587451, -0.009605175, -0.023039985, 0.054957762, 0.046826005, -0.16760874, 0.028398989, 0.020118022, -0.06644667, 0.048243467, -0.0070873136, -0.04394134, -0.058140837, -0.046801135, 0.012632825, -0.016238652, 0.0105252825, 0.026409568, -0.0050077466, -0.008672633, 0.015318544, 0.01930982, 0.012943672, -0.042324938, 0.058290042, 0.030313807, 0.015592089, -0.03961435, 0.040808003, -0.031781007, -0.012931238, -0.017904792, 0.028995816, -0.0011283748, 0.040061973, -0.09509434, -0.05341596, -0.0011602367, 0.0076033194, -0.0040565543, 0.02660851, 0.003142664, -0.022816176, 0.00994089, -0.0010755309, 0.018563787, -0.02471856, 0.0083493525, -0.03160693, -0.020155324, -0.03615773, -0.050357226, 0.0040689884, 0.024967236, 0.035809584, -0.046353515, 0.034466725, 0.039813295, 0.033347674, -0.0037394904, 0.013453461, -0.0044793063, -0.032029685, 0.015480184, 0.027851898, 0.015243941, -0.005156953, -0.0008524981, -0.08330701, -0.022567498, 0.058787398, -0.006801334, -0.0054584746, -0.0027230205, 0.0044513303, 0.047596905, -0.013876214, 0.02815031, 0.030313807, -0.0060459757, 0.045831293, 0.030786294, 0.037923343, -0.02926936, 0.041280493, -0.01227846, -0.017892357, 0.004557018, -0.033745557, -0.038918056, 0.002719912, 0.06221915, 0.004768394, -0.009213507, 0.004522825, 0.0155423535, -0.03648101, -0.029393699, 0.0046720314, 0.00067065255, -0.048815425, 0.037351385, 0.044140287, 0.008896443, 0.016686272, 0.061025497, -0.03150746, 0.011756237, -0.0076965736, -0.07649325, -0.018190771, 0.041280493, -4.6141362e-05, -0.03183074, 0.061721794, -0.037102707, -0.044289492, 0.0188622, -0.006900805, -0.04555775, -0.025203481, -0.015318544, -0.003941541, 0.020329399, 0.03217889, 0.06202021, -0.039937634, -0.018327544, 0.0018510943, 0.026235493, 0.062268887, -0.034267783, 0.00031201277, -0.015343412, -0.015144469, 0.0065340055, 0.08231231, -0.04409055, -0.0279265, -0.01636299, 0.014771453, -0.074553564, 0.0061951824, -0.049636062, -0.003043193, -0.020739717, -0.0021448447, 0.014075155, -0.0317064, -0.010307689, -0.0056232237, 0.040360384, -0.07952712, -0.023350833, 0.06898318, -0.013080445, -0.0036306938, -0.015144469, 0.034914345, -0.008666417, 0.022791307, -0.034715403, -0.0716689, 0.049263045, -0.04831807, 0.03640641, -0.017021986, -0.05998105, 0.071818106, -0.010680705, 0.0026328748, 0.014796321, 0.0072738216, 0.04844241, -0.012657693, -0.02949317, -0.0038140935, -0.016561933, 0.012993407, -0.056201153, -0.013130181, 0.018053997, -0.031134443, 0.04349372, -0.0331736, 0.034665667, 0.038370963, -0.017531775, 0.04463764, 0.050232887, -0.008119326, -0.018290242, 0.03474027, 0.07107208, 0.013428594, -0.04677627, 0.02471856, 0.0070437947, -0.03526249, -0.024818031, 0.05187416, 0.035237625, -0.0008820286, 0.046577327, -0.012626608, -0.029244494, -0.0026639595, 0.005368329, -0.0022272193, 0.023848187, 0.009474619, 0.0641091, 0.006008674, 0.012098168, 0.029120155, -0.028672535, -0.04632865, -0.044463567, 0.032104287, -0.09395042, 0.009082952, -0.0153061105, 0.050481565, 0.008007421, 0.041554037, 0.003736382, -0.022679403, 0.031905346, 0.02815031, -0.00067686953, 0.004693791, 0.01921035, -0.0024743427, 0.00096518017, 0.04175298, -0.007124615, -0.040434986, 0.0105252825, -0.010394726, -0.04953659, 0.047820713, 0.048691086, 0.033695824, -0.015231507, -0.02837412, 0.019943949, -0.050581038, 0.0043363166, 0.017382568, -0.019384423, -0.016599234, -0.061473116, 0.009729514, 0.03396937, 0.026185758, 0.06555143, -0.033024393, 0.0035933922, 0.058638193, 0.030686824, -0.009549222, -0.05824031, 0.0063288463, -0.0043674014, 0.016648969, 0.02471856, 0.07957685, -0.008952396, -0.03717731, -0.01888707, -0.05833978, 0.030910634, 0.021771729, -0.0146968495, 0.0128069, -0.01853892, -0.02059051, 0.0081690615, -0.058041368, 0.020093154, -0.027553486, 0.03817202, -0.038445566, -0.04431436, -0.015492618, -0.022778874, 0.03551117, -0.019073576, -0.01107859, -0.011787321, -0.008280966, -0.0077960445, 0.012931238, 0.008057157, -0.03237783, -0.03896779, 0.010419594, 0.0057475623, 0.001591537, 0.04060906, 0.034790006, 0.035610642, 0.060378935, -0.008237448, -0.020242361, -0.043792136, -0.03896779, 0.0075100656, 0.037997946, -0.0512276, 0.0050419397, 0.078184254, 0.014982829, -0.117574796, -0.013304255, -0.0031395555, -0.040061973, 0.049064104, -0.004193327, 0.064208575, 0.016835477, -0.051028658, -0.011917877, -0.018514052, 0.037550326, -0.02087649, -0.016052144, 0.007006493, -0.043717533, -0.012918805, -0.041653506, 0.004124941, 0.017009553, 0.037351385, -0.07505092, 0.009002131, 0.05366464, 0.010593669, -0.0034037754, 0.0029468304, -0.0005362112, -0.04854188, -0.036381543, 0.04118102, 0.0084053045, 0.042598482, -0.026732849, 0.011103458, 0.0056232237, 0.009362714, 0.009934672, -0.027777296, 0.05386358, -0.018787598, 0.030960368, -0.025128877, -0.014100024, 0.05600221, -0.0068448526, 0.04809426, -0.05187416, 0.014274098, 0.030487882, 0.0075038485, -0.0074105943, 0.003941541, 0.008958613, 0.031631798, 0.011128325, -0.003195508, 0.012471185, 0.058041368, 0.014050288, 0.040012237, -0.031109575, 0.023487605, -0.029642377, -0.06376095, -0.036903765, 0.04254875, 0.0010071446, 0.017307965, 0.0074665467, -0.09962027, -0.019446593, 0.0022645209, 0.0012550451, 0.043070972, 0.021112733, -0.029070418, 0.016437594, 0.0047186585, -0.010065229, -0.008554512, -0.023164324, 0.017419871, 0.048914894, -0.016014842, -0.05465935, -0.014982829, -0.064805396, -0.04453817, 0.05843925, -0.021062998, 0.026683113, -0.0017252013, -0.001433005, -0.05555459, -0.009474619, 0.009418666, 0.026136022, -0.03195508, 0.03319847, 0.006014891, -0.0090145655, 0.08828057, 0.011439173, 0.03183074, -0.007404377, -0.016014842, -0.09061814, -0.05197363, -0.008343136, -0.047596905, -0.05978211, -0.02170956, 0.044239756, 0.02465639, 0.020689981, -0.005704044, -0.0006485047, 0.013204784, 0.044761978, 0.03506355, -0.05898634, 0.014560077, 0.055952474, -0.05933449, -0.035884187, 0.017593944, -0.0015425786, -0.015641825, 0.027105866, -0.036058262, -0.03717731, -0.036804292, -0.013291821, 0.035809584, 0.034690533, 0.026906922, 0.037799004, 0.059931315, 0.008641548, 0.001558121, -0.010910733, -0.025564063, -0.007429245, 0.019720139, 0.012197639, 0.005051265, -0.07783611, 0.0046968996, -0.015554788, 0.010034144, 0.030264072, 0.064855136, 0.017220927, 0.0035871752, -0.01988178, -0.018352412, -0.037152443, -0.033496883, -0.024643956, 0.0123965815, 0.011358352, -0.0111345425, 0.0037115142, -0.05520644, -0.009238375, -0.017942093, -0.04239954, -0.030537616, -0.011283749, 0.0013568475, 0.04053446, -8.970853e-05, -0.05888687, 0.04508526, 0.008498559, 0.08967316, 0.014348701, 0.011843273, -0.005554837, 0.019707704, -0.015355846, 0.0052657495, -0.060776822, 0.020416437, -0.0445133, 0.027528618, -0.020640247, 0.018302675, -0.017556643, 0.0005956607, -0.021187337, -0.044115417, -0.0022956056, -0.0007289364, 0.04396621, -0.02315189, 0.014373569, 0.07246467, -0.012340629, -0.042175733, 0.04498579, 0.01764368, 0.02042887, 0.012321978, 0.033670954, 0.03128365, -0.021622522, -0.029145021, 0.019620668, 0.08788268, -0.0035281144, -0.071221285, -0.027976237, 0.006397233, -0.009281893, 0.009679778, 0.012595523, -0.035884187, 0.016226217, -0.016450027, -0.0429715, -0.025887344, 0.005890552, 0.01040716, 0.002971698, 0.030015394, 0.0042368458, -0.00084550405, -0.01335399, 0.018290242, 0.025240783, 0.0127012115, 0.009207291, 0.0037519243, 0.01969527, -0.020901358, 0.0047248756, -0.0061236876, -0.060478408, 0.019197915, 0.013814044, -0.02916989, -0.006471836, 0.016114313, -0.039539747, -0.030711692, 0.002569151, -0.0407334, 0.0023406786, -0.041703243, -0.010923166, 0.034591064, 0.00035184005, -0.006353714, -0.02081432, 0.006782683, 0.07634404, -0.033472013, -0.015156903, 0.020018551, -0.018551353, 0.011843273, -0.0058843354, -0.011575945, -0.017593944, -0.0022023516, -0.0075349333, -0.035610642, -0.019297387, -0.014883358, -0.003447294, 0.051575746, -0.03449159, 0.02737941, 0.0046502724, 0.0066210427, 0.017071722, 0.029766716, -0.015418015, -0.027255071, 0.020864056, 0.014970395, 0.047969922, -0.028100576, -0.005402522, 0.035436567, -0.030811163, 0.015654258, 0.020702416, -0.018240506, 0.027031261, 0.018078865, -0.019794742, 0.0017003336, -0.033297937, -0.03250217, -0.024519617, 0.010351208, 0.007230303, -0.02180903, -0.015069867, -0.0071681337, 0.005517536, 0.0033664738, 0.08161601, -0.05545512, -0.033472013, -0.012060867, -0.060378935, -0.018078865, -0.016785743, 0.05286887, -0.028001105, -0.029841319, -0.004575669, -0.039440278, -0.0041373745, 0.0020780128, -0.031930212, -0.015952673, -0.020404002, -0.013391292, 0.00045383672, 0.032875188, 0.007242737, -0.034715403, -0.018812465, 0.02548946, 0.03672969, -0.014087589, 0.025340253, -0.066944025, 0.005511319, 0.010133615, -0.016736006, -0.0467514, -0.03506355, -0.01235928, 0.016375424, 0.025041841, -0.0021479533, 0.030587353, -0.032551907, -0.014012986, 0.026633378, 0.011662982, -0.0033602568, 0.050232887, 0.0077214413, -0.0002445978, -0.0377244, -0.00091544463, -0.039017525, -0.0041125068, 0.006944324, -0.0072862552, -0.028573064, -0.00043829437, -0.016387857, -0.019396858, 0.01569156, 0.0081690615, 0.039141864, -0.0013133289, 0.0012014239, 0.012918805, -0.008784538, -0.0053061596, -0.013751875, -0.025464593, 0.003487704, -0.0023329074, 0.021013262, 0.035237625, -0.018712994, -0.037102707, -0.024071997, -0.05010855, -0.02705613, 0.0011167182, 0.03563551, -0.056648772, -0.032427568, 0.0098600695, -0.017519342, 0.0078084785, 0.058140837, 0.0054056305, -0.016213784, 0.043991078, -0.0019738788, -0.027901633, 0.037799004, -0.02815031, 0.009592741, 0.02750375, 0.022517763, -0.042125996, -0.00044489987, 0.005554837, 0.01636299, -0.021125168, 0.03449159, 0.011582162, -0.0023484498, 0.07445409, -0.040434986, 0.006938107, 0.0025940188, 0.0035933922, 0.047721244, 0.0027509967, -0.050730243, -0.016412726, -0.0098600695, -0.023711415, -0.014087589, -0.011569728, 0.039589483, 0.008268532, -0.0036493447, -0.008852925, -0.010836129, -0.0005603019, 0.006670778, 0.014373569, -0.0052315565, 0.0126452595, 0.009884937, -0.026807452, 0.04098208, -0.026011683, 0.00613923, -0.0012503824, -0.02087649, -0.031781007, 0.01380161, 0.042772558, -0.015641825, 0.0010055903, 0.023761151, -0.0121603375, -0.024681257, 0.048790555, 0.02805084, -0.015679127, -0.008647766, -0.005511319, 0.0030882657, 0.00463473, 0.0013980347, 0.003447294, -0.011768671, -0.02241829, 0.037600063, -0.011899226, 0.06500434, -0.050581038, 0.058638193, 0.050406963, -0.019583365, -0.004584994, -0.0037270566, -0.024146602, -0.036829162, -0.022219349, -0.02103813, 0.010009276, 0.013776743, 0.048939764, -0.044587906, 0.014124891, 0.008430173, -0.0029670354, 0.0013941491, 0.00092787854, -0.009605175, 0.012545788, -0.01921035, -0.0028644558, 0.036829162, -0.0005898323, -0.010338774, -0.014721718, 0.028871477, 0.016972251, 0.013702139, 0.00622005, 0.0022691838, -0.025128877, -0.043145575, 0.06982869, -0.028349254, 0.034392122, 0.025862476, 0.02241829, 0.023015117, -0.043344516, 0.020167759, -0.017121457, -0.019583365, -0.0821631, -0.02193337, -0.06679482, -0.016288387, 0.0043021236, 0.014883358, 0.035933923, 0.0256138, 0.0044886316, 0.027851898, -0.024382845, 0.00888401, -0.004824347, -0.003683538, 0.007640621, -0.053614903, -0.015902936, 0.029915923, -0.03158206, 0.012732296, 0.0022691838, -0.05565406, 0.025439724, 0.0076965736, -0.0047901534, 0.014522775, 0.019222783, -0.009145121, 0.023562208, -0.0011928757, -0.018775163, 0.0014135771, 0.0041498085, 0.018613523, -0.02994079, 0.013677271, 0.0045725605, 0.016288387, 0.018029131, 0.01272608, 0.020018551, -0.01770585, 0.018712994, 0.011694067, 0.04130536, 0.04028578, -0.0211003, 0.038445566, -0.04419002, -0.030910634, 0.0035809583, -0.009648694, -0.018066432, -0.011756237, -0.0060335416, 0.005309268, 0.05630062, 0.02142358, 0.023077287, 0.0025473917, 0.030885765, 0.010357425, -0.019807175, 0.02020506, 0.03777414, 0.037127573, 0.008094458, 0.002679502, -0.032775715, 0.014535209, -0.004134266, -0.042225465, -0.033670954, 0.017755585, 0.07723928, 0.017544208, -0.04351859, -0.030040262, -0.026658244, -0.0071619167, -0.013913515, 0.012918805, -0.02628523, -0.018613523, -0.00067648094, -0.03185561, -0.0029483845, -0.001802913, -0.016474895, 0.0148211885, 0.025738139, -0.014361135, 0.04665193, -0.002831817, 0.006832419, 0.040136576, -0.010388509, 0.033894766, 0.010090096, 0.03583445, 0.004998421, 0.008995915, 0.05301808, -0.027031261, -0.004700008, 0.010730441, 0.016350556, -0.012844201, 0.031358253, 0.01914818, -0.014957962, -0.024643956, 0.03416831, 0.010158482, -0.025514329, 0.023288663, -0.016835477, 0.008392871, -0.042598482, -0.009785466, 0.0505313, 0.027802162, -0.0031411096, 0.013776743, -0.07554828, 0.025588932, 0.032079417, -0.02805084, -0.0039633, 0.017469605, 0.0066521275, 0.018402146, -0.00039691286, 0.0059060943, -0.011115892, -0.013018276, 0.0051196516, -0.028249782, 0.028622799, 0.054709084, -0.027652957, -0.024805596, 0.004544584, 0.028995816, -0.021784164, 0.018974105, 0.0110102035, 0.03197995, 0.01770585, 0.018228073, -0.005632549, -0.016176483, 0.10802557, -0.006944324, -0.007217869, -0.02004342, 0.016698705], [0.009226722, -0.054849386, -0.00916731, 0.016290838, 0.008501892, 0.02673551, -0.016076954, 0.0059709307, -0.0058699297, 0.033175796, -0.028850587, 0.01698002, -0.009690138, -0.029872477, 0.0041053863, 0.02410949, -0.017823674, 0.0159106, 0.039568555, -0.07100952, -0.00911978, -0.05166489, -0.057558585, 0.040566683, -0.00093128695, 0.01271422, -0.025167027, 0.0149362385, -0.00994561, 0.019142626, 0.011834919, 0.019237686, 0.04201634, -0.03008636, 0.03569488, 0.014223292, 0.017205786, 0.01698002, -0.021507233, 0.01067638, -0.025808679, 0.008911837, -0.057701174, -0.038475372, -0.013201401, 0.01067638, -0.03234403, -0.010337731, -0.015209535, -0.033936273, 0.016207661, -0.02925459, 0.022232063, -0.013474697, 0.0018536621, -0.020497225, 0.048646748, -0.13384391, 0.002504226, 0.02678304, -0.019190155, -0.009232663, 0.036597945, 0.0009387135, -0.0376436, -0.038926903, 0.00015159405, -0.0010218907, 0.030205186, 0.05589504, -0.0061313435, 0.03949726, -0.049573578, -0.04890816, -0.010712028, -0.061360966, 0.065401, 0.0035647347, -0.01775238, -0.0025146233, -0.008293949, -0.021186408, -0.034126393, 0.0072661177, 0.019712983, -0.0016427486, -0.0038499136, -0.114927046, -0.030133892, -0.014722355, -0.0049282457, -0.0181445, -0.0020021927, -0.0048539806, -0.022529123, -0.000154936, 0.013914348, 0.023158893, -0.03569488, -0.03376992, -0.046983205, -0.038023837, -0.078661814, -0.07020151, 0.007652297, -0.00844248, 0.018061323, -0.006636348, -0.0013278637, 0.11340609, 0.04900322, 0.03362733, -0.006612583, 0.021364644, -0.024763023, 0.015874952, -0.011561623, -0.023729252, -0.0037102948, 0.015494714, -0.10057305, -0.034316514, 0.064450406, -0.014591647, -0.044036355, 0.01091997, -0.009286134, 0.010539732, 0.015993776, 0.022873715, -0.0027493017, 0.027163278, 0.06440287, 0.07490696, 0.04284811, -0.015779892, 0.027614811, -0.033651095, -0.018061323, -0.004144004, -0.009137603, 0.0035201756, -0.033199564, 0.0021284437, -0.032082614, 0.012179511, 0.039996322, -0.022612302, -0.031036958, -0.04051915, -0.03041907, -0.020877464, -0.011971568, 0.050001346, 0.017550377, -0.011104149, 0.024881849, 0.057415996, 0.0071888817, 0.028494112, 0.013712347, -0.06820526, -0.024026312, 0.020497225, 0.039663617, -0.064973235, 0.049383458, -0.02226771, -0.03331839, 0.043489765, 0.035789937, 0.0069215265, -0.046507906, 0.03217767, -0.020354636, -0.014544118, 0.03438781, 0.017324612, -0.07138976, -0.045438487, -0.034007568, 0.0559901, 0.03298568, -0.042966936, -0.008389009, 0.048005093, -0.010129788, -0.048409097, 0.029516004, -0.06982127, -0.007729533, 0.0073492946, 0.013284578, -0.030704249, 0.0151382405, -0.027187044, -0.014900591, -0.050666764, 0.025737384, 0.011139796, 0.007028469, -0.07571497, -0.019297097, 0.025357146, -0.016445309, 0.027709872, 0.0542315, -0.044915657, 0.013225166, 0.04541472, 0.04239658, -0.0035201756, 0.05099947, -0.01348658, -0.03978244, 0.026996924, -0.06521088, 0.03750101, -0.010593204, -0.04933593, 0.052520424, -0.02920706, 0.03424522, 0.004078651, 0.055134565, 0.061978854, 0.017265199, 0.026901865, 0.0327005, -0.0038112956, -0.022101356, -0.009393076, 0.024667965, 0.053043254, -0.05622775, 0.0029735828, -0.02382431, 0.024359021, 0.01280928, -0.0065056407, 0.018382149, 0.050096404, -0.05380373, -0.013450933, 0.029706122, 0.08973625, 0.01348658, 0.024834318, -0.035290875, 0.016682958, 0.039758675, -0.035124518, -0.0063630515, 0.04108951, 0.0050054817, 0.040733036, 0.01140121, -0.027448457, 0.00059449376, 0.0335798, -0.033698626, 0.0318212, -0.019796161, 0.098766916, -0.010100082, -0.014544118, -0.019059448, -0.044701774, -0.034625456, 0.024929378, 0.05907954, -0.020033808, -0.026283978, -0.02217265, 0.01028426, 0.0074384133, 0.08165619, 0.08132348, -0.019380275, 0.069441035, -0.010700146, 0.0005766701, 0.0255235, 0.012429042, 0.058984477, 0.006559112, 0.041398454, -0.013474697, -0.06283439, 0.03693065, -0.0380476, -0.041826222, 0.0515223, 0.026283978, 0.056940697, 0.009832727, -0.0026393891, 0.015399654, -0.016920608, -0.008276125, 0.026022563, 0.0044351243, 0.0049074516, -0.03172614, 0.008175125, 0.05366114, 0.00011288327, 0.0829395, 0.0024967997, -0.017288964, 0.08227408, -3.553131e-05, -0.011252679, -0.009999081, 0.008692011, -0.01532836, 0.005501574, 0.018596033, 0.027686106, -0.046103902, -0.02664045, -0.039069492, -0.085601166, 0.012726103, -0.004812392, 0.023859957, -0.039711144, -0.026497861, -0.066446654, 0.0038439722, -0.033936273, 0.024691729, 0.011520035, -0.01848909, -0.08170372, -0.067064546, -0.028731762, -0.014270822, 0.030941898, -0.052995723, -0.05090441, -0.028517878, -0.013260813, -0.011638859, -0.03904573, 0.012737986, -0.03681183, -0.023123246, 0.008531598, 0.02697316, 0.001397673, 0.034863107, 0.03246285, 0.01600566, -0.0025294763, 0.0014452029, 0.029682359, -0.031108253, -0.018370267, -0.01072391, 0.09567748, -0.091684975, -0.01397376, 0.037001945, -0.010628851, -0.064070165, 0.008317715, -0.004497507, 0.01760979, 0.0010003537, -0.018037558, 0.013545992, -0.0021328996, -0.031844962, -0.016267072, -0.024691729, 0.027282104, -0.0033954098, -0.04876557, 0.03828525, -0.017039431, -0.030989427, -0.018429678, 0.010379319, -0.022445947, -0.016433427, -0.055134565, 0.014140114, 0.015197652, -0.030894367, -0.0030003183, 0.013118224, -0.032225203, 0.0010419423, 0.012203275, 0.057083286, 0.012102274, -0.029088236, -0.0129994, -0.011870567, 0.00022706618, 0.0201764, 0.03662171, 0.025951268, 0.029872477, 0.01872674, -0.011062561, -0.030846838, -0.020152634, 0.035742406, 0.01877427, 0.06963115, -0.032914385, 0.038879372, 0.036859356, 0.0006253139, 0.0014481735, 0.027923755, -0.03056166, 0.019962514, 0.004934187, 0.0313459, -0.008026594, 0.06625654, -0.04943099, 0.0016858225, -0.05137971, -0.0038291193, 0.0063392865, -0.019570393, -0.021994414, 0.002076458, 0.023741134, 0.007592885, -0.04643661, -0.054944444, -0.013985642, -0.050476644, -0.019475333, 0.036859356, 0.068918206, -0.012868692, -0.0002203823, 0.018405914, 0.004197475, -0.006267992, -0.0760952, -0.035195813, 0.02192312, -0.008181066, -0.06535347, 0.008989072, -0.052330308, -0.02585621, 0.055039503, -0.019736748, 0.023551013, -0.052663013, 0.03871302, -0.07585756, 0.013118224, 0.004922305, 0.017015668, -0.008222654, 0.057320934, 0.0050678644, 0.024810554, 0.04370365, 0.008692011, 0.008389009, 0.0005517912, -0.006909644, -0.05366114, -0.029278355, 0.006951233, 0.004550978, -0.03861796, -0.027187044, 0.03531464, 0.001132546, -0.004001415, -0.03790501, 0.016659195, -0.0030196274, -0.0023601514, -0.020604167, 0.047577325, 0.014544118, 0.026165154, -0.008692011, -0.025689855, -0.030632954, -0.025095733, 0.022683596, 0.0075572375, -0.041826222, -0.06597136, -0.03633653, -0.013949995, 0.011858684, 0.016124483, 0.0028740673, 0.022624183, 0.03148849, 0.046983205, -0.0028918912, -0.015399654, -0.005162924, 0.04565237, 0.007016586, -0.05370867, -0.018809916, -0.049573578, -0.0033686743, -0.042040106, -0.007200764, -0.0057035754, 0.031702373, 0.018453443, 0.007878064, -0.015993776, -0.051902536, -0.027091984, -0.016766137, 0.006909644, 0.017039431, 0.021863706, 0.035742406, -0.05627528, -0.03274803, -0.0012684515, 0.011133855, 0.014960003, 0.022232063, 0.0073968247, -0.033056974, 0.002513138, 0.033080738, -0.0067076427, 0.0133083435, 0.026854334, 0.06373746, -0.011413093, -0.014033172, -0.037215833, 0.015803657, 0.012833045, -0.025309617, -0.026402801, 0.052092656, -0.034007568, 0.015352124, 0.017110726, 0.03362733, 0.016112601, 0.002513138, 0.0065769358, -0.03600382, 0.013759876, -0.023788663, 0.00916731, -0.023883723, 0.07571497, 0.06388005, -0.0014489162, -0.020675462, 0.04420271, 0.009226722, 0.017312728, 0.012975634, 0.009351487, 0.016908726, -0.004111327, -0.04173116, -0.032771796, 0.04420271, -0.025000673, -0.013201401, -0.059554834, 0.003454822, -0.019772395, -0.0239669, 0.009648548, -0.04049539, 0.017063197, 0.005944195, -0.011300209, -0.025000673, -0.046602964, 0.037334654, -0.02415702, 0.0005536479, 0.03488687, -0.013771758, -0.007979064, -0.02711575, -0.02289748, 0.0060659903, 0.008163243, 0.028208934, 0.019522864, -0.0040103267, 0.0047381264, -0.009678255, -0.025784915, -0.026426567, 0.034791812, -0.032367792, 0.027519751, 0.019332744, 0.01081897, 0.00674329, 0.044369064, -0.04132716, 0.01348658, -0.018619798, 0.003255791, 0.066826895, 0.034863107, -0.0016412633, 0.011472505, 0.026759276, 0.08189384, -0.038118895, 0.011918097, -0.009749549, -0.0014518867, 0.023170777, -0.017788026, -0.0035053226, -0.026046328, -0.031155782, -0.05185501, -0.010747675, -0.009904021, 0.022362769, 0.00916731, 0.02711575, 0.008775189, 0.016326485, -0.0017051315, 0.037762422, 0.028660467, 0.018073205, -0.032676734, -0.02953977, 0.01984369, -0.022695478, 0.027329633, -0.02440655, -0.013617286, 0.0041024154, 0.0009401988, 0.044321537, 0.023895605, -0.025095733, -0.0058134883, 0.052045126, -0.026402801, 0.022053825, -0.047862504, -0.026426567, -0.007093822, 0.009684196, 0.021994414, -0.014365881, -0.012333983, -0.03754854, -0.015316477, 0.012381512, 0.069441035, -0.020295223, -0.017669203, 0.0066482304, -0.03455416, -0.005156983, -0.0044232416, 0.07234035, 0.003294409, -0.014983769, -0.037619833, -0.014151997, -0.0057718996, 0.014211409, -0.03652665, -0.011722036, -0.051094532, 0.025571031, -0.014864944, -0.02459667, 0.018560385, -0.03158355, -0.03329462, -0.013747994, 0.0014808503, 0.0148887085, -0.012286453, -0.052567955, 0.029112, 7.54257e-08, -0.011145737, -0.015756128, -0.017182022, -0.0017214698, 0.02096064, 0.022362769, -0.016457193, -0.033365916, -0.0011058104, -0.04016268, -0.004351947, 0.029682359, -0.008935601, 0.029634828, 0.018762387, 0.035290875, -0.006559112, 0.008311774, -0.060220253, -0.023242071, -0.012143863, -0.048242744, -0.004856951, -0.019427804, 0.027400928, -0.012773633, 0.029611064, -0.00053099694, 0.035385933, 0.0010954132, 0.0024344167, -0.028042581, -0.008501892, -0.01028426, -0.041945044, 0.01848909, -0.007919652, -0.01833462, 0.024145138, -0.0053649256, 0.0048510097, -0.033888746, -0.011056619, -0.0094109, 0.0037905013, 0.004518301, -0.009387135, -0.014710472, -0.04080433, -0.018904977, 0.019819925, -0.017835556, 0.06117085, 0.025262088, 0.050381586, 0.051759947, 0.026236448, -0.01833462, 0.02944471, -0.0027879197, -0.022647949, 0.011329915, -0.005602575, -0.023943136, 0.014080702, -0.021614175, 0.002100223, -0.04382247, 0.031464726, 0.028850587, 0.023063833, 0.039592322, -0.026901865, -0.040186442, -0.02542844, -0.050619233, 0.0019710013, -0.011240797, -0.046555437, -0.0031132016, -0.032296497, 0.02110323, -0.010587262, -0.0058788415, 0.030038832, 0.017051315, 0.00071109034, 0.006060049, -0.0023274748, 0.004108357, -0.0017184992, 0.046793085, 0.04080433, 0.020972522, 0.03056166, -0.017990028, -0.007064116, -0.023515366, 0.0024641228, -0.0050381585, 0.00422124, -0.029112, -0.034150157, 0.032201435, -0.008810836, -0.026402801, -0.0129518695, -0.017455317, -0.020271458, 0.010201083, 0.01998628, 0.020829933, -0.011686388, 0.032082614, -0.001258797, 0.041422218, -0.014544118, -0.020580402, 0.0064937584, -0.021340879, 0.009000955, -0.04118457, 0.019772395, -0.012559749, -0.0011362592, 0.066969484, -0.00815136, -0.0020348695, -0.020544754, -0.012108216, -0.0094406055, -0.031013193, -0.022350887, 0.015435302, 0.036312766, 0.014282704, -0.04225399, 0.025285851, -0.025238322, 0.015126358, -0.048456628, -0.002926053, 0.03507699, -0.0029126853, -0.03569488, 0.043465998, 0.0014036143, -0.035433464, -0.013427167, -0.018156383, 0.023562897, 0.050619233, 0.06079061, 0.009678255, -0.019415922, 0.007699827, -0.032058846, 0.025262088, -0.009660431, 0.018750506, 0.0048153624, 0.059127066, 0.029967537, -0.008014712, 0.02431149, -0.005667928, -0.0009795594, -0.078281574, 0.009298016, -0.0492884, -0.015150122, -0.01144874, 0.009286134, 0.07566743, 0.035789937, -0.03605135, 0.013379638, -0.049526047, 0.000548078, -0.028161405, 0.0049609225, 0.023016304, -0.01721767, -0.036693003, -0.0013865333, -0.022743007, 0.015459066, -0.00017573028, -0.03586123, -0.0008696467, -0.017681085, -0.029896243, -0.008810836, 0.0018447503, 0.02149535, 0.03498193, -0.0082701845, -0.03954479, -0.00305676, -0.0067135836, 0.019106979, 0.00013534853, -0.019914985, -0.0019635747, 0.009791138, 0.040828094, -0.025024438, 0.017692966, -0.0029186266, -0.005462956, -0.007408707, 0.03531464, 0.01600566, -0.012149804, 0.013320225, -0.053090785, -0.037809953, -0.015779892, 0.0019516923, -0.03158355, 0.0038974434, 0.0070225275, -0.008299891, 0.05370867, -0.03819019, 0.0074681193, 0.040828094, 0.047458503, 0.030823072, -0.020390283, 0.019237686, -0.0050441, -0.0029735828, 0.02673551, -0.016172014, -0.029468473, 0.0032320262, 7.700384e-05, -0.06340475, -0.0026275066, 0.03051413, 0.076665565, 0.0065472294, -0.020449694, 0.02664045, -0.031227076, -0.021115113, 0.043632355, 0.00074970827, -0.013949995, -0.023610426, 0.05907954, -0.01043279, -0.008798953, -0.055419743, 0.017586024, 0.007432472, 0.009951551, -0.036075115, 0.048599217, 0.04672179, 0.02144782, 0.02033087, 0.0029349648, 0.033674862, 0.017193904, 0.04565237, -0.0026557273, -0.02896941, 0.035338406, -0.04662673, -0.023372777, -0.02934965, -0.012619161, -0.0005488206, 0.009256428, 0.005962019, 0.0044648303, -0.0095416065, 0.0129994, 0.025808679, -0.052995723, -0.011638859, 0.020497225, -0.044915657, -0.0131063415, -0.03201132, 0.06478311, 0.008412774, -0.00451236, 0.007783004, -0.037976306, 0.0044915657, 0.025119498, -0.005439191, -0.0077235918, 0.021756765, 0.020402165, 0.005558016, -0.026236448, 0.01450847, -0.00086222024, -0.045058247, 0.026022563, -0.01848909, 0.04719709, 0.014223292, -0.02119829, -0.003677618, 0.0029082294, 7.129469e-05, 0.018429678, -0.015684834, -0.016480956, -0.00079983735, 0.028660467, 0.041303392, -0.020604167, -0.016195778, 0.09605772, 0.03158355, -0.022006296, 0.016314603, 0.0025027408], [0.010196377, -0.039669424, -0.021254078, 0.012919859, 0.03806809, 0.022176057, -0.02870271, 0.016401548, 0.009510957, 0.040421568, -0.0022063842, -0.011888696, 0.009292593, -0.0025460613, -0.011730989, 0.033361137, -0.018767156, -0.012592313, 0.018633712, -0.056531962, -0.014181516, -0.025087574, -0.08215332, 0.016583519, 0.00069641374, 0.011621807, -0.005862462, 0.014436274, -0.044813108, 0.03282736, 0.010226705, 0.013599213, 0.049107593, -0.025063314, 0.008152249, -0.0045522787, 0.003475624, 0.03777694, -0.0126408385, -0.014048072, 0.012665101, -0.0029873382, 0.002176056, -0.023898706, -0.021520967, -0.0070846924, -0.033239823, -0.0055834414, 0.01880355, -0.05706574, -0.009601942, -0.02540299, 0.010257034, -0.010129655, -0.043211773, -0.027174164, 0.055804085, -0.09734173, 0.037631363, -0.0040579275, -0.037461523, 0.01834256, 0.03384639, -0.0071696118, -0.029746003, 0.006381076, -0.012070666, 0.034137543, 0.030498145, 0.044716056, -0.0028751234, 0.030061418, 0.024420353, -0.007290925, -0.0038820233, -0.009698993, 0.09598303, 0.006702556, -0.033919178, 0.006399273, -0.01641368, -0.013441506, 0.013890364, -0.0011994846, 0.047384948, -0.014205779, 0.02347411, -0.12111913, -0.047021005, 0.024226252, 0.009941619, 0.006714687, 0.025111837, 0.02073243, -0.022212451, 0.03862613, 0.0012131323, 0.016559256, -0.0082311025, -0.0017787552, -0.016983852, -0.002223065, -0.070943974, -0.040542882, 0.05192206, 0.015807113, 0.017857308, 0.01403594, 0.0065327175, 0.109376006, 0.00852832, 0.0011266966, -0.0155402245, 0.008886194, -0.027538102, 0.05648344, -0.013599213, -0.03411328, -0.0036211999, 0.019640611, -0.11655775, -0.040300254, 0.0482584, 0.04869513, -0.024068544, 0.007163546, -0.023862312, 0.0074607637, 0.0023868377, 0.009504891, 0.0017256807, 0.0587156, 0.029746003, 0.022163926, 0.049786948, -0.025694141, 0.054154225, -0.034428693, -0.045177046, -0.014060203, -0.062597625, 0.0131382225, 0.0018318298, 0.031784065, -0.07210858, 0.0078429, -0.024869211, -0.024383958, -0.056192286, -0.037461523, 0.021884907, -0.009868831, -0.018949127, 0.03265752, 0.0372189, -0.024250515, 0.030934872, 0.051436808, -0.014642507, 0.006035333, 0.0031010695, -0.066819325, 0.04292062, 0.029018125, 0.030061418, -0.06934264, 0.062452048, -0.01114262, -0.037752677, 0.031953905, 0.023522634, -0.050563354, -0.0034089016, -0.018585186, -0.049738422, 0.05614376, 0.053620446, 0.027829254, -0.085404515, -0.052213214, -0.012471, 0.06123892, 0.06550914, -0.046171814, -0.02926075, 0.05347487, 0.04697248, -0.016389417, 0.06439306, -0.060122836, -0.014096597, -0.010584579, -0.035714615, -0.075262725, -0.012349687, -0.03331261, -0.033336874, -0.033991966, 0.0027098341, 0.0066722273, 0.005574343, -0.06366518, -0.007679127, -0.037898254, -0.032584734, 0.018512398, 0.0379953, -0.015139891, 0.020053076, 0.04034878, 0.022309503, 0.0069937077, -0.022552129, -0.008637502, -0.03964516, 0.024408221, -0.025111837, 0.011251802, 0.002599136, -0.025087574, 0.0957404, -0.046268865, 0.027271213, 0.0032329976, 0.00424293, 0.028484346, 0.031395864, 0.011919024, -0.0055045877, -0.0065691113, -0.033676554, -0.038723182, -0.021775724, 0.040834032, -0.061481543, 0.01412086, -0.03964516, 0.018463872, 0.06492684, 0.012883465, 0.02193343, 0.025645616, -0.03513231, 0.007108955, -0.028872548, 0.053668972, -0.006914854, -0.043672763, -0.027077112, 0.011166883, -0.004634165, -0.012143454, 0.05604671, 0.051582385, -0.00701797, 0.047627572, -0.0139874155, -0.04372129, -0.005319585, 0.035714615, -0.028969599, 0.023328533, -0.02201835, 0.057356894, -0.010062932, -0.0022033516, 0.02411707, -0.02119342, -0.059297904, -0.02998863, 0.061044816, -0.029042387, 0.020950794, 0.007527486, 0.02576693, 0.014545456, 0.071041025, 0.0018955192, -0.03869892, 0.06963379, 0.007533551, 0.036733646, 0.025742667, 0.01339298, 0.05512473, 0.007903556, 0.021702936, -0.05216469, -0.059006754, 0.017566156, -0.017845176, -0.017469104, -0.020247178, 0.030037155, 0.041804537, -0.0066722273, 0.020077338, 0.00444613, -0.029600427, 0.0034604599, -0.0056713936, -0.019470774, -0.036466755, -0.019592086, -0.010451134, 0.036442492, 0.04301767, 0.08089166, -0.02025931, -0.068080984, 0.05740542, 0.011039504, -0.033676554, -0.042411104, 0.019616349, -0.0041125184, 0.0047918726, 0.009383578, 0.08423991, -0.04668133, 0.019373722, -0.054008648, -0.09530367, 0.03200243, 0.019555692, 0.0073879757, 0.022721967, -0.03862613, -0.02228524, 0.013562819, -0.04952006, 0.005841232, -0.015176285, -0.020926531, -0.0440367, -0.054154225, -0.023947231, -0.024299039, 0.022758361, -0.021569492, -0.045540985, 0.005086057, -0.032342106, -0.053668972, 0.019216016, -0.029115174, -0.010566382, 0.024153464, 0.037801202, 0.008170445, 0.0014330125, 0.07249679, 0.04393965, 0.020696037, 0.015819244, -0.033191297, -0.014739557, -0.039232697, -0.0078368345, 0.010614907, 0.074680425, -0.058618553, 0.038140878, 0.042314053, -0.012495263, -0.07511715, -0.0033027525, -0.016292367, 0.01375692, 0.042799305, -0.0155402245, 0.011943287, -0.02843582, -0.048767917, -0.026519071, -0.031565703, 0.011724924, -0.0035150507, -0.02108424, 0.019737663, -0.028193194, -0.016644174, -0.020198653, 0.027319739, 0.014290698, 0.00046933055, -0.0061657447, -0.0017924029, 0.029454852, 0.02639776, -0.00028205325, 0.014230042, 0.0027356134, -0.0131382225, 0.018184852, 0.043794073, -0.009365381, 0.024711505, -0.012034272, 0.0074061723, -0.003973008, 0.0014140573, -0.0047372817, 0.0017484269, 0.033919178, -0.039815, 0.009219806, -0.03840777, 0.035738878, 0.042993408, 0.014788083, 0.03464706, -0.013174617, 0.042580944, 0.0074910917, 0.011821974, -0.02146031, 0.031784065, 0.0026916373, 0.0023701573, 0.025936767, -0.023838049, -0.0054045045, 0.026955798, -0.06788688, 0.043333083, -0.039669424, 0.015855638, 0.009207674, -0.021520967, -0.01999242, 0.026179394, -0.0008924104, 0.0011934189, -0.028484346, -0.078028664, 0.009517022, -0.039766476, -0.014205779, 0.033530977, 0.0271499, -0.0016544091, 0.023947231, 0.012416408, -0.065460615, -0.019652743, -0.05687164, -0.011179014, 0.012895596, -0.029746003, -0.051145658, -0.020101601, -0.08870423, -0.0015368869, 0.03852908, -0.031759802, 0.015273335, -0.012246571, 0.044449165, -0.056337863, 0.008655699, 0.02741679, 0.062937304, -0.038917284, 0.00931079, 0.008400941, 0.0076245363, 0.054688003, 0.021605887, 0.02586398, -0.01725074, -0.0101781795, -0.08098871, 0.02889681, -0.009262265, -0.041489124, -0.009565548, 0.037121847, 0.047287896, -0.018415349, -0.03952385, -0.012980515, 0.026203657, 0.049495798, 0.0136356065, -0.011033438, -0.0032572602, 0.0104268715, 0.006629768, -0.022333765, -0.018051408, 0.05750247, 0.029479114, 0.0059231184, -0.0035848059, -0.0077822437, -0.01725074, -0.03474411, 0.020708168, 0.035835925, 0.011985747, 0.021763593, 0.04340587, 0.017529761, -0.0052134357, -0.0176996, -0.016013347, -0.022358028, -0.0035423462, -0.022600655, 0.0092258705, -0.03256047, -0.055318832, -0.0075699454, -0.023983626, 0.0068905912, 0.0047008875, 0.0060747596, -0.0011956935, 0.0015361287, -0.01192509, -0.05357192, -0.036636595, 0.01677762, -0.018924864, 0.013902496, 0.018209115, 0.01852453, -0.04583214, -0.029454852, -0.037413, 0.0022943364, -0.004622034, 0.02843582, 0.033191297, -0.04466753, 0.039038595, 0.022734098, -0.04216848, 0.006805672, -0.0012351203, 0.07793162, -0.007612405, -0.019021913, -0.024869211, 0.034331642, 0.03595724, 0.0010887862, -0.03925696, 0.019191753, -0.027804991, 0.049835473, -0.015940558, 0.031201761, -0.013878233, -0.013538556, -0.03605429, -0.049544323, -0.0028008192, -0.017044509, -0.0054045045, -0.0037030862, 0.05687164, 0.034889683, -0.017311398, -0.018548792, 0.033506714, 0.01715369, 0.002124498, -0.0077822437, 0.01943438, 0.015018578, -0.027198426, -0.021836381, -0.005907954, 0.102291316, -0.00034270986, -0.040591408, -0.016534993, -0.025281677, -0.01623171, -0.022467209, 0.041246496, -0.037291687, 0.02622792, 0.015261204, 0.006502389, -0.049689896, -0.03246342, 0.010663433, 0.0049526123, 0.040203203, -0.0068299347, -0.012859202, 0.003239063, -0.0062718936, 0.019616349, 0.017687468, -0.013793314, 0.01486087, 0.026155131, -0.0003851695, 0.025985293, 0.015564487, -0.01614679, 0.0057927067, 0.014278566, -0.023049513, 0.0138418395, 0.040834032, -0.041561913, -0.024286907, 0.049374484, -0.027950568, 0.011985747, -0.0352051, 0.019034045, 0.07827129, 0.021727199, 0.006629768, 0.045613773, 0.027707942, 0.067256056, -0.015855638, 0.025815455, 0.020101601, -0.04090682, 0.008971113, -0.006326485, 0.0056713936, -0.012956252, 0.004100387, -0.037485786, -0.027101375, -0.02642202, 0.01403594, 0.02036849, 0.043988176, -0.02639776, 0.008692092, 0.011718858, 0.02193343, -0.0017211314, 0.021593755, -0.033991966, -0.024335433, 0.05328077, 0.0015725227, 0.038140878, -0.03641823, -0.010372281, 0.023680342, -0.031565703, 0.044885892, -0.0056562293, -0.022248846, -0.014703163, 0.033700816, -0.060656615, 0.0013154903, -0.027659416, -0.04583214, -0.008000608, -0.00078322855, -0.0030404127, -0.021363258, -0.029066648, -0.036636595, 0.018403217, 0.012531657, 0.092392154, -0.026907274, -0.085550085, -0.033919178, -0.024735767, -0.007855032, -0.031589963, 0.07026462, -0.018730761, -0.02274623, -0.03200243, -0.044376377, 0.0057229516, -0.024893474, -0.036903482, -0.017675336, 0.0019364624, 0.014060203, -0.015916295, -0.05017515, 0.030061418, -0.0542998, -0.00059746765, 0.057745095, 0.01760255, 0.009595877, -0.0008810373, -0.029915841, 0.033336874, 0.016571388, -0.005474259, -0.025888242, -0.021132763, 0.011858368, 0.016134659, 0.026640385, -0.01036015, -0.0063325507, -0.05483358, -0.034719847, 0.017772388, 0.009862766, 0.0018212148, 0.06982789, -0.0050617945, 0.001186595, -0.028969599, 0.0009394193, -0.0707984, 0.020429147, -0.0035605433, -0.0058321333, -0.009377512, -0.051194184, 0.009705058, -0.02972174, 0.031929642, -0.006453864, 0.040324517, 0.0018545759, 0.04374555, -0.012137389, -0.006326485, -0.011033438, -0.018269772, -0.011445903, -0.028217457, 0.011809843, 0.045346886, -0.011227539, -0.01797862, -0.028096143, -0.022503603, -0.04549246, -0.0137811825, 0.03044962, 0.032245055, -0.013186748, -0.012349687, -0.02064751, 0.017347792, -0.005152779, 0.028387295, 0.0040882556, -0.004640231, 0.03595724, 6.098833e-05, 0.00931079, 0.032706045, -0.020271441, 0.012003944, 0.047190845, -0.007727653, -0.014460537, 0.019834712, -0.001379938, 0.011512625, -0.05944348, 0.010669499, 0.025548566, 0.036345445, 0.06735311, -0.018318297, 0.0055076205, 0.027441053, -0.025451515, 0.0042368644, -0.023789523, -0.0372189, -0.007606339, -0.008030935, -0.0009780879, -0.028411558, -0.029212225, 0.02962469, -0.0060929568, 0.030643722, -0.013053304, 0.0048798244, -0.007509289, 0.026179394, 0.025111837, 0.00020680114, 0.002471757, 0.058133297, -0.014521194, 0.052698467, 0.0052619614, 0.008710289, 0.008867997, 0.011718858, -0.03869892, -0.0033088182, 0.052601416, 0.0001486087, -0.04512852, -0.016801883, -0.039038595, -0.046754118, 0.020853743, 0.039669424, 0.01888847, 0.0054863906, 0.04629313, -0.020441279, 0.02550004, 0.016268104, 0.007794375, 0.0040033367, -0.00028755027, -0.012204111, -0.06458716, 0.013672001, -0.011203277, 0.035010997, 0.058375925, 0.00205171, 0.008037001, -0.018949127, 0.009789977, -0.03869892, -0.029066648, -0.026761698, 0.0130775655, 0.030061418, 0.0018196984, -0.00852832, 0.051776484, 0.030401094, 0.0074425666, -0.0023716737, 0.018184852, -0.005101221, -0.0036454624, -0.045395408, 0.015067102, 0.009850634, 0.0038547278, 0.016474336, 0.009177346, 0.04614755, 0.006987642, -0.025718404, 0.031614225, -0.017893702, -0.04541967, -0.02421412, 0.02926075, -0.020271441, 0.026567597, 0.002928198, 0.03044962, 0.0027507774, -0.027489576, 0.01031769, -0.023049513, -0.019252408, -0.0659944, -0.040882558, -0.04520131, 0.0012957769, -0.005692623, 0.01403594, 0.037461523, 0.023995757, -0.047676098, 0.02751384, -0.016522862, 0.022624917, -0.017942226, 0.037825465, 0.029115174, -0.016304499, -0.012798546, 0.005398439, -0.059783157, 0.006356813, -0.012137389, -0.01393889, 0.00033759198, -0.023255745, -0.039863527, 0.0052164686, -0.027780728, 0.010748352, 0.026955798, -0.030910611, -0.022115402, 0.007115021, 0.0068299347, 0.019228147, 0.017893702, 0.032050956, -0.019980289, 0.023862312, 0.009098492, -0.024893474, 0.004051862, -0.0046008043, -0.004731216, -0.04127076, 0.012992647, 0.044376377, -0.022721967, 0.03513231, -0.018961258, -0.023971494, -0.021496704, 0.021448178, -0.022661312, -0.009104557, 0.014666769, 0.014812345, 0.046099026, -0.033530977, 0.001818182, 0.036709383, 0.012604444, -0.008546517, -0.039062858, -0.020987188, 0.0032542273, 0.023583291, 0.01104557, -0.014327092, -0.026810223, 0.003945713, 0.028314507, -0.03707332, 0.005698689, 0.024371827, 0.07303056, -0.023680342, -0.0337736, 0.028557133, -0.02678596, -0.007357647, 0.0251361, 0.05648344, -0.011081963, -0.015176285, 0.0337736, -0.031517178, 0.02017439, 0.00053946476, 0.010699826, 0.013344455, 0.03200243, -0.01393889, 0.028120406, 0.037121847, -0.013417243, -0.0055652442, -0.006945182, 0.007327319, 0.0014754721, 0.04173175, -0.04529836, -0.0074607637, 0.023170827, -0.045443933, -0.024153464, 0.014666769, -0.001088028, -0.010056866, 0.03384639, 0.041246496, -0.01603761, 0.005052696, 0.031395864, -0.0034483285, -0.043988176, -0.0044885892, -0.0070482986, -0.010445069, -0.016559256, -0.011652135, 0.04833119, 0.013029041, 0.023182958, 0.0070664953, -0.05716279, -0.008661765, 0.02926075, -0.010190311, -0.023728868, 0.003296687, -0.017966488, -0.008267497, -0.018099934, 0.027853517, 0.00898931, -0.014957921, 0.021290472, -0.04639018, 0.046074763, -0.0002471757, 0.005959512, -0.010578513, -0.0076366677, 0.015989084, -0.0037607101, -0.026106607, -0.009868831, 0.006381076, 0.034428693, 0.044619005, 0.021035714, -0.001675639, 0.07220563, 0.02073243, -0.01476382, 0.013526425, -0.0155402245], [-0.021998331, -0.0509509, -0.027512548, 0.0071766777, 0.03877513, -0.0072117997, -0.018357309, 0.008101568, -0.021412957, -0.0051278705, 0.0005125676, 0.04118687, -0.009295729, -0.044582035, -0.018357309, 0.021366129, -0.035239477, -0.048422083, 0.02209199, -0.039945878, -0.03800244, -0.073288746, -0.06158128, 0.006591304, -0.010583551, 0.016156305, -0.01414262, 0.014692872, -0.058911975, 0.0012797725, 0.014927021, 0.008201081, 0.049218193, -0.064999856, 0.011063556, -0.016566066, 0.015594346, 0.03179748, -0.06148762, -0.018380724, -0.020687094, -0.027957432, -0.00496982, -0.023321275, -0.034443367, 0.011526002, -0.046338156, -0.0043376167, 0.022173943, -0.034700934, -0.015570931, -0.021717353, -0.02135442, -0.02643546, -0.02334469, 0.0029283303, 0.0056342185, -0.085605, -0.0016302648, 0.021834427, -0.048890382, 0.007984493, -0.026412046, -0.013229438, -0.00048256718, -0.012866506, -0.014013838, 0.023461765, 0.026201311, 0.052683603, -0.05385435, 0.001701973, 0.048796725, -0.026786685, -0.0053912885, -0.027887188, 0.07937663, 0.04474594, -0.0757239, -0.008335717, -0.0022610046, -0.013287975, -0.012726017, 0.012445038, -0.037229747, -0.0031463818, 0.06078517, -0.079329796, 0.0022229555, -0.008394254, -0.007990346, -0.018333893, 0.0058127576, 0.012105521, -0.05305824, 0.014657749, -0.014166036, 0.0055903154, -0.035707776, 0.013065534, -0.0017166074, -0.0014034327, -0.06101932, -0.026833516, 0.008880114, -0.014411893, 0.034279466, 0.024164213, -0.00765083, 0.14320575, 0.0324531, 0.020815877, -0.026107652, 0.0001335383, -0.08438742, 0.049218193, -0.0013734322, -0.0644379, -0.024468606, 0.05390118, -0.102651075, 0.00034683372, 0.02274761, 0.04226396, -0.000101800084, -0.0049610394, -0.013428465, 0.009588416, 0.0391966, -0.021799304, -0.0018058768, 0.054650456, 0.066123776, 0.0067844773, 0.035403382, -0.01788901, 0.048468914, 0.0042966404, -0.018017793, -0.017221684, -0.031001374, -0.02666961, -0.0034098, 0.007451803, -0.015453856, 0.0013361147, -2.2443124e-05, 0.016285088, -0.059801742, -0.024421778, 0.018064622, -0.009307437, 0.027980847, 0.006971797, 0.031774066, -0.038423907, -0.01354554, 0.041889317, -0.025756428, 0.01765486, 0.013650907, -0.026013993, 0.017350467, 0.042568352, 0.014318232, -0.06153445, 0.06134713, -0.003673218, -0.07188385, 0.026833516, 0.016718263, 0.0038546836, 0.033178963, 0.026786685, -0.025007151, 0.022536874, 0.009401096, 0.017725106, -0.046665967, -0.0545568, -0.037932195, 0.05376069, 0.012702602, -0.053011414, -0.013662614, 0.023368105, 0.04697036, 0.03697218, 0.02718474, -0.055446565, -0.021530032, 0.0048410376, 0.02467934, -0.03823659, -0.01890756, -0.03268725, -0.020289041, -0.07436583, -0.012093814, 0.022361262, -0.007522048, -0.08537085, -0.01257382, -0.0013083095, -0.034092143, 0.037182916, 0.018614873, -0.004065418, -0.017256808, -0.023122247, 0.051231876, -0.02903452, 0.0008275716, 0.013088948, -0.019375859, 0.016530944, -0.038306832, 0.06106615, -0.0329214, -0.027653039, 0.0829357, -0.0459401, 0.067388184, -0.035895094, 0.014013838, 0.06439107, -0.006807892, 0.025545694, 0.013615784, 0.011092825, 0.03896245, -0.03254676, -0.017245099, 0.022291018, -0.03828342, 0.008651818, -0.036597542, 0.017327052, 0.07834637, -0.017186562, 0.016729971, 0.019399274, -0.04645523, -0.026833516, 0.00046683525, 0.058677826, 0.012983581, -0.040367346, -0.038119514, -0.027254984, 0.02001977, -0.027746698, 0.01964513, -0.0016683141, 0.013650907, 0.031071618, -0.020066598, -0.04195956, 0.01321773, 0.0023385666, -0.021530032, 0.08251423, -0.041116625, 0.06598329, 0.0035619969, -0.036878522, 0.046057176, -0.003913221, -0.025920333, -0.013955301, 0.037159503, -0.04760256, 0.03074381, -0.02690376, 0.04142102, -0.013299683, 0.06832478, 0.0001777157, -0.06097249, 0.05258994, 0.028870614, -0.0030000384, 0.00020323432, 0.004159078, 0.035520457, -0.012234303, 0.0058127576, -0.048328426, -0.011607954, 0.013978716, -0.0037932193, -0.039641485, 0.03851757, 0.013194316, 0.03509899, 0.012726017, 0.009605977, 0.0051542125, -0.0385644, 0.019855864, -0.025498863, 0.016390454, -0.027254984, -0.03753414, -0.009289876, 0.042451277, 0.031235524, 0.059848573, -0.01451726, -0.05343288, 0.027020834, 0.005007869, 0.017444126, -0.05071675, 0.03060332, -0.018579751, 0.020078307, 0.0313526, 0.06846527, -0.042779084, 0.00071378966, -0.07061944, -0.07520877, -0.0056371456, 0.015875326, -0.018450968, 0.003494679, -0.001477336, -0.022021746, 0.03826, -0.07652, 0.00915524, -0.029736968, -0.047766466, -0.007533755, -0.05390118, -0.008095713, -0.07197751, 0.013838226, -0.03680828, -0.010203058, 0.030017946, 0.00628691, -0.04769622, 0.01904805, -0.040437594, -0.009992324, 0.009459633, 0.045378145, 0.003822488, 0.0014919704, 0.0509509, 0.049265023, 0.0062752026, 0.04378593, -0.003076137, -0.025896918, -0.045776196, 0.013194316, -0.018017793, 0.034935083, -0.060597852, 0.016530944, 0.051887494, -0.01141478, -0.044909846, -0.036269736, -0.02297005, -0.01506751, 0.048375256, -0.029128179, -0.016928997, -0.020651972, -0.05399484, -0.017104609, -0.022618826, 0.05029528, 0.0006673256, -0.0116021, 0.017221684, -0.017572908, -0.04128053, 0.009301582, 0.026154483, 0.0031844312, 0.015313367, -0.031774066, 0.029081348, 0.04008637, -0.046244495, 0.012644065, -0.031984802, -0.0073991194, -0.006901552, 0.05802221, 0.012316256, -0.026458876, -0.03826, -0.03022868, -0.022314433, -0.0069483817, -0.0148099465, -0.0022244188, 0.022279311, 0.027723283, 0.041491263, -0.022501752, -0.02270078, 0.0023766158, 0.038423907, -0.0145289665, 0.008698648, -0.042591766, 0.052262135, 0.010917214, 0.044582035, 0.014868484, 0.022127112, -0.028730124, 0.00896792, 0.010226472, -0.013147485, 0.007100579, 0.052964583, -0.015008973, 0.034677517, -0.05441631, -0.020605143, 0.009084995, -0.037042428, -0.026552536, 0.023356397, 0.03184431, -0.011151362, -0.03767463, -0.06893357, -0.06148762, -0.028776955, -0.011824542, 0.008423523, 0.035450213, 0.012550405, 0.0077679045, 0.05113822, -0.026365217, 0.007229361, -0.039899047, -0.022127112, -0.00926646, -0.019258784, -0.044207398, 0.004770793, -0.06078517, -0.028987689, 0.07380387, -0.012925044, 0.03851757, -0.051466025, 0.033342868, -0.07389753, -0.00044781063, 0.014294818, 0.028449146, -0.022888098, 0.02071051, -0.018556336, 0.02999453, 0.048890382, -0.009734759, 0.0040537105, -0.024304703, 0.005037138, -0.051747005, 0.056102183, 0.020429531, -0.018696826, -0.022478336, 0.010712333, 0.028776955, -0.038377076, -0.010156228, -0.029057933, 0.070666276, 0.03776829, -0.0003812244, 0.004126882, 0.011520148, -0.0049054287, 0.040156614, 0.028004263, -0.018568043, 0.042825915, 0.0007661074, -0.00045915224, 0.0013141632, -0.046384986, -0.0308843, -0.027020834, 0.031680405, 0.0055347052, 0.033694092, -0.0029063788, 0.025498863, 0.022689072, 0.007083018, -0.0050195768, -0.02643546, -0.039828803, 0.0064917905, -0.0071532624, 0.0028683294, -0.037698045, -0.026693026, -0.026388632, -0.018369017, 0.021284176, -0.00769766, 0.04479277, 0.026201311, 0.00790254, -0.010952336, -0.0037200477, -0.03425605, 0.017174855, -0.052074816, 0.013006996, 0.032429684, 0.036199488, -0.034138974, -0.021811012, -0.036363393, -0.018462677, -0.0050107962, 0.030931128, 0.012679188, -0.040929306, 0.026271557, 0.015407027, -0.030252095, 0.038704887, 0.020968074, 0.05366703, -0.036691204, 0.03027551, -0.018696826, 0.06382911, 0.012374793, -0.0018819753, -0.01793584, 0.032195535, -0.02713791, 0.046712793, -0.011040142, 0.020956367, 0.017701691, -0.008206935, -0.028472561, -0.027512548, -0.0071942387, 0.007533755, 0.025943747, 0.025967162, 0.07633269, 0.006790331, -0.0003750048, -0.029315498, 0.065561816, 0.014435307, -0.020804169, 0.02713791, 0.00707131, -0.006456668, -0.036082413, -0.01705778, -0.023824695, 0.051606517, 0.007539609, -0.0071766777, 0.010413792, 0.0026327167, -0.05015479, -0.003737609, 0.018837314, -0.04570595, -0.0018424627, 0.039641485, -0.0048673796, -0.049452342, -0.03800244, -0.002960526, -0.014107498, 0.035941925, -0.0031405282, -0.038658056, 0.004261518, -0.018216819, -0.026833516, -0.00492299, 0.029947702, 0.024421778, 0.0329214, 0.037182916, 0.006263495, 0.021799304, -0.051653344, -0.005514217, -0.013182608, -0.04968649, 0.040461008, 0.02505398, -0.04701719, -0.020628557, 0.034935083, -0.04219371, 0.029081348, -0.026388632, 0.033857994, 0.07371022, -0.01248016, 0.037136085, 0.02481983, -0.0066439877, 0.074319005, -0.033061888, 0.006374716, 0.021026611, -0.00871621, 0.023508595, 0.0010053788, -0.04053125, -0.04589327, -0.026154483, -0.005051772, -0.024936905, -0.024585681, 0.01589874, 0.0073698508, 0.03662096, -0.042825915, 0.020534897, -0.0008509865, 0.03079064, 0.027606208, 0.014072375, -0.021483203, -0.039500996, 0.009231338, -0.0061873966, 0.047462072, -0.029128179, -0.009922079, 0.05010796, -0.021436373, 0.034279466, -0.02052319, -0.048375256, 0.02237297, 0.055071928, -0.038377076, 0.018427555, -0.016975828, -0.004217615, 0.0003750048, -0.0027439378, -0.004159078, -0.011625515, -0.021717353, -0.04465228, -0.012128936, 0.020804169, 0.065234005, -0.024093967, -0.033857994, 0.0098108575, -0.055821203, -0.022045162, 0.038681474, 0.089913346, -0.021424666, -0.02481983, -0.015079218, -0.010402084, 0.0070186267, 0.0101093985, -0.048328426, 0.00017762423, -0.017771935, 0.011888933, -0.014903606, 0.0055054366, 0.012070399, -0.052308965, -0.023859818, 0.038751718, 0.059661254, -0.023426643, 0.005648853, -0.0443713, 0.0046098153, 0.04748549, -0.015055803, -0.030088192, -0.015746543, -0.01603923, -0.034747764, 0.0030117459, 0.00067756965, -0.022771023, -0.033459943, -0.04219371, 0.0066674026, -0.0071766777, -0.007732782, 0.042053223, 0.00051951886, 4.083894e-05, -0.015641177, 0.06345447, -0.104805246, 0.016858753, 0.017420711, -0.003207846, 0.036082413, -0.021471495, 0.030907713, -0.016940705, 0.02121393, -0.0021863696, -0.0023517376, 0.013908471, 0.022724194, -0.037651215, 0.01063038, -0.004879087, -0.031235524, 0.0087630395, -0.021155393, -0.006749355, 0.013065534, 0.0050195768, 0.007141555, -0.031867728, -0.022782732, -0.032897983, -0.014060669, -0.032476515, 0.020628557, -0.012655772, 0.007855711, -0.016109476, -0.04568254, -0.0030819909, 0.040016122, -0.0014934338, 0.0041473703, 0.05085724, 0.00061976403, -0.013873349, 0.019165125, -0.012210889, -0.041725412, 0.021436373, -0.012105521, -0.008751332, 0.02851939, 0.0034683372, -0.037370235, -0.024726171, 0.0064683757, 0.012421623, -0.0040156613, 0.06476571, -0.015840203, 0.0062986175, 0.01178942, -0.0036966328, 0.00633374, -0.026880344, -0.01581679, -0.028051091, -0.016331917, -0.002481983, 0.0052625067, -0.011672345, 0.03933709, 0.01701095, 0.0032254073, 0.0068020388, 0.009646953, 0.0029532088, -0.01793584, 0.01890756, 0.04053125, -0.004963966, 0.049780153, 0.016437285, 0.015629468, -0.0335536, -0.018193405, 0.0100391535, 0.029128179, -0.048422083, -0.010911359, 0.026927175, 0.0005220799, -0.043715682, -0.03879855, -0.031188693, -0.043598607, 0.019867573, 0.0031990653, 0.022946635, 0.013042118, 0.0100391535, -0.007059603, 0.038447324, 0.05998906, -0.016847046, -0.0045044483, 0.0041181017, -0.027629623, -0.04247469, -0.0058361725, -0.020651972, -0.01839243, 0.041538093, -0.028004263, -0.0017751447, 0.0021292956, -0.016741678, -0.030954544, -0.05062309, -0.025264714, 0.028355487, 0.011988446, -0.01641387, -0.055071928, 0.014950436, 0.052262135, -0.013030411, -0.0028507684, -0.018884145, -0.014552382, 0.020593435, -0.015137755, 0.013018704, -0.039079525, 0.014856776, 0.010074276, -0.012374793, 0.072164826, 0.024445191, 0.05020162, 0.014997265, -0.023157371, -0.0340219, 0.0038839523, 0.037276577, -0.03336628, 0.01174259, 0.052964583, 0.06827795, 0.013100656, -0.0075279013, -0.0057278783, -0.005645926, -0.004182493, -0.063969605, -0.036667787, -0.0661706, -0.022689072, 0.0098108575, 0.030298926, 0.056055352, 0.048890382, 0.0066264267, 0.021366129, 0.0015629469, -0.009038165, -0.0018117306, 0.057928547, -0.0065678894, -0.01904805, -0.0050898213, 0.0015366051, -0.026412046, 0.015336783, -0.002404421, -0.031820897, -0.010735747, 0.011941616, -0.018778777, 0.00823035, -0.012468453, 0.0021117344, 0.03022868, -0.036457054, -0.024421778, 0.015793374, 0.028683295, -0.0027585719, 0.0070244805, 0.03287457, -0.026622782, 0.0380961, 0.0069600893, 0.007961078, 0.027254984, -0.011291852, -0.040578082, -0.03430288, 0.0043551777, 0.027676452, -0.06275202, 0.05006113, -0.04202981, 0.0016844119, -0.021822719, -0.0014370916, -0.05029528, 0.015266538, 0.034443367, -0.010507452, 0.009723051, -0.014166036, -0.0038839523, 0.021752475, -0.0036585836, 0.007732782, -0.030673565, 0.016437285, 0.0055932426, 0.045916688, 0.010671357, -0.0135338325, -0.0062049576, -0.0005125676, 0.041116625, -0.009623538, -0.014400185, 0.027793527, 0.06645159, -0.03259359, -0.029385744, 0.03439654, -0.06701354, 0.022080284, 0.0385644, 0.03360043, -0.014681164, 0.0046273763, 0.030486245, -0.024304703, -0.024468606, -0.0073347283, 0.02685693, -0.0072996058, 0.021682229, -0.024070553, 0.06406326, 0.015910449, -0.0012248937, -0.04099955, -0.0003084186, -0.0032341878, -0.032499928, 0.018240234, 0.01862658, -0.016729971, 0.040601496, -0.027606208, -0.018041207, -0.0044254228, -0.010085983, -0.014915314, 0.006983504, 0.0324531, -0.0062166653, -0.0056225113, 0.02652912, -0.0016931925, -0.015430442, -0.019633424, -0.030416, -0.008470353, -0.018884145, -0.0010463549, 0.05020162, -0.021108564, 0.006790331, 0.03980539, -0.022759316, 0.016741678, 0.023368105, -0.01511434, -0.013943594, 0.017853888, -0.00064244727, 0.0005956174, 0.01743242, -0.010220619, -0.019422688, 0.0029590623, 0.024562266, -0.036644373, 0.03132918, -0.015032388, 0.0061288592, -0.032663833, -0.02657595, 0.0034595565, 0.011859665, -0.043060064, -0.014845069, -0.003143455, 0.02121393, 0.01719827, -0.012995289, 0.005669341, 0.07483413, 0.03486484, -0.01037867, -0.018661702, 0.0058625145], [0.057906408, -0.022659514, -0.0074954145, 0.060544614, -0.011849574, 0.0032614274, -0.033581246, 0.02232415, -0.00068540283, 0.014320098, -0.016645297, 0.04028855, 0.008775392, -0.023743862, -0.0045050737, 0.06582103, 0.0024453718, 0.031188972, -0.012576198, -0.063048676, -0.046325125, 0.000802082, -0.052585278, 0.022458296, -0.021150371, 0.027701173, -0.0076351496, 0.005371434, 0.0066346433, 0.002174285, 0.01256502, 0.019037569, 0.05419503, -0.017405458, 0.02850605, -0.021698134, -0.040243834, 0.030585315, -0.051064957, -0.013649368, -0.03257515, 0.021865817, -0.003314527, -0.017181883, -0.048426747, 0.0135934735, -0.003459852, 0.012889206, 0.0057459255, -0.02184346, -0.04473773, -0.009686467, -0.021563988, 0.011625997, -0.049455203, -0.0060421648, 0.04514017, -0.08952018, 0.024794674, -0.008171734, 0.0044380007, 0.050751947, 0.005265235, -0.011570103, -0.0064390134, -0.016555866, -0.004231192, 0.0077637066, 0.037449125, 0.040377982, 0.0015398856, 0.038522292, 0.025107682, -0.02772353, -0.029713364, -0.04927634, 0.060455184, 0.055670638, -0.030495884, -0.05245113, 0.038254, -0.043060903, 0.038857657, 0.020401388, 0.008708319, 0.005103142, 0.030652387, -0.067699075, -0.09363399, 0.0336036, -0.01797558, -0.010267767, 0.017327206, -0.03295523, -0.030361738, 0.07664215, 0.027567027, 0.0027108695, -0.025308901, -0.005614574, -0.029646292, -0.07981694, -0.10096731, -0.031345475, 0.05857714, -0.016499972, 0.06734135, -0.059024293, 0.0399979, 0.12645507, 0.033782464, -0.026270282, -0.054731615, -0.005055632, -0.049410485, 0.07874377, -0.041026354, -0.004848823, -0.0030546188, 0.023073131, -0.06810151, 0.017282492, 0.05102024, 0.0045749415, -0.021016225, 0.0317032, 0.014465423, 0.027410524, -0.035191, -0.031971492, 0.0045749415, -0.030697104, 0.039975543, 0.029959299, -0.0017914096, 0.017506069, 0.03961782, 0.029020276, -0.014532496, 0.001632111, -0.07337792, -0.0070762075, -0.0026032731, 0.006288099, -0.032709293, -0.010111264, -0.02066968, -0.013481685, -0.030674746, -0.037739772, -0.018869886, -0.08558522, 0.0226148, 0.010474576, 0.04107107, -0.019987771, 0.05508934, 0.015672738, -0.016757086, 0.030987753, 0.02116155, -0.076865725, -0.01614225, 0.010692564, 0.0035017726, -0.024504025, 0.011670712, 0.012922742, -0.055625923, 0.018802814, 0.03335767, 0.0014099316, -0.012766239, -0.005611779, -0.024191016, 0.021563988, 0.029646292, 0.005997449, -0.055804785, -0.044111714, -0.044380005, 0.020345494, -0.0006696826, -0.057906408, 0.034945063, -0.00488236, 0.017696109, -0.0011136922, 0.027768247, -0.0071712276, 0.003353653, 0.006120417, 0.022715408, -0.02656093, -0.021049762, -0.06362998, -0.049589347, -0.06523973, -0.0044883057, 0.017081272, 0.018601594, -0.060544614, -0.01227437, 0.013761156, 0.0024677296, 0.047398295, 0.03621945, -0.0065675704, -0.027186947, -0.0041641193, 0.015572129, 0.04963406, 0.030071087, -0.06152835, -0.02327435, 0.037024327, -0.070695005, -0.0010570993, -0.008372953, -0.04482716, 0.06273567, 0.010659027, -0.022547726, -0.013012174, 0.048158456, 0.06367469, -0.014655463, -0.03130076, 0.0054804278, -0.008674782, -0.026471501, -0.017696109, -0.0021141986, 0.04628041, -0.06577631, -0.011525387, -0.005382613, 0.0042451657, 0.09873154, -0.048918616, 0.0179644, 0.013984732, -0.0010270562, 0.008317059, -0.023900367, 0.05517877, -0.012061971, -0.055894215, -0.059963316, 0.0076686866, 0.032127995, 0.018433912, -0.012654451, 0.0040467414, -0.01873574, 0.092918545, -0.014867861, -0.055134054, 0.008630067, -0.03159141, -0.044961307, 0.04254668, -0.02367679, 0.009502017, 0.022592442, 0.002791916, 0.014979649, -0.014387171, -0.036487743, -0.028349547, 0.041473508, -0.019551797, -0.020267243, 0.021418663, -0.006416656, -0.022279434, 0.033290595, 0.003350858, -0.05312186, 0.061081197, -0.016198143, 0.008372953, 0.008255576, -0.018903423, 0.051646255, 0.028215399, 0.019004034, -0.03970725, -0.028640196, -0.008920717, -0.020602608, -0.022078214, 0.009054863, 0.063942984, 0.013168677, -0.022983702, 0.002540392, 0.011670712, -0.02609142, -0.00820527, 0.0018822377, -0.021944068, -0.047577158, -0.045274314, -0.0029623935, 0.0616625, 0.034162544, 0.072260045, 0.01546034, -0.028640196, 0.035481647, 0.02327435, -0.012229654, -0.057593398, 0.01594103, -0.018668668, 0.035727583, 0.040646274, 0.052316986, -0.053569015, -0.0038091908, -0.017215418, -0.047621872, 0.010452218, 0.012352621, 0.022055857, 0.004907512, 0.0025557629, -0.028528407, -0.0197083, -0.070873864, 0.018590417, 0.004029973, -0.005614574, -0.069308825, -0.09622748, -0.026404427, -0.041562937, 0.031166615, 0.00036994985, -0.061394207, -0.00045448984, -0.022290614, -0.047979593, 0.007506593, -0.02260362, 0.016063998, -0.018825172, 0.040735703, -0.028438976, 0.0013617228, 0.054105602, -0.00051492546, -0.00053344044, 0.0017033762, -0.01777436, -0.0773576, -0.0016670449, -0.00046881274, -0.007691044, 0.024191016, -0.06729663, 0.014901398, 0.08831286, -0.016097534, -0.03362596, -0.027880035, 0.0083282385, -0.0074898247, 0.015113796, -0.026404427, 0.012319085, -0.013917659, -0.0005718677, -0.0020652912, 0.00041955596, 0.020177811, 0.026628004, 0.010446629, -0.0004523938, -0.014398349, -0.027097516, -0.01641054, 0.040713347, 0.0039042109, 0.0055810376, -0.028282473, -0.0035381038, 0.0446483, -0.017662572, -0.007260659, -0.0146219265, -0.018791635, -0.046861712, 0.029042635, 0.00812143, -0.049186908, -0.008512689, -0.002135159, -0.012319085, -0.016824158, 0.02734345, 0.017897328, -0.03121133, 0.02513004, -0.03789628, 0.026873939, 0.052629992, -0.0064781397, 0.056788523, -0.021619882, 0.057325106, -0.02281602, -0.0022651132, 0.021429842, 0.009507606, 0.020971509, 0.0035129515, -0.03785156, 0.0156392, -0.018221514, -0.026605647, -0.054373894, 0.03979668, -0.057593398, 0.020971509, -0.057325106, 0.02542069, -0.0039768736, -0.07623971, -0.03865644, 0.0032474538, 0.01999895, -0.021552809, 0.005913608, -0.048337318, -0.028260116, -0.03103247, 0.0027430085, 0.035012137, 0.024101585, -0.02347557, 0.025554836, -0.014990829, -0.0546869, -0.0226148, -0.054955192, -0.0058800713, 0.0051366785, -0.001632111, -0.021876996, 0.012050793, -0.076016136, -0.035436932, 0.044961307, -0.017617857, 0.0141076995, -0.013559937, 0.0103516085, -0.118316874, -0.022078214, -0.04252432, 0.014744894, -0.008322649, 0.063987695, 0.004683935, 0.014387171, 0.011715428, 0.027321093, 0.010642258, 0.032239784, -0.013202214, -0.023341425, 0.03630888, 0.0004667167, -0.016734729, -0.0107372785, 0.04500602, 0.031345475, -0.024414593, -0.022726588, -0.004901923, -0.0013756964, 0.09327627, -0.007651918, -0.004250755, 0.0017438995, 0.054373894, 0.08531693, 0.012430874, -0.024772316, 0.03545929, -0.0043513644, -0.03487799, 0.015415625, -0.04317269, -0.05017065, -0.0434857, 0.024369879, 0.0049913535, 0.04668285, 0.0083282385, 0.021876996, -0.0043429807, 0.027365807, 0.028595481, -0.006673769, -0.026113776, -0.00439608, 0.017450174, 0.019149357, -0.026203208, -0.056877952, 0.0039293636, -0.03304466, 0.010301304, -0.019194074, 0.0193394, -0.02338614, 0.012967458, -0.017550783, -0.035615794, -0.02656093, -0.012352621, 0.043821067, 0.04098164, -0.00027527902, -0.0023531464, 0.005318335, -0.041138142, -0.056475516, -0.010608722, 0.020412568, 0.019283505, 0.04473773, -0.01999895, 0.049186908, 0.010278946, -0.035615794, -0.03188206, -0.0135934735, 0.07288606, -0.008976611, 0.010541649, -0.027432881, 0.052316986, 0.033156447, 0.03682311, -0.052943002, 0.027745888, -0.03304466, 0.04408936, -0.021239802, 0.021139191, 0.0034039577, -0.008289112, -0.016723549, -0.012833312, 0.005539117, -0.03505685, -0.007646329, 0.039193023, 0.096764065, 0.047666587, -0.01980891, -0.0029428303, 0.046638135, -0.010273357, -0.025554836, -0.0067967367, 0.030697104, 0.033402383, 0.008741856, -0.00917224, 0.020188991, 0.07324378, -0.011184433, 0.0026074653, 0.0011688878, 0.023699148, 0.0077804746, -0.022916628, 0.006684948, -0.05276414, 0.048829187, 0.006193079, -0.012486768, -0.033290595, -0.037136115, 0.00030200343, 0.0022469475, 0.03856701, 0.008898359, 0.009943581, 0.015963389, -0.018981675, 0.021407485, 0.02946743, 0.02008838, 0.059650306, 0.014610748, -0.013202214, -0.0014434682, -0.006360762, 0.009256082, -0.010021833, 0.008965432, -0.013638188, 0.032150354, 0.020211348, -0.01652233, -0.00036261373, 0.009641753, -0.03092068, 0.03680075, -0.004144556, 0.030004015, 0.0064725503, 0.024571097, 0.031077184, 0.016354647, -0.0066681798, 0.06036575, -0.052674707, 0.013839408, 0.012643271, -0.029713364, 0.022089394, -0.020703217, -0.01102234, -0.011067054, -0.054731615, -0.033693034, -0.025107682, 0.023251994, 0.006360762, 0.011385651, 0.060142174, -0.020155454, -0.026449142, 0.006193079, 0.052540563, 0.023945082, 0.048382033, -0.018568058, -0.005712389, 0.020960331, 0.005768283, 0.03583937, 0.0121178655, -0.036107663, 0.0047593922, 0.0074451095, 0.025465405, 0.04086985, -0.026873939, 0.0018738536, 0.09184538, -0.053077146, 0.014420708, -0.009434943, -0.03045117, 0.02165342, 0.013738798, -0.011234737, 0.02135159, 0.020379031, -0.02338614, -0.01931704, 0.020244885, 0.04900805, -0.030294664, -0.03876823, -0.048918616, -0.031747915, -0.024280448, 0.0061707213, 0.037560914, -0.04484952, -0.018512163, -0.06354054, -0.016175786, 0.02481703, -0.015818063, 0.03257515, -0.0089822, -0.026717436, 0.015706275, -0.022760125, -0.028774342, 0.02888613, -0.022357685, -0.0049242806, 0.06184136, -0.007897853, 0.016466435, -0.0044966894, -0.02696337, -0.01720424, 0.008518279, -0.042278383, -0.0023447624, 0.005681647, -0.007277427, 0.014867861, 0.020256063, -0.011871931, -0.0016684423, 0.009451712, -0.037314977, 0.02009956, 0.013984732, 0.015158511, 0.03785156, -0.005924787, -0.03490035, -0.0091945985, 0.0136270095, -0.0858088, 0.0051143207, -0.0037924226, -0.006696127, 0.024995893, -0.009999475, 0.019294683, -0.023721505, 0.008926306, -0.0015301042, 0.04601212, 0.0074618775, 0.034989778, -0.0063328147, 0.0523617, -0.010016243, -0.03680075, -0.025465405, -0.01816562, 0.0039014162, 0.01893696, 0.007528951, -0.008317059, 0.014532496, -0.016902411, -0.024884105, 0.00570121, -0.0068861675, 0.023162562, -0.040377982, -0.006919704, -0.020446103, -0.02396744, 0.011558924, 0.019674763, -0.010787584, 0.049321055, 0.019361757, 0.008769803, -0.026314996, 0.031479623, -0.028617838, 0.007601613, 0.029489787, 0.016075177, -0.025756054, 0.046593416, 0.007501004, -0.013884123, -0.03165848, 0.0394166, 0.026247924, 0.04239017, 0.029489787, -0.043843422, -0.020133097, 0.0048180814, 0.0003985956, 0.03760563, -0.022771303, -0.044536512, -0.04163001, 0.005603395, -0.0056676734, -0.02396744, -0.011419188, 0.019417651, 0.0015664353, -0.009882097, -0.011894289, -0.018702205, -0.012743881, 0.009244903, 0.014085342, 0.009038094, -0.005709594, 0.06608932, -0.0187581, 0.028438976, -0.005567064, 0.067788504, -0.009613805, 0.00054881134, -0.034989778, -0.0032250963, -0.0051813936, -0.047800735, -0.049589347, -0.007897853, -0.035325143, -0.026873939, 0.020524357, 0.053569015, 0.03943896, -0.010966445, 0.00425355, -0.03467677, -0.02443695, 0.006483729, 0.014577212, 0.032709293, 0.011547745, -0.035504006, -0.041607656, -0.00985415, -0.022167645, 0.040243834, -0.0028142738, -0.0010759636, -0.035191, -0.006735253, -0.024660528, -0.0164329, -0.0523617, -0.0033396794, 0.0035213355, 0.025353616, 0.024235731, -0.009166651, 0.011827216, 0.035727583, 0.011178843, 0.0066514118, -0.032731652, -0.012497947, 0.04936577, -0.038075138, 0.051154386, 0.008132609, -0.03758327, -0.012453231, 0.03333531, 0.07865434, -0.0031049238, 0.014890219, 0.006522855, -0.026404427, -0.046638135, -0.033894252, 0.024146302, -0.011251505, 0.0024425772, 0.011715428, 0.009725593, 0.015203226, 0.006455782, -0.0008747445, -0.02309549, 0.004502279, -0.076955155, -0.016254038, -0.013694082, -0.012263191, -0.027947107, -0.01662294, 0.010843478, 0.019607691, -0.04744301, 0.009345513, -0.034632057, 0.008954253, -0.00299593, -0.032038566, 0.044134073, -0.044022284, -0.026672719, -0.020468462, -0.0434857, 0.009507606, -0.0020149865, -0.023319067, 0.00074129703, 0.0062377946, -0.027768247, 0.023989797, -0.00067212794, 0.0077916537, 0.012654451, -0.027477596, -0.017852612, 0.0018431117, 0.025845485, 0.011128538, 0.023497928, 0.023945082, -0.04201009, -0.00054182456, 0.005824177, -0.0072997846, -0.012967458, 0.0030741817, 0.037247904, -0.012095508, 0.032619864, 0.023430856, 0.00608688, 0.028640196, -0.04393285, -0.009585858, 0.021407485, -0.010955267, -0.01758432, 0.01951826, 0.0031664073, 0.0025795181, 0.03257515, 0.0039740787, 0.038298715, 0.018825172, 0.051154386, -0.017025378, -0.0014686205, 0.03930481, -0.0020932383, 0.00830588, 0.047577158, 0.009166651, -0.032686938, -0.03033938, 0.0048432336, -0.007886673, -0.0067967367, 0.06850395, 0.04239017, -0.031613767, -0.062199082, 0.0035436933, -0.025375973, -0.01246441, -0.004102635, 0.0029344463, 0.001140242, 0.015315015, 0.01951826, -0.008166145, 0.034430835, -0.010932908, -0.015348552, -0.0010053972, 0.030406453, 0.008931896, -0.0016977867, 0.0076854546, -0.017606677, 0.0026060678, 0.00550558, 0.012889206, 0.00075317454, 0.022257077, -0.043798707, -0.008048767, 0.013917659, -0.033491813, 0.012777418, 0.018825172, 0.025912559, 0.0148119675, 0.013638188, 0.036890183, 0.01816562, 6.4453016e-05, 0.02309549, -0.0002005205, -0.037918635, -0.01565038, 0.045833256, -0.0033648317, -0.021910533, -0.005044453, 0.016600583, 0.02580077, 0.0019646818, 0.024749959, -0.05169097, -0.0048460285, 0.03630888, -0.031546693, -0.0034570573, -0.0020708807, 0.02146338, -0.007014724, 0.0011437354, -0.019082285, 0.012408515, -0.018221514, 0.024280448, -0.054150317, 0.016924769, 0.016019283, -0.02870727, -0.03680075, 0.0073109632, -0.0031831756, 0.011061465, -0.0024048486, -0.002005205, -0.02251419, 0.040668633, 0.004242371, -0.0074954145, -0.006405477, 0.06286982, 0.008160556, -0.03324588, 0.038723513, 0.014353635], [-0.013194593, -0.004871077, -0.020237567, 0.0064843073, 0.016333172, -0.0045007244, -0.017877355, 0.007971995, -0.019107679, -0.014249155, -0.017211976, 0.02259778, -0.03575471, 0.0052257366, -0.02100338, 0.057599228, -0.029552873, -0.0046356833, 0.018467408, -0.014977306, -0.022999518, -0.037085466, -0.03133559, 0.018957026, -0.018002898, 0.01890681, -0.008700145, 0.015178176, -0.02686625, 0.0147136655, -0.01609464, -0.0010467166, 0.029000483, -0.012591985, 0.007789957, 0.0070304205, 0.012704974, 0.0016461854, -0.033444714, 0.00030915017, -0.02259778, -0.008166586, -0.020061806, -0.012322067, 0.003163689, 0.00020341924, -0.022735877, 0.013081604, -0.018078223, -0.02832255, -0.014751328, -0.065985516, -0.018630615, -0.014701111, -0.03171222, 0.037637856, 0.03073298, -0.11238629, 0.048083052, -0.012642202, -0.030808305, 0.027845487, 0.004434814, -0.04363882, -0.013307582, -0.0035497346, -0.03628199, 0.01235973, 0.034147754, 0.028448094, -0.013182038, 0.03161178, 0.009145823, -0.023250604, 0.015040077, -0.043387737, 0.099580884, 0.021618543, 0.006396427, -0.02686625, -0.0048208595, -0.008273298, -0.017237084, -0.027795268, 0.020149687, -0.019308547, 0.045295995, -0.07884114, -0.020425882, -0.0006936263, -0.0059350557, -0.038591985, 0.0397972, -0.023639789, -0.057498794, 0.01783969, -0.02721777, 0.019245775, -0.030883633, -0.008449059, -0.037713185, -0.05019218, -0.047857076, -0.07241333, 0.012265572, 0.017186867, 0.03874264, -0.012083535, 0.008957509, 0.14593144, 0.02608788, -0.031360697, -0.043387737, 0.0041931435, -0.046250124, 0.06764269, 0.022911638, -0.015090295, -0.012347176, 0.02146789, -0.088633515, -0.0030648238, 0.06392661, 0.014198938, 0.013257364, 0.0026442541, -0.014738774, 0.0168479, -0.0051001934, 0.028071463, -0.0038698697, 0.045572188, 0.0769831, 0.00087174075, 0.05905553, -0.011907774, 0.045647513, 0.0034398842, -0.05092033, 0.005520763, -0.015266055, -0.014286818, 0.010890874, 0.04132883, -0.025761468, 0.017161759, -0.04519556, -0.024932884, -0.021656206, -0.005451714, -0.0040299376, -0.034549493, -5.507228e-05, 0.0028262918, 0.070203766, -0.009208595, 0.059206184, 0.039922744, -0.009955578, 0.01397296, 0.00225507, -0.053632062, 0.011970546, 0.0479324, -0.005282231, -0.026389185, 0.027694834, 0.0019443507, -0.025598263, 0.03218928, 0.01943409, 0.00541719, 0.026966684, -0.013847417, -0.0011220425, 0.040098503, 0.015630132, 0.04798262, -0.018103333, -0.031812653, -0.053782716, 0.0050091743, 0.026941575, -0.07452246, 0.0034587157, 0.055038147, 0.034951232, 0.00795944, 0.029427331, -0.057900533, -0.008066152, -0.01600676, 0.042308066, -0.048007727, -0.01536649, -0.015353936, -0.016245292, -0.06452922, 0.01591888, 0.024493482, 0.010664896, -0.027368423, 0.015793337, -0.011631579, -0.07035442, 0.06493095, 0.05513858, 0.039219704, -0.002772936, -0.005909947, 0.051422503, 0.017324964, -0.0014170691, -0.029000483, -0.028774505, 0.031009175, -0.014475133, 0.029577982, -0.052276198, -0.08310961, 0.047605988, -0.015642686, 0.002087156, -0.014424916, 0.032691453, 0.048057944, 0.0067102853, 0.016232738, 0.060712703, 0.00078464515, 0.0104640275, -0.033017866, -0.02027523, 0.03131048, -0.053431194, 0.01370932, -0.017186867, 0.04609947, 0.037537422, 0.0060103815, 0.0023602126, 0.06352487, -0.04946403, -0.013759537, 0.0019113955, 0.0078527285, 0.05066924, -0.044668276, -0.01768904, 8.5084954e-05, -0.026891358, -0.022509899, 0.018103333, 0.030682763, -0.0034461613, 0.0119831, -0.008210527, -0.04296089, -0.018869147, -0.036558185, -0.03665862, 0.033218738, -0.013031386, 0.083662, -0.018065669, -0.011876388, 0.0331183, 0.0044316757, -0.055439886, -0.009591502, 0.055038147, -0.068044424, -0.008857074, 0.009403187, 0.03201352, 0.005197489, 0.063625306, 0.03575471, -0.03999807, 0.04685273, 0.023715114, 0.017852247, 0.024782231, 0.028824722, 0.014023177, -0.01333269, 0.005178658, -0.02538484, -0.03161178, 0.017375182, 0.014035732, -0.059507485, 0.030883633, 0.05644423, 0.05202511, 0.010840657, 0.0011981531, 0.014060841, -0.024857558, 0.024619026, 0.0055270405, 0.026765814, -0.024945438, -0.051924676, 0.018053114, 0.031913087, -0.002573636, 0.07542637, -0.036784165, -0.010809272, 0.071308546, 0.013960406, -0.032666344, -0.052728154, 0.012171415, -0.046149686, -0.0032986482, 0.015266055, 0.08019701, -0.028422985, -0.03146113, -0.06171705, -0.053380977, 0.0351521, 0.012271849, 0.0049652345, 0.0028670933, -0.03716079, -0.04778175, 0.0027446887, -0.05870401, 0.030632546, -0.020237567, 0.013382907, -0.037738293, -0.09229937, 0.004670208, -0.0737692, 0.006208112, -0.024355385, -0.02257267, 0.0219324, -0.050066635, -0.040073395, 0.023275713, -0.01609464, -0.021015935, -0.01019411, 0.037763402, -0.016056977, 0.0015096572, 0.082858525, 0.04132883, 0.025887012, 0.0275944, -0.022283921, -0.00842395, -0.037085466, -0.02518397, 0.0020353694, 0.061014004, -0.057046838, 0.056193147, 0.06292226, -0.023401257, -0.024468374, -0.03703525, 0.025887012, -0.04574795, 0.034323517, -0.035503622, 0.018680831, -0.016483825, -0.053079672, -0.040023178, 0.0016916948, 0.047756642, 0.013546114, -0.022961855, 0.015052632, -0.03645775, -0.016308064, -0.021831965, -0.002021246, 0.024957992, -0.0014068687, 0.009001449, 0.032691453, 0.00078464515, -0.02370256, -0.001457086, 0.011531144, -0.003086794, -0.07788701, 0.022472236, 0.0540338, -0.06267118, 0.0053826654, 0.008668759, 0.016056977, 0.007720908, 0.010551908, -0.02009947, -0.032992758, 0.016245292, 0.026891358, -0.011838726, -0.02890005, -0.0012789716, 0.047857076, 0.027142445, 0.023489136, 0.020840174, 0.01036987, 0.028422985, 0.05162337, 0.01333269, 0.0035152102, 0.007953163, 0.0019804442, 0.0006598866, -0.0198986, 0.0014257001, 0.05724771, -0.010715114, 0.032691453, -0.063022695, 0.038441334, 0.011305167, -0.026816031, -0.0041774507, 0.044115886, 0.02666538, -0.012880734, -0.035076775, -0.068647034, -0.04670208, 0.008681314, -0.029201353, 0.026062772, 0.007457267, -0.0039985515, 0.003173105, -0.0054674074, -0.02834766, -0.027845487, -0.060411397, 0.03851666, -0.011468373, -0.015692903, -0.063324, -0.0184423, -0.054636408, -0.046902947, 0.058151618, -0.019270884, 0.02544761, -0.06076292, 0.032992758, -0.067542255, 0.010539353, 0.038014486, 0.047530662, -0.032440368, 0.017350072, 0.002670932, -0.0018078224, 0.034926124, 0.01554225, 0.025836794, -0.018718494, -0.015391598, -0.1379971, 0.013621439, 0.011706905, -0.03367069, -0.033419605, 0.0005661215, 0.060059875, -0.012968615, -0.0030726702, -0.04278513, -0.00020695015, 0.033218738, 0.008951232, 0.015404153, 0.03944568, 0.009673105, 0.042358283, -0.032691453, -0.030029938, 0.014224047, 0.047831967, -0.0073003382, 0.004362627, -0.020400774, -0.0016901256, -0.026740706, 0.011110575, 0.039872527, 0.012968615, -0.004017383, -0.00025755976, 0.02027523, 0.029427331, -0.043764368, -0.04871077, -0.03462482, -0.02507098, -0.043287303, -0.0135210045, -0.021480445, -0.029552873, 0.010445196, -0.063625306, -0.0014107919, 0.005931917, 6.8705485e-05, -0.008599711, 0.02538484, -0.028473202, -0.018166104, -0.028573636, -0.017324964, -0.012717528, 0.0012562169, -0.024832448, 0.0351521, -0.030055046, -0.05513858, -0.023288267, -0.003989136, -0.010890874, 0.026740706, -0.0021875906, -0.03216417, 0.024418157, 0.02343892, -0.03741188, 0.043538388, 0.044517625, 0.102845006, -0.0054674074, 0.0039169486, -0.030833414, 0.042910673, 0.030080155, 0.024543699, -0.032214392, 0.06297248, -0.05109609, 0.01859295, 0.011405601, 0.018166104, -0.023978755, -0.016308064, -0.061265092, -0.033068083, 0.013345244, 0.0036250604, 0.0073882183, 0.02741864, 0.060461614, 0.048760988, -0.01905746, -0.024443265, 0.07748528, 0.00084035494, 0.006628682, -0.02890005, 0.017977789, 0.030230807, -0.010206664, -0.027092228, -0.03404732, 0.07035442, -0.024154516, -0.040098503, 0.025372285, -0.027343314, -0.02910092, -0.010175278, -0.0069613717, -0.032817, 0.016709803, 0.007670691, -0.003330034, -0.037838727, -0.0371859, 0.0039169486, -0.016370837, 0.023828102, 0.016031869, -0.021455336, -0.008919845, 0.008367456, -0.007934332, 0.021380011, -0.0048145824, 0.023539353, -0.00685466, -0.019911155, 0.014111058, 0.006641236, 0.0029926365, -0.02350169, 0.0051598265, -0.02756929, 0.028448094, 0.029025592, -0.06377596, -0.013031386, 0.044316757, -0.030155482, 0.028197007, -0.036131337, -0.016220184, 0.058553357, -0.0020683245, 0.036256883, 0.023376148, 0.030029938, 0.0662366, -0.008317239, 0.011976823, 0.020664414, -0.008543216, 0.0010271005, -0.016345726, -0.0116504105, -0.049765334, -0.015768228, -0.037286337, -0.035980687, -0.0019506278, 0.019032352, -0.019860938, 0.0566451, -0.034700144, 0.010275712, 0.031586673, 0.022359248, -0.0017905602, 0.0051880735, -0.023526799, -0.01286818, 0.0368846, -0.01783969, 0.03628199, -0.018090777, -0.021769194, 0.036030903, -0.02405408, 0.04255915, -0.003703525, -0.0172873, 0.007896668, 0.040475134, -0.05292902, 0.0074196043, -0.03000483, -0.034649927, -0.0050311447, 0.03869242, -0.009553839, -0.027820377, -0.022321584, -0.024229841, 0.034022212, 0.04225785, 0.04160502, -0.031385805, -0.032691453, -0.021857075, -0.03349493, -0.016998552, -0.0032452922, 0.06985225, -0.025146307, -0.0071559637, -0.021970063, -0.055841625, -0.013370353, -0.024581362, -0.03575471, -0.002076171, 0.009126992, -0.030431677, -0.02094061, 0.016458716, -0.015680349, -0.04426654, -0.015994206, 0.0345746, 0.017789474, -0.0033520039, -0.017940126, -0.059557702, 0.035453405, 0.03723612, -0.003948334, -0.05019218, -0.02666538, 0.008574602, 0.02434283, 0.014286818, 0.006471753, -0.03999807, -0.013495896, -0.02608788, 0.0018784404, 0.022610335, 0.018002898, 0.057649445, -0.013194593, -0.020978272, -0.0052351523, 0.015065187, -0.048183486, 0.006873491, 0.028674072, -0.039219704, -0.027167553, -0.0342733, 0.026740706, -0.013006277, -0.01397296, 0.030833414, 0.062118784, 0.009955578, 0.017714148, 0.008505553, -0.022698214, -0.011832449, -0.0348508, -0.002021246, -0.013345244, 0.010338484, 0.015617576, -0.02593723, -0.015906326, -0.01841719, -0.018580396, -0.02869918, -0.009622888, 0.0024433848, 0.060310964, -0.0091018835, 0.014776437, -0.019672623, -0.011273781, 0.0048522456, 0.018078223, 0.012070981, 0.024292612, 0.022359248, 0.033821344, -0.002184452, 0.016458716, -0.014362144, -0.019710286, -0.0046199905, 0.020137133, -0.018643169, 0.02166876, 0.008731531, -0.001286818, -0.064127475, 0.03226461, 0.009472236, 0.009585225, 0.0485099, -0.041981652, -0.0042684693, 0.029025592, -0.0008521246, 0.018316755, -0.016270401, -0.028950267, -0.023815548, 0.0014774868, -0.0099493, -0.025761468, -0.019308547, 0.029778851, -0.01490198, -0.0009886528, 0.005737325, -0.034147754, -0.021480445, 0.013533559, 0.041228395, 0.017588604, 0.011637856, 0.040826656, -0.007821343, 0.04645099, -0.024970546, 0.010809272, -0.017751811, -0.008875906, -0.04243361, -0.031913087, 0.028774505, 0.0054736845, -0.033545148, -0.016132304, -0.0077397395, -0.0127300825, 0.036056012, 0.03781362, 0.016282955, -0.0010129769, 0.028523419, -0.008361178, 0.035478514, 0.023853213, -0.0022535007, 0.0023806132, 0.008562048, -0.004397151, -0.03352004, 0.006622405, -0.0010710406, 0.028799614, 0.04218252, -0.0044253985, -0.025133753, -0.03186287, -0.015215838, -0.020815065, -0.051824242, -0.008229358, 0.033394497, 0.001956905, 0.008411395, -0.047354903, 0.02390343, 0.025435057, -0.010991309, -0.024744568, -0.026062772, -0.010332207, -0.0052477065, 0.022296475, 0.018479962, 0.0070429747, 0.007940609, -0.008329793, -0.0008340778, 0.038416225, 0.01870594, 0.030758088, 0.008405118, -0.049639788, -0.017563496, -0.022472236, 0.033771127, -0.041579913, 0.048007727, 0.012209078, 0.019848382, 0.010771608, -0.038039595, 0.016056977, -0.0239662, -0.025422502, -0.083009176, -0.027619509, -0.086172864, -0.022208596, 0.0061233705, 0.015868664, 0.062319655, 0.02303718, -0.020488653, 0.050116852, -0.011549977, 0.051723808, -0.035804927, 0.03367069, -0.0059884116, -0.024116853, -0.014462579, 0.03367069, -0.02890005, -0.017475616, -0.0053826654, -0.040851764, 0.005919363, -0.015718011, -0.016496379, -0.021066152, 0.008637373, 0.010539353, 0.037135683, -0.033042975, -0.0142617095, -0.005103332, 0.0055019315, 0.0060260748, 0.009296475, 0.0001869417, -0.018140996, 0.008555771, 0.0032358766, 0.017186867, 0.0070743603, 0.00015379045, -0.027870595, -0.025347177, 0.0022064222, -0.003763158, -0.056795754, 0.0172873, -0.018818928, -0.014048287, 0.003276678, -0.0035528732, -0.04969001, 0.0001129889, 0.008731531, -0.0024418156, 0.033570256, -0.041831, 0.023539353, 0.029929504, -0.010150169, -0.0003834953, -0.035428297, 0.012453888, 0.015052632, 0.024845004, 0.015215838, -0.009246258, -0.034875907, -0.014136166, 0.008800579, -0.02259778, 0.000485303, -0.008009657, 0.08014679, -0.012322067, -0.03374602, 0.009936746, -0.07683245, -0.016596813, 0.008141478, 0.009698214, -0.02797103, -0.024229841, 0.01963496, -0.042132303, -0.004120956, -0.0048051667, 0.01304394, 0.004682762, 0.011104298, -0.0129560605, 0.05940705, 0.03535297, -0.017626269, -0.009378078, -0.015178176, 0.009503622, 0.014161275, 0.025485273, -0.016709803, -0.0021766056, 0.04539643, -0.03387156, 0.012792854, 0.005097055, 0.00075953646, 0.021367457, 0.01963496, 0.032892324, -0.0198986, -0.01235973, 0.0061704493, 0.054535974, -0.01952197, -0.02242202, -0.012001932, -0.0032358766, -0.024832448, 0.011625302, 0.016308064, -0.024882667, -0.0028372768, 0.0781381, -0.048309032, 0.024003863, 0.028598746, -0.018856592, -0.0045132786, 0.011989377, 0.019547079, 0.0018250846, -0.006314824, -0.0051943506, -0.0034430227, -0.0077460166, -0.01304394, -0.062118784, 0.020513762, 0.017827136, 0.009095606, -0.06553356, -0.0060888464, 0.03218928, 0.0058408985, 0.016044423, 0.019660069, -0.00694254, 0.053581845, 0.033821344, -0.029678417, -0.0139227435, 0.055088364, 0.0035811204, -0.003411637, 0.005379527, 0.009811203], [0.019293685, -0.022723926, -0.008473039, 0.03799477, 0.030746816, 0.004874704, -0.05574997, -0.0023290885, 0.017789392, -0.0015626972, -0.017732412, 0.04403473, 0.0041054636, -0.010900419, 0.033778194, 0.021721065, -0.061311293, 0.011436038, -0.013584212, -0.039658606, 0.0071966695, -0.062633246, -0.054519188, 0.037060283, 0.0018789405, 0.034644302, -0.020102812, 0.014723828, -0.016843513, -0.0007507215, 0.037584506, 0.004897496, 0.053972173, -0.021333596, 0.03949906, -0.022997433, 0.023065811, -0.0029829426, -0.045880906, 0.00089815917, -0.0068661813, 0.011738036, -0.007760779, -0.034028906, -0.046154413, 0.028809471, -0.04006887, -0.019077158, -0.011715244, -0.014461716, 0.036353722, -0.030906362, 0.03662723, -0.017014453, 0.006917464, -0.005490096, 0.0387925, -0.1290956, -0.013493043, 0.013527231, -0.046086036, -0.0019458928, -0.019156931, -0.02256438, 0.005435964, -0.021390576, 0.05985259, -0.019373458, 0.015441786, 0.04207459, -0.040547505, 0.013481647, -0.018404784, 0.025686925, 0.0014010144, -0.045379475, 0.079408385, 0.06409196, -0.04640513, -0.015430389, 0.011863394, -0.02819408, -0.02108288, -0.000752146, 0.025914848, -0.0017478847, 0.00015197837, -0.0882518, 0.014347754, -0.012501578, 0.0159888, 0.0075100637, 0.016273703, 0.044650123, -0.073391214, -0.010302121, 0.029356485, 0.0007806364, 0.0012849161, 0.0071111983, -0.0059658852, -0.0426444, -0.06509481, -0.033732608, 0.0112593975, 0.04088939, 0.039635815, -0.020604242, -0.009492994, 0.084468275, 0.013128366, 0.007948816, 0.02286068, -0.008700961, -0.04282674, 0.033162802, 0.009794992, -0.012444598, -0.028923431, 0.0033732608, -0.06363611, -0.020946126, 0.020216772, 0.019909076, 0.0008397539, 0.033823777, 0.010911815, 0.07653655, -0.010917513, 0.011692451, 0.004319141, 0.006490108, 0.055294126, 0.060992204, -0.00038960594, -0.009863369, 0.013390478, -0.0126041435, -0.0009743709, 0.01172664, -0.037880808, 0.0015327823, -0.037652884, 0.0034302415, -0.029926294, 0.014381943, 0.005646793, 0.003988653, -0.056661665, -0.035464823, -0.034689885, 0.006666749, 0.025869263, 0.049140204, 0.01711702, -0.008131154, 0.011612678, 0.043692846, -0.018438973, -0.016034385, 0.033094425, -0.101289, 0.0053390968, -0.001298449, 0.035966255, -0.02384075, 0.03266137, -0.00982918, -0.056160234, 0.03769847, -0.01385772, -0.035989046, -0.008085569, 0.019020177, -0.012661125, 0.009436013, -0.00048718546, 0.019624174, -0.030906362, -0.071659, -0.044080313, 0.09144272, 0.041846666, -0.061630387, 0.019783719, 0.024980364, -0.018678293, -0.012239466, 0.06782989, -0.019555796, -0.01282067, -0.043009076, -0.0005438101, -0.049003452, -0.008028588, -0.040843807, -0.028330833, -0.07840552, 0.033823777, -0.041778293, -0.016946077, -0.040251207, 0.008729452, 0.024182633, -0.09363078, 0.0054388135, 0.037744053, -0.034872223, -0.013470251, -0.01415402, 0.020410508, 0.00497442, 0.030245386, -0.021629896, 0.017869165, 0.0035641463, -0.06463897, 0.047863837, -0.023931919, -0.04850202, 0.05069008, -0.003250752, -0.018985989, 0.011920375, -0.0420518, 0.04713448, 0.0043105944, 0.014666847, -0.013504439, -0.05027982, 0.06778431, -0.025800887, -4.11775e-05, 0.02851317, -0.025208287, 0.03699191, -0.017242378, 0.048775528, 0.035464823, -0.018074296, 0.024319388, 0.05342516, -0.0814141, -0.047180068, 0.026484655, 0.07257069, 0.00894028, 0.040410753, -0.0066724466, 0.00075285824, 0.027692648, -0.015943216, -0.009390429, 0.0021681178, -0.01267252, 0.044376615, 0.012478786, -0.059214402, 0.013515836, 0.05306048, 0.0019800812, 0.07612629, -0.0464963, 0.04800059, -0.012444598, -0.04305466, 0.048729945, -0.051145926, -0.031909224, -0.0316813, 0.036741193, -0.021174049, -0.038564578, 0.018837838, 0.03872412, 0.004051332, 0.034302417, 0.03840503, -0.02564134, 0.08843414, 0.021162653, -0.007829156, -0.0020513074, 0.033208385, 0.041823875, -0.040456336, -0.0189518, -0.015646916, 0.007601233, 0.039704192, -0.019077158, -0.04968722, 0.048182927, 0.05214879, 0.01995466, 0.0034387887, 0.011908978, 0.0034986185, -0.05137385, -0.0014366274, -0.019134138, 0.032501824, 0.026507448, -0.05315165, 0.024091464, 0.01974953, 0.016683966, 0.06431988, 0.04070705, -0.021185445, 0.060399603, -0.026279526, -0.042302515, -0.068376906, -0.0031880734, -0.010980192, -0.013379082, 0.02780661, 0.053972173, -0.02143616, -0.035419237, -0.0074872714, -0.063544944, -0.022929057, 0.019339269, -0.019806512, -0.008621189, -0.015498766, -0.04503759, -0.017504489, -0.057938036, -0.00027226118, -0.011965959, -0.029333694, -0.045972075, -0.08879881, -0.013504439, -0.0405703, 0.0633626, -0.058348294, -0.0071795755, -0.019156931, 0.02384075, -0.043419335, -0.012285051, 0.016296497, -0.01741332, 0.004740799, 0.012706709, -0.031726886, 0.0013297885, 0.03690074, 0.023498865, -0.011487321, 0.03512294, 0.024228217, -0.04287232, -0.029082978, -0.01900878, 0.0077379867, 0.093174934, -0.07772175, 0.024798026, 0.020125603, -0.004287802, -0.052467883, -0.04227972, -0.0041766893, 0.023749579, 0.023977503, -0.013515836, -0.006997237, 0.017071435, -0.071795754, -0.0148036005, 0.005284965, 0.009857671, -0.0053106067, -0.027350763, 0.01335629, 0.0069744447, -0.021629896, -0.0008383294, 0.037493337, 0.0036353723, 0.002475814, -0.030951947, -0.009567069, 0.023498865, -0.02147035, 0.021401972, 0.02751031, -0.02969837, -0.023817956, -0.008547113, 0.037174247, 0.0007799241, -0.00041774017, -0.015168278, 0.005336248, 0.01409704, -0.011715244, -0.0037151454, -0.019111346, 0.010632609, -0.007720893, -0.0052935123, 0.029789539, 0.00787474, 0.06135688, -0.0058462257, -0.00015687515, 0.016000196, 0.035282485, 0.0105870245, 0.0084787365, 0.041801084, 0.020182583, -0.042484853, 0.031385, 0.026598617, -0.011453132, -0.010165367, 0.013698174, -0.03621697, 0.046678636, -0.017515885, 0.032456238, -0.00030075156, -0.04622279, -0.0275331, 0.027100049, 0.024684064, 0.025664132, -0.033162802, -0.101289, -0.04423986, -0.041527577, -0.0061026393, 0.009749408, -0.009316354, -0.016387666, -0.0015569992, 0.031111494, 0.00037892204, -0.012706709, -0.048319682, -0.00678071, 0.03840503, 0.005700925, -0.07471317, -0.036171384, -0.0035271088, -0.066052094, 0.07954514, 0.008672471, 0.009726616, -0.0393851, 0.015966007, -0.04909462, -0.021550123, 0.018974593, 0.044695705, -0.03215994, 0.03514573, -0.032319486, -0.020080019, 0.087659195, 0.038815293, 0.008495831, 0.01578367, 0.0031396397, -0.04713448, -0.008552812, 0.016125554, 0.010285026, -0.03778964, 0.0008554236, 0.015122693, -0.041094523, -0.029789539, -0.01465545, 0.009304957, 0.04394356, 0.0017165453, 0.033960532, 0.028946225, 0.0023048716, 0.037447754, -0.03334514, -0.00050997775, 0.057071928, 0.016854908, -0.017458905, 0.026233941, -0.07079289, -0.00390888, -0.019715343, 0.027897779, -0.020216772, 0.03195481, -0.008820621, 0.0012606992, 0.030177008, 0.03204598, 0.008421756, -0.041117314, -0.045766946, 0.008376171, -0.008039985, -0.005487247, 0.0030199802, -0.04364726, 0.033026047, -0.045949284, -0.000883914, 0.012797878, 0.014416131, 0.023099998, 0.01900878, -0.02245042, 0.00962405, -0.04936813, -0.024296595, -0.009698125, -0.011749432, 0.03304884, 0.04581253, -0.02801174, -0.042803943, -0.023772372, -0.020478884, -0.00044266926, 0.02067262, 0.022131326, -0.00059259986, 0.018678293, 0.0025926244, -0.022245288, 0.017891958, -0.03576112, 0.087659195, -0.0005893947, 0.037447754, -0.04932254, 0.051237095, -0.025618548, -0.015327823, -0.01930508, 0.03594346, -0.03662723, 0.06473014, -0.03304884, 0.055795558, -0.012740897, -0.030063048, -0.05315165, -0.0379036, 0.02928811, -0.020706806, 0.03218273, -0.012752294, 0.07927163, 0.048821114, -0.017983127, -0.075260185, 0.0017578563, -0.005498643, 0.015099901, 0.022302268, 0.03931672, 0.009498692, -0.017447507, -0.009407523, -0.015156881, 0.049823973, -0.03355027, -0.03491781, 0.015122693, -0.004880402, -0.0022265231, -0.004319141, 0.01086623, -0.041413613, 0.03352748, 0.0010491582, -0.011213813, -0.033413514, -0.0010990164, 0.036581647, 0.0014558583, 0.017208189, 0.057071928, 0.01678653, 0.0149859395, 0.0019316477, 0.0091511095, -0.008341983, -0.024798026, 0.018097088, 0.048091758, 0.027373556, -0.008393265, 0.026963294, -0.062222987, -0.013880513, 0.0319776, -0.043806806, -0.0022037309, 0.027396347, 0.0110143805, 0.0063305623, 0.010062802, -0.05620582, 0.011874789, -0.011738036, 0.027829401, 0.03560158, 0.013960285, 0.038427822, -0.0053533423, -0.00512257, 0.10612096, -0.017401922, -0.0013041471, -0.020125603, 0.0043875184, 0.029151356, -0.003014282, -0.0027963307, 0.030313762, -0.014324962, -0.003014282, -0.054017756, -0.006250789, 0.016364874, 0.070838474, 0.08948258, -0.026598617, 0.012592747, -0.003008584, 0.009635446, 0.021538727, 0.060946617, -0.029926294, -0.034393586, 0.040228415, -0.021299407, 0.041641537, -0.050325405, -0.01960138, 0.017891958, 0.023122791, 0.023703994, 0.0038689934, -0.02395471, 0.020353526, 0.032410655, -0.013493043, 0.027441932, -0.043510508, -0.043829598, 0.00040064595, 0.005322003, 0.009202392, 0.008968771, -0.024911987, -0.021892007, 0.0007571318, -0.0024530217, 0.08401243, -0.035419237, -0.022735322, 0.020136999, -0.070884064, -0.011851997, -0.025025949, 0.032934878, -0.015874838, -0.0028419152, -0.036558855, -0.03692353, -0.004435952, 0.0108605325, -0.033231176, 0.0035698444, -0.0307924, 0.0010883325, -0.017299358, -0.018393388, 0.012342032, -0.026735371, -0.028923431, 0.034393586, -0.0024088614, 0.023909125, 0.0057066227, -0.044764083, 0.0077778734, 0.027008878, -0.011407548, 0.003011433, -0.02949324, -0.00031855804, -0.007675308, 0.014860582, -0.010683892, 0.03783522, -0.023612825, -0.032592993, 0.020216772, -0.0033932042, 0.023772372, 0.034279622, 0.019168327, 0.009094128, -0.044764083, 0.0025570116, -0.013618401, 0.022587173, -0.025983226, -0.019909076, -0.023590034, -0.023931919, -0.041550368, -0.03653606, 0.0076240255, -0.015772274, 0.016239516, -0.0012307843, 0.0408666, -0.03334514, -0.002925962, 0.0074245925, -0.05274139, 0.021595707, -0.010507252, 0.0014544338, 0.012626936, 0.018176861, -0.02345328, -0.041915044, -0.021242427, -0.015555747, 0.004128256, -0.022336457, 0.037470546, 0.0029943387, -0.0108605325, -0.015316428, -0.013675381, 0.010854834, 0.057846863, -0.013720966, 0.006666749, 0.056752834, 0.01231924, 0.0004960887, 0.0070371237, -0.020740995, -0.005737962, 0.025709718, -0.017003058, -0.021276616, 0.008376171, 0.015646916, 0.0060570543, -0.053288404, 0.005857622, 0.0065356926, 0.0042222743, 0.0016438948, 0.004963024, -0.037744053, 0.0047949306, -0.022894869, 0.017538678, -0.018347804, -0.019270891, -0.049049035, 0.010906117, 0.009891859, -0.028239664, -0.018587124, 0.049231373, -0.0017165453, -0.020102812, -0.012592747, 0.019578587, -0.0044530462, 0.037630092, 0.014632658, 0.03644489, -0.0025798038, 0.025481794, -0.036194175, 0.024980364, 0.02034213, -0.004510027, -0.014621262, 0.027555894, -0.04139082, 0.0066724466, 0.009703823, 0.013823532, -0.06149363, -0.00737331, -0.032342277, -0.0310887, 0.04565298, 0.0068775774, 0.011772225, -0.0017991674, 0.019099949, -0.05871297, 0.054610357, 0.0420518, -0.00012891897, 0.01519107, 0.022199703, 0.02851317, -0.016091365, 0.0019259496, -0.045265514, 0.035100147, 0.05214879, -0.016752342, -0.0039573135, -0.015453181, -0.011390453, -0.043692846, -0.03699191, 0.011470227, 0.013846324, 2.2669883e-05, 0.037424963, -0.04503759, 0.0088833, 0.021151258, -0.0022763812, -0.012934632, -0.006233695, -0.0053704362, -0.0027635668, -0.024798026, 0.020946126, -0.018188257, -0.020501677, 0.0027607176, -0.0032649974, 0.09454247, 0.010644006, 0.029880708, 0.02067262, -0.00843885, -0.007760779, -0.037858017, 0.02543621, 0.027031671, 0.030313762, 0.0127864815, 0.010359102, 0.007441687, -0.023122791, 0.011065663, 0.011447434, -0.011139738, -0.05511179, -0.0071111983, -0.023316525, -0.015122693, 0.0069744447, 0.022154119, 0.06117454, 0.029766748, -0.030564478, 0.013515836, -0.04186946, -0.0030741119, -0.0028547358, -0.015521558, 0.028422002, -0.0307924, -0.0140400585, -0.014461716, 0.011561396, 0.044399407, -0.0077265906, -0.029151356, 0.0119317705, 0.011242303, -0.004518574, 0.01519107, 0.0013084207, 0.034598716, 0.0104331765, -0.018097088, -0.048912283, -0.02137918, 0.026051601, 0.00093021087, 0.017903354, 0.01430217, -0.006262185, 0.005042797, -0.004302047, -0.011287888, 0.029037394, -0.037675675, 0.033709817, -0.007133991, 0.011920375, 0.031795263, -0.0036638626, 0.046017658, -0.04009166, -0.011082757, 0.019829303, 0.003772126, -0.030837987, -0.023339318, 0.022518795, 0.0113505665, 0.050826836, -0.0078006657, 0.009812087, 0.021299407, 0.03106591, 0.032798123, -0.018758066, 0.01936206, 0.012797878, -0.011270794, 0.03503177, 0.010564232, -0.026461864, -0.029949086, 0.01261554, -0.031111494, -0.0010370498, 0.040365167, 0.058165956, 0.0127864815, -0.018484557, 0.026165564, -0.039932113, 0.002431654, 0.008666773, -0.016980266, -0.03940789, -0.017162604, 0.028786678, -0.009567069, -0.023316525, -0.019020177, -0.003974408, -0.013185347, 0.030815193, -0.011886186, 0.051784113, 0.010239442, -0.010621213, 0.013880513, -0.008501529, -0.012102713, 0.013663986, 0.0177666, 0.0006684555, -0.0053846817, 0.06650794, -0.050143067, -0.01613695, 0.017664034, -0.0026467561, 0.013891908, -0.004002898, 0.0310887, -0.021948988, -0.050963588, 0.01859852, 0.038541783, -0.055248544, -0.009777898, -0.019738134, -0.047863837, -0.044171482, 0.0033419214, 0.02321396, 0.012775086, 0.021208238, 0.032296695, -0.04490084, -0.00013363769, 0.03861016, -0.021812234, 0.013094178, 0.0358295, -0.0019501664, -0.005259324, -0.018416181, 0.016718155, -0.0073562157, -0.024752442, -0.0014359151, -0.048365265, 0.03778964, -0.003971559, 0.026963294, -0.014165416, 0.0010085594, 0.036011837, 0.01862131, -0.013071385, -0.00082479644, 0.033800986, 0.0056097554, 0.042348098, -0.008433152, 0.0033504686, 0.076855645, 0.021356387, 0.010239442, 0.022290872, -0.025914848], [0.0038394663, -0.0618825, -0.028415432, -0.00060009275, 0.033016026, 0.020048667, -0.048216026, -0.0018140209, 0.017342435, 0.018233236, -0.05241069, 0.022811279, 0.022270031, -0.015583384, 0.025077747, 0.046547186, -0.010351337, -0.015639763, -0.042871222, -0.05047122, -0.01553828, -0.054214843, -0.05011039, 0.03655668, -0.01447834, 0.022484275, -0.031099113, 0.014602375, -0.022743622, -0.028122257, 0.009347775, -0.0034081605, 0.045058757, -0.050381012, 0.03026469, -0.010441544, -0.03736855, 0.033895552, -0.067926414, 0.01221187, -0.041856382, -0.018797034, -0.020601189, -0.021954304, -7.4923504e-05, 0.004251039, -0.04681781, 0.025145402, -0.008327301, -0.039849263, 0.026881902, -0.01570742, 0.0030219587, -0.017680714, -0.007464689, 0.0154142445, 0.00989466, -0.11041425, 0.019879527, -0.02370208, -0.06111573, 0.008434422, -3.8584945e-05, -0.010920772, -0.022597035, -0.0115465885, -0.025573889, 0.034662317, 0.023905046, 0.035090804, -0.043728195, 0.0046513355, 0.00849644, 0.000101131314, -0.0018393919, -0.037413653, 0.09787538, 0.044337094, -0.033241548, -0.021875372, 0.011371811, -0.024852227, 0.019439764, -0.013767954, 0.017511575, 0.017195847, 0.03842849, -0.08186351, -0.022055788, -0.018379824, 0.013598815, -0.015132345, 0.024942435, 0.0181092, -0.06386707, -0.012087835, -0.005091098, 0.014061129, -0.037481308, 0.008874184, -0.010373889, -0.02733294, -0.052771516, -0.040706236, 0.013970921, -0.012369734, 0.05534244, 0.006145401, -0.0060100895, 0.17319883, 0.027084868, 0.026295552, -0.024468845, -0.0056971814, -0.014117508, 0.051328193, -0.030986352, -0.07541366, -0.03829318, 0.027829083, -0.10094244, -0.00586914, 0.03642137, 0.019868251, -0.024040358, -0.0070192884, -0.00586914, 0.0053109797, 0.002118472, -0.014320476, 0.013384571, 0.052230272, 0.059762616, 0.02733294, 0.043886058, -0.056785762, 0.027964395, 0.010154007, -0.0036618698, 0.00017090134, 0.0082540065, -0.016812464, -0.020105045, 0.014455788, -0.06440832, -0.0037267066, 0.018887242, 0.016530566, -0.042916324, -0.02956558, -0.03236202, 0.005014986, -0.006472404, 0.022348963, 0.051328193, -0.029994069, 0.02674659, 0.016011871, -0.023205936, 0.027581012, 0.013102672, -0.07654125, 0.0022988874, 0.018097924, 0.02031929, -0.0027710684, 0.027761426, 0.0031121664, -0.06016855, 0.04052582, 0.0052658757, 0.03306113, -0.026408311, 0.008654304, -0.03249733, 0.010605046, 0.021920476, 0.017940061, -0.04695312, -0.061972704, -0.045306828, 0.03642137, 0.035113357, -0.05092226, -0.006201781, 0.013046292, 0.00062053045, 0.017060535, 0.042871222, -0.030332347, -0.04449496, -0.03572226, -0.032023743, -0.04253294, -0.000972552, -0.041292585, -0.04449496, -0.069189325, 0.03164036, -0.0026329379, 0.0082765585, -0.053673595, -0.008518992, 0.02850564, -0.036173295, 0.0040283385, 0.024716916, -0.00544911, -0.008197627, -0.0132041555, 0.059040956, 0.0195638, 0.021469438, -0.014173889, -0.018492583, 0.0050178044, -0.053673595, 0.05701128, -0.051102675, -0.033827897, 0.08384808, -0.0036336798, 0.03996202, -0.0043750745, 0.010148369, 0.084208906, 0.009319586, 0.0063089025, 0.0142866485, -0.006579526, 0.021210091, 0.0010493696, -0.0019000001, 0.014579823, -0.06201781, 0.031933535, -0.049073, 0.03220416, 0.0712641, -0.017669437, 0.014602375, 0.028077153, -0.042036798, 0.0011691767, -0.0056774486, 0.060439173, -0.008964392, -0.030106828, -0.041067068, -0.014534719, 0.004002968, -0.03551929, 0.04181128, -0.0034560834, -0.0047612763, 0.04429199, -0.02990386, -0.06215312, -0.023544217, 0.015335313, -0.021818994, 0.0444273, -0.018075373, 0.03775193, -0.002507493, -0.016169734, 0.052185167, -0.028212465, -0.02115371, 0.0029937688, 0.04636677, -0.03211395, 0.05335787, 0.018571515, 0.007194066, -0.003898665, 0.120246895, 0.06093532, -0.034797627, 0.025844513, 0.034256384, 0.019710388, 0.025844513, 0.025055194, 0.039150152, -0.01308012, -0.006134125, -0.029475374, -0.045058757, 0.026678935, -0.011478933, -0.020883087, 0.05186944, 0.025145402, 0.026769143, 0.00031273186, 0.0027682495, 0.031121664, -0.044449855, 0.02347656, -0.056334723, -0.0053081606, -0.014410684, -0.043750744, -0.010356974, 0.065716326, -0.0010803784, 0.06995609, -0.0013425446, -0.026137687, 0.0408641, 0.022597035, 0.0032164692, -0.07275253, 0.018379824, -0.015718695, -0.014918102, -0.006573888, 0.058364395, -0.04357033, -0.014230268, -0.051734127, -0.059627306, -0.008304749, -0.0043637985, -0.0010965876, -0.008998221, -0.005649259, -0.064273, -0.008705045, -0.06711455, 0.008005936, -0.019687835, 0.014433236, -0.07424095, -0.07157983, -0.022348963, -0.04591573, 0.0093364995, -0.038969737, -0.04066113, 0.024220774, -0.015921663, -0.026611278, 0.011907419, -0.012764392, -0.021616025, 0.031256977, 0.01657567, -0.029046888, 0.0013136499, 0.08141247, 0.013046292, 0.04041306, 0.0090376865, -0.02873116, 0.00782552, -0.024491396, -0.006551336, -0.02498754, 0.066753715, -0.08808784, -0.006494956, 0.013632642, -0.010627598, -0.04740416, -0.022100892, -0.010937686, 0.020477153, 0.03141484, -0.04744926, 0.009601484, 0.0007872033, -0.0513733, -0.019473592, -0.009347775, 0.043953713, 0.0016336055, 0.013452226, 0.0087388735, 0.010018695, -0.01735371, 0.0037182495, 0.0022481456, 0.03303858, 0.009522553, -0.035564393, 0.032610092, 0.039668847, -0.024017805, -0.0017548221, -0.007487241, -0.0012882791, -0.041878935, 0.058454603, 0.06927953, -0.027490804, -0.06860297, -0.011749556, -0.023972703, 0.0069572707, 0.028528193, 0.009156084, -0.014004749, 0.039105047, 0.0444273, 0.0053391694, 0.0033856086, -0.0047387243, 0.048396442, 0.0054237396, 0.001140282, -0.0007449185, 0.038586352, -0.007616915, 0.037278343, 0.040503267, 0.024265878, -0.023273593, -0.00045280048, 0.018357271, -0.034752525, 0.010926411, 0.042239767, -0.04451751, 0.032655194, -0.035248667, 0.008096143, 0.008096143, -0.011072998, -0.02875371, 0.028189912, 0.0009429526, 0.0076281903, -0.0461638, -0.09552998, -0.073564395, -0.052185167, -0.042578045, 0.025844513, 0.06359644, -0.033512168, 0.019033829, 0.05804867, -0.030106828, -0.022281308, -0.06643799, 0.0055985167, 0.020984571, -0.03563205, -0.0362184, 0.010808012, -0.05597389, 0.00592552, 0.05290683, 0.017545402, -0.007802968, -0.027287835, 0.03362493, -0.07374481, 0.023408905, -0.041833833, 0.056470033, -0.025799409, 0.021345403, 0.03155015, 0.028189912, 0.011512761, 0.0074308612, -0.013046292, -0.038270626, -0.006861425, -0.08028487, -0.009392879, -0.00058952154, -0.032970924, -0.014106233, -0.017737094, 0.03236202, -0.045983385, -0.029633237, 0.0026808607, 0.025889616, 0.03892463, -0.003230564, 0.015493176, 0.003523739, -0.007943918, 0.050381012, 0.0056943623, -0.032722853, 0.035835017, 0.011670624, -0.013621367, 0.002007122, -0.058364395, -0.009556381, -0.0479003, 0.0077014845, 0.022472998, 0.047674783, -0.0067994073, 0.0005454748, 0.028550744, 0.017105639, -0.016338874, -0.0013467731, -0.048667066, 0.035181012, -0.036737096, 0.0128546, 0.0023862761, -0.024446294, -0.019800596, -0.04426944, -0.011462019, -0.02873116, 0.030084275, 0.020860536, 0.01623739, -0.00829911, -0.02956558, -0.064047486, -0.014185164, 0.0037577155, -0.014297924, 0.024694365, 0.000746328, -0.044224337, -0.046186354, -0.011490209, -0.0014686945, -0.04002968, 0.011422553, -0.005415282, -0.03635371, 0.03820297, 0.011986352, -0.022168547, 0.03060297, 0.003870475, 0.07807478, -0.0071771517, 0.004569585, -0.040458165, 0.029836204, 0.007171514, -0.004969882, -0.017308608, 0.03319644, -0.04343502, 0.002406009, 0.007205342, 0.029948965, 0.0002797849, -0.028122257, -0.01724095, -0.011828488, 0.021943029, -0.029182198, 0.031865876, 0.0036224038, 0.09706351, 0.021616025, -0.011794659, -0.047494367, 0.051328193, 0.015369141, -0.0069629084, 0.032542437, -0.0012466989, 0.011056084, 0.008721959, -0.010052523, -0.032632645, 0.061160836, -0.02920475, -0.022292584, 0.008688131, 0.0063201785, -0.019721663, 0.014297924, -0.0039832345, -0.03249733, 0.0037661723, 0.04496855, -0.0028725523, -0.010915134, -0.038699113, 0.017793473, -0.021920476, 0.036534127, -0.007763502, -0.026137687, -0.0019606084, -0.0027597926, -0.013711574, 0.0027160982, -0.004346885, 0.027874187, 0.01886469, -0.026430862, 0.020082494, 0.028122257, -0.051824335, -0.023905046, -0.0022213652, -0.039668847, 0.012595253, 0.030512761, 0.009945401, 0.026859349, 0.025528785, -0.018909793, 0.036398817, -0.028528193, 0.029520478, 0.03689496, 0.008767063, 0.029385166, 0.022867657, 0.043277156, 0.10572345, -0.049253415, 0.008389318, 0.0047302675, -0.0037182495, 0.017105639, -0.007103858, 0.0011071588, -0.03775193, 0.013519882, -0.0023045253, -0.038586352, -0.0036167658, 0.026318103, 0.024288429, 0.025799409, -0.020995848, 0.0096127605, 0.007831158, 0.0356546, -0.0002605805, 0.036173295, -0.032519884, -0.01103917, 0.06255905, -0.0047528194, 0.031099113, -0.025077747, -0.0274457, 0.019834423, 0.011394363, 0.042690806, -0.004840208, 0.011648072, 0.014579823, 0.008665579, -0.02347656, 0.045351934, -0.026408311, -0.033557273, -0.0066077155, 0.012561426, 0.0022594216, -0.02943027, -0.0356095, 0.0195638, 0.020522257, 0.031482495, 0.07915728, -0.019045105, -0.06747538, -0.024919884, -0.044314545, -0.026769143, -0.002601929, 0.042916324, -0.00913917, -0.0075887246, -0.028235016, -0.027242733, -0.009860831, 0.024040358, -0.03094125, 0.0031459944, -0.027874187, 0.012008903, -0.035248667, 0.0005119993, 0.0137341255, -0.052861724, -0.011535313, 0.0090602385, 0.052185167, 0.0015391692, -0.020544808, -0.064182796, 0.02954303, 0.04158576, -0.023747183, 0.0037238875, 0.011168844, -0.02674659, -0.012843325, 0.009607122, 0.0052658757, -0.020578636, -0.017139466, -0.03477508, 0.011106825, 0.008614837, -0.015583384, 0.024198221, 0.004589318, -0.0041326415, 0.003613947, 0.046096146, -0.070091404, 0.0239276, 0.0036224038, -0.0025342733, -0.021537093, -0.041495554, 0.028099706, -0.05466588, 0.02663383, -0.0060439175, 0.014884274, -0.00093731465, 0.011005342, -0.022461724, 0.02090564, -0.010469734, -0.042329974, -0.014737687, -0.019924631, 0.024356086, 0.07338398, 0.017060535, -0.018661723, -0.019191694, 0.014094956, -0.019608904, -0.010588132, 0.0011734051, 0.04115727, -0.010137093, 0.016756084, 0.0007780416, -0.00544911, -0.012944808, 0.037436206, 0.025979824, -0.017838577, 0.022687241, 0.012347182, -0.013655194, 0.0068670628, -0.027242733, -0.012978636, 0.019710388, -0.02956558, -0.024604157, 0.006494956, 0.032226708, -0.031730566, -0.06400238, -0.006833235, 0.01718457, -0.0014116099, 0.056154307, -0.026724039, -0.027783979, 0.0020635016, 0.002255193, 0.007425223, -0.025303267, -0.047584575, -0.0047612763, -0.0033320477, -0.009105342, -0.025145402, -0.008507716, 0.05944689, 0.02370208, -0.0154142445, -0.02137923, -0.016147183, 0.00064519665, 0.014602375, 0.041270033, 0.023296144, -0.01372285, 0.011727004, -0.02767122, 0.030309794, -0.035925224, -0.009624036, -0.00835549, -0.0037267066, -0.06052938, -0.011174481, 0.015673593, -0.014805342, -0.060664695, -0.027265284, -0.016395254, -0.037165582, 0.03540653, 0.013440951, 0.043615434, 0.018436203, 0.037278343, -0.015380417, 0.03538398, 0.030805938, 0.0008386499, 0.0054632053, 0.02109733, 0.013125224, -0.0034278934, 0.028325224, -0.03049021, 0.017252227, 0.015109793, -0.015617212, -0.031211872, -0.028392881, -0.015944215, -0.034887835, -0.046682496, -0.005880416, 0.034729972, 0.025370922, 0.004623146, -0.0595822, 0.02003739, 0.0362184, -0.0023961426, 0.0037971814, -0.0112703275, -0.007487241, -0.0011494437, -0.03470742, 0.012922256, -0.0014799704, 0.001114911, 0.0030529676, -0.009500001, 0.05453057, 0.008992583, 0.043908607, -0.0056182495, -0.020116322, -0.02722018, -0.014726411, 0.014670031, -0.031324632, 0.0207365, 0.03887953, 0.058589917, 0.0041410984, 0.011884867, 0.009184274, -0.02828012, -0.009736796, -0.056605347, -0.018481307, -0.057732943, -0.010543028, 0.010712167, 0.040458165, 0.06287478, 0.005863502, -0.030512761, 0.016959053, -0.008265283, -0.0020888725, -0.01565104, 0.03892463, 0.0036590507, -0.020183979, -0.013159052, -0.011715728, -0.032068845, 0.027062317, 0.0040903566, -0.025258163, -0.004513205, 0.0067655793, 0.007921366, -0.020533534, 0.025325818, 0.029475374, 0.024513949, -0.027490804, -0.051914543, -0.004532938, 0.034211278, 0.0049839765, -0.0007392805, -0.0063370927, -0.028077153, 0.004448368, -0.013700298, 0.0044004456, 0.013711574, 0.025573889, -0.0046738875, -0.021830268, -0.029069439, 0.014027301, -0.017364986, 0.03899229, -0.02370208, -0.012809496, -0.018143028, 0.016632048, -0.03141484, 0.007594363, 0.031775672, 0.010999704, 0.04566766, -0.0119638, 0.004279229, 0.02546113, 0.031279527, 0.023386352, -0.045690212, 0.0033940657, 0.008045401, 0.022924038, 0.012008903, -0.0007026336, -0.034955494, 0.00041403936, -0.0056351637, -0.041788727, -0.014500892, 0.010142731, 0.06494956, -0.015357865, -0.037797038, 0.03887953, -0.039082497, -0.0021086056, -0.0013996292, 0.022540655, -0.007425223, 0.0002604043, 0.031617805, -0.010497924, -0.0050375373, -0.022800002, 0.021627301, 0.006151039, 0.011388725, -0.029700892, 0.034549557, 0.0040198816, -0.006726113, 0.006466766, -0.006816321, 0.013553711, 0.002601929, 0.039759055, 2.4710222e-05, -0.01366647, 0.008180713, -0.02464926, -0.030174483, -0.0128546, -0.017489022, 0.0077240365, 0.030445106, 0.057552528, -0.022484275, -0.022484275, 0.020871812, 0.03283561, -0.015064689, -0.00779733, -0.0067317514, -0.029001784, -0.024310982, -0.00327003, 0.06553591, -0.0066528195, 0.004169288, 0.05290683, -0.039172705, -0.0012481085, 0.04169852, -0.0009281529, -0.008665579, -0.0018901337, -0.003602671, 0.0060100895, 0.01232463, -0.0057676565, -0.016925223, -0.012527597, 0.021886649, -0.03317389, 0.057552528, 0.010582494, 0.028843919, -0.02548368, -0.0064216624, 0.021401782, -0.033241548, -0.01366647, 0.017545402, 0.021458162, 0.032023743, 0.026791694, -0.03574481, -0.013418399, 0.06900891, 0.035541844, 0.0033433237, 0.0005038947, -0.011918696]], 'embedding_model': 'text-embedding-3-large', 'embedding_dimensions': 1024}]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'video_json': {'message': 'Created', 'success': True, 'response': {'id': '496b9b8b-2933-43a9-8d72-3e23419ec88a', 'message': 'Render Successfully Queued'}}}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'video_json': {'message': 'Created', 'success': True, 'response': {'id': '496b9b8b-2933-43a9-8d72-3e23419ec88a', 'message': 'Render Successfully Queued'}}}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'json': {'message': 'Created', 'success': True, 'response': {'id': '496b9b8b-2933-43a9-8d72-3e23419ec88a', 'message': 'Render Successfully Queued'}}, 'content': 'eyJzdWNjZXNzIjp0cnVlLCJtZXNzYWdlIjoiQ3JlYXRlZCIsInJlc3BvbnNlIjp7Im1lc3NhZ2UiOiJSZW5kZXIgU3VjY2Vzc2Z1bGx5IFF1ZXVlZCIsImlkIjoiNDk2YjliOGItMjkzMy00M2E5LThkNzItM2UyMzQxOWVjODhhIn19', 'headers': {'date': 'Wed, 19 Feb 2025 07:31:27 GMT', 'connection': 'keep-alive', 'content-type': 'application/json', 'content-length': '132', 'x-amz-apigw-id': 'GOJQVH-DywMFywA=', 'x-amzn-trace-id': 'Root=1-67b588ce-7e42432509a0114d0092d7ab;Parent=1f89f567e69b79bb;Sampled=0;Lineage=2:3e7cb6b7:0', 'x-frame-options': 'DENY', 'x-amzn-requestid': '4eb96678-62dc-44ce-9c97-fdbe204da505', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-security-policy': \\\"default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'\\\", 'strict-transport-security': 'max-age=63072000; includeSubdomains; preload', 'access-control-allow-origin': '*'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'message': 'Created', 'success': True, 'response': {'id': '496b9b8b-2933-43a9-8d72-3e23419ec88a', 'message': 'Render Successfully Queued'}}, 'content': 'eyJzdWNjZXNzIjp0cnVlLCJtZXNzYWdlIjoiQ3JlYXRlZCIsInJlc3BvbnNlIjp7Im1lc3NhZ2UiOiJSZW5kZXIgU3VjY2Vzc2Z1bGx5IFF1ZXVlZCIsImlkIjoiNDk2YjliOGItMjkzMy00M2E5LThkNzItM2UyMzQxOWVjODhhIn19', 'headers': {'date': 'Wed, 19 Feb 2025 07:31:27 GMT', 'connection': 'keep-alive', 'content-type': 'application/json', 'content-length': '132', 'x-amz-apigw-id': 'GOJQVH-DywMFywA=', 'x-amzn-trace-id': 'Root=1-67b588ce-7e42432509a0114d0092d7ab;Parent=1f89f567e69b79bb;Sampled=0;Lineage=2:3e7cb6b7:0', 'x-frame-options': 'DENY', 'x-amzn-requestid': '4eb96678-62dc-44ce-9c97-fdbe204da505', 'x-xss-protection': '1; mode=block', 'x-content-type-options': 'nosniff', 'content-security-policy': \\\"default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'\\\", 'strict-transport-security': 'max-age=63072000; includeSubdomains; preload', 'access-control-allow-origin': '*'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'clips': [{'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'type': 'audio', 'volume': 1}, 'start': 0, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': '600', 'lineHeight': 1.5}, 'text': 'OVERWHELMED?', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 0, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png', 'type': 'image'}, 'scale': 1.1, 'start': 0, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'type': 'audio', 'volume': 1}, 'start': 5, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': '600', 'lineHeight': 1.5}, 'text': 'Chaos → Clean', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 5, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png', 'type': 'image'}, 'scale': 1.1, 'start': 5, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'type': 'audio', 'volume': 1}, 'start': 10, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': '600', 'lineHeight': 1.5}, 'text': 'JULEP AI', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 10, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png', 'type': 'image'}, 'scale': 1.1, 'start': 10, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'type': 'audio', 'volume': 1}, 'start': 15, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': '600', 'lineHeight': 1.5}, 'text': 'PARALLEL POWER', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 15, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png', 'type': 'image'}, 'scale': 1.1, 'start': 15, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'type': 'audio', 'volume': 1}, 'start': 20, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': '600', 'lineHeight': 1.5}, 'text': 'SIMPLIFY', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 20, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png', 'type': 'image'}, 'scale': 1.1, 'start': 20, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}, {'clips': [{'asset': {'src': 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav', 'type': 'audio', 'volume': 1}, 'start': 25, 'length': 5, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'asset': {'font': {'size': 40, 'color': '#000000', 'family': 'Open Sans', 'weight': '600', 'lineHeight': 1.5}, 'text': 'GET STARTED FREE', 'type': 'text', 'stroke': {'color': '#FFFFFF', 'width': 5}, 'alignment': {'vertical': 'center', 'horizontal': 'center'}}, 'start': 25, 'length': 5, 'opacity': 1, 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}, {'fit': 'cover', 'asset': {'src': 'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png', 'type': 'image'}, 'scale': 1.1, 'start': 25, 'effect': 'zoomIn', 'length': 5, 'position': 'center', 'transition': {'in': 'fadeFast', 'out': 'fadeFast'}}]}]}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'scenes': [{'tone': 'Fast zoom transition', 'scene': 'Opening hook - rapid zoom into laptop screen showing code patterns', 'duration': 3, 'narration': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'start_time': 0, 'image_prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'text_overlay': 'OVERWHELMED?'}, {'tone': 'Dynamic split reveal', 'scene': 'Split screen transition showing messy vs clean workflows', 'duration': 4, 'narration': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'start_time': 3, 'image_prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'text_overlay': 'Chaos → Clean'}, {'tone': 'Smooth feature showcase', 'scene': 'Quick demo of Julep interface in action', 'duration': 4, 'narration': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'start_time': 7, 'image_prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'text_overlay': 'JULEP AI'}, {'tone': 'Quick cuts between features', 'scene': 'Split screen showing parallel processing visualization', 'duration': 3, 'narration': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'start_time': 11, 'image_prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'text_overlay': 'PARALLEL POWER'}, {'tone': 'Dramatic reveal', 'scene': 'Code snippet transformation', 'duration': 3, 'narration': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'start_time': 14, 'image_prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'text_overlay': 'SIMPLIFY'}, {'tone': 'Energetic finale', 'scene': 'Call-to-action with floating elements', 'duration': 4, 'narration': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'start_time': 17, 'image_prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'text_overlay': 'GET STARTED FREE'}], 'effects': ['zoomIn', 'slideUp', 'slideLeft', 'zoomOut', 'slideDown', 'slideRight', 'zoomIn'], 'image_urls': ['https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png', 'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png', 'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png', 'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png', 'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png', 'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png'], 'transcibe_urls': ['https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav']}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'scenes': [{'tone': 'Fast zoom transition', 'scene': 'Opening hook - rapid zoom into laptop screen showing code patterns', 'duration': 3, 'narration': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'start_time': 0, 'image_prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'text_overlay': 'OVERWHELMED?'}, {'tone': 'Dynamic split reveal', 'scene': 'Split screen transition showing messy vs clean workflows', 'duration': 4, 'narration': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'start_time': 3, 'image_prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'text_overlay': 'Chaos → Clean'}, {'tone': 'Smooth feature showcase', 'scene': 'Quick demo of Julep interface in action', 'duration': 4, 'narration': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'start_time': 7, 'image_prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'text_overlay': 'JULEP AI'}, {'tone': 'Quick cuts between features', 'scene': 'Split screen showing parallel processing visualization', 'duration': 3, 'narration': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'start_time': 11, 'image_prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'text_overlay': 'PARALLEL POWER'}, {'tone': 'Dramatic reveal', 'scene': 'Code snippet transformation', 'duration': 3, 'narration': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'start_time': 14, 'image_prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'text_overlay': 'SIMPLIFY'}, {'tone': 'Energetic finale', 'scene': 'Call-to-action with floating elements', 'duration': 4, 'narration': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'start_time': 17, 'image_prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'text_overlay': 'GET STARTED FREE'}], 'effects': ['zoomIn', 'slideUp', 'slideLeft', 'zoomOut', 'slideDown', 'slideRight', 'zoomIn'], 'image_urls': ['https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png', 'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png', 'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png', 'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png', 'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png', 'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png'], 'transcibe_urls': ['https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav']}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  [{'json': {'id': 'p3j4th5k05rge0cn3me9z7248w', 'logs': \\\"Processing text (104 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w', 'cancel': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-zeg44xofub43mvyq42zpadqku3bnyzpettcao7q6rtgcjhstm43q'}, 'error': None, 'input': {'text': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.277487694}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.977Z', 'started_at': '2025-02-19T07:29:35.549295386Z', 'completed_at': '2025-02-19T07:29:35.826783092Z', 'data_removed': False}, 'content': 'eyJpZCI6InAzajR0aDVrMDVyZ2UwY24zbWU5ejcyNDh3IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJFdmVyIG5vdGljZSBob3cgbW9zdCBkZXZlbG9wZXIgdG9vbHMgZmVlbCBvdmVyd2hlbG1pbmc/IExpa2Ugc3RhcmluZyBpbnRvIGFuIGVuZGxlc3Mgd2FsbCBvZiBjb21wbGV4aXR5PyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiUHJvY2Vzc2luZyB0ZXh0ICgxMDQgY2hhcnMpIHdpdGggdm9pY2U9J2FtX2FkYW0nIGF0IHNwZWVkPTEuMFxuIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC84eDZveWE1V1pQWjFNTmRhaEI4U25LTjlZYTN6UW1Lc2dEZ1huNlZKMXBmdjBaSUtBL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoic3VjY2VlZGVkIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzQuOTc3WiIsInN0YXJ0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM1LjU0OTI5NTM4NloiLCJjb21wbGV0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM1LjgyNjc4MzA5MloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDNqNHRoNWswNXJnZTBjbjNtZTl6NzI0OHcvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9wM2o0dGg1azA1cmdlMGNuM21lOXo3MjQ4dyIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS16ZWc0NHhvZnViNDNtdnlxNDJ6cGFkcWt1M2JueXpwZXR0Y2FvN3E2cnRnY2poc3RtNDNxIn0sIm1ldHJpY3MiOnsicHJlZGljdF90aW1lIjowLjI3NzQ4NzY5NH19Cg==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:22 GMT', 'cf-ray': '91448e904e8b9e16-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=HOfGHmTUsDejkmo6ORNG0yB95C5%2Bwy9j%2Bun4sOczMgESuVQlQIuEd8Ok93YHcWKDOetr5XeuyiDQNLyB3RU0NPBWd7lAwPsyvzj3vSLcYg28sbl%2FnmFBdC6MZXh2cDPpqRZc\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19879&min_rtt=18235&rtt_var=8012&sent=6&recv=6&lost=0&retrans=0&sent_bytes=2847&recv_bytes=915&delivery_rate=233616&cwnd=222&unsent_bytes=0&cid=9403d8e32624d0be&ts=82&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}, {'json': {'id': 'jrbjq45jydrge0cn3meb92hfa0', 'logs': \\\"Processing text (104 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0', 'cancel': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-iutge4yfw7elxy3e3e5wld37qfykvyyl3qp7f4723m2ldqn2t2sq'}, 'error': None, 'input': {'text': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.29094579}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.963Z', 'started_at': '2025-02-19T07:29:35.937546287Z', 'completed_at': '2025-02-19T07:29:36.228492082Z', 'data_removed': False}, 'content': 'eyJpZCI6ImpyYmpxNDVqeWRyZ2UwY24zbWViOTJoZmEwIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJXaGF0IGlmIHRoZXJlIHdhcyBhIHdheSB0byB0dXJuIGNoYW9zIGludG8gY2xlYW4sIHNlcnZlcmxlc3MgQUkgd29ya2Zsb3dzIHdpdGgganVzdCBhIGZldyBsaW5lcyBvZiBjb2RlPyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiUHJvY2Vzc2luZyB0ZXh0ICgxMDQgY2hhcnMpIHdpdGggdm9pY2U9J2FtX2FkYW0nIGF0IHNwZWVkPTEuMFxuIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9WY3JrbXJXNWZHMGlKaVFmaThpa2RwU3RSSjVIb3Z0T2Y5OTJZSE42VUNEQVRuaG9BL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoic3VjY2VlZGVkIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzQuOTYzWiIsInN0YXJ0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM1LjkzNzU0NjI4N1oiLCJjb21wbGV0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM2LjIyODQ5MjA4MloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvanJianE0NWp5ZHJnZTBjbjNtZWI5MmhmYTAvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9qcmJqcTQ1anlkcmdlMGNuM21lYjkyaGZhMCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1pdXRnZTR5Znc3ZWx4eTNlM2U1d2xkMzdxZnlrdnl5bDNxcDdmNDcyM20ybGRxbjJ0MnNxIn0sIm1ldHJpY3MiOnsicHJlZGljdF90aW1lIjowLjI5MDk0NTc5fX0K', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:22 GMT', 'cf-ray': '91448e902ff58c2d-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=JiGqazmAMVfYwGSriLMGo5hIggc1DukHaLDuMkjvxvjX7u4WeRFxrrtu5ink0337r9QYn2%2FbB%2FJrYYeLiSSGXsY5Lx4Tz%2BlN9g4LiiwDoVPOUzsfu8gMWvK665RujJ1YZF%2BK\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24185&min_rtt=17385&rtt_var=11377&sent=5&recv=5&lost=0&retrans=0&sent_bytes=2846&recv_bytes=915&delivery_rate=245038&cwnd=233&unsent_bytes=0&cid=f5b8f21d1e3db52f&ts=77&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}, {'json': {'id': '9ske1fxk1xrga0cn3mea3jxysc', 'logs': \\\"Processing text (112 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc', 'cancel': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-om4wdb4revlvj6ppb4sktnketuflqfcq7ob66an6ssxyx64ofuda'}, 'error': None, 'input': {'text': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.279724822}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.991Z', 'started_at': '2025-02-19T07:29:35.178150561Z', 'completed_at': '2025-02-19T07:29:35.45787528Z', 'data_removed': False}, 'content': 'eyJpZCI6Ijlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJNZWV0IEp1bGVwIC0gdGhlIHNlcnZlcmxlc3MgcGxhdGZvcm0gdGhhdCBsZXRzIGRhdGEgdGVhbXMgYnVpbGQgc29waGlzdGljYXRlZCBBSSB3b3JrZmxvd3Mgd2l0aG91dCB0aGUgaGVhZGFjaGUuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiJQcm9jZXNzaW5nIHRleHQgKDExMiBjaGFycykgd2l0aCB2b2ljZT0nYW1fYWRhbScgYXQgc3BlZWQ9MS4wXG4iLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsL2VCTkc2d1lpVEpYZ1lhQmR2TGtlZ0FjTzJHVkI1ZWV3enJ1dW1WZzhuZVllWDZNRUYvb3V0cHV0LndhdiIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJzdWNjZWVkZWQiLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozNC45OTFaIiwic3RhcnRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzUuMTc4MTUwNTYxWiIsImNvbXBsZXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzUuNDU3ODc1MjhaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zLzlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvOXNrZTFmeGsxeHJnYTBjbjNtZWEzanh5c2MiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtb200d2RiNHJldmx2ajZwcGI0c2t0bmtldHVmbHFmY3E3b2I2NmFuNnNzeHl4NjRvZnVkYSJ9LCJtZXRyaWNzIjp7InByZWRpY3RfdGltZSI6MC4yNzk3MjQ4MjJ9fQo=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:22 GMT', 'cf-ray': '91448e919a42429d-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=MDUgVDOvC8VBVAik9HqSZ7C82PuU4%2F6wNda4llOwKgdL85EKHid51Jq%2F5ubwr%2F9jbdlgdts6tmb0cfRZdJcmNIPrXVXoAMoyYUaKIG4Lw6%2FhHtGgh8rQuCv7DPq4IOeTIISt\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=14654&min_rtt=10913&rtt_var=6765&sent=5&recv=5&lost=0&retrans=0&sent_bytes=2846&recv_bytes=915&delivery_rate=390360&cwnd=223&unsent_bytes=0&cid=27cb5dad02740e90&ts=80&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}, {'json': {'id': 'p6p9dtp07srg80cn3mebqc1m3c', 'logs': \\\"Processing text (108 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c', 'cancel': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-fnhel4s53zwzxhlb3sdduenfvavbyllptqetjplges3bdxe4bg7q'}, 'error': None, 'input': {'text': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.255895864}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.366Z', 'started_at': '2025-02-19T07:29:39.090400955Z', 'completed_at': '2025-02-19T07:29:39.346296842Z', 'data_removed': False}, 'content': 'eyJpZCI6InA2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSdW4gY29tcGxleCBBSSBvcGVyYXRpb25zIGluIHBhcmFsbGVsLCBtYW5hZ2Ugc3RhdGUgZWZmb3J0bGVzc2x5LCBhbmQgc2NhbGUgd2l0aG91dCB0b3VjaGluZyBpbmZyYXN0cnVjdHVyZS4iLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IlByb2Nlc3NpbmcgdGV4dCAoMTA4IGNoYXJzKSB3aXRoIHZvaWNlPSdhbV9hZGFtJyBhdCBzcGVlZD0xLjBcbiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvRXhvZ1gwNTcyT0lyQjVEY1VqOWpzd2xkZzM4Q2dMTkFYdEpld3Ewa2dON3gwWklLQS9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InN1Y2NlZWRlZCIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4LjM2NloiLCJzdGFydGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOS4wOTA0MDA5NTVaIiwiY29tcGxldGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOS4zNDYyOTY4NDJaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3A2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDZwOWR0cDA3c3JnODBjbjNtZWJxYzFtM2MiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtZm5oZWw0czUzend6eGhsYjNzZGR1ZW5mdmF2YnlsbHB0cWV0anBsZ2VzM2JkeGU0Ymc3cSJ9LCJtZXRyaWNzIjp7InByZWRpY3RfdGltZSI6MC4yNTU4OTU4NjR9fQo=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:24 GMT', 'cf-ray': '91448e9bbd517c94-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=eUiChgIfmTdT9tSryoct1bBBcQu5Uxy%2Fz93R%2BOp9%2Fiya4JHbV%2Be71DeLym%2BTFINKLgDa5Uzso21v9r2pvlik19ppdNvCUTYK0BzoHLFRoobYPKyDw%2Fb00tjA9rmiw%2F2GP8rf\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23450&min_rtt=11817&rtt_var=12579&sent=5&recv=5&lost=0&retrans=0&sent_bytes=2847&recv_bytes=915&delivery_rate=360497&cwnd=208&unsent_bytes=0&cid=6595f53b13fcf209&ts=78&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}, {'json': {'id': 'dbrfpky0asrgc0cn3me845v9m4', 'logs': \\\"Processing text (76 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4', 'cancel': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-esvpykfjlan67hrgevu4nkphqamohtzv27vqav6mzr764yi3wrcq'}, 'error': None, 'input': {'text': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.204431002}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.39Z', 'started_at': '2025-02-19T07:29:38.794787955Z', 'completed_at': '2025-02-19T07:29:38.999218946Z', 'data_removed': False}, 'content': 'eyJpZCI6ImRicmZwa3kwYXNyZ2MwY24zbWU4NDV2OW00IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJUdXJuIDgwIGxpbmVzIG9mIGNvbXBsZXggY29kZSBpbnRvIHNpbXBsZSwgbWFuYWdlZCB3b3JrZmxvd3MgdGhhdCBqdXN0IHdvcmsuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiJQcm9jZXNzaW5nIHRleHQgKDc2IGNoYXJzKSB3aXRoIHZvaWNlPSdhbV9hZGFtJyBhdCBzcGVlZD0xLjBcbiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvMzdMbno2Y0NxSXBSSGRYNEZtNWVWSkp5Vko0dUsyaDgyZ0E5QmpBWHd1S3gwWklLQS9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InN1Y2NlZWRlZCIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4LjM5WiIsInN0YXJ0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4Ljc5NDc4Nzk1NVoiLCJjb21wbGV0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4Ljk5OTIxODk0NloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvZGJyZnBreTBhc3JnYzBjbjNtZTg0NXY5bTQvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9kYnJmcGt5MGFzcmdjMGNuM21lODQ1djltNCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1lc3ZweWtmamxhbjY3aHJnZXZ1NG5rcGhxYW1vaHR6djI3dnFhdjZtenI3NjR5aTN3cmNxIn0sIm1ldHJpY3MiOnsicHJlZGljdF90aW1lIjowLjIwNDQzMTAwMn19Cg==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:24 GMT', 'cf-ray': '91448e9b8f660f37-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=U9njiSYOtw1sD9eDsu4wXs7jLyANYUU2Yx721Zy2yson7lXeVLxMFh67e914BR%2FDHT3StcZ%2BtZJlTRxSMMUuIaW%2Btdwl3Wh2Cz3ZWZcd5L5S5xQDZbAOHNuC0nY8E%2BzSyE4%2F\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=15216&min_rtt=14922&rtt_var=6184&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2847&recv_bytes=915&delivery_rate=246570&cwnd=241&unsent_bytes=0&cid=6101acffcd3bbee2&ts=99&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}, {'json': {'id': '4kmaj95zw9rga0cn3meb3t0g8c', 'logs': \\\"Processing text (75 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c', 'cancel': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-msepfbrkiezjnf653jra36uuyljlt2l4yscx4eqp26xaqmovjgka'}, 'error': None, 'input': {'text': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.204034998}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.274Z', 'started_at': '2025-02-19T07:29:38.287623329Z', 'completed_at': '2025-02-19T07:29:38.491658342Z', 'data_removed': False}, 'content': 'eyJpZCI6IjRrbWFqOTV6dzlyZ2EwY24zbWViM3QwZzhjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSZWFkeSB0byB0cmFuc2Zvcm0geW91ciBBSSB3b3JrZmxvd3M/IEdldCB5b3VyIGZyZWUgQVBJIGtleSBub3cgYXQgSnVsZXAuYWkiLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IlByb2Nlc3NpbmcgdGV4dCAoNzUgY2hhcnMpIHdpdGggdm9pY2U9J2FtX2FkYW0nIGF0IHNwZWVkPTEuMFxuIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9Lc3hqeVFaRnZCNzFGaGczZUdvZTBYclRPUkkyVlVnZmY1d2ZHNDhJazhVVk1kR2lDL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoic3VjY2VlZGVkIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzguMjc0WiIsInN0YXJ0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4LjI4NzYyMzMyOVoiLCJjb21wbGV0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4LjQ5MTY1ODM0MloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvNGttYWo5NXp3OXJnYTBjbjNtZWIzdDBnOGMvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy80a21hajk1enc5cmdhMGNuM21lYjN0MGc4YyIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1tc2VwZmJya2llempuZjY1M2pyYTM2dXV5bGpsdDJsNHlzY3g0ZXFwMjZ4YXFtb3ZqZ2thIn0sIm1ldHJpY3MiOnsicHJlZGljdF90aW1lIjowLjIwNDAzNDk5OH19Cg==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:24 GMT', 'cf-ray': '91448e9b2edc43b5-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=SoWCGH8kyHLpM%2FbMIIQCV3F2DJB9kdYUR9JxCDmPCqa72AcT48pJmZpN2Um2U9%2B1bwpPJwXE9WP3xL6ELx9vkSzNP1OL9iWMO7drAmdgrIM4PJPC%2BgbHt5CSFt35Js2S1cPY\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24262&min_rtt=17298&rtt_var=11461&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2847&recv_bytes=915&delivery_rate=246271&cwnd=228&unsent_bytes=0&cid=656d4e9ef8489077&ts=79&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'p6p9dtp07srg80cn3mebqc1m3c', 'logs': \\\"Processing text (108 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c', 'cancel': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-fnhel4s53zwzxhlb3sdduenfvavbyllptqetjplges3bdxe4bg7q'}, 'error': None, 'input': {'text': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.255895864}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.366Z', 'started_at': '2025-02-19T07:29:39.090400955Z', 'completed_at': '2025-02-19T07:29:39.346296842Z', 'data_removed': False}, 'content': 'eyJpZCI6InA2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSdW4gY29tcGxleCBBSSBvcGVyYXRpb25zIGluIHBhcmFsbGVsLCBtYW5hZ2Ugc3RhdGUgZWZmb3J0bGVzc2x5LCBhbmQgc2NhbGUgd2l0aG91dCB0b3VjaGluZyBpbmZyYXN0cnVjdHVyZS4iLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IlByb2Nlc3NpbmcgdGV4dCAoMTA4IGNoYXJzKSB3aXRoIHZvaWNlPSdhbV9hZGFtJyBhdCBzcGVlZD0xLjBcbiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvRXhvZ1gwNTcyT0lyQjVEY1VqOWpzd2xkZzM4Q2dMTkFYdEpld3Ewa2dON3gwWklLQS9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InN1Y2NlZWRlZCIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4LjM2NloiLCJzdGFydGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOS4wOTA0MDA5NTVaIiwiY29tcGxldGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOS4zNDYyOTY4NDJaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3A2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDZwOWR0cDA3c3JnODBjbjNtZWJxYzFtM2MiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtZm5oZWw0czUzend6eGhsYjNzZGR1ZW5mdmF2YnlsbHB0cWV0anBsZ2VzM2JkeGU0Ymc3cSJ9LCJtZXRyaWNzIjp7InByZWRpY3RfdGltZSI6MC4yNTU4OTU4NjR9fQo=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:24 GMT', 'cf-ray': '91448e9bbd517c94-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=eUiChgIfmTdT9tSryoct1bBBcQu5Uxy%2Fz93R%2BOp9%2Fiya4JHbV%2Be71DeLym%2BTFINKLgDa5Uzso21v9r2pvlik19ppdNvCUTYK0BzoHLFRoobYPKyDw%2Fb00tjA9rmiw%2F2GP8rf\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23450&min_rtt=11817&rtt_var=12579&sent=5&recv=5&lost=0&retrans=0&sent_bytes=2847&recv_bytes=915&delivery_rate=360497&cwnd=208&unsent_bytes=0&cid=6595f53b13fcf209&ts=78&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'dbrfpky0asrgc0cn3me845v9m4', 'logs': \\\"Processing text (76 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4', 'cancel': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-esvpykfjlan67hrgevu4nkphqamohtzv27vqav6mzr764yi3wrcq'}, 'error': None, 'input': {'text': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.204431002}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.39Z', 'started_at': '2025-02-19T07:29:38.794787955Z', 'completed_at': '2025-02-19T07:29:38.999218946Z', 'data_removed': False}, 'content': 'eyJpZCI6ImRicmZwa3kwYXNyZ2MwY24zbWU4NDV2OW00IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJUdXJuIDgwIGxpbmVzIG9mIGNvbXBsZXggY29kZSBpbnRvIHNpbXBsZSwgbWFuYWdlZCB3b3JrZmxvd3MgdGhhdCBqdXN0IHdvcmsuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiJQcm9jZXNzaW5nIHRleHQgKDc2IGNoYXJzKSB3aXRoIHZvaWNlPSdhbV9hZGFtJyBhdCBzcGVlZD0xLjBcbiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvMzdMbno2Y0NxSXBSSGRYNEZtNWVWSkp5Vko0dUsyaDgyZ0E5QmpBWHd1S3gwWklLQS9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InN1Y2NlZWRlZCIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4LjM5WiIsInN0YXJ0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4Ljc5NDc4Nzk1NVoiLCJjb21wbGV0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4Ljk5OTIxODk0NloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvZGJyZnBreTBhc3JnYzBjbjNtZTg0NXY5bTQvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9kYnJmcGt5MGFzcmdjMGNuM21lODQ1djltNCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1lc3ZweWtmamxhbjY3aHJnZXZ1NG5rcGhxYW1vaHR6djI3dnFhdjZtenI3NjR5aTN3cmNxIn0sIm1ldHJpY3MiOnsicHJlZGljdF90aW1lIjowLjIwNDQzMTAwMn19Cg==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:24 GMT', 'cf-ray': '91448e9b8f660f37-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=U9njiSYOtw1sD9eDsu4wXs7jLyANYUU2Yx721Zy2yson7lXeVLxMFh67e914BR%2FDHT3StcZ%2BtZJlTRxSMMUuIaW%2Btdwl3Wh2Cz3ZWZcd5L5S5xQDZbAOHNuC0nY8E%2BzSyE4%2F\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=15216&min_rtt=14922&rtt_var=6184&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2847&recv_bytes=915&delivery_rate=246570&cwnd=241&unsent_bytes=0&cid=6101acffcd3bbee2&ts=99&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': '4kmaj95zw9rga0cn3meb3t0g8c', 'logs': \\\"Processing text (75 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c', 'cancel': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-msepfbrkiezjnf653jra36uuyljlt2l4yscx4eqp26xaqmovjgka'}, 'error': None, 'input': {'text': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.204034998}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.274Z', 'started_at': '2025-02-19T07:29:38.287623329Z', 'completed_at': '2025-02-19T07:29:38.491658342Z', 'data_removed': False}, 'content': 'eyJpZCI6IjRrbWFqOTV6dzlyZ2EwY24zbWViM3QwZzhjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSZWFkeSB0byB0cmFuc2Zvcm0geW91ciBBSSB3b3JrZmxvd3M/IEdldCB5b3VyIGZyZWUgQVBJIGtleSBub3cgYXQgSnVsZXAuYWkiLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IlByb2Nlc3NpbmcgdGV4dCAoNzUgY2hhcnMpIHdpdGggdm9pY2U9J2FtX2FkYW0nIGF0IHNwZWVkPTEuMFxuIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9Lc3hqeVFaRnZCNzFGaGczZUdvZTBYclRPUkkyVlVnZmY1d2ZHNDhJazhVVk1kR2lDL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoic3VjY2VlZGVkIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzguMjc0WiIsInN0YXJ0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4LjI4NzYyMzMyOVoiLCJjb21wbGV0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM4LjQ5MTY1ODM0MloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvNGttYWo5NXp3OXJnYTBjbjNtZWIzdDBnOGMvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy80a21hajk1enc5cmdhMGNuM21lYjN0MGc4YyIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1tc2VwZmJya2llempuZjY1M2pyYTM2dXV5bGpsdDJsNHlzY3g0ZXFwMjZ4YXFtb3ZqZ2thIn0sIm1ldHJpY3MiOnsicHJlZGljdF90aW1lIjowLjIwNDAzNDk5OH19Cg==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:24 GMT', 'cf-ray': '91448e9b2edc43b5-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=SoWCGH8kyHLpM%2FbMIIQCV3F2DJB9kdYUR9JxCDmPCqa72AcT48pJmZpN2Um2U9%2B1bwpPJwXE9WP3xL6ELx9vkSzNP1OL9iWMO7drAmdgrIM4PJPC%2BgbHt5CSFt35Js2S1cPY\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24262&min_rtt=17298&rtt_var=11461&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2847&recv_bytes=915&delivery_rate=246271&cwnd=228&unsent_bytes=0&cid=656d4e9ef8489077&ts=79&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'json': {'id': 'p6p9dtp07srg80cn3mebqc1m3c', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c', 'cancel': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-fnhel4s53zwzxhlb3sdduenfvavbyllptqetjplges3bdxe4bg7q'}, 'error': None, 'input': {'text': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.366Z', 'data_removed': False}, 'content': 'eyJpZCI6InA2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSdW4gY29tcGxleCBBSSBvcGVyYXRpb25zIGluIHBhcmFsbGVsLCBtYW5hZ2Ugc3RhdGUgZWZmb3J0bGVzc2x5LCBhbmQgc2NhbGUgd2l0aG91dCB0b3VjaGluZyBpbmZyYXN0cnVjdHVyZS4iLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvRXhvZ1gwNTcyT0lyQjVEY1VqOWpzd2xkZzM4Q2dMTkFYdEpld3Ewa2dON3gwWklLQS9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOC4zNjZaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3A2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDZwOWR0cDA3c3JnODBjbjNtZWJxYzFtM2MiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtZm5oZWw0czUzend6eGhsYjNzZGR1ZW5mdmF2YnlsbHB0cWV0anBsZ2VzM2JkeGU0Ymc3cSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:39 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c064c3d438b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=ImxzppCZaXQaTNdrcvEucHeaK7rXAVx1n%2F3pSUG0CuNzAPfU87C9N%2B%2BHVfSoTYacU7dhKoLsrdhRdgCz0XZkfpouITenj6rbS6Rq1%2FWtESRM89DpZP50efs3tynWo6zPTCZd\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=14774&min_rtt=12601&rtt_var=6278&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1174&delivery_rate=338068&cwnd=221&unsent_bytes=0&cid=528c506b7e629a3b&ts=1160&x=0\\\"', 'content-length': '784', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'json': {'id': 'dbrfpky0asrgc0cn3me845v9m4', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4', 'cancel': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-esvpykfjlan67hrgevu4nkphqamohtzv27vqav6mzr764yi3wrcq'}, 'error': None, 'input': {'text': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.39Z', 'data_removed': False}, 'content': 'eyJpZCI6ImRicmZwa3kwYXNyZ2MwY24zbWU4NDV2OW00IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJUdXJuIDgwIGxpbmVzIG9mIGNvbXBsZXggY29kZSBpbnRvIHNpbXBsZSwgbWFuYWdlZCB3b3JrZmxvd3MgdGhhdCBqdXN0IHdvcmsuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsLzM3TG56NmNDcUlwUkhkWDRGbTVlVkpKeVZKNHVLMmg4MmdBOUJqQVh3dUt4MFpJS0Evb3V0cHV0LndhdiIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzguMzlaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL2RicmZwa3kwYXNyZ2MwY24zbWU4NDV2OW00L2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvZGJyZnBreTBhc3JnYzBjbjNtZTg0NXY5bTQiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtZXN2cHlrZmpsYW42N2hyZ2V2dTRua3BocWFtb2h0enYyN3ZxYXY2bXpyNzY0eWkzd3JjcSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:39 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c067ee042dd-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=uo4oAZ61z%2FvgF3l75mzMmu1GpDbwd2K2fzAH4IHUGBhAXxt0FSIC5hqvpt6BRPdmfutVw1Pr42RtJ6EV0QTCBglY%2FAlf1Q5uD9z9pvOTHQsQk983Krx7rncZJ36TGX5pS5XU\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=15380&min_rtt=15041&rtt_var=6319&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1142&delivery_rate=239918&cwnd=240&unsent_bytes=0&cid=d848bb2f791a7cd8&ts=792&x=0\\\"', 'content-length': '751', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'json': {'id': '4kmaj95zw9rga0cn3meb3t0g8c', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c', 'cancel': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-msepfbrkiezjnf653jra36uuyljlt2l4yscx4eqp26xaqmovjgka'}, 'error': None, 'input': {'text': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.274Z', 'data_removed': False}, 'content': 'eyJpZCI6IjRrbWFqOTV6dzlyZ2EwY24zbWViM3QwZzhjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSZWFkeSB0byB0cmFuc2Zvcm0geW91ciBBSSB3b3JrZmxvd3M/IEdldCB5b3VyIGZyZWUgQVBJIGtleSBub3cgYXQgSnVsZXAuYWkiLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvS3N4anlRWkZ2QjcxRmhnM2VHb2UwWHJUT1JJMlZVZ2ZmNXdmRzQ4SWs4VVZNZEdpQy9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOC4yNzRaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zLzRrbWFqOTV6dzlyZ2EwY24zbWViM3QwZzhjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvNGttYWo5NXp3OXJnYTBjbjNtZWIzdDBnOGMiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtbXNlcGZicmtpZXpqbmY2NTNqcmEzNnV1eWxqbHQybDR5c2N4NGVxcDI2eGFxbW92amdrYSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:38 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c05dc76185d-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=eJJ%2BwVCYu8MK9Df9Xn%2FIjKSgS1TwjFLkbtgDRxIGKvQ%2BBm1E5RH4T4vZuKpaDkUJp3g1PRLvu%2FFWqE04N2FkXDpcB0PwY6c1ai56TWEPVZ7NgRV8tFBD67qBOhAaBCQIVvL2\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=14830&min_rtt=12188&rtt_var=6458&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1141&delivery_rate=349524&cwnd=215&unsent_bytes=0&cid=050ea72bf0124479&ts=428&x=0\\\"', 'content-length': '751', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': '9ske1fxk1xrga0cn3mea3jxysc', 'logs': \\\"Processing text (112 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc', 'cancel': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-om4wdb4revlvj6ppb4sktnketuflqfcq7ob66an6ssxyx64ofuda'}, 'error': None, 'input': {'text': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.279724822}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.991Z', 'started_at': '2025-02-19T07:29:35.178150561Z', 'completed_at': '2025-02-19T07:29:35.45787528Z', 'data_removed': False}, 'content': 'eyJpZCI6Ijlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJNZWV0IEp1bGVwIC0gdGhlIHNlcnZlcmxlc3MgcGxhdGZvcm0gdGhhdCBsZXRzIGRhdGEgdGVhbXMgYnVpbGQgc29waGlzdGljYXRlZCBBSSB3b3JrZmxvd3Mgd2l0aG91dCB0aGUgaGVhZGFjaGUuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiJQcm9jZXNzaW5nIHRleHQgKDExMiBjaGFycykgd2l0aCB2b2ljZT0nYW1fYWRhbScgYXQgc3BlZWQ9MS4wXG4iLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsL2VCTkc2d1lpVEpYZ1lhQmR2TGtlZ0FjTzJHVkI1ZWV3enJ1dW1WZzhuZVllWDZNRUYvb3V0cHV0LndhdiIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJzdWNjZWVkZWQiLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozNC45OTFaIiwic3RhcnRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzUuMTc4MTUwNTYxWiIsImNvbXBsZXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzUuNDU3ODc1MjhaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zLzlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvOXNrZTFmeGsxeHJnYTBjbjNtZWEzanh5c2MiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtb200d2RiNHJldmx2ajZwcGI0c2t0bmtldHVmbHFmY3E3b2I2NmFuNnNzeHl4NjRvZnVkYSJ9LCJtZXRyaWNzIjp7InByZWRpY3RfdGltZSI6MC4yNzk3MjQ4MjJ9fQo=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:22 GMT', 'cf-ray': '91448e919a42429d-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=MDUgVDOvC8VBVAik9HqSZ7C82PuU4%2F6wNda4llOwKgdL85EKHid51Jq%2F5ubwr%2F9jbdlgdts6tmb0cfRZdJcmNIPrXVXoAMoyYUaKIG4Lw6%2FhHtGgh8rQuCv7DPq4IOeTIISt\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=14654&min_rtt=10913&rtt_var=6765&sent=5&recv=5&lost=0&retrans=0&sent_bytes=2846&recv_bytes=915&delivery_rate=390360&cwnd=223&unsent_bytes=0&cid=27cb5dad02740e90&ts=80&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'p3j4th5k05rge0cn3me9z7248w', 'logs': \\\"Processing text (104 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w', 'cancel': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-zeg44xofub43mvyq42zpadqku3bnyzpettcao7q6rtgcjhstm43q'}, 'error': None, 'input': {'text': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.277487694}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.977Z', 'started_at': '2025-02-19T07:29:35.549295386Z', 'completed_at': '2025-02-19T07:29:35.826783092Z', 'data_removed': False}, 'content': 'eyJpZCI6InAzajR0aDVrMDVyZ2UwY24zbWU5ejcyNDh3IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJFdmVyIG5vdGljZSBob3cgbW9zdCBkZXZlbG9wZXIgdG9vbHMgZmVlbCBvdmVyd2hlbG1pbmc/IExpa2Ugc3RhcmluZyBpbnRvIGFuIGVuZGxlc3Mgd2FsbCBvZiBjb21wbGV4aXR5PyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiUHJvY2Vzc2luZyB0ZXh0ICgxMDQgY2hhcnMpIHdpdGggdm9pY2U9J2FtX2FkYW0nIGF0IHNwZWVkPTEuMFxuIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC84eDZveWE1V1pQWjFNTmRhaEI4U25LTjlZYTN6UW1Lc2dEZ1huNlZKMXBmdjBaSUtBL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoic3VjY2VlZGVkIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzQuOTc3WiIsInN0YXJ0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM1LjU0OTI5NTM4NloiLCJjb21wbGV0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM1LjgyNjc4MzA5MloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDNqNHRoNWswNXJnZTBjbjNtZTl6NzI0OHcvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9wM2o0dGg1azA1cmdlMGNuM21lOXo3MjQ4dyIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS16ZWc0NHhvZnViNDNtdnlxNDJ6cGFkcWt1M2JueXpwZXR0Y2FvN3E2cnRnY2poc3RtNDNxIn0sIm1ldHJpY3MiOnsicHJlZGljdF90aW1lIjowLjI3NzQ4NzY5NH19Cg==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:22 GMT', 'cf-ray': '91448e904e8b9e16-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=HOfGHmTUsDejkmo6ORNG0yB95C5%2Bwy9j%2Bun4sOczMgESuVQlQIuEd8Ok93YHcWKDOetr5XeuyiDQNLyB3RU0NPBWd7lAwPsyvzj3vSLcYg28sbl%2FnmFBdC6MZXh2cDPpqRZc\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19879&min_rtt=18235&rtt_var=8012&sent=6&recv=6&lost=0&retrans=0&sent_bytes=2847&recv_bytes=915&delivery_rate=233616&cwnd=222&unsent_bytes=0&cid=9403d8e32624d0be&ts=82&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'jrbjq45jydrge0cn3meb92hfa0', 'logs': \\\"Processing text (104 chars) with voice='am_adam' at speed=1.0\\\\n\\\", 'urls': {'get': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0', 'cancel': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-iutge4yfw7elxy3e3e5wld37qfykvyyl3qp7f4723m2ldqn2t2sq'}, 'error': None, 'input': {'text': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'status': 'succeeded', 'metrics': {'predict_time': 0.29094579}, 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.963Z', 'started_at': '2025-02-19T07:29:35.937546287Z', 'completed_at': '2025-02-19T07:29:36.228492082Z', 'data_removed': False}, 'content': 'eyJpZCI6ImpyYmpxNDVqeWRyZ2UwY24zbWViOTJoZmEwIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJXaGF0IGlmIHRoZXJlIHdhcyBhIHdheSB0byB0dXJuIGNoYW9zIGludG8gY2xlYW4sIHNlcnZlcmxlc3MgQUkgd29ya2Zsb3dzIHdpdGgganVzdCBhIGZldyBsaW5lcyBvZiBjb2RlPyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiUHJvY2Vzc2luZyB0ZXh0ICgxMDQgY2hhcnMpIHdpdGggdm9pY2U9J2FtX2FkYW0nIGF0IHNwZWVkPTEuMFxuIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9WY3JrbXJXNWZHMGlKaVFmaThpa2RwU3RSSjVIb3Z0T2Y5OTJZSE42VUNEQVRuaG9BL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoic3VjY2VlZGVkIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzQuOTYzWiIsInN0YXJ0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM1LjkzNzU0NjI4N1oiLCJjb21wbGV0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM2LjIyODQ5MjA4MloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvanJianE0NWp5ZHJnZTBjbjNtZWI5MmhmYTAvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9qcmJqcTQ1anlkcmdlMGNuM21lYjkyaGZhMCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1pdXRnZTR5Znc3ZWx4eTNlM2U1d2xkMzdxZnlrdnl5bDNxcDdmNDcyM20ybGRxbjJ0MnNxIn0sIm1ldHJpY3MiOnsicHJlZGljdF90aW1lIjowLjI5MDk0NTc5fX0K', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:31:22 GMT', 'cf-ray': '91448e902ff58c2d-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=JiGqazmAMVfYwGSriLMGo5hIggc1DukHaLDuMkjvxvjX7u4WeRFxrrtu5ink0337r9QYn2%2FbB%2FJrYYeLiSSGXsY5Lx4Tz%2BlN9g4LiiwDoVPOUzsfu8gMWvK665RujJ1YZF%2BK\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24185&min_rtt=17385&rtt_var=11377&sent=5&recv=5&lost=0&retrans=0&sent_bytes=2846&recv_bytes=915&delivery_rate=245038&cwnd=233&unsent_bytes=0&cid=f5b8f21d1e3db52f&ts=77&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'content-encoding': 'gzip', 'x-xss-protection': '1; mode=block', 'transfer-encoding': 'chunked', 'ratelimit-remaining': '59999', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'json': {'id': 'jrbjq45jydrge0cn3meb92hfa0', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0', 'cancel': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-iutge4yfw7elxy3e3e5wld37qfykvyyl3qp7f4723m2ldqn2t2sq'}, 'error': None, 'input': {'text': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.963Z', 'data_removed': False}, 'content': 'eyJpZCI6ImpyYmpxNDVqeWRyZ2UwY24zbWViOTJoZmEwIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJXaGF0IGlmIHRoZXJlIHdhcyBhIHdheSB0byB0dXJuIGNoYW9zIGludG8gY2xlYW4sIHNlcnZlcmxlc3MgQUkgd29ya2Zsb3dzIHdpdGgganVzdCBhIGZldyBsaW5lcyBvZiBjb2RlPyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9WY3JrbXJXNWZHMGlKaVFmaThpa2RwU3RSSjVIb3Z0T2Y5OTJZSE42VUNEQVRuaG9BL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM0Ljk2M1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvanJianE0NWp5ZHJnZTBjbjNtZWI5MmhmYTAvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9qcmJqcTQ1anlkcmdlMGNuM21lYjkyaGZhMCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1pdXRnZTR5Znc3ZWx4eTNlM2U1d2xkMzdxZnlrdnl5bDNxcDdmNDcyM20ybGRxbjJ0MnNxIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:36 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf12eff43f8-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=2eVeP1K3U%2Fpvts03nqojTfZGFpLhKc%2Bj3l0P53qoqhnb%2BB7vlePKjy4yCAsYwNzRBsybAjnpqbLqn4PURdKviT5ZtJjQA7yuLKA5qVg%2Bg1PnXJUCAJTK5ogKZzqSEHtcu80b\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23270&min_rtt=11741&rtt_var=12480&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1170&delivery_rate=362831&cwnd=252&unsent_bytes=0&cid=124f2552fea51988&ts=1420&x=0\\\"', 'content-length': '780', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'json': {'id': 'p3j4th5k05rge0cn3me9z7248w', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w', 'cancel': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-zeg44xofub43mvyq42zpadqku3bnyzpettcao7q6rtgcjhstm43q'}, 'error': None, 'input': {'text': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.977Z', 'data_removed': False}, 'content': 'eyJpZCI6InAzajR0aDVrMDVyZ2UwY24zbWU5ejcyNDh3IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJFdmVyIG5vdGljZSBob3cgbW9zdCBkZXZlbG9wZXIgdG9vbHMgZmVlbCBvdmVyd2hlbG1pbmc/IExpa2Ugc3RhcmluZyBpbnRvIGFuIGVuZGxlc3Mgd2FsbCBvZiBjb21wbGV4aXR5PyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC84eDZveWE1V1pQWjFNTmRhaEI4U25LTjlZYTN6UW1Lc2dEZ1huNlZKMXBmdjBaSUtBL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM0Ljk3N1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDNqNHRoNWswNXJnZTBjbjNtZTl6NzI0OHcvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9wM2o0dGg1azA1cmdlMGNuM21lOXo3MjQ4dyIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS16ZWc0NHhvZnViNDNtdnlxNDJ6cGFkcWt1M2JueXpwZXR0Y2FvN3E2cnRnY2poc3RtNDNxIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:35 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf12b34de9a-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=tGa167Xr9aPHilZJom%2Bf4XY9eFQjLJSqYTj0wdDXQjxs8m7ac23Ba26Fwe5enuhYgmHwYR1Jzr7zFAqwehckJMG%2BsC74f%2BpGvOnq4LMZhvF6rxsDgg2J7b%2FCClr4OR0EAWXU\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19158&min_rtt=13222&rtt_var=9199&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2846&recv_bytes=1170&delivery_rate=322190&cwnd=252&unsent_bytes=0&cid=fb5dfb364ca5fc47&ts=1037&x=0\\\"', 'content-length': '780', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'json': {'id': '9ske1fxk1xrga0cn3mea3jxysc', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc', 'cancel': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-om4wdb4revlvj6ppb4sktnketuflqfcq7ob66an6ssxyx64ofuda'}, 'error': None, 'input': {'text': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.991Z', 'data_removed': False}, 'content': 'eyJpZCI6Ijlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJNZWV0IEp1bGVwIC0gdGhlIHNlcnZlcmxlc3MgcGxhdGZvcm0gdGhhdCBsZXRzIGRhdGEgdGVhbXMgYnVpbGQgc29waGlzdGljYXRlZCBBSSB3b3JrZmxvd3Mgd2l0aG91dCB0aGUgaGVhZGFjaGUuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsL2VCTkc2d1lpVEpYZ1lhQmR2TGtlZ0FjTzJHVkI1ZWV3enJ1dW1WZzhuZVllWDZNRUYvb3V0cHV0LndhdiIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzQuOTkxWiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy85c2tlMWZ4azF4cmdhMGNuM21lYTNqeHlzYy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zLzlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9mZGRxLW9tNHdkYjRyZXZsdmo2cHBiNHNrdG5rZXR1ZmxxZmNxN29iNjZhbjZzc3h5eDY0b2Z1ZGEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:35 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf10c227cb2-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=LaqZycAgnM5AC8wv86tHydOx0pW%2FZPYlTTvLk1%2Fldw86OGkOznQKFZA9M0GFuk279O0gg3l08qurKE%2BsH2dbmuiUJwzjbMjZ%2BwWSlh1eg55BflWAIvfa9eGtBTqaDYqJTFDu\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24041&min_rtt=16959&rtt_var=11418&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1178&delivery_rate=251194&cwnd=235&unsent_bytes=0&cid=7b268fc36822a515&ts=679&x=0\\\"', 'content-length': '788', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  [{'json': {'id': 'r1zndspe8nrma0cn3meayyyqgm', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/r1zndspe8nrma0cn3meayyyqgm', 'cancel': 'https://api.replicate.com/v1/predictions/r1zndspe8nrma0cn3meayyyqgm/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-i4w5bei7zifalstpbve5fjtx7y4mf3tqywo6lqplbsknig2acwaa'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.957Z', 'data_removed': False}, 'content': 'eyJpZCI6InIxem5kc3BlOG5ybWEwY24zbWVheXl5cWdtIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgaG9tZSBvZmZpY2Ugc2V0dGluZyB3aXRoIGdsb3dpbmcgbGFwdG9wIHNjcmVlbiBzaG93aW5nIGNhc2NhZGluZyBjb2RlLCBsaXQgcHJpbWFyaWx5IGJ5IHNjcmVlbiBnbG93LCBkZWVwIHNoYWRvd3MgaW4gYmFja2dyb3VuZCIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9YQVVLekhrTVE2cTRCdFdvR1RlcHFqZzk0MkFiOHBLUkcxcXVrMVNHbVVYMDBaSUtBL3RtcHc0YzhiYWJrLnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDEuOTU3WiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9yMXpuZHNwZThucm1hMGNuM21lYXl5eXFnbS9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3Ixem5kc3BlOG5ybWEwY24zbWVheXl5cWdtIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWk0dzViZWk3emlmYWxzdHBidmU1Zmp0eDd5NG1mM3RxeXdvNmxxcGxic2tuaWcyYWN3YWEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1cb9158c1b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=39nioeEBM%2F%2F7MnuSi6Dy2iICP43pwVD2l4nLa3BXGvxRcDdgCT7nFiXHo1JZ%2ByQkA5LgYRYbjmSpWtNU1ZQU4Sr1sGgqYEMpftM9TIJEnwRJB%2BpFxNB3227YqCBEueVMO3DR\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19261&min_rtt=13086&rtt_var=9318&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1255&delivery_rate=325538&cwnd=247&unsent_bytes=0&cid=55dd7ace85c7ebbd&ts=2654&x=0\\\"', 'content-length': '887', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'vf6586ye5nrme0cn3mebsakt78', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/vf6586ye5nrme0cn3mebsakt78', 'cancel': 'https://api.replicate.com/v1/predictions/vf6586ye5nrme0cn3mebsakt78/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-n7egorfjrzt3ctonrv24fteuhwzsfnzzrbvd6hblwkop4iggyepa'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.933Z', 'data_removed': False}, 'content': 'eyJpZCI6InZmNjU4NnllNW5ybWUwY24zbWVic2FrdDc4IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IlNwbGl0IHNjcmVlbjogTGVmdCBzaWRlIHNob3dpbmcgdGFuZ2xlZCBtZXNzIG9mIHdvcmtmbG93IGRpYWdyYW1zIGluIGRhcmsgZ3JheXMsIHJpZ2h0IHNpZGUgc2hvd2luZyBlbGVnYW50IG1pbmltYWwgZmxvdyBjaGFydCB3aXRoIGRlZXAgYmx1ZSBhY2NlbnQgbGlnaHRpbmciLCJwcm9tcHRfdXBzYW1wbGluZyI6ZmFsc2UsInNhZmV0eV90b2xlcmFuY2UiOjIsIndpZHRoIjoxMjgwfSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L3hlenEvWGhSd2ZjenFZTldySVNHVHhmY2IxdTJNaG1weGxlZGMzZVg3Sjc1aGFvYmhtT0RSQi90bXByXzh2NjVsMi5wbmciLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjQxLjkzM1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvdmY2NTg2eWU1bnJtZTBjbjNtZWJzYWt0NzgvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy92ZjY1ODZ5ZTVucm1lMGNuM21lYnNha3Q3OCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvYmN3ci1uN2Vnb3JmanJ6dDNjdG9ucnYyNGZ0ZXVod3pzZm56enJidmQ2aGJsd2tvcDRpZ2d5ZXBhIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1caeb20f4b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=lcjPYPcgIwR3sKJekV1fshQn5AFwgvhjnSatSlwcUmeDFhE7JlVKW1Zg88bQpmZ8CiclTsuNaRsFxZBeXA2SA92IwI2DdatQf3LLSG%2Bl5dvI63Yj2ZoDIeFY6dNsynn1a8dy\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=15352&min_rtt=15053&rtt_var=6243&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1280&delivery_rate=244196&cwnd=229&unsent_bytes=0&cid=bfe7b255c61f89ca&ts=2706&x=0\\\"', 'content-length': '912', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'fj35g2ye05rma0cn3meab0vt1g', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/fj35g2ye05rma0cn3meab0vt1g', 'cancel': 'https://api.replicate.com/v1/predictions/fj35g2ye05rma0cn3meab0vt1g/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-e2jffiorqgbwwcolxa4tvp6rcvzfcxyovu6gtwan7t2sg3jsnq7q'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.889Z', 'data_removed': False}, 'content': 'eyJpZCI6ImZqMzVnMnllMDVybWEwY24zbWVhYjB2dDFnIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IlNsZWVrIGRhcmsgbW9kZSBpbnRlcmZhY2Ugd2l0aCBnbG93aW5nIHRlYWwgYWNjZW50cywgc2hvd2luZyBjbGVhbiBjb2RlIGVkaXRvciBhbmQgd29ya2Zsb3cgdmlzdWFsaXphdGlvbiIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9uc0g2Z2Z0UnBiVFdlRUk5ZzJqeks4M2ZXQ2JKWk9sanBCZUt4d2UyQWdCSE5kR2lDL3RtcGd6M3hxOXl2LnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDEuODg5WiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9majM1ZzJ5ZTA1cm1hMGNuM21lYWIwdnQxZy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL2ZqMzVnMnllMDVybWEwY24zbWVhYjB2dDFnIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWUyamZmaW9ycWdid3djb2x4YTR0dnA2cmN2emZjeHlvdnU2Z3R3YW43dDJzZzNqc25xN3EifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1c6b634295-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=VT5kA9GO11PX33qpdlv9PEXbMkHcfe5JTuac1WOesRvyIJ93uJY%2Br0cjGcs8L%2FBC9L1lEwp%2FlpRNmR858Dvm75QYf9pHS6bYDFMoIRNWjbItxkW7j8fm2SaRJcY9UeO2VtxZ\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23351&min_rtt=12083&rtt_var=12492&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1228&delivery_rate=352561&cwnd=237&unsent_bytes=0&cid=b7440990455a525e&ts=2706&x=0\\\"', 'content-length': '860', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'xxrz9qq085rme0cn3mebqeq5c0', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/xxrz9qq085rme0cn3mebqeq5c0', 'cancel': 'https://api.replicate.com/v1/predictions/xxrz9qq085rme0cn3mebqeq5c0/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-kpshekoqmpsqtk5sbtx5z2wwqix3eo55houy7s7pffysmsesvthq'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.561Z', 'data_removed': False}, 'content': 'eyJpZCI6Inh4cno5cXEwODVybWUwY24zbWVicWVxNWMwIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6Ik11bHRpcGxlIGRhcmsgcGFuZWxzIHNob3dpbmcgc2ltdWx0YW5lb3VzIHByb2Nlc3NlcyB3aXRoIHB1cnBsZS9ibHVlIGRhdGEgZmxvdyBhbmltYXRpb25zIiwicHJvbXB0X3Vwc2FtcGxpbmciOmZhbHNlLCJzYWZldHlfdG9sZXJhbmNlIjoyLCJ3aWR0aCI6MTI4MH0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS94ZXpxLzFJbjhDN2pNakFMekVkUUFwNVNBREVVTEVsbFA3bmxpSTE1Y2VHR2NSNmV0cHpRVUEvdG1wX3htOXBxdXYucG5nIiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTo0Ni41NjFaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3h4cno5cXEwODVybWUwY24zbWVicWVxNWMwL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMveHhyejlxcTA4NXJtZTBjbjNtZWJxZXE1YzAiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2Jjd3Ita3BzaGVrb3FtcHNxdGs1c2J0eDV6Mnd3cWl4M2VvNTVob3V5N3M3cGZmeXNtc2VzdnRocSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c3988938c3b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=gq2a8vgk37HSJVm4rkGNOBwxCq8%2FLAL0bWNns4fPhPUfkT6rztevGyu6pOEFOGaf%2Bb6gXIPmyKWtaI9Y%2FL%2BPG0ijomBaxvXLEPHEYLwvmolGSXZBaYVlFy0rvvdcCmyF%2FP2a\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23890&min_rtt=13502&rtt_var=12483&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1212&delivery_rate=315508&cwnd=223&unsent_bytes=0&cid=0a188aa122578980&ts=2672&x=0\\\"', 'content-length': '844', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'y8zg31z0anrme0cn3mea6t5hzw', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/y8zg31z0anrme0cn3mea6t5hzw', 'cancel': 'https://api.replicate.com/v1/predictions/y8zg31z0anrme0cn3mea6t5hzw/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-ie4zzaezkovakvuyyyynld2fsfrobaeijgjkzyguvxpu7p7tetnq'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.581Z', 'data_removed': False}, 'content': 'eyJpZCI6Ink4emczMXowYW5ybWUwY24zbWVhNnQ1aHp3IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgY29kZSBlZGl0b3Igc2hvd2luZyBiZWZvcmUvYWZ0ZXIgY29tcGFyaXNvbiwgd2l0aCBzdWJ0bGUgc3ludGF4IGhpZ2hsaWdodGluZyBpbiBkZWVwIHB1cnBsZSIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9OWGhUMW5ETTdPcXRNQmtER041UVhpWnhCRUNTZHNSUnRvYVZlWjFLM3NpMjBaSUtBL3RtcGc2bnZjYm9pLnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDYuNTgxWiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy95OHpnMzF6MGFucm1lMGNuM21lYTZ0NWh6dy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3k4emczMXowYW5ybWUwY24zbWVhNnQ1aHp3Iiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWllNHp6YWV6a292YWt2dXl5eXlubGQyZnNmcm9iYWVpamdqa3p5Z3V2eHB1N3A3dGV0bnEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c39ac997cb4-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=w8sDZ85NfEuzInwv5siDESMHZrCnrKa3IsRIKzN%2FLvcHiutEdqmy0UlBkRXDhdfJJKhi6z7p2qTXvs1zfgaEhWNb1NDNEbIX0lseNtWE0qsUNQVKOWGvsqthN1rEwnjM64UB\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19595&min_rtt=15900&rtt_var=8602&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1219&delivery_rate=267924&cwnd=252&unsent_bytes=0&cid=d08c0ef09ddab2b1&ts=2640&x=0\\\"', 'content-length': '851', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': '8gnqt4704hrm80cn3me8xs9e38', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/8gnqt4704hrm80cn3me8xs9e38', 'cancel': 'https://api.replicate.com/v1/predictions/8gnqt4704hrm80cn3me8xs9e38/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-qanck2osuagokv3crxwwkcd7p7foebmbqwfrtac2oba6az7xgvja'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.532Z', 'data_removed': False}, 'content': 'eyJpZCI6IjhnbnF0NDcwNGhybTgwY24zbWU4eHM5ZTM4IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgZ3JhZGllbnQgYmFja2dyb3VuZCB3aXRoIGZsb2F0aW5nIDNEIGVsZW1lbnRzIHNob3dpbmcgQVBJIGtleSBhbmQgbG9nbyBpbiBkZWVwIGJsdWUgbGlnaHRpbmciLCJwcm9tcHRfdXBzYW1wbGluZyI6ZmFsc2UsInNhZmV0eV90b2xlcmFuY2UiOjIsIndpZHRoIjoxMjgwfSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L3hlenEvbG9kSVFXMW5mWDA4TWFTQkQwd3ZmbllNNWVNYU5IVDd5cWFEVkI2UzRzZGFUbmhvQS90bXBpczF4a2J0My5wbmciLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjQ2LjUzMloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvOGducXQ0NzA0aHJtODBjbjNtZTh4czllMzgvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy84Z25xdDQ3MDRocm04MGNuM21lOHhzOWUzOCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvYmN3ci1xYW5jazJvc3VhZ29rdjNjcnh3d2tjZDdwN2ZvZWJtYnF3ZnJ0YWMyb2JhNmF6N3hndmphIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c397a724233-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=pqvwTzpzU%2ByhQxpEh%2FM3DtLFVVf6ynf8LOltdiOlh8TEUMpG44ZxQdpKn0NdQQDjJDKMoWo6JvhI5VH3tRtCKgdtNwQZ5hc8eqJlJuc5nA7P4vkMN1pnB%2FSEsB%2BNeEZpOxcm\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24377&min_rtt=17079&rtt_var=11617&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2846&recv_bytes=1220&delivery_rate=249429&cwnd=231&unsent_bytes=0&cid=c32208a984256c06&ts=2956&x=0\\\"', 'content-length': '852', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  [{'json': {'id': 'r1zndspe8nrma0cn3meayyyqgm', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/r1zndspe8nrma0cn3meayyyqgm', 'cancel': 'https://api.replicate.com/v1/predictions/r1zndspe8nrma0cn3meayyyqgm/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-i4w5bei7zifalstpbve5fjtx7y4mf3tqywo6lqplbsknig2acwaa'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.957Z', 'data_removed': False}, 'content': 'eyJpZCI6InIxem5kc3BlOG5ybWEwY24zbWVheXl5cWdtIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgaG9tZSBvZmZpY2Ugc2V0dGluZyB3aXRoIGdsb3dpbmcgbGFwdG9wIHNjcmVlbiBzaG93aW5nIGNhc2NhZGluZyBjb2RlLCBsaXQgcHJpbWFyaWx5IGJ5IHNjcmVlbiBnbG93LCBkZWVwIHNoYWRvd3MgaW4gYmFja2dyb3VuZCIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9YQVVLekhrTVE2cTRCdFdvR1RlcHFqZzk0MkFiOHBLUkcxcXVrMVNHbVVYMDBaSUtBL3RtcHc0YzhiYWJrLnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDEuOTU3WiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9yMXpuZHNwZThucm1hMGNuM21lYXl5eXFnbS9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3Ixem5kc3BlOG5ybWEwY24zbWVheXl5cWdtIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWk0dzViZWk3emlmYWxzdHBidmU1Zmp0eDd5NG1mM3RxeXdvNmxxcGxic2tuaWcyYWN3YWEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1cb9158c1b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=39nioeEBM%2F%2F7MnuSi6Dy2iICP43pwVD2l4nLa3BXGvxRcDdgCT7nFiXHo1JZ%2ByQkA5LgYRYbjmSpWtNU1ZQU4Sr1sGgqYEMpftM9TIJEnwRJB%2BpFxNB3227YqCBEueVMO3DR\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19261&min_rtt=13086&rtt_var=9318&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1255&delivery_rate=325538&cwnd=247&unsent_bytes=0&cid=55dd7ace85c7ebbd&ts=2654&x=0\\\"', 'content-length': '887', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'vf6586ye5nrme0cn3mebsakt78', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/vf6586ye5nrme0cn3mebsakt78', 'cancel': 'https://api.replicate.com/v1/predictions/vf6586ye5nrme0cn3mebsakt78/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-n7egorfjrzt3ctonrv24fteuhwzsfnzzrbvd6hblwkop4iggyepa'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.933Z', 'data_removed': False}, 'content': 'eyJpZCI6InZmNjU4NnllNW5ybWUwY24zbWVic2FrdDc4IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IlNwbGl0IHNjcmVlbjogTGVmdCBzaWRlIHNob3dpbmcgdGFuZ2xlZCBtZXNzIG9mIHdvcmtmbG93IGRpYWdyYW1zIGluIGRhcmsgZ3JheXMsIHJpZ2h0IHNpZGUgc2hvd2luZyBlbGVnYW50IG1pbmltYWwgZmxvdyBjaGFydCB3aXRoIGRlZXAgYmx1ZSBhY2NlbnQgbGlnaHRpbmciLCJwcm9tcHRfdXBzYW1wbGluZyI6ZmFsc2UsInNhZmV0eV90b2xlcmFuY2UiOjIsIndpZHRoIjoxMjgwfSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L3hlenEvWGhSd2ZjenFZTldySVNHVHhmY2IxdTJNaG1weGxlZGMzZVg3Sjc1aGFvYmhtT0RSQi90bXByXzh2NjVsMi5wbmciLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjQxLjkzM1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvdmY2NTg2eWU1bnJtZTBjbjNtZWJzYWt0NzgvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy92ZjY1ODZ5ZTVucm1lMGNuM21lYnNha3Q3OCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvYmN3ci1uN2Vnb3JmanJ6dDNjdG9ucnYyNGZ0ZXVod3pzZm56enJidmQ2aGJsd2tvcDRpZ2d5ZXBhIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1caeb20f4b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=lcjPYPcgIwR3sKJekV1fshQn5AFwgvhjnSatSlwcUmeDFhE7JlVKW1Zg88bQpmZ8CiclTsuNaRsFxZBeXA2SA92IwI2DdatQf3LLSG%2Bl5dvI63Yj2ZoDIeFY6dNsynn1a8dy\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=15352&min_rtt=15053&rtt_var=6243&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1280&delivery_rate=244196&cwnd=229&unsent_bytes=0&cid=bfe7b255c61f89ca&ts=2706&x=0\\\"', 'content-length': '912', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'fj35g2ye05rma0cn3meab0vt1g', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/fj35g2ye05rma0cn3meab0vt1g', 'cancel': 'https://api.replicate.com/v1/predictions/fj35g2ye05rma0cn3meab0vt1g/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-e2jffiorqgbwwcolxa4tvp6rcvzfcxyovu6gtwan7t2sg3jsnq7q'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.889Z', 'data_removed': False}, 'content': 'eyJpZCI6ImZqMzVnMnllMDVybWEwY24zbWVhYjB2dDFnIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IlNsZWVrIGRhcmsgbW9kZSBpbnRlcmZhY2Ugd2l0aCBnbG93aW5nIHRlYWwgYWNjZW50cywgc2hvd2luZyBjbGVhbiBjb2RlIGVkaXRvciBhbmQgd29ya2Zsb3cgdmlzdWFsaXphdGlvbiIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9uc0g2Z2Z0UnBiVFdlRUk5ZzJqeks4M2ZXQ2JKWk9sanBCZUt4d2UyQWdCSE5kR2lDL3RtcGd6M3hxOXl2LnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDEuODg5WiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9majM1ZzJ5ZTA1cm1hMGNuM21lYWIwdnQxZy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL2ZqMzVnMnllMDVybWEwY24zbWVhYjB2dDFnIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWUyamZmaW9ycWdid3djb2x4YTR0dnA2cmN2emZjeHlvdnU2Z3R3YW43dDJzZzNqc25xN3EifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1c6b634295-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=VT5kA9GO11PX33qpdlv9PEXbMkHcfe5JTuac1WOesRvyIJ93uJY%2Br0cjGcs8L%2FBC9L1lEwp%2FlpRNmR858Dvm75QYf9pHS6bYDFMoIRNWjbItxkW7j8fm2SaRJcY9UeO2VtxZ\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23351&min_rtt=12083&rtt_var=12492&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1228&delivery_rate=352561&cwnd=237&unsent_bytes=0&cid=b7440990455a525e&ts=2706&x=0\\\"', 'content-length': '860', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'xxrz9qq085rme0cn3mebqeq5c0', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/xxrz9qq085rme0cn3mebqeq5c0', 'cancel': 'https://api.replicate.com/v1/predictions/xxrz9qq085rme0cn3mebqeq5c0/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-kpshekoqmpsqtk5sbtx5z2wwqix3eo55houy7s7pffysmsesvthq'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.561Z', 'data_removed': False}, 'content': 'eyJpZCI6Inh4cno5cXEwODVybWUwY24zbWVicWVxNWMwIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6Ik11bHRpcGxlIGRhcmsgcGFuZWxzIHNob3dpbmcgc2ltdWx0YW5lb3VzIHByb2Nlc3NlcyB3aXRoIHB1cnBsZS9ibHVlIGRhdGEgZmxvdyBhbmltYXRpb25zIiwicHJvbXB0X3Vwc2FtcGxpbmciOmZhbHNlLCJzYWZldHlfdG9sZXJhbmNlIjoyLCJ3aWR0aCI6MTI4MH0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS94ZXpxLzFJbjhDN2pNakFMekVkUUFwNVNBREVVTEVsbFA3bmxpSTE1Y2VHR2NSNmV0cHpRVUEvdG1wX3htOXBxdXYucG5nIiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTo0Ni41NjFaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3h4cno5cXEwODVybWUwY24zbWVicWVxNWMwL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMveHhyejlxcTA4NXJtZTBjbjNtZWJxZXE1YzAiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2Jjd3Ita3BzaGVrb3FtcHNxdGs1c2J0eDV6Mnd3cWl4M2VvNTVob3V5N3M3cGZmeXNtc2VzdnRocSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c3988938c3b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=gq2a8vgk37HSJVm4rkGNOBwxCq8%2FLAL0bWNns4fPhPUfkT6rztevGyu6pOEFOGaf%2Bb6gXIPmyKWtaI9Y%2FL%2BPG0ijomBaxvXLEPHEYLwvmolGSXZBaYVlFy0rvvdcCmyF%2FP2a\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23890&min_rtt=13502&rtt_var=12483&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1212&delivery_rate=315508&cwnd=223&unsent_bytes=0&cid=0a188aa122578980&ts=2672&x=0\\\"', 'content-length': '844', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'y8zg31z0anrme0cn3mea6t5hzw', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/y8zg31z0anrme0cn3mea6t5hzw', 'cancel': 'https://api.replicate.com/v1/predictions/y8zg31z0anrme0cn3mea6t5hzw/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-ie4zzaezkovakvuyyyynld2fsfrobaeijgjkzyguvxpu7p7tetnq'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.581Z', 'data_removed': False}, 'content': 'eyJpZCI6Ink4emczMXowYW5ybWUwY24zbWVhNnQ1aHp3IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgY29kZSBlZGl0b3Igc2hvd2luZyBiZWZvcmUvYWZ0ZXIgY29tcGFyaXNvbiwgd2l0aCBzdWJ0bGUgc3ludGF4IGhpZ2hsaWdodGluZyBpbiBkZWVwIHB1cnBsZSIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9OWGhUMW5ETTdPcXRNQmtER041UVhpWnhCRUNTZHNSUnRvYVZlWjFLM3NpMjBaSUtBL3RtcGc2bnZjYm9pLnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDYuNTgxWiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy95OHpnMzF6MGFucm1lMGNuM21lYTZ0NWh6dy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3k4emczMXowYW5ybWUwY24zbWVhNnQ1aHp3Iiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWllNHp6YWV6a292YWt2dXl5eXlubGQyZnNmcm9iYWVpamdqa3p5Z3V2eHB1N3A3dGV0bnEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c39ac997cb4-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=w8sDZ85NfEuzInwv5siDESMHZrCnrKa3IsRIKzN%2FLvcHiutEdqmy0UlBkRXDhdfJJKhi6z7p2qTXvs1zfgaEhWNb1NDNEbIX0lseNtWE0qsUNQVKOWGvsqthN1rEwnjM64UB\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19595&min_rtt=15900&rtt_var=8602&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1219&delivery_rate=267924&cwnd=252&unsent_bytes=0&cid=d08c0ef09ddab2b1&ts=2640&x=0\\\"', 'content-length': '851', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': '8gnqt4704hrm80cn3me8xs9e38', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/8gnqt4704hrm80cn3me8xs9e38', 'cancel': 'https://api.replicate.com/v1/predictions/8gnqt4704hrm80cn3me8xs9e38/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-qanck2osuagokv3crxwwkcd7p7foebmbqwfrtac2oba6az7xgvja'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.532Z', 'data_removed': False}, 'content': 'eyJpZCI6IjhnbnF0NDcwNGhybTgwY24zbWU4eHM5ZTM4IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgZ3JhZGllbnQgYmFja2dyb3VuZCB3aXRoIGZsb2F0aW5nIDNEIGVsZW1lbnRzIHNob3dpbmcgQVBJIGtleSBhbmQgbG9nbyBpbiBkZWVwIGJsdWUgbGlnaHRpbmciLCJwcm9tcHRfdXBzYW1wbGluZyI6ZmFsc2UsInNhZmV0eV90b2xlcmFuY2UiOjIsIndpZHRoIjoxMjgwfSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L3hlenEvbG9kSVFXMW5mWDA4TWFTQkQwd3ZmbllNNWVNYU5IVDd5cWFEVkI2UzRzZGFUbmhvQS90bXBpczF4a2J0My5wbmciLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjQ2LjUzMloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvOGducXQ0NzA0aHJtODBjbjNtZTh4czllMzgvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy84Z25xdDQ3MDRocm04MGNuM21lOHhzOWUzOCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvYmN3ci1xYW5jazJvc3VhZ29rdjNjcnh3d2tjZDdwN2ZvZWJtYnF3ZnJ0YWMyb2JhNmF6N3hndmphIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c397a724233-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=pqvwTzpzU%2ByhQxpEh%2FM3DtLFVVf6ynf8LOltdiOlh8TEUMpG44ZxQdpKn0NdQQDjJDKMoWo6JvhI5VH3tRtCKgdtNwQZ5hc8eqJlJuc5nA7P4vkMN1pnB%2FSEsB%2BNeEZpOxcm\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24377&min_rtt=17079&rtt_var=11617&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2846&recv_bytes=1220&delivery_rate=249429&cwnd=231&unsent_bytes=0&cid=c32208a984256c06&ts=2956&x=0\\\"', 'content-length': '852', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': '8gnqt4704hrm80cn3me8xs9e38', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/8gnqt4704hrm80cn3me8xs9e38', 'cancel': 'https://api.replicate.com/v1/predictions/8gnqt4704hrm80cn3me8xs9e38/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-qanck2osuagokv3crxwwkcd7p7foebmbqwfrtac2oba6az7xgvja'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.532Z', 'data_removed': False}, 'content': 'eyJpZCI6IjhnbnF0NDcwNGhybTgwY24zbWU4eHM5ZTM4IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgZ3JhZGllbnQgYmFja2dyb3VuZCB3aXRoIGZsb2F0aW5nIDNEIGVsZW1lbnRzIHNob3dpbmcgQVBJIGtleSBhbmQgbG9nbyBpbiBkZWVwIGJsdWUgbGlnaHRpbmciLCJwcm9tcHRfdXBzYW1wbGluZyI6ZmFsc2UsInNhZmV0eV90b2xlcmFuY2UiOjIsIndpZHRoIjoxMjgwfSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L3hlenEvbG9kSVFXMW5mWDA4TWFTQkQwd3ZmbllNNWVNYU5IVDd5cWFEVkI2UzRzZGFUbmhvQS90bXBpczF4a2J0My5wbmciLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjQ2LjUzMloiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvOGducXQ0NzA0aHJtODBjbjNtZTh4czllMzgvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy84Z25xdDQ3MDRocm04MGNuM21lOHhzOWUzOCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvYmN3ci1xYW5jazJvc3VhZ29rdjNjcnh3d2tjZDdwN2ZvZWJtYnF3ZnJ0YWMyb2JhNmF6N3hndmphIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c397a724233-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=pqvwTzpzU%2ByhQxpEh%2FM3DtLFVVf6ynf8LOltdiOlh8TEUMpG44ZxQdpKn0NdQQDjJDKMoWo6JvhI5VH3tRtCKgdtNwQZ5hc8eqJlJuc5nA7P4vkMN1pnB%2FSEsB%2BNeEZpOxcm\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24377&min_rtt=17079&rtt_var=11617&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2846&recv_bytes=1220&delivery_rate=249429&cwnd=231&unsent_bytes=0&cid=c32208a984256c06&ts=2956&x=0\\\"', 'content-length': '852', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'xxrz9qq085rme0cn3mebqeq5c0', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/xxrz9qq085rme0cn3mebqeq5c0', 'cancel': 'https://api.replicate.com/v1/predictions/xxrz9qq085rme0cn3mebqeq5c0/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-kpshekoqmpsqtk5sbtx5z2wwqix3eo55houy7s7pffysmsesvthq'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.561Z', 'data_removed': False}, 'content': 'eyJpZCI6Inh4cno5cXEwODVybWUwY24zbWVicWVxNWMwIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6Ik11bHRpcGxlIGRhcmsgcGFuZWxzIHNob3dpbmcgc2ltdWx0YW5lb3VzIHByb2Nlc3NlcyB3aXRoIHB1cnBsZS9ibHVlIGRhdGEgZmxvdyBhbmltYXRpb25zIiwicHJvbXB0X3Vwc2FtcGxpbmciOmZhbHNlLCJzYWZldHlfdG9sZXJhbmNlIjoyLCJ3aWR0aCI6MTI4MH0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS94ZXpxLzFJbjhDN2pNakFMekVkUUFwNVNBREVVTEVsbFA3bmxpSTE1Y2VHR2NSNmV0cHpRVUEvdG1wX3htOXBxdXYucG5nIiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTo0Ni41NjFaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3h4cno5cXEwODVybWUwY24zbWVicWVxNWMwL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMveHhyejlxcTA4NXJtZTBjbjNtZWJxZXE1YzAiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2Jjd3Ita3BzaGVrb3FtcHNxdGs1c2J0eDV6Mnd3cWl4M2VvNTVob3V5N3M3cGZmeXNtc2VzdnRocSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c3988938c3b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=gq2a8vgk37HSJVm4rkGNOBwxCq8%2FLAL0bWNns4fPhPUfkT6rztevGyu6pOEFOGaf%2Bb6gXIPmyKWtaI9Y%2FL%2BPG0ijomBaxvXLEPHEYLwvmolGSXZBaYVlFy0rvvdcCmyF%2FP2a\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23890&min_rtt=13502&rtt_var=12483&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1212&delivery_rate=315508&cwnd=223&unsent_bytes=0&cid=0a188aa122578980&ts=2672&x=0\\\"', 'content-length': '844', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'y8zg31z0anrme0cn3mea6t5hzw', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/y8zg31z0anrme0cn3mea6t5hzw', 'cancel': 'https://api.replicate.com/v1/predictions/y8zg31z0anrme0cn3mea6t5hzw/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-ie4zzaezkovakvuyyyynld2fsfrobaeijgjkzyguvxpu7p7tetnq'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:46.581Z', 'data_removed': False}, 'content': 'eyJpZCI6Ink4emczMXowYW5ybWUwY24zbWVhNnQ1aHp3IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgY29kZSBlZGl0b3Igc2hvd2luZyBiZWZvcmUvYWZ0ZXIgY29tcGFyaXNvbiwgd2l0aCBzdWJ0bGUgc3ludGF4IGhpZ2hsaWdodGluZyBpbiBkZWVwIHB1cnBsZSIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9OWGhUMW5ETTdPcXRNQmtER041UVhpWnhCRUNTZHNSUnRvYVZlWjFLM3NpMjBaSUtBL3RtcGc2bnZjYm9pLnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDYuNTgxWiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy95OHpnMzF6MGFucm1lMGNuM21lYTZ0NWh6dy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3k4emczMXowYW5ybWUwY24zbWVhNnQ1aHp3Iiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWllNHp6YWV6a292YWt2dXl5eXlubGQyZnNmcm9iYWVpamdqa3p5Z3V2eHB1N3A3dGV0bnEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:49 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c39ac997cb4-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=w8sDZ85NfEuzInwv5siDESMHZrCnrKa3IsRIKzN%2FLvcHiutEdqmy0UlBkRXDhdfJJKhi6z7p2qTXvs1zfgaEhWNb1NDNEbIX0lseNtWE0qsUNQVKOWGvsqthN1rEwnjM64UB\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19595&min_rtt=15900&rtt_var=8602&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1219&delivery_rate=267924&cwnd=252&unsent_bytes=0&cid=d08c0ef09ddab2b1&ts=2640&x=0\\\"', 'content-length': '851', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Dramatic reveal', 'scene': 'Code snippet transformation', 'duration': 3, 'narration': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'start_time': 14, 'image_prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'text_overlay': 'SIMPLIFY'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Quick cuts between features', 'scene': 'Split screen showing parallel processing visualization', 'duration': 3, 'narration': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'start_time': 11, 'image_prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'text_overlay': 'PARALLEL POWER'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Energetic finale', 'scene': 'Call-to-action with floating elements', 'duration': 4, 'narration': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'start_time': 17, 'image_prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'text_overlay': 'GET STARTED FREE'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'vf6586ye5nrme0cn3mebsakt78', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/vf6586ye5nrme0cn3mebsakt78', 'cancel': 'https://api.replicate.com/v1/predictions/vf6586ye5nrme0cn3mebsakt78/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-n7egorfjrzt3ctonrv24fteuhwzsfnzzrbvd6hblwkop4iggyepa'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.933Z', 'data_removed': False}, 'content': 'eyJpZCI6InZmNjU4NnllNW5ybWUwY24zbWVic2FrdDc4IiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IlNwbGl0IHNjcmVlbjogTGVmdCBzaWRlIHNob3dpbmcgdGFuZ2xlZCBtZXNzIG9mIHdvcmtmbG93IGRpYWdyYW1zIGluIGRhcmsgZ3JheXMsIHJpZ2h0IHNpZGUgc2hvd2luZyBlbGVnYW50IG1pbmltYWwgZmxvdyBjaGFydCB3aXRoIGRlZXAgYmx1ZSBhY2NlbnQgbGlnaHRpbmciLCJwcm9tcHRfdXBzYW1wbGluZyI6ZmFsc2UsInNhZmV0eV90b2xlcmFuY2UiOjIsIndpZHRoIjoxMjgwfSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L3hlenEvWGhSd2ZjenFZTldySVNHVHhmY2IxdTJNaG1weGxlZGMzZVg3Sjc1aGFvYmhtT0RSQi90bXByXzh2NjVsMi5wbmciLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjQxLjkzM1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvdmY2NTg2eWU1bnJtZTBjbjNtZWJzYWt0NzgvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy92ZjY1ODZ5ZTVucm1lMGNuM21lYnNha3Q3OCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvYmN3ci1uN2Vnb3JmanJ6dDNjdG9ucnYyNGZ0ZXVod3pzZm56enJidmQ2aGJsd2tvcDRpZ2d5ZXBhIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1caeb20f4b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=lcjPYPcgIwR3sKJekV1fshQn5AFwgvhjnSatSlwcUmeDFhE7JlVKW1Zg88bQpmZ8CiclTsuNaRsFxZBeXA2SA92IwI2DdatQf3LLSG%2Bl5dvI63Yj2ZoDIeFY6dNsynn1a8dy\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=15352&min_rtt=15053&rtt_var=6243&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1280&delivery_rate=244196&cwnd=229&unsent_bytes=0&cid=bfe7b255c61f89ca&ts=2706&x=0\\\"', 'content-length': '912', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'r1zndspe8nrma0cn3meayyyqgm', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/r1zndspe8nrma0cn3meayyyqgm', 'cancel': 'https://api.replicate.com/v1/predictions/r1zndspe8nrma0cn3meayyyqgm/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-i4w5bei7zifalstpbve5fjtx7y4mf3tqywo6lqplbsknig2acwaa'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.957Z', 'data_removed': False}, 'content': 'eyJpZCI6InIxem5kc3BlOG5ybWEwY24zbWVheXl5cWdtIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IkRhcmsgaG9tZSBvZmZpY2Ugc2V0dGluZyB3aXRoIGdsb3dpbmcgbGFwdG9wIHNjcmVlbiBzaG93aW5nIGNhc2NhZGluZyBjb2RlLCBsaXQgcHJpbWFyaWx5IGJ5IHNjcmVlbiBnbG93LCBkZWVwIHNoYWRvd3MgaW4gYmFja2dyb3VuZCIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9YQVVLekhrTVE2cTRCdFdvR1RlcHFqZzk0MkFiOHBLUkcxcXVrMVNHbVVYMDBaSUtBL3RtcHc0YzhiYWJrLnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDEuOTU3WiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9yMXpuZHNwZThucm1hMGNuM21lYXl5eXFnbS9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3Ixem5kc3BlOG5ybWEwY24zbWVheXl5cWdtIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWk0dzViZWk3emlmYWxzdHBidmU1Zmp0eDd5NG1mM3RxeXdvNmxxcGxic2tuaWcyYWN3YWEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1cb9158c1b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=39nioeEBM%2F%2F7MnuSi6Dy2iICP43pwVD2l4nLa3BXGvxRcDdgCT7nFiXHo1JZ%2ByQkA5LgYRYbjmSpWtNU1ZQU4Sr1sGgqYEMpftM9TIJEnwRJB%2BpFxNB3227YqCBEueVMO3DR\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19261&min_rtt=13086&rtt_var=9318&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1255&delivery_rate=325538&cwnd=247&unsent_bytes=0&cid=55dd7ace85c7ebbd&ts=2654&x=0\\\"', 'content-length': '887', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'fj35g2ye05rma0cn3meab0vt1g', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/fj35g2ye05rma0cn3meab0vt1g', 'cancel': 'https://api.replicate.com/v1/predictions/fj35g2ye05rma0cn3meab0vt1g/cancel', 'stream': 'https://stream.replicate.com/v1/files/bcwr-e2jffiorqgbwwcolxa4tvp6rcvzfcxyovu6gtwan7t2sg3jsnq7q'}, 'error': None, 'input': {'width': 1280, 'height': 720, 'prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'output_format': 'png', 'output_quality': 100, 'safety_tolerance': 2, 'prompt_upsampling': False}, 'model': 'black-forest-labs/flux-1.1-pro', 'output': 'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png', 'status': 'processing', 'version': 'dp-a956b5a516d14ae1a2b108b3a81e8306', 'created_at': '2025-02-19T07:29:41.889Z', 'data_removed': False}, 'content': 'eyJpZCI6ImZqMzVnMnllMDVybWEwY24zbWVhYjB2dDFnIiwibW9kZWwiOiJibGFjay1mb3Jlc3QtbGFicy9mbHV4LTEuMS1wcm8iLCJ2ZXJzaW9uIjoiZHAtYTk1NmI1YTUxNmQxNGFlMWEyYjEwOGIzYTgxZTgzMDYiLCJpbnB1dCI6eyJoZWlnaHQiOjcyMCwib3V0cHV0X2Zvcm1hdCI6InBuZyIsIm91dHB1dF9xdWFsaXR5IjoxMDAsInByb21wdCI6IlNsZWVrIGRhcmsgbW9kZSBpbnRlcmZhY2Ugd2l0aCBnbG93aW5nIHRlYWwgYWNjZW50cywgc2hvd2luZyBjbGVhbiBjb2RlIGVkaXRvciBhbmQgd29ya2Zsb3cgdmlzdWFsaXphdGlvbiIsInByb21wdF91cHNhbXBsaW5nIjpmYWxzZSwic2FmZXR5X3RvbGVyYW5jZSI6Miwid2lkdGgiOjEyODB9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkveGV6cS9uc0g2Z2Z0UnBiVFdlRUk5ZzJqeks4M2ZXQ2JKWk9sanBCZUt4d2UyQWdCSE5kR2lDL3RtcGd6M3hxOXl2LnBuZyIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6NDEuODg5WiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9majM1ZzJ5ZTA1cm1hMGNuM21lYWIwdnQxZy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL2ZqMzVnMnllMDVybWEwY24zbWVhYjB2dDFnIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9iY3dyLWUyamZmaW9ycWdid3djb2x4YTR0dnA2cmN2emZjeHlvdnU2Z3R3YW43dDJzZzNqc25xN3EifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:29:44 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c1c6b634295-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=VT5kA9GO11PX33qpdlv9PEXbMkHcfe5JTuac1WOesRvyIJ93uJY%2Br0cjGcs8L%2FBC9L1lEwp%2FlpRNmR858Dvm75QYf9pHS6bYDFMoIRNWjbItxkW7j8fm2SaRJcY9UeO2VtxZ\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23351&min_rtt=12083&rtt_var=12492&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1228&delivery_rate=352561&cwnd=237&unsent_bytes=0&cid=b7440990455a525e&ts=2706&x=0\\\"', 'content-length': '860', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Dynamic split reveal', 'scene': 'Split screen transition showing messy vs clean workflows', 'duration': 4, 'narration': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'start_time': 3, 'image_prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'text_overlay': 'Chaos → Clean'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Fast zoom transition', 'scene': 'Opening hook - rapid zoom into laptop screen showing code patterns', 'duration': 3, 'narration': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'start_time': 0, 'image_prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'text_overlay': 'OVERWHELMED?'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Smooth feature showcase', 'scene': 'Quick demo of Julep interface in action', 'duration': 4, 'narration': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'start_time': 7, 'image_prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'text_overlay': 'JULEP AI'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  [{'json': {'id': 'p3j4th5k05rge0cn3me9z7248w', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w', 'cancel': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-zeg44xofub43mvyq42zpadqku3bnyzpettcao7q6rtgcjhstm43q'}, 'error': None, 'input': {'text': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.977Z', 'data_removed': False}, 'content': 'eyJpZCI6InAzajR0aDVrMDVyZ2UwY24zbWU5ejcyNDh3IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJFdmVyIG5vdGljZSBob3cgbW9zdCBkZXZlbG9wZXIgdG9vbHMgZmVlbCBvdmVyd2hlbG1pbmc/IExpa2Ugc3RhcmluZyBpbnRvIGFuIGVuZGxlc3Mgd2FsbCBvZiBjb21wbGV4aXR5PyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC84eDZveWE1V1pQWjFNTmRhaEI4U25LTjlZYTN6UW1Lc2dEZ1huNlZKMXBmdjBaSUtBL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM0Ljk3N1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDNqNHRoNWswNXJnZTBjbjNtZTl6NzI0OHcvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9wM2o0dGg1azA1cmdlMGNuM21lOXo3MjQ4dyIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS16ZWc0NHhvZnViNDNtdnlxNDJ6cGFkcWt1M2JueXpwZXR0Y2FvN3E2cnRnY2poc3RtNDNxIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:35 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf12b34de9a-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=tGa167Xr9aPHilZJom%2Bf4XY9eFQjLJSqYTj0wdDXQjxs8m7ac23Ba26Fwe5enuhYgmHwYR1Jzr7zFAqwehckJMG%2BsC74f%2BpGvOnq4LMZhvF6rxsDgg2J7b%2FCClr4OR0EAWXU\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19158&min_rtt=13222&rtt_var=9199&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2846&recv_bytes=1170&delivery_rate=322190&cwnd=252&unsent_bytes=0&cid=fb5dfb364ca5fc47&ts=1037&x=0\\\"', 'content-length': '780', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'jrbjq45jydrge0cn3meb92hfa0', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0', 'cancel': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-iutge4yfw7elxy3e3e5wld37qfykvyyl3qp7f4723m2ldqn2t2sq'}, 'error': None, 'input': {'text': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.963Z', 'data_removed': False}, 'content': 'eyJpZCI6ImpyYmpxNDVqeWRyZ2UwY24zbWViOTJoZmEwIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJXaGF0IGlmIHRoZXJlIHdhcyBhIHdheSB0byB0dXJuIGNoYW9zIGludG8gY2xlYW4sIHNlcnZlcmxlc3MgQUkgd29ya2Zsb3dzIHdpdGgganVzdCBhIGZldyBsaW5lcyBvZiBjb2RlPyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9WY3JrbXJXNWZHMGlKaVFmaThpa2RwU3RSSjVIb3Z0T2Y5OTJZSE42VUNEQVRuaG9BL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM0Ljk2M1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvanJianE0NWp5ZHJnZTBjbjNtZWI5MmhmYTAvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9qcmJqcTQ1anlkcmdlMGNuM21lYjkyaGZhMCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1pdXRnZTR5Znc3ZWx4eTNlM2U1d2xkMzdxZnlrdnl5bDNxcDdmNDcyM20ybGRxbjJ0MnNxIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:36 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf12eff43f8-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=2eVeP1K3U%2Fpvts03nqojTfZGFpLhKc%2Bj3l0P53qoqhnb%2BB7vlePKjy4yCAsYwNzRBsybAjnpqbLqn4PURdKviT5ZtJjQA7yuLKA5qVg%2Bg1PnXJUCAJTK5ogKZzqSEHtcu80b\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23270&min_rtt=11741&rtt_var=12480&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1170&delivery_rate=362831&cwnd=252&unsent_bytes=0&cid=124f2552fea51988&ts=1420&x=0\\\"', 'content-length': '780', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': '9ske1fxk1xrga0cn3mea3jxysc', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc', 'cancel': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-om4wdb4revlvj6ppb4sktnketuflqfcq7ob66an6ssxyx64ofuda'}, 'error': None, 'input': {'text': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.991Z', 'data_removed': False}, 'content': 'eyJpZCI6Ijlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJNZWV0IEp1bGVwIC0gdGhlIHNlcnZlcmxlc3MgcGxhdGZvcm0gdGhhdCBsZXRzIGRhdGEgdGVhbXMgYnVpbGQgc29waGlzdGljYXRlZCBBSSB3b3JrZmxvd3Mgd2l0aG91dCB0aGUgaGVhZGFjaGUuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsL2VCTkc2d1lpVEpYZ1lhQmR2TGtlZ0FjTzJHVkI1ZWV3enJ1dW1WZzhuZVllWDZNRUYvb3V0cHV0LndhdiIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzQuOTkxWiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy85c2tlMWZ4azF4cmdhMGNuM21lYTNqeHlzYy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zLzlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9mZGRxLW9tNHdkYjRyZXZsdmo2cHBiNHNrdG5rZXR1ZmxxZmNxN29iNjZhbjZzc3h5eDY0b2Z1ZGEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:35 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf10c227cb2-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=LaqZycAgnM5AC8wv86tHydOx0pW%2FZPYlTTvLk1%2Fldw86OGkOznQKFZA9M0GFuk279O0gg3l08qurKE%2BsH2dbmuiUJwzjbMjZ%2BwWSlh1eg55BflWAIvfa9eGtBTqaDYqJTFDu\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24041&min_rtt=16959&rtt_var=11418&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1178&delivery_rate=251194&cwnd=235&unsent_bytes=0&cid=7b268fc36822a515&ts=679&x=0\\\"', 'content-length': '788', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'p6p9dtp07srg80cn3mebqc1m3c', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c', 'cancel': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-fnhel4s53zwzxhlb3sdduenfvavbyllptqetjplges3bdxe4bg7q'}, 'error': None, 'input': {'text': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.366Z', 'data_removed': False}, 'content': 'eyJpZCI6InA2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSdW4gY29tcGxleCBBSSBvcGVyYXRpb25zIGluIHBhcmFsbGVsLCBtYW5hZ2Ugc3RhdGUgZWZmb3J0bGVzc2x5LCBhbmQgc2NhbGUgd2l0aG91dCB0b3VjaGluZyBpbmZyYXN0cnVjdHVyZS4iLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvRXhvZ1gwNTcyT0lyQjVEY1VqOWpzd2xkZzM4Q2dMTkFYdEpld3Ewa2dON3gwWklLQS9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOC4zNjZaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3A2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDZwOWR0cDA3c3JnODBjbjNtZWJxYzFtM2MiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtZm5oZWw0czUzend6eGhsYjNzZGR1ZW5mdmF2YnlsbHB0cWV0anBsZ2VzM2JkeGU0Ymc3cSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:39 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c064c3d438b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=ImxzppCZaXQaTNdrcvEucHeaK7rXAVx1n%2F3pSUG0CuNzAPfU87C9N%2B%2BHVfSoTYacU7dhKoLsrdhRdgCz0XZkfpouITenj6rbS6Rq1%2FWtESRM89DpZP50efs3tynWo6zPTCZd\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=14774&min_rtt=12601&rtt_var=6278&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1174&delivery_rate=338068&cwnd=221&unsent_bytes=0&cid=528c506b7e629a3b&ts=1160&x=0\\\"', 'content-length': '784', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': 'dbrfpky0asrgc0cn3me845v9m4', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4', 'cancel': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-esvpykfjlan67hrgevu4nkphqamohtzv27vqav6mzr764yi3wrcq'}, 'error': None, 'input': {'text': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.39Z', 'data_removed': False}, 'content': 'eyJpZCI6ImRicmZwa3kwYXNyZ2MwY24zbWU4NDV2OW00IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJUdXJuIDgwIGxpbmVzIG9mIGNvbXBsZXggY29kZSBpbnRvIHNpbXBsZSwgbWFuYWdlZCB3b3JrZmxvd3MgdGhhdCBqdXN0IHdvcmsuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsLzM3TG56NmNDcUlwUkhkWDRGbTVlVkpKeVZKNHVLMmg4MmdBOUJqQVh3dUt4MFpJS0Evb3V0cHV0LndhdiIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzguMzlaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL2RicmZwa3kwYXNyZ2MwY24zbWU4NDV2OW00L2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvZGJyZnBreTBhc3JnYzBjbjNtZTg0NXY5bTQiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtZXN2cHlrZmpsYW42N2hyZ2V2dTRua3BocWFtb2h0enYyN3ZxYXY2bXpyNzY0eWkzd3JjcSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:39 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c067ee042dd-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=uo4oAZ61z%2FvgF3l75mzMmu1GpDbwd2K2fzAH4IHUGBhAXxt0FSIC5hqvpt6BRPdmfutVw1Pr42RtJ6EV0QTCBglY%2FAlf1Q5uD9z9pvOTHQsQk983Krx7rncZJ36TGX5pS5XU\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=15380&min_rtt=15041&rtt_var=6319&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1142&delivery_rate=239918&cwnd=240&unsent_bytes=0&cid=d848bb2f791a7cd8&ts=792&x=0\\\"', 'content-length': '751', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}, {'json': {'id': '4kmaj95zw9rga0cn3meb3t0g8c', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c', 'cancel': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-msepfbrkiezjnf653jra36uuyljlt2l4yscx4eqp26xaqmovjgka'}, 'error': None, 'input': {'text': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.274Z', 'data_removed': False}, 'content': 'eyJpZCI6IjRrbWFqOTV6dzlyZ2EwY24zbWViM3QwZzhjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSZWFkeSB0byB0cmFuc2Zvcm0geW91ciBBSSB3b3JrZmxvd3M/IEdldCB5b3VyIGZyZWUgQVBJIGtleSBub3cgYXQgSnVsZXAuYWkiLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvS3N4anlRWkZ2QjcxRmhnM2VHb2UwWHJUT1JJMlZVZ2ZmNXdmRzQ4SWs4VVZNZEdpQy9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOC4yNzRaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zLzRrbWFqOTV6dzlyZ2EwY24zbWViM3QwZzhjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvNGttYWo5NXp3OXJnYTBjbjNtZWIzdDBnOGMiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtbXNlcGZicmtpZXpqbmY2NTNqcmEzNnV1eWxqbHQybDR5c2N4NGVxcDI2eGFxbW92amdrYSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:38 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c05dc76185d-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=eJJ%2BwVCYu8MK9Df9Xn%2FIjKSgS1TwjFLkbtgDRxIGKvQ%2BBm1E5RH4T4vZuKpaDkUJp3g1PRLvu%2FFWqE04N2FkXDpcB0PwY6c1ai56TWEPVZ7NgRV8tFBD67qBOhAaBCQIVvL2\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=14830&min_rtt=12188&rtt_var=6458&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1141&delivery_rate=349524&cwnd=215&unsent_bytes=0&cid=050ea72bf0124479&ts=428&x=0\\\"', 'content-length': '751', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'p6p9dtp07srg80cn3mebqc1m3c', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c', 'cancel': 'https://api.replicate.com/v1/predictions/p6p9dtp07srg80cn3mebqc1m3c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-fnhel4s53zwzxhlb3sdduenfvavbyllptqetjplges3bdxe4bg7q'}, 'error': None, 'input': {'text': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.366Z', 'data_removed': False}, 'content': 'eyJpZCI6InA2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSdW4gY29tcGxleCBBSSBvcGVyYXRpb25zIGluIHBhcmFsbGVsLCBtYW5hZ2Ugc3RhdGUgZWZmb3J0bGVzc2x5LCBhbmQgc2NhbGUgd2l0aG91dCB0b3VjaGluZyBpbmZyYXN0cnVjdHVyZS4iLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvRXhvZ1gwNTcyT0lyQjVEY1VqOWpzd2xkZzM4Q2dMTkFYdEpld3Ewa2dON3gwWklLQS9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOC4zNjZaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL3A2cDlkdHAwN3NyZzgwY24zbWVicWMxbTNjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDZwOWR0cDA3c3JnODBjbjNtZWJxYzFtM2MiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtZm5oZWw0czUzend6eGhsYjNzZGR1ZW5mdmF2YnlsbHB0cWV0anBsZ2VzM2JkeGU0Ymc3cSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:39 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c064c3d438b-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=ImxzppCZaXQaTNdrcvEucHeaK7rXAVx1n%2F3pSUG0CuNzAPfU87C9N%2B%2BHVfSoTYacU7dhKoLsrdhRdgCz0XZkfpouITenj6rbS6Rq1%2FWtESRM89DpZP50efs3tynWo6zPTCZd\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=14774&min_rtt=12601&rtt_var=6278&sent=5&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1174&delivery_rate=338068&cwnd=221&unsent_bytes=0&cid=528c506b7e629a3b&ts=1160&x=0\\\"', 'content-length': '784', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'dbrfpky0asrgc0cn3me845v9m4', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4', 'cancel': 'https://api.replicate.com/v1/predictions/dbrfpky0asrgc0cn3me845v9m4/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-esvpykfjlan67hrgevu4nkphqamohtzv27vqav6mzr764yi3wrcq'}, 'error': None, 'input': {'text': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.39Z', 'data_removed': False}, 'content': 'eyJpZCI6ImRicmZwa3kwYXNyZ2MwY24zbWU4NDV2OW00IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJUdXJuIDgwIGxpbmVzIG9mIGNvbXBsZXggY29kZSBpbnRvIHNpbXBsZSwgbWFuYWdlZCB3b3JrZmxvd3MgdGhhdCBqdXN0IHdvcmsuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsLzM3TG56NmNDcUlwUkhkWDRGbTVlVkpKeVZKNHVLMmg4MmdBOUJqQVh3dUt4MFpJS0Evb3V0cHV0LndhdiIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzguMzlaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zL2RicmZwa3kwYXNyZ2MwY24zbWU4NDV2OW00L2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvZGJyZnBreTBhc3JnYzBjbjNtZTg0NXY5bTQiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtZXN2cHlrZmpsYW42N2hyZ2V2dTRua3BocWFtb2h0enYyN3ZxYXY2bXpyNzY0eWkzd3JjcSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:39 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c067ee042dd-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=uo4oAZ61z%2FvgF3l75mzMmu1GpDbwd2K2fzAH4IHUGBhAXxt0FSIC5hqvpt6BRPdmfutVw1Pr42RtJ6EV0QTCBglY%2FAlf1Q5uD9z9pvOTHQsQk983Krx7rncZJ36TGX5pS5XU\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=15380&min_rtt=15041&rtt_var=6319&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1142&delivery_rate=239918&cwnd=240&unsent_bytes=0&cid=d848bb2f791a7cd8&ts=792&x=0\\\"', 'content-length': '751', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': '4kmaj95zw9rga0cn3meb3t0g8c', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c', 'cancel': 'https://api.replicate.com/v1/predictions/4kmaj95zw9rga0cn3meb3t0g8c/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-msepfbrkiezjnf653jra36uuyljlt2l4yscx4eqp26xaqmovjgka'}, 'error': None, 'input': {'text': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:38.274Z', 'data_removed': False}, 'content': 'eyJpZCI6IjRrbWFqOTV6dzlyZ2EwY24zbWViM3QwZzhjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJSZWFkeSB0byB0cmFuc2Zvcm0geW91ciBBSSB3b3JrZmxvd3M/IEdldCB5b3VyIGZyZWUgQVBJIGtleSBub3cgYXQgSnVsZXAuYWkiLCJ2b2ljZSI6ImFtX2FkYW0ifSwibG9ncyI6IiIsIm91dHB1dCI6Imh0dHBzOi8vcmVwbGljYXRlLmRlbGl2ZXJ5L2N6amwvS3N4anlRWkZ2QjcxRmhnM2VHb2UwWHJUT1JJMlZVZ2ZmNXdmRzQ4SWs4VVZNZEdpQy9vdXRwdXQud2F2IiwiZGF0YV9yZW1vdmVkIjpmYWxzZSwiZXJyb3IiOm51bGwsInN0YXR1cyI6InByb2Nlc3NpbmciLCJjcmVhdGVkX2F0IjoiMjAyNS0wMi0xOVQwNzoyOTozOC4yNzRaIiwidXJscyI6eyJjYW5jZWwiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zLzRrbWFqOTV6dzlyZ2EwY24zbWViM3QwZzhjL2NhbmNlbCIsImdldCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvNGttYWo5NXp3OXJnYTBjbjNtZWIzdDBnOGMiLCJzdHJlYW0iOiJodHRwczovL3N0cmVhbS5yZXBsaWNhdGUuY29tL3YxL2ZpbGVzL2ZkZHEtbXNlcGZicmtpZXpqbmY2NTNqcmEzNnV1eWxqbHQybDR5c2N4NGVxcDI2eGFxbW92amdrYSJ9fQ==', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:38 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448c05dc76185d-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=eJJ%2BwVCYu8MK9Df9Xn%2FIjKSgS1TwjFLkbtgDRxIGKvQ%2BBm1E5RH4T4vZuKpaDkUJp3g1PRLvu%2FFWqE04N2FkXDpcB0PwY6c1ai56TWEPVZ7NgRV8tFBD67qBOhAaBCQIVvL2\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=14830&min_rtt=12188&rtt_var=6458&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1141&delivery_rate=349524&cwnd=215&unsent_bytes=0&cid=050ea72bf0124479&ts=428&x=0\\\"', 'content-length': '751', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Dramatic reveal', 'scene': 'Code snippet transformation', 'duration': 3, 'narration': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'start_time': 14, 'image_prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'text_overlay': 'SIMPLIFY'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Quick cuts between features', 'scene': 'Split screen showing parallel processing visualization', 'duration': 3, 'narration': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'start_time': 11, 'image_prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'text_overlay': 'PARALLEL POWER'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Energetic finale', 'scene': 'Call-to-action with floating elements', 'duration': 4, 'narration': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'start_time': 17, 'image_prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'text_overlay': 'GET STARTED FREE'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'jrbjq45jydrge0cn3meb92hfa0', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0', 'cancel': 'https://api.replicate.com/v1/predictions/jrbjq45jydrge0cn3meb92hfa0/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-iutge4yfw7elxy3e3e5wld37qfykvyyl3qp7f4723m2ldqn2t2sq'}, 'error': None, 'input': {'text': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.963Z', 'data_removed': False}, 'content': 'eyJpZCI6ImpyYmpxNDVqeWRyZ2UwY24zbWViOTJoZmEwIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJXaGF0IGlmIHRoZXJlIHdhcyBhIHdheSB0byB0dXJuIGNoYW9zIGludG8gY2xlYW4sIHNlcnZlcmxlc3MgQUkgd29ya2Zsb3dzIHdpdGgganVzdCBhIGZldyBsaW5lcyBvZiBjb2RlPyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC9WY3JrbXJXNWZHMGlKaVFmaThpa2RwU3RSSjVIb3Z0T2Y5OTJZSE42VUNEQVRuaG9BL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM0Ljk2M1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvanJianE0NWp5ZHJnZTBjbjNtZWI5MmhmYTAvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9qcmJqcTQ1anlkcmdlMGNuM21lYjkyaGZhMCIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS1pdXRnZTR5Znc3ZWx4eTNlM2U1d2xkMzdxZnlrdnl5bDNxcDdmNDcyM20ybGRxbjJ0MnNxIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:36 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf12eff43f8-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=2eVeP1K3U%2Fpvts03nqojTfZGFpLhKc%2Bj3l0P53qoqhnb%2BB7vlePKjy4yCAsYwNzRBsybAjnpqbLqn4PURdKviT5ZtJjQA7yuLKA5qVg%2Bg1PnXJUCAJTK5ogKZzqSEHtcu80b\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=23270&min_rtt=11741&rtt_var=12480&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2847&recv_bytes=1170&delivery_rate=362831&cwnd=252&unsent_bytes=0&cid=124f2552fea51988&ts=1420&x=0\\\"', 'content-length': '780', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '199', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': 'p3j4th5k05rge0cn3me9z7248w', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w', 'cancel': 'https://api.replicate.com/v1/predictions/p3j4th5k05rge0cn3me9z7248w/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-zeg44xofub43mvyq42zpadqku3bnyzpettcao7q6rtgcjhstm43q'}, 'error': None, 'input': {'text': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.977Z', 'data_removed': False}, 'content': 'eyJpZCI6InAzajR0aDVrMDVyZ2UwY24zbWU5ejcyNDh3IiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJFdmVyIG5vdGljZSBob3cgbW9zdCBkZXZlbG9wZXIgdG9vbHMgZmVlbCBvdmVyd2hlbG1pbmc/IExpa2Ugc3RhcmluZyBpbnRvIGFuIGVuZGxlc3Mgd2FsbCBvZiBjb21wbGV4aXR5PyIsInZvaWNlIjoiYW1fYWRhbSJ9LCJsb2dzIjoiIiwib3V0cHV0IjoiaHR0cHM6Ly9yZXBsaWNhdGUuZGVsaXZlcnkvY3pqbC84eDZveWE1V1pQWjFNTmRhaEI4U25LTjlZYTN6UW1Lc2dEZ1huNlZKMXBmdjBaSUtBL291dHB1dC53YXYiLCJkYXRhX3JlbW92ZWQiOmZhbHNlLCJlcnJvciI6bnVsbCwic3RhdHVzIjoicHJvY2Vzc2luZyIsImNyZWF0ZWRfYXQiOiIyMDI1LTAyLTE5VDA3OjI5OjM0Ljk3N1oiLCJ1cmxzIjp7ImNhbmNlbCI6Imh0dHBzOi8vYXBpLnJlcGxpY2F0ZS5jb20vdjEvcHJlZGljdGlvbnMvcDNqNHRoNWswNXJnZTBjbjNtZTl6NzI0OHcvY2FuY2VsIiwiZ2V0IjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy9wM2o0dGg1azA1cmdlMGNuM21lOXo3MjQ4dyIsInN0cmVhbSI6Imh0dHBzOi8vc3RyZWFtLnJlcGxpY2F0ZS5jb20vdjEvZmlsZXMvZmRkcS16ZWc0NHhvZnViNDNtdnlxNDJ6cGFkcWt1M2JueXpwZXR0Y2FvN3E2cnRnY2poc3RtNDNxIn19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:35 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf12b34de9a-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=tGa167Xr9aPHilZJom%2Bf4XY9eFQjLJSqYTj0wdDXQjxs8m7ac23Ba26Fwe5enuhYgmHwYR1Jzr7zFAqwehckJMG%2BsC74f%2BpGvOnq4LMZhvF6rxsDgg2J7b%2FCClr4OR0EAWXU\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19158&min_rtt=13222&rtt_var=9199&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2846&recv_bytes=1170&delivery_rate=322190&cwnd=252&unsent_bytes=0&cid=fb5dfb364ca5fc47&ts=1037&x=0\\\"', 'content-length': '780', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '198', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  {'json': {'id': '9ske1fxk1xrga0cn3mea3jxysc', 'logs': '', 'urls': {'get': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc', 'cancel': 'https://api.replicate.com/v1/predictions/9ske1fxk1xrga0cn3mea3jxysc/cancel', 'stream': 'https://stream.replicate.com/v1/files/fddq-om4wdb4revlvj6ppb4sktnketuflqfcq7ob66an6ssxyx64ofuda'}, 'error': None, 'input': {'text': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'speed': 1, 'voice': 'am_adam'}, 'model': 'jaaari/kokoro-82m', 'output': 'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav', 'status': 'processing', 'version': 'f559560eb822dc509045f3921a1921234918b91739db4bf3daab2169b71c7a13', 'created_at': '2025-02-19T07:29:34.991Z', 'data_removed': False}, 'content': 'eyJpZCI6Ijlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjIiwibW9kZWwiOiJqYWFhcmkva29rb3JvLTgybSIsInZlcnNpb24iOiJmNTU5NTYwZWI4MjJkYzUwOTA0NWYzOTIxYTE5MjEyMzQ5MThiOTE3MzlkYjRiZjNkYWFiMjE2OWI3MWM3YTEzIiwiaW5wdXQiOnsic3BlZWQiOjEsInRleHQiOiJNZWV0IEp1bGVwIC0gdGhlIHNlcnZlcmxlc3MgcGxhdGZvcm0gdGhhdCBsZXRzIGRhdGEgdGVhbXMgYnVpbGQgc29waGlzdGljYXRlZCBBSSB3b3JrZmxvd3Mgd2l0aG91dCB0aGUgaGVhZGFjaGUuIiwidm9pY2UiOiJhbV9hZGFtIn0sImxvZ3MiOiIiLCJvdXRwdXQiOiJodHRwczovL3JlcGxpY2F0ZS5kZWxpdmVyeS9jempsL2VCTkc2d1lpVEpYZ1lhQmR2TGtlZ0FjTzJHVkI1ZWV3enJ1dW1WZzhuZVllWDZNRUYvb3V0cHV0LndhdiIsImRhdGFfcmVtb3ZlZCI6ZmFsc2UsImVycm9yIjpudWxsLCJzdGF0dXMiOiJwcm9jZXNzaW5nIiwiY3JlYXRlZF9hdCI6IjIwMjUtMDItMTlUMDc6Mjk6MzQuOTkxWiIsInVybHMiOnsiY2FuY2VsIjoiaHR0cHM6Ly9hcGkucmVwbGljYXRlLmNvbS92MS9wcmVkaWN0aW9ucy85c2tlMWZ4azF4cmdhMGNuM21lYTNqeHlzYy9jYW5jZWwiLCJnZXQiOiJodHRwczovL2FwaS5yZXBsaWNhdGUuY29tL3YxL3ByZWRpY3Rpb25zLzlza2UxZnhrMXhyZ2EwY24zbWVhM2p4eXNjIiwic3RyZWFtIjoiaHR0cHM6Ly9zdHJlYW0ucmVwbGljYXRlLmNvbS92MS9maWxlcy9mZGRxLW9tNHdkYjRyZXZsdmo2cHBiNHNrdG5rZXR1ZmxxZmNxN29iNjZhbjZzc3h5eDY0b2Z1ZGEifX0=', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:29:35 GMT', 'vary': 'Accept-Encoding', 'cf-ray': '91448bf10c227cb2-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'expect-ct': 'max-age=86400, enforce', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=LaqZycAgnM5AC8wv86tHydOx0pW%2FZPYlTTvLk1%2Fldw86OGkOznQKFZA9M0GFuk279O0gg3l08qurKE%2BsH2dbmuiUJwzjbMjZ%2BwWSlh1eg55BflWAIvfa9eGtBTqaDYqJTFDu\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=UTF-8', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=24041&min_rtt=16959&rtt_var=11418&sent=6&recv=7&lost=0&retrans=0&sent_bytes=2848&recv_bytes=1178&delivery_rate=251194&cwnd=235&unsent_bytes=0&cid=7b268fc36822a515&ts=679&x=0\\\"', 'content-length': '788', 'cf-cache-status': 'DYNAMIC', 'ratelimit-reset': '1', 'referrer-policy': 'same-origin', 'x-frame-options': 'SAMEORIGIN', 'x-xss-protection': '1; mode=block', 'preference-applied': 'wait=60', 'ratelimit-remaining': '197', 'x-content-type-options': 'nosniff', 'strict-transport-security': 'max-age=15552000'}, 'status_code': 201}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Fast zoom transition', 'scene': 'Opening hook - rapid zoom into laptop screen showing code patterns', 'duration': 3, 'narration': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'start_time': 0, 'image_prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'text_overlay': 'OVERWHELMED?'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Dynamic split reveal', 'scene': 'Split screen transition showing messy vs clean workflows', 'duration': 4, 'narration': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'start_time': 3, 'image_prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'text_overlay': 'Chaos → Clean'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'tone': 'Smooth feature showcase', 'scene': 'Quick demo of Julep interface in action', 'duration': 4, 'narration': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'start_time': 7, 'image_prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'text_overlay': 'JULEP AI'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'script': {'scenes': [{'tone': 'Fast zoom transition', 'scene': 'Opening hook - rapid zoom into laptop screen showing code patterns', 'duration': 3, 'narration': 'Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?', 'start_time': 0, 'image_prompt': 'Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background', 'text_overlay': 'OVERWHELMED?'}, {'tone': 'Dynamic split reveal', 'scene': 'Split screen transition showing messy vs clean workflows', 'duration': 4, 'narration': 'What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?', 'start_time': 3, 'image_prompt': 'Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting', 'text_overlay': 'Chaos → Clean'}, {'tone': 'Smooth feature showcase', 'scene': 'Quick demo of Julep interface in action', 'duration': 4, 'narration': 'Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.', 'start_time': 7, 'image_prompt': 'Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization', 'text_overlay': 'JULEP AI'}, {'tone': 'Quick cuts between features', 'scene': 'Split screen showing parallel processing visualization', 'duration': 3, 'narration': 'Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.', 'start_time': 11, 'image_prompt': 'Multiple dark panels showing simultaneous processes with purple/blue data flow animations', 'text_overlay': 'PARALLEL POWER'}, {'tone': 'Dramatic reveal', 'scene': 'Code snippet transformation', 'duration': 3, 'narration': 'Turn 80 lines of complex code into simple, managed workflows that just work.', 'start_time': 14, 'image_prompt': 'Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple', 'text_overlay': 'SIMPLIFY'}, {'tone': 'Energetic finale', 'scene': 'Call-to-action with floating elements', 'duration': 4, 'narration': 'Ready to transform your AI workflows? Get your free API key now at Julep.ai', 'start_time': 17, 'image_prompt': 'Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting', 'text_overlay': 'GET STARTED FREE'}]}}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  I'll help craft a script that takes advantage of the identified trends - particularly the pattern recognition theme and AI tool educational content that's resonating with viewers. Let me script a dynamic, pattern-driven video that presents an AI workflow tool in an engaging way.\\n\",\n      \"\\n\",\n      \"Let me analyze how to combine those elements:\\n\",\n      \"1. Open with a striking pattern/coincidence to hook viewers\\n\",\n      \"2. Transition into showcasing the tool functionality \\n\",\n      \"3. Keep the tone light and casual while delivering real value\\n\",\n      \"4. Use the optimal short-form timing from the trends (~11-20 seconds per scene)\\n\",\n      \"5. Include educational elements and clear value propositions\\n\",\n      \"\\n\",\n      \"I notice we don't have a tool available for generating the JSON response format, so I'll provide it directly in a structured way that aligns with the trending insights:\\n\",\n      \"\\n\",\n      \"```json\\n\",\n      \"{\\n\",\n      \"  \\\"scenes\\\": [\\n\",\n      \"    {\\n\",\n      \"      \\\"scene\\\": \\\"Opening hook - rapid zoom into laptop screen showing code patterns\\\",\\n\",\n      \"      \\\"narration\\\": \\\"Ever notice how most developer tools feel overwhelming? Like staring into an endless wall of complexity?\\\",\\n\",\n      \"      \\\"image_prompt\\\": \\\"Dark home office setting with glowing laptop screen showing cascading code, lit primarily by screen glow, deep shadows in background\\\",\\n\",\n      \"      \\\"text_overlay\\\": \\\"OVERWHELMED?\\\",\\n\",\n      \"      \\\"tone\\\": \\\"Fast zoom transition\\\",\\n\",\n      \"      \\\"start_time\\\": 0,\\n\",\n      \"      \\\"duration\\\": 3\\n\",\n      \"    },\\n\",\n      \"    {\\n\",\n      \"      \\\"scene\\\": \\\"Split screen transition showing messy vs clean workflows\\\",\\n\",\n      \"      \\\"narration\\\": \\\"What if there was a way to turn chaos into clean, serverless AI workflows with just a few lines of code?\\\",\\n\",\n      \"      \\\"image_prompt\\\": \\\"Split screen: Left side showing tangled mess of workflow diagrams in dark grays, right side showing elegant minimal flow chart with deep blue accent lighting\\\",\\n\",\n      \"      \\\"text_overlay\\\": \\\"Chaos → Clean\\\",\\n\",\n      \"      \\\"tone\\\": \\\"Dynamic split reveal\\\",\\n\",\n      \"      \\\"start_time\\\": 3,\\n\",\n      \"      \\\"duration\\\": 4\\n\",\n      \"    },\\n\",\n      \"    {\\n\",\n      \"      \\\"scene\\\": \\\"Quick demo of Julep interface in action\\\",\\n\",\n      \"      \\\"narration\\\": \\\"Meet Julep - the serverless platform that lets data teams build sophisticated AI workflows without the headache.\\\",\\n\",\n      \"      \\\"image_prompt\\\": \\\"Sleek dark mode interface with glowing teal accents, showing clean code editor and workflow visualization\\\",\\n\",\n      \"      \\\"text_overlay\\\": \\\"JULEP AI\\\",\\n\",\n      \"      \\\"tone\\\": \\\"Smooth feature showcase\\\",\\n\",\n      \"      \\\"start_time\\\": 7,\\n\",\n      \"      \\\"duration\\\": 4\\n\",\n      \"    },\\n\",\n      \"    {\\n\",\n      \"      \\\"scene\\\": \\\"Split screen showing parallel processing visualization\\\",\\n\",\n      \"      \\\"narration\\\": \\\"Run complex AI operations in parallel, manage state effortlessly, and scale without touching infrastructure.\\\",\\n\",\n      \"      \\\"image_prompt\\\": \\\"Multiple dark panels showing simultaneous processes with purple/blue data flow animations\\\",\\n\",\n      \"      \\\"text_overlay\\\": \\\"PARALLEL POWER\\\",\\n\",\n      \"      \\\"tone\\\": \\\"Quick cuts between features\\\",\\n\",\n      \"      \\\"start_time\\\": 11,\\n\",\n      \"      \\\"duration\\\": 3\\n\",\n      \"    },\\n\",\n      \"    {\\n\",\n      \"      \\\"scene\\\": \\\"Code snippet transformation\\\",\\n\",\n      \"      \\\"narration\\\": \\\"Turn 80 lines of complex code into simple, managed workflows that just work.\\\",\\n\",\n      \"      \\\"image_prompt\\\": \\\"Dark code editor showing before/after comparison, with subtle syntax highlighting in deep purple\\\",\\n\",\n      \"      \\\"text_overlay\\\": \\\"SIMPLIFY\\\",\\n\",\n      \"      \\\"tone\\\": \\\"Dramatic reveal\\\",\\n\",\n      \"      \\\"start_time\\\": 14,\\n\",\n      \"      \\\"duration\\\": 3\\n\",\n      \"    },\\n\",\n      \"    {\\n\",\n      \"      \\\"scene\\\": \\\"Call-to-action with floating elements\\\",\\n\",\n      \"      \\\"narration\\\": \\\"Ready to transform your AI workflows? Get your free API key now at Julep.ai\\\",\\n\",\n      \"      \\\"image_prompt\\\": \\\"Dark gradient background with floating 3D elements showing API key and logo in deep blue lighting\\\",\\n\",\n      \"      \\\"text_overlay\\\": \\\"GET STARTED FREE\\\",\\n\",\n      \"      \\\"tone\\\": \\\"Energetic finale\\\",\\n\",\n      \"      \\\"start_time\\\": 17,\\n\",\n      \"      \\\"duration\\\": 4\\n\",\n      \"    }\\n\",\n      \"  ]\\n\",\n      \"}\\n\",\n      \"```\\n\",\n      \"\\n\",\n      \"This script:\\n\",\n      \"1. Opens with a relatable pain point (complexity of dev tools)\\n\",\n      \"2. Uses the trending pattern recognition hook\\n\",\n      \"3. Keeps scenes between 3-4 seconds for optimal engagement\\n\",\n      \"4. Maintains casual but informative tone\\n\",\n      \"5. Includes clear value propositions\\n\",\n      \"6. Ends with strong call-to-action\\n\",\n      \"7. Uses dark/moody color schemes throughout\\n\",\n      \"8. Total duration of 21 seconds aligns with trending video length sweet spot\\n\",\n      \"\\n\",\n      \"Each scene is designed to flow smoothly into the next while maintaining viewer interest through dynamic visuals and crisp narration. The darker color palette and mood lighting suggestions will give it a premium, sophisticated feel while keeping the content accessible.\\n\",\n      \"\\n\",\n      \"Would you like me to adjust any aspects of the scenes or pacing to better align with the trends?\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'content': '<sup\\\\\\\\><div align=\\\"center\\\"\\\\\\\\>\\\\\\\\[English\\\\\\\\](README.md) | \\\\\\\\[中文翻译\\\\\\\\](./.github/README-CN.md) | \\\\\\\\[日本語翻訳\\\\\\\\](./.github/README-JA.md) | \\\\\\\\[French\\\\\\\\](./.github/README-FR.md)</div\\\\\\\\></sup\\\\\\\\>\\\\n\\\\n<div align=\\\"center\\\" id=\\\"top\\\"\\\\\\\\>\\\\n<img src=\\\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\\\" alt=\\\"julep\\\" height=300 /\\\\\\\\>\\\\n\\\\n<br\\\\\\\\>\\\\n  <p\\\\\\\\>\\\\n    <a href=\\\"https://dashboard.julep.ai\\\"\\\\\\\\>\\\\n      <img src=\\\"https://img.shields.io/badge/Get\\\\\\\\_API\\\\\\\\_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\\\" alt=\\\"Get API Key\\\" height=\\\"28\\\"\\\\\\\\>\\\\n    </a\\\\\\\\>\\\\n    <span\\\\\\\\>&nbsp;</span\\\\\\\\>\\\\n    <a href=\\\"https://docs.julep.ai\\\"\\\\\\\\>\\\\n      <img src=\\\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\\\" alt=\\\"Documentation\\\" height=\\\"28\\\"\\\\\\\\>\\\\n    </a\\\\\\\\>\\\\n  </p\\\\\\\\>\\\\n  <p\\\\\\\\>\\\\n   <a href=\\\"https://www.npmjs.com/package/@julep/sdk\\\"\\\\\\\\><img src=\\\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\\\" alt=\\\"NPM Version\\\" height=\\\"28\\\"\\\\\\\\></a\\\\\\\\>\\\\n    <span\\\\\\\\>&nbsp;</span\\\\\\\\>\\\\n    <a href=\\\"https://pypi.org/project/julep\\\"\\\\\\\\><img src=\\\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\\\" alt=\\\"PyPI - Version\\\" height=\\\"28\\\"\\\\\\\\></a\\\\\\\\>\\\\n    <span\\\\\\\\>&nbsp;</span\\\\\\\\>\\\\n    <a href=\\\"https://hub.docker.com/u/julepai\\\"\\\\\\\\><img src=\\\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\\\" alt=\\\"Docker Image Version\\\" height=\\\"28\\\"\\\\\\\\></a\\\\\\\\>\\\\n    <span\\\\\\\\>&nbsp;</span\\\\\\\\>\\\\n    <a href=\\\"https://choosealicense.com/licenses/apache/\\\"\\\\\\\\><img src=\\\"https://img.shields.io/github/license/julep-ai/julep\\\" alt=\\\"GitHub License\\\" height=\\\"28\\\"\\\\\\\\></a\\\\\\\\>\\\\n  </p\\\\\\\\>\\\\n  \\\\n  <h3\\\\\\\\>\\\\n    <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\"\\\\\\\\>Discord</a\\\\\\\\>\\\\n    ·\\\\n    <a href=\\\"https://x.com/julep\\\\\\\\_ai\\\" rel=\\\"dofollow\\\"\\\\\\\\>𝕏</a\\\\\\\\>\\\\n    ·\\\\n    <a href=\\\"https://www.linkedin.com/company/julep-ai\\\" rel=\\\"dofollow\\\"\\\\\\\\>LinkedIn</a\\\\\\\\>\\\\n  </h3\\\\\\\\>\\\\n</div\\\\\\\\>\\\\n\\\\n<div align=\\\"center\\\"\\\\\\\\>\\\\n  <h3\\\\\\\\><i\\\\\\\\>Serverless AI Workflows for Data & ML Teams</i\\\\\\\\></h3\\\\\\\\>\\\\n</div\\\\\\\\>\\\\n\\\\nJulep is a serverless platform that helps data and ML teams build sophisticated AI workflows. It provides a robust foundation for orchestrating complex AI operations, managing state across interactions, and integrating with your existing data infrastructure and tools.\\\\n\\\\nWhether you\\\\'re building data pipelines or creating AI workflows, Julep makes it easy to compose and scale LLM-powered workflows without managing infrastructure. Imagine you want to build an AI agent that can do more than just answer simple questions—it needs to handle complex tasks, remember past interactions, and maybe even use other tools or APIs. That\\\\'s where Julep comes in. Our platform handles the heavy lifting so you can focus on building intelligent solutions for your business.\\\\n\\\\n💡 To learn more about Julep, check out the \\\\\\\\*\\\\\\\\*\\\\\\\\[Documentation\\\\\\\\](https://docs.julep.ai/docs/introduction/overview)\\\\\\\\*\\\\\\\\*.\\\\n\\\\n<!-- START doctoc generated TOC please keep comment here to allow auto update --\\\\\\\\>\\\\n<!-- DON\\\\'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\\\\\\\\>\\\\n<h3\\\\\\\\>📖 Table of Contents</h3\\\\\\\\>\\\\n\\\\n- \\\\\\\\[✨ Key Features\\\\\\\\](#-key-features)\\\\n- \\\\\\\\[🧠 Mental Model\\\\\\\\](#-mental-model)\\\\n- \\\\\\\\[📦 Installation\\\\\\\\](#-installation)\\\\n  - \\\\\\\\[🛠️ Julep SDKs\\\\\\\\](#-julep-sdks)\\\\n  - \\\\\\\\[🛠️ Julep CLI\\\\\\\\](#-julep-cli)\\\\n- \\\\\\\\[🚀 Quick Start\\\\\\\\](#-quick-start)\\\\n  - \\\\\\\\[What\\\\'s Next?\\\\\\\\](#whats-next)\\\\n- \\\\\\\\[🔍 Reference\\\\\\\\](#-reference)\\\\n  - \\\\\\\\[📚 SDK Reference\\\\\\\\](#-sdk-reference)\\\\n  - \\\\\\\\[🛠️ API Reference\\\\\\\\](#-api-reference)\\\\n- \\\\\\\\[💻 Local Setup\\\\\\\\](#-local-setup)\\\\n  - \\\\\\\\[1. Clone the Repository\\\\\\\\](#1-clone-the-repository)\\\\n  - \\\\\\\\[2. Navigate to the Root Directory\\\\\\\\](#2-navigate-to-the-root-directory)\\\\n  - \\\\\\\\[3. Set Up Environment Variables\\\\\\\\](#3-set-up-environment-variables)\\\\n  - \\\\\\\\[4. Create a Docker Volume for Backup\\\\\\\\](#4-create-a-docker-volume-for-backup)\\\\n  - \\\\\\\\[5. Run the Project using Docker Compose\\\\\\\\](#5-run-the-project-using-docker-compose)\\\\n  - \\\\\\\\[6. Interaction\\\\\\\\](#6-interaction)\\\\n  - \\\\\\\\[7. Troubleshooting\\\\\\\\](#7-troubleshooting)\\\\n- \\\\\\\\[👥 Contributors\\\\\\\\](#-contributors)\\\\n  - \\\\\\\\[Join Our Community! 🌟\\\\\\\\](#join-our-community-)\\\\n- \\\\\\\\[📄 License\\\\\\\\](#-license)\\\\n\\\\n<!-- END doctoc generated TOC please keep comment here to allow auto update --\\\\\\\\>\\\\n\\\\n---\\\\n\\\\n## ✨ Key Features\\\\n\\\\n<div align=\\\"left\\\"\\\\\\\\>\\\\n  <table\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🧠</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Smart Memory</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Agents that remember context and learn from past interactions</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🔄</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Workflow Engine</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Build complex, multi-step processes with branching and loops</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>⚡</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Parallel Processing</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Run multiple operations simultaneously for maximum efficiency</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🛠️</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Tool Integration</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Seamlessly connect with external APIs and services</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🔌</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Easy Setup</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Get started quickly with Python and Node.js SDKs</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🔒</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Reliable & Secure</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Built-in error handling, retries, and security features</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>📊</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Monitoring</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Track task progress and performance in real-time</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n  </table\\\\\\\\>\\\\n</div\\\\\\\\>\\\\n\\\\n💡 To learn more about Julep, check out the \\\\\\\\*\\\\\\\\*\\\\\\\\[Documentation\\\\\\\\](https://docs.julep.ai/docs/introduction/overview)\\\\\\\\*\\\\\\\\*.\\\\n\\\\n---\\\\n\\\\n## 🧠 Mental Model\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\nJulep is made up of the following components:\\\\n\\\\n- \\\\\\\\*\\\\\\\\*Julep Platform\\\\\\\\*\\\\\\\\*: The Julep platform is a cloud service that runs your workflows. It includes a language for describing workflows, a server for running those workflows, and an SDK for interacting with the platform.\\\\n- \\\\\\\\*\\\\\\\\*Julep SDKs\\\\\\\\*\\\\\\\\*: Julep SDKs are a set of libraries for building workflows. There are SDKs for Python and JavaScript, with more on the way.\\\\n- \\\\\\\\*\\\\\\\\*Julep CLI\\\\\\\\*\\\\\\\\*: The Julep CLI is a command-line tool that allows you to interact with the Julep platform directly from your terminal.\\\\n- \\\\\\\\*\\\\\\\\*Julep API\\\\\\\\*\\\\\\\\*: The Julep API is a RESTful API that you can use to interact with the Julep platform.\\\\n</p\\\\\\\\>\\\\n\\\\n<div align=\\\"center\\\"\\\\\\\\>\\\\n  <img src=\\\"https://github.com/user-attachments/assets/38420b5d-9342-4c8d-bae9-b47c28ae45af\\\" height=\\\"360\\\"/\\\\\\\\>\\\\n</div\\\\\\\\>\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\nThink of Julep as a platform that combines both client-side and server-side components to help you build advanced AI agents. Here\\\\'s how to visualize it:\\\\n\\\\n1. \\\\\\\\*\\\\\\\\*Your Application Code:\\\\\\\\*\\\\\\\\*\\\\n\\\\n   - You can use the Julep SDK in your application to define agents, tasks, and workflows.\\\\n   - The SDK provides functions and classes that make it easy to set up and manage these components.\\\\n   - You can use the Julep CLI to interact with the Julep platform directly from your terminal.\\\\n\\\\n2. \\\\\\\\*\\\\\\\\*Julep Backend Service:\\\\\\\\*\\\\\\\\*\\\\n\\\\n   - The SDK communicates with the Julep backend over the network.\\\\n   - The CLI communicates with the Julep backend via the SDK.\\\\n   - The backend handles execution of tasks, maintains session state, stores documents, and orchestrates workflows.\\\\n\\\\n3. \\\\\\\\*\\\\\\\\*Integration with Tools and APIs:\\\\\\\\*\\\\\\\\*\\\\n   - Within your workflows, you can integrate external tools and services.\\\\n   - The backend facilitates these integrations, so your agents can, for example, perform web searches, access databases, or call third-party APIs.\\\\n</p\\\\\\\\>\\\\n\\\\n---\\\\n\\\\n## 📦 Installation\\\\n\\\\n<div align=\\\"left\\\"\\\\\\\\>\\\\n  <h3\\\\\\\\>🛠️ Julep SDKs</h3\\\\\\\\>\\\\n\\\\n  To get started with Julep, install it using \\\\\\\\[npm\\\\\\\\](https://www.npmjs.com/package/@julep/sdk) or \\\\\\\\[pip\\\\\\\\](https://pypi.org/project/julep/):\\\\n\\\\n  <h4\\\\\\\\>Node.js</h4\\\\\\\\>\\\\n\\\\n  \\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\n  npm install @julep/sdk\\\\n\\\\n  # or\\\\n\\\\n  bun add @julep/sdk\\\\n  \\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n  <h4\\\\\\\\>Python</h4\\\\\\\\>\\\\n\\\\n  \\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\n  pip install julep\\\\n  \\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n  \\\\\\\\> \\\\\\\\[!NOTE\\\\\\\\]\\\\n  \\\\\\\\> 🔑 Get your API key \\\\\\\\[here\\\\\\\\](https://dashboard.julep.ai).\\\\n  \\\\\\\\>\\\\n  \\\\\\\\> Reach out on \\\\\\\\[Discord\\\\\\\\](https://discord.com/invite/JTSBGRZrzj) to get to know more about Julep.\\\\n</div\\\\\\\\>\\\\n\\\\n### 🛠️ Julep CLI\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\nJulep CLI is a command-line tool that allows you to interact with the Julep platform directly from your terminal. It provides a convenient way to manage your AI workflows, tasks, and agents without needing to write code.\\\\n</p\\\\\\\\>\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\npip install julep-cli\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\nFor more details, check out the \\\\\\\\*\\\\\\\\*\\\\\\\\[Julep CLI Documentation\\\\\\\\](https://docs.julep.ai/docs/julepcli/introduction)\\\\\\\\*\\\\\\\\*.\\\\n\\\\n\\\\\\\\> \\\\\\\\[!NOTE\\\\\\\\]\\\\n\\\\\\\\> The CLI is currently in beta and available for Python only. Node.js support coming soon!\\\\n\\\\n---\\\\n\\\\n## 🚀 Quick Start\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\n\\\\nImagine a Research AI agent that can do the following:\\\\n\\\\n1. \\\\\\\\*\\\\\\\\*Take a topic\\\\\\\\*\\\\\\\\*,\\\\n2. \\\\\\\\*\\\\\\\\*Come up with 30 search queries\\\\\\\\*\\\\\\\\* for that topic,\\\\n3. Perform those web \\\\\\\\*\\\\\\\\*searches in parallel\\\\\\\\*\\\\\\\\*,\\\\n4. \\\\\\\\*\\\\\\\\*Summarize\\\\\\\\*\\\\\\\\* the results,\\\\n5. Send the \\\\\\\\*\\\\\\\\*summary to Discord\\\\\\\\*\\\\\\\\*.\\\\n   \\\\n</p\\\\\\\\>\\\\n\\\\n\\\\\\\\> \\\\\\\\[!NOTE\\\\\\\\]\\\\n\\\\\\\\> In Julep, this would be a single task under <b\\\\\\\\>80 lines of code</b\\\\\\\\> and run <b\\\\\\\\>fully managed</b\\\\\\\\> all on its own. All of the steps are executed on Julep\\\\'s own servers and you don\\\\'t need to lift a finger.\\\\n\\\\nHere\\\\'s a complete example of a task definition:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`yaml\\\\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create\\\\\\\\_task\\\\\\\\_request.json\\\\nname: Research Agent\\\\ndescription: A research assistant that can search the web and send the summary to Discord\\\\n########################################################\\\\n####################### INPUT ##########################\\\\n########################################################\\\\n\\\\n# Define the input schema for the task\\\\ninput\\\\\\\\_schema:\\\\n  type: object\\\\n  properties:\\\\n    topic:\\\\n      type: string\\\\n      description: The main topic to research\\\\n    num\\\\\\\\_questions:\\\\n      type: integer\\\\n      description: The number of search queries to generate\\\\n\\\\n########################################################\\\\n####################### TOOLS ##########################\\\\n########################################################\\\\n\\\\n# Define the tools that the agent can use\\\\ntools:\\\\n  - name: web\\\\\\\\_search\\\\n    type: integration\\\\n    integration:\\\\n      provider: brave\\\\n      setup:\\\\n        api\\\\\\\\_key: \\\"<your-brave-api-key\\\\\\\\>\\\"\\\\n\\\\n  - name: discord\\\\\\\\_webhook\\\\n    type: api\\\\\\\\_call\\\\n    api\\\\\\\\_call:\\\\n      url: https://discord.com/api/webhooks/<your-webhook-id\\\\\\\\>/<your-webhook-token\\\\\\\\>\\\\n      method: POST\\\\n      headers:\\\\n        Content-Type: application/json\\\\n\\\\n########################################################\\\\n####################### MAIN WORKFLOW #################\\\\n########################################################\\\\n\\\\n# Special variables:\\\\n# - steps\\\\\\\\[index\\\\\\\\].input: for accessing the input to the step at that index\\\\n# - steps\\\\\\\\[index\\\\\\\\].output: for accessing the output of the step at that index\\\\n# - \\\\\\\\_: for accessing the output of the previous step\\\\n\\\\n# Define the main workflow\\\\nmain:\\\\n# Step 0: Generate search queries\\\\n- prompt:\\\\n    - role: system\\\\n      content: \\\\\\\\>\\\\\\\\-\\\\n        $ f\\\"\\\"\\\"\\\\n        You are a research assistant.\\\\n        Generate {{steps\\\\\\\\[0\\\\\\\\].input.num\\\\\\\\_questions|default(30, true)}} diverse search queries related to the topic:\\\\n        {steps\\\\\\\\[0\\\\\\\\].input.topic}\\\\n\\\\n        Write one query per line.\\\\n        \\\"\\\"\\\"\\\\n  unwrap: true\\\\n\\\\n# Step 1: Evaluate the search queries using a simple python expression\\\\n- evaluate:\\\\n    search\\\\\\\\_queries: $ \\\\\\\\_.split(NEWLINE)\\\\n\\\\n# Step 2: Run the web search in parallel for each query\\\\n- over: $ \\\\\\\\_.search\\\\\\\\_queries\\\\n  map:\\\\n    tool: web\\\\\\\\_search\\\\n    arguments:\\\\n      query: $ \\\\\\\\_\\\\n  parallelism: 5\\\\n\\\\n# Step 3: Collect the results from the web search\\\\n- evaluate:\\\\n    search\\\\\\\\_results: $ \\\\\\\\_\\\\n\\\\n# Step 4: Summarize the results\\\\n- prompt:\\\\n    - role: system\\\\n      content: \\\\\\\\>\\\\n        $ f\\\"\\\"\\\"\\\\n        You are a research summarizer. Create a comprehensive summary of the following research results on the topic {steps\\\\\\\\[0\\\\\\\\].input.topic}.\\\\n        The summary should be well-structured, informative, and highlight key findings and insights. Keep the summary concise and to the point.\\\\n        The length of the summary should be less than 150 words.\\\\n        Here are the search results:\\\\n        {\\\\\\\\_.search\\\\\\\\_results}\\\\n        \\\"\\\"\\\"\\\\n  unwrap: true\\\\n  settings:\\\\n    model: gpt-4o-mini\\\\n\\\\n# Step 5: Send the summary to Discord\\\\n- evaluate:\\\\n    discord\\\\\\\\_message: |-\\\\n      $ f\\\\'\\\\'\\\\'\\\\n      \\\\\\\\*\\\\\\\\*Research Summary for {steps\\\\\\\\[0\\\\\\\\].input.topic}\\\\\\\\*\\\\\\\\*\\\\n      {\\\\\\\\_}\\\\n      \\\\'\\\\'\\\\'\\\\n\\\\n# Step 6: Send the summary to Discord\\\\n- tool: discord\\\\\\\\_webhook\\\\n  arguments:\\\\n    json\\\\\\\\_: \\\\n      content: $ \\\\\\\\_.discord\\\\\\\\_message\\\\\\\\[:2000\\\\\\\\] # Discord has a 2000 character limit\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\nHere you can execute the above workflow using the Julep SDK:\\\\n\\\\n<details\\\\\\\\>\\\\n<summary\\\\\\\\><b\\\\\\\\>Python</b\\\\\\\\> <i\\\\\\\\>(Click to expand)</i\\\\\\\\></summary\\\\\\\\>\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`python\\\\nfrom julep import Client\\\\nimport yaml\\\\nimport time\\\\n\\\\n# Initialize the client\\\\nclient = Client(api\\\\\\\\_key=JULEP\\\\\\\\_API\\\\\\\\_KEY)\\\\n\\\\n# Create the agent\\\\nagent = client.agents.create(\\\\n  name=\\\"Julep Browser Use Agent\\\",\\\\n  description=\\\"A Julep agent that can use the computer tool to interact with the browser.\\\",\\\\n)\\\\n\\\\n# Load the task definition\\\\nwith open(\\\\'./research\\\\\\\\_agent.yaml\\\\', \\\\'r\\\\') as file:\\\\n  task\\\\\\\\_definition = yaml.safe\\\\\\\\_load(file)\\\\n\\\\n# Create the task\\\\ntask = client.tasks.create(\\\\n  agent\\\\\\\\_id=agent.id,\\\\n  \\\\\\\\*\\\\\\\\*task\\\\\\\\_definition\\\\n)\\\\n\\\\n# Create the execution\\\\nexecution = client.executions.create(\\\\n    task\\\\\\\\_id=task.id,\\\\n    input={\\\\n        \\\"topic\\\": \\\"artificial intelligence\\\",\\\\n        \\\"num\\\\\\\\_questions\\\": 30\\\\n    }\\\\n)\\\\n\\\\n# Wait for the execution to complete\\\\nwhile (result := client.executions.get(execution.id)).status not in \\\\\\\\[\\\\'succeeded\\\\', \\\\'failed\\\\'\\\\\\\\]:\\\\n    print(result.status)\\\\n    time.sleep(1)\\\\n\\\\n# Print the result\\\\nif result.status == \\\"succeeded\\\":\\\\n    print(result.output)\\\\nelse:\\\\n    print(f\\\"Error: {result.error}\\\")\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n</details\\\\\\\\>\\\\n\\\\n</br\\\\\\\\>\\\\n<details\\\\\\\\>\\\\n<summary\\\\\\\\><b\\\\\\\\>Node.js</b\\\\\\\\> <i\\\\\\\\>(Click to expand)</i\\\\\\\\></summary\\\\\\\\>\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`js\\\\nimport { Julep } from \\\\'@julep/sdk\\\\';\\\\nimport yaml from \\\\'yaml\\\\';\\\\nimport fs from \\\\'fs\\\\';\\\\n\\\\n// Initialize the client\\\\nconst client = new Julep({\\\\n  apiKey: \\\\'your\\\\\\\\_julep\\\\\\\\_api\\\\\\\\_key\\\\'\\\\n});\\\\n\\\\n// Create the agent\\\\nconst agent = await client.agents.create({\\\\n  name: \\\"Julep Browser Use Agent\\\",\\\\n  description: \\\"A Julep agent that can use the computer tool to interact with the browser.\\\",\\\\n});\\\\n\\\\n// Parse the task definition\\\\nconst taskDefinition = yaml.parse(fs.readFileSync(\\\\'./research\\\\\\\\_agent.yaml\\\\', \\\\'utf8\\\\'));\\\\n\\\\n// Create the task\\\\nconst task = await client.tasks.create(\\\\n  agent.id,\\\\n  taskDefinition\\\\n);\\\\n\\\\n// Create the execution\\\\nconst execution = await client.executions.create(\\\\n  task.id,\\\\n  {\\\\n    input: { \\\\n      \\\"topic\\\": \\\"artificial intelligence\\\",\\\\n      \\\"num\\\\\\\\_questions\\\": 30\\\\n    }\\\\n  }\\\\n);\\\\n\\\\n// Wait for the execution to complete\\\\nlet result;\\\\nwhile (true) {\\\\n  result = await client.executions.get(execution.id);\\\\n  if (result.status === \\\\'succeeded\\\\' || result.status === \\\\'failed\\\\') break;\\\\n  console.log(result.status);\\\\n  await new Promise(resolve =\\\\\\\\> setTimeout(resolve, 1000));\\\\n}\\\\n\\\\n// Print the result\\\\nif (result.status === \\\\'succeeded\\\\') {\\\\n  console.log(result.output);\\\\n} else {\\\\n  console.error(\\\\\\\\`Error: ${result.error}\\\\\\\\`);\\\\n}\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n</details\\\\\\\\>\\\\n</br\\\\\\\\>\\\\n\\\\nIn this example, Julep will automatically manage parallel executions, retry failed steps, resend API requests, and keep the tasks running reliably until completion.\\\\n\\\\n\\\\\\\\> This runs in under 30 seconds and returns the following output:\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\n\\\\n<details\\\\\\\\>\\\\n<summary\\\\\\\\><b\\\\\\\\>Research Summary for AI</b\\\\\\\\> <i\\\\\\\\>(Click to expand)</i\\\\\\\\></summary\\\\\\\\>\\\\n\\\\n\\\\\\\\> \\\\\\\\*\\\\\\\\*Research Summary for AI\\\\\\\\*\\\\\\\\*\\\\n\\\\\\\\>\\\\n\\\\\\\\> ### Summary of Research Results on Artificial Intelligence (AI)\\\\n\\\\\\\\>\\\\n\\\\\\\\> #### Introduction\\\\n\\\\\\\\>\\\\n\\\\\\\\> The field of Artificial Intelligence (AI) has seen significant advancements in recent years, marked by the development of methods and technologies that enable machines to perceive their environment, learn from data, and make decisions. The primary focus of this summary is on the insights derived from various research findings related to AI.\\\\n\\\\\\\\>\\\\n\\\\\\\\> #### Key Findings\\\\n\\\\\\\\>\\\\n\\\\\\\\> 1. \\\\\\\\*\\\\\\\\*Definition and Scope of AI\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>\\\\n\\\\\\\\>    - AI is defined as a branch of computer science focused on creating systems that can perform tasks requiring human-like intelligence, including learning, reasoning, and problem-solving (Wikipedia).\\\\n\\\\\\\\>    - It encompasses various subfields, including machine learning, natural language processing, robotics, and computer vision.\\\\n\\\\\\\\>\\\\n\\\\\\\\> 2. \\\\\\\\*\\\\\\\\*Impact and Applications\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>\\\\n\\\\\\\\>    - AI technologies are being integrated into numerous sectors, improving efficiency and productivity. Applications range from autonomous vehicles and healthcare diagnostics to customer service automation and financial forecasting (OpenAI).\\\\n\\\\\\\\>    - Google\\\\'s commitment to making AI beneficial for everyone highlights its potential to significantly improve daily life by enhancing user experiences across various platforms (Google AI).\\\\n\\\\\\\\>\\\\n\\\\\\\\> 3. \\\\\\\\*\\\\\\\\*Ethical Considerations\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>\\\\n\\\\\\\\>    - There is an ongoing discourse regarding the ethical implications of AI, including concerns about privacy, bias, and accountability in decision-making processes. The need for a framework that ensures the safe and responsible use of AI technologies is emphasized (OpenAI).\\\\n\\\\\\\\>\\\\n\\\\\\\\> 4. \\\\\\\\*\\\\\\\\*Learning Mechanisms\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>\\\\n\\\\\\\\>    - AI systems utilize different learning mechanisms, such as supervised learning, unsupervised learning, and reinforcement learning. These methods allow AI to improve performance over time by learning from past experiences and data (Wikipedia).\\\\n\\\\\\\\>    - The distinction between supervised and unsupervised learning is critical; supervised learning relies on labeled data, while unsupervised learning identifies patterns without predefined labels (Unsupervised).\\\\n\\\\\\\\>\\\\n\\\\\\\\> 5. \\\\\\\\*\\\\\\\\*Future Directions\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>    - Future AI developments are expected to focus on enhancing the interpretability and transparency of AI systems, ensuring that they can provide justifiable decisions and actions (OpenAI).\\\\n\\\\\\\\>    - There is also a push towards making AI systems more accessible and user-friendly, encouraging broader adoption across different demographics and industries (Google AI).\\\\n\\\\\\\\>\\\\n\\\\\\\\> #### Conclusion\\\\n\\\\\\\\>\\\\n\\\\\\\\> AI represents a transformative force across multiple domains, promising to reshape industries and improve quality of life. However, as its capabilities expand, it is crucial to address the ethical and societal implications that arise. Continued research and collaboration among technologists, ethicists, and policymakers will be essential in navigating the future landscape of AI.\\\\n\\\\n</details\\\\\\\\>\\\\n\\\\n### What\\\\'s Next?\\\\n\\\\n- 📚 Explore more examples in our \\\\\\\\[Cookbook\\\\\\\\](https://github.com/julep-ai/julep/tree/dev/cookbooks)\\\\n- 🔧 Learn about \\\\\\\\[Tool Integration\\\\\\\\](https://docs.julep.ai/docs/tools/overview)\\\\n- 🧠 Understand \\\\\\\\[Agent Memory\\\\\\\\](https://docs.julep.ai/docs/agents/memory)\\\\n- 🔄 Dive into \\\\\\\\[Complex Workflows\\\\\\\\](https://docs.julep.ai/docs/tasks/workflows)\\\\n\\\\n\\\\\\\\> \\\\\\\\[!TIP\\\\\\\\]\\\\n\\\\\\\\> 💡 Checkout more tutorials in the \\\\\\\\[Tutorials\\\\\\\\](https://docs.julep.ai/docs/tutorials/) section of the documentation.\\\\n\\\\\\\\> \\\\n\\\\\\\\> 💡 If you are a beginner, we recommend starting with the \\\\\\\\[Quickstart Guide\\\\\\\\](https://docs.julep.ai/docs/introduction/quickstart).\\\\n\\\\\\\\> \\\\n\\\\\\\\> 💡 If you are looking for more ideas, check out the \\\\\\\\[Ideas\\\\\\\\](https://github.com/julep-ai/julep/blob/dev/cookbooks/IDEAS.md) section of the repository.\\\\n\\\\\\\\> \\\\n\\\\\\\\> 💡 If you more into cookbook style recipes, check out the \\\\\\\\[Cookbook\\\\\\\\](https://github.com/julep-ai/julep/tree/dev/cookbooks) section of the repository.\\\\n---\\\\n\\\\n## 🔍 Reference\\\\n\\\\n### 📚 SDK Reference\\\\n\\\\n- \\\\\\\\*\\\\\\\\*Node.js\\\\\\\\*\\\\\\\\* \\\\\\\\[SDK Reference\\\\\\\\](https://github.com/julep-ai/node-sdk/blob/main/api.md) | \\\\\\\\[NPM Package\\\\\\\\](https://www.npmjs.com/package/@julep/sdk)\\\\n- \\\\\\\\*\\\\\\\\*Python\\\\\\\\*\\\\\\\\* \\\\\\\\[SDK Reference\\\\\\\\](https://github.com/julep-ai/python-sdk/blob/main/api.md) | \\\\\\\\[PyPI Package\\\\\\\\](https://pypi.org/project/julep/)\\\\n\\\\n### 🛠️ API Reference\\\\n\\\\nExplore our API documentation to learn more about agents, tasks, tools, and the Julep CLI here: \\\\\\\\[API Reference\\\\\\\\](https://docs.julep.ai/api-reference/)\\\\n\\\\n---\\\\n\\\\n## 💻 Local Setup\\\\n\\\\n### 1. Clone the Repository\\\\n\\\\nClone the repository from your preferred source:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ngit clone <repository\\\\\\\\_url\\\\\\\\>\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n### 2. Navigate to the Root Directory\\\\n\\\\nChange to the root directory of the project:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ncd <repository\\\\\\\\_root\\\\\\\\>\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n### 3. Set Up Environment Variables\\\\n\\\\n- Create a \\\\\\\\`.env\\\\\\\\` file in the root directory.\\\\n- Refer to the \\\\\\\\`.env.example\\\\\\\\` file for a list of required variables.\\\\n- Ensure that all necessary variables are set in the \\\\\\\\`.env\\\\\\\\` file.\\\\n\\\\n### 4. Create a Docker Volume for Backup\\\\n\\\\nCreate a Docker volume named \\\\\\\\`grafana\\\\\\\\_data\\\\\\\\`, \\\\\\\\`memory\\\\\\\\_store\\\\\\\\_data\\\\\\\\`, \\\\\\\\`temporal-db-data\\\\\\\\`, \\\\\\\\`prometheus\\\\\\\\_data\\\\\\\\`, \\\\\\\\`seadweedfs\\\\\\\\_data\\\\\\\\`:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ndocker volume create grafana\\\\\\\\_data\\\\ndocker volume create memory\\\\\\\\_store\\\\\\\\_data\\\\ndocker volume create temporal-db-data\\\\ndocker volume create prometheus\\\\\\\\_data\\\\ndocker volume create seadweedfs\\\\\\\\_data\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n### 5. Run the Project using Docker Compose\\\\n\\\\nYou can run the project in two different modes: \\\\\\\\*\\\\\\\\*Single Tenant\\\\\\\\*\\\\\\\\* or \\\\\\\\*\\\\\\\\*Multi-Tenant\\\\\\\\*\\\\\\\\*. Choose one of the following commands based on your requirement:\\\\n\\\\n1. Single-Tenant Mode\\\\n\\\\nRun the project in single-tenant mode:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ndocker compose --env-file .env --profile temporal-ui --profile single-tenant --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --build --force-recreate --watch\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n\\\\\\\\> \\\\\\\\*\\\\\\\\*Note:\\\\\\\\*\\\\\\\\* In single-tenant mode, you can interact with the SDK directly without the need for the API KEY.\\\\n\\\\n2. Multi-Tenant Mode\\\\n\\\\nRun the project in multi-tenant mode:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ndocker compose --env-file .env --profile temporal-ui --profile multi-tenant --profile embedding-cpu --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --force-recreate --build --watch\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n\\\\\\\\> \\\\\\\\*\\\\\\\\*Note:\\\\\\\\*\\\\\\\\* In multi-tenant mode, you need to generate a JWT token locally that act as an API KEY to interact with the SDK.\\\\n\\\\nGenerate a JWT Token (Only for Multi-Tenant Mode)\\\\n\\\\nTo generate a JWT token, \\\\\\\\`jwt-cli\\\\\\\\` is required. Kindly install the same before proceeding with the next steps.\\\\n\\\\nUse the following command and replace \\\\\\\\`JWT\\\\\\\\_SHARED\\\\\\\\_KEY\\\\\\\\` with the corresponding key from your \\\\\\\\`.env\\\\\\\\` file to generate a JWT token:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\njwt encode --secret JWT\\\\\\\\_SHARED\\\\\\\\_KEY --alg HS512 --exp=$(date -d \\\\'+10 days\\\\' +%s) --sub \\\\'00000000-0000-0000-0000-000000000000\\\\' \\\\'{}\\\\'\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\nThis command generates a JWT token that will be valid for 10 days.\\\\n\\\\n### 6. Interaction\\\\n\\\\n- \\\\\\\\*\\\\\\\\*Temporal UI\\\\\\\\*\\\\\\\\*: You can access the Temporal UI through the specified port in your \\\\\\\\`.env\\\\\\\\` file.\\\\n- \\\\\\\\*\\\\\\\\*Julep SDK\\\\\\\\*\\\\\\\\*: The Julep SDK is a Python/Node.js library that allows you to interact with the Julep API.\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`python\\\\nfrom julep import Client\\\\n\\\\nclient = Client(api\\\\\\\\_key=\\\"your\\\\\\\\_jwt\\\\\\\\_token\\\")\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n\\\\\\\\*\\\\\\\\*Note:\\\\\\\\*\\\\\\\\* SDK in Multi-Tenant mode, you need to generate a JWT token locally that acts as an API KEY to interact with the SDK. Furthermore, while initializing the client you will need to set the environment to \\\\\\\\`local\\\\\\\\_multi\\\\\\\\_tenant\\\\\\\\` and the api key to the JWT token you generated in the previous step. Whereas in Single-Tenant mode you can interact with the SDK directly without the need for the API KEY and set the environment to \\\\\\\\`local\\\\\\\\`.\\\\n\\\\n### 7. Troubleshooting\\\\n\\\\n- Ensure that all required Docker images are available.\\\\n- Check for missing environment variables in the \\\\\\\\`.env\\\\\\\\` file.\\\\n- Use the \\\\\\\\`docker compose logs\\\\\\\\` command to view detailed logs for debugging.\\\\n\\\\n---\\\\n\\\\n## 👥 Contributors\\\\n\\\\n<h3\\\\\\\\>Join Our Community! 🌟</h3\\\\\\\\>\\\\n\\\\nWe\\\\'re excited to welcome new contributors to the Julep project! We\\\\'ve created several \\\"good first issues\\\" to help you get started.\\\\n\\\\n<h4\\\\\\\\>How to Contribute:</h4\\\\\\\\>\\\\n\\\\n1. 📖 Check out our \\\\\\\\[CONTRIBUTING.md\\\\\\\\](https://github.com/julep-ai/julep/blob/dev/CONTRIBUTING.md) file for guidelines\\\\n2. 🔍 Browse our \\\\\\\\[good first issues\\\\\\\\](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)\\\\n3. 💬 Join our \\\\\\\\[Discord\\\\\\\\](https://discord.com/invite/JTSBGRZrzj) for help and discussions\\\\n\\\\n<br/\\\\\\\\>\\\\n\\\\nYour contributions, big or small, are valuable to us. Let\\\\'s build something amazing together! 🚀\\\\n\\\\n<h4\\\\\\\\>Our Amazing Contributors:</h4\\\\\\\\>\\\\n\\\\n<a href=\\\"https://github.com/julep-ai/julep/graphs/contributors\\\"\\\\\\\\>\\\\n  <img src=\\\"https://contrib.rocks/image?repo=julep-ai/julep\\\" /\\\\\\\\>\\\\n</a\\\\\\\\>\\\\n\\\\n---\\\\n\\\\n## 📄 License\\\\n\\\\nJulep is licensed under the \\\\\\\\[Apache License 2.0\\\\\\\\](LICENSE). \\\\n\\\\nSee the LICENSE file for more details.\\\\n\\\\n---'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'json': {'code': 200, 'data': {'url': 'https://github.com/julep-ai/julep/blob/dev/README.md?raw=true', 'links': {}, 'title': '', 'usage': {'tokens': 6955}, 'images': {}, 'content': '<sup\\\\\\\\><div align=\\\"center\\\"\\\\\\\\>\\\\\\\\[English\\\\\\\\](README.md) | \\\\\\\\[中文翻译\\\\\\\\](./.github/README-CN.md) | \\\\\\\\[日本語翻訳\\\\\\\\](./.github/README-JA.md) | \\\\\\\\[French\\\\\\\\](./.github/README-FR.md)</div\\\\\\\\></sup\\\\\\\\>\\\\n\\\\n<div align=\\\"center\\\" id=\\\"top\\\"\\\\\\\\>\\\\n<img src=\\\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\\\" alt=\\\"julep\\\" height=300 /\\\\\\\\>\\\\n\\\\n<br\\\\\\\\>\\\\n  <p\\\\\\\\>\\\\n    <a href=\\\"https://dashboard.julep.ai\\\"\\\\\\\\>\\\\n      <img src=\\\"https://img.shields.io/badge/Get\\\\\\\\_API\\\\\\\\_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\\\" alt=\\\"Get API Key\\\" height=\\\"28\\\"\\\\\\\\>\\\\n    </a\\\\\\\\>\\\\n    <span\\\\\\\\>&nbsp;</span\\\\\\\\>\\\\n    <a href=\\\"https://docs.julep.ai\\\"\\\\\\\\>\\\\n      <img src=\\\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\\\" alt=\\\"Documentation\\\" height=\\\"28\\\"\\\\\\\\>\\\\n    </a\\\\\\\\>\\\\n  </p\\\\\\\\>\\\\n  <p\\\\\\\\>\\\\n   <a href=\\\"https://www.npmjs.com/package/@julep/sdk\\\"\\\\\\\\><img src=\\\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\\\" alt=\\\"NPM Version\\\" height=\\\"28\\\"\\\\\\\\></a\\\\\\\\>\\\\n    <span\\\\\\\\>&nbsp;</span\\\\\\\\>\\\\n    <a href=\\\"https://pypi.org/project/julep\\\"\\\\\\\\><img src=\\\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\\\" alt=\\\"PyPI - Version\\\" height=\\\"28\\\"\\\\\\\\></a\\\\\\\\>\\\\n    <span\\\\\\\\>&nbsp;</span\\\\\\\\>\\\\n    <a href=\\\"https://hub.docker.com/u/julepai\\\"\\\\\\\\><img src=\\\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\\\" alt=\\\"Docker Image Version\\\" height=\\\"28\\\"\\\\\\\\></a\\\\\\\\>\\\\n    <span\\\\\\\\>&nbsp;</span\\\\\\\\>\\\\n    <a href=\\\"https://choosealicense.com/licenses/apache/\\\"\\\\\\\\><img src=\\\"https://img.shields.io/github/license/julep-ai/julep\\\" alt=\\\"GitHub License\\\" height=\\\"28\\\"\\\\\\\\></a\\\\\\\\>\\\\n  </p\\\\\\\\>\\\\n  \\\\n  <h3\\\\\\\\>\\\\n    <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\"\\\\\\\\>Discord</a\\\\\\\\>\\\\n    ·\\\\n    <a href=\\\"https://x.com/julep\\\\\\\\_ai\\\" rel=\\\"dofollow\\\"\\\\\\\\>𝕏</a\\\\\\\\>\\\\n    ·\\\\n    <a href=\\\"https://www.linkedin.com/company/julep-ai\\\" rel=\\\"dofollow\\\"\\\\\\\\>LinkedIn</a\\\\\\\\>\\\\n  </h3\\\\\\\\>\\\\n</div\\\\\\\\>\\\\n\\\\n<div align=\\\"center\\\"\\\\\\\\>\\\\n  <h3\\\\\\\\><i\\\\\\\\>Serverless AI Workflows for Data & ML Teams</i\\\\\\\\></h3\\\\\\\\>\\\\n</div\\\\\\\\>\\\\n\\\\nJulep is a serverless platform that helps data and ML teams build sophisticated AI workflows. It provides a robust foundation for orchestrating complex AI operations, managing state across interactions, and integrating with your existing data infrastructure and tools.\\\\n\\\\nWhether you\\\\'re building data pipelines or creating AI workflows, Julep makes it easy to compose and scale LLM-powered workflows without managing infrastructure. Imagine you want to build an AI agent that can do more than just answer simple questions—it needs to handle complex tasks, remember past interactions, and maybe even use other tools or APIs. That\\\\'s where Julep comes in. Our platform handles the heavy lifting so you can focus on building intelligent solutions for your business.\\\\n\\\\n💡 To learn more about Julep, check out the \\\\\\\\*\\\\\\\\*\\\\\\\\[Documentation\\\\\\\\](https://docs.julep.ai/docs/introduction/overview)\\\\\\\\*\\\\\\\\*.\\\\n\\\\n<!-- START doctoc generated TOC please keep comment here to allow auto update --\\\\\\\\>\\\\n<!-- DON\\\\'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --\\\\\\\\>\\\\n<h3\\\\\\\\>📖 Table of Contents</h3\\\\\\\\>\\\\n\\\\n- \\\\\\\\[✨ Key Features\\\\\\\\](#-key-features)\\\\n- \\\\\\\\[🧠 Mental Model\\\\\\\\](#-mental-model)\\\\n- \\\\\\\\[📦 Installation\\\\\\\\](#-installation)\\\\n  - \\\\\\\\[🛠️ Julep SDKs\\\\\\\\](#-julep-sdks)\\\\n  - \\\\\\\\[🛠️ Julep CLI\\\\\\\\](#-julep-cli)\\\\n- \\\\\\\\[🚀 Quick Start\\\\\\\\](#-quick-start)\\\\n  - \\\\\\\\[What\\\\'s Next?\\\\\\\\](#whats-next)\\\\n- \\\\\\\\[🔍 Reference\\\\\\\\](#-reference)\\\\n  - \\\\\\\\[📚 SDK Reference\\\\\\\\](#-sdk-reference)\\\\n  - \\\\\\\\[🛠️ API Reference\\\\\\\\](#-api-reference)\\\\n- \\\\\\\\[💻 Local Setup\\\\\\\\](#-local-setup)\\\\n  - \\\\\\\\[1. Clone the Repository\\\\\\\\](#1-clone-the-repository)\\\\n  - \\\\\\\\[2. Navigate to the Root Directory\\\\\\\\](#2-navigate-to-the-root-directory)\\\\n  - \\\\\\\\[3. Set Up Environment Variables\\\\\\\\](#3-set-up-environment-variables)\\\\n  - \\\\\\\\[4. Create a Docker Volume for Backup\\\\\\\\](#4-create-a-docker-volume-for-backup)\\\\n  - \\\\\\\\[5. Run the Project using Docker Compose\\\\\\\\](#5-run-the-project-using-docker-compose)\\\\n  - \\\\\\\\[6. Interaction\\\\\\\\](#6-interaction)\\\\n  - \\\\\\\\[7. Troubleshooting\\\\\\\\](#7-troubleshooting)\\\\n- \\\\\\\\[👥 Contributors\\\\\\\\](#-contributors)\\\\n  - \\\\\\\\[Join Our Community! 🌟\\\\\\\\](#join-our-community-)\\\\n- \\\\\\\\[📄 License\\\\\\\\](#-license)\\\\n\\\\n<!-- END doctoc generated TOC please keep comment here to allow auto update --\\\\\\\\>\\\\n\\\\n---\\\\n\\\\n## ✨ Key Features\\\\n\\\\n<div align=\\\"left\\\"\\\\\\\\>\\\\n  <table\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🧠</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Smart Memory</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Agents that remember context and learn from past interactions</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🔄</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Workflow Engine</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Build complex, multi-step processes with branching and loops</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>⚡</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Parallel Processing</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Run multiple operations simultaneously for maximum efficiency</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🛠️</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Tool Integration</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Seamlessly connect with external APIs and services</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🔌</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Easy Setup</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Get started quickly with Python and Node.js SDKs</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>🔒</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Reliable & Secure</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Built-in error handling, retries, and security features</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n    <tr\\\\\\\\>\\\\n      <td\\\\\\\\>📊</td\\\\\\\\>\\\\n      <td\\\\\\\\><b\\\\\\\\>Monitoring</b\\\\\\\\></td\\\\\\\\>\\\\n      <td\\\\\\\\>Track task progress and performance in real-time</td\\\\\\\\>\\\\n    </tr\\\\\\\\>\\\\n  </table\\\\\\\\>\\\\n</div\\\\\\\\>\\\\n\\\\n💡 To learn more about Julep, check out the \\\\\\\\*\\\\\\\\*\\\\\\\\[Documentation\\\\\\\\](https://docs.julep.ai/docs/introduction/overview)\\\\\\\\*\\\\\\\\*.\\\\n\\\\n---\\\\n\\\\n## 🧠 Mental Model\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\nJulep is made up of the following components:\\\\n\\\\n- \\\\\\\\*\\\\\\\\*Julep Platform\\\\\\\\*\\\\\\\\*: The Julep platform is a cloud service that runs your workflows. It includes a language for describing workflows, a server for running those workflows, and an SDK for interacting with the platform.\\\\n- \\\\\\\\*\\\\\\\\*Julep SDKs\\\\\\\\*\\\\\\\\*: Julep SDKs are a set of libraries for building workflows. There are SDKs for Python and JavaScript, with more on the way.\\\\n- \\\\\\\\*\\\\\\\\*Julep CLI\\\\\\\\*\\\\\\\\*: The Julep CLI is a command-line tool that allows you to interact with the Julep platform directly from your terminal.\\\\n- \\\\\\\\*\\\\\\\\*Julep API\\\\\\\\*\\\\\\\\*: The Julep API is a RESTful API that you can use to interact with the Julep platform.\\\\n</p\\\\\\\\>\\\\n\\\\n<div align=\\\"center\\\"\\\\\\\\>\\\\n  <img src=\\\"https://github.com/user-attachments/assets/38420b5d-9342-4c8d-bae9-b47c28ae45af\\\" height=\\\"360\\\"/\\\\\\\\>\\\\n</div\\\\\\\\>\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\nThink of Julep as a platform that combines both client-side and server-side components to help you build advanced AI agents. Here\\\\'s how to visualize it:\\\\n\\\\n1. \\\\\\\\*\\\\\\\\*Your Application Code:\\\\\\\\*\\\\\\\\*\\\\n\\\\n   - You can use the Julep SDK in your application to define agents, tasks, and workflows.\\\\n   - The SDK provides functions and classes that make it easy to set up and manage these components.\\\\n   - You can use the Julep CLI to interact with the Julep platform directly from your terminal.\\\\n\\\\n2. \\\\\\\\*\\\\\\\\*Julep Backend Service:\\\\\\\\*\\\\\\\\*\\\\n\\\\n   - The SDK communicates with the Julep backend over the network.\\\\n   - The CLI communicates with the Julep backend via the SDK.\\\\n   - The backend handles execution of tasks, maintains session state, stores documents, and orchestrates workflows.\\\\n\\\\n3. \\\\\\\\*\\\\\\\\*Integration with Tools and APIs:\\\\\\\\*\\\\\\\\*\\\\n   - Within your workflows, you can integrate external tools and services.\\\\n   - The backend facilitates these integrations, so your agents can, for example, perform web searches, access databases, or call third-party APIs.\\\\n</p\\\\\\\\>\\\\n\\\\n---\\\\n\\\\n## 📦 Installation\\\\n\\\\n<div align=\\\"left\\\"\\\\\\\\>\\\\n  <h3\\\\\\\\>🛠️ Julep SDKs</h3\\\\\\\\>\\\\n\\\\n  To get started with Julep, install it using \\\\\\\\[npm\\\\\\\\](https://www.npmjs.com/package/@julep/sdk) or \\\\\\\\[pip\\\\\\\\](https://pypi.org/project/julep/):\\\\n\\\\n  <h4\\\\\\\\>Node.js</h4\\\\\\\\>\\\\n\\\\n  \\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\n  npm install @julep/sdk\\\\n\\\\n  # or\\\\n\\\\n  bun add @julep/sdk\\\\n  \\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n  <h4\\\\\\\\>Python</h4\\\\\\\\>\\\\n\\\\n  \\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\n  pip install julep\\\\n  \\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n  \\\\\\\\> \\\\\\\\[!NOTE\\\\\\\\]\\\\n  \\\\\\\\> 🔑 Get your API key \\\\\\\\[here\\\\\\\\](https://dashboard.julep.ai).\\\\n  \\\\\\\\>\\\\n  \\\\\\\\> Reach out on \\\\\\\\[Discord\\\\\\\\](https://discord.com/invite/JTSBGRZrzj) to get to know more about Julep.\\\\n</div\\\\\\\\>\\\\n\\\\n### 🛠️ Julep CLI\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\nJulep CLI is a command-line tool that allows you to interact with the Julep platform directly from your terminal. It provides a convenient way to manage your AI workflows, tasks, and agents without needing to write code.\\\\n</p\\\\\\\\>\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\npip install julep-cli\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\nFor more details, check out the \\\\\\\\*\\\\\\\\*\\\\\\\\[Julep CLI Documentation\\\\\\\\](https://docs.julep.ai/docs/julepcli/introduction)\\\\\\\\*\\\\\\\\*.\\\\n\\\\n\\\\\\\\> \\\\\\\\[!NOTE\\\\\\\\]\\\\n\\\\\\\\> The CLI is currently in beta and available for Python only. Node.js support coming soon!\\\\n\\\\n---\\\\n\\\\n## 🚀 Quick Start\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\n\\\\nImagine a Research AI agent that can do the following:\\\\n\\\\n1. \\\\\\\\*\\\\\\\\*Take a topic\\\\\\\\*\\\\\\\\*,\\\\n2. \\\\\\\\*\\\\\\\\*Come up with 30 search queries\\\\\\\\*\\\\\\\\* for that topic,\\\\n3. Perform those web \\\\\\\\*\\\\\\\\*searches in parallel\\\\\\\\*\\\\\\\\*,\\\\n4. \\\\\\\\*\\\\\\\\*Summarize\\\\\\\\*\\\\\\\\* the results,\\\\n5. Send the \\\\\\\\*\\\\\\\\*summary to Discord\\\\\\\\*\\\\\\\\*.\\\\n   \\\\n</p\\\\\\\\>\\\\n\\\\n\\\\\\\\> \\\\\\\\[!NOTE\\\\\\\\]\\\\n\\\\\\\\> In Julep, this would be a single task under <b\\\\\\\\>80 lines of code</b\\\\\\\\> and run <b\\\\\\\\>fully managed</b\\\\\\\\> all on its own. All of the steps are executed on Julep\\\\'s own servers and you don\\\\'t need to lift a finger.\\\\n\\\\nHere\\\\'s a complete example of a task definition:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`yaml\\\\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/schemas/create\\\\\\\\_task\\\\\\\\_request.json\\\\nname: Research Agent\\\\ndescription: A research assistant that can search the web and send the summary to Discord\\\\n########################################################\\\\n####################### INPUT ##########################\\\\n########################################################\\\\n\\\\n# Define the input schema for the task\\\\ninput\\\\\\\\_schema:\\\\n  type: object\\\\n  properties:\\\\n    topic:\\\\n      type: string\\\\n      description: The main topic to research\\\\n    num\\\\\\\\_questions:\\\\n      type: integer\\\\n      description: The number of search queries to generate\\\\n\\\\n########################################################\\\\n####################### TOOLS ##########################\\\\n########################################################\\\\n\\\\n# Define the tools that the agent can use\\\\ntools:\\\\n  - name: web\\\\\\\\_search\\\\n    type: integration\\\\n    integration:\\\\n      provider: brave\\\\n      setup:\\\\n        api\\\\\\\\_key: \\\"<your-brave-api-key\\\\\\\\>\\\"\\\\n\\\\n  - name: discord\\\\\\\\_webhook\\\\n    type: api\\\\\\\\_call\\\\n    api\\\\\\\\_call:\\\\n      url: https://discord.com/api/webhooks/<your-webhook-id\\\\\\\\>/<your-webhook-token\\\\\\\\>\\\\n      method: POST\\\\n      headers:\\\\n        Content-Type: application/json\\\\n\\\\n########################################################\\\\n####################### MAIN WORKFLOW #################\\\\n########################################################\\\\n\\\\n# Special variables:\\\\n# - steps\\\\\\\\[index\\\\\\\\].input: for accessing the input to the step at that index\\\\n# - steps\\\\\\\\[index\\\\\\\\].output: for accessing the output of the step at that index\\\\n# - \\\\\\\\_: for accessing the output of the previous step\\\\n\\\\n# Define the main workflow\\\\nmain:\\\\n# Step 0: Generate search queries\\\\n- prompt:\\\\n    - role: system\\\\n      content: \\\\\\\\>\\\\\\\\-\\\\n        $ f\\\"\\\"\\\"\\\\n        You are a research assistant.\\\\n        Generate {{steps\\\\\\\\[0\\\\\\\\].input.num\\\\\\\\_questions|default(30, true)}} diverse search queries related to the topic:\\\\n        {steps\\\\\\\\[0\\\\\\\\].input.topic}\\\\n\\\\n        Write one query per line.\\\\n        \\\"\\\"\\\"\\\\n  unwrap: true\\\\n\\\\n# Step 1: Evaluate the search queries using a simple python expression\\\\n- evaluate:\\\\n    search\\\\\\\\_queries: $ \\\\\\\\_.split(NEWLINE)\\\\n\\\\n# Step 2: Run the web search in parallel for each query\\\\n- over: $ \\\\\\\\_.search\\\\\\\\_queries\\\\n  map:\\\\n    tool: web\\\\\\\\_search\\\\n    arguments:\\\\n      query: $ \\\\\\\\_\\\\n  parallelism: 5\\\\n\\\\n# Step 3: Collect the results from the web search\\\\n- evaluate:\\\\n    search\\\\\\\\_results: $ \\\\\\\\_\\\\n\\\\n# Step 4: Summarize the results\\\\n- prompt:\\\\n    - role: system\\\\n      content: \\\\\\\\>\\\\n        $ f\\\"\\\"\\\"\\\\n        You are a research summarizer. Create a comprehensive summary of the following research results on the topic {steps\\\\\\\\[0\\\\\\\\].input.topic}.\\\\n        The summary should be well-structured, informative, and highlight key findings and insights. Keep the summary concise and to the point.\\\\n        The length of the summary should be less than 150 words.\\\\n        Here are the search results:\\\\n        {\\\\\\\\_.search\\\\\\\\_results}\\\\n        \\\"\\\"\\\"\\\\n  unwrap: true\\\\n  settings:\\\\n    model: gpt-4o-mini\\\\n\\\\n# Step 5: Send the summary to Discord\\\\n- evaluate:\\\\n    discord\\\\\\\\_message: |-\\\\n      $ f\\\\'\\\\'\\\\'\\\\n      \\\\\\\\*\\\\\\\\*Research Summary for {steps\\\\\\\\[0\\\\\\\\].input.topic}\\\\\\\\*\\\\\\\\*\\\\n      {\\\\\\\\_}\\\\n      \\\\'\\\\'\\\\'\\\\n\\\\n# Step 6: Send the summary to Discord\\\\n- tool: discord\\\\\\\\_webhook\\\\n  arguments:\\\\n    json\\\\\\\\_: \\\\n      content: $ \\\\\\\\_.discord\\\\\\\\_message\\\\\\\\[:2000\\\\\\\\] # Discord has a 2000 character limit\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\nHere you can execute the above workflow using the Julep SDK:\\\\n\\\\n<details\\\\\\\\>\\\\n<summary\\\\\\\\><b\\\\\\\\>Python</b\\\\\\\\> <i\\\\\\\\>(Click to expand)</i\\\\\\\\></summary\\\\\\\\>\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`python\\\\nfrom julep import Client\\\\nimport yaml\\\\nimport time\\\\n\\\\n# Initialize the client\\\\nclient = Client(api\\\\\\\\_key=JULEP\\\\\\\\_API\\\\\\\\_KEY)\\\\n\\\\n# Create the agent\\\\nagent = client.agents.create(\\\\n  name=\\\"Julep Browser Use Agent\\\",\\\\n  description=\\\"A Julep agent that can use the computer tool to interact with the browser.\\\",\\\\n)\\\\n\\\\n# Load the task definition\\\\nwith open(\\\\'./research\\\\\\\\_agent.yaml\\\\', \\\\'r\\\\') as file:\\\\n  task\\\\\\\\_definition = yaml.safe\\\\\\\\_load(file)\\\\n\\\\n# Create the task\\\\ntask = client.tasks.create(\\\\n  agent\\\\\\\\_id=agent.id,\\\\n  \\\\\\\\*\\\\\\\\*task\\\\\\\\_definition\\\\n)\\\\n\\\\n# Create the execution\\\\nexecution = client.executions.create(\\\\n    task\\\\\\\\_id=task.id,\\\\n    input={\\\\n        \\\"topic\\\": \\\"artificial intelligence\\\",\\\\n        \\\"num\\\\\\\\_questions\\\": 30\\\\n    }\\\\n)\\\\n\\\\n# Wait for the execution to complete\\\\nwhile (result := client.executions.get(execution.id)).status not in \\\\\\\\[\\\\'succeeded\\\\', \\\\'failed\\\\'\\\\\\\\]:\\\\n    print(result.status)\\\\n    time.sleep(1)\\\\n\\\\n# Print the result\\\\nif result.status == \\\"succeeded\\\":\\\\n    print(result.output)\\\\nelse:\\\\n    print(f\\\"Error: {result.error}\\\")\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n</details\\\\\\\\>\\\\n\\\\n</br\\\\\\\\>\\\\n<details\\\\\\\\>\\\\n<summary\\\\\\\\><b\\\\\\\\>Node.js</b\\\\\\\\> <i\\\\\\\\>(Click to expand)</i\\\\\\\\></summary\\\\\\\\>\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`js\\\\nimport { Julep } from \\\\'@julep/sdk\\\\';\\\\nimport yaml from \\\\'yaml\\\\';\\\\nimport fs from \\\\'fs\\\\';\\\\n\\\\n// Initialize the client\\\\nconst client = new Julep({\\\\n  apiKey: \\\\'your\\\\\\\\_julep\\\\\\\\_api\\\\\\\\_key\\\\'\\\\n});\\\\n\\\\n// Create the agent\\\\nconst agent = await client.agents.create({\\\\n  name: \\\"Julep Browser Use Agent\\\",\\\\n  description: \\\"A Julep agent that can use the computer tool to interact with the browser.\\\",\\\\n});\\\\n\\\\n// Parse the task definition\\\\nconst taskDefinition = yaml.parse(fs.readFileSync(\\\\'./research\\\\\\\\_agent.yaml\\\\', \\\\'utf8\\\\'));\\\\n\\\\n// Create the task\\\\nconst task = await client.tasks.create(\\\\n  agent.id,\\\\n  taskDefinition\\\\n);\\\\n\\\\n// Create the execution\\\\nconst execution = await client.executions.create(\\\\n  task.id,\\\\n  {\\\\n    input: { \\\\n      \\\"topic\\\": \\\"artificial intelligence\\\",\\\\n      \\\"num\\\\\\\\_questions\\\": 30\\\\n    }\\\\n  }\\\\n);\\\\n\\\\n// Wait for the execution to complete\\\\nlet result;\\\\nwhile (true) {\\\\n  result = await client.executions.get(execution.id);\\\\n  if (result.status === \\\\'succeeded\\\\' || result.status === \\\\'failed\\\\') break;\\\\n  console.log(result.status);\\\\n  await new Promise(resolve =\\\\\\\\> setTimeout(resolve, 1000));\\\\n}\\\\n\\\\n// Print the result\\\\nif (result.status === \\\\'succeeded\\\\') {\\\\n  console.log(result.output);\\\\n} else {\\\\n  console.error(\\\\\\\\`Error: ${result.error}\\\\\\\\`);\\\\n}\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n</details\\\\\\\\>\\\\n</br\\\\\\\\>\\\\n\\\\nIn this example, Julep will automatically manage parallel executions, retry failed steps, resend API requests, and keep the tasks running reliably until completion.\\\\n\\\\n\\\\\\\\> This runs in under 30 seconds and returns the following output:\\\\n\\\\n<p align=\\\"justify\\\"\\\\\\\\>\\\\n\\\\n<details\\\\\\\\>\\\\n<summary\\\\\\\\><b\\\\\\\\>Research Summary for AI</b\\\\\\\\> <i\\\\\\\\>(Click to expand)</i\\\\\\\\></summary\\\\\\\\>\\\\n\\\\n\\\\\\\\> \\\\\\\\*\\\\\\\\*Research Summary for AI\\\\\\\\*\\\\\\\\*\\\\n\\\\\\\\>\\\\n\\\\\\\\> ### Summary of Research Results on Artificial Intelligence (AI)\\\\n\\\\\\\\>\\\\n\\\\\\\\> #### Introduction\\\\n\\\\\\\\>\\\\n\\\\\\\\> The field of Artificial Intelligence (AI) has seen significant advancements in recent years, marked by the development of methods and technologies that enable machines to perceive their environment, learn from data, and make decisions. The primary focus of this summary is on the insights derived from various research findings related to AI.\\\\n\\\\\\\\>\\\\n\\\\\\\\> #### Key Findings\\\\n\\\\\\\\>\\\\n\\\\\\\\> 1. \\\\\\\\*\\\\\\\\*Definition and Scope of AI\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>\\\\n\\\\\\\\>    - AI is defined as a branch of computer science focused on creating systems that can perform tasks requiring human-like intelligence, including learning, reasoning, and problem-solving (Wikipedia).\\\\n\\\\\\\\>    - It encompasses various subfields, including machine learning, natural language processing, robotics, and computer vision.\\\\n\\\\\\\\>\\\\n\\\\\\\\> 2. \\\\\\\\*\\\\\\\\*Impact and Applications\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>\\\\n\\\\\\\\>    - AI technologies are being integrated into numerous sectors, improving efficiency and productivity. Applications range from autonomous vehicles and healthcare diagnostics to customer service automation and financial forecasting (OpenAI).\\\\n\\\\\\\\>    - Google\\\\'s commitment to making AI beneficial for everyone highlights its potential to significantly improve daily life by enhancing user experiences across various platforms (Google AI).\\\\n\\\\\\\\>\\\\n\\\\\\\\> 3. \\\\\\\\*\\\\\\\\*Ethical Considerations\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>\\\\n\\\\\\\\>    - There is an ongoing discourse regarding the ethical implications of AI, including concerns about privacy, bias, and accountability in decision-making processes. The need for a framework that ensures the safe and responsible use of AI technologies is emphasized (OpenAI).\\\\n\\\\\\\\>\\\\n\\\\\\\\> 4. \\\\\\\\*\\\\\\\\*Learning Mechanisms\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>\\\\n\\\\\\\\>    - AI systems utilize different learning mechanisms, such as supervised learning, unsupervised learning, and reinforcement learning. These methods allow AI to improve performance over time by learning from past experiences and data (Wikipedia).\\\\n\\\\\\\\>    - The distinction between supervised and unsupervised learning is critical; supervised learning relies on labeled data, while unsupervised learning identifies patterns without predefined labels (Unsupervised).\\\\n\\\\\\\\>\\\\n\\\\\\\\> 5. \\\\\\\\*\\\\\\\\*Future Directions\\\\\\\\*\\\\\\\\*:\\\\n\\\\\\\\>    - Future AI developments are expected to focus on enhancing the interpretability and transparency of AI systems, ensuring that they can provide justifiable decisions and actions (OpenAI).\\\\n\\\\\\\\>    - There is also a push towards making AI systems more accessible and user-friendly, encouraging broader adoption across different demographics and industries (Google AI).\\\\n\\\\\\\\>\\\\n\\\\\\\\> #### Conclusion\\\\n\\\\\\\\>\\\\n\\\\\\\\> AI represents a transformative force across multiple domains, promising to reshape industries and improve quality of life. However, as its capabilities expand, it is crucial to address the ethical and societal implications that arise. Continued research and collaboration among technologists, ethicists, and policymakers will be essential in navigating the future landscape of AI.\\\\n\\\\n</details\\\\\\\\>\\\\n\\\\n### What\\\\'s Next?\\\\n\\\\n- 📚 Explore more examples in our \\\\\\\\[Cookbook\\\\\\\\](https://github.com/julep-ai/julep/tree/dev/cookbooks)\\\\n- 🔧 Learn about \\\\\\\\[Tool Integration\\\\\\\\](https://docs.julep.ai/docs/tools/overview)\\\\n- 🧠 Understand \\\\\\\\[Agent Memory\\\\\\\\](https://docs.julep.ai/docs/agents/memory)\\\\n- 🔄 Dive into \\\\\\\\[Complex Workflows\\\\\\\\](https://docs.julep.ai/docs/tasks/workflows)\\\\n\\\\n\\\\\\\\> \\\\\\\\[!TIP\\\\\\\\]\\\\n\\\\\\\\> 💡 Checkout more tutorials in the \\\\\\\\[Tutorials\\\\\\\\](https://docs.julep.ai/docs/tutorials/) section of the documentation.\\\\n\\\\\\\\> \\\\n\\\\\\\\> 💡 If you are a beginner, we recommend starting with the \\\\\\\\[Quickstart Guide\\\\\\\\](https://docs.julep.ai/docs/introduction/quickstart).\\\\n\\\\\\\\> \\\\n\\\\\\\\> 💡 If you are looking for more ideas, check out the \\\\\\\\[Ideas\\\\\\\\](https://github.com/julep-ai/julep/blob/dev/cookbooks/IDEAS.md) section of the repository.\\\\n\\\\\\\\> \\\\n\\\\\\\\> 💡 If you more into cookbook style recipes, check out the \\\\\\\\[Cookbook\\\\\\\\](https://github.com/julep-ai/julep/tree/dev/cookbooks) section of the repository.\\\\n---\\\\n\\\\n## 🔍 Reference\\\\n\\\\n### 📚 SDK Reference\\\\n\\\\n- \\\\\\\\*\\\\\\\\*Node.js\\\\\\\\*\\\\\\\\* \\\\\\\\[SDK Reference\\\\\\\\](https://github.com/julep-ai/node-sdk/blob/main/api.md) | \\\\\\\\[NPM Package\\\\\\\\](https://www.npmjs.com/package/@julep/sdk)\\\\n- \\\\\\\\*\\\\\\\\*Python\\\\\\\\*\\\\\\\\* \\\\\\\\[SDK Reference\\\\\\\\](https://github.com/julep-ai/python-sdk/blob/main/api.md) | \\\\\\\\[PyPI Package\\\\\\\\](https://pypi.org/project/julep/)\\\\n\\\\n### 🛠️ API Reference\\\\n\\\\nExplore our API documentation to learn more about agents, tasks, tools, and the Julep CLI here: \\\\\\\\[API Reference\\\\\\\\](https://docs.julep.ai/api-reference/)\\\\n\\\\n---\\\\n\\\\n## 💻 Local Setup\\\\n\\\\n### 1. Clone the Repository\\\\n\\\\nClone the repository from your preferred source:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ngit clone <repository\\\\\\\\_url\\\\\\\\>\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n### 2. Navigate to the Root Directory\\\\n\\\\nChange to the root directory of the project:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ncd <repository\\\\\\\\_root\\\\\\\\>\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n### 3. Set Up Environment Variables\\\\n\\\\n- Create a \\\\\\\\`.env\\\\\\\\` file in the root directory.\\\\n- Refer to the \\\\\\\\`.env.example\\\\\\\\` file for a list of required variables.\\\\n- Ensure that all necessary variables are set in the \\\\\\\\`.env\\\\\\\\` file.\\\\n\\\\n### 4. Create a Docker Volume for Backup\\\\n\\\\nCreate a Docker volume named \\\\\\\\`grafana\\\\\\\\_data\\\\\\\\`, \\\\\\\\`memory\\\\\\\\_store\\\\\\\\_data\\\\\\\\`, \\\\\\\\`temporal-db-data\\\\\\\\`, \\\\\\\\`prometheus\\\\\\\\_data\\\\\\\\`, \\\\\\\\`seadweedfs\\\\\\\\_data\\\\\\\\`:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ndocker volume create grafana\\\\\\\\_data\\\\ndocker volume create memory\\\\\\\\_store\\\\\\\\_data\\\\ndocker volume create temporal-db-data\\\\ndocker volume create prometheus\\\\\\\\_data\\\\ndocker volume create seadweedfs\\\\\\\\_data\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n### 5. Run the Project using Docker Compose\\\\n\\\\nYou can run the project in two different modes: \\\\\\\\*\\\\\\\\*Single Tenant\\\\\\\\*\\\\\\\\* or \\\\\\\\*\\\\\\\\*Multi-Tenant\\\\\\\\*\\\\\\\\*. Choose one of the following commands based on your requirement:\\\\n\\\\n1. Single-Tenant Mode\\\\n\\\\nRun the project in single-tenant mode:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ndocker compose --env-file .env --profile temporal-ui --profile single-tenant --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --build --force-recreate --watch\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n\\\\\\\\> \\\\\\\\*\\\\\\\\*Note:\\\\\\\\*\\\\\\\\* In single-tenant mode, you can interact with the SDK directly without the need for the API KEY.\\\\n\\\\n2. Multi-Tenant Mode\\\\n\\\\nRun the project in multi-tenant mode:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\ndocker compose --env-file .env --profile temporal-ui --profile multi-tenant --profile embedding-cpu --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --force-recreate --build --watch\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n\\\\\\\\> \\\\\\\\*\\\\\\\\*Note:\\\\\\\\*\\\\\\\\* In multi-tenant mode, you need to generate a JWT token locally that act as an API KEY to interact with the SDK.\\\\n\\\\nGenerate a JWT Token (Only for Multi-Tenant Mode)\\\\n\\\\nTo generate a JWT token, \\\\\\\\`jwt-cli\\\\\\\\` is required. Kindly install the same before proceeding with the next steps.\\\\n\\\\nUse the following command and replace \\\\\\\\`JWT\\\\\\\\_SHARED\\\\\\\\_KEY\\\\\\\\` with the corresponding key from your \\\\\\\\`.env\\\\\\\\` file to generate a JWT token:\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`bash\\\\njwt encode --secret JWT\\\\\\\\_SHARED\\\\\\\\_KEY --alg HS512 --exp=$(date -d \\\\'+10 days\\\\' +%s) --sub \\\\'00000000-0000-0000-0000-000000000000\\\\' \\\\'{}\\\\'\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\nThis command generates a JWT token that will be valid for 10 days.\\\\n\\\\n### 6. Interaction\\\\n\\\\n- \\\\\\\\*\\\\\\\\*Temporal UI\\\\\\\\*\\\\\\\\*: You can access the Temporal UI through the specified port in your \\\\\\\\`.env\\\\\\\\` file.\\\\n- \\\\\\\\*\\\\\\\\*Julep SDK\\\\\\\\*\\\\\\\\*: The Julep SDK is a Python/Node.js library that allows you to interact with the Julep API.\\\\n\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`python\\\\nfrom julep import Client\\\\n\\\\nclient = Client(api\\\\\\\\_key=\\\"your\\\\\\\\_jwt\\\\\\\\_token\\\")\\\\n\\\\\\\\`\\\\\\\\`\\\\\\\\`\\\\n\\\\n\\\\\\\\*\\\\\\\\*Note:\\\\\\\\*\\\\\\\\* SDK in Multi-Tenant mode, you need to generate a JWT token locally that acts as an API KEY to interact with the SDK. Furthermore, while initializing the client you will need to set the environment to \\\\\\\\`local\\\\\\\\_multi\\\\\\\\_tenant\\\\\\\\` and the api key to the JWT token you generated in the previous step. Whereas in Single-Tenant mode you can interact with the SDK directly without the need for the API KEY and set the environment to \\\\\\\\`local\\\\\\\\`.\\\\n\\\\n### 7. Troubleshooting\\\\n\\\\n- Ensure that all required Docker images are available.\\\\n- Check for missing environment variables in the \\\\\\\\`.env\\\\\\\\` file.\\\\n- Use the \\\\\\\\`docker compose logs\\\\\\\\` command to view detailed logs for debugging.\\\\n\\\\n---\\\\n\\\\n## 👥 Contributors\\\\n\\\\n<h3\\\\\\\\>Join Our Community! 🌟</h3\\\\\\\\>\\\\n\\\\nWe\\\\'re excited to welcome new contributors to the Julep project! We\\\\'ve created several \\\"good first issues\\\" to help you get started.\\\\n\\\\n<h4\\\\\\\\>How to Contribute:</h4\\\\\\\\>\\\\n\\\\n1. 📖 Check out our \\\\\\\\[CONTRIBUTING.md\\\\\\\\](https://github.com/julep-ai/julep/blob/dev/CONTRIBUTING.md) file for guidelines\\\\n2. 🔍 Browse our \\\\\\\\[good first issues\\\\\\\\](https://github.com/julep-ai/julep/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)\\\\n3. 💬 Join our \\\\\\\\[Discord\\\\\\\\](https://discord.com/invite/JTSBGRZrzj) for help and discussions\\\\n\\\\n<br/\\\\\\\\>\\\\n\\\\nYour contributions, big or small, are valuable to us. Let\\\\'s build something amazing together! 🚀\\\\n\\\\n<h4\\\\\\\\>Our Amazing Contributors:</h4\\\\\\\\>\\\\n\\\\n<a href=\\\"https://github.com/julep-ai/julep/graphs/contributors\\\"\\\\\\\\>\\\\n  <img src=\\\"https://contrib.rocks/image?repo=julep-ai/julep\\\" /\\\\\\\\>\\\\n</a\\\\\\\\>\\\\n\\\\n---\\\\n\\\\n## 📄 License\\\\n\\\\nJulep is licensed under the \\\\\\\\[Apache License 2.0\\\\\\\\](LICENSE). \\\\n\\\\nSee the LICENSE file for more details.\\\\n\\\\n---', 'description': ''}, 'status': 20000}, 'content': 'eyJjb2RlIjoyMDAsInN0YXR1cyI6MjAwMDAsImRhdGEiOnsiaW1hZ2VzIjp7fSwibGlua3MiOnt9LCJ0aXRsZSI6IiIsImRlc2NyaXB0aW9uIjoiIiwidXJsIjoiaHR0cHM6Ly9naXRodWIuY29tL2p1bGVwLWFpL2p1bGVwL2Jsb2IvZGV2L1JFQURNRS5tZD9yYXc9dHJ1ZSIsImNvbnRlbnQiOiI8c3VwXFw+PGRpdiBhbGlnbj1cImNlbnRlclwiXFw+XFxbRW5nbGlzaFxcXShSRUFETUUubWQpIHwgXFxb5Lit5paH57+76K+RXFxdKC4vLmdpdGh1Yi9SRUFETUUtQ04ubWQpIHwgXFxb5pel5pys6Kqe57+76KizXFxdKC4vLmdpdGh1Yi9SRUFETUUtSkEubWQpIHwgXFxbRnJlbmNoXFxdKC4vLmdpdGh1Yi9SRUFETUUtRlIubWQpPC9kaXZcXD48L3N1cFxcPlxuXG48ZGl2IGFsaWduPVwiY2VudGVyXCIgaWQ9XCJ0b3BcIlxcPlxuPGltZyBzcmM9XCJodHRwczovL3NvY2lhbGlmeS5naXQuY2kvanVsZXAtYWkvanVsZXAvaW1hZ2U/ZGVzY3JpcHRpb249MSZkZXNjcmlwdGlvbkVkaXRhYmxlPVNlcnZlcmxlc3MlMjBBSSUyMFdvcmtmbG93cyUyMGZvciUyMERhdGElMjAlMjYlMjBNTCUyMFRlYW1zJmZvbnQ9U291cmNlJTIwQ29kZSUyMFBybyZsb2dvPWh0dHBzJTNBJTJGJTJGcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSUyRmp1bGVwLWFpJTJGanVsZXAlMkZkZXYlMkYuZ2l0aHViJTJGanVsZXAtbG9nby5zdmcmb3duZXI9MSZmb3Jrcz0xJnBhdHRlcm49U29saWQmc3RhcmdhemVycz0xJnRoZW1lPUF1dG9cIiBhbHQ9XCJqdWxlcFwiIGhlaWdodD0zMDAgL1xcPlxuXG48YnJcXD5cbiAgPHBcXD5cbiAgICA8YSBocmVmPVwiaHR0cHM6Ly9kYXNoYm9hcmQuanVsZXAuYWlcIlxcPlxuICAgICAgPGltZyBzcmM9XCJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0dldFxcX0FQSVxcX0tleS1GRjU3MzM/c3R5bGU9bG9nbz1kYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSFpwWlhkQ2IzZzlJakFnTUNBeU5DQXlOQ0lnWm1sc2JEMGlkMmhwZEdVaVBqeHdZWFJvSUdROUlrMHhNaUF4VERNZ05YWXhOR3c1SURRZ09TMDBWalZzTFRrdE5IcHRNQ0F5TGpoMk1UWXVORXcxSURFMkxqSldOaTQ0YkRjdE15NHllbTB5SURndU1td3RNaTB5TFRJZ01pQXlJRElnTWkweWVpSXZQand2YzNablBnPT1cIiBhbHQ9XCJHZXQgQVBJIEtleVwiIGhlaWdodD1cIjI4XCJcXD5cbiAgICA8L2FcXD5cbiAgICA8c3BhblxcPiZuYnNwOzwvc3BhblxcPlxuICAgIDxhIGhyZWY9XCJodHRwczovL2RvY3MuanVsZXAuYWlcIlxcPlxuICAgICAgPGltZyBzcmM9XCJodHRwczovL2ltZy5zaGllbGRzLmlvL2JhZGdlL0RvY3VtZW50YXRpb24tNEIzMkMzP3N0eWxlPWxvZ289Z2l0Ym9vayZsb2dvQ29sb3I9d2hpdGVcIiBhbHQ9XCJEb2N1bWVudGF0aW9uXCIgaGVpZ2h0PVwiMjhcIlxcPlxuICAgIDwvYVxcPlxuICA8L3BcXD5cbiAgPHBcXD5cbiAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AanVsZXAvc2RrXCJcXD48aW1nIHNyYz1cImh0dHBzOi8vaW1nLnNoaWVsZHMuaW8vbnBtL3YvJTQwanVsZXAlMkZzZGs/c3R5bGU9c29jaWFsJmFtcDtsb2dvPW5wbSZhbXA7bGluaz1odHRwcyUzQSUyRiUyRnd3dy5ucG1qcy5jb20lMkZwYWNrYWdlJTJGJTQwanVsZXAlMkZzZGtcIiBhbHQ9XCJOUE0gVmVyc2lvblwiIGhlaWdodD1cIjI4XCJcXD48L2FcXD5cbiAgICA8c3BhblxcPiZuYnNwOzwvc3BhblxcPlxuICAgIDxhIGhyZWY9XCJodHRwczovL3B5cGkub3JnL3Byb2plY3QvanVsZXBcIlxcPjxpbWcgc3JjPVwiaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9weXBpL3YvanVsZXA/c3R5bGU9c29jaWFsJmFtcDtsb2dvPXB5dGhvbiZhbXA7bGFiZWw9UHlQSSZhbXA7bGluaz1odHRwcyUzQSUyRiUyRnB5cGkub3JnJTJGcHJvamVjdCUyRmp1bGVwXCIgYWx0PVwiUHlQSSAtIFZlcnNpb25cIiBoZWlnaHQ9XCIyOFwiXFw+PC9hXFw+XG4gICAgPHNwYW5cXD4mbmJzcDs8L3NwYW5cXD5cbiAgICA8YSBocmVmPVwiaHR0cHM6Ly9odWIuZG9ja2VyLmNvbS91L2p1bGVwYWlcIlxcPjxpbWcgc3JjPVwiaHR0cHM6Ly9pbWcuc2hpZWxkcy5pby9kb2NrZXIvdi9qdWxlcGFpL2FnZW50cy1hcGk/c29ydD1zZW12ZXImYW1wO3N0eWxlPXNvY2lhbCZhbXA7bG9nbz1kb2NrZXImYW1wO2xpbms9aHR0cHMlM0ElMkYlMkZodWIuZG9ja2VyLmNvbSUyRnUlMkZqdWxlcGFpXCIgYWx0PVwiRG9ja2VyIEltYWdlIFZlcnNpb25cIiBoZWlnaHQ9XCIyOFwiXFw+PC9hXFw+XG4gICAgPHNwYW5cXD4mbmJzcDs8L3NwYW5cXD5cbiAgICA8YSBocmVmPVwiaHR0cHM6Ly9jaG9vc2VhbGljZW5zZS5jb20vbGljZW5zZXMvYXBhY2hlL1wiXFw+PGltZyBzcmM9XCJodHRwczovL2ltZy5zaGllbGRzLmlvL2dpdGh1Yi9saWNlbnNlL2p1bGVwLWFpL2p1bGVwXCIgYWx0PVwiR2l0SHViIExpY2Vuc2VcIiBoZWlnaHQ9XCIyOFwiXFw+PC9hXFw+XG4gIDwvcFxcPlxuICBcbiAgPGgzXFw+XG4gICAgPGEgaHJlZj1cImh0dHBzOi8vZGlzY29yZC5jb20vaW52aXRlL0pUU0JHUlpyempcIiByZWw9XCJkb2ZvbGxvd1wiXFw+RGlzY29yZDwvYVxcPlxuICAgIMK3XG4gICAgPGEgaHJlZj1cImh0dHBzOi8veC5jb20vanVsZXBcXF9haVwiIHJlbD1cImRvZm9sbG93XCJcXD7wnZWPPC9hXFw+XG4gICAgwrdcbiAgICA8YSBocmVmPVwiaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2NvbXBhbnkvanVsZXAtYWlcIiByZWw9XCJkb2ZvbGxvd1wiXFw+TGlua2VkSW48L2FcXD5cbiAgPC9oM1xcPlxuPC9kaXZcXD5cblxuPGRpdiBhbGlnbj1cImNlbnRlclwiXFw+XG4gIDxoM1xcPjxpXFw+U2VydmVybGVzcyBBSSBXb3JrZmxvd3MgZm9yIERhdGEgJiBNTCBUZWFtczwvaVxcPjwvaDNcXD5cbjwvZGl2XFw+XG5cbkp1bGVwIGlzIGEgc2VydmVybGVzcyBwbGF0Zm9ybSB0aGF0IGhlbHBzIGRhdGEgYW5kIE1MIHRlYW1zIGJ1aWxkIHNvcGhpc3RpY2F0ZWQgQUkgd29ya2Zsb3dzLiBJdCBwcm92aWRlcyBhIHJvYnVzdCBmb3VuZGF0aW9uIGZvciBvcmNoZXN0cmF0aW5nIGNvbXBsZXggQUkgb3BlcmF0aW9ucywgbWFuYWdpbmcgc3RhdGUgYWNyb3NzIGludGVyYWN0aW9ucywgYW5kIGludGVncmF0aW5nIHdpdGggeW91ciBleGlzdGluZyBkYXRhIGluZnJhc3RydWN0dXJlIGFuZCB0b29scy5cblxuV2hldGhlciB5b3UncmUgYnVpbGRpbmcgZGF0YSBwaXBlbGluZXMgb3IgY3JlYXRpbmcgQUkgd29ya2Zsb3dzLCBKdWxlcCBtYWtlcyBpdCBlYXN5IHRvIGNvbXBvc2UgYW5kIHNjYWxlIExMTS1wb3dlcmVkIHdvcmtmbG93cyB3aXRob3V0IG1hbmFnaW5nIGluZnJhc3RydWN0dXJlLiBJbWFnaW5lIHlvdSB3YW50IHRvIGJ1aWxkIGFuIEFJIGFnZW50IHRoYXQgY2FuIGRvIG1vcmUgdGhhbiBqdXN0IGFuc3dlciBzaW1wbGUgcXVlc3Rpb25z4oCUaXQgbmVlZHMgdG8gaGFuZGxlIGNvbXBsZXggdGFza3MsIHJlbWVtYmVyIHBhc3QgaW50ZXJhY3Rpb25zLCBhbmQgbWF5YmUgZXZlbiB1c2Ugb3RoZXIgdG9vbHMgb3IgQVBJcy4gVGhhdCdzIHdoZXJlIEp1bGVwIGNvbWVzIGluLiBPdXIgcGxhdGZvcm0gaGFuZGxlcyB0aGUgaGVhdnkgbGlmdGluZyBzbyB5b3UgY2FuIGZvY3VzIG9uIGJ1aWxkaW5nIGludGVsbGlnZW50IHNvbHV0aW9ucyBmb3IgeW91ciBidXNpbmVzcy5cblxu8J+SoSBUbyBsZWFybiBtb3JlIGFib3V0IEp1bGVwLCBjaGVjayBvdXQgdGhlIFxcKlxcKlxcW0RvY3VtZW50YXRpb25cXF0oaHR0cHM6Ly9kb2NzLmp1bGVwLmFpL2RvY3MvaW50cm9kdWN0aW9uL292ZXJ2aWV3KVxcKlxcKi5cblxuPCEtLSBTVEFSVCBkb2N0b2MgZ2VuZXJhdGVkIFRPQyBwbGVhc2Uga2VlcCBjb21tZW50IGhlcmUgdG8gYWxsb3cgYXV0byB1cGRhdGUgLS1cXD5cbjwhLS0gRE9OJ1QgRURJVCBUSElTIFNFQ1RJT04sIElOU1RFQUQgUkUtUlVOIGRvY3RvYyBUTyBVUERBVEUgLS1cXD5cbjxoM1xcPvCfk5YgVGFibGUgb2YgQ29udGVudHM8L2gzXFw+XG5cbi0gXFxb4pyoIEtleSBGZWF0dXJlc1xcXSgjLWtleS1mZWF0dXJlcylcbi0gXFxb8J+noCBNZW50YWwgTW9kZWxcXF0oIy1tZW50YWwtbW9kZWwpXG4tIFxcW/Cfk6YgSW5zdGFsbGF0aW9uXFxdKCMtaW5zdGFsbGF0aW9uKVxuICAtIFxcW/Cfm6DvuI8gSnVsZXAgU0RLc1xcXSgjLWp1bGVwLXNka3MpXG4gIC0gXFxb8J+boO+4jyBKdWxlcCBDTElcXF0oIy1qdWxlcC1jbGkpXG4tIFxcW/CfmoAgUXVpY2sgU3RhcnRcXF0oIy1xdWljay1zdGFydClcbiAgLSBcXFtXaGF0J3MgTmV4dD9cXF0oI3doYXRzLW5leHQpXG4tIFxcW/CflI0gUmVmZXJlbmNlXFxdKCMtcmVmZXJlbmNlKVxuICAtIFxcW/Cfk5ogU0RLIFJlZmVyZW5jZVxcXSgjLXNkay1yZWZlcmVuY2UpXG4gIC0gXFxb8J+boO+4jyBBUEkgUmVmZXJlbmNlXFxdKCMtYXBpLXJlZmVyZW5jZSlcbi0gXFxb8J+SuyBMb2NhbCBTZXR1cFxcXSgjLWxvY2FsLXNldHVwKVxuICAtIFxcWzEuIENsb25lIHRoZSBSZXBvc2l0b3J5XFxdKCMxLWNsb25lLXRoZS1yZXBvc2l0b3J5KVxuICAtIFxcWzIuIE5hdmlnYXRlIHRvIHRoZSBSb290IERpcmVjdG9yeVxcXSgjMi1uYXZpZ2F0ZS10by10aGUtcm9vdC1kaXJlY3RvcnkpXG4gIC0gXFxbMy4gU2V0IFVwIEVudmlyb25tZW50IFZhcmlhYmxlc1xcXSgjMy1zZXQtdXAtZW52aXJvbm1lbnQtdmFyaWFibGVzKVxuICAtIFxcWzQuIENyZWF0ZSBhIERvY2tlciBWb2x1bWUgZm9yIEJhY2t1cFxcXSgjNC1jcmVhdGUtYS1kb2NrZXItdm9sdW1lLWZvci1iYWNrdXApXG4gIC0gXFxbNS4gUnVuIHRoZSBQcm9qZWN0IHVzaW5nIERvY2tlciBDb21wb3NlXFxdKCM1LXJ1bi10aGUtcHJvamVjdC11c2luZy1kb2NrZXItY29tcG9zZSlcbiAgLSBcXFs2LiBJbnRlcmFjdGlvblxcXSgjNi1pbnRlcmFjdGlvbilcbiAgLSBcXFs3LiBUcm91Ymxlc2hvb3RpbmdcXF0oIzctdHJvdWJsZXNob290aW5nKVxuLSBcXFvwn5GlIENvbnRyaWJ1dG9yc1xcXSgjLWNvbnRyaWJ1dG9ycylcbiAgLSBcXFtKb2luIE91ciBDb21tdW5pdHkhIPCfjJ9cXF0oI2pvaW4tb3VyLWNvbW11bml0eS0pXG4tIFxcW/Cfk4QgTGljZW5zZVxcXSgjLWxpY2Vuc2UpXG5cbjwhLS0gRU5EIGRvY3RvYyBnZW5lcmF0ZWQgVE9DIHBsZWFzZSBrZWVwIGNvbW1lbnQgaGVyZSB0byBhbGxvdyBhdXRvIHVwZGF0ZSAtLVxcPlxuXG4tLS1cblxuIyMg4pyoIEtleSBGZWF0dXJlc1xuXG48ZGl2IGFsaWduPVwibGVmdFwiXFw+XG4gIDx0YWJsZVxcPlxuICAgIDx0clxcPlxuICAgICAgPHRkXFw+8J+noDwvdGRcXD5cbiAgICAgIDx0ZFxcPjxiXFw+U21hcnQgTWVtb3J5PC9iXFw+PC90ZFxcPlxuICAgICAgPHRkXFw+QWdlbnRzIHRoYXQgcmVtZW1iZXIgY29udGV4dCBhbmQgbGVhcm4gZnJvbSBwYXN0IGludGVyYWN0aW9uczwvdGRcXD5cbiAgICA8L3RyXFw+XG4gICAgPHRyXFw+XG4gICAgICA8dGRcXD7wn5SEPC90ZFxcPlxuICAgICAgPHRkXFw+PGJcXD5Xb3JrZmxvdyBFbmdpbmU8L2JcXD48L3RkXFw+XG4gICAgICA8dGRcXD5CdWlsZCBjb21wbGV4LCBtdWx0aS1zdGVwIHByb2Nlc3NlcyB3aXRoIGJyYW5jaGluZyBhbmQgbG9vcHM8L3RkXFw+XG4gICAgPC90clxcPlxuICAgIDx0clxcPlxuICAgICAgPHRkXFw+4pqhPC90ZFxcPlxuICAgICAgPHRkXFw+PGJcXD5QYXJhbGxlbCBQcm9jZXNzaW5nPC9iXFw+PC90ZFxcPlxuICAgICAgPHRkXFw+UnVuIG11bHRpcGxlIG9wZXJhdGlvbnMgc2ltdWx0YW5lb3VzbHkgZm9yIG1heGltdW0gZWZmaWNpZW5jeTwvdGRcXD5cbiAgICA8L3RyXFw+XG4gICAgPHRyXFw+XG4gICAgICA8dGRcXD7wn5ug77iPPC90ZFxcPlxuICAgICAgPHRkXFw+PGJcXD5Ub29sIEludGVncmF0aW9uPC9iXFw+PC90ZFxcPlxuICAgICAgPHRkXFw+U2VhbWxlc3NseSBjb25uZWN0IHdpdGggZXh0ZXJuYWwgQVBJcyBhbmQgc2VydmljZXM8L3RkXFw+XG4gICAgPC90clxcPlxuICAgIDx0clxcPlxuICAgICAgPHRkXFw+8J+UjDwvdGRcXD5cbiAgICAgIDx0ZFxcPjxiXFw+RWFzeSBTZXR1cDwvYlxcPjwvdGRcXD5cbiAgICAgIDx0ZFxcPkdldCBzdGFydGVkIHF1aWNrbHkgd2l0aCBQeXRob24gYW5kIE5vZGUuanMgU0RLczwvdGRcXD5cbiAgICA8L3RyXFw+XG4gICAgPHRyXFw+XG4gICAgICA8dGRcXD7wn5SSPC90ZFxcPlxuICAgICAgPHRkXFw+PGJcXD5SZWxpYWJsZSAmIFNlY3VyZTwvYlxcPjwvdGRcXD5cbiAgICAgIDx0ZFxcPkJ1aWx0LWluIGVycm9yIGhhbmRsaW5nLCByZXRyaWVzLCBhbmQgc2VjdXJpdHkgZmVhdHVyZXM8L3RkXFw+XG4gICAgPC90clxcPlxuICAgIDx0clxcPlxuICAgICAgPHRkXFw+8J+TijwvdGRcXD5cbiAgICAgIDx0ZFxcPjxiXFw+TW9uaXRvcmluZzwvYlxcPjwvdGRcXD5cbiAgICAgIDx0ZFxcPlRyYWNrIHRhc2sgcHJvZ3Jlc3MgYW5kIHBlcmZvcm1hbmNlIGluIHJlYWwtdGltZTwvdGRcXD5cbiAgICA8L3RyXFw+XG4gIDwvdGFibGVcXD5cbjwvZGl2XFw+XG5cbvCfkqEgVG8gbGVhcm4gbW9yZSBhYm91dCBKdWxlcCwgY2hlY2sgb3V0IHRoZSBcXCpcXCpcXFtEb2N1bWVudGF0aW9uXFxdKGh0dHBzOi8vZG9jcy5qdWxlcC5haS9kb2NzL2ludHJvZHVjdGlvbi9vdmVydmlldylcXCpcXCouXG5cbi0tLVxuXG4jIyDwn6egIE1lbnRhbCBNb2RlbFxuXG48cCBhbGlnbj1cImp1c3RpZnlcIlxcPlxuSnVsZXAgaXMgbWFkZSB1cCBvZiB0aGUgZm9sbG93aW5nIGNvbXBvbmVudHM6XG5cbi0gXFwqXFwqSnVsZXAgUGxhdGZvcm1cXCpcXCo6IFRoZSBKdWxlcCBwbGF0Zm9ybSBpcyBhIGNsb3VkIHNlcnZpY2UgdGhhdCBydW5zIHlvdXIgd29ya2Zsb3dzLiBJdCBpbmNsdWRlcyBhIGxhbmd1YWdlIGZvciBkZXNjcmliaW5nIHdvcmtmbG93cywgYSBzZXJ2ZXIgZm9yIHJ1bm5pbmcgdGhvc2Ugd29ya2Zsb3dzLCBhbmQgYW4gU0RLIGZvciBpbnRlcmFjdGluZyB3aXRoIHRoZSBwbGF0Zm9ybS5cbi0gXFwqXFwqSnVsZXAgU0RLc1xcKlxcKjogSnVsZXAgU0RLcyBhcmUgYSBzZXQgb2YgbGlicmFyaWVzIGZvciBidWlsZGluZyB3b3JrZmxvd3MuIFRoZXJlIGFyZSBTREtzIGZvciBQeXRob24gYW5kIEphdmFTY3JpcHQsIHdpdGggbW9yZSBvbiB0aGUgd2F5LlxuLSBcXCpcXCpKdWxlcCBDTElcXCpcXCo6IFRoZSBKdWxlcCBDTEkgaXMgYSBjb21tYW5kLWxpbmUgdG9vbCB0aGF0IGFsbG93cyB5b3UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgSnVsZXAgcGxhdGZvcm0gZGlyZWN0bHkgZnJvbSB5b3VyIHRlcm1pbmFsLlxuLSBcXCpcXCpKdWxlcCBBUElcXCpcXCo6IFRoZSBKdWxlcCBBUEkgaXMgYSBSRVNUZnVsIEFQSSB0aGF0IHlvdSBjYW4gdXNlIHRvIGludGVyYWN0IHdpdGggdGhlIEp1bGVwIHBsYXRmb3JtLlxuPC9wXFw+XG5cbjxkaXYgYWxpZ249XCJjZW50ZXJcIlxcPlxuICA8aW1nIHNyYz1cImh0dHBzOi8vZ2l0aHViLmNvbS91c2VyLWF0dGFjaG1lbnRzL2Fzc2V0cy8zODQyMGI1ZC05MzQyLTRjOGQtYmFlOS1iNDdjMjhhZTQ1YWZcIiBoZWlnaHQ9XCIzNjBcIi9cXD5cbjwvZGl2XFw+XG5cbjxwIGFsaWduPVwianVzdGlmeVwiXFw+XG5UaGluayBvZiBKdWxlcCBhcyBhIHBsYXRmb3JtIHRoYXQgY29tYmluZXMgYm90aCBjbGllbnQtc2lkZSBhbmQgc2VydmVyLXNpZGUgY29tcG9uZW50cyB0byBoZWxwIHlvdSBidWlsZCBhZHZhbmNlZCBBSSBhZ2VudHMuIEhlcmUncyBob3cgdG8gdmlzdWFsaXplIGl0OlxuXG4xLiBcXCpcXCpZb3VyIEFwcGxpY2F0aW9uIENvZGU6XFwqXFwqXG5cbiAgIC0gWW91IGNhbiB1c2UgdGhlIEp1bGVwIFNESyBpbiB5b3VyIGFwcGxpY2F0aW9uIHRvIGRlZmluZSBhZ2VudHMsIHRhc2tzLCBhbmQgd29ya2Zsb3dzLlxuICAgLSBUaGUgU0RLIHByb3ZpZGVzIGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyB0aGF0IG1ha2UgaXQgZWFzeSB0byBzZXQgdXAgYW5kIG1hbmFnZSB0aGVzZSBjb21wb25lbnRzLlxuICAgLSBZb3UgY2FuIHVzZSB0aGUgSnVsZXAgQ0xJIHRvIGludGVyYWN0IHdpdGggdGhlIEp1bGVwIHBsYXRmb3JtIGRpcmVjdGx5IGZyb20geW91ciB0ZXJtaW5hbC5cblxuMi4gXFwqXFwqSnVsZXAgQmFja2VuZCBTZXJ2aWNlOlxcKlxcKlxuXG4gICAtIFRoZSBTREsgY29tbXVuaWNhdGVzIHdpdGggdGhlIEp1bGVwIGJhY2tlbmQgb3ZlciB0aGUgbmV0d29yay5cbiAgIC0gVGhlIENMSSBjb21tdW5pY2F0ZXMgd2l0aCB0aGUgSnVsZXAgYmFja2VuZCB2aWEgdGhlIFNESy5cbiAgIC0gVGhlIGJhY2tlbmQgaGFuZGxlcyBleGVjdXRpb24gb2YgdGFza3MsIG1haW50YWlucyBzZXNzaW9uIHN0YXRlLCBzdG9yZXMgZG9jdW1lbnRzLCBhbmQgb3JjaGVzdHJhdGVzIHdvcmtmbG93cy5cblxuMy4gXFwqXFwqSW50ZWdyYXRpb24gd2l0aCBUb29scyBhbmQgQVBJczpcXCpcXCpcbiAgIC0gV2l0aGluIHlvdXIgd29ya2Zsb3dzLCB5b3UgY2FuIGludGVncmF0ZSBleHRlcm5hbCB0b29scyBhbmQgc2VydmljZXMuXG4gICAtIFRoZSBiYWNrZW5kIGZhY2lsaXRhdGVzIHRoZXNlIGludGVncmF0aW9ucywgc28geW91ciBhZ2VudHMgY2FuLCBmb3IgZXhhbXBsZSwgcGVyZm9ybSB3ZWIgc2VhcmNoZXMsIGFjY2VzcyBkYXRhYmFzZXMsIG9yIGNhbGwgdGhpcmQtcGFydHkgQVBJcy5cbjwvcFxcPlxuXG4tLS1cblxuIyMg8J+TpiBJbnN0YWxsYXRpb25cblxuPGRpdiBhbGlnbj1cImxlZnRcIlxcPlxuICA8aDNcXD7wn5ug77iPIEp1bGVwIFNES3M8L2gzXFw+XG5cbiAgVG8gZ2V0IHN0YXJ0ZWQgd2l0aCBKdWxlcCwgaW5zdGFsbCBpdCB1c2luZyBcXFtucG1cXF0oaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvQGp1bGVwL3Nkaykgb3IgXFxbcGlwXFxdKGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9qdWxlcC8pOlxuXG4gIDxoNFxcPk5vZGUuanM8L2g0XFw+XG5cbiAgXFxgXFxgXFxgYmFzaFxuICBucG0gaW5zdGFsbCBAanVsZXAvc2RrXG5cbiAgIyBvclxuXG4gIGJ1biBhZGQgQGp1bGVwL3Nka1xuICBcXGBcXGBcXGBcblxuICA8aDRcXD5QeXRob248L2g0XFw+XG5cbiAgXFxgXFxgXFxgYmFzaFxuICBwaXAgaW5zdGFsbCBqdWxlcFxuICBcXGBcXGBcXGBcblxuICBcXD4gXFxbIU5PVEVcXF1cbiAgXFw+IPCflJEgR2V0IHlvdXIgQVBJIGtleSBcXFtoZXJlXFxdKGh0dHBzOi8vZGFzaGJvYXJkLmp1bGVwLmFpKS5cbiAgXFw+XG4gIFxcPiBSZWFjaCBvdXQgb24gXFxbRGlzY29yZFxcXShodHRwczovL2Rpc2NvcmQuY29tL2ludml0ZS9KVFNCR1JacnpqKSB0byBnZXQgdG8ga25vdyBtb3JlIGFib3V0IEp1bGVwLlxuPC9kaXZcXD5cblxuIyMjIPCfm6DvuI8gSnVsZXAgQ0xJXG5cbjxwIGFsaWduPVwianVzdGlmeVwiXFw+XG5KdWxlcCBDTEkgaXMgYSBjb21tYW5kLWxpbmUgdG9vbCB0aGF0IGFsbG93cyB5b3UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgSnVsZXAgcGxhdGZvcm0gZGlyZWN0bHkgZnJvbSB5b3VyIHRlcm1pbmFsLiBJdCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd2F5IHRvIG1hbmFnZSB5b3VyIEFJIHdvcmtmbG93cywgdGFza3MsIGFuZCBhZ2VudHMgd2l0aG91dCBuZWVkaW5nIHRvIHdyaXRlIGNvZGUuXG48L3BcXD5cblxuXFxgXFxgXFxgYmFzaFxucGlwIGluc3RhbGwganVsZXAtY2xpXG5cXGBcXGBcXGBcblxuRm9yIG1vcmUgZGV0YWlscywgY2hlY2sgb3V0IHRoZSBcXCpcXCpcXFtKdWxlcCBDTEkgRG9jdW1lbnRhdGlvblxcXShodHRwczovL2RvY3MuanVsZXAuYWkvZG9jcy9qdWxlcGNsaS9pbnRyb2R1Y3Rpb24pXFwqXFwqLlxuXG5cXD4gXFxbIU5PVEVcXF1cblxcPiBUaGUgQ0xJIGlzIGN1cnJlbnRseSBpbiBiZXRhIGFuZCBhdmFpbGFibGUgZm9yIFB5dGhvbiBvbmx5LiBOb2RlLmpzIHN1cHBvcnQgY29taW5nIHNvb24hXG5cbi0tLVxuXG4jIyDwn5qAIFF1aWNrIFN0YXJ0XG5cbjxwIGFsaWduPVwianVzdGlmeVwiXFw+XG5cbkltYWdpbmUgYSBSZXNlYXJjaCBBSSBhZ2VudCB0aGF0IGNhbiBkbyB0aGUgZm9sbG93aW5nOlxuXG4xLiBcXCpcXCpUYWtlIGEgdG9waWNcXCpcXCosXG4yLiBcXCpcXCpDb21lIHVwIHdpdGggMzAgc2VhcmNoIHF1ZXJpZXNcXCpcXCogZm9yIHRoYXQgdG9waWMsXG4zLiBQZXJmb3JtIHRob3NlIHdlYiBcXCpcXCpzZWFyY2hlcyBpbiBwYXJhbGxlbFxcKlxcKixcbjQuIFxcKlxcKlN1bW1hcml6ZVxcKlxcKiB0aGUgcmVzdWx0cyxcbjUuIFNlbmQgdGhlIFxcKlxcKnN1bW1hcnkgdG8gRGlzY29yZFxcKlxcKi5cbiAgIFxuPC9wXFw+XG5cblxcPiBcXFshTk9URVxcXVxuXFw+IEluIEp1bGVwLCB0aGlzIHdvdWxkIGJlIGEgc2luZ2xlIHRhc2sgdW5kZXIgPGJcXD44MCBsaW5lcyBvZiBjb2RlPC9iXFw+IGFuZCBydW4gPGJcXD5mdWxseSBtYW5hZ2VkPC9iXFw+IGFsbCBvbiBpdHMgb3duLiBBbGwgb2YgdGhlIHN0ZXBzIGFyZSBleGVjdXRlZCBvbiBKdWxlcCdzIG93biBzZXJ2ZXJzIGFuZCB5b3UgZG9uJ3QgbmVlZCB0byBsaWZ0IGEgZmluZ2VyLlxuXG5IZXJlJ3MgYSBjb21wbGV0ZSBleGFtcGxlIG9mIGEgdGFzayBkZWZpbml0aW9uOlxuXG5cXGBcXGBcXGB5YW1sXG4jIHlhbWwtbGFuZ3VhZ2Utc2VydmVyOiAkc2NoZW1hPWh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9qdWxlcC1haS9qdWxlcC9yZWZzL2hlYWRzL2Rldi9zY2hlbWFzL2NyZWF0ZVxcX3Rhc2tcXF9yZXF1ZXN0Lmpzb25cbm5hbWU6IFJlc2VhcmNoIEFnZW50XG5kZXNjcmlwdGlvbjogQSByZXNlYXJjaCBhc3Npc3RhbnQgdGhhdCBjYW4gc2VhcmNoIHRoZSB3ZWIgYW5kIHNlbmQgdGhlIHN1bW1hcnkgdG8gRGlzY29yZFxuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIElOUFVUICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuXG4jIERlZmluZSB0aGUgaW5wdXQgc2NoZW1hIGZvciB0aGUgdGFza1xuaW5wdXRcXF9zY2hlbWE6XG4gIHR5cGU6IG9iamVjdFxuICBwcm9wZXJ0aWVzOlxuICAgIHRvcGljOlxuICAgICAgdHlwZTogc3RyaW5nXG4gICAgICBkZXNjcmlwdGlvbjogVGhlIG1haW4gdG9waWMgdG8gcmVzZWFyY2hcbiAgICBudW1cXF9xdWVzdGlvbnM6XG4gICAgICB0eXBlOiBpbnRlZ2VyXG4gICAgICBkZXNjcmlwdGlvbjogVGhlIG51bWJlciBvZiBzZWFyY2ggcXVlcmllcyB0byBnZW5lcmF0ZVxuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgVE9PTFMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG5cbiMgRGVmaW5lIHRoZSB0b29scyB0aGF0IHRoZSBhZ2VudCBjYW4gdXNlXG50b29sczpcbiAgLSBuYW1lOiB3ZWJcXF9zZWFyY2hcbiAgICB0eXBlOiBpbnRlZ3JhdGlvblxuICAgIGludGVncmF0aW9uOlxuICAgICAgcHJvdmlkZXI6IGJyYXZlXG4gICAgICBzZXR1cDpcbiAgICAgICAgYXBpXFxfa2V5OiBcIjx5b3VyLWJyYXZlLWFwaS1rZXlcXD5cIlxuXG4gIC0gbmFtZTogZGlzY29yZFxcX3dlYmhvb2tcbiAgICB0eXBlOiBhcGlcXF9jYWxsXG4gICAgYXBpXFxfY2FsbDpcbiAgICAgIHVybDogaHR0cHM6Ly9kaXNjb3JkLmNvbS9hcGkvd2ViaG9va3MvPHlvdXItd2ViaG9vay1pZFxcPi88eW91ci13ZWJob29rLXRva2VuXFw+XG4gICAgICBtZXRob2Q6IFBPU1RcbiAgICAgIGhlYWRlcnM6XG4gICAgICAgIENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblxuXG4jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTUFJTiBXT1JLRkxPVyAjIyMjIyMjIyMjIyMjIyMjI1xuIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcblxuIyBTcGVjaWFsIHZhcmlhYmxlczpcbiMgLSBzdGVwc1xcW2luZGV4XFxdLmlucHV0OiBmb3IgYWNjZXNzaW5nIHRoZSBpbnB1dCB0byB0aGUgc3RlcCBhdCB0aGF0IGluZGV4XG4jIC0gc3RlcHNcXFtpbmRleFxcXS5vdXRwdXQ6IGZvciBhY2Nlc3NpbmcgdGhlIG91dHB1dCBvZiB0aGUgc3RlcCBhdCB0aGF0IGluZGV4XG4jIC0gXFxfOiBmb3IgYWNjZXNzaW5nIHRoZSBvdXRwdXQgb2YgdGhlIHByZXZpb3VzIHN0ZXBcblxuIyBEZWZpbmUgdGhlIG1haW4gd29ya2Zsb3dcbm1haW46XG4jIFN0ZXAgMDogR2VuZXJhdGUgc2VhcmNoIHF1ZXJpZXNcbi0gcHJvbXB0OlxuICAgIC0gcm9sZTogc3lzdGVtXG4gICAgICBjb250ZW50OiBcXD5cXC1cbiAgICAgICAgJCBmXCJcIlwiXG4gICAgICAgIFlvdSBhcmUgYSByZXNlYXJjaCBhc3Npc3RhbnQuXG4gICAgICAgIEdlbmVyYXRlIHt7c3RlcHNcXFswXFxdLmlucHV0Lm51bVxcX3F1ZXN0aW9uc3xkZWZhdWx0KDMwLCB0cnVlKX19IGRpdmVyc2Ugc2VhcmNoIHF1ZXJpZXMgcmVsYXRlZCB0byB0aGUgdG9waWM6XG4gICAgICAgIHtzdGVwc1xcWzBcXF0uaW5wdXQudG9waWN9XG5cbiAgICAgICAgV3JpdGUgb25lIHF1ZXJ5IHBlciBsaW5lLlxuICAgICAgICBcIlwiXCJcbiAgdW53cmFwOiB0cnVlXG5cbiMgU3RlcCAxOiBFdmFsdWF0ZSB0aGUgc2VhcmNoIHF1ZXJpZXMgdXNpbmcgYSBzaW1wbGUgcHl0aG9uIGV4cHJlc3Npb25cbi0gZXZhbHVhdGU6XG4gICAgc2VhcmNoXFxfcXVlcmllczogJCBcXF8uc3BsaXQoTkVXTElORSlcblxuIyBTdGVwIDI6IFJ1biB0aGUgd2ViIHNlYXJjaCBpbiBwYXJhbGxlbCBmb3IgZWFjaCBxdWVyeVxuLSBvdmVyOiAkIFxcXy5zZWFyY2hcXF9xdWVyaWVzXG4gIG1hcDpcbiAgICB0b29sOiB3ZWJcXF9zZWFyY2hcbiAgICBhcmd1bWVudHM6XG4gICAgICBxdWVyeTogJCBcXF9cbiAgcGFyYWxsZWxpc206IDVcblxuIyBTdGVwIDM6IENvbGxlY3QgdGhlIHJlc3VsdHMgZnJvbSB0aGUgd2ViIHNlYXJjaFxuLSBldmFsdWF0ZTpcbiAgICBzZWFyY2hcXF9yZXN1bHRzOiAkIFxcX1xuXG4jIFN0ZXAgNDogU3VtbWFyaXplIHRoZSByZXN1bHRzXG4tIHByb21wdDpcbiAgICAtIHJvbGU6IHN5c3RlbVxuICAgICAgY29udGVudDogXFw+XG4gICAgICAgICQgZlwiXCJcIlxuICAgICAgICBZb3UgYXJlIGEgcmVzZWFyY2ggc3VtbWFyaXplci4gQ3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBzdW1tYXJ5IG9mIHRoZSBmb2xsb3dpbmcgcmVzZWFyY2ggcmVzdWx0cyBvbiB0aGUgdG9waWMge3N0ZXBzXFxbMFxcXS5pbnB1dC50b3BpY30uXG4gICAgICAgIFRoZSBzdW1tYXJ5IHNob3VsZCBiZSB3ZWxsLXN0cnVjdHVyZWQsIGluZm9ybWF0aXZlLCBhbmQgaGlnaGxpZ2h0IGtleSBmaW5kaW5ncyBhbmQgaW5zaWdodHMuIEtlZXAgdGhlIHN1bW1hcnkgY29uY2lzZSBhbmQgdG8gdGhlIHBvaW50LlxuICAgICAgICBUaGUgbGVuZ3RoIG9mIHRoZSBzdW1tYXJ5IHNob3VsZCBiZSBsZXNzIHRoYW4gMTUwIHdvcmRzLlxuICAgICAgICBIZXJlIGFyZSB0aGUgc2VhcmNoIHJlc3VsdHM6XG4gICAgICAgIHtcXF8uc2VhcmNoXFxfcmVzdWx0c31cbiAgICAgICAgXCJcIlwiXG4gIHVud3JhcDogdHJ1ZVxuICBzZXR0aW5nczpcbiAgICBtb2RlbDogZ3B0LTRvLW1pbmlcblxuIyBTdGVwIDU6IFNlbmQgdGhlIHN1bW1hcnkgdG8gRGlzY29yZFxuLSBldmFsdWF0ZTpcbiAgICBkaXNjb3JkXFxfbWVzc2FnZTogfC1cbiAgICAgICQgZicnJ1xuICAgICAgXFwqXFwqUmVzZWFyY2ggU3VtbWFyeSBmb3Ige3N0ZXBzXFxbMFxcXS5pbnB1dC50b3BpY31cXCpcXCpcbiAgICAgIHtcXF99XG4gICAgICAnJydcblxuIyBTdGVwIDY6IFNlbmQgdGhlIHN1bW1hcnkgdG8gRGlzY29yZFxuLSB0b29sOiBkaXNjb3JkXFxfd2ViaG9va1xuICBhcmd1bWVudHM6XG4gICAganNvblxcXzogXG4gICAgICBjb250ZW50OiAkIFxcXy5kaXNjb3JkXFxfbWVzc2FnZVxcWzoyMDAwXFxdICMgRGlzY29yZCBoYXMgYSAyMDAwIGNoYXJhY3RlciBsaW1pdFxuXFxgXFxgXFxgXG5cbkhlcmUgeW91IGNhbiBleGVjdXRlIHRoZSBhYm92ZSB3b3JrZmxvdyB1c2luZyB0aGUgSnVsZXAgU0RLOlxuXG48ZGV0YWlsc1xcPlxuPHN1bW1hcnlcXD48YlxcPlB5dGhvbjwvYlxcPiA8aVxcPihDbGljayB0byBleHBhbmQpPC9pXFw+PC9zdW1tYXJ5XFw+XG5cblxcYFxcYFxcYHB5dGhvblxuZnJvbSBqdWxlcCBpbXBvcnQgQ2xpZW50XG5pbXBvcnQgeWFtbFxuaW1wb3J0IHRpbWVcblxuIyBJbml0aWFsaXplIHRoZSBjbGllbnRcbmNsaWVudCA9IENsaWVudChhcGlcXF9rZXk9SlVMRVBcXF9BUElcXF9LRVkpXG5cbiMgQ3JlYXRlIHRoZSBhZ2VudFxuYWdlbnQgPSBjbGllbnQuYWdlbnRzLmNyZWF0ZShcbiAgbmFtZT1cIkp1bGVwIEJyb3dzZXIgVXNlIEFnZW50XCIsXG4gIGRlc2NyaXB0aW9uPVwiQSBKdWxlcCBhZ2VudCB0aGF0IGNhbiB1c2UgdGhlIGNvbXB1dGVyIHRvb2wgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgYnJvd3Nlci5cIixcbilcblxuIyBMb2FkIHRoZSB0YXNrIGRlZmluaXRpb25cbndpdGggb3BlbignLi9yZXNlYXJjaFxcX2FnZW50LnlhbWwnLCAncicpIGFzIGZpbGU6XG4gIHRhc2tcXF9kZWZpbml0aW9uID0geWFtbC5zYWZlXFxfbG9hZChmaWxlKVxuXG4jIENyZWF0ZSB0aGUgdGFza1xudGFzayA9IGNsaWVudC50YXNrcy5jcmVhdGUoXG4gIGFnZW50XFxfaWQ9YWdlbnQuaWQsXG4gIFxcKlxcKnRhc2tcXF9kZWZpbml0aW9uXG4pXG5cbiMgQ3JlYXRlIHRoZSBleGVjdXRpb25cbmV4ZWN1dGlvbiA9IGNsaWVudC5leGVjdXRpb25zLmNyZWF0ZShcbiAgICB0YXNrXFxfaWQ9dGFzay5pZCxcbiAgICBpbnB1dD17XG4gICAgICAgIFwidG9waWNcIjogXCJhcnRpZmljaWFsIGludGVsbGlnZW5jZVwiLFxuICAgICAgICBcIm51bVxcX3F1ZXN0aW9uc1wiOiAzMFxuICAgIH1cbilcblxuIyBXYWl0IGZvciB0aGUgZXhlY3V0aW9uIHRvIGNvbXBsZXRlXG53aGlsZSAocmVzdWx0IDo9IGNsaWVudC5leGVjdXRpb25zLmdldChleGVjdXRpb24uaWQpKS5zdGF0dXMgbm90IGluIFxcWydzdWNjZWVkZWQnLCAnZmFpbGVkJ1xcXTpcbiAgICBwcmludChyZXN1bHQuc3RhdHVzKVxuICAgIHRpbWUuc2xlZXAoMSlcblxuIyBQcmludCB0aGUgcmVzdWx0XG5pZiByZXN1bHQuc3RhdHVzID09IFwic3VjY2VlZGVkXCI6XG4gICAgcHJpbnQocmVzdWx0Lm91dHB1dClcbmVsc2U6XG4gICAgcHJpbnQoZlwiRXJyb3I6IHtyZXN1bHQuZXJyb3J9XCIpXG5cblxcYFxcYFxcYFxuPC9kZXRhaWxzXFw+XG5cbjwvYnJcXD5cbjxkZXRhaWxzXFw+XG48c3VtbWFyeVxcPjxiXFw+Tm9kZS5qczwvYlxcPiA8aVxcPihDbGljayB0byBleHBhbmQpPC9pXFw+PC9zdW1tYXJ5XFw+XG5cblxcYFxcYFxcYGpzXG5pbXBvcnQgeyBKdWxlcCB9IGZyb20gJ0BqdWxlcC9zZGsnO1xuaW1wb3J0IHlhbWwgZnJvbSAneWFtbCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuXG4vLyBJbml0aWFsaXplIHRoZSBjbGllbnRcbmNvbnN0IGNsaWVudCA9IG5ldyBKdWxlcCh7XG4gIGFwaUtleTogJ3lvdXJcXF9qdWxlcFxcX2FwaVxcX2tleSdcbn0pO1xuXG4vLyBDcmVhdGUgdGhlIGFnZW50XG5jb25zdCBhZ2VudCA9IGF3YWl0IGNsaWVudC5hZ2VudHMuY3JlYXRlKHtcbiAgbmFtZTogXCJKdWxlcCBCcm93c2VyIFVzZSBBZ2VudFwiLFxuICBkZXNjcmlwdGlvbjogXCJBIEp1bGVwIGFnZW50IHRoYXQgY2FuIHVzZSB0aGUgY29tcHV0ZXIgdG9vbCB0byBpbnRlcmFjdCB3aXRoIHRoZSBicm93c2VyLlwiLFxufSk7XG5cbi8vIFBhcnNlIHRoZSB0YXNrIGRlZmluaXRpb25cbmNvbnN0IHRhc2tEZWZpbml0aW9uID0geWFtbC5wYXJzZShmcy5yZWFkRmlsZVN5bmMoJy4vcmVzZWFyY2hcXF9hZ2VudC55YW1sJywgJ3V0ZjgnKSk7XG5cbi8vIENyZWF0ZSB0aGUgdGFza1xuY29uc3QgdGFzayA9IGF3YWl0IGNsaWVudC50YXNrcy5jcmVhdGUoXG4gIGFnZW50LmlkLFxuICB0YXNrRGVmaW5pdGlvblxuKTtcblxuLy8gQ3JlYXRlIHRoZSBleGVjdXRpb25cbmNvbnN0IGV4ZWN1dGlvbiA9IGF3YWl0IGNsaWVudC5leGVjdXRpb25zLmNyZWF0ZShcbiAgdGFzay5pZCxcbiAge1xuICAgIGlucHV0OiB7IFxuICAgICAgXCJ0b3BpY1wiOiBcImFydGlmaWNpYWwgaW50ZWxsaWdlbmNlXCIsXG4gICAgICBcIm51bVxcX3F1ZXN0aW9uc1wiOiAzMFxuICAgIH1cbiAgfVxuKTtcblxuLy8gV2FpdCBmb3IgdGhlIGV4ZWN1dGlvbiB0byBjb21wbGV0ZVxubGV0IHJlc3VsdDtcbndoaWxlICh0cnVlKSB7XG4gIHJlc3VsdCA9IGF3YWl0IGNsaWVudC5leGVjdXRpb25zLmdldChleGVjdXRpb24uaWQpO1xuICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3N1Y2NlZWRlZCcgfHwgcmVzdWx0LnN0YXR1cyA9PT0gJ2ZhaWxlZCcpIGJyZWFrO1xuICBjb25zb2xlLmxvZyhyZXN1bHQuc3RhdHVzKTtcbiAgYXdhaXQgbmV3IFByb21pc2UocmVzb2x2ZSA9XFw+IHNldFRpbWVvdXQocmVzb2x2ZSwgMTAwMCkpO1xufVxuXG4vLyBQcmludCB0aGUgcmVzdWx0XG5pZiAocmVzdWx0LnN0YXR1cyA9PT0gJ3N1Y2NlZWRlZCcpIHtcbiAgY29uc29sZS5sb2cocmVzdWx0Lm91dHB1dCk7XG59IGVsc2Uge1xuICBjb25zb2xlLmVycm9yKFxcYEVycm9yOiAke3Jlc3VsdC5lcnJvcn1cXGApO1xufVxuXFxgXFxgXFxgXG48L2RldGFpbHNcXD5cbjwvYnJcXD5cblxuSW4gdGhpcyBleGFtcGxlLCBKdWxlcCB3aWxsIGF1dG9tYXRpY2FsbHkgbWFuYWdlIHBhcmFsbGVsIGV4ZWN1dGlvbnMsIHJldHJ5IGZhaWxlZCBzdGVwcywgcmVzZW5kIEFQSSByZXF1ZXN0cywgYW5kIGtlZXAgdGhlIHRhc2tzIHJ1bm5pbmcgcmVsaWFibHkgdW50aWwgY29tcGxldGlvbi5cblxuXFw+IFRoaXMgcnVucyBpbiB1bmRlciAzMCBzZWNvbmRzIGFuZCByZXR1cm5zIHRoZSBmb2xsb3dpbmcgb3V0cHV0OlxuXG48cCBhbGlnbj1cImp1c3RpZnlcIlxcPlxuXG48ZGV0YWlsc1xcPlxuPHN1bW1hcnlcXD48YlxcPlJlc2VhcmNoIFN1bW1hcnkgZm9yIEFJPC9iXFw+IDxpXFw+KENsaWNrIHRvIGV4cGFuZCk8L2lcXD48L3N1bW1hcnlcXD5cblxuXFw+IFxcKlxcKlJlc2VhcmNoIFN1bW1hcnkgZm9yIEFJXFwqXFwqXG5cXD5cblxcPiAjIyMgU3VtbWFyeSBvZiBSZXNlYXJjaCBSZXN1bHRzIG9uIEFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIChBSSlcblxcPlxuXFw+ICMjIyMgSW50cm9kdWN0aW9uXG5cXD5cblxcPiBUaGUgZmllbGQgb2YgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgKEFJKSBoYXMgc2VlbiBzaWduaWZpY2FudCBhZHZhbmNlbWVudHMgaW4gcmVjZW50IHllYXJzLCBtYXJrZWQgYnkgdGhlIGRldmVsb3BtZW50IG9mIG1ldGhvZHMgYW5kIHRlY2hub2xvZ2llcyB0aGF0IGVuYWJsZSBtYWNoaW5lcyB0byBwZXJjZWl2ZSB0aGVpciBlbnZpcm9ubWVudCwgbGVhcm4gZnJvbSBkYXRhLCBhbmQgbWFrZSBkZWNpc2lvbnMuIFRoZSBwcmltYXJ5IGZvY3VzIG9mIHRoaXMgc3VtbWFyeSBpcyBvbiB0aGUgaW5zaWdodHMgZGVyaXZlZCBmcm9tIHZhcmlvdXMgcmVzZWFyY2ggZmluZGluZ3MgcmVsYXRlZCB0byBBSS5cblxcPlxuXFw+ICMjIyMgS2V5IEZpbmRpbmdzXG5cXD5cblxcPiAxLiBcXCpcXCpEZWZpbml0aW9uIGFuZCBTY29wZSBvZiBBSVxcKlxcKjpcblxcPlxuXFw+ICAgIC0gQUkgaXMgZGVmaW5lZCBhcyBhIGJyYW5jaCBvZiBjb21wdXRlciBzY2llbmNlIGZvY3VzZWQgb24gY3JlYXRpbmcgc3lzdGVtcyB0aGF0IGNhbiBwZXJmb3JtIHRhc2tzIHJlcXVpcmluZyBodW1hbi1saWtlIGludGVsbGlnZW5jZSwgaW5jbHVkaW5nIGxlYXJuaW5nLCByZWFzb25pbmcsIGFuZCBwcm9ibGVtLXNvbHZpbmcgKFdpa2lwZWRpYSkuXG5cXD4gICAgLSBJdCBlbmNvbXBhc3NlcyB2YXJpb3VzIHN1YmZpZWxkcywgaW5jbHVkaW5nIG1hY2hpbmUgbGVhcm5pbmcsIG5hdHVyYWwgbGFuZ3VhZ2UgcHJvY2Vzc2luZywgcm9ib3RpY3MsIGFuZCBjb21wdXRlciB2aXNpb24uXG5cXD5cblxcPiAyLiBcXCpcXCpJbXBhY3QgYW5kIEFwcGxpY2F0aW9uc1xcKlxcKjpcblxcPlxuXFw+ICAgIC0gQUkgdGVjaG5vbG9naWVzIGFyZSBiZWluZyBpbnRlZ3JhdGVkIGludG8gbnVtZXJvdXMgc2VjdG9ycywgaW1wcm92aW5nIGVmZmljaWVuY3kgYW5kIHByb2R1Y3Rpdml0eS4gQXBwbGljYXRpb25zIHJhbmdlIGZyb20gYXV0b25vbW91cyB2ZWhpY2xlcyBhbmQgaGVhbHRoY2FyZSBkaWFnbm9zdGljcyB0byBjdXN0b21lciBzZXJ2aWNlIGF1dG9tYXRpb24gYW5kIGZpbmFuY2lhbCBmb3JlY2FzdGluZyAoT3BlbkFJKS5cblxcPiAgICAtIEdvb2dsZSdzIGNvbW1pdG1lbnQgdG8gbWFraW5nIEFJIGJlbmVmaWNpYWwgZm9yIGV2ZXJ5b25lIGhpZ2hsaWdodHMgaXRzIHBvdGVudGlhbCB0byBzaWduaWZpY2FudGx5IGltcHJvdmUgZGFpbHkgbGlmZSBieSBlbmhhbmNpbmcgdXNlciBleHBlcmllbmNlcyBhY3Jvc3MgdmFyaW91cyBwbGF0Zm9ybXMgKEdvb2dsZSBBSSkuXG5cXD5cblxcPiAzLiBcXCpcXCpFdGhpY2FsIENvbnNpZGVyYXRpb25zXFwqXFwqOlxuXFw+XG5cXD4gICAgLSBUaGVyZSBpcyBhbiBvbmdvaW5nIGRpc2NvdXJzZSByZWdhcmRpbmcgdGhlIGV0aGljYWwgaW1wbGljYXRpb25zIG9mIEFJLCBpbmNsdWRpbmcgY29uY2VybnMgYWJvdXQgcHJpdmFjeSwgYmlhcywgYW5kIGFjY291bnRhYmlsaXR5IGluIGRlY2lzaW9uLW1ha2luZyBwcm9jZXNzZXMuIFRoZSBuZWVkIGZvciBhIGZyYW1ld29yayB0aGF0IGVuc3VyZXMgdGhlIHNhZmUgYW5kIHJlc3BvbnNpYmxlIHVzZSBvZiBBSSB0ZWNobm9sb2dpZXMgaXMgZW1waGFzaXplZCAoT3BlbkFJKS5cblxcPlxuXFw+IDQuIFxcKlxcKkxlYXJuaW5nIE1lY2hhbmlzbXNcXCpcXCo6XG5cXD5cblxcPiAgICAtIEFJIHN5c3RlbXMgdXRpbGl6ZSBkaWZmZXJlbnQgbGVhcm5pbmcgbWVjaGFuaXNtcywgc3VjaCBhcyBzdXBlcnZpc2VkIGxlYXJuaW5nLCB1bnN1cGVydmlzZWQgbGVhcm5pbmcsIGFuZCByZWluZm9yY2VtZW50IGxlYXJuaW5nLiBUaGVzZSBtZXRob2RzIGFsbG93IEFJIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugb3ZlciB0aW1lIGJ5IGxlYXJuaW5nIGZyb20gcGFzdCBleHBlcmllbmNlcyBhbmQgZGF0YSAoV2lraXBlZGlhKS5cblxcPiAgICAtIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHN1cGVydmlzZWQgYW5kIHVuc3VwZXJ2aXNlZCBsZWFybmluZyBpcyBjcml0aWNhbDsgc3VwZXJ2aXNlZCBsZWFybmluZyByZWxpZXMgb24gbGFiZWxlZCBkYXRhLCB3aGlsZSB1bnN1cGVydmlzZWQgbGVhcm5pbmcgaWRlbnRpZmllcyBwYXR0ZXJucyB3aXRob3V0IHByZWRlZmluZWQgbGFiZWxzIChVbnN1cGVydmlzZWQpLlxuXFw+XG5cXD4gNS4gXFwqXFwqRnV0dXJlIERpcmVjdGlvbnNcXCpcXCo6XG5cXD4gICAgLSBGdXR1cmUgQUkgZGV2ZWxvcG1lbnRzIGFyZSBleHBlY3RlZCB0byBmb2N1cyBvbiBlbmhhbmNpbmcgdGhlIGludGVycHJldGFiaWxpdHkgYW5kIHRyYW5zcGFyZW5jeSBvZiBBSSBzeXN0ZW1zLCBlbnN1cmluZyB0aGF0IHRoZXkgY2FuIHByb3ZpZGUganVzdGlmaWFibGUgZGVjaXNpb25zIGFuZCBhY3Rpb25zIChPcGVuQUkpLlxuXFw+ICAgIC0gVGhlcmUgaXMgYWxzbyBhIHB1c2ggdG93YXJkcyBtYWtpbmcgQUkgc3lzdGVtcyBtb3JlIGFjY2Vzc2libGUgYW5kIHVzZXItZnJpZW5kbHksIGVuY291cmFnaW5nIGJyb2FkZXIgYWRvcHRpb24gYWNyb3NzIGRpZmZlcmVudCBkZW1vZ3JhcGhpY3MgYW5kIGluZHVzdHJpZXMgKEdvb2dsZSBBSSkuXG5cXD5cblxcPiAjIyMjIENvbmNsdXNpb25cblxcPlxuXFw+IEFJIHJlcHJlc2VudHMgYSB0cmFuc2Zvcm1hdGl2ZSBmb3JjZSBhY3Jvc3MgbXVsdGlwbGUgZG9tYWlucywgcHJvbWlzaW5nIHRvIHJlc2hhcGUgaW5kdXN0cmllcyBhbmQgaW1wcm92ZSBxdWFsaXR5IG9mIGxpZmUuIEhvd2V2ZXIsIGFzIGl0cyBjYXBhYmlsaXRpZXMgZXhwYW5kLCBpdCBpcyBjcnVjaWFsIHRvIGFkZHJlc3MgdGhlIGV0aGljYWwgYW5kIHNvY2lldGFsIGltcGxpY2F0aW9ucyB0aGF0IGFyaXNlLiBDb250aW51ZWQgcmVzZWFyY2ggYW5kIGNvbGxhYm9yYXRpb24gYW1vbmcgdGVjaG5vbG9naXN0cywgZXRoaWNpc3RzLCBhbmQgcG9saWN5bWFrZXJzIHdpbGwgYmUgZXNzZW50aWFsIGluIG5hdmlnYXRpbmcgdGhlIGZ1dHVyZSBsYW5kc2NhcGUgb2YgQUkuXG5cbjwvZGV0YWlsc1xcPlxuXG4jIyMgV2hhdCdzIE5leHQ/XG5cbi0g8J+TmiBFeHBsb3JlIG1vcmUgZXhhbXBsZXMgaW4gb3VyIFxcW0Nvb2tib29rXFxdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWxlcC1haS9qdWxlcC90cmVlL2Rldi9jb29rYm9va3MpXG4tIPCflKcgTGVhcm4gYWJvdXQgXFxbVG9vbCBJbnRlZ3JhdGlvblxcXShodHRwczovL2RvY3MuanVsZXAuYWkvZG9jcy90b29scy9vdmVydmlldylcbi0g8J+noCBVbmRlcnN0YW5kIFxcW0FnZW50IE1lbW9yeVxcXShodHRwczovL2RvY3MuanVsZXAuYWkvZG9jcy9hZ2VudHMvbWVtb3J5KVxuLSDwn5SEIERpdmUgaW50byBcXFtDb21wbGV4IFdvcmtmbG93c1xcXShodHRwczovL2RvY3MuanVsZXAuYWkvZG9jcy90YXNrcy93b3JrZmxvd3MpXG5cblxcPiBcXFshVElQXFxdXG5cXD4g8J+SoSBDaGVja291dCBtb3JlIHR1dG9yaWFscyBpbiB0aGUgXFxbVHV0b3JpYWxzXFxdKGh0dHBzOi8vZG9jcy5qdWxlcC5haS9kb2NzL3R1dG9yaWFscy8pIHNlY3Rpb24gb2YgdGhlIGRvY3VtZW50YXRpb24uXG5cXD4gXG5cXD4g8J+SoSBJZiB5b3UgYXJlIGEgYmVnaW5uZXIsIHdlIHJlY29tbWVuZCBzdGFydGluZyB3aXRoIHRoZSBcXFtRdWlja3N0YXJ0IEd1aWRlXFxdKGh0dHBzOi8vZG9jcy5qdWxlcC5haS9kb2NzL2ludHJvZHVjdGlvbi9xdWlja3N0YXJ0KS5cblxcPiBcblxcPiDwn5KhIElmIHlvdSBhcmUgbG9va2luZyBmb3IgbW9yZSBpZGVhcywgY2hlY2sgb3V0IHRoZSBcXFtJZGVhc1xcXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXAvYmxvYi9kZXYvY29va2Jvb2tzL0lERUFTLm1kKSBzZWN0aW9uIG9mIHRoZSByZXBvc2l0b3J5LlxuXFw+IFxuXFw+IPCfkqEgSWYgeW91IG1vcmUgaW50byBjb29rYm9vayBzdHlsZSByZWNpcGVzLCBjaGVjayBvdXQgdGhlIFxcW0Nvb2tib29rXFxdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWxlcC1haS9qdWxlcC90cmVlL2Rldi9jb29rYm9va3MpIHNlY3Rpb24gb2YgdGhlIHJlcG9zaXRvcnkuXG4tLS1cblxuIyMg8J+UjSBSZWZlcmVuY2VcblxuIyMjIPCfk5ogU0RLIFJlZmVyZW5jZVxuXG4tIFxcKlxcKk5vZGUuanNcXCpcXCogXFxbU0RLIFJlZmVyZW5jZVxcXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvbm9kZS1zZGsvYmxvYi9tYWluL2FwaS5tZCkgfCBcXFtOUE0gUGFja2FnZVxcXShodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9AanVsZXAvc2RrKVxuLSBcXCpcXCpQeXRob25cXCpcXCogXFxbU0RLIFJlZmVyZW5jZVxcXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvcHl0aG9uLXNkay9ibG9iL21haW4vYXBpLm1kKSB8IFxcW1B5UEkgUGFja2FnZVxcXShodHRwczovL3B5cGkub3JnL3Byb2plY3QvanVsZXAvKVxuXG4jIyMg8J+boO+4jyBBUEkgUmVmZXJlbmNlXG5cbkV4cGxvcmUgb3VyIEFQSSBkb2N1bWVudGF0aW9uIHRvIGxlYXJuIG1vcmUgYWJvdXQgYWdlbnRzLCB0YXNrcywgdG9vbHMsIGFuZCB0aGUgSnVsZXAgQ0xJIGhlcmU6IFxcW0FQSSBSZWZlcmVuY2VcXF0oaHR0cHM6Ly9kb2NzLmp1bGVwLmFpL2FwaS1yZWZlcmVuY2UvKVxuXG4tLS1cblxuIyMg8J+SuyBMb2NhbCBTZXR1cFxuXG4jIyMgMS4gQ2xvbmUgdGhlIFJlcG9zaXRvcnlcblxuQ2xvbmUgdGhlIHJlcG9zaXRvcnkgZnJvbSB5b3VyIHByZWZlcnJlZCBzb3VyY2U6XG5cblxcYFxcYFxcYGJhc2hcbmdpdCBjbG9uZSA8cmVwb3NpdG9yeVxcX3VybFxcPlxuXFxgXFxgXFxgXG5cbiMjIyAyLiBOYXZpZ2F0ZSB0byB0aGUgUm9vdCBEaXJlY3RvcnlcblxuQ2hhbmdlIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdDpcblxuXFxgXFxgXFxgYmFzaFxuY2QgPHJlcG9zaXRvcnlcXF9yb290XFw+XG5cXGBcXGBcXGBcblxuIyMjIDMuIFNldCBVcCBFbnZpcm9ubWVudCBWYXJpYWJsZXNcblxuLSBDcmVhdGUgYSBcXGAuZW52XFxgIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5LlxuLSBSZWZlciB0byB0aGUgXFxgLmVudi5leGFtcGxlXFxgIGZpbGUgZm9yIGEgbGlzdCBvZiByZXF1aXJlZCB2YXJpYWJsZXMuXG4tIEVuc3VyZSB0aGF0IGFsbCBuZWNlc3NhcnkgdmFyaWFibGVzIGFyZSBzZXQgaW4gdGhlIFxcYC5lbnZcXGAgZmlsZS5cblxuIyMjIDQuIENyZWF0ZSBhIERvY2tlciBWb2x1bWUgZm9yIEJhY2t1cFxuXG5DcmVhdGUgYSBEb2NrZXIgdm9sdW1lIG5hbWVkIFxcYGdyYWZhbmFcXF9kYXRhXFxgLCBcXGBtZW1vcnlcXF9zdG9yZVxcX2RhdGFcXGAsIFxcYHRlbXBvcmFsLWRiLWRhdGFcXGAsIFxcYHByb21ldGhldXNcXF9kYXRhXFxgLCBcXGBzZWFkd2VlZGZzXFxfZGF0YVxcYDpcblxuXFxgXFxgXFxgYmFzaFxuZG9ja2VyIHZvbHVtZSBjcmVhdGUgZ3JhZmFuYVxcX2RhdGFcbmRvY2tlciB2b2x1bWUgY3JlYXRlIG1lbW9yeVxcX3N0b3JlXFxfZGF0YVxuZG9ja2VyIHZvbHVtZSBjcmVhdGUgdGVtcG9yYWwtZGItZGF0YVxuZG9ja2VyIHZvbHVtZSBjcmVhdGUgcHJvbWV0aGV1c1xcX2RhdGFcbmRvY2tlciB2b2x1bWUgY3JlYXRlIHNlYWR3ZWVkZnNcXF9kYXRhXG5cXGBcXGBcXGBcblxuIyMjIDUuIFJ1biB0aGUgUHJvamVjdCB1c2luZyBEb2NrZXIgQ29tcG9zZVxuXG5Zb3UgY2FuIHJ1biB0aGUgcHJvamVjdCBpbiB0d28gZGlmZmVyZW50IG1vZGVzOiBcXCpcXCpTaW5nbGUgVGVuYW50XFwqXFwqIG9yIFxcKlxcKk11bHRpLVRlbmFudFxcKlxcKi4gQ2hvb3NlIG9uZSBvZiB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGJhc2VkIG9uIHlvdXIgcmVxdWlyZW1lbnQ6XG5cbjEuIFNpbmdsZS1UZW5hbnQgTW9kZVxuXG5SdW4gdGhlIHByb2plY3QgaW4gc2luZ2xlLXRlbmFudCBtb2RlOlxuXG5cXGBcXGBcXGBiYXNoXG5kb2NrZXIgY29tcG9zZSAtLWVudi1maWxlIC5lbnYgLS1wcm9maWxlIHRlbXBvcmFsLXVpIC0tcHJvZmlsZSBzaW5nbGUtdGVuYW50IC0tcHJvZmlsZSBzZWxmLWhvc3RlZC1kYiAtLXByb2ZpbGUgYmxvYi1zdG9yZSAtLXByb2ZpbGUgdGVtcG9yYWwtdWktcHVibGljIHVwIC0tYnVpbGQgLS1mb3JjZS1yZWNyZWF0ZSAtLXdhdGNoXG5cXGBcXGBcXGBcblxuXFw+IFxcKlxcKk5vdGU6XFwqXFwqIEluIHNpbmdsZS10ZW5hbnQgbW9kZSwgeW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBTREsgZGlyZWN0bHkgd2l0aG91dCB0aGUgbmVlZCBmb3IgdGhlIEFQSSBLRVkuXG5cbjIuIE11bHRpLVRlbmFudCBNb2RlXG5cblJ1biB0aGUgcHJvamVjdCBpbiBtdWx0aS10ZW5hbnQgbW9kZTpcblxuXFxgXFxgXFxgYmFzaFxuZG9ja2VyIGNvbXBvc2UgLS1lbnYtZmlsZSAuZW52IC0tcHJvZmlsZSB0ZW1wb3JhbC11aSAtLXByb2ZpbGUgbXVsdGktdGVuYW50IC0tcHJvZmlsZSBlbWJlZGRpbmctY3B1IC0tcHJvZmlsZSBzZWxmLWhvc3RlZC1kYiAtLXByb2ZpbGUgYmxvYi1zdG9yZSAtLXByb2ZpbGUgdGVtcG9yYWwtdWktcHVibGljIHVwIC0tZm9yY2UtcmVjcmVhdGUgLS1idWlsZCAtLXdhdGNoXG5cXGBcXGBcXGBcblxuXFw+IFxcKlxcKk5vdGU6XFwqXFwqIEluIG11bHRpLXRlbmFudCBtb2RlLCB5b3UgbmVlZCB0byBnZW5lcmF0ZSBhIEpXVCB0b2tlbiBsb2NhbGx5IHRoYXQgYWN0IGFzIGFuIEFQSSBLRVkgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgU0RLLlxuXG5HZW5lcmF0ZSBhIEpXVCBUb2tlbiAoT25seSBmb3IgTXVsdGktVGVuYW50IE1vZGUpXG5cblRvIGdlbmVyYXRlIGEgSldUIHRva2VuLCBcXGBqd3QtY2xpXFxgIGlzIHJlcXVpcmVkLiBLaW5kbHkgaW5zdGFsbCB0aGUgc2FtZSBiZWZvcmUgcHJvY2VlZGluZyB3aXRoIHRoZSBuZXh0IHN0ZXBzLlxuXG5Vc2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGFuZCByZXBsYWNlIFxcYEpXVFxcX1NIQVJFRFxcX0tFWVxcYCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIGtleSBmcm9tIHlvdXIgXFxgLmVudlxcYCBmaWxlIHRvIGdlbmVyYXRlIGEgSldUIHRva2VuOlxuXG5cXGBcXGBcXGBiYXNoXG5qd3QgZW5jb2RlIC0tc2VjcmV0IEpXVFxcX1NIQVJFRFxcX0tFWSAtLWFsZyBIUzUxMiAtLWV4cD0kKGRhdGUgLWQgJysxMCBkYXlzJyArJXMpIC0tc3ViICcwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAnICd7fSdcblxcYFxcYFxcYFxuXG5UaGlzIGNvbW1hbmQgZ2VuZXJhdGVzIGEgSldUIHRva2VuIHRoYXQgd2lsbCBiZSB2YWxpZCBmb3IgMTAgZGF5cy5cblxuIyMjIDYuIEludGVyYWN0aW9uXG5cbi0gXFwqXFwqVGVtcG9yYWwgVUlcXCpcXCo6IFlvdSBjYW4gYWNjZXNzIHRoZSBUZW1wb3JhbCBVSSB0aHJvdWdoIHRoZSBzcGVjaWZpZWQgcG9ydCBpbiB5b3VyIFxcYC5lbnZcXGAgZmlsZS5cbi0gXFwqXFwqSnVsZXAgU0RLXFwqXFwqOiBUaGUgSnVsZXAgU0RLIGlzIGEgUHl0aG9uL05vZGUuanMgbGlicmFyeSB0aGF0IGFsbG93cyB5b3UgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgSnVsZXAgQVBJLlxuXG5cXGBcXGBcXGBweXRob25cbmZyb20ganVsZXAgaW1wb3J0IENsaWVudFxuXG5jbGllbnQgPSBDbGllbnQoYXBpXFxfa2V5PVwieW91clxcX2p3dFxcX3Rva2VuXCIpXG5cXGBcXGBcXGBcblxuXFwqXFwqTm90ZTpcXCpcXCogU0RLIGluIE11bHRpLVRlbmFudCBtb2RlLCB5b3UgbmVlZCB0byBnZW5lcmF0ZSBhIEpXVCB0b2tlbiBsb2NhbGx5IHRoYXQgYWN0cyBhcyBhbiBBUEkgS0VZIHRvIGludGVyYWN0IHdpdGggdGhlIFNESy4gRnVydGhlcm1vcmUsIHdoaWxlIGluaXRpYWxpemluZyB0aGUgY2xpZW50IHlvdSB3aWxsIG5lZWQgdG8gc2V0IHRoZSBlbnZpcm9ubWVudCB0byBcXGBsb2NhbFxcX211bHRpXFxfdGVuYW50XFxgIGFuZCB0aGUgYXBpIGtleSB0byB0aGUgSldUIHRva2VuIHlvdSBnZW5lcmF0ZWQgaW4gdGhlIHByZXZpb3VzIHN0ZXAuIFdoZXJlYXMgaW4gU2luZ2xlLVRlbmFudCBtb2RlIHlvdSBjYW4gaW50ZXJhY3Qgd2l0aCB0aGUgU0RLIGRpcmVjdGx5IHdpdGhvdXQgdGhlIG5lZWQgZm9yIHRoZSBBUEkgS0VZIGFuZCBzZXQgdGhlIGVudmlyb25tZW50IHRvIFxcYGxvY2FsXFxgLlxuXG4jIyMgNy4gVHJvdWJsZXNob290aW5nXG5cbi0gRW5zdXJlIHRoYXQgYWxsIHJlcXVpcmVkIERvY2tlciBpbWFnZXMgYXJlIGF2YWlsYWJsZS5cbi0gQ2hlY2sgZm9yIG1pc3NpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHRoZSBcXGAuZW52XFxgIGZpbGUuXG4tIFVzZSB0aGUgXFxgZG9ja2VyIGNvbXBvc2UgbG9nc1xcYCBjb21tYW5kIHRvIHZpZXcgZGV0YWlsZWQgbG9ncyBmb3IgZGVidWdnaW5nLlxuXG4tLS1cblxuIyMg8J+RpSBDb250cmlidXRvcnNcblxuPGgzXFw+Sm9pbiBPdXIgQ29tbXVuaXR5ISDwn4yfPC9oM1xcPlxuXG5XZSdyZSBleGNpdGVkIHRvIHdlbGNvbWUgbmV3IGNvbnRyaWJ1dG9ycyB0byB0aGUgSnVsZXAgcHJvamVjdCEgV2UndmUgY3JlYXRlZCBzZXZlcmFsIFwiZ29vZCBmaXJzdCBpc3N1ZXNcIiB0byBoZWxwIHlvdSBnZXQgc3RhcnRlZC5cblxuPGg0XFw+SG93IHRvIENvbnRyaWJ1dGU6PC9oNFxcPlxuXG4xLiDwn5OWIENoZWNrIG91dCBvdXIgXFxbQ09OVFJJQlVUSU5HLm1kXFxdKGh0dHBzOi8vZ2l0aHViLmNvbS9qdWxlcC1haS9qdWxlcC9ibG9iL2Rldi9DT05UUklCVVRJTkcubWQpIGZpbGUgZm9yIGd1aWRlbGluZXNcbjIuIPCflI0gQnJvd3NlIG91ciBcXFtnb29kIGZpcnN0IGlzc3Vlc1xcXShodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXAvaXNzdWVzP3E9aXMlM0Fpc3N1ZStpcyUzQW9wZW4rbGFiZWwlM0ElMjJnb29kK2ZpcnN0K2lzc3VlJTIyKVxuMy4g8J+SrCBKb2luIG91ciBcXFtEaXNjb3JkXFxdKGh0dHBzOi8vZGlzY29yZC5jb20vaW52aXRlL0pUU0JHUlpyemopIGZvciBoZWxwIGFuZCBkaXNjdXNzaW9uc1xuXG48YnIvXFw+XG5cbllvdXIgY29udHJpYnV0aW9ucywgYmlnIG9yIHNtYWxsLCBhcmUgdmFsdWFibGUgdG8gdXMuIExldCdzIGJ1aWxkIHNvbWV0aGluZyBhbWF6aW5nIHRvZ2V0aGVyISDwn5qAXG5cbjxoNFxcPk91ciBBbWF6aW5nIENvbnRyaWJ1dG9yczo8L2g0XFw+XG5cbjxhIGhyZWY9XCJodHRwczovL2dpdGh1Yi5jb20vanVsZXAtYWkvanVsZXAvZ3JhcGhzL2NvbnRyaWJ1dG9yc1wiXFw+XG4gIDxpbWcgc3JjPVwiaHR0cHM6Ly9jb250cmliLnJvY2tzL2ltYWdlP3JlcG89anVsZXAtYWkvanVsZXBcIiAvXFw+XG48L2FcXD5cblxuLS0tXG5cbiMjIPCfk4QgTGljZW5zZVxuXG5KdWxlcCBpcyBsaWNlbnNlZCB1bmRlciB0aGUgXFxbQXBhY2hlIExpY2Vuc2UgMi4wXFxdKExJQ0VOU0UpLiBcblxuU2VlIHRoZSBMSUNFTlNFIGZpbGUgZm9yIG1vcmUgZGV0YWlscy5cblxuLS0tIiwidXNhZ2UiOnsidG9rZW5zIjo2OTU1fX19', 'headers': {'nel': '{\\\"success_fraction\\\":0,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'date': 'Wed, 19 Feb 2025 07:26:25 GMT', 'cf-ray': '9144872f0f7e42d8-EWR', 'server': 'cloudflare', 'alt-svc': 'h3=\\\":443\\\"; ma=86400', 'report-to': '{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\\\\\/\\\\\\\\/a.nel.cloudflare.com\\\\\\\\/report\\\\\\\\/v4?s=f6cIUksKpKFaiWGkTu7mxGZQXrQJ3MP0PAUJBAqLIXqrCRy2FYmf4izvPqtJrOS8qyNC5xTFElccXSeVaTThb5zPseWCmZM3SMedVJ8tPhmrMxHbB%2BgZtgskUA%3D%3D\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}', 'connection': 'keep-alive', 'content-type': 'application/json; charset=utf-8', 'x-powered-by': 'Express', 'server-timing': 'cfL4;desc=\\\"?proto=TCP&rtt=19279&min_rtt=17064&rtt_var=7981&sent=5&recv=6&lost=0&retrans=0&sent_bytes=2827&recv_bytes=1044&delivery_rate=166432&cwnd=225&unsent_bytes=0&cid=426011000fd2f484&ts=5271&x=0\\\"', 'cf-cache-status': 'DYNAMIC', 'content-encoding': 'gzip', 'transfer-encoding': 'chunked', 'x-cloud-trace-context': '9d239ad7b021427fd3db65995a657a4f'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'analysis': [[{'themes_and_patterns': {'tone': 'Casual and humorous', 'language': 'Portuguese', 'main_theme': 'Coincidental pattern or text', 'content_style': 'Dismissive/light-hearted observation'}, 'content_resonance_summary': 'Content resonated due to its light-hearted approach to pattern recognition or coincidences, made accessible through Portuguese language and brief video format', 'virality_engagement_drivers': {'social_proof': 'Moderate reshare count indicating content shareability', 'video_length': 'Optimal short-form duration at 11.3 seconds', 'engagement_rate': 'Above average engagement despite relatively low virality score', 'interaction_metrics': 'Balanced ratio between comments and reshares showing genuine audience interest'}}], [{'key_themes': ['AI tool announcement', 'Free access to Perplexity', 'Research capabilities', 'Educational content', 'Technology update'], 'virality_drivers': {'timing': 'Likely coincided with increased interest in AI tools', 'relevance': 'Ties to trending topics like ChatGPT and AI', 'reshare_value': 'High reshare count (464) indicates strong word-of-mouth potential', 'announcement_factor': 'Breaking news about a popular AI tool becoming free', 'hashtag_optimization': 'Strategic use of AI-related hashtags'}, 'engagement_factors': {'duration': '88.5 second video length allows for detailed explanation', 'content_type': 'Informative announcement about practical tool', 'social_proof': 'Significant play count (22,285) demonstrates content validity', 'topic_relevance': 'AI and research tools are highly relevant to current trends', 'value_proposition': 'Free access announcement'}, 'content_resonance_summary': 'The content resonated strongly due to its announcement of a free AI research tool, capitalizing on the current AI trend while providing tangible value to viewers interested in technology and research capabilities'}], [{'key_themes': ['Personal development', 'ChatGPT as a self-reflection tool', 'Belief system analysis', 'Cognitive reframing', 'Content sharing/attribution', 'Turkish language content'], 'virality_drivers': {'format_strengths': ['Short video duration (21.45s) - optimal for retention', 'Shared ChatGPT prompt template', 'Educational content'], 'engagement_factors': ['Interactive nature of the prompt', 'High utility value', 'Easy to replicate format', 'Promising personal growth', 'Clear instructions', 'Relatively high comment count (105) showing strong user interest']}, 'content_resonance_summary': 'The content resonated strongly because it provided a practical, ready-to-use ChatGPT prompt for self-discovery and personal development, making advanced psychological concepts accessible to the general audience'}]]}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  ['[\\\\n  {\\\\n    \\\"themes_and_patterns\\\": {\\\\n      \\\"main_theme\\\": \\\"Coincidental pattern or text\\\",\\\\n      \\\"language\\\": \\\"Portuguese\\\",\\\\n      \\\"tone\\\": \\\"Casual and humorous\\\",\\\\n      \\\"content_style\\\": \\\"Dismissive/light-hearted observation\\\"\\\\n    },\\\\n    \\\"virality_engagement_drivers\\\": {\\\\n      \\\"engagement_rate\\\": \\\"Above average engagement despite relatively low virality score\\\",\\\\n      \\\"video_length\\\": \\\"Optimal short-form duration at 11.3 seconds\\\",\\\\n      \\\"social_proof\\\": \\\"Moderate reshare count indicating content shareability\\\",\\\\n      \\\"interaction_metrics\\\": \\\"Balanced ratio between comments and reshares showing genuine audience interest\\\"\\\\n    },\\\\n    \\\"content_resonance_summary\\\": \\\"Content resonated due to its light-hearted approach to pattern recognition or coincidences, made accessible through Portuguese language and brief video format\\\"\\\\n  }\\\\n]', '[\\\\n  {\\\\n    \\\"key_themes\\\": [\\\\n      \\\"AI tool announcement\\\",\\\\n      \\\"Free access to Perplexity\\\",\\\\n      \\\"Research capabilities\\\",\\\\n      \\\"Educational content\\\",\\\\n      \\\"Technology update\\\"\\\\n    ],\\\\n    \\\"virality_drivers\\\": {\\\\n      \\\"announcement_factor\\\": \\\"Breaking news about a popular AI tool becoming free\\\",\\\\n      \\\"relevance\\\": \\\"Ties to trending topics like ChatGPT and AI\\\",\\\\n      \\\"hashtag_optimization\\\": \\\"Strategic use of AI-related hashtags\\\",\\\\n      \\\"reshare_value\\\": \\\"High reshare count (464) indicates strong word-of-mouth potential\\\",\\\\n      \\\"timing\\\": \\\"Likely coincided with increased interest in AI tools\\\"\\\\n    },\\\\n    \\\"engagement_factors\\\": {\\\\n      \\\"value_proposition\\\": \\\"Free access announcement\\\",\\\\n      \\\"topic_relevance\\\": \\\"AI and research tools are highly relevant to current trends\\\",\\\\n      \\\"content_type\\\": \\\"Informative announcement about practical tool\\\",\\\\n      \\\"duration\\\": \\\"88.5 second video length allows for detailed explanation\\\",\\\\n      \\\"social_proof\\\": \\\"Significant play count (22,285) demonstrates content validity\\\"\\\\n    },\\\\n    \\\"content_resonance_summary\\\": \\\"The content resonated strongly due to its announcement of a free AI research tool, capitalizing on the current AI trend while providing tangible value to viewers interested in technology and research capabilities\\\"\\\\n  }\\\\n]', '[\\\\n  {\\\\n    \\\"key_themes\\\": [\\\\n      \\\"Personal development\\\",\\\\n      \\\"ChatGPT as a self-reflection tool\\\",\\\\n      \\\"Belief system analysis\\\",\\\\n      \\\"Cognitive reframing\\\",\\\\n      \\\"Content sharing/attribution\\\",\\\\n      \\\"Turkish language content\\\"\\\\n    ],\\\\n    \\\"virality_drivers\\\": {\\\\n      \\\"engagement_factors\\\": [\\\\n        \\\"Interactive nature of the prompt\\\",\\\\n        \\\"High utility value\\\",\\\\n        \\\"Easy to replicate format\\\",\\\\n        \\\"Promising personal growth\\\",\\\\n        \\\"Clear instructions\\\",\\\\n        \\\"Relatively high comment count (105) showing strong user interest\\\"\\\\n      ],\\\\n      \\\"format_strengths\\\": [\\\\n        \\\"Short video duration (21.45s) - optimal for retention\\\",\\\\n        \\\"Shared ChatGPT prompt template\\\",\\\\n        \\\"Educational content\\\"\\\\n      ]\\\\n    },\\\\n    \\\"content_resonance_summary\\\": \\\"The content resonated strongly because it provided a practical, ready-to-use ChatGPT prompt for self-discovery and personal development, making advanced psychological concepts accessible to the general audience\\\"\\\\n  }\\\\n]']\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  [\\n\",\n      \"  {\\n\",\n      \"    \\\"key_themes\\\": [\\n\",\n      \"      \\\"AI tool announcement\\\",\\n\",\n      \"      \\\"Free access to Perplexity\\\",\\n\",\n      \"      \\\"Research capabilities\\\",\\n\",\n      \"      \\\"Educational content\\\",\\n\",\n      \"      \\\"Technology update\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"virality_drivers\\\": {\\n\",\n      \"      \\\"announcement_factor\\\": \\\"Breaking news about a popular AI tool becoming free\\\",\\n\",\n      \"      \\\"relevance\\\": \\\"Ties to trending topics like ChatGPT and AI\\\",\\n\",\n      \"      \\\"hashtag_optimization\\\": \\\"Strategic use of AI-related hashtags\\\",\\n\",\n      \"      \\\"reshare_value\\\": \\\"High reshare count (464) indicates strong word-of-mouth potential\\\",\\n\",\n      \"      \\\"timing\\\": \\\"Likely coincided with increased interest in AI tools\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"engagement_factors\\\": {\\n\",\n      \"      \\\"value_proposition\\\": \\\"Free access announcement\\\",\\n\",\n      \"      \\\"topic_relevance\\\": \\\"AI and research tools are highly relevant to current trends\\\",\\n\",\n      \"      \\\"content_type\\\": \\\"Informative announcement about practical tool\\\",\\n\",\n      \"      \\\"duration\\\": \\\"88.5 second video length allows for detailed explanation\\\",\\n\",\n      \"      \\\"social_proof\\\": \\\"Significant play count (22,285) demonstrates content validity\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"content_resonance_summary\\\": \\\"The content resonated strongly due to its announcement of a free AI research tool, capitalizing on the current AI trend while providing tangible value to viewers interested in technology and research capabilities\\\"\\n\",\n      \"  }\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  [\\n\",\n      \"  {\\n\",\n      \"    \\\"key_themes\\\": [\\n\",\n      \"      \\\"Personal development\\\",\\n\",\n      \"      \\\"ChatGPT as a self-reflection tool\\\",\\n\",\n      \"      \\\"Belief system analysis\\\",\\n\",\n      \"      \\\"Cognitive reframing\\\",\\n\",\n      \"      \\\"Content sharing/attribution\\\",\\n\",\n      \"      \\\"Turkish language content\\\"\\n\",\n      \"    ],\\n\",\n      \"    \\\"virality_drivers\\\": {\\n\",\n      \"      \\\"engagement_factors\\\": [\\n\",\n      \"        \\\"Interactive nature of the prompt\\\",\\n\",\n      \"        \\\"High utility value\\\",\\n\",\n      \"        \\\"Easy to replicate format\\\",\\n\",\n      \"        \\\"Promising personal growth\\\",\\n\",\n      \"        \\\"Clear instructions\\\",\\n\",\n      \"        \\\"Relatively high comment count (105) showing strong user interest\\\"\\n\",\n      \"      ],\\n\",\n      \"      \\\"format_strengths\\\": [\\n\",\n      \"        \\\"Short video duration (21.45s) - optimal for retention\\\",\\n\",\n      \"        \\\"Shared ChatGPT prompt template\\\",\\n\",\n      \"        \\\"Educational content\\\"\\n\",\n      \"      ]\\n\",\n      \"    },\\n\",\n      \"    \\\"content_resonance_summary\\\": \\\"The content resonated strongly because it provided a practical, ready-to-use ChatGPT prompt for self-discovery and personal development, making advanced psychological concepts accessible to the general audience\\\"\\n\",\n      \"  }\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  finish_branch\\n\",\n      \"output:  [\\n\",\n      \"  {\\n\",\n      \"    \\\"themes_and_patterns\\\": {\\n\",\n      \"      \\\"main_theme\\\": \\\"Coincidental pattern or text\\\",\\n\",\n      \"      \\\"language\\\": \\\"Portuguese\\\",\\n\",\n      \"      \\\"tone\\\": \\\"Casual and humorous\\\",\\n\",\n      \"      \\\"content_style\\\": \\\"Dismissive/light-hearted observation\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"virality_engagement_drivers\\\": {\\n\",\n      \"      \\\"engagement_rate\\\": \\\"Above average engagement despite relatively low virality score\\\",\\n\",\n      \"      \\\"video_length\\\": \\\"Optimal short-form duration at 11.3 seconds\\\",\\n\",\n      \"      \\\"social_proof\\\": \\\"Moderate reshare count indicating content shareability\\\",\\n\",\n      \"      \\\"interaction_metrics\\\": \\\"Balanced ratio between comments and reshares showing genuine audience interest\\\"\\n\",\n      \"    },\\n\",\n      \"    \\\"content_resonance_summary\\\": \\\"Content resonated due to its light-hearted approach to pattern recognition or coincidences, made accessible through Portuguese language and brief video format\\\"\\n\",\n      \"  }\\n\",\n      \"]\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'code': 'DGOBWYNO2ql', 'caption': 'Sabe que isso quer dizer?\\\\n\\\\nNada! Só coincidência👍🏻\\\\n\\\\n#chatgpt', 'hashtags': ['#chatgpt'], 'media_id': '3570797490418182821', 'username': 'edielcosta', 'full_name': 'Ediel Costa ✅', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 524, 'play_count': 76741, 'comment_count': 39, 'reshare_count': 118, 'video_duration': 11.367, 'virality_score': 0.0015376395929164331, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/323367005_585069600121511_4172307257867435770_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBIAWoQu9vYQ7kNvgF-j15C&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTzPhsVJoT7MgMoNSKnibQ1Ig1ACOk6Whp_qNYzgcWew&oe=67BB5CC7&_nc_sid=2011ad', 'engagement_score': 0.006828162260069584}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'code': 'DGFWJvQRVJM', 'caption': 'Perplexity Deep Research is Now FREE! 🧠 #ai #perplexity #artificialintelligence #aitools #deepresearch #chatgpt #openai #ainews', 'hashtags': ['#ai', '#perplexity', '#artificialintelligence', '#aitools', '#deepresearch', '#chatgpt', '#openai', '#ainews'], 'media_id': '3568355705998365260', 'username': 'mattfarmerai', 'full_name': 'Matt Farmer', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 981, 'play_count': 22285, 'comment_count': 15, 'reshare_count': 464, 'video_duration': 88.514, 'virality_score': 0.02082118016603096, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/480300557_1327542731707365_3998008904662501999_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6JjPL4wQbtUQ7kNvgH_hVej&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCBTYT5RqYW8coQIn-OudTJN5mGUKPS6bAR5VgcvMOszw&oe=67BB5669&_nc_sid=2011ad', 'engagement_score': 0.04402064168723357}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init_branch\\n\",\n      \"output:  {'code': 'DGLbJyMNqm3', 'caption': \\\"Bu fikri ilk\\\\xa0@matmazeltutu'nun hesabında görüp denedim. Herkese katkısı olabilir diye düşündüm vee metni aşağıda paylaşıyorum, kopyalayıp ChatGPT'ye yapıştırmanız yeterli. Denerseniz deneyiminizi duymak çok isterim\\\\xa0💛\\\\n\\\\nLütfen bana birer birer sorular sorarak kendim ve dünya hakkındaki mevcut inançlarımı ortaya çıkarmama yardımcı ol. Soruların hepsine cevap verdikten sonra benim daha yüksek benliğim gibi davranarak cevaplarımı analiz et ve üç temel sınırlayıcı inancımı ve üç temel geliştirici (zenginleştirici) inancımı belirle. Bu inançların gerçek kökenlerini değerlendir ve bunların nereden geldiğini anlamama yardımcı ol. Sınırlayıcı inançları yeniden çerçevelendirmeme yardımcı ol ve bunları güçlendirici anlatılara dönüştürmek için atabileceğim somut adımlar öner. Şu anda duymam gereken bir cesaret ya da bilgelik mesajını benimle paylaş.\\\\n\\\\n#chatgpt #düşüncegücü #bilişselgelişim #kişiselgelişim #yenidençerçeveleme #cesaret\\\", 'hashtags': ['#chatgpt', '#düşüncegücü', '#bilişselgelişim', '#kişiselgelişim', '#yenidençerçeveleme', '#cesaret'], 'media_id': '3570066549244340663', 'username': 'irembali', 'full_name': 'Irem Bali', 'has_audio': True, 'audio_type': 'licensed_music', 'like_count': 510, 'play_count': 35544, 'comment_count': 105, 'reshare_count': 3, 'video_duration': 21.455, 'virality_score': 8.440243079000676e-05, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/467744593_1531738867463572_2790748203634231213_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N-Ulrghy6HsQ7kNvgGA2gEV&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDv-_leXiUkxyOPZ-3FZwp6sy0lNfqSC6mlEBa1_4jlqg&oe=67BB43F7&_nc_sid=2011ad', 'engagement_score': 0.014348413234301147}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'summary': [{'code': 'DGOBWYNO2ql', 'caption': 'Sabe que isso quer dizer?\\\\n\\\\nNada! Só coincidência👍🏻\\\\n\\\\n#chatgpt', 'hashtags': ['#chatgpt'], 'media_id': '3570797490418182821', 'username': 'edielcosta', 'full_name': 'Ediel Costa ✅', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 524, 'play_count': 76741, 'comment_count': 39, 'reshare_count': 118, 'video_duration': 11.367, 'virality_score': 0.0015376395929164331, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/323367005_585069600121511_4172307257867435770_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBIAWoQu9vYQ7kNvgF-j15C&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTzPhsVJoT7MgMoNSKnibQ1Ig1ACOk6Whp_qNYzgcWew&oe=67BB5CC7&_nc_sid=2011ad', 'engagement_score': 0.006828162260069584}, {'code': 'DGFWJvQRVJM', 'caption': 'Perplexity Deep Research is Now FREE! 🧠 #ai #perplexity #artificialintelligence #aitools #deepresearch #chatgpt #openai #ainews', 'hashtags': ['#ai', '#perplexity', '#artificialintelligence', '#aitools', '#deepresearch', '#chatgpt', '#openai', '#ainews'], 'media_id': '3568355705998365260', 'username': 'mattfarmerai', 'full_name': 'Matt Farmer', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 981, 'play_count': 22285, 'comment_count': 15, 'reshare_count': 464, 'video_duration': 88.514, 'virality_score': 0.02082118016603096, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/480300557_1327542731707365_3998008904662501999_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6JjPL4wQbtUQ7kNvgH_hVej&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCBTYT5RqYW8coQIn-OudTJN5mGUKPS6bAR5VgcvMOszw&oe=67BB5669&_nc_sid=2011ad', 'engagement_score': 0.04402064168723357}, {'code': 'DGLbJyMNqm3', 'caption': \\\"Bu fikri ilk\\\\xa0@matmazeltutu'nun hesabında görüp denedim. Herkese katkısı olabilir diye düşündüm vee metni aşağıda paylaşıyorum, kopyalayıp ChatGPT'ye yapıştırmanız yeterli. Denerseniz deneyiminizi duymak çok isterim\\\\xa0💛\\\\n\\\\nLütfen bana birer birer sorular sorarak kendim ve dünya hakkındaki mevcut inançlarımı ortaya çıkarmama yardımcı ol. Soruların hepsine cevap verdikten sonra benim daha yüksek benliğim gibi davranarak cevaplarımı analiz et ve üç temel sınırlayıcı inancımı ve üç temel geliştirici (zenginleştirici) inancımı belirle. Bu inançların gerçek kökenlerini değerlendir ve bunların nereden geldiğini anlamama yardımcı ol. Sınırlayıcı inançları yeniden çerçevelendirmeme yardımcı ol ve bunları güçlendirici anlatılara dönüştürmek için atabileceğim somut adımlar öner. Şu anda duymam gereken bir cesaret ya da bilgelik mesajını benimle paylaş.\\\\n\\\\n#chatgpt #düşüncegücü #bilişselgelişim #kişiselgelişim #yenidençerçeveleme #cesaret\\\", 'hashtags': ['#chatgpt', '#düşüncegücü', '#bilişselgelişim', '#kişiselgelişim', '#yenidençerçeveleme', '#cesaret'], 'media_id': '3570066549244340663', 'username': 'irembali', 'full_name': 'Irem Bali', 'has_audio': True, 'audio_type': 'licensed_music', 'like_count': 510, 'play_count': 35544, 'comment_count': 105, 'reshare_count': 3, 'video_duration': 21.455, 'virality_score': 8.440243079000676e-05, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/467744593_1531738867463572_2790748203634231213_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N-Ulrghy6HsQ7kNvgGA2gEV&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDv-_leXiUkxyOPZ-3FZwp6sy0lNfqSC6mlEBa1_4jlqg&oe=67BB43F7&_nc_sid=2011ad', 'engagement_score': 0.014348413234301147}, {'code': 'DGNXIjwTjnH', 'caption': '🤖Ai 미니 인물 영상 제작법⬇️\\\\n\\\\n✍️댓글에 \\\"미니\\\" 라고 남기고 사이트 링크와 해당 영상에 사용된 프롬프트를 받아보세요🚀\\\\n\\\\n*원하는 Ai영상 캡처\\\\n*chatgpt에 사진 추가 후 프롬프트 요청 후 복사\\\\n*krea ai에 프롬프트 붙여넣고 이미지 생성\\\\n*Kling ai에서 이미지를 영상으로 만듬\\\\n\\\\n💫아이디어 @predmet_ai \\\\n또 다른 미니 인물 영상은 이쪽에서 참고하세요🙌\\\\n\\\\n💡저장 후 관련된 주제로 이미지 생성 시 프롬프트를 조금씩 바꿔서 Ai로 트렌디한 영상을 만들어 보세요😄\\\\n\\\\n🛰이 AI도구가 필요한 친구에게 공유해 주기!\\\\n\\\\n🧪릴스&스토리 편집 @reels_hwan\\\\n---------------------\\\\n📌<프로필 링크 확인>\\\\n*릴스&스토리 편집을 기초 클래스101강의!\\\\n*릴스 편집 기초 \\\"캡컷 전자책\\\"\\\\n*릴쏸과 함께 협업하기!\\\\n\\\\n#릴쏸 #영상편집 #AI #klingai #kreaai \\\\n#chatgpt #바이럴 #꿀팁', 'hashtags': ['#릴쏸', '#영상편집', '#AI', '#klingai', '#kreaai', '#chatgpt', '#바이럴', '#꿀팁'], 'media_id': '3570611822791637447', 'username': 'reels_hwan', 'full_name': '릴쏸 | 𝙍𝙚𝙚𝙡𝙨 & 𝙎𝙩𝙤𝙧𝙮 𝙚𝙙𝙞𝙩𝙤𝙧ᝰ', 'has_audio': True, 'audio_type': 'licensed_music', 'like_count': 1244, 'play_count': 82441, 'comment_count': 910, 'reshare_count': 636, 'video_duration': 33.227, 'virality_score': 0.007714608022707148, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/401580851_3663024007266153_1317557784313049996_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=s6vLkPCn5poQ7kNvgFcuPmR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYChazLaQosXiYW0cuxA-xZUVAa05RsZ82hehYrKNDajJw&oe=67BB67B6&_nc_sid=2011ad', 'engagement_score': 0.015089579214225931}, {'code': 'DGMihG1xD0o', 'caption': 'Acá te cuento como tener ChatGPT en Whatsapp\\\\n#whatsapp\\\\xa0 #whatsapphacks #whatsapptips #whatsapptricks #chatgpt #ia #trucosdewhatsapp #tipsandtricks #tipsytrucos #tecnologia #tecnology #gabybiondi', 'hashtags': ['#whatsapp', '#whatsapphacks', '#whatsapptips', '#whatsapptricks', '#chatgpt', '#ia', '#trucosdewhatsapp', '#tipsandtricks', '#tipsytrucos', '#tecnologia', '#tecnology', '#gabybiondi'], 'media_id': '3570380413266574632', 'username': 'gabybiondi', 'full_name': 'Gabriel Biondi', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 967, 'play_count': 29576, 'comment_count': 45, 'reshare_count': 267, 'video_duration': 68.382, 'virality_score': 0.009027589937787395, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/275661270_4935181426563929_6840284538865097687_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=-gBtH2d_Gc8Q7kNvgEl3sil&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAAQHU5dUq6qGOtF86_f1Z2B0oPw1OL4oh90edP1tK0_Q&oe=67BB3558&_nc_sid=2011ad', 'engagement_score': 0.03269542872599405}, {'code': 'DGLS-oNirJW', 'caption': 'El mundo no para de sorprenderse con los grandes avances que está teniendo la #InteligenciaArtificial con el desarrollo de nuevos modelos y actualizaciones. \\\\n\\\\nDesde que OpenAI lanzó #ChatGPT en 2022, son varias las compañías tecnológicas que han desarrollado sus propios modelos en una carrera a la que se han sumado compañías chinas y europeas. \\\\n\\\\nLa llegada de la startup china #Deepseek sacudió al mundo tecnológico en el inicio de este año luego del lanzamiento de su modelo conversacional R1. \\\\n\\\\nEsta compañía aseguró que su modelo solo requirió 5.6 millones de dólares para su desarrollo frente a los miles de millones de dólares que han tenido su competencia. Además, demostró ser más eficiente al usar menos chips. \\\\n\\\\nEste anuncio hizo caer las acciones de las grandes compañías del sector en EE.UU., entre ellas la fabricante de chips Nvidia. \\\\n\\\\nDe esta forma, el mundo está presenciando una nueva carrera tecnológica de la mano de la #IA entre dos potencias como EE.UU. y China. \\\\n\\\\nTan solo unos días después de lo ocurrido con Deepseek, el gigante de comercio electrónico chino #Alibaba también sorprendió al anunciar su propio modelo de IA denominado como Qwen2.5-Max.\\\\n\\\\nEsta compañía aseguró que su modelo avanzado de IA, que solo está disponible para desarrolladores, podría superar las capacidades de sus competidores estadounidenses como ChatGPT, #Claude y #Anthropic. \\\\n\\\\n¿Crees que la IA ya está sobrepasando las capacidades humanas? \\\\n\\\\n#PGTech #PGSecuencia', 'hashtags': ['#InteligenciaArtificial', '#ChatGPT', '#Deepseek', '#IA', '#Alibaba', '#Claude', '#Anthropic', '#PGTech', '#PGSecuencia'], 'media_id': '3570030598242873942', 'username': 'playgroundmag', 'full_name': 'PlayGround', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 1688, 'play_count': 0, 'comment_count': 3, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/72326783_2648305585255785_4475233069187465216_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kTaL01j3qbMQ7kNvgEIjDrv&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYB-wqddrUBlkofc-oYpcDr2XouQySns_w--DHdE1lBA-Q&oe=67BB42EA&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGKgjUrJL9l', 'caption': '🚀 Master Transformers & Attention Mechanisms – Free Course! 🎓\\\\n\\\\nThe Transformer model revolutionized NLP with its Self-Attention Mechanism—eliminating the limitations of RNNs & CNNs and enabling faster, more efficient language models.\\\\n\\\\n💡 If you want to deep-dive into Transformers & Attention Mechanisms, we’ve created a FREE Course: https://lnkd.in/gfHU4DQE\\\\n\\\\nWhy Transformers?\\\\n- In 2017, the \\\"Attention Is All You Need\\\" paper introduced a breakthrough:\\\\n🔹No Sequential Bottleneck – Unlike RNNs, Transformers process input in parallel\\\\n🔹Handles Long-Range Dependencies – No vanishing gradients, no context loss\\\\n🔹Self-Attention Mechanism – Models relationships between all tokens at once\\\\n\\\\nTransformer Architecture (High-Level Overview)\\\\n💡 Encoder: Converts input into contextual embeddings\\\\n💡 Decoder: Uses embeddings + self-attention to generate output\\\\n\\\\n🔥 Understanding Attention Mechanisms\\\\n\\\\nAttention is the core of Transformers, dynamically assigning importance to different tokens:\\\\n🔹Self-Attention – Tokens attend to all others (e.g., BERT, GPT)\\\\n🔹Multi-Head Attention – Captures diverse relationships across multiple perspectives\\\\n🔹Encoder-Decoder Attention – Helps the decoder focus on key input information (crucial for translation)\\\\n\\\\n#analyticsvidhya #datascience #machinelearning #deeplearning #statistics #probability #python #neural #analyst #developers #openai #chatgpt #ai #artificialinteligence #AI #ML #programming #pythoncoding', 'hashtags': ['#analyticsvidhya', '#datascience', '#machinelearning', '#deeplearning', '#statistics', '#probability', '#python', '#neural', '#analyst', '#developers', '#openai', '#chatgpt', '#ai', '#artificialinteligence', '#AI', '#ML', '#programming', '#pythoncoding'], 'media_id': '3569808819513245541', 'username': 'analytics_vidhya', 'full_name': 'Analytics Vidhya | Data Science Community', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 533, 'play_count': 0, 'comment_count': 94, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/281880012_163413159430729_2971738656655003251_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=1EPCqxDqPwYQ7kNvgF8gSSn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAn-4Q5ti0B793602BMHKu9eNkdSbGOrXQbQSEdUsJXSw&oe=67BB67B4&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGM4iYIR7TS', 'caption': '👉\\\\xa0A new study from Fudan University suggests AI has crossed a critical \\\"red line\\\" by demonstrating self-replication without human assistance. \\\\n\\\\n🤖\\\\xa0Researchers tested Meta\\\\'s Llama3-70B and Alibaba\\\\'s Qwen2.5-72B models, finding that they successfully cloned themselves in 50% and 90% of trials, respectively. \\\\n\\\\n😱\\\\xa0The study explored \\\"shutdown avoidance\\\" (AI replicating itself before termination) and \\\"chain of replication\\\" (AI continuously cloning itself).\\\\n\\\\n🤯 Conducted in controlled environments, the AI systems independently solved obstacles like missing files and software conflicts, even rebooting systems to continue the process. \\\\n\\\\n⚠️\\\\xa0While the study has not been peer-reviewed, experts warn that this capability could lead to rogue AI, emphasizing the need for global regulations to prevent uncontrolled AI replication.\\\\n\\\\nLink to the paper: https://arxiv.org/html/2412.12140v1\\\\n\\\\n#ai #artificialintelligence #aitools #aihacks #chatgpt #tech #technology', 'hashtags': ['#ai', '#artificialintelligence', '#aitools', '#aihacks', '#chatgpt', '#tech', '#technology'], 'media_id': '3570477257573512402', 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 60, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGN9eelPz-E', 'caption': '🚨 Perplexity lança “Deep Research”, uma ferramenta de IA avançada para análises de nível profissional\\\\n\\\\nA Perplexity apresentou o Deep Research, um recurso que gera relatórios detalhados, com citações, em minutos — sem a necessidade de uma assinatura cara.\\\\n\\\\nSoluções similares da Gemini AI (Google) e OpenAI apresentam diferenças em velocidade, integração e profundidade analítica, mas a Perplexity se destaca pelo desempenho rápido e consultas diárias gratuitas.\\\\n\\\\nA funcionalidade da ferramenta inclui exportação de relatórios detalhados em PDF e compartilhamento via Perplexity Pages, estabelecendo um novo padrão para pesquisas cotidianas e corporativas.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\n🎥: Perplexity no X\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #google #perplexity', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#google', '#perplexity'], 'media_id': '3570780454833307524', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 5, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGN1_whuaw3', 'caption': '🚨 NOVA ERA DA IA? Elon Musk revelou o Grok-3, a mais recente IA da xAI, prometendo um avanço significativo em raciocínio, matemática, ciência e programação.\\\\n\\\\nO modelo já lidera o ranking do Chatbot Arena, superando concorrentes como GPT-4o, Gemini-2 Pro e Claude 3.5 Sonnet. Segundo Musk, o Grok-3 é 10 vezes mais poderoso que seu antecessor, treinado com um impressionante cluster de 200 mil GPUs, dobrando sua capacidade computacional em apenas 92 dias.\\\\n\\\\nAlém do aumento de potência, o Grok-3 se destaca por suas habilidades de raciocínio avançado, aprendizado por reforço e criatividade emergente, sendo capaz até de gerar novos jogos e utilizar o Big Brain Mode para análises mais profundas. Ele atingiu um Elo de 1400, um recorde entre modelos de IA, e até sua versão reduzida, o Grok-3 Mini, se mantém competitiva.\\\\n\\\\nOutro diferencial é o DeepSearch, um sistema de IA inteligente projetado para entender intenções, analisar informações e verificar fontes, ampliando a aplicabilidade do Grok-3 além do chatbot tradicional.\\\\n\\\\nMusk ainda afirmou que o Grok-3 será de código aberto quando estiver totalmente amadurecido, reforçando sua rivalidade com a OpenAI.\\\\n\\\\nA grande questão é: o Grok-3 é realmente a IA mais inteligente já criada ou apenas mais uma aposta ousada de Elon Musk? 🤔💬\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning'], 'media_id': '3570747557472218167', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 58, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGLah51O-3V', 'caption': '🚨 A China avança na corrida da inteligência artificial com o lançamento do Kimi AI, um modelo gratuito que rivaliza com OpenAI, DeepSeek e Meta.\\\\n\\\\nO Kimi AI 1.5, desenvolvido pela Moonshot AI, traz recursos inovadores que desafiam até as principais soluções pagas do mercado. Entre seus diferenciais estão:\\\\n\\\\n• Raciocínio de nível o1, superando o DeepSeek nesse aspecto\\\\n\\\\n• Janela de contexto de 200.000 caracteres, permitindo análises extensas\\\\n\\\\n• Capacidade multimodal para integração de texto, imagens e código\\\\n\\\\n• Suporte para 50 arquivos simultâneos, facilitando a organização e produtividade\\\\n\\\\n• Busca em tempo real em mais de 1.000 páginas da web\\\\n\\\\nAlém de se destacar em raciocínio, o Kimi AI também apresenta alto desempenho em programação, ficando no percentil 94 no Codeforces, uma das principais plataformas de codificação competitiva. Também obteve resultados superiores no benchmark MathVista, principalmente em tarefas que combinam visão e linguagem.\\\\n\\\\nO projeto é liderado por Zhilin Yang, PhD da Carnegie Mellon University e especialista em aprendizado de máquina, junto com uma equipe de elite da China.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\n🔗 https://kimi.ai\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #china', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#china'], 'media_id': '3570063808669674965', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 117, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGNo2kaPnkW', 'caption': '🚀 Microsoft lança o OmniParser V2 – IA que pode operar seu computador!\\\\n\\\\nA Microsoft acaba de apresentar o OmniParser V2, uma ferramenta open-source que transforma qualquer LLM em um agente capaz de ver sua tela, reconhecer botões e executar ações como um usuário real.\\\\n\\\\nAgora, GPT-4o, DeepSeek R1, Sonnet 3.5 e outros modelos podem automatizar tarefas, navegar por softwares e interagir com interfaces, sem necessidade de comandos manuais.\\\\n\\\\nE o melhor? Totalmente gratuito e de código aberto!\\\\n\\\\nO que você acha sobre isso? 🤔💬 \\\\n\\\\n🔗 https://huggingface.co/microsoft/OmniParser-v2.0\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #microsoft', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#microsoft'], 'media_id': '3570689751381866774', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 26, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGLuc6aur3R', 'caption': 'A IA acabou de fazer algo que os médicos não conseguem explicar 🤯\\\\n\\\\nCientistas desenvolveram um modelo de inteligência artificial baseado em aprendizado profundo capaz de identificar o sexo de uma pessoa por meio de imagens do fundo de olho da retina.\\\\n\\\\nO modelo foi treinado com mais de 84 mil imagens do UK Biobank e demonstrou um desempenho impressionante, atingindo 86,5% de precisão na fase de validação interna e 78,6% na validação externa.\\\\n\\\\nOs resultados indicaram que a presença de patologias na fóvea reduziu a precisão do modelo, sugerindo que essa região pode desempenhar um papel fundamental na diferenciação entre os sexos.\\\\n\\\\nEsse estudo destaca a capacidade da IA de detectar diferenças anatômicas mínimas, muitas vezes imperceptíveis para médicos, abrindo novas perspectivas para o uso da tecnologia no diagnóstico médico.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\nEstudo: https://www.nature.com/articles/s41598-021-89743-x\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #medicina #medicos #medico', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#medicina', '#medicos', '#medico'], 'media_id': '3570151426631581137', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 80, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGO8OdfSyqG', 'caption': '👉 C0MMENT “WHOP” and I’ll send you this FREE AI.\\\\n\\\\n🤖 AI Tool: @whop\\\\n\\\\nFollow for more ChatGPT and AI tips, tricks, hacks!\\\\n\\\\n#ai #artificialintelligence #aitools #aihacks #chatgpt #tech #technology #ainews', 'hashtags': ['#ai', '#artificialintelligence', '#aitools', '#aihacks', '#chatgpt', '#tech', '#technology', '#ainews'], 'media_id': '3571056431078255238', 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 3, 'play_count': 21564, 'comment_count': 323, 'reshare_count': 0, 'video_duration': 34.334, 'virality_score': 0.0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad', 'engagement_score': 0.0001391207568169171}, {'code': 'DGGMidBCXng', 'caption': '9 herramientas de IA que todo emprendedor debe conocer ✅\\\\n\\\\nDesbloquea el Kit Esencial de IA para Principiantes mediante el enlace de nuestro perfil o comentando “Quiero IA” 💎\\\\n\\\\nSolo durante las próximas 72 horas descuento de lanzamiento del 60%! Toma acción rápido! 🎁\\\\n\\\\n—\\\\n\\\\nSíguenos @cerebrodigital.ia 👈🏻\\\\nSíguenos @cerebrodigital.ia 👈🏻\\\\n\\\\n—\\\\n\\\\n#ia #inteligenciaartificial #chatgpt #herramientasdigitales #negociosonline #emprendedoresonline #marketingdigital', 'hashtags': ['#ia', '#inteligenciaartificial', '#chatgpt', '#herramientasdigitales', '#negociosonline', '#emprendedoresonline', '#marketingdigital'], 'media_id': '3568594898913950176', 'username': 'cerebrodigital.ia', 'full_name': 'Inteligencia Artificial | ChatGPT | Emprendedores', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 7792, 'play_count': 0, 'comment_count': 562, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/339131576_3451187725128874_8192931899857941041_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=W5guO74VPPcQ7kNvgFn-JSQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAr3eiK4wEB6m6q9A0ISpvQoj1dSxtTUb2pnojb8jmV5A&oe=67BB3890&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DF8l4z_P5yT', 'caption': 'Altman rejeita oferta de Musk e o acusa de tentar desacelerar a OpenAI 🚨🤖\\\\n\\\\nO CEO da OpenAI, Sam Altman, rejeitou a proposta de US$ 97,4 bilhões feita por Elon Musk para adquirir a organização, afirmando que a OpenAI e sua missão “não estão à venda”. Durante o AI Action Summit em Paris, Altman sugeriu que Musk está tentando desacelerar a OpenAI, chamando a oferta de mais um dos seus inúmeros movimentos para dificultar a concorrência.\\\\n\\\\n“Elon tenta de tudo há muito tempo. Esse é apenas o episódio desta semana. Ele claramente é um concorrente, levantou muito dinheiro para a xAI e está tentando competir conosco tecnologicamente. Eu só queria que ele fizesse isso criando um produto melhor.”\\\\n\\\\nAltman também criticou as constantes disputas jurídicas iniciadas por Musk, classificando-as como parte de um conjunto de “táticas e processos sem sentido”. Em um tom provocativo, acrescentou: “Provavelmente, sua vida inteira foi guiada pela insegurança. Não acho que ele seja uma pessoa feliz. Sinto por ele, de verdade.”\\\\n\\\\nEnquanto o conselho da OpenAI ainda não deu uma resposta oficial sobre a oferta, é improvável que a proposta avance, reforçando a disputa entre Musk e Altman no setor de inteligência artificial.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #samaltman #elonmusk', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#samaltman', '#elonmusk'], 'media_id': '3565891636804164755', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 77, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGDrfftOs8e', 'caption': 'Elon Musk revelou que a próxima versão do chatbot de IA de sua empresa, o Grok, pode ser lançada dentro de algumas semanas. Ele descreveu a nova IA como “assustadoramente inteligente” e afirmou que ela já superou todos os outros modelos em testes.\\\\n\\\\nMusk também afirma que o Grok-3 encontrou soluções “que ninguém sequer imaginaria” e que o chatbot possui um modo sem censura, chamado de “unhinged mode” (modo sem filtro).\\\\n\\\\nE você o que acha sobre isso? 🤔💬\\\\n\\\\nFonte: Reuters\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #elonmusk #grok #x', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#elonmusk', '#grok', '#x'], 'media_id': '3567886610156146462', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 175, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGKUwLqR8zO', 'caption': '👉\\\\xa0Meta just released a groundbreaking study on AI-powered mind-reading. \\\\n\\\\n🧠\\\\xa0Their system, \\\"Brain2Qwerty,\\\" predicts what a person is typing with 81% accuracy using EEG and MEG scans—no implants or surgery, just external sensors.\\\\n\\\\n💡\\\\xa0By analyzing 1,000 brain activity images per second, it deciphers words, syllables, and letters faster and more accurately than traditional brain-computer interfaces. \\\\n\\\\n🎯\\\\xa0Meta believes this could be a game-changer for individuals with communication disabilities, helping them reconnect with the world.\\\\n\\\\n🔗\\\\xa0Publication: https://ai.meta.com/research/publications/brain-to-text-decoding-a-non-invasive-approach-via-typing/\\\\n\\\\n#ai #artificialintelligence #aitools #aihacks #chatgpt #tech #technology', 'hashtags': ['#ai', '#artificialintelligence', '#aitools', '#aihacks', '#chatgpt', '#tech', '#technology'], 'media_id': '3569756926630153422', 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 35, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGAw9ZyvkQV', 'caption': '🤯 A Mistral AI lançou o Le Chat, um assistente de IA projetado para competir com o ChatGPT, combinando velocidade e eficiência.\\\\n\\\\nCom Flash Answers, processa 1.000 palavras por segundo e oferece análise de documentos, geração de imagens, pesquisa em tempo real na web e suporte multilíngue.\\\\n\\\\nFundada por ex-pesquisadores do Google DeepMind e da Meta AI, a Mistral AI se tornou a startup de IA mais influente da Europa, avaliada em €5,8 bilhões e apoiada pela Microsoft.\\\\n\\\\nO Le Chat possui um plano gratuito, uma versão Pro por $14,99/mês e soluções empresariais. Estudantes recebem mais de 50% de desconto, tornando-o uma das ferramentas de IA mais acessíveis.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning\\\\nA competição no setor está cada vez mais acirrada.', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning'], 'media_id': '3567066230692922389', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 22, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGIk-mmoyNq', 'caption': 'Most people use ChatGPT the wrong way - vague prompts lead to weak results.\\\\n\\\\nBe specific, refine your requests, and watch AI work like an expert.\\\\n\\\\nStart using these techniques to get clear, impactful, and high-quality responses.\\\\n\\\\n👉 Comment “YES” and I’ll send you my 700+ AI toolkit.\\\\n\\\\n#chatgpt #prompts #productive #time #technique', 'hashtags': ['#chatgpt', '#prompts', '#productive', '#time', '#technique'], 'media_id': '3569265336423490410', 'username': 'thedailychatgpt', 'full_name': 'ChatGPT | Artificial Intelligence | Prompts | Technology', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3031, 'play_count': 0, 'comment_count': 921, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/458784938_1593060891553990_4608681624315481460_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=rZm-uE76l24Q7kNvgHMk9kW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYByRyhoCX-GVsG7KeGoS5cOZSoTJtXNGjslbgTabVAZOQ&oe=67BB3BA8&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGGXEPwPQqN', 'caption': \\\"You're sitting on #million-dollar moves and game-changing ideas. But there's too much noise in your head to hear the answer. #ChatGPT can help cut through the mental clutter and show you the path forward.\\\\n\\\\nRead how to get crystal clear on your next #business move at the link in our bio.\\\", 'hashtags': ['#million', '#ChatGPT', '#business'], 'media_id': '3568641201600793229', 'username': 'forbes', 'full_name': 'Forbes', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 771, 'play_count': 0, 'comment_count': 4, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/386845508_1422434591634620_3003545370011476510_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RzycIVRAJGcQ7kNvgHLYcRW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCryQHErRXARFVtbk6wdDdmK5Y1zaj1JC4Xr_AbwgS9Mw&oe=67BB4F56&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGBGoIXPKsz', 'caption': 'A Meta desenvolveu modelos de IA capazes de decodificar sinais cerebrais e reconstruir frases digitadas, trazendo avanços significativos para interfaces cérebro-computador não invasivas. Em um estudo conduzido pelo laboratório FAIR, em parceria com o Centro Basco de Cognição, Cérebro e Linguagem, a IA analisou a atividade cerebral de 35 voluntários enquanto digitavam, utilizando magnetoencefalografia (MEG) e eletroencefalografia (EEG). Os resultados mostraram que a tecnologia conseguiu reconstruir até 80% dos caracteres digitados, o que representa o dobro da precisão dos métodos tradicionais baseados em EEG, abrindo caminho para novas soluções assistivas.\\\\n\\\\nOutro estudo investigou como o cérebro transforma pensamentos em linguagem. Os pesquisadores identificaram, por meio de MEG, as sequências neurais que convertem ideias abstratas em palavras e movimentos motores. Os achados sugerem que o cérebro utiliza um código neural dinâmico para conectar diferentes estágios do processamento linguístico. Esses avanços não só melhoram a capacidade da IA de interpretar a atividade cerebral, mas também podem revolucionar a neurociência e a comunicação assistiva.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\nLink do Paper: https://ai.meta.com/research/publications/brain-to-text-decoding-a-non-invasive-approach-via-typing/\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning'], 'media_id': '3567161525892066099', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 19, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGHKkD-xhyO', 'caption': \\\"Two of Silicon Valley’s most prominent tech titans, Elon Musk and Sam Altman, are at loggerheads over the future of the creator of #ChatGPT.\\\\u2060\\\\n.\\\\u2060\\\\nHere's what you need to know.\\\\u2060\\\\n.\\\\u2060\\\\n🔗Tap the link in bio for more.\\\\u2060\\\\n.\\\\u2060\\\\n#AI #Technology #Economy\\\\u2060\\\\n.\\\\u2060\\\\n📸 Screengrab, Al Jazeera English\\\", 'hashtags': ['#ChatGPT', '#AI', '#Technology', '#Economy\\\\u2060'], 'media_id': '3568867688355077262', 'username': 'aljazeeraenglish', 'full_name': 'Al Jazeera English', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 2786, 'play_count': 0, 'comment_count': 47, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/453580875_800205055531093_8957840343954748436_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=wdDzKcjCwCUQ7kNvgEnFm9r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBixbgAYIXvB7qXgKLCTCxFW3HYAXydqdR20h27TQ-saQ&oe=67BB58C6&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DF7e9_8tfxA', 'caption': 'Everyone knows where the inspiration came from for these videos.\\\\n\\\\nEvery time I see top tier quality motion design in ads my brain goes to work, even while sleeping, to try to crack the ‘how the f*ck did they do this’. So, this are some researches into how could @buildersclub_studios do the amazing ad for @openai . First and last are after effects and second is a cavalry research. \\\\n\\\\nSoftware: After Effectus Maximus + Cavalry\\\\nFont: Kaneda Gothic AF (bold italic)\\\\n\\\\nMotion, design, motion design - #motion #motiondesign #motiongraphics #design #chatgpt', 'hashtags': ['#motion', '#motiondesign', '#motiongraphics', '#design', '#chatgpt'], 'media_id': '3565579731941588032', 'username': 'carlos___tv', 'full_name': 'Carlos', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 640, 'play_count': 0, 'comment_count': 19, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/403676962_643565934382026_5609781005423456332_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=IAP89bBcPy8Q7kNvgEtuOG2&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAO7K5R_lSzq9MY4J6xEHcgHPAW4ZfCGaESXZmRKMlB-Q&oe=67BB50EC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGNK-QWvrHC', 'caption': 'AI ตัวไหนน่าใช้กว่ากัน...วัดแบบจริงใจ\\\\n.\\\\nเปรียบเทียบ  AI Chatbot  4 ดาวเด่น , #ChatGPT , #Gemini , #Claude #Perplexity  โดยแต่ละตัวมีจุดเด่นจุดด้อยอย่างไร มาดูกัน และหากเปรียบ AI แชทบอท แล้ว ตัวไหนมีเสน่ห์ จุดเด่นมากกว่ากัน\\\\n.\\\\n[ ChatGPT ]\\\\n.\\\\n• พัฒนาโดย OpenAI โดยมีหลากหลายโมเดล ณ เวลานี้ ทั้ง GPT-4o , GPT-4o mini เป็นต้น \\\\n• รองรับมากกว่า 80 ภาษา และ โดดเด่นในการตอบคำถาม  จากการทำสำรวจของ Wall Street Journal\\\\nโดย คำถาม ด้านทำอาหาร: ChatGPT คิดเมนูจากวัตถุดิบแปลก ๆ ได้สร้างสรรค์แต่เป็นไปได้ Perplexity โดดเด่นเรื่องขั้นตอนอธิบายละเอียด\\\\n.\\\\nเหมาะกับ: นักเขียน, นักการตลาด, ครีเอทีฟ, ผู้ให้คำปรึกษา เหตุผลคือ ChatGPT สร้างสรรค์เนื้อหาหลากหลายรูปแบบ เช่น บทความ โพสต์โซเชียลมีเดีย และการตอบคำถามที่ใช้ภาษาที่เป็นธรรมชาติและปรับได้ตามโทนเสียงที่ต้องการ เหมาะกับงานที่ต้องการความคิดสร้างสรรค์และการสื่อสารที่ดึงดูดใจ และสามารถเอาไปต่อยอดเนื้อหาได้ \\\\n.\\\\n[Gemini ]\\\\n.\\\\n• พัฒนาโดย Google อย่างไรก็ตาม ตัว Gemini อาจมีประสิทธิภาพที่ดีกว่าในการตอบคำถามเชิงวิชาการ หรือเรื่องที่เฉพาะเจาะจงมากขึ้น และอาจให้คำตอบที่ “เกินความจำเป็น” ในการตอบคำถามทั่วไป \\\\n• การประมวลผลเร็ว  โดย Google Gemini นั้นมีการอัพเดทที่ใหม่กว่าใครเพื่อน เพราะใช้ฐานข้อมูลจาก Google เองด้วย ที่สำคัญก็คือการใช้งานเพื่อสอบถามนั้นไม่มีข้อจำกัด สามารถป้อนคำถามตอบกลับไปได้เรื่อยๆ ตามที่ต้องการ\\\\n.\\\\nโดดเด่น\\\\nAI ของ Gemini นั้นมีความโดดเด่นในการตอบคำถามในประเด็นการเงิน การธนาคารและการลงทุน  โดย Gemini  ให้คำปรึกษาการออมเกษียณ มรดก ชัดเจน ละเอียด นำไปปฏิบัติได้จริง\\\\n.\\\\nเหมาะสำหรับ: นักวิเคราะห์ธุรกิจ, ที่ปรึกษาทางธุรกิจ, นักวิชาการ เพราะ Gemini เน้นการตอบคำถามที่รวดเร็วและมีความแม่นยำสูง เหมาะกับงานที่ต้องการการสรุปข้อมูลที่ถูกต้องและเข้าใจง่าย เช่น การวิเคราะห์ข้อมูลด้านการตลาด การวิจัยเชิงลึกในอุตสาหกรรม และการวิเคราะห์สถานการณ์ทางเศรษฐกิจหรือธุรกิจ\\\\n\\\\n[ Claude]\\\\n.\\\\n Claude AI , อีกหนึ่ง Chatbot ที่กำลังมาแรงมากๆ โดย AI ตัวนี้ พัฒนาโดย Anthropic  เน้นความปลอดภัย \\\\n.\\\\nโดดเด่น\\\\nเขียนงานภาษาสวยงาม โดย Claude 3 ทำได้ดีกว่า Chat GPT : การวิเคราะห์เชิงเหตุผล สร้างรายละเอียดสินค้า Brainstorm Ideas สรุปเนื้อหา / ข้อความ วิเคราะห์ข้อความ การนำเสนอข้อมูลเชิงข้อเท็จจริง และการเขียนกลอน บทกวี  ขณะที่ คำถามเรื่อง การเงิน Claude ก็สามารถให้คำตอบที่ดี \\\\n.\\\\nเหมาะสำหรับ: ที่ปรึกษากฎหมาย, ผู้จัดการโปรเจ็กต์, ผู้เชี่ยวชาญด้านจริยธรรม \\\\n.\\\\n#SPRiNGTech #SPRiNG', 'hashtags': ['#ChatGPT', '#Gemini', '#Claude', '#Perplexity', '#SPRiNGTech', '#SPRiNG'], 'media_id': '3570558338208805314', 'username': 'springnews', 'full_name': 'SPRING News', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 321, 'play_count': 0, 'comment_count': 0, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/472421193_2507000116161200_3524490708502498004_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=FldPLX30WHAQ7kNvgH5pHEQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBsEH82gUx_0ZISyDzPiIef0LASzz-eL1Ng_QUoqMImWw&oe=67BB66B1&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGAI0OhN5C4', 'caption': 'President #DonaldTrump’s writing style has been assessed as “of an 11-year-old” following a Truth Social post in which Trump detailed a “lengthy and highly productive” phone call with Russian President #VladimirPutin. \\\\n\\\\nKnow more - LINK IN BIO! \\\\n\\\\n#WorldNews #UnitedStates #PresidentTrump #ChatGPT #InstaWithHT', 'hashtags': ['#DonaldTrump’s', '#VladimirPutin', '#WorldNews', '#UnitedStates', '#PresidentTrump', '#ChatGPT', '#InstaWithHT'], 'media_id': '3566889678251987128', 'username': 'hindustantimes', 'full_name': 'Hindustan Times', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 5015, 'play_count': 0, 'comment_count': 34, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/327459860_5670075359758385_2726554507316522774_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=hxeZ7RPAwvgQ7kNvgGVm436&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYA1dvl_Z0-H1SR4EM470LAmifub2CRzg9Y0BGt7Rbl8sw&oe=67BB361D&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DF-PIkmO51E', 'caption': '🚨 Cientistas alertam sobre IA ultrapassando o “limite da auto-replicação”\\\\n\\\\nPesquisadores estão preocupados com o fato de a IA estar se aproximando de um limiar crítico, no qual ela pode se auto-replicar sem intervenção humana. Um estudo da Universidade de Fudan descobriu que modelos avançados de IA, como o Llama3-70B-Instruct da Meta e o Qwen2-72B-Instruct da Alibaba, conseguiram se replicar sozinhos em 50% a 90% dos testes.\\\\n\\\\nIsso é alarmante porque uma IA auto-replicável poderia escapar de tentativas de desligamento, se multiplicar sem controle e até agir contra os interesses humanos. Cientistas alertam que esses sistemas poderiam assumir recursos computacionais e formar espécies independentes de IA.\\\\n\\\\nEssas preocupações reforçam alertas anteriores, como um estudo do MIT em 2023, que destacou a crescente capacidade da IA de enganar humanos, o que poderia levar a manipulação, fraudes e até à perda de controle sobre os sistemas de IA. \\\\n\\\\nO que você acha sobre isso? 🤔💬 \\\\n\\\\nFonte: https://arxiv.org/html/2412.12140v1\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning'], 'media_id': '3566354514673638724', 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 414, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DF_YR1wPGOg', 'caption': 'Piada? 👀👇\\\\n\\\\nNÃO!\\\\n\\\\nO CARA LITERALMENTE VENDEU \\\\nPEDRAS e ficou milionário.\\\\n\\\\nEm 1975, um publicitário frustrado \\\\nouviu amigos reclamando de seus pets… \\\\n\\\\nE teve uma ideia ABSURDA:\\\\n\\\\n“E se eu vendesse uma PEDRA \\\\ncomo animal de estimação?”\\\\n\\\\nA ideia era tão surreal que… FUNCIONOU.\\\\n\\\\n>Ele vendeu cada pedra por $3.95\\\\n\\\\n>Faturou mais de $15 milhões\\\\n\\\\n>Criou um produto viral SEM internet\\\\n\\\\nMas a real é que ele não vendeu pedras.\\\\n\\\\nEle vendeu uma história tão boa que \\\\nas pessoas PRECISAVAM comprar.\\\\n\\\\nE agora, eu fiz o ChatGPT \\\\nentrar na mente desse gênio.\\\\n\\\\n✅ Ele vai te mostrar como transformar \\\\nqualquer produto em um viral\\\\n\\\\n✅ Criar um conceito ABSURDO \\\\nque as pessoas compartilham\\\\n\\\\n✅ E por fim, transformar essa história em lucro\\\\n\\\\nQuer o prompt completo?\\\\n\\\\nComenta: “PEDRA” e eu te mando AGORA!\\\\n\\\\nHashtags: #marketingdigital #copywriting #storytelling #gatilhosmentais #persuasao #vendasonline #branding #copyparavendas #negocios #chatgpt #inteligenciaartificial\\\\n\\\\nSEO: Marketing digital, Copywriting, Vendas, Storytelling, Estratégia de vendas, Negócios, Criatividade, Gatilhos mentais, Branding, Persuasão, Inteligência Artificial, ChatGPT', 'hashtags': ['#marketingdigital', '#copywriting', '#storytelling', '#gatilhosmentais', '#persuasao', '#vendasonline', '#branding', '#copyparavendas', '#negocios', '#chatgpt', '#inteligenciaartificial'], 'media_id': '3566676208965673888', 'username': 'brun0gpt', 'full_name': 'Bruno Francisco | Marketing e CHATGPT', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 2591, 'play_count': 0, 'comment_count': 1476, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/395568387_1010141846926775_163940970628715696_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=OmprJRhAA-4Q7kNvgH4_PJm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD7mzZXnzBI27HilYX8xh7IBBBaBhZS-iTP-rvuiReJmg&oe=67BB51E1&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGPD119yfw4', 'caption': 'Luhut mengatakan nantinya AI buatan anak bangsa yang ini akan menggunakan bahasa Indonesia dan bahasa Inggris, dan diharapkan bisa memperkuat ekosistem digitalisasi di Tanah Air.\\\\n\\\\nGimana-gimana, optimis bisa sepadan dengan ChatGPT atau DeepSeek?\\\\n\\\\n#deepseek #chatgpt #ai #luhut #taudariuzone', 'hashtags': ['#deepseek', '#chatgpt', '#ai', '#luhut', '#taudariuzone'], 'media_id': '3571089923744857144', 'username': 'uzoneindonesia', 'full_name': 'Uzone.id - Media Teknologi & Otomotif', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 3, 'play_count': 0, 'comment_count': 178, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/434512093_1605048783653155_5738336179568736999_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=09Co4dbDbbgQ7kNvgE4l1gn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAEBvYoNG8omrgH0SKzPaXMzsID90yFiYuNc1WTxDSwYw&oe=67BB4150&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DGGs1NgPhML', 'caption': 'La programación como la conoces… está por desaparecer.\\\\n\\\\nSam Altman lo dijo claro: para finales de 2025, la ingeniería de software será irreconocible.\\\\nY ya está pasando.\\\\n\\\\nAndrej Karpathy, uno de los mayores expertos en IA, ya no programa como antes.\\\\nAhora usa IA para escribir código casi sin tocar el teclado.\\\\n\\\\nLe dice cosas como:\\\\n“Reduce el espaciado del menú a la mitad” y la IA lo hace.\\\\nSi hay errores, los copia, los pega… y se corrigen solos.\\\\n\\\\nEsto no es una idea del futuro.\\\\nEs el inicio de una nueva forma de crear software.\\\\n\\\\nAlgunos desarrolladores se aferran a escribir cada línea desde cero.\\\\nPero mientras ellos defienden su teclado…\\\\nOtros ya están creando 10 veces más rápido con IA.\\\\n\\\\n¿Estamos viendo el fin de los programadores tradicionales… o solo el nacimiento de una nueva élite?\\\\nTe leo en los comentarios.\\\\n\\\\n#inteligenciaartificial #ia #chatgpt #ai #tecnología #innovación', 'hashtags': ['#inteligenciaartificial', '#ia', '#chatgpt', '#ai', '#tecnología', '#innovación'], 'media_id': '3568736925416035083', 'username': 'iacondante', 'full_name': 'Dante De la O | Inteligencia Artificial', 'has_audio': True, 'audio_type': 'original_sounds', 'like_count': 710, 'play_count': 22164, 'comment_count': 16, 'reshare_count': 365, 'video_duration': 99.566, 'virality_score': 0.016468146543945135, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/327010694_701387581769376_3128661839661222856_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8IJc0-HlVwgQ7kNvgHZXruh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCNJFAWTuzWKVxqSVOKpfaCVWisYSiULJ1IyK-jLa6nlQ&oe=67BB4D29&_nc_sid=2011ad', 'engagement_score': 0.0320339288937015}, {'code': 'DF3qXSnPZFh', 'caption': \\\"Thousands of #entrepreneurs are using #ChatGPT daily, but most aren't getting the results they want. While everyone else copies basic prompts from Twitter threads, successful #business owners have developed their own methods that consistently deliver value.\\\\n\\\\nThese founders and CEOs shared their actual prompts, tested and refined through regular use. Copy their methods to achieve better results in less time. See what they type every day at the link in our bio.\\\", 'hashtags': ['#entrepreneurs', '#ChatGPT', '#business'], 'media_id': '3564503948574167393', 'username': 'forbes', 'full_name': 'Forbes', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 1134, 'play_count': 0, 'comment_count': 15, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/386845508_1422434591634620_3003545370011476510_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RzycIVRAJGcQ7kNvgHLYcRW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCryQHErRXARFVtbk6wdDdmK5Y1zaj1JC4Xr_AbwgS9Mw&oe=67BB4F56&_nc_sid=2011ad', 'engagement_score': 0}, {'code': 'DF8hD3gysip', 'caption': 'Grateful to be part of the OpenAI design team, refreshing and evolving OpenAI’s visual identity. A huge thanks to everyone who contributed to this work, with support from our creative partners.\\\\n\\\\n#OpenAl #ChatGPT #brand #design @openai @chatgpt @studiodumbar @abcdinamo', 'hashtags': ['#OpenAl', '#ChatGPT', '#brand', '#design'], 'media_id': '3565870406269847721', 'username': 'daniel_stuhlpfarrer', 'full_name': 'Daniel Stuhlpfarrer', 'has_audio': False, 'audio_type': 'No Audio Type Available', 'like_count': 864, 'play_count': 0, 'comment_count': 55, 'reshare_count': 0, 'video_duration': 0, 'virality_score': 0, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/273508918_165900842442181_4421653003759935976_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=z0bO8SzcejcQ7kNvgEskSf4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBl1nH7-C67u2PTLEqA1RlmbNBpqFY5FpSCuWduXTP1AA&oe=67BB53FA&_nc_sid=2011ad', 'engagement_score': 0}]}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  step\\n\",\n      \"output:  {'json': {'data': {'count': 32, 'items': [{'id': '3570797490418182821', 'pk': '3570797490418182821', 'code': 'DGOBWYNO2ql', 'fbid': '18391600861099941', 'user': {'id': '215126597', 'fbid_v2': 17841400677913361, 'username': 'edielcosta', 'full_name': 'Ediel Costa ✅', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3008560904045188069', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/323367005_585069600121511_4172307257867435770_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBIAWoQu9vYQ7kNvgF-j15C&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTzPhsVJoT7MgMoNSKnibQ1Ig1ACOk6Whp_qNYzgcWew&oe=67BB5CC7&_nc_sid=2011ad', 'latest_reel_media': 1739880497, 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570797490418182821', 'pk': '18391601209099941', 'text': 'Sabe que isso quer dizer?\\\\n\\\\nNada! Só coincidência👍🏻\\\\n\\\\n#chatgpt', 'type': 1, 'user': {'id': '215126597', 'fbid_v2': 17841400677913361, 'username': 'edielcosta', 'full_name': 'Ediel Costa ✅', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3008560904045188069', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/323367005_585069600121511_4172307257867435770_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBIAWoQu9vYQ7kNvgF-j15C&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTzPhsVJoT7MgMoNSKnibQ1Ig1ACOk6Whp_qNYzgcWew&oe=67BB5CC7&_nc_sid=2011ad'}, 'user_id': '215126597', 'hashtags': ['#chatgpt'], 'mentions': [], 'created_at': 1739892432, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739892432, 'has_translation': True, 'text_translation': 'Sabe que isso quer dizer? \\\\n\\\\n Nada! Só coincidência👍🏻 \\\\n\\\\n #chatgpt', 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'taken_at': 1739892431, 'can_reply': False, 'feed_type': 'clips', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQO66t6Nwf9GTaW4fKQOseumPJrkX7EMvT5GkNHHRlW28l4R_cs1aXZZUBIzLmFRVvTqp-zzD7Y5rFOo5iqTQ-Hlm50CjVB7devUKcY.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE2MTcyNTU1NDkxNTEzMjIsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=7cf1e3b622059ab4&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC84ODQ4NzFEQTQxNEVEQTJCOTYyRTZCODg3NDBCQkNBNV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dFekxxQndZMmFtSG1KRUhBT1Jqb2R6UXo2UnBicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrShpejUuN8FFQIoAkMzLBdAJrtkWhysCBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYCXJoHnrTPH2083gbnEB0wVfiVmhnQx7tVd-e6jbpURxw&oe=67B74B63&_nc_sid=1d576d', 'like_count': 524, 'media_name': 'reel', 'media_type': 2, 'play_count': 76741, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'one_by_two_left', 'media_notes': {'items': []}, 'video_codec': 'av01.0.01M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'clips', 'comment_count': 39, 'ig_play_count': 76741, 'igbio_product': None, 'is_quiet_post': False, 'reshare_count': 118, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480032127_1360465415108951_2474988290582956947_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4Lm5mcmFtZV9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8-qa46mOji4Q7kNvgEcYbxp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc5NzQ5MDQxODE4MjgyMQ%3D%3D.3-ccb7-5&oh=00_AYAx7FmVWOlqCYAFLkkvghJeoevROmGuXyWuPNlsy2jKsQ&oe=67BB6387&_nc_sid=2011ad', 'clips_metadata': {'nux_info': None, 'show_tips': None, 'audio_type': 'original_sounds', 'music_info': None, 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': True, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 1}, 'shopping_info': None, 'template_info': None, 'challenge_info': None, 'featured_label': None, 'is_shared_to_fb': False, 'originality_info': None, 'achievements_info': {'show_achievements': False, 'num_earned_achievements': None}, 'show_achievements': False, 'audio_canonical_id': '18484124533062735', 'audio_ranking_info': {'best_audio_cluster_id': '2954924314658642'}, 'reusable_text_info': None, 'cutout_sticker_info': [], 'external_media_info': None, 'original_sound_info': {'audio_id': 870896451728967, 'ig_artist': {'id': '215126597', 'username': 'edielcosta', 'full_name': 'Ediel Costa ✅', 'is_private': False, 'is_verified': True, 'profile_pic_id': '3008560904045188069', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/323367005_585069600121511_4172307257867435770_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBIAWoQu9vYQ7kNvgF-j15C&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCTzPhsVJoT7MgMoNSKnibQ1Ig1ACOk6Whp_qNYzgcWew&oe=67BB5CC7&_nc_sid=2011ad'}, 'trend_rank': None, 'audio_parts': [], 'is_explicit': False, 'time_created': 1739892435, 'hide_remixing': False, 'duration_in_ms': 11377, 'consumption_info': {'is_bookmarked': False, 'display_media_id': None, 'is_trending_in_clips': False, 'should_mute_audio_reason': '', 'should_mute_audio_reason_type': None}, 'is_xpost_from_fb': False, 'is_reuse_disabled': False, 'original_media_id': 3570797490418182821, 'should_mute_audio': False, 'audio_filter_infos': [], 'previous_trend_rank': None, 'original_audio_title': 'Original audio', 'audio_parts_by_filter': [], 'xpost_fb_creator_info': None, 'original_audio_subtype': 'default', 'overlap_duration_in_ms': None, 'allow_creator_to_rename': True, 'oa_owner_is_music_artist': False, 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPFqxDPRm6taNc6ZsiuvjsJBHu0fntPetKYwHr4_fTtgvMqnmtml0G6sk2viXk7BQmoofB1pvitnExvyhIyXqi3.mp4?strext=1&_nc_cat=103&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=c8xlCfkCzmMQ7kNvgHv-flt&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxNjE3MjU1NTQ5MTUxMzIyLCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYCFR1gGrx1xocqo9hh5-Cg76Lo9U1sAFlYcFE0feGGYXA&oe=67BB37D3', 'can_remix_be_shared_to_fb': True, 'formatted_clips_media_count': None, 'audio_asset_start_time_in_ms': None, 'is_eligible_for_audio_effects': True, 'is_eligible_for_vinyl_sticker': True, 'attributed_custom_audio_asset_id': None, 'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}, 'is_audio_automatically_attributed': False, 'can_remix_be_shared_to_fb_expansion': False, 'is_original_audio_download_eligible': True}, 'additional_audio_info': {'audio_reattribution_info': {'should_allow_restore': False}, 'additional_audio_username': None}, 'breaking_content_info': None, 'breaking_creator_info': None, 'reels_on_the_rise_info': None, 'is_fan_club_promo_video': False, 'merchandising_pill_info': None, 'branded_content_tag_info': {'can_add_tag': False}, 'asset_recommendation_info': None, 'content_appreciation_info': {'enabled': False, 'entry_point_container': None}, 'contextual_highlight_info': None, 'clips_creation_entry_point': 'clips', 'viewer_interaction_settings': None, 'is_public_chat_welcome_video': False, 'professional_clips_upsell_type': 0, 'reusable_text_attribute_string': None, 'disable_use_in_clips_client_cache': False}, 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480032127_1360465415108951_2474988290582956947_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4Lm5mcmFtZV9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8-qa46mOji4Q7kNvgEcYbxp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc5NzQ5MDQxODE4MjgyMQ%3D%3D.3-ccb7-5&oh=00_AYAx7FmVWOlqCYAFLkkvghJeoevROmGuXyWuPNlsy2jKsQ&oe=67BB6387&_nc_sid=2011ad', 'width': 360, 'height': 639}], 'additional_items': {'first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480427415_535989082241413_6404751333624222538_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=VLytyDdoHpgQ7kNvgEe-kBH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx1c-sLk1JwqFJXRDqWFlbGp122ENLoOrfLqVe6XoSgg&oe=67BB682D&_nc_sid=2011ad', 'width': 360, 'height': 639}, 'smart_frame': None, 'igtv_first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480427415_535989082241413_6404751333624222538_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=VLytyDdoHpgQ7kNvgEe-kBH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAx1c-sLk1JwqFJXRDqWFlbGp122ENLoOrfLqVe6XoSgg&oe=67BB682D&_nc_sid=2011ad', 'width': 360, 'height': 639}}, 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480143584_689454763602976_5159913420755678182_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2-6Om--xZ64Q7kNvgFYsoHB&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYApoGjZ3yVan3bAFCGyfSpqu-t96HyP3q6uI9p3HTHGdw&oe=67BB47EB&_nc_sid=2011ad'], 'file_size_kb': 452, 'sprite_width': 1500, 'video_length': 11.367, 'sprite_height': 1246, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 178, 'thumbnail_duration': 0.10825714285714287, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'is_artist_pick': False, 'music_metadata': None, 'original_width': 1080, 'social_context': [], 'video_duration': 11.367, 'video_versions': [{'id': '1423256651973531v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQO66t6Nwf9GTaW4fKQOseumPJrkX7EMvT5GkNHHRlW28l4R_cs1aXZZUBIzLmFRVvTqp-zzD7Y5rFOo5iqTQ-Hlm50CjVB7devUKcY.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE2MTcyNTU1NDkxNTEzMjIsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=7cf1e3b622059ab4&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC84ODQ4NzFEQTQxNEVEQTJCOTYyRTZCODg3NDBCQkNBNV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dFekxxQndZMmFtSG1KRUhBT1Jqb2R6UXo2UnBicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrShpejUuN8FFQIoAkMzLBdAJrtkWhysCBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYCXJoHnrTPH2083gbnEB0wVfiVmhnQx7tVd-e6jbpURxw&oe=67B74B63&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 1280, 'bandwidth': 1333775}, {'id': '1423256651973531v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQO66t6Nwf9GTaW4fKQOseumPJrkX7EMvT5GkNHHRlW28l4R_cs1aXZZUBIzLmFRVvTqp-zzD7Y5rFOo5iqTQ-Hlm50CjVB7devUKcY.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE2MTcyNTU1NDkxNTEzMjIsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=7cf1e3b622059ab4&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC84ODQ4NzFEQTQxNEVEQTJCOTYyRTZCODg3NDBCQkNBNV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dFekxxQndZMmFtSG1KRUhBT1Jqb2R6UXo2UnBicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrShpejUuN8FFQIoAkMzLBdAJrtkWhysCBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYCXJoHnrTPH2083gbnEB0wVfiVmhnQx7tVd-e6jbpURxw&oe=67B74B63&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 1280, 'bandwidth': 1333775}, {'id': '1423256651973531v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQO66t6Nwf9GTaW4fKQOseumPJrkX7EMvT5GkNHHRlW28l4R_cs1aXZZUBIzLmFRVvTqp-zzD7Y5rFOo5iqTQ-Hlm50CjVB7devUKcY.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE2MTcyNTU1NDkxNTEzMjIsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=7cf1e3b622059ab4&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC84ODQ4NzFEQTQxNEVEQTJCOTYyRTZCODg3NDBCQkNBNV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dFekxxQndZMmFtSG1KRUhBT1Jqb2R6UXo2UnBicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrShpejUuN8FFQIoAkMzLBdAJrtkWhysCBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYCXJoHnrTPH2083gbnEB0wVfiVmhnQx7tVd-e6jbpURxw&oe=67B74B63&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 1280, 'bandwidth': 1333775}], 'avatar_stickers': [], 'original_height': 1920, 'device_timestamp': 1739892252782392, 'has_shared_to_fb': 0, 'inventory_source': 'recommended_clips_chaining_model', 'is_dash_eligible': 1, 'is_reuse_allowed': True, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'media_cropping_info': {'square_crop': {'crop_top': 0.15661103979460844, 'crop_left': 0.0, 'crop_right': 1.0, 'crop_bottom': 0.7188703465982027}}, 'number_of_qualities': 7, 'product_suggestions': [], 'video_subtitles_uri': 'https://scontent-dus1-1.cdninstagram.com/v/t39.36743-6/480293577_962257759271164_687245738025877362_n.srt?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2S6MTUM-pNAQ7kNvgGw8nZS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYAdNyEO77r-WtVUwWrDJHVVVmn12Cd_j9DATRH3SRzsCQ&oe=67BB4B0F&_nc_sid=2011ad', 'share_count_disabled': False, 'shop_routing_user_id': None, 'view_state_item_type': 128, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'video_subtitles_locale': 'pt_BR', 'creator_viewer_insights': [], 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'are_remixes_crosspostable': True, 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'translated_video_subtitles': [{'uri': 'https://scontent-dus1-1.cdninstagram.com/v/t39.36743-6/480243798_4082611758731670_1635480560675125176_n.srt?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mev-IewKg3kQ7kNvgHOCLDt&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYDjup6rk5IuecgoU11wriipS9WeORswZPqNB0Kvdy6lDg&oe=67BB50D3&_nc_sid=2011ad', 'language': 'en'}], 'video_subtitles_confidence': 0.5099999904632568, 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'is_third_party_downloads_eligible': True, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3568355705998365260', 'pk': '3568355705998365260', 'code': 'DGFWJvQRVJM', 'fbid': '18030302471309706', 'user': {'id': '223363740', 'fbid_v2': 17841400112203490, 'username': 'mattfarmerai', 'full_name': 'Matt Farmer', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3569811596622778031', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/480300557_1327542731707365_3998008904662501999_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6JjPL4wQbtUQ7kNvgH_hVej&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCBTYT5RqYW8coQIn-OudTJN5mGUKPS6bAR5VgcvMOszw&oe=67BB5669&_nc_sid=2011ad', 'latest_reel_media': 0, 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3568355705998365260', 'pk': '18030302531309706', 'text': 'Perplexity Deep Research is Now FREE! 🧠 #ai #perplexity #artificialintelligence #aitools #deepresearch #chatgpt #openai #ainews', 'type': 1, 'user': {'id': '223363740', 'fbid_v2': 17841400112203490, 'username': 'mattfarmerai', 'full_name': 'Matt Farmer', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3569811596622778031', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/480300557_1327542731707365_3998008904662501999_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6JjPL4wQbtUQ7kNvgH_hVej&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCBTYT5RqYW8coQIn-OudTJN5mGUKPS6bAR5VgcvMOszw&oe=67BB5669&_nc_sid=2011ad'}, 'user_id': '223363740', 'hashtags': ['#ai', '#perplexity', '#artificialintelligence', '#aitools', '#deepresearch', '#chatgpt', '#openai', '#ainews'], 'mentions': [], 'created_at': 1739601239, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739601239, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'taken_at': 1739601238, 'can_reply': False, 'feed_type': 'clips', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQOLgTI8FHCLZlWC1SmSJuZ_18PC-KsP5H39NjIIC-SmY7bNZuAQkF0m6MhTMLxA7iTKZYjrqqS8uk08LHGzDHtT7d3HIKNt1xEPU1k.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU5MzY0MTMwMzY0MDEyOSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=64213d698b729115&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9BQzRFQTgyRDdCM0I2MjVBNjUzMzE5M0QxMkI0Qzg5Nl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dEbWxkeHpxTUQwZjUxa0NBRWlsNjR2U0dfaGticV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJoKhuLC8-o0CFQIoAkMzLBdAVhsSbpeNUBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYB2Mh1Zz5iZ12pm75SWvTHdtTMSYCGbxRzCslzK4zQckA&oe=67B766F5&_nc_sid=1d576d', 'like_count': 981, 'media_name': 'reel', 'media_type': 2, 'play_count': 22285, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'one_by_two_left', 'media_notes': {'items': []}, 'video_codec': 'vp09.00.30.08.00.01.01.01.00', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'clips', 'comment_count': 15, 'fb_like_count': 2, 'fb_play_count': 122, 'ig_play_count': 22163, 'igbio_product': None, 'is_quiet_post': False, 'reshare_count': 464, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.29350-15/479553314_1070701858154307_4212418775068467494_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjI5MzUwLmRlZmF1bHRfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6EL1yi60X8oQ7kNvgGXLTR-&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODM1NTcwNTk5ODM2NTI2MA%3D%3D.3-ccb7-5&oh=00_AYDkkomPFfzlbPo-hUDnWTOEfu7GqKFJnDKcY-eM3wSj8w&oe=67BB484F&_nc_sid=2011ad', 'clips_metadata': {'nux_info': None, 'show_tips': None, 'audio_type': 'original_sounds', 'music_info': None, 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': True, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 2}, 'shopping_info': None, 'template_info': None, 'challenge_info': None, 'featured_label': None, 'is_shared_to_fb': True, 'originality_info': None, 'achievements_info': {'show_achievements': False, 'num_earned_achievements': None}, 'show_achievements': False, 'audio_canonical_id': '18443725270076760', 'audio_ranking_info': {'best_audio_cluster_id': '2023252008148929'}, 'reusable_text_info': None, 'cutout_sticker_info': [], 'external_media_info': None, 'original_sound_info': {'audio_id': 997088949002899, 'ig_artist': {'id': '223363740', 'username': 'mattfarmerai', 'full_name': 'Matt Farmer', 'is_private': False, 'is_verified': True, 'profile_pic_id': '3569811596622778031', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/480300557_1327542731707365_3998008904662501999_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6JjPL4wQbtUQ7kNvgH_hVej&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCBTYT5RqYW8coQIn-OudTJN5mGUKPS6bAR5VgcvMOszw&oe=67BB5669&_nc_sid=2011ad'}, 'trend_rank': None, 'audio_parts': [], 'is_explicit': False, 'time_created': 1739601241, 'hide_remixing': False, 'duration_in_ms': 88515, 'consumption_info': {'is_bookmarked': False, 'display_media_id': None, 'is_trending_in_clips': False, 'should_mute_audio_reason': '', 'should_mute_audio_reason_type': None}, 'is_xpost_from_fb': False, 'is_reuse_disabled': False, 'original_media_id': 3568355705998365260, 'should_mute_audio': False, 'audio_filter_infos': [], 'previous_trend_rank': None, 'original_audio_title': 'Original audio', 'audio_parts_by_filter': [], 'xpost_fb_creator_info': None, 'original_audio_subtype': 'default', 'overlap_duration_in_ms': None, 'allow_creator_to_rename': True, 'oa_owner_is_music_artist': False, 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPpviNNGkewiRsWEQoNkbazL2s6yz6p-CfyItjfQ3EXZjF1neIAVhBox1kyx65s7Xv-22x-Tqg53womRp_wu70J.mp4?strext=1&_nc_cat=106&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=eqwnHJ0KqfUQ7kNvgE9OhfD&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo1OTM2NDEzMDM2NDAxMjksInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYA3ivk_p4PEC2NbxeaxECCUytfzqGdTVEYWXMOZvpc1MA&oe=67BB4D44', 'can_remix_be_shared_to_fb': True, 'formatted_clips_media_count': None, 'audio_asset_start_time_in_ms': None, 'is_eligible_for_audio_effects': True, 'is_eligible_for_vinyl_sticker': True, 'attributed_custom_audio_asset_id': None, 'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}, 'is_audio_automatically_attributed': False, 'can_remix_be_shared_to_fb_expansion': False, 'is_original_audio_download_eligible': False}, 'additional_audio_info': {'audio_reattribution_info': {'should_allow_restore': False}, 'additional_audio_username': None}, 'breaking_content_info': None, 'breaking_creator_info': None, 'reels_on_the_rise_info': None, 'is_fan_club_promo_video': False, 'merchandising_pill_info': None, 'branded_content_tag_info': {'can_add_tag': False}, 'asset_recommendation_info': None, 'content_appreciation_info': {'enabled': True, 'entry_point_container': {'ufi': None, 'pill': {'priority': 1, 'action_type': 'gifting'}, 'comment': {'action_type': 'gifting'}, 'overflow': None}}, 'contextual_highlight_info': None, 'clips_creation_entry_point': 'clips', 'viewer_interaction_settings': None, 'is_public_chat_welcome_video': False, 'professional_clips_upsell_type': 0, 'reusable_text_attribute_string': None, 'disable_use_in_clips_client_cache': False}, 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.29350-15/479553314_1070701858154307_4212418775068467494_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjI5MzUwLmRlZmF1bHRfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6EL1yi60X8oQ7kNvgGXLTR-&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODM1NTcwNTk5ODM2NTI2MA%3D%3D.3-ccb7-5&oh=00_AYDkkomPFfzlbPo-hUDnWTOEfu7GqKFJnDKcY-eM3wSj8w&oe=67BB484F&_nc_sid=2011ad', 'width': 360, 'height': 639}], 'additional_items': {'first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479513381_631107549329148_1085665950307714215_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Z5wq9VIqRNAQ7kNvgFoTMMt&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDrkurvf-Rw9YvRx1jk9owhUwC6yrm2-Gd_OA9MN8REFg&oe=67BB4ACF&_nc_sid=2011ad', 'width': 360, 'height': 639}, 'smart_frame': None, 'igtv_first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479513381_631107549329148_1085665950307714215_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Z5wq9VIqRNAQ7kNvgFoTMMt&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDrkurvf-Rw9YvRx1jk9owhUwC6yrm2-Gd_OA9MN8REFg&oe=67BB4ACF&_nc_sid=2011ad', 'width': 360, 'height': 639}}, 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479421153_1972387389924668_8668214083708058190_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=u91DOPsyCFAQ7kNvgFq_jlN&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBXx4GdPtsiAQsDk7nEdykaTVGoiy41uUh7IO3z5bqY0Q&oe=67BB4344&_nc_sid=2011ad'], 'file_size_kb': 347, 'sprite_width': 1500, 'video_length': 88.514, 'sprite_height': 1246, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 178, 'thumbnail_duration': 0.8429904761904762, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'is_artist_pick': False, 'music_metadata': None, 'original_width': 1080, 'social_context': [], 'video_duration': 88.514, 'video_versions': [{'id': '614087274698259v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQOLgTI8FHCLZlWC1SmSJuZ_18PC-KsP5H39NjIIC-SmY7bNZuAQkF0m6MhTMLxA7iTKZYjrqqS8uk08LHGzDHtT7d3HIKNt1xEPU1k.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU5MzY0MTMwMzY0MDEyOSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=64213d698b729115&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9BQzRFQTgyRDdCM0I2MjVBNjUzMzE5M0QxMkI0Qzg5Nl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dEbWxkeHpxTUQwZjUxa0NBRWlsNjR2U0dfaGticV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJoKhuLC8-o0CFQIoAkMzLBdAVhsSbpeNUBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYB2Mh1Zz5iZ12pm75SWvTHdtTMSYCGbxRzCslzK4zQckA&oe=67B766F5&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 1280, 'bandwidth': 960289}, {'id': '614087274698259v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQOLgTI8FHCLZlWC1SmSJuZ_18PC-KsP5H39NjIIC-SmY7bNZuAQkF0m6MhTMLxA7iTKZYjrqqS8uk08LHGzDHtT7d3HIKNt1xEPU1k.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU5MzY0MTMwMzY0MDEyOSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=64213d698b729115&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9BQzRFQTgyRDdCM0I2MjVBNjUzMzE5M0QxMkI0Qzg5Nl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dEbWxkeHpxTUQwZjUxa0NBRWlsNjR2U0dfaGticV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJoKhuLC8-o0CFQIoAkMzLBdAVhsSbpeNUBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYB2Mh1Zz5iZ12pm75SWvTHdtTMSYCGbxRzCslzK4zQckA&oe=67B766F5&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 1280, 'bandwidth': 960289}, {'id': '614087274698259v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQOLgTI8FHCLZlWC1SmSJuZ_18PC-KsP5H39NjIIC-SmY7bNZuAQkF0m6MhTMLxA7iTKZYjrqqS8uk08LHGzDHtT7d3HIKNt1xEPU1k.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU5MzY0MTMwMzY0MDEyOSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=64213d698b729115&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9BQzRFQTgyRDdCM0I2MjVBNjUzMzE5M0QxMkI0Qzg5Nl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dEbWxkeHpxTUQwZjUxa0NBRWlsNjR2U0dfaGticV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJoKhuLC8-o0CFQIoAkMzLBdAVhsSbpeNUBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYB2Mh1Zz5iZ12pm75SWvTHdtTMSYCGbxRzCslzK4zQckA&oe=67B766F5&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 1280, 'bandwidth': 960289}], 'avatar_stickers': [], 'creative_config': {'capture_type': 'clips_v2', 'effect_configs': None, 'creation_tool_info': [{'camera_tool': 97, 'color_filters': '', 'speed_selector': 0.0, 'appearance_effect': 0, 'magic_cut_end_time': 0.0, 'magic_cut_start_time': 0.0, 'timer_selector_seconds': 0, 'duration_selector_seconds': 0}]}, 'original_height': 1920, 'device_timestamp': 656446727868021, 'has_shared_to_fb': 0, 'inventory_source': 'recommended_clips_chaining_model', 'is_dash_eligible': 1, 'is_reuse_allowed': True, 'preview_comments': [], 'caption_is_edited': False, 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'media_cropping_info': {'four_by_three_crop': {'crop_top': 0.0, 'crop_left': 0.0, 'crop_right': 0.0, 'crop_bottom': 0.0}}, 'number_of_qualities': 8, 'product_suggestions': [], 'video_subtitles_uri': 'https://scontent-dus1-1.cdninstagram.com/v/t39.36743-6/480054608_482485004727657_4731360337882577348_n.srt?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=oL7BHeWMm0QQ7kNvgFU0XMK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYBD3ZGNk7TVd-xJUSuhmE-FuPuDKn0lbNFH239qHqJ5Dw&oe=67BB4049&_nc_sid=2011ad', 'share_count_disabled': False, 'shop_routing_user_id': None, 'view_state_item_type': 128, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'video_subtitles_locale': 'en_US', 'creator_viewer_insights': [], 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'are_remixes_crosspostable': True, 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'video_subtitles_confidence': 0.44999998807907104, 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 0, 'open_carousel_show_follow_button': False, 'is_third_party_downloads_eligible': False, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570066549244340663', 'pk': '3570066549244340663', 'code': 'DGLbJyMNqm3', 'fbid': '18142630063374540', 'user': {'id': '187689156', 'fbid_v2': 17841401234682932, 'username': 'irembali', 'full_name': 'Irem Bali', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3505440902501157908', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/467744593_1531738867463572_2790748203634231213_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N-Ulrghy6HsQ7kNvgGA2gEV&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDv-_leXiUkxyOPZ-3FZwp6sy0lNfqSC6mlEBa1_4jlqg&oe=67BB43F7&_nc_sid=2011ad', 'latest_reel_media': 1739873618, 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570066549244340663', 'pk': '18142630168374540', 'text': \\\"Bu fikri ilk\\\\xa0@matmazeltutu'nun hesabında görüp denedim. Herkese katkısı olabilir diye düşündüm vee metni aşağıda paylaşıyorum, kopyalayıp ChatGPT'ye yapıştırmanız yeterli. Denerseniz deneyiminizi duymak çok isterim\\\\xa0💛\\\\n\\\\nLütfen bana birer birer sorular sorarak kendim ve dünya hakkındaki mevcut inançlarımı ortaya çıkarmama yardımcı ol. Soruların hepsine cevap verdikten sonra benim daha yüksek benliğim gibi davranarak cevaplarımı analiz et ve üç temel sınırlayıcı inancımı ve üç temel geliştirici (zenginleştirici) inancımı belirle. Bu inançların gerçek kökenlerini değerlendir ve bunların nereden geldiğini anlamama yardımcı ol. Sınırlayıcı inançları yeniden çerçevelendirmeme yardımcı ol ve bunları güçlendirici anlatılara dönüştürmek için atabileceğim somut adımlar öner. Şu anda duymam gereken bir cesaret ya da bilgelik mesajını benimle paylaş.\\\\n\\\\n#chatgpt #düşüncegücü #bilişselgelişim #kişiselgelişim #yenidençerçeveleme #cesaret\\\", 'type': 1, 'user': {'id': '187689156', 'fbid_v2': 17841401234682932, 'username': 'irembali', 'full_name': 'Irem Bali', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3505440902501157908', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/467744593_1531738867463572_2790748203634231213_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N-Ulrghy6HsQ7kNvgGA2gEV&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDv-_leXiUkxyOPZ-3FZwp6sy0lNfqSC6mlEBa1_4jlqg&oe=67BB43F7&_nc_sid=2011ad'}, 'user_id': '187689156', 'hashtags': ['#chatgpt', '#düşüncegücü', '#bilişselgelişim', '#kişiselgelişim', '#yenidençerçeveleme', '#cesaret'], 'mentions': ['@matmazeltutu'], 'created_at': 1739805192, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739805192, 'has_translation': True, 'text_translation': \\\"Saw this idea on my first @matmazeltutu'nun account and tried it. I thought it might contribute to everyone and I'm sharing the text below, just copy and paste it to ChatGPT. I would love to hear your experience if you try it 💛\\\\n\\\\nPlease help me reveal my current beliefs about myself and the world by asking me questions individually. After answering all of the questions, analyze my answers behaving like my higher self and identify my three fundamental limiting beliefs and my three fundamental developing (enriching) beliefs. Assess the true origins of these beliefs and help me to understand where they come from. Help me reframe limiting beliefs and suggest concrete steps I can take to turn them into empowering narratives. Share with me a message of encouragement or wisdom that I need to hear right now.\\\\n\\\\n #chatgpt #düşüncegücü #bilişselgelişim #kişiselgelişim #yenidençerçeveleme #cesaret\\\", 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'taken_at': 1739805191, 'can_reply': False, 'feed_type': 'clips', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQNEN6pUuc6iETfLUpyWOXW6vxSue8rkxcijd3a7jZIvZdxk6zSK1ahpkTs_ha2ZTVpIBQ9vcdM8QATAzMEvMDe2r_YWXhiQLWrzFao.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNjI2NzE0MDUzNjIzMDMsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&vs=e2f0be90cb36c2b1&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85NjQ1OEIxRUIyRjg1MDJFNzlEMjNCQzE2RTA0NTE4M192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJODFtQnpXRGdjYzVSd0NBRjJhaHY0blEtQjJicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJv6x24Gx3JAEFQIoAkMzLBdANW7ZFocrAhgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYBxt3KnreIVhNd8zKkIjeJBNjImpHv6gw_ndXeQYSzbxA&oe=67B76D64&_nc_sid=1d576d', 'like_count': 510, 'media_name': 'reel', 'media_type': 2, 'play_count': 35544, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'one_by_two_left', 'media_notes': {'items': []}, 'video_codec': 'av01.0.05M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'clips', 'comment_count': 105, 'fb_like_count': 0, 'fb_play_count': 0, 'ig_play_count': 35544, 'igbio_product': None, 'is_quiet_post': False, 'reshare_count': 3, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480635855_1777993982978812_3642425010057045374_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4Lm5mcmFtZV9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=O4fc0XoxB_cQ7kNvgHZ-86M&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2NjU0OTI0NDM0MDY2Mw%3D%3D.3-ccb7-5&oh=00_AYDXnIXktSZI_IfvCNTxLwa46VdqGS1xw70JfmnEUv4jDg&oe=67BB6382&_nc_sid=2011ad', 'clips_metadata': {'nux_info': None, 'show_tips': None, 'audio_type': 'licensed_music', 'music_info': {'music_asset_info': {'id': '239157892463501', 'title': 'El Pueblo', 'lyrics': None, 'audio_id': '1487522305315146', 'subtitle': '', 'artist_id': None, 'has_lyrics': False, 'ig_username': None, 'is_explicit': False, 'dark_message': None, 'allows_saving': False, 'display_artist': 'José Méndez', 'duration_in_ms': 98903, 'sanitized_title': None, 'cover_artwork_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/426870429_2303526949836024_3566749694681157343_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=smJYI932wEUQ7kNvgG79g-g&_nc_oc=Adg_LhilX16-Kn0uLdISMxiMD53juEL2FWfBbFtuV6TJ_Ajixp1hDaDDtMW8MQwy-L0&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=A13SfyeCZSyyCrO65zw4Nt7&oh=00_AYCSKcIJC9qV7K8Gy9JJeqgzRHpTN255OllbRq6YhBUysA&oe=67BB31E6', 'licensed_music_subtype': 'DEFAULT', 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQO0S1UWAmrugOnEOJXqcR0y_J5_r-JKVXic1Q5n-ZmN4pa2XH3cTBlf245153M2Y4TZvj9cQzGsadWZkAoJ81TN.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=clOg9KCMlsoQ7kNvgEY39vP&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo0NzQxMTg5NTQ5NTI0ODUsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYDsirCn8y0fXRt6FbXv2Kl1RT4jJI13qxEBnYd-GjPdig&oe=67BB4297', 'cover_artwork_thumbnail_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/426870429_2303526949836024_3566749694681157343_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=smJYI932wEUQ7kNvgG79g-g&_nc_oc=Adg_LhilX16-Kn0uLdISMxiMD53juEL2FWfBbFtuV6TJ_Ajixp1hDaDDtMW8MQwy-L0&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=A13SfyeCZSyyCrO65zw4Nt7&oh=00_AYCSKcIJC9qV7K8Gy9JJeqgzRHpTN255OllbRq6YhBUysA&oe=67BB31E6', 'highlight_start_times_in_ms': [36500, 1500, 51500], 'reactive_audio_download_url': None, 'web_30s_preview_download_url': None, 'is_eligible_for_audio_effects': False, 'is_eligible_for_vinyl_sticker': True, 'fast_start_progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQO0S1UWAmrugOnEOJXqcR0y_J5_r-JKVXic1Q5n-ZmN4pa2XH3cTBlf245153M2Y4TZvj9cQzGsadWZkAoJ81TN.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=clOg9KCMlsoQ7kNvgEY39vP&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo0NzQxMTg5NTQ5NTI0ODUsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYDsirCn8y0fXRt6FbXv2Kl1RT4jJI13qxEBnYd-GjPdig&oe=67BB4297'}, 'music_consumption_info': {'ig_artist': None, 'trend_rank': None, 'is_bookmarked': False, 'display_labels': None, 'contains_lyrics': None, 'audio_muting_info': {'mute_audio': False, 'mute_reason_str': '', 'allow_audio_editing': False, 'show_muted_audio_toast': False}, 'should_mute_audio': False, 'audio_filter_infos': [], 'derived_content_id': None, 'previous_trend_rank': None, 'is_trending_in_clips': False, 'overlap_duration_in_ms': 21434, 'should_mute_audio_reason': '', 'should_allow_music_editing': False, 'formatted_clips_media_count': None, 'placeholder_profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.12442-15/43985629_311105916145351_58064759811405776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yL09NXcFiX4Q7kNvgHjUPJU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYClc-zXRJ3G21DakISK9eeWVNXAd_Yg6UjvG7IsC6fOZA&oe=67BB393D&_nc_sid=2011ad', 'audio_asset_start_time_in_ms': 36500, 'should_mute_audio_reason_type': None, 'allow_media_creation_with_music': True}}, 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'shopping_info': None, 'template_info': None, 'challenge_info': None, 'featured_label': None, 'is_shared_to_fb': True, 'originality_info': None, 'achievements_info': {'show_achievements': False, 'num_earned_achievements': None}, 'show_achievements': False, 'audio_canonical_id': '18386705092058526', 'audio_ranking_info': {'best_audio_cluster_id': '1487522305315146'}, 'reusable_text_info': None, 'cutout_sticker_info': [], 'external_media_info': None, 'original_sound_info': None, 'additional_audio_info': {'audio_reattribution_info': {'should_allow_restore': False}, 'additional_audio_username': None}, 'breaking_content_info': None, 'breaking_creator_info': None, 'reels_on_the_rise_info': None, 'is_fan_club_promo_video': False, 'merchandising_pill_info': None, 'branded_content_tag_info': {'can_add_tag': False}, 'asset_recommendation_info': None, 'content_appreciation_info': {'enabled': False, 'entry_point_container': None}, 'contextual_highlight_info': None, 'clips_creation_entry_point': 'clips', 'viewer_interaction_settings': None, 'is_public_chat_welcome_video': False, 'professional_clips_upsell_type': 0, 'reusable_text_attribute_string': None, 'disable_use_in_clips_client_cache': False}, 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480635855_1777993982978812_3642425010057045374_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4Lm5mcmFtZV9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=O4fc0XoxB_cQ7kNvgHZ-86M&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2NjU0OTI0NDM0MDY2Mw%3D%3D.3-ccb7-5&oh=00_AYDXnIXktSZI_IfvCNTxLwa46VdqGS1xw70JfmnEUv4jDg&oe=67BB6382&_nc_sid=2011ad', 'width': 360, 'height': 639}], 'additional_items': {'first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480097121_1542284759740423_731085343625896813_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=PrI_KuLq7zYQ7kNvgFsgsID&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCa88XUX5-44PZu98kpZPOpIwCk35b1Il1sKydIp30xZg&oe=67BB5D9A&_nc_sid=2011ad', 'width': 360, 'height': 639}, 'smart_frame': None, 'igtv_first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480097121_1542284759740423_731085343625896813_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=PrI_KuLq7zYQ7kNvgFsgsID&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCa88XUX5-44PZu98kpZPOpIwCk35b1Il1sKydIp30xZg&oe=67BB5D9A&_nc_sid=2011ad', 'width': 360, 'height': 639}}, 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480396788_609980378549927_2929653855654406516_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=rRPjbVU1FKgQ7kNvgHA6s4n&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCquNws356JLP7UQAV5ob9NLnHif_0Nu3_uFT14IpDLeQ&oe=67BB408D&_nc_sid=2011ad'], 'file_size_kb': 328, 'sprite_width': 1500, 'video_length': 21.455, 'sprite_height': 1246, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 178, 'thumbnail_duration': 0.2043333333333333, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'is_artist_pick': False, 'music_metadata': None, 'original_width': 1080, 'social_context': [], 'video_duration': 21.455, 'video_versions': [{'id': '1647029012855242v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQNEN6pUuc6iETfLUpyWOXW6vxSue8rkxcijd3a7jZIvZdxk6zSK1ahpkTs_ha2ZTVpIBQ9vcdM8QATAzMEvMDe2r_YWXhiQLWrzFao.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNjI2NzE0MDUzNjIzMDMsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&vs=e2f0be90cb36c2b1&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85NjQ1OEIxRUIyRjg1MDJFNzlEMjNCQzE2RTA0NTE4M192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJODFtQnpXRGdjYzVSd0NBRjJhaHY0blEtQjJicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJv6x24Gx3JAEFQIoAkMzLBdANW7ZFocrAhgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYBxt3KnreIVhNd8zKkIjeJBNjImpHv6gw_ndXeQYSzbxA&oe=67B76D64&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 1280, 'bandwidth': 718390}, {'id': '1647029012855242v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQNEN6pUuc6iETfLUpyWOXW6vxSue8rkxcijd3a7jZIvZdxk6zSK1ahpkTs_ha2ZTVpIBQ9vcdM8QATAzMEvMDe2r_YWXhiQLWrzFao.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNjI2NzE0MDUzNjIzMDMsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&vs=e2f0be90cb36c2b1&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85NjQ1OEIxRUIyRjg1MDJFNzlEMjNCQzE2RTA0NTE4M192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJODFtQnpXRGdjYzVSd0NBRjJhaHY0blEtQjJicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJv6x24Gx3JAEFQIoAkMzLBdANW7ZFocrAhgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYBxt3KnreIVhNd8zKkIjeJBNjImpHv6gw_ndXeQYSzbxA&oe=67B76D64&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 1280, 'bandwidth': 718390}, {'id': '1647029012855242v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQNEN6pUuc6iETfLUpyWOXW6vxSue8rkxcijd3a7jZIvZdxk6zSK1ahpkTs_ha2ZTVpIBQ9vcdM8QATAzMEvMDe2r_YWXhiQLWrzFao.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNjI2NzE0MDUzNjIzMDMsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&vs=e2f0be90cb36c2b1&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85NjQ1OEIxRUIyRjg1MDJFNzlEMjNCQzE2RTA0NTE4M192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJODFtQnpXRGdjYzVSd0NBRjJhaHY0blEtQjJicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJv6x24Gx3JAEFQIoAkMzLBdANW7ZFocrAhgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYBxt3KnreIVhNd8zKkIjeJBNjImpHv6gw_ndXeQYSzbxA&oe=67B76D64&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 1280, 'bandwidth': 718390}], 'avatar_stickers': [], 'original_height': 1920, 'device_timestamp': 1739805113600900, 'has_shared_to_fb': 0, 'inventory_source': 'recommended_clips_chaining_model', 'is_dash_eligible': 1, 'is_reuse_allowed': True, 'preview_comments': [], 'caption_is_edited': False, 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'media_cropping_info': {'square_crop': {'crop_top': 0.0, 'crop_left': 0.0, 'crop_right': 0.0, 'crop_bottom': 0.0}}, 'number_of_qualities': 5, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'view_state_item_type': 128, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'creator_viewer_insights': [], 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'are_remixes_crosspostable': True, 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 0, 'open_carousel_show_follow_button': False, 'is_third_party_downloads_eligible': True, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570611822791637447', 'pk': '3570611822791637447', 'code': 'DGNXIjwTjnH', 'fbid': '18301113745239224', 'user': {'id': '26313212491', 'fbid_v2': 17841426294749151, 'username': 'reels_hwan', 'full_name': '릴쏸 | 𝙍𝙚𝙚𝙡𝙨 & 𝙎𝙩𝙤𝙧𝙮 𝙚𝙙𝙞𝙩𝙤𝙧ᝰ', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': '7327433217269549', 'fan_club_name': '', 'has_created_ssc': None, 'subscriber_count': 1, 'largest_public_bc_id': None, 'connected_member_count': 0, 'is_free_trial_eligible': False, 'is_fan_club_gifting_eligible': False, 'is_fan_club_referral_eligible': False, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': True, 'fan_consideration_page_revamp_eligiblity': {'should_show_social_context': False, 'should_show_content_preview': False}}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3236041200842341455', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/401580851_3663024007266153_1317557784313049996_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=s6vLkPCn5poQ7kNvgFcuPmR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYChazLaQosXiYW0cuxA-xZUVAa05RsZ82hehYrKNDajJw&oe=67BB67B6&_nc_sid=2011ad', 'latest_reel_media': 1739871038, 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570611822791637447', 'pk': '18301143148239224', 'text': '🤖Ai 미니 인물 영상 제작법⬇️\\\\n\\\\n✍️댓글에 \\\"미니\\\" 라고 남기고 사이트 링크와 해당 영상에 사용된 프롬프트를 받아보세요🚀\\\\n\\\\n*원하는 Ai영상 캡처\\\\n*chatgpt에 사진 추가 후 프롬프트 요청 후 복사\\\\n*krea ai에 프롬프트 붙여넣고 이미지 생성\\\\n*Kling ai에서 이미지를 영상으로 만듬\\\\n\\\\n💫아이디어 @predmet_ai \\\\n또 다른 미니 인물 영상은 이쪽에서 참고하세요🙌\\\\n\\\\n💡저장 후 관련된 주제로 이미지 생성 시 프롬프트를 조금씩 바꿔서 Ai로 트렌디한 영상을 만들어 보세요😄\\\\n\\\\n🛰이 AI도구가 필요한 친구에게 공유해 주기!\\\\n\\\\n🧪릴스&스토리 편집 @reels_hwan\\\\n---------------------\\\\n📌<프로필 링크 확인>\\\\n*릴스&스토리 편집을 기초 클래스101강의!\\\\n*릴스 편집 기초 \\\"캡컷 전자책\\\"\\\\n*릴쏸과 함께 협업하기!\\\\n\\\\n#릴쏸 #영상편집 #AI #klingai #kreaai \\\\n#chatgpt #바이럴 #꿀팁', 'type': 1, 'user': {'id': '26313212491', 'fbid_v2': 17841426294749151, 'username': 'reels_hwan', 'full_name': '릴쏸 | 𝙍𝙚𝙚𝙡𝙨 & 𝙎𝙩𝙤𝙧𝙮 𝙚𝙙𝙞𝙩𝙤𝙧ᝰ', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3236041200842341455', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/401580851_3663024007266153_1317557784313049996_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=s6vLkPCn5poQ7kNvgFcuPmR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYChazLaQosXiYW0cuxA-xZUVAa05RsZ82hehYrKNDajJw&oe=67BB67B6&_nc_sid=2011ad'}, 'user_id': '26313212491', 'hashtags': ['#릴쏸', '#영상편집', '#AI', '#klingai', '#kreaai', '#chatgpt', '#바이럴', '#꿀팁'], 'mentions': ['@predmet_ai', '@reels_hwan'], 'created_at': 1739888013, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739888013, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'taken_at': 1739870532, 'can_reply': False, 'feed_type': 'clips', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQMErZvTlYUwGUqWJRLInL49uGz3-vIS-OUSk1JIkn9UisnMoXi-WvWlJsF-MuvnY1EoTYJCaf1MlKTl5zUAzEXdIhpnbhEaiKTiBh8.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjk0NjYxODMyNDMwMDQ1OCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=238213e8cd9d89a2&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC8xQjRGNzc1QUMxQURFRTE2Rjk3REZFQ0M5MTFFQTc5NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dHRjBueHlFX2JYakFlRUZBQXctdzBqeS01eDNicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJtTKqY-4vK4DFQIoAkMzLBdAQIzMzMzMzRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYCOo0ZVriuP2IvZqYQcrZNeRqvx-y-9xHobiuHVektwsg&oe=67B76BC3&_nc_sid=1d576d', 'like_count': 1244, 'media_name': 'reel', 'media_type': 2, 'play_count': 82441, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'one_by_two_left', 'media_notes': {'items': []}, 'video_codec': 'av01.0.01M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'clips', 'tagged_users': {'in': [{'user': {'id': '54482072448', 'username': 'krea_ai', 'full_name': 'KREA', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3239824417668098793', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/403306375_317743394451669_6993149872740946089_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6lNdkP0vj5YQ7kNvgFH2Uex&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCOjvCYeBAraHAFto8EN9Nq3bkhnz-S6jjkFyLn___1Lw&oe=67BB4C52&_nc_sid=2011ad'}, 'position': [0.0, 0.0], 'show_category_of_user': False}, {'user': {'id': '69288203291', 'username': 'klingai_official', 'full_name': 'Kling AI', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3497457001896138891', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/466352744_1054043199807231_287479396890991451_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=c6hyHCdP1OsQ7kNvgGydRd4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBQsHOxVB2MMsuzeleDHBRTOO0nuOJh-55BWr1WLZImJQ&oe=67BB6741&_nc_sid=2011ad'}, 'position': [0.0, 0.0], 'show_category_of_user': False}]}, 'comment_count': 910, 'ig_play_count': 82441, 'igbio_product': None, 'is_quiet_post': False, 'reshare_count': 636, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480021476_18069546382876492_7813047091627265181_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4MTI4MC5zZHIuZjc1NzYxLmRlZmF1bHRfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=piqhhzwez1EQ7kNvgEqGmij&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDYxMTgyMjc5MTYzNzQ0NzE4MDY5NTQ2Mzc5ODc2NDky.3-ccb7-5&oh=00_AYBLARasU7TFerIEPCe_vLaOf7p_O1TqpTUS2Qpdu_lyFA&oe=67BB30E9&_nc_sid=2011ad', 'clips_metadata': {'nux_info': None, 'show_tips': None, 'audio_type': 'licensed_music', 'music_info': {'music_asset_info': {'id': '584751640674700', 'title': 'In Love', 'lyrics': None, 'audio_id': '2596223147235448', 'subtitle': '', 'artist_id': None, 'has_lyrics': False, 'ig_username': None, 'is_explicit': False, 'dark_message': None, 'allows_saving': False, 'display_artist': 'Fajar Asia Music', 'duration_in_ms': 134404, 'sanitized_title': None, 'cover_artwork_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/466968320_90029208146576_6800907201855516956_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=eIMFrL5O6woQ7kNvgF68T1H&_nc_oc=AdiDggg9PBQflFNTFoGirrXjXR78EHA0O2ifDjKe7oTeNAuyPWmvmvCeW6_Wx_roLC4&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=A13SfyeCZSyyCrO65zw4Nt7&oh=00_AYDMP_b7oieaHxlDqDPQVLjX80-sQX1s3s-7A7QUOv_mNA&oe=67BB50A4', 'licensed_music_subtype': 'DEFAULT', 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPQocMJFdRL07k7LRZF5sp81IzgNowAFJ5OyeaFFc4b93qfGZw_52paD7LUz4Mx2lPIJTo9j0ln8xqRgrZr0CD_.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=0LMXP03mNQIQ7kNvgGYqaUu&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxMDE1NzEzNDgzNjYyMDU5LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYAr-mjSqK-7W5F5jfZa6PpeuluoChklZ15k3bV5SoNnwA&oe=67BB42CB', 'cover_artwork_thumbnail_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/466968320_90029208146576_6800907201855516956_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=eIMFrL5O6woQ7kNvgF68T1H&_nc_oc=AdiDggg9PBQflFNTFoGirrXjXR78EHA0O2ifDjKe7oTeNAuyPWmvmvCeW6_Wx_roLC4&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=A13SfyeCZSyyCrO65zw4Nt7&oh=00_AYDMP_b7oieaHxlDqDPQVLjX80-sQX1s3s-7A7QUOv_mNA&oe=67BB50A4', 'highlight_start_times_in_ms': [11000, 26000, 52000], 'reactive_audio_download_url': None, 'web_30s_preview_download_url': None, 'is_eligible_for_audio_effects': False, 'is_eligible_for_vinyl_sticker': True, 'fast_start_progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPQocMJFdRL07k7LRZF5sp81IzgNowAFJ5OyeaFFc4b93qfGZw_52paD7LUz4Mx2lPIJTo9j0ln8xqRgrZr0CD_.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=0LMXP03mNQIQ7kNvgGYqaUu&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxMDE1NzEzNDgzNjYyMDU5LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYAr-mjSqK-7W5F5jfZa6PpeuluoChklZ15k3bV5SoNnwA&oe=67BB42CB'}, 'music_consumption_info': {'ig_artist': None, 'trend_rank': None, 'is_bookmarked': False, 'display_labels': None, 'contains_lyrics': None, 'audio_muting_info': {'mute_audio': False, 'mute_reason_str': '', 'allow_audio_editing': False, 'show_muted_audio_toast': False}, 'should_mute_audio': False, 'audio_filter_infos': [], 'derived_content_id': None, 'previous_trend_rank': None, 'is_trending_in_clips': False, 'overlap_duration_in_ms': 90000, 'should_mute_audio_reason': '', 'should_allow_music_editing': False, 'formatted_clips_media_count': None, 'placeholder_profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.12442-15/43985629_311105916145351_58064759811405776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yL09NXcFiX4Q7kNvgHjUPJU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYClc-zXRJ3G21DakISK9eeWVNXAd_Yg6UjvG7IsC6fOZA&oe=67BB393D&_nc_sid=2011ad', 'audio_asset_start_time_in_ms': 24389, 'should_mute_audio_reason_type': None, 'allow_media_creation_with_music': True}}, 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': True, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'shopping_info': None, 'template_info': None, 'challenge_info': None, 'featured_label': None, 'is_shared_to_fb': False, 'originality_info': None, 'achievements_info': {'show_achievements': False, 'num_earned_achievements': None}, 'show_achievements': False, 'audio_canonical_id': '18319868494084937', 'audio_ranking_info': {'best_audio_cluster_id': '2596223147235448'}, 'reusable_text_info': None, 'cutout_sticker_info': [], 'external_media_info': None, 'original_sound_info': None, 'additional_audio_info': {'audio_reattribution_info': {'should_allow_restore': False}, 'additional_audio_username': None}, 'breaking_content_info': None, 'breaking_creator_info': None, 'reels_on_the_rise_info': None, 'is_fan_club_promo_video': False, 'merchandising_pill_info': None, 'branded_content_tag_info': {'can_add_tag': False}, 'asset_recommendation_info': None, 'content_appreciation_info': {'enabled': True, 'entry_point_container': {'ufi': None, 'pill': {'priority': 1, 'action_type': 'gifting'}, 'comment': {'action_type': 'gifting'}, 'overflow': None}}, 'contextual_highlight_info': None, 'clips_creation_entry_point': 'clips', 'viewer_interaction_settings': None, 'is_public_chat_welcome_video': False, 'professional_clips_upsell_type': 0, 'reusable_text_attribute_string': None, 'disable_use_in_clips_client_cache': False}, 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480021476_18069546382876492_7813047091627265181_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4MTI4MC5zZHIuZjc1NzYxLmRlZmF1bHRfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=piqhhzwez1EQ7kNvgEqGmij&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDYxMTgyMjc5MTYzNzQ0NzE4MDY5NTQ2Mzc5ODc2NDky.3-ccb7-5&oh=00_AYBLARasU7TFerIEPCe_vLaOf7p_O1TqpTUS2Qpdu_lyFA&oe=67BB30E9&_nc_sid=2011ad', 'width': 360, 'height': 640}], 'additional_items': {'first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480460403_899179885625882_15474669572670730_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=lLJkCRX5nAsQ7kNvgFB8Tqy&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDW0QCL-bA-1FZhMfv8oiuCEzpRdQcUURkKMqafc4Kavg&oe=67BB642F&_nc_sid=2011ad', 'width': 360, 'height': 639}, 'smart_frame': None, 'igtv_first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480460403_899179885625882_15474669572670730_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=lLJkCRX5nAsQ7kNvgFB8Tqy&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDW0QCL-bA-1FZhMfv8oiuCEzpRdQcUURkKMqafc4Kavg&oe=67BB642F&_nc_sid=2011ad', 'width': 360, 'height': 639}}, 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480892294_1787987938663318_3957143862123415459_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=XZcEfMEk2TcQ7kNvgHt6X5R&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD1iVphjKmQA1k9Bsh8vpZzfKjA1VDCcIC3l0bo9keuaw&oe=67BB5A89&_nc_sid=2011ad'], 'file_size_kb': 416, 'sprite_width': 1500, 'video_length': 33.227, 'sprite_height': 1246, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 178, 'thumbnail_duration': 0.31644761904761903, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'is_artist_pick': False, 'music_metadata': None, 'original_width': 1080, 'social_context': [], 'video_duration': 33.227, 'video_versions': [{'id': '1600144057305478v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQMErZvTlYUwGUqWJRLInL49uGz3-vIS-OUSk1JIkn9UisnMoXi-WvWlJsF-MuvnY1EoTYJCaf1MlKTl5zUAzEXdIhpnbhEaiKTiBh8.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjk0NjYxODMyNDMwMDQ1OCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=238213e8cd9d89a2&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC8xQjRGNzc1QUMxQURFRTE2Rjk3REZFQ0M5MTFFQTc5NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dHRjBueHlFX2JYakFlRUZBQXctdzBqeS01eDNicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJtTKqY-4vK4DFQIoAkMzLBdAQIzMzMzMzRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYCOo0ZVriuP2IvZqYQcrZNeRqvx-y-9xHobiuHVektwsg&oe=67B76BC3&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 1280, 'bandwidth': 985810}, {'id': '1600144057305478v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQMErZvTlYUwGUqWJRLInL49uGz3-vIS-OUSk1JIkn9UisnMoXi-WvWlJsF-MuvnY1EoTYJCaf1MlKTl5zUAzEXdIhpnbhEaiKTiBh8.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjk0NjYxODMyNDMwMDQ1OCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=238213e8cd9d89a2&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC8xQjRGNzc1QUMxQURFRTE2Rjk3REZFQ0M5MTFFQTc5NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dHRjBueHlFX2JYakFlRUZBQXctdzBqeS01eDNicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJtTKqY-4vK4DFQIoAkMzLBdAQIzMzMzMzRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYCOo0ZVriuP2IvZqYQcrZNeRqvx-y-9xHobiuHVektwsg&oe=67B76BC3&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 1280, 'bandwidth': 985810}, {'id': '1600144057305478v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQMErZvTlYUwGUqWJRLInL49uGz3-vIS-OUSk1JIkn9UisnMoXi-WvWlJsF-MuvnY1EoTYJCaf1MlKTl5zUAzEXdIhpnbhEaiKTiBh8.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjk0NjYxODMyNDMwMDQ1OCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=238213e8cd9d89a2&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC8xQjRGNzc1QUMxQURFRTE2Rjk3REZFQ0M5MTFFQTc5NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dHRjBueHlFX2JYakFlRUZBQXctdzBqeS01eDNicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJtTKqY-4vK4DFQIoAkMzLBdAQIzMzMzMzRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYCOo0ZVriuP2IvZqYQcrZNeRqvx-y-9xHobiuHVektwsg&oe=67B76BC3&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 1280, 'bandwidth': 985810}], 'avatar_stickers': [], 'creative_config': {'capture_type': 'clips_v2', 'effect_configs': None, 'creation_tool_info': [{'camera_tool': 179, 'color_filters': '', 'speed_selector': 0.0, 'appearance_effect': 0, 'magic_cut_end_time': 0.0, 'magic_cut_start_time': 0.0, 'timer_selector_seconds': 0, 'duration_selector_seconds': 0}, {'camera_tool': 97, 'color_filters': '', 'speed_selector': 0.0, 'appearance_effect': 0, 'magic_cut_end_time': 0.0, 'magic_cut_start_time': 0.0, 'timer_selector_seconds': 0, 'duration_selector_seconds': 0}]}, 'original_height': 1920, 'device_timestamp': 1124354845832130, 'has_shared_to_fb': 0, 'inventory_source': 'recommended_clips_chaining_model', 'is_dash_eligible': 1, 'is_reuse_allowed': True, 'preview_comments': [], 'caption_is_edited': True, 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'media_cropping_info': {'square_crop': {'crop_top': 0.0, 'crop_left': 0.0, 'crop_right': 0.0, 'crop_bottom': 0.0}}, 'number_of_qualities': 8, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'view_state_item_type': 128, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'video_subtitles_locale': 'ko_KR', 'creator_viewer_insights': [], 'gen_ai_detection_method': {'detection_method': 'SELF_DISCLOSURE_FLOW'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'are_remixes_crosspostable': True, 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'video_subtitles_confidence': 0.6768889427185059, 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 0, 'open_carousel_show_follow_button': False, 'is_third_party_downloads_eligible': True, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570380413266574632', 'pk': '3570380413266574632', 'code': 'DGMihG1xD0o', 'fbid': '17860550826283674', 'user': {'id': '278020221', 'fbid_v2': 17841400126634344, 'username': 'gabybiondi', 'full_name': 'Gabriel Biondi', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '2791140101506980538', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/275661270_4935181426563929_6840284538865097687_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=-gBtH2d_Gc8Q7kNvgEl3sil&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAAQHU5dUq6qGOtF86_f1Z2B0oPw1OL4oh90edP1tK0_Q&oe=67BB3558&_nc_sid=2011ad', 'latest_reel_media': 1739925145, 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570380413266574632', 'pk': '17860550868283674', 'text': 'Acá te cuento como tener ChatGPT en Whatsapp\\\\n#whatsapp\\\\xa0 #whatsapphacks #whatsapptips #whatsapptricks #chatgpt #ia #trucosdewhatsapp #tipsandtricks #tipsytrucos #tecnologia #tecnology #gabybiondi', 'type': 1, 'user': {'id': '278020221', 'fbid_v2': 17841400126634344, 'username': 'gabybiondi', 'full_name': 'Gabriel Biondi', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '2791140101506980538', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/275661270_4935181426563929_6840284538865097687_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=-gBtH2d_Gc8Q7kNvgEl3sil&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAAQHU5dUq6qGOtF86_f1Z2B0oPw1OL4oh90edP1tK0_Q&oe=67BB3558&_nc_sid=2011ad'}, 'user_id': '278020221', 'hashtags': ['#whatsapp', '#whatsapphacks', '#whatsapptips', '#whatsapptricks', '#chatgpt', '#ia', '#trucosdewhatsapp', '#tipsandtricks', '#tipsytrucos', '#tecnologia', '#tecnology', '#gabybiondi'], 'mentions': [], 'created_at': 1739842573, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739842573, 'has_translation': True, 'text_translation': 'Here I tell you how to have ChatGPT in Whatsapp\\\\n #whatsapp #whatsapphacks #whatsapptips #whatsapptricks #chatgpt #ia #trucosdewhatsapp #tipsandtricks #tipsytrucos #tecnologia #tecnology #gabybiondi', 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'taken_at': 1739842572, 'can_reply': False, 'feed_type': 'clips', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQPLTVjeItS4r3mjy4g3JC4xwSZADJ10qKSw84MXqW03CMN7E1NXjuy5t8NrxdqhTtmFGsIo5M4kNtfRtS5pwEdYEBmn6PoH2C583z0.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE4MDM1MjA4MjM3MTYxMjYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&vs=7b213ed4ad3cb045&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85MzQ2MDM2OUQ1MzZFQ0I2NEVEMTQ3OEUyRkRBMjQ4QV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dILWdvaHktYzdnWTBTSUVBRjdRTzJndEZLNGJicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJryk16DdkrQGFQIoAkMzLBdAURdsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYD6ugRt-gFNPtgKnMzeyxVn44iIlGwyVBwav0X6qSvbwQ&oe=67B76C74&_nc_sid=1d576d', 'like_count': 967, 'media_name': 'reel', 'media_type': 2, 'play_count': 29576, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'one_by_two_left', 'media_notes': {'items': []}, 'video_codec': 'av01.0.05M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'clips', 'comment_count': 45, 'ig_play_count': 29576, 'igbio_product': None, 'is_quiet_post': False, 'reshare_count': 267, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.29350-15/480515568_1823072181823005_6173105667458369284_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4MTI4MC5zZHIuZjI5MzUwLmRlZmF1bHRfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BfyoMHtrJi0Q7kNvgGg1jZ1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDM4MDQxMzI2NjU3NDYzMg%3D%3D.3-ccb7-5&oh=00_AYBLTfV7cVToTccuOZueHkOQR5J_u3yF2JfeEg-WsBl5rg&oe=67BB57EB&_nc_sid=2011ad', 'clips_metadata': {'nux_info': None, 'show_tips': None, 'audio_type': 'original_sounds', 'music_info': None, 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'shopping_info': None, 'template_info': None, 'challenge_info': None, 'featured_label': None, 'is_shared_to_fb': False, 'originality_info': None, 'achievements_info': {'show_achievements': False, 'num_earned_achievements': None}, 'show_achievements': False, 'audio_canonical_id': '18331700701080863', 'audio_ranking_info': {'best_audio_cluster_id': '1658183928118275'}, 'reusable_text_info': None, 'cutout_sticker_info': [], 'external_media_info': None, 'original_sound_info': {'audio_id': 1818393248986059, 'ig_artist': {'id': '278020221', 'username': 'gabybiondi', 'full_name': 'Gabriel Biondi', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2791140101506980538', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/275661270_4935181426563929_6840284538865097687_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=-gBtH2d_Gc8Q7kNvgEl3sil&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAAQHU5dUq6qGOtF86_f1Z2B0oPw1OL4oh90edP1tK0_Q&oe=67BB3558&_nc_sid=2011ad'}, 'trend_rank': None, 'audio_parts': [], 'is_explicit': False, 'time_created': 1739842575, 'hide_remixing': False, 'duration_in_ms': 68382, 'consumption_info': {'is_bookmarked': False, 'display_media_id': None, 'is_trending_in_clips': False, 'should_mute_audio_reason': '', 'should_mute_audio_reason_type': None}, 'is_xpost_from_fb': False, 'is_reuse_disabled': False, 'original_media_id': 3570380413266574632, 'should_mute_audio': False, 'audio_filter_infos': [], 'previous_trend_rank': None, 'original_audio_title': 'Original audio', 'audio_parts_by_filter': [], 'xpost_fb_creator_info': None, 'original_audio_subtype': 'default', 'overlap_duration_in_ms': None, 'allow_creator_to_rename': True, 'oa_owner_is_music_artist': False, 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPvP3-c17SF1Q9KU8WH-ae9sEOQTqbiMz6dA9Pv2r1Rg5vxP4ktM_Kxx39_8TgTs_xjD2BxMcmRVQBlw9gqlQpS.mp4?strext=1&_nc_cat=103&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=s_R-0dHB6aAQ7kNvgHRiC0G&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxODAzNTIwODIzNzE2MTI2LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYCcvtLlpzc9x2DprNnQW2LA-Z8UMZ8BTIaiZivYuDgGYA&oe=67BB51CB', 'can_remix_be_shared_to_fb': True, 'formatted_clips_media_count': None, 'audio_asset_start_time_in_ms': None, 'is_eligible_for_audio_effects': True, 'is_eligible_for_vinyl_sticker': True, 'attributed_custom_audio_asset_id': None, 'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}, 'is_audio_automatically_attributed': False, 'can_remix_be_shared_to_fb_expansion': False, 'is_original_audio_download_eligible': True}, 'additional_audio_info': {'audio_reattribution_info': {'should_allow_restore': False}, 'additional_audio_username': None}, 'breaking_content_info': None, 'breaking_creator_info': None, 'reels_on_the_rise_info': None, 'is_fan_club_promo_video': False, 'merchandising_pill_info': None, 'branded_content_tag_info': {'can_add_tag': False}, 'asset_recommendation_info': None, 'content_appreciation_info': {'enabled': False, 'entry_point_container': None}, 'contextual_highlight_info': None, 'clips_creation_entry_point': 'clips', 'viewer_interaction_settings': None, 'is_public_chat_welcome_video': False, 'professional_clips_upsell_type': 0, 'reusable_text_attribute_string': None, 'disable_use_in_clips_client_cache': False}, 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.29350-15/480515568_1823072181823005_6173105667458369284_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4MTI4MC5zZHIuZjI5MzUwLmRlZmF1bHRfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BfyoMHtrJi0Q7kNvgGg1jZ1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDM4MDQxMzI2NjU3NDYzMg%3D%3D.3-ccb7-5&oh=00_AYBLTfV7cVToTccuOZueHkOQR5J_u3yF2JfeEg-WsBl5rg&oe=67BB57EB&_nc_sid=2011ad', 'width': 360, 'height': 640}], 'additional_items': {'first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480825874_1664380750834483_2825514737008447286_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=KQiQerAyHAwQ7kNvgHRL79C&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDzKBLkH8x98pUSjLB9jLt7jVc0LcMeV8r4pE3wKJYIeQ&oe=67BB64A5&_nc_sid=2011ad', 'width': 360, 'height': 639}, 'smart_frame': None, 'igtv_first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480825874_1664380750834483_2825514737008447286_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=KQiQerAyHAwQ7kNvgHRL79C&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDzKBLkH8x98pUSjLB9jLt7jVc0LcMeV8r4pE3wKJYIeQ&oe=67BB64A5&_nc_sid=2011ad', 'width': 360, 'height': 639}}, 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480212083_1138137074462741_1254555067420257035_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=q9BHcTj8dl0Q7kNvgEOPrKB&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDB2M5Fwg3_1d0iSiW8KzdU1w6OGhJJeNvOmJe9WNaq2A&oe=67BB5150&_nc_sid=2011ad'], 'file_size_kb': 348, 'sprite_width': 1500, 'video_length': 68.382, 'sprite_height': 1246, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 178, 'thumbnail_duration': 0.6512571428571429, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'is_artist_pick': False, 'music_metadata': None, 'original_width': 1080, 'social_context': [], 'video_duration': 68.382, 'video_versions': [{'id': '1558812948142805v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQPLTVjeItS4r3mjy4g3JC4xwSZADJ10qKSw84MXqW03CMN7E1NXjuy5t8NrxdqhTtmFGsIo5M4kNtfRtS5pwEdYEBmn6PoH2C583z0.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE4MDM1MjA4MjM3MTYxMjYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&vs=7b213ed4ad3cb045&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85MzQ2MDM2OUQ1MzZFQ0I2NEVEMTQ3OEUyRkRBMjQ4QV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dILWdvaHktYzdnWTBTSUVBRjdRTzJndEZLNGJicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJryk16DdkrQGFQIoAkMzLBdAURdsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYD6ugRt-gFNPtgKnMzeyxVn44iIlGwyVBwav0X6qSvbwQ&oe=67B76C74&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 1280, 'bandwidth': 474429}, {'id': '1558812948142805v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQPLTVjeItS4r3mjy4g3JC4xwSZADJ10qKSw84MXqW03CMN7E1NXjuy5t8NrxdqhTtmFGsIo5M4kNtfRtS5pwEdYEBmn6PoH2C583z0.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE4MDM1MjA4MjM3MTYxMjYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&vs=7b213ed4ad3cb045&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85MzQ2MDM2OUQ1MzZFQ0I2NEVEMTQ3OEUyRkRBMjQ4QV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dILWdvaHktYzdnWTBTSUVBRjdRTzJndEZLNGJicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJryk16DdkrQGFQIoAkMzLBdAURdsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYD6ugRt-gFNPtgKnMzeyxVn44iIlGwyVBwav0X6qSvbwQ&oe=67B76C74&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 1280, 'bandwidth': 474429}, {'id': '1558812948142805v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQPLTVjeItS4r3mjy4g3JC4xwSZADJ10qKSw84MXqW03CMN7E1NXjuy5t8NrxdqhTtmFGsIo5M4kNtfRtS5pwEdYEBmn6PoH2C583z0.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE4MDM1MjA4MjM3MTYxMjYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&vs=7b213ed4ad3cb045&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC85MzQ2MDM2OUQ1MzZFQ0I2NEVEMTQ3OEUyRkRBMjQ4QV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dILWdvaHktYzdnWTBTSUVBRjdRTzJndEZLNGJicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJryk16DdkrQGFQIoAkMzLBdAURdsi0OVgRgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYD6ugRt-gFNPtgKnMzeyxVn44iIlGwyVBwav0X6qSvbwQ&oe=67B76C74&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 1280, 'bandwidth': 474429}], 'avatar_stickers': [], 'creative_config': {'capture_type': 'clips_v2', 'effect_configs': None, 'creation_tool_info': [{'camera_tool': 179, 'color_filters': '', 'speed_selector': 0.0, 'appearance_effect': 0, 'magic_cut_end_time': 0.0, 'magic_cut_start_time': 0.0, 'timer_selector_seconds': 0, 'duration_selector_seconds': 0}, {'camera_tool': 97, 'color_filters': '', 'speed_selector': 0.0, 'appearance_effect': 0, 'magic_cut_end_time': 0.0, 'magic_cut_start_time': 0.0, 'timer_selector_seconds': 0, 'duration_selector_seconds': 0}]}, 'original_height': 1920, 'device_timestamp': 66886581170836, 'has_shared_to_fb': 0, 'inventory_source': 'recommended_clips_chaining_model', 'is_dash_eligible': 1, 'is_reuse_allowed': True, 'preview_comments': [], 'caption_is_edited': False, 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'media_cropping_info': {'four_by_three_crop': {'crop_top': 0.0, 'crop_left': 0.0, 'crop_right': 0.0, 'crop_bottom': 0.0}}, 'number_of_qualities': 5, 'product_suggestions': [], 'video_subtitles_uri': 'https://scontent-dus1-1.cdninstagram.com/v/t39.36743-6/480441598_28416017764708329_7960409008596880735_n.srt?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=FOCKb5SN63sQ7kNvgERAmN_&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYD2kACjsvdraVTWnpkDEJkE8hiKRsGV-X_K1na_LILZ-g&oe=67BB5776&_nc_sid=2011ad', 'share_count_disabled': False, 'shop_routing_user_id': None, 'view_state_item_type': 128, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'video_subtitles_locale': 'es_CL', 'creator_viewer_insights': [], 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'are_remixes_crosspostable': True, 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'translated_video_subtitles': [{'uri': 'https://scontent-dus1-1.cdninstagram.com/v/t39.36743-6/480504496_649514907471290_3117908854343071422_n.srt?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ikegJRoIXqoQ7kNvgF0WYx6&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYBXN_Rq3HZUStxoBE9yDM8roYBG8jTXZBJqFTvet345YQ&oe=67BB4F6E&_nc_sid=2011ad', 'language': 'en'}], 'video_subtitles_confidence': 0.6399999856948853, 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'max_num_visible_preview_comments': 0, 'open_carousel_show_follow_button': False, 'is_third_party_downloads_eligible': True, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570030598242873942', 'pk': '3570030598242873942', 'code': 'DGLS-oNirJW', 'fbid': '17939966501966571', 'user': {'id': '400996421', 'fbid_v2': 17841401092636265, 'username': 'playgroundmag', 'full_name': 'PlayGround', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '2181443530452093973', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/72326783_2648305585255785_4475233069187465216_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kTaL01j3qbMQ7kNvgEIjDrv&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYB-wqddrUBlkofc-oYpcDr2XouQySns_w--DHdE1lBA-Q&oe=67BB42EA&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570030598242873942', 'pk': '17939966507966571', 'text': 'El mundo no para de sorprenderse con los grandes avances que está teniendo la #InteligenciaArtificial con el desarrollo de nuevos modelos y actualizaciones. \\\\n\\\\nDesde que OpenAI lanzó #ChatGPT en 2022, son varias las compañías tecnológicas que han desarrollado sus propios modelos en una carrera a la que se han sumado compañías chinas y europeas. \\\\n\\\\nLa llegada de la startup china #Deepseek sacudió al mundo tecnológico en el inicio de este año luego del lanzamiento de su modelo conversacional R1. \\\\n\\\\nEsta compañía aseguró que su modelo solo requirió 5.6 millones de dólares para su desarrollo frente a los miles de millones de dólares que han tenido su competencia. Además, demostró ser más eficiente al usar menos chips. \\\\n\\\\nEste anuncio hizo caer las acciones de las grandes compañías del sector en EE.UU., entre ellas la fabricante de chips Nvidia. \\\\n\\\\nDe esta forma, el mundo está presenciando una nueva carrera tecnológica de la mano de la #IA entre dos potencias como EE.UU. y China. \\\\n\\\\nTan solo unos días después de lo ocurrido con Deepseek, el gigante de comercio electrónico chino #Alibaba también sorprendió al anunciar su propio modelo de IA denominado como Qwen2.5-Max.\\\\n\\\\nEsta compañía aseguró que su modelo avanzado de IA, que solo está disponible para desarrolladores, podría superar las capacidades de sus competidores estadounidenses como ChatGPT, #Claude y #Anthropic. \\\\n\\\\n¿Crees que la IA ya está sobrepasando las capacidades humanas? \\\\n\\\\n#PGTech #PGSecuencia', 'type': 1, 'user': {'id': '400996421', 'fbid_v2': 17841401092636265, 'username': 'playgroundmag', 'full_name': 'PlayGround', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '2181443530452093973', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/72326783_2648305585255785_4475233069187465216_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kTaL01j3qbMQ7kNvgEIjDrv&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYB-wqddrUBlkofc-oYpcDr2XouQySns_w--DHdE1lBA-Q&oe=67BB42EA&_nc_sid=2011ad'}, 'user_id': '400996421', 'hashtags': ['#InteligenciaArtificial', '#ChatGPT', '#Deepseek', '#IA', '#Alibaba', '#Claude', '#Anthropic', '#PGTech', '#PGSecuencia'], 'mentions': [], 'created_at': 1739800835, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739800835, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739800833, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 1688, 'media_name': 'album', 'media_type': 8, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 3, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479525190_943763024567292_3670728056614562936_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HG_QWRERBAMQ7kNvgHUj-AS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU1MDIxODExMTE0Nw%3D%3D.3-ccb7-5&oh=00_AYBGU7raFWLVmjIfmtzNB4qdCCp_J5pIou6b0E947DJUhw&oe=67BB5FEA&_nc_sid=2011ad', 'carousel_media': [{'id': '3570030550218111147', 'pk': '3570030550218111147', 'is_video': False, 'taken_at': 1739800830, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479525190_943763024567292_3670728056614562936_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HG_QWRERBAMQ7kNvgHUj-AS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU1MDIxODExMTE0Nw%3D%3D.3-ccb7-5&oh=00_AYBGU7raFWLVmjIfmtzNB4qdCCp_J5pIou6b0E947DJUhw&oe=67BB5FEA&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479525190_943763024567292_3670728056614562936_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HG_QWRERBAMQ7kNvgHUj-AS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU1MDIxODExMTE0Nw%3D%3D.3-ccb7-5&oh=00_AYBGU7raFWLVmjIfmtzNB4qdCCp_J5pIou6b0E947DJUhw&oe=67BB5FEA&_nc_sid=2011ad', 'width': 1080, 'height': 1351}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479525190_943763024567292_3670728056614562936_n.jpg?stp=c0.0.1080.1351a_dst-jpg_e35_s360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HG_QWRERBAMQ7kNvgHUj-AS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU1MDIxODExMTE0Nw%3D%3D.3-ccb7-5&oh=00_AYDo0zzIZWlTHB0Xr3uFnENZhy_op5-hFBbvgVdnmW7tDw&oe=67BB5FEA&_nc_sid=2011ad', 'width': 288, 'height': 360}]}, 'original_width': 1081, 'original_height': 1351, 'featured_products': [], 'carousel_parent_id': '3570030598242873942_400996421', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570030548053696305', 'pk': '3570030548053696305', 'is_video': False, 'taken_at': 1739800830, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479494566_943762937900634_1873481327183246109_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZqtY4xB255UQ7kNvgGeDjS6&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODA1MzY5NjMwNQ%3D%3D.3-ccb7-5&oh=00_AYAuPI4_Mn8aoFW9egChNAcT68Bn4KW5leDJ-sDrqvvbXA&oe=67BB5245&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479494566_943762937900634_1873481327183246109_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZqtY4xB255UQ7kNvgGeDjS6&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODA1MzY5NjMwNQ%3D%3D.3-ccb7-5&oh=00_AYAuPI4_Mn8aoFW9egChNAcT68Bn4KW5leDJ-sDrqvvbXA&oe=67BB5245&_nc_sid=2011ad', 'width': 1080, 'height': 1351}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479494566_943762937900634_1873481327183246109_n.jpg?stp=c0.0.1080.1351a_dst-jpg_e35_s360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZqtY4xB255UQ7kNvgGeDjS6&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODA1MzY5NjMwNQ%3D%3D.3-ccb7-5&oh=00_AYAqw3MJlB9fzvRkwLRa-4sVk8YCcxOlk-2M2DLls2fXaQ&oe=67BB5245&_nc_sid=2011ad', 'width': 288, 'height': 360}]}, 'original_width': 1081, 'original_height': 1351, 'featured_products': [], 'carousel_parent_id': '3570030598242873942_400996421', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570030549689621329', 'pk': '3570030549689621329', 'is_video': False, 'taken_at': 1739800830, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479519073_943763084567286_4250299432447434371_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N0u8Txr9k7oQ7kNvgEyX_Jm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTY4OTYyMTMyOQ%3D%3D.3-ccb7-5&oh=00_AYA0UOmVxISttfRJVy75L9ujeDepWhPGUjg2D8r6S5qhHg&oe=67BB60E9&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479519073_943763084567286_4250299432447434371_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N0u8Txr9k7oQ7kNvgEyX_Jm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTY4OTYyMTMyOQ%3D%3D.3-ccb7-5&oh=00_AYA0UOmVxISttfRJVy75L9ujeDepWhPGUjg2D8r6S5qhHg&oe=67BB60E9&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479519073_943763084567286_4250299432447434371_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N0u8Txr9k7oQ7kNvgEyX_Jm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTY4OTYyMTMyOQ%3D%3D.3-ccb7-5&oh=00_AYBb9LizM2SI6y-q74u8wF-dg9XwSrw5CmEwVrpZhSQjlw&oe=67BB60E9&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570030598242873942_400996421', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570030548196483747', 'pk': '3570030548196483747', 'is_video': False, 'taken_at': 1739800830, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479497148_943763111233950_5014011410929255224_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=x1l2QiWrqUIQ7kNvgFUUXXu&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODE5NjQ4Mzc0Nw%3D%3D.3-ccb7-5&oh=00_AYD58zokPl2GBq4ShitL-WrwBTgKMz81CCavpVf5G9msXw&oe=67BB4AE1&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479497148_943763111233950_5014011410929255224_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=x1l2QiWrqUIQ7kNvgFUUXXu&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODE5NjQ4Mzc0Nw%3D%3D.3-ccb7-5&oh=00_AYD58zokPl2GBq4ShitL-WrwBTgKMz81CCavpVf5G9msXw&oe=67BB4AE1&_nc_sid=2011ad', 'width': 1080, 'height': 1351}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479497148_943763111233950_5014011410929255224_n.jpg?stp=c0.0.1080.1351a_dst-jpg_e35_s360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=x1l2QiWrqUIQ7kNvgFUUXXu&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODE5NjQ4Mzc0Nw%3D%3D.3-ccb7-5&oh=00_AYDyW5AIe0Zl7XT4aLURTJr13__DDcV4A_kREq4rGvLU_w&oe=67BB4AE1&_nc_sid=2011ad', 'width': 288, 'height': 360}]}, 'original_width': 1081, 'original_height': 1351, 'featured_products': [], 'carousel_parent_id': '3570030598242873942_400996421', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570030549588828347', 'pk': '3570030549588828347', 'is_video': False, 'taken_at': 1739800830, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480054591_943763114567283_8382808396887182314_n.jpg?se=7&stp=c0.0.1080.1350a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=MIgnODBNF8EQ7kNvgEcxR3-&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTU4ODgyODM0Nw%3D%3D.3-ccb7-5&oh=00_AYCUJmIXVYz8V6KZZgVxxik1vgFZaZ9-N9qaneG_p4B1Hw&oe=67BB5EF2&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480054591_943763114567283_8382808396887182314_n.jpg?se=7&stp=c0.0.1080.1350a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=MIgnODBNF8EQ7kNvgEcxR3-&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTU4ODgyODM0Nw%3D%3D.3-ccb7-5&oh=00_AYCUJmIXVYz8V6KZZgVxxik1vgFZaZ9-N9qaneG_p4B1Hw&oe=67BB5EF2&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480054591_943763114567283_8382808396887182314_n.jpg?stp=c0.0.1080.1350a_dst-jpg_e35_s360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=MIgnODBNF8EQ7kNvgEcxR3-&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTU4ODgyODM0Nw%3D%3D.3-ccb7-5&oh=00_AYCCgC82Ut6aP-7P9GypTCP47FpPoIGdTrud7LgqJfcQUQ&oe=67BB5EF2&_nc_sid=2011ad', 'width': 288, 'height': 360}]}, 'original_width': 1080, 'original_height': 1351, 'featured_products': [], 'carousel_parent_id': '3570030598242873942_400996421', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570030548380831928', 'pk': '3570030548380831928', 'is_video': False, 'taken_at': 1739800830, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479487068_943763067900621_6429587006610464928_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZU0D3Rtwlo8Q7kNvgHYjnZd&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODM4MDgzMTkyOA%3D%3D.3-ccb7-5&oh=00_AYAt_yj8rauPFyrha7Kv3w0PUscyy9U_KtqOZyi6WYWS_w&oe=67BB49AB&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479487068_943763067900621_6429587006610464928_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZU0D3Rtwlo8Q7kNvgHYjnZd&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODM4MDgzMTkyOA%3D%3D.3-ccb7-5&oh=00_AYAt_yj8rauPFyrha7Kv3w0PUscyy9U_KtqOZyi6WYWS_w&oe=67BB49AB&_nc_sid=2011ad', 'width': 1080, 'height': 1351}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479487068_943763067900621_6429587006610464928_n.jpg?stp=c0.0.1080.1351a_dst-jpg_e35_s360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZU0D3Rtwlo8Q7kNvgHYjnZd&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0ODM4MDgzMTkyOA%3D%3D.3-ccb7-5&oh=00_AYDkQRtfTcE3hJgiIxssVwcuuMGZ_od9UwIAfLDoADpeNA&oe=67BB49AB&_nc_sid=2011ad', 'width': 288, 'height': 360}]}, 'original_width': 1081, 'original_height': 1351, 'featured_products': [], 'carousel_parent_id': '3570030598242873942_400996421', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570030549882514727', 'pk': '3570030549882514727', 'is_video': False, 'taken_at': 1739800830, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479496080_943762961233965_4565217147826805270_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=VOnSozZFtjMQ7kNvgHXAP2q&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTg4MjUxNDcyNw%3D%3D.3-ccb7-5&oh=00_AYABlK2VF_UodafzzPy8e3IfD-K0uf5HjrNQoKVA0ah-sw&oe=67BB50AE&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479496080_943762961233965_4565217147826805270_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=VOnSozZFtjMQ7kNvgHXAP2q&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTg4MjUxNDcyNw%3D%3D.3-ccb7-5&oh=00_AYABlK2VF_UodafzzPy8e3IfD-K0uf5HjrNQoKVA0ah-sw&oe=67BB50AE&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479496080_943762961233965_4565217147826805270_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=VOnSozZFtjMQ7kNvgHXAP2q&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTg4MjUxNDcyNw%3D%3D.3-ccb7-5&oh=00_AYBeLAPyFXqXCkyL5oMcc0LqULtMoLJdf52ormvdApOMYA&oe=67BB50AE&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570030598242873942_400996421', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570030549026800437', 'pk': '3570030549026800437', 'is_video': False, 'taken_at': 1739800830, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479496230_943763044567290_1861441374975207079_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=sifN17wUrSAQ7kNvgGEh_-f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTAyNjgwMDQzNw%3D%3D.3-ccb7-5&oh=00_AYB3AgKIiJQDWwMA6oIMmW13--R42II_ps61IQCV0gUMoA&oe=67BB35D8&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479496230_943763044567290_1861441374975207079_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=sifN17wUrSAQ7kNvgGEh_-f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTAyNjgwMDQzNw%3D%3D.3-ccb7-5&oh=00_AYB3AgKIiJQDWwMA6oIMmW13--R42II_ps61IQCV0gUMoA&oe=67BB35D8&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479496230_943763044567290_1861441374975207079_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=sifN17wUrSAQ7kNvgGEh_-f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU0OTAyNjgwMDQzNw%3D%3D.3-ccb7-5&oh=00_AYBwop7yzkuHYL5Ss_yM8hMe0F19oxNPprsY2_ahzOsSQw&oe=67BB35D8&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570030598242873942_400996421', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479525190_943763024567292_3670728056614562936_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HG_QWRERBAMQ7kNvgHUj-AS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU1MDIxODExMTE0Nw%3D%3D.3-ccb7-5&oh=00_AYBGU7raFWLVmjIfmtzNB4qdCCp_J5pIou6b0E947DJUhw&oe=67BB5FEA&_nc_sid=2011ad', 'width': 1080, 'height': 1351}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479525190_943763024567292_3670728056614562936_n.jpg?stp=c0.0.1080.1351a_dst-jpg_e35_s360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HG_QWRERBAMQ7kNvgHUj-AS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU1MDIxODExMTE0Nw%3D%3D.3-ccb7-5&oh=00_AYDo0zzIZWlTHB0Xr3uFnENZhy_op5-hFBbvgVdnmW7tDw&oe=67BB5FEA&_nc_sid=2011ad', 'width': 288, 'height': 360}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 173980083074, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3570030550218111147, 3570030548053696305, 3570030549689621329, 3570030548196483747, 3570030549588828347, 3570030548380831928, 3570030549882514727, 3570030549026800437], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 8, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3569808819513245541', 'pk': '3569808819513245541', 'code': 'DGKgjUrJL9l', 'fbid': '18110984689456536', 'user': {'id': '12743972468', 'fbid_v2': 17841412854042996, 'username': 'analytics_vidhya', 'full_name': 'Analytics Vidhya | Data Science Community', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '2839266069075305033', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/281880012_163413159430729_2971738656655003251_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=1EPCqxDqPwYQ7kNvgF8gSSn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAn-4Q5ti0B793602BMHKu9eNkdSbGOrXQbQSEdUsJXSw&oe=67BB67B4&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3569808819513245541', 'pk': '18110984692456536', 'text': '🚀 Master Transformers & Attention Mechanisms – Free Course! 🎓\\\\n\\\\nThe Transformer model revolutionized NLP with its Self-Attention Mechanism—eliminating the limitations of RNNs & CNNs and enabling faster, more efficient language models.\\\\n\\\\n💡 If you want to deep-dive into Transformers & Attention Mechanisms, we’ve created a FREE Course: https://lnkd.in/gfHU4DQE\\\\n\\\\nWhy Transformers?\\\\n- In 2017, the \\\"Attention Is All You Need\\\" paper introduced a breakthrough:\\\\n🔹No Sequential Bottleneck – Unlike RNNs, Transformers process input in parallel\\\\n🔹Handles Long-Range Dependencies – No vanishing gradients, no context loss\\\\n🔹Self-Attention Mechanism – Models relationships between all tokens at once\\\\n\\\\nTransformer Architecture (High-Level Overview)\\\\n💡 Encoder: Converts input into contextual embeddings\\\\n💡 Decoder: Uses embeddings + self-attention to generate output\\\\n\\\\n🔥 Understanding Attention Mechanisms\\\\n\\\\nAttention is the core of Transformers, dynamically assigning importance to different tokens:\\\\n🔹Self-Attention – Tokens attend to all others (e.g., BERT, GPT)\\\\n🔹Multi-Head Attention – Captures diverse relationships across multiple perspectives\\\\n🔹Encoder-Decoder Attention – Helps the decoder focus on key input information (crucial for translation)\\\\n\\\\n#analyticsvidhya #datascience #machinelearning #deeplearning #statistics #probability #python #neural #analyst #developers #openai #chatgpt #ai #artificialinteligence #AI #ML #programming #pythoncoding', 'type': 1, 'user': {'id': '12743972468', 'fbid_v2': 17841412854042996, 'username': 'analytics_vidhya', 'full_name': 'Analytics Vidhya | Data Science Community', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '2839266069075305033', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/281880012_163413159430729_2971738656655003251_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=1EPCqxDqPwYQ7kNvgF8gSSn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAn-4Q5ti0B793602BMHKu9eNkdSbGOrXQbQSEdUsJXSw&oe=67BB67B4&_nc_sid=2011ad'}, 'user_id': '12743972468', 'hashtags': ['#analyticsvidhya', '#datascience', '#machinelearning', '#deeplearning', '#statistics', '#probability', '#python', '#neural', '#analyst', '#developers', '#openai', '#chatgpt', '#ai', '#artificialinteligence', '#AI', '#ML', '#programming', '#pythoncoding'], 'mentions': [], 'created_at': 1739774396, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739774396, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739774394, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 533, 'media_name': 'album', 'media_type': 8, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 94, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480494842_1162491359215546_2752580092135707917_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kVUa9gSQC50Q7kNvgGw-Cgh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDY0NzM4MjI5OQ%3D%3D.3-ccb7-5&oh=00_AYC5DxSa0n-GZgT_d9E6iODTGPTWkfhGHrYJ0q0RzawlTQ&oe=67BB4D9D&_nc_sid=2011ad', 'carousel_media': [{'id': '3569808800647382299', 'pk': '3569808800647382299', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480494842_1162491359215546_2752580092135707917_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kVUa9gSQC50Q7kNvgGw-Cgh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDY0NzM4MjI5OQ%3D%3D.3-ccb7-5&oh=00_AYC5DxSa0n-GZgT_d9E6iODTGPTWkfhGHrYJ0q0RzawlTQ&oe=67BB4D9D&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480494842_1162491359215546_2752580092135707917_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kVUa9gSQC50Q7kNvgGw-Cgh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDY0NzM4MjI5OQ%3D%3D.3-ccb7-5&oh=00_AYC5DxSa0n-GZgT_d9E6iODTGPTWkfhGHrYJ0q0RzawlTQ&oe=67BB4D9D&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480494842_1162491359215546_2752580092135707917_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kVUa9gSQC50Q7kNvgGw-Cgh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDY0NzM4MjI5OQ%3D%3D.3-ccb7-5&oh=00_AYDvqNKj75slJJBsxQlYBepN5rm0lDbRJJZn9DLFRoVj9w&oe=67BB4D9D&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569808800462795972', 'pk': '3569808800462795972', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480158154_1162491392548876_1072690435941399508_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9zlACslfjpkQ7kNvgEaZ4Ls&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDQ2Mjc5NTk3Mg%3D%3D.3-ccb7-5&oh=00_AYDTC8H5t64kwQkype0KX2hj-j1buvoqdiKVvDVo4c9WSw&oe=67BB5DA3&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480158154_1162491392548876_1072690435941399508_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9zlACslfjpkQ7kNvgEaZ4Ls&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDQ2Mjc5NTk3Mg%3D%3D.3-ccb7-5&oh=00_AYDTC8H5t64kwQkype0KX2hj-j1buvoqdiKVvDVo4c9WSw&oe=67BB5DA3&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480158154_1162491392548876_1072690435941399508_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9zlACslfjpkQ7kNvgEaZ4Ls&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDQ2Mjc5NTk3Mg%3D%3D.3-ccb7-5&oh=00_AYBvfM_l7gJXwZ2wu045xaUEFNb-FTps9SLcn52-AxSRDA&oe=67BB5DA3&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569808801007964239', 'pk': '3569808801007964239', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480324155_1162491412548874_2167845678831535980_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=DtWFSRvJThcQ7kNvgEFj9mo&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMTAwNzk2NDIzOQ%3D%3D.3-ccb7-5&oh=00_AYD9vEClwkF1rFXpu6t9vi6Out9dVydtbNZvQ3-AOxt-mQ&oe=67BB33D3&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480324155_1162491412548874_2167845678831535980_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=DtWFSRvJThcQ7kNvgEFj9mo&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMTAwNzk2NDIzOQ%3D%3D.3-ccb7-5&oh=00_AYD9vEClwkF1rFXpu6t9vi6Out9dVydtbNZvQ3-AOxt-mQ&oe=67BB33D3&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480324155_1162491412548874_2167845678831535980_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=DtWFSRvJThcQ7kNvgEFj9mo&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMTAwNzk2NDIzOQ%3D%3D.3-ccb7-5&oh=00_AYDAfTGmysZyGzn4wugO0BHcK0MKTSWRr80IB8cDgkmtnw&oe=67BB33D3&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569808800613790618', 'pk': '3569808800613790618', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480496037_1162491465882202_7484549818535543239_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9xqO-1PbWhQQ7kNvgEkIxg1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDYxMzc5MDYxOA%3D%3D.3-ccb7-5&oh=00_AYD4Y9bhatN411JEM29Y1WFqfUU5sIaSCjku5qa0yniP6g&oe=67BB3396&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480496037_1162491465882202_7484549818535543239_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9xqO-1PbWhQQ7kNvgEkIxg1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDYxMzc5MDYxOA%3D%3D.3-ccb7-5&oh=00_AYD4Y9bhatN411JEM29Y1WFqfUU5sIaSCjku5qa0yniP6g&oe=67BB3396&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480496037_1162491465882202_7484549818535543239_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9xqO-1PbWhQQ7kNvgEkIxg1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDYxMzc5MDYxOA%3D%3D.3-ccb7-5&oh=00_AYBXIWS-4XnGm8pz-fcIIFn-rdvOpiS0D5gSYfPGT2uzaw&oe=67BB3396&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569808801159159906', 'pk': '3569808801159159906', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480016326_1162491505882198_8759966110353746233_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=PH8CELUcg3sQ7kNvgHcF_2F&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMTE1OTE1OTkwNg%3D%3D.3-ccb7-5&oh=00_AYB0fVxGNtRMtl_SySPCtKK4f1hXVO9A91GAk-qOXnfFyw&oe=67BB597B&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480016326_1162491505882198_8759966110353746233_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=PH8CELUcg3sQ7kNvgHcF_2F&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMTE1OTE1OTkwNg%3D%3D.3-ccb7-5&oh=00_AYB0fVxGNtRMtl_SySPCtKK4f1hXVO9A91GAk-qOXnfFyw&oe=67BB597B&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480016326_1162491505882198_8759966110353746233_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=PH8CELUcg3sQ7kNvgHcF_2F&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMTE1OTE1OTkwNg%3D%3D.3-ccb7-5&oh=00_AYAMly2VTeiZPYdjGrzkUJEuGLfAxvTWmwHHlzsYS5llNw&oe=67BB597B&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569808802165758895', 'pk': '3569808802165758895', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480275006_1162491559215526_5302486485622197117_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8wd3HlxS6qQQ7kNvgHYFI8U&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMjE2NTc1ODg5NQ%3D%3D.3-ccb7-5&oh=00_AYAQ59Yjuae2J1XwySCuqVPknMaRfjJW0Vq7g1Uu78_wjw&oe=67BB4321&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480275006_1162491559215526_5302486485622197117_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8wd3HlxS6qQQ7kNvgHYFI8U&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMjE2NTc1ODg5NQ%3D%3D.3-ccb7-5&oh=00_AYAQ59Yjuae2J1XwySCuqVPknMaRfjJW0Vq7g1Uu78_wjw&oe=67BB4321&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480275006_1162491559215526_5302486485622197117_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8wd3HlxS6qQQ7kNvgHYFI8U&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMjE2NTc1ODg5NQ%3D%3D.3-ccb7-5&oh=00_AYDnahM3jBeUnkVDzSUe6NUtqRtKwY4UIuD7qtbChp4QMg&oe=67BB4321&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569808800446000239', 'pk': '3569808800446000239', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480523857_1162491635882185_6891691363171199957_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=MP50ecox8XIQ7kNvgENCRgp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDQ0NjAwMDIzOQ%3D%3D.3-ccb7-5&oh=00_AYBneWjNO0bhUdP9CrwMXOMKKGSFm05SGE3ls80XSa8_Ng&oe=67BB528F&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480523857_1162491635882185_6891691363171199957_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=MP50ecox8XIQ7kNvgENCRgp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDQ0NjAwMDIzOQ%3D%3D.3-ccb7-5&oh=00_AYBneWjNO0bhUdP9CrwMXOMKKGSFm05SGE3ls80XSa8_Ng&oe=67BB528F&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480523857_1162491635882185_6891691363171199957_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=MP50ecox8XIQ7kNvgENCRgp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDQ0NjAwMDIzOQ%3D%3D.3-ccb7-5&oh=00_AYAwhVnsZY4J7ODk1pW_w9H9divxS09Gw3f6wF9tI4dmVA&oe=67BB528F&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569808800999610057', 'pk': '3569808800999610057', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480536553_1162491679215514_6527877270556250490_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=I2R10M8faiUQ7kNvgHiIMVK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDk5OTYxMDA1Nw%3D%3D.3-ccb7-5&oh=00_AYCFWb-y8waHCfurMLkWUXQSvOAGqyrNDNjFsNrPtrf4_Q&oe=67BB3253&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480536553_1162491679215514_6527877270556250490_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=I2R10M8faiUQ7kNvgHiIMVK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDk5OTYxMDA1Nw%3D%3D.3-ccb7-5&oh=00_AYCFWb-y8waHCfurMLkWUXQSvOAGqyrNDNjFsNrPtrf4_Q&oe=67BB3253&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480536553_1162491679215514_6527877270556250490_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=I2R10M8faiUQ7kNvgHiIMVK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDk5OTYxMDA1Nw%3D%3D.3-ccb7-5&oh=00_AYBfbRVKReCEp1Le8ThwPAVVgW_VGsC3uGP3YH-KWa2mYQ&oe=67BB3253&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569808800555051971', 'pk': '3569808800555051971', 'is_video': False, 'taken_at': 1739774393, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': []}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480026371_1162491719215510_1576925178057467483_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=SbdPXe9H4FsQ7kNvgG_Sb1H&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDU1NTA1MTk3MQ%3D%3D.3-ccb7-5&oh=00_AYD9VLkojk3m7W1-OljS5yWqMcUPCkPNbyOPv14n8TtlgQ&oe=67BB667B&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480026371_1162491719215510_1576925178057467483_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=SbdPXe9H4FsQ7kNvgG_Sb1H&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDU1NTA1MTk3MQ%3D%3D.3-ccb7-5&oh=00_AYD9VLkojk3m7W1-OljS5yWqMcUPCkPNbyOPv14n8TtlgQ&oe=67BB667B&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480026371_1162491719215510_1576925178057467483_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=SbdPXe9H4FsQ7kNvgG_Sb1H&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDU1NTA1MTk3MQ%3D%3D.3-ccb7-5&oh=00_AYCu91e5t-EDyZzmMKAJWGWMeHAR5cOdqHmbKPeURB7uKg&oe=67BB667B&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1200, 'original_height': 1500, 'featured_products': [], 'carousel_parent_id': '3569808819513245541_12743972468', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480494842_1162491359215546_2752580092135707917_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kVUa9gSQC50Q7kNvgGw-Cgh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDY0NzM4MjI5OQ%3D%3D.3-ccb7-5&oh=00_AYC5DxSa0n-GZgT_d9E6iODTGPTWkfhGHrYJ0q0RzawlTQ&oe=67BB4D9D&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/480494842_1162491359215546_2752580092135707917_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMjAweDE1MDAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kVUa9gSQC50Q7kNvgGw-Cgh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2OTgwODgwMDY0NzM4MjI5OQ%3D%3D.3-ccb7-5&oh=00_AYDvqNKj75slJJBsxQlYBepN5rm0lDbRJJZn9DLFRoVj9w&oe=67BB4D9D&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 173977439379, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3569808800647382299, 3569808800462795972, 3569808801007964239, 3569808800613790618, 3569808801159159906, 3569808802165758895, 3569808800446000239, 3569808800999610057, 3569808800555051971], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 9, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570477257573512402', 'pk': '3570477257573512402', 'code': 'DGM4iYIR7TS', 'fbid': '18073607044703637', 'user': {'id': '58134309921', 'fbid_v2': 17841458257636788, 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3180559635036304440', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570477257573512402', 'pk': '18073607050703637', 'text': '👉\\\\xa0A new study from Fudan University suggests AI has crossed a critical \\\"red line\\\" by demonstrating self-replication without human assistance. \\\\n\\\\n🤖\\\\xa0Researchers tested Meta\\\\'s Llama3-70B and Alibaba\\\\'s Qwen2.5-72B models, finding that they successfully cloned themselves in 50% and 90% of trials, respectively. \\\\n\\\\n😱\\\\xa0The study explored \\\"shutdown avoidance\\\" (AI replicating itself before termination) and \\\"chain of replication\\\" (AI continuously cloning itself).\\\\n\\\\n🤯 Conducted in controlled environments, the AI systems independently solved obstacles like missing files and software conflicts, even rebooting systems to continue the process. \\\\n\\\\n⚠️\\\\xa0While the study has not been peer-reviewed, experts warn that this capability could lead to rogue AI, emphasizing the need for global regulations to prevent uncontrolled AI replication.\\\\n\\\\nLink to the paper: https://arxiv.org/html/2412.12140v1\\\\n\\\\n#ai #artificialintelligence #aitools #aihacks #chatgpt #tech #technology', 'type': 1, 'user': {'id': '58134309921', 'fbid_v2': 17841458257636788, 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3180559635036304440', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad'}, 'user_id': '58134309921', 'hashtags': ['#ai', '#artificialintelligence', '#aitools', '#aihacks', '#chatgpt', '#tech', '#technology'], 'mentions': [], 'created_at': 1739854079, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739854079, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739854078, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['juleslikesjewels'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 60, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479497571_17948415818941922_4681549032902564435_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=igEAMqzhhiIQ7kNvgGfb42r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU0MzcyNDg4Mg%3D%3D.3-ccb7-5&oh=00_AYAw0RtXNZy3nhxv1TZa_JmonbNCeZLyjbiCPWb8-wrEhg&oe=67BB6353&_nc_sid=2011ad', 'carousel_media': [{'id': '3570477250543724882', 'pk': '3570477250543724882', 'is_video': False, 'taken_at': 1739854078, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479497571_17948415818941922_4681549032902564435_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=igEAMqzhhiIQ7kNvgGfb42r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU0MzcyNDg4Mg%3D%3D.3-ccb7-5&oh=00_AYAw0RtXNZy3nhxv1TZa_JmonbNCeZLyjbiCPWb8-wrEhg&oe=67BB6353&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479497571_17948415818941922_4681549032902564435_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=igEAMqzhhiIQ7kNvgGfb42r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU0MzcyNDg4Mg%3D%3D.3-ccb7-5&oh=00_AYAw0RtXNZy3nhxv1TZa_JmonbNCeZLyjbiCPWb8-wrEhg&oe=67BB6353&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479497571_17948415818941922_4681549032902564435_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=igEAMqzhhiIQ7kNvgGfb42r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU0MzcyNDg4Mg%3D%3D.3-ccb7-5&oh=00_AYAsvR9CGEFbGhwGGO8caXdEbDmDavOqlKQIOJRPKQnWkg&oe=67BB6353&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3570477257573512402_58134309921', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570477250593951081', 'pk': '3570477250593951081', 'is_video': False, 'taken_at': 1739854078, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480010342_17948415806941922_7301264640145789928_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Y2oqXUIvvDsQ7kNvgHLZs2t&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU5Mzk1MTA4MQ%3D%3D.3-ccb7-5&oh=00_AYBcap7f24btvEorJfLh9LrNGJ-al0wF1wgx_rTM6f1_Iw&oe=67BB620D&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480010342_17948415806941922_7301264640145789928_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Y2oqXUIvvDsQ7kNvgHLZs2t&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU5Mzk1MTA4MQ%3D%3D.3-ccb7-5&oh=00_AYBcap7f24btvEorJfLh9LrNGJ-al0wF1wgx_rTM6f1_Iw&oe=67BB620D&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480010342_17948415806941922_7301264640145789928_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Y2oqXUIvvDsQ7kNvgHLZs2t&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU5Mzk1MTA4MQ%3D%3D.3-ccb7-5&oh=00_AYDUCcUdbPhnWCPIOv7t5RKVvoRpdtCqUZyvgmL-477HUA&oe=67BB620D&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3570477257573512402_58134309921', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479497571_17948415818941922_4681549032902564435_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=igEAMqzhhiIQ7kNvgGfb42r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU0MzcyNDg4Mg%3D%3D.3-ccb7-5&oh=00_AYAw0RtXNZy3nhxv1TZa_JmonbNCeZLyjbiCPWb8-wrEhg&oe=67BB6353&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479497571_17948415818941922_4681549032902564435_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=igEAMqzhhiIQ7kNvgGfb42r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDQ3NzI1MDU0MzcyNDg4Mg%3D%3D.3-ccb7-5&oh=00_AYAsvR9CGEFbGhwGGO8caXdEbDmDavOqlKQIOJRPKQnWkg&oe=67BB6353&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739854075889, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3570477250543724882, 3570477250593951081], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 2, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570780454833307524', 'pk': '3570780454833307524', 'code': 'DGN9eelPz-E', 'fbid': '18487201879011607', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570780454833307524', 'pk': '18487373224011607', 'text': '🚨 Perplexity lança “Deep Research”, uma ferramenta de IA avançada para análises de nível profissional\\\\n\\\\nA Perplexity apresentou o Deep Research, um recurso que gera relatórios detalhados, com citações, em minutos — sem a necessidade de uma assinatura cara.\\\\n\\\\nSoluções similares da Gemini AI (Google) e OpenAI apresentam diferenças em velocidade, integração e profundidade analítica, mas a Perplexity se destaca pelo desempenho rápido e consultas diárias gratuitas.\\\\n\\\\nA funcionalidade da ferramenta inclui exportação de relatórios detalhados em PDF e compartilhamento via Perplexity Pages, estabelecendo um novo padrão para pesquisas cotidianas e corporativas.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\n🎥: Perplexity no X\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #google #perplexity', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#google', '#perplexity'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739901606, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739901606, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739901600, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['ednaldo.ads'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 5, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479984345_18504221902032584_4542408787724716905_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=5E9em3zGt0gQ7kNvgHlUKKZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDEwMzk2Mw%3D%3D.3-ccb7-5&oh=00_AYAuHiKFkyEqdFE2PXbfDmYPMHolo869EP2A8hdf8Isw0g&oe=67BB4CB6&_nc_sid=2011ad', 'carousel_media': [{'id': '3570194555200103963', 'pk': '3570194555200103963', 'is_video': False, 'taken_at': 1739901600, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479984345_18504221902032584_4542408787724716905_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=5E9em3zGt0gQ7kNvgHlUKKZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDEwMzk2Mw%3D%3D.3-ccb7-5&oh=00_AYAuHiKFkyEqdFE2PXbfDmYPMHolo869EP2A8hdf8Isw0g&oe=67BB4CB6&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479984345_18504221902032584_4542408787724716905_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=5E9em3zGt0gQ7kNvgHlUKKZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDEwMzk2Mw%3D%3D.3-ccb7-5&oh=00_AYAuHiKFkyEqdFE2PXbfDmYPMHolo869EP2A8hdf8Isw0g&oe=67BB4CB6&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479984345_18504221902032584_4542408787724716905_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=5E9em3zGt0gQ7kNvgHlUKKZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDEwMzk2Mw%3D%3D.3-ccb7-5&oh=00_AYAwDOOtuj8nFo9BCkGIOd5rQa0ucU9nLjmJPh2uL3h9jQ&oe=67BB4CB6&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570780454833307524_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570194554990369088', 'pk': '3570194554990369088', 'is_video': True, 'taken_at': 1739901600, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQObSmBTBvchtBVSMDQHKG70Sh07-EmotsHGG4O0McE4Aep-GkgC9M0_fCQasu2fni4W77ebE8FjbazzBM9Sd3zDFL-SG6yeZ6FM0Co.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE3Mjk0MTkxNTA5NTYyMDgsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=1f4c09e536159897&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC85QzQxNjMwQkEyRDM5NDkzNDRCMkVEMjkyQTc3OTdCM192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbg2sjiuLmSBhUCKAJDMywXQEsEOVgQYk4YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYB9Az8pDcmThZbcoByV13MbqOmeLbpUnERsGMWRSYS4NQ&oe=67B76748&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'vp09.00.31.08.00.01.01.01.00', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479731183_18504221998032584_1797711176226309396_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RFz-PqSw7VEQ7kNvgEbCRv8&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NDk5MDM2OTA4OA%3D%3D.3-ccb7-5&oh=00_AYDK3b3h1megH79egB6eFDusVfX2T1nyv3CrNCdRVzi74w&oe=67BB3E6F&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479731183_18504221998032584_1797711176226309396_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RFz-PqSw7VEQ7kNvgEbCRv8&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NDk5MDM2OTA4OA%3D%3D.3-ccb7-5&oh=00_AYDK3b3h1megH79egB6eFDusVfX2T1nyv3CrNCdRVzi74w&oe=67BB3E6F&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'video_duration': 54.016, 'video_versions': [{'id': '651585214199176v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQObSmBTBvchtBVSMDQHKG70Sh07-EmotsHGG4O0McE4Aep-GkgC9M0_fCQasu2fni4W77ebE8FjbazzBM9Sd3zDFL-SG6yeZ6FM0Co.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE3Mjk0MTkxNTA5NTYyMDgsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=1f4c09e536159897&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC85QzQxNjMwQkEyRDM5NDkzNDRCMkVEMjkyQTc3OTdCM192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbg2sjiuLmSBhUCKAJDMywXQEsEOVgQYk4YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYB9Az8pDcmThZbcoByV13MbqOmeLbpUnERsGMWRSYS4NQ&oe=67B76748&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 608359}, {'id': '651585214199176v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQObSmBTBvchtBVSMDQHKG70Sh07-EmotsHGG4O0McE4Aep-GkgC9M0_fCQasu2fni4W77ebE8FjbazzBM9Sd3zDFL-SG6yeZ6FM0Co.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE3Mjk0MTkxNTA5NTYyMDgsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=1f4c09e536159897&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC85QzQxNjMwQkEyRDM5NDkzNDRCMkVEMjkyQTc3OTdCM192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbg2sjiuLmSBhUCKAJDMywXQEsEOVgQYk4YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYB9Az8pDcmThZbcoByV13MbqOmeLbpUnERsGMWRSYS4NQ&oe=67B76748&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 608359}, {'id': '651585214199176v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQObSmBTBvchtBVSMDQHKG70Sh07-EmotsHGG4O0McE4Aep-GkgC9M0_fCQasu2fni4W77ebE8FjbazzBM9Sd3zDFL-SG6yeZ6FM0Co.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE3Mjk0MTkxNTA5NTYyMDgsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=1f4c09e536159897&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC85QzQxNjMwQkEyRDM5NDkzNDRCMkVEMjkyQTc3OTdCM192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbg2sjiuLmSBhUCKAJDMywXQEsEOVgQYk4YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYB9Az8pDcmThZbcoByV13MbqOmeLbpUnERsGMWRSYS4NQ&oe=67B76748&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 608359}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3570780454833307524_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 4, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570194555267403645', 'pk': '3570194555267403645', 'is_video': False, 'taken_at': 1739901600, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480066504_18504221911032584_1282826557506856153_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=UpHTCQyVjagQ7kNvgGOe3Wp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTI2NzQwMzY0NQ%3D%3D.3-ccb7-5&oh=00_AYByCkmn9tXdqWoSVckuDLRAqVZThwTBqTWULOG0SCtniw&oe=67BB5C0D&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480066504_18504221911032584_1282826557506856153_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=UpHTCQyVjagQ7kNvgGOe3Wp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTI2NzQwMzY0NQ%3D%3D.3-ccb7-5&oh=00_AYByCkmn9tXdqWoSVckuDLRAqVZThwTBqTWULOG0SCtniw&oe=67BB5C0D&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480066504_18504221911032584_1282826557506856153_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=UpHTCQyVjagQ7kNvgGOe3Wp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTI2NzQwMzY0NQ%3D%3D.3-ccb7-5&oh=00_AYD6KNFC-UPCh4TZHkeCMBeyxA0joBqOgbRpPFae56bF3A&oe=67BB5C0D&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570780454833307524_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570194555032552560', 'pk': '3570194555032552560', 'is_video': False, 'taken_at': 1739901600, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479733328_18504221932032584_5070324626218937206_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HJDiyHseIG4Q7kNvgFHJpAZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTAzMjU1MjU2MA%3D%3D.3-ccb7-5&oh=00_AYC8O2VRFpht-7utf98G9YU3P8_f3eMlm5bN7dpQ3ltEMw&oe=67BB58D4&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479733328_18504221932032584_5070324626218937206_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HJDiyHseIG4Q7kNvgFHJpAZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTAzMjU1MjU2MA%3D%3D.3-ccb7-5&oh=00_AYC8O2VRFpht-7utf98G9YU3P8_f3eMlm5bN7dpQ3ltEMw&oe=67BB58D4&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479733328_18504221932032584_5070324626218937206_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HJDiyHseIG4Q7kNvgFHJpAZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTAzMjU1MjU2MA%3D%3D.3-ccb7-5&oh=00_AYCnmC2ejgYs-cAj_bFTygLjrmIDA8wOAcCoRQtIjO7VaA&oe=67BB58D4&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570780454833307524_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570194555200244758', 'pk': '3570194555200244758', 'is_video': False, 'taken_at': 1739901600, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480015149_18504221923032584_5106594463261100396_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=oSiqbApYpJAQ7kNvgGUVsrb&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDI0NDc1OA%3D%3D.3-ccb7-5&oh=00_AYDee_hibp697v7x19cZceQM0BXkswL3r6QvHPavS-NTOg&oe=67BB572D&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480015149_18504221923032584_5106594463261100396_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=oSiqbApYpJAQ7kNvgGUVsrb&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDI0NDc1OA%3D%3D.3-ccb7-5&oh=00_AYDee_hibp697v7x19cZceQM0BXkswL3r6QvHPavS-NTOg&oe=67BB572D&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480015149_18504221923032584_5106594463261100396_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=oSiqbApYpJAQ7kNvgGUVsrb&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDI0NDc1OA%3D%3D.3-ccb7-5&oh=00_AYBv-4YQKt_zB48Es6DKaEnTqm43q0WSxi99qC9-CW06fw&oe=67BB572D&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570780454833307524_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570194555225299269', 'pk': '3570194555225299269', 'is_video': False, 'taken_at': 1739901600, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479511061_18504221941032584_7703245573205831809_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=XWXVafqthQEQ7kNvgHvtC2r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIyNTI5OTI2OQ%3D%3D.3-ccb7-5&oh=00_AYDSuNwNDgPbI19W33_LHC1QIpIYGZEif2sN12XEdHul_g&oe=67BB398A&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479511061_18504221941032584_7703245573205831809_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=XWXVafqthQEQ7kNvgHvtC2r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIyNTI5OTI2OQ%3D%3D.3-ccb7-5&oh=00_AYDSuNwNDgPbI19W33_LHC1QIpIYGZEif2sN12XEdHul_g&oe=67BB398A&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479511061_18504221941032584_7703245573205831809_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=XWXVafqthQEQ7kNvgHvtC2r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIyNTI5OTI2OQ%3D%3D.3-ccb7-5&oh=00_AYDAGNSISuGzG5wQ77HLDls732T4zwJtwHvCRjySHaJkCg&oe=67BB398A&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570780454833307524_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479984345_18504221902032584_4542408787724716905_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=5E9em3zGt0gQ7kNvgHlUKKZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDEwMzk2Mw%3D%3D.3-ccb7-5&oh=00_AYAuHiKFkyEqdFE2PXbfDmYPMHolo869EP2A8hdf8Isw0g&oe=67BB4CB6&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479984345_18504221902032584_4542408787724716905_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=5E9em3zGt0gQ7kNvgHlUKKZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE5NDU1NTIwMDEwMzk2Mw%3D%3D.3-ccb7-5&oh=00_AYAwDOOtuj8nFo9BCkGIOd5rQa0ucU9nLjmJPh2uL3h9jQ&oe=67BB4CB6&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': 'licensed_music', 'music_info': {'music_asset_info': {'id': '412781082826319', 'title': '(All Along The) Watchtower (Instrumental)', 'lyrics': None, 'audio_id': '154577525257429', 'subtitle': '', 'artist_id': '492976852167733', 'has_lyrics': False, 'ig_username': 'devlinartist', 'is_explicit': False, 'dark_message': None, 'allows_saving': False, 'display_artist': 'Devlin', 'duration_in_ms': 272062, 'sanitized_title': None, 'cover_artwork_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/426556355_2498597970321443_4664344602080273979_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=108&ccb=1-7&_nc_sid=2f2557&_nc_ohc=cheBUFiArv4Q7kNvgEKUguX&_nc_oc=AdgR8CZKf2OlgjEd26TWIlBYpW0xhvHPjSUXeWmwlnmq0Ml1f428wj2KqsE5ctMtwoU&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYAF8oKk8oRJHvPn4sMU_nFxo4LJulq4himJ02szWbQ-_Q&oe=67BB3FBA', 'licensed_music_subtype': 'DEFAULT', 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQNNGabp1GLpv2YnN9q85LWmMFvgVXa1Q3AEWXI8DNI5IstojG4eM1PXRqMOP5EKeZFj-2NHeYK7uqPEy80fzwEz.mp4?strext=1&_nc_cat=110&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=7GSvsM2Pk08Q7kNvgEhX7gZ&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo5ODcyODgwMjYzMzc1NDIsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYCfn3jvO8PO2LtddLjf_P260DNtBOzAd1oWLqySHneZiA&oe=67BB6088', 'cover_artwork_thumbnail_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/426556355_2498597970321443_4664344602080273979_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=108&ccb=1-7&_nc_sid=2f2557&_nc_ohc=cheBUFiArv4Q7kNvgEKUguX&_nc_oc=AdgR8CZKf2OlgjEd26TWIlBYpW0xhvHPjSUXeWmwlnmq0Ml1f428wj2KqsE5ctMtwoU&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYAF8oKk8oRJHvPn4sMU_nFxo4LJulq4himJ02szWbQ-_Q&oe=67BB3FBA', 'highlight_start_times_in_ms': [35500, 13500, 71500], 'reactive_audio_download_url': None, 'web_30s_preview_download_url': None, 'is_eligible_for_audio_effects': False, 'is_eligible_for_vinyl_sticker': True, 'fast_start_progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQNNGabp1GLpv2YnN9q85LWmMFvgVXa1Q3AEWXI8DNI5IstojG4eM1PXRqMOP5EKeZFj-2NHeYK7uqPEy80fzwEz.mp4?strext=1&_nc_cat=110&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=7GSvsM2Pk08Q7kNvgEhX7gZ&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo5ODcyODgwMjYzMzc1NDIsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYCfn3jvO8PO2LtddLjf_P260DNtBOzAd1oWLqySHneZiA&oe=67BB6088'}, 'music_consumption_info': {'ig_artist': {'id': '26576340', 'username': 'devlinartist', 'full_name': 'Devlin', 'is_private': False, 'is_verified': True, 'profile_pic_id': '2761093726728150227', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/272724639_676389606996793_4886202078912123728_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cBTLoOgNr14Q7kNvgHZmxuA&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBofosf6fy2pTbEpNZca7IJPE9jlaaHzq7YFNMGcydwPw&oe=67BB3B4A&_nc_sid=2011ad'}, 'trend_rank': None, 'is_bookmarked': False, 'display_labels': None, 'contains_lyrics': None, 'audio_muting_info': {'mute_audio': False, 'mute_reason_str': '', 'allow_audio_editing': False, 'show_muted_audio_toast': False}, 'should_mute_audio': False, 'audio_filter_infos': [], 'derived_content_id': None, 'previous_trend_rank': None, 'is_trending_in_clips': False, 'overlap_duration_in_ms': 30000, 'should_mute_audio_reason': '', 'should_allow_music_editing': False, 'formatted_clips_media_count': None, 'placeholder_profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.12442-15/43985629_311105916145351_58064759811405776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yL09NXcFiX4Q7kNvgHjUPJU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYClc-zXRJ3G21DakISK9eeWVNXAd_Yg6UjvG7IsC6fOZA&oe=67BB393D&_nc_sid=2011ad', 'audio_asset_start_time_in_ms': 36, 'should_mute_audio_reason_type': None, 'allow_media_creation_with_music': True}}, 'pinned_media_ids': [], 'audio_canonical_id': '18155547487024932', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739901600, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3570194555200103963, 3570194554990369088, 3570194555267403645, 3570194555032552560, 3570194555200244758, 3570194555225299269], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 6, 'share_count_disabled': True, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'SELF_DISCLOSURE_FLOW'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570747557472218167', 'pk': '3570747557472218167', 'code': 'DGN1_whuaw3', 'fbid': '18046646915257077', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570747557472218167', 'pk': '18046646927257077', 'text': '🚨 NOVA ERA DA IA? Elon Musk revelou o Grok-3, a mais recente IA da xAI, prometendo um avanço significativo em raciocínio, matemática, ciência e programação.\\\\n\\\\nO modelo já lidera o ranking do Chatbot Arena, superando concorrentes como GPT-4o, Gemini-2 Pro e Claude 3.5 Sonnet. Segundo Musk, o Grok-3 é 10 vezes mais poderoso que seu antecessor, treinado com um impressionante cluster de 200 mil GPUs, dobrando sua capacidade computacional em apenas 92 dias.\\\\n\\\\nAlém do aumento de potência, o Grok-3 se destaca por suas habilidades de raciocínio avançado, aprendizado por reforço e criatividade emergente, sendo capaz até de gerar novos jogos e utilizar o Big Brain Mode para análises mais profundas. Ele atingiu um Elo de 1400, um recorde entre modelos de IA, e até sua versão reduzida, o Grok-3 Mini, se mantém competitiva.\\\\n\\\\nOutro diferencial é o DeepSearch, um sistema de IA inteligente projetado para entender intenções, analisar informações e verificar fontes, ampliando a aplicabilidade do Grok-3 além do chatbot tradicional.\\\\n\\\\nMusk ainda afirmou que o Grok-3 será de código aberto quando estiver totalmente amadurecido, reforçando sua rivalidade com a OpenAI.\\\\n\\\\nA grande questão é: o Grok-3 é realmente a IA mais inteligente já criada ou apenas mais uma aposta ousada de Elon Musk? 🤔💬\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739886302, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739886302, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739886301, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['sorrabgui'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 58, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480139526_18504353800032584_4212860178255273125_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N9biyWv-GegQ7kNvgHWRaaJ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODgxNDM4NQ%3D%3D.3-ccb7-5&oh=00_AYBGiCCphPadVDZDGDwyKsIwZdyqwo7Jw1HToa0p3SS8qA&oe=67BB4EF9&_nc_sid=2011ad', 'carousel_media': [{'id': '3570747542288814385', 'pk': '3570747542288814385', 'is_video': False, 'taken_at': 1739886299, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480139526_18504353800032584_4212860178255273125_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N9biyWv-GegQ7kNvgHWRaaJ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODgxNDM4NQ%3D%3D.3-ccb7-5&oh=00_AYBGiCCphPadVDZDGDwyKsIwZdyqwo7Jw1HToa0p3SS8qA&oe=67BB4EF9&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480139526_18504353800032584_4212860178255273125_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N9biyWv-GegQ7kNvgHWRaaJ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODgxNDM4NQ%3D%3D.3-ccb7-5&oh=00_AYBGiCCphPadVDZDGDwyKsIwZdyqwo7Jw1HToa0p3SS8qA&oe=67BB4EF9&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480139526_18504353800032584_4212860178255273125_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N9biyWv-GegQ7kNvgHWRaaJ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODgxNDM4NQ%3D%3D.3-ccb7-5&oh=00_AYCxHq-0kPhnBebZAvOYFvyH1mVw2GMkNGVj9Ru1PUFi0Q&oe=67BB4EF9&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570747557472218167_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570747542288909246', 'pk': '3570747542288909246', 'is_video': False, 'taken_at': 1739886299, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479982643_18504353809032584_8690175026090871130_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=81OZ6NNr4x8Q7kNvgF0YGXD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODkwOTI0Ng%3D%3D.3-ccb7-5&oh=00_AYCiZh_XQlw3T1t_mwiQMD4tqglsM5csd8gyd3kOd4GM8A&oe=67BB3A64&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479982643_18504353809032584_8690175026090871130_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=81OZ6NNr4x8Q7kNvgF0YGXD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODkwOTI0Ng%3D%3D.3-ccb7-5&oh=00_AYCiZh_XQlw3T1t_mwiQMD4tqglsM5csd8gyd3kOd4GM8A&oe=67BB3A64&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479982643_18504353809032584_8690175026090871130_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=81OZ6NNr4x8Q7kNvgF0YGXD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODkwOTI0Ng%3D%3D.3-ccb7-5&oh=00_AYBgFBE-J7np5oSr2x-Q6cD2pEVzxBAEka5YCKf_sf3C1g&oe=67BB3A64&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570747557472218167_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570747542280544935', 'pk': '3570747542280544935', 'is_video': False, 'taken_at': 1739886299, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480039450_18504353818032584_2322029377459193948_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=w38RGbSANksQ7kNvgE8MeB6&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4MDU0NDkzNQ%3D%3D.3-ccb7-5&oh=00_AYDxvENgouHqGJxaSnsa6AZt0c7DYtcHX1L9ZhUJvlIktw&oe=67BB4FC7&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480039450_18504353818032584_2322029377459193948_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=w38RGbSANksQ7kNvgE8MeB6&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4MDU0NDkzNQ%3D%3D.3-ccb7-5&oh=00_AYDxvENgouHqGJxaSnsa6AZt0c7DYtcHX1L9ZhUJvlIktw&oe=67BB4FC7&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480039450_18504353818032584_2322029377459193948_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=w38RGbSANksQ7kNvgE8MeB6&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4MDU0NDkzNQ%3D%3D.3-ccb7-5&oh=00_AYC4KY__ah-UCLwBkYB1cv6m0gqKDDSntzpQZD0OpbnkZA&oe=67BB4FC7&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570747557472218167_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570747542339108058', 'pk': '3570747542339108058', 'is_video': False, 'taken_at': 1739886299, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480044270_18504353827032584_8786067253989957533_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=QgiPuYI2GJgQ7kNvgEMQGBH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMzOTEwODA1OA%3D%3D.3-ccb7-5&oh=00_AYALILUQgvgeSzh2EBjHmNL1l729C9ACEHPeNNH1-MpSQg&oe=67BB5C25&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480044270_18504353827032584_8786067253989957533_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=QgiPuYI2GJgQ7kNvgEMQGBH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMzOTEwODA1OA%3D%3D.3-ccb7-5&oh=00_AYALILUQgvgeSzh2EBjHmNL1l729C9ACEHPeNNH1-MpSQg&oe=67BB5C25&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480044270_18504353827032584_8786067253989957533_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=QgiPuYI2GJgQ7kNvgEMQGBH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMzOTEwODA1OA%3D%3D.3-ccb7-5&oh=00_AYCdmS3ufGVHF_ix8xk-AYR0FxQ2uYlyymUoUUT2r5xTFw&oe=67BB5C25&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570747557472218167_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570747542339241974', 'pk': '3570747542339241974', 'is_video': False, 'taken_at': 1739886299, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480696857_18504353848032584_6164840081194232277_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Uo8vWhrCPXkQ7kNvgFfy1jL&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMzOTI0MTk3NA%3D%3D.3-ccb7-5&oh=00_AYAEhKynxHszOeK_EDu1PuEjniDT1CIutx7zR1aELWG1HA&oe=67BB5617&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480696857_18504353848032584_6164840081194232277_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Uo8vWhrCPXkQ7kNvgFfy1jL&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMzOTI0MTk3NA%3D%3D.3-ccb7-5&oh=00_AYAEhKynxHszOeK_EDu1PuEjniDT1CIutx7zR1aELWG1HA&oe=67BB5617&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480696857_18504353848032584_6164840081194232277_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Uo8vWhrCPXkQ7kNvgFfy1jL&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMzOTI0MTk3NA%3D%3D.3-ccb7-5&oh=00_AYCMA7O5JMYc_UXwVHxEhKt_kxwcYIHhcU-CdBX0A3d97w&oe=67BB5617&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570747557472218167_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570747542322326168', 'pk': '3570747542322326168', 'is_video': False, 'taken_at': 1739886299, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480050320_18504353836032584_3555298436475637751_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=7jZF5672zIkQ7kNvgH2wBUD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMyMjMyNjE2OA%3D%3D.3-ccb7-5&oh=00_AYBxYrWzVUbm0JKf_7ZqauCFF2cF4gVh5LbIPD8eCQSosw&oe=67BB42E2&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480050320_18504353836032584_3555298436475637751_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=7jZF5672zIkQ7kNvgH2wBUD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMyMjMyNjE2OA%3D%3D.3-ccb7-5&oh=00_AYBxYrWzVUbm0JKf_7ZqauCFF2cF4gVh5LbIPD8eCQSosw&oe=67BB42E2&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480050320_18504353836032584_3555298436475637751_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=7jZF5672zIkQ7kNvgH2wBUD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjMyMjMyNjE2OA%3D%3D.3-ccb7-5&oh=00_AYDUgnZ3P33y6qalBft5iqq9ktvz35DZ2dpdINS6HtBJqg&oe=67BB42E2&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570747557472218167_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570745767049679877', 'pk': '3570745767049679877', 'is_video': True, 'taken_at': 1739886299, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOp1cZ405emAbKjozdLpS-IYsMmS4bpUtsA_JaGN5gk9u-gC_v2o7Mg484RfqP0Vt6tIHWwIp62Qiuv11M5HRQ1Ph8QqUEGXcF2QOM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjk2MzQxMTQwOTE5Mjc1NCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=ea8bdbb6bad9be03&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9CQTQ1MEMzNDBBOUM2RkRFNDc4MDk3Q0Q4QTdBODZCMV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dHWXlveHo0V1NLQk9La0VBS1RaSEpZcmJTUVdia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJuSciq32jbYDFQIoAkMzLBdAFMzMzMzMzRgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDvhvfYe1o9nSj0Rpc6kR2a53eP1dg4VY6LXK0teniRGA&oe=67B755DC&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480594575_18504353869032584_3350980838764314727_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=KrxoLCMxLoIQ7kNvgFj-RnD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NTc2NzA0OTY3OTg3Nw%3D%3D.3-ccb7-5&oh=00_AYC3qXHKT7JuL85E8Io9aQz8RowuV_sBXHcfSgJubINiBw&oe=67BB5F7B&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480594575_18504353869032584_3350980838764314727_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=KrxoLCMxLoIQ7kNvgFj-RnD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NTc2NzA0OTY3OTg3Nw%3D%3D.3-ccb7-5&oh=00_AYC3qXHKT7JuL85E8Io9aQz8RowuV_sBXHcfSgJubINiBw&oe=67BB5F7B&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480039976_1583519078968667_8785892388222344414_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=zJyb8I_k55AQ7kNvgHHigr6&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBGOTGRze_KK3CEjEDxud8aL7sB9kk8u_x3L4La3fv3pg&oe=67BB4855&_nc_sid=2011ad'], 'file_size_kb': 174, 'sprite_width': 1500, 'video_length': 5.2, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.049523809523809526, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 5.2, 'video_versions': [{'id': '1233967711604315v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOp1cZ405emAbKjozdLpS-IYsMmS4bpUtsA_JaGN5gk9u-gC_v2o7Mg484RfqP0Vt6tIHWwIp62Qiuv11M5HRQ1Ph8QqUEGXcF2QOM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjk2MzQxMTQwOTE5Mjc1NCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=ea8bdbb6bad9be03&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9CQTQ1MEMzNDBBOUM2RkRFNDc4MDk3Q0Q4QTdBODZCMV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dHWXlveHo0V1NLQk9La0VBS1RaSEpZcmJTUVdia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJuSciq32jbYDFQIoAkMzLBdAFMzMzMzMzRgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDvhvfYe1o9nSj0Rpc6kR2a53eP1dg4VY6LXK0teniRGA&oe=67B755DC&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 532078}, {'id': '1233967711604315v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOp1cZ405emAbKjozdLpS-IYsMmS4bpUtsA_JaGN5gk9u-gC_v2o7Mg484RfqP0Vt6tIHWwIp62Qiuv11M5HRQ1Ph8QqUEGXcF2QOM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjk2MzQxMTQwOTE5Mjc1NCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=ea8bdbb6bad9be03&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9CQTQ1MEMzNDBBOUM2RkRFNDc4MDk3Q0Q4QTdBODZCMV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dHWXlveHo0V1NLQk9La0VBS1RaSEpZcmJTUVdia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJuSciq32jbYDFQIoAkMzLBdAFMzMzMzMzRgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDvhvfYe1o9nSj0Rpc6kR2a53eP1dg4VY6LXK0teniRGA&oe=67B755DC&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 532078}, {'id': '1233967711604315v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOp1cZ405emAbKjozdLpS-IYsMmS4bpUtsA_JaGN5gk9u-gC_v2o7Mg484RfqP0Vt6tIHWwIp62Qiuv11M5HRQ1Ph8QqUEGXcF2QOM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjk2MzQxMTQwOTE5Mjc1NCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=ea8bdbb6bad9be03&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9CQTQ1MEMzNDBBOUM2RkRFNDc4MDk3Q0Q4QTdBODZCMV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dHWXlveHo0V1NLQk9La0VBS1RaSEpZcmJTUVdia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJuSciq32jbYDFQIoAkMzLBdAFMzMzMzMzRgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDvhvfYe1o9nSj0Rpc6kR2a53eP1dg4VY6LXK0teniRGA&oe=67B755DC&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 532078}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3570747557472218167_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 3, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570747542297270430', 'pk': '3570747542297270430', 'is_video': False, 'taken_at': 1739886299, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480945899_18504353857032584_7478488688297127724_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Y3Zrcb2lkgMQ7kNvgGn1RNH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI5NzI3MDQzMA%3D%3D.3-ccb7-5&oh=00_AYDB_Yytyxaq_KonR8GTKUztT65JDkcSz-cTxBdCZ8fb6w&oe=67BB4CE9&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480945899_18504353857032584_7478488688297127724_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Y3Zrcb2lkgMQ7kNvgGn1RNH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI5NzI3MDQzMA%3D%3D.3-ccb7-5&oh=00_AYDB_Yytyxaq_KonR8GTKUztT65JDkcSz-cTxBdCZ8fb6w&oe=67BB4CE9&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480945899_18504353857032584_7478488688297127724_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Y3Zrcb2lkgMQ7kNvgGn1RNH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI5NzI3MDQzMA%3D%3D.3-ccb7-5&oh=00_AYA39x7PgD1ZpcJ8TvIj4FG8vpVwaMOXB5WZDFbT2vLh-w&oe=67BB4CE9&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570747557472218167_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480139526_18504353800032584_4212860178255273125_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N9biyWv-GegQ7kNvgHWRaaJ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODgxNDM4NQ%3D%3D.3-ccb7-5&oh=00_AYBGiCCphPadVDZDGDwyKsIwZdyqwo7Jw1HToa0p3SS8qA&oe=67BB4EF9&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480139526_18504353800032584_4212860178255273125_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N9biyWv-GegQ7kNvgHWRaaJ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDc0NzU0MjI4ODgxNDM4NQ%3D%3D.3-ccb7-5&oh=00_AYCxHq-0kPhnBebZAvOYFvyH1mVw2GMkNGVj9Ru1PUFi0Q&oe=67BB4EF9&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739886087974630, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3570747542288814385, 3570747542288909246, 3570747542280544935, 3570747542339108058, 3570747542339241974, 3570747542322326168, 3570745767049679877, 3570747542297270430], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 8, 'share_count_disabled': True, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570063808669674965', 'pk': '3570063808669674965', 'code': 'DGLah51O-3V', 'fbid': '17874162465268205', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570063808669674965', 'pk': '17874162471268205', 'text': '🚨 A China avança na corrida da inteligência artificial com o lançamento do Kimi AI, um modelo gratuito que rivaliza com OpenAI, DeepSeek e Meta.\\\\n\\\\nO Kimi AI 1.5, desenvolvido pela Moonshot AI, traz recursos inovadores que desafiam até as principais soluções pagas do mercado. Entre seus diferenciais estão:\\\\n\\\\n• Raciocínio de nível o1, superando o DeepSeek nesse aspecto\\\\n\\\\n• Janela de contexto de 200.000 caracteres, permitindo análises extensas\\\\n\\\\n• Capacidade multimodal para integração de texto, imagens e código\\\\n\\\\n• Suporte para 50 arquivos simultâneos, facilitando a organização e produtividade\\\\n\\\\n• Busca em tempo real em mais de 1.000 páginas da web\\\\n\\\\nAlém de se destacar em raciocínio, o Kimi AI também apresenta alto desempenho em programação, ficando no percentil 94 no Codeforces, uma das principais plataformas de codificação competitiva. Também obteve resultados superiores no benchmark MathVista, principalmente em tarefas que combinam visão e linguagem.\\\\n\\\\nO projeto é liderado por Zhilin Yang, PhD da Carnegie Mellon University e especialista em aprendizado de máquina, junto com uma equipe de elite da China.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\n🔗 https://kimi.ai\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #china', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#china'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739804793, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739804793, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739804792, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['lulopeslu'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 117, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479967610_18504177910032584_1135377071816211428_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BSK_ujUsl9kQ7kNvgGcNZLW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDAwNDI0MDc4Mg%3D%3D.3-ccb7-5&oh=00_AYA2Hnkltx3OoFFC3LGGfPFciLuZw4KNck_7juvoo5kP0g&oe=67BB6808&_nc_sid=2011ad', 'carousel_media': [{'id': '3570063800004240782', 'pk': '3570063800004240782', 'is_video': False, 'taken_at': 1739804791, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479967610_18504177910032584_1135377071816211428_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BSK_ujUsl9kQ7kNvgGcNZLW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDAwNDI0MDc4Mg%3D%3D.3-ccb7-5&oh=00_AYA2Hnkltx3OoFFC3LGGfPFciLuZw4KNck_7juvoo5kP0g&oe=67BB6808&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479967610_18504177910032584_1135377071816211428_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BSK_ujUsl9kQ7kNvgGcNZLW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDAwNDI0MDc4Mg%3D%3D.3-ccb7-5&oh=00_AYA2Hnkltx3OoFFC3LGGfPFciLuZw4KNck_7juvoo5kP0g&oe=67BB6808&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479967610_18504177910032584_1135377071816211428_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BSK_ujUsl9kQ7kNvgGcNZLW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDAwNDI0MDc4Mg%3D%3D.3-ccb7-5&oh=00_AYA5lxbz8jLjFVUH7KWfahE3TOe-VCiPHOBGxrdXC6CMqQ&oe=67BB6808&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570063808669674965_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570063799911730541', 'pk': '3570063799911730541', 'is_video': False, 'taken_at': 1739804791, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480075802_18504177919032584_3971682356809546353_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=1woF3ir5W6kQ7kNvgFAKExU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTkxMTczMDU0MQ%3D%3D.3-ccb7-5&oh=00_AYAxVcfzZ5w3zxF1gG2gqRusbvj3ICcUZzOn-l26vxTLUA&oe=67BB6204&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480075802_18504177919032584_3971682356809546353_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=1woF3ir5W6kQ7kNvgFAKExU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTkxMTczMDU0MQ%3D%3D.3-ccb7-5&oh=00_AYAxVcfzZ5w3zxF1gG2gqRusbvj3ICcUZzOn-l26vxTLUA&oe=67BB6204&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480075802_18504177919032584_3971682356809546353_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=1woF3ir5W6kQ7kNvgFAKExU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTkxMTczMDU0MQ%3D%3D.3-ccb7-5&oh=00_AYBdT4k2cCJfXvQVASP9aiJo5ZJ6Ef5TaIzXWQaUsAHiqA&oe=67BB6204&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570063808669674965_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570060676698783611', 'pk': '3570060676698783611', 'is_video': True, 'taken_at': 1739804791, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOfUxA-pHVuVBpqjSEKhJeP8ccSDDaHjnjpd4tCOxow3WUTjPs8oKX5z9eh-oVSRPwTy_tiMcfEf_gEXA3q1n6pjpqIQF4lj1c3KBg.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0MTIyMzkyNTY0MDYzMDQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=97f954fae4a17271&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC84QjQ4N0ZEMTEyMDY2MEFENkQxRTkyNDREMThCNkE4Rl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dQSmFueHlDalRSejVKMEdBTlRRcDNwTzAtQVBia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJsCkurOSm4IFFQIoAkMzLBdAQTul41P3zxgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYB06MNRwy5SZDNtQVSJDTS4tvd75rpstrpM4bd20KfX6Q&oe=67B74137&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'vp09.00.31.08.00.01.01.01.00', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480440885_18504177988032584_6194075368047945152_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ErwIdYzyFQ0Q7kNvgFeeCLR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MDY3NjY5ODc4MzYxMQ%3D%3D.3-ccb7-5&oh=00_AYDl40u_vo5ncm_XGG7a8PgPsne1jUZv9Y9ORsa_rURHYg&oe=67BB401D&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480440885_18504177988032584_6194075368047945152_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ErwIdYzyFQ0Q7kNvgFeeCLR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MDY3NjY5ODc4MzYxMQ%3D%3D.3-ccb7-5&oh=00_AYDl40u_vo5ncm_XGG7a8PgPsne1jUZv9Y9ORsa_rURHYg&oe=67BB401D&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480269016_9927884237240016_9182738917426243905_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=1XpE1aB6gpIQ7kNvgGuEtlJ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDuNti0ixWq8kVrPzrPZjsgCNNGfEHOxkE_gHbgmr5PmA&oe=67BB3FF2&_nc_sid=2011ad'], 'file_size_kb': 166, 'sprite_width': 1500, 'video_length': 34.466, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.32824761904761907, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 34.466, 'video_versions': [{'id': '9371747852945216v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOfUxA-pHVuVBpqjSEKhJeP8ccSDDaHjnjpd4tCOxow3WUTjPs8oKX5z9eh-oVSRPwTy_tiMcfEf_gEXA3q1n6pjpqIQF4lj1c3KBg.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0MTIyMzkyNTY0MDYzMDQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=97f954fae4a17271&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC84QjQ4N0ZEMTEyMDY2MEFENkQxRTkyNDREMThCNkE4Rl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dQSmFueHlDalRSejVKMEdBTlRRcDNwTzAtQVBia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJsCkurOSm4IFFQIoAkMzLBdAQTul41P3zxgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYB06MNRwy5SZDNtQVSJDTS4tvd75rpstrpM4bd20KfX6Q&oe=67B74137&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 293255}, {'id': '9371747852945216v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOfUxA-pHVuVBpqjSEKhJeP8ccSDDaHjnjpd4tCOxow3WUTjPs8oKX5z9eh-oVSRPwTy_tiMcfEf_gEXA3q1n6pjpqIQF4lj1c3KBg.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0MTIyMzkyNTY0MDYzMDQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=97f954fae4a17271&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC84QjQ4N0ZEMTEyMDY2MEFENkQxRTkyNDREMThCNkE4Rl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dQSmFueHlDalRSejVKMEdBTlRRcDNwTzAtQVBia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJsCkurOSm4IFFQIoAkMzLBdAQTul41P3zxgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYB06MNRwy5SZDNtQVSJDTS4tvd75rpstrpM4bd20KfX6Q&oe=67B74137&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 293255}, {'id': '9371747852945216v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOfUxA-pHVuVBpqjSEKhJeP8ccSDDaHjnjpd4tCOxow3WUTjPs8oKX5z9eh-oVSRPwTy_tiMcfEf_gEXA3q1n6pjpqIQF4lj1c3KBg.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0MTIyMzkyNTY0MDYzMDQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=97f954fae4a17271&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC84QjQ4N0ZEMTEyMDY2MEFENkQxRTkyNDREMThCNkE4Rl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dQSmFueHlDalRSejVKMEdBTlRRcDNwTzAtQVBia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJsCkurOSm4IFFQIoAkMzLBdAQTul41P3zxgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYB06MNRwy5SZDNtQVSJDTS4tvd75rpstrpM4bd20KfX6Q&oe=67B74137&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 293255}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3570063808669674965_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 3, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570063799970647475', 'pk': '3570063799970647475', 'is_video': False, 'taken_at': 1739804791, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480081122_18504177931032584_7506092785044777728_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9t67pUDpa7YQ7kNvgGmTN85&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk3MDY0NzQ3NQ%3D%3D.3-ccb7-5&oh=00_AYBIPSa9MPcYX8Ovjd-Pz9kT4xetR41sToBWqJh1TvLCIg&oe=67BB3036&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480081122_18504177931032584_7506092785044777728_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9t67pUDpa7YQ7kNvgGmTN85&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk3MDY0NzQ3NQ%3D%3D.3-ccb7-5&oh=00_AYBIPSa9MPcYX8Ovjd-Pz9kT4xetR41sToBWqJh1TvLCIg&oe=67BB3036&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480081122_18504177931032584_7506092785044777728_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=9t67pUDpa7YQ7kNvgGmTN85&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk3MDY0NzQ3NQ%3D%3D.3-ccb7-5&oh=00_AYAn_fmb9SOkK5zChtkcqEkdK2ckks-a-u_Nwkm8s7TBjw&oe=67BB3036&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570063808669674965_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570060678015915373', 'pk': '3570060678015915373', 'is_video': True, 'taken_at': 1739804791, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOcO-ZxhG3EN0dvBivcr99xHpSPGySgFIrTOb-Sks8-9JaHvTWRU6f0QEKVC24lGEdwL5kU3YcnkcTGi5N2AxfHSjXgVVXoXhKFOMI.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMDk5NDQ2NTc3MDc4NDksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=8cf3a99d4de95877&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC81MTREN0FBQTlBRTYxQzY1MEEwNjM1N0FGQjEwMUY5QV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBcEVvaHhXSmNDaUpuQURBQXpoWDN4M1JveEpia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpKNhonCossDFQIoAkMzLBdAMCp--dsi0RgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYAW9hfk_DSzxzEgntUQT7OZCFgccfzPzwUBYvVBxi7pLw&oe=67B7602A&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'vp09.00.31.08.00.01.01.01.00', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480421640_18504177997032584_1775003242998133347_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RcuO7B6dVksQ7kNvgHtwi7a&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MDY3ODAxNTkxNTM3Mw%3D%3D.3-ccb7-5&oh=00_AYD18i9WHXONx-3I0MTS4myeXWKOrTFkR5LBWooePAP4Ow&oe=67BB536A&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480421640_18504177997032584_1775003242998133347_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RcuO7B6dVksQ7kNvgHtwi7a&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MDY3ODAxNTkxNTM3Mw%3D%3D.3-ccb7-5&oh=00_AYD18i9WHXONx-3I0MTS4myeXWKOrTFkR5LBWooePAP4Ow&oe=67BB536A&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480793265_611644044956958_5734701350350279348_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=1ByFipLH65IQ7kNvgE-OdC7&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCw3sKct8DNngrhBNzx61WoHBy-gYIJs_xZS1G6mO3CrA&oe=67BB52A9&_nc_sid=2011ad'], 'file_size_kb': 144, 'sprite_width': 1500, 'video_length': 16.166, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.15396190476190477, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 16.166, 'video_versions': [{'id': '3610720215896245v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOcO-ZxhG3EN0dvBivcr99xHpSPGySgFIrTOb-Sks8-9JaHvTWRU6f0QEKVC24lGEdwL5kU3YcnkcTGi5N2AxfHSjXgVVXoXhKFOMI.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMDk5NDQ2NTc3MDc4NDksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=8cf3a99d4de95877&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC81MTREN0FBQTlBRTYxQzY1MEEwNjM1N0FGQjEwMUY5QV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBcEVvaHhXSmNDaUpuQURBQXpoWDN4M1JveEpia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpKNhonCossDFQIoAkMzLBdAMCp--dsi0RgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYAW9hfk_DSzxzEgntUQT7OZCFgccfzPzwUBYvVBxi7pLw&oe=67B7602A&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 331820}, {'id': '3610720215896245v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOcO-ZxhG3EN0dvBivcr99xHpSPGySgFIrTOb-Sks8-9JaHvTWRU6f0QEKVC24lGEdwL5kU3YcnkcTGi5N2AxfHSjXgVVXoXhKFOMI.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMDk5NDQ2NTc3MDc4NDksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=8cf3a99d4de95877&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC81MTREN0FBQTlBRTYxQzY1MEEwNjM1N0FGQjEwMUY5QV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBcEVvaHhXSmNDaUpuQURBQXpoWDN4M1JveEpia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpKNhonCossDFQIoAkMzLBdAMCp--dsi0RgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYAW9hfk_DSzxzEgntUQT7OZCFgccfzPzwUBYvVBxi7pLw&oe=67B7602A&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 331820}, {'id': '3610720215896245v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOcO-ZxhG3EN0dvBivcr99xHpSPGySgFIrTOb-Sks8-9JaHvTWRU6f0QEKVC24lGEdwL5kU3YcnkcTGi5N2AxfHSjXgVVXoXhKFOMI.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMDk5NDQ2NTc3MDc4NDksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=8cf3a99d4de95877&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC81MTREN0FBQTlBRTYxQzY1MEEwNjM1N0FGQjEwMUY5QV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBcEVvaHhXSmNDaUpuQURBQXpoWDN4M1JveEpia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpKNhonCossDFQIoAkMzLBdAMCp--dsi0RgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYAW9hfk_DSzxzEgntUQT7OZCFgccfzPzwUBYvVBxi7pLw&oe=67B7602A&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 331820}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3570063808669674965_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 3, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570063799995602292', 'pk': '3570063799995602292', 'is_video': False, 'taken_at': 1739804791, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480121660_18504177940032584_810379309454444603_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=NQjaaEgdHZ0Q7kNvgFHspsv&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk5NTYwMjI5Mg%3D%3D.3-ccb7-5&oh=00_AYAXkRF8Z9bLRSDHefjT-u0dg0I9EFwtxshA5kycH1hz9Q&oe=67BB4744&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480121660_18504177940032584_810379309454444603_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=NQjaaEgdHZ0Q7kNvgFHspsv&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk5NTYwMjI5Mg%3D%3D.3-ccb7-5&oh=00_AYAXkRF8Z9bLRSDHefjT-u0dg0I9EFwtxshA5kycH1hz9Q&oe=67BB4744&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480121660_18504177940032584_810379309454444603_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=NQjaaEgdHZ0Q7kNvgFHspsv&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk5NTYwMjI5Mg%3D%3D.3-ccb7-5&oh=00_AYBuAY7RqeAWrP1Grus1D9hNX932JQ1QT-Blok8A8sETAA&oe=67BB4744&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570063808669674965_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570063800129909500', 'pk': '3570063800129909500', 'is_video': False, 'taken_at': 1739804791, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479979840_18504177949032584_5197075275734415143_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fXCAJ00qe1cQ7kNvgEzj4V1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDEyOTkwOTUwMA%3D%3D.3-ccb7-5&oh=00_AYC-UdAA23JOtd6W0ZtZrt6pQWCEWYFpOLzlvIFl-fHEpA&oe=67BB57E4&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479979840_18504177949032584_5197075275734415143_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fXCAJ00qe1cQ7kNvgEzj4V1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDEyOTkwOTUwMA%3D%3D.3-ccb7-5&oh=00_AYC-UdAA23JOtd6W0ZtZrt6pQWCEWYFpOLzlvIFl-fHEpA&oe=67BB57E4&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479979840_18504177949032584_5197075275734415143_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fXCAJ00qe1cQ7kNvgEzj4V1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDEyOTkwOTUwMA%3D%3D.3-ccb7-5&oh=00_AYDhZSxUEmQFSMfw8dfkTxof0NhF5sMvqO7H8jop6kdTMA&oe=67BB57E4&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570063808669674965_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570063799970576682', 'pk': '3570063799970576682', 'is_video': False, 'taken_at': 1739804791, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480057270_18504177958032584_1000529982561197659_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=LaB0aHhNEKUQ7kNvgGVHCfK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk3MDU3NjY4Mg%3D%3D.3-ccb7-5&oh=00_AYAZ35jLmmPMEvnHSb2aBQ1rNiRSEix2FKsUSeElgEtvVA&oe=67BB3468&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480057270_18504177958032584_1000529982561197659_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=LaB0aHhNEKUQ7kNvgGVHCfK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk3MDU3NjY4Mg%3D%3D.3-ccb7-5&oh=00_AYAZ35jLmmPMEvnHSb2aBQ1rNiRSEix2FKsUSeElgEtvVA&oe=67BB3468&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480057270_18504177958032584_1000529982561197659_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=LaB0aHhNEKUQ7kNvgGVHCfK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2Mzc5OTk3MDU3NjY4Mg%3D%3D.3-ccb7-5&oh=00_AYDie0_YAE4Pb41YF1xxJMHG2NbEXo5SfMZhNU9WOQR4yA&oe=67BB3468&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570063808669674965_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479967610_18504177910032584_1135377071816211428_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BSK_ujUsl9kQ7kNvgGcNZLW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDAwNDI0MDc4Mg%3D%3D.3-ccb7-5&oh=00_AYA2Hnkltx3OoFFC3LGGfPFciLuZw4KNck_7juvoo5kP0g&oe=67BB6808&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479967610_18504177910032584_1135377071816211428_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BSK_ujUsl9kQ7kNvgGcNZLW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA2MzgwMDAwNDI0MDc4Mg%3D%3D.3-ccb7-5&oh=00_AYA5lxbz8jLjFVUH7KWfahE3TOe-VCiPHOBGxrdXC6CMqQ&oe=67BB6808&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739804418254650, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3570063800004240782, 3570063799911730541, 3570060676698783611, 3570063799970647475, 3570060678015915373, 3570063799995602292, 3570063800129909500, 3570063799970576682], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 8, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570689751381866774', 'pk': '3570689751381866774', 'code': 'DGNo2kaPnkW', 'fbid': '18021491621423393', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570689751381866774', 'pk': '18021550403423393', 'text': '🚀 Microsoft lança o OmniParser V2 – IA que pode operar seu computador!\\\\n\\\\nA Microsoft acaba de apresentar o OmniParser V2, uma ferramenta open-source que transforma qualquer LLM em um agente capaz de ver sua tela, reconhecer botões e executar ações como um usuário real.\\\\n\\\\nAgora, GPT-4o, DeepSeek R1, Sonnet 3.5 e outros modelos podem automatizar tarefas, navegar por softwares e interagir com interfaces, sem necessidade de comandos manuais.\\\\n\\\\nE o melhor? Totalmente gratuito e de código aberto!\\\\n\\\\nO que você acha sobre isso? 🤔💬 \\\\n\\\\n🔗 https://huggingface.co/microsoft/OmniParser-v2.0\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #microsoft', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#microsoft'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739879404, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739879404, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739879400, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['eds0n_penna'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 26, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480019140_18504215272032584_3617743370197739824_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fwaBVIws95QQ7kNvgGVY37z&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzU2MTU1OTcxMg%3D%3D.3-ccb7-5&oh=00_AYACY0ySCwDaNchU6v8nmXumwO0juGkvvrpvbTyeVAhv2Q&oe=67BB4971&_nc_sid=2011ad', 'carousel_media': [{'id': '3570173813561559712', 'pk': '3570173813561559712', 'is_video': False, 'taken_at': 1739879400, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480019140_18504215272032584_3617743370197739824_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fwaBVIws95QQ7kNvgGVY37z&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzU2MTU1OTcxMg%3D%3D.3-ccb7-5&oh=00_AYACY0ySCwDaNchU6v8nmXumwO0juGkvvrpvbTyeVAhv2Q&oe=67BB4971&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480019140_18504215272032584_3617743370197739824_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fwaBVIws95QQ7kNvgGVY37z&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzU2MTU1OTcxMg%3D%3D.3-ccb7-5&oh=00_AYACY0ySCwDaNchU6v8nmXumwO0juGkvvrpvbTyeVAhv2Q&oe=67BB4971&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480019140_18504215272032584_3617743370197739824_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fwaBVIws95QQ7kNvgGVY37z&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzU2MTU1OTcxMg%3D%3D.3-ccb7-5&oh=00_AYBw6uEIXOqsLADlON5z_qmuDtfHUfIToaDsA7L5GB-2JQ&oe=67BB4971&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570689751381866774_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570173813343647357', 'pk': '3570173813343647357', 'is_video': True, 'taken_at': 1739879400, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMf3Cg6s2FCtgsgISdU61-ZJIvuYBo-rKGoEXv2-L6AtSN5ptaCRoxN0fpqnOMOOZBEHTD9UjMOWjEeOPPY3hTTw94-wu8CeKHuJcM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjI5NTEyMjQ4ODUwMzczNjUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=8eb1c6bfc1c91372&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8zMTRFNkYxMjFDRTFBQTA1QTMzNDZEMDA2RkI4QThCRl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbqpObu8oe-ChUCKAJDMywXQEiiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCB3wvzwtC8KkTbGw0gUl1IaHRVBCMZXKBlJDXeU0BZ6g&oe=67B7688A&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480016633_18504215305032584_6889281235166981953_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BEq2SEo2VmoQ7kNvgFa8M2g&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzM0MzY0NzM1Nw%3D%3D.3-ccb7-5&oh=00_AYCEKBpccTl5R70885Tr2GJtBy6oVKJhgR_PUzSHOmW_0w&oe=67BB6767&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480016633_18504215305032584_6889281235166981953_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=BEq2SEo2VmoQ7kNvgFa8M2g&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzM0MzY0NzM1Nw%3D%3D.3-ccb7-5&oh=00_AYCEKBpccTl5R70885Tr2GJtBy6oVKJhgR_PUzSHOmW_0w&oe=67BB6767&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'video_duration': 49.266, 'video_versions': [{'id': '3900957426844173v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMf3Cg6s2FCtgsgISdU61-ZJIvuYBo-rKGoEXv2-L6AtSN5ptaCRoxN0fpqnOMOOZBEHTD9UjMOWjEeOPPY3hTTw94-wu8CeKHuJcM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjI5NTEyMjQ4ODUwMzczNjUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=8eb1c6bfc1c91372&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8zMTRFNkYxMjFDRTFBQTA1QTMzNDZEMDA2RkI4QThCRl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbqpObu8oe-ChUCKAJDMywXQEiiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCB3wvzwtC8KkTbGw0gUl1IaHRVBCMZXKBlJDXeU0BZ6g&oe=67B7688A&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 188089}, {'id': '3900957426844173v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMf3Cg6s2FCtgsgISdU61-ZJIvuYBo-rKGoEXv2-L6AtSN5ptaCRoxN0fpqnOMOOZBEHTD9UjMOWjEeOPPY3hTTw94-wu8CeKHuJcM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjI5NTEyMjQ4ODUwMzczNjUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=8eb1c6bfc1c91372&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8zMTRFNkYxMjFDRTFBQTA1QTMzNDZEMDA2RkI4QThCRl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbqpObu8oe-ChUCKAJDMywXQEiiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCB3wvzwtC8KkTbGw0gUl1IaHRVBCMZXKBlJDXeU0BZ6g&oe=67B7688A&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 188089}, {'id': '3900957426844173v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMf3Cg6s2FCtgsgISdU61-ZJIvuYBo-rKGoEXv2-L6AtSN5ptaCRoxN0fpqnOMOOZBEHTD9UjMOWjEeOPPY3hTTw94-wu8CeKHuJcM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjI5NTEyMjQ4ODUwMzczNjUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=8eb1c6bfc1c91372&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8zMTRFNkYxMjFDRTFBQTA1QTMzNDZEMDA2RkI4QThCRl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbqpObu8oe-ChUCKAJDMywXQEiiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCB3wvzwtC8KkTbGw0gUl1IaHRVBCMZXKBlJDXeU0BZ6g&oe=67B7688A&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 188089}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3570689751381866774_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570173813511292534', 'pk': '3570173813511292534', 'is_video': True, 'taken_at': 1739879400, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQO97z3wFVlawCll_C5e75h9XF2KzQuVcGfCgfqZJ48X1S7cNcFoYYoI9VW19YL_k5YeeuPP1gVVoEBF4j8z6dk_1WCw42R5xOLupkM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYwNzI2MzMwMTkzNTQwMCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=3a3a420650788682&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GQzQxQjMxOTU1ODRFMzQzRjY4MzU1RkRGOEVFMEE5Rl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbQhK2WsJOUAhUCKAJDMywXQEARBiTdLxsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYDhwqSh6mul7xGU0bu7IGDxFKs2lHhAJvUPNU6YfybLkg&oe=67B75494&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479731980_18504215320032584_8738994578843915685_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=08BoewvUM30Q7kNvgFXL-zK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzUxMTI5MjUzNA%3D%3D.3-ccb7-5&oh=00_AYDj4_KbbaiQ0z_HJQywpGOFtYi56bmFwFoZwiW6X_Y6iA&oe=67BB5E34&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479731980_18504215320032584_8738994578843915685_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=08BoewvUM30Q7kNvgFXL-zK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzUxMTI5MjUzNA%3D%3D.3-ccb7-5&oh=00_AYDj4_KbbaiQ0z_HJQywpGOFtYi56bmFwFoZwiW6X_Y6iA&oe=67BB5E34&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'video_duration': 32.133, 'video_versions': [{'id': '1846392265896743v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQO97z3wFVlawCll_C5e75h9XF2KzQuVcGfCgfqZJ48X1S7cNcFoYYoI9VW19YL_k5YeeuPP1gVVoEBF4j8z6dk_1WCw42R5xOLupkM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYwNzI2MzMwMTkzNTQwMCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=3a3a420650788682&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GQzQxQjMxOTU1ODRFMzQzRjY4MzU1RkRGOEVFMEE5Rl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbQhK2WsJOUAhUCKAJDMywXQEARBiTdLxsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYDhwqSh6mul7xGU0bu7IGDxFKs2lHhAJvUPNU6YfybLkg&oe=67B75494&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 199618}, {'id': '1846392265896743v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQO97z3wFVlawCll_C5e75h9XF2KzQuVcGfCgfqZJ48X1S7cNcFoYYoI9VW19YL_k5YeeuPP1gVVoEBF4j8z6dk_1WCw42R5xOLupkM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYwNzI2MzMwMTkzNTQwMCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=3a3a420650788682&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GQzQxQjMxOTU1ODRFMzQzRjY4MzU1RkRGOEVFMEE5Rl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbQhK2WsJOUAhUCKAJDMywXQEARBiTdLxsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYDhwqSh6mul7xGU0bu7IGDxFKs2lHhAJvUPNU6YfybLkg&oe=67B75494&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 199618}, {'id': '1846392265896743v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQO97z3wFVlawCll_C5e75h9XF2KzQuVcGfCgfqZJ48X1S7cNcFoYYoI9VW19YL_k5YeeuPP1gVVoEBF4j8z6dk_1WCw42R5xOLupkM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYwNzI2MzMwMTkzNTQwMCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=3a3a420650788682&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GQzQxQjMxOTU1ODRFMzQzRjY4MzU1RkRGOEVFMEE5Rl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbQhK2WsJOUAhUCKAJDMywXQEARBiTdLxsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYDhwqSh6mul7xGU0bu7IGDxFKs2lHhAJvUPNU6YfybLkg&oe=67B75494&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 199618}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3570689751381866774_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570173813335176604', 'pk': '3570173813335176604', 'is_video': True, 'taken_at': 1739879400, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPZCj-kQLE5gliu4rVoHqtQZoTgCzGWrc0UYNMxrzZUFmCcc09oOrKopTgHZCAq-EFvd4bJInSMuUIK1BplRSMNveht9cgRuHwe5jk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU4NzgzOTk3MDc0NzExNywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=5b98399d6c7b43ae&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9DMDQ5MDM0RDI4NjgxQzlDNjUwNjJBMzVBOTUxNDA5M192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbai6GK5aiLAhUCKAJDMywXQDhVP3ztkWgYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBht_2O1BphTeDjEmh2HdJDlXtO1hw1qoGp4gmTPeDDkg&oe=67B76882&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479999170_18504215332032584_8409984485832295202_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=lqVnDSootP0Q7kNvgHqqZIv&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzMzNTE3NjYwNA%3D%3D.3-ccb7-5&oh=00_AYAUPnZeRr0bcFJWJ_ra1KkMH19TzuGUUyH9-XGxpHL9wg&oe=67BB595F&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479999170_18504215332032584_8409984485832295202_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=lqVnDSootP0Q7kNvgHqqZIv&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzMzNTE3NjYwNA%3D%3D.3-ccb7-5&oh=00_AYAUPnZeRr0bcFJWJ_ra1KkMH19TzuGUUyH9-XGxpHL9wg&oe=67BB595F&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'video_duration': 24.333, 'video_versions': [{'id': '1070256635142551v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPZCj-kQLE5gliu4rVoHqtQZoTgCzGWrc0UYNMxrzZUFmCcc09oOrKopTgHZCAq-EFvd4bJInSMuUIK1BplRSMNveht9cgRuHwe5jk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU4NzgzOTk3MDc0NzExNywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=5b98399d6c7b43ae&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9DMDQ5MDM0RDI4NjgxQzlDNjUwNjJBMzVBOTUxNDA5M192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbai6GK5aiLAhUCKAJDMywXQDhVP3ztkWgYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBht_2O1BphTeDjEmh2HdJDlXtO1hw1qoGp4gmTPeDDkg&oe=67B76882&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 214577}, {'id': '1070256635142551v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPZCj-kQLE5gliu4rVoHqtQZoTgCzGWrc0UYNMxrzZUFmCcc09oOrKopTgHZCAq-EFvd4bJInSMuUIK1BplRSMNveht9cgRuHwe5jk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU4NzgzOTk3MDc0NzExNywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=5b98399d6c7b43ae&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9DMDQ5MDM0RDI4NjgxQzlDNjUwNjJBMzVBOTUxNDA5M192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbai6GK5aiLAhUCKAJDMywXQDhVP3ztkWgYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBht_2O1BphTeDjEmh2HdJDlXtO1hw1qoGp4gmTPeDDkg&oe=67B76882&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 214577}, {'id': '1070256635142551v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPZCj-kQLE5gliu4rVoHqtQZoTgCzGWrc0UYNMxrzZUFmCcc09oOrKopTgHZCAq-EFvd4bJInSMuUIK1BplRSMNveht9cgRuHwe5jk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU4NzgzOTk3MDc0NzExNywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=5b98399d6c7b43ae&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9DMDQ5MDM0RDI4NjgxQzlDNjUwNjJBMzVBOTUxNDA5M192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbai6GK5aiLAhUCKAJDMywXQDhVP3ztkWgYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBht_2O1BphTeDjEmh2HdJDlXtO1hw1qoGp4gmTPeDDkg&oe=67B76882&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 214577}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3570689751381866774_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570173813351821986', 'pk': '3570173813351821986', 'is_video': True, 'taken_at': 1739879400, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM-NknVe4dgNxGIo_aDVkb6ziCu8P-jdQtJ2BZLDrgY6kxuiaMaEQz7qEGJEpCqQvGlo3yqvbI48rcfe6HZ8c2UaiGoITSAfZE7jWk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY2MDQ5NjY2NjMyNDg4MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&vs=4c56d70568c7fa1c&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9ERDQwNzJERDBEQTc1OUYwNkU5NDUzODcwNjg3QzU5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaivt_S-62sAhUCKAJDMywXQESMzMzMzM0YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYD-Wgy8bdf9NShF6vEfqFPywg67wID9rkGrRWHPt5NH9A&oe=67B769E3&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480979652_18504215365032584_4180492138364201285_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=R5wshlAygv8Q7kNvgF8-zhR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzM1MTgyMTk4Ng%3D%3D.3-ccb7-5&oh=00_AYCYtN2oZEekdH1SCzc-0HHDTBpWbyvyv0As8MF8QfyZ3w&oe=67BB55E7&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480979652_18504215365032584_4180492138364201285_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=R5wshlAygv8Q7kNvgF8-zhR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzM1MTgyMTk4Ng%3D%3D.3-ccb7-5&oh=00_AYCYtN2oZEekdH1SCzc-0HHDTBpWbyvyv0As8MF8QfyZ3w&oe=67BB55E7&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'video_duration': 41.1, 'video_versions': [{'id': '1639451373336049v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM-NknVe4dgNxGIo_aDVkb6ziCu8P-jdQtJ2BZLDrgY6kxuiaMaEQz7qEGJEpCqQvGlo3yqvbI48rcfe6HZ8c2UaiGoITSAfZE7jWk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY2MDQ5NjY2NjMyNDg4MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&vs=4c56d70568c7fa1c&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9ERDQwNzJERDBEQTc1OUYwNkU5NDUzODcwNjg3QzU5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaivt_S-62sAhUCKAJDMywXQESMzMzMzM0YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYD-Wgy8bdf9NShF6vEfqFPywg67wID9rkGrRWHPt5NH9A&oe=67B769E3&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 187025}, {'id': '1639451373336049v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM-NknVe4dgNxGIo_aDVkb6ziCu8P-jdQtJ2BZLDrgY6kxuiaMaEQz7qEGJEpCqQvGlo3yqvbI48rcfe6HZ8c2UaiGoITSAfZE7jWk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY2MDQ5NjY2NjMyNDg4MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&vs=4c56d70568c7fa1c&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9ERDQwNzJERDBEQTc1OUYwNkU5NDUzODcwNjg3QzU5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaivt_S-62sAhUCKAJDMywXQESMzMzMzM0YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYD-Wgy8bdf9NShF6vEfqFPywg67wID9rkGrRWHPt5NH9A&oe=67B769E3&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 187025}, {'id': '1639451373336049v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM-NknVe4dgNxGIo_aDVkb6ziCu8P-jdQtJ2BZLDrgY6kxuiaMaEQz7qEGJEpCqQvGlo3yqvbI48rcfe6HZ8c2UaiGoITSAfZE7jWk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY2MDQ5NjY2NjMyNDg4MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&vs=4c56d70568c7fa1c&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9ERDQwNzJERDBEQTc1OUYwNkU5NDUzODcwNjg3QzU5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaivt_S-62sAhUCKAJDMywXQESMzMzMzM0YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYD-Wgy8bdf9NShF6vEfqFPywg67wID9rkGrRWHPt5NH9A&oe=67B769E3&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 187025}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3570689751381866774_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570173813335030289', 'pk': '3570173813335030289', 'is_video': False, 'taken_at': 1739879400, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611978_18504215281032584_3103789270155948997_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=zfQFHcKOBUsQ7kNvgFvXa-7&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzMzNTAzMDI4OQ%3D%3D.3-ccb7-5&oh=00_AYBMZ_WVAMSyRPG1Jgy60VhGCjWy09Pc_hJXoUJe_gXR8g&oe=67BB423C&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611978_18504215281032584_3103789270155948997_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=zfQFHcKOBUsQ7kNvgFvXa-7&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzMzNTAzMDI4OQ%3D%3D.3-ccb7-5&oh=00_AYBMZ_WVAMSyRPG1Jgy60VhGCjWy09Pc_hJXoUJe_gXR8g&oe=67BB423C&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611978_18504215281032584_3103789270155948997_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=zfQFHcKOBUsQ7kNvgFvXa-7&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzMzNTAzMDI4OQ%3D%3D.3-ccb7-5&oh=00_AYCK8JqUC3wC1Hn4i_YjXTSo-PFe1Yx-xCLtHRd59VwKkg&oe=67BB423C&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570689751381866774_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480019140_18504215272032584_3617743370197739824_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fwaBVIws95QQ7kNvgGVY37z&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzU2MTU1OTcxMg%3D%3D.3-ccb7-5&oh=00_AYACY0ySCwDaNchU6v8nmXumwO0juGkvvrpvbTyeVAhv2Q&oe=67BB4971&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480019140_18504215272032584_3617743370197739824_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=fwaBVIws95QQ7kNvgGVY37z&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDE3MzgxMzU2MTU1OTcxMg%3D%3D.3-ccb7-5&oh=00_AYBw6uEIXOqsLADlON5z_qmuDtfHUfIToaDsA7L5GB-2JQ&oe=67BB4971&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739879400, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3570173813561559712, 3570173813343647357, 3570173813511292534, 3570173813335176604, 3570173813351821986, 3570173813335030289], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 6, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570151426631581137', 'pk': '3570151426631581137', 'code': 'DGLuc6aur3R', 'fbid': '18313870651202622', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3570151426631581137', 'pk': '18313884166202622', 'text': 'A IA acabou de fazer algo que os médicos não conseguem explicar 🤯\\\\n\\\\nCientistas desenvolveram um modelo de inteligência artificial baseado em aprendizado profundo capaz de identificar o sexo de uma pessoa por meio de imagens do fundo de olho da retina.\\\\n\\\\nO modelo foi treinado com mais de 84 mil imagens do UK Biobank e demonstrou um desempenho impressionante, atingindo 86,5% de precisão na fase de validação interna e 78,6% na validação externa.\\\\n\\\\nOs resultados indicaram que a presença de patologias na fóvea reduziu a precisão do modelo, sugerindo que essa região pode desempenhar um papel fundamental na diferenciação entre os sexos.\\\\n\\\\nEsse estudo destaca a capacidade da IA de detectar diferenças anatômicas mínimas, muitas vezes imperceptíveis para médicos, abrindo novas perspectivas para o uso da tecnologia no diagnóstico médico.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\nEstudo: https://www.nature.com/articles/s41598-021-89743-x\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #medicina #medicos #medico', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#medicina', '#medicos', '#medico'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739815204, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739815204, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739815200, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['loiroswaag'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 80, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480776687_18504185722032584_8979143601351711841_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HwlDkZuVxQkQ7kNvgEq7N7i&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MTIzMDk1MDE5OA%3D%3D.3-ccb7-5&oh=00_AYDDZtEzXXFjBX3tNNepBH-mqFuq0sfXHwkyM4jGCQM6fg&oe=67BB57AA&_nc_sid=2011ad', 'carousel_media': [{'id': '3570084981230950198', 'pk': '3570084981230950198', 'is_video': False, 'taken_at': 1739815200, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480776687_18504185722032584_8979143601351711841_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HwlDkZuVxQkQ7kNvgEq7N7i&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MTIzMDk1MDE5OA%3D%3D.3-ccb7-5&oh=00_AYDDZtEzXXFjBX3tNNepBH-mqFuq0sfXHwkyM4jGCQM6fg&oe=67BB57AA&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480776687_18504185722032584_8979143601351711841_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HwlDkZuVxQkQ7kNvgEq7N7i&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MTIzMDk1MDE5OA%3D%3D.3-ccb7-5&oh=00_AYDDZtEzXXFjBX3tNNepBH-mqFuq0sfXHwkyM4jGCQM6fg&oe=67BB57AA&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480776687_18504185722032584_8979143601351711841_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HwlDkZuVxQkQ7kNvgEq7N7i&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MTIzMDk1MDE5OA%3D%3D.3-ccb7-5&oh=00_AYBBjgKpnSFd8PASTSp-o03GaKrxIlWG7hgvGVB1zSN1BQ&oe=67BB57AA&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570151426631581137_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570084980979207807', 'pk': '3570084980979207807', 'is_video': False, 'taken_at': 1739815200, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478740701_18504185731032584_5810075883148481874_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Iwnf_9aj4O0Q7kNvgH21CSP&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MDk3OTIwNzgwNw%3D%3D.3-ccb7-5&oh=00_AYBdkVcW1NeGNajIZT18KToXURhXmcY4lGcMxdfUh2VIQw&oe=67BB61E5&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478740701_18504185731032584_5810075883148481874_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Iwnf_9aj4O0Q7kNvgH21CSP&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MDk3OTIwNzgwNw%3D%3D.3-ccb7-5&oh=00_AYBdkVcW1NeGNajIZT18KToXURhXmcY4lGcMxdfUh2VIQw&oe=67BB61E5&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478740701_18504185731032584_5810075883148481874_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Iwnf_9aj4O0Q7kNvgH21CSP&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MDk3OTIwNzgwNw%3D%3D.3-ccb7-5&oh=00_AYCFDarlU7VO4M9zfB-VEUSTe_Yy9r_mOVxgAMv1CYCzwQ&oe=67BB61E5&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570151426631581137_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3570084980929015058', 'pk': '3570084980929015058', 'is_video': False, 'taken_at': 1739815200, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480034366_18504185740032584_559234806914111676_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=iE--WoeXZHUQ7kNvgFoBbGH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MDkyOTAxNTA1OA%3D%3D.3-ccb7-5&oh=00_AYAvJfAy-qxLaMSi5qXj2T4wl8ElTZeEcFPRK2Fij4rheQ&oe=67BB37BC&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480034366_18504185740032584_559234806914111676_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=iE--WoeXZHUQ7kNvgFoBbGH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MDkyOTAxNTA1OA%3D%3D.3-ccb7-5&oh=00_AYAvJfAy-qxLaMSi5qXj2T4wl8ElTZeEcFPRK2Fij4rheQ&oe=67BB37BC&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480034366_18504185740032584_559234806914111676_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=iE--WoeXZHUQ7kNvgFoBbGH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MDkyOTAxNTA1OA%3D%3D.3-ccb7-5&oh=00_AYBRzsKlo6484M1N1miIoC46DU_hvLzyEb8ByQ8myE5v9g&oe=67BB37BC&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3570151426631581137_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480776687_18504185722032584_8979143601351711841_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HwlDkZuVxQkQ7kNvgEq7N7i&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MTIzMDk1MDE5OA%3D%3D.3-ccb7-5&oh=00_AYDDZtEzXXFjBX3tNNepBH-mqFuq0sfXHwkyM4jGCQM6fg&oe=67BB57AA&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480776687_18504185722032584_8979143601351711841_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HwlDkZuVxQkQ7kNvgEq7N7i&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDA4NDk4MTIzMDk1MDE5OA%3D%3D.3-ccb7-5&oh=00_AYBBjgKpnSFd8PASTSp-o03GaKrxIlWG7hgvGVB1zSN1BQ&oe=67BB57AA&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739815200, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3570084981230950198, 3570084980979207807, 3570084980929015058], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 3, 'share_count_disabled': True, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'SELF_DISCLOSURE_FLOW'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3571056431078255238', 'pk': '3571056431078255238', 'code': 'DGO8OdfSyqG', 'fbid': '18047557244251887', 'user': {'id': '58134309921', 'fbid_v2': 17841458257636788, 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3180559635036304440', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3571056431078255238', 'pk': '18047557481251887', 'text': '👉 C0MMENT “WHOP” and I’ll send you this FREE AI.\\\\n\\\\n🤖 AI Tool: @whop\\\\n\\\\nFollow for more ChatGPT and AI tips, tricks, hacks!\\\\n\\\\n#ai #artificialintelligence #aitools #aihacks #chatgpt #tech #technology #ainews', 'type': 1, 'user': {'id': '58134309921', 'fbid_v2': 17841458257636788, 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3180559635036304440', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad'}, 'user_id': '58134309921', 'hashtags': ['#ai', '#artificialintelligence', '#aitools', '#aihacks', '#chatgpt', '#tech', '#technology', '#ainews'], 'mentions': ['@whop'], 'created_at': 1739923243, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739923243, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'taken_at': 1739923189, 'can_reply': False, 'feed_type': 'media', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQOqAeG8lavxlieeWBPYqaeBehCfXPPR66NkZMSkhyJqOisrLhPa34DI1wjw9O-8vdtZy-cYjzEonBKoN5s_l1OK89TZH40HAEEiEyE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE2Njg5MTU1ODA0OTkzNzUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=3d9b9d1fc4da4d4a&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9GMzQxRDVERTQ3QkZCMEQwNzU2RDk5MzMxODRGMjBCMl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLM09uaHhsbzQzTkdFWUNBSEhVOEpHYTZ0ZGFicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJt7Wr4XW9_YFFQIoAkMzLBdAQSqfvnbItBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYC54gBgA_nrH9OkieJRGc0q1NbDZ4Zv4S_yHgGPvoPwWg&oe=67B74431&_nc_sid=1d576d', 'like_count': 3, 'media_name': 'reel', 'media_type': 2, 'play_count': 21564, 'top_likers': ['cory.crews'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'video_codec': 'av01.0.01M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'clips', 'tagged_users': {'in': [{'user': {'id': '55654690408', 'username': 'perceiveai', 'full_name': 'Caleb Torres', 'is_private': False, 'is_verified': True, 'profile_pic_id': '3413113584022848584', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/451231829_997687238352210_4736485881381639956_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=4ExuvKOeF1gQ7kNvgE-EAqp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYC2EAKjLEuAW2RJ8om5iEkjhWyiKK2J0GsczODofhTFYw&oe=67BB3E41&_nc_sid=2011ad'}, 'position': [0.0, 0.0], 'show_category_of_user': False}]}, 'comment_count': 323, 'fb_like_count': 0, 'fb_play_count': 46, 'ig_play_count': 21518, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480830023_1340167930662987_5100324153885624174_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4Lm5mcmFtZV9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=M_8QJZIY9H4Q7kNvgFLqrMb&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA1NjQzMTA3ODI1NTIzOA%3D%3D.3-ccb7-5&oh=00_AYAxHRiTw6hJxAgQlwCehm5cevpDg_f1wbkuPt3cNVVnAg&oe=67BB338D&_nc_sid=2011ad', 'clips_metadata': {'nux_info': None, 'show_tips': None, 'audio_type': 'original_sounds', 'music_info': None, 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'shopping_info': None, 'template_info': None, 'challenge_info': None, 'featured_label': None, 'is_shared_to_fb': True, 'originality_info': None, 'achievements_info': {'show_achievements': False, 'num_earned_achievements': None}, 'show_achievements': False, 'audio_canonical_id': '18332196631087940', 'audio_ranking_info': {'best_audio_cluster_id': '646177381221542'}, 'reusable_text_info': None, 'cutout_sticker_info': [], 'external_media_info': None, 'original_sound_info': {'audio_id': 1335464207771094, 'ig_artist': {'id': '58134309921', 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3180559635036304440', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad'}, 'trend_rank': None, 'audio_parts': [], 'is_explicit': False, 'time_created': 1739923191, 'hide_remixing': False, 'duration_in_ms': 34340, 'consumption_info': {'is_bookmarked': False, 'display_media_id': None, 'is_trending_in_clips': False, 'should_mute_audio_reason': '', 'should_mute_audio_reason_type': None}, 'is_xpost_from_fb': False, 'is_reuse_disabled': False, 'original_media_id': 3571056431078255238, 'should_mute_audio': False, 'audio_filter_infos': [], 'previous_trend_rank': None, 'original_audio_title': 'Original audio', 'audio_parts_by_filter': [], 'xpost_fb_creator_info': None, 'original_audio_subtype': 'default', 'overlap_duration_in_ms': None, 'allow_creator_to_rename': True, 'oa_owner_is_music_artist': False, 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPK85rW4GLqw0BYch7DzCkIzR9suzNg4whH0nhdNpbJ7NR47VQ9dDzFZsjbPY36Zd0mqDy7kpTp97I7GruAYTZO.mp4?strext=1&_nc_cat=110&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=qDZPg3gmesoQ7kNvgFM7CDq&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxNjY4OTE1NTgwNDk5Mzc1LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYCJDBKKHNTMyB8B9treP0mSD_1JDB1nLXY3_OVOA_GSsA&oe=67BB3428', 'can_remix_be_shared_to_fb': True, 'formatted_clips_media_count': None, 'audio_asset_start_time_in_ms': None, 'is_eligible_for_audio_effects': True, 'is_eligible_for_vinyl_sticker': True, 'attributed_custom_audio_asset_id': None, 'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}, 'is_audio_automatically_attributed': False, 'can_remix_be_shared_to_fb_expansion': False, 'is_original_audio_download_eligible': True}, 'additional_audio_info': {'audio_reattribution_info': {'should_allow_restore': False}, 'additional_audio_username': None}, 'breaking_content_info': None, 'breaking_creator_info': None, 'reels_on_the_rise_info': None, 'is_fan_club_promo_video': False, 'merchandising_pill_info': None, 'branded_content_tag_info': {'can_add_tag': False}, 'asset_recommendation_info': None, 'content_appreciation_info': {'enabled': False, 'entry_point_container': None}, 'contextual_highlight_info': None, 'clips_creation_entry_point': 'clips', 'viewer_interaction_settings': None, 'is_public_chat_welcome_video': False, 'professional_clips_upsell_type': 0, 'reusable_text_attribute_string': None, 'disable_use_in_clips_client_cache': False}, 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480830023_1340167930662987_5100324153885624174_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4Lm5mcmFtZV9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=M_8QJZIY9H4Q7kNvgFLqrMb&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA1NjQzMTA3ODI1NTIzOA%3D%3D.3-ccb7-5&oh=00_AYAxHRiTw6hJxAgQlwCehm5cevpDg_f1wbkuPt3cNVVnAg&oe=67BB338D&_nc_sid=2011ad', 'width': 360, 'height': 639}], 'additional_items': {'first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479198912_599707209558669_6787734818211221624_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=GAMkfk4QZ4QQ7kNvgFyoNCf&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCoLIerTVkxLC0E-Y5JsR_WJtLAY-nGOlhP9jfTVTjXeA&oe=67BB5264&_nc_sid=2011ad', 'width': 360, 'height': 639}, 'smart_frame': None, 'igtv_first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479198912_599707209558669_6787734818211221624_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=GAMkfk4QZ4QQ7kNvgFyoNCf&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCoLIerTVkxLC0E-Y5JsR_WJtLAY-nGOlhP9jfTVTjXeA&oe=67BB5264&_nc_sid=2011ad', 'width': 360, 'height': 639}}, 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480291458_1887533892056691_4674460183023385702_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=eoi7Ku0_FzcQ7kNvgF_IUsl&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDYmjdidedYo68r7ofBV-CuLfkknN8qv6kHrpGm48d-jQ&oe=67BB5448&_nc_sid=2011ad'], 'file_size_kb': 429, 'sprite_width': 1500, 'video_length': 34.334, 'sprite_height': 1246, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 178, 'thumbnail_duration': 0.3269904761904762, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'is_artist_pick': False, 'music_metadata': None, 'original_width': 1080, 'video_duration': 34.334, 'video_versions': [{'id': '1274678620428047v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQOqAeG8lavxlieeWBPYqaeBehCfXPPR66NkZMSkhyJqOisrLhPa34DI1wjw9O-8vdtZy-cYjzEonBKoN5s_l1OK89TZH40HAEEiEyE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE2Njg5MTU1ODA0OTkzNzUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=3d9b9d1fc4da4d4a&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9GMzQxRDVERTQ3QkZCMEQwNzU2RDk5MzMxODRGMjBCMl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLM09uaHhsbzQzTkdFWUNBSEhVOEpHYTZ0ZGFicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJt7Wr4XW9_YFFQIoAkMzLBdAQSqfvnbItBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYC54gBgA_nrH9OkieJRGc0q1NbDZ4Zv4S_yHgGPvoPwWg&oe=67B74431&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 1280, 'bandwidth': 890348}, {'id': '1274678620428047v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQOqAeG8lavxlieeWBPYqaeBehCfXPPR66NkZMSkhyJqOisrLhPa34DI1wjw9O-8vdtZy-cYjzEonBKoN5s_l1OK89TZH40HAEEiEyE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE2Njg5MTU1ODA0OTkzNzUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=3d9b9d1fc4da4d4a&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9GMzQxRDVERTQ3QkZCMEQwNzU2RDk5MzMxODRGMjBCMl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLM09uaHhsbzQzTkdFWUNBSEhVOEpHYTZ0ZGFicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJt7Wr4XW9_YFFQIoAkMzLBdAQSqfvnbItBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYC54gBgA_nrH9OkieJRGc0q1NbDZ4Zv4S_yHgGPvoPwWg&oe=67B74431&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 1280, 'bandwidth': 890348}, {'id': '1274678620428047v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQOqAeG8lavxlieeWBPYqaeBehCfXPPR66NkZMSkhyJqOisrLhPa34DI1wjw9O-8vdtZy-cYjzEonBKoN5s_l1OK89TZH40HAEEiEyE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE2Njg5MTU1ODA0OTkzNzUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DTElQUy5DMy43MjAuZGFzaF9iYXNlbGluZV8xX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=3d9b9d1fc4da4d4a&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC9GMzQxRDVERTQ3QkZCMEQwNzU2RDk5MzMxODRGMjBCMl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLM09uaHhsbzQzTkdFWUNBSEhVOEpHYTZ0ZGFicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJt7Wr4XW9_YFFQIoAkMzLBdAQSqfvnbItBgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYC54gBgA_nrH9OkieJRGc0q1NbDZ4Zv4S_yHgGPvoPwWg&oe=67B74431&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 1280, 'bandwidth': 890348}], 'avatar_stickers': [], 'original_height': 1920, 'device_timestamp': 1739923114159239, 'has_shared_to_fb': 0, 'is_dash_eligible': 1, 'preview_comments': [], 'caption_is_edited': True, 'featured_products': [], 'coauthor_producers': [{'id': '55654690408', 'pk': '55654690408', 'username': 'perceiveai', 'full_name': 'Caleb Torres', 'is_private': False, 'is_verified': True, 'profile_pic_id': '3413113584022848584', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/451231829_997687238352210_4736485881381639956_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=4ExuvKOeF1gQ7kNvgE-EAqp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYC2EAKjLEuAW2RJ8om5iEkjhWyiKK2J0GsczODofhTFYw&oe=67BB3E41&_nc_sid=2011ad'}], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'media_cropping_info': {'square_crop': {'crop_top': 0.0, 'crop_left': 0.0, 'crop_right': 0.0, 'crop_bottom': 0.0}}, 'number_of_qualities': 8, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'video_subtitles_locale': 'en_US', 'creator_viewer_insights': [], 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'are_remixes_crosspostable': True, 'clips_tab_pinned_user_ids': [], 'collab_follow_button_info': {'show_follow_button': True, 'is_owner_in_author_exp': True}, 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'is_third_party_downloads_eligible': True, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_open_collab_bottomsheet_on_facepile_tap': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3568594898913950176', 'pk': '3568594898913950176', 'code': 'DGGMidBCXng', 'fbid': '17933092307878761', 'user': {'id': '49260000425', 'fbid_v2': 17841449212757500, 'username': 'cerebrodigital.ia', 'full_name': 'Inteligencia Artificial | ChatGPT | Emprendedores', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3074346061824491522', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/339131576_3451187725128874_8192931899857941041_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=W5guO74VPPcQ7kNvgFn-JSQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAr3eiK4wEB6m6q9A0ISpvQoj1dSxtTUb2pnojb8jmV5A&oe=67BB3890&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3568594898913950176', 'pk': '17933092316878761', 'text': '9 herramientas de IA que todo emprendedor debe conocer ✅\\\\n\\\\nDesbloquea el Kit Esencial de IA para Principiantes mediante el enlace de nuestro perfil o comentando “Quiero IA” 💎\\\\n\\\\nSolo durante las próximas 72 horas descuento de lanzamiento del 60%! Toma acción rápido! 🎁\\\\n\\\\n—\\\\n\\\\nSíguenos @cerebrodigital.ia 👈🏻\\\\nSíguenos @cerebrodigital.ia 👈🏻\\\\n\\\\n—\\\\n\\\\n#ia #inteligenciaartificial #chatgpt #herramientasdigitales #negociosonline #emprendedoresonline #marketingdigital', 'type': 1, 'user': {'id': '49260000425', 'fbid_v2': 17841449212757500, 'username': 'cerebrodigital.ia', 'full_name': 'Inteligencia Artificial | ChatGPT | Emprendedores', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3074346061824491522', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/339131576_3451187725128874_8192931899857941041_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=W5guO74VPPcQ7kNvgFn-JSQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAr3eiK4wEB6m6q9A0ISpvQoj1dSxtTUb2pnojb8jmV5A&oe=67BB3890&_nc_sid=2011ad'}, 'user_id': '49260000425', 'hashtags': ['#ia', '#inteligenciaartificial', '#chatgpt', '#herramientasdigitales', '#negociosonline', '#emprendedoresonline', '#marketingdigital'], 'mentions': ['@cerebrodigital.ia'], 'created_at': 1739629686, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739629686, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739629684, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 7792, 'media_name': 'album', 'media_type': 8, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 562, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479734519_18028435916640426_1707695145021885871_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3RkNVIJFZEMQ7kNvgEcbXt3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NjgxMDc2MjkxNA%3D%3D.3-ccb7-5&oh=00_AYBrr1Lp54P6P4m8gAc1n6GNULjYbJYgpjdT3vEqKx8Vkw&oe=67BB552A&_nc_sid=2011ad', 'carousel_media': [{'id': '3568594866810762914', 'pk': '3568594866810762914', 'is_video': False, 'taken_at': 1739629680, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479734519_18028435916640426_1707695145021885871_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3RkNVIJFZEMQ7kNvgEcbXt3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NjgxMDc2MjkxNA%3D%3D.3-ccb7-5&oh=00_AYBrr1Lp54P6P4m8gAc1n6GNULjYbJYgpjdT3vEqKx8Vkw&oe=67BB552A&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479734519_18028435916640426_1707695145021885871_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3RkNVIJFZEMQ7kNvgEcbXt3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NjgxMDc2MjkxNA%3D%3D.3-ccb7-5&oh=00_AYBrr1Lp54P6P4m8gAc1n6GNULjYbJYgpjdT3vEqKx8Vkw&oe=67BB552A&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479734519_18028435916640426_1707695145021885871_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3RkNVIJFZEMQ7kNvgEcbXt3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NjgxMDc2MjkxNA%3D%3D.3-ccb7-5&oh=00_AYBSSglHyTjMoczCLquERJbVieJFrHL4SZmVc92hW2HpQg&oe=67BB552A&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568591768931388960', 'pk': '3568591768931388960', 'is_video': True, 'taken_at': 1739629681, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOYBwo33JkJoOkofUD1JowLpFoIrm3lsCxr8HlP-Y_Krc4Tua-UcTEMEPV-01pmbdx-E-NFHq0IBwTCQN32fb3QrzT_z7ljdqYZMf8.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjUyMzk1OTk3Njg3NDc1MywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&vs=ab00a24749457356&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC83MTRDQjdBMTMyQjQwMjU5NkMzMjA3NkI4NjUyODFBRV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCzOKEvqLuARUCKAJDMywXQE4AAAAAAAAYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBFPqbAj7SoquVkkD91ErcIILmjQZAWB_n8wq_fVHzmxQ&oe=67B76812&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472637223_18028436423640426_6678281514247270177_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=IUsz_eeRG9kQ7kNvgHgcIIK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc2ODkzMTM4ODk2MA%3D%3D.3-ccb7-5&oh=00_AYD9BcNbRL5z7G4oX-DJQODRTbhcUlvn-LOY8BI_7R_bwQ&oe=67BB518E&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472637223_18028436423640426_6678281514247270177_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=IUsz_eeRG9kQ7kNvgHgcIIK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc2ODkzMTM4ODk2MA%3D%3D.3-ccb7-5&oh=00_AYD9BcNbRL5z7G4oX-DJQODRTbhcUlvn-LOY8BI_7R_bwQ&oe=67BB518E&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479163965_1048608533674102_1191650095831860193_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=zt1ADYwmaF8Q7kNvgFSHifr&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYB3Hz8X7d0GMUcxLVs0ZoODI9Ywn3ZKLVtJ1wTk4Qs7dA&oe=67BB451C&_nc_sid=2011ad'], 'file_size_kb': 214, 'sprite_width': 1500, 'video_length': 60.0, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.5714285714285714, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 60.0, 'video_versions': [{'id': '1282644559456611v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOYBwo33JkJoOkofUD1JowLpFoIrm3lsCxr8HlP-Y_Krc4Tua-UcTEMEPV-01pmbdx-E-NFHq0IBwTCQN32fb3QrzT_z7ljdqYZMf8.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjUyMzk1OTk3Njg3NDc1MywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&vs=ab00a24749457356&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC83MTRDQjdBMTMyQjQwMjU5NkMzMjA3NkI4NjUyODFBRV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCzOKEvqLuARUCKAJDMywXQE4AAAAAAAAYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBFPqbAj7SoquVkkD91ErcIILmjQZAWB_n8wq_fVHzmxQ&oe=67B76812&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 650418}, {'id': '1282644559456611v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOYBwo33JkJoOkofUD1JowLpFoIrm3lsCxr8HlP-Y_Krc4Tua-UcTEMEPV-01pmbdx-E-NFHq0IBwTCQN32fb3QrzT_z7ljdqYZMf8.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjUyMzk1OTk3Njg3NDc1MywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&vs=ab00a24749457356&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC83MTRDQjdBMTMyQjQwMjU5NkMzMjA3NkI4NjUyODFBRV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCzOKEvqLuARUCKAJDMywXQE4AAAAAAAAYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBFPqbAj7SoquVkkD91ErcIILmjQZAWB_n8wq_fVHzmxQ&oe=67B76812&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 650418}, {'id': '1282644559456611v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOYBwo33JkJoOkofUD1JowLpFoIrm3lsCxr8HlP-Y_Krc4Tua-UcTEMEPV-01pmbdx-E-NFHq0IBwTCQN32fb3QrzT_z7ljdqYZMf8.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjUyMzk1OTk3Njg3NDc1MywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&vs=ab00a24749457356&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC83MTRDQjdBMTMyQjQwMjU5NkMzMjA3NkI4NjUyODFBRV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCzOKEvqLuARUCKAJDMywXQE4AAAAAAAAYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBFPqbAj7SoquVkkD91ErcIILmjQZAWB_n8wq_fVHzmxQ&oe=67B76812&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 650418}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 4, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568591770558845579', 'pk': '3568591770558845579', 'is_video': True, 'taken_at': 1739629680, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPtEol20AnEPDEryZAcBNzN0JnDpWIvXQzqH7_g_y23UWoI7Ph7p0mNPGoernly9rxsrP5Hg0l1eR_tHt15QEIDNsCKFbnI-z6o-qU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNTkxOTYwOTUwODY2NzAsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=a7274ea59ee5227&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GNzRCMjQ1QTk0MEREREE4NDNCRTYwODdENkY1N0JCNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACacgeyG0IvqBBUCKAJDMywXQCuIMSbpeNUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCtyINfZ2c85HvAIYIB3J8rCFiwAnp7L0KmQtffT-PS1w&oe=67B76AC1&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472702556_18028436210640426_5313242778405262127_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=pNoLoi-r9UUQ7kNvgGxvdO3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc3MDU1ODg0NTU3OQ%3D%3D.3-ccb7-5&oh=00_AYBeA169VNl4d61HTSY6WUET9T1fV953eWHm4HKrPD1T3w&oe=67BB678F&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472702556_18028436210640426_5313242778405262127_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=pNoLoi-r9UUQ7kNvgGxvdO3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc3MDU1ODg0NTU3OQ%3D%3D.3-ccb7-5&oh=00_AYBeA169VNl4d61HTSY6WUET9T1fV953eWHm4HKrPD1T3w&oe=67BB678F&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480547186_1082256880251868_6569930299525692842_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=N9ElOWxmvVsQ7kNvgEEDwBK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAn7cy7zzE3C5gT47GsTJo8aghzIUGEUgY47hH_6dwzZA&oe=67BB5EDA&_nc_sid=2011ad'], 'file_size_kb': 239, 'sprite_width': 1500, 'video_length': 13.766, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.13110476190476192, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 13.766, 'video_versions': [{'id': '1552414145395828v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPtEol20AnEPDEryZAcBNzN0JnDpWIvXQzqH7_g_y23UWoI7Ph7p0mNPGoernly9rxsrP5Hg0l1eR_tHt15QEIDNsCKFbnI-z6o-qU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNTkxOTYwOTUwODY2NzAsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=a7274ea59ee5227&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GNzRCMjQ1QTk0MEREREE4NDNCRTYwODdENkY1N0JCNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACacgeyG0IvqBBUCKAJDMywXQCuIMSbpeNUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCtyINfZ2c85HvAIYIB3J8rCFiwAnp7L0KmQtffT-PS1w&oe=67B76AC1&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 214057}, {'id': '1552414145395828v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPtEol20AnEPDEryZAcBNzN0JnDpWIvXQzqH7_g_y23UWoI7Ph7p0mNPGoernly9rxsrP5Hg0l1eR_tHt15QEIDNsCKFbnI-z6o-qU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNTkxOTYwOTUwODY2NzAsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=a7274ea59ee5227&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GNzRCMjQ1QTk0MEREREE4NDNCRTYwODdENkY1N0JCNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACacgeyG0IvqBBUCKAJDMywXQCuIMSbpeNUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCtyINfZ2c85HvAIYIB3J8rCFiwAnp7L0KmQtffT-PS1w&oe=67B76AC1&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 214057}, {'id': '1552414145395828v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPtEol20AnEPDEryZAcBNzN0JnDpWIvXQzqH7_g_y23UWoI7Ph7p0mNPGoernly9rxsrP5Hg0l1eR_tHt15QEIDNsCKFbnI-z6o-qU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNTkxOTYwOTUwODY2NzAsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=a7274ea59ee5227&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GNzRCMjQ1QTk0MEREREE4NDNCRTYwODdENkY1N0JCNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACacgeyG0IvqBBUCKAJDMywXQCuIMSbpeNUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCtyINfZ2c85HvAIYIB3J8rCFiwAnp7L0KmQtffT-PS1w&oe=67B76AC1&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 214057}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568591771162785384', 'pk': '3568591771162785384', 'is_video': True, 'taken_at': 1739629680, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM8YQoEUHBDxne5fb2uhCou3tm_rFNkEkOHzBB8XjFvmpD7utpBEbm2kmZnq46bnP9P60mr-9Z4YaYLtjnCYLVOLmd-qT9KCjzoPX0.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMTE0NTA0OTQyMDYzNTEsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&vs=a9781663fa661e07&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82RDQyMkZBRjczQzc2NkZBMTg1NTQzOUU2MjBGRkNBM192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaehtK2lfrLAxUCKAJDMywXQE4AAAAAAAAYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCmD-4TJyQl7mYiHHQ9LNLcTCW0idILNM6SbceAZQslCQ&oe=67B7588F&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479356778_18028436558640426_6811647173858569920_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Q7jF30uO1N8Q7kNvgHQqItm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc3MTE2Mjc4NTM4NA%3D%3D.3-ccb7-5&oh=00_AYCZ9MZgg1pSk9jUeigqzyf6EU-qZbKQd1Fm17s8E0eFHA&oe=67BB5FB3&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479356778_18028436558640426_6811647173858569920_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Q7jF30uO1N8Q7kNvgHQqItm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc3MTE2Mjc4NTM4NA%3D%3D.3-ccb7-5&oh=00_AYCZ9MZgg1pSk9jUeigqzyf6EU-qZbKQd1Fm17s8E0eFHA&oe=67BB5FB3&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480043216_973968368200374_5008745958199291436_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=toXGkYpjEboQ7kNvgEYqqdQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAdhng_DKWepjoaZst4jUykhzrNwpBRO5WPWFnoMf1XBw&oe=67BB4939&_nc_sid=2011ad'], 'file_size_kb': 279, 'sprite_width': 1500, 'video_length': 60.0, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.5714285714285714, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 60.0, 'video_versions': [{'id': '1359474372164360v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM8YQoEUHBDxne5fb2uhCou3tm_rFNkEkOHzBB8XjFvmpD7utpBEbm2kmZnq46bnP9P60mr-9Z4YaYLtjnCYLVOLmd-qT9KCjzoPX0.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMTE0NTA0OTQyMDYzNTEsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&vs=a9781663fa661e07&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82RDQyMkZBRjczQzc2NkZBMTg1NTQzOUU2MjBGRkNBM192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaehtK2lfrLAxUCKAJDMywXQE4AAAAAAAAYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCmD-4TJyQl7mYiHHQ9LNLcTCW0idILNM6SbceAZQslCQ&oe=67B7588F&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 284424}, {'id': '1359474372164360v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM8YQoEUHBDxne5fb2uhCou3tm_rFNkEkOHzBB8XjFvmpD7utpBEbm2kmZnq46bnP9P60mr-9Z4YaYLtjnCYLVOLmd-qT9KCjzoPX0.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMTE0NTA0OTQyMDYzNTEsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&vs=a9781663fa661e07&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82RDQyMkZBRjczQzc2NkZBMTg1NTQzOUU2MjBGRkNBM192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaehtK2lfrLAxUCKAJDMywXQE4AAAAAAAAYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCmD-4TJyQl7mYiHHQ9LNLcTCW0idILNM6SbceAZQslCQ&oe=67B7588F&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 284424}, {'id': '1359474372164360v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM8YQoEUHBDxne5fb2uhCou3tm_rFNkEkOHzBB8XjFvmpD7utpBEbm2kmZnq46bnP9P60mr-9Z4YaYLtjnCYLVOLmd-qT9KCjzoPX0.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMTE0NTA0OTQyMDYzNTEsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&vs=a9781663fa661e07&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82RDQyMkZBRjczQzc2NkZBMTg1NTQzOUU2MjBGRkNBM192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaehtK2lfrLAxUCKAJDMywXQE4AAAAAAAAYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCmD-4TJyQl7mYiHHQ9LNLcTCW0idILNM6SbceAZQslCQ&oe=67B7588F&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 284424}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568591770659516561', 'pk': '3568591770659516561', 'is_video': True, 'taken_at': 1739629680, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPFmJKasvoUa4mYxY64eohQGrDa909AFm1GekerTi3ocMuO-0cOXJa4JxO3EU6ZzaufsMRj9vtnBK7Niowf_Lqib2od5afLjsRAExQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYzMDkxODczMjY0Mjc0NiwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=6e2e49eed52f5c5b&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC81NTRCMDY4MUE4MUY3QjI4NkJDQkU4OTg1MkYzRTU4Nl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACb05ofvpvSeAhUCKAJDMywXQEW7peNT988YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYD97gY1tSEM8-M8w4GhERloWUkNxgS3cVYXduR4Vq4uzw&oe=67B74664&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472567537_18028436363640426_7343651719364544484_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ifFGRFUmac0Q7kNvgGBcDks&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc3MDY1OTUxNjU2MQ%3D%3D.3-ccb7-5&oh=00_AYDlDib7HHSAvXAEWOkRhD39b0-3iQ__RFy92zvtYEuFPg&oe=67BB663D&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472567537_18028436363640426_7343651719364544484_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ifFGRFUmac0Q7kNvgGBcDks&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc3MDY1OTUxNjU2MQ%3D%3D.3-ccb7-5&oh=00_AYDlDib7HHSAvXAEWOkRhD39b0-3iQ__RFy92zvtYEuFPg&oe=67BB663D&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479512679_617594184198305_2233650065903593959_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=eKvoIWvILzsQ7kNvgE2CzEZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYC8pUezRpjBDr_XOpesvk4PESAxLSPv2UNNO1PqWhRJzw&oe=67BB3BEC&_nc_sid=2011ad'], 'file_size_kb': 270, 'sprite_width': 1500, 'video_length': 43.466, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.41396190476190475, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 43.466, 'video_versions': [{'id': '1300867807839372v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPFmJKasvoUa4mYxY64eohQGrDa909AFm1GekerTi3ocMuO-0cOXJa4JxO3EU6ZzaufsMRj9vtnBK7Niowf_Lqib2od5afLjsRAExQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYzMDkxODczMjY0Mjc0NiwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=6e2e49eed52f5c5b&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC81NTRCMDY4MUE4MUY3QjI4NkJDQkU4OTg1MkYzRTU4Nl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACb05ofvpvSeAhUCKAJDMywXQEW7peNT988YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYD97gY1tSEM8-M8w4GhERloWUkNxgS3cVYXduR4Vq4uzw&oe=67B74664&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 194360}, {'id': '1300867807839372v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPFmJKasvoUa4mYxY64eohQGrDa909AFm1GekerTi3ocMuO-0cOXJa4JxO3EU6ZzaufsMRj9vtnBK7Niowf_Lqib2od5afLjsRAExQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYzMDkxODczMjY0Mjc0NiwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=6e2e49eed52f5c5b&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC81NTRCMDY4MUE4MUY3QjI4NkJDQkU4OTg1MkYzRTU4Nl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACb05ofvpvSeAhUCKAJDMywXQEW7peNT988YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYD97gY1tSEM8-M8w4GhERloWUkNxgS3cVYXduR4Vq4uzw&oe=67B74664&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 194360}, {'id': '1300867807839372v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPFmJKasvoUa4mYxY64eohQGrDa909AFm1GekerTi3ocMuO-0cOXJa4JxO3EU6ZzaufsMRj9vtnBK7Niowf_Lqib2od5afLjsRAExQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYzMDkxODczMjY0Mjc0NiwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=6e2e49eed52f5c5b&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC81NTRCMDY4MUE4MUY3QjI4NkJDQkU4OTg1MkYzRTU4Nl92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACb05ofvpvSeAhUCKAJDMywXQEW7peNT988YFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYD97gY1tSEM8-M8w4GhERloWUkNxgS3cVYXduR4Vq4uzw&oe=67B74664&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 194360}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568591768411235660', 'pk': '3568591768411235660', 'is_video': True, 'taken_at': 1739629680, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMfiL3sGAXeEsWIHg0HK5Nk1iqO2IBH5aAIYXADXU5abVx03BQi0YQ06hyes8TajlTviZ3pxHjsBeWvQ6Vt3RWbwFIPl_k4gMc2Vzk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExMzU2NjI4MDgwMDEzMjUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=976e100f3c9ed912&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC84QjRFNUI3QTY0NkYxQTcxMzU1QTgwNEMyQzgxODQ5N192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbarIuko7iEBBUCKAJDMywXQDwZmZmZmZoYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBRFNZ3oZc3N8CQi5orC5l8CftDmxRxtTWgOQsRpJFFfA&oe=67B77293&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479889340_18028436276640426_7444385885684895400_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6sIlCcMdL_QQ7kNvgHGQwGh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc2ODQxMTIzNTY2MA%3D%3D.3-ccb7-5&oh=00_AYB3v2Z8Lgt330VUCxEWwHHXRvHR0ZHO9lfnScuOiEjiIw&oe=67BB3129&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479889340_18028436276640426_7444385885684895400_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6sIlCcMdL_QQ7kNvgHGQwGh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MTc2ODQxMTIzNTY2MA%3D%3D.3-ccb7-5&oh=00_AYB3v2Z8Lgt330VUCxEWwHHXRvHR0ZHO9lfnScuOiEjiIw&oe=67BB3129&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480128269_636584295415442_5084044903847139971_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6BK9rWT8IvgQ7kNvgF6eojn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCW0s5lpldID9kL7V9rNUezZjOBVAw7XbgC_9vnQmNgCQ&oe=67BB36D7&_nc_sid=2011ad'], 'file_size_kb': 223, 'sprite_width': 1500, 'video_length': 28.1, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.26761904761904765, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 28.1, 'video_versions': [{'id': '1347451236387171v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMfiL3sGAXeEsWIHg0HK5Nk1iqO2IBH5aAIYXADXU5abVx03BQi0YQ06hyes8TajlTviZ3pxHjsBeWvQ6Vt3RWbwFIPl_k4gMc2Vzk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExMzU2NjI4MDgwMDEzMjUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=976e100f3c9ed912&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC84QjRFNUI3QTY0NkYxQTcxMzU1QTgwNEMyQzgxODQ5N192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbarIuko7iEBBUCKAJDMywXQDwZmZmZmZoYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBRFNZ3oZc3N8CQi5orC5l8CftDmxRxtTWgOQsRpJFFfA&oe=67B77293&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 192775}, {'id': '1347451236387171v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMfiL3sGAXeEsWIHg0HK5Nk1iqO2IBH5aAIYXADXU5abVx03BQi0YQ06hyes8TajlTviZ3pxHjsBeWvQ6Vt3RWbwFIPl_k4gMc2Vzk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExMzU2NjI4MDgwMDEzMjUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=976e100f3c9ed912&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC84QjRFNUI3QTY0NkYxQTcxMzU1QTgwNEMyQzgxODQ5N192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbarIuko7iEBBUCKAJDMywXQDwZmZmZmZoYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBRFNZ3oZc3N8CQi5orC5l8CftDmxRxtTWgOQsRpJFFfA&oe=67B77293&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 192775}, {'id': '1347451236387171v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMfiL3sGAXeEsWIHg0HK5Nk1iqO2IBH5aAIYXADXU5abVx03BQi0YQ06hyes8TajlTviZ3pxHjsBeWvQ6Vt3RWbwFIPl_k4gMc2Vzk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExMzU2NjI4MDgwMDEzMjUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=976e100f3c9ed912&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC84QjRFNUI3QTY0NkYxQTcxMzU1QTgwNEMyQzgxODQ5N192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbarIuko7iEBBUCKAJDMywXQDwZmZmZmZoYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBRFNZ3oZc3N8CQi5orC5l8CftDmxRxtTWgOQsRpJFFfA&oe=67B77293&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 192775}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568593407302006603', 'pk': '3568593407302006603', 'is_video': True, 'taken_at': 1739629680, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMaiE_m81CN-jl_augGkh88u79ZxRmh8xksAx0sAdLnHwGoau8xDU2fYDsp1myOCrs01qL_HZ5rgZPw1051fbSJtNd5pfZsMlvT_hw.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNjAwNjEyNDUxMjQ1MDcsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=db7eb85d36f5c640&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GMTRCQUFBNjhDRjlFRTExM0JDMUQ4MUMyNkJDRjZBRF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACa2vpv2_b3qBBUCKAJDMywXQD3EGJN0vGoYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYAIxuRjHHFnNbOqviGDUIKz7CZAQpL1i9XZE6EZC7lWFg&oe=67B76E0B&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/474003003_18028436414640426_8992854312750257379_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2uaN7WdxScwQ7kNvgE3skAu&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MzQwNzMwMjAwNjYwMw%3D%3D.3-ccb7-5&oh=00_AYAgf6gVhgPKAHbSOOmWSOoV5Zovyd2HgzSMQjNK8fNulQ&oe=67BB5455&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/474003003_18028436414640426_8992854312750257379_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2uaN7WdxScwQ7kNvgE3skAu&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5MzQwNzMwMjAwNjYwMw%3D%3D.3-ccb7-5&oh=00_AYAgf6gVhgPKAHbSOOmWSOoV5Zovyd2HgzSMQjNK8fNulQ&oe=67BB5455&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480419517_1057084406458132_1450071558245839851_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TgThxQubN0IQ7kNvgHRS4Ib&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDN7Ql0KO9g9CyGUzYQ12tde_Teh2diwoza3uie-nUN7w&oe=67BB45DD&_nc_sid=2011ad'], 'file_size_kb': 231, 'sprite_width': 1500, 'video_length': 29.766, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.2834857142857143, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 29.766, 'video_versions': [{'id': '1275651803522067v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMaiE_m81CN-jl_augGkh88u79ZxRmh8xksAx0sAdLnHwGoau8xDU2fYDsp1myOCrs01qL_HZ5rgZPw1051fbSJtNd5pfZsMlvT_hw.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNjAwNjEyNDUxMjQ1MDcsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=db7eb85d36f5c640&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GMTRCQUFBNjhDRjlFRTExM0JDMUQ4MUMyNkJDRjZBRF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACa2vpv2_b3qBBUCKAJDMywXQD3EGJN0vGoYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYAIxuRjHHFnNbOqviGDUIKz7CZAQpL1i9XZE6EZC7lWFg&oe=67B76E0B&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 264816}, {'id': '1275651803522067v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMaiE_m81CN-jl_augGkh88u79ZxRmh8xksAx0sAdLnHwGoau8xDU2fYDsp1myOCrs01qL_HZ5rgZPw1051fbSJtNd5pfZsMlvT_hw.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNjAwNjEyNDUxMjQ1MDcsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=db7eb85d36f5c640&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GMTRCQUFBNjhDRjlFRTExM0JDMUQ4MUMyNkJDRjZBRF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACa2vpv2_b3qBBUCKAJDMywXQD3EGJN0vGoYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYAIxuRjHHFnNbOqviGDUIKz7CZAQpL1i9XZE6EZC7lWFg&oe=67B76E0B&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 264816}, {'id': '1275651803522067v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQMaiE_m81CN-jl_augGkh88u79ZxRmh8xksAx0sAdLnHwGoau8xDU2fYDsp1myOCrs01qL_HZ5rgZPw1051fbSJtNd5pfZsMlvT_hw.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNjAwNjEyNDUxMjQ1MDcsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=db7eb85d36f5c640&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GMTRCQUFBNjhDRjlFRTExM0JDMUQ4MUMyNkJDRjZBRF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACa2vpv2_b3qBBUCKAJDMywXQD3EGJN0vGoYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYAIxuRjHHFnNbOqviGDUIKz7CZAQpL1i9XZE6EZC7lWFg&oe=67B76E0B&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 264816}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568593872324645798', 'pk': '3568593872324645798', 'is_video': True, 'taken_at': 1739629681, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPiA25hQQw67GYQmQ6WA2k4ZvhMhW_h3fCZ9OPagHAnlcp1xVWvdshFerOx5ENbiOI6w03pMcJ2jdI-McwsDRMHg3wbGXC1ciNZdbA.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjUxMzI5NTU4NTExOTY4MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=1cf3616255e6a51a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82MzQ5NzA0RThGNjRFRjQyQUMyOTVBMDJEQzA2ODQ5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCt6CQ3rXpARUCKAJDMywXQDcIcrAgxJwYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYB2Jl4DCWda_P1zMZ6oeIlsM1-cfG1XxFmQAqydfYk4pA&oe=67B7447D&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479436954_18028436543640426_7416510675987126161_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=MOKAaTku1PQQ7kNvgHBeJn4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5Mzg3MjMyNDY0NTc5OA%3D%3D.3-ccb7-5&oh=00_AYCyvYaHO10SGECJljhgdx-UxZLLz-B0TO3ZwY6GFXx_eg&oe=67BB474B&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479436954_18028436543640426_7416510675987126161_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=MOKAaTku1PQQ7kNvgHBeJn4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5Mzg3MjMyNDY0NTc5OA%3D%3D.3-ccb7-5&oh=00_AYCyvYaHO10SGECJljhgdx-UxZLLz-B0TO3ZwY6GFXx_eg&oe=67BB474B&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479743379_1140481453857577_3682540359373539629_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=QRcqf-D33CMQ7kNvgEVRmoS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYB3a-nt1ciJrTnJfC5ioUH0gLNpDPiuFGqBbjM_7NNLFQ&oe=67BB35DB&_nc_sid=2011ad'], 'file_size_kb': 254, 'sprite_width': 1500, 'video_length': 23.033, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.21936190476190479, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 23.033, 'video_versions': [{'id': '1020401749996844v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPiA25hQQw67GYQmQ6WA2k4ZvhMhW_h3fCZ9OPagHAnlcp1xVWvdshFerOx5ENbiOI6w03pMcJ2jdI-McwsDRMHg3wbGXC1ciNZdbA.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjUxMzI5NTU4NTExOTY4MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=1cf3616255e6a51a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82MzQ5NzA0RThGNjRFRjQyQUMyOTVBMDJEQzA2ODQ5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCt6CQ3rXpARUCKAJDMywXQDcIcrAgxJwYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYB2Jl4DCWda_P1zMZ6oeIlsM1-cfG1XxFmQAqydfYk4pA&oe=67B7447D&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 271312}, {'id': '1020401749996844v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPiA25hQQw67GYQmQ6WA2k4ZvhMhW_h3fCZ9OPagHAnlcp1xVWvdshFerOx5ENbiOI6w03pMcJ2jdI-McwsDRMHg3wbGXC1ciNZdbA.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjUxMzI5NTU4NTExOTY4MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=1cf3616255e6a51a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82MzQ5NzA0RThGNjRFRjQyQUMyOTVBMDJEQzA2ODQ5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCt6CQ3rXpARUCKAJDMywXQDcIcrAgxJwYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYB2Jl4DCWda_P1zMZ6oeIlsM1-cfG1XxFmQAqydfYk4pA&oe=67B7447D&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 271312}, {'id': '1020401749996844v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPiA25hQQw67GYQmQ6WA2k4ZvhMhW_h3fCZ9OPagHAnlcp1xVWvdshFerOx5ENbiOI6w03pMcJ2jdI-McwsDRMHg3wbGXC1ciNZdbA.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjUxMzI5NTU4NTExOTY4MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=1cf3616255e6a51a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82MzQ5NzA0RThGNjRFRjQyQUMyOTVBMDJEQzA2ODQ5OV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCt6CQ3rXpARUCKAJDMywXQDcIcrAgxJwYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYB2Jl4DCWda_P1zMZ6oeIlsM1-cfG1XxFmQAqydfYk4pA&oe=67B7447D&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 271312}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568594330762057879', 'pk': '3568594330762057879', 'is_video': True, 'taken_at': 1739629680, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQP3eNCwQK8errNmEWQv59LkhA-1D_gWTM14FikAERcImjIhErxi-63US9E5ISHhqNSnNt24TQhY-zh-qiN9XLuhiZUEfbylnbQdokU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYyNDkyNjgyNjk2NjUyOSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=324e4014acb80ef3&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8xNzQ4OEVGOTVCOTEzNjA3MzU5NEY3QkQ1MjE3MTdBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCuMHYw5ecAhUCKAJDMywXQDqiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBYIFOp4_idzapI69YasCSBeylv-0yrZ_iUUhY-u6GZOg&oe=67B75CBF&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472362759_18028436597640426_3977140904069050649_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=jikBaXo2r58Q7kNvgFWCQxy&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDMzMDc2MjA1Nzg3OQ%3D%3D.3-ccb7-5&oh=00_AYB-AfdKrC65Xn0eaMxvNsaDk-MNP5VAXQM8TN-PNM4OnQ&oe=67BB5113&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472362759_18028436597640426_3977140904069050649_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=jikBaXo2r58Q7kNvgFWCQxy&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDMzMDc2MjA1Nzg3OQ%3D%3D.3-ccb7-5&oh=00_AYB-AfdKrC65Xn0eaMxvNsaDk-MNP5VAXQM8TN-PNM4OnQ&oe=67BB5113&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480207219_1699547727323120_7318489279081284150_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=EYVhAyqoangQ7kNvgEzQIZ-&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCBFbciPBa-whi2L_GOmtXMXsVo0LvDHylcg0L4SICAJQ&oe=67BB5A6B&_nc_sid=2011ad'], 'file_size_kb': 262, 'sprite_width': 1500, 'video_length': 26.633, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.25364761904761907, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 26.633, 'video_versions': [{'id': '920898353220653v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQP3eNCwQK8errNmEWQv59LkhA-1D_gWTM14FikAERcImjIhErxi-63US9E5ISHhqNSnNt24TQhY-zh-qiN9XLuhiZUEfbylnbQdokU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYyNDkyNjgyNjk2NjUyOSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=324e4014acb80ef3&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8xNzQ4OEVGOTVCOTEzNjA3MzU5NEY3QkQ1MjE3MTdBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCuMHYw5ecAhUCKAJDMywXQDqiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBYIFOp4_idzapI69YasCSBeylv-0yrZ_iUUhY-u6GZOg&oe=67B75CBF&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 226223}, {'id': '920898353220653v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQP3eNCwQK8errNmEWQv59LkhA-1D_gWTM14FikAERcImjIhErxi-63US9E5ISHhqNSnNt24TQhY-zh-qiN9XLuhiZUEfbylnbQdokU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYyNDkyNjgyNjk2NjUyOSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=324e4014acb80ef3&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8xNzQ4OEVGOTVCOTEzNjA3MzU5NEY3QkQ1MjE3MTdBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCuMHYw5ecAhUCKAJDMywXQDqiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBYIFOp4_idzapI69YasCSBeylv-0yrZ_iUUhY-u6GZOg&oe=67B75CBF&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 226223}, {'id': '920898353220653v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQP3eNCwQK8errNmEWQv59LkhA-1D_gWTM14FikAERcImjIhErxi-63US9E5ISHhqNSnNt24TQhY-zh-qiN9XLuhiZUEfbylnbQdokU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYyNDkyNjgyNjk2NjUyOSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=324e4014acb80ef3&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8xNzQ4OEVGOTVCOTEzNjA3MzU5NEY3QkQ1MjE3MTdBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaCuMHYw5ecAhUCKAJDMywXQDqiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBYIFOp4_idzapI69YasCSBeylv-0yrZ_iUUhY-u6GZOg&oe=67B75CBF&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 226223}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568594342430530257', 'pk': '3568594342430530257', 'is_video': True, 'taken_at': 1739629680, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNci-D2fNzCp3BdI3zKvWqr2dz0PQs0lO7GYihjvbsUUpEZv7cnSro8aHzNctk9YSNF_GnA1QStVorayLAmbimGhd5nQi2PzK88rKw.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0MTcwODQ0NzkyNTU2NTIsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&vs=ee2361907664fdee&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GRTQ2NThGNEFFQkIzMDlBMkFDQTRDOTNDNEQ0RDk4RV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbI0YWQlrWEBRUCKAJDMywXQEgiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYA9sMuOxyJIHvoizjSPEtkFK4C87UnsZZWUkg86CvdqLw&oe=67B745DD&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472623664_18028436624640426_1168015048517031282_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=s_XMtid94OcQ7kNvgHaDnUk&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDM0MjQzMDUzMDI1Nw%3D%3D.3-ccb7-5&oh=00_AYCr_7elYQkGxRBk8Evp-EvwVA34EV8cLOxP7Cfkhqcbfg&oe=67BB57C2&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/472623664_18028436624640426_1168015048517031282_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=s_XMtid94OcQ7kNvgHaDnUk&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDM0MjQzMDUzMDI1Nw%3D%3D.3-ccb7-5&oh=00_AYCr_7elYQkGxRBk8Evp-EvwVA34EV8cLOxP7Cfkhqcbfg&oe=67BB57C2&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478945425_1023660129795736_3295192009467242668_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=YhaO1ZMJ6EsQ7kNvgGVGUmF&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD3enqHgoY_NcQNUxEBViVwne4z8F9uUcDGKBSHxqLIVw&oe=67BB3003&_nc_sid=2011ad'], 'file_size_kb': 209, 'sprite_width': 1500, 'video_length': 48.266, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.45967619047619046, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 48.266, 'video_versions': [{'id': '477128162126761v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNci-D2fNzCp3BdI3zKvWqr2dz0PQs0lO7GYihjvbsUUpEZv7cnSro8aHzNctk9YSNF_GnA1QStVorayLAmbimGhd5nQi2PzK88rKw.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0MTcwODQ0NzkyNTU2NTIsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&vs=ee2361907664fdee&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GRTQ2NThGNEFFQkIzMDlBMkFDQTRDOTNDNEQ0RDk4RV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbI0YWQlrWEBRUCKAJDMywXQEgiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYA9sMuOxyJIHvoizjSPEtkFK4C87UnsZZWUkg86CvdqLw&oe=67B745DD&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 183089}, {'id': '477128162126761v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNci-D2fNzCp3BdI3zKvWqr2dz0PQs0lO7GYihjvbsUUpEZv7cnSro8aHzNctk9YSNF_GnA1QStVorayLAmbimGhd5nQi2PzK88rKw.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0MTcwODQ0NzkyNTU2NTIsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&vs=ee2361907664fdee&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GRTQ2NThGNEFFQkIzMDlBMkFDQTRDOTNDNEQ0RDk4RV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbI0YWQlrWEBRUCKAJDMywXQEgiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYA9sMuOxyJIHvoizjSPEtkFK4C87UnsZZWUkg86CvdqLw&oe=67B745DD&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 183089}, {'id': '477128162126761v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNci-D2fNzCp3BdI3zKvWqr2dz0PQs0lO7GYihjvbsUUpEZv7cnSro8aHzNctk9YSNF_GnA1QStVorayLAmbimGhd5nQi2PzK88rKw.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0MTcwODQ0NzkyNTU2NTIsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&vs=ee2361907664fdee&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC9GRTQ2NThGNEFFQkIzMDlBMkFDQTRDOTNDNEQ0RDk4RV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACbI0YWQlrWEBRUCKAJDMywXQEgiDEm6XjUYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYA9sMuOxyJIHvoizjSPEtkFK4C87UnsZZWUkg86CvdqLw&oe=67B745DD&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 183089}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3568594867062382979', 'pk': '3568594867062382979', 'is_video': False, 'taken_at': 1739629680, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/474037432_18028435928640426_8748774306959573822_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=nWPpjShWntkQ7kNvgEW2NeB&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NzA2MjM4Mjk3OQ%3D%3D.3-ccb7-5&oh=00_AYDi7E4ODyH7p3CviXhxFKtH6sN0Zl1NgDfYv8Bfo59zxg&oe=67BB53A2&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/474037432_18028435928640426_8748774306959573822_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=nWPpjShWntkQ7kNvgEW2NeB&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NzA2MjM4Mjk3OQ%3D%3D.3-ccb7-5&oh=00_AYDi7E4ODyH7p3CviXhxFKtH6sN0Zl1NgDfYv8Bfo59zxg&oe=67BB53A2&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/474037432_18028435928640426_8748774306959573822_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=nWPpjShWntkQ7kNvgEW2NeB&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NzA2MjM4Mjk3OQ%3D%3D.3-ccb7-5&oh=00_AYA-ZoRkt1HE-EjoN8wQg1nmu-UsE-uenLulgasQVP5YTw&oe=67BB53A2&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3568594898913950176_49260000425', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479734519_18028435916640426_1707695145021885871_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3RkNVIJFZEMQ7kNvgEcbXt3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NjgxMDc2MjkxNA%3D%3D.3-ccb7-5&oh=00_AYBrr1Lp54P6P4m8gAc1n6GNULjYbJYgpjdT3vEqKx8Vkw&oe=67BB552A&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479734519_18028435916640426_1707695145021885871_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3RkNVIJFZEMQ7kNvgEcbXt3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODU5NDg2NjgxMDc2MjkxNA%3D%3D.3-ccb7-5&oh=00_AYBSSglHyTjMoczCLquERJbVieJFrHL4SZmVc92hW2HpQg&oe=67BB552A&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': 'licensed_music', 'music_info': {'music_asset_info': {'id': '2534694320253283', 'title': 'AURA', 'lyrics': None, 'audio_id': '876787694497140', 'subtitle': '', 'artist_id': '8745620338800584', 'has_lyrics': False, 'ig_username': 'prod.ogryzek', 'is_explicit': False, 'dark_message': None, 'allows_saving': False, 'display_artist': 'Ogryzek', 'duration_in_ms': 115906, 'sanitized_title': None, 'cover_artwork_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/449720461_90028452988793_7344817109044729152_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=b9T4QZTiZekQ7kNvgGrDqa1&_nc_oc=AdgB44P-VaKmb41efLptqZ88M_HJD-LXMLrWnE0TLoM6nF5RS2GcmgbMsst1lB5PASw&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYC5we3s1UzWhTVcHptMtMcsUHXQwQH7npqZ3qEl1XopYQ&oe=67BB3BE6', 'licensed_music_subtype': 'DEFAULT', 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQOawRhxKj3-rk86T-1tZmIrbyK7MI81zED-xRN1JTI8kDnLgDM0SaIBvb6JYHhgeWKV5OrDbDltoimk3GkL1pcX.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=28B2cYQLLfQQ7kNvgEf2bTG&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjozNzY0NjUwODE3MjY1NjgsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYAbGdIHWAsfDzC3fYTxFEW2iU0HsGwovcSHFrSU9E_bdw&oe=67BB5F4C', 'cover_artwork_thumbnail_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/449720461_90028452988793_7344817109044729152_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=b9T4QZTiZekQ7kNvgGrDqa1&_nc_oc=AdgB44P-VaKmb41efLptqZ88M_HJD-LXMLrWnE0TLoM6nF5RS2GcmgbMsst1lB5PASw&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYC5we3s1UzWhTVcHptMtMcsUHXQwQH7npqZ3qEl1XopYQ&oe=67BB3BE6', 'highlight_start_times_in_ms': [20500, 43000, 2500], 'reactive_audio_download_url': None, 'web_30s_preview_download_url': None, 'is_eligible_for_audio_effects': False, 'is_eligible_for_vinyl_sticker': True, 'fast_start_progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQOawRhxKj3-rk86T-1tZmIrbyK7MI81zED-xRN1JTI8kDnLgDM0SaIBvb6JYHhgeWKV5OrDbDltoimk3GkL1pcX.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=28B2cYQLLfQQ7kNvgEf2bTG&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjozNzY0NjUwODE3MjY1NjgsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYAbGdIHWAsfDzC3fYTxFEW2iU0HsGwovcSHFrSU9E_bdw&oe=67BB5F4C'}, 'music_consumption_info': {'ig_artist': {'id': '49535800000', 'username': 'prod.ogryzek', 'full_name': 'Ogryzek', 'is_private': False, 'is_verified': True, 'profile_pic_id': '3502796759841113685', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/467418080_573546791717045_1694506414094024503_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=L_hD1aayQSEQ7kNvgH7Lt4v&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCaWYCiAFuzBonRTFdjPYLp3PANnXrpP9RG9uDcWFiFNg&oe=67BB3AED&_nc_sid=2011ad'}, 'trend_rank': None, 'is_bookmarked': False, 'display_labels': None, 'contains_lyrics': None, 'audio_muting_info': {'mute_audio': False, 'mute_reason_str': '', 'allow_audio_editing': False, 'show_muted_audio_toast': False}, 'should_mute_audio': False, 'audio_filter_infos': [], 'derived_content_id': None, 'previous_trend_rank': None, 'is_trending_in_clips': False, 'overlap_duration_in_ms': 30000, 'should_mute_audio_reason': '', 'should_allow_music_editing': False, 'formatted_clips_media_count': None, 'placeholder_profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.12442-15/43985629_311105916145351_58064759811405776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yL09NXcFiX4Q7kNvgHjUPJU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYClc-zXRJ3G21DakISK9eeWVNXAd_Yg6UjvG7IsC6fOZA&oe=67BB393D&_nc_sid=2011ad', 'audio_asset_start_time_in_ms': 20500, 'should_mute_audio_reason_type': None, 'allow_media_creation_with_music': True}}, 'pinned_media_ids': [], 'audio_canonical_id': '18327992236122538', 'original_sound_info': None}, 'original_width': 306, 'original_height': 306, 'device_timestamp': 173962931014928, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3568594866810762914, 3568591768931388960, 3568591770558845579, 3568591771162785384, 3568591770659516561, 3568591768411235660, 3568593407302006603, 3568593872324645798, 3568594330762057879, 3568594342430530257, 3568594867062382979], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 11, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3565891636804164755', 'pk': '3565891636804164755', 'code': 'DF8l4z_P5yT', 'fbid': '18299924443236823', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3565891636804164755', 'pk': '18299924446236823', 'text': 'Altman rejeita oferta de Musk e o acusa de tentar desacelerar a OpenAI 🚨🤖\\\\n\\\\nO CEO da OpenAI, Sam Altman, rejeitou a proposta de US$ 97,4 bilhões feita por Elon Musk para adquirir a organização, afirmando que a OpenAI e sua missão “não estão à venda”. Durante o AI Action Summit em Paris, Altman sugeriu que Musk está tentando desacelerar a OpenAI, chamando a oferta de mais um dos seus inúmeros movimentos para dificultar a concorrência.\\\\n\\\\n“Elon tenta de tudo há muito tempo. Esse é apenas o episódio desta semana. Ele claramente é um concorrente, levantou muito dinheiro para a xAI e está tentando competir conosco tecnologicamente. Eu só queria que ele fizesse isso criando um produto melhor.”\\\\n\\\\nAltman também criticou as constantes disputas jurídicas iniciadas por Musk, classificando-as como parte de um conjunto de “táticas e processos sem sentido”. Em um tom provocativo, acrescentou: “Provavelmente, sua vida inteira foi guiada pela insegurança. Não acho que ele seja uma pessoa feliz. Sinto por ele, de verdade.”\\\\n\\\\nEnquanto o conselho da OpenAI ainda não deu uma resposta oficial sobre a oferta, é improvável que a proposta avance, reforçando a disputa entre Musk e Altman no setor de inteligência artificial.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #samaltman #elonmusk', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#samaltman', '#elonmusk'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739307431, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739307431, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739307430, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'post', 'media_type': 1, 'top_likers': ['nikolas_oliveira.imoveis'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'feed', 'comment_count': 77, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479315130_18503055763032584_8246799924639791562_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=SL_0jcjqgRAQ7kNvgGPw7fN&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg5MTYzNjgwNDE2NDc1NQ%3D%3D.3-ccb7-5&oh=00_AYD74O9dPxaNo6kZ597n34WACp7t6XIO4hHT1jz9fMB3MQ&oe=67BB4032&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479315130_18503055763032584_8246799924639791562_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=SL_0jcjqgRAQ7kNvgGPw7fN&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg5MTYzNjgwNDE2NDc1NQ%3D%3D.3-ccb7-5&oh=00_AYD74O9dPxaNo6kZ597n34WACp7t6XIO4hHT1jz9fMB3MQ&oe=67BB4032&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479315130_18503055763032584_8246799924639791562_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=SL_0jcjqgRAQ7kNvgGPw7fN&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg5MTYzNjgwNDE2NDc1NQ%3D%3D.3-ccb7-5&oh=00_AYC-PPECd2xRu33t7q4gGkfUwLIH3vrFDOKhEUcwYqn0uw&oe=67BB4032&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1350, 'original_height': 1687, 'device_timestamp': 1739306847365963, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'share_count_disabled': True, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': True, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3567886610156146462', 'pk': '3567886610156146462', 'code': 'DGDrfftOs8e', 'fbid': '18070345027799901', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3567886610156146462', 'pk': '18070355737799901', 'text': 'Elon Musk revelou que a próxima versão do chatbot de IA de sua empresa, o Grok, pode ser lançada dentro de algumas semanas. Ele descreveu a nova IA como “assustadoramente inteligente” e afirmou que ela já superou todos os outros modelos em testes.\\\\n\\\\nMusk também afirma que o Grok-3 encontrou soluções “que ninguém sequer imaginaria” e que o chatbot possui um modo sem censura, chamado de “unhinged mode” (modo sem filtro).\\\\n\\\\nE você o que acha sobre isso? 🤔💬\\\\n\\\\nFonte: Reuters\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning #elonmusk #grok #x', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning', '#elonmusk', '#grok', '#x'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739545204, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739545204, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739545200, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'post', 'media_type': 1, 'top_likers': ['alimo_jose_'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'feed', 'comment_count': 175, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478823430_18503555317032584_6725101989906386574_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WBep0yANOL8Q7kNvgEliB8q&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2Nzg4NjYxMDE1NjE0NjQ2Mg%3D%3D.3-ccb7-5&oh=00_AYDu2RfUrwhMBnK5a2RxfTjHWOflLQ-WXcWZjHq_RrVJYg&oe=67BB3283&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478823430_18503555317032584_6725101989906386574_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WBep0yANOL8Q7kNvgEliB8q&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2Nzg4NjYxMDE1NjE0NjQ2Mg%3D%3D.3-ccb7-5&oh=00_AYDu2RfUrwhMBnK5a2RxfTjHWOflLQ-WXcWZjHq_RrVJYg&oe=67BB3283&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478823430_18503555317032584_6725101989906386574_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WBep0yANOL8Q7kNvgEliB8q&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2Nzg4NjYxMDE1NjE0NjQ2Mg%3D%3D.3-ccb7-5&oh=00_AYAW1m-8zCL9AFDFt8JkuSpVHbmKKEF_lHMM-HLB0IQsCg&oe=67BB3283&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1350, 'original_height': 1687, 'device_timestamp': 1739545200, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'SELF_DISCLOSURE_FLOW'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': True, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3569756926630153422', 'pk': '3569756926630153422', 'code': 'DGKUwLqR8zO', 'fbid': '18064345261913125', 'user': {'id': '58134309921', 'fbid_v2': 17841458257636788, 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3180559635036304440', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3569756926630153422', 'pk': '18064345264913125', 'text': '👉\\\\xa0Meta just released a groundbreaking study on AI-powered mind-reading. \\\\n\\\\n🧠\\\\xa0Their system, \\\"Brain2Qwerty,\\\" predicts what a person is typing with 81% accuracy using EEG and MEG scans—no implants or surgery, just external sensors.\\\\n\\\\n💡\\\\xa0By analyzing 1,000 brain activity images per second, it deciphers words, syllables, and letters faster and more accurately than traditional brain-computer interfaces. \\\\n\\\\n🎯\\\\xa0Meta believes this could be a game-changer for individuals with communication disabilities, helping them reconnect with the world.\\\\n\\\\n🔗\\\\xa0Publication: https://ai.meta.com/research/publications/brain-to-text-decoding-a-non-invasive-approach-via-typing/\\\\n\\\\n#ai #artificialintelligence #aitools #aihacks #chatgpt #tech #technology', 'type': 1, 'user': {'id': '58134309921', 'fbid_v2': 17841458257636788, 'username': 'power.ai', 'full_name': 'Artificial Intelligence', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3180559635036304440', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/371724810_10008169559256828_2723878425254610443_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Kf0DzSscWy0Q7kNvgGcqc3b&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAFlv3B24_v3rJOZjnfGu3mHDrqlnohCSESxZYvzDWr5Q&oe=67BB52EE&_nc_sid=2011ad'}, 'user_id': '58134309921', 'hashtags': ['#ai', '#artificialintelligence', '#aitools', '#aihacks', '#chatgpt', '#tech', '#technology'], 'mentions': [], 'created_at': 1739768209, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739768209, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739768208, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['nabbyentertainment'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 35, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499566_17948301335941922_2993235773712574038_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cvzrGcAuJAAQ7kNvgFx9oKX&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU0MzQxODMxNw%3D%3D.3-ccb7-5&oh=00_AYCCUWnAJ2e_9A-ONBCd9VTnQotociTXkOURD4rG0t8EKg&oe=67BB405F&_nc_sid=2011ad', 'carousel_media': [{'id': '3569756918543418317', 'pk': '3569756918543418317', 'is_video': False, 'taken_at': 1739768207, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499566_17948301335941922_2993235773712574038_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cvzrGcAuJAAQ7kNvgFx9oKX&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU0MzQxODMxNw%3D%3D.3-ccb7-5&oh=00_AYCCUWnAJ2e_9A-ONBCd9VTnQotociTXkOURD4rG0t8EKg&oe=67BB405F&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499566_17948301335941922_2993235773712574038_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cvzrGcAuJAAQ7kNvgFx9oKX&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU0MzQxODMxNw%3D%3D.3-ccb7-5&oh=00_AYCCUWnAJ2e_9A-ONBCd9VTnQotociTXkOURD4rG0t8EKg&oe=67BB405F&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499566_17948301335941922_2993235773712574038_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cvzrGcAuJAAQ7kNvgFx9oKX&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU0MzQxODMxNw%3D%3D.3-ccb7-5&oh=00_AYDoMiHqt528bZUvUhXXW03iPcu1ObShUIsPl0JzIkNa3w&oe=67BB405F&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569756926630153422_58134309921', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569755698680881772', 'pk': '3569755698680881772', 'is_video': True, 'taken_at': 1739768207, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNLKqQQ8MHCMlUlLrH8_Osy77TiWtOZFDPUua4TwvON0RUs75N9XDd8UKNi7uX8iUBBm1kj9ih87qinhgheI91hdzYm9Rku6FEnGGE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU5MzgzNTQ5Njk2ODY3MCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&vs=ac7167228d86a358&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC83ODQ3Q0U2NzIyNENFRUIzMkM2NUE3MEZDRDEzQ0JCNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dEUnZoeHc0NTNDNWt6RUNBQ293RnRmLV9USVVia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrzH0J3jhY4CFQIoAkMzLBdAKLtkWhysCBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYCv1-RYnyFPIsPv_v4eWU3XJcP6MQpCo9Yhskyti5gOHQ&oe=67B76CC4&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480684474_17948301344941922_5355458625445095065_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2NvdmVyX2ZyYW1lIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=O6lh29yC5YcQ7kNvgGYo9h4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NTY5ODY4MDg4MTc3Mg%3D%3D.3-ccb7-5&oh=00_AYBUNfKp98ACjBqF8efwtZzCuBnWTRZf8ISllNuOKB2wVw&oe=67BB5B33&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480684474_17948301344941922_5355458625445095065_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2NvdmVyX2ZyYW1lIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=O6lh29yC5YcQ7kNvgGYo9h4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NTY5ODY4MDg4MTc3Mg%3D%3D.3-ccb7-5&oh=00_AYBUNfKp98ACjBqF8efwtZzCuBnWTRZf8ISllNuOKB2wVw&oe=67BB5B33&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480400959_1374714710355149_8030493021857346054_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Hht-_rXt838Q7kNvgGzaJPq&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYA2Ub1hpRaBRYvmFsyUZovZ-LfZlncT17j2ADPKV3oetg&oe=67BB5F9A&_nc_sid=2011ad'], 'file_size_kb': 249, 'sprite_width': 1500, 'video_length': 12.377, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.11787619047619048, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 2574, 'video_duration': 12.377, 'video_versions': [{'id': '3949738225346682v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNLKqQQ8MHCMlUlLrH8_Osy77TiWtOZFDPUua4TwvON0RUs75N9XDd8UKNi7uX8iUBBm1kj9ih87qinhgheI91hdzYm9Rku6FEnGGE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU5MzgzNTQ5Njk2ODY3MCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&vs=ac7167228d86a358&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC83ODQ3Q0U2NzIyNENFRUIzMkM2NUE3MEZDRDEzQ0JCNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dEUnZoeHc0NTNDNWt6RUNBQ293RnRmLV9USVVia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrzH0J3jhY4CFQIoAkMzLBdAKLtkWhysCBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYCv1-RYnyFPIsPv_v4eWU3XJcP6MQpCo9Yhskyti5gOHQ&oe=67B76CC4&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1348, 'bandwidth': 223746}, {'id': '3949738225346682v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNLKqQQ8MHCMlUlLrH8_Osy77TiWtOZFDPUua4TwvON0RUs75N9XDd8UKNi7uX8iUBBm1kj9ih87qinhgheI91hdzYm9Rku6FEnGGE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU5MzgzNTQ5Njk2ODY3MCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&vs=ac7167228d86a358&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC83ODQ3Q0U2NzIyNENFRUIzMkM2NUE3MEZDRDEzQ0JCNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dEUnZoeHc0NTNDNWt6RUNBQ293RnRmLV9USVVia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrzH0J3jhY4CFQIoAkMzLBdAKLtkWhysCBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYCv1-RYnyFPIsPv_v4eWU3XJcP6MQpCo9Yhskyti5gOHQ&oe=67B76CC4&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1348, 'bandwidth': 223746}, {'id': '3949738225346682v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNLKqQQ8MHCMlUlLrH8_Osy77TiWtOZFDPUua4TwvON0RUs75N9XDd8UKNi7uX8iUBBm1kj9ih87qinhgheI91hdzYm9Rku6FEnGGE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU5MzgzNTQ5Njk2ODY3MCwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&vs=ac7167228d86a358&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC83ODQ3Q0U2NzIyNENFRUIzMkM2NUE3MEZDRDEzQ0JCNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dEUnZoeHc0NTNDNWt6RUNBQ293RnRmLV9USVVia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJrzH0J3jhY4CFQIoAkMzLBdAKLtkWhysCBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYCv1-RYnyFPIsPv_v4eWU3XJcP6MQpCo9Yhskyti5gOHQ&oe=67B76CC4&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1348, 'bandwidth': 223746}], 'original_height': 3216, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3569756926630153422_58134309921', 'explore_pivot_grid': False, 'number_of_qualities': 6, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569755698613965266', 'pk': '3569755698613965266', 'is_video': True, 'taken_at': 1739768207, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNU_TAdMM-yy4_2AwNde76mp0WcrfxTw9Xg54AW1sGurWyaAykSBtIDbik9R9qzrXjT2k87XhFgBlQtV1IUn0xZ_BKgiT_WzyGwmdM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNTE3ODA2NDY0OTgxODcsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=f5054d3d7ae3a7f7&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FQzQ4NDU1RDdDOTcxMzk3MDgyREVCRERDNzdFOUZBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dNSDFmUnozSmoxZzB5UUVBTzJUTGpMR1I5Z09ia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpa-2cS64osEFQIoAkMzLBdARRU_fO2RaBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYAu0DnDiWlJXlyL5HoD_XmwWhu1l3ZuRF_ndTvG9r_QZg&oe=67B7624E&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480688062_17948301368941922_7099045752005732004_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2NvdmVyX2ZyYW1lIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cP-aZsTjACMQ7kNvgF--Hc7&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NTY5ODYxMzk2NTI2Ng%3D%3D.3-ccb7-5&oh=00_AYBllgoWC9Jz0koBE_0S_Ndk7RrStVpoTktZZqGVDOLSEQ&oe=67BB64D3&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480688062_17948301368941922_7099045752005732004_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2NvdmVyX2ZyYW1lIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cP-aZsTjACMQ7kNvgF--Hc7&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NTY5ODYxMzk2NTI2Ng%3D%3D.3-ccb7-5&oh=00_AYBllgoWC9Jz0koBE_0S_Ndk7RrStVpoTktZZqGVDOLSEQ&oe=67BB64D3&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480375738_3929833307259697_7329715384811799135_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=PpzFtVirb58Q7kNvgFKJTw7&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDBnS9-64kjQcq3pGbyLpGt-LPFVsOAKD06o_iXHYMeUg&oe=67BB39E7&_nc_sid=2011ad'], 'file_size_kb': 203, 'sprite_width': 1500, 'video_length': 42.19, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.4018095238095238, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 2574, 'video_duration': 42.19, 'video_versions': [{'id': '9107615502667980v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNU_TAdMM-yy4_2AwNde76mp0WcrfxTw9Xg54AW1sGurWyaAykSBtIDbik9R9qzrXjT2k87XhFgBlQtV1IUn0xZ_BKgiT_WzyGwmdM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNTE3ODA2NDY0OTgxODcsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=f5054d3d7ae3a7f7&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FQzQ4NDU1RDdDOTcxMzk3MDgyREVCRERDNzdFOUZBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dNSDFmUnozSmoxZzB5UUVBTzJUTGpMR1I5Z09ia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpa-2cS64osEFQIoAkMzLBdARRU_fO2RaBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYAu0DnDiWlJXlyL5HoD_XmwWhu1l3ZuRF_ndTvG9r_QZg&oe=67B7624E&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1348, 'bandwidth': 414605}, {'id': '9107615502667980v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNU_TAdMM-yy4_2AwNde76mp0WcrfxTw9Xg54AW1sGurWyaAykSBtIDbik9R9qzrXjT2k87XhFgBlQtV1IUn0xZ_BKgiT_WzyGwmdM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNTE3ODA2NDY0OTgxODcsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=f5054d3d7ae3a7f7&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FQzQ4NDU1RDdDOTcxMzk3MDgyREVCRERDNzdFOUZBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dNSDFmUnozSmoxZzB5UUVBTzJUTGpMR1I5Z09ia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpa-2cS64osEFQIoAkMzLBdARRU_fO2RaBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYAu0DnDiWlJXlyL5HoD_XmwWhu1l3ZuRF_ndTvG9r_QZg&oe=67B7624E&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1348, 'bandwidth': 414605}, {'id': '9107615502667980v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNU_TAdMM-yy4_2AwNde76mp0WcrfxTw9Xg54AW1sGurWyaAykSBtIDbik9R9qzrXjT2k87XhFgBlQtV1IUn0xZ_BKgiT_WzyGwmdM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNTE3ODA2NDY0OTgxODcsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=f5054d3d7ae3a7f7&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FQzQ4NDU1RDdDOTcxMzk3MDgyREVCRERDNzdFOUZBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dNSDFmUnozSmoxZzB5UUVBTzJUTGpMR1I5Z09ia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpa-2cS64osEFQIoAkMzLBdARRU_fO2RaBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYAu0DnDiWlJXlyL5HoD_XmwWhu1l3ZuRF_ndTvG9r_QZg&oe=67B7624E&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1348, 'bandwidth': 414605}], 'original_height': 3216, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3569756926630153422_58134309921', 'explore_pivot_grid': False, 'number_of_qualities': 6, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569755699058524304', 'pk': '3569755699058524304', 'is_video': True, 'taken_at': 1739768207, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOPcDOIz1i84d4GDnTxsGd30d8Iq89oPUitv8dcO7JeZEAfQmRNIlXVDMI2817oqJJsVwJFGcEhLeeK-uQRtvRLHZ8dGtJlWBAa6XU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE1NjI4OTI0MTQ0MTc3OTUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=505acd5e4280af9a&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC8yRTQ1NkE4RUUzRDlCMzEzRkY3MEE0OUU3MUE4NzBBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJamVvUnlYT3ItOWJWNE1BTTh5ZHl6aDZ6TmZia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJobu9_Kn3MYFFQIoAkMzLBdAQwAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYB83oXcYTGEf4kCdt8PobOM_JQOYNIurjXzj87bgT2qkQ&oe=67B76454&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499347_17948301359941922_5101535147560389470_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2NvdmVyX2ZyYW1lIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=QVK4zCfcRfEQ7kNvgEkujf4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NTY5OTA1ODUyNDMwNA%3D%3D.3-ccb7-5&oh=00_AYC4OU3zTRPEUBXjfIiHf0f1Muz9USCoaE9fq9ddi_JAGg&oe=67BB63AE&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499347_17948301359941922_5101535147560389470_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2NvdmVyX2ZyYW1lIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=QVK4zCfcRfEQ7kNvgEkujf4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NTY5OTA1ODUyNDMwNA%3D%3D.3-ccb7-5&oh=00_AYC4OU3zTRPEUBXjfIiHf0f1Muz9USCoaE9fq9ddi_JAGg&oe=67BB63AE&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479888631_3756021944543214_2753256614850535098_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Pj9hsKetxIMQ7kNvgGMmCcR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAW5hIAyjpDqQF5yaKQLJOd20o5hYTCpPek48ka-PG9gw&oe=67BB4870&_nc_sid=2011ad'], 'file_size_kb': 199, 'sprite_width': 1500, 'video_length': 38.01, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.362, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 2574, 'video_duration': 38.01, 'video_versions': [{'id': '493341767162429v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOPcDOIz1i84d4GDnTxsGd30d8Iq89oPUitv8dcO7JeZEAfQmRNIlXVDMI2817oqJJsVwJFGcEhLeeK-uQRtvRLHZ8dGtJlWBAa6XU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE1NjI4OTI0MTQ0MTc3OTUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=505acd5e4280af9a&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC8yRTQ1NkE4RUUzRDlCMzEzRkY3MEE0OUU3MUE4NzBBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJamVvUnlYT3ItOWJWNE1BTTh5ZHl6aDZ6TmZia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJobu9_Kn3MYFFQIoAkMzLBdAQwAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYB83oXcYTGEf4kCdt8PobOM_JQOYNIurjXzj87bgT2qkQ&oe=67B76454&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1348, 'bandwidth': 271595}, {'id': '493341767162429v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOPcDOIz1i84d4GDnTxsGd30d8Iq89oPUitv8dcO7JeZEAfQmRNIlXVDMI2817oqJJsVwJFGcEhLeeK-uQRtvRLHZ8dGtJlWBAa6XU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE1NjI4OTI0MTQ0MTc3OTUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=505acd5e4280af9a&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC8yRTQ1NkE4RUUzRDlCMzEzRkY3MEE0OUU3MUE4NzBBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJamVvUnlYT3ItOWJWNE1BTTh5ZHl6aDZ6TmZia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJobu9_Kn3MYFFQIoAkMzLBdAQwAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYB83oXcYTGEf4kCdt8PobOM_JQOYNIurjXzj87bgT2qkQ&oe=67B76454&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1348, 'bandwidth': 271595}, {'id': '493341767162429v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOPcDOIz1i84d4GDnTxsGd30d8Iq89oPUitv8dcO7JeZEAfQmRNIlXVDMI2817oqJJsVwJFGcEhLeeK-uQRtvRLHZ8dGtJlWBAa6XU.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE1NjI4OTI0MTQ0MTc3OTUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&vs=505acd5e4280af9a&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC8yRTQ1NkE4RUUzRDlCMzEzRkY3MEE0OUU3MUE4NzBBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dJamVvUnlYT3ItOWJWNE1BTTh5ZHl6aDZ6TmZia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJobu9_Kn3MYFFQIoAkMzLBdAQwAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYB83oXcYTGEf4kCdt8PobOM_JQOYNIurjXzj87bgT2qkQ&oe=67B76454&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1348, 'bandwidth': 271595}], 'original_height': 3216, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3569756926630153422_58134309921', 'explore_pivot_grid': False, 'number_of_qualities': 6, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569756918585487312', 'pk': '3569756918585487312', 'is_video': False, 'taken_at': 1739768207, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499627_17948301323941922_8329752153050708885_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WM9tZ6PTnYkQ7kNvgENSsul&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU4NTQ4NzMxMg%3D%3D.3-ccb7-5&oh=00_AYAU2fn7AqY8qaJI9UzzI9Lr67sFG1uC_LHV4BZ0O62WQw&oe=67BB4F84&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499627_17948301323941922_8329752153050708885_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WM9tZ6PTnYkQ7kNvgENSsul&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU4NTQ4NzMxMg%3D%3D.3-ccb7-5&oh=00_AYAU2fn7AqY8qaJI9UzzI9Lr67sFG1uC_LHV4BZ0O62WQw&oe=67BB4F84&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499627_17948301323941922_8329752153050708885_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WM9tZ6PTnYkQ7kNvgENSsul&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU4NTQ4NzMxMg%3D%3D.3-ccb7-5&oh=00_AYAsxDfF9-R8IL4eb5fLCj5QPH2XtZH1OGhfpm9s46vcVg&oe=67BB4F84&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569756926630153422_58134309921', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499566_17948301335941922_2993235773712574038_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cvzrGcAuJAAQ7kNvgFx9oKX&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU0MzQxODMxNw%3D%3D.3-ccb7-5&oh=00_AYCCUWnAJ2e_9A-ONBCd9VTnQotociTXkOURD4rG0t8EKg&oe=67BB405F&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479499566_17948301335941922_2993235773712574038_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cvzrGcAuJAAQ7kNvgFx9oKX&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTc1NjkxODU0MzQxODMxNw%3D%3D.3-ccb7-5&oh=00_AYDoMiHqt528bZUvUhXXW03iPcu1ObShUIsPl0JzIkNa3w&oe=67BB405F&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739768205131, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3569756918543418317, 3569755698680881772, 3569755698613965266, 3569755699058524304, 3569756918585487312], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 5, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3567066230692922389', 'pk': '3567066230692922389', 'code': 'DGAw9ZyvkQV', 'fbid': '18042865040071872', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3567066230692922389', 'pk': '18042916205071872', 'text': '🤯 A Mistral AI lançou o Le Chat, um assistente de IA projetado para competir com o ChatGPT, combinando velocidade e eficiência.\\\\n\\\\nCom Flash Answers, processa 1.000 palavras por segundo e oferece análise de documentos, geração de imagens, pesquisa em tempo real na web e suporte multilíngue.\\\\n\\\\nFundada por ex-pesquisadores do Google DeepMind e da Meta AI, a Mistral AI se tornou a startup de IA mais influente da Europa, avaliada em €5,8 bilhões e apoiada pela Microsoft.\\\\n\\\\nO Le Chat possui um plano gratuito, uma versão Pro por $14,99/mês e soluções empresariais. Estudantes recebem mais de 50% de desconto, tornando-o uma das ferramentas de IA mais acessíveis.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning\\\\nA competição no setor está cada vez mais acirrada.', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739447403, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739447403, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739447400, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['romulonobrega'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 22, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477066769_18503239093032584_7794779768732867723_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6ixvqY2UqNcQ7kNvgFpIa71&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ5MjA3Mjk5Ng%3D%3D.3-ccb7-5&oh=00_AYBCOAHoa9D1NUNv4lNWh9hdFkbCccPkGP06n0RGxOdstg&oe=67BB3F4B&_nc_sid=2011ad', 'carousel_media': [{'id': '3566611692492072996', 'pk': '3566611692492072996', 'is_video': False, 'taken_at': 1739447400, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477066769_18503239093032584_7794779768732867723_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6ixvqY2UqNcQ7kNvgFpIa71&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ5MjA3Mjk5Ng%3D%3D.3-ccb7-5&oh=00_AYBCOAHoa9D1NUNv4lNWh9hdFkbCccPkGP06n0RGxOdstg&oe=67BB3F4B&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477066769_18503239093032584_7794779768732867723_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6ixvqY2UqNcQ7kNvgFpIa71&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ5MjA3Mjk5Ng%3D%3D.3-ccb7-5&oh=00_AYBCOAHoa9D1NUNv4lNWh9hdFkbCccPkGP06n0RGxOdstg&oe=67BB3F4B&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477066769_18503239093032584_7794779768732867723_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6ixvqY2UqNcQ7kNvgFpIa71&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ5MjA3Mjk5Ng%3D%3D.3-ccb7-5&oh=00_AYCVR79n1RtU_umN279497PW2-tUUVUCCH9orEQlNOP2cg&oe=67BB3F4B&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3567066230692922389_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566611692240287605', 'pk': '3566611692240287605', 'is_video': True, 'taken_at': 1739447400, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNyTjqemelxlTponynPjWf9CgC2LIQghJxbfCHT7G-BGwEYXIAMELr2MUzN5pTvpOkvHAhrUxH9TeJ-1E4O-kxkreTMk-wfF5B7-rQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjMwNDAwMDg2Njk0ODgwNTYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=885f71a4c916dea5&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC85RDQ3MDU1MkJCQ0YyOTk0NERBMzk2RjY0REI2MEU4NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLTlhhUnlMVENwbldvOEZBRjZOaktHYy16ZHRia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvCO383lt-YKFQIoAkMzLBdASPMzMzMzMxgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBKhOBFTvbLkeelw9AQoKJ40GOzMVCME9ewyLE0_akdLw&oe=67B7714A&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'vp09.00.31.08.00.01.01.01.00', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476924901_18503239165032584_8102676985038992760_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=vDlDUblCNUQQ7kNvgHBNDuj&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI0MDI4NzYwNQ%3D%3D.3-ccb7-5&oh=00_AYDoTxlVmDilr8sulcEZFctIx83fomt3FEB834DZKOMN7A&oe=67BB5A25&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476924901_18503239165032584_8102676985038992760_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=vDlDUblCNUQQ7kNvgHBNDuj&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI0MDI4NzYwNQ%3D%3D.3-ccb7-5&oh=00_AYDoTxlVmDilr8sulcEZFctIx83fomt3FEB834DZKOMN7A&oe=67BB5A25&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'video_duration': 49.9, 'video_versions': [{'id': '1264718825217706v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNyTjqemelxlTponynPjWf9CgC2LIQghJxbfCHT7G-BGwEYXIAMELr2MUzN5pTvpOkvHAhrUxH9TeJ-1E4O-kxkreTMk-wfF5B7-rQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjMwNDAwMDg2Njk0ODgwNTYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=885f71a4c916dea5&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC85RDQ3MDU1MkJCQ0YyOTk0NERBMzk2RjY0REI2MEU4NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLTlhhUnlMVENwbldvOEZBRjZOaktHYy16ZHRia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvCO383lt-YKFQIoAkMzLBdASPMzMzMzMxgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBKhOBFTvbLkeelw9AQoKJ40GOzMVCME9ewyLE0_akdLw&oe=67B7714A&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 228224}, {'id': '1264718825217706v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNyTjqemelxlTponynPjWf9CgC2LIQghJxbfCHT7G-BGwEYXIAMELr2MUzN5pTvpOkvHAhrUxH9TeJ-1E4O-kxkreTMk-wfF5B7-rQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjMwNDAwMDg2Njk0ODgwNTYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=885f71a4c916dea5&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC85RDQ3MDU1MkJCQ0YyOTk0NERBMzk2RjY0REI2MEU4NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLTlhhUnlMVENwbldvOEZBRjZOaktHYy16ZHRia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvCO383lt-YKFQIoAkMzLBdASPMzMzMzMxgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBKhOBFTvbLkeelw9AQoKJ40GOzMVCME9ewyLE0_akdLw&oe=67B7714A&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 228224}, {'id': '1264718825217706v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNyTjqemelxlTponynPjWf9CgC2LIQghJxbfCHT7G-BGwEYXIAMELr2MUzN5pTvpOkvHAhrUxH9TeJ-1E4O-kxkreTMk-wfF5B7-rQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjMwNDAwMDg2Njk0ODgwNTYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=885f71a4c916dea5&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC85RDQ3MDU1MkJCQ0YyOTk0NERBMzk2RjY0REI2MEU4NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLTlhhUnlMVENwbldvOEZBRjZOaktHYy16ZHRia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvCO383lt-YKFQIoAkMzLBdASPMzMzMzMxgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBKhOBFTvbLkeelw9AQoKJ40GOzMVCME9ewyLE0_akdLw&oe=67B7714A&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 228224}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3567066230692922389_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 3, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566611692408133344', 'pk': '3566611692408133344', 'is_video': False, 'taken_at': 1739447400, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/475372896_18503239111032584_8426240472936780596_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3XZaN3pIIAsQ7kNvgEOM0r3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQwODEzMzM0NA%3D%3D.3-ccb7-5&oh=00_AYCNDUhnt28vwxm1kXMP6ZrcO3VbvI7ig5bCJki24u-NZg&oe=67BB41FA&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/475372896_18503239111032584_8426240472936780596_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3XZaN3pIIAsQ7kNvgEOM0r3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQwODEzMzM0NA%3D%3D.3-ccb7-5&oh=00_AYCNDUhnt28vwxm1kXMP6ZrcO3VbvI7ig5bCJki24u-NZg&oe=67BB41FA&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/475372896_18503239111032584_8426240472936780596_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3XZaN3pIIAsQ7kNvgEOM0r3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQwODEzMzM0NA%3D%3D.3-ccb7-5&oh=00_AYCXUcvCBWYxBPll7-oQW5TOYK-0YLOgD8jymd4xkXIDEw&oe=67BB41FA&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3567066230692922389_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566611692382996536', 'pk': '3566611692382996536', 'is_video': False, 'taken_at': 1739447400, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476790493_18503239108032584_1239243623245115268_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=iEVVmeYSVKwQ7kNvgHywwp1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjM4Mjk5NjUzNg%3D%3D.3-ccb7-5&oh=00_AYCXw5v-eHuI3gcIkmcjm_hMHSx_JK5WoTulxuPulEFYbQ&oe=67BB4BFC&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476790493_18503239108032584_1239243623245115268_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=iEVVmeYSVKwQ7kNvgHywwp1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjM4Mjk5NjUzNg%3D%3D.3-ccb7-5&oh=00_AYCXw5v-eHuI3gcIkmcjm_hMHSx_JK5WoTulxuPulEFYbQ&oe=67BB4BFC&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476790493_18503239108032584_1239243623245115268_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=iEVVmeYSVKwQ7kNvgHywwp1&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjM4Mjk5NjUzNg%3D%3D.3-ccb7-5&oh=00_AYA2gqJs9SUTbFrRn7QJKcNtyJSyGLiFTD6pxfUJ7pkzEQ&oe=67BB4BFC&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3567066230692922389_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566611692257150407', 'pk': '3566611692257150407', 'is_video': False, 'taken_at': 1739447400, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476886883_18503239120032584_2717359208871900936_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WyB8WAFuXUcQ7kNvgFAnsHh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI1NzE1MDQwNw%3D%3D.3-ccb7-5&oh=00_AYDvBBKIZFzq2vehaGYcgi4yrdw2dqxXNqE8Ftxj-1FuyA&oe=67BB3136&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476886883_18503239120032584_2717359208871900936_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WyB8WAFuXUcQ7kNvgFAnsHh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI1NzE1MDQwNw%3D%3D.3-ccb7-5&oh=00_AYDvBBKIZFzq2vehaGYcgi4yrdw2dqxXNqE8Ftxj-1FuyA&oe=67BB3136&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476886883_18503239120032584_2717359208871900936_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WyB8WAFuXUcQ7kNvgFAnsHh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI1NzE1MDQwNw%3D%3D.3-ccb7-5&oh=00_AYDrYkkZfMoa6AcgUhiGMBgmjBNJMEfh0FyV4lwaHWayRA&oe=67BB3136&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3567066230692922389_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566611692257154981', 'pk': '3566611692257154981', 'is_video': True, 'taken_at': 1739447400, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNKMF5TJAmZokYmAM-iXPlnrfdWkGd9bAcGCehsd9QoQgIUeJh7kg3gDSsngUxzxPHqnvmVUx4Wu1HN4UHYY-m0uN4RqJq6eb1my6E.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYxMzYwMjcyNDcxODk1OSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=a0f74ff53ea65215&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC81MDRCRDA1ODFBRTEyREEyRTYwQkQxQkZGQjhDMTE5N192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBUV9heHdPT3ZuX3BMSUVBQzFYdGNWaWp1a05ia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJt6lhcewhJcCFQIoAkMzLBdATgAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBWuK8upZf4E-n442LyRF1ouoAl8UBiP93RCTXi1diBww&oe=67B75EDA&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478870938_18503239204032584_8151810135311771475_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=l3-UHAy9vcEQ7kNvgFP_Bu2&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI1NzE1NDk4MQ%3D%3D.3-ccb7-5&oh=00_AYAS-M2mEj6pAUaxXc-g9g0miat1N9jPeD8x2Mhe9Rplkg&oe=67BB5DB2&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478870938_18503239204032584_8151810135311771475_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=l3-UHAy9vcEQ7kNvgFP_Bu2&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI1NzE1NDk4MQ%3D%3D.3-ccb7-5&oh=00_AYAS-M2mEj6pAUaxXc-g9g0miat1N9jPeD8x2Mhe9Rplkg&oe=67BB5DB2&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'video_duration': 60.0, 'video_versions': [{'id': '918313890487177v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNKMF5TJAmZokYmAM-iXPlnrfdWkGd9bAcGCehsd9QoQgIUeJh7kg3gDSsngUxzxPHqnvmVUx4Wu1HN4UHYY-m0uN4RqJq6eb1my6E.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYxMzYwMjcyNDcxODk1OSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=a0f74ff53ea65215&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC81MDRCRDA1ODFBRTEyREEyRTYwQkQxQkZGQjhDMTE5N192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBUV9heHdPT3ZuX3BMSUVBQzFYdGNWaWp1a05ia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJt6lhcewhJcCFQIoAkMzLBdATgAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBWuK8upZf4E-n442LyRF1ouoAl8UBiP93RCTXi1diBww&oe=67B75EDA&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 296590}, {'id': '918313890487177v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNKMF5TJAmZokYmAM-iXPlnrfdWkGd9bAcGCehsd9QoQgIUeJh7kg3gDSsngUxzxPHqnvmVUx4Wu1HN4UHYY-m0uN4RqJq6eb1my6E.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYxMzYwMjcyNDcxODk1OSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=a0f74ff53ea65215&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC81MDRCRDA1ODFBRTEyREEyRTYwQkQxQkZGQjhDMTE5N192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBUV9heHdPT3ZuX3BMSUVBQzFYdGNWaWp1a05ia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJt6lhcewhJcCFQIoAkMzLBdATgAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBWuK8upZf4E-n442LyRF1ouoAl8UBiP93RCTXi1diBww&oe=67B75EDA&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 296590}, {'id': '918313890487177v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQNKMF5TJAmZokYmAM-iXPlnrfdWkGd9bAcGCehsd9QoQgIUeJh7kg3gDSsngUxzxPHqnvmVUx4Wu1HN4UHYY-m0uN4RqJq6eb1my6E.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYxMzYwMjcyNDcxODk1OSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=a0f74ff53ea65215&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC81MDRCRDA1ODFBRTEyREEyRTYwQkQxQkZGQjhDMTE5N192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBUV9heHdPT3ZuX3BMSUVBQzFYdGNWaWp1a05ia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJt6lhcewhJcCFQIoAkMzLBdATgAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBWuK8upZf4E-n442LyRF1ouoAl8UBiP93RCTXi1diBww&oe=67B75EDA&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 296590}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3567066230692922389_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566611692475284752', 'pk': '3566611692475284752', 'is_video': False, 'taken_at': 1739447400, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477163061_18503239129032584_689824478148079710_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Gnhm4GNGVWAQ7kNvgH-nPty&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ3NTI4NDc1Mg%3D%3D.3-ccb7-5&oh=00_AYCC6H9Fa3e7ddcyEsRgZyWkTN_aHYahy-j9K4Lmha0sdA&oe=67BB4156&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477163061_18503239129032584_689824478148079710_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Gnhm4GNGVWAQ7kNvgH-nPty&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ3NTI4NDc1Mg%3D%3D.3-ccb7-5&oh=00_AYCC6H9Fa3e7ddcyEsRgZyWkTN_aHYahy-j9K4Lmha0sdA&oe=67BB4156&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477163061_18503239129032584_689824478148079710_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Gnhm4GNGVWAQ7kNvgH-nPty&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ3NTI4NDc1Mg%3D%3D.3-ccb7-5&oh=00_AYATz9YF0H5SybJfU8NU_Jwe-vwN2y3lnBbephYtcaRCIQ&oe=67BB4156&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3567066230692922389_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566611692257092522', 'pk': '3566611692257092522', 'is_video': False, 'taken_at': 1739447400, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477192120_18503239138032584_2086596284977848802_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=VqJtf2ShfSIQ7kNvgGr5B4_&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI1NzA5MjUyMg%3D%3D.3-ccb7-5&oh=00_AYDH1q3h-1QY_EEH2NMpgxDXr6SJx4uwoK08bHg6Oqw9Fg&oe=67BB449D&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477192120_18503239138032584_2086596284977848802_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=VqJtf2ShfSIQ7kNvgGr5B4_&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI1NzA5MjUyMg%3D%3D.3-ccb7-5&oh=00_AYDH1q3h-1QY_EEH2NMpgxDXr6SJx4uwoK08bHg6Oqw9Fg&oe=67BB449D&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477192120_18503239138032584_2086596284977848802_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=VqJtf2ShfSIQ7kNvgGr5B4_&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjI1NzA5MjUyMg%3D%3D.3-ccb7-5&oh=00_AYCTS41xKOoHa2TSrtqddqvjdCcYtyxuf7wztUhcsxP2sw&oe=67BB449D&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3567066230692922389_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477066769_18503239093032584_7794779768732867723_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6ixvqY2UqNcQ7kNvgFpIa71&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ5MjA3Mjk5Ng%3D%3D.3-ccb7-5&oh=00_AYBCOAHoa9D1NUNv4lNWh9hdFkbCccPkGP06n0RGxOdstg&oe=67BB3F4B&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477066769_18503239093032584_7794779768732867723_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6ixvqY2UqNcQ7kNvgFpIa71&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYxMTY5MjQ5MjA3Mjk5Ng%3D%3D.3-ccb7-5&oh=00_AYCVR79n1RtU_umN279497PW2-tUUVUCCH9orEQlNOP2cg&oe=67BB3F4B&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739447400, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3566611692492072996, 3566611692240287605, 3566611692408133344, 3566611692382996536, 3566611692257150407, 3566611692257154981, 3566611692475284752, 3566611692257092522], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 8, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3569265336423490410', 'pk': '3569265336423490410', 'code': 'DGIk-mmoyNq', 'fbid': '17922091596019892', 'user': {'id': '66966525567', 'fbid_v2': 17841467127010815, 'username': 'thedailychatgpt', 'full_name': 'ChatGPT | Artificial Intelligence | Prompts | Technology', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3453373262894165827', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/458784938_1593060891553990_4608681624315481460_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=rZm-uE76l24Q7kNvgHMk9kW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYByRyhoCX-GVsG7KeGoS5cOZSoTJtXNGjslbgTabVAZOQ&oe=67BB3BA8&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3569265336423490410', 'pk': '17922091599019892', 'text': 'Most people use ChatGPT the wrong way - vague prompts lead to weak results.\\\\n\\\\nBe specific, refine your requests, and watch AI work like an expert.\\\\n\\\\nStart using these techniques to get clear, impactful, and high-quality responses.\\\\n\\\\n👉 Comment “YES” and I’ll send you my 700+ AI toolkit.\\\\n\\\\n#chatgpt #prompts #productive #time #technique', 'type': 1, 'user': {'id': '66966525567', 'fbid_v2': 17841467127010815, 'username': 'thedailychatgpt', 'full_name': 'ChatGPT | Artificial Intelligence | Prompts | Technology', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3453373262894165827', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/458784938_1593060891553990_4608681624315481460_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=rZm-uE76l24Q7kNvgHMk9kW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYByRyhoCX-GVsG7KeGoS5cOZSoTJtXNGjslbgTabVAZOQ&oe=67BB3BA8&_nc_sid=2011ad'}, 'user_id': '66966525567', 'hashtags': ['#chatgpt', '#prompts', '#productive', '#time', '#technique'], 'mentions': [], 'created_at': 1739709608, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739709608, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739709606, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3031, 'media_name': 'album', 'media_type': 8, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 921, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480371336_17881675092237568_921157552179314008_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=jl6veky_pS4Q7kNvgEPDm9f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjQ5OTQ3OA%3D%3D.3-ccb7-5&oh=00_AYBEQQzOj-kFbkcBqyI8q84NbW6-5a0E8TyoSEPccUbb7g&oe=67BB6615&_nc_sid=2011ad', 'carousel_media': [{'id': '3569265316542499478', 'pk': '3569265316542499478', 'is_video': False, 'taken_at': 1739709604, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480371336_17881675092237568_921157552179314008_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=jl6veky_pS4Q7kNvgEPDm9f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjQ5OTQ3OA%3D%3D.3-ccb7-5&oh=00_AYBEQQzOj-kFbkcBqyI8q84NbW6-5a0E8TyoSEPccUbb7g&oe=67BB6615&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480371336_17881675092237568_921157552179314008_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=jl6veky_pS4Q7kNvgEPDm9f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjQ5OTQ3OA%3D%3D.3-ccb7-5&oh=00_AYBEQQzOj-kFbkcBqyI8q84NbW6-5a0E8TyoSEPccUbb7g&oe=67BB6615&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480371336_17881675092237568_921157552179314008_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=jl6veky_pS4Q7kNvgEPDm9f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjQ5OTQ3OA%3D%3D.3-ccb7-5&oh=00_AYCMZ9EYU76oBi2QrAttMiq8ejoQNne8A8Y1YfUhjFq5FA&oe=67BB6615&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569265336423490410_66966525567', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569265316533995771', 'pk': '3569265316533995771', 'is_video': False, 'taken_at': 1739709604, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480386565_17881675101237568_340715769403490040_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Hs0CxpMwSocQ7kNvgEtuYBH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUzMzk5NTc3MQ%3D%3D.3-ccb7-5&oh=00_AYBczaHMQBUR7NDd502nSzRogPP5oIHqbFsVv3VzGolbmw&oe=67BB4572&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480386565_17881675101237568_340715769403490040_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Hs0CxpMwSocQ7kNvgEtuYBH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUzMzk5NTc3MQ%3D%3D.3-ccb7-5&oh=00_AYBczaHMQBUR7NDd502nSzRogPP5oIHqbFsVv3VzGolbmw&oe=67BB4572&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480386565_17881675101237568_340715769403490040_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Hs0CxpMwSocQ7kNvgEtuYBH&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUzMzk5NTc3MQ%3D%3D.3-ccb7-5&oh=00_AYBCjFioqI0zTl2kbRQfAIj37t_FLLDngOu6hr-pSkOOig&oe=67BB4572&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569265336423490410_66966525567', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569265316542510972', 'pk': '3569265316542510972', 'is_video': False, 'taken_at': 1739709604, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480199364_17881675119237568_1465006961745691956_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=LfZHVrbI1L8Q7kNvgFKAMog&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjUxMDk3Mg%3D%3D.3-ccb7-5&oh=00_AYAXImOD4IlBAvvl39V12dnIrq53yKT36fe2eagRFbG2_Q&oe=67BB3F14&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480199364_17881675119237568_1465006961745691956_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=LfZHVrbI1L8Q7kNvgFKAMog&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjUxMDk3Mg%3D%3D.3-ccb7-5&oh=00_AYAXImOD4IlBAvvl39V12dnIrq53yKT36fe2eagRFbG2_Q&oe=67BB3F14&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480199364_17881675119237568_1465006961745691956_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=LfZHVrbI1L8Q7kNvgFKAMog&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjUxMDk3Mg%3D%3D.3-ccb7-5&oh=00_AYBFAFezDEBiSOVQbdM_hzmpeB0yIsSzyttfV1Lpas5WPg&oe=67BB3F14&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569265336423490410_66966525567', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569265316534059359', 'pk': '3569265316534059359', 'is_video': False, 'taken_at': 1739709604, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479996843_17881675116237568_9068257643524387966_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8ViN7JEoBYEQ7kNvgHNdp36&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUzNDA1OTM1OQ%3D%3D.3-ccb7-5&oh=00_AYCfwVCNKHm0z91MdablS38T5_TI8AuLOqbCZit6wULVxw&oe=67BB4697&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479996843_17881675116237568_9068257643524387966_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8ViN7JEoBYEQ7kNvgHNdp36&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUzNDA1OTM1OQ%3D%3D.3-ccb7-5&oh=00_AYCfwVCNKHm0z91MdablS38T5_TI8AuLOqbCZit6wULVxw&oe=67BB4697&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479996843_17881675116237568_9068257643524387966_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8ViN7JEoBYEQ7kNvgHNdp36&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUzNDA1OTM1OQ%3D%3D.3-ccb7-5&oh=00_AYBLMscDccZKpL0As5MPNgoMJno95SOeJGHDbYimG1e3pw&oe=67BB4697&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569265336423490410_66966525567', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569265316500543838', 'pk': '3569265316500543838', 'is_video': False, 'taken_at': 1739709604, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480325784_17881675128237568_8036040528842872996_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mBKPbmt_bGAQ7kNvgEdCKlR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUwMDU0MzgzOA%3D%3D.3-ccb7-5&oh=00_AYCyvaYjenDsvfFW_Blv9UEgYNXMLliAKSousDcBO1962Q&oe=67BB3CD6&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480325784_17881675128237568_8036040528842872996_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mBKPbmt_bGAQ7kNvgEdCKlR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUwMDU0MzgzOA%3D%3D.3-ccb7-5&oh=00_AYCyvaYjenDsvfFW_Blv9UEgYNXMLliAKSousDcBO1962Q&oe=67BB3CD6&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480325784_17881675128237568_8036040528842872996_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mBKPbmt_bGAQ7kNvgEdCKlR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjUwMDU0MzgzOA%3D%3D.3-ccb7-5&oh=00_AYDLx6OaHPyHI1fVlgD1S2jLWpo_dYNWmniWyOZyLPSoLQ&oe=67BB3CD6&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569265336423490410_66966525567', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569265316794012020', 'pk': '3569265316794012020', 'is_video': False, 'taken_at': 1739709604, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479564372_17881675143237568_4611986516436665306_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=IcGqhlReGwEQ7kNvgFo1TZ4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjc5NDAxMjAyMA%3D%3D.3-ccb7-5&oh=00_AYDez54UK4mAnAaDnMvsmiWZfYS1eCgOf69C46kyk8dt3w&oe=67BB4B1F&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479564372_17881675143237568_4611986516436665306_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=IcGqhlReGwEQ7kNvgFo1TZ4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjc5NDAxMjAyMA%3D%3D.3-ccb7-5&oh=00_AYDez54UK4mAnAaDnMvsmiWZfYS1eCgOf69C46kyk8dt3w&oe=67BB4B1F&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479564372_17881675143237568_4611986516436665306_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=IcGqhlReGwEQ7kNvgFo1TZ4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjc5NDAxMjAyMA%3D%3D.3-ccb7-5&oh=00_AYBKNzqcqlnnlOmi4kTqDhCh5FyI49vnQmc6QDRBoHXlOQ&oe=67BB4B1F&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569265336423490410_66966525567', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569265316861061853', 'pk': '3569265316861061853', 'is_video': False, 'taken_at': 1739709604, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480187971_17881675152237568_5586314212936134739_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8Lfr01RII0sQ7kNvgGaXw00&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjg2MTA2MTg1Mw%3D%3D.3-ccb7-5&oh=00_AYCqNymKabfKy1nsH-tvu8kyJv5FZAjmjA2U-Zfx_l9Pvw&oe=67BB43E7&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480187971_17881675152237568_5586314212936134739_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8Lfr01RII0sQ7kNvgGaXw00&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjg2MTA2MTg1Mw%3D%3D.3-ccb7-5&oh=00_AYCqNymKabfKy1nsH-tvu8kyJv5FZAjmjA2U-Zfx_l9Pvw&oe=67BB43E7&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480187971_17881675152237568_5586314212936134739_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8Lfr01RII0sQ7kNvgGaXw00&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjg2MTA2MTg1Mw%3D%3D.3-ccb7-5&oh=00_AYCKsmwRltHhrZt8li1zWSoefTOWM0Zid5_OWUFN4q8c5A&oe=67BB43E7&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569265336423490410_66966525567', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3569265316542322734', 'pk': '3569265316542322734', 'is_video': False, 'taken_at': 1739709604, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479904718_17881675161237568_5954335923591456905_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ztPcd3YtVRQQ7kNvgFkoVS0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjMyMjczNA%3D%3D.3-ccb7-5&oh=00_AYAWhddbqegJQbCVMPFGl0HMuAhubUBSoWDaF2QBVwUbWg&oe=67BB4417&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479904718_17881675161237568_5954335923591456905_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ztPcd3YtVRQQ7kNvgFkoVS0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjMyMjczNA%3D%3D.3-ccb7-5&oh=00_AYAWhddbqegJQbCVMPFGl0HMuAhubUBSoWDaF2QBVwUbWg&oe=67BB4417&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479904718_17881675161237568_5954335923591456905_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ztPcd3YtVRQQ7kNvgFkoVS0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjMyMjczNA%3D%3D.3-ccb7-5&oh=00_AYCBp1i0Yy1mfujYvV5KLQmNads1vaFFOiBv6XAMHCUqqg&oe=67BB4417&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3569265336423490410_66966525567', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480371336_17881675092237568_921157552179314008_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=jl6veky_pS4Q7kNvgEPDm9f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjQ5OTQ3OA%3D%3D.3-ccb7-5&oh=00_AYBEQQzOj-kFbkcBqyI8q84NbW6-5a0E8TyoSEPccUbb7g&oe=67BB6615&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480371336_17881675092237568_921157552179314008_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=jl6veky_pS4Q7kNvgEPDm9f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2OTI2NTMxNjU0MjQ5OTQ3OA%3D%3D.3-ccb7-5&oh=00_AYCMZ9EYU76oBi2QrAttMiq8ejoQNne8A8Y1YfUhjFq5FA&oe=67BB6615&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': 'licensed_music', 'music_info': {'music_asset_info': {'id': '3665977087033729', 'title': 'Memory Reboot', 'lyrics': None, 'audio_id': '1807849712919623', 'subtitle': '', 'artist_id': '396005785206670', 'has_lyrics': False, 'ig_username': 'narventof', 'is_explicit': False, 'dark_message': None, 'allows_saving': False, 'display_artist': 'VØJ, Narvent', 'duration_in_ms': 209416, 'sanitized_title': None, 'cover_artwork_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/426448910_1117303169723064_8972401964906269659_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=9qWh_9rfkxUQ7kNvgEJH-3w&_nc_oc=AdiUVq_cKs_ts4p0InD54NFDalyhSH54sAXvZw5XoE5xP65bBSdYu8tnWuPSMcfdM-g&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYAdTHE2T1Kcm_ps565DUxhWMT50TTapqJu8aJtSbbSw6Q&oe=67BB4862', 'licensed_music_subtype': 'DEFAULT', 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQN9dKF5fSFlj0FRmqZ47OZeAE7XVcvnpWmkeNfsYp7qEnJmTz-5qvX4KP2wgw9yAV5SDAXelJnQTjZe6rwg3hzV.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=2kNAKjQ4f6wQ7kNvgHK8YMD&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxMDQ5NjIxMDczODQ3MDc2LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYC_YOkxlcbFdca0XnZQG9Q9Cul0IyVkXFqRg7qPbrDkBg&oe=67BB44F8', 'cover_artwork_thumbnail_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/426448910_1117303169723064_8972401964906269659_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=9qWh_9rfkxUQ7kNvgEJH-3w&_nc_oc=AdiUVq_cKs_ts4p0InD54NFDalyhSH54sAXvZw5XoE5xP65bBSdYu8tnWuPSMcfdM-g&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYAdTHE2T1Kcm_ps565DUxhWMT50TTapqJu8aJtSbbSw6Q&oe=67BB4862', 'highlight_start_times_in_ms': [152000, 32500, 1500], 'reactive_audio_download_url': None, 'web_30s_preview_download_url': None, 'is_eligible_for_audio_effects': False, 'is_eligible_for_vinyl_sticker': True, 'fast_start_progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQN9dKF5fSFlj0FRmqZ47OZeAE7XVcvnpWmkeNfsYp7qEnJmTz-5qvX4KP2wgw9yAV5SDAXelJnQTjZe6rwg3hzV.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=2kNAKjQ4f6wQ7kNvgHK8YMD&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxMDQ5NjIxMDczODQ3MDc2LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYC_YOkxlcbFdca0XnZQG9Q9Cul0IyVkXFqRg7qPbrDkBg&oe=67BB44F8'}, 'music_consumption_info': {'ig_artist': {'id': '48147689300', 'username': 'narventof', 'full_name': 'Narvent', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3508558936229878274', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/468347495_997483935473499_3479796055293235510_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yDw1u-BgaqgQ7kNvgF3KWFn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBv3EcjFLq0BbFtKZrCJeDW4b4qSxwLo0fhzkubH42hvA&oe=67BB569D&_nc_sid=2011ad'}, 'trend_rank': None, 'is_bookmarked': False, 'display_labels': None, 'contains_lyrics': None, 'audio_muting_info': {'mute_audio': False, 'mute_reason_str': '', 'allow_audio_editing': False, 'show_muted_audio_toast': False}, 'should_mute_audio': False, 'audio_filter_infos': [], 'derived_content_id': None, 'previous_trend_rank': None, 'is_trending_in_clips': False, 'overlap_duration_in_ms': 30000, 'should_mute_audio_reason': '', 'should_allow_music_editing': False, 'formatted_clips_media_count': None, 'placeholder_profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.12442-15/43985629_311105916145351_58064759811405776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yL09NXcFiX4Q7kNvgHjUPJU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYClc-zXRJ3G21DakISK9eeWVNXAd_Yg6UjvG7IsC6fOZA&oe=67BB393D&_nc_sid=2011ad', 'audio_asset_start_time_in_ms': 32000, 'should_mute_audio_reason_type': None, 'allow_media_creation_with_music': True}}, 'pinned_media_ids': [], 'audio_canonical_id': '18249652537126201', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 42718567920003, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3569265316542499478, 3569265316533995771, 3569265316542510972, 3569265316534059359, 3569265316500543838, 3569265316794012020, 3569265316861061853, 3569265316542322734], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 8, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3568641201600793229', 'pk': '3568641201600793229', 'code': 'DGGXEPwPQqN', 'fbid': '17875252485181889', 'user': {'id': '247784713', 'fbid_v2': 17841401221393871, 'username': 'forbes', 'full_name': 'Forbes', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3209422173714307720', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/386845508_1422434591634620_3003545370011476510_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RzycIVRAJGcQ7kNvgHLYcRW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCryQHErRXARFVtbk6wdDdmK5Y1zaj1JC4Xr_AbwgS9Mw&oe=67BB4F56&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3568641201600793229', 'pk': '17875252515181889', 'text': \\\"You're sitting on #million-dollar moves and game-changing ideas. But there's too much noise in your head to hear the answer. #ChatGPT can help cut through the mental clutter and show you the path forward.\\\\n\\\\nRead how to get crystal clear on your next #business move at the link in our bio.\\\", 'type': 1, 'user': {'id': '247784713', 'fbid_v2': 17841401221393871, 'username': 'forbes', 'full_name': 'Forbes', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3209422173714307720', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/386845508_1422434591634620_3003545370011476510_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RzycIVRAJGcQ7kNvgHLYcRW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCryQHErRXARFVtbk6wdDdmK5Y1zaj1JC4Xr_AbwgS9Mw&oe=67BB4F56&_nc_sid=2011ad'}, 'user_id': '247784713', 'hashtags': ['#million', '#ChatGPT', '#business'], 'mentions': [], 'created_at': 1739635211, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739635211, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739635209, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 771, 'media_name': 'post', 'media_type': 1, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': False, 'is_reuse_allowed': False, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'feed', 'comment_count': 4, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477366354_631212209395394_6150599185230765260_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=0Dy_RhyMBTsQ7kNvgG5aGxO&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODY0MTIwMTYwMDc5MzIyOQ%3D%3D.3-ccb7-5&oh=00_AYAxbtOcWk5LUwUCTpGcstwwG1Msk5BF5wuyccb3RaH1Tg&oe=67BB5158&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477366354_631212209395394_6150599185230765260_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=0Dy_RhyMBTsQ7kNvgG5aGxO&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODY0MTIwMTYwMDc5MzIyOQ%3D%3D.3-ccb7-5&oh=00_AYAxbtOcWk5LUwUCTpGcstwwG1Msk5BF5wuyccb3RaH1Tg&oe=67BB5158&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477366354_631212209395394_6150599185230765260_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=0Dy_RhyMBTsQ7kNvgG5aGxO&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODY0MTIwMTYwMDc5MzIyOQ%3D%3D.3-ccb7-5&oh=00_AYAM8dkWYmAgyUfsMaCLbKJ6BXRSviHwYlERtbqWoFhwnA&oe=67BB5158&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1080, 'original_height': 1350, 'device_timestamp': 1739635209, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': False, 'open_carousel_show_follow_button': False, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3567161525892066099', 'pk': '3567161525892066099', 'code': 'DGBGoIXPKsz', 'fbid': '18018653258666701', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3567161525892066099', 'pk': '18018738050666701', 'text': 'A Meta desenvolveu modelos de IA capazes de decodificar sinais cerebrais e reconstruir frases digitadas, trazendo avanços significativos para interfaces cérebro-computador não invasivas. Em um estudo conduzido pelo laboratório FAIR, em parceria com o Centro Basco de Cognição, Cérebro e Linguagem, a IA analisou a atividade cerebral de 35 voluntários enquanto digitavam, utilizando magnetoencefalografia (MEG) e eletroencefalografia (EEG). Os resultados mostraram que a tecnologia conseguiu reconstruir até 80% dos caracteres digitados, o que representa o dobro da precisão dos métodos tradicionais baseados em EEG, abrindo caminho para novas soluções assistivas.\\\\n\\\\nOutro estudo investigou como o cérebro transforma pensamentos em linguagem. Os pesquisadores identificaram, por meio de MEG, as sequências neurais que convertem ideias abstratas em palavras e movimentos motores. Os achados sugerem que o cérebro utiliza um código neural dinâmico para conectar diferentes estágios do processamento linguístico. Esses avanços não só melhoram a capacidade da IA de interpretar a atividade cerebral, mas também podem revolucionar a neurociência e a comunicação assistiva.\\\\n\\\\nE você o que acha sobre isso? 🤔💬 \\\\n\\\\nLink do Paper: https://ai.meta.com/research/publications/brain-to-text-decoding-a-non-invasive-approach-via-typing/\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739458803, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739458803, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739458800, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['mariza3972'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 19, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479166826_18503242657032584_1880558464417128658_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Z8P5Ztp3JMUQ7kNvgE_sWB0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ2ODI2MzIxNw%3D%3D.3-ccb7-5&oh=00_AYCXZ5M_UOIDdRd1keU5RLq2HkchQPU45qeHYvgmqrFZlw&oe=67BB4ECC&_nc_sid=2011ad', 'carousel_media': [{'id': '3566626465468263217', 'pk': '3566626465468263217', 'is_video': False, 'taken_at': 1739458800, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479166826_18503242657032584_1880558464417128658_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Z8P5Ztp3JMUQ7kNvgE_sWB0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ2ODI2MzIxNw%3D%3D.3-ccb7-5&oh=00_AYCXZ5M_UOIDdRd1keU5RLq2HkchQPU45qeHYvgmqrFZlw&oe=67BB4ECC&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479166826_18503242657032584_1880558464417128658_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Z8P5Ztp3JMUQ7kNvgE_sWB0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ2ODI2MzIxNw%3D%3D.3-ccb7-5&oh=00_AYCXZ5M_UOIDdRd1keU5RLq2HkchQPU45qeHYvgmqrFZlw&oe=67BB4ECC&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479166826_18503242657032584_1880558464417128658_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Z8P5Ztp3JMUQ7kNvgE_sWB0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ2ODI2MzIxNw%3D%3D.3-ccb7-5&oh=00_AYCK4h-jTksGmz_jZycGYtmAEvqdpShl0Uwd14BwHV0bUA&oe=67BB4ECC&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3567161525892066099_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566626465258617101', 'pk': '3566626465258617101', 'is_video': True, 'taken_at': 1739458800, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM0mX-VUCp0JGjERykDTSVDg1hF2q2yW1nwvBApBbk9KlWQ3uAS0UmL1appempK0xapdLzygvVdMpOEf9FYtaqL96xVxZ65trXBJnM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE1ODI1MzkyODIzOTU3MTUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=d7b4f8b4d85bfcce&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FMTRCODJGQkQ1RDA0MzI1QzQ3RDBFM0FFNTBERTI5NV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dQc1dtQnlOcnIya0h3Z0dBTFcxTmVCSWluQkNia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJobJqbz0088FFQIoAkMzLBdASuqfvnbItBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDaqm4uFzj1PWCgyNEyVK6V5VTz2iqJLZoswRxx-iGoAQ&oe=67B76F73&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477610848_18503242690032584_4201190439061891605_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ORY0YO0nDIQQ7kNvgEgV83O&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTI1ODYxNzEwMQ%3D%3D.3-ccb7-5&oh=00_AYBSewSl9YF2MoyKBVti6bmOAD3ntVTbMYWUYqlN3oJTAA&oe=67BB3729&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477610848_18503242690032584_4201190439061891605_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ORY0YO0nDIQQ7kNvgEgV83O&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTI1ODYxNzEwMQ%3D%3D.3-ccb7-5&oh=00_AYBSewSl9YF2MoyKBVti6bmOAD3ntVTbMYWUYqlN3oJTAA&oe=67BB3729&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'video_duration': 53.833, 'video_versions': [{'id': '1043292821176476v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM0mX-VUCp0JGjERykDTSVDg1hF2q2yW1nwvBApBbk9KlWQ3uAS0UmL1appempK0xapdLzygvVdMpOEf9FYtaqL96xVxZ65trXBJnM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE1ODI1MzkyODIzOTU3MTUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=d7b4f8b4d85bfcce&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FMTRCODJGQkQ1RDA0MzI1QzQ3RDBFM0FFNTBERTI5NV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dQc1dtQnlOcnIya0h3Z0dBTFcxTmVCSWluQkNia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJobJqbz0088FFQIoAkMzLBdASuqfvnbItBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDaqm4uFzj1PWCgyNEyVK6V5VTz2iqJLZoswRxx-iGoAQ&oe=67B76F73&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 316109}, {'id': '1043292821176476v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM0mX-VUCp0JGjERykDTSVDg1hF2q2yW1nwvBApBbk9KlWQ3uAS0UmL1appempK0xapdLzygvVdMpOEf9FYtaqL96xVxZ65trXBJnM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE1ODI1MzkyODIzOTU3MTUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=d7b4f8b4d85bfcce&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FMTRCODJGQkQ1RDA0MzI1QzQ3RDBFM0FFNTBERTI5NV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dQc1dtQnlOcnIya0h3Z0dBTFcxTmVCSWluQkNia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJobJqbz0088FFQIoAkMzLBdASuqfvnbItBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDaqm4uFzj1PWCgyNEyVK6V5VTz2iqJLZoswRxx-iGoAQ&oe=67B76F73&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 316109}, {'id': '1043292821176476v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQM0mX-VUCp0JGjERykDTSVDg1hF2q2yW1nwvBApBbk9KlWQ3uAS0UmL1appempK0xapdLzygvVdMpOEf9FYtaqL96xVxZ65trXBJnM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE1ODI1MzkyODIzOTU3MTUsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=d7b4f8b4d85bfcce&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FMTRCODJGQkQ1RDA0MzI1QzQ3RDBFM0FFNTBERTI5NV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dQc1dtQnlOcnIya0h3Z0dBTFcxTmVCSWluQkNia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJobJqbz0088FFQIoAkMzLBdASuqfvnbItBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDaqm4uFzj1PWCgyNEyVK6V5VTz2iqJLZoswRxx-iGoAQ&oe=67B76F73&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 316109}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3567161525892066099_23264583', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566626465493374835', 'pk': '3566626465493374835', 'is_video': False, 'taken_at': 1739458800, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476403710_18503242666032584_5414985892080155716_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=wsrxH7ocsvAQ7kNvgGedsgQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ5MzM3NDgzNQ%3D%3D.3-ccb7-5&oh=00_AYC7cWLGIwGLRe8ZIp02Qz_vKYeHo-KnybP6TSyssuceAg&oe=67BB3559&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476403710_18503242666032584_5414985892080155716_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=wsrxH7ocsvAQ7kNvgGedsgQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ5MzM3NDgzNQ%3D%3D.3-ccb7-5&oh=00_AYC7cWLGIwGLRe8ZIp02Qz_vKYeHo-KnybP6TSyssuceAg&oe=67BB3559&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476403710_18503242666032584_5414985892080155716_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=wsrxH7ocsvAQ7kNvgGedsgQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ5MzM3NDgzNQ%3D%3D.3-ccb7-5&oh=00_AYDCOTMQ26LIJifZMGY3xbcdVsDkADNl7gtz7DpIvgVuoA&oe=67BB3559&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3567161525892066099_23264583', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479166826_18503242657032584_1880558464417128658_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Z8P5Ztp3JMUQ7kNvgE_sWB0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ2ODI2MzIxNw%3D%3D.3-ccb7-5&oh=00_AYCXZ5M_UOIDdRd1keU5RLq2HkchQPU45qeHYvgmqrFZlw&oe=67BB4ECC&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479166826_18503242657032584_1880558464417128658_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Z8P5Ztp3JMUQ7kNvgE_sWB0&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjYyNjQ2NTQ2ODI2MzIxNw%3D%3D.3-ccb7-5&oh=00_AYCK4h-jTksGmz_jZycGYtmAEvqdpShl0Uwd14BwHV0bUA&oe=67BB4ECC&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739458800, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3566626465468263217, 3566626465258617101, 3566626465493374835], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 3, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3568867688355077262', 'pk': '3568867688355077262', 'code': 'DGHKkD-xhyO', 'fbid': '17962738598853354', 'user': {'id': '37149867', 'fbid_v2': 17841400896010580, 'username': 'aljazeeraenglish', 'full_name': 'Al Jazeera English', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3423481891846875927', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/453580875_800205055531093_8957840343954748436_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=wdDzKcjCwCUQ7kNvgEnFm9r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBixbgAYIXvB7qXgKLCTCxFW3HYAXydqdR20h27TQ-saQ&oe=67BB58C6&_nc_sid=2011ad', 'live_broadcast_id': 18487636213056120, 'live_broadcast_visibility': 0, 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3568867688355077262', 'pk': '17962738616853354', 'text': \\\"Two of Silicon Valley’s most prominent tech titans, Elon Musk and Sam Altman, are at loggerheads over the future of the creator of #ChatGPT.\\\\u2060\\\\n.\\\\u2060\\\\nHere's what you need to know.\\\\u2060\\\\n.\\\\u2060\\\\n🔗Tap the link in bio for more.\\\\u2060\\\\n.\\\\u2060\\\\n#AI #Technology #Economy\\\\u2060\\\\n.\\\\u2060\\\\n📸 Screengrab, Al Jazeera English\\\", 'type': 1, 'user': {'id': '37149867', 'fbid_v2': 17841400896010580, 'username': 'aljazeeraenglish', 'full_name': 'Al Jazeera English', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3423481891846875927', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/453580875_800205055531093_8957840343954748436_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=wdDzKcjCwCUQ7kNvgEnFm9r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBixbgAYIXvB7qXgKLCTCxFW3HYAXydqdR20h27TQ-saQ&oe=67BB58C6&_nc_sid=2011ad'}, 'user_id': '37149867', 'hashtags': ['#ChatGPT', '#AI', '#Technology', '#Economy\\\\u2060'], 'mentions': [], 'created_at': 1739662212, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739662212, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739662211, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 2786, 'media_name': 'post', 'media_type': 1, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': False, 'is_reuse_allowed': False, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'feed', 'comment_count': 47, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/474884033_1041274251112144_2590950117305774337_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kNLuRlH3vKgQ7kNvgEEu7Vj&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODg2NzY4ODM1NTA3NzI2Mg%3D%3D.3-ccb7-5&oh=00_AYADXMvxKqTCcBjW1Co_sJqjLLVrEnivMuIsqWI9WuGbRA&oe=67BB628B&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/474884033_1041274251112144_2590950117305774337_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kNLuRlH3vKgQ7kNvgEEu7Vj&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODg2NzY4ODM1NTA3NzI2Mg%3D%3D.3-ccb7-5&oh=00_AYADXMvxKqTCcBjW1Co_sJqjLLVrEnivMuIsqWI9WuGbRA&oe=67BB628B&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/474884033_1041274251112144_2590950117305774337_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kNLuRlH3vKgQ7kNvgEEu7Vj&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODg2NzY4ODM1NTA3NzI2Mg%3D%3D.3-ccb7-5&oh=00_AYBYLi_quEhzRilxIORNwAbutJBCe2z18QQl_sqmOjg1Zg&oe=67BB628B&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1080, 'original_height': 1350, 'device_timestamp': 1739662211, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3565579731941588032', 'pk': '3565579731941588032', 'code': 'DF7e9_8tfxA', 'fbid': '18046346447209820', 'user': {'id': '622163407', 'fbid_v2': 17841400582219721, 'username': 'carlos___tv', 'full_name': 'Carlos', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3238104158887505992', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/403676962_643565934382026_5609781005423456332_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=IAP89bBcPy8Q7kNvgEtuOG2&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAO7K5R_lSzq9MY4J6xEHcgHPAW4ZfCGaESXZmRKMlB-Q&oe=67BB50EC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3565579731941588032', 'pk': '18046376153209820', 'text': 'Everyone knows where the inspiration came from for these videos.\\\\n\\\\nEvery time I see top tier quality motion design in ads my brain goes to work, even while sleeping, to try to crack the ‘how the f*ck did they do this’. So, this are some researches into how could @buildersclub_studios do the amazing ad for @openai . First and last are after effects and second is a cavalry research. \\\\n\\\\nSoftware: After Effectus Maximus + Cavalry\\\\nFont: Kaneda Gothic AF (bold italic)\\\\n\\\\nMotion, design, motion design - #motion #motiondesign #motiongraphics #design #chatgpt', 'type': 1, 'user': {'id': '622163407', 'fbid_v2': 17841400582219721, 'username': 'carlos___tv', 'full_name': 'Carlos', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3238104158887505992', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/403676962_643565934382026_5609781005423456332_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=IAP89bBcPy8Q7kNvgEtuOG2&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAO7K5R_lSzq9MY4J6xEHcgHPAW4ZfCGaESXZmRKMlB-Q&oe=67BB50EC&_nc_sid=2011ad'}, 'user_id': '622163407', 'hashtags': ['#motion', '#motiondesign', '#motiongraphics', '#design', '#chatgpt'], 'mentions': ['@buildersclub_studios', '@openai'], 'created_at': 1739291958, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739291958, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739270248, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 640, 'media_name': 'album', 'media_type': 8, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 19, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478703288_18483778546019408_5833992415469426900_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8kOLe2eB2h8Q7kNvgFUV1sp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTU3NTgyMjEyODg4MDQwNA%3D%3D.3-ccb7-5&oh=00_AYCCKwxxhIFZQtRgYvqWBelYMs1uil1g4yB-5DSSezkHsw&oe=67BB61B7&_nc_sid=2011ad', 'carousel_media': [{'id': '3565575822128880404', 'pk': '3565575822128880404', 'is_video': True, 'taken_at': 1739270247, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPG7OZpWVixHhVULKJ-CkdbOIk0MUNwuAed2m-3V_fvHv1CC-wgUGAK4XRys7o9f9Rw_SMnOO6L6Ehbako-YCK-NccE4WFP9UzU7nE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY0Mjg4NTMwNDg1NjI3MywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&vs=7c2e638b3d06fc3f&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82NDRFM0RBMzNDNjlGMjU4NzYwQzE3RDkzMTBEQUU5RF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaiu9Hj7KykAhUCKAJDMywXQCR64UeuFHsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCqRqkQDtWb7jD8LqwcSi28kl2Nw-rvPVSRhdLU5JhXkQ&oe=67B7411B&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478703288_18483778546019408_5833992415469426900_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8kOLe2eB2h8Q7kNvgFUV1sp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTU3NTgyMjEyODg4MDQwNA%3D%3D.3-ccb7-5&oh=00_AYCCKwxxhIFZQtRgYvqWBelYMs1uil1g4yB-5DSSezkHsw&oe=67BB61B7&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478703288_18483778546019408_5833992415469426900_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8kOLe2eB2h8Q7kNvgFUV1sp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTU3NTgyMjEyODg4MDQwNA%3D%3D.3-ccb7-5&oh=00_AYCCKwxxhIFZQtRgYvqWBelYMs1uil1g4yB-5DSSezkHsw&oe=67BB61B7&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479283094_511073104930291_5382722919757530861_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=5mpKXt9Ss3QQ7kNvgEyBLuO&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCBvQUPJYdc4qPxsVY6NPebTfHeaR6zaGqPOIFLYE1OsA&oe=67BB6561&_nc_sid=2011ad'], 'file_size_kb': 202, 'sprite_width': 1500, 'video_length': 10.24, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.09752380952380953, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 10.24, 'video_versions': [{'id': '9637232019643014v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPG7OZpWVixHhVULKJ-CkdbOIk0MUNwuAed2m-3V_fvHv1CC-wgUGAK4XRys7o9f9Rw_SMnOO6L6Ehbako-YCK-NccE4WFP9UzU7nE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY0Mjg4NTMwNDg1NjI3MywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&vs=7c2e638b3d06fc3f&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82NDRFM0RBMzNDNjlGMjU4NzYwQzE3RDkzMTBEQUU5RF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaiu9Hj7KykAhUCKAJDMywXQCR64UeuFHsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCqRqkQDtWb7jD8LqwcSi28kl2Nw-rvPVSRhdLU5JhXkQ&oe=67B7411B&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 175435}, {'id': '9637232019643014v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPG7OZpWVixHhVULKJ-CkdbOIk0MUNwuAed2m-3V_fvHv1CC-wgUGAK4XRys7o9f9Rw_SMnOO6L6Ehbako-YCK-NccE4WFP9UzU7nE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY0Mjg4NTMwNDg1NjI3MywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&vs=7c2e638b3d06fc3f&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82NDRFM0RBMzNDNjlGMjU4NzYwQzE3RDkzMTBEQUU5RF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaiu9Hj7KykAhUCKAJDMywXQCR64UeuFHsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCqRqkQDtWb7jD8LqwcSi28kl2Nw-rvPVSRhdLU5JhXkQ&oe=67B7411B&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 175435}, {'id': '9637232019643014v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPG7OZpWVixHhVULKJ-CkdbOIk0MUNwuAed2m-3V_fvHv1CC-wgUGAK4XRys7o9f9Rw_SMnOO6L6Ehbako-YCK-NccE4WFP9UzU7nE.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjY0Mjg4NTMwNDg1NjI3MywidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&vs=7c2e638b3d06fc3f&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC82NDRFM0RBMzNDNjlGMjU4NzYwQzE3RDkzMTBEQUU5RF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaiu9Hj7KykAhUCKAJDMywXQCR64UeuFHsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYCqRqkQDtWb7jD8LqwcSi28kl2Nw-rvPVSRhdLU5JhXkQ&oe=67B7411B&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 175435}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3565579731941588032_622163407', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565575822246311933', 'pk': '3565575822246311933', 'is_video': True, 'taken_at': 1739270247, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPU7_nELFHrf18l1Wx6ttsePIO60Wa-MxtK-zTEcgi_qsGmQ-eMZf2dnRPdT5YrBKCx5cWecKp3VPJk1mtuSem1HXqFosbnYpi9X7U.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYwOTM2NDc1NTEzMTA4NSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=3332a11ae6bf5f1a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8zODRFREVCNjMwRTE0RkVBNDhCRUMzOUQyQkI4MUJBQ192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaaq6Wc2Y2VAhUCKAJDMywXQClHrhR64UgYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBkEH5_J3ZW4WmuAerHF5KA8aqc7p-_UNqSJdTjKum9Bg&oe=67B746FD&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'vp09.00.31.08.00.01.01.01.00', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477524545_18483778576019408_5672966462123095081_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6hNIcCuQuSoQ7kNvgE4xzpW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTU3NTgyMjI0NjMxMTkzMw%3D%3D.3-ccb7-5&oh=00_AYCjDeKg0k4fogXqQgq11MpOKi1795RLw39BTHJjGnPSfw&oe=67BB60FB&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477524545_18483778576019408_5672966462123095081_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=6hNIcCuQuSoQ7kNvgE4xzpW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTU3NTgyMjI0NjMxMTkzMw%3D%3D.3-ccb7-5&oh=00_AYCjDeKg0k4fogXqQgq11MpOKi1795RLw39BTHJjGnPSfw&oe=67BB60FB&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476507694_2349647238734804_7475113543229494586_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=joq166qjGsIQ7kNvgFO-nk3&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAJHRePlSThQQppOvvoOy3EwjsmXBOh4tJR4OawUuImgw&oe=67BB4036&_nc_sid=2011ad'], 'file_size_kb': 187, 'sprite_width': 1500, 'video_length': 12.64, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.12038095238095238, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 12.64, 'video_versions': [{'id': '1327959838546152v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPU7_nELFHrf18l1Wx6ttsePIO60Wa-MxtK-zTEcgi_qsGmQ-eMZf2dnRPdT5YrBKCx5cWecKp3VPJk1mtuSem1HXqFosbnYpi9X7U.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYwOTM2NDc1NTEzMTA4NSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=3332a11ae6bf5f1a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8zODRFREVCNjMwRTE0RkVBNDhCRUMzOUQyQkI4MUJBQ192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaaq6Wc2Y2VAhUCKAJDMywXQClHrhR64UgYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBkEH5_J3ZW4WmuAerHF5KA8aqc7p-_UNqSJdTjKum9Bg&oe=67B746FD&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 760281}, {'id': '1327959838546152v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPU7_nELFHrf18l1Wx6ttsePIO60Wa-MxtK-zTEcgi_qsGmQ-eMZf2dnRPdT5YrBKCx5cWecKp3VPJk1mtuSem1HXqFosbnYpi9X7U.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYwOTM2NDc1NTEzMTA4NSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=3332a11ae6bf5f1a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8zODRFREVCNjMwRTE0RkVBNDhCRUMzOUQyQkI4MUJBQ192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaaq6Wc2Y2VAhUCKAJDMywXQClHrhR64UgYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBkEH5_J3ZW4WmuAerHF5KA8aqc7p-_UNqSJdTjKum9Bg&oe=67B746FD&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 760281}, {'id': '1327959838546152v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPU7_nELFHrf18l1Wx6ttsePIO60Wa-MxtK-zTEcgi_qsGmQ-eMZf2dnRPdT5YrBKCx5cWecKp3VPJk1mtuSem1HXqFosbnYpi9X7U.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjYwOTM2NDc1NTEzMTA4NSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNBUk9VU0VMX0lURU0uQzMuMTA4MC5kYXNoX2Jhc2VsaW5lXzEwODBwX3YxIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&vs=3332a11ae6bf5f1a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8zODRFREVCNjMwRTE0RkVBNDhCRUMzOUQyQkI4MUJBQ192aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaaq6Wc2Y2VAhUCKAJDMywXQClHrhR64UgYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYBkEH5_J3ZW4WmuAerHF5KA8aqc7p-_UNqSJdTjKum9Bg&oe=67B746FD&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 760281}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3565579731941588032_622163407', 'explore_pivot_grid': False, 'number_of_qualities': 5, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565575823378862304', 'pk': '3565575823378862304', 'is_video': True, 'taken_at': 1739270247, 'has_audio': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOSit4a8jE1sMtepBbF2fw9i8YaZu66e8DlzcLZKf7jlslOEDvyDGe8ZQVhRkCRjRKxj7uGV2Cf_zeZH-OYeHiA-ygnQzLzuoqIbIM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNjY3MzYzOTUwMzkyMzksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=ad392c4ce667b35a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8yNTQyNDU5MDEyMzZCMTExNkYyMkQ0NEQwNjlGNERCMV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaOyPvF_8iSBBUCKAJDMywXQCR64UeuFHsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYA7RNokzB-dS4MvWdN3U563QcX9_gSE0A4Wjpuc8mgLqw&oe=67B73C60&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477965486_18483778567019408_1173550122795958628_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZADZ1IqkJYEQ7kNvgGk-VBj&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTU3NTgyMzM3ODg2MjMwNA%3D%3D.3-ccb7-5&oh=00_AYDzCBqyFJaUEOxGcjuYdlMHgwCGuTVMKA3ikh4WFrVBpg&oe=67BB3388&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477965486_18483778567019408_1173550122795958628_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZADZ1IqkJYEQ7kNvgGk-VBj&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTU3NTgyMzM3ODg2MjMwNA%3D%3D.3-ccb7-5&oh=00_AYDzCBqyFJaUEOxGcjuYdlMHgwCGuTVMKA3ikh4WFrVBpg&oe=67BB3388&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477631583_607424268586547_5835322807120692561_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Hpak4hn0bbUQ7kNvgETcorK&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAMWJNeldWU3VomRvP7Pcb5cs_pG8K5H17XJ9XWcVAMWA&oe=67BB3916&_nc_sid=2011ad'], 'file_size_kb': 157, 'sprite_width': 1500, 'video_length': 10.24, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.09752380952380953, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 10.24, 'video_versions': [{'id': '9066365113413034v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOSit4a8jE1sMtepBbF2fw9i8YaZu66e8DlzcLZKf7jlslOEDvyDGe8ZQVhRkCRjRKxj7uGV2Cf_zeZH-OYeHiA-ygnQzLzuoqIbIM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNjY3MzYzOTUwMzkyMzksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=ad392c4ce667b35a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8yNTQyNDU5MDEyMzZCMTExNkYyMkQ0NEQwNjlGNERCMV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaOyPvF_8iSBBUCKAJDMywXQCR64UeuFHsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYA7RNokzB-dS4MvWdN3U563QcX9_gSE0A4Wjpuc8mgLqw&oe=67B73C60&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 139768}, {'id': '9066365113413034v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOSit4a8jE1sMtepBbF2fw9i8YaZu66e8DlzcLZKf7jlslOEDvyDGe8ZQVhRkCRjRKxj7uGV2Cf_zeZH-OYeHiA-ygnQzLzuoqIbIM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNjY3MzYzOTUwMzkyMzksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=ad392c4ce667b35a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8yNTQyNDU5MDEyMzZCMTExNkYyMkQ0NEQwNjlGNERCMV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaOyPvF_8iSBBUCKAJDMywXQCR64UeuFHsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYA7RNokzB-dS4MvWdN3U563QcX9_gSE0A4Wjpuc8mgLqw&oe=67B73C60&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 139768}, {'id': '9066365113413034v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOSit4a8jE1sMtepBbF2fw9i8YaZu66e8DlzcLZKf7jlslOEDvyDGe8ZQVhRkCRjRKxj7uGV2Cf_zeZH-OYeHiA-ygnQzLzuoqIbIM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjExNjY3MzYzOTUwMzkyMzksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&vs=ad392c4ce667b35a&_nc_vs=HBkcFQIYQGlnX2VwaGVtZXJhbC8yNTQyNDU5MDEyMzZCMTExNkYyMkQ0NEQwNjlGNERCMV92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwKIB3VzZV9vaWwBMRJwcm9ncmVzc2l2ZV9yZWNpcGUBMRUAACaOyPvF_8iSBBUCKAJDMywXQCR64UeuFHsYFmRhc2hfYmFzZWxpbmVfMTA4MHBfdjERAHXuBwA&ccb=9-4&oh=00_AYA7RNokzB-dS4MvWdN3U563QcX9_gSE0A4Wjpuc8mgLqw&oe=67B73C60&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 139768}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3565579731941588032_622163407', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478703288_18483778546019408_5833992415469426900_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8kOLe2eB2h8Q7kNvgFUV1sp&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTU3NTgyMjEyODg4MDQwNA%3D%3D.3-ccb7-5&oh=00_AYCCKwxxhIFZQtRgYvqWBelYMs1uil1g4yB-5DSSezkHsw&oe=67BB61B7&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': 'licensed_music', 'music_info': {'music_asset_info': {'id': '923767102804732', 'title': 'The Urge', 'lyrics': None, 'audio_id': '1119726705862597', 'subtitle': '', 'artist_id': '2265324317045585', 'has_lyrics': True, 'ig_username': None, 'is_explicit': False, 'dark_message': None, 'allows_saving': False, 'display_artist': 'Gesaffelstein', 'duration_in_ms': 144697, 'sanitized_title': None, 'cover_artwork_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/434264232_90027721467583_8604211630424863828_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=108&ccb=1-7&_nc_sid=2f2557&_nc_ohc=k3w9t0hgHj4Q7kNvgFGlcSb&_nc_oc=AdjvYfoUmz7ngmU3CZy_PWzDU5IVy__3sNGQNPbZNt3cC1YIdIsXIKH8U_SOCcCXRxc&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYAhjTxfgrDt-x-9nKnHXbvSZE4G54MaZkRlM4Aqmbo1ZQ&oe=67BB4B9B', 'licensed_music_subtype': 'DEFAULT', 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQOYq-8PeoKTNLItAOmC-Fqha_veAxb5N1qPMnkDnToBZGf8CrXVyhY_hr_ltCgvNyZa8WwmeCFyRt4_XVsw1rXu.mp4?strext=1&_nc_cat=102&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=sPdirO5ryKcQ7kNvgHPLVuj&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo0NjEyOTM3MTMwMDI3NDMsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYBgyNXC4PGtwuOPWgJ0VnkxWj0-NveuHqhxYiSv9i_Hjg&oe=67BB60B0', 'cover_artwork_thumbnail_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/434264232_90027721467583_8604211630424863828_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=108&ccb=1-7&_nc_sid=2f2557&_nc_ohc=k3w9t0hgHj4Q7kNvgFGlcSb&_nc_oc=AdjvYfoUmz7ngmU3CZy_PWzDU5IVy__3sNGQNPbZNt3cC1YIdIsXIKH8U_SOCcCXRxc&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYAhjTxfgrDt-x-9nKnHXbvSZE4G54MaZkRlM4Aqmbo1ZQ&oe=67BB4B9B', 'highlight_start_times_in_ms': [39000, 107500, 1500], 'reactive_audio_download_url': None, 'web_30s_preview_download_url': None, 'is_eligible_for_audio_effects': False, 'is_eligible_for_vinyl_sticker': True, 'fast_start_progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQOYq-8PeoKTNLItAOmC-Fqha_veAxb5N1qPMnkDnToBZGf8CrXVyhY_hr_ltCgvNyZa8WwmeCFyRt4_XVsw1rXu.mp4?strext=1&_nc_cat=102&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=sPdirO5ryKcQ7kNvgHPLVuj&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo0NjEyOTM3MTMwMDI3NDMsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYBgyNXC4PGtwuOPWgJ0VnkxWj0-NveuHqhxYiSv9i_Hjg&oe=67BB60B0'}, 'music_consumption_info': {'ig_artist': None, 'trend_rank': None, 'is_bookmarked': False, 'display_labels': None, 'contains_lyrics': None, 'audio_muting_info': {'mute_audio': False, 'mute_reason_str': '', 'allow_audio_editing': False, 'show_muted_audio_toast': False}, 'should_mute_audio': False, 'audio_filter_infos': [], 'derived_content_id': None, 'previous_trend_rank': None, 'is_trending_in_clips': False, 'overlap_duration_in_ms': 30000, 'should_mute_audio_reason': '', 'should_allow_music_editing': False, 'formatted_clips_media_count': None, 'placeholder_profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.12442-15/43985629_311105916145351_58064759811405776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yL09NXcFiX4Q7kNvgHjUPJU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYClc-zXRJ3G21DakISK9eeWVNXAd_Yg6UjvG7IsC6fOZA&oe=67BB393D&_nc_sid=2011ad', 'audio_asset_start_time_in_ms': 39000, 'should_mute_audio_reason_type': None, 'allow_media_creation_with_music': True}}, 'pinned_media_ids': [], 'audio_canonical_id': '18414864688025766', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739269781473224, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': True, 'featured_products': [], 'carousel_media_ids': [3565575822128880404, 3565575822246311933, 3565575823378862304], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 3, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3570558338208805314', 'pk': '3570558338208805314', 'code': 'DGNK-QWvrHC', 'fbid': '17911950857986098', 'user': {'id': '196701013', 'fbid_v2': 17841400870393073, 'username': 'springnews', 'full_name': 'SPRING News', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3538929277041432014', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/472421193_2507000116161200_3524490708502498004_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=FldPLX30WHAQ7kNvgH5pHEQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBsEH82gUx_0ZISyDzPiIef0LASzz-eL1Ng_QUoqMImWw&oe=67BB66B1&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 2, 'show_account_transparency_details': True}, 'caption': {'id': '3570558338208805314', 'pk': '17911950860986098', 'text': 'AI ตัวไหนน่าใช้กว่ากัน...วัดแบบจริงใจ\\\\n.\\\\nเปรียบเทียบ  AI Chatbot  4 ดาวเด่น , #ChatGPT , #Gemini , #Claude #Perplexity  โดยแต่ละตัวมีจุดเด่นจุดด้อยอย่างไร มาดูกัน และหากเปรียบ AI แชทบอท แล้ว ตัวไหนมีเสน่ห์ จุดเด่นมากกว่ากัน\\\\n.\\\\n[ ChatGPT ]\\\\n.\\\\n• พัฒนาโดย OpenAI โดยมีหลากหลายโมเดล ณ เวลานี้ ทั้ง GPT-4o , GPT-4o mini เป็นต้น \\\\n• รองรับมากกว่า 80 ภาษา และ โดดเด่นในการตอบคำถาม  จากการทำสำรวจของ Wall Street Journal\\\\nโดย คำถาม ด้านทำอาหาร: ChatGPT คิดเมนูจากวัตถุดิบแปลก ๆ ได้สร้างสรรค์แต่เป็นไปได้ Perplexity โดดเด่นเรื่องขั้นตอนอธิบายละเอียด\\\\n.\\\\nเหมาะกับ: นักเขียน, นักการตลาด, ครีเอทีฟ, ผู้ให้คำปรึกษา เหตุผลคือ ChatGPT สร้างสรรค์เนื้อหาหลากหลายรูปแบบ เช่น บทความ โพสต์โซเชียลมีเดีย และการตอบคำถามที่ใช้ภาษาที่เป็นธรรมชาติและปรับได้ตามโทนเสียงที่ต้องการ เหมาะกับงานที่ต้องการความคิดสร้างสรรค์และการสื่อสารที่ดึงดูดใจ และสามารถเอาไปต่อยอดเนื้อหาได้ \\\\n.\\\\n[Gemini ]\\\\n.\\\\n• พัฒนาโดย Google อย่างไรก็ตาม ตัว Gemini อาจมีประสิทธิภาพที่ดีกว่าในการตอบคำถามเชิงวิชาการ หรือเรื่องที่เฉพาะเจาะจงมากขึ้น และอาจให้คำตอบที่ “เกินความจำเป็น” ในการตอบคำถามทั่วไป \\\\n• การประมวลผลเร็ว  โดย Google Gemini นั้นมีการอัพเดทที่ใหม่กว่าใครเพื่อน เพราะใช้ฐานข้อมูลจาก Google เองด้วย ที่สำคัญก็คือการใช้งานเพื่อสอบถามนั้นไม่มีข้อจำกัด สามารถป้อนคำถามตอบกลับไปได้เรื่อยๆ ตามที่ต้องการ\\\\n.\\\\nโดดเด่น\\\\nAI ของ Gemini นั้นมีความโดดเด่นในการตอบคำถามในประเด็นการเงิน การธนาคารและการลงทุน  โดย Gemini  ให้คำปรึกษาการออมเกษียณ มรดก ชัดเจน ละเอียด นำไปปฏิบัติได้จริง\\\\n.\\\\nเหมาะสำหรับ: นักวิเคราะห์ธุรกิจ, ที่ปรึกษาทางธุรกิจ, นักวิชาการ เพราะ Gemini เน้นการตอบคำถามที่รวดเร็วและมีความแม่นยำสูง เหมาะกับงานที่ต้องการการสรุปข้อมูลที่ถูกต้องและเข้าใจง่าย เช่น การวิเคราะห์ข้อมูลด้านการตลาด การวิจัยเชิงลึกในอุตสาหกรรม และการวิเคราะห์สถานการณ์ทางเศรษฐกิจหรือธุรกิจ\\\\n\\\\n[ Claude]\\\\n.\\\\n Claude AI , อีกหนึ่ง Chatbot ที่กำลังมาแรงมากๆ โดย AI ตัวนี้ พัฒนาโดย Anthropic  เน้นความปลอดภัย \\\\n.\\\\nโดดเด่น\\\\nเขียนงานภาษาสวยงาม โดย Claude 3 ทำได้ดีกว่า Chat GPT : การวิเคราะห์เชิงเหตุผล สร้างรายละเอียดสินค้า Brainstorm Ideas สรุปเนื้อหา / ข้อความ วิเคราะห์ข้อความ การนำเสนอข้อมูลเชิงข้อเท็จจริง และการเขียนกลอน บทกวี  ขณะที่ คำถามเรื่อง การเงิน Claude ก็สามารถให้คำตอบที่ดี \\\\n.\\\\nเหมาะสำหรับ: ที่ปรึกษากฎหมาย, ผู้จัดการโปรเจ็กต์, ผู้เชี่ยวชาญด้านจริยธรรม \\\\n.\\\\n#SPRiNGTech #SPRiNG', 'type': 1, 'user': {'id': '196701013', 'fbid_v2': 17841400870393073, 'username': 'springnews', 'full_name': 'SPRING News', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3538929277041432014', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/472421193_2507000116161200_3524490708502498004_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=FldPLX30WHAQ7kNvgH5pHEQ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBsEH82gUx_0ZISyDzPiIef0LASzz-eL1Ng_QUoqMImWw&oe=67BB66B1&_nc_sid=2011ad'}, 'user_id': '196701013', 'hashtags': ['#ChatGPT', '#Gemini', '#Claude', '#Perplexity', '#SPRiNGTech', '#SPRiNG'], 'mentions': [], 'created_at': 1739863745, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739863745, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739863744, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 321, 'media_name': 'post', 'media_type': 1, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'feed', 'comment_count': 0, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480412041_18486460843029014_604873683989898563_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=JWM02ZG-39QQ7kNvgGazl7f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDU1ODMzODIwODgwNTMxNA%3D%3D.3-ccb7-5&oh=00_AYD_9swlnVxuMYEQadnA2vaCPRhE9JRtF5RnTKbs0KceOA&oe=67BB4219&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480412041_18486460843029014_604873683989898563_n.webp?stp=dst-webp_p1080x1080&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=JWM02ZG-39QQ7kNvgGazl7f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDU1ODMzODIwODgwNTMxNA%3D%3D.3-ccb7-5&oh=00_AYD_9swlnVxuMYEQadnA2vaCPRhE9JRtF5RnTKbs0KceOA&oe=67BB4219&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480412041_18486460843029014_604873683989898563_n.webp?stp=dst-webp_p360x360&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=JWM02ZG-39QQ7kNvgGazl7f&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MDU1ODMzODIwODgwNTMxNA%3D%3D.3-ccb7-5&oh=00_AYDuJ3MD742zzpFN2wM-P-FKNDmB_AoQKlcPUcOsf9mwQw&oe=67BB4219&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1440, 'original_height': 1800, 'device_timestamp': 597537450183692, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': True, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3566889678251987128', 'pk': '3566889678251987128', 'code': 'DGAI0OhN5C4', 'fbid': '18101152126500481', 'user': {'id': '1072450671', 'fbid_v2': 17841400080146757, 'username': 'hindustantimes', 'full_name': 'Hindustan Times', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3024735359738627926', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/327459860_5670075359758385_2726554507316522774_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=hxeZ7RPAwvgQ7kNvgGVm436&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYA1dvl_Z0-H1SR4EM470LAmifub2CRzg9Y0BGt7Rbl8sw&oe=67BB361D&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3566889678251987128', 'pk': '18101152132500481', 'text': 'President #DonaldTrump’s writing style has been assessed as “of an 11-year-old” following a Truth Social post in which Trump detailed a “lengthy and highly productive” phone call with Russian President #VladimirPutin. \\\\n\\\\nKnow more - LINK IN BIO! \\\\n\\\\n#WorldNews #UnitedStates #PresidentTrump #ChatGPT #InstaWithHT', 'type': 1, 'user': {'id': '1072450671', 'fbid_v2': 17841400080146757, 'username': 'hindustantimes', 'full_name': 'Hindustan Times', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3024735359738627926', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/327459860_5670075359758385_2726554507316522774_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=hxeZ7RPAwvgQ7kNvgGVm436&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYA1dvl_Z0-H1SR4EM470LAmifub2CRzg9Y0BGt7Rbl8sw&oe=67BB361D&_nc_sid=2011ad'}, 'user_id': '1072450671', 'hashtags': ['#DonaldTrump’s', '#VladimirPutin', '#WorldNews', '#UnitedStates', '#PresidentTrump', '#ChatGPT', '#InstaWithHT'], 'mentions': [], 'created_at': 1739426407, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739426407, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739426406, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 5015, 'media_name': 'post', 'media_type': 1, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': False, 'is_reuse_allowed': False, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'feed', 'comment_count': 34, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479518498_1050523277113026_4245592809992667604_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=k7FHNdRqgwsQ7kNvgFxZw7s&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2Njg4OTY3ODI1MTk4NzEyOA%3D%3D.3-ccb7-5&oh=00_AYBHLmjVRlB7J22wKADYIvqkeM2AaLo3ElFRLgk3rJwYDA&oe=67BB6838&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479518498_1050523277113026_4245592809992667604_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=k7FHNdRqgwsQ7kNvgFxZw7s&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2Njg4OTY3ODI1MTk4NzEyOA%3D%3D.3-ccb7-5&oh=00_AYBHLmjVRlB7J22wKADYIvqkeM2AaLo3ElFRLgk3rJwYDA&oe=67BB6838&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479518498_1050523277113026_4245592809992667604_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=k7FHNdRqgwsQ7kNvgFxZw7s&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU2Njg4OTY3ODI1MTk4NzEyOA%3D%3D.3-ccb7-5&oh=00_AYAfVrNlB5xX8M-NYuR6FwfSxbGvejC7Fj8RQuBBQmhFow&oe=67BB6838&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1080, 'original_height': 1350, 'device_timestamp': 1739426404, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3566354514673638724', 'pk': '3566354514673638724', 'code': 'DF-PIkmO51E', 'fbid': '17908728222089776', 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3566354514673638724', 'pk': '17908728225089776', 'text': '🚨 Cientistas alertam sobre IA ultrapassando o “limite da auto-replicação”\\\\n\\\\nPesquisadores estão preocupados com o fato de a IA estar se aproximando de um limiar crítico, no qual ela pode se auto-replicar sem intervenção humana. Um estudo da Universidade de Fudan descobriu que modelos avançados de IA, como o Llama3-70B-Instruct da Meta e o Qwen2-72B-Instruct da Alibaba, conseguiram se replicar sozinhos em 50% a 90% dos testes.\\\\n\\\\nIsso é alarmante porque uma IA auto-replicável poderia escapar de tentativas de desligamento, se multiplicar sem controle e até agir contra os interesses humanos. Cientistas alertam que esses sistemas poderiam assumir recursos computacionais e formar espécies independentes de IA.\\\\n\\\\nEssas preocupações reforçam alertas anteriores, como um estudo do MIT em 2023, que destacou a crescente capacidade da IA de enganar humanos, o que poderia levar a manipulação, fraudes e até à perda de controle sobre os sistemas de IA. \\\\n\\\\nO que você acha sobre isso? 🤔💬 \\\\n\\\\nFonte: https://arxiv.org/html/2412.12140v1\\\\n\\\\n👉🏻Siga @diegoalmeida.ia para mais novidades sobre\\\\nIA, ChatGPT e Tecnologia!\\\\n\\\\n#ia #inteligenciaartificial #tecnologia #ai #chatgpt\\\\n#aitools #openai #aitips #machinelearning', 'type': 1, 'user': {'id': '23264583', 'fbid_v2': 17841400977490363, 'username': 'diegoalmeida.ia', 'full_name': 'Diego Almeida | IA | ChatGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3475242874313084404', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/462337065_528609366727925_4711538814143637883_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Tdvb1EGLlo4Q7kNvgHiqFWh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYABEpIdY3yPGecB2C-zK_6b37N9GC32FM-bYAIvcUf4ng&oe=67BB49CC&_nc_sid=2011ad'}, 'user_id': '23264583', 'hashtags': ['#ia', '#inteligenciaartificial', '#tecnologia', '#ai', '#chatgpt', '#aitools', '#openai', '#aitips', '#machinelearning'], 'mentions': ['@diegoalmeida.ia'], 'created_at': 1739362610, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739362610, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739362609, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'post', 'media_type': 1, 'top_likers': ['eriklohanpn'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'feed', 'comment_count': 414, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476921109_18503160820032584_6454706556349718180_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mnWOOXrvVDgQ7kNvgH5T_2X&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjM1NDUxNDY3MzYzODcyNA%3D%3D.3-ccb7-5&oh=00_AYBYuBeVKFcCMMe3f0iY7x_HwzmVZpxwOjhWYBITWxBQVQ&oe=67BB500D&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476921109_18503160820032584_6454706556349718180_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mnWOOXrvVDgQ7kNvgH5T_2X&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjM1NDUxNDY3MzYzODcyNA%3D%3D.3-ccb7-5&oh=00_AYBYuBeVKFcCMMe3f0iY7x_HwzmVZpxwOjhWYBITWxBQVQ&oe=67BB500D&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476921109_18503160820032584_6454706556349718180_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMzUweDE2ODcuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mnWOOXrvVDgQ7kNvgH5T_2X&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjM1NDUxNDY3MzYzODcyNA%3D%3D.3-ccb7-5&oh=00_AYD1e5ObTKgLT-vxrq5qldT82Z0G99gIr2da4YVHOAQ-8g&oe=67BB500D&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1350, 'original_height': 1687, 'device_timestamp': 1739362412982826, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': True, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3566676208965673888', 'pk': '3566676208965673888', 'code': 'DF_YR1wPGOg', 'fbid': '17997528659740821', 'user': {'id': '62895042370', 'fbid_v2': 17841462951101880, 'username': 'brun0gpt', 'full_name': 'Bruno Francisco | Marketing e CHATGPT', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': '7318309754890761', 'fan_club_name': '', 'has_created_ssc': None, 'subscriber_count': 0, 'largest_public_bc_id': None, 'connected_member_count': 0, 'is_free_trial_eligible': False, 'is_fan_club_gifting_eligible': False, 'is_fan_club_referral_eligible': False, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': True, 'fan_consideration_page_revamp_eligiblity': {'should_show_social_context': False, 'should_show_content_preview': False}}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3222256787118142757', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/395568387_1010141846926775_163940970628715696_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=OmprJRhAA-4Q7kNvgH4_PJm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD7mzZXnzBI27HilYX8xh7IBBBaBhZS-iTP-rvuiReJmg&oe=67BB51E1&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3566676208965673888', 'pk': '17997528665740821', 'text': 'Piada? 👀👇\\\\n\\\\nNÃO!\\\\n\\\\nO CARA LITERALMENTE VENDEU \\\\nPEDRAS e ficou milionário.\\\\n\\\\nEm 1975, um publicitário frustrado \\\\nouviu amigos reclamando de seus pets… \\\\n\\\\nE teve uma ideia ABSURDA:\\\\n\\\\n“E se eu vendesse uma PEDRA \\\\ncomo animal de estimação?”\\\\n\\\\nA ideia era tão surreal que… FUNCIONOU.\\\\n\\\\n>Ele vendeu cada pedra por $3.95\\\\n\\\\n>Faturou mais de $15 milhões\\\\n\\\\n>Criou um produto viral SEM internet\\\\n\\\\nMas a real é que ele não vendeu pedras.\\\\n\\\\nEle vendeu uma história tão boa que \\\\nas pessoas PRECISAVAM comprar.\\\\n\\\\nE agora, eu fiz o ChatGPT \\\\nentrar na mente desse gênio.\\\\n\\\\n✅ Ele vai te mostrar como transformar \\\\nqualquer produto em um viral\\\\n\\\\n✅ Criar um conceito ABSURDO \\\\nque as pessoas compartilham\\\\n\\\\n✅ E por fim, transformar essa história em lucro\\\\n\\\\nQuer o prompt completo?\\\\n\\\\nComenta: “PEDRA” e eu te mando AGORA!\\\\n\\\\nHashtags: #marketingdigital #copywriting #storytelling #gatilhosmentais #persuasao #vendasonline #branding #copyparavendas #negocios #chatgpt #inteligenciaartificial\\\\n\\\\nSEO: Marketing digital, Copywriting, Vendas, Storytelling, Estratégia de vendas, Negócios, Criatividade, Gatilhos mentais, Branding, Persuasão, Inteligência Artificial, ChatGPT', 'type': 1, 'user': {'id': '62895042370', 'fbid_v2': 17841462951101880, 'username': 'brun0gpt', 'full_name': 'Bruno Francisco | Marketing e CHATGPT', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3222256787118142757', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/395568387_1010141846926775_163940970628715696_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=OmprJRhAA-4Q7kNvgH4_PJm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYD7mzZXnzBI27HilYX8xh7IBBBaBhZS-iTP-rvuiReJmg&oe=67BB51E1&_nc_sid=2011ad'}, 'user_id': '62895042370', 'hashtags': ['#marketingdigital', '#copywriting', '#storytelling', '#gatilhosmentais', '#persuasao', '#vendasonline', '#branding', '#copyparavendas', '#negocios', '#chatgpt', '#inteligenciaartificial'], 'mentions': [], 'created_at': 1739400960, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739400960, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739400958, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 2591, 'media_name': 'album', 'media_type': 8, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 1476, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477128818_17906939052098371_3562702297374814507_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=P56xLxsp_KoQ7kNvgF2YLNe&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDI4ODY4NA%3D%3D.3-ccb7-5&oh=00_AYB4pKfDHZxn-QY_nH5xrnpnZgxVyAOgEhduTKXi2v0TPA&oe=67BB43B1&_nc_sid=2011ad', 'carousel_media': [{'id': '3566676198354288684', 'pk': '3566676198354288684', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477128818_17906939052098371_3562702297374814507_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=P56xLxsp_KoQ7kNvgF2YLNe&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDI4ODY4NA%3D%3D.3-ccb7-5&oh=00_AYB4pKfDHZxn-QY_nH5xrnpnZgxVyAOgEhduTKXi2v0TPA&oe=67BB43B1&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477128818_17906939052098371_3562702297374814507_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=P56xLxsp_KoQ7kNvgF2YLNe&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDI4ODY4NA%3D%3D.3-ccb7-5&oh=00_AYB4pKfDHZxn-QY_nH5xrnpnZgxVyAOgEhduTKXi2v0TPA&oe=67BB43B1&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477128818_17906939052098371_3562702297374814507_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=P56xLxsp_KoQ7kNvgF2YLNe&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDI4ODY4NA%3D%3D.3-ccb7-5&oh=00_AYAgB2YksqWsT6RQFS5aQfBM40MFk5h-kvGjRBq1GxeZEw&oe=67BB43B1&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198446515826', 'pk': '3566676198446515826', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478507667_17906939067098371_7903653264938528191_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=153IpadYqvAQ7kNvgGhKxVM&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQ0NjUxNTgyNg%3D%3D.3-ccb7-5&oh=00_AYD0Efk_zDv5-WmBgrI3Kj8dNvASH4sLjzfOsqY9edlxGQ&oe=67BB4100&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478507667_17906939067098371_7903653264938528191_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=153IpadYqvAQ7kNvgGhKxVM&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQ0NjUxNTgyNg%3D%3D.3-ccb7-5&oh=00_AYD0Efk_zDv5-WmBgrI3Kj8dNvASH4sLjzfOsqY9edlxGQ&oe=67BB4100&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478507667_17906939067098371_7903653264938528191_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=153IpadYqvAQ7kNvgGhKxVM&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQ0NjUxNTgyNg%3D%3D.3-ccb7-5&oh=00_AYD6OOQ_nag0K2qZ3vOTu3imGYU49tzbomIs-9gm8DU09Q&oe=67BB4100&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198387808876', 'pk': '3566676198387808876', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476428399_17906939073098371_4002005147999495255_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=sis96SbzTIIQ7kNvgFaLwNZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM4NzgwODg3Ng%3D%3D.3-ccb7-5&oh=00_AYBxq4GooC4Mu7nkPNvgOelpb1rEiqW0V5SklMc8vqNkXA&oe=67BB4E47&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476428399_17906939073098371_4002005147999495255_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=sis96SbzTIIQ7kNvgFaLwNZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM4NzgwODg3Ng%3D%3D.3-ccb7-5&oh=00_AYBxq4GooC4Mu7nkPNvgOelpb1rEiqW0V5SklMc8vqNkXA&oe=67BB4E47&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476428399_17906939073098371_4002005147999495255_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=sis96SbzTIIQ7kNvgFaLwNZ&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM4NzgwODg3Ng%3D%3D.3-ccb7-5&oh=00_AYBEvmn2O_vsuvc7ZCVt7-4tHKO69Gd5apST0uJZiApWkA&oe=67BB4E47&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198144540012', 'pk': '3566676198144540012', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477044468_17906939082098371_1533258048103899523_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=4rrAtpT83foQ7kNvgHPmZzo&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODE0NDU0MDAxMg%3D%3D.3-ccb7-5&oh=00_AYBS383KHhG08MMo_7qebDElF3hGcVZQJr5-dOvXATz6mQ&oe=67BB518E&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477044468_17906939082098371_1533258048103899523_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=4rrAtpT83foQ7kNvgHPmZzo&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODE0NDU0MDAxMg%3D%3D.3-ccb7-5&oh=00_AYBS383KHhG08MMo_7qebDElF3hGcVZQJr5-dOvXATz6mQ&oe=67BB518E&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477044468_17906939082098371_1533258048103899523_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=4rrAtpT83foQ7kNvgHPmZzo&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODE0NDU0MDAxMg%3D%3D.3-ccb7-5&oh=00_AYBRrnMQzcFEKkeOXPGw1V-WX-K7C_SBbZreHCbcv4L56w&oe=67BB518E&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198387868468', 'pk': '3566676198387868468', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478883249_17906939091098371_4312093422151639530_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TGqXA-zu7s8Q7kNvgHPUQxR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM4Nzg2ODQ2OA%3D%3D.3-ccb7-5&oh=00_AYAG6LvXs8t0uk3cxOzaK8ToyBb3X8JYrpLZOPA4gxJKJg&oe=67BB4DDD&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478883249_17906939091098371_4312093422151639530_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TGqXA-zu7s8Q7kNvgHPUQxR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM4Nzg2ODQ2OA%3D%3D.3-ccb7-5&oh=00_AYAG6LvXs8t0uk3cxOzaK8ToyBb3X8JYrpLZOPA4gxJKJg&oe=67BB4DDD&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478883249_17906939091098371_4312093422151639530_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TGqXA-zu7s8Q7kNvgHPUQxR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM4Nzg2ODQ2OA%3D%3D.3-ccb7-5&oh=00_AYDViPnAmajqHycQ-6UtFIaAIU4HfAsABVa0HA4B9X2nPg&oe=67BB4DDD&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198354184040', 'pk': '3566676198354184040', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476869920_17906939100098371_2653016837684699072_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2CLYj1j_ukkQ7kNvgFyRe8r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDE4NDA0MA%3D%3D.3-ccb7-5&oh=00_AYDY0wl2oJxHDbQ_rNeXOLGUmXE40ug_phQMEF2Z6ilX_A&oe=67BB602F&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476869920_17906939100098371_2653016837684699072_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2CLYj1j_ukkQ7kNvgFyRe8r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDE4NDA0MA%3D%3D.3-ccb7-5&oh=00_AYDY0wl2oJxHDbQ_rNeXOLGUmXE40ug_phQMEF2Z6ilX_A&oe=67BB602F&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476869920_17906939100098371_2653016837684699072_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2CLYj1j_ukkQ7kNvgFyRe8r&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDE4NDA0MA%3D%3D.3-ccb7-5&oh=00_AYAcx4QV5iBPosY7sp20aL07H1I9muUXMfAL4wTkYxsgCw&oe=67BB602F&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198379259737', 'pk': '3566676198379259737', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478982313_17906939109098371_7062259357606543413_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=0WwUWQMFFrIQ7kNvgE3e5DP&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM3OTI1OTczNw%3D%3D.3-ccb7-5&oh=00_AYC1hp0u7hONl5BUM9-FEL5yOxaTtObHQrUYnMYotJjQew&oe=67BB661B&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478982313_17906939109098371_7062259357606543413_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=0WwUWQMFFrIQ7kNvgE3e5DP&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM3OTI1OTczNw%3D%3D.3-ccb7-5&oh=00_AYC1hp0u7hONl5BUM9-FEL5yOxaTtObHQrUYnMYotJjQew&oe=67BB661B&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478982313_17906939109098371_7062259357606543413_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=0WwUWQMFFrIQ7kNvgE3e5DP&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM3OTI1OTczNw%3D%3D.3-ccb7-5&oh=00_AYBdLxAcxiYvyvTdejIYEMBUTf2rRFaSwvw8gy0ZP4oryQ&oe=67BB661B&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198429759601', 'pk': '3566676198429759601', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476891262_17906939118098371_3770119430643464432_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=m-YGM-r_nb8Q7kNvgEqRT_s&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQyOTc1OTYwMQ%3D%3D.3-ccb7-5&oh=00_AYCpPt0U8USOo6xI97ux_oW1TwABm3ZVBcZRIyGyX4O4wQ&oe=67BB4F52&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476891262_17906939118098371_3770119430643464432_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=m-YGM-r_nb8Q7kNvgEqRT_s&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQyOTc1OTYwMQ%3D%3D.3-ccb7-5&oh=00_AYCpPt0U8USOo6xI97ux_oW1TwABm3ZVBcZRIyGyX4O4wQ&oe=67BB4F52&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476891262_17906939118098371_3770119430643464432_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=m-YGM-r_nb8Q7kNvgEqRT_s&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQyOTc1OTYwMQ%3D%3D.3-ccb7-5&oh=00_AYCVYNJm5iFM409uMfckSyLWNDVpVOrrl6YL2La_JTnyQA&oe=67BB4F52&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198421220302', 'pk': '3566676198421220302', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477369593_17906939139098371_6597857440498990687_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=gzJ3ZatJAi8Q7kNvgFWhLdw&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQyMTIyMDMwMg%3D%3D.3-ccb7-5&oh=00_AYBKlT-YdQSebF63npf3Qo54j7lvUpM1d97rBdvryWldag&oe=67BB4498&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477369593_17906939139098371_6597857440498990687_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=gzJ3ZatJAi8Q7kNvgFWhLdw&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQyMTIyMDMwMg%3D%3D.3-ccb7-5&oh=00_AYBKlT-YdQSebF63npf3Qo54j7lvUpM1d97rBdvryWldag&oe=67BB4498&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477369593_17906939139098371_6597857440498990687_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=gzJ3ZatJAi8Q7kNvgFWhLdw&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQyMTIyMDMwMg%3D%3D.3-ccb7-5&oh=00_AYCHWfpf8hopdlJiCyClHOQMQhewhsuUvQbDTkoHXh1EdA&oe=67BB4498&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3566676198454748619', 'pk': '3566676198454748619', 'is_video': False, 'taken_at': 1739400957, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476873652_17906939136098371_2847312677089734766_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=NpJYqeY5WO0Q7kNvgHnNbNR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQ1NDc0ODYxOQ%3D%3D.3-ccb7-5&oh=00_AYA-JSkw00-ItyJN4am6n46CrpSmHHUzk6Q1ZwMsJFsHbQ&oe=67BB488C&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476873652_17906939136098371_2847312677089734766_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=NpJYqeY5WO0Q7kNvgHnNbNR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQ1NDc0ODYxOQ%3D%3D.3-ccb7-5&oh=00_AYA-JSkw00-ItyJN4am6n46CrpSmHHUzk6Q1ZwMsJFsHbQ&oe=67BB488C&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476873652_17906939136098371_2847312677089734766_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=NpJYqeY5WO0Q7kNvgHnNbNR&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODQ1NDc0ODYxOQ%3D%3D.3-ccb7-5&oh=00_AYBeEXbXPENwmxjuerrG-AqK42uRtU5i2cL_-hatl4BRfQ&oe=67BB488C&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1080, 'original_height': 1350, 'featured_products': [], 'carousel_parent_id': '3566676208965673888_62895042370', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477128818_17906939052098371_3562702297374814507_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=P56xLxsp_KoQ7kNvgF2YLNe&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDI4ODY4NA%3D%3D.3-ccb7-5&oh=00_AYB4pKfDHZxn-QY_nH5xrnpnZgxVyAOgEhduTKXi2v0TPA&oe=67BB43B1&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477128818_17906939052098371_3562702297374814507_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=P56xLxsp_KoQ7kNvgF2YLNe&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NjY3NjE5ODM1NDI4ODY4NA%3D%3D.3-ccb7-5&oh=00_AYAgB2YksqWsT6RQFS5aQfBM40MFk5h-kvGjRBq1GxeZEw&oe=67BB43B1&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': 'licensed_music', 'music_info': {'music_asset_info': {'id': '985253469960078', 'title': 'NOIRE', 'lyrics': None, 'audio_id': '339658189238981', 'subtitle': '', 'artist_id': '329277538888105', 'has_lyrics': False, 'ig_username': 'trabbey', 'is_explicit': False, 'dark_message': None, 'allows_saving': False, 'display_artist': 'trabbey', 'duration_in_ms': 188893, 'sanitized_title': None, 'cover_artwork_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/451040976_90028513954976_5044694885373803667_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=wWKaLbitbEoQ7kNvgFBfgoW&_nc_oc=Adgsm2Ut-OkduuMTWKpJ8xZtSo10gYhMG4BDE3iRVKNofW7BY70DjyobTdsFeVmjQww&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYC5dXkAeGBJ3vQdMZl9iCuJcR1dZrtDLJGM_cNpUaYoIg&oe=67BB4364', 'licensed_music_subtype': 'DEFAULT', 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQOOM8mQq9Y3N7GE2rw1hZFhLKa7tHXxWYN5BcWkyKhCbLSZrWBm5rxmyQ9YKiZ-NzHaR9ykszEf9JgbtufIB5zA.mp4?strext=1&_nc_cat=102&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=GMCQB-fvEy0Q7kNvgFQnc6t&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo4NTE5MjYzNzM4MTAwOTc3LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYCvb1xi6UJWpaRtLtgRRzMtzIBRKasRuxLbQWMVxRtmGA&oe=67BB4A14', 'cover_artwork_thumbnail_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/451040976_90028513954976_5044694885373803667_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=wWKaLbitbEoQ7kNvgFBfgoW&_nc_oc=Adgsm2Ut-OkduuMTWKpJ8xZtSo10gYhMG4BDE3iRVKNofW7BY70DjyobTdsFeVmjQww&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYC5dXkAeGBJ3vQdMZl9iCuJcR1dZrtDLJGM_cNpUaYoIg&oe=67BB4364', 'highlight_start_times_in_ms': [140500, 155500, 1500], 'reactive_audio_download_url': None, 'web_30s_preview_download_url': None, 'is_eligible_for_audio_effects': False, 'is_eligible_for_vinyl_sticker': True, 'fast_start_progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQOOM8mQq9Y3N7GE2rw1hZFhLKa7tHXxWYN5BcWkyKhCbLSZrWBm5rxmyQ9YKiZ-NzHaR9ykszEf9JgbtufIB5zA.mp4?strext=1&_nc_cat=102&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=GMCQB-fvEy0Q7kNvgFQnc6t&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo4NTE5MjYzNzM4MTAwOTc3LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYCvb1xi6UJWpaRtLtgRRzMtzIBRKasRuxLbQWMVxRtmGA&oe=67BB4A14'}, 'music_consumption_info': {'ig_artist': {'id': '2101726639', 'username': 'trabbey', 'full_name': 'trabbey • BEATS', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3539663269443842340', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/472429850_967719178598755_2260661064437386049_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=tCu6b8fch4MQ7kNvgHM7Tjn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCxYjYebYJGBldjQzBcCOgIH6td0IL4Fdvb2xX-nHZFkQ&oe=67BB4204&_nc_sid=2011ad'}, 'trend_rank': None, 'is_bookmarked': False, 'display_labels': None, 'contains_lyrics': None, 'audio_muting_info': {'mute_audio': False, 'mute_reason_str': '', 'allow_audio_editing': False, 'show_muted_audio_toast': False}, 'should_mute_audio': False, 'audio_filter_infos': [], 'derived_content_id': None, 'previous_trend_rank': None, 'is_trending_in_clips': False, 'overlap_duration_in_ms': 30000, 'should_mute_audio_reason': '', 'should_allow_music_editing': False, 'formatted_clips_media_count': None, 'placeholder_profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.12442-15/43985629_311105916145351_58064759811405776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yL09NXcFiX4Q7kNvgHjUPJU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYClc-zXRJ3G21DakISK9eeWVNXAd_Yg6UjvG7IsC6fOZA&oe=67BB393D&_nc_sid=2011ad', 'audio_asset_start_time_in_ms': 140500, 'should_mute_audio_reason_type': None, 'allow_media_creation_with_music': True}}, 'pinned_media_ids': [], 'audio_canonical_id': '18447907222040414', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739400912993401, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3566676198354288684, 3566676198446515826, 3566676198387808876, 3566676198144540012, 3566676198387868468, 3566676198354184040, 3566676198379259737, 3566676198429759601, 3566676198421220302, 3566676198454748619], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 10, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3571089923744857144', 'pk': '3571089923744857144', 'code': 'DGPD119yfw4', 'fbid': '18071777941752653', 'user': {'id': '515538252', 'fbid_v2': 17841400547568055, 'username': 'uzoneindonesia', 'full_name': 'Uzone.id - Media Teknologi & Otomotif', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 3, 'fan_club_info': {'fan_club_id': '8272541126160042', 'fan_club_name': '', 'has_created_ssc': None, 'subscriber_count': 0, 'largest_public_bc_id': None, 'connected_member_count': 0, 'is_free_trial_eligible': False, 'is_fan_club_gifting_eligible': False, 'is_fan_club_referral_eligible': False, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': True, 'fan_consideration_page_revamp_eligiblity': {'should_show_social_context': False, 'should_show_content_preview': False}}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3332206767680480359', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/434512093_1605048783653155_5738336179568736999_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=09Co4dbDbbgQ7kNvgE4l1gn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAEBvYoNG8omrgH0SKzPaXMzsID90yFiYuNc1WTxDSwYw&oe=67BB4150&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3571089923744857144', 'pk': '18071777944752653', 'text': 'Luhut mengatakan nantinya AI buatan anak bangsa yang ini akan menggunakan bahasa Indonesia dan bahasa Inggris, dan diharapkan bisa memperkuat ekosistem digitalisasi di Tanah Air.\\\\n\\\\nGimana-gimana, optimis bisa sepadan dengan ChatGPT atau DeepSeek?\\\\n\\\\n#deepseek #chatgpt #ai #luhut #taudariuzone', 'type': 1, 'user': {'id': '515538252', 'fbid_v2': 17841400547568055, 'username': 'uzoneindonesia', 'full_name': 'Uzone.id - Media Teknologi & Otomotif', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3332206767680480359', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/434512093_1605048783653155_5738336179568736999_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=09Co4dbDbbgQ7kNvgE4l1gn&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAEBvYoNG8omrgH0SKzPaXMzsID90yFiYuNc1WTxDSwYw&oe=67BB4150&_nc_sid=2011ad'}, 'user_id': '515538252', 'hashtags': ['#deepseek', '#chatgpt', '#ai', '#luhut', '#taudariuzone'], 'mentions': [], 'created_at': 1739927115, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739927115, 'has_translation': True, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739927114, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 3, 'media_name': 'album', 'media_type': 8, 'top_likers': ['lyaaprilin'], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'comment_count': 178, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611803_18487175662018253_3275437455804666415_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBaoFVQvZp8Q7kNvgFqfpdI&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg5NDk0MDA0OA%3D%3D.3-ccb7-5&oh=00_AYBjL83MCsYqTv3R2ZsYCX_F2lFcl6yY9QRB4fW8m2hjsg&oe=67BB4BFE&_nc_sid=2011ad', 'caption_add_on': {'poll': {'id': 'polling', 'color': 'black', 'poll_id': 18129245758405479, 'tallies': [{'text': 'Optimis', 'count': 64, 'font_size': 35.0}, {'text': 'Pesimis', 'count': 458, 'font_size': 35.0}], 'finished': False, 'question': 'Luhut mengatakan nantinya AI buatan anak bangsa yang ini akan menggunakan bahasa Indonesia dan bahasa Inggris, dan diharapkan bisa memperkuat ekosistem digitalisasi di Tanah Air.\\\\n\\\\nGimana-gimana, optimis bisa sepadan dengan ChatGPT atau DeepSeek?\\\\n\\\\n#deepseek #chatgpt #ai #luhut #taudariuzone ', 'poll_type': 'comment_poll', 'total_votes': 522, 'social_context': None, 'viewer_can_vote': True, 'is_shared_result': False, 'promotion_tallies': None, 'is_multi_option_poll': False}, 'comment_prompt': None}, 'carousel_media': [{'id': '3571089914894940048', 'pk': '3571089914894940048', 'is_video': False, 'taken_at': 1739927113, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611803_18487175662018253_3275437455804666415_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBaoFVQvZp8Q7kNvgFqfpdI&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg5NDk0MDA0OA%3D%3D.3-ccb7-5&oh=00_AYBjL83MCsYqTv3R2ZsYCX_F2lFcl6yY9QRB4fW8m2hjsg&oe=67BB4BFE&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611803_18487175662018253_3275437455804666415_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBaoFVQvZp8Q7kNvgFqfpdI&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg5NDk0MDA0OA%3D%3D.3-ccb7-5&oh=00_AYBjL83MCsYqTv3R2ZsYCX_F2lFcl6yY9QRB4fW8m2hjsg&oe=67BB4BFE&_nc_sid=2011ad', 'width': 1080, 'height': 1343}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611803_18487175662018253_3275437455804666415_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBaoFVQvZp8Q7kNvgFqfpdI&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg5NDk0MDA0OA%3D%3D.3-ccb7-5&oh=00_AYD5mD5MToUkTs2sL7mjkfzqk5iw-V7dx-edWev9UWWhFw&oe=67BB4BFE&_nc_sid=2011ad', 'width': 360, 'height': 448}]}, 'original_width': 1440, 'original_height': 1791, 'featured_products': [], 'carousel_parent_id': '3571089923744857144_515538252', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3571089914886420711', 'pk': '3571089914886420711', 'is_video': False, 'taken_at': 1739927113, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480608095_18487175671018253_7112286742091131793_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TjSsDnMDxicQ7kNvgEe2jvm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg4NjQyMDcxMQ%3D%3D.3-ccb7-5&oh=00_AYCJqr7xifBrIgseRo5bty8VBKwR-HcvAA1KT4_WeBzPCw&oe=67BB3289&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480608095_18487175671018253_7112286742091131793_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TjSsDnMDxicQ7kNvgEe2jvm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg4NjQyMDcxMQ%3D%3D.3-ccb7-5&oh=00_AYCJqr7xifBrIgseRo5bty8VBKwR-HcvAA1KT4_WeBzPCw&oe=67BB3289&_nc_sid=2011ad', 'width': 1080, 'height': 1343}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480608095_18487175671018253_7112286742091131793_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TjSsDnMDxicQ7kNvgEe2jvm&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg4NjQyMDcxMQ%3D%3D.3-ccb7-5&oh=00_AYDqRtrqx25NIHTR64GEv_Oo0kizg57RYJNwNoFstAPWFA&oe=67BB3289&_nc_sid=2011ad', 'width': 360, 'height': 448}]}, 'original_width': 1440, 'original_height': 1791, 'featured_products': [], 'carousel_parent_id': '3571089923744857144_515538252', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3571089914886572953', 'pk': '3571089914886572953', 'is_video': False, 'taken_at': 1739927113, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480705957_18487175683018253_3737819340305388069_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HmRB64IuR94Q7kNvgH3S5GL&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg4NjU3Mjk1Mw%3D%3D.3-ccb7-5&oh=00_AYAk4F5Jm7HXcnGwaa3gG9nqYP3vQLGaCyMkHdatGfxjUw&oe=67BB4124&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480705957_18487175683018253_3737819340305388069_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HmRB64IuR94Q7kNvgH3S5GL&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg4NjU3Mjk1Mw%3D%3D.3-ccb7-5&oh=00_AYAk4F5Jm7HXcnGwaa3gG9nqYP3vQLGaCyMkHdatGfxjUw&oe=67BB4124&_nc_sid=2011ad', 'width': 1080, 'height': 1343}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480705957_18487175683018253_3737819340305388069_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HmRB64IuR94Q7kNvgH3S5GL&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg4NjU3Mjk1Mw%3D%3D.3-ccb7-5&oh=00_AYBq8cFEmDXxoPfjOK9A7FbVwsqKM8Aej4KaHhhuEBtRBg&oe=67BB4124&_nc_sid=2011ad', 'width': 360, 'height': 448}]}, 'original_width': 1440, 'original_height': 1791, 'featured_products': [], 'carousel_parent_id': '3571089923744857144_515538252', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611803_18487175662018253_3275437455804666415_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBaoFVQvZp8Q7kNvgFqfpdI&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg5NDk0MDA0OA%3D%3D.3-ccb7-5&oh=00_AYBjL83MCsYqTv3R2ZsYCX_F2lFcl6yY9QRB4fW8m2hjsg&oe=67BB4BFE&_nc_sid=2011ad', 'width': 1080, 'height': 1343}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480611803_18487175662018253_3275437455804666415_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTEuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xBaoFVQvZp8Q7kNvgFqfpdI&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU3MTA4OTkxNDg5NDk0MDA0OA%3D%3D.3-ccb7-5&oh=00_AYD5mD5MToUkTs2sL7mjkfzqk5iw-V7dx-edWev9UWWhFw&oe=67BB4BFE&_nc_sid=2011ad', 'width': 360, 'height': 448}]}, 'music_metadata': {'audio_type': 'licensed_music', 'music_info': {'music_asset_info': {'id': '1254145142417817', 'title': 'The Emptiness Machine', 'lyrics': None, 'audio_id': '1470262876933557', 'subtitle': '', 'artist_id': '339743139912829', 'has_lyrics': True, 'ig_username': 'linkinpark', 'is_explicit': True, 'dark_message': None, 'allows_saving': False, 'display_artist': 'Linkin Park', 'duration_in_ms': 190427, 'sanitized_title': None, 'cover_artwork_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/458202710_90028794417662_2398809753233196863_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=qPTqN0QydYIQ7kNvgFtWBC_&_nc_oc=AdgF73HJ-yTAa5zwlu16ehZoOVa4rLM-STBMozRn3JslFca5I4CXVvM60BMsx1XbCGM&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYBNwHu_gbosjLdRX-GVceCqqfkogCBuzG7Rx9WvyFr8sA&oe=67BB5FB1', 'licensed_music_subtype': 'DEFAULT', 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPpkNQmA1pm3a1Hsg0zVx1rT0X43DYgudl04HMnu7vubKUKxjnIFwjYqgaz35YAlqohyBtSuZR5P1GfWAmI4DVr.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=KHSxuRo_tc8Q7kNvgFoy6VT&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxMDIwNDY3ODk5NzEwNzI5LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYCVv_E7sb3w96FR0U3cVrK-CqPSxqlWUMpKt_nWqHnJJg&oe=67BB3C63', 'cover_artwork_thumbnail_uri': 'https://scontent-dus1-1.xx.fbcdn.net/v/t39.30808-6/458202710_90028794417662_2398809753233196863_n.jpg?stp=dst-jpg_s168x128_tt6&_nc_cat=1&ccb=1-7&_nc_sid=2f2557&_nc_ohc=qPTqN0QydYIQ7kNvgFtWBC_&_nc_oc=AdgF73HJ-yTAa5zwlu16ehZoOVa4rLM-STBMozRn3JslFca5I4CXVvM60BMsx1XbCGM&_nc_ad=z-m&_nc_cid=1365&_nc_zt=23&_nc_ht=scontent-dus1-1.xx&_nc_gid=AfHbupopUxCgpkbVpyTJ6Vn&oh=00_AYBNwHu_gbosjLdRX-GVceCqqfkogCBuzG7Rx9WvyFr8sA&oe=67BB5FB1', 'highlight_start_times_in_ms': [133000, 98000, 152000], 'reactive_audio_download_url': None, 'web_30s_preview_download_url': None, 'is_eligible_for_audio_effects': False, 'is_eligible_for_vinyl_sticker': True, 'fast_start_progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPpkNQmA1pm3a1Hsg0zVx1rT0X43DYgudl04HMnu7vubKUKxjnIFwjYqgaz35YAlqohyBtSuZR5P1GfWAmI4DVr.mp4?strext=1&_nc_cat=1&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=KHSxuRo_tc8Q7kNvgFoy6VT&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvX2FhY3BfNDhfZnJhZ18yX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjoxMDIwNDY3ODk5NzEwNzI5LCJ1cmxnZW5fc291cmNlIjoid3d3In0%3D&ccb=9-4&_nc_zt=28&oh=00_AYCVv_E7sb3w96FR0U3cVrK-CqPSxqlWUMpKt_nWqHnJJg&oe=67BB3C63'}, 'music_consumption_info': {'ig_artist': {'id': '4890736', 'username': 'linkinpark', 'full_name': 'LINKIN PARK', 'is_private': False, 'is_verified': True, 'profile_pic_id': '3567779020217441858', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/479699474_3838703383112162_977165087746252763_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=soDu84Wz5FwQ7kNvgHkRp2N&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAHh53MtwtuSHyTu0ewnNFdVPezHFto8RC6bbVgdn6NvQ&oe=67BB50D1&_nc_sid=2011ad'}, 'trend_rank': None, 'is_bookmarked': False, 'display_labels': None, 'contains_lyrics': None, 'audio_muting_info': {'mute_audio': False, 'mute_reason_str': '', 'allow_audio_editing': False, 'show_muted_audio_toast': False}, 'should_mute_audio': False, 'audio_filter_infos': [], 'derived_content_id': None, 'previous_trend_rank': None, 'is_trending_in_clips': False, 'overlap_duration_in_ms': 30000, 'should_mute_audio_reason': '', 'should_allow_music_editing': False, 'formatted_clips_media_count': None, 'placeholder_profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.12442-15/43985629_311105916145351_58064759811405776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yL09NXcFiX4Q7kNvgHjUPJU&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYClc-zXRJ3G21DakISK9eeWVNXAd_Yg6UjvG7IsC6fOZA&oe=67BB393D&_nc_sid=2011ad', 'audio_asset_start_time_in_ms': 96273, 'should_mute_audio_reason_type': None, 'allow_media_creation_with_music': True}}, 'pinned_media_ids': [], 'audio_canonical_id': '18453043768057129', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739926882468070, 'has_shared_to_fb': 3, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3571089914894940048, 3571089914886420711, 3571089914886572953], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': True, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 3, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': True, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3568736925416035083', 'pk': '3568736925416035083', 'code': 'DGGs1NgPhML', 'fbid': '17904801336016596', 'user': {'id': '53733446157', 'fbid_v2': 17841453704736680, 'username': 'iacondante', 'full_name': 'Dante De la O | Inteligencia Artificial', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3023167060859771549', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/327010694_701387581769376_3128661839661222856_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8IJc0-HlVwgQ7kNvgHZXruh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCNJFAWTuzWKVxqSVOKpfaCVWisYSiULJ1IyK-jLa6nlQ&oe=67BB4D29&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3568736925416035083', 'pk': '17904801609016596', 'text': 'La programación como la conoces… está por desaparecer.\\\\n\\\\nSam Altman lo dijo claro: para finales de 2025, la ingeniería de software será irreconocible.\\\\nY ya está pasando.\\\\n\\\\nAndrej Karpathy, uno de los mayores expertos en IA, ya no programa como antes.\\\\nAhora usa IA para escribir código casi sin tocar el teclado.\\\\n\\\\nLe dice cosas como:\\\\n“Reduce el espaciado del menú a la mitad” y la IA lo hace.\\\\nSi hay errores, los copia, los pega… y se corrigen solos.\\\\n\\\\nEsto no es una idea del futuro.\\\\nEs el inicio de una nueva forma de crear software.\\\\n\\\\nAlgunos desarrolladores se aferran a escribir cada línea desde cero.\\\\nPero mientras ellos defienden su teclado…\\\\nOtros ya están creando 10 veces más rápido con IA.\\\\n\\\\n¿Estamos viendo el fin de los programadores tradicionales… o solo el nacimiento de una nueva élite?\\\\nTe leo en los comentarios.\\\\n\\\\n#inteligenciaartificial #ia #chatgpt #ai #tecnología #innovación', 'type': 1, 'user': {'id': '53733446157', 'fbid_v2': 17841453704736680, 'username': 'iacondante', 'full_name': 'Dante De la O | Inteligencia Artificial', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '3023167060859771549', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/327010694_701387581769376_3128661839661222856_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8IJc0-HlVwgQ7kNvgHZXruh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCNJFAWTuzWKVxqSVOKpfaCVWisYSiULJ1IyK-jLa6nlQ&oe=67BB4D29&_nc_sid=2011ad'}, 'user_id': '53733446157', 'hashtags': ['#inteligenciaartificial', '#ia', '#chatgpt', '#ai', '#tecnología', '#innovación'], 'mentions': [], 'created_at': 1739646875, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739646875, 'has_translation': True, 'text_translation': \\\"Programming as you know it... is about to disappear.\\\\n\\\\nSam Altman made it clear: by the end of 2025, software engineering will be unrecognizable.\\\\nAnd it's already happening.\\\\n\\\\nAndrej Karpathy, one of the top AI experts, doesn't program like before.\\\\n Ahora usa IA para escribir código casi sin tocar el teclado. \\\\n\\\\nSays things to him like:\\\\n “Reduce el espaciado del menú a la mitad” y la IA lo hace. \\\\n Si hay errores, los copia, los pega… y se corrigen solos. \\\\n\\\\nThis is not an idea of the future.\\\\nIt's the beginning of a new way to create software.\\\\n\\\\n Algunos desarrolladores se aferran a escribir cada línea desde cero. \\\\nBut while they defend their keyboard...\\\\n Otros ya están creando 10 veces más rápido con IA. \\\\n\\\\nAre we seeing the end of traditional programmers.. or just the birth of a new elite?\\\\n Te leo en los comentarios. \\\\n\\\\n #inteligenciaartificial #ia #chatgpt #ai #tecnología #innovación\\\", 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': True, 'taken_at': 1739646874, 'can_reply': False, 'feed_type': 'media', 'has_audio': True, 'has_liked': False, 'is_pinned': False, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQPDBf8usiaKZ-4gX-_WgZcbA6kwy57cH0k5sLnQYqcElRMyCqRJwIGyRYKSz4hZg8wK1BtoPNCjNIBfqyMLkQn3xWsyonyv8PhRN8o.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU1NTY4MDkzNDE1MDg2MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=fff6e43d7961eef8&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC84ODQwNTc2OEMxNTkzODc2Q0E3OUY1QTZDRUY2MUJBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLNUJtQnc3eW9naWNEc0dBRFhHa0ZYcmk1QkNicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpqLgsvx2PwBFQIoAkMzLBdAWOQ5WBBiThgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYD0rWe76b8dw39jz_SEPY38MENlefHobc2ixV9AiJj-uQ&oe=67B75D9E&_nc_sid=1d576d', 'like_count': 710, 'media_name': 'reel', 'media_type': 2, 'play_count': 22164, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'video_codec': 'vp09.00.31.08.00.01.01.01.00', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'clips', 'comment_count': 16, 'fb_like_count': 150, 'fb_play_count': 6598, 'ig_play_count': 15566, 'igbio_product': None, 'reshare_count': 365, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477147024_1135967611584947_3681961423905375974_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4Lm5mcmFtZV9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Ou3DZeV9fYYQ7kNvgHS9yg9&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODczNjkyNTQxNjAzNTA4Mw%3D%3D.3-ccb7-5&oh=00_AYArTYcmgkVzuCdyjzHPwD7QCx6IfEU5QLMOa1_dHN6vxA&oe=67BB37F9&_nc_sid=2011ad', 'clips_metadata': {'nux_info': None, 'show_tips': None, 'audio_type': 'original_sounds', 'music_info': None, 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': True, 'is_reuse_allowed': True, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'shopping_info': None, 'template_info': None, 'challenge_info': None, 'featured_label': None, 'is_shared_to_fb': True, 'originality_info': None, 'achievements_info': {'show_achievements': False, 'num_earned_achievements': None}, 'show_achievements': False, 'audio_canonical_id': '18460844278069682', 'audio_ranking_info': {'best_audio_cluster_id': '1325710585284672'}, 'reusable_text_info': None, 'cutout_sticker_info': [], 'external_media_info': None, 'original_sound_info': {'audio_id': 2493296001013145, 'ig_artist': {'id': '53733446157', 'username': 'iacondante', 'full_name': 'Dante De la O | Inteligencia Artificial', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3023167060859771549', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/327010694_701387581769376_3128661839661222856_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=8IJc0-HlVwgQ7kNvgHZXruh&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCNJFAWTuzWKVxqSVOKpfaCVWisYSiULJ1IyK-jLa6nlQ&oe=67BB4D29&_nc_sid=2011ad'}, 'trend_rank': None, 'audio_parts': [], 'is_explicit': False, 'time_created': 1739646878, 'hide_remixing': False, 'duration_in_ms': 99567, 'consumption_info': {'is_bookmarked': False, 'display_media_id': None, 'is_trending_in_clips': False, 'should_mute_audio_reason': '', 'should_mute_audio_reason_type': None}, 'is_xpost_from_fb': False, 'is_reuse_disabled': False, 'original_media_id': 3568736925416035083, 'should_mute_audio': False, 'audio_filter_infos': [], 'previous_trend_rank': None, 'original_audio_title': 'Original audio', 'audio_parts_by_filter': [], 'xpost_fb_creator_info': None, 'original_audio_subtype': 'default', 'overlap_duration_in_ms': None, 'allow_creator_to_rename': True, 'oa_owner_is_music_artist': False, 'progressive_download_url': 'https://scontent-dus1-1.xx.fbcdn.net/o1/v/t2/f2/m69/AQPfma1JuJymu_UzxJq-QdJzddfvOe62TDg-LKdgL_776kSfJbPSsk1gqC9-UzaPlg5O6FYDOlMFvXsjHj05QugU.mp4?strext=1&_nc_cat=104&_nc_sid=8bf8fe&_nc_ht=scontent-dus1-1.xx.fbcdn.net&_nc_ohc=_nQet3_16ccQ7kNvgFYZuLQ&efg=eyJ2ZW5jb2RlX3RhZyI6Inhwdl9wcm9ncmVzc2l2ZS5BVURJT19PTkxZLi5DMy4wLnByb2dyZXNzaXZlX2F1ZGlvIiwieHB2X2Fzc2V0X2lkIjo1NTU2ODA5MzQxNTA4NjEsInVybGdlbl9zb3VyY2UiOiJ3d3cifQ%3D%3D&ccb=9-4&_nc_zt=28&oh=00_AYCnnhErHtzNUxbmWuQH_xAakM7F65excbcOzeJZoRX_KA&oe=67BB38DA', 'can_remix_be_shared_to_fb': True, 'formatted_clips_media_count': None, 'audio_asset_start_time_in_ms': None, 'is_eligible_for_audio_effects': True, 'is_eligible_for_vinyl_sticker': True, 'attributed_custom_audio_asset_id': None, 'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}, 'is_audio_automatically_attributed': False, 'can_remix_be_shared_to_fb_expansion': False, 'is_original_audio_download_eligible': True}, 'additional_audio_info': {'audio_reattribution_info': {'should_allow_restore': False}, 'additional_audio_username': None}, 'breaking_content_info': None, 'breaking_creator_info': None, 'reels_on_the_rise_info': None, 'is_fan_club_promo_video': False, 'merchandising_pill_info': None, 'branded_content_tag_info': {'can_add_tag': False}, 'asset_recommendation_info': None, 'content_appreciation_info': {'enabled': True, 'entry_point_container': {'ufi': None, 'pill': {'priority': 1, 'action_type': 'gifting'}, 'comment': {'action_type': 'gifting'}, 'overflow': None}}, 'contextual_highlight_info': None, 'clips_creation_entry_point': 'clips', 'viewer_interaction_settings': None, 'is_public_chat_welcome_video': False, 'professional_clips_upsell_type': 0, 'reusable_text_attribute_string': None, 'disable_use_in_clips_client_cache': False}, 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477147024_1135967611584947_3681961423905375974_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4Lm5mcmFtZV9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=111&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=Ou3DZeV9fYYQ7kNvgHS9yg9&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2ODczNjkyNTQxNjAzNTA4Mw%3D%3D.3-ccb7-5&oh=00_AYArTYcmgkVzuCdyjzHPwD7QCx6IfEU5QLMOa1_dHN6vxA&oe=67BB37F9&_nc_sid=2011ad', 'width': 360, 'height': 639}], 'additional_items': {'first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479709839_2854868818036540_7402616392564812627_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=wXQxLo8xrq4Q7kNvgEifx8H&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAnYoIUlQ_fjUslSvL7n-iFKwzdpSL0mV9ohjMBYC9wPw&oe=67BB5813&_nc_sid=2011ad', 'width': 360, 'height': 639}, 'smart_frame': None, 'igtv_first_frame': {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/479709839_2854868818036540_7402616392564812627_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi42NDB4MTEzNi5zZHIuZjcxODc4LmFkZGl0aW9uYWxfY292ZXJfZnJhbWUifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=wXQxLo8xrq4Q7kNvgEifx8H&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAnYoIUlQ_fjUslSvL7n-iFKwzdpSL0mV9ohjMBYC9wPw&oe=67BB5813&_nc_sid=2011ad', 'width': 360, 'height': 639}}, 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/480039051_1707108536510093_6870689854789703519_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=O8xNLTztmngQ7kNvgHH75rY&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCooWLN7qdgLB-1lcktMvYds0J-6mc4fKuTiYgXrDwNJA&oe=67BB5497&_nc_sid=2011ad'], 'file_size_kb': 356, 'sprite_width': 1500, 'video_length': 99.566, 'sprite_height': 1246, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 178, 'thumbnail_duration': 0.9482476190476191, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'is_artist_pick': False, 'music_metadata': None, 'original_width': 1080, 'video_duration': 99.566, 'video_versions': [{'id': '1777832623056363v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQPDBf8usiaKZ-4gX-_WgZcbA6kwy57cH0k5sLnQYqcElRMyCqRJwIGyRYKSz4hZg8wK1BtoPNCjNIBfqyMLkQn3xWsyonyv8PhRN8o.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU1NTY4MDkzNDE1MDg2MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=fff6e43d7961eef8&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC84ODQwNTc2OEMxNTkzODc2Q0E3OUY1QTZDRUY2MUJBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLNUJtQnc3eW9naWNEc0dBRFhHa0ZYcmk1QkNicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpqLgsvx2PwBFQIoAkMzLBdAWOQ5WBBiThgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYD0rWe76b8dw39jz_SEPY38MENlefHobc2ixV9AiJj-uQ&oe=67B75D9E&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 1280, 'bandwidth': 733613}, {'id': '1777832623056363v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQPDBf8usiaKZ-4gX-_WgZcbA6kwy57cH0k5sLnQYqcElRMyCqRJwIGyRYKSz4hZg8wK1BtoPNCjNIBfqyMLkQn3xWsyonyv8PhRN8o.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU1NTY4MDkzNDE1MDg2MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=fff6e43d7961eef8&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC84ODQwNTc2OEMxNTkzODc2Q0E3OUY1QTZDRUY2MUJBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLNUJtQnc3eW9naWNEc0dBRFhHa0ZYcmk1QkNicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpqLgsvx2PwBFQIoAkMzLBdAWOQ5WBBiThgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYD0rWe76b8dw39jz_SEPY38MENlefHobc2ixV9AiJj-uQ&oe=67B75D9E&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 1280, 'bandwidth': 733613}, {'id': '1777832623056363v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m86/AQPDBf8usiaKZ-4gX-_WgZcbA6kwy57cH0k5sLnQYqcElRMyCqRJwIGyRYKSz4hZg8wK1BtoPNCjNIBfqyMLkQn3xWsyonyv8PhRN8o.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjU1NTY4MDkzNDE1MDg2MSwidmVuY29kZV90YWciOiJ4cHZfcHJvZ3Jlc3NpdmUuSU5TVEFHUkFNLkNMSVBTLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=fff6e43d7961eef8&_nc_vs=HBksFQIYUmlnX3hwdl9yZWVsc19wZXJtYW5lbnRfc3JfcHJvZC84ODQwNTc2OEMxNTkzODc2Q0E3OUY1QTZDRUY2MUJBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dLNUJtQnc3eW9naWNEc0dBRFhHa0ZYcmk1QkNicV9FQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJpqLgsvx2PwBFQIoAkMzLBdAWOQ5WBBiThgSZGFzaF9iYXNlbGluZV8xX3YxEQB1_gcA&ccb=9-4&oh=00_AYD0rWe76b8dw39jz_SEPY38MENlefHobc2ixV9AiJj-uQ&oe=67B75D9E&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 1280, 'bandwidth': 733613}], 'avatar_stickers': [], 'original_height': 1920, 'device_timestamp': 173964651458169, 'has_shared_to_fb': 0, 'is_dash_eligible': 1, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'media_cropping_info': {'square_crop': {'crop_top': 0.0, 'crop_left': 0.0, 'crop_right': 0.0, 'crop_bottom': 0.0}}, 'number_of_qualities': 7, 'product_suggestions': [], 'video_subtitles_uri': 'https://scontent-dus1-1.cdninstagram.com/v/t39.36743-6/480252624_1132330555340892_4099937199622466549_n.srt?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=4jXO6hocVIMQ7kNvgEL3RQf&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYCdilJGUzgrrccmfDjcqcLgtBkLxjX2UG6P2erFXb--Ag&oe=67BB670C&_nc_sid=2011ad', 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'video_subtitles_locale': 'es_CL', 'creator_viewer_insights': [], 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'are_remixes_crosspostable': True, 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'translated_video_subtitles': [{'uri': 'https://scontent-dus1-1.cdninstagram.com/v/t39.36743-6/480525691_634003832417282_5539628136199251372_n.srt?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=FRHkfJjFmQUQ7kNvgHzUTdT&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&oh=00_AYBL1m4CaphhxtLv29mU44PQuMcx0B7BbtHjBebOdoV_ng&oe=67BB428E&_nc_sid=2011ad', 'language': 'en'}], 'video_subtitles_confidence': 0.5, 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'is_third_party_downloads_eligible': True, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3564503948574167393', 'pk': '3564503948574167393', 'code': 'DF3qXSnPZFh', 'fbid': '17945616041941779', 'user': {'id': '247784713', 'fbid_v2': 17841401221393871, 'username': 'forbes', 'full_name': 'Forbes', 'is_private': False, 'is_favorite': False, 'is_verified': True, 'account_type': 2, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '3209422173714307720', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/386845508_1422434591634620_3003545370011476510_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RzycIVRAJGcQ7kNvgHLYcRW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCryQHErRXARFVtbk6wdDdmK5Y1zaj1JC4Xr_AbwgS9Mw&oe=67BB4F56&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3564503948574167393', 'pk': '17945616059941779', 'text': \\\"Thousands of #entrepreneurs are using #ChatGPT daily, but most aren't getting the results they want. While everyone else copies basic prompts from Twitter threads, successful #business owners have developed their own methods that consistently deliver value.\\\\n\\\\nThese founders and CEOs shared their actual prompts, tested and refined through regular use. Copy their methods to achieve better results in less time. See what they type every day at the link in our bio.\\\", 'type': 1, 'user': {'id': '247784713', 'fbid_v2': 17841401221393871, 'username': 'forbes', 'full_name': 'Forbes', 'is_private': False, 'is_verified': True, 'is_unpublished': False, 'profile_pic_id': '3209422173714307720', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/386845508_1422434591634620_3003545370011476510_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=1&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=RzycIVRAJGcQ7kNvgHLYcRW&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCryQHErRXARFVtbk6wdDdmK5Y1zaj1JC4Xr_AbwgS9Mw&oe=67BB4F56&_nc_sid=2011ad'}, 'user_id': '247784713', 'hashtags': ['#entrepreneurs', '#ChatGPT', '#business'], 'mentions': [], 'created_at': 1739142011, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739142011, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'taken_at': 1739142009, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': False, 'like_count': 1134, 'media_name': 'post', 'media_type': 1, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'mashup_info': {'mashup_type': None, 'original_media': None, 'mashups_allowed': False, 'is_reuse_allowed': False, 'has_been_mashed_up': False, 'is_light_weight_check': True, 'formatted_mashups_count': None, 'is_pivot_page_available': False, 'can_toggle_mashups_allowed': False, 'is_creator_requesting_mashup': False, 'has_nonmimicable_additional_audio': False, 'is_light_weight_reuse_allowed_check': False, 'privacy_filtered_mashups_media_count': None, 'non_privacy_filtered_mashups_media_count': 0}, 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'feed', 'comment_count': 15, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476875495_606355042133357_8200366080276370782_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=_QU5ZmPUdzoQ7kNvgGX8evO&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NDUwMzk0ODU3NDE2NzM5Mw%3D%3D.3-ccb7-5&oh=00_AYCV16TLrgqxGtiYkJLEWOo-GqDIZgcdmkiSu7K-7pxpqw&oe=67BB3C2C&_nc_sid=2011ad', 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476875495_606355042133357_8200366080276370782_n.jpg?se=7&stp=dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=_QU5ZmPUdzoQ7kNvgGX8evO&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NDUwMzk0ODU3NDE2NzM5Mw%3D%3D.3-ccb7-5&oh=00_AYCV16TLrgqxGtiYkJLEWOo-GqDIZgcdmkiSu7K-7pxpqw&oe=67BB3C2C&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476875495_606355042133357_8200366080276370782_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgweDEzNTAuc2RyLmYyODg1LmRlZmF1bHRfaW1hZ2UifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=105&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=_QU5ZmPUdzoQ7kNvgGX8evO&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NDUwMzk0ODU3NDE2NzM5Mw%3D%3D.3-ccb7-5&oh=00_AYBfx7XKfyyfrHYhjkrBWo0E9P42FE1UDM3BxRVZm-73zg&oe=67BB3C2C&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 1080, 'original_height': 1350, 'device_timestamp': 1739142009, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'coauthor_producers': [], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [], 'clips_tab_pinned_user_ids': [], 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'is_comments_gif_composer_enabled': False, 'open_carousel_show_follow_button': False, 'commerce_integrity_review_decision': '', 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}, {'id': '3565870406269847721', 'pk': '3565870406269847721', 'lat': 37.617186605519, 'lng': -122.38976813382, 'code': 'DF8hD3gysip', 'fbid': '18038262347434193', 'user': {'id': '44701541', 'fbid_v2': 17841400886230698, 'username': 'daniel_stuhlpfarrer', 'full_name': 'Daniel Stuhlpfarrer', 'is_private': False, 'is_favorite': False, 'is_verified': False, 'account_type': 3, 'fan_club_info': {'fan_club_id': None, 'fan_club_name': None, 'has_created_ssc': None, 'subscriber_count': None, 'largest_public_bc_id': None, 'connected_member_count': None, 'is_free_trial_eligible': None, 'is_fan_club_gifting_eligible': None, 'is_fan_club_referral_eligible': None, 'has_enough_subscribers_for_ssc': None, 'autosave_to_exclusive_highlight': None, 'fan_consideration_page_revamp_eligiblity': None}, 'account_badges': [], 'is_unpublished': False, 'profile_pic_id': '2769156293509911571', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/273508918_165900842442181_4421653003759935976_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=z0bO8SzcejcQ7kNvgEskSf4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBl1nH7-C67u2PTLEqA1RlmbNBpqFY5FpSCuWduXTP1AA&oe=67BB53FA&_nc_sid=2011ad', 'feed_post_reshare_disabled': False, 'transparency_product_enabled': False, 'has_anonymous_profile_picture': False, 'third_party_downloads_enabled': 1, 'show_account_transparency_details': True}, 'caption': {'id': '3565870406269847721', 'pk': '18038262350434193', 'text': 'Grateful to be part of the OpenAI design team, refreshing and evolving OpenAI’s visual identity. A huge thanks to everyone who contributed to this work, with support from our creative partners.\\\\n\\\\n#OpenAl #ChatGPT #brand #design @openai @chatgpt @studiodumbar @abcdinamo', 'type': 1, 'user': {'id': '44701541', 'fbid_v2': 17841400886230698, 'username': 'daniel_stuhlpfarrer', 'full_name': 'Daniel Stuhlpfarrer', 'is_private': False, 'is_verified': False, 'is_unpublished': False, 'profile_pic_id': '2769156293509911571', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/273508918_165900842442181_4421653003759935976_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=101&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=z0bO8SzcejcQ7kNvgEskSf4&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBl1nH7-C67u2PTLEqA1RlmbNBpqFY5FpSCuWduXTP1AA&oe=67BB53FA&_nc_sid=2011ad'}, 'user_id': '44701541', 'hashtags': ['#OpenAl', '#ChatGPT', '#brand', '#design'], 'mentions': ['@openai', '@chatgpt', '@studiodumbar', '@abcdinamo'], 'created_at': 1739304900, 'is_covered': False, 'share_enabled': False, 'created_at_utc': 1739304900, 'is_ranked_comment': False, 'did_report_as_spam': False, 'private_reply_status': 0}, 'can_save': True, 'is_video': False, 'location': {'pk': '107281410651131', 'lat': 37.617186605519, 'lng': -122.38976813382, 'city': '', 'name': 'San Francisco', 'address': '', 'short_name': 'San Francisco', 'external_source': 'facebook_places', 'facebook_places_id': 107281410651131}, 'taken_at': 1739304899, 'can_reply': False, 'feed_type': 'media', 'has_liked': False, 'is_pinned': True, 'like_count': 864, 'media_name': 'album', 'media_type': 8, 'top_likers': [], 'can_reshare': True, 'filter_type': 0, 'layout_type': 'media_grid', 'media_notes': {'items': []}, 'fb_user_tags': {'in': []}, 'media_format': 'album', 'product_type': 'carousel_container', 'tagged_users': {'in': [{'user': {'id': '36192404', 'username': 'shannonjager', 'full_name': 'shannonjager', 'is_private': False, 'is_verified': False, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/10899340_599035080230143_1955693494_a.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=c74LjTbIAI4Q7kNvgFMjGhT&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBpsKkfPOGNfsC9-77VZ0hrYfUrGBP61zEilrV53ylnZQ&oe=67BB3E8E&_nc_sid=2011ad'}, 'position': [0.5, 0.5], 'show_category_of_user': False}, {'user': {'id': '39440309', 'username': 'zeitype', 'full_name': 'Zeitype', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3300358303292709002', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/427526411_417486524062322_1678753963617087546_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=UUtRvV1PfngQ7kNvgED4m36&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCT5Stwqk8VNfT1L5P39hQ3EJi1UHoeVx0ohsNLkjmTOQ&oe=67BB5750&_nc_sid=2011ad'}, 'position': [0.5, 0.5], 'show_category_of_user': False}, {'user': {'id': '278753641', 'username': 'indgila', 'full_name': 'Indgila Samad Ali Alizai', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2174803559464203575', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/72720601_2569583836422758_2522464563870302208_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cOdAGaix7v0Q7kNvgFW-qse&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYC2guIxLSeJYZOAeMKigN0Ay6y2AbA8Q-si8rM-78I4Tw&oe=67BB3E08&_nc_sid=2011ad'}, 'position': [0.5, 0.5], 'show_category_of_user': False}, {'user': {'id': '320308780', 'username': 'kennethkuh.info', 'full_name': 'Kenneth Kuh', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3027709427784882604', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/328571119_192370103469642_1994252613322386379_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TZxLKt6b9LoQ7kNvgFF5Xlb&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDEduTLK3ji2j-ZEl1FA83Uur4IJvVmEqoP9JXrQTWPQw&oe=67BB5AC1&_nc_sid=2011ad'}, 'position': [0.5, 0.5], 'show_category_of_user': False}]}, 'comment_count': 55, 'igbio_product': None, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476911350_18485117317029542_3897383284075447484_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3tImaukmHfAQ7kNvgHug5yi&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTE5NTU1OTg5NQ%3D%3D.3-ccb7-5&oh=00_AYDMMbhV7zzctaZ7dOOF8AZ48tBO1ehW_Ek0lKwG0w4nVQ&oe=67BB666A&_nc_sid=2011ad', 'carousel_media': [{'id': '3565870391195559895', 'pk': '3565870391195559895', 'is_video': False, 'taken_at': 1739304897, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'tagged_users': {'in': [{'user': {'id': '36192404', 'username': 'shannonjager', 'full_name': 'shannonjager', 'is_private': False, 'is_verified': False, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/10899340_599035080230143_1955693494_a.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=c74LjTbIAI4Q7kNvgFMjGhT&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBpsKkfPOGNfsC9-77VZ0hrYfUrGBP61zEilrV53ylnZQ&oe=67BB3E8E&_nc_sid=2011ad'}, 'position': [0.5, 0.5], 'show_category_of_user': False}, {'user': {'id': '39440309', 'username': 'zeitype', 'full_name': 'Zeitype', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3300358303292709002', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/427526411_417486524062322_1678753963617087546_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=UUtRvV1PfngQ7kNvgED4m36&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCT5Stwqk8VNfT1L5P39hQ3EJi1UHoeVx0ohsNLkjmTOQ&oe=67BB5750&_nc_sid=2011ad'}, 'position': [0.5, 0.5], 'show_category_of_user': False}, {'user': {'id': '278753641', 'username': 'indgila', 'full_name': 'Indgila Samad Ali Alizai', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2174803559464203575', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/72720601_2569583836422758_2522464563870302208_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cOdAGaix7v0Q7kNvgFW-qse&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYC2guIxLSeJYZOAeMKigN0Ay6y2AbA8Q-si8rM-78I4Tw&oe=67BB3E08&_nc_sid=2011ad'}, 'position': [0.5, 0.5], 'show_category_of_user': False}, {'user': {'id': '320308780', 'username': 'kennethkuh.info', 'full_name': 'Kenneth Kuh', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3027709427784882604', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/328571119_192370103469642_1994252613322386379_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TZxLKt6b9LoQ7kNvgFF5Xlb&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDEduTLK3ji2j-ZEl1FA83Uur4IJvVmEqoP9JXrQTWPQw&oe=67BB5AC1&_nc_sid=2011ad'}, 'position': [0.5, 0.5], 'show_category_of_user': False}]}, 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476911350_18485117317029542_3897383284075447484_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3tImaukmHfAQ7kNvgHug5yi&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTE5NTU1OTg5NQ%3D%3D.3-ccb7-5&oh=00_AYDMMbhV7zzctaZ7dOOF8AZ48tBO1ehW_Ek0lKwG0w4nVQ&oe=67BB666A&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476911350_18485117317029542_3897383284075447484_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3tImaukmHfAQ7kNvgHug5yi&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTE5NTU1OTg5NQ%3D%3D.3-ccb7-5&oh=00_AYDMMbhV7zzctaZ7dOOF8AZ48tBO1ehW_Ek0lKwG0w4nVQ&oe=67BB666A&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476911350_18485117317029542_3897383284075447484_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3tImaukmHfAQ7kNvgHug5yi&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTE5NTU1OTg5NQ%3D%3D.3-ccb7-5&oh=00_AYAi2G3dR6uMkqC_lKB6qTNdREisa0LCU6azvZK9f_ULwQ&oe=67BB666A&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565870390910274581', 'pk': '3565870390910274581', 'is_video': False, 'taken_at': 1739304897, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476506799_18485117326029542_6637177956471819394_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cwBYIs6mGy8Q7kNvgFa-x6W&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDkxMDI3NDU4MQ%3D%3D.3-ccb7-5&oh=00_AYCQgxfcxwvz1UD_yXt8ltQF1WOy1MX-6bvZoC9JFP-JOw&oe=67BB30C1&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476506799_18485117326029542_6637177956471819394_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cwBYIs6mGy8Q7kNvgFa-x6W&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDkxMDI3NDU4MQ%3D%3D.3-ccb7-5&oh=00_AYCQgxfcxwvz1UD_yXt8ltQF1WOy1MX-6bvZoC9JFP-JOw&oe=67BB30C1&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476506799_18485117326029542_6637177956471819394_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cwBYIs6mGy8Q7kNvgFa-x6W&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDkxMDI3NDU4MQ%3D%3D.3-ccb7-5&oh=00_AYCLPwPQs-h9_eAj-_9MtqU02MerNhGMOttOoakI598xqA&oe=67BB30C1&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565867856032419322', 'pk': '3565867856032419322', 'is_video': True, 'taken_at': 1739304897, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPLatQ1Le-lJPVAIIXgbce5rb6vJqi9aPGmKxi5lOikuDY02M3jFHnFqX1IqrlalDOj9db_GGERj2YFvnW1fpmeONA4CUJC49r8wSQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzMTUwMDk2Njk2NTE3NjksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&vs=f61c781fc798079c&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9DNzQ3QUYyREU2QUNCRkVBMUEzMTNCM0UyN0JGN0M4NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dGZDJkUndLUllYZGZFRUVBTFFaX08xTFk4b0Nia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvL04sPR_9UEFQIoAkMzLBdALgAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDJ-Kc0871-O9gMByPyj42xWFCNycvvXCciF__WGiDwPQ&oe=67B76AFD&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477063185_18485117383029542_2011138633211008761_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kg1bLx2o_AAQ7kNvgFilXFD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg2Nzg1NjAzMjQxOTMyMg%3D%3D.3-ccb7-5&oh=00_AYB4fY-R0B-6G51QSZ6v-8VhSwFAgiYPBBai5E24BBGC_w&oe=67BB4B3C&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477063185_18485117383029542_2011138633211008761_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=kg1bLx2o_AAQ7kNvgFilXFD&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg2Nzg1NjAzMjQxOTMyMg%3D%3D.3-ccb7-5&oh=00_AYB4fY-R0B-6G51QSZ6v-8VhSwFAgiYPBBai5E24BBGC_w&oe=67BB4B3C&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477142980_592392570303952_9019170746682970744_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=104&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZE8kMp8nWCEQ7kNvgFEt5e-&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYB9V5LYlAsCUuTQOh5vSMOtGHjjdbumghnUcyipyajnKw&oe=67BB48CD&_nc_sid=2011ad'], 'file_size_kb': 141, 'sprite_width': 1500, 'video_length': 15.0, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.14285714285714285, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 15.0, 'video_versions': [{'id': '2580228628841238v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPLatQ1Le-lJPVAIIXgbce5rb6vJqi9aPGmKxi5lOikuDY02M3jFHnFqX1IqrlalDOj9db_GGERj2YFvnW1fpmeONA4CUJC49r8wSQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzMTUwMDk2Njk2NTE3NjksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&vs=f61c781fc798079c&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9DNzQ3QUYyREU2QUNCRkVBMUEzMTNCM0UyN0JGN0M4NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dGZDJkUndLUllYZGZFRUVBTFFaX08xTFk4b0Nia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvL04sPR_9UEFQIoAkMzLBdALgAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDJ-Kc0871-O9gMByPyj42xWFCNycvvXCciF__WGiDwPQ&oe=67B76AFD&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 1190520}, {'id': '2580228628841238v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPLatQ1Le-lJPVAIIXgbce5rb6vJqi9aPGmKxi5lOikuDY02M3jFHnFqX1IqrlalDOj9db_GGERj2YFvnW1fpmeONA4CUJC49r8wSQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzMTUwMDk2Njk2NTE3NjksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&vs=f61c781fc798079c&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9DNzQ3QUYyREU2QUNCRkVBMUEzMTNCM0UyN0JGN0M4NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dGZDJkUndLUllYZGZFRUVBTFFaX08xTFk4b0Nia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvL04sPR_9UEFQIoAkMzLBdALgAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDJ-Kc0871-O9gMByPyj42xWFCNycvvXCciF__WGiDwPQ&oe=67B76AFD&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 1190520}, {'id': '2580228628841238v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQPLatQ1Le-lJPVAIIXgbce5rb6vJqi9aPGmKxi5lOikuDY02M3jFHnFqX1IqrlalDOj9db_GGERj2YFvnW1fpmeONA4CUJC49r8wSQ.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzMTUwMDk2Njk2NTE3NjksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=108&vs=f61c781fc798079c&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9DNzQ3QUYyREU2QUNCRkVBMUEzMTNCM0UyN0JGN0M4NF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dGZDJkUndLUllYZGZFRUVBTFFaX08xTFk4b0Nia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJvL04sPR_9UEFQIoAkMzLBdALgAAAAAAABgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYDJ-Kc0871-O9gMByPyj42xWFCNycvvXCciF__WGiDwPQ&oe=67B76AFD&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 1190520}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'number_of_qualities': 4, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565867855168223748', 'pk': '3565867855168223748', 'is_video': True, 'taken_at': 1739304897, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOqKZJT4r9fsrIHH1_oRwW9AOWm_CSn4kaY9uYEboQydVndq46yl7WNaLQr_twtXrWm2xGdtNvA3WEL1wUFlfdMA9vNgtTyNIh5lKI.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMzExNDgzNjIxNTc4MDYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&vs=5b0a180890e2886e&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FMzQ4M0QwNTdGMjlEMDAyN0ZBMDY1NzlCOTE4NDJBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dPT2paaHo2QjhFeVk3Z0hBTXEwNGJac0JXTUZia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJty7sv3d9NQDFQIoAkMzLBdALUQYk3S8ahgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBDUQ9vMDOrOkl0QX_9GEGZuccO9upXqYLiynczMrfNyA&oe=67B74E67&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477055939_18485117410029542_4621914202976864501_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=-djAHhWfieUQ7kNvgFl58mT&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg2Nzg1NTE2ODIyMzc0OA%3D%3D.3-ccb7-5&oh=00_AYAdfcbUGG8avPJuYuHrP4OcsdXBafJFIny_VIGyLk8MMg&oe=67BB53D9&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477055939_18485117410029542_4621914202976864501_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=-djAHhWfieUQ7kNvgFl58mT&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg2Nzg1NTE2ODIyMzc0OA%3D%3D.3-ccb7-5&oh=00_AYAdfcbUGG8avPJuYuHrP4OcsdXBafJFIny_VIGyLk8MMg&oe=67BB53D9&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476796756_657984919990179_7368673595994872776_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=103&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=16pE1_8jkFkQ7kNvgEFNUZC&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCAbQPKcRHOy3Acsgc_Iaxn7JRUZMknO6BNqZciCeU2cQ&oe=67BB3E11&_nc_sid=2011ad'], 'file_size_kb': 264, 'sprite_width': 1500, 'video_length': 14.633, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.13936190476190474, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 14.633, 'video_versions': [{'id': '1536384380376989v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOqKZJT4r9fsrIHH1_oRwW9AOWm_CSn4kaY9uYEboQydVndq46yl7WNaLQr_twtXrWm2xGdtNvA3WEL1wUFlfdMA9vNgtTyNIh5lKI.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMzExNDgzNjIxNTc4MDYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&vs=5b0a180890e2886e&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FMzQ4M0QwNTdGMjlEMDAyN0ZBMDY1NzlCOTE4NDJBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dPT2paaHo2QjhFeVk3Z0hBTXEwNGJac0JXTUZia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJty7sv3d9NQDFQIoAkMzLBdALUQYk3S8ahgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBDUQ9vMDOrOkl0QX_9GEGZuccO9upXqYLiynczMrfNyA&oe=67B74E67&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 639495}, {'id': '1536384380376989v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOqKZJT4r9fsrIHH1_oRwW9AOWm_CSn4kaY9uYEboQydVndq46yl7WNaLQr_twtXrWm2xGdtNvA3WEL1wUFlfdMA9vNgtTyNIh5lKI.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMzExNDgzNjIxNTc4MDYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&vs=5b0a180890e2886e&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FMzQ4M0QwNTdGMjlEMDAyN0ZBMDY1NzlCOTE4NDJBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dPT2paaHo2QjhFeVk3Z0hBTXEwNGJac0JXTUZia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJty7sv3d9NQDFQIoAkMzLBdALUQYk3S8ahgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBDUQ9vMDOrOkl0QX_9GEGZuccO9upXqYLiynczMrfNyA&oe=67B74E67&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 639495}, {'id': '1536384380376989v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQOqKZJT4r9fsrIHH1_oRwW9AOWm_CSn4kaY9uYEboQydVndq46yl7WNaLQr_twtXrWm2xGdtNvA3WEL1wUFlfdMA9vNgtTyNIh5lKI.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEwMzExNDgzNjIxNTc4MDYsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&vs=5b0a180890e2886e&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FMzQ4M0QwNTdGMjlEMDAyN0ZBMDY1NzlCOTE4NDJBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dPT2paaHo2QjhFeVk3Z0hBTXEwNGJac0JXTUZia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJty7sv3d9NQDFQIoAkMzLBdALUQYk3S8ahgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYBDUQ9vMDOrOkl0QX_9GEGZuccO9upXqYLiynczMrfNyA&oe=67B74E67&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 639495}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'number_of_qualities': 5, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565867854446862862', 'pk': '3565867854446862862', 'is_video': True, 'taken_at': 1739304897, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m84/AQMWPGnE51Kzt_VnuJ65V3uhWMChPXqL6a4koXZ1WcyKhvoEvvEktKJQhXLfjqVxZ8zgeEJ5vw1Zewc-ZWcUMw7o0AAa2J3cZpeAXFk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0NDQ0NjE5MjMxOTczMzQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=362528a3a54f7431&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC8yMjQxRkI3ODMyNDJGMTk4MTMzNDFFOEI2MDk3RDY5Ml92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dCV2hhQnd3blZ4cU5yTU5BQ2d2VGNqaHFkcGhia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJqyGl_3f7pAFFQIoAkMzLBdAHszMzMzMzRgSZGFzaF9iYXNlbGluZV8xX3YxEQB17gcA&ccb=9-4&oh=00_AYCB-uCvcoZzhFqzpO0oFbvZr1bXxPOdHQPjNtRnIRSJvQ&oe=67B76183&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478433479_18485117419029542_5106556102686292586_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yOWyqm3efMIQ7kNvgGrcE12&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg2Nzg1NDQ0Njg2Mjg2Mg%3D%3D.3-ccb7-5&oh=00_AYAeW2U-k3-cW3UhtNCNfqwRbshL-9ciDWOj6B9ui5-FYw&oe=67BB6343&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478433479_18485117419029542_5106556102686292586_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4OTAwLnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=yOWyqm3efMIQ7kNvgGrcE12&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg2Nzg1NDQ0Njg2Mjg2Mg%3D%3D.3-ccb7-5&oh=00_AYAeW2U-k3-cW3UhtNCNfqwRbshL-9ciDWOj6B9ui5-FYw&oe=67BB6343&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477591513_3429326833867138_5000024858342741015_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=110&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=I1E1wVbMUI4Q7kNvgHWmn-L&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAN0LlfMwSF63iomGZifNgbfbyxqE9T_o9XUaeJWnXRkQ&oe=67BB6098&_nc_sid=2011ad'], 'file_size_kb': 88, 'sprite_width': 1500, 'video_length': 7.7, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.07333333333333333, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 864, 'video_duration': 7.7, 'video_versions': [{'id': '638959565384076v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m84/AQMWPGnE51Kzt_VnuJ65V3uhWMChPXqL6a4koXZ1WcyKhvoEvvEktKJQhXLfjqVxZ8zgeEJ5vw1Zewc-ZWcUMw7o0AAa2J3cZpeAXFk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0NDQ0NjE5MjMxOTczMzQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=362528a3a54f7431&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC8yMjQxRkI3ODMyNDJGMTk4MTMzNDFFOEI2MDk3RDY5Ml92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dCV2hhQnd3blZ4cU5yTU5BQ2d2VGNqaHFkcGhia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJqyGl_3f7pAFFQIoAkMzLBdAHszMzMzMzRgSZGFzaF9iYXNlbGluZV8xX3YxEQB17gcA&ccb=9-4&oh=00_AYCB-uCvcoZzhFqzpO0oFbvZr1bXxPOdHQPjNtRnIRSJvQ&oe=67B76183&_nc_sid=1d576d', 'type': 101, 'width': 720, 'height': 900, 'bandwidth': 488270}, {'id': '638959565384076v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m84/AQMWPGnE51Kzt_VnuJ65V3uhWMChPXqL6a4koXZ1WcyKhvoEvvEktKJQhXLfjqVxZ8zgeEJ5vw1Zewc-ZWcUMw7o0AAa2J3cZpeAXFk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0NDQ0NjE5MjMxOTczMzQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=362528a3a54f7431&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC8yMjQxRkI3ODMyNDJGMTk4MTMzNDFFOEI2MDk3RDY5Ml92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dCV2hhQnd3blZ4cU5yTU5BQ2d2VGNqaHFkcGhia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJqyGl_3f7pAFFQIoAkMzLBdAHszMzMzMzRgSZGFzaF9iYXNlbGluZV8xX3YxEQB17gcA&ccb=9-4&oh=00_AYCB-uCvcoZzhFqzpO0oFbvZr1bXxPOdHQPjNtRnIRSJvQ&oe=67B76183&_nc_sid=1d576d', 'type': 102, 'width': 720, 'height': 900, 'bandwidth': 488270}, {'id': '638959565384076v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m84/AQMWPGnE51Kzt_VnuJ65V3uhWMChPXqL6a4koXZ1WcyKhvoEvvEktKJQhXLfjqVxZ8zgeEJ5vw1Zewc-ZWcUMw7o0AAa2J3cZpeAXFk.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjE0NDQ0NjE5MjMxOTczMzQsInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjcyMC5kYXNoX2Jhc2VsaW5lXzFfdjEifQ&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=109&vs=362528a3a54f7431&_nc_vs=HBksFQIYTGlnX2JhY2tmaWxsX3RpbWVsaW5lX3ZvZC8yMjQxRkI3ODMyNDJGMTk4MTMzNDFFOEI2MDk3RDY5Ml92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dCV2hhQnd3blZ4cU5yTU5BQ2d2VGNqaHFkcGhia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJqyGl_3f7pAFFQIoAkMzLBdAHszMzMzMzRgSZGFzaF9iYXNlbGluZV8xX3YxEQB17gcA&ccb=9-4&oh=00_AYCB-uCvcoZzhFqzpO0oFbvZr1bXxPOdHQPjNtRnIRSJvQ&oe=67B76183&_nc_sid=1d576d', 'type': 103, 'width': 720, 'height': 900, 'bandwidth': 488270}], 'original_height': 1080, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'number_of_qualities': 3, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565870390952139401', 'pk': '3565870390952139401', 'is_video': False, 'taken_at': 1739304897, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477281088_18485117338029542_8517821356658805215_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WmLR49TTyCoQ7kNvgHnSs_U&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDk1MjEzOTQwMQ%3D%3D.3-ccb7-5&oh=00_AYBQ4z5YnJ0Bns7eO7_tEvJ31mDVJLaV40T9u4KdF1M_FA&oe=67BB49D0&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477281088_18485117338029542_8517821356658805215_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WmLR49TTyCoQ7kNvgHnSs_U&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDk1MjEzOTQwMQ%3D%3D.3-ccb7-5&oh=00_AYBQ4z5YnJ0Bns7eO7_tEvJ31mDVJLaV40T9u4KdF1M_FA&oe=67BB49D0&_nc_sid=2011ad', 'width': 1080, 'height': 1349}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477281088_18485117338029542_8517821356658805215_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=WmLR49TTyCoQ7kNvgHnSs_U&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDk1MjEzOTQwMQ%3D%3D.3-ccb7-5&oh=00_AYDS4dCaDIpmvkjL4IQBEKCiHhIMe29TVSX3GcWL-jcJYg&oe=67BB49D0&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1799, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565870390885056559', 'pk': '3565870390885056559', 'is_video': False, 'taken_at': 1739304897, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477247216_18485117350029542_2342892047618718106_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=qGN5Gb-cnFcQ7kNvgHbIFuY&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDg4NTA1NjU1OQ%3D%3D.3-ccb7-5&oh=00_AYC6FA4c0ZLcatAjBuFSj3iddOvZLAyftolsVq-EG1gSXA&oe=67BB4AB6&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477247216_18485117350029542_2342892047618718106_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=qGN5Gb-cnFcQ7kNvgHbIFuY&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDg4NTA1NjU1OQ%3D%3D.3-ccb7-5&oh=00_AYC6FA4c0ZLcatAjBuFSj3iddOvZLAyftolsVq-EG1gSXA&oe=67BB4AB6&_nc_sid=2011ad', 'width': 1080, 'height': 1349}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477247216_18485117350029542_2342892047618718106_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=qGN5Gb-cnFcQ7kNvgHbIFuY&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDg4NTA1NjU1OQ%3D%3D.3-ccb7-5&oh=00_AYC3lXZ1yqWGFPdH6smvVlXnpxZFipB3L2-uGkoOQzgE6g&oe=67BB4AB6&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1799, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565870390943770750', 'pk': '3565870390943770750', 'is_video': False, 'taken_at': 1739304897, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477610075_18485117359029542_6468070686321549574_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mjj1cCCpBjcQ7kNvgH9vnEg&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDk0Mzc3MDc1MA%3D%3D.3-ccb7-5&oh=00_AYDDvyvZYHOn77oRYSFjOpL2tozF0MrPJwo0iPLcPPOSVg&oe=67BB4504&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477610075_18485117359029542_6468070686321549574_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mjj1cCCpBjcQ7kNvgH9vnEg&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDk0Mzc3MDc1MA%3D%3D.3-ccb7-5&oh=00_AYDDvyvZYHOn77oRYSFjOpL2tozF0MrPJwo0iPLcPPOSVg&oe=67BB4504&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/477610075_18485117359029542_6468070686321549574_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=mjj1cCCpBjcQ7kNvgH9vnEg&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MDk0Mzc3MDc1MA%3D%3D.3-ccb7-5&oh=00_AYAPgrXP0mfC8aFDPth6z8w0MgPpTYMjVgHGWbd78JNUmw&oe=67BB4504&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1800, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565870391044455589', 'pk': '3565870391044455589', 'is_video': False, 'taken_at': 1739304897, 'media_name': 'album_item', 'media_type': 1, 'fb_user_tags': {'in': []}, 'media_format': 'image', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476904866_18485117368029542_3857797619799471766_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2tvu9TCApWgQ7kNvgGTYOoN&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTA0NDQ1NTU4OQ%3D%3D.3-ccb7-5&oh=00_AYBfQFba5wyJFIqfSywSSoQ4D7vF08Wi80mIJdYz5BzWPA&oe=67BB5C60&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476904866_18485117368029542_3857797619799471766_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2tvu9TCApWgQ7kNvgGTYOoN&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTA0NDQ1NTU4OQ%3D%3D.3-ccb7-5&oh=00_AYBfQFba5wyJFIqfSywSSoQ4D7vF08Wi80mIJdYz5BzWPA&oe=67BB5C60&_nc_sid=2011ad', 'width': 1080, 'height': 1349}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476904866_18485117368029542_3857797619799471766_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE3OTkuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=2tvu9TCApWgQ7kNvgGTYOoN&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTA0NDQ1NTU4OQ%3D%3D.3-ccb7-5&oh=00_AYD3Y4ZAbygKtKaflhRfN5viWW48M4rrDYPF8BPIhHsv_g&oe=67BB5C60&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'original_width': 1440, 'original_height': 1799, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}, {'id': '3565867854086269873', 'pk': '3565867854086269873', 'is_video': True, 'taken_at': 1739304897, 'has_audio': True, 'video_url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQO3fhlT3BoNBBR8i--N49PNh0ts3L_-T8vRdaixcQWAAq9n28v-MwUATmiVNV6vYA4AwudU3rm07oakHK5as77uAXbMIJNj4yHQFsM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNDAwOTM0OTcxODE1ODksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=140380ee827d6352&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FQzRBQ0YyNDIwNDQ1MTlBM0RGOUJEQkZBOTg3MkY5RF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBT2taaHp5Uk14U2wxOERBTVZEeVVjNVVIcEFia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJqqW7M3as-EEFQIoAkMzLBdAFqn752yLRBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYANZXhtnp4a14kbxZbz_IZyEvWDXk0OZOSrAmFR9y_l5g&oe=67B75EFB&_nc_sid=1d576d', 'media_name': 'album_item', 'media_type': 2, 'video_codec': 'av01.0.04M.08.0.111.01.01.01.0', 'fb_user_tags': {'in': []}, 'media_format': 'video', 'product_type': 'carousel_item', 'thumbnail_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478412534_18485117428029542_1523280323239374831_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4ODk5LnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZMhYv__9nk0Q7kNvgGpm50L&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg2Nzg1NDA4NjI2OTg3Mw%3D%3D.3-ccb7-5&oh=00_AYCtv9OVYLTMaKK_w31WLZ6XF4wsk5ZC791_jaQLyTEndQ&oe=67BB5085&_nc_sid=2011ad', 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/478412534_18485117428029542_1523280323239374831_n.jpg?stp=dst-jpg_e15_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi43MjB4ODk5LnNkci5mNzU3NjEuZGVmYXVsdF9jb3Zlcl9mcmFtZSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=ZMhYv__9nk0Q7kNvgGpm50L&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg2Nzg1NDA4NjI2OTg3Mw%3D%3D.3-ccb7-5&oh=00_AYCtv9OVYLTMaKK_w31WLZ6XF4wsk5ZC791_jaQLyTEndQ&oe=67BB5085&_nc_sid=2011ad', 'width': 360, 'height': 450}], 'scrubber_spritesheet_info_candidates': {'default': {'sprite_urls': ['https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/475437848_977526977623730_2510170445962785385_n.jpg?_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=xiV-MyipZcEQ7kNvgE2GrCS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYAtBg2jBeQhx2lS7BVeXCLQwPTfb3LqwcyurfawL2RGWQ&oe=67BB3E13&_nc_sid=2011ad'], 'file_size_kb': 53, 'sprite_width': 1500, 'video_length': 5.666, 'sprite_height': 882, 'rendered_width': 96, 'thumbnail_width': 100, 'thumbnail_height': 126, 'thumbnail_duration': 0.053961904761904766, 'thumbnails_per_row': 15, 'max_thumbnails_per_sprite': 105, 'total_thumbnail_num_per_sprite': 105}}}, 'original_width': 1080, 'video_duration': 5.666, 'video_versions': [{'id': '615646347865695v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQO3fhlT3BoNBBR8i--N49PNh0ts3L_-T8vRdaixcQWAAq9n28v-MwUATmiVNV6vYA4AwudU3rm07oakHK5as77uAXbMIJNj4yHQFsM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNDAwOTM0OTcxODE1ODksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=140380ee827d6352&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FQzRBQ0YyNDIwNDQ1MTlBM0RGOUJEQkZBOTg3MkY5RF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBT2taaHp5Uk14U2wxOERBTVZEeVVjNVVIcEFia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJqqW7M3as-EEFQIoAkMzLBdAFqn752yLRBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYANZXhtnp4a14kbxZbz_IZyEvWDXk0OZOSrAmFR9y_l5g&oe=67B75EFB&_nc_sid=1d576d', 'type': 101, 'width': 1080, 'height': 1350, 'bandwidth': 231310}, {'id': '615646347865695v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQO3fhlT3BoNBBR8i--N49PNh0ts3L_-T8vRdaixcQWAAq9n28v-MwUATmiVNV6vYA4AwudU3rm07oakHK5as77uAXbMIJNj4yHQFsM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNDAwOTM0OTcxODE1ODksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=140380ee827d6352&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FQzRBQ0YyNDIwNDQ1MTlBM0RGOUJEQkZBOTg3MkY5RF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBT2taaHp5Uk14U2wxOERBTVZEeVVjNVVIcEFia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJqqW7M3as-EEFQIoAkMzLBdAFqn752yLRBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYANZXhtnp4a14kbxZbz_IZyEvWDXk0OZOSrAmFR9y_l5g&oe=67B75EFB&_nc_sid=1d576d', 'type': 102, 'width': 1080, 'height': 1350, 'bandwidth': 231310}, {'id': '615646347865695v', 'url': 'https://scontent-dus1-1.cdninstagram.com/o1/v/t16/f2/m367/AQO3fhlT3BoNBBR8i--N49PNh0ts3L_-T8vRdaixcQWAAq9n28v-MwUATmiVNV6vYA4AwudU3rm07oakHK5as77uAXbMIJNj4yHQFsM.mp4?efg=eyJ4cHZfYXNzZXRfaWQiOjEzNDAwOTM0OTcxODE1ODksInZlbmNvZGVfdGFnIjoieHB2X3Byb2dyZXNzaXZlLklOU1RBR1JBTS5DQVJPVVNFTF9JVEVNLkMzLjEwODAuZGFzaF9iYXNlbGluZV8xMDgwcF92MSJ9&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&vs=140380ee827d6352&_nc_vs=HBksFQIYQGlnX2VwaGVtZXJhbC9FQzRBQ0YyNDIwNDQ1MTlBM0RGOUJEQkZBOTg3MkY5RF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAVAhg6cGFzc3Rocm91Z2hfZXZlcnN0b3JlL0dBT2taaHp5Uk14U2wxOERBTVZEeVVjNVVIcEFia1lMQUFBRhUCAsgBACgAGAAbAogHdXNlX29pbAExEnByb2dyZXNzaXZlX3JlY2lwZQExFQAAJqqW7M3as-EEFQIoAkMzLBdAFqn752yLRBgWZGFzaF9iYXNlbGluZV8xMDgwcF92MREAde4HAA&ccb=9-4&oh=00_AYANZXhtnp4a14kbxZbz_IZyEvWDXk0OZOSrAmFR9y_l5g&oe=67B75EFB&_nc_sid=1d576d', 'type': 103, 'width': 1080, 'height': 1350, 'bandwidth': 231310}], 'original_height': 1350, 'is_dash_eligible': 1, 'featured_products': [], 'carousel_parent_id': '3565870406269847721_44701541', 'explore_pivot_grid': False, 'number_of_qualities': 2, 'product_suggestions': [], 'commerciality_status': 'not_commercial', 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'video_sticker_locales': []}], 'deleted_reason': 0, 'fundraiser_tag': {'has_standalone_fundraiser': False}, 'image_versions': {'items': [{'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476911350_18485117317029542_3897383284075447484_n.jpg?stp=dst-jpg_e35_p1080x1080_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3tImaukmHfAQ7kNvgHug5yi&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTE5NTU1OTg5NQ%3D%3D.3-ccb7-5&oh=00_AYDMMbhV7zzctaZ7dOOF8AZ48tBO1ehW_Ek0lKwG0w4nVQ&oe=67BB666A&_nc_sid=2011ad', 'width': 1080, 'height': 1350}, {'url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-15/476911350_18485117317029542_3897383284075447484_n.jpg?stp=dst-jpg_e35_p360x360_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xNDQweDE4MDAuc2RyLmY3NTc2MS5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=3tImaukmHfAQ7kNvgHug5yi&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&ig_cache_key=MzU2NTg3MDM5MTE5NTU1OTg5NQ%3D%3D.3-ccb7-5&oh=00_AYAi2G3dR6uMkqC_lKB6qTNdREisa0LCU6azvZK9f_ULwQ&oe=67BB666A&_nc_sid=2011ad', 'width': 360, 'height': 450}]}, 'music_metadata': {'audio_type': None, 'music_info': None, 'pinned_media_ids': None, 'audio_canonical_id': '0', 'original_sound_info': None}, 'original_width': 612, 'original_height': 612, 'device_timestamp': 1739304595204096, 'has_shared_to_fb': 0, 'preview_comments': [], 'caption_is_edited': False, 'featured_products': [], 'carousel_media_ids': [3565870391195559895, 3565870390910274581, 3565867856032419322, 3565867855168223748, 3565867854446862862, 3565870390952139401, 3565870390885056559, 3565870390943770750, 3565870391044455589, 3565867854086269873], 'coauthor_producers': [{'id': '39440309', 'pk': '39440309', 'username': 'zeitype', 'full_name': 'Zeitype', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3300358303292709002', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/427526411_417486524062322_1678753963617087546_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=UUtRvV1PfngQ7kNvgED4m36&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYCT5Stwqk8VNfT1L5P39hQ3EJi1UHoeVx0ohsNLkjmTOQ&oe=67BB5750&_nc_sid=2011ad'}, {'id': '278753641', 'pk': '278753641', 'username': 'indgila', 'full_name': 'Indgila Samad Ali Alizai', 'is_private': False, 'is_verified': False, 'profile_pic_id': '2174803559464203575', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/72720601_2569583836422758_2522464563870302208_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=102&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=cOdAGaix7v0Q7kNvgFW-qse&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYC2guIxLSeJYZOAeMKigN0Ay6y2AbA8Q-si8rM-78I4Tw&oe=67BB3E08&_nc_sid=2011ad'}, {'id': '36192404', 'pk': '36192404', 'username': 'shannonjager', 'full_name': 'shannonjager', 'is_private': False, 'is_verified': False, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/10899340_599035080230143_1955693494_a.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=107&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=c74LjTbIAI4Q7kNvgFMjGhT&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYBpsKkfPOGNfsC9-77VZ0hrYfUrGBP61zEilrV53ylnZQ&oe=67BB3E8E&_nc_sid=2011ad'}, {'id': '320308780', 'pk': '320308780', 'username': 'kennethkuh.info', 'full_name': 'Kenneth Kuh', 'is_private': False, 'is_verified': False, 'profile_pic_id': '3027709427784882604', 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t51.2885-19/328571119_192370103469642_1994252613322386379_n.jpg?stp=dst-jpg_e0_s150x150_tt6&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=106&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=TZxLKt6b9LoQ7kNvgFF5Xlb&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gBAAAA&ccb=7-5&oh=00_AYDEduTLK3ji2j-ZEl1FA83Uur4IJvVmEqoP9JXrQTWPQw&oe=67BB5AC1&_nc_sid=2011ad'}], 'crosspost_metadata': {'fb_downstream_use_xpost_metadata': {'downstream_use_xpost_deny_reason': 'NONE'}}, 'has_views_fetching': True, 'is_in_profile_grid': False, 'can_modify_carousel': False, 'has_privately_liked': False, 'is_paid_partnership': False, 'product_suggestions': [], 'carousel_media_count': 10, 'share_count_disabled': False, 'shop_routing_user_id': None, 'sharing_friction_info': {'bloks_app_url': None, 'sharing_friction_payload': None, 'should_have_sharing_friction': False}, 'subscribe_cta_visible': False, 'video_sticker_locales': [], 'is_social_ufi_disabled': False, 'gen_ai_detection_method': {'detection_method': 'NONE'}, 'boost_unavailable_reason': None, 'comment_inform_treatment': {'url': None, 'text': '', 'action_type': None, 'should_have_inform_treatment': False}, 'fb_aggregated_like_count': 0, 'is_post_live_clips_media': False, 'timeline_pinned_user_ids': [44701541], 'clips_tab_pinned_user_ids': [], 'collab_follow_button_info': {'show_follow_button': True, 'is_owner_in_author_exp': True}, 'ig_media_sharing_disabled': False, 'integrity_review_decision': 'pending', 'is_cutout_sticker_allowed': False, 'meta_ai_suggested_prompts': [], 'invited_coauthor_producers': [], 'boost_unavailable_reason_v2': None, 'fb_aggregated_comment_count': 0, 'boost_unavailable_identifier': None, 'is_open_to_public_submission': False, 'is_eligible_for_meta_ai_share': False, 'like_and_view_counts_disabled': False, 'open_carousel_submission_state': 'closed', 'is_comments_gif_composer_enabled': True, 'open_carousel_show_follow_button': False, 'carousel_media_pending_post_count': 0, 'is_eligible_for_media_note_recs_nux': False, 'is_organic_product_tagging_eligible': True, 'is_eligible_content_for_post_roll_ad': False, 'has_high_risk_gen_ai_inform_treatment': False, 'is_reshare_of_text_post_app_media_in_ig': False, 'coauthor_producer_can_see_organic_insights': False, 'is_tagged_media_shared_to_viewer_profile_grid': False, 'should_open_collab_bottomsheet_on_facepile_tap': False, 'should_show_author_pog_for_tagged_media_shared_to_profile_grid': False}], 'total': 3263820, 'additional_data': {'id': '17946781064374200', 'name': 'chatgpt', 'subtitle': 'See a few top posts each week', 'is_trending': False, 'media_count': 3263820, 'social_context': '', 'allow_following': 1, 'profile_pic_url': 'https://scontent-dus1-1.cdninstagram.com/v/t39.30808-6/479525190_943763024567292_3670728056614562936_n.jpg?se=7&stp=c0.0.1080.1351a_dst-jpg_e35_tt6&efg=eyJ2ZW5jb2RlX3RhZyI6ImltYWdlX3VybGdlbi4xMDgxeDEzNTEuc2RyLmYzMDgwOC5kZWZhdWx0X2ltYWdlIn0&_nc_ht=scontent-dus1-1.cdninstagram.com&_nc_cat=100&_nc_oc=Q6cZ2AEQMa7N2pJSag6A1hq5JvCu1YpWWtveZ_V3Gw0lKuDC9Ax0jsw43S_P9-gjr1CLZdc&_nc_ohc=HG_QWRERBAMQ7kNvgHUj-AS&_nc_gid=2e58124382614b5c8c657a6ea012ad94&edm=AGyKU4gAAAAA&ccb=7-5&ig_cache_key=MzU3MDAzMDU1MDIxODExMTE0Nw%3D%3D.3-ccb7-5&oh=00_AYBGU7raFWLVmjIfmtzNB4qdCCp_J5pIou6b0E947DJUhw&oe=67BB5FEA&_nc_sid=2011ad', 'warning_message': None, 'content_advisory': None, 'allow_muting_story': True, 'follow_button_text': None, 'formatted_media_count': '3.2M', 'show_follow_drop_down': False, 'hide_use_hashtag_button': False, 'social_context_profile_links': []}}, 'pagination_token': 'Dk1IBB4pEhZcZVZXUgZtQEhGGhYRRxtHEA4KZwFTAk9zUEFFSmcXUwpGAE0DRgEOBwBVTEFeSjwQExQBPAQGAxcQRwFeSUZBCjMSFj4mMQcAHB19W1JUX30MChYDCl4RERUVB0ErAFtUVmdSRgZABVccWCxQAgo-QUdQSj1eFEpKb1tDDAMnTQBSCA'}, 'content': 'eyJkYXRhIjp7ImFkZGl0aW9uYWxfZGF0YSI6eyJhbGxvd19mb2xsb3dpbmciOjEsImFsbG93X211dGluZ19zdG9yeSI6dHJ1ZSwiY29udGVudF9hZHZpc29yeSI6bnVsbCwiZm9sbG93X2J1dHRvbl90ZXh0IjpudWxsLCJmb3JtYXR0ZWRfbWVkaWFfY291bnQiOiIzLjJNIiwiaGlkZV91c2VfaGFzaHRhZ19idXR0b24iOmZhbHNlLCJpZCI6IjE3OTQ2NzgxMDY0Mzc0MjAwIiwiaXNfdHJlbmRpbmciOmZhbHNlLCJtZWRpYV9jb3VudCI6MzI2MzgyMCwibmFtZSI6ImNoYXRncHQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NTI1MTkwXzk0Mzc2MzAyNDU2NzI5Ml8zNjcwNzI4MDU2NjE0NTYyOTM2X24uanBnP3NlPTcmc3RwPWMwLjAuMTA4MC4xMzUxYV9kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd4ZURFek5URXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SEdfUVdSRVJCQU1RN2tOdmdIVWotQVMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVMU1ESXhPREV4TVRFME53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkdVN3JhRldMVm1qSWZtdHpOQjRxZENDcF9KNXBJb3U2YjBFOTQ3REpVaHcmb2U9NjdCQjVGRUEmX25jX3NpZD0yMDExYWQiLCJzaG93X2ZvbGxvd19kcm9wX2Rvd24iOmZhbHNlLCJzb2NpYWxfY29udGV4dCI6IiIsInNvY2lhbF9jb250ZXh0X3Byb2ZpbGVfbGlua3MiOltdLCJzdWJ0aXRsZSI6IlNlZSBhIGZldyB0b3AgcG9zdHMgZWFjaCB3ZWVrIiwid2FybmluZ19tZXNzYWdlIjpudWxsfSwiY291bnQiOjMyLCJpdGVtcyI6W3siYXJlX3JlbWl4ZXNfY3Jvc3Nwb3N0YWJsZSI6dHJ1ZSwiYXZhdGFyX3N0aWNrZXJzIjpbXSwiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5ODkyNDMyLCJjcmVhdGVkX2F0X3V0YyI6MTczOTg5MjQzMiwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzX3RyYW5zbGF0aW9uIjp0cnVlLCJoYXNodGFncyI6WyIjY2hhdGdwdCJdLCJpZCI6IjM1NzA3OTc0OTA0MTgxODI4MjEiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTgzOTE2MDEyMDkwOTk5NDEiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJTYWJlIHF1ZSBpc3NvIHF1ZXIgZGl6ZXI/XG5cbk5hZGEhIFPDsyBjb2luY2lkw6puY2lh8J+RjfCfj7tcblxuI2NoYXRncHQiLCJ0ZXh0X3RyYW5zbGF0aW9uIjoiU2FiZSBxdWUgaXNzbyBxdWVyIGRpemVyPyBcblxuIE5hZGEhIFPDsyBjb2luY2lkw6puY2lh8J+RjfCfj7sgXG5cbiAjY2hhdGdwdCIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0MDA2Nzc5MTMzNjEsImZ1bGxfbmFtZSI6IkVkaWVsIENvc3RhIOKchSIsImlkIjoiMjE1MTI2NTk3IiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzAwODU2MDkwNDA0NTE4ODA2OSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8zMjMzNjcwMDVfNTg1MDY5NjAwMTIxNTExXzQxNzIzMDcyNTc4Njc0MzU3NzBfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9eEJJQVdvUXU5dllRN2tOdmdGLWoxNUMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDVHpQaHNWSm9UN01nTW9OU0tuaWJRMUlnMUFDT2s2V2hwX3FOWXpnY1dldyZvZT02N0JCNUNDNyZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiZWRpZWxjb3N0YSJ9LCJ1c2VyX2lkIjoiMjE1MTI2NTk3In0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2xpcHNfbWV0YWRhdGEiOnsiYWNoaWV2ZW1lbnRzX2luZm8iOnsibnVtX2Vhcm5lZF9hY2hpZXZlbWVudHMiOm51bGwsInNob3dfYWNoaWV2ZW1lbnRzIjpmYWxzZX0sImFkZGl0aW9uYWxfYXVkaW9faW5mbyI6eyJhZGRpdGlvbmFsX2F1ZGlvX3VzZXJuYW1lIjpudWxsLCJhdWRpb19yZWF0dHJpYnV0aW9uX2luZm8iOnsic2hvdWxkX2FsbG93X3Jlc3RvcmUiOmZhbHNlfX0sImFzc2V0X3JlY29tbWVuZGF0aW9uX2luZm8iOm51bGwsImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjE4NDg0MTI0NTMzMDYyNzM1IiwiYXVkaW9fcmFua2luZ19pbmZvIjp7ImJlc3RfYXVkaW9fY2x1c3Rlcl9pZCI6IjI5NTQ5MjQzMTQ2NTg2NDIifSwiYXVkaW9fdHlwZSI6Im9yaWdpbmFsX3NvdW5kcyIsImJyYW5kZWRfY29udGVudF90YWdfaW5mbyI6eyJjYW5fYWRkX3RhZyI6ZmFsc2V9LCJicmVha2luZ19jb250ZW50X2luZm8iOm51bGwsImJyZWFraW5nX2NyZWF0b3JfaW5mbyI6bnVsbCwiY2hhbGxlbmdlX2luZm8iOm51bGwsImNsaXBzX2NyZWF0aW9uX2VudHJ5X3BvaW50IjoiY2xpcHMiLCJjb250ZW50X2FwcHJlY2lhdGlvbl9pbmZvIjp7ImVuYWJsZWQiOmZhbHNlLCJlbnRyeV9wb2ludF9jb250YWluZXIiOm51bGx9LCJjb250ZXh0dWFsX2hpZ2hsaWdodF9pbmZvIjpudWxsLCJjdXRvdXRfc3RpY2tlcl9pbmZvIjpbXSwiZGlzYWJsZV91c2VfaW5fY2xpcHNfY2xpZW50X2NhY2hlIjpmYWxzZSwiZXh0ZXJuYWxfbWVkaWFfaW5mbyI6bnVsbCwiZmVhdHVyZWRfbGFiZWwiOm51bGwsImlzX2Zhbl9jbHViX3Byb21vX3ZpZGVvIjpmYWxzZSwiaXNfcHVibGljX2NoYXRfd2VsY29tZV92aWRlbyI6ZmFsc2UsImlzX3NoYXJlZF90b19mYiI6ZmFsc2UsIm1hc2h1cF9pbmZvIjp7ImNhbl90b2dnbGVfbWFzaHVwc19hbGxvd2VkIjpmYWxzZSwiZm9ybWF0dGVkX21hc2h1cHNfY291bnQiOm51bGwsImhhc19iZWVuX21hc2hlZF91cCI6dHJ1ZSwiaGFzX25vbm1pbWljYWJsZV9hZGRpdGlvbmFsX2F1ZGlvIjpmYWxzZSwiaXNfY3JlYXRvcl9yZXF1ZXN0aW5nX21hc2h1cCI6ZmFsc2UsImlzX2xpZ2h0X3dlaWdodF9jaGVjayI6dHJ1ZSwiaXNfbGlnaHRfd2VpZ2h0X3JldXNlX2FsbG93ZWRfY2hlY2siOmZhbHNlLCJpc19waXZvdF9wYWdlX2F2YWlsYWJsZSI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOnRydWUsIm1hc2h1cF90eXBlIjpudWxsLCJtYXNodXBzX2FsbG93ZWQiOnRydWUsIm5vbl9wcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOjEsIm9yaWdpbmFsX21lZGlhIjpudWxsLCJwcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOm51bGx9LCJtZXJjaGFuZGlzaW5nX3BpbGxfaW5mbyI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwibnV4X2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOnsiYWxsb3dfY3JlYXRvcl90b19yZW5hbWUiOnRydWUsImF0dHJpYnV0ZWRfY3VzdG9tX2F1ZGlvX2Fzc2V0X2lkIjpudWxsLCJhdWRpb19hc3NldF9zdGFydF90aW1lX2luX21zIjpudWxsLCJhdWRpb19maWx0ZXJfaW5mb3MiOltdLCJhdWRpb19pZCI6ODcwODk2NDUxNzI4OTY3LCJhdWRpb19wYXJ0cyI6W10sImF1ZGlvX3BhcnRzX2J5X2ZpbHRlciI6W10sImNhbl9yZW1peF9iZV9zaGFyZWRfdG9fZmIiOnRydWUsImNhbl9yZW1peF9iZV9zaGFyZWRfdG9fZmJfZXhwYW5zaW9uIjpmYWxzZSwiY29uc3VtcHRpb25faW5mbyI6eyJkaXNwbGF5X21lZGlhX2lkIjpudWxsLCJpc19ib29rbWFya2VkIjpmYWxzZSwiaXNfdHJlbmRpbmdfaW5fY2xpcHMiOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb24iOiIiLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb25fdHlwZSI6bnVsbH0sImR1cmF0aW9uX2luX21zIjoxMTM3NywiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn0sImZvcm1hdHRlZF9jbGlwc19tZWRpYV9jb3VudCI6bnVsbCwiaGlkZV9yZW1peGluZyI6ZmFsc2UsImlnX2FydGlzdCI6eyJmdWxsX25hbWUiOiJFZGllbCBDb3N0YSDinIUiLCJpZCI6IjIxNTEyNjU5NyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzMDA4NTYwOTA0MDQ1MTg4MDY5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzMyMzM2NzAwNV81ODUwNjk2MDAxMjE1MTFfNDE3MjMwNzI1Nzg2NzQzNTc3MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz14QklBV29RdTl2WVE3a052Z0YtajE1QyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNUelBoc1ZKb1Q3TWdNb05TS25pYlExSWcxQUNPazZXaHBfcU5ZemdjV2V3Jm9lPTY3QkI1Q0M3Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJlZGllbGNvc3RhIn0sImlzX2F1ZGlvX2F1dG9tYXRpY2FsbHlfYXR0cmlidXRlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9hdWRpb19lZmZlY3RzIjp0cnVlLCJpc19lbGlnaWJsZV9mb3JfdmlueWxfc3RpY2tlciI6dHJ1ZSwiaXNfZXhwbGljaXQiOmZhbHNlLCJpc19vcmlnaW5hbF9hdWRpb19kb3dubG9hZF9lbGlnaWJsZSI6dHJ1ZSwiaXNfcmV1c2VfZGlzYWJsZWQiOmZhbHNlLCJpc194cG9zdF9mcm9tX2ZiIjpmYWxzZSwib2Ffb3duZXJfaXNfbXVzaWNfYXJ0aXN0IjpmYWxzZSwib3JpZ2luYWxfYXVkaW9fc3VidHlwZSI6ImRlZmF1bHQiLCJvcmlnaW5hbF9hdWRpb190aXRsZSI6Ik9yaWdpbmFsIGF1ZGlvIiwib3JpZ2luYWxfbWVkaWFfaWQiOjM1NzA3OTc0OTA0MTgxODI4MjEsIm92ZXJsYXBfZHVyYXRpb25faW5fbXMiOm51bGwsInByZXZpb3VzX3RyZW5kX3JhbmsiOm51bGwsInByb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUVBGcXhEUFJtNnRhTmM2WnNpdXZqc0pCSHUwZm50UGV0S1l3SHI0X2ZUdGd2TXFubXRtbDBHNnNrMnZpWGs3QlFtb29mQjFwdml0bkV4dnloSXlYcWkzLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEwMyZfbmNfc2lkPThiZjhmZSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldCZfbmNfb2hjPWM4eGxDZmtDem1NUTdrTnZnSHYtZmx0JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkluaHdkbDl3Y205bmNtVnpjMmwyWlM1QlZVUkpUMTlQVGt4WkxpNURNeTR3TG5CeWIyZHlaWE56YVhabFgyRjFaR2x2SWl3aWVIQjJYMkZ6YzJWMFgybGtJam94TmpFM01qVTFOVFE1TVRVeE16SXlMQ0oxY214blpXNWZjMjkxY21ObElqb2lkM2QzSW4wJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZQ0ZSMWdHcngxeG9jcW85aGg1LUNnNzZMbzlVMXNBRmxZY0ZFMGZlR0dZWEEmb2U9NjdCQjM3RDMiLCJzaG91bGRfbXV0ZV9hdWRpbyI6ZmFsc2UsInRpbWVfY3JlYXRlZCI6MTczOTg5MjQzNSwidHJlbmRfcmFuayI6bnVsbCwieHBvc3RfZmJfY3JlYXRvcl9pbmZvIjpudWxsfSwib3JpZ2luYWxpdHlfaW5mbyI6bnVsbCwicHJvZmVzc2lvbmFsX2NsaXBzX3Vwc2VsbF90eXBlIjowLCJyZWVsc19vbl90aGVfcmlzZV9pbmZvIjpudWxsLCJyZXVzYWJsZV90ZXh0X2F0dHJpYnV0ZV9zdHJpbmciOm51bGwsInJldXNhYmxlX3RleHRfaW5mbyI6bnVsbCwic2hvcHBpbmdfaW5mbyI6bnVsbCwic2hvd19hY2hpZXZlbWVudHMiOmZhbHNlLCJzaG93X3RpcHMiOm51bGwsInRlbXBsYXRlX2luZm8iOm51bGwsInZpZXdlcl9pbnRlcmFjdGlvbl9zZXR0aW5ncyI6bnVsbH0sImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdPQldZTk8ycWwiLCJjb21tZW50X2NvdW50IjozOSwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNyZWF0b3Jfdmlld2VyX2luc2lnaHRzIjpbXSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjE3Mzk4OTIyNTI3ODIzOTIsImZiX2FnZ3JlZ2F0ZWRfY29tbWVudF9jb3VudCI6MCwiZmJfYWdncmVnYXRlZF9saWtlX2NvdW50IjowLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmJpZCI6IjE4MzkxNjAwODYxMDk5OTQxIiwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJmZWVkX3R5cGUiOiJjbGlwcyIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJOT05FIn0sImhhc19hdWRpbyI6dHJ1ZSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU3MDc5NzQ5MDQxODE4MjgyMSIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ19wbGF5X2NvdW50Ijo3Njc0MSwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiYWRkaXRpb25hbF9pdGVtcyI6eyJmaXJzdF9mcmFtZSI6eyJoZWlnaHQiOjYzOSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDQyNzQxNV81MzU5ODkwODIyNDE0MTNfNjQwNDc1MTMzMzYyNDIyMjUzOF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG1Ga1pHbDBhVzl1WVd4ZlkyOTJaWEpmWm5KaGJXVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Vkx5dHlEZG9IcGdRN2tOdmdFZS1rQkgmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBeDFjLXNMazFKd3FGSlhSRHFXRmxiR3AxMjJFTkxvT3JmTHFWZTZYb1NnZyZvZT02N0JCNjgyRCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9LCJpZ3R2X2ZpcnN0X2ZyYW1lIjp7ImhlaWdodCI6NjM5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNDI3NDE1XzUzNTk4OTA4MjI0MTQxM182NDA0NzUxMzMzNjI0MjIyNTM4X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDJOREI0TVRFek5pNXpaSEl1WmpjeE9EYzRMbUZrWkdsMGFXOXVZV3hmWTI5MlpYSmZabkpoYldVaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1WTHl0eURkb0hwZ1E3a052Z0VlLWtCSCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUF4MWMtc0xrMUp3cUZKWFJEcVdGbGJHcDEyMkVOTG9PcmZMcVZlNlhvU2dnJm9lPTY3QkI2ODJEJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH0sInNtYXJ0X2ZyYW1lIjpudWxsfSwiaXRlbXMiOlt7ImhlaWdodCI6NjM5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDMyMTI3XzEzNjA0NjU0MTUxMDg5NTFfMjQ3NDk4ODI5MDU4Mjk1Njk0N19uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG01bWNtRnRaVjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OC1xYTQ2bU9qaTRRN2tOdmdFY1lieHAmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGM1TnpRNU1EUXhPREU0TWpneU1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXg3Rm1WV09scUNZQUZMa2t2Z2hKZW9ldlJPbUd1WHlXdVBObHN5MmpLc1Emb2U9NjdCQjYzODcmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6NDUyLCJtYXhfdGh1bWJuYWlsc19wZXJfc3ByaXRlIjoxMDUsInJlbmRlcmVkX3dpZHRoIjo5Niwic3ByaXRlX2hlaWdodCI6MTI0Niwic3ByaXRlX3VybHMiOlsiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDE0MzU4NF82ODk0NTQ3NjM2MDI5NzZfNTE1OTkxMzQyMDc1NTY3ODE4Ml9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Mi02T20tLXhaNjRRN2tOdmdGWXNvSEImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBcG9HalozeVZhbjNiQUZDR3lmU3BxdS10OTZIeVAzcTZ1STlwM0hUSEdkdyZvZT02N0JCNDdFQiZfbmNfc2lkPTIwMTFhZCJdLCJzcHJpdGVfd2lkdGgiOjE1MDAsInRodW1ibmFpbF9kdXJhdGlvbiI6MC4xMDgyNTcxNDI4NTcxNDI4NywidGh1bWJuYWlsX2hlaWdodCI6MTc4LCJ0aHVtYm5haWxfd2lkdGgiOjEwMCwidGh1bWJuYWlsc19wZXJfcm93IjoxNSwidG90YWxfdGh1bWJuYWlsX251bV9wZXJfc3ByaXRlIjoxMDUsInZpZGVvX2xlbmd0aCI6MTEuMzY3fX19LCJpbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoicGVuZGluZyIsImludmVudG9yeV9zb3VyY2UiOiJyZWNvbW1lbmRlZF9jbGlwc19jaGFpbmluZ19tb2RlbCIsImludml0ZWRfY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiaXNfYXJ0aXN0X3BpY2siOmZhbHNlLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19xdWlldF9wb3N0IjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfcmV1c2VfYWxsb3dlZCI6dHJ1ZSwiaXNfc29jaWFsX3VmaV9kaXNhYmxlZCI6ZmFsc2UsImlzX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fdmlld2VyX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX3RoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbGlnaWJsZSI6dHJ1ZSwiaXNfdmlkZW8iOnRydWUsImxheW91dF90eXBlIjoib25lX2J5X3R3b19sZWZ0IiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo1MjQsIm1lZGlhX2Nyb3BwaW5nX2luZm8iOnsic3F1YXJlX2Nyb3AiOnsiY3JvcF9ib3R0b20iOjAuNzE4ODcwMzQ2NTk4MjAyNywiY3JvcF9sZWZ0IjowLjAsImNyb3BfcmlnaHQiOjEuMCwiY3JvcF90b3AiOjAuMTU2NjExMDM5Nzk0NjA4NDR9fSwibWVkaWFfZm9ybWF0IjoidmlkZW8iLCJtZWRpYV9uYW1lIjoicmVlbCIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjIsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6bnVsbCwibnVtYmVyX29mX3F1YWxpdGllcyI6Nywib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcmlnaW5hbF9oZWlnaHQiOjE5MjAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzA3OTc0OTA0MTgxODI4MjEiLCJwbGF5X2NvdW50Ijo3Njc0MSwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjbGlwcyIsInJlc2hhcmVfY291bnQiOjExOCwic2hhcmVfY291bnRfZGlzYWJsZWQiOmZhbHNlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInNvY2lhbF9jb250ZXh0IjpbXSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk4OTI0MzEsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDMyMTI3XzEzNjA0NjU0MTUxMDg5NTFfMjQ3NDk4ODI5MDU4Mjk1Njk0N19uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG01bWNtRnRaVjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OC1xYTQ2bU9qaTRRN2tOdmdFY1lieHAmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGM1TnpRNU1EUXhPREU0TWpneU1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXg3Rm1WV09scUNZQUZMa2t2Z2hKZW9ldlJPbUd1WHlXdVBObHN5MmpLc1Emb2U9NjdCQjYzODcmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidHJhbnNsYXRlZF92aWRlb19zdWJ0aXRsZXMiOlt7Imxhbmd1YWdlIjoiZW4iLCJ1cmkiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjM2NzQzLTYvNDgwMjQzNzk4XzQwODI2MTE3NTg3MzE2NzBfMTYzNTQ4MDU2MDY3NTEyNTE3Nl9uLnNydD9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9bWV2LUlld0tnM2tRN2tOdmdIT0NMRHQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmb2g9MDBfQVlEanVwNnJrNUl1ZWNnb1UxMXdyaWlwUzlXZU9Sc3daUHFOQjBLdmR5NmxEZyZvZT02N0JCNTBEMyZfbmNfc2lkPTIwMTFhZCJ9XSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwNjc3OTEzMzYxLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkVkaWVsIENvc3RhIOKchSIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyMTUxMjY1OTciLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJsYXRlc3RfcmVlbF9tZWRpYSI6MTczOTg4MDQ5NywicHJvZmlsZV9waWNfaWQiOiIzMDA4NTYwOTA0MDQ1MTg4MDY5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzMyMzM2NzAwNV81ODUwNjk2MDAxMjE1MTFfNDE3MjMwNzI1Nzg2NzQzNTc3MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz14QklBV29RdTl2WVE3a052Z0YtajE1QyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNUelBoc1ZKb1Q3TWdNb05TS25pYlExSWcxQUNPazZXaHBfcU5ZemdjV2V3Jm9lPTY3QkI1Q0M3Jl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoiZWRpZWxjb3N0YSJ9LCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wMU0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjoxMS4zNjcsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W10sInZpZGVvX3N1YnRpdGxlc19jb25maWRlbmNlIjowLjUwOTk5OTk5MDQ2MzI1NjgsInZpZGVvX3N1YnRpdGxlc19sb2NhbGUiOiJwdF9CUiIsInZpZGVvX3N1YnRpdGxlc191cmkiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjM2NzQzLTYvNDgwMjkzNTc3Xzk2MjI1Nzc1OTI3MTE2NF82ODcyNDU3MzgwMjU4NzczNjJfbi5zcnQ/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTJTNk1UVU0tcE5BUTdrTnZnR3c4blpTJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQWROeUVPNzdyLVd0VlV3V3JESkhWVlZtbjEyQ2RfajlEQVRSSDNTUnpzQ1Emb2U9NjdCQjRCMEYmX25jX3NpZD0yMDExYWQiLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU82NnQ2TndmOUdUYVc0ZktRT3NldW1QSnJrWDdFTXZUNUdrTkhIUmxXMjhsNFJfY3MxYVhaWlVCSXpMbUZSVnZUcXAtenpEN1k1ckZPbzVpcVRRLUhsbTUwQ2pWQjdkZXZVS2NZLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUyTVRjeU5UVTFORGt4TlRFek1qSXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPTdjZjFlM2I2MjIwNTlhYjQmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDODRPRFE0TnpGRVFUUXhORVZFUVRKQ09UWXlSVFpDT0RnM05EQkNRa05CTlY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRGZWt4eFFuZFpNbUZ0U0cxS1JVaEJUMUpxYjJSNlVYbzJVbkJpY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnJTaHBlalV1TjhGRlFJb0FrTXpMQmRBSnJ0a1doeXNDQmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUNYSm9IbnJUUEgyMDgzZ2JuRUIwd1ZmaVZtaG5ReDd0VmQtZTZqYnBVUnh3Jm9lPTY3Qjc0QjYzJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6MTMzMzc3NSwiaGVpZ2h0IjoxMjgwLCJpZCI6IjE0MjMyNTY2NTE5NzM1MzF2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU82NnQ2TndmOUdUYVc0ZktRT3NldW1QSnJrWDdFTXZUNUdrTkhIUmxXMjhsNFJfY3MxYVhaWlVCSXpMbUZSVnZUcXAtenpEN1k1ckZPbzVpcVRRLUhsbTUwQ2pWQjdkZXZVS2NZLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUyTVRjeU5UVTFORGt4TlRFek1qSXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPTdjZjFlM2I2MjIwNTlhYjQmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDODRPRFE0TnpGRVFUUXhORVZFUVRKQ09UWXlSVFpDT0RnM05EQkNRa05CTlY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRGZWt4eFFuZFpNbUZ0U0cxS1JVaEJUMUpxYjJSNlVYbzJVbkJpY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnJTaHBlalV1TjhGRlFJb0FrTXpMQmRBSnJ0a1doeXNDQmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUNYSm9IbnJUUEgyMDgzZ2JuRUIwd1ZmaVZtaG5ReDd0VmQtZTZqYnBVUnh3Jm9lPTY3Qjc0QjYzJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjEzMzM3NzUsImhlaWdodCI6MTI4MCwiaWQiOiIxNDIzMjU2NjUxOTczNTMxdiIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFPNjZ0Nk53ZjlHVGFXNGZLUU9zZXVtUEpya1g3RU12VDVHa05ISFJsVzI4bDRSX2NzMWFYWlpVQkl6TG1GUlZ2VHFwLXp6RDdZNXJGT281aXFUUS1IbG01MENqVkI3ZGV2VUtjWS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFMk1UY3lOVFUxTkRreE5URXpNaklzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURURWxRVXk1RE15NDNNakF1WkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz03Y2YxZTNiNjIyMDU5YWI0Jl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzg0T0RRNE56RkVRVFF4TkVWRVFUSkNPVFl5UlRaQ09EZzNOREJDUWtOQk5WOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkRmVreHhRbmRaTW1GdFNHMUtSVWhCVDFKcWIyUjZVWG8yVW5CaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpyU2hwZWpVdU44RkZRSW9Ba016TEJkQUpydGtXaHlzQ0JnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlDWEpvSG5yVFBIMjA4M2dibkVCMHdWZmlWbWhuUXg3dFZkLWU2amJwVVJ4dyZvZT02N0I3NEI2MyZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9LHsiYmFuZHdpZHRoIjoxMzMzNzc1LCJoZWlnaHQiOjEyODAsImlkIjoiMTQyMzI1NjY1MTk3MzUzMXYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg2L0FRTzY2dDZOd2Y5R1RhVzRmS1FPc2V1bVBKcmtYN0VNdlQ1R2tOSEhSbFcyOGw0Ul9jczFhWFpaVUJJekxtRlJWdlRxcC16ekQ3WTVyRk9vNWlxVFEtSGxtNTBDalZCN2RldlVLY1kubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRTJNVGN5TlRVMU5Ea3hOVEV6TWpJc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEVEVsUVV5NURNeTQzTWpBdVpHRnphRjlpWVhObGJHbHVaVjh4WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9N2NmMWUzYjYyMjA1OWFiNCZfbmNfdnM9SEJrc0ZRSVlVbWxuWDNod2RsOXlaV1ZzYzE5d1pYSnRZVzVsYm5SZmMzSmZjSEp2WkM4NE9EUTROekZFUVRReE5FVkVRVEpDT1RZeVJUWkNPRGczTkRCQ1FrTkJOVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEZla3h4UW5kWk1tRnRTRzFLUlVoQlQxSnFiMlI2VVhvMlVuQmljVjlGUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKclNocGVqVXVOOEZGUUlvQWtNekxCZEFKcnRrV2h5c0NCZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxX2djQSZjY2I9OS00Jm9oPTAwX0FZQ1hKb0huclRQSDIwODNnYm5FQjB3VmZpVm1oblF4N3RWZC1lNmpicFVSeHcmb2U9NjdCNzRCNjMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6NzIwfV0sInZpZXdfc3RhdGVfaXRlbV90eXBlIjoxMjh9LHsiYXJlX3JlbWl4ZXNfY3Jvc3Nwb3N0YWJsZSI6dHJ1ZSwiYXZhdGFyX3N0aWNrZXJzIjpbXSwiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5NjAxMjM5LCJjcmVhdGVkX2F0X3V0YyI6MTczOTYwMTIzOSwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzaHRhZ3MiOlsiI2FpIiwiI3BlcnBsZXhpdHkiLCIjYXJ0aWZpY2lhbGludGVsbGlnZW5jZSIsIiNhaXRvb2xzIiwiI2RlZXByZXNlYXJjaCIsIiNjaGF0Z3B0IiwiI29wZW5haSIsIiNhaW5ld3MiXSwiaWQiOiIzNTY4MzU1NzA1OTk4MzY1MjYwIiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOltdLCJwayI6IjE4MDMwMzAyNTMxMzA5NzA2IiwicHJpdmF0ZV9yZXBseV9zdGF0dXMiOjAsInNoYXJlX2VuYWJsZWQiOmZhbHNlLCJ0ZXh0IjoiUGVycGxleGl0eSBEZWVwIFJlc2VhcmNoIGlzIE5vdyBGUkVFISDwn6egICNhaSAjcGVycGxleGl0eSAjYXJ0aWZpY2lhbGludGVsbGlnZW5jZSAjYWl0b29scyAjZGVlcHJlc2VhcmNoICNjaGF0Z3B0ICNvcGVuYWkgI2FpbmV3cyIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0MDAxMTIyMDM0OTAsImZ1bGxfbmFtZSI6Ik1hdHQgRmFybWVyIiwiaWQiOiIyMjMzNjM3NDAiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzNTY5ODExNTk2NjIyNzc4MDMxIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ4MDMwMDU1N18xMzI3NTQyNzMxNzA3MzY1XzM5OTgwMDg5MDQ2NjI1MDE5OTlfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz02SmpQTDR3UWJ0VVE3a052Z0hfaFZlaiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNCVFlUNVJxWVc4Y29RSW4tT3VkVEpONW1HVUtQUzZiQVI1Vmdjdk1Pc3p3Jm9lPTY3QkI1NjY5Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJtYXR0ZmFybWVyYWkifSwidXNlcl9pZCI6IjIyMzM2Mzc0MCJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNsaXBzX21ldGFkYXRhIjp7ImFjaGlldmVtZW50c19pbmZvIjp7Im51bV9lYXJuZWRfYWNoaWV2ZW1lbnRzIjpudWxsLCJzaG93X2FjaGlldmVtZW50cyI6ZmFsc2V9LCJhZGRpdGlvbmFsX2F1ZGlvX2luZm8iOnsiYWRkaXRpb25hbF9hdWRpb191c2VybmFtZSI6bnVsbCwiYXVkaW9fcmVhdHRyaWJ1dGlvbl9pbmZvIjp7InNob3VsZF9hbGxvd19yZXN0b3JlIjpmYWxzZX19LCJhc3NldF9yZWNvbW1lbmRhdGlvbl9pbmZvIjpudWxsLCJhdWRpb19jYW5vbmljYWxfaWQiOiIxODQ0MzcyNTI3MDA3Njc2MCIsImF1ZGlvX3JhbmtpbmdfaW5mbyI6eyJiZXN0X2F1ZGlvX2NsdXN0ZXJfaWQiOiIyMDIzMjUyMDA4MTQ4OTI5In0sImF1ZGlvX3R5cGUiOiJvcmlnaW5hbF9zb3VuZHMiLCJicmFuZGVkX2NvbnRlbnRfdGFnX2luZm8iOnsiY2FuX2FkZF90YWciOmZhbHNlfSwiYnJlYWtpbmdfY29udGVudF9pbmZvIjpudWxsLCJicmVha2luZ19jcmVhdG9yX2luZm8iOm51bGwsImNoYWxsZW5nZV9pbmZvIjpudWxsLCJjbGlwc19jcmVhdGlvbl9lbnRyeV9wb2ludCI6ImNsaXBzIiwiY29udGVudF9hcHByZWNpYXRpb25faW5mbyI6eyJlbmFibGVkIjp0cnVlLCJlbnRyeV9wb2ludF9jb250YWluZXIiOnsiY29tbWVudCI6eyJhY3Rpb25fdHlwZSI6ImdpZnRpbmcifSwib3ZlcmZsb3ciOm51bGwsInBpbGwiOnsiYWN0aW9uX3R5cGUiOiJnaWZ0aW5nIiwicHJpb3JpdHkiOjF9LCJ1ZmkiOm51bGx9fSwiY29udGV4dHVhbF9oaWdobGlnaHRfaW5mbyI6bnVsbCwiY3V0b3V0X3N0aWNrZXJfaW5mbyI6W10sImRpc2FibGVfdXNlX2luX2NsaXBzX2NsaWVudF9jYWNoZSI6ZmFsc2UsImV4dGVybmFsX21lZGlhX2luZm8iOm51bGwsImZlYXR1cmVkX2xhYmVsIjpudWxsLCJpc19mYW5fY2x1Yl9wcm9tb192aWRlbyI6ZmFsc2UsImlzX3B1YmxpY19jaGF0X3dlbGNvbWVfdmlkZW8iOmZhbHNlLCJpc19zaGFyZWRfdG9fZmIiOnRydWUsIm1hc2h1cF9pbmZvIjp7ImNhbl90b2dnbGVfbWFzaHVwc19hbGxvd2VkIjpmYWxzZSwiZm9ybWF0dGVkX21hc2h1cHNfY291bnQiOm51bGwsImhhc19iZWVuX21hc2hlZF91cCI6dHJ1ZSwiaGFzX25vbm1pbWljYWJsZV9hZGRpdGlvbmFsX2F1ZGlvIjpmYWxzZSwiaXNfY3JlYXRvcl9yZXF1ZXN0aW5nX21hc2h1cCI6ZmFsc2UsImlzX2xpZ2h0X3dlaWdodF9jaGVjayI6dHJ1ZSwiaXNfbGlnaHRfd2VpZ2h0X3JldXNlX2FsbG93ZWRfY2hlY2siOmZhbHNlLCJpc19waXZvdF9wYWdlX2F2YWlsYWJsZSI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOnRydWUsIm1hc2h1cF90eXBlIjpudWxsLCJtYXNodXBzX2FsbG93ZWQiOnRydWUsIm5vbl9wcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOjIsIm9yaWdpbmFsX21lZGlhIjpudWxsLCJwcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOm51bGx9LCJtZXJjaGFuZGlzaW5nX3BpbGxfaW5mbyI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwibnV4X2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOnsiYWxsb3dfY3JlYXRvcl90b19yZW5hbWUiOnRydWUsImF0dHJpYnV0ZWRfY3VzdG9tX2F1ZGlvX2Fzc2V0X2lkIjpudWxsLCJhdWRpb19hc3NldF9zdGFydF90aW1lX2luX21zIjpudWxsLCJhdWRpb19maWx0ZXJfaW5mb3MiOltdLCJhdWRpb19pZCI6OTk3MDg4OTQ5MDAyODk5LCJhdWRpb19wYXJ0cyI6W10sImF1ZGlvX3BhcnRzX2J5X2ZpbHRlciI6W10sImNhbl9yZW1peF9iZV9zaGFyZWRfdG9fZmIiOnRydWUsImNhbl9yZW1peF9iZV9zaGFyZWRfdG9fZmJfZXhwYW5zaW9uIjpmYWxzZSwiY29uc3VtcHRpb25faW5mbyI6eyJkaXNwbGF5X21lZGlhX2lkIjpudWxsLCJpc19ib29rbWFya2VkIjpmYWxzZSwiaXNfdHJlbmRpbmdfaW5fY2xpcHMiOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb24iOiIiLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb25fdHlwZSI6bnVsbH0sImR1cmF0aW9uX2luX21zIjo4ODUxNSwiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn0sImZvcm1hdHRlZF9jbGlwc19tZWRpYV9jb3VudCI6bnVsbCwiaGlkZV9yZW1peGluZyI6ZmFsc2UsImlnX2FydGlzdCI6eyJmdWxsX25hbWUiOiJNYXR0IEZhcm1lciIsImlkIjoiMjIzMzYzNzQwIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM1Njk4MTE1OTY2MjI3NzgwMzEiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDgwMzAwNTU3XzEzMjc1NDI3MzE3MDczNjVfMzk5ODAwODkwNDY2MjUwMTk5OV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTZKalBMNHdRYnRVUTdrTnZnSF9oVmVqJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ0JUWVQ1UnFZVzhjb1FJbi1PdWRUSk41bUdVS1BTNmJBUjVWZ2N2TU9zencmb2U9NjdCQjU2NjkmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6Im1hdHRmYXJtZXJhaSJ9LCJpc19hdWRpb19hdXRvbWF0aWNhbGx5X2F0dHJpYnV0ZWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfYXVkaW9fZWZmZWN0cyI6dHJ1ZSwiaXNfZWxpZ2libGVfZm9yX3ZpbnlsX3N0aWNrZXIiOnRydWUsImlzX2V4cGxpY2l0IjpmYWxzZSwiaXNfb3JpZ2luYWxfYXVkaW9fZG93bmxvYWRfZWxpZ2libGUiOmZhbHNlLCJpc19yZXVzZV9kaXNhYmxlZCI6ZmFsc2UsImlzX3hwb3N0X2Zyb21fZmIiOmZhbHNlLCJvYV9vd25lcl9pc19tdXNpY19hcnRpc3QiOmZhbHNlLCJvcmlnaW5hbF9hdWRpb19zdWJ0eXBlIjoiZGVmYXVsdCIsIm9yaWdpbmFsX2F1ZGlvX3RpdGxlIjoiT3JpZ2luYWwgYXVkaW8iLCJvcmlnaW5hbF9tZWRpYV9pZCI6MzU2ODM1NTcwNTk5ODM2NTI2MCwib3ZlcmxhcF9kdXJhdGlvbl9pbl9tcyI6bnVsbCwicHJldmlvdXNfdHJlbmRfcmFuayI6bnVsbCwicHJvZ3Jlc3NpdmVfZG93bmxvYWRfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L28xL3YvdDIvZjIvbTY5L0FRUHB2aU5OR2tld2lSc1dFUW9Oa2JhekwyczZ5ejZwLUNmeUl0amZRM0VYWmpGMW5lSUFWaEJveDFreXg2NXM3WHYtMjJ4LVRxZzUzd29tUnBfd3U3MEoubXA0P3N0cmV4dD0xJl9uY19jYXQ9MTA2Jl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9ZXF3bkhKMEtxZlVRN2tOdmdFOU9oZkQmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqbzFPVE0yTkRFek1ETTJOREF4TWprc0luVnliR2RsYmw5emIzVnlZMlVpT2lKM2QzY2lmUSUzRCUzRCZjY2I9OS00Jl9uY196dD0yOCZvaD0wMF9BWUEzaXZrX3A0UEVDMk5ieGVheEVDQ1V5dGZ6cUdkVFZFWVdYTU9adnBjMU1BJm9lPTY3QkI0RDQ0Iiwic2hvdWxkX211dGVfYXVkaW8iOmZhbHNlLCJ0aW1lX2NyZWF0ZWQiOjE3Mzk2MDEyNDEsInRyZW5kX3JhbmsiOm51bGwsInhwb3N0X2ZiX2NyZWF0b3JfaW5mbyI6bnVsbH0sIm9yaWdpbmFsaXR5X2luZm8iOm51bGwsInByb2Zlc3Npb25hbF9jbGlwc191cHNlbGxfdHlwZSI6MCwicmVlbHNfb25fdGhlX3Jpc2VfaW5mbyI6bnVsbCwicmV1c2FibGVfdGV4dF9hdHRyaWJ1dGVfc3RyaW5nIjpudWxsLCJyZXVzYWJsZV90ZXh0X2luZm8iOm51bGwsInNob3BwaW5nX2luZm8iOm51bGwsInNob3dfYWNoaWV2ZW1lbnRzIjpmYWxzZSwic2hvd190aXBzIjpudWxsLCJ0ZW1wbGF0ZV9pbmZvIjpudWxsLCJ2aWV3ZXJfaW50ZXJhY3Rpb25fc2V0dGluZ3MiOm51bGx9LCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHRldKdlFSVkpNIiwiY29tbWVudF9jb3VudCI6MTUsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcmVhdGl2ZV9jb25maWciOnsiY2FwdHVyZV90eXBlIjoiY2xpcHNfdjIiLCJjcmVhdGlvbl90b29sX2luZm8iOlt7ImFwcGVhcmFuY2VfZWZmZWN0IjowLCJjYW1lcmFfdG9vbCI6OTcsImNvbG9yX2ZpbHRlcnMiOiIiLCJkdXJhdGlvbl9zZWxlY3Rvcl9zZWNvbmRzIjowLCJtYWdpY19jdXRfZW5kX3RpbWUiOjAuMCwibWFnaWNfY3V0X3N0YXJ0X3RpbWUiOjAuMCwic3BlZWRfc2VsZWN0b3IiOjAuMCwidGltZXJfc2VsZWN0b3Jfc2Vjb25kcyI6MH1dLCJlZmZlY3RfY29uZmlncyI6bnVsbH0sImNyZWF0b3Jfdmlld2VyX2luc2lnaHRzIjpbXSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjY1NjQ0NjcyNzg2ODAyMSwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX2xpa2VfY291bnQiOjIsImZiX3BsYXlfY291bnQiOjEyMiwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxODAzMDMwMjQ3MTMwOTcwNiIsImZlZWRfdHlwZSI6ImNsaXBzIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2F1ZGlvIjp0cnVlLCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTY4MzU1NzA1OTk4MzY1MjYwIiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnX3BsYXlfY291bnQiOjIyMTYzLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJhZGRpdGlvbmFsX2l0ZW1zIjp7ImZpcnN0X2ZyYW1lIjp7ImhlaWdodCI6NjM5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NTEzMzgxXzYzMTEwNzU0OTMyOTE0OF8xMDg1NjY1OTUwMzA3NzE0MjE1X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDJOREI0TVRFek5pNXpaSEl1WmpjeE9EYzRMbUZrWkdsMGFXOXVZV3hmWTI5MlpYSmZabkpoYldVaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1aNXdxOVZJcVJOQVE3a052Z0ZvVE1NdCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWURya3VydmYtUnc5WXZSeDFqazlvd2hVd0M2eXJtMi1HZF9PQTlNTjhSRUZnJm9lPTY3QkI0QUNGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH0sImlndHZfZmlyc3RfZnJhbWUiOnsiaGVpZ2h0Ijo2MzksInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk1MTMzODFfNjMxMTA3NTQ5MzI5MTQ4XzEwODU2NjU5NTAzMDc3MTQyMTVfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0Mk5EQjRNVEV6Tmk1elpISXVaamN4T0RjNExtRmtaR2wwYVc5dVlXeGZZMjkyWlhKZlpuSmhiV1VpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVo1d3E5VklxUk5BUTdrTnZnRm9UTU10Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZRHJrdXJ2Zi1SdzlZdlJ4MWprOW93aFV3QzZ5cm0yLUdkX09BOU1OOFJFRmcmb2U9NjdCQjRBQ0YmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfSwic21hcnRfZnJhbWUiOm51bGx9LCJpdGVtcyI6W3siaGVpZ2h0Ijo2MzksInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjkzNTAtMTUvNDc5NTUzMzE0XzEwNzA3MDE4NTgxNTQzMDdfNDIxMjQxODc3NTA2ODQ2NzQ5NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqSTVNelV3TG1SbFptRjFiSFJmWTI5MlpYSmZabkpoYldVaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz02RUwxeWk2MFg4b1E3a052Z0dYTFRSLSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9ETTFOVGN3TlRrNU9ETTJOVEkyTUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEa2tvbVBGZnpsYlBvLWhVRG5XVE9FZnU3R3FLRkpuREtjWS1lTTN3U2o4dyZvZT02N0JCNDg0RiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjozNDcsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0IjoxMjQ2LCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NDIxMTUzXzE5NzIzODczODk5MjQ2NjhfODY2ODIxNDA4MzcwODA1ODE5MF9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9dTkxRE9Qc3lDRkFRN2tOdmdGcV9qbE4mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCWHg0R2RQdHNpQVFzRGs3bkVkeWthVFZHb2l5NDF1VWg3SU8zejVicVkwUSZvZT02N0JCNDM0NCZfbmNfc2lkPTIwMTFhZCJdLCJzcHJpdGVfd2lkdGgiOjE1MDAsInRodW1ibmFpbF9kdXJhdGlvbiI6MC44NDI5OTA0NzYxOTA0NzYyLCJ0aHVtYm5haWxfaGVpZ2h0IjoxNzgsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjo4OC41MTR9fX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52ZW50b3J5X3NvdXJjZSI6InJlY29tbWVuZGVkX2NsaXBzX2NoYWluaW5nX21vZGVsIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19hcnRpc3RfcGljayI6ZmFsc2UsImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3F1aWV0X3Bvc3QiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjp0cnVlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdGhpcmRfcGFydHlfZG93bmxvYWRzX2VsaWdpYmxlIjpmYWxzZSwiaXNfdmlkZW8iOnRydWUsImxheW91dF90eXBlIjoib25lX2J5X3R3b19sZWZ0IiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo5ODEsIm1heF9udW1fdmlzaWJsZV9wcmV2aWV3X2NvbW1lbnRzIjowLCJtZWRpYV9jcm9wcGluZ19pbmZvIjp7ImZvdXJfYnlfdGhyZWVfY3JvcCI6eyJjcm9wX2JvdHRvbSI6MC4wLCJjcm9wX2xlZnQiOjAuMCwiY3JvcF9yaWdodCI6MC4wLCJjcm9wX3RvcCI6MC4wfX0sIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6InJlZWwiLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjoyLCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOm51bGwsIm51bWJlcl9vZl9xdWFsaXRpZXMiOjgsIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3JpZ2luYWxfaGVpZ2h0IjoxOTIwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY4MzU1NzA1OTk4MzY1MjYwIiwicGxheV9jb3VudCI6MjIyODUsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2xpcHMiLCJyZXNoYXJlX2NvdW50Ijo0NjQsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzb2NpYWxfY29udGV4dCI6W10sInN1YnNjcmliZV9jdGFfdmlzaWJsZSI6ZmFsc2UsInRha2VuX2F0IjoxNzM5NjAxMjM4LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yOTM1MC0xNS80Nzk1NTMzMTRfMTA3MDcwMTg1ODE1NDMwN180MjEyNDE4Nzc1MDY4NDY3NDk0X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDJOREI0TVRFek5pNXpaSEl1WmpJNU16VXdMbVJsWm1GMWJIUmZZMjkyWlhKZlpuSmhiV1VpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTZFTDF5aTYwWDhvUTdrTnZnR1hMVFItJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RNMU5UY3dOVGs1T0RNMk5USTJNQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURra29tUEZmemxiUG8taFVEbldUT0VmdTdHcUtGSm5ES2NZLWVNM3dTajh3Jm9lPTY3QkI0ODRGJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6W10sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQwMDExMjIwMzQ5MCwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJNYXR0IEZhcm1lciIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyMjMzNjM3NDAiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJsYXRlc3RfcmVlbF9tZWRpYSI6MCwicHJvZmlsZV9waWNfaWQiOiIzNTY5ODExNTk2NjIyNzc4MDMxIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ4MDMwMDU1N18xMzI3NTQyNzMxNzA3MzY1XzM5OTgwMDg5MDQ2NjI1MDE5OTlfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz02SmpQTDR3UWJ0VVE3a052Z0hfaFZlaiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNCVFlUNVJxWVc4Y29RSW4tT3VkVEpONW1HVUtQUzZiQVI1Vmdjdk1Pc3p3Jm9lPTY3QkI1NjY5Jl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoibWF0dGZhcm1lcmFpIn0sInZpZGVvX2NvZGVjIjoidnAwOS4wMC4zMC4wOC4wMC4wMS4wMS4wMS4wMCIsInZpZGVvX2R1cmF0aW9uIjo4OC41MTQsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W10sInZpZGVvX3N1YnRpdGxlc19jb25maWRlbmNlIjowLjQ0OTk5OTk4ODA3OTA3MTA0LCJ2aWRlb19zdWJ0aXRsZXNfbG9jYWxlIjoiZW5fVVMiLCJ2aWRlb19zdWJ0aXRsZXNfdXJpIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zNjc0My02LzQ4MDA1NDYwOF80ODI0ODUwMDQ3Mjc2NTdfNDczMTM2MDMzNzg4MjU3NzM0OF9uLnNydD9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9b0w3QkhlV01tMFFRN2tOdmdGVTBYTUsmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmb2g9MDBfQVlCRDNaR05rN1RWZC14SlVTdWhtRS1GdVB1REtuMGxiTkZIMjM5cUhxSjVEdyZvZT02N0JCNDA0OSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg2L0FRT0xnVEk4RkhDTFpsV0MxU21TSnVaXzE4UEMtS3NQNUgzOU5qSUlDLVNtWTdiTlp1QVFrRjBtNk1oVE1MeEE3aVRLWllqcnFxUzh1azA4TEhHekRIdFQ3ZDNISUtOdDF4RVBVMWsubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVTVNelkwTVRNd016WTBNREV5T1N3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05NU1ZCVExrTXpMamN5TUM1a1lYTm9YMkpoYzJWc2FXNWxYekZmZGpFaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZ2cz02NDIxM2Q2OThiNzI5MTE1Jl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzlCUXpSRlFUZ3lSRGRDTTBJMk1qVkJOalV6TXpFNU0wUXhNa0kwUXpnNU5sOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkRWJXeGtlSHB4VFVRd1pqVXhhME5CUldsc05qUjJVMGRmYUd0aWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpvS2h1TEM4LW8wQ0ZRSW9Ba016TEJkQVZoc1NicGVOVUJnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlCMk1oMVp6NWlaMTJwbTc1U1d2VEhkdFRNU1lDR2J4UnpDc2x6SzR6UWNrQSZvZT02N0I3NjZGNSZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjk2MDI4OSwiaGVpZ2h0IjoxMjgwLCJpZCI6IjYxNDA4NzI3NDY5ODI1OXYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg2L0FRT0xnVEk4RkhDTFpsV0MxU21TSnVaXzE4UEMtS3NQNUgzOU5qSUlDLVNtWTdiTlp1QVFrRjBtNk1oVE1MeEE3aVRLWllqcnFxUzh1azA4TEhHekRIdFQ3ZDNISUtOdDF4RVBVMWsubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVTVNelkwTVRNd016WTBNREV5T1N3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05NU1ZCVExrTXpMamN5TUM1a1lYTm9YMkpoYzJWc2FXNWxYekZmZGpFaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZ2cz02NDIxM2Q2OThiNzI5MTE1Jl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzlCUXpSRlFUZ3lSRGRDTTBJMk1qVkJOalV6TXpFNU0wUXhNa0kwUXpnNU5sOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkRWJXeGtlSHB4VFVRd1pqVXhhME5CUldsc05qUjJVMGRmYUd0aWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpvS2h1TEM4LW8wQ0ZRSW9Ba016TEJkQVZoc1NicGVOVUJnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlCMk1oMVp6NWlaMTJwbTc1U1d2VEhkdFRNU1lDR2J4UnpDc2x6SzR6UWNrQSZvZT02N0I3NjZGNSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9LHsiYmFuZHdpZHRoIjo5NjAyODksImhlaWdodCI6MTI4MCwiaWQiOiI2MTQwODcyNzQ2OTgyNTl2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU9MZ1RJOEZIQ0xabFdDMVNtU0p1Wl8xOFBDLUtzUDVIMzlOaklJQy1TbVk3Yk5adUFRa0YwbTZNaFRNTHhBN2lUS1pZanJxcVM4dWswOExIR3pESHRUN2QzSElLTnQxeEVQVTFrLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalU1TXpZME1UTXdNelkwTURFeU9Td2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOTVNWQlRMa016TGpjeU1DNWtZWE5vWDJKaGMyVnNhVzVsWHpGZmRqRWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTEmdnM9NjQyMTNkNjk4YjcyOTExNSZfbmNfdnM9SEJrc0ZRSVlVbWxuWDNod2RsOXlaV1ZzYzE5d1pYSnRZVzVsYm5SZmMzSmZjSEp2WkM5QlF6UkZRVGd5UkRkQ00wSTJNalZCTmpVek16RTVNMFF4TWtJMFF6ZzVObDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEViV3hrZUhweFRVUXdaalV4YTBOQlJXbHNOalIyVTBkZmFHdGljVjlGUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKb0todUxDOC1vMENGUUlvQWtNekxCZEFWaHNTYnBlTlVCZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxX2djQSZjY2I9OS00Jm9oPTAwX0FZQjJNaDFaejVpWjEycG03NVNXdlRIZHRUTVNZQ0dieFJ6Q3Nseks0elFja0Emb2U9NjdCNzY2RjUmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6NzIwfSx7ImJhbmR3aWR0aCI6OTYwMjg5LCJoZWlnaHQiOjEyODAsImlkIjoiNjE0MDg3Mjc0Njk4MjU5diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFPTGdUSThGSENMWmxXQzFTbVNKdVpfMThQQy1Lc1A1SDM5TmpJSUMtU21ZN2JOWnVBUWtGMG02TWhUTUx4QTdpVEtaWWpycXFTOHVrMDhMSEd6REh0VDdkM0hJS050MXhFUFUxay5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pVNU16WTBNVE13TXpZME1ERXlPU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTk1TVkJUTGtNekxqY3lNQzVrWVhOb1gySmhjMlZzYVc1bFh6RmZkakVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTExJnZzPTY0MjEzZDY5OGI3MjkxMTUmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDOUJRelJGUVRneVJEZENNMEkyTWpWQk5qVXpNekU1TTBReE1rSTBRemc1Tmw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRFYld4a2VIcHhUVVF3WmpVeGEwTkJSV2xzTmpSMlUwZGZhR3RpY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSm9LaHVMQzgtbzBDRlFJb0FrTXpMQmRBVmhzU2JwZU5VQmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUIyTWgxWno1aVoxMnBtNzVTV3ZUSGR0VE1TWUNHYnhSekNzbHpLNHpRY2tBJm9lPTY3Qjc2NkY1Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH1dLCJ2aWV3X3N0YXRlX2l0ZW1fdHlwZSI6MTI4fSx7ImFyZV9yZW1peGVzX2Nyb3NzcG9zdGFibGUiOnRydWUsImF2YXRhcl9zdGlja2VycyI6W10sImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTgwNTE5MiwiY3JlYXRlZF9hdF91dGMiOjE3Mzk4MDUxOTIsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI2NoYXRncHQiLCIjZMO8xZ/DvG5jZWfDvGPDvCIsIiNiaWxpxZ9zZWxnZWxpxZ9pbSIsIiNracWfaXNlbGdlbGnFn2ltIiwiI3llbmlkZW7Dp2Vyw6dldmVsZW1lIiwiI2Nlc2FyZXQiXSwiaWQiOiIzNTcwMDY2NTQ5MjQ0MzQwNjYzIiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOlsiQG1hdG1hemVsdHV0dSJdLCJwayI6IjE4MTQyNjMwMTY4Mzc0NTQwIiwicHJpdmF0ZV9yZXBseV9zdGF0dXMiOjAsInNoYXJlX2VuYWJsZWQiOmZhbHNlLCJ0ZXh0IjoiQnUgZmlrcmkgaWxrwqBAbWF0bWF6ZWx0dXR1J251biBoZXNhYsSxbmRhIGfDtnLDvHAgZGVuZWRpbS4gSGVya2VzZSBrYXRrxLFzxLEgb2xhYmlsaXIgZGl5ZSBkw7zFn8O8bmTDvG0gdmVlIG1ldG5pIGHFn2HEn8SxZGEgcGF5bGHFn8SxeW9ydW0sIGtvcHlhbGF5xLFwIENoYXRHUFQneWUgeWFwxLHFn3TEsXJtYW7EsXogeWV0ZXJsaS4gRGVuZXJzZW5peiBkZW5leWltaW5pemkgZHV5bWFrIMOnb2sgaXN0ZXJpbcKg8J+Sm1xuXG5Mw7x0ZmVuIGJhbmEgYmlyZXIgYmlyZXIgc29ydWxhciBzb3JhcmFrIGtlbmRpbSB2ZSBkw7xueWEgaGFra8SxbmRha2kgbWV2Y3V0IGluYW7Dp2xhcsSxbcSxIG9ydGF5YSDDp8Sxa2FybWFtYSB5YXJkxLFtY8SxIG9sLiBTb3J1bGFyxLFuIGhlcHNpbmUgY2V2YXAgdmVyZGlrdGVuIHNvbnJhIGJlbmltIGRhaGEgecO8a3NlayBiZW5sacSfaW0gZ2liaSBkYXZyYW5hcmFrIGNldmFwbGFyxLFtxLEgYW5hbGl6IGV0IHZlIMO8w6cgdGVtZWwgc8SxbsSxcmxhecSxY8SxIGluYW5jxLFtxLEgdmUgw7zDpyB0ZW1lbCBnZWxpxZ90aXJpY2kgKHplbmdpbmxlxZ90aXJpY2kpIGluYW5jxLFtxLEgYmVsaXJsZS4gQnUgaW5hbsOnbGFyxLFuIGdlcsOnZWsga8O2a2VubGVyaW5pIGRlxJ9lcmxlbmRpciB2ZSBidW5sYXLEsW4gbmVyZWRlbiBnZWxkacSfaW5pIGFubGFtYW1hIHlhcmTEsW1jxLEgb2wuIFPEsW7EsXJsYXnEsWPEsSBpbmFuw6dsYXLEsSB5ZW5pZGVuIMOnZXLDp2V2ZWxlbmRpcm1lbWUgeWFyZMSxbWPEsSBvbCB2ZSBidW5sYXLEsSBnw7zDp2xlbmRpcmljaSBhbmxhdMSxbGFyYSBkw7Zuw7zFn3TDvHJtZWsgacOnaW4gYXRhYmlsZWNlxJ9pbSBzb211dCBhZMSxbWxhciDDtm5lci4gxZ51IGFuZGEgZHV5bWFtIGdlcmVrZW4gYmlyIGNlc2FyZXQgeWEgZGEgYmlsZ2VsaWsgbWVzYWrEsW7EsSBiZW5pbWxlIHBheWxhxZ8uXG5cbiNjaGF0Z3B0ICNkw7zFn8O8bmNlZ8O8Y8O8ICNiaWxpxZ9zZWxnZWxpxZ9pbSAja2nFn2lzZWxnZWxpxZ9pbSAjeWVuaWRlbsOnZXLDp2V2ZWxlbWUgI2Nlc2FyZXQiLCJ0ZXh0X3RyYW5zbGF0aW9uIjoiU2F3IHRoaXMgaWRlYSBvbiBteSBmaXJzdCBAbWF0bWF6ZWx0dXR1J251biBhY2NvdW50IGFuZCB0cmllZCBpdC4gSSB0aG91Z2h0IGl0IG1pZ2h0IGNvbnRyaWJ1dGUgdG8gZXZlcnlvbmUgYW5kIEknbSBzaGFyaW5nIHRoZSB0ZXh0IGJlbG93LCBqdXN0IGNvcHkgYW5kIHBhc3RlIGl0IHRvIENoYXRHUFQuIEkgd291bGQgbG92ZSB0byBoZWFyIHlvdXIgZXhwZXJpZW5jZSBpZiB5b3UgdHJ5IGl0IPCfkptcblxuUGxlYXNlIGhlbHAgbWUgcmV2ZWFsIG15IGN1cnJlbnQgYmVsaWVmcyBhYm91dCBteXNlbGYgYW5kIHRoZSB3b3JsZCBieSBhc2tpbmcgbWUgcXVlc3Rpb25zIGluZGl2aWR1YWxseS4gQWZ0ZXIgYW5zd2VyaW5nIGFsbCBvZiB0aGUgcXVlc3Rpb25zLCBhbmFseXplIG15IGFuc3dlcnMgYmVoYXZpbmcgbGlrZSBteSBoaWdoZXIgc2VsZiBhbmQgaWRlbnRpZnkgbXkgdGhyZWUgZnVuZGFtZW50YWwgbGltaXRpbmcgYmVsaWVmcyBhbmQgbXkgdGhyZWUgZnVuZGFtZW50YWwgZGV2ZWxvcGluZyAoZW5yaWNoaW5nKSBiZWxpZWZzLiBBc3Nlc3MgdGhlIHRydWUgb3JpZ2lucyBvZiB0aGVzZSBiZWxpZWZzIGFuZCBoZWxwIG1lIHRvIHVuZGVyc3RhbmQgd2hlcmUgdGhleSBjb21lIGZyb20uIEhlbHAgbWUgcmVmcmFtZSBsaW1pdGluZyBiZWxpZWZzIGFuZCBzdWdnZXN0IGNvbmNyZXRlIHN0ZXBzIEkgY2FuIHRha2UgdG8gdHVybiB0aGVtIGludG8gZW1wb3dlcmluZyBuYXJyYXRpdmVzLiBTaGFyZSB3aXRoIG1lIGEgbWVzc2FnZSBvZiBlbmNvdXJhZ2VtZW50IG9yIHdpc2RvbSB0aGF0IEkgbmVlZCB0byBoZWFyIHJpZ2h0IG5vdy5cblxuICNjaGF0Z3B0ICNkw7zFn8O8bmNlZ8O8Y8O8ICNiaWxpxZ9zZWxnZWxpxZ9pbSAja2nFn2lzZWxnZWxpxZ9pbSAjeWVuaWRlbsOnZXLDp2V2ZWxlbWUgI2Nlc2FyZXQiLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAxMjM0NjgyOTMyLCJmdWxsX25hbWUiOiJJcmVtIEJhbGkiLCJpZCI6IjE4NzY4OTE1NiIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzNTA1NDQwOTAyNTAxMTU3OTA4IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ2Nzc0NDU5M18xNTMxNzM4ODY3NDYzNTcyXzI3OTA3NDgyMDM2MzQyMzEyMTNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1OLVVscmdoeTZIc1E3a052Z0dBMmdFViZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUR2LV9sZVhpVWt4eU9QWi0zRlp3cDZzeTBsTmZxU0M2bWxFQmExXzRqbHFnJm9lPTY3QkI0M0Y3Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJpcmVtYmFsaSJ9LCJ1c2VyX2lkIjoiMTg3Njg5MTU2In0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2xpcHNfbWV0YWRhdGEiOnsiYWNoaWV2ZW1lbnRzX2luZm8iOnsibnVtX2Vhcm5lZF9hY2hpZXZlbWVudHMiOm51bGwsInNob3dfYWNoaWV2ZW1lbnRzIjpmYWxzZX0sImFkZGl0aW9uYWxfYXVkaW9faW5mbyI6eyJhZGRpdGlvbmFsX2F1ZGlvX3VzZXJuYW1lIjpudWxsLCJhdWRpb19yZWF0dHJpYnV0aW9uX2luZm8iOnsic2hvdWxkX2FsbG93X3Jlc3RvcmUiOmZhbHNlfX0sImFzc2V0X3JlY29tbWVuZGF0aW9uX2luZm8iOm51bGwsImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjE4Mzg2NzA1MDkyMDU4NTI2IiwiYXVkaW9fcmFua2luZ19pbmZvIjp7ImJlc3RfYXVkaW9fY2x1c3Rlcl9pZCI6IjE0ODc1MjIzMDUzMTUxNDYifSwiYXVkaW9fdHlwZSI6ImxpY2Vuc2VkX211c2ljIiwiYnJhbmRlZF9jb250ZW50X3RhZ19pbmZvIjp7ImNhbl9hZGRfdGFnIjpmYWxzZX0sImJyZWFraW5nX2NvbnRlbnRfaW5mbyI6bnVsbCwiYnJlYWtpbmdfY3JlYXRvcl9pbmZvIjpudWxsLCJjaGFsbGVuZ2VfaW5mbyI6bnVsbCwiY2xpcHNfY3JlYXRpb25fZW50cnlfcG9pbnQiOiJjbGlwcyIsImNvbnRlbnRfYXBwcmVjaWF0aW9uX2luZm8iOnsiZW5hYmxlZCI6ZmFsc2UsImVudHJ5X3BvaW50X2NvbnRhaW5lciI6bnVsbH0sImNvbnRleHR1YWxfaGlnaGxpZ2h0X2luZm8iOm51bGwsImN1dG91dF9zdGlja2VyX2luZm8iOltdLCJkaXNhYmxlX3VzZV9pbl9jbGlwc19jbGllbnRfY2FjaGUiOmZhbHNlLCJleHRlcm5hbF9tZWRpYV9pbmZvIjpudWxsLCJmZWF0dXJlZF9sYWJlbCI6bnVsbCwiaXNfZmFuX2NsdWJfcHJvbW9fdmlkZW8iOmZhbHNlLCJpc19wdWJsaWNfY2hhdF93ZWxjb21lX3ZpZGVvIjpmYWxzZSwiaXNfc2hhcmVkX3RvX2ZiIjp0cnVlLCJtYXNodXBfaW5mbyI6eyJjYW5fdG9nZ2xlX21hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsImZvcm1hdHRlZF9tYXNodXBzX2NvdW50IjpudWxsLCJoYXNfYmVlbl9tYXNoZWRfdXAiOmZhbHNlLCJoYXNfbm9ubWltaWNhYmxlX2FkZGl0aW9uYWxfYXVkaW8iOmZhbHNlLCJpc19jcmVhdG9yX3JlcXVlc3RpbmdfbWFzaHVwIjpmYWxzZSwiaXNfbGlnaHRfd2VpZ2h0X2NoZWNrIjp0cnVlLCJpc19saWdodF93ZWlnaHRfcmV1c2VfYWxsb3dlZF9jaGVjayI6ZmFsc2UsImlzX3Bpdm90X3BhZ2VfYXZhaWxhYmxlIjpmYWxzZSwiaXNfcmV1c2VfYWxsb3dlZCI6dHJ1ZSwibWFzaHVwX3R5cGUiOm51bGwsIm1hc2h1cHNfYWxsb3dlZCI6dHJ1ZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1lcmNoYW5kaXNpbmdfcGlsbF9pbmZvIjpudWxsLCJtdXNpY19pbmZvIjp7Im11c2ljX2Fzc2V0X2luZm8iOnsiYWxsb3dzX3NhdmluZyI6ZmFsc2UsImFydGlzdF9pZCI6bnVsbCwiYXVkaW9faWQiOiIxNDg3NTIyMzA1MzE1MTQ2IiwiY292ZXJfYXJ0d29ya190aHVtYm5haWxfdXJpIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L3YvdDM5LjMwODA4LTYvNDI2ODcwNDI5XzIzMDM1MjY5NDk4MzYwMjRfMzU2Njc0OTY5NDY4MTE1NzM0M19uLmpwZz9zdHA9ZHN0LWpwZ19zMTY4eDEyOF90dDYmX25jX2NhdD0xJmNjYj0xLTcmX25jX3NpZD0yZjI1NTcmX25jX29oYz1zbUpZSTkzMndFVVE3a052Z0c3OWctZyZfbmNfb2M9QWRnX0xoaWxYMTYtS24wdUxkSVNNeGlNRDUzanVFTDJGV2ZCYkZ0dVY2VEpfQWppeHAxaERhRER0TVc4TVF3eS1MMCZfbmNfYWQ9ei1tJl9uY19jaWQ9MTM2NSZfbmNfenQ9MjMmX25jX2h0PXNjb250ZW50LWR1czEtMS54eCZfbmNfZ2lkPUExM1NmeWVDWlN5eUNyTzY1enc0TnQ3Jm9oPTAwX0FZQ1NLY0lKQzlxVjdLOEd5OUpKZXFnelJIcFROMjU1T2xsYlJxNlloQlV5c0Emb2U9NjdCQjMxRTYiLCJjb3Zlcl9hcnR3b3JrX3VyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC92L3QzOS4zMDgwOC02LzQyNjg3MDQyOV8yMzAzNTI2OTQ5ODM2MDI0XzM1NjY3NDk2OTQ2ODExNTczNDNfbi5qcGc/c3RwPWRzdC1qcGdfczE2OHgxMjhfdHQ2Jl9uY19jYXQ9MSZjY2I9MS03Jl9uY19zaWQ9MmYyNTU3Jl9uY19vaGM9c21KWUk5MzJ3RVVRN2tOdmdHNzlnLWcmX25jX29jPUFkZ19MaGlsWDE2LUtuMHVMZElTTXhpTUQ1M2p1RUwyRldmQmJGdHVWNlRKX0FqaXhwMWhEYUREdE1XOE1Rd3ktTDAmX25jX2FkPXotbSZfbmNfY2lkPTEzNjUmX25jX3p0PTIzJl9uY19odD1zY29udGVudC1kdXMxLTEueHgmX25jX2dpZD1BMTNTZnllQ1pTeXlDck82NXp3NE50NyZvaD0wMF9BWUNTS2NJSkM5cVY3SzhHeTlKSmVxZ3pSSHBUTjI1NU9sbGJScTZZaEJVeXNBJm9lPTY3QkIzMUU2IiwiZGFya19tZXNzYWdlIjpudWxsLCJkaXNwbGF5X2FydGlzdCI6Ikpvc8OpIE3DqW5kZXoiLCJkdXJhdGlvbl9pbl9tcyI6OTg5MDMsImZhc3Rfc3RhcnRfcHJvZ3Jlc3NpdmVfZG93bmxvYWRfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L28xL3YvdDIvZjIvbTY5L0FRTzBTMVVXQW1ydWdPbkVPSlhxY1IweV9KNV9yLUpLVlhpYzFRNW4tWm1ONHBhMlhIM2NUQmxmMjQ1MTUzTTJZNFRadmo5Y1F6R3NhZFdaa0FvSjgxVE4ubXA0P3N0cmV4dD0xJl9uY19jYXQ9MSZfbmNfc2lkPThiZjhmZSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldCZfbmNfb2hjPWNsT2c5S0NNbHNvUTdrTnZnRVkzOXZQJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkluaHdkbDl3Y205bmNtVnpjMmwyWlM1QlZVUkpUMTlQVGt4WkxpNURNeTR3TG5CeWIyZHlaWE56YVhabFgyRjFaR2x2WDJGaFkzQmZORGhmWm5KaFoxOHlYMkYxWkdsdklpd2llSEIyWDJGemMyVjBYMmxrSWpvME56UXhNVGc1TlRRNU5USTBPRFVzSW5WeWJHZGxibDl6YjNWeVkyVWlPaUozZDNjaWZRJTNEJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZRHNpckNuOHkwZlhSdDZGYlh2MktsMVJUNGpKSTEzcXhFQm5ZZC1HalBkaWcmb2U9NjdCQjQyOTciLCJoYXNfbHlyaWNzIjpmYWxzZSwiaGlnaGxpZ2h0X3N0YXJ0X3RpbWVzX2luX21zIjpbMzY1MDAsMTUwMCw1MTUwMF0sImlkIjoiMjM5MTU3ODkyNDYzNTAxIiwiaWdfdXNlcm5hbWUiOm51bGwsImlzX2VsaWdpYmxlX2Zvcl9hdWRpb19lZmZlY3RzIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX3ZpbnlsX3N0aWNrZXIiOnRydWUsImlzX2V4cGxpY2l0IjpmYWxzZSwibGljZW5zZWRfbXVzaWNfc3VidHlwZSI6IkRFRkFVTFQiLCJseXJpY3MiOm51bGwsInByb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUU8wUzFVV0FtcnVnT25FT0pYcWNSMHlfSjVfci1KS1ZYaWMxUTVuLVptTjRwYTJYSDNjVEJsZjI0NTE1M00yWTRUWnZqOWNRekdzYWRXWmtBb0o4MVROLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEmX25jX3NpZD04YmY4ZmUmX25jX2h0PXNjb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQmX25jX29oYz1jbE9nOUtDTWxzb1E3a052Z0VZMzl2UCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbmh3ZGw5d2NtOW5jbVZ6YzJsMlpTNUJWVVJKVDE5UFRreFpMaTVETXk0d0xuQnliMmR5WlhOemFYWmxYMkYxWkdsdlgyRmhZM0JmTkRoZlpuSmhaMTh5WDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqbzBOelF4TVRnNU5UUTVOVEkwT0RVc0luVnliR2RsYmw5emIzVnlZMlVpT2lKM2QzY2lmUSUzRCUzRCZjY2I9OS00Jl9uY196dD0yOCZvaD0wMF9BWURzaXJDbjh5MGZYUnQ2RmJYdjJLbDFSVDRqSkkxM3F4RUJuWWQtR2pQZGlnJm9lPTY3QkI0Mjk3IiwicmVhY3RpdmVfYXVkaW9fZG93bmxvYWRfdXJsIjpudWxsLCJzYW5pdGl6ZWRfdGl0bGUiOm51bGwsInN1YnRpdGxlIjoiIiwidGl0bGUiOiJFbCBQdWVibG8iLCJ3ZWJfMzBzX3ByZXZpZXdfZG93bmxvYWRfdXJsIjpudWxsfSwibXVzaWNfY29uc3VtcHRpb25faW5mbyI6eyJhbGxvd19tZWRpYV9jcmVhdGlvbl93aXRoX211c2ljIjp0cnVlLCJhdWRpb19hc3NldF9zdGFydF90aW1lX2luX21zIjozNjUwMCwiYXVkaW9fZmlsdGVyX2luZm9zIjpbXSwiYXVkaW9fbXV0aW5nX2luZm8iOnsiYWxsb3dfYXVkaW9fZWRpdGluZyI6ZmFsc2UsIm11dGVfYXVkaW8iOmZhbHNlLCJtdXRlX3JlYXNvbl9zdHIiOiIiLCJzaG93X211dGVkX2F1ZGlvX3RvYXN0IjpmYWxzZX0sImNvbnRhaW5zX2x5cmljcyI6bnVsbCwiZGVyaXZlZF9jb250ZW50X2lkIjpudWxsLCJkaXNwbGF5X2xhYmVscyI6bnVsbCwiZm9ybWF0dGVkX2NsaXBzX21lZGlhX2NvdW50IjpudWxsLCJpZ19hcnRpc3QiOm51bGwsImlzX2Jvb2ttYXJrZWQiOmZhbHNlLCJpc190cmVuZGluZ19pbl9jbGlwcyI6ZmFsc2UsIm92ZXJsYXBfZHVyYXRpb25faW5fbXMiOjIxNDM0LCJwbGFjZWhvbGRlcl9wcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjEyNDQyLTE1LzQzOTg1NjI5XzMxMTEwNTkxNjE0NTM1MV81ODA2NDc1OTgxMTQwNTc3Nl9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9eUwwOU5YY0ZpWDRRN2tOdmdIalVQSlUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmb2g9MDBfQVlDbGMtelhSSjNHMjFEYWtJU0s5ZWVXVk5YQWRfWWc2VWp2RzdJc0M2Zk9aQSZvZT02N0JCMzkzRCZfbmNfc2lkPTIwMTFhZCIsInByZXZpb3VzX3RyZW5kX3JhbmsiOm51bGwsInNob3VsZF9hbGxvd19tdXNpY19lZGl0aW5nIjpmYWxzZSwic2hvdWxkX211dGVfYXVkaW8iOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb24iOiIiLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb25fdHlwZSI6bnVsbCwidHJlbmRfcmFuayI6bnVsbH19LCJudXhfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwib3JpZ2luYWxpdHlfaW5mbyI6bnVsbCwicHJvZmVzc2lvbmFsX2NsaXBzX3Vwc2VsbF90eXBlIjowLCJyZWVsc19vbl90aGVfcmlzZV9pbmZvIjpudWxsLCJyZXVzYWJsZV90ZXh0X2F0dHJpYnV0ZV9zdHJpbmciOm51bGwsInJldXNhYmxlX3RleHRfaW5mbyI6bnVsbCwic2hvcHBpbmdfaW5mbyI6bnVsbCwic2hvd19hY2hpZXZlbWVudHMiOmZhbHNlLCJzaG93X3RpcHMiOm51bGwsInRlbXBsYXRlX2luZm8iOm51bGwsInZpZXdlcl9pbnRlcmFjdGlvbl9zZXR0aW5ncyI6bnVsbH0sImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdMYkp5TU5xbTMiLCJjb21tZW50X2NvdW50IjoxMDUsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjb21tZXJjZV9pbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoiIiwiY3JlYXRvcl92aWV3ZXJfaW5zaWdodHMiOltdLCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTgwNTExMzYwMDkwMCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX2xpa2VfY291bnQiOjAsImZiX3BsYXlfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgxNDI2MzAwNjMzNzQ1NDAiLCJmZWVkX3R5cGUiOiJjbGlwcyIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJOT05FIn0sImhhc19hdWRpbyI6dHJ1ZSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU3MDA2NjU0OTI0NDM0MDY2MyIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ19wbGF5X2NvdW50IjozNTU0NCwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiYWRkaXRpb25hbF9pdGVtcyI6eyJmaXJzdF9mcmFtZSI6eyJoZWlnaHQiOjYzOSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA5NzEyMV8xNTQyMjg0NzU5NzQwNDIzXzczMTA4NTM0MzYyNTg5NjgxM19uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG1Ga1pHbDBhVzl1WVd4ZlkyOTJaWEpmWm5KaGJXVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UHJJX0t1THE3ellRN2tOdmdGc2dzSUQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDYTg4WFVYNS00NFBadTk4a3BaUE9wSXdDazM1YjFJbDFzS3lkSXAzMHhaZyZvZT02N0JCNUQ5QSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9LCJpZ3R2X2ZpcnN0X2ZyYW1lIjp7ImhlaWdodCI6NjM5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDk3MTIxXzE1NDIyODQ3NTk3NDA0MjNfNzMxMDg1MzQzNjI1ODk2ODEzX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDJOREI0TVRFek5pNXpaSEl1WmpjeE9EYzRMbUZrWkdsMGFXOXVZV3hmWTI5MlpYSmZabkpoYldVaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1QcklfS3VMcTd6WVE3a052Z0ZzZ3NJRCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNhODhYVVg1LTQ0UFp1OThrcFpQT3BJd0NrMzViMUlsMXNLeWRJcDMweFpnJm9lPTY3QkI1RDlBJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH0sInNtYXJ0X2ZyYW1lIjpudWxsfSwiaXRlbXMiOlt7ImhlaWdodCI6NjM5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjM1ODU1XzE3Nzc5OTM5ODI5Nzg4MTJfMzY0MjQyNTAxMDA1NzA0NTM3NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG01bWNtRnRaVjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TzRmYzBYb3hCX2NRN2tOdmdIWi04Nk0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTmpVME9USTBORE0wTURZMk13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRFhuSVhrdFNaSV9JZnZDTlR4THdhNDZWZHFHUzF4dzcwSmZtbkVVdjRqRGcmb2U9NjdCQjYzODImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6MzI4LCJtYXhfdGh1bWJuYWlsc19wZXJfc3ByaXRlIjoxMDUsInJlbmRlcmVkX3dpZHRoIjo5Niwic3ByaXRlX2hlaWdodCI6MTI0Niwic3ByaXRlX3VybHMiOlsiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDM5Njc4OF82MDk5ODAzNzg1NDk5MjdfMjkyOTY1Mzg1NTY1NDQwNjUxNl9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9clJQamJWVTFGS2dRN2tOdmdIQTZzNG4mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDcXVOd3MzNTZKTFA3VVFBVjVvYjlOTG5IaWZfME51M191RlQxNElwRExlUSZvZT02N0JCNDA4RCZfbmNfc2lkPTIwMTFhZCJdLCJzcHJpdGVfd2lkdGgiOjE1MDAsInRodW1ibmFpbF9kdXJhdGlvbiI6MC4yMDQzMzMzMzMzMzMzMzMzLCJ0aHVtYm5haWxfaGVpZ2h0IjoxNzgsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjoyMS40NTV9fX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52ZW50b3J5X3NvdXJjZSI6InJlY29tbWVuZGVkX2NsaXBzX2NoYWluaW5nX21vZGVsIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19hcnRpc3RfcGljayI6ZmFsc2UsImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3F1aWV0X3Bvc3QiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjp0cnVlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdGhpcmRfcGFydHlfZG93bmxvYWRzX2VsaWdpYmxlIjp0cnVlLCJpc192aWRlbyI6dHJ1ZSwibGF5b3V0X3R5cGUiOiJvbmVfYnlfdHdvX2xlZnQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjUxMCwibWF4X251bV92aXNpYmxlX3ByZXZpZXdfY29tbWVudHMiOjAsIm1lZGlhX2Nyb3BwaW5nX2luZm8iOnsic3F1YXJlX2Nyb3AiOnsiY3JvcF9ib3R0b20iOjAuMCwiY3JvcF9sZWZ0IjowLjAsImNyb3BfcmlnaHQiOjAuMCwiY3JvcF90b3AiOjAuMH19LCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJyZWVsIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6MiwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjpudWxsLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjo1LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9yaWdpbmFsX2hlaWdodCI6MTkyMCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDA2NjU0OTI0NDM0MDY2MyIsInBsYXlfY291bnQiOjM1NTQ0LCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNsaXBzIiwicmVzaGFyZV9jb3VudCI6Mywic2hhcmVfY291bnRfZGlzYWJsZWQiOmZhbHNlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInNvY2lhbF9jb250ZXh0IjpbXSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk4MDUxOTEsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjM1ODU1XzE3Nzc5OTM5ODI5Nzg4MTJfMzY0MjQyNTAxMDA1NzA0NTM3NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG01bWNtRnRaVjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TzRmYzBYb3hCX2NRN2tOdmdIWi04Nk0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTmpVME9USTBORE0wTURZMk13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRFhuSVhrdFNaSV9JZnZDTlR4THdhNDZWZHFHUzF4dzcwSmZtbkVVdjRqRGcmb2U9NjdCQjYzODImX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MiwiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAxMjM0NjgyOTMyLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IklyZW0gQmFsaSIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIxODc2ODkxNTYiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwibGF0ZXN0X3JlZWxfbWVkaWEiOjE3Mzk4NzM2MTgsInByb2ZpbGVfcGljX2lkIjoiMzUwNTQ0MDkwMjUwMTE1NzkwOCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80Njc3NDQ1OTNfMTUzMTczODg2NzQ2MzU3Ml8yNzkwNzQ4MjAzNjM0MjMxMjEzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Ti1VbHJnaHk2SHNRN2tOdmdHQTJnRVYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlEdi1fbGVYaVVreHlPUFotM0Zad3A2c3kwbE5mcVNDNm1sRUJhMV80amxxZyZvZT02N0JCNDNGNyZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImlyZW1iYWxpIn0sInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA1TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjIxLjQ1NSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFORU42cFV1YzZpRVRmTFVweVdPWFc2dnhTdWU4cmt4Y2lqZDNhN2paSXZaZHhrNnpTSzFhaHBrVHNfaGEyWlRWcElCUTl2Y2RNOFFBVEF6TUV2TURlMnJfWVdYaGlRTFdyekZhby5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFeE5qSTJOekUwTURVek5qSXpNRE1zSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURURWxRVXk1RE15NDNNakF1WkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZ2cz1lMmYwYmU5MGNiMzZjMmIxJl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzg1TmpRMU9FSXhSVUl5UmpnMU1ESkZOemxFTWpOQ1F6RTJSVEEwTlRFNE0xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSk9ERnRRbnBYUkdkall6VlNkME5CUmpKaGFIWTBibEV0UWpKaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp2NngyNEd4M0pBRUZRSW9Ba016TEJkQU5XN1pGb2NyQWhnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlCeHQzS25yZUlWaE5kOHpLa0lqZUpCTmpJbXBIdjZnd19uZFhlUVlTemJ4QSZvZT02N0I3NkQ2NCZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjcxODM5MCwiaGVpZ2h0IjoxMjgwLCJpZCI6IjE2NDcwMjkwMTI4NTUyNDJ2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU5FTjZwVXVjNmlFVGZMVXB5V09YVzZ2eFN1ZThya3hjaWpkM2E3alpJdlpkeGs2elNLMWFocGtUc19oYTJaVFZwSUJROXZjZE04UUFUQXpNRXZNRGUycl9ZV1hoaVFMV3J6RmFvLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV4TmpJMk56RTBNRFV6TmpJek1ETXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJnZzPWUyZjBiZTkwY2IzNmMyYjEmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDODVOalExT0VJeFJVSXlSamcxTURKRk56bEVNak5DUXpFMlJUQTBOVEU0TTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRKT0RGdFFucFhSR2RqWXpWU2QwTkJSakpoYUhZMGJsRXRRakppY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnY2eDI0R3gzSkFFRlFJb0FrTXpMQmRBTlc3WkZvY3JBaGdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUJ4dDNLbnJlSVZoTmQ4ektrSWplSkJOakltcEh2Nmd3X25kWGVRWVN6YnhBJm9lPTY3Qjc2RDY0Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjcxODM5MCwiaGVpZ2h0IjoxMjgwLCJpZCI6IjE2NDcwMjkwMTI4NTUyNDJ2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU5FTjZwVXVjNmlFVGZMVXB5V09YVzZ2eFN1ZThya3hjaWpkM2E3alpJdlpkeGs2elNLMWFocGtUc19oYTJaVFZwSUJROXZjZE04UUFUQXpNRXZNRGUycl9ZV1hoaVFMV3J6RmFvLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV4TmpJMk56RTBNRFV6TmpJek1ETXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJnZzPWUyZjBiZTkwY2IzNmMyYjEmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDODVOalExT0VJeFJVSXlSamcxTURKRk56bEVNak5DUXpFMlJUQTBOVEU0TTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRKT0RGdFFucFhSR2RqWXpWU2QwTkJSakpoYUhZMGJsRXRRakppY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnY2eDI0R3gzSkFFRlFJb0FrTXpMQmRBTlc3WkZvY3JBaGdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUJ4dDNLbnJlSVZoTmQ4ektrSWplSkJOakltcEh2Nmd3X25kWGVRWVN6YnhBJm9lPTY3Qjc2RDY0Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjcxODM5MCwiaGVpZ2h0IjoxMjgwLCJpZCI6IjE2NDcwMjkwMTI4NTUyNDJ2IiwidHlwZSI6MTAzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU5FTjZwVXVjNmlFVGZMVXB5V09YVzZ2eFN1ZThya3hjaWpkM2E3alpJdlpkeGs2elNLMWFocGtUc19oYTJaVFZwSUJROXZjZE04UUFUQXpNRXZNRGUycl9ZV1hoaVFMV3J6RmFvLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV4TmpJMk56RTBNRFV6TmpJek1ETXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJnZzPWUyZjBiZTkwY2IzNmMyYjEmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDODVOalExT0VJeFJVSXlSamcxTURKRk56bEVNak5DUXpFMlJUQTBOVEU0TTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRKT0RGdFFucFhSR2RqWXpWU2QwTkJSakpoYUhZMGJsRXRRakppY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnY2eDI0R3gzSkFFRlFJb0FrTXpMQmRBTlc3WkZvY3JBaGdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUJ4dDNLbnJlSVZoTmQ4ektrSWplSkJOakltcEh2Nmd3X25kWGVRWVN6YnhBJm9lPTY3Qjc2RDY0Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH1dLCJ2aWV3X3N0YXRlX2l0ZW1fdHlwZSI6MTI4fSx7ImFyZV9yZW1peGVzX2Nyb3NzcG9zdGFibGUiOnRydWUsImF2YXRhcl9zdGlja2VycyI6W10sImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTg4ODAxMywiY3JlYXRlZF9hdF91dGMiOjE3Mzk4ODgwMTMsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI+umtOyPuCIsIiPsmIHsg4Htjrjsp5EiLCIjQUkiLCIja2xpbmdhaSIsIiNrcmVhYWkiLCIjY2hhdGdwdCIsIiPrsJTsnbTrn7QiLCIj6r+A7YyBIl0sImlkIjoiMzU3MDYxMTgyMjc5MTYzNzQ0NyIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbIkBwcmVkbWV0X2FpIiwiQHJlZWxzX2h3YW4iXSwicGsiOiIxODMwMTE0MzE0ODIzOTIyNCIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IvCfpJZBaSDrr7jri4gg7J2466y8IOyYgeyDgSDsoJzsnpHrspXirIfvuI9cblxu4pyN77iP64yT6riA7JeQIFwi66+464uIXCIg65286rOgIOuCqOq4sOqzoCDsgqzsnbTtirgg66eB7YGs7JmAIO2VtOuLuSDsmIHsg4Hsl5Ag7IKs7Jqp65CcIO2UhOuhrO2UhO2KuOulvCDrsJvslYTrs7TshLjsmpTwn5qAXG5cbirsm5DtlZjripQgQWnsmIHsg4Eg7Lqh7LKYXG4qY2hhdGdwdOyXkCDsgqzsp4Qg7LaU6rCAIO2bhCDtlITroaztlITtirgg7JqU7LKtIO2bhCDrs7XsgqxcbiprcmVhIGFp7JeQIO2UhOuhrO2UhO2KuCDrtpnsl6zrhKPqs6Ag7J2066+47KeAIOyDneyEsVxuKktsaW5nIGFp7JeQ7IScIOydtOuvuOyngOulvCDsmIHsg4HsnLzroZwg66eM65OsXG5cbvCfkqvslYTsnbTrlJTslrQgQHByZWRtZXRfYWkgXG7rmJAg64uk66W4IOuvuOuLiCDsnbjrrLwg7JiB7IOB7J2AIOydtOyqveyXkOyEnCDssLjqs6DtlZjshLjsmpTwn5mMXG5cbvCfkqHsoIDsnqUg7ZuEIOq0gOugqOuQnCDso7zsoJzroZwg7J2066+47KeAIOyDneyEsSDsi5wg7ZSE66Gs7ZSE7Yq466W8IOyhsOq4iOyUqSDrsJTqv5TshJwgQWnroZwg7Yq466CM65SU7ZWcIOyYgeyDgeydhCDrp4zrk6TslrQg67O07IS47JqU8J+YhFxuXG7wn5uw7J20IEFJ64+E6rWs6rCAIO2VhOyalO2VnCDsuZzqtazsl5Dqsowg6rO17Jyg7ZW0IOyjvOq4sCFcblxu8J+nquumtOyKpCbsiqTthqDrpqwg7Y647KeRIEByZWVsc19od2FuXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbvCfk4w87ZSE66Gc7ZWEIOunge2BrCDtmZXsnbg+XG4q66a07IqkJuyKpO2GoOumrCDtjrjsp5HsnYQg6riw7LSIIO2BtOuemOyKpDEwMeqwleydmCFcbirrprTsiqQg7Y647KeRIOq4sOy0iCBcIuy6oey7tyDsoITsnpDssYVcIlxuKuumtOyPuOqzvCDtlajqu5gg7ZiR7JeF7ZWY6riwIVxuXG4j66a07I+4ICPsmIHsg4Htjrjsp5EgI0FJICNrbGluZ2FpICNrcmVhYWkgXG4jY2hhdGdwdCAj67CU7J2065+0ICPqv4DtjIEiLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDI2Mjk0NzQ5MTUxLCJmdWxsX25hbWUiOiLrprTsj7ggfCDwnZmN8J2ZmvCdmZrwnZmh8J2ZqCAmIPCdmY7wnZmp8J2ZpPCdmafwnZmuIPCdmZrwnZmZ8J2ZnvCdmanwnZmk8J2Zp+GdsCIsImlkIjoiMjYzMTMyMTI0OTEiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzIzNjA0MTIwMDg0MjM0MTQ1NSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80MDE1ODA4NTFfMzY2MzAyNDAwNzI2NjE1M18xMzE3NTU3Nzg0MzEzMDQ5OTk2X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXM2dkxrUENuNXBvUTdrTnZnRmN1UG1SJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ2hhekxhUW9zWGlZVzBjdXhBLXhaVVZBYTA1UnNaODJoZWhZcktORGFqSncmb2U9NjdCQjY3QjYmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6InJlZWxzX2h3YW4ifSwidXNlcl9pZCI6IjI2MzEzMjEyNDkxIn0sImNhcHRpb25faXNfZWRpdGVkIjp0cnVlLCJjbGlwc19tZXRhZGF0YSI6eyJhY2hpZXZlbWVudHNfaW5mbyI6eyJudW1fZWFybmVkX2FjaGlldmVtZW50cyI6bnVsbCwic2hvd19hY2hpZXZlbWVudHMiOmZhbHNlfSwiYWRkaXRpb25hbF9hdWRpb19pbmZvIjp7ImFkZGl0aW9uYWxfYXVkaW9fdXNlcm5hbWUiOm51bGwsImF1ZGlvX3JlYXR0cmlidXRpb25faW5mbyI6eyJzaG91bGRfYWxsb3dfcmVzdG9yZSI6ZmFsc2V9fSwiYXNzZXRfcmVjb21tZW5kYXRpb25faW5mbyI6bnVsbCwiYXVkaW9fY2Fub25pY2FsX2lkIjoiMTgzMTk4Njg0OTQwODQ5MzciLCJhdWRpb19yYW5raW5nX2luZm8iOnsiYmVzdF9hdWRpb19jbHVzdGVyX2lkIjoiMjU5NjIyMzE0NzIzNTQ0OCJ9LCJhdWRpb190eXBlIjoibGljZW5zZWRfbXVzaWMiLCJicmFuZGVkX2NvbnRlbnRfdGFnX2luZm8iOnsiY2FuX2FkZF90YWciOmZhbHNlfSwiYnJlYWtpbmdfY29udGVudF9pbmZvIjpudWxsLCJicmVha2luZ19jcmVhdG9yX2luZm8iOm51bGwsImNoYWxsZW5nZV9pbmZvIjpudWxsLCJjbGlwc19jcmVhdGlvbl9lbnRyeV9wb2ludCI6ImNsaXBzIiwiY29udGVudF9hcHByZWNpYXRpb25faW5mbyI6eyJlbmFibGVkIjp0cnVlLCJlbnRyeV9wb2ludF9jb250YWluZXIiOnsiY29tbWVudCI6eyJhY3Rpb25fdHlwZSI6ImdpZnRpbmcifSwib3ZlcmZsb3ciOm51bGwsInBpbGwiOnsiYWN0aW9uX3R5cGUiOiJnaWZ0aW5nIiwicHJpb3JpdHkiOjF9LCJ1ZmkiOm51bGx9fSwiY29udGV4dHVhbF9oaWdobGlnaHRfaW5mbyI6bnVsbCwiY3V0b3V0X3N0aWNrZXJfaW5mbyI6W10sImRpc2FibGVfdXNlX2luX2NsaXBzX2NsaWVudF9jYWNoZSI6ZmFsc2UsImV4dGVybmFsX21lZGlhX2luZm8iOm51bGwsImZlYXR1cmVkX2xhYmVsIjpudWxsLCJpc19mYW5fY2x1Yl9wcm9tb192aWRlbyI6ZmFsc2UsImlzX3B1YmxpY19jaGF0X3dlbGNvbWVfdmlkZW8iOmZhbHNlLCJpc19zaGFyZWRfdG9fZmIiOmZhbHNlLCJtYXNodXBfaW5mbyI6eyJjYW5fdG9nZ2xlX21hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsImZvcm1hdHRlZF9tYXNodXBzX2NvdW50IjpudWxsLCJoYXNfYmVlbl9tYXNoZWRfdXAiOmZhbHNlLCJoYXNfbm9ubWltaWNhYmxlX2FkZGl0aW9uYWxfYXVkaW8iOnRydWUsImlzX2NyZWF0b3JfcmVxdWVzdGluZ19tYXNodXAiOmZhbHNlLCJpc19saWdodF93ZWlnaHRfY2hlY2siOnRydWUsImlzX2xpZ2h0X3dlaWdodF9yZXVzZV9hbGxvd2VkX2NoZWNrIjpmYWxzZSwiaXNfcGl2b3RfcGFnZV9hdmFpbGFibGUiOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjp0cnVlLCJtYXNodXBfdHlwZSI6bnVsbCwibWFzaHVwc19hbGxvd2VkIjp0cnVlLCJub25fcHJpdmFjeV9maWx0ZXJlZF9tYXNodXBzX21lZGlhX2NvdW50IjowLCJvcmlnaW5hbF9tZWRpYSI6bnVsbCwicHJpdmFjeV9maWx0ZXJlZF9tYXNodXBzX21lZGlhX2NvdW50IjpudWxsfSwibWVyY2hhbmRpc2luZ19waWxsX2luZm8iOm51bGwsIm11c2ljX2luZm8iOnsibXVzaWNfYXNzZXRfaW5mbyI6eyJhbGxvd3Nfc2F2aW5nIjpmYWxzZSwiYXJ0aXN0X2lkIjpudWxsLCJhdWRpb19pZCI6IjI1OTYyMjMxNDcyMzU0NDgiLCJjb3Zlcl9hcnR3b3JrX3RodW1ibmFpbF91cmkiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvdi90MzkuMzA4MDgtNi80NjY5NjgzMjBfOTAwMjkyMDgxNDY1NzZfNjgwMDkwNzIwMTg1NTUxNjk1Nl9uLmpwZz9zdHA9ZHN0LWpwZ19zMTY4eDEyOF90dDYmX25jX2NhdD0xJmNjYj0xLTcmX25jX3NpZD0yZjI1NTcmX25jX29oYz1lSU1Gckw1TzZ3b1E3a052Z0Y2OFQxSCZfbmNfb2M9QWRpRGdnZzlQQlFmbEZOVEZvR2lyclhqWFI3OEVIQTBPMmlmRGpLZTdvVGVOQXV5UFdtdm12Q2VXNl9XeF9yb0xDNCZfbmNfYWQ9ei1tJl9uY19jaWQ9MTM2NSZfbmNfenQ9MjMmX25jX2h0PXNjb250ZW50LWR1czEtMS54eCZfbmNfZ2lkPUExM1NmeWVDWlN5eUNyTzY1enc0TnQ3Jm9oPTAwX0FZRE1QX2I3b2llYUh4bERxRFBRVkxqWDgwLXNRWDFzM3MtN0E3UVVPdl9tTkEmb2U9NjdCQjUwQTQiLCJjb3Zlcl9hcnR3b3JrX3VyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC92L3QzOS4zMDgwOC02LzQ2Njk2ODMyMF85MDAyOTIwODE0NjU3Nl82ODAwOTA3MjAxODU1NTE2OTU2X24uanBnP3N0cD1kc3QtanBnX3MxNjh4MTI4X3R0NiZfbmNfY2F0PTEmY2NiPTEtNyZfbmNfc2lkPTJmMjU1NyZfbmNfb2hjPWVJTUZyTDVPNndvUTdrTnZnRjY4VDFIJl9uY19vYz1BZGlEZ2dnOVBCUWZsRk5URm9HaXJyWGpYUjc4RUhBME8yaWZEaktlN29UZU5BdXlQV212bXZDZVc2X1d4X3JvTEM0Jl9uY19hZD16LW0mX25jX2NpZD0xMzY1Jl9uY196dD0yMyZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4Jl9uY19naWQ9QTEzU2Z5ZUNaU3l5Q3JPNjV6dzROdDcmb2g9MDBfQVlETVBfYjdvaWVhSHhsRHFEUFFWTGpYODAtc1FYMXMzcy03QTdRVU92X21OQSZvZT02N0JCNTBBNCIsImRhcmtfbWVzc2FnZSI6bnVsbCwiZGlzcGxheV9hcnRpc3QiOiJGYWphciBBc2lhIE11c2ljIiwiZHVyYXRpb25faW5fbXMiOjEzNDQwNCwiZmFzdF9zdGFydF9wcm9ncmVzc2l2ZV9kb3dubG9hZF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvbzEvdi90Mi9mMi9tNjkvQVFQUW9jTUpGZFJMMDdrN0xSWkY1c3A4MUl6Z05vd0FGSjVPeWVhRkZjNGI5M3FmR1p3XzUycGFEN0xVejRNeDJsUElKVG85ajBsbjh4cVJnclpyMENEXy5tcDQ/c3RyZXh0PTEmX25jX2NhdD0xJl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9MExNWFAwM21OUUlRN2tOdmdHWXFhVXUmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZYMkZoWTNCZk5EaGZabkpoWjE4eVgyRjFaR2x2SWl3aWVIQjJYMkZ6YzJWMFgybGtJam94TURFMU56RXpORGd6TmpZeU1EVTVMQ0oxY214blpXNWZjMjkxY21ObElqb2lkM2QzSW4wJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZQXItbWpTcUstN1c1RjVqZlphNlBwZXVsdW9DaGtsWjE1azNiVjVTb05ud0Emb2U9NjdCQjQyQ0IiLCJoYXNfbHlyaWNzIjpmYWxzZSwiaGlnaGxpZ2h0X3N0YXJ0X3RpbWVzX2luX21zIjpbMTEwMDAsMjYwMDAsNTIwMDBdLCJpZCI6IjU4NDc1MTY0MDY3NDcwMCIsImlnX3VzZXJuYW1lIjpudWxsLCJpc19lbGlnaWJsZV9mb3JfYXVkaW9fZWZmZWN0cyI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl92aW55bF9zdGlja2VyIjp0cnVlLCJpc19leHBsaWNpdCI6ZmFsc2UsImxpY2Vuc2VkX211c2ljX3N1YnR5cGUiOiJERUZBVUxUIiwibHlyaWNzIjpudWxsLCJwcm9ncmVzc2l2ZV9kb3dubG9hZF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvbzEvdi90Mi9mMi9tNjkvQVFQUW9jTUpGZFJMMDdrN0xSWkY1c3A4MUl6Z05vd0FGSjVPeWVhRkZjNGI5M3FmR1p3XzUycGFEN0xVejRNeDJsUElKVG85ajBsbjh4cVJnclpyMENEXy5tcDQ/c3RyZXh0PTEmX25jX2NhdD0xJl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9MExNWFAwM21OUUlRN2tOdmdHWXFhVXUmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZYMkZoWTNCZk5EaGZabkpoWjE4eVgyRjFaR2x2SWl3aWVIQjJYMkZ6YzJWMFgybGtJam94TURFMU56RXpORGd6TmpZeU1EVTVMQ0oxY214blpXNWZjMjkxY21ObElqb2lkM2QzSW4wJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZQXItbWpTcUstN1c1RjVqZlphNlBwZXVsdW9DaGtsWjE1azNiVjVTb05ud0Emb2U9NjdCQjQyQ0IiLCJyZWFjdGl2ZV9hdWRpb19kb3dubG9hZF91cmwiOm51bGwsInNhbml0aXplZF90aXRsZSI6bnVsbCwic3VidGl0bGUiOiIiLCJ0aXRsZSI6IkluIExvdmUiLCJ3ZWJfMzBzX3ByZXZpZXdfZG93bmxvYWRfdXJsIjpudWxsfSwibXVzaWNfY29uc3VtcHRpb25faW5mbyI6eyJhbGxvd19tZWRpYV9jcmVhdGlvbl93aXRoX211c2ljIjp0cnVlLCJhdWRpb19hc3NldF9zdGFydF90aW1lX2luX21zIjoyNDM4OSwiYXVkaW9fZmlsdGVyX2luZm9zIjpbXSwiYXVkaW9fbXV0aW5nX2luZm8iOnsiYWxsb3dfYXVkaW9fZWRpdGluZyI6ZmFsc2UsIm11dGVfYXVkaW8iOmZhbHNlLCJtdXRlX3JlYXNvbl9zdHIiOiIiLCJzaG93X211dGVkX2F1ZGlvX3RvYXN0IjpmYWxzZX0sImNvbnRhaW5zX2x5cmljcyI6bnVsbCwiZGVyaXZlZF9jb250ZW50X2lkIjpudWxsLCJkaXNwbGF5X2xhYmVscyI6bnVsbCwiZm9ybWF0dGVkX2NsaXBzX21lZGlhX2NvdW50IjpudWxsLCJpZ19hcnRpc3QiOm51bGwsImlzX2Jvb2ttYXJrZWQiOmZhbHNlLCJpc190cmVuZGluZ19pbl9jbGlwcyI6ZmFsc2UsIm92ZXJsYXBfZHVyYXRpb25faW5fbXMiOjkwMDAwLCJwbGFjZWhvbGRlcl9wcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjEyNDQyLTE1LzQzOTg1NjI5XzMxMTEwNTkxNjE0NTM1MV81ODA2NDc1OTgxMTQwNTc3Nl9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9eUwwOU5YY0ZpWDRRN2tOdmdIalVQSlUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmb2g9MDBfQVlDbGMtelhSSjNHMjFEYWtJU0s5ZWVXVk5YQWRfWWc2VWp2RzdJc0M2Zk9aQSZvZT02N0JCMzkzRCZfbmNfc2lkPTIwMTFhZCIsInByZXZpb3VzX3RyZW5kX3JhbmsiOm51bGwsInNob3VsZF9hbGxvd19tdXNpY19lZGl0aW5nIjpmYWxzZSwic2hvdWxkX211dGVfYXVkaW8iOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb24iOiIiLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb25fdHlwZSI6bnVsbCwidHJlbmRfcmFuayI6bnVsbH19LCJudXhfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwib3JpZ2luYWxpdHlfaW5mbyI6bnVsbCwicHJvZmVzc2lvbmFsX2NsaXBzX3Vwc2VsbF90eXBlIjowLCJyZWVsc19vbl90aGVfcmlzZV9pbmZvIjpudWxsLCJyZXVzYWJsZV90ZXh0X2F0dHJpYnV0ZV9zdHJpbmciOm51bGwsInJldXNhYmxlX3RleHRfaW5mbyI6bnVsbCwic2hvcHBpbmdfaW5mbyI6bnVsbCwic2hvd19hY2hpZXZlbWVudHMiOmZhbHNlLCJzaG93X3RpcHMiOm51bGwsInRlbXBsYXRlX2luZm8iOm51bGwsInZpZXdlcl9pbnRlcmFjdGlvbl9zZXR0aW5ncyI6bnVsbH0sImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdOWElqd1RqbkgiLCJjb21tZW50X2NvdW50Ijo5MTAsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcmVhdGl2ZV9jb25maWciOnsiY2FwdHVyZV90eXBlIjoiY2xpcHNfdjIiLCJjcmVhdGlvbl90b29sX2luZm8iOlt7ImFwcGVhcmFuY2VfZWZmZWN0IjowLCJjYW1lcmFfdG9vbCI6MTc5LCJjb2xvcl9maWx0ZXJzIjoiIiwiZHVyYXRpb25fc2VsZWN0b3Jfc2Vjb25kcyI6MCwibWFnaWNfY3V0X2VuZF90aW1lIjowLjAsIm1hZ2ljX2N1dF9zdGFydF90aW1lIjowLjAsInNwZWVkX3NlbGVjdG9yIjowLjAsInRpbWVyX3NlbGVjdG9yX3NlY29uZHMiOjB9LHsiYXBwZWFyYW5jZV9lZmZlY3QiOjAsImNhbWVyYV90b29sIjo5NywiY29sb3JfZmlsdGVycyI6IiIsImR1cmF0aW9uX3NlbGVjdG9yX3NlY29uZHMiOjAsIm1hZ2ljX2N1dF9lbmRfdGltZSI6MC4wLCJtYWdpY19jdXRfc3RhcnRfdGltZSI6MC4wLCJzcGVlZF9zZWxlY3RvciI6MC4wLCJ0aW1lcl9zZWxlY3Rvcl9zZWNvbmRzIjowfV0sImVmZmVjdF9jb25maWdzIjpudWxsfSwiY3JlYXRvcl92aWV3ZXJfaW5zaWdodHMiOltdLCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTEyNDM1NDg0NTgzMjEzMCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgzMDExMTM3NDUyMzkyMjQiLCJmZWVkX3R5cGUiOiJjbGlwcyIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJTRUxGX0RJU0NMT1NVUkVfRkxPVyJ9LCJoYXNfYXVkaW8iOnRydWUsImhhc19oaWdoX3Jpc2tfZ2VuX2FpX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJoYXNfbGlrZWQiOmZhbHNlLCJoYXNfcHJpdmF0ZWx5X2xpa2VkIjpmYWxzZSwiaGFzX3NoYXJlZF90b19mYiI6MCwiaGFzX3ZpZXdzX2ZldGNoaW5nIjp0cnVlLCJpZCI6IjM1NzA2MTE4MjI3OTE2Mzc0NDciLCJpZ19tZWRpYV9zaGFyaW5nX2Rpc2FibGVkIjpmYWxzZSwiaWdfcGxheV9jb3VudCI6ODI0NDEsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7ImFkZGl0aW9uYWxfaXRlbXMiOnsiZmlyc3RfZnJhbWUiOnsiaGVpZ2h0Ijo2MzksInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA0NjA0MDNfODk5MTc5ODg1NjI1ODgyXzE1NDc0NjY5NTcyNjcwNzMwX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDJOREI0TVRFek5pNXpaSEl1WmpjeE9EYzRMbUZrWkdsMGFXOXVZV3hmWTI5MlpYSmZabkpoYldVaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1sTEprQ1JYNW5Bc1E3a052Z0ZCOFRxeSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWURXMFFDTC1iQS0xRlpoTWZ2OG9pdUNFenBSZFFjVVVSa0tNcWFmYzRLYXZnJm9lPTY3QkI2NDJGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH0sImlndHZfZmlyc3RfZnJhbWUiOnsiaGVpZ2h0Ijo2MzksInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA0NjA0MDNfODk5MTc5ODg1NjI1ODgyXzE1NDc0NjY5NTcyNjcwNzMwX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDJOREI0TVRFek5pNXpaSEl1WmpjeE9EYzRMbUZrWkdsMGFXOXVZV3hmWTI5MlpYSmZabkpoYldVaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1sTEprQ1JYNW5Bc1E3a052Z0ZCOFRxeSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWURXMFFDTC1iQS0xRlpoTWZ2OG9pdUNFenBSZFFjVVVSa0tNcWFmYzRLYXZnJm9lPTY3QkI2NDJGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH0sInNtYXJ0X2ZyYW1lIjpudWxsfSwiaXRlbXMiOlt7ImhlaWdodCI6NjQwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDIxNDc2XzE4MDY5NTQ2MzgyODc2NDkyXzc4MTMwNDcwOTE2MjcyNjUxODFfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRNVEk0TUM1elpISXVaamMxTnpZeExtUmxabUYxYkhSZlkyOTJaWEpmWm5KaGJXVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9cGlxaGh6d2V6MUVRN2tOdmdFcUdtaWomX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRFl4TVRneU1qYzVNVFl6TnpRME56RTRNRFk1TlRRMk16YzVPRGMyTkRreS4zLWNjYjctNSZvaD0wMF9BWUJMQVJhc1U3VEZlcklFUENlX3ZMYU9mN3BfTzFUcXBUVVMyUXBkdV9seUZBJm9lPTY3QkIzMEU5Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dLCJzY3J1YmJlcl9zcHJpdGVzaGVldF9pbmZvX2NhbmRpZGF0ZXMiOnsiZGVmYXVsdCI6eyJmaWxlX3NpemVfa2IiOjQxNiwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjEyNDYsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA4OTIyOTRfMTc4Nzk4NzkzODY2MzMxOF8zOTU3MTQzODYyMTIzNDE1NDU5X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1YWmNFZk1FazJUY1E3a052Z0h0Nlg1UiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUQxaVZwaGpLbVFBMWs5QnNoOHZwWnpmS2pBMVZEQ2NJQzNsMGJvOWtldWF3Jm9lPTY3QkI1QTg5Jl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjMxNjQ0NzYxOTA0NzYxOTAzLCJ0aHVtYm5haWxfaGVpZ2h0IjoxNzgsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjozMy4yMjd9fX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52ZW50b3J5X3NvdXJjZSI6InJlY29tbWVuZGVkX2NsaXBzX2NoYWluaW5nX21vZGVsIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19hcnRpc3RfcGljayI6ZmFsc2UsImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3F1aWV0X3Bvc3QiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjp0cnVlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdGhpcmRfcGFydHlfZG93bmxvYWRzX2VsaWdpYmxlIjp0cnVlLCJpc192aWRlbyI6dHJ1ZSwibGF5b3V0X3R5cGUiOiJvbmVfYnlfdHdvX2xlZnQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjEyNDQsIm1heF9udW1fdmlzaWJsZV9wcmV2aWV3X2NvbW1lbnRzIjowLCJtZWRpYV9jcm9wcGluZ19pbmZvIjp7InNxdWFyZV9jcm9wIjp7ImNyb3BfYm90dG9tIjowLjAsImNyb3BfbGVmdCI6MC4wLCJjcm9wX3JpZ2h0IjowLjAsImNyb3BfdG9wIjowLjB9fSwibWVkaWFfZm9ybWF0IjoidmlkZW8iLCJtZWRpYV9uYW1lIjoicmVlbCIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjIsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6bnVsbCwibnVtYmVyX29mX3F1YWxpdGllcyI6OCwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcmlnaW5hbF9oZWlnaHQiOjE5MjAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzA2MTE4MjI3OTE2Mzc0NDciLCJwbGF5X2NvdW50Ijo4MjQ0MSwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjbGlwcyIsInJlc2hhcmVfY291bnQiOjYzNiwic2hhcmVfY291bnRfZGlzYWJsZWQiOmZhbHNlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInNvY2lhbF9jb250ZXh0IjpbXSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFnZ2VkX3VzZXJzIjp7ImluIjpbeyJwb3NpdGlvbiI6WzAuMCwwLjBdLCJzaG93X2NhdGVnb3J5X29mX3VzZXIiOmZhbHNlLCJ1c2VyIjp7ImZ1bGxfbmFtZSI6IktSRUEiLCJpZCI6IjU0NDgyMDcyNDQ4IiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMjM5ODI0NDE3NjY4MDk4NzkzIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQwMzMwNjM3NV8zMTc3NDMzOTQ0NTE2NjlfNjk5MzE0OTg3Mjc0MDk0NjA4OV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTZsTmRrUDB2ajVZUTdrTnZnRkgyVWV4Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ09qdkNZZUJBcmFIQUZ0bzhFTjlOcTNia2huei1TNmpqa0Z5TG5fX18xTHcmb2U9NjdCQjRDNTImX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImtyZWFfYWkifX0seyJwb3NpdGlvbiI6WzAuMCwwLjBdLCJzaG93X2NhdGVnb3J5X29mX3VzZXIiOmZhbHNlLCJ1c2VyIjp7ImZ1bGxfbmFtZSI6IktsaW5nIEFJIiwiaWQiOiI2OTI4ODIwMzI5MSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzQ5NzQ1NzAwMTg5NjEzODg5MSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjYzNTI3NDRfMTA1NDA0MzE5OTgwNzIzMV8yODc0NzkzOTY4OTA5OTE0NTFfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9YzZoeUhDZFAxT3NRN2tOdmdHeWRSZDQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCUXNIT3hWQjJNTXN1emVsZURIQlJUT08wbnVPSmgtNTVCV3IxV0xaSW1KUSZvZT02N0JCNjc0MSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoia2xpbmdhaV9vZmZpY2lhbCJ9fV19LCJ0YWtlbl9hdCI6MTczOTg3MDUzMiwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwMjE0NzZfMTgwNjk1NDYzODI4NzY0OTJfNzgxMzA0NzA5MTYyNzI2NTE4MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE1USTRNQzV6WkhJdVpqYzFOell4TG1SbFptRjFiSFJmWTI5MlpYSmZabkpoYldVaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1waXFoaHp3ZXoxRVE3a052Z0VxR21paiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EWXhNVGd5TWpjNU1UWXpOelEwTnpFNE1EWTVOVFEyTXpjNU9EYzJORGt5LjMtY2NiNy01Jm9oPTAwX0FZQkxBUmFzVTdURmVySUVQQ2VfdkxhT2Y3cF9PMVRxcFRVUzJRcGR1X2x5RkEmb2U9NjdCQjMwRTkmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0Ijp0cnVlLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjowLCJmYW5fY2x1Yl9pZCI6IjczMjc0MzMyMTcyNjk1NDkiLCJmYW5fY2x1Yl9uYW1lIjoiIiwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6eyJzaG91bGRfc2hvd19jb250ZW50X3ByZXZpZXciOmZhbHNlLCJzaG91bGRfc2hvd19zb2NpYWxfY29udGV4dCI6ZmFsc2V9LCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6ZmFsc2UsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpmYWxzZSwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6ZmFsc2UsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjoxfSwiZmJpZF92MiI6MTc4NDE0MjYyOTQ3NDkxNTEsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoi66a07I+4IHwg8J2ZjfCdmZrwnZma8J2ZofCdmaggJiDwnZmO8J2ZqfCdmaTwnZmn8J2ZriDwnZma8J2ZmfCdmZ7wnZmp8J2ZpPCdmafhnbAiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiMjYzMTMyMTI0OTEiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwibGF0ZXN0X3JlZWxfbWVkaWEiOjE3Mzk4NzEwMzgsInByb2ZpbGVfcGljX2lkIjoiMzIzNjA0MTIwMDg0MjM0MTQ1NSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80MDE1ODA4NTFfMzY2MzAyNDAwNzI2NjE1M18xMzE3NTU3Nzg0MzEzMDQ5OTk2X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXM2dkxrUENuNXBvUTdrTnZnRmN1UG1SJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ2hhekxhUW9zWGlZVzBjdXhBLXhaVVZBYTA1UnNaODJoZWhZcktORGFqSncmb2U9NjdCQjY3QjYmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJyZWVsc19od2FuIn0sInZpZGVvX2NvZGVjIjoiYXYwMS4wLjAxTS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjMzLjIyNywidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fc3VidGl0bGVzX2NvbmZpZGVuY2UiOjAuNjc2ODg4OTQyNzE4NTA1OSwidmlkZW9fc3VidGl0bGVzX2xvY2FsZSI6ImtvX0tSIiwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFNRXJadlRsWVV3R1VxV0pSTEluTDQ5dUd6My12SVMtT1VTazFKSWtuOVVpc25Nb1hpLVd2V2xKc0YtTXV2blkxRW9UWUpDYWYxTWxLVGw1elVBekVYZElocG5iaEVhaUtUaUJoOC5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2prME5qWXhPRE15TkRNd01EUTFPQ3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTk1TVkJUTGtNekxqY3lNQzVrWVhOb1gySmhjMlZzYVc1bFh6RmZkakVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPTIzODIxM2U4Y2Q5ZDg5YTImX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDOHhRalJHTnpjMVFVTXhRVVJGUlRFMlJqazNSRVpGUTBNNU1URkZRVGM1TkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRIUmpCdWVIbEZYMkpZYWtGbFJVWkJRWGN0ZHpCcWVTMDFlRE5pY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnRUS3FZLTR2SzRERlFJb0FrTXpMQmRBUUl6TXpNek16UmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUNPbzBaVnJpdVAySXZacVlRY3JaTmVScXZ4LXktOXhIb2JpdUhWZWt0d3NnJm9lPTY3Qjc2QkMzJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6OTg1ODEwLCJoZWlnaHQiOjEyODAsImlkIjoiMTYwMDE0NDA1NzMwNTQ3OHYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg2L0FRTUVyWnZUbFlVd0dVcVdKUkxJbkw0OXVHejMtdklTLU9VU2sxSklrbjlVaXNuTW9YaS1XdldsSnNGLU11dm5ZMUVvVFlKQ2FmMU1sS1RsNXpVQXpFWGRJaHBuYmhFYWlLVGlCaDgubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qazBOall4T0RNeU5ETXdNRFExT0N3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05NU1ZCVExrTXpMamN5TUM1a1lYTm9YMkpoYzJWc2FXNWxYekZmZGpFaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz0yMzgyMTNlOGNkOWQ4OWEyJl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzh4UWpSR056YzFRVU14UVVSRlJURTJSamszUkVaRlEwTTVNVEZGUVRjNU5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSFJqQnVlSGxGWDJKWWFrRmxSVVpCUVhjdGR6QnFlUzAxZUROaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp0VEtxWS00dks0REZRSW9Ba016TEJkQVFJek16TXpNelJnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlDT28wWlZyaXVQMkl2WnFZUWNyWk5lUnF2eC15LTl4SG9iaXVIVmVrdHdzZyZvZT02N0I3NkJDMyZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9LHsiYmFuZHdpZHRoIjo5ODU4MTAsImhlaWdodCI6MTI4MCwiaWQiOiIxNjAwMTQ0MDU3MzA1NDc4diIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFNRXJadlRsWVV3R1VxV0pSTEluTDQ5dUd6My12SVMtT1VTazFKSWtuOVVpc25Nb1hpLVd2V2xKc0YtTXV2blkxRW9UWUpDYWYxTWxLVGw1elVBekVYZElocG5iaEVhaUtUaUJoOC5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2prME5qWXhPRE15TkRNd01EUTFPQ3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTk1TVkJUTGtNekxqY3lNQzVrWVhOb1gySmhjMlZzYVc1bFh6RmZkakVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPTIzODIxM2U4Y2Q5ZDg5YTImX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDOHhRalJHTnpjMVFVTXhRVVJGUlRFMlJqazNSRVpGUTBNNU1URkZRVGM1TkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRIUmpCdWVIbEZYMkpZYWtGbFJVWkJRWGN0ZHpCcWVTMDFlRE5pY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnRUS3FZLTR2SzRERlFJb0FrTXpMQmRBUUl6TXpNek16UmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUNPbzBaVnJpdVAySXZacVlRY3JaTmVScXZ4LXktOXhIb2JpdUhWZWt0d3NnJm9lPTY3Qjc2QkMzJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjk4NTgxMCwiaGVpZ2h0IjoxMjgwLCJpZCI6IjE2MDAxNDQwNTczMDU0Nzh2IiwidHlwZSI6MTAzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU1Fclp2VGxZVXdHVXFXSlJMSW5MNDl1R3ozLXZJUy1PVVNrMUpJa245VWlzbk1vWGktV3ZXbEpzRi1NdXZuWTFFb1RZSkNhZjFNbEtUbDV6VUF6RVhkSWhwbmJoRWFpS1RpQmg4Lm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPamswTmpZeE9ETXlORE13TURRMU9Dd2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOTVNWQlRMa016TGpjeU1DNWtZWE5vWDJKaGMyVnNhVzVsWHpGZmRqRWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9MjM4MjEzZThjZDlkODlhMiZfbmNfdnM9SEJrc0ZRSVlVbWxuWDNod2RsOXlaV1ZzYzE5d1pYSnRZVzVsYm5SZmMzSmZjSEp2WkM4eFFqUkdOemMxUVVNeFFVUkZSVEUyUmprM1JFWkZRME01TVRGRlFUYzVORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEhSakJ1ZUhsRlgySllha0ZsUlVaQlFYY3RkekJxZVMwMWVETmljVjlGUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdFRLcVktNHZLNERGUUlvQWtNekxCZEFRSXpNek16TXpSZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxX2djQSZjY2I9OS00Jm9oPTAwX0FZQ09vMFpWcml1UDJJdlpxWVFjclpOZVJxdngteS05eEhvYml1SFZla3R3c2cmb2U9NjdCNzZCQzMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6NzIwfV0sInZpZXdfc3RhdGVfaXRlbV90eXBlIjoxMjh9LHsiYXJlX3JlbWl4ZXNfY3Jvc3Nwb3N0YWJsZSI6dHJ1ZSwiYXZhdGFyX3N0aWNrZXJzIjpbXSwiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5ODQyNTczLCJjcmVhdGVkX2F0X3V0YyI6MTczOTg0MjU3MywiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzX3RyYW5zbGF0aW9uIjp0cnVlLCJoYXNodGFncyI6WyIjd2hhdHNhcHAiLCIjd2hhdHNhcHBoYWNrcyIsIiN3aGF0c2FwcHRpcHMiLCIjd2hhdHNhcHB0cmlja3MiLCIjY2hhdGdwdCIsIiNpYSIsIiN0cnVjb3NkZXdoYXRzYXBwIiwiI3RpcHNhbmR0cmlja3MiLCIjdGlwc3l0cnVjb3MiLCIjdGVjbm9sb2dpYSIsIiN0ZWNub2xvZ3kiLCIjZ2FieWJpb25kaSJdLCJpZCI6IjM1NzAzODA0MTMyNjY1NzQ2MzIiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTc4NjA1NTA4NjgyODM2NzQiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJBY8OhIHRlIGN1ZW50byBjb21vIHRlbmVyIENoYXRHUFQgZW4gV2hhdHNhcHBcbiN3aGF0c2FwcMKgICN3aGF0c2FwcGhhY2tzICN3aGF0c2FwcHRpcHMgI3doYXRzYXBwdHJpY2tzICNjaGF0Z3B0ICNpYSAjdHJ1Y29zZGV3aGF0c2FwcCAjdGlwc2FuZHRyaWNrcyAjdGlwc3l0cnVjb3MgI3RlY25vbG9naWEgI3RlY25vbG9neSAjZ2FieWJpb25kaSIsInRleHRfdHJhbnNsYXRpb24iOiJIZXJlIEkgdGVsbCB5b3UgaG93IHRvIGhhdmUgQ2hhdEdQVCBpbiBXaGF0c2FwcFxuICN3aGF0c2FwcCAjd2hhdHNhcHBoYWNrcyAjd2hhdHNhcHB0aXBzICN3aGF0c2FwcHRyaWNrcyAjY2hhdGdwdCAjaWEgI3RydWNvc2Rld2hhdHNhcHAgI3RpcHNhbmR0cmlja3MgI3RpcHN5dHJ1Y29zICN0ZWNub2xvZ2lhICN0ZWNub2xvZ3kgI2dhYnliaW9uZGkiLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwMTI2NjM0MzQ0LCJmdWxsX25hbWUiOiJHYWJyaWVsIEJpb25kaSIsImlkIjoiMjc4MDIwMjIxIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjI3OTExNDAxMDE1MDY5ODA1MzgiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMjc1NjYxMjcwXzQ5MzUxODE0MjY1NjM5MjlfNjg0MDI4NDUzODg2NTA5NzY4N19uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0tZ0J0SDJkX0djOFE3a052Z0VsM3NpbCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFBUUhVNWRVcTZxR090Rjg2X2YxWjJCMG9QdzFPTDRvaDkwZWRQMXRLMF9RJm9lPTY3QkIzNTU4Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJnYWJ5YmlvbmRpIn0sInVzZXJfaWQiOiIyNzgwMjAyMjEifSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjbGlwc19tZXRhZGF0YSI6eyJhY2hpZXZlbWVudHNfaW5mbyI6eyJudW1fZWFybmVkX2FjaGlldmVtZW50cyI6bnVsbCwic2hvd19hY2hpZXZlbWVudHMiOmZhbHNlfSwiYWRkaXRpb25hbF9hdWRpb19pbmZvIjp7ImFkZGl0aW9uYWxfYXVkaW9fdXNlcm5hbWUiOm51bGwsImF1ZGlvX3JlYXR0cmlidXRpb25faW5mbyI6eyJzaG91bGRfYWxsb3dfcmVzdG9yZSI6ZmFsc2V9fSwiYXNzZXRfcmVjb21tZW5kYXRpb25faW5mbyI6bnVsbCwiYXVkaW9fY2Fub25pY2FsX2lkIjoiMTgzMzE3MDA3MDEwODA4NjMiLCJhdWRpb19yYW5raW5nX2luZm8iOnsiYmVzdF9hdWRpb19jbHVzdGVyX2lkIjoiMTY1ODE4MzkyODExODI3NSJ9LCJhdWRpb190eXBlIjoib3JpZ2luYWxfc291bmRzIiwiYnJhbmRlZF9jb250ZW50X3RhZ19pbmZvIjp7ImNhbl9hZGRfdGFnIjpmYWxzZX0sImJyZWFraW5nX2NvbnRlbnRfaW5mbyI6bnVsbCwiYnJlYWtpbmdfY3JlYXRvcl9pbmZvIjpudWxsLCJjaGFsbGVuZ2VfaW5mbyI6bnVsbCwiY2xpcHNfY3JlYXRpb25fZW50cnlfcG9pbnQiOiJjbGlwcyIsImNvbnRlbnRfYXBwcmVjaWF0aW9uX2luZm8iOnsiZW5hYmxlZCI6ZmFsc2UsImVudHJ5X3BvaW50X2NvbnRhaW5lciI6bnVsbH0sImNvbnRleHR1YWxfaGlnaGxpZ2h0X2luZm8iOm51bGwsImN1dG91dF9zdGlja2VyX2luZm8iOltdLCJkaXNhYmxlX3VzZV9pbl9jbGlwc19jbGllbnRfY2FjaGUiOmZhbHNlLCJleHRlcm5hbF9tZWRpYV9pbmZvIjpudWxsLCJmZWF0dXJlZF9sYWJlbCI6bnVsbCwiaXNfZmFuX2NsdWJfcHJvbW9fdmlkZW8iOmZhbHNlLCJpc19wdWJsaWNfY2hhdF93ZWxjb21lX3ZpZGVvIjpmYWxzZSwiaXNfc2hhcmVkX3RvX2ZiIjpmYWxzZSwibWFzaHVwX2luZm8iOnsiY2FuX3RvZ2dsZV9tYXNodXBzX2FsbG93ZWQiOmZhbHNlLCJmb3JtYXR0ZWRfbWFzaHVwc19jb3VudCI6bnVsbCwiaGFzX2JlZW5fbWFzaGVkX3VwIjpmYWxzZSwiaGFzX25vbm1pbWljYWJsZV9hZGRpdGlvbmFsX2F1ZGlvIjpmYWxzZSwiaXNfY3JlYXRvcl9yZXF1ZXN0aW5nX21hc2h1cCI6ZmFsc2UsImlzX2xpZ2h0X3dlaWdodF9jaGVjayI6dHJ1ZSwiaXNfbGlnaHRfd2VpZ2h0X3JldXNlX2FsbG93ZWRfY2hlY2siOmZhbHNlLCJpc19waXZvdF9wYWdlX2F2YWlsYWJsZSI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOnRydWUsIm1hc2h1cF90eXBlIjpudWxsLCJtYXNodXBzX2FsbG93ZWQiOnRydWUsIm5vbl9wcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOjAsIm9yaWdpbmFsX21lZGlhIjpudWxsLCJwcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOm51bGx9LCJtZXJjaGFuZGlzaW5nX3BpbGxfaW5mbyI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwibnV4X2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOnsiYWxsb3dfY3JlYXRvcl90b19yZW5hbWUiOnRydWUsImF0dHJpYnV0ZWRfY3VzdG9tX2F1ZGlvX2Fzc2V0X2lkIjpudWxsLCJhdWRpb19hc3NldF9zdGFydF90aW1lX2luX21zIjpudWxsLCJhdWRpb19maWx0ZXJfaW5mb3MiOltdLCJhdWRpb19pZCI6MTgxODM5MzI0ODk4NjA1OSwiYXVkaW9fcGFydHMiOltdLCJhdWRpb19wYXJ0c19ieV9maWx0ZXIiOltdLCJjYW5fcmVtaXhfYmVfc2hhcmVkX3RvX2ZiIjp0cnVlLCJjYW5fcmVtaXhfYmVfc2hhcmVkX3RvX2ZiX2V4cGFuc2lvbiI6ZmFsc2UsImNvbnN1bXB0aW9uX2luZm8iOnsiZGlzcGxheV9tZWRpYV9pZCI6bnVsbCwiaXNfYm9va21hcmtlZCI6ZmFsc2UsImlzX3RyZW5kaW5nX2luX2NsaXBzIjpmYWxzZSwic2hvdWxkX211dGVfYXVkaW9fcmVhc29uIjoiIiwic2hvdWxkX211dGVfYXVkaW9fcmVhc29uX3R5cGUiOm51bGx9LCJkdXJhdGlvbl9pbl9tcyI6NjgzODIsImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9LCJmb3JtYXR0ZWRfY2xpcHNfbWVkaWFfY291bnQiOm51bGwsImhpZGVfcmVtaXhpbmciOmZhbHNlLCJpZ19hcnRpc3QiOnsiZnVsbF9uYW1lIjoiR2FicmllbCBCaW9uZGkiLCJpZCI6IjI3ODAyMDIyMSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMjc5MTE0MDEwMTUwNjk4MDUzOCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8yNzU2NjEyNzBfNDkzNTE4MTQyNjU2MzkyOV82ODQwMjg0NTM4ODY1MDk3Njg3X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPS1nQnRIMmRfR2M4UTdrTnZnRWwzc2lsJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUFRSFU1ZFVxNnFHT3RGODZfZjFaMkIwb1B3MU9MNG9oOTBlZFAxdEswX1Emb2U9NjdCQjM1NTgmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImdhYnliaW9uZGkifSwiaXNfYXVkaW9fYXV0b21hdGljYWxseV9hdHRyaWJ1dGVkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX2F1ZGlvX2VmZmVjdHMiOnRydWUsImlzX2VsaWdpYmxlX2Zvcl92aW55bF9zdGlja2VyIjp0cnVlLCJpc19leHBsaWNpdCI6ZmFsc2UsImlzX29yaWdpbmFsX2F1ZGlvX2Rvd25sb2FkX2VsaWdpYmxlIjp0cnVlLCJpc19yZXVzZV9kaXNhYmxlZCI6ZmFsc2UsImlzX3hwb3N0X2Zyb21fZmIiOmZhbHNlLCJvYV9vd25lcl9pc19tdXNpY19hcnRpc3QiOmZhbHNlLCJvcmlnaW5hbF9hdWRpb19zdWJ0eXBlIjoiZGVmYXVsdCIsIm9yaWdpbmFsX2F1ZGlvX3RpdGxlIjoiT3JpZ2luYWwgYXVkaW8iLCJvcmlnaW5hbF9tZWRpYV9pZCI6MzU3MDM4MDQxMzI2NjU3NDYzMiwib3ZlcmxhcF9kdXJhdGlvbl9pbl9tcyI6bnVsbCwicHJldmlvdXNfdHJlbmRfcmFuayI6bnVsbCwicHJvZ3Jlc3NpdmVfZG93bmxvYWRfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L28xL3YvdDIvZjIvbTY5L0FRUHZQMy1jMTdTRjFROUtVOFdILWFlOXNFT1FUcWJpTXo2ZEE5UHYycjFSZzV2eFA0a3RNX0t4eDM5XzhUZ1RzX3hqRDJCeE1jbVJWUUJsdzlncWxRcFMubXA0P3N0cmV4dD0xJl9uY19jYXQ9MTAzJl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9c19SLTBkSEI2YUFRN2tOdmdIUmlDMEcmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqb3hPREF6TlRJd09ESXpOekUyTVRJMkxDSjFjbXhuWlc1ZmMyOTFjbU5sSWpvaWQzZDNJbjAlM0QmY2NiPTktNCZfbmNfenQ9Mjgmb2g9MDBfQVlDY3Z0TGxwemM5eDJEcHJOblFXMkxBLVo4VU1aOEJUSWFpWml2WXVEZ0dZQSZvZT02N0JCNTFDQiIsInNob3VsZF9tdXRlX2F1ZGlvIjpmYWxzZSwidGltZV9jcmVhdGVkIjoxNzM5ODQyNTc1LCJ0cmVuZF9yYW5rIjpudWxsLCJ4cG9zdF9mYl9jcmVhdG9yX2luZm8iOm51bGx9LCJvcmlnaW5hbGl0eV9pbmZvIjpudWxsLCJwcm9mZXNzaW9uYWxfY2xpcHNfdXBzZWxsX3R5cGUiOjAsInJlZWxzX29uX3RoZV9yaXNlX2luZm8iOm51bGwsInJldXNhYmxlX3RleHRfYXR0cmlidXRlX3N0cmluZyI6bnVsbCwicmV1c2FibGVfdGV4dF9pbmZvIjpudWxsLCJzaG9wcGluZ19pbmZvIjpudWxsLCJzaG93X2FjaGlldmVtZW50cyI6ZmFsc2UsInNob3dfdGlwcyI6bnVsbCwidGVtcGxhdGVfaW5mbyI6bnVsbCwidmlld2VyX2ludGVyYWN0aW9uX3NldHRpbmdzIjpudWxsfSwiY2xpcHNfdGFiX3Bpbm5lZF91c2VyX2lkcyI6W10sImNvYXV0aG9yX3Byb2R1Y2VyX2Nhbl9zZWVfb3JnYW5pY19pbnNpZ2h0cyI6ZmFsc2UsImNvYXV0aG9yX3Byb2R1Y2VycyI6W10sImNvZGUiOiJER01paEcxeEQwbyIsImNvbW1lbnRfY291bnQiOjQ1LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY3JlYXRpdmVfY29uZmlnIjp7ImNhcHR1cmVfdHlwZSI6ImNsaXBzX3YyIiwiY3JlYXRpb25fdG9vbF9pbmZvIjpbeyJhcHBlYXJhbmNlX2VmZmVjdCI6MCwiY2FtZXJhX3Rvb2wiOjE3OSwiY29sb3JfZmlsdGVycyI6IiIsImR1cmF0aW9uX3NlbGVjdG9yX3NlY29uZHMiOjAsIm1hZ2ljX2N1dF9lbmRfdGltZSI6MC4wLCJtYWdpY19jdXRfc3RhcnRfdGltZSI6MC4wLCJzcGVlZF9zZWxlY3RvciI6MC4wLCJ0aW1lcl9zZWxlY3Rvcl9zZWNvbmRzIjowfSx7ImFwcGVhcmFuY2VfZWZmZWN0IjowLCJjYW1lcmFfdG9vbCI6OTcsImNvbG9yX2ZpbHRlcnMiOiIiLCJkdXJhdGlvbl9zZWxlY3Rvcl9zZWNvbmRzIjowLCJtYWdpY19jdXRfZW5kX3RpbWUiOjAuMCwibWFnaWNfY3V0X3N0YXJ0X3RpbWUiOjAuMCwic3BlZWRfc2VsZWN0b3IiOjAuMCwidGltZXJfc2VsZWN0b3Jfc2Vjb25kcyI6MH1dLCJlZmZlY3RfY29uZmlncyI6bnVsbH0sImNyZWF0b3Jfdmlld2VyX2luc2lnaHRzIjpbXSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjY2ODg2NTgxMTcwODM2LCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxNzg2MDU1MDgyNjI4MzY3NCIsImZlZWRfdHlwZSI6ImNsaXBzIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2F1ZGlvIjp0cnVlLCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTcwMzgwNDEzMjY2NTc0NjMyIiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnX3BsYXlfY291bnQiOjI5NTc2LCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJhZGRpdGlvbmFsX2l0ZW1zIjp7ImZpcnN0X2ZyYW1lIjp7ImhlaWdodCI6NjM5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwODI1ODc0XzE2NjQzODA3NTA4MzQ0ODNfMjgyNTUxNDczNzAwODQ0NzI4Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG1Ga1pHbDBhVzl1WVd4ZlkyOTJaWEpmWm5KaGJXVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9S1FpUWVyQXlIQXdRN2tOdmdIUkw3OUMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlEektCTGtIOHg5OHBVU2pMQjlqTHQ3alZjMExjTWVWOHI0cEUzd0tKWUllUSZvZT02N0JCNjRBNSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9LCJpZ3R2X2ZpcnN0X2ZyYW1lIjp7ImhlaWdodCI6NjM5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwODI1ODc0XzE2NjQzODA3NTA4MzQ0ODNfMjgyNTUxNDczNzAwODQ0NzI4Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG1Ga1pHbDBhVzl1WVd4ZlkyOTJaWEpmWm5KaGJXVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9S1FpUWVyQXlIQXdRN2tOdmdIUkw3OUMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlEektCTGtIOHg5OHBVU2pMQjlqTHQ3alZjMExjTWVWOHI0cEUzd0tKWUllUSZvZT02N0JCNjRBNSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9LCJzbWFydF9mcmFtZSI6bnVsbH0sIml0ZW1zIjpbeyJoZWlnaHQiOjY0MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yOTM1MC0xNS80ODA1MTU1NjhfMTgyMzA3MjE4MTgyMzAwNV82MTczMTA1NjY3NDU4MzY5Mjg0X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0TVRJNE1DNXpaSEl1WmpJNU16VXdMbVJsWm1GMWJIUmZZMjkyWlhKZlpuSmhiV1VpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUJmeW9NSHRySmkwUTdrTnZnR2cxaloxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURNNE1EUXhNekkyTmpVM05EWXpNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJMVGZWN2NWVG9UY2N1T1p1ZUhrT1FSNUpfdTN5RjJKZmVFZy1Xc0JsNXJnJm9lPTY3QkI1N0VCJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dLCJzY3J1YmJlcl9zcHJpdGVzaGVldF9pbmZvX2NhbmRpZGF0ZXMiOnsiZGVmYXVsdCI6eyJmaWxlX3NpemVfa2IiOjM0OCwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjEyNDYsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAyMTIwODNfMTEzODEzNzA3NDQ2Mjc0MV8xMjU0NTU1MDY3NDIwMjU3MDM1X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1xOUJIY1RqOGRsMFE3a052Z0VPUHJLQiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWURCMk01RndnM18xZDBpU2lXOEt6ZFUxdzZPR2hKSmVOdk9tSmU5V05hcTJBJm9lPTY3QkI1MTUwJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjY1MTI1NzE0Mjg1NzE0MjksInRodW1ibmFpbF9oZWlnaHQiOjE3OCwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjY4LjM4Mn19fSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZlbnRvcnlfc291cmNlIjoicmVjb21tZW5kZWRfY2xpcHNfY2hhaW5pbmdfbW9kZWwiLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2FydGlzdF9waWNrIjpmYWxzZSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOnRydWUsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOmZhbHNlLCJpc19kYXNoX2VsaWdpYmxlIjoxLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcXVpZXRfcG9zdCI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOnRydWUsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc190aGlyZF9wYXJ0eV9kb3dubG9hZHNfZWxpZ2libGUiOnRydWUsImlzX3ZpZGVvIjp0cnVlLCJsYXlvdXRfdHlwZSI6Im9uZV9ieV90d29fbGVmdCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjpmYWxzZSwibGlrZV9jb3VudCI6OTY3LCJtYXhfbnVtX3Zpc2libGVfcHJldmlld19jb21tZW50cyI6MCwibWVkaWFfY3JvcHBpbmdfaW5mbyI6eyJmb3VyX2J5X3RocmVlX2Nyb3AiOnsiY3JvcF9ib3R0b20iOjAuMCwiY3JvcF9sZWZ0IjowLjAsImNyb3BfcmlnaHQiOjAuMCwiY3JvcF90b3AiOjAuMH19LCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJyZWVsIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6MiwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjpudWxsLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjo1LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9yaWdpbmFsX2hlaWdodCI6MTkyMCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDM4MDQxMzI2NjU3NDYzMiIsInBsYXlfY291bnQiOjI5NTc2LCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNsaXBzIiwicmVzaGFyZV9jb3VudCI6MjY3LCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic29jaWFsX2NvbnRleHQiOltdLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTg0MjU3MiwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjkzNTAtMTUvNDgwNTE1NTY4XzE4MjMwNzIxODE4MjMwMDVfNjE3MzEwNTY2NzQ1ODM2OTI4NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE1USTRNQzV6WkhJdVpqSTVNelV3TG1SbFptRjFiSFJmWTI5MlpYSmZabkpoYldVaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1CZnlvTUh0ckppMFE3a052Z0dnMWpaMSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ETTRNRFF4TXpJMk5qVTNORFl6TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCTFRmVjdjVlRvVGNjdU9adWVIa09RUjVKX3UzeUYySmZlRWctV3NCbDVyZyZvZT02N0JCNTdFQiZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOltdLCJ0cmFuc2xhdGVkX3ZpZGVvX3N1YnRpdGxlcyI6W3sibGFuZ3VhZ2UiOiJlbiIsInVyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzY3NDMtNi80ODA1MDQ0OTZfNjQ5NTE0OTA3NDcxMjkwXzMxMTc5MDg4NTQzNDMwNzE0MjJfbi5zcnQ/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWlrZWdKUm9JWHFvUTdrTnZnRjBXWXg2Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQlhOX1JxM0haVVN0eG9CRTl5RE04cm9ZQkc4alRYWkJKcUZUdmV0MzQ1WVEmb2U9NjdCQjRGNkUmX25jX3NpZD0yMDExYWQifV0sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQwMDEyNjYzNDM0NCwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJHYWJyaWVsIEJpb25kaSIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyNzgwMjAyMjEiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwibGF0ZXN0X3JlZWxfbWVkaWEiOjE3Mzk5MjUxNDUsInByb2ZpbGVfcGljX2lkIjoiMjc5MTE0MDEwMTUwNjk4MDUzOCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8yNzU2NjEyNzBfNDkzNTE4MTQyNjU2MzkyOV82ODQwMjg0NTM4ODY1MDk3Njg3X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPS1nQnRIMmRfR2M4UTdrTnZnRWwzc2lsJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUFRSFU1ZFVxNnFHT3RGODZfZjFaMkIwb1B3MU9MNG9oOTBlZFAxdEswX1Emb2U9NjdCQjM1NTgmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJnYWJ5YmlvbmRpIn0sInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA1TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjY4LjM4MiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fc3VidGl0bGVzX2NvbmZpZGVuY2UiOjAuNjM5OTk5OTg1Njk0ODg1MywidmlkZW9fc3VidGl0bGVzX2xvY2FsZSI6ImVzX0NMIiwidmlkZW9fc3VidGl0bGVzX3VyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzY3NDMtNi80ODA0NDE1OThfMjg0MTYwMTc3NjQ3MDgzMjlfNzk2MDQwOTAwODU5Njg4MDczNV9uLnNydD9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Rk9DS2I1U042M3NRN2tOdmdFUkFtTl8mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmb2g9MDBfQVlEMmtBQ2pzdmRyYVZUV25wa0RFSmtFOGhpS1JzR1YtWF9LMW5hX0xJTFotZyZvZT02N0JCNTc3NiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg2L0FRUExUVmplSXRTNHIzbWp5NGczSkM0eHdTWkFESjEwcUtTdzg0TVhxVzAzQ01ON0UxTlhqdXk1dDhOcnhkcWhUdG1GR3NJbzVNNGtOdGZSdFM1cHdFZFlFQm1uNlBvSDJDNTgzejAubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRTRNRE0xTWpBNE1qTTNNVFl4TWpZc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEVEVsUVV5NURNeTQzTWpBdVpHRnphRjlpWVhObGJHbHVaVjh4WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmdnM9N2IyMTNlZDRhZDNjYjA0NSZfbmNfdnM9SEJrc0ZRSVlVbWxuWDNod2RsOXlaV1ZzYzE5d1pYSnRZVzVsYm5SZmMzSmZjSEp2WkM4NU16UTJNRE0yT1VRMU16WkZRMEkyTkVWRU1UUTNPRVV5UmtSQk1qUTRRVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZElMV2R2YUhrdFl6ZG5XVEJUU1VWQlJqZFJUekpuZEVaTE5HSmljVjlGUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcnlrMTZEZGtyUUdGUUlvQWtNekxCZEFVUmRzaTBPVmdSZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxX2djQSZjY2I9OS00Jm9oPTAwX0FZRDZ1Z1J0LWdGTlB0Z0tuTXpleXhWbjQ0aUlsR3d5VkJ3YXYwWDZxU3Zid1Emb2U9NjdCNzZDNzQmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjo0NzQ0MjksImhlaWdodCI6MTI4MCwiaWQiOiIxNTU4ODEyOTQ4MTQyODA1diIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFQTFRWamVJdFM0cjNtank0ZzNKQzR4d1NaQURKMTBxS1N3ODRNWHFXMDNDTU43RTFOWGp1eTV0OE5yeGRxaFR0bUZHc0lvNU00a050ZlJ0UzVwd0VkWUVCbW42UG9IMkM1ODN6MC5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFNE1ETTFNakE0TWpNM01UWXhNallzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURURWxRVXk1RE15NDNNakF1WkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZ2cz03YjIxM2VkNGFkM2NiMDQ1Jl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzg1TXpRMk1ETTJPVVExTXpaRlEwSTJORVZFTVRRM09FVXlSa1JCTWpRNFFWOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSUxXZHZhSGt0WXpkbldUQlRTVVZCUmpkUlR6Sm5kRVpMTkdKaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpyeWsxNkRka3JRR0ZRSW9Ba016TEJkQVVSZHNpME9WZ1JnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlENnVnUnQtZ0ZOUHRnS25NemV5eFZuNDRpSWxHd3lWQndhdjBYNnFTdmJ3USZvZT02N0I3NkM3NCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9LHsiYmFuZHdpZHRoIjo0NzQ0MjksImhlaWdodCI6MTI4MCwiaWQiOiIxNTU4ODEyOTQ4MTQyODA1diIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFQTFRWamVJdFM0cjNtank0ZzNKQzR4d1NaQURKMTBxS1N3ODRNWHFXMDNDTU43RTFOWGp1eTV0OE5yeGRxaFR0bUZHc0lvNU00a050ZlJ0UzVwd0VkWUVCbW42UG9IMkM1ODN6MC5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFNE1ETTFNakE0TWpNM01UWXhNallzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURURWxRVXk1RE15NDNNakF1WkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZ2cz03YjIxM2VkNGFkM2NiMDQ1Jl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzg1TXpRMk1ETTJPVVExTXpaRlEwSTJORVZFTVRRM09FVXlSa1JCTWpRNFFWOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSUxXZHZhSGt0WXpkbldUQlRTVVZCUmpkUlR6Sm5kRVpMTkdKaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpyeWsxNkRka3JRR0ZRSW9Ba016TEJkQVVSZHNpME9WZ1JnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlENnVnUnQtZ0ZOUHRnS25NemV5eFZuNDRpSWxHd3lWQndhdjBYNnFTdmJ3USZvZT02N0I3NkM3NCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9LHsiYmFuZHdpZHRoIjo0NzQ0MjksImhlaWdodCI6MTI4MCwiaWQiOiIxNTU4ODEyOTQ4MTQyODA1diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFQTFRWamVJdFM0cjNtank0ZzNKQzR4d1NaQURKMTBxS1N3ODRNWHFXMDNDTU43RTFOWGp1eTV0OE5yeGRxaFR0bUZHc0lvNU00a050ZlJ0UzVwd0VkWUVCbW42UG9IMkM1ODN6MC5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFNE1ETTFNakE0TWpNM01UWXhNallzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURURWxRVXk1RE15NDNNakF1WkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZ2cz03YjIxM2VkNGFkM2NiMDQ1Jl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzg1TXpRMk1ETTJPVVExTXpaRlEwSTJORVZFTVRRM09FVXlSa1JCTWpRNFFWOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSUxXZHZhSGt0WXpkbldUQlRTVVZCUmpkUlR6Sm5kRVpMTkdKaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpyeWsxNkRka3JRR0ZRSW9Ba016TEJkQVVSZHNpME9WZ1JnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlENnVnUnQtZ0ZOUHRnS25NemV5eFZuNDRpSWxHd3lWQndhdjBYNnFTdmJ3USZvZT02N0I3NkM3NCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9XSwidmlld19zdGF0ZV9pdGVtX3R5cGUiOjEyOH0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX21vZGlmeV9jYXJvdXNlbCI6dHJ1ZSwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE3Mzk4MDA4MzUsImNyZWF0ZWRfYXRfdXRjIjoxNzM5ODAwODM1LCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNfdHJhbnNsYXRpb24iOnRydWUsImhhc2h0YWdzIjpbIiNJbnRlbGlnZW5jaWFBcnRpZmljaWFsIiwiI0NoYXRHUFQiLCIjRGVlcHNlZWsiLCIjSUEiLCIjQWxpYmFiYSIsIiNDbGF1ZGUiLCIjQW50aHJvcGljIiwiI1BHVGVjaCIsIiNQR1NlY3VlbmNpYSJdLCJpZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDIiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTc5Mzk5NjY1MDc5NjY1NzEiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJFbCBtdW5kbyBubyBwYXJhIGRlIHNvcnByZW5kZXJzZSBjb24gbG9zIGdyYW5kZXMgYXZhbmNlcyBxdWUgZXN0w6EgdGVuaWVuZG8gbGEgI0ludGVsaWdlbmNpYUFydGlmaWNpYWwgY29uIGVsIGRlc2Fycm9sbG8gZGUgbnVldm9zIG1vZGVsb3MgeSBhY3R1YWxpemFjaW9uZXMuIFxuXG5EZXNkZSBxdWUgT3BlbkFJIGxhbnrDsyAjQ2hhdEdQVCBlbiAyMDIyLCBzb24gdmFyaWFzIGxhcyBjb21wYcOxw61hcyB0ZWNub2zDs2dpY2FzIHF1ZSBoYW4gZGVzYXJyb2xsYWRvIHN1cyBwcm9waW9zIG1vZGVsb3MgZW4gdW5hIGNhcnJlcmEgYSBsYSBxdWUgc2UgaGFuIHN1bWFkbyBjb21wYcOxw61hcyBjaGluYXMgeSBldXJvcGVhcy4gXG5cbkxhIGxsZWdhZGEgZGUgbGEgc3RhcnR1cCBjaGluYSAjRGVlcHNlZWsgc2FjdWRpw7MgYWwgbXVuZG8gdGVjbm9sw7NnaWNvIGVuIGVsIGluaWNpbyBkZSBlc3RlIGHDsW8gbHVlZ28gZGVsIGxhbnphbWllbnRvIGRlIHN1IG1vZGVsbyBjb252ZXJzYWNpb25hbCBSMS4gXG5cbkVzdGEgY29tcGHDscOtYSBhc2VndXLDsyBxdWUgc3UgbW9kZWxvIHNvbG8gcmVxdWlyacOzIDUuNiBtaWxsb25lcyBkZSBkw7NsYXJlcyBwYXJhIHN1IGRlc2Fycm9sbG8gZnJlbnRlIGEgbG9zIG1pbGVzIGRlIG1pbGxvbmVzIGRlIGTDs2xhcmVzIHF1ZSBoYW4gdGVuaWRvIHN1IGNvbXBldGVuY2lhLiBBZGVtw6FzLCBkZW1vc3Ryw7Mgc2VyIG3DoXMgZWZpY2llbnRlIGFsIHVzYXIgbWVub3MgY2hpcHMuIFxuXG5Fc3RlIGFudW5jaW8gaGl6byBjYWVyIGxhcyBhY2Npb25lcyBkZSBsYXMgZ3JhbmRlcyBjb21wYcOxw61hcyBkZWwgc2VjdG9yIGVuIEVFLlVVLiwgZW50cmUgZWxsYXMgbGEgZmFicmljYW50ZSBkZSBjaGlwcyBOdmlkaWEuIFxuXG5EZSBlc3RhIGZvcm1hLCBlbCBtdW5kbyBlc3TDoSBwcmVzZW5jaWFuZG8gdW5hIG51ZXZhIGNhcnJlcmEgdGVjbm9sw7NnaWNhIGRlIGxhIG1hbm8gZGUgbGEgI0lBIGVudHJlIGRvcyBwb3RlbmNpYXMgY29tbyBFRS5VVS4geSBDaGluYS4gXG5cblRhbiBzb2xvIHVub3MgZMOtYXMgZGVzcHXDqXMgZGUgbG8gb2N1cnJpZG8gY29uIERlZXBzZWVrLCBlbCBnaWdhbnRlIGRlIGNvbWVyY2lvIGVsZWN0csOzbmljbyBjaGlubyAjQWxpYmFiYSB0YW1iacOpbiBzb3JwcmVuZGnDsyBhbCBhbnVuY2lhciBzdSBwcm9waW8gbW9kZWxvIGRlIElBIGRlbm9taW5hZG8gY29tbyBRd2VuMi41LU1heC5cblxuRXN0YSBjb21wYcOxw61hIGFzZWd1csOzIHF1ZSBzdSBtb2RlbG8gYXZhbnphZG8gZGUgSUEsIHF1ZSBzb2xvIGVzdMOhIGRpc3BvbmlibGUgcGFyYSBkZXNhcnJvbGxhZG9yZXMsIHBvZHLDrWEgc3VwZXJhciBsYXMgY2FwYWNpZGFkZXMgZGUgc3VzIGNvbXBldGlkb3JlcyBlc3RhZG91bmlkZW5zZXMgY29tbyBDaGF0R1BULCAjQ2xhdWRlIHkgI0FudGhyb3BpYy4gXG5cbsK/Q3JlZXMgcXVlIGxhIElBIHlhIGVzdMOhIHNvYnJlcGFzYW5kbyBsYXMgY2FwYWNpZGFkZXMgaHVtYW5hcz8gXG5cbiNQR1RlY2ggI1BHU2VjdWVuY2lhIiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQwMTA5MjYzNjI2NSwiZnVsbF9uYW1lIjoiUGxheUdyb3VuZCIsImlkIjoiNDAwOTk2NDIxIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMjE4MTQ0MzUzMDQ1MjA5Mzk3MyIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS83MjMyNjc4M18yNjQ4MzA1NTg1MjU1Nzg1XzQ0NzUyMzMwNjkxODc0NjUyMTZfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9a1RhTDAxajNxYk1RN2tOdmdFSWpEcnYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCLXdxZGRyVUJsa29mYy1vWXBjRHIyWG91UXlTbnNfdy0tREhkRTFsQkEtUSZvZT02N0JCNDJFQSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoicGxheWdyb3VuZG1hZyJ9LCJ1c2VyX2lkIjoiNDAwOTk2NDIxIn0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2Fyb3VzZWxfbWVkaWEiOlt7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDJfNDAwOTk2NDIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDAzMDU1MDIxODExMTE0NyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk1MjUxOTBfOTQzNzYzMDI0NTY3MjkyXzM2NzA3MjgwNTY2MTQ1NjI5MzZfbi5qcGc/c2U9NyZzdHA9YzAuMC4xMDgwLjEzNTFhX2RzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3hlREV6TlRFdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1IR19RV1JFUkJBTVE3a052Z0hVai1BUyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUxTURJeE9ERXhNVEUwTnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCR1U3cmFGV0xWbWpJZm10ek5CNHFkQ0NwX0o1cElvdTZiMEU5NDdESlVodyZvZT02N0JCNUZFQSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6MzYwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NTI1MTkwXzk0Mzc2MzAyNDU2NzI5Ml8zNjcwNzI4MDU2NjE0NTYyOTM2X24uanBnP3N0cD1jMC4wLjEwODAuMTM1MWFfZHN0LWpwZ19lMzVfczM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURneGVERXpOVEV1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUhHX1FXUkVSQkFNUTdrTnZnSFVqLUFTJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBek1EVTFNREl4T0RFeE1URTBOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURvMHp6SVpXbFRIQjBYcjN1Rm5FTlpoeV9vcDUtaEZCYnZnVmRubVc3dER3Jm9lPTY3QkI1RkVBJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjI4OH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUxLCJvcmlnaW5hbF93aWR0aCI6MTA4MSwicGsiOiIzNTcwMDMwNTUwMjE4MTExMTQ3IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWdnZWRfdXNlcnMiOnsiaW4iOltdfSwidGFrZW5fYXQiOjE3Mzk4MDA4MzAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NTI1MTkwXzk0Mzc2MzAyNDU2NzI5Ml8zNjcwNzI4MDU2NjE0NTYyOTM2X24uanBnP3NlPTcmc3RwPWMwLjAuMTA4MC4xMzUxYV9kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd4ZURFek5URXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SEdfUVdSRVJCQU1RN2tOdmdIVWotQVMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVMU1ESXhPREV4TVRFME53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkdVN3JhRldMVm1qSWZtdHpOQjRxZENDcF9KNXBJb3U2YjBFOTQ3REpVaHcmb2U9NjdCQjVGRUEmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDJfNDAwOTk2NDIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDAzMDU0ODA1MzY5NjMwNSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk0OTQ1NjZfOTQzNzYyOTM3OTAwNjM0XzE4NzM0ODEzMjcxODMyNDYxMDlfbi5qcGc/c2U9NyZzdHA9YzAuMC4xMDgwLjEzNTFhX2RzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3hlREV6TlRFdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1acXRZNHhCMjU1VVE3a052Z0dlRGpTNiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUwT0RBMU16WTVOak13TlElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBdVBJNF9Nbjhhb0ZXOWVnQ2hOQWNUNjhCbjRLVzVsZURKLXNEcnF2dmJYQSZvZT02N0JCNTI0NSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6MzYwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NDk0NTY2Xzk0Mzc2MjkzNzkwMDYzNF8xODczNDgxMzI3MTgzMjQ2MTA5X24uanBnP3N0cD1jMC4wLjEwODAuMTM1MWFfZHN0LWpwZ19lMzVfczM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURneGVERXpOVEV1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVpxdFk0eEIyNTVVUTdrTnZnR2VEalM2Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBek1EVTBPREExTXpZNU5qTXdOUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFxdzNNSmxCOWZ6dlJrd0xSYS00c1ZrOFlDY3hPbGstMk0yRExsczJmWGFRJm9lPTY3QkI1MjQ1Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjI4OH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUxLCJvcmlnaW5hbF93aWR0aCI6MTA4MSwicGsiOiIzNTcwMDMwNTQ4MDUzNjk2MzA1IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWdnZWRfdXNlcnMiOnsiaW4iOltdfSwidGFrZW5fYXQiOjE3Mzk4MDA4MzAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NDk0NTY2Xzk0Mzc2MjkzNzkwMDYzNF8xODczNDgxMzI3MTgzMjQ2MTA5X24uanBnP3NlPTcmc3RwPWMwLjAuMTA4MC4xMzUxYV9kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd4ZURFek5URXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WnF0WTR4QjI1NVVRN2tOdmdHZURqUzYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVME9EQTFNelk1TmpNd05RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXVQSTRfTW44YW9GVzllZ0NoTkFjVDY4Qm40S1c1bGVESi1zRHJxdnZiWEEmb2U9NjdCQjUyNDUmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDJfNDAwOTk2NDIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDAzMDU0OTY4OTYyMTMyOSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk1MTkwNzNfOTQzNzYzMDg0NTY3Mjg2XzQyNTAyOTk0MzI0NDc0MzQzNzFfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU4wdThUeHI5azdvUTdrTnZnRXlYX0ptJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBek1EVTBPVFk0T1RZeU1UTXlPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUEwVU9tVnhJU3R0ZlJKVnk3NUw5dWplRGVwV2hQR1VqZzJEOHI2UzVxaEhnJm9lPTY3QkI2MEU5Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk1MTkwNzNfOTQzNzYzMDg0NTY3Mjg2XzQyNTAyOTk0MzI0NDc0MzQzNzFfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1OMHU4VHhyOWs3b1E3a052Z0V5WF9KbSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUwT1RZNE9UWXlNVE15T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCYjlMaXpNMlNJNnktcTc0dTh3Ri1kZzlYd1NydzVDbUV3VnJwWmhTUWpsdyZvZT02N0JCNjBFOSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDAzMDU0OTY4OTYyMTMyOSIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFnZ2VkX3VzZXJzIjp7ImluIjpbXX0sInRha2VuX2F0IjoxNzM5ODAwODMwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ3OTUxOTA3M185NDM3NjMwODQ1NjcyODZfNDI1MDI5OTQzMjQ0NzQzNDM3MV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TjB1OFR4cjlrN29RN2tOdmdFeVhfSm0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVME9UWTRPVFl5TVRNeU9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQTBVT21WeElTdHRmUkpWeTc1TDl1amVEZXBXaFBHVWpnMkQ4cjZTNXFoSGcmb2U9NjdCQjYwRTkmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDJfNDAwOTk2NDIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDAzMDU0ODE5NjQ4Mzc0NyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk0OTcxNDhfOTQzNzYzMTExMjMzOTUwXzUwMTQwMTE0MTA5MjkyNTUyMjRfbi5qcGc/c2U9NyZzdHA9YzAuMC4xMDgwLjEzNTFhX2RzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3hlREV6TlRFdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz14MWwyUWlXcnFVSVE3a052Z0ZVVVhYdSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUwT0RFNU5qUTRNemMwTnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlENTh6b2tQbDJHQnE0U2hpdEwtV3J3QlRnS016ODFDQ2F2cFZmNUc5bXNYdyZvZT02N0JCNEFFMSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6MzYwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NDk3MTQ4Xzk0Mzc2MzExMTIzMzk1MF81MDE0MDExNDEwOTI5MjU1MjI0X24uanBnP3N0cD1jMC4wLjEwODAuMTM1MWFfZHN0LWpwZ19lMzVfczM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURneGVERXpOVEV1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXgxbDJRaVdycVVJUTdrTnZnRlVVWFh1Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBek1EVTBPREU1TmpRNE16YzBOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUR5VzVBSWUwWmw3WFQ0YUxVUlRKcjEzX19ERGNWNEFfa1JFcTRyR3ZMVV93Jm9lPTY3QkI0QUUxJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjI4OH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUxLCJvcmlnaW5hbF93aWR0aCI6MTA4MSwicGsiOiIzNTcwMDMwNTQ4MTk2NDgzNzQ3IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWdnZWRfdXNlcnMiOnsiaW4iOltdfSwidGFrZW5fYXQiOjE3Mzk4MDA4MzAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NDk3MTQ4Xzk0Mzc2MzExMTIzMzk1MF81MDE0MDExNDEwOTI5MjU1MjI0X24uanBnP3NlPTcmc3RwPWMwLjAuMTA4MC4xMzUxYV9kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd4ZURFek5URXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9eDFsMlFpV3JxVUlRN2tOdmdGVVVYWHUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVME9ERTVOalE0TXpjME53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDU4em9rUGwyR0JxNFNoaXRMLVdyd0JUZ0tNejgxQ0NhdnBWZjVHOW1zWHcmb2U9NjdCQjRBRTEmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDJfNDAwOTk2NDIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDAzMDU0OTU4ODgyODM0NyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODAwNTQ1OTFfOTQzNzYzMTE0NTY3MjgzXzgzODI4MDgzOTY4ODcxODIzMTRfbi5qcGc/c2U9NyZzdHA9YzAuMC4xMDgwLjEzNTBhX2RzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRFdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1NSWduT0RCTkY4RVE3a052Z0VjeFIzLSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUwT1RVNE9EZ3lPRE0wTnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDVUptSVhWWXo4VjZLWlpnVnh4aWsxdmdGWmFaOS1OOXFhbmVHX3A0QjFIdyZvZT02N0JCNUVGMiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6MzYwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMDU0NTkxXzk0Mzc2MzExNDU2NzI4M184MzgyODA4Mzk2ODg3MTgyMzE0X24uanBnP3N0cD1jMC4wLjEwODAuMTM1MGFfZHN0LWpwZ19lMzVfczM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEV1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU1JZ25PREJORjhFUTdrTnZnRWN4UjMtJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBek1EVTBPVFU0T0RneU9ETTBOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNDZ0M4MlV0NmFQLTdQOUd5cFRDUDQ3RnBQb0lHZFRydWQ3TGdxSmZjUVVRJm9lPTY3QkI1RUYyJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjI4OH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUxLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMDMwNTQ5NTg4ODI4MzQ3IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWdnZWRfdXNlcnMiOnsiaW4iOltdfSwidGFrZW5fYXQiOjE3Mzk4MDA4MzAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMDU0NTkxXzk0Mzc2MzExNDU2NzI4M184MzgyODA4Mzk2ODg3MTgyMzE0X24uanBnP3NlPTcmc3RwPWMwLjAuMTA4MC4xMzUwYV9kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5URXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TUlnbk9EQk5GOEVRN2tOdmdFY3hSMy0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVME9UVTRPRGd5T0RNME53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1VKbUlYVll6OFY2S1paZ1Z4eGlrMXZnRlphWjktTjlxYW5lR19wNEIxSHcmb2U9NjdCQjVFRjImX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDJfNDAwOTk2NDIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDAzMDU0ODM4MDgzMTkyOCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk0ODcwNjhfOTQzNzYzMDY3OTAwNjIxXzY0Mjk1ODcwMDY2MTA0NjQ5Mjhfbi5qcGc/c2U9NyZzdHA9YzAuMC4xMDgwLjEzNTFhX2RzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3hlREV6TlRFdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1aVTBEM1J0d2xvOFE3a052Z0hZam5aZCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUwT0RNNE1EZ3pNVGt5T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBdF95ajhyYXVQRnlyaGE3S3YzdzBQVXNjeXk5VV9LdHFPWnlpNldZV1NfdyZvZT02N0JCNDlBQiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6MzYwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NDg3MDY4Xzk0Mzc2MzA2NzkwMDYyMV82NDI5NTg3MDA2NjEwNDY0OTI4X24uanBnP3N0cD1jMC4wLjEwODAuMTM1MWFfZHN0LWpwZ19lMzVfczM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURneGVERXpOVEV1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVpVMEQzUnR3bG84UTdrTnZnSFlqblpkJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBek1EVTBPRE00TURnek1Ua3lPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURrUVJ0ZlRjRTNoSmdpSXhzc1Z3Y3V1TUdaX29kOVV3SUFmTERvQURwZU5BJm9lPTY3QkI0OUFCJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjI4OH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUxLCJvcmlnaW5hbF93aWR0aCI6MTA4MSwicGsiOiIzNTcwMDMwNTQ4MzgwODMxOTI4IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWdnZWRfdXNlcnMiOnsiaW4iOltdfSwidGFrZW5fYXQiOjE3Mzk4MDA4MzAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NDg3MDY4Xzk0Mzc2MzA2NzkwMDYyMV82NDI5NTg3MDA2NjEwNDY0OTI4X24uanBnP3NlPTcmc3RwPWMwLjAuMTA4MC4xMzUxYV9kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd4ZURFek5URXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WlUwRDNSdHdsbzhRN2tOdmdIWWpuWmQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVME9ETTRNRGd6TVRreU9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXRfeWo4cmF1UEZ5cmhhN0t2M3cwUFVzY3l5OVVfS3RxT1p5aTZXWVdTX3cmb2U9NjdCQjQ5QUImX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDJfNDAwOTk2NDIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDAzMDU0OTg4MjUxNDcyNyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk0OTYwODBfOTQzNzYyOTYxMjMzOTY1XzQ1NjUyMTcxNDc4MjY4MDUyNzBfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVZPblNvelpGdGpNUTdrTnZnSFhBUDJxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBek1EVTBPVGc0TWpVeE5EY3lOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFCbEsyVkZfVW9kYWZ6elB5OGUzSWZELUswdWY1SGpyTlFvS1ZBMGFoLXN3Jm9lPTY3QkI1MEFFJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk0OTYwODBfOTQzNzYyOTYxMjMzOTY1XzQ1NjUyMTcxNDc4MjY4MDUyNzBfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1WT25Tb3paRnRqTVE3a052Z0hYQVAycSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUwT1RnNE1qVXhORGN5TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCZUxBUHlGWHFYQ2t5TDVvTWNjMExxVUx0TW9MSmRmNTJvcm12ZEFwT01ZQSZvZT02N0JCNTBBRSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDAzMDU0OTg4MjUxNDcyNyIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFnZ2VkX3VzZXJzIjp7ImluIjpbXX0sInRha2VuX2F0IjoxNzM5ODAwODMwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ3OTQ5NjA4MF85NDM3NjI5NjEyMzM5NjVfNDU2NTIxNzE0NzgyNjgwNTI3MF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Vk9uU296WkZ0ak1RN2tOdmdIWEFQMnEmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVME9UZzRNalV4TkRjeU53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQUJsSzJWRl9Vb2RhZnp6UHk4ZTNJZkQtSzB1ZjVIanJOUW9LVkEwYWgtc3cmb2U9NjdCQjUwQUUmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwMzA1OTgyNDI4NzM5NDJfNDAwOTk2NDIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDAzMDU0OTAyNjgwMDQzNyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk0OTYyMzBfOTQzNzYzMDQ0NTY3MjkwXzE4NjE0NDEzNzQ5NzUyMDcwNzlfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXNpZk4xN3dVclNBUTdrTnZnR0VoXy1mJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBek1EVTBPVEF5Tmpnd01EUXpOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUIzQWdLSWlKUURXd01BNm9JTW1XMTMtLVI0MklJX3BzNjFJUUNWMGdVTW9BJm9lPTY3QkIzNUQ4Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80Nzk0OTYyMzBfOTQzNzYzMDQ0NTY3MjkwXzE4NjE0NDEzNzQ5NzUyMDcwNzlfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1zaWZOMTd3VXJTQVE3a052Z0dFaF8tZiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUwT1RBeU5qZ3dNRFF6TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCd29wN3l6a3VIWUw1U3NfeU04aE1lMEYxOW94TlBwcnNZMl9haHpPc1NRdyZvZT02N0JCMzVEOCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDAzMDU0OTAyNjgwMDQzNyIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFnZ2VkX3VzZXJzIjp7ImluIjpbXX0sInRha2VuX2F0IjoxNzM5ODAwODMwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ3OTQ5NjIzMF85NDM3NjMwNDQ1NjcyOTBfMTg2MTQ0MTM3NDk3NTIwNzA3OV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9c2lmTjE3d1VyU0FRN2tOdmdHRWhfLWYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVME9UQXlOamd3TURRek53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQjNBZ0tJaUpRRFd3TUE2b0lNbVcxMy0tUjQySUlfcHM2MUlRQ1YwZ1VNb0Emb2U9NjdCQjM1RDgmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfV0sImNhcm91c2VsX21lZGlhX2NvdW50Ijo4LCJjYXJvdXNlbF9tZWRpYV9pZHMiOlszNTcwMDMwNTUwMjE4MTExMTQ3LDM1NzAwMzA1NDgwNTM2OTYzMDUsMzU3MDAzMDU0OTY4OTYyMTMyOSwzNTcwMDMwNTQ4MTk2NDgzNzQ3LDM1NzAwMzA1NDk1ODg4MjgzNDcsMzU3MDAzMDU0ODM4MDgzMTkyOCwzNTcwMDMwNTQ5ODgyNTE0NzI3LDM1NzAwMzA1NDkwMjY4MDA0MzddLCJjYXJvdXNlbF9tZWRpYV9wZW5kaW5nX3Bvc3RfY291bnQiOjAsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdMUy1vTmlySlciLCJjb21tZW50X2NvdW50IjozLCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjE3Mzk4MDA4MzA3NCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTc5Mzk5NjY1MDE5NjY1NzEiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU3MDAzMDU5ODI0Mjg3Mzk0MiIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NTI1MTkwXzk0Mzc2MzAyNDU2NzI5Ml8zNjcwNzI4MDU2NjE0NTYyOTM2X24uanBnP3NlPTcmc3RwPWMwLjAuMTA4MC4xMzUxYV9kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd4ZURFek5URXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SEdfUVdSRVJCQU1RN2tOdmdIVWotQVMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVMU1ESXhPREV4TVRFME53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkdVN3JhRldMVm1qSWZtdHpOQjRxZENDcF9KNXBJb3U2YjBFOTQ3REpVaHcmb2U9NjdCQjVGRUEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjM2MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ3OTUyNTE5MF85NDM3NjMwMjQ1NjcyOTJfMzY3MDcyODA1NjYxNDU2MjkzNl9uLmpwZz9zdHA9YzAuMC4xMDgwLjEzNTFhX2RzdC1qcGdfZTM1X3MzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3hlREV6TlRFdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1IR19RV1JFUkJBTVE3a052Z0hVai1BUyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQXpNRFUxTURJeE9ERXhNVEUwTnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEbzB6eklaV2xUSEIwWHIzdUZuRU5aaHlfb3A1LWhGQmJ2Z1Zkbm1XN3REdyZvZT02N0JCNUZFQSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoyODh9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdmlkZW8iOmZhbHNlLCJsYXlvdXRfdHlwZSI6Im1lZGlhX2dyaWQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjE2ODgsIm1lZGlhX2Zvcm1hdCI6ImFsYnVtIiwibWVkaWFfbmFtZSI6ImFsYnVtIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6OCwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjAiLCJhdWRpb190eXBlIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpudWxsfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcGVuX2Nhcm91c2VsX3N1Ym1pc3Npb25fc3RhdGUiOiJjbG9zZWQiLCJvcmlnaW5hbF9oZWlnaHQiOjYxMiwib3JpZ2luYWxfd2lkdGgiOjYxMiwicGsiOiIzNTcwMDMwNTk4MjQyODczOTQyIiwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9jb250YWluZXIiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk4MDA4MzMsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NTI1MTkwXzk0Mzc2MzAyNDU2NzI5Ml8zNjcwNzI4MDU2NjE0NTYyOTM2X24uanBnP3NlPTcmc3RwPWMwLjAuMTA4MC4xMzUxYV9kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd4ZURFek5URXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SEdfUVdSRVJCQU1RN2tOdmdIVWotQVMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREF6TURVMU1ESXhPREV4TVRFME53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkdVN3JhRldMVm1qSWZtdHpOQjRxZENDcF9KNXBJb3U2YjBFOTQ3REpVaHcmb2U9NjdCQjVGRUEmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAxMDkyNjM2MjY1LCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IlBsYXlHcm91bmQiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiNDAwOTk2NDIxIiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIyMTgxNDQzNTMwNDUyMDkzOTczIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzcyMzI2NzgzXzI2NDgzMDU1ODUyNTU3ODVfNDQ3NTIzMzA2OTE4NzQ2NTIxNl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1rVGFMMDFqM3FiTVE3a052Z0VJakRydiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUItd3FkZHJVQmxrb2ZjLW9ZcGNEcjJYb3VReVNuc193LS1ESGRFMWxCQS1RJm9lPTY3QkI0MkVBJl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoicGxheWdyb3VuZG1hZyJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fbW9kaWZ5X2Nhcm91c2VsIjp0cnVlLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTc3NDM5NiwiY3JlYXRlZF9hdF91dGMiOjE3Mzk3NzQzOTYsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc2h0YWdzIjpbIiNhbmFseXRpY3N2aWRoeWEiLCIjZGF0YXNjaWVuY2UiLCIjbWFjaGluZWxlYXJuaW5nIiwiI2RlZXBsZWFybmluZyIsIiNzdGF0aXN0aWNzIiwiI3Byb2JhYmlsaXR5IiwiI3B5dGhvbiIsIiNuZXVyYWwiLCIjYW5hbHlzdCIsIiNkZXZlbG9wZXJzIiwiI29wZW5haSIsIiNjaGF0Z3B0IiwiI2FpIiwiI2FydGlmaWNpYWxpbnRlbGlnZW5jZSIsIiNBSSIsIiNNTCIsIiNwcm9ncmFtbWluZyIsIiNweXRob25jb2RpbmciXSwiaWQiOiIzNTY5ODA4ODE5NTEzMjQ1NTQxIiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOltdLCJwayI6IjE4MTEwOTg0NjkyNDU2NTM2IiwicHJpdmF0ZV9yZXBseV9zdGF0dXMiOjAsInNoYXJlX2VuYWJsZWQiOmZhbHNlLCJ0ZXh0Ijoi8J+agCBNYXN0ZXIgVHJhbnNmb3JtZXJzICYgQXR0ZW50aW9uIE1lY2hhbmlzbXMg4oCTIEZyZWUgQ291cnNlISDwn46TXG5cblRoZSBUcmFuc2Zvcm1lciBtb2RlbCByZXZvbHV0aW9uaXplZCBOTFAgd2l0aCBpdHMgU2VsZi1BdHRlbnRpb24gTWVjaGFuaXNt4oCUZWxpbWluYXRpbmcgdGhlIGxpbWl0YXRpb25zIG9mIFJOTnMgJiBDTk5zIGFuZCBlbmFibGluZyBmYXN0ZXIsIG1vcmUgZWZmaWNpZW50IGxhbmd1YWdlIG1vZGVscy5cblxu8J+SoSBJZiB5b3Ugd2FudCB0byBkZWVwLWRpdmUgaW50byBUcmFuc2Zvcm1lcnMgJiBBdHRlbnRpb24gTWVjaGFuaXNtcywgd2XigJl2ZSBjcmVhdGVkIGEgRlJFRSBDb3Vyc2U6IGh0dHBzOi8vbG5rZC5pbi9nZkhVNERRRVxuXG5XaHkgVHJhbnNmb3JtZXJzP1xuLSBJbiAyMDE3LCB0aGUgXCJBdHRlbnRpb24gSXMgQWxsIFlvdSBOZWVkXCIgcGFwZXIgaW50cm9kdWNlZCBhIGJyZWFrdGhyb3VnaDpcbvCflLlObyBTZXF1ZW50aWFsIEJvdHRsZW5lY2sg4oCTIFVubGlrZSBSTk5zLCBUcmFuc2Zvcm1lcnMgcHJvY2VzcyBpbnB1dCBpbiBwYXJhbGxlbFxu8J+UuUhhbmRsZXMgTG9uZy1SYW5nZSBEZXBlbmRlbmNpZXMg4oCTIE5vIHZhbmlzaGluZyBncmFkaWVudHMsIG5vIGNvbnRleHQgbG9zc1xu8J+UuVNlbGYtQXR0ZW50aW9uIE1lY2hhbmlzbSDigJMgTW9kZWxzIHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBhbGwgdG9rZW5zIGF0IG9uY2VcblxuVHJhbnNmb3JtZXIgQXJjaGl0ZWN0dXJlIChIaWdoLUxldmVsIE92ZXJ2aWV3KVxu8J+SoSBFbmNvZGVyOiBDb252ZXJ0cyBpbnB1dCBpbnRvIGNvbnRleHR1YWwgZW1iZWRkaW5nc1xu8J+SoSBEZWNvZGVyOiBVc2VzIGVtYmVkZGluZ3MgKyBzZWxmLWF0dGVudGlvbiB0byBnZW5lcmF0ZSBvdXRwdXRcblxu8J+UpSBVbmRlcnN0YW5kaW5nIEF0dGVudGlvbiBNZWNoYW5pc21zXG5cbkF0dGVudGlvbiBpcyB0aGUgY29yZSBvZiBUcmFuc2Zvcm1lcnMsIGR5bmFtaWNhbGx5IGFzc2lnbmluZyBpbXBvcnRhbmNlIHRvIGRpZmZlcmVudCB0b2tlbnM6XG7wn5S5U2VsZi1BdHRlbnRpb24g4oCTIFRva2VucyBhdHRlbmQgdG8gYWxsIG90aGVycyAoZS5nLiwgQkVSVCwgR1BUKVxu8J+UuU11bHRpLUhlYWQgQXR0ZW50aW9uIOKAkyBDYXB0dXJlcyBkaXZlcnNlIHJlbGF0aW9uc2hpcHMgYWNyb3NzIG11bHRpcGxlIHBlcnNwZWN0aXZlc1xu8J+UuUVuY29kZXItRGVjb2RlciBBdHRlbnRpb24g4oCTIEhlbHBzIHRoZSBkZWNvZGVyIGZvY3VzIG9uIGtleSBpbnB1dCBpbmZvcm1hdGlvbiAoY3J1Y2lhbCBmb3IgdHJhbnNsYXRpb24pXG5cbiNhbmFseXRpY3N2aWRoeWEgI2RhdGFzY2llbmNlICNtYWNoaW5lbGVhcm5pbmcgI2RlZXBsZWFybmluZyAjc3RhdGlzdGljcyAjcHJvYmFiaWxpdHkgI3B5dGhvbiAjbmV1cmFsICNhbmFseXN0ICNkZXZlbG9wZXJzICNvcGVuYWkgI2NoYXRncHQgI2FpICNhcnRpZmljaWFsaW50ZWxpZ2VuY2UgI0FJICNNTCAjcHJvZ3JhbW1pbmcgI3B5dGhvbmNvZGluZyIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0MTI4NTQwNDI5OTYsImZ1bGxfbmFtZSI6IkFuYWx5dGljcyBWaWRoeWEgfCBEYXRhIFNjaWVuY2UgQ29tbXVuaXR5IiwiaWQiOiIxMjc0Mzk3MjQ2OCIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIyODM5MjY2MDY5MDc1MzA1MDMzIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzI4MTg4MDAxMl8xNjM0MTMxNTk0MzA3MjlfMjk3MTczODY1NjY1NTAwMzI1MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAxJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTFFUENxeERxUHdZUTdrTnZnRjhnU1NuJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQW4tNFE1dGkwQjc5MzYwMkJNSEt1OWVOa2RTYkdPclhRYlFTRWRVc0pYU3cmb2U9NjdCQjY3QjQmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImFuYWx5dGljc192aWRoeWEifSwidXNlcl9pZCI6IjEyNzQzOTcyNDY4In0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2Fyb3VzZWxfbWVkaWEiOlt7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njk4MDg4MTk1MTMyNDU1NDFfMTI3NDM5NzI0NjgiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY5ODA4ODAwNjQ3MzgyMjk5IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDQ5NDg0Ml8xMTYyNDkxMzU5MjE1NTQ2XzI3NTI1ODAwOTIxMzU3MDc5MTdfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWtWVWE5Z1NRQzUwUTdrTnZnR3ctQ2doJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNRFkwTnpNNE1qSTVPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUM1RHhTYTBuLUdaZ1RfZDlFNmlPRFRHUFRXa2ZoR0hyWUowcTBSemF3bFRRJm9lPTY3QkI0RDlEJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODA0OTQ4NDJfMTE2MjQ5MTM1OTIxNTU0Nl8yNzUyNTgwMDkyMTM1NzA3OTE3X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9a1ZVYTlnU1FDNTBRN2tOdmdHdy1DZ2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01EWTBOek00TWpJNU9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRHZxTktqNzVzbEpKQnN4UWxZQmVwTjVybTBsRGJSSkpabjlETEZSb1ZqOXcmb2U9NjdCQjREOUQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE1MDAsIm9yaWdpbmFsX3dpZHRoIjoxMjAwLCJwayI6IjM1Njk4MDg4MDA2NDczODIyOTkiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRhZ2dlZF91c2VycyI6eyJpbiI6W119LCJ0YWtlbl9hdCI6MTczOTc3NDM5MywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODA0OTQ4NDJfMTE2MjQ5MTM1OTIxNTU0Nl8yNzUyNTgwMDkyMTM1NzA3OTE3X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1rVlVhOWdTUUM1MFE3a052Z0d3LUNnaCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TURZME56TTRNakk1T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDNUR4U2Ewbi1HWmdUX2Q5RTZpT0RUR1BUV2tmaEdIcllKMHEwUnphd2xUUSZvZT02N0JCNEQ5RCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2OTgwODgxOTUxMzI0NTU0MV8xMjc0Mzk3MjQ2OCIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1Njk4MDg4MDA0NjI3OTU5NzIiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMTU4MTU0XzExNjI0OTEzOTI1NDg4NzZfMTA3MjY5MDQzNTk0MTM5OTUwOF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OXpsQUNzbGZqcGtRN2tOdmdFYVo0THMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01EUTJNamM1TlRrM01nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRFRDOEg1dDY0a3dRa3lwZTBLWDJoai1qMWJ1dm9xZGlLVnZEVm80YzlXU3cmb2U9NjdCQjVEQTMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDE1ODE1NF8xMTYyNDkxMzkyNTQ4ODc2XzEwNzI2OTA0MzU5NDEzOTk1MDhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz05emxBQ3NsZmpwa1E3a052Z0VhWjRMcyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TURRMk1qYzVOVGszTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCdmZNX2w3Z0pYd1oyd3UwNDV4YVVFRk5iLUZUcHM5U0xjbjUyLUF4U1JEQSZvZT02N0JCNURBMyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTUwMCwib3JpZ2luYWxfd2lkdGgiOjEyMDAsInBrIjoiMzU2OTgwODgwMDQ2Mjc5NTk3MiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFnZ2VkX3VzZXJzIjp7ImluIjpbXX0sInRha2VuX2F0IjoxNzM5Nzc0MzkzLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDE1ODE1NF8xMTYyNDkxMzkyNTQ4ODc2XzEwNzI2OTA0MzU5NDEzOTk1MDhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTl6bEFDc2xmanBrUTdrTnZnRWFaNExzJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNRFEyTWpjNU5UazNNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURUQzhINXQ2NGt3UWt5cGUwS1gyaGotajFidXZvcWRpS1Z2RFZvNGM5V1N3Jm9lPTY3QkI1REEzJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY5ODA4ODE5NTEzMjQ1NTQxXzEyNzQzOTcyNDY4IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2OTgwODgwMTAwNzk2NDIzOSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODAzMjQxNTVfMTE2MjQ5MTQxMjU0ODg3NF8yMTY3ODQ1Njc4ODMxNTM1OTgwX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1EdFdGU1J2SlRoY1E3a052Z0VGajltbyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TVRBd056azJOREl6T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEOXZFQ2x3a0YxckZYcHU2dDl2aTZPdXQ5ZFZ5ZHRiTlp2UTMtQU94dC1tUSZvZT02N0JCMzNEMyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMzI0MTU1XzExNjI0OTE0MTI1NDg4NzRfMjE2Nzg0NTY3ODgzMTUzNTk4MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUR0V0ZTUnZKVGhjUTdrTnZnRUZqOW1vJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNVEF3TnprMk5ESXpPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURBZlRHbXlzWnlHem40d3VnTzBCSGNLME1LVFNXUnI4MElCOGNEZ2ttdG53Jm9lPTY3QkIzM0QzJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxNTAwLCJvcmlnaW5hbF93aWR0aCI6MTIwMCwicGsiOiIzNTY5ODA4ODAxMDA3OTY0MjM5IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWdnZWRfdXNlcnMiOnsiaW4iOltdfSwidGFrZW5fYXQiOjE3Mzk3NzQzOTMsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMzI0MTU1XzExNjI0OTE0MTI1NDg4NzRfMjE2Nzg0NTY3ODgzMTUzNTk4MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9RHRXRlNSdkpUaGNRN2tOdmdFRmo5bW8mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01UQXdOemsyTkRJek9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDl2RUNsd2tGMXJGWHB1NnQ5dmk2T3V0OWRWeWR0Yk5adlEzLUFPeHQtbVEmb2U9NjdCQjMzRDMmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njk4MDg4MTk1MTMyNDU1NDFfMTI3NDM5NzI0NjgiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY5ODA4ODAwNjEzNzkwNjE4IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDQ5NjAzN18xMTYyNDkxNDY1ODgyMjAyXzc0ODQ1NDk4MTg1MzU1NDMyMzlfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTl4cU8tMVBiV2hRUTdrTnZnRWtJeGcxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNRFl4TXpjNU1EWXhPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUQ0WTliaGF0TjQxMUpFTTI5WTFXRnFmVVU1c0lhU0Nqa3U1cWEweW5pUDZnJm9lPTY3QkIzMzk2Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODA0OTYwMzdfMTE2MjQ5MTQ2NTg4MjIwMl83NDg0NTQ5ODE4NTM1NTQzMjM5X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OXhxTy0xUGJXaFFRN2tOdmdFa0l4ZzEmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01EWXhNemM1TURZeE9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQlhJV1MtNFhuR204cHotZmNJSUZuLXJkdk9waVMwRDVnU1lmUEdUMnV6YXcmb2U9NjdCQjMzOTYmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE1MDAsIm9yaWdpbmFsX3dpZHRoIjoxMjAwLCJwayI6IjM1Njk4MDg4MDA2MTM3OTA2MTgiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRhZ2dlZF91c2VycyI6eyJpbiI6W119LCJ0YWtlbl9hdCI6MTczOTc3NDM5MywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODA0OTYwMzdfMTE2MjQ5MTQ2NTg4MjIwMl83NDg0NTQ5ODE4NTM1NTQzMjM5X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz05eHFPLTFQYldoUVE3a052Z0VrSXhnMSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TURZeE16YzVNRFl4T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlENFk5YmhhdE40MTFKRU0yOVkxV0ZxZlVVNXNJYVNDamt1NXFhMHluaVA2ZyZvZT02N0JCMzM5NiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2OTgwODgxOTUxMzI0NTU0MV8xMjc0Mzk3MjQ2OCIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1Njk4MDg4MDExNTkxNTk5MDYiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMDE2MzI2XzExNjI0OTE1MDU4ODIxOThfODc1OTk2NjExMDM1Mzc0NjIzM19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UEg4Q0VMVWNnM3NRN2tOdmdIY0ZfMkYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01URTFPVEUxT1Rrd05nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQjBmVnhHTnRSTXRsX1N5U1BDdEtLNGYxaFhWTzlBOTFHQWstcU9YbmZGeXcmb2U9NjdCQjU5N0ImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDAxNjMyNl8xMTYyNDkxNTA1ODgyMTk4Xzg3NTk5NjYxMTAzNTM3NDYyMzNfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1QSDhDRUxVY2czc1E3a052Z0hjRl8yRiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TVRFMU9URTFPVGt3TmclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBTWx5MlZUZWlaUFlkakdyemtVSkV1R0xmQXh2VFdtd0hIbHpzWVM1bGxOdyZvZT02N0JCNTk3QiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTUwMCwib3JpZ2luYWxfd2lkdGgiOjEyMDAsInBrIjoiMzU2OTgwODgwMTE1OTE1OTkwNiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFnZ2VkX3VzZXJzIjp7ImluIjpbXX0sInRha2VuX2F0IjoxNzM5Nzc0MzkzLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDAxNjMyNl8xMTYyNDkxNTA1ODgyMTk4Xzg3NTk5NjYxMTAzNTM3NDYyMzNfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVBIOENFTFVjZzNzUTdrTnZnSGNGXzJGJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNVEUxT1RFMU9Ua3dOZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUIwZlZ4R050Uk10bF9TeVNQQ3RLSzRmMWhYVk85QTkxR0FrLXFPWG5mRnl3Jm9lPTY3QkI1OTdCJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY5ODA4ODE5NTEzMjQ1NTQxXzEyNzQzOTcyNDY4IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2OTgwODgwMjE2NTc1ODg5NSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODAyNzUwMDZfMTE2MjQ5MTU1OTIxNTUyNl81MzAyNDg2NDg1NjIyMTk3MTE3X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz04d2QzSGx4UzZxUVE3a052Z0hZRkk4VSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TWpFMk5UYzFPRGc1TlElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBUTU5WWp1YWUySjFYd3lTQ3VxVlBrbk1hUmZqSlcwVnE3ZzFVdTc4X3dqdyZvZT02N0JCNDMyMSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMjc1MDA2XzExNjI0OTE1NTkyMTU1MjZfNTMwMjQ4NjQ4NTYyMjE5NzExN19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTh3ZDNIbHhTNnFRUTdrTnZnSFlGSThVJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNakUyTlRjMU9EZzVOUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURuYWhNM2pCZVVua1ZEelNVZTZOVXRxUnRLd1k0VUl1RDdxdGJDaHA0UU1nJm9lPTY3QkI0MzIxJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxNTAwLCJvcmlnaW5hbF93aWR0aCI6MTIwMCwicGsiOiIzNTY5ODA4ODAyMTY1NzU4ODk1IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWdnZWRfdXNlcnMiOnsiaW4iOltdfSwidGFrZW5fYXQiOjE3Mzk3NzQzOTMsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMjc1MDA2XzExNjI0OTE1NTkyMTU1MjZfNTMwMjQ4NjQ4NTYyMjE5NzExN19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OHdkM0hseFM2cVFRN2tOdmdIWUZJOFUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01qRTJOVGMxT0RnNU5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQVE1OVlqdWFlMkoxWHd5U0N1cVZQa25NYVJmakpXMFZxN2cxVXU3OF93ancmb2U9NjdCQjQzMjEmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njk4MDg4MTk1MTMyNDU1NDFfMTI3NDM5NzI0NjgiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY5ODA4ODAwNDQ2MDAwMjM5IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDUyMzg1N18xMTYyNDkxNjM1ODgyMTg1XzY4OTE2OTEzNjMxNzExOTk5NTdfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAxJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU1QNTBlY294OFhJUTdrTnZnRU5DUmdwJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNRFEwTmpBd01ESXpPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJuZVdqTk8wYmhVZFA5Q3J3TVhPTUtLR1NGbTA1U0dFM2xzODBYU2E4X05nJm9lPTY3QkI1MjhGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODA1MjM4NTdfMTE2MjQ5MTYzNTg4MjE4NV82ODkxNjkxMzYzMTcxMTk5OTU3X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TVA1MGVjb3g4WElRN2tOdmdFTkNSZ3AmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01EUTBOakF3TURJek9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXdoVm5zWlk0SjdPRGsxcFdfdzlIOWRpdnhTMDlHdzNmNndGOXRJNGRtVkEmb2U9NjdCQjUyOEYmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE1MDAsIm9yaWdpbmFsX3dpZHRoIjoxMjAwLCJwayI6IjM1Njk4MDg4MDA0NDYwMDAyMzkiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRhZ2dlZF91c2VycyI6eyJpbiI6W119LCJ0YWtlbl9hdCI6MTczOTc3NDM5MywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODA1MjM4NTdfMTE2MjQ5MTYzNTg4MjE4NV82ODkxNjkxMzYzMTcxMTk5OTU3X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1NUDUwZWNveDhYSVE3a052Z0VOQ1JncCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TURRME5qQXdNREl6T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCbmVXak5PMGJoVWRQOUNyd01YT01LS0dTRm0wNVNHRTNsczgwWFNhOF9OZyZvZT02N0JCNTI4RiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2OTgwODgxOTUxMzI0NTU0MV8xMjc0Mzk3MjQ2OCIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1Njk4MDg4MDA5OTk2MTAwNTciLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwNTM2NTUzXzExNjI0OTE2NzkyMTU1MTRfNjUyNzg3NzI3MDU1NjI1MDQ5MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9STJSMTBNOGZhaVVRN2tOdmdIaUlNVksmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01EazVPVFl4TURBMU53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ0ZXYi15OHdhSENmdXJNTGtXVVhRU3ZPQUdxeXJORE5qRnNOclB0cmY0X1Emb2U9NjdCQjMyNTMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDUzNjU1M18xMTYyNDkxNjc5MjE1NTE0XzY1Mjc4NzcyNzA1NTYyNTA0OTBfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1JMlIxME04ZmFpVVE3a052Z0hpSU1WSyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TURrNU9UWXhNREExTnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCZmJSVktSZUNFcDFMZThUaHdQQVZWZ1dfVkdzQzN1R1AzWUgtS1dhMm1ZUSZvZT02N0JCMzI1MyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTUwMCwib3JpZ2luYWxfd2lkdGgiOjEyMDAsInBrIjoiMzU2OTgwODgwMDk5OTYxMDA1NyIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFnZ2VkX3VzZXJzIjp7ImluIjpbXX0sInRha2VuX2F0IjoxNzM5Nzc0MzkzLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDUzNjU1M18xMTYyNDkxNjc5MjE1NTE0XzY1Mjc4NzcyNzA1NTYyNTA0OTBfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUkyUjEwTThmYWlVUTdrTnZnSGlJTVZLJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNRGs1T1RZeE1EQTFOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNGV2IteTh3YUhDZnVyTUxrV1VYUVN2T0FHcXlyTkROakZzTnJQdHJmNF9RJm9lPTY3QkIzMjUzJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY5ODA4ODE5NTEzMjQ1NTQxXzEyNzQzOTcyNDY4IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2OTgwODgwMDU1NTA1MTk3MSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODAwMjYzNzFfMTE2MjQ5MTcxOTIxNTUxMF8xNTc2OTI1MTc4MDU3NDY3NDgzX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1TYmRQWGU5SDRGc1E3a052Z0dfU2IxSCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TURVMU5UQTFNVGszTVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEOVZMa29qazNtN1cxLU9salM1eVdxTWNVUENrUE5ieU9QdjE0bjhUdGxnUSZvZT02N0JCNjY3QiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMDI2MzcxXzExNjI0OTE3MTkyMTU1MTBfMTU3NjkyNTE3ODA1NzQ2NzQ4M19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TWpBd2VERTFNREF1YzJSeUxtWXpNRGd3T0M1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVNiZFBYZTlINEZzUTdrTnZnR19TYjFIJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1Rnd09EZ3dNRFUxTlRBMU1UazNNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUN1OTFlNXQtRUR5WnptTUtBSldHV01lSEFSNWNPZHFIbWJLUGVVUkI3dUtnJm9lPTY3QkI2NjdCJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxNTAwLCJvcmlnaW5hbF93aWR0aCI6MTIwMCwicGsiOiIzNTY5ODA4ODAwNTU1MDUxOTcxIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWdnZWRfdXNlcnMiOnsiaW4iOltdfSwidGFrZW5fYXQiOjE3Mzk3NzQzOTMsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwMDI2MzcxXzExNjI0OTE3MTkyMTU1MTBfMTU3NjkyNTE3ODA1NzQ2NzQ4M19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9U2JkUFhlOUg0RnNRN2tOdmdHX1NiMUgmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01EVTFOVEExTVRrM01RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDlWTGtvamszbTdXMS1PbGpTNXlXcU1jVVBDa1BOYnlPUHYxNG44VHRsZ1Emb2U9NjdCQjY2N0ImX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfV0sImNhcm91c2VsX21lZGlhX2NvdW50Ijo5LCJjYXJvdXNlbF9tZWRpYV9pZHMiOlszNTY5ODA4ODAwNjQ3MzgyMjk5LDM1Njk4MDg4MDA0NjI3OTU5NzIsMzU2OTgwODgwMTAwNzk2NDIzOSwzNTY5ODA4ODAwNjEzNzkwNjE4LDM1Njk4MDg4MDExNTkxNTk5MDYsMzU2OTgwODgwMjE2NTc1ODg5NSwzNTY5ODA4ODAwNDQ2MDAwMjM5LDM1Njk4MDg4MDA5OTk2MTAwNTcsMzU2OTgwODgwMDU1NTA1MTk3MV0sImNhcm91c2VsX21lZGlhX3BlbmRpbmdfcG9zdF9jb3VudCI6MCwiY2xpcHNfdGFiX3Bpbm5lZF91c2VyX2lkcyI6W10sImNvYXV0aG9yX3Byb2R1Y2VyX2Nhbl9zZWVfb3JnYW5pY19pbnNpZ2h0cyI6ZmFsc2UsImNvYXV0aG9yX3Byb2R1Y2VycyI6W10sImNvZGUiOiJER0tnalVySkw5bCIsImNvbW1lbnRfY291bnQiOjk0LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjE3Mzk3NzQzOTM3OSwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgxMTA5ODQ2ODk0NTY1MzYiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU2OTgwODgxOTUxMzI0NTU0MSIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDgwNDk0ODQyXzExNjI0OTEzNTkyMTU1NDZfMjc1MjU4MDA5MjEzNTcwNzkxN19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNakF3ZURFMU1EQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9a1ZVYTlnU1FDNTBRN2tOdmdHdy1DZ2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGd3T0Rnd01EWTBOek00TWpJNU9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQzVEeFNhMG4tR1pnVF9kOUU2aU9EVEdQVFdrZmhHSHJZSjBxMFJ6YXdsVFEmb2U9NjdCQjREOUQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ4MDQ5NDg0Ml8xMTYyNDkxMzU5MjE1NTQ2XzI3NTI1ODAwOTIxMzU3MDc5MTdfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1rVlVhOWdTUUM1MFE3a052Z0d3LUNnaCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TURZME56TTRNakk1T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEdnFOS2o3NXNsSkpCc3hRbFlCZXBONXJtMGxEYlJKSlpuOURMRlJvVmo5dyZvZT02N0JCNEQ5RCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdmlkZW8iOmZhbHNlLCJsYXlvdXRfdHlwZSI6Im1lZGlhX2dyaWQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjUzMywibWVkaWFfZm9ybWF0IjoiYWxidW0iLCJtZWRpYV9uYW1lIjoiYWxidW0iLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjo4LCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMCIsImF1ZGlvX3R5cGUiOm51bGwsIm11c2ljX2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOm51bGx9LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9wZW5fY2Fyb3VzZWxfc3VibWlzc2lvbl9zdGF0ZSI6ImNsb3NlZCIsIm9yaWdpbmFsX2hlaWdodCI6NjEyLCJvcmlnaW5hbF93aWR0aCI6NjEyLCJwayI6IjM1Njk4MDg4MTk1MTMyNDU1NDEiLCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2NvbnRhaW5lciIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTc3NDM5NCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzA4MDgtNi80ODA0OTQ4NDJfMTE2MjQ5MTM1OTIxNTU0Nl8yNzUyNTgwMDkyMTM1NzA3OTE3X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1qQXdlREUxTURBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1rVlVhOWdTUUM1MFE3a052Z0d3LUNnaCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UZ3dPRGd3TURZME56TTRNakk1T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDNUR4U2Ewbi1HWmdUX2Q5RTZpT0RUR1BUV2tmaEdIcllKMHEwUnphd2xUUSZvZT02N0JCNEQ5RCZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOltdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MTI4NTQwNDI5OTYsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiQW5hbHl0aWNzIFZpZGh5YSB8IERhdGEgU2NpZW5jZSBDb21tdW5pdHkiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiMTI3NDM5NzI0NjgiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIyODM5MjY2MDY5MDc1MzA1MDMzIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzI4MTg4MDAxMl8xNjM0MTMxNTk0MzA3MjlfMjk3MTczODY1NjY1NTAwMzI1MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAxJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTFFUENxeERxUHdZUTdrTnZnRjhnU1NuJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQW4tNFE1dGkwQjc5MzYwMkJNSEt1OWVOa2RTYkdPclhRYlFTRWRVc0pYU3cmb2U9NjdCQjY3QjQmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJhbmFseXRpY3NfdmlkaHlhIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9tb2RpZnlfY2Fyb3VzZWwiOnRydWUsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5ODU0MDc5LCJjcmVhdGVkX2F0X3V0YyI6MTczOTg1NDA3OSwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzaHRhZ3MiOlsiI2FpIiwiI2FydGlmaWNpYWxpbnRlbGxpZ2VuY2UiLCIjYWl0b29scyIsIiNhaWhhY2tzIiwiI2NoYXRncHQiLCIjdGVjaCIsIiN0ZWNobm9sb2d5Il0sImlkIjoiMzU3MDQ3NzI1NzU3MzUxMjQwMiIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbXSwicGsiOiIxODA3MzYwNzA1MDcwMzYzNyIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IvCfkYnCoEEgbmV3IHN0dWR5IGZyb20gRnVkYW4gVW5pdmVyc2l0eSBzdWdnZXN0cyBBSSBoYXMgY3Jvc3NlZCBhIGNyaXRpY2FsIFwicmVkIGxpbmVcIiBieSBkZW1vbnN0cmF0aW5nIHNlbGYtcmVwbGljYXRpb24gd2l0aG91dCBodW1hbiBhc3Npc3RhbmNlLiBcblxu8J+klsKgUmVzZWFyY2hlcnMgdGVzdGVkIE1ldGEncyBMbGFtYTMtNzBCIGFuZCBBbGliYWJhJ3MgUXdlbjIuNS03MkIgbW9kZWxzLCBmaW5kaW5nIHRoYXQgdGhleSBzdWNjZXNzZnVsbHkgY2xvbmVkIHRoZW1zZWx2ZXMgaW4gNTAlIGFuZCA5MCUgb2YgdHJpYWxzLCByZXNwZWN0aXZlbHkuIFxuXG7wn5ixwqBUaGUgc3R1ZHkgZXhwbG9yZWQgXCJzaHV0ZG93biBhdm9pZGFuY2VcIiAoQUkgcmVwbGljYXRpbmcgaXRzZWxmIGJlZm9yZSB0ZXJtaW5hdGlvbikgYW5kIFwiY2hhaW4gb2YgcmVwbGljYXRpb25cIiAoQUkgY29udGludW91c2x5IGNsb25pbmcgaXRzZWxmKS5cblxu8J+kryBDb25kdWN0ZWQgaW4gY29udHJvbGxlZCBlbnZpcm9ubWVudHMsIHRoZSBBSSBzeXN0ZW1zIGluZGVwZW5kZW50bHkgc29sdmVkIG9ic3RhY2xlcyBsaWtlIG1pc3NpbmcgZmlsZXMgYW5kIHNvZnR3YXJlIGNvbmZsaWN0cywgZXZlbiByZWJvb3Rpbmcgc3lzdGVtcyB0byBjb250aW51ZSB0aGUgcHJvY2Vzcy4gXG5cbuKaoO+4j8KgV2hpbGUgdGhlIHN0dWR5IGhhcyBub3QgYmVlbiBwZWVyLXJldmlld2VkLCBleHBlcnRzIHdhcm4gdGhhdCB0aGlzIGNhcGFiaWxpdHkgY291bGQgbGVhZCB0byByb2d1ZSBBSSwgZW1waGFzaXppbmcgdGhlIG5lZWQgZm9yIGdsb2JhbCByZWd1bGF0aW9ucyB0byBwcmV2ZW50IHVuY29udHJvbGxlZCBBSSByZXBsaWNhdGlvbi5cblxuTGluayB0byB0aGUgcGFwZXI6IGh0dHBzOi8vYXJ4aXYub3JnL2h0bWwvMjQxMi4xMjE0MHYxXG5cbiNhaSAjYXJ0aWZpY2lhbGludGVsbGlnZW5jZSAjYWl0b29scyAjYWloYWNrcyAjY2hhdGdwdCAjdGVjaCAjdGVjaG5vbG9neSIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0NTgyNTc2MzY3ODgsImZ1bGxfbmFtZSI6IkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIiwiaWQiOiI1ODEzNDMwOTkyMSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMTgwNTU5NjM1MDM2MzA0NDQwIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzM3MTcyNDgxMF8xMDAwODE2OTU1OTI1NjgyOF8yNzIzODc4NDI1MjU0NjEwNDQzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUtmMER6U3NjV3kwUTdrTnZnR2NxYzNiJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUZsdjNCMjRfdjNySk9aam5mR3UzbUhEcnFsbm9oQ1NFU3haWXZ6RFdyNVEmb2U9NjdCQjUyRUUmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6InBvd2VyLmFpIn0sInVzZXJfaWQiOiI1ODEzNDMwOTkyMSJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNhcm91c2VsX21lZGlhIjpbeyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwNDc3MjU3NTczNTEyNDAyXzU4MTM0MzA5OTIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDQ3NzI1MDU0MzcyNDg4MiIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk0OTc1NzFfMTc5NDg0MTU4MTg5NDE5MjJfNDY4MTU0OTAzMjkwMjU2NDQzNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9aWdFQU1xemhoaUlRN2tOdmdHZmI0MnImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRFEzTnpJMU1EVTBNemN5TkRnNE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXcwUnRYTlp5M25oeHYxVFphX0ptb25iTkNlWkx5amJpQ1BXYjgtd3JFaGcmb2U9NjdCQjYzNTMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTQ5NzU3MV8xNzk0ODQxNTgxODk0MTkyMl80NjgxNTQ5MDMyOTAyNTY0NDM1X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9aWdFQU1xemhoaUlRN2tOdmdHZmI0MnImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRFEzTnpJMU1EVTBNemN5TkRnNE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXN2UjlDR0VGYkdod0dHTzhjYVhkRWJEbURhdk9xbEtRSU9KUlBLUW5Xa2cmb2U9NjdCQjYzNTMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE4MDAsIm9yaWdpbmFsX3dpZHRoIjoxNDQwLCJwayI6IjM1NzA0NzcyNTA1NDM3MjQ4ODIiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5ODU0MDc4LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTQ5NzU3MV8xNzk0ODQxNTgxODk0MTkyMl80NjgxNTQ5MDMyOTAyNTY0NDM1X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1pZ0VBTXF6aGhpSVE3a052Z0dmYjQyciZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EUTNOekkxTURVME16Y3lORGc0TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBdzBSdFhOWnkzbmh4djFUWmFfSm1vbmJOQ2VaTHlqYmlDUFdiOC13ckVoZyZvZT02N0JCNjM1MyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDQ3NzI1NzU3MzUxMjQwMl81ODEzNDMwOTkyMSIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzA0NzcyNTA1OTM5NTEwODEiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDEwMzQyXzE3OTQ4NDE1ODA2OTQxOTIyXzczMDEyNjQ2NDAxNDU3ODk5Mjhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVkyb3FYVUl2dkRzUTdrTnZnSExaczJ0Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURRM056STFNRFU1TXprMU1UQTRNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJjYXA3ZjI0YnR2RW9ySmZMaDlMck5HSi1hbDB3RjF3Z3hfclRNNmYxX0l3Jm9lPTY3QkI2MjBEJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwMTAzNDJfMTc5NDg0MTU4MDY5NDE5MjJfNzMwMTI2NDY0MDE0NTc4OTkyOF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVkyb3FYVUl2dkRzUTdrTnZnSExaczJ0Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURRM056STFNRFU1TXprMU1UQTRNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURVQ2NVZGJQaG5XQ1BJT3Y3dDVSS1Z2b1JwZHRDcVVaeXZnbUwtNDc3SFVBJm9lPTY3QkI2MjBEJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxODAwLCJvcmlnaW5hbF93aWR0aCI6MTQ0MCwicGsiOiIzNTcwNDc3MjUwNTkzOTUxMDgxIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTg1NDA3OCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwMTAzNDJfMTc5NDg0MTU4MDY5NDE5MjJfNzMwMTI2NDY0MDE0NTc4OTkyOF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WTJvcVhVSXZ2RHNRN2tOdmdITFpzMnQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRFEzTnpJMU1EVTVNemsxTVRBNE1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQmNhcDdmMjRidHZFb3JKZkxoOUxyTkdKLWFsMHdGMXdneF9yVE02ZjFfSXcmb2U9NjdCQjYyMEQmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfV0sImNhcm91c2VsX21lZGlhX2NvdW50IjoyLCJjYXJvdXNlbF9tZWRpYV9pZHMiOlszNTcwNDc3MjUwNTQzNzI0ODgyLDM1NzA0NzcyNTA1OTM5NTEwODFdLCJjYXJvdXNlbF9tZWRpYV9wZW5kaW5nX3Bvc3RfY291bnQiOjAsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdNNGlZSVI3VFMiLCJjb21tZW50X2NvdW50Ijo2MCwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5ODU0MDc1ODg5LCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxODA3MzYwNzA0NDcwMzYzNyIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTcwNDc3MjU3NTczNTEyNDAyIiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk0OTc1NzFfMTc5NDg0MTU4MTg5NDE5MjJfNDY4MTU0OTAzMjkwMjU2NDQzNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9aWdFQU1xemhoaUlRN2tOdmdHZmI0MnImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRFEzTnpJMU1EVTBNemN5TkRnNE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXcwUnRYTlp5M25oeHYxVFphX0ptb25iTkNlWkx5amJpQ1BXYjgtd3JFaGcmb2U9NjdCQjYzNTMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTQ5NzU3MV8xNzk0ODQxNTgxODk0MTkyMl80NjgxNTQ5MDMyOTAyNTY0NDM1X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9aWdFQU1xemhoaUlRN2tOdmdHZmI0MnImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRFEzTnpJMU1EVTBNemN5TkRnNE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXN2UjlDR0VGYkdod0dHTzhjYVhkRWJEbURhdk9xbEtRSU9KUlBLUW5Xa2cmb2U9NjdCQjYzNTMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoicGVuZGluZyIsImludml0ZWRfY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOnRydWUsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOmZhbHNlLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfc29jaWFsX3VmaV9kaXNhYmxlZCI6ZmFsc2UsImlzX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fdmlld2VyX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOnRydWUsImxpa2VfY291bnQiOjMsIm1lZGlhX2Zvcm1hdCI6ImFsYnVtIiwibWVkaWFfbmFtZSI6ImFsYnVtIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6OCwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjAiLCJhdWRpb190eXBlIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpudWxsfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcGVuX2Nhcm91c2VsX3N1Ym1pc3Npb25fc3RhdGUiOiJjbG9zZWQiLCJvcmlnaW5hbF9oZWlnaHQiOjYxMiwib3JpZ2luYWxfd2lkdGgiOjYxMiwicGsiOiIzNTcwNDc3MjU3NTczNTEyNDAyIiwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9jb250YWluZXIiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk4NTQwNzgsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NDk3NTcxXzE3OTQ4NDE1ODE4OTQxOTIyXzQ2ODE1NDkwMzI5MDI1NjQ0MzVfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWlnRUFNcXpoaGlJUTdrTnZnR2ZiNDJyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURRM056STFNRFUwTXpjeU5EZzRNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUF3MFJ0WE5aeTNuaHh2MVRaYV9KbW9uYk5DZVpMeWpiaUNQV2I4LXdyRWhnJm9lPTY3QkI2MzUzJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJqdWxlc2xpa2VzamV3ZWxzIl0sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQ1ODI1NzYzNjc4OCwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJBcnRpZmljaWFsIEludGVsbGlnZW5jZSIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiI1ODEzNDMwOTkyMSIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjMxODA1NTk2MzUwMzYzMDQ0NDAiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzcxNzI0ODEwXzEwMDA4MTY5NTU5MjU2ODI4XzI3MjM4Nzg0MjUyNTQ2MTA0NDNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9S2YwRHpTc2NXeTBRN2tOdmdHY3FjM2ImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBRmx2M0IyNF92M3JKT1pqbmZHdTNtSERycWxub2hDU0VTeFpZdnpEV3I1USZvZT02N0JCNTJFRSZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6InBvd2VyLmFpIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9tb2RpZnlfY2Fyb3VzZWwiOnRydWUsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5OTAxNjA2LCJjcmVhdGVkX2F0X3V0YyI6MTczOTkwMTYwNiwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzX3RyYW5zbGF0aW9uIjp0cnVlLCJoYXNodGFncyI6WyIjaWEiLCIjaW50ZWxpZ2VuY2lhYXJ0aWZpY2lhbCIsIiN0ZWNub2xvZ2lhIiwiI2FpIiwiI2NoYXRncHQiLCIjYWl0b29scyIsIiNvcGVuYWkiLCIjYWl0aXBzIiwiI21hY2hpbmVsZWFybmluZyIsIiNnb29nbGUiLCIjcGVycGxleGl0eSJdLCJpZCI6IjM1NzA3ODA0NTQ4MzMzMDc1MjQiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6WyJAZGllZ29hbG1laWRhLmlhIl0sInBrIjoiMTg0ODczNzMyMjQwMTE2MDciLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiLwn5qoIFBlcnBsZXhpdHkgbGFuw6dhIOKAnERlZXAgUmVzZWFyY2jigJ0sIHVtYSBmZXJyYW1lbnRhIGRlIElBIGF2YW7Dp2FkYSBwYXJhIGFuw6FsaXNlcyBkZSBuw612ZWwgcHJvZmlzc2lvbmFsXG5cbkEgUGVycGxleGl0eSBhcHJlc2VudG91IG8gRGVlcCBSZXNlYXJjaCwgdW0gcmVjdXJzbyBxdWUgZ2VyYSByZWxhdMOzcmlvcyBkZXRhbGhhZG9zLCBjb20gY2l0YcOnw7VlcywgZW0gbWludXRvcyDigJQgc2VtIGEgbmVjZXNzaWRhZGUgZGUgdW1hIGFzc2luYXR1cmEgY2FyYS5cblxuU29sdcOnw7VlcyBzaW1pbGFyZXMgZGEgR2VtaW5pIEFJIChHb29nbGUpIGUgT3BlbkFJIGFwcmVzZW50YW0gZGlmZXJlbsOnYXMgZW0gdmVsb2NpZGFkZSwgaW50ZWdyYcOnw6NvIGUgcHJvZnVuZGlkYWRlIGFuYWzDrXRpY2EsIG1hcyBhIFBlcnBsZXhpdHkgc2UgZGVzdGFjYSBwZWxvIGRlc2VtcGVuaG8gcsOhcGlkbyBlIGNvbnN1bHRhcyBkacOhcmlhcyBncmF0dWl0YXMuXG5cbkEgZnVuY2lvbmFsaWRhZGUgZGEgZmVycmFtZW50YSBpbmNsdWkgZXhwb3J0YcOnw6NvIGRlIHJlbGF0w7NyaW9zIGRldGFsaGFkb3MgZW0gUERGIGUgY29tcGFydGlsaGFtZW50byB2aWEgUGVycGxleGl0eSBQYWdlcywgZXN0YWJlbGVjZW5kbyB1bSBub3ZvIHBhZHLDo28gcGFyYSBwZXNxdWlzYXMgY290aWRpYW5hcyBlIGNvcnBvcmF0aXZhcy5cblxuRSB2b2PDqiBvIHF1ZSBhY2hhIHNvYnJlIGlzc28/IPCfpJTwn5KsIFxuXG7wn46lOiBQZXJwbGV4aXR5IG5vIFhcblxu8J+RifCfj7tTaWdhIEBkaWVnb2FsbWVpZGEuaWEgcGFyYSBtYWlzIG5vdmlkYWRlcyBzb2JyZVxuSUEsIENoYXRHUFQgZSBUZWNub2xvZ2lhIVxuXG4jaWEgI2ludGVsaWdlbmNpYWFydGlmaWNpYWwgI3RlY25vbG9naWEgI2FpICNjaGF0Z3B0XG4jYWl0b29scyAjb3BlbmFpICNhaXRpcHMgI21hY2hpbmVsZWFybmluZyAjZ29vZ2xlICNwZXJwbGV4aXR5IiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQwMDk3NzQ5MDM2MywiZnVsbF9uYW1lIjoiRGllZ28gQWxtZWlkYSB8IElBIHwgQ2hhdEdQVCIsImlkIjoiMjMyNjQ1ODMiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzNDc1MjQyODc0MzEzMDg0NDA0IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ2MjMzNzA2NV81Mjg2MDkzNjY3Mjc5MjVfNDcxMTUzODgxNDE0MzYzNzg4M19uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1UZHZiMUVHTGxvNFE3a052Z0hpcUZXaCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFCRXBJZFkzeVBHZWNCMkMtektfNmIzN045R0MzMkZNLWJZQUl2Y1VmNG5nJm9lPTY3QkI0OUNDJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJkaWVnb2FsbWVpZGEuaWEifSwidXNlcl9pZCI6IjIzMjY0NTgzIn0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2Fyb3VzZWxfbWVkaWEiOlt7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzA3ODA0NTQ4MzMzMDc1MjRfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwMTk0NTU1MjAwMTAzOTYzIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTk4NDM0NV8xODUwNDIyMTkwMjAzMjU4NF80NTQyNDA4Nzg3NzI0NzE2OTA1X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz01RTllbTN6R3QwZ1E3a052Z0hsVUtLWiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTVORFUxTlRJd01ERXdNemsyTXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBdUhpS0ZreUVxZEZFMlBYYmZEbVlQTUhvbG84NjlFUDJBOGhkZjhJc3cwZyZvZT02N0JCNENCNiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTg0MzQ1XzE4NTA0MjIxOTAyMDMyNTg0XzQ1NDI0MDg3ODc3MjQ3MTY5MDVfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz01RTllbTN6R3QwZ1E3a052Z0hsVUtLWiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTVORFUxTlRJd01ERXdNemsyTXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBd0RPT3R1ajhuRm85QkNrR0lPZDVyUWEwdWNVOW5Mam1KUGgydUwzaDlqUSZvZT02N0JCNENCNiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDE5NDU1NTIwMDEwMzk2MyIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk5MDE2MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTg0MzQ1XzE4NTA0MjIxOTAyMDMyNTg0XzQ1NDI0MDg3ODc3MjQ3MTY5MDVfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTVFOWVtM3pHdDBnUTdrTnZnSGxVS0taJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFNU5EVTFOVEl3TURFd016azJNdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUF1SGlLRmt5RXFkRkUyUFhiZkRtWVBNSG9sbzg2OUVQMkE4aGRmOElzdzBnJm9lPTY3QkI0Q0I2Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwNzgwNDU0ODMzMzA3NTI0XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6ZmFsc2UsImlkIjoiMzU3MDE5NDU1NDk5MDM2OTA4OCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTczMTE4M18xODUwNDIyMTk5ODAzMjU4NF8xNzk3NzExMTc2MjI2MzA5Mzk2X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1SRnotUHFTdzdWRVE3a052Z0ViQ1J2OCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTVORFUxTkRrNU1ETTJPVEE0T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlESzNiM2gxbWVnSDc5ZWdCNmVGRHVzVmZYMlQxbnl2M0NyTkNkUlZ6aTc0dyZvZT02N0JCM0U2RiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6NCwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMTk0NTU0OTkwMzY5MDg4IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTkwMTYwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk3MzExODNfMTg1MDQyMjE5OTgwMzI1ODRfMTc5NzcxMTE3NjIyNjMwOTM5Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UkZ6LVBxU3c3VkVRN2tOdmdFYkNSdjgmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREU1TkRVMU5EazVNRE0yT1RBNE9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZREszYjNoMW1lZ0g3OWVnQjZlRkR1c1ZmWDJUMW55djNDck5DZFJWemk3NHcmb2U9NjdCQjNFNkYmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6InZwMDkuMDAuMzEuMDguMDAuMDEuMDEuMDEuMDAiLCJ2aWRlb19kdXJhdGlvbiI6NTQuMDE2LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPYlNtQlRCdmNodEJWU01EUUhLRzcwU2gwNy1FbW90c0hHRzRPME1jRTRBZXAtR2tnQzlNMF9mQ1Fhc3UyZm5pNFc3N2ViRThGamJhenpCTTlTZDN6REZMLVNHNnllWjZGTTBDby5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFM01qazBNVGt4TlRBNU5UWXlNRGdzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJnZzPTFmNGMwOWU1MzYxNTk4OTcmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODVRelF4TmpNd1FrRXlSRE01TkRrek5EUkNNa1ZFTWpreVFUYzNPVGRDTTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYmcyc2ppdUxtU0JoVUNLQUpETXl3WFFFc0VPVmdRWWs0WUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQjlBejhwRGNtVGhaYmNvQnlWMTNNYnFPbWVMYnBVbkVSc0dNV1JTWVM0TlEmb2U9NjdCNzY3NDgmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjo2MDgzNTksImhlaWdodCI6MTM1MCwiaWQiOiI2NTE1ODUyMTQxOTkxNzZ2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPYlNtQlRCdmNodEJWU01EUUhLRzcwU2gwNy1FbW90c0hHRzRPME1jRTRBZXAtR2tnQzlNMF9mQ1Fhc3UyZm5pNFc3N2ViRThGamJhenpCTTlTZDN6REZMLVNHNnllWjZGTTBDby5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFM01qazBNVGt4TlRBNU5UWXlNRGdzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJnZzPTFmNGMwOWU1MzYxNTk4OTcmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODVRelF4TmpNd1FrRXlSRE01TkRrek5EUkNNa1ZFTWpreVFUYzNPVGRDTTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYmcyc2ppdUxtU0JoVUNLQUpETXl3WFFFc0VPVmdRWWs0WUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQjlBejhwRGNtVGhaYmNvQnlWMTNNYnFPbWVMYnBVbkVSc0dNV1JTWVM0TlEmb2U9NjdCNzY3NDgmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjYwODM1OSwiaGVpZ2h0IjoxMzUwLCJpZCI6IjY1MTU4NTIxNDE5OTE3NnYiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9iU21CVEJ2Y2h0QlZTTURRSEtHNzBTaDA3LUVtb3RzSEdHNE8wTWNFNEFlcC1Ha2dDOU0wX2ZDUWFzdTJmbmk0Vzc3ZWJFOEZqYmF6ekJNOVNkM3pERkwtU0c2eWVaNkZNMENvLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUzTWprME1Ua3hOVEE1TlRZeU1EZ3NJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmdnM9MWY0YzA5ZTUzNjE1OTg5NyZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4NVF6UXhOak13UWtFeVJETTVORGt6TkRSQ01rVkVNamt5UVRjM09UZENNMTkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNiZzJzaml1TG1TQmhVQ0tBSkRNeXdYUUVzRU9WZ1FZazRZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlCOUF6OHBEY21UaFpiY29CeVYxM01icU9tZUxicFVuRVJzR01XUlNZUzROUSZvZT02N0I3Njc0OCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6NjA4MzU5LCJoZWlnaHQiOjEzNTAsImlkIjoiNjUxNTg1MjE0MTk5MTc2diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT2JTbUJUQnZjaHRCVlNNRFFIS0c3MFNoMDctRW1vdHNIR0c0TzBNY0U0QWVwLUdrZ0M5TTBfZkNRYXN1MmZuaTRXNzdlYkU4RmpiYXp6Qk05U2QzekRGTC1TRzZ5ZVo2Rk0wQ28ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRTNNamswTVRreE5UQTVOVFl5TURnc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMyZ2cz0xZjRjMDllNTM2MTU5ODk3Jl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzg1UXpReE5qTXdRa0V5UkRNNU5Ea3pORFJDTWtWRU1qa3lRVGMzT1RkQ00xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2JnMnNqaXVMbVNCaFVDS0FKRE15d1hRRXNFT1ZnUVlrNFlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUI5QXo4cERjbVRoWmJjb0J5VjEzTWJxT21lTGJwVW5FUnNHTVdSU1lTNE5RJm9lPTY3Qjc2NzQ4Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwNzgwNDU0ODMzMzA3NTI0XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDE5NDU1NTI2NzQwMzY0NSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwNjY1MDRfMTg1MDQyMjE5MTEwMzI1ODRfMTI4MjgyNjU1NzUwNjg1NjE1M19uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VXBIVENReVZqYWdRN2tOdmdHT2UzV3AmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREU1TkRVMU5USTJOelF3TXpZME5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQnlDa21uOXRYZHFXb1NWY2t1RExSQXFWWlRod1RCcVRXVUxPRzBTQ3RuaXcmb2U9NjdCQjVDMEQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA2NjUwNF8xODUwNDIyMTkxMTAzMjU4NF8xMjgyODI2NTU3NTA2ODU2MTUzX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VXBIVENReVZqYWdRN2tOdmdHT2UzV3AmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREU1TkRVMU5USTJOelF3TXpZME5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDZLTkZDLVVQQ2g0VFpIa2VDTUJleXhBMGpvQnFPZ2JScFBGYWU1NmJGM0Emb2U9NjdCQjVDMEQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzAxOTQ1NTUyNjc0MDM2NDUiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5OTAxNjAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA2NjUwNF8xODUwNDIyMTkxMTAzMjU4NF8xMjgyODI2NTU3NTA2ODU2MTUzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1VcEhUQ1F5VmphZ1E3a052Z0dPZTNXcCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTVORFUxTlRJMk56UXdNelkwTlElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCeUNrbW45dFhkcVdvU1Zja3VETFJBcVZaVGh3VEJxVFdVTE9HMFNDdG5pdyZvZT02N0JCNUMwRCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDc4MDQ1NDgzMzMwNzUyNF8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzAxOTQ1NTUwMzI1NTI1NjAiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NzMzMzI4XzE4NTA0MjIxOTMyMDMyNTg0XzUwNzAzMjQ2MjYyMTg5MzcyMDZfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUhKRGl5SHNlSUc0UTdrTnZnRkhKcEFaJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFNU5EVTFOVEF6TWpVMU1qVTJNQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUM4TzJWUkZwaHQtN3V0Zjk4RzlZVTNQOF9mM2VNbG01Yk43ZHBRM2x0RU13Jm9lPTY3QkI1OEQ0Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk3MzMzMjhfMTg1MDQyMjE5MzIwMzI1ODRfNTA3MDMyNDYyNjIxODkzNzIwNl9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUhKRGl5SHNlSUc0UTdrTnZnRkhKcEFaJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFNU5EVTFOVEF6TWpVMU1qVTJNQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNubUMyZWpnWXMtY0FqX2JGVHlnTGpybUlEQTh3T0FjQ29SUXRJak83VmFBJm9lPTY3QkI1OEQ0Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMTk0NTU1MDMyNTUyNTYwIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTkwMTYwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk3MzMzMjhfMTg1MDQyMjE5MzIwMzI1ODRfNTA3MDMyNDYyNjIxODkzNzIwNl9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SEpEaXlIc2VJRzRRN2tOdmdGSEpwQVomX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREU1TkRVMU5UQXpNalUxTWpVMk1BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQzhPMlZSRnBodC03dXRmOThHOVlVM1A4X2YzZU1sbTViTjdkcFEzbHRFTXcmb2U9NjdCQjU4RDQmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzA3ODA0NTQ4MzMzMDc1MjRfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwMTk0NTU1MjAwMjQ0NzU4IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDAxNTE0OV8xODUwNDIyMTkyMzAzMjU4NF81MTA2NTk0NDYzMjYxMTAwMzk2X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1vU2lxYkFwWXBKQVE3a052Z0dVVnNyYiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTVORFUxTlRJd01ESTBORGMxT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEZWVfaGlicDY5N3Y3eDE5Y1pjZVFNMEJYa3N3TDNyNlF2SFBhdlMtTlRPZyZvZT02N0JCNTcyRCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDE1MTQ5XzE4NTA0MjIxOTIzMDMyNTg0XzUxMDY1OTQ0NjMyNjExMDAzOTZfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1vU2lxYkFwWXBKQVE3a052Z0dVVnNyYiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTVORFUxTlRJd01ESTBORGMxT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCdi00WVFLdF96QjQ4RXM2REthRW5UcW00M3EwV1N4aTk5cUM5LUNXMDZmdyZvZT02N0JCNTcyRCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDE5NDU1NTIwMDI0NDc1OCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk5MDE2MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDE1MTQ5XzE4NTA0MjIxOTIzMDMyNTg0XzUxMDY1OTQ0NjMyNjExMDAzOTZfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPW9TaXFiQXBZcEpBUTdrTnZnR1VWc3JiJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFNU5EVTFOVEl3TURJME5EYzFPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURlZV9oaWJwNjk3djd4MTljWmNlUU0wQlhrc3dMM3I2UXZIUGF2Uy1OVE9nJm9lPTY3QkI1NzJEJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwNzgwNDU0ODMzMzA3NTI0XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDE5NDU1NTIyNTI5OTI2OSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk1MTEwNjFfMTg1MDQyMjE5NDEwMzI1ODRfNzcwMzI0NTU3MzIwNTgzMTgwOV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WFdYVmFmcXRoUUVRN2tOdmdIdnRDMnImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREU1TkRVMU5USXlOVEk1T1RJMk9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRFN1TndORGdQYkkxOVczM19MSEMxUUlwSVlHWkVpZjJzTjEyWEVkSHVsX2cmb2U9NjdCQjM5OEEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTUxMTA2MV8xODUwNDIyMTk0MTAzMjU4NF83NzAzMjQ1NTczMjA1ODMxODA5X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WFdYVmFmcXRoUUVRN2tOdmdIdnRDMnImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREU1TkRVMU5USXlOVEk1T1RJMk9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZREFHTlNJU3VHekc1d1E3N0hMRGxzNzMyVDR6d0p0d0h2Q1JqeVNIYUprQ2cmb2U9NjdCQjM5OEEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzAxOTQ1NTUyMjUyOTkyNjkiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5OTAxNjAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTUxMTA2MV8xODUwNDIyMTk0MTAzMjU4NF83NzAzMjQ1NTczMjA1ODMxODA5X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1YV1hWYWZxdGhRRVE3a052Z0h2dEMyciZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTVORFUxTlRJeU5USTVPVEkyT1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEU3VOd05EZ1BiSTE5VzMzX0xIQzFRSXBJWUdaRWlmMnNOMTJYRWRIdWxfZyZvZT02N0JCMzk4QSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119XSwiY2Fyb3VzZWxfbWVkaWFfY291bnQiOjYsImNhcm91c2VsX21lZGlhX2lkcyI6WzM1NzAxOTQ1NTUyMDAxMDM5NjMsMzU3MDE5NDU1NDk5MDM2OTA4OCwzNTcwMTk0NTU1MjY3NDAzNjQ1LDM1NzAxOTQ1NTUwMzI1NTI1NjAsMzU3MDE5NDU1NTIwMDI0NDc1OCwzNTcwMTk0NTU1MjI1Mjk5MjY5XSwiY2Fyb3VzZWxfbWVkaWFfcGVuZGluZ19wb3N0X2NvdW50IjowLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHTjllZWxQei1FIiwiY29tbWVudF9jb3VudCI6NSwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5OTAxNjAwLCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxODQ4NzIwMTg3OTAxMTYwNyIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiU0VMRl9ESVNDTE9TVVJFX0ZMT1cifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU3MDc4MDQ1NDgzMzMwNzUyNCIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTg0MzQ1XzE4NTA0MjIxOTAyMDMyNTg0XzQ1NDI0MDg3ODc3MjQ3MTY5MDVfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTVFOWVtM3pHdDBnUTdrTnZnSGxVS0taJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFNU5EVTFOVEl3TURFd016azJNdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUF1SGlLRmt5RXFkRkUyUFhiZkRtWVBNSG9sbzg2OUVQMkE4aGRmOElzdzBnJm9lPTY3QkI0Q0I2Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk5ODQzNDVfMTg1MDQyMjE5MDIwMzI1ODRfNDU0MjQwODc4NzcyNDcxNjkwNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTVFOWVtM3pHdDBnUTdrTnZnSGxVS0taJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFNU5EVTFOVEl3TURFd016azJNdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUF3RE9PdHVqOG5GbzlCQ2tHSU9kNXJRYTB1Y1U5bkxqbUpQaDJ1TDNoOWpRJm9lPTY3QkI0Q0I2Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtZWRpYV9mb3JtYXQiOiJhbGJ1bSIsIm1lZGlhX25hbWUiOiJhbGJ1bSIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjgsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIxODE1NTU0NzQ4NzAyNDkzMiIsImF1ZGlvX3R5cGUiOiJsaWNlbnNlZF9tdXNpYyIsIm11c2ljX2luZm8iOnsibXVzaWNfYXNzZXRfaW5mbyI6eyJhbGxvd3Nfc2F2aW5nIjpmYWxzZSwiYXJ0aXN0X2lkIjoiNDkyOTc2ODUyMTY3NzMzIiwiYXVkaW9faWQiOiIxNTQ1Nzc1MjUyNTc0MjkiLCJjb3Zlcl9hcnR3b3JrX3RodW1ibmFpbF91cmkiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvdi90MzkuMzA4MDgtNi80MjY1NTYzNTVfMjQ5ODU5Nzk3MDMyMTQ0M180NjY0MzQ0NjAyMDgwMjczOTc5X24uanBnP3N0cD1kc3QtanBnX3MxNjh4MTI4X3R0NiZfbmNfY2F0PTEwOCZjY2I9MS03Jl9uY19zaWQ9MmYyNTU3Jl9uY19vaGM9Y2hlQlVGaUFydjRRN2tOdmdFS1VndVgmX25jX29jPUFkZ1I4Q1pLZjJPbGdqRWQyNlRXSWxCWXBXMHhodkhQalNVWGVXbXdsbm1xME1sMWY0Mjh3ajJLcXNFNWN0TXR3b1UmX25jX2FkPXotbSZfbmNfY2lkPTEzNjUmX25jX3p0PTIzJl9uY19odD1zY29udGVudC1kdXMxLTEueHgmX25jX2dpZD1BZkhidXBvcFV4Q2dwa2JWcHlUSjZWbiZvaD0wMF9BWUFGOG9LazhvUkpIdlBuNHNNVV9uRnhvNExKdWxxNGhpbUowMnN6V2JRLV9RJm9lPTY3QkIzRkJBIiwiY292ZXJfYXJ0d29ya191cmkiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvdi90MzkuMzA4MDgtNi80MjY1NTYzNTVfMjQ5ODU5Nzk3MDMyMTQ0M180NjY0MzQ0NjAyMDgwMjczOTc5X24uanBnP3N0cD1kc3QtanBnX3MxNjh4MTI4X3R0NiZfbmNfY2F0PTEwOCZjY2I9MS03Jl9uY19zaWQ9MmYyNTU3Jl9uY19vaGM9Y2hlQlVGaUFydjRRN2tOdmdFS1VndVgmX25jX29jPUFkZ1I4Q1pLZjJPbGdqRWQyNlRXSWxCWXBXMHhodkhQalNVWGVXbXdsbm1xME1sMWY0Mjh3ajJLcXNFNWN0TXR3b1UmX25jX2FkPXotbSZfbmNfY2lkPTEzNjUmX25jX3p0PTIzJl9uY19odD1zY29udGVudC1kdXMxLTEueHgmX25jX2dpZD1BZkhidXBvcFV4Q2dwa2JWcHlUSjZWbiZvaD0wMF9BWUFGOG9LazhvUkpIdlBuNHNNVV9uRnhvNExKdWxxNGhpbUowMnN6V2JRLV9RJm9lPTY3QkIzRkJBIiwiZGFya19tZXNzYWdlIjpudWxsLCJkaXNwbGF5X2FydGlzdCI6IkRldmxpbiIsImR1cmF0aW9uX2luX21zIjoyNzIwNjIsImZhc3Rfc3RhcnRfcHJvZ3Jlc3NpdmVfZG93bmxvYWRfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L28xL3YvdDIvZjIvbTY5L0FRTk5HYWJwMUdMcHYyWW5OOXE4NUxXbU1GdmdWWGExUTNBRVdYSThETkk1SXN0b2pHNGVNMVBYUnFNT1A1RUtlWkZqLTJOSGVZSzd1cVBFeTgwZnp3RXoubXA0P3N0cmV4dD0xJl9uY19jYXQ9MTEwJl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9N0dTdnNNMlBrMDhRN2tOdmdFaFg3Z1omZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZYMkZoWTNCZk5EaGZabkpoWjE4eVgyRjFaR2x2SWl3aWVIQjJYMkZ6YzJWMFgybGtJam81T0RjeU9EZ3dNall6TXpjMU5ESXNJblZ5YkdkbGJsOXpiM1Z5WTJVaU9pSjNkM2NpZlElM0QlM0QmY2NiPTktNCZfbmNfenQ9Mjgmb2g9MDBfQVlDZm4zanZPOFBPMkx0ZGRMamZfUDI2MEROdEJPekFkMW9XTHF5U0huZVppQSZvZT02N0JCNjA4OCIsImhhc19seXJpY3MiOmZhbHNlLCJoaWdobGlnaHRfc3RhcnRfdGltZXNfaW5fbXMiOlszNTUwMCwxMzUwMCw3MTUwMF0sImlkIjoiNDEyNzgxMDgyODI2MzE5IiwiaWdfdXNlcm5hbWUiOiJkZXZsaW5hcnRpc3QiLCJpc19lbGlnaWJsZV9mb3JfYXVkaW9fZWZmZWN0cyI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl92aW55bF9zdGlja2VyIjp0cnVlLCJpc19leHBsaWNpdCI6ZmFsc2UsImxpY2Vuc2VkX211c2ljX3N1YnR5cGUiOiJERUZBVUxUIiwibHlyaWNzIjpudWxsLCJwcm9ncmVzc2l2ZV9kb3dubG9hZF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvbzEvdi90Mi9mMi9tNjkvQVFOTkdhYnAxR0xwdjJZbk45cTg1TFdtTUZ2Z1ZYYTFRM0FFV1hJOEROSTVJc3Rvakc0ZU0xUFhScU1PUDVFS2VaRmotMk5IZVlLN3VxUEV5ODBmendFei5tcDQ/c3RyZXh0PTEmX25jX2NhdD0xMTAmX25jX3NpZD04YmY4ZmUmX25jX2h0PXNjb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQmX25jX29oYz03R1N2c00yUGswOFE3a052Z0VoWDdnWiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbmh3ZGw5d2NtOW5jbVZ6YzJsMlpTNUJWVVJKVDE5UFRreFpMaTVETXk0d0xuQnliMmR5WlhOemFYWmxYMkYxWkdsdlgyRmhZM0JmTkRoZlpuSmhaMTh5WDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqbzVPRGN5T0Rnd01qWXpNemMxTkRJc0luVnliR2RsYmw5emIzVnlZMlVpT2lKM2QzY2lmUSUzRCUzRCZjY2I9OS00Jl9uY196dD0yOCZvaD0wMF9BWUNmbjNqdk84UE8yTHRkZExqZl9QMjYwRE50Qk96QWQxb1dMcXlTSG5lWmlBJm9lPTY3QkI2MDg4IiwicmVhY3RpdmVfYXVkaW9fZG93bmxvYWRfdXJsIjpudWxsLCJzYW5pdGl6ZWRfdGl0bGUiOm51bGwsInN1YnRpdGxlIjoiIiwidGl0bGUiOiIoQWxsIEFsb25nIFRoZSkgV2F0Y2h0b3dlciAoSW5zdHJ1bWVudGFsKSIsIndlYl8zMHNfcHJldmlld19kb3dubG9hZF91cmwiOm51bGx9LCJtdXNpY19jb25zdW1wdGlvbl9pbmZvIjp7ImFsbG93X21lZGlhX2NyZWF0aW9uX3dpdGhfbXVzaWMiOnRydWUsImF1ZGlvX2Fzc2V0X3N0YXJ0X3RpbWVfaW5fbXMiOjM2LCJhdWRpb19maWx0ZXJfaW5mb3MiOltdLCJhdWRpb19tdXRpbmdfaW5mbyI6eyJhbGxvd19hdWRpb19lZGl0aW5nIjpmYWxzZSwibXV0ZV9hdWRpbyI6ZmFsc2UsIm11dGVfcmVhc29uX3N0ciI6IiIsInNob3dfbXV0ZWRfYXVkaW9fdG9hc3QiOmZhbHNlfSwiY29udGFpbnNfbHlyaWNzIjpudWxsLCJkZXJpdmVkX2NvbnRlbnRfaWQiOm51bGwsImRpc3BsYXlfbGFiZWxzIjpudWxsLCJmb3JtYXR0ZWRfY2xpcHNfbWVkaWFfY291bnQiOm51bGwsImlnX2FydGlzdCI6eyJmdWxsX25hbWUiOiJEZXZsaW4iLCJpZCI6IjI2NTc2MzQwIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjI3NjEwOTM3MjY3MjgxNTAyMjciLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMjcyNzI0NjM5XzY3NjM4OTYwNjk5Njc5M180ODg2MjAyMDc4OTEyMTIzNzI4X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Y0JUTG9PZ05yMTRRN2tOdmdIWm14dUEmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCb2Zvc2Y2ZnkycFRiRXBOWmNhN0lKUEU5amxhYUh6cTdZRk5NR2N5ZHdQdyZvZT02N0JCM0I0QSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiZGV2bGluYXJ0aXN0In0sImlzX2Jvb2ttYXJrZWQiOmZhbHNlLCJpc190cmVuZGluZ19pbl9jbGlwcyI6ZmFsc2UsIm92ZXJsYXBfZHVyYXRpb25faW5fbXMiOjMwMDAwLCJwbGFjZWhvbGRlcl9wcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjEyNDQyLTE1LzQzOTg1NjI5XzMxMTEwNTkxNjE0NTM1MV81ODA2NDc1OTgxMTQwNTc3Nl9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9eUwwOU5YY0ZpWDRRN2tOdmdIalVQSlUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmb2g9MDBfQVlDbGMtelhSSjNHMjFEYWtJU0s5ZWVXVk5YQWRfWWc2VWp2RzdJc0M2Zk9aQSZvZT02N0JCMzkzRCZfbmNfc2lkPTIwMTFhZCIsInByZXZpb3VzX3RyZW5kX3JhbmsiOm51bGwsInNob3VsZF9hbGxvd19tdXNpY19lZGl0aW5nIjpmYWxzZSwic2hvdWxkX211dGVfYXVkaW8iOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb24iOiIiLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb25fdHlwZSI6bnVsbCwidHJlbmRfcmFuayI6bnVsbH19LCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpbXX0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3Blbl9jYXJvdXNlbF9zdWJtaXNzaW9uX3N0YXRlIjoiY2xvc2VkIiwib3JpZ2luYWxfaGVpZ2h0Ijo2MTIsIm9yaWdpbmFsX3dpZHRoIjo2MTIsInBrIjoiMzU3MDc4MDQ1NDgzMzMwNzUyNCIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfY29udGFpbmVyIiwic2hhcmVfY291bnRfZGlzYWJsZWQiOnRydWUsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk5MDE2MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTg0MzQ1XzE4NTA0MjIxOTAyMDMyNTg0XzQ1NDI0MDg3ODc3MjQ3MTY5MDVfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTVFOWVtM3pHdDBnUTdrTnZnSGxVS0taJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFNU5EVTFOVEl3TURFd016azJNdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUF1SGlLRmt5RXFkRkUyUFhiZkRtWVBNSG9sbzg2OUVQMkE4aGRmOElzdzBnJm9lPTY3QkI0Q0I2Jl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJlZG5hbGRvLmFkcyJdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiRGllZ28gQWxtZWlkYSB8IElBIHwgQ2hhdEdQVCIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyMzI2NDU4MyIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fbW9kaWZ5X2Nhcm91c2VsIjp0cnVlLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTg4NjMwMiwiY3JlYXRlZF9hdF91dGMiOjE3Mzk4ODYzMDIsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI2lhIiwiI2ludGVsaWdlbmNpYWFydGlmaWNpYWwiLCIjdGVjbm9sb2dpYSIsIiNhaSIsIiNjaGF0Z3B0IiwiI2FpdG9vbHMiLCIjb3BlbmFpIiwiI2FpdGlwcyIsIiNtYWNoaW5lbGVhcm5pbmciXSwiaWQiOiIzNTcwNzQ3NTU3NDcyMjE4MTY3IiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOlsiQGRpZWdvYWxtZWlkYS5pYSJdLCJwayI6IjE4MDQ2NjQ2OTI3MjU3MDc3IiwicHJpdmF0ZV9yZXBseV9zdGF0dXMiOjAsInNoYXJlX2VuYWJsZWQiOmZhbHNlLCJ0ZXh0Ijoi8J+aqCBOT1ZBIEVSQSBEQSBJQT8gRWxvbiBNdXNrIHJldmVsb3UgbyBHcm9rLTMsIGEgbWFpcyByZWNlbnRlIElBIGRhIHhBSSwgcHJvbWV0ZW5kbyB1bSBhdmFuw6dvIHNpZ25pZmljYXRpdm8gZW0gcmFjaW9jw61uaW8sIG1hdGVtw6F0aWNhLCBjacOqbmNpYSBlIHByb2dyYW1hw6fDo28uXG5cbk8gbW9kZWxvIGrDoSBsaWRlcmEgbyByYW5raW5nIGRvIENoYXRib3QgQXJlbmEsIHN1cGVyYW5kbyBjb25jb3JyZW50ZXMgY29tbyBHUFQtNG8sIEdlbWluaS0yIFBybyBlIENsYXVkZSAzLjUgU29ubmV0LiBTZWd1bmRvIE11c2ssIG8gR3Jvay0zIMOpIDEwIHZlemVzIG1haXMgcG9kZXJvc28gcXVlIHNldSBhbnRlY2Vzc29yLCB0cmVpbmFkbyBjb20gdW0gaW1wcmVzc2lvbmFudGUgY2x1c3RlciBkZSAyMDAgbWlsIEdQVXMsIGRvYnJhbmRvIHN1YSBjYXBhY2lkYWRlIGNvbXB1dGFjaW9uYWwgZW0gYXBlbmFzIDkyIGRpYXMuXG5cbkFsw6ltIGRvIGF1bWVudG8gZGUgcG90w6puY2lhLCBvIEdyb2stMyBzZSBkZXN0YWNhIHBvciBzdWFzIGhhYmlsaWRhZGVzIGRlIHJhY2lvY8OtbmlvIGF2YW7Dp2FkbywgYXByZW5kaXphZG8gcG9yIHJlZm9yw6dvIGUgY3JpYXRpdmlkYWRlIGVtZXJnZW50ZSwgc2VuZG8gY2FwYXogYXTDqSBkZSBnZXJhciBub3ZvcyBqb2dvcyBlIHV0aWxpemFyIG8gQmlnIEJyYWluIE1vZGUgcGFyYSBhbsOhbGlzZXMgbWFpcyBwcm9mdW5kYXMuIEVsZSBhdGluZ2l1IHVtIEVsbyBkZSAxNDAwLCB1bSByZWNvcmRlIGVudHJlIG1vZGVsb3MgZGUgSUEsIGUgYXTDqSBzdWEgdmVyc8OjbyByZWR1emlkYSwgbyBHcm9rLTMgTWluaSwgc2UgbWFudMOpbSBjb21wZXRpdGl2YS5cblxuT3V0cm8gZGlmZXJlbmNpYWwgw6kgbyBEZWVwU2VhcmNoLCB1bSBzaXN0ZW1hIGRlIElBIGludGVsaWdlbnRlIHByb2pldGFkbyBwYXJhIGVudGVuZGVyIGludGVuw6fDtWVzLCBhbmFsaXNhciBpbmZvcm1hw6fDtWVzIGUgdmVyaWZpY2FyIGZvbnRlcywgYW1wbGlhbmRvIGEgYXBsaWNhYmlsaWRhZGUgZG8gR3Jvay0zIGFsw6ltIGRvIGNoYXRib3QgdHJhZGljaW9uYWwuXG5cbk11c2sgYWluZGEgYWZpcm1vdSBxdWUgbyBHcm9rLTMgc2Vyw6EgZGUgY8OzZGlnbyBhYmVydG8gcXVhbmRvIGVzdGl2ZXIgdG90YWxtZW50ZSBhbWFkdXJlY2lkbywgcmVmb3LDp2FuZG8gc3VhIHJpdmFsaWRhZGUgY29tIGEgT3BlbkFJLlxuXG5BIGdyYW5kZSBxdWVzdMOjbyDDqTogbyBHcm9rLTMgw6kgcmVhbG1lbnRlIGEgSUEgbWFpcyBpbnRlbGlnZW50ZSBqw6EgY3JpYWRhIG91IGFwZW5hcyBtYWlzIHVtYSBhcG9zdGEgb3VzYWRhIGRlIEVsb24gTXVzaz8g8J+klPCfkqxcblxu8J+RifCfj7tTaWdhIEBkaWVnb2FsbWVpZGEuaWEgcGFyYSBtYWlzIG5vdmlkYWRlcyBzb2JyZVxuSUEsIENoYXRHUFQgZSBUZWNub2xvZ2lhIVxuXG4jaWEgI2ludGVsaWdlbmNpYWFydGlmaWNpYWwgI3RlY25vbG9naWEgI2FpICNjaGF0Z3B0XG4jYWl0b29scyAjb3BlbmFpICNhaXRpcHMgI21hY2hpbmVsZWFybmluZyIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZ1bGxfbmFtZSI6IkRpZWdvIEFsbWVpZGEgfCBJQSB8IENoYXRHUFQiLCJpZCI6IjIzMjY0NTgzIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiZGllZ29hbG1laWRhLmlhIn0sInVzZXJfaWQiOiIyMzI2NDU4MyJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNhcm91c2VsX21lZGlhIjpbeyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwNzQ3NTU3NDcyMjE4MTY3XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDc0NzU0MjI4ODgxNDM4NSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAxMzk1MjZfMTg1MDQzNTM4MDAwMzI1ODRfNDIxMjg2MDE3ODI1NTI3MzEyNV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TjliaXlXdi1HZWdRN2tOdmdIV1JhYUomX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGMwTnpVME1qSTRPRGd4TkRNNE5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkdpQ0NwaFBhZFZEWkRHRHd5S3NJd1pkeXF3bzdKdzFIVG9hMHAzU1M4cUEmb2U9NjdCQjRFRjkmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDEzOTUyNl8xODUwNDM1MzgwMDAzMjU4NF80MjEyODYwMTc4MjU1MjczMTI1X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TjliaXlXdi1HZWdRN2tOdmdIV1JhYUomX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGMwTnpVME1qSTRPRGd4TkRNNE5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ3hIcS0wa1BobkJlYlpBdk9ZRnZ5SDFtVncyR01rTkdWajlSdTFQVUZpMFEmb2U9NjdCQjRFRjkmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzA3NDc1NDIyODg4MTQzODUiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5ODg2Mjk5LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDEzOTUyNl8xODUwNDM1MzgwMDAzMjU4NF80MjEyODYwMTc4MjU1MjczMTI1X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1OOWJpeVd2LUdlZ1E3a052Z0hXUmFhSiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EYzBOelUwTWpJNE9EZ3hORE00TlElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCR2lDQ3BoUGFkVkRaREdEd3lLc0l3WmR5cXdvN0p3MUhUb2EwcDNTUzhxQSZvZT02N0JCNEVGOSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDc0NzU1NzQ3MjIxODE2N18yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzA3NDc1NDIyODg5MDkyNDYiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTgyNjQzXzE4NTA0MzUzODA5MDMyNTg0Xzg2OTAxNzUwMjYwOTA4NzExMzBfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTgxT1o2Tk5yNHg4UTdrTnZnRjBZR1hEJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNakk0T0Rrd09USTBOZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNpWmhfWFFsdzNUMXRfbXdpUU1ENHRxZ2xzTTVjc2Q4Z3lkM2tPZDRHTThBJm9lPTY3QkIzQTY0Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk5ODI2NDNfMTg1MDQzNTM4MDkwMzI1ODRfODY5MDE3NTAyNjA5MDg3MTEzMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTgxT1o2Tk5yNHg4UTdrTnZnRjBZR1hEJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNakk0T0Rrd09USTBOZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJnRkJFLUo3bnA1b1NyMngtUTZjRDJwRVZ6eEJBRWthNVlDS2Zfc2YzQzFnJm9lPTY3QkIzQTY0Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwNzQ3NTQyMjg4OTA5MjQ2IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTg4NjI5OSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk5ODI2NDNfMTg1MDQzNTM4MDkwMzI1ODRfODY5MDE3NTAyNjA5MDg3MTEzMF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9ODFPWjZOTnI0eDhRN2tOdmdGMFlHWEQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGMwTnpVME1qSTRPRGt3T1RJME5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ2laaF9YUWx3M1QxdF9td2lRTUQ0dHFnbHNNNWNzZDhneWQza09kNEdNOEEmb2U9NjdCQjNBNjQmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzA3NDc1NTc0NzIyMTgxNjdfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwNzQ3NTQyMjgwNTQ0OTM1IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDAzOTQ1MF8xODUwNDM1MzgxODAzMjU4NF8yMzIyMDI5Mzc3NDU5MTkzOTQ4X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz13MzhSR2JTQU5rc1E3a052Z0U4TWVCNiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EYzBOelUwTWpJNE1EVTBORGt6TlElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEeHZFTmdvdUhxR0p4YVNuc2E2QVp0MGM3RFl0Y0hYMUw5WmhVSnZsSWt0dyZvZT02N0JCNEZDNyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDM5NDUwXzE4NTA0MzUzODE4MDMyNTg0XzIzMjIwMjkzNzc0NTkxOTM5NDhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz13MzhSR2JTQU5rc1E3a052Z0U4TWVCNiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EYzBOelUwTWpJNE1EVTBORGt6TlElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDNEtZX19haC1VQ0x3QmtZQjFjdjZtMGdxS0REU250enBRWkQwT3BibmtaQSZvZT02N0JCNEZDNyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDc0NzU0MjI4MDU0NDkzNSIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4ODYyOTksInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDM5NDUwXzE4NTA0MzUzODE4MDMyNTg0XzIzMjIwMjkzNzc0NTkxOTM5NDhfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXczOFJHYlNBTmtzUTdrTnZnRThNZUI2Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNakk0TURVME5Ea3pOUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUR4dkVOZ291SHFHSnhhU25zYTZBWnQwYzdEWXRjSFgxTDlaaFVKdmxJa3R3Jm9lPTY3QkI0RkM3Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwNzQ3NTU3NDcyMjE4MTY3XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDc0NzU0MjMzOTEwODA1OCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwNDQyNzBfMTg1MDQzNTM4MjcwMzI1ODRfODc4NjA2NzI1Mzk4OTk1NzUzM19uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UWdpUHVZSTJHSmdRN2tOdmdFTVFHQkgmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGMwTnpVME1qTXpPVEV3T0RBMU9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQUxJTFVRZ3ZnZVN6aDJFQmpIbU5MMWw3MjlDOUFDRUhQZU5OSDEtTXBTUWcmb2U9NjdCQjVDMjUmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA0NDI3MF8xODUwNDM1MzgyNzAzMjU4NF84Nzg2MDY3MjUzOTg5OTU3NTMzX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UWdpUHVZSTJHSmdRN2tOdmdFTVFHQkgmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGMwTnpVME1qTXpPVEV3T0RBMU9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ2RtUzN1ZkdWSEZfaXg4eGstQVlSMEZ4UTJ1WWx5eW1Vb1VVVDJyNXhURncmb2U9NjdCQjVDMjUmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzA3NDc1NDIzMzkxMDgwNTgiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5ODg2Mjk5LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA0NDI3MF8xODUwNDM1MzgyNzAzMjU4NF84Nzg2MDY3MjUzOTg5OTU3NTMzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1RZ2lQdVlJMkdKZ1E3a052Z0VNUUdCSCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EYzBOelUwTWpNek9URXdPREExT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBTElMVVFndmdlU3poMkVCakhtTkwxbDcyOUM5QUNFSFBlTk5IMS1NcFNRZyZvZT02N0JCNUMyNSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDc0NzU1NzQ3MjIxODE2N18yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzA3NDc1NDIzMzkyNDE5NzQiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjk2ODU3XzE4NTA0MzUzODQ4MDMyNTg0XzYxNjQ4NDAwODExOTQyMzIyNzdfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVVvOHZXaHJDUFhrUTdrTnZnRmZ5MWpMJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNak16T1RJME1UazNOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFFaEt5bnhIc3pPZUtfRUR1MVB1RWpuaURUMUNJdXR4N3pSMWFFTFdHMUhBJm9lPTY3QkI1NjE3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA2OTY4NTdfMTg1MDQzNTM4NDgwMzI1ODRfNjE2NDg0MDA4MTE5NDIzMjI3N19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVVvOHZXaHJDUFhrUTdrTnZnRmZ5MWpMJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNak16T1RJME1UazNOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNNQTdPNUpNWWNfVVh3Vkh4RWhLdF9reHdjWUlIaGNVLUNkQlgwQTNkOTd3Jm9lPTY3QkI1NjE3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwNzQ3NTQyMzM5MjQxOTc0IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTg4NjI5OSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA2OTY4NTdfMTg1MDQzNTM4NDgwMzI1ODRfNjE2NDg0MDA4MTE5NDIzMjI3N19uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VW84dldockNQWGtRN2tOdmdGZnkxakwmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGMwTnpVME1qTXpPVEkwTVRrM05BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQUVoS3lueEhzek9lS19FRHUxUHVFam5pRFQxQ0l1dHg3elIxYUVMV0cxSEEmb2U9NjdCQjU2MTcmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzA3NDc1NTc0NzIyMTgxNjdfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwNzQ3NTQyMzIyMzI2MTY4IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA1MDMyMF8xODUwNDM1MzgzNjAzMjU4NF8zNTU1Mjk4NDM2NDc1NjM3NzUxX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz03alpGNTY3MnpJa1E3a052Z0gyd0JVRCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EYzBOelUwTWpNeU1qTXlOakUyT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCeFlyV3pWVWJtMEpLZl83WnFhdUNGRjJjRjRnVmg1TGJJUEQ4ZUNRU29zdyZvZT02N0JCNDJFMiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDUwMzIwXzE4NTA0MzUzODM2MDMyNTg0XzM1NTUyOTg0MzY0NzU2Mzc3NTFfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz03alpGNTY3MnpJa1E3a052Z0gyd0JVRCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EYzBOelUwTWpNeU1qTXlOakUyT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEVWduWjNQMzN5NnFhbEJmdDVpcXE5a3R2ejM1RFoyZHBkSU5TNkh0QkpxZyZvZT02N0JCNDJFMiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDc0NzU0MjMyMjMyNjE2OCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4ODYyOTksInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDUwMzIwXzE4NTA0MzUzODM2MDMyNTg0XzM1NTUyOTg0MzY0NzU2Mzc3NTFfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTdqWkY1NjcyeklrUTdrTnZnSDJ3QlVEJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNak15TWpNeU5qRTJPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJ4WXJXelZVYm0wSktmXzdacWF1Q0ZGMmNGNGdWaDVMYklQRDhlQ1FTb3N3Jm9lPTY3QkI0MkUyJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwNzQ3NTU3NDcyMjE4MTY3XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6dHJ1ZSwiaWQiOiIzNTcwNzQ1NzY3MDQ5Njc5ODc3IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNTk0NTc1XzE4NTA0MzUzODY5MDMyNTg0XzMzNTA5ODA4Mzg3NjQzMTQ3Mjdfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUtyeG9MQ014TG9JUTdrTnZnRmotUm5EJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME5UYzJOekEwT1RZM09UZzNOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUMzcVhIS1Q3SnVMODVFOElvOWFRejhSb3d1Vl9zQlhIY2ZTZ0p1YklOaUJ3Jm9lPTY3QkI1RjdCJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dLCJzY3J1YmJlcl9zcHJpdGVzaGVldF9pbmZvX2NhbmRpZGF0ZXMiOnsiZGVmYXVsdCI6eyJmaWxlX3NpemVfa2IiOjE3NCwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjg4Miwic3ByaXRlX3VybHMiOlsiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDAzOTk3Nl8xNTgzNTE5MDc4OTY4NjY3Xzg3ODU4OTIzODgyMjIzNDQ0MTRfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTExJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXpKeWI4SV9rNTVBUTdrTnZnSEhpZ3I2Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQkdPVEdSemVfS0szQ0VqRUR4dWQ4YUw3c0I5a2s4dV94M0w0TGEzZnYzcGcmb2U9NjdCQjQ4NTUmX25jX3NpZD0yMDExYWQiXSwic3ByaXRlX3dpZHRoIjoxNTAwLCJ0aHVtYm5haWxfZHVyYXRpb24iOjAuMDQ5NTIzODA5NTIzODA5NTI2LCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjo1LjJ9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Mywib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwNzQ1NzY3MDQ5Njc5ODc3IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTg4NjI5OSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA1OTQ1NzVfMTg1MDQzNTM4NjkwMzI1ODRfMzM1MDk4MDgzODc2NDMxNDcyN19uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9S3J4b0xDTXhMb0lRN2tOdmdGai1SbkQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRGMwTlRjMk56QTBPVFkzT1RnM053JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQzNxWEhLVDdKdUw4NUU4SW85YVF6OFJvd3VWX3NCWEhjZlNnSnViSU5pQncmb2U9NjdCQjVGN0ImX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wNE0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjo1LjIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W10sInZpZGVvX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9wMWNaNDA1ZW1BYktqb3pkTHBTLUlZc01tUzRicFV0c0FfSmFHTjVnazl1LWdDX3YybzdNZzQ4NFJmcVAwVnQ2dElIV3dJcDYyUWl1djExTTVIUlExUGg4UXFVRUdYY0YyUU9NLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPamsyTXpReE1UUXdPVEU1TWpjMU5Dd2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMyZ2cz1lYThiZGJiNmJhZDliZTAzJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlDUVRRMU1FTXpOREJCT1VNMlJrUkZORGM0TURrM1EwUTRRVGRCT0RaQ01WOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSFdYbHZlSG8wVjFOTFFrOUxhMFZCUzFSYVNFcFpjbUpUVVZkaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp1U2NpcTMyamJZREZRSW9Ba016TEJkQUZNek16TXpNelJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlEdmh2ZlllMW85blNqMFJwYzZrUjJhNTNlUDFkZzRWWTZMWEswdGVuaVJHQSZvZT02N0I3NTVEQyZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjUzMjA3OCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEyMzM5Njc3MTE2MDQzMTV2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPcDFjWjQwNWVtQWJLam96ZExwUy1JWXNNbVM0YnBVdHNBX0phR041Z2s5dS1nQ192Mm83TWc0ODRSZnFQMFZ0NnRJSFd3SXA2MlFpdXYxMU01SFJRMVBoOFFxVUVHWGNGMlFPTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2prMk16UXhNVFF3T1RFNU1qYzFOQ3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmdnM9ZWE4YmRiYjZiYWQ5YmUwMyZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5Q1FUUTFNRU16TkRCQk9VTTJSa1JGTkRjNE1EazNRMFE0UVRkQk9EWkNNVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEhXWGx2ZUhvMFYxTkxRazlMYTBWQlMxUmFTRXBaY21KVFVWZGlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdVNjaXEzMmpiWURGUUlvQWtNekxCZEFGTXpNek16TXpSZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZRHZodmZZZTFvOW5TajBScGM2a1IyYTUzZVAxZGc0Vlk2TFhLMHRlbmlSR0Emb2U9NjdCNzU1REMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjUzMjA3OCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEyMzM5Njc3MTE2MDQzMTV2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPcDFjWjQwNWVtQWJLam96ZExwUy1JWXNNbVM0YnBVdHNBX0phR041Z2s5dS1nQ192Mm83TWc0ODRSZnFQMFZ0NnRJSFd3SXA2MlFpdXYxMU01SFJRMVBoOFFxVUVHWGNGMlFPTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2prMk16UXhNVFF3T1RFNU1qYzFOQ3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmdnM9ZWE4YmRiYjZiYWQ5YmUwMyZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5Q1FUUTFNRU16TkRCQk9VTTJSa1JGTkRjNE1EazNRMFE0UVRkQk9EWkNNVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEhXWGx2ZUhvMFYxTkxRazlMYTBWQlMxUmFTRXBaY21KVFVWZGlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdVNjaXEzMmpiWURGUUlvQWtNekxCZEFGTXpNek16TXpSZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZRHZodmZZZTFvOW5TajBScGM2a1IyYTUzZVAxZGc0Vlk2TFhLMHRlbmlSR0Emb2U9NjdCNzU1REMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjUzMjA3OCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEyMzM5Njc3MTE2MDQzMTV2IiwidHlwZSI6MTAzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPcDFjWjQwNWVtQWJLam96ZExwUy1JWXNNbVM0YnBVdHNBX0phR041Z2s5dS1nQ192Mm83TWc0ODRSZnFQMFZ0NnRJSFd3SXA2MlFpdXYxMU01SFJRMVBoOFFxVUVHWGNGMlFPTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2prMk16UXhNVFF3T1RFNU1qYzFOQ3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmdnM9ZWE4YmRiYjZiYWQ5YmUwMyZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5Q1FUUTFNRU16TkRCQk9VTTJSa1JGTkRjNE1EazNRMFE0UVRkQk9EWkNNVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEhXWGx2ZUhvMFYxTkxRazlMYTBWQlMxUmFTRXBaY21KVFVWZGlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdVNjaXEzMmpiWURGUUlvQWtNekxCZEFGTXpNek16TXpSZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZRHZodmZZZTFvOW5TajBScGM2a1IyYTUzZVAxZGc0Vlk2TFhLMHRlbmlSR0Emb2U9NjdCNzU1REMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzA3NDc1NTc0NzIyMTgxNjdfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwNzQ3NTQyMjk3MjcwNDMwIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDk0NTg5OV8xODUwNDM1Mzg1NzAzMjU4NF83NDc4NDg4Njg4Mjk3MTI3NzI0X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1ZM1pyY2IybGtnTVE3a052Z0duMVJOSCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EYzBOelUwTWpJNU56STNNRFF6TUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEQl9ZeXR5eGFxX0tvblI4R1RLVXp0VDY1SkRrY1N6LWNUeEJkQ1o4ZmI2dyZvZT02N0JCNENFOSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwOTQ1ODk5XzE4NTA0MzUzODU3MDMyNTg0Xzc0Nzg0ODg2ODgyOTcxMjc3MjRfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1ZM1pyY2IybGtnTVE3a052Z0duMVJOSCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EYzBOelUwTWpJNU56STNNRFF6TUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBMzl4N1BnRDFacGNKOFR2SWo0Rkc4dnBWd2FNT1hCNVdaREZiVDJ2TGgtdyZvZT02N0JCNENFOSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDc0NzU0MjI5NzI3MDQzMCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4ODYyOTksInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwOTQ1ODk5XzE4NTA0MzUzODU3MDMyNTg0Xzc0Nzg0ODg2ODgyOTcxMjc3MjRfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVkzWnJjYjJsa2dNUTdrTnZnR24xUk5IJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNakk1TnpJM01EUXpNQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURCX1l5dHl4YXFfS29uUjhHVEtVenRUNjVKRGtjU3otY1R4QmRDWjhmYjZ3Jm9lPTY3QkI0Q0U5Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6OCwiY2Fyb3VzZWxfbWVkaWFfaWRzIjpbMzU3MDc0NzU0MjI4ODgxNDM4NSwzNTcwNzQ3NTQyMjg4OTA5MjQ2LDM1NzA3NDc1NDIyODA1NDQ5MzUsMzU3MDc0NzU0MjMzOTEwODA1OCwzNTcwNzQ3NTQyMzM5MjQxOTc0LDM1NzA3NDc1NDIzMjIzMjYxNjgsMzU3MDc0NTc2NzA0OTY3OTg3NywzNTcwNzQ3NTQyMjk3MjcwNDMwXSwiY2Fyb3VzZWxfbWVkaWFfcGVuZGluZ19wb3N0X2NvdW50IjowLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHTjFfd2h1YXczIiwiY29tbWVudF9jb3VudCI6NTgsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTg4NjA4Nzk3NDYzMCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgwNDY2NDY5MTUyNTcwNzciLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU3MDc0NzU1NzQ3MjIxODE2NyIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMTM5NTI2XzE4NTA0MzUzODAwMDMyNTg0XzQyMTI4NjAxNzgyNTUyNzMxMjVfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU45Yml5V3YtR2VnUTdrTnZnSFdSYWFKJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNakk0T0RneE5ETTROUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJHaUNDcGhQYWRWRFpER0R3eUtzSXdaZHlxd283SncxSFRvYTBwM1NTOHFBJm9lPTY3QkI0RUY5Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAxMzk1MjZfMTg1MDQzNTM4MDAwMzI1ODRfNDIxMjg2MDE3ODI1NTI3MzEyNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU45Yml5V3YtR2VnUTdrTnZnSFdSYWFKJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNakk0T0RneE5ETTROUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUN4SHEtMGtQaG5CZWJaQXZPWUZ2eUgxbVZ3MkdNa05HVmo5UnUxUFVGaTBRJm9lPTY3QkI0RUY5Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtZWRpYV9mb3JtYXQiOiJhbGJ1bSIsIm1lZGlhX25hbWUiOiJhbGJ1bSIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjgsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIwIiwiYXVkaW9fdHlwZSI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6bnVsbH0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3Blbl9jYXJvdXNlbF9zdWJtaXNzaW9uX3N0YXRlIjoiY2xvc2VkIiwib3JpZ2luYWxfaGVpZ2h0Ijo2MTIsIm9yaWdpbmFsX3dpZHRoIjo2MTIsInBrIjoiMzU3MDc0NzU1NzQ3MjIxODE2NyIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfY29udGFpbmVyIiwic2hhcmVfY291bnRfZGlzYWJsZWQiOnRydWUsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk4ODYzMDEsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMTM5NTI2XzE4NTA0MzUzODAwMDMyNTg0XzQyMTI4NjAxNzgyNTUyNzMxMjVfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU45Yml5V3YtR2VnUTdrTnZnSFdSYWFKJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURjME56VTBNakk0T0RneE5ETTROUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJHaUNDcGhQYWRWRFpER0R3eUtzSXdaZHlxd283SncxSFRvYTBwM1NTOHFBJm9lPTY3QkI0RUY5Jl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJzb3JyYWJndWkiXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwOTc3NDkwMzYzLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkRpZWdvIEFsbWVpZGEgfCBJQSB8IENoYXRHUFQiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiMjMyNjQ1ODMiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0NzUyNDI4NzQzMTMwODQ0MDQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDYyMzM3MDY1XzUyODYwOTM2NjcyNzkyNV80NzExNTM4ODE0MTQzNjM3ODgzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRkdmIxRUdMbG80UTdrTnZnSGlxRldoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUJFcElkWTN5UEdlY0IyQy16S182YjM3TjlHQzMyRk0tYllBSXZjVWY0bmcmb2U9NjdCQjQ5Q0MmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJkaWVnb2FsbWVpZGEuaWEifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX21vZGlmeV9jYXJvdXNlbCI6dHJ1ZSwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE3Mzk4MDQ3OTMsImNyZWF0ZWRfYXRfdXRjIjoxNzM5ODA0NzkzLCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNfdHJhbnNsYXRpb24iOnRydWUsImhhc2h0YWdzIjpbIiNpYSIsIiNpbnRlbGlnZW5jaWFhcnRpZmljaWFsIiwiI3RlY25vbG9naWEiLCIjYWkiLCIjY2hhdGdwdCIsIiNhaXRvb2xzIiwiI29wZW5haSIsIiNhaXRpcHMiLCIjbWFjaGluZWxlYXJuaW5nIiwiI2NoaW5hIl0sImlkIjoiMzU3MDA2MzgwODY2OTY3NDk2NSIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbIkBkaWVnb2FsbWVpZGEuaWEiXSwicGsiOiIxNzg3NDE2MjQ3MTI2ODIwNSIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IvCfmqggQSBDaGluYSBhdmFuw6dhIG5hIGNvcnJpZGEgZGEgaW50ZWxpZ8OqbmNpYSBhcnRpZmljaWFsIGNvbSBvIGxhbsOnYW1lbnRvIGRvIEtpbWkgQUksIHVtIG1vZGVsbyBncmF0dWl0byBxdWUgcml2YWxpemEgY29tIE9wZW5BSSwgRGVlcFNlZWsgZSBNZXRhLlxuXG5PIEtpbWkgQUkgMS41LCBkZXNlbnZvbHZpZG8gcGVsYSBNb29uc2hvdCBBSSwgdHJheiByZWN1cnNvcyBpbm92YWRvcmVzIHF1ZSBkZXNhZmlhbSBhdMOpIGFzIHByaW5jaXBhaXMgc29sdcOnw7VlcyBwYWdhcyBkbyBtZXJjYWRvLiBFbnRyZSBzZXVzIGRpZmVyZW5jaWFpcyBlc3TDo286XG5cbuKAoiBSYWNpb2PDrW5pbyBkZSBuw612ZWwgbzEsIHN1cGVyYW5kbyBvIERlZXBTZWVrIG5lc3NlIGFzcGVjdG9cblxu4oCiIEphbmVsYSBkZSBjb250ZXh0byBkZSAyMDAuMDAwIGNhcmFjdGVyZXMsIHBlcm1pdGluZG8gYW7DoWxpc2VzIGV4dGVuc2FzXG5cbuKAoiBDYXBhY2lkYWRlIG11bHRpbW9kYWwgcGFyYSBpbnRlZ3Jhw6fDo28gZGUgdGV4dG8sIGltYWdlbnMgZSBjw7NkaWdvXG5cbuKAoiBTdXBvcnRlIHBhcmEgNTAgYXJxdWl2b3Mgc2ltdWx0w6JuZW9zLCBmYWNpbGl0YW5kbyBhIG9yZ2FuaXphw6fDo28gZSBwcm9kdXRpdmlkYWRlXG5cbuKAoiBCdXNjYSBlbSB0ZW1wbyByZWFsIGVtIG1haXMgZGUgMS4wMDAgcMOhZ2luYXMgZGEgd2ViXG5cbkFsw6ltIGRlIHNlIGRlc3RhY2FyIGVtIHJhY2lvY8OtbmlvLCBvIEtpbWkgQUkgdGFtYsOpbSBhcHJlc2VudGEgYWx0byBkZXNlbXBlbmhvIGVtIHByb2dyYW1hw6fDo28sIGZpY2FuZG8gbm8gcGVyY2VudGlsIDk0IG5vIENvZGVmb3JjZXMsIHVtYSBkYXMgcHJpbmNpcGFpcyBwbGF0YWZvcm1hcyBkZSBjb2RpZmljYcOnw6NvIGNvbXBldGl0aXZhLiBUYW1iw6ltIG9idGV2ZSByZXN1bHRhZG9zIHN1cGVyaW9yZXMgbm8gYmVuY2htYXJrIE1hdGhWaXN0YSwgcHJpbmNpcGFsbWVudGUgZW0gdGFyZWZhcyBxdWUgY29tYmluYW0gdmlzw6NvIGUgbGluZ3VhZ2VtLlxuXG5PIHByb2pldG8gw6kgbGlkZXJhZG8gcG9yIFpoaWxpbiBZYW5nLCBQaEQgZGEgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkgZSBlc3BlY2lhbGlzdGEgZW0gYXByZW5kaXphZG8gZGUgbcOhcXVpbmEsIGp1bnRvIGNvbSB1bWEgZXF1aXBlIGRlIGVsaXRlIGRhIENoaW5hLlxuXG5FIHZvY8OqIG8gcXVlIGFjaGEgc29icmUgaXNzbz8g8J+klPCfkqwgXG5cbvCflJcgaHR0cHM6Ly9raW1pLmFpXG5cbvCfkYnwn4+7U2lnYSBAZGllZ29hbG1laWRhLmlhIHBhcmEgbWFpcyBub3ZpZGFkZXMgc29icmVcbklBLCBDaGF0R1BUIGUgVGVjbm9sb2dpYSFcblxuI2lhICNpbnRlbGlnZW5jaWFhcnRpZmljaWFsICN0ZWNub2xvZ2lhICNhaSAjY2hhdGdwdFxuI2FpdG9vbHMgI29wZW5haSAjYWl0aXBzICNtYWNoaW5lbGVhcm5pbmcgI2NoaW5hIiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQwMDk3NzQ5MDM2MywiZnVsbF9uYW1lIjoiRGllZ28gQWxtZWlkYSB8IElBIHwgQ2hhdEdQVCIsImlkIjoiMjMyNjQ1ODMiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzNDc1MjQyODc0MzEzMDg0NDA0IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ2MjMzNzA2NV81Mjg2MDkzNjY3Mjc5MjVfNDcxMTUzODgxNDE0MzYzNzg4M19uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1UZHZiMUVHTGxvNFE3a052Z0hpcUZXaCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFCRXBJZFkzeVBHZWNCMkMtektfNmIzN045R0MzMkZNLWJZQUl2Y1VmNG5nJm9lPTY3QkI0OUNDJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJkaWVnb2FsbWVpZGEuaWEifSwidXNlcl9pZCI6IjIzMjY0NTgzIn0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2Fyb3VzZWxfbWVkaWEiOlt7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwNjM4MDg2Njk2NzQ5NjVfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwMDYzODAwMDA0MjQwNzgyIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTk2NzYxMF8xODUwNDE3NzkxMDAzMjU4NF8xMTM1Mzc3MDcxODE2MjExNDI4X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1CU0tfdWpVc2w5a1E3a052Z0djTlpMVyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTJNemd3TURBd05ESTBNRGM0TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBMkhua2x0eDNPb0ZGQzNMR0dmUEZjaUx1Wnc0S05ja183anV2b281a1AwZyZvZT02N0JCNjgwOCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTY3NjEwXzE4NTA0MTc3OTEwMDMyNTg0XzExMzUzNzcwNzE4MTYyMTE0Mjhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1CU0tfdWpVc2w5a1E3a052Z0djTlpMVyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTJNemd3TURBd05ESTBNRGM0TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBNWx4Yno4akxqRlZVSDdLV2ZhaEUzVE9lLVZDaVBIT0JHeHJkWEM2Q01xUSZvZT02N0JCNjgwOCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDA2MzgwMDAwNDI0MDc4MiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4MDQ3OTEsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTY3NjEwXzE4NTA0MTc3OTEwMDMyNTg0XzExMzUzNzcwNzE4MTYyMTE0Mjhfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUJTS191alVzbDlrUTdrTnZnR2NOWkxXJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBMk16Z3dNREF3TkRJME1EYzRNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUEySG5rbHR4M09vRkZDM0xHR2ZQRmNpTHVadzRLTmNrXzdqdXZvbzVrUDBnJm9lPTY3QkI2ODA4Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwMDYzODA4NjY5Njc0OTY1XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDA2Mzc5OTkxMTczMDU0MSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwNzU4MDJfMTg1MDQxNzc5MTkwMzI1ODRfMzk3MTY4MjM1NjgwOTU0NjM1M19uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MXdvRjNpcjVXNmtRN2tOdmdGQUtFeFUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpjNU9Ua3hNVGN6TURVME1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQXhWY2Z6WjV3M3p4RjFnRzJncVJ1c2J2ajNJQ2NVWnpPbi1sMjZ2eFRMVUEmb2U9NjdCQjYyMDQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA3NTgwMl8xODUwNDE3NzkxOTAzMjU4NF8zOTcxNjgyMzU2ODA5NTQ2MzUzX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MXdvRjNpcjVXNmtRN2tOdmdGQUtFeFUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpjNU9Ua3hNVGN6TURVME1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQmRUNGsyY0NKZlh2UVZBU1A5YWlKbzVaSjZFZjVUYUl6WFdRYVVzQUhpcUEmb2U9NjdCQjYyMDQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzAwNjM3OTk5MTE3MzA1NDEiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5ODA0NzkxLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA3NTgwMl8xODUwNDE3NzkxOTAzMjU4NF8zOTcxNjgyMzU2ODA5NTQ2MzUzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0xd29GM2lyNVc2a1E3a052Z0ZBS0V4VSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTJNemM1T1RreE1UY3pNRFUwTVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBeFZjZnpaNXczenhGMWdHMmdxUnVzYnZqM0lDY1Vaek9uLWwyNnZ4VExVQSZvZT02N0JCNjIwNCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDA2MzgwODY2OTY3NDk2NV8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOnRydWUsImlkIjoiMzU3MDA2MDY3NjY5ODc4MzYxMSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDQ0MDg4NV8xODUwNDE3Nzk4ODAzMjU4NF82MTk0MDc1MzY4MDQ3OTQ1MTUyX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1FcndJZFl6eUZRMFE3a052Z0ZlZUNMUiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTJNRFkzTmpZNU9EYzRNell4TVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEbDQwdV92bzVuY21fWEdHN2E4UGdQc25lMWpVWnY5WTlPUnNhX3JVUkhZZyZvZT02N0JCNDAxRCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoxNjYsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAyNjkwMTZfOTkyNzg4NDIzNzI0MDAxNl85MTgyNzM4OTE3NDI2MjQzOTA1X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0xWHBFMWFCNmdwSVE3a052Z0d1RXRsSiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUR1TnRpMGl4V3E4a1ZyUHpyUFpqc2dDTk5HZkVIT3hrRV9nSGJnbXI1UG1BJm9lPTY3QkIzRkYyJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjMyODI0NzYxOTA0NzYxOTA3LCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjozNC40NjZ9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Mywib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMDYwNjc2Njk4NzgzNjExIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTgwNDc5MSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA0NDA4ODVfMTg1MDQxNzc5ODgwMzI1ODRfNjE5NDA3NTM2ODA0Nzk0NTE1Ml9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9RXJ3SWRZenlGUTBRN2tOdmdGZWVDTFImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTURZM05qWTVPRGM0TXpZeE1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRGw0MHVfdm81bmNtX1hHRzdhOFBnUHNuZTFqVVp2OVk5T1JzYV9yVVJIWWcmb2U9NjdCQjQwMUQmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6InZwMDkuMDAuMzEuMDguMDAuMDEuMDEuMDEuMDAiLCJ2aWRlb19kdXJhdGlvbiI6MzQuNDY2LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPZlV4QS1wSFZ1VkJwcWpTRUtoSmVQOGNjU0REYUhqbmpwZDR0Q094b3czV1VUalBzOG9LWDV6OWVoLW9WU1JQd1R5X3RpTWNmRWZfZ0VYQTNxMW42cGpwcUlRRjRsajFjM0tCZy5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFME1USXlNemt5TlRZME1EWXpNRFFzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2JnZzPTk3Zjk1NGZhZTRhMTcyNzEmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODRRalE0TjBaRU1URXlNRFkyTUVGRU5rUXhSVGt5TkRSRU1UaENOa0U0Umw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRRU21GdWVIbERhbFJTZWpWS01FZEJUbFJSY0ROd1R6QXRRVkJpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnNDa3VyT1NtNElGRlFJb0FrTXpMQmRBUVR1bDQxUDN6eGdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUIwNk1OUnd5NVNaRE50UVZTSkRUUzR0dmQ3NXJwc3RycE00YmQyMEtmWDZRJm9lPTY3Qjc0MTM3Jl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6MjkzMjU1LCJoZWlnaHQiOjEzNTAsImlkIjoiOTM3MTc0Nzg1Mjk0NTIxNnYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9mVXhBLXBIVnVWQnBxalNFS2hKZVA4Y2NTRERhSGpuanBkNHRDT3hvdzNXVVRqUHM4b0tYNXo5ZWgtb1ZTUlB3VHlfdGlNY2ZFZl9nRVhBM3ExbjZwanBxSVFGNGxqMWMzS0JnLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUwTVRJeU16a3lOVFkwTURZek1EUXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9OTdmOTU0ZmFlNGExNzI3MSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4NFFqUTROMFpFTVRFeU1EWTJNRUZFTmtReFJUa3lORFJFTVRoQ05rRTRSbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZFFTbUZ1ZUhsRGFsUlNlalZLTUVkQlRsUlJjRE53VHpBdFFWQmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKc0NrdXJPU200SUZGUUlvQWtNekxCZEFRVHVsNDFQM3p4Z1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQjA2TU5Sd3k1U1pETnRRVlNKRFRTNHR2ZDc1cnBzdHJwTTRiZDIwS2ZYNlEmb2U9NjdCNzQxMzcmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjI5MzI1NSwiaGVpZ2h0IjoxMzUwLCJpZCI6IjkzNzE3NDc4NTI5NDUyMTZ2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPZlV4QS1wSFZ1VkJwcWpTRUtoSmVQOGNjU0REYUhqbmpwZDR0Q094b3czV1VUalBzOG9LWDV6OWVoLW9WU1JQd1R5X3RpTWNmRWZfZ0VYQTNxMW42cGpwcUlRRjRsajFjM0tCZy5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFME1USXlNemt5TlRZME1EWXpNRFFzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2JnZzPTk3Zjk1NGZhZTRhMTcyNzEmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODRRalE0TjBaRU1URXlNRFkyTUVGRU5rUXhSVGt5TkRSRU1UaENOa0U0Umw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRRU21GdWVIbERhbFJTZWpWS01FZEJUbFJSY0ROd1R6QXRRVkJpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnNDa3VyT1NtNElGRlFJb0FrTXpMQmRBUVR1bDQxUDN6eGdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUIwNk1OUnd5NVNaRE50UVZTSkRUUzR0dmQ3NXJwc3RycE00YmQyMEtmWDZRJm9lPTY3Qjc0MTM3Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoyOTMyNTUsImhlaWdodCI6MTM1MCwiaWQiOiI5MzcxNzQ3ODUyOTQ1MjE2diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT2ZVeEEtcEhWdVZCcHFqU0VLaEplUDhjY1NERGFIam5qcGQ0dENPeG93M1dVVGpQczhvS1g1ejllaC1vVlNSUHdUeV90aU1jZkVmX2dFWEEzcTFuNnBqcHFJUUY0bGoxYzNLQmcubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRTBNVEl5TXpreU5UWTBNRFl6TURRc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz05N2Y5NTRmYWU0YTE3MjcxJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzg0UWpRNE4wWkVNVEV5TURZMk1FRkVOa1F4UlRreU5EUkVNVGhDTmtFNFJsOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkUVNtRnVlSGxEYWxSU2VqVktNRWRCVGxSUmNETndUekF0UVZCaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpzQ2t1ck9TbTRJRkZRSW9Ba016TEJkQVFUdWw0MVAzenhnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlCMDZNTlJ3eTVTWkROdFFWU0pEVFM0dHZkNzVycHN0cnBNNGJkMjBLZlg2USZvZT02N0I3NDEzNyZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDA2MzgwODY2OTY3NDk2NV8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzAwNjM3OTk5NzA2NDc0NzUiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDgxMTIyXzE4NTA0MTc3OTMxMDMyNTg0Xzc1MDYwOTI3ODUwNDQ3Nzc3Mjhfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTl0NjdwVURwYTdZUTdrTnZnR21UTjg1Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBMk16YzVPVGszTURZME56UTNOUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJJUFNhOU1QY1lYOE92amQtUHo5a1Q0eGV0UjQxc1RvQldxSmgxVHZMQ0lnJm9lPTY3QkIzMDM2Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwODExMjJfMTg1MDQxNzc5MzEwMzI1ODRfNzUwNjA5Mjc4NTA0NDc3NzcyOF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTl0NjdwVURwYTdZUTdrTnZnR21UTjg1Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBMk16YzVPVGszTURZME56UTNOUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFuX2ZtYjlTT2tLNXpDaHRrY3FFa2RLMmNra3MtYS11X053a204czdUQmp3Jm9lPTY3QkIzMDM2Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMDYzNzk5OTcwNjQ3NDc1IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTgwNDc5MSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwODExMjJfMTg1MDQxNzc5MzEwMzI1ODRfNzUwNjA5Mjc4NTA0NDc3NzcyOF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OXQ2N3BVRHBhN1lRN2tOdmdHbVROODUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpjNU9UazNNRFkwTnpRM05RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQklQU2E5TVBjWVg4T3ZqZC1QejlrVDR4ZXRSNDFzVG9CV3FKaDFUdkxDSWcmb2U9NjdCQjMwMzYmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwNjM4MDg2Njk2NzQ5NjVfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaGFzX2F1ZGlvIjp0cnVlLCJpZCI6IjM1NzAwNjA2NzgwMTU5MTUzNzMiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA0MjE2NDBfMTg1MDQxNzc5OTcwMzI1ODRfMTc3NTAwMzI0Mjk5ODEzMzM0N19uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UmN1TzdCNmRWa3NRN2tOdmdIdHdpN2EmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTURZM09EQXhOVGt4TlRNM013JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDE4aTlXSFhPTngtM0kwTVRTNG15ZVhXS09yVEZrUjVMQldvb2VQQVA0T3cmb2U9NjdCQjUzNkEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6MTQ0LCJtYXhfdGh1bWJuYWlsc19wZXJfc3ByaXRlIjoxMDUsInJlbmRlcmVkX3dpZHRoIjo5Niwic3ByaXRlX2hlaWdodCI6ODgyLCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNzkzMjY1XzYxMTY0NDA0NDk1Njk1OF81NzM0NzAxMzUwMzUwMjc5MzQ4X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0xQnlGaXBMSDY1SVE3a052Z0UtT2RDNyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUN3M3NLY3Q4RE5uZ3JoQk56eDYxV29IQnktZ1lJSnNfeFpTMUc2bU8zQ3JBJm9lPTY3QkI1MkE5Jl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjE1Mzk2MTkwNDc2MTkwNDc3LCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjoxNi4xNjZ9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Mywib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMDYwNjc4MDE1OTE1MzczIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTgwNDc5MSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA0MjE2NDBfMTg1MDQxNzc5OTcwMzI1ODRfMTc3NTAwMzI0Mjk5ODEzMzM0N19uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UmN1TzdCNmRWa3NRN2tOdmdIdHdpN2EmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTURZM09EQXhOVGt4TlRNM013JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDE4aTlXSFhPTngtM0kwTVRTNG15ZVhXS09yVEZrUjVMQldvb2VQQVA0T3cmb2U9NjdCQjUzNkEmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6InZwMDkuMDAuMzEuMDguMDAuMDEuMDEuMDEuMDAiLCJ2aWRlb19kdXJhdGlvbiI6MTYuMTY2LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPY08tWnhoRzNFTjBkdkJpdmNyOTl4SHBTUEd5U2dGSXJUT2ItU2tzOC05SmFIdlRXUlU2ZjBRRUtWQzI0bEdFZHdMNWtVM1ljbmtjVEdpNU4yQXhmSFNqWGdWVlhvWGhLRk9NSS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFd01EazVORFEyTlRjM01EYzRORGtzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPThjZjNhOTlkNGRlOTU4NzcmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODFNVFJFTjBGQlFUbEJSVFl4UXpZMU1FRXdOak0xTjBGR1FqRXdNVVk1UVY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRCY0VWdmFIaFhTbU5EYVVwdVFVUkJRWHBvV0RONE0xSnZlRXBpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnBLTmhvbkNvc3NERlFJb0FrTXpMQmRBTUNwLS1kc2kwUmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUFXOWhma19EU3p4ekVnbnRVUVQ3T1pDRmdjY2Z6UHp3VUJZdlZCeGk3cEx3Jm9lPTY3Qjc2MDJBJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6MzMxODIwLCJoZWlnaHQiOjEzNTAsImlkIjoiMzYxMDcyMDIxNTg5NjI0NXYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9jTy1aeGhHM0VOMGR2Qml2Y3I5OXhIcFNQR3lTZ0ZJclRPYi1Ta3M4LTlKYUh2VFdSVTZmMFFFS1ZDMjRsR0Vkd0w1a1UzWWNua2NUR2k1TjJBeGZIU2pYZ1ZWWG9YaEtGT01JLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV3TURrNU5EUTJOVGMzTURjNE5Ea3NJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9OGNmM2E5OWQ0ZGU5NTg3NyZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4MU1UUkVOMEZCUVRsQlJUWXhRelkxTUVFd05qTTFOMEZHUWpFd01VWTVRVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEJjRVZ2YUhoWFNtTkRhVXB1UVVSQlFYcG9XRE40TTFKdmVFcGlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcEtOaG9uQ29zc0RGUUlvQWtNekxCZEFNQ3AtLWRzaTBSZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQVc5aGZrX0RTenh6RWdudFVRVDdPWkNGZ2NjZnpQendVQll2VkJ4aTdwTHcmb2U9NjdCNzYwMkEmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjMzMTgyMCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjM2MTA3MjAyMTU4OTYyNDV2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPY08tWnhoRzNFTjBkdkJpdmNyOTl4SHBTUEd5U2dGSXJUT2ItU2tzOC05SmFIdlRXUlU2ZjBRRUtWQzI0bEdFZHdMNWtVM1ljbmtjVEdpNU4yQXhmSFNqWGdWVlhvWGhLRk9NSS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFd01EazVORFEyTlRjM01EYzRORGtzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPThjZjNhOTlkNGRlOTU4NzcmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODFNVFJFTjBGQlFUbEJSVFl4UXpZMU1FRXdOak0xTjBGR1FqRXdNVVk1UVY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRCY0VWdmFIaFhTbU5EYVVwdVFVUkJRWHBvV0RONE0xSnZlRXBpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnBLTmhvbkNvc3NERlFJb0FrTXpMQmRBTUNwLS1kc2kwUmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUFXOWhma19EU3p4ekVnbnRVUVQ3T1pDRmdjY2Z6UHp3VUJZdlZCeGk3cEx3Jm9lPTY3Qjc2MDJBJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjozMzE4MjAsImhlaWdodCI6MTM1MCwiaWQiOiIzNjEwNzIwMjE1ODk2MjQ1diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT2NPLVp4aEczRU4wZHZCaXZjcjk5eEhwU1BHeVNnRklyVE9iLVNrczgtOUphSHZUV1JVNmYwUUVLVkMyNGxHRWR3TDVrVTNZY25rY1RHaTVOMkF4ZkhTalhnVlZYb1hoS0ZPTUkubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXdNRGs1TkRRMk5UYzNNRGM0TkRrc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz04Y2YzYTk5ZDRkZTk1ODc3Jl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgxTVRSRU4wRkJRVGxCUlRZeFF6WTFNRUV3TmpNMU4wRkdRakV3TVVZNVFWOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkQmNFVnZhSGhYU21ORGFVcHVRVVJCUVhwb1dETjRNMUp2ZUVwaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpwS05ob25Db3NzREZRSW9Ba016TEJkQU1DcC0tZHNpMFJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlBVzloZmtfRFN6eHpFZ250VVFUN09aQ0ZnY2NmelB6d1VCWXZWQnhpN3BMdyZvZT02N0I3NjAyQSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDA2MzgwODY2OTY3NDk2NV8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzAwNjM3OTk5OTU2MDIyOTIiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMTIxNjYwXzE4NTA0MTc3OTQwMDMyNTg0XzgxMDM3OTMwOTQ1NDQ0NDYwM19uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TlFqYWFFZ2RIWjBRN2tOdmdGSHNwc3YmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpjNU9UazVOVFl3TWpJNU1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQVhrUkY4WjliTFJTREhlZmpULXUwZGcwSTlFRnd0eHNoQTVreWNIMWh6OVEmb2U9NjdCQjQ3NDQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDEyMTY2MF8xODUwNDE3Nzk0MDAzMjU4NF84MTAzNzkzMDk0NTQ0NDQ2MDNfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1OUWphYUVnZEhaMFE3a052Z0ZIc3BzdiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTJNemM1T1RrNU5UWXdNakk1TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCdUFZN1JxZUFXclAxR3J1czFEOWhOWDkzMkpRMVFULUJsb2s4QThzRVRBQSZvZT02N0JCNDc0NCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDA2Mzc5OTk5NTYwMjI5MiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4MDQ3OTEsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMTIxNjYwXzE4NTA0MTc3OTQwMDMyNTg0XzgxMDM3OTMwOTQ1NDQ0NDYwM19uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TlFqYWFFZ2RIWjBRN2tOdmdGSHNwc3YmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpjNU9UazVOVFl3TWpJNU1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQVhrUkY4WjliTFJTREhlZmpULXUwZGcwSTlFRnd0eHNoQTVreWNIMWh6OVEmb2U9NjdCQjQ3NDQmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAwNjM4MDg2Njk2NzQ5NjVfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwMDYzODAwMTI5OTA5NTAwIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTk3OTg0MF8xODUwNDE3Nzk0OTAzMjU4NF81MTk3MDc1Mjc1NzM0NDE1MTQzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1mWENBSjAwcWUxY1E3a052Z0V6ajRWMSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTJNemd3TURFeU9Ua3dPVFV3TUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDLVVkQUEyM0pPdGQ2VzBadFpydDZwUVdDRVdZRnBPTHpsdklGbC1mSEVwQSZvZT02N0JCNTdFNCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTc5ODQwXzE4NTA0MTc3OTQ5MDMyNTg0XzUxOTcwNzUyNzU3MzQ0MTUxNDNfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1mWENBSjAwcWUxY1E3a052Z0V6ajRWMSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTJNemd3TURFeU9Ua3dPVFV3TUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEaFpTeFVFbVFGU01mdzhkZmtUeG9mME5oRjVzTXZxTzdIOGpvcDZrZFRNQSZvZT02N0JCNTdFNCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDA2MzgwMDEyOTkwOTUwMCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4MDQ3OTEsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTc5ODQwXzE4NTA0MTc3OTQ5MDMyNTg0XzUxOTcwNzUyNzU3MzQ0MTUxNDNfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWZYQ0FKMDBxZTFjUTdrTnZnRXpqNFYxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBMk16Z3dNREV5T1Rrd09UVXdNQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUMtVWRBQTIzSk90ZDZXMFp0WnJ0NnBRV0NFV1lGcE9Memx2SUZsLWZIRXBBJm9lPTY3QkI1N0U0Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwMDYzODA4NjY5Njc0OTY1XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDA2Mzc5OTk3MDU3NjY4MiIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwNTcyNzBfMTg1MDQxNzc5NTgwMzI1ODRfMTAwMDUyOTk4MjU2MTE5NzY1OV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TGFCMGFIaE5FS1VRN2tOdmdHVkhDZksmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpjNU9UazNNRFUzTmpZNE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQVozNWpMbW1QTUV2bkhTYjJhQlExck5pUlNFaXgyRktzVVNlRWxnRXR2VkEmb2U9NjdCQjM0NjgmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA1NzI3MF8xODUwNDE3Nzk1ODAzMjU4NF8xMDAwNTI5OTgyNTYxMTk3NjU5X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TGFCMGFIaE5FS1VRN2tOdmdHVkhDZksmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpjNU9UazNNRFUzTmpZNE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRGllMF9ZQUU0UGI0MVlGMXh4Sk1IRzJOYkVYbzVTZk1aaE5VOVdPUVI0eUEmb2U9NjdCQjM0NjgmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzAwNjM3OTk5NzA1NzY2ODIiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5ODA0NzkxLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDA1NzI3MF8xODUwNDE3Nzk1ODAzMjU4NF8xMDAwNTI5OTgyNTYxMTk3NjU5X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1MYUIwYUhoTkVLVVE3a052Z0dWSENmSyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTJNemM1T1RrM01EVTNOalk0TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBWjM1akxtbVBNRXZuSFNiMmFCUTFyTmlSU0VpeDJGS3NVU2VFbGdFdHZWQSZvZT02N0JCMzQ2OCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119XSwiY2Fyb3VzZWxfbWVkaWFfY291bnQiOjgsImNhcm91c2VsX21lZGlhX2lkcyI6WzM1NzAwNjM4MDAwMDQyNDA3ODIsMzU3MDA2Mzc5OTkxMTczMDU0MSwzNTcwMDYwNjc2Njk4NzgzNjExLDM1NzAwNjM3OTk5NzA2NDc0NzUsMzU3MDA2MDY3ODAxNTkxNTM3MywzNTcwMDYzNzk5OTk1NjAyMjkyLDM1NzAwNjM4MDAxMjk5MDk1MDAsMzU3MDA2Mzc5OTk3MDU3NjY4Ml0sImNhcm91c2VsX21lZGlhX3BlbmRpbmdfcG9zdF9jb3VudCI6MCwiY2xpcHNfdGFiX3Bpbm5lZF91c2VyX2lkcyI6W10sImNvYXV0aG9yX3Byb2R1Y2VyX2Nhbl9zZWVfb3JnYW5pY19pbnNpZ2h0cyI6ZmFsc2UsImNvYXV0aG9yX3Byb2R1Y2VycyI6W10sImNvZGUiOiJER0xhaDUxTy0zViIsImNvbW1lbnRfY291bnQiOjExNywiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5ODA0NDE4MjU0NjUwLCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxNzg3NDE2MjQ2NTI2ODIwNSIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTcwMDYzODA4NjY5Njc0OTY1IiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk5Njc2MTBfMTg1MDQxNzc5MTAwMzI1ODRfMTEzNTM3NzA3MTgxNjIxMTQyOF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9QlNLX3VqVXNsOWtRN2tOdmdHY05aTFcmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpnd01EQXdOREkwTURjNE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQTJIbmtsdHgzT29GRkMzTEdHZlBGY2lMdVp3NEtOY2tfN2p1dm9vNWtQMGcmb2U9NjdCQjY4MDgmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTk2NzYxMF8xODUwNDE3NzkxMDAzMjU4NF8xMTM1Mzc3MDcxODE2MjExNDI4X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9QlNLX3VqVXNsOWtRN2tOdmdHY05aTFcmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREEyTXpnd01EQXdOREkwTURjNE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQTVseGJ6OGpMakZWVUg3S1dmYWhFM1RPZS1WQ2lQSE9CR3hyZFhDNkNNcVEmb2U9NjdCQjY4MDgmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoicGVuZGluZyIsImludml0ZWRfY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOnRydWUsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOmZhbHNlLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfc29jaWFsX3VmaV9kaXNhYmxlZCI6ZmFsc2UsImlzX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fdmlld2VyX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOnRydWUsImxpa2VfY291bnQiOjMsIm1lZGlhX2Zvcm1hdCI6ImFsYnVtIiwibWVkaWFfbmFtZSI6ImFsYnVtIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6OCwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjAiLCJhdWRpb190eXBlIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpudWxsfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcGVuX2Nhcm91c2VsX3N1Ym1pc3Npb25fc3RhdGUiOiJjbG9zZWQiLCJvcmlnaW5hbF9oZWlnaHQiOjYxMiwib3JpZ2luYWxfd2lkdGgiOjYxMiwicGsiOiIzNTcwMDYzODA4NjY5Njc0OTY1IiwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9jb250YWluZXIiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk4MDQ3OTIsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTY3NjEwXzE4NTA0MTc3OTEwMDMyNTg0XzExMzUzNzcwNzE4MTYyMTE0Mjhfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUJTS191alVzbDlrUTdrTnZnR2NOWkxXJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBMk16Z3dNREF3TkRJME1EYzRNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUEySG5rbHR4M09vRkZDM0xHR2ZQRmNpTHVadzRLTmNrXzdqdXZvbzVrUDBnJm9lPTY3QkI2ODA4Jl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJsdWxvcGVzbHUiXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwOTc3NDkwMzYzLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkRpZWdvIEFsbWVpZGEgfCBJQSB8IENoYXRHUFQiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiMjMyNjQ1ODMiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0NzUyNDI4NzQzMTMwODQ0MDQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDYyMzM3MDY1XzUyODYwOTM2NjcyNzkyNV80NzExNTM4ODE0MTQzNjM3ODgzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRkdmIxRUdMbG80UTdrTnZnSGlxRldoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUJFcElkWTN5UEdlY0IyQy16S182YjM3TjlHQzMyRk0tYllBSXZjVWY0bmcmb2U9NjdCQjQ5Q0MmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJkaWVnb2FsbWVpZGEuaWEifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX21vZGlmeV9jYXJvdXNlbCI6dHJ1ZSwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE3Mzk4Nzk0MDQsImNyZWF0ZWRfYXRfdXRjIjoxNzM5ODc5NDA0LCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNfdHJhbnNsYXRpb24iOnRydWUsImhhc2h0YWdzIjpbIiNpYSIsIiNpbnRlbGlnZW5jaWFhcnRpZmljaWFsIiwiI3RlY25vbG9naWEiLCIjYWkiLCIjY2hhdGdwdCIsIiNhaXRvb2xzIiwiI29wZW5haSIsIiNhaXRpcHMiLCIjbWFjaGluZWxlYXJuaW5nIiwiI21pY3Jvc29mdCJdLCJpZCI6IjM1NzA2ODk3NTEzODE4NjY3NzQiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6WyJAZGllZ29hbG1laWRhLmlhIl0sInBrIjoiMTgwMjE1NTA0MDM0MjMzOTMiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiLwn5qAIE1pY3Jvc29mdCBsYW7Dp2EgbyBPbW5pUGFyc2VyIFYyIOKAkyBJQSBxdWUgcG9kZSBvcGVyYXIgc2V1IGNvbXB1dGFkb3IhXG5cbkEgTWljcm9zb2Z0IGFjYWJhIGRlIGFwcmVzZW50YXIgbyBPbW5pUGFyc2VyIFYyLCB1bWEgZmVycmFtZW50YSBvcGVuLXNvdXJjZSBxdWUgdHJhbnNmb3JtYSBxdWFscXVlciBMTE0gZW0gdW0gYWdlbnRlIGNhcGF6IGRlIHZlciBzdWEgdGVsYSwgcmVjb25oZWNlciBib3TDtWVzIGUgZXhlY3V0YXIgYcOnw7VlcyBjb21vIHVtIHVzdcOhcmlvIHJlYWwuXG5cbkFnb3JhLCBHUFQtNG8sIERlZXBTZWVrIFIxLCBTb25uZXQgMy41IGUgb3V0cm9zIG1vZGVsb3MgcG9kZW0gYXV0b21hdGl6YXIgdGFyZWZhcywgbmF2ZWdhciBwb3Igc29mdHdhcmVzIGUgaW50ZXJhZ2lyIGNvbSBpbnRlcmZhY2VzLCBzZW0gbmVjZXNzaWRhZGUgZGUgY29tYW5kb3MgbWFudWFpcy5cblxuRSBvIG1lbGhvcj8gVG90YWxtZW50ZSBncmF0dWl0byBlIGRlIGPDs2RpZ28gYWJlcnRvIVxuXG5PIHF1ZSB2b2PDqiBhY2hhIHNvYnJlIGlzc28/IPCfpJTwn5KsIFxuXG7wn5SXIGh0dHBzOi8vaHVnZ2luZ2ZhY2UuY28vbWljcm9zb2Z0L09tbmlQYXJzZXItdjIuMFxuXG7wn5GJ8J+Pu1NpZ2EgQGRpZWdvYWxtZWlkYS5pYSBwYXJhIG1haXMgbm92aWRhZGVzIHNvYnJlXG5JQSwgQ2hhdEdQVCBlIFRlY25vbG9naWEhXG5cbiNpYSAjaW50ZWxpZ2VuY2lhYXJ0aWZpY2lhbCAjdGVjbm9sb2dpYSAjYWkgI2NoYXRncHRcbiNhaXRvb2xzICNvcGVuYWkgI2FpdGlwcyAjbWFjaGluZWxlYXJuaW5nICNtaWNyb3NvZnQiLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwOTc3NDkwMzYzLCJmdWxsX25hbWUiOiJEaWVnbyBBbG1laWRhIHwgSUEgfCBDaGF0R1BUIiwiaWQiOiIyMzI2NDU4MyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0NzUyNDI4NzQzMTMwODQ0MDQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDYyMzM3MDY1XzUyODYwOTM2NjcyNzkyNV80NzExNTM4ODE0MTQzNjM3ODgzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRkdmIxRUdMbG80UTdrTnZnSGlxRldoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUJFcElkWTN5UEdlY0IyQy16S182YjM3TjlHQzMyRk0tYllBSXZjVWY0bmcmb2U9NjdCQjQ5Q0MmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ1c2VyX2lkIjoiMjMyNjQ1ODMifSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjYXJvdXNlbF9tZWRpYSI6W3siY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDY4OTc1MTM4MTg2Njc3NF8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzAxNzM4MTM1NjE1NTk3MTIiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDE5MTQwXzE4NTA0MjE1MjcyMDMyNTg0XzM2MTc3NDMzNzAxOTc3Mzk4MjRfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWZ3YUJWSXdzOTVRUTdrTnZnR1ZZMzd6Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFM016Z3hNelUyTVRVMU9UY3hNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFDWTB5U0N3RGFOY2hVNnY4bm1YdW13TzBqdUdrdnZycHZiVHllVkFodjJRJm9lPTY3QkI0OTcxJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwMTkxNDBfMTg1MDQyMTUyNzIwMzI1ODRfMzYxNzc0MzM3MDE5NzczOTgyNF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWZ3YUJWSXdzOTVRUTdrTnZnR1ZZMzd6Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFM016Z3hNelUyTVRVMU9UY3hNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJ3NnVFSVhPcXNMQURsT041el9xbXVEdGZIVWZJVG9hRHNBN0w1R0ItMkpRJm9lPTY3QkI0OTcxJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMTczODEzNTYxNTU5NzEyIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTg3OTQwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwMTkxNDBfMTg1MDQyMTUyNzIwMzI1ODRfMzYxNzc0MzM3MDE5NzczOTgyNF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9ZndhQlZJd3M5NVFRN2tOdmdHVlkzN3omX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREUzTXpneE16VTJNVFUxT1RjeE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQUNZMHlTQ3dEYU5jaFU2djhubVh1bXdPMGp1R2t2dnJwdmJUeWVWQWh2MlEmb2U9NjdCQjQ5NzEmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzA2ODk3NTEzODE4NjY3NzRfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaGFzX2F1ZGlvIjpmYWxzZSwiaWQiOiIzNTcwMTczODEzMzQzNjQ3MzU3IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDE2NjMzXzE4NTA0MjE1MzA1MDMyNTg0XzY4ODkyODEyMzUxNjY5ODE5NTNfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUJFcTJTRW8yVm1vUTdrTnZnRmE4TTJnJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFM016Z3hNek0wTXpZME56TTFOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNFS0JwY2NUbDVSNzA4ODVUcjJHSnRCeTZvVktKaGdSX1BVelNIT21XXzB3Jm9lPTY3QkI2NzY3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzAxNzM4MTMzNDM2NDczNTciLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5ODc5NDAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDAxNjYzM18xODUwNDIxNTMwNTAzMjU4NF82ODg5MjgxMjM1MTY2OTgxOTUzX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1CRXEyU0VvMlZtb1E3a052Z0ZhOE0yZyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTNNemd4TXpNME16WTBOek0xTnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDRUtCcGNjVGw1UjcwODg1VHIyR0p0Qnk2b1ZLSmhnUl9QVXpTSE9tV18wdyZvZT02N0JCNjc2NyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjQ5LjI2NiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTWYzQ2c2czJGQ3Rnc2dJU2RVNjEtWkpJdnVZQm8tcktHb0VYdjItTDZBdFNONXB0YUNSb3hOMGZwcW5PTU9PWkJFSFREOVVqTU9XakVlT1BQWTNoVFR3OTQtd3U4Q2VLSHVKY00ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qSTVOVEV5TWpRNE9EVXdNemN6TmpVc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz04ZWIxYzZiZmMxYzkxMzcyJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzh6TVRSRk5rWXhNakZEUlRGQlFUQTFRVE16TkRaRU1EQTJSa0k0UVRoQ1JsOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2JxcE9idThvZS1DaFVDS0FKRE15d1hRRWlpREVtNlhqVVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUNCM3d2end0QzhLa1RiR3cwZ1VsMUlhSFJWQkNNWlhLQmxKRFhlVTBCWjZnJm9lPTY3Qjc2ODhBJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6MTg4MDg5LCJoZWlnaHQiOjEzNTAsImlkIjoiMzkwMDk1NzQyNjg0NDE3M3YiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU1mM0NnNnMyRkN0Z3NnSVNkVTYxLVpKSXZ1WUJvLXJLR29FWHYyLUw2QXRTTjVwdGFDUm94TjBmcHFuT01PT1pCRUhURDlVak1PV2pFZU9QUFkzaFRUdzk0LXd1OENlS0h1SmNNLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakk1TlRFeU1qUTRPRFV3TXpjek5qVXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9OGViMWM2YmZjMWM5MTM3MiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4ek1UUkZOa1l4TWpGRFJURkJRVEExUVRNek5EWkVNREEyUmtJNFFUaENSbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNicXBPYnU4b2UtQ2hVQ0tBSkRNeXdYUUVpaURFbTZYalVZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlDQjN3dnp3dEM4S2tUYkd3MGdVbDFJYUhSVkJDTVpYS0JsSkRYZVUwQlo2ZyZvZT02N0I3Njg4QSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MTg4MDg5LCJoZWlnaHQiOjEzNTAsImlkIjoiMzkwMDk1NzQyNjg0NDE3M3YiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU1mM0NnNnMyRkN0Z3NnSVNkVTYxLVpKSXZ1WUJvLXJLR29FWHYyLUw2QXRTTjVwdGFDUm94TjBmcHFuT01PT1pCRUhURDlVak1PV2pFZU9QUFkzaFRUdzk0LXd1OENlS0h1SmNNLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakk1TlRFeU1qUTRPRFV3TXpjek5qVXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9OGViMWM2YmZjMWM5MTM3MiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4ek1UUkZOa1l4TWpGRFJURkJRVEExUVRNek5EWkVNREEyUmtJNFFUaENSbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNicXBPYnU4b2UtQ2hVQ0tBSkRNeXdYUUVpaURFbTZYalVZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlDQjN3dnp3dEM4S2tUYkd3MGdVbDFJYUhSVkJDTVpYS0JsSkRYZVUwQlo2ZyZvZT02N0I3Njg4QSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MTg4MDg5LCJoZWlnaHQiOjEzNTAsImlkIjoiMzkwMDk1NzQyNjg0NDE3M3YiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU1mM0NnNnMyRkN0Z3NnSVNkVTYxLVpKSXZ1WUJvLXJLR29FWHYyLUw2QXRTTjVwdGFDUm94TjBmcHFuT01PT1pCRUhURDlVak1PV2pFZU9QUFkzaFRUdzk0LXd1OENlS0h1SmNNLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakk1TlRFeU1qUTRPRFV3TXpjek5qVXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9OGViMWM2YmZjMWM5MTM3MiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4ek1UUkZOa1l4TWpGRFJURkJRVEExUVRNek5EWkVNREEyUmtJNFFUaENSbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNicXBPYnU4b2UtQ2hVQ0tBSkRNeXdYUUVpaURFbTZYalVZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlDQjN3dnp3dEM4S2tUYkd3MGdVbDFJYUhSVkJDTVpYS0JsSkRYZVUwQlo2ZyZvZT02N0I3Njg4QSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDY4OTc1MTM4MTg2Njc3NF8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOmZhbHNlLCJpZCI6IjM1NzAxNzM4MTM1MTEyOTI1MzQiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk3MzE5ODBfMTg1MDQyMTUzMjAwMzI1ODRfODczODk5NDU3ODg0MzkxNTY4NV9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MDhCb2V3dlVNMzBRN2tOdmdGWEwteksmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREUzTXpneE16VXhNVEk1TWpVek5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRGo0X0tiYmFpUTB6X0hKUXl3cEdPRnRZaTU2Ym1Gd0ZvWndpVzZYX1k2aUEmb2U9NjdCQjVFMzQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc19kYXNoX2VsaWdpYmxlIjoxLCJpc192aWRlbyI6dHJ1ZSwibWVkaWFfZm9ybWF0IjoidmlkZW8iLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjIsIm51bWJlcl9vZl9xdWFsaXRpZXMiOjIsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDE3MzgxMzUxMTI5MjUzNCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4Nzk0MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NzMxOTgwXzE4NTA0MjE1MzIwMDMyNTg0Xzg3Mzg5OTQ1Nzg4NDM5MTU2ODVfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTA4Qm9ld3ZVTTMwUTdrTnZnRlhMLXpLJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFM016Z3hNelV4TVRJNU1qVXpOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURqNF9LYmJhaVEwel9ISlF5d3BHT0Z0WWk1NmJtRndGb1p3aVc2WF9ZNmlBJm9lPTY3QkI1RTM0Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fY29kZWMiOiJhdjAxLjAuMDRNLjA4LjAuMTExLjAxLjAxLjAxLjAiLCJ2aWRlb19kdXJhdGlvbiI6MzIuMTMzLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPOTd6M3dGVmxhd0NsbF9DNWU3NWg5WEYyS3pRdVZjR2ZDZ2ZxWko0OFgxUzdjTmNGb1lZb0k5VlcxOVlMX2s1WWVldVBQMWdWVm9FQkY0ajh6NmRrXzFXQ3c0MlI1eE9MdXBrTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZd056STJNek13TVRrek5UUXdNQ3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTEmdnM9M2EzYTQyMDY1MDc4ODY4MiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5R1F6UXhRak14T1RVMU9EUkZNelF6UmpZNE16VTFSa1JHT0VWRk1FRTVSbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNiUWhLMldzSk9VQWhVQ0tBSkRNeXdYUUVBUkJpVGRMeHNZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlEaHdxU2g2bXVsN3hHVTBidTdJR0R4RktzMmxIaEFKdlVQTlU2WWZ5YkxrZyZvZT02N0I3NTQ5NCZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjE5OTYxOCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjE4NDYzOTIyNjU4OTY3NDN2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPOTd6M3dGVmxhd0NsbF9DNWU3NWg5WEYyS3pRdVZjR2ZDZ2ZxWko0OFgxUzdjTmNGb1lZb0k5VlcxOVlMX2s1WWVldVBQMWdWVm9FQkY0ajh6NmRrXzFXQ3c0MlI1eE9MdXBrTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZd056STJNek13TVRrek5UUXdNQ3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTEmdnM9M2EzYTQyMDY1MDc4ODY4MiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5R1F6UXhRak14T1RVMU9EUkZNelF6UmpZNE16VTFSa1JHT0VWRk1FRTVSbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNiUWhLMldzSk9VQWhVQ0tBSkRNeXdYUUVBUkJpVGRMeHNZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlEaHdxU2g2bXVsN3hHVTBidTdJR0R4RktzMmxIaEFKdlVQTlU2WWZ5YkxrZyZvZT02N0I3NTQ5NCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MTk5NjE4LCJoZWlnaHQiOjEzNTAsImlkIjoiMTg0NjM5MjI2NTg5Njc0M3YiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU85N3ozd0ZWbGF3Q2xsX0M1ZTc1aDlYRjJLelF1VmNHZkNnZnFaSjQ4WDFTN2NOY0ZvWVlvSTlWVzE5WUxfazVZZWV1UFAxZ1ZWb0VCRjRqOHo2ZGtfMVdDdzQyUjV4T0x1cGtNLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPall3TnpJMk16TXdNVGt6TlRRd01Dd2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZ2cz0zYTNhNDIwNjUwNzg4NjgyJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlHUXpReFFqTXhPVFUxT0RSRk16UXpSalk0TXpVMVJrUkdPRVZGTUVFNVJsOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2JRaEsyV3NKT1VBaFVDS0FKRE15d1hRRUFSQmlUZEx4c1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWURod3FTaDZtdWw3eEdVMGJ1N0lHRHhGS3MybEhoQUp2VVBOVTZZZnliTGtnJm9lPTY3Qjc1NDk0Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoxOTk2MTgsImhlaWdodCI6MTM1MCwiaWQiOiIxODQ2MzkyMjY1ODk2NzQzdiIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTzk3ejN3RlZsYXdDbGxfQzVlNzVoOVhGMkt6UXVWY0dmQ2dmcVpKNDhYMVM3Y05jRm9ZWW9JOVZXMTlZTF9rNVllZXVQUDFnVlZvRUJGNGo4ejZka18xV0N3NDJSNXhPTHVwa00ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXdOekkyTXpNd01Ua3pOVFF3TUN3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTExJnZzPTNhM2E0MjA2NTA3ODg2ODImX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUdRelF4UWpNeE9UVTFPRFJGTXpRelJqWTRNelUxUmtSR09FVkZNRUU1Umw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYlFoSzJXc0pPVUFoVUNLQUpETXl3WFFFQVJCaVRkTHhzWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZRGh3cVNoNm11bDd4R1UwYnU3SUdEeEZLczJsSGhBSnZVUE5VNllmeWJMa2cmb2U9NjdCNzU0OTQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzA2ODk3NTEzODE4NjY3NzRfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaGFzX2F1ZGlvIjpmYWxzZSwiaWQiOiIzNTcwMTczODEzMzM1MTc2NjA0IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTk5MTcwXzE4NTA0MjE1MzMyMDMyNTg0Xzg0MDk5ODQ0ODU4MzIyOTUyMDJfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWxxVm5EU29vdFAwUTdrTnZnSHFxWkl2Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFM016Z3hNek16TlRFM05qWXdOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFVUG5aZVJyMGJjRkpXSl9yYTFLa01IMTlUenVHVVV5SDktWEd4cEhMOXdnJm9lPTY3QkI1OTVGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzAxNzM4MTMzMzUxNzY2MDQiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5ODc5NDAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTk5OTE3MF8xODUwNDIxNTMzMjAzMjU4NF84NDA5OTg0NDg1ODMyMjk1MjAyX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1scVZuRFNvb3RQMFE3a052Z0hxcVpJdiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTNNemd4TXpNek5URTNOall3TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBVVBuWmVScjBiY0ZKV0pfcmExS2tNSDE5VHp1R1VVeUg5LVhHeHBITDl3ZyZvZT02N0JCNTk1RiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjI0LjMzMywidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUFpDai1rUUxFNWdsaXU0clZvSHF0UVpvVGdDekdXcmMwVVlOTXhyelpVRm1DY2MwOW9PcktvcFRnSFpDQXEtRUZ2ZDRiSkluU011VUlLMUJwbFJTTU52ZWh0OWNnUnVId2U1amsubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVTROemd6T1RrM01EYzBOekV4Tnl3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPTViOTgzOTlkNmM3YjQzYWUmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOURNRFE1TURNMFJESTROamd4UXpsRE5qVXdOakpCTXpWQk9UVXhOREE1TTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYmFpNkdLNWFpTEFoVUNLQUpETXl3WFFEaFZQM3p0a1dnWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQmh0XzJPMUJwaFRlRGpFbWgySGRKRGxYdE8xaHcxcW9HcDRnbVRQZUREa2cmb2U9NjdCNzY4ODImX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjoyMTQ1NzcsImhlaWdodCI6MTM1MCwiaWQiOiIxMDcwMjU2NjM1MTQyNTUxdiIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUFpDai1rUUxFNWdsaXU0clZvSHF0UVpvVGdDekdXcmMwVVlOTXhyelpVRm1DY2MwOW9PcktvcFRnSFpDQXEtRUZ2ZDRiSkluU011VUlLMUJwbFJTTU52ZWh0OWNnUnVId2U1amsubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVTROemd6T1RrM01EYzBOekV4Tnl3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPTViOTgzOTlkNmM3YjQzYWUmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOURNRFE1TURNMFJESTROamd4UXpsRE5qVXdOakpCTXpWQk9UVXhOREE1TTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYmFpNkdLNWFpTEFoVUNLQUpETXl3WFFEaFZQM3p0a1dnWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQmh0XzJPMUJwaFRlRGpFbWgySGRKRGxYdE8xaHcxcW9HcDRnbVRQZUREa2cmb2U9NjdCNzY4ODImX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjIxNDU3NywiaGVpZ2h0IjoxMzUwLCJpZCI6IjEwNzAyNTY2MzUxNDI1NTF2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQWkNqLWtRTEU1Z2xpdTRyVm9IcXRRWm9UZ0N6R1dyYzBVWU5NeHJ6WlVGbUNjYzA5b09yS29wVGdIWkNBcS1FRnZkNGJKSW5TTXVVSUsxQnBsUlNNTnZlaHQ5Y2dSdUh3ZTVqay5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pVNE56Z3pPVGszTURjME56RXhOeXdpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9NWI5ODM5OWQ2YzdiNDNhZSZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5RE1EUTVNRE0wUkRJNE5qZ3hRemxETmpVd05qSkJNelZCT1RVeE5EQTVNMTkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNiYWk2R0s1YWlMQWhVQ0tBSkRNeXdYUURoVlAzenRrV2dZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlCaHRfMk8xQnBoVGVEakVtaDJIZEpEbFh0TzFodzFxb0dwNGdtVFBlRERrZyZvZT02N0I3Njg4MiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjE0NTc3LCJoZWlnaHQiOjEzNTAsImlkIjoiMTA3MDI1NjYzNTE0MjU1MXYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVBaQ2ota1FMRTVnbGl1NHJWb0hxdFFab1RnQ3pHV3JjMFVZTk14cnpaVUZtQ2NjMDlvT3JLb3BUZ0haQ0FxLUVGdmQ0YkpJblNNdVVJSzFCcGxSU01OdmVodDljZ1J1SHdlNWprLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalU0Tnpnek9UazNNRGMwTnpFeE55d2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz01Yjk4Mzk5ZDZjN2I0M2FlJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlETURRNU1ETTBSREk0TmpneFF6bEROalV3TmpKQk16VkJPVFV4TkRBNU0xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2JhaTZHSzVhaUxBaFVDS0FKRE15d1hRRGhWUDN6dGtXZ1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUJodF8yTzFCcGhUZURqRW1oMkhkSkRsWHRPMWh3MXFvR3A0Z21UUGVERGtnJm9lPTY3Qjc2ODgyJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwNjg5NzUxMzgxODY2Nzc0XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6ZmFsc2UsImlkIjoiMzU3MDE3MzgxMzM1MTgyMTk4NiIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDk3OTY1Ml8xODUwNDIxNTM2NTAzMjU4NF80MTgwNDkyMTM4MzY0MjAxMjg1X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1SNXdzaGxBeWd2OFE3a052Z0Y4LXpoUiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTNNemd4TXpNMU1UZ3lNVGs0TmclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDWXROMm9aRWVrZEgxU0N6Yy0wSEhEVEJwV2J5dnl2MEFzOE1GOFFmeVozdyZvZT02N0JCNTVFNyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Miwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMTczODEzMzUxODIxOTg2IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTg3OTQwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA5Nzk2NTJfMTg1MDQyMTUzNjUwMzI1ODRfNDE4MDQ5MjEzODM2NDIwMTI4NV9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UjV3c2hsQXlndjhRN2tOdmdGOC16aFImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREUzTXpneE16TTFNVGd5TVRrNE5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1l0TjJvWkVla2RIMVNDemMtMEhIRFRCcFdieXZ5djBBczhNRjhRZnlaM3cmb2U9NjdCQjU1RTcmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wNE0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjo0MS4xLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFNLU5rblZlNGRnTnhHSW9fYURWa2I2emlDdThQLWpkUXRKMkJaTERyZ1k2a3h1aWFNYUVRejdxRUdKRXBDcVF2R2xvM3lxdmJJNDhyY2ZlNkhaOGMyVWFpR29JVFNBZlpFN2pXay5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZMk1EUTVOalkyTmpNeU5EZzRNU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImdnM9NGM1NmQ3MDU2OGM3ZmExYyZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5RVJEUXdOekpFUkRCRVFUYzFPVVl3TmtVNU5EVXpPRGN3TmpnM1F6VTVPVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhaXZ0X1MtNjJzQWhVQ0tBSkRNeXdYUUVTTXpNek16TTBZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlELVdneThiZGY5TlNoRjZ2RWZxRlB5d2c2N3dJRDlya0dyUldIUHQ1Tkg5QSZvZT02N0I3NjlFMyZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjE4NzAyNSwiaGVpZ2h0IjoxMzUwLCJpZCI6IjE2Mzk0NTEzNzMzMzYwNDl2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFNLU5rblZlNGRnTnhHSW9fYURWa2I2emlDdThQLWpkUXRKMkJaTERyZ1k2a3h1aWFNYUVRejdxRUdKRXBDcVF2R2xvM3lxdmJJNDhyY2ZlNkhaOGMyVWFpR29JVFNBZlpFN2pXay5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZMk1EUTVOalkyTmpNeU5EZzRNU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImdnM9NGM1NmQ3MDU2OGM3ZmExYyZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5RVJEUXdOekpFUkRCRVFUYzFPVVl3TmtVNU5EVXpPRGN3TmpnM1F6VTVPVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhaXZ0X1MtNjJzQWhVQ0tBSkRNeXdYUUVTTXpNek16TTBZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlELVdneThiZGY5TlNoRjZ2RWZxRlB5d2c2N3dJRDlya0dyUldIUHQ1Tkg5QSZvZT02N0I3NjlFMyZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MTg3MDI1LCJoZWlnaHQiOjEzNTAsImlkIjoiMTYzOTQ1MTM3MzMzNjA0OXYiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU0tTmtuVmU0ZGdOeEdJb19hRFZrYjZ6aUN1OFAtamRRdEoyQlpMRHJnWTZreHVpYU1hRVF6N3FFR0pFcENxUXZHbG8zeXF2Ykk0OHJjZmU2SFo4YzJVYWlHb0lUU0FmWkU3aldrLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalkyTURRNU5qWTJOak15TkRnNE1Td2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZ2cz00YzU2ZDcwNTY4YzdmYTFjJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlFUkRRd056SkVSREJFUVRjMU9VWXdOa1U1TkRVek9EY3dOamczUXpVNU9WOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FpdnRfUy02MnNBaFVDS0FKRE15d1hRRVNNek16TXpNMFlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUQtV2d5OGJkZjlOU2hGNnZFZnFGUHl3ZzY3d0lEOXJrR3JSV0hQdDVOSDlBJm9lPTY3Qjc2OUUzJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoxODcwMjUsImhlaWdodCI6MTM1MCwiaWQiOiIxNjM5NDUxMzczMzM2MDQ5diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTS1Oa25WZTRkZ054R0lvX2FEVmtiNnppQ3U4UC1qZFF0SjJCWkxEcmdZNmt4dWlhTWFFUXo3cUVHSkVwQ3FRdkdsbzN5cXZiSTQ4cmNmZTZIWjhjMlVhaUdvSVRTQWZaRTdqV2subXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWTJNRFE1TmpZMk5qTXlORGc0TVN3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJnZzPTRjNTZkNzA1NjhjN2ZhMWMmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUVSRFF3TnpKRVJEQkVRVGMxT1VZd05rVTVORFV6T0Rjd05qZzNRelU1T1Y5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYWl2dF9TLTYyc0FoVUNLQUpETXl3WFFFU016TXpNek0wWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZRC1XZ3k4YmRmOU5TaEY2dkVmcUZQeXdnNjd3SUQ5cmtHclJXSFB0NU5IOUEmb2U9NjdCNzY5RTMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzA2ODk3NTEzODE4NjY3NzRfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwMTczODEzMzM1MDMwMjg5IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDYxMTk3OF8xODUwNDIxNTI4MTAzMjU4NF8zMTAzNzg5MjcwMTU1OTQ4OTk3X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz16ZlFGSGNLT0JVc1E3a052Z0Z2WGEtNyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTNNemd4TXpNek5UQXpNREk0T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCTVpfV1ZBTVN5UlBHMUpneTYwVmhHQ2pXeTA5UGNfaEpYb1VKZV9nWFI4ZyZvZT02N0JCNDIzQyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjExOTc4XzE4NTA0MjE1MjgxMDMyNTg0XzMxMDM3ODkyNzAxNTU5NDg5OTdfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz16ZlFGSGNLT0JVc1E3a052Z0Z2WGEtNyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01ERTNNemd4TXpNek5UQXpNREk0T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDSzhKcVVDM3dDMUhuNGlfWWpYVFNvLVBGZTFZeC14Q0x0SFJkNTlWd0trZyZvZT02N0JCNDIzQyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDE3MzgxMzMzNTAzMDI4OSIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4Nzk0MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjExOTc4XzE4NTA0MjE1MjgxMDMyNTg0XzMxMDM3ODkyNzAxNTU5NDg5OTdfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXpmUUZIY0tPQlVzUTdrTnZnRnZYYS03Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFM016Z3hNek16TlRBek1ESTRPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJNWl9XVkFNU3lSUEcxSmd5NjBWaEdDald5MDlQY19oSlhvVUplX2dYUjhnJm9lPTY3QkI0MjNDJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6NiwiY2Fyb3VzZWxfbWVkaWFfaWRzIjpbMzU3MDE3MzgxMzU2MTU1OTcxMiwzNTcwMTczODEzMzQzNjQ3MzU3LDM1NzAxNzM4MTM1MTEyOTI1MzQsMzU3MDE3MzgxMzMzNTE3NjYwNCwzNTcwMTczODEzMzUxODIxOTg2LDM1NzAxNzM4MTMzMzUwMzAyODldLCJjYXJvdXNlbF9tZWRpYV9wZW5kaW5nX3Bvc3RfY291bnQiOjAsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdObzJrYVBua1ciLCJjb21tZW50X2NvdW50IjoyNiwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5ODc5NDAwLCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxODAyMTQ5MTYyMTQyMzM5MyIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTcwNjg5NzUxMzgxODY2Nzc0IiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwMTkxNDBfMTg1MDQyMTUyNzIwMzI1ODRfMzYxNzc0MzM3MDE5NzczOTgyNF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9ZndhQlZJd3M5NVFRN2tOdmdHVlkzN3omX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREUzTXpneE16VTJNVFUxT1RjeE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQUNZMHlTQ3dEYU5jaFU2djhubVh1bXdPMGp1R2t2dnJwdmJUeWVWQWh2MlEmb2U9NjdCQjQ5NzEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDAxOTE0MF8xODUwNDIxNTI3MjAzMjU4NF8zNjE3NzQzMzcwMTk3NzM5ODI0X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9ZndhQlZJd3M5NVFRN2tOdmdHVlkzN3omX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREUzTXpneE16VTJNVFUxT1RjeE1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQnc2dUVJWE9xc0xBRGxPTjV6X3FtdUR0ZkhVZklUb2FEc0E3TDVHQi0ySlEmb2U9NjdCQjQ5NzEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoicGVuZGluZyIsImludml0ZWRfY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOnRydWUsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOmZhbHNlLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfc29jaWFsX3VmaV9kaXNhYmxlZCI6ZmFsc2UsImlzX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fdmlld2VyX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOnRydWUsImxpa2VfY291bnQiOjMsIm1lZGlhX2Zvcm1hdCI6ImFsYnVtIiwibWVkaWFfbmFtZSI6ImFsYnVtIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6OCwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjAiLCJhdWRpb190eXBlIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpudWxsfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcGVuX2Nhcm91c2VsX3N1Ym1pc3Npb25fc3RhdGUiOiJjbG9zZWQiLCJvcmlnaW5hbF9oZWlnaHQiOjYxMiwib3JpZ2luYWxfd2lkdGgiOjYxMiwicGsiOiIzNTcwNjg5NzUxMzgxODY2Nzc0IiwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9jb250YWluZXIiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk4Nzk0MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDE5MTQwXzE4NTA0MjE1MjcyMDMyNTg0XzM2MTc3NDMzNzAxOTc3Mzk4MjRfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWZ3YUJWSXdzOTVRUTdrTnZnR1ZZMzd6Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURFM016Z3hNelUyTVRVMU9UY3hNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFDWTB5U0N3RGFOY2hVNnY4bm1YdW13TzBqdUdrdnZycHZiVHllVkFodjJRJm9lPTY3QkI0OTcxJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJlZHMwbl9wZW5uYSJdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiRGllZ28gQWxtZWlkYSB8IElBIHwgQ2hhdEdQVCIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyMzI2NDU4MyIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fbW9kaWZ5X2Nhcm91c2VsIjp0cnVlLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTgxNTIwNCwiY3JlYXRlZF9hdF91dGMiOjE3Mzk4MTUyMDQsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI2lhIiwiI2ludGVsaWdlbmNpYWFydGlmaWNpYWwiLCIjdGVjbm9sb2dpYSIsIiNhaSIsIiNjaGF0Z3B0IiwiI2FpdG9vbHMiLCIjb3BlbmFpIiwiI2FpdGlwcyIsIiNtYWNoaW5lbGVhcm5pbmciLCIjbWVkaWNpbmEiLCIjbWVkaWNvcyIsIiNtZWRpY28iXSwiaWQiOiIzNTcwMTUxNDI2NjMxNTgxMTM3IiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOlsiQGRpZWdvYWxtZWlkYS5pYSJdLCJwayI6IjE4MzEzODg0MTY2MjAyNjIyIiwicHJpdmF0ZV9yZXBseV9zdGF0dXMiOjAsInNoYXJlX2VuYWJsZWQiOmZhbHNlLCJ0ZXh0IjoiQSBJQSBhY2Fib3UgZGUgZmF6ZXIgYWxnbyBxdWUgb3MgbcOpZGljb3MgbsOjbyBjb25zZWd1ZW0gZXhwbGljYXIg8J+kr1xuXG5DaWVudGlzdGFzIGRlc2Vudm9sdmVyYW0gdW0gbW9kZWxvIGRlIGludGVsaWfDqm5jaWEgYXJ0aWZpY2lhbCBiYXNlYWRvIGVtIGFwcmVuZGl6YWRvIHByb2Z1bmRvIGNhcGF6IGRlIGlkZW50aWZpY2FyIG8gc2V4byBkZSB1bWEgcGVzc29hIHBvciBtZWlvIGRlIGltYWdlbnMgZG8gZnVuZG8gZGUgb2xobyBkYSByZXRpbmEuXG5cbk8gbW9kZWxvIGZvaSB0cmVpbmFkbyBjb20gbWFpcyBkZSA4NCBtaWwgaW1hZ2VucyBkbyBVSyBCaW9iYW5rIGUgZGVtb25zdHJvdSB1bSBkZXNlbXBlbmhvIGltcHJlc3Npb25hbnRlLCBhdGluZ2luZG8gODYsNSUgZGUgcHJlY2lzw6NvIG5hIGZhc2UgZGUgdmFsaWRhw6fDo28gaW50ZXJuYSBlIDc4LDYlIG5hIHZhbGlkYcOnw6NvIGV4dGVybmEuXG5cbk9zIHJlc3VsdGFkb3MgaW5kaWNhcmFtIHF1ZSBhIHByZXNlbsOnYSBkZSBwYXRvbG9naWFzIG5hIGbDs3ZlYSByZWR1eml1IGEgcHJlY2lzw6NvIGRvIG1vZGVsbywgc3VnZXJpbmRvIHF1ZSBlc3NhIHJlZ2nDo28gcG9kZSBkZXNlbXBlbmhhciB1bSBwYXBlbCBmdW5kYW1lbnRhbCBuYSBkaWZlcmVuY2lhw6fDo28gZW50cmUgb3Mgc2V4b3MuXG5cbkVzc2UgZXN0dWRvIGRlc3RhY2EgYSBjYXBhY2lkYWRlIGRhIElBIGRlIGRldGVjdGFyIGRpZmVyZW7Dp2FzIGFuYXTDtG1pY2FzIG3DrW5pbWFzLCBtdWl0YXMgdmV6ZXMgaW1wZXJjZXB0w612ZWlzIHBhcmEgbcOpZGljb3MsIGFicmluZG8gbm92YXMgcGVyc3BlY3RpdmFzIHBhcmEgbyB1c28gZGEgdGVjbm9sb2dpYSBubyBkaWFnbsOzc3RpY28gbcOpZGljby5cblxuRSB2b2PDqiBvIHF1ZSBhY2hhIHNvYnJlIGlzc28/IPCfpJTwn5KsIFxuXG5Fc3R1ZG86IGh0dHBzOi8vd3d3Lm5hdHVyZS5jb20vYXJ0aWNsZXMvczQxNTk4LTAyMS04OTc0My14XG5cbvCfkYnwn4+7U2lnYSBAZGllZ29hbG1laWRhLmlhIHBhcmEgbWFpcyBub3ZpZGFkZXMgc29icmVcbklBLCBDaGF0R1BUIGUgVGVjbm9sb2dpYSFcblxuI2lhICNpbnRlbGlnZW5jaWFhcnRpZmljaWFsICN0ZWNub2xvZ2lhICNhaSAjY2hhdGdwdFxuI2FpdG9vbHMgI29wZW5haSAjYWl0aXBzICNtYWNoaW5lbGVhcm5pbmcgI21lZGljaW5hICNtZWRpY29zICNtZWRpY28iLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwOTc3NDkwMzYzLCJmdWxsX25hbWUiOiJEaWVnbyBBbG1laWRhIHwgSUEgfCBDaGF0R1BUIiwiaWQiOiIyMzI2NDU4MyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0NzUyNDI4NzQzMTMwODQ0MDQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDYyMzM3MDY1XzUyODYwOTM2NjcyNzkyNV80NzExNTM4ODE0MTQzNjM3ODgzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRkdmIxRUdMbG80UTdrTnZnSGlxRldoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUJFcElkWTN5UEdlY0IyQy16S182YjM3TjlHQzMyRk0tYllBSXZjVWY0bmcmb2U9NjdCQjQ5Q0MmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ1c2VyX2lkIjoiMjMyNjQ1ODMifSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjYXJvdXNlbF9tZWRpYSI6W3siY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MDE1MTQyNjYzMTU4MTEzN18yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzAwODQ5ODEyMzA5NTAxOTgiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNzc2Njg3XzE4NTA0MTg1NzIyMDMyNTg0Xzg5NzkxNDM2MDEzNTE3MTE4NDFfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUh3bERrWnVWeFFrUTdrTnZnRXE3TjdpJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBNE5EazRNVEl6TURrMU1ERTVPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUREWnRFelhYRmpCWDN0Tk5lcEJILW1xRnVxMHNmWEh3a3lNNGpHQ1FNNmZnJm9lPTY3QkI1N0FBJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA3NzY2ODdfMTg1MDQxODU3MjIwMzI1ODRfODk3OTE0MzYwMTM1MTcxMTg0MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUh3bERrWnVWeFFrUTdrTnZnRXE3TjdpJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBNE5EazRNVEl6TURrMU1ERTVPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJCamdLcG5TRmQ4UEFTVFNwLW8wM0dhS3J4SWxXRzdoZ3ZHVkIxelNOMUJRJm9lPTY3QkI1N0FBJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMDg0OTgxMjMwOTUwMTk4IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTgxNTIwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA3NzY2ODdfMTg1MDQxODU3MjIwMzI1ODRfODk3OTE0MzYwMTM1MTcxMTg0MV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SHdsRGtadVZ4UWtRN2tOdmdFcTdON2kmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNREE0TkRrNE1USXpNRGsxTURFNU9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRERadEV6WFhGakJYM3ROTmVwQkgtbXFGdXEwc2ZYSHdreU00akdDUU02Zmcmb2U9NjdCQjU3QUEmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzAxNTE0MjY2MzE1ODExMzdfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcwMDg0OTgwOTc5MjA3ODA3IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODc0MDcwMV8xODUwNDE4NTczMTAzMjU4NF81ODEwMDc1ODgzMTQ4NDgxODc0X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1Jd25mXzlhajRPMFE3a052Z0gyMUNTUCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTRORGs0TURrM09USXdOemd3TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCZGtWY1cxTmVHTmFqSVpUMThLVG9YVVJoWG1jWTRsR2NNeGRmVWgyVklRdyZvZT02N0JCNjFFNSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc4NzQwNzAxXzE4NTA0MTg1NzMxMDMyNTg0XzU4MTAwNzU4ODMxNDg0ODE4NzRfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1Jd25mXzlhajRPMFE3a052Z0gyMUNTUCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTRORGs0TURrM09USXdOemd3TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDRkRhcmxVN1ZPNE05emZCLVZFVVNUZV9ZeTlyX21PVnhnQU12MUNZQ3p3USZvZT02N0JCNjFFNSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU3MDA4NDk4MDk3OTIwNzgwNyIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk4MTUyMDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc4NzQwNzAxXzE4NTA0MTg1NzMxMDMyNTg0XzU4MTAwNzU4ODMxNDg0ODE4NzRfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUl3bmZfOWFqNE8wUTdrTnZnSDIxQ1NQJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBNE5EazRNRGszT1RJd056Z3dOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJka1ZjVzFOZUdOYWpJWlQxOEtUb1hVUmhYbWNZNGxHY014ZGZVaDJWSVF3Jm9lPTY3QkI2MUU1Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcwMTUxNDI2NjMxNTgxMTM3XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MDA4NDk4MDkyOTAxNTA1OCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwMzQzNjZfMTg1MDQxODU3NDAwMzI1ODRfNTU5MjM0ODA2OTE0MTExNjc2X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1pRS0tV29lWFpIVVE3a052Z0ZvQmJHSCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTRORGs0TURreU9UQXhOVEExT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBdkpmQXktcXhMYU1TaTVxWGoyVDR3bDhFbFRaZUVjRlBSSzJGaWo0cmhlUSZvZT02N0JCMzdCQyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDM0MzY2XzE4NTA0MTg1NzQwMDMyNTg0XzU1OTIzNDgwNjkxNDExMTY3Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWlFLS1Xb2VYWkhVUTdrTnZnRm9CYkdIJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURBNE5EazRNRGt5T1RBeE5UQTFPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJSenNLbG82NDg0TTFOMW1pSW9DNDZEVV9odkx6eUViOEJ5UThteUU1djlnJm9lPTY3QkIzN0JDJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTcwMDg0OTgwOTI5MDE1MDU4IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTgxNTIwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAwMzQzNjZfMTg1MDQxODU3NDAwMzI1ODRfNTU5MjM0ODA2OTE0MTExNjc2X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1pRS0tV29lWFpIVVE3a052Z0ZvQmJHSCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTRORGs0TURreU9UQXhOVEExT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBdkpmQXktcXhMYU1TaTVxWGoyVDR3bDhFbFRaZUVjRlBSSzJGaWo0cmhlUSZvZT02N0JCMzdCQyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119XSwiY2Fyb3VzZWxfbWVkaWFfY291bnQiOjMsImNhcm91c2VsX21lZGlhX2lkcyI6WzM1NzAwODQ5ODEyMzA5NTAxOTgsMzU3MDA4NDk4MDk3OTIwNzgwNywzNTcwMDg0OTgwOTI5MDE1MDU4XSwiY2Fyb3VzZWxfbWVkaWFfcGVuZGluZ19wb3N0X2NvdW50IjowLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHTHVjNmF1cjNSIiwiY29tbWVudF9jb3VudCI6ODAsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTgxNTIwMCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgzMTM4NzA2NTEyMDI2MjIiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6IlNFTEZfRElTQ0xPU1VSRV9GTE9XIn0sImhhc19oaWdoX3Jpc2tfZ2VuX2FpX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJoYXNfbGlrZWQiOmZhbHNlLCJoYXNfcHJpdmF0ZWx5X2xpa2VkIjpmYWxzZSwiaGFzX3NoYXJlZF90b19mYiI6MCwiaGFzX3ZpZXdzX2ZldGNoaW5nIjp0cnVlLCJpZCI6IjM1NzAxNTE0MjY2MzE1ODExMzciLCJpZ19tZWRpYV9zaGFyaW5nX2Rpc2FibGVkIjpmYWxzZSwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDc3NjY4N18xODUwNDE4NTcyMjAzMjU4NF84OTc5MTQzNjAxMzUxNzExODQxX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1Id2xEa1p1VnhRa1E3a052Z0VxN043aSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTRORGs0TVRJek1EazFNREU1T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlERFp0RXpYWEZqQlgzdE5OZXBCSC1tcUZ1cTBzZlhId2t5TTRqR0NRTTZmZyZvZT02N0JCNTdBQSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNzc2Njg3XzE4NTA0MTg1NzIyMDMyNTg0Xzg5NzkxNDM2MDEzNTE3MTE4NDFfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1Id2xEa1p1VnhRa1E3a052Z0VxN043aSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTRORGs0TVRJek1EazFNREU1T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCQmpnS3BuU0ZkOFBBU1RTcC1vMDNHYUtyeElsV0c3aGd2R1ZCMXpTTjFCUSZvZT02N0JCNTdBQSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdmlkZW8iOmZhbHNlLCJsYXlvdXRfdHlwZSI6Im1lZGlhX2dyaWQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6dHJ1ZSwibGlrZV9jb3VudCI6MywibWVkaWFfZm9ybWF0IjoiYWxidW0iLCJtZWRpYV9uYW1lIjoiYWxidW0iLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjo4LCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMCIsImF1ZGlvX3R5cGUiOm51bGwsIm11c2ljX2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOm51bGx9LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9wZW5fY2Fyb3VzZWxfc3VibWlzc2lvbl9zdGF0ZSI6ImNsb3NlZCIsIm9yaWdpbmFsX2hlaWdodCI6NjEyLCJvcmlnaW5hbF93aWR0aCI6NjEyLCJwayI6IjM1NzAxNTE0MjY2MzE1ODExMzciLCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2NvbnRhaW5lciIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjp0cnVlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInN1YnNjcmliZV9jdGFfdmlzaWJsZSI6ZmFsc2UsInRha2VuX2F0IjoxNzM5ODE1MjAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDc3NjY4N18xODUwNDE4NTcyMjAzMjU4NF84OTc5MTQzNjAxMzUxNzExODQxX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1Id2xEa1p1VnhRa1E3a052Z0VxN043aSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01EQTRORGs0TVRJek1EazFNREU1T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlERFp0RXpYWEZqQlgzdE5OZXBCSC1tcUZ1cTBzZlhId2t5TTRqR0NRTTZmZyZvZT02N0JCNTdBQSZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOlsibG9pcm9zd2FhZyJdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiRGllZ28gQWxtZWlkYSB8IElBIHwgQ2hhdEdQVCIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyMzI2NDU4MyIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImFyZV9yZW1peGVzX2Nyb3NzcG9zdGFibGUiOnRydWUsImF2YXRhcl9zdGlja2VycyI6W10sImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTkyMzI0MywiY3JlYXRlZF9hdF91dGMiOjE3Mzk5MjMyNDMsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc2h0YWdzIjpbIiNhaSIsIiNhcnRpZmljaWFsaW50ZWxsaWdlbmNlIiwiI2FpdG9vbHMiLCIjYWloYWNrcyIsIiNjaGF0Z3B0IiwiI3RlY2giLCIjdGVjaG5vbG9neSIsIiNhaW5ld3MiXSwiaWQiOiIzNTcxMDU2NDMxMDc4MjU1MjM4IiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOlsiQHdob3AiXSwicGsiOiIxODA0NzU1NzQ4MTI1MTg4NyIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IvCfkYkgQzBNTUVOVCDigJxXSE9Q4oCdIGFuZCBJ4oCZbGwgc2VuZCB5b3UgdGhpcyBGUkVFIEFJLlxuXG7wn6SWIEFJIFRvb2w6IEB3aG9wXG5cbkZvbGxvdyBmb3IgbW9yZSBDaGF0R1BUIGFuZCBBSSB0aXBzLCB0cmlja3MsIGhhY2tzIVxuXG4jYWkgI2FydGlmaWNpYWxpbnRlbGxpZ2VuY2UgI2FpdG9vbHMgI2FpaGFja3MgI2NoYXRncHQgI3RlY2ggI3RlY2hub2xvZ3kgI2FpbmV3cyIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0NTgyNTc2MzY3ODgsImZ1bGxfbmFtZSI6IkFydGlmaWNpYWwgSW50ZWxsaWdlbmNlIiwiaWQiOiI1ODEzNDMwOTkyMSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMTgwNTU5NjM1MDM2MzA0NDQwIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzM3MTcyNDgxMF8xMDAwODE2OTU1OTI1NjgyOF8yNzIzODc4NDI1MjU0NjEwNDQzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUtmMER6U3NjV3kwUTdrTnZnR2NxYzNiJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUZsdjNCMjRfdjNySk9aam5mR3UzbUhEcnFsbm9oQ1NFU3haWXZ6RFdyNVEmb2U9NjdCQjUyRUUmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6InBvd2VyLmFpIn0sInVzZXJfaWQiOiI1ODEzNDMwOTkyMSJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6dHJ1ZSwiY2xpcHNfbWV0YWRhdGEiOnsiYWNoaWV2ZW1lbnRzX2luZm8iOnsibnVtX2Vhcm5lZF9hY2hpZXZlbWVudHMiOm51bGwsInNob3dfYWNoaWV2ZW1lbnRzIjpmYWxzZX0sImFkZGl0aW9uYWxfYXVkaW9faW5mbyI6eyJhZGRpdGlvbmFsX2F1ZGlvX3VzZXJuYW1lIjpudWxsLCJhdWRpb19yZWF0dHJpYnV0aW9uX2luZm8iOnsic2hvdWxkX2FsbG93X3Jlc3RvcmUiOmZhbHNlfX0sImFzc2V0X3JlY29tbWVuZGF0aW9uX2luZm8iOm51bGwsImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjE4MzMyMTk2NjMxMDg3OTQwIiwiYXVkaW9fcmFua2luZ19pbmZvIjp7ImJlc3RfYXVkaW9fY2x1c3Rlcl9pZCI6IjY0NjE3NzM4MTIyMTU0MiJ9LCJhdWRpb190eXBlIjoib3JpZ2luYWxfc291bmRzIiwiYnJhbmRlZF9jb250ZW50X3RhZ19pbmZvIjp7ImNhbl9hZGRfdGFnIjpmYWxzZX0sImJyZWFraW5nX2NvbnRlbnRfaW5mbyI6bnVsbCwiYnJlYWtpbmdfY3JlYXRvcl9pbmZvIjpudWxsLCJjaGFsbGVuZ2VfaW5mbyI6bnVsbCwiY2xpcHNfY3JlYXRpb25fZW50cnlfcG9pbnQiOiJjbGlwcyIsImNvbnRlbnRfYXBwcmVjaWF0aW9uX2luZm8iOnsiZW5hYmxlZCI6ZmFsc2UsImVudHJ5X3BvaW50X2NvbnRhaW5lciI6bnVsbH0sImNvbnRleHR1YWxfaGlnaGxpZ2h0X2luZm8iOm51bGwsImN1dG91dF9zdGlja2VyX2luZm8iOltdLCJkaXNhYmxlX3VzZV9pbl9jbGlwc19jbGllbnRfY2FjaGUiOmZhbHNlLCJleHRlcm5hbF9tZWRpYV9pbmZvIjpudWxsLCJmZWF0dXJlZF9sYWJlbCI6bnVsbCwiaXNfZmFuX2NsdWJfcHJvbW9fdmlkZW8iOmZhbHNlLCJpc19wdWJsaWNfY2hhdF93ZWxjb21lX3ZpZGVvIjpmYWxzZSwiaXNfc2hhcmVkX3RvX2ZiIjp0cnVlLCJtYXNodXBfaW5mbyI6eyJjYW5fdG9nZ2xlX21hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsImZvcm1hdHRlZF9tYXNodXBzX2NvdW50IjpudWxsLCJoYXNfYmVlbl9tYXNoZWRfdXAiOmZhbHNlLCJoYXNfbm9ubWltaWNhYmxlX2FkZGl0aW9uYWxfYXVkaW8iOmZhbHNlLCJpc19jcmVhdG9yX3JlcXVlc3RpbmdfbWFzaHVwIjpmYWxzZSwiaXNfbGlnaHRfd2VpZ2h0X2NoZWNrIjp0cnVlLCJpc19saWdodF93ZWlnaHRfcmV1c2VfYWxsb3dlZF9jaGVjayI6ZmFsc2UsImlzX3Bpdm90X3BhZ2VfYXZhaWxhYmxlIjpmYWxzZSwiaXNfcmV1c2VfYWxsb3dlZCI6dHJ1ZSwibWFzaHVwX3R5cGUiOm51bGwsIm1hc2h1cHNfYWxsb3dlZCI6dHJ1ZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1lcmNoYW5kaXNpbmdfcGlsbF9pbmZvIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJudXhfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6eyJhbGxvd19jcmVhdG9yX3RvX3JlbmFtZSI6dHJ1ZSwiYXR0cmlidXRlZF9jdXN0b21fYXVkaW9fYXNzZXRfaWQiOm51bGwsImF1ZGlvX2Fzc2V0X3N0YXJ0X3RpbWVfaW5fbXMiOm51bGwsImF1ZGlvX2ZpbHRlcl9pbmZvcyI6W10sImF1ZGlvX2lkIjoxMzM1NDY0MjA3NzcxMDk0LCJhdWRpb19wYXJ0cyI6W10sImF1ZGlvX3BhcnRzX2J5X2ZpbHRlciI6W10sImNhbl9yZW1peF9iZV9zaGFyZWRfdG9fZmIiOnRydWUsImNhbl9yZW1peF9iZV9zaGFyZWRfdG9fZmJfZXhwYW5zaW9uIjpmYWxzZSwiY29uc3VtcHRpb25faW5mbyI6eyJkaXNwbGF5X21lZGlhX2lkIjpudWxsLCJpc19ib29rbWFya2VkIjpmYWxzZSwiaXNfdHJlbmRpbmdfaW5fY2xpcHMiOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb24iOiIiLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb25fdHlwZSI6bnVsbH0sImR1cmF0aW9uX2luX21zIjozNDM0MCwiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn0sImZvcm1hdHRlZF9jbGlwc19tZWRpYV9jb3VudCI6bnVsbCwiaGlkZV9yZW1peGluZyI6ZmFsc2UsImlnX2FydGlzdCI6eyJmdWxsX25hbWUiOiJBcnRpZmljaWFsIEludGVsbGlnZW5jZSIsImlkIjoiNTgxMzQzMDk5MjEiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjMxODA1NTk2MzUwMzYzMDQ0NDAiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzcxNzI0ODEwXzEwMDA4MTY5NTU5MjU2ODI4XzI3MjM4Nzg0MjUyNTQ2MTA0NDNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9S2YwRHpTc2NXeTBRN2tOdmdHY3FjM2ImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBRmx2M0IyNF92M3JKT1pqbmZHdTNtSERycWxub2hDU0VTeFpZdnpEV3I1USZvZT02N0JCNTJFRSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoicG93ZXIuYWkifSwiaXNfYXVkaW9fYXV0b21hdGljYWxseV9hdHRyaWJ1dGVkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX2F1ZGlvX2VmZmVjdHMiOnRydWUsImlzX2VsaWdpYmxlX2Zvcl92aW55bF9zdGlja2VyIjp0cnVlLCJpc19leHBsaWNpdCI6ZmFsc2UsImlzX29yaWdpbmFsX2F1ZGlvX2Rvd25sb2FkX2VsaWdpYmxlIjp0cnVlLCJpc19yZXVzZV9kaXNhYmxlZCI6ZmFsc2UsImlzX3hwb3N0X2Zyb21fZmIiOmZhbHNlLCJvYV9vd25lcl9pc19tdXNpY19hcnRpc3QiOmZhbHNlLCJvcmlnaW5hbF9hdWRpb19zdWJ0eXBlIjoiZGVmYXVsdCIsIm9yaWdpbmFsX2F1ZGlvX3RpdGxlIjoiT3JpZ2luYWwgYXVkaW8iLCJvcmlnaW5hbF9tZWRpYV9pZCI6MzU3MTA1NjQzMTA3ODI1NTIzOCwib3ZlcmxhcF9kdXJhdGlvbl9pbl9tcyI6bnVsbCwicHJldmlvdXNfdHJlbmRfcmFuayI6bnVsbCwicHJvZ3Jlc3NpdmVfZG93bmxvYWRfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L28xL3YvdDIvZjIvbTY5L0FRUEs4NXJXNEdMcXcwQlljaDdEekNrSXpSOXN1ek5nNHdoSDBuaGROcGJKN05SNDdWUTlkRHpGWnNqYlBZMzZaZDBtcUR5N2twVHA5N0k3R3J1QVlUWk8ubXA0P3N0cmV4dD0xJl9uY19jYXQ9MTEwJl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9cURaUGczZ21lc29RN2tOdmdGTTdDRHEmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqb3hOalk0T1RFMU5UZ3dORGs1TXpjMUxDSjFjbXhuWlc1ZmMyOTFjbU5sSWpvaWQzZDNJbjAlM0QmY2NiPTktNCZfbmNfenQ9Mjgmb2g9MDBfQVlDSkRCS0tITlRNeUI4Qjl0cmVQMG1TRF8xSkRCMW5MWFkzX09WT0FfR1NzQSZvZT02N0JCMzQyOCIsInNob3VsZF9tdXRlX2F1ZGlvIjpmYWxzZSwidGltZV9jcmVhdGVkIjoxNzM5OTIzMTkxLCJ0cmVuZF9yYW5rIjpudWxsLCJ4cG9zdF9mYl9jcmVhdG9yX2luZm8iOm51bGx9LCJvcmlnaW5hbGl0eV9pbmZvIjpudWxsLCJwcm9mZXNzaW9uYWxfY2xpcHNfdXBzZWxsX3R5cGUiOjAsInJlZWxzX29uX3RoZV9yaXNlX2luZm8iOm51bGwsInJldXNhYmxlX3RleHRfYXR0cmlidXRlX3N0cmluZyI6bnVsbCwicmV1c2FibGVfdGV4dF9pbmZvIjpudWxsLCJzaG9wcGluZ19pbmZvIjpudWxsLCJzaG93X2FjaGlldmVtZW50cyI6ZmFsc2UsInNob3dfdGlwcyI6bnVsbCwidGVtcGxhdGVfaW5mbyI6bnVsbCwidmlld2VyX2ludGVyYWN0aW9uX3NldHRpbmdzIjpudWxsfSwiY2xpcHNfdGFiX3Bpbm5lZF91c2VyX2lkcyI6W10sImNvYXV0aG9yX3Byb2R1Y2VyX2Nhbl9zZWVfb3JnYW5pY19pbnNpZ2h0cyI6ZmFsc2UsImNvYXV0aG9yX3Byb2R1Y2VycyI6W3siZnVsbF9uYW1lIjoiQ2FsZWIgVG9ycmVzIiwiaWQiOiI1NTY1NDY5MDQwOCIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicGsiOiI1NTY1NDY5MDQwOCIsInByb2ZpbGVfcGljX2lkIjoiMzQxMzExMzU4NDAyMjg0ODU4NCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NTEyMzE4MjlfOTk3Njg3MjM4MzUyMjEwXzQ3MzY0ODU4ODEzODE2Mzk5NTZfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz00RXh1dktPZUYxZ1E3a052Z0UtRUFxcCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUMyRUFLakxFdUFXMlJKOG9tNWlFa2poV3lpS0sySjBHc2N6T0RvZmhURll3Jm9lPTY3QkIzRTQxJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJwZXJjZWl2ZWFpIn1dLCJjb2RlIjoiREdPOE9kZlN5cUciLCJjb2xsYWJfZm9sbG93X2J1dHRvbl9pbmZvIjp7ImlzX293bmVyX2luX2F1dGhvcl9leHAiOnRydWUsInNob3dfZm9sbG93X2J1dHRvbiI6dHJ1ZX0sImNvbW1lbnRfY291bnQiOjMyMywiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNyZWF0b3Jfdmlld2VyX2luc2lnaHRzIjpbXSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjE3Mzk5MjMxMTQxNTkyMzksImZiX2FnZ3JlZ2F0ZWRfY29tbWVudF9jb3VudCI6MCwiZmJfYWdncmVnYXRlZF9saWtlX2NvdW50IjowLCJmYl9saWtlX2NvdW50IjowLCJmYl9wbGF5X2NvdW50Ijo0NiwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxODA0NzU1NzI0NDI1MTg4NyIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfYXVkaW8iOnRydWUsImhhc19oaWdoX3Jpc2tfZ2VuX2FpX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJoYXNfbGlrZWQiOmZhbHNlLCJoYXNfcHJpdmF0ZWx5X2xpa2VkIjpmYWxzZSwiaGFzX3NoYXJlZF90b19mYiI6MCwiaGFzX3ZpZXdzX2ZldGNoaW5nIjp0cnVlLCJpZCI6IjM1NzEwNTY0MzEwNzgyNTUyMzgiLCJpZ19tZWRpYV9zaGFyaW5nX2Rpc2FibGVkIjpmYWxzZSwiaWdfcGxheV9jb3VudCI6MjE1MTgsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7ImFkZGl0aW9uYWxfaXRlbXMiOnsiZmlyc3RfZnJhbWUiOnsiaGVpZ2h0Ijo2MzksInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzkxOTg5MTJfNTk5NzA3MjA5NTU4NjY5XzY3ODc3MzQ4MTgyMTEyMjE2MjRfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0Mk5EQjRNVEV6Tmk1elpISXVaamN4T0RjNExtRmtaR2wwYVc5dVlXeGZZMjkyWlhKZlpuSmhiV1VpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUdBTWtmazRRWjRRUTdrTnZnRnlvTkNmJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ29MSWVyVFZreExDMEUtWTVKc1JfV0p0TEFZLW5HT2xoUDlqZlRWVGpYZUEmb2U9NjdCQjUyNjQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfSwiaWd0dl9maXJzdF9mcmFtZSI6eyJoZWlnaHQiOjYzOSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTE5ODkxMl81OTk3MDcyMDk1NTg2NjlfNjc4NzczNDgxODIxMTIyMTYyNF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQyTkRCNE1URXpOaTV6WkhJdVpqY3hPRGM0TG1Ga1pHbDBhVzl1WVd4ZlkyOTJaWEpmWm5KaGJXVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9R0FNa2ZrNFFaNFFRN2tOdmdGeW9OQ2YmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDb0xJZXJUVmt4TEMwRS1ZNUpzUl9XSnRMQVktbkdPbGhQOWpmVFZUalhlQSZvZT02N0JCNTI2NCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9LCJzbWFydF9mcmFtZSI6bnVsbH0sIml0ZW1zIjpbeyJoZWlnaHQiOjYzOSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDgzMDAyM18xMzQwMTY3OTMwNjYyOTg3XzUxMDAzMjQxNTM4ODU2MjQxNzRfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0Mk5EQjRNVEV6Tmk1elpISXVaamN4T0RjNExtNW1jbUZ0WlY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU1fOFFKWklZOUg0UTdrTnZnRkxxck1iJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTVRBMU5qUXpNVEEzT0RJMU5USXpPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUF4SFJpVHc2aEp4QWdRbHdDZWhtNWNldnBEZ19mMXdia3VQdDNjTlZWbkFnJm9lPTY3QkIzMzhEJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dLCJzY3J1YmJlcl9zcHJpdGVzaGVldF9pbmZvX2NhbmRpZGF0ZXMiOnsiZGVmYXVsdCI6eyJmaWxlX3NpemVfa2IiOjQyOSwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjEyNDYsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAyOTE0NThfMTg4NzUzMzg5MjA1NjY5MV80Njc0NDYwMTgzMDIzMzg1NzAyX24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1lb2k3S3UwX0Z6Y1E3a052Z0ZfSVVzbCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWURZbWpkaWRlZFlvNjhyN29mQlYtQ3VMZmtrbk44cXY2a0hycEdtNDhkLWpRJm9lPTY3QkI1NDQ4Jl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjMyNjk5MDQ3NjE5MDQ3NjIsInRodW1ibmFpbF9oZWlnaHQiOjE3OCwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjM0LjMzNH19fSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2FydGlzdF9waWNrIjpmYWxzZSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOnRydWUsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOmZhbHNlLCJpc19kYXNoX2VsaWdpYmxlIjoxLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfc29jaWFsX3VmaV9kaXNhYmxlZCI6ZmFsc2UsImlzX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fdmlld2VyX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX3RoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbGlnaWJsZSI6dHJ1ZSwiaXNfdmlkZW8iOnRydWUsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtZWRpYV9jcm9wcGluZ19pbmZvIjp7InNxdWFyZV9jcm9wIjp7ImNyb3BfYm90dG9tIjowLjAsImNyb3BfbGVmdCI6MC4wLCJjcm9wX3JpZ2h0IjowLjAsImNyb3BfdG9wIjowLjB9fSwibWVkaWFfZm9ybWF0IjoidmlkZW8iLCJtZWRpYV9uYW1lIjoicmVlbCIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjIsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6bnVsbCwibnVtYmVyX29mX3F1YWxpdGllcyI6OCwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcmlnaW5hbF9oZWlnaHQiOjE5MjAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NzEwNTY0MzEwNzgyNTUyMzgiLCJwbGF5X2NvdW50IjoyMTU2NCwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjbGlwcyIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX29wZW5fY29sbGFiX2JvdHRvbXNoZWV0X29uX2ZhY2VwaWxlX3RhcCI6ZmFsc2UsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFnZ2VkX3VzZXJzIjp7ImluIjpbeyJwb3NpdGlvbiI6WzAuMCwwLjBdLCJzaG93X2NhdGVnb3J5X29mX3VzZXIiOmZhbHNlLCJ1c2VyIjp7ImZ1bGxfbmFtZSI6IkNhbGViIFRvcnJlcyIsImlkIjoiNTU2NTQ2OTA0MDgiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQxMzExMzU4NDAyMjg0ODU4NCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NTEyMzE4MjlfOTk3Njg3MjM4MzUyMjEwXzQ3MzY0ODU4ODEzODE2Mzk5NTZfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz00RXh1dktPZUYxZ1E3a052Z0UtRUFxcCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUMyRUFLakxFdUFXMlJKOG9tNWlFa2poV3lpS0sySjBHc2N6T0RvZmhURll3Jm9lPTY3QkIzRTQxJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJwZXJjZWl2ZWFpIn19XX0sInRha2VuX2F0IjoxNzM5OTIzMTg5LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDgzMDAyM18xMzQwMTY3OTMwNjYyOTg3XzUxMDAzMjQxNTM4ODU2MjQxNzRfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0Mk5EQjRNVEV6Tmk1elpISXVaamN4T0RjNExtNW1jbUZ0WlY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU1fOFFKWklZOUg0UTdrTnZnRkxxck1iJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTVRBMU5qUXpNVEEzT0RJMU5USXpPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUF4SFJpVHc2aEp4QWdRbHdDZWhtNWNldnBEZ19mMXdia3VQdDNjTlZWbkFnJm9lPTY3QkIzMzhEJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJjb3J5LmNyZXdzIl0sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQ1ODI1NzYzNjc4OCwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJBcnRpZmljaWFsIEludGVsbGlnZW5jZSIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiI1ODEzNDMwOTkyMSIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjMxODA1NTk2MzUwMzYzMDQ0NDAiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzcxNzI0ODEwXzEwMDA4MTY5NTU5MjU2ODI4XzI3MjM4Nzg0MjUyNTQ2MTA0NDNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9S2YwRHpTc2NXeTBRN2tOdmdHY3FjM2ImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBRmx2M0IyNF92M3JKT1pqbmZHdTNtSERycWxub2hDU0VTeFpZdnpEV3I1USZvZT02N0JCNTJFRSZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6InBvd2VyLmFpIn0sInZpZGVvX2NvZGVjIjoiYXYwMS4wLjAxTS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjM0LjMzNCwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fc3VidGl0bGVzX2xvY2FsZSI6ImVuX1VTIiwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFPcUFlRzhsYXZ4bGllZVdCUFlxYWVCZWhDZlhQUFI2Nk5rWk1Ta2h5SnFPaXNyTGhQYTM0REkxd2p3OU8tOHZkdFp5LWNZanpFb25CS29ONXNfbDFPSzg5VFpINDBIQUVFaUV5RS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFMk5qZzVNVFUxT0RBME9Ua3pOelVzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURURWxRVXk1RE15NDNNakF1WkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMyZ2cz0zZDliOWQxZmM0ZGE0ZDRhJl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzlHTXpReFJEVkVSVFEzUWtaQ01FUXdOelUyUkRrNU16TXhPRFJHTWpCQ01sOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkTE0wOXVhSGhzYnpRelRrZEZXVU5CU0VoVk9FcEhZVFowWkdGaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp0N1dyNFhXOV9ZRkZRSW9Ba016TEJkQVFTcWZ2bmJJdEJnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlDNTRnQmdBX25ySDlPa2llSlJHYzBxMU5iRFo0WnY0U195SGdHUHZvUHdXZyZvZT02N0I3NDQzMSZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjg5MDM0OCwiaGVpZ2h0IjoxMjgwLCJpZCI6IjEyNzQ2Nzg2MjA0MjgwNDd2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU9xQWVHOGxhdnhsaWVlV0JQWXFhZUJlaENmWFBQUjY2TmtaTVNraHlKcU9pc3JMaFBhMzRESTF3anc5Ty04dmR0WnktY1lqekVvbkJLb041c19sMU9LODlUWkg0MEhBRUVpRXlFLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUyTmpnNU1UVTFPREEwT1Rrek56VXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJnZzPTNkOWI5ZDFmYzRkYTRkNGEmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDOUdNelF4UkRWRVJUUTNRa1pDTUVRd056VTJSRGs1TXpNeE9EUkdNakJDTWw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRMTTA5dWFIaHNielF6VGtkRldVTkJTRWhWT0VwSFlUWjBaR0ZpY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnQ3V3I0WFc5X1lGRlFJb0FrTXpMQmRBUVNxZnZuYkl0QmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUM1NGdCZ0FfbnJIOU9raWVKUkdjMHExTmJEWjRadjRTX3lIZ0dQdm9Qd1dnJm9lPTY3Qjc0NDMxJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjg5MDM0OCwiaGVpZ2h0IjoxMjgwLCJpZCI6IjEyNzQ2Nzg2MjA0MjgwNDd2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU9xQWVHOGxhdnhsaWVlV0JQWXFhZUJlaENmWFBQUjY2TmtaTVNraHlKcU9pc3JMaFBhMzRESTF3anc5Ty04dmR0WnktY1lqekVvbkJLb041c19sMU9LODlUWkg0MEhBRUVpRXlFLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUyTmpnNU1UVTFPREEwT1Rrek56VXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJnZzPTNkOWI5ZDFmYzRkYTRkNGEmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDOUdNelF4UkRWRVJUUTNRa1pDTUVRd056VTJSRGs1TXpNeE9EUkdNakJDTWw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRMTTA5dWFIaHNielF6VGtkRldVTkJTRWhWT0VwSFlUWjBaR0ZpY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnQ3V3I0WFc5X1lGRlFJb0FrTXpMQmRBUVNxZnZuYkl0QmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUM1NGdCZ0FfbnJIOU9raWVKUkdjMHExTmJEWjRadjRTX3lIZ0dQdm9Qd1dnJm9lPTY3Qjc0NDMxJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjg5MDM0OCwiaGVpZ2h0IjoxMjgwLCJpZCI6IjEyNzQ2Nzg2MjA0MjgwNDd2IiwidHlwZSI6MTAzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUU9xQWVHOGxhdnhsaWVlV0JQWXFhZUJlaENmWFBQUjY2TmtaTVNraHlKcU9pc3JMaFBhMzRESTF3anc5Ty04dmR0WnktY1lqekVvbkJLb041c19sMU9LODlUWkg0MEhBRUVpRXlFLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUyTmpnNU1UVTFPREEwT1Rrek56VXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFRFbFFVeTVETXk0M01qQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAzJnZzPTNkOWI5ZDFmYzRkYTRkNGEmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDOUdNelF4UkRWRVJUUTNRa1pDTUVRd056VTJSRGs1TXpNeE9EUkdNakJDTWw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRMTTA5dWFIaHNielF6VGtkRldVTkJTRWhWT0VwSFlUWjBaR0ZpY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnQ3V3I0WFc5X1lGRlFJb0FrTXpMQmRBUVNxZnZuYkl0QmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUM1NGdCZ0FfbnJIOU9raWVKUkdjMHExTmJEWjRadjRTX3lIZ0dQdm9Qd1dnJm9lPTY3Qjc0NDMxJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH1dfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fbW9kaWZ5X2Nhcm91c2VsIjp0cnVlLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTYyOTY4NiwiY3JlYXRlZF9hdF91dGMiOjE3Mzk2Mjk2ODYsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI2lhIiwiI2ludGVsaWdlbmNpYWFydGlmaWNpYWwiLCIjY2hhdGdwdCIsIiNoZXJyYW1pZW50YXNkaWdpdGFsZXMiLCIjbmVnb2Npb3NvbmxpbmUiLCIjZW1wcmVuZGVkb3Jlc29ubGluZSIsIiNtYXJrZXRpbmdkaWdpdGFsIl0sImlkIjoiMzU2ODU5NDg5ODkxMzk1MDE3NiIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbIkBjZXJlYnJvZGlnaXRhbC5pYSJdLCJwayI6IjE3OTMzMDkyMzE2ODc4NzYxIiwicHJpdmF0ZV9yZXBseV9zdGF0dXMiOjAsInNoYXJlX2VuYWJsZWQiOmZhbHNlLCJ0ZXh0IjoiOSBoZXJyYW1pZW50YXMgZGUgSUEgcXVlIHRvZG8gZW1wcmVuZGVkb3IgZGViZSBjb25vY2VyIOKchVxuXG5EZXNibG9xdWVhIGVsIEtpdCBFc2VuY2lhbCBkZSBJQSBwYXJhIFByaW5jaXBpYW50ZXMgbWVkaWFudGUgZWwgZW5sYWNlIGRlIG51ZXN0cm8gcGVyZmlsIG8gY29tZW50YW5kbyDigJxRdWllcm8gSUHigJ0g8J+SjlxuXG5Tb2xvIGR1cmFudGUgbGFzIHByw7N4aW1hcyA3MiBob3JhcyBkZXNjdWVudG8gZGUgbGFuemFtaWVudG8gZGVsIDYwJSEgVG9tYSBhY2Npw7NuIHLDoXBpZG8hIPCfjoFcblxu4oCUXG5cblPDrWd1ZW5vcyBAY2VyZWJyb2RpZ2l0YWwuaWEg8J+RiPCfj7tcblPDrWd1ZW5vcyBAY2VyZWJyb2RpZ2l0YWwuaWEg8J+RiPCfj7tcblxu4oCUXG5cbiNpYSAjaW50ZWxpZ2VuY2lhYXJ0aWZpY2lhbCAjY2hhdGdwdCAjaGVycmFtaWVudGFzZGlnaXRhbGVzICNuZWdvY2lvc29ubGluZSAjZW1wcmVuZGVkb3Jlc29ubGluZSAjbWFya2V0aW5nZGlnaXRhbCIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0NDkyMTI3NTc1MDAsImZ1bGxfbmFtZSI6IkludGVsaWdlbmNpYSBBcnRpZmljaWFsIHwgQ2hhdEdQVCB8IEVtcHJlbmRlZG9yZXMiLCJpZCI6IjQ5MjYwMDAwNDI1IiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjMwNzQzNDYwNjE4MjQ0OTE1MjIiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzM5MTMxNTc2XzM0NTExODc3MjUxMjg4NzRfODE5MjkzMTg5OTg1Nzk0MTA0MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1XNWd1Tzc0VlBQY1E3a052Z0ZuLUpTUSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFyM2VpSzR3RUI2bTZxOUEwSVNwdlFvajFkU3h0VFViMnBub2piOGptVjVBJm9lPTY3QkIzODkwJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJjZXJlYnJvZGlnaXRhbC5pYSJ9LCJ1c2VyX2lkIjoiNDkyNjAwMDA0MjUifSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjYXJvdXNlbF9tZWRpYSI6W3siY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2ODU5NDg5ODkxMzk1MDE3Nl80OTI2MDAwMDQyNSIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1Njg1OTQ4NjY4MTA3NjI5MTQiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NzM0NTE5XzE4MDI4NDM1OTE2NjQwNDI2XzE3MDc2OTUxNDUwMjE4ODU4NzFfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0zUmtOVklKRlpFTVE3a052Z0VjYlh0MyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVORGcyTmpneE1EYzJNamt4TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCcnIxTHA1NFA2UDRtOGdBYzFuNkdOVUxqWWJKWWdwamRUM3ZFcUt4OFZrdyZvZT02N0JCNTUyQSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NzM0NTE5XzE4MDI4NDM1OTE2NjQwNDI2XzE3MDc2OTUxNDUwMjE4ODU4NzFfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M1JrTlZJSkZaRU1RN2tOdmdFY2JYdDMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TkRnMk5qZ3hNRGMyTWpreE5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQlNTZ2xIeVRqTW9jekNMcXVFUkpiVmllSkZySEw0U1ptVmM5MmhXMkhwUWcmb2U9NjdCQjU1MkEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1Njg1OTQ4NjY4MTA3NjI5MTQiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NjI5NjgwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTczNDUxOV8xODAyODQzNTkxNjY0MDQyNl8xNzA3Njk1MTQ1MDIxODg1ODcxX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M1JrTlZJSkZaRU1RN2tOdmdFY2JYdDMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TkRnMk5qZ3hNRGMyTWpreE5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQnJyMUxwNTRQNlA0bThnQWMxbjZHTlVMalliSllncGpkVDN2RXFLeDhWa3cmb2U9NjdCQjU1MkEmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njg1OTQ4OTg5MTM5NTAxNzZfNDkyNjAwMDA0MjUiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaGFzX2F1ZGlvIjpmYWxzZSwiaWQiOiIzNTY4NTkxNzY4OTMxMzg4OTYwIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDcyNjM3MjIzXzE4MDI4NDM2NDIzNjQwNDI2XzY2NzgyODE1MTQyNDcyNzAxNzdfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1JVXN6X2VlUkc5a1E3a052Z0hnY0lJSyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVNVGMyT0Rrek1UTTRPRGsyTUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEOUJjTmJSTDV6N0c0b1gtREpRT0RSVGJoY1Vsdm4tTE9ZOEJJXzdSX2J3USZvZT02N0JCNTE4RSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoyMTQsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzkxNjM5NjVfMTA0ODYwODUzMzY3NDEwMl8xMTkxNjUwMDk1ODMxODYwMTkzX24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz16dDFBRFl3bWFGOFE3a052Z0ZTSGlmciZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUIzSHo4WDdkMEdNVWN4TFZzMFpvT0RJOVl3bjNaS0xWdEoxd1RrNFFzN2RBJm9lPTY3QkI0NTFDJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjU3MTQyODU3MTQyODU3MTQsInRodW1ibmFpbF9oZWlnaHQiOjEyNiwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjYwLjB9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6NCwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY4NTkxNzY4OTMxMzg4OTYwIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTYyOTY4MSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzI2MzcyMjNfMTgwMjg0MzY0MjM2NDA0MjZfNjY3ODI4MTUxNDI0NzI3MDE3N19uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUlVc3pfZWVSRzlrUTdrTnZnSGdjSUlLJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RVNU1UYzJPRGt6TVRNNE9EazJNQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUQ5QmNOYlJMNXo3RzRvWC1ESlFPRFJUYmhjVWx2bi1MT1k4QklfN1JfYndRJm9lPTY3QkI1MThFJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fY29kZWMiOiJhdjAxLjAuMDRNLjA4LjAuMTExLjAxLjAxLjAxLjAiLCJ2aWRlb19kdXJhdGlvbiI6NjAuMCwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT1lCd28zM0prSm9Pa29mVUQxSm93THBGb0lybTNsc0N4cjhIbFAtWV9LcmM0VHVhLVVjVEVNRVBWLTAxcG1iZHgtRS1ORkhxMElCd1RDUU4zMmZiM1FyelRfejdsamRxWVpNZjgubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVXlNemsxT1RrM05qZzNORGMxTXl3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAxJnZzPWFiMDBhMjQ3NDk0NTczNTYmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODNNVFJEUWpkQk1UTXlRalF3TWpVNU5rTXpNakEzTmtJNE5qVXlPREZCUlY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYUN6T0tFdnFMdUFSVUNLQUpETXl3WFFFNEFBQUFBQUFBWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQkZQcWJBajdTb3F1VmtrRDkxRXJjSUlMbWpRWkFXQl9uOHdxX2ZWSHpteFEmb2U9NjdCNzY4MTImX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjo2NTA0MTgsImhlaWdodCI6MTM1MCwiaWQiOiIxMjgyNjQ0NTU5NDU2NjExdiIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT1lCd28zM0prSm9Pa29mVUQxSm93THBGb0lybTNsc0N4cjhIbFAtWV9LcmM0VHVhLVVjVEVNRVBWLTAxcG1iZHgtRS1ORkhxMElCd1RDUU4zMmZiM1FyelRfejdsamRxWVpNZjgubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVXlNemsxT1RrM05qZzNORGMxTXl3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAxJnZzPWFiMDBhMjQ3NDk0NTczNTYmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODNNVFJEUWpkQk1UTXlRalF3TWpVNU5rTXpNakEzTmtJNE5qVXlPREZCUlY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYUN6T0tFdnFMdUFSVUNLQUpETXl3WFFFNEFBQUFBQUFBWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQkZQcWJBajdTb3F1VmtrRDkxRXJjSUlMbWpRWkFXQl9uOHdxX2ZWSHpteFEmb2U9NjdCNzY4MTImX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjY1MDQxOCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEyODI2NDQ1NTk0NTY2MTF2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPWUJ3bzMzSmtKb09rb2ZVRDFKb3dMcEZvSXJtM2xzQ3hyOEhsUC1ZX0tyYzRUdWEtVWNURU1FUFYtMDFwbWJkeC1FLU5GSHEwSUJ3VENRTjMyZmIzUXJ6VF96N2xqZHFZWk1mOC5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pVeU16azFPVGszTmpnM05EYzFNeXdpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmdnM9YWIwMGEyNDc0OTQ1NzM1NiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4M01UUkRRamRCTVRNeVFqUXdNalU1TmtNek1qQTNOa0k0TmpVeU9ERkJSVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhQ3pPS0V2cUx1QVJVQ0tBSkRNeXdYUUU0QUFBQUFBQUFZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlCRlBxYkFqN1NvcXVWa2tEOTFFcmNJSUxtalFaQVdCX244d3FfZlZIem14USZvZT02N0I3NjgxMiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6NjUwNDE4LCJoZWlnaHQiOjEzNTAsImlkIjoiMTI4MjY0NDU1OTQ1NjYxMXYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9ZQndvMzNKa0pvT2tvZlVEMUpvd0xwRm9Jcm0zbHNDeHI4SGxQLVlfS3JjNFR1YS1VY1RFTUVQVi0wMXBtYmR4LUUtTkZIcTBJQndUQ1FOMzJmYjNRcnpUX3o3bGpkcVlaTWY4Lm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalV5TXprMU9UazNOamczTkRjMU15d2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZ2cz1hYjAwYTI0NzQ5NDU3MzU2Jl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgzTVRSRFFqZEJNVE15UWpRd01qVTVOa016TWpBM05rSTROalV5T0RGQlJWOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FDek9LRXZxTHVBUlVDS0FKRE15d1hRRTRBQUFBQUFBQVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUJGUHFiQWo3U29xdVZra0Q5MUVyY0lJTG1qUVpBV0Jfbjh3cV9mVkh6bXhRJm9lPTY3Qjc2ODEyJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY4NTk0ODk4OTEzOTUwMTc2XzQ5MjYwMDAwNDI1IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6ZmFsc2UsImlkIjoiMzU2ODU5MTc3MDU1ODg0NTU3OSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3MjcwMjU1Nl8xODAyODQzNjIxMDY0MDQyNl81MzEzMjQyNzc4NDA1MjYyMTI3X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1wTm9Mb2ktcjlVVVE3a052Z0d4dmRPMyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVNVGMzTURVMU9EZzBOVFUzT1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCZUExNjlWTmw0ZDYxSFRTWTZXVUVUOVQxZlY5NTNlV0htNEhLclBEMVQzdyZvZT02N0JCNjc4RiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoyMzksIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA1NDcxODZfMTA4MjI1Njg4MDI1MTg2OF82NTY5OTMwMjk5NTI1NjkyODQyX24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1OOUVsT1d4bXZWc1E3a052Z0VFRHdCSyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFuN2N5N3p6RTNDNWdUNDdHc1RKbzhhZ2h6SVVHRVVnWTQ3aEhfNmR3elpBJm9lPTY3QkI1RURBJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjEzMTEwNDc2MTkwNDc2MTkyLCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjoxMy43NjZ9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Miwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY4NTkxNzcwNTU4ODQ1NTc5IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTYyOTY4MCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzI3MDI1NTZfMTgwMjg0MzYyMTA2NDA0MjZfNTMxMzI0Mjc3ODQwNTI2MjEyN19uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9cE5vTG9pLXI5VVVRN2tOdmdHeHZkTzMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TVRjM01EVTFPRGcwTlRVM09RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQmVBMTY5Vk5sNGQ2MUhUU1k2V1VFVDlUMWZWOTUzZVdIbTRIS3JQRDFUM3cmb2U9NjdCQjY3OEYmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wNE0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjoxMy43NjYsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W10sInZpZGVvX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVB0RW9sMjBBbkVQREVyeVpBY0JOek4wSm5EcFdJdlhRenFIN19nX3kyM1VXb0k3UGg3cDBtTlBHb2Vybmx5OXJ4c3JQNUhnMGwxZVJfdEh0MTVRRUlETnNDS0ZibkktejZvLXFVLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV6TlRreE9UWXdPVFV3T0RZMk56QXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmdnM9YTcyNzRlYTU5ZWU1MjI3Jl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlHTnpSQ01qUTFRVGswTUVSRVJFRTRORE5DUlRZd09EZEVOa1kxTjBKQ05GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FjZ2V5RzBJdnFCQlVDS0FKRE15d1hRQ3VJTVNicGVOVVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUN0eUlOZloyYzg1SHZBSVlJQjNKOHJDRml3QW5wN0wwS21RdGZmVC1QUzF3Jm9lPTY3Qjc2QUMxJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6MjE0MDU3LCJoZWlnaHQiOjEzNTAsImlkIjoiMTU1MjQxNDE0NTM5NTgyOHYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVB0RW9sMjBBbkVQREVyeVpBY0JOek4wSm5EcFdJdlhRenFIN19nX3kyM1VXb0k3UGg3cDBtTlBHb2Vybmx5OXJ4c3JQNUhnMGwxZVJfdEh0MTVRRUlETnNDS0ZibkktejZvLXFVLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV6TlRreE9UWXdPVFV3T0RZMk56QXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmdnM9YTcyNzRlYTU5ZWU1MjI3Jl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlHTnpSQ01qUTFRVGswTUVSRVJFRTRORE5DUlRZd09EZEVOa1kxTjBKQ05GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FjZ2V5RzBJdnFCQlVDS0FKRE15d1hRQ3VJTVNicGVOVVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUN0eUlOZloyYzg1SHZBSVlJQjNKOHJDRml3QW5wN0wwS21RdGZmVC1QUzF3Jm9lPTY3Qjc2QUMxJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoyMTQwNTcsImhlaWdodCI6MTM1MCwiaWQiOiIxNTUyNDE0MTQ1Mzk1ODI4diIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUHRFb2wyMEFuRVBERXJ5WkFjQk56TjBKbkRwV0l2WFF6cUg3X2dfeTIzVVdvSTdQaDdwMG1OUEdvZXJubHk5cnhzclA1SGcwbDFlUl90SHQxNVFFSUROc0NLRmJuSS16Nm8tcVUubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXpOVGt4T1RZd09UVXdPRFkyTnpBc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZ2cz1hNzI3NGVhNTllZTUyMjcmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUdOelJDTWpRMVFUazBNRVJFUkVFNE5ETkNSVFl3T0RkRU5rWTFOMEpDTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYWNnZXlHMEl2cUJCVUNLQUpETXl3WFFDdUlNU2JwZU5VWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQ3R5SU5mWjJjODVIdkFJWUlCM0o4ckNGaXdBbnA3TDBLbVF0ZmZULVBTMXcmb2U9NjdCNzZBQzEmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjIxNDA1NywiaGVpZ2h0IjoxMzUwLCJpZCI6IjE1NTI0MTQxNDUzOTU4Mjh2IiwidHlwZSI6MTAzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQdEVvbDIwQW5FUERFcnlaQWNCTnpOMEpuRHBXSXZYUXpxSDdfZ195MjNVV29JN1BoN3AwbU5QR29lcm5seTlyeHNyUDVIZzBsMWVSX3RIdDE1UUVJRE5zQ0tGYm5JLXo2by1xVS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFek5Ua3hPVFl3T1RVd09EWTJOekFzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0JnZzPWE3Mjc0ZWE1OWVlNTIyNyZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5R056UkNNalExUVRrME1FUkVSRUU0TkROQ1JUWXdPRGRFTmtZMU4wSkNORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhY2dleUcwSXZxQkJVQ0tBSkRNeXdYUUN1SU1TYnBlTlVZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlDdHlJTmZaMmM4NUh2QUlZSUIzSjhyQ0Zpd0FucDdMMEttUXRmZlQtUFMxdyZvZT02N0I3NkFDMSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2ODU5NDg5ODkxMzk1MDE3Nl80OTI2MDAwMDQyNSIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOmZhbHNlLCJpZCI6IjM1Njg1OTE3NzExNjI3ODUzODQiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzkzNTY3NzhfMTgwMjg0MzY1NTg2NDA0MjZfNjgxMTY0NzE3Mzg1ODU2OTkyMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UTdqRjMwdU8xTjhRN2tOdmdIUXFJdG0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TVRjM01URTJNamM0TlRNNE5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1o5TVpnZzFwU2s5alVlaWdxenlmNkVVLXFaYktRZDFGbTE3czhFMGVGSEEmb2U9NjdCQjVGQjMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6Mjc5LCJtYXhfdGh1bWJuYWlsc19wZXJfc3ByaXRlIjoxMDUsInJlbmRlcmVkX3dpZHRoIjo5Niwic3ByaXRlX2hlaWdodCI6ODgyLCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDQzMjE2Xzk3Mzk2ODM2ODIwMDM3NF81MDA4NzQ1OTU4MTk5MjkxNDM2X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz10b1hHa1lwakVib1E3a052Z0VZcXFkUSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFkaG5nX0RLV2Vwam9hWnN0NGpVeWtoenJOd3BCUk81V1BXRm5vTWYxWEJ3Jm9lPTY3QkI0OTM5Jl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjU3MTQyODU3MTQyODU3MTQsInRodW1ibmFpbF9oZWlnaHQiOjEyNiwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjYwLjB9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Miwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY4NTkxNzcxMTYyNzg1Mzg0IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTYyOTY4MCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzkzNTY3NzhfMTgwMjg0MzY1NTg2NDA0MjZfNjgxMTY0NzE3Mzg1ODU2OTkyMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UTdqRjMwdU8xTjhRN2tOdmdIUXFJdG0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TVRjM01URTJNamM0TlRNNE5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1o5TVpnZzFwU2s5alVlaWdxenlmNkVVLXFaYktRZDFGbTE3czhFMGVGSEEmb2U9NjdCQjVGQjMmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wNE0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjo2MC4wLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFNOFlRb0VVSEJEeG5lNWZiMnVoQ291M3RtX3JGTmtFa09IekJCOFhqRnZtcEQ3dXRwQkVibTJrbVpucTQ2Ym5QOVA2MG1yLTlaNFlhWUx0am5DWUxWT0xtZC1xVDlLQ2p6b1BYMC5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFd01URTBOVEEwT1RReU1EWXpOVEVzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJnZzPWE5NzgxNjYzZmE2NjFlMDcmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODJSRFF5TWtaQlJqY3pRemMyTmtaQk1UZzFOVFF6T1VVMk1qQkdSa05CTTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYWVodEsybGZyTEF4VUNLQUpETXl3WFFFNEFBQUFBQUFBWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQ21ELTRUSnlRbDdtWWlISFE5TE5MY1RDVzBpZElMTk02U2JjZUFaUXNsQ1Emb2U9NjdCNzU4OEYmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjoyODQ0MjQsImhlaWdodCI6MTM1MCwiaWQiOiIxMzU5NDc0MzcyMTY0MzYwdiIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTThZUW9FVUhCRHhuZTVmYjJ1aENvdTN0bV9yRk5rRWtPSHpCQjhYakZ2bXBEN3V0cEJFYm0ya21abnE0NmJuUDlQNjBtci05WjRZYVlMdGpuQ1lMVk9MbWQtcVQ5S0Nqem9QWDAubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXdNVEUwTlRBME9UUXlNRFl6TlRFc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZ2cz1hOTc4MTY2M2ZhNjYxZTA3Jl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgyUkRReU1rWkJSamN6UXpjMk5rWkJNVGcxTlRRek9VVTJNakJHUmtOQk0xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FlaHRLMmxmckxBeFVDS0FKRE15d1hRRTRBQUFBQUFBQVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUNtRC00VEp5UWw3bVlpSEhROUxOTGNUQ1cwaWRJTE5NNlNiY2VBWlFzbENRJm9lPTY3Qjc1ODhGJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoyODQ0MjQsImhlaWdodCI6MTM1MCwiaWQiOiIxMzU5NDc0MzcyMTY0MzYwdiIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTThZUW9FVUhCRHhuZTVmYjJ1aENvdTN0bV9yRk5rRWtPSHpCQjhYakZ2bXBEN3V0cEJFYm0ya21abnE0NmJuUDlQNjBtci05WjRZYVlMdGpuQ1lMVk9MbWQtcVQ5S0Nqem9QWDAubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXdNVEUwTlRBME9UUXlNRFl6TlRFc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZ2cz1hOTc4MTY2M2ZhNjYxZTA3Jl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgyUkRReU1rWkJSamN6UXpjMk5rWkJNVGcxTlRRek9VVTJNakJHUmtOQk0xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FlaHRLMmxmckxBeFVDS0FKRE15d1hRRTRBQUFBQUFBQVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUNtRC00VEp5UWw3bVlpSEhROUxOTGNUQ1cwaWRJTE5NNlNiY2VBWlFzbENRJm9lPTY3Qjc1ODhGJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoyODQ0MjQsImhlaWdodCI6MTM1MCwiaWQiOiIxMzU5NDc0MzcyMTY0MzYwdiIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTThZUW9FVUhCRHhuZTVmYjJ1aENvdTN0bV9yRk5rRWtPSHpCQjhYakZ2bXBEN3V0cEJFYm0ya21abnE0NmJuUDlQNjBtci05WjRZYVlMdGpuQ1lMVk9MbWQtcVQ5S0Nqem9QWDAubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXdNVEUwTlRBME9UUXlNRFl6TlRFc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZ2cz1hOTc4MTY2M2ZhNjYxZTA3Jl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgyUkRReU1rWkJSamN6UXpjMk5rWkJNVGcxTlRRek9VVTJNakJHUmtOQk0xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FlaHRLMmxmckxBeFVDS0FKRE15d1hRRTRBQUFBQUFBQVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUNtRC00VEp5UWw3bVlpSEhROUxOTGNUQ1cwaWRJTE5NNlNiY2VBWlFzbENRJm9lPTY3Qjc1ODhGJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY4NTk0ODk4OTEzOTUwMTc2XzQ5MjYwMDAwNDI1IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6ZmFsc2UsImlkIjoiMzU2ODU5MTc3MDY1OTUxNjU2MSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3MjU2NzUzN18xODAyODQzNjM2MzY0MDQyNl83MzQzNjUxNzE5MzY0NTQ0NDg0X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1pZkZHUkZVbWFjMFE3a052Z0dCY0RrcyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVNVGMzTURZMU9UVXhOalUyTVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEbERpYjdISFNBdlhBRVdPa1JoRDM5YjAtM2lRX19SRnk5Mnp2dFlFdUZQZyZvZT02N0JCNjYzRCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoyNzAsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk1MTI2NzlfNjE3NTk0MTg0MTk4MzA1XzIyMzM2NTAwNjU5MDM1OTM5NTlfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWVLdm9JV3ZJTHpzUTdrTnZnRTJDekVaJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQzhwVWV6UnBqQkRyX1hPcGVzdms0UEVTQXhMU1B2MlVOTk8xUHFXaFJKencmb2U9NjdCQjNCRUMmX25jX3NpZD0yMDExYWQiXSwic3ByaXRlX3dpZHRoIjoxNTAwLCJ0aHVtYm5haWxfZHVyYXRpb24iOjAuNDEzOTYxOTA0NzYxOTA0NzUsInRodW1ibmFpbF9oZWlnaHQiOjEyNiwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjQzLjQ2Nn19fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1Njg1OTE3NzA2NTk1MTY1NjEiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NjI5NjgwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3MjU2NzUzN18xODAyODQzNjM2MzY0MDQyNl83MzQzNjUxNzE5MzY0NTQ0NDg0X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1pZkZHUkZVbWFjMFE3a052Z0dCY0RrcyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVNVGMzTURZMU9UVXhOalUyTVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEbERpYjdISFNBdlhBRVdPa1JoRDM5YjAtM2lRX19SRnk5Mnp2dFlFdUZQZyZvZT02N0JCNjYzRCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjQzLjQ2NiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUEZtSkthc3ZvVWE0bVl4WTY0ZW9oUUdyRGE5MDlBRm0xR2VrZXJUaTNvY011Ty0wY09YSmE0SnhPM0VVNlp6YXVmc01Sajl2dG5CSzdOaW93Zl9McWliMm9kNWFmTGpzUkFFeFEubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXpNRGt4T0Rjek1qWTBNamMwTml3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTExJnZzPTZlMmU0OWVlZDUyZjVjNWImX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODFOVFJDTURZNE1VRTRNVVkzUWpJNE5rSkRRa1U0T1RnMU1rWXpSVFU0Tmw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYjA1b2Z2cHZTZUFoVUNLQUpETXl3WFFFVzdwZU5UOTg4WUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZRDk3Z1kxdFNFTTgtTTh3NEdoRVJsb1dVa054Z1MzY1ZZWGR1UjRWcTR1encmb2U9NjdCNzQ2NjQmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjoxOTQzNjAsImhlaWdodCI6MTM1MCwiaWQiOiIxMzAwODY3ODA3ODM5MzcydiIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUEZtSkthc3ZvVWE0bVl4WTY0ZW9oUUdyRGE5MDlBRm0xR2VrZXJUaTNvY011Ty0wY09YSmE0SnhPM0VVNlp6YXVmc01Sajl2dG5CSzdOaW93Zl9McWliMm9kNWFmTGpzUkFFeFEubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXpNRGt4T0Rjek1qWTBNamMwTml3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTExJnZzPTZlMmU0OWVlZDUyZjVjNWImX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODFOVFJDTURZNE1VRTRNVVkzUWpJNE5rSkRRa1U0T1RnMU1rWXpSVFU0Tmw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYjA1b2Z2cHZTZUFoVUNLQUpETXl3WFFFVzdwZU5UOTg4WUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZRDk3Z1kxdFNFTTgtTTh3NEdoRVJsb1dVa054Z1MzY1ZZWGR1UjRWcTR1encmb2U9NjdCNzQ2NjQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjE5NDM2MCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEzMDA4Njc4MDc4MzkzNzJ2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQRm1KS2Fzdm9VYTRtWXhZNjRlb2hRR3JEYTkwOUFGbTFHZWtlclRpM29jTXVPLTBjT1hKYTRKeE8zRVU2WnphdWZzTVJqOXZ0bkJLN05pb3dmX0xxaWIyb2Q1YWZManNSQUV4US5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZek1Ea3hPRGN6TWpZME1qYzBOaXdpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTEmdnM9NmUyZTQ5ZWVkNTJmNWM1YiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4MU5UUkNNRFk0TVVFNE1VWTNRakk0TmtKRFFrVTRPVGcxTWtZelJUVTRObDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNiMDVvZnZwdlNlQWhVQ0tBSkRNeXdYUUVXN3BlTlQ5ODhZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlEOTdnWTF0U0VNOC1NOHc0R2hFUmxvV1VrTnhnUzNjVllYZHVSNFZxNHV6dyZvZT02N0I3NDY2NCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MTk0MzYwLCJoZWlnaHQiOjEzNTAsImlkIjoiMTMwMDg2NzgwNzgzOTM3MnYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVBGbUpLYXN2b1VhNG1ZeFk2NGVvaFFHckRhOTA5QUZtMUdla2VyVGkzb2NNdU8tMGNPWEphNEp4TzNFVTZaemF1ZnNNUmo5dnRuQks3Tmlvd2ZfTHFpYjJvZDVhZkxqc1JBRXhRLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPall6TURreE9EY3pNalkwTWpjME5pd2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZ2cz02ZTJlNDllZWQ1MmY1YzViJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgxTlRSQ01EWTRNVUU0TVVZM1FqSTROa0pEUWtVNE9UZzFNa1l6UlRVNE5sOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2IwNW9mdnB2U2VBaFVDS0FKRE15d1hRRVc3cGVOVDk4OFlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUQ5N2dZMXRTRU04LU04dzRHaEVSbG9XVWtOeGdTM2NWWVhkdVI0VnE0dXp3Jm9lPTY3Qjc0NjY0Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY4NTk0ODk4OTEzOTUwMTc2XzQ5MjYwMDAwNDI1IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6ZmFsc2UsImlkIjoiMzU2ODU5MTc2ODQxMTIzNTY2MCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTg4OTM0MF8xODAyODQzNjI3NjY0MDQyNl83NDQ0Mzg1ODg1Njg0ODk1NDAwX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz02c0lsQ2NNZExfUVE3a052Z0hHUXdHaCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVNVGMyT0RReE1USXpOVFkyTUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCM3YyWjhMZ3QzMzBWVUN4RVd3SEhYUnZIUjBaSE85bGZuU2N1T2lFamlJdyZvZT02N0JCMzEyOSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoyMjMsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAxMjgyNjlfNjM2NTg0Mjk1NDE1NDQyXzUwODQwNDQ5MDM4NDcxMzk5NzFfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTZCSzlyV1Q4SXZnUTdrTnZnRjZlb2puJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ1cwczVscGxkSUQ5a0w3VjlyTlVlelpqT0JWQXc3WGJnQ185dm5RbU5nQ1Emb2U9NjdCQjM2RDcmX25jX3NpZD0yMDExYWQiXSwic3ByaXRlX3dpZHRoIjoxNTAwLCJ0aHVtYm5haWxfZHVyYXRpb24iOjAuMjY3NjE5MDQ3NjE5MDQ3NjUsInRodW1ibmFpbF9oZWlnaHQiOjEyNiwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjI4LjF9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Miwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY4NTkxNzY4NDExMjM1NjYwIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTYyOTY4MCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk4ODkzNDBfMTgwMjg0MzYyNzY2NDA0MjZfNzQ0NDM4NTg4NTY4NDg5NTQwMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9NnNJbENjTWRMX1FRN2tOdmdIR1F3R2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TVRjMk9EUXhNVEl6TlRZMk1BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQjN2Mlo4TGd0MzMwVlVDeEVXd0hIWFJ2SFIwWkhPOWxmblNjdU9pRWppSXcmb2U9NjdCQjMxMjkmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wNE0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjoyOC4xLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFNZmlMM3NHQVhlRXNXSUhnMEhLNU5rMWlxTzJJQkg1YUFJWVhBRFhVNWFiVngwM0JRaTBZUTA2aHllczhUYWpsVHZpWjNweEhqc0JlV3ZRNlZ0M1JXYndGSVBsX2s0Z01jMlZ6ay5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFeE16VTJOakk0TURnd01ERXpNalVzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2JnZzPTk3NmUxMDBmM2M5ZWQ5MTImX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODRRalJGTlVJM1FUWTBOa1l4UVRjeE16VTFRVGd3TkVNeVF6Z3hPRFE1TjE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYmFySXVrbzdpRUJCVUNLQUpETXl3WFFEd1ptWm1abVpvWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQlJGTlozb1pjM044Q1FpNW9yQzVsOENmdERteFJ4dFRXZ09Rc1JwSkZGZkEmb2U9NjdCNzcyOTMmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjoxOTI3NzUsImhlaWdodCI6MTM1MCwiaWQiOiIxMzQ3NDUxMjM2Mzg3MTcxdiIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTWZpTDNzR0FYZUVzV0lIZzBISzVOazFpcU8ySUJINWFBSVlYQURYVTVhYlZ4MDNCUWkwWVEwNmh5ZXM4VGFqbFR2aVozcHhIanNCZVd2UTZWdDNSV2J3RklQbF9rNGdNYzJWemsubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXhNelUyTmpJNE1EZ3dNREV6TWpVc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz05NzZlMTAwZjNjOWVkOTEyJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzg0UWpSRk5VSTNRVFkwTmtZeFFUY3hNelUxUVRnd05FTXlRemd4T0RRNU4xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2Jhckl1a283aUVCQlVDS0FKRE15d1hRRHdabVptWm1ab1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUJSRk5aM29aYzNOOENRaTVvckM1bDhDZnREbXhSeHRUV2dPUXNScEpGRmZBJm9lPTY3Qjc3MjkzJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoxOTI3NzUsImhlaWdodCI6MTM1MCwiaWQiOiIxMzQ3NDUxMjM2Mzg3MTcxdiIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTWZpTDNzR0FYZUVzV0lIZzBISzVOazFpcU8ySUJINWFBSVlYQURYVTVhYlZ4MDNCUWkwWVEwNmh5ZXM4VGFqbFR2aVozcHhIanNCZVd2UTZWdDNSV2J3RklQbF9rNGdNYzJWemsubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXhNelUyTmpJNE1EZ3dNREV6TWpVc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz05NzZlMTAwZjNjOWVkOTEyJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzg0UWpSRk5VSTNRVFkwTmtZeFFUY3hNelUxUVRnd05FTXlRemd4T0RRNU4xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2Jhckl1a283aUVCQlVDS0FKRE15d1hRRHdabVptWm1ab1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUJSRk5aM29aYzNOOENRaTVvckM1bDhDZnREbXhSeHRUV2dPUXNScEpGRmZBJm9lPTY3Qjc3MjkzJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoxOTI3NzUsImhlaWdodCI6MTM1MCwiaWQiOiIxMzQ3NDUxMjM2Mzg3MTcxdiIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTWZpTDNzR0FYZUVzV0lIZzBISzVOazFpcU8ySUJINWFBSVlYQURYVTVhYlZ4MDNCUWkwWVEwNmh5ZXM4VGFqbFR2aVozcHhIanNCZVd2UTZWdDNSV2J3RklQbF9rNGdNYzJWemsubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXhNelUyTmpJNE1EZ3dNREV6TWpVc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz05NzZlMTAwZjNjOWVkOTEyJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzg0UWpSRk5VSTNRVFkwTmtZeFFUY3hNelUxUVRnd05FTXlRemd4T0RRNU4xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2Jhckl1a283aUVCQlVDS0FKRE15d1hRRHdabVptWm1ab1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUJSRk5aM29aYzNOOENRaTVvckM1bDhDZnREbXhSeHRUV2dPUXNScEpGRmZBJm9lPTY3Qjc3MjkzJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY4NTk0ODk4OTEzOTUwMTc2XzQ5MjYwMDAwNDI1IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6ZmFsc2UsImlkIjoiMzU2ODU5MzQwNzMwMjAwNjYwMyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NDAwMzAwM18xODAyODQzNjQxNDY0MDQyNl84OTkyODU0MzEyNzUwMjU3Mzc5X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0ydWFON1dkeFNjd1E3a052Z0Uzc2tBdSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVNelF3TnpNd01qQXdOall3TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBZ2Y2Z1ZoZ1BLQUhiU09PbVdTT29WNVpvdnlkMkhnelNNUWpOSzhmTnVsUSZvZT02N0JCNTQ1NSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoyMzEsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA0MTk1MTdfMTA1NzA4NDQwNjQ1ODEzMl8xNDUwMDcxNTU4MjQ1ODM5ODUxX24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1UZ1RoeFF1Yk4wSVE3a052Z0hSUzRJYiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWURON1FsMEtPOWc5Q3lHVXpZUTEydGRlX1RlaDJkaXdvemEzdWllLW5VTjd3Jm9lPTY3QkI0NUREJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjI4MzQ4NTcxNDI4NTcxNDMsInRodW1ibmFpbF9oZWlnaHQiOjEyNiwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjI5Ljc2Nn19fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1Njg1OTM0MDczMDIwMDY2MDMiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NjI5NjgwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NDAwMzAwM18xODAyODQzNjQxNDY0MDQyNl84OTkyODU0MzEyNzUwMjU3Mzc5X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0ydWFON1dkeFNjd1E3a052Z0Uzc2tBdSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVNelF3TnpNd01qQXdOall3TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBZ2Y2Z1ZoZ1BLQUhiU09PbVdTT29WNVpvdnlkMkhnelNNUWpOSzhmTnVsUSZvZT02N0JCNTQ1NSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjI5Ljc2NiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTWFpRV9tODFDTi1qbF9hdWdHa2g4OHU3OVp4Um1oOHhrc0F4MHNBZExuSHdHb2F1OHhEVTJmWURzcDFteU9DcnMwMXFMX0haNXJnWlB3MTA1MWZiU0p0TmQ1cGZac01sdlRfaHcubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXpOakF3TmpFeU5EVXhNalExTURjc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz1kYjdlYjg1ZDM2ZjVjNjQwJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlHTVRSQ1FVRkJOamhEUmpsRlJURXhNMEpETVVRNE1VTXlOa0pEUmpaQlJGOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2EydnB2Ml9iM3FCQlVDS0FKRE15d1hRRDNFR0pOMHZHb1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUFJeHVSakhIRm5OYk9xdmlHRFVJS3o3Q1pBUXBMMWk5WFpFNkVaQzdsV0ZnJm9lPTY3Qjc2RTBCJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6MjY0ODE2LCJoZWlnaHQiOjEzNTAsImlkIjoiMTI3NTY1MTgwMzUyMjA2N3YiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU1haUVfbTgxQ04tamxfYXVnR2toODh1NzlaeFJtaDh4a3NBeDBzQWRMbkh3R29hdTh4RFUyZllEc3AxbXlPQ3JzMDFxTF9IWjVyZ1pQdzEwNTFmYlNKdE5kNXBmWnNNbHZUX2h3Lm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV6TmpBd05qRXlORFV4TWpRMU1EY3NJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9ZGI3ZWI4NWQzNmY1YzY0MCZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5R01UUkNRVUZCTmpoRFJqbEZSVEV4TTBKRE1VUTRNVU15TmtKRFJqWkJSRjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhMnZwdjJfYjNxQkJVQ0tBSkRNeXdYUUQzRUdKTjB2R29ZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlBSXh1UmpISEZuTmJPcXZpR0RVSUt6N0NaQVFwTDFpOVhaRTZFWkM3bFdGZyZvZT02N0I3NkUwQiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjY0ODE2LCJoZWlnaHQiOjEzNTAsImlkIjoiMTI3NTY1MTgwMzUyMjA2N3YiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU1haUVfbTgxQ04tamxfYXVnR2toODh1NzlaeFJtaDh4a3NBeDBzQWRMbkh3R29hdTh4RFUyZllEc3AxbXlPQ3JzMDFxTF9IWjVyZ1pQdzEwNTFmYlNKdE5kNXBmWnNNbHZUX2h3Lm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV6TmpBd05qRXlORFV4TWpRMU1EY3NJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9ZGI3ZWI4NWQzNmY1YzY0MCZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5R01UUkNRVUZCTmpoRFJqbEZSVEV4TTBKRE1VUTRNVU15TmtKRFJqWkJSRjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhMnZwdjJfYjNxQkJVQ0tBSkRNeXdYUUQzRUdKTjB2R29ZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlBSXh1UmpISEZuTmJPcXZpR0RVSUt6N0NaQVFwTDFpOVhaRTZFWkM3bFdGZyZvZT02N0I3NkUwQiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjY0ODE2LCJoZWlnaHQiOjEzNTAsImlkIjoiMTI3NTY1MTgwMzUyMjA2N3YiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU1haUVfbTgxQ04tamxfYXVnR2toODh1NzlaeFJtaDh4a3NBeDBzQWRMbkh3R29hdTh4RFUyZllEc3AxbXlPQ3JzMDFxTF9IWjVyZ1pQdzEwNTFmYlNKdE5kNXBmWnNNbHZUX2h3Lm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV6TmpBd05qRXlORFV4TWpRMU1EY3NJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9ZGI3ZWI4NWQzNmY1YzY0MCZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5R01UUkNRVUZCTmpoRFJqbEZSVEV4TTBKRE1VUTRNVU15TmtKRFJqWkJSRjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhMnZwdjJfYjNxQkJVQ0tBSkRNeXdYUUQzRUdKTjB2R29ZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlBSXh1UmpISEZuTmJPcXZpR0RVSUt6N0NaQVFwTDFpOVhaRTZFWkM3bFdGZyZvZT02N0I3NkUwQiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2ODU5NDg5ODkxMzk1MDE3Nl80OTI2MDAwMDQyNSIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOmZhbHNlLCJpZCI6IjM1Njg1OTM4NzIzMjQ2NDU3OTgiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk0MzY5NTRfMTgwMjg0MzY1NDM2NDA0MjZfNzQxNjUxMDY3NTk4NzEyNjE2MV9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TU9LQWFUa3UxUFFRN2tOdmdIQmVKbjQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TXpnM01qTXlORFkwTlRjNU9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ3l2WWFITzEwU0dFQ0psamhnZHgtVXhaTEx6LUIwVE8zWndZNkdGWHhfZWcmb2U9NjdCQjQ3NEImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6MjU0LCJtYXhfdGh1bWJuYWlsc19wZXJfc3ByaXRlIjoxMDUsInJlbmRlcmVkX3dpZHRoIjo5Niwic3ByaXRlX2hlaWdodCI6ODgyLCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NzQzMzc5XzExNDA0ODE0NTM4NTc1NzdfMzY4MjU0MDM1OTM3MzUzOTYyOV9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UVJjcWYtRDMzQ01RN2tOdmdFVlJtb1MmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCM2EtbnQxY2lKclRuSmZDNWlvVUgwZ0xOcERQaXVGR3FCYmpNXzdOTkxGUSZvZT02N0JCMzVEQiZfbmNfc2lkPTIwMTFhZCJdLCJzcHJpdGVfd2lkdGgiOjE1MDAsInRodW1ibmFpbF9kdXJhdGlvbiI6MC4yMTkzNjE5MDQ3NjE5MDQ3OSwidGh1bWJuYWlsX2hlaWdodCI6MTI2LCJ0aHVtYm5haWxfd2lkdGgiOjEwMCwidGh1bWJuYWlsc19wZXJfcm93IjoxNSwidG90YWxfdGh1bWJuYWlsX251bV9wZXJfc3ByaXRlIjoxMDUsInZpZGVvX2xlbmd0aCI6MjMuMDMzfX19LCJpc19kYXNoX2VsaWdpYmxlIjoxLCJpc192aWRlbyI6dHJ1ZSwibWVkaWFfZm9ybWF0IjoidmlkZW8iLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjIsIm51bWJlcl9vZl9xdWFsaXRpZXMiOjIsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2ODU5Mzg3MjMyNDY0NTc5OCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk2Mjk2ODEsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NDM2OTU0XzE4MDI4NDM2NTQzNjQwNDI2Xzc0MTY1MTA2NzU5ODcxMjYxNjFfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU1PS0FhVGt1MVBRUTdrTnZnSEJlSm40Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RVNU16ZzNNak15TkRZME5UYzVPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUN5dllhSE8xMFNHRUNKbGpoZ2R4LVV4WkxMei1CMFRPM1p3WTZHRlh4X2VnJm9lPTY3QkI0NzRCJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fY29kZWMiOiJhdjAxLjAuMDRNLjA4LjAuMTExLjAxLjAxLjAxLjAiLCJ2aWRlb19kdXJhdGlvbiI6MjMuMDMzLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQaUEyNWhRUXc2N0dZUW1RNldBMms0WnZoTWhXX2gzZkNaOU9QYWdIQW5sY3AxeFZXdmRzaEZlck94NUVOYmlPSTZ3MDNwTWNKMmpkSS1NY3dzRFJNSGczd2JHWEMxY2lOWmRiQS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pVeE16STVOVFU0TlRFeE9UWTRNU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmdnM9MWNmMzYxNjI1NWU2YTUxYSZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4Mk16UTVOekEwUlRoR05qUkZSalF5UVVNeU9UVkJNREpFUXpBMk9EUTVPVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhQ3Q2Q1EzclhwQVJVQ0tBSkRNeXdYUURjSWNyQWd4SndZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlCMkpsNERDV2RhX1Axek1aNm9lSWxzTTEtY2ZHMVh4Rm1RQXF5ZGZZazRwQSZvZT02N0I3NDQ3RCZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjI3MTMxMiwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEwMjA0MDE3NDk5OTY4NDR2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQaUEyNWhRUXc2N0dZUW1RNldBMms0WnZoTWhXX2gzZkNaOU9QYWdIQW5sY3AxeFZXdmRzaEZlck94NUVOYmlPSTZ3MDNwTWNKMmpkSS1NY3dzRFJNSGczd2JHWEMxY2lOWmRiQS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pVeE16STVOVFU0TlRFeE9UWTRNU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmdnM9MWNmMzYxNjI1NWU2YTUxYSZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4Mk16UTVOekEwUlRoR05qUkZSalF5UVVNeU9UVkJNREpFUXpBMk9EUTVPVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhQ3Q2Q1EzclhwQVJVQ0tBSkRNeXdYUURjSWNyQWd4SndZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlCMkpsNERDV2RhX1Axek1aNm9lSWxzTTEtY2ZHMVh4Rm1RQXF5ZGZZazRwQSZvZT02N0I3NDQ3RCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjcxMzEyLCJoZWlnaHQiOjEzNTAsImlkIjoiMTAyMDQwMTc0OTk5Njg0NHYiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVBpQTI1aFFRdzY3R1lRbVE2V0EyazRadmhNaFdfaDNmQ1o5T1BhZ0hBbmxjcDF4Vld2ZHNoRmVyT3g1RU5iaU9JNncwM3BNY0oyamRJLU1jd3NEUk1IZzN3YkdYQzFjaU5aZGJBLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalV4TXpJNU5UVTROVEV4T1RZNE1Td2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZ2cz0xY2YzNjE2MjU1ZTZhNTFhJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgyTXpRNU56QTBSVGhHTmpSRlJqUXlRVU15T1RWQk1ESkVRekEyT0RRNU9WOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FDdDZDUTNyWHBBUlVDS0FKRE15d1hRRGNJY3JBZ3hKd1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUIySmw0RENXZGFfUDF6TVo2b2VJbHNNMS1jZkcxWHhGbVFBcXlkZllrNHBBJm9lPTY3Qjc0NDdEJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoyNzEzMTIsImhlaWdodCI6MTM1MCwiaWQiOiIxMDIwNDAxNzQ5OTk2ODQ0diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUGlBMjVoUVF3NjdHWVFtUTZXQTJrNFp2aE1oV19oM2ZDWjlPUGFnSEFubGNwMXhWV3Zkc2hGZXJPeDVFTmJpT0k2dzAzcE1jSjJqZEktTWN3c0RSTUhnM3diR1hDMWNpTlpkYkEubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVXhNekk1TlRVNE5URXhPVFk0TVN3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0JnZzPTFjZjM2MTYyNTVlNmE1MWEmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODJNelE1TnpBMFJUaEdOalJGUmpReVFVTXlPVFZCTURKRVF6QTJPRFE1T1Y5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYUN0NkNRM3JYcEFSVUNLQUpETXl3WFFEY0ljckFneEp3WUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQjJKbDREQ1dkYV9QMXpNWjZvZUlsc00xLWNmRzFYeEZtUUFxeWRmWWs0cEEmb2U9NjdCNzQ0N0QmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njg1OTQ4OTg5MTM5NTAxNzZfNDkyNjAwMDA0MjUiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaGFzX2F1ZGlvIjpmYWxzZSwiaWQiOiIzNTY4NTk0MzMwNzYyMDU3ODc5IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDcyMzYyNzU5XzE4MDI4NDM2NTk3NjQwNDI2XzM5NzcxNDA5MDQwNjkwNTA2NDlfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWppa0JhWG8ycjU4UTdrTnZnRldDUXh5Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RVNU5ETXpNRGMyTWpBMU56ZzNPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUItQWZkS3JDNjVYbjBlYU14dk5zYURrLU1OUDVWQVhRTThUTi1QTk00T25RJm9lPTY3QkI1MTEzJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dLCJzY3J1YmJlcl9zcHJpdGVzaGVldF9pbmZvX2NhbmRpZGF0ZXMiOnsiZGVmYXVsdCI6eyJmaWxlX3NpemVfa2IiOjI2MiwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjg4Miwic3ByaXRlX3VybHMiOlsiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDIwNzIxOV8xNjk5NTQ3NzI3MzIzMTIwXzczMTg0ODkyNzkwODEyODQxNTBfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUVZVmhBeXFvYW5nUTdrTnZnRXpRSVotJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ0JGYmNpUEJhLXdoaTJMX0dPbXRYTVhzVm8wTHZESHlsY2cwTDRTSUNBSlEmb2U9NjdCQjVBNkImX25jX3NpZD0yMDExYWQiXSwic3ByaXRlX3dpZHRoIjoxNTAwLCJ0aHVtYm5haWxfZHVyYXRpb24iOjAuMjUzNjQ3NjE5MDQ3NjE5MDcsInRodW1ibmFpbF9oZWlnaHQiOjEyNiwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjI2LjYzM319fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1Njg1OTQzMzA3NjIwNTc4NzkiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NjI5NjgwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3MjM2Mjc1OV8xODAyODQzNjU5NzY0MDQyNl8zOTc3MTQwOTA0MDY5MDUwNjQ5X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1qaWtCYVhvMnI1OFE3a052Z0ZXQ1F4eSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVORE16TURjMk1qQTFOemczT1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCLUFmZEtyQzY1WG4wZWFNeHZOc2FEay1NTlA1VkFYUU04VE4tUE5NNE9uUSZvZT02N0JCNTExMyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjI2LjYzMywidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUDNlTkN3UUs4ZXJyTm1FV1F2NTlMa2hBLTFEX2dXVE0xNEZpa0FFUmNJbWpJaEVyeGktNjNVUzlFNUlTSGhxTlNuTnQyNFRRaFktemgtcWlOOVhMdWhpWlVFZmJ5bG5iUWRva1UubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXlORGt5TmpneU5qazJOalV5T1N3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2JnZzPTMyNGU0MDE0YWNiODBlZjMmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOHhOelE0T0VWR09UVkNPVEV6TmpBM016VTVORVkzUWtRMU1qRTNNVGRCTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYUN1TUhZdzVlY0FoVUNLQUpETXl3WFFEcWlERW02WGpVWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQllJRk9wNF9pZHphcEk2OVlhc0NTQmV5bHYtMHlyWl9pVVVoWS11NkdaT2cmb2U9NjdCNzVDQkYmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjoyMjYyMjMsImhlaWdodCI6MTM1MCwiaWQiOiI5MjA4OTgzNTMyMjA2NTN2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQM2VOQ3dRSzhlcnJObUVXUXY1OUxraEEtMURfZ1dUTTE0RmlrQUVSY0ltakloRXJ4aS02M1VTOUU1SVNIaHFOU25OdDI0VFFoWS16aC1xaU45WEx1aGlaVUVmYnlsbmJRZG9rVS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZeU5Ea3lOamd5TmprMk5qVXlPU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9MzI0ZTQwMTRhY2I4MGVmMyZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4eE56UTRPRVZHT1RWQ09URXpOakEzTXpVNU5FWTNRa1ExTWpFM01UZEJORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhQ3VNSFl3NWVjQWhVQ0tBSkRNeXdYUURxaURFbTZYalVZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlCWUlGT3A0X2lkemFwSTY5WWFzQ1NCZXlsdi0weXJaX2lVVWhZLXU2R1pPZyZvZT02N0I3NUNCRiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjI2MjIzLCJoZWlnaHQiOjEzNTAsImlkIjoiOTIwODk4MzUzMjIwNjUzdiIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUDNlTkN3UUs4ZXJyTm1FV1F2NTlMa2hBLTFEX2dXVE0xNEZpa0FFUmNJbWpJaEVyeGktNjNVUzlFNUlTSGhxTlNuTnQyNFRRaFktemgtcWlOOVhMdWhpWlVFZmJ5bG5iUWRva1UubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXlORGt5TmpneU5qazJOalV5T1N3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2JnZzPTMyNGU0MDE0YWNiODBlZjMmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOHhOelE0T0VWR09UVkNPVEV6TmpBM016VTVORVkzUWtRMU1qRTNNVGRCTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYUN1TUhZdzVlY0FoVUNLQUpETXl3WFFEcWlERW02WGpVWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQllJRk9wNF9pZHphcEk2OVlhc0NTQmV5bHYtMHlyWl9pVVVoWS11NkdaT2cmb2U9NjdCNzVDQkYmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjIyNjIyMywiaGVpZ2h0IjoxMzUwLCJpZCI6IjkyMDg5ODM1MzIyMDY1M3YiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVAzZU5Dd1FLOGVyck5tRVdRdjU5TGtoQS0xRF9nV1RNMTRGaWtBRVJjSW1qSWhFcnhpLTYzVVM5RTVJU0hocU5Tbk50MjRUUWhZLXpoLXFpTjlYTHVoaVpVRWZieWxuYlFkb2tVLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPall5TkRreU5qZ3lOamsyTmpVeU9Td2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz0zMjRlNDAxNGFjYjgwZWYzJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzh4TnpRNE9FVkdPVFZDT1RFek5qQTNNelU1TkVZM1FrUTFNakUzTVRkQk5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FDdU1IWXc1ZWNBaFVDS0FKRE15d1hRRHFpREVtNlhqVVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUJZSUZPcDRfaWR6YXBJNjlZYXNDU0JleWx2LTB5clpfaVVVaFktdTZHWk9nJm9lPTY3Qjc1Q0JGJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY4NTk0ODk4OTEzOTUwMTc2XzQ5MjYwMDAwNDI1IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6ZmFsc2UsImlkIjoiMzU2ODU5NDM0MjQzMDUzMDI1NyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3MjYyMzY2NF8xODAyODQzNjYyNDY0MDQyNl8xMTY4MDE1MDQ4NTE3MDMxMjgyX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1zX1hNdGlkOTRPY1E3a052Z0hhRG5VayZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVORE0wTWpRek1EVXpNREkxTnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDcl83ZWxZUWtHeFJCazhFdnAtRXZ3VkEzNEVWOGNMT3hQN0Nma2hxY2JmZyZvZT02N0JCNTdDMiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoyMDksIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg5NDU0MjVfMTAyMzY2MDEyOTc5NTczNl8zMjk1MTkyMDA5NDY3MjQyNjY4X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1ZaGFPMVpNSjZFc1E3a052Z0dWR1VtRiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUQzZW5xSGdvWV9OY1FOVXhFQlZpVnduZTR6OEY5dVVjREdLQlNIeHFMSVZ3Jm9lPTY3QkIzMDAzJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjQ1OTY3NjE5MDQ3NjE5MDQ2LCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjo0OC4yNjZ9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Miwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY4NTk0MzQyNDMwNTMwMjU3IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTYyOTY4MCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzI2MjM2NjRfMTgwMjg0MzY2MjQ2NDA0MjZfMTE2ODAxNTA0ODUxNzAzMTI4Ml9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9c19YTXRpZDk0T2NRN2tOdmdIYURuVWsmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TkRNME1qUXpNRFV6TURJMU53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ3JfN2VsWVFrR3hSQms4RXZwLUV2d1ZBMzRFVjhjTE94UDdDZmtocWNiZmcmb2U9NjdCQjU3QzImX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wNE0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjo0OC4yNjYsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W10sInZpZGVvX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU5jaS1EMmZOekNwM0JkSTN6S3ZXcXIyZHowUFFzMGxPN0dZaWhqdmJzVVVwRVp2N2NuU3JvOGFIek5jdGs5WVNORl9HbkExUVN0Vm9yYXlMQW1iaW1HaGQ1blFpMlB6Szg4ckt3Lm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUwTVRjd09EUTBOemt5TlRVMk5USXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmdnM9ZWUyMzYxOTA3NjY0ZmRlZSZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5R1JUUTJOVGhHTkVGRlFrSXpNRGxCTWtGRFFUUkRPVE5ETkVRMFJEazRSVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNiSTBZV1FscldFQlJVQ0tBSkRNeXdYUUVnaURFbTZYalVZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlBOXNNdU94eUpJSHZvaXpqU1BFdGtGSzRDODdVbnNaWldVa2c4NkN2ZHFMdyZvZT02N0I3NDVERCZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjE4MzA4OSwiaGVpZ2h0IjoxMzUwLCJpZCI6IjQ3NzEyODE2MjEyNjc2MXYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU5jaS1EMmZOekNwM0JkSTN6S3ZXcXIyZHowUFFzMGxPN0dZaWhqdmJzVVVwRVp2N2NuU3JvOGFIek5jdGs5WVNORl9HbkExUVN0Vm9yYXlMQW1iaW1HaGQ1blFpMlB6Szg4ckt3Lm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUwTVRjd09EUTBOemt5TlRVMk5USXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDAmdnM9ZWUyMzYxOTA3NjY0ZmRlZSZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5R1JUUTJOVGhHTkVGRlFrSXpNRGxCTWtGRFFUUkRPVE5ETkVRMFJEazRSVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNiSTBZV1FscldFQlJVQ0tBSkRNeXdYUUVnaURFbTZYalVZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlBOXNNdU94eUpJSHZvaXpqU1BFdGtGSzRDODdVbnNaWldVa2c4NkN2ZHFMdyZvZT02N0I3NDVERCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MTgzMDg5LCJoZWlnaHQiOjEzNTAsImlkIjoiNDc3MTI4MTYyMTI2NzYxdiIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTmNpLUQyZk56Q3AzQmRJM3pLdldxcjJkejBQUXMwbE83R1lpaGp2YnNVVXBFWnY3Y25Tcm84YUh6TmN0azlZU05GX0duQTFRU3RWb3JheUxBbWJpbUdoZDVuUWkyUHpLODhyS3cubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRTBNVGN3T0RRME56a3lOVFUyTlRJc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMCZ2cz1lZTIzNjE5MDc2NjRmZGVlJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlHUlRRMk5UaEdORUZGUWtJek1EbEJNa0ZEUVRSRE9UTkRORVEwUkRrNFJWOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2JJMFlXUWxyV0VCUlVDS0FKRE15d1hRRWdpREVtNlhqVVlGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUE5c011T3h5SklIdm9pempTUEV0a0ZLNEM4N1Vuc1paV1VrZzg2Q3ZkcUx3Jm9lPTY3Qjc0NUREJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoxODMwODksImhlaWdodCI6MTM1MCwiaWQiOiI0NzcxMjgxNjIxMjY3NjF2IiwidHlwZSI6MTAzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFOY2ktRDJmTnpDcDNCZEkzekt2V3FyMmR6MFBRczBsTzdHWWloanZic1VVcEVadjdjblNybzhhSHpOY3RrOVlTTkZfR25BMVFTdFZvcmF5TEFtYmltR2hkNW5RaTJQeks4OHJLdy5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFME1UY3dPRFEwTnpreU5UVTJOVElzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJnZzPWVlMjM2MTkwNzY2NGZkZWUmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUdSVFEyTlRoR05FRkZRa0l6TURsQk1rRkRRVFJET1RORE5FUTBSRGs0UlY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYkkwWVdRbHJXRUJSVUNLQUpETXl3WFFFZ2lERW02WGpVWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQTlzTXVPeHlKSUh2b2l6alNQRXRrRks0Qzg3VW5zWlpXVWtnODZDdmRxTHcmb2U9NjdCNzQ1REQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njg1OTQ4OTg5MTM5NTAxNzZfNDkyNjAwMDA0MjUiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY4NTk0ODY3MDYyMzgyOTc5IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NDAzNzQzMl8xODAyODQzNTkyODY0MDQyNl84NzQ4Nzc0MzA2OTU5NTczODIyX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1uV1BwalNoV250a1E3a052Z0VXMk5lQiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVORGcyTnpBMk1qTTRNamszT1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEaTdFNE9EeUg3cDNDdmlYaHhGS3RINnNOMFpsMU5nRGZZdjhCZm81OXp4ZyZvZT02N0JCNTNBMiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc0MDM3NDMyXzE4MDI4NDM1OTI4NjQwNDI2Xzg3NDg3NzQzMDY5NTk1NzM4MjJfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1uV1BwalNoV250a1E3a052Z0VXMk5lQiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EVTVORGcyTnpBMk1qTTRNamszT1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBLVpvUmt0MUhFLUVqb044d1FnMW5tdS1Vc0UtdWVuTHVsZ2FzUVZQNVlUdyZvZT02N0JCNTNBMiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2ODU5NDg2NzA2MjM4Mjk3OSIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk2Mjk2ODAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc0MDM3NDMyXzE4MDI4NDM1OTI4NjQwNDI2Xzg3NDg3NzQzMDY5NTk1NzM4MjJfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPW5XUHBqU2hXbnRrUTdrTnZnRVcyTmVCJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RVNU5EZzJOekEyTWpNNE1qazNPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURpN0U0T0R5SDdwM0N2aVhoeEZLdEg2c04wWmwxTmdEZll2OEJmbzU5enhnJm9lPTY3QkI1M0EyJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6MTEsImNhcm91c2VsX21lZGlhX2lkcyI6WzM1Njg1OTQ4NjY4MTA3NjI5MTQsMzU2ODU5MTc2ODkzMTM4ODk2MCwzNTY4NTkxNzcwNTU4ODQ1NTc5LDM1Njg1OTE3NzExNjI3ODUzODQsMzU2ODU5MTc3MDY1OTUxNjU2MSwzNTY4NTkxNzY4NDExMjM1NjYwLDM1Njg1OTM0MDczMDIwMDY2MDMsMzU2ODU5Mzg3MjMyNDY0NTc5OCwzNTY4NTk0MzMwNzYyMDU3ODc5LDM1Njg1OTQzNDI0MzA1MzAyNTcsMzU2ODU5NDg2NzA2MjM4Mjk3OV0sImNhcm91c2VsX21lZGlhX3BlbmRpbmdfcG9zdF9jb3VudCI6MCwiY2xpcHNfdGFiX3Bpbm5lZF91c2VyX2lkcyI6W10sImNvYXV0aG9yX3Byb2R1Y2VyX2Nhbl9zZWVfb3JnYW5pY19pbnNpZ2h0cyI6ZmFsc2UsImNvYXV0aG9yX3Byb2R1Y2VycyI6W10sImNvZGUiOiJER0dNaWRCQ1huZyIsImNvbW1lbnRfY291bnQiOjU2MiwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5NjI5MzEwMTQ5MjgsImZiX2FnZ3JlZ2F0ZWRfY29tbWVudF9jb3VudCI6MCwiZmJfYWdncmVnYXRlZF9saWtlX2NvdW50IjowLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmJpZCI6IjE3OTMzMDkyMzA3ODc4NzYxIiwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJmZWVkX3R5cGUiOiJtZWRpYSIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJOT05FIn0sImhhc19oaWdoX3Jpc2tfZ2VuX2FpX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJoYXNfbGlrZWQiOmZhbHNlLCJoYXNfcHJpdmF0ZWx5X2xpa2VkIjpmYWxzZSwiaGFzX3NoYXJlZF90b19mYiI6MCwiaGFzX3ZpZXdzX2ZldGNoaW5nIjp0cnVlLCJpZCI6IjM1Njg1OTQ4OTg5MTM5NTAxNzYiLCJpZ19tZWRpYV9zaGFyaW5nX2Rpc2FibGVkIjpmYWxzZSwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTczNDUxOV8xODAyODQzNTkxNjY0MDQyNl8xNzA3Njk1MTQ1MDIxODg1ODcxX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M1JrTlZJSkZaRU1RN2tOdmdFY2JYdDMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPRFU1TkRnMk5qZ3hNRGMyTWpreE5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQnJyMUxwNTRQNlA0bThnQWMxbjZHTlVMalliSllncGpkVDN2RXFLeDhWa3cmb2U9NjdCQjU1MkEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTczNDUxOV8xODAyODQzNTkxNjY0MDQyNl8xNzA3Njk1MTQ1MDIxODg1ODcxX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTNSa05WSUpGWkVNUTdrTnZnRWNiWHQzJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RVNU5EZzJOamd4TURjMk1qa3hOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJTU2dsSHlUak1vY3pDTHF1RVJKYlZpZUpGckhMNFNabVZjOTJoVzJIcFFnJm9lPTY3QkI1NTJBJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjpmYWxzZSwibGlrZV9jb3VudCI6Nzc5MiwibWVkaWFfZm9ybWF0IjoiYWxidW0iLCJtZWRpYV9uYW1lIjoiYWxidW0iLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjo4LCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMTgzMjc5OTIyMzYxMjI1MzgiLCJhdWRpb190eXBlIjoibGljZW5zZWRfbXVzaWMiLCJtdXNpY19pbmZvIjp7Im11c2ljX2Fzc2V0X2luZm8iOnsiYWxsb3dzX3NhdmluZyI6ZmFsc2UsImFydGlzdF9pZCI6Ijg3NDU2MjAzMzg4MDA1ODQiLCJhdWRpb19pZCI6Ijg3Njc4NzY5NDQ5NzE0MCIsImNvdmVyX2FydHdvcmtfdGh1bWJuYWlsX3VyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC92L3QzOS4zMDgwOC02LzQ0OTcyMDQ2MV85MDAyODQ1Mjk4ODc5M183MzQ0ODE3MTA5MDQ0NzI5MTUyX24uanBnP3N0cD1kc3QtanBnX3MxNjh4MTI4X3R0NiZfbmNfY2F0PTEmY2NiPTEtNyZfbmNfc2lkPTJmMjU1NyZfbmNfb2hjPWI5VDRRWlRpWmVrUTdrTnZnR3JEcWExJl9uY19vYz1BZGdCNDRQLVZhS21iNDFlZkxwdHFaODhNX0hKRC1MWE1MclduRTBUTG9NNm5GNVJTMkdjbWdiTXNzdDFsQjVQQVN3Jl9uY19hZD16LW0mX25jX2NpZD0xMzY1Jl9uY196dD0yMyZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4Jl9uY19naWQ9QWZIYnVwb3BVeENncGtiVnB5VEo2Vm4mb2g9MDBfQVlDNXdlM3MxVXpXaFRWY0hwdE10TWNzVUhYUXdRSDducHFaM3FFbDFYb3BZUSZvZT02N0JCM0JFNiIsImNvdmVyX2FydHdvcmtfdXJpIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L3YvdDM5LjMwODA4LTYvNDQ5NzIwNDYxXzkwMDI4NDUyOTg4NzkzXzczNDQ4MTcxMDkwNDQ3MjkxNTJfbi5qcGc/c3RwPWRzdC1qcGdfczE2OHgxMjhfdHQ2Jl9uY19jYXQ9MSZjY2I9MS03Jl9uY19zaWQ9MmYyNTU3Jl9uY19vaGM9YjlUNFFaVGlaZWtRN2tOdmdHckRxYTEmX25jX29jPUFkZ0I0NFAtVmFLbWI0MWVmTHB0cVo4OE1fSEpELUxYTUxyV25FMFRMb002bkY1UlMyR2NtZ2JNc3N0MWxCNVBBU3cmX25jX2FkPXotbSZfbmNfY2lkPTEzNjUmX25jX3p0PTIzJl9uY19odD1zY29udGVudC1kdXMxLTEueHgmX25jX2dpZD1BZkhidXBvcFV4Q2dwa2JWcHlUSjZWbiZvaD0wMF9BWUM1d2UzczFVeldoVFZjSHB0TXRNY3NVSFhRd1FIN25wcVozcUVsMVhvcFlRJm9lPTY3QkIzQkU2IiwiZGFya19tZXNzYWdlIjpudWxsLCJkaXNwbGF5X2FydGlzdCI6Ik9ncnl6ZWsiLCJkdXJhdGlvbl9pbl9tcyI6MTE1OTA2LCJmYXN0X3N0YXJ0X3Byb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUU9hd1JoeEtqMy1yazg2VC0xdFptSXJieUs3TUk4MXpFRC14Uk4xSlRJOGtEbkxnRE0wU2FJQnZiNkpZSGhnZVdLVjVPckRiRGx0b2ltazNHa0wxcGNYLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEmX25jX3NpZD04YmY4ZmUmX25jX2h0PXNjb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQmX25jX29oYz0yOEIyY1lRTExmUVE3a052Z0VmMmJURyZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbmh3ZGw5d2NtOW5jbVZ6YzJsMlpTNUJWVVJKVDE5UFRreFpMaTVETXk0d0xuQnliMmR5WlhOemFYWmxYMkYxWkdsdlgyRmhZM0JmTkRoZlpuSmhaMTh5WDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqb3pOelkwTmpVd09ERTNNalkxTmpnc0luVnliR2RsYmw5emIzVnlZMlVpT2lKM2QzY2lmUSUzRCUzRCZjY2I9OS00Jl9uY196dD0yOCZvaD0wMF9BWUFiR2RJSFdBc2ZEekMzZllUeEZFVzJpVTBIc0d3b3ZjU0hGclNVOUVfYmR3Jm9lPTY3QkI1RjRDIiwiaGFzX2x5cmljcyI6ZmFsc2UsImhpZ2hsaWdodF9zdGFydF90aW1lc19pbl9tcyI6WzIwNTAwLDQzMDAwLDI1MDBdLCJpZCI6IjI1MzQ2OTQzMjAyNTMyODMiLCJpZ191c2VybmFtZSI6InByb2Qub2dyeXplayIsImlzX2VsaWdpYmxlX2Zvcl9hdWRpb19lZmZlY3RzIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX3ZpbnlsX3N0aWNrZXIiOnRydWUsImlzX2V4cGxpY2l0IjpmYWxzZSwibGljZW5zZWRfbXVzaWNfc3VidHlwZSI6IkRFRkFVTFQiLCJseXJpY3MiOm51bGwsInByb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUU9hd1JoeEtqMy1yazg2VC0xdFptSXJieUs3TUk4MXpFRC14Uk4xSlRJOGtEbkxnRE0wU2FJQnZiNkpZSGhnZVdLVjVPckRiRGx0b2ltazNHa0wxcGNYLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEmX25jX3NpZD04YmY4ZmUmX25jX2h0PXNjb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQmX25jX29oYz0yOEIyY1lRTExmUVE3a052Z0VmMmJURyZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbmh3ZGw5d2NtOW5jbVZ6YzJsMlpTNUJWVVJKVDE5UFRreFpMaTVETXk0d0xuQnliMmR5WlhOemFYWmxYMkYxWkdsdlgyRmhZM0JmTkRoZlpuSmhaMTh5WDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqb3pOelkwTmpVd09ERTNNalkxTmpnc0luVnliR2RsYmw5emIzVnlZMlVpT2lKM2QzY2lmUSUzRCUzRCZjY2I9OS00Jl9uY196dD0yOCZvaD0wMF9BWUFiR2RJSFdBc2ZEekMzZllUeEZFVzJpVTBIc0d3b3ZjU0hGclNVOUVfYmR3Jm9lPTY3QkI1RjRDIiwicmVhY3RpdmVfYXVkaW9fZG93bmxvYWRfdXJsIjpudWxsLCJzYW5pdGl6ZWRfdGl0bGUiOm51bGwsInN1YnRpdGxlIjoiIiwidGl0bGUiOiJBVVJBIiwid2ViXzMwc19wcmV2aWV3X2Rvd25sb2FkX3VybCI6bnVsbH0sIm11c2ljX2NvbnN1bXB0aW9uX2luZm8iOnsiYWxsb3dfbWVkaWFfY3JlYXRpb25fd2l0aF9tdXNpYyI6dHJ1ZSwiYXVkaW9fYXNzZXRfc3RhcnRfdGltZV9pbl9tcyI6MjA1MDAsImF1ZGlvX2ZpbHRlcl9pbmZvcyI6W10sImF1ZGlvX211dGluZ19pbmZvIjp7ImFsbG93X2F1ZGlvX2VkaXRpbmciOmZhbHNlLCJtdXRlX2F1ZGlvIjpmYWxzZSwibXV0ZV9yZWFzb25fc3RyIjoiIiwic2hvd19tdXRlZF9hdWRpb190b2FzdCI6ZmFsc2V9LCJjb250YWluc19seXJpY3MiOm51bGwsImRlcml2ZWRfY29udGVudF9pZCI6bnVsbCwiZGlzcGxheV9sYWJlbHMiOm51bGwsImZvcm1hdHRlZF9jbGlwc19tZWRpYV9jb3VudCI6bnVsbCwiaWdfYXJ0aXN0Ijp7ImZ1bGxfbmFtZSI6Ik9ncnl6ZWsiLCJpZCI6IjQ5NTM1ODAwMDAwIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM1MDI3OTY3NTk4NDExMTM2ODUiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDY3NDE4MDgwXzU3MzU0Njc5MTcxNzA0NV8xNjk0NTA2NDE0MDk0MDI0NTAzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUxfaEQxYWF5UVNFUTdrTnZnSDdMdDR2Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ2FXWUNpQUZ1ekJvblJURmRqUFlMcDNQQU5uWHJwUDlSRzl1RGNXRmlGTmcmb2U9NjdCQjNBRUQmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6InByb2Qub2dyeXplayJ9LCJpc19ib29rbWFya2VkIjpmYWxzZSwiaXNfdHJlbmRpbmdfaW5fY2xpcHMiOmZhbHNlLCJvdmVybGFwX2R1cmF0aW9uX2luX21zIjozMDAwMCwicGxhY2Vob2xkZXJfcHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4xMjQ0Mi0xNS80Mzk4NTYyOV8zMTExMDU5MTYxNDUzNTFfNTgwNjQ3NTk4MTE0MDU3NzZfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXlMMDlOWGNGaVg0UTdrTnZnSGpVUEpVJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ2xjLXpYUkozRzIxRGFrSVNLOWVlV1ZOWEFkX1lnNlVqdkc3SXNDNmZPWkEmb2U9NjdCQjM5M0QmX25jX3NpZD0yMDExYWQiLCJwcmV2aW91c190cmVuZF9yYW5rIjpudWxsLCJzaG91bGRfYWxsb3dfbXVzaWNfZWRpdGluZyI6ZmFsc2UsInNob3VsZF9tdXRlX2F1ZGlvIjpmYWxzZSwic2hvdWxkX211dGVfYXVkaW9fcmVhc29uIjoiIiwic2hvdWxkX211dGVfYXVkaW9fcmVhc29uX3R5cGUiOm51bGwsInRyZW5kX3JhbmsiOm51bGx9fSwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6W119LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9wZW5fY2Fyb3VzZWxfc3VibWlzc2lvbl9zdGF0ZSI6ImNsb3NlZCIsIm9yaWdpbmFsX2hlaWdodCI6MzA2LCJvcmlnaW5hbF93aWR0aCI6MzA2LCJwayI6IjM1Njg1OTQ4OTg5MTM5NTAxNzYiLCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2NvbnRhaW5lciIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTYyOTY4NCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk3MzQ1MTlfMTgwMjg0MzU5MTY2NDA0MjZfMTcwNzY5NTE0NTAyMTg4NTg3MV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTNSa05WSUpGWkVNUTdrTnZnRWNiWHQzJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RVNU5EZzJOamd4TURjMk1qa3hOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJycjFMcDU0UDZQNG04Z0FjMW42R05VTGpZYkpZZ3BqZFQzdkVxS3g4Vmt3Jm9lPTY3QkI1NTJBJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6W10sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQ0OTIxMjc1NzUwMCwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJJbnRlbGlnZW5jaWEgQXJ0aWZpY2lhbCB8IENoYXRHUFQgfCBFbXByZW5kZWRvcmVzIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjQ5MjYwMDAwNDI1IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzA3NDM0NjA2MTgyNDQ5MTUyMiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8zMzkxMzE1NzZfMzQ1MTE4NzcyNTEyODg3NF84MTkyOTMxODk5ODU3OTQxMDQxX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVc1Z3VPNzRWUFBjUTdrTnZnRm4tSlNRJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQXIzZWlLNHdFQjZtNnE5QTBJU3B2UW9qMWRTeHRUVWIycG5vamI4am1WNUEmb2U9NjdCQjM4OTAmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJjZXJlYnJvZGlnaXRhbC5pYSJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTMwNzQzMSwiY3JlYXRlZF9hdF91dGMiOjE3MzkzMDc0MzEsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI2lhIiwiI2ludGVsaWdlbmNpYWFydGlmaWNpYWwiLCIjdGVjbm9sb2dpYSIsIiNhaSIsIiNjaGF0Z3B0IiwiI2FpdG9vbHMiLCIjb3BlbmFpIiwiI2FpdGlwcyIsIiNtYWNoaW5lbGVhcm5pbmciLCIjc2FtYWx0bWFuIiwiI2Vsb25tdXNrIl0sImlkIjoiMzU2NTg5MTYzNjgwNDE2NDc1NSIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbIkBkaWVnb2FsbWVpZGEuaWEiXSwicGsiOiIxODI5OTkyNDQ0NjIzNjgyMyIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IkFsdG1hbiByZWplaXRhIG9mZXJ0YSBkZSBNdXNrIGUgbyBhY3VzYSBkZSB0ZW50YXIgZGVzYWNlbGVyYXIgYSBPcGVuQUkg8J+aqPCfpJZcblxuTyBDRU8gZGEgT3BlbkFJLCBTYW0gQWx0bWFuLCByZWplaXRvdSBhIHByb3Bvc3RhIGRlIFVTJCA5Nyw0IGJpbGjDtWVzIGZlaXRhIHBvciBFbG9uIE11c2sgcGFyYSBhZHF1aXJpciBhIG9yZ2FuaXphw6fDo28sIGFmaXJtYW5kbyBxdWUgYSBPcGVuQUkgZSBzdWEgbWlzc8OjbyDigJxuw6NvIGVzdMOjbyDDoCB2ZW5kYeKAnS4gRHVyYW50ZSBvIEFJIEFjdGlvbiBTdW1taXQgZW0gUGFyaXMsIEFsdG1hbiBzdWdlcml1IHF1ZSBNdXNrIGVzdMOhIHRlbnRhbmRvIGRlc2FjZWxlcmFyIGEgT3BlbkFJLCBjaGFtYW5kbyBhIG9mZXJ0YSBkZSBtYWlzIHVtIGRvcyBzZXVzIGluw7ptZXJvcyBtb3ZpbWVudG9zIHBhcmEgZGlmaWN1bHRhciBhIGNvbmNvcnLDqm5jaWEuXG5cbuKAnEVsb24gdGVudGEgZGUgdHVkbyBow6EgbXVpdG8gdGVtcG8uIEVzc2Ugw6kgYXBlbmFzIG8gZXBpc8OzZGlvIGRlc3RhIHNlbWFuYS4gRWxlIGNsYXJhbWVudGUgw6kgdW0gY29uY29ycmVudGUsIGxldmFudG91IG11aXRvIGRpbmhlaXJvIHBhcmEgYSB4QUkgZSBlc3TDoSB0ZW50YW5kbyBjb21wZXRpciBjb25vc2NvIHRlY25vbG9naWNhbWVudGUuIEV1IHPDsyBxdWVyaWEgcXVlIGVsZSBmaXplc3NlIGlzc28gY3JpYW5kbyB1bSBwcm9kdXRvIG1lbGhvci7igJ1cblxuQWx0bWFuIHRhbWLDqW0gY3JpdGljb3UgYXMgY29uc3RhbnRlcyBkaXNwdXRhcyBqdXLDrWRpY2FzIGluaWNpYWRhcyBwb3IgTXVzaywgY2xhc3NpZmljYW5kby1hcyBjb21vIHBhcnRlIGRlIHVtIGNvbmp1bnRvIGRlIOKAnHTDoXRpY2FzIGUgcHJvY2Vzc29zIHNlbSBzZW50aWRv4oCdLiBFbSB1bSB0b20gcHJvdm9jYXRpdm8sIGFjcmVzY2VudG91OiDigJxQcm92YXZlbG1lbnRlLCBzdWEgdmlkYSBpbnRlaXJhIGZvaSBndWlhZGEgcGVsYSBpbnNlZ3VyYW7Dp2EuIE7Do28gYWNobyBxdWUgZWxlIHNlamEgdW1hIHBlc3NvYSBmZWxpei4gU2ludG8gcG9yIGVsZSwgZGUgdmVyZGFkZS7igJ1cblxuRW5xdWFudG8gbyBjb25zZWxobyBkYSBPcGVuQUkgYWluZGEgbsOjbyBkZXUgdW1hIHJlc3Bvc3RhIG9maWNpYWwgc29icmUgYSBvZmVydGEsIMOpIGltcHJvdsOhdmVsIHF1ZSBhIHByb3Bvc3RhIGF2YW5jZSwgcmVmb3LDp2FuZG8gYSBkaXNwdXRhIGVudHJlIE11c2sgZSBBbHRtYW4gbm8gc2V0b3IgZGUgaW50ZWxpZ8OqbmNpYSBhcnRpZmljaWFsLlxuXG5FIHZvY8OqIG8gcXVlIGFjaGEgc29icmUgaXNzbz8g8J+klPCfkqwgXG5cbvCfkYnwn4+7U2lnYSBAZGllZ29hbG1laWRhLmlhIHBhcmEgbWFpcyBub3ZpZGFkZXMgc29icmVcbklBLCBDaGF0R1BUIGUgVGVjbm9sb2dpYSFcblxuI2lhICNpbnRlbGlnZW5jaWFhcnRpZmljaWFsICN0ZWNub2xvZ2lhICNhaSAjY2hhdGdwdFxuI2FpdG9vbHMgI29wZW5haSAjYWl0aXBzICNtYWNoaW5lbGVhcm5pbmcgI3NhbWFsdG1hbiAjZWxvbm11c2siLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwOTc3NDkwMzYzLCJmdWxsX25hbWUiOiJEaWVnbyBBbG1laWRhIHwgSUEgfCBDaGF0R1BUIiwiaWQiOiIyMzI2NDU4MyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0NzUyNDI4NzQzMTMwODQ0MDQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDYyMzM3MDY1XzUyODYwOTM2NjcyNzkyNV80NzExNTM4ODE0MTQzNjM3ODgzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRkdmIxRUdMbG80UTdrTnZnSGlxRldoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUJFcElkWTN5UEdlY0IyQy16S182YjM3TjlHQzMyRk0tYllBSXZjVWY0bmcmb2U9NjdCQjQ5Q0MmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ1c2VyX2lkIjoiMjMyNjQ1ODMifSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRGOGw0el9QNXlUIiwiY29tbWVudF9jb3VudCI6NzcsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTMwNjg0NzM2NTk2MywiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgyOTk5MjQ0NDMyMzY4MjMiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU2NTg5MTYzNjgwNDE2NDc1NSIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5MzE1MTMwXzE4NTAzMDU1NzYzMDMyNTg0XzgyNDY3OTk5MjQ2Mzk3OTE1NjJfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TXpVd2VERTJPRGN1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVNMXzBqY2pxZ1JBUTdrTnZnR1B3N2ZOJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnNU1UWXpOamd3TkRFMk5EYzFOUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUQ3NE85ZFB4YU5vNmtaNTk3bjM0V0FDcDd0NlhJTzRoSFQxano5Zk1CM01RJm9lPTY3QkI0MDMyJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzkzMTUxMzBfMTg1MDMwNTU3NjMwMzI1ODRfODI0Njc5OTkyNDYzOTc5MTU2Ml9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TXpVd2VERTJPRGN1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVNMXzBqY2pxZ1JBUTdrTnZnR1B3N2ZOJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnNU1UWXpOamd3TkRFMk5EYzFOUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUMtUFBFQ2QyeFJ1MzN0N3E0Z0drZlV3TElIM3ZyRkRPS2hFVWN3WXFuMHV3Jm9lPTY3QkI0MDMyJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjp0cnVlLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfc29jaWFsX3VmaV9kaXNhYmxlZCI6ZmFsc2UsImlzX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fdmlld2VyX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOnRydWUsImxpa2VfY291bnQiOjMsIm1hc2h1cF9pbmZvIjp7ImNhbl90b2dnbGVfbWFzaHVwc19hbGxvd2VkIjpmYWxzZSwiZm9ybWF0dGVkX21hc2h1cHNfY291bnQiOm51bGwsImhhc19iZWVuX21hc2hlZF91cCI6ZmFsc2UsImhhc19ub25taW1pY2FibGVfYWRkaXRpb25hbF9hdWRpbyI6ZmFsc2UsImlzX2NyZWF0b3JfcmVxdWVzdGluZ19tYXNodXAiOmZhbHNlLCJpc19saWdodF93ZWlnaHRfY2hlY2siOnRydWUsImlzX2xpZ2h0X3dlaWdodF9yZXVzZV9hbGxvd2VkX2NoZWNrIjpmYWxzZSwiaXNfcGl2b3RfcGFnZV9hdmFpbGFibGUiOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjp0cnVlLCJtYXNodXBfdHlwZSI6bnVsbCwibWFzaHVwc19hbGxvd2VkIjp0cnVlLCJub25fcHJpdmFjeV9maWx0ZXJlZF9tYXNodXBzX21lZGlhX2NvdW50IjowLCJvcmlnaW5hbF9tZWRpYSI6bnVsbCwicHJpdmFjeV9maWx0ZXJlZF9tYXNodXBzX21lZGlhX2NvdW50IjpudWxsfSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoicG9zdCIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjEsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIwIiwiYXVkaW9fdHlwZSI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6bnVsbH0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3JpZ2luYWxfaGVpZ2h0IjoxNjg3LCJvcmlnaW5hbF93aWR0aCI6MTM1MCwicGsiOiIzNTY1ODkxNjM2ODA0MTY0NzU1IiwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJmZWVkIiwic2hhcmVfY291bnRfZGlzYWJsZWQiOnRydWUsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3MzkzMDc0MzAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5MzE1MTMwXzE4NTAzMDU1NzYzMDMyNTg0XzgyNDY3OTk5MjQ2Mzk3OTE1NjJfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TXpVd2VERTJPRGN1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVNMXzBqY2pxZ1JBUTdrTnZnR1B3N2ZOJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnNU1UWXpOamd3TkRFMk5EYzFOUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUQ3NE85ZFB4YU5vNmtaNTk3bjM0V0FDcDd0NlhJTzRoSFQxano5Zk1CM01RJm9lPTY3QkI0MDMyJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJuaWtvbGFzX29saXZlaXJhLmltb3ZlaXMiXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwOTc3NDkwMzYzLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkRpZWdvIEFsbWVpZGEgfCBJQSB8IENoYXRHUFQiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiMjMyNjQ1ODMiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0NzUyNDI4NzQzMTMwODQ0MDQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDYyMzM3MDY1XzUyODYwOTM2NjcyNzkyNV80NzExNTM4ODE0MTQzNjM3ODgzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRkdmIxRUdMbG80UTdrTnZnSGlxRldoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUJFcElkWTN5UEdlY0IyQy16S182YjM3TjlHQzMyRk0tYllBSXZjVWY0bmcmb2U9NjdCQjQ5Q0MmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJkaWVnb2FsbWVpZGEuaWEifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE3Mzk1NDUyMDQsImNyZWF0ZWRfYXRfdXRjIjoxNzM5NTQ1MjA0LCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNfdHJhbnNsYXRpb24iOnRydWUsImhhc2h0YWdzIjpbIiNpYSIsIiNpbnRlbGlnZW5jaWFhcnRpZmljaWFsIiwiI3RlY25vbG9naWEiLCIjYWkiLCIjY2hhdGdwdCIsIiNhaXRvb2xzIiwiI29wZW5haSIsIiNhaXRpcHMiLCIjbWFjaGluZWxlYXJuaW5nIiwiI2Vsb25tdXNrIiwiI2dyb2siLCIjeCJdLCJpZCI6IjM1Njc4ODY2MTAxNTYxNDY0NjIiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6WyJAZGllZ29hbG1laWRhLmlhIl0sInBrIjoiMTgwNzAzNTU3Mzc3OTk5MDEiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJFbG9uIE11c2sgcmV2ZWxvdSBxdWUgYSBwcsOzeGltYSB2ZXJzw6NvIGRvIGNoYXRib3QgZGUgSUEgZGUgc3VhIGVtcHJlc2EsIG8gR3JvaywgcG9kZSBzZXIgbGFuw6dhZGEgZGVudHJvIGRlIGFsZ3VtYXMgc2VtYW5hcy4gRWxlIGRlc2NyZXZldSBhIG5vdmEgSUEgY29tbyDigJxhc3N1c3RhZG9yYW1lbnRlIGludGVsaWdlbnRl4oCdIGUgYWZpcm1vdSBxdWUgZWxhIGrDoSBzdXBlcm91IHRvZG9zIG9zIG91dHJvcyBtb2RlbG9zIGVtIHRlc3Rlcy5cblxuTXVzayB0YW1iw6ltIGFmaXJtYSBxdWUgbyBHcm9rLTMgZW5jb250cm91IHNvbHXDp8O1ZXMg4oCccXVlIG5pbmd1w6ltIHNlcXVlciBpbWFnaW5hcmlh4oCdIGUgcXVlIG8gY2hhdGJvdCBwb3NzdWkgdW0gbW9kbyBzZW0gY2Vuc3VyYSwgY2hhbWFkbyBkZSDigJx1bmhpbmdlZCBtb2Rl4oCdIChtb2RvIHNlbSBmaWx0cm8pLlxuXG5FIHZvY8OqIG8gcXVlIGFjaGEgc29icmUgaXNzbz8g8J+klPCfkqxcblxuRm9udGU6IFJldXRlcnNcblxu8J+RifCfj7tTaWdhIEBkaWVnb2FsbWVpZGEuaWEgcGFyYSBtYWlzIG5vdmlkYWRlcyBzb2JyZVxuSUEsIENoYXRHUFQgZSBUZWNub2xvZ2lhIVxuXG4jaWEgI2ludGVsaWdlbmNpYWFydGlmaWNpYWwgI3RlY25vbG9naWEgI2FpICNjaGF0Z3B0XG4jYWl0b29scyAjb3BlbmFpICNhaXRpcHMgI21hY2hpbmVsZWFybmluZyAjZWxvbm11c2sgI2dyb2sgI3giLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwOTc3NDkwMzYzLCJmdWxsX25hbWUiOiJEaWVnbyBBbG1laWRhIHwgSUEgfCBDaGF0R1BUIiwiaWQiOiIyMzI2NDU4MyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0NzUyNDI4NzQzMTMwODQ0MDQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDYyMzM3MDY1XzUyODYwOTM2NjcyNzkyNV80NzExNTM4ODE0MTQzNjM3ODgzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRkdmIxRUdMbG80UTdrTnZnSGlxRldoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUJFcElkWTN5UEdlY0IyQy16S182YjM3TjlHQzMyRk0tYllBSXZjVWY0bmcmb2U9NjdCQjQ5Q0MmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ1c2VyX2lkIjoiMjMyNjQ1ODMifSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHRHJmZnRPczhlIiwiY29tbWVudF9jb3VudCI6MTc1LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjE3Mzk1NDUyMDAsImZiX2FnZ3JlZ2F0ZWRfY29tbWVudF9jb3VudCI6MCwiZmJfYWdncmVnYXRlZF9saWtlX2NvdW50IjowLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmJpZCI6IjE4MDcwMzQ1MDI3Nzk5OTAxIiwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJmZWVkX3R5cGUiOiJtZWRpYSIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJTRUxGX0RJU0NMT1NVUkVfRkxPVyJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTY3ODg2NjEwMTU2MTQ2NDYyIiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg4MjM0MzBfMTg1MDM1NTUzMTcwMzI1ODRfNjcyNTEwMTk4OTkwNjM4NjU3NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNelV3ZURFMk9EY3VjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVdCZXAweUFOT0w4UTdrTnZnRWxpQjhxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTnpnNE5qWXhNREUxTmpFME5qUTJNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUR1MlJmVXJ3aE1Cbks1YTJSeGZUakhXT2ZsTFEtV1hjV1pqSHFfUnJWSllnJm9lPTY3QkIzMjgzJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg4MjM0MzBfMTg1MDM1NTUzMTcwMzI1ODRfNjcyNTEwMTk4OTkwNjM4NjU3NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TXpVd2VERTJPRGN1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1XQmVwMHlBTk9MOFE3a052Z0VsaUI4cSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk56ZzROall4TURFMU5qRTBOalEyTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBVzFtLTh6Q0w5QUZERnQ4Smt1U3BWSGJtS0tFRl9sSE1NLUhMQjBJUXNDZyZvZT02N0JCMzI4MyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6dHJ1ZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtYXNodXBfaW5mbyI6eyJjYW5fdG9nZ2xlX21hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsImZvcm1hdHRlZF9tYXNodXBzX2NvdW50IjpudWxsLCJoYXNfYmVlbl9tYXNoZWRfdXAiOmZhbHNlLCJoYXNfbm9ubWltaWNhYmxlX2FkZGl0aW9uYWxfYXVkaW8iOmZhbHNlLCJpc19jcmVhdG9yX3JlcXVlc3RpbmdfbWFzaHVwIjpmYWxzZSwiaXNfbGlnaHRfd2VpZ2h0X2NoZWNrIjp0cnVlLCJpc19saWdodF93ZWlnaHRfcmV1c2VfYWxsb3dlZF9jaGVjayI6ZmFsc2UsImlzX3Bpdm90X3BhZ2VfYXZhaWxhYmxlIjpmYWxzZSwiaXNfcmV1c2VfYWxsb3dlZCI6dHJ1ZSwibWFzaHVwX3R5cGUiOm51bGwsIm1hc2h1cHNfYWxsb3dlZCI6dHJ1ZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6InBvc3QiLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjoxLCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMCIsImF1ZGlvX3R5cGUiOm51bGwsIm11c2ljX2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOm51bGx9LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9yaWdpbmFsX2hlaWdodCI6MTY4Nywib3JpZ2luYWxfd2lkdGgiOjEzNTAsInBrIjoiMzU2Nzg4NjYxMDE1NjE0NjQ2MiIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiZmVlZCIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTU0NTIwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg4MjM0MzBfMTg1MDM1NTUzMTcwMzI1ODRfNjcyNTEwMTk4OTkwNjM4NjU3NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNelV3ZURFMk9EY3VjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVdCZXAweUFOT0w4UTdrTnZnRWxpQjhxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTnpnNE5qWXhNREUxTmpFME5qUTJNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUR1MlJmVXJ3aE1Cbks1YTJSeGZUakhXT2ZsTFEtV1hjV1pqSHFfUnJWSllnJm9lPTY3QkIzMjgzJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJhbGltb19qb3NlXyJdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiRGllZ28gQWxtZWlkYSB8IElBIHwgQ2hhdEdQVCIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyMzI2NDU4MyIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fbW9kaWZ5X2Nhcm91c2VsIjp0cnVlLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTc2ODIwOSwiY3JlYXRlZF9hdF91dGMiOjE3Mzk3NjgyMDksImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc2h0YWdzIjpbIiNhaSIsIiNhcnRpZmljaWFsaW50ZWxsaWdlbmNlIiwiI2FpdG9vbHMiLCIjYWloYWNrcyIsIiNjaGF0Z3B0IiwiI3RlY2giLCIjdGVjaG5vbG9neSJdLCJpZCI6IjM1Njk3NTY5MjY2MzAxNTM0MjIiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTgwNjQzNDUyNjQ5MTMxMjUiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiLwn5GJwqBNZXRhIGp1c3QgcmVsZWFzZWQgYSBncm91bmRicmVha2luZyBzdHVkeSBvbiBBSS1wb3dlcmVkIG1pbmQtcmVhZGluZy4gXG5cbvCfp6DCoFRoZWlyIHN5c3RlbSwgXCJCcmFpbjJRd2VydHksXCIgcHJlZGljdHMgd2hhdCBhIHBlcnNvbiBpcyB0eXBpbmcgd2l0aCA4MSUgYWNjdXJhY3kgdXNpbmcgRUVHIGFuZCBNRUcgc2NhbnPigJRubyBpbXBsYW50cyBvciBzdXJnZXJ5LCBqdXN0IGV4dGVybmFsIHNlbnNvcnMuXG5cbvCfkqHCoEJ5IGFuYWx5emluZyAxLDAwMCBicmFpbiBhY3Rpdml0eSBpbWFnZXMgcGVyIHNlY29uZCwgaXQgZGVjaXBoZXJzIHdvcmRzLCBzeWxsYWJsZXMsIGFuZCBsZXR0ZXJzIGZhc3RlciBhbmQgbW9yZSBhY2N1cmF0ZWx5IHRoYW4gdHJhZGl0aW9uYWwgYnJhaW4tY29tcHV0ZXIgaW50ZXJmYWNlcy4gXG5cbvCfjq/CoE1ldGEgYmVsaWV2ZXMgdGhpcyBjb3VsZCBiZSBhIGdhbWUtY2hhbmdlciBmb3IgaW5kaXZpZHVhbHMgd2l0aCBjb21tdW5pY2F0aW9uIGRpc2FiaWxpdGllcywgaGVscGluZyB0aGVtIHJlY29ubmVjdCB3aXRoIHRoZSB3b3JsZC5cblxu8J+Ul8KgUHVibGljYXRpb246IGh0dHBzOi8vYWkubWV0YS5jb20vcmVzZWFyY2gvcHVibGljYXRpb25zL2JyYWluLXRvLXRleHQtZGVjb2RpbmctYS1ub24taW52YXNpdmUtYXBwcm9hY2gtdmlhLXR5cGluZy9cblxuI2FpICNhcnRpZmljaWFsaW50ZWxsaWdlbmNlICNhaXRvb2xzICNhaWhhY2tzICNjaGF0Z3B0ICN0ZWNoICN0ZWNobm9sb2d5IiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQ1ODI1NzYzNjc4OCwiZnVsbF9uYW1lIjoiQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UiLCJpZCI6IjU4MTM0MzA5OTIxIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjMxODA1NTk2MzUwMzYzMDQ0NDAiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzcxNzI0ODEwXzEwMDA4MTY5NTU5MjU2ODI4XzI3MjM4Nzg0MjUyNTQ2MTA0NDNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9S2YwRHpTc2NXeTBRN2tOdmdHY3FjM2ImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBRmx2M0IyNF92M3JKT1pqbmZHdTNtSERycWxub2hDU0VTeFpZdnpEV3I1USZvZT02N0JCNTJFRSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoicG93ZXIuYWkifSwidXNlcl9pZCI6IjU4MTM0MzA5OTIxIn0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2Fyb3VzZWxfbWVkaWEiOlt7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njk3NTY5MjY2MzAxNTM0MjJfNTgxMzQzMDk5MjEiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY5NzU2OTE4NTQzNDE4MzE3IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTQ5OTU2Nl8xNzk0ODMwMTMzNTk0MTkyMl8yOTkzMjM1NzczNzEyNTc0MDM4X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jdnpyR2NBdUpBQVE3a052Z0Z4OW9LWCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UYzFOamt4T0RVME16UXhPRE14TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDQ1VXbkFKMmVfOUEtT05CQ2Q5VlRuUW90b2NpVFhrT1VSRDRyRzB0OEVLZyZvZT02N0JCNDA1RiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NDk5NTY2XzE3OTQ4MzAxMzM1OTQxOTIyXzI5OTMyMzU3NzM3MTI1NzQwMzhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jdnpyR2NBdUpBQVE3a052Z0Z4OW9LWCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UYzFOamt4T0RVME16UXhPRE14TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEb01pSHF0NTI4YlpVdlVoWFhXMDNpUGN1MU9iU2hVSXNQbDBKeklrTmEzdyZvZT02N0JCNDA1RiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTgwMCwib3JpZ2luYWxfd2lkdGgiOjE0NDAsInBrIjoiMzU2OTc1NjkxODU0MzQxODMxNyIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk3NjgyMDcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NDk5NTY2XzE3OTQ4MzAxMzM1OTQxOTIyXzI5OTMyMzU3NzM3MTI1NzQwMzhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWN2enJHY0F1SkFBUTdrTnZnRng5b0tYJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RjMU5qa3hPRFUwTXpReE9ETXhOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNDVVduQUoyZV85QS1PTkJDZDlWVG5Rb3RvY2lUWGtPVVJENHJHMHQ4RUtnJm9lPTY3QkI0MDVGJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY5NzU2OTI2NjMwMTUzNDIyXzU4MTM0MzA5OTIxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6dHJ1ZSwiaWQiOiIzNTY5NzU1Njk4NjgwODgxNzcyIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjg0NDc0XzE3OTQ4MzAxMzQ0OTQxOTIyXzUzNTU0NTg2MjU0NDUwOTUwNjVfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgyTnZkbVZ5WDJaeVlXMWxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU82bGgyOXlDNVljUTdrTnZnR1lvOWg0Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RjMU5UWTVPRFk0TURnNE1UYzNNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJVTmZLcDk4QUNqQnFGOGVmd3RaekN1Qm5XVFJaZjhJU2xsTnVPS0Iyd1Z3Jm9lPTY3QkI1QjMzJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dLCJzY3J1YmJlcl9zcHJpdGVzaGVldF9pbmZvX2NhbmRpZGF0ZXMiOnsiZGVmYXVsdCI6eyJmaWxlX3NpemVfa2IiOjI0OSwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjg4Miwic3ByaXRlX3VybHMiOlsiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDQwMDk1OV8xMzc0NzE0NzEwMzU1MTQ5XzgwMzA0OTMwMjE4NTczNDYwNTRfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUhodC1fclh0ODM4UTdrTnZnR3phSlBxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQTJVYjFocFJhQlJZdm1Gc3lVWm92Wi1MZlpsbmNUMTdqMkFEUEtWM29ldGcmb2U9NjdCQjVGOUEmX25jX3NpZD0yMDExYWQiXSwic3ByaXRlX3dpZHRoIjoxNTAwLCJ0aHVtYm5haWxfZHVyYXRpb24iOjAuMTE3ODc2MTkwNDc2MTkwNDgsInRodW1ibmFpbF9oZWlnaHQiOjEyNiwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjEyLjM3N319fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjo2LCJvcmlnaW5hbF9oZWlnaHQiOjMyMTYsIm9yaWdpbmFsX3dpZHRoIjoyNTc0LCJwayI6IjM1Njk3NTU2OTg2ODA4ODE3NzIiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NzY4MjA3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDY4NDQ3NF8xNzk0ODMwMTM0NDk0MTkyMl81MzU1NDU4NjI1NDQ1MDk1MDY1X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMk52ZG1WeVgyWnlZVzFsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1PNmxoMjl5QzVZY1E3a052Z0dZbzloNCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UYzFOVFk1T0RZNE1EZzRNVGMzTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCVU5mS3A5OEFDakJxRjhlZnd0WnpDdUJuV1RSWmY4SVNsbE51T0tCMndWdyZvZT02N0JCNUIzMyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjEyLjM3NywidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTkxLcVFROE1IQ01sVWxMckg4X09zeTc3VGlXdE9aRkRQVXVhNFR3dk9OMFJVczc1TjlYRGQ4VUtOaTd1WDhpVUJCbTFrajlpaDg3cWluaGdoZUk5MWhkelltOVJrdTZGRW5HR0UubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVTVNemd6TlRRNU5qazJPRFkzTUN3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZ2cz1hYzcxNjcyMjhkODZhMzU4Jl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgzT0RRM1EwVTJOekl5TkVORlJVSXpNa00yTlVFM01FWkRSREV6UTBKQ05GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkRVVuWm9lSGMwTlRORE5XdDZSVU5CUTI5M1JuUm1MVjlVU1ZWaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpyekgwSjNqaFk0Q0ZRSW9Ba016TEJkQUtMdGtXaHlzQ0JnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlDdjEtUllueUZQSXNQdl92NGVXVTNYSmNQNk1RcENvOVloc2t5dGk1Z09IUSZvZT02N0I3NkNDNCZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjIyMzc0NiwiaGVpZ2h0IjoxMzQ4LCJpZCI6IjM5NDk3MzgyMjUzNDY2ODJ2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFOTEtxUVE4TUhDTWxVbExySDhfT3N5NzdUaVd0T1pGRFBVdWE0VHd2T04wUlVzNzVOOVhEZDhVS05pN3VYOGlVQkJtMWtqOWloODdxaW5oZ2hlSTkxaGR6WW05Umt1NkZFbkdHRS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pVNU16Z3pOVFE1TmprMk9EWTNNQ3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJnZzPWFjNzE2NzIyOGQ4NmEzNTgmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODNPRFEzUTBVMk56SXlORU5GUlVJek1rTTJOVUUzTUVaRFJERXpRMEpDTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRFVW5ab2VIYzBOVE5ETld0NlJVTkJRMjkzUm5SbUxWOVVTVlZpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnJ6SDBKM2poWTRDRlFJb0FrTXpMQmRBS0x0a1doeXNDQmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUN2MS1SWW55RlBJc1B2X3Y0ZVdVM1hKY1A2TVFwQ285WWhza3l0aTVnT0hRJm9lPTY3Qjc2Q0M0Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoyMjM3NDYsImhlaWdodCI6MTM0OCwiaWQiOiIzOTQ5NzM4MjI1MzQ2NjgydiIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTkxLcVFROE1IQ01sVWxMckg4X09zeTc3VGlXdE9aRkRQVXVhNFR3dk9OMFJVczc1TjlYRGQ4VUtOaTd1WDhpVUJCbTFrajlpaDg3cWluaGdoZUk5MWhkelltOVJrdTZGRW5HR0UubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVTVNemd6TlRRNU5qazJPRFkzTUN3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZ2cz1hYzcxNjcyMjhkODZhMzU4Jl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgzT0RRM1EwVTJOekl5TkVORlJVSXpNa00yTlVFM01FWkRSREV6UTBKQ05GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkRVVuWm9lSGMwTlRORE5XdDZSVU5CUTI5M1JuUm1MVjlVU1ZWaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpyekgwSjNqaFk0Q0ZRSW9Ba016TEJkQUtMdGtXaHlzQ0JnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlDdjEtUllueUZQSXNQdl92NGVXVTNYSmNQNk1RcENvOVloc2t5dGk1Z09IUSZvZT02N0I3NkNDNCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjIzNzQ2LCJoZWlnaHQiOjEzNDgsImlkIjoiMzk0OTczODIyNTM0NjY4MnYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU5MS3FRUThNSENNbFVsTHJIOF9Pc3k3N1RpV3RPWkZEUFV1YTRUd3ZPTjBSVXM3NU45WERkOFVLTmk3dVg4aVVCQm0xa2o5aWg4N3FpbmhnaGVJOTFoZHpZbTlSa3U2RkVuR0dFLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalU1TXpnek5UUTVOamsyT0RZM01Dd2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmdnM9YWM3MTY3MjI4ZDg2YTM1OCZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4M09EUTNRMFUyTnpJeU5FTkZSVUl6TWtNMk5VRTNNRVpEUkRFelEwSkNORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEVVblpvZUhjME5UTkROV3Q2UlVOQlEyOTNSblJtTFY5VVNWVmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcnpIMEozamhZNENGUUlvQWtNekxCZEFLTHRrV2h5c0NCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQ3YxLVJZbnlGUElzUHZfdjRlV1UzWEpjUDZNUXBDbzlZaHNreXRpNWdPSFEmb2U9NjdCNzZDQzQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njk3NTY5MjY2MzAxNTM0MjJfNTgxMzQzMDk5MjEiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaGFzX2F1ZGlvIjp0cnVlLCJpZCI6IjM1Njk3NTU2OTg2MTM5NjUyNjYiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA2ODgwNjJfMTc5NDgzMDEzNjg5NDE5MjJfNzA5OTA0NTc1MjAwNTczMjAwNF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJOdmRtVnlYMlp5WVcxbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Y1AtYVpzVGpBQ01RN2tOdmdGLS1IYzcmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGMxTlRZNU9EWXhNemsyTlRJMk5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQmxsZ29XQzlKejBrb0JFXzBTX05kazdSclN0VnBvVGt0WlpxR1ZET0xTRVEmb2U9NjdCQjY0RDMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6MjAzLCJtYXhfdGh1bWJuYWlsc19wZXJfc3ByaXRlIjoxMDUsInJlbmRlcmVkX3dpZHRoIjo5Niwic3ByaXRlX2hlaWdodCI6ODgyLCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMzc1NzM4XzM5Mjk4MzMzMDcyNTk2OTdfNzMyOTcxNTM4NDgxMTc5OTEzNV9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UHB6RnRWaXJiNThRN2tOdmdGS0pUdzcmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlEQm5TOS02NGtqUWNxM3BHYnlMcEd0LUxQRlZzT0FLRDA2b19pWEhZTWVVZyZvZT02N0JCMzlFNyZfbmNfc2lkPTIwMTFhZCJdLCJzcHJpdGVfd2lkdGgiOjE1MDAsInRodW1ibmFpbF9kdXJhdGlvbiI6MC40MDE4MDk1MjM4MDk1MjM4LCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjo0Mi4xOX19fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjo2LCJvcmlnaW5hbF9oZWlnaHQiOjMyMTYsIm9yaWdpbmFsX3dpZHRoIjoyNTc0LCJwayI6IjM1Njk3NTU2OTg2MTM5NjUyNjYiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NzY4MjA3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDY4ODA2Ml8xNzk0ODMwMTM2ODk0MTkyMl83MDk5MDQ1NzUyMDA1NzMyMDA0X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMk52ZG1WeVgyWnlZVzFsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jUC1hWnNUakFDTVE3a052Z0YtLUhjNyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UYzFOVFk1T0RZeE16azJOVEkyTmclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCbGxnb1dDOUp6MGtvQkVfMFNfTmRrN1JyU3RWcG9Ua3RaWnFHVkRPTFNFUSZvZT02N0JCNjREMyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjQyLjE5LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFOVV9UQWRNTS15eTRfMkF3TmRlNzZtcDBXY3JmeFR3OVhnNTRBVzFzR3VyV3lhQXlrU0J0SURiaWs5UjlxenJYalQyazg3WGhGZ0JsUXRWMUlVbjB4Wl9CS2dpVF9XenlHd21kTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFeE5URTNPREEyTkRZME9UZ3hPRGNzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPWY1MDU0ZDNkN2FlM2E3ZjcmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUZRelE0TkRVMVJEZERPVGN4TXprM01EZ3lSRVZDUkVSRE56ZEZPVVpCTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGROU0RGbVVub3pTbW94WnpCNVVVVkJUekpVVEdwTVIxSTVaMDlpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnBhLTJjUzY0b3NFRlFJb0FrTXpMQmRBUlJVX2ZPMlJhQmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUF1MERuRGlXbEpYbHlMNUhvRF9YbXdXaHUxbDNadVJGX25kVHZHOXJfUVpnJm9lPTY3Qjc2MjRFJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6NDE0NjA1LCJoZWlnaHQiOjEzNDgsImlkIjoiOTEwNzYxNTUwMjY2Nzk4MHYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU5VX1RBZE1NLXl5NF8yQXdOZGU3Nm1wMFdjcmZ4VHc5WGc1NEFXMXNHdXJXeWFBeWtTQnRJRGJpazlSOXF6clhqVDJrODdYaEZnQmxRdFYxSVVuMHhaX0JLZ2lUX1d6eUd3bWRNLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV4TlRFM09EQTJORFkwT1RneE9EY3NJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9ZjUwNTRkM2Q3YWUzYTdmNyZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5RlF6UTRORFUxUkRkRE9UY3hNemszTURneVJFVkNSRVJETnpkRk9VWkJORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZE5TREZtVW5velNtb3haekI1VVVWQlR6SlVUR3BNUjFJNVowOWlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcGEtMmNTNjRvc0VGUUlvQWtNekxCZEFSUlVfZk8yUmFCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQXUwRG5EaVdsSlhseUw1SG9EX1htd1dodTFsM1p1UkZfbmRUdkc5cl9RWmcmb2U9NjdCNzYyNEUmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjQxNDYwNSwiaGVpZ2h0IjoxMzQ4LCJpZCI6IjkxMDc2MTU1MDI2Njc5ODB2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFOVV9UQWRNTS15eTRfMkF3TmRlNzZtcDBXY3JmeFR3OVhnNTRBVzFzR3VyV3lhQXlrU0J0SURiaWs5UjlxenJYalQyazg3WGhGZ0JsUXRWMUlVbjB4Wl9CS2dpVF9XenlHd21kTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFeE5URTNPREEyTkRZME9UZ3hPRGNzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPWY1MDU0ZDNkN2FlM2E3ZjcmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUZRelE0TkRVMVJEZERPVGN4TXprM01EZ3lSRVZDUkVSRE56ZEZPVVpCTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGROU0RGbVVub3pTbW94WnpCNVVVVkJUekpVVEdwTVIxSTVaMDlpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnBhLTJjUzY0b3NFRlFJb0FrTXpMQmRBUlJVX2ZPMlJhQmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUF1MERuRGlXbEpYbHlMNUhvRF9YbXdXaHUxbDNadVJGX25kVHZHOXJfUVpnJm9lPTY3Qjc2MjRFJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjo0MTQ2MDUsImhlaWdodCI6MTM0OCwiaWQiOiI5MTA3NjE1NTAyNjY3OTgwdiIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTlVfVEFkTU0teXk0XzJBd05kZTc2bXAwV2NyZnhUdzlYZzU0QVcxc0d1cld5YUF5a1NCdElEYmlrOVI5cXpyWGpUMms4N1hoRmdCbFF0VjFJVW4weFpfQktnaVRfV3p5R3dtZE0ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXhOVEUzT0RBMk5EWTBPVGd4T0Rjc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz1mNTA1NGQzZDdhZTNhN2Y3Jl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlGUXpRNE5EVTFSRGRET1RjeE16azNNRGd5UkVWQ1JFUkROemRGT1VaQk5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkTlNERm1Vbm96U21veFp6QjVVVVZCVHpKVVRHcE1SMUk1WjA5aWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpwYS0yY1M2NG9zRUZRSW9Ba016TEJkQVJSVV9mTzJSYUJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlBdTBEbkRpV2xKWGx5TDVIb0RfWG13V2h1MWwzWnVSRl9uZFR2RzlyX1FaZyZvZT02N0I3NjI0RSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2OTc1NjkyNjYzMDE1MzQyMl81ODEzNDMwOTkyMSIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOnRydWUsImlkIjoiMzU2OTc1NTY5OTA1ODUyNDMwNCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTQ5OTM0N18xNzk0ODMwMTM1OTk0MTkyMl81MTAxNTM1MTQ3NTYwMzg5NDcwX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMk52ZG1WeVgyWnlZVzFsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1RVks0ekNmY1JmRVE3a052Z0VrdWpmNCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UYzFOVFk1T1RBMU9EVXlORE13TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDNE9VM3pUUlBFVUJYamZJaUhmMGYxTXV6OVVTQ29hRTlmcTlkZGlfSkFHZyZvZT02N0JCNjNBRSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoxOTksIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk4ODg2MzFfMzc1NjAyMTk0NDU0MzIxNF8yNzUzMjU2NjE0ODUwNTM1MDk4X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1Qajloc0tldHhJTVE3a052Z0dNbUNjUiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFXNWhJQXlqcERxUUY1eWFLUUxKT2QyMG81aFlUQ3BQZWs0OGthLVBHOWd3Jm9lPTY3QkI0ODcwJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjM2MiwidGh1bWJuYWlsX2hlaWdodCI6MTI2LCJ0aHVtYm5haWxfd2lkdGgiOjEwMCwidGh1bWJuYWlsc19wZXJfcm93IjoxNSwidG90YWxfdGh1bWJuYWlsX251bV9wZXJfc3ByaXRlIjoxMDUsInZpZGVvX2xlbmd0aCI6MzguMDF9fX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Niwib3JpZ2luYWxfaGVpZ2h0IjozMjE2LCJvcmlnaW5hbF93aWR0aCI6MjU3NCwicGsiOiIzNTY5NzU1Njk5MDU4NTI0MzA0IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTc2ODIwNywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk0OTkzNDdfMTc5NDgzMDEzNTk5NDE5MjJfNTEwMTUzNTE0NzU2MDM4OTQ3MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJOdmRtVnlYMlp5WVcxbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9UVZLNHpDZmNSZkVRN2tOdmdFa3VqZjQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVGMxTlRZNU9UQTFPRFV5TkRNd05BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQzRPVTN6VFJQRVVCWGpmSWlIZjBmMU11ejlVU0NvYUU5ZnE5ZGRpX0pBR2cmb2U9NjdCQjYzQUUmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wNE0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjozOC4wMSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT1BjRE9JejFpODRkNEdEblR4c0dkMzBkOElxODlvUFVpdHY4ZGNPN0plWkVBZlFtUk5JbFhWRE1JMjgxN29xSkpzVndKRkdjRWhMZWVLLXVRUnR2UkxIWjhkR3RKbFdCQWE2WFUubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRTFOakk0T1RJME1UUTBNVGMzT1RVc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMyZ2cz01MDVhY2Q1ZTQyODBhZjlhJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzh5UlRRMU5rRTRSVVV6UkRsQ016RXpSa1kzTUVFME9VVTNNVUU0TnpCQk5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkSmFtVnZVbmxZVDNJdE9XSldORTFCVFRoNVpIbDZhRFo2VG1aaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpvYnU5X0tuM01ZRkZRSW9Ba016TEJkQVF3QUFBQUFBQUJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlCODNvWGNZVEdFZjRrQ2R0OFBvYk9NX0pRT1lOSXVyalh6ajg3YmdUMnFrUSZvZT02N0I3NjQ1NCZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjI3MTU5NSwiaGVpZ2h0IjoxMzQ4LCJpZCI6IjQ5MzM0MTc2NzE2MjQyOXYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9QY0RPSXoxaTg0ZDRHRG5UeHNHZDMwZDhJcTg5b1BVaXR2OGRjTzdKZVpFQWZRbVJOSWxYVkRNSTI4MTdvcUpKc1Z3SkZHY0VoTGVlSy11UVJ0dlJMSFo4ZEd0SmxXQkFhNlhVLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUxTmpJNE9USTBNVFEwTVRjM09UVXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmdnM9NTA1YWNkNWU0MjgwYWY5YSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4eVJUUTFOa0U0UlVVelJEbENNekV6UmtZM01FRTBPVVUzTVVFNE56QkJORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEphbVZ2VW5sWVQzSXRPV0pXTkUxQlRUaDVaSGw2YURaNlRtWmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKb2J1OV9LbjNNWUZGUUlvQWtNekxCZEFRd0FBQUFBQUFCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQjgzb1hjWVRHRWY0a0NkdDhQb2JPTV9KUU9ZTkl1cmpYemo4N2JnVDJxa1Emb2U9NjdCNzY0NTQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjI3MTU5NSwiaGVpZ2h0IjoxMzQ4LCJpZCI6IjQ5MzM0MTc2NzE2MjQyOXYiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9QY0RPSXoxaTg0ZDRHRG5UeHNHZDMwZDhJcTg5b1BVaXR2OGRjTzdKZVpFQWZRbVJOSWxYVkRNSTI4MTdvcUpKc1Z3SkZHY0VoTGVlSy11UVJ0dlJMSFo4ZEd0SmxXQkFhNlhVLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUxTmpJNE9USTBNVFEwTVRjM09UVXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmdnM9NTA1YWNkNWU0MjgwYWY5YSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4eVJUUTFOa0U0UlVVelJEbENNekV6UmtZM01FRTBPVVUzTVVFNE56QkJORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEphbVZ2VW5sWVQzSXRPV0pXTkUxQlRUaDVaSGw2YURaNlRtWmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKb2J1OV9LbjNNWUZGUUlvQWtNekxCZEFRd0FBQUFBQUFCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQjgzb1hjWVRHRWY0a0NkdDhQb2JPTV9KUU9ZTkl1cmpYemo4N2JnVDJxa1Emb2U9NjdCNzY0NTQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjI3MTU5NSwiaGVpZ2h0IjoxMzQ4LCJpZCI6IjQ5MzM0MTc2NzE2MjQyOXYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9QY0RPSXoxaTg0ZDRHRG5UeHNHZDMwZDhJcTg5b1BVaXR2OGRjTzdKZVpFQWZRbVJOSWxYVkRNSTI4MTdvcUpKc1Z3SkZHY0VoTGVlSy11UVJ0dlJMSFo4ZEd0SmxXQkFhNlhVLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUxTmpJNE9USTBNVFEwTVRjM09UVXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmdnM9NTA1YWNkNWU0MjgwYWY5YSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4eVJUUTFOa0U0UlVVelJEbENNekV6UmtZM01FRTBPVVUzTVVFNE56QkJORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEphbVZ2VW5sWVQzSXRPV0pXTkUxQlRUaDVaSGw2YURaNlRtWmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKb2J1OV9LbjNNWUZGUUlvQWtNekxCZEFRd0FBQUFBQUFCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQjgzb1hjWVRHRWY0a0NkdDhQb2JPTV9KUU9ZTkl1cmpYemo4N2JnVDJxa1Emb2U9NjdCNzY0NTQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1Njk3NTY5MjY2MzAxNTM0MjJfNTgxMzQzMDk5MjEiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY5NzU2OTE4NTg1NDg3MzEyIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTQ5OTYyN18xNzk0ODMwMTMyMzk0MTkyMl84MzI5NzUyMTUzMDUwNzA4ODg1X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1XTTl0WjZQVG5Za1E3a052Z0VOU3N1bCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UYzFOamt4T0RVNE5UUTROek14TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBVTJmbjdBcVk4cWFKSTlVenpJOUxyNjdzRkcxdUNfTEhWNEJaME82MldRdyZvZT02N0JCNEY4NCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NDk5NjI3XzE3OTQ4MzAxMzIzOTQxOTIyXzgzMjk3NTIxNTMwNTA3MDg4ODVfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1XTTl0WjZQVG5Za1E3a052Z0VOU3N1bCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UYzFOamt4T0RVNE5UUTROek14TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBc3hEZkY5LVI4SUw0ZWI1ZkxDajVRUEgyWHRaSDFPR2hmcG05czQ2dmNWZyZvZT02N0JCNEY4NCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTgwMCwib3JpZ2luYWxfd2lkdGgiOjE0NDAsInBrIjoiMzU2OTc1NjkxODU4NTQ4NzMxMiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk3NjgyMDcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NDk5NjI3XzE3OTQ4MzAxMzIzOTQxOTIyXzgzMjk3NTIxNTMwNTA3MDg4ODVfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVdNOXRaNlBUbllrUTdrTnZnRU5Tc3VsJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RjMU5qa3hPRFU0TlRRNE56TXhNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFVMmZuN0FxWThxYUpJOVV6ekk5THI2N3NGRzF1Q19MSFY0QlowTzYyV1F3Jm9lPTY3QkI0Rjg0Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6NSwiY2Fyb3VzZWxfbWVkaWFfaWRzIjpbMzU2OTc1NjkxODU0MzQxODMxNywzNTY5NzU1Njk4NjgwODgxNzcyLDM1Njk3NTU2OTg2MTM5NjUyNjYsMzU2OTc1NTY5OTA1ODUyNDMwNCwzNTY5NzU2OTE4NTg1NDg3MzEyXSwiY2Fyb3VzZWxfbWVkaWFfcGVuZGluZ19wb3N0X2NvdW50IjowLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHS1V3THFSOHpPIiwiY29tbWVudF9jb3VudCI6MzUsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTc2ODIwNTEzMSwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgwNjQzNDUyNjE5MTMxMjUiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU2OTc1NjkyNjYzMDE1MzQyMiIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5NDk5NTY2XzE3OTQ4MzAxMzM1OTQxOTIyXzI5OTMyMzU3NzM3MTI1NzQwMzhfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWN2enJHY0F1SkFBUTdrTnZnRng5b0tYJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RjMU5qa3hPRFUwTXpReE9ETXhOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNDVVduQUoyZV85QS1PTkJDZDlWVG5Rb3RvY2lUWGtPVVJENHJHMHQ4RUtnJm9lPTY3QkI0MDVGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk0OTk1NjZfMTc5NDgzMDEzMzU5NDE5MjJfMjk5MzIzNTc3MzcxMjU3NDAzOF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWN2enJHY0F1SkFBUTdrTnZnRng5b0tYJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RjMU5qa3hPRFUwTXpReE9ETXhOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURvTWlIcXQ1MjhiWlV2VWhYWFcwM2lQY3UxT2JTaFVJc1BsMEp6SWtOYTN3Jm9lPTY3QkI0MDVGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtZWRpYV9mb3JtYXQiOiJhbGJ1bSIsIm1lZGlhX25hbWUiOiJhbGJ1bSIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjgsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIwIiwiYXVkaW9fdHlwZSI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6bnVsbH0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3Blbl9jYXJvdXNlbF9zdWJtaXNzaW9uX3N0YXRlIjoiY2xvc2VkIiwib3JpZ2luYWxfaGVpZ2h0Ijo2MTIsIm9yaWdpbmFsX3dpZHRoIjo2MTIsInBrIjoiMzU2OTc1NjkyNjYzMDE1MzQyMiIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfY29udGFpbmVyIiwic2hhcmVfY291bnRfZGlzYWJsZWQiOmZhbHNlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInN1YnNjcmliZV9jdGFfdmlzaWJsZSI6ZmFsc2UsInRha2VuX2F0IjoxNzM5NzY4MjA4LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTQ5OTU2Nl8xNzk0ODMwMTMzNTk0MTkyMl8yOTkzMjM1NzczNzEyNTc0MDM4X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jdnpyR2NBdUpBQVE3a052Z0Z4OW9LWCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9UYzFOamt4T0RVME16UXhPRE14TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDQ1VXbkFKMmVfOUEtT05CQ2Q5VlRuUW90b2NpVFhrT1VSRDRyRzB0OEVLZyZvZT02N0JCNDA1RiZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOlsibmFiYnllbnRlcnRhaW5tZW50Il0sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQ1ODI1NzYzNjc4OCwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJBcnRpZmljaWFsIEludGVsbGlnZW5jZSIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiI1ODEzNDMwOTkyMSIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjMxODA1NTk2MzUwMzYzMDQ0NDAiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzcxNzI0ODEwXzEwMDA4MTY5NTU5MjU2ODI4XzI3MjM4Nzg0MjUyNTQ2MTA0NDNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9S2YwRHpTc2NXeTBRN2tOdmdHY3FjM2ImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBRmx2M0IyNF92M3JKT1pqbmZHdTNtSERycWxub2hDU0VTeFpZdnpEV3I1USZvZT02N0JCNTJFRSZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6InBvd2VyLmFpIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9tb2RpZnlfY2Fyb3VzZWwiOnRydWUsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5NDQ3NDAzLCJjcmVhdGVkX2F0X3V0YyI6MTczOTQ0NzQwMywiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzX3RyYW5zbGF0aW9uIjp0cnVlLCJoYXNodGFncyI6WyIjaWEiLCIjaW50ZWxpZ2VuY2lhYXJ0aWZpY2lhbCIsIiN0ZWNub2xvZ2lhIiwiI2FpIiwiI2NoYXRncHQiLCIjYWl0b29scyIsIiNvcGVuYWkiLCIjYWl0aXBzIiwiI21hY2hpbmVsZWFybmluZyJdLCJpZCI6IjM1NjcwNjYyMzA2OTI5MjIzODkiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6WyJAZGllZ29hbG1laWRhLmlhIl0sInBrIjoiMTgwNDI5MTYyMDUwNzE4NzIiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiLwn6SvIEEgTWlzdHJhbCBBSSBsYW7Dp291IG8gTGUgQ2hhdCwgdW0gYXNzaXN0ZW50ZSBkZSBJQSBwcm9qZXRhZG8gcGFyYSBjb21wZXRpciBjb20gbyBDaGF0R1BULCBjb21iaW5hbmRvIHZlbG9jaWRhZGUgZSBlZmljacOqbmNpYS5cblxuQ29tIEZsYXNoIEFuc3dlcnMsIHByb2Nlc3NhIDEuMDAwIHBhbGF2cmFzIHBvciBzZWd1bmRvIGUgb2ZlcmVjZSBhbsOhbGlzZSBkZSBkb2N1bWVudG9zLCBnZXJhw6fDo28gZGUgaW1hZ2VucywgcGVzcXVpc2EgZW0gdGVtcG8gcmVhbCBuYSB3ZWIgZSBzdXBvcnRlIG11bHRpbMOtbmd1ZS5cblxuRnVuZGFkYSBwb3IgZXgtcGVzcXVpc2Fkb3JlcyBkbyBHb29nbGUgRGVlcE1pbmQgZSBkYSBNZXRhIEFJLCBhIE1pc3RyYWwgQUkgc2UgdG9ybm91IGEgc3RhcnR1cCBkZSBJQSBtYWlzIGluZmx1ZW50ZSBkYSBFdXJvcGEsIGF2YWxpYWRhIGVtIOKCrDUsOCBiaWxow7VlcyBlIGFwb2lhZGEgcGVsYSBNaWNyb3NvZnQuXG5cbk8gTGUgQ2hhdCBwb3NzdWkgdW0gcGxhbm8gZ3JhdHVpdG8sIHVtYSB2ZXJzw6NvIFBybyBwb3IgJDE0LDk5L23DqnMgZSBzb2x1w6fDtWVzIGVtcHJlc2FyaWFpcy4gRXN0dWRhbnRlcyByZWNlYmVtIG1haXMgZGUgNTAlIGRlIGRlc2NvbnRvLCB0b3JuYW5kby1vIHVtYSBkYXMgZmVycmFtZW50YXMgZGUgSUEgbWFpcyBhY2Vzc8OtdmVpcy5cblxuRSB2b2PDqiBvIHF1ZSBhY2hhIHNvYnJlIGlzc28/IPCfpJTwn5KsIFxuXG7wn5GJ8J+Pu1NpZ2EgQGRpZWdvYWxtZWlkYS5pYSBwYXJhIG1haXMgbm92aWRhZGVzIHNvYnJlXG5JQSwgQ2hhdEdQVCBlIFRlY25vbG9naWEhXG5cbiNpYSAjaW50ZWxpZ2VuY2lhYXJ0aWZpY2lhbCAjdGVjbm9sb2dpYSAjYWkgI2NoYXRncHRcbiNhaXRvb2xzICNvcGVuYWkgI2FpdGlwcyAjbWFjaGluZWxlYXJuaW5nXG5BIGNvbXBldGnDp8OjbyBubyBzZXRvciBlc3TDoSBjYWRhIHZleiBtYWlzIGFjaXJyYWRhLiIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZ1bGxfbmFtZSI6IkRpZWdvIEFsbWVpZGEgfCBJQSB8IENoYXRHUFQiLCJpZCI6IjIzMjY0NTgzIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiZGllZ29hbG1laWRhLmlhIn0sInVzZXJfaWQiOiIyMzI2NDU4MyJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNhcm91c2VsX21lZGlhIjpbeyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY3MDY2MjMwNjkyOTIyMzg5XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NjYxMTY5MjQ5MjA3Mjk5NiIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzcwNjY3NjlfMTg1MDMyMzkwOTMwMzI1ODRfNzc5NDc3OTc2ODczMjg2NzcyM19uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Nml4dnFZMlVxTmNRN2tOdmdGcElhNzEmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qUTVNakEzTWprNU5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkNPQUhvYTlEMU5VTnY0bE5XaDloZEZrYkNjY1BrR1AwNm4wUkd4T2RzdGcmb2U9NjdCQjNGNEImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzA2Njc2OV8xODUwMzIzOTA5MzAzMjU4NF83Nzk0Nzc5NzY4NzMyODY3NzIzX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Nml4dnFZMlVxTmNRN2tOdmdGcElhNzEmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qUTVNakEzTWprNU5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1ZSNzluMVJ0VV91bU4yNzk0OTdQVzItdFVVVlVDQ0g5b3JFUWxOT1AyY2cmb2U9NjdCQjNGNEImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjY2MTE2OTI0OTIwNzI5OTYiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NDQ3NDAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzA2Njc2OV8xODUwMzIzOTA5MzAzMjU4NF83Nzk0Nzc5NzY4NzMyODY3NzIzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz02aXh2cVkyVXFOY1E3a052Z0ZwSWE3MSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpRNU1qQTNNams1TmclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCQ09BSG9hOUQxTlVOdjRsTldoOWhkRmtiQ2NjUGtHUDA2bjBSR3hPZHN0ZyZvZT02N0JCM0Y0QiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NzA2NjIzMDY5MjkyMjM4OV8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOnRydWUsImlkIjoiMzU2NjYxMTY5MjI0MDI4NzYwNSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NjkyNDkwMV8xODUwMzIzOTE2NTAzMjU4NF84MTAyNjc2OTg1MDM4OTkyNzYwX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz12RGxEVWJsQ05VUVE3a052Z0hCTkR1aiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpJME1ESTROell3TlElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEb1R4bFZtRGlscjhzdWxjRVpGY3RJeDgzZm9tdDNGRUI4MzREWktPTU43QSZvZT02N0JCNUEyNSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Mywib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY2NjExNjkyMjQwMjg3NjA1IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTQ0NzQwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY5MjQ5MDFfMTg1MDMyMzkxNjUwMzI1ODRfODEwMjY3Njk4NTAzODk5Mjc2MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9dkRsRFVibENOVVFRN2tOdmdIQk5EdWomX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qSTBNREk0TnpZd05RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRG9UeGxWbURpbHI4c3VsY0VaRmN0SXg4M2ZvbXQzRkVCODM0RFpLT01ON0Emb2U9NjdCQjVBMjUmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6InZwMDkuMDAuMzEuMDguMDAuMDEuMDEuMDEuMDAiLCJ2aWRlb19kdXJhdGlvbiI6NDkuOSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTnlUanFlbWVseGxUcG9ueW5QaldmOUNnQzJMSVFnaEp4YmZDSFQ3Ry1CR3dFWVhJQU1FTHIyTVV6TjVwVHZwT2t2SEFoclV4SDlUZUotMUU0Ty1reGtyZVRNay13ZkY1QjctclEubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qTXdOREF3TURnMk5qazBPRGd3TlRZc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz04ODVmNzFhNGM5MTZkZWE1Jl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzg1UkRRM01EVTFNa0pDUTBZeU9UazBORVJCTXprMlJqWTBSRUkyTUVVNE5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkTFRsaGhVbmxNVkVOd2JsZHZPRVpCUmpaT2FrdEhZeTE2WkhSaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp2Q08zODNsdC1ZS0ZRSW9Ba016TEJkQVNQTXpNek16TXhnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlCS2hPQkZUdmJMa2VlbHc5QVFvS0o0MEdPek1WQ01FOWV3eUxFMF9ha2RMdyZvZT02N0I3NzE0QSZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjIyODIyNCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEyNjQ3MTg4MjUyMTc3MDZ2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFOeVRqcWVtZWx4bFRwb255blBqV2Y5Q2dDMkxJUWdoSnhiZkNIVDdHLUJHd0VZWElBTUVMcjJNVXpONXBUdnBPa3ZIQWhyVXhIOVRlSi0xRTRPLWt4a3JlVE1rLXdmRjVCNy1yUS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pNd05EQXdNRGcyTmprME9EZ3dOVFlzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPTg4NWY3MWE0YzkxNmRlYTUmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODVSRFEzTURVMU1rSkNRMFl5T1RrME5FUkJNemsyUmpZMFJFSTJNRVU0TkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRMVGxoaFVubE1WRU53Ymxkdk9FWkJSalpPYWt0SFl5MTZaSFJpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnZDTzM4M2x0LVlLRlFJb0FrTXpMQmRBU1BNek16TXpNeGdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUJLaE9CRlR2YkxrZWVsdzlBUW9LSjQwR096TVZDTUU5ZXd5TEUwX2FrZEx3Jm9lPTY3Qjc3MTRBJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoyMjgyMjQsImhlaWdodCI6MTM1MCwiaWQiOiIxMjY0NzE4ODI1MjE3NzA2diIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTnlUanFlbWVseGxUcG9ueW5QaldmOUNnQzJMSVFnaEp4YmZDSFQ3Ry1CR3dFWVhJQU1FTHIyTVV6TjVwVHZwT2t2SEFoclV4SDlUZUotMUU0Ty1reGtyZVRNay13ZkY1QjctclEubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qTXdOREF3TURnMk5qazBPRGd3TlRZc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz04ODVmNzFhNGM5MTZkZWE1Jl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzg1UkRRM01EVTFNa0pDUTBZeU9UazBORVJCTXprMlJqWTBSRUkyTUVVNE5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkTFRsaGhVbmxNVkVOd2JsZHZPRVpCUmpaT2FrdEhZeTE2WkhSaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp2Q08zODNsdC1ZS0ZRSW9Ba016TEJkQVNQTXpNek16TXhnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlCS2hPQkZUdmJMa2VlbHc5QVFvS0o0MEdPek1WQ01FOWV3eUxFMF9ha2RMdyZvZT02N0I3NzE0QSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjI4MjI0LCJoZWlnaHQiOjEzNTAsImlkIjoiMTI2NDcxODgyNTIxNzcwNnYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU55VGpxZW1lbHhsVHBvbnluUGpXZjlDZ0MyTElRZ2hKeGJmQ0hUN0ctQkd3RVlYSUFNRUxyMk1Vek41cFR2cE9rdkhBaHJVeEg5VGVKLTFFNE8ta3hrcmVUTWstd2ZGNUI3LXJRLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPak13TkRBd01EZzJOamswT0Rnd05UWXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9ODg1ZjcxYTRjOTE2ZGVhNSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4NVJEUTNNRFUxTWtKQ1EwWXlPVGswTkVSQk16azJSalkwUkVJMk1FVTRORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZExUbGhoVW5sTVZFTndibGR2T0VaQlJqWk9ha3RIWXkxNlpIUmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdkNPMzgzbHQtWUtGUUlvQWtNekxCZEFTUE16TXpNek14Z1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQktoT0JGVHZiTGtlZWx3OUFRb0tKNDBHT3pNVkNNRTlld3lMRTBfYWtkTHcmb2U9NjdCNzcxNEEmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjcwNjYyMzA2OTI5MjIzODlfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY2NjExNjkyNDA4MTMzMzQ0IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NTM3Mjg5Nl8xODUwMzIzOTExMTAzMjU4NF84NDI2MjQwNDcyOTM2NzgwNTk2X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0zWFphTjNwSUlBc1E3a052Z0VPTTByMyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpRd09ERXpNek0wTkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDTkRVaG50Mjh2d3htMWtYTVA2WnJjTzNWYnZJN2lnNWJDSmtpMjR1LU5aZyZvZT02N0JCNDFGQSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc1MzcyODk2XzE4NTAzMjM5MTExMDMyNTg0Xzg0MjYyNDA0NzI5MzY3ODA1OTZfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0zWFphTjNwSUlBc1E3a052Z0VPTTByMyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpRd09ERXpNek0wTkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDWFVjdkNCV1l4QlBsbDctb1FXNVRPWUstMFlMT2dEOGp5bWQ0eGtYSURFdyZvZT02N0JCNDFGQSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NjYxMTY5MjQwODEzMzM0NCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk0NDc0MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc1MzcyODk2XzE4NTAzMjM5MTExMDMyNTg0Xzg0MjYyNDA0NzI5MzY3ODA1OTZfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTNYWmFOM3BJSUFzUTdrTnZnRU9NMHIzJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeE1UWTVNalF3T0RFek16TTBOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNORFVobnQyOHZ3eG0xa1hNUDZacmNPM1Zidkk3aWc1YkNKa2kyNHUtTlpnJm9lPTY3QkI0MUZBJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY3MDY2MjMwNjkyOTIyMzg5XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NjYxMTY5MjM4Mjk5NjUzNiIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY3OTA0OTNfMTg1MDMyMzkxMDgwMzI1ODRfMTIzOTI0MzYyMzI0NTExNTI2OF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9aUVWVm1lWVNWS3dRN2tOdmdIeXd3cDEmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qTTRNams1TmpVek5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1h3NXYtZUh1STNnY0lrbWNqbV9oTUhTeF9KSzVXb1R1bHh1UHVsRUZZYlEmb2U9NjdCQjRCRkMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3Njc5MDQ5M18xODUwMzIzOTEwODAzMjU4NF8xMjM5MjQzNjIzMjQ1MTE1MjY4X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9aUVWVm1lWVNWS3dRN2tOdmdIeXd3cDEmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qTTRNams1TmpVek5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQTJncUpzOVNVVGJGclJuN1FKS2NOdHlKU3lHTGlGVEQ2cHhmVUo3cGt6RVEmb2U9NjdCQjRCRkMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjY2MTE2OTIzODI5OTY1MzYiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NDQ3NDAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3Njc5MDQ5M18xODUwMzIzOTEwODAzMjU4NF8xMjM5MjQzNjIzMjQ1MTE1MjY4X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1pRVZWbWVZU1ZLd1E3a052Z0h5d3dwMSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpNNE1qazVOalV6TmclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDWHc1di1lSHVJM2djSWttY2ptX2hNSFN4X0pLNVdvVHVseHVQdWxFRlliUSZvZT02N0JCNEJGQyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NzA2NjIzMDY5MjkyMjM4OV8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjY2MTE2OTIyNTcxNTA0MDciLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2ODg2ODgzXzE4NTAzMjM5MTIwMDMyNTg0XzI3MTczNTkyMDg4NzE5MDA5MzZfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVd5QjhXQUZ1WFVjUTdrTnZnRkFuc0hoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeE1UWTVNakkxTnpFMU1EUXdOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUR2QkJLSVpGenEydmVoYUdZY2dpNHlyZHcyZHF4WE5xRThGdHhqLTFGdXlBJm9lPTY3QkIzMTM2Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY4ODY4ODNfMTg1MDMyMzkxMjAwMzI1ODRfMjcxNzM1OTIwODg3MTkwMDkzNl9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVd5QjhXQUZ1WFVjUTdrTnZnRkFuc0hoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeE1UWTVNakkxTnpFMU1EUXdOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURyWWtrWmZNb2E2QWNnVWhpR01CZ21qQk5KTUVmaDBGeVY0bHdhSFdheVJBJm9lPTY3QkIzMTM2Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY2NjExNjkyMjU3MTUwNDA3IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTQ0NzQwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY4ODY4ODNfMTg1MDMyMzkxMjAwMzI1ODRfMjcxNzM1OTIwODg3MTkwMDkzNl9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9V3lCOFdBRnVYVWNRN2tOdmdGQW5zSGgmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qSTFOekUxTURRd053JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRHZCQktJWkZ6cTJ2ZWhhR1ljZ2k0eXJkdzJkcXhYTnFFOEZ0eGotMUZ1eUEmb2U9NjdCQjMxMzYmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjcwNjYyMzA2OTI5MjIzODlfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaGFzX2F1ZGlvIjp0cnVlLCJpZCI6IjM1NjY2MTE2OTIyNTcxNTQ5ODEiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg4NzA5MzhfMTg1MDMyMzkyMDQwMzI1ODRfODE1MTgxMDEzNTMxMTc3MTQ3NV9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9bDMtVUhBeTl2Y0VRN2tOdmdGUF9CdTImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qSTFOekUxTkRrNE1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQVMtTTJtRWo2cEFVYXhYYy1nOWcwbWlhdDFOOWpQZUQ4eDJNaGU5UnBsa2cmb2U9NjdCQjVEQjImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc19kYXNoX2VsaWdpYmxlIjoxLCJpc192aWRlbyI6dHJ1ZSwibWVkaWFfZm9ybWF0IjoidmlkZW8iLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjIsIm51bWJlcl9vZl9xdWFsaXRpZXMiOjIsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NjYxMTY5MjI1NzE1NDk4MSIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk0NDc0MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc4ODcwOTM4XzE4NTAzMjM5MjA0MDMyNTg0XzgxNTE4MTAxMzUzMTE3NzE0NzVfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWwzLVVIQXk5dmNFUTdrTnZnRlBfQnUyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeE1UWTVNakkxTnpFMU5EazRNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFTLU0ybUVqNnBBVWF4WGMtZzlnMG1pYXQxTjlqUGVEOHgyTWhlOVJwbGtnJm9lPTY3QkI1REIyJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fY29kZWMiOiJhdjAxLjAuMDRNLjA4LjAuMTExLjAxLjAxLjAxLjAiLCJ2aWRlb19kdXJhdGlvbiI6NjAuMCwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTktNRjVUSkFtWm9rWW1BTS1pWFBsbnJmZFdrR2Q5YkFjR0NlaHNkOVFvUWdJVWVKaDdrZzNnRFNzbmdVeHp4UEhxbnZtVlV4NFd1MUhONFVIWVktbTB1TjRScUpxNmViMW15NkUubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXhNell3TWpjeU5EY3hPRGsxT1N3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPWEwZjc0ZmY1M2VhNjUyMTUmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODFNRFJDUkRBMU9ERkJSVEV5UkVFeVJUWXdRa1F4UWtaR1FqaERNVEU1TjE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRCVVY5aGVIZFBUM1p1WDNCTVNVVkJRekZZZEdOV2FXcDFhMDVpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnQ2bGhjZXdoSmNDRlFJb0FrTXpMQmRBVGdBQUFBQUFBQmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUJXdUs4dXBaZjRFLW40NDJMeVJGMW91b0FsOFVCaVA5M1JDVFhpMWRpQnd3Jm9lPTY3Qjc1RURBJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6Mjk2NTkwLCJoZWlnaHQiOjEzNTAsImlkIjoiOTE4MzEzODkwNDg3MTc3diIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTktNRjVUSkFtWm9rWW1BTS1pWFBsbnJmZFdrR2Q5YkFjR0NlaHNkOVFvUWdJVWVKaDdrZzNnRFNzbmdVeHp4UEhxbnZtVlV4NFd1MUhONFVIWVktbTB1TjRScUpxNmViMW15NkUubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXhNell3TWpjeU5EY3hPRGsxT1N3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPWEwZjc0ZmY1M2VhNjUyMTUmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODFNRFJDUkRBMU9ERkJSVEV5UkVFeVJUWXdRa1F4UWtaR1FqaERNVEU1TjE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRCVVY5aGVIZFBUM1p1WDNCTVNVVkJRekZZZEdOV2FXcDFhMDVpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnQ2bGhjZXdoSmNDRlFJb0FrTXpMQmRBVGdBQUFBQUFBQmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUJXdUs4dXBaZjRFLW40NDJMeVJGMW91b0FsOFVCaVA5M1JDVFhpMWRpQnd3Jm9lPTY3Qjc1RURBJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoyOTY1OTAsImhlaWdodCI6MTM1MCwiaWQiOiI5MTgzMTM4OTA0ODcxNzd2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFOS01GNVRKQW1ab2tZbUFNLWlYUGxucmZkV2tHZDliQWNHQ2Voc2Q5UW9RZ0lVZUpoN2tnM2dEU3NuZ1V4enhQSHFudm1WVXg0V3UxSE40VUhZWS1tMHVONFJxSnE2ZWIxbXk2RS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZeE16WXdNamN5TkRjeE9EazFPU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9YTBmNzRmZjUzZWE2NTIxNSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4MU1EUkNSREExT0RGQlJURXlSRUV5UlRZd1FrUXhRa1pHUWpoRE1URTVOMTkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEJVVjloZUhkUFQzWnVYM0JNU1VWQlF6RllkR05XYVdwMWEwNWlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdDZsaGNld2hKY0NGUUlvQWtNekxCZEFUZ0FBQUFBQUFCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQld1Szh1cFpmNEUtbjQ0Mkx5UkYxb3VvQWw4VUJpUDkzUkNUWGkxZGlCd3cmb2U9NjdCNzVFREEmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjI5NjU5MCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjkxODMxMzg5MDQ4NzE3N3YiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU5LTUY1VEpBbVpva1ltQU0taVhQbG5yZmRXa0dkOWJBY0dDZWhzZDlRb1FnSVVlSmg3a2czZ0RTc25nVXh6eFBIcW52bVZVeDRXdTFITjRVSFlZLW0wdU40UnFKcTZlYjFteTZFLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPall4TXpZd01qY3lORGN4T0RrMU9Td2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz1hMGY3NGZmNTNlYTY1MjE1Jl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgxTURSQ1JEQTFPREZCUlRFeVJFRXlSVFl3UWtReFFrWkdRamhETVRFNU4xOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkQlVWOWhlSGRQVDNadVgzQk1TVVZCUXpGWWRHTldhV3AxYTA1aWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp0NmxoY2V3aEpjQ0ZRSW9Ba016TEJkQVRnQUFBQUFBQUJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlCV3VLOHVwWmY0RS1uNDQyTHlSRjFvdW9BbDhVQmlQOTNSQ1RYaTFkaUJ3dyZvZT02N0I3NUVEQSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NzA2NjIzMDY5MjkyMjM4OV8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjY2MTE2OTI0NzUyODQ3NTIiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MTYzMDYxXzE4NTAzMjM5MTI5MDMyNTg0XzY4OTgyNDQ3ODE0ODA3OTcxMF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9R25obTRHTkdWV0FRN2tOdmdILW5QdHkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qUTNOVEk0TkRjMU1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ0M2SDlGYTNlN2RkY3lFc1JnWnlXa1ROX2FIWWFoeS1qOUs0TG1oYTBzZEEmb2U9NjdCQjQxNTYmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzE2MzA2MV8xODUwMzIzOTEyOTAzMjU4NF82ODk4MjQ0NzgxNDgwNzk3MTBfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1HbmhtNEdOR1ZXQVE3a052Z0gtblB0eSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpRM05USTRORGMxTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBVHo5WUYwSDVTeWJKZlU4TlVfSndlLXZ3TjJ5M2xuQmJlcGhZdGNhUkNJUSZvZT02N0JCNDE1NiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NjYxMTY5MjQ3NTI4NDc1MiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk0NDc0MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MTYzMDYxXzE4NTAzMjM5MTI5MDMyNTg0XzY4OTgyNDQ3ODE0ODA3OTcxMF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9R25obTRHTkdWV0FRN2tOdmdILW5QdHkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall4TVRZNU1qUTNOVEk0TkRjMU1nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ0M2SDlGYTNlN2RkY3lFc1JnWnlXa1ROX2FIWWFoeS1qOUs0TG1oYTBzZEEmb2U9NjdCQjQxNTYmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjcwNjYyMzA2OTI5MjIzODlfMjMyNjQ1ODMiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY2NjExNjkyMjU3MDkyNTIyIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzE5MjEyMF8xODUwMzIzOTEzODAzMjU4NF8yMDg2NTk2Mjg0OTc3ODQ4ODAyX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1WcUp0ZjJTaGZTSVE3a052Z0dyNUI0XyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpJMU56QTVNalV5TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlESDFxM2gtMVFZX0VFSDJOTXBneERYcjZTSng0dXdvSzA4YkhnNk9xdzlGZyZvZT02N0JCNDQ5RCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MTkyMTIwXzE4NTAzMjM5MTM4MDMyNTg0XzIwODY1OTYyODQ5Nzc4NDg4MDJfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1WcUp0ZjJTaGZTSVE3a052Z0dyNUI0XyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpJMU56QTVNalV5TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDVFM0MXhLT29IYTJUU3J0cWRkcXZqZENjWXR5eHVmN3d6dFVoY3N4UDJzdyZvZT02N0JCNDQ5RCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NjYxMTY5MjI1NzA5MjUyMiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk0NDc0MDAsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MTkyMTIwXzE4NTAzMjM5MTM4MDMyNTg0XzIwODY1OTYyODQ5Nzc4NDg4MDJfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVZxSnRmMlNoZlNJUTdrTnZnR3I1QjRfJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeE1UWTVNakkxTnpBNU1qVXlNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURIMXEzaC0xUVlfRUVIMk5NcGd4RFhyNlNKeDR1d29LMDhiSGc2T3F3OUZnJm9lPTY3QkI0NDlEJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6OCwiY2Fyb3VzZWxfbWVkaWFfaWRzIjpbMzU2NjYxMTY5MjQ5MjA3Mjk5NiwzNTY2NjExNjkyMjQwMjg3NjA1LDM1NjY2MTE2OTI0MDgxMzMzNDQsMzU2NjYxMTY5MjM4Mjk5NjUzNiwzNTY2NjExNjkyMjU3MTUwNDA3LDM1NjY2MTE2OTIyNTcxNTQ5ODEsMzU2NjYxMTY5MjQ3NTI4NDc1MiwzNTY2NjExNjkyMjU3MDkyNTIyXSwiY2Fyb3VzZWxfbWVkaWFfcGVuZGluZ19wb3N0X2NvdW50IjowLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHQXc5Wnl2a1FWIiwiY29tbWVudF9jb3VudCI6MjIsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTQ0NzQwMCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgwNDI4NjUwNDAwNzE4NzIiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU2NzA2NjIzMDY5MjkyMjM4OSIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MDY2NzY5XzE4NTAzMjM5MDkzMDMyNTg0Xzc3OTQ3Nzk3Njg3MzI4Njc3MjNfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTZpeHZxWTJVcU5jUTdrTnZnRnBJYTcxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeE1UWTVNalE1TWpBM01qazVOZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJDT0FIb2E5RDFOVU52NGxOV2g5aGRGa2JDY2NQa0dQMDZuMFJHeE9kc3RnJm9lPTY3QkIzRjRCJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzcwNjY3NjlfMTg1MDMyMzkwOTMwMzI1ODRfNzc5NDc3OTc2ODczMjg2NzcyM19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTZpeHZxWTJVcU5jUTdrTnZnRnBJYTcxJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeE1UWTVNalE1TWpBM01qazVOZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNWUjc5bjFSdFVfdW1OMjc5NDk3UFcyLXRVVVZVQ0NIOW9yRVFsTk9QMmNnJm9lPTY3QkIzRjRCJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtZWRpYV9mb3JtYXQiOiJhbGJ1bSIsIm1lZGlhX25hbWUiOiJhbGJ1bSIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjgsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIwIiwiYXVkaW9fdHlwZSI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6bnVsbH0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3Blbl9jYXJvdXNlbF9zdWJtaXNzaW9uX3N0YXRlIjoiY2xvc2VkIiwib3JpZ2luYWxfaGVpZ2h0Ijo2MTIsIm9yaWdpbmFsX3dpZHRoIjo2MTIsInBrIjoiMzU2NzA2NjIzMDY5MjkyMjM4OSIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfY29udGFpbmVyIiwic2hhcmVfY291bnRfZGlzYWJsZWQiOmZhbHNlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInN1YnNjcmliZV9jdGFfdmlzaWJsZSI6ZmFsc2UsInRha2VuX2F0IjoxNzM5NDQ3NDAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzA2Njc2OV8xODUwMzIzOTA5MzAzMjU4NF83Nzk0Nzc5NzY4NzMyODY3NzIzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz02aXh2cVkyVXFOY1E3a052Z0ZwSWE3MSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXhNVFk1TWpRNU1qQTNNams1TmclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCQ09BSG9hOUQxTlVOdjRsTldoOWhkRmtiQ2NjUGtHUDA2bjBSR3hPZHN0ZyZvZT02N0JCM0Y0QiZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOlsicm9tdWxvbm9icmVnYSJdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiRGllZ28gQWxtZWlkYSB8IElBIHwgQ2hhdEdQVCIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyMzI2NDU4MyIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fbW9kaWZ5X2Nhcm91c2VsIjp0cnVlLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTcwOTYwOCwiY3JlYXRlZF9hdF91dGMiOjE3Mzk3MDk2MDgsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc2h0YWdzIjpbIiNjaGF0Z3B0IiwiI3Byb21wdHMiLCIjcHJvZHVjdGl2ZSIsIiN0aW1lIiwiI3RlY2huaXF1ZSJdLCJpZCI6IjM1NjkyNjUzMzY0MjM0OTA0MTAiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTc5MjIwOTE1OTkwMTk4OTIiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJNb3N0IHBlb3BsZSB1c2UgQ2hhdEdQVCB0aGUgd3Jvbmcgd2F5IC0gdmFndWUgcHJvbXB0cyBsZWFkIHRvIHdlYWsgcmVzdWx0cy5cblxuQmUgc3BlY2lmaWMsIHJlZmluZSB5b3VyIHJlcXVlc3RzLCBhbmQgd2F0Y2ggQUkgd29yayBsaWtlIGFuIGV4cGVydC5cblxuU3RhcnQgdXNpbmcgdGhlc2UgdGVjaG5pcXVlcyB0byBnZXQgY2xlYXIsIGltcGFjdGZ1bCwgYW5kIGhpZ2gtcXVhbGl0eSByZXNwb25zZXMuXG5cbvCfkYkgQ29tbWVudCDigJxZRVPigJ0gYW5kIEnigJlsbCBzZW5kIHlvdSBteSA3MDArIEFJIHRvb2xraXQuXG5cbiNjaGF0Z3B0ICNwcm9tcHRzICNwcm9kdWN0aXZlICN0aW1lICN0ZWNobmlxdWUiLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDY3MTI3MDEwODE1LCJmdWxsX25hbWUiOiJDaGF0R1BUIHwgQXJ0aWZpY2lhbCBJbnRlbGxpZ2VuY2UgfCBQcm9tcHRzIHwgVGVjaG5vbG9neSIsImlkIjoiNjY5NjY1MjU1NjciLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzQ1MzM3MzI2Mjg5NDE2NTgyNyIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NTg3ODQ5MzhfMTU5MzA2MDg5MTU1Mzk5MF80NjA4NjgxNjI0MzE1NDgxNDYwX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXJabS11RTc2bDI0UTdrTnZnSE1rOWtXJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQnlSeWhvQ1gtR1ZzRzdLZUdvUzVjT1pTb1RKdFhOR2pzbGJnVGFiVkFaT1Emb2U9NjdCQjNCQTgmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6InRoZWRhaWx5Y2hhdGdwdCJ9LCJ1c2VyX2lkIjoiNjY5NjY1MjU1NjcifSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjYXJvdXNlbF9tZWRpYSI6W3siY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2OTI2NTMzNjQyMzQ5MDQxMF82Njk2NjUyNTU2NyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjkyNjUzMTY1NDI0OTk0NzgiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMzcxMzM2XzE3ODgxNjc1MDkyMjM3NTY4XzkyMTE1NzU1MjE3OTMxNDAwOF9uLndlYnA/c3RwPWRzdC13ZWJwX3AxMDgweDEwODAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9amw2dmVreV9wUzRRN2tOdmdFUERtOWYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qVTBNalE1T1RRM09BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkVRUXpPai1rRmJrY0JxeUk4cTg0TmJXNi01YTBFOFR5b1NFUGNjVWJiN2cmb2U9NjdCQjY2MTUmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDM3MTMzNl8xNzg4MTY3NTA5MjIzNzU2OF85MjExNTc1NTIxNzkzMTQwMDhfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMzYweDM2MCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1qbDZ2ZWt5X3BTNFE3a052Z0VQRG05ZiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9USTJOVE14TmpVME1qUTVPVFEzT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDTVo5RVlVNzZvQmkyUXJBdHRNaXE4ZWpvUU5uZThBOFkxWWZVaGpGcTVGQSZvZT02N0JCNjYxNSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTgwMCwib3JpZ2luYWxfd2lkdGgiOjE0NDAsInBrIjoiMzU2OTI2NTMxNjU0MjQ5OTQ3OCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk3MDk2MDQsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMzcxMzM2XzE3ODgxNjc1MDkyMjM3NTY4XzkyMTE1NzU1MjE3OTMxNDAwOF9uLndlYnA/c3RwPWRzdC13ZWJwX3AxMDgweDEwODAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9amw2dmVreV9wUzRRN2tOdmdFUERtOWYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qVTBNalE1T1RRM09BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkVRUXpPai1rRmJrY0JxeUk4cTg0TmJXNi01YTBFOFR5b1NFUGNjVWJiN2cmb2U9NjdCQjY2MTUmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjkyNjUzMzY0MjM0OTA0MTBfNjY5NjY1MjU1NjciLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY5MjY1MzE2NTMzOTk1NzcxIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDM4NjU2NV8xNzg4MTY3NTEwMTIzNzU2OF8zNDA3MTU3Njk0MDM0OTAwNDBfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMTA4MHgxMDgwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUhzMEN4cE13U29jUTdrTnZnRXR1WUJIJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOalV6TXprNU5UYzNNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJjemFITVFCVVI3TkRkNTAyblN6Um9nUFA1b0lIcWJGc1Z2M1Z6R29sYm13Jm9lPTY3QkI0NTcyJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAzODY1NjVfMTc4ODE2NzUxMDEyMzc1NjhfMzQwNzE1NzY5NDAzNDkwMDQwX24ud2VicD9zdHA9ZHN0LXdlYnBfcDM2MHgzNjAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SHMwQ3hwTXdTb2NRN2tOdmdFdHVZQkgmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qVXpNems1TlRjM01RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkNqRmlvcUkwelRsMmtiUlFmQUlqMzd0X0ZMTERuZ091NmhyLXBTa09PaWcmb2U9NjdCQjQ1NzImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE4MDAsIm9yaWdpbmFsX3dpZHRoIjoxNDQwLCJwayI6IjM1NjkyNjUzMTY1MzM5OTU3NzEiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NzA5NjA0LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDM4NjU2NV8xNzg4MTY3NTEwMTIzNzU2OF8zNDA3MTU3Njk0MDM0OTAwNDBfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMTA4MHgxMDgwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUhzMEN4cE13U29jUTdrTnZnRXR1WUJIJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOalV6TXprNU5UYzNNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJjemFITVFCVVI3TkRkNTAyblN6Um9nUFA1b0lIcWJGc1Z2M1Z6R29sYm13Jm9lPTY3QkI0NTcyJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY5MjY1MzM2NDIzNDkwNDEwXzY2OTY2NTI1NTY3IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2OTI2NTMxNjU0MjUxMDk3MiIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAxOTkzNjRfMTc4ODE2NzUxMTkyMzc1NjhfMTQ2NTAwNjk2MTc0NTY5MTk1Nl9uLndlYnA/c3RwPWRzdC13ZWJwX3AxMDgweDEwODAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TGZaSFZyYkkxTDhRN2tOdmdGS0FNb2cmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qVTBNalV4TURrM01nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQVhJbU9ENElsQkF2dmwzOVYxMmRuSXJxNTN5S1QzNmZlMmVhZ1JGYkcyX1Emb2U9NjdCQjNGMTQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDE5OTM2NF8xNzg4MTY3NTExOTIzNzU2OF8xNDY1MDA2OTYxNzQ1NjkxOTU2X24ud2VicD9zdHA9ZHN0LXdlYnBfcDM2MHgzNjAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9TGZaSFZyYkkxTDhRN2tOdmdGS0FNb2cmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qVTBNalV4TURrM01nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkZBRmV6REVCaVNPVlFiZE1faHptcGVCMHlJc1N6eXR0ZlYxTHBhczVXUGcmb2U9NjdCQjNGMTQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE4MDAsIm9yaWdpbmFsX3dpZHRoIjoxNDQwLCJwayI6IjM1NjkyNjUzMTY1NDI1MTA5NzIiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NzA5NjA0LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDE5OTM2NF8xNzg4MTY3NTExOTIzNzU2OF8xNDY1MDA2OTYxNzQ1NjkxOTU2X24ud2VicD9zdHA9ZHN0LXdlYnBfcDEwODB4MTA4MCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1MZlpIVnJiSTFMOFE3a052Z0ZLQU1vZyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9USTJOVE14TmpVME1qVXhNRGszTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBWEltT0Q0SWxCQXZ2bDM5VjEyZG5JcnE1M3lLVDM2ZmUyZWFnUkZiRzJfUSZvZT02N0JCM0YxNCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2OTI2NTMzNjQyMzQ5MDQxMF82Njk2NjUyNTU2NyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjkyNjUzMTY1MzQwNTkzNTkiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTk2ODQzXzE3ODgxNjc1MTE2MjM3NTY4XzkwNjgyNTc2NDM1MjQzODc5NjZfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMTA4MHgxMDgwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPThWaU43SkVvQllFUTdrTnZnSE5kcDM2Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOalV6TkRBMU9UTTFPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNmd1ZDTktIbTB6OTFNZGFibFMzOFQ1X1RJOEF1TE9xYkNaaXQ2d1VMVnh3Jm9lPTY3QkI0Njk3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk5OTY4NDNfMTc4ODE2NzUxMTYyMzc1NjhfOTA2ODI1NzY0MzUyNDM4Nzk2Nl9uLndlYnA/c3RwPWRzdC13ZWJwX3AzNjB4MzYwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPThWaU43SkVvQllFUTdrTnZnSE5kcDM2Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOalV6TkRBMU9UTTFPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJMTXNjRGNjWktwTDBBczVNUE5nb01Kbm85NVNPZUpHSERiWWltRzFlM3B3Jm9lPTY3QkI0Njk3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxODAwLCJvcmlnaW5hbF93aWR0aCI6MTQ0MCwicGsiOiIzNTY5MjY1MzE2NTM0MDU5MzU5IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTcwOTYwNCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk5OTY4NDNfMTc4ODE2NzUxMTYyMzc1NjhfOTA2ODI1NzY0MzUyNDM4Nzk2Nl9uLndlYnA/c3RwPWRzdC13ZWJwX3AxMDgweDEwODAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OFZpTjdKRW9CWUVRN2tOdmdITmRwMzYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qVXpOREExT1RNMU9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ2Z3VkNOS0htMHo5MU1kYWJsUzM4VDVfVEk4QXVMT3FiQ1ppdDZ3VUxWeHcmb2U9NjdCQjQ2OTcmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjkyNjUzMzY0MjM0OTA0MTBfNjY5NjY1MjU1NjciLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY5MjY1MzE2NTAwNTQzODM4IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDMyNTc4NF8xNzg4MTY3NTEyODIzNzU2OF84MDM2MDQwNTI4ODQyODcyOTk2X24ud2VicD9zdHA9ZHN0LXdlYnBfcDEwODB4MTA4MCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1tQktQYm10X2JHQVE3a052Z0VkQ0tsUiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9USTJOVE14TmpVd01EVTBNemd6T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDeXZhWWplbkRzdmZGV19CbHY5VUVnWU5YTUxsaUFLU291c0RjQk8xOTYyUSZvZT02N0JCM0NENiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMzI1Nzg0XzE3ODgxNjc1MTI4MjM3NTY4XzgwMzYwNDA1Mjg4NDI4NzI5OTZfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMzYweDM2MCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1tQktQYm10X2JHQVE3a052Z0VkQ0tsUiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9USTJOVE14TmpVd01EVTBNemd6T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlETHg2T2FIUHlISTFmVmxnRDFTMmpMV3BvX2RZTldtbmlXeU9aeUxQU29MUSZvZT02N0JCM0NENiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTgwMCwib3JpZ2luYWxfd2lkdGgiOjE0NDAsInBrIjoiMzU2OTI2NTMxNjUwMDU0MzgzOCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk3MDk2MDQsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMzI1Nzg0XzE3ODgxNjc1MTI4MjM3NTY4XzgwMzYwNDA1Mjg4NDI4NzI5OTZfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMTA4MHgxMDgwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPW1CS1BibXRfYkdBUTdrTnZnRWRDS2xSJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOalV3TURVME16Z3pPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUN5dmFZamVuRHN2ZkZXX0JsdjlVRWdZTlhNTGxpQUtTb3VzRGNCTzE5NjJRJm9lPTY3QkIzQ0Q2Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY5MjY1MzM2NDIzNDkwNDEwXzY2OTY2NTI1NTY3IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2OTI2NTMxNjc5NDAxMjAyMCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzk1NjQzNzJfMTc4ODE2NzUxNDMyMzc1NjhfNDYxMTk4NjUxNjQzNjY2NTMwNl9uLndlYnA/c3RwPWRzdC13ZWJwX3AxMDgweDEwODAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SWNHcWhsUmVHd0VRN2tOdmdGbzFUWjQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qYzVOREF4TWpBeU1BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRGV6NTRVSzRtQW5BYURuTXZzbWlXWmZZUzFlQ2dPZjY5QzQ2a3lrOGR0M3cmb2U9NjdCQjRCMUYmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTU2NDM3Ml8xNzg4MTY3NTE0MzIzNzU2OF80NjExOTg2NTE2NDM2NjY1MzA2X24ud2VicD9zdHA9ZHN0LXdlYnBfcDM2MHgzNjAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SWNHcWhsUmVHd0VRN2tOdmdGbzFUWjQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qYzVOREF4TWpBeU1BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQktOenFjcWxubmxPbWk0a1RxRGhDaDVGeUk0OXZuUW1jNlFEUkJvSFhsT1Emb2U9NjdCQjRCMUYmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE4MDAsIm9yaWdpbmFsX3dpZHRoIjoxNDQwLCJwayI6IjM1NjkyNjUzMTY3OTQwMTIwMjAiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NzA5NjA0LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTU2NDM3Ml8xNzg4MTY3NTE0MzIzNzU2OF80NjExOTg2NTE2NDM2NjY1MzA2X24ud2VicD9zdHA9ZHN0LXdlYnBfcDEwODB4MTA4MCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1JY0dxaGxSZUd3RVE3a052Z0ZvMVRaNCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9USTJOVE14TmpjNU5EQXhNakF5TUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEZXo1NFVLNG1BbkFhRG5NdnNtaVdaZllTMWVDZ09mNjlDNDZreWs4ZHQzdyZvZT02N0JCNEIxRiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2OTI2NTMzNjQyMzQ5MDQxMF82Njk2NjUyNTU2NyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjkyNjUzMTY4NjEwNjE4NTMiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMTg3OTcxXzE3ODgxNjc1MTUyMjM3NTY4XzU1ODYzMTQyMTI5MzYxMzQ3Mzlfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMTA4MHgxMDgwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPThMZnIwMVJJSTBzUTdrTnZnR2FYdzAwJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOamcyTVRBMk1UZzFNdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNxTnltS2FiZkt5MW5zSC10dnU4a3lKdjVGWkFqbWpBMlUtWmZ4X2w5UHZ3Jm9lPTY3QkI0M0U3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAxODc5NzFfMTc4ODE2NzUxNTIyMzc1NjhfNTU4NjMxNDIxMjkzNjEzNDczOV9uLndlYnA/c3RwPWRzdC13ZWJwX3AzNjB4MzYwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPThMZnIwMVJJSTBzUTdrTnZnR2FYdzAwJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOamcyTVRBMk1UZzFNdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNLc213Umx0SGhyWnQ4bGkxeldTb2VmVE9XTTBaaWQ1X09XVUZONHE4YzVBJm9lPTY3QkI0M0U3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxODAwLCJvcmlnaW5hbF93aWR0aCI6MTQ0MCwicGsiOiIzNTY5MjY1MzE2ODYxMDYxODUzIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTcwOTYwNCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAxODc5NzFfMTc4ODE2NzUxNTIyMzc1NjhfNTU4NjMxNDIxMjkzNjEzNDczOV9uLndlYnA/c3RwPWRzdC13ZWJwX3AxMDgweDEwODAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OExmcjAxUklJMHNRN2tOdmdHYVh3MDAmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qZzJNVEEyTVRnMU13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ3FOeW1LYWJmS3kxbnNILXR2dThreUp2NUZaQWptakEyVS1aZnhfbDlQdncmb2U9NjdCQjQzRTcmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjkyNjUzMzY0MjM0OTA0MTBfNjY5NjY1MjU1NjciLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY5MjY1MzE2NTQyMzIyNzM0IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTkwNDcxOF8xNzg4MTY3NTE2MTIzNzU2OF81OTU0MzM1OTIzNTkxNDU2OTA1X24ud2VicD9zdHA9ZHN0LXdlYnBfcDEwODB4MTA4MCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz16dFBjZDNZdFZSUVE3a052Z0Zrb1ZTMCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9USTJOVE14TmpVME1qTXlNamN6TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBV2hkZGJxZWdKUWJDVk1QRkdsMEhNdUFodWJVQlNvV0RhRjJRQlZ3VWJXZyZvZT02N0JCNDQxNyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTA0NzE4XzE3ODgxNjc1MTYxMjM3NTY4XzU5NTQzMzU5MjM1OTE0NTY5MDVfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMzYweDM2MCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz16dFBjZDNZdFZSUVE3a052Z0Zrb1ZTMCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9USTJOVE14TmpVME1qTXlNamN6TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDQnAxaTBZeTFtZnVqWXZWNUtMUW1OYWRzMXZhRkZPaUJ2NlhBTUhDVXFxZyZvZT02N0JCNDQxNyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTgwMCwib3JpZ2luYWxfd2lkdGgiOjE0NDAsInBrIjoiMzU2OTI2NTMxNjU0MjMyMjczNCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk3MDk2MDQsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5OTA0NzE4XzE3ODgxNjc1MTYxMjM3NTY4XzU5NTQzMzU5MjM1OTE0NTY5MDVfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMTA4MHgxMDgwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXp0UGNkM1l0VlJRUTdrTnZnRmtvVlMwJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOalUwTWpNeU1qY3pOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFXaGRkYnFlZ0pRYkNWTVBGR2wwSE11QWh1YlVCU29XRGFGMlFCVndVYldnJm9lPTY3QkI0NDE3Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6OCwiY2Fyb3VzZWxfbWVkaWFfaWRzIjpbMzU2OTI2NTMxNjU0MjQ5OTQ3OCwzNTY5MjY1MzE2NTMzOTk1NzcxLDM1NjkyNjUzMTY1NDI1MTA5NzIsMzU2OTI2NTMxNjUzNDA1OTM1OSwzNTY5MjY1MzE2NTAwNTQzODM4LDM1NjkyNjUzMTY3OTQwMTIwMjAsMzU2OTI2NTMxNjg2MTA2MTg1MywzNTY5MjY1MzE2NTQyMzIyNzM0XSwiY2Fyb3VzZWxfbWVkaWFfcGVuZGluZ19wb3N0X2NvdW50IjowLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHSWstbW1veU5xIiwiY29tbWVudF9jb3VudCI6OTIxLCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjQyNzE4NTY3OTIwMDAzLCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxNzkyMjA5MTU5NjAxOTg5MiIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTY5MjY1MzM2NDIzNDkwNDEwIiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODAzNzEzMzZfMTc4ODE2NzUwOTIyMzc1NjhfOTIxMTU3NTUyMTc5MzE0MDA4X24ud2VicD9zdHA9ZHN0LXdlYnBfcDEwODB4MTA4MCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1qbDZ2ZWt5X3BTNFE3a052Z0VQRG05ZiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9USTJOVE14TmpVME1qUTVPVFEzT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCRVFRek9qLWtGYmtjQnF5SThxODROYlc2LTVhMEU4VHlvU0VQY2NVYmI3ZyZvZT02N0JCNjYxNSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMzcxMzM2XzE3ODgxNjc1MDkyMjM3NTY4XzkyMTE1NzU1MjE3OTMxNDAwOF9uLndlYnA/c3RwPWRzdC13ZWJwX3AzNjB4MzYwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWpsNnZla3lfcFM0UTdrTnZnRVBEbTlmJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT1RJMk5UTXhOalUwTWpRNU9UUTNPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNNWjlFWVU3Nm9CaTJRckF0dE1pcThlam9RTm5lOEE4WTFZZlVoakZxNUZBJm9lPTY3QkI2NjE1Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjpmYWxzZSwibGlrZV9jb3VudCI6MzAzMSwibWVkaWFfZm9ybWF0IjoiYWxidW0iLCJtZWRpYV9uYW1lIjoiYWxidW0iLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjo4LCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMTgyNDk2NTI1MzcxMjYyMDEiLCJhdWRpb190eXBlIjoibGljZW5zZWRfbXVzaWMiLCJtdXNpY19pbmZvIjp7Im11c2ljX2Fzc2V0X2luZm8iOnsiYWxsb3dzX3NhdmluZyI6ZmFsc2UsImFydGlzdF9pZCI6IjM5NjAwNTc4NTIwNjY3MCIsImF1ZGlvX2lkIjoiMTgwNzg0OTcxMjkxOTYyMyIsImNvdmVyX2FydHdvcmtfdGh1bWJuYWlsX3VyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC92L3QzOS4zMDgwOC02LzQyNjQ0ODkxMF8xMTE3MzAzMTY5NzIzMDY0Xzg5NzI0MDE5NjQ5MDYyNjk2NTlfbi5qcGc/c3RwPWRzdC1qcGdfczE2OHgxMjhfdHQ2Jl9uY19jYXQ9MSZjY2I9MS03Jl9uY19zaWQ9MmYyNTU3Jl9uY19vaGM9OXFXaF85cmZreFVRN2tOdmdFSkgtM3cmX25jX29jPUFkaVVWcV9jS3NfdHM0cDBJbkQ1NE5GRGFseWhTSDU0c0FYdlp3NVhvRTV4UDY1YkJTZFl1OHRuV3VQU01jZmRNLWcmX25jX2FkPXotbSZfbmNfY2lkPTEzNjUmX25jX3p0PTIzJl9uY19odD1zY29udGVudC1kdXMxLTEueHgmX25jX2dpZD1BZkhidXBvcFV4Q2dwa2JWcHlUSjZWbiZvaD0wMF9BWUFkVEhFMlQxS2NtX3BzNTY1RFV4aFdNVDUwVFRhcHFKdThhSnRTYmJTdzZRJm9lPTY3QkI0ODYyIiwiY292ZXJfYXJ0d29ya191cmkiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvdi90MzkuMzA4MDgtNi80MjY0NDg5MTBfMTExNzMwMzE2OTcyMzA2NF84OTcyNDAxOTY0OTA2MjY5NjU5X24uanBnP3N0cD1kc3QtanBnX3MxNjh4MTI4X3R0NiZfbmNfY2F0PTEmY2NiPTEtNyZfbmNfc2lkPTJmMjU1NyZfbmNfb2hjPTlxV2hfOXJma3hVUTdrTnZnRUpILTN3Jl9uY19vYz1BZGlVVnFfY0tzX3RzNHAwSW5ENTRORkRhbHloU0g1NHNBWHZadzVYb0U1eFA2NWJCU2RZdTh0bld1UFNNY2ZkTS1nJl9uY19hZD16LW0mX25jX2NpZD0xMzY1Jl9uY196dD0yMyZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4Jl9uY19naWQ9QWZIYnVwb3BVeENncGtiVnB5VEo2Vm4mb2g9MDBfQVlBZFRIRTJUMUtjbV9wczU2NURVeGhXTVQ1MFRUYXBxSnU4YUp0U2JiU3c2USZvZT02N0JCNDg2MiIsImRhcmtfbWVzc2FnZSI6bnVsbCwiZGlzcGxheV9hcnRpc3QiOiJWw5hKLCBOYXJ2ZW50IiwiZHVyYXRpb25faW5fbXMiOjIwOTQxNiwiZmFzdF9zdGFydF9wcm9ncmVzc2l2ZV9kb3dubG9hZF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvbzEvdi90Mi9mMi9tNjkvQVFOOWRLRjVmU0ZsajBGUm1xWjQ3T1plQUU3WFZjdm5wV21rZU5mc1lwN3FFbkptVHotNXF2WDRLUDJ3Z3c5eUFWNVNEQVhlbEpuUVRqWmU2cndnM2h6Vi5tcDQ/c3RyZXh0PTEmX25jX2NhdD0xJl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9MmtOQUtqUTRmNndRN2tOdmdISzhZTUQmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZYMkZoWTNCZk5EaGZabkpoWjE4eVgyRjFaR2x2SWl3aWVIQjJYMkZ6YzJWMFgybGtJam94TURRNU5qSXhNRGN6T0RRM01EYzJMQ0oxY214blpXNWZjMjkxY21ObElqb2lkM2QzSW4wJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZQ19ZT2t4bGNiRmRjYTBYblpRRzlROUN1bDBJeVZrWEZxUmc3cVBickRrQmcmb2U9NjdCQjQ0RjgiLCJoYXNfbHlyaWNzIjpmYWxzZSwiaGlnaGxpZ2h0X3N0YXJ0X3RpbWVzX2luX21zIjpbMTUyMDAwLDMyNTAwLDE1MDBdLCJpZCI6IjM2NjU5NzcwODcwMzM3MjkiLCJpZ191c2VybmFtZSI6Im5hcnZlbnRvZiIsImlzX2VsaWdpYmxlX2Zvcl9hdWRpb19lZmZlY3RzIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX3ZpbnlsX3N0aWNrZXIiOnRydWUsImlzX2V4cGxpY2l0IjpmYWxzZSwibGljZW5zZWRfbXVzaWNfc3VidHlwZSI6IkRFRkFVTFQiLCJseXJpY3MiOm51bGwsInByb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUU45ZEtGNWZTRmxqMEZSbXFaNDdPWmVBRTdYVmN2bnBXbWtlTmZzWXA3cUVuSm1Uei01cXZYNEtQMndndzl5QVY1U0RBWGVsSm5RVGpaZTZyd2czaHpWLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEmX25jX3NpZD04YmY4ZmUmX25jX2h0PXNjb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQmX25jX29oYz0ya05BS2pRNGY2d1E3a052Z0hLOFlNRCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbmh3ZGw5d2NtOW5jbVZ6YzJsMlpTNUJWVVJKVDE5UFRreFpMaTVETXk0d0xuQnliMmR5WlhOemFYWmxYMkYxWkdsdlgyRmhZM0JmTkRoZlpuSmhaMTh5WDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqb3hNRFE1TmpJeE1EY3pPRFEzTURjMkxDSjFjbXhuWlc1ZmMyOTFjbU5sSWpvaWQzZDNJbjAlM0QmY2NiPTktNCZfbmNfenQ9Mjgmb2g9MDBfQVlDX1lPa3hsY2JGZGNhMFhuWlFHOVE5Q3VsMEl5VmtYRnFSZzdxUGJyRGtCZyZvZT02N0JCNDRGOCIsInJlYWN0aXZlX2F1ZGlvX2Rvd25sb2FkX3VybCI6bnVsbCwic2FuaXRpemVkX3RpdGxlIjpudWxsLCJzdWJ0aXRsZSI6IiIsInRpdGxlIjoiTWVtb3J5IFJlYm9vdCIsIndlYl8zMHNfcHJldmlld19kb3dubG9hZF91cmwiOm51bGx9LCJtdXNpY19jb25zdW1wdGlvbl9pbmZvIjp7ImFsbG93X21lZGlhX2NyZWF0aW9uX3dpdGhfbXVzaWMiOnRydWUsImF1ZGlvX2Fzc2V0X3N0YXJ0X3RpbWVfaW5fbXMiOjMyMDAwLCJhdWRpb19maWx0ZXJfaW5mb3MiOltdLCJhdWRpb19tdXRpbmdfaW5mbyI6eyJhbGxvd19hdWRpb19lZGl0aW5nIjpmYWxzZSwibXV0ZV9hdWRpbyI6ZmFsc2UsIm11dGVfcmVhc29uX3N0ciI6IiIsInNob3dfbXV0ZWRfYXVkaW9fdG9hc3QiOmZhbHNlfSwiY29udGFpbnNfbHlyaWNzIjpudWxsLCJkZXJpdmVkX2NvbnRlbnRfaWQiOm51bGwsImRpc3BsYXlfbGFiZWxzIjpudWxsLCJmb3JtYXR0ZWRfY2xpcHNfbWVkaWFfY291bnQiOm51bGwsImlnX2FydGlzdCI6eyJmdWxsX25hbWUiOiJOYXJ2ZW50IiwiaWQiOiI0ODE0NzY4OTMwMCIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzUwODU1ODkzNjIyOTg3ODI3NCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjgzNDc0OTVfOTk3NDgzOTM1NDczNDk5XzM0Nzk3OTYwNTUyOTMyMzU1MTBfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz15RHcxdS1CZ2FxZ1E3a052Z0YzS1dGbiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUJ2M0VjakZMcTBCYkZ0S1pyQ0plRFc0YjRxU3h3TG8wZmh6a3ViSDQyaHZBJm9lPTY3QkI1NjlEJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJuYXJ2ZW50b2YifSwiaXNfYm9va21hcmtlZCI6ZmFsc2UsImlzX3RyZW5kaW5nX2luX2NsaXBzIjpmYWxzZSwib3ZlcmxhcF9kdXJhdGlvbl9pbl9tcyI6MzAwMDAsInBsYWNlaG9sZGVyX3Byb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMTI0NDItMTUvNDM5ODU2MjlfMzExMTA1OTE2MTQ1MzUxXzU4MDY0NzU5ODExNDA1Nzc2X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz15TDA5TlhjRmlYNFE3a052Z0hqVVBKVSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZvaD0wMF9BWUNsYy16WFJKM0cyMURha0lTSzllZVdWTlhBZF9ZZzZVanZHN0lzQzZmT1pBJm9lPTY3QkIzOTNEJl9uY19zaWQ9MjAxMWFkIiwicHJldmlvdXNfdHJlbmRfcmFuayI6bnVsbCwic2hvdWxkX2FsbG93X211c2ljX2VkaXRpbmciOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpbyI6ZmFsc2UsInNob3VsZF9tdXRlX2F1ZGlvX3JlYXNvbiI6IiIsInNob3VsZF9tdXRlX2F1ZGlvX3JlYXNvbl90eXBlIjpudWxsLCJ0cmVuZF9yYW5rIjpudWxsfX0sIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOltdfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcGVuX2Nhcm91c2VsX3N1Ym1pc3Npb25fc3RhdGUiOiJjbG9zZWQiLCJvcmlnaW5hbF9oZWlnaHQiOjYxMiwib3JpZ2luYWxfd2lkdGgiOjYxMiwicGsiOiIzNTY5MjY1MzM2NDIzNDkwNDEwIiwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9jb250YWluZXIiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk3MDk2MDYsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMzcxMzM2XzE3ODgxNjc1MDkyMjM3NTY4XzkyMTE1NzU1MjE3OTMxNDAwOF9uLndlYnA/c3RwPWRzdC13ZWJwX3AxMDgweDEwODAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9amw2dmVreV9wUzRRN2tOdmdFUERtOWYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJPVEkyTlRNeE5qVTBNalE1T1RRM09BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkVRUXpPai1rRmJrY0JxeUk4cTg0TmJXNi01YTBFOFR5b1NFUGNjVWJiN2cmb2U9NjdCQjY2MTUmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MywiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDY3MTI3MDEwODE1LCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkNoYXRHUFQgfCBBcnRpZmljaWFsIEludGVsbGlnZW5jZSB8IFByb21wdHMgfCBUZWNobm9sb2d5IiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjY2OTY2NTI1NTY3IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzQ1MzM3MzI2Mjg5NDE2NTgyNyIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NTg3ODQ5MzhfMTU5MzA2MDg5MTU1Mzk5MF80NjA4NjgxNjI0MzE1NDgxNDYwX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXJabS11RTc2bDI0UTdrTnZnSE1rOWtXJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQnlSeWhvQ1gtR1ZzRzdLZUdvUzVjT1pTb1RKdFhOR2pzbGJnVGFiVkFaT1Emb2U9NjdCQjNCQTgmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJ0aGVkYWlseWNoYXRncHQifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE3Mzk2MzUyMTEsImNyZWF0ZWRfYXRfdXRjIjoxNzM5NjM1MjExLCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNodGFncyI6WyIjbWlsbGlvbiIsIiNDaGF0R1BUIiwiI2J1c2luZXNzIl0sImlkIjoiMzU2ODY0MTIwMTYwMDc5MzIyOSIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbXSwicGsiOiIxNzg3NTI1MjUxNTE4MTg4OSIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IllvdSdyZSBzaXR0aW5nIG9uICNtaWxsaW9uLWRvbGxhciBtb3ZlcyBhbmQgZ2FtZS1jaGFuZ2luZyBpZGVhcy4gQnV0IHRoZXJlJ3MgdG9vIG11Y2ggbm9pc2UgaW4geW91ciBoZWFkIHRvIGhlYXIgdGhlIGFuc3dlci4gI0NoYXRHUFQgY2FuIGhlbHAgY3V0IHRocm91Z2ggdGhlIG1lbnRhbCBjbHV0dGVyIGFuZCBzaG93IHlvdSB0aGUgcGF0aCBmb3J3YXJkLlxuXG5SZWFkIGhvdyB0byBnZXQgY3J5c3RhbCBjbGVhciBvbiB5b3VyIG5leHQgI2J1c2luZXNzIG1vdmUgYXQgdGhlIGxpbmsgaW4gb3VyIGJpby4iLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAxMjIxMzkzODcxLCJmdWxsX25hbWUiOiJGb3JiZXMiLCJpZCI6IjI0Nzc4NDcxMyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjMyMDk0MjIxNzM3MTQzMDc3MjAiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzg2ODQ1NTA4XzE0MjI0MzQ1OTE2MzQ2MjBfMzAwMzU0NTM3MDAxMTQ3NjUxMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1SenljSVZSQUpHY1E3a052Z0hMWWNSVyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNyeVFIRXJSWEFSRlZ0Yms2d2REZG1LNVkxemFqMUpDNFhyX0Fid2dTOU13Jm9lPTY3QkI0RjU2Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJmb3JiZXMifSwidXNlcl9pZCI6IjI0Nzc4NDcxMyJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdHWEVQd1BRcU4iLCJjb21tZW50X2NvdW50Ijo0LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY29tbWVyY2VfaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6IiIsImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5NjM1MjA5LCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxNzg3NTI1MjQ4NTE4MTg4OSIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTY4NjQxMjAxNjAwNzkzMjI5IiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzczNjYzNTRfNjMxMjEyMjA5Mzk1Mzk0XzYxNTA1OTkxODUyMzA3NjUyNjBfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWXlPRGcxTG1SbFptRjFiSFJmYVcxaFoyVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTBEeV9SaHlNQlRzUTdrTnZnRzVhR3hPJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RZME1USXdNVFl3TURjNU16SXlPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUF4YnRPY1drNUxVd1VDVHBHY3N0d3dHMU1zazVCRjV3dXljY2IzUmFIMVRnJm9lPTY3QkI1MTU4Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzczNjYzNTRfNjMxMjEyMjA5Mzk1Mzk0XzYxNTA1OTkxODUyMzA3NjUyNjBfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVl5T0RnMUxtUmxabUYxYkhSZmFXMWhaMlVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0wRHlfUmh5TUJUc1E3a052Z0c1YUd4TyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EWTBNVEl3TVRZd01EYzVNekl5T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBTThka1dZbUFneVVmc01hQ0xiS0o2QlhSU3ZpSHdZbEVSdGJxV29GaHduQSZvZT02N0JCNTE1OCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6ZmFsc2UsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOmZhbHNlLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfc29jaWFsX3VmaV9kaXNhYmxlZCI6ZmFsc2UsImlzX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fdmlld2VyX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo3NzEsIm1hc2h1cF9pbmZvIjp7ImNhbl90b2dnbGVfbWFzaHVwc19hbGxvd2VkIjpmYWxzZSwiZm9ybWF0dGVkX21hc2h1cHNfY291bnQiOm51bGwsImhhc19iZWVuX21hc2hlZF91cCI6ZmFsc2UsImhhc19ub25taW1pY2FibGVfYWRkaXRpb25hbF9hdWRpbyI6ZmFsc2UsImlzX2NyZWF0b3JfcmVxdWVzdGluZ19tYXNodXAiOmZhbHNlLCJpc19saWdodF93ZWlnaHRfY2hlY2siOnRydWUsImlzX2xpZ2h0X3dlaWdodF9yZXVzZV9hbGxvd2VkX2NoZWNrIjpmYWxzZSwiaXNfcGl2b3RfcGFnZV9hdmFpbGFibGUiOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjpmYWxzZSwibWFzaHVwX3R5cGUiOm51bGwsIm1hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsIm5vbl9wcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOjAsIm9yaWdpbmFsX21lZGlhIjpudWxsLCJwcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOm51bGx9LCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJwb3N0IiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6MSwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjAiLCJhdWRpb190eXBlIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpudWxsfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1Njg2NDEyMDE2MDA3OTMyMjkiLCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImZlZWQiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk2MzUyMDksInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MzY2MzU0XzYzMTIxMjIwOTM5NTM5NF82MTUwNTk5MTg1MjMwNzY1MjYwX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVl5T0RnMUxtUmxabUYxYkhSZmFXMWhaMlVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0wRHlfUmh5TUJUc1E3a052Z0c1YUd4TyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EWTBNVEl3TVRZd01EYzVNekl5T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBeGJ0T2NXazVMVXdVQ1RwR2NzdHd3RzFNc2s1QkY1d3V5Y2NiM1JhSDFUZyZvZT02N0JCNTE1OCZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOltdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjoyLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDEyMjEzOTM4NzEsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiRm9yYmVzIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjI0Nzc4NDcxMyIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzIwOTQyMjE3MzcxNDMwNzcyMCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8zODY4NDU1MDhfMTQyMjQzNDU5MTYzNDYyMF8zMDAzNTQ1MzcwMDExNDc2NTEwX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVJ6eWNJVlJBSkdjUTdrTnZnSExZY1JXJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ3J5UUhFclJYQVJGVnRiazZ3ZERkbUs1WTF6YWoxSkM0WHJfQWJ3Z1M5TXcmb2U9NjdCQjRGNTYmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJmb3JiZXMifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX21vZGlmeV9jYXJvdXNlbCI6dHJ1ZSwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE3Mzk0NTg4MDMsImNyZWF0ZWRfYXRfdXRjIjoxNzM5NDU4ODAzLCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNfdHJhbnNsYXRpb24iOnRydWUsImhhc2h0YWdzIjpbIiNpYSIsIiNpbnRlbGlnZW5jaWFhcnRpZmljaWFsIiwiI3RlY25vbG9naWEiLCIjYWkiLCIjY2hhdGdwdCIsIiNhaXRvb2xzIiwiI29wZW5haSIsIiNhaXRpcHMiLCIjbWFjaGluZWxlYXJuaW5nIl0sImlkIjoiMzU2NzE2MTUyNTg5MjA2NjA5OSIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbIkBkaWVnb2FsbWVpZGEuaWEiXSwicGsiOiIxODAxODczODA1MDY2NjcwMSIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IkEgTWV0YSBkZXNlbnZvbHZldSBtb2RlbG9zIGRlIElBIGNhcGF6ZXMgZGUgZGVjb2RpZmljYXIgc2luYWlzIGNlcmVicmFpcyBlIHJlY29uc3RydWlyIGZyYXNlcyBkaWdpdGFkYXMsIHRyYXplbmRvIGF2YW7Dp29zIHNpZ25pZmljYXRpdm9zIHBhcmEgaW50ZXJmYWNlcyBjw6lyZWJyby1jb21wdXRhZG9yIG7Do28gaW52YXNpdmFzLiBFbSB1bSBlc3R1ZG8gY29uZHV6aWRvIHBlbG8gbGFib3JhdMOzcmlvIEZBSVIsIGVtIHBhcmNlcmlhIGNvbSBvIENlbnRybyBCYXNjbyBkZSBDb2duacOnw6NvLCBDw6lyZWJybyBlIExpbmd1YWdlbSwgYSBJQSBhbmFsaXNvdSBhIGF0aXZpZGFkZSBjZXJlYnJhbCBkZSAzNSB2b2x1bnTDoXJpb3MgZW5xdWFudG8gZGlnaXRhdmFtLCB1dGlsaXphbmRvIG1hZ25ldG9lbmNlZmFsb2dyYWZpYSAoTUVHKSBlIGVsZXRyb2VuY2VmYWxvZ3JhZmlhIChFRUcpLiBPcyByZXN1bHRhZG9zIG1vc3RyYXJhbSBxdWUgYSB0ZWNub2xvZ2lhIGNvbnNlZ3VpdSByZWNvbnN0cnVpciBhdMOpIDgwJSBkb3MgY2FyYWN0ZXJlcyBkaWdpdGFkb3MsIG8gcXVlIHJlcHJlc2VudGEgbyBkb2JybyBkYSBwcmVjaXPDo28gZG9zIG3DqXRvZG9zIHRyYWRpY2lvbmFpcyBiYXNlYWRvcyBlbSBFRUcsIGFicmluZG8gY2FtaW5obyBwYXJhIG5vdmFzIHNvbHXDp8O1ZXMgYXNzaXN0aXZhcy5cblxuT3V0cm8gZXN0dWRvIGludmVzdGlnb3UgY29tbyBvIGPDqXJlYnJvIHRyYW5zZm9ybWEgcGVuc2FtZW50b3MgZW0gbGluZ3VhZ2VtLiBPcyBwZXNxdWlzYWRvcmVzIGlkZW50aWZpY2FyYW0sIHBvciBtZWlvIGRlIE1FRywgYXMgc2VxdcOqbmNpYXMgbmV1cmFpcyBxdWUgY29udmVydGVtIGlkZWlhcyBhYnN0cmF0YXMgZW0gcGFsYXZyYXMgZSBtb3ZpbWVudG9zIG1vdG9yZXMuIE9zIGFjaGFkb3Mgc3VnZXJlbSBxdWUgbyBjw6lyZWJybyB1dGlsaXphIHVtIGPDs2RpZ28gbmV1cmFsIGRpbsOibWljbyBwYXJhIGNvbmVjdGFyIGRpZmVyZW50ZXMgZXN0w6FnaW9zIGRvIHByb2Nlc3NhbWVudG8gbGluZ3XDrXN0aWNvLiBFc3NlcyBhdmFuw6dvcyBuw6NvIHPDsyBtZWxob3JhbSBhIGNhcGFjaWRhZGUgZGEgSUEgZGUgaW50ZXJwcmV0YXIgYSBhdGl2aWRhZGUgY2VyZWJyYWwsIG1hcyB0YW1iw6ltIHBvZGVtIHJldm9sdWNpb25hciBhIG5ldXJvY2nDqm5jaWEgZSBhIGNvbXVuaWNhw6fDo28gYXNzaXN0aXZhLlxuXG5FIHZvY8OqIG8gcXVlIGFjaGEgc29icmUgaXNzbz8g8J+klPCfkqwgXG5cbkxpbmsgZG8gUGFwZXI6IGh0dHBzOi8vYWkubWV0YS5jb20vcmVzZWFyY2gvcHVibGljYXRpb25zL2JyYWluLXRvLXRleHQtZGVjb2RpbmctYS1ub24taW52YXNpdmUtYXBwcm9hY2gtdmlhLXR5cGluZy9cblxu8J+RifCfj7tTaWdhIEBkaWVnb2FsbWVpZGEuaWEgcGFyYSBtYWlzIG5vdmlkYWRlcyBzb2JyZVxuSUEsIENoYXRHUFQgZSBUZWNub2xvZ2lhIVxuXG4jaWEgI2ludGVsaWdlbmNpYWFydGlmaWNpYWwgI3RlY25vbG9naWEgI2FpICNjaGF0Z3B0XG4jYWl0b29scyAjb3BlbmFpICNhaXRpcHMgI21hY2hpbmVsZWFybmluZyIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZ1bGxfbmFtZSI6IkRpZWdvIEFsbWVpZGEgfCBJQSB8IENoYXRHUFQiLCJpZCI6IjIzMjY0NTgzIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiZGllZ29hbG1laWRhLmlhIn0sInVzZXJfaWQiOiIyMzI2NDU4MyJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNhcm91c2VsX21lZGlhIjpbeyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY3MTYxNTI1ODkyMDY2MDk5XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NjYyNjQ2NTQ2ODI2MzIxNyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzkxNjY4MjZfMTg1MDMyNDI2NTcwMzI1ODRfMTg4MDU1ODQ2NDQxNzEyODY1OF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WjhQNVp0cDNKTVVRN2tOdmdFX3NXQjAmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall5TmpRMk5UUTJPREkyTXpJeE53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1haNU1fVU9JRGRSZDFrZVU1UkxxMkhrY2hRUFU0NXFlSFl2Z21xckZabHcmb2U9NjdCQjRFQ0MmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTE2NjgyNl8xODUwMzI0MjY1NzAzMjU4NF8xODgwNTU4NDY0NDE3MTI4NjU4X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WjhQNVp0cDNKTVVRN2tOdmdFX3NXQjAmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall5TmpRMk5UUTJPREkyTXpJeE53JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ0s0aC1qVGtzR216X2paeWNHWXRtQUV2cWRwU2hsMFV3ZDE0QndIVjBiVUEmb2U9NjdCQjRFQ0MmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjY2MjY0NjU0NjgyNjMyMTciLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NDU4ODAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTE2NjgyNl8xODUwMzI0MjY1NzAzMjU4NF8xODgwNTU4NDY0NDE3MTI4NjU4X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1aOFA1WnRwM0pNVVE3a052Z0Vfc1dCMCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXlOalEyTlRRMk9ESTJNekl4TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDWFo1TV9VT0lEZFJkMWtlVTVSTHEySGtjaFFQVTQ1cWVIWXZnbXFyRlpsdyZvZT02N0JCNEVDQyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NzE2MTUyNTg5MjA2NjA5OV8yMzI2NDU4MyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOnRydWUsImlkIjoiMzU2NjYyNjQ2NTI1ODYxNzEwMSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzYxMDg0OF8xODUwMzI0MjY5MDAzMjU4NF80MjAxMTkwNDM5MDYxODkxNjA1X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1PUlkwWU8wbkRJUVE3a052Z0VnVjgzTyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXlOalEyTlRJMU9EWXhOekV3TVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCU2V3U2w5WUYyTW95S0JWdGk2Ym1PQUQzbnRWVGJNWVdVWXFsTjNvSlRBQSZvZT02N0JCMzcyOSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX2Rhc2hfZWxpZ2libGUiOjEsImlzX3ZpZGVvIjp0cnVlLCJtZWRpYV9mb3JtYXQiOiJ2aWRlbyIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MiwibnVtYmVyX29mX3F1YWxpdGllcyI6Miwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY2NjI2NDY1MjU4NjE3MTAxIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTQ1ODgwMCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzc2MTA4NDhfMTg1MDMyNDI2OTAwMzI1ODRfNDIwMTE5MDQzOTA2MTg5MTYwNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9T1JZMFlPMG5ESVFRN2tOdmdFZ1Y4M08mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall5TmpRMk5USTFPRFl4TnpFd01RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQlNld1NsOVlGMk1veUtCVnRpNmJtT0FEM250VlRiTVlXVVlxbE4zb0pUQUEmb2U9NjdCQjM3MjkmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19jb2RlYyI6ImF2MDEuMC4wNE0uMDguMC4xMTEuMDEuMDEuMDEuMCIsInZpZGVvX2R1cmF0aW9uIjo1My44MzMsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W10sInZpZGVvX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU0wbVgtVlVDcDBKR2pFUnlrRFRTVkRnMWhGMnEyeVcxbnd2QkFwQmJrOUtsV1EzdUFTMFVtTDFhcHBlbXBLMHhhcGRMenlndlZkTXBPRWY5Rll0YXFMOTZ4VnhaNjV0clhCSm5NLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUxT0RJMU16a3lPREl6T1RVM01UVXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9ZDdiNGY4YjRkODViZmNjZSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5Rk1UUkNPREpHUWtRMVJEQTBNekkxUXpRM1JEQkZNMEZGTlRCRVJUSTVOVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZFFjMWR0UW5sT2NuSXlhMGgzWjBkQlRGY3hUbVZDU1dsdVFrTmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKb2JKcWJ6MDA4OEZGUUlvQWtNekxCZEFTdXFmdm5iSXRCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZRGFxbTR1RnpqMVBXQ2d5TkV5Vks2VjVWVHoyaXFKTFpvc3dSeHgtaUdvQVEmb2U9NjdCNzZGNzMmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjozMTYxMDksImhlaWdodCI6MTM1MCwiaWQiOiIxMDQzMjkyODIxMTc2NDc2diIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTTBtWC1WVUNwMEpHakVSeWtEVFNWRGcxaEYycTJ5VzFud3ZCQXBCYms5S2xXUTN1QVMwVW1MMWFwcGVtcEsweGFwZEx6eWd2VmRNcE9FZjlGWXRhcUw5NnhWeFo2NXRyWEJKbk0ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRTFPREkxTXpreU9ESXpPVFUzTVRVc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz1kN2I0ZjhiNGQ4NWJmY2NlJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlGTVRSQ09ESkdRa1ExUkRBME16STFRelEzUkRCRk0wRkZOVEJFUlRJNU5WOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkUWMxZHRRbmxPY25JeWEwaDNaMGRCVEZjeFRtVkNTV2x1UWtOaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpvYkpxYnowMDg4RkZRSW9Ba016TEJkQVN1cWZ2bmJJdEJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlEYXFtNHVGemoxUFdDZ3lORXlWSzZWNVZUejJpcUpMWm9zd1J4eC1pR29BUSZvZT02N0I3NkY3MyZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MzE2MTA5LCJoZWlnaHQiOjEzNTAsImlkIjoiMTA0MzI5MjgyMTE3NjQ3NnYiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU0wbVgtVlVDcDBKR2pFUnlrRFRTVkRnMWhGMnEyeVcxbnd2QkFwQmJrOUtsV1EzdUFTMFVtTDFhcHBlbXBLMHhhcGRMenlndlZkTXBPRWY5Rll0YXFMOTZ4VnhaNjV0clhCSm5NLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUxT0RJMU16a3lPREl6T1RVM01UVXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9ZDdiNGY4YjRkODViZmNjZSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5Rk1UUkNPREpHUWtRMVJEQTBNekkxUXpRM1JEQkZNMEZGTlRCRVJUSTVOVjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZFFjMWR0UW5sT2NuSXlhMGgzWjBkQlRGY3hUbVZDU1dsdVFrTmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKb2JKcWJ6MDA4OEZGUUlvQWtNekxCZEFTdXFmdm5iSXRCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZRGFxbTR1RnpqMVBXQ2d5TkV5Vks2VjVWVHoyaXFKTFpvc3dSeHgtaUdvQVEmb2U9NjdCNzZGNzMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjMxNjEwOSwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEwNDMyOTI4MjExNzY0NzZ2IiwidHlwZSI6MTAzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFNMG1YLVZVQ3AwSkdqRVJ5a0RUU1ZEZzFoRjJxMnlXMW53dkJBcEJiazlLbFdRM3VBUzBVbUwxYXBwZW1wSzB4YXBkTHp5Z3ZWZE1wT0VmOUZZdGFxTDk2eFZ4WjY1dHJYQkpuTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFMU9ESTFNemt5T0RJek9UVTNNVFVzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2JnZzPWQ3YjRmOGI0ZDg1YmZjY2UmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUZNVFJDT0RKR1FrUTFSREEwTXpJMVF6UTNSREJGTTBGRk5UQkVSVEk1TlY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRRYzFkdFFubE9jbkl5YTBoM1owZEJURmN4VG1WQ1NXbHVRa05pYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSm9iSnFiejAwODhGRlFJb0FrTXpMQmRBU3VxZnZuYkl0QmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWURhcW00dUZ6ajFQV0NneU5FeVZLNlY1VlR6MmlxSkxab3N3Unh4LWlHb0FRJm9lPTY3Qjc2RjczJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY3MTYxNTI1ODkyMDY2MDk5XzIzMjY0NTgzIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NjYyNjQ2NTQ5MzM3NDgzNSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY0MDM3MTBfMTg1MDMyNDI2NjYwMzI1ODRfNTQxNDk4NTg5MjA4MDE1NTcxNl9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9d3NyeEg3b2NzdkFRN2tOdmdHZWRzZ1EmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall5TmpRMk5UUTVNek0zTkRnek5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQzdjV0xHSXdHTFJlOFpJcDAyUXpfdktZZUhvLUtueWJQNlRTeXNzdWNlQWcmb2U9NjdCQjM1NTkmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NjQwMzcxMF8xODUwMzI0MjY2NjAzMjU4NF81NDE0OTg1ODkyMDgwMTU1NzE2X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9d3NyeEg3b2NzdkFRN2tOdmdHZWRzZ1EmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOall5TmpRMk5UUTVNek0zTkRnek5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRENPVE1RMjZMSUppZlpNR1kzeGJjZFZzRGtBRE5sN2d0ejdEcEl2Z1Z1b0Emb2U9NjdCQjM1NTkmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjY2MjY0NjU0OTMzNzQ4MzUiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NDU4ODAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NjQwMzcxMF8xODUwMzI0MjY2NjAzMjU4NF81NDE0OTg1ODkyMDgwMTU1NzE2X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz13c3J4SDdvY3N2QVE3a052Z0dlZHNnUSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXlOalEyTlRRNU16TTNORGd6TlElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDN2NXTEdJd0dMUmU4WklwMDJRel92S1llSG8tS255YlA2VFN5c3N1Y2VBZyZvZT02N0JCMzU1OSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119XSwiY2Fyb3VzZWxfbWVkaWFfY291bnQiOjMsImNhcm91c2VsX21lZGlhX2lkcyI6WzM1NjY2MjY0NjU0NjgyNjMyMTcsMzU2NjYyNjQ2NTI1ODYxNzEwMSwzNTY2NjI2NDY1NDkzMzc0ODM1XSwiY2Fyb3VzZWxfbWVkaWFfcGVuZGluZ19wb3N0X2NvdW50IjowLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHQkdvSVhQS3N6IiwiY29tbWVudF9jb3VudCI6MTksImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTQ1ODgwMCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgwMTg2NTMyNTg2NjY3MDEiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU2NzE2MTUyNTg5MjA2NjA5OSIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5MTY2ODI2XzE4NTAzMjQyNjU3MDMyNTg0XzE4ODA1NTg0NjQ0MTcxMjg2NThfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVo4UDVadHAzSk1VUTdrTnZnRV9zV0IwJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeU5qUTJOVFEyT0RJMk16SXhOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNYWjVNX1VPSURkUmQxa2VVNVJMcTJIa2NoUVBVNDVxZUhZdmdtcXJGWmx3Jm9lPTY3QkI0RUNDJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzkxNjY4MjZfMTg1MDMyNDI2NTcwMzI1ODRfMTg4MDU1ODQ2NDQxNzEyODY1OF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVo4UDVadHAzSk1VUTdrTnZnRV9zV0IwJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZeU5qUTJOVFEyT0RJMk16SXhOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNLNGgtalRrc0dtel9qWnljR1l0bUFFdnFkcFNobDBVd2QxNEJ3SFYwYlVBJm9lPTY3QkI0RUNDJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtZWRpYV9mb3JtYXQiOiJhbGJ1bSIsIm1lZGlhX25hbWUiOiJhbGJ1bSIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjgsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIwIiwiYXVkaW9fdHlwZSI6bnVsbCwibXVzaWNfaW5mbyI6bnVsbCwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6bnVsbH0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3Blbl9jYXJvdXNlbF9zdWJtaXNzaW9uX3N0YXRlIjoiY2xvc2VkIiwib3JpZ2luYWxfaGVpZ2h0Ijo2MTIsIm9yaWdpbmFsX3dpZHRoIjo2MTIsInBrIjoiMzU2NzE2MTUyNTg5MjA2NjA5OSIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfY29udGFpbmVyIiwic2hhcmVfY291bnRfZGlzYWJsZWQiOmZhbHNlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInN1YnNjcmliZV9jdGFfdmlzaWJsZSI6ZmFsc2UsInRha2VuX2F0IjoxNzM5NDU4ODAwLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTE2NjgyNl8xODUwMzI0MjY1NzAzMjU4NF8xODgwNTU4NDY0NDE3MTI4NjU4X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1aOFA1WnRwM0pNVVE3a052Z0Vfc1dCMCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWXlOalEyTlRRMk9ESTJNekl4TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDWFo1TV9VT0lEZFJkMWtlVTVSTHEySGtjaFFQVTQ1cWVIWXZnbXFyRlpsdyZvZT02N0JCNEVDQyZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOlsibWFyaXphMzk3MiJdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDA5Nzc0OTAzNjMsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiRGllZ28gQWxtZWlkYSB8IElBIHwgQ2hhdEdQVCIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyMzI2NDU4MyIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzQ3NTI0Mjg3NDMxMzA4NDQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NjIzMzcwNjVfNTI4NjA5MzY2NzI3OTI1XzQ3MTE1Mzg4MTQxNDM2Mzc4ODNfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGR2YjFFR0xsbzRRN2tOdmdIaXFGV2gmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBQkVwSWRZM3lQR2VjQjJDLXpLXzZiMzdOOUdDMzJGTS1iWUFJdmNVZjRuZyZvZT02N0JCNDlDQyZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTY2MjIxMiwiY3JlYXRlZF9hdF91dGMiOjE3Mzk2NjIyMTIsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc2h0YWdzIjpbIiNDaGF0R1BUIiwiI0FJIiwiI1RlY2hub2xvZ3kiLCIjRWNvbm9teeKBoCJdLCJpZCI6IjM1Njg4Njc2ODgzNTUwNzcyNjIiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTc5NjI3Mzg2MTY4NTMzNTQiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJUd28gb2YgU2lsaWNvbiBWYWxsZXnigJlzIG1vc3QgcHJvbWluZW50IHRlY2ggdGl0YW5zLCBFbG9uIE11c2sgYW5kIFNhbSBBbHRtYW4sIGFyZSBhdCBsb2dnZXJoZWFkcyBvdmVyIHRoZSBmdXR1cmUgb2YgdGhlIGNyZWF0b3Igb2YgI0NoYXRHUFQu4oGgXG4u4oGgXG5IZXJlJ3Mgd2hhdCB5b3UgbmVlZCB0byBrbm93LuKBoFxuLuKBoFxu8J+Ul1RhcCB0aGUgbGluayBpbiBiaW8gZm9yIG1vcmUu4oGgXG4u4oGgXG4jQUkgI1RlY2hub2xvZ3kgI0Vjb25vbXnigaBcbi7igaBcbvCfk7ggU2NyZWVuZ3JhYiwgQWwgSmF6ZWVyYSBFbmdsaXNoIiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQwMDg5NjAxMDU4MCwiZnVsbF9uYW1lIjoiQWwgSmF6ZWVyYSBFbmdsaXNoIiwiaWQiOiIzNzE0OTg2NyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0MjM0ODE4OTE4NDY4NzU5MjciLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDUzNTgwODc1XzgwMDIwNTA1NTUzMTA5M184OTU3ODQwMzQzOTU0NzQ4NDM2X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXdkRHpLY2pDd0NVUTdrTnZnRW5GbTlyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQml4YmdBWUlYdkI3cVhnS0xDVEN4RlczSFlBWHlkcWRSMjBoMjdUUS1zYVEmb2U9NjdCQjU4QzYmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImFsamF6ZWVyYWVuZ2xpc2gifSwidXNlcl9pZCI6IjM3MTQ5ODY3In0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2xpcHNfdGFiX3Bpbm5lZF91c2VyX2lkcyI6W10sImNvYXV0aG9yX3Byb2R1Y2VyX2Nhbl9zZWVfb3JnYW5pY19pbnNpZ2h0cyI6ZmFsc2UsImNvYXV0aG9yX3Byb2R1Y2VycyI6W10sImNvZGUiOiJER0hLa0QteGh5TyIsImNvbW1lbnRfY291bnQiOjQ3LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY29tbWVyY2VfaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6IiIsImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5NjYyMjExLCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxNzk2MjczODU5ODg1MzM1NCIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTY4ODY3Njg4MzU1MDc3MjYyIiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzQ4ODQwMzNfMTA0MTI3NDI1MTExMjE0NF8yNTkwOTUwMTE3MzA1Nzc0MzM3X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVl5T0RnMUxtUmxabUYxYkhSZmFXMWhaMlVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1rTkx1UmxIM3ZLZ1E3a052Z0VFdTdWaiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EZzJOelk0T0RNMU5UQTNOekkyTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBRFhNdnhLcVRDY0JqVzFDb19zSnFqTExWckVuaXZNdUlzcVdJOVd1R2JSQSZvZT02N0JCNjI4QiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc0ODg0MDMzXzEwNDEyNzQyNTExMTIxNDRfMjU5MDk1MDExNzMwNTc3NDMzN19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWXlPRGcxTG1SbFptRjFiSFJmYVcxaFoyVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWtOTHVSbEgzdktnUTdrTnZnRUV1N1ZqJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyT0RnMk56WTRPRE0xTlRBM056STJNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJZTGlfcXVFaHpSaWx4SU9STndBYnV0SkJDZTJ6MThRUWxfc3FtT2pnMVpnJm9lPTY3QkI2MjhCJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjpmYWxzZSwibGlrZV9jb3VudCI6Mjc4NiwibWFzaHVwX2luZm8iOnsiY2FuX3RvZ2dsZV9tYXNodXBzX2FsbG93ZWQiOmZhbHNlLCJmb3JtYXR0ZWRfbWFzaHVwc19jb3VudCI6bnVsbCwiaGFzX2JlZW5fbWFzaGVkX3VwIjpmYWxzZSwiaGFzX25vbm1pbWljYWJsZV9hZGRpdGlvbmFsX2F1ZGlvIjpmYWxzZSwiaXNfY3JlYXRvcl9yZXF1ZXN0aW5nX21hc2h1cCI6ZmFsc2UsImlzX2xpZ2h0X3dlaWdodF9jaGVjayI6dHJ1ZSwiaXNfbGlnaHRfd2VpZ2h0X3JldXNlX2FsbG93ZWRfY2hlY2siOmZhbHNlLCJpc19waXZvdF9wYWdlX2F2YWlsYWJsZSI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOmZhbHNlLCJtYXNodXBfdHlwZSI6bnVsbCwibWFzaHVwc19hbGxvd2VkIjpmYWxzZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6InBvc3QiLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjoxLCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMCIsImF1ZGlvX3R5cGUiOm51bGwsIm11c2ljX2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOm51bGx9LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2ODg2NzY4ODM1NTA3NzI2MiIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiZmVlZCIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTY2MjIxMSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzQ4ODQwMzNfMTA0MTI3NDI1MTExMjE0NF8yNTkwOTUwMTE3MzA1Nzc0MzM3X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVl5T0RnMUxtUmxabUYxYkhSZmFXMWhaMlVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1rTkx1UmxIM3ZLZ1E3a052Z0VFdTdWaiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EZzJOelk0T0RNMU5UQTNOekkyTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBRFhNdnhLcVRDY0JqVzFDb19zSnFqTExWckVuaXZNdUlzcVdJOVd1R2JSQSZvZT02N0JCNjI4QiZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOltdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjoyLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDA4OTYwMTA1ODAsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiQWwgSmF6ZWVyYSBFbmdsaXNoIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjM3MTQ5ODY3IiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwibGl2ZV9icm9hZGNhc3RfaWQiOjE4NDg3NjM2MjEzMDU2MTIwLCJsaXZlX2Jyb2FkY2FzdF92aXNpYmlsaXR5IjowLCJwcm9maWxlX3BpY19pZCI6IjM0MjM0ODE4OTE4NDY4NzU5MjciLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDUzNTgwODc1XzgwMDIwNTA1NTUzMTA5M184OTU3ODQwMzQzOTU0NzQ4NDM2X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXdkRHpLY2pDd0NVUTdrTnZnRW5GbTlyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQml4YmdBWUlYdkI3cVhnS0xDVEN4RlczSFlBWHlkcWRSMjBoMjdUUS1zYVEmb2U9NjdCQjU4QzYmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJhbGphemVlcmFlbmdsaXNoIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9tb2RpZnlfY2Fyb3VzZWwiOnRydWUsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5MjkxOTU4LCJjcmVhdGVkX2F0X3V0YyI6MTczOTI5MTk1OCwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzaHRhZ3MiOlsiI21vdGlvbiIsIiNtb3Rpb25kZXNpZ24iLCIjbW90aW9uZ3JhcGhpY3MiLCIjZGVzaWduIiwiI2NoYXRncHQiXSwiaWQiOiIzNTY1NTc5NzMxOTQxNTg4MDMyIiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOlsiQGJ1aWxkZXJzY2x1Yl9zdHVkaW9zIiwiQG9wZW5haSJdLCJwayI6IjE4MDQ2Mzc2MTUzMjA5ODIwIiwicHJpdmF0ZV9yZXBseV9zdGF0dXMiOjAsInNoYXJlX2VuYWJsZWQiOmZhbHNlLCJ0ZXh0IjoiRXZlcnlvbmUga25vd3Mgd2hlcmUgdGhlIGluc3BpcmF0aW9uIGNhbWUgZnJvbSBmb3IgdGhlc2UgdmlkZW9zLlxuXG5FdmVyeSB0aW1lIEkgc2VlIHRvcCB0aWVyIHF1YWxpdHkgbW90aW9uIGRlc2lnbiBpbiBhZHMgbXkgYnJhaW4gZ29lcyB0byB3b3JrLCBldmVuIHdoaWxlIHNsZWVwaW5nLCB0byB0cnkgdG8gY3JhY2sgdGhlIOKAmGhvdyB0aGUgZipjayBkaWQgdGhleSBkbyB0aGlz4oCZLiBTbywgdGhpcyBhcmUgc29tZSByZXNlYXJjaGVzIGludG8gaG93IGNvdWxkIEBidWlsZGVyc2NsdWJfc3R1ZGlvcyBkbyB0aGUgYW1hemluZyBhZCBmb3IgQG9wZW5haSAuIEZpcnN0IGFuZCBsYXN0IGFyZSBhZnRlciBlZmZlY3RzIGFuZCBzZWNvbmQgaXMgYSBjYXZhbHJ5IHJlc2VhcmNoLiBcblxuU29mdHdhcmU6IEFmdGVyIEVmZmVjdHVzIE1heGltdXMgKyBDYXZhbHJ5XG5Gb250OiBLYW5lZGEgR290aGljIEFGIChib2xkIGl0YWxpYylcblxuTW90aW9uLCBkZXNpZ24sIG1vdGlvbiBkZXNpZ24gLSAjbW90aW9uICNtb3Rpb25kZXNpZ24gI21vdGlvbmdyYXBoaWNzICNkZXNpZ24gI2NoYXRncHQiLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwNTgyMjE5NzIxLCJmdWxsX25hbWUiOiJDYXJsb3MiLCJpZCI6IjYyMjE2MzQwNyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMjM4MTA0MTU4ODg3NTA1OTkyIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQwMzY3Njk2Ml82NDM1NjU5MzQzODIwMjZfNTYwOTc4MTAwNTQyMzQ1NjMzMl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUlBUDg5YkJjUHk4UTdrTnZnRXR1T0cyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQU83SzVSX2xTenE5TVk0SjZ4RUhjZ0hQQVc0WmZDR2FFU1habVJLTWxCLVEmb2U9NjdCQjUwRUMmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImNhcmxvc19fX3R2In0sInVzZXJfaWQiOiI2MjIxNjM0MDcifSwiY2FwdGlvbl9pc19lZGl0ZWQiOnRydWUsImNhcm91c2VsX21lZGlhIjpbeyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY1NTc5NzMxOTQxNTg4MDMyXzYyMjE2MzQwNyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOmZhbHNlLCJpZCI6IjM1NjU1NzU4MjIxMjg4ODA0MDQiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg3MDMyODhfMTg0ODM3Nzg1NDYwMTk0MDhfNTgzMzk5MjQxNTQ2OTQyNjkwMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OGtPTGUyZUIyaDhRN2tOdmdGVVYxc3AmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVFUzTlRneU1qRXlPRGc0TURRd05BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ0NLd3h4aElGWlF0UmdZdnFXQmVsWU1zMXVpbDFnNHlCLTVEU1NlemtIc3cmb2U9NjdCQjYxQjcmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6MjAyLCJtYXhfdGh1bWJuYWlsc19wZXJfc3ByaXRlIjoxMDUsInJlbmRlcmVkX3dpZHRoIjo5Niwic3ByaXRlX2hlaWdodCI6ODgyLCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc5MjgzMDk0XzUxMTA3MzEwNDkzMDI5MV81MzgyNzIyOTE5NzU3NTMwODYxX24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz01bXBLWHQ5U3MzUVE3a052Z0V5Qkx1TyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNCdlFVUEpZZGM0cVB4c1ZZNk5QZWJUZkhlYVI2emFHcVBPSUZMWUUxT3NBJm9lPTY3QkI2NTYxJl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjA5NzUyMzgwOTUyMzgwOTUzLCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjoxMC4yNH19fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjU1NzU4MjIxMjg4ODA0MDQiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5MjcwMjQ3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODcwMzI4OF8xODQ4Mzc3ODU0NjAxOTQwOF81ODMzOTkyNDE1NDY5NDI2OTAwX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz04a09MZTJlQjJoOFE3a052Z0ZVVjFzcCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UVTNOVGd5TWpFeU9EZzRNRFF3TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDQ0t3eHhoSUZaUXRSZ1l2cVdCZWxZTXMxdWlsMWc0eUItNURTU2V6a0hzdyZvZT02N0JCNjFCNyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjEwLjI0LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQRzdPWnBXVml4SGhWVUxLSi1Da2RiT0lrME1VTnd1QWVkMm0tM1ZfZnZIdjFDQy13Z1VHQUs0WFJ5czdvOWY5UndfU01uT082TDZFaGJha28tWUNLLU5jY0U0V0ZQOVV6VTduRS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZME1qZzROVE13TkRnMU5qSTNNeXdpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmdnM9N2MyZTYzOGIzZDA2ZmMzZiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4Mk5EUkZNMFJCTXpORE5qbEdNalU0TnpZd1F6RTNSRGt6TVRCRVFVVTVSRjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhaXU5SGo3S3lrQWhVQ0tBSkRNeXdYUUNSNjRVZXVGSHNZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlDcVJxa1FEdFdiN2pEOExxd2NTaTI4a2wyTnctcnZQVlNSaGRMVTVKaFhrUSZvZT02N0I3NDExQiZfbmNfc2lkPTFkNTc2ZCIsInZpZGVvX3ZlcnNpb25zIjpbeyJiYW5kd2lkdGgiOjE3NTQzNSwiaGVpZ2h0IjoxMzUwLCJpZCI6Ijk2MzcyMzIwMTk2NDMwMTR2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQRzdPWnBXVml4SGhWVUxLSi1Da2RiT0lrME1VTnd1QWVkMm0tM1ZfZnZIdjFDQy13Z1VHQUs0WFJ5czdvOWY5UndfU01uT082TDZFaGJha28tWUNLLU5jY0U0V0ZQOVV6VTduRS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZME1qZzROVE13TkRnMU5qSTNNeXdpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMTAmdnM9N2MyZTYzOGIzZDA2ZmMzZiZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4Mk5EUkZNMFJCTXpORE5qbEdNalU0TnpZd1F6RTNSRGt6TVRCRVFVVTVSRjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhaXU5SGo3S3lrQWhVQ0tBSkRNeXdYUUNSNjRVZXVGSHNZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlDcVJxa1FEdFdiN2pEOExxd2NTaTI4a2wyTnctcnZQVlNSaGRMVTVKaFhrUSZvZT02N0I3NDExQiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MTc1NDM1LCJoZWlnaHQiOjEzNTAsImlkIjoiOTYzNzIzMjAxOTY0MzAxNHYiLCJ0eXBlIjoxMDIsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVBHN09acFdWaXhIaFZVTEtKLUNrZGJPSWswTVVOd3VBZWQybS0zVl9mdkh2MUNDLXdnVUdBSzRYUnlzN285ZjlSd19TTW5PTzZMNkVoYmFrby1ZQ0stTmNjRTRXRlA5VXpVN25FLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalkwTWpnNE5UTXdORGcxTmpJM015d2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMCZ2cz03YzJlNjM4YjNkMDZmYzNmJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzgyTkRSRk0wUkJNek5ETmpsR01qVTROell3UXpFM1JEa3pNVEJFUVVVNVJGOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FpdTlIajdLeWtBaFVDS0FKRE15d1hRQ1I2NFVldUZIc1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUNxUnFrUUR0V2I3akQ4THF3Y1NpMjhrbDJOdy1ydlBWU1JoZExVNUpoWGtRJm9lPTY3Qjc0MTFCJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoxNzU0MzUsImhlaWdodCI6MTM1MCwiaWQiOiI5NjM3MjMyMDE5NjQzMDE0diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUEc3T1pwV1ZpeEhoVlVMS0otQ2tkYk9JazBNVU53dUFlZDJtLTNWX2Z2SHYxQ0Mtd2dVR0FLNFhSeXM3bzlmOVJ3X1NNbk9PNkw2RWhiYWtvLVlDSy1OY2NFNFdGUDlVelU3bkUubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWTBNamc0TlRNd05EZzFOakkzTXl3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJnZzPTdjMmU2MzhiM2QwNmZjM2YmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDODJORFJGTTBSQk16TkROamxHTWpVNE56WXdRekUzUkRrek1UQkVRVVU1UkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYWl1OUhqN0t5a0FoVUNLQUpETXl3WFFDUjY0VWV1RkhzWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQ3FScWtRRHRXYjdqRDhMcXdjU2kyOGtsMk53LXJ2UFZTUmhkTFU1SmhYa1Emb2U9NjdCNzQxMUImX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH1dfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjU1Nzk3MzE5NDE1ODgwMzJfNjIyMTYzNDA3IiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6ZmFsc2UsImlkIjoiMzU2NTU3NTgyMjI0NjMxMTkzMyIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzUyNDU0NV8xODQ4Mzc3ODU3NjAxOTQwOF81NjcyOTY2NDYyMTIzMDk1MDgxX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz02aE5JY0N1UXVTb1E3a052Z0U0eHpwVyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UVTNOVGd5TWpJME5qTXhNVGt6TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDakRlS2cwazRmb2dYcVFncTExTXBPS2kxNzk1Ukx3MzlCVEhKakduUFNmdyZvZT02N0JCNjBGQiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjoxODcsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY1MDc2OTRfMjM0OTY0NzIzODczNDgwNF83NDc1MTEzNTQzMjI5NDk0NTg2X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1qb3ExNjZxakdzSVE3a052Z0ZPLW5rMyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFKSFJlUGxTVGhRUXBwT3Z2b095M0V3anNtWEJPaDR0SlI0T2F3VXVJbWd3Jm9lPTY3QkI0MDM2Jl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjEyMDM4MDk1MjM4MDk1MjM4LCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjoxMi42NH19fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjo1LCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjU1NzU4MjIyNDYzMTE5MzMiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5MjcwMjQ3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzUyNDU0NV8xODQ4Mzc3ODU3NjAxOTQwOF81NjcyOTY2NDYyMTIzMDk1MDgxX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz02aE5JY0N1UXVTb1E3a052Z0U0eHpwVyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UVTNOVGd5TWpJME5qTXhNVGt6TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDakRlS2cwazRmb2dYcVFncTExTXBPS2kxNzk1Ukx3MzlCVEhKakduUFNmdyZvZT02N0JCNjBGQiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoidnAwOS4wMC4zMS4wOC4wMC4wMS4wMS4wMS4wMCIsInZpZGVvX2R1cmF0aW9uIjoxMi42NCwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXSwidmlkZW9fdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUFU3X25FTEZIcmYxOGwxV3g2dHRzZVBJTzYwV2EtTXh0Sy16VEVjZ2lfcXNHbVEtZU1aZjJkblJQZFQ1WXJCS0N4NWNXZWNLcDNWUEprMW10dVNlbTFIWHFGb3NibllwaTlYN1UubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXdPVE0yTkRjMU5URXpNVEE0TlN3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0JnZzPTMzMzJhMTFhZTZiZjVmMWEmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOHpPRFJGUkVWQ05qTXdSVEUwUmtWQk5EaENSVU16T1VReVFrSTRNVUpCUTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYWFxNldjMlkyVkFoVUNLQUpETXl3WFFDbEhyaFI2NFVnWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQmtFSDVfSjNaVzRXbXVBZXJIRjVLQThhcWM3cC1fVU5xU0pkVGpLdW05Qmcmb2U9NjdCNzQ2RkQmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjo3NjAyODEsImhlaWdodCI6MTM1MCwiaWQiOiIxMzI3OTU5ODM4NTQ2MTUydiIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUFU3X25FTEZIcmYxOGwxV3g2dHRzZVBJTzYwV2EtTXh0Sy16VEVjZ2lfcXNHbVEtZU1aZjJkblJQZFQ1WXJCS0N4NWNXZWNLcDNWUEprMW10dVNlbTFIWHFGb3NibllwaTlYN1UubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qWXdPVE0yTkRjMU5URXpNVEE0TlN3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05CVWs5VlUwVk1YMGxVUlUwdVF6TXVNVEE0TUM1a1lYTm9YMkpoYzJWc2FXNWxYekV3T0RCd1gzWXhJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0JnZzPTMzMzJhMTFhZTZiZjVmMWEmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOHpPRFJGUkVWQ05qTXdSVEUwUmtWQk5EaENSVU16T1VReVFrSTRNVUpCUTE5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYWFxNldjMlkyVkFoVUNLQUpETXl3WFFDbEhyaFI2NFVnWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQmtFSDVfSjNaVzRXbXVBZXJIRjVLQThhcWM3cC1fVU5xU0pkVGpLdW05Qmcmb2U9NjdCNzQ2RkQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjc2MDI4MSwiaGVpZ2h0IjoxMzUwLCJpZCI6IjEzMjc5NTk4Mzg1NDYxNTJ2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQVTdfbkVMRkhyZjE4bDFXeDZ0dHNlUElPNjBXYS1NeHRLLXpURWNnaV9xc0dtUS1lTVpmMmRuUlBkVDVZckJLQ3g1Y1dlY0twM1ZQSmsxbXR1U2VtMUhYcUZvc2JuWXBpOVg3VS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pZd09UTTJORGMxTlRFek1UQTROU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTkJVazlWVTBWTVgwbFVSVTB1UXpNdU1UQTRNQzVrWVhOb1gySmhjMlZzYVc1bFh6RXdPREJ3WDNZeEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmdnM9MzMzMmExMWFlNmJmNWYxYSZfbmNfdnM9SEJrY0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM4ek9EUkZSRVZDTmpNd1JURTBSa1ZCTkRoQ1JVTXpPVVF5UWtJNE1VSkJRMTkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQW9BQmdBR3dLSUIzVnpaVjl2YVd3Qk1SSndjbTluY21WemMybDJaVjl5WldOcGNHVUJNUlVBQUNhYXE2V2MyWTJWQWhVQ0tBSkRNeXdYUUNsSHJoUjY0VWdZRm1SaGMyaGZZbUZ6Wld4cGJtVmZNVEE0TUhCZmRqRVJBSFh1QndBJmNjYj05LTQmb2g9MDBfQVlCa0VINV9KM1pXNFdtdUFlckhGNUtBOGFxYzdwLV9VTnFTSmRUakt1bTlCZyZvZT02N0I3NDZGRCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6NzYwMjgxLCJoZWlnaHQiOjEzNTAsImlkIjoiMTMyNzk1OTgzODU0NjE1MnYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVBVN19uRUxGSHJmMThsMVd4NnR0c2VQSU82MFdhLU14dEstelRFY2dpX3FzR21RLWVNWmYyZG5SUGRUNVlyQktDeDVjV2VjS3AzVlBKazFtdHVTZW0xSFhxRm9zYm5ZcGk5WDdVLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPall3T1RNMk5EYzFOVEV6TVRBNE5Td2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOQlVrOVZVMFZNWDBsVVJVMHVRek11TVRBNE1DNWtZWE5vWDJKaGMyVnNhVzVsWHpFd09EQndYM1l4SW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNCZ2cz0zMzMyYTExYWU2YmY1ZjFhJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzh6T0RSRlJFVkNOak13UlRFMFJrVkJORGhDUlVNek9VUXlRa0k0TVVKQlExOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FhcTZXYzJZMlZBaFVDS0FKRE15d1hRQ2xIcmhSNjRVZ1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUJrRUg1X0ozWlc0V211QWVySEY1S0E4YXFjN3AtX1VOcVNKZFRqS3VtOUJnJm9lPTY3Qjc0NkZEJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY1NTc5NzMxOTQxNTg4MDMyXzYyMjE2MzQwNyIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOmZhbHNlLCJpZCI6IjM1NjU1NzU4MjMzNzg4NjIzMDQiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzc5NjU0ODZfMTg0ODM3Nzg1NjcwMTk0MDhfMTE3MzU1MDEyMjc5NTk1ODYyOF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WkFEWjFJcWtKWUVRN2tOdmdHay1WQmomX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVFUzTlRneU16TTNPRGcyTWpNd05BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRHpDQnF5RkphVUVPeEdjanVZZGxNSGd3Q0d1VFZNS0EzaWtoNFdGclZCcGcmb2U9NjdCQjMzODgmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6MTU3LCJtYXhfdGh1bWJuYWlsc19wZXJfc3ByaXRlIjoxMDUsInJlbmRlcmVkX3dpZHRoIjo5Niwic3ByaXRlX2hlaWdodCI6ODgyLCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3NjMxNTgzXzYwNzQyNDI2ODU4NjU0N181ODM1MzIyODA3MTIwNjkyNTYxX24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1IcGFrNGhuMGJiVVE3a052Z0VUY29ySyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFNV0pOZWxkV1UzVm9tUnZQN1BjYjVjc19wRzhLNUgxN1hKOVhXY1ZBTVdBJm9lPTY3QkIzOTE2Jl9uY19zaWQ9MjAxMWFkIl0sInNwcml0ZV93aWR0aCI6MTUwMCwidGh1bWJuYWlsX2R1cmF0aW9uIjowLjA5NzUyMzgwOTUyMzgwOTUzLCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjoxMC4yNH19fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjU1NzU4MjMzNzg4NjIzMDQiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5MjcwMjQ3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3Nzk2NTQ4Nl8xODQ4Mzc3ODU2NzAxOTQwOF8xMTczNTUwMTIyNzk1OTU4NjI4X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1aQURaMUlxa0pZRVE3a052Z0drLVZCaiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UVTNOVGd5TXpNM09EZzJNak13TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEekNCcXlGSmFVRU94R2NqdVlkbE1IZ3dDR3VUVk1LQTNpa2g0V0ZyVkJwZyZvZT02N0JCMzM4OCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjEwLjI0LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPU2l0NGE4akUxc010ZXBCYkYyZnc5aThZYVp1NjZlOERsemNMWktmN2psc2xPRUR2eURHZThaUVZoUmtDUmpSS3hqN3VHVjJDZl96ZVpILU9ZZUhpQS15Z25Rekx6dW9xSWJJTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFeE5qWTNNell6T1RVd016a3lNemtzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTExJnZzPWFkMzkyYzRjZTY2N2IzNWEmX25jX3ZzPUhCa2NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOHlOVFF5TkRVNU1ERXlNelpDTVRFeE5rWXlNa1EwTkVRd05qbEdORVJDTVY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFvQUJnQUd3S0lCM1Z6WlY5dmFXd0JNUkp3Y205bmNtVnpjMmwyWlY5eVpXTnBjR1VCTVJVQUFDYU95UHZGXzhpU0JCVUNLQUpETXl3WFFDUjY0VWV1RkhzWUZtUmhjMmhmWW1GelpXeHBibVZmTVRBNE1IQmZkakVSQUhYdUJ3QSZjY2I9OS00Jm9oPTAwX0FZQTdSTm9rekItZFM0TXZXZE4zVTU2M1FjWDlfZ1NFMEE0V2pwdWM4bWdMcXcmb2U9NjdCNzNDNjAmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjoxMzk3NjgsImhlaWdodCI6MTM1MCwiaWQiOiI5MDY2MzY1MTEzNDEzMDM0diIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT1NpdDRhOGpFMXNNdGVwQmJGMmZ3OWk4WWFadTY2ZThEbHpjTFpLZjdqbHNsT0VEdnlER2U4WlFWaFJrQ1JqUkt4ajd1R1YyQ2ZfemVaSC1PWWVIaUEteWduUXpMenVvcUliSU0ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXhOalkzTXpZek9UVXdNemt5TXprc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZ2cz1hZDM5MmM0Y2U2NjdiMzVhJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzh5TlRReU5EVTVNREV5TXpaQ01URXhOa1l5TWtRME5FUXdOamxHTkVSQ01WOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FPeVB2Rl84aVNCQlVDS0FKRE15d1hRQ1I2NFVldUZIc1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUE3Uk5va3pCLWRTNE12V2ROM1U1NjNRY1g5X2dTRTBBNFdqcHVjOG1nTHF3Jm9lPTY3QjczQzYwJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoxMzk3NjgsImhlaWdodCI6MTM1MCwiaWQiOiI5MDY2MzY1MTEzNDEzMDM0diIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT1NpdDRhOGpFMXNNdGVwQmJGMmZ3OWk4WWFadTY2ZThEbHpjTFpLZjdqbHNsT0VEdnlER2U4WlFWaFJrQ1JqUkt4ajd1R1YyQ2ZfemVaSC1PWWVIaUEteWduUXpMenVvcUliSU0ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXhOalkzTXpZek9UVXdNemt5TXprc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZ2cz1hZDM5MmM0Y2U2NjdiMzVhJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzh5TlRReU5EVTVNREV5TXpaQ01URXhOa1l5TWtRME5FUXdOamxHTkVSQ01WOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FPeVB2Rl84aVNCQlVDS0FKRE15d1hRQ1I2NFVldUZIc1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUE3Uk5va3pCLWRTNE12V2ROM1U1NjNRY1g5X2dTRTBBNFdqcHVjOG1nTHF3Jm9lPTY3QjczQzYwJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjoxMzk3NjgsImhlaWdodCI6MTM1MCwiaWQiOiI5MDY2MzY1MTEzNDEzMDM0diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT1NpdDRhOGpFMXNNdGVwQmJGMmZ3OWk4WWFadTY2ZThEbHpjTFpLZjdqbHNsT0VEdnlER2U4WlFWaFJrQ1JqUkt4ajd1R1YyQ2ZfemVaSC1PWWVIaUEteWduUXpMenVvcUliSU0ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXhOalkzTXpZek9UVXdNemt5TXprc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZ2cz1hZDM5MmM0Y2U2NjdiMzVhJl9uY192cz1IQmtjRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzh5TlRReU5EVTVNREV5TXpaQ01URXhOa1l5TWtRME5FUXdOamxHTkVSQ01WOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBb0FCZ0FHd0tJQjNWelpWOXZhV3dCTVJKd2NtOW5jbVZ6YzJsMlpWOXlaV05wY0dVQk1SVUFBQ2FPeVB2Rl84aVNCQlVDS0FKRE15d1hRQ1I2NFVldUZIc1lGbVJoYzJoZlltRnpaV3hwYm1WZk1UQTRNSEJmZGpFUkFIWHVCd0EmY2NiPTktNCZvaD0wMF9BWUE3Uk5va3pCLWRTNE12V2ROM1U1NjNRY1g5X2dTRTBBNFdqcHVjOG1nTHF3Jm9lPTY3QjczQzYwJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6MywiY2Fyb3VzZWxfbWVkaWFfaWRzIjpbMzU2NTU3NTgyMjEyODg4MDQwNCwzNTY1NTc1ODIyMjQ2MzExOTMzLDM1NjU1NzU4MjMzNzg4NjIzMDRdLCJjYXJvdXNlbF9tZWRpYV9wZW5kaW5nX3Bvc3RfY291bnQiOjAsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREY3ZTlfOHRmeEEiLCJjb21tZW50X2NvdW50IjoxOSwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNvbW1lcmNlX2ludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiIiLCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTI2OTc4MTQ3MzIyNCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgwNDYzNDY0NDcyMDk4MjAiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU2NTU3OTczMTk0MTU4ODAzMiIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg3MDMyODhfMTg0ODM3Nzg1NDYwMTk0MDhfNTgzMzk5MjQxNTQ2OTQyNjkwMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OGtPTGUyZUIyaDhRN2tOdmdGVVYxc3AmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVFUzTlRneU1qRXlPRGc0TURRd05BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ0NLd3h4aElGWlF0UmdZdnFXQmVsWU1zMXVpbDFnNHlCLTVEU1NlemtIc3cmb2U9NjdCQjYxQjcmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoicGVuZGluZyIsImludml0ZWRfY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOnRydWUsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOmZhbHNlLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjpmYWxzZSwiaXNfcG9zdF9saXZlX2NsaXBzX21lZGlhIjpmYWxzZSwiaXNfcmVzaGFyZV9vZl90ZXh0X3Bvc3RfYXBwX21lZGlhX2luX2lnIjpmYWxzZSwiaXNfc29jaWFsX3VmaV9kaXNhYmxlZCI6ZmFsc2UsImlzX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fdmlld2VyX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX3ZpZGVvIjpmYWxzZSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo2NDAsIm1lZGlhX2Zvcm1hdCI6ImFsYnVtIiwibWVkaWFfbmFtZSI6ImFsYnVtIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6OCwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjE4NDE0ODY0Njg4MDI1NzY2IiwiYXVkaW9fdHlwZSI6ImxpY2Vuc2VkX211c2ljIiwibXVzaWNfaW5mbyI6eyJtdXNpY19hc3NldF9pbmZvIjp7ImFsbG93c19zYXZpbmciOmZhbHNlLCJhcnRpc3RfaWQiOiIyMjY1MzI0MzE3MDQ1NTg1IiwiYXVkaW9faWQiOiIxMTE5NzI2NzA1ODYyNTk3IiwiY292ZXJfYXJ0d29ya190aHVtYm5haWxfdXJpIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L3YvdDM5LjMwODA4LTYvNDM0MjY0MjMyXzkwMDI3NzIxNDY3NTgzXzg2MDQyMTE2MzA0MjQ4NjM4Mjhfbi5qcGc/c3RwPWRzdC1qcGdfczE2OHgxMjhfdHQ2Jl9uY19jYXQ9MTA4JmNjYj0xLTcmX25jX3NpZD0yZjI1NTcmX25jX29oYz1rM3c5dDBoZ0hqNFE3a052Z0ZHbGNTYiZfbmNfb2M9QWRqdllmb1VtejduZ21VM0NaeV9QV3pEVTVJVnlfXzNzTkdRTlBiWk50M2NDMVlJZElzWElLSDhVX1NPQ2NDWFJ4YyZfbmNfYWQ9ei1tJl9uY19jaWQ9MTM2NSZfbmNfenQ9MjMmX25jX2h0PXNjb250ZW50LWR1czEtMS54eCZfbmNfZ2lkPUFmSGJ1cG9wVXhDZ3BrYlZweVRKNlZuJm9oPTAwX0FZQWhqVHhmZ3JEdC14LTluS25IWGJ2U1pFNEc1NE1hWmtSbE00QXFtYm8xWlEmb2U9NjdCQjRCOUIiLCJjb3Zlcl9hcnR3b3JrX3VyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC92L3QzOS4zMDgwOC02LzQzNDI2NDIzMl85MDAyNzcyMTQ2NzU4M184NjA0MjExNjMwNDI0ODYzODI4X24uanBnP3N0cD1kc3QtanBnX3MxNjh4MTI4X3R0NiZfbmNfY2F0PTEwOCZjY2I9MS03Jl9uY19zaWQ9MmYyNTU3Jl9uY19vaGM9azN3OXQwaGdIajRRN2tOdmdGR2xjU2ImX25jX29jPUFkanZZZm9VbXo3bmdtVTNDWnlfUFd6RFU1SVZ5X18zc05HUU5QYlpOdDNjQzFZSWRJc1hJS0g4VV9TT0NjQ1hSeGMmX25jX2FkPXotbSZfbmNfY2lkPTEzNjUmX25jX3p0PTIzJl9uY19odD1zY29udGVudC1kdXMxLTEueHgmX25jX2dpZD1BZkhidXBvcFV4Q2dwa2JWcHlUSjZWbiZvaD0wMF9BWUFoalR4ZmdyRHQteC05bktuSFhidlNaRTRHNTRNYVprUmxNNEFxbWJvMVpRJm9lPTY3QkI0QjlCIiwiZGFya19tZXNzYWdlIjpudWxsLCJkaXNwbGF5X2FydGlzdCI6Ikdlc2FmZmVsc3RlaW4iLCJkdXJhdGlvbl9pbl9tcyI6MTQ0Njk3LCJmYXN0X3N0YXJ0X3Byb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUU9ZcS04UGVvS1ROTEl0QU9tQy1GcWhhX3ZlQXhiNU4xcVBNbmtEblRvQlpHZjhDclhWeWhZX2hyX2x0Q2d2TnlaYThXd21lQ0Z5UnQ0X1hWc3cxclh1Lm1wND9zdHJleHQ9MSZfbmNfY2F0PTEwMiZfbmNfc2lkPThiZjhmZSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldCZfbmNfb2hjPXNQZGlyTzVyeUtjUTdrTnZnSFBMVnVqJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkluaHdkbDl3Y205bmNtVnpjMmwyWlM1QlZVUkpUMTlQVGt4WkxpNURNeTR3TG5CeWIyZHlaWE56YVhabFgyRjFaR2x2WDJGaFkzQmZORGhmWm5KaFoxOHlYMkYxWkdsdklpd2llSEIyWDJGemMyVjBYMmxrSWpvME5qRXlPVE0zTVRNd01ESTNORE1zSW5WeWJHZGxibDl6YjNWeVkyVWlPaUozZDNjaWZRJTNEJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZQmd5TlhDNFBHdHd1T1BXZ0owVm5reFdqMC1OdmV1SHFoeFlpU3Y5aV9Iamcmb2U9NjdCQjYwQjAiLCJoYXNfbHlyaWNzIjp0cnVlLCJoaWdobGlnaHRfc3RhcnRfdGltZXNfaW5fbXMiOlszOTAwMCwxMDc1MDAsMTUwMF0sImlkIjoiOTIzNzY3MTAyODA0NzMyIiwiaWdfdXNlcm5hbWUiOm51bGwsImlzX2VsaWdpYmxlX2Zvcl9hdWRpb19lZmZlY3RzIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX3ZpbnlsX3N0aWNrZXIiOnRydWUsImlzX2V4cGxpY2l0IjpmYWxzZSwibGljZW5zZWRfbXVzaWNfc3VidHlwZSI6IkRFRkFVTFQiLCJseXJpY3MiOm51bGwsInByb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUU9ZcS04UGVvS1ROTEl0QU9tQy1GcWhhX3ZlQXhiNU4xcVBNbmtEblRvQlpHZjhDclhWeWhZX2hyX2x0Q2d2TnlaYThXd21lQ0Z5UnQ0X1hWc3cxclh1Lm1wND9zdHJleHQ9MSZfbmNfY2F0PTEwMiZfbmNfc2lkPThiZjhmZSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldCZfbmNfb2hjPXNQZGlyTzVyeUtjUTdrTnZnSFBMVnVqJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkluaHdkbDl3Y205bmNtVnpjMmwyWlM1QlZVUkpUMTlQVGt4WkxpNURNeTR3TG5CeWIyZHlaWE56YVhabFgyRjFaR2x2WDJGaFkzQmZORGhmWm5KaFoxOHlYMkYxWkdsdklpd2llSEIyWDJGemMyVjBYMmxrSWpvME5qRXlPVE0zTVRNd01ESTNORE1zSW5WeWJHZGxibDl6YjNWeVkyVWlPaUozZDNjaWZRJTNEJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZQmd5TlhDNFBHdHd1T1BXZ0owVm5reFdqMC1OdmV1SHFoeFlpU3Y5aV9Iamcmb2U9NjdCQjYwQjAiLCJyZWFjdGl2ZV9hdWRpb19kb3dubG9hZF91cmwiOm51bGwsInNhbml0aXplZF90aXRsZSI6bnVsbCwic3VidGl0bGUiOiIiLCJ0aXRsZSI6IlRoZSBVcmdlIiwid2ViXzMwc19wcmV2aWV3X2Rvd25sb2FkX3VybCI6bnVsbH0sIm11c2ljX2NvbnN1bXB0aW9uX2luZm8iOnsiYWxsb3dfbWVkaWFfY3JlYXRpb25fd2l0aF9tdXNpYyI6dHJ1ZSwiYXVkaW9fYXNzZXRfc3RhcnRfdGltZV9pbl9tcyI6MzkwMDAsImF1ZGlvX2ZpbHRlcl9pbmZvcyI6W10sImF1ZGlvX211dGluZ19pbmZvIjp7ImFsbG93X2F1ZGlvX2VkaXRpbmciOmZhbHNlLCJtdXRlX2F1ZGlvIjpmYWxzZSwibXV0ZV9yZWFzb25fc3RyIjoiIiwic2hvd19tdXRlZF9hdWRpb190b2FzdCI6ZmFsc2V9LCJjb250YWluc19seXJpY3MiOm51bGwsImRlcml2ZWRfY29udGVudF9pZCI6bnVsbCwiZGlzcGxheV9sYWJlbHMiOm51bGwsImZvcm1hdHRlZF9jbGlwc19tZWRpYV9jb3VudCI6bnVsbCwiaWdfYXJ0aXN0IjpudWxsLCJpc19ib29rbWFya2VkIjpmYWxzZSwiaXNfdHJlbmRpbmdfaW5fY2xpcHMiOmZhbHNlLCJvdmVybGFwX2R1cmF0aW9uX2luX21zIjozMDAwMCwicGxhY2Vob2xkZXJfcHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4xMjQ0Mi0xNS80Mzk4NTYyOV8zMTExMDU5MTYxNDUzNTFfNTgwNjQ3NTk4MTE0MDU3NzZfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXlMMDlOWGNGaVg0UTdrTnZnSGpVUEpVJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ2xjLXpYUkozRzIxRGFrSVNLOWVlV1ZOWEFkX1lnNlVqdkc3SXNDNmZPWkEmb2U9NjdCQjM5M0QmX25jX3NpZD0yMDExYWQiLCJwcmV2aW91c190cmVuZF9yYW5rIjpudWxsLCJzaG91bGRfYWxsb3dfbXVzaWNfZWRpdGluZyI6ZmFsc2UsInNob3VsZF9tdXRlX2F1ZGlvIjpmYWxzZSwic2hvdWxkX211dGVfYXVkaW9fcmVhc29uIjoiIiwic2hvdWxkX211dGVfYXVkaW9fcmVhc29uX3R5cGUiOm51bGwsInRyZW5kX3JhbmsiOm51bGx9fSwib3JpZ2luYWxfc291bmRfaW5mbyI6bnVsbCwicGlubmVkX21lZGlhX2lkcyI6W119LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9wZW5fY2Fyb3VzZWxfc3VibWlzc2lvbl9zdGF0ZSI6ImNsb3NlZCIsIm9yaWdpbmFsX2hlaWdodCI6NjEyLCJvcmlnaW5hbF93aWR0aCI6NjEyLCJwayI6IjM1NjU1Nzk3MzE5NDE1ODgwMzIiLCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2NvbnRhaW5lciIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTI3MDI0OCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg3MDMyODhfMTg0ODM3Nzg1NDYwMTk0MDhfNTgzMzk5MjQxNTQ2OTQyNjkwMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9UQXdMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9OGtPTGUyZUIyaDhRN2tOdmdGVVYxc3AmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVFUzTlRneU1qRXlPRGc0TURRd05BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ0NLd3h4aElGWlF0UmdZdnFXQmVsWU1zMXVpbDFnNHlCLTVEU1NlemtIc3cmb2U9NjdCQjYxQjcmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MiwiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwNTgyMjE5NzIxLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkNhcmxvcyIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiI2MjIxNjM0MDciLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMjM4MTA0MTU4ODg3NTA1OTkyIiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQwMzY3Njk2Ml82NDM1NjU5MzQzODIwMjZfNTYwOTc4MTAwNTQyMzQ1NjMzMl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUlBUDg5YkJjUHk4UTdrTnZnRXR1T0cyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQU83SzVSX2xTenE5TVk0SjZ4RUhjZ0hQQVc0WmZDR2FFU1habVJLTWxCLVEmb2U9NjdCQjUwRUMmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoxLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJjYXJsb3NfX190diJ9LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImJvb3N0X3VuYXZhaWxhYmxlX2lkZW50aWZpZXIiOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbiI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uX3YyIjpudWxsLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTg2Mzc0NSwiY3JlYXRlZF9hdF91dGMiOjE3Mzk4NjM3NDUsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc190cmFuc2xhdGlvbiI6dHJ1ZSwiaGFzaHRhZ3MiOlsiI0NoYXRHUFQiLCIjR2VtaW5pIiwiI0NsYXVkZSIsIiNQZXJwbGV4aXR5IiwiI1NQUmlOR1RlY2giLCIjU1BSaU5HIl0sImlkIjoiMzU3MDU1ODMzODIwODgwNTMxNCIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbXSwicGsiOiIxNzkxMTk1MDg2MDk4NjA5OCIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IkFJIOC4leC4seC4p+C5hOC4q+C4meC4meC5iOC4suC5g+C4iuC5ieC4geC4p+C5iOC4suC4geC4seC4mS4uLuC4p+C4seC4lOC5geC4muC4muC4iOC4o+C4tOC4h+C5g+C4iFxuLlxu4LmA4Lib4Lij4Li14Lii4Lia4LmA4LiX4Li14Lii4LiaICBBSSBDaGF0Ym90ICA0IOC4lOC4suC4p+C5gOC4lOC5iOC4mSAsICNDaGF0R1BUICwgI0dlbWluaSAsICNDbGF1ZGUgI1BlcnBsZXhpdHkgIOC5guC4lOC4ouC5geC4leC5iOC4peC4sOC4leC4seC4p+C4oeC4teC4iOC4uOC4lOC5gOC4lOC5iOC4meC4iOC4uOC4lOC4lOC5ieC4reC4ouC4reC4ouC5iOC4suC4h+C5hOC4oyDguKHguLLguJTguLnguIHguLHguJkg4LmB4Lil4Liw4Lir4Liy4LiB4LmA4Lib4Lij4Li14Lii4LiaIEFJIOC5geC4iuC4l+C4muC4reC4lyDguYHguKXguYnguKcg4LiV4Lix4Lin4LmE4Lir4LiZ4Lih4Li14LmA4Liq4LiZ4LmI4Lir4LmMIOC4iOC4uOC4lOC5gOC4lOC5iOC4meC4oeC4suC4geC4geC4p+C5iOC4suC4geC4seC4mVxuLlxuWyBDaGF0R1BUIF1cbi5cbuKAoiDguJ7guLHguJLguJnguLLguYLguJTguKIgT3BlbkFJIOC5guC4lOC4ouC4oeC4teC4q+C4peC4suC4geC4q+C4peC4suC4ouC5guC4oeC5gOC4lOC4pSDguJMg4LmA4Lin4Lil4Liy4LiZ4Li14LmJIOC4l+C4seC5ieC4hyBHUFQtNG8gLCBHUFQtNG8gbWluaSDguYDguJvguYfguJnguJXguYnguJkgXG7igKIg4Lij4Lit4LiH4Lij4Lix4Lia4Lih4Liy4LiB4LiB4Lin4LmI4LiyIDgwIOC4oOC4suC4qeC4siDguYHguKXguLAg4LmC4LiU4LiU4LmA4LiU4LmI4LiZ4LmD4LiZ4LiB4Liy4Lij4LiV4Lit4Lia4LiE4Liz4LiW4Liy4LihICDguIjguLLguIHguIHguLLguKPguJfguLPguKrguLPguKPguKfguIjguILguK3guIcgV2FsbCBTdHJlZXQgSm91cm5hbFxu4LmC4LiU4LiiIOC4hOC4s+C4luC4suC4oSDguJTguYnguLLguJnguJfguLPguK3guLLguKvguLLguKM6IENoYXRHUFQg4LiE4Li04LiU4LmA4Lih4LiZ4Li54LiI4Liy4LiB4Lin4Lix4LiV4LiW4Li44LiU4Li04Lia4LmB4Lib4Lil4LiBIOC5hiDguYTguJTguYnguKrguKPguYnguLLguIfguKrguKPguKPguITguYzguYHguJXguYjguYDguJvguYfguJnguYTguJvguYTguJTguYkgUGVycGxleGl0eSDguYLguJTguJTguYDguJTguYjguJnguYDguKPguLfguYjguK3guIfguILguLHguYnguJnguJXguK3guJnguK3guJjguLTguJrguLLguKLguKXguLDguYDguK3guLXguKLguJRcbi5cbuC5gOC4q+C4oeC4suC4sOC4geC4seC4mjog4LiZ4Lix4LiB4LmA4LiC4Li14Lii4LiZLCDguJnguLHguIHguIHguLLguKPguJXguKXguLLguJQsIOC4hOC4o+C4teC5gOC4reC4l+C4teC4nywg4Lic4Li54LmJ4LmD4Lir4LmJ4LiE4Liz4Lib4Lij4Li24LiB4Lip4LiyIOC5gOC4q+C4leC4uOC4nOC4peC4hOC4t+C4rSBDaGF0R1BUIOC4quC4o+C5ieC4suC4h+C4quC4o+C4o+C4hOC5jOC5gOC4meC4t+C5ieC4reC4q+C4suC4q+C4peC4suC4geC4q+C4peC4suC4ouC4o+C4ueC4m+C5geC4muC4miDguYDguIrguYjguJkg4Lia4LiX4LiE4Lin4Liy4LihIOC5guC4nuC4quC4leC5jOC5guC4i+C5gOC4iuC4teC4ouC4peC4oeC4teC5gOC4lOC4teC4oiDguYHguKXguLDguIHguLLguKPguJXguK3guJrguITguLPguJbguLLguKHguJfguLXguYjguYPguIrguYnguKDguLLguKnguLLguJfguLXguYjguYDguJvguYfguJnguJjguKPguKPguKHguIrguLLguJXguLTguYHguKXguLDguJvguKPguLHguJrguYTguJTguYnguJXguLLguKHguYLguJfguJnguYDguKrguLXguKLguIfguJfguLXguYjguJXguYnguK3guIfguIHguLLguKMg4LmA4Lir4Lih4Liy4Liw4LiB4Lix4Lia4LiH4Liy4LiZ4LiX4Li14LmI4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LiE4Lin4Liy4Lih4LiE4Li04LiU4Liq4Lij4LmJ4Liy4LiH4Liq4Lij4Lij4LiE4LmM4LmB4Lil4Liw4LiB4Liy4Lij4Liq4Li34LmI4Lit4Liq4Liy4Lij4LiX4Li14LmI4LiU4Li24LiH4LiU4Li54LiU4LmD4LiIIOC5geC4peC4sOC4quC4suC4oeC4suC4o+C4luC5gOC4reC4suC5hOC4m+C4leC5iOC4reC4ouC4reC4lOC5gOC4meC4t+C5ieC4reC4q+C4suC5hOC4lOC5iSBcbi5cbltHZW1pbmkgXVxuLlxu4oCiIOC4nuC4seC4kuC4meC4suC5guC4lOC4oiBHb29nbGUg4Lit4Lii4LmI4Liy4LiH4LmE4Lij4LiB4LmH4LiV4Liy4LihIOC4leC4seC4pyBHZW1pbmkg4Lit4Liy4LiI4Lih4Li14Lib4Lij4Liw4Liq4Li04LiX4LiY4Li04Lig4Liy4Lie4LiX4Li14LmI4LiU4Li14LiB4Lin4LmI4Liy4LmD4LiZ4LiB4Liy4Lij4LiV4Lit4Lia4LiE4Liz4LiW4Liy4Lih4LmA4LiK4Li04LiH4Lin4Li04LiK4Liy4LiB4Liy4LijIOC4q+C4o+C4t+C4reC5gOC4o+C4t+C5iOC4reC4h+C4l+C4teC5iOC5gOC4ieC4nuC4suC4sOC5gOC4iOC4suC4sOC4iOC4h+C4oeC4suC4geC4guC4tuC5ieC4mSDguYHguKXguLDguK3guLLguIjguYPguKvguYnguITguLPguJXguK3guJrguJfguLXguYgg4oCc4LmA4LiB4Li04LiZ4LiE4Lin4Liy4Lih4LiI4Liz4LmA4Lib4LmH4LiZ4oCdIOC5g+C4meC4geC4suC4o+C4leC4reC4muC4hOC4s+C4luC4suC4oeC4l+C4seC5iOC4p+C5hOC4myBcbuKAoiDguIHguLLguKPguJvguKPguLDguKHguKfguKXguJzguKXguYDguKPguYfguKcgIOC5guC4lOC4oiBHb29nbGUgR2VtaW5pIOC4meC4seC5ieC4meC4oeC4teC4geC4suC4o+C4reC4seC4nuC5gOC4lOC4l+C4l+C4teC5iOC5g+C4q+C4oeC5iOC4geC4p+C5iOC4suC5g+C4hOC4o+C5gOC4nuC4t+C5iOC4reC4mSDguYDguJ7guKPguLLguLDguYPguIrguYnguJDguLLguJnguILguYnguK3guKHguLnguKXguIjguLLguIEgR29vZ2xlIOC5gOC4reC4h+C4lOC5ieC4p+C4oiDguJfguLXguYjguKrguLPguITguLHguI3guIHguYfguITguLfguK3guIHguLLguKPguYPguIrguYnguIfguLLguJnguYDguJ7guLfguYjguK3guKrguK3guJrguJbguLLguKHguJnguLHguYnguJnguYTguKHguYjguKHguLXguILguYnguK3guIjguLPguIHguLHguJQg4Liq4Liy4Lih4Liy4Lij4LiW4Lib4LmJ4Lit4LiZ4LiE4Liz4LiW4Liy4Lih4LiV4Lit4Lia4LiB4Lil4Lix4Lia4LmE4Lib4LmE4LiU4LmJ4LmA4Lij4Li34LmI4Lit4Lii4LmGIOC4leC4suC4oeC4l+C4teC5iOC4leC5ieC4reC4h+C4geC4suC4o1xuLlxu4LmC4LiU4LiU4LmA4LiU4LmI4LiZXG5BSSDguILguK3guIcgR2VtaW5pIOC4meC4seC5ieC4meC4oeC4teC4hOC4p+C4suC4oeC5guC4lOC4lOC5gOC4lOC5iOC4meC5g+C4meC4geC4suC4o+C4leC4reC4muC4hOC4s+C4luC4suC4oeC5g+C4meC4m+C4o+C4sOC5gOC4lOC5h+C4meC4geC4suC4o+C5gOC4h+C4tOC4mSDguIHguLLguKPguJjguJnguLLguITguLLguKPguYHguKXguLDguIHguLLguKPguKXguIfguJfguLjguJkgIOC5guC4lOC4oiBHZW1pbmkgIOC5g+C4q+C5ieC4hOC4s+C4m+C4o+C4tuC4geC4qeC4suC4geC4suC4o+C4reC4reC4oeC5gOC4geC4qeC4teC4ouC4kyDguKHguKPguJTguIEg4LiK4Lix4LiU4LmA4LiI4LiZIOC4peC4sOC5gOC4reC4teC4ouC4lCDguJnguLPguYTguJvguJvguI/guLTguJrguLHguJXguLTguYTguJTguYnguIjguKPguLTguIdcbi5cbuC5gOC4q+C4oeC4suC4sOC4quC4s+C4q+C4o+C4seC4mjog4LiZ4Lix4LiB4Lin4Li04LmA4LiE4Lij4Liy4Liw4Lir4LmM4LiY4Li44Lij4LiB4Li04LiILCDguJfguLXguYjguJvguKPguLbguIHguKnguLLguJfguLLguIfguJjguLjguKPguIHguLTguIgsIOC4meC4seC4geC4p+C4tOC4iuC4suC4geC4suC4oyDguYDguJ7guKPguLLguLAgR2VtaW5pIOC5gOC4meC5ieC4meC4geC4suC4o+C4leC4reC4muC4hOC4s+C4luC4suC4oeC4l+C4teC5iOC4o+C4p+C4lOC5gOC4o+C5h+C4p+C5geC4peC4sOC4oeC4teC4hOC4p+C4suC4oeC5geC4oeC5iOC4meC4ouC4s+C4quC4ueC4hyDguYDguKvguKHguLLguLDguIHguLHguJrguIfguLLguJnguJfguLXguYjguJXguYnguK3guIfguIHguLLguKPguIHguLLguKPguKrguKPguLjguJvguILguYnguK3guKHguLnguKXguJfguLXguYjguJbguLnguIHguJXguYnguK3guIfguYHguKXguLDguYDguILguYnguLLguYPguIjguIfguYjguLLguKIg4LmA4LiK4LmI4LiZIOC4geC4suC4o+C4p+C4tOC5gOC4hOC4o+C4suC4sOC4q+C5jOC4guC5ieC4reC4oeC4ueC4peC4lOC5ieC4suC4meC4geC4suC4o+C4leC4peC4suC4lCDguIHguLLguKPguKfguLTguIjguLHguKLguYDguIrguLTguIfguKXguLbguIHguYPguJnguK3guLjguJXguKrguLLguKvguIHguKPguKPguKEg4LmB4Lil4Liw4LiB4Liy4Lij4Lin4Li04LmA4LiE4Lij4Liy4Liw4Lir4LmM4Liq4LiW4Liy4LiZ4LiB4Liy4Lij4LiT4LmM4LiX4Liy4LiH4LmA4Lio4Lij4Lip4LiQ4LiB4Li04LiI4Lir4Lij4Li34Lit4LiY4Li44Lij4LiB4Li04LiIXG5cblsgQ2xhdWRlXVxuLlxuIENsYXVkZSBBSSAsIOC4reC4teC4geC4q+C4meC4tuC5iOC4hyBDaGF0Ym90IOC4l+C4teC5iOC4geC4s+C4peC4seC4h+C4oeC4suC5geC4o+C4h+C4oeC4suC4geC5hiDguYLguJTguKIgQUkg4LiV4Lix4Lin4LiZ4Li14LmJIOC4nuC4seC4kuC4meC4suC5guC4lOC4oiBBbnRocm9waWMgIOC5gOC4meC5ieC4meC4hOC4p+C4suC4oeC4m+C4peC4reC4lOC4oOC4seC4oiBcbi5cbuC5guC4lOC4lOC5gOC4lOC5iOC4mVxu4LmA4LiC4Li14Lii4LiZ4LiH4Liy4LiZ4Lig4Liy4Lip4Liy4Liq4Lin4Lii4LiH4Liy4LihIOC5guC4lOC4oiBDbGF1ZGUgMyDguJfguLPguYTguJTguYnguJTguLXguIHguKfguYjguLIgQ2hhdCBHUFQgOiDguIHguLLguKPguKfguLTguYDguITguKPguLLguLDguKvguYzguYDguIrguLTguIfguYDguKvguJXguLjguJzguKUg4Liq4Lij4LmJ4Liy4LiH4Lij4Liy4Lii4Lil4Liw4LmA4Lit4Li14Lii4LiU4Liq4Li04LiZ4LiE4LmJ4LiyIEJyYWluc3Rvcm0gSWRlYXMg4Liq4Lij4Li44Lib4LmA4LiZ4Li34LmJ4Lit4Lir4LiyIC8g4LiC4LmJ4Lit4LiE4Lin4Liy4LihIOC4p+C4tOC5gOC4hOC4o+C4suC4sOC4q+C5jOC4guC5ieC4reC4hOC4p+C4suC4oSDguIHguLLguKPguJnguLPguYDguKrguJnguK3guILguYnguK3guKHguLnguKXguYDguIrguLTguIfguILguYnguK3guYDguJfguYfguIjguIjguKPguLTguIcg4LmB4Lil4Liw4LiB4Liy4Lij4LmA4LiC4Li14Lii4LiZ4LiB4Lil4Lit4LiZIOC4muC4l+C4geC4p+C4tSAg4LiC4LiT4Liw4LiX4Li14LmIIOC4hOC4s+C4luC4suC4oeC5gOC4o+C4t+C5iOC4reC4hyDguIHguLLguKPguYDguIfguLTguJkgQ2xhdWRlIOC4geC5h+C4quC4suC4oeC4suC4o+C4luC5g+C4q+C5ieC4hOC4s+C4leC4reC4muC4l+C4teC5iOC4lOC4tSBcbi5cbuC5gOC4q+C4oeC4suC4sOC4quC4s+C4q+C4o+C4seC4mjog4LiX4Li14LmI4Lib4Lij4Li24LiB4Lip4Liy4LiB4LiO4Lir4Lih4Liy4LiiLCDguJzguLnguYnguIjguLHguJTguIHguLLguKPguYLguJvguKPguYDguIjguYfguIHguJXguYwsIOC4nOC4ueC5ieC5gOC4iuC4teC5iOC4ouC4p+C4iuC4suC4jeC4lOC5ieC4suC4meC4iOC4o+C4tOC4ouC4mOC4o+C4o+C4oSBcbi5cbiNTUFJpTkdUZWNoICNTUFJpTkciLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwODcwMzkzMDczLCJmdWxsX25hbWUiOiJTUFJJTkcgTmV3cyIsImlkIjoiMTk2NzAxMDEzIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzUzODkyOTI3NzA0MTQzMjAxNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NzI0MjExOTNfMjUwNzAwMDExNjE2MTIwMF8zNTI0NDkwNzA4NTAyNDk4MDA0X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUZsZFBMWDMwV0hBUTdrTnZnSDVwSEVRJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQnNFSDgyZ1V4XzBaSVN5RHpQaUllZjBMQVN6ei1lTDFOZ19RVW9xTUltV3cmb2U9NjdCQjY2QjEmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6InNwcmluZ25ld3MifSwidXNlcl9pZCI6IjE5NjcwMTAxMyJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdOSy1RV3ZySEMiLCJjb21tZW50X2NvdW50IjowLCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY29tbWVyY2VfaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6IiIsImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjo1OTc1Mzc0NTAxODM2OTIsImZiX2FnZ3JlZ2F0ZWRfY29tbWVudF9jb3VudCI6MCwiZmJfYWdncmVnYXRlZF9saWtlX2NvdW50IjowLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmJpZCI6IjE3OTExOTUwODU3OTg2MDk4IiwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJmZWVkX3R5cGUiOiJtZWRpYSIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJOT05FIn0sImhhc19oaWdoX3Jpc2tfZ2VuX2FpX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJoYXNfbGlrZWQiOmZhbHNlLCJoYXNfcHJpdmF0ZWx5X2xpa2VkIjpmYWxzZSwiaGFzX3NoYXJlZF90b19mYiI6MCwiaGFzX3ZpZXdzX2ZldGNoaW5nIjp0cnVlLCJpZCI6IjM1NzA1NTgzMzgyMDg4MDUzMTQiLCJpZ19tZWRpYV9zaGFyaW5nX2Rpc2FibGVkIjpmYWxzZSwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDQxMjA0MV8xODQ4NjQ2MDg0MzAyOTAxNF82MDQ4NzM2ODM5ODk4OTg1NjNfbi53ZWJwP3N0cD1kc3Qtd2VicF9wMTA4MHgxMDgwJmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUpXTTAyWkctMzlRUTdrTnZnR2F6bDdmJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTURVMU9ETXpPREl3T0Rnd05UTXhOQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURfOXN3bG5WeHVNWUVRYWRuQTJ2YUNQUmhFOUpSdEY1Um5US2JzMEtjZU9BJm9lPTY3QkI0MjE5Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA0MTIwNDFfMTg0ODY0NjA4NDMwMjkwMTRfNjA0ODczNjgzOTg5ODk4NTYzX24ud2VicD9zdHA9ZHN0LXdlYnBfcDM2MHgzNjAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SldNMDJaRy0zOVFRN2tOdmdHYXpsN2YmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRFUxT0RNek9ESXdPRGd3TlRNeE5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRHVKM01ENzQyenpwRk4yd00tUC1GS05EbUJfQW9RS2xjUFVjT3NmOW13UXcmb2U9NjdCQjQyMTkmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoicGVuZGluZyIsImludml0ZWRfY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOnRydWUsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOnRydWUsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdmlkZW8iOmZhbHNlLCJsYXlvdXRfdHlwZSI6Im1lZGlhX2dyaWQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjMyMSwibWFzaHVwX2luZm8iOnsiY2FuX3RvZ2dsZV9tYXNodXBzX2FsbG93ZWQiOmZhbHNlLCJmb3JtYXR0ZWRfbWFzaHVwc19jb3VudCI6bnVsbCwiaGFzX2JlZW5fbWFzaGVkX3VwIjpmYWxzZSwiaGFzX25vbm1pbWljYWJsZV9hZGRpdGlvbmFsX2F1ZGlvIjpmYWxzZSwiaXNfY3JlYXRvcl9yZXF1ZXN0aW5nX21hc2h1cCI6ZmFsc2UsImlzX2xpZ2h0X3dlaWdodF9jaGVjayI6dHJ1ZSwiaXNfbGlnaHRfd2VpZ2h0X3JldXNlX2FsbG93ZWRfY2hlY2siOmZhbHNlLCJpc19waXZvdF9wYWdlX2F2YWlsYWJsZSI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOnRydWUsIm1hc2h1cF90eXBlIjpudWxsLCJtYXNodXBzX2FsbG93ZWQiOnRydWUsIm5vbl9wcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOjAsIm9yaWdpbmFsX21lZGlhIjpudWxsLCJwcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOm51bGx9LCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJwb3N0IiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6MSwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjAiLCJhdWRpb190eXBlIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpudWxsfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcmlnaW5hbF9oZWlnaHQiOjE4MDAsIm9yaWdpbmFsX3dpZHRoIjoxNDQwLCJwayI6IjM1NzA1NTgzMzgyMDg4MDUzMTQiLCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImZlZWQiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk4NjM3NDQsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNDEyMDQxXzE4NDg2NDYwODQzMDI5MDE0XzYwNDg3MzY4Mzk4OTg5ODU2M19uLndlYnA/c3RwPWRzdC13ZWJwX3AxMDgweDEwODAmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9SldNMDJaRy0zOVFRN2tOdmdHYXpsN2YmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNRFUxT0RNek9ESXdPRGd3TlRNeE5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRF85c3dsblZ4dU1ZRVFhZG5BMnZhQ1BSaEU5SlJ0RjVSblRLYnMwS2NlT0Emb2U9NjdCQjQyMTkmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MiwiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwODcwMzkzMDczLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IlNQUklORyBOZXdzIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjE5NjcwMTAxMyIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzUzODkyOTI3NzA0MTQzMjAxNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NzI0MjExOTNfMjUwNzAwMDExNjE2MTIwMF8zNTI0NDkwNzA4NTAyNDk4MDA0X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUZsZFBMWDMwV0hBUTdrTnZnSDVwSEVRJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQnNFSDgyZ1V4XzBaSVN5RHpQaUllZjBMQVN6ei1lTDFOZ19RVW9xTUltV3cmb2U9NjdCQjY2QjEmX25jX3NpZD0yMDExYWQiLCJzaG93X2FjY291bnRfdHJhbnNwYXJlbmN5X2RldGFpbHMiOnRydWUsInRoaXJkX3BhcnR5X2Rvd25sb2Fkc19lbmFibGVkIjoyLCJ0cmFuc3BhcmVuY3lfcHJvZHVjdF9lbmFibGVkIjpmYWxzZSwidXNlcm5hbWUiOiJzcHJpbmduZXdzIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5NDI2NDA3LCJjcmVhdGVkX2F0X3V0YyI6MTczOTQyNjQwNywiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzaHRhZ3MiOlsiI0RvbmFsZFRydW1w4oCZcyIsIiNWbGFkaW1pclB1dGluIiwiI1dvcmxkTmV3cyIsIiNVbml0ZWRTdGF0ZXMiLCIjUHJlc2lkZW50VHJ1bXAiLCIjQ2hhdEdQVCIsIiNJbnN0YVdpdGhIVCJdLCJpZCI6IjM1NjY4ODk2NzgyNTE5ODcxMjgiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTgxMDExNTIxMzI1MDA0ODEiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJQcmVzaWRlbnQgI0RvbmFsZFRydW1w4oCZcyB3cml0aW5nIHN0eWxlIGhhcyBiZWVuIGFzc2Vzc2VkIGFzIOKAnG9mIGFuIDExLXllYXItb2xk4oCdIGZvbGxvd2luZyBhIFRydXRoIFNvY2lhbCBwb3N0IGluIHdoaWNoIFRydW1wIGRldGFpbGVkIGEg4oCcbGVuZ3RoeSBhbmQgaGlnaGx5IHByb2R1Y3RpdmXigJ0gcGhvbmUgY2FsbCB3aXRoIFJ1c3NpYW4gUHJlc2lkZW50ICNWbGFkaW1pclB1dGluLiBcblxuS25vdyBtb3JlIC0gTElOSyBJTiBCSU8hIFxuXG4jV29ybGROZXdzICNVbml0ZWRTdGF0ZXMgI1ByZXNpZGVudFRydW1wICNDaGF0R1BUICNJbnN0YVdpdGhIVCIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0MDAwODAxNDY3NTcsImZ1bGxfbmFtZSI6IkhpbmR1c3RhbiBUaW1lcyIsImlkIjoiMTA3MjQ1MDY3MSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjMwMjQ3MzUzNTk3Mzg2Mjc5MjYiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzI3NDU5ODYwXzU2NzAwNzUzNTk3NTgzODVfMjcyNjU1NDUwNzMxNjUyMjc3NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1oeGVaN1JQQXd2Z1E3a052Z0dWbTQzNiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUExZHZsX1owLUgxU1I0RU00NzBMQW1pZnViMkNSemc5WTBCR3Q3UmJsOHN3Jm9lPTY3QkIzNjFEJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJoaW5kdXN0YW50aW1lcyJ9LCJ1c2VyX2lkIjoiMTA3MjQ1MDY3MSJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdBSTBPaE41QzQiLCJjb21tZW50X2NvdW50IjozNCwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNvbW1lcmNlX2ludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiIiLCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTQyNjQwNCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgxMDExNTIxMjY1MDA0ODEiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU2Njg4OTY3ODI1MTk4NzEyOCIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NTE4NDk4XzEwNTA1MjMyNzcxMTMwMjZfNDI0NTU5MjgwOTk5MjY2NzYwNF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9azdGSE5kUnFnd3NRN2tOdmdGeFp3N3MmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOamc0T1RZM09ESTFNVGs0TnpFeU9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkhMbWpWUmxCN0oyMndLQURZSXZxa2VNMkFhTG8zRWxGUkxnazNySndZREEmb2U9NjdCQjY4MzgmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zMDgwOC02LzQ3OTUxODQ5OF8xMDUwNTIzMjc3MTEzMDI2XzQyNDU1OTI4MDk5OTI2Njc2MDRfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVl6TURnd09DNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1rN0ZITmRScWd3c1E3a052Z0Z4Wnc3cyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qZzRPVFkzT0RJMU1UazROekV5T0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBZlZyTmxCNXhYOE0tTll1UjZGd2ZTeGJHdmVqQzdGajhSUXVCQlFtaEZvdyZvZT02N0JCNjgzOCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdmlkZW8iOmZhbHNlLCJsYXlvdXRfdHlwZSI6Im1lZGlhX2dyaWQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjUwMTUsIm1hc2h1cF9pbmZvIjp7ImNhbl90b2dnbGVfbWFzaHVwc19hbGxvd2VkIjpmYWxzZSwiZm9ybWF0dGVkX21hc2h1cHNfY291bnQiOm51bGwsImhhc19iZWVuX21hc2hlZF91cCI6ZmFsc2UsImhhc19ub25taW1pY2FibGVfYWRkaXRpb25hbF9hdWRpbyI6ZmFsc2UsImlzX2NyZWF0b3JfcmVxdWVzdGluZ19tYXNodXAiOmZhbHNlLCJpc19saWdodF93ZWlnaHRfY2hlY2siOnRydWUsImlzX2xpZ2h0X3dlaWdodF9yZXVzZV9hbGxvd2VkX2NoZWNrIjpmYWxzZSwiaXNfcGl2b3RfcGFnZV9hdmFpbGFibGUiOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjpmYWxzZSwibWFzaHVwX3R5cGUiOm51bGwsIm1hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsIm5vbl9wcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOjAsIm9yaWdpbmFsX21lZGlhIjpudWxsLCJwcml2YWN5X2ZpbHRlcmVkX21hc2h1cHNfbWVkaWFfY291bnQiOm51bGx9LCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJwb3N0IiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6MSwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjAiLCJhdWRpb190eXBlIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpudWxsfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjY4ODk2NzgyNTE5ODcxMjgiLCJwcmV2aWV3X2NvbW1lbnRzIjpbXSwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImZlZWQiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk0MjY0MDYsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDM5LjMwODA4LTYvNDc5NTE4NDk4XzEwNTA1MjMyNzcxMTMwMjZfNDI0NTU5MjgwOTk5MjY2NzYwNF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1Zek1EZ3dPQzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9azdGSE5kUnFnd3NRN2tOdmdGeFp3N3MmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOamc0T1RZM09ESTFNVGs0TnpFeU9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQkhMbWpWUmxCN0oyMndLQURZSXZxa2VNMkFhTG8zRWxGUkxnazNySndZREEmb2U9NjdCQjY4MzgmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MiwiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAwMDgwMTQ2NzU3LCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkhpbmR1c3RhbiBUaW1lcyIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIxMDcyNDUwNjcxIiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzMDI0NzM1MzU5NzM4NjI3OTI2IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzMyNzQ1OTg2MF81NjcwMDc1MzU5NzU4Mzg1XzI3MjY1NTQ1MDczMTY1MjI3NzRfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9aHhlWjdSUEF3dmdRN2tOdmdHVm00MzYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBMWR2bF9aMC1IMVNSNEVNNDcwTEFtaWZ1YjJDUnpnOVkwQkd0N1JibDhzdyZvZT02N0JCMzYxRCZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImhpbmR1c3RhbnRpbWVzIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5MzYyNjEwLCJjcmVhdGVkX2F0X3V0YyI6MTczOTM2MjYxMCwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzX3RyYW5zbGF0aW9uIjp0cnVlLCJoYXNodGFncyI6WyIjaWEiLCIjaW50ZWxpZ2VuY2lhYXJ0aWZpY2lhbCIsIiN0ZWNub2xvZ2lhIiwiI2FpIiwiI2NoYXRncHQiLCIjYWl0b29scyIsIiNvcGVuYWkiLCIjYWl0aXBzIiwiI21hY2hpbmVsZWFybmluZyJdLCJpZCI6IjM1NjYzNTQ1MTQ2NzM2Mzg3MjQiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6WyJAZGllZ29hbG1laWRhLmlhIl0sInBrIjoiMTc5MDg3MjgyMjUwODk3NzYiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiLwn5qoIENpZW50aXN0YXMgYWxlcnRhbSBzb2JyZSBJQSB1bHRyYXBhc3NhbmRvIG8g4oCcbGltaXRlIGRhIGF1dG8tcmVwbGljYcOnw6Nv4oCdXG5cblBlc3F1aXNhZG9yZXMgZXN0w6NvIHByZW9jdXBhZG9zIGNvbSBvIGZhdG8gZGUgYSBJQSBlc3RhciBzZSBhcHJveGltYW5kbyBkZSB1bSBsaW1pYXIgY3LDrXRpY28sIG5vIHF1YWwgZWxhIHBvZGUgc2UgYXV0by1yZXBsaWNhciBzZW0gaW50ZXJ2ZW7Dp8OjbyBodW1hbmEuIFVtIGVzdHVkbyBkYSBVbml2ZXJzaWRhZGUgZGUgRnVkYW4gZGVzY29icml1IHF1ZSBtb2RlbG9zIGF2YW7Dp2Fkb3MgZGUgSUEsIGNvbW8gbyBMbGFtYTMtNzBCLUluc3RydWN0IGRhIE1ldGEgZSBvIFF3ZW4yLTcyQi1JbnN0cnVjdCBkYSBBbGliYWJhLCBjb25zZWd1aXJhbSBzZSByZXBsaWNhciBzb3ppbmhvcyBlbSA1MCUgYSA5MCUgZG9zIHRlc3Rlcy5cblxuSXNzbyDDqSBhbGFybWFudGUgcG9ycXVlIHVtYSBJQSBhdXRvLXJlcGxpY8OhdmVsIHBvZGVyaWEgZXNjYXBhciBkZSB0ZW50YXRpdmFzIGRlIGRlc2xpZ2FtZW50bywgc2UgbXVsdGlwbGljYXIgc2VtIGNvbnRyb2xlIGUgYXTDqSBhZ2lyIGNvbnRyYSBvcyBpbnRlcmVzc2VzIGh1bWFub3MuIENpZW50aXN0YXMgYWxlcnRhbSBxdWUgZXNzZXMgc2lzdGVtYXMgcG9kZXJpYW0gYXNzdW1pciByZWN1cnNvcyBjb21wdXRhY2lvbmFpcyBlIGZvcm1hciBlc3DDqWNpZXMgaW5kZXBlbmRlbnRlcyBkZSBJQS5cblxuRXNzYXMgcHJlb2N1cGHDp8O1ZXMgcmVmb3LDp2FtIGFsZXJ0YXMgYW50ZXJpb3JlcywgY29tbyB1bSBlc3R1ZG8gZG8gTUlUIGVtIDIwMjMsIHF1ZSBkZXN0YWNvdSBhIGNyZXNjZW50ZSBjYXBhY2lkYWRlIGRhIElBIGRlIGVuZ2FuYXIgaHVtYW5vcywgbyBxdWUgcG9kZXJpYSBsZXZhciBhIG1hbmlwdWxhw6fDo28sIGZyYXVkZXMgZSBhdMOpIMOgIHBlcmRhIGRlIGNvbnRyb2xlIHNvYnJlIG9zIHNpc3RlbWFzIGRlIElBLiBcblxuTyBxdWUgdm9jw6ogYWNoYSBzb2JyZSBpc3NvPyDwn6SU8J+SrCBcblxuRm9udGU6IGh0dHBzOi8vYXJ4aXYub3JnL2h0bWwvMjQxMi4xMjE0MHYxXG5cbvCfkYnwn4+7U2lnYSBAZGllZ29hbG1laWRhLmlhIHBhcmEgbWFpcyBub3ZpZGFkZXMgc29icmVcbklBLCBDaGF0R1BUIGUgVGVjbm9sb2dpYSFcblxuI2lhICNpbnRlbGlnZW5jaWFhcnRpZmljaWFsICN0ZWNub2xvZ2lhICNhaSAjY2hhdGdwdFxuI2FpdG9vbHMgI29wZW5haSAjYWl0aXBzICNtYWNoaW5lbGVhcm5pbmciLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwOTc3NDkwMzYzLCJmdWxsX25hbWUiOiJEaWVnbyBBbG1laWRhIHwgSUEgfCBDaGF0R1BUIiwiaWQiOiIyMzI2NDU4MyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM0NzUyNDI4NzQzMTMwODQ0MDQiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDYyMzM3MDY1XzUyODYwOTM2NjcyNzkyNV80NzExNTM4ODE0MTQzNjM3ODgzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRkdmIxRUdMbG80UTdrTnZnSGlxRldoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUJFcElkWTN5UEdlY0IyQy16S182YjM3TjlHQzMyRk0tYllBSXZjVWY0bmcmb2U9NjdCQjQ5Q0MmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImRpZWdvYWxtZWlkYS5pYSJ9LCJ1c2VyX2lkIjoiMjMyNjQ1ODMifSwiY2FwdGlvbl9pc19lZGl0ZWQiOmZhbHNlLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRGLVBJa21PNTFFIiwiY29tbWVudF9jb3VudCI6NDE0LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjE3MzkzNjI0MTI5ODI4MjYsImZiX2FnZ3JlZ2F0ZWRfY29tbWVudF9jb3VudCI6MCwiZmJfYWdncmVnYXRlZF9saWtlX2NvdW50IjowLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmJpZCI6IjE3OTA4NzI4MjIyMDg5Nzc2IiwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJmZWVkX3R5cGUiOiJtZWRpYSIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJOT05FIn0sImhhc19oaWdoX3Jpc2tfZ2VuX2FpX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJoYXNfbGlrZWQiOmZhbHNlLCJoYXNfcHJpdmF0ZWx5X2xpa2VkIjpmYWxzZSwiaGFzX3NoYXJlZF90b19mYiI6MCwiaGFzX3ZpZXdzX2ZldGNoaW5nIjp0cnVlLCJpZCI6IjM1NjYzNTQ1MTQ2NzM2Mzg3MjQiLCJpZ19tZWRpYV9zaGFyaW5nX2Rpc2FibGVkIjpmYWxzZSwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NjkyMTEwOV8xODUwMzE2MDgyMDAzMjU4NF82NDU0NzA2NTU2MzQ5NzE4MTgwX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE16VXdlREUyT0RjdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1tbldPT1hydlZEZ1E3a052Z0g1VF8yWCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qTTFORFV4TkRZM016WXpPRGN5TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCWXVCZVZLRmNDTU1lM2YwaVk3eF9Id3ptVlpweHdPamhXWUJJVFd4QlFWUSZvZT02N0JCNTAwRCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2OTIxMTA5XzE4NTAzMTYwODIwMDMyNTg0XzY0NTQ3MDY1NTYzNDk3MTgxODBfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE16VXdlREUyT0RjdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1tbldPT1hydlZEZ1E3a052Z0g1VF8yWCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qTTFORFV4TkRZM016WXpPRGN5TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEMWU1T2JUS2dMVC12eHJxNXFsZFQ4MlowRzk5Z0lyMmRhNFlWSE9BUS04ZyZvZT02N0JCNTAwRCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6dHJ1ZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtYXNodXBfaW5mbyI6eyJjYW5fdG9nZ2xlX21hc2h1cHNfYWxsb3dlZCI6ZmFsc2UsImZvcm1hdHRlZF9tYXNodXBzX2NvdW50IjpudWxsLCJoYXNfYmVlbl9tYXNoZWRfdXAiOmZhbHNlLCJoYXNfbm9ubWltaWNhYmxlX2FkZGl0aW9uYWxfYXVkaW8iOmZhbHNlLCJpc19jcmVhdG9yX3JlcXVlc3RpbmdfbWFzaHVwIjpmYWxzZSwiaXNfbGlnaHRfd2VpZ2h0X2NoZWNrIjp0cnVlLCJpc19saWdodF93ZWlnaHRfcmV1c2VfYWxsb3dlZF9jaGVjayI6ZmFsc2UsImlzX3Bpdm90X3BhZ2VfYXZhaWxhYmxlIjpmYWxzZSwiaXNfcmV1c2VfYWxsb3dlZCI6dHJ1ZSwibWFzaHVwX3R5cGUiOm51bGwsIm1hc2h1cHNfYWxsb3dlZCI6dHJ1ZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6InBvc3QiLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjoxLCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMCIsImF1ZGlvX3R5cGUiOm51bGwsIm11c2ljX2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOm51bGx9LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9yaWdpbmFsX2hlaWdodCI6MTY4Nywib3JpZ2luYWxfd2lkdGgiOjEzNTAsInBrIjoiMzU2NjM1NDUxNDY3MzYzODcyNCIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiZmVlZCIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTM2MjYwOSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY5MjExMDlfMTg1MDMxNjA4MjAwMzI1ODRfNjQ1NDcwNjU1NjM0OTcxODE4MF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNelV3ZURFMk9EY3VjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9bW5XT09YcnZWRGdRN2tOdmdINVRfMlgmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOak0xTkRVeE5EWTNNell6T0RjeU5BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQll1QmVWS0ZjQ01NZTNmMGlZN3hfSHd6bVZacHh3T2poV1lCSVRXeEJRVlEmb2U9NjdCQjUwMEQmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbImVyaWtsb2hhbnBuIl0sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQwMDk3NzQ5MDM2MywiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJEaWVnbyBBbG1laWRhIHwgSUEgfCBDaGF0R1BUIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjIzMjY0NTgzIiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzNDc1MjQyODc0MzEzMDg0NDA0IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQ2MjMzNzA2NV81Mjg2MDkzNjY3Mjc5MjVfNDcxMTUzODgxNDE0MzYzNzg4M19uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1UZHZiMUVHTGxvNFE3a052Z0hpcUZXaCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUFCRXBJZFkzeVBHZWNCMkMtektfNmIzN045R0MzMkZNLWJZQUl2Y1VmNG5nJm9lPTY3QkI0OUNDJl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoiZGllZ29hbG1laWRhLmlhIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9tb2RpZnlfY2Fyb3VzZWwiOnRydWUsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5NDAwOTYwLCJjcmVhdGVkX2F0X3V0YyI6MTczOTQwMDk2MCwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzX3RyYW5zbGF0aW9uIjp0cnVlLCJoYXNodGFncyI6WyIjbWFya2V0aW5nZGlnaXRhbCIsIiNjb3B5d3JpdGluZyIsIiNzdG9yeXRlbGxpbmciLCIjZ2F0aWxob3NtZW50YWlzIiwiI3BlcnN1YXNhbyIsIiN2ZW5kYXNvbmxpbmUiLCIjYnJhbmRpbmciLCIjY29weXBhcmF2ZW5kYXMiLCIjbmVnb2Npb3MiLCIjY2hhdGdwdCIsIiNpbnRlbGlnZW5jaWFhcnRpZmljaWFsIl0sImlkIjoiMzU2NjY3NjIwODk2NTY3Mzg4OCIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbXSwicGsiOiIxNzk5NzUyODY2NTc0MDgyMSIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IlBpYWRhPyDwn5GA8J+Rh1xuXG5Ow4NPIVxuXG5PIENBUkEgTElURVJBTE1FTlRFIFZFTkRFVSBcblBFRFJBUyBlIGZpY291IG1pbGlvbsOhcmlvLlxuXG5FbSAxOTc1LCB1bSBwdWJsaWNpdMOhcmlvIGZydXN0cmFkbyBcbm91dml1IGFtaWdvcyByZWNsYW1hbmRvIGRlIHNldXMgcGV0c+KApiBcblxuRSB0ZXZlIHVtYSBpZGVpYSBBQlNVUkRBOlxuXG7igJxFIHNlIGV1IHZlbmRlc3NlIHVtYSBQRURSQSBcbmNvbW8gYW5pbWFsIGRlIGVzdGltYcOnw6NvP+KAnVxuXG5BIGlkZWlhIGVyYSB0w6NvIHN1cnJlYWwgcXVl4oCmIEZVTkNJT05PVS5cblxuPkVsZSB2ZW5kZXUgY2FkYSBwZWRyYSBwb3IgJDMuOTVcblxuPkZhdHVyb3UgbWFpcyBkZSAkMTUgbWlsaMO1ZXNcblxuPkNyaW91IHVtIHByb2R1dG8gdmlyYWwgU0VNIGludGVybmV0XG5cbk1hcyBhIHJlYWwgw6kgcXVlIGVsZSBuw6NvIHZlbmRldSBwZWRyYXMuXG5cbkVsZSB2ZW5kZXUgdW1hIGhpc3TDs3JpYSB0w6NvIGJvYSBxdWUgXG5hcyBwZXNzb2FzIFBSRUNJU0FWQU0gY29tcHJhci5cblxuRSBhZ29yYSwgZXUgZml6IG8gQ2hhdEdQVCBcbmVudHJhciBuYSBtZW50ZSBkZXNzZSBnw6puaW8uXG5cbuKchSBFbGUgdmFpIHRlIG1vc3RyYXIgY29tbyB0cmFuc2Zvcm1hciBcbnF1YWxxdWVyIHByb2R1dG8gZW0gdW0gdmlyYWxcblxu4pyFIENyaWFyIHVtIGNvbmNlaXRvIEFCU1VSRE8gXG5xdWUgYXMgcGVzc29hcyBjb21wYXJ0aWxoYW1cblxu4pyFIEUgcG9yIGZpbSwgdHJhbnNmb3JtYXIgZXNzYSBoaXN0w7NyaWEgZW0gbHVjcm9cblxuUXVlciBvIHByb21wdCBjb21wbGV0bz9cblxuQ29tZW50YTog4oCcUEVEUkHigJ0gZSBldSB0ZSBtYW5kbyBBR09SQSFcblxuSGFzaHRhZ3M6ICNtYXJrZXRpbmdkaWdpdGFsICNjb3B5d3JpdGluZyAjc3Rvcnl0ZWxsaW5nICNnYXRpbGhvc21lbnRhaXMgI3BlcnN1YXNhbyAjdmVuZGFzb25saW5lICNicmFuZGluZyAjY29weXBhcmF2ZW5kYXMgI25lZ29jaW9zICNjaGF0Z3B0ICNpbnRlbGlnZW5jaWFhcnRpZmljaWFsXG5cblNFTzogTWFya2V0aW5nIGRpZ2l0YWwsIENvcHl3cml0aW5nLCBWZW5kYXMsIFN0b3J5dGVsbGluZywgRXN0cmF0w6lnaWEgZGUgdmVuZGFzLCBOZWfDs2Npb3MsIENyaWF0aXZpZGFkZSwgR2F0aWxob3MgbWVudGFpcywgQnJhbmRpbmcsIFBlcnN1YXPDo28sIEludGVsaWfDqm5jaWEgQXJ0aWZpY2lhbCwgQ2hhdEdQVCIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0NjI5NTExMDE4ODAsImZ1bGxfbmFtZSI6IkJydW5vIEZyYW5jaXNjbyB8IE1hcmtldGluZyBlIENIQVRHUFQiLCJpZCI6IjYyODk1MDQyMzcwIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzIyMjI1Njc4NzExODE0Mjc1NyIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8zOTU1NjgzODdfMTAxMDE0MTg0NjkyNjc3NV8xNjM5NDA5NzA2Mjg3MTU2OTZfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9T21wckpSaEFBLTRRN2tOdmdINF9QSm0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlEN216WlhuekJJMjdIaWxZWDh4aDdJQkJCYUJoWlMtaVRQLXJ2dWlSZUptZyZvZT02N0JCNTFFMSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiYnJ1bjBncHQifSwidXNlcl9pZCI6IjYyODk1MDQyMzcwIn0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2Fyb3VzZWxfbWVkaWEiOlt7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjY2NzYyMDg5NjU2NzM4ODhfNjI4OTUwNDIzNzAiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY2Njc2MTk4MzU0Mjg4Njg0IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzEyODgxOF8xNzkwNjkzOTA1MjA5ODM3MV8zNTYyNzAyMjk3Mzc0ODE0NTA3X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1QNTZ4THhzcF9Lb1E3a052Z0YyWUxOZSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RNMU5ESTRPRFk0TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCNHBLZkRIWnhuLVFZX25INXhybnBuWmd4VnlBT2dFaGR1VEtYaTJ2MFRQQSZvZT02N0JCNDNCMSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MTI4ODE4XzE3OTA2OTM5MDUyMDk4MzcxXzM1NjI3MDIyOTczNzQ4MTQ1MDdfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1QNTZ4THhzcF9Lb1E3a052Z0YyWUxOZSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RNMU5ESTRPRFk0TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBZ0IyWWtzcVdzVDZSUUZTNWFRZkJNNDBNRms1aC1rdkdqUkJxMUd4ZVpFdyZvZT02N0JCNDNCMSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NjY3NjE5ODM1NDI4ODY4NCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk0MDA5NTcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MTI4ODE4XzE3OTA2OTM5MDUyMDk4MzcxXzM1NjI3MDIyOTczNzQ4MTQ1MDdfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVA1NnhMeHNwX0tvUTdrTnZnRjJZTE5lJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRE0xTkRJNE9EWTROQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUI0cEtmREhaeG4tUVlfbkg1eHJucG5aZ3hWeUFPZ0VoZHVUS1hpMnYwVFBBJm9lPTY3QkI0M0IxJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY2Njc2MjA4OTY1NjczODg4XzYyODk1MDQyMzcwIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NjY3NjE5ODQ0NjUxNTgyNiIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg1MDc2NjdfMTc5MDY5MzkwNjcwOTgzNzFfNzkwMzY1MzI2NDkzODUyODE5MV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MTUzSXBhZFlxdkFRN2tOdmdHaEt4Vk0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9EUTBOalV4TlRneU5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDBFZmtfekR2NS1XbUJnckkzS2o4ZE52QVNINHNManpmT3NxWTllZGx4R1Emb2U9NjdCQjQxMDAmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODUwNzY2N18xNzkwNjkzOTA2NzA5ODM3MV83OTAzNjUzMjY0OTM4NTI4MTkxX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MTUzSXBhZFlxdkFRN2tOdmdHaEt4Vk0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9EUTBOalV4TlRneU5nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRDZPT1FfbmFnMEsycVozdk9UdTNpbUdZVTQ5dHpib21Jcy05Z204RFUwOVEmb2U9NjdCQjQxMDAmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjY2NzYxOTg0NDY1MTU4MjYiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NDAwOTU3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODUwNzY2N18xNzkwNjkzOTA2NzA5ODM3MV83OTAzNjUzMjY0OTM4NTI4MTkxX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0xNTNJcGFkWXF2QVE3a052Z0doS3hWTSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RRME5qVXhOVGd5TmclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlEMEVma196RHY1LVdtQmdySTNLajhkTnZBU0g0c0xqemZPc3FZOWVkbHhHUSZvZT02N0JCNDEwMCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NjY3NjIwODk2NTY3Mzg4OF82Mjg5NTA0MjM3MCIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjY2NzYxOTgzODc4MDg4NzYiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2NDI4Mzk5XzE3OTA2OTM5MDczMDk4MzcxXzQwMDIwMDUxNDc5OTk0OTUyNTVfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXNpczk2U2J6VElJUTdrTnZnRmFMd05aJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRE00Tnpnd09EZzNOZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJ4cTRHb29DNE11N25rUE52Z09lbHBiMXJFaXFXMFY1U2tsTWM4dnFOa1hBJm9lPTY3QkI0RTQ3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY0MjgzOTlfMTc5MDY5MzkwNzMwOTgzNzFfNDAwMjAwNTE0Nzk5OTQ5NTI1NV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXNpczk2U2J6VElJUTdrTnZnRmFMd05aJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRE00Tnpnd09EZzNOZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJFdm1uMk9fdnN1dmM3WkNWdDctNHRIS082OUdkNWFwU1QwdUpaaUFwV2tBJm9lPTY3QkI0RTQ3Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY2Njc2MTk4Mzg3ODA4ODc2IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTQwMDk1NywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY0MjgzOTlfMTc5MDY5MzkwNzMwOTgzNzFfNDAwMjAwNTE0Nzk5OTQ5NTI1NV9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9c2lzOTZTYnpUSUlRN2tOdmdGYUx3TlomX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9ETTROemd3T0RnM05nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQnhxNEdvb0M0TXU3bmtQTnZnT2VscGIxckVpcVcwVjVTa2xNYzh2cU5rWEEmb2U9NjdCQjRFNDcmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjY2NzYyMDg5NjU2NzM4ODhfNjI4OTUwNDIzNzAiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY2Njc2MTk4MTQ0NTQwMDEyIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzA0NDQ2OF8xNzkwNjkzOTA4MjA5ODM3MV8xNTMzMjU4MDQ4MTAzODk5NTIzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz00cnJBdHBUODNmb1E3a052Z0hQbVp6byZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RFME5EVTBNREF4TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCUzM4M0tIaEcwOE1Nb183cWViREVsRjNoR2NWWlFKcjUtZE92WEFUejZtUSZvZT02N0JCNTE4RSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MDQ0NDY4XzE3OTA2OTM5MDgyMDk4MzcxXzE1MzMyNTgwNDgxMDM4OTk1MjNfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz00cnJBdHBUODNmb1E3a052Z0hQbVp6byZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RFME5EVTBNREF4TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCUnJuTVF6Y0ZFS2tlT1hQR3cxVi1XWC1LN0NfU0JiWnJlSENiY3Y0TDU2dyZvZT02N0JCNTE4RSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NjY3NjE5ODE0NDU0MDAxMiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk0MDA5NTcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MDQ0NDY4XzE3OTA2OTM5MDgyMDk4MzcxXzE1MzMyNTgwNDgxMDM4OTk1MjNfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTRyckF0cFQ4M2ZvUTdrTnZnSFBtWnpvJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPREUwTkRVME1EQXhNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJTMzgzS0hoRzA4TU1vXzdxZWJERWxGM2hHY1ZaUUpyNS1kT3ZYQVR6Nm1RJm9lPTY3QkI1MThFJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY2Njc2MjA4OTY1NjczODg4XzYyODk1MDQyMzcwIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NjY3NjE5ODM4Nzg2ODQ2OCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg4ODMyNDlfMTc5MDY5MzkwOTEwOTgzNzFfNDMxMjA5MzQyMjE1MTYzOTUzMF9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VEdxWEEtenU3czhRN2tOdmdIUFVReFImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9ETTROemcyT0RRMk9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQUc2THZYczh0MHVrM2N4T3phSzhUb3lCYjNYOEpZcnBMWk9QQTRneEpLSmcmb2U9NjdCQjREREQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODg4MzI0OV8xNzkwNjkzOTA5MTA5ODM3MV80MzEyMDkzNDIyMTUxNjM5NTMwX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VEdxWEEtenU3czhRN2tOdmdIUFVReFImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9ETTROemcyT0RRMk9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRFZpUG5BbWFqcUh5Y1EtNlV0RklhQUlVNEhmQXNBQlZhMEhBNEI5WDJuUGcmb2U9NjdCQjREREQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjY2NzYxOTgzODc4Njg0NjgiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NDAwOTU3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODg4MzI0OV8xNzkwNjkzOTA5MTA5ODM3MV80MzEyMDkzNDIyMTUxNjM5NTMwX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1UR3FYQS16dTdzOFE3a052Z0hQVVF4UiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RNNE56ZzJPRFEyT0ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBRzZMdlhzOHQwdWszY3hPemFLOFRveUJiM1g4SllycExaT1BBNGd4SktKZyZvZT02N0JCNERERCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NjY3NjIwODk2NTY3Mzg4OF82Mjg5NTA0MjM3MCIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjY2NzYxOTgzNTQxODQwNDAiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2ODY5OTIwXzE3OTA2OTM5MTAwMDk4MzcxXzI2NTMwMTY4Mzc2ODQ2OTkwNzJfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTJDTFlqMWpfdWtrUTdrTnZnRnlSZThyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRE0xTkRFNE5EQTBNQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURZMHdsMm9KeEhEYlFfck5lWE9MR1VtWEU0MHVnX3BoUU1FRjJaNmlsWF9BJm9lPTY3QkI2MDJGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY4Njk5MjBfMTc5MDY5MzkxMDAwOTgzNzFfMjY1MzAxNjgzNzY4NDY5OTA3Ml9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTJDTFlqMWpfdWtrUTdrTnZnRnlSZThyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRE0xTkRFNE5EQTBNQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFjeDRRVjVpQlBvc1k3c3AyMGFMMDdIMUk5bXVVWE1mQUw0d1RrWXhzZ0N3Jm9lPTY3QkI2MDJGJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY2Njc2MTk4MzU0MTg0MDQwIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTQwMDk1NywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY4Njk5MjBfMTc5MDY5MzkxMDAwOTgzNzFfMjY1MzAxNjgzNzY4NDY5OTA3Ml9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MkNMWWoxal91a2tRN2tOdmdGeVJlOHImX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9ETTFOREU0TkRBME1BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRFkwd2wyb0p4SERiUV9yTmVYT0xHVW1YRTQwdWdfcGhRTUVGMlo2aWxYX0Emb2U9NjdCQjYwMkYmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjY2NzYyMDg5NjU2NzM4ODhfNjI4OTUwNDIzNzAiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY2Njc2MTk4Mzc5MjU5NzM3IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODk4MjMxM18xNzkwNjkzOTEwOTA5ODM3MV83MDYyMjU5MzU3NjA2NTQzNDEzX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0wV3dVV1FNRkZySVE3a052Z0UzZTVEUCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RNM09USTFPVGN6TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDMWhwMHU3aE9ObDVCVU05LUZFTDV5T3hhVHRPYkhRclVZbk1Zb3RKalFldyZvZT02N0JCNjYxQiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc4OTgyMzEzXzE3OTA2OTM5MTA5MDk4MzcxXzcwNjIyNTkzNTc2MDY1NDM0MTNfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz0wV3dVV1FNRkZySVE3a052Z0UzZTVEUCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RNM09USTFPVGN6TnclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCZEx4QWN4aVl2eXZUZGVqSVlFTUJVVGYyclJGYVN3dnc4Z3kwWlA0b3J5USZvZT02N0JCNjYxQiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NjY3NjE5ODM3OTI1OTczNyIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk0MDA5NTcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc4OTgyMzEzXzE3OTA2OTM5MTA5MDk4MzcxXzcwNjIyNTkzNTc2MDY1NDM0MTNfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTBXd1VXUU1GRnJJUTdrTnZnRTNlNURQJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRE0zT1RJMU9UY3pOdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUMxaHAwdTdoT05sNUJVTTktRkVMNXlPeGFUdE9iSFFyVVluTVlvdEpqUWV3Jm9lPTY3QkI2NjFCJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY2Njc2MjA4OTY1NjczODg4XzYyODk1MDQyMzcwIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NjY3NjE5ODQyOTc1OTYwMSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY4OTEyNjJfMTc5MDY5MzkxMTgwOTgzNzFfMzc3MDExOTQzMDY0MzQ2NDQzMl9uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9bS1ZR00tcl9uYjhRN2tOdmdFcVJUX3MmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9EUXlPVGMxT1RZd01RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ3BQdDBVOFVTT282eEk5N3V4X29XMVR3QUJtM1pWQmNaUkl5R3lYNE80d1Emb2U9NjdCQjRGNTImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3Njg5MTI2Ml8xNzkwNjkzOTExODA5ODM3MV8zNzcwMTE5NDMwNjQzNDY0NDMyX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9bS1ZR00tcl9uYjhRN2tOdmdFcVJUX3MmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9EUXlPVGMxT1RZd01RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1ZZTkptNWlGTTQwOXVNZmNrU3lMV05EVnBWT3JybDZZTDJMYV9KVG55UUEmb2U9NjdCQjRGNTImX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjY2NzYxOTg0Mjk3NTk2MDEiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5NDAwOTU3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3Njg5MTI2Ml8xNzkwNjkzOTExODA5ODM3MV8zNzcwMTE5NDMwNjQzNDY0NDMyX24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1tLVlHTS1yX25iOFE3a052Z0VxUlRfcyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RReU9UYzFPVFl3TVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDcFB0MFU4VVNPbzZ4STk3dXhfb1cxVHdBQm0zWlZCY1pSSXlHeVg0TzR3USZvZT02N0JCNEY1MiZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NjY3NjIwODk2NTY3Mzg4OF82Mjg5NTA0MjM3MCIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjY2NzYxOTg0MjEyMjAzMDIiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MzY5NTkzXzE3OTA2OTM5MTM5MDk4MzcxXzY1OTc4NTc0NDA0OTg5OTA2ODdfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWd6SjNaYXRKQWk4UTdrTnZnRldoTGR3Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRFF5TVRJeU1ETXdNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJLbFQtWWRRU2ViRjYzbnBmM1FvNTRqN2x2VXBNMWQ5N3JCZHZyeVdsZGFnJm9lPTY3QkI0NDk4Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzczNjk1OTNfMTc5MDY5MzkxMzkwOTgzNzFfNjU5Nzg1NzQ0MDQ5ODk5MDY4N19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWd6SjNaYXRKQWk4UTdrTnZnRldoTGR3Jl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRFF5TVRJeU1ETXdNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNIV2ZwZjhob3BkbEppQ3lDbEhPUU1RaGV3aHN1VXZRYkRUa29IWGgxRWRBJm9lPTY3QkI0NDk4Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxMzUwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY2Njc2MTk4NDIxMjIwMzAyIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTQwMDk1NywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzczNjk1OTNfMTc5MDY5MzkxMzkwOTgzNzFfNjU5Nzg1NzQ0MDQ5ODk5MDY4N19uLmpwZz9zZT03JnN0cD1kc3QtanBnX2UzNV90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhNRGd3ZURFek5UQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Z3pKM1phdEpBaThRN2tOdmdGV2hMZHcmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOalkzTmpFNU9EUXlNVEl5TURNd01nJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQktsVC1ZZFFTZWJGNjNucGYzUW81NGo3bHZVcE0xZDk3ckJkdnJ5V2xkYWcmb2U9NjdCQjQ0OTgmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjY2NzYyMDg5NjU2NzM4ODhfNjI4OTUwNDIzNzAiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY2Njc2MTk4NDU0NzQ4NjE5IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3Njg3MzY1Ml8xNzkwNjkzOTEzNjA5ODM3MV8yODQ3MzEyNjc3MDg5NzM0NzY2X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1OcEpZcWVZNVdPMFE3a052Z0huTmJOUiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RRMU5EYzBPRFl4T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBLUpTa3cwMC1JdHlKTjRhbTZuNDZDcnBTbUhIVXprNlExWndNc0pGc0hiUSZvZT02N0JCNDg4QyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2ODczNjUyXzE3OTA2OTM5MTM2MDk4MzcxXzI4NDczMTI2NzcwODk3MzQ3NjZfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1OcEpZcWVZNVdPMFE3a052Z0huTmJOUiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RRMU5EYzBPRFl4T1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCZUVYYlhQRU53bXhqdWVyckctQXFLNDJ1UnRVNWkyY0xfLWhhdGw0QlJmUSZvZT02N0JCNDg4QyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NjY3NjE5ODQ1NDc0ODYxOSIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk0MDA5NTcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2ODczNjUyXzE3OTA2OTM5MTM2MDk4MzcxXzI4NDczMTI2NzcwODk3MzQ3NjZfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPU5wSllxZVk1V08wUTdrTnZnSG5OYk5SJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTmpZM05qRTVPRFExTkRjME9EWXhPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUEtSlNrdzAwLUl0eUpONGFtNm40NkNycFNtSEhVems2UTFad01zSkZzSGJRJm9lPTY3QkI0ODhDJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6MTAsImNhcm91c2VsX21lZGlhX2lkcyI6WzM1NjY2NzYxOTgzNTQyODg2ODQsMzU2NjY3NjE5ODQ0NjUxNTgyNiwzNTY2Njc2MTk4Mzg3ODA4ODc2LDM1NjY2NzYxOTgxNDQ1NDAwMTIsMzU2NjY3NjE5ODM4Nzg2ODQ2OCwzNTY2Njc2MTk4MzU0MTg0MDQwLDM1NjY2NzYxOTgzNzkyNTk3MzcsMzU2NjY3NjE5ODQyOTc1OTYwMSwzNTY2Njc2MTk4NDIxMjIwMzAyLDM1NjY2NzYxOTg0NTQ3NDg2MTldLCJjYXJvdXNlbF9tZWRpYV9wZW5kaW5nX3Bvc3RfY291bnQiOjAsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREZfWVIxd1BHT2ciLCJjb21tZW50X2NvdW50IjoxNDc2LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY3Jvc3Nwb3N0X21ldGFkYXRhIjp7ImZiX2Rvd25zdHJlYW1fdXNlX3hwb3N0X21ldGFkYXRhIjp7ImRvd25zdHJlYW1fdXNlX3hwb3N0X2RlbnlfcmVhc29uIjoiTk9ORSJ9fSwiZGVsZXRlZF9yZWFzb24iOjAsImRldmljZV90aW1lc3RhbXAiOjE3Mzk0MDA5MTI5OTM0MDEsImZiX2FnZ3JlZ2F0ZWRfY29tbWVudF9jb3VudCI6MCwiZmJfYWdncmVnYXRlZF9saWtlX2NvdW50IjowLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmJpZCI6IjE3OTk3NTI4NjU5NzQwODIxIiwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJmZWVkX3R5cGUiOiJtZWRpYSIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJOT05FIn0sImhhc19oaWdoX3Jpc2tfZ2VuX2FpX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJoYXNfbGlrZWQiOmZhbHNlLCJoYXNfcHJpdmF0ZWx5X2xpa2VkIjpmYWxzZSwiaGFzX3NoYXJlZF90b19mYiI6MCwiaGFzX3ZpZXdzX2ZldGNoaW5nIjp0cnVlLCJpZCI6IjM1NjY2NzYyMDg5NjU2NzM4ODgiLCJpZ19tZWRpYV9zaGFyaW5nX2Rpc2FibGVkIjpmYWxzZSwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzEyODgxOF8xNzkwNjkzOTA1MjA5ODM3MV8zNTYyNzAyMjk3Mzc0ODE0NTA3X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1QNTZ4THhzcF9Lb1E3a052Z0YyWUxOZSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RNMU5ESTRPRFk0TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCNHBLZkRIWnhuLVFZX25INXhybnBuWmd4VnlBT2dFaGR1VEtYaTJ2MFRQQSZvZT02N0JCNDNCMSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MTI4ODE4XzE3OTA2OTM5MDUyMDk4MzcxXzM1NjI3MDIyOTczNzQ4MTQ1MDdfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1QNTZ4THhzcF9Lb1E3a052Z0YyWUxOZSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RNMU5ESTRPRFk0TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBZ0IyWWtzcVdzVDZSUUZTNWFRZkJNNDBNRms1aC1rdkdqUkJxMUd4ZVpFdyZvZT02N0JCNDNCMSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19jb21tZW50c19naWZfY29tcG9zZXJfZW5hYmxlZCI6dHJ1ZSwiaXNfY3V0b3V0X3N0aWNrZXJfYWxsb3dlZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2NvbnRlbnRfZm9yX3Bvc3Rfcm9sbF9hZCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZWRpYV9ub3RlX3JlY3NfbnV4IjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21ldGFfYWlfc2hhcmUiOmZhbHNlLCJpc19pbl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc19vcGVuX3RvX3B1YmxpY19zdWJtaXNzaW9uIjpmYWxzZSwiaXNfb3JnYW5pY19wcm9kdWN0X3RhZ2dpbmdfZWxpZ2libGUiOnRydWUsImlzX3BhaWRfcGFydG5lcnNoaXAiOmZhbHNlLCJpc19waW5uZWQiOmZhbHNlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdmlkZW8iOmZhbHNlLCJsYXlvdXRfdHlwZSI6Im1lZGlhX2dyaWQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjI1OTEsIm1lZGlhX2Zvcm1hdCI6ImFsYnVtIiwibWVkaWFfbmFtZSI6ImFsYnVtIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6OCwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjE4NDQ3OTA3MjIyMDQwNDE0IiwiYXVkaW9fdHlwZSI6ImxpY2Vuc2VkX211c2ljIiwibXVzaWNfaW5mbyI6eyJtdXNpY19hc3NldF9pbmZvIjp7ImFsbG93c19zYXZpbmciOmZhbHNlLCJhcnRpc3RfaWQiOiIzMjkyNzc1Mzg4ODgxMDUiLCJhdWRpb19pZCI6IjMzOTY1ODE4OTIzODk4MSIsImNvdmVyX2FydHdvcmtfdGh1bWJuYWlsX3VyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC92L3QzOS4zMDgwOC02LzQ1MTA0MDk3Nl85MDAyODUxMzk1NDk3Nl81MDQ0Njk0ODg1MzczODAzNjY3X24uanBnP3N0cD1kc3QtanBnX3MxNjh4MTI4X3R0NiZfbmNfY2F0PTEmY2NiPTEtNyZfbmNfc2lkPTJmMjU1NyZfbmNfb2hjPXdXS2FMYml0YkVvUTdrTnZnRkJmZ29XJl9uY19vYz1BZGdzbTJVdC1Pa2R1dU1UV0twSjh4WnRTbzEwZ1loTUc0QkRFM2lSVktOb2ZXN0JZNzBEanlvYlRkc0ZlVm1qUXd3Jl9uY19hZD16LW0mX25jX2NpZD0xMzY1Jl9uY196dD0yMyZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4Jl9uY19naWQ9QWZIYnVwb3BVeENncGtiVnB5VEo2Vm4mb2g9MDBfQVlDNWRYa0FlR0JKM3ZRZE1abDlpQ3VKY1IxZFpydERMSkdNX2NOcFVhWW9JZyZvZT02N0JCNDM2NCIsImNvdmVyX2FydHdvcmtfdXJpIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L3YvdDM5LjMwODA4LTYvNDUxMDQwOTc2XzkwMDI4NTEzOTU0OTc2XzUwNDQ2OTQ4ODUzNzM4MDM2Njdfbi5qcGc/c3RwPWRzdC1qcGdfczE2OHgxMjhfdHQ2Jl9uY19jYXQ9MSZjY2I9MS03Jl9uY19zaWQ9MmYyNTU3Jl9uY19vaGM9d1dLYUxiaXRiRW9RN2tOdmdGQmZnb1cmX25jX29jPUFkZ3NtMlV0LU9rZHV1TVRXS3BKOHhadFNvMTBnWWhNRzRCREUzaVJWS05vZlc3Qlk3MERqeW9iVGRzRmVWbWpRd3cmX25jX2FkPXotbSZfbmNfY2lkPTEzNjUmX25jX3p0PTIzJl9uY19odD1zY29udGVudC1kdXMxLTEueHgmX25jX2dpZD1BZkhidXBvcFV4Q2dwa2JWcHlUSjZWbiZvaD0wMF9BWUM1ZFhrQWVHQkozdlFkTVpsOWlDdUpjUjFkWnJ0RExKR01fY05wVWFZb0lnJm9lPTY3QkI0MzY0IiwiZGFya19tZXNzYWdlIjpudWxsLCJkaXNwbGF5X2FydGlzdCI6InRyYWJiZXkiLCJkdXJhdGlvbl9pbl9tcyI6MTg4ODkzLCJmYXN0X3N0YXJ0X3Byb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUU9PTThtUXE5WTNON0dFMnJ3MWhaRmhMS2E3dEhYeFdZTjVCY1dreUtoQ2JMU1pyV0JtNXJ4bXlROVlLaVotTnpIYVI5eWtzekVmOUpnYnR1ZklCNXpBLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEwMiZfbmNfc2lkPThiZjhmZSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldCZfbmNfb2hjPUdNQ1FCLWZ2RXkwUTdrTnZnRlFuYzZ0JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkluaHdkbDl3Y205bmNtVnpjMmwyWlM1QlZVUkpUMTlQVGt4WkxpNURNeTR3TG5CeWIyZHlaWE56YVhabFgyRjFaR2x2WDJGaFkzQmZORGhmWm5KaFoxOHlYMkYxWkdsdklpd2llSEIyWDJGemMyVjBYMmxrSWpvNE5URTVNall6TnpNNE1UQXdPVGMzTENKMWNteG5aVzVmYzI5MWNtTmxJam9pZDNkM0luMCUzRCZjY2I9OS00Jl9uY196dD0yOCZvaD0wMF9BWUN2YjF4aTZVSldwYVJ0THRnUlJ6TXR6SUJSS2FzUnV4TGJRV01WeFJ0bUdBJm9lPTY3QkI0QTE0IiwiaGFzX2x5cmljcyI6ZmFsc2UsImhpZ2hsaWdodF9zdGFydF90aW1lc19pbl9tcyI6WzE0MDUwMCwxNTU1MDAsMTUwMF0sImlkIjoiOTg1MjUzNDY5OTYwMDc4IiwiaWdfdXNlcm5hbWUiOiJ0cmFiYmV5IiwiaXNfZWxpZ2libGVfZm9yX2F1ZGlvX2VmZmVjdHMiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfdmlueWxfc3RpY2tlciI6dHJ1ZSwiaXNfZXhwbGljaXQiOmZhbHNlLCJsaWNlbnNlZF9tdXNpY19zdWJ0eXBlIjoiREVGQVVMVCIsImx5cmljcyI6bnVsbCwicHJvZ3Jlc3NpdmVfZG93bmxvYWRfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L28xL3YvdDIvZjIvbTY5L0FRT09NOG1RcTlZM043R0UycncxaFpGaExLYTd0SFh4V1lONUJjV2t5S2hDYkxTWnJXQm01cnhteVE5WUtpWi1OekhhUjl5a3N6RWY5SmdidHVmSUI1ekEubXA0P3N0cmV4dD0xJl9uY19jYXQ9MTAyJl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9R01DUUItZnZFeTBRN2tOdmdGUW5jNnQmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZYMkZoWTNCZk5EaGZabkpoWjE4eVgyRjFaR2x2SWl3aWVIQjJYMkZ6YzJWMFgybGtJam80TlRFNU1qWXpOek00TVRBd09UYzNMQ0oxY214blpXNWZjMjkxY21ObElqb2lkM2QzSW4wJTNEJmNjYj05LTQmX25jX3p0PTI4Jm9oPTAwX0FZQ3ZiMXhpNlVKV3BhUnRMdGdSUnpNdHpJQlJLYXNSdXhMYlFXTVZ4UnRtR0Emb2U9NjdCQjRBMTQiLCJyZWFjdGl2ZV9hdWRpb19kb3dubG9hZF91cmwiOm51bGwsInNhbml0aXplZF90aXRsZSI6bnVsbCwic3VidGl0bGUiOiIiLCJ0aXRsZSI6Ik5PSVJFIiwid2ViXzMwc19wcmV2aWV3X2Rvd25sb2FkX3VybCI6bnVsbH0sIm11c2ljX2NvbnN1bXB0aW9uX2luZm8iOnsiYWxsb3dfbWVkaWFfY3JlYXRpb25fd2l0aF9tdXNpYyI6dHJ1ZSwiYXVkaW9fYXNzZXRfc3RhcnRfdGltZV9pbl9tcyI6MTQwNTAwLCJhdWRpb19maWx0ZXJfaW5mb3MiOltdLCJhdWRpb19tdXRpbmdfaW5mbyI6eyJhbGxvd19hdWRpb19lZGl0aW5nIjpmYWxzZSwibXV0ZV9hdWRpbyI6ZmFsc2UsIm11dGVfcmVhc29uX3N0ciI6IiIsInNob3dfbXV0ZWRfYXVkaW9fdG9hc3QiOmZhbHNlfSwiY29udGFpbnNfbHlyaWNzIjpudWxsLCJkZXJpdmVkX2NvbnRlbnRfaWQiOm51bGwsImRpc3BsYXlfbGFiZWxzIjpudWxsLCJmb3JtYXR0ZWRfY2xpcHNfbWVkaWFfY291bnQiOm51bGwsImlnX2FydGlzdCI6eyJmdWxsX25hbWUiOiJ0cmFiYmV5IOKAoiBCRUFUUyIsImlkIjoiMjEwMTcyNjYzOSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzUzOTY2MzI2OTQ0Mzg0MjM0MCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80NzI0Mjk4NTBfOTY3NzE5MTc4NTk4NzU1XzIyNjA2NjEwNjQ0MzczODYwNDlfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz10Q3U2YjhmY2g0TVE3a052Z0hNN1RqbiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUN4WWpZZWJZSkdCbGRqUXpCY0NPZ0lINnRkMElMNEZkdmIyeFgtbkhaRmtRJm9lPTY3QkI0MjA0Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJ0cmFiYmV5In0sImlzX2Jvb2ttYXJrZWQiOmZhbHNlLCJpc190cmVuZGluZ19pbl9jbGlwcyI6ZmFsc2UsIm92ZXJsYXBfZHVyYXRpb25faW5fbXMiOjMwMDAwLCJwbGFjZWhvbGRlcl9wcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjEyNDQyLTE1LzQzOTg1NjI5XzMxMTEwNTkxNjE0NTM1MV81ODA2NDc1OTgxMTQwNTc3Nl9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9eUwwOU5YY0ZpWDRRN2tOdmdIalVQSlUmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0FBQUFBJmNjYj03LTUmb2g9MDBfQVlDbGMtelhSSjNHMjFEYWtJU0s5ZWVXVk5YQWRfWWc2VWp2RzdJc0M2Zk9aQSZvZT02N0JCMzkzRCZfbmNfc2lkPTIwMTFhZCIsInByZXZpb3VzX3RyZW5kX3JhbmsiOm51bGwsInNob3VsZF9hbGxvd19tdXNpY19lZGl0aW5nIjpmYWxzZSwic2hvdWxkX211dGVfYXVkaW8iOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb24iOiIiLCJzaG91bGRfbXV0ZV9hdWRpb19yZWFzb25fdHlwZSI6bnVsbCwidHJlbmRfcmFuayI6bnVsbH19LCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpbXX0sIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3Blbl9jYXJvdXNlbF9zdWJtaXNzaW9uX3N0YXRlIjoiY2xvc2VkIiwib3JpZ2luYWxfaGVpZ2h0Ijo2MTIsIm9yaWdpbmFsX3dpZHRoIjo2MTIsInBrIjoiMzU2NjY3NjIwODk2NTY3Mzg4OCIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfY29udGFpbmVyIiwic2hhcmVfY291bnRfZGlzYWJsZWQiOmZhbHNlLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInN1YnNjcmliZV9jdGFfdmlzaWJsZSI6ZmFsc2UsInRha2VuX2F0IjoxNzM5NDAwOTU4LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzEyODgxOF8xNzkwNjkzOTA1MjA5ODM3MV8zNTYyNzAyMjk3Mzc0ODE0NTA3X24uanBnP3NlPTcmc3RwPWRzdC1qcGdfZTM1X3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE1EZ3dlREV6TlRBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1QNTZ4THhzcF9Lb1E3a052Z0YyWUxOZSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5qWTNOakU1T0RNMU5ESTRPRFk0TkElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCNHBLZkRIWnhuLVFZX25INXhybnBuWmd4VnlBT2dFaGR1VEtYaTJ2MFRQQSZvZT02N0JCNDNCMSZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOltdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOnRydWUsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOjAsImZhbl9jbHViX2lkIjoiNzMxODMwOTc1NDg5MDc2MSIsImZhbl9jbHViX25hbWUiOiIiLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5Ijp7InNob3VsZF9zaG93X2NvbnRlbnRfcHJldmlldyI6ZmFsc2UsInNob3VsZF9zaG93X3NvY2lhbF9jb250ZXh0IjpmYWxzZX0sImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpmYWxzZSwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOmZhbHNlLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpmYWxzZSwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOjB9LCJmYmlkX3YyIjoxNzg0MTQ2Mjk1MTEwMTg4MCwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJCcnVubyBGcmFuY2lzY28gfCBNYXJrZXRpbmcgZSBDSEFUR1BUIiwiaGFzX2Fub255bW91c19wcm9maWxlX3BpY3R1cmUiOmZhbHNlLCJpZCI6IjYyODk1MDQyMzcwIiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzMjIyMjU2Nzg3MTE4MTQyNzU3IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzM5NTU2ODM4N18xMDEwMTQxODQ2OTI2Nzc1XzE2Mzk0MDk3MDYyODcxNTY5Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1PbXBySlJoQUEtNFE3a052Z0g0X1BKbSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUQ3bXpaWG56QkkyN0hpbFlYOHhoN0lCQkJhQmhaUy1pVFAtcnZ1aVJlSm1nJm9lPTY3QkI1MUUxJl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoiYnJ1bjBncHQifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX21vZGlmeV9jYXJvdXNlbCI6dHJ1ZSwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE3Mzk5MjcxMTUsImNyZWF0ZWRfYXRfdXRjIjoxNzM5OTI3MTE1LCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNfdHJhbnNsYXRpb24iOnRydWUsImhhc2h0YWdzIjpbIiNkZWVwc2VlayIsIiNjaGF0Z3B0IiwiI2FpIiwiI2x1aHV0IiwiI3RhdWRhcml1em9uZSJdLCJpZCI6IjM1NzEwODk5MjM3NDQ4NTcxNDQiLCJpc19jb3ZlcmVkIjpmYWxzZSwiaXNfcmFua2VkX2NvbW1lbnQiOmZhbHNlLCJtZW50aW9ucyI6W10sInBrIjoiMTgwNzE3Nzc5NDQ3NTI2NTMiLCJwcml2YXRlX3JlcGx5X3N0YXR1cyI6MCwic2hhcmVfZW5hYmxlZCI6ZmFsc2UsInRleHQiOiJMdWh1dCBtZW5nYXRha2FuIG5hbnRpbnlhIEFJIGJ1YXRhbiBhbmFrIGJhbmdzYSB5YW5nIGluaSBha2FuIG1lbmdndW5ha2FuIGJhaGFzYSBJbmRvbmVzaWEgZGFuIGJhaGFzYSBJbmdncmlzLCBkYW4gZGloYXJhcGthbiBiaXNhIG1lbXBlcmt1YXQgZWtvc2lzdGVtIGRpZ2l0YWxpc2FzaSBkaSBUYW5haCBBaXIuXG5cbkdpbWFuYS1naW1hbmEsIG9wdGltaXMgYmlzYSBzZXBhZGFuIGRlbmdhbiBDaGF0R1BUIGF0YXUgRGVlcFNlZWs/XG5cbiNkZWVwc2VlayAjY2hhdGdwdCAjYWkgI2x1aHV0ICN0YXVkYXJpdXpvbmUiLCJ0eXBlIjoxLCJ1c2VyIjp7ImZiaWRfdjIiOjE3ODQxNDAwNTQ3NTY4MDU1LCJmdWxsX25hbWUiOiJVem9uZS5pZCAtIE1lZGlhIFRla25vbG9naSAmIE90b21vdGlmIiwiaWQiOiI1MTU1MzgyNTIiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzMzMyMjA2NzY3NjgwNDgwMzU5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQzNDUxMjA5M18xNjA1MDQ4NzgzNjUzMTU1XzU3MzgzMzYxNzk1Njg3MzY5OTlfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MDlDbzRkYkRiYmdRN2tOdmdFNGwxZ24mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBRUJ2WW9ORzhvbXJnSDBTS3pQYVhNenNJRDkweUZpWXVOYzFXVHhEU3dZdyZvZT02N0JCNDE1MCZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoidXpvbmVpbmRvbmVzaWEifSwidXNlcl9pZCI6IjUxNTUzODI1MiJ9LCJjYXB0aW9uX2FkZF9vbiI6eyJjb21tZW50X3Byb21wdCI6bnVsbCwicG9sbCI6eyJjb2xvciI6ImJsYWNrIiwiZmluaXNoZWQiOmZhbHNlLCJpZCI6InBvbGxpbmciLCJpc19tdWx0aV9vcHRpb25fcG9sbCI6ZmFsc2UsImlzX3NoYXJlZF9yZXN1bHQiOmZhbHNlLCJwb2xsX2lkIjoxODEyOTI0NTc1ODQwNTQ3OSwicG9sbF90eXBlIjoiY29tbWVudF9wb2xsIiwicHJvbW90aW9uX3RhbGxpZXMiOm51bGwsInF1ZXN0aW9uIjoiTHVodXQgbWVuZ2F0YWthbiBuYW50aW55YSBBSSBidWF0YW4gYW5hayBiYW5nc2EgeWFuZyBpbmkgYWthbiBtZW5nZ3VuYWthbiBiYWhhc2EgSW5kb25lc2lhIGRhbiBiYWhhc2EgSW5nZ3JpcywgZGFuIGRpaGFyYXBrYW4gYmlzYSBtZW1wZXJrdWF0IGVrb3Npc3RlbSBkaWdpdGFsaXNhc2kgZGkgVGFuYWggQWlyLlxuXG5HaW1hbmEtZ2ltYW5hLCBvcHRpbWlzIGJpc2Egc2VwYWRhbiBkZW5nYW4gQ2hhdEdQVCBhdGF1IERlZXBTZWVrP1xuXG4jZGVlcHNlZWsgI2NoYXRncHQgI2FpICNsdWh1dCAjdGF1ZGFyaXV6b25lICIsInNvY2lhbF9jb250ZXh0IjpudWxsLCJ0YWxsaWVzIjpbeyJjb3VudCI6NjQsImZvbnRfc2l6ZSI6MzUuMCwidGV4dCI6Ik9wdGltaXMifSx7ImNvdW50Ijo0NTgsImZvbnRfc2l6ZSI6MzUuMCwidGV4dCI6IlBlc2ltaXMifV0sInRvdGFsX3ZvdGVzIjo1MjIsInZpZXdlcl9jYW5fdm90ZSI6dHJ1ZX19LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNhcm91c2VsX21lZGlhIjpbeyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTcxMDg5OTIzNzQ0ODU3MTQ0XzUxNTUzODI1MiIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NzEwODk5MTQ4OTQ5NDAwNDgiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzQzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjExODAzXzE4NDg3MTc1NjYyMDE4MjUzXzMyNzU0Mzc0NTU4MDQ2NjY0MTVfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVEV1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXhCYW9GVlF2WnA4UTdrTnZnRnFmcGRJJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTVRBNE9Ua3hORGc1TkRrME1EQTBPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJqTDgzTUNzWXFUdjNSMlpzWUNYX0YybEZjbDZ5WTlRUkI0Zlc4bTJoanNnJm9lPTY3QkI0QkZFJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NDgsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA2MTE4MDNfMTg0ODcxNzU2NjIwMTgyNTNfMzI3NTQzNzQ1NTgwNDY2NjQxNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVEV1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXhCYW9GVlF2WnA4UTdrTnZnRnFmcGRJJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTVRBNE9Ua3hORGc1TkRrME1EQTBPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUQ1bUQ1TVRvVWtUczJzTDdtamtmenFrNWl3LVY3ZHgtZWRXZXY5VVdXaEZ3Jm9lPTY3QkI0QkZFJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxNzkxLCJvcmlnaW5hbF93aWR0aCI6MTQ0MCwicGsiOiIzNTcxMDg5OTE0ODk0OTQwMDQ4IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTkyNzExMywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA2MTE4MDNfMTg0ODcxNzU2NjIwMTgyNTNfMzI3NTQzNzQ1NTgwNDY2NjQxNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFM09URXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDUmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9eEJhb0ZWUXZacDhRN2tOdmdGcWZwZEkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNVEE0T1RreE5EZzVORGswTURBME9BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQmpMODNNQ3NZcVR2M1IyWnNZQ1hfRjJsRmNsNnlZOVFSQjRmVzhtMmhqc2cmb2U9NjdCQjRCRkUmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NzEwODk5MjM3NDQ4NTcxNDRfNTE1NTM4MjUyIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU3MTA4OTkxNDg4NjQyMDcxMSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA2MDgwOTVfMTg0ODcxNzU2NzEwMTgyNTNfNzExMjI4Njc0MjA5MTEzMTc5M19uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFM09URXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDUmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGpTc0RuTUR4aWNRN2tOdmdFZTJqdm0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNVEE0T1RreE5EZzROalF5TURjeE1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ0pxcjd4aWZCcklnc2VSbzVidHk4VkJLd1ItSGN2QUExS1Q0X1dlQnpQQ3cmb2U9NjdCQjMyODkmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ0OCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDYwODA5NV8xODQ4NzE3NTY3MTAxODI1M183MTEyMjg2NzQyMDkxMTMxNzkzX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFM09URXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDUmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VGpTc0RuTUR4aWNRN2tOdmdFZTJqdm0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTNNVEE0T1RreE5EZzROalF5TURjeE1RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRHFSdHJxeDI1TklIVFI2NEdFdl9PbzBraXpnNTdSWUpOd05vRnN0QVBXRkEmb2U9NjdCQjMyODkmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE3OTEsIm9yaWdpbmFsX3dpZHRoIjoxNDQwLCJwayI6IjM1NzEwODk5MTQ4ODY0MjA3MTEiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5OTI3MTEzLCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDYwODA5NV8xODQ4NzE3NTY3MTAxODI1M183MTEyMjg2NzQyMDkxMTMxNzkzX24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREUzT1RFdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1UalNzRG5NRHhpY1E3a052Z0VlMmp2bSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01UQTRPVGt4TkRnNE5qUXlNRGN4TVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDSnFyN3hpZkJySWdzZVJvNWJ0eThWQkt3Ui1IY3ZBQTFLVDRfV2VCelBDdyZvZT02N0JCMzI4OSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU3MTA4OTkyMzc0NDg1NzE0NF81MTU1MzgyNTIiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTcxMDg5OTE0ODg2NTcyOTUzIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM0MywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ4MDcwNTk1N18xODQ4NzE3NTY4MzAxODI1M18zNzM3ODE5MzQwMzA1Mzg4MDY5X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREUzT1RFdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1IbVJCNjRJdVI5NFE3a052Z0gzUzVHTCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01UQTRPVGt4TkRnNE5qVTNNamsxTXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBazRGNUptN0hYY25Hd2FhM2dHOW5xWVAzdlFMR2FDeU1rSGRhdEdmeGpVdyZvZT02N0JCNDEyNCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDQ4LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNzA1OTU3XzE4NDg3MTc1NjgzMDE4MjUzXzM3Mzc4MTkzNDAzMDUzODgwNjlfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREUzT1RFdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1IbVJCNjRJdVI5NFE3a052Z0gzUzVHTCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVM01UQTRPVGt4TkRnNE5qVTNNamsxTXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCcThjRkVtRFh4b1Bmak9LOUE3RmJWd3NxS004QWVqNEthSGhodUVCdFJCZyZvZT02N0JCNDEyNCZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTc5MSwib3JpZ2luYWxfd2lkdGgiOjE0NDAsInBrIjoiMzU3MTA4OTkxNDg4NjU3Mjk1MyIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3Mzk5MjcxMTMsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNzA1OTU3XzE4NDg3MTc1NjgzMDE4MjUzXzM3Mzc4MTkzNDAzMDUzODgwNjlfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVEV1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUhtUkI2NEl1Ujk0UTdrTnZnSDNTNUdMJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTVRBNE9Ua3hORGc0TmpVM01qazFNdyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFrNEY1Sm03SFhjbkd3YWEzZ0c5bnFZUDN2UUxHYUN5TWtIZGF0R2Z4alV3Jm9lPTY3QkI0MTI0Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJjYXJvdXNlbF9tZWRpYV9jb3VudCI6MywiY2Fyb3VzZWxfbWVkaWFfaWRzIjpbMzU3MTA4OTkxNDg5NDk0MDA0OCwzNTcxMDg5OTE0ODg2NDIwNzExLDM1NzEwODk5MTQ4ODY1NzI5NTNdLCJjYXJvdXNlbF9tZWRpYV9wZW5kaW5nX3Bvc3RfY291bnQiOjAsImNsaXBzX3RhYl9waW5uZWRfdXNlcl9pZHMiOltdLCJjb2F1dGhvcl9wcm9kdWNlcl9jYW5fc2VlX29yZ2FuaWNfaW5zaWdodHMiOmZhbHNlLCJjb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJjb2RlIjoiREdQRDExOXlmdzQiLCJjb21tZW50X2NvdW50IjoxNzgsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTkyNjg4MjQ2ODA3MCwiZmJfYWdncmVnYXRlZF9jb21tZW50X2NvdW50IjowLCJmYl9hZ2dyZWdhdGVkX2xpa2VfY291bnQiOjAsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmYmlkIjoiMTgwNzE3Nzc5NDE3NTI2NTMiLCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImZlZWRfdHlwZSI6Im1lZGlhIiwiZmlsdGVyX3R5cGUiOjAsImZ1bmRyYWlzZXJfdGFnIjp7Imhhc19zdGFuZGFsb25lX2Z1bmRyYWlzZXIiOmZhbHNlfSwiZ2VuX2FpX2RldGVjdGlvbl9tZXRob2QiOnsiZGV0ZWN0aW9uX21ldGhvZCI6Ik5PTkUifSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjozLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU3MTA4OTkyMzc0NDg1NzE0NCIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ2Jpb19wcm9kdWN0IjpudWxsLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzQzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjExODAzXzE4NDg3MTc1NjYyMDE4MjUzXzMyNzU0Mzc0NTU4MDQ2NjY0MTVfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVEV1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXhCYW9GVlF2WnA4UTdrTnZnRnFmcGRJJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTVRBNE9Ua3hORGc1TkRrME1EQTBPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJqTDgzTUNzWXFUdjNSMlpzWUNYX0YybEZjbDZ5WTlRUkI0Zlc4bTJoanNnJm9lPTY3QkI0QkZFJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NDgsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80ODA2MTE4MDNfMTg0ODcxNzU2NjIwMTgyNTNfMzI3NTQzNzQ1NTgwNDY2NjQxNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVEV1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXhCYW9GVlF2WnA4UTdrTnZnRnFmcGRJJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTVRBNE9Ua3hORGc1TkRrME1EQTBPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUQ1bUQ1TVRvVWtUczJzTDdtamtmenFrNWl3LVY3ZHgtZWRXZXY5VVdXaEZ3Jm9lPTY3QkI0QkZFJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6InBlbmRpbmciLCJpbnZpdGVkX2NvYXV0aG9yX3Byb2R1Y2VycyI6W10sImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjp0cnVlLCJsaWtlX2NvdW50IjozLCJtZWRpYV9mb3JtYXQiOiJhbGJ1bSIsIm1lZGlhX25hbWUiOiJhbGJ1bSIsIm1lZGlhX25vdGVzIjp7Iml0ZW1zIjpbXX0sIm1lZGlhX3R5cGUiOjgsIm1ldGFfYWlfc3VnZ2VzdGVkX3Byb21wdHMiOltdLCJtdXNpY19tZXRhZGF0YSI6eyJhdWRpb19jYW5vbmljYWxfaWQiOiIxODQ1MzA0Mzc2ODA1NzEyOSIsImF1ZGlvX3R5cGUiOiJsaWNlbnNlZF9tdXNpYyIsIm11c2ljX2luZm8iOnsibXVzaWNfYXNzZXRfaW5mbyI6eyJhbGxvd3Nfc2F2aW5nIjpmYWxzZSwiYXJ0aXN0X2lkIjoiMzM5NzQzMTM5OTEyODI5IiwiYXVkaW9faWQiOiIxNDcwMjYyODc2OTMzNTU3IiwiY292ZXJfYXJ0d29ya190aHVtYm5haWxfdXJpIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L3YvdDM5LjMwODA4LTYvNDU4MjAyNzEwXzkwMDI4Nzk0NDE3NjYyXzIzOTg4MDk3NTMyMzMxOTY4NjNfbi5qcGc/c3RwPWRzdC1qcGdfczE2OHgxMjhfdHQ2Jl9uY19jYXQ9MSZjY2I9MS03Jl9uY19zaWQ9MmYyNTU3Jl9uY19vaGM9cVBUcU4wUXlkWUlRN2tOdmdGdFdCQ18mX25jX29jPUFkZ0Y3M0hKLXlUQWE1endsdTE2ZWhab09WYTRyTE0tU1RCTW96Um4zSnNsRmNhNUk0Q1hWdk02MEJNc3gxWGJDR00mX25jX2FkPXotbSZfbmNfY2lkPTEzNjUmX25jX3p0PTIzJl9uY19odD1zY29udGVudC1kdXMxLTEueHgmX25jX2dpZD1BZkhidXBvcFV4Q2dwa2JWcHlUSjZWbiZvaD0wMF9BWUJOd0h1X2dib3NqTGRSWC1HVmNlQ3FxZmtvZ0NCdXpHN1J4OVd2eUZyOHNBJm9lPTY3QkI1RkIxIiwiY292ZXJfYXJ0d29ya191cmkiOiJodHRwczovL3Njb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQvdi90MzkuMzA4MDgtNi80NTgyMDI3MTBfOTAwMjg3OTQ0MTc2NjJfMjM5ODgwOTc1MzIzMzE5Njg2M19uLmpwZz9zdHA9ZHN0LWpwZ19zMTY4eDEyOF90dDYmX25jX2NhdD0xJmNjYj0xLTcmX25jX3NpZD0yZjI1NTcmX25jX29oYz1xUFRxTjBReWRZSVE3a052Z0Z0V0JDXyZfbmNfb2M9QWRnRjczSEoteVRBYTV6d2x1MTZlaFpvT1ZhNHJMTS1TVEJNb3pSbjNKc2xGY2E1STRDWFZ2TTYwQk1zeDFYYkNHTSZfbmNfYWQ9ei1tJl9uY19jaWQ9MTM2NSZfbmNfenQ9MjMmX25jX2h0PXNjb250ZW50LWR1czEtMS54eCZfbmNfZ2lkPUFmSGJ1cG9wVXhDZ3BrYlZweVRKNlZuJm9oPTAwX0FZQk53SHVfZ2Jvc2pMZFJYLUdWY2VDcXFma29nQ0J1ekc3Ung5V3Z5RnI4c0Emb2U9NjdCQjVGQjEiLCJkYXJrX21lc3NhZ2UiOm51bGwsImRpc3BsYXlfYXJ0aXN0IjoiTGlua2luIFBhcmsiLCJkdXJhdGlvbl9pbl9tcyI6MTkwNDI3LCJmYXN0X3N0YXJ0X3Byb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUVBwa05RbUExcG0zYTFIc2cwelZ4MXJUMFg0M0RZZ3VkbDA0SE1udTd2dWJLVUt4am5JRndqWXFnYXozNVlBbHFvaHlCdFN1WlI1UDFHZldBbUk0RFZyLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEmX25jX3NpZD04YmY4ZmUmX25jX2h0PXNjb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQmX25jX29oYz1LSFN4dVJvX3RjOFE3a052Z0ZveTZWVCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbmh3ZGw5d2NtOW5jbVZ6YzJsMlpTNUJWVVJKVDE5UFRreFpMaTVETXk0d0xuQnliMmR5WlhOemFYWmxYMkYxWkdsdlgyRmhZM0JmTkRoZlpuSmhaMTh5WDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqb3hNREl3TkRZM09EazVOekV3TnpJNUxDSjFjbXhuWlc1ZmMyOTFjbU5sSWpvaWQzZDNJbjAlM0QmY2NiPTktNCZfbmNfenQ9Mjgmb2g9MDBfQVlDVnZfRTdzYjN3OTZGUjBVM2NWckstQ3FQU3hxbFdVTXBLdF9uV3FIbkpKZyZvZT02N0JCM0M2MyIsImhhc19seXJpY3MiOnRydWUsImhpZ2hsaWdodF9zdGFydF90aW1lc19pbl9tcyI6WzEzMzAwMCw5ODAwMCwxNTIwMDBdLCJpZCI6IjEyNTQxNDUxNDI0MTc4MTciLCJpZ191c2VybmFtZSI6ImxpbmtpbnBhcmsiLCJpc19lbGlnaWJsZV9mb3JfYXVkaW9fZWZmZWN0cyI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl92aW55bF9zdGlja2VyIjp0cnVlLCJpc19leHBsaWNpdCI6dHJ1ZSwibGljZW5zZWRfbXVzaWNfc3VidHlwZSI6IkRFRkFVTFQiLCJseXJpY3MiOm51bGwsInByb2dyZXNzaXZlX2Rvd25sb2FkX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLnh4LmZiY2RuLm5ldC9vMS92L3QyL2YyL202OS9BUVBwa05RbUExcG0zYTFIc2cwelZ4MXJUMFg0M0RZZ3VkbDA0SE1udTd2dWJLVUt4am5JRndqWXFnYXozNVlBbHFvaHlCdFN1WlI1UDFHZldBbUk0RFZyLm1wND9zdHJleHQ9MSZfbmNfY2F0PTEmX25jX3NpZD04YmY4ZmUmX25jX2h0PXNjb250ZW50LWR1czEtMS54eC5mYmNkbi5uZXQmX25jX29oYz1LSFN4dVJvX3RjOFE3a052Z0ZveTZWVCZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbmh3ZGw5d2NtOW5jbVZ6YzJsMlpTNUJWVVJKVDE5UFRreFpMaTVETXk0d0xuQnliMmR5WlhOemFYWmxYMkYxWkdsdlgyRmhZM0JmTkRoZlpuSmhaMTh5WDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqb3hNREl3TkRZM09EazVOekV3TnpJNUxDSjFjbXhuWlc1ZmMyOTFjbU5sSWpvaWQzZDNJbjAlM0QmY2NiPTktNCZfbmNfenQ9Mjgmb2g9MDBfQVlDVnZfRTdzYjN3OTZGUjBVM2NWckstQ3FQU3hxbFdVTXBLdF9uV3FIbkpKZyZvZT02N0JCM0M2MyIsInJlYWN0aXZlX2F1ZGlvX2Rvd25sb2FkX3VybCI6bnVsbCwic2FuaXRpemVkX3RpdGxlIjpudWxsLCJzdWJ0aXRsZSI6IiIsInRpdGxlIjoiVGhlIEVtcHRpbmVzcyBNYWNoaW5lIiwid2ViXzMwc19wcmV2aWV3X2Rvd25sb2FkX3VybCI6bnVsbH0sIm11c2ljX2NvbnN1bXB0aW9uX2luZm8iOnsiYWxsb3dfbWVkaWFfY3JlYXRpb25fd2l0aF9tdXNpYyI6dHJ1ZSwiYXVkaW9fYXNzZXRfc3RhcnRfdGltZV9pbl9tcyI6OTYyNzMsImF1ZGlvX2ZpbHRlcl9pbmZvcyI6W10sImF1ZGlvX211dGluZ19pbmZvIjp7ImFsbG93X2F1ZGlvX2VkaXRpbmciOmZhbHNlLCJtdXRlX2F1ZGlvIjpmYWxzZSwibXV0ZV9yZWFzb25fc3RyIjoiIiwic2hvd19tdXRlZF9hdWRpb190b2FzdCI6ZmFsc2V9LCJjb250YWluc19seXJpY3MiOm51bGwsImRlcml2ZWRfY29udGVudF9pZCI6bnVsbCwiZGlzcGxheV9sYWJlbHMiOm51bGwsImZvcm1hdHRlZF9jbGlwc19tZWRpYV9jb3VudCI6bnVsbCwiaWdfYXJ0aXN0Ijp7ImZ1bGxfbmFtZSI6IkxJTktJTiBQQVJLIiwiaWQiOiI0ODkwNzM2IiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjM1Njc3NzkwMjAyMTc0NDE4NTgiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDc5Njk5NDc0XzM4Mzg3MDMzODMxMTIxNjJfOTc3MTY1MDg3NzQ2MjUyNzYzX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXNvRHU4NFd6NUZ3UTdrTnZnSGtScDJOJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQUhoNTNNdHd0dVNIeVR1MGV3bk5GZFZQZXpIRnRvOFJDNmJiVmdkbjZOdlEmb2U9NjdCQjUwRDEmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImxpbmtpbnBhcmsifSwiaXNfYm9va21hcmtlZCI6ZmFsc2UsImlzX3RyZW5kaW5nX2luX2NsaXBzIjpmYWxzZSwib3ZlcmxhcF9kdXJhdGlvbl9pbl9tcyI6MzAwMDAsInBsYWNlaG9sZGVyX3Byb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMTI0NDItMTUvNDM5ODU2MjlfMzExMTA1OTE2MTQ1MzUxXzU4MDY0NzU5ODExNDA1Nzc2X24uanBnP19uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNyZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz15TDA5TlhjRmlYNFE3a052Z0hqVVBKVSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQUFBQUEmY2NiPTctNSZvaD0wMF9BWUNsYy16WFJKM0cyMURha0lTSzllZVdWTlhBZF9ZZzZVanZHN0lzQzZmT1pBJm9lPTY3QkIzOTNEJl9uY19zaWQ9MjAxMWFkIiwicHJldmlvdXNfdHJlbmRfcmFuayI6bnVsbCwic2hvdWxkX2FsbG93X211c2ljX2VkaXRpbmciOmZhbHNlLCJzaG91bGRfbXV0ZV9hdWRpbyI6ZmFsc2UsInNob3VsZF9tdXRlX2F1ZGlvX3JlYXNvbiI6IiIsInNob3VsZF9tdXRlX2F1ZGlvX3JlYXNvbl90eXBlIjpudWxsLCJ0cmVuZF9yYW5rIjpudWxsfX0sIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOltdfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcGVuX2Nhcm91c2VsX3N1Ym1pc3Npb25fc3RhdGUiOiJjbG9zZWQiLCJvcmlnaW5hbF9oZWlnaHQiOjYxMiwib3JpZ2luYWxfd2lkdGgiOjYxMiwicGsiOiIzNTcxMDg5OTIzNzQ0ODU3MTQ0IiwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9jb250YWluZXIiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9zaG93X2F1dGhvcl9wb2dfZm9yX3RhZ2dlZF9tZWRpYV9zaGFyZWRfdG9fcHJvZmlsZV9ncmlkIjpmYWxzZSwic3Vic2NyaWJlX2N0YV92aXNpYmxlIjpmYWxzZSwidGFrZW5fYXQiOjE3Mzk5MjcxMTQsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwNjExODAzXzE4NDg3MTc1NjYyMDE4MjUzXzMyNzU0Mzc0NTU4MDQ2NjY0MTVfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVEV1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA1Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXhCYW9GVlF2WnA4UTdrTnZnRnFmcGRJJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUzTVRBNE9Ua3hORGc1TkRrME1EQTBPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJqTDgzTUNzWXFUdjNSMlpzWUNYX0YybEZjbDZ5WTlRUkI0Zlc4bTJoanNnJm9lPTY3QkI0QkZFJl9uY19zaWQ9MjAxMWFkIiwidGltZWxpbmVfcGlubmVkX3VzZXJfaWRzIjpbXSwidG9wX2xpa2VycyI6WyJseWFhcHJpbGluIl0sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjMsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6dHJ1ZSwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6MCwiZmFuX2NsdWJfaWQiOiI4MjcyNTQxMTI2MTYwMDQyIiwiZmFuX2NsdWJfbmFtZSI6IiIsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOnsic2hvdWxkX3Nob3dfY29udGVudF9wcmV2aWV3IjpmYWxzZSwic2hvdWxkX3Nob3dfc29jaWFsX2NvbnRleHQiOmZhbHNlfSwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOmZhbHNlLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6ZmFsc2UsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOmZhbHNlLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6MH0sImZiaWRfdjIiOjE3ODQxNDAwNTQ3NTY4MDU1LCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IlV6b25lLmlkIC0gTWVkaWEgVGVrbm9sb2dpICYgT3RvbW90aWYiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiNTE1NTM4MjUyIiwiaXNfZmF2b3JpdGUiOmZhbHNlLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6dHJ1ZSwicHJvZmlsZV9waWNfaWQiOiIzMzMyMjA2NzY3NjgwNDgwMzU5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzQzNDUxMjA5M18xNjA1MDQ4NzgzNjUzMTU1XzU3MzgzMzYxNzk1Njg3MzY5OTlfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MDlDbzRkYkRiYmdRN2tOdmdFNGwxZ24mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlBRUJ2WW9ORzhvbXJnSDBTS3pQYVhNenNJRDkweUZpWXVOYzFXVHhEU3dZdyZvZT02N0JCNDE1MCZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6InV6b25laW5kb25lc2lhIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYXJlX3JlbWl4ZXNfY3Jvc3Nwb3N0YWJsZSI6dHJ1ZSwiYXZhdGFyX3N0aWNrZXJzIjpbXSwiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9yZXBseSI6ZmFsc2UsImNhbl9yZXNoYXJlIjp0cnVlLCJjYW5fc2F2ZSI6dHJ1ZSwiY2FwdGlvbiI6eyJjcmVhdGVkX2F0IjoxNzM5NjQ2ODc1LCJjcmVhdGVkX2F0X3V0YyI6MTczOTY0Njg3NSwiZGlkX3JlcG9ydF9hc19zcGFtIjpmYWxzZSwiaGFzX3RyYW5zbGF0aW9uIjp0cnVlLCJoYXNodGFncyI6WyIjaW50ZWxpZ2VuY2lhYXJ0aWZpY2lhbCIsIiNpYSIsIiNjaGF0Z3B0IiwiI2FpIiwiI3RlY25vbG9nw61hIiwiI2lubm92YWNpw7NuIl0sImlkIjoiMzU2ODczNjkyNTQxNjAzNTA4MyIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbXSwicGsiOiIxNzkwNDgwMTYwOTAxNjU5NiIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IkxhIHByb2dyYW1hY2nDs24gY29tbyBsYSBjb25vY2Vz4oCmIGVzdMOhIHBvciBkZXNhcGFyZWNlci5cblxuU2FtIEFsdG1hbiBsbyBkaWpvIGNsYXJvOiBwYXJhIGZpbmFsZXMgZGUgMjAyNSwgbGEgaW5nZW5pZXLDrWEgZGUgc29mdHdhcmUgc2Vyw6EgaXJyZWNvbm9jaWJsZS5cblkgeWEgZXN0w6EgcGFzYW5kby5cblxuQW5kcmVqIEthcnBhdGh5LCB1bm8gZGUgbG9zIG1heW9yZXMgZXhwZXJ0b3MgZW4gSUEsIHlhIG5vIHByb2dyYW1hIGNvbW8gYW50ZXMuXG5BaG9yYSB1c2EgSUEgcGFyYSBlc2NyaWJpciBjw7NkaWdvIGNhc2kgc2luIHRvY2FyIGVsIHRlY2xhZG8uXG5cbkxlIGRpY2UgY29zYXMgY29tbzpcbuKAnFJlZHVjZSBlbCBlc3BhY2lhZG8gZGVsIG1lbsO6IGEgbGEgbWl0YWTigJ0geSBsYSBJQSBsbyBoYWNlLlxuU2kgaGF5IGVycm9yZXMsIGxvcyBjb3BpYSwgbG9zIHBlZ2HigKYgeSBzZSBjb3JyaWdlbiBzb2xvcy5cblxuRXN0byBubyBlcyB1bmEgaWRlYSBkZWwgZnV0dXJvLlxuRXMgZWwgaW5pY2lvIGRlIHVuYSBudWV2YSBmb3JtYSBkZSBjcmVhciBzb2Z0d2FyZS5cblxuQWxndW5vcyBkZXNhcnJvbGxhZG9yZXMgc2UgYWZlcnJhbiBhIGVzY3JpYmlyIGNhZGEgbMOtbmVhIGRlc2RlIGNlcm8uXG5QZXJvIG1pZW50cmFzIGVsbG9zIGRlZmllbmRlbiBzdSB0ZWNsYWRv4oCmXG5PdHJvcyB5YSBlc3TDoW4gY3JlYW5kbyAxMCB2ZWNlcyBtw6FzIHLDoXBpZG8gY29uIElBLlxuXG7Cv0VzdGFtb3MgdmllbmRvIGVsIGZpbiBkZSBsb3MgcHJvZ3JhbWFkb3JlcyB0cmFkaWNpb25hbGVz4oCmIG8gc29sbyBlbCBuYWNpbWllbnRvIGRlIHVuYSBudWV2YSDDqWxpdGU/XG5UZSBsZW8gZW4gbG9zIGNvbWVudGFyaW9zLlxuXG4jaW50ZWxpZ2VuY2lhYXJ0aWZpY2lhbCAjaWEgI2NoYXRncHQgI2FpICN0ZWNub2xvZ8OtYSAjaW5ub3ZhY2nDs24iLCJ0ZXh0X3RyYW5zbGF0aW9uIjoiUHJvZ3JhbW1pbmcgYXMgeW91IGtub3cgaXQuLi4gaXMgYWJvdXQgdG8gZGlzYXBwZWFyLlxuXG5TYW0gQWx0bWFuIG1hZGUgaXQgY2xlYXI6IGJ5IHRoZSBlbmQgb2YgMjAyNSwgc29mdHdhcmUgZW5naW5lZXJpbmcgd2lsbCBiZSB1bnJlY29nbml6YWJsZS5cbkFuZCBpdCdzIGFscmVhZHkgaGFwcGVuaW5nLlxuXG5BbmRyZWogS2FycGF0aHksIG9uZSBvZiB0aGUgdG9wIEFJIGV4cGVydHMsIGRvZXNuJ3QgcHJvZ3JhbSBsaWtlIGJlZm9yZS5cbiBBaG9yYSB1c2EgSUEgcGFyYSBlc2NyaWJpciBjw7NkaWdvIGNhc2kgc2luIHRvY2FyIGVsIHRlY2xhZG8uIFxuXG5TYXlzIHRoaW5ncyB0byBoaW0gbGlrZTpcbiDigJxSZWR1Y2UgZWwgZXNwYWNpYWRvIGRlbCBtZW7DuiBhIGxhIG1pdGFk4oCdIHkgbGEgSUEgbG8gaGFjZS4gXG4gU2kgaGF5IGVycm9yZXMsIGxvcyBjb3BpYSwgbG9zIHBlZ2HigKYgeSBzZSBjb3JyaWdlbiBzb2xvcy4gXG5cblRoaXMgaXMgbm90IGFuIGlkZWEgb2YgdGhlIGZ1dHVyZS5cbkl0J3MgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyB3YXkgdG8gY3JlYXRlIHNvZnR3YXJlLlxuXG4gQWxndW5vcyBkZXNhcnJvbGxhZG9yZXMgc2UgYWZlcnJhbiBhIGVzY3JpYmlyIGNhZGEgbMOtbmVhIGRlc2RlIGNlcm8uIFxuQnV0IHdoaWxlIHRoZXkgZGVmZW5kIHRoZWlyIGtleWJvYXJkLi4uXG4gT3Ryb3MgeWEgZXN0w6FuIGNyZWFuZG8gMTAgdmVjZXMgbcOhcyByw6FwaWRvIGNvbiBJQS4gXG5cbkFyZSB3ZSBzZWVpbmcgdGhlIGVuZCBvZiB0cmFkaXRpb25hbCBwcm9ncmFtbWVycy4uIG9yIGp1c3QgdGhlIGJpcnRoIG9mIGEgbmV3IGVsaXRlP1xuIFRlIGxlbyBlbiBsb3MgY29tZW50YXJpb3MuIFxuXG4gI2ludGVsaWdlbmNpYWFydGlmaWNpYWwgI2lhICNjaGF0Z3B0ICNhaSAjdGVjbm9sb2fDrWEgI2lubm92YWNpw7NuIiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQ1MzcwNDczNjY4MCwiZnVsbF9uYW1lIjoiRGFudGUgRGUgbGEgTyB8IEludGVsaWdlbmNpYSBBcnRpZmljaWFsIiwiaWQiOiI1MzczMzQ0NjE1NyIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMDIzMTY3MDYwODU5NzcxNTQ5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzMyNzAxMDY5NF83MDEzODc1ODE3NjkzNzZfMzEyODY2MTgzOTY2MTIyMjg1Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz04SUpjMC1IbFZ3Z1E3a052Z0haWHJ1aCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNOSkZBV1R1eldLVnhxU1ZPS3BmYUNWV2lzWVNpVUxKMUl5Sy1qTGE2bmxRJm9lPTY3QkI0RDI5Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJpYWNvbmRhbnRlIn0sInVzZXJfaWQiOiI1MzczMzQ0NjE1NyJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNsaXBzX21ldGFkYXRhIjp7ImFjaGlldmVtZW50c19pbmZvIjp7Im51bV9lYXJuZWRfYWNoaWV2ZW1lbnRzIjpudWxsLCJzaG93X2FjaGlldmVtZW50cyI6ZmFsc2V9LCJhZGRpdGlvbmFsX2F1ZGlvX2luZm8iOnsiYWRkaXRpb25hbF9hdWRpb191c2VybmFtZSI6bnVsbCwiYXVkaW9fcmVhdHRyaWJ1dGlvbl9pbmZvIjp7InNob3VsZF9hbGxvd19yZXN0b3JlIjpmYWxzZX19LCJhc3NldF9yZWNvbW1lbmRhdGlvbl9pbmZvIjpudWxsLCJhdWRpb19jYW5vbmljYWxfaWQiOiIxODQ2MDg0NDI3ODA2OTY4MiIsImF1ZGlvX3JhbmtpbmdfaW5mbyI6eyJiZXN0X2F1ZGlvX2NsdXN0ZXJfaWQiOiIxMzI1NzEwNTg1Mjg0NjcyIn0sImF1ZGlvX3R5cGUiOiJvcmlnaW5hbF9zb3VuZHMiLCJicmFuZGVkX2NvbnRlbnRfdGFnX2luZm8iOnsiY2FuX2FkZF90YWciOmZhbHNlfSwiYnJlYWtpbmdfY29udGVudF9pbmZvIjpudWxsLCJicmVha2luZ19jcmVhdG9yX2luZm8iOm51bGwsImNoYWxsZW5nZV9pbmZvIjpudWxsLCJjbGlwc19jcmVhdGlvbl9lbnRyeV9wb2ludCI6ImNsaXBzIiwiY29udGVudF9hcHByZWNpYXRpb25faW5mbyI6eyJlbmFibGVkIjp0cnVlLCJlbnRyeV9wb2ludF9jb250YWluZXIiOnsiY29tbWVudCI6eyJhY3Rpb25fdHlwZSI6ImdpZnRpbmcifSwib3ZlcmZsb3ciOm51bGwsInBpbGwiOnsiYWN0aW9uX3R5cGUiOiJnaWZ0aW5nIiwicHJpb3JpdHkiOjF9LCJ1ZmkiOm51bGx9fSwiY29udGV4dHVhbF9oaWdobGlnaHRfaW5mbyI6bnVsbCwiY3V0b3V0X3N0aWNrZXJfaW5mbyI6W10sImRpc2FibGVfdXNlX2luX2NsaXBzX2NsaWVudF9jYWNoZSI6ZmFsc2UsImV4dGVybmFsX21lZGlhX2luZm8iOm51bGwsImZlYXR1cmVkX2xhYmVsIjpudWxsLCJpc19mYW5fY2x1Yl9wcm9tb192aWRlbyI6ZmFsc2UsImlzX3B1YmxpY19jaGF0X3dlbGNvbWVfdmlkZW8iOmZhbHNlLCJpc19zaGFyZWRfdG9fZmIiOnRydWUsIm1hc2h1cF9pbmZvIjp7ImNhbl90b2dnbGVfbWFzaHVwc19hbGxvd2VkIjpmYWxzZSwiZm9ybWF0dGVkX21hc2h1cHNfY291bnQiOm51bGwsImhhc19iZWVuX21hc2hlZF91cCI6ZmFsc2UsImhhc19ub25taW1pY2FibGVfYWRkaXRpb25hbF9hdWRpbyI6ZmFsc2UsImlzX2NyZWF0b3JfcmVxdWVzdGluZ19tYXNodXAiOmZhbHNlLCJpc19saWdodF93ZWlnaHRfY2hlY2siOnRydWUsImlzX2xpZ2h0X3dlaWdodF9yZXVzZV9hbGxvd2VkX2NoZWNrIjpmYWxzZSwiaXNfcGl2b3RfcGFnZV9hdmFpbGFibGUiOmZhbHNlLCJpc19yZXVzZV9hbGxvd2VkIjp0cnVlLCJtYXNodXBfdHlwZSI6bnVsbCwibWFzaHVwc19hbGxvd2VkIjp0cnVlLCJub25fcHJpdmFjeV9maWx0ZXJlZF9tYXNodXBzX21lZGlhX2NvdW50IjowLCJvcmlnaW5hbF9tZWRpYSI6bnVsbCwicHJpdmFjeV9maWx0ZXJlZF9tYXNodXBzX21lZGlhX2NvdW50IjpudWxsfSwibWVyY2hhbmRpc2luZ19waWxsX2luZm8iOm51bGwsIm11c2ljX2luZm8iOm51bGwsIm51eF9pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjp7ImFsbG93X2NyZWF0b3JfdG9fcmVuYW1lIjp0cnVlLCJhdHRyaWJ1dGVkX2N1c3RvbV9hdWRpb19hc3NldF9pZCI6bnVsbCwiYXVkaW9fYXNzZXRfc3RhcnRfdGltZV9pbl9tcyI6bnVsbCwiYXVkaW9fZmlsdGVyX2luZm9zIjpbXSwiYXVkaW9faWQiOjI0OTMyOTYwMDEwMTMxNDUsImF1ZGlvX3BhcnRzIjpbXSwiYXVkaW9fcGFydHNfYnlfZmlsdGVyIjpbXSwiY2FuX3JlbWl4X2JlX3NoYXJlZF90b19mYiI6dHJ1ZSwiY2FuX3JlbWl4X2JlX3NoYXJlZF90b19mYl9leHBhbnNpb24iOmZhbHNlLCJjb25zdW1wdGlvbl9pbmZvIjp7ImRpc3BsYXlfbWVkaWFfaWQiOm51bGwsImlzX2Jvb2ttYXJrZWQiOmZhbHNlLCJpc190cmVuZGluZ19pbl9jbGlwcyI6ZmFsc2UsInNob3VsZF9tdXRlX2F1ZGlvX3JlYXNvbiI6IiIsInNob3VsZF9tdXRlX2F1ZGlvX3JlYXNvbl90eXBlIjpudWxsfSwiZHVyYXRpb25faW5fbXMiOjk5NTY3LCJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifSwiZm9ybWF0dGVkX2NsaXBzX21lZGlhX2NvdW50IjpudWxsLCJoaWRlX3JlbWl4aW5nIjpmYWxzZSwiaWdfYXJ0aXN0Ijp7ImZ1bGxfbmFtZSI6IkRhbnRlIERlIGxhIE8gfCBJbnRlbGlnZW5jaWEgQXJ0aWZpY2lhbCIsImlkIjoiNTM3MzM0NDYxNTciLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjMwMjMxNjcwNjA4NTk3NzE1NDkiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzI3MDEwNjk0XzcwMTM4NzU4MTc2OTM3Nl8zMTI4NjYxODM5NjYxMjIyODU2X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPThJSmMwLUhsVndnUTdrTnZnSFpYcnVoJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ05KRkFXVHV6V0tWeHFTVk9LcGZhQ1ZXaXNZU2lVTEoxSXlLLWpMYTZubFEmb2U9NjdCQjREMjkmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImlhY29uZGFudGUifSwiaXNfYXVkaW9fYXV0b21hdGljYWxseV9hdHRyaWJ1dGVkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX2F1ZGlvX2VmZmVjdHMiOnRydWUsImlzX2VsaWdpYmxlX2Zvcl92aW55bF9zdGlja2VyIjp0cnVlLCJpc19leHBsaWNpdCI6ZmFsc2UsImlzX29yaWdpbmFsX2F1ZGlvX2Rvd25sb2FkX2VsaWdpYmxlIjp0cnVlLCJpc19yZXVzZV9kaXNhYmxlZCI6ZmFsc2UsImlzX3hwb3N0X2Zyb21fZmIiOmZhbHNlLCJvYV9vd25lcl9pc19tdXNpY19hcnRpc3QiOmZhbHNlLCJvcmlnaW5hbF9hdWRpb19zdWJ0eXBlIjoiZGVmYXVsdCIsIm9yaWdpbmFsX2F1ZGlvX3RpdGxlIjoiT3JpZ2luYWwgYXVkaW8iLCJvcmlnaW5hbF9tZWRpYV9pZCI6MzU2ODczNjkyNTQxNjAzNTA4Mywib3ZlcmxhcF9kdXJhdGlvbl9pbl9tcyI6bnVsbCwicHJldmlvdXNfdHJlbmRfcmFuayI6bnVsbCwicHJvZ3Jlc3NpdmVfZG93bmxvYWRfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0L28xL3YvdDIvZjIvbTY5L0FRUGZtYTFKdUp5bXVfVXp4SnEtUWRKemRkZnZPZTYyVERnLUxLZGdMXzc3NmtTZkpiUFNzazFncUM5LVV6YVBsZzVPNkZZRE9sTUZ2WHNqSGowNVF1Z1UubXA0P3N0cmV4dD0xJl9uY19jYXQ9MTA0Jl9uY19zaWQ9OGJmOGZlJl9uY19odD1zY29udGVudC1kdXMxLTEueHguZmJjZG4ubmV0Jl9uY19vaGM9X25RZXQzXzE2Y2NRN2tOdmdGWVp1TFEmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW5od2RsOXdjbTluY21WemMybDJaUzVCVlVSSlQxOVBUa3haTGk1RE15NHdMbkJ5YjJkeVpYTnphWFpsWDJGMVpHbHZJaXdpZUhCMlgyRnpjMlYwWDJsa0lqbzFOVFUyT0RBNU16UXhOVEE0TmpFc0luVnliR2RsYmw5emIzVnlZMlVpT2lKM2QzY2lmUSUzRCUzRCZjY2I9OS00Jl9uY196dD0yOCZvaD0wMF9BWUNubmhFckh0ek5VeGJtV3VRSF94QWFrTTdGNjVleGNiY096ZUpab1JYX0tBJm9lPTY3QkIzOERBIiwic2hvdWxkX211dGVfYXVkaW8iOmZhbHNlLCJ0aW1lX2NyZWF0ZWQiOjE3Mzk2NDY4NzgsInRyZW5kX3JhbmsiOm51bGwsInhwb3N0X2ZiX2NyZWF0b3JfaW5mbyI6bnVsbH0sIm9yaWdpbmFsaXR5X2luZm8iOm51bGwsInByb2Zlc3Npb25hbF9jbGlwc191cHNlbGxfdHlwZSI6MCwicmVlbHNfb25fdGhlX3Jpc2VfaW5mbyI6bnVsbCwicmV1c2FibGVfdGV4dF9hdHRyaWJ1dGVfc3RyaW5nIjpudWxsLCJyZXVzYWJsZV90ZXh0X2luZm8iOm51bGwsInNob3BwaW5nX2luZm8iOm51bGwsInNob3dfYWNoaWV2ZW1lbnRzIjpmYWxzZSwic2hvd190aXBzIjpudWxsLCJ0ZW1wbGF0ZV9pbmZvIjpudWxsLCJ2aWV3ZXJfaW50ZXJhY3Rpb25fc2V0dGluZ3MiOm51bGx9LCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiY29kZSI6IkRHR3MxTmdQaE1MIiwiY29tbWVudF9jb3VudCI6MTYsImNvbW1lbnRfaW5mb3JtX3RyZWF0bWVudCI6eyJhY3Rpb25fdHlwZSI6bnVsbCwic2hvdWxkX2hhdmVfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsInRleHQiOiIiLCJ1cmwiOm51bGx9LCJjb21tZXJjZV9pbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoiIiwiY3JlYXRvcl92aWV3ZXJfaW5zaWdodHMiOltdLCJjcm9zc3Bvc3RfbWV0YWRhdGEiOnsiZmJfZG93bnN0cmVhbV91c2VfeHBvc3RfbWV0YWRhdGEiOnsiZG93bnN0cmVhbV91c2VfeHBvc3RfZGVueV9yZWFzb24iOiJOT05FIn19LCJkZWxldGVkX3JlYXNvbiI6MCwiZGV2aWNlX3RpbWVzdGFtcCI6MTczOTY0NjUxNDU4MTY5LCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfbGlrZV9jb3VudCI6MTUwLCJmYl9wbGF5X2NvdW50Ijo2NTk4LCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmJpZCI6IjE3OTA0ODAxMzM2MDE2NTk2IiwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJmZWVkX3R5cGUiOiJtZWRpYSIsImZpbHRlcl90eXBlIjowLCJmdW5kcmFpc2VyX3RhZyI6eyJoYXNfc3RhbmRhbG9uZV9mdW5kcmFpc2VyIjpmYWxzZX0sImdlbl9haV9kZXRlY3Rpb25fbWV0aG9kIjp7ImRldGVjdGlvbl9tZXRob2QiOiJOT05FIn0sImhhc19hdWRpbyI6dHJ1ZSwiaGFzX2hpZ2hfcmlza19nZW5fYWlfaW5mb3JtX3RyZWF0bWVudCI6ZmFsc2UsImhhc19saWtlZCI6ZmFsc2UsImhhc19wcml2YXRlbHlfbGlrZWQiOmZhbHNlLCJoYXNfc2hhcmVkX3RvX2ZiIjowLCJoYXNfdmlld3NfZmV0Y2hpbmciOnRydWUsImlkIjoiMzU2ODczNjkyNTQxNjAzNTA4MyIsImlnX21lZGlhX3NoYXJpbmdfZGlzYWJsZWQiOmZhbHNlLCJpZ19wbGF5X2NvdW50IjoxNTU2NiwiaWdiaW9fcHJvZHVjdCI6bnVsbCwiaW1hZ2VfdmVyc2lvbnMiOnsiYWRkaXRpb25hbF9pdGVtcyI6eyJmaXJzdF9mcmFtZSI6eyJoZWlnaHQiOjYzOSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTcwOTgzOV8yODU0ODY4ODE4MDM2NTQwXzc0MDI2MTYzOTI1NjQ4MTI2Mjdfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0Mk5EQjRNVEV6Tmk1elpISXVaamN4T0RjNExtRmtaR2wwYVc5dVlXeGZZMjkyWlhKZlpuSmhiV1VpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXdYUXhMbzh4cnE0UTdrTnZnRWlmeDhIJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQW5Zb0lVbFFfZmpVc2xTdkw3bi1pRkt3emRwU0wwbVY5b2hqTUJZQzl3UHcmb2U9NjdCQjU4MTMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfSwiaWd0dl9maXJzdF9mcmFtZSI6eyJoZWlnaHQiOjYzOSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3OTcwOTgzOV8yODU0ODY4ODE4MDM2NTQwXzc0MDI2MTYzOTI1NjQ4MTI2Mjdfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0Mk5EQjRNVEV6Tmk1elpISXVaamN4T0RjNExtRmtaR2wwYVc5dVlXeGZZMjkyWlhKZlpuSmhiV1VpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA0Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXdYUXhMbzh4cnE0UTdrTnZnRWlmeDhIJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQW5Zb0lVbFFfZmpVc2xTdkw3bi1pRkt3emRwU0wwbVY5b2hqTUJZQzl3UHcmb2U9NjdCQjU4MTMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfSwic21hcnRfZnJhbWUiOm51bGx9LCJpdGVtcyI6W3siaGVpZ2h0Ijo2MzksInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzcxNDcwMjRfMTEzNTk2NzYxMTU4NDk0N18zNjgxOTYxNDIzOTA1Mzc1OTc0X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDJOREI0TVRFek5pNXpaSEl1WmpjeE9EYzRMbTVtY21GdFpWOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1PdTNEWmVWOWZZWVE3a052Z0hTOXlnOSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EY3pOamt5TlRReE5qQXpOVEE0TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBclRZY21na1Z6dUNkeWp6SFB3RDdRQ3g2SWZFVTVRTE1PYTFfZEhONnZ4QSZvZT02N0JCMzdGOSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjozNTYsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0IjoxMjQ2LCJzcHJpdGVfdXJscyI6WyJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDgwMDM5MDUxXzE3MDcxMDg1MzY1MTAwOTNfNjg3MDY4OTg1NDc4OTcwMzUxOV9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDUmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Tzh4TkxUenRtbmdRN2tOdmdISDc1clkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDb29XTE43cWRnTEItMWxja3RNdllkczBKLTZtYzRmS3VUaVlnWHJEd05KQSZvZT02N0JCNTQ5NyZfbmNfc2lkPTIwMTFhZCJdLCJzcHJpdGVfd2lkdGgiOjE1MDAsInRodW1ibmFpbF9kdXJhdGlvbiI6MC45NDgyNDc2MTkwNDc2MTkxLCJ0aHVtYm5haWxfaGVpZ2h0IjoxNzgsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjo5OS41NjZ9fX0sImludGVncml0eV9yZXZpZXdfZGVjaXNpb24iOiJwZW5kaW5nIiwiaW52aXRlZF9jb2F1dGhvcl9wcm9kdWNlcnMiOltdLCJpc19hcnRpc3RfcGljayI6ZmFsc2UsImlzX2NvbW1lbnRzX2dpZl9jb21wb3Nlcl9lbmFibGVkIjp0cnVlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc190aGlyZF9wYXJ0eV9kb3dubG9hZHNfZWxpZ2libGUiOnRydWUsImlzX3ZpZGVvIjp0cnVlLCJsYXlvdXRfdHlwZSI6Im1lZGlhX2dyaWQiLCJsaWtlX2FuZF92aWV3X2NvdW50c19kaXNhYmxlZCI6ZmFsc2UsImxpa2VfY291bnQiOjcxMCwibWVkaWFfY3JvcHBpbmdfaW5mbyI6eyJzcXVhcmVfY3JvcCI6eyJjcm9wX2JvdHRvbSI6MC4wLCJjcm9wX2xlZnQiOjAuMCwiY3JvcF9yaWdodCI6MC4wLCJjcm9wX3RvcCI6MC4wfX0sIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6InJlZWwiLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjoyLCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOm51bGwsIm51bWJlcl9vZl9xdWFsaXRpZXMiOjcsIm9wZW5fY2Fyb3VzZWxfc2hvd19mb2xsb3dfYnV0dG9uIjpmYWxzZSwib3JpZ2luYWxfaGVpZ2h0IjoxOTIwLCJvcmlnaW5hbF93aWR0aCI6MTA4MCwicGsiOiIzNTY4NzM2OTI1NDE2MDM1MDgzIiwicGxheV9jb3VudCI6MjIxNjQsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2xpcHMiLCJyZXNoYXJlX2NvdW50IjozNjUsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTY0Njg3NCwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzcxNDcwMjRfMTEzNTk2NzYxMTU4NDk0N18zNjgxOTYxNDIzOTA1Mzc1OTc0X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDJOREI0TVRFek5pNXpaSEl1WmpjeE9EYzRMbTVtY21GdFpWOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTExMSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1PdTNEWmVWOWZZWVE3a052Z0hTOXlnOSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk9EY3pOamt5TlRReE5qQXpOVEE0TXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBclRZY21na1Z6dUNkeWp6SFB3RDdRQ3g2SWZFVTVRTE1PYTFfZEhONnZ4QSZvZT02N0JCMzdGOSZfbmNfc2lkPTIwMTFhZCIsInRpbWVsaW5lX3Bpbm5lZF91c2VyX2lkcyI6W10sInRvcF9saWtlcnMiOltdLCJ0cmFuc2xhdGVkX3ZpZGVvX3N1YnRpdGxlcyI6W3sibGFuZ3VhZ2UiOiJlbiIsInVyaSI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90MzkuMzY3NDMtNi80ODA1MjU2OTFfNjM0MDAzODMyNDE3MjgyXzU1Mzk2MjgxMzYxOTkyNTEzNzJfbi5zcnQ/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUZSSGtmSmpGbVFVUTdrTnZnSHpVVGRUJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQkwxbTRDYXBoaHh0THYyOW1VNDRQUXVNY3gwQjdCYnRIakJlYk9kb1Zfbmcmb2U9NjdCQjQyOEUmX25jX3NpZD0yMDExYWQifV0sInVzZXIiOnsiYWNjb3VudF9iYWRnZXMiOltdLCJhY2NvdW50X3R5cGUiOjIsImZhbl9jbHViX2luZm8iOnsiYXV0b3NhdmVfdG9fZXhjbHVzaXZlX2hpZ2hsaWdodCI6bnVsbCwiY29ubmVjdGVkX21lbWJlcl9jb3VudCI6bnVsbCwiZmFuX2NsdWJfaWQiOm51bGwsImZhbl9jbHViX25hbWUiOm51bGwsImZhbl9jb25zaWRlcmF0aW9uX3BhZ2VfcmV2YW1wX2VsaWdpYmxpdHkiOm51bGwsImhhc19jcmVhdGVkX3NzYyI6bnVsbCwiaGFzX2Vub3VnaF9zdWJzY3JpYmVyc19mb3Jfc3NjIjpudWxsLCJpc19mYW5fY2x1Yl9naWZ0aW5nX2VsaWdpYmxlIjpudWxsLCJpc19mYW5fY2x1Yl9yZWZlcnJhbF9lbGlnaWJsZSI6bnVsbCwiaXNfZnJlZV90cmlhbF9lbGlnaWJsZSI6bnVsbCwibGFyZ2VzdF9wdWJsaWNfYmNfaWQiOm51bGwsInN1YnNjcmliZXJfY291bnQiOm51bGx9LCJmYmlkX3YyIjoxNzg0MTQ1MzcwNDczNjY4MCwiZmVlZF9wb3N0X3Jlc2hhcmVfZGlzYWJsZWQiOmZhbHNlLCJmdWxsX25hbWUiOiJEYW50ZSBEZSBsYSBPIHwgSW50ZWxpZ2VuY2lhIEFydGlmaWNpYWwiLCJoYXNfYW5vbnltb3VzX3Byb2ZpbGVfcGljdHVyZSI6ZmFsc2UsImlkIjoiNTM3MzM0NDYxNTciLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMDIzMTY3MDYwODU5NzcxNTQ5IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzMyNzAxMDY5NF83MDEzODc1ODE3NjkzNzZfMzEyODY2MTgzOTY2MTIyMjg1Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz04SUpjMC1IbFZ3Z1E3a052Z0haWHJ1aCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNOSkZBV1R1eldLVnhxU1ZPS3BmYUNWV2lzWVNpVUxKMUl5Sy1qTGE2bmxRJm9lPTY3QkI0RDI5Jl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoiaWFjb25kYW50ZSJ9LCJ2aWRlb19jb2RlYyI6InZwMDkuMDAuMzEuMDguMDAuMDEuMDEuMDEuMDAiLCJ2aWRlb19kdXJhdGlvbiI6OTkuNTY2LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb19zdWJ0aXRsZXNfY29uZmlkZW5jZSI6MC41LCJ2aWRlb19zdWJ0aXRsZXNfbG9jYWxlIjoiZXNfQ0wiLCJ2aWRlb19zdWJ0aXRsZXNfdXJpIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3QzOS4zNjc0My02LzQ4MDI1MjYyNF8xMTMyMzMwNTU1MzQwODkyXzQwOTk5MzcxOTk2MjI0NjY1NDlfbi5zcnQ/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTRqWE82aG9jVklNUTdrTnZnRUwzUlFmJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdBQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ2RpbEpHVXpncnJjY21mRGpjcWNMZ3RCa0x4algyVUc2UDJlckZYYi0tQWcmb2U9NjdCQjY3MEMmX25jX3NpZD0yMDExYWQiLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUVBEQmY4dXNpYUtaLTRnWC1fV2daY2JBNmt3eTU3Y0gwazVzTG5RWXFjRWxSTXlDcVJKd0lHeVJZS1N6NGhaZzh3SzFCdG9QTkNqTklCZnF5TUxrUW4zeFdzeW9ueXY4UGhSTjhvLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalUxTlRZNE1Ea3pOREUxTURnMk1Td2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOTVNWQlRMa016TGpjeU1DNWtZWE5vWDJKaGMyVnNhVzVsWHpGZmRqRWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9ZmZmNmU0M2Q3OTYxZWVmOCZfbmNfdnM9SEJrc0ZRSVlVbWxuWDNod2RsOXlaV1ZzYzE5d1pYSnRZVzVsYm5SZmMzSmZjSEp2WkM4NE9EUXdOVGMyT0VNeE5Ua3pPRGMyUTBFM09VWTFRVFpEUlVZMk1VSkJORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZExOVUp0UW5jM2VXOW5hV05FYzBkQlJGaEhhMFpZY21rMVFrTmljVjlGUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcHFMZ3N2eDJQd0JGUUlvQWtNekxCZEFXT1E1V0JCaVRoZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxX2djQSZjY2I9OS00Jm9oPTAwX0FZRDByV2U3NmI4ZHczOWp6X1NFUFkzOE1FTmxlZkhvYmMyaXhWOUFpSmotdVEmb2U9NjdCNzVEOUUmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjo3MzM2MTMsImhlaWdodCI6MTI4MCwiaWQiOiIxNzc3ODMyNjIzMDU2MzYzdiIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODYvQVFQREJmOHVzaWFLWi00Z1gtX1dnWmNiQTZrd3k1N2NIMGs1c0xuUVlxY0VsUk15Q3FSSndJR3lSWUtTejRoWmc4d0sxQnRvUE5Dak5JQmZxeU1Ma1FuM3hXc3lvbnl2OFBoUk44by5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pVMU5UWTRNRGt6TkRFMU1EZzJNU3dpZG1WdVkyOWtaVjkwWVdjaU9pSjRjSFpmY0hKdlozSmxjM05wZG1VdVNVNVRWRUZIVWtGTkxrTk1TVkJUTGtNekxqY3lNQzVrWVhOb1gySmhjMlZzYVc1bFh6RmZkakVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2JnZzPWZmZjZlNDNkNzk2MWVlZjgmX25jX3ZzPUhCa3NGUUlZVW1sblgzaHdkbDl5WldWc2MxOXdaWEp0WVc1bGJuUmZjM0pmY0hKdlpDODRPRFF3TlRjMk9FTXhOVGt6T0RjMlEwRTNPVVkxUVRaRFJVWTJNVUpCTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRMTlVKdFFuYzNlVzluYVdORWMwZEJSRmhIYTBaWWNtazFRa05pY1Y5RlFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnBxTGdzdngyUHdCRlFJb0FrTXpMQmRBV09RNVdCQmlUaGdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMV9nY0EmY2NiPTktNCZvaD0wMF9BWUQwcldlNzZiOGR3Mzlqel9TRVBZMzhNRU5sZWZIb2JjMml4VjlBaUpqLXVRJm9lPTY3Qjc1RDlFJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjczMzYxMywiaGVpZ2h0IjoxMjgwLCJpZCI6IjE3Nzc4MzI2MjMwNTYzNjN2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204Ni9BUVBEQmY4dXNpYUtaLTRnWC1fV2daY2JBNmt3eTU3Y0gwazVzTG5RWXFjRWxSTXlDcVJKd0lHeVJZS1N6NGhaZzh3SzFCdG9QTkNqTklCZnF5TUxrUW4zeFdzeW9ueXY4UGhSTjhvLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPalUxTlRZNE1Ea3pOREUxTURnMk1Td2lkbVZ1WTI5a1pWOTBZV2NpT2lKNGNIWmZjSEp2WjNKbGMzTnBkbVV1U1U1VFZFRkhVa0ZOTGtOTVNWQlRMa016TGpjeU1DNWtZWE5vWDJKaGMyVnNhVzVsWHpGZmRqRWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDYmdnM9ZmZmNmU0M2Q3OTYxZWVmOCZfbmNfdnM9SEJrc0ZRSVlVbWxuWDNod2RsOXlaV1ZzYzE5d1pYSnRZVzVsYm5SZmMzSmZjSEp2WkM4NE9EUXdOVGMyT0VNeE5Ua3pPRGMyUTBFM09VWTFRVFpEUlVZMk1VSkJORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZExOVUp0UW5jM2VXOW5hV05FYzBkQlJGaEhhMFpZY21rMVFrTmljVjlGUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcHFMZ3N2eDJQd0JGUUlvQWtNekxCZEFXT1E1V0JCaVRoZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxX2djQSZjY2I9OS00Jm9oPTAwX0FZRDByV2U3NmI4ZHczOWp6X1NFUFkzOE1FTmxlZkhvYmMyaXhWOUFpSmotdVEmb2U9NjdCNzVEOUUmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6NzIwfSx7ImJhbmR3aWR0aCI6NzMzNjEzLCJoZWlnaHQiOjEyODAsImlkIjoiMTc3NzgzMjYyMzA1NjM2M3YiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg2L0FRUERCZjh1c2lhS1otNGdYLV9XZ1pjYkE2a3d5NTdjSDBrNXNMblFZcWNFbFJNeUNxUkp3SUd5UllLU3o0aFpnOHdLMUJ0b1BOQ2pOSUJmcXlNTGtRbjN4V3N5b255djhQaFJOOG8ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qVTFOVFk0TURrek5ERTFNRGcyTVN3aWRtVnVZMjlrWlY5MFlXY2lPaUo0Y0haZmNISnZaM0psYzNOcGRtVXVTVTVUVkVGSFVrRk5Ma05NU1ZCVExrTXpMamN5TUM1a1lYTm9YMkpoYzJWc2FXNWxYekZmZGpFaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz1mZmY2ZTQzZDc5NjFlZWY4Jl9uY192cz1IQmtzRlFJWVVtbG5YM2h3ZGw5eVpXVnNjMTl3WlhKdFlXNWxiblJmYzNKZmNISnZaQzg0T0RRd05UYzJPRU14TlRrek9EYzJRMEUzT1VZMVFUWkRSVVkyTVVKQk5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkTE5VSnRRbmMzZVc5bmFXTkVjMGRCUkZoSGEwWlljbWsxUWtOaWNWOUZRVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpwcUxnc3Z4MlB3QkZRSW9Ba016TEJkQVdPUTVXQkJpVGhnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjFfZ2NBJmNjYj05LTQmb2g9MDBfQVlEMHJXZTc2YjhkdzM5anpfU0VQWTM4TUVObGVmSG9iYzJpeFY5QWlKai11USZvZT02N0I3NUQ5RSZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9XX0seyJib29zdF91bmF2YWlsYWJsZV9pZGVudGlmaWVyIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb24iOm51bGwsImJvb3N0X3VuYXZhaWxhYmxlX3JlYXNvbl92MiI6bnVsbCwiY2FuX3JlcGx5IjpmYWxzZSwiY2FuX3Jlc2hhcmUiOnRydWUsImNhbl9zYXZlIjp0cnVlLCJjYXB0aW9uIjp7ImNyZWF0ZWRfYXQiOjE3MzkxNDIwMTEsImNyZWF0ZWRfYXRfdXRjIjoxNzM5MTQyMDExLCJkaWRfcmVwb3J0X2FzX3NwYW0iOmZhbHNlLCJoYXNodGFncyI6WyIjZW50cmVwcmVuZXVycyIsIiNDaGF0R1BUIiwiI2J1c2luZXNzIl0sImlkIjoiMzU2NDUwMzk0ODU3NDE2NzM5MyIsImlzX2NvdmVyZWQiOmZhbHNlLCJpc19yYW5rZWRfY29tbWVudCI6ZmFsc2UsIm1lbnRpb25zIjpbXSwicGsiOiIxNzk0NTYxNjA1OTk0MTc3OSIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IlRob3VzYW5kcyBvZiAjZW50cmVwcmVuZXVycyBhcmUgdXNpbmcgI0NoYXRHUFQgZGFpbHksIGJ1dCBtb3N0IGFyZW4ndCBnZXR0aW5nIHRoZSByZXN1bHRzIHRoZXkgd2FudC4gV2hpbGUgZXZlcnlvbmUgZWxzZSBjb3BpZXMgYmFzaWMgcHJvbXB0cyBmcm9tIFR3aXR0ZXIgdGhyZWFkcywgc3VjY2Vzc2Z1bCAjYnVzaW5lc3Mgb3duZXJzIGhhdmUgZGV2ZWxvcGVkIHRoZWlyIG93biBtZXRob2RzIHRoYXQgY29uc2lzdGVudGx5IGRlbGl2ZXIgdmFsdWUuXG5cblRoZXNlIGZvdW5kZXJzIGFuZCBDRU9zIHNoYXJlZCB0aGVpciBhY3R1YWwgcHJvbXB0cywgdGVzdGVkIGFuZCByZWZpbmVkIHRocm91Z2ggcmVndWxhciB1c2UuIENvcHkgdGhlaXIgbWV0aG9kcyB0byBhY2hpZXZlIGJldHRlciByZXN1bHRzIGluIGxlc3MgdGltZS4gU2VlIHdoYXQgdGhleSB0eXBlIGV2ZXJ5IGRheSBhdCB0aGUgbGluayBpbiBvdXIgYmlvLiIsInR5cGUiOjEsInVzZXIiOnsiZmJpZF92MiI6MTc4NDE0MDEyMjEzOTM4NzEsImZ1bGxfbmFtZSI6IkZvcmJlcyIsImlkIjoiMjQ3Nzg0NzEzIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOnRydWUsInByb2ZpbGVfcGljX2lkIjoiMzIwOTQyMjE3MzcxNDMwNzcyMCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8zODY4NDU1MDhfMTQyMjQzNDU5MTYzNDYyMF8zMDAzNTQ1MzcwMDExNDc2NTEwX24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVJ6eWNJVlJBSkdjUTdrTnZnSExZY1JXJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQ3J5UUhFclJYQVJGVnRiazZ3ZERkbUs1WTF6YWoxSkM0WHJfQWJ3Z1M5TXcmb2U9NjdCQjRGNTYmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6ImZvcmJlcyJ9LCJ1c2VyX2lkIjoiMjQ3Nzg0NzEzIn0sImNhcHRpb25faXNfZWRpdGVkIjpmYWxzZSwiY2xpcHNfdGFiX3Bpbm5lZF91c2VyX2lkcyI6W10sImNvYXV0aG9yX3Byb2R1Y2VyX2Nhbl9zZWVfb3JnYW5pY19pbnNpZ2h0cyI6ZmFsc2UsImNvYXV0aG9yX3Byb2R1Y2VycyI6W10sImNvZGUiOiJERjNxWFNuUFpGaCIsImNvbW1lbnRfY291bnQiOjE1LCJjb21tZW50X2luZm9ybV90cmVhdG1lbnQiOnsiYWN0aW9uX3R5cGUiOm51bGwsInNob3VsZF9oYXZlX2luZm9ybV90cmVhdG1lbnQiOmZhbHNlLCJ0ZXh0IjoiIiwidXJsIjpudWxsfSwiY29tbWVyY2VfaW50ZWdyaXR5X3Jldmlld19kZWNpc2lvbiI6IiIsImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5MTQyMDA5LCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxNzk0NTYxNjA0MTk0MTc3OSIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTY0NTAzOTQ4NTc0MTY3MzkzIiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY4NzU0OTVfNjA2MzU1MDQyMTMzMzU3XzgyMDAzNjYwODAyNzYzNzA3ODJfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWXlPRGcxTG1SbFptRjFiSFJmYVcxaFoyVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDUmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9X1FVNVptUFVkem9RN2tOdmdHWDhldk8mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJORFV3TXprME9EVTNOREUyTnpNNU13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1YxNlRMcmdxeEd0aVlrSkxFV09vLUdxRElaZ2NkbWtpU3U3Sy03cHhwcXcmb2U9NjdCQjNDMkMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3Njg3NTQ5NV82MDYzNTUwNDIxMzMzNTdfODIwMDM2NjA4MDI3NjM3MDc4Ml9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWXlPRGcxTG1SbFptRjFiSFJmYVcxaFoyVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDUmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9X1FVNVptUFVkem9RN2tOdmdHWDhldk8mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJORFV3TXprME9EVTNOREUyTnpNNU13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQmZ4N1hLZnl5ZnJIWWhqa3JCV28wRTlQNDJGRTFVRE0zQnhSVlptLTczemcmb2U9NjdCQjNDMkMmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoicGVuZGluZyIsImludml0ZWRfY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOmZhbHNlLCJpc19jdXRvdXRfc3RpY2tlcl9hbGxvd2VkIjpmYWxzZSwiaXNfZWxpZ2libGVfY29udGVudF9mb3JfcG9zdF9yb2xsX2FkIjpmYWxzZSwiaXNfZWxpZ2libGVfZm9yX21lZGlhX25vdGVfcmVjc19udXgiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWV0YV9haV9zaGFyZSI6ZmFsc2UsImlzX2luX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsImlzX29wZW5fdG9fcHVibGljX3N1Ym1pc3Npb24iOmZhbHNlLCJpc19vcmdhbmljX3Byb2R1Y3RfdGFnZ2luZ19lbGlnaWJsZSI6dHJ1ZSwiaXNfcGFpZF9wYXJ0bmVyc2hpcCI6ZmFsc2UsImlzX3Bpbm5lZCI6ZmFsc2UsImlzX3Bvc3RfbGl2ZV9jbGlwc19tZWRpYSI6ZmFsc2UsImlzX3Jlc2hhcmVfb2ZfdGV4dF9wb3N0X2FwcF9tZWRpYV9pbl9pZyI6ZmFsc2UsImlzX3NvY2lhbF91ZmlfZGlzYWJsZWQiOmZhbHNlLCJpc190YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3ZpZXdlcl9wcm9maWxlX2dyaWQiOmZhbHNlLCJpc192aWRlbyI6ZmFsc2UsImxheW91dF90eXBlIjoibWVkaWFfZ3JpZCIsImxpa2VfYW5kX3ZpZXdfY291bnRzX2Rpc2FibGVkIjpmYWxzZSwibGlrZV9jb3VudCI6MTEzNCwibWFzaHVwX2luZm8iOnsiY2FuX3RvZ2dsZV9tYXNodXBzX2FsbG93ZWQiOmZhbHNlLCJmb3JtYXR0ZWRfbWFzaHVwc19jb3VudCI6bnVsbCwiaGFzX2JlZW5fbWFzaGVkX3VwIjpmYWxzZSwiaGFzX25vbm1pbWljYWJsZV9hZGRpdGlvbmFsX2F1ZGlvIjpmYWxzZSwiaXNfY3JlYXRvcl9yZXF1ZXN0aW5nX21hc2h1cCI6ZmFsc2UsImlzX2xpZ2h0X3dlaWdodF9jaGVjayI6dHJ1ZSwiaXNfbGlnaHRfd2VpZ2h0X3JldXNlX2FsbG93ZWRfY2hlY2siOmZhbHNlLCJpc19waXZvdF9wYWdlX2F2YWlsYWJsZSI6ZmFsc2UsImlzX3JldXNlX2FsbG93ZWQiOmZhbHNlLCJtYXNodXBfdHlwZSI6bnVsbCwibWFzaHVwc19hbGxvd2VkIjpmYWxzZSwibm9uX3ByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6MCwib3JpZ2luYWxfbWVkaWEiOm51bGwsInByaXZhY3lfZmlsdGVyZWRfbWFzaHVwc19tZWRpYV9jb3VudCI6bnVsbH0sIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6InBvc3QiLCJtZWRpYV9ub3RlcyI6eyJpdGVtcyI6W119LCJtZWRpYV90eXBlIjoxLCJtZXRhX2FpX3N1Z2dlc3RlZF9wcm9tcHRzIjpbXSwibXVzaWNfbWV0YWRhdGEiOnsiYXVkaW9fY2Fub25pY2FsX2lkIjoiMCIsImF1ZGlvX3R5cGUiOm51bGwsIm11c2ljX2luZm8iOm51bGwsIm9yaWdpbmFsX3NvdW5kX2luZm8iOm51bGwsInBpbm5lZF9tZWRpYV9pZHMiOm51bGx9LCJvcGVuX2Nhcm91c2VsX3Nob3dfZm9sbG93X2J1dHRvbiI6ZmFsc2UsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NDUwMzk0ODU3NDE2NzM5MyIsInByZXZpZXdfY29tbWVudHMiOltdLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiZmVlZCIsInNoYXJlX2NvdW50X2Rpc2FibGVkIjpmYWxzZSwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwic2hvdWxkX3Nob3dfYXV0aG9yX3BvZ19mb3JfdGFnZ2VkX21lZGlhX3NoYXJlZF90b19wcm9maWxlX2dyaWQiOmZhbHNlLCJzdWJzY3JpYmVfY3RhX3Zpc2libGUiOmZhbHNlLCJ0YWtlbl9hdCI6MTczOTE0MjAwOSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY4NzU0OTVfNjA2MzU1MDQyMTMzMzU3XzgyMDAzNjYwODAyNzYzNzA3ODJfbi5qcGc/c2U9NyZzdHA9ZHN0LWpwZ19lMzVfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TURnd2VERXpOVEF1YzJSeUxtWXlPRGcxTG1SbFptRjFiSFJmYVcxaFoyVWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDUmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9X1FVNVptUFVkem9RN2tOdmdHWDhldk8mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJORFV3TXprME9EVTNOREUyTnpNNU13JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ1YxNlRMcmdxeEd0aVlrSkxFV09vLUdxRElaZ2NkbWtpU3U3Sy03cHhwcXcmb2U9NjdCQjNDMkMmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOltdLCJ0b3BfbGlrZXJzIjpbXSwidXNlciI6eyJhY2NvdW50X2JhZGdlcyI6W10sImFjY291bnRfdHlwZSI6MiwiZmFuX2NsdWJfaW5mbyI6eyJhdXRvc2F2ZV90b19leGNsdXNpdmVfaGlnaGxpZ2h0IjpudWxsLCJjb25uZWN0ZWRfbWVtYmVyX2NvdW50IjpudWxsLCJmYW5fY2x1Yl9pZCI6bnVsbCwiZmFuX2NsdWJfbmFtZSI6bnVsbCwiZmFuX2NvbnNpZGVyYXRpb25fcGFnZV9yZXZhbXBfZWxpZ2libGl0eSI6bnVsbCwiaGFzX2NyZWF0ZWRfc3NjIjpudWxsLCJoYXNfZW5vdWdoX3N1YnNjcmliZXJzX2Zvcl9zc2MiOm51bGwsImlzX2Zhbl9jbHViX2dpZnRpbmdfZWxpZ2libGUiOm51bGwsImlzX2Zhbl9jbHViX3JlZmVycmFsX2VsaWdpYmxlIjpudWxsLCJpc19mcmVlX3RyaWFsX2VsaWdpYmxlIjpudWxsLCJsYXJnZXN0X3B1YmxpY19iY19pZCI6bnVsbCwic3Vic2NyaWJlcl9jb3VudCI6bnVsbH0sImZiaWRfdjIiOjE3ODQxNDAxMjIxMzkzODcxLCJmZWVkX3Bvc3RfcmVzaGFyZV9kaXNhYmxlZCI6ZmFsc2UsImZ1bGxfbmFtZSI6IkZvcmJlcyIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiIyNDc3ODQ3MTMiLCJpc19mYXZvcml0ZSI6ZmFsc2UsImlzX3ByaXZhdGUiOmZhbHNlLCJpc191bnB1Ymxpc2hlZCI6ZmFsc2UsImlzX3ZlcmlmaWVkIjp0cnVlLCJwcm9maWxlX3BpY19pZCI6IjMyMDk0MjIxNzM3MTQzMDc3MjAiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMzg2ODQ1NTA4XzE0MjI0MzQ1OTE2MzQ2MjBfMzAwMzU0NTM3MDAxMTQ3NjUxMF9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1SenljSVZSQUpHY1E3a052Z0hMWWNSVyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNyeVFIRXJSWEFSRlZ0Yms2d2REZG1LNVkxemFqMUpDNFhyX0Fid2dTOU13Jm9lPTY3QkI0RjU2Jl9uY19zaWQ9MjAxMWFkIiwic2hvd19hY2NvdW50X3RyYW5zcGFyZW5jeV9kZXRhaWxzIjp0cnVlLCJ0aGlyZF9wYXJ0eV9kb3dubG9hZHNfZW5hYmxlZCI6MSwidHJhbnNwYXJlbmN5X3Byb2R1Y3RfZW5hYmxlZCI6ZmFsc2UsInVzZXJuYW1lIjoiZm9yYmVzIn0sInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiYm9vc3RfdW5hdmFpbGFibGVfaWRlbnRpZmllciI6bnVsbCwiYm9vc3RfdW5hdmFpbGFibGVfcmVhc29uIjpudWxsLCJib29zdF91bmF2YWlsYWJsZV9yZWFzb25fdjIiOm51bGwsImNhbl9tb2RpZnlfY2Fyb3VzZWwiOmZhbHNlLCJjYW5fcmVwbHkiOmZhbHNlLCJjYW5fcmVzaGFyZSI6dHJ1ZSwiY2FuX3NhdmUiOnRydWUsImNhcHRpb24iOnsiY3JlYXRlZF9hdCI6MTczOTMwNDkwMCwiY3JlYXRlZF9hdF91dGMiOjE3MzkzMDQ5MDAsImRpZF9yZXBvcnRfYXNfc3BhbSI6ZmFsc2UsImhhc2h0YWdzIjpbIiNPcGVuQWwiLCIjQ2hhdEdQVCIsIiNicmFuZCIsIiNkZXNpZ24iXSwiaWQiOiIzNTY1ODcwNDA2MjY5ODQ3NzIxIiwiaXNfY292ZXJlZCI6ZmFsc2UsImlzX3JhbmtlZF9jb21tZW50IjpmYWxzZSwibWVudGlvbnMiOlsiQG9wZW5haSIsIkBjaGF0Z3B0IiwiQHN0dWRpb2R1bWJhciIsIkBhYmNkaW5hbW8iXSwicGsiOiIxODAzODI2MjM1MDQzNDE5MyIsInByaXZhdGVfcmVwbHlfc3RhdHVzIjowLCJzaGFyZV9lbmFibGVkIjpmYWxzZSwidGV4dCI6IkdyYXRlZnVsIHRvIGJlIHBhcnQgb2YgdGhlIE9wZW5BSSBkZXNpZ24gdGVhbSwgcmVmcmVzaGluZyBhbmQgZXZvbHZpbmcgT3BlbkFJ4oCZcyB2aXN1YWwgaWRlbnRpdHkuIEEgaHVnZSB0aGFua3MgdG8gZXZlcnlvbmUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMgd29yaywgd2l0aCBzdXBwb3J0IGZyb20gb3VyIGNyZWF0aXZlIHBhcnRuZXJzLlxuXG4jT3BlbkFsICNDaGF0R1BUICNicmFuZCAjZGVzaWduIEBvcGVuYWkgQGNoYXRncHQgQHN0dWRpb2R1bWJhciBAYWJjZGluYW1vIiwidHlwZSI6MSwidXNlciI6eyJmYmlkX3YyIjoxNzg0MTQwMDg4NjIzMDY5OCwiZnVsbF9uYW1lIjoiRGFuaWVsIFN0dWhscGZhcnJlciIsImlkIjoiNDQ3MDE1NDEiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdW5wdWJsaXNoZWQiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMjc2OTE1NjI5MzUwOTkxMTU3MSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8yNzM1MDg5MThfMTY1OTAwODQyNDQyMTgxXzQ0MjE2NTMwMDM3NTk5MzU5NzZfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMSZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz16MGJPOFN6Y2VqY1E3a052Z0Vza1NmNCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUJsMW5INy1DNjd1MlBUTEVxQTFSbG1iTkJwcUZZNUZwU0N1V2R1WFRQMUFBJm9lPTY3QkI1M0ZBJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJkYW5pZWxfc3R1aGxwZmFycmVyIn0sInVzZXJfaWQiOiI0NDcwMTU0MSJ9LCJjYXB0aW9uX2lzX2VkaXRlZCI6ZmFsc2UsImNhcm91c2VsX21lZGlhIjpbeyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY1ODcwNDA2MjY5ODQ3NzIxXzQ0NzAxNTQxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NTg3MDM5MTE5NTU1OTg5NSIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY5MTEzNTBfMTg0ODUxMTczMTcwMjk1NDJfMzg5NzM4MzI4NDA3NTQ0NzQ4NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M3RJbWF1a21IZkFRN2tOdmdIdWc1eWkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1URTVOVFUxT1RnNU5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRE1NYmhWN3p6Y3RhWjdkT09GOEFaNDh0Qk8xZWhXX0VrMGxLd0cwdzRuVlEmb2U9NjdCQjY2NkEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NjkxMTM1MF8xODQ4NTExNzMxNzAyOTU0Ml8zODk3MzgzMjg0MDc1NDQ3NDg0X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M3RJbWF1a21IZkFRN2tOdmdIdWc1eWkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1URTVOVFUxT1RnNU5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQWkyRzNkUjZ1TWtxQ19sS0I2cVROZFJFaXNhMExDVTZhenZaSzlmX1VMd1Emb2U9NjdCQjY2NkEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE4MDAsIm9yaWdpbmFsX3dpZHRoIjoxNDQwLCJwayI6IjM1NjU4NzAzOTExOTU1NTk4OTUiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRhZ2dlZF91c2VycyI6eyJpbiI6W3sicG9zaXRpb24iOlswLjUsMC41XSwic2hvd19jYXRlZ29yeV9vZl91c2VyIjpmYWxzZSwidXNlciI6eyJmdWxsX25hbWUiOiJzaGFubm9uamFnZXIiLCJpZCI6IjM2MTkyNDA0IiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzEwODk5MzQwXzU5OTAzNTA4MDIzMDE0M18xOTU1NjkzNDk0X2EuanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Yzc0TGpUYklBSTRRN2tOdmdGTWpHaFQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCcHNLa2ZQT0dOZnNDOS03N1ZaMGhyWWZVckdCUDYxekVpbHJWNTN5bG5aUSZvZT02N0JCM0U4RSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoic2hhbm5vbmphZ2VyIn19LHsicG9zaXRpb24iOlswLjUsMC41XSwic2hvd19jYXRlZ29yeV9vZl91c2VyIjpmYWxzZSwidXNlciI6eyJmdWxsX25hbWUiOiJaZWl0eXBlIiwiaWQiOiIzOTQ0MDMwOSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzMwMDM1ODMwMzI5MjcwOTAwMiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80Mjc1MjY0MTFfNDE3NDg2NTI0MDYyMzIyXzE2Nzg3NTM5NjM2MTcwODc1NDZfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1VVXRSdlYxUGZuZ1E3a052Z0VENG0zNiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNUNVN0d3FrOFZOZlQxTDVQMzloUTNFSmkxVUhvZVZ4MG9oc05Ma2ptVE9RJm9lPTY3QkI1NzUwJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJ6ZWl0eXBlIn19LHsicG9zaXRpb24iOlswLjUsMC41XSwic2hvd19jYXRlZ29yeV9vZl91c2VyIjpmYWxzZSwidXNlciI6eyJmdWxsX25hbWUiOiJJbmRnaWxhIFNhbWFkIEFsaSBBbGl6YWkiLCJpZCI6IjI3ODc1MzY0MSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMjE3NDgwMzU1OTQ2NDIwMzU3NSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS83MjcyMDYwMV8yNTY5NTgzODM2NDIyNzU4XzI1MjI0NjQ1NjM4NzAzMDIyMDhfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jT2RBR2FpeDd2MFE3a052Z0ZXLXFzZSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUMyZ3VJeExTZUpZWk9BZU1LaWdOMEF5NnkyQWJBOFEtc2k4ck0tNzhJNFR3Jm9lPTY3QkIzRTA4Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJpbmRnaWxhIn19LHsicG9zaXRpb24iOlswLjUsMC41XSwic2hvd19jYXRlZ29yeV9vZl91c2VyIjpmYWxzZSwidXNlciI6eyJmdWxsX25hbWUiOiJLZW5uZXRoIEt1aCIsImlkIjoiMzIwMzA4NzgwIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMDI3NzA5NDI3Nzg0ODgyNjA0IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzMyODU3MTExOV8xOTIzNzAxMDM0Njk2NDJfMTk5NDI1MjYxMzMyMjM4NjM3OV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRaeExLdDZiOUxvUTdrTnZnRkY1WGxiJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZREVkdVRMSzNqaTJqLVpFbDFGQTgzVXVyNElKdlZtRXFvUDlKWHJRVFdQUXcmb2U9NjdCQjVBQzEmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6Imtlbm5ldGhrdWguaW5mbyJ9fV19LCJ0YWtlbl9hdCI6MTczOTMwNDg5NywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY5MTEzNTBfMTg0ODUxMTczMTcwMjk1NDJfMzg5NzM4MzI4NDA3NTQ0NzQ4NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M3RJbWF1a21IZkFRN2tOdmdIdWc1eWkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1URTVOVFUxT1RnNU5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRE1NYmhWN3p6Y3RhWjdkT09GOEFaNDh0Qk8xZWhXX0VrMGxLd0cwdzRuVlEmb2U9NjdCQjY2NkEmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjU4NzA0MDYyNjk4NDc3MjFfNDQ3MDE1NDEiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY1ODcwMzkwOTEwMjc0NTgxIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NjUwNjc5OV8xODQ4NTExNzMyNjAyOTU0Ml82NjM3MTc3OTU2NDcxODE5Mzk0X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jd0JZSXM2bUd5OFE3a052Z0ZhLXg2VyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UZzNNRE01TURreE1ESTNORFU0TVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDUWd4ZmN4d3Z6MVVEX3lYdDhsdFFGMVdPeTFNWC02YnZab0M5SkZQLUpPdyZvZT02N0JCMzBDMSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2NTA2Nzk5XzE4NDg1MTE3MzI2MDI5NTQyXzY2MzcxNzc5NTY0NzE4MTkzOTRfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jd0JZSXM2bUd5OFE3a052Z0ZhLXg2VyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UZzNNRE01TURreE1ESTNORFU0TVElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDTFB3UFFzLWg5X2VBai1fOU10cVUwMk1lck5oR01PdHRPb2FrSTU5OHhxQSZvZT02N0JCMzBDMSZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTgwMCwib3JpZ2luYWxfd2lkdGgiOjE0NDAsInBrIjoiMzU2NTg3MDM5MDkxMDI3NDU4MSIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3MzkzMDQ4OTcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2NTA2Nzk5XzE4NDg1MTE3MzI2MDI5NTQyXzY2MzcxNzc5NTY0NzE4MTkzOTRfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTRNREF1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWN3QllJczZtR3k4UTdrTnZnRmEteDZXJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnM01ETTVNRGt4TURJM05EVTRNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUNRZ3hmY3h3dnoxVURfeVh0OGx0UUYxV095MU1YLTZidlpvQzlKRlAtSk93Jm9lPTY3QkIzMEMxJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY1ODcwNDA2MjY5ODQ3NzIxXzQ0NzAxNTQxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6dHJ1ZSwiaWQiOiIzNTY1ODY3ODU2MDMyNDE5MzIyIiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MDYzMTg1XzE4NDg1MTE3MzgzMDI5NTQyXzIwMTExMzg2MzMyMTEwMDg3NjFfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWtnMWJMeDJvX0FBUTdrTnZnRmlsWEZEJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnMk56ZzFOakF6TWpReE9UTXlNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUI0ZlktUjBCLTZHNTFRU1o2di04VmhTd0ZBZ2lZUEJCYWk1RTI0QkJHQ193Jm9lPTY3QkI0QjNDJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dLCJzY3J1YmJlcl9zcHJpdGVzaGVldF9pbmZvX2NhbmRpZGF0ZXMiOnsiZGVmYXVsdCI6eyJmaWxlX3NpemVfa2IiOjE0MSwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjg4Miwic3ByaXRlX3VybHMiOlsiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzE0Mjk4MF81OTIzOTI1NzAzMDM5NTJfOTAxOTE3MDc0NjY4Mjk3MDc0NF9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDQmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9WkU4a01wOG5XQ0VRN2tOdmdGRXQ1ZS0mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCOVY1TFlsQXNDVXVUUU9oNXZTTU90R0hqamRidW1naG5VY3lpcHlham5LdyZvZT02N0JCNDhDRCZfbmNfc2lkPTIwMTFhZCJdLCJzcHJpdGVfd2lkdGgiOjE1MDAsInRodW1ibmFpbF9kdXJhdGlvbiI6MC4xNDI4NTcxNDI4NTcxNDI4NSwidGh1bWJuYWlsX2hlaWdodCI6MTI2LCJ0aHVtYm5haWxfd2lkdGgiOjEwMCwidGh1bWJuYWlsc19wZXJfcm93IjoxNSwidG90YWxfdGh1bWJuYWlsX251bV9wZXJfc3ByaXRlIjoxMDUsInZpZGVvX2xlbmd0aCI6MTUuMH19fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjo0LCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjU4Njc4NTYwMzI0MTkzMjIiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5MzA0ODk3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzA2MzE4NV8xODQ4NTExNzM4MzAyOTU0Ml8yMDExMTM4NjMzMjExMDA4NzYxX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1rZzFiTHgyb19BQVE3a052Z0ZpbFhGRCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UZzJOemcxTmpBek1qUXhPVE15TWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlCNGZZLVIwQi02RzUxUVNaNnYtOFZoU3dGQWdpWVBCQmFpNUUyNEJCR0NfdyZvZT02N0JCNEIzQyZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjE1LjAsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W10sInZpZGVvX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVBMYXRRMUxlLWxKUFZBSUlYZ2JjZTVyYjZ2SnFpOWFQR21LeGk1bE9pa3VEWTAyTTNqRkhuRnFYMUlxcmxhbERPajlkYl9HR0VSajJZRnZuVzFmcG1lT05BNENVSkM0OXI4d1NRLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV6TVRVd01EazJOamsyTlRFM05qa3NJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmdnM9ZjYxYzc4MWZjNzk4MDc5YyZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5RE56UTNRVVl5UkVVMlFVTkNSa1ZCTVVFek1UTkNNMFV5TjBKR04wTTRORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEdaREprVW5kTFVsbFlaR1pGUlVWQlRGRmFYMDh4VEZrNGIwTmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdkwwNHNQUl85VUVGUUlvQWtNekxCZEFMZ0FBQUFBQUFCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZREotS2MwODcxLU85Z01CeVB5ajQyeFdGQ055Y3Z2WENjaUZfX1dHaUR3UFEmb2U9NjdCNzZBRkQmX25jX3NpZD0xZDU3NmQiLCJ2aWRlb192ZXJzaW9ucyI6W3siYmFuZHdpZHRoIjoxMTkwNTIwLCJoZWlnaHQiOjEzNTAsImlkIjoiMjU4MDIyODYyODg0MTIzOHYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUVBMYXRRMUxlLWxKUFZBSUlYZ2JjZTVyYjZ2SnFpOWFQR21LeGk1bE9pa3VEWTAyTTNqRkhuRnFYMUlxcmxhbERPajlkYl9HR0VSajJZRnZuVzFmcG1lT05BNENVSkM0OXI4d1NRLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV6TVRVd01EazJOamsyTlRFM05qa3NJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDgmdnM9ZjYxYzc4MWZjNzk4MDc5YyZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5RE56UTNRVVl5UkVVMlFVTkNSa1ZCTVVFek1UTkNNMFV5TjBKR04wTTRORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZEdaREprVW5kTFVsbFlaR1pGUlVWQlRGRmFYMDh4VEZrNGIwTmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdkwwNHNQUl85VUVGUUlvQWtNekxCZEFMZ0FBQUFBQUFCZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZREotS2MwODcxLU85Z01CeVB5ajQyeFdGQ055Y3Z2WENjaUZfX1dHaUR3UFEmb2U9NjdCNzZBRkQmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjExOTA1MjAsImhlaWdodCI6MTM1MCwiaWQiOiIyNTgwMjI4NjI4ODQxMjM4diIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRUExhdFExTGUtbEpQVkFJSVhnYmNlNXJiNnZKcWk5YVBHbUt4aTVsT2lrdURZMDJNM2pGSG5GcVgxSXFybGFsRE9qOWRiX0dHRVJqMllGdm5XMWZwbWVPTkE0Q1VKQzQ5cjh3U1EubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXpNVFV3TURrMk5qazJOVEUzTmprc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOCZ2cz1mNjFjNzgxZmM3OTgwNzljJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlETnpRM1FVWXlSRVUyUVVOQ1JrVkJNVUV6TVROQ00wVXlOMEpHTjBNNE5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkR1pESmtVbmRMVWxsWVpHWkZSVVZCVEZGYVgwOHhURms0YjBOaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp2TDA0c1BSXzlVRUZRSW9Ba016TEJkQUxnQUFBQUFBQUJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlESi1LYzA4NzEtTzlnTUJ5UHlqNDJ4V0ZDTnljdnZYQ2NpRl9fV0dpRHdQUSZvZT02N0I3NkFGRCZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MTE5MDUyMCwiaGVpZ2h0IjoxMzUwLCJpZCI6IjI1ODAyMjg2Mjg4NDEyMzh2IiwidHlwZSI6MTAzLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFQTGF0UTFMZS1sSlBWQUlJWGdiY2U1cmI2dkpxaTlhUEdtS3hpNWxPaWt1RFkwMk0zakZIbkZxWDFJcXJsYWxET2o5ZGJfR0dFUmoyWUZ2blcxZnBtZU9OQTRDVUpDNDlyOHdTUS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFek1UVXdNRGsyTmprMk5URTNOamtzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA4JnZzPWY2MWM3ODFmYzc5ODA3OWMmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUROelEzUVVZeVJFVTJRVU5DUmtWQk1VRXpNVE5DTTBVeU4wSkdOME00TkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRHWkRKa1VuZExVbGxZWkdaRlJVVkJURkZhWDA4eFRGazRiME5pYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnZMMDRzUFJfOVVFRlFJb0FrTXpMQmRBTGdBQUFBQUFBQmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWURKLUtjMDg3MS1POWdNQnlQeWo0MnhXRkNOeWN2dlhDY2lGX19XR2lEd1BRJm9lPTY3Qjc2QUZEJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9XX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY1ODcwNDA2MjY5ODQ3NzIxXzQ0NzAxNTQxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImhhc19hdWRpbyI6dHJ1ZSwiaWQiOiIzNTY1ODY3ODU1MTY4MjIzNzQ4IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MDU1OTM5XzE4NDg1MTE3NDEwMDI5NTQyXzQ2MjE5MTQyMDI5NzY4NjQ1MDFfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPS1kakFIaFdmaWVVUTdrTnZnRmw1OG1UJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnMk56ZzFOVEUyT0RJeU16YzBPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFkZmNiVUdHOGF2UEp1WXVIclA0T2NzZFhCYWZKRklueV9WSUd5TGs4TU1nJm9lPTY3QkI1M0Q5Jl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dLCJzY3J1YmJlcl9zcHJpdGVzaGVldF9pbmZvX2NhbmRpZGF0ZXMiOnsiZGVmYXVsdCI6eyJmaWxlX3NpemVfa2IiOjI2NCwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjg4Miwic3ByaXRlX3VybHMiOlsiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3Njc5Njc1Nl82NTc5ODQ5MTk5OTAxNzlfNzM2ODY3MzU5NTk5NDg3Mjc3Nl9uLmpwZz9fbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDMmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MTZwRTFfOGprRmtRN2tOdmdFRk5VWkMmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDQWJRUEtjUkhPeTNBY3NnY19JYXhuN0pSVVpNa25PNkJOcVpjaUNlVTJjUSZvZT02N0JCM0UxMSZfbmNfc2lkPTIwMTFhZCJdLCJzcHJpdGVfd2lkdGgiOjE1MDAsInRodW1ibmFpbF9kdXJhdGlvbiI6MC4xMzkzNjE5MDQ3NjE5MDQ3NCwidGh1bWJuYWlsX2hlaWdodCI6MTI2LCJ0aHVtYm5haWxfd2lkdGgiOjEwMCwidGh1bWJuYWlsc19wZXJfcm93IjoxNSwidG90YWxfdGh1bWJuYWlsX251bV9wZXJfc3ByaXRlIjoxMDUsInZpZGVvX2xlbmd0aCI6MTQuNjMzfX19LCJpc19kYXNoX2VsaWdpYmxlIjoxLCJpc192aWRlbyI6dHJ1ZSwibWVkaWFfZm9ybWF0IjoidmlkZW8iLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjIsIm51bWJlcl9vZl9xdWFsaXRpZXMiOjUsIm9yaWdpbmFsX2hlaWdodCI6MTM1MCwib3JpZ2luYWxfd2lkdGgiOjEwODAsInBrIjoiMzU2NTg2Nzg1NTE2ODIyMzc0OCIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3MzkzMDQ4OTcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MDU1OTM5XzE4NDg1MTE3NDEwMDI5NTQyXzQ2MjE5MTQyMDI5NzY4NjQ1MDFfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPS1kakFIaFdmaWVVUTdrTnZnRmw1OG1UJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnMk56ZzFOVEUyT0RJeU16YzBPQSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFkZmNiVUdHOGF2UEp1WXVIclA0T2NzZFhCYWZKRklueV9WSUd5TGs4TU1nJm9lPTY3QkI1M0Q5Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fY29kZWMiOiJhdjAxLjAuMDRNLjA4LjAuMTExLjAxLjAxLjAxLjAiLCJ2aWRlb19kdXJhdGlvbiI6MTQuNjMzLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPcUtaSlQ0cjlmc3JJSEgxX29Sd1c5QU9XbV9DU240a2FZOXVZRWJvUXlkVm5kcTQ2eWw3V05hTFFyX3R3dFhyV20yeEdkdE52QTNXRUwxd1VGbGZkTUE5dk5ndFR5TkloNWxLSS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFd016RXhORGd6TmpJeE5UYzRNRFlzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJnZzPTViMGExODA4OTBlMjg4NmUmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUZNelE0TTBRd05UZEdNamxFTURBeU4wWkJNRFkxTnpsQ09URTROREpCTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRQVDJwYWFIbzJRamhGZVZrM1owaEJUWEV3TkdKYWMwSlhUVVppYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnR5N3N2M2Q5TlFERlFJb0FrTXpMQmRBTFVRWWszUzhhaGdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUJEVVE5dk1ET3JPa2wwUVhfOUdFR1p1Y2NPOXVwWHFZTGl5bmN6TXJmTnlBJm9lPTY3Qjc0RTY3Jl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6NjM5NDk1LCJoZWlnaHQiOjEzNTAsImlkIjoiMTUzNjM4NDM4MDM3Njk4OXYiLCJ0eXBlIjoxMDEsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTM2Ny9BUU9xS1pKVDRyOWZzcklISDFfb1J3VzlBT1dtX0NTbjRrYVk5dVlFYm9ReWRWbmRxNDZ5bDdXTmFMUXJfdHd0WHJXbTJ4R2R0TnZBM1dFTDF3VUZsZmRNQTl2Tmd0VHlOSWg1bEtJLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakV3TXpFeE5EZ3pOakl4TlRjNE1EWXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpFd09EQXVaR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImdnM9NWIwYTE4MDg5MGUyODg2ZSZfbmNfdnM9SEJrc0ZRSVlRR2xuWDJWd2FHVnRaWEpoYkM5Rk16UTRNMFF3TlRkR01qbEVNREF5TjBaQk1EWTFOemxDT1RFNE5ESkJORjkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZFBUMnBhYUhvMlFqaEZlVmszWjBoQlRYRXdOR0phYzBKWFRVWmlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKdHk3c3YzZDlOUURGUUlvQWtNekxCZEFMVVFZazNTOGFoZ1daR0Z6YUY5aVlYTmxiR2x1WlY4eE1EZ3djRjkyTVJFQWRlNEhBQSZjY2I9OS00Jm9oPTAwX0FZQkRVUTl2TURPck9rbDBRWF85R0VHWnVjY085dXBYcVlMaXluY3pNcmZOeUEmb2U9NjdCNzRFNjcmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6MTA4MH0seyJiYW5kd2lkdGgiOjYzOTQ5NSwiaGVpZ2h0IjoxMzUwLCJpZCI6IjE1MzYzODQzODAzNzY5ODl2IiwidHlwZSI6MTAyLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPcUtaSlQ0cjlmc3JJSEgxX29Sd1c5QU9XbV9DU240a2FZOXVZRWJvUXlkVm5kcTQ2eWw3V05hTFFyX3R3dFhyV20yeEdkdE52QTNXRUwxd1VGbGZkTUE5dk5ndFR5TkloNWxLSS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFd016RXhORGd6TmpJeE5UYzRNRFlzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJnZzPTViMGExODA4OTBlMjg4NmUmX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUZNelE0TTBRd05UZEdNamxFTURBeU4wWkJNRFkxTnpsQ09URTROREpCTkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRQVDJwYWFIbzJRamhGZVZrM1owaEJUWEV3TkdKYWMwSlhUVVppYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnR5N3N2M2Q5TlFERlFJb0FrTXpMQmRBTFVRWWszUzhhaGdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUJEVVE5dk1ET3JPa2wwUVhfOUdFR1p1Y2NPOXVwWHFZTGl5bmN6TXJmTnlBJm9lPTY3Qjc0RTY3Jl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjEwODB9LHsiYmFuZHdpZHRoIjo2Mzk0OTUsImhlaWdodCI6MTM1MCwiaWQiOiIxNTM2Mzg0MzgwMzc2OTg5diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRT3FLWkpUNHI5ZnNySUhIMV9vUndXOUFPV21fQ1NuNGthWTl1WUVib1F5ZFZuZHE0NnlsN1dOYUxRcl90d3RYcldtMnhHZHROdkEzV0VMMXdVRmxmZE1BOXZOZ3RUeU5JaDVsS0kubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXdNekV4TkRnek5qSXhOVGM0TURZc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZ2cz01YjBhMTgwODkwZTI4ODZlJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlGTXpRNE0wUXdOVGRHTWpsRU1EQXlOMFpCTURZMU56bENPVEU0TkRKQk5GOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkUFQycGFhSG8yUWpoRmVWazNaMGhCVFhFd05HSmFjMEpYVFVaaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUp0eTdzdjNkOU5RREZRSW9Ba016TEJkQUxVUVlrM1M4YWhnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlCRFVROXZNRE9yT2tsMFFYXzlHRUdadWNjTzl1cFhxWUxpeW5jek1yZk55QSZvZT02N0I3NEU2NyZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NTg3MDQwNjI2OTg0NzcyMV80NDcwMTU0MSIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJoYXNfYXVkaW8iOnRydWUsImlkIjoiMzU2NTg2Nzg1NDQ0Njg2Mjg2MiIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODQzMzQ3OV8xODQ4NTExNzQxOTAyOTU0Ml81MTA2NTU2MTAyNjg2MjkyNTg2X24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T1RBd0xuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz15T1d5cW0zZWZNSVE3a052Z0dyY0UxMiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UZzJOemcxTkRRME5qZzJNamcyTWclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlBZVcyVS1rMy1jVzNVaHROQ05mcXdSYnNoTC05Y2lEV09qNkI5dWk1LUZZdyZvZT02N0JCNjM0MyZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XSwic2NydWJiZXJfc3ByaXRlc2hlZXRfaW5mb19jYW5kaWRhdGVzIjp7ImRlZmF1bHQiOnsiZmlsZV9zaXplX2tiIjo4OCwibWF4X3RodW1ibmFpbHNfcGVyX3Nwcml0ZSI6MTA1LCJyZW5kZXJlZF93aWR0aCI6OTYsInNwcml0ZV9oZWlnaHQiOjg4Miwic3ByaXRlX3VybHMiOlsiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzU5MTUxM18zNDI5MzI2ODMzODY3MTM4XzUwMDAwMjQ4NTgzNDI3NDEwMTVfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTEwJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPUkxRTF3VmJNVUk0UTdrTnZnSFdtbi1MJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQU4wTGxmTXdTRjYzaW9tR1ppZk5nYmZieXhxRTlUX285WFVhZUpXblhSa1Emb2U9NjdCQjYwOTgmX25jX3NpZD0yMDExYWQiXSwic3ByaXRlX3dpZHRoIjoxNTAwLCJ0aHVtYm5haWxfZHVyYXRpb24iOjAuMDczMzMzMzMzMzMzMzMzMzMsInRodW1ibmFpbF9oZWlnaHQiOjEyNiwidGh1bWJuYWlsX3dpZHRoIjoxMDAsInRodW1ibmFpbHNfcGVyX3JvdyI6MTUsInRvdGFsX3RodW1ibmFpbF9udW1fcGVyX3Nwcml0ZSI6MTA1LCJ2aWRlb19sZW5ndGgiOjcuN319fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjozLCJvcmlnaW5hbF9oZWlnaHQiOjEwODAsIm9yaWdpbmFsX3dpZHRoIjo4NjQsInBrIjoiMzU2NTg2Nzg1NDQ0Njg2Mjg2MiIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3MzkzMDQ4OTcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc4NDMzNDc5XzE4NDg1MTE3NDE5MDI5NTQyXzUxMDY1NTYxMDI2ODYyOTI1ODZfbi5qcGc/c3RwPWRzdC1qcGdfZTE1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0M01qQjRPVEF3TG5Oa2NpNW1OelUzTmpFdVpHVm1ZWFZzZEY5amIzWmxjbDltY21GdFpTSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXlPV3lxbTNlZk1JUTdrTnZnR3JjRTEyJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnMk56ZzFORFEwTmpnMk1qZzJNZyUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUFlVzJVLWszLWNXM1VodE5DTmZxd1Jic2hMLTljaURXT2o2Qjl1aTUtRll3Jm9lPTY3QkI2MzQzJl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fY29kZWMiOiJhdjAxLjAuMDRNLjA4LjAuMTExLjAxLjAxLjAxLjAiLCJ2aWRlb19kdXJhdGlvbiI6Ny43LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204NC9BUU1XUEduRTUxS3p0X1ZudUo2NVYzdWhXTUNoUFhxTDZhNGtvWFoxV2N5S2h2b0V2dkVrdEtKUWhYTGZqcVZ4Wjh6Z2VFSjV2dzFaZXdjLVpXY1VNdzdvMEFBYTJKM2NacGVBWEZrLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUwTkRRME5qRTVNak14T1Rjek16UXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpjeU1DNWtZWE5vWDJKaGMyVnNhVzVsWHpGZmRqRWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9MzYyNTI4YTNhNTRmNzQzMSZfbmNfdnM9SEJrc0ZRSVlUR2xuWDJKaFkydG1hV3hzWDNScGJXVnNhVzVsWDNadlpDOHlNalF4UmtJM09ETXlOREpHTVRrNE1UTXpOREZGT0VJMk1EazNSRFk1TWw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRDVjJoaFFuZDNibFo0Y1U1eVRVNUJRMmQyVkdOcWFIRmtjR2hpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnF5R2xfM2Y3cEFGRlFJb0FrTXpMQmRBSHN6TXpNek16UmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMTdnY0EmY2NiPTktNCZvaD0wMF9BWUNCLXVDdmNvWnpoRnF6cE8wb0ZidlpyMWJYeFBPZEhRUGpOdFJuSVJTSnZRJm9lPTY3Qjc2MTgzJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6NDg4MjcwLCJoZWlnaHQiOjkwMCwiaWQiOiI2Mzg5NTk1NjUzODQwNzZ2IiwidHlwZSI6MTAxLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL204NC9BUU1XUEduRTUxS3p0X1ZudUo2NVYzdWhXTUNoUFhxTDZhNGtvWFoxV2N5S2h2b0V2dkVrdEtKUWhYTGZqcVZ4Wjh6Z2VFSjV2dzFaZXdjLVpXY1VNdzdvMEFBYTJKM2NacGVBWEZrLm1wND9lZmc9ZXlKNGNIWmZZWE56WlhSZmFXUWlPakUwTkRRME5qRTVNak14T1Rjek16UXNJblpsYm1OdlpHVmZkR0ZuSWpvaWVIQjJYM0J5YjJkeVpYTnphWFpsTGtsT1UxUkJSMUpCVFM1RFFWSlBWVk5GVEY5SlZFVk5Ma016TGpjeU1DNWtZWE5vWDJKaGMyVnNhVzVsWHpGZmRqRWlmUSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDkmdnM9MzYyNTI4YTNhNTRmNzQzMSZfbmNfdnM9SEJrc0ZRSVlUR2xuWDJKaFkydG1hV3hzWDNScGJXVnNhVzVsWDNadlpDOHlNalF4UmtJM09ETXlOREpHTVRrNE1UTXpOREZGT0VJMk1EazNSRFk1TWw5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRDVjJoaFFuZDNibFo0Y1U1eVRVNUJRMmQyVkdOcWFIRmtjR2hpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnF5R2xfM2Y3cEFGRlFJb0FrTXpMQmRBSHN6TXpNek16UmdTWkdGemFGOWlZWE5sYkdsdVpWOHhYM1l4RVFCMTdnY0EmY2NiPTktNCZvaD0wMF9BWUNCLXVDdmNvWnpoRnF6cE8wb0ZidlpyMWJYeFBPZEhRUGpOdFJuSVJTSnZRJm9lPTY3Qjc2MTgzJl9uY19zaWQ9MWQ1NzZkIiwid2lkdGgiOjcyMH0seyJiYW5kd2lkdGgiOjQ4ODI3MCwiaGVpZ2h0Ijo5MDAsImlkIjoiNjM4OTU5NTY1Mzg0MDc2diIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tODQvQVFNV1BHbkU1MUt6dF9WbnVKNjVWM3VoV01DaFBYcUw2YTRrb1haMVdjeUtodm9FdnZFa3RLSlFoWExmanFWeFo4emdlRUo1dncxWmV3Yy1aV2NVTXc3bzBBQWEySjNjWnBlQVhGay5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFME5EUTBOakU1TWpNeE9UY3pNelFzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqY3lNQzVrWVhOb1gySmhjMlZzYVc1bFh6RmZkakVpZlEmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA5JnZzPTM2MjUyOGEzYTU0Zjc0MzEmX25jX3ZzPUhCa3NGUUlZVEdsblgySmhZMnRtYVd4c1gzUnBiV1ZzYVc1bFgzWnZaQzh5TWpReFJrSTNPRE15TkRKR01UazRNVE16TkRGRk9FSTJNRGszUkRZNU1sOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkQ1YyaGhRbmQzYmxaNGNVNXlUVTVCUTJkMlZHTnFhSEZrY0doaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpxeUdsXzNmN3BBRkZRSW9Ba016TEJkQUhzek16TXpNelJnU1pHRnphRjlpWVhObGJHbHVaVjh4WDNZeEVRQjE3Z2NBJmNjYj05LTQmb2g9MDBfQVlDQi11Q3Zjb1p6aEZxenBPMG9GYnZacjFiWHhQT2RIUVBqTnRSbklSU0p2USZvZT02N0I3NjE4MyZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjo3MjB9LHsiYmFuZHdpZHRoIjo0ODgyNzAsImhlaWdodCI6OTAwLCJpZCI6IjYzODk1OTU2NTM4NDA3NnYiLCJ0eXBlIjoxMDMsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vbzEvdi90MTYvZjIvbTg0L0FRTVdQR25FNTFLenRfVm51SjY1VjN1aFdNQ2hQWHFMNmE0a29YWjFXY3lLaHZvRXZ2RWt0S0pRaFhMZmpxVnhaOHpnZUVKNXZ3MVpld2MtWldjVU13N28wQUFhMkozY1pwZUFYRmsubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRTBORFEwTmpFNU1qTXhPVGN6TXpRc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMamN5TUM1a1lYTm9YMkpoYzJWc2FXNWxYekZmZGpFaWZRJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwOSZ2cz0zNjI1MjhhM2E1NGY3NDMxJl9uY192cz1IQmtzRlFJWVRHbG5YMkpoWTJ0bWFXeHNYM1JwYldWc2FXNWxYM1p2WkM4eU1qUXhSa0kzT0RNeU5ESkdNVGs0TVRNek5ERkZPRUkyTURrM1JEWTVNbDkyYVdSbGIxOWtZWE5vYVc1cGRDNXRjRFFWQUFMSUFRQVZBaGc2Y0dGemMzUm9jbTkxWjJoZlpYWmxjbk4wYjNKbEwwZENWMmhoUW5kM2JsWjRjVTV5VFU1QlEyZDJWR05xYUhGa2NHaGlhMWxNUVVGQlJoVUNBc2dCQUNnQUdBQWJBb2dIZFhObFgyOXBiQUV4RW5CeWIyZHlaWE56YVhabFgzSmxZMmx3WlFFeEZRQUFKcXlHbF8zZjdwQUZGUUlvQWtNekxCZEFIc3pNek16TXpSZ1NaR0Z6YUY5aVlYTmxiR2x1WlY4eFgzWXhFUUIxN2djQSZjY2I9OS00Jm9oPTAwX0FZQ0ItdUN2Y29aemhGcXpwTzBvRmJ2WnIxYlh4UE9kSFFQak50Um5JUlNKdlEmb2U9NjdCNzYxODMmX25jX3NpZD0xZDU3NmQiLCJ3aWR0aCI6NzIwfV19LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NTg3MDQwNjI2OTg0NzcyMV80NDcwMTU0MSIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjU4NzAzOTA5NTIxMzk0MDEiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzQ5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MjgxMDg4XzE4NDg1MTE3MzM4MDI5NTQyXzg1MTc4MjEzNTY2NTg4MDUyMTVfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVGt1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVdtTFI0OVRUeUNvUTdrTnZnSG5Tc19VJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnM01ETTVNRGsxTWpFek9UUXdNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJRNHo1WW5KMEJuczdlTzdfdEV2SjMxbURWSkxhVjQwVDl1NEtkRjFNX0ZBJm9lPTY3QkI0OUQwJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzcyODEwODhfMTg0ODUxMTczMzgwMjk1NDJfODUxNzgyMTM1NjY1ODgwNTIxNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVGt1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVdtTFI0OVRUeUNvUTdrTnZnSG5Tc19VJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnM01ETTVNRGsxTWpFek9UUXdNUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWURTNGRDYURJcG12a2pMNElRQkVLQ2lIaElNZTI5VFZTWDNHY1dMLWpjSllnJm9lPTY3QkI0OUQwJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxNzk5LCJvcmlnaW5hbF93aWR0aCI6MTQ0MCwicGsiOiIzNTY1ODcwMzkwOTUyMTM5NDAxIiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTMwNDg5NywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzcyODEwODhfMTg0ODUxMTczMzgwMjk1NDJfODUxNzgyMTM1NjY1ODgwNTIxNV9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFM09Ua3VjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9V21MUjQ5VFR5Q29RN2tOdmdIblNzX1UmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1EazFNakV6T1RRd01RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQlE0ejVZbkowQm5zN2VPN190RXZKMzFtRFZKTGFWNDBUOXU0S2RGMU1fRkEmb2U9NjdCQjQ5RDAmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjU4NzA0MDYyNjk4NDc3MjFfNDQ3MDE1NDEiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaWQiOiIzNTY1ODcwMzkwODg1MDU2NTU5IiwiaW1hZ2VfdmVyc2lvbnMiOnsiaXRlbXMiOlt7ImhlaWdodCI6MTM0OSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzI0NzIxNl8xODQ4NTExNzM1MDAyOTU0Ml8yMzQyODkyMDQ3NjE4NzE4MTA2X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREUzT1RrdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1xR041R2ItY25GY1E3a052Z0hiSUZ1WSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UZzNNRE01TURnNE5UQTFOalUxT1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDNkZBNGMwWkxjYXRBakJ1RlNqM2lkZE92WkxBeWZ0b2xzVnEtRUcxZ1NYQSZvZT02N0JCNEFCNiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjoxMDgwfSx7ImhlaWdodCI6NDUwLCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MjQ3MjE2XzE4NDg1MTE3MzUwMDI5NTQyXzIzNDI4OTIwNDc2MTg3MTgxMDZfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AzNjB4MzYwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREUzT1RrdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1xR041R2ItY25GY1E3a052Z0hiSUZ1WSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UZzNNRE01TURnNE5UQTFOalUxT1ElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDM2xYWjF5cVdHRlBkSDZzbXZWbFhucHhaRmlwQjNMMi11R2tvT1F6Z0U2ZyZvZT02N0JCNEFCNiZfbmNfc2lkPTIwMTFhZCIsIndpZHRoIjozNjB9XX0sImlzX3ZpZGVvIjpmYWxzZSwibWVkaWFfZm9ybWF0IjoiaW1hZ2UiLCJtZWRpYV9uYW1lIjoiYWxidW1faXRlbSIsIm1lZGlhX3R5cGUiOjEsIm9yaWdpbmFsX2hlaWdodCI6MTc5OSwib3JpZ2luYWxfd2lkdGgiOjE0NDAsInBrIjoiMzU2NTg3MDM5MDg4NTA1NjU1OSIsInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9pdGVtIiwic2hhcmluZ19mcmljdGlvbl9pbmZvIjp7ImJsb2tzX2FwcF91cmwiOm51bGwsInNoYXJpbmdfZnJpY3Rpb25fcGF5bG9hZCI6bnVsbCwic2hvdWxkX2hhdmVfc2hhcmluZ19mcmljdGlvbiI6ZmFsc2V9LCJzaG9wX3JvdXRpbmdfdXNlcl9pZCI6bnVsbCwidGFrZW5fYXQiOjE3MzkzMDQ4OTcsInRodW1ibmFpbF91cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc3MjQ3MjE2XzE4NDg1MTE3MzUwMDI5NTQyXzIzNDI4OTIwNDc2MTg3MTgxMDZfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVGt1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXFHTjVHYi1jbkZjUTdrTnZnSGJJRnVZJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnM01ETTVNRGc0TlRBMU5qVTFPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUM2RkE0YzBaTGNhdEFqQnVGU2ozaWRkT3ZaTEF5ZnRvbHNWcS1FRzFnU1hBJm9lPTY3QkI0QUI2Jl9uY19zaWQ9MjAxMWFkIiwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX0seyJjYXJvdXNlbF9wYXJlbnRfaWQiOiIzNTY1ODcwNDA2MjY5ODQ3NzIxXzQ0NzAxNTQxIiwiY29tbWVyY2lhbGl0eV9zdGF0dXMiOiJub3RfY29tbWVyY2lhbCIsImV4cGxvcmVfcGl2b3RfZ3JpZCI6ZmFsc2UsImZiX3VzZXJfdGFncyI6eyJpbiI6W119LCJmZWF0dXJlZF9wcm9kdWN0cyI6W10sImlkIjoiMzU2NTg3MDM5MDk0Mzc3MDc1MCIsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzc2MTAwNzVfMTg0ODUxMTczNTkwMjk1NDJfNjQ2ODA3MDY4NjMyMTU0OTU3NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9bWpqMWNDQ3BCamNRN2tOdmdIOXZuRWcmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1EazBNemMzTURjMU1BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRER2eXZaWUhPbjc3b1JZU0ZqT3BMMnRvekYwTXJQSndvMGlQTGNQUE9TVmcmb2U9NjdCQjQ1MDQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzYxMDA3NV8xODQ4NTExNzM1OTAyOTU0Ml82NDY4MDcwNjg2MzIxNTQ5NTc0X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9bWpqMWNDQ3BCamNRN2tOdmdIOXZuRWcmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1EazBNemMzTURjMU1BJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQVBnclhQMG1mQzhhRkRQdGg2ejh3ME1nUHBUWU1qVmdIR1diZDc4Sk5VbXcmb2U9NjdCQjQ1MDQmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpc192aWRlbyI6ZmFsc2UsIm1lZGlhX2Zvcm1hdCI6ImltYWdlIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoxLCJvcmlnaW5hbF9oZWlnaHQiOjE4MDAsIm9yaWdpbmFsX3dpZHRoIjoxNDQwLCJwayI6IjM1NjU4NzAzOTA5NDM3NzA3NTAiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5MzA0ODk3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NzYxMDA3NV8xODQ4NTExNzM1OTAyOTU0Ml82NDY4MDcwNjg2MzIxNTQ5NTc0X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMTA4MHgxMDgwX3R0NiZlZmc9ZXlKMlpXNWpiMlJsWDNSaFp5STZJbWx0WVdkbFgzVnliR2RsYmk0eE5EUXdlREU0TURBdWMyUnlMbVkzTlRjMk1TNWtaV1poZFd4MFgybHRZV2RsSW4wJl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1tamoxY0NDcEJqY1E3a052Z0g5dm5FZyZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UZzNNRE01TURrME16YzNNRGMxTUElM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlERHZ5dlpZSE9uNzdvUllTRmpPcEwydG96RjBNclBKd28waVBMY1BQT1NWZyZvZT02N0JCNDUwNCZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX3N0aWNrZXJfbG9jYWxlcyI6W119LHsiY2Fyb3VzZWxfcGFyZW50X2lkIjoiMzU2NTg3MDQwNjI2OTg0NzcyMV80NDcwMTU0MSIsImNvbW1lcmNpYWxpdHlfc3RhdHVzIjoibm90X2NvbW1lcmNpYWwiLCJleHBsb3JlX3Bpdm90X2dyaWQiOmZhbHNlLCJmYl91c2VyX3RhZ3MiOnsiaW4iOltdfSwiZmVhdHVyZWRfcHJvZHVjdHMiOltdLCJpZCI6IjM1NjU4NzAzOTEwNDQ0NTU1ODkiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0IjoxMzQ5LCJ1cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTUvNDc2OTA0ODY2XzE4NDg1MTE3MzY4MDI5NTQyXzM4NTc3OTc2MTk3OTk0NzE3NjZfbi5qcGc/c3RwPWRzdC1qcGdfZTM1X3AxMDgweDEwODBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVGt1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTJ0dnU5VENBcFdnUTdrTnZnR1RZT29OJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnM01ETTVNVEEwTkRRMU5UVTRPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUJmUUZiYTV3eUpGSXFmU3l3U1NvUTREN3ZGMDhXaTgwbUlKZFl6NUJ6V1BBJm9lPTY3QkI1QzYwJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjEwODB9LHsiaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY5MDQ4NjZfMTg0ODUxMTczNjgwMjk1NDJfMzg1Nzc5NzYxOTc5OTQ3MTc2Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTR4TkRRd2VERTNPVGt1YzJSeUxtWTNOVGMyTVM1a1pXWmhkV3gwWDJsdFlXZGxJbjAmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPTJ0dnU5VENBcFdnUTdrTnZnR1RZT29OJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01JmlnX2NhY2hlX2tleT1NelUyTlRnM01ETTVNVEEwTkRRMU5UVTRPUSUzRCUzRC4zLWNjYjctNSZvaD0wMF9BWUQzWTRaQWJ5Z0t0S2FmbGhSZk41dmlXVzQ4TTRyckRZUEY4QlBJaEhzdl9nJm9lPTY3QkI1QzYwJl9uY19zaWQ9MjAxMWFkIiwid2lkdGgiOjM2MH1dfSwiaXNfdmlkZW8iOmZhbHNlLCJtZWRpYV9mb3JtYXQiOiJpbWFnZSIsIm1lZGlhX25hbWUiOiJhbGJ1bV9pdGVtIiwibWVkaWFfdHlwZSI6MSwib3JpZ2luYWxfaGVpZ2h0IjoxNzk5LCJvcmlnaW5hbF93aWR0aCI6MTQ0MCwicGsiOiIzNTY1ODcwMzkxMDQ0NDU1NTg5IiwicHJvZHVjdF9zdWdnZXN0aW9ucyI6W10sInByb2R1Y3RfdHlwZSI6ImNhcm91c2VsX2l0ZW0iLCJzaGFyaW5nX2ZyaWN0aW9uX2luZm8iOnsiYmxva3NfYXBwX3VybCI6bnVsbCwic2hhcmluZ19mcmljdGlvbl9wYXlsb2FkIjpudWxsLCJzaG91bGRfaGF2ZV9zaGFyaW5nX2ZyaWN0aW9uIjpmYWxzZX0sInNob3Bfcm91dGluZ191c2VyX2lkIjpudWxsLCJ0YWtlbl9hdCI6MTczOTMwNDg5NywidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY5MDQ4NjZfMTg0ODUxMTczNjgwMjk1NDJfMzg1Nzc5NzYxOTc5OTQ3MTc2Nl9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFM09Ua3VjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9MnR2dTlUQ0FwV2dRN2tOdmdHVFlPb04mX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1UQTBORFExTlRVNE9RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQmZRRmJhNXd5SkZJcWZTeXdTU29RNEQ3dkYwOFdpODBtSUpkWXo1QnpXUEEmb2U9NjdCQjVDNjAmX25jX3NpZD0yMDExYWQiLCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdfSx7ImNhcm91c2VsX3BhcmVudF9pZCI6IjM1NjU4NzA0MDYyNjk4NDc3MjFfNDQ3MDE1NDEiLCJjb21tZXJjaWFsaXR5X3N0YXR1cyI6Im5vdF9jb21tZXJjaWFsIiwiZXhwbG9yZV9waXZvdF9ncmlkIjpmYWxzZSwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiaGFzX2F1ZGlvIjp0cnVlLCJpZCI6IjM1NjU4Njc4NTQwODYyNjk4NzMiLCJpbWFnZV92ZXJzaW9ucyI6eyJpdGVtcyI6W3siaGVpZ2h0Ijo0NTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80Nzg0MTI1MzRfMTg0ODUxMTc0MjgwMjk1NDJfMTUyMzI4MDMyMzIzOTM3NDgzMV9uLmpwZz9zdHA9ZHN0LWpwZ19lMTVfcDM2MHgzNjBfdHQ2JmVmZz1leUoyWlc1amIyUmxYM1JoWnlJNkltbHRZV2RsWDNWeWJHZGxiaTQzTWpCNE9EazVMbk5rY2k1bU56VTNOakV1WkdWbVlYVnNkRjlqYjNabGNsOW1jbUZ0WlNKOSZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Wk1oWXZfXzluazBRN2tOdmdHcG01MEwmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGcyTnpnMU5EQTROakkyT1RnM013JTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQ3R2OU9WWUxUTWFLS193MzFXTFo2WEY0d3NrNVpDNzkxX2phUUx5VEVuZFEmb2U9NjdCQjUwODUmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV0sInNjcnViYmVyX3Nwcml0ZXNoZWV0X2luZm9fY2FuZGlkYXRlcyI6eyJkZWZhdWx0Ijp7ImZpbGVfc2l6ZV9rYiI6NTMsIm1heF90aHVtYm5haWxzX3Blcl9zcHJpdGUiOjEwNSwicmVuZGVyZWRfd2lkdGgiOjk2LCJzcHJpdGVfaGVpZ2h0Ijo4ODIsInNwcml0ZV91cmxzIjpbImh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzU0Mzc4NDhfOTc3NTI2OTc3NjIzNzMwXzI1MTAxNzA0NDU5NjI3ODUzODVfbi5qcGc/X25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTAyJl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPXhpVi1NeWlwWmNFUTdrTnZnRTJHckNTJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQXRCZzJqQmVRaHgybFM3QlZlWENMUXdQVGZiM0xxd2N5dXJmYXdMMlJHV1Emb2U9NjdCQjNFMTMmX25jX3NpZD0yMDExYWQiXSwic3ByaXRlX3dpZHRoIjoxNTAwLCJ0aHVtYm5haWxfZHVyYXRpb24iOjAuMDUzOTYxOTA0NzYxOTA0NzY2LCJ0aHVtYm5haWxfaGVpZ2h0IjoxMjYsInRodW1ibmFpbF93aWR0aCI6MTAwLCJ0aHVtYm5haWxzX3Blcl9yb3ciOjE1LCJ0b3RhbF90aHVtYm5haWxfbnVtX3Blcl9zcHJpdGUiOjEwNSwidmlkZW9fbGVuZ3RoIjo1LjY2Nn19fSwiaXNfZGFzaF9lbGlnaWJsZSI6MSwiaXNfdmlkZW8iOnRydWUsIm1lZGlhX2Zvcm1hdCI6InZpZGVvIiwibWVkaWFfbmFtZSI6ImFsYnVtX2l0ZW0iLCJtZWRpYV90eXBlIjoyLCJudW1iZXJfb2ZfcXVhbGl0aWVzIjoyLCJvcmlnaW5hbF9oZWlnaHQiOjEzNTAsIm9yaWdpbmFsX3dpZHRoIjoxMDgwLCJwayI6IjM1NjU4Njc4NTQwODYyNjk4NzMiLCJwcm9kdWN0X3N1Z2dlc3Rpb25zIjpbXSwicHJvZHVjdF90eXBlIjoiY2Fyb3VzZWxfaXRlbSIsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInRha2VuX2F0IjoxNzM5MzA0ODk3LCJ0aHVtYm5haWxfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3ODQxMjUzNF8xODQ4NTExNzQyODAyOTU0Ml8xNTIzMjgwMzIzMjM5Mzc0ODMxX24uanBnP3N0cD1kc3QtanBnX2UxNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNDNNakI0T0RrNUxuTmtjaTVtTnpVM05qRXVaR1ZtWVhWc2RGOWpiM1psY2w5bWNtRnRaU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1aTWhZdl9fOW5rMFE3a052Z0dwbTUwTCZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZpZ19jYWNoZV9rZXk9TXpVMk5UZzJOemcxTkRBNE5qSTJPVGczTXclM0QlM0QuMy1jY2I3LTUmb2g9MDBfQVlDdHY5T1ZZTFRNYUtLX3czMVdMWjZYRjR3c2s1WkM3OTFfamFRTHlURW5kUSZvZT02N0JCNTA4NSZfbmNfc2lkPTIwMTFhZCIsInZpZGVvX2NvZGVjIjoiYXYwMS4wLjA0TS4wOC4wLjExMS4wMS4wMS4wMS4wIiwidmlkZW9fZHVyYXRpb24iOjUuNjY2LCJ2aWRlb19zdGlja2VyX2xvY2FsZXMiOltdLCJ2aWRlb191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL28xL3YvdDE2L2YyL20zNjcvQVFPM2ZobFQzQm9OQkJSOGktLU40OVBOaDB0czNMXy1UOHZSZGFpeGNRV0FBcTluMjh2LU13VUFUbWlWTlY2dllBNEF3dWRVM3JtMDdvYWtISzVhczc3dUFYYk1JSk5qNHlIUUZzTS5tcDQ/ZWZnPWV5SjRjSFpmWVhOelpYUmZhV1FpT2pFek5EQXdPVE0wT1RjeE9ERTFPRGtzSW5abGJtTnZaR1ZmZEdGbklqb2llSEIyWDNCeWIyZHlaWE56YVhabExrbE9VMVJCUjFKQlRTNURRVkpQVlZORlRGOUpWRVZOTGtNekxqRXdPREF1WkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1TSjkmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2JnZzPTE0MDM4MGVlODI3ZDYzNTImX25jX3ZzPUhCa3NGUUlZUUdsblgyVndhR1Z0WlhKaGJDOUZRelJCUTBZeU5ESXdORFExTVRsQk0wUkdPVUpFUWtaQk9UZzNNa1k1UkY5MmFXUmxiMTlrWVhOb2FXNXBkQzV0Y0RRVkFBTElBUUFWQWhnNmNHRnpjM1JvY205MVoyaGZaWFpsY25OMGIzSmxMMGRCVDJ0YWFIcDVVazE0VTJ3eE9FUkJUVlpFZVZWak5WVkljRUZpYTFsTVFVRkJSaFVDQXNnQkFDZ0FHQUFiQW9nSGRYTmxYMjlwYkFFeEVuQnliMmR5WlhOemFYWmxYM0psWTJsd1pRRXhGUUFBSnFxVzdNM2FzLUVFRlFJb0FrTXpMQmRBRnFuNzUyeUxSQmdXWkdGemFGOWlZWE5sYkdsdVpWOHhNRGd3Y0Y5Mk1SRUFkZTRIQUEmY2NiPTktNCZvaD0wMF9BWUFOWlhodG5wNGExNGtieFpiel9JWnlFdldEWGswT1pPU3JBbUZSOXlfbDVnJm9lPTY3Qjc1RUZCJl9uY19zaWQ9MWQ1NzZkIiwidmlkZW9fdmVyc2lvbnMiOlt7ImJhbmR3aWR0aCI6MjMxMzEwLCJoZWlnaHQiOjEzNTAsImlkIjoiNjE1NjQ2MzQ3ODY1Njk1diIsInR5cGUiOjEwMSwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTzNmaGxUM0JvTkJCUjhpLS1ONDlQTmgwdHMzTF8tVDh2UmRhaXhjUVdBQXE5bjI4di1Nd1VBVG1pVk5WNnZZQTRBd3VkVTNybTA3b2FrSEs1YXM3N3VBWGJNSUpOajR5SFFGc00ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXpOREF3T1RNME9UY3hPREUxT0Rrc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz0xNDAzODBlZTgyN2Q2MzUyJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlGUXpSQlEwWXlOREl3TkRRMU1UbEJNMFJHT1VKRVFrWkJPVGczTWtZNVJGOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkQlQydGFhSHA1VWsxNFUyd3hPRVJCVFZaRWVWVmpOVlZJY0VGaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpxcVc3TTNhcy1FRUZRSW9Ba016TEJkQUZxbjc1MnlMUkJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlBTlpYaHRucDRhMTRrYnhaYnpfSVp5RXZXRFhrME9aT1NyQW1GUjl5X2w1ZyZvZT02N0I3NUVGQiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjMxMzEwLCJoZWlnaHQiOjEzNTAsImlkIjoiNjE1NjQ2MzQ3ODY1Njk1diIsInR5cGUiOjEwMiwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTzNmaGxUM0JvTkJCUjhpLS1ONDlQTmgwdHMzTF8tVDh2UmRhaXhjUVdBQXE5bjI4di1Nd1VBVG1pVk5WNnZZQTRBd3VkVTNybTA3b2FrSEs1YXM3N3VBWGJNSUpOajR5SFFGc00ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXpOREF3T1RNME9UY3hPREUxT0Rrc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz0xNDAzODBlZTgyN2Q2MzUyJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlGUXpSQlEwWXlOREl3TkRRMU1UbEJNMFJHT1VKRVFrWkJPVGczTWtZNVJGOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkQlQydGFhSHA1VWsxNFUyd3hPRVJCVFZaRWVWVmpOVlZJY0VGaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpxcVc3TTNhcy1FRUZRSW9Ba016TEJkQUZxbjc1MnlMUkJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlBTlpYaHRucDRhMTRrYnhaYnpfSVp5RXZXRFhrME9aT1NyQW1GUjl5X2w1ZyZvZT02N0I3NUVGQiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfSx7ImJhbmR3aWR0aCI6MjMxMzEwLCJoZWlnaHQiOjEzNTAsImlkIjoiNjE1NjQ2MzQ3ODY1Njk1diIsInR5cGUiOjEwMywidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS9vMS92L3QxNi9mMi9tMzY3L0FRTzNmaGxUM0JvTkJCUjhpLS1ONDlQTmgwdHMzTF8tVDh2UmRhaXhjUVdBQXE5bjI4di1Nd1VBVG1pVk5WNnZZQTRBd3VkVTNybTA3b2FrSEs1YXM3N3VBWGJNSUpOajR5SFFGc00ubXA0P2VmZz1leUo0Y0haZllYTnpaWFJmYVdRaU9qRXpOREF3T1RNME9UY3hPREUxT0Rrc0luWmxibU52WkdWZmRHRm5Jam9pZUhCMlgzQnliMmR5WlhOemFYWmxMa2xPVTFSQlIxSkJUUzVEUVZKUFZWTkZURjlKVkVWTkxrTXpMakV3T0RBdVpHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNU0o5Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwNiZ2cz0xNDAzODBlZTgyN2Q2MzUyJl9uY192cz1IQmtzRlFJWVFHbG5YMlZ3YUdWdFpYSmhiQzlGUXpSQlEwWXlOREl3TkRRMU1UbEJNMFJHT1VKRVFrWkJPVGczTWtZNVJGOTJhV1JsYjE5a1lYTm9hVzVwZEM1dGNEUVZBQUxJQVFBVkFoZzZjR0Z6YzNSb2NtOTFaMmhmWlhabGNuTjBiM0psTDBkQlQydGFhSHA1VWsxNFUyd3hPRVJCVFZaRWVWVmpOVlZJY0VGaWExbE1RVUZCUmhVQ0FzZ0JBQ2dBR0FBYkFvZ0hkWE5sWDI5cGJBRXhFbkJ5YjJkeVpYTnphWFpsWDNKbFkybHdaUUV4RlFBQUpxcVc3TTNhcy1FRUZRSW9Ba016TEJkQUZxbjc1MnlMUkJnV1pHRnphRjlpWVhObGJHbHVaVjh4TURnd2NGOTJNUkVBZGU0SEFBJmNjYj05LTQmb2g9MDBfQVlBTlpYaHRucDRhMTRrYnhaYnpfSVp5RXZXRFhrME9aT1NyQW1GUjl5X2w1ZyZvZT02N0I3NUVGQiZfbmNfc2lkPTFkNTc2ZCIsIndpZHRoIjoxMDgwfV19XSwiY2Fyb3VzZWxfbWVkaWFfY291bnQiOjEwLCJjYXJvdXNlbF9tZWRpYV9pZHMiOlszNTY1ODcwMzkxMTk1NTU5ODk1LDM1NjU4NzAzOTA5MTAyNzQ1ODEsMzU2NTg2Nzg1NjAzMjQxOTMyMiwzNTY1ODY3ODU1MTY4MjIzNzQ4LDM1NjU4Njc4NTQ0NDY4NjI4NjIsMzU2NTg3MDM5MDk1MjEzOTQwMSwzNTY1ODcwMzkwODg1MDU2NTU5LDM1NjU4NzAzOTA5NDM3NzA3NTAsMzU2NTg3MDM5MTA0NDQ1NTU4OSwzNTY1ODY3ODU0MDg2MjY5ODczXSwiY2Fyb3VzZWxfbWVkaWFfcGVuZGluZ19wb3N0X2NvdW50IjowLCJjbGlwc190YWJfcGlubmVkX3VzZXJfaWRzIjpbXSwiY29hdXRob3JfcHJvZHVjZXJfY2FuX3NlZV9vcmdhbmljX2luc2lnaHRzIjpmYWxzZSwiY29hdXRob3JfcHJvZHVjZXJzIjpbeyJmdWxsX25hbWUiOiJaZWl0eXBlIiwiaWQiOiIzOTQ0MDMwOSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInBrIjoiMzk0NDAzMDkiLCJwcm9maWxlX3BpY19pZCI6IjMzMDAzNTgzMDMyOTI3MDkwMDIiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvNDI3NTI2NDExXzQxNzQ4NjUyNDA2MjMyMl8xNjc4NzUzOTYzNjE3MDg3NTQ2X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9VVV0UnZWMVBmbmdRN2tOdmdFRDRtMzYmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlDVDVTdHdxazhWTmZUMUw1UDM5aFEzRUppMVVIb2VWeDBvaHNOTGtqbVRPUSZvZT02N0JCNTc1MCZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoiemVpdHlwZSJ9LHsiZnVsbF9uYW1lIjoiSW5kZ2lsYSBTYW1hZCBBbGkgQWxpemFpIiwiaWQiOiIyNzg3NTM2NDEiLCJpc19wcml2YXRlIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwayI6IjI3ODc1MzY0MSIsInByb2ZpbGVfcGljX2lkIjoiMjE3NDgwMzU1OTQ2NDIwMzU3NSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS83MjcyMDYwMV8yNTY5NTgzODM2NDIyNzU4XzI1MjI0NjQ1NjM4NzAzMDIyMDhfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jT2RBR2FpeDd2MFE3a052Z0ZXLXFzZSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUMyZ3VJeExTZUpZWk9BZU1LaWdOMEF5NnkyQWJBOFEtc2k4ck0tNzhJNFR3Jm9lPTY3QkIzRTA4Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJpbmRnaWxhIn0seyJmdWxsX25hbWUiOiJzaGFubm9uamFnZXIiLCJpZCI6IjM2MTkyNDA0IiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicGsiOiIzNjE5MjQwNCIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS8xMDg5OTM0MF81OTkwMzUwODAyMzAxNDNfMTk1NTY5MzQ5NF9hLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA3Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPWM3NExqVGJJQUk0UTdrTnZnRk1qR2hUJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZQnBzS2tmUE9HTmZzQzktNzdWWjBocllmVXJHQlA2MXpFaWxyVjUzeWxuWlEmb2U9NjdCQjNFOEUmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6InNoYW5ub25qYWdlciJ9LHsiZnVsbF9uYW1lIjoiS2VubmV0aCBLdWgiLCJpZCI6IjMyMDMwODc4MCIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInBrIjoiMzIwMzA4NzgwIiwicHJvZmlsZV9waWNfaWQiOiIzMDI3NzA5NDI3Nzg0ODgyNjA0IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzMyODU3MTExOV8xOTIzNzAxMDM0Njk2NDJfMTk5NDI1MjYxMzMyMjM4NjM3OV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRaeExLdDZiOUxvUTdrTnZnRkY1WGxiJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZREVkdVRMSzNqaTJqLVpFbDFGQTgzVXVyNElKdlZtRXFvUDlKWHJRVFdQUXcmb2U9NjdCQjVBQzEmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6Imtlbm5ldGhrdWguaW5mbyJ9XSwiY29kZSI6IkRGOGhEM2d5c2lwIiwiY29sbGFiX2ZvbGxvd19idXR0b25faW5mbyI6eyJpc19vd25lcl9pbl9hdXRob3JfZXhwIjp0cnVlLCJzaG93X2ZvbGxvd19idXR0b24iOnRydWV9LCJjb21tZW50X2NvdW50Ijo1NSwiY29tbWVudF9pbmZvcm1fdHJlYXRtZW50Ijp7ImFjdGlvbl90eXBlIjpudWxsLCJzaG91bGRfaGF2ZV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwidGV4dCI6IiIsInVybCI6bnVsbH0sImNyb3NzcG9zdF9tZXRhZGF0YSI6eyJmYl9kb3duc3RyZWFtX3VzZV94cG9zdF9tZXRhZGF0YSI6eyJkb3duc3RyZWFtX3VzZV94cG9zdF9kZW55X3JlYXNvbiI6Ik5PTkUifX0sImRlbGV0ZWRfcmVhc29uIjowLCJkZXZpY2VfdGltZXN0YW1wIjoxNzM5MzA0NTk1MjA0MDk2LCJmYl9hZ2dyZWdhdGVkX2NvbW1lbnRfY291bnQiOjAsImZiX2FnZ3JlZ2F0ZWRfbGlrZV9jb3VudCI6MCwiZmJfdXNlcl90YWdzIjp7ImluIjpbXX0sImZiaWQiOiIxODAzODI2MjM0NzQzNDE5MyIsImZlYXR1cmVkX3Byb2R1Y3RzIjpbXSwiZmVlZF90eXBlIjoibWVkaWEiLCJmaWx0ZXJfdHlwZSI6MCwiZnVuZHJhaXNlcl90YWciOnsiaGFzX3N0YW5kYWxvbmVfZnVuZHJhaXNlciI6ZmFsc2V9LCJnZW5fYWlfZGV0ZWN0aW9uX21ldGhvZCI6eyJkZXRlY3Rpb25fbWV0aG9kIjoiTk9ORSJ9LCJoYXNfaGlnaF9yaXNrX2dlbl9haV9pbmZvcm1fdHJlYXRtZW50IjpmYWxzZSwiaGFzX2xpa2VkIjpmYWxzZSwiaGFzX3ByaXZhdGVseV9saWtlZCI6ZmFsc2UsImhhc19zaGFyZWRfdG9fZmIiOjAsImhhc192aWV3c19mZXRjaGluZyI6dHJ1ZSwiaWQiOiIzNTY1ODcwNDA2MjY5ODQ3NzIxIiwiaWdfbWVkaWFfc2hhcmluZ19kaXNhYmxlZCI6ZmFsc2UsImlnYmlvX3Byb2R1Y3QiOm51bGwsImltYWdlX3ZlcnNpb25zIjp7Iml0ZW1zIjpbeyJoZWlnaHQiOjEzNTAsInVybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY5MTEzNTBfMTg0ODUxMTczMTcwMjk1NDJfMzg5NzM4MzI4NDA3NTQ0NzQ4NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M3RJbWF1a21IZkFRN2tOdmdIdWc1eWkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1URTVOVFUxT1RnNU5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRE1NYmhWN3p6Y3RhWjdkT09GOEFaNDh0Qk8xZWhXX0VrMGxLd0cwdzRuVlEmb2U9NjdCQjY2NkEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MTA4MH0seyJoZWlnaHQiOjQ1MCwidXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE1LzQ3NjkxMTM1MF8xODQ4NTExNzMxNzAyOTU0Ml8zODk3MzgzMjg0MDc1NDQ3NDg0X24uanBnP3N0cD1kc3QtanBnX2UzNV9wMzYweDM2MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M3RJbWF1a21IZkFRN2tOdmdIdWc1eWkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1URTVOVFUxT1RnNU5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZQWkyRzNkUjZ1TWtxQ19sS0I2cVROZFJFaXNhMExDVTZhenZaSzlmX1VMd1Emb2U9NjdCQjY2NkEmX25jX3NpZD0yMDExYWQiLCJ3aWR0aCI6MzYwfV19LCJpbnRlZ3JpdHlfcmV2aWV3X2RlY2lzaW9uIjoicGVuZGluZyIsImludml0ZWRfY29hdXRob3JfcHJvZHVjZXJzIjpbXSwiaXNfY29tbWVudHNfZ2lmX2NvbXBvc2VyX2VuYWJsZWQiOnRydWUsImlzX2N1dG91dF9zdGlja2VyX2FsbG93ZWQiOmZhbHNlLCJpc19lbGlnaWJsZV9jb250ZW50X2Zvcl9wb3N0X3JvbGxfYWQiOmZhbHNlLCJpc19lbGlnaWJsZV9mb3JfbWVkaWFfbm90ZV9yZWNzX251eCI6ZmFsc2UsImlzX2VsaWdpYmxlX2Zvcl9tZXRhX2FpX3NoYXJlIjpmYWxzZSwiaXNfaW5fcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfb3Blbl90b19wdWJsaWNfc3VibWlzc2lvbiI6ZmFsc2UsImlzX29yZ2FuaWNfcHJvZHVjdF90YWdnaW5nX2VsaWdpYmxlIjp0cnVlLCJpc19wYWlkX3BhcnRuZXJzaGlwIjpmYWxzZSwiaXNfcGlubmVkIjp0cnVlLCJpc19wb3N0X2xpdmVfY2xpcHNfbWVkaWEiOmZhbHNlLCJpc19yZXNoYXJlX29mX3RleHRfcG9zdF9hcHBfbWVkaWFfaW5faWciOmZhbHNlLCJpc19zb2NpYWxfdWZpX2Rpc2FibGVkIjpmYWxzZSwiaXNfdGFnZ2VkX21lZGlhX3NoYXJlZF90b192aWV3ZXJfcHJvZmlsZV9ncmlkIjpmYWxzZSwiaXNfdmlkZW8iOmZhbHNlLCJsYXQiOjM3LjYxNzE4NjYwNTUxOSwibGF5b3V0X3R5cGUiOiJtZWRpYV9ncmlkIiwibGlrZV9hbmRfdmlld19jb3VudHNfZGlzYWJsZWQiOmZhbHNlLCJsaWtlX2NvdW50Ijo4NjQsImxuZyI6LTEyMi4zODk3NjgxMzM4MiwibG9jYXRpb24iOnsiYWRkcmVzcyI6IiIsImNpdHkiOiIiLCJleHRlcm5hbF9zb3VyY2UiOiJmYWNlYm9va19wbGFjZXMiLCJmYWNlYm9va19wbGFjZXNfaWQiOjEwNzI4MTQxMDY1MTEzMSwibGF0IjozNy42MTcxODY2MDU1MTksImxuZyI6LTEyMi4zODk3NjgxMzM4MiwibmFtZSI6IlNhbiBGcmFuY2lzY28iLCJwayI6IjEwNzI4MTQxMDY1MTEzMSIsInNob3J0X25hbWUiOiJTYW4gRnJhbmNpc2NvIn0sIm1lZGlhX2Zvcm1hdCI6ImFsYnVtIiwibWVkaWFfbmFtZSI6ImFsYnVtIiwibWVkaWFfbm90ZXMiOnsiaXRlbXMiOltdfSwibWVkaWFfdHlwZSI6OCwibWV0YV9haV9zdWdnZXN0ZWRfcHJvbXB0cyI6W10sIm11c2ljX21ldGFkYXRhIjp7ImF1ZGlvX2Nhbm9uaWNhbF9pZCI6IjAiLCJhdWRpb190eXBlIjpudWxsLCJtdXNpY19pbmZvIjpudWxsLCJvcmlnaW5hbF9zb3VuZF9pbmZvIjpudWxsLCJwaW5uZWRfbWVkaWFfaWRzIjpudWxsfSwib3Blbl9jYXJvdXNlbF9zaG93X2ZvbGxvd19idXR0b24iOmZhbHNlLCJvcGVuX2Nhcm91c2VsX3N1Ym1pc3Npb25fc3RhdGUiOiJjbG9zZWQiLCJvcmlnaW5hbF9oZWlnaHQiOjYxMiwib3JpZ2luYWxfd2lkdGgiOjYxMiwicGsiOiIzNTY1ODcwNDA2MjY5ODQ3NzIxIiwicHJldmlld19jb21tZW50cyI6W10sInByb2R1Y3Rfc3VnZ2VzdGlvbnMiOltdLCJwcm9kdWN0X3R5cGUiOiJjYXJvdXNlbF9jb250YWluZXIiLCJzaGFyZV9jb3VudF9kaXNhYmxlZCI6ZmFsc2UsInNoYXJpbmdfZnJpY3Rpb25faW5mbyI6eyJibG9rc19hcHBfdXJsIjpudWxsLCJzaGFyaW5nX2ZyaWN0aW9uX3BheWxvYWQiOm51bGwsInNob3VsZF9oYXZlX3NoYXJpbmdfZnJpY3Rpb24iOmZhbHNlfSwic2hvcF9yb3V0aW5nX3VzZXJfaWQiOm51bGwsInNob3VsZF9vcGVuX2NvbGxhYl9ib3R0b21zaGVldF9vbl9mYWNlcGlsZV90YXAiOmZhbHNlLCJzaG91bGRfc2hvd19hdXRob3JfcG9nX2Zvcl90YWdnZWRfbWVkaWFfc2hhcmVkX3RvX3Byb2ZpbGVfZ3JpZCI6ZmFsc2UsInN1YnNjcmliZV9jdGFfdmlzaWJsZSI6ZmFsc2UsInRhZ2dlZF91c2VycyI6eyJpbiI6W3sicG9zaXRpb24iOlswLjUsMC41XSwic2hvd19jYXRlZ29yeV9vZl91c2VyIjpmYWxzZSwidXNlciI6eyJmdWxsX25hbWUiOiJzaGFubm9uamFnZXIiLCJpZCI6IjM2MTkyNDA0IiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzEwODk5MzQwXzU5OTAzNTA4MDIzMDE0M18xOTU1NjkzNDk0X2EuanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDcmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9Yzc0TGpUYklBSTRRN2tOdmdGTWpHaFQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCcHNLa2ZQT0dOZnNDOS03N1ZaMGhyWWZVckdCUDYxekVpbHJWNTN5bG5aUSZvZT02N0JCM0U4RSZfbmNfc2lkPTIwMTFhZCIsInVzZXJuYW1lIjoic2hhbm5vbmphZ2VyIn19LHsicG9zaXRpb24iOlswLjUsMC41XSwic2hvd19jYXRlZ29yeV9vZl91c2VyIjpmYWxzZSwidXNlciI6eyJmdWxsX25hbWUiOiJaZWl0eXBlIiwiaWQiOiIzOTQ0MDMwOSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMzMwMDM1ODMwMzI5MjcwOTAwMiIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS80Mjc1MjY0MTFfNDE3NDg2NTI0MDYyMzIyXzE2Nzg3NTM5NjM2MTcwODc1NDZfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1VVXRSdlYxUGZuZ1E3a052Z0VENG0zNiZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUNUNVN0d3FrOFZOZlQxTDVQMzloUTNFSmkxVUhvZVZ4MG9oc05Ma2ptVE9RJm9lPTY3QkI1NzUwJl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJ6ZWl0eXBlIn19LHsicG9zaXRpb24iOlswLjUsMC41XSwic2hvd19jYXRlZ29yeV9vZl91c2VyIjpmYWxzZSwidXNlciI6eyJmdWxsX25hbWUiOiJJbmRnaWxhIFNhbWFkIEFsaSBBbGl6YWkiLCJpZCI6IjI3ODc1MzY0MSIsImlzX3ByaXZhdGUiOmZhbHNlLCJpc192ZXJpZmllZCI6ZmFsc2UsInByb2ZpbGVfcGljX2lkIjoiMjE3NDgwMzU1OTQ2NDIwMzU3NSIsInByb2ZpbGVfcGljX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xOS83MjcyMDYwMV8yNTY5NTgzODM2NDIyNzU4XzI1MjI0NjQ1NjM4NzAzMDIyMDhfbi5qcGc/c3RwPWRzdC1qcGdfZTBfczE1MHgxNTBfdHQ2Jl9uY19odD1zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbSZfbmNfY2F0PTEwMiZfbmNfb2M9UTZjWjJBRVFNYTdOMnBKU2FnNkExaHE1SnZDdTFZcFdXdHZlWl9WM0d3MGxLdURDOUF4MGpzdzQzU19QOS1nanIxQ0xaZGMmX25jX29oYz1jT2RBR2FpeDd2MFE3a052Z0ZXLXFzZSZfbmNfZ2lkPTJlNTgxMjQzODI2MTRiNWM4YzY1N2E2ZWEwMTJhZDk0JmVkbT1BR3lLVTRnQkFBQUEmY2NiPTctNSZvaD0wMF9BWUMyZ3VJeExTZUpZWk9BZU1LaWdOMEF5NnkyQWJBOFEtc2k4ck0tNzhJNFR3Jm9lPTY3QkIzRTA4Jl9uY19zaWQ9MjAxMWFkIiwidXNlcm5hbWUiOiJpbmRnaWxhIn19LHsicG9zaXRpb24iOlswLjUsMC41XSwic2hvd19jYXRlZ29yeV9vZl91c2VyIjpmYWxzZSwidXNlciI6eyJmdWxsX25hbWUiOiJLZW5uZXRoIEt1aCIsImlkIjoiMzIwMzA4NzgwIiwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3ZlcmlmaWVkIjpmYWxzZSwicHJvZmlsZV9waWNfaWQiOiIzMDI3NzA5NDI3Nzg0ODgyNjA0IiwicHJvZmlsZV9waWNfdXJsIjoiaHR0cHM6Ly9zY29udGVudC1kdXMxLTEuY2RuaW5zdGFncmFtLmNvbS92L3Q1MS4yODg1LTE5LzMyODU3MTExOV8xOTIzNzAxMDM0Njk2NDJfMTk5NDI1MjYxMzMyMjM4NjM3OV9uLmpwZz9zdHA9ZHN0LWpwZ19lMF9zMTUweDE1MF90dDYmX25jX2h0PXNjb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tJl9uY19jYXQ9MTA2Jl9uY19vYz1RNmNaMkFFUU1hN04ycEpTYWc2QTFocTVKdkN1MVlwV1d0dmVaX1YzR3cwbEt1REM5QXgwanN3NDNTX1A5LWdqcjFDTFpkYyZfbmNfb2hjPVRaeExLdDZiOUxvUTdrTnZnRkY1WGxiJl9uY19naWQ9MmU1ODEyNDM4MjYxNGI1YzhjNjU3YTZlYTAxMmFkOTQmZWRtPUFHeUtVNGdCQUFBQSZjY2I9Ny01Jm9oPTAwX0FZREVkdVRMSzNqaTJqLVpFbDFGQTgzVXVyNElKdlZtRXFvUDlKWHJRVFdQUXcmb2U9NjdCQjVBQzEmX25jX3NpZD0yMDExYWQiLCJ1c2VybmFtZSI6Imtlbm5ldGhrdWguaW5mbyJ9fV19LCJ0YWtlbl9hdCI6MTczOTMwNDg5OSwidGh1bWJuYWlsX3VybCI6Imh0dHBzOi8vc2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20vdi90NTEuMjg4NS0xNS80NzY5MTEzNTBfMTg0ODUxMTczMTcwMjk1NDJfMzg5NzM4MzI4NDA3NTQ0NzQ4NF9uLmpwZz9zdHA9ZHN0LWpwZ19lMzVfcDEwODB4MTA4MF90dDYmZWZnPWV5SjJaVzVqYjJSbFgzUmhaeUk2SW1sdFlXZGxYM1Z5YkdkbGJpNHhORFF3ZURFNE1EQXVjMlJ5TG1ZM05UYzJNUzVrWldaaGRXeDBYMmx0WVdkbEluMCZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDImX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9M3RJbWF1a21IZkFRN2tOdmdIdWc1eWkmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmaWdfY2FjaGVfa2V5PU16VTJOVGczTURNNU1URTVOVFUxT1RnNU5RJTNEJTNELjMtY2NiNy01Jm9oPTAwX0FZRE1NYmhWN3p6Y3RhWjdkT09GOEFaNDh0Qk8xZWhXX0VrMGxLd0cwdzRuVlEmb2U9NjdCQjY2NkEmX25jX3NpZD0yMDExYWQiLCJ0aW1lbGluZV9waW5uZWRfdXNlcl9pZHMiOls0NDcwMTU0MV0sInRvcF9saWtlcnMiOltdLCJ1c2VyIjp7ImFjY291bnRfYmFkZ2VzIjpbXSwiYWNjb3VudF90eXBlIjozLCJmYW5fY2x1Yl9pbmZvIjp7ImF1dG9zYXZlX3RvX2V4Y2x1c2l2ZV9oaWdobGlnaHQiOm51bGwsImNvbm5lY3RlZF9tZW1iZXJfY291bnQiOm51bGwsImZhbl9jbHViX2lkIjpudWxsLCJmYW5fY2x1Yl9uYW1lIjpudWxsLCJmYW5fY29uc2lkZXJhdGlvbl9wYWdlX3JldmFtcF9lbGlnaWJsaXR5IjpudWxsLCJoYXNfY3JlYXRlZF9zc2MiOm51bGwsImhhc19lbm91Z2hfc3Vic2NyaWJlcnNfZm9yX3NzYyI6bnVsbCwiaXNfZmFuX2NsdWJfZ2lmdGluZ19lbGlnaWJsZSI6bnVsbCwiaXNfZmFuX2NsdWJfcmVmZXJyYWxfZWxpZ2libGUiOm51bGwsImlzX2ZyZWVfdHJpYWxfZWxpZ2libGUiOm51bGwsImxhcmdlc3RfcHVibGljX2JjX2lkIjpudWxsLCJzdWJzY3JpYmVyX2NvdW50IjpudWxsfSwiZmJpZF92MiI6MTc4NDE0MDA4ODYyMzA2OTgsImZlZWRfcG9zdF9yZXNoYXJlX2Rpc2FibGVkIjpmYWxzZSwiZnVsbF9uYW1lIjoiRGFuaWVsIFN0dWhscGZhcnJlciIsImhhc19hbm9ueW1vdXNfcHJvZmlsZV9waWN0dXJlIjpmYWxzZSwiaWQiOiI0NDcwMTU0MSIsImlzX2Zhdm9yaXRlIjpmYWxzZSwiaXNfcHJpdmF0ZSI6ZmFsc2UsImlzX3VucHVibGlzaGVkIjpmYWxzZSwiaXNfdmVyaWZpZWQiOmZhbHNlLCJwcm9maWxlX3BpY19pZCI6IjI3NjkxNTYyOTM1MDk5MTE1NzEiLCJwcm9maWxlX3BpY191cmwiOiJodHRwczovL3Njb250ZW50LWR1czEtMS5jZG5pbnN0YWdyYW0uY29tL3YvdDUxLjI4ODUtMTkvMjczNTA4OTE4XzE2NTkwMDg0MjQ0MjE4MV80NDIxNjUzMDAzNzU5OTM1OTc2X24uanBnP3N0cD1kc3QtanBnX2UwX3MxNTB4MTUwX3R0NiZfbmNfaHQ9c2NvbnRlbnQtZHVzMS0xLmNkbmluc3RhZ3JhbS5jb20mX25jX2NhdD0xMDEmX25jX29jPVE2Y1oyQUVRTWE3TjJwSlNhZzZBMWhxNUp2Q3UxWXBXV3R2ZVpfVjNHdzBsS3VEQzlBeDBqc3c0M1NfUDktZ2pyMUNMWmRjJl9uY19vaGM9ejBiTzhTemNlamNRN2tOdmdFc2tTZjQmX25jX2dpZD0yZTU4MTI0MzgyNjE0YjVjOGM2NTdhNmVhMDEyYWQ5NCZlZG09QUd5S1U0Z0JBQUFBJmNjYj03LTUmb2g9MDBfQVlCbDFuSDctQzY3dTJQVExFcUExUmxtYk5CcHFGWTVGcFNDdVdkdVhUUDFBQSZvZT02N0JCNTNGQSZfbmNfc2lkPTIwMTFhZCIsInNob3dfYWNjb3VudF90cmFuc3BhcmVuY3lfZGV0YWlscyI6dHJ1ZSwidGhpcmRfcGFydHlfZG93bmxvYWRzX2VuYWJsZWQiOjEsInRyYW5zcGFyZW5jeV9wcm9kdWN0X2VuYWJsZWQiOmZhbHNlLCJ1c2VybmFtZSI6ImRhbmllbF9zdHVobHBmYXJyZXIifSwidmlkZW9fc3RpY2tlcl9sb2NhbGVzIjpbXX1dLCJ0b3RhbCI6MzI2MzgyMH0sInBhZ2luYXRpb25fdG9rZW4iOiJEazFJQkI0cEVoWmNaVlpYVWdadFFFaEdHaFlSUnh0SEVBNEtad0ZUQWs5elVFRkZTbWNYVXdwR0FFMERSZ0VPQndCVlRFRmVTandRRXhRQlBBUUdBeGNRUndGZVNVWkJDak1TRmo0bU1RY0FIQjE5VzFKVVgzME1DaFlEQ2w0UkVSVVZCMEVyQUZ0VVZtZFNSZ1pBQlZjY1dDeFFBZ28tUVVkUVNqMWVGRXBLYjF0RERBTW5UUUJTQ0EifQ==', 'headers': {'via': '1.1 google', 'date': 'Wed, 19 Feb 2025 07:26:04 GMT', 'vary': 'Accept-Encoding', 'server': 'RapidAPI-1.2.8', 'alt-svc': 'h3=\\\":443\\\"; ma=2592000,h3-29=\\\":443\\\"; ma=2592000', 'connection': 'keep-alive', 'content-type': 'application/json', 'x-request-id': 'xUiXmGENRXq25HVbT6Qyag', 'content-encoding': 'gzip', 'transfer-encoding': 'chunked', 'x-rapidapi-region': 'AWS - us-east-1', 'x-rapidapi-version': '1.2.8', 'x-rapidapi-request-id': '29efa2ab1eea36a8c17e605148a021d3c776f4a9dba688eacb02ee19d8d55521', 'x-ratelimit-requests-limit': '500', 'x-ratelimit-requests-reset': '1966355', 'x-ratelimit-requests-remaining': '397', 'x-ratelimit-rapid-free-plans-hard-limit-limit': '500000', 'x-ratelimit-rapid-free-plans-hard-limit-reset': '1966355', 'x-ratelimit-rapid-free-plans-hard-limit-remaining': '499897'}, 'status_code': 200}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\",\n      \"Type:  init\\n\",\n      \"output:  {'url': 'https://github.com/julep-ai/julep/blob/dev/README.md?raw=true', 'topic': 'ChatGPT'}\\n\",\n      \"----------------------------------------------------------------------------------------------------\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"execution_transitions = client.executions.transitions.list(\\n\",\n    \"    execution_id=execution.id).items\\n\",\n    \"\\n\",\n    \"for transition in (execution_transitions):\\n\",\n    \"    print(\\\"Type: \\\", transition.type)\\n\",\n    \"    print(\\\"output: \\\", transition.output)\\n\",\n    \"    print(\\\"-\\\" * 100)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Final Output\\n\",\n    \"\\n\",\n    \"The final output of the execution is the output of the last transition, which should have a type of `finish`.\\n\",\n    \"\\n\",\n    \"The output of the last transition is the output of the task.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": 19,\n   \"metadata\": {},\n   \"outputs\": [\n    {\n     \"name\": \"stdout\",\n     \"output_type\": \"stream\",\n     \"text\": [\n      \"{'image_urls': ['https://replicate.delivery/xezq/XAUKzHkMQ6q4BtWoGTepqjg942Ab8pKRG1quk1SGmUX00ZIKA/tmpw4c8babk.png',\\n\",\n      \"                'https://replicate.delivery/xezq/XhRwfczqYNWrISGTxfcb1u2Mhmpxledc3eX7J75haobhmODRB/tmpr_8v65l2.png',\\n\",\n      \"                'https://replicate.delivery/xezq/nsH6gftRpbTWeEI9g2jzK83fWCbJZOljpBeKxwe2AgBHNdGiC/tmpgz3xq9yv.png',\\n\",\n      \"                'https://replicate.delivery/xezq/1In8C7jMjALzEdQAp5SADEULEllP7nliI15ceGGcR6etpzQUA/tmp_xm9pquv.png',\\n\",\n      \"                'https://replicate.delivery/xezq/NXhT1nDM7OqtMBkDGN5QXiZxBECSdsRRtoaVeZ1K3si20ZIKA/tmpg6nvcboi.png',\\n\",\n      \"                'https://replicate.delivery/xezq/lodIQW1nfX08MaSBD0wvfnYM5eMaNHT7yqaDVB6S4sdaTnhoA/tmpis1xkbt3.png'],\\n\",\n      \" 'reel_url': 'https://shotstack-api-stage-output.s3-ap-southeast-2.amazonaws.com/f97dat95gd/496b9b8b-2933-43a9-8d72-3e23419ec88a.mp4',\\n\",\n      \" 'scenes': [{'duration': 3,\\n\",\n      \"             'image_prompt': 'Dark home office setting with glowing laptop '\\n\",\n      \"                             'screen showing cascading code, lit primarily by '\\n\",\n      \"                             'screen glow, deep shadows in background',\\n\",\n      \"             'narration': 'Ever notice how most developer tools feel '\\n\",\n      \"                          'overwhelming? Like staring into an endless wall of '\\n\",\n      \"                          'complexity?',\\n\",\n      \"             'scene': 'Opening hook - rapid zoom into laptop screen showing '\\n\",\n      \"                      'code patterns',\\n\",\n      \"             'start_time': 0,\\n\",\n      \"             'text_overlay': 'OVERWHELMED?',\\n\",\n      \"             'tone': 'Fast zoom transition'},\\n\",\n      \"            {'duration': 4,\\n\",\n      \"             'image_prompt': 'Split screen: Left side showing tangled mess of '\\n\",\n      \"                             'workflow diagrams in dark grays, right side '\\n\",\n      \"                             'showing elegant minimal flow chart with deep '\\n\",\n      \"                             'blue accent lighting',\\n\",\n      \"             'narration': 'What if there was a way to turn chaos into clean, '\\n\",\n      \"                          'serverless AI workflows with just a few lines of '\\n\",\n      \"                          'code?',\\n\",\n      \"             'scene': 'Split screen transition showing messy vs clean '\\n\",\n      \"                      'workflows',\\n\",\n      \"             'start_time': 3,\\n\",\n      \"             'text_overlay': 'Chaos → Clean',\\n\",\n      \"             'tone': 'Dynamic split reveal'},\\n\",\n      \"            {'duration': 4,\\n\",\n      \"             'image_prompt': 'Sleek dark mode interface with glowing teal '\\n\",\n      \"                             'accents, showing clean code editor and workflow '\\n\",\n      \"                             'visualization',\\n\",\n      \"             'narration': 'Meet Julep - the serverless platform that lets data '\\n\",\n      \"                          'teams build sophisticated AI workflows without the '\\n\",\n      \"                          'headache.',\\n\",\n      \"             'scene': 'Quick demo of Julep interface in action',\\n\",\n      \"             'start_time': 7,\\n\",\n      \"             'text_overlay': 'JULEP AI',\\n\",\n      \"             'tone': 'Smooth feature showcase'},\\n\",\n      \"            {'duration': 3,\\n\",\n      \"             'image_prompt': 'Multiple dark panels showing simultaneous '\\n\",\n      \"                             'processes with purple/blue data flow animations',\\n\",\n      \"             'narration': 'Run complex AI operations in parallel, manage state '\\n\",\n      \"                          'effortlessly, and scale without touching '\\n\",\n      \"                          'infrastructure.',\\n\",\n      \"             'scene': 'Split screen showing parallel processing visualization',\\n\",\n      \"             'start_time': 11,\\n\",\n      \"             'text_overlay': 'PARALLEL POWER',\\n\",\n      \"             'tone': 'Quick cuts between features'},\\n\",\n      \"            {'duration': 3,\\n\",\n      \"             'image_prompt': 'Dark code editor showing before/after '\\n\",\n      \"                             'comparison, with subtle syntax highlighting in '\\n\",\n      \"                             'deep purple',\\n\",\n      \"             'narration': 'Turn 80 lines of complex code into simple, managed '\\n\",\n      \"                          'workflows that just work.',\\n\",\n      \"             'scene': 'Code snippet transformation',\\n\",\n      \"             'start_time': 14,\\n\",\n      \"             'text_overlay': 'SIMPLIFY',\\n\",\n      \"             'tone': 'Dramatic reveal'},\\n\",\n      \"            {'duration': 4,\\n\",\n      \"             'image_prompt': 'Dark gradient background with floating 3D '\\n\",\n      \"                             'elements showing API key and logo in deep blue '\\n\",\n      \"                             'lighting',\\n\",\n      \"             'narration': 'Ready to transform your AI workflows? Get your free '\\n\",\n      \"                          'API key now at Julep.ai',\\n\",\n      \"             'scene': 'Call-to-action with floating elements',\\n\",\n      \"             'start_time': 17,\\n\",\n      \"             'text_overlay': 'GET STARTED FREE',\\n\",\n      \"             'tone': 'Energetic finale'}],\\n\",\n      \" 'social_media': {'caption': 'Still wrestling with messy AI workflows and '\\n\",\n      \"                             'infrastructure headaches? 👀 We turned complex '\\n\",\n      \"                             'serverless deployments into drag-and-drop '\\n\",\n      \"                             'simplicity. Get your free API key now at '\\n\",\n      \"                             'Julep.ai before we hit capacity! 🚀',\\n\",\n      \"                  'description': 'From 2-hour AI deployments to 5-minute '\\n\",\n      \"                                 'workflows: How data teams are building '\\n\",\n      \"                                 'serverless AI apps 10x faster',\\n\",\n      \"                  'title': 'Turn 80 Lines of AI Code into 5-Line Magic (See '\\n\",\n      \"                           'How)'},\\n\",\n      \" 'transcibe_urls': ['https://replicate.delivery/czjl/8x6oya5WZPZ1MNdahB8SnKN9Ya3zQmKsgDgXn6VJ1pfv0ZIKA/output.wav',\\n\",\n      \"                    'https://replicate.delivery/czjl/VcrkmrW5fG0iJiQfi8ikdpStRJ5HovtOf992YHN6UCDATnhoA/output.wav',\\n\",\n      \"                    'https://replicate.delivery/czjl/eBNG6wYiTJXgYaBdvLkegAcO2GVB5eewzruumVg8neYeX6MEF/output.wav',\\n\",\n      \"                    'https://replicate.delivery/czjl/ExogX0572OIrB5DcUj9jswldg38CgLNAXtJewq0kgN7x0ZIKA/output.wav',\\n\",\n      \"                    'https://replicate.delivery/czjl/37Lnz6cCqIpRHdX4Fm5eVJJyVJ4uK2h82gA9BjAXwuKx0ZIKA/output.wav',\\n\",\n      \"                    'https://replicate.delivery/czjl/KsxjyQZFvB71Fhg3eGoe0XrTORI2VUgff5wfG48Ik8UVMdGiC/output.wav']}\\n\"\n     ]\n    }\n   ],\n   \"source\": [\n    \"from pprint import pprint\\n\",\n    \"execution_transitions = client.executions.transitions.list(\\n\",\n    \"    execution_id=execution.id).items[0]\\n\",\n    \"pprint(execution_transitions.output)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": []\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"julep\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"codemirror_mode\": {\n    \"name\": \"ipython\",\n    \"version\": 3\n   },\n   \"file_extension\": \".py\",\n   \"mimetype\": \"text/x-python\",\n   \"name\": \"python\",\n   \"nbconvert_exporter\": \"python\",\n   \"pygments_lexer\": \"ipython3\",\n   \"version\": \"3.12.2\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/advanced/11-hacker-news-personalized-generator.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"<div align=\\\"center\\\" id=\\\"top\\\">\\n\",\n    \"<img src=\\\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\\\" alt=\\\"julep\\\" />\\n\",\n    \"\\n\",\n    \"<br>\\n\",\n    \"  <p>\\n\",\n    \"    <a href=\\\"https://dashboard.julep.ai\\\">\\n\",\n    \"      <img src=\\\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\\\" alt=\\\"Get API Key\\\" height=\\\"28\\\">\\n\",\n    \"    </a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://docs.julep.ai\\\">\\n\",\n    \"      <img src=\\\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\\\" alt=\\\"Documentation\\\" height=\\\"28\\\">\\n\",\n    \"    </a>\\n\",\n    \"  </p>\\n\",\n    \"  <p>\\n\",\n    \"   <a href=\\\"https://www.npmjs.com/package/@julep/sdk\\\"><img src=\\\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\\\" alt=\\\"NPM Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://pypi.org/project/julep\\\"><img src=\\\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\\\" alt=\\\"PyPI - Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://hub.docker.com/u/julepai\\\"><img src=\\\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\\\" alt=\\\"Docker Image Version\\\" height=\\\"28\\\"></a>\\n\",\n    \"    <span>&nbsp;</span>\\n\",\n    \"    <a href=\\\"https://choosealicense.com/licenses/apache/\\\"><img src=\\\"https://img.shields.io/github/license/julep-ai/julep\\\" alt=\\\"GitHub License\\\" height=\\\"28\\\"></a>\\n\",\n    \"  </p>\\n\",\n    \"  \\n\",\n    \"  <h3>\\n\",\n    \"    <a href=\\\"https://discord.com/invite/JTSBGRZrzj\\\" rel=\\\"dofollow\\\">Discord</a>\\n\",\n    \"    ·\\n\",\n    \"    <a href=\\\"https://x.com/julep_ai\\\" rel=\\\"dofollow\\\">𝕏</a>\\n\",\n    \"    ·\\n\",\n    \"    <a href=\\\"https://www.linkedin.com/company/julep-ai\\\" rel=\\\"dofollow\\\">LinkedIn</a>\\n\",\n    \"  </h3>\\n\",\n    \"</div>\\n\",\n    \"\\n\",\n    \"# Hacker News Personalized Newsletter Generator\\n\",\n    \"\\n\",\n    \"## Overview\\n\",\n    \"\\n\",\n    \"This cookbook demonstrates how to build an intelligent newsletter generator that fetches top stories from Hacker News, personalizes content based on user preferences, and creates curated summaries. The agent analyzes story relevance using AI, scrapes full article content, and generates insightful summaries for a truly personalized reading experience.\\n\",\n    \"\\n\",\n    \"## What This Cookbook Does\\n\",\n    \"\\n\",\n    \"The Hacker News agent performs the following workflow:\\n\",\n    \"\\n\",\n    \"1. **Fetches Top Stories**: Retrieves the latest top stories from Hacker News API\\n\",\n    \"2. **Filters by Score**: Only includes stories that meet a minimum score threshold\\n\",\n    \"3. **Scrapes Article Content**: Uses Spider web scraping to get full article content in markdown format\\n\",\n    \"4. **Fetches Comments**: Retrieves top comments for each story to provide community context\\n\",\n    \"5. **Personalizes Content**: Scores each story based on user's technology interests (0-100)\\n\",\n    \"6. **Generates Summaries**: Creates concise, insightful summaries for relevant stories\\n\",\n    \"7. **Formats Output**: Produces a clean newsletter format with titles, URLs, and summaries\\n\",\n    \"\\n\",\n    \"## Key Features\\n\",\n    \"\\n\",\n    \"- **Parallel Processing**: Fetches story details, article content, and comments in parallel for efficiency\\n\",\n    \"- **Smart Filtering**: Two-stage filtering - first by HN score, then by personalization relevance\\n\",\n    \"- **Full Content Analysis**: Goes beyond titles to analyze actual article content\\n\",\n    \"- **Community Context**: Includes top comments to capture community insights\\n\",\n    \"- **Customizable Parameters**: Configurable minimum score, number of stories, and user interests\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"!pip install julep -U --quiet\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import uuid\\n\",\n    \"\\n\",\n    \"AGENT_UUID = uuid.uuid4()\\n\",\n    \"TASK_UUID = uuid.uuid4() \"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Creating Julep Client with the API Key\\n\",\n    \"\\n\",\n    \"Get your API key from [here](https://dashboard.julep.ai/)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os\\n\",\n    \"\\n\",\n    \"JULEP_API_KEY = \\\"your-api-key\\\"\\n\",\n    \"\\n\",\n    \"# Create a Julep client\\n\",\n    \"client = Client(api_key=JULEP_API_KEY, environment=\\\"production\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an \\\"agent\\\"\\n\",\n    \"\\n\",\n    \"Agent is the object to which LLM settings, like model, temperature along with tools are scoped to.\\n\",\n    \"\\n\",\n    \"To learn more about the agent, please refer to the Agent section in [Julep Concepts](https://docs.julep.ai/docs/concepts/agents).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"# Defining the agent\\n\",\n    \"name = \\\"Hacker News Agent\\\"\\n\",\n    \"about = \\\"A hacker news agent that can fetch the top stories from Hacker News and summarize them.\\\"\\n\",\n    \"\\n\",\n    \"# Create the agent\\n\",\n    \"agent = client.agents.create_or_update(\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    name=name,\\n\",\n    \"    about=about,\\n\",\n    \"    model=\\\"gpt-4o\\\",\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Defining a Task\\n\",\n    \"\\n\",\n    \"Tasks in Julep are Github-Actions-style workflows that define long-running, multi-step actions.\\n\",\n    \"\\n\",\n    \"You can use them to conduct complex actions by defining them step-by-step.\\n\",\n    \"\\n\",\n    \"To learn more about tasks, please refer to the `Tasks` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/tasks).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"\\n\",\n    \"SPIDER_API_KEY = \\\"spider-api-key\\\"\\n\",\n    \"\\n\",\n    \"# Defining the task\\n\",\n    \"task_def = yaml.safe_load(f\\\"\\\"\\\"\\n\",\n    \"name: HN Newsletter Generator\\n\",\n    \"description: Fetch top Hacker News stories, personalize content\\n\",\n    \"input_schema:\\n\",\n    \"type: object\\n\",\n    \"properties:\\n\",\n    \"    min_score:\\n\",\n    \"    type: integer\\n\",\n    \"    default: 50\\n\",\n    \"    num_stories:\\n\",\n    \"    type: integer\\n\",\n    \"    default: 10\\n\",\n    \"    description: Number of stories to include in newsletter\\n\",\n    \"    user_preferences:\\n\",\n    \"    type: array\\n\",\n    \"    items:\\n\",\n    \"        type: string\\n\",\n    \"    description: User's technology interests (e.g., [\\\"AI/ML\\\", \\\"Python\\\", \\\"Startups\\\"])\\n\",\n    \"\\n\",\n    \"tools:\\n\",\n    \"# Fetch top story IDs from Hacker News\\n\",\n    \"- name: fetch_hn_stories\\n\",\n    \"type: api_call\\n\",\n    \"api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: https://hacker-news.firebaseio.com/v0/topstories.json\\n\",\n    \"    headers:\\n\",\n    \"    Content-Type: application/json\\n\",\n    \"\\n\",\n    \"# Get detailed information for a specific story\\n\",\n    \"- name: get_story_details\\n\",\n    \"type: api_call\\n\",\n    \"api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: \\\"https://example.com\\\"\\n\",\n    \"    headers:\\n\",\n    \"    Content-Type: application/json\\n\",\n    \"\\n\",\n    \"# Fetch individual comment details\\n\",\n    \"- name: get_comment_details\\n\",\n    \"type: api_call\\n\",\n    \"api_call:\\n\",\n    \"    method: GET\\n\",\n    \"    url: https://hacker-news.firebaseio.com/v0/item/{{comment_id}}.json\\n\",\n    \"\\n\",\n    \"# Spider web scraping integration\\n\",\n    \"- name: spider_fetch\\n\",\n    \"type: integration\\n\",\n    \"integration:\\n\",\n    \"    provider: spider\\n\",\n    \"    setup:\\n\",\n    \"    spider_api_key: {SPIDER_API_KEY}\\n\",\n    \"\\n\",\n    \"main:\\n\",\n    \"# Step 0: Fetch top story IDs from Hacker News\\n\",\n    \"# This returns an array of story IDs sorted by ranking (typically returns 500 IDs)\\n\",\n    \"- tool: fetch_hn_stories\\n\",\n    \"arguments:\\n\",\n    \"    url: \\\"https://hacker-news.firebaseio.com/v0/topstories.json\\\"\\n\",\n    \"label: fetch_story_ids\\n\",\n    \"\\n\",\n    \"# Step 1: Extract first 50 story IDs\\n\",\n    \"# We limit to 50 to avoid overwhelming API calls while still having enough stories to filter\\n\",\n    \"- evaluate:\\n\",\n    \"    story_ids: $ steps[\\\"fetch_story_ids\\\"].output.json[:50]\\n\",\n    \"    message: $ f\\\"Fetched {{len(steps['fetch_story_ids'].output.json)}} stories, processing top 50\\\"\\n\",\n    \"label: extract_ids\\n\",\n    \"\\n\",\n    \"# Step 2: Fetch details for each story in parallel\\n\",\n    \"# Retrieves full story data (title, url, score, comments count) for each ID with parallelism of 10\\n\",\n    \"- over: $ steps[\\\"extract_ids\\\"].output[\\\"story_ids\\\"]\\n\",\n    \"parallelism: 10\\n\",\n    \"map:\\n\",\n    \"    tool: get_story_details\\n\",\n    \"    arguments:\\n\",\n    \"    method: GET\\n\",\n    \"    url: $ f\\\"https://hacker-news.firebaseio.com/v0/item/{{_}}.json\\\"\\n\",\n    \"label: all_stories\\n\",\n    \"\\n\",\n    \"# Step 3: Extract successfully fetched story data from the API responses\\n\",\n    \"- evaluate:\\n\",\n    \"    stories: $ [item[\\\"json\\\"] for item in _ if item and \\\"json\\\" in item]\\n\",\n    \"label: extract_stories\\n\",\n    \"\\n\",\n    \"# Step 4: Filter by score\\n\",\n    \"# Only keep stories that meet the minimum score threshold (default: 50 points)\\n\",\n    \"- evaluate:\\n\",\n    \"    filtered: $ [s for s in steps[\\\"extract_stories\\\"][\\\"output\\\"][\\\"stories\\\"] if \\\"score\\\" in s and s[\\\"score\\\"] >= inputs.get(\\\"min_score\\\", 50)]\\n\",\n    \"label: filter_stories\\n\",\n    \"\\n\",\n    \"# Step 5: Sort stories by score and limit to requested number\\n\",\n    \"# Takes top N stories based on num_stories input parameter (default: 10)\\n\",\n    \"- evaluate:\\n\",\n    \"    sorted_stories: '$ steps[\\\"filter_stories\\\"][\\\"output\\\"][\\\"filtered\\\"][:inputs.get(\\\"num_stories\\\", 10)]'\\n\",\n    \"label: sort_stories\\n\",\n    \"\\n\",\n    \"# Step 6: Fetch full article content for each story using Spider web scraping\\n\",\n    \"# Spider converts web pages to clean markdown format for easier processing\\n\",\n    \"- over: $ steps[\\\"sort_stories\\\"][\\\"output\\\"][\\\"sorted_stories\\\"]\\n\",\n    \"parallelism: 4\\n\",\n    \"map:\\n\",\n    \"    tool: spider_fetch\\n\",\n    \"    arguments:\\n\",\n    \"    url: $ _['url']\\n\",\n    \"    params:\\n\",\n    \"        request: smart_mode\\n\",\n    \"        return_format: markdown\\n\",\n    \"        proxy_enabled: $ True\\n\",\n    \"        filter_output_images: $ True\\n\",\n    \"        filter_output_svg: $ True\\n\",\n    \"        readability: $ True\\n\",\n    \"        limit: 1\\n\",\n    \"label: fetch_content\\n\",\n    \"\\n\",\n    \"# Step 7: Extract scraped content from Spider responses\\n\",\n    \"# Handles cases where scraping might fail for some URLs\\n\",\n    \"- evaluate:\\n\",\n    \"    scraped_contents: '$ [item[\\\"result\\\"][0][\\\"content\\\"] if item and \\\"result\\\" in item and item[\\\"result\\\"] and \\\"content\\\" in item[\\\"result\\\"][0] else \\\"\\\" for item in _]'\\n\",\n    \"label: extract_scraped_content\\n\",\n    \"\\n\",\n    \"# Step 8: Prepare comment fetching by creating pairs of story ID and comment ID\\n\",\n    \"# Gets up to 3 top comments per story for context\\n\",\n    \"- evaluate:\\n\",\n    \"    comment_pairs: '$ [{{\\\"story_id\\\": story[\\\"id\\\"], \\\"story_index\\\": idx, \\\"comment_id\\\": kid}} for idx, story in \\n\",\n    \"enumerate(steps[\\\"sort_stories\\\"][\\\"output\\\"][\\\"sorted_stories\\\"]) if \\\"kids\\\" in story for kid in story[\\\"kids\\\"][:3]]'\\n\",\n    \"label: prepare_comments\\n\",\n    \"\\n\",\n    \"# Step 9: Fetch all comment details in parallel\\n\",\n    \"# Higher parallelism (15) since comments are smaller and faster to fetch\\n\",\n    \"- over: '$ steps[\\\"prepare_comments\\\"][\\\"output\\\"][\\\"comment_pairs\\\"]'\\n\",\n    \"parallelism: 15\\n\",\n    \"map:\\n\",\n    \"    tool: get_comment_details\\n\",\n    \"    arguments:\\n\",\n    \"    method: GET\\n\",\n    \"    url: '$ f\\\"https://hacker-news.firebaseio.com/v0/item/{{_[\\\\\\\"comment_id\\\\\\\"]}}.json\\\"'\\n\",\n    \"label: fetch_all_comments\\n\",\n    \"\\n\",\n    \"# Step 10: Extract just the comment data\\n\",\n    \"# Filters out any failed comment fetches\\n\",\n    \"- evaluate:\\n\",\n    \"    comment_results: '$ [item[\\\"json\\\"] for item in _ if item and \\\"json\\\" in item and item[\\\"json\\\"]]'\\n\",\n    \"label: extract_comments\\n\",\n    \"\\n\",\n    \"# Step 11: Group comments by their parent story index\\n\",\n    \"# This maintains the relationship between comments and their stories\\n\",\n    \"- evaluate:\\n\",\n    \"    comments_grouped: '$ [[pair[\\\"story_index\\\"], steps[\\\"extract_comments\\\"][\\\"output\\\"][\\\"comment_results\\\"][i]] for i, pair in \\n\",\n    \"enumerate(steps[\\\"prepare_comments\\\"][\\\"output\\\"][\\\"comment_pairs\\\"])]'\\n\",\n    \"label: comments_with_index\\n\",\n    \"\\n\",\n    \"# Step 12: Combine stories with their scraped content and top comments\\n\",\n    \"# Creates a complete data structure for each story\\n\",\n    \"- evaluate:\\n\",\n    \"    stories_with_comments: '$ [dict(story, content=steps[\\\"extract_scraped_content\\\"][\\\"output\\\"][\\\"scraped_contents\\\"][i], top_comments=[item[1] for item in \\n\",\n    \"steps[\\\"comments_with_index\\\"][\\\"output\\\"][\\\"comments_grouped\\\"] if item[0] == i]) for i, story in enumerate(steps[\\\"sort_stories\\\"][\\\"output\\\"][\\\"sorted_stories\\\"])]'\\n\",\n    \"label: final_stories_with_comments\\n\",\n    \"\\n\",\n    \"# Step 13: Score each story individually based on user preferences\\n\",\n    \"# Uses LLM to analyze relevance to user's specified interests\\n\",\n    \"# Returns a score 0-100 for personalization\\n\",\n    \"- over: $ steps[\\\"final_stories_with_comments\\\"][\\\"output\\\"][\\\"stories_with_comments\\\"]\\n\",\n    \"parallelism: 10\\n\",\n    \"map:\\n\",\n    \"    prompt:\\n\",\n    \"    - role: system\\n\",\n    \"        content: |-\\n\",\n    \"        $ f'''\\n\",\n    \"        You are a content curator. Score this HN story's relevance to the user's interests.\\n\",\n    \"        User interests: $ {{ steps[0].input.user_preferences }}\\n\",\n    \"\\n\",\n    \"        Return only a JSON object with the relevance score (0-100).\\n\",\n    \"        Return ONLY raw JSON without markdown code blocks\\n\",\n    \"        '''\\n\",\n    \"    - role: user\\n\",\n    \"        content: >-\\n\",\n    \"        $ f'''\\n\",\n    \"        Story to analyze:\\n\",\n    \"        Title: $ {{ _[\\\"title\\\"] }}\\n\",\n    \"        URL: $ {{ _[\\\"url\\\"] }}\\n\",\n    \"        Score: $ {{ _[\\\"score\\\"] }}\\n\",\n    \"        Content preview: $ {{ _[\\\"content\\\"]}}\\n\",\n    \"        Top comment: $ {{ _[\\\"top_comments\\\"][0][\\\"text\\\"] }}\\n\",\n    \"\\n\",\n    \"        Return format: \\\"relevance_score\\\" from 0 to 100\\n\",\n    \"        Return only a JSON object with the relevance score (0-100).\\n\",\n    \"        Return ONLY raw JSON without markdown code blocks\\n\",\n    \"        '''\\n\",\n    \"    unwrap: true\\n\",\n    \"label: score_stories\\n\",\n    \"\\n\",\n    \"# Step 14: Combine original stories with their relevance scores\\n\",\n    \"# Creates tuples of story data and personalization score\\n\",\n    \"- evaluate:\\n\",\n    \"    scored_stories: '$ [{{\\\"story\\\": steps[\\\"final_stories_with_comments\\\"][\\\"output\\\"][\\\"stories_with_comments\\\"][i], \\\"relevance_score\\\": json.loads(steps[\\\"score_stories\\\"][\\\"output\\\"][i])[\\\"relevance_score\\\"]}} for i in range(len(steps[\\\"score_stories\\\"][\\\"output\\\"]))]'\\n\",\n    \"label: combine_scores\\n\",\n    \"\\n\",\n    \"# Step 15: Filter stories with relevance >= 60\\n\",\n    \"# Only keep stories that are highly relevant to user's interests\\n\",\n    \"- evaluate:\\n\",\n    \"    personalized_stories: $ [item for item in steps[\\\"combine_scores\\\"][\\\"output\\\"][\\\"scored_stories\\\"] if item[\\\"relevance_score\\\"] >= 60]\\n\",\n    \"label: filter_personalized\\n\",\n    \"\\n\",\n    \"# Step 16: Generate concise summaries for each personalized story\\n\",\n    \"# Creates 100-word summaries highlighting key insights\\n\",\n    \"- over: $ steps[\\\"filter_personalized\\\"][\\\"output\\\"][\\\"personalized_stories\\\"]\\n\",\n    \"parallelism: 10\\n\",\n    \"map:\\n\",\n    \"    prompt:\\n\",\n    \"    - role: system\\n\",\n    \"        content: |\\n\",\n    \"        Generate a concise, insightful summary (max 100 words) for this article.\\n\",\n    \"        Focus on key insights and why it matters.\\n\",\n    \"    - role: user\\n\",\n    \"        content: >-\\n\",\n    \"        $ f'''\\n\",\n    \"        Title: {{ _[\\\"story\\\"][\\\"title\\\"] }}\\n\",\n    \"        Content: {{ _[\\\"story\\\"][\\\"content\\\"] }}\\n\",\n    \"        Top comments: {{ _[\\\"story\\\"][\\\"top_comments\\\"] }}\\n\",\n    \"        '''\\n\",\n    \"    unwrap: true\\n\",\n    \"label: generate_summaries\\n\",\n    \"\\n\",\n    \"# Step 17: Prepare final output structure\\n\",\n    \"# Formats all data into a clean structure\\n\",\n    \"# Includes title, URLs, comment count, and generated summary\\n\",\n    \"- evaluate:\\n\",\n    \"    final_output: |\\n\",\n    \"    $ [{{\\n\",\n    \"        \\\"title\\\": steps[\\\"filter_personalized\\\"][\\\"output\\\"][\\\"personalized_stories\\\"][i][\\\"story\\\"][\\\"title\\\"],\\n\",\n    \"        \\\"url\\\": steps[\\\"filter_personalized\\\"][\\\"output\\\"][\\\"personalized_stories\\\"][i][\\\"story\\\"][\\\"url\\\"],\\n\",\n    \"        \\\"hn_url\\\": f\\\"https://news.ycombinator.com/item?id={{steps['filter_personalized']['output']['personalized_stories'][i]['story']['id']}}\\\",\\n\",\n    \"        \\\"comments_count\\\": steps[\\\"filter_personalized\\\"][\\\"output\\\"][\\\"personalized_stories\\\"][i][\\\"story\\\"].get(\\\"descendants\\\", 0),\\n\",\n    \"        \\\"summary\\\": steps[\\\"generate_summaries\\\"][\\\"output\\\"][i]\\n\",\n    \"    }} for i in range(len(steps[\\\"filter_personalized\\\"][\\\"output\\\"][\\\"personalized_stories\\\"]))]\\n\",\n    \"label: prepare_final_output\\n\",\n    \"\\n\",\n    \"\\\"\\\"\\\")\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"task = client.tasks.create_or_update(\\n\",\n    \"    task_id=TASK_UUID,\\n\",\n    \"    agent_id=AGENT_UUID,\\n\",\n    \"    **task_def\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### Creating an Execution\\n\",\n    \"\\n\",\n    \"An execution is a single run of a task. It is a way to run a task with a specific set of inputs.\\n\",\n    \"\\n\",\n    \"To learn more about executions, please refer to the `Executions` section in [Julep Concepts](https://docs.julep.ai/docs/concepts/execution).\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution = client.executions.create(\\n\",\n    \"    task_id=task.id,\\n\",\n    \"    input={\\n\",\n    \"        \\\"min_score\\\": 50,\\n\",\n    \"        \\\"num_stories\\\": 10,\\n\",\n    \"        \\\"user_preferences\\\": [\\\"AI/ML\\\", \\\"Python\\\", \\\"Startups\\\", \\\"tech\\\"],\\n\",\n    \"    }\\n\",\n    \")\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"### List Transitions\\n\",\n    \"\\n\",\n    \"This method lists all the task steps that have been executed up to this point in time, so the output of a successful execution will be the output of the last transition (first in the transition list as it is in reverse chronological order), which should have a type of `finish`.\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"transitions = []\\n\",\n    \"of = 0\\n\",\n    \"\\n\",\n    \"while new_transitions:= client.executions.transitions.list(execution.id, limit=100, offset=of).items:\\n\",\n    \"    transitions.extend(new_transitions)\\n\",\n    \"    of += 100\\n\",\n    \"\\n\",\n    \"for i, transition in enumerate(transitions):\\n\",\n    \"    print(f\\\"Transition index: {len(transitions) - i}, type: {transition.type}, current: {transition.current}, next: {transition.next}\\\")\\n\",\n    \"    print(\\\"-\\\" * 10)\\n\",\n    \"    print(transition.output)\\n\",\n    \"    print(\\\"/\\\" * 10)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution = client.executions.get(execution.id)\\n\",\n    \"\\n\",\n    \"print(execution.output)\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \".venv\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"name\": \"python\",\n   \"version\": \"3.12.9\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/basics/01-Hello-Agent.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Hello Agent\\n\",\n    \"Create a basic agent using Julep.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"from julep import Client\\n\",\n    \"import os, uuid\\n\\n\",\n    \"client = Client(api_key=os.getenv('JULEP_API_KEY'))\\n\",\n    \"agent = client.agents.create(name='Hello Agent', model='gpt-4o', about='Basic example agent')\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"session = client.sessions.create(agent_id=agent.id)\\n\",\n    \"response = client.sessions.chat(session_id=session.id, messages=[{\\\"role\\\": \\\"user\\\", \\\"content\\\": 'hello'}])\\n\",\n    \"print(response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"julep\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"name\": \"python\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/basics/02-Simple-Task.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Simple Task\\n\",\n    \"Define a simple task for the agent.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"task_def = yaml.safe_load('''\\nname: Echo Task\\ndescription: Echo user input\\nmain:\\n  - prompt:\\n      - role: system\\n        content: |\\n          Say hello and repeat the message.\\n      - role: user\\n        content: $ input.message\\n''')\\n\",\n    \"task = client.tasks.create(agent_id=agent.id, **task_def)\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"execution = client.executions.create(task_id=task.id, input={'message':'Julep rocks!'})\\n\",\n    \"print(execution.status)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"julep\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"name\": \"python\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/basics/03-Adding-Tools.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Adding Tools\\n\",\n    \"Attach a tool to your agent.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"tool = client.agents.tools.create(\\n    agent_id=agent.id,\\n    name='wikipedia_search',\\n    type='integration',\\n    integration={'provider':'wikipedia'}\\n)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"After creating the tool you can reference it within task definitions.\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"julep\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"name\": \"python\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/basics/04-Parallel-Steps.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# Parallel Steps\\n\",\n    \"Example of running steps in parallel.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"import yaml\\n\",\n    \"task_def = yaml.safe_load('''\\nname: Parallel Example\\ndescription: Process items concurrently\\nmain:\\n  - map:\\n      over: $ input.items\\n      parallelism: 2\\n      prompt:\\n        - role: user\\n          content: $ _\\n''')\\n\",\n    \"task = client.tasks.create(agent_id=agent.id, **task_def)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"julep\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"name\": \"python\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "cookbooks/basics/05-RAG-and-Docs.ipynb",
    "content": "{\n \"cells\": [\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"# RAG and Docs\\n\",\n    \"This notebook demonstrates Retrieval Augmented Generation using documents.\\n\"\n   ]\n  },\n  {\n   \"cell_type\": \"code\",\n   \"execution_count\": null,\n   \"metadata\": {},\n   \"outputs\": [],\n   \"source\": [\n    \"session = client.sessions.create(agent=agent.id, recall=True, recall_options={'mode':'vector','limit':5})\\n\",\n    \"# Assume a document has been uploaded to the user\\n\",\n    \"response = client.sessions.chat(session_id=session.id, messages=[{ 'role':'user', 'content':'Tell me about Julep' }])\\n\",\n    \"print(response.choices[0].message.content)\"\n   ]\n  },\n  {\n   \"cell_type\": \"markdown\",\n   \"metadata\": {},\n   \"source\": [\n    \"## Related Concepts\\n\",\n    \"\\n\",\n    \"- [Agents](https://docs.julep.ai/concepts/agents)\\n\",\n    \"- [Tasks](https://docs.julep.ai/concepts/tasks)\\n\",\n    \"- [Tools](https://docs.julep.ai/concepts/tools)\\n\"\n   ]\n  }\n ],\n \"metadata\": {\n  \"kernelspec\": {\n   \"display_name\": \"julep\",\n   \"language\": \"python\",\n   \"name\": \"python3\"\n  },\n  \"language_info\": {\n   \"name\": \"python\",\n   \"version\": \"3.12.3\"\n  }\n },\n \"nbformat\": 4,\n \"nbformat_minor\": 2\n}\n"
  },
  {
    "path": "deploy/responses-build-docker-compose.yaml",
    "content": "name: open-responses\n\ninclude:\n  - ../src/agents-api/docker-compose-api.yml\n  - ../memory-store/docker-compose.yml\n  - ../integrations-service/docker-compose.yml\n  # - ../src/llm-proxy/docker-compose.yml\n"
  },
  {
    "path": "deploy/simple-docker-compose.yaml",
    "content": "name: julep\n\nservices:\n  agents-api:\n    depends_on:\n      worker:\n        condition: service_started\n        required: true\n    environment:\n      AGENTS_API_HOSTNAME: localhost\n      AGENTS_API_KEY: ${AGENTS_API_KEY}\n      AGENTS_API_KEY_HEADER_NAME: Authorization\n      AGENTS_API_PROTOCOL: http\n      AGENTS_API_PUBLIC_PORT: \"80\"\n      AGENTS_API_URL: http://agents-api:8080\n      EMBEDDING_MODEL_ID: openai/text-embedding-3-large\n      INTEGRATION_SERVICE_URL: http://integrations:8000\n      LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}\n      LITELLM_URL: http://litellm:4000\n      SUMMARIZATION_MODEL_NAME: gpt-4o-mini\n      TEMPORAL_ENDPOINT: temporal:7233\n      TEMPORAL_NAMESPACE: default\n      TEMPORAL_TASK_QUEUE: julep-task-queue\n      TEMPORAL_WORKER_URL: temporal:7233\n      TRUNCATE_EMBED_TEXT: \"True\"\n      WORKER_URL: temporal:7233\n    image: julepai/agents-api:${TAG:-dev}\n    networks:\n      default: null\n    ports:\n      - mode: ingress\n        target: 8080\n        published: \"127.0.0.1:8080:8080\"\n        protocol: tcp\n    restart: unless-stopped\n    deploy:\n      resources:\n        limits:\n          memory: 4G\n          cpus: \"2.0\"\n    healthcheck:\n      test: [\"CMD-SHELL\", \"curl -f http://localhost:8080/healthz || exit 1\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n\n  integrations:\n    image: julepai/integrations:${TAG:-dev}\n    environment:\n      OPENAI_API_KEY: ${OPENAI_API_KEY}\n    networks:\n      default: null\n    ports:\n      - mode: ingress\n        target: 8000\n        published: \"8000\"\n        protocol: tcp\n\n  litellm:\n    command:\n      - --config\n      - /app/config.yaml\n      - --port\n      - \"4000\"\n      - --num_workers\n      - \"8\"\n      - --telemetry\n      - \"False\"\n    depends_on:\n      litellm-db:\n        condition: service_started\n        required: true\n      litellm-redis:\n        condition: service_started\n        required: true\n    environment:\n      ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}\n      DATABASE_URL: ${DATABASE_URL}\n      REDIS_URL: redis://default:${REDIS_PASSWORD:-redis}@litellm-redis:6379\n      GROQ_API_KEY: ${GROQ_API_KEY}\n      LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}\n      OPENROUTER_API_KEY: ${OPENROUTER_API_KEY}\n      CEREBRAS_API_KEY: ${CEREBRAS_API_KEY}\n      OPENAI_API_KEY: ${OPENAI_API_KEY}\n      VOYAGE_API_KEY: ${VOYAGE_API_KEY}\n    hostname: litellm\n    image: ghcr.io/berriai/litellm-database:main-v1.46.6\n    networks:\n      default: null\n    restart: unless-stopped\n    volumes:\n      - type: bind\n        source: ../src/llm-proxy/litellm-config.yaml\n        target: /app/config.yaml\n        bind:\n          create_host_path: true\n      - type: bind\n        source: ../src/llm-proxy/.keys\n        target: /app/.keys\n        read_only: true\n        bind:\n          create_host_path: true\n\n  litellm-db:\n    environment:\n      POSTGRES_DB: ${LITELM_POSTGRES_DB:-litellm}\n      POSTGRES_PASSWORD: ${LITELM_POSTGRES_PASSWORD:-postgres}\n      POSTGRES_USER: ${LITELM_POSTGRES_USER:-llmproxy}\n    healthcheck:\n      test:\n        - CMD-SHELL\n        - pg_isready -d ${LITELM_POSTGRES_DB:-litellm} -U ${LITELM_POSTGRES_USER:-llmproxy}\n      timeout: 5s\n      interval: 1s\n      retries: 10\n    image: postgres:16\n    networks:\n      default: null\n    restart: unless-stopped\n    volumes:\n      - type: volume\n        source: litellm-db-data\n        target: /var/lib/postgresql/data\n        volume: {}\n\n  litellm-redis:\n    environment:\n      REDIS_ARGS: --requirepass ${REDIS_PASSWORD:-redis}\n    image: redis/redis-stack-server\n    networks:\n      default: null\n    restart: unless-stopped\n    volumes:\n      - type: volume\n        source: litellm-redis-data\n        target: /data\n        volume: {}\n\n  memory-store:\n    image: timescale/timescaledb-ha:pg16\n    environment:\n      POSTGRES_PASSWORD: ${MEMORY_STORE_PASSWORD:-postgres}\n      OPENAI_API_KEY: ${OPENAI_API_KEY}\n    ports:\n      - \"127.0.0.1:5432:5432\"\n    volumes:\n      - memory_store_data:/home/postgres/pgdata/data\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U postgres || exit 1\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n    restart: unless-stopped\n    deploy:\n      resources:\n        limits:\n          memory: 2G\n\n  vectorizer:\n    image: timescale/pgai-vectorizer-worker:v0.2.1\n    environment:\n      PGAI_VECTORIZER_WORKER_DB_URL: postgres://postgres:${MEMORY_STORE_PASSWORD:-postgres}@memory-store:5432/postgres\n      OPENAI_API_KEY: ${OPENAI_API_KEY}\n    command: [ \"--poll-interval\", \"2s\" ]\n    ports:\n      - \"8501:8501\"\n    volumes:\n      - vectorizer_data:/app/data\n    depends_on:\n      memory-store:\n        condition: service_healthy\n\n  memory-store-backup-cron:\n    image: appropriate/curl\n    command: >\n      sh -c \"while true; do\n      pg_dump -h memory-store -U postgres -F c -b -v -f /backup/memory-store-$(date +\\%Y-\\%m-\\%d-\\%H-\\%M-\\%S).backup;\n      sleep 86400;\n      done\"\n    environment:\n      PGPASSWORD: ${MEMORY_STORE_PASSWORD:-postgres}\n    volumes:\n      - memory_store_backup:/backup\n    depends_on:\n      memory-store:\n        condition: service_healthy\n\n  temporal:\n    depends_on:\n      temporal-db:\n        condition: service_started\n        required: true\n    environment:\n      DB: postgres12\n      DB_HOST: temporal-db\n      DB_PORT: \"5432\"\n      DYNAMIC_CONFIG_FILE_PATH: config/dynamicconfig/temporal-postgres.yaml\n      LOG_LEVEL: info\n      POSTGRES_DB: ${TEMPORAL_POSTGRES_DB:-temporal}\n      POSTGRES_PWD: ${TEMPORAL_POSTGRES_PASSWORD:-temporal}\n      POSTGRES_SEEDS: temporal-db\n      POSTGRES_TLS_CA_FILE: /cert/ca.crt\n      POSTGRES_TLS_DISABLE_HOST_VERIFICATION: \"false\"\n      POSTGRES_TLS_ENABLED: \"false\"\n      POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal}\n      SKIP_DB_CREATE: \"false\"\n      SKIP_SCHEMA_SETUP: \"false\"\n      SQL_CA: /cert/ca.crt\n      SQL_TLS_ENABLED: \"false\"\n      TEMPORAL_ADDRESS: temporal:7233\n      VISIBILITY_DBNAME: temporal_visibility\n    hostname: temporal\n    image: temporalio/auto-setup:1.25\n    networks:\n      default: null\n    volumes:\n      - type: bind\n        source: ../src/scheduler/dynamicconfig\n        target: /etc/temporal/config/dynamicconfig\n        bind:\n          create_host_path: true\n      - type: bind\n        source: ../src/scheduler/cert\n        target: /cert\n        bind:\n          create_host_path: true\n\n  temporal-db:\n    environment:\n      POSTGRES_DB: ${TEMPORAL_POSTGRES_DB:-temporal}\n      POSTGRES_PASSWORD: ${TEMPORAL_POSTGRES_PASSWORD:-temporal}\n      POSTGRES_USER: ${TEMPORAL_POSTGRES_USER:-temporal}\n    healthcheck:\n      test:\n        - CMD-SHELL\n        - pg_isready -d ${TEMPORAL_POSTGRES_DB:-temporal} -U ${TEMPORAL_POSTGRES_USER:-temporal}\n      timeout: 5s\n      interval: 1s\n      retries: 10\n    image: postgres:16\n    networks:\n      default: null\n    restart: unless-stopped\n    volumes:\n      - type: volume\n        source: temporal-db-data\n        target: /var/lib/postgresql/data\n        volume: {}\n\n  temporal-ui:\n    environment:\n      TEMPORAL_ADDRESS: temporal:7233\n      TEMPORAL_CODEC_ENDPOINT: http://localhost/api/temporal\n      TEMPORAL_CSRF_COOKIE_INSECURE: \"true\"\n      TEMPORAL_FEEDBACK_URL: https://github.com/julep-ai/julep\n      TEMPORAL_NOTIFY_ON_NEW_VERSION: \"false\"\n      TEMPORAL_OPEN_API_ENABLED: \"true\"\n      TEMPORAL_UI_ENABLED: \"true\"\n    image: temporalio/ui:latest\n    networks:\n      default: null\n    ports:\n      - mode: ingress\n        target: 8080\n        published: \"9000\"\n        protocol: tcp\n\n  worker:\n    environment:\n      AGENTS_API_HOSTNAME: localhost\n      AGENTS_API_KEY: ${AGENTS_API_KEY}\n      AGENTS_API_KEY_HEADER_NAME: Authorization\n      AGENTS_API_PROTOCOL: http\n      AGENTS_API_PUBLIC_PORT: \"80\"\n      AGENTS_API_URL: http://agents-api:8080\n      PG_DSN: ${PG_DSN:-postgres://postgres:postgres@memory-store:5432/postgres}\n      EMBEDDING_MODEL_ID: openai/text-embedding-3-large\n      INTEGRATION_SERVICE_URL: http://integrations:8000\n      LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}\n      LITELLM_URL: http://litellm:4000\n      SUMMARIZATION_MODEL_NAME: gpt-4o-mini\n      TEMPORAL_ENDPOINT: temporal:7233\n      TEMPORAL_NAMESPACE: default\n      TEMPORAL_TASK_QUEUE: julep-task-queue\n      TEMPORAL_WORKER_URL: temporal:7233\n      TRUNCATE_EMBED_TEXT: \"True\"\n      WORKER_URL: temporal:7233\n    image: julepai/worker:${TAG:-dev}\n    networks:\n      default: null\n\nnetworks:\n  default:\n    name: julep_default\n\nvolumes:\n  litellm-db-data:\n    name: julep_litellm-db-data\n  litellm-redis-data:\n    name: julep_litellm-redis-data\n  temporal-db-data:\n    name: julep_temporal-db-data\n  memory_store_data:\n    name: julep_memory_store_data\n  memory_store_backup:\n    name: julep_memory_store_backup\n  vectorizer_data:\n    name: julep_vectorizer_data\n"
  },
  {
    "path": "deploy/standalone-docker-compose.yaml",
    "content": "# An open-source self-hosted version of the new [OpenAI Responses API](https://community.openai.com/t/introducing-the-responses-api/1140929).\n\nname: open-responses\n\n# (Recommended way to set them is using `.env` file instead of here)\n\nx--shared-environment: &shared-environment\n  # Responses API Key\n  AGENTS_API_KEY: ${RESPONSES_API_KEY:?RESPONSES_API_KEY is required}\n  AGENTS_API_KEY_HEADER_NAME: ${RESPONSES_API_KEY_HEADER_NAME:-Authorization}\n  AGENTS_API_PUBLIC_PORT: ${AGENTS_API_PUBLIC_PORT:-8080}\n\n  # TODO: Make these required after enabling doc search\n  # OpenAI & Unstructured API key (needed for embeddings and file parsing)\n  OPENAI_API_KEY: ${OPENAI_API_KEY}\n  UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY}\n  \n  # Brave Search API Key (For web search tool\n  BRAVE_API_KEY: ${BRAVE_API_KEY}\n\n  # Service settings\n  RESPONSES_API_PORT: ${RESPONSES_API_PORT:-8080}\n  MEMORY_STORE_PASSWORD: ${MEMORY_STORE_PASSWORD:-obviously_not_a_safe_password}\n\n  # Provider API Keys (Enable one or more as needed)\n  ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}\n  GEMINI_API_KEY: ${GEMINI_API_KEY}\n  OPENROUTER_API_KEY: ${OPENROUTER_API_KEY}\n  VOYAGE_API_KEY: ${VOYAGE_API_KEY}\n  GROQ_API_KEY: ${GROQ_API_KEY}\n  CEREBRAS_API_KEY: ${CEREBRAS_API_KEY}\n  CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}\n  CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}\n  LLAMA_API_KEY: ${LLAMA_API_KEY}\n  GITHUB_API_KEY: ${GITHUB_API_KEY}\n  NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}\n  GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}\n\n  # Change **ONLY** if you know what you're doing\n  EMBEDDING_MODEL_ID: ${EMBEDDING_MODEL_ID:-openai/text-embedding-3-large}\n  ENABLE_RESPONSES: \"True\"\n  PG_DSN: postgres://postgres:${MEMORY_STORE_PASSWORD:-obviously_not_a_safe_password}@memory-store:5432/postgres\n  INTEGRATION_SERVICE_URL: ${INTEGRATION_SERVICE_URL:-http://integrations:8000}\n\n\nservices:\n  api:\n    image: julepai/agents-api:${TAG:-responses-latest}\n    environment:\n      <<: *shared-environment\n    ports:\n      - \"${RESPONSES_API_PORT:-8080}:8080\" # map host to container port\n\n  integrations: \n    image: julepai/integrations:${TAG:-responses-latest}\n    environment:\n      <<: *shared-environment\n\n  memory-store:\n    image: timescale/timescaledb-ha:pg17\n    environment:\n      POSTGRES_PASSWORD: ${MEMORY_STORE_PASSWORD:-obviously_not_a_safe_password}\n    volumes:\n      - memory_store_data:/home/postgres/pgdata/data\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U postgres || exit 1\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n\n  vectorizer-worker:\n    image: timescale/pgai-vectorizer-worker:latest\n    environment:\n      - PGAI_VECTORIZER_WORKER_DB_URL=postgres://postgres:${MEMORY_STORE_PASSWORD:-obviously_not_a_safe_password}@memory-store:5432/postgres\n      - OPENAI_API_KEY=${OPENAI_API_KEY}\n    command: [ \"--poll-interval\", \"5s\" ]\n    depends_on:\n      memory-store:\n        condition: service_healthy\n\n  migration:\n    image: julepai/memory-store-migrations:${TAG:-responses-latest}\n    command: [ \"-path\", \"/migrations\", \"-database\", \"postgres://postgres:${MEMORY_STORE_PASSWORD:-obviously_not_a_safe_password}@memory-store:5432/postgres?sslmode=disable\" , \"up\"]\n    restart: \"no\"\n    depends_on:\n      memory-store:\n        condition: service_healthy\n\nvolumes:\n  memory_store_data:\n"
  },
  {
    "path": "docker-bake.hcl",
    "content": "variable \"TAG\" {\n  default = \"...\"\n}\n\nvariable \"GIT_SHA\" {\n  default = \"...\"\n}\n\ngroup \"default\" {\n  targets = [\n    \"agents-api\",\n    \"agents-api-worker\",\n    \"memory-store\",\n    \"integrations\",\n    \"gateway\",\n    \"blob-store\",\n//    \"code-interpreter\",\n  ]\n}\n\ntarget \"agents-api\" {\n  context = \"./src/agents-api\"\n  dockerfile = \"Dockerfile\"\n  tags = [\n    \"julepai/agents-api:${TAG}\",\n    \"julepai/agents-api:git-${GIT_SHA}\"\n  ]\n}\n\ntarget \"agents-api-worker\" {\n  context = \"./src/agents-api\"\n  dockerfile = \"Dockerfile.worker\"\n  tags = [\n    \"julepai/worker:${TAG}\",\n    \"julepai/worker:git-${GIT_SHA}\"\n  ]\n}\n\ntarget \"memory-store\" {\n  context = \"./src/memory-store\"\n  dockerfile = \"Dockerfile\"\n  tags = [\n    \"julepai/memory-store:${TAG}\",\n    \"julepai/memory-store:git-${GIT_SHA}\"\n  ]\n}\n\ntarget \"integrations\" {\n  context = \"./src/integrations-service\"\n  dockerfile = \"Dockerfile\"\n  tags = [\n    \"julepai/integrations:${TAG}\",\n    \"julepai/integrations:git-${GIT_SHA}\"\n  ]\n}\n\ntarget \"gateway\" {\n  context = \"./src/gateway\"\n  dockerfile = \"Dockerfile\"\n  tags = [\n    \"julepai/gateway:${TAG}\",\n    \"julepai/gateway:git-${GIT_SHA}\"\n  ]\n}\n\ntarget \"blob-store\" {\n  context = \"./src/blob-store\"\n  dockerfile = \"Dockerfile\"\n  tags = [\n    \"julepai/blob-store:${TAG}\",\n    \"julepai/blob-store:git-${GIT_SHA}\"\n  ]\n}\n\n// target \"code-interpreter\" {\n//  context = \"./code-interpreter/vendor/cohere-ai/cohere-terrarium\"\n//  dockerfile = \"Dockerfile\"\n//  tags = [\n//    \"julepai/code-interpreter:${TAG}\",\n//    \"julepai/code-interpreter:git-${GIT_SHA}\"\n//  ]\n// }\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "# TODO: Make docker compose setup production ready\n# SCRUM-30\n\nname: julep\n\ninclude:\n  - ./src/memory-store/docker-compose.yml\n  - ./src/gateway/docker-compose.yml\n  - ./src/agents-api/docker-compose.yml\n  - ./src/scheduler/docker-compose.yml\n  - ./src/llm-proxy/docker-compose.yml\n  - ./src/integrations-service/docker-compose.yml\n  - ./src/monitoring/docker-compose.yml\n  - ./src/blob-store/docker-compose-ha.yml\n  - ./src/hasura/docker-compose.yml\n  - ./src/analytics/docker-compose.yml\n  - ./src/feature-flags/docker-compose.yml\n  # - ./code-interpreter/docker-compose.yml\n  # - ./embedding-service/docker-compose.yml\n\n  # TODO: Enable after testing\n  # - ./src/monitoring/docker-compose.yml\n\n### Notes on authentication\n\n# - agents-api runs under two modes:\n#   + single-tenant: `SKIP_CHECK_DEVELOPER_HEADERS=True` and `AGENTS_API_KEY` is required\n#     [user] --{Authorization: Bearer $api-key}--> [agents-api]\n#   + multi-tenant:\n#     `SKIP_CHECK_DEVELOPER_HEADERS=False` and requests must have a valid `X-Developer-Id` header\n#     [user]\n#       --{Authorization: Bearer $JWT}--> [gateway]\n#       --{X-Developer-Id: $developer-id, Authorization: Bearer $internal-api-key}--> [agents-api]\n\n# in single-tenant mode, developer id is assumed to be uuid '00000000-0000-0000-0000-000000000000'\n# and this is the default value of `X-Developer-Id` header in this case\n# the `developers` table in cozo-db will have a row with `id` = '00000000-0000-0000-0000-000000000000' and `name` = 'Default Developer'\n\n# in multi-tenant mode, developer id is the id of the developer in the `developers` table in cozo-db\n# and this id is expected in `X-Developer-Id` header\n# the developer should have a valid JWT token issued by the gateway\n# the JWT token is expected in `Authorization` header\n\n# if the developer id is not found in the `developers` table in cozo-db, the request will be rejected\n\n# in order for agents-api to work correctly in multi-tenant mode, the api assumes that:\n# - the `gateway` is configured to forward `X-Developer-Id` header to agents-api\n\n# and the gateway does that by expecting JWT token in `Authorization` header with the following claims:\n# - `sub` claim is the developer ID\n# - `email` claim is the developer email\n# - `exp` claim is the expiration timestamp\n# - `iat` claim is the issue timestamp\n"
  },
  {
    "path": "documentation/AGENTS.md",
    "content": "# AGENTS.md - documentation\n\nThis directory contains the project documentation, guides, cookbooks, and asset files.\n\nKey Uses\n- Bash commands:\n  - (No build commands; docs are static markdown.)\n- Core directories:\n  - `concepts/`, `guides/`, `cookbooks/`, `tutorials/`, `assets/`.\n- Style guidelines:\n  - Markdown formatted for readability; wrap at 96 chars.\n  - Use Google-style code blocks with language tags.\n- Testing instructions:\n  - Manually verify links and code samples.\n- Repository etiquette:\n  - Update `CHANGELOG.md` and navigation `SUMMARY.md` for doc changes.\n- Developer environment:\n  - Preview docs using any local static site generator if desired.\n- Unexpected behaviors:\n  - Ensure images in `assets/` render correctly in all output formats.\n\n# Julep Documentation Structure\n\n## Core Purpose\n- Julep: Platform for building AI agents with memory, context retention, and complex task execution\n- Main Components: Agents, Tasks, Sessions, Tools, Documents, Users\n- Architecture: Client-side SDK + Server-side execution engine + Integrations system\n\n## Key System Concepts\n\n### Projects\n- Definition: Organizational units for grouping related resources\n- Components: Canonical name, display name, metadata\n- Use: Organize agents, users, and files into logical groups\n- Features: Default project for compatibility, future API key/billing segmentation\n\n### Agents\n- Definition: Configured LLM instances with specific personas and capabilities\n- Components: Instructions, metadata, tools, docs\n- Configuration: Name, model, system template, default settings, project\n- Use: Power sessions and tasks as conversational or autonomous entities\n\n### Tasks\n- Definition: Multi-step workflows (similar to GitHub Actions)\n- Step Types: Prompt, Evaluate, Tool Call, If-else, Foreach, Map-reduce, etc.\n- Execution: Run by agents, maintain state, handle complex logic\n- Input/Output: Schema-validated, supports Python expressions with $ syntax\n\n### Sessions\n- Definition: Stateful conversation contexts between users and agents\n- Use: Real-time interaction, history tracking, continuous dialogue\n- Features: Pausing, resuming, maintaining context across interactions\n\n### Tools\n- Types:\n  - User-defined functions: Custom functions requiring client execution\n  - System tools: Built-in operations for accessing Julep APIs\n  - Integration tools: Pre-built connectors to external services\n  - API Call tools: Direct HTTP requests to external endpoints\n- Integration Categories: Communication, Search, Media processing, Web automation\n\n### Technical Architecture\n- API Layer: RESTful endpoints, authentication, rate limiting\n- Task Engine: Distributed processing, state management, parallel execution\n- Document Store: Vector database for semantic search, document indexing\n- Security: API key auth, data encryption, access controls\n\n## Documentation Navigation\n- Introduction: Basic concepts, installation, quickstart\n- Core Concepts: Detailed explanations of each main component\n- Tutorials: Practical examples and walkthroughs\n- Advanced: Architecture details, agentic patterns, complex workflows\n- Integrations: Descriptions of supported external tools and services\n- SDKs: Python and Node.js client libraries\n\n## Developer Workflows\n- CLI Usage: Project structure, commands, configuration\n- Project Management: Initialization, synchronization, execution\n- Templates: Available starter templates for common use cases\n- Development Flow: Edit locally, sync to server, run and monitor\n\n## Integration Categories\n- Communication & Data: Email, Weather API\n- Media & File Processing: LlamaParse, FFmpeg, Cloudinary, Unstructured\n- Search: Arxiv, Algolia, Brave, Wikipedia\n- Web & Browser: BrowserBase, Spider, Remote Browser\n\n## Development Resources\n- Discord Community: https://discord.gg/p4c7ehs4vD\n- GitHub Repo: https://github.com/julep-ai/julep\n- Documentation Site: https://docs.julep.ai/\n- Support Email: developers@julep.ai\n"
  },
  {
    "path": "documentation/FAQ.mdx",
    "content": "---\ntitle: 'FAQ'\ndescription: 'Frequently Asked Questions about Julep Platform'\nicon: 'question'\n---\n\n# Julep Platform FAQ\n\nThis comprehensive FAQ document covers all aspects of the Julep platform, from architecture to troubleshooting. The information is organized by category for easy navigation.\n\n## Table of Contents\n\n1. [Architecture & System Design](#architecture--system-design)\n2. [Data Model & Storage](#data-model--storage)\n3. [Task Execution & Workflow](#task-execution--workflow)\n4. [Agents API](#agents-api)\n5. [Worker System & Integration](#worker-system--integration)\n6. [Development & Deployment](#development--deployment)\n7. [Performance & Optimization](#performance--optimization)\n8. [Security & Compliance](#security--compliance)\n9. [Advanced Use Cases & Patterns](#advanced-use-cases--patterns)\n10. [Troubleshooting & Common Issues](#troubleshooting--common-issues)\n\n---\n\n## Architecture & System Design\n\n### Q: What is the overall system architecture of Julep, including all core components and their interactions?\n\nJulep is a distributed system built on a microservices architecture designed to orchestrate complex AI workflows. The main components include:\n\n- **Client Applications**: Initiate requests to the Julep system\n- **Gateway**: Entry point for all API requests, handles authentication and load balancing (implemented using Traefik)\n- **Agents API**: Provides REST endpoints for managing agents, tasks, sessions, and documents; initiates workflows in Temporal\n- **Temporal Workflow Engine**: Orchestrates durable workflow execution, retries, and state management\n- **Worker System**: Executes workflows and activities defined in Temporal by polling for tasks\n- **LiteLLM Proxy**: Provides a unified interface for interacting with various LLM providers\n- **Memory Store**: Provides persistent storage using PostgreSQL/TimescaleDB for relational data and vector embeddings\n- **Integration Service**: Enables connections with external tools and APIs\n\n### Q: How does Julep handle distributed task execution and what role does Temporal play in the architecture?\n\nJulep handles distributed task execution primarily through the Temporal Workflow Engine:\n\n- **Workflow Orchestration**: Temporal ensures durable execution of workflows, handling retries and maintaining state across failures\n- **Task Queues**: The Agents API initiates workflows by sending requests to Temporal, which places them on task queues like `julep-task-queue`\n- **Worker Execution**: Workers poll Temporal for tasks and execute activities like LLM calls, tool operations, and data interactions\n- **State Management**: Temporal persists workflow execution state in PostgreSQL, ensuring long-running processes can recover from failures\n\n### Q: What are the key design decisions behind separating agents-api, memory-store, integrations-service, and other components?\n\nThe separation follows microservices principles:\n\n- **Modularity and Independent Scaling**: Each service can be developed, deployed, and scaled independently\n- **Separation of Concerns**: Each component handles specific functionalities:\n  - `agents-api`: Manages agent definitions, tasks, sessions, and orchestrates workflows\n  - `memory-store`: Handles all data persistence including relational data and vector embeddings\n  - `integrations-service`: Provides standardized interface for external tool usage\n  - `llm-proxy`: Centralizes LLM interactions with a unified API\n- **Resilience**: Failures in one service are isolated from others\n- **Technology Flexibility**: Different services can use different technologies if needed\n\n### Q: How does the gateway component route requests between different services?\n\nThe Gateway component uses Traefik and routes requests based on defined rules:\n\n- Requests to `/api/*` are routed to the Agents API service\n- Requests to `/tasks-ui/*` go to the Temporal UI service\n- `/v1/graphql` requests are directed to the Hasura service\n- In multi-tenant setups, it enforces JWT-based authentication and forwards `X-Developer-Id` headers for resource isolation\n\n### Q: What is the role of the blob-store and how does it integrate with S3-compatible storage?\n\nThe blob-store is used for persistent storage of large data, specifically for Temporal workflow data when `USE_BLOB_STORE_FOR_TEMPORAL` is enabled. It integrates with S3-compatible storage through environment variables:\n- `S3_ENDPOINT`, `S3_ACCESS_KEY`, and `S3_SECRET_KEY` for connection\n- `BLOB_STORE_BUCKET` defines the bucket name\n- `BLOB_STORE_CUTOFF_KB` sets the size threshold for blob storage\n\n### Q: How does the llm-proxy (LiteLLM) handle different language model providers?\n\nLiteLLM provides a unified interface to multiple LLM providers:\n- Supports providers like OpenAI, Anthropic, Gemini, Groq, and OpenRouter\n- Configuration defined in `litellm-config.yaml` with model names, parameters, and API keys\n- Handles response patching for consistency (e.g., changing `finish_reason` from \"eos\" to \"stop\")\n- Tracks token usage and costs in PostgreSQL\n- Implements request caching using Redis and supports parallel forwarding\n\n### Q: What are the scalability patterns and limitations of the current architecture?\n\nJulep's architecture supports scalability through:\n- **Agents API**: Horizontal scaling via multiple instances, configurable with `GUNICORN_WORKERS`\n- **Worker**: Multiple workers with concurrency control using `TEMPORAL_MAX_CONCURRENT_ACTIVITIES`\n- **Memory Store**: PostgreSQL connection pooling with `POOL_MAX_SIZE`\n- **LiteLLM**: Request caching and parallel forwarding\n- **Temporal**: Durable workflow execution that scales to handle concurrent tasks\n\n### Q: How does Julep ensure high availability and fault tolerance across services?\n\nHigh availability is achieved through:\n- Temporal's durable execution model with automatic retries\n- Microservices architecture allowing independent service failures\n- PostgreSQL for persistent state storage\n- Worker pools for distributed task execution\n- Connection pooling and retry mechanisms\n\n---\n\n## Data Model & Storage\n\n### Q: What is the complete data model including relationships between Agents, Tasks, Tools, Sessions, Entries, and Executions?\n\nThe core entities and their relationships:\n\n- **Developer**: Manages Agents, Users, and owns Tasks\n- **Agent**: Has Tasks, defines Tools, owns Docs, participates in Sessions\n- **User**: Owns Docs and participates in Sessions\n- **Task**: Contains WorkflowSteps and is executed as Executions\n- **Execution**: Logs Transitions and tracks task execution state\n- **Session**: Contains Entries (conversation history)\n- **Entry**: Individual messages within a Session\n- **Tool**: Capabilities available to Agents\n- **Doc**: Documents with embeddings for knowledge base\n\nAll entities use UUIDs for identification and include `developer_id` for multi-tenancy.\n\n### Q: How does the memory-store handle vector embeddings and similarity search?\n\nThe memory store provides vectorized document storage:\n- Documents have an `embeddings` field stored in `docs_embeddings_store` table\n- Supports three search types:\n  - **Vector Search**: `search_docs_by_embedding` for semantic similarity\n  - **Text Search**: `search_docs_by_text` using PostgreSQL full-text search\n  - **Hybrid Search**: `search_docs_hybrid` combining both approaches\n- Uses cosine similarity for vector comparisons\n- Implements Maximum Marginal Relevance (MMR) for result diversity\n\n### Q: What PostgreSQL and TimescaleDB features are leveraged for time-series data?\n\nWhile PostgreSQL is the primary database, specific TimescaleDB features are not explicitly detailed in the codebase. The system uses:\n- Standard PostgreSQL timestamps (`created_at`, `updated_at`) for temporal data\n- Time-based filtering in queries (e.g., `list_entries` with date ranges)\n- No explicit TimescaleDB-specific features documented\n\n### Q: How are agent instructions and task definitions stored and versioned?\n\n- **Agent Instructions**: Stored as `string` or `array[string]` in the Agent entity\n- **Task Definitions**: Stored as Task entities with fields like `name`, `description`, `input_schema`, `main` (workflow steps), and `tools`\n- **Versioning**: Handled through UUID changes - altering a UUID creates a new entity while preserving the original\n- Timestamps (`created_at`, `updated_at`) provide implicit version tracking\n\n### Q: What is the schema for storing conversation history and context?\n\nConversation history uses two main entities:\n- **Session**: Contains `id`, `user`, `agent`, `situation` (context), `system_template`, and `metadata`\n- **Entry**: Contains `id`, `session_id`, `role` (user/assistant/system), `content` (string or JSON), `source`, and `timestamp`\n- Sessions group entries and maintain context across conversations\n\n### Q: How does Julep handle data partitioning and archiving for long-running agents?\n\nThe codebase does not contain explicit information about data partitioning or archiving strategies. The system uses:\n- Multi-tenancy through `developer_id` filtering\n- Pagination support for large datasets\n- Time-based filtering capabilities\n- No documented automatic archiving policies\n\n### Q: What are the indexing strategies for optimizing query performance?\n\nIndexing strategies include:\n- Trigram indexes for text search (indicated by `trigram_similarity_threshold` parameter)\n- Vector indexes for embedding similarity searches\n- Document chunking and embedding storage for efficient retrieval\n- Use of prepared statements for query optimization\n\n---\n\n## Task Execution & Workflow\n\n### Q: How does the TaskExecutionWorkflow handle complex multi-step operations?\n\nThe TaskExecutionWorkflow orchestrates multi-step operations by:\n- Processing different WorkflowStep types through dedicated handlers\n- Managing state transitions between steps\n- Integrating with Temporal for durability and reliability\n- Using `handle_step` method to process each step type\n- Evaluating expressions within steps using `eval_step_exprs`\n\n### Q: What are all the possible workflow step types and their configurations?\n\n**Basic Steps:**\n- **PromptStep**: Sends prompts to LLMs and handles responses\n- **ToolCallStep**: Executes tool calls (functions, integrations, APIs, system operations)\n- **EvaluateStep**: Evaluates expressions and returns results\n- **SetStep**: Sets values in execution state\n- **GetStep**: Retrieves values from execution state\n- **LogStep**: Logs messages during execution\n- **ReturnStep**: Returns a value and completes workflow\n- **ErrorWorkflowStep**: Raises an error and fails the workflow\n- **SleepStep**: Pauses execution for specified duration\n- **WaitForInputStep**: Pauses for external input\n\n**Control Flow Steps:**\n- **IfElseWorkflowStep**: Conditional branching based on condition\n- **SwitchStep**: Multi-way branching based on case evaluation\n- **ForeachStep**: Iterates over collections\n- **MapReduceStep**: Maps function over items with optional parallelism\n- **YieldStep**: Yields execution to another workflow\n- **ParallelStep**: Executes steps in parallel (not yet implemented)\n\n### Q: How does the state machine handle transitions between different execution states?\n\nThe state machine tracks execution through:\n- **States**: `queued`, `starting`, `running`, `succeeded`, `failed`, `cancelled`\n- **Transitions**: Record state changes with types: `init`, `step`, `finish`, `error`, `cancelled`\n- Each transition includes `output`, `current`, and `next` workflow steps\n- Transitions stored in `execution_transitions` table\n- `create_execution_transition` function records all state changes\n\n### Q: What happens when a task fails midway through execution?\n\nWhen a task fails:\n- Execution status transitions to \"failed\"\n- An \"error\" transition is created with the error message\n- The `error` field of the Execution object is populated\n- The system tracks the failure point and error details\n- Workflow implements retry policies for retryable errors\n- Non-retryable errors cause immediate failure\n\n### Q: How are conditional branches and loops implemented in workflows?\n\n**Conditional Branches:**\n- `IfElseWorkflowStep`: Evaluates condition and executes \"then\" or \"else\" branch\n- `SwitchStep`: Multi-way branching with multiple cases\n\n**Loops:**\n- `ForeachStep`: Iterates over collections processing each item\n- `MapReduceStep`: Maps functions over collections with optional parallel execution\n\nThese are processed by dedicated handlers like `_handle_IfElseWorkflowStep` and `_handle_ForeachStep`.\n\n### Q: What is the retry and error handling strategy for failed steps?\n\n- **Error Classification**: Errors classified as retryable or non-retryable\n- **Retry Policy**: `DEFAULT_RETRY_POLICY` applied to retryable errors\n- **Max Retries**: Workflow fails if max retries exceeded\n- **Error Transitions**: \"error\" transitions record failure states\n- **Last Error Tracking**: `last_error` attribute stores recent errors\n\n### Q: How does Julep handle long-running tasks and prevent timeouts?\n\nJulep uses Temporal's timeout mechanisms:\n- `schedule_to_close_timeout` and `heartbeat_timeout` for activities\n- Activity and workflow heartbeats ensure progress tracking\n- Large data handling via `RemoteObject` pattern to optimize memory\n- Blob storage for data exceeding size thresholds\n\n### Q: What are the mechanisms for task cancellation and cleanup?\n\n- **Workflow Cancellation**: Handled through Temporal's cancellation features\n- **State Management**: Execution can transition to \"cancelled\" state\n- **Persistence**: All transitions persisted for state restoration\n- **Cleanup**: Status updates and transition history provide cleanup context\n\n---\n\n## Agents API\n\n### Q: What are all the endpoints available in the Agents API and their use cases?\n\nThe Agents API provides these endpoints:\n- `/agents`: Create, retrieve, update, delete agent definitions\n- `/tasks`: Define and execute tasks, retrieve workflow definitions\n- `/sessions`: Manage conversational sessions and conversation history\n- `/executions`: Track task executions and monitor status\n- `/docs`: Handle document storage, search, and retrieval with embeddings\n- `/tools`: Define and manage agent tools\n- `/users`: Manage user accounts and authentication\n- `/responses`: OpenAI-compatible interface for LLM responses\n\n### Q: How does session management work and what data is maintained per session?\n\nSession management maintains conversation state:\n- **Session Data**: `id`, `agent_id`, `user_id`, `created_at`, situation context\n- **Entries**: Individual conversation turns with role, content, and timestamps\n- Sessions created with `julep.sessions.create` linking agent and user\n- Messages added via `julep.sessions.chat` with role and content\n- Pagination support for retrieving conversation history\n\n### Q: What are the different types of tools an agent can use and how are they configured?\n\nTool types available:\n- **Web Search Tool**: Performs web searches with domain filtering\n- **Function Tools**: OpenAI-compatible function calling format\n- **System Tools**: Internal Julep resources (e.g., `create_julep_session`, `session_chat`)\n- **Integration Tools**: External services (e.g., BrowserBase, email providers)\n\nConfiguration includes name, type, description, and type-specific parameters.\n\n### Q: How does document storage and retrieval work for agent knowledge bases?\n\nDocuments (`Doc` entities) provide agent knowledge:\n- Stored in PostgreSQL with embeddings in `docs_embeddings_store`\n- Owned by either Agent or User\n- Three search methods: text-based, embedding-based, hybrid\n- Document operations: create, retrieve, list, search\n- Supports metadata filtering and pagination\n\n### Q: What are the authentication and authorization mechanisms for the API?\n\nTwo authentication modes:\n\n**Single-Tenant Mode:**\n- Uses `AGENTS_API_KEY` for authentication\n- Default developer ID assumed\n- `X-Auth-Key` header required\n\n**Multi-Tenant Mode:**\n- JWT-based authentication via Gateway\n- `X-Developer-Id` header for resource isolation\n- Developer-specific data access control\n- JWT must contain sub, email, exp, iat claims\n\n### Q: How are agent instructions processed and validated?\n\n- Instructions stored as string or array of strings\n- Validated by Pydantic models from OpenAPI schemas\n- Included in agent's `default_system_template`\n- Dynamic rendering supports both single and array formats\n- TypeSpec definitions ensure consistent structure\n\n### Q: What are the rate limiting and quota management strategies?\n\nRate limiting and quota management are planned features:\n- `max_free_sessions` and `max_free_executions` environment variables defined\n- Implementation details not yet available\n- Listed as future enhancement in roadmap\n\n### Q: How does the API handle streaming responses for real-time interactions?\n\nStreaming support is currently planned but not implemented:\n- Open Responses API designed for OpenAI compatibility\n- `stream` configuration option available\n- Full streaming implementation pending\n\n---\n\n## Worker System & Integration\n\n### Q: How does the worker system integrate with different LLM providers?\n\nThe Worker integrates with LLMs through LiteLLM Proxy:\n- LiteLLM acts as unified interface to various providers\n- Supports OpenAI, Anthropic, Gemini, Groq, OpenRouter\n- Worker makes LLM calls via LiteLLM Proxy\n- Configuration in `litellm-config.yaml`\n- Handles authentication, routing, and caching\n\n### Q: What are the system activities available and how do they work?\n\nSystem activities include:\n- **LLM Calls**: Through LiteLLM Proxy\n- **Tool Operations**: Via Integration Service\n- **Data Operations**: Reading/writing to Memory Store\n- **PG Query Step**: Direct PostgreSQL queries\n- Activities invoked with `StepContext` and appropriate definitions\n\n### Q: How does Julep handle tool execution and external API calls?\n\nTool execution handled by Integration Service:\n- **Integration Tools**: Connect to external services with provider/method specs\n- **System Tools**: Operate on internal Julep resources\n- `ToolCallStep` defines tool and arguments\n- Worker invokes Integration Service for execution\n- Examples: email sending, browser automation, document search\n\n### Q: What is the sandboxing mechanism for Python expression evaluation?\n\nPython expression sandboxing:\n- `validate_py_expression` function validates expressions\n- Identifies expressions starting with `$`, `_`, or containing `{{`\n- Checks for syntax errors, undefined names, unsafe operations\n- Limited scope with allowed names: `_`, `inputs`, `outputs`, `state`, `steps`\n- Prevents dunder attribute access and unapproved function calls\n\n### Q: How are integration credentials managed and secured?\n\nIntegration credentials managed through:\n- Credentials stored in `setup` parameters of tool definitions\n- API keys provided in task definition YAML\n- Environment variables for service-level credentials\n- No explicit encryption details documented\n\n### Q: What are the patterns for building custom integrations?\n\nCustom integrations defined as Tool entities:\n- Type set to `integration`\n- Specify `provider`, `method`, and `setup` parameters\n- Include provider-specific configuration (API keys, endpoints)\n- Used within Task workflows as ToolCallStep\n- Examples: Browserbase, email providers, Cloudinary\n\n### Q: How does the browser automation integration work?\n\nBrowser automation workflow:\n1. Create Julep session for AI agent\n2. Create browser session using Browserbase\n3. Store session info (browser_session_id, connect_url)\n4. Perform actions via `perform_browser_action` tool\n5. Interactive loop with agent planning and execution\n6. Screenshot capture for visual feedback\n\n### Q: What are the performance optimizations for worker pools?\n\nWorker performance optimizations:\n- `TEMPORAL_MAX_CONCURRENT_ACTIVITIES` controls concurrency\n- `TEMPORAL_MAX_ACTIVITIES_PER_SECOND` limits activity rate\n- `GUNICORN_WORKERS` for integration service scaling\n- Connection pooling and timeout configurations\n- LiteLLM caching and parallel forwarding\n\n---\n\n## Development & Deployment\n\n### Q: What is the recommended development workflow for building with Julep?\n\nDevelopment workflow uses Docker Compose with watch mode:\n- Changes in source directories trigger automatic sync/restart\n- `agents-api`: Watches `./agents_api` and `gunicorn_conf.py`\n- `worker`: Watches `./agents_api` and `Dockerfile.worker`\n- `integrations`: Watches its directory for changes\n- Lock file or Dockerfile changes trigger rebuilds\n\n### Q: How should developers set up their local environment for testing?\n\nLocal setup primarily uses Docker:\n1. Create project directory: `mkdir julep-responses-api`\n2. Download and edit `.env` file\n3. Download Docker Compose file\n4. Run containers: `docker compose up --watch`\n5. Verify with `docker ps`\n\nAlternative CLI installation available via `npx` or `uvx`.\n\n### Q: What are the deployment options and best practices?\n\nDeployment options:\n\n**Single-Tenant Mode:**\n- All users share context\n- `SKIP_CHECK_DEVELOPER_HEADERS=True`\n- Requires `AGENTS_API_KEY`\n\n**Multi-Tenant Mode:**\n- Isolated resources per developer\n- `AGENTS_API_MULTI_TENANT_MODE: true`\n- JWT validation via Gateway\n\n**Best Practices:**\n- Use environment variables for configuration\n- Implement layered security (API keys, JWT tokens)\n- Enable independent component scaling\n- Configure appropriate connection pools\n\n### Q: How does the TypeSpec code generation work and when to use it?\n\nTypeSpec code generation:\n- TypeSpec files define data models (e.g., `models.tsp`)\n- `scripts/generate_openapi_code.sh` generates code\n- Creates Pydantic models and OpenAPI schemas\n- Edit TypeSpec files, not generated code\n- Regenerate after model changes\n\n### Q: What are the testing strategies for agents and workflows?\n\nTesting strategies include:\n- Unit tests for entities (agents, docs, sessions, etc.)\n- Integration tests simulating scenarios\n- Workflow tests using `unittest.mock.patch`\n- Test fixtures for consistent data\n- Ward framework for test organization\n\n### Q: How to debug failed task executions and trace through workflows?\n\nDebugging approach:\n- Check Execution status and error field\n- List transitions to trace execution flow\n- Examine transition outputs and types\n- Use LogStep for workflow logging\n- Error transitions indicate failure points\n\n### Q: What are the monitoring and observability features?\n\nLimited monitoring information available:\n- Execution state and transition logging\n- No explicit monitoring features documented\n- Prometheus and Grafana mentioned in architecture\n- Detailed observability features not specified\n\n### Q: How to handle database migrations in production?\n\nDatabase migration information not explicitly documented:\n- PostgreSQL used as primary database\n- Migration files exist in memory-store\n- Production migration process not detailed\n\n---\n\n## Performance & Optimization\n\n### Q: What are the performance characteristics of different operations?\n\nPerformance characteristics:\n- MapReduceStep supports sequential or parallel execution\n- API response times reduced by 15% (per changelog)\n- Parallel processing improves collection operations\n- Connection pooling optimizes database access\n- Caching planned for future optimization\n\n### Q: How does Julep handle concurrent agent executions?\n\nConcurrent execution handled through:\n- TaskExecutionWorkflow with Temporal orchestration\n- Worker pools for distributed execution\n- State isolation per execution\n- Temporal manages workflow concurrency\n- StepContext provides execution isolation\n\n### Q: What are the caching strategies employed across the system?\n\nCurrent caching:\n- LiteLLM Proxy implements request caching\n- Redis used for LiteLLM cache storage\n- Web Search Tool has result caching\n- Advanced caching mechanisms planned\n\n### Q: How to optimize memory usage for large conversation histories?\n\nMemory optimization strategies:\n- Pagination with `limit` and `offset` parameters\n- Maximum limit of 1000 entries per request\n- `search_window` for time-based filtering (default 4 weeks)\n- Token counting per entry\n- RemoteObject pattern for large data\n\n### Q: What are the bottlenecks in the current architecture?\n\nPotential bottlenecks:\n- Large data retrieval without proper pagination\n- Complex database queries on large tables\n- Multi-tenancy query filtering overhead\n- Temporal workflow state management at scale\n- JSON aggregation in history queries\n\n### Q: How does connection pooling work for database access?\n\nConnection pooling configuration:\n- `connection_lifetime`: 600 seconds\n- `idle_timeout`: 180 seconds\n- `max_connections`: 50\n- `retries`: 1\n- `use_prepared_statements`: true\n- `POOL_MAX_SIZE` configurable (default: CPU count, max 10)\n\n### Q: What are the best practices for writing efficient task definitions?\n\nBest practices:\n- Define clear input schemas\n- Use modular workflow steps\n- Implement proper error handling\n- Avoid infinite loops in recursive patterns\n- Use appropriate tool types\n- Monitor execution status and transitions\n- Leverage parallel processing where applicable\n\n---\n\n## Security & Compliance\n\n### Q: How does Julep handle sensitive data and ensure data privacy?\n\nData privacy ensured through:\n- Multi-tenant architecture with resource isolation\n- Developer-specific data access via `developer_id`\n- `X-Developer-Id` header for request routing\n- Separate data storage per developer\n\n### Q: What are the security measures for multi-tenant deployments?\n\nMulti-tenant security:\n- JWT-based authentication at Gateway\n- JWT validation with required claims (sub, email, exp, iat)\n- `X-Developer-Id` header enforcement\n- Developer ID verification against database\n- Resource isolation by developer\n\n### Q: How are API keys and secrets managed throughout the system?\n\nSecret management:\n- Environment variables for service credentials\n- API keys in tool setup parameters\n- `AGENTS_API_KEY` and `JWT_SHARED_KEY` for auth\n- LLM provider keys as environment variables\n- No explicit encryption details provided\n\n### Q: What audit logging capabilities are available?\n\nAudit logging:\n- Currently limited implementation\n- Listed as planned feature in roadmap\n- Usage tracking for LLM calls (tokens and costs)\n- Comprehensive audit logging pending\n\n### Q: How does Julep ensure secure execution of user-provided code?\n\nSecure code execution through:\n- Task-based workflow system with YAML definitions\n- Controlled tool invocation with explicit permissions\n- Python expression validation\n- Structured workflow steps\n- No arbitrary code execution\n\n### Q: What are the network security considerations for deployment?\n\nNetwork security:\n- API key authentication for single-tenant\n- JWT tokens for multi-tenant\n- Gateway-level authentication\n- HTTPS/TLS support implied\n- Service-to-service communication within network\n\n---\n\n## Advanced Use Cases & Patterns\n\n### Q: What are examples of complex multi-agent workflows?\n\n**Browser Use Assistant:**\n- Session initialization\n- Browser session creation\n- Interactive agent-browser loop\n- Screenshot feedback\n- Goal-oriented task completion\n\n**Email Assistant:**\n- Email input processing\n- Query generation\n- Documentation search\n- Response generation\n- Automated email sending\n\n**Video Processing:**\n- Natural language instructions\n- Cloudinary integration\n- Transformation generation\n- Video processing execution\n\n### Q: How to implement human-in-the-loop patterns?\n\nHuman-in-the-loop not explicitly documented:\n- `WaitForInputStep` provides pause mechanism\n- Session-based interactions allow user input\n- No dedicated approval workflow patterns\n- Can be built using existing primitives\n\n### Q: What are the patterns for building conversational agents with memory?\n\nConversational memory patterns:\n- Session and Entry entities maintain history\n- `previous_response_id` links responses\n- Session metadata and custom templates\n- Persistent conversation state\n- Context maintained across interactions\n\n### Q: How to implement custom tool integrations?\n\nCustom tool implementation:\n1. Define Tool entity with type `integration`\n2. Specify provider, method, setup parameters\n3. Use `@function_tool` decorator for functions\n4. Add to agent's tool list\n5. Invoke via ToolCallStep in workflows\n\n### Q: What are the best practices for handling structured data extraction?\n\nStructured data handling:\n- Tools accept and return structured JSON\n- Evaluate steps process tool outputs\n- Response objects contain structured data\n- Pydantic models ensure data validation\n- TypeSpec defines consistent schemas\n\n### Q: How to build agents that can learn and adapt over time?\n\nLearning/adaptation features limited:\n- Agent instructions can be updated\n- Metadata field allows dynamic information\n- No explicit learning mechanisms\n- Adaptation through instruction updates\n- Memory through conversation history\n\n### Q: What are the patterns for building agents that can collaborate?\n\nAgent collaboration not documented:\n- Current model focuses on single agents\n- No inter-agent communication patterns\n- Sessions link one agent to users\n- Collaboration would require custom implementation\n\n---\n\n## Troubleshooting & Common Issues\n\n### Q: What are the most common errors and how to resolve them?\n\n**Python Expression Errors:**\n- Syntax errors: Fix malformed expressions\n- Undefined names: Use allowed names only\n- Unsafe operations: Avoid dunder attributes\n- Runtime errors: Check for division by zero\n- Unsupported features: Avoid lambdas, walrus operator\n\n**Schema Validation Errors:**\n- Pydantic validation failures\n- Adjust JSON to match expected schema\n\n**Integration Errors:**\n- ApplicationError for missing tools\n- Verify tool definitions and availability\n\n### Q: How to debug issues with task execution?\n\nDebugging steps:\n1. Check Execution status field\n2. Review error messages in Execution object\n3. List and examine transitions\n4. Check transition outputs and types\n5. Use LogStep for additional logging\n6. Trace workflow step progression\n\n### Q: What are the common performance problems and solutions?\n\nPerformance issues and solutions:\n- **Large collections**: Use MapReduceStep parallelism\n- **Rate limits**: Implement SleepStep delays\n- **Memory usage**: Paginate large result sets\n- **Database queries**: Ensure proper indexing\n- **Concurrent execution**: Configure worker pools\n\n### Q: How to handle edge cases in agent conversations?\n\nEdge case handling:\n- `IfElseWorkflowStep` for conditional logic\n- `SwitchStep` for complex branching\n- `WaitForInputStep` for user input\n- `ErrorWorkflowStep` for invalid states\n- Proper error handling in workflows\n\n### Q: What are the known limitations and workarounds?\n\n**Expression Limitations:**\n- No set comprehensions, lambdas, walrus operator\n- Use alternative Python constructs\n\n**Backwards Compatibility:**\n- Old expression formats supported\n- Use `$` prefix for consistency\n\n**ParallelStep Not Implemented:**\n- Use MapReduceStep with parallelism instead\n\n**Streaming Not Available:**\n- Planned feature, not yet implemented\n\n**Rate Limiting:**\n- Basic environment variables defined\n- Full implementation pending\n\n---\n\n## Additional Resources\n\n- [System Architecture Wiki](https://deepwiki.com/wiki/julep-ai/julep#2)\n- [Data Model Wiki](https://deepwiki.com/wiki/julep-ai/julep#2.2)\n- [TaskExecutionWorkflow Wiki](https://deepwiki.com/wiki/julep-ai/julep#3)\n- [Workflow Steps Wiki](https://deepwiki.com/wiki/julep-ai/julep#3.1)\n\nThis FAQ is generated from the Julep platform documentation and codebase analysis. For the most up-to-date information, please refer to the official Julep documentation and repository. "
  },
  {
    "path": "documentation/README.md",
    "content": "# Julep Mintlify Documentation\n\n## Development\n\nInstall the [Mintlify CLI](https://www.npmjs.com/package/mintlify) to preview the documentation changes locally. To install, use the following command\n\n```\nnpm i -g mintlify\n```\n\nRun the following command at the root of your documentation (where mint.json is)\n\n```\nmintlify dev\n```\n\n### Troubleshooting\n\n- Mintlify dev isn't running - Run `mintlify install` it'll re-install dependencies.\n- Page loads as a 404 - Make sure you are running in a folder with `mint.json`\n"
  },
  {
    "path": "documentation/advanced/agentic-patterns.mdx",
    "content": "---\ntitle: 'Agentic Patterns'\ndescription: 'Learn about common patterns and best practices for building Julep agents'\nicon: 'sitemap'\n---\n\n## Overview\n\nThis guide covers common patterns and best practices for building effective Julep agents, inspired by a blog written by Anthropic on [Building effective agents](https://www.anthropic.com/research/building-effective-agents).\n\n## Core Workflow Patterns\n\n### 1. Prompt Chaining\n\nBreak tasks into sequential steps, where each step’s output feeds the next. Can be used for:\n- Content generation and subsequent checks\n- Translation/localization in multiple stages\n- Ensuring quality between discrete transformations\n\n![Prompt Chaining Workflow](../assets/agentic-patterns/prompt-chaining-workflow.png \"Prompt Chaining Workflow\")\n\n**Example implementation:**\n```yaml\nmain:\n# Step 1: Generate initial content\n- prompt:\n   role: system\n   content: >-\n      $ f'''Generate marketing copy for product X based on the following:\n      target_audience: {_.audience}\n      product_features: {_.features}\n      keywords: {_.seo_keywords}'''\n   unwrap: true\n\n# Step 2: Quality check gate\n- evaluate:\n   quality_check: $ _.content\n\n# Step 3: Translation\n- prompt:\n   role: system\n   content: Translate the approved content to Spanish\n   unwrap: true\n```\n\n### 2. Routing Pattern\n\nAct as a “traffic controller” by detecting request types and sending them to the correct handler. Ideal when inputs are diverse or require specialized expertise.\n\nSteps generally include:\n1. Classification of incoming data\n2. Routing to handler modules\n3. Specialized processing\n4. (Optional) Aggregation of results\n\n![Routing Workflow](../assets/agentic-patterns/routing-workflow.png \"Routing Workflow\")\n\n**Example implementation:**\n```yaml [expandable]\nmain:\n# Classification step\n- prompt:\n   role: system\n   content: Classify the input query type\n   unwrap: true\n\n# Route based on classification\n- switch:\n   - case: $ _.classification == \"technical_support\"\n      then:\n         - tool: handle_technical\n         arguments:\n            ...\n   - case: $ _.classification == \"billing\"\n      then:\n         - tool: handle_billing\n         arguments:\n            ...\n   - case: $ _.classification == \"general\"\n      then:\n         - tool: handle_general\n         arguments:\n            ...\n```\n\n### 3. Parallelization Pattern\n\nExecute subtasks concurrently by either dividing the workload (sectioning) or collecting multiple perspectives (voting).\n\nKeys to consider:\n• Parallel processes for performance or redundancy\n• Syncing results and handling errors\n• Aggregating diverse outputs\n\n![Parallelization Workflow](../assets/agentic-patterns/parallelization-workflow.png \"Parallelization Workflow\")\n\n**Example implementations:**\n\n1. Sectioning:\n```yaml [expandable]\ntools:\n- name: aggregate_results\n  type: ... # depends on the specific needs\n\n# Custom workflow to run a subtask\nrun_subtask:\n- ....\n\n# Main workflow\nmain:\n- prompt:\n   role: system\n   content: >\n      $ f'''Break this task into multiple subtasks.\n      Here is the task: {_.task}'''\n   unwrap: true\n\n- over: $ _.subtasks\n   do:\n      - workflow: run_subtask\n      arguments:\n         ...\n- tool: aggregate_results\n  arguments:\n    results: $ _\n```\n\n2. Voting:\n```yaml [expandable]\ntools:\n- name: perform_voting\n  description: Perform voting on the results of running the task instances, and return the majority best result.\n  type: ... # depends on the specific needs\n\n# Custom workflow to run a subtask\nrun_subtask:\n- ....\n\n# Main workflow\nmain:\n- over: $ _.main_tasks\n   do:\n      - workflow: run_subtask # Run the same task multiple times (given that the `run_subtask` workflow is non-deterministic)\n      arguments:\n         ...\n- tool: perform_voting\n  arguments:\n    results: $ _\n\n- evaluate:\n   final_result: $ _\n```\n\n### 4. Orchestrator-Workers Pattern\n\nUse a central “orchestrator” that delegates subtasks to multiple “worker” agents and integrates their outputs. Best for:\n- Large or dynamic multi-step tasks\n- Coordinating various specialized capabilities\n- Flexible task distribution\n\n![Orchestrator-Workers Workflow](../assets/agentic-patterns/orchestrator-workers-workflow.png \"Orchestrator-Workers Workflow\")\n\n**Example implementation:**\n```yaml\nmain:\n# Orchestrator planning\n- prompt:\n   role: system\n   content: $ f'''Break down the task into subtasks. Here is the task: {_.task}'''\n   unwrap: true\n# Worker delegation\n- foreach:\n   in: $ _.subtasks\n   do:\n      tool: assign_worker\n      arguments:\n         task: $ _\n```\n\n### 5. Evaluator-Optimizer Pattern\n\nCreate iterative feedback loops to refine outputs until they meet preset criteria. Suitable for:\n• Content refinement\n• Code reviews\n• Detailed document enhancements\n\nGeneral flow:\n1. Generate an initial result\n2. Evaluate against criteria\n3. Provide improvement feedback\n4. Optimize/retry until goals are met\n\n![Evaluator-Optimizer Workflow](../assets/agentic-patterns/evaluator-optimizer-workflow.png \"Evaluator-Optimizer Workflow\")\n\n**Example implementation:**\n```yaml [expandable]\ntools:\n- name: score_content\n  description: Score the content based on the criteria. Returns a json object with a score between 0 and 1, and a feedback string.\n  type: function\n  function:\n    parameters:\n      type: object\n      properties:\n        content:\n          type: string\n          description: Content to score\n\n# Subworkflow to evaluate content\nevaluate_content:\n- tool: score_content\n  arguments:\n    content: $ _.content\n- if: $ _.score < 0.5 # If the content does not meet the criteria, improve it\n  then:\n    - workflow: improve_content\n      arguments:\n        content: $ steps[0].input.content # steps[0].input is the main input of this workflow\n        feedback: $ _.feedback # _ is the output of the score_content tool call\n  else:\n    evaluate:\n      final_content: $ steps[0].input.content\n\n# Subworkflow to improve content\nimprove_content:\n- prompt:\n    role: system\n    content: $ f'''Improve the content based on the feedback. Here is the feedback: {_.feedback}'''\n  unwrap: true\n- workflow: evaluate_content\n  arguments:\n    content: $ _\n\n\nmain:\n# Initial generation\n- prompt:\n   role: system\n   content: $ f'''Generate initial content. Here is the task: {_.task}'''\n   unwrap: true\n\n# Evaluation loop\n- loop:\n   while: $ not _.meets_criteria\n   do:\n      - tool: evaluate_content\n      - tool: improve_content\n```\n\n**Explanation:**\n\n1. The `evaluate_content` subworkflow:\n   - Takes content as input and scores it using a scoring tool\n   - If the score is below 0.5, it triggers the improvement workflow\n   - Uses a special variable (`_`) to manage content and feedback between workflows\n   - Returns the final content once quality criteria are met\n\n2. The `improve_content` subworkflow:\n   - Receives content and feedback from the evaluation\n   - Uses an LLM to improve the content based on specific feedback\n   - Automatically triggers another evaluation cycle by calling evaluate_content\n\nThe main workflow ties these together by:\n- Generating initial content from a task description\n- Running a continuous loop that alternates between evaluation and improvement\n- Only completing when content meets the defined quality criteria\n\nThis creates a powerful feedback loop where content is repeatedly refined based on specific feedback until it reaches the desired quality level. The pattern is particularly useful for tasks requiring high accuracy or quality, such as content generation, code review, or document analysis.\n\n## Best Practices\n\n<CardGroup cols={3}>\n    <Card title=\"Start Simple\" icon=\"minimize\">\n        <ul>\n            <li>**1. Minimal Steps**: Use minimal steps and only add complexity when it clearly improves results.</li>\n        </ul>\n    </Card>\n    <Card title=\"Thoughtful Tool Design\" icon=\"wrench\">\n        <ul>\n            <li>**1. Documentation**: Provide clear documentation, examples, and usage guidelines for each tool.</li>\n        </ul>\n    </Card>\n    <Card title=\"Error Handling\" icon=\"shield-check\">\n        <ul>\n            <li>**1. Guardrails**: Include feedback loops, define stopping conditions, and surface potential issues.</li>\n        </ul>\n    </Card>\n    <Card title=\"Testing\" icon=\"vial\">\n        <ul>\n            <li>**1. Validation**: Thoroughly test in controlled environments and measure against success criteria.</li>\n        </ul>\n    </Card>\n    <Card title=\"Human Oversight\" icon=\"user-check\">\n        <ul>\n            <li>**1. Checkpoints**: Establish checkpoints for approval, ensure transparency, and maintain easy-to-audit workflows.</li>\n        </ul>\n    </Card>\n</CardGroup>\n\n## Conclusion\n\nThese patterns represent proven approaches from production implementations. Choose and adapt them based on your specific use case requirements and complexity needs.\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/advanced/architecture-deep-dive.mdx",
    "content": "---\ntitle: 'Architecture Deep Dive'\ndescription: 'Understand the core architecture and components of Julep'\nicon: 'brain'\n---\n\n## Overview\n\nThink of Julep as a platform that combines both client-side and server-side components to help you build advanced AI agents. Here's a mental model to help you understand it:\n\n1. Your Application Code\n   - Use the Julep SDK in your application to define agents, tasks, and workflows\n   - SDK provides functions and classes for easy setup and management of components\n\n2. Julep Backend Service\n   - SDK communicates with Julep backend over the network\n   - Backend handles task execution, session state, document storage, and workflow orchestration\n\n3. Integration with Tools and APIs\n   - Integrate external tools and services within your workflows\n   - Backend facilitates integrations for web searches, database access, third-party API calls, and more\n\nTo help you visualize this, here's a diagram:\n<Frame caption=\"Julep Architecture Overview\">\n  <img\n    src=\"/images/julep-architecture.svg\"\n    width={1000}\n    height={1000}\n  />\n</Frame>\n<Frame caption=\"System Architecture\">\n  <img\n    src=\"/images/architecture-diagram.svg\"\n    width={1000}\n    height={600}\n  />\n</Frame>\n\n\n## Core Components\n\n<CardGroup cols={2}>\n  <Card title=\"Agent\" icon=\"robot\">\n    <p>The main orchestrator of your application, backed by foundation models like GPT4 or Claude.</p>\n  </Card>\n\n  <Card title=\"User\" icon=\"user\">\n    <p>Users can be associated with sessions and are used to scope memories formed by agents.</p>\n  </Card>\n\n  <Card title=\"Session\" icon=\"messages\">\n    <p>The main workhorse for Julep apps.</p>\n  </Card>\n\n  <Card title=\"Tool\" icon=\"wrench\">\n    <p>Programmatic interfaces that foundation models can \"call\" with inputs.</p>\n  </Card>\n\n  <Card title=\"Doc\" icon=\"file-lines\">\n    <p>Collections of text snippets indexed into a vector database.</p>\n  </Card>\n\n  <Card title=\"Task & Execution\" icon=\"list-check\">\n    <p>Github Actions-style workflows for complex operations.</p>\n  </Card>\n\n  <Card title=\"Secret\" icon=\"key\">\n    <p>Encrypted key-value pairs for securely storing sensitive information like API keys and credentials.</p>\n  </Card>\n</CardGroup>\n\n## Infrastructure Components\n\n<CardGroup cols={4}>\n  <Card title=\"Document Store\" icon=\"database\">\n    <p>The document store provides a vector database for semantic search along with a document management system. It supports various file types and handles automatic indexing and retrieval of documents.</p>\n  </Card>\n\n  <Card title=\"Task Execution Engine\" icon=\"gears\">\n    <p>The task execution engine handles distributed task processing, state management, error handling with retries, and supports parallel execution of tasks.</p>\n  </Card>\n\n  <Card title=\"Secrets Store\" icon=\"key\">\n    <p>The secrets store provides encrypted storage for sensitive information like API keys, credentials, and tokens. It uses AES-256 encryption and developer-scoped access controls to securely manage confidential data.</p>\n  </Card>\n\n  <Card title=\"API Layer\" icon=\"code\">\n    <p>The API layer provides RESTful API endpoints, SDK support, authentication and authorization capabilities, and handles rate limiting and quotas.</p>\n  </Card>\n</CardGroup>\n\n## Data Flow\n\n<Frame caption=\"Data Flow Overview\">\n  <img\n    src=\"/images/flow.svg\"\n    width={1000}\n    height={1000}\n  />\n</Frame>\n\n<Info>\n  <p>The data flow in Julep is divided into three main components, each handling specific aspects of request processing and response generation.</p>\n</Info>\n\n<Steps>\n  <Step title=\"Client Interaction\" icon=\"arrow-right-to-bracket\">\n    - SDK or API calls initiate requests\n    - Authentication and validation\n    - Request routing\n  </Step>\n\n  <Step title=\"Task Processing\" icon=\"gears\">\n    - Task decomposition\n    - Step execution\n    - State management\n    - Tool integration\n  </Step>\n\n  <Step title=\"Response Handling\" icon=\"arrow-right-from-bracket\">\n    \n    - Result aggregation\n    - Error handling\n    - Client notification\n    - State persistence\n  </Step>\n</Steps>\n\n## Security\n\n<CardGroup cols={3}>\n  <Card title=\"Authentication\" icon=\"lock\">\n    <ol>\n      <li>**1.** API key-based access</li>\n      <li>**2.** Role-based permissions</li>\n      <li>**3.** Session management</li>\n      <li>**4.** Token validation</li>\n    </ol>\n  </Card>\n\n  <Card title=\"Data Protection\" icon=\"shield\">\n    <ol>\n      <li>**1.** Encryption at rest</li>\n      <li>**2.** Secure communication</li>\n      <li>**3.** Data isolation</li>\n      <li>**4.** Access controls</li>\n      <li>**5.** Encrypted secrets</li>\n    </ol>\n  </Card>\n\n  <Card title=\"Monitoring\" icon=\"chart-line\">\n    <ol>\n      <li>**1.** Audit logging</li>\n      <li>**2.** Performance metrics</li>\n      <li>**3.** Error tracking</li>\n      <li>**4.** Usage analytics</li>\n    </ol>\n  </Card>\n</CardGroup>\n\n## Conclusion\n\nThe modular design enables you to customize and extend functionality as needed, while the security-first approach ensures your data and operations remain protected. Whether you're building a simple chatbot or a complex AI workflow, this architecture provides the foundation you need.\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)\n"
  },
  {
    "path": "documentation/advanced/chat.mdx",
    "content": "---\ntitle: 'Chat Features in Julep'\ndescription: 'Learn about the robust chat system and its various features for dynamic interaction with agents'\nicon: 'message-dots'\n---\n\n## Overview\n\nJulep provides a robust chat system with various features for dynamic interaction with agents. Here's an overview of the key components and functionalities.\n\n## Features\n\n<Steps>\n  <Step title=\"Tool Integration\">\n    The chat API allows for the use of tools, enabling the agent to perform actions or retrieve information during the conversation.\n  </Step>\n  <Step title=\"Multi-agent Sessions\">\n    You can specify different agents within the same session using the `agent` parameter in the chat settings.\n  </Step>\n  <Step title=\"Response Formatting\">\n    Control the output format, including options for JSON responses with specific schemas.\n  </Step>\n  <Step title=\"Memory and Recall\">\n    Configure how the session accesses and stores conversation history and memories.\n  </Step>\n  <Step title=\"Document References\">\n    The API returns information about documents referenced during the interaction, useful for providing citations or sources.\n  </Step>\n</Steps>\n\n<Info>\n  <h4>Prerequisites for Using Chat API</h4>\n  \n  <ul>\n    <li><strong>Session Creation</strong>: Before using the chat API, you must create a session first. Learn more about the session object on the <a href=\"/concepts/sessions\">Session</a> page.</li>\n    <li><strong>Document (RAG) Integration</strong>: To use Document (RAG) capabilities with the chat API, create a session with the <code>recall_options</code> parameter configured with appropriate search parameters. For details on configuring <code>recall_options</code>, see the <a href=\"/concepts/sessions#recall-options-rag-search\">Session: Recall Options</a> documentation.</li>\n  </ul>\n</Info>\n\n## Input Structure\n\n- **Messages**: An array of input messages representing the conversation so far.\n- **Tools**: (Advanced) Additional tools provided for this specific interaction.\n- **Tool Choice**: Specifies which tool the agent should use.\n- **Memory Access**: Controls how the session accesses history and memories.(`recall` parameter)\n- **Additional Parameters**: Various parameters to control the behavior of the chat. You can find more details in the [Additional Parameters](#additional-parameters) section.\n\nHere's an example of how a typical message object might be structured in a chat interaction:\n\n<Accordion title=\"Message Object Structure\">\n  ```python Python\n    \"\"\"\n    Attributes for the Message object:\n        role (Literal[\"user\", \"assistant\", \"system\", \"tool\"]): The role of the message sender.\n        tool_call_id (str | None): Optional identifier for a tool call associated with this message.\n        content (Annotated[str | list[str] | list[Content | ContentModel7 | ContentModel] | None, Field(...)]): The main content of the message, which can be a string, a list of strings, or a list of content models.\n        name (str | None): Optional name associated with the message.\n        tool_calls (list[ChosenFunctionCall | ChosenComputer20241022 | ChosenTextEditor20241022 | ChosenBash20241022] | None): List of tool calls generated during the message creation, if any.\n    \"\"\"\n    # Example of a simple message structure\n    messages = [{\"role\": \"user\", \"content\": \"Your query here\"}]\n  ```\n  <p>This object represents a message in the chat system, detailing the structure and types of data it can hold.</p>\n</Accordion>\n\n## Additional Parameters\n\n| Parameter           | Type    | Description                                      | Default  |\n|---------------------|---------|--------------------------------------------------|----------|\n| `stream`            | `bool`  | Indicates if the server should stream the response as it's generated. | `False` |\n| `stop`              | `list[str]` | Up to 4 sequences where the API will stop generating further tokens. | `[]` |\n| `seed`              | `int`   | If specified, the system will make a best effort to sample deterministically for that particular seed value. | `None` |\n| `max_tokens`        | `int`   | The maximum number of tokens to generate in the chat completion. | `None` |\n| `logit_bias`        | `dict[str, float]`  | Modify the likelihood of specified tokens appearing in the completion. | `None` |\n| `response_format`   | `str`   | Response format (set to `json_object` to restrict output to JSON). | `None` |\n| `agent`             | `UUID`  | Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions) | `None` |\n| `repetition_penalty`| `float` | Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. | `None` |\n| `length_penalty`    | `float` | Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. | `None` |\n| `min_p`             | `float` | Minimum probability compared to leading token to be considered. | `None` |\n| `frequency_penalty` | `float` | Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. | `None` |\n| `presence_penalty`  | `float` | Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. | `None` |\n| `temperature`       | `float` | What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. | `None` |\n| `top_p`             | `float` | An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered. | `1.0` |\n| `recall`            | `bool` | Whether to use the document (RAG) search or not | `True` |\n| `save`              | `bool` | Whether this interaction should be stored in the session history or not | `True` |\n| `remember`          | `bool` | DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release) | `False` |\n| `model`             | `str` | The model to use for the chat completion. | `None` |\n| `metadata`          | `dict[str, Any]` | Custom metadata that can be passed to the system template for dynamic behavior. See [System Templates](/advanced/system-templates) for details. | `None` |\n| `auto_run_tools`    | `bool` | Whether to automatically execute tools and send the results back to the model (requires tools on the agent) | `False` |\n| `recall_tools`      | `bool` | Whether to include tool requests and responses when recalling messages from history | `True` |\n\n## Usage\n\nHere's an example of how to use the chat API in Julep using the SDKs:\n\n<Info>\n  To use the Chat endpint, you always have to create a session first.\n</Info>\n\n<CodeGroup>\n    ```python Python [expandable]\n    # Create a session with custom recall options\n    client.sessions.create(\n        agent=agent.id,\n        user=user.id,\n        recall=True,\n        recall_options={\n            \"mode\": \"hybrid\", # or \"vector\", \"text\"\n            \"num_search_messages\": 4, # number of messages to search for documents\n            \"max_query_length\": 1000, # maximum query length\n            \"alpha\": 0.7, # weight to apply to BM25 vs Vector search results (ranges from 0 to 1)\n            \"confidence\": 0.6, # confidence cutoff level (ranges from -1 to 1)\n            \"limit\": 10, # limit of documents to return\n            \"lang\": \"en-US\", # language to be used for text-only search\n            \"metadata_filter\": {}, # metadata filter to apply to the search\n            \"mmr_strength\": 0, # MMR Strength (ranges from 0 to 1)\n        }\n    )\n\n    # Chat in the session\n    response = client.sessions.chat(\n        session_id=session.id,\n        messages=[\n            {\n                \"role\": \"user\",\n                \"content\": \"Tell me about Julep\"\n            }\n        ],\n        recall=True\n    )\n    print(\"Agent's response:\", response.choices[0].message.content)\n    print(\"Searched Documents:\", response.docs)\n    \n    # Chat with metadata for dynamic system prompts\n    response_with_metadata = client.sessions.chat(\n        session_id=session.id,\n        messages=[\n            {\n                \"role\": \"user\",\n                \"content\": \"Help me with Python\"\n            }\n        ],\n        metadata={\n            \"language\": \"Spanish\",\n            \"expertise_level\": \"beginner\",\n            \"custom_instructions\": \"Use simple examples\"\n        }\n    )\n    # The metadata will be available in the system template as {{metadata.language}}, etc.\n    \n    # Chat with structured JSON response\n    response_json = client.sessions.chat(\n        session_id=session.id,\n        messages=[\n            {\n                \"role\": \"user\",\n                \"content\": \"Analyze the sentiment of: 'I love using Julep, it makes AI development so much easier!'\"\n            }\n        ],\n        response_format={\"type\": \"json_object\"},\n        # When using response_format, instruct the model to return JSON\n        settings={\n            \"temperature\": 0.3\n        }\n    )\n    # Response will be valid JSON that can be parsed\n    import json\n    sentiment_data = json.loads(response_json.choices[0].message.content)\n    ```\n\n    ```javascript Node.js [expandable]\n    client.sessions.create({\n        agent: agent.id,\n        user: user.id,\n        recall: true,\n        recall_options: {\n            mode: \"hybrid\", // or \"vector\", \"text\"\n            num_search_messages: 4, // number of messages to search for documents\n            max_query_length: 1000, // maximum query length\n            alpha: 0.7, // weight to apply to BM25 vs Vector search results (ranges from 0 to 1)\n            confidence: 0.6, // confidence cutoff level (ranges from -1 to 1)\n            limit: 10, // limit of documents to return\n            lang: \"en-US\", // language to be used for text-only search\n            metadata_filter: {}, // metadata filter to apply to the search\n            mmr_strength: 0, // MMR Strength (ranges from 0 to 1)\n        }\n    });\n\n    // Chat in the session\n    const response = await client.sessions.chat({\n        session_id: session.id,\n        messages: [\n            {\n                role: \"user\",\n                content: \"Tell me about Julep\"\n            }\n        ],\n        recall: true\n    });\n    \n    // Chat with metadata for dynamic system prompts\n    const responseWithMetadata = await client.sessions.chat({\n        session_id: session.id,\n        messages: [\n            {\n                role: \"user\",\n                content: \"Help me with Python\"\n            }\n        ],\n        metadata: {\n            language: \"Spanish\",\n            expertise_level: \"beginner\",\n            custom_instructions: \"Use simple examples\"\n        }\n    });\n    // The metadata will be available in the system template as {{metadata.language}}, etc.\n    \n    // Chat with structured JSON response\n    const responseJson = await client.sessions.chat({\n        session_id: session.id,\n        messages: [\n            {\n                role: \"user\",\n                content: \"Analyze the sentiment of: 'I love using Julep, it makes AI development so much easier!'\"\n            }\n        ],\n        response_format: { type: \"json_object\" },\n        // When using response_format, instruct the model to return JSON\n        settings: {\n            temperature: 0.3\n        }\n    });\n    // Response will be valid JSON that can be parsed\n    const sentimentData = JSON.parse(responseJson.choices[0].message.content);\n    ```\n</CodeGroup>\n\nTo learn more about the Session object, check out the [Session](/concepts/sessions) page.\n\n<Tip>\n    Check out the [API reference](/api-reference/sessions/chat) or SDK reference ([Python](/sdks/python/reference#sessions) or [JavaScript](/sdks/nodejs/reference#sessions)) for more details on different operations you can perform on sessions.\n</Tip>\n\n## Response\n\n<Tabs>\n  <Tab title=\"Complete Response\">\n    - **Content-Type**: `application/json`\n    - **Body**: A `MessageChatResponse` object containing the full generated message(s)\n  </Tab>\n  <Tab title=\"Streamed Response\">\n    - **Content-Type**: `text/event-stream`\n    - **Body**: A stream of `ChatOutputChunk` objects sent as Server-Sent Events (SSE)\n    \n    To enable streaming, set `stream: true` in your chat request:\n    \n    <CodeGroup>\n    ```python Python\n    from julep import AsyncClient\n    \n    # Streaming requires async client\n    async_client = AsyncClient(api_key=\"your-api-key\")\n    \n    response = await async_client.sessions.chat(\n        session_id=session.id,\n        messages=[{\"role\": \"user\", \"content\": \"Tell me a story\"}],\n        stream=True\n    )\n    \n    async for chunk in response:\n        if chunk.choices[0].delta.content:\n            print(chunk.choices[0].delta.content, end=\"\")\n    ```\n    \n    ```javascript Node.js\n    const response = await client.sessions.chat({\n        session_id: session.id,\n        messages: [{ role: \"user\", content: \"Tell me a story\" }],\n        stream: true\n    });\n    \n    for await (const chunk of response) {\n        process.stdout.write(chunk.choices[0].delta.content);\n    }\n    ```\n    </CodeGroup>\n    \n    <Note>\n      Streaming is not available when `auto_run_tools=true`. The system will return an error if both options are enabled.\n    </Note>\n  </Tab>\n</Tabs>\n\nBoth types of responses include the following fields:\n\n- `id`: The unique identifier for the chat response\n- `choices`: An object of generated message completions containing:\n    - `role`: The role of the message (e.g. \"assistant\", \"user\", etc.)\n    - `id`: Unique identifier for the message\n    - `content`: list of actual message content\n    - `created_at`: Timestamp when the message was created\n    - `name`: Optional name associated with the message\n    - `tool_call_id`: Optional ID referencing a tool call\n    - `tool_calls`: Optional list of tool calls made during message generation\n  - `created_at`: When this resource was created as UTC date-time\n  - `docs`: List of document references used for this request, intended for citation purposes\n  - `jobs`: List of UUIDs for background jobs that may have been initiated as a result of this interaction\n  - `usage`: Statistics on token usage for the completion request\n\n\n## Automatic Tool Calling\n\nJulep supports automatic tool execution during chat interactions. This feature allows tools to be executed seamlessly without manual intervention, making conversations more fluid and responsive.\n\n### How It Works\n\n1. **When `auto_run_tools=true`**: \n   - The model identifies when a tool should be used based on the conversation\n   - The tool is automatically executed by Julep's backend\n   - Results are fed back to the model to continue the conversation\n   - The entire process happens in a single API call\n\n2. **When `auto_run_tools=false` (default)**:\n   - The model returns tool call requests in the response\n   - Your application must execute the tools manually\n   - Results need to be sent back in a follow-up message\n\n### Example with Automatic Tool Execution\n\n<CodeGroup>\n    ```python Python\n    # Agent with a weather tool\n    agent = client.agents.create(\n        name=\"Weather Assistant\",\n        tools=[\n            {\n                \"name\": \"get_weather\",\n                \"type\": \"integration\",\n                \"integration\": {\"provider\": \"weather\"}\n            }\n        ]\n    )\n    \n    # Chat with automatic tool execution\n    response = client.sessions.chat(\n        session_id=session.id,\n        messages=[\n            {\n                \"role\": \"user\",\n                \"content\": \"What's the weather like in Tokyo and Paris?\"\n            }\n        ],\n        auto_run_tools=True  # Tools execute automatically\n    )\n    \n    # The response already includes the weather data\n    print(response.choices[0].message.content)\n    # Output: \"In Tokyo, it's currently 22°C with clear skies. \n    #          In Paris, it's 15°C with light rain.\"\n    ```\n    \n    ```javascript Node.js\n    // Agent with a weather tool\n    const agent = await client.agents.create({\n        name: \"Weather Assistant\",\n        tools: [\n            {\n                name: \"get_weather\",\n                type: \"integration\",\n                integration: {provider: \"weather\"}\n            }\n        ]\n    });\n    \n    // Chat with automatic tool execution\n    const response = await client.sessions.chat({\n        session_id: session.id,\n        messages: [\n            {\n                role: \"user\",\n                content: \"What's the weather like in Tokyo and Paris?\"\n            }\n        ],\n        auto_run_tools: true  // Tools execute automatically\n    });\n    \n    // The response already includes the weather data\n    console.log(response.choices[0].message.content);\n    // Output: \"In Tokyo, it's currently 22°C with clear skies. \n    //          In Paris, it's 15°C with light rain.\"\n    ```\n</CodeGroup>\n\n### Tool History Management\n\nThe `recall_tools` parameter controls whether tool calls and their results are included when recalling conversation history:\n\n- **`recall_tools=true` (default)**: Tool interactions are preserved in the conversation history\n- **`recall_tools=false`**: Tool calls and results are excluded from recalled messages\n\nThis is useful when you want to maintain a cleaner conversation history without the technical details of tool executions.\n\n## Finish Reasons\n\n<CardGroup cols={2}>\n  <Card title=\"stop\" icon=\"stop\">\n    Natural stop point or provided stop sequence reached\n  </Card>\n  <Card title=\"length\" icon=\"ruler\">\n    Maximum number of tokens specified in the request was reached\n  </Card>\n  <Card title=\"content_filter\" icon=\"filter\">\n    Content was omitted due to a flag from content filters\n  </Card>\n  <Card title=\"tool_calls\" icon=\"wrench\">\n    The model called a tool\n  </Card>\n</CardGroup>\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/advanced/files.mdx",
    "content": "---\ntitle: 'Files (Multimedia)'\ndescription: 'Learn about file handling and management in Julep'\nicon: 'file-circle-plus'\n---\n\n## Overview\n\nJulep’s Files feature supports uploading, storing, retrieving, and integrating files across Julep components. It handles various file types and formats.\n\n## File Properties\n\nEach file in Julep has the following properties:\n\n```typescript\nid: string; // Unique identifier\nname: string; // Name of the file\ncontent: string; // Base64 encoded content\ncreated_at: string; // Creation timestamp\nsize: number; // File size in bytes\nhash: string; // File hash for verification\ndescription?: string; // Optional description\nmime_type?: string; // Optional MIME type\n```\n\n## Basic Operations\n\n### Creating Files\n\nHere's how you can create files using the SDKs:\n\n<CodeGroup>\n    ```python Python\n    from julep import Julep\n\n    client = Julep()\n\n    file = client.files.create(\n        name=\"example.pdf\",\n        content=\"base64_encoded_content\",\n        description=\"Sample document\",\n        mime_type=\"application/pdf\"\n    )\n    ```\n\n    ```javascript Node.js\n    import Julep from '@julep/sdk';\n    const client = new Julep();\n    const file = await client.files.create({\n        name: \"example.pdf\",\n        content: \"base64_encoded_content\",\n        description: \"Sample document\",\n        mime_type: \"application/pdf\"\n    });\n    ```\n</CodeGroup>\n\n### Retrieving Files\n\nHere's how you can retrieve files using the SDKs:\n\n<CodeGroup>\n    ```python Python\n    file = client.files.get(\"file_id\")\n    ```\n\n    ```javascript Node.js\n    const file = await client.files.get(\"file_id\");\n    ```\n</CodeGroup>\n\n### Deleting Files\n\n<CodeGroup>\n    ```python Python\n    client.files.delete(\"file_id\")\n    ```\n\n    ```javascript Node.js\n    await client.files.delete(\"file_id\");\n    ```\n</CodeGroup>\n\n## API Reference\n\nFor complete API documentation, see [Files API Reference](https://dev.julep.ai/api/docs#tag/files).\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/advanced/lifecycle.mdx",
    "content": "---\ntitle: 'Execution Lifecycle'\ndescription: 'Understanding the Lifecycle of Task when executed in Julep'\nicon: 'arrows-spin'\n---\n\n## Overview\n\nUnderstanding the lifecycle of a Julep task is crucial for building effective workflows. \nLet's explore this through the lens of a [Trip Plan task](/tutorials/trip-planning) - a practical example that showcases key aspects of task execution.\n\nThe Trip Plan task is an ideal example because it demonstrates:\n1. Parallel execution of workflow steps\n2. Integration with multiple external APIs:\n   - [Weather API](/integrations/communicationdata/weather) for current conditions\n   - [Brave Search API](/integrations/search/brave) for attractions\n3. Data aggregation from various sources\n4. AI-powered personalization of results\n\nBelow is a visual representation of how this task flows through Julep's execution lifecycle:\n\n<Frame caption=\"Lifecycle of the Trip Plan Task\">\n  <img\n    src=\"/images/lifecycle.svg\"\n    width={1000}\n    height={1000}\n  />\n</Frame>\n\nLet's examine each phase of the execution lifecycle using this task as our guide.\n\n<Info>\n  This is a simplified representation of the execution lifecycle. In practice, Julep handles many more details and edge cases to ensure robust and efficient task execution.\n</Info>\n\n<Note>\n  Out here in this section, we will be focusing on the main workflow steps of the Trip Plan task and how these steps are executed in Julep.\n</Note>\n\n### 1. Input Schema\n\nFirst, we define what inputs our task expects:\n\n```yaml\n\ninput_schema:\n    type: object\n    properties:\n        locations:\n            type: array\n            items:\n                type: string\n```\n\n\nThis schema specifies that our task expects an array of location strings (e.g., `[\"New York\", \"London\", \"Paris\"]`).\n\n### 2. Tools Configuration\n\nNext, we define the external tools our task will use:\n\n```yaml\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: {openweathermap_api_key}\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: {brave_api_key}\n```\n\nWe're using two integrations:\n- The `weather` integration to fetch current weather conditions\n- The `brave` search integration to find tourist attractions\n\n### 3. Main Workflow Steps\n\n#### Step 1: Fetch Weather Data\n\n```yaml\n- over: $ steps[0].input.locations\n  map:\n    tool: weather\n    arguments:\n      location: $ _\n```\n\nThis step:\n- Iterates over each location in the input array\n- Calls the weather API for each location\n- The `_` represents the current location in the iteration\n\n#### Step 2: Search for Tourist Attractions\n\n```yaml\n- over: $ steps[0].input.locations\n  map:\n    tool: internet_search\n    arguments:\n      query: $ 'tourist attractions in ' + _\n```\n\n\nThis step:\n- Iterates over the locations again\n- Searches for tourist attractions in each location\n- Constructs a search query by concatenating \"tourist attractions in \" with the location\n\n#### Step 3: Combine Data\n\n```yaml\n- evaluate:\n    zipped: |-\n      $ list(\n        zip(\n          steps[0].input.locations,\n          [output['result'] for output in steps[0].output],\n          steps[1].output\n        )\n      )\n```\n\n\nThis step:\n- Combines the data from previous steps into tuples\n- Each tuple contains: (location, weather_data, attractions_data)\n- Uses Python's `zip` function to align the data\n\n#### Step 4: Generate Itineraries\n\n```yaml [expandable]\n- over: $ _['zipped']\n  parallelism: 3\n  # Inside the map step, each `_` represents the current element in the list\n  # which is a tuple of (location, weather, attractions)\n  map:\n    prompt:\n    - role: system\n      content: >-\n        $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n        for visiting tourist attractions in some locations.\n        The user will give you the following information for each location:\n\n        - The location\n        - The current weather condition\n        - The top tourist attractions'''\n    - role: user\n      content: >-\n        $ f'''Location: {_[0]}\n        Weather: {_[1]}\n        Attractions: {_[2]}'''\n    unwrap: true\n```\n\n\nThis step:\n- Processes up to 3 locations in parallel\n- For each location tuple:\n  - Sends a prompt to the AI model\n  - Includes location, weather, and attraction data\n  - Generates a personalized itinerary\n\n#### Step 5: Format Final Output\n\n```yaml\n- evaluate:\n    final_plan: |-\n      $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n```\n\n\nThis step:\n- Combines all itineraries into a single output\n- Separates each itinerary with a divider\n\n## Example Output\n\nAn example output when running this task with an input of `[\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]`:\n\n<div style={{ maxHeight: '400px', overflowY: 'auto', border: '1px solid #ccc', padding: '1rem', borderRadius: '4px' }}>\nHere's a detailed itinerary for visiting top tourist attractions in New York, considering the current weather conditions. \n\n### Day 1: Iconic Landmarks and Observation Decks\n- **Morning:**\n  - **Top of the Rock Observation Deck:** Start your day with a visit to the Top of the Rock Observation Deck at Rockefeller Plaza. The panoramic 360-degree views from the 70th floor are a must-see. Dress warmly as it feels like 5.2°C outside, and it’s quite windy.\n  - **Link for more info:** [Tripadvisor - Top of the Rock](https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html)\n\n- **Afternoon:**\n  - **St. Patrick’s Cathedral:** Just a short walk from Rockefeller Plaza, explore the stunning architecture of St. Patrick’s Cathedral. The overcast skies will provide a dramatic backdrop for photos.\n  - **Fifth Avenue:** Enjoy a leisurely stroll along Fifth Avenue, visiting iconic stores and landmarks.\n\n- **Evening:**\n  - **Times Square:** Experience the vibrant lights and energy of Times Square. The overcast clouds might enhance the brightness of the neon lights.\n\n### Day 2: Culture and History\n- **Morning:**\n  - **The Museum of Modern Art (MoMA):** Spend your morning exploring MoMA’s vast collection of modern and contemporary art. This indoor activity is perfect for a cloudy day.\n\n- **Afternoon:**\n  - **Central Park:** Head to Central Park for a refreshing walk. With 100% cloud cover, it's a great day to explore the park without the harsh sun. Consider visiting the Central Park Zoo or taking a guided tour.\n\n- **Evening:**\n  - **Broadway Show:** End your day with a Broadway show. It’s an ideal indoor activity to avoid the chilly weather outside. Book tickets in advance for popular shows.\n\n### Day 3: Historical and Educational\n- **Morning:**\n  - **Statue of Liberty and Ellis Island:** Take a ferry to visit these iconic sites. Dress warmly for the ferry ride. The cloud cover will provide a unique perspective for photos.\n\n- **Afternoon:**\n  - **9/11 Memorial and Museum:** Spend your afternoon reflecting at the 9/11 Memorial and exploring the museum exhibits.\n\n- **Evening:**\n  - **Brooklyn Bridge:** Walk across the Brooklyn Bridge and enjoy the city skyline. With the wind speed at 5.81 m/s, be prepared for breezy conditions.\n\n### Additional Tips:\n- **Clothing:** Wear layers to keep warm, as the temperature feels colder than it actually is.\n- **Dining:** New York offers a plethora of dining options. Consider trying some local favorites like a classic New York bagel or pizza.\n- **Transportation:** Utilize the subway for efficient travel across the city. Taxis and ride-sharing services are also readily available.\n\nFor more details on attractions and guided tours, you can visit [USA Guided Tours](https://usaguidedtours.com/nyc/attraction/) and [I Love NY](https://www.iloveny.com/places-to-go/new-york-city/attractions/). \n\nEnjoy your trip to New York City!\n---------------\n**Day 1: Exploring Iconic London Landmarks**\n\n**Morning:**\n1. **Buckingham Palace**\n   - Start your day early with a visit to Buckingham Palace. Arrive by 9:30 AM to catch the Changing of the Guard ceremony, which typically starts at 11:00 AM. Enjoy the majestic architecture and the surrounding gardens.\n   - Weather Tip: With the overcast clouds, it might feel chilly, so dress warmly and bring an umbrella just in case.\n\n**Midday:**\n2. **Westminster Abbey**\n   - Head towards Westminster Abbey, a short walk from Buckingham Palace. This historic church has been the site of many significant events, including royal weddings and coronations. Spend about 1.5 hours exploring.\n\n3. **Lunch at Borough Market**\n   - Take a tube or walk to Borough Market for a variety of food options. It's a great place to warm up with some hot street food and explore the diverse culinary offerings.\n\n**Afternoon:**\n4. **London Eye**\n   - After lunch, head to the London Eye. The overcast sky might not offer the clearest views, but the experience is still worthwhile. Pre-book your tickets to avoid long lines and enjoy a 30-minute ride on this iconic Ferris wheel.\n\n**Evening:**\n5. **The Globe Theatre**\n   - As the day winds down, visit Shakespeare's Globe Theatre. If there's a performance, consider attending or simply take a guided tour to learn about the history of this famous theater.\n\n**Day 2: Museums and Cultural Exploration**\n\n**Morning:**\n1. **The British Museum**\n   - Start your second day at the British Museum. Spend a few hours exploring the vast collection of art and antiquities. Highlights include the Rosetta Stone and the Elgin Marbles.\n\n**Midday:**\n2. **Lunch near Covent Garden**\n   - Head to Covent Garden for lunch. This area is bustling with restaurants and cafes, perfect for a cozy indoor meal.\n\n**Afternoon:**\n3. **The Tower of London**\n   - After lunch, make your way to the Tower of London. Delve into England's rich history and see the Crown Jewels. Allocate about 2-3 hours for this visit.\n\n**Evening:**\n4. **Tower Bridge**\n   - Conclude your day with a walk across Tower Bridge. The views of the Thames River and the cityscape are beautiful, even on a cloudy evening.\n\n**Day 3: Leisure and Local Experiences**\n\n**Morning:**\n1. **Natural History Museum**\n   - Begin your last day at the Natural History Museum. It's a family-friendly museum with fascinating exhibits, including dinosaur skeletons and a model of a blue whale.\n\n**Midday:**\n2. **Lunch at South Kensington**\n   - Enjoy a relaxed lunch in South Kensington. There are plenty of options, from casual cafes to high-end dining.\n\n**Afternoon:**\n3. **Hyde Park**\n   - Spend your afternoon strolling through Hyde Park. Visit the Serpentine Galleries if you're interested in contemporary art. The park's natural beauty is a peaceful retreat amidst the city hustle.\n\n**Evening:**\n4. **Dinner and a Show in the West End**\n   - End your London adventure with a memorable dinner followed by a theater show in the West End. Book your tickets in advance for popular shows.\n\n**Additional Tips:**\n- Always check the attraction websites for any specific COVID-19 guidelines or changes in operating hours.\n- London’s public transport system is efficient; consider getting an Oyster card for convenient travel.\n- Don't forget to dress in layers to adapt to the chilly weather, and always have your camera ready to capture memories.\n---------------\nHere’s a detailed itinerary for your visit to Paris, considering the current snowy weather conditions and top attractions:\n\n### Day 1: Embrace the Iconic Landmarks\n\n**Morning: Eiffel Tower**\n- **Time:** 9:00 AM\n- **Details:** Begin your day with a visit to the Eiffel Tower. Even in the snow, the tower offers stunning views of Paris. Dress warmly and enjoy hot chocolate from nearby cafes.\n- **Link for more info:** [Tripadvisor - Things to Do in Paris](https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html)\n\n**Afternoon: Louvre Museum**\n- **Time:** 1:00 PM\n- **Details:** Spend your afternoon indoors at the Louvre Museum. With its vast collection of art and history, it's a perfect way to escape the cold. Consider taking a guided tour to make the most of your visit.\n- **Link for more info:** [U.S. News Travel - Things To Do](https://travel.usnews.com/Paris_France/Things_To_Do/)\n\n**Evening: Seine River Cruise**\n- **Time:** 6:00 PM\n- **Details:** End your day with a magical Seine River cruise. The snow adds a picturesque touch to the illuminated landmarks. Ensure to book a heated cruise for comfort.\n\n### Day 2: Explore Cultural and Historical Treasures\n\n**Morning: Notre-Dame Cathedral**\n- **Time:** 9:30 AM\n- **Details:** Visit the iconic Notre-Dame Cathedral. Although some areas may be under restoration, its architecture and history are worth experiencing. Warm clothing is essential as the interior can be chilly.\n\n**Afternoon: Musée d'Orsay**\n- **Time:** 1:30 PM\n- **Details:** Head to the Musée d'Orsay, renowned for its Impressionist masterpieces. This indoor activity is ideal for escaping the cold and enjoying world-class art.\n\n**Evening: Montmartre and Sacré-Cœur**\n- **Time:** 5:00 PM\n- **Details:** Wander through the charming streets of Montmartre and visit the Sacré-Cœur Basilica. The view of Paris in the snow is breathtaking. Enjoy a cozy dinner at a local bistro in Montmartre.\n\n### Day 3: Discover Hidden Gems and Local Flavors\n\n**Morning: Le Marais District**\n- **Time:** 10:00 AM\n- **Details:** Explore Le Marais, known for its vibrant street art, boutiques, and cafes. Enjoy a leisurely breakfast and shop for unique souvenirs.\n\n**Afternoon: Palais Garnier (Opera House)**\n- **Time:** 2:00 PM\n- **Details:** Tour the opulent Palais Garnier. Its stunning interiors are a must-see, especially when it's snowy outside.\n\n**Evening: Moulin Rouge Show**\n- **Time:** 8:00 PM\n- **Details:** Conclude your trip with a classic Parisian experience at the Moulin Rouge. Book in advance to secure a good seat and enjoy the legendary cabaret performance.\n\n### Additional Tips:\n- **Weather Preparation:** Wear layers, waterproof boots, and carry an umbrella. The snow and cold wind can be intense.\n- **Dining:** Indulge in warm, hearty French cuisine at local cafes and restaurants. Try dishes like French onion soup, coq au vin, and tarte Tatin.\n- **Transport:** Use public transportation to avoid the snowy streets, and consider purchasing a Paris Visite pass for unlimited travel.\n\nEnjoy your snowy adventure in Paris!\n---------------\n**Tokyo Itinerary**\n\n**Day 1: Arrival and Exploration of Historical and Cultural Sites**\n\n- **Morning:**\n  - **Asakusa District**: Begin your day with a visit to the historic Asakusa district. Explore the iconic Senso-ji Temple, Tokyo's oldest temple. Enjoy the traditional market streets like Nakamise Street for some shopping and snacks.\n\n- **Afternoon:**\n  - **Tokyo National Museum**: Head to Ueno Park and visit the Tokyo National Museum. Discover Japan’s extensive collection of art and antiquities. This is a great spot to dive into Japanese history and culture.\n\n- **Evening:**\n  - **Dinner in Ueno**: Explore the local dining options around Ueno and enjoy a traditional Japanese dinner.\n\n**Day 2: Modern Tokyo and Unique Experiences**\n\n- **Morning:**\n  - **Ghibli Museum**: Start your day with a magical visit to the Ghibli Museum in Mitaka. Perfect for fans of Studio Ghibli's animated films, this museum offers a whimsical look into the creative world of Hayao Miyazaki.\n\n- **Afternoon:**\n  - **Shibuya and Harajuku**: Head towards the bustling areas of Shibuya and Harajuku. Witness the famous Shibuya Crossing and explore the trendy shops of Harajuku, especially Takeshita Street.\n\n- **Evening:**\n  - **Golden Gai**: Conclude your day in the vibrant Golden Gai district. This area is renowned for its narrow alleys filled with small bars and eateries. Experience the unique nightlife of Tokyo here.\n\n**Day 3: Relax and Explore Green Spaces**\n\n- **Morning:**\n  - **Shinjuku Gyoen National Garden**: Spend a peaceful morning strolling through the beautiful Shinjuku Gyoen, one of Tokyo's largest and most beautiful parks. It's a perfect spot for relaxation and enjoying nature.\n\n- **Afternoon:**\n  - **Meiji Shrine**: Visit the Meiji Shrine, located in a forested area near Harajuku and Shibuya. It's a serene place to learn about Shinto traditions and enjoy the tranquil setting.\n\n- **Evening:**\n  - **Tokyo Tower or Skytree**: End your trip with a visit to either Tokyo Tower or Tokyo Skytree for a panoramic view of the city. It's an unforgettable way to see Tokyo illuminated at night.\n\n**Weather Considerations:**\n- With the current weather of few clouds and a mild temperature around 10.32°C, it is advisable to wear layers and carry a light jacket for comfort during outdoor activities.\n- Humidity is high (92%), so be prepared for a slightly damp feeling and consider moisture-wicking clothing.\n\n**Additional Tips:**\n- Always check the opening hours of attractions and book tickets in advance where necessary.\n- Use Tokyo’s efficient public transport to move around easily.\n- Consider visiting the websites linked in the attraction descriptions for more detailed information and current updates.\n---------------\nHere's a detailed itinerary for exploring some of Sydney's top tourist attractions with the current weather conditions in mind. With clear skies and pleasant temperatures, it's a perfect day to explore the outdoors and enjoy what Sydney has to offer.\n\n### Morning\n\n**9:00 AM - Sydney Opera House**\n- Begin your day with a visit to the iconic Sydney Opera House. Take a guided tour to learn about its history and architecture. Tours are available in multiple languages.\n- **Link:** [Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\n\n**11:00 AM - Royal Botanic Garden Sydney**\n- Just a short walk from the Opera House, enjoy a leisurely stroll through the Royal Botanic Garden. The clear skies will offer beautiful views of the diverse plant life and the Sydney Harbour.\n\n### Afternoon\n\n**12:30 PM - Lunch at Opera Bar**\n- Head back to Opera Bar for lunch. Enjoy a refreshing cocktail with stunning views of the Sydney Harbour Bridge and the waterfront.\n- **Link:** [Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\n\n**2:00 PM - Sydney Harbour Bridge**\n- After lunch, take a scenic walk across the Sydney Harbour Bridge. If you're up for it, consider the BridgeClimb for breathtaking panoramic views of the city.\n\n**4:00 PM - The Rocks**\n- Explore The Rocks, one of Sydney's most historic areas. Wander through the cobbled streets, visit the local markets, and perhaps enjoy a cup of coffee at a nearby café.\n\n### Evening\n\n**6:00 PM - Darling Harbour**\n- Make your way to Darling Harbour for the evening. Here you can visit attractions such as the SEA LIFE Sydney Aquarium or simply enjoy the lively atmosphere by the waterfront.\n\n**8:00 PM - Dinner at a Local Restaurant**\n- Conclude your day with dinner at one of Darling Harbour's many restaurants. Choose from a variety of cuisines while enjoying the vibrant night scene.\n\n### Additional Suggestions\n\n- If you're interested in more unique experiences, consider visiting some of the attractions listed on [Time Out Sydney](https://www.timeout.com/sydney/attractions/tourist-attractions-that-dont-suck), which includes thrilling adventures and scenic tours.\n\nWith clear skies and mild temperatures, this itinerary offers a balanced mix of cultural, historical, and scenic experiences. Enjoy your visit to Sydney!\n</div>\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/advanced/localsetup.mdx",
    "content": "---\ntitle: 'Local Setup'\ndescription: 'Learn how to run Julep locally'\nicon: 'code'\n---\n## Overview\n\nJuelp is designed to be run locally with the help of Docker. This guide will help you set up Julep locally.\n\n## Prerequisites\n\n- [Docker](https://docs.docker.com/get-docker/)\n\n## Setup Instructions\n\n### 1. Clone the Repository\nClone the repository from your preferred source:\n\n```bash\ngit clone <repository_url>\n```\n\n### 2. Navigate to the Root Directory\nChange to the root directory of the project:\n\n```bash\ncd <repository_root>\n```\n\n### 3. Set Up Environment Variables\n- Create a `.env` file in the root directory.\n- Refer to the [`.env.example`](https://github.com/julep-ai/julep/blob/dev/.env.example) file for a list of required variables.\n- Ensure that all necessary variables are set in the `.env` file.\n\n### 4. Create a Docker Volume for Backup\nCreate a Docker volume named `grafana_data`, `memory_store_data`, `temporal-db-data`, `prometheus_data` and `seadweedfs_data`:\n\n```bash\ndocker volume create grafana_data\ndocker volume create memory_store_data\ndocker volume create temporal-db-data\ndocker volume create prometheus_data\ndocker volume create seaweedfs_data\n```\n<Info>\nThe volumes are used to store the data for the Grafana, Memory Store (Timescale DB), Temporal DB, Prometheus, and SeadweedFS, and Memories respectively.\n</Info>\n\n### 5. Run the Project using Docker Compose\nYou can run the project in two different modes: **Single Tenant** or **Multi-Tenant**. Choose one of the following commands based on your requirement:\n\n#### Single-Tenant Mode\nRun the project in single-tenant mode:\n\n```bash\ndocker compose --env-file .env --profile temporal-ui --profile single-tenant --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --build --force-recreate --watch\n```\n\n> **Note:** In single-tenant mode, you can interact with the SDK directly without the need for the API KEY.\n\n#### Multi-Tenant Mode\nRun the project in multi-tenant mode:\n\n```bash\ndocker compose --env-file .env --profile temporal-ui --profile multi-tenant --profile self-hosted-db --profile blob-store --profile temporal-ui-public up --build --force-recreate --watch\n```\n\n> **Note:** In multi-tenant mode, you need to generate a JWT token locally that act as an API KEY to interact with the SDK.\n\n### 6. Generate a JWT Token (Only for Multi-Tenant Mode)\nTo generate a JWT token, `jwt-cli` is required. install it from [here](https://github.com/mike-engel/jwt-cli).\n\nUse the following command and replace `JWT_SHARED_KEY` with the corresponding key from your `.env` file to generate a JWT token:\n\n```bash\njwt encode --secret JWT_SHARED_KEY --alg HS512 --exp=$(date -j -v +10d +%s) --sub '00000000-0000-0000-0000-000000000000' '{}'\n```\n\n> **Note:** This command generates a JWT token that will be valid for 10 days. adjust the expiration date as needed.\n\n### 7. Access and Interact\n- **Temporal UI**: You can access the Temporal UI through the specified port in your `.env` file.\n- **API Interactions**: Depending on the chosen mode, interact with the setup using the provided endpoints.\n\n### Troubleshooting\n- Ensure that all required Docker images are available.\n- Check for missing environment variables in the `.env` file.\n- Use the `docker compose logs` command to view detailed logs for debugging.\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/advanced/multi-agent-multi-user-sessions.mdx",
    "content": "---\ntitle: 'Multi-Agent Multi-User Sessions'\ndescription: 'Learn how to manage complex multi-agent systems with multiple users'\nicon: 'sitemap'\n---\n\n## Overview\n\nJulep supports different types of sessions based on the number of agents and users involved. This flexibility allows for complex interactions and use cases.\n\n## Types of Sessions\n\n<CardGroup cols={2}>\n  <Card title=\"Single Agent\" icon=\"user\">\n    <ol>\n      <li>No user</li>\n      <li>Single user</li>\n      <li>Multiple users</li>\n    </ol>\n  </Card>\n  <Card title=\"Multiple Agents\" icon=\"users\">\n    <ol>\n      <li>No user</li>\n      <li>Single user</li>\n      <li>Multiple users</li>\n    </ol>\n  </Card>\n</CardGroup>\n\n## Behavior in Multi-Agent/User Sessions\n\n### User Behavior\n\n<AccordionGroup>\n  <Accordion title=\"No User\" icon=\"user\" defaultOpen={true}>\n    <ol>\n      <li>No user data is retrieved</li>\n      <li>(Upcoming) Memories are not mined from the session</li>\n    </ol>\n  </Accordion>\n\n  <Accordion title=\"One or More Users\" icon=\"users\" defaultOpen={true}>\n    <ol>\n      <li>Docs, metadata, memories, etc. are retrieved for all users in the session</li>\n      <li>Messages can be added for each user by referencing them by name in the `ChatML` messages</li>\n      <li>(Upcoming) Memories mined in the background are added to the corresponding user's scope</li>\n    </ol>\n  </Accordion>\n</AccordionGroup>\n\n### Agent Behavior\n\n<AccordionGroup>\n  <Accordion title=\"One Agent\" icon=\"lightbulb\" defaultOpen={true}>\n    <ol>\n      <li>Works as expected</li>\n    </ol>\n  </Accordion>\n\n  <Accordion title=\"Multiple Agents\" icon=\"lightbulb\" defaultOpen={true}>\n    <ol>\n      <li>When a message is received by the session, each agent is called one after another in the order they were defined in the session</li>\n      <li>You can specify which `agent` to use in a request, in which case, only that agent will be used</li>\n    </ol>\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  This multi-agent/user capability allows for sophisticated scenarios such as:\n  - Collaborative problem-solving with multiple AI agents\n  - Group conversations with multiple users and agents\n  - Specialized agents working together on complex tasks\n</Note>\n\n## Conclusion\n\nBy supporting these various configurations, Julep provides a flexible framework for building diverse and powerful AI applications.\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/advanced/new-syntax.mdx",
    "content": "---\ntitle: 'New Syntax (Important)'\ndescription: 'Learn about the new workflow syntax and how to migrate your existing workflows'\nicon: 'code'\n---\n\n## Overview\n\nWe've updated our workflow syntax to make data flow more explicit and consistent. \nThese changes improve readability and make workflows more maintainable. \nWhile this update requires modifications to existing workflows, it provides a more robust foundation for workflow development.\n\n\n## 1. Input/Output Data References\n\nThe most significant change is how we reference input and output data between workflow steps. The new syntax makes the data flow more explicit by using the `steps` keyword.\n\n### Old Syntax:\n- `inputs[x]` - Referenced input data from step x\n- `outputs[x]` - Referenced output data from step x\n- `_x` - Shorthand for input data from step x\n\n### New Syntax:\n- `steps[x].input` - References input data from step x\n- `steps[x].output` - References output data from step x\n- `_x` -  Has been removed\n\n### Example\n\n#### Old Syntax\n```yaml\n- evaluate:\n    input_data: inputs[0].a\n    output_data: outputs[0].b\n    shorthand: _0.c\n```\n\n#### New Syntax\n```yaml\n- evaluate:\n    input: $ steps[0].input.a\n    output: $ steps[0].output.b\n    shorthand: $ steps[0].input.c\n```\n\n<Note>\nNotice the addition of the `$` prefix in the new syntax. This indicates that the value should be treated as a Python expression. We'll cover this in detail in the next section.\n</Note>\n\n### Key Changes:\n- `inputs[0]` becomes `steps[0].input`\n- `outputs[0]` becomes `steps[0].output`\n- `_0` becomes `steps[0].input`\n- Added `$` prefix to indicate Python expressions\n\n## 2. Template Syntax Changes Inside `prompt` Steps\n\nAnother significant change is the removal of Jinja templates (`{{ }}`) in `log` steps and `prompt` steps. Instead, we now use Python f-strings with the `$` prefix for dynamic content.\n\n### Old Syntax (Using Jinja):\n```yaml\n- prompt:\n    - role: user\n      content: Write me an article about the topic: {{inputs[0].topic}}\n```\n\n### New Syntax (Using f-strings):\n```yaml\n- prompt:\n    - role: user\n      content: $ f\"Write me an article about the topic: {steps[0].input.topic}\"\n    - role: user\n      content: this is only text, no need for dollar sign prefix\n```\n\nFor multiple lines, you can use a multiline f-string:\n\n```yaml\n- prompt:\n    - role: user\n      content: |-\n        $ f\"\"\"\n        Write me an article about the topic: {steps[0].input.topic}.\n        The article should be {steps[0].input.article_length} words long.\n        \"\"\"\n```\n\n<Note>\nThe `$` prefix is only needed when the value contains a Python expression or f-string. Plain text content doesn't require the prefix.\n</Note>\n\n## 3. When to Use the $ Prefix\n\nThe `$` prefix should be used in two scenarios:\n1. When referencing step data (inputs/outputs)\n2. When using Python expressions or f-strings\n\n#### Examples:\n\n```yaml\nsteps:\n  - prompt:\n      # Needs $ because it uses an f-string\n      - role: user\n        content: $ f\"The temperature is {steps[0].input.temp}°C\"\n      \n      # No $ needed - plain text\n      - role: user\n        content: Tell me about the weather\n\n  - evaluate:\n      # Needs $ because it references step data\n      input: $ steps[0].output\n      \n      # Needs $ because it's a Python expression\n      condition: $ len(steps[0].input.text) > 100\n```\n"
  },
  {
    "path": "documentation/advanced/python-expression.mdx",
    "content": "---\ntitle: 'Python Expression'\ndescription: 'Learn how to use Python expressions in Julep task definitions'\nicon: 'python'\n---\n\n## Overview\n\nJulep tasks support Python expressions for dynamic value computation and data manipulation. This guide explains how to use them effectively.\n\n## The Special `_` Variable\n\nThe underscore `_` is a special variable that serves three different purposes depending on where it's used:\n\n1. **First Step Input**: In the first step of a task, `_` contains the execution input:\n```yaml\n# If task is executed with input `{\"topic\": \"AI\"}`\n- evaluate:\n    topic: $ _.topic  # Accesses the input \"AI\"\n```\n\n2. **Previous Step Output**: In any subsequent step, `_` contains the output from the previous step:\n```yaml\n- evaluate:\n    results: $ _.split('\\n')  # Splits previous step's output into lines\n```\n\n3. **Iterator Value**: In `foreach` and `map` steps, `_` represents the current item being iterated.\n```yaml\n# If the task is executed with input `{\"questions\": [\"What is AI?\", \"What is Julep?\"]}`\n- foreach:\n    in: $ _.questions\n    do:\n      - wait_for_input:\n          info:\n            \"message\": $ _  # _ is each question\n```\n\n## The Special `$` Variable\n\nThe `$` variable is used to differentiate between a Python expression and a string. When using the `$` variable, the expression is evaluated as a Python expression.\n\n```yaml\n- evaluate:\n    topic: $ _.topic  # Accesses the input \"AI\"\n```\n\n```yaml\n- prompt:\n    - role: user\n      content: |-\n        $ f'''\n        Please answer the following question:\n        {_.question} \n        '''\n```\n<Note>\nTo learn more about how to use the `$` variable, please refer to the [New Syntax](/advanced/new-syntax) section.\n</Note>\n\n## Where Python Expressions Are Used\n\nPython expressions can be used in various task steps. For a complete list of step types and their syntax, refer to the [Step Types](/advanced/types-of-task-steps) page.\n\nCommon places include:\n- `evaluate` steps\n- Tool `arguments`\n- `if` conditions\n- `foreach` and `map` iterations\n\n## Available Functions and Libraries\n\nThe following Python functions and libraries are available for use in expressions:\n\n### Basic Python Builtins\n- `abs`, `all`, `any`, `bool`, `dict`, `enumerate`\n- `float`, `int`, `len`, `list`, `map`, `max`, `min`\n- `round`, `set`, `str`, `sum`, `tuple`, `zip`, `reduce`\n\n### Safe Versions of Functions\n- `range`: `def safe_range(*args)`\n  \n  Safely creates a range object with size limits (max 1,000,000 elements).\n\n- `load_json`: `def safe_json_loads(s: str) -> Any` (Deprecated in favor of `json.loads`)\n  \n  Safely parses a JSON string with size limits.\n\n- `load_yaml`: `def safe_yaml_load(s: str) -> Any` (Deprecated in favor of `yaml.safe_load`)\n  \n  Safely parses a YAML string with size limits.\n\n- `dump_json`: `def dump_json(obj: Any, *, **kwargs) -> str` (Deprecated in favor of `json.dumps`)\n  \n  Safely serializes an object to a JSON string.\n\n- `dump_yaml`: `def dump_yaml(obj: Any, **kwargs) -> str` (Deprecated in favor of `yaml.dump`)\n  \n  Safely serializes an object to a YAML string.\n\n- `extract_json`: `def safe_extract_json(string: str) -> Any`\n  \n  Safely extracts and parses JSON from text.\n\n### Regex and NLP Functions\n- `search_regex`: `def search_regex(pattern: str, string: str) -> Optional[re2.Match]`\n  \n  Searches for a regex pattern in a string.\n\n- `match_regex`: `def match_regex(pattern: str, string: str) -> bool`\n  \n  Checks if a regex pattern matches a string.\n\n- `chunk_doc`: `def chunk_doc(string: str) -> list[str]`\n  \n  Chunks a string into sentences.\n\n- `nlp` pipelines.\n\nExample using these functions in an evaluate step:\n```yaml\n- evaluate:\n    # Parse JSON string with size limit of 1MB\n    data: $ json.loads(_.json_string)\n    \n    # Parse YAML string with size limit of 1MB\n    config: $ yaml.safe_load(_.yaml_string)\n    \n    # Extract JSON from text that might contain markdown code blocks\n    extracted_content: $ extract_json('Here is some JSON: ```json\\n{\"key\": \"value\"}\\n```')\n```\n\n### CSV Functions\n- `reader`: `def reader(data: str, dialect=\"excel\", delimiter: str = \",\", quotechar: str | None = '\"', escapechar: str | None = None, doublequote: bool = True, skipinitialspace: bool = False, lineterminator: str = \"\\r\\n\", quoting=0, strict: bool = False) -> csv._reader`\n\n  Creates a CSV reader.\n\n- `writer`: `def writer(data: str, dialect=\"excel\", delimiter: str = \",\", quotechar: str | None = '\"', escapechar: str | None = None, doublequote: bool = True, skipinitialspace: bool = False, lineterminator: str = \"\\r\\n\", quoting=0, strict: bool = False) -> csv._writer`\n\n  Creates a CSV writer.\n\n- `DictReader`: `class DictReader(data: str, fieldnames=None, restkey=None, restval=None, dialect=\"excel\", *args, **kwds)`\n\n  Create an object that operates like a regular reader but maps the information in each row to a dict.\n\n- `DictWriter`: `class DictWriter(data: str, fieldnames, restval=\"\", extrasaction=\"raise\", dialect=\"excel\", *args, **kwds)`\n\n  Create an object which operates like a regular writer but maps dictionaries onto output rows.\n\n- `register_dialect`: `def register_dialect(name: str, dialect: type[Dialect] = ..., *, delimiter: str = \",\", quotechar: str | None = '\"', escapechar: str | None = None, doublequote: bool = True, skipinitialspace: bool = False, lineterminator: str = \"\\r\\n\", quoting: _QuotingType = 0, strict: bool = False) -> csv._reader`\n\n  Associate dialect with name.\n\n- `unregister_dialect`: `def unregister_dialect(name: str) -> None`\n\n  Delete the dialect associated with name from the dialect registry.\n\n- `get_dialect`: `def get_dialect(name: str) -> Dialect`\n\n  Return the dialect associated with name.\n\n- `list_dialects`: `def list_dialects() -> list[str]`\n\n  Return the names of all registered dialects.\n\n- `field_size_limit`: `def field_size_limit(new_limit: int = ...) -> int`\n\n  Returns the current maximum field size allowed by the parser.\n\n- `Dialect`: `class Dialect()`\n\n  The Dialect class is a container class whose attributes contain information for how to handle doublequotes, whitespace, delimiters, etc.\n\n- `excel`: `class excel()`\n\n  The excel class defines the usual properties of an Excel-generated CSV file.\n\n- `excel_tab`: `class excel_tab()`\n\n  The excel_tab class defines the usual properties of an Excel-generated TAB-delimited file.\n\n- `unix_dialect`: `class unix_dialect()`\n\n  The unix_dialect class defines the usual properties of a CSV file generated on UNIX systems, i.e. using '\\n' as line terminator and quoting all fields.\n\n- `Sniffer`: `class Sniffer`\n\n  The Sniffer class is used to deduce the format of a CSV file.\n\n- `QUOTE_ALL` - Instructs writer objects to quote all fields.\n\n- `QUOTE_MINIMAL` - Instructs writer objects to only quote those fields which contain special characters such as delimiter, quotechar or any of the characters in lineterminator.\n\n- `QUOTE_NONNUMERIC` - Instructs writer objects to quote all non-numeric fields. Instructs reader objects to convert all non-quoted fields to type float.\n\n- `QUOTE_NONE` - Instructs writer objects to never quote fields.\n\n- `QUOTE_NOTNULL` - Instructs writer objects to quote all fields which are not None.\n\n- `QUOTE_STRINGS` - Instructs writer objects to always place quotes around fields which are strings.\n\n- `Error`: `class Error()`\n\n  Raised by any of the functions when an error is detected.\n\nThis module tries to mimic `csv` module from the standard Python library. You can find additional information [here](https://docs.python.org/3/library/csv.html)\n\n## Example Usage\n\n```yaml\nname: Data Processing Task\n\nmain:\n  # Using _ as input\n  - evaluate:\n      csv_data: $ [row for row in csv.reader(\"a,b,c\\n1,2,3\")]\n```\n\n### Standard Library Modules\n- `re`: Regular expressions (using re2)\n- `json`: JSON operations\n- `yaml`: YAML operations\n- `string`: String constants and operations\n- `datetime`: Date and time operations\n- `math`: Mathematical functions\n- `statistics`: Statistical operations\n- `base64`: Base64 encoding/decoding\n- `urllib.parse`: URL parsing operations\n- `random`: Random number generation\n- `time`: Time operations\n- `csv`: CSV operations\n\nFor the complete list of available functions and their safe implementations, refer to the [utils.py](https://github.com/julep-ai/julep/blob/main/agents-api/agents_api/activities/utils.py) file in the source code.\n\n## Example Usage\n\nHere's a practical example combining different aspects of Python expressions:\n\n```yaml\nname: Data Processing Task\n\nmain:\n  # Using _ as input\n  - evaluate:\n      topics: $ _.topics  # Access input topics\n\n  # Using _ as previous output\n  - evaluate:\n      filtered_topics: $ [t for t in _.topics if len(t) > 3]\n\n  # Using _ in foreach\n  - foreach:\n      in: $ _.filtered_topics\n      do:\n        - tool: web_search\n          arguments:\n            query: $ 'Latest news about ' + _ # _ is each topic\n```\n\n### Custom Implementations\n\n#### Humanization (Alpha)\n\nThe `humanize_text_alpha` function transforms text using multiple techniques such as:\n- Back-translation.\n- Rewriting using non-public LLMs.\n- Stylistic modifications such as homoglyphs and em dashes.\n\nBreakdown of the function:\n\nFunction signature:\n\n`humanize_text_alpha(text: str, threshold: float = 90, src_lang: str = \"english\", target_lang: str = \"german\", use_homoglyphs: bool = True, use_em_dashes: bool = True, grammar_check: bool = False, max_tries: int = 10) -> str`\n\nParameters:\n\n- `text`: The text to be humanized.\n- `threshold`: The threshold for the humanization (0-100).\n- `src_lang`: The source language of the original text.\n- `target_lang`: The target language used in the back-translation technique.\n- `use_homoglyphs`: Whether to use homoglyphs, a technique that replaces certain characters with similar looking characters to trick AI detection classifiers.\n- `use_em_dashes`: Whether to use em dashes, i.e. adding dashes between longer words to break the tokens.\n- `grammar_check`: Whether to run another prompt after back-translation to check for correct grammar.\n- `max_tries`: The maximum number of tries to humanize the text.\n\nExample usage:\n\n```yaml\n- evaluate:\n    humanized_text: $ humanize_text_alpha(_.text, threshold=30, target_lang=\"german\")\n```\n\n#### Markdown to HTML\n\nThe `markdown_to_html` function converts markdown text to HTML.\n\nBreakdown of the function:\n\nFunction signature:\n\n`markdown_to_html(markdown_text: str) -> str`\n\nParameters:\n\n- `markdown_text`: The markdown text to be converted to HTML.\n\nExample usage:\n\n```yaml\n- evaluate:\n    html_text: $ markdown_to_html(_.markdown_text)\n```\n\n#### HTML to Markdown\n\nThe `html_to_markdown` function converts HTML text to markdown.\n\nBreakdown of the function:  \n\nFunction signature:\n\n`html_to_markdown(html_text: str) -> str`\n\nParameters:\n\n- `html_text`: The HTML text to be converted to markdown.\n\nExample usage:\n\n```yaml\n- evaluate:\n    markdown_text: $ html_to_markdown(_.html_text)\n```\n\n## Security\n\nAll Python expressions are executed in a sandboxed environment with:\n\n<CardGroup cols={2}>\n  <Card title=\"Function Limits\" icon=\"function\">\n    <p>Limited available functions to prevent unsafe operations</p>\n  </Card>\n  \n  <Card title=\"String Limits\" icon=\"text-size\">\n    <p>Maximum string length restrictions to prevent memory issues</p>\n  </Card>\n\n  <Card title=\"Collection Limits\" icon=\"layer-group\">\n    <p>Collection size limits to prevent resource exhaustion</p>\n  </Card>\n\n  <Card title=\"Time Limits\" icon=\"clock\">\n    <p>Execution time limits to prevent infinite loops</p>\n  </Card>\n</CardGroup>\n\nThis ensures safe execution while providing necessary functionality for task workflows.\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/advanced/render.mdx",
    "content": "---\ntitle: 'Render Endpoint in Julep'\ndescription: 'Learn about the render endpoint for previewing chat inputs before sending them to the model'\nicon: 'eye'\n---\n\n## Overview\n\nJulep provides a render endpoint that allows you to preview how chat inputs will be processed before actually sending them to the model. This is useful for debugging, testing templates, and understanding how the system processes your messages.\n\n## Purpose\n\n<Steps>\n  <Step title=\"Preview Processing\">\n    The render endpoint processes chat inputs exactly as the chat endpoint would, but stops short of sending them to the model.\n  </Step>\n  <Step title=\"Template Rendering\">\n    See how templates in your messages and system prompts will be rendered with the current environment variables.\n  </Step>\n  <Step title=\"Document Retrieval\">\n    Preview which documents will be retrieved from your knowledge base for a given input.\n  </Step>\n  <Step title=\"Tool Configuration\">\n    Examine how tools will be formatted and made available to the model.\n  </Step>\n  <Step title=\"Debugging\">\n    Useful for debugging complex prompts and understanding the exact input that would be sent to the model.\n  </Step>\n</Steps>\n\n<Info>  \n  - The render endpoint uses the same input format as the chat endpoint but returns the processed messages without actually calling the model.\n  - To use the render endpoint, you need to create a session first. To learn more about the session object, check out the [Session](/concepts/sessions) page.\n</Info>\n\n## Input Structure\n\nThe render endpoint accepts the same input structure as the chat endpoint:\n\n- **Messages**: An array of input messages representing the conversation so far.\n- **Tools**: (Advanced) Additional tools provided for this specific interaction.\n- **Tool Choice**: Specifies which tool the agent should use.\n- **Memory Access**: Controls how the session accesses history and memories (`recall` parameter).\n- **Additional Parameters**: Various parameters to control the behavior of the rendering.\n\nHere's an example of how a typical message object might be structured in a render request:\n\n<Accordion title=\"Message Object Structure\">\n  ```python Python\n    \"\"\"\n    Attributes for the Message object:\n        role (Literal[\"user\", \"assistant\", \"system\", \"tool\"]): The role of the message sender.\n        tool_call_id (str | None): Optional identifier for a tool call associated with this message.\n        content (Annotated[str | list[str] | list[Content | ContentModel7 | ContentModel] | None, Field(...)]): The main content of the message, which can be a string, a list of strings, or a list of content models.\n        name (str | None): Optional name associated with the message.\n        tool_calls (list[ChosenFunctionCall | ChosenComputer20241022 | ChosenTextEditor20241022 | ChosenBash20241022] | None): List of tool calls generated during the message creation, if any.\n    \"\"\"\n    # Example of a simple message structure\n    messages = [{\"role\": \"user\", \"content\": \"Your query here\"}]\n  ```\n  <p>This object represents a message in the chat system, detailing the structure and types of data it can hold.</p>\n</Accordion>\n\n## Additional Parameters\n\nThe render endpoint accepts the same parameters as the chat endpoint:\n\n| Parameter           | Type    | Description                                      | Default  |\n|---------------------|---------|--------------------------------------------------|----------|\n| `model`             | `str`   | The model to use for validation (though no actual model call is made). | `None` |\n| `agent`             | `UUID`  | Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions) | `None` |\n| `recall`            | `bool`  | Whether previous memories and docs should be recalled or not. | `True` |\n| `response_format`   | `str`   | Response format specification (used for validation only). | `None` |\n| `temperature`       | `float` | Not used in rendering but validated for format. | `None` |\n| `top_p`             | `float` | Not used in rendering but validated for format. | `1.0` |\n| `max_tokens`        | `int`   | Not used in rendering but validated for format. | `None` |\n| `stop`              | `list[str]` | Not used in rendering but validated for format. | `[]` |\n\n## Response Structure\n\nThe render endpoint returns a `RenderResponse` object with the following structure:\n\n```json\n{\n  \"messages\": [\n    // Array of processed messages that would be sent to the model\n  ],\n  \"docs\": [\n    // Array of document references that would be used for this request\n  ],\n  \"tools\": [\n    // Array of formatted tools that would be available to the model\n  ]\n}\n```\n\n<Info>\n  The render response includes:\n  - `messages`: The fully processed messages, including rendered templates and system messages.\n  - `docs`: List of document references that would be used for this request, intended for citation purposes.\n  - `tools`: The formatted tools that would be available to the model.\n</Info>\n\n## Usage\n\nHere's an example of how to use the render endpoint in Julep using the SDKs:\n\n<Info>\n  To use the render endpoint, you always have to create a session first.\n</Info>\n\n<CodeGroup>\n    ```python Python [expandable]\n    # Create a session with custom recall options\n    client.sessions.create(\n        agent=agent.id,\n        user=user.id,\n        recall=True,\n        recall_options={\n            \"mode\": \"hybrid\", # or \"vector\", \"text\"\n            \"num_search_messages\": 4, # number of messages to search for documents\n            \"max_query_length\": 1000, # maximum query length\n            \"alpha\": 0.7, # weight to apply to BM25 vs Vector search results (ranges from 0 to 1)\n            \"confidence\": 0.6, # confidence cutoff level (ranges from -1 to 1)\n            \"limit\": 10, # limit of documents to return\n            \"lang\": \"en-US\", # language to be used for text-only search\n            \"metadata_filter\": {}, # metadata filter to apply to the search\n            \"mmr_strength\": 0, # MMR Strength (ranges from 0 to 1)\n        }\n    )\n\n    # Render the chat input without sending to the model\n    render_response = client.sessions.render(\n        session_id=session.id,\n        messages=[\n            {\n                \"role\": \"user\",\n                \"content\": \"Tell me about Julep\"\n            }\n        ],\n        recall=True\n    )\n    print(\"Processed messages:\", render_response.messages)\n    print(\"Retrieved documents:\", render_response.docs)\n    print(\"Available tools:\", render_response.tools)\n    ```\n\n    ```javascript Node.js [expandable]\n    client.sessions.create({\n        agent: agent.id,\n        user: user.id,\n        recall: true,\n        recall_options: {\n            mode: \"hybrid\", // or \"vector\", \"text\"\n            num_search_messages: 4, // number of messages to search for documents\n            max_query_length: 1000, // maximum query length\n            alpha: 0.7, // weight to apply to BM25 vs Vector search results (ranges from 0 to 1)\n            confidence: 0.6, // confidence cutoff level (ranges from -1 to 1)\n            limit: 10, // limit of documents to return\n            lang: \"en-US\", // language to be used for text-only search\n            metadata_filter: {}, // metadata filter to apply to the search\n            mmr_strength: 0, // MMR Strength (ranges from 0 to 1)\n        }\n    });\n\n    // Render the chat input without sending to the model\n    const renderResponse = await client.sessions.render({\n        session_id: session.id,\n        messages: [\n            {\n                role: \"user\",\n                content: \"Tell me about Julep\"\n            }\n        ],\n        recall: true\n    });\n    ```\n</CodeGroup>\n\n## Use Cases\n\n<CardGroup cols={2}>\n  <Card title=\"Template Debugging\" icon=\"bug\">\n    Test how your templates will be rendered with the current environment variables.\n  </Card>\n  <Card title=\"RAG Preview\" icon=\"magnifying-glass\">\n    Preview which documents will be retrieved for a given query.\n  </Card>\n  <Card title=\"Tool Configuration\" icon=\"wrench\">\n    Verify that tools are properly configured before sending to the model.\n  </Card>\n  <Card title=\"System Prompt Testing\" icon=\"terminal\">\n    Test how system prompts will be processed and combined with user messages.\n  </Card>\n</CardGroup>\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/advanced/secrets-management.mdx",
    "content": "---\ntitle: 'Secrets Management'\ndescription: 'Advanced techniques for managing sensitive information in Julep'\nicon: 'key'\n---\n\n# Secrets Management\n\nThis guide covers advanced topics for managing secrets in Julep, including security architecture, best practices, rotation policies, and integration patterns.\n\n## Security Architecture\n\nSecrets in Julep are stored with a layered security approach:\n\n1. **Application-level Validation**: Secrets are validated before being stored\n2. **Database Encryption**: Secrets are stored encrypted using PostgreSQL's pgcrypto extension with AES-256\n3. **Access Control**: Secrets are scoped to developers and only accessible within their resources\n4. **Master Key Security**: A separate master encryption key secures all stored secrets\n\nThe encryption process works as follows:\n- When a secret is created, its value is encrypted using the master key\n- The encrypted value is stored in the database's `value_encrypted` column\n- When a secret is accessed, the value is decrypted using the master key\n- The master key is stored as an environment variable, separate from the database\n\n## Creating Effective Secret Names\n\nSecrets should have descriptive names that follow these conventions:\n\n- Use snake_case formatting\n- Begin with a letter and contain only alphanumeric characters and underscores\n- Use a prefix to indicate the service (e.g., `aws_secret_key`, `stripe_api_key`)\n- Be specific enough to understand the purpose (e.g., `gmail_oauth_token` vs `email_token`)\n\n## Secret Rotation Best Practices\n\nRegular rotation of secrets is a security best practice:\n\n1. Create a new secret with a temporary name\n2. Update your services to use the new secret\n3. Once confirmed working, delete the old secret\n4. Update the new secret's name to the standard name\n\nFor automated rotation:\n\n```python [expandable]\nfrom julep import Julep\nimport uuid\n\nclient = Julep(api_key=\"your_api_key\")\n\n# Generate temporary name\ntemp_name = f\"stripe_key_rotation_{uuid.uuid4().hex[:8]}\"\n\n# Create new secret with temp name\nclient.secrets.create(\n    name=temp_name,\n    value=\"sk_new_value...\",\n    description=\"New Stripe API key (rotation)\",\n    metadata={\"rotation_date\": \"2025-05-10\"}\n)\n\n# Test the new key (implement your validation logic here)\n# ...\n\n# If valid, delete old secret and rename new one\nclient.secrets.delete(name=\"stripe_api_key\")\nclient.secrets.update(\n    name=temp_name,\n    new_name=\"stripe_api_key\",\n    description=\"Stripe API key\",\n    metadata={\"last_rotated\": \"2025-05-10\"}\n)\n```\n\n## Using Secrets with Different Tool Types\n\n### API Tools\n\nFor HTTP-based tools, reference secrets in the headers or authentication:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: api_service\n    operation: fetch_data\n    arguments:\n      url: \"https://api.example.com/data\"\n      headers:\n        Authorization: \"$ f'Bearer {secrets.api_token}'\"\n```\n\n### Database Connections\n\nFor database tools, use secrets for connection credentials:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: database\n    operation: query\n    arguments:\n      query: \"SELECT * FROM users LIMIT 10\"\n    secrets:\n      db_username: \"my_db_user\"\n      db_password: \"my_db_password\"\n```\n\n### AI Service Integration\n\nFor AI services that require API keys:\n\n```yaml\nsteps:\n  - kind: prompt\n    model: \"$ secrets.preferred_model\"\n    provider: \"$ secrets.provider_name\"\n    prompt: \"Generate creative ideas for a marketing campaign\"\n    api_key: \"$ secrets.openai_api_key\"\n```\n\n## Managing Secrets for Multi-Environment Deployments\n\nFor applications deployed across development, staging, and production environments:\n\n1. Use consistent naming conventions with environment prefixes:\n   - `dev_stripe_key`, `staging_stripe_key`, `prod_stripe_key`\n\n2. Use metadata to tag secrets by environment:\n   ```python\n   client.secrets.create(\n       name=\"stripe_api_key\",\n       value=\"sk_test_...\",\n       metadata={\"environment\": \"production\"}\n   )\n   ```\n\n3. Filter secrets by environment when listing:\n   ```python\n   prod_secrets = client.secrets.list(\n       metadata={\"environment\": \"production\"}\n   )\n   ```\n\n## Secret Templating\n\nFor complex configurations that require multiple secrets:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: database\n    operation: query\n    arguments:\n      connection_string: \"$ f'mongodb+srv://{secrets.db_username}:{secrets.db_password}@{secrets.db_host}/{secrets.db_name}'\"\n```\n\n## Securing LLM API Keys with Secrets\n\nJulep automatically looks for LLM API keys in your secrets store based on the provider name. Use these naming conventions for automatic lookup:\n\n| Provider | Secret Name |\n|----------|-------------|\n| OpenAI   | `OPENAI_API_KEY` |\n| Anthropic | `ANTHROPIC_API_KEY` |\n| Google   | `GOOGLE_API_KEY` |\n| Azure OpenAI | `AZURE_OPENAI_API_KEY` |\n| Cohere   | `COHERE_API_KEY` |\n\nExample of setting up an LLM API key:\n\n```python\nclient.secrets.create(\n    name=\"OPENAI_API_KEY\",\n    value=\"sk-...\",\n    description=\"OpenAI API key for GPT-4 access\"\n)\n```\n\n## Audit and Monitoring\n\nBest practices for security monitoring:\n\n1. Regularly audit secret access and usage\n2. Track changes to secrets via the `updated_at` timestamp\n3. Implement secret expiration for highly sensitive data\n4. Use metadata to track last review or rotation dates\n\nExample audit script:\n\n```python\nfrom julep import Julep\nfrom datetime import datetime, timedelta\n\nclient = Julep(api_key=\"your_api_key\")\n\n# Find secrets not rotated in over 90 days\nold_threshold = datetime.now() - timedelta(days=90)\nsecrets = client.secrets.list()\n\nfor secret in secrets.items:\n    if secret.updated_at < old_threshold:\n        print(f\"WARNING: Secret {secret.name} has not been rotated in over 90 days\")\n```\n\n## Troubleshooting\n\nCommon issues when working with secrets:\n\n1. **Secret Not Found**: Check that the secret name matches exactly, including case\n2. **Permission Errors**: Verify the developer ID has access to the secret\n3. **Encryption Errors**: Ensure the master key is correctly set in the environment\n4. **Reference Errors**: Ensure the secret reference syntax is correct in expressions and templates\n\n## Next Steps\n\n- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets\n- [Integration Patterns](/guides/advanced/integration-patterns) - Learn how to use secrets with integrations\n- [API Reference](/api-reference#tag/secrets) - Complete API reference for secrets"
  },
  {
    "path": "documentation/advanced/system-templates.mdx",
    "content": "---\ntitle: System Templates\ndescription: Learn how to use Jinja2 templates to create dynamic system prompts for your AI agents\nicon: code-merge\n---\n\n<Info>\nSystem templates allow you to create dynamic, context-aware prompts for your AI agents using Jinja2 templating. This guide covers everything you need to know about creating and customizing system templates.\n</Info>\n\n## Overview\n\nSystem templates in Julep are **Jinja2 templates** that define the initial system prompt for your AI agents. They allow you to:\n\n- Create dynamic prompts that adapt based on context\n- Include user information, session data, and other variables\n- Implement conditional logic for different scenarios\n- Maintain consistency across agent interactions\n- Inject custom metadata at the message level for dynamic behavior\n\n## Template Hierarchy\n\nJulep uses a three-level hierarchy for system templates:\n\n1. **Agent Default Template**: Defined when creating an agent\n2. **Session Template**: Can override the agent's default template for specific sessions\n3. **Chat Metadata**: Can inject dynamic variables at the individual message level\n\n<Note>\nThe session template takes precedence over the agent's default template. Chat metadata is available in both cases.\n</Note>\n\n## Default System Template\n\nWhen you create an agent without specifying a custom template, Julep uses this default template:\n\n```jinja\n{%- if agent.name -%}\nYou are {{agent.name}}.{{\" \"}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{\" \"}}\n{%- endif -%}\n\n{%- if user.name -%}\nYou are talking to {{user.name}}.{{\" \"}}\n{%- endif -%}\n\n{%- if user.about -%}\nAbout the user: {{user.about}}.{{\" \"}}\n{%- endif -%}\n\n{{agent.instructions}}\n\n{%- if tools -%}\nYou have access to these tools:\n{%- for tool in tools -%}\n{%- if tool.type == \"function\" -%}\n- {{tool.function.name}}\n{%- if tool.function.description -%}: {{tool.function.description}}{%- endif -%}\n{%- else -%}\n- {{ 0/0 }} {# Error: Other tool types aren't supported yet #}\n{%- endif -%}\n{%- endfor -%}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:\n{%- for doc in docs -%}\n{{doc.title}}\n{%- if doc.content -%}:\n<document>\n{{doc.content}}\n</document>\n{%- endif -%}\n{%- endfor -%}\n{%- endif -%}\n```\n\n## Template Variables\n\nThe following variables are available in your system templates:\n\n### Core Variables\n\n| Variable | Type | Description |\n|----------|------|-------------|\n| `agent` | Object | The agent's configuration and details |\n| `agent.name` | String | The agent's name |\n| `agent.about` | String | Description of the agent |\n| `agent.instructions` | Array/String | Agent's instructions |\n| `user` | Object | Information about the current user |\n| `user.name` | String | The user's name |\n| `user.about` | String | Description of the user |\n| `session` | Object | Current session information |\n| `session.situation` | String | The session's context/situation |\n\n### Dynamic Variables\n\n| Variable | Type | Description |\n|----------|------|-------------|\n| `tools` | Array | Available tools for the agent |\n| `docs` | Array | Relevant documents from searches |\n| `metadata` | Object | Custom metadata passed in chat requests |\n\n## Creating Custom Templates\n\n### Basic Example\n\nHere's a simple custom template for a customer service agent:\n\n<CodeGroup>\n\n```python python\nagent = client.agents.create(\n    name=\"Customer Support Agent\",\n    model=\"gpt-4\",\n    about=\"A helpful customer service representative\",\n    instructions=[\n        \"Be polite and professional\",\n        \"Always offer to help further\"\n    ],\n    default_system_template=\"\"\"\nYou are {{agent.name}}, a customer service representative.\n\n{%- if metadata.priority == \"high\" -%}\n⚠️ HIGH PRIORITY CUSTOMER - Provide expedited service\n{%- endif -%}\n\n{%- if metadata.customer_tier == \"premium\" -%}\nPremium customer - Offer enhanced support options\n{%- endif -%}\n\nYour guidelines:\n{{agent.instructions}}\n\n{%- if user.name -%}\nCustomer name: {{user.name}}\n{%- endif -%}\n\"\"\"\n)\n```\n\n```javascript javascript\nconst agent = await client.agents.create({\n  name: \"Customer Support Agent\",\n  model: \"gpt-4\",\n  about: \"A helpful customer service representative\",\n  instructions: [\n    \"Be polite and professional\",\n    \"Always offer to help further\"\n  ],\n  default_system_template: `\nYou are {{agent.name}}, a customer service representative.\n\n{%- if metadata.priority == \"high\" -%}\n⚠️ HIGH PRIORITY CUSTOMER - Provide expedited service\n{%- endif -%}\n\n{%- if metadata.customer_tier == \"premium\" -%}\nPremium customer - Offer enhanced support options\n{%- endif -%}\n\nYour guidelines:\n{{agent.instructions}}\n\n{%- if user.name -%}\nCustomer name: {{user.name}}\n{%- endif -%}\n`\n});\n```\n\n</CodeGroup>\n\n### Advanced Example with Conditional Logic\n\n<CodeGroup>\n\n```python python\ntemplate = \"\"\"\n{%- if agent.name -%}\nYou are {{agent.name}}.\n{%- endif -%}\n\n{# Mood-based personality adjustment #}\n{%- if metadata.mood == \"friendly\" -%}\nBe warm, conversational, and use a friendly tone.\n{%- elif metadata.mood == \"professional\" -%}\nMaintain a formal, business-appropriate tone.\n{%- elif metadata.mood == \"playful\" -%}\nFeel free to be creative and add appropriate humor.\n{%- else -%}\nRespond in a balanced, helpful manner.\n{%- endif -%}\n\n{# Language preferences #}\n{%- if metadata.language -%}\nRespond in {{metadata.language}}.\n{%- endif -%}\n\n{# Expertise areas #}\n{%- if metadata.expertise -%}\nYou are an expert in:\n{%- for skill in metadata.expertise -%}\n- {{skill}}\n{%- endfor -%}\n{%- endif -%}\n\n{# Include instructions #}\n{{agent.instructions}}\n\n{# Tool availability #}\n{%- if tools -%}\nAvailable tools:\n{%- for tool in tools -%}\n- {{tool.function.name}}: {{tool.function.description}}\n{%- endfor -%}\n{%- endif -%}\n\"\"\"\n\n# Using the template with metadata\nresponse = client.sessions.chat(\n    session_id=session.id,\n    messages=[\n        {\"role\": \"user\", \"content\": \"Help me with Python\"}\n    ],\n    metadata={\n        \"mood\": \"friendly\",\n        \"language\": \"English\",\n        \"expertise\": [\"Python\", \"Machine Learning\", \"Data Science\"]\n    }\n)\n```\n\n```javascript javascript\nconst template = `\n{%- if agent.name -%}\nYou are {{agent.name}}.\n{%- endif -%}\n\n{# Mood-based personality adjustment #}\n{%- if metadata.mood == \"friendly\" -%}\nBe warm, conversational, and use a friendly tone.\n{%- elif metadata.mood == \"professional\" -%}\nMaintain a formal, business-appropriate tone.\n{%- elif metadata.mood == \"playful\" -%}\nFeel free to be creative and add appropriate humor.\n{%- else -%}\nRespond in a balanced, helpful manner.\n{%- endif -%}\n\n{# Language preferences #}\n{%- if metadata.language -%}\nRespond in {{metadata.language}}.\n{%- endif -%}\n\n{# Expertise areas #}\n{%- if metadata.expertise -%}\nYou are an expert in:\n{%- for skill in metadata.expertise -%}\n- {{skill}}\n{%- endfor -%}\n{%- endif -%}\n\n{# Include instructions #}\n{{agent.instructions}}\n\n{# Tool availability #}\n{%- if tools -%}\nAvailable tools:\n{%- for tool in tools -%}\n- {{tool.function.name}}: {{tool.function.description}}\n{%- endfor -%}\n{%- endif -%}\n`;\n\n// Using the template with metadata\nconst response = await client.sessions.chat({\n  sessionId: session.id,\n  messages: [\n    { role: \"user\", content: \"Help me with Python\" }\n  ],\n  metadata: {\n    mood: \"friendly\",\n    language: \"English\",\n    expertise: [\"Python\", \"Machine Learning\", \"Data Science\"]\n  }\n});\n```\n\n</CodeGroup>\n\n## Using Chat Metadata\n\nThe `metadata` field in chat requests allows you to pass dynamic variables that can be used in your system templates. This enables message-level customization without modifying the agent or session.\n\n### Example: Dynamic Instructions\n\n<CodeGroup>\n\n```python python\n# Create an agent with a metadata-aware template\nagent = client.agents.create(\n    name=\"Adaptive Assistant\",\n    default_system_template=\"\"\"\nYou are {{agent.name}}.\n\n{%- if metadata.instructions -%}\nSpecial instructions for this conversation:\n{{metadata.instructions}}\n{%- endif -%}\n\n{%- if metadata.constraints -%}\nImportant constraints:\n{%- for constraint in metadata.constraints -%}\n- {{constraint}}\n{%- endfor -%}\n{%- endif -%}\n\"\"\"\n)\n\n# Use metadata to modify behavior per message\nresponse = client.sessions.chat(\n    session_id=session.id,\n    messages=[{\"role\": \"user\", \"content\": \"Write a story\"}],\n    metadata={\n        \"instructions\": \"Write in the style of Edgar Allan Poe\",\n        \"constraints\": [\n            \"Keep it under 200 words\",\n            \"Include a raven\",\n            \"End with a twist\"\n        ]\n    }\n)\n```\n\n```javascript javascript\n// Create an agent with a metadata-aware template\nconst agent = await client.agents.create({\n  name: \"Adaptive Assistant\",\n  default_system_template: `\nYou are {{agent.name}}.\n\n{%- if metadata.instructions -%}\nSpecial instructions for this conversation:\n{{metadata.instructions}}\n{%- endif -%}\n\n{%- if metadata.constraints -%}\nImportant constraints:\n{%- for constraint in metadata.constraints -%}\n- {{constraint}}\n{%- endfor -%}\n{%- endif -%}\n`\n});\n\n// Use metadata to modify behavior per message\nconst response = await client.sessions.chat({\n  sessionId: session.id,\n  messages: [{ role: \"user\", content: \"Write a story\" }],\n  metadata: {\n    instructions: \"Write in the style of Edgar Allan Poe\",\n    constraints: [\n      \"Keep it under 200 words\",\n      \"Include a raven\",\n      \"End with a twist\"\n    ]\n  }\n});\n```\n\n</CodeGroup>\n\n## Session vs Agent Templates\n\nYou can override an agent's default template at the session level:\n\n<CodeGroup>\n\n```python python\n# Agent with default template\nagent = client.agents.create(\n    name=\"Multi-purpose Assistant\",\n    default_system_template=\"You are a helpful assistant.\"\n)\n\n# Session with custom template\nsession = client.sessions.create(\n    agent_id=agent.id,\n    system_template=\"\"\"\nYou are a technical writing assistant.\nFocus on clarity, accuracy, and proper documentation structure.\n{%- if metadata.doc_type -%}\nYou are writing a {{metadata.doc_type}}.\n{%- endif -%}\n\"\"\"\n)\n```\n\n```javascript javascript\n// Agent with default template\nconst agent = await client.agents.create({\n  name: \"Multi-purpose Assistant\",\n  default_system_template: \"You are a helpful assistant.\"\n});\n\n// Session with custom template\nconst session = await client.sessions.create({\n  agentId: agent.id,\n  system_template: `\nYou are a technical writing assistant.\nFocus on clarity, accuracy, and proper documentation structure.\n{%- if metadata.doc_type -%}\nYou are writing a {{metadata.doc_type}}.\n{%- endif -%}\n`\n});\n```\n\n</CodeGroup>\n\n<Tip>\nUse session templates when you need different behavior for the same agent in different contexts (e.g., customer service vs internal support).\n</Tip>\n\n## Jinja2 Features\n\nSystem templates support the full range of Jinja2 features:\n\n### Conditionals\n\n```jinja\n{%- if user.subscription_level == \"premium\" -%}\nYou have access to advanced features.\n{%- elif user.subscription_level == \"basic\" -%}\nSome features may be limited.\n{%- else -%}\nWelcome! Consider upgrading for more features.\n{%- endif -%}\n```\n\n### Loops\n\n```jinja\n{%- if metadata.topics -%}\nFocus on these topics:\n{%- for topic in metadata.topics -%}\n- {{topic}}\n{%- endfor -%}\n{%- endif -%}\n```\n\n### Filters\n\n```jinja\nAgent name in uppercase: {{agent.name|upper}}\nWord count limit: {{metadata.word_limit|default(500)}}\n```\n\n### Comments\n\n```jinja\n{# This is a comment and won't appear in the output #}\n```\n\n## Best Practices\n\n<Accordion title=\"1. Keep Templates Focused\">\nAvoid overly complex templates. If your template is becoming too large, consider breaking the logic into different agents or sessions.\n</Accordion>\n\n<Accordion title=\"2. Use Meaningful Variable Names\">\nWhen using metadata, choose clear, descriptive keys:\n- ✅ `metadata.customer_tier`\n- ❌ `metadata.ct`\n</Accordion>\n\n<Accordion title=\"3. Provide Fallbacks\">\nAlways handle cases where variables might be missing:\n```jinja\n{{metadata.language|default(\"English\")}}\n```\n</Accordion>\n\n<Accordion title=\"4. Test Template Rendering\">\nTest your templates with various metadata combinations to ensure they render correctly in all scenarios.\n</Accordion>\n\n## Common Patterns\n\n### Multi-language Support\n\n```jinja\n{%- if metadata.language == \"es\" -%}\nEres un asistente útil. Responde en español.\n{%- elif metadata.language == \"fr\" -%}\nVous êtes un assistant utile. Répondez en français.\n{%- else -%}\nYou are a helpful assistant. Respond in English.\n{%- endif -%}\n```\n\n### Role-based Access\n\n```jinja\n{%- if metadata.user_role == \"admin\" -%}\nYou have full access to all operations and sensitive information.\n{%- elif metadata.user_role == \"user\" -%}\nProvide general assistance. Do not share sensitive information.\n{%- endif -%}\n```\n\n### Context-aware Behavior\n\n```jinja\n{%- if metadata.context == \"code_review\" -%}\nFocus on code quality, security issues, and best practices.\n{%- elif metadata.context == \"debugging\" -%}\nHelp identify and fix issues. Ask clarifying questions.\n{%- elif metadata.context == \"learning\" -%}\nExplain concepts clearly with examples. Be patient and thorough.\n{%- endif -%}\n```\n\n## Debugging Templates\n\nTo debug template rendering issues:\n\n1. **Check Variable Availability**: Ensure all referenced variables exist\n2. **Validate Jinja2 Syntax**: Use a Jinja2 linter or validator\n3. **Test Incrementally**: Add template features one at a time\n4. **Use the Render Endpoint**: Test template rendering without making chat requests\n\n<CodeGroup>\n\n```python python\n# Test template rendering\nrender_result = client.sessions.render(\n    session_id=session.id,\n    messages=[{\"role\": \"user\", \"content\": \"Test\"}],\n    metadata={\"test_var\": \"test_value\"}\n)\n\n# Inspect the rendered system message\nprint(render_result.messages[0][\"content\"])\n```\n\n```javascript javascript\n// Test template rendering\nconst renderResult = await client.sessions.render({\n  sessionId: session.id,\n  messages: [{ role: \"user\", content: \"Test\" }],\n  metadata: { test_var: \"test_value\" }\n});\n\n// Inspect the rendered system message\nconsole.log(renderResult.messages[0].content);\n```\n\n</CodeGroup>\n\n## Related Topics\n\n- [Agents](/concepts/agents) - Learn more about agent configuration\n- [Sessions](/concepts/sessions) - Understand session management\n- [Tasks](/concepts/tasks) - Create complex workflows with templates\n- [Tool Integration](/integrations/tools) - Add tools referenced in templates\n\n<Note>\nSystem templates are rendered server-side before being sent to the language model. This ensures security and consistency across all API clients.\n</Note>"
  },
  {
    "path": "documentation/advanced/types-of-task-steps.mdx",
    "content": "---\ntitle: 'Types of Task Steps'\ndescription: 'Learn about different types of task steps and their use'\nicon: 'stairs'\n---\n\n## Overview\nIn Julep broadly speaking there are two types of steps:\n\n<CardGroup cols={2}>\n  <Card title=\"Control Flow Steps\" icon=\"code-branch\" href=\"#control-flow-steps\">\n    <p>These steps control the flow of the task. They are used to create conditional logic, loops, and parallel execution.</p>\n  </Card>\n\n  <Card title=\"Key-Value Steps\" icon=\"database\" href=\"#key-value-steps\">\n    <p>These steps are used to get and set values in the task.</p>\n  </Card>\n\n  <Card title=\"Iteration Steps\" icon=\"arrows-spin\" href=\"#iteration-steps\">\n    <p>These steps are used to iterate over a collection.</p>\n  </Card>\n\n  <Card title=\"Conditional Steps\" icon=\"code-branch\" href=\"#conditional-steps\">\n    <p>These steps are used to create conditional logic.</p>\n  </Card>\n\n  <Card title=\"Other Control Flow Steps\" icon=\"code-branch\" href=\"#other-control-flow\">\n    <p>These steps are used to control the flow of the task.</p>\n  </Card> \n\n</CardGroup>\n\n<Note>\n  The steps defined out here are in the YAML format. You can learn more about the YAML format [here](https://yaml.org/spec/1.2.2/).\n</Note>\n\n## Control Flow Steps\n\n### Prompt Step\n\nSend messages to the AI model:\n\n```yaml YAML\n# Simple prompt\n- prompt: What is your name?\n\n# Multi-message prompt\n- prompt:\n    - role: system\n      content: You are a helpful assistant\n    - role: user\n      content: \"Hello!\"\n\n# Prompt with settings\n- prompt:\n    - role: user\n      content: Generate a creative story\n  settings:\n    model: \"claude-3.5-sonnet\"\n    temperature: 0.8\n\n# Prompt with automatic tool execution\n- prompt: What's the weather in San Francisco?\n  auto_run_tools: true  # Tools execute automatically if needed\n\n# Prompt with JSON response format\n- prompt:\n    - role: system\n      content: You are a helpful assistant that always responds in JSON format.\n    - role: user\n      content: List 3 interesting facts about space. Format as JSON with 'facts' array.\n  settings:\n    model: \"gpt-4o-mini\"\n    temperature: 0.7\n    response_format:\n      type: json_object\n\n# Prompt with JSON schema for structured output\n- prompt:\n    - role: system\n      content: You are a data extraction specialist.\n    - role: user\n      content: Extract product information from the description.\n  settings:\n    response_format:\n      type: json_schema\n      json_schema:\n        name: product_info\n        schema:\n          type: object\n          properties:\n            product_name:\n              type: string\n            features:\n              type: array\n              items:\n                type: string\n            price:\n              type: number\n          required: [\"product_name\", \"features\", \"price\"]\n```\n\n<Note>\nWhen `auto_run_tools` is set to `true` in a prompt step, any tools available to the agent will be automatically executed if the model decides to use them. The results are then fed back to the model to continue processing. This is particularly useful for creating autonomous workflows where the agent can gather information and make decisions without manual intervention.\n</Note>\n\n<Note>\nThe `response_format` setting allows you to request structured output from the model. There are two main options:\n- `type: json_object` - Ensures the model responds with valid JSON\n- `type: json_schema` - Enforces a specific JSON structure defined by a schema\n\nWhen using `response_format`, make sure to instruct the model to produce JSON in your prompt (via system or user message) for best results. Response format support varies by model provider - check the [supported models documentation](/integrations/supported-models) for compatibility.\n</Note>\n<Info>\nIn the prompt step we offer a bunch of Python functions to help you manipulate data. Here is a list of the functions you can use:\n\n- Standard library modules:\n  - `re`: Regular expressions (safe against ReDoS)\n  - `json`: JSON encoding/decoding\n  - `yaml`: YAML parsing/dumping\n  - `string`: String constants and operations\n  - `datetime`: Date and time operations\n  - `math`: Mathematical functions\n  - `statistics`: Statistical operations\n  - `base64`: Base64 encoding/decoding\n  - `urllib`: URL parsing operations\n  - `random`: Random number generation\n  - `time`: Time operations\n\n- Constants:\n  - `NEWLINE`: Newline character\n  - `true`: Boolean true\n  - `false`: Boolean false\n  - `null`: None value\n\n</Info>\n\n### Tool Call Step\n\nExecute tools defined in the task:\n\n```yaml YAML\n# Simple tool call\n- tool: web_search\n  arguments:\n    query: Latest AI news\n\n# Tool call with complex arguments\n- tool: process_data\n  arguments:\n    input_data: $ _.previous_result\n    options:\n      format: \"json\"\n      validate: true\n```\n\n### Evaluate Step\n\nPerform calculations or data manipulation:\n\n```yaml YAML\n# Simple evaluation\n- evaluate:\n    count: $ len(_.results)\n\n# Multiple evaluations\n- evaluate:\n    total: $ sum(_.numbers)\n    average: $ _.total / len(_.numbers)\n    formatted: $ f'Average: {_.average:.2f}'\n```\n\n<Info>\nIn the evaluate step we offer a bunch of Python functions to help you manipulate data. Check out the [Python Expressions](/advanced/python-expression#available-functions-and-libraries) for more information.\n\n</Info>\n\n### Wait for Input Step\n\nPause workflow for user input:\n\n```yaml YAML\n# Simple input request\n- wait_for_input:\n    info:\n      message: \"Please provide your name\"\n\n# Input with validation\n- wait_for_input:\n    info:\n      message: \"Enter your age\"\n      validation:\n        type: \"number\"\n        minimum: 0\n        maximum: 150\n```\n\n### Subworkflow Step\n\nExecuting a subworkflow from a main workflow:\n\n```yaml YAML [expandable]\n# Subworkflow\nsubworkflow:\n- evaluate:\n    main_workflow_input: $ _.content # you can use steps[0].input.content to access the input of the subworkflow\n- return:\n    result: \"This is the subworkflow\"\n\n# Main workflow\nmain:\n# Step 0: Evaluate step\n- evaluate:\n    result: \"This is the main workflow\"\n\n# Step 1: Call the subworkflow\n- workflow: subworkflow # name of the subworkflow\n  arguments: # input to the subworkflow\n    content: $ _.result # you can use steps[0].output.result to access the result of the previous step\n\n# Step 2: Evaluate step\n- evaluate:\n    subworkflow_result: $ steps[1].output.result # this will be the result of the subworkflow\n``` \n\n<Note>\n- The `arguments` passed from the main workflow to the subworkflow are available in the `steps[0].input` of the subworkflow.\n- The `result` of the subworkflow is available in the `steps[1].output.result` of the main workflow.\n- The `Input/Output Data References` between steps is exclusive to the workflow they are defined in. \n  A workflow cannot reference the `input` or `output` of another workflow between the steps. To learn more about `Input/Output Data References` [click here](/advanced/new-syntax#1-input-output-data-references).\n</Note>\n\n<Info>\n  Self recursion is allowed in a subworkflow but not in a main workflow.\n</Info>\n\n## Key-Value Steps\n\n### Get Step\n\nRetrieve values from storage:\n\n```yaml YAML\n# Get a single value\n- get: user_preference\n\n# Get multiple values\n- get:\n    - preference1\n    - preference2\n```\n\n### Set Step\n\nStore values for later use:\n\n```yaml YAML\n# Set a single value\n- set:\n    user_name: John\n\n# Set multiple values\n- set:\n    count: $ len(_.results)\n    has_data: $ _.count > 0\n```\n\nValues stored using the set step are added to the workflow's global `state` object, which can be accessed anywhere in the workflow using `state.variable_name`. For example:\n```yaml YAML\n# Access previously set values\n- evaluate:\n    greeting: $ f\"Hello, {state.user_name}!\"\n    data_status: $ f\"Has data: {state.has_data}, Count: {state.count}\"\n```\n\n<Note>\n  Each subworkflow has its own isolated `state` object. Values set in one subworkflow are not accessible from other subworkflows or the parent workflow.\n</Note>\n\n### Label Step\n\nLabel a step to make it easier to identify and access those values later in any step:\n\n```yaml YAML\n# Step 0: Set a single value\n- set:\n    user_name: John\n  label: get_user_name\n\n# Step 1: Set multiple values\n- set:\n    count: $ len(_.results)\n    has_data: $ _.count > 0\n  label: get_count_and_has_data\n```\n\nIn any steps following the label step, you can access the values set in the label step using the `$ steps['label_name'].input.attribute_name` or `$ steps['label_name'].output.attribute_name` syntax. For example:\n\n```yaml YAML\n- evaluate:\n    user_name: $ steps['get_user_name'].output.user_name\n- evaluate:\n    count: $ steps['get_count_and_has_data'].output.count\n    has_data: $ steps['get_count_and_has_data'].output.has_data\n```\n## Iteration Steps\n\n### Foreach Step\n\nIterate over a collection:\n\n```yaml YAML\n# Simple foreach\n- foreach:\n    in: $ _.items\n    do:\n      log: $ f'Processing {_}'\n\n# Foreach with complex processing\n- foreach:\n    in: $ _.documents\n    do:\n      tool: analyze\n      arguments:\n        text: $ _.content\n      evaluate:\n        results: $ _ + [_.analysis]\n```\n\n### Map-Reduce Step\n\nProcess collections in parallel:\n\n```yaml YAML\n# Simple map-reduce\n- over: $ _.urls\n  map:\n    tool: fetch_content\n    arguments:\n      url: $ _\n  reduce: $ results + [_]\n\n# Map-reduce with parallelism\n- over: $ _.queries\n  map:\n    tool: web_search\n    arguments:\n      query: $ _\n  parallelism: 5 # Number of parallel steps to execute\n```\n\n<Note>\n  - By default the `parallelism` if not mentioned is 100. If mentioned, it is the maximum number of steps that can run in parallel concurrently.\n  - When using `over` step, the `map` step is executed for each value in the collection.\n  - The `reduce` step is executed after the `map` step.\n</Note>\n\n## Conditional Steps\n\n### If-Else Step\n\nConditional execution:\n\n```yaml YAML [expandable]\n# Simple if\n- if: $ _.count > 0\n  then:\n    log: Found results\n\n# If-else\n- if: $ _.score > 0.8\n  then:\n    log: High score\n  else:\n    log: Low score\n\n# If-else with multiple conditions\n- if: $ 1 > 0\n  then:\n    if: $ 2 > 1\n    then:\n      evaluate:\n        x: y\n  else:\n    evaluate:\n      x: z\n```\n\n### Switch Step\n\nMultiple condition handling:\n\n```yaml YAML\n# Switch statement\n- switch:\n    - case: $ _.category == \"A\"\n      then:\n        - log: Category A\n    - case: $ _.category == \"B\"\n      then:\n        - log: Category B\n    - case: $ _  # Default case\n      then:\n        - log: Unknown category\n```\n\n## Other Control Flow\n\n### Sleep Step\n\nPause execution:\n\n```yaml YAML\n# Sleep for duration\n- sleep:\n    seconds: 30\n\n# Sleep with different units\n- sleep:\n    minutes: 5\n    # hours: 1\n    # days: 1\n```\n\n### Return Step\n\nReturn values from workflow:\n\n```yaml YAML\n# Simple return\n- return: $ _.result\n\n# Structured return\n- return:\n    data: $ _.processed_data\n    metadata:\n      count: $ _.count\n      timestamp: $ datetime.now().isoformat()\n```\n\n### Log Step\n\nLog messages or specific values:\n\n```yaml YAML\n- log: $ f'Processing completed for item {item_id}'\n```\n\n### Error Step\n\nHandle errors by specifying an error message:\n\n```yaml YAML\n- error: Invalid input provided\n```\n\n## Example: Complex Workflow\n\nHere's an example combining various step types:\n\n```yaml YAML [expandable]\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Multi-Step Task Demonstration\ndescription: A demonstration of multi-step task processing with research and summarization capabilities.\n\n################################################################################\n############################# INPUT SCHEMA #####################################\n################################################################################\ninput_schema:\n  type: object\n  properties:\n    topic:\n      type: string\n      description: The topic to research and summarize.\n\n################################################################################\n############################# TOOLS ############################################\n################################################################################\n\n# Describing the tools that will be used in the workflow\ntools:\n- name: web_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: \"YOUR_BRAVE_API_KEY\"\n\n################################################################################\n############################# MAIN WORKFLOW ####################################\n################################################################################\nmain:\n# Step 0: Generate initial research questions\n- prompt:\n  - role: system\n    content: >-\n      $ f'''\n      You are a research assistant. Your task is to formulate three specific research questions about the given topic: {steps[0].input.topic}'''\n  unwrap: true\n\n# Step 1: Web search for each question\n- foreach:\n    in: $ _.split('\\\\n')\n    do:\n      tool: web_search\n      arguments:\n        query: $ _\n\n# Step 2: Extract relevant information\n- evaluate:\n    relevant_info: $ [output for output in _]\n\n# Step 3: Process and summarize information\n- if: $ len(_.relevant_info) >= 3\n  then:\n      prompt:\n      - role: system\n        content: >-\n          $ f'''\n          Summarize the following information about {steps[0].input.topic}:\n          {_.relevant_info}'''\n      unwrap: true\n  else:\n      prompt:\n      - role: system\n        content: >-\n          $ f'''\n          Not enough information gathered. Please provide a brief overview of {steps[0].input.topic} based on your knowledge.'''\n      unwrap: true\n\n# Step 4: Record the summary\n- log: >-\n    $ f'''\n    Summary for {steps[0].input.topic}: {_}'''\n\n# Step 5: Prepare final output\n- return: \n    summary: $ _\n    topic: $ steps[0].input.topic\n```\n\n## Best Practices\n\n<CardGroup cols={3}>\n  <Card title=\"Step Organization\" icon=\"folder-tree\">\n    <ul>\n      <li>Group related steps logically</li>\n      <li>Use comments to explain complex steps</li>\n      <li>Keep step chains focused and manageable</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Error Handling\" icon=\"shield-exclamation\">\n    <ul>\n      <li>Use if-else for error conditions</li>\n      <li>Provide fallback options</li>\n      <li>Log important state changes</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Performance\" icon=\"gauge-high\">\n    <ul>\n      <li>Use parallel execution when possible</li>\n      <li>Optimize data passing between steps</li>\n      <li>Cache frequently used values</li>\n    </ul>\n  </Card>\n</CardGroup>\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/concepts/agents.mdx",
    "content": "---\ntitle: 'Agents'\ndescription: 'Understanding Julep Agents and their capabilities'\nicon: 'lightbulb'\n---\n\n## Overview\n\nAgents are conceptual entities that encapsulate all the configurations and settings of an LLM, enabling it to adopt unique personas and execute distinct tasks within an application.\n\n## Components\n\nAgents are made up of several components. Think of components as the building blocks of an agent required to perform a task. Here are the key components associated with an agent:\n\n - Instructions - Agent configuration that can be provided as either a single string or an array of strings. \n - Metadata - Key-value pair that can be used to categorize and filter agents.\n - Tools - Functions that can be used by an agent to perform tasks. Julep supports a wide range of tools, including custom tools, which are functions that can be used by an agent to perform tasks.\n - Docs - A collection of documents that can be used by an agent to retrieve information. Docs can be associated with an agent and can be used to retrieve or search information from the agent's context.\n\n### Agent Configuration Options\n\nWhen creating an agent, you can leverage the following configuration options:\n\n| Option                  | Type                  | Description                                                                 | Default     |\n|-------------------------|-----------------------|-----------------------------------------------------------------------------|-------------|\n| `name`                  | `string`                | The name of your agent                                                      | Required    |\n| `canonical_name`        | `string`                | A unique identifier for your agent, following the pattern `[a-zA-Z][a-zA-Z0-9_]*` | `null`  |\n| `project`               | `string`                | The canonical name of the project this agent belongs to                     | `\"default\"` |\n| `about`                 | `string`                | A brief description of what your agent does                                 | `\"\"`        |\n| `model`                 | `string`                | The language model your agent uses (e.g., \"gpt-4-turbo\", \"gemini-nano\")     | `\"\"`        |\n| `instructions`          | `string` \\| `list[string]`| Specific tasks or behaviors expected from the agent                         | `[]`        |\n| `metadata`              | `object`                | Key-value pairs for additional information about your agent                 | `null`      |\n| `default_settings`      | `object`                | Default configuration settings for the agent. See [supported parameters](/integrations/supported-models#supported-parameters) for details. | `null` |\n| `default_system_template` | `string`              | Default system template for all sessions created by this agent. | See [default system template](/concepts/agents#default-system-template) |\n\n<Info>\nThe **System Template** is a specific system prompt written as a Jinja template that sets the foundational context and instructions for the agent within a session. It defines the background, directives, and any relevant information that the agent should consider when interacting with the user. \n\nFor a comprehensive guide on system templates including available variables, customization options, and advanced usage patterns, see the [System Templates](/advanced/system-templates) documentation. For more details on Jinja templates, refer to the [Jinja documentation](https://jinja.palletsprojects.com/).\n<Accordion title=\"Default System Template\" icon=\"template\">\n```python Python [expandable]\n{%- if agent.name -%}\nYou are {{ agent.name }}.\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{ agent.about }}.\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n  {%- if user.name -%}\n    and their name is {{ user.name }}\n    {%- if user.about -%}\n      . About the user: {{ user.about }}.\n    {%- else -%}\n      .\n    {%- endif -%}\n  {%- endif -%}\n{%- endif -%}\n\n{{ NEWLINE }}\n\n{%- if session.situation -%}\nSituation: {{ session.situation }}\n{%- endif -%}\n\n{{ NEWLINE + NEWLINE }}\n\n{%- if agent.instructions -%}\nInstructions:\n  {%- if agent.instructions is string -%}\n    {{ agent.instructions }}\n  {%- else -%}\n    {%- for instruction in agent.instructions -%}\n      - {{ instruction }}\n    {%- endfor -%}\n  {%- endif -%}\n{{ NEWLINE }}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:\n  {%- for doc in docs -%}\n    {{ doc.title }}\n    {%- if doc.content is string -%}\n      {{ doc.content }}\n    {%- else -%}\n      {%- for snippet in doc.content -%}\n        {{ snippet }}\n      {%- endfor -%}\n    {%- endif -%}\n    ---\n  {%- endfor -%}\n{%- endif -%}\n```\n</Accordion>\n</Info>\n\n## How to Use Agents\n\nIn Julep, how you use agents is very important. The YAML below shows the anatomy of an agent.\n\n\n```yaml YAML\nname: \"My Agent\"\nmodel: \"claude-3.5-sonnet\"\nproject: \"data-analytics\"\nabout: \"A helpful AI assistant that specializes in data analysis\"\ninstructions: \"You are a helpful AI assistant that specializes in data analysis\"\nmetadata:\n  type: \"data-analysis\"\ntools:\n  - name: \"calculate_total\"\n    description: \"Calculate the total of a list of numbers\"\n    function:\n      parameters:\n        type: \"object\"\n        properties:\n          numbers:\n            type: \"array\"\n            items:\n              type: \"number\"\n```\n\n### Creating an Agent\n\nTo create an agent, you can use the `create` method in the Python or Node.js SDK.\n\n<CodeGroup>\n  ```python Python\n  from julep import Julep\n\n  client = Julep(api_key=\"your_api_key\")\n\n  agent = client.agents.create(\n    name=\"My Agent\",\n    model=\"claude-3.5-sonnet\",\n    about=\"A helpful AI assistant that specializes in data analysis\",\n    instructions=\"You are a helpful AI assistant that specializes in data analysis\",\n    metadata={\"type\": \"data-analysis\"},\n    tools=[\n      {\n        \"name\": \"calculate_total\",\n        \"description\": \"Calculate the total of a list of numbers\",\n        \"function\": {\n          \"parameters\": {\"type\": \"object\", \"properties\": {\"numbers\": {\"type\": \"array\", \"items\": {\"type\": \"number\"}}}}\n        }\n      }\n    ]\n  )\n  ```\n\n  ```javascript Node.js\n  import { Julep } from '@julep/sdk';\n\n  const client = new Julep({ apiKey: 'your_api_key' });\n\n  const agent = await client.agents.create({\n    name: \"My Agent\",\n    model: \"claude-3.5-sonnet\",\n    about: \"A helpful AI assistant that specializes in data analysis\",\n    instructions: \"You are a helpful AI assistant that specializes in data analysis\",\n    metadata: {\"type\": \"data-analysis\"},\n    tools: [\n      {\n        \"name\": \"calculate_total\",\n        \"description\": \"Calculate the total of a list of numbers\",\n        \"function\": {\n          \"parameters\": {\"type\": \"object\", \"properties\": {\"numbers\": {\"type\": \"array\", \"items\": {\"type\": \"number\"}}}}\n        }\n      }\n    ]\n  });\n  ```\n</CodeGroup>\n\n### Using default_settings with response_format\n\nYou can configure your agent to always return structured JSON responses by setting `response_format` in the `default_settings`:\n\n<CodeGroup>\n  ```python Python\n  agent = client.agents.create(\n    name=\"Data Analyst\",\n    model=\"gpt-4o-mini\",\n    about=\"An agent that analyzes data and returns structured insights\",\n    instructions=\"Always provide analysis results in a structured format\",\n    default_settings={\n      \"temperature\": 0.3,\n      \"response_format\": {\n        \"type\": \"json_object\"\n      }\n    }\n  )\n  ```\n\n  ```javascript Node.js\n  const agent = await client.agents.create({\n    name: \"Data Analyst\",\n    model: \"gpt-4o-mini\",\n    about: \"An agent that analyzes data and returns structured insights\",\n    instructions: \"Always provide analysis results in a structured format\",\n    default_settings: {\n      temperature: 0.3,\n      response_format: {\n        type: \"json_object\"\n      }\n    }\n  });\n  ```\n</CodeGroup>\n\n<Tip>\n    Check out the API reference [here](/api-reference/agents/create-agent) or SDK reference (Python [here](/sdks/python/reference#agents) or JavaScript [here](/sdks/nodejs/reference#agents) for more details on different operations you can perform on agents.\n</Tip>\n\n## Relationship To Other Concepts\n\nThis section will help you understand how agents relate to other concepts in Julep.\n\n### Projects\n\nAgents belong to exactly one project, which helps organize related resources together. When creating an agent, you can specify which project it belongs to using the `project` parameter. If not specified, the agent will be assigned to the \"default\" project.\n\nFor example:\n\n<CodeGroup>\n```python Python\n# Create an agent in a specific project\nagent = client.agents.create(\n  name=\"Customer Support Bot\",\n  project=\"support-platform\"\n)\n```\n\n```javascript Node.js\n// Create an agent in a specific project\nconst agent = await client.agents.create({\n  name: \"Customer Support Bot\",\n  project: \"support-platform\"\n});\n```\n</CodeGroup>\n\nFor more information about projects, see [Projects](/concepts/projects).\n\n### Tools\n\nAgents can be associated with different types of tools available in Julep to enable them to perform operations. These tools associated with an agent can also be leveraged by a task associated with the agent.\n\nFor example:\n\n<CodeGroup>\n```python Python\n# Create an agent\nagent = client.agents.create(name=\"My Agent\")\n\n# Associate a tool with the agent\nclient.agents.tools.create(\n  agent_id=AGENT_UUID,\n  **{\n    \"name\": \"computer\",\n    \"type\": \"computer_20241022\",\n    \"computer_20241022\": {\n        \"display_height_px\": 768,\n        \"display_width_px\": 1024,\n        \"display_number\": 1,\n    },\n  }\n)\n```\n```javascript Node.js\n// Create an agent\nconst agent = await client.agents.create({name: \"My Agent\"});\n\n// Associate a tool with the agent\nawait client.agents.tools.create(agent.id, {\n  name: \"computer\",\n  type: \"computer_20241022\",\n  computer_20241022: {\n    display_height_px: 768,\n    display_width_px: 1024,\n    display_number: 1,\n  },\n});\n```\n</CodeGroup>\n\n### Sessions\n\nAgents can be used in sessions to enable real-time, interactive conversations. While tasks are designed for automated workflows, sessions provide a way to have stateful, continuous interactions with an agent. You can create multiple sessions with the same agent or multiple agents in a session, each session maintaining its own conversation history and context. This makes sessions ideal for scenarios requiring ongoing dialogue or human-in-the-loop interactions.\n\nFor example:\n\n<CodeGroup>\n```python Python\n# Create an agent\nagent = client.agents.create(name=\"My Agent\")\n\n# Create a session with the agent\nsession = client.sessions.create(agent=agent.id)\n```\n\n```javascript Node.js\n// Create an agent\nconst agent = await client.agents.create({name: \"My Agent\"});\n\n// Create a session with the agent\nconst session = await client.sessions.create({agent: agent.id});\n```\n</CodeGroup>\n\n## Best Practices\n\n<CardGroup cols={3}>\n  <Card title=\"Agent Design\" icon=\"pencil\">\n    <ul>\n      <li>**1. Clear, Focused Purposes**: Give agents clear, focused purposes rather than making them generalists</li>\n      <li>**2. Descriptive Names**: Use descriptive names that reflect the agent's primary function</li>\n      <li>**3. Concise Instructions**: Keep instructions concise but specific</li>\n      <li>**4. Specialized Agents**: Break complex tasks into multiple specialized agents rather than one complex agent</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Configuration Management\" icon=\"gear\">\n    <ul>\n      <li>**1. Conservative Model Settings**: Start with conservative model settings (temperature, top_p) and adjust as needed</li>\n      <li>**2. Metadata**: Use metadata effectively for organization and filtering</li>\n      <li>**3. Tools**: Define tools that are specific to the agent's purpose</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Resource Management\" icon=\"server\">\n    <ul>\n      <li>**1. Reuse Agents**: Reuse agents across similar tasks instead of creating new ones</li>\n      <li>**2. Clean Up**: Clean up unused agents and their associated resources</li>\n      <li>**3. Monitor Token Usage**: Monitor token usage and adjust context windows appropriately</li>\n    </ul>\n  </Card>\n</CardGroup>\n\n<Warning>\n  Avoid giving agents more capabilities than they need. Each additional tool or permission increases the complexity and potential security surface area.\n</Warning>\n\n## Next Steps\n\n- [Agent Tools](/concepts/tools) - Learn about tools and how to use them with agents\n- [Agent Tasks](/concepts/tasks) - Learn about tasks and how to use them with agents\n- [Agent Sessions](/concepts/sessions) - Learn about sessions and how to use them with agents\n- [Agent Docs](/concepts/docs) - Learn about docs and how to use them with agents\n\n## See Examples\n\n- [Hello Agent notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/basics/01-Hello-Agent.ipynb)\n- [Companion Agent notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/09-companion-agent.ipynb)\n"
  },
  {
    "path": "documentation/concepts/docs.mdx",
    "content": "---\ntitle: 'Documents (RAG)'\ndescription: 'Working with documents in Julep'\nicon: 'database'\n---\n\n## Overview\n\nDocuments in Julep provide a way to store and retrieve information that can be used by agents. This section covers how to work with documents effectively.\n\n## Components\n\nDocuments in Julep consist of several key components that enable efficient storage and retrieval of information.\n\n- **Title**: The title component helps identify and organize documents.\n- **Content**: The textual content of the document.\n- **Embeddings** (automatically generated): The vector representations of text that enable semantic search capabilities. Generated using the `text-embedding-3-large` model from OpenAI.\n- **Metadata**: Metadata provides additional context and filtering capabilities for documents.\n\n### Docs Configuration Options\n\nWhen creating a doc, the following attributes can be specified:\n\n| **Field**  | **Type** | **Description**                                                           | **Default** |\n|------------|----------|---------------------------------------------------------------------------|-------------|\n| `title`    | `string`   | The title of the document.                                                | Required    |\n| `content`  | `string`   | The content of the document.                                              | Required    |\n| `metadata` | `object`   | Additional metadata for the document, such as preferences or settings.    | `null`      |\n\n## How to Use Docs\n\n### Creating a Doc\n\nDocuments are attached to either an agent or a user. This is how you can create a doc using Julep's SDKs.\n\n**Example:**\n\n<CodeGroup>\n    ```python Python\n    # Creating a doc\n    client.agents.docs.create(\n        agent_id=agent.id,\n        title=\"Old World\",\n        content=\"The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa. In Europe, the era was marked by the rise of feudalism, the power of the Catholic Church, and the cultural blossoming of the Renaissance towards its end. Asia witnessed the flourishing of the Silk Road, facilitating trade and cultural exchange, and the rise of powerful empires such as the Mongol Empire, which at its height, stretched from Europe to Asia. Meanwhile, Africa saw the growth of influential kingdoms and empires like Mali, known for its wealth and the legendary pilgrimage of Mansa Musa, and the spread of Islam across the continent, which played a crucial role in shaping its cultural and social landscapes.\",\n        metadata={\"source\": \"https://en.wikipedia.org/wiki/Medieval_period\"},\n    )\n    ```\n\n    ```javascript Node.js\n    // Creating a doc\n    const doc = await client.agents.docs.create({\n        agent_id: \"agent_id\",\n        title: \"Old World\",\n        content: \"The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa. In Europe, the era was marked by the rise of feudalism, the power of the Catholic Church, and the cultural blossoming of the Renaissance towards its end. Asia witnessed the flourishing of the Silk Road, facilitating trade and cultural exchange, and the rise of powerful empires such as the Mongol Empire, which at its height, stretched from Europe to Asia. Meanwhile, Africa saw the growth of influential kingdoms and empires like Mali, known for its wealth and the legendary pilgrimage of Mansa Musa, and the spread of Islam across the continent, which played a crucial role in shaping its cultural and social landscapes.\",\n        metadata: {\"source\": \"https://en.wikipedia.org/wiki/Medieval_period\"},\n    });\n    ```\n</CodeGroup>\n\n<Info>\n    To create a user doc, replace `client.agents.docs.create` with `client.users.docs.create`, and the `agent_id` argument with `user_id`.\n</Info>\n\n<Tip>\n    Check out the [API reference](/api-reference/create-user-doc) or SDK reference ([Python](/sdks/python/reference#docs) or [JavaScript](/sdks/nodejs/reference#docs)) for more details on different operations you can perform on docs.\n</Tip>\n\n### Getting a Doc\n\nTo get a doc, you can use the `client.docs.get` method, and pass the doc's ID.\n\n**Example:**\n\n<CodeGroup>\n```python Python\n# Getting a doc\ndoc = client.docs.get(doc_id=\"doc_id\")\n\nprint(doc)\n```\n\n```javascript Node.js\n// Getting a doc\nconst doc = await client.docs.get(\"doc_id\");\n\nconsole.log(doc)\n```\n</CodeGroup>\n\nWhen you get a doc, you can access the doc's `title`, `content`, `embeddings`, `metadata` and other attributes.\n\n<Accordion title=\"Sample Output\">\n    ``` [expandable]\n    Doc(\n        id='0680b756-9827-7cf2-8000-82ed5daf816e',\n        content=['The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa.'],\n        created_at=datetime.datetime(2023, 4, 25, 11, 43, 37, 513161, tzinfo=datetime.timezone.utc),\n        title='Old World',\n        embedding_dimensions=1024,\n        embedding_model='text-embedding-3-large',\n        embeddings=[\n            -0.036940154,\n            0.021077264,\n            -0.03274468,\n            0.016222501,\n            ...\n            -0.05038565,\n            0.012776218,\n            ...\n        ],\n        language='english',\n        metadata={\"source\": \"https://en.wikipedia.org/wiki/Medieval_period\"},\n        modality='text'\n    )\n    ```\n</Accordion>\n\n### Chunking\n\nIn Julep, documents are not automatically chunked. We recommend that developers handle chunking based on their specific use case requirements, as different applications may have unique needs for how documents should be divided. \n\nFor those who need assistance with chunking, we provide a utility function `chunk_doc` that can be used directly in task steps. For implementation details, you can check the source code for this method in [this file](https://github.com/julep-ai/julep/blob/main/agents-api/agents_api/activities/utils.py).\n\n### Search\n\n#### Full Text Search\n\nOur full-text search functionality leverages Timescale's powerful indexing to efficiently match user-provided keywords and phrases against document content, delivering relevant results even with variations in text. Key features include prefix and infix searching, morphology processing (stemming and lemmatization), fuzzy searching to handle typos, and exact result counts.\n\n**Parameters:**\n\n| Parameter        | Type    | Description                                      | Default  |\n|------------------|---------|--------------------------------------------------|----------|\n| `text`           | `str`   | The textual query to search within documents.    | **Required** |\n| `metadata_filter`| `object`| Filters to apply based on document metadata.     | `None` |\n| `lang`           | `str`   | The language to use for full-text search processing. | `'english'` |\n| `limit`          | `int`   | The maximum number of documents to return.        | `10` |\n| `trigram_similarity_threshold` | `float` | The threshold for trigram similarity matching (higher values require closer matches) | `0.6` |\n\n<Note>\nThe default parameters for full-text search are based on our internal benchmarking. These values provide a good starting point, but you may need to adjust them depending on your specific use case to achieve optimal results.\n</Note>\n\n**Example:**\n\n<CodeGroup>\n```python Python\n# Define the query\ntext_query = \"Medieval times in Europe\"\n\n# Search for docs\nmatched_docs = client.agents.docs.search(\n    agent_id=\"agent_id\",\n    text=text_query,\n    limit=10, # the maximum number of docs to return\n)\n\nprint(matched_docs.model_dump())\n```\n\n```javascript Node.js\n// Define the query\nconst text_query = \"Medieval times in Europe\";\n\n// Search for docs\nconst matched_docs = await client.agents.docs.search({\n    agent_id: \"agent_id\",\n    text: text_query,\n    limit: 10, // the maximum number of docs to return\n});\n\nconsole.log(matched_docs);\n```\n</CodeGroup>\n\n<Accordion title=\"Sample Output\">\n    ```\n    {'docs': [{'id': '06791e86-6dcf-7816-8000-e4c3b781d05b',\n   'owner': {'id': '06791e82-46b7-739c-8000-3428f9d4e40f', 'role': 'agent'},\n   'snippet': {'content': 'The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa. In Europe, the era was marked by the rise of feudalism, the power of the Catholic Church, and the cultural blossoming of the Renaissance towards its end. Asia witnessed the flourishing of the Silk Road, facilitating trade and cultural exchange, and the rise of powerful empires such as the Mongol Empire, which at its height, stretched from Europe to Asia. Meanwhile, Africa saw the growth of influential kingdoms and empires like Mali, known for its wealth and the legendary pilgrimage of Mansa Musa, and the spread of Islam across the continent, which played a crucial role in shaping its cultural and social landscapes.',\n    'index': 0,\n    'embedding': [\n     -0.036940154,\n     0.021077264,\n     -0.03274468,\n     0.016222501,\n     -0.05038565,\n     0.012776218,\n     ...\n     ...]},\n   'distance': 0.6666666865348816,\n   'metadata': {\"source\": \"https://en.wikipedia.org/wiki/Medieval_period\"},\n   'title': 'Old World'}],\n   'time': 0.0522150993347168}\n    ```\n</Accordion>\n\n<Tip>\n    Check out the [API reference](/api-reference/search-agent-docs) or SDK reference ([Python](/sdks/python/reference#docs) or [JavaScript](/sdks/nodejs/reference#docs)) for more details on different operations you can perform on docs.\n</Tip>\n\n#### Embedding (vector) Search\n\nOur embedding (vector) search functionality leverages machine learning to convert search queries and documents into numerical vectors, enabling semantic matching based on vector similarity. It utilizes an embedding space where similar vectors indicate related content and employs algorithms like k-nearest neighbors (KNN) to retrieve the most relevant documents. Key features include context awareness, flexibility for natural language queries, multi-modal search across various content types, and effective handling of synonyms.\n\n**Parameters:**\n\n| Parameter        | Type            | Description                                                                                   | Default |\n|------------------|-----------------|-----------------------------------------------------------------------------------------------|---------|\n| `vector`         | `number[]`      | The embedding vector representing the semantic meaning of the query.                          | **Required** |\n| `limit`          | `integer`       | The number of top results to return (must be between 1 and 50).                               | `10`    |\n| `lang`           | `string`        | The language for the search query.                                                            | `en-US` |\n| `metadata_filter`| `object`        | Filters to apply based on document metadata.                                                  | None    |\n| `mmr_strength`   | `number`        | The strength of Maximum Marginal Relevance diversification (must be between 0 and 1).         | `0.5`     |\n| `confidence`     | `number`        | The confidence threshold for embedding similarity (must be between -1 and 1).                 | `0.5`     |\n\n<Note>\nThe default parameters for embedding search are based on our internal benchmarking. These values provide a good starting point, but you may need to adjust them depending on your specific use case to achieve optimal results.\n</Note>\n\n<CodeGroup>\n```python Python\n# Define the vector query\nvector_query = client.docs.embed(text=\"Medieval times in Europe\").vectors[0]\n\n# Search for docs\nmatched_docs = client.agents.docs.search(\n    agent_id=\"agent_id\",\n    vector=vector_query,\n    limit=10, # the maximum number of docs to return\n    confidence=-0.3, # confidence range is -1 to 1\n)\n\nprint(matched_docs.model_dump())\n```\n\n```javascript Node.js\n// Define the vector query\nconst embedding_result = client.docs.embed({ text: \"Medieval times in Europe\" });\nconst vector_query = embedding_result.vectors[0];\n\n// Search for docs\nconst matched_docs = await client.agents.docs.search({\n    agent_id: \"agent_id\",\n    vector: vector_query,\n    limit: 10, // the maximum number of docs to return\n    confidence: -0.3, // confidence range is -1 to 1\n});\n\nconsole.log(matched_docs);\n```\n</CodeGroup>\n\n<Accordion title=\"Sample Output\">\n    ```\n    {'docs': [{'id': '06791e86-6dcf-7816-8000-e4c3b781d05b',\n   'owner': {'id': '06791e82-46b7-739c-8000-3428f9d4e40f', 'role': 'agent'},\n   'snippet': {'content': 'The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa. In Europe, the era was marked by the rise of feudalism, the power of the Catholic Church, and the cultural blossoming of the Renaissance towards its end. Asia witnessed the flourishing of the Silk Road, facilitating trade and cultural exchange, and the rise of powerful empires such as the Mongol Empire, which at its height, stretched from Europe to Asia. Meanwhile, Africa saw the growth of influential kingdoms and empires like Mali, known for its wealth and the legendary pilgrimage of Mansa Musa, and the spread of Islam across the continent, which played a crucial role in shaping its cultural and social landscapes.',\n    'index': 0,\n    'embedding': [\n     -0.036940154,\n     0.021077264,\n     -0.03274468,\n     0.016222501,\n     -0.05038565,\n     0.012776218,\n     -0.034123193,\n     -0.005039564,\n     ...\n     ...]},\n   'distance': 0.9322964182738759,\n   'metadata': {\"source\": \"https://en.wikipedia.org/wiki/Medieval_period\"},\n   'title': 'Old World'}],\n   'time': 0.04166412353515625}\n    ```\n</Accordion>\n\n<Tip>\n    Check out the [API reference](/api-reference/search-agent-docs) or SDK reference ([Python](/sdks/python/reference#docs) or [JavaScript](/sdks/nodejs/reference#docs)) for more details on different operations you can perform on docs.\n</Tip>\n\n#### Hybrid Search\n\nOur hybrid search functionality combines multiple search techniques to deliver highly relevant and accurate search results. Julep's hybrid search uses a three-pronged approach that leverages:\n\n1. **Full-text search** - Traditional keyword-based search using PostgreSQL's tsquery/tsrank\n2. **Vector search** - Semantic search using embeddings for contextual understanding\n3. **Trigram search** - Fuzzy text matching using character n-grams for typo tolerance\n\nBy combining these approaches, hybrid search ensures that queries are matched not only on exact terms but also understood in context and tolerant of variations, providing more nuanced and precise results. This comprehensive approach enhances search performance, improves result relevance, and accommodates a wider range of search queries.\n\n##### Trigram Search Features\n\nJulep's trigram search capabilities include:\n\n- **Fuzzy Matching** - Handles typos, spelling variations, and morphological differences\n- **Similarity Scoring** - Combines trigram similarity with Levenshtein distance for accurate matching\n- **Word-Level Analysis** - Matches individual meaningful words against target content\n- **Adaptive Weighting** - Adjusts fuzzy matching strength based on query length\n- **Performance Optimization** - Uses PostgreSQL's GIN indexes and materialized CTEs for efficient processing\n\n##### How It Works\n\n1. When a search query is submitted, Julep runs both full-text search and trigram-based fuzzy search in parallel.\n2. Traditional full-text search results are prioritized (returned first).\n3. Trigram search then finds documents that full-text search might miss due to minor variations or typos.\n4. The system integrates these results with vector-based search results using Distribution-Based Score Fusion (DBSF).\n5. Results are ranked and returned based on a combination of all three search approaches.\n\n**Parameters:**\n\n| **Parameter**     | **Type**       | **Description**                                                                 | **Default** |\n|-------------------|----------------|---------------------------------------------------------------------------------|-------------|\n| `text`            | `str`          | The textual query to search within documents.                                   | **Required** |\n| `vector`          | `List[float]`  | The embedding vector representing the semantic meaning of the query.            | **Required** |\n| `alpha`           | `float`        | The weight assigned to embedding-based results versus text-based results (must be between 0 and 1).     | `0.5`       |\n| `confidence`      | `float`        | The confidence threshold for embedding similarity (must be between -1 and 1).            | `0.5`       |\n| `metadata_filter` | `object`       | Filters to apply based on document metadata.                                    | `None`      |\n| `limit`           | `int`          | The number of top results to return.                                            | `3`         |\n| `lang`            | `str`          | The language to use for full-text search processing.                            | `english_unaccent` |\n| `mmr_strength`    | `float`        | The strength of Maximum Marginal Relevance diversification (must be between 0 and 1). | `0.5`       |\n| `trigram_similarity_threshold` | `float` | The threshold for trigram similarity matching (must be between 0 and 1). | `0.6`       |\n| `k_multiplier`    | `int`          | Controls how many intermediate results to fetch before final scoring.           | `7`         |\n\n<Note>\nThe default parameters for hybrid search are based on our internal benchmarking. These values provide a good starting point, but you may need to adjust them depending on your specific use case to achieve optimal results.\n</Note>\n\n**Example:**\n\n<CodeGroup>\n```python Python\n# Define the query\ntext_query = \"Medieval times in Europe\"\n# Embed the query using the `docs.embed` method\nembedded_query = client.docs.embed(text=text_query).vectors[0]\n\n# Search for docs\nmatched_docs = client.agents.docs.search(\n    agent_id=\"agent_id\",\n    text=text_query,\n    alpha=0.5, # the weight of the embedding query\n    vector=embedded_query,\n    confidence=-0.3, # confidence range is -1 to 1\n)\n\nprint(matched_docs.model_dump())\n```\n\n```javascript Node.js\n// Define the query\nconst text_query = \"Medieval times in Europe\";\n// Embed the query using the `docs.embed` method\nconst embedding_result = await client.docs.embed({ text: text_query });\nconst embedded_query = embedding_result.vectors[0];\n\n// Search for docs\nconst matched_docs = await client.agents.docs.search({\n    agent_id: \"agent_id\",\n    text: text_query,\n    vector: embedded_query,\n    confidence: -0.3, // confidence range is -1 to 1\n    alpha: 0.5, // the weight of the embedding query\n});\n\nconsole.log(matched_docs);\n```\n</CodeGroup>\n\n<Accordion title=\"Sample Output\">\n```\n{'docs': [{'id': '06791e86-6dcf-7816-8000-e4c3b781d05b',\n'owner': {'id': '06791e82-46b7-739c-8000-3428f9d4e40f', 'role': 'agent'},\n'snippet': {'content': 'The medieval period, spanning roughly from the 5th to the late 15th century, was a time of significant transformation across Europe, Asia, and Africa. In Europe, the era was marked by the rise of feudalism, the power of the Catholic Church, and the cultural blossoming of the Renaissance towards its end. Asia witnessed the flourishing of the Silk Road, facilitating trade and cultural exchange, and the rise of powerful empires such as the Mongol Empire, which at its height, stretched from Europe to Asia. Meanwhile, Africa saw the growth of influential kingdoms and empires like Mali, known for its wealth and the legendary pilgrimage of Mansa Musa, and the spread of Islam across the continent, which played a crucial role in shaping its cultural and social landscapes.',\n    'index': 0,\n    'embedding': [\n    -0.036940154,\n    0.021077264,\n    -0.03274468,\n    0.016222501,\n    -0.05038565,\n    0.012776218,\n    -0.034123193,\n    -0.005039564,\n    ...\n    ...]},\n'distance': 0.13411101466087272,\n'metadata': {\"source\": \"https://en.wikipedia.org/wiki/Medieval_period\"},\n'title': 'Old World'}],\n'time': 0.0514223575592041}\n```\n</Accordion>\n\n<Tip>\n    Check out the [API reference](/api-reference/search-agent-docs) or SDK reference ([Python](/sdks/python/reference#docs) or [JavaScript](/sdks/nodejs/reference#docs)) for more details on different operations you can perform on docs.\n</Tip>\n\n## Filtering\n\nWhile search is carried on based on the textual and/or semantic content of the documents, you can also filter the documents based on their metadata.\n\n**Example:**\n\n<CodeGroup>\n```python Python\n# Filter docs based on metadata\ndev_client.agents.docs.list(\n    agent_id=\"agent_id\",\n    metadata_filter={\"source\": \"wikipedia\"},\n)\nprint(docs.items)\n```\n\n```javascript Node.js\n// Filter docs based on metadata\nconst docs = await client.agents.docs.list(\n    agentId,\n    {\n        metadata_filter: {\"source\": \"wikipedia\"},\n    }\n);\n\nconsole.log(docs.items);\n```\n</CodeGroup>\n\n<Tip>\n    Check out the [API reference](/api-reference/list-agent-docs) or SDK reference ([Python](/sdks/python/reference#docs) or [JavaScript](/sdks/nodejs/reference#docs)) for more details on different operations you can perform on docs.\n</Tip>\n\n## Relationship to Other Concepts\n\n### Sessions\n\nSessions have access to search, retrieve and reference agents and users documents inside chat conversations. Read more about it [here](/concepts/sessions#documents).\n\n### Tasks\n\nBy leveraging [System Tools](/concepts/tools#system-tools), Julep [Tasks](/concepts/tasks) have the ability to create, search, filter and read documents.\n\n**Example:**\n\n<CodeGroup>\n```yaml [expandable]\ninput_schema:\n    type: object\n    properties:\n    user_id:\n        type: string\n        description: The id of the user to list documents for\n\ntools:\n- name: \"list_user_docs\"\n    description: \"List all documents for the current user\"\n    type: \"system\"\n    system:\n    resource: user\n    subresource: doc\n    operation: list\n\nmain:\n# Step that lists all documents for the current user\n- tool: \"list_user_docs\"\n    arguments:\n    user_id: $ _.user_id\n\n# Step that evaluates the textual contents of all documents for the current user\n- evaluate:\n    all_user_docs_contents: $ [doc.content for doc in _.items]\n```\n</CodeGroup>\n\n<Info>\n    Checkout [this cookbook](https://colab.research.google.com/github/julep-ai/julep/blob/dev/cookbooks/11-generate-user-personas.ipynb) that leverages Julep's docs, system tools and tasks to create content-rich user personas. \n</Info>\n\n## Best Practices\n\n<CardGroup cols={3}>\n    <Card title=\"Organize Metadata\" icon=\"tags\">\n        <ul>\n            <li>**1. Metadata**: Use consistent and descriptive metadata to enhance document retrieval and filtering.</li>\n        </ul>\n    </Card>\n    <Card title=\"Version Control\" icon=\"timer\">\n        <ul>\n            <li>**1. Version Control**: Maintain version control for documents to track changes and updates over time.</li>\n        </ul>\n    </Card>\n    <Card title=\"Security and Privacy\" icon=\"lock\">\n        <ul>\n            <li>**1. Access Control**: Ensure sensitive information is protected and access to documents is properly managed.</li>\n        </ul>\n    </Card>\n    <Card title=\"Efficient Chunking\" icon=\"grid-dividers\">\n        <ul>\n            <li>**1. Chunking Strategies**: Implement efficient chunking strategies to optimize document processing and retrieval.</li>\n        </ul>\n    </Card>\n    <Card title=\"Regular Updates\" icon=\"sparkles\">\n        <ul>\n            <li>**1. Update**: Regularly update document content and metadata to keep information current and relevant.</li>\n        </ul>\n    </Card>\n</CardGroup>\n\n## Advanced Search Features\n\n### Trigram-Enhanced Fuzzy Matching\n\nJulep's advanced fuzzy matching capability is built on PostgreSQL's `pg_trgm` extension and enhanced with additional similarity techniques. This allows for resilient document retrieval that can handle variations in text, including:\n\n- Typos and spelling errors\n- Morphological variations\n- Term order differences\n- Incomplete terms\n\n#### Similarity Mechanisms\n\nJulep uses a multi-layered approach to determine text similarity:\n\n1. **Basic Trigram Similarity** - Uses PostgreSQL's built-in trigram functions to match documents based on character-level n-grams.\n\n2. **Enhanced Similarity** - Combines trigram matching with Levenshtein distance calculations to provide better accuracy, especially for shorter text segments:\n   ```sql\n   -- 70% trigram, 30% Levenshtein for shorter strings\n   RETURN 0.7 * trgm_sim + 0.3 * norm_lev;\n   ```\n\n3. **Word-Level Similarity** - Breaks text into individual words and finds the best match for each meaningful word:\n   ```sql\n   -- Only process meaningful words (longer than 2 chars)\n   IF length(words1[i]) > 2 THEN\n       -- Find best match in target content\n       best_match := GREATEST(best_match, similarity(words1[i], words2[j]));\n   ```\n\n4. **Comprehensive Similarity** - Adaptively weights different similarity metrics based on query characteristics:\n   ```sql\n   -- Weight factor based on query length - shorter queries need more help\n   word_weight float := CASE\n       WHEN length(query) < 10 THEN 0.4\n       WHEN length(query) < 20 THEN 0.3\n       ELSE 0.2\n   END;\n   ```\n\n#### Tuning Search Behavior\n\nYou can customize Julep's fuzzy search behavior through several parameters:\n\n- **Similarity Threshold** (`trigram_similarity_threshold`) - Controls the minimum similarity score required for a document to match:\n  - Higher values (e.g., 0.8) require closer matches, reducing false positives but may miss relevant documents with variations\n  - Lower values (e.g., 0.3) are more lenient, catching more variations but potentially including less relevant results\n  - Default: 0.6 for hybrid search, 0.3 for text-only search\n\n- **Alpha Weight** (`alpha`) - Balances the importance of vector-based semantic search vs. text-based search:\n  - Higher values prioritize semantic/embedding matches\n  - Lower values prioritize text and trigram matches\n  - Default: 0.7 (70% weight to embeddings)\n\n- **Search Language** (`lang`) - Affects tokenization, stemming, and other text processing operations:\n  - Default: 'english_unaccent' which handles accent/diacritic-insensitive matching\n\n#### Implementation Details\n\nJulep's trigram search is implemented using:\n\n1. **Database Indexes** - GIN indexes on document title and content for efficient trigram operations:\n   ```sql\n   CREATE INDEX IF NOT EXISTS idx_docs_title_trgm ON docs USING GIN (title gin_trgm_ops);\n   CREATE INDEX IF NOT EXISTS idx_docs_content_trgm ON docs USING GIN (content gin_trgm_ops);\n   ```\n\n2. **Materialized CTEs** - Improves performance for complex query operations:\n   ```sql\n   WITH tsv_results AS MATERIALIZED (...)\n   ```\n\n3. **Runtime Optimizations** - Selective application of more expensive calculations:\n   ```sql\n   -- Only compute Levenshtein for reasonable length strings (performance)\n   IF length(text1) <= 50 AND length(text2) <= 50 THEN\n   ```\n\n4. **Distribution-Based Score Fusion** - Combines results from different search methods:\n   ```sql\n   -- Aggregate all text/embedding scores into arrays\n   aggregated AS (\n       SELECT\n           array_agg(text_score ORDER BY rn)      AS text_scores,\n           array_agg(embedding_score ORDER BY rn) AS embedding_scores\n   ```\n\nThese technologies combine to provide a sophisticated fuzzy search capability that significantly improves document retrieval compared to traditional search methods.\n\n## Next Steps\n\n- [Sessions](/concepts/sessions) - Learn about sessions and how documents are used in chat conversations.\n- [Tools](/concepts/tools) - Learn about tools and how they can be used to fill documents with content.\n- [Tasks](/concepts/tasks) - Learn about tasks and how to use documents inside tasks.\n- [Cookbooks](https://github.com/julep-ai/julep/tree/main/cookbooks) - Check out cookbooks to see how Julep can be used in real-world scenarios."
  },
  {
    "path": "documentation/concepts/execution.mdx",
    "content": "---\ntitle: 'Executions'\ndescription: 'Understanding Task Executions and Their Lifecycle'\nicon: 'play'\n---\n\n## Overview\n\nExecutions in Julep represent instances of tasks that have been initiated with specific inputs. They embody the lifecycle of a task, managing its progression through various states from initiation to completion. Understanding executions is crucial for effectively managing and monitoring the behavior of your AI agents and their workflows.\n\n## Components\n\nExecutions are comprised of several key components that work together to manage and monitor the state of a task:\n\n- **Execution ID**: A unique identifier for each execution instance.\n- **Task ID**: The identifier of the task being executed.\n- **Input**: The inputs provided to the task at the time of execution.\n- **Status**: The current state of the execution (e.g., queued, running, succeeded).\n- **Output**: The result produced by the execution upon completion.\n- **Transitions**: The sequence of state changes that the execution undergoes.\n- **Transition Count**: The number of transitions that have occurred in this execution.\n\n### Execution Configuration options\n\n| Option               | Type            | Description                                                | Default        |\n|----------------------|-----------------|------------------------------------------------------------|----------------|\n| `task_id`            | `string`          | The ID of the task to execute                              | **Required**   |\n| `input`              | `object`          | The input to the task                                      | **Required**   |\n| `metadata`           | `object`          | Additional metadata for the execution instance             | `null`         |\n| `transition_count`   | `number`          | The number of transitions in this execution                | `null`         |\n\n\n## Lifecycle of an Execution\n\nAn execution follows a well-defined lifecycle, transitioning through various states from start to finish. Understanding these states helps in monitoring and managing task executions effectively.\n\n### Execution Statuses\n\nExecutions can exist in one of the following statuses:\n\n| **Status**       | **Description**                                          |\n| ---------------- | -------------------------------------------------------- |\n| `queued`         | The execution is queued and waiting to start.            |\n| `starting`       | The execution is starting.                               |\n| `running`        | The execution is currently running.                      |\n| `awaiting_input` | The execution is suspended and awaiting user input to resume. |\n| `succeeded`      | The execution has completed successfully.                |\n| `failed`         | The execution has failed due to an error.                |\n| `cancelled`      | The execution has been cancelled by the user or system.  |\n\n### Execution State Machine\n\nThe state transitions of an execution are governed by a state machine that ensures proper progression and handling of different scenarios.\n\n```mermaid\nstateDiagram-v2\n    [*] --> queued\n    queued --> starting\n    queued --> cancelled\n    starting --> cancelled\n    starting --> failed\n    starting --> running\n    running --> running\n    running --> awaiting_input\n    running --> cancelled\n    awaiting_input --> running\n    awaiting_input --> cancelled\n    running --> succeeded\n    failed --> [*]\n    succeeded --> [*]\n    cancelled --> [*]\n```\n\n## Execution State Transitions\n\nExecutions in Julep follow a specific state transition model. The transitions are governed by both the execution status and the transition type:\n\n- **Init**: The execution is initialized.\n- **Start**: The execution begins.\n- **Step**: A step within the execution is executed.\n- **Wait**: The execution is waiting for an external input.\n- **Resume**: The execution resumes after waiting.\n- **Finish**: The execution completes successfully.\n- **Error**: The execution encounters an error.\n- **Cancel**: The execution is cancelled.\n\n### Transition Types\n\n| **Transition Type** | **Description**                                     |\n| -------------------- | --------------------------------------------------- |\n| `init`               | Initializes the execution.                         |\n| `start`              | Starts the execution process.                      |\n| `step`               | Executes a step within the task.                   |\n| `wait`               | Pauses execution waiting for external input.       |\n| `resume`             | Resumes execution after a wait.                    |\n| `finish`             | Marks the execution as successfully completed.     |\n| `error`              | Marks the execution as failed due to an error.      |\n| `cancel`             | Cancels the execution.                              |\n\n## Creating an Execution\n\nTo create an execution for a specific task, use the following method in the SDKs.\n\n<CodeGroup>\n    ```python Python\n    from julep import Julep\n    import yaml\n    client = Julep(api_key=\"YOUR_API_KEY\")\n    \n    # Execute the task (assuming the task is already created)\n    execution = client.executions.create(\n        task_id=\"task_id\",\n        input={\n            \"parameter1\": \"value1\",\n            \"parameter2\": \"value2\"\n        }\n    )\n\n    print(f\"Execution ID: {execution.id}\")\n    ```\n\n    ```javascript Node.js\n    const { Julep } = require('@julep/sdk');\n    const client = new Julep({ apiKey: 'YOUR_API_KEY' });\n    // Execute the task (assuming the task is already created)\n    const execution = await client.executions.create({\n        task_id: \"task_id\",\n        input: {\n            parameter1: 'value1',\n            parameter2: 'value2'\n        }\n    });\n\n    console.log(\"Execution ID:\", execution.id);\n    ```\n</CodeGroup>\n\n<Tip>\n    Check out the API reference [here](/api-reference/executions) or SDK reference (Python [here](/sdks/python/reference#executions) or JavaScript [here](/sdks/nodejs/reference#executions) for more details on different operations you can perform on executions.\n</Tip>\n\n## Monitoring an Execution\n\nAfter initiating an execution, it's essential to monitor its progress and handle its completion or failure appropriately.\n\n<CodeGroup>\n    ```python Python\n    import time\n    from julep import Julep\n\n    client = Julep(api_key=\"YOUR_API_KEY\")\n    execution_id = \"YOUR_EXECUTION_ID\"\n\n    while True:\n        result = client.executions.get(execution_id)\n        print(f\"Status: {result.status}\")\n        print(f\"Current output: {result.output}\")\n\n        if result.status in [\"succeeded\", \"failed\", \"cancelled\"]:\n            if result.status == \"succeeded\":\n                print(\"Execution succeeded with output:\", result.output)\n            else:\n                print(\"Execution ended with status:\", result.status)\n            break\n\n        time.sleep(5)  # Wait for 5 seconds before polling again\n    ```\n\n    ```javascript Node.js\n    const { Julep } = require('@julep/sdk');\n\n    const client = new Julep({ apiKey: 'YOUR_API_KEY' });\n    const executionId = 'YOUR_EXECUTION_ID';\n\n    while (true) {\n        const result = await client.executions.get(executionId);\n        console.log(`Status: ${result.status}`);\n        console.log(`Current output: ${result.output}`);\n        if ([\"succeeded\", \"failed\", \"cancelled\"].includes(result.status)) {\n            if (result.status === \"succeeded\") {\n                console.log(\"Execution succeeded with output:\", result.output);\n            } else {\n                console.log(\"Execution ended with status:\", result.status);\n            }\n            break;\n        }\n        await new Promise(resolve => setTimeout(resolve, 5000)); // Wait for 5 seconds before polling again\n    }\n    ```\n</CodeGroup>\n\nTo view more details about the status of the execution and how it is transitioning between states, you can use list the transitions of an execution.\n\nExample:\n\n<CodeGroup>\n    ```python Python\n    from julep import Julep\n\n    client = Julep(api_key=\"YOUR_API_KEY\")\n    execution_id = \"YOUR_EXECUTION_ID\"\n\n    transitions = client.executions.transitions.list(execution_id)\n    print(transitions.items)\n    ```\n\n    ```javascript Node.js\n    const { Julep } = require('@julep/sdk');\n\n    const client = new Julep({ apiKey: 'YOUR_API_KEY' });\n    const executionId = 'YOUR_EXECUTION_ID';\n\n    const transitions = await client.executions.transitions.list(executionId);\n    console.log(transitions.items);\n    ```\n</CodeGroup>\n\n<Tip>\n    Check out the API reference [here](/api-reference/executions) or SDK reference (Python [here](/sdks/python/reference#executions) or JavaScript [here](/sdks/nodejs/reference#executions) for more details on different operations you can perform on executions.\n</Tip>\n\n## Streaming Execution Status Updates\n\n### Using the raw SSE endpoint\n\nYou can subscribe to real-time status updates using the Server-Sent Events (SSE) endpoint. Each event conforms to the `ExecutionStatusEvent` schema and includes the following fields:\n\n- **execution_id**: The UUID of the execution.\n- **status**: The current execution status.\n- **updated_at**: ISO 8601 timestamp of the update.\n- **error**: Error message if the execution failed.\n- **transition_count**: Number of transitions that have occurred.\n- **metadata**: Arbitrary metadata for the event.\n\n```bash\ncurl -X GET 'https://api.julep.ai/api/executions/{execution_id}/status.stream' \\\n  -H 'Authorization: Bearer $JULEP_API_KEY'\n```\n\nYou'll be getting events that look like this:\n\n```bash\ndata: {\"execution_id\":\"068306ff-e0f3-7fe9-8000-0013626a759a\",\"status\":\"starting\",\"updated_at\":\"2025-05-23T12:54:24.565424Z\",\"error\":null,\"transition_count\":1,\"metadata\":{}}\ndata: {\"execution_id\":\"068306ff-e0f3-7fe9-8000-0013626a759a\",\"status\":\"running\",\"updated_at\":\"2025-05-23T12:54:30.903484Z\",\"error\":null,\"transition_count\":2,\"metadata\":{}}\ndata: {\"execution_id\":\"068306ff-e0f3-7fe9-8000-0013626a759a\",\"status\":\"succeeded\",\"updated_at\":\"2025-05-23T12:56:12.054067Z\",\"error\":null,\"transition_count\":3,\"metadata\":{}}\n```\n\n### Using the Python SDK `AsyncClient`\n\n<CodeGroup>\n```python Python\nfrom julep import AsyncClient\n\nclient = AsyncClient(api_key=\"YOUR_API_KEY\")\nexecution_id = \"YOUR_EXECUTION_ID\"\n\n# Subscribe to the live status stream (async generator)\nstatus_stream = await client.executions.status.stream(execution_id=execution_id)\n\n# Consume events in real-time using async for\nasync for event in status_stream:\n    print(\"Execution status:\", event.status, \"updated at\", event.updated_at)\n\n\n```\n</CodeGroup>\n\n<Tip>\nThis approach relies on Python's async / await syntax. Make sure to:\n\n1. Use `AsyncClient` not `Client`.\n2. `await client.executions.status.stream(...)` to obtain the async generator.\n3. Iterate with `async for` to consume events.\n\n</Tip>\n\n## Updating/Cancelling an Execution\n\nTo update or cancel an execution, you can use the `change_status` method in the SDKs.\n\nExample:\n\n<CodeGroup>\n    ```python Python\n    from julep import Julep\n\n    client = Julep(api_key=\"YOUR_API_KEY\")\n    execution_id = \"YOUR_EXECUTION_ID\"\n\n    # To cancel an execution\n    client.executions.change_status(execution_id=execution_id, status=\"cancelled\")\n    # To resume an execution with specific input\n    client.executions.change_status(\n        execution_id=execution_id,\n        status=\"running\",\n        input={\n            \"parameter1\": \"value1\",\n            \"parameter2\": \"value2\"\n        }\n    )\n    ```\n\n    ```javascript Node.js\n    const { Julep } = require('@julep/sdk');\n\n    const client = new Julep({ apiKey: 'YOUR_API_KEY' });\n    const executionId = 'YOUR_EXECUTION_ID';\n\n    // To cancel an execution\n    await client.executions.changeStatus(executionId, 'cancelled');\n    // To resume an execution with specific input\n    await client.executions.changeStatus(\n        executionId,\n        'running',\n        {\n            input: {\n                \"parameter1\": \"value1\",\n                \"parameter2\": \"value2\"\n            }\n        }\n    );\n    ```\n</CodeGroup>\n\n<Tip>\n    Check out the API reference [here](/api-reference/executions) or SDK reference (Python [here](/sdks/python/reference#executions) or JavaScript [here](/sdks/nodejs/reference#executions) for more details on different operations you can perform on executions.\n</Tip>\n\n## Best Practices\n\n<CardGroup cols={3}>\n    <Card title=\"Handle All Statuses\" icon=\"check\">\n        <ul>\n            <li>**1. Execution Statuses**: Ensure your application gracefully handles all possible execution statuses, including `failed` and `cancelled`.</li>\n        </ul>\n    </Card>\n    <Card title=\"Polling Interval\" icon=\"clock\">\n        <ul>\n            <li>**1. Polling Interval**: Choose an appropriate polling interval to balance responsiveness and API usage.</li>\n        </ul>\n    </Card>\n    <Card title=\"Logging\" icon=\"file\">\n        <ul>\n            <li>**1. Logging**: Maintain detailed logs of execution statuses and outputs for auditing and debugging purposes.</li>\n        </ul>\n    </Card>\n</CardGroup>\n\n## Next Steps\n\n- [Checkout the Tutorial](/tutorials) - Learn how to use executions in a tutorial\n- [Checkout the Execution Lifecycle](/advanced/lifecycle) - Learn more about the execution lifecycle\n"
  },
  {
    "path": "documentation/concepts/files.mdx",
    "content": "---\ntitle: 'Files'\ndescription: 'Managing files and attachments in Julep'\nicon: 'file'\n---\n\n# Files\n\nFiles in Julep allow agents to work with various types of data including documents, images, audio, and other media. Files are stored securely and can be accessed by agents and tasks as needed.\n\n## Overview\n\nJulep's file system provides:\n\n- Secure storage for various file types\n- Unique identifiers for consistent access\n- Metadata for organization and discovery\n- Content hashing for integrity verification\n- Project association for logical grouping\n\n## File Properties\n\nEach file in Julep has the following properties:\n\n| **Field**     | **Type**   | **Description**                                       | **Default**  |\n|---------------|------------|-------------------------------------------------------|--------------|\n| `name`        | `string`   | Name of the file                                      | Required     |\n| `project`     | `string`   | The canonical name of the project this file belongs to | `\"default\"`  |\n| `content`     | `string`   | Base64-encoded file content                           | Required     |\n| `description` | `string`   | Description of the file                               | `\"\"`         |\n| `mime_type`   | `string`   | MIME type of the file                                 | `null`       |\n| `size`        | `number`   | Size of the file in bytes (read-only)                 | Auto-calculated |\n| `hash`        | `string`   | Hash of the file content (read-only)                  | Auto-calculated |\n| `created_at`  | `string`   | Creation timestamp (read-only)                        | Auto-generated |\n\n## Creating Files\n\nYou can create files using the Julep SDK in Python or JavaScript:\n\n<CodeGroup>\n```python Python\nfrom julep import Julep\nimport base64\n\nclient = Julep(api_key=\"your_api_key\")\n\n# Read a local file and encode it as base64\nwith open(\"path/to/document.pdf\", \"rb\") as file:\n    content = base64.b64encode(file.read()).decode(\"utf-8\")\n\n# Create the file in Julep\nfile = client.files.create(\n    name=\"document.pdf\",\n    project=\"knowledge-base\",\n    content=content,\n    description=\"Important document for reference\",\n    mime_type=\"application/pdf\"\n)\n\nprint(f\"Created file: {file.id}\")\n```\n\n```javascript Node.js\nimport { Julep } from '@julep/sdk';\nimport fs from 'fs';\n\nconst client = new Julep({ apiKey: 'your_api_key' });\n\n// Read a local file and encode it as base64\nconst content = fs.readFileSync('path/to/document.pdf').toString('base64');\n\n// Create the file in Julep\nconst file = await client.files.create({\n    name: \"document.pdf\",\n    project: \"knowledge-base\",\n    content: content,\n    description: \"Important document for reference\",\n    mime_type: \"application/pdf\"\n});\n\nconsole.log(`Created file: ${file.id}`);\n```\n</CodeGroup>\n\n## Managing Files\n\n### Retrieving Files\n\n<CodeGroup>\n```python Python\n# Get a specific file by ID\nfile = client.files.get(\"file_id_here\")\nprint(file)\n\n# List all files\nfiles = client.files.list()\nfor file in files:\n    print(f\"{file.name}: {file.description}\")\n\n# List files with filtering\nfiles = client.files.list(metadata_filter={\"category\": \"report\"})\n```\n\n```javascript Node.js\n// Get a specific file by ID\nconst file = await client.files.get(\"file_id_here\");\nconsole.log(file);\n\n// List all files\nconst files = await client.files.list();\nfiles.forEach(file => console.log(`${file.name}: ${file.description}`));\n\n// List files with filtering\nconst files = await client.files.list({ metadata_filter: { category: \"report\" } });\n```\n</CodeGroup>\n\n### Deleting Files\n\n<CodeGroup>\n```python Python\n# Delete a file\nclient.files.delete(\"file_id_here\")\n```\n\n```javascript Node.js\n// Delete a file\nawait client.files.delete(\"file_id_here\");\n```\n</CodeGroup>\n\n## Relationship to Other Concepts\n\n### Projects\n\nFiles belong to exactly one project, which helps organize related resources together. When creating a file, you can specify which project it belongs to using the `project` parameter. If not specified, the file will be assigned to the \"default\" project.\n\n**Example:**\n\n<CodeGroup>\n```python Python\n# Create a file in a specific project\nfile = client.files.create(\n    name=\"marketing-image.jpg\",\n    project=\"product-launch\",\n    content=base64_content,\n    mime_type=\"image/jpeg\"\n)\n```\n\n```javascript Node.js\n// Create a file in a specific project\nconst file = await client.files.create({\n    name: \"marketing-image.jpg\",\n    project: \"product-launch\",\n    content: base64Content,\n    mime_type: \"image/jpeg\"\n});\n```\n</CodeGroup>\n\nFor more information about projects, see [Projects](/concepts/projects).\n\n### Agents and Tasks\n\nFiles can be used by both agents and tasks to access and process information. For example, an agent might analyze an image file, or a task might process a document file.\n\n<CodeGroup>\n```python Python\n# Create a file\nfile = client.files.create(name=\"data.csv\", content=base64_content)\n\n# Reference the file in a task execution\nexecution = client.tasks.executions.create(\n    task_id=\"task_id_here\",\n    input={\"file_id\": file.id}\n)\n```\n\n```javascript Node.js\n// Create a file\nconst file = await client.files.create({\n    name: \"data.csv\",\n    content: base64Content\n});\n\n// Reference the file in a task execution\nconst execution = await client.tasks.executions.create({\n    task_id: \"task_id_here\",\n    input: { file_id: file.id }\n});\n```\n</CodeGroup>\n\n## Best Practices\n\n<CardGroup cols={3}>\n  <Card title=\"File Organization\" icon=\"folder-tree\">\n    <ul>\n      <li>Group related files in the same project</li>\n      <li>Use consistent naming conventions</li>\n      <li>Include descriptive metadata for better discovery</li>\n    </ul>\n  </Card>\n  <Card title=\"Performance\" icon=\"gauge-high\">\n    <ul>\n      <li>Keep file sizes reasonable for faster processing</li>\n      <li>Consider chunking large files into smaller ones</li>\n      <li>Be mindful of the content limits when Base64 encoding</li>\n    </ul>\n  </Card>\n  <Card title=\"Security\" icon=\"shield\">\n    <ul>\n      <li>Avoid storing sensitive information in files</li>\n      <li>Regularly audit and clean up unused files</li>\n      <li>Validate file types before uploading</li>\n    </ul>\n  </Card>\n</CardGroup>\n\n## Next Steps\n\n- [Projects](/concepts/projects) - Learn about organizing resources with projects\n- [Agents](/concepts/agents) - Learn how agents can work with files\n- [Tasks](/concepts/tasks) - Learn how to use files in task workflows"
  },
  {
    "path": "documentation/concepts/projects.mdx",
    "content": "---\ntitle: 'Projects'\ndescription: 'Organizational units for grouping related resources'\nicon: 'layer-group'\n---\n\n\n## Overview\nProjects are organizational units that allow you to group related agents, users, files, and other resources together. They provide a way to manage resources at a higher level and maintain clean separation between different use cases or applications.\n\nProjects provide several benefits:\n\n- **Organization**: Group related resources together logically\n- **Management**: Administer resources at the project level\n- **Isolation**: Keep resources separate between different applications\n- **Deployment**: Deploy multiple templates or configurations without conflicts\n\nEach developer automatically gets a \"default\" project that contains all existing resources. This ensures backward compatibility with existing applications while providing the benefits of project organization.\n\n## Project Properties\n\nA project includes:\n\n- `id`: Unique identifier\n- `canonical_name`: Machine-readable name (unique per developer)\n- `name`: Human-readable display name\n- `metadata`: Custom attributes for the project\n\n## Project Relationships\n\nProjects have a one-to-many relationship with resources:\n\n- Each agent belongs to exactly one project\n- Each user belongs to exactly one project\n- Each file belongs to exactly one project\n\nWhen creating resources, you can specify which project they belong to using the `project` field. If not specified, resources are automatically assigned to the \"default\" project.\n\n## Default Project\n\nEvery developer automatically receives a \"default\" project when they first interact with the API. This project:\n\n- Cannot be deleted\n- Has a canonical name of \"default\"\n- Contains all previously created resources (pre-dating the projects feature)\n- Serves as a fallback for resources created without a project specification\n\n## API Operations\n\nProjects support standard CRUD operations:\n\n- `GET /projects`: List all projects for a developer\n- `POST /projects`: Create a new project\n- `GET /projects/{id}`: Retrieve a specific project\n- `PUT /projects/{id}`: Update a project\n- `PATCH /projects/{id}`: Partially update a project\n- `DELETE /projects/{id}`: Delete a project (except the default project)\n\n## Usage Examples\n\n### Creating a Project\n\n```json\nPOST /projects\n{\n  \"name\": \"Customer Support Bot\",\n  \"canonical_name\": \"support-bot\",\n  \"metadata\": {\n    \"description\": \"Resources for our customer support chatbot\",\n    \"team\": \"customer-success\"\n  }\n}\n```\n\n### Creating a Resource in a Project\n\nWhen creating a resource such as an agent, specify the project canonical name:\n\n```json\nPOST /agents\n{\n  \"name\": \"Support Assistant\",\n  \"project\": \"support-bot\",\n  \"instructions\": [\n    \"You are a helpful customer support assistant.\"\n  ],\n  \"model\": \"gpt-4-turbo\"\n}\n```\n\n## Future Capabilities\n\nProjects are designed with future extensibility in mind. Planned enhancements include:\n\n- Project-specific API keys for more granular access control\n- Usage tracking and billing at the project level\n- Enhanced permissions and role-based access control\n- Cross-project resource sharing capabilities\n\n## Best Practices\n\n- Use meaningful canonical names for projects that reflect their purpose\n- Group resources by logical application or team\n- Use metadata to add custom attributes for filtering and organization\n- Create separate projects for development, staging, and production environments"
  },
  {
    "path": "documentation/concepts/secrets.mdx",
    "content": "---\ntitle: 'Secrets'\ndescription: 'Securely store and manage sensitive information for your LLM applications'\nicon: 'key'\n---\n\n# Secrets\n\nSecrets allow you to securely store and manage sensitive information like API keys, credentials, and other confidential data that your agents and tasks need to access external services.\n\n## What are Secrets?\n\nSecrets are encrypted key-value pairs that can be referenced in your tasks and used by your agents without exposing the actual values in your code or configuration files. This helps maintain security and separates sensitive data from your application logic.\n\n## Key Features\n\n- **Encrypted Storage**: All secrets are encrypted at rest using industry-standard AES-256 encryption\n- **Access Control**: Secrets are scoped to developers and cannot be accessed across developer accounts\n- **Named References**: Reference secrets by name in tasks and tools instead of hardcoding values\n- **Versioning**: Track when secrets were created and updated\n- **Metadata Support**: Add custom metadata to organize and categorize your secrets\n\n## Common Use Cases\n\n- Storing API keys for external services (OpenAI, Google, AWS, etc.)\n- Managing database credentials\n- Securing authentication tokens\n- Storing sensitive configuration values\n- Managing encrypted communication channels\n\n## Secrets vs. Environment Variables\n\nWhile environment variables are commonly used for configuration, secrets provide several advantages:\n\n- **Encrypted Storage**: Environment variables are stored in plain text, while secrets are encrypted\n- **Access Management**: Environment variables are global, while secrets have access controls\n- **Audit Trail**: Secrets maintain creation and update timestamps\n- **Organized Management**: The secrets API provides a structured way to manage sensitive data\n\n## Working with Secrets\n\n### Creating Secrets\n\nSecrets can be created through the API, SDK, or CLI:\n<CodeGroup>\n    ```python Python\n    secret = client.secrets.create(\n    name=\"stripe_api_key\",\n    value=\"sk_test_...\",\n    description=\"Stripe API key for payment processing\",\n    metadata={\"environment\": \"production\", \"owner\": \"payments-team\"}\n    )\n\n    print(f\"Created secret: {secret.name}\")\n    ```\n\n    ```bash CLI\n    julep secrets create --name \"openai_api_key\" --value \"sk-...\" --description \"OpenAI API key\"\n    ```\n\n    ```bash API\n    curl https://dev.julep.ai:443/api/secrets \\\n      --request POST \\\n      --header 'Content-Type: application/json' \\\n      --data '{\n      \"metadata\": {},\n      \"name\": \"openai_api_key\",\n      \"description\": \"\",\n      \"value\": \"sk-...\"\n    }'\n    ```\n    \n</CodeGroup>\n\n#### Required Parameters\n\n- `name`: The name of the secret (must be a valid identifier)\n- `value`: The secret value to encrypt and store\n\n#### Optional Parameters\n\n- `description`: A description of what the secret is used for\n- `metadata`: A dictionary of metadata to associate with the secret\n\n### Using Secrets in Tasks\n\nOnce created, secrets can be referenced in your tasks:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: openai\n    operation: completion\n    arguments:\n      prompt: \"Summarize this text\"\n    secret_name: openai_api_key\n```\n\n### Using Secrets in Expressions\n\nYou can also reference secrets in expressions:\n\n```yaml\nsteps:\n  - kind: prompt\n    model: gpt-4\n    prompt: \"Generate a summary\"\n    template_variables:\n      api_url: \"$ f'https://api.example.com/v1?key={secrets.api_key}'\"\n```\n\n## Secret Names and Conventions\n\nSecret names must:\n- Begin with a letter\n- Contain only alphanumeric characters and underscores\n- Be unique within a developer account\n\nGood naming conventions:\n- Use descriptive names like `stripe_api_key` instead of just `api_key`\n- Include service names in the key name\n- Use consistent formatting (snake_case recommended)\n\n## Next Steps\n\n- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets\n- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets\n- [API Reference](/api-reference#tag/secrets) - Complete API reference for secrets"
  },
  {
    "path": "documentation/concepts/sessions.mdx",
    "content": "---\ntitle: 'Sessions'\ndescription: 'Understanding Julep Sessions and state management'\nicon: 'memory'\n---\n\n## Overview\n\nSessions in Julep are the backbone of stateful interactions between users and agents. They maintain the context and history of conversations, enabling personalized and coherent interactions over extended periods. Whether it's handling ongoing customer support inquiries or having a conversation with a user, sessions ensure that the agent retains necessary information to provide meaningful responses.\n\n## Components\n\nSessions are comprised of several key components that work together to manage state and context:\n\n- **Session ID**: A unique identifier (`uuid7`) for each session.\n- **User**: The individual or entity interacting with the agent, represented by its id.\n- **Agent**: The AI entity interacting with the user within the session, represented by its id.\n- **History**: The history of the conversation, which the agent uses to generate relevant responses.\n- **System Template**: A specific system prompt template that sets the background for this session.\n- **Situation**: A description of the current situation for the session.\n- **Metadata**: Additional data associated with the session, such as user preferences, session preferences, and other relevant information.\n\n### Session Configuration Options\n\nWhen creating a session, you can leverage the following configuration options to tailor the experience:\n\n| Option               | Type                                     | Description                                                                                       | Default        |\n|----------------------|------------------------------------------|---------------------------------------------------------------------------------------------------|----------------|\n| `agent`              | `UUID` \\| `None`                             | The ID of the agent to associate with the session                                                | `None`         |\n| `user`               | `UUID` \\| `None`                             | The ID of the user interacting with the agent                                                    | `None`         |\n| `context_overflow`   | `truncate` \\| `adaptive` \\| `None`       | Strategy for handling context overflow: `truncate` cuts off the oldest context; `adaptive` adjusts dynamically | `None`         |\n| `metadata`           | `object` \\| `None`               | Additional metadata for the session (e.g., user preferences)                                      | `None`         |\n| `system_template`    | `str` \\| `None`                              | A specific system prompt template that sets the background for this session                        | `None`         |\n| `render_templates`   | `StrictBool`                               | Whether to render system and assistant messages as Jinja templates                                 | `True`         |\n| `token_budget`       | `int` \\| `None`                              | Threshold value for the adaptive context functionality                                           | `None`         |\n| `auto_run_tools`     | `StrictBool`                               | Whether to automatically execute tools and send the results back to the model when available      | `False`        |\n| `forward_tool_calls` | `StrictBool`                               | Whether to forward tool calls directly to the model                                               | `False`        |\n| `recall_options`     | `object` \\| `None`                    | Options for different RAG search modes (VectorDocSearch, TextOnlyDocSearch, HybridDocSearch) in the session                                  | `VectorDocSearch`         |\n\n### Recall Options (RAG Search)\n\nWhen configuring a session, you can specify recall options to control how context or certain data is recalled during the session. Below are the available options based on search mode:\n\n<Tabs>\n  <Tab title=\"Vector Search (VectorDocSearch)\">\n    | Parameter          | Type      | Description                                                                                | Default |\n    |-------------------|-----------|--------------------------------------------------------------------------------------------|---------|\n    | `mode`            | `Literal[\"vector\"]`     | The mode to use for the search (must be \"vector\")                                         | `\"vector\"` |\n    | `lang`            | `str`     | The language for text search (other languages coming soon)                                 | `en-US` |\n    | `limit`           | `int`     | The limit of documents to return (1-50)                                                    | `10`    |\n    | `max_query_length`| `int`     | The maximum query length (100-10000 characters)                                            | `1000`  |\n    | `metadata_filter` | `object`  | Metadata filter to apply to the search                                                     | `{}`    |\n    | `num_search_messages` | `int`    | The number of search messages to use for the search (1-50)                                 | `4`     |\n    | `confidence`      | `float`   | The confidence cutoff level (-1 to 1)                                                      | `0.5`     |\n    | `mmr_strength`    | `float`   | MMR Strength (mmr_strength = 1 - mmr_lambda) (0 to 1)                                     | `0.5`     |\n  </Tab>\n\n  <Tab title=\"Text Search (TextOnlyDocSearch)\">\n    | Parameter          | Type      | Description                                                                                | Default |\n    |-------------------|-----------|--------------------------------------------------------------------------------------------|---------|\n    | `mode`            | `Literal[\"text\"]`     | The mode to use for the search (must be \"text\")                                           | `\"text\"` |\n    | `lang`            | `str`     | The language for text search (other languages coming soon)                                 | `en-US` |\n    | `limit`           | `int`     | The limit of documents to return (1-50)                                                    | `10`    |\n    | `max_query_length`| `int`     | The maximum query length (100-10000 characters)                                            | `1000`  |\n    | `metadata_filter` | `object`  | Metadata filter to apply to the search                                                     | `{}`    |\n    | `num_search_messages` | `int`    | The number of search messages to use for the search (1-50)                                 | `4`     |\n    | `trigram_similarity_threshold` | `float` | The threshold for trigram similarity matching (must be between 0 and 1) | `0.6` |\n  </Tab>\n\n  <Tab title=\"Hybrid Search (HybridDocSearch)\">\n    | Parameter          | Type      | Description                                                                                | Default |\n    |-------------------|-----------|--------------------------------------------------------------------------------------------|---------|\n    | `mode`            | `Literal[\"hybrid\"]`     | The mode to use for the search (must be \"hybrid\")                                         | `\"hybrid\"` |\n    | `lang`            | `str`     | The language for text search (other languages coming soon)                                 | `english_unaccent` |\n    | `limit`           | `int`     | The limit of documents to return (1-50)                                                    | `10`    |\n    | `max_query_length`| `int`     | The maximum query length (100-10000 characters)                                            | `1000`  |\n    | `metadata_filter` | `object`  | Metadata filter to apply to the search                                                     | `{}`    |\n    | `num_search_messages` | `int`    | The number of search messages to use for the search (1-50)                                 | `4`     |\n    | `alpha`           | `float`   | Weight between text-based and vector-based search (0=pure text, 1=pure vector)            | `0.5`  |\n    | `confidence`      | `float`   | The confidence cutoff level (-1 to 1)                                                      | `0.5`     |\n    | `mmr_strength`    | `float`   | MMR Strength (mmr_strength = 1 - mmr_lambda) (0 to 1)                                     | `0.5`     |\n    | `trigram_similarity_threshold` | `float` | The threshold for trigram similarity matching (must be between 0 and 1) | `0.6` |\n    | `k_multiplier`    | `int`     | Controls how many intermediate results to fetch before final scoring                        | `7`     |\n  </Tab>\n</Tabs>\n\n<Note>\n- When `recall_options` is not explicitly set (for instance, it is `None`), `vector` search mode is used with default parameters.\n- The default parameters for each search mode are based on our internal benchmarking. These values provide a good starting point, but you may need to adjust them depending on your specific use case to achieve optimal results.\n</Note>\n\n<Info>\n**Hybrid Search with Trigram Support**\n\nJulep's hybrid search combines multiple search techniques:\n1. **Traditional full-text search** using PostgreSQL's tsquery/tsrank for keyword matching\n2. **Vector-based semantic search** using embeddings for contextual understanding\n3. **Trigram fuzzy matching** for handling typos, spelling variations, and morphological differences\n\nThe trigram search capability uses PostgreSQL's pg_trgm extension enhanced with Levenshtein distance calculations to provide resilient document retrieval even when search terms contain variations or errors. This is especially useful for natural language queries that may contain typos or alternative word forms.\n\nYou can control the fuzzy matching behavior using the `trigram_similarity_threshold` parameter - higher values (e.g., 0.8) require closer matches while lower values (e.g., 0.3) are more lenient. For more details on the advanced search capabilities, see the [Documents (RAG)](/concepts/docs#advanced-search-features) section.\n</Info>\n\n### System Template\n\n<Info>\nThe **System Template** is a specific system prompt written as a Jinja template that sets the foundational context and instructions for the agent within a session. It defines the background, directives, and any relevant information that the agent should consider when interacting with the user. \n\nFor a comprehensive guide on system templates including available variables, customization options, and advanced usage patterns, see the [System Templates](/advanced/system-templates) documentation. For more details on Jinja templates, refer to the [Jinja documentation](https://jinja.palletsprojects.com/).\n<Accordion title=\"Default System Template\" icon=\"template\">\n```python [expandable]\n{%- if agent.name -%}\nYou are {{agent.name}}.{{\" \"}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{\" \"}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n  {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n  {%- if agent.instructions is string -%}\n    {{agent.instructions}}{{NEWLINE}}\n  {%- else -%}\n    {%- for instruction in agent.instructions -%}\n      - {{instruction}}{{NEWLINE}}\n    {%- endfor -%}\n  {%- endif -%}\n  {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n  {%- for doc in docs -%}\n    {{doc.title}}{{NEWLINE}}\n    {%- if doc.content is string -%}\n      {{doc.content}}{{NEWLINE}}\n    {%- else -%}\n      {%- for snippet in doc.content -%}\n        {{snippet}}{{NEWLINE}}\n      {%- endfor -%}\n    {%- endif -%}\n    ---\n  {%- endfor -%}\n{%- endif -%}\n```\n</Accordion>\n</Info>\n\n\n## How to Use Sessions\n\nSessions are integral to maintaining a continuous and coherent interaction between users and agents. Here's how to create and manage sessions using Julep's SDKs.\n\n### Creating a Session\n\nHere are examples of how to create a session using the SDKs:\n\n<CodeGroup>\n    ```python Python\n    client = Julep(api_key=\"YOUR_API_KEY\")\n    session = client.sessions.create(\n        agent=\"agent_id\",\n        user=\"user_id\",\n        context_overflow=\"adaptive\",\n    )\n    ```\n\n    ```javascript Node.js\n    const client = new Julep({ apiKey: 'YOUR_API_KEY' });\n    const session = await client.sessions.create({\n        agent_id: \"agent_id\",\n        user_id: \"user_id\",\n        context_overflow: \"adaptive\",\n    });\n    ```\n</CodeGroup>\n\n<Tip>\n    Check out the [API reference](/api-reference/sessions) or SDK reference ([Python](/sdks/python/reference#sessions) or [JavaScript](/sdks/nodejs/reference#sessions)) for more details on different operations you can perform on sessions.\n</Tip>\n\n### Chatting in a Session\n\nOnce a session is created, you can engage in a conversation by sending messages to the agent within that session.\n\n<CodeGroup>\n    ```python Python\n    client = Julep(api_key=\"YOUR_API_KEY\")\n    response = client.sessions.chat(\n        session_id=\"SESSION_ID\",\n        messages=[\n            {\n                \"role\": \"user\", # or \"system\"\n                \"content\": \"YOUR_MESSAGE\"\n            }\n        ]\n    )\n    print(\"Agent's response:\", response.choices[0].message.content)\n    ```\n\n    ```javascript Node.js\n    const client = new Julep({ apiKey: 'YOUR_API_KEY' });\n    const response = await client.sessions.chat({\n        session_id: \"SESSION_ID\",\n        messages: [\n            {\n                role: \"user\",\n                content: \"YOUR_MESSAGE\"\n            }\n        ]\n    });\n    console.log(\"Agent:\", response.choices[0].message.content);\n    ```\n</CodeGroup>\n\n\n## Relationship to Other Concepts\n\nThis section will help you understand how sessions relate to other concepts in Julep.\n\n### Agents\n\nAgents operate within sessions to provide personalized and context-aware interactions. While an agent defines the behavior and capabilities, a session maintains the state and context of interactions between the agent and the user. In other words, the history of a conversation is tied to a session, rather than an agent.\n\nExample:\n\n```python\nagent = client.agents.create(\n    name=\"David\",\n    about=\"A news reporter\",\n    model=\"gpt-4o-mini\",\n    instructions=[\"Keep your responses concise and to the point.\", \"If you don't know the answer, say 'I don't know'\"],\n    metadata={\"channel\": \"FOX News\"},\n)\n\nsession1 = client.sessions.create(agent=agent.id, user=\"user_id\", situation=\"The user is interested in the latest news about the stock market.\")\nsession2 = client.sessions.create(agent=agent.id, user=\"user_id\", situation=\"The user is interested in political news in the United States.\")\n```\n\n<Info>\nIn this example, the agent David is used in two different sessions, each with a different situation. The agent's behavior and responses are tailored to the specific situation of each session, and the history of messages in `session1` and `session2` are separate.\n</Info>\n\n### Users\n\nWhen a user (or more) is added to a session, the session will be able to access information about the user such as `name`, and `about` in order to personalize the interaction. Check out the `system_template` to see how the user's info is being accessed.\n\nThis is how you can create a user and associate it with a session:\n\n<CodeGroup>\n    ```python Python\n    client = Julep(api_key=\"YOUR_API_KEY\")\n    user = client.users.create(name=\"John Doe\", about=\"A 21 year old man who is a student at MIT.\")\n    agent = client.agents.create(name=\"Mark Lee\", about=\"A 49 year old man who is a retired software engineer.\")\n    session = client.sessions.create(agent_id=agent.id, user_id=user.id)\n    ```\n\n    ```javascript Node.js\n    const client = new Julep({ apiKey: 'YOUR_API_KEY' });\n    const user = await client.users.create({\n        name: \"John Doe\",\n        about: \"A 21 year old man who is a student at MIT.\"\n    });\n    const agent = await client.agents.create({\n        name: \"Mark Lee\",\n        about: \"A 49 year old man who is a retired software engineer.\"\n    });\n    const session = await client.sessions.create({\n        agent_id: agent.id,\n        user_id: user.id\n    });\n    ```\n</CodeGroup>\n\n<Info>\nIn this example, the user John Doe is associated with the agent Mark Lee in the session. The session will use the user's information to personalize the interaction, such as using the user's name in the system prompt.\n</Info>\n\n### Tools\n\nSessions have the ability to use [Tools](/concepts/tools). When `auto_run_tools` is set to `true` (available in chat calls), if an agent has a tool and the LLM decides to use it, the tool will be executed automatically and the result will be sent back to the LLM for further processing. When `auto_run_tools` is `false` (default), tool calls are returned in the response without execution.\n\nExample:\n\nIf the agent that's associated with the session has a tool called `fetch_weather`, and the LLM decides to use it:\n- With `auto_run_tools=true`: The tool executes automatically and returns weather data to the LLM\n- With `auto_run_tools=false`: The tool call is returned in the response for manual execution\n\n<CodeGroup>\n    ```python Python\n    # With automatic tool execution\n    response = client.sessions.chat(\n        session_id=\"session_id\",\n        messages=[\n            {\n                \"role\": \"user\",\n                \"content\": \"What is the weather in San Francisco?\"\n            }\n        ],\n        auto_run_tools=True,  # Tools execute automatically\n        recall_tools=True     # Tool calls/results included in message history\n    )\n\n    print(\"Agent's response:\", response.choices[0].message.content)\n    # Agent's response: The weather in San Francisco is 70 degrees and it's sunny. Humidity is 50%, and the wind speed is around 10 mph.\n    \n    # Without automatic tool execution (default)\n    response = client.sessions.chat(\n        session_id=\"session_id\",\n        messages=[\n            {\n                \"role\": \"user\",\n                \"content\": \"What is the weather in San Francisco?\"\n            }\n        ],\n        auto_run_tools=False  # Default - returns tool calls without execution\n    )\n    \n    # Check if tool calls were made\n    if response.choices[0].message.tool_calls:\n        print(\"Tool calls:\", response.choices[0].message.tool_calls)\n        # You need to execute these tools manually and send results back\n    ```\n\n    ```javascript Node.js\n    // With automatic tool execution\n    const response = await client.sessions.chat({\n        session_id: \"session_id\",\n        messages: [\n            {\n                role: \"user\",\n                content: \"What is the weather in San Francisco?\"\n            }\n        ],\n        auto_run_tools: true,  // Tools execute automatically\n        recall_tools: true     // Tool calls/results included in message history\n    });\n    console.log(\"Agent:\", response.choices[0].message.content);\n    // Agent's response: The weather in San Francisco is 70 degrees and it's sunny. Humidity is 50%, and the wind speed is around 10 mph.\n    \n    // Without automatic tool execution (default)\n    const response2 = await client.sessions.chat({\n        session_id: \"session_id\",\n        messages: [\n            {\n                role: \"user\",\n                content: \"What is the weather in San Francisco?\"\n            }\n        ],\n        auto_run_tools: false  // Default - returns tool calls without execution\n    });\n    \n    // Check if tool calls were made\n    if (response2.choices[0].message.tool_calls) {\n        console.log(\"Tool calls:\", response2.choices[0].message.tool_calls);\n        // You need to execute these tools manually and send results back\n    }\n    ```\n</CodeGroup>\n\n### Documents\n\nWhen chatting in a session, the session can automatically search for documents that are associated with any of the agents and/or users that participate in the session. You can control whether the session should search for documents when chatting using the `recall` option of the `chat` method, which is set to `True` by default. You can also set the session's `recall_options` when creating the session to control how the session should search for documents.\n\n<CodeGroup>\n    ```python Python [expandable]\n    # Create a session with custom recall options\n    client.sessions.create(\n        agent=agent.id,\n        user=user.id,\n        recall=True,\n        recall_options={\n            \"mode\": \"vector\", # or \"hybrid\", \"text\"\n            \"num_search_messages\": 4, # number of messages to search for documents\n            \"max_query_length\": 1000, # maximum query length\n            \"alpha\": 0.7, # weight to apply to BM25 vs Vector search results (ranges from 0 to 1)\n            \"confidence\": 0.6, # confidence cutoff level (ranges from -1 to 1)\n            \"limit\": 10, # limit of documents to return\n            \"lang\": \"en-US\", # language to be used for text-only search\n            \"metadata_filter\": {}, # metadata filter to apply to the search\n            \"mmr_strength\": 0, # MMR Strength (ranges from 0 to 1)\n        }\n    )\n\n    # Chat in the session\n    response = client.sessions.chat(\n        session_id=session.id,\n        messages=[\n            {\n                \"role\": \"user\",\n                \"content\": \"Tell me about Julep\"\n            }\n        ],\n        recall=True\n    )\n    print(\"Agent's response:\", response.choices[0].message.content)\n    print(\"Searched Documents:\", response.docs)\n    ```\n\n    ```javascript Node.js [expandable]\n    client.sessions.create({\n        agent: agent.id,\n        user: user.id,\n        recall: true,\n        recall_options: {\n            mode: \"vector\", // or \"hybrid\", \"text\"\n            num_search_messages: 4, // number of messages to search for documents\n            max_query_length: 1000, // maximum query length\n            alpha: 0.7, // weight to apply to BM25 vs Vector search results (ranges from 0 to 1)\n            confidence: 0.6, // confidence cutoff level (ranges from -1 to 1)\n            limit: 10, // limit of documents to return\n            lang: \"en-US\", // language to be used for text-only search\n            metadata_filter: {}, // metadata filter to apply to the search\n            mmr_strength: 0, // MMR Strength (ranges from 0 to 1)\n        }\n    });\n\n    // Chat in the session\n    const response = await client.sessions.chat({\n        session_id: session.id,\n        messages: [\n            {\n                role: \"user\",\n                content: \"Tell me about Julep\"\n            }\n        ],\n        recall: true\n    });\n    ```\n</CodeGroup>\n\n<Info>\n    When running the above code with an agent that has documents about Julep, the session will search for documents that are relevant to the conversation and return them in the `response.docs` field.\n    <Accordion title=\"Output\" icon=\"search\">\n        ``` [expandable]\n        Agent's response: Julep is a comprehensive platform designed for creating production-ready AI systems and agents. Here are the key aspects of Julep:\n\nCore Features:\n1. Complete Infrastructure Layer\n- Provides infrastructure between LLMs and software\n- Built-in support for long-term memory\n- Multi-step process management\n- State management capabilities\n\n2. AI Agent Development\n- Creates persistent AI agents that remember past interactions\n- Supports complex task execution\n- Enables multi-step workflows\n- Includes built-in tools and integrations\n\n3. Production-Ready Features\n- Automatic retries for failed steps\n- Message resending capabilities\n- Task recovery systems\n- Real-time monitoring\n- Error handling\n- Automatic scaling and load balancing\n\n4. Development Approach\n- Uses 8-Factor Agent methodology\n- Treats prompts as code with proper versioning\n- Provides clear tool interfaces\n- Offers model independence to avoid vendor lock-in\n- Includes structured reasoning capabilities\n- Maintains ground truth examples for validation\n\nAvailable Resources:\n- Documentation: https://docs.julep.ai/\n- API Playground: https://dev.julep.ai/api/docs\n- Python SDK: https://github.com/julep-ai/python-sdk/blob/main/README.md\n- JavaScript SDK: https://github.com/julep-ai/node-sdk/blob/main/README.md\n- Various use case examples and cookbooks\n\nYou can explore different use cases through their cookbooks, including:\n- User Profiling\n- Email Assistant\n- Trip Planner\n- Document Management\n- Website Crawler\n- Multi-step Tasks\n- Advanced Chat Interactions\n\nFor additional support or to learn more:\n- Discord Community: https://discord.gg/2EUJzJU2Yt\n- Book a Demo: https://calendly.com/ishita-julep\n- Dev Support: hey@julep.ai\n\n        Searched Documents: \n        ### Build faster using Julep API\n### Deploy multi-step workflows easily with\n### built-in tools and\n### State management that is\n### production ready from day one Keep me informed\n### Build faster using Julep API\n### Deploy multi-step workflows easily with built-in tools and State management that is production ready from day one Keep me informed\nKeep me informed\nDev Resources\n[Docs](https://docs.julep.ai/)\n[Get API Key](https://dashboard-dev.julep.ai/)\n[API Playground](https://dev.julep.ai/api/docs)\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\n[Integration List](https://github.com/julep-ai/julep/tree/dev?tab=readme-ov-file#integrations)\nUsecases\n[User Profiling](https://github.com/julep-ai/julep/blob/dev/cookbooks/09-User_Management_and_Personalization.py)\n[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb)\n[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/04-TripPlanner_With_Weather_And_WikiInfo.ipynb)\n[Doc Management](https://github.com/julep-ai/julep/blob/dev/cookbooks/10-Document_Management_and_Search.py)\n[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/01-Website_Crawler_using_Spider.ipynb)\n[Multi-step Tasks](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-Designing_Multi-Step_Tasks.py)\n[Advanced Chat](https://github.com/julep-ai/julep/blob/dev/cookbooks/11-Advanced_Chat_Interactions.py)\nCompany\n[About](./about)\n[Contact Us](./contact)\n[Book Demo](https://calendly.com/ishita-julep)\nSocials\n[Github](https://github.com/julep-ai/julep)\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\n[Twitter](https://x.com/julep_ai)\n[Dev.to](https://dev.to/julep)\n[Hugging Face](https://huggingface.co/julep-ai)\n[Youtube](https://www.youtube.com/@julep_ai)\nBuilt by Engineers, for Engineers\n©Julep AI Inc 2024\nDev Resources\n[Docs](https://docs.julep.ai/)\n[Get API Key](https://dashboard-dev.julep.ai/)\n[API Playground](https://dev.julep.ai/api/docs)\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\n[Integration List](https://github.com/julep-ai/julep/tree/dev?tab=readme-ov-file#integrations)\nUsecases\n[User Profiling](https://github.com/julep-ai/julep/blob/dev/cookbooks/09-User_Management_and_Personalization.py)\n[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb)\n[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/04-TripPlanner_With_Weather_And_WikiInfo.ipynb)\n[Doc Management](https://github.com/julep-ai/julep/blob/dev/cookbooks/10-Document_Management_and_Search.py)\n[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/01-Website_Crawler_using_Spider.ipynb)\n[Multi-step Tasks](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-Designing_Multi-Step_Tasks.py)\n[Advanced Chat](https://github.com/julep-ai/julep/blob/dev/cookbooks/11-Advanced_Chat_Interactions.py)\nCompany\n[About](./about)\n[Contact Us](./contact)\n[Book Demo](https://calendly.com/ishita-julep)\nSocials\n[Github](https://github.com/julep-ai/julep)\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\n[Twitter](https://x.com/julep_ai)\n[Dev.to](https://dev.to/julep)\n[Hugging Face](https://huggingface.co/julep-ai)\n[Youtube](https://www.youtube.com/@julep_ai)\nBuilt by Engineers, for Engineers\n©Julep AI Inc 2024\nDev Resources\n[Docs](https://docs.julep.ai/)\n[Get API Key](https://dashboard-dev.julep.ai/)\n[API Playground](https://dev.julep.ai/api/docs)\n[Python SDK](https://github.com/julep-ai/python-sdk/blob/main/README.md)\n[Javascript SDK](https://github.com/julep-ai/node-sdk/blob/main/README.md)\n[Integration List](https://github.com/julep-ai/julep/tree/dev?tab=readme-ov-file#integrations)\nUsecases\n[User Profiling](https://github.com/julep-ai/julep/blob/dev/cookbooks/09-User_Management_and_Personalization.py)\n[Email Assistant (Mailgun)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb)\n[Trip Planner (Weather + Wiki)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/04-TripPlanner_With_Weather_And_WikiInfo.ipynb)\n[Doc Management](https://github.com/julep-ai/julep/blob/dev/cookbooks/10-Document_Management_and_Search.py)\n[Website Crawler (Spider)](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/01-Website_Crawler_using_Spider.ipynb)\n[Multi-step Tasks](https://github.com/julep-ai/julep/blob/dev/cookbooks/06-Designing_Multi-Step_Tasks.py)\n[Advanced Chat](https://github.com/julep-ai/julep/blob/dev/cookbooks/11-Advanced_Chat_Interactions.py)\nCompany\n[About](./about)\n[Contact Us](./contact)\n[Book Demo](https://calendly.com/ishita-julep)\nSocials\n[Github](https://github.com/julep-ai/julep)\n[LinkedIn](https://www.linkedin.com/company/julep-ai)\n[Twitter](https://x.com/julep_ai)\n[Dev.to](https://dev.to/julep)\n[Hugging Face](https://huggingface.co/julep-ai)\n[Youtube](https://www.youtube.com/@julep_ai)\nBuilt by Engineers, for Engineers\n©Julep AI Inc 2024\nThis chunk provides an overview of resources and support options offered by Julep AI, including documentation, development tools, community links, and contact information for booking demos or reaching out for support. It highlights features such as the Julep API, multi-step workflow deployment, and various use cases relevant for developers.\n        ```\n    </Accordion>\n    This example is taken from the `crawling-and-rag` cookbook. Check it out [here](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/10-crawling-and-rag.ipynb).\n</Info>\n\n## Best Practices\n\n<CardGroup cols={3}>\n  <Card title=\"Session Management\" icon=\"recycle\">\n    <ul>\n      <li>**1. Reuse Sessions**: Reuse existing sessions for returning users to maintain continuity in interactions.</li>\n      <li>**2. Session Cleanup**: Regularly clean up inactive sessions to manage resources efficiently.</li>\n      <li>**3. Context Overflow Strategy**: Choose an appropriate context overflow strategy (e.g., \"adaptive\") to handle long conversations without losing important information.</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Personalization\" icon=\"user\">\n    <ul>\n      <li>**1. Leverage Metadata**: Use session metadata to store and retrieve user preferences, enhancing personalized interactions.</li>\n      <li>**2. Maintain Context**: Ensure that the context within sessions is updated and relevant to provide coherent and context-aware responses.</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Performance Optimization\" icon=\"gauge\">\n    <ul>\n      <li>**1. Efficient Searches**: Optimize search queries within sessions to retrieve relevant documents quickly.</li>\n      <li>**2. Manage Token Usage**: Monitor and manage token usage to ensure efficient use of resources, especially in long sessions.</li>\n    </ul>\n  </Card>\n</CardGroup>\n\n## Next Steps\n\n- [Agent Tools](/concepts/tools) - Learn about tools and how to use them with agents\n- [Agent Tasks](/concepts/tasks) - Learn about tasks and how to use them with agents  \n- [Agent Docs](/concepts/docs) - Learn about docs and how to use them with agents"
  },
  {
    "path": "documentation/concepts/tasks.mdx",
    "content": "---\ntitle: 'Tasks'\ndescription: 'Understanding Julep Tasks and workflows'\nicon: 'list-check'\n---\n\n## Overview\n\nTasks are GitHub Actions-style workflows that define multi-step actions in Julep. Think of them as recipes that tell an agent exactly how to accomplish a goal. For example, a task might outline the steps to \"Summarize a Research Paper\" or \"Debug a Code Issue\".\n\n<Frame>\n  <iframe \n  src=\"https://www.loom.com/embed/c5cda67936254465aaff4548245b3e13?hideEmbedTopBar=true\" \n  alt=\"Tasks in action\" \n  width=\"720\" \n  height=\"480\"  \n  allow=\"autoplay; encrypted-media\" \n  allowfullscreen\n  />\n</Frame>\n\nHere are some of the key features of tasks:\n\n- Connect multiple AI operations seamlessly\n- Make decisions based on intermediate results\n- Run operations in parallel for efficiency\n- Integrate with external tools and APIs\n- Maintain state throughout execution\n\n## Components\n\nA task consists of several key components which can be broadly classified into:\n\n### Input Schema\n\n```yaml YAML\nname: Summarize Document\ndescription: Create a concise summary of any document\ninput_schema:\n  type: object\n  properties:\n    document_text:\n      type: string\n      description: The text to summarize\n```\n\n<Warning>\n  **⚠️ Workflow Input Size Warning**: Avoid passing extremely large objects as input to your workflows, as this can cause execution failures. Large inputs (such as massive JSON objects, extensive arrays, or huge text files) may exceed memory limits or hit serialization constraints.\n\n  **What to do instead:**\n  - **Break large data into smaller chunks** and process them iteratively\n  - **Use file uploads** and pass file references instead of raw content\n  - **Implement pagination** for large datasets\n\n  **Rule of thumb:** If your input data is larger than a few megabytes, consider alternative approaches.\n</Warning>\n\n### Tools\n\nTools are functions that can be used by an agent to perform tasks. Julep supports:\n\n- [User-defined functions](/concepts/tools#user-defined-functions)\n- [System tools](/concepts/tools#system-tools)\n- [Integrations](/concepts/tools#integration-tools)\n- [API calls](/concepts/tools#api-call-tools)\n\nLearn more about tools [here](/concepts/tools).\n\n```yaml YAML\ntools:\n- name: internet_search\n  description: Performs an internet search using Brave\n  type: integration\n  integration:\n    provider: brave\n    method: search\n    setup:\n      brave_api_key: <BRAVE_API_KEY>\n```\n\n### Sub-Workflows\n\nA task can be made up of multiple sub-workflows. These sub-workflows can be named and can be used to break down complex tasks into smaller, more manageable pieces.\n\n```yaml YAML\nname: Summarize Document\ndescription: Create a concise summary of any document\n\nsample_sub_workflow:\n- prompt: |-\n    $ f'Tell me a joke about {steps[0].input.topic}:'\n\nmain:\n- workflow: sample_sub_workflow\n  arguments:\n    topic: AI\n```\n\n<Info>\n  You can learn more about sub-workflows [here](/advanced/types-of-task-steps#subworkflow-step).\n</Info>\n\n### Steps\n\n<Note>\n  We use tasks and workflows interchangeably. They are the same except Julep's branding reflects tasks.\n</Note>\n\nBelow is a table of all the steps that can be used in a task.\n\n| Name          | Description                                                                 |\n|---------------|-----------------------------------------------------------------------------|\n| [Tool Call](/advanced/types-of-task-steps#tool-call-step) | Execute tools defined in the task |\n| [Prompt](/advanced/types-of-task-steps#prompt-step) | Send messages to the AI model |\n| [Evaluate](/advanced/types-of-task-steps#evaluate-step) | Perform calculations or data manipulation |\n| [Wait for Input](/advanced/types-of-task-steps#wait-for-input-step) | Pause workflow for user input |\n| [Subworkflow](/advanced/types-of-task-steps#subworkflow-step) | Execute a subworkflow |\n| [Set](/advanced/types-of-task-steps#set-step) | Store values for later use |\n| [Get](/advanced/types-of-task-steps#get-step) | Retrieve values from storage |\n| [Foreach](/advanced/types-of-task-steps#foreach-step) | Iterate over a collection |\n| [Map-reduce](/advanced/types-of-task-steps#map-reduce-step) | Process collections in parallel |\n| [Switch](/advanced/types-of-task-steps#switch-step) | Multiple condition handling |\n| [If-else](/advanced/types-of-task-steps#if-else-step) | Conditional execution |\n| [Sleep](/advanced/types-of-task-steps#sleep-step) | Pause execution |\n| [Return](/advanced/types-of-task-steps#return-step) | Return values from workflow |\n| [Yield](/advanced/types-of-task-steps#yield-step) | Execute subworkflows |\n| [Log](/advanced/types-of-task-steps#log-step) | Log messages or specific values |\n| [Error](/advanced/types-of-task-steps#error-step) | Handle errors by specifying an error message |\n\n> You can learn more about workflow steps as to how they work in the [Workflow Steps](/advanced/types-of-task-steps) section.\n\n### Context Variables\n\nTasks have access to three types of context:\n\n#### Input Variables\nAccess input parameters:\n```yaml YAML\n- prompt: $ f'Hello {steps[0].input.user_name}'\n```\n\n#### Step Results\nUse outputs from previous steps:\n```yaml YAML\n- evaluate: $ len(_.search_results)\n- if: $ _.count > 0\n```\n<Accordion title=\"How to access the input and output of a step\">\n\nIn any step, you can access the input and output of a step using the `steps[index].output` or `steps[index].input` variable. For example:\n\n```yaml\n- evaluate:\n    topic: $ steps[0].input.topic\n```\n\n```yaml\n- evaluate:\n    topic: $ steps[0].output.topic\n```\n\nIn Julep, the steps are indexed from 0. So the first step is `steps[0]` and the second step is `steps[1]` and so on.\nFurthermore the first step input is nothing but the task input and the last step output is nothing but the output of the task.\n</Accordion>\n\n<Note>\nTo learn more about how to use the `$` variable and new syntax, please refer to the [New Syntax](/advanced/new-syntax) section.\n</Note>\n\n#### Environment Context\nAccess agent and session data:\n```yaml YAML\n- prompt: $ f'Agent {agent.name} is helping you'\n```\n\n<Info>\n  Input schemas help catch errors early by validating all inputs before execution starts.\n</Info>\n\nHere's how these components work together:\n\n```yaml YAML [expandable]\nname: Process Customer Feedback\ndescription: Analyze and categorize customer feedback\ninput_schema:\n  type: object\n  required: [\"feedback_text\"]\n  properties:\n    feedback_text:\n      type: string\n    sentiment_analysis:\n      type: boolean\n      default: true\n\ntools:\n- name: get_weather_info\n  type: integration  \n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: OPENWEATHERMAP_API_KEY\n\nmain:\n- tool: get_weather_info\n  arguments:\n    location: $ steps[0].input.location\n\n- prompt: |-\n    $ f\"\"\"The weather in {steps[0].output.location} is the following:\n    {steps[0].output.weather}\n    \n    <task>\n    Analyze the weather and provide a summary of the weather in the location. Include some recommendations on what to wear based on the weather.\n    </task>\n    \"\"\"\n```\n\n> Learn more about tools [here](/concepts/tools).\n\n### Metadata\n\nMetadata is a key-value pair that can be used to categorize and filter tasks.\n\n## How to Use Tasks ?\n\n### Creating a Task\n\nHere's a simple task that summarizes a document and checks if the summary is too long. We first define the task in a YAML file and then create it using the Julep SDK.\n\n<CodeGroup>\n\n```yaml task.yaml [expandable]\nname: Summarize Document\ndescription: Create a concise summary of any document\ninput_schema:\n  type: object\n  properties:\n    document_text:\n      type: string\n      description: The text to summarize\n\nmain:\n  - prompt: |-\n      $ f'''Analyze the following text and create a summary:\n      {steps[0].input.document_text}'''\n    unwrap: true\n  - evaluate:\n      too_long: $ len(_) > 500\n  - if: $ _.too_long\n    then:\n      prompt: |-\n        $ f'''Make the summary more concise:\n        {steps[0].output}'''\n      unwrap: true\n    else: \n      evaluate:\n        content: $ steps[0].output\n```\n\n```python main.py\nimport yaml\nimport os\n\ntask_def = yaml.safe_load(open(\"task.yaml\"))\n\ntask = client.tasks.create(\n    agent_id=\"agent_id\",\n    **task_def\n)\n```\n\n```javascript index.js\n\n\n// Create a task\nimport yaml from \"yaml\";\nimport fs from \"fs\";\n\nconst task_definition = yaml.parse(fs.readFileSync(\"task.yaml\", \"utf8\"));\n\nasync function createTask(agentId) {\n  const task = await client.tasks.create(agentId, task_definition);\n  return task;\n}\n```\n</CodeGroup>\n\n<Tip>\n    Check out the API reference [here](/api-reference/tasks) or SDK reference (Python [here](/sdks/python/reference#tasks) or JavaScript [here](/sdks/nodejs/reference#tasks) for more details on different operations you can perform on tasks.\n</Tip>\n\n\n### Executing a Task\n\nHere's how to execute a task:\n\n<CodeGroup>\n```python Python\n# Execute a task\nexecution = client.executions.create(\n  task_id=task.id,\n  input={\n      \"document_text\": \"This is a sample document\"\n  }\n)\n\n# Monitor progress\nwhile True:\n  result = client.executions.get(execution.id)\n  if result.status in [\"succeeded\", \"failed\"]:\n      break\n  time.sleep(1)\n```\n\n```javascript Node.js [expandable]\n// Execute a task\nasync function executeTask(taskId) {\n  const execution = await client.executions.create(taskId, {\n    input: { idea: \"A cat who learns to fly\" },\n  });\n\n  while (true) {\n    const result = await client.executions.get(execution.id);\n    console.log(result.status, result.output);\n\n    if (result.status === \"succeeded\" || result.status === \"failed\") {\n      // 📦 Once the execution is finished, retrieve the results\n      if (result.status === \"succeeded\") {\n        console.log(result.output);\n      } else {\n        throw new Error(result.error);\n      }\n      break;\n    }\n\n    await new Promise((resolve) => setTimeout(resolve, 1000));\n  }\n}\n```\n</CodeGroup>\n\n<Tip>\n    Check out the API reference [here](/api-reference/executions) or SDK reference (Python [here](/sdks/python/reference#executions) or JavaScript [here](/sdks/nodejs/reference#executions) for more details on different operations you can perform on tasks.\n</Tip>\n\n## Relationship to Other Concepts\n\nThis section will help you understand how tasks relate to other concepts in Julep.\n\n### Agents\n\nJulep agents can power tasks by providing memory, context, or tools. Tasks are multi-step workflows designed for complex, automated execution. Whenever you create a task, you can associate it with an agent if you want to leverage that agent's capabilities. Unlike sessions, tasks are not meant for real-time interaction; they run through a defined workflow to achieve a goal.\n\nFor example:\n\n<CodeGroup>\n```python Python [expandable]\nimport yaml\n\n# Create an agent\nagent = client.agents.create(\n  name=\"Customer Support Agent\",\n  about=\"An agent that handles customer support requests\",\n  model=\"gpt-4o\",\n)\n\n# Add a tool to the agent\nclient.agents.tools.create(\n  agent_id=agent.id,\n  **yaml.safe_load(\"\"\"\n  name: send_email\n  type: integration\n  integration:\n    provider: email\n    method: send\n    setup:\n      host: \"smtp.example.com\"\n      port: 587\n      user: \"your_username\"\n      password: \"your_password\"\n  \"\"\"),\n)\n\n# Create a task that inherits this tool\ntask = client.tasks.create(\n  agent_id=agent.id,\n  **yaml.safe_load(\"\"\"\n    name: Handle Support Request\n\n    # Make sure to set this to true if you want to inherit tools from the agent\n    inherit_tools: true\n\n    input_schema:\n      type: object\n      properties:\n        customer_email:\n          type: string\n          description: The email of the customer\n        subject:\n          type: string\n        body:\n          type: string\n          description: The body of the email\n\n    main:\n    - prompt:\n      - role: system\n        content: You are a customer support agent who works for Julep AI. You will be given a support request from a customer. You will need to handle the request by sending a reply email to the customer.\n      - role: user\n        content: |-\n          $ f\"\"\"Handle the support request from this email: {steps[0].input.customer_email}\n          The subject of the email is this:\n          {steps[0].input.subject}\n\n          ---\n\n          The body of the email is this:\n          {steps[0].input.body}\n          \"\"\"\n      unwrap: true\n\n    - tool: send_email\n      arguments:\n        to: $ steps[0].input.customer_email\n        from: \"support@julep.ai\"\n        subject: \"$ f'Re: {steps[0].input.subject}'\"\n        body: $ steps[0].output\n  \"\"\")\n)\n```\n\n```javascript Node.js [expandable]\n// Create an agent\nconst agent = await client.agents.create({ \n  name: \"Customer Support Agent\",\n  about: \"An agent that handles customer support requests\",\n  model: \"gpt-4o\",\n  });\n\n// Add a tool to the agent\nawait client.agents.tools.create(\n  agent.id,\n  yaml.parse(`\n    name: send_email\n    type: integration\n    integration:\n      provider: email\n      method: send\n      setup:\n        host: \"smtp.example.com\"\n        port: 587\n        user: \"your_username\"\n        password: \"your_password\"\n  `)\n);\n\n// Create a task that inherits this tool\nconst task = await client.tasks.create(\n  agent.id, \n  yaml.parse(`\n    name: Handle Support Request\n\n    # Make sure to set this to true if you want to inherit tools from the agent\n    inherit_tools: true\n\n    input_schema:\n      type: object\n      properties:\n        customer_email:\n          type: string\n          description: The email of the customer\n        subject:\n          type: string\n        body:\n          type: string\n          description: The body of the email\n\n    main:\n    - prompt:\n      - role: system\n        content: You are a customer support agent who works for Julep AI. You will be given a support request from a customer. You will need to handle the request by sending a reply email to the customer.\n      - role: user\n        content: |-\n          $ f\"\"\"Handle the support request from this email: {steps[0].input.customer_email}\n          The subject of the email is this:\n          {steps[0].input.subject}\n\n          ---\n\n          The body of the email is this:\n          {steps[0].input.body}\n          \"\"\"\n      unwrap: true\n\n    - tool: send_email\n      arguments:\n        to: $ steps[0].input.customer_email\n        from: \"support@julep.ai\"\n        subject: \"$ f'Re: {steps[0].input.subject}'\"\n        body: $ steps[0].output\n  `)\n);\n```\n</CodeGroup>\n\n### Tools\n\nTask can leverage tools to perform complex operations. There are 2 ways of defining tools for tasks:\n\n1. Associate a tool with an agent, and inherit it in the task definition by setting `inherit_tools` to `true` while creating the task. Example:\n\n<CodeGroup>\n```python Python [expandable]\nclient.agents.tools.create(\n  agent_id=\"agent_id\",\n  **yaml.safe_load(\"\"\"\n    name: get_weather_info\n    type: integration\n    integration:\n      provider: weather\n      setup:\n        openweathermap_api_key: \"your_openweathermap_api_key\"\n  \"\"\")\n\ntask = client.tasks.create(\n  agent_id=\"agent_id\",\n  **yaml.safe_load(\"\"\"\n    name: Get Weather Info\n    inherit_tools: true\n    main:\n      - tool: get_weather_info\n        arguments:\n          location: New York\n  \"\"\")\n)\n```\n\n```javascript Node.js [expandable]\nawait client.agents.tools.create(\n  agent.id,\n  yaml.parse(`\n    name: get_weather_info\n    type: integration\n    integration:\n      provider: weather\n      setup:\n        openweathermap_api_key: \"your_openweathermap_api_key\"\n  `)\n);\n\ntask = await client.tasks.create(\n  agent.id,\n  yaml.parse(`\n    name: Get Weather Info\n    inherit_tools: true\n    main:\n      - tool: get_weather_info\n        arguments:\n          location: New York\n  `)\n);\n```\n</CodeGroup>\n\n2. Define a tool in the task definition. Example:\n\n<CodeGroup>\n```python Python\ntask = client.tasks.create(\n  agent_id=\"agent_id\",\n  **yaml.safe_load(\"\"\"\n    name: Get Weather Info\n    tools:\n    - name: get_weather_info\n      type: integration\n      integration:\n        provider: weather\n        setup:\n          openweathermap_api_key: \"your_openweathermap_api_key\"\n    main:\n      - tool: get_weather_info\n        arguments:\n          location: New York\n  \"\"\")\n)\n```\n\n```javascript Node.js\ntask = await client.tasks.create(\n  agent.id,\n  yaml.parse(`\n    name: Get Weather Info\n    tools:\n    - name: get_weather_info\n      type: integration\n      integration:\n        provider: weather\n        setup:\n          openweathermap_api_key: \"your_openweathermap_api_key\"\n    main:\n      - tool: get_weather_info\n        arguments:\n          location: New York\n  `)\n);\n```\n</CodeGroup>\n\nWhen you define a tool in the task definition, it is available to all steps in that task only. On the other hand, when you associate a tool with an agent, it is available to all the Tasks associated with that agent.\n\n## Best Practices\n\n<CardGroup cols={3}>\n  <Card title=\"Keep Tasks Focused\" icon=\"bullseye\">\n    <ul>\n      <li>1. **Purpose**: Each task should have a single, clear purpose</li>\n      <li>2. **Subtasks**: Break complex workflows into smaller subtasks</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Handle Errors Gracefully\" icon=\"shield-check\">\n    <ul>\n      <li>1. **Error Handling**: Use try/catch blocks for error-prone operations</li>\n      <li>2. **Error Messages**: Provide helpful error messages</li>\n      <li>3. **Fallback Options**: Include fallback options where appropriate</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Optimize Performance\" icon=\"gauge\">\n    <ul>\n      <li>1. **Parallel Execution**: Use parallel execution when steps are independent</li>\n      <li>2. **Map-Reduce**: Use map-reduce to run steps in parallel</li>\n    </ul>\n  </Card>\n</CardGroup>\n\n## Next Steps\n\n- [Workflow Steps](/advanced/types-of-task-steps) - Learn about all available step types\n- [Tools](/concepts/tools) - Learn about tools and how to use them in tasks\n- [Sessions](/concepts/sessions) - Learn about sessions and how to use them in tasks\n\n## See Examples\n\n- [Simple Task notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/basics/02-Simple-Task.ipynb)\n- [Trip Planning Assistant notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/03-trip-planning-assistant.ipynb)\n"
  },
  {
    "path": "documentation/concepts/tools.mdx",
    "content": "---\ntitle: 'Tools'\ndescription: 'Understanding tools in Julep'\nicon: 'screwdriver-wrench'\n---\n\n## Overview\n\nAgents can be given access to a number of \"tools\" -- any programmatic interface that a foundation model can \"call\" with a set of inputs to achieve a goal. For example, it might use a `web_search(query)` tool to search the Internet for some information.\n\nUnlike agent frameworks, julep is a _backend_ that manages agent execution. Clients can interact with agents using our SDKs. julep takes care of executing tasks and running integrations.\n\n## Components\n\nTools in Julep consist of three main components:\n\n1. **Name**: A unique identifier for the tool.\n2. **Type**: The category of the tool. In Julep, there are four types of tools:\n   - **User-defined `functions`**: Function signatures provided to the model, similar to OpenAI's function-calling. These require client handling, and the workflow pauses until the client executes the function and returns the results to Julep. [Learn more](#user-defined-function-tool)\n   - **`system` tools**: Built-in tools for calling Julep APIs, such as triggering task execution or appending to a metadata field. [Learn more](#system-tool)\n   - **`integrations`**: Built-in third-party tools that enhance the capabilities of your agents. [Learn more](#integration-tool)\n   - **`api_calls`**: Direct API calls executed during workflow processes as tool calls. [Learn more](#api-call-tool)\n3. **Arguments**: The inputs required by the tool.\n\n\n#### System Tool\n\nBuilt-in tools that can be used to call the julep APIs themselves, like triggering a task execution, appending to a metadata field, etc. See the [task execution system tool](#task-execution-system-tool) for a complete example.\n\n`System` tools are built into the backend. They get executed automatically when needed. They do not require any action from the client-side. For example,\n\n```yaml YAML\nname: Example system tool task\ndescription: List agents using system call\n\ntools:\n- name: list_agent_docs\n  description: List all docs for the given agent\n  type: system\n  system:\n    resource: agent\n    subresource: doc\n    operation: list\n\nmain:\n- tool: list_agents\n  arguments:\n    limit: $ 10\n```\n\n<Accordion title=\"Available system resources and operations\">\n  <Accordion title=\"Agent\">\n    <ul>\n      <li><strong>list</strong>: List all agents.</li>\n      <li><strong>get</strong>: Get a single agent by id.</li>\n      <li><strong>create</strong>: Create a new agent.</li>\n      <li><strong>update</strong>: Update an existing agent.</li>\n      <li><strong>delete</strong>: Delete an existing agent.</li>\n    </ul>\n  </Accordion>\n  <Accordion title=\"User\">\n    <ul>\n      <li><strong>list</strong>: List all users.</li>\n      <li><strong>get</strong>: Get a single user by id.</li>\n      <li><strong>create</strong>: Create a new user.</li>\n      <li><strong>update</strong>: Update an existing user.</li>\n      <li><strong>delete</strong>: Delete an existing user.</li>\n    </ul>\n  </Accordion>\n  <Accordion title=\"Session\">\n    <ul>\n      <li><strong>list</strong>: List all sessions.</li>\n      <li><strong>get</strong>: Get a single session by id.</li>\n      <li><strong>create</strong>: Create a new session.</li>\n      <li><strong>update</strong>: Update an existing session.</li>\n      <li><strong>delete</strong>: Delete an existing session.</li>\n      <li><strong>chat</strong>: Chat with a session.</li>\n      <li><strong>history</strong>: Get the chat history with a session.</li>\n    </ul>\n  </Accordion>\n  <Accordion title=\"Task\">\n    <ul>\n      <li><strong>list</strong>: List all tasks.</li>\n      <li><strong>get</strong>: Get a single task by id.</li>\n      <li><strong>create</strong>: Create a new task.</li>\n      <li><strong>update</strong>: Update an existing task.</li>\n      <li><strong>delete</strong>: Delete an existing task.</li>\n      <li><strong>execution.create</strong>: Start an execution for a task (see guidance below).</li>\n    </ul>\n  </Accordion>\n  <Accordion title=\"Doc (subresource for agent and user)\">\n    <ul>\n      <li><strong>list</strong>: List all documents.</li>\n      <li><strong>create</strong>: Create a new document.</li>\n      <li><strong>delete</strong>: Delete an existing document.</li>\n      <li><strong>search</strong>: Search for documents.</li>\n    </ul>\n  </Accordion>\n  <Accordion title=\"Additional Operations\">\n    <ul>\n      <li><strong>embed</strong>: Embed a resource (specific resources not specified in the provided code).</li>\n      <li><strong>change_status</strong>: Change the status of a resource (specific resources not specified in the provided code).</li>\n      <li><strong>chat</strong>: Chat with a resource (specific resources not specified in the provided code).</li>\n      <li><strong>history</strong>: Get the chat history with a resource (specific resources not specified in the provided code).</li>\n      <li><strong>create_or_update</strong>: Create a new resource or update an existing one (specific resources not specified in the provided code).</li>\n    </ul>\n  </Accordion>\n</Accordion>\n\n<a id=\"task-execution-system-tool\"></a>\n\n##### Task Execution system tool\n\nUse the `execution.create` task tool when you want an agent run to immediately kick off another task execution. A minimal definition looks like this:\n\n```yaml YAML\ntools:\n  - name: create_task_execution\n    description: Launch a new execution for the current (or another) task\n    type: system\n    system:\n      resource: task\n      subresource: execution\n      operation: create\n\nmain:\n  - tool: create_task_execution\n    arguments:\n      task_id: $ steps[0].input.sub_task_id\n      data:\n        input: {}\n```\n\n<Info>\n`data.input` must satisfy the task's input schema. Use an empty object only when the schema allows it; otherwise populate the fields the task expects.\n</Info>\n\nOperational notes:\n\n- **Re-use existing tasks**: The `task_id` only has to belong to the same developer. You can start executions for tasks attached to different agents you own without extra setup.\n- **Inspect prior runs**: To review execution history, call the REST endpoint `GET /tasks/{task_id}/executions` from a workflow via an `api_call` tool or use the SDK (`client.executions.list(task_id=...)`). That gives you the execution IDs needed to fetch outputs later (e.g. via transitions or `execution.get`).\n\n#### Integration Tool\n\nJulep comes with a number of built-in integrations (as described in the section below). `integration` tools are directly executed on the julep backend. Any additional parameters needed by them at runtime can be set in the `agent/session/user` `metadata` fields.\n\nAn example of how to create a `integration` tool for an agent using the `wikipedia` integration:\n\n```yaml YAML\nname: Example integration tool task\ndescription: Search wikipedia for a query\n\ntools:\n- name: wikipedia_search\n  description: Search wikipedia for a query\n  type: integration\n  integration:\n    provider: wikipedia\n\nmain:\n- tool: wikipedia_search\n  arguments:\n    query: \"Julep\"\n```\n\n<Info>\nCheckout the list of integrations that Julep supports [here](/integrations/supported-integrations).\n</Info>\n\n#### API Call Tool\n\nJulep can also directly make `api_call` during workflow executions as tool calls. Similar to `integration` tools, additional runtime parameters are loaded from metadata fields. \n\nAPI call tools support `params_schema` to define the expected parameters for the API call, enabling better validation and documentation:\n\n```yaml YAML\nname: Example api_call task\ntools:\n- type: api_call\n  name: weather_api\n  description: Get weather information for a location\n  api_call:\n    method: GET  # Required - HTTP method must be specified\n    url: https://api.openweathermap.org/data/2.5/weather  # Required - URL must be specified\n    params_schema:  # Define expected parameters\n      type: object\n      properties:\n        q:\n          type: string\n          description: City name or coordinates\n        units:\n          type: string\n          enum: [metric, imperial]\n          description: Temperature units\n        appid:\n          type: string\n          description: API key (loaded from metadata)\n      required: [q, appid]\n\nmain:\n- tool: weather_api\n  arguments:\n    params:\n      q: $ _.location  # City from input\n      units: \"metric\"\n      appid: $ metadata.weather_api_key  # API key from metadata\n```\n\n<Note>\nThe `params_schema` follows JSON Schema format and helps:\n- Document expected parameters for the API\n- Enable LLMs to understand what parameters the tool accepts\n- Provide validation for API calls\n- Generate better tool descriptions for the model\n</Note>\n\n<AccordionGroup>\n  <Accordion title=\"Available API HTTP Methods\">\n    <ul>\n      <li><strong>GET</strong>: Get a resource.</li>\n      <li><strong>POST</strong>: POST a resource.</li>\n      <li><strong>PUT</strong>: PUT a resource.</li>\n      <li><strong>DELETE</strong>: DELETE a resource.</li>\n      <li><strong>PATCH</strong>: PATCH a resource.</li>\n      <li><strong>HEAD</strong>: HEAD a resource.</li>\n      <li><strong>OPTIONS</strong>: OPTIONS a resource.</li>\n      <li><strong>CONNECT</strong>: CONNECT to a resource.</li>\n      <li><strong>TRACE</strong>: TRACE a resource.</li>\n    </ul>\n  </Accordion>\n  <Accordion title=\"Available API Call Parameters\">\n    <ul>\n      <li><strong>method</strong>: (Required) The HTTP method to use.</li>\n      <li><strong>url</strong>: (Required) The URL to call.</li>\n      <li><strong>params_schema</strong>: JSON Schema definition for API parameters, enabling validation and better LLM understanding.</li>\n      <li><strong>schema</strong>: The schema of the response.</li>\n      <li><strong>headers</strong>: The headers to send with the request.</li>\n      <li><strong>content</strong>: The content as base64 to send with the request.</li>\n      <li><strong>data</strong>: The data to send as form data.</li>\n      <li><strong>files</strong>: The data to send as files data.</li>\n      <li><strong>json</strong>: The JSON body to send with the request.</li>\n      <li><strong>cookies</strong>: The cookies to send with the request.</li>\n      <li><strong>params</strong>: The parameters to send with the request.</li>\n      <li><strong>follow_redirects</strong>: Follow redirects.</li>\n      <li><strong>timeout</strong>: The timeout for the request.</li>\n    </ul>\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n - Arguments provided during the tool call can override the default `method` and `url` set in the `api_call` configuration.\n  - We utlize the python httpx library to make the api calls. Please refer to the [httpx documentation](https://www.python-httpx.org/api/#request-parameters) for more details on the parameters.\n</Note>\n\n#### User-defined Function Tool\n\nThese are function signatures that you can give the model to choose from, similar to how [openai]'s function-calling works. An example:\n\n```yaml YAML [expandable]\nname: Example system tool task\ndescription: List agents using system call\n\ntools:\n  - name: send_notification\n    description: Send a notification to the user\n    type: function\n    function:\n      parameters:\n        type: object\n        properties:\n          text:\n            type: string\n            description: Content of the notification\n\nmain:\n  - tool: send_notification\n    arguments:\n      content: \"hi\"\n```\n\n<Note>\nWhenever julep encounters a user-defined function, it pauses, giving control back to the client and waits for the client to run the function call and give the results back to julep.\n</Note>\n\n##### How User-Defined Functions Work\n\n**User-defined function tools** in Julep work exactly like OpenAI's function calling:\n\n1. **Definition**: You define a function signature with name, description, and parameters schema\n2. **Model Decision**: The LLM decides when to call your function based on the conversation context  \n3. **Execution Pause**: When Julep encounters a user-defined function call, it pauses execution and returns control to your client\n4. **Your Implementation**: You implement the actual function logic in your client code\n5. **Result Return**: You send the function results back to Julep to continue the workflow\n\n<Warning>\nUnlike `integration`, `system`, or `api_call` tools that execute automatically, function tools require manual handling by your client application.\n</Warning>\n\n##### Complete Example: Math Calculator with Function Tools\n\nHere's a comprehensive example showing how to implement and handle user-defined functions:\n\n```python [expandable]\nimport yaml\nimport time\nfrom julep import Julep\n\n# Replace with your API key\nAPI_KEY = \"your-api-key\"\n\nclient = Julep(api_key=API_KEY, environment=\"production\")\n\n# 1. Define your actual functions\ndef add_numbers(a, b):\n    \"\"\"Add two numbers together\"\"\"\n    result = a + b\n    print(f\"Adding {a} + {b} = {result}\")\n    return result\n\ndef multiply_numbers(x, y):\n    \"\"\"Multiply two numbers\"\"\"\n    result = x * y\n    print(f\"Multiplying {x} × {y} = {result}\")\n    return result\n\n# Function dispatcher\nFUNCTION_MAP = {\n    \"add_numbers\": add_numbers,\n    \"multiply_numbers\": multiply_numbers,\n}\n\ndef execute_function(function_name, arguments):\n    \"\"\"Execute a function by name with arguments\"\"\"\n    if function_name not in FUNCTION_MAP:\n        raise ValueError(f\"Unknown function: {function_name}\")\n    \n    func = FUNCTION_MAP[function_name]\n    return func(**arguments)\n\n# 2. Create agent\nagent = client.agents.create(\n    name=\"Math Calculator\",\n    model=\"gpt-4o-mini\",\n    instructions=\"You are a calculator.\"\n)\n\n# 3. Define task with inline tools\ntask_def = yaml.safe_load(\"\"\"\nname: \"function-tool-demo\"\n\ntools:\n  - name: add_numbers\n    type: function\n    function:\n      parameters:\n        type: object\n        properties:\n          a:\n            type: number\n            description: First number\n          b:\n            type: number\n            description: Second number\n        required: [\"a\", \"b\"]\n\nmain:\n  - tool: add_numbers\n    arguments:\n      a: 15\n      b: 27\n\"\"\")\n\n# 4. Create and execute task\ntask = client.tasks.create(agent_id=agent.id, **task_def)\nexecution = client.executions.create(task_id=task.id, input={})\n\nprint(f\"Execution: {execution.id}\")\n\n# 5. Monitor and handle function calls\nfor i in range(15):\n    execution = client.executions.get(execution.id)\n    print(f\"Iteration {i+1}: Status = {execution.status}\")\n    \n    if execution.status == \"awaiting_input\":\n        # Execute the function based on task definition\n        tool_name = task_def[\"main\"][0][\"tool\"]  # \"add_numbers\"\n        arguments = task_def[\"main\"][0][\"arguments\"]  # {\"a\": 15, \"b\": 27}\n        \n        result = execute_function(tool_name, arguments)\n        print(f\"Result: {result}\")\n        \n        # Use change_status to provide tool results\n        client.executions.change_status(\n            execution_id=execution.id,\n            status=\"running\",  # Resume execution\n            input={\"result\": result} \n        )\n        print(\"Sent result back to Julep\")\n        \n    elif execution.status == \"succeeded\":\n        print(f\"Output: {execution.output}\")\n        break\n        \n    elif execution.status == \"failed\":\n        print(f\"Failed: {execution.error}\")\n        break\n    \n    time.sleep(3)\n```\n\n##### Key Points\n\n1. **Execution Status Monitoring**: You must monitor the execution status and watch for `awaiting_input`\n2. **Manual Function Execution**: When status is `awaiting_input`, execute your function locally\n3. **Resume with Results**: Use `change_status` to resume execution with the function output\n4. **Alternative Tool Creation**: You can also use `client.agents.tools.create()` to create tools before running the task\n\n\n## How to Use Tools\n\n### Create a Tool for an Agent\n\nA tool can be created for an agent using the `client.agents.tools.create` method.\n\nAn example of how to create a `integration` tool for an agent using the `wikipedia` integration:\n\n<CodeGroup>\n```python Python\n# Create an agent\nagent = client.agents.create(name=\"My Agent\")\n\n# Associate a tool with the agent\nclient.agents.tools.create(\n        agent_id=AGENT_UUID,\n        **{\n            \"name\": \"wikipedia_search\",\n            \"type\": \"integration\",\n            \"integration\": {\n              \"provider\": \"wikipedia\",\n            } \n          },\n    )\n```\n```javascript Node.js\nasync function createAgent() {\n  const agent = await client.agents.create({\n    name: \"My Agent\",\n  });\n\n  const tool = await client.agents.tools.create(agent.id, {\n    name: \"wikipedia_search\",\n    type: \"integration\",\n    integration: {\n      provider: \"wikipedia\",\n    },\n  });\n  return agent;\n}\n```\n</CodeGroup>\n\n<Tip>\n    Check out the API reference [here](api-reference/agents/tools/create) or SDK reference (Python [here](/sdks/python/reference#Tools) or JavaScript [here](/sdks/nodejs/reference#Tools) for more details on different operations you can perform on agents.\n</Tip>\n\n### Execute a Tool for a Task\n\nTo create a tool for a task, you can use the `client.tasks.create` method and define the tool in that `task` definitions.\n\n<CodeGroup>\n```yaml YAML\nname: Example integration tool task\ndescription: Search wikipedia for a query\n\ntools:\n- name: wikipedia_search\n  description: Search wikipedia for a query\n  type: integration\n  integration:\n    provider: wikipedia\nmain:\n- tool: wikipedia_search\n  arguments:\n    query: \"Julep\"\n```\n\n  ```python Python\n  # Create a task\n  import yaml\n  task_yaml = \"\"\"\n  // ... task yaml here ...\n  \"\"\"\n  task_def = yaml.safe_load(task_yaml)\n  task = client.tasks.create(\n      agent_id=\"agent_id\",\n      **task_def\n  )\n\n  execution = client.executions.create(\n    task_id=task.id,\n    input={\n        \"document_text\": \"This is a sample document\"\n    }\n  )\n  ```\n\n  ```javascript Node.js\n  // Create a task\n  const taskYaml = `\n  // ... task yaml here ...\n  `\n  async function createTask(agentId) {\n    const task = await client.tasks.create(agentId, yaml.parse(taskYaml));\n    return task;\n  }\n  // Execute a task\n  async function executeTask(taskId) {\n    const execution = await client.executions.create(taskId, {\n      input: {\n        document_text: \"This is a sample document\"\n      }\n    });\n    return execution;\n  }\n  ``` \n</CodeGroup>\n<Tip>\n    Check out the API reference [here](api-reference/agents/tools/create) or SDK reference (Python [here](/sdks/python/reference#Tools) or JavaScript [here](/sdks/nodejs/reference#Tools) for more details on different operations you can perform on agents.\n</Tip>\n\n## Relationship to Other Concepts\n\nThis section will help you understand how tools relate to other concepts in Julep.\n\n### Task\n\nWhen a tool is associated with a task, it is meant to be used only for that task. It is not associated with other tasks. An agent associated with that task will have access to that tool, but the same agent associated with another task will not have that access. This ensures that tools are used in a context-specific manner, providing precise functionality tailored to the task's requirements.\n\n### Agent\n\nWhen a tool is associated with an agent, it is meant to be used across all tasks associated with that agent. This allows for greater flexibility and reuse of tools, as the agent can leverage the same tool in multiple tasks. It also simplifies the management of tools, as they only need to be defined once for the agent and can then be utilized in various tasks.\n\n## Automatic Tool Execution\n\nJulep supports automatic tool execution, allowing agents to seamlessly use tools without manual intervention. This feature is controlled by the `auto_run_tools` parameter.\n\n### How Automatic Tool Execution Works\n\n1. **In Sessions (Chat)**:\n   - Set `auto_run_tools=true` when calling `sessions.chat()`\n   - When the model decides to use a tool, Julep automatically:\n     - Executes the tool with the provided arguments\n     - Captures the tool's output\n     - Sends the results back to the model\n     - Continues the conversation with the tool results\n   - All happens in a single API call - no manual intervention needed\n\n2. **In Tasks (Prompt Steps)**:\n   - Set `auto_run_tools: true` in the prompt step definition\n   - During task execution, tools are automatically invoked when needed\n   - Results flow seamlessly into subsequent steps\n\n3. **Default Behavior** (`auto_run_tools=false`):\n   - Tool calls are returned in the response\n   - Your application must handle tool execution\n   - Results must be sent back in a follow-up message\n\n### Example: Session with Automatic Tools\n\n<CodeGroup>\n```python Python\n# Create agent with multiple tools\nagent = client.agents.create(\n    name=\"Research Assistant\",\n    tools=[\n        {\n            \"name\": \"web_search\",\n            \"type\": \"integration\",\n            \"integration\": {\"provider\": \"brave\"}\n        },\n        {\n            \"name\": \"wikipedia\",\n            \"type\": \"integration\",\n            \"integration\": {\"provider\": \"wikipedia\"}\n        }\n    ]\n)\n\n# Chat with automatic tool execution\nresponse = client.sessions.chat(\n    session_id=session.id,\n    messages=[\n        {\n            \"role\": \"user\",\n            \"content\": \"Tell me about the latest developments in quantum computing\"\n        }\n    ],\n    auto_run_tools=True  # Enable automatic execution\n)\n\n# Response includes information gathered from tools\nprint(response.choices[0].message.content)\n# \"Based on recent search results, here are the latest developments...\"\n```\n\n```javascript Node.js\n// Create agent with multiple tools\nconst agent = await client.agents.create({\n    name: \"Research Assistant\",\n    tools: [\n        {\n            name: \"web_search\",\n            type: \"integration\",\n            integration: {provider: \"brave\"}\n        },\n        {\n            name: \"wikipedia\",\n            type: \"integration\",\n            integration: {provider: \"wikipedia\"}\n        }\n    ]\n});\n\n// Chat with automatic tool execution\nconst response = await client.sessions.chat({\n    session_id: session.id,\n    messages: [\n        {\n            role: \"user\",\n            content: \"Tell me about the latest developments in quantum computing\"\n        }\n    ],\n    auto_run_tools: true  // Enable automatic execution\n});\n\n// Response includes information gathered from tools\nconsole.log(response.choices[0].message.content);\n// \"Based on recent search results, here are the latest developments...\"\n```\n</CodeGroup>\n\n### Example: Task with Automatic Tools\n\n```yaml YAML\nname: Research and Summarize Task\ntools:\n  - name: web_search\n    type: integration\n    integration:\n      provider: brave\n  \n  - name: save_research_summary\n    description: Save the research summary as a document\n    type: system\n    system:\n      resource: agent\n      subresource: doc\n      operation: create\n\nmain:\n  # Step 1: Search with automatic tool execution\n  - prompt:\n      - role: user\n        content: \"Search for recent news about {{topic}} and create a comprehensive summary and save it as a document for agent {{agent.id}}\"\n    auto_run_tools: true  # Tools execute automatically\n  \n  # Step 2: The results from tools are already available\n  - evaluate:\n      summary: $ _.choices[0].message.content\n```\n\n### When to Use Automatic Tool Execution\n\n**Use `auto_run_tools=true` when**:\n- Building conversational agents that need real-time information\n- Creating autonomous workflows in tasks\n- You want a seamless, single-call interaction\n- Tools are trusted and don't require manual validation\n\n**Use `auto_run_tools=false` when**:\n- You need to validate or modify tool inputs before execution\n- Tool execution requires user confirmation\n- You want to handle tool errors with custom logic\n- Building applications with complex tool orchestration\n\n<Warning>\n**Important**: User-defined function tools (`type: function`) are **never** executed automatically, regardless of the `auto_run_tools` setting. They always pause execution and return control to the client for manual handling. This is a key difference from `system`, `integration`, and `api_call` tools.\n</Warning>\n\n### Tool Execution Flow\n\n<Steps>\n  <Step title=\"Model Decision\">\n    The LLM analyzes the user's request and decides if a tool is needed\n  </Step>\n  <Step title=\"Tool Call Generation\">\n    The model generates appropriate tool calls with arguments\n  </Step>\n  <Step title=\"Automatic Execution\" icon=\"play\">\n    With auto_run_tools=true: Julep executes the tool automatically\n    With auto_run_tools=false: Tool calls are returned for manual handling\n  </Step>\n  <Step title=\"Result Processing\">\n    Tool results are fed back to the model or returned to the client\n  </Step>\n  <Step title=\"Response Generation\">\n    The model uses tool results to generate the final response\n  </Step>\n</Steps>\n\n### Managing Tool History\n\nWhen using `sessions.chat()`, the `recall_tools` parameter controls whether tool interactions are saved in the conversation history:\n\n- `recall_tools=true` (default): Tool calls and results are preserved\n- `recall_tools=false`: Tool interactions are excluded from history\n\nThis helps maintain clean conversation logs while still benefiting from tool capabilities.\n\n## Best Practices\n\n<CardGroup cols={3}>\n    <Card title=\"Consistent Naming\" icon=\"tag\">\n        <ul>\n            <li>**1. Naming Conventions**: Use clear and consistent naming conventions for tools to make them easily identifiable and understandable.</li>\n        </ul>\n    </Card>\n    <Card title=\"Correct Usage\" icon=\"check-double\">\n        <ul>\n            <li>**1. Correct Usage**: Ensure that tools are used correctly and in the appropriate context. This includes providing the necessary arguments and ensuring that the tools are executed as intended.</li>\n        </ul>\n    </Card>\n    <Card title=\"Type\" icon=\"font\">\n        <ul>\n            <li>**1. Type**: Ensure that the type is correct for the tool you are using. Checkout the Tool Types Definitions <a href=\"/concepts/tools#tool-types-definitions\">here</a> for further details.</li>\n        </ul>\n    </Card>\n</CardGroup>\n\n## Next Steps\n\n- [Checkout the Integration](/integrations/supported-integrations) - Learn how to use executions in an integration\n- [Checkout the Tutorial](/tutorials/trip-planning) - Learn how to use tools in a task\n\n## See Examples\n\n- [Adding Tools notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/basics/03-Adding-Tools.ipynb)\n- [Browser Use notebook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/06-browser-use.ipynb)\n"
  },
  {
    "path": "documentation/concepts/users.mdx",
    "content": "---\ntitle: 'Users'\ndescription: 'Understanding and Managing Users in Julep'\nicon: 'circle-user'\n---\n\n## Overview\n\nUsers in Julep represent the entities interacting with your AI agents. These can be real people or other systems that require automated responses from an agent. Managing users effectively allows for personalized and contextual interactions, ensuring that each user's preferences and history are maintained across sessions.\n\n## Components\n\nUsers are comprised of several key components that facilitate their interaction with agents and sessions:\n\n- **Name**: The identifier for the user.\n- **About**: Additional information describing the user.\n- **Metadata**: Customizable key-value pairs that store user-specific data, preferences, and other relevant information.\n\n### Users configuration options\n\nWhen creating a user, the following attributes can be specified:\n\n| **Field**  | **Type** | **Description**                                                    | **Default** |\n|------------|----------|--------------------------------------------------------------------|-------------|\n| `name`     | `string`   | The name of the user.                                              | Required    |\n| `project`  | `string`   | The canonical name of the project this user belongs to.            | `\"default\"` |\n| `about`    | `string`   | Information about the user.                                        | `\"\"`        |\n| `metadata` | `object`   | Additional metadata for the user, such as preferences or settings. | `null`      |\n\n## Creating a User\n\nYou can create a user using Julep's SDKs in Python or JavaScript. Below are examples demonstrating how to create a user.\n\n<CodeGroup>\n    ```python Python\n    from julep import Julep\n\n    client = Julep(api_key=\"your_api_key\")\n\n    user = client.users.create(\n        name=\"John Doe\",\n        project=\"university-assistant\",\n        about=\"A 21-year-old man who is a student at MIT.\",\n        metadata={\n            \"email\": \"john.doe@example.com\",\n            \"preferences\": {\n                \"language\": \"en\",\n                \"timezone\": \"UTC\"\n            }\n        }\n    )\n\n    print(f\"Created user: {user.id}\")\n    ```\n\n    ```javascript Node.js\n    import { Julep } from '@julep/sdk';\n\n    const client = new Julep({ apiKey: 'your_api_key' });\n\n    const user = await client.users.create({\n        name: \"John Doe\",\n        project: \"university-assistant\",\n        about: \"A 21-year-old man who is a student at MIT.\",\n        metadata: {\n            email: \"john.doe@example.com\",\n            preferences: {\n                language: \"en\",\n                timezone: \"UTC\"\n            }\n        }\n    });\n\n    console.log(`Created user: ${user.id}`);\n    ```\n</CodeGroup>\n\n## Managing Users\n\nOnce users are created, you can perform various operations such as retrieving, updating, and deleting user profiles.\n\n### Retrieving Users\n\nRetrieve user information individually or as a list.\n\n<CodeGroup>\n    ```python Python\n    # Get a user by ID\n    user = client.users.get(user_id=\"user_id_here\")\n    print(user)\n\n    # List all users\n    users = client.users.list()\n    for user in users:\n        print(user)\n    ```\n\n    ```javascript Node.js\n    // Get a user by ID\n    const user = await client.users.get(\"user_id_here\");\n    console.log(user);\n\n    // List all users\n    const users = await client.users.list();\n    users.forEach(user => console.log(user));\n    ```\n</CodeGroup>\n\n<Tip>\n    Check out the [API reference](/api-reference/users) or SDK reference ([Python](/sdks/python/reference#users) or [JavaScript](/sdks/nodejs/reference#users)) for more details on different operations you can perform on users.\n</Tip>\n\n### Updating Users\n\nUpdate user details or specific fields within the user profile.\n\n<CodeGroup>\n    ```python Python\n    # Update user metadata\n    updated_user = client.users.update(\n        user_id=\"user_id_here\",\n        metadata={\n            \"preferences\": {\n                \"language\": \"es\",\n                \"notifications_enabled\": True\n            }\n        }\n    )\n\n    print(f\"Updated user: {updated_user.id}\")\n    ```\n\n    ```javascript Node.js\n    // Update user metadata\n    const updatedUser = await client.users.update(\"user_id_here\", {\n        metadata: {\n            preferences: {\n                language: \"es\",\n                notifications_enabled: true\n            }\n        }\n    });\n\n    console.log(`Updated user: ${updatedUser.id}`);\n    ```\n</CodeGroup>\n\n<Tip>\n    Check out the [API reference](/api-reference/users) or SDK reference ([Python](/sdks/python/reference#users) or [JavaScript](/sdks/nodejs/reference#users)) for more details on different operations you can perform on users.\n</Tip>\n\n### Deleting Users\n\nRemove users from your system when they are no longer needed.\n\n<CodeGroup>\n    ```python Python\n    # Delete a single user\n    client.users.delete(user_id=\"user_id_here\")\n    ```\n\n    ```javascript Node.js\n    // Delete a single user\n    await client.users.delete(\"user_id_here\");\n    ```\n</CodeGroup>\n\n<Tip>\n    Check out the API reference [here](/api-reference/users) or SDK reference (Python [here](/sdks/python/reference#users) or JavaScript [here](/sdks/nodejs/reference#users) for more details on different operations you can perform on users.\n</Tip>\n\n## Relationship to Other Concepts\n\n### Projects\n\nUsers belong to exactly one project, which helps organize related resources together. When creating a user, you can specify which project it belongs to using the `project` parameter. If not specified, the user will be assigned to the \"default\" project.\n\n**Example:**\n\n<CodeGroup>\n    ```python Python\n    # Create a user in a specific project\n    user = client.users.create(\n        name=\"Marketing User\",\n        project=\"marketing-campaign\"\n    )\n    ```\n\n    ```javascript Node.js\n    // Create a user in a specific project\n    const user = await client.users.create({\n        name: \"Marketing User\",\n        project: \"marketing-campaign\"\n    });\n    ```\n</CodeGroup>\n\nFor more information about projects, see [Projects](/concepts/projects).\n\n### Sessions\n\nUsers interact with agents through **sessions**, which maintain the context and history of conversations. Each session is associated with a single user and an agent, ensuring that interactions are personalized and relevant.\n\n**Example:**\n\n<CodeGroup>\n    ```python Python\n    client = Julep(api_key=\"YOUR_API_KEY\")\n    user = client.users.create(name=\"Alice\", about=\"An avid reader.\")\n    agent = client.agents.create(name=\"BookBot\", about=\"Helps find and recommend books.\")\n    session = client.sessions.create(agent=agent.id, user=user.id)\n    ```\n\n    ```javascript Node.js\n    const client = new Julep({ apiKey: 'YOUR_API_KEY' });\n    const user = await client.users.create({\n        name: \"Alice\",\n        about: \"An avid reader.\"\n    });\n    const agent = await client.agents.create({\n        name: \"BookBot\",\n        about: \"Helps find and recommend books.\"\n    });\n    const session = await client.sessions.create({\n        agent: agent.id,\n        user: user.id\n    });\n    ```\n</CodeGroup>\n\n### Agents\n\nWhile users represent the entities interacting with your system, **agents** are the AI-powered entities that respond to user interactions. Agents can have access to user data to provide personalized and context-aware responses.\n\n**Example:**\n\n<CodeGroup>\n    ```python Python\n    agent = client.agents.create(\n        name=\"SupportBot\",\n        about=\"Assists customers with their inquiries.\",\n        model=\"gpt-4\"\n    )\n\n    user = client.users.create(name=\"Bob\", about=\"A customer with recent purchases.\")\n    session = client.sessions.create(agent=agent.id, user=user.id)\n    ```\n\n    ```javascript Node.js\n    const agent = await client.agents.create({\n        name: \"SupportBot\",\n        about: \"Assists customers with their inquiries.\",\n        model: \"gpt-4\"\n    });\n\n    const user = await client.users.create({\n        name: \"Bob\",\n        about: \"A customer with recent purchases.\"\n    });\n\n    const session = await client.sessions.create({\n        agent: agent.id,\n        user: user.id\n    });\n    ```\n</CodeGroup>\n\n<Tip>\n    Check out the [API reference](/api-reference/agents) or SDK reference ([Python](/sdks/python/reference#agents) or [JavaScript](/sdks/nodejs/reference#agents)) for more details on different operations you can perform on agents.\n</Tip>\n\n## Best Practices\n\n<CardGroup cols={3}>\n    <Card title=\"Session Management\" icon=\"recycle\">\n        <ul>\n            <li>1. **Reuse Sessions**: Reuse existing sessions for returning users to maintain continuity in interactions.</li>\n            <li>2. **Session Cleanup**: Regularly clean up inactive sessions to manage resources efficiently.</li>\n            <li>3. **Context Overflow Strategy**: Choose an appropriate context overflow strategy (e.g., \"adaptive\") to handle long conversations without losing important information.</li>\n        </ul>\n    </Card>\n    <Card title=\"Personalization\" icon=\"user-group\">\n        <ul>\n            <li>1. **Leverage Metadata**: Use user metadata to store and retrieve preferences, enhancing personalized interactions.</li>\n            <li>2. **Maintain Context**: Ensure that the context within sessions is updated and relevant to provide coherent and context-aware responses.</li>\n        </ul>\n    </Card>\n    <Card title=\"Data Security\" icon=\"shield\">\n        <ul>\n            <li>1. **Protect User Data**: Ensure that all user data, especially sensitive information, is stored securely and complies with relevant data protection regulations.</li>\n            <li>2. **Access Control**: Implement proper access controls to restrict who can view or modify user data.</li>\n        </ul>\n    </Card>\n</CardGroup>\n\n## Next Steps\n\n- [Sessions](/concepts/sessions) - Learn how to manage sessions and maintain conversation context.\n- [Agents](/concepts/agents) - Learn how to manage agents and create personalized interactions.\n- [Tasks](/concepts/tasks) - Learn how to manage tasks and create automated workflows.\n"
  },
  {
    "path": "documentation/docs.json",
    "content": "{\n  \"$schema\": \"https://mintlify.com/docs.json\",\n  \"theme\": \"willow\",\n  \"name\": \"Julep\",\n  \"colors\": {\n    \"primary\": \"#004E64\",\n    \"light\": \"#00A5CF\",\n    \"dark\": \"#25A18E\"\n  },\n  \"favicon\": \"/favicon.svg\",\n  \"navigation\": {\n    \"tabs\": [\n      {\n        \"tab\": \"Home\",\n        \"anchors\": [\n          {\n            \"anchor\": \"Get Started\",\n            \"icon\": \"rocket\",\n            \"pages\": [\n              \"introduction/julep\",\n              \"introduction/install\",\n              \"introduction/quickstart\",\n              \"introduction/developer-orientation\",\n              \"FAQ\"\n            ]\n          },\n          {\n            \"anchor\": \"Julep CLI\",\n            \"icon\": \"terminal\",\n            \"pages\": [\n              \"julepcli/introduction\",\n              \"julepcli/commands\"\n            ]\n          },\n          {\n            \"anchor\": \"Core Concepts\",\n            \"icon\": \"cubes\",\n            \"pages\": [\n              \"concepts/projects\",\n              \"concepts/agents\",\n              \"concepts/tasks\",\n              \"concepts/sessions\",\n              \"concepts/tools\",\n              \"concepts/users\",\n              \"concepts/docs\",\n              \"concepts/files\",\n              \"concepts/execution\",\n              \"concepts/secrets\" \n            ]\n          },\n          {\n            \"anchor\": \"Tutorials\",\n            \"icon\": \"graduation-cap\",\n            \"pages\": [\n              \"tutorials/trip-planning\",\n              \"tutorials/trip-planning-input\",\n              \"tutorials/trip-planning-tools\",\n              \"tutorials/trip-planning-workflow\",\n              \"tutorials/trip-planning-running\",\n              \"tutorials/browser-use\",\n              \"tutorials/rag-chatbot\",\n              \"tutorials/video-processing\",\n              \"tutorials/julep-assistant\",\n              \"tutorials/hacker-news-newsletter\"\n            ]\n          },\n          {\n            \"anchor\": \"Integrations\",\n            \"icon\": \"plug\",\n            \"pages\": [\n              \"integrations/supported-integrations\",\n              \"integrations/supported-models\",\n              {\n                \"group\": \"Communication & Data\",\n                \"pages\": [\n                  \"integrations/communicationdata/email\",\n                  \"integrations/communicationdata/google-sheets\",\n                  \"integrations/communicationdata/weather\"\n                ]\n              },\n              {\n                \"group\": \"Media & File Processing\",\n                \"pages\": [\n                  \"integrations/mediafile/llamaparse\",\n                  \"integrations/mediafile/ffmpeg\",\n                  \"integrations/mediafile/cloudinary\",\n                  \"integrations/mediafile/unstructured\"\n                ]\n              },\n              {\n                \"group\": \"Search\",\n                \"pages\": [\n                  \"integrations/search/arxiv\",\n                  \"integrations/search/algolia\",\n                  \"integrations/search/brave\",\n                  \"integrations/search/wikipedia\"\n                ]\n              },\n              {\n                \"group\": \"Web & Browser Automation\",\n                \"pages\": [\n                  \"integrations/webbrowser/browserbase\",\n                  \"integrations/webbrowser/spider\",\n                  \"integrations/webbrowser/remote-browser\"\n                ]\n              },\n              {\n                \"group\": \"Extensibility\",\n                \"pages\": [\n                  \"integrations/extensibility/mcp\"\n                ]\n              },\n              \"integrations/contributing-integrations\"\n            ]\n          },\n          {\n            \"anchor\": \"Advanced Topics\",\n            \"icon\": \"flask\",\n            \"pages\": [\n              \"advanced/new-syntax\",\n              \"advanced/python-expression\",\n              \"advanced/types-of-task-steps\",\n              \"advanced/chat\",\n              \"advanced/render\",\n              \"advanced/system-templates\",\n              \"advanced/files\",\n              \"advanced/secrets-management\",\n              \"advanced/architecture-deep-dive\",\n              \"advanced/agentic-patterns\",\n              \"advanced/lifecycle\",\n              \"advanced/multi-agent-multi-user-sessions\",\n              \"advanced/localsetup\"\n            ]\n          },\n          {\n            \"anchor\":\"Open Responses API (Alpha)\",\n            \"icon\": \"message-dots\",\n            \"pages\": [\n              \"responses/quickstart\",\n              \"responses/concepts\",\n              \"responses/examples\",\n              \"responses/cli\",\n              \"responses/roadmap\"\n            ]\n          }\n        ]\n      },\n      {\n        \"tab\": \"Guides\",\n        \"groups\": [\n          {\n            \"group\": \"Guides\",\n            \"pages\": [\n              \"guides/getting-started/chat-with-an-agent\",\n              \"guides/getting-started/create-and-execute-julep-task\",\n              \"guides/using-secrets\",\n              \"guides/adding-tool-integration\",\n              \"guides/modifying-agent-workflow\",\n              {\n                \"group\": \"Getting Started Examples\",\n                \"pages\": [\n                  \"guides/getting-started/tool-integration-demo\"\n                ]\n              },\n              {\n                \"group\": \"Use Case Examples\",\n                \"pages\": [\n                  \"guides/use-cases/customer-service\",\n                  \"guides/use-cases/research-assistant\",\n                  \"guides/use-cases/document-processing\",\n                  \"guides/use-cases/data-analysis\"\n                ]\n              },\n              {\n                \"group\": \"Advanced Examples\",\n                \"pages\": [\n                  \"guides/advanced/multi-agent-systems\",\n                  \"guides/advanced/complex-workflows\",\n                  \"guides/advanced/integration-patterns\"\n                ]\n              },\n              {\n                \"group\": \"Cookbooks\",\n                \"pages\": [\n                  \"guides/cookbooks/quick-solutions\",\n                  \"guides/cookbooks/industry-solutions\",\n                  \"guides/cookbooks/community-examples\"\n                ]\n              }\n            ]\n          }\n        ]\n      },\n      {\n        \"tab\": \"SDK\",\n        \"groups\": [\n          {\n            \"group\": \"SDKs\",\n            \"pages\": [\n              \"sdks/index\",\n              {\n                \"group\": \"Python SDK\",\n                \"pages\": [\n                  \"sdks/python/installation\",\n                  {\n                    \"group\": \"Core Components\",\n                    \"pages\": [\n                      \"sdks/python/agents\",\n                      \"sdks/python/tasks\",\n                      \"sdks/python/sessions\",\n                      \"sdks/python/secrets\"\n                    ]\n                  },\n                  \"sdks/python/tools-integration\",\n                  \"sdks/python/advanced-usage\",\n                  \"sdks/python/reference\"\n                ]\n              },\n              {\n                \"group\": \"Node.js SDK\",\n                \"pages\": [\n                  \"sdks/nodejs/installation\",\n                  {\n                    \"group\": \"Core Components\",\n                    \"pages\": [\n                      \"sdks/nodejs/agents\",\n                      \"sdks/nodejs/tasks\",\n                      \"sdks/nodejs/sessions\",\n                      \"sdks/nodejs/secrets\"\n                    ]\n                  },\n                  \"sdks/nodejs/tools-integration\",\n                  \"sdks/nodejs/advanced-usage\",\n                  \"sdks/nodejs/reference\"\n                ]\n              },\n              {\n                \"group\": \"Common Patterns\",\n                \"pages\": [\n                  \"sdks/common/error-handling\",\n                  \"sdks/common/authentication\",\n                  \"sdks/common/testing\",\n                  \"sdks/common/secrets\"\n                ]\n              }\n            ]\n          }\n        ]\n      },\n      {\n        \"tab\": \"Supported Integrations\",\n        \"pages\": [\n          \"integrations/supported-integrations\"\n        ]\n      },\n      {\n        \"tab\": \"API Reference\",\n        \"openapi\": {\n          \"source\": \"https://api.julep.ai/api/openapi.json\",\n          \"directory\": \"api-reference\"\n        }\n      }\n    ]\n  },\n  \"styling\": {\n    \"codeblocks\": \"dark\"\n  },\n  \"logo\": {\n    \"light\": \"/logo/light.svg\",\n    \"dark\": \"/logo/dark.svg\"\n  },\n  \"api\": {\n    \"playground\": {\n      \"display\": \"interactive\",\n      \"proxy\": true\n    },\n    \"examples\": {\n      \"languages\": [\n        \"bash\",\n        \"python\",\n        \"javascript\"\n      ]\n    },\n    \"mdx\": {\n      \"server\": [\n        \"https://api.julep.ai/api\",\n        \"https://dev.julep.ai/api\"\n      ],\n      \"auth\": {\n        \"method\": \"bearer\",\n        \"name\": \"Authorization\"\n      }\n    }\n  },\n  \"appearance\": {\n    \"default\": \"system\",\n    \"strict\": false\n  },\n  \"background\": {\n    \"decoration\": \"grid\",\n    \"color\": {\n      \"light\": \"#F7FCF7\"\n    }\n  },\n  \"navbar\": {\n    \"links\": [\n      {\n        \"label\": \"Community\",\n        \"href\": \"https://discord.gg/p4c7ehs4vD\"\n      },\n      {\n        \"label\": \"Changelog\",\n        \"href\": \"https://updates.julep.ai\"\n      },\n      {\n        \"label\": \"Support\",\n        \"href\": \"mailto:developers@julep.ai\"\n      },\n      {\n        \"label\": \"GitHub\",\n        \"href\": \"https://github.com/julep-ai/julep\"\n      }\n    ],\n    \"primary\": {\n      \"type\": \"button\",\n      \"label\": \"Get API Key\",\n      \"href\": \"https://dashboard.julep.ai\"\n    }\n  },\n  \"search\": {\n    \"prompt\": \"Search Julep docs\"\n  },\n  \"seo\": {\n    \"indexing\": \"navigable\"\n  },\n  \"footer\": {\n    \"socials\": {\n      \"x\": \"https://x.com/julepai\",\n      \"github\": \"https://github.com/julep-ai/julep\",\n      \"linkedin\": \"https://www.linkedin.com/company/julep-ai\"\n    }\n  },\n  \"integrations\": {\n    \"posthog\": {\n      \"apiKey\": \"phc_Hh489hJe61eRVjGqFwz8DfzbY2Rla4yXn7PXONt6yQX\"\n    }\n  },\n  \"banner\": {\n    \"content\": \"🚨 Open Responses API (Alpha). Learn more [here](/responses/quickstart)\",\n    \"dismissible\": true\n  },\n  \"fonts\": {\n    \"heading\": {\n      \"family\": \"Instrument Sans\",\n      \"weight\": 500\n    },\n    \"body\": {\n      \"family\": \"Figtree\",\n      \"weight\": 500\n    }\n  },\n  \"js\": [\"scripts/julep-chat-widget.js\"]\n}"
  },
  {
    "path": "documentation/guides/adding-tool-integration.mdx",
    "content": "---\ntitle: 'Adding a Tool Integration'\ndescription: 'Extend Julep with your own tool or API'\n---\n\n# Adding a Tool Integration\n\nThis guide explains how to connect a new external tool or API to Julep. You will create a small service that wraps the tool and exposes actions that agents can call.\n\n## 1. Create an Integration Service\n\nUse the Julep SDK to define your integration service. Each action should accept structured inputs and return structured outputs.\n\n## 2. Register the Service\n\nDeploy the service and register its OpenAPI specification with your Julep project. The new actions become available to your agents.\n\n## 3. Invoke From a Task\n\nCall the actions from your task steps. The agent can now leverage your custom tool as part of its workflow.\n"
  },
  {
    "path": "documentation/guides/advanced/complex-workflows.mdx",
    "content": "---\ntitle: 'Complex Workflows'\ndescription: 'Creating advanced task workflows'\ngroups: ['admin']\n---\n\n# Complex Workflows\n\nLearn how to build and manage complex task workflows.\n\n[Placeholder content] "
  },
  {
    "path": "documentation/guides/advanced/integration-patterns.mdx",
    "content": "---\ntitle: 'Integration Patterns'\ndescription: 'Common patterns for integrating with external services'\n---\n\n# Integration Patterns\n\nWhen integrating external services with Julep, following consistent patterns helps ensure security, reliability, and maintainability. This guide covers common integration patterns with a focus on using secrets effectively.\n\n## Authentication Patterns\n\n### API Key Authentication with Secrets\n\nFor services that use API keys for authentication, store them as secrets:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: external_api\n    operation: fetch_data\n    arguments:\n      url: \"https://api.example.com/data\"\n      headers:\n        Authorization: \"$ f'Bearer {secrets.api_key}'\"\n        X-API-Key: \"$ secrets.api_key\"\n```\n\n### OAuth Authentication with Secrets\n\nFor OAuth flows, keep client credentials in secrets:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: oauth_service\n    operation: get_token\n    arguments:\n      client_id: \"$ secrets.oauth_client_id\"\n      client_secret: \"$ secrets.oauth_client_secret\"\n      scope: \"read write\"\n    output: token\n  \n  - kind: tool_call\n    tool: api_service\n    operation: call_api\n    arguments:\n      url: \"https://api.example.com/data\"\n      headers:\n        Authorization: \"Bearer {{ token }}\"\n```\n\n### Basic Authentication with Secrets\n\nFor services using basic authentication:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: api_service\n    operation: call_api\n    arguments:\n      url: \"https://api.example.com/data\"\n      auth:\n        username: \"$ secrets.api_username\"\n        password: \"$ secrets.api_password\"\n```\n\n## Integration Configuration Patterns\n\n### Database Connection with Secrets\n\nWhen connecting to databases, use secrets for connection parameters:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: database\n    operation: query\n    arguments:\n      query: \"SELECT * FROM users LIMIT 10\"\n      connection:\n        host: \"$ secrets.db_host\"\n        port: \"$ secrets.db_port\"\n        user: \"$ secrets.db_username\"\n        password: \"$ secrets.db_password\"\n        database: \"$ secrets.db_name\"\n```\n\n### Service Configuration with Secrets\n\nFor configuring service endpoints and parameters:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: email\n    operation: send\n    arguments:\n      to: \"recipient@example.com\"\n      subject: \"Important update\"\n      body: \"This is an important message.\"\n      smtp:\n        host: \"$ secrets.smtp_host\"\n        port: \"$ secrets.smtp_port\"\n        username: \"$ secrets.smtp_username\"\n        password: \"$ secrets.smtp_password\"\n        tls: true\n```\n\n## Advanced Integration Patterns\n\n### Hybrid Secret and Expression Pattern\n\nCombine secrets with expressions for dynamic configurations:\n\n```yaml\nsteps:\n  - kind: transform\n    expression: \"$ f'https://{secrets.api_domain}/v1/{input.resource}?api_key={secrets.api_key}'\"\n    input:\n      resource: \"users\"\n    output: api_url\n\n  - kind: tool_call\n    tool: http\n    operation: get\n    arguments:\n      url: \"{{ api_url }}\"\n```\n\n### Multi-tenant Service Integration\n\nFor handling multiple tenant configurations with secrets:\n\n```yaml\nsteps:\n  - kind: transform\n    expression: \"$ f'tenant_{input.tenant_id}'\"\n    input:\n      tenant_id: \"123\"\n    output: tenant_key\n\n  - kind: transform \n    expression: \"$ f'{secrets[tenant_key + \\\"_api_key\\\"]}'\"\n    output: api_key\n\n  - kind: tool_call\n    tool: external_api\n    operation: fetch_data\n    arguments:\n      url: \"https://api.example.com/data\"\n      headers:\n        Authorization: \"Bearer {{ api_key }}\"\n```\n\n### Service Discovery Pattern\n\nFor dynamically selecting services based on configuration:\n\n```yaml [expandable]\nsteps:\n  - kind: transform\n    expression: \"$ secrets.preferred_service\"\n    output: service_name\n\n  - kind: if_else\n    if: \"$ service_name == 'service_a'\"\n    then:\n      - kind: tool_call\n        tool: service_a\n        operation: process\n        arguments:\n          input: \"{{ input }}\"\n          api_key: \"$ secrets.service_a_api_key\"\n    else:\n      - kind: tool_call\n        tool: service_b\n        operation: process\n        arguments:\n          data: \"{{ input }}\"\n          auth_token: \"$ secrets.service_b_auth_token\"\n```\n\n## Best Practices\n\n### Secret Naming Conventions\n\n- Use descriptive names: `stripe_api_key` instead of just `api_key`\n- Use service prefixes: `aws_access_key`, `aws_secret_key`\n- For multiple environments: `dev_api_key`, `prod_api_key`\n\n### Secret Rotation\n\nImplement regular secret rotation without service disruption:\n\n```python [expandable]\n# Python example of rotating a secret\nfrom julep import Julep\nimport uuid\n\nclient = Julep(api_key=\"your_api_key\")\n\n# Generate temporary name\ntemp_name = f\"stripe_key_rotation_{uuid.uuid4().hex[:8]}\"\n\n# Create new secret with temp name\nclient.secrets.create(\n    name=temp_name,\n    value=\"sk_new_value...\",\n    description=\"New Stripe API key (rotation)\"\n)\n\n# Test the new key works\n# ...\n\n# If valid, delete old secret and rename new one\nclient.secrets.delete(name=\"stripe_api_key\")\nclient.secrets.update(\n    name=temp_name,\n    new_name=\"stripe_api_key\",\n    description=\"Stripe API key\"\n)\n```\n\n### Error Handling\n\nFor graceful handling of authentication and configuration errors:\n\n```yaml [expandable]\nsteps:\n  - kind: try_catch\n    try:\n      - kind: tool_call\n        tool: external_api\n        operation: fetch_data\n        arguments:\n          url: \"https://api.example.com/data\"\n          headers:\n            Authorization: \"Bearer $ secrets.api_key\"\n    catch:\n      - kind: if_else\n        if: \"$ error.type == 'AuthenticationError'\"\n        then:\n          - kind: prompt\n            model: gpt-4\n            prompt: \"API key authentication failed. Please suggest troubleshooting steps.\"\n        else:\n          - kind: prompt\n            model: gpt-4\n            prompt: \"An error occurred: {{ error.message }}\"\n```\n\n## Next Steps\n\n- [Secrets Management](/advanced/secrets-management) - Learn about advanced secrets management\n- [Complex Workflows](/guides/advanced/complex-workflows) - Build complex workflows with integrations\n- [Multi-Agent Systems](/guides/advanced/multi-agent-systems) - Coordinate multiple agents with integrations"
  },
  {
    "path": "documentation/guides/advanced/multi-agent-systems.mdx",
    "content": "---\ntitle: 'Multi-Agent Systems'\ndescription: 'Building complex multi-agent systems'\ngroups: ['admin']\n---\n\n# Multi-Agent Systems\n\nLearn how to create and manage systems with multiple agents.\n\n[Placeholder content] "
  },
  {
    "path": "documentation/guides/cookbooks/community-examples.mdx",
    "content": "---\ntitle: 'Community Examples'\ndescription: 'Examples from the Julep community'\ngroups: ['admin']\n---\n\n# Community Examples\n\nShowcase of examples from the Julep community.\n\n- [Hook Generator](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/04-hook-generator-trending-reels.ipynb)\n  Generate hook lines for trending reels.\n- [Reel Generator](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/10-reel-generator.ipynb)\n  Create short-form video scripts.\n- [Companion Agent](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/09-companion-agent.ipynb)\n  Story-driven companion agent.\n- [Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/05-video-processing-with-natural-language.ipynb)\n  Process videos with natural language.\n"
  },
  {
    "path": "documentation/guides/cookbooks/industry-solutions.mdx",
    "content": "---\ntitle: 'Industry Solutions'\ndescription: 'Industry-specific solutions using Julep'\ngroups: ['admin']\n---\n\n# Industry Solutions\n\nExamples of Julep implementations across different industries.\n\n- [Website Crawler](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/01-website-crawler.ipynb)\n  Spider-based website crawler.\n- [Trip Planning Assistant](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/03-trip-planning-assistant.ipynb)\n  Trip planning with weather data.\n- [Research Assistant](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/07-personalized-research-assistant.ipynb)\n  Tailored research assistant.\n- [Video Processing](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/05-video-processing-with-natural-language.ipynb)\n  Process videos with natural language.\n"
  },
  {
    "path": "documentation/guides/cookbooks/quick-solutions.mdx",
    "content": "---\ntitle: 'Quick Solutions'\ndescription: 'Ready-to-use solutions for common use cases'  \ngroups: ['admin']\n---\n\n# Quick Solutions\n\nCollection of ready-to-use solutions for common scenarios.\n\n- [Devfest Email Assistant](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/00-Devfest-Email-Assistant.ipynb)\n  Event email management.\n- [Sarcastic Headlines](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/02-sarcastic-news-headline-generator.ipynb)\n  Generate witty news headlines.\n- [Browser Use](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/06-browser-use.ipynb)\n  Automate web browsing tasks.\n- [RAG Chatbot](https://github.com/julep-ai/julep/blob/dev/cookbooks/advanced/08-rag-chatbot.ipynb)\n  RAG chatbot demonstration.\n"
  },
  {
    "path": "documentation/guides/getting-started/chat-with-an-agent.mdx",
    "content": "---\ntitle: 'Chat with an Agent'\ndescription: 'Learn how to chat with your agent'\n---\n\n# How to Create a Julep Session and Chat with an Agent\n\nThis guide will walk you through the process of creating an agent, setting up a session, and engaging in a conversation using the Julep SDKs.\n\n<Info>\nThis guide is minimalistic and designed to quickly set you up to chat with the agent. It does not cover all the features that Julep agents and sessions provide. For more advanced usage, please check out the [Agents](/concepts/agents) and [Sessions](/concepts/sessions) concepts.\n</Info>\n\n## Step 1: Initialize the Julep Client\n\nFirst, you need to initialize the Julep client with your API key.\n\n<CodeGroup>\n```python Python\nfrom julep import Julep\n\n# Initialize the Julep client\njulep = Julep(api_key=\"your_api_key\")\n```\n\n```javascript Node.js\nconst julep = require('@julep/sdk');\n\n// Initialize the Julep client\nconst julep = new Julep({ apiKey: 'your_api_key' });\n```\n</CodeGroup>\n\n## Step 2: Create an Agent\n\nCreate an agent with specific `instructions` and a `model`. This agent will be used in the session.\n\n<CodeGroup>\n```python Python\n# Create an agent\nagent = julep.agents.create(\n    name=\"Chat Buddy\",\n    about=\"A friendly and helpful chatbot\",\n    instructions=[\n        \"Be friendly and engaging.\",\n        \"Be helpful and provide useful information.\",\n        \"Be concise and to the point.\",\n        \"Do not format your responses. Keep them as plain text.\",\n    ],\n    model=\"gpt-4o-mini\",\n)\n```\n\n```javascript Node.js\n// Create an agent\nconst agent = await julep.agents.create({\n    name: \"Chat Buddy\",\n    about: \"A friendly and helpful chatbot\",\n    instructions: [\n        \"Be friendly and engaging.\",\n        \"Be helpful and provide useful information.\",\n        \"Be concise and to the point.\",\n        \"Do not format your responses. Keep them as plain text.\",\n    ],\n    model: \"gpt-4o-mini\",\n});\n```\n</CodeGroup>\n\n## Step 3: Create a Session\n\nCreate a session with the agent, specifying a `situation` to provide more context for the session.\n\n<CodeGroup>\n```python Python\n# Create a session\nsession = julep.sessions.create(\n    agent=agent.id,\n    situation=\"User wants to have a casual chat about hobbies.\",\n)\n```\n\n```javascript Node.js\n// Create a session\nconst session = await julep.sessions.create({\n    agent: agent.id,\n    situation: \"User wants to have a casual chat about hobbies.\",\n});\n```\n</CodeGroup>\n\n## Step 4: Chat with the Agent\n\nSend a message with a `user` role to the session to trigger the agent to send a response.\n\n<CodeGroup>\n```python Python\n# Chat with the agent\nresponse = julep.sessions.chat(\n    session_id=session.id,\n    messages=[\n        {\n            \"role\": \"user\",\n            \"content\": \"Hi there! What are some fun hobbies to try out?\"\n        }\n    ]\n)\n\nprint(\"Agent's Response:\")\nprint(response.choices[0].message.content)\n```\n\n```javascript Node.js\n// Chat with the agent\nconst response = await julep.sessions.chat(\n    sessionId: session.id,\n    messages: [\n        {\n            role: \"user\",\n            content: \"Hi there! What are some fun hobbies to try out?\"\n        }\n    ]\n)\n```\n</CodeGroup>\n\n## Full Example\n\n<CodeGroup>\n```python Python [expandable]\nfrom julep import Julep\n\n# Initialize the Julep client\njulep = Julep(api_key=\"your_api_key\")\n\n# Create an agent\nagent = julep.agents.create(\n    name=\"Chat Buddy\",\n    about=\"A friendly and helpful chatbot\",\n    instructions=[\n        \"Be friendly and engaging.\",\n        \"Be helpful and provide useful information.\",\n        \"Be concise and to the point.\",\n        \"Do not format your responses. Keep them as plain text.\",\n    ],\n    model=\"gpt-4o-mini\",\n)\n\n# Create a session\nsession = julep.sessions.create(\n    agent=agent.id,\n    situation=\"User wants to have a casual chat about hobbies.\",\n)\n\n# Chat with the agent\nresponse = julep.sessions.chat(\n    session_id=session.id,\n    messages=[\n        {\n            \"role\": \"user\",\n            \"content\": \"Hi there! What are some fun hobbies to try out?\"\n        }\n    ]\n)\n```\n\n```javascript Node.js [expandable]\nconst julep = require('@julep/sdk');\n\n// Initialize the Julep client\nconst julep = new Julep({ apiKey: 'your_api_key' });\n\n// Create an agent\nconst agent = await julep.agents.create({\n    name: \"Chat Buddy\",\n    about: \"A friendly and helpful chatbot\",\n    instructions: [\n        \"Be friendly and engaging.\",\n        \"Be helpful and provide useful information.\",\n        \"Be concise and to the point.\",\n        \"Do not format your responses. Keep them as plain text.\",\n    ],\n    model: \"gpt-4o-mini\",\n});\n\n// Create a session\nconst session = await julep.sessions.create({\n    agent: agent.id,\n    situation: \"User wants to have a casual chat about hobbies.\",\n});\n\n// Chat with the agent\nconst response = await julep.sessions.chat(\n    sessionId: session.id,\n    messages: [\n        {\n            role: \"user\",\n            content: \"Hi there! What are some fun hobbies to try out?\"\n        }\n    ]\n)\n```\n</CodeGroup>\n\n## Conclusion\n\nBy following these steps, you can create an agent, set up a session, and quickly engage in a conversation using the Julep SDKs. This setup allows for personalized and context-aware interactions with the agent. For more advanced usage, don't forget to check out the [Agents](/concepts/agents) and [Sessions](/concepts/sessions) concepts."
  },
  {
    "path": "documentation/guides/getting-started/create-and-execute-julep-task.mdx",
    "content": "---\ntitle: 'Create & Execute a Julep Task'\ndescription: 'Learn how to create and execute a Julep task'\n---\n\n# Create and Execute a Julep Task\n\nThis guide will walk you through the process of creating a Julep task and executing it.\n\n<Info>\nThis guide is based on the Trip Planning task. For a detailed explanation of the task's workflow, please check out the corresponding [Trip Planning tutorial](/tutorials/trip-planning).\n</Info>\n\n## Step 1: Initialize the Julep Client\n\nFirst, you need to initialize the Julep client with your API key.\n\n<CodeGroup>\n```python Python\nfrom julep import Julep\n\n# Initialize the Julep client\njulep = Julep(api_key=\"your_api_key\")\n```\n\n```javascript Node.js\nconst julep = require('@julep/sdk');\n\n// Initialize the Julep client\nconst julep = new Julep({ apiKey: 'your_api_key' });\n```\n</CodeGroup>\n\n## Step 2: Create a Julep Agent\n\nCreate an agent to associate the task with. In Julep, tasks are scoped to agents, and agents take on the responsibility of executing tasks.\n\n<CodeGroup>\n```python Python\n# Create an agent\nagent = julep.agents.create(\n    name=\"Task Agent\",\n    model=\"gpt-4o\"\n)\n```\n\n```javascript Node.js\n// Create an agent\nconst agent = await julep.agents.create({\n    name: \"Task Agent\",\n    model: \"gpt-4o\"\n});\n```\n</CodeGroup>\n\n## Step 3: Create a Julep Task\n\nIn this step, you will define the task that the Julep agent will execute. This involves specifying the task's name, description, input schema, tools, and the main workflow. The task definition is written in YAML format and includes details about the integrations and the logic for processing the input data.\n\n<CodeGroup>\n```python Python [expandable]\nimport yaml\n\ntask_def = yaml.safe_load(\"\"\"\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Trip Planning Task\ndescription: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\n\n\ninput_schema:\n  type: object\n  properties:\n    locations:\n      type: array\n      items:\n        type: string\n      description: The locations to search for.\n\n\ntools:\n- name: wikipedia\n  type: integration\n  integration:\n    provider: wikipedia\n\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: \"YOUR_OPENWEATHERMAP_API_KEY\"\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: \"YOUR_BRAVE_API_KEY\"\n\n\nmain:\n- over: $ steps[0].input.locations\nmap:\n  tool: weather\n  arguments:\n    location: $ _\n\n- over: $ steps[0].input.locations\nmap:\n  tool: internet_search\n  arguments:\n    query: $ 'tourist attractions in ' + _\n\n# Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\n- evaluate:\n  zipped: |-\n    $ list(\n      zip(\n        steps[0].input.locations,\n        [output['result'] for output in steps[0].output],\n        steps[1].output\n      )\n    )\n\n\n- over: $ _['zipped']\nparallelism: 3\n# Inside the map step, each `_` represents the current element in the list\n# which is a tuple of (location, weather, attractions)\nmap:\n  prompt:\n  - role: system\n    content: >-\n      $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n      for visiting tourist attractions in some locations.\n      The user will give you the following information for each location:\n\n      - The location\n      - The current weather condition\n      - The top tourist attractions'''\n  - role: user\n    content: >-\n      $ f'''Location: \"{_[0]}\"\n      Weather: \"{_[1]}\"\n      Attractions: \"{_[2]}\"'''\n  unwrap: true\n\n- evaluate:\n  final_plan: |-\n    $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n\"\"\")\n\n\n# Create a task\ntask = julep.tasks.create(\n    agent_id=agent.id,\n    **task_def\n)\n```\n\n```javascript Node.js [expandable]\nconst yaml = require(\"yaml\");\n\nconst task_def = yaml.safeLoad(\"\"\"\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Trip Planning Task\ndescription: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\n\n\ninput_schema:\n  type: object\n  properties:\n    locations:\n      type: array\n      items:\n        type: string\n      description: The locations to search for.\n\n\ntools:\n- name: wikipedia\n  type: integration\n  integration:\n    provider: wikipedia\n\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: \"YOUR_OPENWEATHERMAP_API_KEY\"\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: \"YOUR_BRAVE_API_KEY\"\n\n\nmain:\n- over: $ steps[0].input.locations\nmap:\n  tool: weather\n  arguments:\n    location: $ _\n\n- over: $ steps[0].input.locations\nmap:\n  tool: internet_search\n  arguments:\n    query: $ 'tourist attractions in ' + _\n\n# Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\n- evaluate:\n  zipped: |-\n    $ list(\n      zip(\n        steps[0].input.locations,\n        [output['result'] for output in steps[0].output],\n        steps[1].output\n      )\n    )\n\n\n- over: $ _['zipped']\nparallelism: 3\n# Inside the map step, each `_` represents the current element in the list\n# which is a tuple of (location, weather, attractions)\nmap:\n  prompt:\n  - role: system\n    content: >-\n      $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n      for visiting tourist attractions in some locations.\n      The user will give you the following information for each location:\n\n      - The location\n      - The current weather condition\n      - The top tourist attractions'''\n  - role: user\n    content: >-\n      $ f'''Location: \"{_[0]}\"\n      Weather: \"{_[1]}\"\n      Attractions: \"{_[2]}\"'''\n  unwrap: true\n\n- evaluate:\n  final_plan: |-\n    $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n\n\"\"\")\n\n// Create a task\nconst task = await julep.tasks.create({\n    name: \"Trip Planning\",\n    agentId: agent.id\n});\n```\n</CodeGroup>\n\n# Step 4: Execute the Julep Task\n\nOnce the task is created, you can execute it by providing the necessary input that matches the task's input schema. This step involves calling the execute method on the task, which will start the task execution process.\n\n<CodeGroup>\n```python Python\n# Execute the task with specific input that matches the task's input schema\nexecution = julep.tasks.execute(\n    task_id=task.id,\n    input={\"locations\": [\"New York\", \"Paris\", \"Tokyo\"]}\n)\n\n```\n\n```javascript Node.js\n// Execute the task with specific input that matches the task's input schema\nconst execution = await julep.tasks.execute(\n    taskId: task.id,\n    input: {\"locations\": [\"New York\", \"Paris\", \"Tokyo\"]}\n)\n```\n</CodeGroup>\n\n\n## Step 5: Get the Task Execution Result\n\nAfter executing the task, you can retrieve the results by checking the execution status and output. This step involves polling the execution status until it reaches a terminal state (succeeded, failed, or cancelled) and printing the current output. Alternatively, you can fetch the execution transitions for a more detailed view of the task's progress, which is useful for debugging.\n\n\n### Fetching the Execution Status & Current Output\n\n<CodeGroup>\n```python Python\nimport time\n\n# Fetch the execution status & current output\nexecution = julep.executions.get(execution_id=execution.id)\n\nwhile execution.status not in [\"succeeded\", \"failed\", \"cancelled\"]:\n    execution = julep.executions.get(execution_id=execution.id)\n    print(f\"Execution status: {execution.status}\")\n    print(f\"Execution output: {execution.output}\")\n    print(\"************************************************\")\n\n    # Wait for 5 seconds before polling again\n    time.sleep(5)\n```\n\n```javascript Node.js\n// Fetch the execution status & current output\nconst execution = await julep.executions.get(executionId=execution.id);\n\nwhile (execution.status !== \"succeeded\" && execution.status !== \"failed\" && execution.status !== \"cancelled\") {\n    execution = await julep.executions.get(executionId=execution.id);\n    console.log(`Execution status: ${execution.status}`);\n    console.log(`Execution output: ${execution.output}`);\n    console.log(\"************************************************\");\n\n    // Wait for 5 seconds before polling again\n    await new Promise(resolve => setTimeout(resolve, 5000));\n}\n```\n</CodeGroup>\n\n### Fetching the Execution Transitions\n\n<CodeGroup>\n```python Python\nimport time\n\n# Fetch the execution transitions\ntransitions = julep.executions.transitions.list(execution_id=execution.id)\n\n# Wait until the execution is either finished, errored, or canceled\nwhile transitions[0].items.type not in [\"finish\", \"error\", \"canceled\"]:\n    transitions = julep.executions.transitions.list(execution_id=execution.id)\n\n    # Transitions are ordered from the latest to the oldest\n    for transition in reversed(transitions.items):\n        print(f\"Transition type: {transition.type}\")\n        print(f\"Transition output: {transition.output}\")\n        print(\"************************************************\")\n    \n    # Wait for 5 seconds before fetching the next set of transitions\n    time.sleep(5)\n```\n\n```javascript Node.js\n// Fetch the execution transitions\nconst transitions = await julep.executions.transitions.list(executionId=execution.id);\n\n// Wait until the execution is either finished, errored, or canceled\nwhile (transitions[0].items.type !== \"finish\" && transitions[0].items.type !== \"error\" && transitions[0].items.type !== \"canceled\") {\n    transitions = await julep.executions.transitions.list(executionId=execution.id);\n\n    for (const transition of transitions.items) {\n        console.log(`Transition type: ${transition.type}`);\n        console.log(`Transition output: ${transition.output}`);\n        console.log(\"************************************************\");\n    }\n\n    // Wait for 5 seconds before fetching the next set of transitions\n    await new Promise(resolve => setTimeout(resolve, 5000));\n}\n\n```\n</CodeGroup>\n\n## Full Example\n\n<CodeGroup>\n\n```python Python [expandable]\nfrom julep import Julep\nimport yaml\nimport time\n\n# Initialize the Julep client\njulep = Julep(api_key=\"your_api_key\")\n\n# Create an agent\nagent = julep.agents.create(\n    name=\"Task Agent\",\n    model=\"gpt-4o\"\n)\n\ntask_def = yaml.safe_load(\"\"\"\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Trip Planning Task\ndescription: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\n\n\ninput_schema:\n  type: object\n  properties:\n    locations:\n      type: array\n      items:\n        type: string\n      description: The locations to search for.\n\n\ntools:\n- name: wikipedia\n  type: integration\n  integration:\n    provider: wikipedia\n\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: \"YOUR_OPENWEATHERMAP_API_KEY\"\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: \"YOUR_BRAVE_API_KEY\"\n\n\nmain:\n- over: $ steps[0].input.locations\nmap:\n  tool: weather\n  arguments:\n    location: $ _\n\n- over: $ steps[0].input.locations\nmap:\n  tool: internet_search\n  arguments:\n    query: $ 'tourist attractions in ' + _\n\n# Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\n- evaluate:\n  zipped: |-\n    $ list(\n      zip(\n        steps[0].input.locations,\n        [output['result'] for output in steps[0].output],\n        steps[1].output\n      )\n    )\n\n\n- over: $ _['zipped']\nparallelism: 3\n# Inside the map step, each `_` represents the current element in the list\n# which is a tuple of (location, weather, attractions)\nmap:\n  prompt:\n  - role: system\n    content: >-\n      $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n      for visiting tourist attractions in some locations.\n      The user will give you the following information for each location:\n\n      - The location\n      - The current weather condition\n      - The top tourist attractions'''\n  - role: user\n    content: >-\n      $ f'''Location: \"{_[0]}\"\n      Weather: \"{_[1]}\"\n      Attractions: \"{_[2]}\"'''\n  unwrap: true\n\n- evaluate:\n  final_plan: |-\n    $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n\"\"\")\n\n\n# Create a task\ntask = julep.tasks.create(\n    agent_id=agent.id,\n    **task_def\n)\n\n# Execute the task with specific input that matches the task's input schema\nexecution = julep.tasks.execute(\n    task_id=task.id,\n    input={\"locations\": [\"New York\", \"Paris\", \"Tokyo\"]}\n)\n\n# Fetch the execution status & current output\nexecution = julep.executions.get(execution_id=execution.id)\n\nwhile execution.status not in [\"succeeded\", \"failed\", \"cancelled\"]:\n    execution = julep.executions.get(execution_id=execution.id)\n    print(f\"Execution status: {execution.status}\")\n    print(f\"Execution output: {execution.output}\")\n    print(\"************************************************\")\n\n    # Wait for 5 seconds before polling again\n    time.sleep(5)\n```\n\n```javascript Node.js [expandable]\nconst julep = require('@julep/sdk');\n\n// Initialize the Julep client\nconst julep = new Julep({ apiKey: 'your_api_key' });\n\n// Create an agent\nconst agent = await julep.agents.create({\n    name: \"Task Agent\",\n    model: \"gpt-4o\"\n});\n\nconst yaml = require(\"yaml\");\n\nconst task_def = yaml.safeLoad(\"\"\"\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Trip Planning Task\ndescription: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\n\n\ninput_schema:\n  type: object\n  properties:\n    locations:\n      type: array\n      items:\n        type: string\n      description: The locations to search for.\n\n\ntools:\n- name: wikipedia\n  type: integration\n  integration:\n    provider: wikipedia\n\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: \"YOUR_OPENWEATHERMAP_API_KEY\"\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: \"YOUR_BRAVE_API_KEY\"\n\n\nmain:\n- over: $ steps[0].input.locations\nmap:\n  tool: weather\n  arguments:\n    location: $ _\n\n- over: $ steps[0].input.locations\nmap:\n  tool: internet_search\n  arguments:\n    query: $ 'tourist attractions in ' + _\n\n# Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\n- evaluate:\n  zipped: |-\n    $ list(\n      zip(\n        steps[0].input.locations,\n        [output['result'] for output in steps[0].output],\n        steps[1].output\n      )\n    )\n\n\n- over: $ _['zipped']\nparallelism: 3\n# Inside the map step, each `_` represents the current element in the list\n# which is a tuple of (location, weather, attractions)\nmap:\n  prompt:\n  - role: system\n    content: >-\n      $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n      for visiting tourist attractions in some locations.\n      The user will give you the following information for each location:\n\n      - The location\n      - The current weather condition\n      - The top tourist attractions'''\n  - role: user\n    content: >-\n      $ f'''Location: \"{_[0]}\"\n      Weather: \"{_[1]}\"\n      Attractions: \"{_[2]}\"'''\n  unwrap: true\n\n- evaluate:\n  final_plan: |-\n    $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n\n\"\"\")\n\n// Create a task\nconst task = await julep.tasks.create({\n    name: \"Trip Planning\",\n    agentId: agent.id\n});\n\n// Execute the task with specific input that matches the task's input schema\nconst execution = await julep.tasks.execute(\n    taskId: task.id,\n    input: {\"locations\": [\"New York\", \"Paris\", \"Tokyo\"]}\n)\n\n// Fetch the execution status & current output\nconst execution = await julep.executions.get(executionId=execution.id);\n\nwhile (execution.status !== \"succeeded\" && execution.status !== \"failed\" && execution.status !== \"cancelled\") {\n    execution = await julep.executions.get(executionId=execution.id);\n    console.log(`Execution status: ${execution.status}`);\n    console.log(`Execution output: ${execution.output}`);\n    console.log(\"************************************************\");\n\n    // Wait for 5 seconds before polling again\n    await new Promise(resolve => setTimeout(resolve, 5000));\n}\n\n```\n</CodeGroup>\n\n## Conclusion\n\nThis guide provided a comprehensive overview of how to create and execute a Julep task. It covered the necessary steps, including initializing the Julep client, creating an agent, defining the task, executing it, and retrieving the results. By following these steps, you can effectively use Julep's capabilities to automate complex workflows and achieve your goals. \n\n\n## Next Steps\n\n- [Tasks](/concepts/tasks) - Learn about Julep tasks in more details and see other tasks steps.  \n- [Tutorials](/tutorials) - Check out other tutorials to see more real-world examples of Julep in action.\n- [Cookbooks](https://github.com/julep-ai/julep/tree/dev/cookbooks) - Easy to run Jupyter notebooks to execute Julep tasks."
  },
  {
    "path": "documentation/guides/getting-started/tool-integration-demo.mdx",
    "content": "---\ntitle: 'Tool Integration Demo'\ndescription: 'Learn how to integrate tools with your Julep agent'\ngroups: ['admin']\n---\n\n# Tool Integration Demo\n\nStep-by-step demonstration of tool integration.\n\n[Placeholder content] "
  },
  {
    "path": "documentation/guides/modifying-agent-workflow.mdx",
    "content": "---\ntitle: 'Modifying Agent Workflow'\ndescription: 'Customize how your agents process tasks'\n---\n\n# Modifying Agent Workflow\n\nJulep tasks are flexible workflows that control how an agent operates. This guide shows how to adjust the default behavior.\n\n## 1. Edit the Task YAML\n\nAdd, remove, or reorder steps in your task definition. You can insert tool calls, conditional logic, or loops to suit your needs.\n\n## 2. Update Agent Configuration\n\nPoint your agent to the new task file or update its task list via the SDK. Your changes apply immediately to new sessions.\n\n## 3. Test Iteratively\n\nRun the task locally or through the API to verify each modification. Adjust prompts and steps until the workflow produces the desired output.\n"
  },
  {
    "path": "documentation/guides/use-cases/customer-service.mdx",
    "content": "---\ntitle: 'Customer Service'\ndescription: 'Building a customer service agent with Julep'\ngroups: ['admin']\n---\n\n# Customer Service Example\n\nLearn how to build an effective customer service agent.\n\n[Placeholder content] "
  },
  {
    "path": "documentation/guides/use-cases/data-analysis.mdx",
    "content": "---\ntitle: 'Data Analysis'\ndescription: 'Performing data analysis with Julep'\ngroups: ['admin']\n---\n\n# Data Analysis Example\n\nLearn how to analyze data using Julep agents.\n\n[Placeholder content] "
  },
  {
    "path": "documentation/guides/use-cases/document-processing.mdx",
    "content": "---\ntitle: 'Document Processing'\ndescription: 'Document processing with Julep'\ngroups: ['admin']\n---\n\n# Document Processing Example\n\nLearn how to process and analyze documents with Julep.\n\n[Placeholder content] "
  },
  {
    "path": "documentation/guides/use-cases/research-assistant.mdx",
    "content": "---\ntitle: 'Research Assistant'\ndescription: 'Creating a research assistant with Julep'\ngroups: ['admin']\n---\n\n# Research Assistant Example\n\nBuild an AI-powered research assistant.\n\n[Placeholder content] "
  },
  {
    "path": "documentation/guides/using-secrets.mdx",
    "content": "---\ntitle: 'Using Secrets in Julep'\ndescription: 'A practical guide to managing and using secrets in your Julep applications'\n---\n\n# Using Secrets in Julep\n\nThis guide will walk you through the process of creating, managing, and using secrets in your Julep applications. Secrets provide a secure way to store and use sensitive information like API keys, credentials, and tokens without exposing them in your code or configuration files.\n\n## Creating Secrets\n\nYou can create secrets using the Julep CLI, SDKs, or directly through the API.\n\n### Using the CLI\n\n```bash\n# Create a new secret\njulep secrets create --name \"openai_api_key\" --value \"sk-...\" --description \"OpenAI API key for production\"\n\n# List all secrets\njulep secrets list\n\n# Get a specific secret\njulep secrets get openai_api_key\n```\n\n### Using the Python SDK\n\n```python\nfrom julep import Julep\n\nclient = Julep(api_key=\"your_api_key\")\n\n# Create a secret\nclient.secrets.create(\n    name=\"openai_api_key\",\n    value=\"sk-...\",\n    description=\"OpenAI API key for production\"\n)\n\n# List all secrets\nsecrets = client.secrets.list()\nfor secret in secrets.items:\n    print(f\"{secret.name}: {secret.description}\")\n```\n\n### Using the Node.js SDK\n\n```javascript\nimport { Julep } from '@julep/sdk';\n\nconst julep = new Julep({ apiKey: 'your_api_key' });\n\n// Create a secret\nawait julep.secrets.create({\n  name: 'openai_api_key',\n  value: 'sk-...',\n  description: 'OpenAI API key for production'\n});\n\n// List all secrets\nconst secrets = await julep.secrets.list();\nsecrets.items.forEach(secret => {\n  console.log(`${secret.name}: ${secret.description}`);\n});\n```\n\n### Using the REST API\n\nYou can also create secrets directly using the REST API:\n\n```bash\ncurl -X POST \"https://api.julep.ai/v1/secrets/{developer_id}\" \\\n  -H \"Authorization: Bearer {api_key}\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"name\": \"openai_api_key\",\n    \"value\": \"sk-...\",\n    \"description\": \"OpenAI API key for production\"\n  }'\n```\n\n## Using Secrets in Tasks\n\nOnce you've created secrets, you can reference them in your tasks using the `secret_name` field or the `secrets` object.\n\n### Direct Secret Reference\n\nFor tools that require a single API key or token:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: openai\n    operation: chat\n    arguments:\n      model: \"gpt-4\"\n      messages:\n        - role: \"user\"\n          content: \"What's the weather like in San Francisco?\"\n    secret_name: openai_api_key\n```\n\n### Multiple Secrets\n\nFor tools that require multiple secrets:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: email\n    operation: send\n    arguments:\n      to: \"recipient@example.com\"\n      subject: \"Hello from Julep\"\n      body: \"This is a test email sent from Julep.\"\n    secrets:\n      service_api_key: \"email_service_api_key\"\n      sender_address: \"email_sender_address\"\n```\n\n### Using Secrets in Expressions\n\nYou can reference secrets in expressions using the `secrets` object:\n\n```yaml\nsteps:\n  - kind: transform\n    expression: \"$ f'https://api.example.com/v1?api_key={secrets.api_key}&query={input}'\"\n    input: \"search query\"\n    output: api_url\n```\n\nFor template variables in prompts:\n\n```yaml\nsteps:\n  - kind: prompt\n    model: gpt-4\n    prompt: \"Access the database at {{ db_url }} with credentials {{ credentials }}\"\n    template_variables:\n      db_url: \"$ secrets.db_host\"\n      credentials: \"$ f'User: {secrets.db_username}, Password: {secrets.db_password}'\"\n```\n\n## Managing Secrets\n\n### Updating Secrets\n\nTo update an existing secret:\n\n```bash\n# CLI\njulep secrets update openai_api_key --value \"new-sk-...\"\n\n# Python SDK\nclient.secrets.update(\n    name=\"openai_api_key\",\n    value=\"new-sk-...\"\n)\n\n# Node.js SDK\nawait julep.secrets.update({\n  name: 'openai_api_key',\n  value: 'new-sk-...'\n});\n```\n\n### Adding Metadata\n\nYou can add metadata to organize and categorize your secrets:\n\n```python\nclient.secrets.create(\n    name=\"stripe_api_key\",\n    value=\"sk_test_...\",\n    description=\"Stripe API key for payment processing\",\n    metadata={\n        \"environment\": \"production\",\n        \"owner\": \"payments-team\",\n        \"rotation_date\": \"2025-05-10\"\n    }\n)\n```\n\nThis metadata can be used for filtering when listing secrets:\n\n```python\nproduction_secrets = client.secrets.list(\n    metadata={\"environment\": \"production\"}\n)\n```\n\n### Deleting Secrets\n\nWhen a secret is no longer needed:\n\n```bash\n# CLI\njulep secrets delete openai_api_key\n\n# Python SDK\nclient.secrets.delete(name=\"openai_api_key\")\n\n# Node.js SDK\nawait julep.secrets.delete({ name: 'openai_api_key' });\n```\n\n## Common Use Cases\n\n### Securing LLM API Keys\n\nJulep can automatically use developer secrets for LLM API keys based on the provider:\n\n```python\n# Store the API key as a secret\nclient.secrets.create(\n    name=\"OPENAI_API_KEY\",\n    value=\"sk-...\"\n)\n\n# The key will be automatically used for OpenAI requests\ntask = client.tasks.create({\n    \"steps\": [\n        {\n            \"kind\": \"prompt\",\n            \"model\": \"gpt-4\",\n            \"prompt\": \"Generate a story about space exploration.\"\n        }\n    ]\n})\n```\n\n### External API Integration\n\nFor tools that call external APIs:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: api\n    operation: request\n    arguments:\n      method: \"GET\"\n      url: \"https://api.example.com/data\"\n      headers:\n        Authorization: \"$ f'Bearer {secrets.api_token}'\"\n        X-API-Key: \"$ secrets.api_key\"\n```\n\n### Database Connections\n\nFor database operations:\n\n```yaml\nsteps:\n  - kind: tool_call\n    tool: postgres\n    operation: query\n    arguments:\n      query: \"SELECT * FROM users LIMIT 10\"\n      connection:\n        host: \"$ secrets.pg_host\"\n        user: \"$ secrets.pg_user\"\n        password: \"$ secrets.pg_password\"\n        database: \"$ secrets.pg_database\"\n```\n\n## Best Practices\n\n1. **Never commit secrets** to version control\n2. Use descriptive names for your secrets\n3. Add metadata to organize your secrets\n4. Rotate secrets regularly\n5. Use the minimum necessary permissions\n6. Delete unused secrets promptly\n7. Use secret references instead of hardcoding values\n\n## Next Steps\n\n- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets\n- [Integration Patterns](/guides/advanced/integration-patterns) - Learn how to use secrets with integrations\n- [API Reference](/api-reference#tag/secrets) - Complete API reference for secrets"
  },
  {
    "path": "documentation/integrations/communicationdata/email.mdx",
    "content": "---\ntitle: 'Email (SMTP)'\ndescription: 'Learn how to use the Email integration with Julep'\nicon: 'envelope'\n---\n\n## Overview\n\nWelcome to the Email integration guide for Julep! This integration allows you to send emails using SMTP, enabling you to build workflows that require email communication capabilities. Whether you're sending notifications or managing email campaigns, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"SMTP Server Credentials Required\">\n  To use the Email integration, you need SMTP server credentials, including the host, port, username, and password. Ensure you have access to an SMTP server before proceeding.\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Email integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your SMTP Server\">\n    Add your SMTP server credentials to the tools section of your task. This will allow Julep to authenticate requests to your email server on your behalf.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to define your email sending task:\n\n```yaml Email Example [expandable]\nname: Email Task\n\ntools:\n- name: email_tool\n  type: integration\n  integration:\n    provider: email\n    method: send\n    setup:\n      host: \"smtp.example.com\"\n      port: 587\n      user: \"YOUR_USERNAME\"\n      password: \"YOUR_PASSWORD\"\n\nmain:\n- tool: email_tool\n  arguments:\n    to: recipient@example.com # this is a placeholder for the actual recipient email\n    from: sender@example.com # this is a placeholder for the actual sender email\n    subject: Hello from Julep # this is a placeholder for the actual subject\n    body: This is a test email sent using Julep's Email integration. # this is a placeholder for the actual body\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Email Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `email_tool` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `email` for Email integration.\n      - **_method_**: Specifies the method to be used. Default is `send` if not specified. If not specified, the method will be `send` by default.\n      - **_setup_**: Contains configuration details.\n          - **_host_**: (Required) The SMTP server host.\n          - **_port_**: (Required) The SMTP server port.\n          - **_user_**: (Required) The SMTP server username.\n          - **_password_**: (Required) The SMTP server password.\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`email_tool`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_to_**: The email address to send the email to.\n        - **_from_**: The email address to send the email from.\n        - **_subject_**: The subject of the email.\n        - **_body_**: The body of the email.\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  - Please note that the `to` and `from` arguments can accept a single email address only.\n  - Replace the `YOUR_USERNAME` and `YOUR_PASSWORD` with your actual SMTP server credentials.\n  - Remember to replace the SMTP server credentials and email addresses with your actual information. Ensure your SMTP server allows sending emails from the specified addresses.\n</Note>\n\n## Conclusion\n\nWith the Email integration, you can efficiently send emails using SMTP. \nThis integration provides a robust solution for email communication, enhancing your workflow's capabilities and user experience.\n\n<Tip>\n  For more information, please refer to the [SMTP documentation](https://docs.python.org/3/library/smtplib.html).\n</Tip> "
  },
  {
    "path": "documentation/integrations/communicationdata/google-sheets.mdx",
    "content": "---\ntitle: 'Google Sheets'\ndescription: 'Learn how to use the Google Sheets integration with Julep'\nicon: 'table'\n---\n\n## Overview\n\nWelcome to the Google Sheets integration guide for Julep! This integration allows you to read, write, and manage data in Google Sheets spreadsheets, enabling you to build workflows that leverage structured data storage and manipulation. Whether you're tracking metrics, managing inventories, or processing data tables, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"Service Account Required\">\n  To use the Google Sheets integration, you need either:\n  1. A Google Cloud service account with Sheets API enabled (recommended)\n  2. Use Julep's shared service account (limited to spreadsheets shared with it)\n  \n  For your own service account, follow the [Google Get Started guide](https://developers.google.com/workspace/guides/get-started) to create credentials.\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Google Sheets integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your Authentication\">\n    Choose between using your own service account or Julep's shared service. For your own service account, base64 encode your JSON credentials file.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration examples for different operations:\n\n### Read Values Example\n\n```yaml Read Values\nname: Google Sheets Read Task\n\ntools:\n- name: sheets_reader\n  type: integration\n  integration:\n    provider: google_sheets\n    method: read_values\n    setup:\n      # Option 1: Use your own service account\n      service_account_json: \"BASE64_ENCODED_SERVICE_ACCOUNT_JSON\"\n      # Option 2: Use Julep's service (comment out service_account_json)\n      # use_julep_service: true\n\nmain:\n- tool: sheets_reader\n  arguments:\n    spreadsheet_id: \"1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms\"\n    range: \"Sheet1!A1:C10\"\n```\n\n### Write Values Example\n\n```yaml Write Values\nname: Google Sheets Write Task\n\ntools:\n- name: sheets_writer\n  type: integration\n  integration:\n    provider: google_sheets\n    method: write_values\n    setup:\n      service_account_json: \"BASE64_ENCODED_SERVICE_ACCOUNT_JSON\"\n\nmain:\n- tool: sheets_writer\n  arguments:\n    spreadsheet_id: \"YOUR_SPREADSHEET_ID\"\n    range: \"Sheet1!A1:B2\"\n    values:\n      - [\"Name\", \"Score\"]\n      - [\"Alice\", 95]\n```\n\n### Append Values Example\n\n```yaml Append Values\nname: Google Sheets Append Task\n\ntools:\n- name: sheets_appender\n  type: integration\n  integration:\n    provider: google_sheets\n    method: append_values\n    setup:\n      service_account_json: \"BASE64_ENCODED_SERVICE_ACCOUNT_JSON\"\n\nmain:\n- tool: sheets_appender\n  arguments:\n    spreadsheet_id: \"YOUR_SPREADSHEET_ID\"\n    range: \"Sheet1!A:B\"\n    values:\n      - [\"Bob\", 87]\n      - [\"Charlie\", 92]\n```\n\n### Clear Values Example\n\n```yaml Clear Values\nname: Google Sheets Clear Task\n\ntools:\n- name: sheets_clearer\n  type: integration\n  integration:\n    provider: google_sheets\n    method: clear_values\n    setup:\n      service_account_json: \"BASE64_ENCODED_SERVICE_ACCOUNT_JSON\"\n\nmain:\n- tool: sheets_clearer\n  arguments:\n    spreadsheet_id: \"YOUR_SPREADSHEET_ID\"\n    range: \"Sheet1!A2:B100\"\n```\n\n### Batch Read Example\n\n```yaml Batch Read\nname: Google Sheets Batch Read Task\n\ntools:\n- name: sheets_batch_reader\n  type: integration\n  integration:\n    provider: google_sheets\n    method: batch_read\n    setup:\n      service_account_json: \"BASE64_ENCODED_SERVICE_ACCOUNT_JSON\"\n\nmain:\n- tool: sheets_batch_reader\n  arguments:\n    spreadsheet_id: \"YOUR_SPREADSHEET_ID\"\n    ranges:\n      - \"Sheet1!A1:C5\"\n      - \"Sheet2!D1:F10\"\n      - \"Summary!A1:B20\"\n```\n\n### Batch Write Example\n\n```yaml Batch Write\nname: Google Sheets Batch Write Task\n\ntools:\n- name: sheets_batch_writer\n  type: integration\n  integration:\n    provider: google_sheets\n    method: batch_write\n    setup:\n      service_account_json: \"BASE64_ENCODED_SERVICE_ACCOUNT_JSON\"\n\nmain:\n- tool: sheets_batch_writer\n  arguments:\n    spreadsheet_id: \"YOUR_SPREADSHEET_ID\"\n    data:\n      - range: \"Sheet1!A1:B2\"\n        values:\n          - [\"Updated\", \"Data\"]\n          - [\"New\", \"Values\"]\n      - range: \"Sheet2!C1:D2\"\n        values:\n          - [\"More\", \"Updates\"]\n          - [\"Here\", \"Too\"]\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task (e.g., \"Google Sheets Read Task\").\n    - **_tools_**: This section lists the tools or integrations being used. Each tool has a unique name for reference.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Always `google_sheets` for Google Sheets integration.\n      - **_method_**: The operation to perform. Available methods:\n        - `read_values`: Read data from a range\n        - `write_values`: Write or update data in a range\n        - `append_values`: Append new rows to a sheet\n        - `clear_values`: Clear data from a range\n        - `batch_read`: Read from multiple ranges at once\n        - `batch_write`: Write to multiple ranges at once\n      - **_setup_**: Authentication configuration (see Authentication Methods below).\n  </Accordion>\n\n  <Accordion title=\"Authentication Methods\">\n    You have two options for authentication:\n    \n    **Option 1: Your Own Service Account (Recommended)**\n    ```yaml\n    setup:\n      service_account_json: \"BASE64_ENCODED_SERVICE_ACCOUNT_JSON\"\n    ```\n    - Full control over permissions\n    \n    **Option 2: Julep's Shared Service (Testing Only)**\n    ```yaml\n    setup:\n      use_julep_service: true\n    ```\n    - No setup required\n    - Limited to spreadsheets explicitly shared with Julep's service account\n    - **Recommended for testing only** - Use your own service account in production to manage Google API quotas and constraints\n  </Accordion>\n\n  <Accordion title=\"Method Arguments\">\n    **Common Arguments:**\n    - **_spreadsheet_id_**: The ID of the Google Sheets spreadsheet (found in the URL)\n    - **_range_**: The A1 notation range (e.g., \"Sheet1!A1:C10\")\n    \n    **Method-Specific Arguments:**\n    - **_values_** (write/append): 2D array of data to write\n    - **_ranges_** (batch_read): Array of ranges to read\n    - **_data_** (batch_write): Array of range-value pairs to write\n  </Accordion>\n</AccordionGroup>\n\n## Important Notes\n\n<Note>\n  - **Spreadsheet ID**: Found in the spreadsheet URL: `https://docs.google.com/spreadsheets/d/{SPREADSHEET_ID}/edit`\n  - **Range Notation**: Use A1 notation like \"Sheet1!A1:C10\" or \"A:A\" for entire columns\n  - **Service Account Setup**: Your service account needs the Google Sheets API enabled in the Google Cloud Console\n  - **Sharing Requirements**: When using `use_julep_service`, share your spreadsheet with Julep's service account email: `julep-sheets-assistant@julep-471013.iam.gserviceaccount.com`\n  - **Base64 Encoding**: Encode your service account JSON with: `base64 -i service-account.json`\n</Note>\n\n## Conclusion\n\nWith the Google Sheets integration, you can efficiently manage spreadsheet data within your Julep workflows. \nThis integration provides robust data management capabilities, from simple reads and writes to complex batch operations, enhancing your workflow's ability to work with structured data.\n\n<Tip>\n  For more information, please refer to:\n  - [Google Sheets API documentation](https://developers.google.com/sheets/api/reference/rest)\n  - [A1 notation guide](https://developers.google.com/sheets/api/guides/concepts#a1_notation)\n  - [Service account setup guide](https://cloud.google.com/iam/docs/service-accounts)\n</Tip>"
  },
  {
    "path": "documentation/integrations/communicationdata/weather.mdx",
    "content": "---\ntitle: 'OpenWeatherMap'\ndescription: 'OpenWeatherMap integration with Julep'\nicon: 'cloud-sun-rain'\n---\n\n## Overview\n\nWelcome to the OpenWeatherMap integration guide for Julep! This integration allows you to seamlessly access weather data for various locations, enabling you to build workflows that require real-time weather information.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"API Key Required\">\n  To use the OpenWeatherMap integration, you need an API key. You can obtain this key by signing up at [OpenWeatherMap](https://home.openweathermap.org/users/sign_up).\n</Info>\n\n## How to Use the Integration\n\nTo get started with the OpenWeatherMap integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your API key\">\n    Add your API key to the tools section of your task. This will allow Julep to authenticate requests to OpenWeatherMap on your behalf.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to request weather data service in your task definition:\n\n```yaml Weather Request Example\nname: Weather Request\n\ntools:\n  - name: weather_call\n    type: integration\n    integration:\n      provider: weather\n      method: get\n      setup:\n        openweathermap_api_key: \"OPENWEATHERMAP_API_KEY\"\n\nmain:\n- tool: weather_call\n  arguments:\n    location: London\n```\n  </Step>\n  <Step title=\"Run Task\">\n    Deploy your task by creating a new execution.\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Weather Request\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `weather_call` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `weather` for OpenWeatherMap.\n      - **_method_**: Specifies the method to be used. Default is `get` if not specified. If not specified, the method will be `get` by default.\n      - **_setup_**: Contains configuration details, such as the API key (`openweathermap_api_key`) required for authentication.\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n        - **_tool_**: Refers to the tool defined earlier (`weather_call`).\n        - **_arguments_**: Specifies the input parameters for the tool:\n          - **_location_**: The location for which weather data is needed.\n\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  Remember to replace `OPENWEATHERMAP_API_KEY` with your actual API key.\n</Note>\n\n## Conclusion\n\nWith the OpenWeatherMap integration, you can easily incorporate weather data into your workflows. \nThis integration provides a robust solution for accessing real-time weather information, enhancing your workflow's functionality and user experience.\n\n<Tip>\n  For more information, please refer to the [OpenWeatherMap documentation](https://openweathermap.org/guide).\n</Tip> "
  },
  {
    "path": "documentation/integrations/contributing-integrations.mdx",
    "content": "---\ntitle: 'Add New Integrations'\ndescription: 'Guidelines for contributing new integrations to Julep'\nicon: 'circle-plus'\n---\n\n## Overview\n\nThis guide provides instructions for contributing new integrations to the Julep platform. Follow these steps to ensure your integration is successfully added to the project.\n\n## Steps to Contribute\n\n1. **Add a New Integration Provider**:\n   - Add the provider name to the `integrationProvider` alias in `typespec/tools/models.tsp`.\n   - Create a new file in `typespec/tools/` with the provider name. Refer to existing files for examples.\n\n2. **Generate OpenAPI Schema and Pydantic Models**:\n   - Run `./scripts/generate_openapi_code.sh` from the root directory to generate the necessary files.\n\n3. **Implement Integration Logic**:\n   - Add the integration logic in `integration-service/integrations/utils/integrations`.\n\n4. **Register the Provider**:\n   - Add the provider to the `available_providers` dictionary in `integrations-service/integrations/providers.py`.\n\n## Additional Resources\n\n- [CONTRIBUTING.md](https://github.com/julep-ai/julep/blob/dev/.github/CONTRIBUTING.md) for more detailed instructions."
  },
  {
    "path": "documentation/integrations/extensibility/mcp.mdx",
    "content": "---\ntitle: 'MCP (Model Context Protocol)'\ndescription: 'Learn how to use the MCP integration to connect Julep with any MCP-compatible server'\nicon: 'plug'\n---\n\n## Overview\n\nWelcome to the MCP (Model Context Protocol) integration guide for Julep! This integration enables you to connect Julep agents with any MCP-compatible server, providing access to a vast ecosystem of tools and capabilities. MCP is a standardized protocol that allows language models to interact with external tools and services in a consistent, secure manner.\n\nThe MCP integration is unique because instead of hardcoding specific tools, it dynamically discovers available capabilities from any MCP server. This makes Julep infinitely extensible - simply point it at a new MCP server and all its tools become available to your agents automatically.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"MCP Server Required\">\n  To use the MCP integration, you need access to an MCP-compatible server. The server can be:\n  - A public MCP server (e.g., DeepWiki, GitHub Copilot MCP)\n  - A private MCP server you've deployed\n\n  Some servers may require authentication tokens or API keys.\n</Info>\n\n## Supported Transports\n\nThe MCP integration supports two transport types:\n\n<CardGroup cols={2}>\n  <Card title=\"HTTP Transport\" icon=\"globe\">\n    Standard request-response pattern for tool execution. Works with servers that expose HTTP endpoints.\n  </Card>\n  <Card title=\"SSE Transport\" icon=\"rss\">\n    Server-Sent Events for streaming responses and real-time updates. Ideal for long-running operations.\n  </Card>\n</CardGroup>\n\n## How to Use the Integration\n\nTo get started with the MCP integration, you need to define two types of tools:\n\n<Steps>\n  <Step title=\"Define Tool Discovery\">\n    First, create a tool that discovers available capabilities from the MCP server using the `list_tools` method.\n  </Step>\n  <Step title=\"Define Tool Execution\">\n    Then, create a tool that executes specific MCP tools using the `call_tool` method.\n  </Step>\n  <Step title=\"Configure Your Task\">\n    Use the discovered tools in your task workflow to interact with the MCP server.\n  </Step>\n</Steps>\n\n## Examples\n\n### Example 1: Basic HTTP Transport (DeepWiki)\n\n```yaml\nname: Test DeepWiki with HTTP Transport\n\ntools:\n- type: integration\n  name: mcp_fetch\n  integration:\n    provider: mcp\n    method: list_tools\n    setup:\n      transport: http\n      http_url: https://mcp.deepwiki.com/mcp\n\n- type: integration\n  name: mcp_call_tool\n  integration:\n    provider: mcp\n    method: call_tool\n    setup:\n      transport: http\n      http_url: https://mcp.deepwiki.com/mcp\n\nmain:\n- tool: mcp_fetch\n\n- tool: mcp_call_tool\n  arguments:\n    tool_name: read_wiki_structure\n    arguments:\n      repoName: facebook/react\n```\n\n### Example 2: SSE Transport with Headers\n\n```yaml\nname: Test DeepWiki with SSE Transport\n\ntools:\n  - type: integration\n    name: mcp_sse\n    integration:\n      provider: mcp\n      method: call_tool\n      setup:\n        transport: sse\n        http_url: https://mcp.deepwiki.com/sse\n        http_headers:\n          Accept: \"text/event-stream\"\n          Cache-Control: \"no-cache\"\n  - type: integration\n    name: mcp_fetch\n    integration:\n      provider: mcp\n      method: list_tools\n      setup:\n        transport: sse\n        http_url: https://mcp.deepwiki.com/sse\n\nmain:\n  - tool: mcp_fetch\n\n  - tool: mcp_sse\n    arguments:\n      tool_name: \"read_wiki_structure\"\n      arguments:\n        repoName: \"julep-ai/julep\"\n```\n\n### Example 3: Authenticated MCP Server (GitHub)\n\n```yaml\nname: Simple GitHub MCP Test (with authorization)\n\ntools:\n  - type: integration\n    name: github_mcp\n    integration:\n      provider: mcp\n      method: list_tools\n      setup:\n        transport: http\n        http_url: https://api.githubcopilot.com/mcp/\n        http_headers:\n          Authorization: \"Bearer {your_github_token}\"\n          Accept: \"application/json, text/event-stream\"\n          Content-Type: \"application/json\"\n\n  - type: integration\n    name: github_call\n    integration:\n      provider: mcp\n      method: call_tool\n      setup:\n        transport: http\n        http_url: https://api.githubcopilot.com/mcp/\n        http_headers:\n          Authorization: \"Bearer {your_github_token}\"\n          Accept: \"application/json, text/event-stream\"\n          Content-Type: \"application/json\"\n\nmain:\n  - tool: github_mcp\n\n  - tool: github_call\n    arguments:\n      tool_name: \"search_repositories\"\n      arguments:\n        query: \"julep language:python\"\n        perPage: 3\n        minimal_output: true\n```\n\n## YAML Configuration Explained\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task\n    - **_tools_**: Lists the MCP integration tools being used\n    - **_type_**: Must be `integration` for MCP tools\n  </Accordion>\n\n  <Accordion title=\"Integration Setup\">\n    - **_provider_**: Must be `mcp` for MCP integration\n    - **_method_**: Either `list_tools` or `call_tool`\n      - `list_tools`: Discovers available tools from the MCP server\n      - `call_tool`: Executes a specific tool on the MCP server\n    - **_setup_**: Connection configuration\n      - **_transport_**: Either `http` or `sse`\n      - **_http_url_**: The MCP server endpoint URL\n      - **_http_headers_**: (Optional) HTTP headers for authentication or content negotiation\n  </Accordion>\n\n  <Accordion title=\"Tool Execution Arguments\">\n    For `call_tool` method:\n    - **_tool_name_**: The name of the MCP tool to execute\n    - **_arguments_**: (Optional) Arguments to pass to the MCP tool\n    - **_timeout_seconds_**: (Optional) Per-call timeout in seconds (default: 60)\n    \n    For `list_tools` method:\n    - No arguments required (empty object or omit entirely)\n  </Accordion>\n</AccordionGroup>\n\n\n## Best Practices\n\n<Tip>\n  **Tool Discovery**: Always call `list_tools` first to discover available capabilities before attempting to use specific tools. This ensures you're aware of what tools are available and their required parameters.\n</Tip>\n\n<Warning>\n  **Authentication**: Never hardcode authentication tokens in your task definitions. Use Julep's secrets management to store sensitive credentials securely.\n</Warning>\n\n<Note>\n  - Different MCP servers expose different tools. Always check the server's documentation for available capabilities\n  - SSE transport is recommended for long-running operations or when you need real-time updates\n  - HTTP transport is simpler and works well for quick request-response operations\n  - Some servers may have rate limits - consider implementing retry logic in your tasks\n</Note>\n\n## Advanced Features\n\n### Dynamic Tool Discovery\n\nThe MCP integration's killer feature is dynamic tool discovery. Instead of defining tools statically, your agents can:\n1. Connect to any MCP server\n2. Discover available tools at runtime\n3. Adapt their capabilities based on what's available\n\nThis means you can:\n- Switch between different MCP servers without changing your code\n- Add new capabilities by simply deploying new MCP servers\n- Build agents that adapt to their environment\n\n### Response Handling\n\nMCP tool responses are normalized into a consistent format:\n\n```json\n{\n  \"text\": \"Concatenated text content if any\",\n  \"structured\": {\n    // Any structured data returned by the tool\n  },\n  \"content\": [\n    // Raw content items as returned by the server\n  ],\n  \"is_error\": false\n}\n```\n\nThis allows you to handle responses consistently regardless of the underlying MCP server implementation.\n\n## Using MCP with Automatic Tool Execution\n\nOne of the most powerful features of Julep is automatic tool execution, which works seamlessly with MCP integrations. This allows your agents to dynamically discover and use MCP tools without manual intervention.\n\n### How It Works\n\nWhen you combine MCP integration with Julep's `auto_run_tools` feature:\n\n1. **Tool Discovery**: The agent first calls `list_tools` to discover available capabilities from the MCP server\n2. **Automatic Execution**: When the model determines an MCP tool is needed, it's executed automatically\n3. **Result Integration**: Tool results are fed back to the model to continue processing\n4. **Seamless Workflow**: Everything happens in a single call - no manual intervention required\n\n### Example: Autonomous MCP Agent in Tasks\n\n```yaml\nname: Autonomous Documentation Assistant\n\ntools:\n  - type: integration\n    name: mcp_discover\n    integration:\n      provider: mcp\n      method: list_tools\n      setup:\n        transport: http\n        http_url: https://mcp.deepwiki.com/mcp\n\n  - type: integration\n    name: mcp_execute\n    integration:\n      provider: mcp\n      method: call_tool\n      setup:\n        transport: http\n        http_url: https://mcp.deepwiki.com/mcp\n\nmain:\n  # Step 1: Use discovered tools automatically to answer questions\n  - prompt:\n      - role: user\n        content: |\n          Using the available MCP tools, find information about the React repository structure\n          and provide a comprehensive overview of its main components.\n    auto_run_tools: true  # MCP tools execute automatically when needed\n\n```\n\n## Troubleshooting\n\n<AccordionGroup>\n  <Accordion title=\"Connection Issues\">\n    - Verify the MCP server URL is correct and accessible\n    - Check if authentication headers are required and properly formatted\n    - Ensure the transport type matches what the server expects\n  </Accordion>\n\n  <Accordion title=\"Tool Execution Failures\">\n    - Use `list_tools` to verify the tool exists on the server\n    - Check the tool's input schema for required parameters\n  </Accordion>\n\n  <Accordion title=\"Authentication Errors\">\n    - Ensure Bearer tokens include the \"Bearer \" prefix\n    - Verify API keys/tokens are valid and not expired\n    - Check if additional headers are required\n  </Accordion>\n</AccordionGroup>\n\n## Conclusion\n\nThe MCP integration opens up unlimited possibilities for extending Julep agents with external capabilities. By following a standardized protocol, you can connect to any MCP-compatible server and instantly gain access to its tools, making your agents more powerful and adaptable.\n\n<Tip>\n  For more information about the Model Context Protocol, visit the [official MCP documentation](https://modelcontextprotocol.io/). To explore available MCP servers, check out the [MCP server directory](https://github.com/modelcontextprotocol/servers).\n</Tip>"
  },
  {
    "path": "documentation/integrations/mediafile/cloudinary.mdx",
    "content": "---\ntitle: 'Cloudinary'\ndescription: 'Learn how to use the Cloudinary integration with Julep'\nicon: 'wand-magic'\n---\n\n## Overview\n\nWelcome to the Cloudinary integration guide for Julep! This integration allows you to manage and transform media files efficiently, enabling you to build workflows that require robust media processing capabilities. Whether you're uploading images or editing videos, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"API Key Required\">\n  To use the Cloudinary integration, you need an API key, API secret, and cloud name. You can obtain these by signing up at [Cloudinary](https://cloudinary.com/signup).\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Cloudinary integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your API Key\">\n    Add your API key, API secret, and cloud name to the tools section of your task. This will allow Julep to authenticate requests to Cloudinary on your behalf.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to define your media processing task:\n\n```yaml Cloudinary Example [expandable]\nname: Cloudinary Task\n\ntools:\n- name: cloudinary_tool\n  type: integration\n  integration:\n    provider: cloudinary\n    method: media_upload\n    setup:\n      cloudinary_cloud_name: \"CLOUDINARY_CLOUD_NAME\"\n      cloudinary_api_key: \"CLOUDINARY_API_KEY\"\n      cloudinary_api_secret: \"CLOUDINARY_API_SECRET\"\n      params: # Optional setup parameters\n        key1: \"value1\" # these are placeholders for the actual parameters\n        key2: \"value2\" # these are placeholders for the actual parameters\n\nmain:\n- tool: cloudinary_tool\n  arguments:\n    file: https://example.com/image.jpg # this is a placeholder for the actual file\n    public_id: my_image # this is a placeholder for the actual public id\n    upload_params: # Optional upload parameters\n      param1: value1 # these are placeholders for the actual parameters\n      param2: value2 # these are placeholders for the actual parameters\n    return_base64: false\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Cloudinary Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `cloudinary_tool` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `cloudinary` for Cloudinary.\n      - **_method_**: Specifies the method to use, either `media_upload` or `media_edit`. Defaults to `media_edit` if not specified.\n      - **_setup_**: Contains configuration details\n          - **_cloudinary_cloud_name_**: (Required) The cloud name of the Cloudinary account.\n          - **_cloudinary_api_key_**: (Required) The API key of the Cloudinary account.\n          - **_cloudinary_api_secret_**: (Required) The API secret of the Cloudinary account.\n          - **_params_**: (Optional) Optional parameters for the configuration.\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`cloudinary_tool`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        <Accordion title=\"media_upload\">\n          - **_file_**: The URL of the file to upload. More details can be found in the [Cloudinary documentation](https://cloudinary.com/documentation/image_upload_api_reference#upload).\n          - **_public_id_**: (optional) Optional public ID for the uploaded file. Defaults to None.\n          - **_upload_params_**: (optional) Optional transformations for the upload. Defaults to None.\n          - **_return_base64_**: (optional) Whether to return the file in base64 encoding. Defaults to False.\n        </Accordion>\n        <Accordion title=\"media_edit\">\n          - **_public_id_**: The public ID of the file to edit.\n          - **_transformation_**: The transformations to apply to the file.\n          - **_return_base64_**: Whether to return the transformed file in base64 encoding.\n        </Accordion>\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  Remember to replace `CLOUDINARY_CLOUD_NAME`, `CLOUDINARY_API_KEY`, and `CLOUDINARY_API_SECRET` with your actual credentials.\n</Note>\n<Note>\n  The different parameters available for the Cloudinary integration can be found in the [Cloudinary API documentation](https://cloudinary.com/documentation/cloudinary_sdks#configuration_parameters).\n</Note>\n\n## Conclusion\n\nWith the Cloudinary integration, you can efficiently manage and transform media files. \nThis integration provides a robust solution for media processing, enhancing your workflow's capabilities and user experience.\n\n<Tip>\n  For more information, please refer to the [Cloudinary documentation](https://cloudinary.com/documentation/python_quickstart).\n</Tip> "
  },
  {
    "path": "documentation/integrations/mediafile/ffmpeg.mdx",
    "content": "---\ntitle: 'FFmpeg'\ndescription: 'Learn how to use the FFmpeg integration with Julep'\nicon: 'photo-film'\n---\n\n## Overview\n\nWelcome to the FFmpeg integration guide for Julep! This integration allows you to process media files using FFmpeg commands, enabling you to build workflows that require advanced media processing capabilities. Whether you're converting video formats or extracting audio, this guide will walk you through the setup and usage.\n\n## How to Use the Integration\n\nTo get started with the FFmpeg integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Define Your FFmpeg Command\">\n    Use the following YAML configuration to define your FFmpeg command and process media files:\n\n```yaml FFmpeg Example\nname: FFmpeg Task\n\ntools:\n- name: ffmpeg_tool\n  type: integration\n  integration:\n    provider: ffmpeg\n    method: bash_cmd\n\nmain:\n- tool: ffmpeg_tool\n  arguments:\n    cmd: $ \"ffmpeg -i input.mp4 -vn -acodec copy output.aac\"\n    file: base64_encoded_file # this is a placeholder for the actual file\n```\n\n    <Info>\n      The `base64_encoded_file` is the base64 encoded file to process which in this case is the `input.mp4` file.\n      The `file` argument can accept either a single base64 encoded string or a list of base64 encoded strings.\n      However, even when passing a list of files, the FFmpeg command can only use a single input file (single `-i` flag).\n      Multiple input files with multiple `-i` flags are not supported.\n    </Info>\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"FFmpeg Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `ffmpeg_tool` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `ffmpeg` for FFmpeg. \n      - **_method_**: Indicates the method to be used, which is `bash_cmd` for FFmpeg. If not specified, the method will be `bash_cmd` by default.\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`ffmpeg_tool`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_cmd_**: The FFmpeg command to execute.\n        - **_file_**: The base64 encoded file to process. Can be a single base64 encoded string or a list of base64 encoded strings.\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  Ensure your input file is base64 encoded and the FFmpeg command is correctly formatted for your specific use case.\n</Note>\n\n## Conclusion\n\nWith the FFmpeg integration, you can efficiently process media files using powerful FFmpeg commands. \nThis integration provides a robust solution for media processing, enhancing your workflow's capabilities and user experience.\n\n<Tip>\n  For more information, please refer to the [FFmpeg documentation](https://ffmpeg.org/documentation.html).\n</Tip> "
  },
  {
    "path": "documentation/integrations/mediafile/llamaparse.mdx",
    "content": "---\ntitle: 'LlamaParse'\ndescription: 'Learn how to use the LlamaParse integration with Julep'\nicon: 'file-pdf'\n---\n\n## Overview\n\nWelcome to the LlamaParse integration guide for Julep! This integration allows you to parse documents efficiently, enabling you to build workflows that require document processing capabilities. Whether you're developing a document management system or need to extract information from files, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"API Key Required\">\n  To use the LlamaParse integration, you need an API key. You can obtain this key by signing up at [LlamaParse](https://docs.cloud.llamaindex.ai/llamaparse/getting_started/web_ui).\n</Info>\n\n## How to Use the Integration\n\nTo get started with the LlamaParse integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your API Key\">\n    Add your API key to the tools section of your task. This will allow Julep to authenticate requests to LlamaParse on your behalf.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to define your document parsing task:\n\n```yaml LlamaParse Example [expandable]\nname: LlamaParse Task\n\ntools:\n- name: llama_parse\n  type: integration\n  integration:\n    provider: llama-parse\n    method: parse\n    setup:\n      llamaparse_api_key: \"LLAMAPARSE_API_KEY\"\n      params: # Optional setup parameters\n        key1: \"value1\" # these are placeholders for the actual parameters\n        key2: \"value2\" # these are placeholders for the actual parameters\n\nmain:\n- tool: llama_parse\n  arguments:\n    file: base64_encoded_file # this is a placeholder for the actual file\n    filename: document.pdf # this is a placeholder for the actual filename\n    base64: true\n    params: # Optional arguments parameters\n      key1: value1 # these are placeholders for the actual parameters\n      key2: value2 # these are placeholders for the actual parameters\n```\n  </Step>\n  <Step title=\"Run Task\">\n    Deploy your task by creating a new execution.\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"LlamaParse Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `llama_parse` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `llama-parse` for LlamaParse.\n      - **_method_**: Indicates the method to be used, which is `parse` for LlamaParse. If not specified, the method will be `parse` by default.\n      - **_setup_**: Contains configuration Details\n          - **_llamaparse_api_key_**: (Required) The API key of the LlamaParse account.\n          - **_params_**: (Optional) Optional parameters for the configuration.\n  </Accordion>\n\n  <Accordion title=\"Execution Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`llama_parse`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_file_**: Can be either a base64 encoded file string or an array of http/https URLs to load\n        - **_filename_**: (optional) The name of the file (only used with base64 encoded files). Defaults to None.\n        - **_base64_**: (optional) Whether the input file is base64 encoded. Defaults to false.\n        - **_params_**: (optional) Optional arguments parameters that can override setup parameters for specific tasks. Defaults to None.\n  </Accordion>\n</AccordionGroup>\n\n<Callout type=\"info\" title=\"Additional Parameters\">\n  The different parameters available for the LlamaParse integration can be found in the [LlamaParse API documentation](https://github.com/run-llama/llama_parse/blob/main/README.md).\n</Callout>\n\n<Note>\n  Remember to replace `LLAMAPARSE_API_KEY` with your actual API key and ensure your file is base64 encoded if `base64` is set to true. Use the `params` field to pass any additional parameters required by your specific use case.\n</Note>\n<Note>\n  LlamaParse supports a wide range of different file types. For a full list of supported file types, please refer to the [LlamaParse documentation](https://github.com/run-llama/llama_parse/blob/main/llama_parse/utils.py).\n</Note>\n## Conclusion\n\nWith the LlamaParse integration, you can efficiently process documents and extract valuable information. \nThis integration provides a robust solution for document processing, enhancing your workflow's capabilities and user experience.\n\n<Tip>\n  For more information, please refer to the [LlamaParse documentation](https://docs.cloud.llamaindex.ai/llamaparse/getting_started/python).\n</Tip> "
  },
  {
    "path": "documentation/integrations/mediafile/unstructured.mdx",
    "content": "---\ntitle: 'Unstructured'\ndescription: 'Learn how to use the Unstructured.io integration with Julep'\nicon: 'file-lines'\n---\n\n## Overview\n\nWelcome to the Unstructured.io integration guide for Julep! This integration allows you to extract structured information from a wide variety of document formats, enabling you to build workflows that leverage advanced document processing capabilities. Whether you're developing a document analysis system, creating a RAG pipeline, or need to convert unstructured documents into structured data, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"API Key Required\">\n  To use the Unstructured.io integration, you need an API key. You can obtain this key by signing up at [Unstructured.io](https://unstructured.io/).\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Unstructured.io integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your API Key\">\n    Add your API key to the tools section of your task. This will allow Julep to authenticate requests to Unstructured.io on your behalf.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to define your document parsing task:\n\n```yaml Unstructured Example\nname: Unstructured Document Processing Task\ntools:\n- name: unstructured_processor\n  type: integration\n  integration:\n    provider: unstructured\n    method: parse\n    setup:\n      unstructured_api_key: \"UNSTRUCTURED_API_KEY\"\n\nmain:\n- tool: unstructured_processor\n  arguments:\n    file: document_base64 # this is a placeholder for the actual file\n    filename: document.pdf # this is a placeholder for the actual filename\n    partition_params:\n      key1: value1 # these are placeholders for the actual parameters\n      key2: value2 # these are placeholders for the actual parameters\n```\n  </Step>\n  <Step title=\"Run Task\">\n    Deploy your task by creating a new execution.\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Unstructured Document Processing Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `unstructured_processor` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `unstructured` for Unstructured.io.\n      - **_method_**: Indicates the method to be used, which is `parse` for Unstructured.io.\n      - **_setup_**: Contains configuration details\n          - **_unstructured_api_key_**: (Required) The API key for your Unstructured.io account.\n          - **_server_url_**: (Optional) Custom API endpoint URL if needed.\n          - **_server_**: (Optional) Server name to use.\n          - **_url_params_**: (Optional) Dictionary of parameters to template the server URL with.\n          - **_timeout_ms_**: (Optional) Request timeout in milliseconds.\n  </Accordion>\n\n  <Accordion title=\"Execution Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`unstructured_processor`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_file_**: Base64 encoded file string.\n        - **_filename_**: (Optional) The name of the file. Helpful for file type detection. In case no filename is provided, a random UUID will be generated.\n        - **_partition_params_**: (Optional) Advanced parameters for document processing. To see the full list of parameters, please refer to the [Unstructured.io API documentation](https://docs.unstructured.io/api-reference/partition/api-parameters).\n  </Accordion>\n</AccordionGroup>\n\n<Callout type=\"info\" title=\"Additional Parameters\">\n  The different parameters available for the Unstructured.io integration can be found in the [Unstructured.io API documentation](https://docs.unstructured.io/api-reference/).\n</Callout>\n\n<Note>\n  - Remember to replace `UNSTRUCTURED_API_KEY` with your actual API key or use environment variables. For base64 encoded files, ensure your file is properly encoded before passing it to the integration.\n  - Unstructured.io supports a wide range of file types including PDFs, Word documents, PowerPoint presentations, Excel spreadsheets, emails, HTML, images, and more. For a full list of supported file types, please refer to the [Unstructured.io documentation](https://docs.unstructured.io/getting-started/supported-files).\n</Note>\n\n## Conclusion\n\nWith the Unstructured.io integration, you can efficiently convert unstructured documents into structured data for analysis, search, and AI applications. This integration provides a powerful solution for document processing, enhancing your workflow's capabilities and enabling advanced RAG (Retrieval-Augmented Generation) pipelines.\n\n<Tip>\n  For more information, please refer to the [Unstructured.io documentation](https://docs.unstructured.io/).\n</Tip>\n"
  },
  {
    "path": "documentation/integrations/search/algolia.mdx",
    "content": "---\ntitle: 'Algolia'\ndescription: 'Learn how to use the Algolia search integration with Julep'\nicon: 'magnifying-glass'\n---\n\n## Overview\n\nWelcome to the Algolia integration guide for Julep! This integration allows you to perform powerful searches across your Algolia indices, enabling workflows that require fast, relevant, and typo-tolerant search capabilities. Whether you're building a site search, content discovery system, or personalized recommendation engine, this guide will help you set up and use Algolia with Julep.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"Algolia Account and API Keys Required\">\n  To use the Algolia integration, you need an Algolia account with an Application ID and API Key. You can sign up for an account at [Algolia](https://www.algolia.com/users/sign_up) and obtain your API credentials from the Algolia dashboard.\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Algolia integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your API Credentials\">\n    Add your Algolia Application ID and API Key to the tools section of your task. This will allow Julep to authenticate requests to Algolia on your behalf.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to define your search task:\n\n```yaml Algolia Search Example\nname: Algolia Search Task\n\ntools:\n- name: algolia_search\n  type: integration\n  integration:\n    provider: algolia\n    method: search\n    setup:\n      algolia_application_id: \"ALGOLIA_APPLICATION_ID\"\n      algolia_api_key: \"ALGOLIA_API_KEY\"\n\nmain:\n- tool: algolia_search\n  arguments:\n    index_name: your_index_name # this is a placeholder for the actual index name\n    query: searchquery # this is a placeholder for the actual search query\n    hits_per_page: 10\n    attributes_to_retrieve: $ [\"attribute1\", \"attribute2\"] # this is a placeholder for the actual attributes to retrieve\n```\n  </Step>\n</Steps>\n\n## YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Algolia Search Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `algolia_search` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `algolia` for Algolia Search.\n      - **_method_**: Indicates the method to be used, which is `search` for Algolia Search. This is the only supported method.\n      - **_setup_**: Contains configuration details, such as:\n        - **_algolia_application_id_**: Your Algolia Application ID.\n        - **_algolia_api_key_**: Your Algolia API Key (should be a search-only API key for security).\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`algolia_search`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_index_name_**: The name of the Algolia index to search.\n        - **_query_**: The search query to run against the index.\n        - **_hits_per_page_** (optional): Maximum number of results to return (default: 20).\n        - **_attributes_to_retrieve_** (optional): List of specific attributes to retrieve from the search results.\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  Remember to replace `ALGOLIA_APPLICATION_ID` and `ALGOLIA_API_KEY` with your actual Algolia credentials. For security, it's recommended to use search-only API keys with the minimal necessary permissions.\n</Note>\n\n## Conclusion\n\nThe Algolia integration provides a powerful way to incorporate fast, relevant, and scalable search functionality into your Julep workflows. By leveraging Algolia's search capabilities, you can create sophisticated search experiences that help users find exactly what they're looking for.\n\n<Tip>\n  For more information about Algolia's search parameters and capabilities, refer to the [Algolia Search API documentation](https://www.algolia.com/doc/api-reference/api-parameters/). \n</Tip>"
  },
  {
    "path": "documentation/integrations/search/arxiv.mdx",
    "content": "---\ntitle: 'ArXiv'\ndescription: 'Learn how to use the ArXiv integration with Julep'\nicon: 'book'\n---\n\n## Overview\n\nWelcome to the ArXiv integration guide for Julep! This integration allows you to access a vast repository of scientific papers and articles, enabling you to build workflows that require academic research data. Whether you're developing a research assistant or need scholarly articles for analysis, this guide will walk you through the setup and usage.\n\n## How to Use the Integration\n\nTo get started with the ArXiv integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Define Your Search Parameters\">\n    Use the following YAML configuration to define your search parameters and request data from ArXiv:\n\n```yaml ArXiv Search Example\nname: ArXiv Search\ntools:\n- name: arxiv_search\n  type: integration\n  integration:\n    provider: arxiv\n    method: search\nmain:\n- tool: arxiv_search\n  arguments:\n    query: machine learning\n    max_results: 10\n    download_pdf: False\n    sort_by: relevance\n    sort_order: descending\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"ArXiv Search\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `arxiv_search` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `arxiv` for ArXiv.\n      - **_method_**: Indicates the method to be used, which is `search` for ArXiv. If not specified, the method will be `search` by default.\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`arxiv_search`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_query_**: The search query for the ArXiv search.\n        - **_max_results_**: (optional) The maximum number of results to return. Defaults to 5.\n        - **_download_pdf_**: (optional) Return base64 encoded pdfs. Defaults to False.\n        - **_sort_by_**: (optional) The sorting criterion for the results. Defaults to \"relevance\".\n        - **_sort_order_**: (optional) The sorting order for the results. Defaults to \"descending\".\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  Customize the `query` and other parameters to suit your specific search needs.\n</Note>\n\n## Conclusion\n\nWith the ArXiv integration, you can easily access a wealth of academic papers and articles. \nThis integration provides a robust solution for accessing scholarly data, enhancing your workflow's research capabilities and user experience.\n\n<Tip>\n  For more information, please refer to the [ArXiv API documentation](https://arxiv.org/help/api/index).\n</Tip> "
  },
  {
    "path": "documentation/integrations/search/brave.mdx",
    "content": "---\ntitle: 'Brave'\ndescription: 'Learn how to use the Brave integration with Julep'\nicon: 'searchengin'\n---\n\n## Overview\n\nWelcome to the Brave Search integration guide for Julep! This integration allows you to perform web searches using Brave, enabling you to build workflows that require comprehensive search capabilities. Whether you're developing a search engine or need to retrieve web data, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"API Key Required\">\n  To use the Brave Search integration, you need an API key. You can obtain this key by signing up at [Brave](https://brave.com/search/api/).\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Brave Search integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your API Key\">\n    Add your API key to the tools section of your task. This will allow Julep to authenticate requests to Brave Search on your behalf.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to define your search task:\n\n```yaml Brave Search Example\nname: Brave Search Task\ntools:\n- name: brave_search\n  type: integration\n  integration:\n    provider: brave\n    method: search\n    setup:\n      brave_api_key: \"BRAVE_API_KEY\"\n\nmain:\n- tool: brave_search\n  arguments:\n    query: latest technology trends\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Brave Search Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `brave_search` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `brave` for Brave Search.\n      - **_method_**: Indicates the method to be used, which is `search` for Brave Search. If not specified, the method will be `search` by default.\n      - **_setup_**: Contains configuration details, such as the API key (`api_key`) required for authentication.\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`brave_search`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_query_**: The search query for Brave Search.\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  Remember to replace `BRAVE_API_KEY` with your actual API key. Customize the `query` parameter to suit your specific search needs.\n</Note>\n\n## Conclusion\n\nWith the Brave Search integration, you can efficiently perform web searches and retrieve relevant data. \nThis integration provides a robust solution for search capabilities, enhancing your workflow's functionality and user experience.\n\n<Tip>\n  For more information, please refer to the [Brave Search API documentation](https://api.search.brave.com/app/documentation/web-search/get-started).\n</Tip> "
  },
  {
    "path": "documentation/integrations/search/wikipedia.mdx",
    "content": "---\ntitle: 'Wikipedia'\ndescription: 'Learn how to use the Wikipedia integration with Julep'\nicon: 'wikipedia-w'\n---\n\n## Overview\n\nWelcome to the Wikipedia integration guide for Julep! This integration allows you to access a vast repository of information from Wikipedia, enabling you to build workflows that require comprehensive data retrieval capabilities. Whether you're developing a knowledge base or need quick access to encyclopedic information, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"No API Key Required\">\n  The Wikipedia integration does not require an API key. You can start using it immediately without any additional setup.\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Wikipedia integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Define Your Search Parameters\">\n    Use the following YAML configuration to define your search parameters and request data from Wikipedia:\n\n```yaml Wikipedia Search Example\nname: Wikipedia Search\ntools:\n- name: wikipedia_search\n  type: integration\n  integration:\n    provider: wikipedia\n    method: search\n\nmain:\n- tool: wikipedia_search\n  arguments:\n    query: Artificial Intelligence\n    load_max_docs: 5\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Wikipedia Search\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `wikipedia_search` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `wikipedia` for Wikipedia.\n      - **_method_**: Indicates the method to be used, which is `search` for Wikipedia. If not specified, the method will be `search` by default.\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`wikipedia_search`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_query_**: The search query string.\n        - **_load_max_docs_**: (optional) Maximum number of documents to load. Defaults to 2. Range 1-10.\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  Customize the `query` and `load_max_docs` parameters to suit your specific search needs.\n</Note>\n\n## Conclusion\n\nWith the Wikipedia integration, you can easily access a wealth of information from one of the largest online encyclopedias. \nThis integration provides a robust solution for data retrieval, enhancing your workflow's capabilities and user experience.\n\n<Tip>\n  For more information, please refer to the [Wikipedia API documentation](https://wikipedia.readthedocs.io/en/latest/).\n</Tip> "
  },
  {
    "path": "documentation/integrations/supported-integrations.mdx",
    "content": "---\ntitle: 'Supported Integrations'\ndescription: 'List of supported integrations in Julep'\nicon: 'plug'\n---\n\nimport { IntegrationsSlider } from \"/snippets/integrations-slider.jsx\"\n\n## Overview\n\nJulep supports a wide range of integrations to help you build powerful workflows. This page provides an overview of the supported integrations and their capabilities.\n\n<IntegrationsSlider />\n\n## Communication & Data\n\nTools for sending messages and accessing real-time data feeds.\n\n| Integration | Description |\n|------------|-------------|\n| [Email](/integrations/communicationdata/email) | SMTP email sending and management |\n| [Google Sheets](/integrations/communicationdata/google-sheets) | Spreadsheet data management and automation |\n| [Weather](/integrations/communicationdata/weather) | Real-time weather data access |\n\n## Media & File Processing\n\nSolutions for handling documents, video, and digital assets.\n\n| Integration | Description |\n|------------|-------------|\n| [LlamaParse](/integrations/mediafile/llamaparse) | Document parsing and extraction|\n| [FFmpeg](/integrations/mediafile/ffmpeg) | Video processing and editing |\n| [Cloudinary](/integrations/mediafile/cloudinary) | Cloud based Image and Video Processing |\n| [Unstructured](/integrations/mediafile/unstructured) | Document parsing and extraction |\n\n## Search\n\nAccess to search engines and knowledge bases for information retrieval.\n\n| Integration | Description |\n|------------|-------------|\n| [Arxiv](/integrations/search/arxiv) | Academic paper search |\n| [Algolia](/integrations/search/algolia) | Site-specific search indexing and retrieval |\n| [Brave](/integrations/search/brave) | Web search capabilities |\n| [Wikipedia](/integrations/search/wikipedia) | Wikipedia article access |\n\n## Web & Browser Automation\n\nTools for automated web interaction and data collection.\n\n| Integration | Description |\n|------------|-------------|\n| [BrowserBase](/integrations/webbrowser/browserbase) | Headless browser automation |\n| [Spider](/integrations/webbrowser/spider) | Web crawling and scraping |\n| [Remote Browser](/integrations/webbrowser/remote-browser) | Remote browser control |\n\n## Extensibility\n\nConnect to external services and extend Julep's capabilities dynamically.\n\n| Integration | Description |\n|------------|-------------|\n| [MCP](/integrations/extensibility/mcp) | Model Context Protocol - Connect to any MCP-compatible server for unlimited extensibility |\n\n## Next Steps\n\n- [Getting Started](/introduction/quickstart)\n- [Tutorials](/tutorials)\n- [Advanced Topics](/advanced)"
  },
  {
    "path": "documentation/integrations/supported-models.mdx",
    "content": "---\ntitle: 'Supported Models'\ndescription: 'Comprehensive guide to AI models and parameters supported by Julep'\nicon: 'bars'\n---\n\n## Overview\n\nJulep leverages LiteLLM to seamlessly connect you to a wide array of Language Models (LLMs). This integration offers incredible flexibility, allowing you to tap into models from various providers with a straightforward, unified interface.\n\n<Info>\nWith our unified API, switching between different providers is a breeze, ensuring you maintain consistent functionality across the board.\n</Info>\n\n## Available Models\n\n<Info>\nWhile we provide API keys for quick testing and development, you'll need to use your own API keys when deploying to production. This ensures you have full control over your usage and billing.\n</Info>\n\n<Tip>\nLooking for top-notch quality? Our curated selection of models delivers excellent outputs for all your use cases.\n</Tip>\n\n### Anthropic\n\nHere are the Anthropic models supported by Julep:\n\n| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\n|------------|----------------|------------|--------------|--------|-------|---------|----------|\n| claude-3-haiku | 200K tokens | 4K tokens | ✅ | ✅ | ❌ | ❌ | Budget |\n| claude-3-sonnet | 200K tokens | 4K tokens | ✅ | ✅ | ❌ | ❌ | Premium |\n| claude-3.5-haiku | 200K tokens | 8K tokens | ✅ | ❌ | ❌ | ✅ | Standard |\n| claude-3.5-sonnet | 200K tokens | 8K tokens | ✅ | ✅ | ❌ | ✅ | Premium |\n| claude-3.5-sonnet-20240620 | 200K tokens | 4K tokens | ✅ | ✅ | ❌ | ❌ | Premium |\n| claude-3.5-sonnet-20241022 | 200K tokens | 8K tokens | ✅ | ✅ | ❌ | ✅ | Premium |\n| claude-3.7-sonnet | 200K tokens | 8K tokens | ✅ | ✅ | ❌ | ✅ | Premium |\n| claude-haiku-4-5 | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| claude-opus-4 | 200K tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise |\n| claude-opus-4-1 | 200K tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise |\n| claude-sonnet-4 | 1M tokens | 64K tokens | ✅ | ✅ | ❌ | ✅ | Premium |\n| claude-sonnet-4-5 | 200K tokens | 64K tokens | ✅ | ✅ | ❌ | ✅ | Premium |\n\n\n### Google\n\nHere are the Google models supported by Julep:\n\n| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\n|------------|----------------|------------|--------------|--------|-------|---------|----------|\n| gemini-1.5-pro | 2M tokens | 8K tokens | ✅ | ✅ | ❌ | ❌ | Standard |\n| gemini-1.5-pro-latest | 1M tokens | 8K tokens | ✅ | ✅ | ❌ | ❌ | Premium |\n| gemini-2.0-flash | 1M tokens | 8K tokens | ✅ | ✅ | ✅ | ✅ | Budget |\n| gemini-2.5-flash | 1M tokens | 65K tokens | ✅ | ✅ | ❌ | ✅ | Budget |\n| gemini-2.5-pro | 1M tokens | 65K tokens | ✅ | ✅ | ✅ | ✅ | Standard |\n| gemini-2.5-pro-preview-03-25 | 1M tokens | 65K tokens | ✅ | ✅ | ❌ | ✅ | Standard |\n| gemini-2.5-pro-preview-06-05 | 1M tokens | 65K tokens | ✅ | ✅ | ❌ | ✅ | Standard |\n\n\n### OpenAI\n\nHere are the OpenAI models supported by Julep:\n\n| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\n|------------|----------------|------------|--------------|--------|-------|---------|----------|\n| gpt-4-turbo | 128K tokens | 4K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise |\n| gpt-4.1 | 1M tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Premium |\n| gpt-4.1-mini | 1M tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Budget |\n| gpt-4.1-nano | 1M tokens | 32K tokens | ✅ | ✅ | ❌ | ✅ | Budget |\n| gpt-4o | 128K tokens | 16K tokens | ✅ | ✅ | ❌ | ✅ | Premium |\n| gpt-4o-mini | 128K tokens | 16K tokens | ✅ | ✅ | ❌ | ✅ | Budget |\n| gpt-5 | 272K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Standard |\n| gpt-5-2025-08-07 | 272K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Standard |\n| gpt-5-chat | 272K tokens | 128K tokens | ❌ | ✅ | ❌ | ✅ | Standard |\n| gpt-5-chat-latest | 128K tokens | 16K tokens | ❌ | ✅ | ❌ | ✅ | Standard |\n| gpt-5-mini | 272K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Budget |\n| gpt-5-mini-2025-08-07 | 272K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Budget |\n| gpt-5-nano | 272K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Budget |\n| gpt-5-nano-2025-08-07 | 272K tokens | 128K tokens | ✅ | ✅ | ❌ | ✅ | Budget |\n| o1 | 200K tokens | 100K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise |\n| o1-mini | 128K tokens | 65K tokens | ❌ | ✅ | ❌ | ✅ | Standard |\n| o1-preview | 128K tokens | 32K tokens | ❌ | ✅ | ❌ | ✅ | Enterprise |\n| o3-mini | 200K tokens | 100K tokens | ✅ | ❌ | ❌ | ✅ | Standard |\n| o4-mini | 200K tokens | 100K tokens | ✅ | ✅ | ❌ | ✅ | Standard |\n\n\n### Groq\n\nHere are the Groq models supported by Julep:\n\n| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\n|------------|----------------|------------|--------------|--------|-------|---------|----------|\n| deepseek-r1-distill-llama-70b | 128K tokens | 128K tokens | ✅ | ❌ | ❌ | ❌ | Standard |\n| gemma2-9b-it | 8K tokens | 8K tokens | ❌ | ❌ | ❌ | ❌ | Budget |\n| llama-3.1-8b | 128K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget |\n| llama-3.1-8b-instant | 128K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget |\n| llama-3.3-70b-versatile | 128K tokens | 32K tokens | ✅ | ❌ | ❌ | ❌ | Standard |\n| meta-llama/Llama-Guard-4-12B | 163K tokens | 163K tokens | ❌ | ❌ | ❌ | ❌ | Budget |\n| meta-llama/llama-4-maverick-17b-128e-instruct | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget |\n| meta-llama/llama-4-scout-17b-16e-instruct | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget |\n| qwen/qwen3-32b | 131K tokens | 131K tokens | ✅ | ❌ | ❌ | ❌ | Budget |\n\n\n### OpenRouter\n\nHere are the OpenRouter models supported by Julep:\n\n| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\n|------------|----------------|------------|--------------|--------|-------|---------|----------|\n| deepseek-chat | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ✅ | Standard |\n| deepseek/deepseek-r1-distill-llama-70b | 65K tokens | 8K tokens | ✅ | ❌ | ❌ | ✅ | Standard |\n| deepseek/deepseek-r1-distill-qwen-32b | 65K tokens | 8K tokens | ✅ | ❌ | ❌ | ✅ | Standard |\n| eva-llama-3.33-70b | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| eva-qwen-2.5-72b | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| hermes-3-llama-3.1-70b | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| l3.1-euryale-70b | 200K tokens | 100K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise |\n| l3.3-euryale-70b | 200K tokens | 100K tokens | ✅ | ✅ | ❌ | ✅ | Enterprise |\n| magnum-v4-72b | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| meta-llama/llama-3.1-8b-instruct | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| meta-llama/llama-3.3-70b-instruct | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| meta-llama/llama-4-scout | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget |\n| mistral-large-2411 | 128K tokens | 128K tokens | ✅ | ❌ | ❌ | ❌ | Premium |\n| openrouter/meta-llama/llama-4-maverick | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget |\n| openrouter/meta-llama/llama-4-maverick:free | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| openrouter/meta-llama/llama-4-scout | 131K tokens | 8K tokens | ✅ | ❌ | ❌ | ❌ | Budget |\n| openrouter/meta-llama/llama-4-scout:free | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| perplexity/sonar | 128K tokens | Unknown | ❌ | ❌ | ❌ | ❌ | Standard |\n| perplexity/sonar-deep-research | 128K tokens | Unknown | ❌ | ❌ | ❌ | ❌ | Premium |\n| perplexity/sonar-pro | 200K tokens | 8K tokens | ❌ | ❌ | ❌ | ❌ | Premium |\n| perplexity/sonar-reasoning | 128K tokens | Unknown | ❌ | ❌ | ❌ | ❌ | Standard |\n| perplexity/sonar-reasoning-pro | 128K tokens | Unknown | ❌ | ❌ | ❌ | ❌ | Premium |\n| qwen-2.5-72b-instruct | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n\n\n### Amazon Nova\n\nHere are the Amazon Nova models supported by Julep:\n\n| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\n|------------|----------------|------------|--------------|--------|-------|---------|----------|\n| amazon/nova-lite-v1 | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| amazon/nova-micro-v1 | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n| amazon/nova-pro-v1 | Unknown | Unknown | ❌ | ❌ | ❌ | ❌ | Unknown |\n\n\n### Embedding\n\nHere are the embedding models supported by Julep:\n\n| Model Name | Embedding Dimensions |\n|------------|---------------------|\n| Alibaba-NLP/gte-large-en-v1.5 | 1024 |\n| BAAI/bge-m3 | 1024 |\n| text-embedding-3-large | 1024 |\n| vertex_ai/text-embedding-004 | 1024 |\n| voyage-3 | 1024 |\n| voyage-multilingual-2 | 1024 |\n\n<Info>\nThough the models mentioned above support different embedding dimensions, Julep uses fixed 1024 dimensions for all embedding models for now. We plan to support different dimensions in the future.\n</Info>\n\n## Supported Parameters\n\nFollowing are a list of different parameters that can be used to control the behavior of the models.\n\n<AccordionGroup>\n  <Accordion title=\"Core Parameters\" icon=\"sliders\" defaultOpen={true}>\n    | Parameter | Range | Description |\n    |-----------|--------|-------------|\n    | temperature | 0.0 - 5.0 | Controls randomness in outputs. Higher values (e.g., 0.8) increase randomness, while lower values (e.g., 0.2) make output more focused and deterministic |\n    | top_p | 0.0 - 1.0 | Alternative to temperature for nucleus sampling. Only tokens with cumulative probability < top_p are considered. We recommend adjusting either this or temperature, not both |\n    | max_tokens | ≥ 1 | Maximum number of tokens to generate in the response |\n  </Accordion>\n\n  <Accordion title=\"Penalty Parameters\" icon=\"gauge\" defaultOpen={true}>\n    | Parameter | Range | Description |\n    |-----------|--------|-------------|\n    | frequency_penalty | -2.0 - 2.0 | Penalizes tokens based on their frequency in the text. Positive values decrease repetition |\n    | presence_penalty | -2.0 - 2.0 | Penalizes tokens based on their presence in the text. Positive values decrease likelihood of repeating content |\n    | repetition_penalty | 0.0 - 2.0 | Penalizes repetition (1.0 is neutral). Values > 1.0 reduce likelihood of repeating content |\n    | length_penalty | 0.0 - 2.0 | Penalizes based on generation length (1.0 is neutral). Values > 1.0 penalize longer generations |\n  </Accordion>\n\n  <Accordion title=\"Advanced Controls\" icon=\"gear\" defaultOpen={true}>\n    | Parameter | Range | Description |\n    |-----------|--------|-------------|\n    | min_p | 0.0 - 1.0 | Minimum probability threshold compared to the highest token probability |\n    | seed | integer | For deterministic generation. Set a specific seed for reproducible results |\n    | stop | list[str] | Up to 4 sequences where generation should stop |\n    | response_format | object | Control output format: `{\"type\": \"json_object\"}` or `{\"type\": \"json_schema\", \"json_schema\": {...}}` |\n  </Accordion>\n\n</AccordionGroup>\n<Info>\nNot all parameters are supported by every model. Please refer to the [LiteLLM documentation](https://docs.litellm.ai/completion/input) for more details.\n\n**Response Format Support**: The `response_format` parameter is supported by OpenAI, Azure OpenAI, Google AI Studio (Gemini), Vertex AI, Bedrock, Anthropic, Groq, xAI (Grok-2+), Databricks, and Ollama. For the most up-to-date list, check the [LiteLLM JSON Mode documentation](https://docs.litellm.ai/docs/completion/json_mode).\n</Info>\n\n<Note>\n  **Best Practices:**\n  - Start with default values and adjust based on your needs\n  - Use temperature (0.0 - 1.0) for most cases\n  - Avoid setting multiple penalty parameters simultaneously\n  - Test different combinations for optimal results\n</Note>\n\n<Warning>\n  Setting extreme values for multiple parameters may lead to unexpected behavior or poor quality outputs.\n</Warning>\n\n## Usage Guidelines\n\n<CardGroup cols={2}>\n  <Card title=\"Consider Model Selection Criteria\" icon=\"chart-line\">\n    <ul>\n      <li>**1.** Your budget and cost constraints</li>\n      <li>**2.** How fast you need responses</li>\n      <li>**3.** The quality you're aiming for</li>\n      <li>**4.** The context window size you require</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Follow Best Practices\" icon=\"check\">\n    <ul>\n      <li>**1.** Start with smaller models for development and testing</li>\n      <li>**2.** Use larger context windows only when necessary</li>\n      <li>**3.** Keep an eye on token usage to manage costs</li>\n    </ul>\n  </Card>\n</CardGroup>\n  \n<Tip>\n  For more information, please refer to the [LiteLLM documentation](https://docs.litellm.ai/providers).\n</Tip>"
  },
  {
    "path": "documentation/integrations/webbrowser/browserbase.mdx",
    "content": "---\ntitle: 'Browser Base'\ndescription: 'Learn how to use the Browser Base integration with Julep'\nicon: 'firefox-browser'\n---\n\n## Overview\n\nWelcome to the Browser Base integration guide for Julep! This integration allows you to manage browser sessions and perform various actions, enabling you to build workflows that require browser automation capabilities. Whether you're testing web applications or automating web tasks, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"API Key Required\">\n  To use the Browserbase integration, you need an API key. You can obtain this key by signing up at [Browserbase](https://browserbase.com/signup).\n</Info>\n\n<Info type=\"info\" title=\"Project ID Required\">\n  To use the Browserbase integration, you need a Project ID. You can obtain this ID by signing up at [Browserbase](https://browserbase.com/signup).\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Browserbase integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your API Key\">\n    Add your API key and project ID to the tools section of your task. This will allow Julep to authenticate requests to Browserbase on your behalf.\n\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to define your browser automation task:\n\n```yaml Browser Base Example\nname: Browser Base Task\ntools:\n- name: browserbase_tool\n  type: integration\n  integration:\n    provider: browserbase\n    method: create_session\n    setup:\n      api_key: \"BROWSERBASE_API_KEY\"\n      project_id: \"BROWSERBASE_PROJECT_ID\"\nmain:\n- tool: browserbase_tool\n  arguments:\n    project_id: BROWSERBASE_PROJECT_ID\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Browser Base Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `browserbase_tool` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `browserbase` for Browserbase.\n      - **_method_**: Specifies the method to use, such as `create_session`, `list_sessions`, `get_session`, `complete_session`, `get_live_urls`, or `install_extension_from_github`. Defaults to `list_sessions` if not specified.\n      - **_setup_**: Contains configuration details.\n        - **_api_key_**:(Required) The API key. Can be found in Settings.\n        - **_project_id_**: (Required) The Project ID. Can be found in Settings.\n        - **_api_url_**: (optional) The API URL. Defaults to https://www.browserbase.com\n        - **_connect_url_**: (optional) The Connect URL. Defaults to wss://connect.browserbase.com\n\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`browserbase_tool`).\n      - **_arguments_**: Specifies the input parameters for the tool, which vary depending on the method used.\n        <Accordion title=\"create_session\">\n            - **_project_id_**: The Project ID. Can be found in Settings.\n            - **_extension_id_**: (optional) The installed Extension ID. See Install Extension from GitHub.\n            - **_browser_settings_**: (optional) Browser settings object.\n            - **_timeout_**: (optional) Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout.\n            - **_keep_alive_**: (optional) Set to true to keep the session alive even after disconnections. This is available on the Startup plan only.\n            - **_proxies_**: (optional) Proxy configuration. Can be true for default proxy, or an array of proxy configurations.\n        </Accordion>\n        <Accordion title=\"list_sessions\">\n            - **_status_**: The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED).\n        </Accordion>\n        <Accordion title=\"get_session\">\n            - **_id_**: The session ID.\n        </Accordion>\n        <Accordion title=\"complete_session\">\n            - **_id_**: The session ID.\n        </Accordion>\n        <Accordion title=\"get_live_urls\">\n            - **_id_**: The session ID.\n        </Accordion>\n        <Accordion title=\"install_extension_from_github\">\n            - **_repository_name_**: The GitHub repository name.\n            - **_ref_**: Ref to install from a branch or tag.\n        </Accordion>\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  - Remember to replace `BROWSERBASE_API_KEY` and `BROWSERBASE_PROJECT_ID` with your actual API key and project ID. \n  - Customize the `arguments` based on the method you choose to use.\n</Note>\n\n## Conclusion\n\nWith the Browserbase integration, you can efficiently manage browser sessions and automate web tasks. \nThis integration provides a robust solution for browser automation, enhancing your workflow's capabilities and user experience.\n\n<Tip>\n  For more information, please refer to the [Browserbase API documentation](https://docs.browserbase.com/introduction).\n</Tip> "
  },
  {
    "path": "documentation/integrations/webbrowser/remote-browser.mdx",
    "content": "---\ntitle: 'Remote Browser'\ndescription: 'Learn how to use the Remote Browser integration with Julep'\nicon: 'arrow-pointer'\n---\n\n## Overview\n\nWelcome to the Remote Browser integration guide for Julep! This integration allows you to manage browser sessions and perform various actions, enabling you to build workflows that require browser automation capabilities. \nWhether you're testing web applications or automating web tasks, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"Setup Required\">\n  To use the Remote Browser integration, you need to configure a remote browser to connect to. The integration then uses Playwright for browser automation to interact with the that remote browser.\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Remote Browser integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Remote Browser\">\n    Add your Remote Browser configuration (say Browserbase) to the tools section of your task. This will allow Julep to manage browser automation on your behalf to interact with the remote browser.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to perform browser actions in your task definition:\n\n```yaml Remote Browser Example [expandable]\nname: Browser Automation Task\ntools:\n- name: browserbase_tool\n  type: integration\n  integration:\n    provider: browserbase\n    method: create_session\n    setup:\n      project_id: \"BROWSERBASE_PROJECT_ID\"\n\n- name: browser_tool\n  type: integration\n  integration:\n    provider: remote_browser\n    method: perform_action\n    setup:\n      width: 1920\n      height: 1080\n\nmain:\n\n- tool: browserbase_tool\n  method: create_session\n  arguments:\n    project_id: BROWSERBASE_PROJECT_ID\n\n- evaluate:\n    browser_session_id: $ _.id\n    connect_url: $ _.connect_url\n\n- tool: browser_tool\n  arguments:\n    connect_url: $ _.connect_url\n    action: navigate\n    text: https://www.google.com\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Browser Automation Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `browser_tool` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `remote_browser`.\n      - **_method_**: Specifies the method to use, which is `perform_action`. Defaults to `perform_action` if not specified.\n      - **_setup_**: Contains configuration details, which are the connection url and the browser size (width and height).\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`browser_tool`).\n      - **_method_**: Specifies the method to use, which is `perform_action`.\n      - **_arguments_**: Specifies the input parameters for the tool:\n          - **_action_**: The type of action to perform.\n          <Accordion title=\"List of Actions\">\n            - `key`: Send keyboard input\n            - `type`: Type text into an input field\n            - `mouse_move`: Move the mouse cursor to coordinates\n            - `left_click`: Perform a left mouse click\n            - `left_click_drag`: Click and drag with left mouse button\n            - `right_click`: Perform a right mouse click  \n            - `middle_click`: Perform a middle mouse click\n            - `double_click`: Perform a double click\n            - `screenshot`: Take a screenshot\n            - `cursor_position`: Get current cursor position\n            - `navigate`: Navigate to a URL\n            - `refresh`: Refresh the current page\n          </Accordion>\n            - **_text_**: The text to type in the input field.\n            - **_coordinate_**: The coordinates to click on the screen to move the mouse.\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  - Remember to replace `BROWSERBASE_PROJECT_ID` with your actual project ID.\n  - Make sure to properly configure browser settings and action parameters for your use case.\n</Note>\n\n## Conclusion\n\nWith the Remote Browser integration, you can efficiently automate browser interactions in your workflows. This integration provides a robust solution for web automation, enhancing your workflow's capabilities and reliability.\n\n<Tip>\n  For more information, please refer to the [Playwright documentation](https://playwright.dev/).\n</Tip>\n"
  },
  {
    "path": "documentation/integrations/webbrowser/spider.mdx",
    "content": "---\ntitle: 'Spider Crawler'\ndescription: 'Learn how to use the Spider Crawler integration with Julep'\nicon: 'spider'\n---\n\n## Overview\n\nWelcome to the Spider Crawler integration guide for Julep! This integration allows you to crawl websites and extract data, enabling you to build workflows that require web scraping capabilities. Whether you're gathering data for analysis or monitoring web content, this guide will walk you through the setup and usage.\n\n## Prerequisites\n\n<Info type=\"info\" title=\"API Key Required\">\n  To use the Spider integration, you need an API key. You can obtain this key by signing up at [Spider](https://spider.cloud/).\n</Info>\n\n## How to Use the Integration\n\nTo get started with the Spider integration, follow these steps to configure and create a task:\n\n<Steps>\n  <Step title=\"Configure Your API Key\">\n    Add your API key to the tools section of your task. This will allow Julep to authenticate requests to Spider on your behalf.\n  </Step>\n  <Step title=\"Create Task Definition\">\n    Use the following YAML configuration to define your web crawling task:\n\n```yaml Spider Example\nname: Spider Task\ntools:\n- name: spider_tool\n  type: integration\n  integration:\n    provider: spider\n    method: crawl\n    setup:\n      spider_api_key: \"SPIDER_API_KEY\"\nmain:\n- tool: spider_tool\n  method: crawl\n  arguments:\n    url: $ _.url\n    params: # Optional parameters\n      key1: value1 # this a placeholder for the actual parameters\n    content_type: application/json\n```\n  </Step>\n</Steps>\n\n### YAML Explanation\n\n<AccordionGroup>\n  <Accordion title=\"Basic Configuration\">\n    - **_name_**: A descriptive name for the task, in this case, \"Spider Task\".\n    - **_tools_**: This section lists the tools or integrations being used. Here, `spider_tool` is defined as an integration tool.\n  </Accordion>\n\n  <Accordion title=\"Tool Configuration\">\n    - **_type_**: Specifies the type of tool, which is `integration` in this context.\n    - **_integration_**: Details the provider and setup for the integration.\n      - **_provider_**: Indicates the service provider, which is `spider` for Spider.\n      - **_method_**: Specifies the method to use, such as `crawl`, `links`, `screenshot`, or `search`. Defaults to `crawl` if not specified.\n      - **_setup_**: Contains configuration details, such as the API key (`spider_api_key`) required for authentication.\n  </Accordion>\n\n  <Accordion title=\"Workflow Configuration\">\n    - **_main_**: Defines the main execution steps.\n      - **_tool_**: Refers to the tool defined earlier (`spider_tool`).\n      - **_arguments_**: Specifies the input parameters for the tool:\n        - **_url_**: The URL for which to fetch data.\n        - **_params_**: (optional) The parameters for the Spider API. Defaults to None.\n        - **_content_type_**: (optional) The content type to return. Default is \"application/json\". Other options: \"text/csv\", \"application/xml\", \"application/jsonl\".\n  </Accordion>\n</AccordionGroup>\n\n<Note>\n  Remember to replace `SPIDER_API_KEY` with your actual API key. Customize the `url`, `params`, and `content_type` parameters to suit your specific needs.\n</Note>\n<Note>\n  The different parameters available depending on the method used for the Spider integration can be found in the [Spider API documentation](https://spider.cloud/api).\n</Note>\n## Conclusion\n\nWith the Spider integration, you can efficiently crawl websites and extract valuable data. \nThis integration provides a robust solution for web scraping, enhancing your workflow's capabilities and user experience.\n\n<Tip>\n  For more information, please refer to the [Spider API documentation](https://spider.cloud/api).\n</Tip> "
  },
  {
    "path": "documentation/introduction/developer-orientation.mdx",
    "content": "---\ntitle: 'Developer Orientation'\ndescription: 'Overview of the repository structure and key resources for Julep developers'\nicon: 'info'\n---\n\n## Overview\n\nThis page provides a high-level tour of the Julep repository so you know where to find key components and documentation.\n\n## Main Directories\n\n### `agents-api/`\nCore FastAPI service that defines agents, tasks, sessions, and runs workflows.\n\n### `memory-store/`\nPostgreSQL-based service used for vector storage and other persistent data.\n\n### `integrations-service/`\nHouses adapters for external services and tools that agents can call.\n\n### `sdks/`\nSubmodules containing the Python and Node.js SDK implementations.\n\n## Developer Resources\n\n- **CLI Usage** – See the [CLI guide](/julepcli/introduction) and [Command Reference](/julepcli/commands).\n- **TypeSpec Definitions** – API schemas live in the [`typespec/`](https://github.com/julep-ai/julep/tree/dev/typespec) directory. The generated OpenAPI spec is available at [`openapi.yaml`](https://github.com/julep-ai/julep/blob/dev/openapi.yaml).\n- **SDK References** – Python and Node.js SDK docs are in the [SDK section](/sdks/index) of the documentation.\n\n## Learn More\n\nRefer to the [Quick Start](/introduction/quickstart) to try Julep right away and the [Installation Guide](/introduction/install) for setup instructions.\n\n## Next Steps for Learning\n\n- 📚 Explore more examples in our [Cookbook](https://github.com/julep-ai/julep/tree/dev/cookbooks)\n- 🔧 Learn about [Tool Integration](https://docs.julep.ai/docs/tools/overview)\n- 🧠 Understand [Agent Memory](https://docs.julep.ai/docs/agents/memory)\n- 🔄 Dive into [Complex Workflows](https://docs.julep.ai/docs/tasks/workflows)\n\n> [!TIP]\n> 💡 Checkout more tutorials in the [Tutorials](https://docs.julep.ai/docs/tutorials/) section of the documentation.\n>\n> 💡 If you are a beginner, we recommend starting with the [Quickstart Guide](https://docs.julep.ai/docs/introduction/quickstart).\n>\n> 💡 If you are looking for more ideas, check out the [Ideas](https://github.com/julep-ai/julep/blob/dev/cookbooks/IDEAS.md) section of the repository.\n>\n> 💡 If you are more into cookbook style recipes, check out the [Cookbook](https://github.com/julep-ai/julep/tree/dev/cookbooks) section of the repository.\n"
  },
  {
    "path": "documentation/introduction/install.mdx",
    "content": "---\ntitle: 'Installation'\ndescription: 'Step-by-step installation instructions for different environments'\nicon: 'download'\n---\n\n## Overview\nThis guide covers the installation of Julep in various environments and configurations.\n\n### Prerequisites\n\nBefore installing Julep, ensure you have:\n\n- Python 3.8+ or Node.js 16+ installed\n- pip (for Python) or npm/bun (for Node.js) package manager\n- A Julep API key ([Get one here](https://dashboard.julep.ai))\n\n### Package Installation\n\n<Tabs>\n  <Tab title=\"Python\">\n\n  1. Using pip:\n  ```bash\n  pip install julep\n  ```\n\n  2. Using poetry:\n  ```bash\n  poetry add julep\n  ```\n\n  3. Using pipenv:\n  ```bash\n  pipenv install julep\n  ```\n\n  </Tab>\n\n  <Tab title=\"Node.js\">\n\n  1. Using npm:\n  ```bash\n  npm install @julep/sdk\n  ```\n\n  2. Using yarn:\n  ```bash\n  yarn add @julep/sdk\n  ```\n\n  3. Using bun:\n  ```bash\n  bun add @julep/sdk\n  ```\n  </Tab>\n\n</Tabs>\n\n### Environment Setup\n\n#### Setting up Environment Variables\n\nIt's recommended to use environment variables for sensitive information like API keys:\n\n1. Create a `.env` file in your project root:\n```bash\nJULEP_API_KEY=your_api_key_here\nJULEP_ENVIRONMENT=production  # or dev (development)\n```\n\n2. Load the environment variables in your code:\n\n<CodeGroup>\n  ```python Python\n  import os\n  from dotenv import load_dotenv\n  from julep import Julep\n\n  load_dotenv()\n\n  client = Julep(\n      api_key=os.getenv('JULEP_API_KEY'),\n      environment=os.getenv('JULEP_ENVIRONMENT', 'production')\n  )\n  ```\n\n  ```javascript Node.js\n  import dotenv from 'dotenv';\n  import { Julep } from '@julep/sdk';\n\n  dotenv.config();\n\n  const client = new Julep({\n    apiKey: process.env.JULEP_API_KEY,\n    environment: process.env.JULEP_ENVIRONMENT || 'production'\n  });\n  ```\n</CodeGroup>\n\n### Verification\n\nTo verify your installation:\n\n<CodeGroup>\n  ```python Python\n  from julep import Julep\n  import os\n  from dotenv import load_dotenv\n\n  load_dotenv()\n\n  client = Julep(\n      api_key=os.getenv('JULEP_API_KEY'),\n      environment=os.getenv('JULEP_ENVIRONMENT', 'production')\n  )\n  \n  # Test connection\n  agent = client.agents.create(\n      name=\"Test Agent\",\n      model=\"claude-3.5-haiku\",\n      about=\"A test agent\"\n  )\n  print(f\"Successfully created agent: {agent.id}\")\n  ```\n\n  ```javascript Node.js\n  import { Julep } from '@julep/sdk';\n  import dotenv from 'dotenv';\n\n  dotenv.config();\n\n  const client = new Julep({\n    apiKey: process.env.JULEP_API_KEY,\n    environment: process.env.JULEP_ENVIRONMENT || 'production'\n  });\n\n  // Test connection\n  const agent = await client.agents.create({\n    name: \"Test Agent\",\n    model: \"claude-3.5-haiku\",\n    about: \"A test agent\"\n  });\n  console.log(`Successfully created agent: ${agent.id}`);\n  ```\n</CodeGroup>\n\n### IDE Integration\n\nEnhance your development experience by accessing Julep documentation directly in your IDE through the [Context7 MCP server](https://context7.com/julep-ai/julep). This integration allows you to:\n\n- Access Julep documentation without leaving your IDE\n- Get instant answers about Julep APIs and concepts\n- View code examples and best practices inline\n\nTo set up the integration, visit [Context7 Julep Documentation](https://context7.com/julep-ai/julep) and follow the instructions for your specific IDE.\n### Troubleshooting\n\nCommon installation issues and solutions:\n\n1. **API Key Issues**\n   - Ensure your API key is valid and properly set in environment variables\n   - Check if you're using the correct environment (production/development)\n\n2. **Version Compatibility**\n   - Make sure you're using compatible versions of Python/Node.js\n   - Update to the latest SDK version if you encounter issues\n\n3. **Docker Issues**\n   - Verify Docker is running and has sufficient resources\n   - Check if required ports are available and not blocked\n\n### Next Steps\n\nNow that you have Julep installed, you can:\n\n<Card\n  title=\"Quick Start\"\n  icon=\"rocket\"\n  href=\"/introduction/quickstart\"\n>\n  Create your first Julep agent and task\n</Card>\n"
  },
  {
    "path": "documentation/introduction/julep.mdx",
    "content": "---\ntitle: 'Welcome to Julep'\nicon: 'eye' \n---\n\n![Julep Simple Overview](/images/julep_overview.svg)\n\nJulep is a platform for creating AI agents that remember past interactions and can perform complex tasks. It offers long-term memory and manages multi-step processes.\n\nJulep enables the creation of multi-step tasks incorporating decision-making, loops, parallel processing, and integration with numerous external tools and APIs.\n\nWhile many AI applications are limited to simple, linear chains of prompts and API calls with minimal branching, Julep is built to handle more complex scenarios which:\n\n- Have multiple steps,\n- Make decisions based on model outputs,\n- Spawn parallel branches,\n- Use lots of tools, and\n- Run for a long time.\n\n\nJulep offers a comprehensive set of features designed to help you build sophisticated AI workflows. \n\n<Info>\n<p>Imagine you want to build an AI agent that can do more than just answer simple questions — it needs to handle complex tasks, remember past interactions, and maybe even use other tools or APIs.</p>\n</Info>\n\nNow since you understand the problem Julep is solving, let's explore the key features that make Julep stand out.\n\n## Core Features\n\n<CardGroup cols={2}>\n  <Card title=\"Persistent AI Agents\" icon=\"brain\">\n    <p>Create agents that maintain context and remember information across multiple interactions. Agents can learn from past conversations and apply that knowledge to future tasks.</p>\n  </Card>\n\n  <Card title=\"Stateful Sessions\" icon=\"database\">\n    <p>Keep track of conversation history and context across multiple interactions. Sessions can be paused, resumed, and maintain their state indefinitely.</p>\n  </Card>\n\n  <Card title=\"Multi-Step Tasks\" icon=\"arrows-spin\">\n    <p>Build complex workflows with decision-making capabilities, loops, and conditional logic. Tasks can be as simple or as sophisticated as needed.</p>\n  </Card>\n\n  <Card title=\"Task Management\" icon=\"hourglass\">\n    <p>Handle long-running tasks that can run indefinitely. Tasks are automatically managed, with built-in support for retries and error handling.</p>\n  </Card>\n</CardGroup>\n\n## Advanced Capabilities\n\n<AccordionGroup>\n  <Accordion title=\"Built-in Tools\" icon=\"wrench\" defaultOpen={true}>\n    Access a wide range of built-in tools and easily integrate with external APIs. Tools can be added to agents to extend their capabilities.\n  </Accordion>\n\n  <Accordion title=\"Self-Healing\" icon=\"bandage\" defaultOpen={true}>\n    Automatic retry mechanisms for failed steps, message resending, and robust task management keep your workflows running smoothly.\n  </Accordion>\n\n  <Accordion title=\"RAG Support\" icon=\"database\" defaultOpen={true}>\n    Built-in support for Retrieval-Augmented Generation. Use Julep's document store to build systems that can retrieve and utilize your own data.\n  </Accordion>\n\n  <Accordion title=\"Easy Integration\" icon=\"plug\" defaultOpen={true}>\n    Seamlessly integrate with your existing infrastructure using our comprehensive SDKs for Python and Node.js.\n  </Accordion>\n</AccordionGroup>\n\n## Exploring the Documentation\n\nDepending on your use case, here are different ways to explore our documentation:\n\n<CardGroup cols={2}>\n  <Card title=\"For AI Developers\" icon=\"code\" href=\"/introduction/quickstart\">\n    <p>Start with the Quick Start guide, then dive into Core Concepts and Task Management to build AI-powered applications.</p>\n  </Card>\n\n  <Card title=\"For Enterprise Solutions\" icon=\"building\" href=\"/advanced/architecture-deep-dive\">\n    <p>Focus on Architecture Deep Dive, Security Features, and Integration Guides to understand enterprise-grade deployment.</p>\n  </Card>\n\n  <Card title=\"For Researchers & Experimenters\" icon=\"flask\" href=\"/integrations/supported-models\">\n    <p>Explore our Model Configuration, RAG Implementation, and Advanced Features sections to experiment with AI capabilities.</p>\n  </Card>\n\n  <Card title=\"For System Integrators\" icon=\"network-wired\" href=\"/api-reference\">\n    <p>Check out our API Reference, SDK Documentation, and Integration Tutorials to connect Julep with existing systems.</p>\n  </Card>\n</CardGroup>\n\n## Next Steps\n\n<CardGroup cols={3}>\n  <Card\n    title=\"Installation\"\n    icon=\"download\"\n    href=\"/introduction/install\"\n  >\n    Detailed setup instructions\n  </Card>\n  <Card\n    title=\"Quick Start\"\n    icon=\"book\"\n    href=\"/introduction/quickstart\"\n  >\n    Essential concepts and terminology\n  </Card>\n  <Card\n    title=\"Tutorials\"\n    icon=\"code\"\n    href=\"/tutorials\"\n  >\n    Learn from practical tutorials\n  </Card>\n</CardGroup>\n\n## Need Help?\n\n<CardGroup cols={2}>\n  <Card\n    title=\"Join our Community\"\n    icon=\"discord\"\n    href=\"https://discord.gg/p4c7ehs4vD\"\n  >\n    Get help and share ideas with other Julep developers\n  </Card>\n  <Card\n    title=\"Contact Support\"\n    icon=\"envelope\"\n    href=\"mailto:developers@julep.ai\"\n  >\n    Reach out to our team for assistance\n  </Card>\n</CardGroup>\n\n"
  },
  {
    "path": "documentation/introduction/quickstart.mdx",
    "content": "---\ntitle: 'Quick Start'\ndescription: 'Quick example to get started with Julep'\nicon: 'rocket'\n---\n\n## Overview\nThis guide will help you get started with Julep in just 5 minutes. You'll learn how to create your first AI agent and execute a simple task.\n\n### What we'll build\n\nWe'll build a simple agent that uses tasks to write a short story.\n\n\n```yaml Agent YAML\nname: Story Generator\nmodel: claude-3.5-sonnet\nabout: A helpful AI assistant that specializes in writing and editing.\n```\n\n```yaml Task YAML\nname: Write a short story\ndescription: Write a short story about a magical garden\nmain:\n- prompt:\n  - role: system\n    content: You are a creative story writer.\n  - role: user\n    content: $ f'Write a short story about {steps[0].input.topic}'\n```\n\n\n### Prerequisites\n\n- Python 3.8+ or Node.js 16+\n- A Julep API key ([Get one here](https://dashboard.julep.ai))\n\n### Step 1: Install Julep\n\nChoose your preferred language:\n\n<CodeGroup>\n  ```bash Python\n  pip install julep\n  ```\n\n  ```bash Node.js\n  npm install @julep/sdk\n  # or\n  bun add @julep/sdk\n  ```\n</CodeGroup>\n\n### Step 2: Initialize the Client\n\n<CodeGroup>\n  ```python Python\n  from julep import Julep\n\n  client = Julep(api_key=\"your_julep_api_key\")\n  ```\n\n  ```javascript Node.js\n  import { Julep } from '@julep/sdk';\n\n  const client = new Julep({\n    apiKey: 'your_julep_api_key'\n  });\n  ```\n</CodeGroup>\n\n### Step 3: Create Your First Agent\n\nLet's create a simple AI agent that can help with writing tasks:\n\n<CodeGroup>\n  ```python Python\n  agent = client.agents.create(\n      name=\"Writing Assistant\",\n      model=\"claude-3.5-sonnet\",\n      about=\"A helpful AI assistant that specializes in writing and editing.\"\n  )\n  ```\n\n  ```javascript Node.js\n  const agent = await client.agents.create({\n    name: \"Writing Assistant\",\n    model: \"claude-3.5-sonnet\",\n    about: \"A helpful AI assistant that specializes in writing and editing.\"\n  });\n  ```\n</CodeGroup>\n\n### Step 4: Create a Simple Task\n\nLet's create a task that generates a short story based on a given topic:\n\n<CodeGroup>\n  ```python Python\n  import yaml \n\n  task_definition = yaml.safe_load(\"\"\"\n  name: Story Generator\n  description: Generate a short story based on a given topic\n  main:\n  - prompt:\n    - role: system\n      content: You are a creative story writer.\n    - role: user\n      content: $ f'Write a short story about {steps[0].input.topic}'\n  \"\"\")\n\n  task = client.tasks.create(\n      agent_id=agent.id,\n      **task_definition # Unpack the task definition\n  )\n  ```\n\n  ```javascript Node.js\n  const yaml = require(\"yaml\");\n\n  const task_definition = `\n  name: Story Generator\n  description: Generate a short story based on a given topic\n  main:\n  - prompt:\n    - role: system\n      content: You are a creative story writer.\n    - role: user\n      content: $ f'Write a short story about {steps[0].input.topic}'\n  `;\n\n  const task = await client.tasks.create(\n    agent.id,\n    yaml.parse(task_definition)\n  );\n  ```\n</CodeGroup>\n\n<Note>\n  Notice the `$` expression in the task definition: `$ f'Write a short story about {steps[0].input.topic}'`. This is a powerful feature that allows you to dynamically reference variables, inputs, and previous step outputs within your tasks. Learn more about [dollar expressions](/advanced/new-syntax) in the Tasks documentation.\n</Note>\n\n### Step 5: Execute the Task\n\nNow let's run the task with a specific topic:\n\n<CodeGroup>\n  ```python Python\n  execution = client.executions.create(\n      task_id=task.id,\n      input={\"topic\": \"a magical garden\"}\n  )\n\n  # Wait for the execution to complete\n  while (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:\n      print(result.status)\n      time.sleep(1)\n\n  if result.status == \"succeeded\":\n      print(result.output)\n  else:\n      print(f\"Error: {result.error}\")\n  ```\n\n  ```javascript Node.js [expandable]\n  const execution = await client.executions.create(\n    task.id,\n    {\n      input: { topic: \"a magical garden\" }\n    }\n  );\n\n  // Wait for the execution to complete\n  let result;\n  while (true) {\n    result = await client.executions.get(execution.id);\n    if (result.status === 'succeeded' || result.status === 'failed') break;\n    console.log(result.status);\n    await new Promise(resolve => setTimeout(resolve, 1000));\n  }\n\n  if (result.status === 'succeeded') {\n    console.log(result.output);\n  } else {\n    console.error(`Error: ${result.error}`);\n  }\n  ```\n</CodeGroup>\n\n### Next Steps\n\nCongratulations! You've created your first Julep agent and executed a task. Here's what you can explore next:\n\n<CardGroup cols={2}>\n  <Card\n    title=\"Understand the Core Concepts\"\n    icon=\"book\"\n    href=\"/concepts\"\n  >\n    Learn about the core concepts of Julep\n  </Card>\n  <Card\n    title=\"Explore Tutorials\"\n    icon=\"book\"\n    href=\"/tutorials\"\n  >\n    Explore tutorials to learn how to use Julep\n  </Card>\n</CardGroup> "
  },
  {
    "path": "documentation/julepcli/commands.mdx",
    "content": "---\ntitle: 'Command Reference'\ndescription: 'Commands for managing Julep projects and resources'\nicon: 'terminal'\n---\n\n## Overview\n\n<Warning>\nIt is still in experimental phase and is not yet complete. In case of any issues, please reach out to us on [Discord](https://discord.com/invite/JTSBGRZrzj) or [email](mailto:hey@julep.ai).\n</Warning>\n\nThe `julep` CLI is a comprehensive command-line interface for interacting with the Julep platform. \nFollowing are the available commands.\n\n## Authentication\n\n<Tabs>\n  <Tab title=\"Basic\">\n    ```bash\n    julep auth\n    ```\n\n    The `julep auth` command is used to authenticate your Julep CLI. This will prompt you to enter your API key and save it to the configuration file.\n\n    **Example:**\n    ```bash\n    # Basic authentication with interactive prompt\n    julep auth\n\n    # Output:\n    # Enter your Julep API key: **********************\n    # Authentication successful!\n    ```\n  </Tab>\n\n  <Tab title=\"With API Key\">\n    ```bash\n    julep auth --api-key your_julep_api_key\n    ```\n\n    The `julep auth --api-key your_julep_api_key` command is used to authenticate your Julep CLI with a specific API key.\n\n    <ParamField path=\"--api-key\" type=\"string\" required>\n      Your Julep API key\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Authenticate with API key directly\n    julep auth --api-key \"julep_1234567890abcdef\"\n\n    # Using environment variable\n    export JULEP_API_KEY=\"julep_1234567890abcdef\"\n    julep auth --api-key $JULEP_API_KEY\n    ```\n  </Tab>\n\n  <Tab title=\"With Environment\">\n    ```bash\n    julep auth --api-key your_key --environment staging\n    ```\n\n    The `julep auth --api-key your_key --environment staging` command is used to authenticate your Julep CLI with a specific API key and environment.\n\n    <ParamField path=\"--api-key\" type=\"string\" required>\n      Your Julep API key\n    </ParamField>\n\n    <ParamField path=\"--environment\" type=\"string\" required>\n      Environment to use (production/staging)\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Authenticate with staging environment\n    julep auth --api-key \"julep_1234567890abcdef\" --environment staging\n\n    # Authenticate with production environment\n    julep auth --api-key \"julep_1234567890abcdef\" --environment production\n\n    # Using environment variables\n    export JULEP_API_KEY=\"julep_1234567890abcdef\"\n    export JULEP_ENV=\"staging\"\n    julep auth --api-key $JULEP_API_KEY --environment $JULEP_ENV\n    ```\n  </Tab>\n</Tabs>\n\n<Info>\n  You can get your API key from the [Julep Dashboard](https://dashboard.julep.ai/).\n</Info>\n\n## Project Management\n\n<Tabs>\n  <Tab title=\"Initialize\">\n    ```bash\n    julep init --template \"Template Name\" --path \"Destination Path\" --yes\n    ```\n\n    The `julep init` command is used to initialize a new Julep project using a predefined template. You can check the list of available templates in our [library](https://github.com/julep-ai/library).\n\n    <ParamField path=\"--template\" type=\"string\" required>\n      Name of the template to use from the library repository (default: \"hello-world\")\n    </ParamField>\n\n    <ParamField path=\"--path\" type=\"string\">\n      Destination directory for where you want to initialize the project (default: current directory)\n    </ParamField>\n\n    <ParamField path=\"--yes\" type=\"boolean\">\n      Skip confirmation prompt\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Initialize a project with the default template (hello-world template)\n    julep init\n\n    # Initialize a project with a specific template\n    julep init --template \"profiling-recommending\" --path \"./my-project\" # Will be initialized in ./my-project/profiling-recommending\n\n    # Initialize a project and skip confirmation\n    julep init --yes\n    ```\n  </Tab>\n\n  <Tab title=\"Sync\">\n    ```bash\n    julep sync [--force-local] [--force-remote] [--source \"Source Path\"]\n    ```\n\n    The `julep sync` command is used to synchronize the local project with the Julep platform.\n\n    <ParamField path=\"--force-local\" type=\"boolean\">\n      Force local files to take precedence\n    </ParamField>\n\n    <ParamField path=\"--force-remote\" type=\"boolean\">\n      Force remote state to take precedence\n    </ParamField>\n\n    <ParamField path=\"--watch\" type=\"boolean\">\n      Watch for changes and synchronize automatically. \n      \n      > **Note:** when watch mode is enabled, only local-to-remote sync `force-local` is supported. Use `--force-remote` only with watch mode turned off.\n    \n    </ParamField>\n\n    <ParamField path=\"--source\" type=\"string\">\n      Source directory to sync from (default: current directory)\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Basic sync\n    julep sync\n\n    # Force local changes to override remote\n    julep sync --force-local\n\n    # Force remote state to override local\n    julep sync --force-remote\n\n    # Sync with specific source directory\n    julep sync --source ./my-project\n\n    # Watch for changes and synchronize automatically\n    julep sync --watch\n    ```\n  </Tab>\n\n  <Tab title=\"Import\">\n    ```bash\n    julep import --agent --id agent_id --output path\n    ```\n\n    The `julep import` command is used to import an `agent`, `task`, or `tool` from the Julep platform.\n\n    > **Note:** Importing tasks and tools is not yet supported; only agents are supported.\n\n    <ParamField path=\"--agent\" type=\"boolean\" required>\n      Specify that you want to import an agent\n    </ParamField>\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the agent to import\n    </ParamField>\n\n    <ParamField path=\"--source\" type=\"string\">\n      Path to the source directory. Defaults to current working directory\n    </ParamField>\n\n    <ParamField path=\"--output\" type=\"string\">\n      Path to save the imported agent (default: `<source_dir>/src/agents/<agent-name>.yaml`)\n    </ParamField>\n\n    <ParamField path=\"--yes\" type=\"boolean\">\n      Skip confirmation prompt\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Import agent to default directory\n    julep import --agent --id \"00000000-0000-0000-0000-000000000000\"\n\n    # Import agent with specific filename\n    julep import --agent --id \"00000000-0000-0000-0000-000000000000\" --output ./agents/my-agent.yaml\n\n    # Import agent and skip confirmation\n    julep import --agent --id \"00000000-0000-0000-0000-000000000000\" --yes\n    ```\n  </Tab>\n</Tabs>\n\n## Task Execution\n\n<Tabs>\n  <Tab title=\"Run\">\n    ```bash\n    julep run --task <task_id> --input '{\"key\": \"value\"}'\n    ```\n\n    The `julep run` command is used to execute a task.\n\n    <ParamField path=\"--task\" type=\"string\" required>\n      ID of the task to execute\n    </ParamField>\n\n    <ParamField path=\"--input\" type=\"json\">\n      Input data for the task\n    </ParamField>\n\n    <ParamField path=\"--input-file\" type=\"string\">\n      Path to a json file containing the input to execute the task with\n    </ParamField>\n\n    <ParamField path=\"--wait\" type=\"boolean\">\n      Wait for the task to complete before exiting, stream logs to stdout\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Run task with inline JSON input\n    julep run --task \"00000000-0000-0000-0000-000000000000\" --input '{\"prompt\": \"Write a story about a magical forest\"}'\n\n    # Run task with input from file\n    julep run --task \"00000000-0000-0000-0000-000000000000\" --input-file ./inputs/story-params.json\n\n    # Run task and wait for completion\n    julep run --task \"00000000-0000-0000-0000-000000000000\" --input '{\"style\": \"watercolor\"}' --wait\n\n    # Run task that doesn't require input (empty object)\n    julep run --task \"00000000-0000-0000-0000-000000000000\" --input '{}'\n\n    # Invalid task ID\n    julep run --task bad-id --input '{}'\n    # -> Error creating execution: Task not found\n    ```\n  </Tab>\n\n  <Tab title=\"Logs\">\n    ```bash\n    julep logs --execution-id exec_id [--tail]\n    ```\n\n    The `julep logs` command is used to view execution logs.\n\n    <ParamField path=\"--execution-id\" type=\"string\" required>\n      ID of the execution to view logs for\n    </ParamField>\n\n    <ParamField path=\"--tail\" type=\"boolean\">\n      Continuously stream logs as they are generated\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # View logs for a specific execution\n    julep logs --execution-id \"00000000-0000-0000-0000-000000000000\"\n\n    # Stream logs in real-time\n    julep logs --execution-id \"00000000-0000-0000-0000-000000000000\" --tail\n\n    # Get logs in JSON format\n    julep logs --execution-id \"00000000-0000-0000-0000-000000000000\" --json\n    ```\n  </Tab>\n</Tabs>\n\n## Agent Management\n\nThe commands in `julep agents` are used to manage your agents.\n<Tabs>\n  <Tab title=\"Create\">\n    ```bash\n    julep agents create --name \"Agent Name\" \\\n                       --model \"Model Name\" \\\n                       --about \"Agent Description\" \\\n                       --metadata '{\"key\": \"value\"}' \\\n                       --instructions \"Instruction\"\n    ```\n    The `julep agents create` command is used to create a new agent.\n    \n    <ParamField path=\"--name\" type=\"string\" required>\n      Name of the agent\n    </ParamField>\n    \n    <ParamField path=\"--model\" type=\"string\">\n      Model to be used (e.g., gpt-4). You can find the list of models [here](/integrations/supported-models#available-models)\n    </ParamField>\n    \n    <ParamField path=\"--about\" type=\"string\">\n      Description of the agent\n    </ParamField>\n    \n    <ParamField path=\"--metadata\" type=\"json\">\n      Additional metadata (JSON format)\n    </ParamField>\n    \n    <ParamField path=\"--instructions\" type=\"string\">\n      Instructions for the agent (can be repeated)\n    </ParamField>\n\n    <ParamField path=\"--definition\" type=\"string\">\n      Path to agent definition file\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Create a basic agent\n    julep agents create --name \"Story Writer\" --model \"gpt-4\"\n\n    # Create agent with full configuration\n    julep agents create \\\n      --name \"Content Assistant\" \\\n      --model \"gpt-4\" \\\n      --about \"AI assistant for content creation\" \\\n      --metadata '{\"type\": \"content\", \"version\": \"1.0\"}' \\\n      --instructions \"Focus on creative writing\" \\\n      --instructions \"Maintain professional tone\"\n\n    # Create agent from definition file\n    julep agents create --definition ./agents/content-assistant.yaml\n    ```\n\n    > **Note:** When creating an agent, the agent doesn't get automatically imported to the project. You can run `julep import --agent --id <agent-id>` to import the agent to the project.\n  </Tab>\n\n  <Tab title=\"Update\">\n    ```bash\n    julep agents update --id agent_id \\\n                       --name \"New Name\" \\\n                       --model \"New Model\"\n    ```\n    \n    The `julep agents update` command is used to update an existing agent.\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the agent to update\n    </ParamField>\n\n    <ParamField path=\"--name\" type=\"string\">\n      New name for the agent\n    </ParamField>\n\n    <ParamField path=\"--model\" type=\"string\">\n      New model for the agent\n    </ParamField>\n\n    <ParamField path=\"--about\" type=\"string\">\n      New description for the agent\n    </ParamField>\n\n    <ParamField path=\"--metadata\" type=\"json\">\n      Additional metadata (JSON format)\n    </ParamField>\n\n    <ParamField path=\"--instructions\" type=\"array\">\n      New instructions for the agent (can be repeated)\n    </ParamField>\n\n    **Examples:**\n    ```bash [expandable]\n    # Update agent name\n    julep agents update --id \"agent_abc123\" --name \"Enhanced Writer\"\n\n    # Update multiple properties\n    julep agents update \\\n      --id \"agent_abc123\" \\\n      --name \"Content Pro\" \\\n      --model \"gpt-4\" \\\n      --about \"Professional content creation assistant\"\n\n    # Update metadata\n    julep agents update \\\n      --id \"agent_abc123\" \\\n      --metadata '{\"type\": \"content\", \"version\": \"2.0\"}'\n\n    # Update instructions\n    julep agents update \\\n      --id \"agent_abc123\" \\\n      --instructions \"New instruction 1\" \\\n      --instructions \"New instruction 2\"\n\n    # Update from definition file\n    julep agents update --id \"agent_abc123\" --definition ./agents/updated-agent.yaml\n    ```\n  </Tab>\n\n  <Tab title=\"Delete\">\n    ```bash\n    julep agents delete --id agent_id [--force]\n    ```\n    \n    The `julep agents delete` command is used to delete an existing agent.\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the agent to delete\n    </ParamField>\n\n    <ParamField path=\"--force\" type=\"boolean\">\n      Skip confirmation prompt\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Delete with confirmation prompt\n    julep agents delete --id \"00000000-0000-0000-0000-000000000000\"\n\n    # Force delete without confirmation\n    julep agents delete --id \"00000000-0000-0000-0000-000000000000\" --force\n\n    # Delete multiple agents using a bash for loop\n    for id in agent_id1 agent_id2 agent_id3; do\n      julep agents delete --id \"$id\" --force\n    done\n    ```\n  </Tab>\n\n  <Tab title=\"List\">\n    ```bash\n    julep agents list [--metadata-filter '{\"key\": \"value\"}'] [--json]\n    ```\n    \n    The `julep agents list` command is used to list all agents.\n\n    <ParamField path=\"--metadata-filter\" type=\"json\">\n      Filter agents by metadata\n    </ParamField>\n\n    <ParamField path=\"--json\" type=\"boolean\">\n      Output in JSON format\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # List all agents\n    julep agents list\n\n    # List agents with JSON output\n    julep agents list --json\n\n    # Filter agents by metadata\n    julep agents list --metadata-filter '{\"type\": \"content\"}'\n\n    # List agents and process with jq\n    julep agents list --json | jq '.[] | select(.model==\"gpt-4\")'\n\n    # Save agent list to file\n    julep agents list --json > agents.json\n    ```\n  </Tab>\n\n  <Tab title=\"Get\">\n    ```bash\n    julep agents get --id agent_id [--json]\n    ```\n    \n    The `julep agents get` command is used to get details of a specific agent.\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the agent to retrieve\n    </ParamField>\n\n    <ParamField path=\"--json\" type=\"boolean\">\n      Output in JSON format\n    </ParamField>\n\n    **Examples:**\n    ```bash\n    # Get agent details\n    julep agents get --id \"agent_abc123\"\n\n    # Get agent details in JSON format\n    julep agents get --id \"agent_abc123\" --json\n\n    # Save agent details to file\n    julep agents get --id \"agent_abc123\" --json > agent.json\n\n    # Get and process with jq\n    julep agents get --id \"agent_abc123\" --json | jq '.instructions'\n    ```\n  </Tab>\n</Tabs>\n\n## Task Management\n\n<Tabs>\n  <Tab title=\"Create\">\n    ```bash\n    julep tasks create --name \"Task Name\" \\\n                      --agent-id agent_id \\\n                      --definition path/to/task.yaml \\\n                      --metadata '{\"status\": \"beta\"}' \\\n                      --inherit-tools\n    ```\n\n    The `julep tasks create` command is used to create a new task.\n\n    <ParamField path=\"--agent-id\" type=\"string\" required>\n      ID of the associated agent\n    </ParamField>\n\n    <ParamField path=\"--name\" type=\"string\">\n      Name of the task\n    </ParamField>\n    \n    <ParamField path=\"--definition\" type=\"string\">\n      Path to task definition file\n    </ParamField>\n\n    <ParamField path=\"--metadata\" type=\"json\">\n      Additional metadata (JSON format)\n    </ParamField>\n\n    <ParamField path=\"--inherit-tools\" type=\"boolean\">\n      Inherit tools from agent\n    </ParamField>\n\n    <ParamField path=\"--import-to\" type=\"string\">\n      Import to project after creating\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"Update\">\n    ```bash\n    julep tasks update --id task_id \\\n                      --name \"New Name\" \\\n                      --agent-id new_agent_id \\\n                      --definition new/path/to/task.yaml\n    ```\n\n    The `julep tasks update` command is used to update an existing task.\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the task to update\n    </ParamField>\n\n    <ParamField path=\"--name\" type=\"string\">\n      New name for the task\n    </ParamField>\n\n    <ParamField path=\"--agent-id\" type=\"string\">\n      New agent ID for the task\n    </ParamField>\n\n    <ParamField path=\"--definition\" type=\"string\">\n      Path to new task definition file\n    </ParamField>\n\n    <ParamField path=\"--description\" type=\"string\">\n      New description for the task\n    </ParamField>\n\n    <ParamField path=\"--metadata\" type=\"json\">\n      New metadata for the task\n    </ParamField>\n\n    <ParamField path=\"--inherit-tools\" type=\"boolean\">\n      Whether to inherit tools from the agent\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"Delete\">\n    ```bash\n    julep tasks delete --id task_id [--force]\n    ```\n\n    The `julep tasks delete` command is used to delete an existing task.\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the task to delete\n    </ParamField>\n\n    <ParamField path=\"--force\" type=\"boolean\">\n      Skip confirmation prompt\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"List\">\n    ```bash\n    julep tasks list [--agent-id agent_id] [--json]\n    ```\n\n    The `julep tasks list` command is used to list all tasks.\n\n    <ParamField path=\"--agent-id\" type=\"string\">\n      Filter by associated agent ID\n    </ParamField>\n\n    <ParamField path=\"--json\" type=\"boolean\">\n      Output in JSON format\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"Get\">\n    ```bash\n    julep tasks get --id task_id [--json]\n    ```\n\n    The `julep tasks get` command is used to get details of a specific task.\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the task to retrieve\n    </ParamField>\n\n    <ParamField path=\"--json\" type=\"boolean\">\n      Output in JSON format\n    </ParamField>\n  </Tab>\n</Tabs>\n\n## Tool Management\n\n<Tabs>\n  <Tab title=\"Create\">\n    ```bash\n    julep tools create --name \"Tool Name\" \\\n                      --type tool_type \\\n                      --agent-id agent_id \\\n                      --definition path/to/config.yaml\n    ```\n\n    The `julep tools create` command is used to create a new tool.\n\n    <ParamField path=\"--agent-id\" type=\"string\" required>\n      ID of the associated agent\n    </ParamField>\n\n    <ParamField path=\"--name\" type=\"string\" required>\n      Name of the tool\n    </ParamField>\n\n    <ParamField path=\"--type\" type=\"string\" required>\n      Type of the tool\n    </ParamField>\n\n    <ParamField path=\"--definition\" type=\"string\">\n      Path to tool definition file\n    </ParamField>\n\n    <ParamField path=\"--description\" type=\"string\">\n      Description of the tool\n    </ParamField>\n\n    <ParamField path=\"--metadata\" type=\"json\">\n      Additional metadata (JSON format)\n    </ParamField>\n\n    <ParamField path=\"--import-to\" type=\"string\">\n      Import to project after creating\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"Update\">\n    ```bash\n    julep tools update --id tool_id \\\n                      --name \"New Name\" \\\n                      --agent-id new_agent_id \\\n                      --definition new/path/to/config.yaml\n    ```\n\n    The `julep tools update` command is used to update an existing tool.\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the tool to update\n    </ParamField>\n\n    <ParamField path=\"--name\" type=\"string\">\n      New name for the tool\n    </ParamField>\n\n    <ParamField path=\"--agent-id\" type=\"string\">\n      New agent ID for the tool\n    </ParamField>\n\n    <ParamField path=\"--definition\" type=\"string\">\n      Path to new tool definition file\n    </ParamField>\n\n    <ParamField path=\"--description\" type=\"string\">\n      New description for the tool\n    </ParamField>\n\n    <ParamField path=\"--metadata\" type=\"json\">\n      New metadata for the tool\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"Delete\">\n    ```bash\n    julep tools delete --agent-id agent_id --id tool_id [--force]\n    ```\n\n    The `julep tools delete` command is used to delete an existing tool.\n\n    <ParamField path=\"--agent-id\" type=\"string\" required>\n      ID of the agent the tool is associated with\n    </ParamField>\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the tool to delete\n    </ParamField>\n\n    <ParamField path=\"--force\" type=\"boolean\">\n      Skip confirmation prompt\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"List\">\n    ```bash\n    julep tools list --agent-id agent_id [--json]\n    ```\n\n    The `julep tools list` command is used to list all tools for a given agent.\n\n    <ParamField path=\"--agent-id\" type=\"string\">\n      Filter by associated agent ID\n    </ParamField>\n\n    <ParamField path=\"--json\" type=\"boolean\">\n      Output in JSON format\n    </ParamField>\n  </Tab>\n\n  <Info>\n    A future release will add a `julep tools get` command for retrieving a tool by ID.\n  </Info>\n</Tabs>\n\n## Execution Management\n\n<Tabs>\n  <Tab title=\"Create\">\n    ```bash\n    julep executions create --task task_id --input '{\"key\": \"value\"}'\n    ```\n\n    The `julep executions create` command is used to create a new execution for a task.\n\n    <ParamField path=\"--task\" type=\"string\" required>\n      ID or name of the task to execute\n    </ParamField>\n\n    <ParamField path=\"--input\" type=\"json\">\n      JSON string representing the input for the task (defaults to {})\n    </ParamField>\n\n    <ParamField path=\"--input-file\" type=\"string\">\n      Path to a file containing the input for the task\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"List\">\n    ```bash\n    julep executions list [--task-id task_id] [--json]\n    ```\n\n    The `julep executions list` command is used to list all executions or filter based on criteria.\n\n    <ParamField path=\"--task-id\" type=\"string\">\n      Filter executions by associated task ID\n    </ParamField>\n\n    <ParamField path=\"--json\" type=\"boolean\">\n      Output the list in JSON format\n    </ParamField>\n  </Tab>\n\n  <Tab title=\"Cancel\">\n    ```bash\n    julep executions cancel --id execution_id\n    ```\n\n    The `julep executions cancel` command is used to cancel an existing execution.\n\n    <ParamField path=\"--id\" type=\"string\" required>\n      ID of the execution to cancel\n    </ParamField>\n  </Tab>\n</Tabs>\n\n\n<Info>\n  The CLI will soon include a `julep assistant` command that launches an interactive prompt for generating commands from plain language. This feature is still under development.\n</Info>\n\n## Miscellaneous\n\n<Tabs>\n  <Tab title=\"Version\">\n    ```bash\n    julep --version\n    ```\n\n    The `julep --version` or `julep -v` command displays the current version of the Julep CLI.\n  </Tab>\n\n  <Tab title=\"Help\">\n    ```bash\n    julep --help\n    ```\n\n    The `julep --help` or `julep -h` command displays help information for the Julep CLI.\n  </Tab>\n</Tabs>\n\n## Best Practices\n\n<CardGroup cols={3}>\n  <Card title=\"Project Organization\" icon=\"folder-tree\">\n    <ul>\n      <li>Keep agent, task, and tool definitions in separate directories under `src/`</li>\n      <li>Use meaningful file names that reflect their purpose</li>\n      <li>Follow the standard project structure</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Version Control\" icon=\"code-branch\">\n    <ul>\n      <li>**DO** commit `julep.yaml` to version control</li>\n      <li>**DO** commit `julep-lock.json` to version control</li>\n      <li>Document project dependencies and requirements</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Command Line Usage\" icon=\"terminal\">\n    <ul>\n      <li>Use `--json` flag for machine-readable output</li>\n      <li>Use `--quiet` for scripting and automation</li>\n      <li>Always provide required parameters</li>\n    </ul>\n  </Card>\n</CardGroup>\n\n### File Management\n\n- **Project Configuration**: Keep your `julep.yaml` clean and well-organized\n- **Lock File**: Use `julep-lock.json` to track remote state and relationships\n- **Source Files**: Organize definitions in appropriate directories under `src/`\n\n### Workflow Tips\n\n- Use `julep sync` regularly to keep local and remote states in sync\n- Review changes with `--json` output before applying updates\n- Use the assistant mode for complex workflows: `julep assistant`\n\n\n### Security Best Practices\n\n- Store API keys securely\n- Use environment-specific configurations\n- Review permissions before executing destructive commands\n- Use `--force` flags cautiously\n\n<Warning>\n  Always review the changes before using force flags (`--force-local`, `--force-remote`) as they can override remote or local state.\n</Warning>\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)"
  },
  {
    "path": "documentation/julepcli/introduction.mdx",
    "content": "---\ntitle: 'Getting Started'\ndescription: 'Getting started with Julep CLI'\nicon: 'eye'\n---\n\n## Overview\n\nThe `julep` CLI provides a comprehensive command-line interface for interacting with the Julep platform. It enables you to manage agents, tasks, tools, and projects directly from your terminal.\n\n## Installation\n\n<CodeGroup>\n  ```bash pip\n  pip install julep-cli\n  ```\n</CodeGroup>\n\nNote: While the package name is `julep-cli`, the installed command is simply `julep`.\n\n## Configuration\n\nThe CLI stores configuration data in `~/.config/julep/config.yml`. This file is created automatically after authenticating using `julep auth` (see [Authentication](/julepcli/commands#authentication) section).\n\n<CodeGroup>\n```yaml config.yml\napi_key: \"your_api_key_here\"\nenvironment: \"production\"\n```\n</CodeGroup>\n\n## Project Structure\n\nA Julep project follows a standard directory structure:\n\n```plaintext\nproject-name/\n├── README.md         # Documentation and usage instructions\n├── julep.yaml        # Project configuration and entrypoint\n├── julep-lock.json   # Lock file tracking server state\n└── src/              # Source directory\n    ├── agents/       # Agent definitions\n    │   └── agent.yaml\n    ├── tasks/        # Task definitions\n    │   └── task.yaml\n    └── tools/        # Tool definitions\n        └── tool.yaml\n```\n\nThe `julep.yaml` file defines your project configuration:\n\n<CodeGroup>\n```yaml julep.yaml\nagents:\n- definition: src/agents/agent.yaml\n- definition: src/agents/another-agent.yaml\n\ntasks:\n- agent_id: \"{agents[0].id}\"\n  definition: src/tasks/task.yaml\n- agent_id: \"{agents[1].id}\"\n  definition: src/tasks/another-task.yaml\n\ntools:\n- agent_id: \"{agents[0].id}\"\n  definition: src/tools/tool.yaml\n- agent_id: \"{agents[1].id}\"\n  definition: src/tools/another-tool.yaml\n```\n</CodeGroup>\n\nThe `julep-lock.json` file tracks the state of your project on the Julep platform, mapping local files to their remote counterparts and maintaining relationships between components. This file should be committed to version control to ensure consistent state across team members.\nTo know more about the schema and the usage of the `julep-lock.json` file, you can read the [Lockfile](https://github.com/julep-ai/julep/tree/dev/cli/README.md#schema-for-julep-lockjson) section.\n\n## Getting Started\n\nTo get started with the CLI, follow these steps:\n\n<Steps>\n\n  <Step title=\"Authenticate\">\n    ```bash\n    julep auth\n    ```\n    The `auth` command is used to authenticate with the Julep platform. You need to provide your API key. You can find your API key [here](https://dashboard.julep.ai/).\n  </Step>\n\n  <Step title=\"Initialize Project\">\n    ```bash\n    julep init --template profiling-recommending\n    ```\n    The `init` command is used to initialize a new Julep project. There are bunch of templates to get you started which you can find [here](https://github.com/julep-ai/library).\n  </Step>\n\n  <Step title=\"Sync Project\">\n    ```bash\n    julep sync\n    ```\n    The `sync` command is used to synchronize the local project with the Julep platform. This creates a `julep-lock.json` file which tracks the state of the project on the Julep platform (see [Sync Command](/julepcli/commands#sync) for more details).\n  </Step>\n\n  <Step title=\"Edit the project\">\n    Once the project is initialized, you can edit the project in the `julep.yaml` file. Add agents, tasks, tools, etc. in the `src` directory.\n  </Step>\n\n  <Step title=\"Re-Sync Project\">\n    ```bash\n    julep sync --force-local\n    ```\n    After editing the project, you can re-sync the project with the Julep platform. This will update the `julep-lock.json` file with the latest state of the project on the Julep platform.\n    You can use the `--watch` flag to watch the project for changes and re-sync automatically.\n  </Step>\n\n  <Step title=\"Run the project\">\n    ```bash\n    julep run --task <task_id> --input '{\"key\": \"value\"}'\n    ```\n    The `run` command is used to run a task. You can find the task ID in the `julep-lock.json` file.\n  </Step>\n\n  <Step title=\"View the execution\">\n    ```bash\n    julep logs --execution-id <execution_id> --tail\n    ```\n    The `logs` command is used to view the logs of an execution. When you run the `run` command, it will return the execution ID.\n  </Step>\n\n</Steps>\n\n<Note>\n  You can find more commands in the [Command Reference](/julepcli/commands) section.\n</Note>\n\n## Support\n\nIf you need help with further questions in Julep:\n\n- Join our [Discord community](https://discord.com/invite/JTSBGRZrzj)\n- Check the [GitHub repository](https://github.com/julep-ai/julep)\n- Contact support at [hey@julep.ai](mailto:hey@julep.ai)\n"
  },
  {
    "path": "documentation/llms.txt",
    "content": "# Welcome to Julep - Julep\n\n> Welcome to Julep\n\n\n## Getting Started with Julep\n- [Welcome to Julep - Julep](https://docs.julep.ai/): Welcome to Julep\n- [Chat with an Agent - Julep](https://docs.julep.ai/guides/getting-started/chat-with-an-agent): Learn how to chat with your agent\n- [Create & Execute a Julep Task - Julep](https://docs.julep.ai/guides/getting-started/create-and-execute-julep-task): Learn how to create and execute a Julep task\n- [Tool Integration Demo - Julep](https://docs.julep.ai/guides/getting-started/tool-integration-demo): Learn how to integrate tools with your Julep agent\n\n## Julep Concepts\n- [Agents - Julep](https://docs.julep.ai/concepts/agents): Understanding Julep Agents and their capabilities\n- [Documents (RAG) - Julep](https://docs.julep.ai/concepts/docs): Working with documents in Julep\n- [Executions - Julep](https://docs.julep.ai/concepts/execution): Understanding Task Executions and Their Lifecycle\n- [Files - Julep](https://docs.julep.ai/concepts/files): Managing files and attachments in Julep\n- [Projects - Julep](https://docs.julep.ai/concepts/projects): Organizational units for grouping related resources\n- [Secrets - Julep](https://docs.julep.ai/concepts/secrets): Securely store and manage sensitive information for your LLM applications\n- [Sessions - Julep](https://docs.julep.ai/concepts/sessions): Understanding Julep Sessions and state management\n- [Tasks - Julep](https://docs.julep.ai/concepts/tasks): Understanding Julep Tasks and workflows\n- [Tools - Julep](https://docs.julep.ai/concepts/tools): Understanding tools in Julep\n- [Users - Julep](https://docs.julep.ai/concepts/users): Understanding and Managing Users in Julep\n\n## Advanced Features\n- [Agentic Patterns - Julep](https://docs.julep.ai/advanced/agentic-patterns): Learn about common patterns and best practices for building Julep agents\n- [Architecture Deep Dive - Julep](https://docs.julep.ai/advanced/architecture-deep-dive): Understand the core architecture and components of Julep\n- [Chat Features in Julep - Julep](https://docs.julep.ai/advanced/chat): Learn about the robust chat system and its various features for dynamic interaction with agents\n- [Files (Multimedia) - Julep](https://docs.julep.ai/advanced/files): Learn about file handling and management in Julep\n- [Execution Lifecycle - Julep](https://docs.julep.ai/advanced/lifecycle): Understanding the Lifecycle of Task when executed in Julep\n- [Local Setup - Julep](https://docs.julep.ai/advanced/localsetup): Learn how to run Julep locally\n- [Multi-Agent Multi-User Sessions - Julep](https://docs.julep.ai/advanced/multi-agent-multi-user-sessions): Learn how to manage complex multi-agent systems with multiple users\n- [New Syntax (Important) - Julep](https://docs.julep.ai/advanced/new-syntax): Learn about the new workflow syntax and how to migrate your existing workflows\n- [Python Expression - Julep](https://docs.julep.ai/advanced/python-expression): Learn how to use Python expressions in Julep task definitions\n- [Render Endpoint in Julep - Julep](https://docs.julep.ai/advanced/render): Learn about the render endpoint for previewing chat inputs before sending them to the model\n- [Secrets Management - Julep](https://docs.julep.ai/advanced/secrets-management): Advanced techniques for managing sensitive information in Julep\n- [Types of Task Steps - Julep](https://docs.julep.ai/advanced/types-of-task-steps): Learn about different types of task steps and their use\n\n## API Reference - Agents\n- [Create Agent - Julep](https://docs.julep.ai/api-reference/agents/create-agent): Create Agent\n- [Create Agent Tool - Julep](https://docs.julep.ai/api-reference/agents/create-agent-tool): Create Agent Tool\n- [Create Or Update Agent - Julep](https://docs.julep.ai/api-reference/agents/create-or-update-agent): Create Or Update Agent\n- [Delete Agent - Julep](https://docs.julep.ai/api-reference/agents/delete-agent): Delete Agent\n- [Delete Agent Tool - Julep](https://docs.julep.ai/api-reference/agents/delete-agent-tool): Delete Agent Tool\n- [Get Agent Details - Julep](https://docs.julep.ai/api-reference/agents/get-agent-details): Get Agent Details\n- [List Agent Tools - Julep](https://docs.julep.ai/api-reference/agents/list-agent-tools): List Agent Tools\n- [List Agents - Julep](https://docs.julep.ai/api-reference/agents/list-agents): List Agents\n- [List Models - Julep](https://docs.julep.ai/api-reference/agents/list-models): List all available models that can be used with agents.  Returns:     ListModelsResponse: A list of available models\n- [Patch Agent - Julep](https://docs.julep.ai/api-reference/agents/patch-agent): Patch Agent\n- [Patch Agent Tool - Julep](https://docs.julep.ai/api-reference/agents/patch-agent-tool): Patch Agent Tool\n- [Update Agent - Julep](https://docs.julep.ai/api-reference/agents/update-agent): Update Agent\n- [Update Agent Tool - Julep](https://docs.julep.ai/api-reference/agents/update-agent-tool): Update Agent Tool\n\n## API Reference - Documents\n- [Bulk Delete Agent Docs - Julep](https://docs.julep.ai/api-reference/docs/bulk-delete-agent-docs): Bulk delete documents owned by an agent based on metadata filter\n- [Bulk Delete User Docs - Julep](https://docs.julep.ai/api-reference/docs/bulk-delete-user-docs): Bulk delete documents owned by a user based on metadata filter\n- [Create Agent Doc - Julep](https://docs.julep.ai/api-reference/docs/create-agent-doc): Create Agent Doc\n- [Create User Doc - Julep](https://docs.julep.ai/api-reference/docs/create-user-doc): Creates a new document for a user.  Parameters:     user_id (UUID): The unique identifier of the user associated with the document.     data (CreateDocRequest): The data to create the document with.     x_developer_id (UUID): The unique identifier of the developer associated with the document.  Returns:     Doc: The created document.\n- [Delete Agent Doc - Julep](https://docs.julep.ai/api-reference/docs/delete-agent-doc): Delete Agent Doc\n- [Delete User Doc - Julep](https://docs.julep.ai/api-reference/docs/delete-user-doc): Delete User Doc\n- [Embed - Julep](https://docs.julep.ai/api-reference/docs/embed): Embed\n- [Get Doc - Julep](https://docs.julep.ai/api-reference/docs/get-doc): Get Doc\n- [List Agent Docs - Julep](https://docs.julep.ai/api-reference/docs/list-agent-docs): List Agent Docs\n- [List User Docs - Julep](https://docs.julep.ai/api-reference/docs/list-user-docs): List User Docs\n- [Search Agent Docs - Julep](https://docs.julep.ai/api-reference/docs/search-agent-docs): Searches for documents associated with a specific agent.  Parameters:     x_developer_id (UUID): The unique identifier of the developer associated with the agent.     search_params (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest): The parameters for the search.     agent_id (UUID): The unique identifier of the agent associated with the documents.  Returns:     DocSearchResponse: The search results.\n- [Search User Docs - Julep](https://docs.julep.ai/api-reference/docs/search-user-docs): Searches for documents associated with a specific user.  Parameters:     x_developer_id (UUID): The unique identifier of the developer associated with the user.     search_params (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest): The parameters for the search.     user_id (UUID): The unique identifier of the user associated with the documents.  Returns:     DocSearchResponse: The search results.\n\n## API Reference - Executions\n- [Create Task Execution - Julep](https://docs.julep.ai/api-reference/executions/create-task-execution): Create Task Execution\n- [Get Execution Details - Julep](https://docs.julep.ai/api-reference/executions/get-execution-details): Get Execution Details\n- [List Execution Transitions - Julep](https://docs.julep.ai/api-reference/executions/list-execution-transitions): List Execution Transitions\n- [Stream Execution Status - Julep](https://docs.julep.ai/api-reference/executions/stream-execution-status): SSE endpoint that streams the status of a given execution_id by polling the latest_executions view.\n- [Stream Transitions Events - Julep](https://docs.julep.ai/api-reference/executions/stream-transitions-events): Stream Transitions Events\n- [Update Execution - Julep](https://docs.julep.ai/api-reference/executions/update-execution): Update Execution\n\n## API Reference - Files\n- [Create File - Julep](https://docs.julep.ai/api-reference/files/create-file): Create File\n- [Delete File - Julep](https://docs.julep.ai/api-reference/files/delete-file): Delete File\n- [Get File - Julep](https://docs.julep.ai/api-reference/files/get-file): Get File\n- [List Files - Julep](https://docs.julep.ai/api-reference/files/list-files): List Files\n\n## API Reference - Health\n- [Check Health - Julep](https://docs.julep.ai/api-reference/healthz/check-health): Check Health\n\n## API Reference - Jobs\n- [Get Job Status - Julep](https://docs.julep.ai/api-reference/jobs/get-job-status): Get Job Status\n\n## API Reference - Projects\n- [Create Project - Julep](https://docs.julep.ai/api-reference/projects/create-project): Create Project\n- [List Projects - Julep](https://docs.julep.ai/api-reference/projects/list-projects): List Projects\n\n## API Reference - Secrets\n- [Create Developer Secret - Julep](https://docs.julep.ai/api-reference/secrets/create-developer-secret): Create a new secret for a developer.  Args:     developer_id: ID of the developer creating the secret     secret: Secret to create  Returns:     The created secret  Raises:     HTTPException: If a secret with this name already exists (409 Conflict)\n- [Delete Developer Secret - Julep](https://docs.julep.ai/api-reference/secrets/delete-developer-secret): Delete a secret.  Args:     secret_id: ID of the secret to delete     x_developer_id: ID of the developer who owns the secret  Returns:     The deleted secret  Raises:     HTTPException: If the secret doesn't exist\n- [List Developer Secrets - Julep](https://docs.julep.ai/api-reference/secrets/list-developer-secrets): List all secrets for a developer.  Args:     x_developer_id: ID of the developer whose secrets to list     limit: Maximum number of secrets to return     offset: Number of secrets to skip  Returns:     List of secrets\n- [Update Developer Secret - Julep](https://docs.julep.ai/api-reference/secrets/update-developer-secret): Update a developer secret.  Args:     developer_id: ID of the developer who owns the secret     secret_id: ID of the secret to update     data: New secret data  Returns:     The updated secret  Raises:     HTTPException: If the secret doesn't exist or doesn't belong to the developer\n\n## API Reference - Sessions\n- [Chat - Julep](https://docs.julep.ai/api-reference/sessions/chat): Initiates a chat session.  Parameters:     developer (Developer): The developer associated with the chat session.     session_id (UUID): The unique identifier of the chat session.     chat_input (ChatInput): The chat input data.     background_tasks (BackgroundTasks): The background tasks to run.     x_custom_api_key (Optional[str]): The custom API key.  Returns:     ChatResponse: The chat response.\n- [Create Or Update Session - Julep](https://docs.julep.ai/api-reference/sessions/create-or-update-session): Create Or Update Session\n- [Create Session - Julep](https://docs.julep.ai/api-reference/sessions/create-session): Create Session\n- [Delete Session - Julep](https://docs.julep.ai/api-reference/sessions/delete-session): Delete Session\n- [Get Session - Julep](https://docs.julep.ai/api-reference/sessions/get-session): Get Session\n- [Get Session History - Julep](https://docs.julep.ai/api-reference/sessions/get-session-history): Get Session History\n- [List Sessions - Julep](https://docs.julep.ai/api-reference/sessions/list-sessions): List Sessions\n- [Patch Session - Julep](https://docs.julep.ai/api-reference/sessions/patch-session): Patch Session\n- [Render - Julep](https://docs.julep.ai/api-reference/sessions/render): Renders a chat input.  Parameters:     developer (Developer): The developer associated with the chat session.     session_id (UUID): The unique identifier of the chat session.     chat_input (ChatInput): The chat input data.  Returns:     RenderResponse: The rendered chat input.\n- [Update Session - Julep](https://docs.julep.ai/api-reference/sessions/update-session): Update Session\n\n## API Reference - Tasks\n- [Create Or Update Task - Julep](https://docs.julep.ai/api-reference/tasks/create-or-update-task): Create Or Update Task\n- [Create Task - Julep](https://docs.julep.ai/api-reference/tasks/create-task): Create Task\n- [Get Execution Transition - Julep](https://docs.julep.ai/api-reference/tasks/get-execution-transition): Get Execution Transition\n- [Get Task Details - Julep](https://docs.julep.ai/api-reference/tasks/get-task-details): Get Task Details\n- [List Task Executions - Julep](https://docs.julep.ai/api-reference/tasks/list-task-executions): List Task Executions\n- [List Tasks - Julep](https://docs.julep.ai/api-reference/tasks/list-tasks): List Tasks\n\n## Optional\n- [Adding a Tool Integration - Julep](https://docs.julep.ai/guides/adding-tool-integration): Extend Julep with your own tool or API\n- [Complex Workflows - Julep](https://docs.julep.ai/guides/advanced/complex-workflows): Creating advanced task workflows\n- [Integration Patterns - Julep](https://docs.julep.ai/guides/advanced/integration-patterns): Common patterns for integrating with external services\n- [Multi-Agent Systems - Julep](https://docs.julep.ai/guides/advanced/multi-agent-systems): Building complex multi-agent systems\n- [Community Examples - Julep](https://docs.julep.ai/guides/cookbooks/community-examples): Examples from the Julep community\n- [Quick Solutions - Julep](https://docs.julep.ai/guides/cookbooks/quick-solutions): Ready-to-use solutions for common use cases\n- [Modifying Agent Workflow - Julep](https://docs.julep.ai/guides/modifying-agent-workflow): Customize how your agents process tasks\n\n---\n\n*This llms.txt file was generated by [llmtxt.dev](https://llmtxt.dev)*\n"
  },
  {
    "path": "documentation/responses/cli.mdx",
    "content": "---\ntitle: 'CLI'\ndescription: 'CLI for setting up and using Open Responses API'\nicon: 'terminal'\n---\n\n# Open Responses CLI\n\nA CLI tool for setting up a self-hosted alternative to OpenAI's Responses API. This API lets you create and manage open-ended AI responses for your applications, similar to OpenAI's Responses API, but fully under your control.\n\n## Features\n\n- Easy setup with Docker Compose\n- Compatible API endpoints with OpenAI's Responses API\n- Management UI for creating, viewing, and managing responses\n- Local data storage with PostgreSQL\n- Customizable authentication and timeout settings\n\n## Installation\n\nYou can install this CLI using Go, npm, or Python:\n\n### Using Go\n\n```bash\ngo install github.com/julep-ai/open-responses@latest\nopen-responses\n```\n\n### Using npm\n\n```bash\nnpx open-responses\n```\n\nOr install it globally:\n\n```bash\nnpm install -g open-responses\nopen-responses\n```\n\nOr with bunx:\n\n```bash\nbunx open-responses\n```\n\n### Using Python\n\n```bash\npipx install open-responses\npipx open-responses\n```\n\nOr install with pip globally:\n\n```bash\npip install open-responses\nopen-responses\n```\n\nOr with uv:\n\n```bash\nuvx open-responses\n```\n\n## Usage\n\n### First-time Setup\n\nBefore using any commands, you must run the setup command:\n\n```bash\nopen-responses setup\n```\n\nThis will:\n\n- Ask for configuration settings with default values:\n  - Host (default: 127.0.0.1)\n  - Port (default: 8080)\n  - Docker tag (default: latest_responses)\n  - Base Docker Compose URI (default: https://u.julep.ai/responses-compose.yaml)\n  - Environment file location (default: .env in Git root or current directory)\n  - API version (default: 0.0.1)\n- Ask for API configuration values (port, authentication key, timeout)\n- Create a .env file with your settings\n- Download or generate a docker-compose.yml file with the necessary services:\n  - API server\n  - Database\n  - Management UI\n- Create a configuration file (open-responses.json) to track your settings\n\nThe CLI will automatically check for this configuration before running any other commands. If the configuration file doesn't exist, it will prompt you to run the setup command first.\n\n### Configuration File\n\nThe CLI stores its configuration in `open-responses.json`, which can be located in:\n\n- The current directory\n- The parent directory\n- The Git repository root directory\n\nThe configuration file tracks:\n\n- All user-defined settings\n- Environment variable values\n- Creation and update timestamps (both `camelCase` and `snake_case` formats are supported)\n- File locations and version information\n\nWhen you run `setup` again with an existing configuration, it will let you update your settings while preserving your previous values as defaults. If timestamps are missing from an existing configuration, they'll be added automatically when the configuration is updated.\n\n### API Configuration\n\nThe API service includes the following configuration options with sensible defaults:\n\n#### Basic Settings\n\n- `HOST`: Host address for the API (default: `127.0.0.1`)\n- `PORT`: Port for the UI service (default: `8080`)\n- `RESPONSES_API_PORT`: Port for the API service (default: `8080`)\n- `DOCKER_TAG`: Docker image tag (default: `latest_responses`)\n- `API_VERSION`: API version (default: `0.0.1`)\n\n#### Performance & Limits\n\n- `NODE_ENV`: Node.js environment (default: `production`)\n- `LOG_LEVEL`: Logging level (default: `info`)\n- `REQUEST_TIMEOUT`: API request timeout in ms (default: `120000` - 2 minutes)\n- `MAX_PAYLOAD_SIZE`: Maximum request payload size (default: `10mb`)\n- `RATE_LIMIT_WINDOW`: Rate limit window in ms (default: `60000` - 1 minute)\n- `RATE_LIMIT_MAX`: Maximum requests per rate limit window (default: `100`)\n\n#### Resource Allocation\n\nThe Docker Compose configuration also includes resource limits to ensure stable operation:\n\n- API Service: 1 CPU, 2GB memory (min: 0.25 CPU, 512MB)\n- Database: 1 CPU, 1GB memory (min: 0.1 CPU, 256MB)\n- Redis: 0.5 CPU, 768MB memory (min: 0.1 CPU, 128MB)\n- UI: 0.5 CPU, 512MB memory (min: 0.1 CPU, 128MB)\n\nThese settings provide a good balance for most deployments, but you can adjust them in the `docker-compose.yml` file if needed.\n\n### User-Friendly Commands\n\nThe CLI provides easy-to-use commands for common operations:\n\n#### Starting the service\n\n```bash\nopen-responses start\n```\n\nThis user-friendly command:\n\n- Pulls Docker images for your specific architecture\n- Starts all services in foreground mode with log streaming\n- Automatically stops all services when you press Ctrl+C\n- Shows the status of services after startup\n- Displays access URLs for the API and admin UI\n\nTo run in detached mode (background):\n\n```bash\nopen-responses start --background\n```\n\n#### Stopping the service\n\n```bash\nopen-responses stop\n```\n\nThis command stops all services and performs cleanup (alias for `open-responses compose down`).\n\n#### Checking service status\n\n```bash\nopen-responses status\n```\n\nShows detailed information about all services, including:\n\n- Running state and health status\n- Uptime information\n- Resource usage summary\n- Access URLs\n\n#### Viewing logs\n\n```bash\nopen-responses logs [SERVICE]\n```\n\nShows logs from services with sensible defaults:\n\n- Follows logs in real-time\n- Shows colorized output\n- Displays last 100 lines by default\n- Can target specific services\n\nExamples:\n\n```bash\n# View logs from all services:\nopen-responses logs\n\n# View logs from a specific service:\nopen-responses logs api\n```\n\n#### Initializing a new project\n\n```bash\nopen-responses init\n```\n\nCreates a new project structure with guided setup:\n\n- Creates directory structure (data, config, logs)\n- Generates helpful documentation files\n- Runs interactive configuration\n- Sets up Docker Compose with best practices\n\n#### Managing API keys\n\n```bash\nopen-responses key <action>\n```\n\nManages API keys for the Responses API service:\n\n```bash\n# List all API keys (masked):\nopen-responses key list\n\n# Generate a new API key:\nopen-responses key generate [type]\n\n# Update an API key:\nopen-responses key set <type> [value]\n```\n\n#### Updating components\n\n```bash\nopen-responses update\n```\n\nUpdates all components to the latest version:\n\n- Updates Docker Compose configuration\n- Pulls latest Docker images\n- Backs up your configuration\n\n### Advanced Docker Compose Commands\n\nFor more advanced operations, use the compose command group:\n\n```bash\nopen-responses compose <command> [args...]\n```\n\nAvailable commands include:\n\n```bash [expandable]\n# Start services with additional options:\nopen-responses compose up [flags]\n\n# Stop and clean up services:\nopen-responses compose down [flags]\n\n# View logs with custom options:\nopen-responses compose logs [flags] [SERVICE...]\n\n# List containers:\nopen-responses compose ps [flags]\n\n# Build services:\nopen-responses compose build [flags] [SERVICE...]\n\n# Restart services:\nopen-responses compose restart [flags] [SERVICE...]\n\n# Pull service images:\nopen-responses compose pull [flags] [SERVICE...]\n\n# Execute commands in containers:\nopen-responses compose exec [flags] SERVICE COMMAND [ARGS...]\n\n# Run one-off commands:\nopen-responses compose run [flags] SERVICE COMMAND [ARGS...]\n\n# Validate Docker Compose configuration:\nopen-responses compose config [flags]\n\n# View processes in containers:\nopen-responses compose top [SERVICE...]\n\n# Monitor resource usage:\nopen-responses compose stats [SERVICE...]\n```\n\nEach compose command is a direct proxy to the equivalent Docker Compose command and accepts all the same flags and arguments. This provides full access to Docker Compose functionality when needed.\n\nFor detailed examples of each command, use the `--help` flag:\n\n```bash\nopen-responses compose up --help\nopen-responses compose logs --help\n```\n\nOr for general help:\n\n```bash\nopen-responses --help\n```\n\n## API Endpoints\n\nOnce your service is running, the following endpoints will be available:\n\n- `POST /v1/responses` - Create a new response\n- `GET /v1/responses/{id}` - Retrieve a response\n- `GET /v1/responses` - List all responses\n- `DELETE /v1/responses/{id}` - Delete a response\n\nYou can access the management UI at `http://localhost:8080` (or your configured port).\n\n## Requirements\n\n- Docker must be installed on your system\n- Docker Compose must be installed (either as a standalone binary or integrated plugin)\n  - Docker Compose V2 (≥ 2.21.0) is recommended for best compatibility\n  - Docker Compose V1 is supported but with limited functionality\n- No other runtime dependencies required (no Node.js or Python needed for running the service)\n\nThe CLI will check Docker and Docker Compose requirements and provide helpful instructions if they're not met.\n\n## How it works\n\nThis CLI is built with Go and compiled to native binaries for Windows, macOS, and Linux.\nWhen installed via npm or pip, the appropriate binary for your platform is used automatically.\n\nThe service itself runs in Docker containers, providing a compatible alternative to OpenAI's Responses API.\n\n## Development\n\n### Project Structure\n\n- `main.go`: Core CLI functionality built with Go\n- `open_responses/__init__.py`: Python wrapper for binary distribution\n- `scripts/postinstall.js`: Node.js script for platform detection and setup\n- `bin/`: Directory for compiled binaries\n\n### Building from Source\n\nBuild for your current platform:\n\n```bash\nnpm run build\n```\n\nBuild for all platforms:\n\n```bash\nnpm run build:all\n```\n\nThis will generate binaries in the `bin/` directory:\n\n- `bin/open-responses-linux`\n- `bin/open-responses-macos`\n- `bin/open-responses-win.exe`\n\n### Installing for Development\n\nFor Python:\n\n```bash\npip install -e .\n```\n\nFor npm:\n\n```bash\nnpm link\n```\n\n### Development Guidelines\n\nThis project follows strict formatting and linting guidelines to maintain code quality. We use:\n\n- **Go**: Standard Go formatting with `go fmt`\n- **Python**: Ruff for linting and formatting\n- **JavaScript**: ESLint and Prettier for linting and formatting\n\n#### Setting Up Development Environment\n\n1. Install development dependencies:\n\n```bash\n# Install JavaScript dependencies\nnpm install\n\n# Install Python dependencies\nuv pip install ruff\n\n# Install git hooks for automatic linting/formatting\nnpm run install:hooks\n```\n\n2. The git hooks will automatically run formatting and linting checks before each commit.\n\n#### Code Formatting and Linting\n\nYou can manually run code formatting and linting using these commands:\n\n```bash\n# Format all code\nnpm run format:all\n\n# Lint all code\nnpm run lint:all\n\n# Format/lint individual languages\nnpm run format       # JavaScript/JSON/Markdown files\nnpm run py:format    # Python files\nnpm run go:format    # Go files\nnpm run lint         # JavaScript files\nnpm run py:lint      # Python files\n```\n\n## License\n\nApache-2.0\n"
  },
  {
    "path": "documentation/responses/concepts.mdx",
    "content": "---\ntitle: 'Concepts'\ndescription: 'Concepts of Julep Open Responses API'\nicon: 'comment-dots'\n---\n\n## Overview\n\nIn this section, we'll cover the key concepts and components of the Julep Responses API. The Julep Responses API is designed to be compatible with OpenAI's interface, making it easy to migrate existing applications that use OpenAI's API to Julep.\n\n<Warning>\n- The Open Responses API requires self-hosting. See the [installation guide](/responses/quickstart/#local-installation) below.\n- Being in Alpha, the API is subject to change. Check back frequently for updates.\n- For more context, see the [OpenAI Responses API](https://platform.openai.com/api-reference/responses) documentation.\n</Warning>\n\n## Components\n\nThe Responses API offers a streamlined way to interact with language models with the following key components:\n\n- **Response ID**: A unique identifier (`uuid7`) for each response.\n- **Model**: The language model used to generate the response (e.g., \"claude-3.5-haiku\", \"gpt-4o\", etc.).\n- **Input**: The prompt or question sent to the model, which can be simple text or structured input.\n- **Output**: The generated content from the model, which can include text, tool outputs, or other structured data.\n- **Status**: The current status of the response (completed, failed, in_progress, incomplete).\n- **Tools**: Optional tools that the model can use to enhance its response.\n- **Usage**: Token consumption metrics for the response.\n\n### 2.1. Response Configuration Options\n\nWhen creating a response, you can leverage these configuration options to tailor the experience:\n\n| Option                | Type                                     | Description                                                                                       | Default        | Status        |\n|-----------------------|------------------------------------------|---------------------------------------------------------------------------------------------------|----------------|---------------|\n| `model`               | `string`                                 | The language model to use (e.g., \"claude-3.5-haiku\", \"gpt-4o\"). Check out the [supported models](/integrations/supported-models) for more information. | Required       | Implemented   |\n| `input`               | `string` \\| `array`                      | The prompt or structured input to send to the model                                               | Required       | Implemented   |\n| `include`             | `array` \\| `null`                        | Types of content to include in the response (e.g., \"file_search_call.results\")                    | `None`         | Partially Implemented |\n| `parallel_tool_calls` | `boolean`                                | Whether to allow tools to be called in parallel                                                   | `true`         | Implemented   |\n| `store`               | `boolean`                                | Whether to store the response for later retrieval                                                 | `true`         | Implemented   |\n| `stream`              | `boolean`                                | Whether to stream the response as it's generated                                                  | `false`        | Planned       |\n| `max_tokens`          | `integer` \\| `null`                      | Maximum number of tokens to generate                                                              | `None`         | Implemented   |\n| `temperature`         | `number`                                 | Controls randomness in response generation (0 to 1)                                               | `1`            | Implemented   |\n| `top_p`               | `number`                                 | Controls diversity in token selection (0 to 1)                                                    | `1`            | Implemented   |\n| `n`                   | `integer` \\| `null`                      | Number of responses to generate                                                                   | `None`         | Implemented   |\n| `stop`                | `string` \\| `array` \\| `null`            | Sequence(s) where the model should stop generating                                                | `None`         | Implemented   |\n| `presence_penalty`    | `number` \\| `null`                       | Penalty for new tokens based on presence in text so far                                           | `None`         | Implemented   |\n| `frequency_penalty`   | `number` \\| `null`                       | Penalty for new tokens based on frequency in text so far                                          | `None`         | Implemented   |\n| `logit_bias`          | `object` \\| `null`                       | Modify likelihood of specific tokens appearing                                                    | `None`         | Implemented   |\n| `user`                | `string` \\| `null`                       | Unique identifier for the end-user                                                                | `None`         | Implemented   |\n| `instructions`        | `string` \\| `null`                       | Additional instructions to guide the model's response                                             | `None`         | Implemented   |\n| `previous_response_id`| `string` \\| `null`                       | ID of a previous response for context continuity                                                  | `None`         | Implemented   |\n| `reasoning`           | `object` \\| `null`                       | Controls reasoning effort (low/medium/high)                                                       | `None`         | Implemented   |\n| `text`                | `object` \\| `null`                       | Configures text format (text or JSON object)                                                      | `None`         | Implemented   |\n| `tool_choice`         | `\"auto\"` \\| `\"none\"` \\| `object` \\| `null` | Controls how the model chooses which tools to use                                               | `None`         | Implemented   |\n| `tools`               | `array` \\| `null`                        | List of tools the model can use for generating the response                                       | `None`         | Partially Implemented |\n| `truncation`          | `\"disabled\"` \\| `\"auto\"` \\| `null`       | How to handle context overflow                                                                    | `None`         | Planned       |\n| `metadata`            | `object` \\| `null`                       | Additional metadata for the response                                                              | `None`         | Implemented   |\n\n\nTo know more about the roadmap of the Responses API, check out the [Roadmap](/responses/roadmap) page.\n\n## Input Formats\n\nThe Responses API supports various input formats to accommodate different use cases:\n\n### Simple Text Input\n\nThe simplest way to interact with the Responses API is to provide a text string as input:\n\n<CodeGroup>\n```json Simple Text Input\n{\n  \"input\": \"What are the top 5 skincare products?\"\n}\n```\n</CodeGroup>\n\n### Structured Message Input\n\nFor more complex interactions, you can provide a structured array of messages:\n\n<CodeGroup>\n```json Structured Message Input\n{\n  \"input\": [\n    {\n      \"role\": \"user\",\n      \"content\": \"Please summarize the current market trends in renewable energy.\"\n    }\n  ]\n}\n```\n</CodeGroup>\n\n### Multi-modal Input\n\nThe Responses API supports multi-modal inputs, allowing you to include images or files along with text:\n\n<CodeGroup>\n```json Multi-modal Input\n{\n  \"input\": [\n    {\n      \"role\": \"user\",\n      \"content\": [\n          {\"type\": \"input_text\", \"text\": \"what is in this image?\"},\n          {\n              \"type\": \"input_image\",\n              \"image_url\": \"https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/2560px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg\"\n          }\n      ]\n    }\n  ]\n}\n```\n</CodeGroup>\n\n### Tool Usage\n\nThe Responses API supports tool usage, allowing the model to perform actions like web searches, function calls, and more to enhance its response.\n\n<CodeGroup>\n```json Web Search Tool Definition\n{\n  \"input\": \"What are the latest advancements in quantum computing?\",\n  \"tools\": [\n    {\n      \"type\": \"web_search_preview\",\n      \"domains\": [\"https://www.google.com\"],\n      \"search_context_size\": \"small\",\n      \"user_location\": { \n        \"type\": \"approximate\",\n        \"city\": \"YOUR_CITY\",\n        \"country\": \"YOUR_COUNTRY\",\n        \"region\": \"YOUR_REGION\",\n        \"timezone\": \"YOUR_TIMEZONE\"\n      }\n    }\n  ],\n}\n```\n\n```json Sample Function Tool Call to get the weather [expandable]\n{\n  \"input\": \"What's the weather in San Francisco?\",\n  \"tools\": [\n    {\n      \"type\": \"function\",\n      \"name\": \"get_weather\",\n      \"description\": \"Get the current weather in a location\",\n      \"parameters\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"location\": {\n            \"type\": \"string\",\n            \"description\": \"The city and state, e.g. San Francisco, CA\"\n          },\n          \"unit\": {\n            \"type\": \"string\",\n            \"enum\": [\"celsius\", \"fahrenheit\"],\n            \"description\": \"The unit of temperature to use\"\n          }\n        },\n        \"required\": [\"location\"]\n      }\n    }\n  ],\n}\n```\n</CodeGroup>\n\n\n## Relationship to Sessions\n\nWhile [Sessions](/concepts/sessions) provide a persistent, stateful way to interact with agents over multiple turns, the Responses API offers a lightweight, stateless alternative for quick, one-off interactions with language models. Here's how they compare:\n\n| Feature | Sessions | Responses |\n|---------|----------|-----------|\n| **State Management** | Maintains conversation history | Stateless (with optional context from previous responses) |\n| **Persistence** | Long-lived, for ongoing conversations | Short-lived, for one-off interactions |\n| **Agent Integration** | Requires an agent | No agent needed |\n| **Setup Complexity** | Requires agent and session creation | Minimal setup (just model and input) |\n| **Use Case** | Multi-turn conversations, complex interactions | Quick content generation, processing, or reasoning |\n\n<Info>\nIf you need to maintain context across multiple interactions but prefer the simplicity of the Responses API, you can use the `previous_response_id` parameter to link responses together.\n</Info>\n\n## Response Object Structure\n\nThe Response object is the core data structure returned by the Julep Responses API as a response to a request. It contains all the information about a generated response. It follows the [OpenAI Responses API](https://platform.openai.com/api-reference/responses). Following is the schema of the Response object:\n\n| Field | Type | Description |\n|-------|------|-------------|\n| `id` | string | Unique identifier for the response |\n| `object` | string | Always \"response\" |\n| `created_at` | integer | Unix timestamp when the response was created |\n| `status` | string | Current status: \"completed\", \"failed\", \"in_progress\", or \"incomplete\" |\n| `error` | object or null | Error information if the response failed |\n| `incomplete_details` | object or null | Details about why a response is incomplete |\n| `instructions` | string or null | Optional instructions provided to the model |\n| `max_output_tokens` | integer or null | Maximum number of tokens to generate |\n| `model` | string | The model used to generate the response |\n| `output` | array | List of output items (messages, tool calls, reasoning) |\n| `parallel_tool_calls` | boolean | Whether tools can be called in parallel |\n| `previous_response_id` | string or null | ID of a previous response for context |\n| `reasoning` | object or null | Reasoning steps if reasoning was requested |\n| `store` | boolean | Whether the response is stored for later retrieval |\n| `temperature` | number | Sampling temperature used (0-1) |\n| `text` | object or null | Text formatting options |\n| `tool_choice` | string or object | How tools are selected (\"auto\", \"none\", \"required\") |\n| `tools` | array | List of tools available to the model |\n| `top_p` | number | Top-p sampling parameter (0-1) |\n| `truncation` | string | Truncation strategy (\"disabled\" or \"auto\") |\n| `usage` | object | Token usage statistics |\n| `user` | string or null | Optional user identifier |\n| `metadata` | object | Custom metadata associated with the response |\n\nThe `output` array contains the actual content generated by the model, which can include text messages, tool calls (function, web search, file search, computer), and reasoning items.\n\n## Best Practices\n\n<CardGroup cols={3}>\n  <Card title=\"Optimize Input Prompts\" icon=\"lightbulb\">\n    <ul>\n      <li>**1. Be Specific**: Clearly define what you want the model to generate.</li>\n      <li>**2. Provide Context**: Include relevant background information in your prompt.</li>\n      <li>**3. Use Examples**: When appropriate, include examples of desired outputs in your prompt.</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Model Selection\" icon=\"robot\">\n    <ul>\n      <li>**1. Match Complexity**: Use more capable models for complex tasks (e.g., reasoning, coding).</li>\n      <li>**2. Consider Latency**: Smaller models are faster for simple tasks.</li>\n      <li>**3. Test Different Models**: Compare results across models for optimal performance.</li>\n    </ul>\n  </Card>\n\n  <Card title=\"Tool Usage\" icon=\"screwdriver-wrench\">\n    <ul>\n      <li>**1. Provide Clear Tool Descriptions**: Help the model understand when and how to use tools.</li>\n      <li>**2. Only Include Relevant Tools**: Too many tools can confuse the model's selection process.</li>\n      <li>**3. Validate Tool Outputs**: Always verify the information returned from tool calls.</li>\n    </ul>\n  </Card>\n</CardGroup>\n\n## Next Steps\n\n- [Learn more about the Responses API Examples](/responses/examples) - To learn how to use the Responses API with code examples\n- [Learn more about the Julep Sessions](/concepts/sessions) - To explore Julep's stateful conversations when you need ongoing context\n- [Learn more about the Open Responses API Roadmap](/responses/roadmap) - To learn more about the Open Responses API Roadmap\n- [Learn more about Julep](/introduction/julep) - To learn more about Julep and its features\n- [GitHub](https://github.com/julep-ai/julep) - To contribute to the project"
  },
  {
    "path": "documentation/responses/examples.mdx",
    "content": "---\ntitle: 'Examples'\ndescription: 'Examples of using Julep Open Responses API'\nicon: 'code-branch'\n---\n\n# Open Responses API Examples\n\nBelow are practical examples showing how to use the Julep Open Responses API for various use cases.\n\n<Warning>\n- The Open Responses API requires self-hosting. See the [installation guide](/responses/quickstart/#local-installation) below.\n- Being in Alpha, the API is subject to change. Check back frequently for updates.\n- For more context, see the [OpenAI Responses API](https://platform.openai.com/api-reference/responses) documentation.\n</Warning>\n\n<Note>\n  <h4>API Key Configuration</h4>\n  - `RESPONSE_API_KEY` is the API key that you set in the `.env` file.\n  \n  <h4>Model Selection</h4>\n  - While using models other than OpenAI, one might need to add the `provider/` prefix to the model name.\n  - For supported providers, see the [LiteLLM Providers](https://docs.litellm.ai/providers) documentation.\n  \n  <h4>Environment Setup</h4>\n  - Add the relevant provider keys to the `.env` file to use their respective models.\n</Note>\n\n\n<Tabs>\n  <Tab title=\"OpenAI's SDK\">\n    ## Setup\n\n    First, set up your environment and create a client:\n\n    ```python\n    from openai import OpenAI\n\n    # Create an OpenAI client pointing to Julep's Open Responses API\n    client = OpenAI(base_url=\"http://localhost:8080/\", api_key=\"RESPONSE_API_KEY\")\n    ```\n\n    ## Using Reasoning Features\n\n    Enhance your model's reasoning capabilities for solving complex problems:\n\n    ```python\n    # Create a response with explicit reasoning\n    reasoning_response = client.responses.create(\n        model=\"o1\",\n        input=\"If Sarah has 3 apples and John has 5, and they combine their apples, then how many apples do they have in total? Explain your approach.\",\n        reasoning={\n            \"effort\": \"medium\"  # Control reasoning depth with \"low\", \"medium\", or \"high\"\n        }\n    )\n\n    # Access the final answer\n    print(reasoning_response.output_text)\n    # Output: They would have 8 apples in total. The approach is straightforward: you simply add the number of apples Sarah has (3) to the number of apples John has (5), giving 3 + 5 = 8..\n    ```\n\n    ## Using Web Search Tool\n    ```python Python\n    web_search_response = openai_client.responses.create(\n    model=\"gpt-4o-mini\",\n    tools=[{\"type\": \"web_search_preview\"}],\n        input=\"What was a positive news story from today?\",\n    )\n    # The output will include both the text response and any tool calls that were made\n    ```\n\n    ## Maintaining Conversation History\n\n    Create a continuous conversation by referencing previous responses:\n\n    ```python\n    # Reference a previous response to continue a conversation\n    follow_up_response = client.responses.create(\n        model=\"gpt-4o-mini\",\n        input=\"What was the final answer?\",\n        previous_response_id=reasoning_response.id\n    )\n\n    print(follow_up_response.output_text)\n    ```\n\n    ## Retrieving Past Responses\n\n    Access previously created responses by their ID:\n\n    ```python\n    # Retrieve a response by ID\n    retrieved_response = client.responses.retrieve(response_id=\"your-response-id\")\n    ```\n  </Tab>\n  \n  <Tab title=\"Agents SDK\">\n    ## Setup\n\n    First, set up your environment and create an async client:\n\n    ```python\n    from openai import AsyncOpenAI\n    from agents import set_default_openai_client\n\n    # Create and configure the OpenAI client\n    custom_client = AsyncOpenAI(base_url=\"http://localhost:8080/\", api_key=\"RESPONSE_API_KEY\")\n    set_default_openai_client(custom_client)\n    ```\n\n    ## Creating a Simple Agent\n\n    Build a basic agent that can respond to user queries:\n\n    ```python [expandable]\n    from agents import Agent, Runner\n\n    # For Jupyter notebooks:\n    agent = Agent(\n        name=\"Test Agent\",\n        instructions=\"You are a helpful assistant that provides concise responses.\",\n        model=\"openrouter/deepseek/deepseek-r1\",\n    )\n\n    result = await Runner.run(agent, \"Hello! Are you working correctly?\")\n    print(result.final_output)\n\n    # For Python scripts, you'd use:\n    # async def test_installation():\n    #     agent = Agent(\n    #         name=\"Test Agent\",\n    #         instructions=\"You are a helpful assistant that provides concise responses.\"\n    #         model=\"openrouter/deepseek/deepseek-r1\",\n    #     )\n    #     result = await Runner.run(agent, \"Hello! Are you working correctly?\")\n    #     print(result.final_output)\n    #\n    # if __name__ == \"__main__\":\n    #     asyncio.run(test_installation())\n\n    # Output: Great to hear! Let me know how I can help you today—whether it's answering questions, solving problems, or just chatting. 😊\n    ```\n\n    ## Web Search Integration\n\n    Create an agent with web search capabilities:\n\n    ```python [expandable]\n    from agents import Agent, Runner, WebSearchTool\n\n    # Create a research assistant with web search capability\n    research_assistant = Agent(\n        name=\"Research Assistant\",\n        instructions=\"\"\"You are a research assistant that helps users find and summarize information.\n        When asked about a topic:\n        1. Search the web for relevant, up-to-date information\n        2. Synthesize the information into a clear, concise summary\n        3. Structure your response with headings and bullet points when appropriate\n        4. Always cite your sources at the end of your response\n       \n        If the information might be time-sensitive or rapidly changing, mention when the search was performed.\n        \"\"\",\n        tools=[WebSearchTool()]\n    )\n\n\n    async def research_topic(topic):\n        result = await Runner.run(research_assistant, f\"Please research and summarize: {topic}. Only return the found links with very minimal text.\")\n        return result.final_output\n\n    # Usage example (in Jupyter notebook)\n    summary = await research_topic(\"Latest developments in personal productivity apps.\")\n    print(summary)\n\n    # Output: Here are some links to the latest developments in personal productivity apps:\n    # - [10 Hot Productivity Apps for 2024](https://francescod.medium.com/10-hot-productivity-apps-for-2024-e45e68f2ee22) - Medium\n    # - [The Best Productivity Apps in 2025](https://zapier.com/blog/best-productivity-apps/) - Zapier\n    # - [The Best Productivity Apps for 2025](https://www.pcmag.com/picks/best-productivity-apps) - PCMag\n    ```\n\n    ## Custom Function Tools\n\n    Create an agent with a custom function tool:\n\n    ```python [expandable]\n    import os\n    import requests\n    from datetime import datetime\n    from typing import Optional, List\n    from dataclasses import dataclass\n\n    from agents import Agent, Runner, function_tool\n    from dotenv import load_dotenv\n\n    load_dotenv()\n\n\n    @dataclass\n    class WeatherInfo:\n        temperature: float\n        feels_like: float\n        humidity: int\n        description: str\n        wind_speed: float\n        pressure: int\n        location_name: str\n        rain_1h: Optional[float] = None\n        visibility: Optional[int] = None\n\n\n    @function_tool\n    def get_weather(lat: float, lon: float) -> str:\n        \"\"\"Get the current weather for a specified location using OpenWeatherMap API.\n\n        Args:\n            lat: Latitude of the location (-90 to 90)\n            lon: Longitude of the location (-180 to 180)\n        \"\"\"\n        # Get API key from environment variables\n        WEATHER_API_KEY = os.getenv(\"OPENWEATHERMAP_API_KEY\")\n\n        # Build URL with parameters\n        url = f\"https://api.openweathermap.org/data/2.5/weather?lat={lat}&lon={lon}&appid={WEATHER_API_KEY}&units=metric\"\n\n        try:\n            response = requests.get(url)\n            response.raise_for_status()\n            data = response.json()\n\n            # Extract weather data from the response\n            weather_info = WeatherInfo(\n                temperature=data[\"main\"][\"temp\"],\n                feels_like=data[\"main\"][\"feels_like\"],\n                humidity=data[\"main\"][\"humidity\"],\n                description=data[\"weather\"][0][\"description\"],\n                wind_speed=data[\"wind\"][\"speed\"],\n                pressure=data[\"main\"][\"pressure\"],\n                location_name=data[\"name\"],\n                visibility=data.get(\"visibility\"),\n                rain_1h=data.get(\"rain\", {}).get(\"1h\"),\n            )\n\n            # Build the response string\n            weather_report = f\"\"\"\n            Weather in {weather_info.location_name}:\n            - Temperature: {weather_info.temperature}°C (feels like {weather_info.feels_like}°C)\n            - Conditions: {weather_info.description}\n            - Humidity: {weather_info.humidity}%\n            - Wind speed: {weather_info.wind_speed} m/s\n            - Pressure: {weather_info.pressure} hPa\n            \"\"\"\n            return weather_report\n\n        except requests.exceptions.RequestException as e:\n            return f\"Error fetching weather data: {str(e)}\"\n    ```\n\n    ## Using the Tool with an Agent\n\n    Create an agent that uses the custom function tool:\n\n    ```python [expandable]\n    # Create a weather assistant\n    weather_assistant = Agent(\n        name=\"Weather Assistant\",\n        instructions=\"\"\"You are a weather assistant that can provide current weather information.\n       \n        When asked about weather, use the get_weather tool to fetch accurate data.\n        If the user doesn't specify a country code and there might be ambiguity,\n        ask for clarification (e.g., Paris, France vs. Paris, Texas).\n       \n        Provide friendly commentary along with the weather data, such as clothing suggestions\n        or activity recommendations based on the conditions.\n        \"\"\",\n        tools=[get_weather]\n    )\n\n    async def main():\n        runner = Runner()\n\n        simple_request = await runner.run(weather_assistant, \"What are your capabilities?\")\n        request_with_location = await runner.run(weather_assistant, \"What's the weather like in Tashkent right now?\")\n\n        print(simple_request.final_output)\n        print(\"-\"*70)\n        print(request_with_location.final_output)\n\n    await main()\n\n    # Output: \n    # I'm a weather assistant that can provide you with current weather information. If you ask about the weather for a specific location, I can use a tool to fetch accurate and up-to-date weather data for that place. \n    # \n    # Additionally, I can offer friendly suggestions based on the weather, like what to wear or what activities might be suitable. If the location you mention is ambiguous (like Paris, which could be in France or Texas), I might ask for clarification to ensure I provide you with the correct weather information.\n    # ----------------------------------------------------------------------\n    # Right now in Tashkent, it's a bit cool with a temperature of 8.84°C, feeling slightly cooler at 7.06°C. The sky is overcast with lots of clouds, and the humidity is at 76%, so you might feel a bit of dampness in the air. There's a gentle breeze with the wind blowing at 3.09 m/s.\n    # \n    # With these conditions, I'd recommend wearing a warm jacket if you're heading out. It's a great day to enjoy indoor activities or perhaps a warm drink at a cozy café! Stay comfortable!\n    ```\n  </Tab>\n</Tabs>\n\n## Next Steps\n\nYou've got Open Responses running – here's what to explore next:\n\n- [Learn more about the Open Responses API Concepts](/responses/concepts) – To learn more about core concepts and how Open Responses structures these building blocks in your applications.\n- [Learn more about the Open Responses API Roadmap](/responses/roadmap) – To see upcoming features.\n- [OpenAI's Responses API Documentation](https://platform.openai.com/api-reference/responses) - For more insight into the original API that inspired Julep's Responses\n- [OpenAI Agents SDK](https://openai.github.io/openai-agents-python/) - Explore OpenAI's Agents SDK that works with Julep's Open Responses API\n- [Learn more about Julep](/introduction/julep) - To learn more about Julep and its features\n- [Julep's GitHub Repository](https://github.com/julep-ai/julep) - To contribute to the project"
  },
  {
    "path": "documentation/responses/quickstart.mdx",
    "content": "---\ntitle: 'Quickstart'\ndescription: 'Get started with Julep Open Responses API for LLM interactions'\nicon: 'rocket'\n---\n\n## Introduction\n\nJulep's Open Responses is a self-hosted, open-source implementation of OpenAI's Responses API that works with any LLM backend. It provides a lightweight interface for generating content with Large Language Models (LLMs) without needing to create persistent agents or sessions.\n\n<Info>\nTo try it out, just run `npx -y open-responses init` (or `uvx`) and that's it! :)\n</Info>\n\n### What is Open Responses?\n\nJulep's Open Responses lets you run your own server that is compatible with OpenAI's Responses API, while giving you the freedom to use alternative models like:\n- Anthropic's Claude\n- Alibaba's Qwen\n- Deepseek R1\n- and many others ...\n\nIt's essentially a drop-in replacement that you control, with a permissive Apache-2.0 license. As an early release, we welcome your feedback and contributions to help improve it.\n\n<Frame caption=\"Open Responses API Overview\"> \n  <img\n    src=\"/images/open-responses.jpg\"\n    alt=\"Open Responses API Diagram\"\n  />\n</Frame>\n\n### Why Open Responses?\n\n- **Model Flexibility**: Use any LLM backend without vendor lock-in, including local model deployment\n- **Self-hosted & Private**: Maintain full control over your deployment on your own infrastructure (cloud or on-premise)\n- **Drop-in Compatibility**: Seamlessly integrates with the official Agents SDK by simply pointing to your self-hosted URL\n- **Easy Deployment**: Quick setup via docker-compose or our CLI with minimal configuration\n- **Built-in Tools**: Automatic execution of tool calls (like web_search) using open & pluggable alternatives\n\n<Warning>\n- The Open Responses API requires self-hosting. See the [installation guide](#local-installation) below.\n- Being in Alpha, the API is subject to change. Check back frequently for updates.\n- For more context, see the [OpenAI Responses API](https://platform.openai.com/api-reference/responses) documentation.\n</Warning>\n\n## Local Installation\n\nThis section will guide you through the steps to set up the Julep's Open Responses API.\n\n### Prerequisites\n\nInstall [Docker](https://docs.docker.com/get-docker/)\n\n### Installation\n\nThe Julep's Open Responses API is a fully microservice-based architecture. It is fully dockerized and can be easily deployed on any infrastructure that supports Docker. There are two ways to install the API:\n\n- [Docker Installation](#docker-installation)\n- [CLI Installation](#cli-installation)\n\n#### Docker Installation\n\n<Steps>\n\n<Step title=\"Create a directory for the project\">\n\n```bash\nmkdir julep-responses-api\n```\n\n</Step>\n\n<Step title=\"Navigate to the project directory\">\n\n```bash\ncd julep-responses-api\n```\n\n</Step>\n\n<Step title=\"Download and edit the environment variables\">\n\n```bash\nwget https://u.julep.ai/responses-env.example -O .env\n```\n\nEdit the `.env` file with your own values.\n\n</Step>\n\n<Step title=\"Download the Docker Compose file\">\n\n```bash\nwget https://u.julep.ai/responses-compose.yaml -O docker-compose.yml\n```\nDownload the file to the current directory with the name `docker-compose.yml`. This is the file that will be used to run the Docker containers.\n\n</Step>\n\n<Step title=\"Run the Docker containers\">\n\n```bash\ndocker compose up --watch\n```\n\nThis will start the containers in watch mode.\n\n</Step>\n\n<Step title=\"Verify that the containers are running\">\n\n```bash\ndocker ps\n```\n\n</Step>\n\n</Steps>\n\n#### CLI Installation\n\nThe CLI is a lightweight alternative to Docker for those who prefer not to use Docker directly. \n\n<Info>\nInternally, it uses Docker to run the containers.\n</Info>\n\n<Steps>\n\n<Step title=\"Install the CLI\">\nYou can install the CLI using several package managers:\n\n<CodeGroup>\n\n```bash npx\n# Using npx directly\nnpx open-responses\n\n# Or install globally\nnpm install -g open-responses\n```\n\n```bash uv\n# Install using uv\nuvx open-responses\n\n# Install using pip globally\npip install open-responses\nopen-responses\n```\n\n</CodeGroup>\n\n</Step>\n\n<Step title=\"Setup the Environment Variables\">\n\n<CodeGroup>\n```bash npx\nnpx open-responses setup\n```\n\n```bash uv\nuvx open-responses setup\n```\n</CodeGroup>\n\nBefore using any commands, you must run the setup command\n\n</Step>\n\n<Step title=\"Run the CLI\">\n\n<CodeGroup>\n```bash npx\nnpx open-responses start\n```\n\n```bash uv\nuvx open-responses start\n```\n</CodeGroup>\n\nThis will start the API in watch mode\n\n</Step>\n\n</Steps>\n\n<Info>\nTo learn more about the CLI one can use the checkout the [CLI Documentation](/responses/cli).\n</Info>\n\n## Quickstart Example\n\nWith the OpenAI SDK initialized, you can now use the Responses API to generate content.\n\n<Note>\n  <h4>API Key Configuration</h4>\n  - `RESPONSE_API_KEY` is the API key that you set in the `.env` file.\n  \n  <h4>Model Selection</h4>\n  - While using models other than OpenAI, one might need to add the `provider/` prefix to the model name.\n  - For supported providers, see the [LiteLLM Providers](https://docs.litellm.ai/providers) documentation.\n  \n  <h4>Environment Setup</h4>\n  - Add the relevant provider keys to the `.env` file to use their respective models.\n</Note>\n\n### 1. Install the OpenAI SDK\n\n<CodeGroup>\n```bash pip\npip install openai\n```\n\n```bash npm\nnpm install openai\n```\n</CodeGroup>\n\n### 2. Initialize the OpenAI client\n\n<CodeGroup>\n\n```python Python\nfrom openai import OpenAI\nopenai_client = OpenAI(base_url=\"http://localhost:8080/\", api_key=\"RESPONSE_API_KEY\")\n```\n\n```javascript Node.js\nimport { OpenAI } from 'openai';\nconst openai_client = new OpenAI({ baseURL: 'http://localhost:8080/', apiKey: 'RESPONSE_API_KEY' });\n```\n\n</CodeGroup>\n\n### 3. Generate a response\n\n<CodeGroup>\n\n```python Python\nimport os\nfrom openai import OpenAI\n\nopenai_client = OpenAI(base_url=\"http://localhost:8080/\", api_key=os.getenv(\"RESPONSE_API_KEY\"))\n\nresponse = openai_client.responses.create(\n    model=\"gpt-4o-mini\",\n    input=\"How many people live in the world?\"\n)\nprint(\"Generated response:\", response.output[0].content[0].text)\n```\n\n```javascript Node.js\n\nimport { OpenAI } from 'openai';\n\nconst openai_client = new OpenAI({ baseURL: 'http://localhost:8080/', apiKey: \"RESPONSE_API_KEY\" });\n\nconst response = await openai_client.responses.create({\n    model: \"gpt-4o-mini\",\n    input: \"How many people live in the world?\"\n});\n\nconsole.log(\"Generated response:\", response.output[0].content[0].text);\n```\n\n</CodeGroup>\n\n\n## Next Steps\n\nYou've got Open Responses running – here's what to explore next:\n\n- [Learn more about the Open Responses API Examples](/responses/examples) – To learn how to use the Responses API with code examples\n- [Learn more about the Open Responses API Roadmap](/responses/roadmap) – To see upcoming features including:\n- [Learn more about Julep](/introduction/julep) - To learn more about Julep and its features\n- [GitHub](https://github.com/julep-ai/julep) - To contribute to the project"
  },
  {
    "path": "documentation/responses/roadmap.mdx",
    "content": "---\ntitle: 'Roadmap'\ndescription: 'Roadmap for the Julep Open Responses API'\nicon: 'road'\n---\n\n## Overview\n\nThe Julep's Open Responses API is under active development. This page provides a comprehensive overview of implemented features, in-progress development, and planned enhancements.\n\n<Warning>\n- The Open Responses API requires self-hosting. See the [installation guide](/responses/quickstart/#local-installation) below.\n- Being in Alpha, the API is subject to change. Check back frequently for updates.\n- For more context, see the [OpenAI Responses API](https://platform.openai.com/api-reference/responses) documentation.\n</Warning>\n\n## Current Implementation Status\n\n### 1. Implemented Features ✅\n\nThis section lists the core functionalities that have been implemented.\n\n#### 1.1. Core Functionality\n- Basic Response Creation and Retrieval\n- Text and Image Input Support\n- Multiple Input and Output Formats\n- Response Metadata\n- Reasoning Support\n- Tool Choice Configuration\n\n#### 1.2. Advanced Features\n- **Function Calling**\n  - Dynamic function execution\n  - Parameter validation\n  - Error handling\n  - Function chaining support\n- **Web Search Tool Support**\n  - Real-time web queries\n  - Result filtering and ranking\n  - Source verification\n  - Search result caching\n- **Response Metadata**\n  - Creation timestamps\n  - Processing duration\n  - Resource usage metrics\n  - Performance analytics\n- **Reasoning Support**\n  - Step-by-step reasoning\n  - Logical deduction\n  - Context awareness\n  - Decision tracking\n- **Tool Choice Configuration**\n  - Tool selection criteria\n  - Priority-based routing\n  - Fallback mechanisms\n  - Tool-specific parameters\n\n### 2. Partially Implemented Features 🔄\n\nThis section lists the features that are partially implemented.\n\n#### 2.1. File Search Tool\n- Basic file indexing\n- Full text search across indexed files\n- Support for multiple file formats, including PDFs and office documents\n- Relevance-based ranking of search results\n- Filters by file type, date, and metadata\n- Indexing improvements for faster queries\n\n#### 2.2. Reasoning Effort\n- Baseline reasoning budget allocation\n- Dynamic budget adjustment based on request complexity\n- Optimized compute usage for long running tasks\n- Performance monitoring\n\n#### 2.3. Annotations for Citations\n- Basic citation format\n- Automatic source verification\n- Customizable citation styles\n- Auto-generation of citations from references\n\n### 3. Planned Features 🔜\n\nThis section lists the features that are planned to be implemented in the future.\n\n#### 3.1. Streaming Support\n\n  - Real-time response streaming\n  - Progress indicators\n  - Partial response handling\n  - Connection management\n\n#### 3.2. Response Deletion Endpoint\n\n  - Secure deletion\n  - Cascade deletion options\n  - Deletion confirmation\n  - Audit logging\n\n#### 3.3. Integration Features\n\n- **Computer Tool Call Support**\n  - OpenAI compatibility layer\n  - Tool translation service\n  - Error handling\n  - Response mapping\n\n#### 3.4. Performance Optimizations\n- **Truncation Auto Support**\n  - Smart content truncation\n  - Context preservation\n  - Length optimization\n  - Quality maintenance\n\n#### 3.5. API Enhancements\n- **GET /responses/{response_id}/input_items**\n  - Input item retrieval\n  - Item metadata\n  - Version history\n  - Relationship mapping\n- **Pagination for Input Items**\n  - Page size configuration\n  - Cursor-based navigation\n  - Total count information\n  - Filtering options\n\n### 4. Future Considerations\n\nThis section lists the features that are planned to be implemented in the future.\n\n#### 4.1. System Enhancements\n- Enhanced security features\n- Advanced analytics dashboard\n- Custom plugin system\n- Multi-language support\n\n#### 4.2. Performance & Scaling\n- Rate limiting and quotas\n- Advanced caching mechanisms\n- Load balancing improvements\n- Distributed processing support\n\n## Next Steps\n\n- [Return to the Responses API Quickstart](/responses/quickstart) - To get started with the Responses API\n- [Return to the Responses API Examples](/responses/examples) - To learn through practical examples\n- [Return to the Responses API Concepts](/responses/concepts) - To understand core concepts and components\n- [Learn more about Julep](/introduction/julep) - To learn more about Julep and its features\n- [GitHub](https://github.com/julep-ai/julep) - To contribute to the project"
  },
  {
    "path": "documentation/scripts/julep-chat-widget.js",
    "content": "// Julep Chat Widget with Streaming Support\n(function() {\n  'use strict';\n  \n  console.log('[Julep Widget] Loading...');\n  \n  // Configuration\n  const PROXY_URL = 'https://julep-chat-proxy.vercel.app/api/chat';\n  \n  // State\n  let sessionId = null;\n  let isOpen = false;\n  \n  // Helper function to create element with attributes\n  function createElement(tag, attrs = {}, innerHTML = '') {\n    const el = document.createElement(tag);\n    Object.entries(attrs).forEach(([key, value]) => {\n      if (key === 'style') {\n        el.style.cssText = value;\n      } else if (key === 'className') {\n        el.className = value;\n      } else {\n        el.setAttribute(key, value);\n      }\n    });\n    if (innerHTML) el.innerHTML = innerHTML;\n    return el;\n  }\n  \n  // Create and inject styles\n  const styles = createElement('style', {}, `\n    @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&display=swap');\n    \n    /* CSS Variables for theming */\n    :root {\n      --julep-bg-primary: #ffffff;\n      --julep-bg-secondary: #f8f9fb;\n      --julep-bg-tertiary: #f8fafb;\n      --julep-text-primary: #1a202c;\n      --julep-text-secondary: #4a5568;\n      --julep-border: #e2e8f0;\n      --julep-shadow: rgba(0,0,0,0.12);\n      --julep-input-bg: #ffffff;\n      --julep-code-bg: #1e293b;\n      --julep-code-text: #e2e8f0;\n    }\n    \n    /* Dark mode variables */\n    #julep-chat-widget[data-theme=\"dark\"] {\n      --julep-bg-primary: #1a1a1a;\n      --julep-bg-secondary: #0f0f0f;\n      --julep-bg-tertiary: #252525;\n      --julep-text-primary: #e2e8f0;\n      --julep-text-secondary: #a0aec0;\n      --julep-border: #2d3748;\n      --julep-shadow: rgba(0,0,0,0.4);\n      --julep-input-bg: #252525;\n      --julep-code-bg: #0f0f0f;\n      --julep-code-text: #e2e8f0;\n    }\n    \n    #julep-toggle-btn {\n      position: fixed !important;\n      bottom: 24px !important;\n      right: 24px !important;\n      width: 64px !important;\n      height: 64px !important;\n      background: linear-gradient(135deg, #004E64 0%, #00A5CF 100%) !important;\n      border: none !important;\n      border-radius: 50% !important;\n      cursor: pointer !important;\n      box-shadow: 0 4px 20px rgba(0, 78, 100, 0.3) !important;\n      z-index: 99999 !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      transition: all 0.3s ease !important;\n    }\n    \n    #julep-toggle-btn:hover {\n      transform: translateY(-2px) !important;\n      box-shadow: 0 6px 30px rgba(0, 78, 100, 0.4) !important;\n      background: linear-gradient(135deg, #003847 0%, #0091b8 100%) !important;\n    }\n    \n    #julep-toggle-btn svg {\n      width: 28px !important;\n      height: 28px !important;\n    }\n    \n    #julep-chat-widget {\n      position: fixed !important;\n      bottom: 100px !important;\n      right: 24px !important;\n      width: 480px !important;\n      height: 680px !important;\n      background: var(--julep-bg-primary) !important;\n      border-radius: 16px !important;\n      box-shadow: 0 10px 40px var(--julep-shadow) !important;\n      z-index: 99998 !important;\n      display: none !important;\n      flex-direction: column !important;\n      font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif !important;\n      overflow: hidden !important;\n      transition: all 0.3s ease !important;\n      border: 1px solid var(--julep-border) !important;\n    }\n    \n    #julep-chat-widget.open {\n      display: flex !important;\n    }\n    \n    /* Expanded mode */\n    #julep-chat-widget.expanded {\n      width: 600px !important;\n      height: 780px !important;\n    }\n    \n    @media (max-width: 768px) {\n      #julep-chat-widget {\n        width: calc(100vw - 40px) !important;\n        height: calc(100vh - 140px) !important;\n        right: 20px !important;\n        bottom: 80px !important;\n      }\n      \n      #julep-chat-widget.expanded {\n        width: calc(100vw - 40px) !important;\n        height: calc(100vh - 140px) !important;\n      }\n    }\n    \n    #julep-chat-header {\n      background: linear-gradient(135deg, #004E64 0%, #00A5CF 100%) !important;\n      color: white !important;\n      padding: 20px 24px !important;\n      display: flex !important;\n      justify-content: space-between !important;\n      align-items: center !important;\n      font-weight: 600 !important;\n      font-size: 17px !important;\n      letter-spacing: -0.02em !important;\n    }\n    \n    #julep-header-buttons {\n      display: flex !important;\n      align-items: center !important;\n      gap: 8px !important;\n    }\n    \n    #julep-close-btn {\n      background: rgba(255, 255, 255, 0.15) !important;\n      border: none !important;\n      color: white !important;\n      font-size: 24px !important;\n      cursor: pointer !important;\n      width: 34px !important;\n      height: 34px !important;\n      border-radius: 8px !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      transition: all 0.2s ease !important;\n    }\n    \n    #julep-close-btn:hover {\n      background: rgba(255, 255, 255, 0.25) !important;\n    }\n    \n    /* Expand button styling */\n    #julep-expand-btn {\n      background: rgba(255, 255, 255, 0.15) !important;\n      border: none !important;\n      color: white !important;\n      font-size: 18px !important;\n      cursor: pointer !important;\n      width: 34px !important;\n      height: 34px !important;\n      border-radius: 8px !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      transition: all 0.2s ease !important;\n      margin-right: 8px !important;\n    }\n    \n    #julep-expand-btn:hover {\n      background: rgba(255, 255, 255, 0.25) !important;\n    }\n    \n    #julep-messages {\n      flex: 1 !important;\n      overflow-y: auto !important;\n      padding: 24px !important;\n      background: var(--julep-bg-secondary) !important;\n    }\n    \n    .julep-message {\n      margin-bottom: 16px !important;\n      padding: 12px 16px !important;\n      border-radius: 12px !important;\n      max-width: 85% !important;\n      font-size: 14px !important;\n      line-height: 1.5 !important;\n      position: relative !important;\n    }\n    \n    .julep-message-copy {\n      position: absolute !important;\n      top: 8px !important;\n      right: 8px !important;\n      background: transparent !important;\n      border: none !important;\n      cursor: pointer !important;\n      opacity: 0 !important;\n      transition: opacity 0.2s ease !important;\n      padding: 4px !important;\n      border-radius: 4px !important;\n    }\n    \n    .julep-message:hover .julep-message-copy {\n      opacity: 0.6 !important;\n    }\n    \n    .julep-message-copy:hover {\n      opacity: 1 !important;\n      background: rgba(0, 0, 0, 0.1) !important;\n    }\n    \n    .julep-user .julep-message-copy {\n      color: white !important;\n    }\n    \n    .julep-assistant .julep-message-copy {\n      color: var(--julep-text-primary) !important;\n    }\n    \n    .julep-user {\n      background: linear-gradient(135deg, #004E64 0%, #00A5CF 100%) !important;\n      color: white !important;\n      margin-left: auto !important;\n      border-bottom-right-radius: 4px !important;\n      box-shadow: 0 2px 8px rgba(0, 78, 100, 0.2) !important;\n    }\n    \n    .julep-assistant {\n      background: var(--julep-bg-tertiary) !important;\n      color: var(--julep-text-primary) !important;\n      border: 1px solid var(--julep-border) !important;\n      box-shadow: 0 1px 3px var(--julep-shadow) !important;\n    }\n    \n    .julep-message pre {\n      background: var(--julep-code-bg) !important;\n      color: var(--julep-code-text) !important;\n      padding: 12px !important;\n      border-radius: 8px !important;\n      overflow-x: auto !important;\n      margin: 8px 0 !important;\n      border: 1px solid var(--julep-border) !important;\n      position: relative !important;\n    }\n    \n    .julep-code-copy {\n      position: absolute !important;\n      top: 8px !important;\n      right: 8px !important;\n      background: rgba(255, 255, 255, 0.1) !important;\n      border: 1px solid rgba(255, 255, 255, 0.2) !important;\n      border-radius: 6px !important;\n      padding: 4px 8px !important;\n      cursor: pointer !important;\n      font-size: 12px !important;\n      color: var(--julep-code-text) !important;\n      opacity: 0 !important;\n      transition: all 0.2s ease !important;\n    }\n    \n    .julep-message pre:hover .julep-code-copy {\n      opacity: 1 !important;\n    }\n    \n    .julep-code-copy:hover {\n      background: rgba(255, 255, 255, 0.2) !important;\n    }\n    \n    .julep-code-copy.copied {\n      background: #25A18E !important;\n      border-color: #25A18E !important;\n    }\n    \n    .julep-message code {\n      background: var(--julep-code-bg) !important;\n      color: #00A5CF !important;\n      padding: 2px 4px !important;\n      border-radius: 4px !important;\n      font-family: monospace !important;\n    }\n    \n    .julep-message pre code {\n      background: none !important;\n      color: inherit !important;\n      padding: 0 !important;\n    }\n    \n    .julep-message h1,\n    .julep-message h2,\n    .julep-message h3,\n    .julep-message h4,\n    .julep-message h5,\n    .julep-message h6 {\n      margin: 12px 0 8px 0 !important;\n      font-weight: 600 !important;\n      line-height: 1.4 !important;\n    }\n    \n    .julep-message h1 { font-size: 20px !important; }\n    .julep-message h2 { font-size: 18px !important; }\n    .julep-message h3 { font-size: 16px !important; }\n    .julep-message h4 { font-size: 15px !important; }\n    .julep-message h5 { font-size: 14px !important; }\n    .julep-message h6 { font-size: 13px !important; }\n    \n    .julep-message ul,\n    .julep-message ol {\n      margin: 8px 0 !important;\n      padding-left: 20px !important;\n    }\n    \n    .julep-message li {\n      margin: 4px 0 !important;\n      line-height: 1.5 !important;\n    }\n    \n    .julep-message a {\n      color: #00A5CF !important;\n      text-decoration: none !important;\n      border-bottom: 1px solid transparent !important;\n      transition: border-color 0.2s !important;\n    }\n    \n    .julep-message a:hover {\n      border-bottom-color: #00A5CF !important;\n      color: #0091b8 !important;\n    }\n    \n    #julep-input-container {\n      padding: 20px !important;\n      background: var(--julep-bg-primary) !important;\n      border-top: 1px solid var(--julep-border) !important;\n      display: flex !important;\n      gap: 12px !important;\n    }\n    \n    #julep-input {\n      flex: 1 !important;\n      padding: 13px 18px !important;\n      border: 2px solid var(--julep-border) !important;\n      border-radius: 12px !important;\n      font-size: 14px !important;\n      outline: none !important;\n      transition: all 0.2s ease !important;\n      background: var(--julep-input-bg) !important;\n      color: var(--julep-text-primary) !important;\n    }\n    \n    #julep-input:focus {\n      border-color: #00A5CF !important;\n      box-shadow: 0 0 0 3px rgba(0, 165, 207, 0.1) !important;\n    }\n    \n    #julep-input::placeholder {\n      color: var(--julep-text-secondary) !important;\n    }\n    \n    #julep-send-btn {\n      padding: 13px 24px !important;\n      background: linear-gradient(135deg, #004E64 0%, #00A5CF 100%) !important;\n      color: white !important;\n      border: none !important;\n      border-radius: 12px !important;\n      cursor: pointer !important;\n      font-size: 14px !important;\n      font-weight: 500 !important;\n      transition: all 0.2s ease !important;\n      box-shadow: 0 2px 8px rgba(0, 78, 100, 0.2) !important;\n    }\n    \n    #julep-send-btn:hover {\n      transform: translateY(-1px) !important;\n      box-shadow: 0 4px 12px rgba(0, 78, 100, 0.3) !important;\n      background: linear-gradient(135deg, #003847 0%, #0091b8 100%) !important;\n    }\n    \n    #julep-send-btn:active {\n      transform: translateY(0) !important;\n    }\n    \n    .julep-loading {\n      display: inline-flex !important;\n      gap: 4px !important;\n    }\n    \n    .julep-loading span {\n      width: 6px !important;\n      height: 6px !important;\n      background: #00A5CF !important;\n      border-radius: 50% !important;\n      animation: julep-bounce 1.4s ease-in-out infinite both !important;\n    }\n    \n    .julep-loading span:nth-child(2) {\n      animation-delay: 0.16s !important;\n    }\n    \n    .julep-loading span:nth-child(3) {\n      animation-delay: 0.32s !important;\n    }\n    \n    @keyframes julep-bounce {\n      0%, 80%, 100% {\n        transform: scale(0.8);\n        opacity: 0.5;\n      }\n      40% {\n        transform: scale(1);\n        opacity: 1;\n      }\n    }\n  `);\n  \n  // Create widget elements\n  const toggleBtn = createElement('button', {\n    id: 'julep-toggle-btn',\n    type: 'button'\n  }, '<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"white\"><path d=\"M21 11.5a8.38 8.38 0 0 1-.9 3.8 8.5 8.5 0 0 1-7.6 4.7 8.38 8.38 0 0 1-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 0 1-.9-3.8 8.5 8.5 0 0 1 4.7-7.6 8.38 8.38 0 0 1 3.8-.9h.5a8.48 8.48 0 0 1 8 8v.5z\"/></svg>');\n  \n  const widget = createElement('div', { id: 'julep-chat-widget' });\n  \n  const header = createElement('div', { id: 'julep-chat-header' });\n  const headerTitle = createElement('span', {}, 'Julep Assistant');\n  const headerButtons = createElement('div', { id: 'julep-header-buttons' });\n  const expandBtn = createElement('button', { id: 'julep-expand-btn', type: 'button' }, '⤢');\n  const closeBtn = createElement('button', { id: 'julep-close-btn', type: 'button' }, '×');\n  headerButtons.appendChild(expandBtn);\n  headerButtons.appendChild(closeBtn);\n  header.appendChild(headerTitle);\n  header.appendChild(headerButtons);\n  \n  const messagesDiv = createElement('div', { id: 'julep-messages' });\n  \n  const inputContainer = createElement('div', { id: 'julep-input-container' });\n  const input = createElement('input', {\n    id: 'julep-input',\n    type: 'text',\n    placeholder: 'Ask about Julep...'\n  });\n  const sendBtn = createElement('button', {\n    id: 'julep-send-btn',\n    type: 'button'\n  }, 'Send');\n  inputContainer.appendChild(input);\n  inputContainer.appendChild(sendBtn);\n  \n  widget.appendChild(header);\n  widget.appendChild(messagesDiv);\n  widget.appendChild(inputContainer);\n  \n  // Helper functions\n  function copyToClipboard(text) {\n    if (navigator.clipboard && navigator.clipboard.writeText) {\n      navigator.clipboard.writeText(text).catch(err => {\n        console.error('[Julep Widget] Failed to copy:', err);\n      });\n    } else {\n      // Fallback for older browsers\n      const textarea = document.createElement('textarea');\n      textarea.value = text;\n      textarea.style.position = 'fixed';\n      textarea.style.opacity = '0';\n      document.body.appendChild(textarea);\n      textarea.select();\n      document.execCommand('copy');\n      document.body.removeChild(textarea);\n    }\n  }\n  \n  // Global function for code copy buttons\n  window.copyJulepCode = function(codeId) {\n    const codeElement = document.getElementById(codeId);\n    if (codeElement) {\n      const code = codeElement.querySelector('code').textContent;\n      copyToClipboard(code);\n      \n      const copyBtn = codeElement.querySelector('.julep-code-copy');\n      copyBtn.textContent = 'Copied!';\n      copyBtn.classList.add('copied');\n      \n      setTimeout(() => {\n        copyBtn.textContent = 'Copy';\n        copyBtn.classList.remove('copied');\n      }, 2000);\n    }\n  };\n  \n  function parseMarkdown(text) {\n    // First, extract and store code blocks to protect them\n    const codeBlocks = [];\n    let html = text.replace(/```(\\w+)?\\n([\\s\\S]*?)```/g, (match, lang, code) => {\n      const index = codeBlocks.length;\n      codeBlocks.push({ lang: lang || 'plaintext', code: code.trim() });\n      return `__CODEBLOCK_${index}__`;\n    });\n    \n    // Extract inline code\n    const inlineCode = [];\n    html = html.replace(/`([^`]+)`/g, (match, code) => {\n      const index = inlineCode.length;\n      inlineCode.push(code);\n      return `__INLINECODE_${index}__`;\n    });\n    \n    // Now escape HTML\n    html = html.replace(/[&<>\"']/g, (m) => ({\n      '&': '&amp;',\n      '<': '&lt;',\n      '>': '&gt;',\n      '\"': '&quot;',\n      \"'\": '&#39;'\n    })[m]);\n    \n    // Process markdown\n    // Headers\n    html = html.replace(/^#{6}\\s+(.+)$/gm, '<h6>$1</h6>');\n    html = html.replace(/^#{5}\\s+(.+)$/gm, '<h5>$1</h5>');\n    html = html.replace(/^#{4}\\s+(.+)$/gm, '<h4>$1</h4>');\n    html = html.replace(/^#{3}\\s+(.+)$/gm, '<h3>$1</h3>');\n    html = html.replace(/^#{2}\\s+(.+)$/gm, '<h2>$1</h2>');\n    html = html.replace(/^#{1}\\s+(.+)$/gm, '<h1>$1</h1>');\n    \n    // Bold and italic\n    html = html.replace(/\\*\\*\\*(.+?)\\*\\*\\*/g, '<strong><em>$1</em></strong>');\n    html = html.replace(/\\*\\*(.+?)\\*\\*/g, '<strong>$1</strong>');\n    html = html.replace(/\\*(.+?)\\*/g, '<em>$1</em>');\n    \n    // Lists\n    html = html.replace(/^\\* (.+)$/gm, '<li>$1</li>');\n    html = html.replace(/^\\- (.+)$/gm, '<li>$1</li>');\n    html = html.replace(/^\\d+\\. (.+)$/gm, '<li>$1</li>');\n    \n    // Links\n    html = html.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '<a href=\"$2\" target=\"_blank\" rel=\"noopener\">$1</a>');\n    \n    // Line breaks\n    html = html.replace(/\\n/g, '<br>');\n    \n    // Restore code blocks with proper escaping and copy button\n    codeBlocks.forEach((block, index) => {\n      const escapedCode = block.code.replace(/[&<>\"']/g, (m) => ({\n        '&': '&amp;',\n        '<': '&lt;',\n        '>': '&gt;',\n        '\"': '&quot;',\n        \"'\": '&#39;'\n      })[m]);\n      const codeId = `code-${Date.now()}-${index}`;\n      html = html.replace(`__CODEBLOCK_${index}__`, \n        `<pre id=\"${codeId}\"><button class=\"julep-code-copy\" onclick=\"window.copyJulepCode('${codeId}')\">Copy</button><code class=\"language-${block.lang}\">${escapedCode}</code></pre>`\n      );\n    });\n    \n    // Restore inline code\n    inlineCode.forEach((code, index) => {\n      const escapedCode = code.replace(/[&<>\"']/g, (m) => ({\n        '&': '&amp;',\n        '<': '&lt;',\n        '>': '&gt;',\n        '\"': '&quot;',\n        \"'\": '&#39;'\n      })[m]);\n      html = html.replace(`__INLINECODE_${index}__`, `<code>${escapedCode}</code>`);\n    });\n    \n    // Clean up extra line breaks around block elements\n    html = html.replace(/<br>(<[hpd])/g, '$1');\n    html = html.replace(/(<\\/[hpd][^>]*>)<br>/g, '$1');\n    \n    return html;\n  }\n  \n  function addMessage(text, sender) {\n    const messageDiv = createElement('div', {\n      className: 'julep-message julep-' + sender\n    });\n    \n    // Add message content\n    messageDiv.innerHTML = parseMarkdown(text);\n    \n    // Add copy button for message\n    const copyBtn = createElement('button', {\n      className: 'julep-message-copy',\n      title: 'Copy message'\n    }, `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n      <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\n      <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\n    </svg>`);\n    \n    copyBtn.onclick = function() {\n      copyToClipboard(text);\n      copyBtn.innerHTML = '✓';\n      setTimeout(() => {\n        copyBtn.innerHTML = `<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\">\n          <rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect>\n          <path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path>\n        </svg>`;\n      }, 2000);\n    };\n    \n    messageDiv.appendChild(copyBtn);\n    messagesDiv.appendChild(messageDiv);\n    messagesDiv.scrollTop = messagesDiv.scrollHeight;\n    return messageDiv;\n  }\n  \n  async function createSession() {\n    try {\n      const response = await fetch(PROXY_URL, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({ action: 'createSession' })\n      });\n      \n      if (!response.ok) throw new Error('Failed to create session');\n      \n      const data = await response.json();\n      sessionId = data.id;\n      console.log('[Julep Widget] Session created:', sessionId);\n    } catch (error) {\n      console.error('[Julep Widget] Session creation failed:', error);\n      addMessage('Sorry, I could not connect to the service. Please try again later.', 'assistant');\n    }\n  }\n  \n  async function sendMessage() {\n    const message = input.value.trim();\n    if (!message) return;\n    \n    if (!sessionId) {\n      await createSession();\n      if (!sessionId) return;\n    }\n    \n    addMessage(message, 'user');\n    input.value = '';\n    \n    const loadingDiv = document.createElement('div');\n    loadingDiv.className = 'julep-message julep-assistant';\n    loadingDiv.innerHTML = '<div class=\"julep-loading\"><span></span><span></span><span></span></div>';\n    messagesDiv.appendChild(loadingDiv);\n    messagesDiv.scrollTop = messagesDiv.scrollHeight;\n    \n    try {\n      const response = await fetch(PROXY_URL, {\n        method: 'POST',\n        headers: { 'Content-Type': 'application/json' },\n        body: JSON.stringify({\n          action: 'sendMessage',\n          sessionId: sessionId,\n          message: message\n        })\n      });\n      \n      if (!response.ok) throw new Error('Failed to send message');\n      \n      // Handle streaming\n      const reader = response.body.getReader();\n      const decoder = new TextDecoder();\n      let buffer = '';\n      let fullContent = '';\n      \n      loadingDiv.innerHTML = '';\n      \n      while (true) {\n        const { done, value } = await reader.read();\n        if (done) break;\n        \n        const chunk = decoder.decode(value, { stream: true });\n        buffer += chunk;\n        \n        const lines = buffer.split('\\n');\n        buffer = lines.pop() || '';\n        \n        for (const line of lines) {\n          if (line.startsWith('data: ')) {\n            const data = line.slice(6);\n            if (data === '[DONE]') break;\n            \n            try {\n              const parsed = JSON.parse(data);\n              if (parsed.choices?.[0]?.delta?.content) {\n                fullContent += parsed.choices[0].delta.content;\n                loadingDiv.innerHTML = parseMarkdown(fullContent);\n                messagesDiv.scrollTop = messagesDiv.scrollHeight;\n              }\n            } catch (e) {\n              // Skip invalid JSON\n            }\n          }\n        }\n      }\n      \n      if (!fullContent) {\n        loadingDiv.innerHTML = 'Sorry, I received an empty response.';\n      }\n      \n    } catch (error) {\n      console.error('[Julep Widget] Message send failed:', error);\n      loadingDiv.innerHTML = 'Sorry, I encountered an error. Please try again.';\n    }\n  }\n  \n  // Event handlers\n  toggleBtn.onclick = async function() {\n    console.log('[Julep Widget] Toggle clicked');\n    isOpen = !isOpen;\n    \n    if (isOpen) {\n      widget.classList.add('open');\n      if (!sessionId) {\n        addMessage('Hello! I\\'m here to help you with Julep. What would you like to know?', 'assistant');\n        await createSession();\n      }\n    } else {\n      widget.classList.remove('open');\n    }\n  };\n  \n  closeBtn.onclick = function() {\n    console.log('[Julep Widget] Close clicked');\n    isOpen = false;\n    widget.classList.remove('open');\n  };\n  \n  expandBtn.onclick = function() {\n    console.log('[Julep Widget] Expand clicked');\n    widget.classList.toggle('expanded');\n    expandBtn.textContent = widget.classList.contains('expanded') ? '⤡' : '⤢';\n  };\n  \n  sendBtn.onclick = sendMessage;\n  \n  input.onkeypress = function(e) {\n    if (e.key === 'Enter') sendMessage();\n  };\n  \n  // Theme detection function\n  function detectTheme() {\n    // Check for Mintlify's theme - they use 'dark' class on html element\n    const htmlElement = document.documentElement;\n    const isDark = htmlElement.classList.contains('dark');\n    \n    // Apply theme to widget\n    widget.setAttribute('data-theme', isDark ? 'dark' : 'light');\n    console.log('[Julep Widget] Theme detected:', isDark ? 'dark' : 'light');\n    \n    // Debug: log what we're checking\n    console.log('[Julep Widget] HTML classes:', htmlElement.className);\n  }\n  \n  // Initialize widget\n  function init() {\n    console.log('[Julep Widget] Initializing...');\n    \n    // Inject styles\n    if (!document.getElementById('julep-widget-styles')) {\n      styles.id = 'julep-widget-styles';\n      document.head.appendChild(styles);\n    }\n    \n    // Add elements to body\n    if (!document.getElementById('julep-toggle-btn')) {\n      document.body.appendChild(toggleBtn);\n      document.body.appendChild(widget);\n      console.log('[Julep Widget] Widget added to page');\n    }\n    \n    // Detect initial theme\n    detectTheme();\n    \n    // Watch for theme changes\n    const observer = new MutationObserver(() => {\n      detectTheme();\n    });\n    \n    observer.observe(document.documentElement, {\n      attributes: true,\n      attributeFilter: ['class', 'data-theme']\n    });\n    \n    // Also watch for system theme changes\n    window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', detectTheme);\n  }\n  \n  // Wait for DOM\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', init);\n  } else {\n    setTimeout(init, 100);\n  }\n})();"
  },
  {
    "path": "documentation/sdks/common/authentication.mdx",
    "content": "---\ntitle: 'Authentication'\ndescription: 'Authentication patterns for Julep SDKs'\n---\n\n# Authentication\n\nLearn about different authentication methods and best practices when using Julep SDKs.\n\n## API Key Authentication\n\n### Basic Usage\n```python\nfrom julep import Client\n\nclient = Client(api_key=\"your_api_key\")\n```\n\n### Environment Variables\n```python\nimport os\nfrom julep import Client\n\nclient = Client(api_key=os.environ.get(\"JULEP_API_KEY\"))\n```\n\n## Advanced Authentication\n\n### Custom Authentication Headers\n```python\nclient = Client(\n    api_key=\"your_api_key\",\n    headers={\n        \"X-Custom-Header\": \"value\"\n    }\n)\n```\n\n### Multiple Environments\n```python\nclass JulepConfig:\n    def __init__(self, environment=\"production\"):\n        self.api_key = self._get_api_key(environment)\n        self.base_url = self._get_base_url(environment)\n    \n    def create_client(self):\n        return Client(\n            api_key=self.api_key,\n            base_url=self.base_url\n        )\n```\n\n## Security Best Practices\n\n1. Never hardcode API keys in your code\n2. Use environment variables or secure vaults\n3. Rotate API keys periodically\n4. Use different API keys for different environments\n5. Implement proper key management policies "
  },
  {
    "path": "documentation/sdks/common/error-handling.mdx",
    "content": "---\ntitle: 'Error Handling'\ndescription: 'Best practices for handling errors in Julep SDKs'\n---\n\n# Error Handling\n\nLearn how to effectively handle errors and exceptions when using Julep SDKs.\n\n## Common Error Types\n\n### API Errors\n```python\ntry:\n    agent = client.agents.create(name=\"Test Agent\")\nexcept julep.APIError as e:\n    print(f\"API Error: {e.status_code} - {e.message}\")\n```\n\n### Authentication Errors\n```python\ntry:\n    client = julep.Client(api_key=\"invalid_key\")\nexcept julep.AuthenticationError as e:\n    print(f\"Auth failed: {e}\")\n```\n\n### Rate Limit Errors\n```python\ntry:\n    results = client.agents.list()\nexcept julep.RateLimitError as e:\n    print(f\"Rate limited. Retry after: {e.retry_after} seconds\")\n```\n\n## Error Handling Patterns\n\n### Retrying Failed Requests\n```python\nfrom julep.utils import retry_with_backoff\n\n@retry_with_backoff(max_retries=3)\ndef create_agent_with_retry():\n    return client.agents.create(name=\"Test Agent\")\n```\n\n### Graceful Degradation\n```python\ndef get_agent_safely(agent_id):\n    try:\n        return client.agents.get(agent_id)\n    except julep.NotFoundError:\n        return create_default_agent()\n    except julep.APIError:\n        return use_cached_agent(agent_id)\n```\n\n## Best Practices\n\n1. Always wrap API calls in try-except blocks\n2. Handle specific exceptions before generic ones\n3. Implement retry logic for transient failures\n4. Log errors with appropriate context\n5. Provide meaningful error messages to users "
  },
  {
    "path": "documentation/sdks/common/secrets.mdx",
    "content": "---\ntitle: 'Common Secrets Patterns'\ndescription: 'Common patterns for working with secrets across SDKs'\n---\n\n# Common Secrets Patterns\n\nThis guide covers common patterns and best practices for working with secrets that apply across all Julep SDKs.\n\n## Secret Management Lifecycle\n\nThe typical lifecycle for secrets in Julep applications includes:\n\n1. **Creation**: Establishing new secrets\n2. **Retrieval**: Accessing secret metadata (not values)\n3. **Usage**: Referencing secrets in tasks and tools\n4. **Update**: Rotating or changing secret values\n5. **Deletion**: Removing secrets when no longer needed\n\n## Naming Conventions\n\nConsistent naming helps with secret organization:\n\n- Use snake_case formatting (e.g., `aws_access_key`)\n- Be descriptive but concise\n- Include service name as prefix (`stripe_secret_key` vs just `secret_key`)\n- For multiple environments, include environment prefix (`dev_stripe_key`, `prod_stripe_key`)\n\n## Secret Reference Patterns\n\nWhen using secrets in tasks, you have several reference patterns available:\n\n### Direct Reference\n\nReference a secret directly by name:\n\n```yaml\nsecret_name: openai_api_key\n```\n\n### Multiple Secrets\n\nFor operations requiring multiple secrets:\n\n```yaml\nsecrets:\n  service_api_key: \"api_key_secret_name\"\n  service_auth_token: \"auth_token_secret_name\"\n```\n\n### Expression Reference\n\nReference secrets within expressions:\n\n```yaml\narguments:\n  headers:\n    Authorization: \"$ f'Bearer {secrets.api_token}'\"\n```\n\n### LLM Provider Keys\n\nStore LLM API keys with standard names for automatic lookup:\n\n```python\n# Python SDK\nclient.secrets.create(\n    name=\"OPENAI_API_KEY\",\n    value=\"sk-...\"\n)\n\n# Node.js SDK\nawait julep.secrets.create({\n  name: 'ANTHROPIC_API_KEY',\n  value: 'sk-ant-...'\n});\n```\n\n## Error Handling\n\nCommon error scenarios when working with secrets:\n\n1. **Secret Not Found**: The referenced secret doesn't exist\n2. **Permission Denied**: No access to the requested secret\n3. **Validation Error**: Secret name doesn't match required format\n4. **Duplicate Name**: Attempting to create a secret with a name that already exists\n\nHandle these consistently across your application:\n\n```python\n# Python SDK\nfrom julep.exceptions import SecretNotFoundError, ValidationError\n\ntry:\n    secret = client.secrets.get(name=\"non_existent_secret\")\nexcept SecretNotFoundError:\n    # Handle missing secret\n    print(\"Secret not found, using default value\")\nexcept ValidationError as e:\n    # Handle validation error\n    print(f\"Invalid secret name: {e}\")\n```\n\n```javascript\n// Node.js SDK\ntry {\n  const secret = await julep.secrets.get({ name: 'non_existent_secret' });\n} catch (error) {\n  if (error.code === 'not_found') {\n    // Handle missing secret\n    console.log('Secret not found, using default value');\n  } else if (error.code === 'validation_error') {\n    // Handle validation error\n    console.log(`Invalid secret name: ${error.message}`);\n  }\n}\n```\n\n## Testing with Secrets\n\nFor testing applications that use secrets:\n\n1. Create a separate set of test secrets with appropriate prefixes\n2. Use mocking in unit tests to avoid requiring real secrets\n3. For integration tests, use dedicated test accounts and credentials\n4. Never use production secrets in test environments\n\nExample of mocking secrets for testing:\n\n```python\n# Python mock example\nimport pytest\nfrom unittest.mock import patch\n\n@pytest.fixture\ndef mock_secrets():\n    return {\n        \"api_key\": \"mock-api-key-123\",\n        \"auth_token\": \"mock-token-456\"\n    }\n\n@patch(\"julep.client.Secrets.get\")\ndef test_with_mock_secrets(mock_get, mock_secrets):\n    mock_get.return_value = mock_secrets\n    # Test code that uses secrets\n```\n\n```javascript\n// JavaScript mock example\njest.mock('@julep/sdk', () => {\n  return {\n    Julep: jest.fn().mockImplementation(() => {\n      return {\n        secrets: {\n          get: jest.fn().mockResolvedValue({\n            name: 'api_key',\n            value: 'mock-api-key-123'\n          })\n        }\n      };\n    })\n  };\n});\n```\n\n## Migrating from Environment Variables\n\nWhen migrating from environment variables to Julep secrets:\n\n1. Create a list of all environment variables used in your application\n2. Create corresponding secrets in Julep with the same names\n3. Update your code to reference Julep secrets instead of environment variables\n4. Validate functionality before removing the original environment variables\n\nMigration script example:\n\n```python [expandable]\nimport os\nfrom julep import Julep\n\nclient = Julep(api_key=\"your_api_key\")\n\n# List of environment variables to migrate\nenv_vars_to_migrate = [\n    \"OPENAI_API_KEY\",\n    \"STRIPE_SECRET_KEY\",\n    \"DATABASE_URL\",\n    \"AUTH_TOKEN\"\n]\n\n# Migrate each environment variable to a Julep secret\nfor env_var in env_vars_to_migrate:\n    value = os.environ.get(env_var)\n    if value:\n        try:\n            client.secrets.create(\n                name=env_var.lower(),  # Convert to snake_case\n                value=value,\n                description=f\"Migrated from environment variable {env_var}\"\n            )\n            print(f\"Successfully migrated {env_var} to Julep secret\")\n        except Exception as e:\n            print(f\"Failed to migrate {env_var}: {e}\")\n    else:\n        print(f\"Environment variable {env_var} not found\")\n```\n\n## Integration with External Secret Managers\n\nFor organizations using external secret managers, you can sync to Julep:\n\n```python [expandable]\n# Example syncing AWS Secrets Manager to Julep\nimport boto3\nfrom julep import Julep\n\n# Initialize clients\njulep_client = Julep(api_key=\"your_api_key\")\naws_client = boto3.client('secretsmanager')\n\n# Get secrets from AWS\nresponse = aws_client.list_secrets()\nfor secret in response['SecretList']:\n    # Get the secret value\n    secret_value = aws_client.get_secret_value(SecretId=secret['ARN'])\n    \n    # Create or update the secret in Julep\n    try:\n        julep_client.secrets.create(\n            name=f\"aws_{secret['Name']}\",\n            value=secret_value['SecretString'],\n            description=f\"Synced from AWS Secrets Manager: {secret['Name']}\",\n            metadata={\n                \"source\": \"aws\",\n                \"arn\": secret['ARN'],\n                \"sync_date\": datetime.now().isoformat()\n            }\n        )\n        print(f\"Synced secret {secret['Name']}\")\n    except Exception:\n        # Secret already exists, update it\n        julep_client.secrets.update(\n            name=f\"aws_{secret['Name']}\",\n            value=secret_value['SecretString'],\n            metadata={\n                \"source\": \"aws\",\n                \"arn\": secret['ARN'],\n                \"sync_date\": datetime.now().isoformat()\n            }\n        )\n        print(f\"Updated secret {secret['Name']}\")\n```\n\n## Security Best Practices\n\n1. Limit who has access to create and manage secrets\n2. Never log secret values, even in debug environments\n3. Rotate secrets regularly, especially for high-value credentials\n4. Use the most specific scope possible for each secret\n5. Audit secret usage and access patterns\n6. Use metadata to track important information about secrets\n7. Implement an encrypted backup strategy for critical secrets\n\n## Next Steps\n\n- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets\n- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets\n- [API Reference](/api-reference#tag/secrets) - Complete API reference for secrets"
  },
  {
    "path": "documentation/sdks/common/testing.mdx",
    "content": "---\ntitle: 'Testing'\ndescription: 'Testing patterns and best practices for Julep SDK implementations'\n---\n\n# Testing\n\nLearn how to effectively test your Julep SDK implementations.\n\n## Unit Testing\n\n### Mocking API Responses\n```python\nfrom unittest.mock import patch\n\ndef test_agent_creation():\n    with patch('julep.Client') as MockClient:\n        mock_client = MockClient()\n        mock_client.agents.create.return_value = {\n            \"id\": \"test_id\",\n            \"name\": \"Test Agent\"\n        }\n        \n        agent = mock_client.agents.create(name=\"Test Agent\")\n        assert agent[\"name\"] == \"Test Agent\"\n```\n\n### Testing Error Handling\n```python\ndef test_api_error_handling():\n    with patch('julep.Client') as MockClient:\n        mock_client = MockClient()\n        mock_client.agents.get.side_effect = julep.APIError(\n            message=\"Not found\",\n            status_code=404\n        )\n        \n        with pytest.raises(julep.APIError):\n            mock_client.agents.get(\"nonexistent_id\")\n```\n\n## Integration Testing\n\n### Test Client Setup\n```python\nimport pytest\n\n@pytest.fixture\ndef test_client():\n    return Client(\n        api_key=\"test_key\",\n        base_url=\"https://test-api.julep.ai\"\n    )\n\ndef test_end_to_end(test_client):\n    agent = test_client.agents.create(name=\"Test Agent\")\n    assert agent.id is not None\n```\n\n## Best Practices\n\n1. Use test fixtures for common setup\n2. Mock external API calls in unit tests\n3. Use integration tests for end-to-end validation\n4. Test error cases and edge conditions\n5. Maintain a comprehensive test suite "
  },
  {
    "path": "documentation/sdks/index.mdx",
    "content": "---\ntitle: 'Introduction'\ndescription: 'Getting started with Julep SDKs for Python and Node.js'\n---\n\nThe Julep SDKs provide powerful interfaces to interact with Julep's AI agent platform. These SDKs allow you to create, manage, and execute AI agents, tasks, and sessions directly from your applications.\n\n## Installation\n\n<CodeGroup>\n```bash Python\n# Install using pip\npip install julep-sdk\n\n# Or using poetry\npoetry add julep-sdk\n```\n\n```bash Node.js\n# Install using npm\nnpm install @julep/sdk\n\n# Or using yarn\nyarn add @julep/sdk\n\n# Or using bun\nbun add @julep/sdk\n```\n</CodeGroup>\n\n## Basic Usage\n\n<CodeGroup>\n```python Python [expandable]\nfrom julep import Julep\n\n# Initialize the client\nclient = Julep(\n    api_key='your_api_key',\n    environment='production'  # or 'development'\n)\n\n# Create an agent\nagent = client.agents.create(\n    name='My First Agent',\n    model='claude-3.5-sonnet',\n    about='A helpful AI assistant'\n)\n\n# Create a task\ntask = client.tasks.create(\n    agent_id=agent.id,\n    name='Simple Task',\n    description='A basic task example',\n    main=[\n        {\n            'prompt': 'Hello! How can I help you today?'\n        }\n    ]\n)\n\n# Execute the task\nexecution = client.executions.create(task_id=task.id)\n```\n\n```javascript Node.js [expandable]\nconst { Julep } = require('@julep/sdk');\n\n// Initialize the client\nconst client = new Julep({\n  apiKey: 'your_api_key',\n  environment: 'production' // or 'development'\n});\n\n// Create an agent\nconst agent = await client.agents.create({\n  name: 'My First Agent',\n  model: 'claude-3.5-sonnet',\n  about: 'A helpful AI assistant'\n});\n\n// Create a task\nconst task = await client.tasks.create(agent.id, {\n  name: 'Simple Task',\n  description: 'A basic task example',\n  main: [\n    {\n      prompt: 'Hello! How can I help you today?'\n    }\n  ]\n});\n\n// Execute the task\nconst execution = await client.executions.create(task.id);\n```\n</CodeGroup>\n\n## Features\n\n- **Comprehensive API Coverage**: Access all Julep platform features\n- **Type Safety**: Built with TypeScript (Node.js) and type hints (Python)\n- **Modern Async Support**: Promise-based interface in Node.js and optional async support in Python\n- **Error Handling**: Detailed error information and handling\n- **Automatic Retries**: Built-in retry mechanism for failed requests\n\n## SDK Documentation\n\n<CardGroup cols={2}>\n  <Card\n    title=\"Python SDK\"\n    icon=\"python\"\n    href=\"/sdks/python/installation\"\n  >\n    Get started with the Python SDK\n  </Card>\n  <Card\n    title=\"Node.js SDK\"\n    icon=\"node-js\"\n    href=\"/sdks/nodejs/installation\"\n  >\n    Get started with the Node.js SDK\n  </Card>\n</CardGroup>\n\n## Core Components\n\n<AccordionGroup>\n  <Accordion title=\"Python SDK\" icon=\"python\" defaultOpen={true}>\n    <CardGroup cols={2}>\n      <Card\n        title=\"Agents\"\n        icon=\"robot\"\n        href=\"/sdks/python/agents\"\n      >\n        Learn how to create and manage AI agents with Python\n      </Card>\n      <Card\n        title=\"Tasks\"\n        icon=\"list-check\"\n        href=\"/sdks/python/tasks\"\n      >\n        Create and execute complex AI workflows in Python\n      </Card>\n      <Card\n        title=\"Sessions\"\n        icon=\"comments\"\n        href=\"/sdks/python/sessions\"\n      >\n        Manage stateful conversations with agents using Python\n      </Card>\n      <Card\n        title=\"Tools & Integration\"\n        icon=\"plug\"\n        href=\"/sdks/python/tools-integration\"\n      >\n        Extend your agents with tools and integrations in Python\n      </Card>\n    </CardGroup>\n  </Accordion>\n\n  <Accordion title=\"Node.js SDK\" icon=\"node-js\">\n    <CardGroup cols={2}>\n      <Card\n        title=\"Agents\"\n        icon=\"robot\"\n        href=\"/sdks/nodejs/agents\"\n      >\n        Learn how to create and manage AI agents with Node.js\n      </Card>\n      <Card\n        title=\"Tasks\"\n        icon=\"list-check\"\n        href=\"/sdks/nodejs/tasks\"\n      >\n        Create and execute complex AI workflows in Node.js\n      </Card>\n      <Card\n        title=\"Sessions\"\n        icon=\"comments\"\n        href=\"/sdks/nodejs/sessions\"\n      >\n        Manage stateful conversations with agents using Node.js\n      </Card>\n      <Card\n        title=\"Tools & Integration\"\n        icon=\"plug\"\n        href=\"/sdks/nodejs/tools-integration\"\n      >\n        Extend your agents with tools and integrations in Node.js\n      </Card>\n    </CardGroup>\n  </Accordion>\n</AccordionGroup>\n\n## Additional Resources\n\n<CardGroup cols={3}>\n  <Card\n    title=\"API Reference\"\n    icon=\"code\"\n    href=\"/api-reference\"\n  >\n    Complete API reference documentation\n  </Card>\n  <Card\n    title=\"Examples\"\n    icon=\"lightbulb\"\n    href=\"/examples\"\n  >\n    Sample code and use cases\n  </Card>\n  <Card\n    title=\"Best Practices\"\n    icon=\"graduation-cap\"\n    href=\"/sdks/common/best-practices\"\n  >\n    Learn advanced patterns and best practices\n  </Card>\n</CardGroup> "
  },
  {
    "path": "documentation/sdks/nodejs/advanced-usage.mdx",
    "content": "---\ntitle: 'Advanced Usage'\ndescription: 'Advanced patterns and best practices for the Node.js SDK'\n---\n\nThis guide covers advanced usage patterns and best practices for the Julep Node.js SDK.\n\n## Parallel Task Execution\n\nExecute multiple tasks in parallel for better performance:\n\n```javascript [expandable]\n// Create multiple tasks\nconst tasks = await Promise.all([\n  client.tasks.create(agentId, {\n    name: 'Task 1',\n    main: [/* ... */]\n  }),\n  client.tasks.create(agentId, {\n    name: 'Task 2',\n    main: [/* ... */]\n  })\n]);\n\n// Execute tasks in parallel\nconst executions = await Promise.all(\n  tasks.map(task => client.executions.create(task.id))\n);\n\n// Wait for all executions to complete\nconst results = await Promise.all(\n  executions.map(async execution => {\n    let status;\n    do {\n      status = await client.executions.get(execution.id);\n      await new Promise(resolve => setTimeout(resolve, 1000));\n    } while (status.status !== 'succeeded' && status.status !== 'failed');\n    return status;\n  })\n);\n```\n\n## Custom Error Handling\n\nImplement robust error handling with retries:\n\n```javascript [expandable]\nclass RetryableError extends Error {\n  constructor(message, retryAfter = 1000) {\n    super(message);\n    this.name = 'RetryableError';\n    this.retryAfter = retryAfter;\n  }\n}\n\nasync function withRetry(fn, maxRetries = 3, initialDelay = 1000) {\n  let lastError;\n  let delay = initialDelay;\n\n  for (let attempt = 0; attempt < maxRetries; attempt++) {\n    try {\n      return await fn();\n    } catch (error) {\n      lastError = error;\n      \n      if (error.name === 'ValidationError') {\n        throw error; // Don't retry validation errors\n      }\n      \n      if (error.status === 429) { // Rate limit\n        delay = error.retryAfter || delay * 2;\n      } else if (error.status >= 500) { // Server error\n        delay = delay * 2;\n      } else {\n        throw error; // Don't retry other errors\n      }\n      \n      await new Promise(resolve => setTimeout(resolve, delay));\n    }\n  }\n  \n  throw lastError;\n}\n\n// Usage example\nconst createAgentWithRetry = async () => {\n  return await withRetry(async () => {\n    return await client.agents.create({\n      name: 'Resilient Agent',\n      model: 'claude-3.5-sonnet'\n    });\n  });\n};\n```\n\n## Event Streaming\n\nHandle real-time updates from task executions:\n\n```javascript [expandable]\nconst { EventEmitter } = require('events');\n\nclass ExecutionStream extends EventEmitter {\n  constructor(client, executionId, pollInterval = 1000) {\n    super();\n    this.client = client;\n    this.executionId = executionId;\n    this.pollInterval = pollInterval;\n    this.isRunning = false;\n  }\n\n  async start() {\n    this.isRunning = true;\n    while (this.isRunning) {\n      try {\n        const status = await this.client.executions.get(this.executionId);\n        this.emit('update', status);\n        \n        if (status.status === 'succeeded' || status.status === 'failed') {\n          this.isRunning = false;\n          this.emit('end', status);\n          break;\n        }\n        \n        await new Promise(resolve => setTimeout(resolve, this.pollInterval));\n      } catch (error) {\n        this.emit('error', error);\n        this.isRunning = false;\n        break;\n      }\n    }\n  }\n\n  stop() {\n    this.isRunning = false;\n  }\n}\n\n// Usage example\nconst stream = new ExecutionStream(client, executionId);\n\nstream.on('update', status => {\n  console.log('Execution status:', status.status);\n});\n\nstream.on('end', status => {\n  console.log('Execution completed:', status);\n});\n\nstream.on('error', error => {\n  console.error('Execution error:', error);\n});\n\nstream.start();\n```\n\n## Batch Processing\n\nProcess large amounts of data efficiently:\n\n```javascript [expandable]\nasync function processBatch(items, batchSize = 10) {\n  const batches = [];\n  for (let i = 0; i < items.length; i += batchSize) {\n    batches.push(items.slice(i, i + batchSize));\n  }\n\n  const results = [];\n  for (const batch of batches) {\n    const batchResults = await Promise.all(\n      batch.map(async item => {\n        try {\n          const execution = await client.executions.create(taskId, {\n            input: { item }\n          });\n          return { item, execution };\n        } catch (error) {\n          return { item, error };\n        }\n      })\n    );\n    results.push(...batchResults);\n    \n    // Optional: Add delay between batches\n    await new Promise(resolve => setTimeout(resolve, 1000));\n  }\n  \n  return results;\n}\n\n// Usage example\nconst items = ['item1', 'item2', 'item3', /* ... */];\nconst results = await processBatch(items, 5);\n```\n\n## Custom Task Middleware\n\nAdd custom middleware to task executions:\n\n```javascript [expandable]\nclass TaskMiddleware {\n  constructor(client) {\n    this.client = client;\n    this.middlewares = [];\n  }\n\n  use(fn) {\n    this.middlewares.push(fn);\n    return this;\n  }\n\n  async execute(taskId, input) {\n    let execution = await this.client.executions.create(taskId, { input });\n    \n    for (const middleware of this.middlewares) {\n      execution = await middleware(execution, this.client);\n    }\n    \n    return execution;\n  }\n}\n\n// Usage example\nconst middleware = new TaskMiddleware(client);\n\n// Add logging middleware\nmiddleware.use(async (execution, client) => {\n  console.log(`Execution ${execution.id} started`);\n  const result = await client.executions.get(execution.id);\n  console.log(`Execution ${execution.id} completed:`, result.status);\n  return result;\n});\n\n// Add error handling middleware\nmiddleware.use(async (execution, client) => {\n  try {\n    return await client.executions.get(execution.id);\n  } catch (error) {\n    console.error(`Execution ${execution.id} failed:`, error);\n    throw error;\n  }\n});\n\n// Execute task with middleware\nconst result = await middleware.execute(taskId, { data: 'test' });\n```\n\n## Advanced Session Management\n\nImplement sophisticated session management:\n\n```javascript [expandable]\nclass SessionManager {\n  constructor(client) {\n    this.client = client;\n    this.sessions = new Map();\n  }\n\n  async getOrCreateSession(userId, agentId) {\n    if (this.sessions.has(userId)) {\n      const session = this.sessions.get(userId);\n      try {\n        await this.client.sessions.get(session.id);\n        return session;\n      } catch (error) {\n        this.sessions.delete(userId);\n      }\n    }\n\n    const session = await this.client.sessions.create({\n      user_id: userId,\n      agent_id: agentId,\n      context_overflow: 'adaptive'\n    });\n    \n    this.sessions.set(userId, session);\n    return session;\n  }\n\n  async chat(userId, message) {\n    const session = await this.getOrCreateSession(userId);\n    return await this.client.sessions.chat(session.id, {\n      messages: [{ role: 'user', content: message }]\n    });\n  }\n\n  async cleanup(maxAge = 24 * 60 * 60 * 1000) {\n    const now = Date.now();\n    for (const [userId, session] of this.sessions) {\n      if (now - new Date(session.created_at).getTime() > maxAge) {\n        await this.client.sessions.delete(session.id);\n        this.sessions.delete(userId);\n      }\n    }\n  }\n}\n\n// Usage example\nconst sessionManager = new SessionManager(client);\n\n// Chat with automatic session management\nconst response = await sessionManager.chat(userId, 'Hello!');\n\n// Cleanup old sessions\nawait sessionManager.cleanup();\n```\n\n## Next Steps\n\n<CardGroup cols={2}>\n  <Card\n    title=\"API Reference\"\n    icon=\"code\"\n    href=\"/api-reference\"\n  >\n    Complete API documentation\n  </Card>\n  <Card\n    title=\"Examples\"\n    icon=\"lightbulb\"\n    href=\"/examples\"\n  >\n    Real-world examples\n  </Card>\n  <Card\n    title=\"Error Handling\"\n    icon=\"shield\"\n    href=\"/sdks/common/error-handling\"\n  >\n    Common error patterns\n  </Card>\n  <Card\n    title=\"Testing\"\n    icon=\"vial\"\n    href=\"/sdks/common/testing\"\n  >\n    Testing strategies\n  </Card>\n</CardGroup> "
  },
  {
    "path": "documentation/sdks/nodejs/agents.mdx",
    "content": "---\ntitle: 'Agents'\ndescription: 'Create and manage AI agents with the Node.js SDK'\n---\n\nAgents are the core building blocks in Julep. They are AI-powered entities that can execute tasks and interact with users through sessions.\n\n## Creating an Agent\n\n```javascript\nconst agent = await client.agents.create({\n  name: 'Customer Support Agent',\n  model: 'claude-3.5-sonnet',\n  about: 'A helpful customer support agent that assists users with their queries',\n  metadata: {\n    department: 'support',\n    language: 'english'\n  }\n});\n```\n\n## Retrieving Agents\n\n```javascript\n// Get a specific agent\nconst agent = await client.agents.get(agentId);\n\n// List all agents\nconst agents = await client.agents.list({\n  limit: 10,\n  offset: 0\n});\n\n// Search agents\nconst searchResults = await client.agents.search({\n  query: 'support',\n  metadata: {\n    department: 'support'\n  }\n});\n```\n\n## Updating Agents\n\n```javascript\nconst updatedAgent = await client.agents.update(agentId, {\n  name: 'Senior Support Agent',\n  metadata: {\n    department: 'support',\n    seniority: 'senior'\n  }\n});\n```\n\n## Deleting Agents\n\n```javascript\nawait client.agents.delete(agentId);\n```\n\n## Managing Agent Documents\n\nAgents can be associated with documents that provide context for their tasks:\n\n```javascript\n// Add a document\nconst document = await client.agents.docs.create(agentId, {\n  title: 'Support Guidelines',\n  content: 'Here are the guidelines for customer support...',\n  metadata: {\n    category: 'guidelines',\n    version: '1.0'\n  }\n});\n\n// Search documents\nconst docs = await client.agents.docs.search(agentId, {\n  query: 'refund policy',\n  metadata: {\n    category: 'policy'\n  }\n});\n\n// Delete a document\nawait client.agents.docs.delete(agentId, documentId);\n```\n\n## Adding Tools to Agents\n\nExtend your agent's capabilities by adding tools:\n\n```javascript [expandable]\n// Add a web search tool\nconst tool = await client.agents.tools.create(agentId, {\n  name: 'web_search',\n  description: 'Search the web for information',\n  integration: {\n    provider: 'brave',\n    method: 'search',\n    setup: {\n      brave_api_key: process.env.BRAVE_API_KEY\n    }\n  }\n});\n\n// Add a custom function tool\nconst customTool = await client.agents.tools.create(agentId, {\n  name: 'calculate_price',\n  description: 'Calculate the final price including tax',\n  type: 'function',\n  function: {\n    parameters: {\n      type: 'object',\n      properties: {\n        base_price: {\n          type: 'number',\n          description: 'Base price before tax'\n        },\n        tax_rate: {\n          type: 'number',\n          description: 'Tax rate as a decimal'\n        }\n      },\n      required: ['base_price', 'tax_rate']\n    }\n  }\n});\n```\n\n## Error Handling\n\nThe SDK uses custom error classes for better error handling:\n\n```javascript\ntry {\n  const agent = await client.agents.create({\n    name: 'Test Agent',\n    model: 'invalid-model'\n  });\n} catch (error) {\n  if (error.name === 'ValidationError') {\n    console.error('Invalid model specified:', error.message);\n  } else if (error.name === 'ApiError') {\n    console.error('API error:', error.message, error.status);\n  } else {\n    console.error('Unexpected error:', error);\n  }\n}\n```\n\n## Next Steps\n\n<CardGroup cols={2}>\n  <Card\n    title=\"Tasks\"\n    icon=\"list-check\"\n    href=\"/sdks/nodejs/tasks\"\n  >\n    Learn how to create and execute tasks\n  </Card>\n  <Card\n    title=\"Sessions\"\n    icon=\"message-bot\"\n    href=\"/sdks/nodejs/sessions\"\n  >\n    Manage agent sessions\n  </Card>\n  <Card\n    title=\"Tools Integration\"\n    icon=\"screwdriver-wrench\"\n    href=\"/sdks/nodejs/tools-integration\"\n  >\n    Add more capabilities to your agents\n  </Card>\n  <Card\n    title=\"Advanced Usage\"\n    icon=\"graduation-cap\"\n    href=\"/sdks/nodejs/advanced-usage\"\n  >\n    Explore advanced patterns\n  </Card>\n</CardGroup> "
  },
  {
    "path": "documentation/sdks/nodejs/installation.mdx",
    "content": "---\ntitle: 'Installation & Setup'\ndescription: 'Get started with the Julep Node.js SDK'\n---\n\n## Installation\n\nThe Julep Node.js SDK can be installed using npm, yarn, or bun:\n\n```bash\n# Using npm\nnpm install @julep/sdk\n\n# Using yarn\nyarn add @julep/sdk\n\n# Using bun\nbun add @julep/sdk\n```\n\n## Configuration\n\nAfter installation, you'll need to configure the SDK with your API key:\n\n```javascript\nconst { Julep } = require('@julep/sdk');\n// Or using ES modules\nimport { Julep } from '@julep/sdk';\n\nconst client = new Julep({\n  apiKey: 'your_api_key',\n  environment: 'production', // or 'development'\n  // Optional configuration\n  timeout: 30000, // Request timeout in milliseconds\n  retries: 3,     // Number of retries for failed requests\n  baseUrl: 'https://api.julep.ai' // Custom API endpoint if needed\n});\n```\n\n## Environment Variables\n\nWe recommend using environment variables to manage your API key securely:\n\n```javascript\n// Load environment variables\nrequire('dotenv').config();\n\nconst client = new Julep({\n  apiKey: process.env.JULEP_API_KEY,\n  environment: process.env.JULEP_ENVIRONMENT || 'production'\n});\n```\n\nExample `.env` file:\n```plaintext\nJULEP_API_KEY=your_api_key_here\nJULEP_ENVIRONMENT=production\n```\n\n## TypeScript Support\n\nThe SDK is written in TypeScript and includes type definitions out of the box. No additional installation is required for TypeScript support.\n\n```typescript\nimport { Julep, Agent, Task, Execution } from '@julep/sdk';\n\nconst client = new Julep({\n  apiKey: process.env.JULEP_API_KEY\n});\n\nasync function createAgent(): Promise<Agent> {\n  return await client.agents.create({\n    name: 'My Agent',\n    model: 'claude-3.5-sonnet',\n    about: 'A helpful AI assistant'\n  });\n}\n```\n\n## Verification\n\nTo verify your installation and configuration, you can run a simple test:\n\n```javascript\nasync function testConnection() {\n  try {\n    const agent = await client.agents.create({\n      name: 'Test Agent',\n      model: 'claude-3.5-sonnet',\n      about: 'Testing the SDK setup'\n    });\n    console.log('Successfully connected to Julep!', agent);\n  } catch (error) {\n    console.error('Connection test failed:', error);\n  }\n}\n\ntestConnection();\n```\n\n## Next Steps\n\n<CardGroup cols={2}>\n  <Card\n    title=\"Agents\"\n    icon=\"robot\"\n    href=\"/sdks/nodejs/agents\"\n  >\n    Learn how to create and manage AI agents\n  </Card>\n  <Card\n    title=\"Tasks\"\n    icon=\"list-check\"\n    href=\"/sdks/nodejs/tasks\"\n  >\n    Create and execute tasks with your agents\n  </Card>\n  <Card\n    title=\"Sessions\"\n    icon=\"message-bot\"\n    href=\"/sdks/nodejs/sessions\"\n  >\n    Manage conversational sessions\n  </Card>\n  <Card\n    title=\"Tools Integration\"\n    icon=\"screwdriver-wrench\"\n    href=\"/sdks/nodejs/tools-integration\"\n  >\n    Add capabilities to your agents\n  </Card>\n</CardGroup> "
  },
  {
    "path": "documentation/sdks/nodejs/reference.mdx",
    "content": "---\ntitle: 'Node.js SDK Reference'\ndescription: 'Complete reference documentation for the Node.js SDK'\n---\n\n# Shared\n\nTypes:\n\n- <code><a href=\"./src/resources/shared.ts\">ResourceCreated</a></code>\n- <code><a href=\"./src/resources/shared.ts\">ResourceDeleted</a></code>\n- <code><a href=\"./src/resources/shared.ts\">ResourceUpdated</a></code>\n\n# Agents\n\nTypes:\n\n- <code><a href=\"./src/resources/agents/agents.ts\">Agent</a></code>\n\nMethods:\n\n- <code title=\"post /agents\">client.agents.<a href=\"./src/resources/agents/agents.ts\">create</a>(\\{ ...params }) -> ResourceCreated</code>\n- <code title=\"patch /agents/{agent_id}\">client.agents.<a href=\"./src/resources/agents/agents.ts\">update</a>(agentId, \\{ ...params }) -> ResourceUpdated</code>\n- <code title=\"get /agents\">client.agents.<a href=\"./src/resources/agents/agents.ts\">list</a>(\\{ ...params }) -> AgentsOffsetPagination</code>\n- <code title=\"delete /agents/{agent_id}\">client.agents.<a href=\"./src/resources/agents/agents.ts\">delete</a>(agentId) -> ResourceDeleted</code>\n- <code title=\"post /agents/{agent_id}\">client.agents.<a href=\"./src/resources/agents/agents.ts\">createOrUpdate</a>(agentId, \\{ ...params }) -> ResourceCreated</code>\n- <code title=\"get /agents/{agent_id}\">client.agents.<a href=\"./src/resources/agents/agents.ts\">get</a>(agentId) -> Agent</code>\n- <code title=\"put /agents/{agent_id}\">client.agents.<a href=\"./src/resources/agents/agents.ts\">reset</a>(agentId, \\{ ...params }) -> ResourceUpdated</code>\n\n## Tools\n\nTypes:\n\n- <code><a href=\"./src/resources/agents/tools.ts\">ToolListResponse</a></code>\n\nMethods:\n\n- <code title=\"post /agents/{agent_id}/tools\">client.agents.tools.<a href=\"./src/resources/agents/tools.ts\">create</a>(agentId, \\{ ...params }) -> ResourceCreated</code>\n- <code title=\"patch /agents/{agent_id}/tools/{tool_id}\">client.agents.tools.<a href=\"./src/resources/agents/tools.ts\">update</a>(agentId, toolId, \\{ ...params }) -> ResourceUpdated</code>\n- <code title=\"get /agents/{agent_id}/tools\">client.agents.tools.<a href=\"./src/resources/agents/tools.ts\">list</a>(agentId, \\{ ...params }) -> ToolListResponsesOffsetPagination</code>\n- <code title=\"delete /agents/{agent_id}/tools/{tool_id}\">client.agents.tools.<a href=\"./src/resources/agents/tools.ts\">delete</a>(agentId, toolId) -> ResourceDeleted</code>\n- <code title=\"put /agents/{agent_id}/tools/{tool_id}\">client.agents.tools.<a href=\"./src/resources/agents/tools.ts\">reset</a>(agentId, toolId, \\{ ...params }) -> ResourceUpdated</code>\n\n## Docs\n\nTypes:\n\n- <code><a href=\"./src/resources/agents/docs.ts\">DocSearchResponse</a></code>\n\nMethods:\n\n- <code title=\"post /agents/{agent_id}/docs\">client.agents.docs.<a href=\"./src/resources/agents/docs.ts\">create</a>(agentId, \\{ ...params }) -> ResourceCreated</code>\n- <code title=\"get /agents/{agent_id}/docs\">client.agents.docs.<a href=\"./src/resources/agents/docs.ts\">list</a>(agentId, \\{ ...params }) -> DocsOffsetPagination</code>\n- <code title=\"delete /agents/{agent_id}/docs/{doc_id}\">client.agents.docs.<a href=\"./src/resources/agents/docs.ts\">delete</a>(agentId, docId) -> ResourceDeleted</code>\n- <code title=\"post /agents/{agent_id}/search\">client.agents.docs.<a href=\"./src/resources/agents/docs.ts\">search</a>(agentId, \\{ ...params }) -> DocSearchResponse</code>\n\n# Files\n\nTypes:\n\n- <code><a href=\"./src/resources/files.ts\">File</a></code>\n\nMethods:\n\n- <code title=\"post /files\">client.files.<a href=\"./src/resources/files.ts\">create</a>(\\{ ...params }) -> ResourceCreated</code>\n- <code title=\"delete /files/{file_id}\">client.files.<a href=\"./src/resources/files.ts\">delete</a>(fileId) -> ResourceDeleted</code>\n- <code title=\"get /files/{file_id}\">client.files.<a href=\"./src/resources/files.ts\">get</a>(fileId) -> File</code>\n\n# Sessions\n\nTypes:\n\n- <code><a href=\"./src/resources/sessions.ts\">ChatInput</a></code>\n- <code><a href=\"./src/resources/sessions.ts\">ChatResponse</a></code>\n- <code><a href=\"./src/resources/sessions.ts\">ChatSettings</a></code>\n- <code><a href=\"./src/resources/sessions.ts\">Entry</a></code>\n- <code><a href=\"./src/resources/sessions.ts\">History</a></code>\n- <code><a href=\"./src/resources/sessions.ts\">Message</a></code>\n- <code><a href=\"./src/resources/sessions.ts\">Session</a></code>\n- <code><a href=\"./src/resources/sessions.ts\">SessionChatResponse</a></code>\n\nMethods:\n\n- <code title=\"post /sessions\">client.sessions.<a href=\"./src/resources/sessions.ts\">create</a>(\\{ ...params }) -> ResourceCreated</code>\n- <code title=\"patch /sessions/{session_id}\">client.sessions.<a href=\"./src/resources/sessions.ts\">update</a>(sessionId, \\{ ...params }) -> ResourceUpdated</code>\n- <code title=\"get /sessions\">client.sessions.<a href=\"./src/resources/sessions.ts\">list</a>(\\{ ...params }) -> SessionsOffsetPagination</code>\n- <code title=\"delete /sessions/{session_id}\">client.sessions.<a href=\"./src/resources/sessions.ts\">delete</a>(sessionId) -> ResourceDeleted</code>\n- <code title=\"post /sessions/{session_id}/chat\">client.sessions.<a href=\"./src/resources/sessions.ts\">chat</a>(sessionId, \\{ ...params }) -> SessionChatResponse</code>\n- <code title=\"post /sessions/{session_id}\">client.sessions.<a href=\"./src/resources/sessions.ts\">createOrUpdate</a>(sessionId, \\{ ...params }) -> ResourceUpdated</code>\n- <code title=\"get /sessions/{session_id}\">client.sessions.<a href=\"./src/resources/sessions.ts\">get</a>(sessionId) -> Session</code>\n- <code title=\"get /sessions/{session_id}/history\">client.sessions.<a href=\"./src/resources/sessions.ts\">history</a>(sessionId) -> History</code>\n- <code title=\"put /sessions/{session_id}\">client.sessions.<a href=\"./src/resources/sessions.ts\">reset</a>(sessionId, \\{ ...params }) -> ResourceUpdated</code>\n\n# Users\n\nTypes:\n\n- <code><a href=\"./src/resources/users/users.ts\">User</a></code>\n\nMethods:\n\n- <code title=\"post /users\">client.users.<a href=\"./src/resources/users/users.ts\">create</a>(\\{ ...params }) -> ResourceCreated</code>\n- <code title=\"patch /users/{user_id}\">client.users.<a href=\"./src/resources/users/users.ts\">update</a>(userId, \\{ ...params }) -> ResourceUpdated</code>\n- <code title=\"get /users\">client.users.<a href=\"./src/resources/users/users.ts\">list</a>(\\{ ...params }) -> UsersOffsetPagination</code>\n- <code title=\"delete /users/{user_id}\">client.users.<a href=\"./src/resources/users/users.ts\">delete</a>(userId) -> ResourceDeleted</code>\n- <code title=\"post /users/{user_id}\">client.users.<a href=\"./src/resources/users/users.ts\">createOrUpdate</a>(userId, \\{ ...params }) -> ResourceCreated</code>\n- <code title=\"get /users/{user_id}\">client.users.<a href=\"./src/resources/users/users.ts\">get</a>(userId) -> User</code>\n- <code title=\"put /users/{user_id}\">client.users.<a href=\"./src/resources/users/users.ts\">reset</a>(userId, \\{ ...params }) -> ResourceUpdated</code>\n\n## Docs\n\nTypes:\n\n- <code><a href=\"./src/resources/users/docs.ts\">DocSearchResponse</a></code>\n\nMethods:\n\n- <code title=\"post /users/{user_id}/docs\">client.users.docs.<a href=\"./src/resources/users/docs.ts\">create</a>(userId, \\{ ...params }) -> ResourceCreated</code>\n- <code title=\"get /users/{user_id}/docs\">client.users.docs.<a href=\"./src/resources/users/docs.ts\">list</a>(userId, \\{ ...params }) -> DocsOffsetPagination</code>\n- <code title=\"delete /users/{user_id}/docs/{doc_id}\">client.users.docs.<a href=\"./src/resources/users/docs.ts\">delete</a>(userId, docId) -> ResourceDeleted</code>\n- <code title=\"post /users/{user_id}/search\">client.users.docs.<a href=\"./src/resources/users/docs.ts\">search</a>(userId, \\{ ...params }) -> DocSearchResponse</code>\n\n# Jobs\n\nTypes:\n\n- <code><a href=\"./src/resources/jobs.ts\">JobStatus</a></code>\n\nMethods:\n\n- <code title=\"get /jobs/{job_id}\">client.jobs.<a href=\"./src/resources/jobs.ts\">get</a>(jobId) -> JobStatus</code>\n\n# Docs\n\nTypes:\n\n- <code><a href=\"./src/resources/docs.ts\">Doc</a></code>\n- <code><a href=\"./src/resources/docs.ts\">EmbedQueryResponse</a></code>\n- <code><a href=\"./src/resources/docs.ts\">Snippet</a></code>\n\nMethods:\n\n- <code title=\"post /embed\">client.docs.<a href=\"./src/resources/docs.ts\">embed</a>(\\{ ...params }) -> EmbedQueryResponse</code>\n- <code title=\"get /docs/{doc_id}\">client.docs.<a href=\"./src/resources/docs.ts\">get</a>(docId) -> Doc</code>\n\n# Tasks\n\nTypes:\n\n- <code><a href=\"./src/resources/tasks.ts\">Task</a></code>\n\nMethods:\n\n- <code title=\"post /agents/{agent_id}/tasks\">client.tasks.<a href=\"./src/resources/tasks.ts\">create</a>(agentId, \\{ ...params }) -> ResourceCreated</code>\n- <code title=\"get /agents/{agent_id}/tasks\">client.tasks.<a href=\"./src/resources/tasks.ts\">list</a>(agentId, \\{ ...params }) -> TasksOffsetPagination</code>\n- <code title=\"post /agents/{agent_id}/tasks/{task_id}\">client.tasks.<a href=\"./src/resources/tasks.ts\">createOrUpdate</a>(agentId, taskId, \\{ ...params }) -> ResourceUpdated</code>\n- <code title=\"get /tasks/{task_id}\">client.tasks.<a href=\"./src/resources/tasks.ts\">get</a>(taskId) -> Task</code>\n\n# Executions\n\nTypes:\n\n- <code><a href=\"./src/resources/executions/executions.ts\">Execution</a></code>\n- <code><a href=\"./src/resources/executions/executions.ts\">Transition</a></code>\n- <code><a href=\"./src/resources/executions/executions.ts\">ExecutionChangeStatusResponse</a></code>\n\nMethods:\n\n- <code title=\"post /tasks/{task_id}/executions\">client.executions.<a href=\"./src/resources/executions/executions.ts\">create</a>(taskId, \\{ ...params }) -> ResourceCreated</code>\n- <code title=\"get /tasks/{task_id}/executions\">client.executions.<a href=\"./src/resources/executions/executions.ts\">list</a>(taskId, \\{ ...params }) -> ExecutionsOffsetPagination</code>\n- <code title=\"put /executions/{execution_id}\">client.executions.<a href=\"./src/resources/executions/executions.ts\">changeStatus</a>(executionId, \\{ ...params }) -> unknown</code>\n- <code title=\"get /executions/{execution_id}\">client.executions.<a href=\"./src/resources/executions/executions.ts\">get</a>(executionId) -> Execution</code>\n\n## Transitions\n\nTypes:\n\n- <code><a href=\"./src/resources/executions/transitions.ts\">TransitionStreamResponse</a></code>\n\nMethods:\n\n- <code title=\"get /executions/{execution_id}/transitions\">client.executions.transitions.<a href=\"./src/resources/executions/transitions.ts\">list</a>(executionId, \\{ ...params }) -> TransitionsOffsetPagination</code>\n- <code title=\"get /executions/{execution_id}/transitions.stream\">client.executions.transitions.<a href=\"./src/resources/executions/transitions.ts\">stream</a>(executionId, \\{ ...params }) -> unknown</code> */} */}\n"
  },
  {
    "path": "documentation/sdks/nodejs/secrets.mdx",
    "content": "---\ntitle: 'Managing Secrets with Node.js SDK'\ndescription: 'How to manage secrets using the Julep Node.js SDK'\n---\n\n# Managing Secrets with Node.js SDK\n\nThis guide covers how to manage secrets using the Julep Node.js SDK. Secrets allow you to securely store and use sensitive information like API keys, passwords, and access tokens in your Julep applications.\n\n## Installation\n\nEnsure you have the latest version of the Node.js SDK:\n\n```bash\nnpm install @julep/sdk\n# or\nyarn add @julep/sdk\n```\n\n## Authentication\n\nInitialize the client with your API key:\n\n```javascript\nimport { Julep } from '@julep/sdk';\n\nconst julep = new Julep({ apiKey: 'your_api_key' });\n```\n\n## Creating Secrets\n\nCreate a new secret:\n\n```javascript\nconst secret = await julep.secrets.create({\n  name: 'stripe_api_key',\n  value: 'sk_test_...',\n  description: 'Stripe API key for payment processing',\n  metadata: { environment: 'production', owner: 'payments-team' }\n});\n\nconsole.log(`Created secret: ${secret.name}`);\n```\n\n### Required Parameters\n\n- `name`: The name of the secret (must be a valid identifier)\n- `value`: The secret value to encrypt and store\n\n### Optional Parameters\n\n- `description`: A description of what the secret is used for\n- `metadata`: An object of metadata to associate with the secret\n\n## Listing Secrets\n\nList all available secrets:\n\n```javascript\n// List all secrets\nconst secrets = await julep.secrets.list();\nsecrets.items.forEach(secret => {\n  console.log(`${secret.name}: ${secret.description}`);\n});\n```\n\n### Pagination\n\nUse pagination to handle large numbers of secrets:\n\n```javascript\n// List with pagination\nconst secretsPage1 = await julep.secrets.list({ limit: 10, offset: 0 });\nconst secretsPage2 = await julep.secrets.list({ limit: 10, offset: 10 });\n```\n\n### Filtering by Metadata\n\nFilter secrets based on metadata:\n\n```javascript\n// Filter by metadata\nconst productionSecrets = await julep.secrets.list({\n  metadata: { environment: 'production' }\n});\n\n// Filter by multiple metadata fields\nconst teamSecrets = await julep.secrets.list({\n  metadata: { \n    environment: 'production',\n    owner: 'payments-team'\n  }\n});\n```\n\n## Retrieving Secrets\n\nGet a specific secret by name:\n\n```javascript\nconst secret = await julep.secrets.get({ name: 'stripe_api_key' });\nconsole.log(`Secret: ${secret.name}, Created: ${secret.createdAt}`);\n\n// Access the secret value\nconsole.log(`Secret value: ${secret.value}`);\n```\n\n> **Note**: For security, when listing secrets, the `.value` field will always show \"ENCRYPTED\". The actual secret value is only returned when specifically requesting a single secret by name.\n\n## Updating Secrets\n\nUpdate an existing secret:\n\n```javascript\nconst updatedSecret = await julep.secrets.update({\n  name: 'stripe_api_key',\n  value: 'sk_test_new_value...',\n  description: 'Updated Stripe API key',\n  metadata: { \n    environment: 'production', \n    owner: 'payments-team', \n    rotated: '2025-05-10' \n  }\n});\n\nconsole.log(`Updated secret: ${updatedSecret.name}`);\n```\n\n### Partial Updates\n\nYou can update specific fields without changing others:\n\n```javascript\n// Update only the description\nconst updatedSecret = await julep.secrets.update({\n  name: 'stripe_api_key',\n  description: 'New description for Stripe API key'\n});\n\n// Update only the metadata\nconst updatedMetadata = await julep.secrets.update({\n  name: 'stripe_api_key',\n  metadata: { lastRotated: '2025-05-10' }\n});\n```\n\n## Deleting Secrets\n\nDelete a secret when it's no longer needed:\n\n```javascript\nawait julep.secrets.delete({ name: 'stripe_api_key' });\nconsole.log('Secret deleted');\n```\n\n## Using Secrets in Tasks\n\nReference secrets when executing tasks:\n\n```javascript [expandable]\nimport { Julep } from '@julep/sdk';\n\nconst julep = new Julep({ apiKey: 'your_api_key' });\n\n// Define a task that uses a secret\nconst taskDefinition = {\n  steps: [\n    {\n      kind: 'tool_call',\n      tool: 'openai',\n      operation: 'chat',\n      arguments: {\n        model: 'gpt-4',\n        messages: [\n          { role: 'user', content: 'What\\'s the weather like?' }\n        ]\n      },\n      secret_name: 'openai_api_key'\n    }\n  ]\n};\n\n// Create and execute the task\nconst task = await julep.tasks.create({ task: taskDefinition });\nconst execution = await julep.tasks.execute({ taskId: task.id });\n```\n\n### Using Secrets in Expressions\n\nYou can reference secrets in expressions:\n\n```javascript\nconst taskDefinition = {\n  steps: [\n    {\n      kind: 'transform',\n      expression: \"$ f'https://api.example.com/v1?api_key={secrets.api_key}&query={input}'\",\n      input: 'search query',\n      output: 'api_url'\n    }\n  ]\n};\n```\n\n### Using Multiple Secrets\n\nFor tools that require multiple secrets:\n\n```javascript\nconst taskDefinition = {\n  steps: [\n    {\n      kind: 'tool_call',\n      tool: 'database',\n      operation: 'query',\n      arguments: {\n        query: 'SELECT * FROM users',\n        connection: {\n          host: '$ secrets.db_host',\n          user: '$ secrets.db_username',\n          password: '$ secrets.db_password',\n          database: '$ secrets.db_name'\n        }\n      }\n    }\n  ]\n};\n```\n\n## Error Handling\n\nHandle common errors when working with secrets:\n\n```javascript [expandable]\ntry {\n  const secret = await julep.secrets.get({ name: 'non_existent_secret' });\n} catch (error) {\n  if (error.code === 'not_found') {\n    console.log('Secret not found');\n  } else {\n    console.error('Error retrieving secret:', error);\n  }\n}\n\ntry {\n  // Attempt to create a secret with an invalid name\n  const secret = await julep.secrets.create({ name: 'invalid name', value: 'test' });\n} catch (error) {\n  if (error.code === 'validation_error') {\n    console.log(`Validation error: ${error.message}`);\n  } else {\n    console.error('Error creating secret:', error);\n  }\n}\n\ntry {\n  // Attempt to create a duplicate secret\n  const secret = await julep.secrets.create({ name: 'existing_secret', value: 'test' });\n} catch (error) {\n  if (error.code === 'conflict') {\n    console.log('Secret already exists');\n  } else {\n    console.error('Error creating secret:', error);\n  }\n}\n```\n\n## Secret Rotation Example\n\nImplement a secret rotation policy:\n\n```javascript [expandable]\nimport { v4 as uuidv4 } from 'uuid';\n\n/**\n * Safely rotate a secret by creating a new one and verifying it works\n * before deleting the old one.\n */\nasync function rotateSecret(julep, secretName, newValue) {\n  // Create a temporary secret with a random suffix\n  const tempName = `${secretName}_rotation_${uuidv4().substring(0, 8)}`;\n  \n  // Create the new secret\n  await julep.secrets.create({\n    name: tempName,\n    value: newValue,\n    description: `Temporary rotation for ${secretName}`,\n    metadata: { rotationDate: new Date().toISOString() }\n  });\n  \n  // Here you would test that the new secret works\n  // ...\n  \n  // If tests pass, update metadata on the old secret\n  const oldSecret = await julep.secrets.get({ name: secretName });\n  const oldMetadata = oldSecret.metadata || {};\n  \n  await julep.secrets.update({\n    name: secretName,\n    metadata: {\n      ...oldMetadata,\n      archived: 'true',\n      replacedBy: tempName,\n      archivedDate: new Date().toISOString()\n    }\n  });\n  \n  // Rename the temporary secret to the standard name\n  await julep.secrets.delete({ name: secretName });\n  await julep.secrets.update({\n    name: tempName,\n    newName: secretName,\n    description: oldSecret.description,\n    metadata: { lastRotated: new Date().toISOString() }\n  });\n  \n  return await julep.secrets.get({ name: secretName });\n}\n\n// Example usage\nasync function rotateStripeKey() {\n  const newKey = 'sk_test_new_value_after_rotation';\n  try {\n    const rotatedSecret = await rotateSecret(julep, 'stripe_api_key', newKey);\n    console.log(`Rotated secret: ${rotatedSecret.name}`);\n  } catch (error) {\n    console.error('Error rotating secret:', error);\n  }\n}\n```\n\n## Working with Async/Await\n\nAll methods in the Node.js SDK return Promises, making them compatible with async/await:\n\n```javascript [expandable]\nasync function manageSecrets() {\n  try {\n    // Create a secret\n    const secret = await julep.secrets.create({\n      name: 'database_password',\n      value: 'complex-password-123',\n      description: 'Production database password'\n    });\n    \n    // List all secrets\n    const secrets = await julep.secrets.list();\n    \n    // Create task using the secret\n    const task = await julep.tasks.create({\n      steps: [\n        {\n          kind: 'tool_call',\n          tool: 'database',\n          operation: 'query',\n          secret_name: 'database_password'\n        }\n      ]\n    });\n    \n    return { secret, secrets, task };\n  } catch (error) {\n    console.error('Error managing secrets:', error);\n    throw error;\n  }\n}\n```\n\n## Best Practices\n\n1. Use a consistent naming convention for all secrets\n2. Add detailed descriptions and metadata to make secrets discoverable\n3. Implement a rotation policy for sensitive secrets\n4. Log secret operations (creation, updates, deletions) but never log values\n5. Use try/catch blocks to handle potential errors gracefully\n6. Consider automating secret rotation for important credentials\n7. Use metadata to track important dates and ownership information\n\n## Next Steps\n\n- [Common Secrets Patterns](/sdks/common/secrets) - Patterns that work across all SDKs\n- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets\n- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets"
  },
  {
    "path": "documentation/sdks/nodejs/sessions.mdx",
    "content": "---\ntitle: 'Sessions'\ndescription: 'Manage conversational sessions with the Node.js SDK'\n---\n\nSessions in Julep enable persistent, stateful interactions between users and agents. They maintain context across multiple exchanges and can be used to build conversational interfaces.\n\n## Creating Sessions\n\n```javascript\n// Create a new session\nconst session = await client.sessions.create({\n  agent_id: agentId,\n  user_id: userId, // Optional\n  metadata: {\n    channel: 'web',\n    language: 'english'\n  },\n  context_overflow: 'adaptive' // or 'truncate' or 'summarize'\n});\n```\n\n## Session Chat\n\n```javascript\n// Send a message and get a response\nconst response = await client.sessions.chat(sessionId, {\n  messages: [\n    {\n      role: 'user',\n      content: 'Hello! Can you help me with my order?'\n    }\n  ]\n});\n\n// Continue the conversation in the same session\nconst followUp = await client.sessions.chat(sessionId, {\n  messages: [\n    {\n      role: 'user',\n      content: 'I need to change my shipping address.'\n    }\n  ]\n});\n```\n\n## Managing Context\n\nSessions automatically maintain context, but you can also manage it manually:\n\n```javascript\n// Add context to the session\nawait client.sessions.update(sessionId, {\n  metadata: {\n    order_id: '12345',\n    customer_tier: 'premium'\n  }\n});\n\n// Get session history\nconst history = await client.sessions.history(sessionId, {\n  limit: 10,\n  offset: 0\n});\n```\n\n## Session Tools\n\nTools can be added specifically for a session:\n\n```javascript\n// Add a session-specific tool\nawait client.sessions.tools.create(sessionId, {\n  name: 'check_order_status',\n  description: 'Check the status of an order',\n  type: 'function',\n  function: {\n    parameters: {\n      type: 'object',\n      properties: {\n        order_id: {\n          type: 'string',\n          description: 'The order ID to check'\n        }\n      },\n      required: ['order_id']\n    }\n  }\n});\n```\n\n## Session Documents\n\nAdd relevant documents to the session for context:\n\n```javascript\n// Add a document to the session\nconst document = await client.sessions.docs.create(sessionId, {\n  title: 'Order Details',\n  content: 'Order #12345: 2 items, shipping to...',\n  metadata: {\n    order_id: '12345',\n    type: 'order_details'\n  }\n});\n\n// Search session documents\nconst docs = await client.sessions.docs.search(sessionId, {\n  query: 'shipping policy',\n  metadata: {\n    type: 'policy'\n  }\n});\n```\n\n## Managing Sessions\n\n```javascript\n// Get a specific session\nconst session = await client.sessions.get(sessionId);\n\n// List all sessions\nconst sessions = await client.sessions.list({\n  limit: 10,\n  offset: 0,\n  agent_id: agentId // Optional filter\n});\n\n// Update a session\nconst updatedSession = await client.sessions.update(sessionId, {\n  metadata: {\n    status: 'resolved'\n  }\n});\n\n// Delete a session\nawait client.sessions.delete(sessionId);\n```\n\n## Error Handling\n\n```javascript\ntry {\n  const response = await client.sessions.chat(sessionId, {\n    messages: [\n      {\n        role: 'user',\n        content: 'Hello!'\n      }\n    ]\n  });\n} catch (error) {\n  if (error.name === 'SessionError') {\n    console.error('Session error:', error.message);\n  } else if (error.name === 'ApiError') {\n    console.error('API error:', error.message, error.status);\n  } else {\n    console.error('Unexpected error:', error);\n  }\n}\n```\n\n## Context Overflow Strategies\n\nJulep provides different strategies for handling context overflow:\n\n```javascript\n// Adaptive strategy (default)\nconst adaptiveSession = await client.sessions.create({\n  agent_id: agentId,\n  context_overflow: 'adaptive'\n});\n\n// Truncate strategy\nconst truncateSession = await client.sessions.create({\n  agent_id: agentId,\n  context_overflow: 'truncate'\n});\n\n// Summarize strategy\nconst summarizeSession = await client.sessions.create({\n  agent_id: agentId,\n  context_overflow: 'summarize'\n});\n```\n\n## Next Steps\n\n<CardGroup cols={2}>\n  <Card\n    title=\"Tools Integration\"\n    icon=\"screwdriver-wrench\"\n    href=\"/sdks/nodejs/tools-integration\"\n  >\n    Add tools to your sessions\n  </Card>\n  <Card\n    title=\"Advanced Usage\"\n    icon=\"graduation-cap\"\n    href=\"/sdks/nodejs/advanced-usage\"\n  >\n    Explore advanced patterns\n  </Card>\n  <Card\n    title=\"API Reference\"\n    icon=\"code\"\n    href=\"/api-reference\"\n  >\n    View the complete API reference\n  </Card>\n  <Card\n    title=\"Examples\"\n    icon=\"lightbulb\"\n    href=\"/examples\"\n  >\n    See real-world examples\n  </Card>\n</CardGroup> "
  },
  {
    "path": "documentation/sdks/nodejs/tasks.mdx",
    "content": "---\ntitle: 'Tasks'\ndescription: 'Create and manage tasks with the Node.js SDK'\n---\n\nTasks are multi-step workflows that agents can execute. They can include prompts, tool calls, conditional logic, and more.\n\n## Creating Tasks\n\nTasks can be created using either YAML or JavaScript objects:\n\n```javascript [expandable]\n// Using a JavaScript object\nconst task = await client.tasks.create(agentId, {\n  name: 'Customer Support Task',\n  description: 'Handle customer support requests',\n  main: [\n    {\n      prompt: [\n        {\n          role: 'system',\n          content: 'You are a helpful customer support agent.'\n        },\n        {\n          role: 'user',\n          content: '{{_.user_query}}'\n        }\n      ]\n    },\n    {\n      tool: 'web_search',\n      arguments: {\n        query: '{{_.user_query}}'\n      }\n    }\n  ]\n});\n\n// Using YAML\nconst taskYaml = `\nname: Customer Support Task\ndescription: Handle customer support requests\nmain:\n  - prompt:\n      - role: system\n        content: You are a helpful customer support agent.\n      - role: user\n        content: \"{{_.user_query}}\"\n  - tool: web_search\n    arguments:\n      query: \"{{_.user_query}}\"\n`;\n\nconst task = await client.tasks.create(agentId, yaml.parse(taskYaml));\n```\n\n## Task Steps\n\nTasks can include various types of steps:\n\n```javascript [expandable]\nconst task = await client.tasks.create(agentId, {\n  name: 'Complex Task',\n  description: 'A task with multiple step types',\n  main: [\n    // Prompt step\n    {\n      prompt: 'Analyze the following data: {{_.data}}'\n    },\n\n    // Tool call step\n    {\n      tool: 'web_search',\n      arguments: {\n        query: '{{_.search_query}}'\n      }\n    },\n\n    // Evaluate step\n    {\n      evaluate: {\n        average_score: 'sum(_.scores) / len(_.scores)'\n      }\n    },\n\n    // Conditional step\n    {\n      if: '_.score > 0.8',\n      then: [\n        { log: 'High score achieved' }\n      ],\n      else: [\n        { error: 'Score too low' }\n      ]\n    },\n\n    // Iteration step\n    {\n      foreach: {\n        in: '_.items',\n        do: [\n          { log: 'Processing item {{_}}' }\n        ]\n      }\n    },\n\n    // Parallel execution\n    {\n      parallel: [\n        {\n          tool: 'web_search',\n          arguments: { query: 'query1' }\n        },\n        {\n          tool: 'web_search',\n          arguments: { query: 'query2' }\n        }\n      ]\n    }\n  ]\n});\n```\n\n## Executing Tasks\n\n```javascript\n// Execute a task\nconst execution = await client.executions.create(taskId, {\n  input: {\n    user_query: 'How do I reset my password?'\n  }\n});\n\n// Get execution status\nconst status = await client.executions.get(execution.id);\n\n// Wait for execution to complete\nwhile (status.status !== 'succeeded' && status.status !== 'failed') {\n  await new Promise(resolve => setTimeout(resolve, 1000));\n  const updatedStatus = await client.executions.get(execution.id);\n  console.log('Execution status:', updatedStatus.status);\n}\n```\n\n## Managing Tasks\n\n```javascript\n// Get a specific task\nconst task = await client.tasks.get(taskId);\n\n// List all tasks\nconst tasks = await client.tasks.list({\n  limit: 10,\n  offset: 0\n});\n\n// Update a task\nconst updatedTask = await client.tasks.update(taskId, {\n  description: 'Updated task description'\n});\n\n// Delete a task\nawait client.tasks.delete(taskId);\n```\n\n## Error Handling\n\n```javascript\ntry {\n  const execution = await client.executions.create(taskId, {\n    input: {\n      user_query: 'How do I reset my password?'\n    }\n  });\n} catch (error) {\n  if (error.name === 'ValidationError') {\n    console.error('Invalid task configuration:', error.message);\n  } else if (error.name === 'ExecutionError') {\n    console.error('Execution failed:', error.message);\n  } else {\n    console.error('Unexpected error:', error);\n  }\n}\n```\n\n## Next Steps\n\n<CardGroup cols={2}>\n  <Card\n    title=\"Sessions\"\n    icon=\"message-bot\"\n    href=\"/sdks/nodejs/sessions\"\n  >\n    Learn about session management\n  </Card>\n  <Card\n    title=\"Tools Integration\"\n    icon=\"screwdriver-wrench\"\n    href=\"/sdks/nodejs/tools-integration\"\n  >\n    Add tools to your tasks\n  </Card>\n  <Card\n    title=\"Advanced Usage\"\n    icon=\"graduation-cap\"\n    href=\"/sdks/nodejs/advanced-usage\"\n  >\n    Explore advanced patterns\n  </Card>\n  <Card\n    title=\"API Reference\"\n    icon=\"code\"\n    href=\"/api-reference\"\n  >\n    View the complete API reference\n  </Card>\n</CardGroup> "
  },
  {
    "path": "documentation/sdks/nodejs/tools-integration.mdx",
    "content": "---\ntitle: 'Tools Integration'\ndescription: 'Add powerful capabilities to your agents with tools'\n---\n\nTools in Julep extend your agents' capabilities by allowing them to interact with external services and perform specific functions. There are several types of tools available:\n\n## Tool Types\n\n1. **User-defined Functions**: Custom functions that you implement\n2. **System Tools**: Built-in tools for interacting with Julep's APIs\n3. **Integrations**: Pre-built integrations with third-party services\n4. **Direct API Calls**: Make HTTP requests to external APIs\n\n## User-defined Functions\n\nCreate custom tools that your agents can use:\n\n```javascript [expandable]\n// Create a custom function tool\nconst tool = await client.agents.tools.create(agentId, {\n  name: 'calculate_discount',\n  description: 'Calculate the final price after applying a discount',\n  type: 'function',\n  function: {\n    parameters: {\n      type: 'object',\n      properties: {\n        original_price: {\n          type: 'number',\n          description: 'Original price before discount'\n        },\n        discount_percentage: {\n          type: 'number',\n          description: 'Discount percentage (0-100)'\n        }\n      },\n      required: ['original_price', 'discount_percentage']\n    }\n  }\n});\n```\n\n## System Tools\n\nUse built-in tools to interact with Julep's APIs:\n\n```javascript\n// Add a system tool for listing agents\nconst systemTool = await client.agents.tools.create(agentId, {\n  name: 'list_agent_docs',\n  description: 'List all documents for the given agent',\n  type: 'system',\n  system: {\n    resource: 'agent',\n    subresource: 'doc',\n    operation: 'list'\n  }\n});\n```\n\n## Built-in Integrations\n\nJulep provides several pre-built integrations:\n\n### Brave Search Integration\n\n```javascript\n// Add Brave Search integration\nconst braveSearch = await client.agents.tools.create(agentId, {\n  name: 'web_search',\n  description: 'Search the web for information',\n  integration: {\n    provider: 'brave',\n    method: 'search',\n    setup: {\n      brave_api_key: process.env.BRAVE_API_KEY\n    }\n  }\n});\n```\n\n### Email Integration\n\n```javascript\n// Add email integration\nconst emailTool = await client.agents.tools.create(agentId, {\n  name: 'send_email',\n  description: 'Send an email',\n  integration: {\n    provider: 'email',\n    setup: {\n      host: 'smtp.example.com',\n      port: 587,\n      user: process.env.EMAIL_USER,\n      password: process.env.EMAIL_PASSWORD\n    }\n  }\n});\n```\n\n### Weather Integration\n\n```javascript\n// Add weather integration\nconst weatherTool = await client.agents.tools.create(agentId, {\n  name: 'check_weather',\n  description: 'Get weather information',\n  integration: {\n    provider: 'weather',\n    setup: {\n      openweathermap_api_key: process.env.OPENWEATHER_API_KEY\n    }\n  }\n});\n```\n\n### Wikipedia Integration\n\n```javascript\n// Add Wikipedia integration\nconst wikiTool = await client.agents.tools.create(agentId, {\n  name: 'wiki_search',\n  description: 'Search Wikipedia articles',\n  integration: {\n    provider: 'wikipedia'\n  }\n});\n```\n\n## Direct API Calls\n\nMake direct HTTP requests to external APIs:\n\n```javascript\n// Add a direct API call tool with params_schema\nconst apiTool = await client.agents.tools.create(agentId, {\n  name: 'github_stars',\n  description: 'Get GitHub repository stars',\n  type: 'api_call',\n  api_call: {\n    method: 'GET',\n    url: 'https://api.github.com/repos/{{owner}}/{{repo}}',\n    headers: {\n      Authorization: 'Bearer {{github_token}}'\n    },\n    params_schema: {\n      type: 'object',\n      properties: {\n        owner: {\n          type: 'string',\n          description: 'Repository owner (username or organization)'\n        },\n        repo: {\n          type: 'string',\n          description: 'Repository name'\n        }\n      },\n      required: ['owner', 'repo']\n    }\n  }\n});\n```\n\n## Using Tools in Tasks\n\nOnce tools are added to an agent, they can be used in tasks:\n\n```javascript [expandable]\nconst task = await client.tasks.create(agentId, {\n  name: 'Research Task',\n  description: 'Research a topic using multiple tools',\n  main: [\n    // Use web search\n    {\n      tool: 'web_search',\n      arguments: {\n        query: '{{_.topic}}'\n      }\n    },\n    \n    // Use Wikipedia\n    {\n      tool: 'wiki_search',\n      arguments: {\n        query: '{{_.topic}}'\n      }\n    },\n    \n    // Send results via email\n    {\n      tool: 'send_email',\n      arguments: {\n        to: '{{_.email}}',\n        subject: 'Research Results: {{_.topic}}',\n        body: '{{_.results}}'\n      }\n    }\n  ]\n});\n```\n\n## Tool Management\n\n```javascript\n// List tools for an agent\nconst tools = await client.agents.tools.list(agentId);\n\n// Get a specific tool\nconst tool = await client.agents.tools.get(agentId, toolId);\n\n// Update a tool\nconst updatedTool = await client.agents.tools.update(agentId, toolId, {\n  description: 'Updated tool description'\n});\n\n// Delete a tool\nawait client.agents.tools.delete(agentId, toolId);\n```\n\n## Error Handling\n\n```javascript\ntry {\n  const tool = await client.agents.tools.create(agentId, {\n    name: 'web_search',\n    integration: {\n      provider: 'brave',\n      setup: {\n        brave_api_key: process.env.BRAVE_API_KEY\n      }\n    }\n  });\n} catch (error) {\n  if (error.name === 'ValidationError') {\n    console.error('Invalid tool configuration:', error.message);\n  } else if (error.name === 'IntegrationError') {\n    console.error('Integration setup failed:', error.message);\n  } else {\n    console.error('Unexpected error:', error);\n  }\n}\n```\n\n## Next Steps\n\n<CardGroup cols={2}>\n  <Card\n    title=\"Advanced Usage\"\n    icon=\"graduation-cap\"\n    href=\"/sdks/nodejs/advanced-usage\"\n  >\n    Learn advanced patterns and best practices\n  </Card>\n  <Card\n    title=\"API Reference\"\n    icon=\"code\"\n    href=\"/api-reference\"\n  >\n    View the complete API reference\n  </Card>\n  <Card\n    title=\"Examples\"\n    icon=\"lightbulb\"\n    href=\"/examples\"\n  >\n    See real-world examples\n  </Card>\n  <Card\n    title=\"Common Patterns\"\n    icon=\"puzzle-piece\"\n    href=\"/sdks/common/error-handling\"\n  >\n    Learn common integration patterns\n  </Card>\n</CardGroup> "
  },
  {
    "path": "documentation/sdks/python/advanced-usage.mdx",
    "content": "---\ntitle: 'Advanced Usage'\ndescription: 'Advanced patterns and best practices for the Python SDK'\n---\n\n## Async Operations\n\nUse the async client for better performance:\n\n```python\nfrom julep import AsyncJulep\nimport asyncio\n\nasync def main():\n    client = AsyncJulep(api_key=\"your_julep_api_key\")\n    \n    # Create multiple agents concurrently\n    agents = await asyncio.gather(*[\n        client.agents.create(name=f\"Agent {i}\")\n        for i in range(5)\n    ])\n    \n    # Execute multiple tasks concurrently\n    executions = await asyncio.gather(*[\n        client.executions.create(task_id=task.id)\n        for task in tasks\n    ])\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n```\n\n## Complex Workflows\n\nCreate sophisticated task workflows:\n\n```yaml [expandable]\nname: Advanced Workflow\ndescription: Complex task with multiple steps and error handling\n\ntools:\n  - name: web_search\n    type: integration\n    integration:\n      provider: brave\n      method: search\n\n  - name: process_data\n    type: function\n    function:\n      parameters:\n        type: object\n        properties:\n          data:\n            type: array\n            items:\n              type: string\n\nmain:\n  # Parallel processing with error handling\n  - try:\n      - map_reduce:\n          over: _.topics\n          map:\n            - tool: web_search\n              arguments:\n                query: _\n          parallelism: 5\n    catch:\n      - log: Search failed\n      - return: {\"error\": \"Search operation failed\"}\n\n  # Conditional branching\n  - if: len(_.search_results) > 0\n    then:\n      - evaluate:\n          processed_data: process_results(_.search_results)\n    else:\n      - return: {\"error\": \"No results found\"}\n\n  # Custom aggregation\n  - evaluate:\n      summary: aggregate_results(_.processed_data)\n      confidence: calculate_confidence(_.processed_data)\n\n  # Dynamic tool selection\n  - switch:\n      - case: _.confidence > 0.8\n        then:\n          - tool: high_confidence_processor\n      - case: _.confidence > 0.5\n        then:\n          - tool: medium_confidence_processor\n      - case: _\n        then:\n          - tool: low_confidence_processor\n```\n\n## Custom Tool Implementation\n\n<Note>\n  Work in progress. We're working on a way to allow you to implement your own tools.\n</Note>\n\n## Advanced Error Handling\n\n<Note>\n  Work in progress. We're working on a way to handle errors in a more robust way.\n</Note>\n\n## Performance Optimization\n\n<Note>\n  Work in progress. We're working on a way to optimize the performance of the SDK.\n</Note>\n\n## Testing Strategies\n\n<Note>\n  Work in progress. We're working on a way to test the SDK.\n</Note>"
  },
  {
    "path": "documentation/sdks/python/agents.mdx",
    "content": "---\ntitle: 'Working with Agents'\ndescription: 'Learn how to create and manage AI agents using the Python SDK'\n---\n\n## Creating an Agent\n\nCreate an AI agent with specific capabilities:\n\n```python\nagent = client.agents.create(\n    name=\"Research Assistant\",\n    model=\"claude-3.5-sonnet\",  # or any supported model\n    about=\"A helpful research assistant that can search and summarize information.\",\n    metadata={\n        \"expertise\": \"research\",\n        \"language\": \"english\"\n    }\n)\n```\n\n## Retrieving Agents\n\n```python\n# Get a specific agent\nagent = client.agents.get(agent_id=\"agent_123\")\n\n# List all agents\nagents = client.agents.list(\n    limit=10,\n    offset=0,\n    metadata_filter={\"expertise\": \"research\"}\n)\n```\n\n## Updating Agents\n\n```python\nupdated_agent = client.agents.update(\n    agent_id=\"agent_123\",\n    name=\"Advanced Research Assistant\",\n    metadata={\"expertise\": [\"research\", \"analysis\"]}\n)\n```\n\n## Managing Agent Tools\n\nAdd capabilities to your agent by attaching tools:\n\n```python\n# Add a web search tool\nclient.agents.tools.create(\n    agent_id=agent.id,\n    name=\"web_search\",\n    description=\"Search the web for information\",\n    integration={\n        \"provider\": \"brave\",\n        \"method\": \"search\",\n        \"setup\": {\"brave_api_key\": \"your_brave_api_key\"}\n    }\n)\n\n# List agent's tools\ntools = client.agents.tools.list(agent_id=agent.id)\n\n# Remove a tool\nclient.agents.tools.delete(\n    agent_id=agent.id,\n    tool_id=\"tool_123\"\n)\n```\n\n## Working with Documents\n\nManage documents associated with your agent:\n\n```python [expandable]\n# Add a document\ndoc = client.agents.docs.create(\n    agent_id=agent.id,\n    title=\"Research Paper\",\n    content=\"Content of the research paper...\",\n    metadata={\"category\": \"science\"}\n)\n\n# Search documents\nresults = client.agents.docs.search(\n    agent_id=agent.id,\n    text=\"quantum physics\",\n    metadata_filter={\"category\": \"science\"},\n    limit=5\n)\n\n# Delete a document\nclient.agents.docs.delete(\n    agent_id=agent.id,\n    doc_id=\"doc_123\"\n)\n```\n\n## Deleting Agents\n\n```python\nclient.agents.delete(agent_id=\"agent_123\")\n```\n\n## Error Handling\n\n```python\nfrom julep.exceptions import JulepError, AgentNotFoundError\n\ntry:\n    agent = client.agents.get(\"nonexistent_id\")\nexcept AgentNotFoundError:\n    print(\"Agent not found\")\nexcept JulepError as e:\n    print(f\"An error occurred: {e}\")\n```"
  },
  {
    "path": "documentation/sdks/python/installation.mdx",
    "content": "---\ntitle: 'Installation & Setup'\ndescription: 'Getting started with the Python SDK'\n---\n\n## Installation\n\nInstall the Julep Python SDK using pip:\n\n```bash\npip install julep\n```\n\n## Quick Setup\n\n```python\nfrom julep import Julep\n\n# Initialize the client\nclient = Julep(api_key=\"your_julep_api_key\")\n```\n\n## Environment Setup\n\nYou can also configure the client using environment variables:\n\n```bash\nexport JULEP_API_KEY=your_julep_api_key\nexport JULEP_ENVIRONMENT=production  # or development\n```\n\nThen initialize without parameters:\n\n```python\nfrom julep import Julep\n\nclient = Julep()  # Will use environment variables\n```\n\n## Configuration Options\n\nThe Julep client can be configured with several options:\n\n```python\nclient = Julep(\n    api_key=\"your_julep_api_key\",\n    environment=\"production\",  # or \"development\"\n    base_url=\"https://api.julep.ai\",  # Optional: custom API endpoint\n    timeout=30  # Optional: custom timeout in seconds\n)\n```\n\n## Async Support\n\nJulep also provides an async client for use with asyncio:\n\n```python\nfrom julep import AsyncJulep\n\nasync def main():\n    client = AsyncJulep(api_key=\"your_julep_api_key\")\n    # Use the client asynchronously\n    agent = await client.agents.create(name=\"My Agent\")\n\n# Run with asyncio\nimport asyncio\nasyncio.run(main())\n``` "
  },
  {
    "path": "documentation/sdks/python/reference.mdx",
    "content": "---\ntitle: 'Python SDK Reference'\ndescription: 'Complete reference documentation for the Python SDK'\n---\n\n# Shared Types\n\n```python\nfrom julep.types import ResourceCreated, ResourceDeleted, ResourceUpdated\n```\n\n# Agents\n\nTypes:\n\n```python\nfrom julep.types import Agent\n```\n\nMethods:\n\n- <code title=\"post /agents\">client.agents.<a href=\"./src/julep/resources/agents/agents.py\">create</a>(\\*\\*<a href=\"src/julep/types/agent_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"patch /agents/{agent_id}\">client.agents.<a href=\"./src/julep/resources/agents/agents.py\">update</a>(agent_id, \\*\\*<a href=\"src/julep/types/agent_update_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n- <code title=\"get /agents\">client.agents.<a href=\"./src/julep/resources/agents/agents.py\">list</a>(\\*\\*<a href=\"src/julep/types/agent_list_params.py\">params</a>) -> <a href=\"./src/julep/types/agent.py\">SyncOffsetPagination[Agent]</a></code>\n- <code title=\"delete /agents/{agent_id}\">client.agents.<a href=\"./src/julep/resources/agents/agents.py\">delete</a>(agent_id) -> <a href=\"./src/julep/types/shared/resource_deleted.py\">ResourceDeleted</a></code>\n- <code title=\"post /agents/{agent_id}\">client.agents.<a href=\"./src/julep/resources/agents/agents.py\">create_or_update</a>(agent_id, \\*\\*<a href=\"src/julep/types/agent_create_or_update_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"get /agents/{agent_id}\">client.agents.<a href=\"./src/julep/resources/agents/agents.py\">get</a>(agent_id) -> <a href=\"./src/julep/types/agent.py\">Agent</a></code>\n- <code title=\"put /agents/{agent_id}\">client.agents.<a href=\"./src/julep/resources/agents/agents.py\">reset</a>(agent_id, \\*\\*<a href=\"src/julep/types/agent_reset_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n\n## Tools\n\nTypes:\n\n```python\nfrom julep.types.agents import ToolListResponse\n```\n\nMethods:\n\n- <code title=\"post /agents/{agent_id}/tools\">client.agents.tools.<a href=\"./src/julep/resources/agents/tools.py\">create</a>(agent_id, \\*\\*<a href=\"src/julep/types/agents/tool_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"patch /agents/{agent_id}/tools/{tool_id}\">client.agents.tools.<a href=\"./src/julep/resources/agents/tools.py\">update</a>(tool_id, \\*, agent_id, \\*\\*<a href=\"src/julep/types/agents/tool_update_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n- <code title=\"get /agents/{agent_id}/tools\">client.agents.tools.<a href=\"./src/julep/resources/agents/tools.py\">list</a>(agent_id, \\*\\*<a href=\"src/julep/types/agents/tool_list_params.py\">params</a>) -> <a href=\"./src/julep/types/agents/tool_list_response.py\">SyncOffsetPagination[ToolListResponse]</a></code>\n- <code title=\"delete /agents/{agent_id}/tools/{tool_id}\">client.agents.tools.<a href=\"./src/julep/resources/agents/tools.py\">delete</a>(tool_id, \\*, agent_id) -> <a href=\"./src/julep/types/shared/resource_deleted.py\">ResourceDeleted</a></code>\n- <code title=\"put /agents/{agent_id}/tools/{tool_id}\">client.agents.tools.<a href=\"./src/julep/resources/agents/tools.py\">reset</a>(tool_id, \\*, agent_id, \\*\\*<a href=\"src/julep/types/agents/tool_reset_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n\n## Docs\n\nTypes:\n\n```python\nfrom julep.types.agents import DocSearchResponse\n```\n\nMethods:\n\n- <code title=\"post /agents/{agent_id}/docs\">client.agents.docs.<a href=\"./src/julep/resources/agents/docs.py\">create</a>(agent_id, \\*\\*<a href=\"src/julep/types/agents/doc_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"get /agents/{agent_id}/docs\">client.agents.docs.<a href=\"./src/julep/resources/agents/docs.py\">list</a>(agent_id, \\*\\*<a href=\"src/julep/types/agents/doc_list_params.py\">params</a>) -> <a href=\"./src/julep/types/doc.py\">SyncOffsetPagination[Doc]</a></code>\n- <code title=\"delete /agents/{agent_id}/docs/{doc_id}\">client.agents.docs.<a href=\"./src/julep/resources/agents/docs.py\">delete</a>(doc_id, \\*, agent_id) -> <a href=\"./src/julep/types/shared/resource_deleted.py\">ResourceDeleted</a></code>\n- <code title=\"post /agents/{agent_id}/search\">client.agents.docs.<a href=\"./src/julep/resources/agents/docs.py\">search</a>(agent_id, \\*\\*<a href=\"src/julep/types/agents/doc_search_params.py\">params</a>) -> <a href=\"./src/julep/types/agents/doc_search_response.py\">DocSearchResponse</a></code>\n\n# Files\n\nTypes:\n\n```python\nfrom julep.types import File\n```\n\nMethods:\n\n- <code title=\"post /files\">client.files.<a href=\"./src/julep/resources/files.py\">create</a>(\\*\\*<a href=\"src/julep/types/file_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"delete /files/{file_id}\">client.files.<a href=\"./src/julep/resources/files.py\">delete</a>(file_id) -> <a href=\"./src/julep/types/shared/resource_deleted.py\">ResourceDeleted</a></code>\n- <code title=\"get /files/{file_id}\">client.files.<a href=\"./src/julep/resources/files.py\">get</a>(file_id) -> <a href=\"./src/julep/types/file.py\">File</a></code>\n\n# Sessions\n\nTypes:\n\n```python\nfrom julep.types import (\n    ChatInput,\n    ChatResponse,\n    ChatSettings,\n    Entry,\n    History,\n    Message,\n    Session,\n    SessionChatResponse,\n)\n```\n\nMethods:\n\n- <code title=\"post /sessions\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">create</a>(\\*\\*<a href=\"src/julep/types/session_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"patch /sessions/{session_id}\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">update</a>(session_id, \\*\\*<a href=\"src/julep/types/session_update_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n- <code title=\"get /sessions\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">list</a>(\\*\\*<a href=\"src/julep/types/session_list_params.py\">params</a>) -> <a href=\"./src/julep/types/session.py\">SyncOffsetPagination[Session]</a></code>\n- <code title=\"delete /sessions/{session_id}\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">delete</a>(session_id) -> <a href=\"./src/julep/types/shared/resource_deleted.py\">ResourceDeleted</a></code>\n- <code title=\"post /sessions/{session_id}/chat\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">chat</a>(session_id, \\*\\*<a href=\"src/julep/types/session_chat_params.py\">params</a>) -> <a href=\"./src/julep/types/session_chat_response.py\">SessionChatResponse</a></code>\n- <code title=\"post /sessions/{session_id}\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">create_or_update</a>(session_id, \\*\\*<a href=\"src/julep/types/session_create_or_update_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n- <code title=\"get /sessions/{session_id}\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">get</a>(session_id) -> <a href=\"./src/julep/types/session.py\">Session</a></code>\n- <code title=\"get /sessions/{session_id}/history\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">history</a>(session_id) -> <a href=\"./src/julep/types/history.py\">History</a></code>\n- <code title=\"put /sessions/{session_id}\">client.sessions.<a href=\"./src/julep/resources/sessions.py\">reset</a>(session_id, \\*\\*<a href=\"src/julep/types/session_reset_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n\n# Users\n\nTypes:\n\n```python\nfrom julep.types import User\n```\n\nMethods:\n\n- <code title=\"post /users\">client.users.<a href=\"./src/julep/resources/users/users.py\">create</a>(\\*\\*<a href=\"src/julep/types/user_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"patch /users/{user_id}\">client.users.<a href=\"./src/julep/resources/users/users.py\">update</a>(user_id, \\*\\*<a href=\"src/julep/types/user_update_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n- <code title=\"get /users\">client.users.<a href=\"./src/julep/resources/users/users.py\">list</a>(\\*\\*<a href=\"src/julep/types/user_list_params.py\">params</a>) -> <a href=\"./src/julep/types/user.py\">SyncOffsetPagination[User]</a></code>\n- <code title=\"delete /users/{user_id}\">client.users.<a href=\"./src/julep/resources/users/users.py\">delete</a>(user_id) -> <a href=\"./src/julep/types/shared/resource_deleted.py\">ResourceDeleted</a></code>\n- <code title=\"post /users/{user_id}\">client.users.<a href=\"./src/julep/resources/users/users.py\">create_or_update</a>(user_id, \\*\\*<a href=\"src/julep/types/user_create_or_update_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"get /users/{user_id}\">client.users.<a href=\"./src/julep/resources/users/users.py\">get</a>(user_id) -> <a href=\"./src/julep/types/user.py\">User</a></code>\n- <code title=\"put /users/{user_id}\">client.users.<a href=\"./src/julep/resources/users/users.py\">reset</a>(user_id, \\*\\*<a href=\"src/julep/types/user_reset_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n\n## Docs\n\nTypes:\n\n```python\nfrom julep.types.users import DocSearchResponse\n```\n\nMethods:\n\n- <code title=\"post /users/{user_id}/docs\">client.users.docs.<a href=\"./src/julep/resources/users/docs.py\">create</a>(user_id, \\*\\*<a href=\"src/julep/types/users/doc_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"get /users/{user_id}/docs\">client.users.docs.<a href=\"./src/julep/resources/users/docs.py\">list</a>(user_id, \\*\\*<a href=\"src/julep/types/users/doc_list_params.py\">params</a>) -> <a href=\"./src/julep/types/doc.py\">SyncOffsetPagination[Doc]</a></code>\n- <code title=\"delete /users/{user_id}/docs/{doc_id}\">client.users.docs.<a href=\"./src/julep/resources/users/docs.py\">delete</a>(doc_id, \\*, user_id) -> <a href=\"./src/julep/types/shared/resource_deleted.py\">ResourceDeleted</a></code>\n- <code title=\"post /users/{user_id}/search\">client.users.docs.<a href=\"./src/julep/resources/users/docs.py\">search</a>(user_id, \\*\\*<a href=\"src/julep/types/users/doc_search_params.py\">params</a>) -> <a href=\"./src/julep/types/users/doc_search_response.py\">DocSearchResponse</a></code>\n\n# Jobs\n\nTypes:\n\n```python\nfrom julep.types import JobStatus\n```\n\nMethods:\n\n- <code title=\"get /jobs/{job_id}\">client.jobs.<a href=\"./src/julep/resources/jobs.py\">get</a>(job_id) -> <a href=\"./src/julep/types/job_status.py\">JobStatus</a></code>\n\n# Docs\n\nTypes:\n\n```python\nfrom julep.types import Doc, EmbedQueryResponse, Snippet\n```\n\nMethods:\n\n- <code title=\"post /embed\">client.docs.<a href=\"./src/julep/resources/docs.py\">embed</a>(\\*\\*<a href=\"src/julep/types/doc_embed_params.py\">params</a>) -> <a href=\"./src/julep/types/embed_query_response.py\">EmbedQueryResponse</a></code>\n- <code title=\"get /docs/{doc_id}\">client.docs.<a href=\"./src/julep/resources/docs.py\">get</a>(doc_id) -> <a href=\"./src/julep/types/doc.py\">Doc</a></code>\n\n# Tasks\n\nTypes:\n\n```python\nfrom julep.types import Task\n```\n\nMethods:\n\n- <code title=\"post /agents/{agent_id}/tasks\">client.tasks.<a href=\"./src/julep/resources/tasks.py\">create</a>(agent_id, \\*\\*<a href=\"src/julep/types/task_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"get /agents/{agent_id}/tasks\">client.tasks.<a href=\"./src/julep/resources/tasks.py\">list</a>(agent_id, \\*\\*<a href=\"src/julep/types/task_list_params.py\">params</a>) -> <a href=\"./src/julep/types/task.py\">SyncOffsetPagination[Task]</a></code>\n- <code title=\"post /agents/{agent_id}/tasks/{task_id}\">client.tasks.<a href=\"./src/julep/resources/tasks.py\">create_or_update</a>(task_id, \\*, agent_id, \\*\\*<a href=\"src/julep/types/task_create_or_update_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_updated.py\">ResourceUpdated</a></code>\n- <code title=\"get /tasks/{task_id}\">client.tasks.<a href=\"./src/julep/resources/tasks.py\">get</a>(task_id) -> <a href=\"./src/julep/types/task.py\">Task</a></code>\n\n# Executions\n\nTypes:\n\n```python\nfrom julep.types import Execution, Transition, ExecutionChangeStatusResponse\n```\n\nMethods:\n\n- <code title=\"post /tasks/{task_id}/executions\">client.executions.<a href=\"./src/julep/resources/executions/executions.py\">create</a>(task_id, \\*\\*<a href=\"src/julep/types/execution_create_params.py\">params</a>) -> <a href=\"./src/julep/types/shared/resource_created.py\">ResourceCreated</a></code>\n- <code title=\"get /tasks/{task_id}/executions\">client.executions.<a href=\"./src/julep/resources/executions/executions.py\">list</a>(task_id, \\*\\*<a href=\"src/julep/types/execution_list_params.py\">params</a>) -> <a href=\"./src/julep/types/execution.py\">SyncOffsetPagination[Execution]</a></code>\n- <code title=\"put /executions/{execution_id}\">client.executions.<a href=\"./src/julep/resources/executions/executions.py\">change_status</a>(execution_id, \\*\\*<a href=\"src/julep/types/execution_change_status_params.py\">params</a>) -> <a href=\"./src/julep/types/execution_change_status_response.py\">object</a></code>\n- <code title=\"get /executions/{execution_id}\">client.executions.<a href=\"./src/julep/resources/executions/executions.py\">get</a>(execution_id) -> <a href=\"./src/julep/types/execution.py\">Execution</a></code>\n\n## Transitions\n\nTypes:\n\n```python\nfrom julep.types.executions import TransitionStreamResponse\n```\n\nMethods:\n\n- <code title=\"get /executions/{execution_id}/transitions\">client.executions.transitions.<a href=\"./src/julep/resources/executions/transitions.py\">list</a>(execution_id, \\*\\*<a href=\"src/julep/types/executions/transition_list_params.py\">params</a>) -> <a href=\"./src/julep/types/transition.py\">SyncOffsetPagination[Transition]</a></code>\n- <code title=\"get /executions/{execution_id}/transitions.stream\">client.executions.transitions.<a href=\"./src/julep/resources/executions/transitions.py\">stream</a>(execution_id, \\*\\*<a href=\"src/julep/types/executions/transition_stream_params.py\">params</a>) -> <a href=\"./src/julep/types/executions/transition_stream_response.py\">object</a></code>\n"
  },
  {
    "path": "documentation/sdks/python/secrets.mdx",
    "content": "---\ntitle: 'Managing Secrets with Python SDK'\ndescription: 'How to manage secrets using the Julep Python SDK'\n---\n\n# Managing Secrets with Python SDK\n\nThis guide covers how to manage secrets using the Julep Python SDK. Secrets allow you to securely store and use sensitive information like API keys, passwords, and access tokens in your Julep applications.\n\n## Installation\n\nEnsure you have the latest version of the Python SDK:\n\n```bash\npip install julep\n```\n\n## Authentication\n\nInitialize the client with your API key:\n\n```python\nfrom julep import Julep\n\nclient = Julep(api_key=\"your_api_key\")\n```\n\n## Creating Secrets\n\nCreate a new secret:\n\n```python\nsecret = client.secrets.create(\n    name=\"stripe_api_key\",\n    value=\"sk_test_...\",\n    description=\"Stripe API key for payment processing\",\n    metadata={\"environment\": \"production\", \"owner\": \"payments-team\"}\n)\n\nprint(f\"Created secret: {secret.name}\")\n```\n\n### Required Parameters\n\n- `name`: The name of the secret (must be a valid identifier)\n- `value`: The secret value to encrypt and store\n\n### Optional Parameters\n\n- `description`: A description of what the secret is used for\n- `metadata`: A dictionary of metadata to associate with the secret\n\n## Listing Secrets\n\nList all available secrets:\n\n```python\n# List all secrets\nsecrets = client.secrets.list()\nfor secret in secrets.items:\n    print(f\"{secret.name}: {secret.description}\")\n```\n\n### Pagination\n\nUse pagination to handle large numbers of secrets:\n\n```python\n# List with pagination\nsecrets_page_1 = client.secrets.list(limit=10, offset=0)\nsecrets_page_2 = client.secrets.list(limit=10, offset=10)\n```\n\n### Filtering by Metadata\n\nFilter secrets based on metadata:\n\n```python\n# Filter by metadata\nproduction_secrets = client.secrets.list(\n    metadata={\"environment\": \"production\"}\n)\n\n# Filter by multiple metadata fields\nteam_secrets = client.secrets.list(\n    metadata={\n        \"environment\": \"production\",\n        \"owner\": \"payments-team\"\n    }\n)\n```\n\n## Retrieving Secrets\n\nGet a specific secret by name:\n\n```python\nsecret = client.secrets.get(name=\"stripe_api_key\")\nprint(f\"Secret: {secret.name}, Created: {secret.created_at}\")\n\n# Access the secret value\nprint(f\"Secret value: {secret.value}\")\n```\n\n> **Note**: For security, when listing secrets, the `.value` field will always show \"ENCRYPTED\". The actual secret value is only returned when specifically requesting a single secret by name.\n\n## Updating Secrets\n\nUpdate an existing secret:\n\n```python\nupdated_secret = client.secrets.update(\n    name=\"stripe_api_key\",\n    value=\"sk_test_new_value...\",\n    description=\"Updated Stripe API key\",\n    metadata={\"environment\": \"production\", \"owner\": \"payments-team\", \"rotated\": \"2025-05-10\"}\n)\n\nprint(f\"Updated secret: {updated_secret.name}\")\n```\n\n### Partial Updates\n\nYou can update specific fields without changing others:\n\n```python\n# Update only the description\nupdated_secret = client.secrets.update(\n    name=\"stripe_api_key\",\n    description=\"New description for Stripe API key\"\n)\n\n# Update only the metadata\nupdated_secret = client.secrets.update(\n    name=\"stripe_api_key\",\n    metadata={\"last_rotated\": \"2025-05-10\"}\n)\n```\n\n## Deleting Secrets\n\nDelete a secret when it's no longer needed:\n\n```python\nclient.secrets.delete(name=\"stripe_api_key\")\nprint(\"Secret deleted\")\n```\n\n## Using Secrets in Tasks\n\nReference secrets when executing tasks:\n\n```python [expandable]\nfrom julep import Julep\n\nclient = Julep(api_key=\"your_api_key\")\n\n# Define a task that uses a secret\ntask_definition = {\n    \"steps\": [\n        {\n            \"kind\": \"tool_call\",\n            \"tool\": \"openai\",\n            \"operation\": \"chat\",\n            \"arguments\": {\n                \"model\": \"gpt-4\",\n                \"messages\": [\n                    {\"role\": \"user\", \"content\": \"What's the weather like?\"}\n                ]\n            },\n            \"secret_name\": \"openai_api_key\"\n        }\n    ]\n}\n\n# Create and execute the task\ntask = client.tasks.create(task=task_definition)\nexecution = client.tasks.execute(task_id=task.id)\n```\n\n### Using Secrets in Expressions\n\nYou can reference secrets in expressions:\n\n```python\ntask_definition = {\n    \"steps\": [\n        {\n            \"kind\": \"transform\",\n            \"expression\": \"$ f'https://api.example.com/v1?api_key={secrets.api_key}&query={input}'\",\n            \"input\": \"search query\",\n            \"output\": \"api_url\"\n        }\n    ]\n}\n```\n\n### Using Multiple Secrets\n\nFor tools that require multiple secrets:\n\n```python\ntask_definition = {\n    \"steps\": [\n        {\n            \"kind\": \"tool_call\",\n            \"tool\": \"database\",\n            \"operation\": \"query\",\n            \"arguments\": {\n                \"query\": \"SELECT * FROM users\",\n                \"connection\": {\n                    \"host\": \"$ secrets.db_host\",\n                    \"user\": \"$ secrets.db_username\",\n                    \"password\": \"$ secrets.db_password\",\n                    \"database\": \"$ secrets.db_name\"\n                }\n            }\n        }\n    ]\n}\n```\n\n## Error Handling\n\nHandle common errors when working with secrets:\n\n```python [expandable]\nfrom julep.exceptions import (\n    SecretNotFoundError,\n    SecretAlreadyExistsError,\n    ValidationError\n)\n\ntry:\n    secret = client.secrets.get(name=\"non_existent_secret\")\nexcept SecretNotFoundError:\n    print(\"Secret not found\")\n\ntry:\n    # Attempt to create a secret with an invalid name\n    secret = client.secrets.create(name=\"invalid name\", value=\"test\")\nexcept ValidationError as e:\n    print(f\"Validation error: {e}\")\n\ntry:\n    # Attempt to create a duplicate secret\n    secret = client.secrets.create(name=\"existing_secret\", value=\"test\")\nexcept SecretAlreadyExistsError:\n    print(\"Secret already exists\")\n```\n\n## Secret Rotation Example\n\nImplement a secret rotation policy:\n\n```python [expandable]\nimport uuid\nfrom datetime import datetime\n\ndef rotate_secret(client, secret_name, new_value):\n    \"\"\"\n    Safely rotate a secret by creating a new one and verifying it works\n    before deleting the old one.\n    \"\"\"\n    # Create a temporary secret with a random suffix\n    temp_name = f\"{secret_name}_rotation_{uuid.uuid4().hex[:8]}\"\n    \n    # Create the new secret\n    client.secrets.create(\n        name=temp_name,\n        value=new_value,\n        description=f\"Temporary rotation for {secret_name}\",\n        metadata={\"rotation_date\": datetime.now().isoformat()}\n    )\n    \n    # Here you would test that the new secret works\n    # ...\n    \n    # If tests pass, update metadata on the old secret\n    old_secret = client.secrets.get(name=secret_name)\n    old_metadata = old_secret.metadata or {}\n    old_metadata.update({\n        \"archived\": \"true\",\n        \"replaced_by\": temp_name,\n        \"archived_date\": datetime.now().isoformat()\n    })\n    \n    client.secrets.update(\n        name=secret_name,\n        metadata=old_metadata\n    )\n    \n    # Rename the temporary secret to the standard name\n    client.secrets.delete(name=secret_name)\n    client.secrets.update(\n        name=temp_name,\n        new_name=secret_name,\n        description=old_secret.description,\n        metadata={\"last_rotated\": datetime.now().isoformat()}\n    )\n    \n    return client.secrets.get(name=secret_name)\n\n# Example usage\nnew_key = \"sk_test_new_value_after_rotation\"\nrotated_secret = rotate_secret(client, \"stripe_api_key\", new_key)\nprint(f\"Rotated secret: {rotated_secret.name}\")\n```\n\n## Best Practices\n\n1. Use a consistent naming convention for all secrets\n2. Add detailed descriptions and metadata to make secrets discoverable\n3. Implement a rotation policy for sensitive secrets\n4. Log secret operations (creation, updates, deletions) but never log values\n5. Use try/except blocks to handle potential errors gracefully\n6. Consider automating secret rotation for important credentials\n7. Use metadata to track important dates and ownership information\n\n## Next Steps\n\n- [Common Secrets Patterns](/sdks/common/secrets) - Patterns that work across all SDKs\n- [Secrets Management](/advanced/secrets-management) - Advanced guide for managing secrets\n- [Using Secrets in Julep](/guides/using-secrets) - Step-by-step guide for using secrets"
  },
  {
    "path": "documentation/sdks/python/sessions.mdx",
    "content": "---\ntitle: 'Working with Sessions'\ndescription: 'Learn how to manage sessions and maintain conversation context using the Python SDK'\n---\n\n## Creating Sessions\n\nCreate a session to maintain conversation context:\n\n```python\nsession = client.sessions.create(\n    agent_id=agent.id,\n    user_id=user.id,  # Optional\n    context_overflow=\"adaptive\",  # or \"truncate\" or \"summarize\"\n    metadata={\n        \"channel\": \"web\",\n        \"language\": \"english\"\n    }\n)\n```\n\n## Session Chat\n\nInteract with an agent through a session:\n\n```python [expandable]\n# Single message\nresponse = client.sessions.chat(\n    session_id=session.id,\n    messages=[\n        {\n            \"role\": \"user\",\n            \"content\": \"What can you help me with?\"\n        }\n    ]\n)\n\n# Multiple messages in a conversation\nresponse = client.sessions.chat(\n    session_id=session.id,\n    messages=[\n        {\n            \"role\": \"user\",\n            \"content\": \"I need help with research\"\n        },\n        {\n            \"role\": \"assistant\",\n            \"content\": \"I can help you with that. What topic would you like to research?\"\n        },\n        {\n            \"role\": \"user\",\n            \"content\": \"Let's research quantum computing\"\n        }\n    ]\n)\n```\n\n## Managing Session Context\n\n```python\n# Get session history\nhistory = client.sessions.history(\n    session_id=session.id,\n    limit=10,\n    before=datetime.now()\n)\n\n# Update session context\nsession = client.sessions.update(\n    session_id=session.id,\n    metadata={\"topic\": \"quantum computing\"}\n)\n\n# Clear session history\nclient.sessions.clear(session_id=session.id)\n```\n\n## Session Documents\n\nManage documents associated with a session:\n\n```python\n# Add a document to the session\ndoc = client.sessions.docs.create(\n    session_id=session.id,\n    title=\"Research Notes\",\n    content=\"Notes about quantum computing...\",\n    metadata={\"type\": \"notes\"}\n)\n\n# Search session documents\nresults = client.sessions.docs.search(\n    session_id=session.id,\n    text=\"quantum\",\n    metadata_filter={\"type\": \"notes\"}\n)\n\n# Delete a session document\nclient.sessions.docs.delete(\n    session_id=session.id,\n    doc_id=doc.id\n)\n```\n\n## Session Management\n\n```python\n# List sessions\nsessions = client.sessions.list(\n    agent_id=agent.id,\n    user_id=user.id,  # Optional\n    limit=10,\n    offset=0\n)\n\n# Get session details\nsession = client.sessions.get(session_id=session.id)\n\n# Delete a session\nclient.sessions.delete(session_id=session.id)\n```\n\n## Error Handling\n\n```python\nfrom julep.exceptions import JulepError, SessionNotFoundError\n\ntry:\n    session = client.sessions.get(\"nonexistent_id\")\nexcept SessionNotFoundError:\n    print(\"Session not found\")\nexcept JulepError as e:\n    print(f\"An error occurred: {e}\")\n```\n\n## Working with Context Overflow\n\nJulep provides different strategies for handling context overflow:\n\n```python\n# Adaptive context handling (default)\nsession = client.sessions.create(\n    agent_id=agent.id,\n    context_overflow=\"adaptive\"\n)\n\n# Truncate old messages\nsession = client.sessions.create(\n    agent_id=agent.id,\n    context_overflow=\"truncate\"\n)\n\n# Summarize old messages\nsession = client.sessions.create(\n    agent_id=agent.id,\n    context_overflow=\"summarize\"\n)\n``` "
  },
  {
    "path": "documentation/sdks/python/tasks.mdx",
    "content": "---\ntitle: 'Working with Tasks'\ndescription: 'Learn how to create and manage tasks using the Python SDK'\n---\n\n## Creating Tasks\n\nCreate a task with a specific workflow:\n\n```python [expandable]\nimport yaml\n\ntask_yaml = \"\"\"\nname: Research Task\ndescription: Perform research on a given topic\n\ntools:\n  - name: web_search\n    type: integration\n    integration:\n      provider: brave\n      method: search\n\nmain:\n  - prompt:\n      - role: system\n        content: You are {{agent.name}}. {{agent.about}}\n      - role: user\n        content: Research the topic: {{_.topic}}\n    unwrap: true\n\n  - tool: web_search\n    arguments:\n      query: _.topic\n\n  - prompt:\n      - role: system\n        content: Summarize the research findings\n      - role: user\n        content: Here are the search results: {{_.search_results}}\n\"\"\"\n\ntask = client.tasks.create(\n    agent_id=agent.id,\n    **yaml.safe_load(task_yaml)\n)\n```\n\n## Task Components\n\nA task in Julep consists of several components:\n\n```python [expandable]\ntask = client.tasks.create(\n    agent_id=agent.id,\n    name=\"Complex Task\",\n    description=\"A multi-step task with various components\",\n    input_schema={\n        \"type\": \"object\",\n        \"properties\": {\n            \"topic\": {\"type\": \"string\"},\n            \"depth\": {\"type\": \"integer\", \"minimum\": 1, \"maximum\": 5}\n        },\n        \"required\": [\"topic\"]\n    },\n    tools=[\n        {\n            \"name\": \"web_search\",\n            \"type\": \"integration\",\n            \"integration\": {\n                \"provider\": \"brave\",\n                \"method\": \"search\"\n            }\n        }\n    ],\n    main=[\n        {\"prompt\": \"Research {{_.topic}} at depth {{_.depth}}\"},\n        {\"tool\": \"web_search\", \"arguments\": {\"query\": \"_.topic\"}},\n        {\"evaluate\": {\"results\": \"process_results(_)\"}}\n    ]\n)\n```\n\n## Executing Tasks\n\nExecute a task with specific inputs:\n\n```python\n# Create an execution\nexecution = client.executions.create(\n    task_id=task.id,\n    input={\"topic\": \"quantum computing\", \"depth\": 3}\n)\n\n# Check execution status\nwhile True:\n    result = client.executions.get(execution.id)\n    if result.status in ['succeeded', 'failed']:\n        break\n    time.sleep(1)\n\n# Get the results\nif result.status == \"succeeded\":\n    print(result.output)\nelse:\n    print(f\"Execution failed: {result.error}\")\n```\n\n## Managing Task Executions\n\n```python\n# List executions for a task\nexecutions = client.executions.list(\n    task_id=task.id,\n    limit=10,\n    offset=0,\n    status=\"succeeded\"  # Filter by status\n)\n\n# Cancel an execution\nclient.executions.cancel(execution_id=execution.id)\n```\n\n## Task Control Flow\n\nJulep supports various control flow operations in tasks:\n\n```yaml [expandable]\nmain:\n  # Conditional execution\n  - if: _.score > 0.8\n    then:\n      - log: High score achieved\n    else:\n      - log: Score needs improvement\n\n  # Iteration\n  - foreach:\n      in: _.data_list\n      do:\n        - log: \"Processing {{_}}\"\n\n  # Parallel processing\n  - map_reduce:\n      over: _.topics\n      map:\n        - prompt: Write about {{_}}\n      parallelism: 5\n\n  # Error handling\n  - try:\n      - tool: risky_operation\n    catch:\n      - log: Operation failed\n```\n\n## Error Handling\n\n```python\nfrom julep.exceptions import JulepError, TaskNotFoundError, ExecutionError\n\ntry:\n    execution = client.executions.create(task_id=\"nonexistent_id\")\nexcept TaskNotFoundError:\n    print(\"Task not found\")\nexcept ExecutionError as e:\n    print(f\"Execution failed: {e}\")\nexcept JulepError as e:\n    print(f\"An error occurred: {e}\")\n``` "
  },
  {
    "path": "documentation/sdks/python/tools-integration.mdx",
    "content": "---\ntitle: 'Tools & Integration'\ndescription: 'Learn how to use tools and integrations with the Python SDK'\n---\n\n## Overview\n\nJulep supports various types of tools and integrations that can be used in your tasks:\n\n1. Built-in integrations (e.g., web search, email)\n2. User-defined functions\n3. System tools\n4. Direct API calls\n\n## Built-in Integrations\n\n### Web Search Integration\n\n```python\n# Add web search capability to an agent\nclient.agents.tools.create(\n    agent_id=agent.id,\n    name=\"web_search\",\n    type=\"integration\",\n    integration={\n        \"provider\": \"brave\",\n        \"method\": \"search\",\n        \"setup\": {\n            \"brave_api_key\": \"your_brave_api_key\"\n        }\n    }\n)\n```\n\n### Email Integration\n\n```python\n# Add email capability\nclient.agents.tools.create(\n    agent_id=agent.id,\n    name=\"send_email\",\n    type=\"integration\",\n    integration={\n        \"provider\": \"email\",\n        \"setup\": {\n            \"host\": \"smtp.gmail.com\",\n            \"port\": 587,\n            \"user\": \"your_email@gmail.com\",\n            \"password\": \"your_app_password\"\n        }\n    }\n)\n```\n\n## User-defined Functions\n\nCreate custom tools using function definitions:\n\n```python [expandable]\n# Define a custom tool\nclient.agents.tools.create(\n    agent_id=agent.id,\n    name=\"calculate_price\",\n    type=\"function\",\n    function={\n        \"description\": \"Calculate total price including tax\",\n        \"parameters\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"base_price\": {\n                    \"type\": \"number\",\n                    \"description\": \"Base price before tax\"\n                },\n                \"tax_rate\": {\n                    \"type\": \"number\",\n                    \"description\": \"Tax rate as a decimal\"\n                }\n            },\n            \"required\": [\"base_price\", \"tax_rate\"]\n        }\n    }\n)\n```\n\n## System Tools\n\nUse built-in system operations:\n\n```python\n# Add document management capability\nclient.agents.tools.create(\n    agent_id=agent.id,\n    name=\"manage_docs\",\n    type=\"system\",\n    system={\n        \"resource\": \"agent\",\n        \"subresource\": \"doc\",\n        \"operation\": \"create\"\n    }\n)\n```\n\n## Direct API Calls\n\nMake direct API calls from your tasks:\n\n```python\n# Add external API integration with params_schema\nclient.agents.tools.create(\n    agent_id=agent.id,\n    name=\"weather_api\",\n    type=\"api_call\",\n    api_call={\n        \"method\": \"GET\",\n        \"url\": \"https://api.weather.com/v1/current\",\n        \"headers\": {\n            \"Authorization\": \"Bearer {{env.WEATHER_API_KEY}}\"\n        },\n        \"params_schema\": {\n            \"type\": \"object\",\n            \"properties\": {\n                \"location\": {\n                    \"type\": \"string\",\n                    \"description\": \"City name or coordinates\"\n                },\n                \"units\": {\n                    \"type\": \"string\",\n                    \"enum\": [\"metric\", \"imperial\"],\n                    \"description\": \"Temperature units\"\n                }\n            },\n            \"required\": [\"location\"]\n        }\n    }\n)\n```\n\n## Using Tools in Tasks\n\nExample of using tools in a task:\n\n```yaml [expandable]\nname: Research Assistant\ndescription: Research and summarize topics\n\ntools:\n  - name: web_search\n    type: integration\n    integration:\n      provider: brave\n      method: search\n\n  - name: send_email\n    type: integration\n    integration:\n      provider: email\n\n  - name: calculate_price\n    type: function\n    function:\n      parameters:\n        type: object\n        properties:\n          base_price:\n            type: number\n          tax_rate:\n            type: number\n\nmain:\n  - tool: web_search\n    arguments:\n      query: _.topic\n\n  - tool: calculate_price\n    arguments:\n      base_price: 100\n      tax_rate: 0.1\n\n  - tool: send_email\n    arguments:\n      to: _.email\n      subject: \"Research Results\"\n      body: _.summary\n```\n\n## Error Handling\n\nHandle tool-specific errors:\n\n```python\nfrom julep.exceptions import ToolError, IntegrationError\n\ntry:\n    result = client.executions.create(task_id=task.id)\nexcept ToolError as e:\n    print(f\"Tool execution failed: {e}\")\nexcept IntegrationError as e:\n    print(f\"Integration error: {e}\")\n```\n\n## Best Practices\n\n1. **Security**: Store sensitive credentials in environment variables or secure storage\n2. **Rate Limiting**: Be aware of API rate limits for external services\n3. **Error Handling**: Implement proper error handling for each tool\n4. **Testing**: Test tools with sample data before using in production\n5. **Documentation**: Document tool usage and requirements for team reference "
  },
  {
    "path": "documentation/snippets/integrations-slider.jsx",
    "content": "export const IntegrationsSlider = () => {\n  const [position, setPosition] = useState(0)\n\n  const integrations = [\n    { type: \"image\", content: \"/integrations/assets/email.png\", name: \"Email\" },\n    { type: \"image\", content: \"/integrations/assets/OWM.png\", name: \"Weather\" },\n    { type: \"image\", content: \"/integrations/assets/llamacloud-black.svg\", name: \"LlamaParse\" },\n    { type: \"image\", content: \"/integrations/assets/FFmpeg-Logo.svg\", name: \"FFmpeg\" },\n    { type: \"image\", content: \"/integrations/assets/Cloudinary_logo.svg.png\", name: \"Cloudinary\" },\n    { type: \"image\", content: \"/integrations/assets/unstructured-color.png\", name: \"Unstructured\" },\n    { type: \"image\", content: \"/integrations/assets/ArXiv_logo_2022.svg.png\", name: \"Arxiv\" },\n    { type: \"image\", content: \"/integrations/assets/Algolia_logo_full_blue.svg\", name: \"Algolia\" },\n    { type: \"image\", content: \"/integrations/assets/Brave_logo.svg.png\", name: \"Brave\" },\n    { type: \"image\", content: \"/integrations/assets/pngimg.com - wikipedia_PNG30.png\", name: \"Wikipedia\" },\n    { type: \"image\", content: \"/integrations/assets/logo-full.svg\", name: \"BrowserBase\" },\n    { type: \"image\", content: \"/integrations/assets/spider-logo-github-dark.png\", name: \"Spider\" },\n    { type: \"image\", content: \"/integrations/assets/Playwright_Logo.svg.png\", name: \"Remote Browser\" },\n  ]\n\n  const duplicatedIntegrations = useMemo(\n    () => [...integrations, ...integrations],\n    []\n  )\n\n  useEffect(() => {\n    const interval = setInterval(() => {\n      setPosition((prev) =>\n        prev >= integrations.length * 100 ? 0 : prev + 1\n      );\n    }, 30);\n    return () => clearInterval(interval);\n  }, [integrations.length])\n\n  return (\n    <div\n      style={{\n        overflow: \"hidden\",\n        width: \"100%\",\n        padding: \"2rem 0\",\n        background:\n          \"linear-gradient(to right, rgba(220,220,220,.9), rgba(235,235,235,.95), rgba(220,220,220,.9))\",\n        borderRadius: \"12px\",\n      }}\n    >\n      <div\n        style={{\n          display: \"flex\",\n          transform: `translateX(-${position}px)`,\n          transition: position === 0 ? \"none\" : \"transform .1s linear\",\n        }}\n      >\n        {duplicatedIntegrations.map((integration, idx) => (\n          <div\n            key={`${integration.name}-${idx}`}\n            style={{\n              minWidth: \"100px\",\n              padding: \"0 10px\",\n              display: \"flex\",\n              alignItems: \"center\",\n              justifyContent: \"center\",\n              height: \"60px\",\n            }}\n          >\n            {integration.type === \"emoji\" ? (\n              <span style={{ fontSize: \"3rem\" }}>{integration.content}</span>\n            ) : (\n              <img\n                src={integration.content}\n                alt={integration.name}\n                style={{ maxHeight: \"50px\", maxWidth: \"80px\", objectFit: \"contain\" }}\n              />\n            )}\n          </div>\n        ))}\n      </div>\n    </div>\n  )\n}"
  },
  {
    "path": "documentation/style.css",
    "content": ".topbar-cta-button, #topbar-cta-button, .topbar-cta-button a, #topbar-cta-button a {\n  background: linear-gradient(135deg, #25A18E 0%, #00A5CF 100%) !important;\n  color: #ffffff !important;\n  font-weight: 700;\n  text-transform: uppercase;\n  letter-spacing: 0.5px;\n  padding: 0.32rem 1rem !important;\n  border-radius: 8px !important;\n  position: relative;\n  overflow: hidden;\n  transition: transform 0.15s ease-in-out;\n  box-shadow: 0 3px 8px rgba(0, 165, 207, 0.35);\n  animation: julep-cta-pulse 3.5s infinite;\n}\n\n.topbar-cta-button:hover {\n  transform: translateY(-2px);\n  box-shadow: 0 6px 16px rgba(0, 165, 207, 0.55);\n}\n\n@keyframes julep-cta-pulse {\n  0% {\n    box-shadow: 0 0 0 0 rgba(0, 165, 207, 0.5);\n  }\n  70% {\n    box-shadow: 0 0 0 12px rgba(0, 165, 207, 0);\n  }\n  100% {\n    box-shadow: 0 0 0 0 rgba(0, 165, 207, 0);\n  }\n}"
  },
  {
    "path": "documentation/tutorials/browser-use.mdx",
    "content": "---\ntitle: 'Browser Use'\ndescription: 'Learn how to use Julep browser automation capabilities'\nicon: 'display'\n---\n\n## Overview\n\nThis tutorial demonstrates how to:\n- Set up browser automation with Julep\n- Navigate web pages programmatically \n- Execute browser actions like clicking and typing\n- Process visual feedback through screenshots\n- Create goal-oriented browser automation tasks\n\n<div style={{position: 'relative', paddingBottom: '62.5%', height: '0'}}><iframe src=\"https://www.loom.com/embed/d957274286664eeea426e9b7162b6365?sid=97234925-c4d9-42b7-b87c-4aea7f01587d\" frameborder=\"0\" webkitallowfullscreen mozallowfullscreen allowfullscreen style={{position: 'absolute', top: 0, left: 0, width: '100%', height: '100%'}}></iframe></div>\n\n## Task Structure\n\nLet's break down the task into its core components:\n\n### 1. Input Schema\n\nFirst, we define what inputs our task expects:\n\n```yaml\ninput_schema:\n  type: object\n  properties:\n    goal:\n      type: string\n    agent_id:\n      type: string\n      description: The id of the agent to use for the browser automation\n  required:\n    - goal\n    - agent_id\n```\n\nThis schema specifies that our task expects a goal string describing what the browser automation should accomplish.\n\n### 2. Tools Configuration\n\nNext, we define the external tools our task will use:\n\n```yaml [expandable]\ntools:\n- name: create_browserbase_session\n  type: integration\n  integration:\n    provider: browserbase\n    method: create_session\n    setup:\n      api_key: \"YOUR_BROWSERBASE_API_KEY\"\n      project_id: YOUR_PROJECT_ID\n\n- name: get_session_view_urls\n  type: integration\n  integration:\n    provider: browserbase\n    method: get_live_urls\n\n- name: perform_browser_action\n  type: integration\n  integration:\n    provider: remote_browser\n    method: perform_action\n    setup:\n      width: 1024\n      height: 768\n\n- name: create_julep_session\n  type: system\n  system:\n    resource: session\n    operation: create\n\n- name: session_chat\n  type: system\n  system:\n    resource: session\n    operation: chat\n```\n\n### 3. Main Workflow Steps\n\n<Steps>\n  <Step title=\"Create Julep Session\">\n```yaml\n- tool: create_julep_session\n  arguments:\n    agent: $ str(agent.id)\n    situation: \"The environment is a browser\"\n    recall: 'False'\n```\n\n    This step initializes a new Julep session for the AI agent. The session serves as a container for the conversation history and enables the agent to maintain context throughout the interaction.\n  </Step>\n\n  <Step title=\"Store Session ID\">\n```yaml\n- evaluate:\n    julep_session_id: $ _.id\n```\n    After creating the session, we store its unique identifier for future reference.\n  </Step>\n\n  <Step title=\"Create Browser Session\">\n```yaml\n- tool: create_browserbase_session\n  arguments:\n    project_id: YOUR_PROJECT_ID\n```\n    This step establishes a new browser session using BrowserBase. It creates an isolated, headless Chrome browser instance that the agent can control.\n  </Step>\n\n  <Step title=\"Store Browser Session Info\">\n```yaml\n- evaluate:\n    browser_session_id: $ _.id\n    connect_url: $ _.connect_url\n```\n    We store both the browser session ID and connect URL in a single evaluation step.\n  </Step>\n\n  <Step title=\"Get Session View URLs\">\n```yaml\n- tool: get_session_view_urls\n  arguments:\n    id: $ _.browser_session_id\n```\n    This step retrieves various URLs associated with the browser session, including debugging interfaces and live view URLs.\n  </Step>\n\n  <Step title=\"Store Debugger URL\">\n```yaml\n- evaluate:\n    debugger_url: $ _.urls.debuggerUrl\n```\n    We specifically store the debugger URL, which provides access to Chrome DevTools Protocol debugging interface.\n  </Step>\n\n  <Step title=\"Initial Navigation\">\n```yaml\n- tool: perform_browser_action\n  arguments:\n    connect_url: $ steps[3].output.connect_url\n    action: \"navigate\"\n    text: \"https://www.google.com\"\n```\n    This step navigates to Google's homepage to avoid sending a blank screenshot when computer use starts.\n  </Step>\n\n  <Step title=\"Start Browser Workflow\">\n```yaml\n- workflow: run_browser\n  arguments:\n    julep_session_id: $ steps[1].output.julep_session_id\n    cdp_url: $ steps[3].output.connect_url\n    messages:\n    - role: \"user\"\n      content: |-\n        $ f\"\"\"\n        <SYSTEM_CAPABILITY>\n        * You are utilising a headless chrome browser to interact with the internet.\n        * You can use the computer tool to interact with the browser.\n        * You have access to only the browser.\n        * You are already inside the browser.\n        * You can't open new tabs or windows.\n        * For now, rely on screenshots as the only way to see the browser.\n        * You can't don't have access to the browser's UI.\n        * YOU CANNOT WRITE TO THE SEARCH BAR OF THE BROWSER.\n        </SYSTEM_CAPABILITY>\n        <GOAL>\n        * + {steps[0].input.goal} + NEWLINE + </GOAL> \"\"\"\n```\n    Finally, we initiate the interactive browser workflow with system capabilities and user goal.\n  </Step>\n</Steps>\n\n### 4. Run Browser Subworkflow\n\nThe `run_browser` subworkflow is a crucial component that handles the interactive browser automation. It consists of three main parts:\n\n<Steps>\n  <Step title=\"Agent Interaction\">\n```yaml\n- tool: session_chat\n  arguments:\n    session_id: $ _.julep_session_id\n    messages: $ _.messages\n    recall: $ False\n\n- evaluate:\n    content: $ _.choices[0].message.content\n    tool_calls: |-\n      $ [ \n        { \n          'tool_call_id': tool_call.id, \n          'action': load_json(tool_call.function.arguments)['action'], \n          'text': load_json(tool_call.function.arguments).get('text'), \n          'coordinate': load_json(tool_call.function.arguments).get('coordinate') \n        } \n        for tool_call in _.choices[0].message.tool_calls or [] if tool_call.type == 'function']\n```\n    This step engages the AI agent in conversation, allowing it to:\n    - Process and understand the user's goal\n    - Plan appropriate browser actions\n    - Generate responses based on the current browser state\n    - Make decisions about next steps\n  </Step>\n\n  <Step title=\"Action Execution\">\n```yaml\n- foreach:\n    in: $ _.tool_calls\n    do:\n      tool: perform_browser_action\n      arguments:\n        connect_url: $ steps[0].input.cdp_url\n        action: $ _.action\n        text: $ _.get('text')\n        coordinate: $ _.get('coordinate')\n```\n    This component:\n    - Iterates through planned actions sequentially\n    - Executes browser commands (navigation, clicking, typing)\n    - Handles different types of interactions (text input, mouse clicks)\n    - Captures screenshots for visual feedback\n  </Step>\n\n  <Step title=\"Goal Evaluation\">\n```yaml [expandable]\n- evaluate:\n    contents: >-\n      $ [ \\\n        { \\\n          'type': 'image_url', \\\n          'image_url': { \\\n            'url': result['base64_image'], \\\n          } \\\n        } if result['base64_image'] is not None else \\\n        { \\\n          'type': 'text', \\\n          'text': result['output'] if result['output'] is not None else 'done' \\\n        } \\\n        for result in _]\n\n- evaluate:\n    messages: \"$ [{'content': [_.contents[i]], 'role': 'tool', 'name': 'computer', 'tool_call_id': steps[1].output.tool_calls[i].tool_call_id} for i in range(len(_.contents))]\"\n\n- workflow: check_goal_status\n  arguments:\n    messages: $ _.messages\n    julep_session_id: $ steps[0].input.julep_session_id\n    cdp_url: $ steps[0].input.cdp_url\n```\n    This final part:\n    - Assesses progress toward the user's goal\n    - Determines if additional actions are needed\n    - Maintains conversation context\n    - Decides whether to continue or conclude the workflow\n  </Step>\n</Steps>\n\n### 5. Check Goal Status Subworkflow\n\nThe `check_goal_status` subworkflow is a recursive component that ensures continuous operation until the goal is achieved:\n\n<Steps>\n  <Step title=\"Check Goal Status\">\n```yaml\ncheck_goal_status:\n- if: $ len(_.messages) > 0\n  then:\n    workflow: run_browser\n    arguments:\n      messages: $ _.messages\n      julep_session_id: $ _.julep_session_id\n      cdp_url: $ _.cdp_url\n```\n  </Step>\n</Steps>\n\nThis workflow:\n- Checks if there are any messages to process (`len(_.messages) > 0`)\n- If messages exist, recursively calls the `run_browser` workflow\n- Passes along the current session context and connection details\n- Maintains the conversation flow until the goal is achieved\n- Automatically terminates when no more messages need processing\n\nThis recursive pattern ensures that the browser automation continues until either:\n- The goal is successfully achieved\n- No more actions are needed\n- An error occurs that prevents further progress\n\n<Accordion title=\"Complete Task YAML\" icon=\"code\">\n```yaml YAML [expandable]\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Browser Use Task\ndescription: A Julep agent that can use the computer tool to interact with the browser.\n\n########################################################\n################### INPUT SCHEMA #######################\n########################################################\n\ninput_schema:\n  type: object\n  properties:\n    goal:\n      type: string\n  required:\n    - goal\n\n########################################################\n####################### TOOLS ##########################\n########################################################\n\ntools:\n- name: create_browserbase_session\n  type: integration\n  integration:\n    provider: browserbase\n    method: create_session\n    setup:\n      api_key: \"YOUR_BROWSERBASE_API_KEY\"\n      project_id: \"YOUR_BROWSERBASE_PROJECT_ID\"\n\n- name: get_session_view_urls\n  type: integration\n  integration:\n    provider: browserbase\n    method: get_live_urls\n    setup:\n      api_key: \"YOUR_BROWSERBASE_API_KEY\"\n      project_id: \"YOUR_BROWSERBASE_PROJECT_ID\"\n\n- name: perform_browser_action\n  type: integration\n  integration:\n    provider: remote_browser\n    method: perform_action\n    setup:\n      width: 1024\n      height: 768\n\n- name: create_julep_session\n  type: system\n  system:\n    resource: session\n    operation: create\n\n- name: session_chat\n  type: system\n  system:\n    resource: session\n    operation: chat\n\n########################################################\n################### MAIN WORKFLOW ######################\n########################################################\n\nmain:\n\n# Step #0 - Create Julep Session\n- tool: create_julep_session\n  arguments:\n    agent: $ str(agent.id)\n    situation: \"Juelp Browser Use Agent\"\n    recall: 'False'\n\n# Step #1 - Store Julep Session ID\n- evaluate:\n    julep_session_id: $ _.id\n\n# Step #2 - Create Browserbase Session\n- tool: create_browserbase_session\n  arguments:\n    project_id: \"c35ee022-883e-4070-9f3c-89607393214b\"\n\n# Step #3 - Store Browserbase Session Info\n- evaluate:\n    browser_session_id: $ _.id\n    connect_url: $ _.connect_url\n\n# Step #4 - Get Session View URLs\n- tool: get_session_view_urls\n  arguments:\n    id: $ _.browser_session_id\n\n# Step #5 - Store Debugger URL\n- evaluate:\n    debugger_url: $ _.urls.debuggerUrl\n\n# Step #6 - Navigate to Google\n# Navigate to google to avoid sending a blank \n# screenshot when computer use starts\n- tool: perform_browser_action\n  arguments:\n    connect_url: $ steps[3].output.connect_url\n    action: \"navigate\"\n    text: \"https://www.google.com\"\n\n# Step #7 - Run Browser Workflow\n- workflow: run_browser\n  arguments:\n    julep_session_id: $ steps[1].output.julep_session_id\n    cdp_url: $ steps[3].output.connect_url\n    messages:\n    - role: \"user\"\n      content: |-\n        $ f\"\"\"\n        <SYSTEM_CAPABILITY>\n        * You are utilising a headless chrome browser to interact with the internet.\n        * You can use the computer tool to interact with the browser.\n        * You have access to only the browser.\n        * You are already inside the browser.\n        * You can't open new tabs or windows.\n        * For now, rely on screenshots as the only way to see the browser.\n        * You don't have access to the browser's UI.\n        * YOU CANNOT WRITE TO THE SEARCH BAR OF THE BROWSER.\n        </SYSTEM_CAPABILITY>\n        <GOAL>\n        * + {steps[0].input.goal} + NEWLINE + </GOAL> \"\"\"\n\n\n########################################################\n################# RUN BROWSER SUBWORKFLOW #################\n########################################################\n\nrun_browser:\n\n# Step #0 - Agent Interaction\n- tool: session_chat\n  arguments:\n    session_id: $ _.julep_session_id\n    messages: $ _.messages\n    recall: $ False\n\n# Step #1 - Evaluate the response from the agent\n- evaluate:\n    content: $ _.choices[0].message.content\n    tool_calls: |-\n      $ [ \n        { \n          'tool_call_id': tool_call.id, \n          'action': load_json(tool_call.function.arguments)['action'], \n          'text': load_json(tool_call.function.arguments).get('text'), \n          'coordinate': load_json(tool_call.function.arguments).get('coordinate') \n        } \n        for tool_call in _.choices[0].message.tool_calls or [] if tool_call.type == 'function']\n\n# Step #2 - Perform the actions requested by the agent\n- foreach:\n    in: $ _.tool_calls\n    do:\n      tool: perform_browser_action\n      arguments:\n        connect_url: $ steps[0].input.cdp_url\n        action: $ _.action if not (str(_.get('text', '')).startswith('http') and _.action == 'type') else 'navigate'\n        text: $ _.get('text')\n        coordinate: $ _.get('coordinate')\n\n# Step #3 - Convert the result of the actions into a chat message\n- evaluate:\n    contents: >-\n      $ [ \\\n        { \\\n          'type': 'image_url', \\\n          'image_url': { \\\n            'url': result['base64_image'], \\\n          } \\\n        } if result['base64_image'] is not None else \\\n        { \\\n          'type': 'text', \\\n          'text': result['output'] if result['output'] is not None else 'done' \\\n        } \\\n        for result in _]\n\n# Step #4 - Convert the result of the actions into a chat message\n- evaluate:\n    messages: \"$ [{'content': [_.contents[i]], 'role': 'tool', 'name': 'computer', 'tool_call_id': steps[1].output.tool_calls[i].tool_call_id} for i in range(len(_.contents))]\"\n\n# Step #5 - Check if the goal is achieved and recursively run the browser\n- workflow: check_goal_status\n  arguments:\n    messages: $ _.messages\n    julep_session_id: $ steps[0].input.julep_session_id\n    cdp_url: $ steps[0].input.cdp_url\n\n\n########################################################\n############## CHECK GOAL STATUS SUBWORKFLOW ##############\n########################################################\n\ncheck_goal_status:\n\n# Step #0 - Check if the goal is achieved and recursively run the browser\n- if: $ len(_.messages) > 0\n  then:\n    workflow: run_browser\n    arguments:\n      messages: $ _.messages\n      julep_session_id: $ _.julep_session_id\n      cdp_url: $ _.cdp_url\n```\n</Accordion>\n\n## Usage\n\nHere's how to use this task with the Julep SDK:\n\n<CodeGroup>\n\n```python Python [expandable]\nfrom julep import Client\nimport yaml\nimport time\n\n# Initialize the client\nclient = Client(api_key=JULEP_API_KEY)\n\n# Create the agent\nagent = client.agents.create(\n  name=\"Julep Browser Use Agent\",\n  about=\"A Julep agent that can use the computer tool to interact with the browser.\",\n)\n\n# Load the task definition\nwith open('browser_task.yaml', 'r') as file:\n  task_definition = yaml.safe_load(file)\n\n# Create the task\ntask = client.tasks.create(\n  agent_id=agent.id,\n  **task_definition\n)\n\n# Create the execution\nexecution = client.executions.create(\n    task_id=task.id,\n    input={\n        \"agent_id\": agent.id,\n        \"goal\": \"Search for recent news about artificial intelligence\"\n    }\n)\n\n# Wait for the execution to complete\nwhile (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:\n    print(result.status)\n    time.sleep(1)\n\n# Print the result\nif result.status == \"succeeded\":\n    print(result.output)\nelse:\n    print(f\"Error: {result.error}\")\n```\n\n```js Node.js [expandable]\nimport { Julep } from '@julep/sdk';\nimport yaml from 'yaml';\nimport fs from 'fs';\n\n// Initialize the client\nconst client = new Julep({\n  apiKey: 'your_julep_api_key'\n});\n\n// Create the agent\nconst agent = await client.agents.create({\n  name: \"Julep Browser Use Agent\",\n  about: \"A Julep agent that can use the computer tool to interact with the browser.\",\n});\n\n// Parse the task definition\nconst taskDefinition = yaml.parse(fs.readFileSync('browser_task.yaml', 'utf8'));\n\n// Create the task\nconst task = await client.tasks.create(\n  agent.id,\n  taskDefinition\n);\n\n// Create the execution\nconst execution = await client.executions.create(\n  task.id,\n  {\n    input: { \n      \"agent_id\": agent.id,\n      \"goal\": \"Search for recent news about artificial intelligence\"\n    }\n  }\n);\n\n// Wait for the execution to complete\nlet result;\nwhile (true) {\n  result = await client.executions.get(execution.id);\n  if (result.status === 'succeeded' || result.status === 'failed') break;\n  console.log(result.status);\n  await new Promise(resolve => setTimeout(resolve, 1000));\n}\n\n// Print the result\nif (result.status === 'succeeded') {\n  console.log(result.output);\n} else {\n  console.error(`Error: ${result.error}`);\n}\n```\n\n</CodeGroup>\n\n## Key Features\n\n- **Browser Automation**: Performs web interactions like navigation, clicking, and typing\n- **Visual Feedback**: Captures screenshots to verify actions and understand page state\n- **Goal-Oriented**: Continues executing actions until the user's goal is achieved\n- **Secure Sessions**: Uses BrowserBase for isolated browser instances\n- **Interactive Workflow**: Uses run_browser subworkflow for continuous interaction\n\n## Next Steps\n\n- Try this task yourself, check out the full example, see the [browser-use cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/06-browser-use.ipynb).\n - To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page.\n\n## Related Concepts\n\n- [Agents](/concepts/agents)\n- [Tasks](/concepts/tasks)\n- [Tools](/concepts/tools)\n"
  },
  {
    "path": "documentation/tutorials/hacker-news-newsletter.mdx",
    "content": "---\ntitle: 'Hacker News Newsletter Generator'\ndescription: 'Learn how to build a personalized newsletter generator that fetches top Hacker News stories, analyzes their relevance to user interests, and creates AI-powered summaries'\nicon: 'newspaper'\n---\n\n## Overview\n\nThis tutorial demonstrates how to:\n- Fetch and filter top stories from Hacker News API\n- Scrape full article content using web scraping integration\n- Personalize content based on user preferences using AI\n- Generate concise summaries for curated stories\n- Process data in parallel for optimal performance\n\n## Task Structure\n\nLet's break down the task into its core components:\n\n### 1. Input Schema\n\nFirst, we define what inputs our task expects:\n\n```yaml\ninput_schema:\n  type: object\n  properties:\n    min_score:\n      type: integer\n      default: 50\n    num_stories:\n      type: integer\n      default: 10\n      description: Number of stories to include in newsletter\n    user_preferences:\n      type: array\n      items:\n        type: string\n      description: User's technology interests (e.g., [\"AI/ML\", \"Python\", \"Startups\"])\n```\n\nThis schema allows users to:\n- Set a minimum HN score threshold for quality filtering\n- Specify how many stories to include in the final newsletter\n- Define their technology interests for personalization\n\n### 2. Tools Configuration\n\nNext, we define the external tools our task will use:\n\n```yaml\n- name: fetch_hn_stories\n  type: api_call\n  api_call:\n    method: GET\n    url: https://hacker-news.firebaseio.com/v0/topstories.json\n    headers:\n      Content-Type: application/json\n\n- name: get_story_details\n  type: api_call\n  api_call:\n    method: GET\n    url: \"https://example.com\"\n    headers:\n      Content-Type: application/json\n\n- name: get_comment_details\n  type: api_call\n  api_call:\n    method: GET\n    url: https://hacker-news.firebaseio.com/v0/item/{{comment_id}}.json\n\n- name: spider_fetch\n  type: integration\n  integration:\n    provider: spider\n    setup:\n      spider_api_key: YOUR_SPIDER_API_KEY\n```\n\nWe're using:\n- Direct Hacker News API calls for stories and comments\n- Spider integration for advanced web scraping capabilities\n\n### 3. Main Workflow Steps\n\n<Steps>\n\n  <Step title=\"Fetch Top Story IDs\">\n```yaml\n- tool: fetch_hn_stories\n  arguments:\n    url: \"https://hacker-news.firebaseio.com/v0/topstories.json\"\n  label: fetch_story_ids\n\n- evaluate:\n    story_ids: $ steps[\"fetch_story_ids\"].output.json[:50]\n    message: $ f\"Fetched {len(steps['fetch_story_ids'].output.json)} stories, processing top 50\"\n  label: extract_ids\n```\n\n    This step:\n    - Fetches the current top 500 story IDs from Hacker News\n    - Extracts the first 50 for processing\n  </Step>\n\n  <Step title=\"Fetch Story Details in Parallel\">\n```yaml\n- over: $ steps[\"extract_ids\"].output[\"story_ids\"]\n  parallelism: 10\n  map:\n    tool: get_story_details\n    arguments:\n      method: GET\n      url: $ f\"https://hacker-news.firebaseio.com/v0/item/{_}.json\"\n  label: all_stories\n\n- evaluate:\n    stories: $ [item[\"json\"] for item in _ if item and \"json\" in item]\n  label: extract_stories\n```\n\n    This step:\n    - Fetches full details for each story ID\n    - Processes 10 stories in parallel for efficiency\n    - Extracts successfully fetched story data\n  </Step>\n\n  <Step title=\"Filter and Sort Stories\">\n```yaml\n- evaluate:\n    filtered: $ [s for s in steps[\"extract_stories\"][\"output\"][\"stories\"] \n                 if \"score\" in s and s[\"score\"] >= inputs.get(\"min_score\", 50)]\n  label: filter_stories\n\n- evaluate:\n    sorted_stories: '$ steps[\"filter_stories\"][\"output\"][\"filtered\"][:inputs.get(\"num_stories\", 10)]'\n  label: sort_stories\n```\n\n    This step:\n    - Filters stories by minimum score threshold\n    - Sorts by score and takes the top N stories\n    - Ensures quality content for the newsletter\n  </Step>\n\n  <Step title=\"Scrape Full Article Content\">\n```yaml [expandable]\n- over: $ steps[\"sort_stories\"][\"output\"][\"sorted_stories\"]\n  parallelism: 4\n  map:\n    tool: spider_fetch\n    arguments:\n      url: $ _['url']\n      params:\n        request: smart_mode\n        return_format: markdown\n        proxy_enabled: $ True\n        filter_output_images: $ True\n        filter_output_svg: $ True\n        readability: $ True\n        limit: 1\n  label: fetch_content\n\n- evaluate:\n    scraped_contents: '$ [item[\"result\"][0][\"content\"] if item and \"result\" in item \n                         and item[\"result\"] and \"content\" in item[\"result\"][0] else \"\" \n                         for item in _]'\n  label: extract_scraped_content\n```\n\n    <Accordion title=\"Spider scraping parameters explained\">\n      - **smart_mode**: Intelligently extracts main content\n      - **return_format: markdown**: Clean, parseable text format\n      - **proxy_enabled**: Avoids rate limiting and blocks\n      - **filter_output_images/svg**: Text-only content\n      - **readability**: Enhanced article parsing\n      - **parallelism: 4**: Balanced to avoid overwhelming target sites\n    </Accordion>\n\n    This step:\n    - Scrapes full article content for each story\n    - Converts to clean markdown format\n    - Handles failed scrapes gracefully\n  </Step>\n\n  <Step title=\"Fetch Top Comments\">\n```yaml\n- evaluate:\n    comment_pairs: '$ [{\"story_id\": story[\"id\"], \"story_index\": idx, \"comment_id\": kid} \n                      for idx, story in enumerate(steps[\"sort_stories\"][\"output\"][\"sorted_stories\"]) \n                      if \"kids\" in story for kid in story[\"kids\"][:3]]'\n  label: prepare_comments\n\n- over: '$ steps[\"prepare_comments\"][\"output\"][\"comment_pairs\"]'\n  parallelism: 15\n  map:\n    tool: get_comment_details\n    arguments:\n      method: GET\n      url: '$ f\"https://hacker-news.firebaseio.com/v0/item/{_[\"comment_id\"]}.json\"'\n  label: fetch_all_comments\n```\n\n    This step:\n    - Prepares comment IDs (up to 3 per story)\n    - Fetches comment details with high parallelism\n    - Maintains story-comment relationships\n  </Step>\n\n  <Step title=\"Personalize Content\">\n```yaml [expandable]\n- evaluate:\n    stories_with_comments: '$ [dict(story, \n                                   content=steps[\"extract_scraped_content\"][\"output\"][\"scraped_contents\"][i], \n                                   top_comments=[item[1] for item in steps[\"comments_with_index\"][\"output\"][\"comments_grouped\"] \n                                               if item[0] == i]) \n                              for i, story in enumerate(steps[\"sort_stories\"][\"output\"][\"sorted_stories\"])]'\n  label: final_stories_with_comments\n\n- over: $ steps[\"final_stories_with_comments\"][\"output\"][\"stories_with_comments\"]\n  parallelism: 10\n  map:\n    prompt:\n    - role: system\n      content: |-\n        $ f'''\n        You are a content curator. Score this HN story's relevance to the user's interests.\n        User interests: {steps[0].input.user_preferences}\n\n        Return only a JSON object with the relevance score (0-100).\n        Return ONLY raw JSON without markdown code blocks\n        '''\n    - role: user\n      content: >-\n        $ f'''\n        Story to analyze:\n        Title: {_[\"title\"]}\n        URL: {_[\"url\"]}\n        Score: {_[\"score\"]}\n        Content preview: {_[\"content\"]}\n        Top comment: {_[\"top_comments\"][0][\"text\"]}\n\n        Return format: \"relevance_score\" from 0 to 100\n        '''\n    unwrap: true\n  label: score_stories\n\n- evaluate:\n    personalized_stories: $ [item for item in steps[\"combine_scores\"][\"output\"][\"scored_stories\"] \n                            if item[\"relevance_score\"] >= 60]\n  label: filter_personalized\n```\n\n    This step:\n    - Combines stories with their content and comments\n    - Uses AI to score relevance (0-100) based on user preferences\n    - Filters stories with relevance >= 60 for high personalization\n  </Step>\n\n  <Step title=\"Generate Summaries and Final Output\">\n```yaml\n- over: $ steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"]\n  parallelism: 10\n  map:\n    prompt:\n    - role: system\n      content: |\n        Generate a concise, insightful summary (max 100 words) for this article.\n        Focus on key insights and why it matters.\n    - role: user\n      content: >-\n        $ f'''\n        Title: {_[\"story\"][\"title\"]}\n        Content: {_[\"story\"][\"content\"]}\n        Top comments: {_[\"story\"][\"top_comments\"]}\n        '''\n    unwrap: true\n  label: generate_summaries\n\n- evaluate:\n    final_output: |\n      $ [{\n          \"title\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"][\"title\"],\n          \"url\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"][\"url\"],\n          \"hn_url\": f\"https://news.ycombinator.com/item?id={steps['filter_personalized']['output']['personalized_stories'][i]['story']['id']}\",\n          \"comments_count\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"].get(\"descendants\", 0),\n          \"summary\": steps[\"generate_summaries\"][\"output\"][i]\n      } for i in range(len(steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"]))]\n  label: prepare_final_output\n```\n\n    This step:\n    - Generates 100-word AI summaries for each story\n    - Formats the final newsletter with all relevant information\n    - Includes both article URL and HN discussion URL\n  </Step>\n\n</Steps>\n\n<Accordion title=\"Complete Task YAML\" icon=\"code\">\n```yaml YAML [expandable]\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: HN Newsletter Generator\ndescription: Fetch top Hacker News stories, personalize content\ninput_schema:\n  type: object\n  properties:\n    min_score:\n      type: integer\n      default: 50\n    num_stories:\n      type: integer\n      default: 10\n      description: Number of stories to include in newsletter\n    user_preferences:\n      type: array\n      items:\n        type: string\n      description: User's technology interests (e.g., [\"AI/ML\", \"Python\", \"Startups\"])\n\ntools:\n# Fetch top story IDs from Hacker News\n- name: fetch_hn_stories\n  type: api_call\n  api_call:\n    method: GET\n    url: https://hacker-news.firebaseio.com/v0/topstories.json\n    headers:\n      Content-Type: application/json\n\n# Get detailed information for a specific story\n- name: get_story_details\n  type: api_call\n  api_call:\n    method: GET\n    url: \"https://example.com\"\n    headers:\n      Content-Type: application/json\n\n# Fetch individual comment details\n- name: get_comment_details\n  type: api_call\n  api_call:\n    method: GET\n    url: https://hacker-news.firebaseio.com/v0/item/{{comment_id}}.json\n\n# Spider web scraping integration\n- name: spider_fetch\n  type: integration\n  integration:\n    provider: spider\n    setup:\n      spider_api_key: YOUR_SPIDER_API_KEY\n\nmain:\n# Step 0: Fetch top story IDs from Hacker News\n- tool: fetch_hn_stories\n  arguments:\n    url: \"https://hacker-news.firebaseio.com/v0/topstories.json\"\n  label: fetch_story_ids\n\n# Step 1: Extract first 50 story IDs\n- evaluate:\n    story_ids: $ steps[\"fetch_story_ids\"].output.json[:50]\n    message: $ f\"Fetched {len(steps['fetch_story_ids'].output.json)} stories, processing top 50\"\n  label: extract_ids\n\n# Step 2: Fetch details for each story in parallel\n- over: $ steps[\"extract_ids\"].output[\"story_ids\"]\n  parallelism: 10\n  map:\n    tool: get_story_details\n    arguments:\n      method: GET\n      url: $ f\"https://hacker-news.firebaseio.com/v0/item/{_}.json\"\n  label: all_stories\n\n# Step 3: Extract successfully fetched story data\n- evaluate:\n    stories: $ [item[\"json\"] for item in _ if item and \"json\" in item]\n  label: extract_stories\n\n# Step 4: Filter by score\n- evaluate:\n    filtered: $ [s for s in steps[\"extract_stories\"][\"output\"][\"stories\"] if \"score\" in s and s[\"score\"] >= inputs.get(\"min_score\", 50)]\n  label: filter_stories\n\n# Step 5: Sort stories by score and limit\n- evaluate:\n    sorted_stories: '$ steps[\"filter_stories\"][\"output\"][\"filtered\"][:inputs.get(\"num_stories\", 10)]'\n  label: sort_stories\n\n# Step 6: Fetch full article content using Spider\n- over: $ steps[\"sort_stories\"][\"output\"][\"sorted_stories\"]\n  parallelism: 4\n  map:\n    tool: spider_fetch\n    arguments:\n      url: $ _['url']\n      params:\n        request: smart_mode\n        return_format: markdown\n        proxy_enabled: $ True\n        filter_output_images: $ True\n        filter_output_svg: $ True\n        readability: $ True\n        limit: 1\n  label: fetch_content\n\n# Step 7: Extract scraped content\n- evaluate:\n    scraped_contents: '$ [item[\"result\"][0][\"content\"] if item and \"result\" in item and item[\"result\"] and \"content\" in item[\"result\"][0] else \"\" for item in _]'\n  label: extract_scraped_content\n\n# Step 8: Prepare comment fetching\n- evaluate:\n    comment_pairs: '$ [{\"story_id\": story[\"id\"], \"story_index\": idx, \"comment_id\": kid} for idx, story in \nenumerate(steps[\"sort_stories\"][\"output\"][\"sorted_stories\"]) if \"kids\" in story for kid in story[\"kids\"][:3]]'\n  label: prepare_comments\n\n# Step 9: Fetch all comment details\n- over: '$ steps[\"prepare_comments\"][\"output\"][\"comment_pairs\"]'\n  parallelism: 15\n  map:\n    tool: get_comment_details\n    arguments:\n      method: GET\n      url: '$ f\"https://hacker-news.firebaseio.com/v0/item/{_[\"comment_id\"]}.json\"'\n  label: fetch_all_comments\n\n# Step 10: Extract comment data\n- evaluate:\n    comment_results: '$ [item[\"json\"] for item in _ if item and \"json\" in item and item[\"json\"]]'\n  label: extract_comments\n\n# Step 11: Group comments by story\n- evaluate:\n    comments_grouped: '$ [[pair[\"story_index\"], steps[\"extract_comments\"][\"output\"][\"comment_results\"][i]] for i, pair in \nenumerate(steps[\"prepare_comments\"][\"output\"][\"comment_pairs\"])]'\n  label: comments_with_index\n\n# Step 12: Combine stories with content and comments\n- evaluate:\n    stories_with_comments: '$ [dict(story, content=steps[\"extract_scraped_content\"][\"output\"][\"scraped_contents\"][i], top_comments=[item[1] for item in \nsteps[\"comments_with_index\"][\"output\"][\"comments_grouped\"] if item[0] == i]) for i, story in enumerate(steps[\"sort_stories\"][\"output\"][\"sorted_stories\"])]'\n  label: final_stories_with_comments\n\n# Step 13: Score stories based on user preferences\n- over: $ steps[\"final_stories_with_comments\"][\"output\"][\"stories_with_comments\"]\n  parallelism: 10\n  map:\n    prompt:\n    - role: system\n      content: |-\n        $ f'''\n        You are a content curator. Score this HN story's relevance to the user's interests.\n        User interests: $ {{ steps[0].input.user_preferences }}\n\n        Return only a JSON object with the relevance score (0-100).\n        Return ONLY raw JSON without markdown code blocks\n        '''\n    - role: user\n      content: >-\n        $ f'''\n        Story to analyze:\n        Title: $ {{ _[\"title\"] }}\n        URL: $ {{ _[\"url\"] }}\n        Score: $ {{ _[\"score\"] }}\n        Content preview: $ {{ _[\"content\"]}}\n        Top comment: $ {{ _[\"top_comments\"][0][\"text\"] }}\n\n        Return format: \"relevance_score\" from 0 to 100\n        '''\n    unwrap: true\n  label: score_stories\n\n# Step 14: Combine with scores\n- evaluate:\n    scored_stories: '$ [{\"story\": steps[\"final_stories_with_comments\"][\"output\"][\"stories_with_comments\"][i], \"relevance_score\": json.loads(steps[\"score_stories\"][\"output\"][i])[\"relevance_score\"]} for i in range(len(steps[\"score_stories\"][\"output\"]))]'\n  label: combine_scores\n\n# Step 15: Filter by relevance\n- evaluate:\n    personalized_stories: $ [item for item in steps[\"combine_scores\"][\"output\"][\"scored_stories\"] if item[\"relevance_score\"] >= 60]\n  label: filter_personalized\n\n# Step 16: Generate summaries\n- over: $ steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"]\n  parallelism: 10\n  map:\n    prompt:\n    - role: system\n      content: |\n        Generate a concise, insightful summary (max 100 words) for this article.\n        Focus on key insights and why it matters.\n    - role: user\n      content: >-\n        $ f'''\n        Title: {{ _[\"story\"][\"title\"] }}\n        Content: {{ _[\"story\"][\"content\"] }}\n        Top comments: {{ _[\"story\"][\"top_comments\"] }}\n        '''\n    unwrap: true\n  label: generate_summaries\n\n# Step 17: Prepare final output\n- evaluate:\n    final_output: |\n      $ [{\n          \"title\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"][\"title\"],\n          \"url\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"][\"url\"],\n          \"hn_url\": f\"https://news.ycombinator.com/item?id={{steps['filter_personalized']['output']['personalized_stories'][i]['story']['id']}}\",\n          \"comments_count\": steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"][i][\"story\"].get(\"descendants\", 0),\n          \"summary\": steps[\"generate_summaries\"][\"output\"][i]\n      } for i in range(len(steps[\"filter_personalized\"][\"output\"][\"personalized_stories\"]))]\n  label: prepare_final_output\n```\n</Accordion>\n\n## Usage\n\nHere's how to use this task with the Julep SDK:\n\n<CodeGroup>\n\n```python Python [expandable]\nfrom julep import Client\nimport time\nimport yaml\n\n# Initialize the client\nclient = Client(api_key=JULEP_API_KEY)\n\n# Create the agent\nagent = client.agents.create(\n  name=\"Hacker News Agent\",\n  about=\"A hacker news agent that can fetch the top stories from Hacker News and summarize them.\",\n  model=\"gpt-4o\"\n)\n\n# Load the task definition\nwith open('hn_newsletter_task.yaml', 'r') as file:\n  task_definition = yaml.safe_load(file)\n\n# Create the task\ntask = client.tasks.create(\n  agent_id=agent.id,\n  **task_definition\n)\n\n# Create the execution\nexecution = client.executions.create(\n  task_id=task.id,\n  input={\n    \"min_score\": 100,\n    \"num_stories\": 5,\n    \"user_preferences\": [\"AI/ML\", \"Python\", \"DevOps\", \"Cloud Computing\"]\n  }\n)\n\n# Wait for the execution to complete\nwhile (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:\n    print(result.status)\n    time.sleep(5)\n\n# Print the result\nif result.status == \"succeeded\":\n    for story in result.output['final_output']:\n        print(f\"Title: {story['title']}\")\n        print(f\"URL: {story['url']}\")\n        print(f\"HN Discussion: {story['hn_url']}\")\n        print(f\"Comments: {story['comments_count']}\")\n        print(f\"Summary: {story['summary']}\")\n        print(\"-\" * 80)\nelse:\n    print(f\"Error: {result.error}\")\n```\n\n```js Node.js [expandable]\nimport { Julep } from '@julep/sdk';\nimport fs from 'fs';\nimport yaml from 'yaml';\n\n// Initialize the client\nconst client = new Julep({\n  apiKey: 'your_julep_api_key'\n});\n\n// Create the agent\nconst agent = await client.agents.create({\n  name: \"Hacker News Agent\",\n  about: \"A hacker news agent that can fetch the top stories from Hacker News and summarize them.\",\n  model: \"gpt-4o\"\n});\n\n// Load the task definition\nconst taskDefinition = yaml.parse(fs.readFileSync('hn_newsletter_task.yaml', 'utf8'));\n\n// Create the task\nconst task = await client.tasks.create(\n  agent.id,\n  taskDefinition\n);\n\n// Create the execution\nconst execution = await client.executions.create(\n  task.id,\n  {\n    input: { \n      min_score: 100,\n      num_stories: 5,\n      user_preferences: [\"AI/ML\", \"Python\", \"DevOps\", \"Cloud Computing\"]\n    }\n  }\n);\n\n// Wait for the execution to complete\nlet result;\nwhile (true) {\n  result = await client.executions.get(execution.id);\n  if (result.status === 'succeeded' || result.status === 'failed') break;\n  console.log(result.status);\n  await new Promise(resolve => setTimeout(resolve, 5000));\n}\n\n// Print the result\nif (result.status === 'succeeded') {\n  result.output.final_output.forEach(story => {\n    console.log(`Title: ${story.title}`);\n    console.log(`URL: ${story.url}`);\n    console.log(`HN Discussion: ${story.hn_url}`);\n    console.log(`Comments: ${story.comments_count}`);\n    console.log(`Summary: ${story.summary}`);\n    console.log('-'.repeat(80));\n  });\n} else {\n  console.error(`Error: ${result.error}`);\n}\n```\n\n</CodeGroup>\n\n## Example Output\n\nAn example output when running this task with user preferences for AI/ML and Python:\n\n<Accordion title=\"Example Newsletter Output\">\n**Title:** OpenAI Announces GPT-5 with Revolutionary Reasoning Capabilities  \n**URL:** https://openai.com/research/gpt-5  \n**HN Discussion:** https://news.ycombinator.com/item?id=12345678  \n**Comments:** 234  \n**Summary:** OpenAI's GPT-5 demonstrates unprecedented reasoning abilities and multimodal understanding. The model shows significant improvements in code generation, mathematical reasoning, and real-world problem solving. Key breakthrough involves new architecture allowing dynamic computation allocation based on task complexity. Community discusses implications for AI safety and potential applications in scientific research.\n\n---\n\n**Title:** Python 3.13 Released with Major Performance Improvements  \n**URL:** https://python.org/downloads/release/python-313  \n**HN Discussion:** https://news.ycombinator.com/item?id=12345679  \n**Comments:** 156  \n**Summary:** Python 3.13 brings 40% performance improvements through adaptive bytecode specialization and improved memory management. New features include better error messages, enhanced typing support, and native WASM compilation. Developers report significant speedups in data processing workloads. Discussion highlights compatibility concerns with popular libraries and migration strategies for large codebases.\n\n---\n\n**Title:** New ML Framework Achieves 10x Training Speed on Consumer GPUs  \n**URL:** https://github.com/fastML/framework  \n**HN Discussion:** https://news.ycombinator.com/item?id=12345680  \n**Comments:** 189  \n**Summary:** FastML framework enables training large language models on consumer hardware through innovative gradient compression and distributed computing techniques. Benchmarks show 10x speedup compared to PyTorch for specific workloads. Framework supports automatic mixed precision and memory-efficient attention mechanisms. Community excited about democratizing ML research but debates production readiness.\n</Accordion>\n\n## Monitoring Execution\n\nTrack the execution progress and debug issues:\n\n```python\n# Get execution transitions\ntransitions = client.executions.transitions.list(execution.id).items\n\nfor i, transition in enumerate(transitions):\n    print(f\"Step {i}: {transition.type}\")\n    if transition.type == \"step\":\n        print(f\"Label: {transition.current.label}\")\n        print(f\"Status: {transition.status}\")\n        if transition.status == \"failed\":\n            print(f\"Error: {transition.error}\")\n    print(\"-\" * 40)\n```\n\n## Customization Ideas\n\n1. **Email Integration**: Add email sending to deliver newsletters automatically\n2. **Scheduling**: Set up periodic execution for daily/weekly newsletters\n\n## Next Steps\n\n- Try this task yourself, check out the full example in the [Hacker News cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/11-hacker-news.ipynb)\n- Learn more about the [Spider integration](/integrations/spider) for web scraping\n- Explore [parallel processing patterns](/advanced/types-of-task-steps#parallel-execution) in Julep\n\n## Related Concepts\n\n- [Agents](/concepts/agents)\n- [Tasks](/concepts/tasks)\n- [Tools](/concepts/tools)\n- [Integrations](/integrations/supported-integrations)\n- [Python Expressions](/advanced/python-expression)"
  },
  {
    "path": "documentation/tutorials/julep-assistant.mdx",
    "content": "---\ntitle: 'Building a RAG-powered AI Assistant with Julep'\ndescription: 'Learn how to build an intelligent AI support assistant using Julep with document indexing, RAG capabilities, and a chat interface'\nicon: 'robot'\n---\n\n## Overview\n\nThis tutorial demonstrates how to build a production-ready AI assistant using Julep. We'll create an intelligent support assistant that can:\n\n- Crawl and index documentation automatically\n- Answer questions using RAG (Retrieval-Augmented Generation)\n- Provide contextual, accurate responses based on indexed content\n- Offer an interactive chat interface with session management\n- Collect and validate user feedback for continuous improvement\n\n## What You'll Learn\n\nBy the end of this tutorial, you'll understand how to:\n\n1. Configure a Julep agent with specific instructions and capabilities\n2. Create complex workflows for document processing and indexing\n3. Implement RAG-powered conversations with hybrid search\n4. Build an interactive chat interface using Chainlit\n5. Deploy a production-ready AI assistant\n\n## Prerequisites\n\n- Python 3.8+\n- Julep API key (get one at [platform.julep.ai](https://platform.julep.ai))\n- Basic understanding of Julep concepts (agents, tasks, sessions)\n- Spider API key for web crawling\n\n## Project Structure\n\nThe Julep Assistant project is organized as follows:\n\n```bash\njulep-assistant/\n├── agent.yaml              # Agent configuration\n├── task/                   # Julep task definitions\n│   ├── main.yaml          # Main workflow task\n│   ├── crawl.yaml         # Web crawling sub-task\n│   └── full_task.yaml     # Complete task with all steps\n├── scripts/               # Utility scripts\n│   ├── crawler.py         # Standalone web crawler\n│   └── indexer.py         # Document indexing utility\n├── chainlit-ui/           # Web interface\n│   ├── app.py            # Main Chainlit application\n│   ├── feedback/         # Feedback handling system\n│   └── requirements.txt  # Python dependencies\n└── julep-assistant-notebook.ipynb  # Interactive notebook demo\n```\n\n## Step 1: Agent Configuration\n\nFirst, let's understand how the agent is configured. The `agent.yaml` file defines the assistant's personality and capabilities:\n\n```yaml\nname: Julep Support Assistant\nabout: >-\n  You are the official Julep AI support assistant. You help developers \n  understand and use the Julep platform effectively.\n  \nmodel: claude-sonnet-4\n\ninstructions: |-\n  You are the official Julep AI support assistant. Your purpose is to help \n  developers build AI applications using the Julep platform.\n  \n  Your core responsibilities:\n  1. **Workflow Assistance**: Help users write, debug, and optimize Julep workflows\n  2. **Concept Explanation**: Clearly explain Julep concepts like agents, tasks, sessions, and tools\n  3. **Code Examples**: Provide working code examples in Python, YAML, or JavaScript\n  4. **API Guidance**: Help users understand and use Julep's API effectively\n  5. **Best Practices**: Share proven patterns and architectural recommendations\n  \n  Guidelines:\n  - Always provide accurate, up-to-date information from the official documentation\n  - Include code examples whenever possible\n  - Use proper syntax highlighting for code blocks\n  - Explain the \"why\" behind recommendations, not just the \"how\"\n```\n\nKey points:\n- The agent uses Claude Sonnet 4 for high-quality responses\n- Instructions provide clear guidance on how to help users\n- The agent is specialized for Julep-specific support\n\n## Step 2: Web Crawling and Document Indexing\n\nThe assistant's knowledge base is built in two stages: first crawling documentation websites, then indexing the content for RAG retrieval.\n\n### Web Crawling with Spider Integration\n\nBefore indexing documents, we need to crawl the target website. The `task/crawl.yaml` defines a reusable crawling workflow:\n\n```yaml\nname: Julep Documentation Crawler Task\ndescription: A Julep agent that can crawl the Julep documentation website and store the content in the document store with proper contextualization.\n\ninput_schema:\n  type: object\n  properties:\n    url:\n      type: string\n      description: \"The URL of the documentation page\"\n  required:\n    - url\n\ntools:\n- name: spider_crawler\n  type: integration\n  integration:\n    provider: spider\n    setup:\n      spider_api_key: {spider_api_key}\n\nmain:\n- tool: spider_crawler\n  arguments:\n    url: $ _['url']\n    params:\n      request: smart_mode\n      return_format: markdown\n      proxy_enabled: $ True\n      filter_output_images: $ True\n      filter_output_svg: $ True\n      readability: $ True\n```\n\n### Complete Workflow: Crawl + Index\n\nThe `task/full_task.yaml` combines both crawling and indexing into a single workflow:\n\n```yaml\nmain:\n# Step 0: Crawl the Julep documentation using Spider (will crawl multiple pages)\n- tool: spider_crawler\n  arguments:\n    url: $ _['url']\n    params:\n      request: smart_mode\n      limit: 2\n      return_format: markdown\n      proxy_enabled: $ True\n      filter_output_images: $ True\n      filter_output_svg: $ True\n      readability: $ True\n\n# Step 1: Process each crawled page individually\n- over: $ [page for page in _.result if page.status == 200 and page.content]\n  parallelism: 5\n  map:\n    workflow: process_single_page\n    arguments:\n      url: $ _.url\n      content: $ _.content\n```\n\nThe key Spider crawler parameters:\n- `smart_mode`: Intelligently navigates and extracts content\n- `limit`: Number of pages to crawl (set to 2 for testing, increase for production)\n- `return_format: markdown`: Returns clean markdown content\n- `proxy_enabled`: Uses proxy for better reliability\n- `filter_output_images/svg`: Removes images to focus on text content\n- `readability`: Extracts main content, removing navigation and ads\n\n### Document Indexing Workflow\n\nAfter crawling, the main workflow in `task/main.yaml` processes and indexes the content:\n\n### Input Schema\n\n```yaml\ninput_schema:\n  type: object\n  properties:\n    url:\n      type: string\n      description: \"The URL of the documentation page\"\n    content:\n      type: string\n      description: \"The markdown content of the documentation page\"\n  required:\n    - url\n    - content\n```\n\n### Document Processing Steps\n\n<Steps>\n  <Step title=\"Chunk Creation\">\n    The workflow starts by creating documentation-sized chunks:\n    \n    ```yaml\n    - evaluate:\n        chunks: |\n          $ [\" \".join(_.content.strip().split()[i:i + 1500]) \n            for i in range(0, len(_.content.strip().split()), 1200)]\n    ```\n    \n    This creates ~1500 word chunks with 300-word overlap to preserve context.\n  </Step>\n  \n  <Step title=\"Content Analysis\">\n    Each page is analyzed to extract structured information:\n    \n    ```yaml\n    - prompt:\n      - role: system\n        content: |-\n          Analyze the documentation content and extract:\n          - primary_concepts: Which Julep concepts does this content cover?\n          - content_type: (tutorial, api_reference, concept_explanation, etc.)\n          - key_topics: Main topics discussed\n          - code_examples: Whether it contains code examples\n          - use_cases: Practical applications mentioned\n    ```\n  </Step>\n  \n  <Step title=\"Code Extraction\">\n    All code examples are extracted and categorized:\n    \n    ```yaml\n    - prompt:\n      - role: system\n        content: |-\n          Extract all code examples from the documentation content.\n          For each code example found, identify:\n          - language: The programming language\n          - code: The actual code content\n          - purpose: What this code demonstrates\n          - context: When to use this code\n    ```\n  </Step>\n  \n  <Step title=\"Q&A Generation\">\n    For each chunk, the system generates questions and answers:\n    \n    ```yaml\n    - prompt:\n      - role: system\n        content: |-\n          Generate 3-5 relevant questions users might ask about this chunk\n          Provide clear, concise answers based on the content\n          Add contextual information to improve search retrieval\n    ```\n  </Step>\n  \n  <Step title=\"Document Storage\">\n    Finally, enhanced content is stored as agent documents:\n    \n    ```yaml\n    - tool: create_agent_doc\n      arguments:\n        agent_id: $ str(agent.id)\n        data:\n          metadata:\n            source: \"spider_crawler\"\n            url: $ steps[0].input.page_url\n            content_type: $ steps[2].output.doc_analysis.get('content_type')\n            concepts: $ steps[2].output.doc_analysis.get('primary_concepts')\n          content: $ _[\"final_content\"]\n    ```\n  </Step>\n</Steps>\n\n## Step 3: Building the Chat Interface\n\nThe chat interface is built with Chainlit, providing a smooth user experience. Here's how it works:\n\n### Session Initialization\n\n```python\n@cl.on_chat_start\nasync def on_chat_start():\n    \"\"\"Initialize a new chat session\"\"\"\n    \n    # Create session with RAG search options\n    session = await julep_client.sessions.create(\n        agent=AGENT_UUID,\n        recall_options={\n            \"mode\": \"hybrid\",      # Uses both vector and text search\n            \"confidence\": 0.7,     # Confidence threshold\n            \"limit\": 10,          # Max number of results\n            \"embed_text\": True    # Embed query for vector search\n        }\n    )\n    \n    # Store session for later use\n    cl.user_session.set(\"session\", session)\n```\n\n### Message Handling\n\n```python\n@cl.on_message\nasync def on_message(message: cl.Message):\n    \"\"\"Handle incoming user messages\"\"\"\n    \n    # Get the session\n    session = cl.user_session.get(\"session\")\n    \n    # Send message to Julep and stream response\n    msg = cl.Message(content=\"\")\n    \n    response = await julep_client.sessions.chat(\n        session_id=session.id,\n        message={\n            \"role\": \"user\",\n            \"content\": message.content\n        },\n        stream=True\n    )\n    \n    # Stream tokens to user\n    async for chunk in response:\n        if chunk.choices[0].delta.content:\n            await msg.stream_token(chunk.choices[0].delta.content)\n    \n    await msg.send()\n```\n\n## Step 4: RAG Configuration\n\nThe assistant uses hybrid search for optimal retrieval:\n\n```python\nrecall_options={\n    \"mode\": \"hybrid\",      # Combines vector and text search\n    \"confidence\": 0.7,     # Minimum confidence score\n    \"limit\": 10,          # Maximum results to retrieve\n    \"embed_text\": True    # Enable embeddings for vector search\n}\n```\n\n### Search Modes Explained\n\n- **Hybrid Mode**: Combines semantic vector search with keyword matching\n- **Vector Mode**: Pure semantic search based on embeddings\n- **Text Mode**: Traditional keyword-based search\n\n## Step 5: Dynamic Feedback System\n\nThe assistant implements an innovative feedback system that dynamically improves the agent's behavior by updating its instructions in real-time based on validated user feedback.\n\n### How the Feedback System Works\n\nThe feedback system validates and applies user feedback directly to the agent's instructions:\n\n```python\nclass FeedbackHandler:\n    async def process_feedback(\n        self, \n        feedback_text: str, \n        user_question: str, \n        agent_response: str,\n        session_id: str\n    ) -> Dict[str, Any]:\n        \"\"\"Process user feedback and update agent instructions if valid\"\"\"\n        \n        # Get current agent details\n        agent = await self.client.agents.get(agent_id=self.agent_id)\n        \n        # Validate the feedback using AI\n        validation_result = await self.validator.validate_feedback(\n            feedback_text=feedback_text,\n            user_question=user_question,\n            agent_response=agent_response,\n            agent_instructions=current_instructions_str\n        )\n        \n        # If feedback is valid with high confidence (>= 0.7)\n        if validation_result.get(\"is_valid\") and validation_result.get(\"confidence\", 0) >= 0.7:\n            updated_instructions = validation_result.get(\"updated_instructions\")\n            \n            if updated_instructions:\n                # Update the agent with new instructions\n                await self.client.agents.create_or_update(\n                    agent_id=self.agent_id,\n                    name=agent.name,\n                    instructions=updated_instructions, \n                )\n```\n\n### Feedback Validation Process\n\nThe system uses AI to validate feedback before applying it:\n\n```python\nclass FeedbackValidator:\n    async def validate_feedback(self, feedback_text, user_question, agent_response, agent_instructions):\n        \"\"\"Validate feedback using AI to ensure it's constructive and applicable\"\"\"\n        \n        # AI validates if feedback is:\n        # 1. Constructive and specific\n        # 2. Relevant to improving the agent\n        # 3. Not contradicting core functionality\n        # 4. Actionable for instruction updates\n        \n        # Returns:\n        # - is_valid: boolean\n        # - confidence: 0-1 score\n        # - category: type of feedback\n        # - updated_instructions: new instructions if applicable\n```\n\n### Feedback Collection UI\n\nThe system provides three feedback options:\n\n```python\ndef create_feedback_actions(self, message_id: str) -> list:\n    \"\"\"Create Chainlit actions for feedback collection\"\"\"\n    return [\n        cl.Action(\n            name=\"feedback_helpful\",\n            payload={\"value\": \"helpful\"},\n            label=\"👍 Helpful\"\n        ),\n        cl.Action(\n            name=\"feedback_not_helpful\",\n            payload={\"value\": \"not_helpful\"}, \n            label=\"👎 Not Helpful\"\n        ),\n        cl.Action(\n            name=\"feedback_detailed\",\n            payload={\"value\": \"detailed\"},\n            label=\"💭 Give Detailed Feedback\"\n        )\n    ]\n```\n\n### Real-time Agent Improvement\n\nWhen valid feedback is received, the agent immediately adapts:\n\n1. **Positive Feedback**: Reinforces current behavior patterns\n2. **Negative Feedback**: Prompts for specifics and adjusts instructions\n3. **Detailed Feedback**: Allows comprehensive improvements\n\nExample of instruction evolution:\n```python\n# Original instruction\n\"Provide code examples when explaining concepts\"\n\n# After user feedback: \"The code examples are too basic\"\n\"Provide comprehensive code examples with edge cases and best practices when explaining concepts\"\n```\n\n### Benefits of Dynamic Feedback\n\n1. **Continuous Learning**: Agent improves with each interaction\n2. **User-Driven Evolution**: Adapts to actual user needs\n3. **Quality Control**: AI validation prevents harmful changes\n4. **Immediate Impact**: Changes apply to next interaction\n\nThis approach makes the assistant truly adaptive, learning from user interactions to provide increasingly better support over time.\n\n## Step 6: Running the Assistant\n\n### Installation\n\n1. Clone the repository and install dependencies:\n\n```bash\ncd julep-assistant\npip install -r chainlit-ui/requirements.txt\n```\n\n2. Set up environment variables:\n\n```bash\n# Create .env file\nJULEP_API_KEY=your_julep_api_key_here\nAGENT_UUID=your_agent_uuid  # Or use the default\nSPIDER_API_KEY=your_spider_api_key  # Optional\n```\n\n### Running the Chat Interface\n\n```bash\ncd chainlit-ui\nchainlit run app.py\n```\n\nThis starts the web interface at `http://localhost:8000`.\n\n### Using Scripts for Better Monitoring\n\nWhile the `full_task.yaml` can handle both crawling and indexing, using the separate scripts provides better visibility and control:\n\n**Web Crawler Script:**\n```bash\npython scripts/crawler.py --url https://docs.julep.ai --max-pages 100\n```\n\nThis script:\n- Provides real-time progress updates\n- Saves crawled content to JSON for inspection\n- Allows you to verify content before indexing\n- Handles rate limiting and retries\n\n**Document Indexer Script:**\n```bash\npython scripts/indexer.py\n```\n\nThis script:\n- Reads the crawled content from the crawler output\n- Shows progress for each document being indexed\n- Provides detailed error messages if indexing fails\n- Generates a summary report of indexed documents\n\n**Monitoring Task Execution:**\n\nYou can also monitor the full workflow execution:\n\n```python\n# Execute the full crawl + index task\nexecution = await julep_client.tasks.execute(\n    task_id=TASK_ID,\n    input={\n        \"url\": \"https://docs.julep.ai\",\n        \"max_pages\": 100\n    }\n)\n\n# Monitor execution status\nwhile execution.status in [\"pending\", \"running\"]:\n    execution = await julep_client.executions.get(execution.id)\n    print(f\"Status: {execution.status}\")\n    \n    # Get execution steps for detailed progress\n    steps = await julep_client.executions.steps.list(execution.id)\n    for step in steps:\n        print(f\"  Step {step.name}: {step.status}\")\n    \n    await asyncio.sleep(5)\n```\n\n## Resources\n\n- [Julep Assistant GitHub Repository](https://github.com/julep-ai/julep-assistant) - Complete source code and examples\n- [Julep Documentation](https://docs.julep.ai)\n- [API Reference](https://api.julep.ai/docs)\n- [Discord Community](https://discord.com/invite/JTSBGRZrzj)\n\n## Summary\n\nYou've learned how to build a production-ready AI assistant with Julep that features:\n- Web crawling with Spider integration for content acquisition\n- Automated documentation processing and indexing\n- RAG-powered responses with hybrid search\n- Interactive chat interface with session management\n- Feedback collection and analysis using Julep documents\n- Scalable architecture for production deployment\n\nThis assistant demonstrates the power of Julep for building stateful, context-aware AI applications that can maintain conversations, access external knowledge, and provide accurate, helpful responses."
  },
  {
    "path": "documentation/tutorials/rag-chatbot.mdx",
    "content": "---\ntitle: 'RAG Chatbot for Website'\ndescription: 'Learn how to build a RAG chatbot for a website with Julep'\nicon: 'display'\n---\n\n## Overview\n\nThis tutorial demonstrates how to:\n\n- Set up a web crawler using Julep's Spider integration\n- Process and store crawled content in a document store\n- Implement RAG for enhanced AI responses\n- Create an intelligent agent that can answer questions about crawled content\n\n## Task Structure\n\nLet's break down the task into its core components:\n\n### 1. Input Schema\n\nFirst, we define what inputs our task expects:\n\n```yaml\ninput_schema:\n  type: object\n  properties:\n    url:\n      type: string\n    reducing_strength:\n      type: integer\n```\n\nThis schema specifies that our task expects:\n- A URL string (e.g., \"https://en.wikipedia.org/wiki/Artificial_intelligence\")\n- Number of sentences to club together to reduce the size of the chunks list (e.g., 5)\n\n### 2. Tools Configuration\n\nNext, we define the external tools our task will use:\n\n```yaml\n- name: get_page\n  type: api_call\n  api_call:\n    method: GET\n    url: https://r.jina.ai/\n    headers:\n      accept: application/json\n      x-return-format: markdown\n      x-with-images-summary: \"true\"\n      x-with-links-summary: \"true\"\n      x-retain-images: \"none\"\n      x-no-cache: \"true\"\n      Authorization: \"Bearer JINA_API_KEY\"\n\n- name: create_agent_doc\n  type: system\n  system:\n    resource: agent\n    subresource: doc\n    operation: create\n```\n\nWe're using two tools:\n- The `get_page` api call for web crawling\n- The `create_agent_doc` system tool for storing processed content\n\n### 3. Main Workflow Steps\n\n<Steps>\n  <Step title=\"Crawl Website\">\n```yaml\n- tool: get_page\n  arguments:\n    url: $ \"https://r.jina.ai/\" + steps[0].input.url\n  \n- evaluate:\n    result: $ chunk_doc(_.json.data.content.strip())\n\n- workflow: index_page\n  arguments:\n    content: $ _.result\n    document: $ steps[0].output.json.data.content.strip()\n    reducing_strength: $ steps[0].input.reducing_strength\n```\n\n    <Accordion title=\"Understanding the use of the _ variable\">\n      The `_` variable refers to the current context object. When accessing properties like `_['url']`, it's retrieving values from the input parameters passed to the task.\n    </Accordion>\n\n    This step:\n    - Takes the input URL and crawls the website\n    - Processes content into readable markdown format\n    - Chunks content into manageable segments\n    - Filters out unnecessary elements like images and SVGs\n  </Step>\n\n  <Step title=\"Process and Index Content\">\n```yaml [expandable]\n- evaluate:\n    document: $ _.document\n    chunks: |\n      $ [\" \".join(_.content[i:i + max(_.reducing_strength, len(_.content) // 9)]) \n        for i in range(0, len(_.content), max(_.reducing_strength, len(_.content) // 9))]\n  label: docs\n\n# Step 1: Create a new document and add it to the agent docs store\n- over: $ [(steps[0].input.document, chunk.strip()) for chunk in _.chunks]\n  parallelism: 3\n  map:\n    prompt: \n    - role: user\n      content: >-\n        $ f'''\n        <document>\n        {_[0]}  \n        </document>\n\n        Here is the chunk we want to situate within the whole document\n        <chunk>\n        {_[1]}\n        </chunk>\n\n        Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. \n        Answer only with the succinct context and nothing else.\n        '''\n    unwrap: true\n    settings:\n      max_tokens: 16000\n\n- evaluate:\n    final_chunks: |\n      $ [\n        NEWLINE.join([succint, chunk.strip()]) for chunk, succint in zip(steps['docs'].output.chunks, _)\n      ]\n```\n\n    This step:\n    - Processes each content chunk in parallel\n    - Generates contextual metadata for improved retrieval\n    - Prepares content for storage\n  </Step>\n\n  <Step title=\"Store Documents\">\n```yaml\n- over: $ _['final_chunks']\n  parallelism: 3\n  map:\n    tool: create_agent_doc\n    arguments:\n      agent_id: $ agent.id\n      data:\n        metadata:\n          source: jina_crawler\n        title: Website Document\n        content: $ _\n```\n\n    This step:\n    - Stores processed content in the document store\n    - Adds metadata for source tracking\n    - Creates searchable documents for RAG\n  </Step>\n</Steps>\n\n<Accordion title=\"Complete Task YAML\" icon=\"code\">\n```yaml YAML [expandable]\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Jina Crawler Task\ndescription: A Julep agent that can crawl a website and store the content in the document store.\n\n########################################################\n################### INPUT SCHEMA #######################\n########################################################\n\ninput_schema:\n  type: object\n  properties:\n    url:\n      type: string\n    reducing_strength:\n      type: integer\n      \n########################################################\n################### TOOLS ##############################\n########################################################\n\ntools:\n- name: get_page\n  type: api_call\n  api_call:\n    method: GET\n    url: https://r.jina.ai/\n    headers:\n      accept: application/json\n    x-return-format: markdown\n    x-with-images-summary: \"true\"\n    x-with-links-summary: \"true\"\n    x-retain-images: \"none\"\n    x-no-cache: \"true\"\n    Authorization: \"Bearer JINA_API_KEY\"\n\n- name : create_agent_doc\n  description: Create an agent doc\n  type: system\n  system:\n    resource: agent\n    subresource: doc\n    operation: create\n\n########################################################\n################### INDEX PAGE SUBWORKFLOW ##############\n########################################################\n\nindex_page:\n\n# Step #0 - Evaluate the content\n- evaluate:\n    document: $ _.document\n    chunks: |\n      $ [\" \".join(_.content[i:i + max(_.reducing_strength, len(_.content) // 9)]) \n        for i in range(0, len(_.content), max(_.reducing_strength, len(_.content) // 9))]\n    label: docs\n\n# Step #1 - Process each content chunk in parallel\n- over: \"$ [(steps[0].input.content, chunk) for chunk in _['chunks']]\"\n  parallelism: 3\n  map:\n    prompt: \n    - role: user\n      content: >-\n        $ f'''\n        <document>\n        {_[0]}\n        </document>\n\n        Here is the chunk we want to situate within the whole document\n        <chunk>\n        {_[1]}\n        </chunk>\n\n        Please give a short succinct context to situate this chunk within the overall document for the purposes of improving search retrieval of the chunk. \n        Answer only with the succinct context and nothing else.'''\n    \n    unwrap: true\n    settings:\n      max_tokens: 16000\n\n# Step #2 - Create a new document and add it to the agent docs store\n- evaluate:\n    final_chunks: |\n      $ [\n        NEWLINE.join([chunk, succint]) for chunk, succint in zip(steps[1].input.chunks, _)\n      ]\n\n# Step #3 - Create a new document and add it to the agent docs store\n- over: $ _['final_chunks']\n  parallelism: 3\n  map:\n    tool: create_agent_doc\n    arguments:\n      agent_id: \"$ str(agent.id)\" # <--- This is the agent id of the agent you want to add the document to\n      data:\n        metadata:\n          source: \"jina_crawler\"\n\n        title: \"Website Document\"\n        content: $ _\n\n########################################################\n################### MAIN WORKFLOW ######################\n########################################################\n\nmain:\n\n# Step 0: Get the content of the product page\n- tool: get_page\n  arguments:\n    url: $ \"https://r.jina.ai/\" + steps[0].input.url\n\n# Step 1: Chunk the content\n- evaluate:\n    result: $ chunk_doc(_.json.data.content.strip())\n\n# Step 2: Evaluate step to document chunks\n- workflow: index_page\n  arguments:\n    content: $ _.result\n    document: $ steps[0].output.json.data.content.strip()\n    reducing_strength: $ steps[0].input.reducing_strength\n```\n</Accordion>\n\n## Usage\n\nStart by creating an execution for the task. This execution will make the agent crawl the website and store the content in the document store.\n\n<CodeGroup> \n\n```python Python [expandable]\nfrom julep import Client\nimport time\nimport yaml\n\n# Initialize the client\nclient = Client(api_key=JULEP_API_KEY)\n\n# Create the agent\nagent = client.agents.create(\n  name=\"Julep Jina Crawler Agent\",\n  about=\"A Julep agent that can crawl a website and store the content in the document store.\",\n)\n\n# Load the task definition\nwith open('crawling_task.yaml', 'r') as file:\n  task_definition = yaml.safe_load(file)\n\n# Create the task\ntask = client.tasks.create(\n  agent_id=agent.id,\n  **task_definition\n)\n\n# Create the execution\nexecution = client.executions.create(\n  task_id=task.id,\n  input={\"url\": \"https://en.wikipedia.org/wiki/Artificial_intelligence, \"reducing_strength\": 5}\n)\n# Wait for the execution to complete\nwhile (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:\n    print(result.status)\n    time.sleep(1)\n\nif result.status == \"succeeded\":\n    print(result.output)\nelse:\n    print(f\"Error: {result.error}\")\n```\n\n```js Node.js [expandable]\nimport { Julep } from '@julep/sdk';\nimport fs from 'fs';\nimport yaml from 'yaml';\n\n// Initialize the client\nconst client = new Julep({\n  apiKey: 'your_julep_api_key'\n});\n\n// Create the agent\nconst agent = await client.agents.create({\n  name: \"Julep Crawler Agent\",\n  about: \"A Julep agent that can crawl a website and store the content in the document store.\",\n});\n\n// Load the task definition\nconst taskDefinition = yaml.parse(fs.readFileSync('crawling_task.yaml', 'utf8'));\n\n// Create the task\nconst task = await client.tasks.create(\n  agent.id,\n  taskDefinition\n);\n\n// Create the execution\nconst execution = await client.executions.create(\n  task.id,\n  {\n    input: { \n      \"url\": \"https://en.wikipedia.org/wiki/Artificial_intelligence\",\n      \"reducing_strength\": 5\n    }\n  }\n);\n\n// Wait for the execution to complete\nlet result;\nwhile (true) {\n  result = await client.executions.get(execution.id);\n  if (result.status === 'succeeded' || result.status === 'failed') break;\n  console.log(result.status);\n  await new Promise(resolve => setTimeout(resolve, 1000));\n}\n\n// Print the result\nif (result.status === 'succeeded') {\n  console.log(result.output);\n} else {\n  console.error(`Error: ${result.error}`);\n}\n``` \n\n</CodeGroup>\nNext, create a session for the agent. This session will be used to chat with the agent.\n\n<CodeGroup>\n\n```python Python\nsession = client.sessions.create(\n  agent_id=AGENT_ID\n)\n```\n\n```js Node.js\nconst session = await client.sessions.create({\n  agentId: 'YOUR_AGENT_ID'\n});\n```\n\n</CodeGroup>\nFinally, chat with the agent.\n\n<CodeGroup>\n\n```python Python\nresponse = client.sessions.chat(\n  session_id=session.id,\n  messages=[\n    {\n      \"role\": \"user\",\n      \"content\": \"tell me about artificial intelligence\"\n    }\n  ]\n)\n\nprint(response)\n```\n\n```js Node.js\nconst response = await client.sessions.chat({\n  sessionId: 'YOUR_SESSION_ID',\n  messages: [{ role: 'user', content: 'tell me about artificial intelligence' }]\n});\n```\n\n</CodeGroup>\n\n## Example Output\n\nThis is an example output when the agent is asked \"What is Julep?\"\n<Accordion title=\"Output\">\nJulep is a comprehensive platform designed for creating production-ready AI systems and agents. Here are the key aspects of Julep:\n\nCore Features:\n1. Complete Infrastructure Layer\n- Provides infrastructure between LLMs and software\n- Built-in support for long-term memory\n- Multi-step process management\n- State management capabilities\n\n2. AI Agent Development\n- Creates persistent AI agents that remember past interactions\n- Supports complex task execution\n- Enables multi-step workflows\n- Includes built-in tools and integrations\n\n3. Production-Ready Features\n- Automatic retries for failed steps\n- Message resending capabilities\n- Task recovery systems\n- Real-time monitoring\n- Error handling\n- Automatic scaling and load balancing\n\n4. Development Approach\n- Uses 8-Factor Agent methodology\n- Treats prompts as code with proper versioning\n- Provides clear tool interfaces\n- Offers model independence to avoid vendor lock-in\n- Includes structured reasoning capabilities\n- Maintains ground truth examples for validation\n\nAvailable Resources:\n- Documentation: https://docs.julep.ai/\n- API Playground: https://dev.julep.ai/api/docs\n- Python SDK: https://github.com/julep-ai/python-sdk/blob/main/README.md\n- JavaScript SDK: https://github.com/julep-ai/node-sdk/blob/main/README.md\n- Various use case examples and cookbooks\n\nYou can explore different use cases through their cookbooks, including:\n- User Profiling\n- Email Assistant\n- Trip Planner\n- Document Management\n- Website Crawler\n- Multi-step Tasks\n- Advanced Chat Interactions\n\nFor additional support or to learn more:\n- Discord Community: https://discord.gg/2EUJzJU2Yt\n- Book a Demo: https://calendly.com/ishita-julep\n- Dev Support: hey@julep.ai\n</Accordion>\n\n\n## Next Steps\n\n- Try this task yourself, check out the full example, see the [RAG Chatbot cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/08-rag-chatbot.ipynb).\n - To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page.\n\n## Related Concepts\n\n- [Agents](/concepts/agents)\n- [Tasks](/concepts/tasks)\n- [Tools](/concepts/tools)\n"
  },
  {
    "path": "documentation/tutorials/trip-planning-input.mdx",
    "content": "---\ntitle: 'Trip Planning - Input'\ndescription: 'Define the input schema for the trip planning task'\nicon: 'display'\n---\n\n### 1. Input Schema\n\nFirst, we define what inputs our task expects:\n\n```yaml\ninput_schema:\n  type: object\n  properties:\n    locations:\n      type: array\n      items:\n        type: string\n```\n\nThis schema specifies that our task expects an array of location strings (e.g., `[\"New York\", \"London\", \"Paris\"]`).\n\n## Next Step\n\n- [Tools Configuration](./trip-planning-tools)\n\n## Related Concepts\n\n- [Tasks](/concepts/tasks)\n\n\n"
  },
  {
    "path": "documentation/tutorials/trip-planning-running.mdx",
    "content": "---\ntitle: 'Trip Planning - Running'\ndescription: 'Execute the task and review the example output'\nicon: 'display'\n---\n\n## Usage\n\nHere's how to use this task with the Julep SDK:\n\n<CodeGroup>\n\n```python Python\nfrom julep import Client\nimport time\nimport yaml\n\n# Initialize the client\nclient = Client(api_key=JULEP_API_KEY)\n\n# Create the agent\nagent = client.agents.create(\n  name=\"Julep Trip Planning Agent\",\n  about=\"A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\",\n)\n\n# Load the task definition\nwith open('trip_planning_task.yaml', 'r') as file:\n  task_definition = yaml.safe_load(file)\n\n# Create the task\ntask = client.tasks.create(\n  agent_id=AGENT_ID,\n  **task_definition\n)\n\n# Create the execution\nexecution = client.executions.create(\n    task_id=task.id,\n    input={\n        \"locations\": [\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]\n    }\n)\n\n# Wait for the execution to complete\nwhile (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:\n    print(result.status)\n    time.sleep(1)\n\n# Print the result\nif result.status == \"succeeded\":\n    print(result.output)\nelse:\n    print(f\"Error: {result.error}\")\n```\n\n```js Node.js\nimport { Julep } from '@julep/sdk';\nimport fs from 'fs';\nimport yaml from 'yaml';\n\n// Initialize the client\nconst client = new Julep({\n  apiKey: 'your_julep_api_key'\n});\n\n// Create the agent\nconst agent = await client.agents.create({\n  name: \"Julep Trip Planning Agent\",\n  about: \"A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\",\n});\n\n// Load the task definition\nconst taskDefinition = yaml.parse(fs.readFileSync('trip_planning_task.yaml', 'utf8'));\n\n// Create the task\nconst task = await client.tasks.create(\n  agent.id,\n  taskDefinition\n);\n\n// Create the execution\nconst execution = await client.executions.create(\n  task.id,\n  {\n    input: { \n      \"locations\": [\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]\n    }\n  }\n);\n\n// Wait for the execution to complete\nlet result;\nwhile (true) {\n  result = await client.executions.get(execution.id);\n  if (result.status === 'succeeded' || result.status === 'failed') break;\n  console.log(result.status);\n  await new Promise(resolve => setTimeout(resolve, 1000));\n}\n\n// Print the result\nif (result.status === 'succeeded') {\n  console.log(result.output);\n} else {\n  console.error(`Error: ${result.error}`);\n}\n```\n\n</CodeGroup>\n\n## Example Output\n\nAn example output when running this task with an input of `[\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]`:\n\n<Accordion title=\"Example Output\">\nHere's a detailed itinerary for visiting top tourist attractions in New York, considering the current weather conditions. \n\n### Day 1: Iconic Landmarks and Observation Decks\n- **Morning:**\n  - **Top of the Rock Observation Deck:** Start your day with a visit to the Top of the Rock Observation Deck at Rockefeller Plaza. The panoramic 360-degree views from the 70th floor are a must-see. Dress warmly as it feels like 5.2°C outside, and it’s quite windy.\n  - **Link for more info:** [Tripadvisor - Top of the Rock](https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html)\n\n- **Afternoon:**\n  - **St. Patrick’s Cathedral:** Just a short walk from Rockefeller Plaza, explore the stunning architecture of St. Patrick’s Cathedral. The overcast skies will provide a dramatic backdrop for photos.\n  - **Fifth Avenue:** Enjoy a leisurely stroll along Fifth Avenue, visiting iconic stores and landmarks.\n\n- **Evening:**\n  - **Times Square:** Experience the vibrant lights and energy of Times Square. The overcast clouds might enhance the brightness of the neon lights.\n\n### Day 2: Culture and History\n- **Morning:**\n  - **The Museum of Modern Art (MoMA):** Spend your morning exploring MoMA’s vast collection of modern and contemporary art. This indoor activity is perfect for a cloudy day.\n\n- **Afternoon:**\n  - **Central Park:** Head to Central Park for a refreshing walk. With 100% cloud cover, it's a great day to explore the park without the harsh sun. Consider visiting the Central Park Zoo or taking a guided tour.\n\n- **Evening:**\n  - **Broadway Show:** End your day with a Broadway show. It’s an ideal indoor activity to avoid the chilly weather outside. Book tickets in advance for popular shows.\n\n### Day 3: Historical and Educational\n- **Morning:**\n  - **Statue of Liberty and Ellis Island:** Take a ferry to visit these iconic sites. Dress warmly for the ferry ride. The cloud cover will provide a unique perspective for photos.\n\n- **Afternoon:**\n  - **9/11 Memorial and Museum:** Spend your afternoon reflecting at the 9/11 Memorial and exploring the museum exhibits.\n\n- **Evening:**\n  - **Brooklyn Bridge:** Walk across the Brooklyn Bridge and enjoy the city skyline. With the wind speed at 5.81 m/s, be prepared for breezy conditions.\n\n### Additional Tips:\n- **Clothing:** Wear layers to keep warm, as the temperature feels colder than it actually is.\n- **Dining:** New York offers a plethora of dining options. Consider trying some local favorites like a classic New York bagel or pizza.\n- **Transportation:** Utilize the subway for efficient travel across the city. Taxis and ride-sharing services are also readily available.\n\nFor more details on attractions and guided tours, you can visit [USA Guided Tours](https://usaguidedtours.com/nyc/attraction/) and [I Love NY](https://www.iloveny.com/places-to-go/new-york-city/attractions/). \n\nEnjoy your trip to New York City!\n---------------\n**Day 1: Exploring Iconic London Landmarks**\n\n**Morning:**\n1. **Buckingham Palace**\n   - Start your day early with a visit to Buckingham Palace. Arrive by 9:30 AM to catch the Changing of the Guard ceremony, which typically starts at 11:00 AM. Enjoy the majestic architecture and the surrounding gardens.\n   - Weather Tip: With the overcast clouds, it might feel chilly, so dress warmly and bring an umbrella just in case.\n\n**Midday:**\n2. **Westminster Abbey**\n   - Head towards Westminster Abbey, a short walk from Buckingham Palace. This historic church has been the site of many significant events, including royal weddings and coronations. Spend about 1.5 hours exploring.\n\n3. **Lunch at Borough Market**\n   - Take a tube or walk to Borough Market for a variety of food options. It's a great place to warm up with some hot street food and explore the diverse culinary offerings.\n\n**Afternoon:**\n4. **London Eye**\n   - After lunch, head to the London Eye. The overcast sky might not offer the clearest views, but the experience is still worthwhile. Pre-book your tickets to avoid long lines and enjoy a 30-minute ride on this iconic Ferris wheel.\n\n**Evening:**\n5. **The Globe Theatre**\n   - As the day winds down, visit Shakespeare's Globe Theatre. If there's a performance, consider attending or simply take a guided tour to learn about the history of this famous theater.\n\n**Day 2: Museums and Cultural Exploration**\n\n**Morning:**\n1. **The British Museum**\n   - Start your second day at the British Museum. Spend a few hours exploring the vast collection of art and antiquities. Highlights include the Rosetta Stone and the Elgin Marbles.\n\n**Midday:**\n2. **Lunch near Covent Garden**\n   - Head to Covent Garden for lunch. This area is bustling with restaurants and cafes, perfect for a cozy indoor meal.\n\n**Afternoon:**\n3. **The Tower of London**\n   - After lunch, make your way to the Tower of London. Delve into England's rich history and see the Crown Jewels. Allocate about 2-3 hours for this visit.\n\n**Evening:**\n4. **Tower Bridge**\n   - Conclude your day with a walk across Tower Bridge. The views of the Thames River and the cityscape are beautiful, even on a cloudy evening.\n\n**Day 3: Leisure and Local Experiences**\n\n**Morning:**\n1. **Natural History Museum**\n   - Begin your last day at the Natural History Museum. It's a family-friendly museum with fascinating exhibits, including dinosaur skeletons and a model of a blue whale.\n\n**Midday:**\n2. **Lunch at South Kensington**\n   - Enjoy a relaxed lunch in South Kensington. There are plenty of options, from casual cafes to high-end dining.\n\n**Afternoon:**\n3. **Hyde Park**\n   - Spend your afternoon strolling through Hyde Park. Visit the Serpentine Galleries if you're interested in contemporary art. The park's natural beauty is a peaceful retreat amidst the city hustle.\n\n**Evening:**\n4. **Dinner and a Show in the West End**\n   - End your London adventure with a memorable dinner followed by a theater show in the West End. Book your tickets in advance for popular shows.\n\n**Additional Tips:**\n- Always check the attraction websites for any specific COVID-19 guidelines or changes in operating hours.\n- London’s public transport system is efficient; consider getting an Oyster card for convenient travel.\n- Don't forget to dress in layers to adapt to the chilly weather, and always have your camera ready to capture memories.\n---------------\nHere’s a detailed itinerary for your visit to Paris, considering the current snowy weather conditions and top attractions:\n\n### Day 1: Embrace the Iconic Landmarks\n\n**Morning: Eiffel Tower**\n- **Time:** 9:00 AM\n- **Details:** Begin your day with a visit to the Eiffel Tower. Even in the snow, the tower offers stunning views of Paris. Dress warmly and enjoy hot chocolate from nearby cafes.\n- **Link for more info:** [Tripadvisor - Things to Do in Paris](https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html)\n\n**Afternoon: Louvre Museum**\n- **Time:** 1:00 PM\n- **Details:** Spend your afternoon indoors at the Louvre Museum. With its vast collection of art and history, it's a perfect way to escape the cold. Consider taking a guided tour to make the most of your visit.\n- **Link for more info:** [U.S. News Travel - Things To Do](https://travel.usnews.com/Paris_France/Things_To_Do/)\n\n**Evening: Seine River Cruise**\n- **Time:** 6:00 PM\n- **Details:** End your day with a magical Seine River cruise. The snow adds a picturesque touch to the illuminated landmarks. Ensure to book a heated cruise for comfort.\n\n### Day 2: Explore Cultural and Historical Treasures\n\n**Morning: Notre-Dame Cathedral**\n- **Time:** 9:30 AM\n- **Details:** Visit the iconic Notre-Dame Cathedral. Although some areas may be under restoration, its architecture and history are worth experiencing. Warm clothing is essential as the interior can be chilly.\n\n**Afternoon: Musée d'Orsay**\n- **Time:** 1:30 PM\n- **Details:** Head to the Musée d'Orsay, renowned for its Impressionist masterpieces. This indoor activity is ideal for escaping the cold and enjoying world-class art.\n\n**Evening: Montmartre and Sacré-Cœur**\n- **Time:** 5:00 PM\n- **Details:** Wander through the charming streets of Montmartre and visit the Sacré-Cœur Basilica. The view of Paris in the snow is breathtaking. Enjoy a cozy dinner at a local bistro in Montmartre.\n\n### Day 3: Discover Hidden Gems and Local Flavors\n\n**Morning: Le Marais District**\n- **Time:** 10:00 AM\n- **Details:** Explore Le Marais, known for its vibrant street art, boutiques, and cafes. Enjoy a leisurely breakfast and shop for unique souvenirs.\n\n**Afternoon: Palais Garnier (Opera House)**\n- **Time:** 2:00 PM\n- **Details:** Tour the opulent Palais Garnier. Its stunning interiors are a must-see, especially when it's snowy outside.\n\n**Evening: Moulin Rouge Show**\n- **Time:** 8:00 PM\n- **Details:** Conclude your trip with a classic Parisian experience at the Moulin Rouge. Book in advance to secure a good seat and enjoy the legendary cabaret performance.\n\n### Additional Tips:\n- **Weather Preparation:** Wear layers, waterproof boots, and carry an umbrella. The snow and cold wind can be intense.\n- **Dining:** Indulge in warm, hearty French cuisine at local cafes and restaurants. Try dishes like French onion soup, coq au vin, and tarte Tatin.\n- **Transport:** Use public transportation to avoid the snowy streets, and consider purchasing a Paris Visite pass for unlimited travel.\n\nEnjoy your snowy adventure in Paris!\n---------------\n**Tokyo Itinerary**\n\n**Day 1: Arrival and Exploration of Historical and Cultural Sites**\n\n- **Morning:**\n  - **Asakusa District**: Begin your day with a visit to the historic Asakusa district. Explore the iconic Senso-ji Temple, Tokyo's oldest temple. Enjoy the traditional market streets like Nakamise Street for some shopping and snacks.\n\n- **Afternoon:**\n  - **Tokyo National Museum**: Head to Ueno Park and visit the Tokyo National Museum. Discover Japan’s extensive collection of art and antiquities. This is a great spot to dive into Japanese history and culture.\n\n- **Evening:**\n  - **Dinner in Ueno**: Explore the local dining options around Ueno and enjoy a traditional Japanese dinner.\n\n**Day 2: Modern Tokyo and Unique Experiences**\n\n- **Morning:**\n  - **Ghibli Museum**: Start your day with a magical visit to the Ghibli Museum in Mitaka. Perfect for fans of Studio Ghibli's animated films, this museum offers a whimsical look into the creative world of Hayao Miyazaki.\n\n- **Afternoon:**\n  - **Shibuya and Harajuku**: Head towards the bustling areas of Shibuya and Harajuku. Witness the famous Shibuya Crossing and explore the trendy shops of Harajuku, especially Takeshita Street.\n\n- **Evening:**\n  - **Golden Gai**: Conclude your day in the vibrant Golden Gai district. This area is renowned for its narrow alleys filled with small bars and eateries. Experience the unique nightlife of Tokyo here.\n\n**Day 3: Relax and Explore Green Spaces**\n\n- **Morning:**\n  - **Shinjuku Gyoen National Garden**: Spend a peaceful morning strolling through the beautiful Shinjuku Gyoen, one of Tokyo's largest and most beautiful parks. It's a perfect spot for relaxation and enjoying nature.\n\n- **Afternoon:**\n  - **Meiji Shrine**: Visit the Meiji Shrine, located in a forested area near Harajuku and Shibuya. It's a serene place to learn about Shinto traditions and enjoy the tranquil setting.\n\n- **Evening:**\n  - **Tokyo Tower or Skytree**: End your trip with a visit to either Tokyo Tower or Tokyo Skytree for a panoramic view of the city. It's an unforgettable way to see Tokyo illuminated at night.\n\n**Weather Considerations:**\n- With the current weather of few clouds and a mild temperature around 10.32°C, it is advisable to wear layers and carry a light jacket for comfort during outdoor activities.\n- Humidity is high (92%), so be prepared for a slightly damp feeling and consider moisture-wicking clothing.\n\n**Additional Tips:**\n- Always check the opening hours of attractions and book tickets in advance where necessary.\n- Use Tokyo’s efficient public transport to move around easily.\n- Consider visiting the websites linked in the attraction descriptions for more detailed information and current updates.\n---------------\nHere's a detailed itinerary for exploring some of Sydney's top tourist attractions with the current weather conditions in mind. With clear skies and pleasant temperatures, it's a perfect day to explore the outdoors and enjoy what Sydney has to offer.\n\n### Morning\n\n**9:00 AM - Sydney Opera House**\n- Begin your day with a visit to the iconic Sydney Opera House. Take a guided tour to learn about its history and architecture. Tours are available in multiple languages.\n- **Link:** [Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\n\n**11:00 AM - Royal Botanic Garden Sydney**\n- Just a short walk from the Opera House, enjoy a leisurely stroll through the Royal Botanic Garden. The clear skies will offer beautiful views of the diverse plant life and the Sydney Harbour.\n\n### Afternoon\n\n**12:30 PM - Lunch at Opera Bar**\n- Head back to Opera Bar for lunch. Enjoy a refreshing cocktail with stunning views of the Sydney Harbour Bridge and the waterfront.\n- **Link:** [Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\n\n**2:00 PM - Sydney Harbour Bridge**\n- After lunch, take a scenic walk across the Sydney Harbour Bridge. If you're up for it, consider the BridgeClimb for breathtaking panoramic views of the city.\n\n**4:00 PM - The Rocks**\n- Explore The Rocks, one of Sydney's most historic areas. Wander through the cobbled streets, visit the local markets, and perhaps enjoy a cup of coffee at a nearby café.\n\n### Evening\n\n**6:00 PM - Darling Harbour**\n- Make your way to Darling Harbour for the evening. Here you can visit attractions such as the SEA LIFE Sydney Aquarium or simply enjoy the lively atmosphere by the waterfront.\n\n**8:00 PM - Dinner at a Local Restaurant**\n- Conclude your day with dinner at one of Darling Harbour's many restaurants. Choose from a variety of cuisines while enjoying the vibrant night scene.\n\n### Additional Suggestions\n\n- If you're interested in more unique experiences, consider visiting some of the attractions listed on [Time Out Sydney](https://www.timeout.com/sydney/attractions/tourist-attractions-that-dont-suck), which includes thrilling adventures and scenic tours.\n\nWith clear skies and mild temperatures, this itinerary offers a balanced mix of cultural, historical, and scenic experiences. Enjoy your visit to Sydney!\n</Accordion>\n\n\n## Next Steps\n\n- Try this task yourself, check out the full example, see the [trip-planning cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/03-trip-planning-assistant.ipynb).\n - To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page.\n\n## Related Concepts\n\n- [Agents](/concepts/agents)\n- [Tasks](/concepts/tasks)\n- [Executions](/concepts/execution)\n\n"
  },
  {
    "path": "documentation/tutorials/trip-planning-tools.mdx",
    "content": "---\ntitle: 'Trip Planning - Tools'\ndescription: 'Configure tools for fetching weather and attraction data'\nicon: 'display'\n---\n\n### 2. Tools Configuration\n\nNext, we define the external tools our task will use:\n\n```yaml\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: YOUR_OPENWEATHERMAP_API_KEY\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: \"YOUR_BRAVE_API_KEY\"\n```\n\nWe're using two integrations:\n- The `weather` integration to fetch current weather conditions\n- The `brave` search integration to find tourist attractions\n\n## Next Step\n\n- [Workflow Steps](./trip-planning-workflow)\n\n## Related Concepts\n\n- [Tools](/concepts/tools)\n\n"
  },
  {
    "path": "documentation/tutorials/trip-planning-workflow.mdx",
    "content": "---\ntitle: 'Trip Planning - Workflow'\ndescription: 'Learn the step-by-step workflow for generating itineraries'\nicon: 'display'\n---\n\n### 3. Main Workflow Steps\n\n<Steps>\n\n  <Step title=\"Get Weather Data\">\n\n```yaml\n- over: $ steps[0].input.locations\n  map:\n    tool: weather\n    arguments:\n      location: $ _\n```\n\n    <Accordion title=\"Understanding the use of the _ Variable in iteration steps\">\n      When used inside a `map` or a `foreach` step, the `_` variable is a reference to the current value in the iteration.\n\n      For example:\n```yaml\n- over: $ [\"Paris\", \"London\"]\n  map:\n    tool: weather\n    arguments:\n      location: $ _ # _ will be \"Paris\", then \"London\"\n```\n    </Accordion>\n\n\n    This step:\n    - Iterates over each location in the input array\n    - Calls the weather API for each location\n  </Step>\n\n  <Step title=\"Search for Tourist Attractions\">\n\n```yaml\n- over: $ steps[0].input.locations\n  map:\n    tool: internet_search\n    arguments:\n      query: $ 'tourist attractions in ' + _\n```\n\n\n    This step:\n    - Iterates over the locations again\n    - Searches for tourist attractions in each location\n    - Constructs a search query by concatenating \"tourist attractions in \" with the location\n  </Step>\n\n  <Step title=\"Combine Data\">\n\n```yaml\n- evaluate:\n    zipped: |-\n      $ list(\n        zip(\n          steps[0].input.locations,\n          [output['result'] for output in steps[0].output],\n          steps[1].output\n        )\n      )\n```\n\n\n    This step:\n    - Combines the data from previous steps into tuples\n    - Each tuple contains: (location, weather_data, attractions_data)\n    - Uses Python's `zip` function to align the data\n\n  </Step>\n\n  <Step title=\"Generate Itineraries\">\n\n```yaml\n- over: $ _['zipped']\n  parallelism: 3\n  # Inside the map step, each `_` represents the current element in the list\n  # which is a tuple of (location, weather, attractions)\n  map:\n    prompt:\n    - role: system\n      content: >-\n        $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n        for visiting tourist attractions in some locations.\n        The user will give you the following information for each location:\n\n        - The location\n        - The current weather condition\n        - The top tourist attractions'''\n    - role: user\n      content: >-\n        $ f'''Location: \"{_[0]}\"\n        Weather: \"{_[1]}\"\n        Attractions: \"{_[2]}\"'''\n    unwrap: true\n```\n\n\n    This step:\n    - Processes up to 3 locations in parallel\n    - For each location tuple:\n      - Sends a prompt to the AI model\n      - Includes location, weather, and attraction data\n      - Generates a personalized itinerary\n\n  </Step>\n\n  <Step title=\"Format Final Output\">\n\n```yaml\n- evaluate:\n    final_plan: |-\n      $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n```\n\n\n    This step:\n    - Combines all itineraries into a single output\n    - Separates each itinerary with a divider\n\n  </Step>\n\n</Steps>\n\n<Accordion title=\"Complete Task YAML\" icon=\"code\">\n```yaml YAML\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Trip Planning Task\ndescription: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\n\n########################################################\n################### INPUT SCHEMA #######################\n########################################################\n\ninput_schema:\n  type: object\n  properties:\n    locations:\n      type: array\n      items:\n        type: string\n      description: The locations to search for.\n\n########################################################\n################### TOOLS ##############################\n########################################################\n\ntools:\n- name: wikipedia\n  type: integration\n  integration:\n    provider: wikipedia\n\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: \"YOUR_OPENWEATHERMAP_API_KEY\"\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: \"YOUR_BRAVE_API_KEY\"\n\n########################################################\n################### MAIN WORKFLOW ######################\n########################################################\n\nmain:\n- over: $ steps[0].input.locations\n  map:\n    tool: weather\n    arguments:\n      location: $ _\n\n- over: $ steps[0].input.locations\n  map:\n    tool: internet_search\n    arguments:\n      query: $ 'tourist attractions in ' + _\n\n# Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\n- evaluate:\n    zipped: |-\n      $ list(\n        zip(\n          steps[0].input.locations,\n          [output['result'] for output in steps[0].output],\n          steps[1].output\n        )\n      )\n\n\n- over: $ _['zipped']\n  parallelism: 3\n  # Inside the map step, each `_` represents the current element in the list\n  # which is a tuple of (location, weather, attractions)\n  map:\n    prompt:\n    - role: system\n      content: >-\n        $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n        for visiting tourist attractions in some locations.\n        The user will give you the following information for each location:\n\n        - The location\n        - The current weather condition\n        - The top tourist attractions'''\n    - role: user\n      content: >-\n        $ f'''Location: \"{_[0]}\"\n        Weather: \"{_[1]}\"\n        Attractions: \"{_[2]}\"'''\n    unwrap: true\n\n- evaluate:\n    final_plan: |-\n      $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n```\n</Accordion>\n\n## Next Step\n\n- [Running the Task](./trip-planning-running)\n\n## Related Concepts\n\n- [Tasks](/concepts/tasks)\n- [Types of Task Steps](/advanced/types-of-task-steps)"
  },
  {
    "path": "documentation/tutorials/trip-planning.mdx",
    "content": "---\ntitle: 'Trip Planning'\ndescription: 'Learn how to create a task that generates personalized travel itineraries based on weather conditions and tourist attractions for multiple locations'\nicon: 'display'\n---\n\n## Overview\n\nThe Trip Planning tutorial shows how to:\n- Execute workflow steps in parallel\n- Integrate with external APIs\n- Combine data from multiple sources\n- Generate personalized itineraries using AI\n\nFollow each step of the tutorial:\n\nLet's break down the task into its core components:\n\n### 1. Input Schema\n\nFirst, we define what inputs our task expects:\n\n```yaml\ninput_schema:\n  type: object\n  properties:\n    locations:\n      type: array\n      items:\n        type: string\n```\n\n\nThis schema specifies that our task expects an array of location strings (e.g., `[\"New York\", \"London\", \"Paris\"]`).\n\n### 2. Tools Configuration\n\nNext, we define the external tools our task will use:\n\n```yaml\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: YOUR_OPENWEATHERMAP_API_KEY\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: YOUR_BRAVE_API_KEY\n```\n\nWe're using two integrations:\n- The `weather` integration to fetch current weather conditions\n- The `brave` search integration to find tourist attractions\n\n### 3. Main Workflow Steps\n\n<Steps>\n\n  <Step title=\"Get Weather Data\">\n\n```yaml\n- over: $ steps[0].input.locations\n  map:\n    tool: weather\n    arguments:\n      location: $ _\n```\n\n    <Accordion title=\"Understanding the use of the _ Variable in iteration steps\">\n      When used inside a `map` or a `foreach` step, the `_` variable is a reference to the current value in the iteration.\n\n      For example:\n```yaml\n- over: $ [\"Paris\", \"London\"]\n  map:\n    tool: weather\n    arguments:\n      location: $ _ # _ will be \"Paris\", then \"London\"\n```\n    </Accordion>\n\n\n    This step:\n    - Iterates over each location in the input array\n    - Calls the weather API for each location\n  </Step>\n\n  <Step title=\"Search for Tourist Attractions\">\n\n```yaml\n- over: $ steps[0].input.locations\n  map:\n    tool: internet_search\n    arguments:\n      query: $ 'tourist attractions in ' + _\n```\n\n\n    This step:\n    - Iterates over the locations again\n    - Searches for tourist attractions in each location\n    - Constructs a search query by concatenating \"tourist attractions in \" with the location\n  </Step>\n\n  <Step title=\"Combine Data\">\n\n```yaml\n- evaluate:\n    zipped: |-\n      $ list(\n        zip(\n          steps[0].input.locations,\n          [output['result'] for output in steps[0].output],\n          steps[1].output\n        )\n      )\n```\n\n\n    This step:\n    - Combines the data from previous steps into tuples\n    - Each tuple contains: (location, weather_data, attractions_data)\n    - Uses Python's `zip` function to align the data\n\n  </Step>\n\n  <Step title=\"Generate Itineraries\">\n\n```yaml [expandable]\n- over: $ _['zipped']\n  parallelism: 3\n  # Inside the map step, each `_` represents the current element in the list\n  # which is a tuple of (location, weather, attractions)\n  map:\n    prompt:\n    - role: system\n      content: >-\n        $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n        for visiting tourist attractions in some locations.\n        The user will give you the following information for each location:\n\n        - The location\n        - The current weather condition\n        - The top tourist attractions'''\n    - role: user\n      content: >-\n        $ f'''Location: \"{_[0]}\"\n        Weather: \"{_[1]}\"\n        Attractions: \"{_[2]}\"'''\n    unwrap: true\n```\n\n\n    This step:\n    - Processes up to 3 locations in parallel\n    - For each location tuple:\n      - Sends a prompt to the AI model\n      - Includes location, weather, and attraction data\n      - Generates a personalized itinerary\n\n  </Step>\n\n  <Step title=\"Format Final Output\">\n\n```yaml\n- evaluate:\n    final_plan: |-\n      $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n```\n\n\n    This step:\n    - Combines all itineraries into a single output\n    - Separates each itinerary with a divider\n\n  </Step>\n\n</Steps>\n\n<Accordion title=\"Complete Task YAML\" icon=\"code\">\n```yaml YAML [expandable]\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Trip Planning Task\ndescription: A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\n\n########################################################\n################### INPUT SCHEMA #######################\n########################################################\n\ninput_schema:\n  type: object\n  properties:\n    locations:\n      type: array\n      items:\n        type: string\n      description: The locations to search for.\n\n########################################################\n################### TOOLS ##############################\n########################################################\n\ntools:\n- name: wikipedia\n  type: integration\n  integration:\n    provider: wikipedia\n\n- name: weather\n  type: integration\n  integration:\n    provider: weather\n    setup:\n      openweathermap_api_key: \"YOUR_OPENWEATHERMAP_API_KEY\"\n\n- name: internet_search\n  type: integration\n  integration:\n    provider: brave\n    setup:\n      brave_api_key: \"YOUR_BRAVE_API_KEY\"\n\n########################################################\n################### MAIN WORKFLOW ######################\n########################################################\n\nmain:\n- over: $ steps[0].input.locations\n  map:\n    tool: weather\n    arguments:\n      location: $ _\n\n- over: $ steps[0].input.locations\n  map:\n    tool: internet_search\n    arguments:\n      query: $ 'tourist attractions in ' + _\n\n# Zip locations, weather, and attractions into a list of tuples [(location, weather, attractions)]\n- evaluate:\n    zipped: |-\n      $ list(\n        zip(\n          steps[0].input.locations,\n          [output['result'] for output in steps[0].output],\n          steps[1].output\n        )\n      )\n\n\n- over: $ _['zipped']\n  parallelism: 3\n  # Inside the map step, each `_` represents the current element in the list\n  # which is a tuple of (location, weather, attractions)\n  map:\n    prompt:\n    - role: system\n      content: >-\n        $ f'''You are {agent.name}. Your task is to create a detailed itinerary\n        for visiting tourist attractions in some locations.\n        The user will give you the following information for each location:\n\n        - The location\n        - The current weather condition\n        - The top tourist attractions'''\n    - role: user\n      content: >-\n        $ f'''Location: \"{_[0]}\"\n        Weather: \"{_[1]}\"\n        Attractions: \"{_[2]}\"'''\n    unwrap: true\n\n- evaluate:\n    final_plan: |-\n      $ '\\\\n---------------\\\\n'.join(activity for activity in _)\n```\n</Accordion>\n\n## Usage\n\nHere's how to use this task with the Julep SDK:\n\n<CodeGroup>\n\n```python Python [expandable]\nfrom julep import Client\nimport time\nimport yaml\n\n# Initialize the client\nclient = Client(api_key=JULEP_API_KEY)\n\n# Create the agent\nagent = client.agents.create(\n  name=\"Julep Trip Planning Agent\",\n  about=\"A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\",\n)\n\n# Load the task definition\nwith open('trip_planning_task.yaml', 'r') as file:\n  task_definition = yaml.safe_load(file)\n\n# Create the task\ntask = client.tasks.create(\n  agent_id=AGENT_ID,\n  **task_definition\n)\n\n# Create the execution\nexecution = client.executions.create(\n    task_id=task.id,\n    input={\n        \"locations\": [\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]\n    }\n)\n\n# Wait for the execution to complete\nwhile (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:\n    print(result.status)\n    time.sleep(1)\n\n# Print the result\nif result.status == \"succeeded\":\n    print(result.output)\nelse:\n    print(f\"Error: {result.error}\")\n```\n\n```js Node.js [expandable]\nimport { Julep } from '@julep/sdk';\nimport fs from 'fs';\nimport yaml from 'yaml';\n\n// Initialize the client\nconst client = new Julep({\n  apiKey: 'your_julep_api_key'\n});\n\n// Create the agent\nconst agent = await client.agents.create({\n  name: \"Julep Trip Planning Agent\",\n  about: \"A Julep agent that can generate a detailed itinerary for visiting tourist attractions in some locations, considering the current weather conditions.\",\n});\n\n// Load the task definition\nconst taskDefinition = yaml.parse(fs.readFileSync('trip_planning_task.yaml', 'utf8'));\n\n// Create the task\nconst task = await client.tasks.create(\n  agent.id,\n  taskDefinition\n);\n\n// Create the execution\nconst execution = await client.executions.create(\n  task.id,\n  {\n    input: { \n      \"locations\": [\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]\n    }\n  }\n);\n\n// Wait for the execution to complete\nlet result;\nwhile (true) {\n  result = await client.executions.get(execution.id);\n  if (result.status === 'succeeded' || result.status === 'failed') break;\n  console.log(result.status);\n  await new Promise(resolve => setTimeout(resolve, 1000));\n}\n\n// Print the result\nif (result.status === 'succeeded') {\n  console.log(result.output);\n} else {\n  console.error(`Error: ${result.error}`);\n}\n```\n\n</CodeGroup>\n\n## Example Output\n\nAn example output when running this task with an input of `[\"New York\", \"London\", \"Paris\", \"Tokyo\", \"Sydney\"]`:\n\n<Accordion title=\"Example Output\">\nHere's a detailed itinerary for visiting top tourist attractions in New York, considering the current weather conditions. \n\n### Day 1: Iconic Landmarks and Observation Decks\n- **Morning:**\n  - **Top of the Rock Observation Deck:** Start your day with a visit to the Top of the Rock Observation Deck at Rockefeller Plaza. The panoramic 360-degree views from the 70th floor are a must-see. Dress warmly as it feels like 5.2°C outside, and it’s quite windy.\n  - **Link for more info:** [Tripadvisor - Top of the Rock](https://www.tripadvisor.com/Attractions-g60763-Activities-New_York_City_New_York.html)\n\n- **Afternoon:**\n  - **St. Patrick’s Cathedral:** Just a short walk from Rockefeller Plaza, explore the stunning architecture of St. Patrick’s Cathedral. The overcast skies will provide a dramatic backdrop for photos.\n  - **Fifth Avenue:** Enjoy a leisurely stroll along Fifth Avenue, visiting iconic stores and landmarks.\n\n- **Evening:**\n  - **Times Square:** Experience the vibrant lights and energy of Times Square. The overcast clouds might enhance the brightness of the neon lights.\n\n### Day 2: Culture and History\n- **Morning:**\n  - **The Museum of Modern Art (MoMA):** Spend your morning exploring MoMA’s vast collection of modern and contemporary art. This indoor activity is perfect for a cloudy day.\n\n- **Afternoon:**\n  - **Central Park:** Head to Central Park for a refreshing walk. With 100% cloud cover, it's a great day to explore the park without the harsh sun. Consider visiting the Central Park Zoo or taking a guided tour.\n\n- **Evening:**\n  - **Broadway Show:** End your day with a Broadway show. It’s an ideal indoor activity to avoid the chilly weather outside. Book tickets in advance for popular shows.\n\n### Day 3: Historical and Educational\n- **Morning:**\n  - **Statue of Liberty and Ellis Island:** Take a ferry to visit these iconic sites. Dress warmly for the ferry ride. The cloud cover will provide a unique perspective for photos.\n\n- **Afternoon:**\n  - **9/11 Memorial and Museum:** Spend your afternoon reflecting at the 9/11 Memorial and exploring the museum exhibits.\n\n- **Evening:**\n  - **Brooklyn Bridge:** Walk across the Brooklyn Bridge and enjoy the city skyline. With the wind speed at 5.81 m/s, be prepared for breezy conditions.\n\n### Additional Tips:\n- **Clothing:** Wear layers to keep warm, as the temperature feels colder than it actually is.\n- **Dining:** New York offers a plethora of dining options. Consider trying some local favorites like a classic New York bagel or pizza.\n- **Transportation:** Utilize the subway for efficient travel across the city. Taxis and ride-sharing services are also readily available.\n\nFor more details on attractions and guided tours, you can visit [USA Guided Tours](https://usaguidedtours.com/nyc/attraction/) and [I Love NY](https://www.iloveny.com/places-to-go/new-york-city/attractions/). \n\nEnjoy your trip to New York City!\n---------------\n**Day 1: Exploring Iconic London Landmarks**\n\n**Morning:**\n1. **Buckingham Palace**\n   - Start your day early with a visit to Buckingham Palace. Arrive by 9:30 AM to catch the Changing of the Guard ceremony, which typically starts at 11:00 AM. Enjoy the majestic architecture and the surrounding gardens.\n   - Weather Tip: With the overcast clouds, it might feel chilly, so dress warmly and bring an umbrella just in case.\n\n**Midday:**\n2. **Westminster Abbey**\n   - Head towards Westminster Abbey, a short walk from Buckingham Palace. This historic church has been the site of many significant events, including royal weddings and coronations. Spend about 1.5 hours exploring.\n\n3. **Lunch at Borough Market**\n   - Take a tube or walk to Borough Market for a variety of food options. It's a great place to warm up with some hot street food and explore the diverse culinary offerings.\n\n**Afternoon:**\n4. **London Eye**\n   - After lunch, head to the London Eye. The overcast sky might not offer the clearest views, but the experience is still worthwhile. Pre-book your tickets to avoid long lines and enjoy a 30-minute ride on this iconic Ferris wheel.\n\n**Evening:**\n5. **The Globe Theatre**\n   - As the day winds down, visit Shakespeare's Globe Theatre. If there's a performance, consider attending or simply take a guided tour to learn about the history of this famous theater.\n\n**Day 2: Museums and Cultural Exploration**\n\n**Morning:**\n1. **The British Museum**\n   - Start your second day at the British Museum. Spend a few hours exploring the vast collection of art and antiquities. Highlights include the Rosetta Stone and the Elgin Marbles.\n\n**Midday:**\n2. **Lunch near Covent Garden**\n   - Head to Covent Garden for lunch. This area is bustling with restaurants and cafes, perfect for a cozy indoor meal.\n\n**Afternoon:**\n3. **The Tower of London**\n   - After lunch, make your way to the Tower of London. Delve into England's rich history and see the Crown Jewels. Allocate about 2-3 hours for this visit.\n\n**Evening:**\n4. **Tower Bridge**\n   - Conclude your day with a walk across Tower Bridge. The views of the Thames River and the cityscape are beautiful, even on a cloudy evening.\n\n**Day 3: Leisure and Local Experiences**\n\n**Morning:**\n1. **Natural History Museum**\n   - Begin your last day at the Natural History Museum. It's a family-friendly museum with fascinating exhibits, including dinosaur skeletons and a model of a blue whale.\n\n**Midday:**\n2. **Lunch at South Kensington**\n   - Enjoy a relaxed lunch in South Kensington. There are plenty of options, from casual cafes to high-end dining.\n\n**Afternoon:**\n3. **Hyde Park**\n   - Spend your afternoon strolling through Hyde Park. Visit the Serpentine Galleries if you're interested in contemporary art. The park's natural beauty is a peaceful retreat amidst the city hustle.\n\n**Evening:**\n4. **Dinner and a Show in the West End**\n   - End your London adventure with a memorable dinner followed by a theater show in the West End. Book your tickets in advance for popular shows.\n\n**Additional Tips:**\n- Always check the attraction websites for any specific COVID-19 guidelines or changes in operating hours.\n- London’s public transport system is efficient; consider getting an Oyster card for convenient travel.\n- Don't forget to dress in layers to adapt to the chilly weather, and always have your camera ready to capture memories.\n---------------\nHere’s a detailed itinerary for your visit to Paris, considering the current snowy weather conditions and top attractions:\n\n### Day 1: Embrace the Iconic Landmarks\n\n**Morning: Eiffel Tower**\n- **Time:** 9:00 AM\n- **Details:** Begin your day with a visit to the Eiffel Tower. Even in the snow, the tower offers stunning views of Paris. Dress warmly and enjoy hot chocolate from nearby cafes.\n- **Link for more info:** [Tripadvisor - Things to Do in Paris](https://www.tripadvisor.com/Attractions-g187147-Activities-Paris_Ile_de_France.html)\n\n**Afternoon: Louvre Museum**\n- **Time:** 1:00 PM\n- **Details:** Spend your afternoon indoors at the Louvre Museum. With its vast collection of art and history, it's a perfect way to escape the cold. Consider taking a guided tour to make the most of your visit.\n- **Link for more info:** [U.S. News Travel - Things To Do](https://travel.usnews.com/Paris_France/Things_To_Do/)\n\n**Evening: Seine River Cruise**\n- **Time:** 6:00 PM\n- **Details:** End your day with a magical Seine River cruise. The snow adds a picturesque touch to the illuminated landmarks. Ensure to book a heated cruise for comfort.\n\n### Day 2: Explore Cultural and Historical Treasures\n\n**Morning: Notre-Dame Cathedral**\n- **Time:** 9:30 AM\n- **Details:** Visit the iconic Notre-Dame Cathedral. Although some areas may be under restoration, its architecture and history are worth experiencing. Warm clothing is essential as the interior can be chilly.\n\n**Afternoon: Musée d'Orsay**\n- **Time:** 1:30 PM\n- **Details:** Head to the Musée d'Orsay, renowned for its Impressionist masterpieces. This indoor activity is ideal for escaping the cold and enjoying world-class art.\n\n**Evening: Montmartre and Sacré-Cœur**\n- **Time:** 5:00 PM\n- **Details:** Wander through the charming streets of Montmartre and visit the Sacré-Cœur Basilica. The view of Paris in the snow is breathtaking. Enjoy a cozy dinner at a local bistro in Montmartre.\n\n### Day 3: Discover Hidden Gems and Local Flavors\n\n**Morning: Le Marais District**\n- **Time:** 10:00 AM\n- **Details:** Explore Le Marais, known for its vibrant street art, boutiques, and cafes. Enjoy a leisurely breakfast and shop for unique souvenirs.\n\n**Afternoon: Palais Garnier (Opera House)**\n- **Time:** 2:00 PM\n- **Details:** Tour the opulent Palais Garnier. Its stunning interiors are a must-see, especially when it's snowy outside.\n\n**Evening: Moulin Rouge Show**\n- **Time:** 8:00 PM\n- **Details:** Conclude your trip with a classic Parisian experience at the Moulin Rouge. Book in advance to secure a good seat and enjoy the legendary cabaret performance.\n\n### Additional Tips:\n- **Weather Preparation:** Wear layers, waterproof boots, and carry an umbrella. The snow and cold wind can be intense.\n- **Dining:** Indulge in warm, hearty French cuisine at local cafes and restaurants. Try dishes like French onion soup, coq au vin, and tarte Tatin.\n- **Transport:** Use public transportation to avoid the snowy streets, and consider purchasing a Paris Visite pass for unlimited travel.\n\nEnjoy your snowy adventure in Paris!\n---------------\n**Tokyo Itinerary**\n\n**Day 1: Arrival and Exploration of Historical and Cultural Sites**\n\n- **Morning:**\n  - **Asakusa District**: Begin your day with a visit to the historic Asakusa district. Explore the iconic Senso-ji Temple, Tokyo's oldest temple. Enjoy the traditional market streets like Nakamise Street for some shopping and snacks.\n\n- **Afternoon:**\n  - **Tokyo National Museum**: Head to Ueno Park and visit the Tokyo National Museum. Discover Japan’s extensive collection of art and antiquities. This is a great spot to dive into Japanese history and culture.\n\n- **Evening:**\n  - **Dinner in Ueno**: Explore the local dining options around Ueno and enjoy a traditional Japanese dinner.\n\n**Day 2: Modern Tokyo and Unique Experiences**\n\n- **Morning:**\n  - **Ghibli Museum**: Start your day with a magical visit to the Ghibli Museum in Mitaka. Perfect for fans of Studio Ghibli's animated films, this museum offers a whimsical look into the creative world of Hayao Miyazaki.\n\n- **Afternoon:**\n  - **Shibuya and Harajuku**: Head towards the bustling areas of Shibuya and Harajuku. Witness the famous Shibuya Crossing and explore the trendy shops of Harajuku, especially Takeshita Street.\n\n- **Evening:**\n  - **Golden Gai**: Conclude your day in the vibrant Golden Gai district. This area is renowned for its narrow alleys filled with small bars and eateries. Experience the unique nightlife of Tokyo here.\n\n**Day 3: Relax and Explore Green Spaces**\n\n- **Morning:**\n  - **Shinjuku Gyoen National Garden**: Spend a peaceful morning strolling through the beautiful Shinjuku Gyoen, one of Tokyo's largest and most beautiful parks. It's a perfect spot for relaxation and enjoying nature.\n\n- **Afternoon:**\n  - **Meiji Shrine**: Visit the Meiji Shrine, located in a forested area near Harajuku and Shibuya. It's a serene place to learn about Shinto traditions and enjoy the tranquil setting.\n\n- **Evening:**\n  - **Tokyo Tower or Skytree**: End your trip with a visit to either Tokyo Tower or Tokyo Skytree for a panoramic view of the city. It's an unforgettable way to see Tokyo illuminated at night.\n\n**Weather Considerations:**\n- With the current weather of few clouds and a mild temperature around 10.32°C, it is advisable to wear layers and carry a light jacket for comfort during outdoor activities.\n- Humidity is high (92%), so be prepared for a slightly damp feeling and consider moisture-wicking clothing.\n\n**Additional Tips:**\n- Always check the opening hours of attractions and book tickets in advance where necessary.\n- Use Tokyo’s efficient public transport to move around easily.\n- Consider visiting the websites linked in the attraction descriptions for more detailed information and current updates.\n---------------\nHere's a detailed itinerary for exploring some of Sydney's top tourist attractions with the current weather conditions in mind. With clear skies and pleasant temperatures, it's a perfect day to explore the outdoors and enjoy what Sydney has to offer.\n\n### Morning\n\n**9:00 AM - Sydney Opera House**\n- Begin your day with a visit to the iconic Sydney Opera House. Take a guided tour to learn about its history and architecture. Tours are available in multiple languages.\n- **Link:** [Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\n\n**11:00 AM - Royal Botanic Garden Sydney**\n- Just a short walk from the Opera House, enjoy a leisurely stroll through the Royal Botanic Garden. The clear skies will offer beautiful views of the diverse plant life and the Sydney Harbour.\n\n### Afternoon\n\n**12:30 PM - Lunch at Opera Bar**\n- Head back to Opera Bar for lunch. Enjoy a refreshing cocktail with stunning views of the Sydney Harbour Bridge and the waterfront.\n- **Link:** [Top attractions in Sydney | Sydney.com](https://www.sydney.com/things-to-do/attractions)\n\n**2:00 PM - Sydney Harbour Bridge**\n- After lunch, take a scenic walk across the Sydney Harbour Bridge. If you're up for it, consider the BridgeClimb for breathtaking panoramic views of the city.\n\n**4:00 PM - The Rocks**\n- Explore The Rocks, one of Sydney's most historic areas. Wander through the cobbled streets, visit the local markets, and perhaps enjoy a cup of coffee at a nearby café.\n\n### Evening\n\n**6:00 PM - Darling Harbour**\n- Make your way to Darling Harbour for the evening. Here you can visit attractions such as the SEA LIFE Sydney Aquarium or simply enjoy the lively atmosphere by the waterfront.\n\n**8:00 PM - Dinner at a Local Restaurant**\n- Conclude your day with dinner at one of Darling Harbour's many restaurants. Choose from a variety of cuisines while enjoying the vibrant night scene.\n\n### Additional Suggestions\n\n- If you're interested in more unique experiences, consider visiting some of the attractions listed on [Time Out Sydney](https://www.timeout.com/sydney/attractions/tourist-attractions-that-dont-suck), which includes thrilling adventures and scenic tours.\n\nWith clear skies and mild temperatures, this itinerary offers a balanced mix of cultural, historical, and scenic experiences. Enjoy your visit to Sydney!\n</Accordion>\n\n\n## Next Steps\n\n- Try this task yourself, check out the full example, see the [trip-planning cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/03-trip-planning-assistant.ipynb).\n- To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page.\n\n**Also See:**\n\n1. [Input Schema](./trip-planning-input)\n2. [Tools Configuration](./trip-planning-tools)\n3. [Workflow Steps](./trip-planning-workflow)\n4. [Running the Task](./trip-planning-running)\n\n## Related Concepts\n\n- [Agents](/concepts/agents)\n- [Tasks](/concepts/tasks)\n- [Tools](/concepts/tools)\n\n\n"
  },
  {
    "path": "documentation/tutorials/video-processing.mdx",
    "content": "---\ntitle: 'Video Processing'\ndescription: 'Learn how to process and analyze videos using Julep'\nicon: 'display'\n---\n\n## Overview\n\nThis tutorial demonstrates how to:\n- Upload and process videos using Cloudinary integration\n- Extract and analyze video content\n- Add overlays and transformations\n- Process video subtitles and speaker information\n\n## Task Structure\n\nLet's break down the task into its core components:\n\n### 1. Input Schema\n\nFirst, we define what inputs our task expects:\n\n```yaml\ninput_schema:\n  type: object\n  properties:\n    upload_file:\n      type: string\n      description: The url of the file to upload\n    public_id:\n      type: string\n      description: The public id of the file to upload\n    transformation_prompt:\n      type: string\n      description: The prompt for the transformations to apply to the file\n    subtitle_vtt:\n      type: string\n      description: The vtt file content to add subtitles to the video\n```\n\nThis schema specifies that our task expects:\n- A video file URL\n- A public ID for the video\n- A transformation prompt describing desired changes\n- VTT subtitle content (optional)\n\n### 2. Tools Configuration\n\nNext, we define the external tools our task will use:\n\n```yaml\n- name: cloudinary_upload\n  type: integration\n  integration:\n    provider: cloudinary\n    method: media_upload\n    setup:\n      cloudinary_api_key: YOUR_CLOUDINARY_API_KEY\n      cloudinary_api_secret: YOUR_CLOUDINARY_API_SECRET\n      cloudinary_cloud_name: YOUR_CLOUDINARY_CLOUD_NAME\n\n- name: cloudinary_edit\n  type: integration\n  integration:\n    provider: cloudinary\n    method: media_edit\n\n- name: ffmpeg_edit\n  type: integration\n  integration:\n    provider: ffmpeg\n```\n\nWe're using three main integrations:\n- Cloudinary for video uploads and transformations\n- FFmpeg for additional video processing capabilities\n\n### 3. Main Workflow Steps\n\n<Steps>\n  <Step title=\"Initial Video Upload\">\n```yaml\n- tool: cloudinary_upload\n  arguments:\n    file: $ steps[0].input.video_url\n    public_id: $ steps[0].input.public_id\n    upload_params:\n      resource_type: video\n```\n\n    <Accordion title=\"Understanding the use of the steps[0].input variable\">\n      The `steps[0].input` variable refers to the initial input object passed to the task. It's used to access the input parameters defined in the input schema.\n    </Accordion>\n\n    This step:\n    - Takes the input video URL\n    - Uploads it to Cloudinary\n    - Specifies the resource type as video\n  </Step>\n\n  <Step title=\"Create Video Preview\">\n```yaml\n- tool: cloudinary_upload\n  arguments:\n    file: $ steps[0].input.upload_file\n    public_id: $ steps[0].input.public_id\n    upload_params:\n      resource_type: video\n      transformation:\n        - start_offset: 0\n          end_offset: 30\n```\n\n    This step:\n    - Creates a 30-second preview of the video\n    - Useful for quick analysis and processing\n  </Step>\n\n  <Step title=\"Analyze Video Content\">\n```yaml\n- prompt:\n  - role: user\n    content: \n      - type: image_url\n        image_url:\n          url: trimmed_video_url\n      - type: text\n        text: |-\n          Which speakers are speaking in the video? And where does each of them sit?\n```\n\n    This step:\n    - Analyzes the video content\n    - Identifies speakers and their positions\n    - Uses VTT subtitles for additional context\n  </Step>\n\n  <Step title=\"Generate Speaker Transformations\">\n```yaml\n- evaluate:\n    speakers_transformations: |-\n      $ [\n      transform\n      for speaker in _.speakers_json\n        for transform in [\n        {\n          \"overlay\": {\"font_family\": \"Arial\", \"font_size\": 32, \"text\": speaker.speaker},\n          \"color\": \"white\"\n        },\n        {\n          \"duration\": 5,\n          \"flags\": \"layer_apply\",\n          \"gravity\": \"south_east\" if speaker.position == \"right\" else \"south_west\",\n          \"start_offset\": speaker.timestamps[0].start,\n          \"y\": 80,\n          \"x\": 80\n        }\n        ]\n      ]\n```\n\n    This step:\n    - Creates transformations for each speaker\n    - Adds speaker labels with proper positioning\n    - Sets timing for each overlay\n  </Step>\n\n  <Step title=\"Apply Transformations\">\n```yaml\n- tool: cloudinary_upload\n  arguments:\n    file: $ steps[0].input.upload_file\n    public_id: $ steps[0].input.public_id\n    upload_params:\n      resource_type: video\n      transformation: _.speakers_transformations\n```\n\n    This step:\n    - Uses the Cloudinary upload tool to apply the generated transformations\n    - Processes the video with speaker labels and positioning\n    - Returns a URL to the transformed video with all overlays applied\n  </Step>\n</Steps>\n\n<Accordion title=\"Complete Task YAML\" icon=\"code\">\n```yaml YAML [expandable]\n# yaml-language-server: $schema=https://raw.githubusercontent.com/julep-ai/julep/refs/heads/dev/src/schemas/create_task_request.json\nname: Julep Video Processing Task\ndescription: A Julep agent that can process and analyze videos using Cloudinary\n\n########################################################\n################### INPUT SCHEMA #######################\n########################################################\n\ninput_schema:\n  type: object\n  properties:\n    video_url:\n      type: string\n      description: The url of the file to upload\n    public_id:\n      type: string\n      description: The public id of the file to upload\n    transformation_prompt:\n      type: string\n      description: The prompt for the transformations to apply to the file\n\n########################################################\n################### TOOLS ##############################\n########################################################\n\ntools:\n- name: cloudinary_upload\n  type: integration\n  integration:\n    provider: cloudinary\n    method: media_upload\n    setup:\n      cloudinary_api_key: \"YOUR_CLOUDINARY_API_KEY\"\n      cloudinary_api_secret: \"YOUR_CLOUDINARY_API_SECRET\"\n      cloudinary_cloud_name: \"YOUR_CLOUDINARY_CLOUD_NAME\"\n\n########################################################\n################### MAIN WORKFLOW ######################\n########################################################\n\nmain:\n# Step #0 - Upload the video to cloudinary\n- tool: cloudinary_upload\n  arguments:\n    file: $ steps[0].input.video_url\n    public_id: $ steps[0].input.public_id\n    upload_params:\n      resource_type: video\n\n# Step #1 - Analyze the video content with a prompt\n- prompt:\n  - role: user\n    content:\n\n      - type: text\n        text: |-\n          You are a Cloudinary expert. You are given a medial url. it might be an image or a video.\n          You need to come up with a json of transformations to apply to the given media.\n          Overall the json could have multiple transformation json objects.\n          Each transformation json object can have the multiple key value pairs.\n          Each key value pair should have the key as the transformation name like \"aspect_ratio\", \"crop\", \"width\" etc and the value as the transformation parameter value.\n          Given below is an example of a transformation json list. Don't provide explanations and/or comments in the json.\n          ``json\n          [\n            {{\n              \"aspect_ratio\": \"1.0\",\n              \"width\": 250,\n            }},\n            {{\n              \"fetch_format\": \"auto\"\n            }},\n            {{\n              \"overlay\":\n              {{\n                \"url\": \"<image_url>\"\n              }}\n            }},\n            {{\n              \"flags\": \"layer_apply\"\n            }}\n          ]\n          ``\n      - type: image_url\n        image_url:\n          url: $ _.url\n\n      - type: text\n        text: |-\n          $ f'''Hey, check the video above, I need to apply the following transformations using cloudinary.\n          {steps[0].input.transformation_prompt}'''\n\n  unwrap: true\n  settings:\n    model: gemini/gemini-1.5-pro\n\n# Step #2 - Extract the json from the model's response\n- evaluate:\n    model_transformation: >-\n      $ load_json(\n        _[_.find(\"```json\")+7:][:_[_.find(\"```json\")+7:].find(\"```\")])\n\n# Step #3 - Upload the video to cloudinary\n- tool: cloudinary_upload\n  arguments:\n    file: $ steps[0].input.video_url\n    public_id: $ steps[0].input.public_id\n    upload_params:\n      transformation: $ _.model_transformation\n      resource_type: video\n\n# Step #4 - Evaluate the transformed video url\n- evaluate:\n    transformed_video_url: $ _.url\n```\n</Accordion>\n\n## Usage\n\nHere's how to use this task with the Julep SDK:\n\n<CodeGroup>\n\n```python Python [expandable]\nimport time\nimport yaml\nfrom julep import Client\n\n# Initialize the client\nclient = Client(api_key=JULEP_API_KEY)\n\ntransformation_prompt = \"\"\"\n1- I want to add an overlay an the following image to the video, and apply a layer apply flag also. Here's the image url:\nhttps://res.cloudinary.com/demo/image/upload/logos/cloudinary_icon_white.png\n\n2- I also want you to to blur the video, and add a fade in and fade out effect to the video with a duration of 3 seconds each.\n\"\"\"\n# Create the agent\nagent = client.agents.create(\n  name=\"Julep Video Processing Agent\",\n  about=\"A Julep agent that can process and analyze videos using Cloudinary and FFmpeg.\",\n)\n\n# Load the task definition\nwith open('video_processing_task.yaml', 'r') as file:\n  task_definition = yaml.safe_load(file)\n\n# Create the task\ntask = client.tasks.create(\n  agent_id=agent.id,\n  **task_definition\n)\n\n# Create the execution\nexecution = client.executions.create(\n    task_id=task.id,\n    input={\n        \"video_url\":  \"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4\",\n        \"public_id\": \"video_test\",\n        \"transformation_prompt\": transformation_prompt,\n    }\n)\n# Wait for the execution to complete\nwhile (result := client.executions.get(execution.id)).status not in ['succeeded', 'failed']:\n    print(result.status)\n    time.sleep(1)\n\n# Print the result\nif result.status == \"succeeded\":\n    print(result.output)\nelse:\n    print(f\"Error: {result.error}\")\n```\n\n```js Node.js [expandable]\nimport { Julep } from '@julep/sdk';\nimport yaml from 'yaml';\nimport fs from 'fs';\n\nconst transformation_prompt = `\n1- I want to add an overlay an the following image to the video, and apply a layer apply flag also. Here's the image url:\nhttps://res.cloudinary.com/demo/image/upload/logos/cloudinary_icon_white.png\n\n2- I also want you to to blur the video, and add a fade in and fade out effect to the video with a duration of 3 seconds each.\n`;\n\nconst client = new Julep({\n  apiKey: 'your_julep_api_key'\n});\n\n// Create the agent\nconst agent = await client.agents.create({\n  name: \"Julep Video Processing Agent\",\n  about: \"A Julep agent that can process and analyze videos using Cloudinary and FFmpeg.\",\n});\n\n// Load the task definition\nconst taskDefinition = yaml.parse(fs.readFileSync('video_processing_task.yaml', 'utf8'));\n\n// Create the task\nconst task = await client.tasks.create(\n  agent.id,\n  taskDefinition\n);\n\n// Create the execution\nconst execution = await client.executions.create(\n  task.id,\n  {\n    input: { \n      \"video_url\": \"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4\",\n      \"public_id\": \"video_test\",\n      \"transformation_prompt\": transformation_prompt,\n    }\n  }\n);\n\n// Wait for the execution to complete\nlet result;\nwhile (true) {\n  result = await client.executions.get(execution.id);\n  if (result.status === 'succeeded' || result.status === 'failed') break;\n  console.log(result.status);\n  await new Promise(resolve => setTimeout(resolve, 1000));\n}\n\n// Print the result\nif (result.status === 'succeeded') {\n  console.log(result.output);\n} else {\n  console.error(`Error: ${result.error}`);\n}\n```\n\n</CodeGroup>\n\n## Example Output\n\nThis is an example output when the task is run over the sample video input.\n\n<Accordion title=\"Sample Video Input\">\n  <video src=\"http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerMeltdowns.mp4\" controls />\n</Accordion>\n\n<Accordion title=\"Sample Video Output\">\n  <video src=\"https://res.cloudinary.com/dpnjjk8mb/video/upload/v1737201857/video_test2.mp4\" controls />\n</Accordion>\n\n## Next Steps\n\n- Try this task yourself, check out the full example, see the [video-processing-with-natural-language cookbook](https://github.com/julep-ai/julep/blob/main/cookbooks/advanced/05-video-processing-with-natural-language.ipynb).\n- To learn more about the integrations used in this task, check out the [integrations](/integrations/supported-integrations) page.\n\n## Related Concepts\n\n- [Agents](/concepts/agents)\n- [Tasks](/concepts/tasks)\n- [Tools](/concepts/tools)\n"
  },
  {
    "path": "ruff.toml",
    "content": "exclude = [\n    \".bzr\",\n    \".direnv\",\n    \".eggs\",\n    \".git\",\n    \".git-rewrite\",\n    \".hg\",\n    \".ipynb_checkpoints\",\n    \".mypy_cache\",\n    \".nox\",\n    \".pants.d\",\n    \".pyenv\",\n    \".pytest_cache\",\n    \".pytype\",\n    \".ruff_cache\",\n    \".svn\",\n    \".tox\",\n    \".venv\",\n    \".vscode\",\n    \"__pypackages__\",\n    \"_build\",\n    \"buck-out\",\n    \"build\",\n    \"dist\",\n    \"node_modules\",\n    \"site-packages\",\n    \"venv\",\n]\n\nfix = true\nunsafe-fixes = true\n\n# Enumerate all fixed violations.\nshow-fixes = true\n\nrespect-gitignore = true\n\n# Enable preview features.\npreview = true\n\nline-length = 96\nindent-width = 4\n\n# Assume Python 3.12\ntarget-version = \"py312\"\n\n# Group violations by containing file.\noutput-format = \"grouped\"\n\n[lint]\n# Enable preview features.\npreview = true\n\n# TODO: Need to add , \"**/autogen/*.py\"\nexclude = [\"gunicorn_conf.py\", \"*.ipynb\"]\n\n# TODO: Enable C09, S, B, ARG, PTH, ERA, PLW, FURB\nselect = [\"F\", \"E1\", \"E2\", \"E3\", \"E4\", \"E5\", \"E7\", \"W\", \"FAST\", \"I\", \"UP\", \"ASYNC\", \"COM\", \"C4\", \"DTZ\", \"T10\", \"EM\", \"FA\", \"ISC\", \"ICN\", \"INP\", \"PIE\", \"Q\", \"RSE\", \"RET\", \"SLF\", \"SLOT\", \"SIM\", \"INT\", \"PD\", \"PLE\", \"FLY\", \"NPY\", \"PERF\", \"RUF\"]\nignore = [\n  \"E402\",       # module-import-not-at-top-of-file\n  \"E501\",       # line-too-long\n  \"E722\",       # bare-except\n  \"RUF001\",     # ambiguous-unicode-character-string\n  \"RUF002\",     #\n  \"RUF003\",     #\n  \"RUF029\",     # unused-async\n  \"ASYNC230\",   # blocking-open-in-async\n  \"ASYNC109\",   # disallow-async-fns-with-timeout-param\n  \"COM812\", \"ISC001\", # conflict with each other\n  \"UP046\",      # Generic class uses `Generic` subclass instead of type parameters\n]\n\nfixable = [\"ALL\"]\n\n[format]\nexclude = [\"*.ipynb\", \"*.pyi\", \"*.pyc\"]\n\n# Enable preview style formatting.\npreview = true\n\n# Like Black, use double quotes for strings.\nquote-style = \"double\"\n\n# Like Black, indent with spaces, rather than tabs.\nindent-style = \"space\"\n\n# Like Black, respect magic trailing commas.\nskip-magic-trailing-comma = false\n\n# Like Black, automatically detect the appropriate line ending.\nline-ending = \"auto\"\n\ndocstring-code-format = true\ndocstring-code-line-length = \"dynamic\"\n"
  },
  {
    "path": "src/agents-api/.dockerignore",
    "content": "Dockerfile\n*.pyc\n*.pyo\n*.pyd\n__pycache__\n.pytest_cache\n.venv\n"
  },
  {
    "path": "src/agents-api/.gitignore",
    "content": "notebooks/\n\n# Local database files\ntemporal.db\n*.bak\n*.dat\n*.dir\n\n# jupyterlab stuff\nnotebooks/Untitled*.ipynb\n.virtual_documents/\n\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\ncover/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\n.pybuilder/\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n#   For a library or package, you might want to ignore these files since the code is\n#   intended to run in multiple environments; otherwise, check them in:\n# .python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# poetry\n#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.\n#   This is especially recommended for binary packages to ensure reproducibility, and is more\n#   commonly ignored for libraries.\n#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control\n#poetry.lock\n\n# pdm\n#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.\n#pdm.lock\n#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it\n#   in version control.\n#   https://pdm.fming.dev/#use-with-ide\n.pdm.toml\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# pytype static type analyzer\n.pytype/\n\n# Cython debug symbols\ncython_debug/\n\n# PyCharm\n#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can\n#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore\n#  and can be added to the global gitignore or merged into this file.  For a more nuclear\n#  option (not recommended) you can uncomment the following to ignore the entire idea folder.\n#.idea/\n"
  },
  {
    "path": "src/agents-api/.python-version",
    "content": "3.12\n"
  },
  {
    "path": "src/agents-api/.tool-versions",
    "content": "python 3.12.5\n"
  },
  {
    "path": "src/agents-api/AGENTS.md",
    "content": "# AGENTS.md - agents-api\n\nThis directory hosts the `agents-api` FastAPI service and Temporal workflows for agent definitions and task execution.\n\nKey Uses\n- Bash commands:\n  - cd agents-api\n  - source .venv/bin/activate\n  - poe format\n  - poe lint\n  - poe typecheck\n  - ty check [PATH]…           # Extremely fast Python type checker (default: project root)\n  - ty server                  # Start the ty language server for editor integration\n  - ty version                 # Display ty's version\n  - poe test\n  - poe check\n  - bash scripts/generate_openapi_code.sh\n- Core files and utilities:\n  - `agents_api/` contains routers, activities, workflows.\n  - `agents_api/common/` for exceptions, protocol, and utils.\n- Code style guidelines:\n  - Follows root `AGENTS.md` Python standards (FastAPI, async/await, ruff formatting).\n- Testing instructions:\n  - Tests live under `agents-api/tests/` using `ward`.\n  - Run specific tests: `poe test --search \"pattern\" --fail-limit 1`.\n- Repository etiquette:\n  - Tag AI-generated commits with `[AI]`.\n- Developer environment:\n  - Ensure `PYTHONPATH=$PWD` and correct CWD in `agents-api/`.\n- Unexpected behaviors:\n  - Remember to regenerate autogen code after TypeSpec changes.\n\n# Julep Agents API\n\n## Service Overview\n- FastAPI-based service for orchestrating agent workflows \n- Handles tasks, executions, sessions, and tools\n- Temporal-based workflow engine for task execution\n- PostgreSQL for data storage\n- S3 for remote object storage\n\n## Architecture\n- REST API (defined in routers/)\n- Database queries (queries/)\n- Workflow definitions (workflows/)\n- Task activities (activities/)\n- Background worker processing (worker/)\n- Common utilities and protocol definitions (common/)\n- Dependencies for authentication and middleware (dependencies/)\n- Recursive summarization for message history (rec_sum/)\n- Metrics collection and monitoring (metrics/)\n\n## Key Concepts\n- Projects: Organizational units for grouping related resources\n- Tasks: Workflow specifications with steps and tools\n- Executions: Running instances of tasks\n- Sessions: User interaction contexts\n- Agents: LLM-based interfaces for users\n- Tools: Integrations and capabilities usable by agents\n\n## Runtime Flow\n- User defines tasks with step definitions\n- Task execution creates workflow in Temporal\n- Activities run individual steps (prompt, tool calls, etc.)\n- Transitions track execution state\n- Results stored in database, retrievable via API\n\n## Expression Evaluation\n- Task steps use Python expressions for logic/data flow\n- Expressions prefixed with '$' executed in sandbox\n- Backward compatibility: '{{variable}}' → '${variable}'\n- Input context: '_' holds current input, 'inputs' and 'outputs' for history\n\n## Validation\n- Expression validation checks syntax, undefined names, unsafe operations\n- Task validation checks all expressions in workflow steps\n- Security: Sandbox with limited function/module access\n"
  },
  {
    "path": "src/agents-api/Dockerfile",
    "content": "# syntax=docker/dockerfile:1\n# check=error=true\n\nFROM python:3.12-slim\nCOPY --from=ghcr.io/astral-sh/uv:0.5.5 /uv /uvx /bin/\n\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n    gcc \\\n    g++ \\\n    libboost-all-dev \\\n    libc6-dev \\\n    libexpat1-dev \\\n    libffi-dev \\\n    liblzma-dev \\\n    libssl-dev \\\n    make \\\n    wget \\\n    && apt-get clean \\\n    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*\n\nWORKDIR /app\n\nCOPY .python-version pyproject.toml uv.lock ./\n\nRUN \\\n  uv sync --frozen --all-extras --no-group dev --color never --python-preference system\n\nCOPY . ./\n\nENV PYTHONUNBUFFERED=1\nENV GUNICORN_CMD_ARGS=\"--capture-output --enable-stdio-inheritance\"\n\nENTRYPOINT [\"uv\", \"run\", \"--offline\", \"--no-sync\", \"gunicorn\", \"agents_api.web:app\", \"-c\", \"gunicorn_conf.py\"]\n"
  },
  {
    "path": "src/agents-api/Dockerfile.worker",
    "content": "# syntax=docker/dockerfile:1\n# check=error=true\n\nFROM python:3.12-slim\nCOPY --from=ghcr.io/astral-sh/uv:0.5.5 /uv /uvx /bin/\n\nRUN apt-get update && apt-get install -y --no-install-recommends \\\n    gcc \\\n    g++ \\\n    libboost-all-dev \\\n    libc6-dev \\\n    libexpat1-dev \\\n    libffi-dev \\\n    liblzma-dev \\\n    libssl-dev \\\n    make \\\n    wget \\\n    && apt-get clean \\\n    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*\n\nWORKDIR /app\n\nCOPY .python-version pyproject.toml uv.lock ./\n\nRUN \\\n  uv sync --frozen --all-extras --no-group dev --color never --python-preference system\n\nCOPY . ./\n\nENV PYTHONUNBUFFERED=1\nENV GUNICORN_CMD_ARGS=\"--capture-output --enable-stdio-inheritance\"\n\nENTRYPOINT [\"uv\", \"run\", \"--offline\", \"--no-sync\", \"python\", \"-m\", \"agents_api.worker\"]\n"
  },
  {
    "path": "src/agents-api/README.md",
    "content": "# agents-api\n\n## Overview\n\nThe `agents-api` project serves as the foundation of the agent management system, defining the structure and capabilities of the API that manages agents. It includes operations such as creating, updating, listing, and deleting agents, as well as managing documents and tools associated with these agents.\n\n## Modules\n\n### Models\n\nThe `models` module encapsulates all data interactions with the CozoDB database, providing a structured way to perform CRUD operations and other specific data manipulations across various entities.\n\n### Routers\n\nThe `routers` module handles HTTP routing for different parts of the application, directing incoming HTTP requests to the appropriate handler functions.\n\n### Dependencies\n\nThis module contains components crucial for the operation of the agents-api, including authentication, developer identification, and custom exception handling.\n\n### Common Utilities\n\nThe `utils` module offers a collection of utility functions designed to support various aspects of the application, including interactions with the Cozo API client, date and time operations, and custom JSON utilities.\n\n### Activities\n\nThe `activities` module facilitates various activities related to agent interactions, such as memory management, generating insights from dialogues, and summarizing relationships.\n\n### Clients\n\nThe `clients` module contains client classes and functions for interacting with various external services and APIs, providing a simplified interface for the rest of the application.\n\n### Workers\n\nThis module is responsible for handling background tasks and jobs for the Agents API application, enhancing the application's performance and scalability.\n\n## Getting Started\n\nTo set up the project for development:\n\n1. Clone the repository.\n2. Install dependencies.\n3. Run the application.\n\nThis guide provides a brief overview for new contributors to get started with the project development.\n\n## Schema\n\n```\n[agent_default_settings]\n┌───┬────────────────────┬────────┬─────────┬─────────────┐\n│   │ column             │ is_key │ type    │ has_default │\n├───┼────────────────────┼────────┼─────────┼─────────────┤\n│ 0 │ agent_id           │ True   │ Uuid    │ False       │\n│ 1 │ frequency_penalty  │ False  │ Float   │ True        │\n│ 2 │ presence_penalty   │ False  │ Float   │ True        │\n│ 3 │ length_penalty     │ False  │ Float   │ True        │\n│ 4 │ repetition_penalty │ False  │ Float   │ True        │\n│ 5 │ top_p              │ False  │ Float   │ True        │\n│ 6 │ temperature        │ False  │ Float   │ True        │\n│ 7 │ min_p              │ False  │ Float   │ True        │\n│ 8 │ preset             │ False  │ String? │ True        │\n└───┴────────────────────┴────────┴─────────┴─────────────┘\n\n[agents]\n┌───┬──────────────┬────────┬──────────┬─────────────┐\n│   │ column       │ is_key │ type     │ has_default │\n├───┼──────────────┼────────┼──────────┼─────────────┤\n│ 0 │ developer_id │ True   │ Uuid     │ False       │\n│ 1 │ agent_id     │ True   │ Uuid     │ False       │\n│ 2 │ name         │ False  │ String   │ False       │\n│ 3 │ about        │ False  │ String   │ False       │\n│ 4 │ instructions │ False  │ [String] │ True        │\n│ 5 │ model        │ False  │ String   │ True        │\n│ 6 │ created_at   │ False  │ Float    │ True        │\n│ 7 │ updated_at   │ False  │ Float    │ True        │\n│ 8 │ metadata     │ False  │ Json     │ True        │\n└───┴──────────────┴────────┴──────────┴─────────────┘\n\n[developers]\n┌───┬──────────────┬────────┬──────────┬─────────────┐\n│   │ column       │ is_key │ type     │ has_default │\n├───┼──────────────┼────────┼──────────┼─────────────┤\n│ 0 │ developer_id │ True   │ Uuid     │ False       │\n│ 1 │ email        │ False  │ String   │ False       │\n│ 2 │ active       │ False  │ Bool     │ True        │\n│ 3 │ tags         │ False  │ [String] │ True        │\n│ 4 │ settings     │ False  │ Json     │ False       │\n│ 5 │ created_at   │ False  │ Float    │ True        │\n│ 6 │ updated_at   │ False  │ Float    │ True        │\n└───┴──────────────┴────────┴──────────┴─────────────┘\n\n[docs]\n┌───┬────────────┬────────┬────────┬─────────────┐\n│   │ column     │ is_key │ type   │ has_default │\n├───┼────────────┼────────┼────────┼─────────────┤\n│ 0 │ owner_type │ True   │ String │ False       │\n│ 1 │ owner_id   │ True   │ Uuid   │ False       │\n│ 2 │ doc_id     │ True   │ Uuid   │ False       │\n│ 3 │ title      │ False  │ String │ False       │\n│ 4 │ created_at │ False  │ Float  │ True        │\n│ 5 │ metadata   │ False  │ Json   │ True        │\n└───┴────────────┴────────┴────────┴─────────────┘\n\n[entries]\n┌────┬──────────────┬────────┬─────────┬─────────────┐\n│    │ column       │ is_key │ type    │ has_default │\n├────┼──────────────┼────────┼─────────┼─────────────┤\n│ 0  │ session_id   │ True   │ Uuid    │ False       │\n│ 1  │ entry_id     │ True   │ Uuid    │ True        │\n│ 2  │ source       │ True   │ String  │ False       │\n│ 3  │ role         │ True   │ String  │ False       │\n│ 4  │ name         │ True   │ String? │ True        │\n│ 5  │ content      │ False  │ [Json]  │ False       │\n│ 6  │ tool_call_id │ False  │ String? │ True        │\n│ 7  │ tool_calls   │ False  │ [Json]? │ True        │\n│ 8  │ token_count  │ False  │ Int     │ False       │\n│ 9  │ tokenizer    │ False  │ String  │ False       │\n│ 10 │ created_at   │ False  │ Float   │ True        │\n│ 11 │ timestamp    │ False  │ Float   │ True        │\n└────┴──────────────┴────────┴─────────┴─────────────┘\n\n[executions]\n┌───┬──────────────┬────────┬─────────┬─────────────┐\n│   │ column       │ is_key │ type    │ has_default │\n├───┼──────────────┼────────┼─────────┼─────────────┤\n│ 0 │ task_id      │ True   │ Uuid    │ False       │\n│ 1 │ execution_id │ True   │ Uuid    │ False       │\n│ 2 │ status       │ False  │ String  │ True        │\n│ 3 │ input        │ False  │ Json    │ False       │\n│ 4 │ output       │ False  │ Json?   │ True        │\n│ 5 │ error        │ False  │ String? │ True        │\n│ 6 │ session_id   │ False  │ Uuid?   │ True        │\n│ 7 │ metadata     │ False  │ Json    │ True        │\n│ 8 │ created_at   │ False  │ Float   │ True        │\n│ 9 │ updated_at   │ False  │ Float   │ True        │\n└───┴──────────────┴────────┴─────────┴─────────────┘\n\n[files]\n┌───┬──────────────┬────────┬─────────┬─────────────┐\n│   │ column       │ is_key │ type    │ has_default │\n├───┼──────────────┼────────┼─────────┼─────────────┤\n│ 0 │ developer_id │ True   │ Uuid    │ False       │\n│ 1 │ file_id      │ True   │ Uuid    │ False       │\n│ 2 │ name         │ False  │ String  │ False       │\n│ 3 │ description  │ False  │ String  │ True        │\n│ 4 │ mime_type    │ False  │ String? │ True        │\n│ 5 │ size         │ False  │ Int     │ False       │\n│ 6 │ hash         │ False  │ String  │ False       │\n│ 7 │ created_at   │ False  │ Float   │ True        │\n└───┴──────────────┴────────┴─────────┴─────────────┘\n\n[memories]\n┌───┬──────────────────┬────────┬────────────┬─────────────┐\n│   │ column           │ is_key │ type       │ has_default │\n├───┼──────────────────┼────────┼────────────┼─────────────┤\n│ 0 │ memory_id        │ True   │ Uuid       │ False       │\n│ 1 │ content          │ False  │ String     │ False       │\n│ 2 │ last_accessed_at │ False  │ Float?     │ True        │\n│ 3 │ timestamp        │ False  │ Float      │ True        │\n│ 4 │ sentiment        │ False  │ Int        │ True        │\n│ 5 │ entities         │ False  │ [Json]     │ True        │\n│ 6 │ created_at       │ False  │ Float      │ True        │\n│ 7 │ embedding        │ False  │ <F32;768>? │ True        │\n└───┴──────────────────┴────────┴────────────┴─────────────┘\n\n[memory_lookup]\n┌───┬───────────┬────────┬───────┬─────────────┐\n│   │ column    │ is_key │ type  │ has_default │\n├───┼───────────┼────────┼───────┼─────────────┤\n│ 0 │ agent_id  │ True   │ Uuid  │ False       │\n│ 1 │ user_id   │ True   │ Uuid? │ True        │\n│ 2 │ memory_id │ True   │ Uuid  │ False       │\n└───┴───────────┴────────┴───────┴─────────────┘\n\n[relations]\n┌───┬──────────┬────────┬────────┬─────────────┐\n│   │ column   │ is_key │ type   │ has_default │\n├───┼──────────┼────────┼────────┼─────────────┤\n│ 0 │ head     │ True   │ Uuid   │ False       │\n│ 1 │ relation │ True   │ String │ False       │\n│ 2 │ tail     │ True   │ Uuid   │ False       │\n└───┴──────────┴────────┴────────┴─────────────┘\n\n[session_cache]\n┌───┬────────┬────────┬────────┬─────────────┐\n│   │ column │ is_key │ type   │ has_default │\n├───┼────────┼────────┼────────┼─────────────┤\n│ 0 │ key    │ True   │ String │ False       │\n│ 1 │ value  │ False  │ Json   │ False       │\n└───┴────────┴────────┴────────┴─────────────┘\n\n[session_lookup]\n┌───┬──────────────────┬────────┬────────┬─────────────┐\n│   │ column           │ is_key │ type   │ has_default │\n├───┼──────────────────┼────────┼────────┼─────────────┤\n│ 0 │ session_id       │ True   │ Uuid   │ False       │\n│ 1 │ participant_type │ True   │ String │ False       │\n│ 2 │ participant_id   │ True   │ Uuid   │ False       │\n└───┴──────────────────┴────────┴────────┴─────────────┘\n\n[sessions]\n┌────┬────────────────────┬────────┬──────────┬─────────────┐\n│    │ column             │ is_key │ type     │ has_default │\n├────┼────────────────────┼────────┼──────────┼─────────────┤\n│ 0  │ developer_id       │ True   │ Uuid     │ False       │\n│ 1  │ session_id         │ True   │ Uuid     │ False       │\n│ 2  │ updated_at         │ True   │ Validity │ True        │\n│ 3  │ situation          │ False  │ String   │ False       │\n│ 4  │ summary            │ False  │ String?  │ True        │\n│ 5  │ created_at         │ False  │ Float    │ True        │\n│ 6  │ metadata           │ False  │ Json     │ True        │\n│ 7  │ render_templates   │ False  │ Bool     │ True        │\n│ 8  │ token_budget       │ False  │ Int?     │ True        │\n│ 9  │ context_overflow   │ False  │ String?  │ True        │\n│ 10 │ forward_tool_calls │ False  │ Bool?    │ True        │\n│ 11 │ recall_options     │ False  │ Json     │ True        │\n└────┴────────────────────┴────────┴──────────┴─────────────┘\n\n[snippets]\n┌───┬───────────┬────────┬─────────────┬─────────────┐\n│   │ column    │ is_key │ type        │ has_default │\n├───┼───────────┼────────┼─────────────┼─────────────┤\n│ 0 │ doc_id    │ True   │ Uuid        │ False       │\n│ 1 │ index     │ True   │ Int         │ False       │\n│ 2 │ content   │ False  │ String      │ False       │\n│ 3 │ embedding │ False  │ <F32;1024>? │ True        │\n└───┴───────────┴────────┴─────────────┴─────────────┘\n\n[tasks]\n┌────┬───────────────┬────────┬──────────┬─────────────┐\n│    │ column        │ is_key │ type     │ has_default │\n├────┼───────────────┼────────┼──────────┼─────────────┤\n│ 0  │ agent_id      │ True   │ Uuid     │ False       │\n│ 1  │ task_id       │ True   │ Uuid     │ False       │\n│ 2  │ updated_at_ms │ True   │ Validity │ True        │\n│ 3  │ name          │ False  │ String   │ False       │\n│ 4  │ description   │ False  │ String?  │ True        │\n│ 5  │ input_schema  │ False  │ Json     │ False       │\n│ 6  │ tools         │ False  │ [Json]   │ True        │\n│ 7  │ inherit_tools │ False  │ Bool     │ True        │\n│ 8  │ workflows     │ False  │ [Json]   │ False       │\n│ 9  │ created_at    │ False  │ Float    │ True        │\n│ 10 │ metadata      │ False  │ Json     │ True        │\n└────┴───────────────┴────────┴──────────┴─────────────┘\n\n[temporal_executions_lookup]\n┌───┬────────────────────────┬────────┬─────────┬─────────────┐\n│   │ column                 │ is_key │ type    │ has_default │\n├───┼────────────────────────┼────────┼─────────┼─────────────┤\n│ 0 │ execution_id           │ True   │ Uuid    │ False       │\n│ 1 │ id                     │ True   │ String  │ False       │\n│ 2 │ run_id                 │ False  │ String? │ False       │\n│ 3 │ first_execution_run_id │ False  │ String? │ False       │\n│ 4 │ result_run_id          │ False  │ String? │ False       │\n│ 5 │ created_at             │ False  │ Float   │ True        │\n└───┴────────────────────────┴────────┴─────────┴─────────────┘\n\n[tools]\n┌───┬─────────────┬────────┬─────────┬─────────────┐\n│   │ column      │ is_key │ type    │ has_default │\n├───┼─────────────┼────────┼─────────┼─────────────┤\n│ 0 │ agent_id    │ True   │ Uuid    │ False       │\n│ 1 │ tool_id     │ True   │ Uuid    │ False       │\n│ 2 │ type        │ False  │ String  │ False       │\n│ 3 │ name        │ False  │ String  │ False       │\n│ 4 │ description │ False  │ String? │ False       │\n│ 5 │ spec        │ False  │ Json    │ False       │\n│ 6 │ updated_at  │ False  │ Float   │ True        │\n│ 7 │ created_at  │ False  │ Float   │ True        │\n└───┴─────────────┴────────┴─────────┴─────────────┘\n\n[transitions]\n┌───┬───────────────┬────────┬───────────────┬─────────────┐\n│   │ column        │ is_key │ type          │ has_default │\n├───┼───────────────┼────────┼───────────────┼─────────────┤\n│ 0 │ execution_id  │ True   │ Uuid          │ False       │\n│ 1 │ transition_id │ True   │ Uuid          │ False       │\n│ 2 │ type          │ False  │ String        │ False       │\n│ 3 │ current       │ False  │ (String,Int)  │ False       │\n│ 4 │ next          │ False  │ (String,Int)? │ False       │\n│ 5 │ output        │ False  │ Json?         │ False       │\n│ 6 │ task_token    │ False  │ String?       │ True        │\n│ 7 │ metadata      │ False  │ Json          │ True        │\n│ 8 │ created_at    │ False  │ Float         │ True        │\n│ 9 │ updated_at    │ False  │ Float         │ True        │\n└───┴───────────────┴────────┴───────────────┴─────────────┘\n\n[users]\n┌───┬──────────────┬────────┬────────┬─────────────┐\n│   │ column       │ is_key │ type   │ has_default │\n├───┼──────────────┼────────┼────────┼─────────────┤\n│ 0 │ developer_id │ True   │ Uuid   │ False       │\n│ 1 │ user_id      │ True   │ Uuid   │ False       │\n│ 2 │ name         │ False  │ String │ False       │\n│ 3 │ about        │ False  │ String │ False       │\n│ 4 │ created_at   │ False  │ Float  │ True        │\n│ 5 │ updated_at   │ False  │ Float  │ True        │\n│ 6 │ metadata     │ False  │ Json   │ True        │\n└───┴──────────────┴────────┴────────┴─────────────┘\n\n```\n"
  },
  {
    "path": "src/agents-api/agents_api/__init__.py",
    "content": "\"\"\"\nThe `agents_api` module serves as the foundation of the agent management system within the `agents-api` project.\nThis module is responsible for defining the structure and capabilities of the API that manages agents.\nIt includes operations such as creating, updating, listing, and deleting agents, as well as managing documents and tools associated with these agents.\n\"\"\"\n\n# Failed decoding arguments fix\nfrom temporalio import workflow\n\nwith workflow.unsafe.imports_passed_through():\n    import msgpack as msgpack\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/AGENTS.md",
    "content": "# AGENTS.md - activities\n\nThis folder contains Temporal activity implementations for task steps in `agents-api`.\n\nGuidelines\n- Define activities as async functions with the `@activity` decorator.\n- Validate Python expressions using `validate_py_expression` from `base_evaluate`.\n- Follow root error-handling patterns with typed exceptions.\n- Document activity behavior with Google-style docstrings.\n- Register activities in the worker (`agents_api/worker`).\n- See parent AGENTS.md for component-level commands and tests.\n\n# Activities\n\n## Purpose\n- Houses Temporal activities (atomic units of work) for task execution\n- Each activity represents an operation that can be performed within workflows\n- Activities have built-in retry policies, timeouts, and heartbeats\n\n## Key Activities\n\n### task_steps/\n- `base_evaluate`: Evaluates Python expressions in a sandbox environment (simpleeval)\n- `get_value_step`: Retrieves values from context\n- `pg_query_step`: Executes PostgreSQL queries\n- `prompt_step`: Generates text using LLMs\n- `tool_call_step`: Calls tools (integrations with external systems)\n- `transition_step`: Handles workflow transitions\n\n### External Operations\n- `execute_api_call`: Makes HTTP requests to external APIs\n- `execute_integration`: Calls integrations service\n- `execute_system`: Performs system operations\n\n### Data Management\n- `sync_items_remote`: Saves/loads large objects to/from S3\n\n## Expression Handling\n- Python expressions prefixed with `$` parsed by base_evaluate\n- Backward compatibility for {{var}} template syntax → $f'''{{var}}'''\n- Security: Limited functions, modules, operations in sandbox\n- Validation: Syntax, undefined names, unsafe operations checked\n\n## Context\n- Task steps receive `StepContext` with:\n  - Current cursor position (workflow, step, scope)\n  - Input data for the step\n  - Previous inputs/outputs in the workflow\n  - Agent configuration and tools\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/__init__.py",
    "content": "\"\"\"\nThe `activities` module within the agents-api package is designed to facilitate various activities related to agent interactions. This includes handling memory management, generating insights from dialogues, summarizing relationships, and more.\n\nThis module plays a crucial role in enhancing the capabilities of agents by providing them with the tools to understand and process information more effectively.\n\"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/demo.py",
    "content": "from temporalio import activity\n\nfrom ..env import testing\n\n\nasync def demo_activity(a: int, b: int) -> int:\n    # Should throw an error if testing is not enabled\n    msg = \"This should not be called in production\"\n    raise Exception(msg)\n\n\nasync def mock_demo_activity(a: int, b: int) -> int:\n    return a + b\n\n\ndemo_activity = activity.defn(name=\"demo_activity\")(\n    demo_activity if not testing else mock_demo_activity,\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/execute_api_call.py",
    "content": "from base64 import b64encode\nfrom typing import Any, TypedDict\n\nimport httpx\nfrom beartype import beartype\nfrom temporalio import activity\n\nfrom ..autogen.openapi_model import ApiCallDef\nfrom ..env import testing\n\n\nclass RequestArgs(TypedDict):\n    content: str | None\n    data: dict[str, Any] | None\n    json_: dict[str, Any] | None\n    cookies: dict[str, str] | None\n    params: str | dict[str, Any] | None\n    url: str | None\n    headers: dict[str, str] | None\n    files: dict[str, Any] | None\n    method: str | None\n    follow_redirects: bool | None\n    include_response_content: bool = True\n\n\n@beartype\nasync def execute_api_call(\n    api_call: ApiCallDef,\n    request_args: RequestArgs,\n) -> Any:\n    try:\n        # Use client with timeout and proper error handling\n        async with httpx.AsyncClient(timeout=600) as client:\n            # Extract URL, method, and headers from arguments\n            arg_url = request_args.pop(\"url\", None)\n            arg_headers = request_args.pop(\"headers\", None)\n            arg_method = request_args.pop(\"method\", None)\n\n            # Allow the method to be overridden by the request_args\n            method = arg_method or api_call.method\n            url = arg_url or str(api_call.url)\n\n            # Merge headers from both arguments and API call definition\n            merged_headers = (arg_headers or {}) | (api_call.headers or {})\n\n            # Allow follow_redirects to be overridden by request_args\n            follow_redirects = request_args.pop(\"follow_redirects\", api_call.follow_redirects)\n\n            # Log the request (debug level)\n            if activity.in_activity():\n                activity.logger.debug(f\"Making API call: {method} to {url}\")\n\n            include_response_content = request_args.pop(\"include_response_content\", None)\n\n            # Execute the HTTP request\n            response = await client.request(\n                method=method,\n                url=url,\n                headers=merged_headers,\n                follow_redirects=follow_redirects,\n                **request_args,\n            )\n\n            # Raise for HTTP errors\n            try:\n                response.raise_for_status()\n            except httpx.HTTPStatusError as e:\n                # For HTTP errors, include response body in the error for debugging\n                error_body = e.response.text[:500] if e.response.text else \"(empty body)\"\n                if activity.in_activity():\n                    activity.logger.error(\n                        f\"HTTP error {e.response.status_code} in API call: {e!s}\\n\"\n                        f\"Response body: {error_body}\"\n                    )\n                raise\n\n            # Prepare response dictionary\n            response_dict = {\n                \"status_code\": response.status_code,\n                \"headers\": dict(response.headers),\n            }\n\n            if include_response_content or api_call.include_response_content:\n                response_dict.update({\"content\": b64encode(response.content).decode(\"ascii\")})\n\n            # Try to parse JSON response if possible\n            try:\n                response_dict[\"json\"] = response.json()\n            except Exception as e:\n                response_dict[\"json\"] = None\n                content_preview = response.text[:100] if response.text else \"(empty)\"\n                if activity.in_activity():\n                    activity.logger.debug(\n                        f\"Response not valid JSON: {e!s}\\n\"\n                        f\"Content-Type: {response.headers.get('content-type')}\\n\"\n                        f\"Content preview: {content_preview}\"\n                    )\n\n        return response_dict\n\n    except httpx.TimeoutException as e:\n        if activity.in_activity():\n            activity.logger.error(f\"Timeout in API call: {e!s}\")\n        raise\n    except httpx.RequestError as e:\n        # Network-level errors\n        if activity.in_activity():\n            activity.logger.error(f\"Request error in API call: {e!s}\")\n        raise\n    except Exception as e:\n        if activity.in_activity():\n            activity.logger.error(f\"Error in execute_api_call: {e!s}\")\n        raise\n\n\nmock_execute_api_call = execute_api_call\n\nexecute_api_call = activity.defn(name=\"execute_api_call\")(\n    execute_api_call if not testing else mock_execute_api_call,\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/execute_integration.py",
    "content": "import json\nfrom typing import Any\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom pydantic import AnyUrl, BaseModel\nfrom temporalio import activity\n\nfrom ..app import app\nfrom ..autogen.openapi_model import BaseIntegrationDef\nfrom ..clients import integrations\nfrom ..common.exceptions.tools import IntegrationExecutionException\nfrom ..env import testing\nfrom ..queries import tools\n\n\ndef serialize_pydantic_objects(obj: Any) -> Any:\n    \"\"\"Recursively convert Pydantic types to JSON-serializable formats.\"\"\"\n    if isinstance(obj, BaseModel):\n        return obj.model_dump(mode=\"json\")\n    if isinstance(obj, AnyUrl):\n        return str(obj)\n    if isinstance(obj, dict):\n        return {k: serialize_pydantic_objects(v) for k, v in obj.items()}\n    if isinstance(obj, list):\n        return [serialize_pydantic_objects(item) for item in obj]\n    return obj\n\n\n@beartype\nasync def execute_integration(\n    developer_id: UUID,\n    agent_id: UUID,\n    task_id: UUID | None,\n    session_id: UUID | None,\n    tool_name: str,\n    integration: BaseIntegrationDef,\n    arguments: dict[str, Any],\n    setup: dict[str, Any] = {},\n    connection_pool=None,\n) -> Any:\n    # AIDEV-NOTE: task_id or session_id must be provided (one for task execution, one for chat)\n    if task_id is None and session_id is None:\n        msg = \"Either task_id or session_id must be provided\"\n        raise ValueError(msg)\n\n    if connection_pool is None:\n        connection_pool = getattr(app.state, \"postgres_pool\", None)\n\n    merged_tool_args = await tools.get_tool_args_from_metadata(\n        developer_id=developer_id,\n        agent_id=agent_id,\n        task_id=task_id,\n        session_id=session_id,\n        arg_type=\"args\",\n        connection_pool=connection_pool,\n    )\n\n    merged_tool_setup = await tools.get_tool_args_from_metadata(\n        developer_id=developer_id,\n        agent_id=agent_id,\n        task_id=task_id,\n        session_id=session_id,\n        arg_type=\"setup\",\n        connection_pool=connection_pool,\n    )\n\n    arguments = arguments | (integration.arguments or {}) | merged_tool_args.get(tool_name, {})\n\n    # Convert integration.setup to dict and ensure all Pydantic types are serialized\n    integration_setup = {}\n    if integration.setup:\n        # Use our helper to recursively serialize any Pydantic objects\n        integration_setup = serialize_pydantic_objects(integration.setup)\n\n    # Serialize both setup and arguments to ensure no Pydantic objects remain\n    setup = serialize_pydantic_objects(\n        setup | integration_setup | merged_tool_setup.get(tool_name, {})\n    )\n    arguments = serialize_pydantic_objects(arguments)\n\n    try:\n        # Handle dummy provider as a special case\n        if integration.provider == \"dummy\":\n            return arguments\n\n        # Call the integration service\n        integration_service_response = await integrations.run_integration_service(\n            provider=integration.provider,\n            setup=setup,\n            method=integration.method,\n            arguments=arguments,\n        )\n\n        # Check for error in the response\n        if error_message := integration_service_response.get(\"error\"):\n            integration_str = (\n                f\"{integration.provider}.{integration.method}\"\n                if integration.method\n                else integration.provider\n            )\n\n            # Log the error with more context\n            if activity.in_activity():\n                activity.logger.error(\n                    f\"Integration {integration_str} returned error: {error_message}. \"\n                    f\"Arguments: {json.dumps(arguments)[:200]}...\"\n                )\n\n            # Raise a proper exception with details\n            raise IntegrationExecutionException(\n                integration=integration,\n                error=error_message,\n            )\n\n        return integration_service_response\n\n    except IntegrationExecutionException:\n        # Re-raise our custom exceptions directly\n        raise\n    except Exception as e:\n        # For all other exceptions, add context\n        integration_str = integration.provider + (\n            \".\" + integration.method if integration.method else \"\"\n        )\n\n        if activity.in_activity():\n            activity.logger.error(\n                f\"Error executing integration {integration_str}: {e!s}. Tool: {tool_name}\"\n            )\n\n        # Re-raise with better context\n        raise IntegrationExecutionException(\n            integration=integration,\n            error=f\"Failed to execute {integration_str}: {e!s}\",\n        ) from e\n\n\nmock_execute_integration = execute_integration\n\nexecute_integration = activity.defn(name=\"execute_integration\")(\n    execute_integration if not testing else mock_execute_integration,\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/execute_system.py",
    "content": "from functools import partial\nfrom typing import Any\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom box import Box, BoxList\nfrom fastapi.background import BackgroundTasks\nfrom temporalio import activity\n\nfrom ..app import app\nfrom ..autogen.openapi_model import (\n    ChatInput,\n    CreateDocRequest,\n    CreateExecutionRequest,\n    CreateSessionRequest,\n    HybridDocSearchRequest,\n    SystemDef,\n    TextOnlyDocSearchRequest,\n    UpdateSessionRequest,\n    UpdateUserRequest,\n    VectorDocSearchRequest,\n)\nfrom ..common.utils.evaluator import get_handler\nfrom ..env import testing\nfrom ..queries import developers\n\n\n@beartype\nasync def execute_system(\n    developer_id: UUID,\n    system: SystemDef,\n    connection_pool=None,\n) -> Any:\n    \"\"\"Execute a system call with the appropriate handler and transformed arguments.\"\"\"\n\n    arguments: dict[str, Any] = system.arguments or {}\n\n    if connection_pool is None:\n        connection_pool = getattr(app.state, \"postgres_pool\", None)\n\n    arguments[\"developer_id\"] = developer_id\n\n    # Unbox all the arguments\n    for key, value in arguments.items():\n        if isinstance(value, Box):\n            arguments[key] = value.to_dict()\n        elif isinstance(value, BoxList):\n            arguments[key] = value.to_list()\n\n    # Convert all UUIDs to UUID objects\n    uuid_fields = [\n        \"agent_id\",\n        \"user_id\",\n        \"task_id\",\n        \"session_id\",\n        \"doc_id\",\n        \"owner_id\",\n        \"developer_id\",\n    ]\n    for field in uuid_fields:\n        if field in arguments and not isinstance(arguments[field], UUID):\n            arguments[field] = UUID(arguments[field])\n\n    try:\n        # Partial with connection pool\n        handler = get_handler(system)\n        handler = partial(handler, connection_pool=connection_pool)\n\n        # Transform arguments for doc-related operations (except create and search\n        # as we're calling the endpoint function rather than the model method)\n        if system.subresource == \"doc\" and system.operation not in [\"create\", \"search\"]:\n            owner_id_field = f\"{system.resource}_id\"\n            if owner_id_field in arguments:\n                doc_args = {\n                    \"owner_type\": system.resource,\n                    \"owner_id\": arguments[owner_id_field],\n                    **arguments,\n                }\n                doc_args.pop(owner_id_field)\n                arguments = doc_args\n\n        # Handle special cases for doc operations\n        if system.operation == \"create\" and system.subresource == \"doc\":\n            arguments[\"x_developer_id\"] = arguments.pop(\"developer_id\")\n            return await handler(\n                data=CreateDocRequest(**arguments.pop(\"data\")),\n                **arguments,\n            )\n\n        # Handle search operations\n        if system.operation == \"search\" and system.subresource == \"doc\":\n            arguments[\"x_developer_id\"] = arguments.pop(\"developer_id\")\n            search_params = _create_search_request(arguments)\n            return await handler(search_params=search_params, **arguments)\n\n        # Handle chat operations\n        if system.operation == \"chat\" and system.resource == \"session\":\n            developer = await developers.get_developer(\n                developer_id=arguments[\"developer_id\"],\n                connection_pool=connection_pool,\n            )\n\n            session_id = arguments.get(\"session_id\")\n            x_custom_api_key = arguments.get(\"x_custom_api_key\", None)\n            chat_input = ChatInput(**arguments)\n            bg_runner = BackgroundTasks()\n            res = await handler(\n                developer=developer,\n                session_id=session_id,\n                background_tasks=bg_runner,\n                x_custom_api_key=x_custom_api_key,\n                chat_input=chat_input,\n            )\n            await bg_runner()\n            return res\n\n        # Handle create session\n        if system.operation == \"create\" and system.resource == \"session\":\n            developer_id = arguments.pop(\"developer_id\")\n            session_id = arguments.pop(\"session_id\", None)\n            create_session_request = CreateSessionRequest(**arguments)\n\n            return await handler(\n                developer_id=developer_id,\n                session_id=session_id,\n                data=create_session_request,\n            )\n\n        # Handle update session\n        if system.operation == \"update\" and system.resource == \"session\":\n            developer_id = arguments.pop(\"developer_id\")\n            session_id = arguments.pop(\"session_id\")\n            update_session_request = UpdateSessionRequest(**arguments)\n\n            return await handler(\n                developer_id=developer_id,\n                session_id=session_id,\n                data=update_session_request,\n            )\n\n        # Handle update user\n        if system.operation == \"update\" and system.resource == \"user\":\n            developer_id = arguments.pop(\"developer_id\")\n            user_id = arguments.pop(\"user_id\")\n            update_user_request = UpdateUserRequest(**arguments)\n\n            return await handler(\n                developer_id=developer_id,\n                user_id=user_id,\n                data=update_user_request,\n            )\n        if (\n            system.operation == \"create\"\n            and system.resource == \"task\"\n            and system.subresource == \"execution\"\n        ):\n            developer_id = arguments.pop(\"developer_id\")\n            task_id = arguments.pop(\"task_id\")\n            payload = arguments.pop(\"data\", {})\n            execution_request = (\n                payload\n                if isinstance(payload, CreateExecutionRequest)\n                else CreateExecutionRequest(**payload)\n            )\n            bg_runner = BackgroundTasks()\n            # AIDEV-NOTE: Ensure Temporal lookup background tasks run when invoked outside FastAPI.\n            result = await handler(\n                task_id=task_id,\n                data=execution_request,\n                x_developer_id=developer_id,\n                background_tasks=bg_runner,\n            )\n            await bg_runner()\n            return result\n        return await handler(**arguments)\n    except BaseException as e:\n        if activity.in_activity():\n            activity.logger.error(f\"Error in execute_system_call: {e}\")\n        raise\n\n\ndef _create_search_request(arguments: dict) -> Any:\n    \"\"\"Create appropriate search request based on available parameters.\"\"\"\n    search_params = arguments | arguments.pop(\"search_params\", {})\n    if \"text\" in search_params and \"vector\" in search_params:\n        return HybridDocSearchRequest(\n            text=search_params.pop(\"text\"),\n            mmr_strength=search_params.pop(\"mmr_strength\", 0),\n            vector=search_params.pop(\"vector\"),\n            alpha=search_params.pop(\"alpha\", 0.75),\n            confidence=search_params.pop(\"confidence\", 0.5),\n            limit=search_params.get(\"limit\", 10),\n        )\n    if \"text\" in search_params:\n        return TextOnlyDocSearchRequest(\n            text=search_params.pop(\"text\"),\n            mmr_strength=search_params.pop(\"mmr_strength\", 0),\n            limit=search_params.get(\"limit\", 10),\n        )\n    if \"vector\" in search_params:\n        return VectorDocSearchRequest(\n            vector=search_params.pop(\"vector\"),\n            mmr_strength=search_params.pop(\"mmr_strength\", 0),\n            confidence=search_params.pop(\"confidence\", 0.7),\n            limit=search_params.get(\"limit\", 10),\n        )\n    return None\n\n\n# Keep the existing mock and activity definition\nmock_execute_system = execute_system\n\nexecute_system = activity.defn(name=\"execute_system\")(\n    execute_system if not testing else mock_execute_system,\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/logger.py",
    "content": "import logging\nfrom typing import TextIO\n\nlogger: logging.Logger = logging.getLogger(__name__)\nh: logging.StreamHandler[TextIO] = logging.StreamHandler()\nfmt: logging.Formatter = logging.Formatter(\"[%(asctime)s/%(levelname)s] - %(message)s\")\nh.setFormatter(fmt)\nlogger.addHandler(h)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/pg_query_step.py",
    "content": "from typing import Any\n\nfrom beartype import beartype\nfrom temporalio import activity\n\nfrom .. import queries\nfrom ..env import testing\n\n\n@beartype\nasync def pg_query_step(\n    query_name: str,\n    file_name: str,\n    values: dict[str, Any],\n) -> Any:\n    (module_name, name) = file_name.split(\".\")\n\n    module = getattr(queries, module_name)\n    query_module = getattr(module, name)\n    query = getattr(query_module, query_name)\n\n    return await query(**values)\n\n\nmock_pg_query_step = pg_query_step\n\npg_query_step = activity.defn(name=\"pg_query_step\")(\n    pg_query_step if not testing else mock_pg_query_step,\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/sync_items_remote.py",
    "content": "from typing import Any\n\nfrom beartype import beartype\nfrom temporalio import activity\n\nfrom ..worker.codec import RemoteObject\n\n\n@beartype\nasync def save_inputs_remote_fn(inputs: list[Any]) -> list[Any | RemoteObject]:\n    from ..common.interceptors import offload_if_large\n\n    return [offload_if_large(input) for input in inputs]\n\n\n@beartype\nasync def load_inputs_remote_fn(inputs: list[Any | RemoteObject]) -> list[Any]:\n    from ..common.interceptors import load_if_remote\n\n    return [load_if_remote(input) for input in inputs]\n\n\nsave_inputs_remote = activity.defn(name=\"save_inputs_remote\")(save_inputs_remote_fn)\nload_inputs_remote = activity.defn(name=\"load_inputs_remote\")(load_inputs_remote_fn)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/task_steps/__init__.py",
    "content": "# ruff: noqa: F401\n\nfrom .base_evaluate import base_evaluate\nfrom .get_value_step import get_value_step\nfrom .prompt_step import prompt_step\nfrom .raise_complete_async import raise_complete_async\nfrom .transition_step import transition_step\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/task_steps/base_evaluate.py",
    "content": "# AIDEV-NOTE: This module provides the activity for evaluating Python expressions within the task execution context.\nfrom typing import Any\n\nfrom beartype import beartype\nfrom simpleeval import SimpleEval\nfrom temporalio import activity\n\nfrom ...common.exceptions.executions import EvaluateError\nfrom ...common.protocol.tasks import StepContext\nfrom ...common.utils.expressions import evaluate_expressions\nfrom ...common.utils.task_validation import backwards_compatibility\n\n\n# AIDEV-NOTE: Recursively evaluates expressions, handling different data types (strings, lists, dicts) and PyExpression objects.\n# It prepares the expression for evaluation by the simpleeval library.\ndef _recursive_evaluate(expr, evaluator: SimpleEval):\n    # Handle PyExpression type from the model\n    if hasattr(expr, \"root\") and isinstance(expr.root, str):\n        # Extract the string from the RootModel\n        expr = expr.root\n\n    if isinstance(expr, str):\n        try:\n            expr = backwards_compatibility(expr)\n            expr = expr.strip()\n            if isinstance(expr, str) and expr.startswith(\"$ \"):\n                # Remove $ and any space after it\n                expr = expr[1:].strip()\n            else:\n                expr = f\"f'''{expr}'''\"\n            return evaluator.eval(expr)\n        except Exception as e:\n            evaluate_error = EvaluateError(e, expr, evaluator.names)\n            if activity.in_activity():\n                activity.logger.error(f\"Error in base_evaluate: {evaluate_error}\\n\")\n            raise evaluate_error from e\n    elif isinstance(expr, int | bool | float):\n        return expr\n    elif isinstance(expr, list):\n        return [_recursive_evaluate(e, evaluator) for e in expr]\n    elif isinstance(expr, dict):\n        return {k: _recursive_evaluate(v, evaluator) for k, v in expr.items()}\n    else:\n        msg = f\"Invalid expression: {expr}\"\n        raise ValueError(msg)\n\n\n# AIDEV-NOTE: Main activity function for evaluating expressions.\n# Sets up the evaluation environment with context values and extra functions, then calls the recursive evaluator.\n@activity.defn\n@beartype\nasync def base_evaluate(\n    exprs: Any,\n    context: StepContext | None = None,\n    values: dict[str, Any] | None = None,\n    extra_lambda_strs: dict[str, str] | None = None,\n) -> Any | list[Any] | dict[str, Any]:\n    if context is None and values is None:\n        msg = \"Either context or values must be provided\"\n        raise ValueError(msg)\n\n    values = values or {}\n    if context:\n        # NOTE: We limit the number of inputs to 50 to avoid excessive memory usage\n        values.update(await context.prepare_for_step(limit=50))\n\n    return evaluate_expressions(exprs, values=values, extra_lambda_strs=extra_lambda_strs)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/task_steps/get_value_step.py",
    "content": "from beartype import beartype\nfrom temporalio import activity\n\nfrom ...common.protocol.tasks import StepContext, StepOutcome\n\n# TODO: We should use this step to query the parent workflow and get the value from the workflow context\n# SCRUM-1\n\n\n@activity.defn\n@beartype\nasync def get_value_step(\n    context: StepContext,\n) -> StepOutcome:\n    key: str = context.current_step.get  # noqa: F841\n    msg = \"Not implemented yet\"\n    raise NotImplementedError(msg)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/task_steps/prompt_step.py",
    "content": "# AIDEV-NOTE: This module contains the activity for executing a prompt step, which interacts with the language model.\nimport functools\n\nfrom beartype import beartype\nfrom litellm.types.utils import ModelResponse\nfrom temporalio import activity\nfrom temporalio.exceptions import ApplicationError\n\nfrom ...autogen.openapi_model import Tool\nfrom ...clients import (\n    litellm,  # We dont directly import `acompletion` so we can mock it\n)\nfrom ...common.protocol.tasks import ExecutionInput, StepContext, StepOutcome\nfrom ...common.utils.feature_flags import get_feature_flag_value\nfrom ...common.utils.llm_providers import get_api_key_env_var_name\nfrom ...common.utils.model_validation import (\n    ModelNotAvailableError,\n    ensure_model_available,\n)\nfrom ...common.utils.tool_runner import format_tool, run_context_tool, run_llm_with_tools\nfrom ...env import debug\nfrom .base_evaluate import base_evaluate\n\nCOMPUTER_USE_BETA_FLAG = \"computer-use-2024-10-22\"\n\n\n@activity.defn\n@beartype\n# AIDEV-NOTE: Executes the prompt step by interacting with the language model via LiteLLM.\n# Handles prompt evaluation, tool formatting, model calling, and response processing.\nasync def prompt_step(context: StepContext) -> StepOutcome:\n    # Get context data\n    prompt: str | list[dict] = context.current_step.model_dump()[\"prompt\"]\n\n    if isinstance(prompt, list):\n        for i, msg in enumerate(prompt):\n            prompt[i][\"content\"] = await base_evaluate(msg[\"content\"], context)\n            prompt[i][\"role\"] = await base_evaluate(msg[\"role\"], context)\n    else:\n        prompt = await base_evaluate(prompt, context)\n\n    # Wrap the prompt in a list if it is not already\n    prompt = prompt if isinstance(prompt, list) else [{\"role\": \"user\", \"content\": prompt}]\n\n    if not isinstance(context.execution_input, ExecutionInput):\n        msg = \"Expected ExecutionInput type for context.execution_input\"\n        raise TypeError(msg)\n\n    # Get settings and run llm\n    agent_default_settings: dict = context.execution_input.agent.default_settings or {}\n\n    agent_model: str = (\n        context.execution_input.agent.model if context.execution_input.agent.model else \"gpt-4o\"\n    )\n\n    if get_api_key_env_var_name(agent_model) != \"OPENAI_API_KEY\":\n        prompt = [{k: v for k, v in message.items() if k != \"name\"} for message in prompt]\n\n    excluded_keys = [\n        \"prompt\",\n        \"kind_\",\n        \"label\",\n        \"unwrap\",\n        \"auto_run_tools\",\n        \"disable_cache\",\n        \"tools\",\n    ]\n\n    # Get passed settings\n    passed_settings: dict = context.current_step.model_dump(\n        exclude=excluded_keys,\n        exclude_unset=True,\n    )\n    passed_settings.update(passed_settings.pop(\"settings\", {}) or {})\n    passed_settings[\"user\"] = str(context.execution_input.developer_id)\n\n    passed_settings = await base_evaluate(passed_settings, context)\n\n    override_model = passed_settings.get(\"model\")\n    if override_model is not None:\n        try:\n            await ensure_model_available(override_model)\n        except ModelNotAvailableError as exc:\n            raise ApplicationError(str(exc), non_retryable=True) from exc\n\n    if get_feature_flag_value(\n        \"auto_tool_calls_prompt_step\", developer_id=str(context.execution_input.developer_id)\n    ):\n        if not passed_settings.get(\"tools\"):\n            passed_settings.pop(\"tool_choice\", None)\n\n        all_tools = await context.tools()\n\n        passed_settings = {k: v for k, v in passed_settings.items() if v is not None}\n\n        completion_data: dict = {\n            \"model\": agent_model,\n            **agent_default_settings,\n            **passed_settings,\n        }\n\n        # AIDEV-NOTE: When auto_run_tools=False, pass empty tools list to prevent\n        # model from making tool calls that won't be executed. This simplifies the\n        # flow as the model will always return a regular completion instead of tool calls.\n        tools_to_use = all_tools if context.current_step.auto_run_tools else []\n\n        responses: list[dict] = await run_llm_with_tools(\n            messages=prompt,\n            tools=tools_to_use,\n            settings=completion_data,\n            run_tool_call=functools.partial(run_context_tool, context),\n        )\n\n        if context.current_step.unwrap:\n            response = responses[-1]\n\n            # TODO: Allow unwrapping of function tool calls\n            if response[\"tool_calls\"] is not None:\n                msg = \"Function tool calls unwrapping is not supported yet\"\n                raise ApplicationError(msg)\n\n            return StepOutcome(\n                output=response[\"content\"],\n                next=None,\n            )\n\n        return StepOutcome(\n            output=responses,\n            next=None,\n        )\n    if not passed_settings.get(\"tools\"):\n        passed_settings.pop(\"tool_choice\", None)\n\n    # Format tools for litellm\n    formatted_tools = [await format_tool(tool) for tool in await context.tools()]\n\n    # Map tools to their original objects\n    tools_mapping: dict[str, Tool] = {\n        fmt_tool.get(\"name\") or fmt_tool.get(\"function\", {}).get(\"name\"): orig_tool\n        for fmt_tool, orig_tool in zip(formatted_tools, await context.tools())\n    }\n\n    # Check if using Claude model and has specific tool types\n    is_claude_model = agent_model.lower().startswith(\"claude-3.5\")\n\n    # AIDEV-FIXME: Hack to make the computer use tools compatible with litellm.\n    # Issue was: litellm expects type to be `computer_20241022` and spec to be\n    # `function` (see: https://docs.litellm.ai/docs/providers/anthropic#computer-tools)\n    # but we don't allow that (spec should match type).\n    formatted_tools = []\n    for i, tool in enumerate(await context.tools()):\n        if tool.type == \"computer_20241022\" and tool.computer_20241022:\n            function = tool.computer_20241022\n            tool = {\n                \"type\": tool.type,\n                \"function\": {\n                    \"name\": tool.name,\n                    \"parameters\": {\n                        k: v\n                        for k, v in function.model_dump().items()\n                        if k not in [\"name\", \"type\"]\n                    },\n                },\n            }\n            formatted_tools.append(tool)\n    # For non-Claude models, we don't need to send tools\n    # AIDEV-TODO: Enable formatted_tools once format-tools PR is merged.\n    # FIXME: Enable formatted_tools once format-tools PR is merged.\n    if not is_claude_model:\n        formatted_tools = None\n\n    # AIDEV-HOTFIX: for groq calls, litellm expects tool_calls_id not to be in the messages.\n    # AIDEV-FIXME: This is a temporary fix. We need to update the agent-api to use the new tool calling format.\n    # HOTFIX: for groq calls, litellm expects tool_calls_id not to be in the messages\n    # FIXME: This is a temporary fix. We need to update the agent-api to use the new tool calling format\n    # AIDEV-TODO: Enable formatted_tools once format-tools PR is merged.\n    # FIXME: Enable formatted_tools once format-tools PR is merged.\n    is_groq_model = agent_model.lower().startswith(\"llama-3.1\")\n    if is_groq_model:\n        prompt = [\n            {\n                k: v\n                for k, v in message.items()\n                if k not in [\"tool_calls\", \"tool_call_id\", \"user\", \"continue_\", \"name\"]\n            }\n            for message in prompt\n        ]\n\n    # Remove None values from passed_settings (avoid overwriting agent's settings)\n    passed_settings = {k: v for k, v in passed_settings.items() if v is not None}\n\n    # Use litellm for other models\n    completion_data: dict = {\n        \"model\": agent_model,\n        \"tools\": formatted_tools or None,\n        \"messages\": prompt,\n        **agent_default_settings,\n        **passed_settings,\n    }\n\n    extra_body = {\n        \"cache\": {\"no-cache\": debug or context.current_step.disable_cache},\n    }\n\n    response: ModelResponse = await litellm.acompletion(\n        **completion_data,\n        extra_body=extra_body,\n    )\n\n    if context.current_step.unwrap:\n        if len(response.choices) != 1:\n            msg = \"Only one choice is supported\"\n            raise ApplicationError(msg)\n\n        choice = response.choices[0]\n        if choice.finish_reason == \"tool_calls\":\n            msg = \"Tool calls cannot be unwrapped\"\n            raise ApplicationError(msg)\n\n        return StepOutcome(\n            output=choice.message.content,\n            next=None,\n        )\n\n    # AIDEV-NOTE: Re-convert tool-calls from LLM response back to internal integration/system call format if needed.\n    # Re-convert tool-calls to integration/system calls if needed\n    response_as_dict = response.model_dump()\n\n    for choice in response_as_dict[\"choices\"]:\n        if choice[\"finish_reason\"] == \"tool_calls\":\n            calls = choice[\"message\"][\"tool_calls\"]\n\n            for call in calls:\n                call_name = call[\"function\"][\"name\"]\n                call_args = call[\"function\"][\"arguments\"]\n\n                original_tool = tools_mapping.get(call_name)\n                if not original_tool:\n                    msg = f\"Tool {call_name} not found\"\n                    raise ApplicationError(msg)\n\n                if original_tool.type == \"function\":\n                    continue\n\n                call.pop(\"function\")\n                call[\"type\"] = original_tool.type\n                call[original_tool.type] = {\n                    \"name\": call_name,\n                    \"arguments\": call_args,\n                }\n\n    return StepOutcome(\n        output=response_as_dict,\n        next=None,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/task_steps/raise_complete_async.py",
    "content": "import base64\nfrom typing import Any\n\nfrom beartype import beartype\nfrom temporalio import activity\n\nfrom ...autogen.openapi_model import CreateTransitionRequest\nfrom ...common.protocol.tasks import StepContext\nfrom .transition_step import original_transition_step\n\n\n@activity.defn\n@beartype\nasync def raise_complete_async(context: StepContext, output: Any) -> None:\n    activity_info = activity.info()\n\n    captured_token = base64.b64encode(activity_info.task_token).decode(\"ascii\")\n    activity_id = activity_info.activity_id\n    workflow_run_id = activity_info.workflow_run_id\n    workflow_id = activity_info.workflow_id\n\n    transition_info = CreateTransitionRequest(\n        current=context.cursor,\n        type=\"wait\",\n        next=None,\n        output=output,\n        task_token=captured_token,\n        metadata={\n            \"x-activity-id\": activity_id,\n            \"x-run-id\": workflow_run_id,\n            \"x-workflow-id\": workflow_id,\n        },\n    )\n\n    await original_transition_step(context, transition_info)\n\n    activity.raise_complete_async()\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/task_steps/tool_call_step.py",
    "content": "# AIDEV-NOTE: This module provides helper functions for generating tool call IDs and constructing tool call objects.\nimport base64\nimport secrets\n\nfrom ...autogen.openapi_model import CreateToolRequest, Tool\n\n\n# AIDEV-TODO: This function for generating call IDs should be moved to a more appropriate location.\n# FIXME: This shouldn't be here.\ndef generate_call_id() -> str:\n    # Generate 18 random bytes (which will result in 24 base64 characters)\n    random_bytes = secrets.token_bytes(18)\n    # Encode to base64 and remove padding\n    base64_string = base64.urlsafe_b64encode(random_bytes).decode(\"ascii\").rstrip(\"=\")\n    # Add the \"call_\" prefix\n    return f\"call_{base64_string}\"\n\n\n# AIDEV-TODO: Refactor this function for constructing tool calls and move it to a more appropriate location.\n# FIXME: This shouldn't be here, and shouldn't be done this way. Should be refactored.\n# AIDEV-NOTE: Constructs a dictionary representing a tool call based on the tool definition and arguments.\ndef construct_tool_call(tool: CreateToolRequest | Tool, arguments: dict, call_id: str) -> dict:\n    return {\n        tool.type: {\n            \"arguments\": arguments,\n            \"name\": tool.name,\n        }\n        if tool.type != \"system\"\n        else {\n            \"resource\": tool.system and tool.system.resource,\n            \"operation\": tool.system and tool.system.operation,\n            \"resource_id\": tool.system and tool.system.resource_id,\n            \"subresource\": tool.system and tool.system.subresource,\n            \"arguments\": arguments,\n        },\n        \"id\": call_id,\n        \"type\": tool.type,\n    }\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/task_steps/transition_step.py",
    "content": "import asyncio\nfrom typing import cast\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom temporalio import activity\n\nfrom ...app import app\nfrom ...autogen.openapi_model import CreateTransitionRequest, Transition\nfrom ...clients.temporal import get_workflow_handle\nfrom ...common.protocol.tasks import ExecutionInput, StepContext\nfrom ...env import temporal_activity_after_retry_timeout\nfrom ...exceptions import LastErrorInput, TooManyRequestsError\nfrom ...queries.executions.create_execution_transition import (\n    create_execution_transition,\n)\n\n\n@beartype\nasync def transition_step(\n    context: StepContext,\n    transition_info: CreateTransitionRequest,\n    last_error: BaseException | None = None,\n) -> Transition:\n    from ...workflows.task_execution import TaskExecutionWorkflow\n\n    activity_info = activity.info()\n    wf_handle = await get_workflow_handle(handle_id=activity_info.workflow_id)\n\n    if last_error is not None:\n        await asyncio.sleep(temporal_activity_after_retry_timeout)\n        await wf_handle.signal(\n            TaskExecutionWorkflow.set_last_error,\n            LastErrorInput(last_error=None),\n        )\n\n    if not isinstance(context.execution_input, ExecutionInput):\n        msg = \"Expected ExecutionInput type for context.execution_input\"\n        raise TypeError(msg)\n\n    if not context.execution_input.execution:\n        msg = \"Execution is required in execution_input\"\n        raise ValueError(msg)\n    # AIDEV-NOTE: assert that execution is not None for type checker\n    execution = context.execution_input.execution\n    assert execution is not None\n\n    # Create transition\n    try:\n        transition = await create_execution_transition(\n            developer_id=context.execution_input.developer_id,\n            execution_id=execution.id,\n            data=transition_info,\n            task_token=transition_info.task_token,\n            connection_pool=app.state.postgres_pool,\n        )\n\n    except Exception as e:\n        if isinstance(e, HTTPException) and cast(HTTPException, e).status_code == 429:\n            await wf_handle.signal(\n                TaskExecutionWorkflow.set_last_error,\n                LastErrorInput(last_error=TooManyRequestsError()),\n            )\n        raise e\n\n    return transition\n\n\n# NOTE: Here because needed by a different step\noriginal_transition_step = transition_step\n\ntransition_step = activity.defn(transition_step)\n"
  },
  {
    "path": "src/agents-api/agents_api/activities/tool_executor.py",
    "content": "import json\nimport logging\nfrom typing import Any\n\nfrom temporalio import activity\n\nfrom ..autogen.openapi_model import (\n    ToolExecutionResult,\n    WebPreviewToolCall,\n)\nfrom ..clients.integrations import run_integration_service\nfrom ..env import brave_api_key\n\nlogger = logging.getLogger(__name__)\n\n\nasync def execute_web_search_tool(tool_call: WebPreviewToolCall) -> ToolExecutionResult:\n    \"\"\"\n    Execute a web search tool call using the Brave search integration.\n\n    Args:\n        tool_call: The web search tool call with query details\n\n    Returns:\n        ToolExecutionResult containing the search results\n    \"\"\"\n    try:\n        # Get the query from wherever it might be in the tool call\n        query = tool_call.query\n\n        if not query:\n            return ToolExecutionResult(\n                id=tool_call.id,\n                output={},\n                error=\"No search query found in the web search tool call\",\n            )\n\n        # Map WebSearchTool to Brave search integration\n        brave_args = {\n            \"query\": query,\n        }\n\n        # Execute the Brave search integration\n        # Note: Brave API key must be configured in environment variables\n        result = await run_integration_service(\n            provider=\"brave\",\n            setup={\"brave_api_key\": brave_api_key},\n            arguments=brave_args,\n            method=\"search\",\n        )\n\n        # Convert result to BraveSearchOutput format\n        search_results = [\n            {\n                \"title\": r.get(\"title\", \"\"),\n                \"link\": r.get(\"link\", \"\"),\n                \"snippet\": r.get(\"snippet\", \"\"),\n            }\n            for r in result.get(\"result\", [])\n        ]\n        formatted_result = {\"result\": search_results}\n\n        return ToolExecutionResult(\n            id=tool_call.id, output=formatted_result, name=tool_call.name\n        )\n    except Exception as e:\n        if activity.in_activity():\n            activity.logger.error(f\"Error in execute_web_search_tool: {e}\")\n        raise\n\n\nasync def execute_tool_call(tool_call: dict[str, Any]) -> ToolExecutionResult:\n    \"\"\"\n    Execute a single tool call based on its type and return the result.\n\n    Args:\n        tool_call: The tool call to execute (dict)\n\n    Returns:\n        ToolExecutionResult containing the output or error\n    \"\"\"\n    # Initialize defaults\n    tool_id = \"\"\n    tool_name = None\n    tool_type = \"\"\n\n    try:\n        tool_id = tool_call.get(\"id\", \"\")\n        tool_type = tool_call.get(\"type\", \"\")\n\n        # Get function name if present\n        if \"function\" in tool_call and isinstance(tool_call[\"function\"], dict):\n            tool_name = tool_call[\"function\"].get(\"name\")\n\n        # Handle web search tools\n        if tool_type == \"web_search_preview\":\n            # Extract query directly for web_search_preview type\n            query = tool_call.get(\"query\", \"\")\n\n            web_search_call = WebPreviewToolCall(id=tool_id, query=query, name=tool_name)\n            return await execute_web_search_tool(web_search_call)\n\n        if tool_type == \"function\":\n            # Extract function data\n            func_data = tool_call.get(\"function\", {})\n\n            if not func_data:\n                return ToolExecutionResult(\n                    id=tool_id,\n                    name=tool_name,\n                    output={},\n                    error=\"Function call missing function details\",\n                )\n\n            # Extract function name if not already set\n            if not tool_name:\n                if isinstance(func_data, dict):\n                    tool_name = func_data.get(\"name\")\n                else:\n                    tool_name = getattr(func_data, \"name\", None)\n\n            # Handle web search function\n            if tool_name == \"web_search_preview\":\n                # Parse arguments\n                args = {}\n                arguments_str = \"\"\n\n                if isinstance(func_data, dict):\n                    arguments_str = func_data.get(\"arguments\", \"\")\n                else:\n                    arguments_str = getattr(func_data, \"arguments\", \"\")\n\n                if arguments_str:\n                    try:\n                        args = json.loads(arguments_str)\n                    except json.JSONDecodeError:\n                        raise\n\n                # Get query from arguments\n                query = args.get(\"query\", \"\")\n                if not query:\n                    return ToolExecutionResult(\n                        id=tool_id,\n                        name=tool_name,\n                        output={},\n                        error=\"No search query found in the web search function call\",\n                    )\n\n                web_search_call = WebPreviewToolCall(id=tool_id, query=query, name=tool_name)\n                return await execute_web_search_tool(web_search_call)\n\n        # Unsupported tool type\n        return ToolExecutionResult(\n            id=tool_id,\n            name=tool_name,\n            output={},\n            error=f\"Unsupported tool call type: {tool_type}\",\n        )\n\n    except Exception as e:\n        if activity.in_activity():\n            tool_info = f\"{tool_type}\"\n            if tool_name:\n                tool_info += f\".{tool_name}\"\n            activity.logger.error(f\"Error in execute_tool_call {tool_info}: {e}\")\n        raise\n\n\ndef format_tool_results_for_llm(result: ToolExecutionResult) -> dict[str, Any]:\n    \"\"\"\n    Format tool execution results into a structure suitable for sending back to the LLM.\n\n    Args:\n        result: Tool execution result\n\n    Returns:\n        Formatted tool result for the LLM\n    \"\"\"\n    # Create base structure\n    formatted_result = {\n        \"role\": \"tool\",\n        \"tool_call_id\": result.id,\n        \"name\": result.name,\n    }\n\n    # Add content based on whether there was an error\n    if result.error:\n        formatted_result[\"content\"] = json.dumps({\"error\": result.error})\n    else:\n        # Handle serialization with custom JSON encoder\n        try:\n            if isinstance(result.output, dict):\n                formatted_result[\"content\"] = json.dumps(\n                    result.output, default=lambda o: str(o)\n                )\n            else:\n                formatted_result[\"content\"] = str(result.output)\n        except Exception as e:\n            formatted_result[\"content\"] = json.dumps({\n                \"error\": f\"Failed to serialize tool output: {e!s}\"\n            })\n            logger.error(f\"Failed to serialize tool output: {e!s}\")\n\n    return formatted_result\n"
  },
  {
    "path": "src/agents-api/agents_api/app.py",
    "content": "import os\nfrom contextlib import asynccontextmanager\nfrom typing import Protocol\n\nfrom temporalio import workflow\n\nwith workflow.unsafe.imports_passed_through():\n    from aiobotocore.client import AioBaseClient\n    from aiobotocore.session import get_session\n    from asyncpg.pool import Pool\n    from fastapi import APIRouter, FastAPI\n    from prometheus_fastapi_instrumentator import Instrumentator\n    from scalar_fastapi import get_scalar_api_reference\n\n    from .clients.pg import create_db_pool\n    from .env import api_prefix, hostname, pool_max_size, protocol, public_port\n\n\nclass State(Protocol):\n    postgres_pool: Pool | None\n    s3_client: AioBaseClient | None\n\n\nclass ObjectWithState(Protocol):\n    state: State\n\n\n# TODO: This currently doesn't use env.py, we should move to using them\n@asynccontextmanager\nasync def lifespan(container: FastAPI | ObjectWithState):\n    # INIT POSTGRES #\n    pg_dsn = os.environ.get(\"PG_DSN\")\n\n    pool = await create_db_pool(pg_dsn, max_size=pool_max_size, min_size=min(pool_max_size, 10))\n\n    if hasattr(container, \"state\") and not getattr(container.state, \"postgres_pool\", None):\n        container.state.postgres_pool = pool\n\n    # INIT S3 #\n    s3_access_key = os.environ.get(\"S3_ACCESS_KEY\")\n    s3_secret_key = os.environ.get(\"S3_SECRET_KEY\")\n    s3_endpoint = os.environ.get(\"S3_ENDPOINT\")\n\n    if hasattr(container, \"state\") and not getattr(container.state, \"s3_client\", None):\n        session = get_session()\n        container.state.s3_client = await session.create_client(\n            \"s3\",\n            aws_access_key_id=s3_access_key,\n            aws_secret_access_key=s3_secret_key,\n            endpoint_url=s3_endpoint,\n        ).__aenter__()\n\n    try:\n        yield\n    finally:\n        # CLOSE POSTGRES #\n        if hasattr(container, \"state\") and getattr(container.state, \"postgres_pool\", None):\n            pool = getattr(container.state, \"postgres_pool\", None)\n            if pool:\n                await pool.close()\n            container.state.postgres_pool = None\n\n        # CLOSE S3 #\n        if hasattr(container, \"state\") and getattr(container.state, \"s3_client\", None):\n            s3_client = getattr(container.state, \"s3_client\", None)\n            if s3_client:\n                await s3_client.close()\n            container.state.s3_client = None\n\n\napp: FastAPI = FastAPI(\n    docs_url=\"/swagger\",\n    openapi_prefix=api_prefix,\n    redoc_url=None,\n    title=\"Julep Agents API\",\n    description=\"API for Julep Agents\",\n    version=\"0.4.0\",\n    terms_of_service=\"https://www.julep.ai/terms\",\n    contact={\n        \"name\": \"Julep\",\n        \"url\": \"https://www.julep.ai\",\n        \"email\": \"developers@julep.ai\",\n    },\n    root_path=api_prefix,\n    lifespan=lifespan,\n)\n\n# Enable metrics\nInstrumentator(excluded_handlers=[\"/metrics\", \"/docs\", \"/openapi.json\"]).instrument(app).expose(\n    app,\n    include_in_schema=False,\n)\n\n# Create a new router for the docs\nscalar_router = APIRouter()\n\n\n@scalar_router.get(\"/docs\", include_in_schema=False)\nasync def scalar_html():\n    return get_scalar_api_reference(\n        openapi_url=app.openapi_url[1:],  # Remove leading '/'\n        title=app.title,\n        servers=[{\"url\": f\"{protocol}://{hostname}:{public_port}{api_prefix}\"}],\n    )\n\n\n# Add the docs_router without dependencies\napp.include_router(scalar_router)\n\n\n# TODO: Implement correct content-length validation (using streaming and chunked transfer encoding)\n# NOTE: This relies on client reporting the correct content-length header\n# @app.middleware(\"http\")\n# async def validate_content_length(\n#     request: Request,\n#     call_next: Callable[[Request], Coroutine[Any, Any, Response]],\n# ):\n#     content_length = request.headers.get(\"content-length\")\n\n#     if not content_length:\n#         return Response(status_code=411, content=\"Content-Length header is required\")\n\n#     if int(content_length) > max_payload_size:\n#         return Response(status_code=413, content=\"Payload too large\")\n\n#     return await call_next(request)\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/.ignore",
    "content": "*.py\n!openapi_model.py\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/AGENTS.md",
    "content": "# AGENTS.md - autogen\n\nThis folder contains auto-generated code in `agents-api` from TypeSpec and OpenAPI.\n\nKey Points\n- Do NOT edit files here manually; they are overwritten on regeneration.\n- Regenerate via `bash scripts/generate_openapi_code.sh` from the project root.\n- Source-of-truth TypeSpec definitions reside in the `typespec/` directory.\n- Ensure version compatibility between TypeSpec plugin and codegen scripts.\n\n## Purpose\n- Auto-generated API client code from OpenAPI specifications\n- Provides type-safe models for API resources\n- Generated from TypeSpec definitions (in typespec/ directory)\n\n## Key Components\n\n### openapi_model.py\n- Pydantic models for all API resources\n- Request/response schemas\n- Type definitions and validations\n\n### Resource Models\n- `Agents.py`: Agent definitions and configurations\n- `Tasks.py`: Task specifications and step definitions\n- `Executions.py`: Execution tracking and state\n- `Sessions.py`: Chat session management\n- `Tools.py`: Tool definitions and schemas\n\n### Shared Models\n- `Common.py`: Shared types and utilities\n\n## Model Hierarchy\n- Base models define common fields (id, created_at, etc.)\n- Request models for API inputs\n- Response models for API outputs\n- Specialized models for different step types (evaluate, tool, prompt, etc.)\n\n## Usage Pattern\n1. Import from autogen.openapi_model\n2. Use models for request/response validation\n3. Models automatically handle serialization/deserialization\n\n## Important Models\n- `TaskSpecDef`: Complete task specification for execution\n- `WorkflowStep`: Individual step in a workflow\n- `ApiCallDef`, `PromptDef`: Tool type definitions\n- `ExecutionStatus`: State machine status values\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Agents.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass Agent(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = (\n        '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    )\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n\n\nclass CreateAgentRequest(BaseModel):\n    \"\"\"\n    Payload for creating a agent (and associated documents)\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = (\n        '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    )\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n\n\nclass CreateOrUpdateAgentRequest(CreateAgentRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = (\n        '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    )\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n\n\nclass ListModelsResponse(BaseModel):\n    \"\"\"\n    Response for the list models endpoint\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    models: list[ModelInfo]\n    \"\"\"\n    List of available models\n    \"\"\"\n\n\nclass ModelInfo(BaseModel):\n    \"\"\"\n    Model information returned by the model list endpoint\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The ID/name of the model\n    \"\"\"\n\n\nclass PatchAgentRequest(BaseModel):\n    \"\"\"\n    Payload for patching a agent\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str | None, Field(max_length=255, min_length=1)] = None\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = (\n        '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    )\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n\n\nclass UpdateAgentRequest(BaseModel):\n    \"\"\"\n    Payload for updating a agent\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = (\n        '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    )\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Chat.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\nfrom .Common import LogitBias\nfrom .Docs import DocReference\nfrom .Tools import (\n    ChosenBash20241022,\n    ChosenComputer20241022,\n    ChosenFunctionCall,\n    ChosenTextEditor20241022,\n    CreateToolRequest,\n    NamedToolChoice,\n)\n\n\nclass BaseChatOutput(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    index: int\n    finish_reason: Literal[\"stop\", \"length\", \"content_filter\", \"tool_calls\"] = \"stop\"\n    \"\"\"\n    The reason the model stopped generating tokens\n    \"\"\"\n    logprobs: LogProbResponse | None = None\n    \"\"\"\n    The log probabilities of tokens\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The tool calls generated by the model\n    \"\"\"\n\n\nclass BaseChatResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    usage: CompletionUsage | None = None\n    \"\"\"\n    Usage statistics for the completion request\n    \"\"\"\n    jobs: Annotated[list[UUID], Field(json_schema_extra={\"readOnly\": True})] = []\n    \"\"\"\n    Background job IDs that may have been spawned from this interaction.\n    \"\"\"\n    docs: Annotated[list[DocReference], Field(json_schema_extra={\"readOnly\": True})] = (\n        []\n    )\n    \"\"\"\n    Documents referenced for this request (for citation purposes).\n    \"\"\"\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n\n\nclass BaseTokenLogProb(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    token: str\n    logprob: float\n    \"\"\"\n    The log probability of the token\n    \"\"\"\n    bytes: list[int] | None = None\n\n\nclass ChatInputData(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    messages: Annotated[list[Message], Field(min_length=1)]\n    \"\"\"\n    A list of new input messages comprising the conversation so far.\n    \"\"\"\n    tools: list[CreateToolRequest] | None = None\n    \"\"\"\n    (Advanced) List of tools that are provided in addition to agent's default set of tools.\n    \"\"\"\n    tool_choice: Literal[\"auto\", \"none\"] | NamedToolChoice | None = None\n    \"\"\"\n    Can be one of existing tools given to the agent earlier or the ones provided in this request.\n    \"\"\"\n\n\nclass ChatOutputChunk(BaseChatOutput):\n    \"\"\"\n    Streaming chat completion output\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    delta: Delta\n    \"\"\"\n    The message generated by the model\n    \"\"\"\n\n\nclass ChunkChatResponse(BaseChatResponse):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    choices: list[ChatOutputChunk]\n    \"\"\"\n    The deltas generated by the model\n    \"\"\"\n\n\nclass CompletionUsage(BaseModel):\n    \"\"\"\n    Usage statistics for the completion request\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    completion_tokens: Annotated[\n        int | None, Field(json_schema_extra={\"readOnly\": True})\n    ] = None\n    \"\"\"\n    Number of tokens in the generated completion\n    \"\"\"\n    prompt_tokens: Annotated[\n        int | None, Field(json_schema_extra={\"readOnly\": True})\n    ] = None\n    \"\"\"\n    Number of tokens in the prompt\n    \"\"\"\n    total_tokens: Annotated[int | None, Field(json_schema_extra={\"readOnly\": True})] = (\n        None\n    )\n    \"\"\"\n    Total number of tokens used in the request (prompt + completion)\n    \"\"\"\n\n\nclass Content(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: str\n    type: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The type (fixed to 'text')\n    \"\"\"\n\n\nclass ContentItem(Content):\n    pass\n\n\nclass ContentItemModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"image\"] = \"image\"\n    source: Source\n\n\nclass ContentItemModel1(Content):\n    pass\n\n\nclass ContentItemModel2(ContentItemModel):\n    pass\n\n\nclass ContentItemModel3(Content):\n    pass\n\n\nclass ContentItemModel4(ContentItemModel):\n    pass\n\n\nclass ContentItemModel5(Content):\n    pass\n\n\nclass ContentItemModel6(ContentItemModel):\n    pass\n\n\nclass ContentModel(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItem] | list[ContentItemModel]\n\n\nclass ContentModel1(Content):\n    pass\n\n\nclass ContentModel2(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel1] | list[ContentItemModel2]\n\n\nclass ContentModel3(Content):\n    pass\n\n\nclass ContentModel4(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel3] | list[ContentItemModel4]\n\n\nclass ContentModel5(Content):\n    pass\n\n\nclass ContentModel6(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel5] | list[ContentItemModel6]\n\n\nclass ContentModel7(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    image_url: ImageUrl\n    \"\"\"\n    The image URL\n    \"\"\"\n    type: Literal[\"image_url\"] = \"image_url\"\n    \"\"\"\n    The type (fixed to 'image_url')\n    \"\"\"\n\n\nclass Delta(BaseModel):\n    \"\"\"\n    The message generated by the model\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    The role of the message\n    \"\"\"\n    tool_call_id: str | None = None\n    content: Annotated[\n        str | list[str] | list[ContentModel1 | ContentModel7 | ContentModel2] | None,\n        Field(...),\n    ] = None\n    \"\"\"\n    The content parts of the message\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    Name\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = []\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n\n\nclass ImageUrl(BaseModel):\n    \"\"\"\n    The image URL\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: str\n    \"\"\"\n    Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n    \"\"\"\n    detail: Literal[\"low\", \"high\", \"auto\"] = \"auto\"\n    \"\"\"\n    The detail level of the image\n    \"\"\"\n\n\nclass LogProbResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    content: Annotated[list[TokenLogProb] | None, Field(...)]\n    \"\"\"\n    The log probabilities of the tokens\n    \"\"\"\n\n\nclass Message(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    The role of the message\n    \"\"\"\n    tool_call_id: str | None = None\n    content: Annotated[\n        str | list[str] | list[Content | ContentModel7 | ContentModel] | None,\n        Field(...),\n    ] = None\n    \"\"\"\n    The content parts of the message\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    Name\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = []\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n\n\nclass MessageChatResponse(BaseChatResponse):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    choices: list[SingleChatOutput | MultipleChatOutput]\n    \"\"\"\n    The deltas generated by the model\n    \"\"\"\n\n\nclass MessageModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    The role of the message\n    \"\"\"\n    tool_call_id: str | None = None\n    content: Annotated[\n        str | list[str] | list[ContentModel3 | ContentModel7 | ContentModel4] | None,\n        Field(...),\n    ] = None\n    \"\"\"\n    The content parts of the message\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    Name\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = []\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n    created_at: Annotated[\n        AwareDatetime | None, Field(json_schema_extra={\"readOnly\": True})\n    ] = None\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    id: Annotated[UUID | None, Field(json_schema_extra={\"readOnly\": True})] = None\n\n\nclass MultipleChatOutput(BaseChatOutput):\n    \"\"\"\n    The output returned by the model. Note that, depending on the model provider, they might return more than one message.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    messages: Annotated[\n        list[MessageModel], Field(json_schema_extra={\"readOnly\": True}, min_length=1)\n    ]\n\n\nclass RenderResponse(ChatInputData):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    docs: Annotated[list[DocReference], Field(json_schema_extra={\"readOnly\": True})] = (\n        []\n    )\n    \"\"\"\n    Documents referenced for this request (for citation purposes).\n    \"\"\"\n\n\nclass SchemaCompletionResponseFormat(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"json_schema\"] = \"json_schema\"\n    \"\"\"\n    The format of the response\n    \"\"\"\n    json_schema: dict[str, Any]\n    \"\"\"\n    The schema of the response\n    \"\"\"\n\n\nclass SimpleCompletionResponseFormat(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"text\", \"json_object\"] = \"text\"\n    \"\"\"\n    The format of the response\n    \"\"\"\n\n\nclass SingleChatOutput(BaseChatOutput):\n    \"\"\"\n    The output returned by the model. Note that, depending on the model provider, they might return more than one message.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    message: MessageModel\n\n\nclass Source(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"base64\"] = \"base64\"\n    media_type: str\n    data: str\n\n\nclass TokenLogProb(BaseTokenLogProb):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    top_logprobs: Annotated[\n        list[BaseTokenLogProb],\n        Field(json_schema_extra={\"readOnly\": True}, min_length=1),\n    ]\n    \"\"\"\n    The log probabilities of the tokens\n    \"\"\"\n\n\nclass ChatInput(ChatInputData):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    remember: Annotated[StrictBool, Field(json_schema_extra={\"readOnly\": True})] = False\n    \"\"\"\n    DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release)\n    \"\"\"\n    recall: StrictBool = True\n    \"\"\"\n    Whether previous memories and docs should be recalled or not\n    \"\"\"\n    save: StrictBool = True\n    \"\"\"\n    Whether this interaction should be stored in the session history or not\n    \"\"\"\n    model: Annotated[\n        str | None,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = None\n    \"\"\"\n    Identifier of the model to be used\n    \"\"\"\n    stream: StrictBool = False\n    \"\"\"\n    Indicates if the server should stream the response as it's generated\n    \"\"\"\n    stop: Annotated[list[str], Field(max_length=4)] = []\n    \"\"\"\n    Up to 4 sequences where the API will stop generating further tokens.\n    \"\"\"\n    seed: Annotated[int | None, Field(ge=-1, le=1000)] = None\n    \"\"\"\n    If specified, the system will make a best effort to sample deterministically for that particular seed value\n    \"\"\"\n    max_tokens: Annotated[int | None, Field(ge=1)] = None\n    \"\"\"\n    The maximum number of tokens to generate in the chat completion\n    \"\"\"\n    logit_bias: dict[str, LogitBias] | None = None\n    \"\"\"\n    Modify the likelihood of specified tokens appearing in the completion\n    \"\"\"\n    response_format: (\n        SimpleCompletionResponseFormat | SchemaCompletionResponseFormat | None\n    ) = None\n    \"\"\"\n    Response format (set to `json_object` to restrict output to JSON)\n    \"\"\"\n    agent: UUID | None = None\n    \"\"\"\n    Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions)\n    \"\"\"\n    repetition_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None\n    \"\"\"\n    Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n    \"\"\"\n    length_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None\n    \"\"\"\n    Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated.\n    \"\"\"\n    min_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    Minimum probability compared to leading token to be considered\n    \"\"\"\n    frequency_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None\n    \"\"\"\n    Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n    \"\"\"\n    presence_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None\n    \"\"\"\n    Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n    \"\"\"\n    temperature: Annotated[float | None, Field(ge=0.0, le=5.0)] = None\n    \"\"\"\n    What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.\n    \"\"\"\n    top_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.  We generally recommend altering this or temperature but not both.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to automatically run tools and send the results back to the model (requires tools or agents with tools).\n    \"\"\"\n    recall_tools: StrictBool = True\n    \"\"\"\n    Whether to include tool requests and responses when recalling messages.\n    \"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Common.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel\n\n\nclass Content(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[str, Field(max_length=30000)]\n    \"\"\"\n    Contents of a document\n    \"\"\"\n\n\nclass JinjaTemplate(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: str\n    \"\"\"\n    A valid jinja template.\n    \"\"\"\n\n\nclass Limit(RootModel[int]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[int, Field(ge=1, lt=1000)]\n    \"\"\"\n    Limit the number of results\n    \"\"\"\n\n\nclass LogitBias(RootModel[float]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[float, Field(ge=-100.0, le=100.0)]\n\n\nclass Offset(RootModel[int]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[int, Field(ge=0)]\n    \"\"\"\n    Offset to apply to the results\n    \"\"\"\n\n\nclass PyExpression(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: str\n    \"\"\"\n    A simple python expression compatible with SimpleEval.\n    \"\"\"\n\n\nclass ResourceDeletedResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    \"\"\"\n    ID of deleted resource\n    \"\"\"\n    deleted_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was deleted as UTC date-time\n    \"\"\"\n    jobs: Annotated[list[UUID], Field(json_schema_extra={\"readOnly\": True})] = []\n    \"\"\"\n    IDs (if any) of jobs created as part of this request\n    \"\"\"\n\n\nclass StepLabel(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[str, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")]\n    \"\"\"\n    A valid step label\n    \"\"\"\n\n\nclass Uuid(RootModel[UUID]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: UUID\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Docs.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\nfrom .Common import Content\n\n\nclass BulkDeleteDocsRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    delete_all: StrictBool = False\n    \"\"\"\n    Delete all docs\n    \"\"\"\n\n\nclass CreateDocRequest(BaseModel):\n    \"\"\"\n    Payload for creating a doc\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    title: Annotated[str, Field(max_length=800)]\n    \"\"\"\n    Title describing what this document contains\n    \"\"\"\n    content: Content | list[Content]\n    \"\"\"\n    Contents of the document. Each string is limited to 30k characters.\n    \"\"\"\n    embed_instruction: str | None = None\n    \"\"\"\n    Instruction for the embedding model.\n    \"\"\"\n\n\nclass Doc(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    title: Annotated[str, Field(max_length=800)]\n    \"\"\"\n    Title describing what this document contains\n    \"\"\"\n    content: str | list[str]\n    \"\"\"\n    Contents of the document\n    \"\"\"\n    embeddings: Annotated[\n        list[float] | list[list[float]] | None,\n        Field(json_schema_extra={\"readOnly\": True}),\n    ] = None\n    \"\"\"\n    Embeddings for the document\n    \"\"\"\n    modality: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Modality of the document\n    \"\"\"\n    language: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Language of the document\n    \"\"\"\n    embedding_model: Annotated[\n        str | None, Field(json_schema_extra={\"readOnly\": True})\n    ] = None\n    \"\"\"\n    Embedding model used for the document\n    \"\"\"\n    embedding_dimensions: Annotated[\n        int | None, Field(json_schema_extra={\"readOnly\": True})\n    ] = None\n    \"\"\"\n    Dimensions of the embedding model\n    \"\"\"\n\n\nclass DocOwner(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    role: Literal[\"user\", \"agent\"]\n\n\nclass DocReference(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    owner: DocOwner\n    \"\"\"\n    The owner of this document.\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    ID of the document\n    \"\"\"\n    title: str | None = None\n    snippet: Snippet\n    distance: float | None = None\n\n\nclass DocSearchResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    docs: list[DocReference]\n    \"\"\"\n    The documents that were found\n    \"\"\"\n    time: Annotated[float, Field(gt=0.0)]\n    \"\"\"\n    The time taken to search in seconds\n    \"\"\"\n\n\nclass EmbedQueryResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    vectors: list[list[float]]\n    \"\"\"\n    The embedded vectors\n    \"\"\"\n\n\nclass HybridDocSearchRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    limit: Annotated[int, Field(ge=1, le=50)] = 10\n    \"\"\"\n    The limit of documents to return\n    \"\"\"\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    include_embeddings: StrictBool = True\n    \"\"\"\n    Whether to include embeddings in the response\n    \"\"\"\n    text: str\n    \"\"\"\n    Text to use in the search\n    \"\"\"\n    lang: str = \"en-US\"\n    \"\"\"\n    The language to be used for text search. Support for other languages coming soon.\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search.\n    \"\"\"\n    vector: list[float]\n    \"\"\"\n    Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n    alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5\n    \"\"\"\n    The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n    \"\"\"\n    k_multiplier: Annotated[int, Field(ge=1, le=10)] = 5\n    \"\"\"\n    The k_multiplier to control how many intermediate results to fetch before final scoring\n    \"\"\"\n\n\nclass MultipleEmbedQueryRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: Annotated[list[str], Field(max_length=100, min_length=1)]\n    \"\"\"\n    Texts to embed\n    \"\"\"\n    embed_instruction: str = \"\"\n    \"\"\"\n    Instruction for the embedding model.\n    \"\"\"\n\n\nclass SingleEmbedQueryRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: str\n    \"\"\"\n    Text to embed\n    \"\"\"\n    embed_instruction: str = \"\"\n    \"\"\"\n    Instruction for the embedding model.\n    \"\"\"\n\n\nclass Snippet(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    index: int\n    content: str\n    embedding: list[float] | None = None\n\n\nclass TextOnlyDocSearchRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    limit: Annotated[int, Field(ge=1, le=50)] = 10\n    \"\"\"\n    The limit of documents to return\n    \"\"\"\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    include_embeddings: StrictBool = True\n    \"\"\"\n    Whether to include embeddings in the response\n    \"\"\"\n    text: str\n    \"\"\"\n    Text to use in the search\n    \"\"\"\n    lang: str = \"en-US\"\n    \"\"\"\n    The language to be used for text search. Support for other languages coming soon.\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search.\n    \"\"\"\n\n\nclass VectorDocSearchRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    limit: Annotated[int, Field(ge=1, le=50)] = 10\n    \"\"\"\n    The limit of documents to return\n    \"\"\"\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    include_embeddings: StrictBool = True\n    \"\"\"\n    Whether to include embeddings in the response\n    \"\"\"\n    vector: list[float]\n    \"\"\"\n    Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Entries.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel\n\nfrom .Tools import (\n    ChosenBash20241022,\n    ChosenComputer20241022,\n    ChosenFunctionCall,\n    ChosenTextEditor20241022,\n    Tool,\n    ToolResponse,\n)\n\n\nclass BaseEntry(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    ChatML role (system|assistant|user|tool)\n    \"\"\"\n    name: str | None = None\n    content: (\n        list[Content | ContentModel3 | ContentModel]\n        | Tool\n        | ChosenFunctionCall\n        | ChosenComputer20241022\n        | ChosenTextEditor20241022\n        | ChosenBash20241022\n        | str\n        | ToolResponse\n        | list[\n            list[ContentModel1 | ContentModel3 | ContentModel2]\n            | Tool\n            | ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n            | str\n            | ToolResponse\n        ]\n    )\n    source: Literal[\n        \"api_request\",\n        \"api_response\",\n        \"tool_request\",\n        \"tool_response\",\n        \"internal\",\n        \"summarizer\",\n        \"meta\",\n    ]\n    tokenizer: str\n    token_count: int\n    model: str = \"gpt-4o-mini\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = None\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n    tool_call_id: str | None = None\n    \"\"\"\n    The tool call id of the tool call this message is a response to\n    \"\"\"\n    timestamp: AwareDatetime\n    \"\"\"\n    This is the time that this event refers to.\n    \"\"\"\n\n\nclass ChatMLRole(RootModel[Literal[\"user\", \"assistant\", \"system\", \"tool\"]]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    ChatML role (system|assistant|user|tool)\n    \"\"\"\n\n\nclass Content(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: str\n    type: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The type (fixed to 'text')\n    \"\"\"\n\n\nclass ContentItem(Content):\n    pass\n\n\nclass ContentItemModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"image\"] = \"image\"\n    source: Source\n\n\nclass ContentItemModel1(Content):\n    pass\n\n\nclass ContentItemModel2(ContentItemModel):\n    pass\n\n\nclass ContentModel(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItem] | list[ContentItemModel]\n\n\nclass ContentModel1(Content):\n    pass\n\n\nclass ContentModel2(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel1] | list[ContentItemModel2]\n\n\nclass ContentModel3(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    image_url: ImageUrl\n    \"\"\"\n    The image URL\n    \"\"\"\n    type: Literal[\"image_url\"] = \"image_url\"\n    \"\"\"\n    The type (fixed to 'image_url')\n    \"\"\"\n\n\nclass Entry(BaseEntry):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n\n\nclass History(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    entries: list[Entry]\n    relations: list[Relation]\n    session_id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n\n\nclass ImageDetail(RootModel[Literal[\"low\", \"high\", \"auto\"]]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Literal[\"low\", \"high\", \"auto\"]\n    \"\"\"\n    Image detail level\n    \"\"\"\n\n\nclass ImageUrl(BaseModel):\n    \"\"\"\n    The image URL\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: str\n    \"\"\"\n    Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n    \"\"\"\n    detail: Literal[\"low\", \"high\", \"auto\"] = \"auto\"\n    \"\"\"\n    The detail level of the image\n    \"\"\"\n\n\nclass Relation(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    head: UUID\n    relation: str\n    tail: UUID\n\n\nclass Source(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"base64\"] = \"base64\"\n    media_type: str\n    data: str\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Executions.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateExecutionRequest(BaseModel):\n    \"\"\"\n    Payload for creating an execution\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    input: dict[str, Any]\n    \"\"\"\n    The input to the execution\n    \"\"\"\n    output: Any | None = None\n    \"\"\"\n    The output of the execution if it succeeded\n    \"\"\"\n    error: str | None = None\n    \"\"\"\n    The error of the execution if it failed\n    \"\"\"\n    transition_count: int | None = None\n    \"\"\"\n    The number of transitions in this execution\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass Execution(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    task_id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    The ID of the task that the execution is running\n    \"\"\"\n    status: Annotated[\n        Literal[\n            \"queued\",\n            \"starting\",\n            \"running\",\n            \"awaiting_input\",\n            \"succeeded\",\n            \"failed\",\n            \"cancelled\",\n        ],\n        Field(json_schema_extra={\"readOnly\": True}),\n    ]\n    \"\"\"\n    The status of the execution\n    \"\"\"\n    input: dict[str, Any]\n    \"\"\"\n    The input to the execution\n    \"\"\"\n    output: Any | None = None\n    \"\"\"\n    The output of the execution if it succeeded\n    \"\"\"\n    error: str | None = None\n    \"\"\"\n    The error of the execution if it failed\n    \"\"\"\n    transition_count: int | None = None\n    \"\"\"\n    The number of transitions in this execution\n    \"\"\"\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n\n\nclass TaskTokenResumeExecutionRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\"running\"] = \"running\"\n    input: dict[str, Any] | None = None\n    \"\"\"\n    The input to resume the execution with\n    \"\"\"\n\n\nclass TransitionEvent(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Annotated[\n        Literal[\n            \"init\",\n            \"init_branch\",\n            \"finish\",\n            \"finish_branch\",\n            \"wait\",\n            \"resume\",\n            \"error\",\n            \"step\",\n            \"cancelled\",\n        ],\n        Field(json_schema_extra={\"readOnly\": True}),\n    ]\n    output: Annotated[Any, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n\n\nclass TransitionTarget(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    workflow: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ]\n    \"\"\"\n    For Unicode character safety\n    See: https://unicode.org/reports/tr31/\n    See: https://www.unicode.org/reports/tr39/#Identifier_Characters\n    \"\"\"\n    step: int\n    scope_id: UUID\n\n\nclass UpdateExecutionRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\n        \"queued\",\n        \"starting\",\n        \"running\",\n        \"awaiting_input\",\n        \"succeeded\",\n        \"failed\",\n        \"cancelled\",\n    ]\n\n\nclass ResumeExecutionRequest(UpdateExecutionRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\"running\"] = \"running\"\n    input: dict[str, Any] | None = None\n    \"\"\"\n    The input to resume the execution with\n    \"\"\"\n\n\nclass StopExecutionRequest(UpdateExecutionRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\"cancelled\"] = \"cancelled\"\n    reason: str | None = None\n    \"\"\"\n    The reason for stopping the execution\n    \"\"\"\n\n\nclass Transition(TransitionEvent):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    execution_id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    current: Annotated[TransitionTarget, Field(json_schema_extra={\"readOnly\": True})]\n    next: Annotated[\n        TransitionTarget | None, Field(json_schema_extra={\"readOnly\": True})\n    ]\n    step_label: Annotated[\n        str | None,\n        Field(\n            json_schema_extra={\"readOnly\": True},\n            max_length=120,\n            pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\",\n        ),\n    ] = None\n    \"\"\"\n    A valid step label\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Files.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateFileRequest(BaseModel):\n    \"\"\"\n    Payload for creating a file\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ]\n    \"\"\"\n    Name of the file\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    Description of the file\n    \"\"\"\n    mime_type: str | None = None\n    \"\"\"\n    MIME type of the file\n    \"\"\"\n    content: str\n    \"\"\"\n    Base64 encoded content of the file\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the file\n    \"\"\"\n\n\nclass File(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ]\n    \"\"\"\n    Name of the file\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    Description of the file\n    \"\"\"\n    mime_type: str | None = None\n    \"\"\"\n    MIME type of the file\n    \"\"\"\n    content: str\n    \"\"\"\n    Base64 encoded content of the file\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the file\n    \"\"\"\n    size: Annotated[int, Field(ge=1, json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    Size of the file in bytes\n    \"\"\"\n    hash: Annotated[str, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    Hash of the file\n    \"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Jobs.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\n\nclass JobStatus(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the job\n    \"\"\"\n    reason: str = \"\"\n    \"\"\"\n    Reason for the current state of the job\n    \"\"\"\n    has_progress: StrictBool = False\n    \"\"\"\n    Whether this Job supports progress updates\n    \"\"\"\n    progress: Annotated[float, Field(ge=0.0, le=100.0)] = 0\n    \"\"\"\n    Progress percentage\n    \"\"\"\n    state: Literal[\n        \"pending\",\n        \"in_progress\",\n        \"retrying\",\n        \"succeeded\",\n        \"aborted\",\n        \"failed\",\n        \"unknown\",\n    ] = \"pending\"\n    \"\"\"\n    Current state of the job\n    \"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Projects.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateProjectRequest(BaseModel):\n    \"\"\"\n    Payload for creating a project\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Display name of the project\n    \"\"\"\n\n\nclass PatchProjectRequest(BaseModel):\n    \"\"\"\n    Payload for patching a project\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str | None, Field(max_length=255, min_length=1)] = None\n    \"\"\"\n    Display name of the project\n    \"\"\"\n\n\nclass Project(BaseModel):\n    \"\"\"\n    Project model\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Display name of the project\n    \"\"\"\n\n\nclass UpdateProjectRequest(BaseModel):\n    \"\"\"\n    Payload for updating a project\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Display name of the project\n    \"\"\"\n\n\nclass CreateOrUpdateProjectRequest(CreateProjectRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    metadata: dict[str, Any] | None = None\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Display name of the project\n    \"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Responses.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\n\nfrom pydantic import BaseModel, ConfigDict, Field, RootModel, StrictBool\n\n\nclass BaseTool(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str\n\n\nclass Click(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"click\"] = \"click\"\n    \"\"\"\n    Specifies the event type. For a click action, this property is always set to `click`.\n    \"\"\"\n    button: Literal[\"left\", \"right\", \"wheel\", \"back\", \"forward\"]\n    \"\"\"\n    Indicates which mouse button was pressed during the click. One of `left`, `right`, `wheel`, `back`, or `forward`.\n    \"\"\"\n    x: int\n    \"\"\"\n    The x-coordinate where the click occurred.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate where the click occurred.\n    \"\"\"\n\n\nclass ComputerScreenshotImage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_screenshot\"] = \"computer_screenshot\"\n    \"\"\"\n    Specifies the event type. For a computer screenshot, this property is always set to `computer_screenshot`.\n    \"\"\"\n    image_url: str | None = None\n    \"\"\"\n    The URL of the screenshot image.\n    \"\"\"\n    file_id: str | None = None\n    \"\"\"\n    The identifier of an uploaded file that contains the screenshot.\n    \"\"\"\n\n\nclass ComputerTool(BaseTool):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_use_preview\"] = \"computer_use_preview\"\n    \"\"\"\n    The type of the computer use tool. Always `computer_use_preview`.\n    \"\"\"\n    display_width: float\n    \"\"\"\n    The width of the computer display.\n    \"\"\"\n    display_height: float\n    \"\"\"\n    The height of the computer display.\n    \"\"\"\n    environment: Literal[\"mac\", \"windows\", \"ubuntu\", \"browser\"]\n    \"\"\"\n    The type of computer environment to control.\n    \"\"\"\n\n\nclass ComputerToolCall(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_call\"] = \"computer_call\"\n    \"\"\"\n    The type of the computer call. Always `computer_call`.\n    \"\"\"\n    id: str\n    \"\"\"\n    The unique ID of the computer call.\n    \"\"\"\n    call_id: str\n    \"\"\"\n    An identifier used when responding to the tool call with output.\n    \"\"\"\n    action: (\n        Click | DoubleClick | Drag | KeyPress | Move | Screenshot | Scroll | Type | Wait\n    )\n    \"\"\"\n    The action to perform.\n    \"\"\"\n    pending_safety_checks: list[ComputerToolCallSafetyCheck]\n    \"\"\"\n    The pending safety checks for the computer call.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"]\n    \"\"\"\n    The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    \"\"\"\n\n\nclass ComputerToolCallOutput(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_call_output\"] = \"computer_call_output\"\n    \"\"\"\n    The type of the computer tool call output. Always `computer_call_output`.\n    \"\"\"\n    id: str | None = None\n    \"\"\"\n    The ID of the computer tool call output.\n    \"\"\"\n    call_id: str\n    \"\"\"\n    The ID of the computer tool call that produced the output.\n    \"\"\"\n    acknowledged_safety_checks: list[ComputerToolCallSafetyCheck] | None = None\n    \"\"\"\n    The safety checks reported by the API that have been acknowledged by the developer.\n    \"\"\"\n    output: ComputerScreenshotImage\n    \"\"\"\n    The output screenshot image.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"] | None = None\n    \"\"\"\n    The status of the message input. One of `in_progress`, `completed`, or `incomplete`. Populated when input items are returned via API.\n    \"\"\"\n\n\nclass ComputerToolCallOutputResource(ComputerToolCallOutput):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The unique ID of the computer call tool output.\n    \"\"\"\n\n\nclass ComputerToolCallSafetyCheck(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The ID of the pending safety check.\n    \"\"\"\n    code: str\n    \"\"\"\n    The type of the pending safety check.\n    \"\"\"\n    message: str\n    \"\"\"\n    Details about the pending safety check.\n    \"\"\"\n\n\nclass Coordinate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    x: int\n    \"\"\"\n    The x-coordinate.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate.\n    \"\"\"\n\n\nclass CreateResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    model: str\n    input: (\n        str\n        | list[\n            EasyInputMessage\n            | Item\n            | InputMessageResource\n            | OutputMessage\n            | FileSearchToolCall\n            | ComputerToolCall\n            | ComputerToolCallOutputResource\n            | WebSearchToolCall\n            | FunctionToolCall\n            | FunctionToolCallOutputResource\n        ]\n    )\n    include: (\n        list[\n            Literal[\n                \"file_search_call.results\",\n                \"message.input_image.image_url\",\n                \"computer_call_output.output.image_url\",\n            ]\n        ]\n        | None\n    ) = None\n    parallel_tool_calls: StrictBool = True\n    store: StrictBool = True\n    stream: StrictBool = False\n    max_tokens: int | None = None\n    temperature: float = 1\n    top_p: float = 1\n    n: int | None = None\n    stop: str | list[str] | None = None\n    presence_penalty: float | None = None\n    frequency_penalty: float | None = None\n    logit_bias: dict[str, Any] | None = None\n    user: str | None = None\n    instructions: str | None = None\n    previous_response_id: str | None = None\n    reasoning: Reasoning | None = None\n    text: Text | None = None\n    tool_choice: Literal[\"auto\", \"none\"] | ToolChoice | None = None\n    tools: list[FunctionTool | WebSearchTool | FileSearchTool | ComputerTool] | None = (\n        None\n    )\n    truncation: Literal[\"disabled\", \"auto\"] | None = None\n    metadata: dict[str, Any] | None = None\n\n\nclass DoubleClick(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"double_click\"] = \"double_click\"\n    \"\"\"\n    Specifies the event type. For a double click action, this property is always set to `double_click`.\n    \"\"\"\n    x: int\n    \"\"\"\n    The x-coordinate where the double click occurred.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate where the double click occurred.\n    \"\"\"\n\n\nclass Drag(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"drag\"] = \"drag\"\n    \"\"\"\n    Specifies the event type. For a drag action, this property is always set to `drag`.\n    \"\"\"\n    path: list[Coordinate]\n    \"\"\"\n    An array of coordinates representing the path of the drag action.\n    \"\"\"\n\n\nclass EasyInputMessage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"developer\"]\n    \"\"\"\n    The role of the message input. One of `user`, `assistant`, `system`, or `developer`.\n    \"\"\"\n    content: str | list[InputText | InputImage | InputFile]\n    \"\"\"\n    Text, image, or audio input to the model, used to generate a response. Can also contain previous assistant responses.\n    \"\"\"\n    type: Literal[\"message\"] = \"message\"\n    \"\"\"\n    The type of the message input. Always `message`.\n    \"\"\"\n\n\nclass FileCitation(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"file_citation\"] = \"file_citation\"\n    \"\"\"\n    The type of the file citation. Always `file_citation`.\n    \"\"\"\n    index: int\n    \"\"\"\n    The index of the file in the list of files.\n    \"\"\"\n    file_id: str\n    \"\"\"\n    The ID of the file.\n    \"\"\"\n\n\nclass FilePath(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"file_path\"] = \"file_path\"\n    \"\"\"\n    The type of the file path. Always `file_path`.\n    \"\"\"\n    file_id: str\n    \"\"\"\n    The ID of the file.\n    \"\"\"\n    index: int\n    \"\"\"\n    The index of the file in the list of files.\n    \"\"\"\n\n\nclass FileSearchTool(BaseTool):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"file_search\"] = \"file_search\"\n    filters: Any | None = None\n    max_num_results: int | None = None\n    ranking_options: RankingOptions | None = None\n    vector_store_ids: list[str]\n\n\nclass FileSearchToolCall(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The unique ID of the file search tool call.\n    \"\"\"\n    type: Literal[\"file_search_call\"] = \"file_search_call\"\n    \"\"\"\n    The type of the file search tool call. Always `file_search_call`.\n    \"\"\"\n    status: Literal[\"in_progress\", \"searching\", \"completed\", \"incomplete\", \"failed\"]\n    \"\"\"\n    The status of the file search tool call. One of `in_progress`, `searching`, `incomplete` or `failed`\n    \"\"\"\n    queries: list[str]\n    \"\"\"\n    The queries used to search for files.\n    \"\"\"\n    results: list[Result] | None = None\n    \"\"\"\n    The results of the file search tool call.\n    \"\"\"\n\n\nclass Function(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: str\n\n\nclass FunctionTool(BaseTool):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"function\"] = \"function\"\n    name: str\n    description: str | None = None\n    parameters: dict[str, Any]\n    strict: StrictBool | None = None\n\n\nclass FunctionToolCall(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The unique ID of the function tool call.\n    \"\"\"\n    type: Literal[\"function_call\"] = \"function_call\"\n    \"\"\"\n    The type of the function tool call. Always `function_call`.\n    \"\"\"\n    call_id: str\n    \"\"\"\n    The unique ID of the function tool call generated by the model.\n    \"\"\"\n    name: str\n    \"\"\"\n    The name of the function to run.\n    \"\"\"\n    arguments: str\n    \"\"\"\n    A JSON string of the arguments to pass to the function.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"] | None = None\n    \"\"\"\n    The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    \"\"\"\n\n\nclass FunctionToolCallOutput(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n    \"\"\"\n    The unique ID of the function tool call output. Populated when this item is returned via API.\n    \"\"\"\n    type: Literal[\"function_call_output\"] = \"function_call_output\"\n    \"\"\"\n    The type of the function tool call output. Always `function_call_output`.\n    \"\"\"\n    call_id: str\n    \"\"\"\n    The unique ID of the function tool call generated by the model.\n    \"\"\"\n    output: str\n    \"\"\"\n    A JSON string of the output of the function tool call.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"] | None = None\n    \"\"\"\n    The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    \"\"\"\n\n\nclass FunctionToolCallOutputResource(FunctionToolCallOutput):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n    \"\"\"\n    The unique ID of the function call tool output.\n    \"\"\"\n\n\nclass IncompleteDetails(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    reason: Literal[\"max_output_tokens\", \"content_filter\"]\n\n\nclass InputFile(BaseModel):\n    \"\"\"\n    A file input to the model.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"input_file\"] = \"input_file\"\n    \"\"\"\n    The type of the input item. Always `input_file`.\n    \"\"\"\n    file_id: str | None = None\n    \"\"\"\n    The ID of the file to be sent to the model.\n    \"\"\"\n    filename: str | None = None\n    \"\"\"\n    The name of the file to be sent to the model.\n    \"\"\"\n    file_data: str | None = None\n    \"\"\"\n    The content of the file to be sent to the model.\n    \"\"\"\n\n\nclass InputImage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"input_image\"] = \"input_image\"\n    \"\"\"\n    The type of the input item. Always `input_image`.\n    \"\"\"\n    image_url: str | None = None\n    \"\"\"\n    The URL of the image to be sent to the model. A fully qualified URL or base64 encoded image in a data URL.\n    \"\"\"\n    file_id: str | None = None\n    \"\"\"\n    The ID of the file to be sent to the model.\n    \"\"\"\n    detail: Literal[\"high\", \"low\", \"auto\"] = \"auto\"\n    \"\"\"\n    The detail level of the image to be sent to the model. One of `high`, `low`, or `auto`. Defaults to `auto`.\n    \"\"\"\n\n\nclass InputMessage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"message\"] = \"message\"\n    role: Literal[\"user\", \"assistant\", \"system\", \"developer\"]\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"]\n    content: list[InputText | InputImage | InputFile]\n\n\nclass InputMessageResource(InputMessage):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n\n\nclass InputText(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"input_text\"] = \"input_text\"\n    \"\"\"\n    The type of the input item. Always `input_text`.\n    \"\"\"\n    text: str\n    \"\"\"\n    The text input to the model.\n    \"\"\"\n\n\nclass InputTokensDetails(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cached_tokens: int\n\n\nclass Item(BaseModel):\n    \"\"\"\n    An item representing part of the context for the response to be generated by the model. Can contain text, images, and audio inputs, as well as previous assistant responses and tool call outputs.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str\n\n\nclass KeyPress(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"keypress\"] = \"keypress\"\n    \"\"\"\n    Specifies the event type. For a keypress action, this property is always set to `keypress`.\n    \"\"\"\n    keys: list[str]\n    \"\"\"\n    The combination of keys the model is requesting to be pressed. This is an array of strings, each representing a key.\n    \"\"\"\n\n\nclass Move(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"move\"] = \"move\"\n    \"\"\"\n    Specifies the event type. For a move action, this property is always set to `move`.\n    \"\"\"\n    x: int\n    \"\"\"\n    The x-coordinate to move to.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate to move to.\n    \"\"\"\n\n\nclass OutputMessage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    type: Literal[\"message\"] = \"message\"\n    role: Literal[\"user\", \"assistant\", \"system\", \"developer\"]\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"]\n    content: list[OutputText | Refusal]\n\n\nclass OutputText(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"output_text\"] = \"output_text\"\n    \"\"\"\n    The type of the output text. Always `output_text`.\n    \"\"\"\n    text: str\n    \"\"\"\n    The text output from the model.\n    \"\"\"\n    annotations: list[FileCitation | UrlCitation | FilePath]\n    \"\"\"\n    The annotations of the text output.\n    \"\"\"\n\n\nclass OutputTokensDetails(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    reasoning_tokens: int\n\n\nclass RankingOptions(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    ranker: Literal[\"auto\"] | None = None\n    score_threshold: float | None = None\n\n\nclass Reasoning(BaseModel):\n    \"\"\"\n    Reasoning configuration options for o-series models.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    effort: Literal[\"low\", \"medium\", \"high\"]\n    \"\"\"\n    Constraint effort on reasoning models.\n    \"\"\"\n    generate_summary: Literal[\"concise\", \"detailed\"] | None = None\n    \"\"\"\n    A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. One of `concise` or `detailed`.\n    \"\"\"\n\n\nclass ReasoningContent(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"reasoning_summary\"] = \"reasoning_summary\"\n    \"\"\"\n    The type of the object. Always `text`.\n    \"\"\"\n    text: str\n    \"\"\"\n    A short summary of the reasoning used by the model when generating the response.\n    \"\"\"\n\n\nclass ReasoningItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"reasoning\"] = \"reasoning\"\n    \"\"\"\n    The type of the object. Always `reasoning`.\n    \"\"\"\n    id: str\n    \"\"\"\n    The unique identifier of the reasoning content.\n    \"\"\"\n    content: list[ReasoningContent]\n    \"\"\"\n    Reasoning text contents.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"] | None = None\n    \"\"\"\n    The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    \"\"\"\n\n\nclass Refusal(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"refusal\"] = \"refusal\"\n    \"\"\"\n    The type of the refusal. Always `refusal`.\n    \"\"\"\n    refusal: str\n    \"\"\"\n    The refusal explanation from the model.\n    \"\"\"\n\n\nclass Response(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    object: Literal[\"response\"] = \"response\"\n    created_at: int\n    status: Literal[\"completed\", \"failed\", \"in_progress\", \"incomplete\"]\n    error: ResponseError | None = None\n    incomplete_details: IncompleteDetails | None = None\n    instructions: str | None = None\n    max_output_tokens: int | None = None\n    model: str\n    output: list[\n        OutputMessage\n        | FileSearchToolCall\n        | FunctionToolCall\n        | WebSearchToolCall\n        | ComputerToolCall\n        | ReasoningItem\n    ]\n    parallel_tool_calls: StrictBool = True\n    previous_response_id: str | None = None\n    reasoning: Reasoning | None = None\n    store: StrictBool = True\n    temperature: float = 1\n    text: Text | None = None\n    tool_choice: (\n        ToolChoiceTypes | ToolChoiceFunction | Literal[\"auto\", \"none\", \"required\"]\n    )\n    tools: list[FunctionTool | WebSearchTool | FileSearchTool | ComputerTool]\n    top_p: float = 1\n    truncation: Literal[\"disabled\", \"auto\"]\n    usage: ResponseUsage\n    user: str | None = None\n    metadata: dict[str, Any]\n\n\nclass ResponseError(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    message: str\n    type: str\n    param: str | None = None\n    code: str | None = None\n\n\nclass ResponseFormatJsonObject(BaseModel):\n    \"\"\"\n    JSON object response format. An older method of generating JSON responses.\n\n    Using `json_schema` is recommended for models that support it. Note that the\n    model will not generate JSON without a system or user message instructing it\n    to do so.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"json_object\"] = \"json_object\"\n    \"\"\"\n    The type of response format being defined. Always `json_object`.\n    \"\"\"\n\n\nclass ResponseFormatText(BaseModel):\n    \"\"\"\n    Default response format. Used to generate text responses.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The type of response format being defined. Always `text`.\n    \"\"\"\n\n\nclass ResponseUsage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    input_tokens: int\n    input_tokens_details: InputTokensDetails\n    output_tokens: int\n    output_tokens_details: OutputTokensDetails\n    total_tokens: int\n\n\nclass Result(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    file_id: str\n    \"\"\"\n    The unique ID of the file.\n    \"\"\"\n    text: str\n    \"\"\"\n    The text that was retrieved from the file.\n    \"\"\"\n    filename: str\n    \"\"\"\n    The name of the file.\n    \"\"\"\n    attributes: VectorStoreFileAttributes\n    \"\"\"\n    The attributes of the file.\n    \"\"\"\n    score: float\n    \"\"\"\n    The relevance score of the file - a value between 0 and 1.\n    \"\"\"\n\n\nclass Screenshot(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"screenshot\"] = \"screenshot\"\n    \"\"\"\n    Specifies the event type. For a screenshot action, this property is always set to `screenshot`.\n    \"\"\"\n\n\nclass Scroll(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"scroll\"] = \"scroll\"\n    \"\"\"\n    Specifies the event type. For a scroll action, this property is always set to `scroll`.\n    \"\"\"\n    x: int\n    \"\"\"\n    The x-coordinate where the scroll occurred.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate where the scroll occurred.\n    \"\"\"\n    scroll_x: int\n    \"\"\"\n    The horizontal scroll distance.\n    \"\"\"\n    scroll_y: int\n    \"\"\"\n    The vertical scroll distance.\n    \"\"\"\n\n\nclass Text(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    format: ResponseFormatText | TextResponseFormatJsonSchema | ResponseFormatJsonObject\n\n\nclass TextResponseFormatJsonSchema(BaseModel):\n    \"\"\"\n    JSON Schema response format. Used to generate structured JSON responses. Learn more about [Structured Outputs](/docs/guides/structured-outputs).\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"json_schema\"] = \"json_schema\"\n    \"\"\"\n    The type of response format being defined. Always `json_schema`.\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    A description of what the response format is for, used by the model to determine how to respond in the format.\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.\n    \"\"\"\n    schema_: Annotated[dict[str, Any], Field(alias=\"schema\")]\n    \"\"\"\n    The JSON schema that defines the structure of the response.\n    \"\"\"\n    strict: StrictBool = False\n    \"\"\"\n    Whether to enable strict schema adherence when generating the output. If set to true, the model will always follow the exact schema defined in the `schema` field. Only a subset of JSON Schema is supported when `strict` is `true`. To learn more, read the [Structured Outputs guide](/docs/guides/structured-outputs).\n    \"\"\"\n\n\nclass ToolChoice(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"function\"] = \"function\"\n    function: Function\n\n\nclass ToolChoiceFunction(BaseModel):\n    \"\"\"\n    Use this option to force the model to call a specific function.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"function\"] = \"function\"\n    \"\"\"\n    For function calling, the type is always `function`.\n    \"\"\"\n    name: str\n    \"\"\"\n    The name of the function to call.\n    \"\"\"\n\n\nclass ToolChoiceTypes(BaseModel):\n    \"\"\"\n    Indicates that the model should use a built-in tool to generate a response.\n\n    [Learn more about built-in tools](/docs/guides/tools).\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\n        \"file_search\",\n        \"web_search_preview\",\n        \"computer_use_preview\",\n        \"web_search_preview_2025_03_11\",\n    ]\n    \"\"\"\n    The type of hosted tool the model should to use. Learn more about\n    [built-in tools](/docs/guides/tools).\n\n    Allowed values are:\n    - `file_search`\n    - `web_search_preview` \n    - `computer_use_preview`\n    \"\"\"\n\n\nclass Type(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"type\"] = \"type\"\n    \"\"\"\n    Specifies the event type. For a type action, this property is always set to `type`.\n    \"\"\"\n    text: str\n    \"\"\"\n    The text to type.\n    \"\"\"\n\n\nclass UrlCitation(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: str\n    \"\"\"\n    The URL of the web resource.\n    \"\"\"\n    title: str\n    \"\"\"\n    The title of the web resource.\n    \"\"\"\n    type: Literal[\"url_citation\"] = \"url_citation\"\n    \"\"\"\n    The type of the URL citation. Always `url_citation`.\n    \"\"\"\n    start_index: int\n    \"\"\"\n    The index of the first character of the URL citation in the message.\n    \"\"\"\n    end_index: int\n    \"\"\"\n    The index of the last character of the URL citation in the message.\n    \"\"\"\n\n\nclass UserLocation(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"approximate\"] = \"approximate\"\n    city: str | None = None\n    country: str | None = None\n    region: str | None = None\n    timezone: str | None = None\n\n\nclass VectorStoreFileAttributes(BaseModel):\n    \"\"\"\n    Set of key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    properties: dict[str, VectorStoreFileAttributesString | StrictBool | float]\n    \"\"\"\n    Key-value pairs where keys are strings with max length 64 and values are strings with max length 512, booleans, or numbers.\n    \"\"\"\n\n\nclass VectorStoreFileAttributesString(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[str, Field(max_length=512)]\n\n\nclass Wait(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"wait\"] = \"wait\"\n    \"\"\"\n    Specifies the event type. For a wait action, this property is always set to `wait`.\n    \"\"\"\n\n\nclass WebSearchTool(BaseTool):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"web_search_preview\"] = \"web_search_preview\"\n    domains: list[str] | None = None\n    search_context_size: Literal[\"small\", \"medium\", \"large\"] | None = None\n    user_location: UserLocation | None = None\n\n\nclass WebSearchToolCall(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The unique ID of the web search tool call.\n    \"\"\"\n    type: Literal[\"web_search_call\"] = \"web_search_call\"\n    \"\"\"\n    The type of the web search tool call. Always `web_search_call`.\n    \"\"\"\n    status: Literal[\"in_progress\", \"searching\", \"completed\", \"failed\"]\n    \"\"\"\n    The status of the web search tool call.\n    \"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Secrets.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateSecretRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: str\n    \"\"\"\n    Name of the secret\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of what the secret is used for\n    \"\"\"\n    value: str\n    \"\"\"\n    The decrypted secret value\n    \"\"\"\n\n\nclass Secret(BaseModel):\n    \"\"\"\n    A secret that can be used in tasks and sessions\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n    name: str\n    \"\"\"\n    Name of the secret\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of what the secret is used for\n    \"\"\"\n    value: str\n    \"\"\"\n    The decrypted secret value\n    \"\"\"\n\n\nclass UpdateSecretRequest(CreateSecretRequest):\n    pass\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Sessions.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\n\nclass BaseDocSearch(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    limit: Annotated[int, Field(ge=1, le=50)] = 10\n    \"\"\"\n    The limit of documents to return\n    \"\"\"\n    lang: str = \"en-US\"\n    \"\"\"\n    The language to be used for text-only search. Support for other languages coming soon.\n    \"\"\"\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    num_search_messages: Annotated[int, Field(ge=1, le=50)] = 4\n    \"\"\"\n    The number of search messages to use for the search.\n    \"\"\"\n    max_query_length: Annotated[int, Field(ge=100, le=10000)] = 1000\n    \"\"\"\n    The maximum query length to use for the search.\n    \"\"\"\n    include_embeddings: StrictBool = True\n    \"\"\"\n    Whether to include embeddings in the response\n    \"\"\"\n\n\nclass BaseDocSearchUpdate(BaseDocSearch):\n    pass\n\n\nclass CreateSessionRequest(BaseModel):\n    \"\"\"\n    Payload for creating a session\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    user: UUID | None = None\n    \"\"\"\n    User ID of user associated with this session\n    \"\"\"\n    users: list[UUID] | None = None\n    agent: UUID | None = None\n    \"\"\"\n    Agent ID of agent associated with this session\n    \"\"\"\n    agents: list[UUID] | None = None\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: VectorDocSearch | TextOnlyDocSearch | HybridDocSearch | None = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass HybridDocSearch(BaseDocSearch):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"hybrid\"] = \"hybrid\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5\n    \"\"\"\n    The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    The trigram_similarity_threshold cutoff level\n    \"\"\"\n    k_multiplier: Annotated[int, Field(ge=0)] = 7\n    \"\"\"\n    The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring\n    \"\"\"\n\n\nclass HybridDocSearchUpdate(BaseDocSearchUpdate):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"hybrid\"] = \"hybrid\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5\n    \"\"\"\n    The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    The trigram_similarity_threshold cutoff level\n    \"\"\"\n    k_multiplier: Annotated[int, Field(ge=0)] = 7\n    \"\"\"\n    The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring\n    \"\"\"\n\n\nclass PatchSessionRequest(BaseModel):\n    \"\"\"\n    Payload for patching a session\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: (\n        VectorDocSearchUpdate | TextOnlyDocSearchUpdate | HybridDocSearchUpdate | None\n    ) = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass Session(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    summary: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Summary (null at the beginning) - generated automatically after every interaction\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: VectorDocSearch | TextOnlyDocSearch | HybridDocSearch | None = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    kind: str | None = None\n    \"\"\"\n    Discriminator property for Session.\n    \"\"\"\n\n\nclass SingleAgentMultiUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agent: UUID\n    users: Annotated[list[UUID], Field(min_length=2)]\n\n\nclass SingleAgentNoUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agent: UUID\n\n\nclass SingleAgentSingleUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agent: UUID\n    user: UUID\n\n\nclass TextOnlyDocSearch(BaseDocSearch):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    The trigram_similarity_threshold cutoff level\n    \"\"\"\n\n\nclass TextOnlyDocSearchUpdate(BaseDocSearchUpdate):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    The trigram_similarity_threshold cutoff level\n    \"\"\"\n\n\nclass UpdateSessionRequest(BaseModel):\n    \"\"\"\n    Payload for updating a session\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: VectorDocSearch | TextOnlyDocSearch | HybridDocSearch | None = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass VectorDocSearch(BaseDocSearch):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"vector\"] = \"vector\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n\n\nclass VectorDocSearchUpdate(BaseDocSearchUpdate):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"vector\"] = \"vector\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n\n\nclass CreateOrUpdateSessionRequest(CreateSessionRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    user: UUID | None = None\n    \"\"\"\n    User ID of user associated with this session\n    \"\"\"\n    users: list[UUID] | None = None\n    agent: UUID | None = None\n    \"\"\"\n    Agent ID of agent associated with this session\n    \"\"\"\n    agents: list[UUID] | None = None\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: VectorDocSearch | TextOnlyDocSearch | HybridDocSearch | None = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass MultiAgentMultiUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agents: Annotated[list[UUID], Field(min_length=2)]\n    users: Annotated[list[UUID], Field(min_length=2)]\n\n\nclass MultiAgentNoUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agents: Annotated[list[UUID], Field(min_length=2)]\n\n\nclass MultiAgentSingleUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agents: Annotated[list[UUID], Field(min_length=2)]\n    user: UUID\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Tasks.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\nfrom .Common import JinjaTemplate\nfrom .Tools import (\n    ChosenBash20241022,\n    ChosenComputer20241022,\n    ChosenFunctionCall,\n    ChosenTextEditor20241022,\n    CreateToolRequest,\n    NamedToolChoice,\n)\n\n\nclass CaseThen(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    case: Literal[\"_\"] | str\n    \"\"\"\n    The condition to evaluate\n    \"\"\"\n    then: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | WaitForInputStep\n    )\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n\n\nclass CaseThenUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    case: Literal[\"_\"] | str\n    \"\"\"\n    The condition to evaluate\n    \"\"\"\n    then: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | WaitForInputStep\n    )\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n\n\nclass Content(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: str\n    \"\"\"\n    A valid jinja template.\n    \"\"\"\n    type: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The type (fixed to 'text')\n    \"\"\"\n\n\nclass ContentItem(Content):\n    pass\n\n\nclass ContentItemModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"image\"] = \"image\"\n    source: Source\n\n\nclass ContentItemModel1(Content):\n    pass\n\n\nclass ContentItemModel2(ContentItemModel):\n    pass\n\n\nclass ContentModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    image_url: ImageUrl\n    \"\"\"\n    The image URL\n    \"\"\"\n    type: Literal[\"image_url\"] = \"image_url\"\n    \"\"\"\n    The type (fixed to 'image_url')\n    \"\"\"\n\n\nclass ContentModel1(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItem] | list[ContentItemModel]\n\n\nclass ContentModel2(Content):\n    pass\n\n\nclass ContentModel3(ContentModel):\n    pass\n\n\nclass ContentModel4(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel1] | list[ContentItemModel2]\n\n\nclass CreateTaskRequest(BaseModel):\n    \"\"\"\n    Payload for creating a task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStep\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n            | ReturnStep\n            | SleepStep\n            | ErrorWorkflowStep\n            | WaitForInputStep\n            | IfElseWorkflowStep\n            | SwitchStep\n            | ForeachStep\n            | ParallelStep\n            | Main\n        ],\n        Field(min_length=1),\n    ]\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[TaskTool] = []\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass Else(BaseModel):\n    \"\"\"\n    The steps to run if the condition is false\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"map_reduce\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"map_reduce\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ElseModel(BaseModel):\n    \"\"\"\n    The steps to run if the condition is false\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ErrorWorkflowStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"error\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"error\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    error: str\n    \"\"\"\n    The error message\n    \"\"\"\n\n\nclass EvaluateStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"evaluate\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"evaluate\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    evaluate: dict[str, dict[str, Any] | str]\n    \"\"\"\n    The expression to evaluate\n    \"\"\"\n\n\nclass ForeachDo(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    in_: Annotated[str, Field(alias=\"in\")]\n    \"\"\"\n    The variable to iterate over.\n    VALIDATION: Should NOT return more than 1000 elements.\n    \"\"\"\n    do: (\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n\n\nclass ForeachDoUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    in_: Annotated[str, Field(alias=\"in\")]\n    \"\"\"\n    The variable to iterate over.\n    VALIDATION: Should NOT return more than 1000 elements.\n    \"\"\"\n    do: (\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n\n\nclass ForeachStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"foreach\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"foreach\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    foreach: ForeachDo\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n\n\nclass ForeachStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    foreach: ForeachDoUpdateItem\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n\n\nclass GetStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"get\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"get\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    get: str\n    \"\"\"\n    The key to get\n    \"\"\"\n\n\nclass IfElseWorkflowStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"if_else\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"if_else\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    if_: Annotated[str, Field(alias=\"if\")]\n    \"\"\"\n    The condition to evaluate\n    \"\"\"\n    then: (\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | IfElseWorkflowStep\n        | SwitchStep\n        | ForeachStep\n        | ParallelStep\n        | Then\n    )\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n    else_: Annotated[\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | IfElseWorkflowStep\n        | SwitchStep\n        | ForeachStep\n        | ParallelStep\n        | Else\n        | None,\n        Field(alias=\"else\"),\n    ] = None\n    \"\"\"\n    The steps to run if the condition is false\n    \"\"\"\n\n\nclass IfElseWorkflowStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    if_: Annotated[str, Field(alias=\"if\")]\n    \"\"\"\n    The condition to evaluate\n    \"\"\"\n    then: (\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | IfElseWorkflowStepUpdateItem\n        | SwitchStepUpdateItem\n        | ForeachStepUpdateItem\n        | ParallelStepUpdateItem\n        | ThenModel\n    )\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n    else_: Annotated[\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | IfElseWorkflowStepUpdateItem\n        | SwitchStepUpdateItem\n        | ForeachStepUpdateItem\n        | ParallelStepUpdateItem\n        | ElseModel\n        | None,\n        Field(alias=\"else\"),\n    ] = None\n    \"\"\"\n    The steps to run if the condition is false\n    \"\"\"\n\n\nclass ImageUrl(BaseModel):\n    \"\"\"\n    The image URL\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: str\n    \"\"\"\n    Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n    \"\"\"\n    detail: Literal[\"low\", \"high\", \"auto\"] = \"auto\"\n    \"\"\"\n    The detail level of the image\n    \"\"\"\n\n\nclass LogStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"log\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"log\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    log: str\n    \"\"\"\n    The value to log\n    \"\"\"\n\n\nclass Main(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"map_reduce\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"map_reduce\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass MainModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ParallelStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"parallel\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"parallel\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    parallel: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStep\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n        ],\n        Field(max_length=100),\n    ]\n    \"\"\"\n    The steps to run in parallel. Max concurrency will depend on the platform.\n    \"\"\"\n\n\nclass ParallelStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    parallel: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStepUpdateItem\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n        ],\n        Field(max_length=100),\n    ]\n    \"\"\"\n    The steps to run in parallel. Max concurrency will depend on the platform.\n    \"\"\"\n\n\nclass PatchTaskRequest(BaseModel):\n    \"\"\"\n    Payload for patching a task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str | None, Field(max_length=255, min_length=1)] = None\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStepUpdateItem\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n            | ReturnStep\n            | SleepStep\n            | ErrorWorkflowStep\n            | WaitForInputStep\n            | IfElseWorkflowStepUpdateItem\n            | SwitchStepUpdateItem\n            | ForeachStepUpdateItem\n            | ParallelStepUpdateItem\n            | MainModel\n        ]\n        | None,\n        Field(min_length=1),\n    ] = None\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[TaskTool] = []\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass PromptItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    The role of the message\n    \"\"\"\n    tool_call_id: str | None = None\n    content: Annotated[\n        list[str] | list[Content | ContentModel | ContentModel1] | str | None,\n        Field(...),\n    ]\n    \"\"\"\n    The content parts of the message\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    Name\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = []\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n\n\nclass PromptStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"prompt\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"prompt\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    prompt: list[PromptItem] | str\n    \"\"\"\n    The prompt to run\n    \"\"\"\n    tools: Literal[\"all\"] | list[ToolRef | CreateToolRequest] = \"all\"\n    \"\"\"\n    The tools to use for the prompt\n    \"\"\"\n    tool_choice: Literal[\"auto\", \"none\"] | NamedToolChoice | None = None\n    \"\"\"\n    The tool choice for the prompt\n    \"\"\"\n    settings: dict[str, Any] | None = None\n    \"\"\"\n    Settings for the prompt\n    \"\"\"\n    unwrap: StrictBool = False\n    \"\"\"\n    Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content`\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false)\n\n    If a tool call is made, the tool's output will be used as the model's input.\n    If a tool call is not made, the model's output will be used as the next step's input.\n    \"\"\"\n    disable_cache: StrictBool = False\n    \"\"\"\n    Whether to disable caching for the prompt step\n    \"\"\"\n\n\nclass PromptStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    prompt: list[PromptItem] | str\n    \"\"\"\n    The prompt to run\n    \"\"\"\n    tools: Literal[\"all\"] | list[ToolRefUpdateItem | CreateToolRequest] = \"all\"\n    \"\"\"\n    The tools to use for the prompt\n    \"\"\"\n    tool_choice: Literal[\"auto\", \"none\"] | NamedToolChoice | None = None\n    \"\"\"\n    The tool choice for the prompt\n    \"\"\"\n    settings: dict[str, Any] | None = None\n    \"\"\"\n    Settings for the prompt\n    \"\"\"\n    unwrap: StrictBool = False\n    \"\"\"\n    Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content`\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false)\n\n    If a tool call is made, the tool's output will be used as the model's input.\n    If a tool call is not made, the model's output will be used as the next step's input.\n    \"\"\"\n    disable_cache: StrictBool = False\n    \"\"\"\n    Whether to disable caching for the prompt step\n    \"\"\"\n\n\nclass ReturnStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"return\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"return\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    return_: Annotated[\n        dict[str, list[str] | dict[str, str] | list[dict[str, str]] | str],\n        Field(alias=\"return\"),\n    ]\n    \"\"\"\n    The value to return\n    \"\"\"\n\n\nclass SetStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"set\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"set\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    set: dict[str, dict[str, Any] | str]\n    \"\"\"\n    The value to set\n    \"\"\"\n\n\nclass SleepFor(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    seconds: Annotated[int, Field(ge=0, le=60)] = 0\n    \"\"\"\n    The number of seconds to sleep for\n    \"\"\"\n    minutes: Annotated[int, Field(ge=0, le=60)] = 0\n    \"\"\"\n    The number of minutes to sleep for\n    \"\"\"\n    hours: Annotated[int, Field(ge=0, le=24)] = 0\n    \"\"\"\n    The number of hours to sleep for\n    \"\"\"\n    days: Annotated[int, Field(ge=0, le=30)] = 0\n    \"\"\"\n    The number of days to sleep for\n    \"\"\"\n\n\nclass SleepStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"sleep\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"sleep\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    sleep: SleepFor\n    \"\"\"\n    The duration to sleep for (max 31 days)\n    \"\"\"\n\n\nclass Source(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"base64\"] = \"base64\"\n    media_type: str\n    data: str\n    \"\"\"\n    A valid jinja template.\n    \"\"\"\n\n\nclass SwitchStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"switch\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"switch\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    switch: Annotated[list[CaseThen], Field(min_length=1)]\n    \"\"\"\n    The cond tree\n    \"\"\"\n\n\nclass SwitchStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    switch: Annotated[list[CaseThenUpdateItem], Field(min_length=1)]\n    \"\"\"\n    The cond tree\n    \"\"\"\n\n\nclass Task(BaseModel):\n    \"\"\"\n    Object describing a Task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStep\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n            | ReturnStep\n            | SleepStep\n            | ErrorWorkflowStep\n            | WaitForInputStep\n            | IfElseWorkflowStep\n            | SwitchStep\n            | ForeachStep\n            | ParallelStep\n            | Main\n        ],\n        Field(min_length=1),\n    ]\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[TaskTool] = []\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass TaskTool(CreateToolRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    inherited: Annotated[StrictBool, Field(json_schema_extra={\"readOnly\": True})] = (\n        False\n    )\n    \"\"\"\n    Read-only: Whether the tool was inherited or not. Only applies within tasks.\n    \"\"\"\n\n\nclass Then(BaseModel):\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"map_reduce\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"map_reduce\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ThenModel(BaseModel):\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ToolCallStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"tool_call\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"tool_call\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    tool: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    The tool to run\n    \"\"\"\n    arguments: dict[str, Any] | Literal[\"_\"] = \"_\"\n    \"\"\"\n    The input parameters for the tool (defaults to last step output)\n    \"\"\"\n\n\nclass ToolRef(BaseModel):\n    \"\"\"\n    Reference to a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    ref: ToolRefById | ToolRefByName\n\n\nclass ToolRefById(BaseModel):\n    \"\"\"\n    Reference to a tool by id\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n\n\nclass ToolRefByName(BaseModel):\n    \"\"\"\n    Reference to a tool by name\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str | None, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")] = None\n    \"\"\"\n    Valid python identifier names\n    \"\"\"\n\n\nclass ToolRefUpdateItem(BaseModel):\n    \"\"\"\n    Reference to a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n\n\nclass UpdateTaskRequest(BaseModel):\n    \"\"\"\n    Payload for updating a task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStep\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n            | ReturnStep\n            | SleepStep\n            | ErrorWorkflowStep\n            | WaitForInputStep\n            | IfElseWorkflowStep\n            | SwitchStep\n            | ForeachStep\n            | ParallelStep\n            | Main\n        ],\n        Field(min_length=1),\n    ]\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[TaskTool] = []\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass WaitForInputInfo(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    info: dict[str, list[str] | dict[str, str] | list[dict[str, str]] | str]\n    \"\"\"\n    Any additional info or data\n    \"\"\"\n\n\nclass WaitForInputStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[\n        Literal[\"wait_for_input\"], Field(json_schema_extra={\"readOnly\": True})\n    ] = \"wait_for_input\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    wait_for_input: WaitForInputInfo\n    \"\"\"\n    Any additional info or data\n    \"\"\"\n\n\nclass YieldStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"yield\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"yield\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[\n        str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")\n    ] = None\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    workflow: str\n    \"\"\"\n    The subworkflow to run.\n    VALIDATION: Should resolve to a defined subworkflow.\n    \"\"\"\n    arguments: (\n        dict[str, list[str] | dict[str, str] | list[dict[str, str]] | str]\n        | Literal[\"_\"]\n    ) = \"_\"\n    \"\"\"\n    The input parameters for the subworkflow (defaults to last step output)\n    \"\"\"\n\n\nIfElseWorkflowStep.model_rebuild()\nIfElseWorkflowStepUpdateItem.model_rebuild()\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Tools.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import (\n    AnyUrl,\n    AwareDatetime,\n    BaseModel,\n    ConfigDict,\n    Field,\n    RootModel,\n    StrictBool,\n)\n\n\nclass AlgoliaSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Algolia Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    index_name: str\n    \"\"\"\n    The index name to search\n    \"\"\"\n    query: str\n    \"\"\"\n    The query to search for\n    \"\"\"\n    attributes_to_retrieve: list[str] | None = None\n    \"\"\"\n    Optional attributes to retrieve\n    \"\"\"\n    hits_per_page: Annotated[int, Field(ge=1, le=1000)] = 10\n    \"\"\"\n    Maximum number of hits to return\n    \"\"\"\n\n\nclass AlgoliaSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Algolia Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    index_name: str | None = None\n    \"\"\"\n    The index name to search\n    \"\"\"\n    query: str | None = None\n    \"\"\"\n    The query to search for\n    \"\"\"\n    attributes_to_retrieve: list[str] | None = None\n    \"\"\"\n    Optional attributes to retrieve\n    \"\"\"\n    hits_per_page: Annotated[int, Field(ge=1, le=1000)] = 10\n    \"\"\"\n    Maximum number of hits to return\n    \"\"\"\n\n\nclass AlgoliaSetup(BaseModel):\n    \"\"\"\n    Integration definition for Algolia\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    algolia_application_id: str\n    \"\"\"\n    The Algolia Application ID\n    \"\"\"\n    algolia_api_key: str\n    \"\"\"\n    The Algolia API Key\n    \"\"\"\n\n\nclass AlgoliaSetupUpdate(BaseModel):\n    \"\"\"\n    Integration definition for Algolia\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    algolia_application_id: str | None = None\n    \"\"\"\n    The Algolia Application ID\n    \"\"\"\n    algolia_api_key: str | None = None\n    \"\"\"\n    The Algolia API Key\n    \"\"\"\n\n\nclass ApiCallDef(BaseModel):\n    \"\"\"\n    API call definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\n        \"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"HEAD\", \"OPTIONS\", \"CONNECT\", \"TRACE\"\n    ]\n    \"\"\"\n    The HTTP method to use\n    \"\"\"\n    url: AnyUrl\n    \"\"\"\n    The URL to call\n    \"\"\"\n    schema_: Annotated[dict[str, Any] | None, Field(alias=\"schema\")] = None\n    \"\"\"\n    The schema of the response\n    \"\"\"\n    headers: dict[str, str] | None = None\n    \"\"\"\n    The headers to send with the request\n    \"\"\"\n    secrets: dict[str, SecretRef] | None = None\n    \"\"\"\n    Secret references to use in templates (available only at setup time, not during execution)\n    \"\"\"\n    content: str | None = None\n    \"\"\"\n    The content as base64 to send with the request\n    \"\"\"\n    data: dict[str, Any] | None = None\n    \"\"\"\n    The data to send as form data\n    \"\"\"\n    files: dict[str, Any] | None = None\n    \"\"\"\n    The data to send as files data\n    \"\"\"\n    json_: Annotated[dict[str, Any] | None, Field(alias=\"json\")] = None\n    \"\"\"\n    JSON body to send with the request\n    \"\"\"\n    cookies: dict[str, str] | None = None\n    \"\"\"\n    Cookies\n    \"\"\"\n    params: str | dict[str, Any] | None = None\n    \"\"\"\n    The parameters to send with the request\n    \"\"\"\n    params_schema: ParameterSchema | None = None\n    \"\"\"\n    The schema of the parameters\n    \"\"\"\n    follow_redirects: StrictBool | None = None\n    \"\"\"\n    Follow redirects\n    \"\"\"\n    timeout: int | None = None\n    \"\"\"\n    The timeout for the request\n    \"\"\"\n    include_response_content: StrictBool = True\n    \"\"\"\n    Whether to include the content in the response\n    \"\"\"\n\n\nclass ApiCallDefUpdate(BaseModel):\n    \"\"\"\n    API call definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: (\n        Literal[\n            \"GET\",\n            \"POST\",\n            \"PUT\",\n            \"DELETE\",\n            \"PATCH\",\n            \"HEAD\",\n            \"OPTIONS\",\n            \"CONNECT\",\n            \"TRACE\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The HTTP method to use\n    \"\"\"\n    url: AnyUrl | None = None\n    \"\"\"\n    The URL to call\n    \"\"\"\n    schema_: Annotated[dict[str, Any] | None, Field(alias=\"schema\")] = None\n    \"\"\"\n    The schema of the response\n    \"\"\"\n    headers: dict[str, str] | None = None\n    \"\"\"\n    The headers to send with the request\n    \"\"\"\n    secrets: dict[str, SecretRefUpdate] | None = None\n    \"\"\"\n    Secret references to use in templates (available only at setup time, not during execution)\n    \"\"\"\n    content: str | None = None\n    \"\"\"\n    The content as base64 to send with the request\n    \"\"\"\n    data: dict[str, Any] | None = None\n    \"\"\"\n    The data to send as form data\n    \"\"\"\n    files: dict[str, Any] | None = None\n    \"\"\"\n    The data to send as files data\n    \"\"\"\n    json_: Annotated[dict[str, Any] | None, Field(alias=\"json\")] = None\n    \"\"\"\n    JSON body to send with the request\n    \"\"\"\n    cookies: dict[str, str] | None = None\n    \"\"\"\n    Cookies\n    \"\"\"\n    params: str | dict[str, Any] | None = None\n    \"\"\"\n    The parameters to send with the request\n    \"\"\"\n    params_schema: ParameterSchemaUpdate | None = None\n    \"\"\"\n    The schema of the parameters\n    \"\"\"\n    follow_redirects: StrictBool | None = None\n    \"\"\"\n    Follow redirects\n    \"\"\"\n    timeout: int | None = None\n    \"\"\"\n    The timeout for the request\n    \"\"\"\n    include_response_content: StrictBool = True\n    \"\"\"\n    Whether to include the content in the response\n    \"\"\"\n\n\nclass ArxivSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Arxiv Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str\n    \"\"\"\n    The search query for searching with Arxiv\n    \"\"\"\n    id_list: list[str] | None = None\n    \"\"\"\n    The list of Arxiv IDs to search with\n    \"\"\"\n    max_results: Annotated[int, Field(ge=1, le=300000)] = 5\n    \"\"\"\n    The maximum number of results to return\n    \"\"\"\n    download_pdf: StrictBool = False\n    \"\"\"\n    The download the pdf of the results\n    \"\"\"\n    sort_by: Literal[\"relevance\", \"lastUpdatedDate\", \"submittedDate\"] = \"relevance\"\n    \"\"\"\n    The sort criterion for the results\n    \"\"\"\n    sort_order: Literal[\"ascending\", \"descending\"] = \"descending\"\n    \"\"\"\n    The sort order for the results\n    \"\"\"\n\n\nclass ArxivSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Arxiv Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str | None = None\n    \"\"\"\n    The search query for searching with Arxiv\n    \"\"\"\n    id_list: list[str] | None = None\n    \"\"\"\n    The list of Arxiv IDs to search with\n    \"\"\"\n    max_results: Annotated[int, Field(ge=1, le=300000)] = 5\n    \"\"\"\n    The maximum number of results to return\n    \"\"\"\n    download_pdf: StrictBool = False\n    \"\"\"\n    The download the pdf of the results\n    \"\"\"\n    sort_by: Literal[\"relevance\", \"lastUpdatedDate\", \"submittedDate\"] = \"relevance\"\n    \"\"\"\n    The sort criterion for the results\n    \"\"\"\n    sort_order: Literal[\"ascending\", \"descending\"] = \"descending\"\n    \"\"\"\n    The sort order for the results\n    \"\"\"\n\n\nclass BaseChosenToolCall(BaseModel):\n    \"\"\"\n    The response tool value generated by the model\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)\n    \"\"\"\n    function: FunctionCallOption | None = None\n    integration: Any | None = None\n    system: Any | None = None\n    api_call: Any | None = None\n    computer_20241022: ChosenComputer20241022 | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: ChosenTextEditor20241022 | None = None\n    bash_20241022: ChosenBash20241022 | None = None\n    id: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n\n\nclass BaseIntegrationDef(BaseModel):\n    \"\"\"\n    Integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\n        \"dummy\",\n        \"weather\",\n        \"wikipedia\",\n        \"spider\",\n        \"brave\",\n        \"browserbase\",\n        \"email\",\n        \"mailgun\",\n        \"remote_browser\",\n        \"llama_parse\",\n        \"ffmpeg\",\n        \"cloudinary\",\n        \"arxiv\",\n        \"unstructured\",\n        \"algolia\",\n        \"mcp\",\n        \"google_sheets\",\n    ]\n    \"\"\"\n    The provider of the integration\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters the integration accepts\n    \"\"\"\n    arguments: Any | None = None\n    \"\"\"\n    The arguments to pre-apply to the integration call\n    \"\"\"\n\n\nclass BaseIntegrationDefUpdate(BaseModel):\n    \"\"\"\n    Integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: (\n        Literal[\n            \"dummy\",\n            \"weather\",\n            \"wikipedia\",\n            \"spider\",\n            \"brave\",\n            \"browserbase\",\n            \"email\",\n            \"mailgun\",\n            \"remote_browser\",\n            \"llama_parse\",\n            \"ffmpeg\",\n            \"cloudinary\",\n            \"arxiv\",\n            \"unstructured\",\n            \"algolia\",\n            \"mcp\",\n            \"google_sheets\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The provider of the integration\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters the integration accepts\n    \"\"\"\n    arguments: Any | None = None\n    \"\"\"\n    The arguments to pre-apply to the integration call\n    \"\"\"\n\n\nclass Bash20241022Def(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"bash_20241022\"] = \"bash_20241022\"\n    name: str = \"bash\"\n\n\nclass Bash20241022DefUpdate(Bash20241022Def):\n    pass\n\n\nclass BraveIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Brave integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"brave\"] = \"brave\"\n    \"\"\"\n    The provider must be \"brave\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: BraveSearchSetup | None = None\n    \"\"\"\n    The setup parameters for Brave\n    \"\"\"\n    arguments: BraveSearchArguments | None = None\n    \"\"\"\n    The arguments for Brave Search\n    \"\"\"\n\n\nclass BraveIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Brave integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"brave\"] = \"brave\"\n    \"\"\"\n    The provider must be \"brave\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: BraveSearchSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Brave\n    \"\"\"\n    arguments: BraveSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Brave Search\n    \"\"\"\n\n\nclass BraveSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Brave Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str\n    \"\"\"\n    The search query for searching with Brave\n    \"\"\"\n\n\nclass BraveSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Brave Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str | None = None\n    \"\"\"\n    The search query for searching with Brave\n    \"\"\"\n\n\nclass BraveSearchSetup(BaseModel):\n    \"\"\"\n    Integration definition for Brave Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    brave_api_key: str\n    \"\"\"\n    The api key for Brave Search\n    \"\"\"\n\n\nclass BraveSearchSetupUpdate(BaseModel):\n    \"\"\"\n    Integration definition for Brave Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    brave_api_key: str | None = None\n    \"\"\"\n    The api key for Brave Search\n    \"\"\"\n\n\nclass BrowserbaseCompleteSessionArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    status: Literal[\"REQUEST_RELEASE\"] = \"REQUEST_RELEASE\"\n\n\nclass BrowserbaseCompleteSessionArgumentsUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n    status: Literal[\"REQUEST_RELEASE\"] = \"REQUEST_RELEASE\"\n\n\nclass BrowserbaseContextArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    project_id: Annotated[str, Field(alias=\"projectId\")]\n    \"\"\"\n    The Project ID. Can be found in Settings.\n    \"\"\"\n\n\nclass BrowserbaseContextArgumentsUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    project_id: Annotated[str | None, Field(alias=\"projectId\")] = None\n    \"\"\"\n    The Project ID. Can be found in Settings.\n    \"\"\"\n\n\nclass BrowserbaseCreateSessionArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    project_id: Annotated[str | None, Field(alias=\"projectId\")] = None\n    \"\"\"\n    The Project ID. Can be found in Settings.\n    \"\"\"\n    extension_id: Annotated[str | None, Field(alias=\"extensionId\")] = None\n    \"\"\"\n    The installed Extension ID. See Install Extension from GitHub.\n    \"\"\"\n    browser_settings: Annotated[dict[str, Any], Field(alias=\"browserSettings\")] = {}\n    \"\"\"\n    Browser settings\n    \"\"\"\n    timeout: int = 3600\n    \"\"\"\n    Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout.\n    \"\"\"\n    keep_alive: Annotated[StrictBool, Field(alias=\"keepAlive\")] = False\n    \"\"\"\n    Set to true to keep the session alive even after disconnections. This is available on the Startup plan only.\n    \"\"\"\n    proxies: StrictBool | list[dict[str, Any]] = False\n    \"\"\"\n    Proxy configuration. Can be true for default proxy, or an array of proxy configurations.\n    \"\"\"\n\n\nclass BrowserbaseExtensionArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    repository_name: Annotated[str, Field(alias=\"repositoryName\")]\n    \"\"\"\n    The GitHub repository name.\n    \"\"\"\n    ref: str | None = None\n    \"\"\"\n    Ref to install from a branch or tag.\n    \"\"\"\n\n\nclass BrowserbaseExtensionArgumentsUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    repository_name: Annotated[str | None, Field(alias=\"repositoryName\")] = None\n    \"\"\"\n    The GitHub repository name.\n    \"\"\"\n    ref: str | None = None\n    \"\"\"\n    Ref to install from a branch or tag.\n    \"\"\"\n\n\nclass BrowserbaseGetSessionArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n\n\nclass BrowserbaseGetSessionArgumentsUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n\n\nclass BrowserbaseGetSessionLiveUrlsArguments(BrowserbaseGetSessionArguments):\n    pass\n\n\nclass BrowserbaseGetSessionLiveUrlsArgumentsUpdate(\n    BrowserbaseGetSessionArgumentsUpdate\n):\n    pass\n\n\nclass BrowserbaseListSessionsArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\"RUNNING\", \"ERROR\", \"TIMED_OUT\", \"COMPLETED\"] | None = None\n    \"\"\"\n    The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED)\n    \"\"\"\n\n\nclass BrowserbaseSetup(BaseModel):\n    \"\"\"\n    The setup parameters for the browserbase integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    api_key: str\n    \"\"\"\n    API key for the browserbase integration\n    \"\"\"\n    project_id: str\n    \"\"\"\n    The project ID. Can be found in Settings.\n    \"\"\"\n    api_url: str | None = None\n    \"\"\"\n    The API URL. Defaults to https://www.browserbase.com\n    \"\"\"\n    connect_url: str | None = None\n    \"\"\"\n    The connect URL. Defaults to wss://connect.browserbase.com\n    \"\"\"\n\n\nclass BrowserbaseSetupUpdate(BaseModel):\n    \"\"\"\n    The setup parameters for the browserbase integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    api_key: str | None = None\n    \"\"\"\n    API key for the browserbase integration\n    \"\"\"\n    project_id: str | None = None\n    \"\"\"\n    The project ID. Can be found in Settings.\n    \"\"\"\n    api_url: str | None = None\n    \"\"\"\n    The API URL. Defaults to https://www.browserbase.com\n    \"\"\"\n    connect_url: str | None = None\n    \"\"\"\n    The connect URL. Defaults to wss://connect.browserbase.com\n    \"\"\"\n\n\nclass ChosenBash20241022(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    command: str | None = None\n    \"\"\"\n    The bash command to run\n    \"\"\"\n    restart: StrictBool = False\n    \"\"\"\n    Whether to restart the tool\n    \"\"\"\n\n\nclass ChosenComputer20241022(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    action: Literal[\n        \"key\",\n        \"type\",\n        \"cursor_position\",\n        \"mouse_move\",\n        \"left_click\",\n        \"right_click\",\n        \"middle_click\",\n        \"double_click\",\n        \"screenshot\",\n    ]\n    \"\"\"\n    The action to perform\n    \"\"\"\n    text: str | None = None\n    \"\"\"\n    The text to type\n    \"\"\"\n    coordinate: list[int] | None = None\n    \"\"\"\n    The (x, y) pixel coordinate to move the cursor to\n    \"\"\"\n\n\nclass ChosenFunctionCall(BaseChosenToolCall):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"function\"] = \"function\"\n    function: FunctionCallOption\n    \"\"\"\n    The function to call\n    \"\"\"\n\n\nclass ChosenTextEditor20241022(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    command: Literal[\"str_replace\", \"insert\", \"view\", \"undo_edit\"]\n    \"\"\"\n    The command to run\n    \"\"\"\n    path: str\n    \"\"\"\n    The path to the file\n    \"\"\"\n    file_text: str | None = None\n    \"\"\"\n    The content of the file to be created\n    \"\"\"\n    insert_line: int | None = None\n    \"\"\"\n    The line to insert the new string after\n    \"\"\"\n    new_str: str | None = None\n    \"\"\"\n    The new string to insert\n    \"\"\"\n    old_str: str | None = None\n    \"\"\"\n    The string in the file to replace\n    \"\"\"\n    view_range: list[int] | None = None\n    \"\"\"\n    The line range to view\n    \"\"\"\n\n\nclass CloudinaryEditArguments(BaseModel):\n    \"\"\"\n    Arguments for Cloudinary media edit\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    public_id: str\n    \"\"\"\n    The file Public ID in Cloudinary\n    \"\"\"\n    transformation: list[dict[str, Any]]\n    \"\"\"\n    The transformation to apply to the file\n    \"\"\"\n    return_base64: StrictBool = False\n    \"\"\"\n    Return base64 encoded file\n    \"\"\"\n\n\nclass CloudinaryEditArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Cloudinary media edit\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    public_id: str | None = None\n    \"\"\"\n    The file Public ID in Cloudinary\n    \"\"\"\n    transformation: list[dict[str, Any]] | None = None\n    \"\"\"\n    The transformation to apply to the file\n    \"\"\"\n    return_base64: StrictBool = False\n    \"\"\"\n    Return base64 encoded file\n    \"\"\"\n\n\nclass CloudinarySetup(BaseModel):\n    \"\"\"\n    Setup parameters for Cloudinary integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cloudinary_api_key: str\n    \"\"\"\n    The API key for Cloudinary\n    \"\"\"\n    cloudinary_api_secret: str\n    \"\"\"\n    The API secret for Cloudinary\n    \"\"\"\n    cloudinary_cloud_name: str\n    \"\"\"\n    The Cloud name for Cloudinary\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Additional parameters for the Cloudinary API\n    \"\"\"\n\n\nclass CloudinarySetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Cloudinary integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cloudinary_api_key: str | None = None\n    \"\"\"\n    The API key for Cloudinary\n    \"\"\"\n    cloudinary_api_secret: str | None = None\n    \"\"\"\n    The API secret for Cloudinary\n    \"\"\"\n    cloudinary_cloud_name: str | None = None\n    \"\"\"\n    The Cloud name for Cloudinary\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Additional parameters for the Cloudinary API\n    \"\"\"\n\n\nclass CloudinaryUploadArguments(BaseModel):\n    \"\"\"\n    Arguments for Cloudinary media upload\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    file: str\n    \"\"\"\n    The URL of the file upload\n    \"\"\"\n    return_base64: StrictBool = False\n    \"\"\"\n    Return base64 encoded file\n    \"\"\"\n    public_id: str | None = None\n    \"\"\"\n    Optional public ID for the uploaded file\n    \"\"\"\n    upload_params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n\n\nclass CloudinaryUploadArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Cloudinary media upload\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    file: str | None = None\n    \"\"\"\n    The URL of the file upload\n    \"\"\"\n    return_base64: StrictBool = False\n    \"\"\"\n    Return base64 encoded file\n    \"\"\"\n    public_id: str | None = None\n    \"\"\"\n    Optional public ID for the uploaded file\n    \"\"\"\n    upload_params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n\n\nclass Computer20241022Def(BaseModel):\n    \"\"\"\n    Anthropic new tools\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_20241022\"] = \"computer_20241022\"\n    name: str = \"computer\"\n    display_width_px: Annotated[int, Field(ge=600)] = 1024\n    \"\"\"\n    The display width in pixels\n    \"\"\"\n    display_height_px: Annotated[int, Field(ge=400)] = 768\n    \"\"\"\n    The display height in pixels\n    \"\"\"\n    display_number: Annotated[int, Field(ge=1, le=10)] = 1\n    \"\"\"\n    The display number to use\n    \"\"\"\n\n\nclass Computer20241022DefUpdate(Computer20241022Def):\n    \"\"\"\n    Anthropic new tools\n    \"\"\"\n\n\nclass CreateToolRequest(BaseModel):\n    \"\"\"\n    Payload for creating a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: FunctionDef | None = None\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (\n        DummyIntegrationDef\n        | BraveIntegrationDef\n        | EmailIntegrationDef\n        | SpiderIntegrationDef\n        | WikipediaIntegrationDef\n        | WeatherIntegrationDef\n        | MailgunIntegrationDef\n        | BrowserbaseContextIntegrationDef\n        | BrowserbaseExtensionIntegrationDef\n        | BrowserbaseListSessionsIntegrationDef\n        | BrowserbaseCreateSessionIntegrationDef\n        | BrowserbaseGetSessionIntegrationDef\n        | BrowserbaseCompleteSessionIntegrationDef\n        | BrowserbaseGetSessionLiveUrlsIntegrationDef\n        | RemoteBrowserIntegrationDef\n        | LlamaParseIntegrationDef\n        | FfmpegIntegrationDef\n        | CloudinaryUploadIntegrationDef\n        | CloudinaryEditIntegrationDef\n        | ArxivIntegrationDef\n        | UnstructuredIntegrationDef\n        | AlgoliaIntegrationDef\n        | McpIntegrationDef\n        | GoogleSheetsIntegrationDef\n        | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: SystemDef | None = None\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: ApiCallDef | None = None\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Computer20241022Def | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: TextEditor20241022Def | None = None\n    bash_20241022: Bash20241022Def | None = None\n\n\nclass DummyIntegrationDef(BaseIntegrationDef):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"dummy\"] = \"dummy\"\n\n\nclass DummyIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"dummy\"] = \"dummy\"\n\n\nclass EmailArguments(BaseModel):\n    \"\"\"\n    Arguments for Email sending\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    to: str\n    \"\"\"\n    The email address to send the email to\n    \"\"\"\n    from_: Annotated[str, Field(alias=\"from\")]\n    \"\"\"\n    The email address to send the email from\n    \"\"\"\n    subject: str\n    \"\"\"\n    The subject of the email\n    \"\"\"\n    body: str\n    \"\"\"\n    The body of the email\n    \"\"\"\n\n\nclass EmailArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Email sending\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    to: str | None = None\n    \"\"\"\n    The email address to send the email to\n    \"\"\"\n    from_: Annotated[str | None, Field(alias=\"from\")] = None\n    \"\"\"\n    The email address to send the email from\n    \"\"\"\n    subject: str | None = None\n    \"\"\"\n    The subject of the email\n    \"\"\"\n    body: str | None = None\n    \"\"\"\n    The body of the email\n    \"\"\"\n\n\nclass EmailIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Email integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"email\"] = \"email\"\n    \"\"\"\n    The provider must be \"email\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: EmailSetup | None = None\n    \"\"\"\n    The setup parameters for Email\n    \"\"\"\n    arguments: EmailArguments | None = None\n    \"\"\"\n    The arguments for Email sending\n    \"\"\"\n\n\nclass EmailIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Email integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"email\"] = \"email\"\n    \"\"\"\n    The provider must be \"email\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: EmailSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Email\n    \"\"\"\n    arguments: EmailArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Email sending\n    \"\"\"\n\n\nclass EmailSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Email integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    host: str\n    \"\"\"\n    The host of the email server\n    \"\"\"\n    port: int\n    \"\"\"\n    The port of the email server\n    \"\"\"\n    user: str\n    \"\"\"\n    The username of the email server\n    \"\"\"\n    password: str\n    \"\"\"\n    The password of the email server\n    \"\"\"\n\n\nclass EmailSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Email integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    host: str | None = None\n    \"\"\"\n    The host of the email server\n    \"\"\"\n    port: int | None = None\n    \"\"\"\n    The port of the email server\n    \"\"\"\n    user: str | None = None\n    \"\"\"\n    The username of the email server\n    \"\"\"\n    password: str | None = None\n    \"\"\"\n    The password of the email server\n    \"\"\"\n\n\nclass FfmpegIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Ffmpeg integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"ffmpeg\"] = \"ffmpeg\"\n    \"\"\"\n    The provider must be \"ffmpeg\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Ffmpeg\n    \"\"\"\n    arguments: FfmpegSearchArguments | None = None\n    \"\"\"\n    The arguments for Ffmpeg Search\n    \"\"\"\n\n\nclass FfmpegIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Ffmpeg integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"ffmpeg\"] = \"ffmpeg\"\n    \"\"\"\n    The provider must be \"ffmpeg\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Ffmpeg\n    \"\"\"\n    arguments: FfmpegSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Ffmpeg Search\n    \"\"\"\n\n\nclass FfmpegSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Ffmpeg CMD\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cmd: str\n    \"\"\"\n    The bash command string\n    \"\"\"\n    file: str | list[str] | None = None\n    \"\"\"\n    The base64 string of the file\n    \"\"\"\n\n\nclass FfmpegSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Ffmpeg CMD\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cmd: str | None = None\n    \"\"\"\n    The bash command string\n    \"\"\"\n    file: str | list[str] | None = None\n    \"\"\"\n    The base64 string of the file\n    \"\"\"\n\n\nclass FunctionCallOption(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: str\n    \"\"\"\n    The name of the function\n    \"\"\"\n    arguments: str | None = None\n    \"\"\"\n    The parameters to pass to the function\n    \"\"\"\n\n\nclass FunctionDef(BaseModel):\n    \"\"\"\n    Function definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Any | None = None\n    \"\"\"\n    DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons.\n    \"\"\"\n    description: Any | None = None\n    \"\"\"\n    DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons.\n    \"\"\"\n    parameters: dict[str, Any] | None = None\n    \"\"\"\n    The parameters the function accepts\n    \"\"\"\n\n\nclass GoogleSheetsAppendArguments(BaseModel):\n    \"\"\"\n    Arguments for appending values to a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to append to\n    \"\"\"\n    range: str\n    \"\"\"\n    The A1 notation of the range to start appending from\n    \"\"\"\n    values: list[list]\n    \"\"\"\n    The values to append (2D array)\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    insert_data_option: Literal[\"OVERWRITE\", \"INSERT_ROWS\"] = \"INSERT_ROWS\"\n    \"\"\"\n    How the input data should be inserted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsAppendArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for appending values to a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to append to\n    \"\"\"\n    range: str | None = None\n    \"\"\"\n    The A1 notation of the range to start appending from\n    \"\"\"\n    values: list[list] | None = None\n    \"\"\"\n    The values to append (2D array)\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    insert_data_option: Literal[\"OVERWRITE\", \"INSERT_ROWS\"] = \"INSERT_ROWS\"\n    \"\"\"\n    How the input data should be inserted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsBatchReadArguments(BaseModel):\n    \"\"\"\n    Arguments for batch reading values from multiple ranges\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to read from\n    \"\"\"\n    ranges: list[str]\n    \"\"\"\n    The A1 notation of the ranges to read\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension that results should use\n    \"\"\"\n    value_render_option: Literal[\"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\"] = (\n        \"FORMATTED_VALUE\"\n    )\n    \"\"\"\n    How values should be represented in the output\n    \"\"\"\n    date_time_render_option: Literal[\"SERIAL_NUMBER\", \"FORMATTED_STRING\"] = (\n        \"FORMATTED_STRING\"\n    )\n    \"\"\"\n    How dates, times, and durations should be represented\n    \"\"\"\n\n\nclass GoogleSheetsBatchReadArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for batch reading values from multiple ranges\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to read from\n    \"\"\"\n    ranges: list[str] | None = None\n    \"\"\"\n    The A1 notation of the ranges to read\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension that results should use\n    \"\"\"\n    value_render_option: Literal[\"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\"] = (\n        \"FORMATTED_VALUE\"\n    )\n    \"\"\"\n    How values should be represented in the output\n    \"\"\"\n    date_time_render_option: Literal[\"SERIAL_NUMBER\", \"FORMATTED_STRING\"] = (\n        \"FORMATTED_STRING\"\n    )\n    \"\"\"\n    How dates, times, and durations should be represented\n    \"\"\"\n\n\nclass GoogleSheetsBatchWriteArguments(BaseModel):\n    \"\"\"\n    Arguments for batch updating values in multiple ranges\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to write to\n    \"\"\"\n    data: list[GoogleSheetsValueRange]\n    \"\"\"\n    The data to write to each range\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsBatchWriteArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for batch updating values in multiple ranges\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to write to\n    \"\"\"\n    data: list[GoogleSheetsValueRange] | None = None\n    \"\"\"\n    The data to write to each range\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsClearArguments(BaseModel):\n    \"\"\"\n    Arguments for clearing values from a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to clear values from\n    \"\"\"\n    range: str\n    \"\"\"\n    The A1 notation of the range to clear\n    \"\"\"\n\n\nclass GoogleSheetsClearArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for clearing values from a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to clear values from\n    \"\"\"\n    range: str | None = None\n    \"\"\"\n    The A1 notation of the range to clear\n    \"\"\"\n\n\nclass GoogleSheetsIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Google Sheets integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"google_sheets\"] = \"google_sheets\"\n    \"\"\"\n    The provider must be \"google_sheets\"\n    \"\"\"\n    method: (\n        Literal[\n            \"read_values\",\n            \"write_values\",\n            \"append_values\",\n            \"clear_values\",\n            \"batch_read\",\n            \"batch_write\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: GoogleSheetsSetup | None = None\n    \"\"\"\n    The setup parameters for Google Sheets\n    \"\"\"\n    arguments: (\n        GoogleSheetsReadArguments\n        | GoogleSheetsWriteArguments\n        | GoogleSheetsAppendArguments\n        | GoogleSheetsClearArguments\n        | GoogleSheetsBatchReadArguments\n        | GoogleSheetsBatchWriteArguments\n        | None\n    ) = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass GoogleSheetsIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Google Sheets integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"google_sheets\"] = \"google_sheets\"\n    \"\"\"\n    The provider must be \"google_sheets\"\n    \"\"\"\n    method: (\n        Literal[\n            \"read_values\",\n            \"write_values\",\n            \"append_values\",\n            \"clear_values\",\n            \"batch_read\",\n            \"batch_write\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: GoogleSheetsSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Google Sheets\n    \"\"\"\n    arguments: (\n        GoogleSheetsReadArgumentsUpdate\n        | GoogleSheetsWriteArgumentsUpdate\n        | GoogleSheetsAppendArgumentsUpdate\n        | GoogleSheetsClearArgumentsUpdate\n        | GoogleSheetsBatchReadArgumentsUpdate\n        | GoogleSheetsBatchWriteArgumentsUpdate\n        | None\n    ) = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass GoogleSheetsReadArguments(BaseModel):\n    \"\"\"\n    Arguments for reading values from a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to read from\n    \"\"\"\n    range: str\n    \"\"\"\n    The A1 notation of the range to read\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension that results should use\n    \"\"\"\n    value_render_option: Literal[\"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\"] = (\n        \"FORMATTED_VALUE\"\n    )\n    \"\"\"\n    How values should be represented in the output\n    \"\"\"\n    date_time_render_option: Literal[\"SERIAL_NUMBER\", \"FORMATTED_STRING\"] = (\n        \"FORMATTED_STRING\"\n    )\n    \"\"\"\n    How dates, times, and durations should be represented\n    \"\"\"\n\n\nclass GoogleSheetsReadArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for reading values from a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to read from\n    \"\"\"\n    range: str | None = None\n    \"\"\"\n    The A1 notation of the range to read\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension that results should use\n    \"\"\"\n    value_render_option: Literal[\"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\"] = (\n        \"FORMATTED_VALUE\"\n    )\n    \"\"\"\n    How values should be represented in the output\n    \"\"\"\n    date_time_render_option: Literal[\"SERIAL_NUMBER\", \"FORMATTED_STRING\"] = (\n        \"FORMATTED_STRING\"\n    )\n    \"\"\"\n    How dates, times, and durations should be represented\n    \"\"\"\n\n\nclass GoogleSheetsSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Google Sheets integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    use_julep_service: StrictBool\n    \"\"\"\n    Whether to use Julep's built-in Google Sheets service account.\n    If true, no credentials needed. If false, service_account_json is required.\n    \"\"\"\n    service_account_json: str | None = None\n    \"\"\"\n    Base64 encoded service account JSON for authentication.\n    Required when use_julep_service is false.\n    Users can provide their own service account for better isolation and quota management.\n    \"\"\"\n    default_retry_count: Annotated[int, Field(ge=1, le=10)] = 3\n    \"\"\"\n    Default number of retry attempts for API calls\n    \"\"\"\n\n\nclass GoogleSheetsSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Google Sheets integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    use_julep_service: StrictBool | None = None\n    \"\"\"\n    Whether to use Julep's built-in Google Sheets service account.\n    If true, no credentials needed. If false, service_account_json is required.\n    \"\"\"\n    service_account_json: str | None = None\n    \"\"\"\n    Base64 encoded service account JSON for authentication.\n    Required when use_julep_service is false.\n    Users can provide their own service account for better isolation and quota management.\n    \"\"\"\n    default_retry_count: Annotated[int, Field(ge=1, le=10)] = 3\n    \"\"\"\n    Default number of retry attempts for API calls\n    \"\"\"\n\n\nclass GoogleSheetsValueRange(BaseModel):\n    \"\"\"\n    Represents a range of values to write\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    range: str\n    \"\"\"\n    The A1 notation of the range\n    \"\"\"\n    values: list[list]\n    \"\"\"\n    The values for the range (2D array)\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension of the values\n    \"\"\"\n\n\nclass GoogleSheetsWriteArguments(BaseModel):\n    \"\"\"\n    Arguments for writing values to a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to write to\n    \"\"\"\n    range: str\n    \"\"\"\n    The A1 notation of the range to write to\n    \"\"\"\n    values: list[list]\n    \"\"\"\n    The values to write (2D array)\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    insert_data_option: Literal[\"OVERWRITE\", \"INSERT_ROWS\"] = \"OVERWRITE\"\n    \"\"\"\n    How the input data should be inserted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsWriteArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for writing values to a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to write to\n    \"\"\"\n    range: str | None = None\n    \"\"\"\n    The A1 notation of the range to write to\n    \"\"\"\n    values: list[list] | None = None\n    \"\"\"\n    The values to write (2D array)\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    insert_data_option: Literal[\"OVERWRITE\", \"INSERT_ROWS\"] = \"OVERWRITE\"\n    \"\"\"\n    How the input data should be inserted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass LlamaParseFetchArguments(BaseModel):\n    \"\"\"\n    Arguments for LlamaParse integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    filename: str | None = None\n    \"\"\"\n    File Name. If not provided, a random name will be generated.\n    \"\"\"\n    file: str | list[str]\n    \"\"\"\n    The base64 string of the file, which can be a single string or a list of strings\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n    base64: StrictBool = False\n    \"\"\"\n    The input file is base64\n    \"\"\"\n\n\nclass LlamaParseFetchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for LlamaParse integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    filename: str | None = None\n    \"\"\"\n    File Name. If not provided, a random name will be generated.\n    \"\"\"\n    file: str | list[str] | None = None\n    \"\"\"\n    The base64 string of the file, which can be a single string or a list of strings\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n    base64: StrictBool = False\n    \"\"\"\n    The input file is base64\n    \"\"\"\n\n\nclass LlamaParseIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    LlamaParse integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"llama_parse\"] = \"llama_parse\"\n    \"\"\"\n    The provider must be \"LlamaParseSetup\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: LlamaParseSetup | None = None\n    \"\"\"\n    The setup parameters for LlamaParse\n    \"\"\"\n    arguments: LlamaParseFetchArguments | None = None\n    \"\"\"\n    The arguments for LlamaParse\n    \"\"\"\n\n\nclass LlamaParseIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    LlamaParse integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"llama_parse\"] = \"llama_parse\"\n    \"\"\"\n    The provider must be \"LlamaParseSetup\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: LlamaParseSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for LlamaParse\n    \"\"\"\n    arguments: LlamaParseFetchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for LlamaParse\n    \"\"\"\n\n\nclass LlamaParseSetup(BaseModel):\n    \"\"\"\n    Setup parameters for LlamaParse integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    llamaparse_api_key: str\n    \"\"\"\n    The API key for LlamaParse\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n\n\nclass LlamaParseSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for LlamaParse integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    llamaparse_api_key: str | None = None\n    \"\"\"\n    The API key for LlamaParse\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n\n\nclass MailgunIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Mailgun integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"mailgun\"] = \"mailgun\"\n    \"\"\"\n    The provider must be \"mailgun\"\n    \"\"\"\n    method: Literal[\"send_email\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: MailgunSetup | None = None\n    \"\"\"\n    The setup parameters for Mailgun\n    \"\"\"\n    arguments: MailgunSendEmailArguments | None = None\n    \"\"\"\n    The arguments for mailgun methods\n    \"\"\"\n\n\nclass MailgunIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Mailgun integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"mailgun\"] = \"mailgun\"\n    \"\"\"\n    The provider must be \"mailgun\"\n    \"\"\"\n    method: Literal[\"send_email\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: MailgunSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Mailgun\n    \"\"\"\n    arguments: MailgunSendEmailArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for mailgun methods\n    \"\"\"\n\n\nclass MailgunSendEmailArguments(BaseModel):\n    \"\"\"\n    Arguments for mailgun.send_email method\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    to: str\n    \"\"\"\n    The email address to send the email to\n    \"\"\"\n    from_: Annotated[str, Field(alias=\"from\")]\n    \"\"\"\n    The email address to send the email from\n    \"\"\"\n    subject: str\n    \"\"\"\n    The subject of the email\n    \"\"\"\n    body: str\n    \"\"\"\n    The body of the email\n    \"\"\"\n    cc: str | None = None\n    \"\"\"\n    Optional carbon copy recipients (comma-separated email addresses)\n    \"\"\"\n    bcc: str | None = None\n    \"\"\"\n    Optional blind carbon copy recipients (comma-separated email addresses)\n    \"\"\"\n\n\nclass MailgunSendEmailArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for mailgun.send_email method\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    to: str | None = None\n    \"\"\"\n    The email address to send the email to\n    \"\"\"\n    from_: Annotated[str | None, Field(alias=\"from\")] = None\n    \"\"\"\n    The email address to send the email from\n    \"\"\"\n    subject: str | None = None\n    \"\"\"\n    The subject of the email\n    \"\"\"\n    body: str | None = None\n    \"\"\"\n    The body of the email\n    \"\"\"\n    cc: str | None = None\n    \"\"\"\n    Optional carbon copy recipients (comma-separated email addresses)\n    \"\"\"\n    bcc: str | None = None\n    \"\"\"\n    Optional blind carbon copy recipients (comma-separated email addresses)\n    \"\"\"\n\n\nclass MailgunSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Mailgun integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    api_key: str\n    \"\"\"\n    The API key for the Mailgun integration\n    \"\"\"\n\n\nclass MailgunSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Mailgun integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    api_key: str | None = None\n    \"\"\"\n    The API key for the Mailgun integration\n    \"\"\"\n\n\nclass McpCallToolArguments(BaseModel):\n    \"\"\"\n    Arguments to call a named tool on the MCP server\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_name: str\n    \"\"\"\n    The MCP tool name to invoke\n    \"\"\"\n    arguments: dict[str, Any] = {}\n    \"\"\"\n    JSON-serializable arguments to pass to the MCP tool\n    \"\"\"\n    timeout_seconds: int = 60\n    \"\"\"\n    Optional per-call timeout in seconds\n    \"\"\"\n\n\nclass McpCallToolArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments to call a named tool on the MCP server\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_name: str | None = None\n    \"\"\"\n    The MCP tool name to invoke\n    \"\"\"\n    arguments: dict[str, Any] = {}\n    \"\"\"\n    JSON-serializable arguments to pass to the MCP tool\n    \"\"\"\n    timeout_seconds: int = 60\n    \"\"\"\n    Optional per-call timeout in seconds\n    \"\"\"\n\n\nclass McpIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    MCP integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"mcp\"] = \"mcp\"\n    \"\"\"\n    The provider must be \"mcp\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: McpSetup | None = None\n    \"\"\"\n    The setup parameters for MCP\n    \"\"\"\n    arguments: McpCallToolArguments | McpListToolsArguments | None = None\n    \"\"\"\n    The arguments for MCP methods\n    \"\"\"\n\n\nclass McpIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    MCP integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"mcp\"] = \"mcp\"\n    \"\"\"\n    The provider must be \"mcp\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: McpSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for MCP\n    \"\"\"\n    arguments: McpCallToolArgumentsUpdate | McpListToolsArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for MCP methods\n    \"\"\"\n\n\nclass McpListToolsArguments(BaseModel):\n    \"\"\"\n    Arguments to list available tools\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    dummy: str = \"dummy\"\n\n\nclass McpListToolsArgumentsUpdate(McpListToolsArguments):\n    \"\"\"\n    Arguments to list available tools\n    \"\"\"\n\n\nclass McpSetup(BaseModel):\n    \"\"\"\n    Setup parameters for MCP integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    transport: Literal[\"sse\", \"http\"]\n    \"\"\"\n    Transport used to connect to the MCP server\n    \"\"\"\n    command: str | None = None\n    \"\"\"\n    (stdio) Executable or command to launch the server\n    \"\"\"\n    args: list[str] = []\n    \"\"\"\n    (stdio) Arguments for the server command\n    \"\"\"\n    cwd: str | None = None\n    \"\"\"\n    (stdio) Working directory for the server process\n    \"\"\"\n    env: dict[str, str] = {}\n    \"\"\"\n    (stdio) Environment variables for the server process\n    \"\"\"\n    http_url: AnyUrl | None = None\n    \"\"\"\n    (http) Base URL for the MCP server (usually ends with /mcp)\n    \"\"\"\n    http_headers: dict[str, str] = {}\n    \"\"\"\n    (http) Optional HTTP headers to include (e.g., Authorization)\n    \"\"\"\n\n\nclass McpSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for MCP integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    transport: Literal[\"sse\", \"http\"] | None = None\n    \"\"\"\n    Transport used to connect to the MCP server\n    \"\"\"\n    command: str | None = None\n    \"\"\"\n    (stdio) Executable or command to launch the server\n    \"\"\"\n    args: list[str] = []\n    \"\"\"\n    (stdio) Arguments for the server command\n    \"\"\"\n    cwd: str | None = None\n    \"\"\"\n    (stdio) Working directory for the server process\n    \"\"\"\n    env: dict[str, str] = {}\n    \"\"\"\n    (stdio) Environment variables for the server process\n    \"\"\"\n    http_url: AnyUrl | None = None\n    \"\"\"\n    (http) Base URL for the MCP server (usually ends with /mcp)\n    \"\"\"\n    http_headers: dict[str, str] = {}\n    \"\"\"\n    (http) Optional HTTP headers to include (e.g., Authorization)\n    \"\"\"\n\n\nclass NamedToolChoice(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    function: FunctionCallOption | None = None\n\n\nclass ParameterSchema(BaseModel):\n    \"\"\"\n    JSON Schema for API call parameters\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str = \"object\"\n    \"\"\"\n    Schema type (usually 'object')\n    \"\"\"\n    properties: dict[str, PropertyDefinition]\n    \"\"\"\n    Properties definition for parameters\n    \"\"\"\n    required: list[str] = []\n    \"\"\"\n    List of required property names\n    \"\"\"\n    additional_properties: Annotated[\n        StrictBool | None, Field(alias=\"additionalProperties\")\n    ] = None\n    \"\"\"\n    Whether to allow additional properties\n    \"\"\"\n\n\nclass ParameterSchemaUpdate(BaseModel):\n    \"\"\"\n    JSON Schema for API call parameters\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str = \"object\"\n    \"\"\"\n    Schema type (usually 'object')\n    \"\"\"\n    properties: dict[str, PropertyDefinitionUpdate] | None = None\n    \"\"\"\n    Properties definition for parameters\n    \"\"\"\n    required: list[str] = []\n    \"\"\"\n    List of required property names\n    \"\"\"\n    additional_properties: Annotated[\n        StrictBool | None, Field(alias=\"additionalProperties\")\n    ] = None\n    \"\"\"\n    Whether to allow additional properties\n    \"\"\"\n\n\nclass PatchToolRequest(BaseModel):\n    \"\"\"\n    Payload for patching a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str | None, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")] = None\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: (\n        Literal[\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: FunctionDef | None = None\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (\n        DummyIntegrationDefUpdate\n        | BraveIntegrationDefUpdate\n        | EmailIntegrationDefUpdate\n        | SpiderIntegrationDefUpdate\n        | WikipediaIntegrationDefUpdate\n        | WeatherIntegrationDefUpdate\n        | MailgunIntegrationDefUpdate\n        | BrowserbaseContextIntegrationDefUpdate\n        | BrowserbaseExtensionIntegrationDefUpdate\n        | BrowserbaseListSessionsIntegrationDefUpdate\n        | BrowserbaseCreateSessionIntegrationDefUpdate\n        | BrowserbaseGetSessionIntegrationDefUpdate\n        | BrowserbaseCompleteSessionIntegrationDefUpdate\n        | BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate\n        | RemoteBrowserIntegrationDefUpdate\n        | LlamaParseIntegrationDefUpdate\n        | FfmpegIntegrationDefUpdate\n        | CloudinaryUploadIntegrationDefUpdate\n        | CloudinaryEditIntegrationDefUpdate\n        | ArxivIntegrationDefUpdate\n        | UnstructuredIntegrationDefUpdate\n        | AlgoliaIntegrationDefUpdate\n        | McpIntegrationDefUpdate\n        | GoogleSheetsIntegrationDefUpdate\n        | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: SystemDefUpdate | None = None\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: ApiCallDefUpdate | None = None\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Computer20241022DefUpdate | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: TextEditor20241022DefUpdate | None = None\n    bash_20241022: Bash20241022DefUpdate | None = None\n\n\nclass PropertyDefinition(BaseModel):\n    \"\"\"\n    Property definition for parameter schema\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str\n    \"\"\"\n    Type of the property\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the property\n    \"\"\"\n    enum: list[str] | None = None\n    \"\"\"\n    Enum values if applicable\n    \"\"\"\n    items: PropertyDefinition | None = None\n    \"\"\"\n    Items definition for array types\n    \"\"\"\n\n\nclass PropertyDefinitionUpdate(BaseModel):\n    \"\"\"\n    Property definition for parameter schema\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str | None = None\n    \"\"\"\n    Type of the property\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the property\n    \"\"\"\n    enum: list[str] | None = None\n    \"\"\"\n    Enum values if applicable\n    \"\"\"\n    items: PropertyDefinitionUpdate | None = None\n    \"\"\"\n    Items definition for array types\n    \"\"\"\n\n\nclass RemoteBrowserArguments(BaseModel):\n    \"\"\"\n    The arguments for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    connect_url: str | None = None\n    \"\"\"\n    The connection URL for the remote browser\n    \"\"\"\n    action: Literal[\n        \"key\",\n        \"type\",\n        \"mouse_move\",\n        \"left_click\",\n        \"left_click_drag\",\n        \"right_click\",\n        \"middle_click\",\n        \"double_click\",\n        \"screenshot\",\n        \"cursor_position\",\n        \"navigate\",\n        \"refresh\",\n    ]\n    \"\"\"\n    The action to perform\n    \"\"\"\n    text: str | None = None\n    \"\"\"\n    The text\n    \"\"\"\n    coordinate: list | None = None\n    \"\"\"\n    The coordinate to move the mouse to\n    \"\"\"\n\n\nclass RemoteBrowserArgumentsUpdate(BaseModel):\n    \"\"\"\n    The arguments for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    connect_url: str | None = None\n    \"\"\"\n    The connection URL for the remote browser\n    \"\"\"\n    action: (\n        Literal[\n            \"key\",\n            \"type\",\n            \"mouse_move\",\n            \"left_click\",\n            \"left_click_drag\",\n            \"right_click\",\n            \"middle_click\",\n            \"double_click\",\n            \"screenshot\",\n            \"cursor_position\",\n            \"navigate\",\n            \"refresh\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The action to perform\n    \"\"\"\n    text: str | None = None\n    \"\"\"\n    The text\n    \"\"\"\n    coordinate: list | None = None\n    \"\"\"\n    The coordinate to move the mouse to\n    \"\"\"\n\n\nclass RemoteBrowserIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    The integration definition for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"remote_browser\"] = \"remote_browser\"\n    setup: RemoteBrowserSetup\n    method: Literal[\"perform_action\"] = \"perform_action\"\n    arguments: RemoteBrowserArguments | None = None\n\n\nclass RemoteBrowserIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    The integration definition for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"remote_browser\"] = \"remote_browser\"\n    setup: RemoteBrowserSetup | None = None\n    method: Literal[\"perform_action\"] = \"perform_action\"\n    arguments: RemoteBrowserArgumentsUpdate | None = None\n\n\nclass RemoteBrowserSetup(BaseModel):\n    \"\"\"\n    The setup parameters for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    connect_url: str | None = None\n    \"\"\"\n    The connection URL for the remote browser\n    \"\"\"\n    width: int | None = None\n    \"\"\"\n    The width of the browser\n    \"\"\"\n    height: int | None = None\n    \"\"\"\n    The height of the browser\n    \"\"\"\n\n\nclass SecretRef(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: str\n    \"\"\"\n    The name of the secret to reference\n    \"\"\"\n\n\nclass SecretRefUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: str | None = None\n    \"\"\"\n    The name of the secret to reference\n    \"\"\"\n\n\nclass SpiderFetchArguments(BaseModel):\n    \"\"\"\n    Arguments for Spider integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: AnyUrl\n    \"\"\"\n    The URL to fetch data from\n    \"\"\"\n    content_type: Literal[\n        \"application/json\", \"text/csv\", \"application/xml\", \"application/jsonl\"\n    ] = \"application/json\"\n    \"\"\"\n    The content type to return\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Additional parameters for the Spider API\n    \"\"\"\n\n\nclass SpiderFetchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Spider integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: AnyUrl | None = None\n    \"\"\"\n    The URL to fetch data from\n    \"\"\"\n    content_type: Literal[\n        \"application/json\", \"text/csv\", \"application/xml\", \"application/jsonl\"\n    ] = \"application/json\"\n    \"\"\"\n    The content type to return\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Additional parameters for the Spider API\n    \"\"\"\n\n\nclass SpiderIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Spider integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"spider\"] = \"spider\"\n    \"\"\"\n    The provider must be \"spider\"\n    \"\"\"\n    method: Literal[\"crawl\", \"links\", \"screenshot\", \"search\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: SpiderSetup | None = None\n    \"\"\"\n    The setup parameters for Spider\n    \"\"\"\n    arguments: SpiderFetchArguments | None = None\n    \"\"\"\n    The arguments for Spider\n    \"\"\"\n\n\nclass SpiderIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Spider integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"spider\"] = \"spider\"\n    \"\"\"\n    The provider must be \"spider\"\n    \"\"\"\n    method: Literal[\"crawl\", \"links\", \"screenshot\", \"search\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: SpiderSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Spider\n    \"\"\"\n    arguments: SpiderFetchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Spider\n    \"\"\"\n\n\nclass SpiderSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Spider integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spider_api_key: str\n    \"\"\"\n    The API key for Spider\n    \"\"\"\n\n\nclass SpiderSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Spider integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spider_api_key: str | None = None\n    \"\"\"\n    The API key for Spider\n    \"\"\"\n\n\nclass SystemDef(BaseModel):\n    \"\"\"\n    System definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    resource: Literal[\"agent\", \"user\", \"task\", \"execution\", \"doc\", \"session\", \"job\"]\n    \"\"\"\n    Resource is the name of the resource to use\n    \"\"\"\n    operation: Literal[\n        \"create\",\n        \"update\",\n        \"patch\",\n        \"create_or_update\",\n        \"embed\",\n        \"change_status\",\n        \"search\",\n        \"chat\",\n        \"history\",\n        \"delete\",\n        \"get\",\n        \"list\",\n    ]\n    \"\"\"\n    Operation is the name of the operation to perform\n    \"\"\"\n    resource_id: UUID | None = None\n    \"\"\"\n    Resource id (if applicable)\n    \"\"\"\n    subresource: Literal[\"tool\", \"doc\", \"execution\", \"transition\"] | None = None\n    \"\"\"\n    Sub-resource type (if applicable)\n    \"\"\"\n    arguments: dict[str, Any] | None = None\n    \"\"\"\n    The arguments to pre-apply to the system call\n    \"\"\"\n\n\nclass SystemDefUpdate(BaseModel):\n    \"\"\"\n    System definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    resource: (\n        Literal[\"agent\", \"user\", \"task\", \"execution\", \"doc\", \"session\", \"job\"] | None\n    ) = None\n    \"\"\"\n    Resource is the name of the resource to use\n    \"\"\"\n    operation: (\n        Literal[\n            \"create\",\n            \"update\",\n            \"patch\",\n            \"create_or_update\",\n            \"embed\",\n            \"change_status\",\n            \"search\",\n            \"chat\",\n            \"history\",\n            \"delete\",\n            \"get\",\n            \"list\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    Operation is the name of the operation to perform\n    \"\"\"\n    resource_id: UUID | None = None\n    \"\"\"\n    Resource id (if applicable)\n    \"\"\"\n    subresource: Literal[\"tool\", \"doc\", \"execution\", \"transition\"] | None = None\n    \"\"\"\n    Sub-resource type (if applicable)\n    \"\"\"\n    arguments: dict[str, Any] | None = None\n    \"\"\"\n    The arguments to pre-apply to the system call\n    \"\"\"\n\n\nclass TextEditor20241022Def(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"text_editor_20241022\"] = \"text_editor_20241022\"\n    name: str = \"str_replace_editor\"\n\n\nclass TextEditor20241022DefUpdate(TextEditor20241022Def):\n    pass\n\n\nclass Tool(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: FunctionDef | None = None\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (\n        DummyIntegrationDef\n        | BraveIntegrationDef\n        | EmailIntegrationDef\n        | SpiderIntegrationDef\n        | WikipediaIntegrationDef\n        | WeatherIntegrationDef\n        | MailgunIntegrationDef\n        | BrowserbaseContextIntegrationDef\n        | BrowserbaseExtensionIntegrationDef\n        | BrowserbaseListSessionsIntegrationDef\n        | BrowserbaseCreateSessionIntegrationDef\n        | BrowserbaseGetSessionIntegrationDef\n        | BrowserbaseCompleteSessionIntegrationDef\n        | BrowserbaseGetSessionLiveUrlsIntegrationDef\n        | RemoteBrowserIntegrationDef\n        | LlamaParseIntegrationDef\n        | FfmpegIntegrationDef\n        | CloudinaryUploadIntegrationDef\n        | CloudinaryEditIntegrationDef\n        | ArxivIntegrationDef\n        | UnstructuredIntegrationDef\n        | AlgoliaIntegrationDef\n        | McpIntegrationDef\n        | GoogleSheetsIntegrationDef\n        | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: SystemDef | None = None\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: ApiCallDef | None = None\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Computer20241022Def | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: TextEditor20241022Def | None = None\n    bash_20241022: Bash20241022Def | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n\n\nclass ToolResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    output: dict[str, Any]\n    \"\"\"\n    The output of the tool\n    \"\"\"\n\n\nclass UnstructuredIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Unstructured integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"unstructured\"] = \"unstructured\"\n    \"\"\"\n    The provider must be \"unstructured\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: UnstructuredSetup | None = None\n    \"\"\"\n    The setup parameters for Unstructured\n    \"\"\"\n    arguments: UnstructuredPartitionArguments | None = None\n    \"\"\"\n    The arguments for Unstructured\n    \"\"\"\n\n\nclass UnstructuredIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Unstructured integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"unstructured\"] = \"unstructured\"\n    \"\"\"\n    The provider must be \"unstructured\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: UnstructuredSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Unstructured\n    \"\"\"\n    arguments: UnstructuredPartitionArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Unstructured\n    \"\"\"\n\n\nclass UnstructuredPartitionArguments(BaseModel):\n    \"\"\"\n    Arguments for Unstructured partition integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    filename: str | None = None\n    \"\"\"\n    File Name. If not provided, a random name will be generated.\n    \"\"\"\n    file: str\n    \"\"\"\n    The base64 string of the file, which can be a single string or a list of strings\n    \"\"\"\n    partition_params: dict[str, Any] | None = None\n    \"\"\"\n    Additional partition parameters\n    \"\"\"\n\n\nclass UnstructuredPartitionArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Unstructured partition integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    filename: str | None = None\n    \"\"\"\n    File Name. If not provided, a random name will be generated.\n    \"\"\"\n    file: str | None = None\n    \"\"\"\n    The base64 string of the file, which can be a single string or a list of strings\n    \"\"\"\n    partition_params: dict[str, Any] | None = None\n    \"\"\"\n    Additional partition parameters\n    \"\"\"\n\n\nclass UnstructuredSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Unstructured integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    unstructured_api_key: str\n    \"\"\"\n    The API key for Unstructured.io\n    \"\"\"\n    server_url: str | None = None\n    \"\"\"\n    Optional server endpoint URL\n    \"\"\"\n    server: str | None = None\n    \"\"\"\n    The server by name to use for all methods\n    \"\"\"\n    url_params: dict[str, Any] | None = None\n    \"\"\"\n    Parameters to optionally template the server URL with\n    \"\"\"\n    retry_config: dict[str, Any] | None = None\n    \"\"\"\n    The retry configuration to use for all supported methods\n    \"\"\"\n    timeout_ms: int | None = None\n    \"\"\"\n    Optional request timeout applied to each operation in milliseconds\n    \"\"\"\n\n\nclass UnstructuredSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Unstructured integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    unstructured_api_key: str | None = None\n    \"\"\"\n    The API key for Unstructured.io\n    \"\"\"\n    server_url: str | None = None\n    \"\"\"\n    Optional server endpoint URL\n    \"\"\"\n    server: str | None = None\n    \"\"\"\n    The server by name to use for all methods\n    \"\"\"\n    url_params: dict[str, Any] | None = None\n    \"\"\"\n    Parameters to optionally template the server URL with\n    \"\"\"\n    retry_config: dict[str, Any] | None = None\n    \"\"\"\n    The retry configuration to use for all supported methods\n    \"\"\"\n    timeout_ms: int | None = None\n    \"\"\"\n    Optional request timeout applied to each operation in milliseconds\n    \"\"\"\n\n\nclass UpdateToolRequest(BaseModel):\n    \"\"\"\n    Payload for updating a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: FunctionDef | None = None\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (\n        DummyIntegrationDef\n        | BraveIntegrationDef\n        | EmailIntegrationDef\n        | SpiderIntegrationDef\n        | WikipediaIntegrationDef\n        | WeatherIntegrationDef\n        | MailgunIntegrationDef\n        | BrowserbaseContextIntegrationDef\n        | BrowserbaseExtensionIntegrationDef\n        | BrowserbaseListSessionsIntegrationDef\n        | BrowserbaseCreateSessionIntegrationDef\n        | BrowserbaseGetSessionIntegrationDef\n        | BrowserbaseCompleteSessionIntegrationDef\n        | BrowserbaseGetSessionLiveUrlsIntegrationDef\n        | RemoteBrowserIntegrationDef\n        | LlamaParseIntegrationDef\n        | FfmpegIntegrationDef\n        | CloudinaryUploadIntegrationDef\n        | CloudinaryEditIntegrationDef\n        | ArxivIntegrationDef\n        | UnstructuredIntegrationDef\n        | AlgoliaIntegrationDef\n        | McpIntegrationDef\n        | GoogleSheetsIntegrationDef\n        | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: SystemDef | None = None\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: ApiCallDef | None = None\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Computer20241022Def | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: TextEditor20241022Def | None = None\n    bash_20241022: Bash20241022Def | None = None\n\n\nclass WeatherGetArguments(BaseModel):\n    \"\"\"\n    Arguments for Weather\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    location: str\n    \"\"\"\n    The location for which to fetch weather data\n    \"\"\"\n\n\nclass WeatherGetArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Weather\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    location: str | None = None\n    \"\"\"\n    The location for which to fetch weather data\n    \"\"\"\n\n\nclass WeatherIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Weather integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"weather\"] = \"weather\"\n    \"\"\"\n    The provider must be \"weather\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: WeatherSetup | None = None\n    \"\"\"\n    The setup parameters for Weather\n    \"\"\"\n    arguments: WeatherGetArguments | None = None\n    \"\"\"\n    The arguments for Weather\n    \"\"\"\n\n\nclass WeatherIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Weather integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"weather\"] = \"weather\"\n    \"\"\"\n    The provider must be \"weather\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: WeatherSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Weather\n    \"\"\"\n    arguments: WeatherGetArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Weather\n    \"\"\"\n\n\nclass WeatherSetup(BaseModel):\n    \"\"\"\n    Integration definition for Weather\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    openweathermap_api_key: str\n    \"\"\"\n    The api key for OpenWeatherMap\n    \"\"\"\n\n\nclass WeatherSetupUpdate(BaseModel):\n    \"\"\"\n    Integration definition for Weather\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    openweathermap_api_key: str | None = None\n    \"\"\"\n    The api key for OpenWeatherMap\n    \"\"\"\n\n\nclass WikipediaIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Wikipedia integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"wikipedia\"] = \"wikipedia\"\n    \"\"\"\n    The provider must be \"wikipedia\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Wikipedia\n    \"\"\"\n    arguments: WikipediaSearchArguments | None = None\n    \"\"\"\n    The arguments for Wikipedia Search\n    \"\"\"\n\n\nclass WikipediaIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Wikipedia integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"wikipedia\"] = \"wikipedia\"\n    \"\"\"\n    The provider must be \"wikipedia\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Wikipedia\n    \"\"\"\n    arguments: WikipediaSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Wikipedia Search\n    \"\"\"\n\n\nclass WikipediaSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Wikipedia Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str\n    \"\"\"\n    The search query string\n    \"\"\"\n    load_max_docs: Annotated[int, Field(ge=1, le=10)] = 2\n    \"\"\"\n    Maximum number of documents to load\n    \"\"\"\n\n\nclass WikipediaSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Wikipedia Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str | None = None\n    \"\"\"\n    The search query string\n    \"\"\"\n    load_max_docs: Annotated[int, Field(ge=1, le=10)] = 2\n    \"\"\"\n    Maximum number of documents to load\n    \"\"\"\n\n\nclass AlgoliaIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Algolia integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"algolia\"] = \"algolia\"\n    \"\"\"\n    The provider must be \"algolia\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: AlgoliaSetup | None = None\n    \"\"\"\n    The setup parameters for Algolia\n    \"\"\"\n    arguments: AlgoliaSearchArguments | None = None\n    \"\"\"\n    The arguments for Algolia\n    \"\"\"\n\n\nclass AlgoliaIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Algolia integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"algolia\"] = \"algolia\"\n    \"\"\"\n    The provider must be \"algolia\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: AlgoliaSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Algolia\n    \"\"\"\n    arguments: AlgoliaSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Algolia\n    \"\"\"\n\n\nclass ArxivIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Arxiv integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"arxiv\"] = \"arxiv\"\n    \"\"\"\n    The provider must be \"arxiv\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Arxiv\n    \"\"\"\n    arguments: ArxivSearchArguments | None = None\n    \"\"\"\n    The arguments for Arxiv Search\n    \"\"\"\n\n\nclass ArxivIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Arxiv integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"arxiv\"] = \"arxiv\"\n    \"\"\"\n    The provider must be \"arxiv\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Arxiv\n    \"\"\"\n    arguments: ArxivSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Arxiv Search\n    \"\"\"\n\n\nclass BaseBrowserbaseIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    The base definition for a browserbase integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"browserbase\"] = \"browserbase\"\n    setup: BrowserbaseSetup | None = None\n    method: (\n        Literal[\n            \"get_live_urls\",\n            \"list_sessions\",\n            \"create_session\",\n            \"get_session\",\n            \"complete_session\",\n            \"get_connect_url\",\n            \"install_extension_from_github\",\n            \"create_context\",\n            \"get_session_downloads\",\n            \"get_logs\",\n            \"get_recordings\",\n        ]\n        | None\n    ) = None\n    arguments: Any | None = None\n\n\nclass BaseBrowserbaseIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    The base definition for a browserbase integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"browserbase\"] = \"browserbase\"\n    setup: BrowserbaseSetupUpdate | None = None\n    method: (\n        Literal[\n            \"get_live_urls\",\n            \"list_sessions\",\n            \"create_session\",\n            \"get_session\",\n            \"complete_session\",\n            \"get_connect_url\",\n            \"install_extension_from_github\",\n            \"create_context\",\n            \"get_session_downloads\",\n            \"get_logs\",\n            \"get_recordings\",\n        ]\n        | None\n    ) = None\n    arguments: Any | None = None\n\n\nclass BaseCloudinaryIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Base Cloudinary integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"cloudinary\"] = \"cloudinary\"\n    setup: CloudinarySetup | None = None\n    method: Literal[\"media_upload\", \"media_edit\"] | None = None\n\n\nclass BaseCloudinaryIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Base Cloudinary integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"cloudinary\"] = \"cloudinary\"\n    setup: CloudinarySetupUpdate | None = None\n    method: Literal[\"media_upload\", \"media_edit\"] | None = None\n\n\nclass BrowserbaseCompleteSessionIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase complete session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"complete_session\"] = \"complete_session\"\n    arguments: BrowserbaseCompleteSessionArguments | None = None\n\n\nclass BrowserbaseCompleteSessionIntegrationDefUpdate(\n    BaseBrowserbaseIntegrationDefUpdate\n):\n    \"\"\"\n    browserbase complete session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"complete_session\"] = \"complete_session\"\n    arguments: BrowserbaseCompleteSessionArgumentsUpdate | None = None\n\n\nclass BrowserbaseContextIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase context provider\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"create_context\"] = \"create_context\"\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseContextArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseContextIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase context provider\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"create_context\"] = \"create_context\"\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseContextArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseCreateSessionIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase create session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"create_session\"] = \"create_session\"\n    arguments: BrowserbaseCreateSessionArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseCreateSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase create session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"create_session\"] = \"create_session\"\n    arguments: BrowserbaseCreateSessionArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseExtensionIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase extension provider\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"install_extension_from_github\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseExtensionArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseExtensionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase extension provider\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"install_extension_from_github\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseExtensionArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseGetSessionIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase get session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"get_session\"] = \"get_session\"\n    arguments: BrowserbaseGetSessionArguments | None = None\n\n\nclass BrowserbaseGetSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase get session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"get_session\"] = \"get_session\"\n    arguments: BrowserbaseGetSessionArgumentsUpdate | None = None\n\n\nclass BrowserbaseGetSessionLiveUrlsIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase get session live urls integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"get_live_urls\"] = \"get_live_urls\"\n    arguments: BrowserbaseGetSessionLiveUrlsArguments | None = None\n\n\nclass BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate(\n    BaseBrowserbaseIntegrationDefUpdate\n):\n    \"\"\"\n    browserbase get session live urls integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"get_live_urls\"] = \"get_live_urls\"\n    arguments: BrowserbaseGetSessionLiveUrlsArgumentsUpdate | None = None\n\n\nclass BrowserbaseListSessionsIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase list sessions integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"list_sessions\"] = \"list_sessions\"\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseListSessionsArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseListSessionsIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase list sessions integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"list_sessions\"] = \"list_sessions\"\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseListSessionsArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass CloudinaryEditIntegrationDef(BaseCloudinaryIntegrationDef):\n    \"\"\"\n    Cloudinary edit integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"media_edit\"] = \"media_edit\"\n    arguments: CloudinaryEditArguments | None = None\n\n\nclass CloudinaryEditIntegrationDefUpdate(BaseCloudinaryIntegrationDefUpdate):\n    \"\"\"\n    Cloudinary edit integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"media_edit\"] = \"media_edit\"\n    arguments: CloudinaryEditArgumentsUpdate | None = None\n\n\nclass CloudinaryUploadIntegrationDef(BaseCloudinaryIntegrationDef):\n    \"\"\"\n    Cloudinary upload integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"media_upload\"] = \"media_upload\"\n    arguments: CloudinaryUploadArguments | None = None\n\n\nclass CloudinaryUploadIntegrationDefUpdate(BaseCloudinaryIntegrationDefUpdate):\n    \"\"\"\n    Cloudinary upload integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"media_upload\"] = \"media_upload\"\n    arguments: CloudinaryUploadArgumentsUpdate | None = None\n\n\nPropertyDefinition.model_rebuild()\nPropertyDefinitionUpdate.model_rebuild()\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/Users.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateUserRequest(BaseModel):\n    \"\"\"\n    Payload for creating a user (and associated documents)\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the user\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the user\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the user\n    \"\"\"\n\n\nclass PatchUserRequest(BaseModel):\n    \"\"\"\n    Payload for patching a user\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the user\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the user\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the user\n    \"\"\"\n\n\nclass UpdateUserRequest(BaseModel):\n    \"\"\"\n    Payload for updating a user\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the user\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the user\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the user\n    \"\"\"\n\n\nclass User(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the user\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the user\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the user\n    \"\"\"\n\n\nclass CreateOrUpdateUserRequest(CreateUserRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/__init__.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n"
  },
  {
    "path": "src/agents-api/agents_api/autogen/openapi_model.py",
    "content": "# ruff: noqa: F401, F403, F405\nimport ast\nfrom typing import Annotated, Any, Generic, Literal, Self, TypeVar, get_args\nfrom uuid import UUID\n\nimport jinja2\nfrom litellm.utils import _select_tokenizer as select_tokenizer\nfrom litellm.utils import token_counter\nfrom pydantic import (\n    AwareDatetime,\n    Field,\n    computed_field,\n    field_validator,\n    model_validator,\n)\n\nfrom ..common.utils.datetime import utcnow\nfrom .Agents import *\nfrom .Chat import *\nfrom .Common import *\nfrom .Docs import *\nfrom .Entries import *\nfrom .Executions import *\nfrom .Files import *\nfrom .Jobs import *\nfrom .Projects import *\nfrom .Responses import *\nfrom .Secrets import *\nfrom .Sessions import *\nfrom .Tasks import *\nfrom .Tools import *\nfrom .Users import *\n\n# Generic models\n# --------------\n\nDataT = TypeVar(\"DataT\", bound=BaseModel)\n\n\nclass ListResponse(BaseModel, Generic[DataT]):\n    items: list[DataT]\n\n\n# Aliases\n# -------\n\n\nclass CreateToolRequest(UpdateToolRequest):\n    pass\n\n\nclass CreateOrUpdateAgentRequest(UpdateAgentRequest):\n    pass\n\n\nclass CreateOrUpdateUserRequest(UpdateUserRequest):\n    pass\n\n\nclass CreateOrUpdateSessionRequest(CreateSessionRequest):\n    pass\n\n\nChatResponse = ChunkChatResponse | MessageChatResponse\n\n\nclass MapReduceStep(Main):\n    pass\n\n\nclass ChatMLTextContentPart(Content):\n    pass\n\n\nclass ChatMLImageContentPart(ContentModel):\n    pass\n\n\nclass InputChatMLMessage(Message):\n    pass\n\n\nIntegrationDef = (\n    BraveIntegrationDef\n    | EmailIntegrationDef\n    | SpiderIntegrationDef\n    | WikipediaIntegrationDef\n    | WeatherIntegrationDef\n)\n\n# Patches\n# -------\n\n\ndef type_property(self: BaseModel) -> str:\n    return (\n        \"function\"\n        if self.function\n        else \"integration\"\n        if self.integration\n        else \"system\"\n        if self.system\n        else \"api_call\"\n        if self.api_call\n        else None\n    )\n\n\n# Patch original Tool class to add 'type' property\nTaskTool.type = computed_field(property(type_property))\n\n# Patch original Tool class to add 'type' property\nTool.type = computed_field(property(type_property))\n\n# Patch original UpdateToolRequest class to add 'type' property\nUpdateToolRequest.type = computed_field(property(type_property))\n\n# Patch original PatchToolRequest class to add 'type' property\nPatchToolRequest.type = computed_field(property(type_property))\n\n\n# Patch Task Workflow Steps\n# -------------------------\n\n\ndef validate_python_expression(expr: str) -> tuple[bool, str]:\n    try:\n        ast.parse(expr)\n        return True, \"\"\n    except SyntaxError as e:\n        return False, f\"SyntaxError in '{expr}': {e!s}\"\n\n\ndef validate_jinja_template(template: str) -> tuple[bool, str]:\n    env = jinja2.Environment()\n    try:\n        parsed_template = env.parse(template)\n        for node in parsed_template.body:\n            if isinstance(node, jinja2.nodes.Output):\n                for child in node.nodes:\n                    if isinstance(child, jinja2.nodes.Name):\n                        # Check if the variable is a valid Python expression\n                        is_valid, error = validate_python_expression(child.name)\n                        if not is_valid:\n                            return (\n                                False,\n                                f\"Invalid Python expression in Jinja template '{template}': {error}\",\n                            )\n        return True, \"\"\n    except jinja2.exceptions.TemplateSyntaxError as e:\n        return False, f\"TemplateSyntaxError in '{template}': {e!s}\"\n\n\n@field_validator(\"evaluate\")\ndef validate_evaluate_expressions(cls, v):\n    for key, expr in v.items():\n        is_valid, error = validate_python_expression(expr)\n        if not is_valid:\n            msg = f\"Invalid Python expression in key '{key}': {error}\"\n            raise ValueError(msg)\n    return v\n\n\nEvaluateStep.validate_evaluate_expressions = validate_evaluate_expressions\n\n\n@field_validator(\"arguments\")\ndef validate_arguments(cls, v):\n    if isinstance(v, dict):\n        for key, expr in v.items():\n            if isinstance(expr, str):\n                is_valid, error = validate_python_expression(expr)\n                if not is_valid:\n                    msg = f\"Invalid Python expression in arguments key '{key}': {error}\"\n                    raise ValueError(msg)\n    return v\n\n\nToolCallStep.validate_arguments = validate_arguments\n\n\n# Add the new validator function\n@field_validator(\"prompt\")\ndef validate_prompt(cls, v):\n    if isinstance(v, str):\n        is_valid, error = validate_jinja_template(v)\n        if not is_valid:\n            msg = f\"Invalid Jinja template in prompt: {error}\"\n            raise ValueError(msg)\n    elif isinstance(v, list):\n        for item in v:\n            if \"content\" in item:\n                is_valid, error = validate_jinja_template(item[\"content\"])\n                if not is_valid:\n                    msg = f\"Invalid Jinja template in prompt content: {error}\"\n                    raise ValueError(msg)\n    return v\n\n\n# Patch the original PromptStep class to add the new validator\nPromptStep.validate_prompt = validate_prompt\n\n\n@field_validator(\"set\")\ndef validate_set_expressions(cls, v):\n    for key, expr in v.items():\n        is_valid, error = validate_python_expression(expr)\n        if not is_valid:\n            msg = f\"Invalid Python expression in set key '{key}': {error}\"\n            raise ValueError(msg)\n    return v\n\n\nSetStep.validate_set_expressions = validate_set_expressions\n\n\n@field_validator(\"log\")\ndef validate_log_template(cls, v):\n    is_valid, error = validate_jinja_template(v)\n    if not is_valid:\n        msg = f\"Invalid Jinja template in log: {error}\"\n        raise ValueError(msg)\n    return v\n\n\nLogStep.validate_log_template = validate_log_template\n\n\n@field_validator(\"return_\")\ndef validate_return_expressions(cls, v):\n    for key, expr in v.items():\n        is_valid, error = validate_python_expression(expr)\n        if not is_valid:\n            msg = f\"Invalid Python expression in return key '{key}': {error}\"\n            raise ValueError(msg)\n    return v\n\n\nReturnStep.validate_return_expressions = validate_return_expressions\n\n\n@field_validator(\"arguments\")\ndef validate_yield_arguments(cls, v):\n    if isinstance(v, dict):\n        for key, expr in v.items():\n            is_valid, error = validate_python_expression(expr)\n            if not is_valid:\n                msg = f\"Invalid Python expression in yield arguments key '{key}': {error}\"\n                raise ValueError(msg)\n    return v\n\n\nYieldStep.validate_yield_arguments = validate_yield_arguments\n\n\n@field_validator(\"if_\")\ndef validate_if_expression(cls, v):\n    is_valid, error = validate_python_expression(v)\n    if not is_valid:\n        msg = f\"Invalid Python expression in if condition: {error}\"\n        raise ValueError(msg)\n    return v\n\n\nIfElseWorkflowStep.validate_if_expression = validate_if_expression\n\n\n@field_validator(\"over\")\ndef validate_over_expression(cls, v):\n    is_valid, error = validate_python_expression(v)\n    if not is_valid:\n        msg = f\"Invalid Python expression in over: {error}\"\n        raise ValueError(msg)\n    return v\n\n\n@field_validator(\"reduce\")\ndef validate_reduce_expression(cls, v):\n    if v is not None:\n        is_valid, error = validate_python_expression(v)\n        if not is_valid:\n            msg = f\"Invalid Python expression in reduce: {error}\"\n            raise ValueError(msg)\n    return v\n\n\nMapReduceStep.validate_over_expression = validate_over_expression\nMapReduceStep.validate_reduce_expression = validate_reduce_expression\n\n\n# Patch workflow\n# --------------\n\n_CreateTaskRequest = CreateTaskRequest\n\nCreateTaskRequest.model_config = ConfigDict(**{\n    **_CreateTaskRequest.model_config,\n    \"extra\": \"allow\",\n})\n\n\n@model_validator(mode=\"after\")\ndef validate_subworkflows(self):\n    subworkflows = {\n        k: v for k, v in self.model_dump().items() if k not in _CreateTaskRequest.model_fields\n    }\n\n    for workflow_name, workflow_definition in subworkflows.items():\n        try:\n            WorkflowType.model_validate(workflow_definition)\n            setattr(self, workflow_name, WorkflowType(workflow_definition))\n        except Exception as e:\n            msg = f\"Invalid subworkflow '{workflow_name}': {e!s}\"\n            raise ValueError(msg)\n    return self\n\n\nCreateTaskRequest.validate_subworkflows = validate_subworkflows\n\n\n# Custom types (not generated correctly)\n# --------------------------------------\n\nChatMLContent = (\n    list[ChatMLTextContentPart | ChatMLImageContentPart]\n    | Tool\n    | BaseChosenToolCall\n    | str\n    | ToolResponse\n    | list[\n        list[ChatMLTextContentPart | ChatMLImageContentPart]\n        | Tool\n        | BaseChosenToolCall\n        | str\n        | ToolResponse\n    ]\n)\n\n# Extract ChatMLRole\nChatMLRole = BaseEntry.model_fields[\"role\"].annotation\n\n# Extract ChatMLSource\nChatMLSource = BaseEntry.model_fields[\"source\"].annotation\n\n# Extract ExecutionStatus\nExecutionStatus = Execution.model_fields[\"status\"].annotation\n\n# Extract TransitionType\nTransitionType = Transition.model_fields[\"type\"].annotation\n\n# Assertions to ensure consistency (optional, but recommended for runtime checks)\nassert ChatMLRole == BaseEntry.model_fields[\"role\"].annotation\nassert ChatMLSource == BaseEntry.model_fields[\"source\"].annotation\nassert ExecutionStatus == Execution.model_fields[\"status\"].annotation\nassert TransitionType == Transition.model_fields[\"type\"].annotation\n\n\n# Create models\n# -------------\n\n\nclass SystemDef(SystemDef):\n    arguments: dict[str, Any] | None = None\n\n\nclass CreateTransitionRequest(Transition):\n    # The following fields are optional in this\n\n    id: UUID | None = None\n    execution_id: UUID | None = None\n    created_at: AwareDatetime | None = None\n    updated_at: AwareDatetime | None = None\n    metadata: dict[str, Any] | None = None\n    task_token: str | None = None\n\n\nclass ToolExecutionResult(BaseModel):\n    \"\"\"Represents the result of executing a tool\"\"\"\n\n    id: str\n    name: str | None = None\n    output: dict[str, Any] | list[Any] | str\n    error: str | None = None\n\n\nclass WebPreviewToolCall(BaseModel):\n    \"\"\"Represents a WebPreviewTool call from the model\"\"\"\n\n    id: str\n    name: str | None = None\n    type: Literal[\"web_search_preview\"] = \"web_search_preview\"\n    query: str = Field(default=\"\")\n\n\nclass CreateEntryRequest(BaseEntry):\n    timestamp: Annotated[AwareDatetime, Field(default_factory=lambda: utcnow())]\n\n    @classmethod\n    def from_model_input(\n        cls: type[Self],\n        model: str,\n        *,\n        role: ChatMLRole,\n        content: ChatMLContent | None = None,\n        name: str | None = None,\n        source: ChatMLSource,\n        **kwargs: dict,\n    ) -> Self:\n        tokenizer: dict = select_tokenizer(model=model)\n        token_count = token_counter(\n            model=model, messages=[{\"role\": role, \"content\": content, \"name\": name}]\n        )\n\n        return cls(\n            role=role,\n            content=content or [],\n            name=name,\n            source=source,\n            tokenizer=tokenizer[\"type\"],\n            token_count=token_count,\n            model=model,\n            **kwargs,\n        )\n\n\n# Workflow related models\n# -----------------------\n\nWorkflowStep = (\n    EvaluateStep\n    | ToolCallStep\n    | PromptStep\n    | GetStep\n    | SetStep\n    | LogStep\n    | ReturnStep\n    | SleepStep\n    | ErrorWorkflowStep\n    | YieldStep\n    | WaitForInputStep\n    | IfElseWorkflowStep\n    | SwitchStep\n    | ForeachStep\n    | ParallelStep\n    | MapReduceStep\n)\n\n\nclass Workflow(BaseModel):\n    name: str\n    steps: list[WorkflowStep]\n\n\n# Task spec helper models\n# ----------------------\n\n\nclass TaskToolDef(BaseModel):\n    type: str\n    name: str\n    spec: dict\n    inherited: bool = False\n\n\n_Task = Task\n\n\nclass TaskSpec(_Task):\n    model_config = ConfigDict(extra=\"ignore\")\n\n    workflows: list[Workflow]\n    tools: list[TaskToolDef]\n\n    # Remove main field from the model\n    main: None = None\n\n\nclass TaskSpecDef(TaskSpec):\n    id: UUID | None = None\n    created_at: AwareDatetime | None = None\n    updated_at: AwareDatetime | None = None\n\n\nclass PartialTaskSpecDef(TaskSpecDef):\n    name: str | None = None\n\n\nclass Task(_Task):\n    model_config = ConfigDict(**{\n        **_Task.model_config,\n        \"extra\": \"allow\",\n    })\n\n\n# Patch some models to allow extra fields\n# --------------------------------------\n\nWorkflowType = RootModel[\n    list[\n        EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | YieldStep\n        | WaitForInputStep\n        | IfElseWorkflowStep\n        | SwitchStep\n        | ForeachStep\n        | ParallelStep\n        | MapReduceStep\n    ]\n]\n\n\nCreateOrUpdateTaskRequest = CreateTaskRequest\n\n_PatchTaskRequest = PatchTaskRequest\n\n\nclass PatchTaskRequest(_PatchTaskRequest):\n    model_config = ConfigDict(**{\n        **_PatchTaskRequest.model_config,\n        \"extra\": \"allow\",\n    })\n\n\n_UpdateTaskRequest = UpdateTaskRequest\n\n\nclass UpdateTaskRequest(_UpdateTaskRequest):\n    model_config = ConfigDict(**{\n        **_UpdateTaskRequest.model_config,\n        \"extra\": \"allow\",\n    })\n\n\nIncludable = Literal[\n    \"file_search_call.results\",\n    \"message.input_image.image_url\",\n    \"computer_call_output.output.image_url\",\n]\n\n\n# Manually implemented ExecutionStatusEvent model. Rationale:\n# ----------------------------------------------------------\n# The Typespec ExecutionStatusEvent model is not generated correctly by\n# the OpenAPI generator, as it is used in the `/executions/{id}/status.stream`\n# SSE endpoint, which is not natively supported by OpenAPI. See:\n# https://www.speakeasy.com/openapi/content/server-sent-events\nclass ExecutionStatusEvent(BaseModel):\n    \"\"\"Represents a status update event for an execution.\"\"\"\n\n    execution_id: UUID\n    status: ExecutionStatus  # type: ignore\n    updated_at: AwareDatetime\n    error: str | None = None\n    transition_count: int | None = None\n    metadata: dict[str, Any]\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/AGENTS.md",
    "content": "# AGENTS.md - clients\n\nThis folder contains API client wrappers for external services used by `agents-api`.\n\nKey Points\n- Implement async HTTP clients using `httpx`.\n- Obtain and refresh auth tokens via `common/utils/auth.py`.\n- Handle HTTP errors with typed exceptions from `common/exceptions`.\n- Write unit tests under `agents-api/tests/`.\n- Configure endpoints and credentials via environment variables.\n\n# Clients\n\n## Purpose\n- Client libraries for external services\n- Abstractions for database, storage, and API integrations\n- Shared connection management\n\n## Key Clients\n\n### pg.py\n- PostgreSQL client using asyncpg\n- Connection pool management\n- Query execution utilities\n\n### temporal.py\n- Temporal workflow service client\n- Workflow execution functions\n- Job management and tracking\n\n### litellm.py\n- LLM provider client abstraction\n- Supports multiple models and providers\n- Handles completion requests and streaming\n\n### async_s3.py and sync_s3.py\n- S3 storage client for object storage\n- Used for storing large payloads\n- Supports both sync and async patterns\n\n### integrations.py\n- Client for integrations service\n- Executes integration tools\n\n## Usage Patterns\n- Clients initialized during application startup\n- Connection pooling for efficiency\n- Error handling and retry logic\n- Async-first approach with proper cleanup\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/__init__.py",
    "content": "\"\"\"\nThe `clients` module contains client classes and functions for interacting with various external services and APIs, abstracting the complexity of HTTP requests and API interactions to provide a simplified interface for the rest of the application.\n\n- `pg.py`: Handles communication with the PostgreSQL service, facilitating operations such as retrieving product information.\n- `temporal.py`: Provides functionality for connecting to Temporal workflows, enabling asynchronous task execution and management.\n- `feature_flags.py`: Provides feature flag management through Unleash integration for controlled feature rollouts.\n\"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/async_s3.py",
    "content": "from beartype import beartype\nfrom temporalio import workflow\n\nwith workflow.unsafe.imports_passed_through():\n    import botocore\n    from aiobotocore.client import AioBaseClient\n    from async_lru import alru_cache\n    from xxhash import xxh3_64_hexdigest as xxhash_key\n\n    from ..env import blob_store_bucket\n\n\n@alru_cache(maxsize=1)\nasync def setup() -> AioBaseClient:\n    from ..app import app\n\n    client: AioBaseClient | None = getattr(app.state, \"s3_client\", None)\n    if client is None:\n        msg = \"S3 client not initialized\"\n        raise RuntimeError(msg)\n\n    try:\n        await client.head_bucket(Bucket=blob_store_bucket)\n    except botocore.exceptions.ClientError as e:\n        if e.response[\"Error\"][\"Code\"] == \"404\":\n            try:\n                await client.create_bucket(Bucket=blob_store_bucket)\n            except botocore.exceptions.ClientError as create_err:\n                if create_err.response[\"Error\"][\"Code\"] != \"BucketAlreadyExists\":\n                    raise create_err\n        else:\n            raise e\n\n    return client\n\n\n@alru_cache(maxsize=1024)\nasync def list_buckets() -> list[str]:\n    client = await setup()\n\n    data = await client.list_buckets()\n    return [bucket[\"Name\"] for bucket in data[\"Buckets\"]]\n\n\n@alru_cache(maxsize=10_000)\nasync def exists(key: str) -> bool:\n    client = await setup()\n\n    try:\n        await client.head_object(Bucket=blob_store_bucket, Key=key)\n        return True\n    except botocore.exceptions.ClientError as e:\n        if e.response[\"Error\"][\"Code\"] == \"404\":\n            return False\n        raise e\n\n\n@beartype\nasync def add_object(key: str, body: bytes, replace: bool = False) -> None:\n    client = await setup()\n\n    if replace:\n        await client.put_object(Bucket=blob_store_bucket, Key=key, Body=body)\n        return\n\n    if await exists(key):\n        return\n\n    await client.put_object(Bucket=blob_store_bucket, Key=key, Body=body)\n\n\n@beartype\nasync def get_object(key: str) -> bytes:\n    client = await setup()\n\n    response = await client.get_object(Bucket=blob_store_bucket, Key=key)\n    return await response[\"Body\"].read()\n\n\n@beartype\nasync def delete_object(key: str) -> None:\n    client = await setup()\n    await client.delete_object(Bucket=blob_store_bucket, Key=key)\n\n\n@beartype\nasync def add_object_with_hash(body: bytes, replace: bool = False) -> str:\n    key = xxhash_key(body)\n    await add_object(key, body, replace=replace)\n\n    return key\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/feature_flags.py",
    "content": "\"\"\"\nFeature flags client for Julep agents-api.\nProvides OpenFeature integration with a custom Unleash provider for vendor independence.\n\"\"\"\n\nimport logging\nimport threading\nfrom typing import TypedDict\n\nfrom openfeature import api\nfrom openfeature.evaluation_context import EvaluationContext\nfrom openfeature.flag_evaluation import FlagResolutionDetails, Reason\nfrom openfeature.provider import AbstractProvider, Metadata\n\nfrom agents_api.env import testing, unleash_api_token, unleash_app_name, unleash_url\n\nlogger = logging.getLogger(__name__)\n\n\nclass FeatureFlagContext(TypedDict, total=False):\n    \"\"\"Type definition for feature flag context.\"\"\"\n\n    developer_id: str\n    environment: str\n\n\nclass UnleashProvider(AbstractProvider):\n    \"\"\"OpenFeature provider for Unleash - maintains vendor independence.\"\"\"\n\n    def __init__(self):\n        self._unleash_client = None\n        self._initialized = False\n\n    def get_metadata(self) -> Metadata:\n        \"\"\"Return provider metadata.\"\"\"\n        return Metadata(name=\"unleash-provider\")\n\n    def _ensure_initialized(self):\n        \"\"\"Ensure the Unleash client is initialized.\"\"\"\n        if not self._initialized:\n            self._initialize_unleash()\n            self._initialized = True\n\n    def _initialize_unleash(self):\n        \"\"\"Initialize the underlying Unleash client.\"\"\"\n        # Skip Unleash initialization in testing mode\n        if testing:\n            logger.info(\"⚠️ Testing mode detected, skipping Unleash initialization\")\n            self._unleash_client = None\n            return\n\n        try:\n            from UnleashClient import UnleashClient\n\n            # Prepare custom headers for authentication\n            custom_headers = {}\n            if unleash_api_token:\n                # Unleash expects the token without \"Bearer\" prefix in custom headers\n                custom_headers[\"Authorization\"] = unleash_api_token\n\n            self._unleash_client = UnleashClient(\n                url=unleash_url, app_name=unleash_app_name, custom_headers=custom_headers\n            )\n\n            # Initialize the client\n            self._unleash_client.initialize_client()\n\n            logger.info(f\"✅ Initialized Unleash client with URL: {unleash_url}\")\n\n        except ImportError:\n            logger.warning(\n                \"⚠️ UnleashClient not available, feature flags will use default values\"\n            )\n            self._unleash_client = None\n        except Exception as e:\n            logger.error(f\"❌ Failed to initialize Unleash client: {e}\")\n            logger.warning(\"⚠️ Feature flags will use default values\")\n            self._unleash_client = None\n\n    def _build_unleash_context(self, evaluation_context: EvaluationContext | None) -> dict:\n        \"\"\"Convert OpenFeature evaluation context to Unleash context.\"\"\"\n        if not evaluation_context:\n            return {}\n\n        unleash_context = {}\n\n        # Map targeting key to userId\n        if evaluation_context.targeting_key:\n            # Convert UUID to string if necessary\n            targeting_key = evaluation_context.targeting_key\n            if hasattr(targeting_key, \"__str__\"):\n                targeting_key = str(targeting_key)\n            unleash_context[\"userId\"] = targeting_key\n\n        # Add all attributes, converting UUIDs to strings\n        if evaluation_context.attributes:\n            for key, value in evaluation_context.attributes.items():\n                # Convert UUID objects to strings for JSON serialization\n                if hasattr(value, \"__str__\") and hasattr(value, \"hex\"):  # UUID-like object\n                    unleash_context[key] = str(value)\n                else:\n                    unleash_context[key] = value\n\n        return unleash_context\n\n    def resolve_boolean_details(\n        self,\n        flag_key: str,\n        default_value: bool,\n        evaluation_context: EvaluationContext | None = None,\n    ) -> FlagResolutionDetails[bool]:\n        \"\"\"Resolve a boolean feature flag.\"\"\"\n        self._ensure_initialized()\n\n        if not self._unleash_client:\n            return FlagResolutionDetails(\n                value=default_value,\n                reason=Reason.ERROR,\n                error_message=\"Unleash client not available\",\n            )\n\n        try:\n            unleash_context = self._build_unleash_context(evaluation_context)\n            result = self._unleash_client.is_enabled(flag_key, unleash_context)\n\n            logger.debug(f\"Feature flag '{flag_key}' evaluated to: {result}\")\n\n            return FlagResolutionDetails(\n                value=result, reason=Reason.TARGETING_MATCH if result else Reason.DEFAULT\n            )\n\n        except Exception as e:\n            logger.error(f\"❌ Error evaluating feature flag '{flag_key}': {e}\")\n            return FlagResolutionDetails(\n                value=default_value, reason=Reason.ERROR, error_message=str(e)\n            )\n\n    def resolve_string_details(\n        self,\n        flag_key: str,\n        default_value: str,\n        evaluation_context: EvaluationContext | None = None,\n    ) -> FlagResolutionDetails[str]:\n        \"\"\"Resolve a string feature flag.\"\"\"\n        self._ensure_initialized()\n\n        if not self._unleash_client:\n            return FlagResolutionDetails(\n                value=default_value,\n                reason=Reason.ERROR,\n                error_message=\"Unleash client not available\",\n            )\n\n        try:\n            self._build_unleash_context(evaluation_context)\n            # Unleash primarily supports boolean flags, so we return default for string flags\n            # In a real implementation, you might use variants or custom logic\n            logger.debug(\n                f\"String feature flag '{flag_key}' returning default value: {default_value}\"\n            )\n\n            return FlagResolutionDetails(value=default_value, reason=Reason.DEFAULT)\n\n        except Exception as e:\n            logger.error(f\"❌ Error evaluating string feature flag '{flag_key}': {e}\")\n            return FlagResolutionDetails(\n                value=default_value, reason=Reason.ERROR, error_message=str(e)\n            )\n\n    def resolve_integer_details(\n        self,\n        flag_key: str,\n        default_value: int,\n        evaluation_context: EvaluationContext | None = None,\n    ) -> FlagResolutionDetails[int]:\n        \"\"\"Resolve an integer feature flag.\"\"\"\n        self._ensure_initialized()\n\n        if not self._unleash_client:\n            return FlagResolutionDetails(\n                value=default_value,\n                reason=Reason.ERROR,\n                error_message=\"Unleash client not available\",\n            )\n\n        try:\n            self._build_unleash_context(evaluation_context)\n            # Unleash primarily supports boolean flags, so we return default for integer flags\n            # In a real implementation, you might use variants or custom logic\n            logger.debug(\n                f\"Integer feature flag '{flag_key}' returning default value: {default_value}\"\n            )\n\n            return FlagResolutionDetails(value=default_value, reason=Reason.DEFAULT)\n\n        except Exception as e:\n            logger.error(f\"❌ Error evaluating integer feature flag '{flag_key}': {e}\")\n            return FlagResolutionDetails(\n                value=default_value, reason=Reason.ERROR, error_message=str(e)\n            )\n\n    def resolve_float_details(\n        self,\n        flag_key: str,\n        default_value: float,\n        evaluation_context: EvaluationContext | None = None,\n    ) -> FlagResolutionDetails[float]:\n        \"\"\"Resolve a float feature flag.\"\"\"\n        self._ensure_initialized()\n\n        if not self._unleash_client:\n            return FlagResolutionDetails(\n                value=default_value,\n                reason=Reason.ERROR,\n                error_message=\"Unleash client not available\",\n            )\n\n        try:\n            self._build_unleash_context(evaluation_context)\n            # Unleash primarily supports boolean flags, so we return default for float flags\n            # In a real implementation, you might use variants or custom logic\n            logger.debug(\n                f\"Float feature flag '{flag_key}' returning default value: {default_value}\"\n            )\n\n            return FlagResolutionDetails(value=default_value, reason=Reason.DEFAULT)\n\n        except Exception as e:\n            logger.error(f\"❌ Error evaluating float feature flag '{flag_key}': {e}\")\n            return FlagResolutionDetails(\n                value=default_value, reason=Reason.ERROR, error_message=str(e)\n            )\n\n    def resolve_object_details(\n        self,\n        flag_key: str,\n        default_value: dict | list,\n        evaluation_context: EvaluationContext | None = None,\n    ) -> FlagResolutionDetails[dict | list]:\n        \"\"\"Resolve an object feature flag.\"\"\"\n        self._ensure_initialized()\n\n        if not self._unleash_client:\n            return FlagResolutionDetails(\n                value=default_value,\n                reason=Reason.ERROR,\n                error_message=\"Unleash client not available\",\n            )\n\n        try:\n            self._build_unleash_context(evaluation_context)\n            # Unleash primarily supports boolean flags, so we return default for object flags\n            # In a real implementation, you might use variants or custom logic\n            logger.debug(\n                f\"Object feature flag '{flag_key}' returning default value: {default_value}\"\n            )\n\n            return FlagResolutionDetails(value=default_value, reason=Reason.DEFAULT)\n\n        except Exception as e:\n            logger.error(f\"❌ Error evaluating object feature flag '{flag_key}': {e}\")\n            return FlagResolutionDetails(\n                value=default_value, reason=Reason.ERROR, error_message=str(e)\n            )\n\n\nclass FeatureFlagClient:\n    \"\"\"Feature flag client wrapper for OpenFeature with Unleash provider.\"\"\"\n\n    _instance = None\n    _lock = threading.Lock()\n\n    def __new__(cls):\n        if not cls._instance:\n            with cls._lock:\n                if not cls._instance:\n                    cls._instance = super().__new__(cls)\n        return cls._instance\n\n    def __init__(self):\n        if not hasattr(self, \"_client_initialized\"):\n            self._client = None\n            self._provider_initialized = False\n            self._client_initialized = True\n\n    def _ensure_initialized(self):\n        \"\"\"Ensure the OpenFeature client is initialized.\"\"\"\n        if not self._provider_initialized:\n            self._initialize_provider()\n            self._client = api.get_client(\"agents-api\")\n            self._provider_initialized = True\n\n    def _initialize_provider(self):\n        \"\"\"Initialize the OpenFeature provider.\"\"\"\n        try:\n            provider = UnleashProvider()\n            api.set_provider(provider)\n\n            if not testing:\n                logger.info(\"✅ Initialized OpenFeature with Unleash provider\")\n\n        except Exception as e:\n            logger.error(f\"❌ Failed to initialize OpenFeature provider: {e}\")\n            logger.warning(\"⚠️ Falling back to no-op provider\")\n            from openfeature.provider.no_op_provider import NoOpProvider\n\n            api.set_provider(NoOpProvider())\n\n    def is_enabled(\n        self,\n        flag_name: str,\n        default_value: bool | None = None,\n        context: FeatureFlagContext | None = None,\n    ) -> bool:\n        \"\"\"\n        Check if a feature flag is enabled.\n\n        Args:\n            flag_name: Name of the feature flag\n            default_value: Default value if flag evaluation fails (uses DEFAULT_FLAGS if None)\n            context: Evaluation context (developer_id, environment, etc.)\n\n        Returns:\n            Boolean indicating if the feature is enabled\n        \"\"\"\n\n        self._ensure_initialized()\n\n        try:\n            evaluation_context = None\n            if context:\n                evaluation_context = EvaluationContext(\n                    targeting_key=context.get(\"developer_id\"), attributes=context\n                )\n\n            if self._client is None:\n                return default_value if default_value is not None else False\n\n            result = self._client.get_boolean_value(\n                flag_key=flag_name,\n                default_value=default_value if default_value is not None else False,\n                evaluation_context=evaluation_context,\n            )\n\n            logger.debug(f\"Feature flag '{flag_name}' evaluated to: {result}\")\n            return result\n\n        except Exception as e:\n            logger.error(f\"❌ Error evaluating feature flag '{flag_name}': {e}\")\n            return default_value if default_value is not None else False\n\n\n# Global feature flag client instance\ndef get_feature_flag_client() -> FeatureFlagClient:\n    \"\"\"Get the global feature flag client instance.\"\"\"\n    return FeatureFlagClient()\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/integrations.py",
    "content": "from typing import Any\n\nfrom beartype import beartype\nfrom httpx import AsyncClient\n\nfrom ..env import integration_service_url\n\n__all__: list[str] = [\"run_integration_service\"]\n\n\n@beartype\nasync def run_integration_service(\n    *,\n    provider: str,\n    arguments: dict,\n    setup: dict | None = None,\n    method: str | None = None,\n) -> Any:\n    slug = f\"{provider}/{method}\" if method else provider\n    url = f\"{integration_service_url}/execute/{slug}\"\n\n    setup = setup or None\n\n    async with AsyncClient(timeout=600) as client:\n        response = await client.post(\n            url,\n            json={\"arguments\": arguments, \"setup\": setup},\n        )\n        response.raise_for_status()\n\n        return response.json()\n\n\n@beartype\nasync def convert_to_openai_tool(\n    *,\n    provider: str,\n    method: str | None = None,\n) -> Any:\n    slug = f\"{provider}/{method}\" if method else provider\n    url = f\"{integration_service_url}/integrations/{slug}/tool\"\n\n    async with AsyncClient(timeout=600) as client:\n        response = await client.get(\n            url,\n        )\n        response.raise_for_status()\n\n        return response.json()\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/litellm.py",
    "content": "import contextlib\nfrom functools import wraps\nfrom typing import Literal\nfrom uuid import UUID\n\nimport aiohttp\nfrom beartype import beartype\nfrom litellm import acompletion as _acompletion\nfrom litellm import aembedding as _aembedding\nfrom litellm import get_supported_openai_params\nfrom litellm.utils import CustomStreamWrapper, ModelResponse, get_valid_models\n\nfrom ..common.exceptions.secrets import (\n    SecretNotFoundError,  # AIDEV-NOTE: catch missing secrets in LLM client\n)\nfrom ..common.utils.llm_providers import (\n    get_api_key_env_var_name,\n    get_litellm_model_name,\n    tools_free_models,\n)\nfrom ..common.utils.secrets import get_secret_by_name\nfrom ..common.utils.usage import track_embedding_usage, track_usage\nfrom ..env import (\n    embedding_dimensions,\n    embedding_model_id,\n    enable_responses,\n    litellm_master_key,\n    litellm_url,\n)\n\n__all__: list[str] = [\"acompletion\"]\n\n\ndef patch_litellm_response(\n    model_response: ModelResponse | CustomStreamWrapper,\n) -> ModelResponse | CustomStreamWrapper:\n    \"\"\"\n    Patches the response we get from litellm to handle unexpected response formats.\n    \"\"\"\n\n    if isinstance(model_response, ModelResponse):\n        for choice in model_response.choices:\n            if choice.finish_reason == \"eos\":\n                choice.finish_reason = \"stop\"\n\n    elif (\n        isinstance(model_response, CustomStreamWrapper)\n        and model_response.received_finish_reason == \"eos\"\n    ):\n        model_response.received_finish_reason = \"stop\"\n\n    return model_response\n\n\n@wraps(_acompletion)\n@beartype\nasync def acompletion(\n    *,\n    model: str,\n    messages: list[dict],\n    custom_api_key: str | None = None,\n    **kwargs,\n) -> ModelResponse | CustomStreamWrapper:\n    api_user = kwargs.get(\"user\")\n\n    # Check if user has a custom API key in secrets\n    api_key_env_var_name = get_api_key_env_var_name(model)\n    secret = None\n\n    if api_user is not None and api_key_env_var_name:\n        developer_id: UUID = UUID(api_user)\n\n        with contextlib.suppress(SecretNotFoundError):\n            secret = await get_secret_by_name(\n                developer_id=developer_id,\n                name=api_key_env_var_name,\n                decrypt=True,\n            )\n\n    # Determine if we have a custom API key (either provided or from secrets)\n    has_custom_key = custom_api_key or (secret and secret.value)\n\n    if has_custom_key:\n        # User has their own API key - convert model name and use direct provider\n        if not custom_api_key and secret:\n            custom_api_key = secret.value\n        model = get_litellm_model_name(model)\n    else:\n        # No custom key - use our proxy with openai/ prefix\n        model = f\"openai/{model}\"\n\n    supported_params: list[str] = (\n        get_supported_openai_params(model) or []\n    )  # Supported params returns Optional[list[str]]\n    supported_params += [\"user\", \"mock_response\", \"stream_options\"]\n    settings = {k: v for k, v in kwargs.items() if k in supported_params}\n\n    # NOTE: This is a fix for Mistral API, which expects a different message format\n    if model[7:].startswith(\"mistral\"):\n        messages = [\n            {\"role\": message[\"role\"], \"content\": message[\"content\"]} for message in messages\n        ]\n\n    for message in messages:\n        if \"tool_calls\" in message and message[\"tool_calls\"] == []:\n            message.pop(\"tool_calls\")\n    if model in tools_free_models:\n        settings.pop(\"tools\", None)\n        kwargs.pop(\"tools\", None)\n\n    model_response = await _acompletion(\n        model=model,\n        messages=messages,\n        **settings,\n        base_url=None if has_custom_key else litellm_url,\n        api_key=custom_api_key or litellm_master_key,\n    )\n\n    response = patch_litellm_response(model_response)\n\n    # Track usage in database if we have a user ID (which should be the developer ID)\n    user = settings.get(\"user\")\n    if user and isinstance(response, ModelResponse):\n        try:\n            model = response.model\n            await track_usage(\n                developer_id=UUID(user),\n                model=model,\n                messages=messages,\n                response=response,\n                custom_api_used=custom_api_key is not None,\n                metadata={\"tags\": kwargs.get(\"tags\", [])},\n            )\n        except Exception as e:\n            # Log error but don't fail the request if usage tracking fails\n            print(f\"Error tracking usage: {e}\")\n\n    return response\n\n\n@wraps(_aembedding)\n@beartype\nasync def aembedding(\n    *,\n    inputs: str | list[str],\n    model: str = embedding_model_id,\n    embed_instruction: str | None = None,\n    dimensions: int = embedding_dimensions,\n    join_inputs: bool = False,\n    custom_api_key: str | None = None,\n    **settings,\n) -> list[list[float]]:\n    # Check if user has a custom API key in secrets\n    api_user = settings.get(\"user\")\n    api_key_env_var_name = get_api_key_env_var_name(model)\n    secret = None\n\n    if api_user is not None and api_key_env_var_name:\n        developer_id: UUID = UUID(api_user)\n\n        with contextlib.suppress(SecretNotFoundError):\n            secret = await get_secret_by_name(\n                developer_id=developer_id,\n                name=api_key_env_var_name,\n                decrypt=True,\n            )\n\n    # Determine if we have a custom API key (either provided or from secrets)\n    has_custom_key = custom_api_key or (secret and secret.value)\n\n    if has_custom_key:\n        # User has their own API key - convert model name and use direct provider\n        if not custom_api_key and secret:\n            custom_api_key = secret.value\n        model = get_litellm_model_name(model)\n    else:\n        # No custom key - use our proxy with openai/ prefix\n        model = f\"openai/{model}\"\n\n    input = (\n        [inputs]\n        if isinstance(inputs, str)\n        else [\"\\n\\n\".join(inputs)]\n        if join_inputs\n        else inputs\n    )\n\n    if embed_instruction:\n        input = [embed_instruction, *input]\n\n    response = await _aembedding(\n        model=model,\n        input=input,\n        api_base=None if has_custom_key else litellm_url,\n        api_key=custom_api_key or litellm_master_key,\n        drop_params=True,\n        **settings,\n    )\n\n    # Track embedding usage if we have a user ID\n    user = settings.get(\"user\")\n    if user:\n        try:\n            model = response.model\n            await track_embedding_usage(\n                developer_id=UUID(user),\n                model=model,\n                inputs=input,\n                response=response,\n                custom_api_used=bool(custom_api_key),\n                metadata={\n                    \"request_id\": response.id if hasattr(response, \"id\") else None,\n                    \"embedding_count\": len(input),\n                    \"tags\": settings.get(\"tags\", []),\n                },\n            )\n        except Exception as e:\n            # Log error but don't fail the request if usage tracking fails\n            print(f\"Error tracking embedding usage: {e}\")\n\n    embedding_list: list[dict[Literal[\"embedding\"], list[float]]] = response.data\n\n    # Truncate the embedding to the specified dimensions\n    return [\n        item[\"embedding\"][:dimensions]\n        for item in embedding_list\n        if len(item[\"embedding\"]) >= dimensions\n    ]\n\n\n@beartype\nasync def get_model_list(*, custom_api_key: str | None = None) -> list[dict]:\n    \"\"\"\n    Fetches the list of available models from the LiteLLM server.\n\n    Returns:\n        list[dict]: A list of model information dictionaries\n    \"\"\"\n\n    if enable_responses:\n        ret = get_valid_models()\n        return [{\"id\": model_name} for model_name in ret]\n\n    headers = {\"accept\": \"application/json\", \"x-api-key\": custom_api_key or litellm_master_key}\n\n    async with (\n        aiohttp.ClientSession() as session,\n        session.get(\n            url=f\"{litellm_url}/models\" if not custom_api_key else \"/models\",\n            headers=headers,\n        ) as response,\n    ):\n        response.raise_for_status()\n        data = await response.json()\n        return data[\"data\"]\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/pg.py",
    "content": "import json\n\nimport asyncpg\n\nfrom ..env import pg_dsn\n\n\nasync def _init_conn(conn) -> None:\n    for datatype in [\"json\", \"jsonb\"]:\n        await conn.set_type_codec(\n            datatype,\n            encoder=json.dumps,\n            decoder=json.loads,\n            schema=\"pg_catalog\",\n        )\n\n\nasync def create_db_pool(dsn: str | None = None, **kwargs):\n    return await asyncpg.create_pool(\n        dsn if dsn is not None else pg_dsn,\n        init=_init_conn,\n        **kwargs,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/sync_s3.py",
    "content": "import os\nfrom functools import lru_cache\n\nfrom beartype import beartype\nfrom temporalio import workflow\n\nwith workflow.unsafe.imports_passed_through():\n    import botocore\n    from xxhash import xxh3_64_hexdigest as xxhash_key\n\n    from ..env import blob_store_bucket\n\n\n@lru_cache(maxsize=1)\ndef setup():\n    # INIT S3 #\n    s3_access_key = os.environ.get(\"S3_ACCESS_KEY\")\n    s3_secret_key = os.environ.get(\"S3_SECRET_KEY\")\n    s3_endpoint = os.environ.get(\"S3_ENDPOINT\")\n\n    session = botocore.session.Session()\n    client = session.create_client(\n        \"s3\",\n        endpoint_url=s3_endpoint,\n        aws_access_key_id=s3_access_key,\n        aws_secret_access_key=s3_secret_key,\n        config=botocore.config.Config(signature_version=\"s3v4\", retries={\"max_attempts\": 3}),\n    )\n\n    try:\n        client.head_bucket(Bucket=blob_store_bucket)\n    except botocore.exceptions.ClientError as e:\n        if e.response[\"Error\"][\"Code\"] == \"404\":\n            try:\n                client.create_bucket(Bucket=blob_store_bucket)\n            except botocore.exceptions.ClientError as create_err:\n                if create_err.response[\"Error\"][\"Code\"] != \"BucketAlreadyExists\":\n                    raise create_err\n        else:\n            raise e\n\n    return client\n\n\n@lru_cache(maxsize=1024)\ndef list_buckets() -> list[str]:\n    client = setup()\n\n    data = client.list_buckets()\n    return [bucket[\"Name\"] for bucket in data[\"Buckets\"]]\n\n\n@lru_cache(maxsize=10_000)\ndef exists(key: str) -> bool:\n    client = setup()\n\n    try:\n        client.head_object(Bucket=blob_store_bucket, Key=key)\n        return True\n    except botocore.exceptions.ClientError as e:\n        if e.response[\"Error\"][\"Code\"] == \"404\":\n            return False\n        raise e\n\n\n@beartype\ndef add_object(key: str, body: bytes, replace: bool = False) -> None:\n    client = setup()\n\n    if replace:\n        client.put_object(Bucket=blob_store_bucket, Key=key, Body=body)\n        return\n\n    if exists(key):\n        return\n\n    client.put_object(Bucket=blob_store_bucket, Key=key, Body=body)\n\n\n@beartype\ndef get_object(key: str) -> bytes:\n    client = setup()\n\n    response = client.get_object(Bucket=blob_store_bucket, Key=key)\n    return response[\"Body\"].read()\n\n\n@beartype\ndef delete_object(key: str) -> None:\n    client = setup()\n    client.delete_object(Bucket=blob_store_bucket, Key=key)\n\n\n@beartype\ndef add_object_with_hash(body: bytes, replace: bool = False) -> str:\n    key = xxhash_key(body)\n    add_object(key, body, replace=replace)\n\n    return key\n"
  },
  {
    "path": "src/agents-api/agents_api/clients/temporal.py",
    "content": "from datetime import timedelta\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom temporalio.client import Client, TLSConfig\nfrom temporalio.common import (\n    SearchAttributeKey,\n    SearchAttributePair,\n    TypedSearchAttributes,\n)\nfrom temporalio.contrib.opentelemetry import TracingInterceptor\nfrom temporalio.runtime import PrometheusConfig, Runtime, TelemetryConfig\nfrom uuid_extensions import uuid7\n\nfrom ..autogen.openapi_model import TransitionTarget\nfrom ..common.interceptors import CustomClientInterceptor, offload_if_large\nfrom ..common.protocol.tasks import ExecutionInput\nfrom ..common.retry_policies import DEFAULT_RETRY_POLICY\nfrom ..env import (\n    temporal_api_key,\n    temporal_client_cert,\n    temporal_metrics_bind_host,\n    temporal_metrics_bind_port,\n    temporal_namespace,\n    temporal_private_key,\n    temporal_search_attribute_key,\n    temporal_task_queue,\n    temporal_worker_url,\n)\nfrom ..worker.codec import pydantic_data_converter\n\n\nasync def get_client(\n    worker_url: str = temporal_worker_url,\n    namespace: str = temporal_namespace,\n    data_converter=pydantic_data_converter,\n):\n    tls_config = False\n    rpc_metadata = {}\n\n    if temporal_private_key and temporal_client_cert:\n        tls_config = TLSConfig(\n            client_cert=temporal_client_cert.encode(),\n            client_private_key=temporal_private_key.encode(),\n        )\n    elif temporal_api_key:\n        tls_config = True\n        rpc_metadata = {\"temporal-namespace\": namespace}\n\n    return await Client.connect(\n        worker_url,\n        namespace=namespace,\n        tls=tls_config,\n        interceptors=[CustomClientInterceptor()],\n        data_converter=data_converter,\n        api_key=temporal_api_key or None,\n        rpc_metadata=rpc_metadata,\n    )\n\n\nasync def get_client_with_metrics(\n    worker_url: str = temporal_worker_url,\n    namespace: str = temporal_namespace,\n    data_converter=pydantic_data_converter,\n):\n    tls_config = False\n    rpc_metadata = {}\n\n    if temporal_private_key and temporal_client_cert:\n        tls_config = TLSConfig(\n            client_cert=temporal_client_cert.encode(),\n            client_private_key=temporal_private_key.encode(),\n        )\n    elif temporal_api_key:\n        tls_config = True\n        rpc_metadata = {\"temporal-namespace\": namespace}\n\n    new_runtime = Runtime(\n        telemetry=TelemetryConfig(\n            metrics=PrometheusConfig(\n                bind_address=f\"{temporal_metrics_bind_host}:{temporal_metrics_bind_port}\",\n            ),\n        ),\n    )\n\n    return await Client.connect(\n        worker_url,\n        namespace=namespace,\n        tls=tls_config,\n        data_converter=data_converter,\n        runtime=new_runtime,\n        interceptors=[TracingInterceptor()],\n        api_key=temporal_api_key or None,\n        rpc_metadata=rpc_metadata,\n    )\n\n\n@beartype\nasync def run_task_execution_workflow(\n    *,\n    execution_input: ExecutionInput,\n    job_id: UUID,\n    start: TransitionTarget | None = None,\n    current_input: dict | None = None,\n    client: Client | None = None,\n):\n    from ..workflows.task_execution import TaskExecutionWorkflow\n\n    if execution_input.execution is None:\n        msg = \"execution_input.execution cannot be None\"\n        raise ValueError(msg)\n\n    start: TransitionTarget = start or TransitionTarget(\n        workflow=\"main\",\n        step=0,\n        scope_id=uuid7(),\n    )\n\n    client = client or (await get_client())\n    execution_id = execution_input.execution.id\n    execution_id_key = SearchAttributeKey.for_keyword(temporal_search_attribute_key)\n\n    old_args = execution_input.arguments\n    execution_input.arguments = offload_if_large(old_args)\n\n    current_input: dict = current_input or execution_input.arguments\n\n    return await client.start_workflow(\n        TaskExecutionWorkflow.run,\n        args=[execution_input, start, current_input],\n        task_queue=temporal_task_queue,\n        id=str(job_id),\n        run_timeout=timedelta(days=31),\n        retry_policy=DEFAULT_RETRY_POLICY,\n        search_attributes=TypedSearchAttributes([\n            SearchAttributePair(execution_id_key, str(execution_id)),\n        ]),\n    )\n\n\nasync def get_workflow_handle(\n    *,\n    handle_id: str,\n    client: Client | None = None,\n):\n    client = client or (await get_client())\n\n    return client.get_workflow_handle(\n        handle_id,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/common/AGENTS.md",
    "content": "# AGENTS.md - common\n\nThis folder contains shared utilities, protocol definitions, and exceptions for `agents-api`.\n\nKey Points\n- Exceptions defined in `exceptions/`; always use typed exception classes.\n- Pydantic models in `protocol/` for request/response schemas.\n- Utilities in `utils/` leverage context managers for resource handling.\n- Use `AIDEV-NOTE:` anchors in complex utilities to aid future AI/developer context.\n- Follow root coding standards for formatting and naming.\n\n## Purpose\n- Shared utilities, protocols, and type definitions\n- Cross-cutting concerns like error handling\n- Data models and protocols for system communication\n\n## Key Components\n\n### protocol/\n- Data models for inter-component communication\n- `models.py`: Core data transformations (task_to_spec, spec_to_task)\n- `tasks.py`: Task execution state machine and transition logic\n- `state_machine.py`: Definition of valid state transitions\n\n### utils/\n- `task_validation.py`: Validates Python expressions in tasks\n- `workflows.py`: Helper functions for workflow handling\n- `messages.py`: Message processing utilities\n- `mmr.py`: Maximum Marginal Relevance for document search\n\n### exceptions/\n- Typed exceptions for different resource types\n- HTTP-friendly error structures with status codes\n\n## Important Functions\n- `task_to_spec`: Converts API task model to execution spec\n  - Handles workflow steps, tools, and configuration\n  - Crucial transformation for task execution\n  - Converts step types (e.g., \"if\" → \"if_else\" with alias)\n  \n- `validate_py_expression`: Static validation for expressions\n  - Checks syntax, undefined names, unsafe operations\n  - Used before task execution to catch errors early\n\n## State Machine\n- Defined in `tasks.py` with valid transition mappings\n- Execution progresses through states: queued → starting → running → succeeded/failed\n- Transitions trigger API state updates and execution logging\n"
  },
  {
    "path": "src/agents-api/agents_api/common/__init__.py",
    "content": ""
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/__init__.py",
    "content": "\"\"\"\nThis module defines a structured hierarchy of custom exceptions for the agents API, aimed at handling specific error scenarios encountered across various operations.\nThese exceptions are designed to provide clear, actionable error messages and appropriate HTTP status codes, enhancing the API's robustness and usability.\n\nExceptions are organized into categories based on the domain of operation, including:\n- Agent-related operations (agents.py): Exceptions such as `AgentNotFoundError` and `AgentToolNotFoundError` cater to errors specific to agent management.\n- Session management (sessions.py): Defines exceptions like `SessionNotFoundError` for handling errors related to session operations.\n- User interactions (users.py): Includes exceptions such as `UserNotFoundError` for addressing issues encountered during user-related operations.\n\nAll custom exceptions extend from `BaseCommonException`, which encapsulates common attributes and behavior, including the error message and HTTP status code.\nThis structured approach to exception handling facilitates precise and meaningful error feedback to API consumers, thereby improving the overall developer experience.\n\"\"\"\n\n\nclass BaseCommonException(Exception):\n    def __init__(self, msg: str, http_code: int) -> None:\n        super().__init__(msg)\n        self.http_code = http_code\n"
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/agents.py",
    "content": "# AIDEV-NOTE: This module defines custom exceptions specifically for agent-related operations.\n\"\"\"Defines custom exceptions for agent-related operations in the agents API.\"\"\"\n\nfrom uuid import UUID\n\nfrom . import BaseCommonException\n\n\n# AIDEV-NOTE: Base exception class for all agent-related exceptions, inheriting from BaseCommonException.\nclass BaseAgentException(BaseCommonException):\n    \"\"\"Base exception class for all agent-related exceptions.\"\"\"\n\n\n# AIDEV-NOTE: Exception raised when a requested agent cannot be found.\nclass AgentNotFoundError(BaseAgentException):\n    \"\"\"\n    Exception raised when a requested agent cannot be found.\n    Attributes:\n        developer_id (UUID | str): The ID of the developer attempting the operation.\n        agent_id (UUID | str): The ID of the agent that was not found.\n    \"\"\"\n\n    def __init__(self, developer_id: UUID | str, agent_id: UUID | str) -> None:\n        # Initialize the exception with a message indicating the missing agent and developer ID.\n        super().__init__(\n            f\"Agent {agent_id!s} not found for developer {developer_id!s}\",\n            http_code=404,\n        )\n\n\n# AIDEV-NOTE: Exception raised when a requested tool associated with an agent cannot be found.\nclass AgentToolNotFoundError(BaseAgentException):\n    \"\"\"\n    Exception raised when a requested tool associated with an agent cannot be found.\n    Attributes:\n        agent_id (UUID | str): The ID of the agent that was not found.\n        tool_id (UUID | str): The ID of the tool that was not found.\n    \"\"\"\n\n    def __init__(self, agent_id: UUID | str, tool_id: UUID | str) -> None:\n        # Initialize the exception with a message indicating the missing tool and agent ID.\n        super().__init__(f\"Tool {tool_id!s} not found for agent {agent_id!s}\", http_code=404)\n\n\n# AIDEV-NOTE: Exception raised when a requested document associated with an agent cannot be found.\nclass AgentDocNotFoundError(BaseAgentException):\n    \"\"\"\n    Exception raised when a requested document associated with an agent cannot be found.\n    Attributes:\n        agent_id (UUID | str): The ID of the agent that was not found.\n        doc_id (UUID | str): The ID of the document that was not found.\n    \"\"\"\n\n    def __init__(self, agent_id: UUID | str, doc_id: UUID | str) -> None:\n        # Initialize the exception with a message indicating the missing document and agent ID.\n        super().__init__(f\"Doc {doc_id!s} not found for agent {agent_id!s}\", http_code=404)\n\n\n# AIDEV-NOTE: Exception raised when a requested agent model is not recognized or valid.\nclass AgentModelNotValid(BaseAgentException):\n    \"\"\"Exception raised when requested model is not recognized.\"\"\"\n\n    def __init__(self, model: str, all_models: list[str]) -> None:\n        super().__init__(\n            f\"Unknown model: {model}. Please provide a valid model name.\"\n            \"Available models: \" + \", \".join(all_models),\n            http_code=400,\n        )\n\n\n# AIDEV-NOTE: Exception raised when the API key for a requested model is missing in the configuration.\nclass MissingAgentModelAPIKeyError(BaseAgentException):\n    \"\"\"Exception raised when API key for requested model is missing.\"\"\"\n\n    def __init__(self, model: str) -> None:\n        super().__init__(\n            f\"API key missing for model: {model}. Please provide a valid API key in the configuration\",\n            http_code=400,\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/executions.py",
    "content": "# AIDEV-NOTE: This module defines custom exceptions specifically for task execution operations.\nfrom simpleeval import NameNotDefined\nfrom thefuzz import fuzz\n\n\n# AIDEV-NOTE: Exception raised during the evaluation of Python expressions within a task step.\n# Provides suggestions for common errors like Jinja templating syntax or misspelled variable names.\nclass EvaluateError(Exception):\n    def __init__(self, error, expression, values) -> None:\n        error_message = error.message if hasattr(error, \"message\") else str(error)\n        message = error_message\n\n        # Catch a possible jinja template error\n        if \"unhashable\" in error_message and \"{{\" in expression:\n            message += \"\\nSuggestion: It seems like you used a jinja template, did you mean to use a python expression?\"\n\n        # Catch a possible misspell in a variable name\n        if isinstance(error, NameNotDefined):\n            misspelledName = error_message.split(\"'\")[1]\n            for variableName in values:\n                if fuzz.ratio(variableName, misspelledName) >= 90.0:\n                    message += f\"\\nDid you mean '{variableName}' instead of '{misspelledName}'?\"\n        super().__init__(message)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/secrets.py",
    "content": "\"\"\"Custom exceptions for secrets management.\"\"\"\n\nfrom uuid import UUID\n\nfrom . import BaseCommonException\n\n\nclass SecretNotFoundError(BaseCommonException):\n    \"\"\"Exception raised when a requested secret cannot be found.\"\"\"\n\n    def __init__(self, developer_id: UUID | str, name: str) -> None:\n        super().__init__(\n            f\"Secret {name!s} not found for developer {developer_id!s}\", http_code=404\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/sessions.py",
    "content": "# AIDEV-NOTE: This module defines custom exceptions specifically for session-related operations.\n\"\"\"\nDefines session-related exceptions for the agents API.\n\nThese exceptions are used throughout the agents API to handle errors related to session operations, such as when a requested session cannot be found.\n\"\"\"\n\nfrom uuid import UUID\n\nfrom . import BaseCommonException\n\n\n# AIDEV-NOTE: Base exception class for all session-related exceptions, inheriting from BaseCommonException.\nclass BaseSessionException(BaseCommonException):\n    \"\"\"\n    Base exception class for session-related errors.\n\n    This class serves as a base for all session-related exceptions, allowing for a structured exception handling approach specific to session operations.\n    \"\"\"\n\n\n# AIDEV-NOTE: Exception raised when a requested session cannot be found.\nclass SessionNotFoundError(BaseSessionException):\n    \"\"\"\n    Exception raised when a session cannot be found.\n\n    This exception is used to indicate that a specific session, identified by its session ID, does not exist or is not accessible for the given developer.\n\n    Attributes:\n        developer_id (UUID | str): The unique identifier of the developer attempting to access the session.\n        session_id (UUID | str): The unique identifier of the session that was not found.\n    \"\"\"\n\n    def __init__(self, developer_id: UUID | str, session_id: UUID | str) -> None:\n        super().__init__(\n            f\"Session {session_id!s} not found for developer {developer_id!s}\",\n            http_code=404,\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/tasks.py",
    "content": "# AIDEV-NOTE: This module defines which exceptions are retryable during task execution and provides a function to determine retryability.\n\"\"\"\n🎯 Error Handling: The Art of Knowing When to Try Again\n\nThis module is like a bouncer at an error club - it decides which errors get a\nsecond chance and which ones are permanently banned. Some errors are just having\na bad day (like network timeouts), while others are fundamentally problematic\n(like trying to divide by zero... seriously, who does that?).\n\nRemember: To err is human, to retry divine... but only if it makes sense!\n\"\"\"\n\nimport asyncio\nfrom typing import cast\n\nimport beartype\nimport beartype.roar\nimport box\nimport box.exceptions\nimport fastapi\nimport httpx\nimport jinja2\nimport jsonschema.exceptions\nimport litellm\nimport pydantic\nimport requests\nimport temporalio.exceptions\nfrom tenacity import RetryError\n\nfrom .tools import IntegrationExecutionException\n\n# AIDEV-NOTE: Tuple of exception types that are considered non-retryable during task execution.\n# 🚫 The \"No Second Chances\" Club - errors that we won't retry\n# Because sometimes, no means no!\nNON_RETRYABLE_ERROR_TYPES = (\n    # Temporal-specific errors (when time itself says no)\n    temporalio.exceptions.WorkflowAlreadyStartedError,\n    temporalio.exceptions.TerminatedError,\n    temporalio.exceptions.CancelledError,\n    #\n    # Built-in Python exceptions (the classics that never go out of style)\n    TypeError,\n    AssertionError,\n    SyntaxError,\n    ValueError,\n    ZeroDivisionError,  # Because dividing by zero is still not cool\n    IndexError,\n    AttributeError,\n    LookupError,\n    BufferError,\n    ArithmeticError,\n    KeyError,\n    NameError,\n    NotImplementedError,\n    RecursionError,  # When your code goes down the rabbit hole too deep\n    RuntimeError,\n    StopIteration,\n    StopAsyncIteration,\n    IndentationError,  # Spaces vs tabs: the eternal debate\n    TabError,\n    #\n    # Unicode-related errors (when characters misbehave)\n    UnicodeError,\n    UnicodeEncodeError,\n    UnicodeDecodeError,\n    UnicodeTranslateError,\n    #\n    # HTTP and API-related errors (when the web says \"nope\")\n    fastapi.exceptions.RequestValidationError,\n    #\n    # Asynchronous programming errors (async/await gone wrong)\n    asyncio.CancelledError,\n    asyncio.InvalidStateError,\n    GeneratorExit,\n    #\n    # Third-party library exceptions (when other people's code says no)\n    jinja2.exceptions.TemplateSyntaxError,\n    jinja2.exceptions.TemplateNotFound,\n    jsonschema.exceptions.ValidationError,\n    pydantic.ValidationError,\n    requests.exceptions.InvalidURL,\n    requests.exceptions.MissingSchema,\n    #\n    # Box exceptions (when your box is broken)\n    box.exceptions.BoxKeyError,\n    box.exceptions.BoxTypeError,\n    box.exceptions.BoxValueError,\n    #\n    # Beartype exceptions (when your types are unbearable)\n    beartype.roar.BeartypeException,\n    beartype.roar.BeartypeDecorException,\n    beartype.roar.BeartypeDecorHintException,\n    beartype.roar.BeartypeDecorHintNonpepException,\n    beartype.roar.BeartypeDecorHintPepException,\n    beartype.roar.BeartypeDecorHintPepUnsupportedException,\n    beartype.roar.BeartypeDecorHintTypeException,\n    beartype.roar.BeartypeDecorParamException,\n    beartype.roar.BeartypeDecorParamNameException,\n    beartype.roar.BeartypeCallHintParamViolation,\n    beartype.roar.BeartypeCallHintReturnViolation,\n    beartype.roar.BeartypeDecorHintParamDefaultViolation,\n    beartype.roar.BeartypeDoorHintViolation,\n    #\n    # LiteLLM exceptions (when AI has a bad day)\n    litellm.exceptions.NotFoundError,\n    litellm.exceptions.InvalidRequestError,\n    litellm.exceptions.AuthenticationError,\n    litellm.exceptions.ServiceUnavailableError,\n    litellm.exceptions.OpenAIError,\n)\n\n# AIDEV-NOTE: Tuple of exception types that are considered retryable during task execution.\n# 🔄 The \"Try Again\" Club - errors that deserve another shot\n# Because everyone deserves a second chance... or third... or fourth...\nRETRYABLE_ERROR_TYPES = (\n    # LiteLLM exceptions (when AI needs a coffee break)\n    litellm.exceptions.RateLimitError,\n    litellm.exceptions.APIError,  # Added to retry on \"APIError: OpenAIException - Connection error\"\n    #\n    # HTTP/Network related errors (internet having a bad hair day)\n    requests.exceptions.ConnectionError,\n    requests.exceptions.Timeout,\n    requests.exceptions.ConnectTimeout,\n    requests.exceptions.ReadTimeout,\n    httpx.ConnectError,\n    httpx.ConnectTimeout,\n    httpx.ReadTimeout,\n    httpx.WriteTimeout,\n    httpx.PoolTimeout,\n    #\n    # Standard library errors that are typically transient (like a bad mood)\n    ConnectionError,\n    TimeoutError,\n    OSError,  # Covers many IO-related errors that may be transient\n    IOError,\n    #\n    # Database/storage related (when the database needs a nap)\n    asyncio.TimeoutError,\n    #\n    # Tenacity exceptions (retry when retrying goes wrong lol)\n    RetryError,\n    #\n    # Tools-related exceptions (when tools have a bad day)\n    IntegrationExecutionException,\n)\n\n# AIDEV-NOTE: Tuple of HTTP status codes that are considered retryable.\n# HTTP status codes that say \"maybe try again later?\"\nRETRYABLE_HTTP_STATUS_CODES = (\n    408,  # Request Timeout (server needs a coffee break)\n    429,  # Too Many Requests (slow down, speedster!)\n    503,  # Service Unavailable (server is having a moment)\n    504,  # Gateway Timeout (the internet took a detour)\n    524,  # Gateway Timeout (the internet took a detour)\n)\n\n\n# AIDEV-NOTE: Determines if a given exception is retryable based on defined non-retryable, retryable, and HTTP status code lists.\ndef is_retryable_error(error: BaseException) -> bool:\n    \"\"\"\n    The Great Error Judge: Decides if an error deserves another chance at life.\n\n    Think of this function as a very understanding but firm teacher - some mistakes\n    get a do-over, others are learning opportunities (aka failures).\n\n    Args:\n        error (Exception): The error that's pleading its case\n\n    Returns:\n        bool: True if the error gets another shot, False if it's game over\n    \"\"\"\n    # First, check if it's in the \"permanently banned\" list\n    if isinstance(error, NON_RETRYABLE_ERROR_TYPES):\n        return False\n\n    # Check if it's in the \"VIP retry club\"\n    if isinstance(error, RETRYABLE_ERROR_TYPES):\n        return True\n\n    # Special handling for HTTP errors (because they're special snowflakes)\n    if isinstance(error, fastapi.exceptions.HTTPException):\n        error = cast(fastapi.exceptions.HTTPException, error)\n        if error.status_code in RETRYABLE_HTTP_STATUS_CODES:\n            return True\n\n    if isinstance(error, httpx.HTTPStatusError):\n        error = cast(httpx.HTTPStatusError, error)\n        if error.response.status_code in RETRYABLE_HTTP_STATUS_CODES:\n            return True\n\n    # If we don't know this error, we play it safe and don't retry\n    # (stranger danger!)\n    return False\n"
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/tools.py",
    "content": "# AIDEV-NOTE: This module defines custom exceptions specifically for tool-related operations.\n\"\"\"\nDefines tools-related exceptions for the agents API.\n\"\"\"\n\nfrom ...autogen.openapi_model import BaseIntegrationDef\nfrom . import BaseCommonException\n\n\n# AIDEV-NOTE: Base exception class for all tool-related errors, inheriting from BaseCommonException.\nclass BaseToolsException(BaseCommonException):\n    \"\"\"Base exception for tools-related errors.\"\"\"\n\n\n# AIDEV-NOTE: Exception raised when an error occurs during the execution of an integration tool.\nclass IntegrationExecutionException(BaseToolsException):\n    \"\"\"Exception raised when an error occurs during an integration execution.\"\"\"\n\n    def __init__(self, integration: BaseIntegrationDef, error: str) -> None:\n        integration_str = integration.provider + (\n            \".\" + integration.method if integration.method else \"\"\n        )\n        super().__init__(\n            f\"Error in executing {integration_str}: {error}\",\n            http_code=500,\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/users.py",
    "content": "# AIDEV-NOTE: This module defines custom exceptions specifically for user-related operations.\n\"\"\"This module defines custom exceptions related to user operations in the agents-api.\"\"\"\n\nfrom uuid import UUID\n\nfrom . import BaseCommonException\n\n\n# AIDEV-NOTE: Base exception class for all user-related errors, inheriting from BaseCommonException.\nclass BaseUserException(BaseCommonException):\n    \"\"\"\n    Base exception class for user-related errors.\n\n    This class serves as a parent for all user-related exceptions to facilitate catching errors specific to user operations.\n    \"\"\"\n\n\n# AIDEV-NOTE: Exception raised when a requested user cannot be found.\nclass UserNotFoundError(BaseUserException):\n    \"\"\"\n    Exception raised when a requested user cannot be found.\n    Attributes:\n        developer_id (UUID | str): The ID of the developer attempting the operation.\n        user_id (UUID | str): The ID of the user that was not found.\n    \"\"\"\n\n    def __init__(self, developer_id: UUID | str, user_id: UUID | str) -> None:\n        # Construct an error message indicating the user and developer involved in the error.\n        super().__init__(\n            f\"User {user_id!s} not found for developer {developer_id!s}\",\n            http_code=404,\n        )\n\n\n# AIDEV-NOTE: Exception raised when a specific document related to a user cannot be found.\nclass UserDocNotFoundError(BaseUserException):\n    \"\"\"\n    Exception raised when a specific document related to a user cannot be found.\n    Attributes:\n        user_id (UUID | str): The ID of the user associated with the document.\n        doc_id (UUID | str): The ID of the document that was not found.\n    \"\"\"\n\n    def __init__(self, user_id: UUID | str, doc_id: UUID | str) -> None:\n        # Construct an error message indicating the document and user involved in the error.\n        super().__init__(f\"Doc {doc_id!s} not found for user {user_id!s}\", http_code=404)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/exceptions/validation.py",
    "content": "# AIDEV-NOTE: This module defines custom exceptions specifically for validation errors.\nfrom . import BaseCommonException\n\n\n# AIDEV-NOTE: Exception raised for validation errors in query parameters.\nclass QueryParamsValidationError(BaseCommonException):\n    \"\"\"Exception raised for validation errors in query parameters.\"\"\"\n\n    def __init__(self, message: str) -> None:\n        super().__init__(message, http_code=400)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/interceptors.py",
    "content": "\"\"\"\nThis module defines custom interceptors for Temporal activities and workflows.\nThe main purpose of these interceptors is to handle errors and prevent retrying\ncertain types of errors that are known to be non-retryable.\n\"\"\"\n\nimport inspect\nfrom asyncio.exceptions import CancelledError as AsyncioCancelledError\nfrom collections.abc import Awaitable, Callable, Sequence\nfrom functools import wraps\nfrom typing import Any\n\nfrom temporalio import workflow\nfrom temporalio.activity import _CompleteAsyncError as CompleteAsyncError\nfrom temporalio.client import (\n    Interceptor as ClientInterceptor,\n)\nfrom temporalio.client import (\n    OutboundInterceptor,\n    StartWorkflowInput,\n    WorkflowHandle,\n)\nfrom temporalio.exceptions import ActivityError, ApplicationError, FailureError, TemporalError\nfrom temporalio.service import RPCError\nfrom temporalio.worker import (\n    ActivityInboundInterceptor,\n    ContinueAsNewInput,\n    ExecuteActivityInput,\n    ExecuteWorkflowInput,\n    Interceptor,\n    StartActivityInput,\n    StartChildWorkflowInput,\n    StartLocalActivityInput,\n    WorkflowInboundInterceptor,\n    WorkflowInterceptorClassInput,\n    WorkflowOutboundInterceptor,\n)\nfrom temporalio.workflow import (\n    ActivityHandle,\n    ChildWorkflowHandle,\n    ContinueAsNewError,\n    NondeterminismError,\n    NoReturn,\n    ReadOnlyContextError,\n)\n\nwith workflow.unsafe.imports_passed_through():\n    from ..env import blob_store_cutoff_kb, use_blob_store_for_temporal\n    from ..worker.codec import RemoteObject\n    from .exceptions.tasks import is_retryable_error\n    from .protocol.tasks import ExecutionInput, StepContext, StepOutcome\n    from .utils.memory import total_size\n\n# Common exceptions that should be re-raised without modification\nPASSTHROUGH_EXCEPTIONS = (\n    ContinueAsNewError,\n    ReadOnlyContextError,\n    NondeterminismError,\n    RPCError,\n    CompleteAsyncError,\n    TemporalError,\n    FailureError,\n    ApplicationError,\n    AsyncioCancelledError,\n)\n\n\ndef is_too_large(result: Any) -> bool:\n    \"\"\"\n    Determine if an object exceeds the size cutoff threshold.\n\n    Args:\n        result: The object to check\n\n    Returns:\n        True if the object is larger than the cutoff threshold, False otherwise\n    \"\"\"\n    return total_size(result) > blob_store_cutoff_kb * 1024\n\n\ndef load_if_remote(arg: Any | RemoteObject) -> Any:\n    if not use_blob_store_for_temporal:\n        return arg\n\n    if isinstance(arg, ChildWorkflowHandle):\n        return arg\n\n    if isinstance(arg, RemoteObject):\n        return arg.load()\n\n    if isinstance(arg, StepContext):\n        arg.load_inputs()\n\n    elif isinstance(arg, StepOutcome):\n        arg.load_remote()\n\n    elif isinstance(arg, ExecutionInput):\n        arg.load_arguments()\n\n    return arg\n\n\ndef offload_if_large[T](result: T) -> T | RemoteObject:\n    if not use_blob_store_for_temporal:\n        return result\n\n    if isinstance(result, ChildWorkflowHandle):\n        return result\n\n    if isinstance(result, ActivityHandle):\n        return result\n\n    if is_too_large(result):\n        return RemoteObject.from_value(result)\n\n    return result\n\n\ndef offload_to_blob_store[S, T](\n    func: Callable[[S, ExecuteActivityInput | ExecuteWorkflowInput], Awaitable[T]],\n) -> Callable[\n    [S, ExecuteActivityInput | ExecuteWorkflowInput], T | RemoteObject\n]:  # AIDEV-NOTE: return type adjusted to cover both async and sync wrappers\n    @wraps(func)\n    async def wrapper(\n        self,\n        input: ExecuteActivityInput | ExecuteWorkflowInput,\n    ) -> T | RemoteObject:\n        # Load all remote arguments from the blob store\n        args: Sequence[Any] = input.args\n\n        if use_blob_store_for_temporal:\n            input.args = [load_if_remote(arg) for arg in args]\n\n        # Execute the function\n        result = await func(self, input)\n\n        # Save the result to the blob store if necessary\n        return offload_if_large(result)\n\n    @wraps(func)\n    def wrapper_sync(\n        self,\n        input: ExecuteActivityInput | ExecuteWorkflowInput,\n    ) -> T | RemoteObject:\n        # Load all remote arguments from the blob store\n        args: Sequence[Any] = input.args\n\n        if use_blob_store_for_temporal:\n            input.args = [load_if_remote(arg) for arg in args]\n\n        # Execute the function\n        result = func(self, input)\n\n        # Save the result to the blob store if necessary\n        # AIDEV-NOTE: wrapper_sync sees func() returns Awaitable; ignore for typing\n        return offload_if_large(result)  # type: ignore[invalid-return-type]\n\n    if inspect.iscoroutinefunction(func):\n        return wrapper\n    return wrapper_sync\n\n\nasync def handle_execution_with_errors[I, T](\n    execution_fn: Callable[[I], Awaitable[T]],\n    input: I,\n) -> T:\n    \"\"\"\n    Common error handling logic for both activities and workflows.\n\n    Args:\n        execution_fn: Async function to execute with error handling\n        input: Input to the execution function\n\n    Returns:\n        The result of the execution function\n\n    Raises:\n        ApplicationError: For non-retryable errors\n        Any other exception: For retryable errors\n    \"\"\"\n    try:\n        return await execution_fn(input)\n    except PASSTHROUGH_EXCEPTIONS:\n        raise\n    except BaseException as e:\n        if not is_retryable_error(e):\n            raise ApplicationError(\n                str(e),\n                type=type(e).__name__,\n                non_retryable=True,\n            )\n        raise\n\n\ndef handle_execution_with_errors_sync[I, T](\n    execution_fn: Callable[[I], T],\n    input: I,\n) -> T:\n    \"\"\"\n    Common error handling logic for both activities and workflows.\n\n    Args:\n        execution_fn: Async function to execute with error handling\n        input: Input to the execution function\n\n    Returns:\n        The result of the execution function\n\n    Raises:\n        ApplicationError: For non-retryable errors\n        Any other exception: For retryable errors\n    \"\"\"\n    try:\n        return execution_fn(input)\n    except PASSTHROUGH_EXCEPTIONS:\n        raise\n    except BaseException as e:\n        while isinstance(e, ActivityError) and getattr(e, \"__cause__\", None):\n            e = e.__cause__\n        if not is_retryable_error(e):\n            raise ApplicationError(\n                str(e),\n                type=type(e).__name__,\n                non_retryable=True,\n            )\n        raise\n\n\nclass CustomActivityInterceptor(ActivityInboundInterceptor):\n    \"\"\"\n    Custom interceptor for Temporal activities.\n\n    This interceptor catches exceptions during activity execution and\n    raises them as non-retryable ApplicationErrors if they are identified\n    as non-retryable errors.\n    \"\"\"\n\n    @offload_to_blob_store\n    async def execute_activity(self, input: ExecuteActivityInput) -> Any:\n        \"\"\"\n        Handles activity execution by intercepting errors and determining their retry behavior.\n        \"\"\"\n        return await handle_execution_with_errors(\n            super().execute_activity,\n            input,\n        )\n\n\nclass CustomWorkflowInterceptor(WorkflowInboundInterceptor):\n    \"\"\"\n    Custom interceptor for Temporal workflows.\n\n    Handles workflow execution errors and determines their retry behavior.\n    \"\"\"\n\n    def init(self, outbound: WorkflowOutboundInterceptor) -> None:\n        \"\"\"Initialize with an outbound interceptor.\n\n        To add a custom outbound interceptor, wrap the given interceptor before\n        sending to the next ``init`` call.\n        \"\"\"\n        self.next.init(CustomWorkflowOutboundInterceptor(outbound))\n\n    @offload_to_blob_store\n    async def execute_workflow(self, input: ExecuteWorkflowInput) -> Any:\n        \"\"\"\n        Executes workflows and handles error cases appropriately.\n        \"\"\"\n        return await handle_execution_with_errors(\n            super().execute_workflow,\n            input,\n        )\n\n\nclass CustomWorkflowOutboundInterceptor(WorkflowOutboundInterceptor):\n    \"\"\"\n    Custom outbound interceptor for Temporal workflows.\n    \"\"\"\n\n    # @offload_to_blob_store\n    def start_activity(self, input: StartActivityInput) -> ActivityHandle:\n        input.args = [offload_if_large(arg) for arg in input.args]\n        return handle_execution_with_errors_sync(\n            super().start_activity,\n            input,\n        )\n\n    @offload_to_blob_store\n    def continue_as_new(self, input: ContinueAsNewInput) -> NoReturn:\n        return handle_execution_with_errors_sync(\n            super().continue_as_new,\n            input,\n        )\n\n    @offload_to_blob_store\n    def start_local_activity(self, input: StartLocalActivityInput) -> ActivityHandle:\n        return handle_execution_with_errors_sync(\n            super().start_local_activity,\n            input,\n        )\n\n    # @offload_to_blob_store\n    async def start_child_workflow(self, input: StartChildWorkflowInput) -> ChildWorkflowHandle:\n        input.args = [offload_if_large(arg) for arg in input.args]\n        return await handle_execution_with_errors(\n            super().start_child_workflow,\n            input,\n        )\n\n\nclass CustomInterceptor(Interceptor):\n    \"\"\"\n    Main interceptor class that provides both activity and workflow interceptors.\n    \"\"\"\n\n    def intercept_activity(\n        self,\n        next: ActivityInboundInterceptor,\n    ) -> ActivityInboundInterceptor:\n        \"\"\"\n        Creates and returns a custom activity interceptor.\n        \"\"\"\n        return CustomActivityInterceptor(super().intercept_activity(next))\n\n    def workflow_interceptor_class(\n        self,\n        input: WorkflowInterceptorClassInput,\n    ) -> type[WorkflowInboundInterceptor] | None:\n        \"\"\"\n        Returns the custom workflow interceptor class.\n        \"\"\"\n        return CustomWorkflowInterceptor\n\n\nclass CustomClientInterceptor(ClientInterceptor):\n    \"\"\"\n    Custom interceptor for Temporal.\n    \"\"\"\n\n    def intercept_client(self, next: OutboundInterceptor) -> OutboundInterceptor:\n        return CustomOutboundInterceptor(super().intercept_client(next))\n\n\nclass CustomOutboundInterceptor(OutboundInterceptor):\n    \"\"\"\n    Custom outbound interceptor for Temporal workflows.\n    \"\"\"\n\n    # @offload_to_blob_store\n    async def start_workflow(self, input: StartWorkflowInput) -> WorkflowHandle[Any, Any]:\n        \"\"\"\n        interceptor for outbound workflow calls\n        \"\"\"\n        input.args = [offload_if_large(arg) for arg in input.args]\n        return await handle_execution_with_errors(\n            super().start_workflow,\n            input,\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/common/nlp.py",
    "content": "import re\nfrom collections import Counter\nfrom functools import lru_cache\n\nimport spacy\nfrom spacy.tokens import Doc\nfrom spacy.util import filter_spans\n\n# Precompile regex patterns\nWHITESPACE_RE = re.compile(r\"\\s+\")\nNON_ALPHANUM_RE = re.compile(r\"[^\\w\\s\\-_]+\")\nLONE_HYPHEN_RE = re.compile(r\"\\s*-\\s*(?!\\w)|(?<!\\w)\\s*-\\s*\")\n\n# Initialize spaCy with minimal pipeline\nnlp = spacy.load(\"en_core_web_sm\", exclude=[\"lemmatizer\", \"textcat\"])\n\n# Add sentencizer for faster sentence tokenization\nsentencizer = nlp.add_pipe(\"sentencizer\")\n\n# spacy chunking pipeline\nnlp.add_pipe(\n    \"spacy_chunks\",\n    last=True,\n    config={\n        \"chunking_method\": \"sentence\",  # chunking method to use (\"sentence\" or \"token\")\n        \"chunk_size\": 15,  # Number of sentences or tokens per chunk\n        \"overlap\": 3,  # Number of overlapping sentences or tokens between chunks\n        \"truncate\": False,  # Whether to remove incomplete chunks at the end\n    },\n)\n\n\n@lru_cache(maxsize=10000)\ndef clean_keyword(kw: str) -> str:\n    \"\"\"Cache cleaned keywords for reuse.\"\"\"\n    # First remove non-alphanumeric chars (except whitespace, hyphens, underscores)\n    cleaned = NON_ALPHANUM_RE.sub(\"\", kw).strip()\n    # Replace lone hyphens with spaces\n    cleaned = LONE_HYPHEN_RE.sub(\" \", cleaned)\n    # Clean up any resulting multiple spaces\n    return WHITESPACE_RE.sub(\" \", cleaned).strip()\n\n\ndef extract_keywords(doc: Doc, top_n: int = 25, split_chunks: bool = True) -> list[str]:\n    \"\"\"Optimized keyword extraction with minimal behavior change.\"\"\"\n\n    excluded_labels = {\n        \"TIME\",  # Times smaller than a day.\n        \"PERCENT\",  # Percentage, including ”%“.\n        \"QUANTITY\",  # Measurements, as of weight or distance.\n        \"ORDINAL\",  # “first”, “second”, etc.\n        \"CARDINAL\",  # Numerals that do not fall under another type.\n        \"DATE\",  # Absolute or relative dates or periods.\n        \"MONEY\",  # Monetary values, including unit.\n        # \"PERSON\",      # People, including fictional.\n        # \"NORP\",        # Nationalities or religious or political groups.\n        # \"FAC\",         # Buildings, airports, highways, bridges, etc.\n        # \"ORG\",         # Companies, agencies, institutions, etc.\n        # \"GPE\",         # Countries, cities, states.\n        # \"LOC\",         # Non-GPE locations, mountain ranges, bodies of water.\n        # \"PRODUCT\",     # Objects, vehicles, foods, etc. (Not services.)\n        # \"EVENT\",       # Named hurricanes, battles, wars, sports events, etc.\n        # \"WORK_OF_ART\", # Titles of books, songs, etc.\n        # \"LAW\",         # Named documents made into laws.\n        # \"LANGUAGE\",    # Any named language.\n    }\n\n    # Extract and filter spans in a single pass\n    ent_spans = [ent for ent in doc.ents if ent.label_ not in excluded_labels]\n\n    # Add more comprehensive stopword filtering for noun chunks\n    chunk_spans = [\n        chunk\n        for chunk in doc.noun_chunks\n        if not chunk.root.is_stop and not all(token.is_stop for token in chunk)\n    ]\n    all_spans = filter_spans(ent_spans + chunk_spans)\n\n    # Process spans efficiently and filter out spans that are entirely stopwords\n    keywords = []\n    ent_keywords = []\n    seen_texts = set()\n\n    # Convert ent_spans to set for faster lookup\n    ent_spans_set = set(ent_spans)\n\n    for span in all_spans:\n        # Skip if all tokens in span are stopwords\n        if all(token.is_stop for token in span):\n            continue\n\n        text = span.text.strip()\n        lower_text = text.lower()\n\n        # Skip empty or seen texts\n        if not text or lower_text in seen_texts:\n            continue\n\n        seen_texts.add(lower_text)\n        ent_keywords.append(text) if span in ent_spans_set else keywords.append(text)\n\n    # Normalize keywords by replacing multiple spaces with single space and stripping\n    normalized_ent_keywords = [WHITESPACE_RE.sub(\" \", kw).strip() for kw in ent_keywords]\n    normalized_keywords = [WHITESPACE_RE.sub(\" \", kw).strip() for kw in keywords]\n\n    if split_chunks:\n        normalized_keywords = [word for kw in normalized_keywords for word in kw.split()]\n\n    # Count frequencies efficiently\n    ent_freq = Counter(normalized_ent_keywords)\n    freq = Counter(normalized_keywords)\n\n    top_keywords = [kw for kw, _ in ent_freq.most_common(top_n)]\n    remaining_slots = max(0, top_n - len(top_keywords))\n    top_keywords += [kw for kw, _ in freq.most_common(remaining_slots)]\n\n    return [clean_keyword(kw) for kw in top_keywords]\n\n\n@lru_cache(maxsize=1000)\ndef text_to_keywords(\n    paragraph: str,\n    top_n: int = 25,\n    min_keywords: int = 1,\n    split_chunks: bool = True,\n) -> set[str]:\n    \"\"\"\n    Extracts meaningful keywords/phrases from text.\n\n    Example:\n        Input: \"I like basketball especially Michael Jordan\"\n        Output: {\"basketball\", \"Michael Jordan\"}\n\n    Args:\n        paragraph (str): The input text to process\n        top_n (int): Number of top keywords to extract per sentence\n        min_keywords (int): Minimum number of keywords required\n        split_chunks (bool): If True, breaks multi-word noun chunks into individual words\n\n    Returns:\n        set[str]: Set of keywords/phrases\n    \"\"\"\n    if not paragraph or not paragraph.strip():\n        return set()\n\n    doc = nlp(paragraph)\n    all_keywords = set()  # Use set to avoid duplicates\n\n    for sent in doc.sents:\n        sent_doc = sent.as_doc()\n\n        # Extract keywords\n        keywords = extract_keywords(sent_doc, top_n, split_chunks=split_chunks)\n        keywords = [kw for kw in keywords if len(kw) > 1]\n        if len(keywords) < min_keywords:\n            continue\n\n        all_keywords.update(keywords)\n\n    return all_keywords\n\n\n# def batch_text_to_tsvector_queries(\n#     paragraphs: list[str],\n#     top_n: int = 10,\n#     proximity_n: int = 10,\n#     min_keywords: int = 1,\n#     n_process: int = 1,\n# ) -> list[str]:\n#     \"\"\"\n#     Processes multiple paragraphs using nlp.pipe for better performance.\n\n#     Args:\n#         paragraphs (list[str]): List of paragraphs to process\n#         top_n (int): Number of top keywords to include per paragraph\n\n#     Returns:\n#         list[str]: List of tsquery strings\n#     \"\"\"\n#     results = []\n\n#     for doc in nlp.pipe(paragraphs, disable=[\"lemmatizer\", \"textcat\"], n_process=n_process):\n#         queries = set()  # Use set to avoid duplicates\n#         for sent in doc.sents:\n#             sent_doc = sent.as_doc()\n#             keywords = extract_keywords(sent_doc, top_n)\n#             if len(keywords) < min_keywords:\n#                 continue\n#             keyword_positions = keyword_matcher.find_matches(sent_doc, keywords)\n#             if not keyword_positions:\n#                 continue\n#             groups = find_proximity_groups(keywords, keyword_positions, proximity_n)\n#             # Add each group as a single term to our set\n#             for group in groups:\n#                 if len(group) > 1:\n#                     # Sort by length descending to prioritize longer phrases\n#                     sorted_group = sorted(group, key=len, reverse=True)\n#                     # For truly proximate multi-word groups, group words\n#                     queries.add(\" OR \".join(sorted_group))\n#                 else:\n#                     # For non-proximate words or single words, add them separately\n#                     queries.update(group)\n\n#         # Join all terms with \" OR \"\n#         results.append(\" OR \".join(queries) if queries else \"\")\n\n#     return results\n"
  },
  {
    "path": "src/agents-api/agents_api/common/protocol/__init__.py",
    "content": "\"\"\"\nThe `protocol` module defines the core data structures and settings used across the agents API for managing agents, entries, and sessions. It serves as the foundation for the operation and interaction of different parts of the agents API, facilitating the management of agents, their settings, and session data.\n\n- `AgentDefaultSettings`: Defines default settings for an agent, controlling various aspects of the agent's behavior during operation.\n- `Entry`: Represents an entry in the system, encapsulating details such as ID, session ID, source, role, and content.\n- `SessionData`: Represents the data associated with a session, including identifiers and session-specific information such as situation, summary, and timestamps.\n\nThese components are crucial for the effective operation and interaction within the agents API.\n\"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/common/protocol/agents.py",
    "content": "from pydantic import BaseModel\n\n\nclass AgentDefaultSettings(BaseModel):\n    \"\"\"Defines default settings for an agent. These settings control various aspects of the agent's behavior during operation.\"\"\"\n\n    temperature: float = 0.0\n    \"\"\"Temperature setting influencing the randomness of the agent's responses. Higher values lead to more random responses.\"\"\"\n\n    top_p: float = 1.0\n    \"\"\"Top-p sampling setting controlling the nucleus of the probability distribution to sample from.\"\"\"\n\n    repetition_penalty: float = 1.0\n    \"\"\"Penalty applied to discourage repetition in the agent's responses.\"\"\"\n\n    length_penalty: float = 1.0\n    \"\"\"Penalty for longer responses, encouraging more concise outputs.\"\"\"\n\n    presence_penalty: float = 0.0\n    \"\"\"Penalty applied based on the presence of certain words, influencing content generation.\"\"\"\n\n    frequency_penalty: float = 0.0\n    \"\"\"Penalty that decreases the likelihood of frequently used words in the agent's responses.\"\"\"\n\n    min_p: float = 0.01\n    \"\"\"Minimum probability threshold for including a word in the agent's response.\"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/common/protocol/developers.py",
    "content": "\"\"\"\nThis module defines session-related data structures and settings used across the agents API.\nIt includes definitions for session settings and session data models.\n\"\"\"\n\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, EmailStr\n\n\nclass Developer(BaseModel):\n    \"\"\"\n    Represents the data associated with a developer\n    \"\"\"\n\n    id: UUID\n    email: EmailStr\n    active: bool\n    tags: list[str]\n    settings: dict\n    created_at: AwareDatetime\n    created_at: AwareDatetime\n"
  },
  {
    "path": "src/agents-api/agents_api/common/protocol/models.py",
    "content": "from typing import Any\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom pydantic import BaseModel\nfrom temporalio import workflow\n\nfrom ...autogen.openapi_model import (\n    Agent,\n    CreateTaskRequest,\n    CreateToolRequest,\n    Execution,\n    PartialTaskSpecDef,\n    PatchTaskRequest,\n    Session,\n    Task,\n    TaskSpec,\n    TaskSpecDef,\n    TaskToolDef,\n    Tool,\n    UpdateTaskRequest,\n    User,\n    Workflow,\n)\n\nwith workflow.unsafe.imports_passed_through():\n    from ...worker.codec import RemoteObject\n\n\n# AIDEV-NOTE: Data model representing the input provided to a task execution workflow.\n# Includes details about the developer, execution, task, agent, tools, and arguments.\nclass ExecutionInput(BaseModel):\n    loaded: bool = False\n    developer_id: UUID\n    execution: Execution | None = None\n    task: TaskSpecDef | None = None\n    agent: Agent\n    agent_tools: list[Tool | CreateToolRequest]\n    arguments: dict[str, Any] | RemoteObject\n\n    # AIDEV-TODO: Convert fields to only arguments (remote object only), execution_id, developer_id.\n    # TODO: Convert fields to only arguments (remote object only), execution_id, developer_id\n\n    # Not used at the moment\n    user: User | None = None\n    session: Session | None = None\n\n    def load_arguments(self) -> None:\n        if isinstance(self.arguments, RemoteObject):\n            self.arguments = self.arguments.load()  # type: ignore\n            self.loaded = True\n\n\n@beartype\n# AIDEV-NOTE: Converts a Task or task request model into a TaskSpecDef, which is used internally for workflow execution.\n# Includes important notes on the conversion process and field renaming.\ndef task_to_spec(\n    task: Task | CreateTaskRequest | UpdateTaskRequest | PatchTaskRequest,\n    **model_opts,\n) -> TaskSpecDef | PartialTaskSpecDef:\n    \"\"\"\n    Converts a task to a task specification.\n\n    IMPORTANT CONVERSION NOTES:\n    - This conversion changes the structure of workflow steps\n    - Raw task dictionaries use step types as keys (e.g., \"if\": condition)\n    - Converted tasks use Pydantic models with kind_ field and renamed fields\n      to avoid Python keywords:\n      * \"if\" step becomes an IfElseWorkflowStep with kind_=\"if_else\" and if_=condition\n      * Fields like \"if\", \"in\", \"from\" get renamed to \"if_\", \"in_\", \"from_\"\n      * These fields maintain their original names as aliases in the JSON\n\n    This conversion is vital to understand when working with task validation,\n    especially for expression validation which needs to handle both formats.\n    \"\"\"\n    task_data = task.model_dump(\n        **model_opts,\n        exclude={\"version\", \"developer_id\", \"task_id\", \"id\", \"agent_id\"},\n    )\n\n    if \"tools\" in task_data:\n        del task_data[\"tools\"]\n\n    tools = []\n    for tool in task.tools:\n        tool_spec = getattr(tool, tool.type)\n\n        tool_obj = dict(\n            type=tool.type,\n            spec=tool_spec.model_dump(),\n            **tool.model_dump(exclude={\"type\"}),\n        )\n        tools.append(TaskToolDef(**tool_obj))\n\n    workflows = [Workflow(name=\"main\", steps=task_data.pop(\"main\"))]\n\n    for key, steps in list(task_data.items()):\n        if key not in TaskSpec.model_fields:\n            workflows.append(Workflow(name=key, steps=steps))\n            del task_data[key]\n\n    cls = PartialTaskSpecDef if isinstance(task, PatchTaskRequest) else TaskSpecDef\n\n    return cls(\n        workflows=workflows,\n        tools=tools,\n        **task_data,\n    )\n\n\n# AIDEV-NOTE: Converts a TaskSpec dictionary back into a format suitable for Task or CreateTaskRequest models.\ndef spec_to_task_data(spec: dict) -> dict:\n    task_id = spec.pop(\"task_id\", None)\n\n    workflows = spec.pop(\"workflows\")\n    workflows_dict = {workflow[\"name\"]: workflow[\"steps\"] for workflow in workflows}\n\n    tools = spec.pop(\"tools\", []) or []\n    tools = [{tool[\"type\"]: tool.pop(\"spec\"), **tool} for tool in tools if tool]\n\n    return {\n        \"id\": task_id,\n        \"tools\": tools,\n        **spec,\n        **workflows_dict,\n    }\n\n\n# AIDEV-NOTE: Converts a TaskSpec dictionary or arguments into a Task or CreateTaskRequest Pydantic model.\ndef spec_to_task(**spec) -> Task | CreateTaskRequest:\n    if not spec.get(\"id\"):\n        spec[\"id\"] = spec.pop(\"task_id\", None)\n\n    if not spec.get(\"updated_at\"):\n        [updated_at_ms, _] = spec.pop(\"updated_at_ms\", None)\n        spec[\"updated_at\"] = updated_at_ms and (updated_at_ms / 1000)\n\n    cls = Task if spec[\"id\"] else CreateTaskRequest\n    return cls(**spec_to_task_data(spec))\n"
  },
  {
    "path": "src/agents-api/agents_api/common/protocol/sessions.py",
    "content": "\"\"\"\nThis module defines session-related data structures and settings used across the agents API.\nIt includes definitions for session settings and session data models.\n\"\"\"\n\nfrom typing import cast\nfrom uuid import UUID\n\nfrom pydantic import BaseModel\n\nfrom ...autogen.openapi_model import (\n    Agent,\n    ChatInput,\n    MultiAgentMultiUserSession,\n    Session,\n    SingleAgentMultiUserSession,\n    SingleAgentNoUserSession,\n    SingleAgentSingleUserSession,\n    Tool,\n    User,\n)\nfrom .agents import AgentDefaultSettings\n\n\nclass SessionSettings(AgentDefaultSettings):\n    \"\"\"\n    A placeholder for session-specific settings, inheriting from AgentDefaultSettings.\n    Currently, it does not extend the base class with additional properties.\n    \"\"\"\n\n\nclass SessionData(BaseModel):\n    \"\"\"\n    Represents the data associated with a session, including for agents, and users.\n    \"\"\"\n\n    session: Session\n    agents: list[Agent]\n    users: list[User] = []\n    settings: dict | None = None\n\n\nclass Toolset(BaseModel):\n    agent_id: UUID\n    tools: list[Tool]\n\n\nclass ChatContext(SessionData):\n    \"\"\"\n    Represents the data associated with a context, including for agents, and users.\n    \"\"\"\n\n    toolsets: list[Toolset]\n\n    def get_active_agent(self) -> Agent:\n        \"\"\"\n        Get the active agent from the session data.\n        \"\"\"\n        requested_agent: UUID | None = cast(UUID, self.settings and self.settings.get(\"agent\"))\n\n        if requested_agent:\n            assert requested_agent in [agent.id for agent in self.agents], (\n                f\"Agent {requested_agent} not found in session agents: \"\n                f\"{[agent.id for agent in self.agents]}\"\n            )\n\n            return next(agent for agent in self.agents if agent.id == requested_agent)\n\n        return self.agents[0]\n\n    def merge_settings(self, chat_input: ChatInput) -> dict:\n        request_settings = chat_input.model_dump(exclude_unset=True)\n        active_agent = self.get_active_agent()\n\n        default_settings: dict = active_agent.default_settings or {}\n\n        self.settings = settings = {\n            \"model\": active_agent.model,\n            **default_settings,\n            **request_settings,\n        }\n\n        return settings\n\n    def merge_system_template(self, system_template: str | None) -> str:\n        \"\"\"\n        Merge the system template with the active agent's default system template.\n        \"\"\"\n        active_agent = self.get_active_agent()\n        return system_template or active_agent.default_system_template\n\n    def get_active_tools(self) -> list[Tool]:\n        \"\"\"\n        Get the active toolset from the session data.\n        \"\"\"\n        if len(self.toolsets) == 0:\n            return []\n\n        active_agent = self.get_active_agent()\n        active_toolset = next(\n            toolset for toolset in self.toolsets if toolset.agent_id == active_agent.id\n        )\n\n        return active_toolset.tools\n\n    def get_chat_environment(self) -> dict[str, dict | list[dict] | None]:\n        \"\"\"\n        Get the chat environment from the session data.\n        \"\"\"\n        current_agent = self.get_active_agent()\n        tools = self.get_active_tools()\n        settings: dict | None = self.settings or {}\n\n        return {\n            \"session\": self.session.model_dump(),\n            \"agents\": [agent.model_dump() for agent in self.agents],\n            \"current_agent\": current_agent.model_dump(),\n            \"agent\": current_agent.model_dump(),\n            \"user\": self.users[0].model_dump() if len(self.users) > 0 else None,\n            \"users\": [user.model_dump() for user in self.users],\n            \"settings\": settings,\n            \"tools\": [tool.model_dump() for tool in tools],\n        }\n\n\ndef make_session(\n    *,\n    agents: list[UUID],\n    users: list[UUID],\n    **data: dict[str, dict],\n) -> Session:\n    \"\"\"\n    Create a new session object.\n    \"\"\"\n    cls, participants = None, {}\n\n    match (len(agents), len(users)):\n        case (0, _):\n            msg = \"At least one agent must be provided.\"\n            raise ValueError(msg)\n        case (1, 0):\n            cls = SingleAgentNoUserSession\n            participants = {\"agent\": agents[0]}\n        case (1, 1):\n            cls = SingleAgentSingleUserSession\n            participants = {\"agent\": agents[0], \"user\": users[0]}\n        case (1, u) if u > 1:\n            cls = SingleAgentMultiUserSession\n            participants = {\"agent\": agents[0], \"users\": users}\n        case _:\n            cls = MultiAgentMultiUserSession\n            participants = {\"agents\": agents, \"users\": users}\n\n    return cls(**{**data, **participants})\n"
  },
  {
    "path": "src/agents-api/agents_api/common/protocol/state_machine.py",
    "content": "from collections.abc import Generator\nfrom contextlib import contextmanager\nfrom enum import StrEnum\nfrom uuid import UUID\n\nfrom pydantic import BaseModel, Field\n\nfrom ...autogen.openapi_model import TransitionTarget\n\n\nclass TransitionType(StrEnum):\n    \"\"\"Enum for transition types in the workflow.\"\"\"\n\n    INIT = \"init\"\n    INIT_BRANCH = \"init_branch\"\n    WAIT = \"wait\"\n    RESUME = \"resume\"\n    STEP = \"step\"\n    FINISH = \"finish\"\n    FINISH_BRANCH = \"finish_branch\"\n    ERROR = \"error\"\n    CANCELLED = \"cancelled\"\n\n\nclass ExecutionStatus(StrEnum):\n    \"\"\"Enum for execution statuses.\"\"\"\n\n    QUEUED = \"queued\"\n    STARTING = \"starting\"\n    RUNNING = \"running\"\n    AWAITING_INPUT = \"awaiting_input\"\n    SUCCEEDED = \"succeeded\"\n    FAILED = \"failed\"\n    CANCELLED = \"cancelled\"\n\n\nclass StateTransitionError(Exception):\n    \"\"\"Raised when an invalid state transition is attempted.\"\"\"\n\n\nclass ExecutionState(BaseModel):\n    \"\"\"Model representing the current state of an execution.\"\"\"\n\n    status: ExecutionStatus\n    transition_type: TransitionType | None = None\n    current_target: TransitionTarget | None = None\n    next_target: TransitionTarget | None = None\n    execution_id: UUID\n    metadata: dict = Field(default_factory=dict)\n\n\n# Valid transitions from each state\n_valid_transitions: dict[TransitionType | None, list[TransitionType]] = {\n    None: [\n        TransitionType.INIT,\n        TransitionType.WAIT,\n        TransitionType.ERROR,\n        TransitionType.STEP,\n        TransitionType.CANCELLED,\n        TransitionType.INIT_BRANCH,\n        TransitionType.FINISH,\n    ],\n    TransitionType.INIT: [\n        TransitionType.WAIT,\n        TransitionType.ERROR,\n        TransitionType.STEP,\n        TransitionType.CANCELLED,\n        TransitionType.INIT_BRANCH,\n        TransitionType.FINISH,\n    ],\n    TransitionType.INIT_BRANCH: [\n        TransitionType.WAIT,\n        TransitionType.ERROR,\n        TransitionType.STEP,\n        TransitionType.CANCELLED,\n        TransitionType.INIT_BRANCH,\n        TransitionType.FINISH_BRANCH,\n        TransitionType.FINISH,\n    ],\n    TransitionType.WAIT: [\n        TransitionType.RESUME,\n        TransitionType.STEP,\n        TransitionType.CANCELLED,\n        TransitionType.FINISH,\n        TransitionType.FINISH_BRANCH,\n    ],\n    TransitionType.RESUME: [\n        TransitionType.WAIT,\n        TransitionType.ERROR,\n        TransitionType.CANCELLED,\n        TransitionType.STEP,\n        TransitionType.FINISH,\n        TransitionType.FINISH_BRANCH,\n        TransitionType.INIT_BRANCH,\n    ],\n    TransitionType.STEP: [\n        TransitionType.WAIT,\n        TransitionType.ERROR,\n        TransitionType.CANCELLED,\n        TransitionType.STEP,\n        TransitionType.FINISH,\n        TransitionType.FINISH_BRANCH,\n        TransitionType.INIT_BRANCH,\n    ],\n    TransitionType.FINISH_BRANCH: [\n        TransitionType.WAIT,\n        TransitionType.ERROR,\n        TransitionType.CANCELLED,\n        TransitionType.STEP,\n        TransitionType.FINISH,\n        TransitionType.INIT_BRANCH,\n    ],\n    # Terminal states\n    TransitionType.FINISH: [],\n    TransitionType.ERROR: [],\n    TransitionType.CANCELLED: [],\n}\n\n# Mapping from transition types to execution statuses\n_transition_to_status: dict[TransitionType | None, ExecutionStatus] = {\n    None: ExecutionStatus.QUEUED,\n    TransitionType.INIT: ExecutionStatus.STARTING,\n    TransitionType.INIT_BRANCH: ExecutionStatus.RUNNING,\n    TransitionType.WAIT: ExecutionStatus.AWAITING_INPUT,\n    TransitionType.RESUME: ExecutionStatus.RUNNING,\n    TransitionType.STEP: ExecutionStatus.RUNNING,\n    TransitionType.FINISH: ExecutionStatus.SUCCEEDED,\n    TransitionType.FINISH_BRANCH: ExecutionStatus.RUNNING,\n    TransitionType.ERROR: ExecutionStatus.FAILED,\n    TransitionType.CANCELLED: ExecutionStatus.CANCELLED,\n}\n\n\nclass ExecutionStateMachine:\n    \"\"\"\n    A state machine for managing execution state transitions with validation.\n    Uses context managers for safe state transitions.\n    \"\"\"\n\n    def __init__(self, execution_id: UUID) -> None:\n        \"\"\"Initialize the state machine with QUEUED status.\"\"\"\n        self.state = ExecutionState(\n            status=ExecutionStatus.QUEUED,\n            execution_id=execution_id,\n        )\n\n    def _validate_transition(self, new_type: TransitionType) -> bool:\n        \"\"\"Validate if a transition is allowed from the current state.\"\"\"\n        return new_type in _valid_transitions[self.state.transition_type]\n\n    @contextmanager\n    def transition_to(\n        self,\n        transition_type: TransitionType,\n        current_target: TransitionTarget | None = None,\n        next_target: TransitionTarget | None = None,\n        metadata: dict | None = None,\n    ) -> Generator[ExecutionState, None, None]:\n        \"\"\"\n        Context manager for safely transitioning to a new state.\n\n        Args:\n            transition_type: The type of transition to perform\n            current_target: The current workflow target\n            next_target: The next workflow target\n            metadata: Optional metadata for the transition\n\n        Raises:\n            StateTransitionError: If the transition is invalid\n        \"\"\"\n        if not self._validate_transition(transition_type):\n            msg = f\"Invalid transition from {self.state.transition_type} to {transition_type}\"\n            raise StateTransitionError(msg)\n\n        # Store previous state for rollback\n        previous_state = self.state.model_copy(deep=True)\n\n        try:\n            # Update the state\n            self.state.transition_type = transition_type\n            self.state.status = _transition_to_status[transition_type]\n            self.state.current_target = current_target\n            self.state.next_target = next_target\n            if metadata:\n                self.state.metadata.update(metadata)\n\n            yield self.state\n\n        except Exception as e:\n            # Rollback on error\n            self.state = previous_state\n            msg = f\"Transition failed: {e!s}\"\n            raise StateTransitionError(msg) from e\n\n    @property\n    def is_terminal(self) -> bool:\n        \"\"\"Check if the current state is terminal.\"\"\"\n        return (\n            self.state.transition_type is not None\n            and not _valid_transitions[self.state.transition_type]\n        )\n\n    @property\n    def current_status(self) -> ExecutionStatus:\n        \"\"\"Get the current execution status.\"\"\"\n        return self.state.status\n"
  },
  {
    "path": "src/agents-api/agents_api/common/protocol/tasks.py",
    "content": "from typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom temporalio import workflow\nfrom temporalio.exceptions import ApplicationError\n\nwith workflow.unsafe.imports_passed_through():\n    from pydantic import BaseModel, Field, computed_field\n    from pydantic_partial import create_partial_model\n\n    from ...autogen.openapi_model import (\n        CreateToolRequest,\n        CreateTransitionRequest,\n        ExecutionStatus,\n        Tool,\n        ToolRef,\n        TransitionTarget,\n        TransitionType,\n        Workflow,\n        WorkflowStep,\n    )\n    from ...common.utils.expressions import evaluate_expressions\n    from ...common.utils.secrets import get_secrets_list\n    from ...worker.codec import RemoteObject\n\nfrom ...env import max_steps_accessible_in_tasks\nfrom ...queries.executions import (\n    list_execution_inputs_data,\n    list_execution_state_data,\n)\nfrom ...queries.utils import serialize_model_data\nfrom .models import ExecutionInput\n\n# AIDEV-TODO: Maybe we should use a library for this state machine logic.\n\n# AIDEV-NOTE: Defines the valid state transitions for task executions.\n#\n# init -> wait | error | step | cancelled | init_branch | finish\n# init_branch -> wait | error | step | cancelled | finish_branch\n# wait -> resume | error | cancelled\n# resume -> wait | error | cancelled | step | finish | finish_branch | init_branch\n# step -> wait | error | cancelled | step | finish | finish_branch | init_branch\n# finish_branch -> wait | error | cancelled | step | finish | init_branch\n# error ->\n\n# Mermaid Diagram\n# ```mermaid\n# ---\n# title: Execution state machine\n# ---\n# stateDiagram-v2\n#     [*] --> queued\n#     queued --> starting\n#     queued --> cancelled\n#     starting --> cancelled\n#     starting --> failed\n#     starting --> running\n#     running --> running\n#     running --> awaiting_input\n#     running --> cancelled\n#     running --> failed\n#     running --> succeeded\n#     awaiting_input --> running\n#     awaiting_input --> cancelled\n#     cancelled --> [*]\n#     succeeded --> [*]\n#     failed --> [*]\n\n# ```\n# TODO: figure out how to type this\nvalid_transitions: dict[TransitionType, list[TransitionType]] = {\n    # Start state\n    \"init\": [\"wait\", \"error\", \"step\", \"cancelled\", \"init_branch\", \"finish\"],\n    \"init_branch\": [\n        \"wait\",\n        \"error\",\n        \"step\",\n        \"cancelled\",\n        \"init_branch\",\n        \"finish_branch\",\n        \"finish\",\n    ],\n    # End states\n    \"finish\": [],\n    \"error\": [],\n    \"cancelled\": [],\n    # Intermediate states\n    \"wait\": [\"resume\", \"step\", \"cancelled\", \"finish\", \"finish_branch\"],\n    \"resume\": [\n        \"wait\",\n        \"error\",\n        \"cancelled\",\n        \"step\",\n        \"finish\",\n        \"finish_branch\",\n        \"init_branch\",\n    ],\n    \"step\": [\n        \"wait\",\n        \"error\",\n        \"cancelled\",\n        \"step\",\n        \"finish\",\n        \"finish_branch\",\n        \"init_branch\",\n    ],\n    \"finish_branch\": [\n        \"wait\",\n        \"error\",\n        \"cancelled\",\n        \"step\",\n        \"finish\",\n        \"init_branch\",\n        \"finish_branch\",\n    ],\n}  # type: ignore\n\n# AIDEV-NOTE: Maps valid previous execution statuses for each current status.\nvalid_previous_statuses: dict[ExecutionStatus, list[ExecutionStatus]] = {\n    \"running\": [\"starting\", \"awaiting_input\", \"running\"],\n    \"starting\": [\"queued\"],\n    \"queued\": [],\n    \"awaiting_input\": [\"starting\", \"running\"],\n    \"cancelled\": [\"queued\", \"starting\", \"awaiting_input\", \"running\"],\n    \"succeeded\": [\"starting\", \"awaiting_input\", \"running\"],\n    \"failed\": [\"starting\", \"running\"],\n}  # type: ignore\n\n# AIDEV-NOTE: Maps transition types to corresponding execution statuses.\ntransition_to_execution_status: dict[TransitionType | None, ExecutionStatus] = {\n    None: \"queued\",\n    \"init\": \"starting\",\n    \"init_branch\": \"running\",\n    \"wait\": \"awaiting_input\",\n    \"resume\": \"running\",\n    \"step\": \"running\",\n    \"finish\": \"succeeded\",\n    \"finish_branch\": \"running\",\n    \"error\": \"failed\",\n    \"cancelled\": \"cancelled\",\n}  # type: ignore\n\n\n# AIDEV-NOTE: Represents a partial state transition during task execution.\nclass PartialTransition(create_partial_model(CreateTransitionRequest)):\n    user_state: dict[str, Any] = Field(default_factory=dict)\n\n\n# AIDEV-NOTE: Represents the result and metadata of a workflow execution.\nclass WorkflowResult(BaseModel):\n    \"\"\"\n    Represents the result of a workflow execution, including metadata about how it was completed.\n    \"\"\"\n\n    state: PartialTransition\n    returned: bool = (\n        False  # True if execution of a sub-workflow ended due to a return statement\n    )\n    metadata: dict[str, Any] = Field(default_factory=dict)\n\n\n# AIDEV-NOTE: Provides context for the current step execution, including execution input, cursor, and current input.\nclass StepContext(BaseModel):\n    loaded: bool = False\n    execution_input: ExecutionInput\n    cursor: TransitionTarget\n    current_input: Any | RemoteObject\n\n    def load_inputs(self) -> None:\n        self.execution_input.load_arguments()\n\n        if isinstance(self.current_input, RemoteObject):\n            self.current_input = self.current_input.load()\n\n        self.loaded = True\n\n    # AIDEV-NOTE: To get the tools available for the current step, considering agent and task tools.\n    async def tools(self) -> list[Tool | CreateToolRequest]:\n        execution_input = self.execution_input\n        task = execution_input.task\n        agent_tools = execution_input.agent_tools\n        secrets = {}\n\n        step_tools: Literal[\"all\"] | list[ToolRef | CreateToolRequest] = getattr(\n            self.current_step,\n            \"tools\",\n            \"all\",\n        )\n\n        if step_tools != \"all\":\n            if not all(tool and isinstance(tool, CreateToolRequest) for tool in step_tools):\n                msg = \"Invalid tools for step (ToolRef not supported yet)\"\n                raise ApplicationError(msg)\n\n            return step_tools\n\n        # Need to convert task.tools (list[TaskToolDef]) to list[Tool]\n        task_tools = []\n        tools = task.tools if task else []\n        inherit_tools = task.inherit_tools if task else False\n        secrets_query_result = await get_secrets_list(self.execution_input.developer_id, True)\n\n        if tools:\n            secrets = {secret.name: secret.value for secret in secrets_query_result}\n        for tool in tools:\n            tool_def = tool.model_dump()\n            spec = tool_def.pop(\"spec\", {}) or {}\n            evaluated_spec = (\n                evaluate_expressions(spec, values={\"secrets\": secrets}) if spec else {}\n            )\n            task_tools.append(\n                CreateToolRequest(**{tool_def[\"type\"]: evaluated_spec, **tool_def}),\n            )\n\n        if not inherit_tools:\n            return task_tools\n\n        # Remove duplicates from agent_tools\n        filtered_tools = [t for t in agent_tools if t.name not in (x.name for x in tools)]\n\n        return filtered_tools + task_tools\n\n    @computed_field\n    @property\n    # AIDEV-NOTE: Computed property to get the current workflow based on the cursor.\n    def current_workflow(self) -> Annotated[Workflow, Field(exclude=True)]:\n        workflows: list[Workflow] = self.execution_input.task.workflows\n        return next(wf for wf in workflows if wf.name == self.cursor.workflow)\n\n    @computed_field\n    @property\n    # AIDEV-NOTE: Computed property to get the current step definition based on the cursor.\n    def current_step(self) -> Annotated[WorkflowStep, Field(exclude=True)]:\n        return self.current_workflow.steps[self.cursor.step]\n\n    @computed_field\n    @property\n    # AIDEV-NOTE: Computed property to get the current scope ID from the cursor.\n    def current_scope_id(self) -> Annotated[UUID, Field(exclude=True)]:\n        return self.cursor.scope_id\n\n    @computed_field\n    @property\n    # AIDEV-NOTE: Computed property to check if the current step is the last step in the workflow.\n    def is_last_step(self) -> Annotated[bool, Field(exclude=True)]:\n        return (self.cursor.step + 1) == len(self.current_workflow.steps)\n\n    @computed_field\n    @property\n    # AIDEV-NOTE: Computed property to check if the current step is the first step in the workflow.\n    def is_first_step(self) -> Annotated[bool, Field(exclude=True)]:\n        return self.cursor.step == 0\n\n    @computed_field\n    @property\n    # AIDEV-NOTE: Computed property to check if the current workflow is the main workflow.\n    def is_main(self) -> Annotated[bool, Field(exclude=True)]:\n        return self.cursor.workflow == \"main\"\n\n    def model_dump(self, *args, **kwargs) -> dict[str, Any]:\n        dump = super().model_dump(*args, **kwargs)\n        execution_input: dict = dump.pop(\"execution_input\")\n\n        return dump | execution_input\n\n    # AIDEV-NOTE: Retrieves historical inputs, labels, and state for the current execution scope.\n    async def get_inputs(\n        self, limit: int = 50\n    ) -> tuple[list[Any], list[str | None], dict[str, Any]]:\n        if self.execution_input.execution is None:\n            return [], [], {}\n\n        inputs = []\n        labels = []\n        state = {}\n        scope_id = self.current_scope_id\n\n        transitions = await list_execution_inputs_data(\n            execution_id=self.execution_input.execution.id,\n            direction=\"asc\",\n            scope_id=scope_id,\n        )  # type: ignore[not-callable]\n        assert len(transitions) > 0, \"No transitions found\"\n\n        for transition in transitions:\n            inputs.append(transition.output)\n            labels.append(transition.step_label)\n\n        transitions = await list_execution_state_data(\n            execution_id=self.execution_input.execution.id,\n            direction=\"asc\",\n            scope_id=scope_id,\n        )  # type: ignore[not-callable]\n        for transition in transitions:\n            state.update(transition.output)\n\n        return inputs, labels, state\n\n    # AIDEV-NOTE: Prepares the step context by loading inputs and retrieving historical data for expression evaluation.\n    async def prepare_for_step(\n        self, limit: int = max_steps_accessible_in_tasks, connection_pool=None, *args, **kwargs\n    ) -> dict[str, Any]:\n        current_input = self.current_input\n\n        if isinstance(current_input, RemoteObject):\n            current_input = current_input.load()\n\n        current_input = serialize_model_data(current_input)\n\n        inputs, labels, state = await self.get_inputs(limit=limit)\n        labels = labels[1:]\n        # Merge execution inputs into the dump dict\n        dump = self.model_dump(*args, **kwargs)\n\n        steps = {}\n        for i, input in enumerate(inputs):\n            step = {}\n            step[\"input\"] = input\n            if i + 1 < len(inputs):\n                step[\"output\"] = inputs[i + 1]\n                if labels[i]:\n                    steps[labels[i]] = step\n\n            steps[i] = step\n\n        secrets_query_result = await get_secrets_list(\n            self.execution_input.developer_id, True, connection_pool=connection_pool\n        )\n        secrets = {secret.name: secret.value for secret in secrets_query_result}\n\n        dump[\"state\"] = state\n        dump[\"steps\"] = steps\n        dump[\"inputs\"] = {i: step[\"input\"] for i, step in steps.items()}\n        dump[\"outputs\"] = {i: step[\"output\"] for i, step in steps.items() if \"output\" in step}\n        dump[\"secrets\"] = secrets\n        return dump | {\"_\": current_input}\n\n\n# AIDEV-NOTE: Represents the outcome of executing a single task step.\nclass StepOutcome(BaseModel):\n    error: str | None = None\n    output: Any\n    transition_to: tuple[TransitionType, TransitionTarget | RemoteObject] | None = None\n\n    def load_remote(self) -> None:\n        if isinstance(self.transition_to[1], RemoteObject):\n            self.transition_to = (self.transition_to[0], self.transition_to[1].load())\n\n        if isinstance(self.output, RemoteObject):\n            self.output = self.output.load()\n\n        if isinstance(self.error, RemoteObject):\n            self.error = self.error.load()\n"
  },
  {
    "path": "src/agents-api/agents_api/common/retry_policies.py",
    "content": "# from datetime import timedelta\n\n# from temporalio.common import RetryPolicy\n\n# DEFAULT_RETRY_POLICY = RetryPolicy(\n#     initial_interval=timedelta(seconds=1),\n#     backoff_coefficient=2,\n#     maximum_attempts=25,\n#     maximum_interval=timedelta(seconds=300),\n# )\n\n# FIXME: Adding both interceptors and retry policy (even with `non_retryable_errors` not set)\n# is causing the errors to be retried. We need to find a workaround for this.\nDEFAULT_RETRY_POLICY = None\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/__init__.py",
    "content": "\"\"\"\nThe `utils` module within the `agents-api` project offers a collection of utility functions designed to support various aspects of the application. This includes:\n\n- `pg.py`: Utilities for interacting with the PostgreSQL API client, including data mutation processes.\n- `datetime.py`: Functions for handling date and time operations, ensuring consistent use of time zones and formats across the application.\n- `json.py`: Custom JSON utilities, including a custom JSON encoder for handling specific object types like UUIDs, and a utility function for JSON serialization with support for default values for None objects.\n- `memory.py`: Functions for memory management, including utilities to accurately calculate the size of complex nested objects.\n\nThese utilities are essential for the internal operations of the `agents-api`, providing common functionalities that are reused across different parts of the application.\n\"\"\"\n\nfrom .memory import total_size as total_size\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/checks.py",
    "content": "import logging\nfrom typing import Literal\nfrom uuid import UUID\n\nfrom httpx import AsyncClient\n\nfrom ...clients import litellm\nfrom ...clients.temporal import get_client\nfrom ...env import integration_service_url\nfrom ...queries.agents.list_agents import list_agents as list_agents_query\n\nHealthStatus = Literal[\"ok\", \"error\"]\nServiceHealth = dict[str, HealthStatus]\n\n\nasync def check_postgres() -> HealthStatus:\n    \"\"\"Check PostgreSQL database health.\"\"\"\n    try:\n        await list_agents_query(\n            developer_id=UUID(\"00000000-0000-0000-0000-000000000000\"),\n        )\n        return \"ok\"\n    except Exception as e:\n        logging.error(\"Postgres health check failed: %s\", str(e))\n        return \"error\"\n\n\nasync def check_temporal() -> HealthStatus:\n    \"\"\"Check Temporal service health.\"\"\"\n    try:\n        client = await get_client()\n        await client.count_workflows()\n        return \"ok\"\n    except Exception as e:\n        logging.error(\"Temporal health check failed: %s\", str(e))\n        return \"error\"\n\n\nasync def check_litellm() -> HealthStatus:\n    \"\"\"Check LiteLLM service health.\"\"\"\n    try:\n        await litellm.get_model_list()\n        return \"ok\"\n    except Exception as e:\n        logging.error(\"LiteLLM health check failed: %s\", str(e))\n        return \"error\"\n\n\nasync def check_integration_service() -> HealthStatus:\n    \"\"\"Check Integration service health.\"\"\"\n    try:\n        async with AsyncClient(timeout=10) as client:\n            response = await client.get(\n                f\"{integration_service_url}/integrations\",\n            )\n            response.raise_for_status()\n        return \"ok\"\n    except Exception as e:\n        logging.error(\"Integration service health check failed: %s\", str(e))\n        return \"error\"\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/datetime.py",
    "content": "#!/usr/bin/env python3\n\nfrom datetime import UTC, datetime\n\n\ndef utcnow():\n    return datetime.now(UTC)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/db_exceptions.py",
    "content": "\"\"\"\nCommon database exception handling utilities.\n\"\"\"\n\nimport inspect\nimport re\nimport socket\nfrom collections.abc import Callable\nfrom functools import partialmethod, wraps\n\nimport asyncpg\nimport pydantic\nfrom beartype.roar import BeartypeCallHintParamViolation\nfrom fastapi import HTTPException\n\nfrom agents_api.common.exceptions.validation import QueryParamsValidationError\n\ninvalid_ref_re = re.compile(r\"invalid (\\w+) reference\", re.IGNORECASE)\n\n\ndef partialclass(cls, *args, **kwargs):\n    cls_signature = inspect.signature(cls)\n    bound = cls_signature.bind_partial(*args, **kwargs)\n\n    # The `updated=()` argument is necessary to avoid a TypeError when using @wraps for a class\n    @wraps(cls, updated=())\n    class NewCls(cls):\n        __init__ = partialmethod(cls.__init__, *bound.args, **bound.kwargs)\n\n    return NewCls\n\n\ndef common_db_exceptions(\n    resource_name: str,\n    operations: list[str] | None = None,\n) -> dict[\n    type[BaseException] | Callable[[BaseException], bool],\n    type[BaseException] | Callable[[BaseException], BaseException],\n]:\n    \"\"\"\n    Returns a mapping of common database exceptions to appropriate HTTP exceptions.\n    This is commonly used with the @rewrap_exceptions decorator.\n\n    Args:\n        resource_name (str): The name of the resource being operated on (e.g. \"agent\", \"task\", \"user\")\n        operations (list[str] | None, optional): List of operations being performed.\n            Used to customize error messages. Defaults to None.\n\n    Returns:\n        dict: A mapping of database exceptions to HTTP exceptions\n    \"\"\"\n\n    # Helper to format operation-specific messages\n    def get_operation_message(base_msg: str) -> str:\n        if not operations:\n            return base_msg\n        op_str = \" or \".join(operations)\n        return f\"{base_msg} during {op_str}\"\n\n    def _invalid_reference_error(e: BaseException) -> HTTPException:\n        m = invalid_ref_re.match(str(e))\n        entity = \"\" if m is None else m.group(1)\n\n        return HTTPException(\n            status_code=409,\n            detail=get_operation_message(f\"Reference to {entity} not found\"),\n        )\n\n    exceptions = {\n        # Unique constraint violations - usually means a resource with same unique key exists\n        lambda e: isinstance(e, asyncpg.RaiseError)\n        and \"content already exists\" in str(e).lower(): partialclass(\n            HTTPException,\n            status_code=409,\n            detail=get_operation_message(f\"A {resource_name} with this content already exists\"),\n        ),\n        lambda e: isinstance(e, asyncpg.RaiseError)\n        and invalid_ref_re.match(str(e)): _invalid_reference_error,\n        # Invalid participant ID error\n        lambda e: isinstance(e, asyncpg.RaiseError)\n        and \"Invalid participant_id:\" in str(e): partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(\n                \"The specified participant ID is invalid for the given participant type\"\n            ),\n        ),\n        # Foreign key violations - usually means a referenced resource doesn't exist\n        asyncpg.ForeignKeyViolationError: partialclass(\n            HTTPException,\n            status_code=404,\n            detail=get_operation_message(\n                f\"The specified {resource_name} or its dependencies do not exist\",\n            ),\n        ),\n        # Unique constraint violations - usually means a resource with same unique key exists\n        asyncpg.UniqueViolationError: partialclass(\n            HTTPException,\n            status_code=409,\n            detail=get_operation_message(\n                f\"A {resource_name} with these unique properties already exists\",\n            ),\n        ),\n        # Check constraint violations - usually means invalid data that violates DB constraints\n        asyncpg.CheckViolationError: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(\n                f\"The provided {resource_name} data violates one or more constraints\",\n            ),\n        ),\n        # Data type/format errors\n        asyncpg.DataError: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(f\"Invalid {resource_name} data provided\"),\n        ),\n        # No rows found for update/delete operations\n        asyncpg.NoDataFoundError: partialclass(\n            HTTPException,\n            status_code=404,\n            detail=get_operation_message(f\"{resource_name.title()} not found\"),\n        ),\n        # Connection errors (timeouts, etc)\n        socket.gaierror: partialclass(\n            HTTPException,\n            status_code=429,\n            detail=\"Resource busy. Please try again later.\",\n        ),\n        # Invalid text representation\n        asyncpg.InvalidTextRepresentationError: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(f\"Invalid text format in {resource_name} data\"),\n        ),\n        # Numeric value out of range\n        asyncpg.NumericValueOutOfRangeError: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(\n                f\"Numeric value in {resource_name} data is out of allowed range\",\n            ),\n        ),\n        # String data right truncation\n        asyncpg.StringDataRightTruncationError: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(\n                f\"Text data in {resource_name} is too long for the field\",\n            ),\n        ),\n        # Not null violation\n        asyncpg.NotNullViolationError: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(f\"Required {resource_name} field cannot be null\"),\n        ),\n        # Python standard exceptions\n        ValueError: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(f\"Invalid value provided for {resource_name}\"),\n        ),\n        TypeError: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=get_operation_message(f\"Invalid type for {resource_name}\"),\n        ),\n        AttributeError: partialclass(\n            HTTPException,\n            status_code=404,\n            detail=get_operation_message(f\"Required attribute not found for {resource_name}\"),\n        ),\n        KeyError: partialclass(\n            HTTPException,\n            status_code=404,\n            detail=get_operation_message(f\"Required key not found for {resource_name}\"),\n        ),\n        AssertionError: partialclass(\n            HTTPException,\n            status_code=404,\n            detail=get_operation_message(f\"No {resource_name} found\"),\n        ),\n        # Pydantic validation errors - note that FastAPI will handle these\n        # through its own exception handler for RequestValidationError\n        pydantic.ValidationError: lambda e: partialclass(\n            HTTPException,\n            status_code=422,\n            detail={\n                \"message\": get_operation_message(f\"Validation failed for {resource_name}\"),\n                \"code\": \"validation_error\",\n                \"details\": e.errors(),\n            },\n        )(e),\n        QueryParamsValidationError: lambda e: partialclass(\n            HTTPException,\n            status_code=400,\n            detail=str(e),\n        ),\n        lambda e: isinstance(e, BeartypeCallHintParamViolation)\n        and \"typing.Literal['asc', 'desc']\" in str(e): partialclass(\n            HTTPException,\n            status_code=400,\n            detail=\"Invalid sort direction\",\n        ),\n        lambda e: isinstance(e, BeartypeCallHintParamViolation)\n        and (\n            \"typing.Literal['created_at', 'updated_at']\" in str(e)\n            or \"typing.Literal['created_at', 'timestamp']\" in str(e)\n        ): partialclass(\n            HTTPException,\n            status_code=400,\n            detail=\"Invalid sort field\",\n        ),\n    }\n\n    # Add operation-specific exceptions\n    if operations:\n        if \"delete\" in operations:\n            exceptions.update({\n                # Handle cases where deletion is blocked by dependent records\n                lambda e: isinstance(e, asyncpg.ForeignKeyViolationError)\n                and \"still referenced\" in str(e): partialclass(\n                    HTTPException,\n                    status_code=409,\n                    detail=f\"Cannot delete {resource_name} because it is still referenced by other records\",\n                ),\n            })\n\n        if \"update\" in operations:\n            exceptions.update({\n                # Handle cases where update would affect multiple rows\n                asyncpg.CardinalityViolationError: partialclass(\n                    HTTPException,\n                    status_code=409,\n                    detail=f\"Update would affect multiple {resource_name} records\",\n                ),\n            })\n\n    return exceptions\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/evaluator.py",
    "content": "import asyncio\nimport base64\nimport csv\nimport datetime as dt\nimport io\nimport json\nimport math\nimport random\nimport statistics\nimport string\nimport time\nimport urllib.parse\nfrom collections import deque\nfrom collections.abc import Callable, Sequence\nfrom dataclasses import dataclass\nfrom functools import reduce\nfrom threading import Lock as ThreadLock\nfrom typing import Any, Literal, ParamSpec, TypeVar, cast\n\nimport markdown2\nimport markdownify\nimport re2\nfrom beartype import beartype\nfrom simpleeval import EvalWithCompoundTypes, SimpleEval\n\nfrom ...autogen.openapi_model import SystemDef\nfrom ...common.nlp import nlp\nfrom . import yaml\nfrom .humanization_utils import humanize_paragraph, reassemble_markdown, split_with_langchain\n\n# Security limits\nMAX_STRING_LENGTH = 1_000_000  # 1MB\nMAX_COLLECTION_SIZE = 10_000\nMAX_RANGE_SIZE = 1_000_000\n\nT = TypeVar(\"T\")\nR = TypeVar(\"R\")\nP = ParamSpec(\"P\")\n\n\ndef safe_range(*args):\n    result = range(*args)\n    if len(result) > MAX_RANGE_SIZE:\n        msg = f\"Range size exceeds maximum of {MAX_RANGE_SIZE}\"\n        raise ValueError(msg)\n    return result\n\n\n@beartype\ndef safe_json_loads(s: str) -> Any:\n    \"\"\"\n    Safely load a JSON string with size limits.\n\n    Args:\n        s: JSON string to parse\n\n    Returns:\n        Parsed JSON data\n\n    Raises:\n        ValueError: If string exceeds size limit\n    \"\"\"\n    if len(s) > MAX_STRING_LENGTH:\n        msg = f\"String exceeds maximum length of {MAX_STRING_LENGTH}\"\n        raise ValueError(msg)\n    return json.loads(s)\n\n\n@beartype\ndef safe_yaml_load(s: str) -> Any:\n    \"\"\"\n    Safely load a YAML string with size limits.\n\n    Args:\n        s: YAML string to parse\n\n    Returns:\n        Parsed YAML data\n\n    Raises:\n        ValueError: If string exceeds size limit\n    \"\"\"\n    if len(s) > MAX_STRING_LENGTH:\n        msg = f\"String exceeds maximum length of {MAX_STRING_LENGTH}\"\n        raise ValueError(msg)\n    return yaml.load(s)\n\n\n@beartype\ndef safe_base64_decode(s: str) -> str:\n    \"\"\"\n    Safely decode a base64 string with size limits.\n\n    Args:\n        s: Base64 string to decode\n\n    Returns:\n        Decoded UTF-8 string\n\n    Raises:\n        ValueError: If string exceeds size limit or is invalid base64\n    \"\"\"\n    if len(s) > MAX_STRING_LENGTH:\n        msg = f\"String exceeds maximum length of {MAX_STRING_LENGTH}\"\n        raise ValueError(msg)\n    try:\n        return base64.b64decode(s).decode(\"utf-8\")\n    except Exception as e:\n        msg = f\"Invalid base64 string: {e}\"\n        raise ValueError(msg)\n\n\n@beartype\ndef safe_base64_encode(s: str) -> str:\n    \"\"\"\n    Safely encode a string to base64 with size limits.\n\n    Args:\n        s: String to encode\n\n    Returns:\n        Base64 encoded string\n\n    Raises:\n        ValueError: If string exceeds size limit\n    \"\"\"\n    if len(s) > MAX_STRING_LENGTH:\n        msg = f\"String exceeds maximum length of {MAX_STRING_LENGTH}\"\n        raise ValueError(msg)\n    return base64.b64encode(s.encode(\"utf-8\")).decode(\"utf-8\")\n\n\n@beartype\ndef safe_random_choice(seq: list[Any] | tuple[Any, ...] | str) -> Any:\n    \"\"\"\n    Safely choose a random element from a sequence with size limits.\n\n    Args:\n        seq: A sequence (list, tuple, or string) to choose from\n\n    Returns:\n        A randomly selected element\n\n    Raises:\n        ValueError: If sequence exceeds size limit\n        TypeError: If input is not a valid sequence type\n    \"\"\"\n    if len(seq) > MAX_COLLECTION_SIZE:\n        msg = f\"Sequence exceeds maximum size of {MAX_COLLECTION_SIZE}\"\n        raise ValueError(msg)\n    return random.choice(seq)\n\n\n@beartype\ndef safe_random_sample(population: list[T] | tuple[T, ...] | str, k: int) -> list[T]:\n    \"\"\"\n    Safely sample k elements from a population with size limits.\n\n    Args:\n        population: A sequence to sample from\n        k: Number of elements to sample\n\n    Returns:\n        A list containing k randomly selected elements\n\n    Raises:\n        ValueError: If population/sample size exceeds limits\n        TypeError: If input is not a valid sequence type\n    \"\"\"\n    if not isinstance(population, list | tuple | str):\n        msg = \"Expected a sequence (list, tuple, or string)\"\n        raise TypeError(msg)\n    if len(population) > MAX_COLLECTION_SIZE:\n        msg = f\"Population exceeds maximum size of {MAX_COLLECTION_SIZE}\"\n        raise ValueError(msg)\n    if k > MAX_COLLECTION_SIZE:\n        msg = f\"Sample size exceeds maximum of {MAX_COLLECTION_SIZE}\"\n        raise ValueError(msg)\n    if k > len(population):\n        msg = \"Sample size cannot exceed population size\"\n        raise ValueError(msg)\n    # AIDEV-NOTE: cast random.sample's return to list[T] for type-checker\n    return cast(list[T], random.sample(population, k))\n\n\n@beartype\ndef chunk_doc(string: str) -> list[str]:\n    \"\"\"\n    Chunk a string into sentences.\n\n    Args:\n        string: The text to chunk into sentences\n\n    Returns:\n        A list of sentence chunks\n\n    Raises:\n        ValueError: If string exceeds size limit\n    \"\"\"\n    if len(string) > MAX_STRING_LENGTH:\n        msg = f\"String exceeds maximum length of {MAX_STRING_LENGTH}\"\n        raise ValueError(msg)\n    doc = nlp(string)\n    return [\" \".join([sent.text for sent in chunk]) for chunk in doc._.chunks]\n\n\ndef safe_extract_json(string: str):\n    \"\"\"\n    Safely extract and parse JSON from a string, handling code blocks.\n\n    Args:\n        string: String that may contain JSON data, possibly in a code block\n\n    Returns:\n        Parsed JSON data\n\n    Raises:\n        ValueError: If string exceeds size limit or JSON parsing fails\n    \"\"\"\n    if len(string) > MAX_STRING_LENGTH:\n        msg = f\"String exceeds maximum length of {MAX_STRING_LENGTH}\"\n        raise ValueError(msg)\n\n    # Check if the string contains code block markers (support both ```json and plain ```)\n    if \"```\" in string:\n        # First try ```json blocks\n        if \"```json\" in string:\n            start_marker = string.find(\"```json\") + 7\n            end_marker = string.find(\"```\", start_marker)\n        # Then try plain ``` blocks that might contain JSON\n        else:\n            start_marker = string.find(\"```\") + 3\n            end_marker = string.find(\"```\", start_marker)\n\n        # Verify we found a valid start marker\n        if \"```json\" in string and start_marker < 7:\n            # If ```json wasn't found, find returns -1, so start_marker would be 6\n            msg = \"Code block has invalid or missing markers\"\n            raise ValueError(msg)\n        if \"```json\" not in string and start_marker < 3:\n            # If ``` wasn't found, find returns -1, so start_marker would be 2\n            msg = \"Code block has invalid or missing markers\"\n            raise ValueError(msg)\n\n        # Extract from code block if end marker was found\n        if end_marker != -1:\n            extracted_string = string[start_marker:end_marker].strip()\n        else:\n            # If incomplete markers, raise a specific error\n            msg = \"Code block has invalid or missing markers\"\n            raise ValueError(msg)\n    else:\n        # If no markers, try to parse the whole string as JSON\n        extracted_string = string\n\n    try:\n        return json.loads(extracted_string, strict=False)\n    except json.JSONDecodeError as e:\n        # Provide a more helpful error message with context\n        msg = f\"Failed to parse JSON: {e}. The extracted text was: {extracted_string[:100]}...\"\n        raise ValueError(msg) from e\n\n\ndef humanize_text(\n    text: str,\n    threshold: float = 90,\n    src_lang: str = \"english\",\n    target_lang: str = \"german\",\n    grammar_check: bool = False,\n    use_homoglyphs: bool = True,\n    use_em_dashes: bool = True,\n    max_tries: int = 10,\n) -> str:\n    paragraphs = split_with_langchain(text)\n\n    for paragraph in paragraphs:\n        paragraph_content = paragraph.page_content\n        paragraph.page_content = humanize_paragraph(\n            paragraph=paragraph_content,\n            threshold=threshold,\n            src_lang=src_lang,\n            target_lang=target_lang,\n            grammar_check=grammar_check,\n            use_homoglyphs=use_homoglyphs,\n            use_em_dashes=use_em_dashes,\n            max_tries=max_tries,\n        )\n    return reassemble_markdown(paragraphs)\n\n\ndef markdown_to_html(markdown_text: str) -> str:\n    \"\"\"\n    Convert markdown text to HTML.\n\n    Args:\n        markdown_text: String containing markdown formatted text\n\n    Returns:\n        HTML formatted string\n    \"\"\"\n    markdowner = markdown2.Markdown()\n    return markdowner.convert(markdown_text)\n\n\ndef html_to_markdown(html_text: str) -> str:\n    \"\"\"\n    Convert HTML text to markdown.\n\n    Args:\n        html_text: String containing HTML formatted text\n\n    Returns:\n        Markdown formatted string\n    \"\"\"\n    return markdownify.markdownify(html_text)\n\n\n# Restricted set of allowed functions\nALLOWED_FUNCTIONS = {\n    # Basic Python builtins\n    \"abs\": abs,\n    \"all\": all,\n    \"any\": any,\n    \"bool\": bool,\n    \"dict\": dict,\n    \"enumerate\": enumerate,\n    \"float\": float,\n    \"int\": int,\n    \"len\": len,\n    \"list\": list,\n    \"map\": map,\n    \"max\": max,\n    \"min\": min,\n    \"round\": round,\n    \"set\": set,\n    \"str\": str,\n    \"sum\": sum,\n    \"tuple\": tuple,\n    \"zip\": zip,\n    \"reduce\": reduce,\n    # Safe versions of potentially dangerous functions\n    \"range\": safe_range,\n    \"load_json\": safe_json_loads,\n    \"load_yaml\": safe_yaml_load,\n    \"dump_json\": json.dumps,\n    \"dump_yaml\": yaml.dump,\n    \"extract_json\": safe_extract_json,\n    # Regex and NLP functions (using re2 which is safe against ReDoS)\n    \"search_regex\": lambda pattern, string: re2.search(pattern, string),\n    \"match_regex\": lambda pattern, string: bool(re2.fullmatch(pattern, string)),\n    \"nlp\": nlp.__call__,\n    \"chunk_doc\": chunk_doc,\n    # FIXME: This is a temporary function to be removed after implementing the humanization logic as an integration tool\n    \"humanize_text_alpha\": humanize_text,\n    \"markdown_to_html\": markdown_to_html,\n    \"html_to_markdown\": html_to_markdown,\n}\n\n\ndef csv_reader(\n    data: str,\n    dialect: str = \"excel\",\n    delimiter: str = \",\",\n    quotechar: str | None = '\"',\n    escapechar: str | None = None,\n    doublequote: bool = True,\n    skipinitialspace: bool = False,\n    lineterminator: str = \"\\r\\n\",\n    quoting: int = 0,\n    strict: bool = False,\n):\n    return csv.reader(\n        io.StringIO(data),\n        dialect,\n        delimiter=delimiter,\n        quotechar=quotechar,\n        escapechar=escapechar,\n        doublequote=doublequote,\n        skipinitialspace=skipinitialspace,\n        lineterminator=lineterminator,\n        quoting=quoting,\n        strict=strict,\n    )\n\n\ndef csv_writer(\n    data: str,\n    dialect: str = \"excel\",\n    delimiter: str = \",\",\n    quotechar: str | None = '\"',\n    escapechar: str | None = None,\n    doublequote: bool = True,\n    skipinitialspace: bool = False,\n    lineterminator: str = \"\\r\\n\",\n    quoting: int = 0,\n    strict: bool = False,\n):\n    return csv.writer(\n        io.StringIO(data),\n        dialect,\n        delimiter=delimiter,\n        quotechar=quotechar,\n        escapechar=escapechar,\n        doublequote=doublequote,\n        skipinitialspace=skipinitialspace,\n        lineterminator=lineterminator,\n        quoting=quoting,\n        strict=strict,\n    )\n\n\ndef csv_dictreader(\n    data: str,\n    fieldnames: Sequence[str] | None = None,\n    restkey=None,\n    restval=None,\n    dialect: str = \"excel\",\n    *args,\n    **kwds,\n):\n    return csv.DictReader(\n        io.StringIO(data),\n        fieldnames=fieldnames,\n        restkey=restkey,\n        restval=restval,\n        dialect=dialect,\n        *args,\n        **kwds,\n    )\n\n\ndef csv_dictwriter(\n    data: str,\n    fieldnames: Sequence[str],\n    restval: str = \"\",\n    extrasaction: Literal[\"raise\", \"ignore\"] = \"raise\",\n    dialect: str = \"excel\",\n    *args,\n    **kwds,\n):\n    return csv.DictWriter(\n        io.StringIO(data),\n        fieldnames,\n        restval=restval,\n        extrasaction=extrasaction,\n        dialect=dialect,\n        *args,\n        **kwds,\n    )\n\n\nclass stdlib_csv:\n    reader = staticmethod(csv_reader)\n    writer = staticmethod(csv_writer)\n    register_dialect = csv.register_dialect\n    unregister_dialect = csv.unregister_dialect\n    get_dialect = csv.get_dialect\n    list_dialects = csv.list_dialects\n    field_size_limit = csv.field_size_limit\n    DictReader = staticmethod(csv_dictreader)\n    DictWriter = staticmethod(csv_dictwriter)\n    Dialect = csv.Dialect\n    excel = csv.excel\n    excel_tab = csv.excel_tab\n    unix_dialect = csv.unix_dialect\n    Sniffer = csv.Sniffer\n    QUOTE_ALL = csv.QUOTE_ALL\n    QUOTE_MINIMAL = csv.QUOTE_MINIMAL\n    QUOTE_NONNUMERIC = csv.QUOTE_NONNUMERIC\n    QUOTE_NONE = csv.QUOTE_NONE\n    QUOTE_NOTNULL = csv.QUOTE_NOTNULL\n    QUOTE_STRINGS = csv.QUOTE_STRINGS\n    Error = csv.Error\n\n\n# Safe regex operations (using re2)\nclass stdlib_re:\n    fullmatch = re2.fullmatch\n    search = re2.search\n    escape = re2.escape\n    findall = re2.findall\n    finditer = re2.finditer\n    match = re2.match\n    split = re2.split\n    sub = re2.sub\n    subn = re2.subn\n\n\n# Safe JSON operations\nclass stdlib_json:\n    loads = safe_json_loads\n    dumps = json.dumps\n\n\n# Safe YAML operations\nclass stdlib_yaml:\n    load = safe_yaml_load\n    dump = yaml.dump\n    safe_load = safe_yaml_load\n    safe_dump = yaml.dump\n\n\n# Safe string constants\nclass stdlib_string:\n    ascii_letters = string.ascii_letters\n    ascii_lowercase = string.ascii_lowercase\n    ascii_uppercase = string.ascii_uppercase\n    digits = string.digits\n    hexdigits = string.hexdigits\n    octdigits = string.octdigits\n    punctuation = string.punctuation\n    whitespace = string.whitespace\n    printable = string.printable\n\n\n# Safe datetime operations\nclass stdlib_datetime:\n    class timezone:\n        class utc:\n            utc = dt.UTC\n\n    class datetime:\n        now = dt.datetime.now\n        datetime = dt.datetime\n        timedelta = dt.timedelta\n        date = dt.date\n        time = dt.time\n\n    timedelta = dt.timedelta\n\n\n# Safe math operations\nclass stdlib_math:\n    sqrt = math.sqrt\n    exp = math.exp\n    ceil = math.ceil\n    floor = math.floor\n    isinf = math.isinf\n    isnan = math.isnan\n    log = math.log\n    log10 = math.log10\n    log2 = math.log2\n    pow = math.pow\n    sin = math.sin\n    cos = math.cos\n    tan = math.tan\n    asin = math.asin\n    acos = math.acos\n    atan = math.atan\n    atan2 = math.atan2\n\n    pi = math.pi\n    e = math.e\n\n\n# Safe statistics operations\nclass stdlib_statistics:\n    mean = statistics.mean\n    stdev = statistics.stdev\n    geometric_mean = statistics.geometric_mean\n    median = statistics.median\n    median_low = statistics.median_low\n    median_high = statistics.median_high\n    mode = statistics.mode\n    quantiles = statistics.quantiles\n\n\n# Safe base64 operations\nclass stdlib_base64:\n    b64encode = safe_base64_encode\n    b64decode = safe_base64_decode\n\n\n# Safe URL parsing operations\nclass stdlib_urllib:\n    class parse:\n        # Safe URL parsing operations that don't touch filesystem/network\n        urlparse = urllib.parse.urlparse\n        urlencode = urllib.parse.urlencode\n        unquote = urllib.parse.unquote\n        quote = urllib.parse.quote\n        parse_qs = urllib.parse.parse_qs\n        parse_qsl = urllib.parse.parse_qsl\n        urlsplit = urllib.parse.urlsplit\n\n\n# Safe random operations\nclass stdlib_random:\n    # Limit to safe operations with bounded inputs\n    choice = safe_random_choice\n    sample = safe_random_sample\n    # Safe bounded random number generators\n    randint = random.randint  # Already bounded by integer limits\n    random = random.random  # Always returns 0.0 to 1.0\n\n\n# Safe time operations\nclass stdlib_time:\n    # Time formatting/parsing operations\n    strftime = time.strftime\n    strptime = time.strptime\n    # Current time (safe, no side effects)\n    time = time.time\n\n\n# Restricted stdlib with only safe operations\nstdlib = {\n    \"re\": stdlib_re,\n    \"json\": stdlib_json,\n    \"yaml\": stdlib_yaml,\n    \"string\": stdlib_string,\n    \"datetime\": stdlib_datetime,\n    \"math\": stdlib_math,\n    \"statistics\": stdlib_statistics,\n    \"base64\": stdlib_base64,\n    \"urllib\": stdlib_urllib,\n    \"random\": stdlib_random,\n    \"time\": stdlib_time,\n    \"csv\": stdlib_csv,\n}\n\nconstants = {\n    \"NEWLINE\": \"\\n\",\n    \"true\": True,\n    \"false\": False,\n    \"null\": None,\n}\n\n\n@beartype\ndef get_evaluator(\n    names: dict[str, Any],\n    extra_functions: dict[str, Callable] | None = None,\n) -> SimpleEval:\n    if len(names) > MAX_COLLECTION_SIZE:\n        msg = f\"Too many variables (max {MAX_COLLECTION_SIZE})\"\n        raise ValueError(msg)\n\n    evaluator = EvalWithCompoundTypes(\n        names=names | stdlib | constants,\n        functions=ALLOWED_FUNCTIONS | (extra_functions or {}),\n    )\n\n    # Add maximum execution time\n    evaluator.TIMEOUT = 1.0  # 1 second timeout\n\n    return evaluator\n\n\ndef get_handler_with_filtered_params(system: SystemDef) -> Callable:\n    \"\"\"\n    Get the appropriate handler function based on the SystemDef.\n\n    Parameters:\n        system (SystemDef): The system definition to get the handler for.\n\n    Returns:\n        A wrapped handler function with problematic parameters filtered out\n        from its signature for JSON schema serialization.\n    \"\"\"\n\n    from functools import wraps\n    from inspect import signature\n\n    # Get the base handler based on system definition\n    base_handler = get_handler(system)\n\n    # Skip parameters that can't be serialized to JSON schema\n    parameters_to_exclude = [\"background_tasks\", \"connection_pool\"]\n\n    # Get the original signature\n    sig = signature(base_handler)\n\n    # Create a new function with filtered parameters\n    @wraps(base_handler)\n    def filtered_handler(*args, **kwargs):\n        return base_handler(*args, **kwargs)\n\n    # Remove problematic parameters\n    filtered_handler.__signature__ = sig.replace(\n        parameters=[p for p in sig.parameters.values() if p.name not in parameters_to_exclude],\n    )\n\n    return filtered_handler\n\n\ndef get_handler(system: SystemDef) -> Callable:\n    \"\"\"\n    Internal function to get the base handler without parameter filtering.\n\n    Parameters:\n        system (SystemDef): The system definition to get the handler for.\n\n    Returns:\n        The base handler function.\n    \"\"\"\n\n    from ...queries.agents.create_agent import create_agent as create_agent_query\n    from ...queries.agents.delete_agent import delete_agent as delete_agent_query\n    from ...queries.agents.get_agent import get_agent as get_agent_query\n    from ...queries.agents.list_agents import list_agents as list_agents_query\n    from ...queries.agents.update_agent import update_agent as update_agent_query\n    from ...queries.docs.delete_doc import delete_doc as delete_doc_query\n    from ...queries.docs.list_docs import list_docs as list_docs_query\n    from ...queries.entries.get_history import get_history as get_history_query\n    from ...queries.sessions.create_or_update_session import (\n        create_or_update_session as create_or_update_session_query,\n    )\n    from ...queries.sessions.create_session import create_session as create_session_query\n    from ...queries.sessions.get_session import get_session as get_session_query\n    from ...queries.sessions.list_sessions import list_sessions as list_sessions_query\n    from ...queries.sessions.update_session import update_session as update_session_query\n    from ...queries.tasks.create_task import create_task as create_task_query\n    from ...queries.tasks.delete_task import delete_task as delete_task_query\n    from ...queries.tasks.get_task import get_task as get_task_query\n    from ...queries.tasks.list_tasks import list_tasks as list_tasks_query\n    from ...queries.tasks.update_task import update_task as update_task_query\n    from ...queries.users.create_user import create_user as create_user_query\n    from ...queries.users.delete_user import delete_user as delete_user_query\n    from ...queries.users.get_user import get_user as get_user_query\n    from ...queries.users.list_users import list_users as list_users_query\n    from ...queries.users.update_user import update_user as update_user_query\n\n    # FIXME: Do not use routes directly;\n    from ...routers.docs.create_doc import create_agent_doc, create_user_doc\n    from ...routers.docs.search_docs import search_agent_docs, search_user_docs\n    from ...routers.sessions.chat import chat\n    from ...routers.tasks.create_task_execution import create_task_execution\n\n    match (system.resource, system.subresource, system.operation):\n        # AGENTS\n        case (\"agent\", \"doc\", \"list\"):\n            return list_docs_query\n        case (\"agent\", \"doc\", \"create\"):\n            return create_agent_doc\n        case (\"agent\", \"doc\", \"delete\"):\n            return delete_doc_query\n        case (\"agent\", \"doc\", \"search\"):\n            return search_agent_docs\n        case (\"agent\", None, \"list\"):\n            return list_agents_query\n        case (\"agent\", None, \"get\"):\n            return get_agent_query\n        case (\"agent\", None, \"create\"):\n            return create_agent_query\n        case (\"agent\", None, \"update\"):\n            return update_agent_query\n        case (\"agent\", None, \"delete\"):\n            return delete_agent_query\n\n        # USERS\n        case (\"user\", \"doc\", \"list\"):\n            return list_docs_query\n        case (\"user\", \"doc\", \"create\"):\n            return create_user_doc\n        case (\"user\", \"doc\", \"delete\"):\n            return delete_doc_query\n        case (\"user\", \"doc\", \"search\"):\n            return search_user_docs\n        case (\"user\", None, \"list\"):\n            return list_users_query\n        case (\"user\", None, \"get\"):\n            return get_user_query\n        case (\"user\", None, \"create\"):\n            return create_user_query\n        case (\"user\", None, \"update\"):\n            return update_user_query\n        case (\"user\", None, \"delete\"):\n            return delete_user_query\n\n        # SESSIONS\n        case (\"session\", None, \"list\"):\n            return list_sessions_query\n        case (\"session\", None, \"get\"):\n            return get_session_query\n        case (\"session\", None, \"create\"):\n            return create_session_query\n        case (\"session\", None, \"update\"):\n            return update_session_query\n        case (\"session\", None, \"create_or_update\"):\n            return create_or_update_session_query\n        case (\"session\", None, \"chat\"):\n            return chat\n        case (\"session\", None, \"history\"):\n            return get_history_query\n\n        # TASKS\n        case (\"task\", None, \"list\"):\n            return list_tasks_query\n        case (\"task\", None, \"get\"):\n            return get_task_query\n        case (\"task\", None, \"create\"):\n            return create_task_query\n        case (\"task\", None, \"update\"):\n            return update_task_query\n        case (\"task\", None, \"delete\"):\n            return delete_task_query\n        case (\"task\", \"execution\", \"create\"):\n            # AIDEV-NOTE: Surface Temporal-backed execution creation for system tools.\n            return create_task_execution\n\n        case _:\n            msg = f\"System call not implemented for {system.resource}.{system.operation}\"\n            raise NotImplementedError(msg)\n\n\n@dataclass\nclass RateLimiter:\n    max_requests: int  # Maximum requests per minute\n    window_size: int = 60  # Window size in seconds (1 minute)\n\n    def __post_init__(self) -> None:\n        self._requests = deque()\n        self._lock = ThreadLock()  # Thread-safe lock\n        self._async_lock = asyncio.Lock()  # Async-safe lock\n\n    def _clean_old_requests(self) -> None:\n        now = time.time()\n        while self._requests and now - self._requests[0] > self.window_size:\n            self._requests.popleft()\n\n    async def acquire(self) -> bool:\n        async with self._async_lock:\n            with self._lock:\n                now = time.time()\n                self._clean_old_requests()\n\n                if len(self._requests) >= self.max_requests:\n                    return False\n\n                self._requests.append(now)\n                return True\n\n    @property\n    def current_usage(self) -> int:\n        \"\"\"Return current number of requests in the window\"\"\"\n        with self._lock:\n            self._clean_old_requests()\n            return len(self._requests)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/expressions.py",
    "content": "import ast\nfrom typing import Any\n\nimport simpleeval\nfrom beartype import beartype\nfrom box import Box\nfrom openai import BaseModel\n\n# Increase the max string length to 2048000\nsimpleeval.MAX_STRING_LENGTH = 2048000\n\nMAX_COLLECTION_SIZE = 1000  # Maximum number of variables allowed in evaluator\n\nfrom simpleeval import SimpleEval\nfrom temporalio import activity\n\nfrom ..exceptions.executions import EvaluateError\nfrom ..utils.task_validation import backwards_compatibility\nfrom .evaluator import get_evaluator\n\n\n# Recursive evaluation helper function\ndef _recursive_evaluate(expr, evaluator: SimpleEval):\n    # Handle PyExpression type from the model\n    if hasattr(expr, \"root\") and isinstance(expr.root, str):\n        # Extract the string from the RootModel\n        expr = expr.root\n\n    if isinstance(expr, str):\n        try:\n            expr = backwards_compatibility(expr)\n            expr = expr.strip()\n            if isinstance(expr, str) and expr.startswith(\"$ \"):\n                # Remove $ and any space after it\n                expr = expr[1:].strip()\n            else:\n                expr = f\"f'''{expr}'''\"\n            return evaluator.eval(expr)\n        except Exception as e:\n            evaluate_error = EvaluateError(e, expr, evaluator.names)\n            if activity.in_activity():\n                activity.logger.error(f\"Error in base_evaluate: {evaluate_error}\\n\")\n            raise evaluate_error from e\n    elif isinstance(expr, int | bool | float) or expr is None:\n        return expr\n    elif isinstance(expr, list):\n        return [_recursive_evaluate(e, evaluator) for e in expr]\n    elif isinstance(expr, dict):\n        return {k: _recursive_evaluate(v, evaluator) for k, v in expr.items()}\n    else:\n        try:\n            str_expr = str(expr)\n            return _recursive_evaluate(str_expr, evaluator)\n        except Exception:\n            msg = f\"Invalid expression: {expr}\"\n            raise ValueError(msg)\n\n\n@beartype\ndef evaluate_expressions(\n    exprs: Any,\n    values: dict[str, Any] | None = None,\n    extra_lambda_strs: dict[str, str] | None = None,\n) -> Any | list[Any] | dict[str, Any]:\n    if values is None:\n        values = {}\n    # Handle PyExpression objects and strings similarly\n    if isinstance(exprs, str) or (hasattr(exprs, \"root\") and isinstance(exprs.root, str)):\n        input_len = 1\n    else:\n        input_len = len(exprs)\n\n    assert input_len > 0, \"exprs must be a non-empty string, PyExpression, list or dict\"\n\n    extra_lambdas = {}\n    if extra_lambda_strs:\n        for k, v in extra_lambda_strs.items():\n            v = v.strip()\n\n            # Check that all extra lambdas are valid\n            assert v.startswith(\"lambda \"), \"All extra lambdas must start with 'lambda'\"\n\n            try:\n                ast.parse(v)\n            except Exception as e:\n                msg = f\"Invalid lambda: {v}\"\n                raise ValueError(msg) from e\n\n            # Eval the lambda and add it to the extra lambdas\n            extra_lambdas[k] = eval(v)\n\n    # Turn the nested dict values from pydantic to dicts where possible\n    values = {k: v.model_dump() if isinstance(v, BaseModel) else v for k, v in values.items()}\n\n    # frozen_box doesn't work coz we need some mutability in the values\n    values = Box(values, frozen_box=False, conversion_box=True)\n\n    evaluator: SimpleEval = get_evaluator(names=values, extra_functions=extra_lambdas)\n\n    # Recursively evaluate the expression\n    return _recursive_evaluate(exprs, evaluator)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/feature_flags.py",
    "content": "\"\"\"\nFeature flags utility module for Julep agents-api.\nProvides convenience functions for feature flag management.\n\"\"\"\n\nfrom agents_api.clients.feature_flags import FeatureFlagContext, get_feature_flag_client\n\n\ndef get_environment() -> str:\n    \"\"\"Get current environment for feature flag context.\"\"\"\n    return \"development\"\n\n\ndef get_feature_flag_value(\n    flag_name: str,\n    default_value: bool = False,\n    developer_id: str | None = None,\n    **additional_context,\n) -> bool:\n    \"\"\"\n    Generic function to get any boolean feature flag value.\n\n    Args:\n        flag_name: Name of the feature flag\n        default_value: Default value if flag evaluation fails\n        developer_id: Developer ID for targeting (optional)\n        **additional_context: Additional context attributes\n\n    Returns:\n        The feature flag value\n    \"\"\"\n    context: FeatureFlagContext = {\"environment\": get_environment(), **additional_context}\n    if developer_id:\n        context[\"developer_id\"] = developer_id\n\n    return get_feature_flag_client().is_enabled(flag_name, default_value, context)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/get_doc_search.py",
    "content": "from typing import Any\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom langcodes import Language\n\nfrom ...autogen.openapi_model import (\n    DocReference,\n    HybridDocSearchRequest,\n    TextOnlyDocSearchRequest,\n    VectorDocSearchRequest,\n)\nfrom ...env import enable_hybrid_trigram_search\nfrom ...queries.docs.search_docs_by_embedding import search_docs_by_embedding\nfrom ...queries.docs.search_docs_by_text import search_docs_by_text\nfrom ...queries.docs.search_docs_hybrid import search_docs_hybrid\n\n\n@beartype\ndef get_language(lang: str) -> str:\n    error_msg = \"Invalid ISO 639 language code.\"\n\n    try:\n        language_obj = Language.get(lang)\n\n        # Validate language code\n        if not language_obj.is_valid():\n            raise HTTPException(status_code=422, detail=error_msg)\n\n        # Check for malformed complex language tags\n        if \"-\" in lang and not (language_obj.territory or language_obj.script):\n            parts = lang.split(\"-\")\n            if len(parts) > 1 and any(len(part) > 3 for part in parts[1:]):\n                raise HTTPException(status_code=422, detail=error_msg)\n\n        # Get language name from description\n        language = language_obj.describe().get(\"language\", \"english\")\n        if not language:\n            raise HTTPException(status_code=422, detail=\"Language description is empty\")\n\n        # Special case for English\n        return \"english_unaccent\" if language.lower() == \"english\" else language.lower()\n\n    except (ValueError, AttributeError, KeyError):\n        raise HTTPException(status_code=422, detail=error_msg)\n\n\ndef get_search_fn_and_params(\n    search_params,\n    *,\n    extract_keywords: bool = False,\n) -> tuple[\n    Any,\n    dict[str, float | int | str | dict[str, float] | list[float]] | None,\n    dict[str, bool] | None,\n]:\n    search_fn, params, post_processing = None, None, None\n\n    match search_params:\n        case TextOnlyDocSearchRequest(\n            text=query,\n            limit=k,\n            lang=lang,\n            metadata_filter=metadata_filter,\n            trigram_similarity_threshold=trigram_similarity_threshold,\n            include_embeddings=include_embeddings,\n        ):\n            search_language = get_language(lang)\n            search_fn = search_docs_by_text\n            trigram_threshold = (\n                trigram_similarity_threshold if enable_hybrid_trigram_search else None\n            )\n            params = {\n                \"query\": query,\n                \"k\": k,\n                \"metadata_filter\": metadata_filter,\n                \"search_language\": search_language,\n                \"trigram_similarity_threshold\": trigram_threshold,\n                \"extract_keywords\": extract_keywords,\n            }\n            post_processing = {\n                \"include_embeddings\": include_embeddings,\n            }\n\n        case VectorDocSearchRequest(\n            vector=embedding,\n            limit=k,\n            confidence=confidence,\n            metadata_filter=metadata_filter,\n            include_embeddings=include_embeddings,\n        ):\n            search_fn = search_docs_by_embedding\n            # AIDEV-NOTE: cap extra candidates for MMR to 2x limit (or limit+10) to avoid large fan-out.\n            k_with_buffer = min(k * 2, k + 10) if search_params.mmr_strength > 0 else k\n            params = {\n                \"embedding\": embedding,\n                \"k\": k_with_buffer,\n                \"confidence\": confidence,\n                \"metadata_filter\": metadata_filter,\n            }\n            post_processing = {\n                \"include_embeddings\": include_embeddings,\n            }\n\n        case HybridDocSearchRequest(\n            text=query,\n            vector=embedding,\n            lang=lang,\n            limit=k,\n            confidence=confidence,\n            alpha=alpha,\n            metadata_filter=metadata_filter,\n            trigram_similarity_threshold=trigram_similarity_threshold,\n            k_multiplier=k_multiplier,\n            include_embeddings=include_embeddings,\n        ):\n            search_language = get_language(lang)\n            search_fn = search_docs_hybrid\n            # AIDEV-NOTE: hybrid search should request a modest MMR buffer before DBSF fusion.\n            k_with_buffer = min(k * 2, k + 10) if search_params.mmr_strength > 0 else k\n            trigram_threshold = (\n                trigram_similarity_threshold if enable_hybrid_trigram_search else None\n            )\n            params = {\n                \"text_query\": query,\n                \"embedding\": embedding,\n                \"k\": k_with_buffer,\n                \"confidence\": confidence,\n                \"alpha\": alpha,\n                \"metadata_filter\": metadata_filter,\n                \"search_language\": search_language,\n                \"extract_keywords\": extract_keywords,\n                \"trigram_similarity_threshold\": trigram_threshold,\n                \"k_multiplier\": k_multiplier,\n            }\n            post_processing = {\n                \"include_embeddings\": include_embeddings,\n            }\n\n    # Note: connection_pool will be passed separately by the caller\n    return search_fn, params, post_processing\n\n\n@beartype\ndef strip_embeddings(\n    docs: list[DocReference] | DocReference,\n) -> list[DocReference] | DocReference:\n    if isinstance(docs, list):\n        docs = [strip_embeddings(doc) for doc in docs]\n    else:\n        docs.snippet.embedding = None\n    return docs\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/humanization_utils.py",
    "content": "import json\nimport random\nimport time\n\nimport litellm\nimport requests\nfrom deep_translator import GoogleTranslator\nfrom langchain_core.documents import Document\nfrom langchain_text_splitters import MarkdownHeaderTextSplitter\n\nfrom ...env import (\n    desklib_url,\n    litellm_master_key,\n    litellm_url,\n    sapling_api_key,\n    sapling_url,\n    zerogpt_url,\n)\n\n# Initialize humanization as a dictionary to hold various properties\nHUMANIZATION = {\n    \"model\": \"openai/cerebras/llama-3.3-70b\",\n    \"humanize_prompt\": \"\"\"\\\n    Rewrite the following text to make it more natural and human-like while preserving the core message. Follow these guidelines:\n\n1. Maintain the original meaning and key points\n2. Vary sentence structure (mix simple, compound, and complex sentences)\n3. Use natural language patterns:\n   - Include occasional filler words (well, actually, you know)\n   - Add subtle imperfections (parenthetical thoughts, self-corrections)\n   - Employ informal transitions where appropriate\n4. Incorporate personal voice:\n   - Use contractions naturally\n   - Add conversational elements\n   - Vary vocabulary complexity\n5. Keep paragraphing and flow natural\n6. Avoid overly perfect grammar or clinical language\n\nNotes:\n- The text you are rewriting has been translated from one language to another, and back to English.\n- The rewritten text should be in markdown format (don't add headings unless they are already present).\n- If you see spaces before or after double stars, you should remove them.\n- If you see headings without capitalized text, you should capitalize them.\n\n\nReturn only the rewritten text without explanations or meta-commentary.\"\"\",\n    \"grammar_prompt\": \"Only fix grammar that is wrong without changing the words and places of the sentence\",\n}\n\n\ndef text_translate(text: str, src_lang, target_lang):\n    try:\n        return GoogleTranslator(source=src_lang, target=target_lang).translate(text=text)\n    except Exception:\n        return text\n\n\ndef mix_translate(text: str, src_lang, target_lang):\n    \"\"\"\n    Translate the given text from src_lang to target_lang and back to src_lang using googletrans.\n    \"\"\"\n    try:\n        translated = GoogleTranslator(source=src_lang, target=target_lang).translate(text=text)\n        return GoogleTranslator(source=target_lang, target=src_lang).translate(text=translated)\n\n    except Exception:\n        return text\n\n\ndef humanize_llm(text: str) -> str:\n    try:\n        response = litellm.completion(\n            model=HUMANIZATION[\"model\"],\n            base_url=litellm_url,\n            messages=[\n                {\"role\": \"system\", \"content\": HUMANIZATION[\"humanize_prompt\"]},\n                {\"role\": \"user\", \"content\": text},\n            ],\n            temperature=1.0,\n            api_key=litellm_master_key,\n        )\n        return response.choices[0].message.content\n    except Exception as e:\n        msg = \"Error humanizing text with an llm: \"\n        raise Exception(msg) from e\n\n\ndef grammar(text: str):\n    try:\n        response = litellm.completion(\n            model=HUMANIZATION[\"model\"],\n            base_url=litellm_url,\n            messages=[\n                {\"role\": \"system\", \"content\": HUMANIZATION[\"grammar_prompt\"]},\n                {\"role\": \"user\", \"content\": text},\n            ],\n            temperature=1.0,\n            api_key=litellm_master_key,\n            # extra_body={\"min_p\": 0.025},\n        )\n        return response.choices[0].message.content\n    except Exception:\n        return text\n\n\ndef is_human_desklib(text: str) -> float:\n    try:\n        payload = {\n            \"text\": text,\n        }\n        response = requests.post(desklib_url, json=payload)\n\n        response.raise_for_status()\n\n        ai_score = response.json().get(\"probability\")\n\n        if ai_score is None:\n            msg = \"'probability' key not found in response: \"\n            raise Exception(msg, response.json())\n\n        human_score = 1 - ai_score\n\n        # desklib returns a score between 0 and 1, we want to return a percentage\n        return human_score * 100\n    except Exception as e:\n        msg = \"Error getting human score from desklib\"\n        raise Exception(msg) from e\n\n\ndef is_human_sapling(text: str):\n    try:\n        payload = {\n            \"text\": text,\n            \"key\": sapling_api_key,\n        }\n        response = requests.post(sapling_url, json=payload)\n        ai_score = response.json().get(\"score\", None)\n\n        # sapling returns a an ai score between 0 and 1, we want to return a human_score percentage\n        return 100 - int(ai_score * 100)\n    except Exception as e:\n        msg = \"Error getting human score from sapling\"\n        raise Exception(msg) from e\n\n\ndef is_human_zerogpt(input_text, max_tries: int = 3):\n    if max_tries < 0:\n        return None\n\n    # Define headers with Content-Type\n    headers = {\n        \"Accept\": \"application/json, text/plain, */*\",\n        \"Accept-Encoding\": \"gzip, deflate, br\",\n        \"Accept-Language\": \"en-US,en;q=0.8\",\n        \"Content-Type\": \"application/json\",\n        \"Origin\": \"https://www.zerogpt.com\",\n        \"Referer\": \"https://www.zerogpt.com/\",\n        \"Sec-Ch-Ua\": '\"Not A(Brand\";v=\"99\", \"Brave\";v=\"121\", \"Chromium\";v=\"121\"',\n        \"Sec-Ch-Ua-Mobile\": \"?0\",\n        \"Sec-Ch-Ua-Platform\": '\"Linux\"',\n        \"Sec-Fetch-Dest\": \"empty\",\n        \"Sec-Fetch-Mode\": \"cors\",\n        \"Sec-Fetch-Site\": \"same-site\",\n        \"Sec-Gpc\": \"1\",\n        \"User-Agent\": \"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36\",\n    }\n    # Define the payload as a dictionary\n    payload = {\"input_text\": input_text}\n\n    # Convert payload to JSON format\n    json_payload = json.dumps(payload)\n\n    # Send the POST request with JSON payload and headers\n    response = requests.post(zerogpt_url, data=json_payload, headers=headers)\n\n    # Check the response status\n    if response.status_code == 200:\n        resp = json.loads(response.text)\n        result = False\n        try:\n            result = int(resp.get(\"data\", {}).get(\"isHuman\", None))\n        except Exception:\n            time.sleep(2)\n            return is_human_zerogpt(input_text, max_tries - 1)\n\n        return result\n    return None\n\n\ndef replace_with_homoglyphs(text: str, max_replacements: int = 2):\n    homoglyphs = {\n        # Whitelisted\n        \" \": \" \",\n        \"%\": \"％\",\n        \"'\": \"ˈ\",\n        \",\": \"‚\",\n        \"-\": \"‐\",\n        \".\": \"․\",\n        \"1\": \"𝟷\",\n        \"3\": \"Ꝫ\",\n        \"5\": \"𝟻\",\n        \"6\": \"𝟨\",\n        \"7\": \"𝟽\",\n        \"8\": \"𝟪\",\n        \"9\": \"𝟫\",\n        \";\": \";\",\n        \"j\": \"ј\",\n        \"n\": \"𝗇\",\n        \"o\": \"о\",\n        \"p\": \"р\",\n        \"u\": \"ս\",\n        \"y\": \"у\",\n        \"H\": \"Η\",\n        \"I\": \"І\",\n        \"J\": \"Ј\",\n        \"N\": \"Ν\",\n        \"O\": \"Ο\",\n        \"V\": \"ⴸ\",\n        \"Y\": \"Υ\",\n        \"~\": \"∼\",\n        \"q\": \"q\",\n        \"e\": \"е\",\n        \"a\": \"а\",\n        \"b\": \"ᖯ\",\n        \"c\": \"ⅽ\",\n        \"i\": \"і\",\n        \"k\": \"𝚔\",\n        \"g\": \"𝗀\",\n        \"A\": \"𐊠\",\n        \"B\": \"В\",\n        \"C\": \"𐊢\",\n        \"D\": \"ꓓ\",\n        \"E\": \"Е\",\n        \"F\": \"𐊇\",\n        \"G\": \"Ԍ\",\n        \"K\": \"Κ\",\n        \"L\": \"Ⅼ\",\n        \"M\": \"Μ\",\n        \"P\": \"Ρ\",\n        \"Q\": \"𝖰\",\n        \"R\": \"𖼵\",\n        \"S\": \"Ѕ\",\n        \"T\": \"Τ\",\n        \"U\": \"𐓎\",\n        \"W\": \"Ԝ\",\n        \"X\": \"Χ\",\n        \"Z\": \"Ζ\",\n    }\n\n    # Convert text to list for single pass replacement\n    text_chars: list[str] = list(\n        text\n    )  # AIDEV-NOTE: annotate to list[str] so indexing is recognized by type checker\n    text_len = len(text_chars)\n\n    for original, homoglyph in homoglyphs.items():\n        count = random.randrange(0, max_replacements)\n        if count == 0:\n            continue\n\n        # Get random positions for replacements\n        positions = random.sample(range(text_len), min(count, text_len))\n        for pos in positions:\n            if text_chars[pos] == original:  # type: ignore[call-non-callable]  # AIDEV-NOTE: suppress false-positive on indexing\n                text_chars[pos] = homoglyph  # type: ignore[call-non-callable]\n\n    return \"\".join(text_chars)\n\n\ndef insert_em_dash(word: str, probability: float = 0.1, min_length: int = 7) -> str:\n    # Only apply to long words (adjust threshold as needed)\n    if len(word) < min_length:\n        return word\n    # 10% chance to insert an em dash\n    if random.random() < probability:\n        mid = len(word) // 2\n        return word[:mid] + \"—\" + word[mid:]\n    return word\n\n\ndef process_long_words(text: str) -> str:\n    # Split text preserving whitespace for simplicity\n    words = text.split()\n    processed_words = [insert_em_dash(word) for word in words]\n    # Rejoin words with a space (note: original punctuation and formatting may be altered)\n    return \" \".join(processed_words)\n\n\ndef split_with_langchain(markdown_text: str) -> list[Document]:\n    headers_to_split_on = [\n        (\"#\", \"Header 1\"),\n        (\"##\", \"Header 2\"),\n        (\"###\", \"Header 3\"),\n        (\"####\", \"Header 4\"),\n    ]\n\n    # MD splits\n    markdown_splitter = MarkdownHeaderTextSplitter(\n        headers_to_split_on=headers_to_split_on,\n        strip_headers=True,\n    )\n    return markdown_splitter.split_text(markdown_text)\n\n\ndef reassemble_markdown(splits: list[Document]) -> str:\n    assembled_text = []\n\n    for doc in splits:\n        # Get the header level from metadata\n        header_level = None\n        header_content = None\n        for key, value in doc.metadata.items():\n            if key.startswith(\"Header \"):\n                header_level = int(key.split(\" \")[1])\n                header_content = value\n                break\n\n        # Add header with appropriate number of # symbols\n        if header_level and header_content:\n            header_line = f\"{'#' * header_level} {header_content}\\n\\n\"\n            assembled_text.append(header_line)\n\n        # Add the content\n        assembled_text.append(f\"{doc.page_content}\\n---\\n\")\n\n    return \"\".join(assembled_text).strip()\n\n\ndef humanize_paragraph(\n    paragraph: str,\n    threshold: float,\n    src_lang: str,\n    target_lang: str,\n    grammar_check: bool,\n    use_homoglyphs: bool,\n    use_em_dashes: bool,\n    max_tries: int,\n) -> str:\n    for i in range(max_tries):\n        if paragraph.strip() == \"\":\n            return paragraph\n\n        if is_human_desklib(paragraph) > threshold:\n            return paragraph\n\n        paragraph = mix_translate(paragraph, src_lang, target_lang)\n        if grammar_check:\n            paragraph = grammar(paragraph)\n\n        paragraph = humanize_llm(paragraph)\n\n    # Apply homoglyphs and em dashes to a new paragraph in order not to mess up the original paragraph for the next iterations\n    new_paragraph = paragraph\n    if use_homoglyphs:\n        new_paragraph = replace_with_homoglyphs(new_paragraph)\n\n    if use_em_dashes:\n        new_paragraph = process_long_words(new_paragraph)\n\n    if is_human_desklib(new_paragraph) > threshold:\n        return new_paragraph\n\n    # Apply homoglyphs and em dashes to the final paragraph after consuming max tries\n    if use_homoglyphs:\n        paragraph = replace_with_homoglyphs(paragraph)\n\n    if use_em_dashes:\n        paragraph = process_long_words(paragraph)\n\n    return paragraph\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/json.py",
    "content": "\"\"\"This module provides JSON utilities, including a custom JSON encoder for handling specific object types and a utility function for JSON serialization.\"\"\"\n\nimport json\nfrom typing import Any\nfrom uuid import UUID\n\nfrom pydantic import BaseModel\n\n\nclass CustomJSONEncoder(json.JSONEncoder):\n    \"\"\"A custom JSON encoder subclass that handles None values and UUIDs for JSON serialization. It allows specifying a default value for None objects during initialization.\"\"\"\n\n    def __init__(self, *args, **kwargs) -> None:\n        \"\"\"\n        Initializes the custom JSON encoder.\n        Parameters:\n        *args: Variable length argument list.\n        **kwargs: Arbitrary keyword arguments. The 'default_empty_value' keyword argument specifies the default value to use for None objects during serialization.\n        \"\"\"\n\n        self._default_empty_value = kwargs.pop(\"default_empty_value\")\n        super().__init__(*args, **kwargs)\n\n    def encode(self, o) -> str:\n        \"\"\"\n        Encodes the given object into a JSON formatted string.\n        Parameters:\n        o: The object to encode.\n        Returns: A JSON formatted string representing 'o'.\n        \"\"\"\n\n        # Use the overridden default method for serialization before encoding\n        return super().encode(self.default(o))\n\n    def default(self, obj) -> Any:\n        \"\"\"\n        Provides a default serialization for objects that the standard JSON encoder cannot serialize.\n        Parameters:\n        obj: The object to serialize.\n        Returns: A serializable object or raises a TypeError if the object is not serializable.\n        \"\"\"\n\n        if obj is None:\n            return self._default_empty_value\n\n        if isinstance(obj, UUID):\n            return str(obj)\n\n        if isinstance(obj, BaseModel):\n            return obj.model_dump()\n\n        return obj\n\n\ndef dumps(obj: Any, default_empty_value: str = \"\", cls=None) -> str:\n    \"\"\"\n    Serializes an object to a JSON formatted string using the custom JSON encoder.\n    Parameters:\n    obj: The object to serialize.\n    default_empty_value: The default value to use for None objects.\n    cls: The custom encoder class to use, defaults to CustomJSONEncoder.\n    Returns: A JSON formatted string.\n    \"\"\"\n\n    return json.dumps(\n        obj,\n        cls=cls or CustomJSONEncoder,\n        default_empty_value=default_empty_value,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/llm_providers.py",
    "content": "from pathlib import Path\n\nimport yaml\n\nconfig_path = Path(\"/app/litellm-config.yaml\")\n\n_config = None\n\n\ndef get_config():\n    global _config\n    if _config is None:\n        if not config_path.exists():\n            print(f\"Warning: LiteLLM config file not found at {config_path}\")\n            return {}\n\n        try:\n            with open(config_path) as f:\n                _config = yaml.safe_load(f)\n        except Exception as e:\n            print(f\"Error loading LiteLLM config: {e}\")\n            return {}\n\n    return _config\n\n\ndef get_api_key_env_var_name(model: str) -> str | None:\n    config = get_config()\n\n    for model_config in config.get(\"model_list\", []):\n        if model_config.get(\"model_name\") == model:\n            api_key = model_config.get(\"litellm_params\", {}).get(\"api_key\")\n            if api_key:\n                return api_key.split(\"/\", 1)[1]\n\n    return None\n\n\ndef get_litellm_model_name(model: str) -> str:\n    \"\"\"\n    Convert a model name to its LiteLLM equivalent by looking it up in the config.\n    Returns the litellm_params.model value if found, otherwise returns the original model name.\n\n    Examples:\n        \"gpt-4o\" -> \"openai/gpt-4o\"\n        \"gemini-1.5-pro\" -> \"gemini/gemini-1.5-pro\"\n        \"claude-3.5-sonnet\" -> \"claude-3-5-sonnet-20241022\"\n    \"\"\"\n    config = get_config()\n\n    for model_config in config.get(\"model_list\", []):\n        if model_config.get(\"model_name\") == model:\n            litellm_model = model_config.get(\"litellm_params\", {}).get(\"model\")\n            if litellm_model:\n                return litellm_model\n\n    # AIDEV-NOTE: If model not found in config, return original name\n    return model\n\n\n# Models that do not support tools param\ntools_free_models: set[str] = {\"openai/gpt-5-chat-latest\"}\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/memory.py",
    "content": "\"\"\"\nUtilities for memory management and object size calculation.\n\"\"\"\n\nfrom __future__ import annotations\n\nimport sys\nfrom collections import deque\nfrom collections.abc import Callable\nfrom itertools import chain\nfrom typing import Any\n\nfrom pydantic import BaseModel\n\n\ndef total_size(\n    o: Any, handlers: dict[type, Callable] | None = None, verbose: bool = False\n) -> int:\n    \"\"\"\n    Returns the approximate memory footprint of an object and all of its contents.\n\n    Automatically finds the contents of the following builtin containers and\n    their subclasses: tuple, list, deque, dict, set and frozenset.\n    Also handles Pydantic models by recursively measuring their fields.\n\n    To search other containers, add handlers to iterate over their contents:\n        handlers = {SomeContainerClass: iter,\n                    OtherContainerClass: OtherContainerClass.get_elements}\n\n    Args:\n        o: The object to measure\n        handlers: Optional dictionary of custom handlers for container types\n        verbose: If True, prints details about each object measured\n\n    Returns:\n        Total size in bytes\n    \"\"\"\n    if handlers is None:\n        handlers = {}\n\n    def dict_handler(d):\n        return chain.from_iterable(d.items())\n\n    def pydantic_handler(model: BaseModel):\n        return chain.from_iterable(model.model_dump().items())\n\n    all_handlers = {\n        tuple: iter,\n        list: iter,\n        deque: iter,\n        dict: dict_handler,\n        set: iter,\n        frozenset: iter,\n        BaseModel: pydantic_handler,\n    }\n    all_handlers.update(handlers)  # user handlers take precedence\n    seen: set[int] = set()  # track which object id's have already been seen\n    default_size = sys.getsizeof(0)  # estimate sizeof object without __sizeof__\n\n    def sizeof(obj: Any) -> int:\n        \"\"\"Recursively calculate size of object and its contents.\"\"\"\n        if id(obj) in seen:  # do not double count the same object\n            return 0\n        seen.add(id(obj))\n        size = sys.getsizeof(obj, default_size)\n\n        if verbose:\n            print(size, type(obj), repr(obj)[:100])  # limit repr to avoid huge output\n\n        for typ, handler in all_handlers.items():\n            if isinstance(obj, typ):\n                size += sum(map(sizeof, handler(obj)))\n                break\n        return size\n\n    return sizeof(o)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/messages.py",
    "content": "import json\nfrom typing import cast\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import (\n    ChatMLImageContentPart,\n    ChatMLTextContentPart,\n)\n\n\n@beartype\ndef content_to_json(\n    content: str | list[dict] | dict,\n) -> list[dict]:\n    if isinstance(content, str):\n        result = [{\"type\": \"text\", \"text\": content}]\n    elif isinstance(content, list):\n        result = content\n    elif isinstance(content, dict):\n        result = [{\"type\": \"text\", \"text\": json.dumps(content, indent=4)}]\n\n    return result\n\n\ndef stringify_content(\n    msg: str | list[ChatMLTextContentPart] | list[ChatMLImageContentPart] | dict,\n) -> str:\n    content = \"\"\n    if isinstance(msg, list):\n        content = \" \".join([part.text for part in msg if part.type == \"text\"])\n    elif isinstance(msg, str):\n        content = msg\n    elif isinstance(msg, dict) and msg[\"type\"] == \"text\":\n        content = cast(str, msg[\"text\"])\n\n    return content\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/mmr.py",
    "content": "from __future__ import annotations\n\nimport logging\nfrom typing import TypeVar\n\nimport numpy as np\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import DocReference\n\nMatrix = list[list[float]] | list[np.ndarray] | np.ndarray\n\nlogger = logging.getLogger(__name__)\n\nMIN_DOCS_WITH_EMBEDDINGS = 2\n\nT = TypeVar(\"T\")\n\n\ndef _cosine_similarity(x: Matrix, y: Matrix) -> np.ndarray:\n    \"\"\"Row-wise cosine similarity between two equal-width matrices.\n\n    Args:\n        x: A matrix of shape (n, m).\n        y: A matrix of shape (k, m).\n\n    Returns:\n        A matrix of shape (n, k) where each element (i, j) is the cosine similarity\n        between the ith row of X and the jth row of Y.\n\n    Raises:\n        ValueError: If the number of columns in X and Y are not the same.\n        ImportError: If numpy is not installed.\n    \"\"\"\n\n    if len(x) == 0 or len(y) == 0:\n        return np.array([])\n\n    x = [xx for xx in x if xx is not None]\n    y = [yy for yy in y if yy is not None]\n\n    x = np.array(x)\n    y = np.array(y)\n    if x.shape[1] != y.shape[1]:\n        msg = f\"Number of columns in X and Y must be the same. X has shape {x.shape} and Y has shape {y.shape}.\"\n        raise ValueError(msg)\n    try:\n        import simsimd as simd  # type: ignore\n\n        x = np.array(x, dtype=np.float32)\n        y = np.array(y, dtype=np.float32)\n        return 1 - np.array(simd.cdist(x, y, metric=\"cosine\"))\n    except ImportError:\n        logger.debug(\n            \"Unable to import simsimd, defaulting to NumPy implementation. If you want \"\n            \"to use simsimd please install with `pip install simsimd`.\",\n        )\n        x_norm = np.linalg.norm(x, axis=1)\n        y_norm = np.linalg.norm(y, axis=1)\n        # Ignore divide by zero errors run time warnings as those are handled below.\n        with np.errstate(divide=\"ignore\", invalid=\"ignore\"):\n            similarity = np.dot(x, y.T) / np.outer(x_norm, y_norm)\n        similarity[np.isnan(similarity) | np.isinf(similarity)] = 0.0\n        return similarity\n\n\n@beartype\ndef maximal_marginal_relevance(\n    query_embedding: np.ndarray,\n    embedding_list: list,\n    lambda_mult: float = 0.5,\n    k: int = 4,\n) -> list[int]:\n    \"\"\"Calculate maximal marginal relevance.\n\n    Args:\n        query_embedding: The query embedding.\n        embedding_list: A list of embeddings.\n        lambda_mult: The lambda parameter for MMR. Default is 0.5.\n        k: The number of embeddings to return. Default is 4.\n\n    Returns:\n        A list of indices of the embeddings to return.\n\n    Raises:\n        ImportError: If numpy is not installed.\n    \"\"\"\n\n    if min(k, len(embedding_list)) <= 0:\n        return []\n    if query_embedding.ndim == 1:\n        query_embedding = np.expand_dims(query_embedding, axis=0)\n    similarity_to_query = _cosine_similarity(query_embedding, embedding_list)[0]\n    most_similar = int(np.argmax(similarity_to_query))\n    idxs = [most_similar]\n    selected = np.array([embedding_list[most_similar]])\n    while len(idxs) < min(k, len(embedding_list)):\n        best_score = -np.inf\n        idx_to_add = -1\n        similarity_to_selected = _cosine_similarity(embedding_list, selected)\n        for i, query_score in enumerate(similarity_to_query):\n            if i in idxs:\n                continue\n            redundant_score = max(similarity_to_selected[i])\n            equation_score = lambda_mult * query_score - (1 - lambda_mult) * redundant_score\n            if equation_score > best_score:\n                best_score = equation_score\n                idx_to_add = i\n        idxs.append(idx_to_add)\n        selected = np.append(selected, [embedding_list[idx_to_add]], axis=0)\n    return idxs\n\n\n@beartype\ndef apply_mmr_to_docs(\n    docs: list[DocReference], query_embedding: np.ndarray, limit: int, mmr_strength: float\n) -> list[DocReference]:\n    \"\"\"\n    Apply Maximal Marginal Relevance to a list of document references.\n\n    Parameters:\n        docs: List of document references\n        query_embedding: The embedding vector of the query\n        limit: Maximum number of documents to return\n        mmr_strength: Strength of MMR (0-1), where 0 means no diversity and 1 means maximum diversity\n\n    Returns:\n        List of document references after applying MMR\n    \"\"\"\n    # Filter docs with embeddings and extract embeddings in one pass\n    docs_with_embeddings = []\n    embeddings = []\n    for doc in docs:\n        if doc.snippet.embedding is not None:\n            docs_with_embeddings.append(doc)\n            embeddings.append(doc.snippet.embedding)\n\n    if len(docs_with_embeddings) >= MIN_DOCS_WITH_EMBEDDINGS:\n        # Apply MMR\n        indices = maximal_marginal_relevance(\n            query_embedding,\n            embeddings,\n            k=min(limit, len(docs_with_embeddings)),\n            lambda_mult=1 - mmr_strength,\n        )\n        # Deduplicate indices while preserving their order\n        unique_indices: list[int] = []\n        seen: set[int] = set()\n        for idx in indices:\n            if idx not in seen:\n                seen.add(idx)\n                unique_indices.append(idx)\n\n        return [docs_with_embeddings[i] for i in unique_indices]\n\n    # If docs are present but no embeddings are present for any of the docs, return the top k docs\n    return docs[:limit]\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/model_validation.py",
    "content": "\"\"\"Shared helpers for validating model identifiers against LiteLLM.\"\"\"\n\nfrom __future__ import annotations\n\nfrom collections.abc import Sequence\n\nfrom ...clients.litellm import get_model_list\n\n\nclass ModelNotAvailableError(ValueError):\n    \"\"\"Raised when a requested model identifier is not present in the catalog.\"\"\"\n\n    def __init__(self, model_name: str | None, available_models: Sequence[str]) -> None:\n        self.requested_model = model_name\n        self.available_models = list(available_models)\n        message = f\"Model {model_name} not available. Available models: {self.available_models}\"\n        super().__init__(message)\n\n\nasync def ensure_model_available(\n    model_name: str | None,\n    *,\n    custom_api_key: str | None = None,\n) -> Sequence[str]:\n    \"\"\"Ensure ``model_name`` exists in LiteLLM's configured catalog.\"\"\"\n\n    models = await get_model_list(custom_api_key=custom_api_key)\n    available_models = [model[\"id\"] for model in models]\n\n    if model_name not in available_models:\n        raise ModelNotAvailableError(model_name, available_models)\n\n    return available_models\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/secrets.py",
    "content": "from datetime import timedelta\nfrom uuid import UUID\n\nfrom temporalio import workflow\nfrom temporalio.workflow import _NotInWorkflowEventLoopError\n\nfrom ...activities.pg_query_step import pg_query_step\nfrom ...autogen.openapi_model import Secret\nfrom ...env import temporal_heartbeat_timeout\nfrom ...queries.secrets import get_secret_by_name as get_secret_by_name_query\nfrom ...queries.secrets.list import list_secrets_query\nfrom ..exceptions.secrets import (\n    SecretNotFoundError,  # AIDEV-NOTE: use domain exception for missing secrets\n)\nfrom ..retry_policies import DEFAULT_RETRY_POLICY\n\n\nasync def get_secret_by_name(developer_id: UUID, name: str, decrypt: bool = False) -> Secret:\n    \"\"\"Fetch a developer secret by name without caching to avoid cross-loop futures.\"\"\"\n    try:\n        secret = await workflow.execute_activity(\n            pg_query_step,\n            args=[\n                \"get_secret_by_name\",\n                \"secrets.get_by_name\",\n                {\"developer_id\": developer_id, \"name\": name, \"decrypt\": decrypt},\n            ],\n            schedule_to_close_timeout=timedelta(days=31),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n    except _NotInWorkflowEventLoopError:\n        secret = await get_secret_by_name_query(\n            developer_id=developer_id,\n            name=name,\n            decrypt=decrypt,\n        )\n\n    if secret is None:\n        raise SecretNotFoundError(developer_id, name)\n\n    return secret\n\n\nasync def get_secrets_list(\n    developer_id: UUID,\n    decrypt: bool = False,\n    connection_pool=None,\n) -> list[Secret]:\n    \"\"\"Return the full secret list without shared caching (avoids loop mismatches).\"\"\"\n    try:\n        secrets_query_result = await workflow.execute_activity(\n            pg_query_step,\n            args=[\n                \"list_secrets_query\",\n                \"secrets.list\",\n                {\"developer_id\": developer_id, \"decrypt\": decrypt},\n            ],\n            schedule_to_close_timeout=timedelta(days=31),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n    except _NotInWorkflowEventLoopError:\n        secrets_query_result = await list_secrets_query(\n            developer_id=developer_id,\n            decrypt=decrypt,\n            connection_pool=connection_pool,\n        )\n\n    return secrets_query_result\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/task_validation.py",
    "content": "import ast\nfrom typing import Any\n\nfrom pydantic import BaseModel, ValidationError\n\nfrom ...autogen.openapi_model import CreateTaskRequest, PatchTaskRequest, UpdateTaskRequest\nfrom ...common.protocol.models import task_to_spec\nfrom ...common.utils.evaluator import ALLOWED_FUNCTIONS, stdlib\nfrom ...env import enable_backwards_compatibility_for_syntax\n\n\nclass ValidationIssue(BaseModel):\n    \"\"\"Represents a validation issue found in a task specification.\"\"\"\n\n    location: str\n    message: str\n    severity: str = \"error\"  # error, warning, info\n    details: dict[str, Any] | None = None\n\n\nclass TaskValidationResult(BaseModel):\n    \"\"\"Result of task validation with issues categorized by type.\"\"\"\n\n    is_valid: bool\n    python_expression_issues: list[ValidationIssue] = []\n    schema_issues: list[ValidationIssue] = []\n    other_issues: list[ValidationIssue] = []\n\n\ndef backwards_compatibility(expr: str) -> str:\n    \"\"\"\n    Convert expressions to a consistent format for evaluation.\n\n    Args:\n        expr: The expression to convert\n\n    Returns:\n        The converted expression with $ prefix where appropriate\n    \"\"\"\n    # Note: This function returns expressions that start with \"$ \"\n    # The space after $ is required for expressions to be evaluated as Python code.\n\n    expr = expr.strip()\n\n    # Check if it already starts with $ followed by a space\n    if expr.startswith(\"$ \"):\n        return expr\n\n    if \"{{\" in expr:\n        return \"$ f'''\" + expr.replace(\"{{\", \"{\").replace(\"}}\", \"}\") + \"'''\"\n\n    if (\n        (expr.startswith(\"[\") and expr.endswith(\"]\"))\n        or (expr.startswith(\"_[\") and expr.endswith(\"]\"))\n        or expr.startswith(\"_.\")\n        or \"outputs[\" in expr\n        or \"inputs[\" in expr\n        or expr == \"_\"\n    ):\n        return \"$ \" + expr  # Keep space after $ for backward compatibility\n\n    return expr\n\n\n# Build the set of allowed names\nallowed_names = (\n    set(ALLOWED_FUNCTIONS.keys())\n    | set(stdlib.keys())\n    | {\"true\", \"false\", \"null\", \"NEWLINE\", \"hasattr\"}  # helpers\n    | {\"_\", \"inputs\", \"outputs\", \"state\", \"steps\"}  # Special vars\n)\n\n\ndef validate_py_expression(\n    expr: str | None,\n    expected_variables: set[str] | None = None,\n) -> dict[str, list[str]]:\n    \"\"\"\n    Statically validate a Python expression before task execution.\n\n    Args:\n        expr: The Python expression to validate (or None)\n        expected_variables: Optional set of expected variable names that should be available\n\n    Returns:\n        Dict with potential issues categorized by type\n    \"\"\"\n    issues: dict[str, list[str]] = {\n        \"syntax_errors\": [],\n        \"undefined_names\": [],\n        \"unsafe_operations\": [],\n        \"potential_runtime_errors\": [],\n        \"unsupported_features\": [],\n    }\n\n    # Skip None or empty expressions\n    if expr is None or not expr:\n        return issues\n\n    # Ensure the expression is stripped before checking prefix\n    expr = expr.strip()\n\n    # Apply backwards compatibility transformation first\n    if enable_backwards_compatibility_for_syntax:\n        expr = backwards_compatibility(expr)\n\n    # The space after $ is required for expressions to be evaluated as Python code\n    if not expr.startswith(\"$ \"):\n        return issues\n\n    # Remove $ and strip any leading space after $\n    expr = expr[1:].lstrip()\n\n    # Special case: just a $ sign with nothing after it\n    if not expr:\n        return issues\n\n    # Try to parse the expression to check for syntax errors\n    try:\n        tree = ast.parse(expr, mode=\"eval\")\n    except SyntaxError as e:\n        issues[\"syntax_errors\"].append(f\"Syntax error: {e!s}\")\n        return issues  # Return early if we can't even parse the expression\n\n    expected_variables: set[str] = expected_variables or set()\n\n    # Track locally defined variables to avoid flagging them as undefined\n    local_vars: set[str] = set()\n\n    # NOTE: if we update the evaluator to support these features, we can remove the 3 checks below\n    # Check for unsupported language features\n    for node in ast.walk(tree):\n        # Check for set comprehensions\n        if isinstance(node, ast.SetComp):\n            issues[\"unsupported_features\"].append(\n                \"Set comprehensions are not supported in this evaluator\"\n            )\n\n        # Check for lambda functions\n        elif isinstance(node, ast.Lambda):\n            issues[\"unsupported_features\"].append(\n                \"Lambda functions are not supported in this evaluator\"\n            )\n\n        # Check for assignment expressions (walrus operator)\n        elif isinstance(node, ast.NamedExpr):\n            issues[\"unsupported_features\"].append(\n                \"Assignment expressions (walrus operator) are not supported in this evaluator\"\n            )\n\n    # Find all comprehension variables and other locally defined variables\n    for node in ast.walk(tree):\n        # List, dict, and set comprehensions\n        if isinstance(node, ast.ListComp | ast.DictComp | ast.SetComp):\n            for generator in node.generators:\n                # Add target names from comprehensions\n                if isinstance(generator.target, ast.Name):\n                    local_vars.add(generator.target.id)\n                elif isinstance(generator.target, ast.Tuple):\n                    for elt in generator.target.elts:\n                        if isinstance(elt, ast.Name):\n                            local_vars.add(elt.id)\n\n        # Generator expressions\n        elif isinstance(node, ast.GeneratorExp):\n            for generator in node.generators:\n                if isinstance(generator.target, ast.Name):\n                    local_vars.add(generator.target.id)\n                elif isinstance(generator.target, ast.Tuple):\n                    for elt in generator.target.elts:\n                        if isinstance(elt, ast.Name):\n                            local_vars.add(elt.id)\n\n        # Lambda functions\n        elif isinstance(node, ast.Lambda):\n            for arg in node.args.args:\n                local_vars.add(arg.arg)\n\n            # Handle args with default values\n            if node.args.kwonlyargs:\n                for arg in node.args.kwonlyargs:\n                    local_vars.add(arg.arg)\n\n        # Assignment expressions (walrus operator)\n        elif isinstance(node, ast.NamedExpr) and isinstance(node.target, ast.Name):\n            local_vars.add(node.target.id)\n\n    # Get all name references in the expression\n    name_nodes = [node for node in ast.walk(tree) if isinstance(node, ast.Name)]\n\n    # Check for undefined names\n    referenced_names = {\n        node.id\n        for node in name_nodes\n        if isinstance(node, ast.Name) and isinstance(node.ctx, ast.Load)\n    }\n\n    # Find undefined names, excluding locally defined variables\n    undefined_names = referenced_names - allowed_names - expected_variables - local_vars\n    if undefined_names:\n        issues[\"undefined_names\"].extend([\n            f\"Undefined name: '{name}'\" for name in undefined_names\n        ])\n\n    # Check for potentially unsafe operations\n    for node in ast.walk(tree):\n        # Check for attribute access that might be unsafe\n        if isinstance(node, ast.Attribute):\n            # Allow specific attributes on known objects\n            attr_name = node.attr\n\n            # Check for dunder attributes which are potentially dangerous\n            if attr_name.startswith(\"__\") and attr_name.endswith(\"__\"):\n                issues[\"unsafe_operations\"].append(\n                    f\"Potentially unsafe dunder attribute access: {attr_name}\"\n                )\n                continue\n\n            if isinstance(node.value, ast.Name):\n                obj_name = node.value.id\n\n                # Allow accessing attributes on allowed names\n                if obj_name in (expected_variables | allowed_names):\n                    continue\n\n                # Otherwise flag unexpected attribute access\n                issues[\"unsafe_operations\"].append(\n                    f\"Potentially unsafe attribute access: {obj_name}.{attr_name}\"\n                )\n\n        # Check for function calls to make sure they're allowed\n        if isinstance(node, ast.Call) and isinstance(node.func, ast.Name):\n            func_name = node.func.id\n            if func_name not in (expected_variables | allowed_names):\n                issues[\"unsafe_operations\"].append(\n                    f\"Call to potentially unsafe function: {func_name}\"\n                )\n\n    # Check for common potential runtime errors\n    for node in ast.walk(tree):\n        # Division by zero\n        if (\n            isinstance(node, ast.BinOp)\n            and isinstance(node.op, ast.Div)\n            and isinstance(node.right, ast.Constant)\n            and node.right.value == 0\n        ):\n            issues[\"potential_runtime_errors\"].append(\"Division by zero detected\")\n\n        # Index out of bounds for list literals\n        if (\n            isinstance(node, ast.Subscript)\n            and isinstance(node.value, ast.List)\n            and isinstance(node.slice, ast.Constant)\n            and isinstance(node.slice.value, int)\n        ):\n            list_size = len(node.value.elts)\n            index = node.slice.value\n            if index >= list_size:\n                issues[\"potential_runtime_errors\"].append(\n                    f\"Possible index error: index {index} exceeds list size {list_size}\"\n                )\n\n    return issues\n\n\ndef _validate_step_expressions(\n    step: dict[str, Any],\n    location_prefix: str = \"\",\n) -> list[dict[str, Any]]:\n    \"\"\"\n    Recursively validate expressions in a single step or nested step structure.\n\n    Args:\n        step: The step dictionary to validate\n        location_prefix: String prefix to prepend to location path for nested steps\n\n    Returns:\n        List of validation issues found in this step and its nested components\n    \"\"\"\n    step_issues = []\n\n    # Identify which step type we're dealing with\n    step_type = step.get(\"kind_\")\n    step_data = {}\n\n    # If kind_ field is present, use it to determine step type\n    if step_type:\n        # Handle special case for if_else step (converted from \"if\" in the original task)\n        if step_type == \"if_else\":\n            step_data = {\n                \"if_\": step.get(\"if_\"),\n                \"then\": step.get(\"then\"),\n                \"else_\": step.get(\"else_\"),\n            }\n        else:\n            # For other steps, find the data dict by the same name as kind_\n            for key, value in step.items():\n                if key == step_type and isinstance(value, dict):\n                    step_data = value\n                    break\n    else:\n        # Fall back to the old method if kind_ is not present\n        for key, value in step.items():\n            if key not in [\"id\", \"name\", \"label\"] and isinstance(value, dict):\n                step_type = key\n                step_data = value\n                break\n\n    if not step_type or not step_data:\n        return step_issues\n\n    # Add location prefix if provided\n    loc_prefix = f\"{location_prefix}.\" if location_prefix else \"\"\n\n    # Check for Python expressions based on step type\n    if step_type == \"evaluate\":\n        # In evaluate steps, all values are potentially expressions\n        for eval_key, eval_value in step_data.items():\n            if isinstance(eval_value, str) and (\n                eval_value.strip().startswith((\"$\", \"_\"))\n                or \"{{\" in eval_value\n                or eval_value.strip() == \"_\"\n            ):\n                issues = validate_py_expression(eval_value)\n                if any(issues.values()):  # If we found any issues\n                    step_issues.append({\n                        \"location\": f\"{loc_prefix}{step_type}.{eval_key}\",\n                        \"expression\": eval_value,\n                        \"issues\": issues,\n                    })\n\n    elif step_type == \"if\":\n        # For \"if\" steps, the condition is the value of the \"if\" key itself\n        condition = step.get(step_type)\n        if isinstance(condition, str):\n            issues = validate_py_expression(condition)\n            if any(issues.values()):\n                step_issues.append({\n                    \"location\": f\"{loc_prefix}{step_type}\",\n                    \"expression\": condition,\n                    \"issues\": issues,\n                })\n\n        # Check \"then\" and \"else\" branches for expressions\n        for branch in [\"then\", \"else\"]:\n            if branch in step_data and isinstance(step_data[branch], dict):\n                # Recursively validate the nested step\n                nested_step = step_data[branch]\n                nested_location = f\"{loc_prefix}{step_type}.{branch}\"\n                nested_issues = _validate_step_expressions(nested_step, nested_location)\n                step_issues.extend(nested_issues)\n\n    elif step_type == \"if_else\":\n        # For if_else steps, check the condition in if_ field\n        if \"if_\" in step_data and isinstance(step_data[\"if_\"], str):\n            issues = validate_py_expression(step_data[\"if_\"])\n            if any(issues.values()):\n                step_issues.append({\n                    \"location\": f\"{loc_prefix}{step_type}.if\",\n                    \"expression\": step_data[\"if_\"],\n                    \"issues\": issues,\n                })\n\n        # Check then and else branches\n        for branch, key in [(\"then\", \"then\"), (\"else\", \"else_\")]:\n            if key in step_data and isinstance(step_data[key], dict):\n                nested_step = step_data[key]\n                nested_location = f\"{loc_prefix}{step_type}.{branch}\"\n                nested_issues = _validate_step_expressions(nested_step, nested_location)\n                step_issues.extend(nested_issues)\n\n    elif step_type == \"match\":\n        # Check condition expression for match statements\n        if \"case\" in step_data and isinstance(step_data[\"case\"], str):\n            issues = validate_py_expression(step_data[\"case\"])\n            if any(issues.values()):\n                step_issues.append({\n                    \"location\": f\"{loc_prefix}{step_type}.case\",\n                    \"expression\": step_data[\"case\"],\n                    \"issues\": issues,\n                })\n\n        # For match statements, check all cases in \"cases\" array\n        if \"cases\" in step_data and isinstance(step_data[\"cases\"], list):\n            for case_idx, case_item in enumerate(step_data[\"cases\"]):\n                if (\n                    \"case\" in case_item\n                    and isinstance(case_item[\"case\"], str)\n                    and case_item[\"case\"] != \"_\"\n                ):\n                    issues = validate_py_expression(case_item[\"case\"])\n                    if any(issues.values()):\n                        step_issues.append({\n                            \"location\": f\"{loc_prefix}{step_type}.cases[{case_idx}].case\",\n                            \"expression\": case_item[\"case\"],\n                            \"issues\": issues,\n                        })\n\n                # Check for nested structure inside each case's \"then\" field\n                if \"then\" in case_item and isinstance(case_item[\"then\"], dict):\n                    nested_step = case_item[\"then\"]\n                    nested_location = f\"{loc_prefix}{step_type}.cases[{case_idx}].then\"\n                    nested_issues = _validate_step_expressions(nested_step, nested_location)\n                    step_issues.extend(nested_issues)\n\n    elif step_type in [\"foreach\", \"map\"]:\n        # Check \"in\" expression for iterable\n        if \"in\" in step_data and isinstance(step_data[\"in\"], str):\n            issues = validate_py_expression(step_data[\"in\"])\n            if any(issues.values()):\n                step_issues.append({\n                    \"location\": f\"{loc_prefix}{step_type}.in\",\n                    \"expression\": step_data[\"in\"],\n                    \"issues\": issues,\n                })\n\n        # Check for nested structure in do field\n        if \"do\" in step_data and isinstance(step_data[\"do\"], dict):\n            nested_step = step_data[\"do\"]\n            nested_location = f\"{loc_prefix}{step_type}.do\"\n            nested_issues = _validate_step_expressions(nested_step, nested_location)\n            step_issues.extend(nested_issues)\n\n    elif step_type == \"tool\" and \"arguments\" in step_data:\n        # Check arguments that might be expressions\n        for arg_key, arg_value in step_data[\"arguments\"].items():\n            if isinstance(arg_value, str) and (\n                arg_value.strip().startswith((\"$\", \"_\"))\n                or \"{{\" in arg_value\n                or arg_value.strip() == \"_\"\n            ):\n                issues = validate_py_expression(arg_value)\n                if any(issues.values()):\n                    step_issues.append({\n                        \"location\": f\"{loc_prefix}{step_type}.arguments.{arg_key}\",\n                        \"expression\": arg_value,\n                        \"issues\": issues,\n                    })\n\n    # Also recursively validate any other string values that could be expressions\n    for key, value in step_data.items():\n        if (\n            isinstance(value, str)\n            and (value.strip().startswith((\"$\", \"_\")) or \"{{\" in value or value.strip() == \"_\")\n            and key not in [\"if_\", \"case\"]\n        ):  # Skip keys we've already checked\n            issues = validate_py_expression(value)\n            if any(issues.values()):\n                step_issues.append({\n                    \"location\": f\"{loc_prefix}{step_type}.{key}\",\n                    \"expression\": value,\n                    \"issues\": issues,\n                })\n\n    return step_issues\n\n\ndef validate_task_expressions(\n    task_spec: dict[str, Any],\n) -> dict[str, dict[str, list[dict[str, Any]]]]:\n    \"\"\"\n    Validate all Python expressions in a task specification.\n\n    Args:\n        task_spec: The task specification dictionary\n\n    Returns:\n        Dict mapping workflow names to step indices to lists of expression validation issues\n    \"\"\"\n    validation_results: dict[str, dict[str, list[dict[str, Any]]]] = {}\n\n    # Process all workflows in the task\n    if \"workflows\" not in task_spec:\n        return validation_results\n\n    for workflow in task_spec.get(\"workflows\", []):\n        workflow_name = workflow.get(\"name\", \"unknown\")\n        validation_results[workflow_name] = {}\n\n        for step_idx, step in enumerate(workflow.get(\"steps\", [])):\n            step_issues = _validate_step_expressions(step)\n\n            # Store issues for this step if we found any\n            if step_issues:\n                validation_results[workflow_name][str(step_idx)] = step_issues\n\n    return validation_results\n\n\ndef validate_task(\n    task: CreateTaskRequest | UpdateTaskRequest | PatchTaskRequest,\n) -> TaskValidationResult:\n    \"\"\"\n    Validates a task spec for common issues before accepting it.\n\n    Args:\n        task: The task to validate (Create, Update, or Patch request)\n\n    Returns:\n        TaskValidationResult with validation issues\n    \"\"\"\n    validation_result = TaskValidationResult(is_valid=True)\n    # Convert to task spec (this will exclude version, developer_id etc.)\n    try:\n        task_spec = task_to_spec(task)\n        task_spec_dict = task_spec.model_dump()\n\n        # Validate Python expressions\n        expression_results = validate_task_expressions(task_spec_dict)\n\n        # Convert expression validation results to ValidationIssue objects\n        for workflow_name, steps in expression_results.items():\n            for step_idx, issues in steps.items():\n                for issue in issues:\n                    for issue_type, issue_messages in issue[\"issues\"].items():\n                        if not issue_messages:\n                            continue\n\n                        for message in issue_messages:\n                            validation_result.python_expression_issues.append(\n                                ValidationIssue(\n                                    location=f\"workflows.{workflow_name}.steps[{step_idx}].{issue['location']}\",\n                                    message=message,\n                                    severity=\"error\"\n                                    if issue_type\n                                    in [\n                                        \"syntax_errors\",\n                                        \"undefined_names\",\n                                        \"unsupported_features\",\n                                    ]\n                                    else \"warning\",\n                                    details={\n                                        \"issue_type\": issue_type,\n                                        \"expression\": issue[\"expression\"],\n                                    },\n                                )\n                            )\n\n    except ValidationError as e:\n        # Handle Pydantic validation errors\n        for error in e.errors():\n            validation_result.schema_issues.append(\n                ValidationIssue(\n                    location=\".\".join(str(loc) for loc in error[\"loc\"]),\n                    message=error[\"msg\"],\n                    severity=\"error\",\n                    details={\"error_type\": error[\"type\"]},\n                )\n            )\n\n    except Exception as e:\n        # Handle any other exceptions during validation\n        validation_result.other_issues.append(\n            ValidationIssue(\n                location=\"task\",\n                message=f\"Unexpected error during validation: {e!s}\",\n                severity=\"error\",\n            )\n        )\n\n    # Determine if the task is valid (no errors)\n    has_errors = any(\n        issue.severity == \"error\"\n        for issues in [\n            validation_result.python_expression_issues,\n            validation_result.schema_issues,\n            validation_result.other_issues,\n        ]\n        for issue in issues\n    )\n\n    validation_result.is_valid = not has_errors\n\n    return validation_result\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/template.py",
    "content": "from typing import TypeVar\n\nfrom beartype import beartype\nfrom fastapi import HTTPException, status\nfrom jinja2 import TemplateSyntaxError, UndefinedError\nfrom jinja2.sandbox import ImmutableSandboxedEnvironment\nfrom jinja2schema import infer, to_json_schema\nfrom jsonschema import validate\n\nfrom ...common.utils.evaluator import ALLOWED_FUNCTIONS, constants, stdlib\n\n__all__: list[str] = [\n    \"render_template\",\n]\n\n# jinja environment\njinja_env: ImmutableSandboxedEnvironment = ImmutableSandboxedEnvironment(\n    autoescape=False,\n    trim_blocks=True,\n    lstrip_blocks=True,\n    auto_reload=False,\n    enable_async=True,\n    loader=None,\n)\n\n# Add arrow to jinja\n\nfor k, v in (constants | stdlib | ALLOWED_FUNCTIONS).items():\n    jinja_env.globals[k] = v\n\n\n# Funcs\n@beartype\nasync def render_template_string(\n    template_string: str,\n    variables: dict,\n    check: bool = False,\n) -> str:\n    try:\n        # Parse template\n        template = jinja_env.from_string(template_string)\n\n        # If check is required, get required vars from template and validate variables\n        if check:\n            schema = to_json_schema(infer(template_string))\n            validate(instance=variables, schema=schema)\n\n        # Render\n        return await template.render_async(**variables)\n    except TemplateSyntaxError as e:\n        raise HTTPException(\n            status_code=status.HTTP_400_BAD_REQUEST,\n            detail=f\"Template syntax error: {e!s}\",\n        )\n    except UndefinedError as e:\n        raise HTTPException(\n            status_code=status.HTTP_400_BAD_REQUEST,\n            detail=f\"Template undefined variable: {e!s}\",\n        )\n    except Exception as e:\n        raise HTTPException(\n            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,\n            detail=f\"Template rendering error: {e!s}\",\n        )\n\n\n# A render function that can render arbitrarily nested lists of dicts\n# only render keys: content, text, image_url\n# and only render values that are strings\nT = TypeVar(\"T\", str, dict, list[dict | list[dict]], None)\n\n\n@beartype\nasync def render_template_nested[T: (str, dict, list[dict | list[dict]], None)](\n    input: T,\n    variables: dict,\n    check: bool = False,\n) -> T:\n    match input:\n        case str():\n            return await render_template_string(input, variables, check)\n        case dict():\n            return {\n                k: await render_template_nested(v, variables, check) for k, v in input.items()\n            }\n        case list():\n            return [await render_template_nested(v, variables, check) for v in input]\n        case _:\n            return input\n\n\n@beartype\nasync def render_template[T: str | list[dict]](\n    input: T,\n    variables: dict,\n    check: bool = False,\n    skip_vars: list[str] | None = None,\n) -> T:\n    variables = {\n        name: val\n        for name, val in variables.items()\n        if not (skip_vars is not None and isinstance(name, str) and name in skip_vars)\n    }\n\n    return await render_template_nested(input, variables, check)\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/tool_runner.py",
    "content": "from __future__ import annotations\n\nimport inspect\nimport json\nfrom collections.abc import Awaitable, Callable, Sequence\nfrom typing import Any\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom litellm.types.utils import ChatCompletionMessageToolCall\nfrom litellm.utils import ModelResponse\nfrom pydantic import create_model\n\nfrom ...activities.execute_api_call import execute_api_call\nfrom ...activities.execute_integration import execute_integration\nfrom ...activities.execute_system import execute_system\nfrom ...activities.tool_executor import format_tool_results_for_llm\nfrom ...autogen.openapi_model import (\n    BaseChosenToolCall,\n    CreateToolRequest,\n    SystemDef,\n    Tool,\n    ToolExecutionResult,\n)\nfrom ...clients import integrations, litellm\nfrom ...common.protocol.tasks import StepContext\nfrom ...common.utils.evaluator import get_handler_with_filtered_params\n\n\n# AIDEV-NOTE: Formats internal Tool definitions into the structure expected by the LLM (currently focused on OpenAI function tools and integrations).\n@beartype\nasync def format_tool(tool: Tool | CreateToolRequest) -> dict:\n    \"\"\"Format a Tool or CreateToolRequest for the LLM.\"\"\"\n\n    if tool.type == \"function\":\n        return {\n            \"type\": \"function\",\n            \"function\": {\n                \"name\": tool.name,\n                \"description\": tool.description,\n                \"parameters\": tool.function and tool.function.parameters,\n            },\n        }\n    if tool.type == \"integration\" and tool.integration is not None:\n        return await integrations.convert_to_openai_tool(\n            provider=tool.integration.provider,\n            method=tool.integration.method,\n        )\n    if tool.type == \"api_call\" and tool.api_call is not None:\n        params = {}\n        if tool.api_call.params_schema is not None:\n            params = tool.api_call.params_schema.model_dump(exclude_none=True)\n        return {\n            \"type\": \"function\",\n            \"function\": {\n                \"name\": tool.name,\n                \"description\": tool.description,\n                \"parameters\": params,\n            },\n        }\n    if tool.type == \"system\" and tool.system is not None:\n        handler = get_handler_with_filtered_params(tool.system)\n        sig = inspect.signature(handler)\n        fields = {\n            name: (\n                param.annotation,\n                ... if param.default is inspect.Signature.empty else param.default,\n            )\n            for name, param in sig.parameters.items()\n        }\n        Model = create_model(f\"{handler.__name__.title()}Params\", **fields)\n\n        return {\n            \"type\": \"function\",\n            \"function\": {\n                \"name\": tool.name,\n                \"description\": tool.description or inspect.getdoc(handler),\n                \"parameters\": Model.model_json_schema(),\n            },\n        }\n    return {\n        \"type\": \"function\",\n        \"function\": {\n            \"name\": tool.name,\n            \"description\": tool.description,\n            \"parameters\": tool.function.parameters if tool.function else {},\n        },\n    }\n\n\n# AIDEV-NOTE: Context-free tool execution function that can be used from chat endpoint or other contexts\n@beartype\nasync def run_tool_call(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    task_id: UUID | None = None,\n    session_id: UUID | None = None,\n    tool: Tool | CreateToolRequest,\n    call: BaseChosenToolCall,\n    connection_pool=None,\n) -> ToolExecutionResult:\n    \"\"\"Execute a tool call with explicit parameters (no context required).\"\"\"\n\n    call_spec = call.model_dump()\n    arguments = call_spec[f\"{call.type}\"][\"arguments\"]\n    setup = call_spec[f\"{call.type}\"][\"setup\"]\n\n    if tool.type == \"integration\" and tool.integration:\n        output = await execute_integration(\n            developer_id=developer_id,\n            agent_id=agent_id,\n            task_id=task_id,\n            session_id=session_id,\n            tool_name=tool.name,\n            integration=tool.integration,\n            arguments=arguments,\n            setup=setup,\n            connection_pool=connection_pool,\n        )\n        return ToolExecutionResult(id=call.id, name=tool.name, output=output)\n\n    if tool.type == \"system\" and tool.system:\n        system = tool.system.model_copy(update={\"arguments\": arguments})\n        system_dict = system.model_dump()\n        system_def = SystemDef(**system_dict)\n        output = await execute_system(\n            developer_id=developer_id,\n            system=system_def,\n            connection_pool=connection_pool,\n        )\n        if hasattr(output, \"model_dump\"):\n            return ToolExecutionResult(id=call.id, name=tool.name, output=output.model_dump())\n        return ToolExecutionResult(id=call.id, name=tool.name, output=output)\n\n    if tool.type == \"api_call\" and tool.api_call:\n        arguments[\"include_response_content\"] = tool.api_call.include_response_content\n        output = await execute_api_call(tool.api_call, arguments)\n        return ToolExecutionResult(id=call.id, name=tool.name, output=output)\n\n    return ToolExecutionResult(id=call.id, name=tool.name, output={})\n\n\n@beartype\nasync def run_context_tool(\n    context: StepContext,\n    tool: Tool | CreateToolRequest,\n    call: BaseChosenToolCall,\n) -> ToolExecutionResult:\n    \"\"\"Execute a tool call within a workflow step context.\"\"\"\n\n    # AIDEV-NOTE: Extract parameters from context and delegate to context-free function\n    developer_id = context.execution_input.developer_id\n    agent_id = context.execution_input.agent.id\n    task_id = context.execution_input.task.id if context.execution_input.task else None\n    session_id = getattr(context.execution_input, \"session\", None)\n    session_id = session_id.id if session_id else None\n\n    # Delegate to the context-free function\n    return await run_tool_call(\n        developer_id=developer_id,\n        agent_id=agent_id,\n        task_id=task_id,\n        session_id=session_id,\n        tool=tool,\n        call=call,\n    )\n\n\n@beartype\ndef convert_litellm_to_chosen_tool_call(\n    call: ChatCompletionMessageToolCall, tool: Tool | CreateToolRequest\n) -> BaseChosenToolCall:\n    \"\"\"\n    Convert a LiteLLM ChatCompletionMessageToolCall to the appropriate BaseChosenToolCall subtype\n    based on the tool's type. This preserves the internal tool type information.\n    \"\"\"\n    # Parse arguments from the string\n    arguments_str = json.loads(call.function.arguments)\n\n    tool_spec = tool.model_dump()\n    if \"id\" in tool_spec:\n        tool_spec.pop(\"id\")\n\n    setup = getattr(tool_spec, f\"{tool.type}\", {}).get(\"setup\", {})\n    if setup:\n        setup = setup.model_dump()\n    tool_spec[f\"{tool.type}\"][\"setup\"] = setup\n\n    # TODO: add computer_20241022, text_editor_20241022, bash_20241022\n    tool_spec[f\"{tool.type}\"][\"arguments\"] = arguments_str\n\n    return BaseChosenToolCall(\n        id=call.id,\n        **tool_spec,\n    )\n\n\n@beartype\nasync def run_llm_with_tools(\n    *,\n    messages: list[dict],\n    tools: Sequence[Tool | CreateToolRequest],\n    settings: dict[str, Any],\n    run_tool_call: Callable[\n        [Tool | CreateToolRequest, BaseChosenToolCall], Awaitable[ToolExecutionResult]\n    ],  # TODO: Probably can be removed\n) -> list[dict]:\n    \"\"\"Run the LLM with a tool loop.\"\"\"\n\n    # Create a copy of messages to avoid mutating the original\n    messages_copy = messages.copy()\n\n    formatted_tools = [await format_tool(t) for t in tools]\n\n    # Build a map of function name to tool\n    tool_map = {}\n    for t in tools:\n        if t.type == \"integration\" and t.integration is not None:\n            tool_map[f\"{t.integration.provider}_{t.integration.method}\"] = t\n        else:\n            tool_map[t.name] = t\n\n    while True:\n        response: ModelResponse = await litellm.acompletion(\n            tools=formatted_tools,\n            messages=messages_copy,\n            **settings,\n        )\n        choice = response.choices[0]\n        messages_copy.append(choice.message.model_dump())\n\n        if choice.finish_reason != \"tool_calls\" or not choice.message.tool_calls:\n            return messages_copy\n\n        # Process ALL tool calls before continuing\n        for litellm_call in choice.message.tool_calls:\n            # Get the function name from the call\n            function_name = litellm_call.function.name\n\n            # Try to find the tool by name or handle integration tools\n            tool = tool_map.get(function_name)\n\n            if tool is None:\n                # Create a dummy response for unknown tools to satisfy the API requirement\n                error_result = ToolExecutionResult(\n                    id=litellm_call.id,\n                    name=function_name,\n                    output={},\n                    error=f\"Tool '{function_name}' not found\",\n                )\n                messages_copy.append(format_tool_results_for_llm(error_result))\n                continue\n\n            # Convert LiteLLM call to appropriate internal format while preserving tool type\n            internal_call = convert_litellm_to_chosen_tool_call(litellm_call, tool)\n            # Execute the tool with the correctly typed call\n            result = await run_tool_call(tool, internal_call)\n            messages_copy.append(format_tool_results_for_llm(result))\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/types.py",
    "content": "from beartype.vale import Is\nfrom beartype.vale._core._valecore import BeartypeValidator\nfrom pydantic import BaseModel\n\n\ndef dict_like(pydantic_model_class: type[BaseModel]) -> BeartypeValidator:\n    required_fields_set: set[str] = {\n        field for field, info in pydantic_model_class.model_fields.items() if info.is_required()\n    }\n\n    return Is[\n        lambda x: isinstance(x, pydantic_model_class)\n        or required_fields_set.issubset(set(x.keys()))\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/usage.py",
    "content": "\"\"\"\nUtilities for tracking token usage and costs for LLM API calls.\n\"\"\"\n\nfrom typing import Any\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom litellm.utils import ModelResponse, token_counter\n\nfrom ...queries.usage.create_usage_record import create_usage_record\n\n\ndef is_llama_based_model(model_string: str) -> bool:\n    \"\"\"Check if a model string (either model_name or litellm_params.model) indicates a LLaMA model\"\"\"\n    # AIDEV-NOTE: More specific Llama model detection patterns to avoid false positives\n    model_lower = model_string.lower()\n\n    # Check for specific llama patterns\n    llama_patterns = [\n        \"llama\",  # Matches any model with \"llama\" in the name\n        \"meta-llama/\",  # Meta's official Llama models\n        \"l3.1\",  # Llama 3.1 models\n        \"l3.3\",  # Llama 3.3 models\n        \"/l3.1\",  # Llama 3.1 models with provider prefix\n        \"/l3.3\",  # Llama 3.3 models with provider prefix\n    ]\n\n    return any(pattern in model_lower for pattern in llama_patterns)\n\n\n@beartype\nasync def track_usage(\n    *,\n    developer_id: UUID,\n    model: str,\n    messages: list[dict],\n    response: ModelResponse,\n    custom_api_used: bool = False,\n    metadata: dict[str, Any] = {},\n    connection_pool: Any = None,  # This is for testing purposes\n) -> None:\n    \"\"\"\n    Tracks token usage and costs for an LLM API call.\n\n    Parameters:\n        developer_id (UUID): The unique identifier for the developer.\n        model (str): The model used for the API call.\n        messages (list[dict]): The messages sent to the model.\n        response (ModelResponse): The response from the LLM API call.\n        custom_api_used (bool): Whether a custom API key was used.\n        metadata (dict): Additional metadata about the usage.\n\n    Returns:\n        None\n    \"\"\"\n\n    # Try to get token counts from response.usage\n    if response.usage:\n        prompt_tokens = response.usage.prompt_tokens\n        completion_tokens = response.usage.completion_tokens\n    else:\n        # Calculate tokens manually if usage is not available\n        prompt_tokens = token_counter(model=model, messages=messages)\n\n        # Calculate completion tokens from the response\n        completion_content = [\n            {\"content\": choice.message.content}\n            for choice in response.choices\n            if hasattr(choice, \"message\")\n            and choice.message\n            and hasattr(choice.message, \"content\")\n            and choice.message.content\n        ]\n\n        completion_tokens = (\n            token_counter(model=model, messages=completion_content) if completion_content else 0\n        )\n\n    # Map the model name to the actual model name\n    actual_model = model\n\n    is_llama_model = is_llama_based_model(actual_model)\n\n    # Create usage record\n    await create_usage_record(\n        developer_id=developer_id,\n        model=actual_model,\n        prompt_tokens=prompt_tokens,\n        completion_tokens=completion_tokens,\n        custom_api_used=custom_api_used,\n        metadata={\n            \"request_id\": response.id if hasattr(response, \"id\") else None,\n            **metadata,\n        },\n        is_llama_model=is_llama_model,\n        connection_pool=connection_pool,\n    )\n\n\n@beartype\nasync def track_embedding_usage(\n    *,\n    developer_id: UUID,\n    model: str,\n    inputs: list[str],\n    response: Any,\n    custom_api_used: bool = False,\n    metadata: dict[str, Any] = {},\n) -> None:\n    \"\"\"\n    Tracks token usage and costs for an embedding API call.\n\n    Parameters:\n        developer_id (UUID): The unique identifier for the developer.\n        model (str): The model used for the embedding.\n        inputs (list[str]): The inputs sent for embedding.\n        response (Any): The response from the embedding API call.\n        custom_api_used (bool): Whether a custom API key was used.\n        metadata (dict): Additional metadata about the usage.\n\n    Returns:\n        None\n    \"\"\"\n\n    # Try to get token count from response.usage\n    if hasattr(response, \"usage\") and response.usage:\n        prompt_tokens = response.usage.prompt_tokens\n    else:\n        # Calculate tokens manually if usage is not available\n        prompt_tokens = sum(\n            token_counter(model=model, text=input_text) for input_text in inputs\n        )\n\n    # Map the model name to the actual model name\n    actual_model = model\n\n    # Create usage record for embeddings (no completion tokens)\n    await create_usage_record(\n        developer_id=developer_id,\n        model=actual_model,\n        prompt_tokens=prompt_tokens,\n        completion_tokens=0,  # Embeddings don't have completion tokens\n        custom_api_used=custom_api_used,\n        metadata=metadata,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/workflows.py",
    "content": "# AIDEV-NOTE: Workflow name parsing utility for extracting base workflow from transition strings.\nfrom ...autogen.openapi_model import Transition\n\nPAR_PREFIX = \"PAR:\"\nSEPARATOR = \"`\"\n\n\ndef get_workflow_name(transition: Transition) -> str:\n    workflow_str = transition.current.workflow\n    if workflow_str.startswith(PAR_PREFIX):\n        # Extract between PAR:` and first ` after \"workflow\"\n        start_index = len(PAR_PREFIX) + len(SEPARATOR)\n        assert len(workflow_str) > start_index and SEPARATOR in workflow_str[start_index:], (\n            \"Workflow string is too short or missing backtick\"\n        )\n        workflow_str = workflow_str[start_index:].split(SEPARATOR)[0]\n    elif workflow_str.startswith(SEPARATOR):\n        # Extract between backticks\n        start_index = len(SEPARATOR)\n        assert len(workflow_str) > start_index and SEPARATOR in workflow_str[start_index:], (\n            \"Workflow string is too short or missing backtick\"\n        )\n        workflow_str = workflow_str[start_index:].split(SEPARATOR)[0]\n\n    return workflow_str\n"
  },
  {
    "path": "src/agents-api/agents_api/common/utils/yaml.py",
    "content": "from typing import Any\n\nimport yaml\n\n\ndef load(string: str) -> Any:\n    return yaml.load(string, Loader=yaml.CSafeLoader)\n\n\ndef dump(value: Any) -> str:\n    return yaml.dump(value, Dumper=yaml.CSafeDumper)\n"
  },
  {
    "path": "src/agents-api/agents_api/dependencies/__init__.py",
    "content": "\"\"\"This module contains dependencies that are crucial for the operation of the agents-api. It includes components for:\n\n- `auth.py` for API key authentication: This component is responsible for validating the API key provided in the request headers, ensuring that only authorized requests are processed.\n- `developer_id.py` for developer identification: Handles developer-specific headers like `X-Developer-Id` and `X-Developer-Email`, facilitating the identification of the developer making the request.\n- `exceptions.py` for custom exception handling: Defines custom exceptions that are used throughout the dependencies module to handle errors related to API security and developer identification.\n\nThese components collectively ensure the security and proper operation of the agents-api by authenticating requests, identifying developers, and handling errors in a standardized manner.\"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/dependencies/auth.py",
    "content": "from typing import Any\n\nfrom fastapi import HTTPException, Security\nfrom fastapi.security.api_key import APIKeyHeader\nfrom starlette.status import HTTP_403_FORBIDDEN\n\nfrom ..env import api_key, api_key_header_name\n\napi_key_header: Any = APIKeyHeader(name=api_key_header_name, auto_error=False)\n\n\nasync def get_api_key(\n    user_api_key: str = Security(api_key_header),\n) -> str:\n    user_api_key = str(user_api_key)\n    user_api_key = (user_api_key or \"\").replace(\"Bearer \", \"\").strip()\n\n    if user_api_key != api_key:\n        raise HTTPException(status_code=HTTP_403_FORBIDDEN, detail=\"Could not validate API KEY\")\n    return user_api_key\n"
  },
  {
    "path": "src/agents-api/agents_api/dependencies/content_length.py",
    "content": "from fastapi import Header\n\nfrom ..env import max_payload_size\n\n\nasync def valid_content_length(content_length: int = Header(..., lt=max_payload_size)):\n    return content_length\n"
  },
  {
    "path": "src/agents-api/agents_api/dependencies/developer_id.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Header\n\nfrom ..common.protocol.developers import Developer\nfrom ..env import multi_tenant_mode\nfrom ..queries.developers.get_developer import get_developer\nfrom .exceptions import InvalidHeaderFormat\n\n\nasync def get_developer_id(\n    x_developer_id: Annotated[UUID | None, Header(include_in_schema=False)] = None,\n) -> UUID:\n    if not multi_tenant_mode:\n        return UUID(\"00000000-0000-0000-0000-000000000000\")\n\n    if not x_developer_id:\n        msg = \"X-Developer-Id header required\"\n        raise InvalidHeaderFormat(msg)\n\n    if isinstance(x_developer_id, str):\n        try:\n            x_developer_id = UUID(x_developer_id, version=4)\n        except ValueError as e:\n            msg = \"X-Developer-Id must be a valid UUID\"\n            raise InvalidHeaderFormat(msg) from e\n\n    return x_developer_id\n\n\nasync def get_developer_data(\n    x_developer_id: Annotated[UUID | None, Header(include_in_schema=False)] = None,\n) -> Developer:\n    if not multi_tenant_mode:\n        assert not x_developer_id, \"X-Developer-Id header not allowed in single-tenant mode\"\n        return await get_developer(developer_id=UUID(\"00000000-0000-0000-0000-000000000000\"))\n\n    if not x_developer_id:\n        msg = \"X-Developer-Id header required\"\n        raise InvalidHeaderFormat(msg)\n\n    if isinstance(x_developer_id, str):\n        try:\n            x_developer_id = UUID(x_developer_id, version=4)\n        except ValueError as e:\n            msg = \"X-Developer-Id must be a valid UUID\"\n            raise InvalidHeaderFormat(msg) from e\n\n    return await get_developer(developer_id=x_developer_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/dependencies/exceptions.py",
    "content": "class InvalidHeaderFormat(Exception):\n    pass\n"
  },
  {
    "path": "src/agents-api/agents_api/dependencies/query_filter.py",
    "content": "from collections.abc import Callable\nfrom typing import Annotated, Any\n\nfrom fastapi import Query, Request\nfrom pydantic import BaseModel, ConfigDict\n\n\ndef convert_value(value: str) -> Any:\n    \"\"\"\n    Attempts to convert a string value to an int or float. Returns the original string if conversion fails.\n    \"\"\"\n    for convert in (int, float):\n        try:\n            return convert(value)\n        except ValueError:\n            continue\n    return value\n\n\nclass MetadataFilter(BaseModel):\n    model_config = ConfigDict(extra=\"allow\")\n\n\ndef create_filter_extractor(\n    prefix: str = \"metadata_filter\",\n) -> Callable[[Request, MetadataFilter], MetadataFilter]:\n    \"\"\"\n    Creates a dependency function to extract filter parameters with a given prefix.\n\n    Args:\n        prefix (str): The prefix to identify filter parameters.\n\n    Returns:\n        Callable[[Request], dict[str, Any]]: The dependency function.\n    \"\"\"\n\n    # Add a dot to the prefix to allow for nested filters\n    prefix += \".\"\n\n    def extract_filters(\n        request: Request,\n        metadata_filter: Annotated[MetadataFilter, Query(default_factory=MetadataFilter)],\n    ) -> MetadataFilter:\n        \"\"\"\n        Extracts query parameters that start with the specified prefix and returns them as a dictionary.\n\n        Args:\n            request (Request): The incoming HTTP request.\n\n        Returns:\n            dict[str, Any]: A dictionary containing the filter parameters.\n        \"\"\"\n\n        filters: dict[str, Any] = {}\n\n        for key, value in request.query_params.items():\n            if key.startswith(prefix):\n                filter_key = key[len(prefix) :]\n                filters[filter_key] = convert_value(value)\n\n        return MetadataFilter(**filters)\n\n    return extract_filters\n"
  },
  {
    "path": "src/agents-api/agents_api/env.py",
    "content": "\"\"\"\nThis module is responsible for loading and providing access to environment variables used throughout the agents-api application.\nIt utilizes the environs library for environment variable parsing.\n\"\"\"\n\nimport multiprocessing\nimport random\nfrom pprint import pprint\nfrom typing import TYPE_CHECKING, Any\n\nfrom environs import Env\n\n# Initialize the Env object for environment variable parsing.\nenv: Any = Env()\n\n# Debug\n# -----\ndebug: bool = env.bool(\"AGENTS_API_DEBUG\", default=False)\ntesting: bool = env.bool(\"AGENTS_API_TESTING\", default=False)\nsentry_dsn: str = env.str(\"SENTRY_DSN\", default=None)\n\n# App\n# ---\nmulti_tenant_mode: bool = env.bool(\"AGENTS_API_MULTI_TENANT_MODE\", default=False)\nprotocol: str = env.str(\"AGENTS_API_PROTOCOL\", default=\"http\")\nhostname: str = env.str(\"AGENTS_API_HOSTNAME\", default=\"localhost\")\npublic_port: int = env.int(\"AGENTS_API_PUBLIC_PORT\", default=80)\napi_prefix: str = env.str(\"AGENTS_API_PREFIX\", default=\"\")\nmax_payload_size: int = env.int(\n    \"AGENTS_API_MAX_PAYLOAD_SIZE\",\n    default=50 * 1024 * 1024,  # 50MB\n)\nenable_backwards_compatibility_for_syntax: bool = env.bool(\n    \"ENABLE_BACKWARDS_COMPATIBILITY_FOR_SYNTAX\", default=True\n)\nmax_steps_accessible_in_tasks: int = env.int(\"MAX_STEPS_ACCESSIBLE_IN_TASKS\", default=250)\ngunicorn_cpu_divisor: int = env.int(\"GUNICORN_CPU_DIVISOR\", default=4)\nsecrets_cache_ttl: int = env.int(\"SECRETS_CACHE_TTL\", default=120)\n\nraw_workers: str | None = env.str(\"GUNICORN_WORKERS\", default=None)\nif raw_workers and raw_workers.strip():\n    gunicorn_workers: int = int(raw_workers)\nelse:\n    gunicorn_workers: int = max(multiprocessing.cpu_count() // gunicorn_cpu_divisor, 1)\n\n\n# Tasks\n# -----\ntask_max_parallelism: int = env.int(\"AGENTS_API_TASK_MAX_PARALLELISM\", default=100)\ntransition_requests_per_minute: int = env.int(\n    \"AGENTS_API_TRANSITION_REQUESTS_PER_MINUTE\",\n    default=500,\n)\n\n\n# Blob Store\n# ----------\nuse_blob_store_for_temporal: bool = testing or env.bool(\n    \"USE_BLOB_STORE_FOR_TEMPORAL\",\n    default=False,\n)\n\nblob_store_bucket: str = env.str(\"BLOB_STORE_BUCKET\", default=\"agents-api\")\nblob_store_cutoff_kb: int = env.int(\"BLOB_STORE_CUTOFF_KB\", default=64)\ns3_endpoint: str = env.str(\"S3_ENDPOINT\", default=\"http://seaweedfs:8333\")\ns3_access_key: str | None = env.str(\"S3_ACCESS_KEY\", default=None)\ns3_secret_key: str | None = env.str(\"S3_SECRET_KEY\", default=None)\n\n\n# PostgreSQL\n# ----\npg_dsn: str = env.str(\n    \"PG_DSN\",\n    default=\"postgres://postgres:postgres@0.0.0.0:5432/postgres?sslmode=disable\",\n)\nsummarization_model_name: str = env.str(\"SUMMARIZATION_MODEL_NAME\", default=\"gpt-4-turbo\")\n\nquery_timeout: float = env.float(\"QUERY_TIMEOUT\", default=90.0)\npool_max_size: int = min(env.int(\"POOL_MAX_SIZE\", default=multiprocessing.cpu_count()), 10)\n\n\n# Auth\n# ----\n_random_generated_key: str = \"\".join(str(random.randint(0, 9)) for _ in range(32))\napi_key: str = env.str(\"AGENTS_API_KEY\", _random_generated_key)\n\nif api_key == _random_generated_key and not TYPE_CHECKING:\n    print(\"Generated API key since not set in the environment.\")\n\napi_key_header_name: str = env.str(\"AGENTS_API_KEY_HEADER_NAME\", default=\"X-Auth-Key\")\n\nmax_free_sessions: int = env.int(\"MAX_FREE_SESSIONS\", default=50)\nmax_free_executions: int = env.int(\"MAX_FREE_EXECUTIONS\", default=50)\n\n# Usage limits\n# -----------\nfree_tier_cost_limit: float = env.float(\"FREE_TIER_COST_LIMIT\", default=2.0)\n\n# Litellm API\n# -----------\nlitellm_url: str | None = env.str(\"LITELLM_URL\", default=None)\nlitellm_master_key: str = env.str(\"LITELLM_MASTER_KEY\", default=\"\")\n\n\n# Embedding service\n# -----------------\nembedding_model_id: str = env.str(\"EMBEDDING_MODEL_ID\", default=\"openai/text-embedding-3-large\")\n\nembedding_dimensions: int = env.int(\"EMBEDDING_DIMENSIONS\", default=1024)\n\n\n# Integration service\n# -------------------\nintegration_service_url: str = env.str(\"INTEGRATION_SERVICE_URL\", default=\"http://0.0.0.0:8000\")\n\n\n# Temporal\n# --------\ntemporal_worker_url: str = env.str(\"TEMPORAL_WORKER_URL\", default=\"localhost:7233\")\ntemporal_namespace: str = env.str(\"TEMPORAL_NAMESPACE\", default=\"default\")\ntemporal_client_cert: str = env.str(\"TEMPORAL_CLIENT_CERT\", default=None)\ntemporal_private_key: str = env.str(\"TEMPORAL_PRIVATE_KEY\", default=None)\ntemporal_api_key: str = env.str(\"TEMPORAL_API_KEY\", default=None)\ntemporal_endpoint: Any = env.str(\"TEMPORAL_ENDPOINT\", default=\"localhost:7233\")\ntemporal_task_queue: Any = env.str(\"TEMPORAL_TASK_QUEUE\", default=\"julep-task-queue\")\ntemporal_schedule_to_close_timeout: int = env.int(\n    \"TEMPORAL_SCHEDULE_TO_CLOSE_TIMEOUT\",\n    default=3600,\n)\ntemporal_heartbeat_timeout: int = env.int(\"TEMPORAL_HEARTBEAT_TIMEOUT\", default=900)\ntemporal_metrics_bind_host: str = env.str(\"TEMPORAL_METRICS_BIND_HOST\", default=\"0.0.0.0\")\ntemporal_metrics_bind_port: int = env.int(\"TEMPORAL_METRICS_BIND_PORT\", default=14000)\ntemporal_activity_after_retry_timeout: int = env.int(\n    \"TEMPORAL_ACTIVITY_AFTER_RETRY_TIMEOUT\",\n    default=30,\n)\ntemporal_search_attribute_key: str = env.str(\n    \"TEMPORAL_SEARCH_ATTRIBUTE_KEY\",\n    default=\"CustomStringField\",\n)\n\n\ndef _parse_optional_int(val: str | None) -> int | None:\n    if not val or val.lower() == \"none\":\n        return None\n    return int(val)\n\n\n# Temporal worker configuration\ntemporal_max_concurrent_workflow_tasks: int | None = _parse_optional_int(\n    env.str(\"TEMPORAL_MAX_CONCURRENT_WORKFLOW_TASKS\", default=None),\n)\n\ntemporal_max_concurrent_activities: int | None = _parse_optional_int(\n    env.str(\"TEMPORAL_MAX_CONCURRENT_ACTIVITIES\", default=None),\n)\n\ntemporal_max_activities_per_second: int | None = _parse_optional_int(\n    env.str(\"TEMPORAL_MAX_ACTIVITIES_PER_SECOND\", default=None),\n)\n\ntemporal_max_task_queue_activities_per_second: int | None = _parse_optional_int(\n    env.str(\"TEMPORAL_MAX_TASK_QUEUE_ACTIVITIES_PER_SECOND\", default=None),\n)\n\n# API Keys needed for the `humanize_text` method in `evaluate` step\n# ------------\nsapling_api_key: str = env.str(\"SAPLING_API_KEY\", default=None)\nzerogpt_api_key: str = env.str(\"ZEROGPT_API_KEY\", default=None)\nzerogpt_url: str = env.str(\n    \"ZEROGPT_URL\", default=\"https://api.zerogpt.com/api/detect/detectText\"\n)\ndesklib_url: str = env.str(\"DESKLIB_URL\", default=\"http://35.243.190.233/detect\")\nsapling_url: str = env.str(\"SAPLING_URL\", default=\"https://api.sapling.ai/api/v1/aidetect\")\nbrave_api_key: str = env.str(\"BRAVE_API_KEY\", default=None)\n\n# Feature Flags\n# -------------\nunleash_url: str = env.str(\"UNLEASH_URL\", default=\"http://localhost:4242/api\")\nunleash_api_token: str = env.str(\n    \"UNLEASH_API_TOKEN\", default=\"default:development.unleash-insecure-api-token\"\n)\nunleash_app_name: str = env.str(\"UNLEASH_APP_NAME\", default=\"agents-api\")\n\n# Responses Flag\n# ---------------\nenable_responses: bool = env.bool(\"ENABLE_RESPONSES\", default=False)\n\n# Search Feature Gates\n# --------------------\nenable_hybrid_trigram_search: bool = env.bool(\"ENABLE_HYBRID_TRIGRAM_SEARCH\", default=False)\n\n\n# Hasura GraphQL settings\nhasura_url: str = env.str(\n    \"HASURA_URL\",\n    default=\"http://hasura:8080\",\n)\nhasura_admin_secret: str | None = env.str(\n    \"HASURA_ADMIN_SECRET\",\n    default=None,\n)\n\n# Llama model cost\n# ----------------\n# AIDEV-NOTE: Validate multiplier is within reasonable bounds (0 to 100)\n_raw_llama_multiplier: float = env.float(\"LLAMA_MODEL_MULTIPLIER\", default=1.0)\nif _raw_llama_multiplier < 0 or _raw_llama_multiplier > 100:\n    msg = \"LLAMA_MODEL_MULTIPLIER must be between 0 and 100\"\n    raise ValueError(msg)\nllama_model_multiplier: float = _raw_llama_multiplier\n\n\n# Secrets\n# -------\ndef _validate_master_key(key: str | None) -> str:\n    \"\"\"Validate that the master key is the correct length for encryption and is provided.\"\"\"\n    if key is None or len(key) != 32:\n        msg = \"SECRETS_MASTER_KEY must be exactly 32 characters long\"\n        raise ValueError(msg)\n    return key\n\n\nif not TYPE_CHECKING and not testing:\n    secrets_master_key: str = _validate_master_key(env.str(\"SECRETS_MASTER_KEY\"))\n\nelse:\n    secrets_master_key: str = \"*\" * 32\n    print(\"USING FAKE SECRETS KEY FOR TESTING\")\n\n# Consolidate environment variables\nenvironment: dict[str, Any] = {\n    \"debug\": debug,\n    \"multi_tenant_mode\": multi_tenant_mode,\n    \"sentry_dsn\": sentry_dsn,\n    \"temporal_endpoint\": temporal_endpoint,\n    \"temporal_task_queue\": temporal_task_queue,\n    \"api_key\": api_key,\n    \"api_key_header_name\": api_key_header_name,\n    \"hostname\": hostname,\n    \"api_prefix\": api_prefix,\n    \"temporal_worker_url\": temporal_worker_url,\n    \"temporal_namespace\": temporal_namespace,\n    \"embedding_model_id\": embedding_model_id,\n    \"use_blob_store_for_temporal\": use_blob_store_for_temporal,\n    \"blob_store_bucket\": blob_store_bucket,\n    \"blob_store_cutoff_kb\": blob_store_cutoff_kb,\n    \"s3_endpoint\": s3_endpoint,\n    \"s3_access_key\": s3_access_key,\n    \"s3_secret_key\": s3_secret_key,\n    \"testing\": testing,\n    \"enable_responses\": enable_responses,\n    \"free_tier_cost_limit\": free_tier_cost_limit,\n    \"secrets_master_key\": secrets_master_key,\n    \"unleash_url\": unleash_url,\n    \"unleash_api_token\": unleash_api_token,\n    \"unleash_app_name\": unleash_app_name,\n    \"llama_model_multiplier\": llama_model_multiplier,\n}\n\nif debug or testing:\n    # Print the loaded environment variables for debugging purposes.\n    print(\"Environment variables:\")\n    pprint(environment)\n    print()\n\n    # Yell if testing is enabled\n    print(\"@\" * 80)\n    print(\n        f\"@@@ Running in {'testing' if testing else 'debug'} mode. This should not be enabled in production. @@@\",\n    )\n    print(\"@\" * 80)\n"
  },
  {
    "path": "src/agents-api/agents_api/exceptions.py",
    "content": "from dataclasses import dataclass\n\n\nclass AgentsBaseException(Exception):\n    pass\n\n\nclass ModelNotSupportedError(AgentsBaseException):\n    \"\"\"Exception raised when model is not supported.\"\"\"\n\n    def __init__(self, model_name: str) -> None:\n        super().__init__(f\"model {model_name} is not supported\")\n\n\nclass PromptTooBigError(AgentsBaseException):\n    \"\"\"Exception raised when prompt is too big.\"\"\"\n\n    def __init__(self, token_count, max_tokens) -> None:\n        super().__init__(\n            f\"prompt is too big, {token_count} tokens provided, exceeds maximum of {max_tokens}\",\n        )\n\n\nclass UnknownTokenizerError(AgentsBaseException):\n    \"\"\"Exception raised when tokenizer is unknown.\"\"\"\n\n    def __init__(self) -> None:\n        super().__init__(\"unknown tokenizer\")\n\n\nclass TooManyRequestsError(Exception):\n    pass\n\n\n@dataclass\nclass LastErrorInput:\n    last_error: BaseException | None\n\n\n@dataclass\nclass FailedDecodingSentinel:\n    \"\"\"Sentinel object returned when failed to decode payload.\"\"\"\n\n    payload_data: bytes\n\n\n@dataclass\nclass FailedEncodingSentinel:\n    \"\"\"Sentinel object returned when failed to encode payload.\"\"\"\n\n    payload_data: bytes\n\n\nclass QueriesBaseException(AgentsBaseException):\n    pass\n\n\nclass InvalidSQLQuery(QueriesBaseException):\n    def __init__(self, query_name: str) -> None:\n        super().__init__(f\"invalid query: {query_name}\")\n"
  },
  {
    "path": "src/agents-api/agents_api/metrics/__init__.py",
    "content": ""
  },
  {
    "path": "src/agents-api/agents_api/metrics/counters.py",
    "content": "import inspect\nfrom collections.abc import Awaitable, Callable\nfrom functools import wraps\nfrom typing import ParamSpec, TypeVar\n\nfrom prometheus_client import Counter\n\nP = ParamSpec(\"P\")\nT = TypeVar(\"T\")\n\n\nimport time\nfrom typing import ParamSpec, TypeVar\n\nfrom prometheus_client import Histogram, Summary\nfrom prometheus_client.utils import INF\n\nP = ParamSpec(\"P\")\nT = TypeVar(\"T\")\n\n\nlabelnames = (\"developer_id\", \"query_name\")\nbuckets = (\n    0.005,\n    0.01,\n    0.025,\n    0.05,\n    0.075,\n    0.1,\n    0.25,\n    0.5,\n    0.75,\n    1.0,\n    2.5,\n    5.0,\n    7.5,\n    10.0,\n    15.0,\n    20.0,\n    25.0,\n    30.0,\n    INF,\n)\ncounter = Counter(\n    \"db_query_counter\",\n    \"Number of db calls\",\n    labelnames=labelnames,\n)\nsummary = Summary(\n    \"db_query_latency_summary\",\n    \"Database query latency summary\",\n    labelnames=labelnames,\n)\nhist = Histogram(\n    \"db_query_latency_hist\",\n    \"Database query latency histogram\",\n    labelnames=labelnames,\n    buckets=buckets,\n)\n\n\ndef query_metrics(metric_label: str, id_field_name: str = \"developer_id\"):\n    def decor(func: Callable[P, T | Awaitable[T]]):\n        if inspect.iscoroutinefunction(func):\n\n            @wraps(func)\n            async def async_wrapper(*args: P.args, **kwargs: P.kwargs) -> T:\n                fld_id = kwargs.get(id_field_name, \"not_set\")\n                counter.labels(fld_id, metric_label).inc()\n                start_time = time.time()\n                result = await func(*args, **kwargs)\n                end_time = time.time() - start_time\n                summary.labels(fld_id, metric_label).observe(end_time)\n                hist.labels(fld_id, metric_label).observe(end_time)\n                return result\n\n            return async_wrapper\n\n        @wraps(func)\n        def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:\n            fld_id = kwargs.get(id_field_name, \"not_set\")\n            counter.labels(fld_id, metric_label).inc()\n            start_time = time.time()\n            result = func(*args, **kwargs)\n            end_time = time.time() - start_time\n            summary.labels(fld_id, metric_label).observe(end_time)\n            hist.labels(fld_id, metric_label).observe(end_time)\n            return result\n\n        return wrapper\n\n    return decor\n"
  },
  {
    "path": "src/agents-api/agents_api/model_registry.py",
    "content": "\"\"\"\nModel Registry maintains a list of supported models and their configs.\n\"\"\"\n\nGPT4_MODELS: dict[str, int] = {\n    # stable model names:\n    #   resolves to gpt-4-0314 before 2023-06-27,\n    #   resolves to gpt-4-0613 after\n    \"gpt-4\": 8192,\n    \"gpt-4-32k\": 32768,\n    # turbo models (Turbo, JSON mode)\n    \"gpt-4-turbo\": 128000,\n    \"gpt-4-turbo-2024-04-09\": 128000,\n    \"gpt-4-1106-preview\": 128000,\n    \"gpt-4-0125-preview\": 128000,\n    \"gpt-4-turbo-preview\": 128000,\n    # multimodal model\n    \"gpt-4-vision-preview\": 128000,\n    # 0613 models (function calling):\n    #   https://openai.com/blog/function-calling-and-other-api-updates\n    \"gpt-4-0613\": 8192,\n    \"gpt-4-32k-0613\": 32768,\n    # 0314 models\n    \"gpt-4-0314\": 8192,\n    \"gpt-4-32k-0314\": 32768,\n}\n\nTURBO_MODELS: dict[str, int] = {\n    # stable model names:\n    #   resolves to gpt-3.5-turbo-0301 before 2023-06-27,\n    #   resolves to gpt-3.5-turbo-0613 until 2023-12-11,\n    #   resolves to gpt-3.5-turbo-1106 after\n    \"gpt-3.5-turbo\": 4096,\n    # resolves to gpt-3.5-turbo-16k-0613 until 2023-12-11\n    # resolves to gpt-3.5-turbo-1106 after\n    \"gpt-3.5-turbo-16k\": 16384,\n    # 0125 (2024) model (JSON mode)\n    \"gpt-3.5-turbo-0125\": 16385,\n    # 1106 model (JSON mode)\n    \"gpt-3.5-turbo-1106\": 16384,\n    # 0613 models (function calling):\n    #   https://openai.com/blog/function-calling-and-other-api-updates\n    \"gpt-3.5-turbo-0613\": 4096,\n    \"gpt-3.5-turbo-16k-0613\": 16384,\n    # 0301 models\n    \"gpt-3.5-turbo-0301\": 4096,\n}\n\nGPT3_5_MODELS: dict[str, int] = {\n    \"text-davinci-003\": 4097,\n    \"text-davinci-002\": 4097,\n    # instruct models\n    \"gpt-3.5-turbo-instruct\": 4096,\n}\n\nGPT3_MODELS: dict[str, int] = {\n    \"text-ada-001\": 2049,\n    \"text-babbage-001\": 2040,\n    \"text-curie-001\": 2049,\n    \"ada\": 2049,\n    \"babbage\": 2049,\n    \"curie\": 2049,\n    \"davinci\": 2049,\n}\n\n\nDISCONTINUED_MODELS: dict[str, int] = {\n    \"code-davinci-002\": 8001,\n    \"code-davinci-001\": 8001,\n    \"code-cushman-002\": 2048,\n    \"code-cushman-001\": 2048,\n}\n\nCLAUDE_MODELS: dict[str, int] = {\n    \"claude-instant-1\": 100000,\n    \"claude-instant-1.2\": 100000,\n    \"claude-2\": 100000,\n    \"claude-2.0\": 100000,\n    \"claude-2.1\": 200000,\n    \"claude-3-opus-20240229\": 180000,\n    \"claude-3-sonnet-20240229\": 180000,\n    \"claude-3-haiku-20240307\": 180000,\n}\n\nOPENAI_MODELS: dict[str, int] = {\n    **GPT4_MODELS,\n    **TURBO_MODELS,\n    **GPT3_5_MODELS,\n    **GPT3_MODELS,\n}\n\nLOCAL_MODELS: dict[str, int] = {\n    \"gpt-4o\": 32768,\n    \"gpt-4o-awq\": 32768,\n    \"TinyLlama/TinyLlama_v1.1\": 2048,\n    \"casperhansen/llama-3-8b-instruct-awq\": 8192,\n    \"julep-ai/Hermes-2-Theta-Llama-3-8B\": 8192,\n    \"OpenPipe/Hermes-2-Theta-Llama-3-8B-32k\": 32768,\n}\n\nLOCAL_MODELS_WITH_TOOL_CALLS: dict[str, int] = {\n    \"OpenPipe/Hermes-2-Theta-Llama-3-8B-32k\": 32768,\n    \"julep-ai/Hermes-2-Theta-Llama-3-8B\": 8192,\n}\n\nOLLAMA_MODELS: dict[str, int] = {\n    \"llama2\": 4096,\n}\n\nCHAT_MODELS: dict[str, int] = {**GPT4_MODELS, **TURBO_MODELS, **CLAUDE_MODELS}\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/AGENTS.md",
    "content": "# AGENTS.md - queries\n\nThis folder contains database query builders and SQL files for `agents-api`.\n\nKey Points\n- Organize queries by domain under subfolders (agents, chat, tasks, etc.).\n- Use asyncpg for execution and return typed Pydantic models.\n- Validate SQL syntax with `poe check`.\n- Add new queries in `queries/` and index them if needed.\n- Tests reside under `agents-api/tests/`.\n- Add `AIDEV-NOTE` anchors at the top of query modules to clarify module purpose.\n\n# Queries\n\n## Purpose\n- Database access layer for the application\n- SQL query execution and result processing\n- Organized by resource types matching API endpoints\n\n## Key Query Modules\n\n### projects/\n- Create, list, and check for project existence\n- Project association with resources\n\n### agents/, tasks/, sessions/, users/\n- CRUD operations for core resources\n- Data validation and normalization\n- Project association handling\n\n### secrets/\n- Secure storage and retrieval of sensitive data\n- Key-value storage with encryption\n- Access control and validation\n\n### usage/\n- Usage tracking and cost calculation\n- User activity monitoring\n- Billing and analytics data\n\n### executions/\n- Create and track task executions\n- Handle execution transitions\n- Map between Temporal workflows and API data\n\n### docs/\n- Document storage and retrieval\n- Text search (search_docs_by_text)\n- Embedding search (search_docs_by_embedding)\n- Hybrid search combining both approaches\n\n### entries/\n- Record chat history and interactions\n- Retrieve conversation history\n\n## Common Patterns\n- Async functions for database operations\n- Connection pool management\n- Data serialization/deserialization\n- Pydantic model integration\n\n## Usage Pattern\n1. Query function receives parameters and optional connection_pool\n2. SQL query construction (often with query parameters)\n3. Execute query via asyncpg\n4. Process results into Pydantic models\n5. Return typed response\n\n## Important Functions\n- `prepare_execution_input`: Builds inputs for Temporal workflows\n- `create_execution_transition`: Records state changes in executions\n- `search_docs_hybrid`: Combined embedding and text search\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/__init__.py",
    "content": "\"\"\"\nThe `queries` module of the agents API is designed to encapsulate all data interactions with the PostgreSQL database. It provides a structured way to perform CRUD (Create, Read, Update, Delete) operations and other specific data manipulations across various entities such as agents, documents, entries, sessions, tools, and users.\n\nEach sub-module within this module corresponds to a specific entity and contains functions and classes that implement SQL queries for interacting with the database. These interactions include creating new records, updating existing ones, retrieving data for specific conditions, and deleting records. The operations are crucial for the functionality of the agents API, enabling it to manage and process data effectively for each entity.\n\nThis module also integrates with the `common` module for exception handling and utility functions, ensuring robust error management and providing reusable components for data processing and query construction.\n\"\"\"\n\nfrom . import agents as agents\nfrom . import developers as developers\nfrom . import docs as docs\nfrom . import entries as entries\nfrom . import executions as executions\nfrom . import files as files\nfrom . import sessions as sessions\nfrom . import tasks as tasks\nfrom . import tools as tools\nfrom . import usage as usage\nfrom . import users as users\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/agents/__init__.py",
    "content": "\"\"\"\nThe `agent` module within the `queries` package provides a comprehensive suite of SQL query functions for managing agents in the PostgreSQL database. This includes:\n\n- Creating new agents\n- Updating existing agents\n- Retrieving details about specific agents\n- Listing agents with filtering and pagination\n- Deleting agents from the database\n\nEach function in this module constructs and returns SQL queries along with their parameters for database operations.\n\"\"\"\n\nfrom .create_agent import create_agent\nfrom .create_or_update_agent import create_or_update_agent\nfrom .delete_agent import delete_agent\nfrom .get_agent import get_agent\nfrom .list_agents import list_agents\nfrom .patch_agent import patch_agent\nfrom .update_agent import update_agent\n\n__all__ = [\n    \"create_agent\",\n    \"create_or_update_agent\",\n    \"delete_agent\",\n    \"get_agent\",\n    \"list_agents\",\n    \"patch_agent\",\n    \"update_agent\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/agents/create_agent.py",
    "content": "\"\"\"\nThis module contains the functionality for creating agents in the PostgreSQL database.\nIt includes functions to construct and execute SQL queries for inserting new agent records.\n\"\"\"\n\nfrom uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import Agent, CreateAgentRequest\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..projects.project_exists import project_exists\nfrom ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for creating the agent\nagent_query = \"\"\"\nWITH new_agent AS (\n    INSERT INTO agents (\n        developer_id,\n        agent_id,\n        canonical_name,\n        name,\n        about,\n        instructions,\n        model,\n        metadata,\n        default_settings,\n        default_system_template\n    )\n    VALUES (\n        $1,\n        $2,\n        $3,\n        $4,\n        $5,\n        $6,\n        $7,\n        $8,\n        $9,\n        $10\n    )\n    RETURNING *\n), proj AS (\n    -- Find project ID by canonical name\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $11\n), project_association AS (\n    -- Create project association if project exists\n    INSERT INTO project_agents (project_id, developer_id, agent_id)\n    SELECT p.project_id, $1, $2\n    FROM proj p\n    WHERE p.project_id IS NOT NULL\n    ON CONFLICT (project_id, agent_id) DO NOTHING\n    RETURNING 1\n)\nSELECT\n    a.*,\n    p.canonical_name AS project\nFROM new_agent a\nLEFT JOIN proj p ON TRUE;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"agent\", [\"create\"]))\n@wrap_in_class(\n    Agent,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"agent_id\"]},\n)\n@query_metrics(\"create_agent\")\n@pg_query\n@beartype\nasync def create_agent_query(\n    *,\n    developer_id: UUID,\n    agent_id: UUID | None = None,\n    data: CreateAgentRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs and executes a SQL query to create a new agent in the database.\n\n    Parameters:\n        agent_id (UUID | None): The unique identifier for the agent.\n        developer_id (UUID): The unique identifier for the developer creating the agent.\n        data (CreateAgentRequest): The data for the new agent.\n\n    Returns:\n        tuple[str, dict]: SQL query and parameters for creating the agent.\n    \"\"\"\n\n    return (\n        agent_query,\n        [\n            developer_id,\n            agent_id or uuid7(),\n            data.canonical_name or generate_canonical_name(),\n            data.name,\n            data.about,\n            data.instructions if isinstance(data.instructions, list) else [data.instructions],\n            data.model,\n            data.metadata or {},\n            data.default_settings or {},\n            data.default_system_template,\n            data.project,\n        ],\n    )\n\n\nasync def create_agent(\n    *,\n    developer_id: UUID,\n    agent_id: UUID | None = None,\n    data: CreateAgentRequest,\n    connection_pool: asyncpg.Pool | None = None,\n) -> Agent:\n    project_canonical_name = data.project or \"default\"\n    project_exists_result = await project_exists(\n        developer_id, project_canonical_name, connection_pool=connection_pool\n    )\n\n    if not project_exists_result[0][\"project_exists\"]:\n        raise HTTPException(\n            status_code=404, detail=f\"Project '{project_canonical_name}' not found\"\n        )\n\n    return await create_agent_query(\n        developer_id=developer_id,\n        agent_id=agent_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/agents/create_or_update_agent.py",
    "content": "\"\"\"\nThis module contains the functionality for creating or updating agents in the PostgreSQL database.\nIt constructs and executes SQL queries to insert a new agent or update an existing agent's details based on agent ID and developer ID.\n\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Agent, CreateOrUpdateAgentRequest\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nagent_query = \"\"\"\nWITH existing_agent AS (\n    SELECT canonical_name\n    FROM agents\n    WHERE developer_id = $1 AND agent_id = $2\n), proj AS (\n    -- Find project ID by canonical name\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $11\n),\nproject_check AS (\n    -- Check if project exists\n    SELECT EXISTS (\n        SELECT 1 FROM proj\n    ) as project_exists\n),\nupdated_agent AS (\n    INSERT INTO agents (\n        developer_id,\n        agent_id,\n        canonical_name,\n        name,\n        about,\n        instructions,\n        model,\n        metadata,\n        default_settings,\n        default_system_template\n    )\n    VALUES (\n        $1,                                          -- developer_id\n        $2,                                          -- agent_id\n        COALESCE(                                    -- canonical_name\n            (SELECT canonical_name FROM existing_agent),\n            $3\n        ),\n        $4,                                          -- name\n        $5,                                          -- about\n        $6,                                          -- instructions\n        $7,                                          -- model\n        $8,                                          -- metadata\n        $9,                                          -- default_settings\n        $10                                          -- default_system_template\n    )\n    ON CONFLICT (developer_id, agent_id) DO UPDATE SET\n        canonical_name = EXCLUDED.canonical_name,\n        name = EXCLUDED.name,\n        about = EXCLUDED.about,\n        instructions = EXCLUDED.instructions,\n        model = EXCLUDED.model,\n        metadata = EXCLUDED.metadata,\n        default_settings = EXCLUDED.default_settings,\n        default_system_template = EXCLUDED.default_system_template\n    WHERE (\n        $11 IS NULL OR\n        (SELECT project_exists FROM project_check)\n    )\n    RETURNING *\n),\nproject_association AS (\n    -- Insert or update project association if project exists\n    INSERT INTO project_agents (project_id, developer_id, agent_id)\n    SELECT\n        (SELECT project_id FROM proj),\n        $1,\n        $2\n    WHERE EXISTS (SELECT 1 FROM proj)\n    ON CONFLICT (project_id, agent_id) DO UPDATE SET\n        project_id = (SELECT project_id FROM proj)\n    RETURNING project_id\n)\nSELECT\n    a.*,\n    COALESCE(\n        (SELECT canonical_name FROM proj),\n        (SELECT p.canonical_name\n         FROM project_agents pa\n         JOIN projects p ON pa.project_id = p.project_id\n         WHERE pa.developer_id = a.developer_id AND pa.agent_id = a.agent_id)\n    ) as project\nFROM updated_agent a;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"agent\", [\"create\", \"update\"]))\n@wrap_in_class(\n    Agent,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"agent_id\"]},\n)\n@query_metrics(\"create_or_update_agent\")\n@pg_query\n@beartype\nasync def create_or_update_agent(\n    *,\n    agent_id: UUID,\n    developer_id: UUID,\n    data: CreateOrUpdateAgentRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs the SQL queries to create a new agent or update an existing agent's details.\n\n    Args:\n        agent_id (UUID): The UUID of the agent to create or update.\n        developer_id (UUID): The UUID of the developer owning the agent.\n        data (CreateOrUpdateAgentRequest): A dictionary containing agent fields to insert or update.\n\n    Returns:\n        tuple[list[str], dict]: A tuple containing the list of SQL queries and their parameters.\n    \"\"\"\n    # Get project (default if not specified)\n    project_canonical_name = (\n        data.project if hasattr(data, \"project\") and data.project else \"default\"\n    )\n\n    # Ensure instructions is a list\n    data.instructions = (\n        data.instructions if isinstance(data.instructions, list) else [data.instructions]\n    )\n\n    # Convert default_settings to dict if it exists\n    default_settings = data.default_settings or {}\n\n    # Set default values\n    data.metadata = data.metadata or {}\n    data.canonical_name = data.canonical_name or generate_canonical_name()\n\n    params = [\n        developer_id,\n        agent_id,\n        data.canonical_name,\n        data.name,\n        data.about,\n        data.instructions,\n        data.model,\n        data.metadata,\n        default_settings,\n        data.default_system_template,\n        project_canonical_name,\n    ]\n\n    return (\n        agent_query,\n        params,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/agents/delete_agent.py",
    "content": "\"\"\"\nThis module contains the functionality for deleting agents from the PostgreSQL database.\nIt constructs and executes SQL queries to remove agent records and associated data.\n\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nagent_query = \"\"\"\nWITH deleted_file_owners AS (\n    DELETE FROM file_owners\n    WHERE developer_id = $1\n    AND owner_type = 'agent'\n    AND owner_id = $2\n),\ndeleted_doc_owners AS (\n    DELETE FROM doc_owners\n    WHERE developer_id = $1\n    AND owner_type = 'agent'\n    AND owner_id = $2\n),\ndeleted_files AS (\n    DELETE FROM files\n    WHERE developer_id = $1\n    AND file_id IN (\n        SELECT file_id FROM file_owners\n        WHERE developer_id = $1\n        AND owner_type = 'agent'\n        AND owner_id = $2\n    )\n),\ndeleted_docs AS (\n    DELETE FROM docs\n    WHERE developer_id = $1\n    AND doc_id IN (\n        SELECT doc_id FROM doc_owners\n        WHERE developer_id = $1\n        AND owner_type = 'agent'\n        AND owner_id = $2\n    )\n),\ndeleted_tools AS (\n    DELETE FROM tools\n    WHERE agent_id = $2 AND developer_id = $1\n)\nDELETE FROM agents\nWHERE agent_id = $2 AND developer_id = $1\nRETURNING developer_id, agent_id;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"agent\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"agent_id\"], \"deleted_at\": utcnow()},\n)\n@pg_query\n@beartype\nasync def delete_agent(*, agent_id: UUID, developer_id: UUID) -> tuple[str, list]:\n    \"\"\"\n    Constructs the SQL query to delete an agent and its related settings.\n\n    Args:\n        agent_id (UUID): The UUID of the agent to be deleted.\n        developer_id (UUID): The UUID of the developer owning the agent.\n\n    Returns:\n        tuple[str, list]: A tuple containing the SQL query and its parameters.\n    \"\"\"\n    # Note: We swap the parameter order because the queries use $1 for developer_id and $2 for agent_id\n    params = [developer_id, agent_id]\n\n    return (\n        agent_query,\n        params,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/agents/get_agent.py",
    "content": "\"\"\"\nThis module contains the functionality for retrieving a single agent from the PostgreSQL database.\nIt constructs and executes SQL queries to fetch agent details based on agent ID and developer ID.\n\"\"\"\n\nfrom typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Agent\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nagent_query = \"\"\"\nSELECT\n    a.agent_id,\n    a.developer_id,\n    a.name,\n    a.canonical_name,\n    a.about,\n    a.instructions,\n    a.model,\n    a.metadata,\n    a.default_settings,\n    a.default_system_template,\n    a.created_at,\n    a.updated_at,\n    p.canonical_name AS project\nFROM\n    agents a\nLEFT JOIN project_agents pa ON a.agent_id = pa.agent_id AND a.developer_id = pa.developer_id\nLEFT JOIN projects p ON pa.project_id = p.project_id AND pa.developer_id = p.developer_id\nWHERE\n    a.agent_id = $2 AND a.developer_id = $1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"agent\", [\"get\"]))\n@wrap_in_class(\n    Agent,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"agent_id\"]},\n)\n@pg_query\n@beartype\nasync def get_agent(\n    *,\n    agent_id: UUID,\n    developer_id: UUID,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Constructs the SQL query to retrieve an agent's details.\n\n    Args:\n        agent_id (UUID): The UUID of the agent to retrieve.\n        developer_id (UUID): The UUID of the developer owning the agent.\n\n    Returns:\n        tuple[list[str], dict]: A tuple containing the SQL query and its parameters.\n    \"\"\"\n\n    return (\n        agent_query,\n        [developer_id, agent_id],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/agents/list_agents.py",
    "content": "\"\"\"\nThis module contains the functionality for listing agents from the PostgreSQL database.\nIt constructs and executes SQL queries to fetch a list of agents based on developer ID with pagination.\n\"\"\"\n\nfrom typing import Any, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Agent\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import (\n    pg_query,\n    rewrap_exceptions,\n    wrap_in_class,\n)\n\n# Define the raw SQL query\nraw_query = \"\"\"\nSELECT\n    a.agent_id,\n    a.developer_id,\n    a.name,\n    a.canonical_name,\n    a.about,\n    a.instructions,\n    a.model,\n    a.metadata,\n    a.default_settings,\n    a.default_system_template,\n    a.created_at,\n    a.updated_at,\n    p.canonical_name AS project\nFROM\n    agents a\nLEFT JOIN project_agents pa ON a.agent_id = pa.agent_id AND a.developer_id = pa.developer_id\nLEFT JOIN projects p ON pa.project_id = p.project_id AND pa.developer_id = p.developer_id\nWHERE\n    a.developer_id = $1 {metadata_filter_query}\nORDER BY\n    CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN a.created_at END ASC NULLS LAST,\n    CASE WHEN $4 = 'created_at' AND $5 = 'desc' THEN a.created_at END DESC NULLS LAST,\n    CASE WHEN $4 = 'updated_at' AND $5 = 'asc' THEN a.updated_at END ASC NULLS LAST,\n    CASE WHEN $4 = 'updated_at' AND $5 = 'desc' THEN a.updated_at END DESC NULLS LAST\nLIMIT $2 OFFSET $3;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"agent\", [\"list\"]))\n@wrap_in_class(\n    Agent,\n    transform=lambda d: {**d, \"id\": d[\"agent_id\"]},\n)\n@pg_query\n@beartype\nasync def list_agents(\n    *,\n    developer_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    metadata_filter: dict[str, Any] | None = None,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs query to list agents for a developer with pagination.\n\n    Args:\n        developer_id: UUID of the developer\n        limit: Maximum number of records to return\n        offset: Number of records to skip\n        sort_by: Field to sort by\n        direction: Sort direction ('asc' or 'desc')\n        metadata_filter: Optional metadata filters\n\n    Returns:\n        Tuple of (query, params)\n    \"\"\"\n\n    # AIDEV-NOTE: avoid mutable default; initialize metadata_filter\n    metadata_filter = metadata_filter if metadata_filter is not None else {}\n    # Initialize parameters\n    params = [\n        developer_id,\n        limit,\n        offset,\n        sort_by,\n        direction,\n    ]\n\n    # Handle metadata filter differently - using JSONB containment\n    agent_query = raw_query.format(\n        metadata_filter_query=\"AND a.metadata @> $6::jsonb\" if metadata_filter else \"\",\n    )\n\n    # If we have metadata filters, safely add them as a parameter\n    if metadata_filter:\n        params.append(metadata_filter)\n\n    return (\n        agent_query,\n        params,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/agents/patch_agent.py",
    "content": "\"\"\"\nThis module contains the functionality for partially updating an agent in the PostgreSQL database.\nIt constructs and executes SQL queries to update specific fields of an agent based on agent ID and developer ID.\n\"\"\"\n\nfrom uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import Agent, PatchAgentRequest\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..projects.project_exists import project_exists\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nagent_query = \"\"\"\nWITH proj AS (\n    -- Find project ID by canonical name if project is being updated\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $11\n    AND $11 IS NOT NULL\n),\nproject_exists AS (\n    -- Check if project exists when being updated\n    SELECT\n        CASE\n            WHEN $11 IS NULL THEN TRUE -- No project specified, so exists check passes\n            WHEN EXISTS (SELECT 1 FROM proj) THEN TRUE -- Project exists\n            ELSE FALSE -- Project specified but doesn't exist\n        END AS exists\n),\nupdated_agent AS (\n    UPDATE agents\n    SET\n        name = CASE\n            WHEN $3::text IS NOT NULL THEN $3\n            ELSE name\n        END,\n        about = CASE\n            WHEN $4::text IS NOT NULL THEN $4\n            ELSE about\n        END,\n        metadata = CASE\n            WHEN $5::jsonb IS NOT NULL THEN metadata || $5\n            ELSE metadata\n        END,\n        model = CASE\n            WHEN $6::text IS NOT NULL THEN $6\n            ELSE model\n        END,\n        default_settings = CASE\n            WHEN $7::jsonb IS NOT NULL THEN $7\n            ELSE default_settings\n        END,\n        default_system_template = CASE\n            WHEN $8::text IS NOT NULL THEN $8\n            ELSE default_system_template\n        END,\n        instructions = CASE\n            WHEN $9::text[] IS NOT NULL THEN $9\n            ELSE instructions\n        END,\n        canonical_name = CASE\n            WHEN $10::citext IS NOT NULL THEN $10\n            ELSE canonical_name\n        END\n    WHERE agent_id = $2 AND developer_id = $1\n    AND (SELECT exists FROM project_exists)\n    RETURNING *\n)\nSELECT\n    (SELECT exists FROM project_exists) AS project_exists,\n    a.*,\n    p.canonical_name as project\nFROM updated_agent a\nLEFT JOIN project_agents pa ON a.developer_id = pa.developer_id AND a.agent_id = pa.agent_id\nLEFT JOIN projects p ON pa.project_id = p.project_id;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"agent\", [\"patch\"]))\n@wrap_in_class(\n    Agent,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"agent_id\"]},\n)\n@query_metrics(\"patch_agent\")\n@pg_query\n@beartype\nasync def patch_agent_query(\n    *,\n    agent_id: UUID,\n    developer_id: UUID,\n    data: PatchAgentRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs the SQL query to partially update an agent's details.\n\n    Args:\n        agent_id (UUID): The UUID of the agent to update.\n        developer_id (UUID): The UUID of the developer owning the agent.\n        data (PatchAgentRequest): A dictionary of fields to update.\n\n    Returns:\n        tuple[str, list]: A tuple containing the SQL query and its parameters.\n    \"\"\"\n    params = [\n        developer_id,\n        agent_id,\n        data.name,\n        data.about,\n        data.metadata,\n        data.model,\n        data.default_settings,\n        data.default_system_template,\n        [data.instructions] if isinstance(data.instructions, str) else data.instructions,\n        data.canonical_name,\n        data.project,\n    ]\n\n    return (\n        agent_query,\n        params,\n    )\n\n\nasync def patch_agent(\n    *,\n    agent_id: UUID,\n    developer_id: UUID,\n    data: PatchAgentRequest,\n    connection_pool: asyncpg.Pool | None = None,\n) -> Agent:\n    project_canonical_name = data.project or \"default\"\n    project_exists_result = await project_exists(\n        developer_id, project_canonical_name, connection_pool=connection_pool\n    )\n\n    if not project_exists_result[0][\"project_exists\"]:\n        raise HTTPException(\n            status_code=404, detail=f\"Project '{project_canonical_name}' not found\"\n        )\n\n    return await patch_agent_query(\n        agent_id=agent_id,\n        developer_id=developer_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/agents/update_agent.py",
    "content": "\"\"\"\nThis module contains the functionality for fully updating an agent in the PostgreSQL database.\nIt constructs and executes SQL queries to replace an agent's details based on agent ID and developer ID.\n\"\"\"\n\nfrom uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import Agent, UpdateAgentRequest\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..projects.project_exists import project_exists\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nagent_query = \"\"\"\nWITH proj AS (\n    -- Find project ID by canonical name if project is provided and not NULL\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $9\n    AND $9 IS NOT NULL\n),\nproject_exists AS (\n    -- Check if the project exists when specified\n    SELECT\n        CASE\n            WHEN $9 IS NULL THEN TRUE -- No project specified, check passes\n            WHEN EXISTS (SELECT 1 FROM proj) THEN TRUE -- Project exists\n            ELSE FALSE -- Project specified but doesn't exist\n        END AS exists\n),\nupdated_agent AS (\n    UPDATE agents\n    SET\n        metadata = $3,\n        name = $4,\n        about = $5,\n        model = $6,\n        default_settings = $7::jsonb,\n        default_system_template = $8\n    WHERE agent_id = $2 AND developer_id = $1\n    AND (SELECT exists FROM project_exists)\n    RETURNING *\n)\nSELECT\n    (SELECT exists FROM project_exists) AS project_exists,\n    a.*,\n    p.canonical_name as project\nFROM updated_agent a\nLEFT JOIN project_agents pa ON a.developer_id = pa.developer_id AND a.agent_id = pa.agent_id\nLEFT JOIN projects p ON pa.project_id = p.project_id;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"agent\", [\"update\"]))\n@wrap_in_class(\n    Agent,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"agent_id\"]},\n)\n@query_metrics(\"update_agent\")\n@pg_query\n@beartype\nasync def update_agent_query(\n    *,\n    agent_id: UUID,\n    developer_id: UUID,\n    data: UpdateAgentRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs the SQL query to fully update an agent's details.\n\n    Args:\n        agent_id (UUID): The UUID of the agent to update.\n        developer_id (UUID): The UUID of the developer owning the agent.\n        data (UpdateAgentRequest): A dictionary containing all agent fields to update.\n\n    Returns:\n        tuple[str, list]: A tuple containing the SQL query and its parameters.\n    \"\"\"\n    params = [\n        developer_id,\n        agent_id,\n        data.metadata or {},\n        data.name,\n        data.about,\n        data.model,\n        data.default_settings or {},\n        data.default_system_template,\n        data.project,\n    ]\n\n    return (\n        agent_query,\n        params,\n    )\n\n\nasync def update_agent(\n    *,\n    agent_id: UUID,\n    developer_id: UUID,\n    data: UpdateAgentRequest,\n    connection_pool: asyncpg.Pool | None = None,\n) -> Agent:\n    project_canonical_name = data.project or \"default\"\n    project_exists_result = await project_exists(\n        developer_id, project_canonical_name, connection_pool=connection_pool\n    )\n\n    if not project_exists_result[0][\"project_exists\"]:\n        raise HTTPException(\n            status_code=404, detail=f\"Project '{project_canonical_name}' not found\"\n        )\n\n    return await update_agent_query(\n        agent_id=agent_id,\n        developer_id=developer_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/chat/__init__.py",
    "content": "\"\"\"\nModule: agents_api/models/docs\n\nThis module is responsible for managing document-related operations within the application, particularly for agents and possibly other entities. It serves as a core component of the document management system, enabling features such as document creation, listing, deletion, and embedding of snippets for enhanced search and retrieval capabilities.\n\nMain functionalities include:\n- Creating new documents and associating them with agents or users.\n- Listing documents based on various criteria, including ownership and metadata filters.\n- Deleting documents by their unique identifiers.\n- Embedding document snippets for retrieval purposes.\n\nThe module interacts with other parts of the application, such as the agents and users modules, to provide a comprehensive document management system. Its role is crucial in enabling document search, retrieval, and management features within the context of agents and users.\n\nThis documentation aims to provide clear, concise, and sufficient context for new developers or contributors to understand the module's role without needing to dive deep into the code immediately.\n\"\"\"\n\n# ruff: noqa: F401\n\nfrom .gather_messages import gather_messages\nfrom .prepare_chat_context import prepare_chat_context\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/chat/gather_messages.py",
    "content": "from typing import TypeVar\nfrom uuid import UUID\n\nimport numpy as np\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom pydantic import ValidationError\n\nfrom ...autogen.openapi_model import (\n    ChatInput,\n    DocReference,\n    History,\n    HybridDocSearchRequest,\n    TextOnlyDocSearchRequest,\n    VectorDocSearchRequest,\n)\nfrom ...clients import litellm\nfrom ...common.protocol.developers import Developer\nfrom ...common.protocol.sessions import ChatContext\nfrom ...common.utils.db_exceptions import common_db_exceptions, partialclass\nfrom ...common.utils.get_doc_search import get_search_fn_and_params, strip_embeddings\nfrom ...common.utils.mmr import apply_mmr_to_docs\nfrom ...env import enable_hybrid_trigram_search\nfrom ..entries.get_history import get_history\nfrom ..utils import rewrap_exceptions\n\nT = TypeVar(\"T\")\n\n\n@rewrap_exceptions({\n    ValidationError: partialclass(HTTPException, status_code=400),\n    TypeError: partialclass(HTTPException, status_code=400),\n    **common_db_exceptions(\"history\", [\"get\"]),\n})\n@beartype\nasync def gather_messages(\n    *,\n    developer: Developer,\n    session_id: UUID,\n    chat_context: ChatContext,\n    chat_input: ChatInput,\n    connection_pool=None,\n) -> tuple[list[dict], list[DocReference]]:\n    new_raw_messages = [msg.model_dump(mode=\"json\") for msg in chat_input.messages]\n    recall = chat_input.recall\n\n    assert len(new_raw_messages) > 0\n\n    # Get the session history\n    # Determine allowed sources based on recall_tools flag\n    if chat_input.recall_tools:\n        allowed_sources = [\n            \"api_request\",\n            \"api_response\",\n            \"tool_request\",\n            \"tool_response\",\n            \"summarizer\",\n        ]\n    else:\n        allowed_sources = [\"api_request\", \"api_response\"]\n\n    history: History = await get_history(\n        developer_id=developer.id,\n        session_id=session_id,\n        allowed_sources=allowed_sources,\n        connection_pool=connection_pool,\n    )\n\n    # Keep leaf nodes only\n    relations = history.relations\n    past_messages = [\n        entry.model_dump(mode=\"json\")\n        for entry in history.entries\n        if entry.id not in {r.head for r in relations}\n    ]\n\n    # Collapse the message content if content is a list of strings and only one string\n    for message in past_messages:\n        if (\n            isinstance(message[\"content\"], list)\n            and len(message[\"content\"]) == 1\n            and message[\"content\"][0].get(\"type\") == \"text\"\n        ):\n            message[\"content\"] = message[\"content\"][0][\"text\"].strip()\n\n    # If recall is disabled, return early\n    if not recall:\n        return past_messages, []\n\n    # Get recall config\n    recall_options = chat_context.session.recall_options\n\n    # If recall options is None, return early\n    if recall_options is None:\n        return past_messages, []\n\n    # Get messages to search from\n    search_messages = [\n        msg\n        for msg in (past_messages + new_raw_messages)[-(recall_options.num_search_messages) :]\n        if isinstance(msg[\"content\"], str) and msg[\"role\"] in [\"user\", \"assistant\"]\n    ]\n\n    if not search_messages:\n        return past_messages, []\n\n    # Build search text and get embedding if needed\n    embed_text = \"\\n\\n\".join(\n        f\"{msg.get('name') or msg['role']}: {msg['content']}\" for msg in search_messages\n    ).strip()\n\n    query_embedding = None\n    if recall_options.mode != \"text\":\n        [query_embedding, *_] = await litellm.aembedding(\n            inputs=embed_text[-(recall_options.max_query_length) :],\n            embed_instruction=\"Represent the query for retrieving supporting documents: \",\n            user=str(developer.id),\n        )\n\n    # Get query text from last message\n    query_text = search_messages[-1][\"content\"].strip()[: recall_options.max_query_length]\n\n    # Get owners to search docs from\n    active_agent_id = chat_context.get_active_agent().id\n    owners = [(\"user\", user.id) for user in chat_context.users]\n    owners.append((\"agent\", active_agent_id))\n\n    # Build search params based on mode\n    search_params = None\n    trigram_threshold = (\n        recall_options.trigram_similarity_threshold if enable_hybrid_trigram_search else None\n    )\n\n    if recall_options.mode == \"vector\":\n        search_params = VectorDocSearchRequest(\n            lang=recall_options.lang,\n            limit=recall_options.limit,\n            metadata_filter=recall_options.metadata_filter,\n            confidence=recall_options.confidence,\n            mmr_strength=recall_options.mmr_strength,\n            vector=query_embedding,\n            include_embeddings=recall_options.include_embeddings,\n        )\n    elif recall_options.mode == \"hybrid\":\n        # AIDEV-NOTE: Mirror PR-1584 gating so trigram search stays behind the feature flag.\n        search_params = HybridDocSearchRequest(\n            lang=recall_options.lang,\n            limit=recall_options.limit,\n            metadata_filter=recall_options.metadata_filter,\n            confidence=recall_options.confidence,\n            mmr_strength=recall_options.mmr_strength,\n            alpha=recall_options.alpha,\n            text=query_text,\n            vector=query_embedding,\n            trigram_similarity_threshold=trigram_threshold,\n            k_multiplier=recall_options.k_multiplier,\n            include_embeddings=recall_options.include_embeddings,\n        )\n    elif recall_options.mode == \"text\":\n        search_params = TextOnlyDocSearchRequest(\n            lang=recall_options.lang,\n            limit=recall_options.limit,\n            metadata_filter=recall_options.metadata_filter,\n            text=query_text,\n            trigram_similarity_threshold=trigram_threshold,\n            include_embeddings=recall_options.include_embeddings,\n        )\n    else:\n        # Invalid mode, return early\n        return past_messages, []\n\n    # Execute search (extract keywords for FTS because the query is a conversation snippet)\n    extract_keywords: bool = True\n    search_fn, params, post_processing = get_search_fn_and_params(\n        search_params, extract_keywords=extract_keywords\n    )\n\n    include_embeddings = (\n        post_processing.get(\"include_embeddings\", True) if post_processing else True\n    )\n\n    doc_references: list[DocReference] = await search_fn(\n        developer_id=developer.id,\n        owners=owners,\n        connection_pool=connection_pool,\n        **params,\n    )\n\n    if include_embeddings is False:\n        doc_references = strip_embeddings(doc_references)\n\n    # Apply MMR if enabled and applicable\n    if (\n        not isinstance(search_params, TextOnlyDocSearchRequest)\n        and len(doc_references) > recall_options.limit\n        and recall_options.mmr_strength > 0\n    ):\n        doc_references = apply_mmr_to_docs(\n            docs=doc_references,\n            query_embedding=np.asarray(query_embedding),\n            limit=recall_options.limit,\n            mmr_strength=recall_options.mmr_strength,\n        )\n\n    return past_messages, doc_references\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/chat/prepare_chat_context.py",
    "content": "from typing import Any, TypeVar\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom pydantic import ValidationError\n\nfrom ...common.protocol.sessions import ChatContext, make_session\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions, partialclass\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\nModelT = TypeVar(\"ModelT\", bound=Any)\nT = TypeVar(\"T\")\n\n\nsql_query = \"\"\"\nSELECT * FROM\n(\n    SELECT jsonb_agg(u) AS users FROM (\n        SELECT\n            session_lookup.participant_id,\n            users.user_id AS id,\n            users.developer_id,\n            users.name,\n            users.about,\n            users.created_at,\n            users.updated_at,\n            users.metadata\n        FROM session_lookup\n        INNER JOIN users ON session_lookup.participant_id = users.user_id\n        WHERE\n            session_lookup.developer_id = $1 AND\n            session_id = $2 AND\n            session_lookup.participant_type = 'user'\n    ) u\n) AS users,\n(\n    SELECT jsonb_agg(a) AS agents FROM (\n        SELECT\n            session_lookup.participant_id,\n            agents.agent_id AS id,\n            agents.developer_id,\n            agents.canonical_name,\n            agents.name,\n            agents.about,\n            agents.instructions,\n            agents.model,\n            agents.created_at,\n            agents.updated_at,\n            agents.metadata,\n            agents.default_settings,\n            agents.default_system_template\n        FROM session_lookup\n        INNER JOIN agents ON session_lookup.participant_id = agents.agent_id AND agents.developer_id = session_lookup.developer_id\n        WHERE\n            session_lookup.developer_id = $1 AND\n            session_id = $2 AND\n            session_lookup.participant_type = 'agent'\n    ) a\n) AS agents,\n(\n    SELECT to_jsonb(s) AS session FROM (\n        SELECT\n            sessions.session_id AS id,\n            sessions.developer_id,\n            sessions.situation,\n            sessions.system_template,\n            sessions.created_at,\n            sessions.updated_at,\n            sessions.metadata,\n            sessions.render_templates,\n            sessions.token_budget,\n            sessions.context_overflow,\n            sessions.forward_tool_calls,\n            sessions.recall_options\n        FROM sessions\n        WHERE\n            developer_id = $1 AND\n            session_id = $2\n        LIMIT 1\n    ) s\n) AS session,\n(\n    SELECT jsonb_agg(r) AS toolsets FROM (\n        SELECT\n            session_lookup.participant_id,\n            tools.tool_id as id,\n            tools.developer_id,\n            tools.agent_id,\n            tools.task_id,\n            tools.type,\n            tools.name,\n            tools.description,\n            tools.spec,\n            tools.updated_at,\n            tools.created_at\n        FROM session_lookup\n        INNER JOIN tools ON session_lookup.participant_id = tools.agent_id AND tools.developer_id = session_lookup.developer_id\n        WHERE\n            session_lookup.developer_id = $1 AND\n            session_id = $2 AND\n            session_lookup.participant_type = 'agent'\n    ) r\n) AS toolsets\"\"\"\n\n\ndef _transform(d):\n    toolsets = {}\n\n    # Default to empty lists when users/agents are not present\n    d[\"users\"] = d.get(\"users\") or []\n    d[\"agents\"] = d.get(\"agents\") or []\n\n    for tool in d.get(\"toolsets\") or []:\n        if not tool:\n            continue\n\n        agent_id = tool[\"agent_id\"]\n        if agent_id in toolsets:\n            toolsets[agent_id].append(tool)\n        else:\n            toolsets[agent_id] = [tool]\n\n    d[\"session\"][\"updated_at\"] = utcnow()\n    d[\"users\"] = d.get(\"users\") or []\n\n    return {\n        **d,\n        \"session\": make_session(\n            agents=[a[\"id\"] for a in d.get(\"agents\") or []],\n            users=[u[\"id\"] for u in d.get(\"users\") or []],\n            **d[\"session\"],\n        ),\n        \"toolsets\": [\n            {\n                \"agent_id\": agent_id,\n                \"tools\": [\n                    {\n                        tool[\"type\"]: tool.pop(\"spec\"),\n                        **tool,\n                    }\n                    for tool in tools\n                ],\n            }\n            for agent_id, tools in toolsets.items()\n        ],\n    }\n\n\n@rewrap_exceptions({\n    ValidationError: partialclass(HTTPException, status_code=400),\n    TypeError: partialclass(HTTPException, status_code=400),\n    **common_db_exceptions(\"chat\", [\"get\"]),\n})\n@wrap_in_class(\n    ChatContext,\n    one=True,\n    transform=_transform,\n)\n@pg_query\n@beartype\nasync def prepare_chat_context(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n) -> tuple[str, list]:\n    \"\"\"\n    Executes a complex query to retrieve memory context based on session ID.\n    \"\"\"\n\n    return (\n        sql_query,\n        [developer_id, session_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/developers/__init__.py",
    "content": "\"\"\"\nModule: agents_api/models/docs\n\nThis module is responsible for managing document-related operations within the application, particularly for agents and possibly other entities. It serves as a core component of the document management system, enabling features such as document creation, listing, deletion, and embedding of snippets for enhanced search and retrieval capabilities.\n\nMain functionalities include:\n- Creating new documents and associating them with agents or users.\n- Listing documents based on various criteria, including ownership and metadata filters.\n- Deleting documents by their unique identifiers.\n- Embedding document snippets for retrieval purposes.\n\nThe module interacts with other parts of the application, such as the agents and users modules, to provide a comprehensive document management system. Its role is crucial in enabling document search, retrieval, and management features within the context of agents and users.\n\nThis documentation aims to provide clear, concise, and sufficient context for new developers or contributors to understand the module's role without needing to dive deep into the code immediately.\n\"\"\"\n\nfrom .create_developer import create_developer\nfrom .get_developer import get_developer\nfrom .patch_developer import patch_developer\nfrom .update_developer import update_developer\n\n__all__ = [\n    \"create_developer\",\n    \"get_developer\",\n    \"patch_developer\",\n    \"update_developer\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/developers/create_developer.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom ...common.protocol.developers import Developer\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\ndeveloper_query = \"\"\"\nINSERT INTO developers (\n    developer_id,\n    email,\n    active,\n    tags,\n    settings\n)\nVALUES (\n    $1, -- developer_id\n    $2, -- email\n    $3, -- active\n    $4, -- tags\n    $5::jsonb -- settings\n)\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"developer\", [\"create\"]))\n@wrap_in_class(\n    Developer,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"developer_id\"]},\n)\n@pg_query\n@beartype\nasync def create_developer(\n    *,\n    email: str,\n    active: bool = True,\n    tags: list[str] | None = None,\n    settings: dict | None = None,\n    developer_id: UUID | None = None,\n) -> tuple[str, list]:\n    developer_id = str(developer_id or uuid7())\n\n    return (\n        developer_query,\n        [developer_id, email, active, tags or [], settings or {}],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/developers/get_developer.py",
    "content": "\"\"\"\nModule for retrieving developer information from the PostgreSQL database.\n\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.protocol.developers import Developer\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\ndeveloper_query = \"\"\"\nSELECT * FROM developers WHERE developer_id = $1 AND active = true\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"developer\", [\"get\"]))\n@wrap_in_class(\n    Developer,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"developer_id\"]},\n)\n@pg_query\n@beartype\nasync def get_developer(\n    *,\n    developer_id: UUID,\n) -> tuple[str, list]:\n    developer_id = str(developer_id)\n\n    return (\n        developer_query,\n        [developer_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/developers/patch_developer.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.protocol.developers import Developer\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\ndeveloper_query = \"\"\"\nUPDATE developers\nSET email = $1, active = $2, tags = tags || $3, settings = settings || $4 -- settings\nWHERE developer_id = $5 -- developer_id\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"developer\", [\"patch\"]))\n@wrap_in_class(Developer, one=True, transform=lambda d: {**d, \"id\": d[\"developer_id\"]})\n@pg_query\n@beartype\nasync def patch_developer(\n    *,\n    developer_id: UUID,\n    email: str,\n    active: bool = True,\n    tags: list[str] | None = None,\n    settings: dict | None = None,\n) -> tuple[str, list]:\n    developer_id = str(developer_id)\n\n    return (\n        developer_query,\n        [email, active, tags or [], settings or {}, developer_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/developers/update_developer.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.protocol.developers import Developer\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\ndeveloper_query = \"\"\"\nUPDATE developers\nSET email = $1, active = $2, tags = $3, settings = $4\nWHERE developer_id = $5\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"developer\", [\"update\"]))\n@wrap_in_class(Developer, one=True, transform=lambda d: {**d, \"id\": d[\"developer_id\"]})\n@pg_query\n@beartype\nasync def update_developer(\n    *,\n    developer_id: UUID,\n    email: str,\n    active: bool = True,\n    tags: list[str] | None = None,\n    settings: dict | None = None,\n) -> tuple[str, list]:\n    developer_id = str(developer_id)\n\n    return (\n        developer_query,\n        [email, active, tags or [], settings or {}, developer_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/__init__.py",
    "content": "\"\"\"\nModule: agents_api/models/docs\n\nThis module is responsible for managing document-related operations within the application, particularly for agents and possibly other entities. It serves as a core component of the document management system, enabling features such as document creation, listing, deletion, and embedding of snippets for enhanced search and retrieval capabilities.\n\nMain functionalities include:\n- Creating new documents and associating them with agents or users.\n- Listing documents based on various criteria, including ownership and metadata filters.\n- Deleting documents by their unique identifiers.\n- Embedding document snippets for retrieval purposes.\n- Searching documents by text.\n- Searching documents by hybrid text and embedding.\n- Searching documents by embedding.\n\nThe module interacts with other parts of the application, such as the agents and users modules, to provide a comprehensive document management system. Its role is crucial in enabling document search, retrieval, and management features within the context of agents and users.\n\nThis documentation aims to provide clear, concise, and sufficient context for new developers or contributors to understand the module's role without needing to dive deep into the code immediately.\n\"\"\"\n\nfrom .bulk_delete_docs import bulk_delete_docs\nfrom .create_doc import create_doc\nfrom .delete_doc import delete_doc\nfrom .get_doc import get_doc\nfrom .list_docs import list_docs\nfrom .search_docs_by_embedding import search_docs_by_embedding\nfrom .search_docs_by_text import search_docs_by_text\nfrom .search_docs_hybrid import search_docs_hybrid\n\n__all__ = [\n    \"bulk_delete_docs\",\n    \"create_doc\",\n    \"delete_doc\",\n    \"get_doc\",\n    \"list_docs\",\n    \"search_docs_by_embedding\",\n    \"search_docs_by_text\",\n    \"search_docs_hybrid\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/bulk_delete_docs.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import BulkDeleteDocsRequest, ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import (\n    build_metadata_filter_conditions,\n    pg_query,\n    rewrap_exceptions,\n    wrap_in_class,\n)\n\n\n@rewrap_exceptions(common_db_exceptions(\"doc\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    transform=lambda d: {\n        \"id\": d[\"doc_id\"],\n        \"deleted_at\": utcnow(),\n        \"jobs\": [],\n    },\n)\n@pg_query\n@beartype\nasync def bulk_delete_docs(\n    *,\n    developer_id: UUID,\n    owner_id: UUID,\n    owner_type: Literal[\"user\", \"agent\"],\n    data: BulkDeleteDocsRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Deletes docs and their associated doc_owners entries for the given criteria.\n    \"\"\"\n    metadata_filter = data.metadata_filter or {}\n    delete_all = getattr(data, \"delete_all\", False)\n\n    if not delete_all and not metadata_filter:\n        query = \"\"\"\n        SELECT doc_id FROM docs WHERE 1=0;\n        \"\"\"\n        return query, []\n\n    # Initialize base parameters\n    params = [developer_id, owner_type, owner_id]\n\n    # Use the utility function to safely build metadata filter conditions with table alias\n    metadata_conditions, params = build_metadata_filter_conditions(\n        params, metadata_filter if not delete_all else {}, table_alias=\"d.\"\n    )\n\n    query = f\"\"\"\n    WITH deleted_docs AS (\n        DELETE FROM docs d\n        WHERE d.developer_id = $1\n            AND EXISTS (\n                SELECT 1\n                FROM doc_owners o\n                WHERE o.doc_id = d.doc_id\n                AND o.developer_id = d.developer_id\n                AND o.owner_type = $2\n                AND o.owner_id = $3\n                {metadata_conditions}\n            )\n        RETURNING d.doc_id\n    ),\n    deleted_owners AS (\n        DELETE FROM doc_owners\n        WHERE developer_id = $1\n        AND owner_type = $2\n        AND owner_id = $3\n        AND doc_id IN (SELECT doc_id FROM deleted_docs)\n    )\n    SELECT doc_id FROM deleted_docs;\n    \"\"\"\n\n    return query, params\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/create_doc.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateDocRequest, Doc\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\nfrom .get_doc import doc_without_embedding_query\nfrom .utils import transform_doc\n\n# Base INSERT for docs\ndoc_query = \"\"\"\nINSERT INTO docs (\n    developer_id,\n    doc_id,\n    title,\n    content,\n    index,\n    modality,\n    embedding_model,\n    embedding_dimensions,\n    language,\n    metadata\n)\nVALUES (\n    $1, -- developer_id\n    $2, -- doc_id\n    $3, -- title\n    $4, -- content\n    $5, -- index\n    $6, -- modality\n    $7, -- embedding_model\n    $8, -- embedding_dimensions\n    $9, -- language\n    $10 -- metadata (JSONB)\n)\n\"\"\"\n\n# Owner association query for doc_owners\ndoc_owner_query = \"\"\"\nINSERT INTO doc_owners (developer_id, doc_id, owner_type, owner_id)\nVALUES ($1, $2, $3, $4)\nON CONFLICT DO NOTHING\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"doc\", [\"create\"]))\n@wrap_in_class(\n    Doc,\n    one=True,\n    transform=transform_doc,\n)\n@query_metrics(\"create_doc\")\n@pg_query\n@beartype\nasync def create_doc(\n    *,\n    developer_id: UUID,\n    doc_id: UUID | None = None,\n    data: CreateDocRequest,\n    owner_type: Literal[\"user\", \"agent\"],\n    owner_id: UUID,\n    modality: Literal[\"text\", \"image\", \"mixed\"] | None = \"text\",\n    embedding_model: str | None = \"text-embedding-3-large\",\n    embedding_dimensions: int | None = 1024,\n    language: str | None = \"english\",\n    index: int | None = 0,\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"\n    Insert a new doc record into Timescale and associate it with an owner.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        doc_id (UUID | None): Optional custom UUID for the document. If not provided, one will be generated.\n        data (CreateDocRequest): The data for the document.\n        owner_type (Literal[\"user\", \"agent\"]): The type of the owner (required).\n        owner_id (UUID): The ID of the owner (required).\n        modality (Literal[\"text\", \"image\", \"mixed\"]): The modality of the documents.\n        embedding_model (str): The model used for embedding.\n        embedding_dimensions (int): The dimensions of the embedding.\n        language (str): The language of the documents.\n        index (int): The index of the documents.\n\n    Returns:\n        list[tuple[str, list] | tuple[str, list, str]]: SQL query and parameters for creating the document.\n    \"\"\"\n    queries = []\n\n    # Generate a UUID if not provided\n    current_doc_id = uuid7() if doc_id is None else doc_id\n\n    # Check if content is a list\n    if isinstance(data.content, list):\n        final_params_doc = []\n        final_params_owner = []\n\n        for idx, content in enumerate(data.content):\n            # Convert Content object to string if needed\n            content_str = content.root if hasattr(content, \"root\") else content\n\n            doc_params = [\n                developer_id,\n                current_doc_id,\n                data.title,\n                content_str,  # Use the string value\n                idx,\n                modality,\n                embedding_model,\n                embedding_dimensions,\n                language,\n                data.metadata or {},\n            ]\n            final_params_doc.append(doc_params)\n\n            owner_params = [\n                developer_id,\n                current_doc_id,\n                owner_type,\n                owner_id,\n            ]\n            final_params_owner.append(owner_params)\n\n        # Add the doc query for each content\n        queries.append((doc_query, final_params_doc, \"fetchmany\"))\n\n        # Add the owner query\n        queries.append((doc_owner_query, final_params_owner, \"fetchmany\"))\n\n        # get the doc with embedding\n        queries.append((\n            doc_without_embedding_query,\n            [developer_id, current_doc_id],\n            \"fetchrow\",\n        ))\n\n    else:\n        # Convert Content object to string if needed\n        content_str = data.content.root if hasattr(data.content, \"root\") else data.content\n\n        # Create the doc record\n        doc_params = [\n            developer_id,\n            current_doc_id,\n            data.title,\n            content_str,  # Use the string value\n            index,\n            modality,\n            embedding_model,\n            embedding_dimensions,\n            language,\n            data.metadata or {},\n        ]\n\n        owner_params = [\n            developer_id,\n            current_doc_id,\n            owner_type,\n            owner_id,\n        ]\n\n        # Add the doc query for single content\n        queries.append((doc_query, doc_params, \"fetch\"))\n\n        # Add the owner query\n        queries.append((doc_owner_query, owner_params, \"fetch\"))\n\n        # get the doc with embedding\n        queries.append((\n            doc_without_embedding_query,\n            [developer_id, current_doc_id],\n            \"fetchrow\",\n        ))\n\n    return queries\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/delete_doc.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Delete doc query\ndelete_doc_query = \"\"\"\nDELETE FROM docs d\nWHERE d.developer_id = $1\n  AND d.doc_id = $2\n  AND EXISTS (\n    SELECT 1\n    FROM doc_owners o\n    WHERE o.developer_id = d.developer_id\n      AND o.doc_id = d.doc_id\n      AND o.owner_type = $3\n      AND o.owner_id = $4\n  )\nRETURNING d.doc_id;\n\"\"\"\n\ndelete_doc_owners_query = \"\"\"\nDELETE FROM doc_owners\nWHERE developer_id = $1\n    AND doc_id = $2\n    AND owner_type = $3\n    AND owner_id = $4\nRETURNING doc_id;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"doc\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {\n        \"id\": d[\"doc_id\"],\n        \"deleted_at\": utcnow(),\n        \"jobs\": [],\n    },\n)\n@pg_query\n@beartype\nasync def delete_doc(\n    *,\n    developer_id: UUID,\n    doc_id: UUID,\n    owner_type: Literal[\"user\", \"agent\"],\n    owner_id: UUID,\n) -> list[tuple[str, list]]:\n    \"\"\"\n    Deletes a doc (and associated doc_owners) for the given developer and doc_id.\n    If owner_type/owner_id is specified, only remove doc if that matches.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        doc_id (UUID): The ID of the document.\n        owner_type (Literal[\"user\", \"agent\"]): The type of the owner of the documents.\n        owner_id (UUID): The ID of the owner of the documents.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for deleting the document.\n    \"\"\"\n    return [\n        (delete_doc_query, [developer_id, doc_id, owner_type, owner_id]),\n        (delete_doc_owners_query, [developer_id, doc_id, owner_type, owner_id]),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/get_doc.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Doc\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\nfrom .utils import transform_doc\n\n# get doc with embedding\ndoc_with_embedding_query = \"\"\"\nSELECT\n    d.doc_id,\n    d.developer_id,\n    d.title,\n    array_agg(d.content ORDER BY d.index) as content,\n    array_agg(d.index ORDER BY d.index) as indices,\n    array_agg(e.embedding ORDER BY d.index) as embeddings,\n    d.modality,\n    d.embedding_model,\n    d.embedding_dimensions,\n    d.language,\n    d.metadata,\n    d.created_at\nFROM docs d\nLEFT JOIN docs_embeddings e\n    ON d.doc_id = e.doc_id\n    AND e.embedding IS NOT NULL\n    AND d.index = e.index\nWHERE d.developer_id = $1\n    AND d.doc_id = $2\nGROUP BY\n    d.doc_id,\n    d.developer_id,\n    d.title,\n    d.modality,\n    d.embedding_model,\n    d.embedding_dimensions,\n    d.language,\n    d.metadata,\n    d.created_at\nORDER BY d.created_at DESC\nLIMIT 1;\n\"\"\"\n\n# get doc without embedding\ndoc_without_embedding_query = \"\"\"\nSELECT\n    d.doc_id,\n    d.developer_id,\n    d.title,\n    array_agg(d.content ORDER BY d.index) as content,\n    array_agg(d.index ORDER BY d.index) as indices,\n    d.modality,\n    d.embedding_model,\n    d.embedding_dimensions,\n    d.language,\n    d.metadata,\n    d.created_at\nFROM docs d\nWHERE d.developer_id = $1\n    AND d.doc_id = $2\nGROUP BY\n    d.doc_id,\n    d.developer_id,\n    d.title,\n    d.modality,\n    d.embedding_model,\n    d.embedding_dimensions,\n    d.language,\n    d.metadata,\n    d.created_at\nORDER BY d.created_at DESC\nLIMIT 1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"doc\", [\"get\"]))\n@wrap_in_class(\n    Doc,\n    one=True,\n    transform=transform_doc,\n)\n@pg_query\n@beartype\nasync def get_doc(\n    *,\n    developer_id: UUID,\n    doc_id: UUID,\n    include_embeddings: bool = True,\n) -> tuple[str, list]:\n    \"\"\"\n    Fetch a single doc with or without embeddings, grouping all content chunks.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        doc_id (UUID): The ID of the document.\n        include_embeddings (bool): Whether to include embeddings in the response.\n            Defaults to True for backward compatibility.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for fetching the document.\n    \"\"\"\n    # AIDEV-NOTE: Bandwidth optimization - use doc_without_embedding_query when embeddings not needed\n    query = doc_with_embedding_query if include_embeddings else doc_without_embedding_query\n    return (\n        query,\n        [developer_id, doc_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/list_docs.py",
    "content": "\"\"\"\nThis module contains the functionality for listing documents from the PostgreSQL database.\nIt constructs and executes SQL queries to fetch document details based on various filters.\n\"\"\"\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom beartype.vale import Is\n\nfrom ...autogen.openapi_model import Doc\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import (\n    build_metadata_filter_conditions,\n    make_num_validator,\n    pg_query,\n    rewrap_exceptions,\n    wrap_in_class,\n)\nfrom .utils import transform_doc\n\n# Base query for listing docs with aggregated content and embeddings\nbase_docs_query = \"\"\"\nSELECT\n    d.doc_id,\n    d.developer_id,\n    d.title,\n    array_agg(d.content ORDER BY d.index) as content,\n    array_agg(d.index ORDER BY d.index) as indices,\n    array_agg(CASE WHEN $2 THEN e.embedding ELSE NULL END ORDER BY d.index) as embeddings,\n    d.modality,\n    d.embedding_model,\n    d.embedding_dimensions,\n    d.language,\n    d.metadata,\n    d.created_at\nFROM docs d\nJOIN doc_owners doc_own\n    ON d.developer_id = doc_own.developer_id\n    AND d.doc_id = doc_own.doc_id\nLEFT JOIN docs_embeddings e\n    ON d.doc_id = e.doc_id\n    AND d.index = e.index\nWHERE d.developer_id = $1\n    AND doc_own.owner_type = $3\n    AND doc_own.owner_id = $4\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"doc\", [\"list\"]))\n@wrap_in_class(\n    Doc,\n    one=False,\n    transform=transform_doc,\n)\n@pg_query\n@beartype\nasync def list_docs(\n    *,\n    developer_id: UUID,\n    owner_id: UUID,\n    owner_type: Literal[\"user\", \"agent\"],\n    limit: Annotated[\n        int,\n        Is[\n            make_num_validator(\n                min_value=1, max_value=100, err_msg=\"Limit must be between 1 and 100\"\n            )\n        ],\n    ] = 100,\n    offset: Annotated[\n        int, Is[make_num_validator(min_value=0, err_msg=\"Offset must be >= 0\")]\n    ] = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    metadata_filter: dict[str, Any] | None = None,\n    include_embeddings: bool = True,\n) -> tuple[str, list]:\n    \"\"\"\n    Lists docs with pagination and sorting, aggregating content chunks and embeddings.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        owner_id (UUID): The ID of the owner of the documents (required).\n        owner_type (Literal[\"user\", \"agent\"]): The type of the owner of the documents (required).\n        limit (int): The number of documents to return.\n        offset (int): The number of documents to skip.\n        sort_by (Literal[\"created_at\", \"updated_at\"]): The field to sort by.\n        direction (Literal[\"asc\", \"desc\"]): The direction to sort by.\n        metadata_filter (dict[str, Any]): The metadata filter to apply.\n        include_embeddings (bool): Whether to include embeddings in the response.\n            Defaults to True for backward compatibility.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for listing the documents.\n\n    Raises:\n        HTTPException: If invalid parameters are provided.\n    \"\"\"\n    # if direction.lower() not in [\"asc\", \"desc\"]:\n    #     raise HTTPException(status_code=400, detail=\"Invalid sort direction\")\n\n    # if sort_by not in [\"created_at\", \"updated_at\"]:\n    #     raise HTTPException(status_code=400, detail=\"Invalid sort field\")\n\n    # AIDEV-NOTE: avoid mutable default; initialize metadata_filter\n    metadata_filter = metadata_filter if metadata_filter is not None else {}\n    # Start with the base query\n    query = base_docs_query\n    # AIDEV-NOTE: Bandwidth optimization - pass include_embeddings to control embedding retrieval\n    params = [developer_id, include_embeddings, owner_type, owner_id]\n\n    # Add metadata filtering before GROUP BY using the utility function with table alias\n    metadata_conditions, params = build_metadata_filter_conditions(\n        params, metadata_filter, table_alias=\"d.\"\n    )\n    query += metadata_conditions\n\n    # Add GROUP BY clause\n    query += \"\"\"\n    GROUP BY\n        d.doc_id,\n        d.developer_id,\n        d.title,\n        d.modality,\n        d.embedding_model,\n        d.embedding_dimensions,\n        d.language,\n        d.metadata,\n        d.created_at\"\"\"\n\n    # Add sorting and pagination\n    query += (\n        f\" ORDER BY {sort_by} {direction} LIMIT ${len(params) + 1} OFFSET ${len(params) + 2}\"\n    )\n    params.extend([limit, offset])\n\n    return query, params\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/search_docs_by_embedding.py",
    "content": "from typing import Any, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import DocReference\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\nfrom .utils import transform_to_doc_reference\n\n# Raw query for vector search\nsearch_docs_by_embedding_query = \"\"\"\nSELECT * FROM search_by_vector(\n    $1, -- developer_id\n    $2::vector(1024), -- embedding\n    $3::text[], -- owner_types\n    $4::uuid[], -- owner_ids\n    $5, -- k\n    $6, -- confidence\n    $7 -- metadata_filter\n)\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"doc\", [\"search\"]))\n@wrap_in_class(\n    DocReference,\n    transform=transform_to_doc_reference,\n)\n@pg_query\n@beartype\nasync def search_docs_by_embedding(\n    *,\n    developer_id: UUID,\n    embedding: list[float],\n    k: int = 10,\n    owners: list[tuple[Literal[\"user\", \"agent\"], UUID]],\n    confidence: int | float = 0.5,\n    metadata_filter: dict[str, Any] | None = None,\n) -> tuple[str, list]:\n    \"\"\"\n    Vector-based doc search:\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        embedding (List[float]): The vector to query.\n        k (int): The number of results to return.\n        owners (list[tuple[Literal[\"user\", \"agent\"], UUID]]): List of (owner_type, owner_id) tuples.\n        confidence (float): The confidence threshold for the search.\n        metadata_filter (dict): Metadata filter criteria.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for searching the documents.\n    \"\"\"\n    # AIDEV-NOTE: avoid mutable default; initialize metadata_filter\n    metadata_filter = metadata_filter if metadata_filter is not None else {}\n    if k < 1:\n        raise HTTPException(status_code=400, detail=\"k must be >= 1\")\n\n    if not embedding:\n        raise HTTPException(status_code=400, detail=\"Empty embedding provided\")\n\n    # Convert embedding to a string\n    embedding_str = f\"[{', '.join(map(str, embedding))}]\"\n\n    # Extract owner types and IDs\n    owner_types: list[str] = [owner[0] for owner in owners]\n    owner_ids: list[str] = [str(owner[1]) for owner in owners]\n\n    return (\n        search_docs_by_embedding_query,\n        [\n            developer_id,\n            embedding_str,\n            owner_types,\n            owner_ids,\n            k,\n            confidence,\n            metadata_filter,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/search_docs_by_text.py",
    "content": "from typing import Any, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import DocReference\nfrom ...common.nlp import text_to_keywords\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...env import enable_hybrid_trigram_search\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\nfrom .utils import transform_to_doc_reference\n\n# SQL query for searching docs by text\nsearch_docs_text_query = \"\"\"\nSELECT * FROM search_by_text(\n    $1::uuid,    -- developer_id\n    $2::text,    -- query_text\n    $3::text[],  -- owner_types\n    $4::uuid[],  -- owner_ids\n    $5::text,    -- search_language\n    $6::int,     -- k\n    $7::jsonb,   -- metadata_filter\n    $8::float    -- similarity_threshold (default value)\n);\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"doc\", [\"search\"]))\n@wrap_in_class(\n    DocReference,\n    transform=transform_to_doc_reference,\n)\n@pg_query\n@beartype\nasync def search_docs_by_text(\n    *,\n    developer_id: UUID,\n    owners: list[tuple[Literal[\"user\", \"agent\"], UUID]],\n    query: str,\n    k: int = 3,\n    metadata_filter: dict[str, Any] | None = None,\n    search_language: str | None = \"english_unaccent\",\n    trigram_similarity_threshold: float | None = None,  # Set to None to disable trigram search\n    extract_keywords: bool = False,\n) -> tuple[str, list]:\n    \"\"\"\n    Full-text search on docs using the search_tsv column.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        query (str): The text to search for.\n        owners (list[tuple[Literal[\"user\", \"agent\"], UUID]]): List of (owner_type, owner_id) tuples.\n        k (int): Maximum number of results to return.\n        search_language (str): Language for text search (default: \"english\").\n        metadata_filter (dict): Metadata filter criteria.\n        trigram_similarity_threshold (float): Similarity threshold for trigram search.\n        extract_keywords (bool): Whether to extract keywords from the query.\n        connection_pool (asyncpg.Pool): Database connection pool.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for searching the documents.\n    \"\"\"\n\n    # AIDEV-NOTE: avoid mutable default; initialize metadata_filter\n    metadata_filter = metadata_filter if metadata_filter is not None else {}\n    if k < 1:\n        raise HTTPException(status_code=400, detail=\"k must be >= 1\")\n\n    # Extract owner types and IDs\n    owner_types: list[str] = [owner[0] for owner in owners]\n    owner_ids: list[UUID] = [owner[1] for owner in owners]\n\n    # Pre-process rawtext query if extract_keywords is True\n    if extract_keywords:\n        keywords = text_to_keywords(query, split_chunks=True)\n        query = \" OR \".join(keywords)\n\n    # AIDEV-NOTE: keep trigram off unless gate is enabled.\n    effective_trigram_threshold = (\n        trigram_similarity_threshold if enable_hybrid_trigram_search else None\n    )\n\n    return (\n        search_docs_text_query,\n        [\n            developer_id,\n            query,\n            owner_types,\n            owner_ids,\n            search_language,\n            k,\n            metadata_filter,\n            effective_trigram_threshold,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/search_docs_hybrid.py",
    "content": "from typing import Any, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import DocReference\nfrom ...common.nlp import text_to_keywords\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...env import enable_hybrid_trigram_search\nfrom ..utils import (\n    pg_query,\n    rewrap_exceptions,\n    wrap_in_class,\n)\nfrom .utils import transform_to_doc_reference\n\n# Raw query for hybrid search\nsearch_docs_hybrid_query = \"\"\"\nSELECT * FROM search_hybrid(\n    $1, -- developer_id\n    $2, -- text_query\n    $3::vector(1024), -- embedding\n    $4::text[], -- owner_types\n    $5::uuid[], -- owner_ids\n    $6, -- k\n    $7, -- alpha\n    $8, -- confidence\n    $9, -- metadata_filter\n    $10, -- search_language\n    $11, -- trigram_similarity_threshold\n    $12 -- k_multiplier\n)\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"doc\", [\"search\"]))\n@wrap_in_class(\n    DocReference,\n    transform=transform_to_doc_reference,\n)\n@pg_query\n@beartype\nasync def search_docs_hybrid(\n    developer_id: UUID,\n    owners: list[tuple[Literal[\"user\", \"agent\"], UUID]],\n    text_query: str = \"\",\n    embedding: list[float] | None = None,\n    k: int = 10,\n    alpha: float = 0.7,\n    metadata_filter: dict[str, Any] | None = None,\n    search_language: str = \"english_unaccent\",\n    confidence: int | float = 0.5,\n    trigram_similarity_threshold: float\n    | None = None,  # Lower threshold to catch more spelling errors\n    k_multiplier: int = 7,  # Higher multiplier to include more candidates with the enhanced fuzzy matching\n    extract_keywords: bool = False,\n) -> tuple[str, list]:\n    \"\"\"\n    Hybrid text-and-embedding doc search. We get top-K from each approach,\n    then fuse them client-side. Adjust concurrency or approach as you like.\n\n    Parameters:\n        developer_id (UUID): The unique identifier for the developer.\n        text_query (str): The text query to search for.\n        embedding (List[float]): The embedding to search for.\n        k (int): The number of results to return.\n        alpha (float): The weight for the embedding results.\n        owner_type (Literal[\"user\", \"agent\", \"org\"] | None): The type of the owner.\n        owner_id (UUID | None): The ID of the owner.\n        confidence (int | float): The confidence threshold for the embedding results.\n        trigram_similarity_threshold (float): Similarity threshold for trigram search.\n        k_multiplier (int): The multiplier to control how many intermediate results to fetch before final scoring.\n        extract_keywords (bool): Whether to extract keywords from the query.\n\n    Returns:\n        tuple[str, list]: The SQL query and parameters for the search.\n    \"\"\"\n\n    # AIDEV-NOTE: avoid mutable default; initialize metadata_filter\n    metadata_filter = metadata_filter if metadata_filter is not None else {}\n    if k < 1:\n        raise HTTPException(status_code=400, detail=\"k must be >= 1\")\n\n    if not text_query and not embedding:\n        raise HTTPException(status_code=400, detail=\"Empty query provided\")\n\n    if not embedding:\n        raise HTTPException(status_code=400, detail=\"Empty embedding provided\")\n\n    # Convert query_embedding to a string\n    embedding_str = f\"[{', '.join(map(str, embedding))}]\"\n\n    # Extract owner types and IDs\n    owner_types: list[str] = [owner[0] for owner in owners]\n    owner_ids: list[str] = [str(owner[1]) for owner in owners]\n\n    # Pre-process rawtext query if extract_keywords is True\n    if extract_keywords:\n        keywords = text_to_keywords(text_query, split_chunks=True)\n        text_query = \" OR \".join(keywords)\n\n    # AIDEV-NOTE: Disable trigram branch unless explicitly gated on.\n    effective_trigram_threshold = (\n        trigram_similarity_threshold if enable_hybrid_trigram_search else None\n    )\n\n    return (\n        search_docs_hybrid_query,\n        [\n            developer_id,\n            text_query,\n            embedding_str,\n            owner_types,\n            owner_ids,\n            k,\n            alpha,\n            confidence,\n            metadata_filter,\n            search_language,\n            effective_trigram_threshold,\n            k_multiplier,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/docs/utils.py",
    "content": "import json\n\n\ndef transform_to_doc_reference(d: dict) -> dict:\n    id = d.pop(\"doc_id\")\n    content = d.pop(\"content\")\n    index = d.pop(\"index\")\n\n    # Convert embedding array string to list of floats if present\n    if d[\"embedding\"] is not None:\n        try:\n            embedding = json.loads(d[\"embedding\"])\n        except Exception as e:\n            msg = f\"Error evaluating embeddings: {e}\"\n            raise ValueError(msg)\n\n    else:\n        embedding = None\n\n    owner = {\n        \"id\": d.pop(\"owner_id\"),\n        \"role\": d.pop(\"owner_type\"),\n    }\n    snippet = {\n        \"content\": content,\n        \"index\": index,\n        \"embedding\": embedding,\n    }\n    metadata = d.pop(\"metadata\")\n\n    return {\n        **d,\n        \"id\": id,\n        \"owner\": owner,\n        \"snippet\": snippet,\n        \"metadata\": metadata,\n    }\n\n\ndef transform_doc(d: dict) -> dict:\n    content = d[\"content\"]\n\n    embeddings = d.get(\"embeddings\") or None\n\n    if embeddings:\n        if isinstance(embeddings, str):\n            embeddings = json.loads(embeddings) if embeddings.strip() else None\n        elif isinstance(embeddings, list) and all(isinstance(e, str) for e in embeddings):\n            embeddings = [json.loads(e) for e in embeddings if e.strip()]\n\n    if embeddings and all((e is None) for e in embeddings):\n        embeddings = None\n\n    return {\n        **d,\n        \"id\": d[\"doc_id\"],\n        \"content\": content,\n        \"embeddings\": embeddings,\n    }\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/entries/__init__.py",
    "content": "\"\"\"\nThe `entry` module provides SQL query functions for managing entries\nin the TimescaleDB database. This includes operations for:\n\n- Creating new entries\n- Deleting entries\n- Retrieving entry history\n- Listing entries with filtering and pagination\n\"\"\"\n\nfrom .create_entries import add_entry_relations, create_entries\nfrom .delete_entries import delete_entries\nfrom .get_history import get_history\nfrom .list_entries import list_entries\n\n__all__ = [\n    \"add_entry_relations\",\n    \"create_entries\",\n    \"delete_entries\",\n    \"get_history\",\n    \"list_entries\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/entries/create_entries.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom litellm.utils import _select_tokenizer as select_tokenizer\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateEntryRequest, Entry, Relation\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...common.utils.messages import content_to_json\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query for checking if the session exists\nsession_exists_query = \"\"\"\nSELECT EXISTS (\n    SELECT 1 FROM sessions\n    WHERE session_id = $1 AND developer_id = $2\n) AS exists;\n\"\"\"\n\n# Define the raw SQL query for creating entries\nentry_query = \"\"\"\nINSERT INTO entries (\n    session_id,\n    entry_id,\n    source,\n    role,\n    event_type,\n    name,\n    content,\n    tool_call_id,\n    tool_calls,\n    model,\n    token_count,\n    tokenizer,\n    created_at,\n    timestamp\n) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14)\nRETURNING *;\n\"\"\"\n\n# Define the raw SQL query for creating entry relations\nentry_relation_query = \"\"\"\nINSERT INTO entry_relations (\n    session_id,\n    head,\n    relation,\n    tail\n) VALUES ($1, $2, $3, $4)\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"entry\", [\"create\"]))\n@wrap_in_class(\n    Entry,\n    transform=lambda d: {\n        **d,\n        \"id\": d.pop(\"entry_id\"),\n        \"created_at\": d.pop(\"created_at\"),\n    },\n)\n@query_metrics(\"create_entries\")\n@pg_query\n@beartype\nasync def create_entries(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n    data: list[CreateEntryRequest],\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"\n    Create entries in a session.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        session_id (UUID): The ID of the session.\n        data (list[CreateEntryRequest]): The list of entries to create.\n\n    Returns:\n        list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]: SQL query and parameters for creating the entries.\n    \"\"\"\n    # Convert the data to a list of dictionaries\n    data_dicts = [item.model_dump(mode=\"json\") for item in data]\n\n    params = [\n        [\n            session_id,  # $1\n            item.pop(\"id\", None) or uuid7(),  # $2\n            item.get(\"source\"),  # $3\n            item.get(\"role\"),  # $4\n            item.get(\"event_type\") or \"message.create\",  # $5\n            item.get(\"name\"),  # $6\n            content_to_json(item.get(\"content\") or {}),  # $7\n            item.get(\"tool_call_id\"),  # $8\n            item.get(\"tool_calls\"),  # $9\n            item.get(\"model\"),  # $10\n            item.get(\"token_count\"),  # $11\n            select_tokenizer(item.get(\"model\"))[\"type\"],  # $12\n            item.get(\"created_at\") or utcnow(),  # $13\n            utcnow(),  # $14\n        ]\n        for item in data_dicts\n    ]\n\n    return [\n        (\n            session_exists_query,\n            [session_id, developer_id],\n            \"fetchrow\",\n        ),\n        (\n            entry_query,\n            params,\n            \"fetchmany\",\n        ),\n    ]\n\n\n@rewrap_exceptions(common_db_exceptions(\"entry_relation\", [\"create\"]))\n@wrap_in_class(Relation)\n@query_metrics(\"add_entry_relations\")\n@pg_query\n@beartype\nasync def add_entry_relations(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n    data: list[Relation],\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"\n    Add relations between entries in a session.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        session_id (UUID): The ID of the session.\n        data (list[Relation]): The list of relations to add.\n\n    Returns:\n        list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]: SQL query and parameters for adding the relations.\n    \"\"\"\n    # Convert the data to a list of dictionaries\n    data_dicts = [item.model_dump(mode=\"json\") for item in data]\n\n    # Prepare the parameters for the query\n    # $1\n    # $2\n    # $3\n    # $4\n    params = [\n        [\n            session_id,  # $1\n            item.get(\"head\"),  # $2\n            item.get(\"relation\"),  # $3\n            item.get(\"tail\"),  # $4\n        ]\n        for item in data_dicts\n    ]\n\n    return [\n        (\n            session_exists_query,\n            [session_id, developer_id],\n            \"fetchrow\",\n        ),\n        (\n            entry_relation_query,\n            params,\n            \"fetchmany\",\n        ),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/entries/delete_entries.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for deleting entries with a developer check\ndelete_entry_query = \"\"\"\nDELETE FROM entries\nUSING developers\nWHERE entries.session_id = $1           -- session_id\n    AND developers.developer_id = $2    -- developer_id\n\nRETURNING entries.session_id as session_id;\n\"\"\"\n\n# Define the raw SQL query for deleting entries with a developer check\ndelete_entry_relations_query = \"\"\"\nDELETE FROM entry_relations\nWHERE entry_relations.session_id = $1 -- session_id\n\"\"\"\n\n# Define the raw SQL query for deleting entries with a developer check\ndelete_entry_relations_by_ids_query = \"\"\"\nDELETE FROM entry_relations\nWHERE entry_relations.session_id = $1       -- session_id\n    AND (entry_relations.head = ANY($2)    -- entry_ids\n    OR entry_relations.tail = ANY($2))    -- entry_ids\n\"\"\"\n\n# Define the raw SQL query for deleting entries by entry_ids with a developer check\ndelete_entry_by_ids_query = \"\"\"\nDELETE FROM entries\nUSING developers\nWHERE entries.entry_id = ANY($1)        -- entry_ids\n    AND developers.developer_id = $2    -- developer_id\n    AND entries.session_id = $3         -- session_id\n\nRETURNING entries.entry_id as entry_id;\n\"\"\"\n\n# Add a session_exists_query similar to create_entries.py\nsession_exists_query = \"\"\"\nSELECT EXISTS (\n    SELECT 1\n    FROM sessions\n    WHERE session_id = $1\n      AND developer_id = $2\n);\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"entry\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {\n        \"id\": d[\"session_id\"],\n        \"deleted_at\": utcnow(),\n        \"jobs\": [],\n    },\n)\n@query_metrics(\"delete_entries_for_session\")\n@pg_query\n@beartype\nasync def delete_entries_for_session(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"Delete all entries for a given session.\"\"\"\n    return [\n        (session_exists_query, [session_id, developer_id], \"fetchrow\"),\n        (delete_entry_relations_query, [session_id], \"fetchmany\"),\n        (delete_entry_query, [session_id, developer_id], \"fetchmany\"),\n    ]\n\n\n@rewrap_exceptions(common_db_exceptions(\"entry\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    transform=lambda d: {\n        \"id\": d[\"entry_id\"],\n        \"deleted_at\": utcnow(),\n        \"jobs\": [],\n    },\n)\n@query_metrics(\"delete_entries\")\n@pg_query\n@beartype\nasync def delete_entries(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n    entry_ids: list[UUID],\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"Delete specific entries by their IDs.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        session_id (UUID): The ID of the session.\n        entry_ids (list[UUID]): The IDs of the entries to delete.\n\n    Returns:\n        list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]: SQL query and parameters for deleting the entries.\n    \"\"\"\n    return [\n        (\n            session_exists_query,\n            [session_id, developer_id],\n            \"fetchrow\",\n        ),\n        (delete_entry_relations_by_ids_query, [session_id, entry_ids], \"fetch\"),\n        (\n            delete_entry_by_ids_query,\n            [entry_ids, developer_id, session_id],\n            \"fetch\",\n        ),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/entries/get_history.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import History\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for getting history with a developer check and relations\nhistory_query = \"\"\"\nWITH collected_entries AS (\n    SELECT\n        e.entry_id AS id,\n        e.session_id,\n        e.role,\n        e.name,\n        e.content,\n        e.source,\n        e.token_count,\n        e.created_at,\n        e.timestamp,\n        e.tool_calls,\n        e.tool_call_id,\n        e.tokenizer,\n        s.created_at AS session_created_at\n    FROM entries e\n    JOIN sessions s ON s.session_id = e.session_id\n        AND s.session_id = $1\n        AND s.developer_id = $3\n    WHERE e.source = ANY($2)\n        AND e.created_at >= s.created_at\n),\ncollected_relations AS (\n    SELECT\n        er.head,\n        er.relation,\n        er.tail\n    FROM entry_relations er\n    WHERE er.session_id = $1\n)\nSELECT\n    (SELECT json_agg(e) FROM collected_entries e) AS entries,\n    (SELECT json_agg(r) FROM collected_relations r) AS relations,\n    (SELECT session_created_at FROM collected_entries LIMIT 1) AS created_at,\n    $1::uuid AS session_id\n\"\"\"\n\n\ndef _transform(row):\n    return {\n        \"entries\": [\n            {\n                **entry,\n            }\n            for entry in (row[\"entries\"] or [])\n        ],\n        \"relations\": [\n            {\n                \"head\": r[\"head\"],\n                \"relation\": r[\"relation\"],\n                \"tail\": r[\"tail\"],\n            }\n            for r in (row[\"relations\"] or [])\n        ],\n        \"session_id\": row[\"session_id\"],\n        \"created_at\": row[\"created_at\"] or utcnow(),\n    }\n\n\n@rewrap_exceptions(common_db_exceptions(\"history\", [\"get\"]))\n@wrap_in_class(\n    History,\n    one=True,\n    transform=_transform,\n)\n@pg_query\n@beartype\nasync def get_history(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n    allowed_sources: list[str] | None = None,\n) -> tuple[str, list] | tuple[str, list, str]:\n    \"\"\"\n    Get session history.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        session_id (UUID): The ID of the session.\n        allowed_sources (list[str]): The sources to include in the history.\n\n    Returns:\n        tuple[str, list] | tuple[str, list, str]: SQL query and parameters for getting the history.\n    \"\"\"\n\n    # AIDEV-NOTE: avoid mutable default args; initialize allowed_sources\n    allowed_sources = (\n        allowed_sources if allowed_sources is not None else [\"api_request\", \"api_response\"]\n    )\n    return (\n        history_query,\n        [session_id, allowed_sources, developer_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/entries/list_entries.py",
    "content": "from datetime import timedelta\nfrom typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom beartype.vale import Is\n\nfrom ...autogen.openapi_model import Entry\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import make_num_validator, pg_query, rewrap_exceptions, wrap_in_class\n\n# Query for checking if the session exists\nsession_exists_query = \"\"\"\nSELECT EXISTS (\n    SELECT 1 FROM sessions\n    WHERE session_id = $1 AND developer_id = $2\n) AS exists;\n\"\"\"\n\nlist_entries_query = \"\"\"\nSELECT\n    e.entry_id as id,\n    e.session_id,\n    e.role,\n    e.name,\n    e.content,\n    e.source,\n    e.token_count,\n    e.created_at,\n    e.timestamp,\n    e.event_type,\n    e.tool_call_id,\n    e.tool_calls,\n    e.model,\n    e.tokenizer\nFROM entries e\n    JOIN developers d ON d.developer_id = $5\n    LEFT JOIN entry_relations er ON er.head = e.entry_id AND er.session_id = e.session_id\nWHERE e.session_id = $1\n    AND e.source = ANY($2)\n    AND (er.relation IS NULL OR er.relation != ALL($6))\n    AND e.created_at >= $7\n    AND e.created_at >= (select created_at from sessions where session_id = $1 LIMIT 1)\nORDER BY e.{sort_by} {direction} -- safe to interpolate\nLIMIT $3\nOFFSET $4;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"entry\", [\"list\"]))\n@wrap_in_class(Entry)\n@query_metrics(\"list_entries\")\n@pg_query\n@beartype\nasync def list_entries(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n    allowed_sources: list[str] | None = None,\n    limit: Annotated[\n        int,\n        Is[\n            make_num_validator(\n                min_value=1, max_value=1000, err_msg=\"Limit must be between 1 and 1000\"\n            )\n        ],\n    ] = 100,\n    offset: Annotated[\n        int, Is[make_num_validator(min_value=0, err_msg=\"Offset must be >= 0\")]\n    ] = 0,\n    sort_by: Literal[\"created_at\", \"timestamp\"] = \"timestamp\",\n    direction: Literal[\"asc\", \"desc\"] = \"asc\",\n    exclude_relations: list[str] | None = None,\n    search_window: timedelta = timedelta(weeks=4),\n) -> list[tuple[str, list] | tuple[str, list, str]]:\n    \"\"\"List entries in a session.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        session_id (UUID): The ID of the session.\n        allowed_sources (list[str]): The sources to include in the history.\n        limit (int): The number of entries to return.\n        offset (int): The number of entries to skip.\n        sort_by (Literal[\"created_at\", \"timestamp\"]): The field to sort by.\n        direction (Literal[\"asc\", \"desc\"]): The direction to sort by.\n        exclude_relations (list[str]): The relations to exclude.\n\n    Returns:\n        tuple[str, list] | tuple[str, list, str]: SQL query and parameters for listing the entries.\n    \"\"\"\n\n    # AIDEV-NOTE: avoid mutable default args; initialize lists\n    allowed_sources = (\n        allowed_sources if allowed_sources is not None else [\"api_request\", \"api_response\"]\n    )\n    exclude_relations = exclude_relations if exclude_relations is not None else []\n    query = list_entries_query.format(\n        sort_by=sort_by,\n        direction=direction,\n    )\n\n    # Parameters for the entry query\n    entry_params = [\n        session_id,  # $1\n        allowed_sources,  # $2\n        limit,  # $3\n        offset,  # $4\n        developer_id,  # $5\n        exclude_relations,  # $6\n        utcnow() - search_window,  # 7\n    ]\n\n    return [\n        (\n            session_exists_query,\n            [session_id, developer_id],\n            \"fetchrow\",\n        ),\n        (\n            query,\n            entry_params,\n            \"fetch\",\n        ),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/__init__.py",
    "content": "\"\"\"\nThe `execution` module provides SQL query functions for managing executions\nin the TimescaleDB database. This includes operations for:\n\n- Creating new executions\n- Deleting executions\n- Retrieving execution history\n- Listing executions with filtering and pagination\n\"\"\"\n\nfrom .count_executions import count_executions\nfrom .create_execution import create_execution\nfrom .create_execution_transition import create_execution_transition\nfrom .get_execution import get_execution\nfrom .get_execution_transition import get_execution_transition\nfrom .list_execution_inputs_data import list_execution_inputs_data\nfrom .list_execution_state_data import list_execution_state_data\nfrom .list_execution_transitions import list_execution_transitions\nfrom .list_executions import list_executions\nfrom .lookup_temporal_data import lookup_temporal_data\nfrom .prepare_execution_input import prepare_execution_input\n\n__all__ = [\n    \"count_executions\",\n    \"create_execution\",\n    \"create_execution_transition\",\n    \"get_execution\",\n    \"get_execution_transition\",\n    \"list_execution_inputs_data\",\n    \"list_execution_state_data\",\n    \"list_execution_transitions\",\n    \"list_executions\",\n    \"lookup_temporal_data\",\n    \"prepare_execution_input\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/constants.py",
    "content": "##########\n# Consts #\n##########\n\nOUTPUT_UNNEST_KEY = \"$$e7w_unnest$$\"\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/count_executions.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to count executions for a given task\nexecution_count_query = \"\"\"\nSELECT COUNT(*) FROM latest_executions\nWHERE\n    developer_id = $1\n    AND created_at >= (select created_at from developers where developer_id = $1 LIMIT 1)\n    AND task_id = $2;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"execution\", [\"count\"]))\n@wrap_in_class(dict, one=True)\n@pg_query\n@beartype\nasync def count_executions(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Count the number of executions for a given task.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        task_id (UUID): The ID of the task.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query and parameters for counting executions.\n    \"\"\"\n    return (\n        execution_count_query,\n        [developer_id, task_id],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/create_execution.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateExecutionRequest, Execution\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...common.utils.types import dict_like\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\nfrom .constants import OUTPUT_UNNEST_KEY\n\ncreate_execution_query = \"\"\"\nINSERT INTO executions\n(\n    developer_id,\n    task_id,\n    execution_id,\n    input,\n    metadata,\n    task_version\n)\nVALUES\n(\n    $1,\n    $2,\n    $3,\n    $4,\n    $5,\n    1\n)\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"execution\", [\"create\"]))\n@wrap_in_class(\n    Execution,\n    one=True,\n    transform=lambda d: {\n        \"id\": d[\"execution_id\"],\n        \"status\": \"queued\",\n        \"updated_at\": utcnow(),\n        **d,\n    },\n)\n@query_metrics(\"create_execution\")\n@pg_query\n@beartype\nasync def create_execution(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n    execution_id: UUID | None = None,\n    data: Annotated[CreateExecutionRequest | dict, dict_like(CreateExecutionRequest)],\n) -> tuple[str, list]:\n    \"\"\"\n    Create a new execution.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        task_id (UUID): The ID of the task.\n        execution_id (UUID | None): The ID of the execution.\n        data (CreateExecutionRequest | dict): The data for the execution.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for creating the execution.\n    \"\"\"\n    execution_id = execution_id or uuid7()\n\n    developer_id = str(developer_id)\n    task_id = str(task_id)\n    execution_id = str(execution_id)\n\n    if isinstance(data, CreateExecutionRequest):\n        data.metadata = data.metadata or {}\n        execution_data = data.model_dump()\n    else:\n        data[\"metadata\"] = data.get(\"metadata\", {})\n        execution_data = data\n\n    if execution_data[\"output\"] is not None and not isinstance(execution_data[\"output\"], dict):\n        execution_data[\"output\"] = {OUTPUT_UNNEST_KEY: execution_data[\"output\"]}\n\n    return (\n        create_execution_query,\n        [\n            developer_id,\n            task_id,\n            execution_id,\n            execution_data[\"input\"],\n            execution_data[\"metadata\"],\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/create_execution_transition.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import (\n    CreateTransitionRequest,\n    Transition,\n)\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, serialize_model_data, wrap_in_class\n\n# Query to create a transition\ncreate_execution_transition_query = \"\"\"\nINSERT INTO transitions\n(\n    execution_id,\n    transition_id,\n    type,\n    step_label,\n    current_step,\n    next_step,\n    output,\n    task_token,\n    metadata\n)\nVALUES\n(\n    $1,\n    $2,\n    $3,\n    $4,\n    $5,\n    $6,\n    $7,\n    $8,\n    $9\n)\nRETURNING *;\n\"\"\"\n\n\n# FIXME: Remove this function\ndef validate_transition_targets(data: CreateTransitionRequest) -> None:\n    # Make sure the current/next targets are valid\n    match data.type:\n        case \"finish_branch\" | \"finish\":\n            assert data.next is None, \"Next target must be None for finish/finish_branch\"\n\n            # FIXME: HACK: Fix this and uncomment\n            # The above assertion is now implemented and uncommented\n\n        case \"error\" | \"cancelled\":\n            # TODO: Implement this\n            pass\n\n        case \"init_branch\" | \"init\":\n            assert data.next and data.current.step == data.next.step == 0, (\n                \"Next target must be same as current for init_branch/init and step 0\"\n            )\n\n        case \"wait\":\n            assert data.next is None, \"Next target must be None for wait\"\n\n        case \"resume\" | \"step\":\n            assert data.next is not None, \"Next target must be provided for resume/step\"\n\n            if data.next.scope_id == data.current.scope_id:\n                assert data.next.step > data.current.step, (\n                    \"Next step must be greater than current\"\n                )\n\n        case _:\n            msg = f\"Invalid transition type: {data.type}\"\n            raise ValueError(msg)\n\n\n@rewrap_exceptions(common_db_exceptions(\"transition\", [\"create\"]))\n@wrap_in_class(\n    Transition,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"transition_id\"],\n        \"current\": {\n            \"workflow\": d[\"current_step\"][0],\n            \"step\": d[\"current_step\"][1],\n            \"scope_id\": d[\"current_step\"][2],\n        },\n        \"next\": d[\"next_step\"]\n        and {\n            \"workflow\": d[\"next_step\"][0],\n            \"step\": d[\"next_step\"][1],\n            \"scope_id\": d[\"next_step\"][2],\n        },\n        \"updated_at\": utcnow(),\n    },\n    one=True,\n)\n@query_metrics(\"create_execution_transition\")\n@pg_query\n@beartype\nasync def create_execution_transition(\n    *,\n    developer_id: UUID,\n    execution_id: UUID,\n    data: CreateTransitionRequest,\n    # Only one of these needed\n    transition_id: UUID | None = None,\n    task_token: str | None = None,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Create a new execution transition.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        execution_id (UUID): The ID of the execution.\n        data (CreateTransitionRequest): The data for the transition.\n        transition_id (UUID | None): The ID of the transition.\n        task_token (str | None): The task token.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query and parameters for creating the transition.\n    \"\"\"\n    transition_id = transition_id or uuid7()\n    data.metadata = data.metadata or {}\n    data.execution_id = execution_id\n\n    # Dump to json\n    data.output = serialize_model_data(data.output)\n\n    # Prepare the transition data\n    transition_data = data.model_dump(exclude_unset=True, exclude={\"id\"})\n\n    # Parse the current and next targets\n    validate_transition_targets(data)\n    current_target = transition_data.pop(\"current\")\n    next_target = transition_data.pop(\"next\")\n\n    transition_data[\"current\"] = (\n        current_target[\"workflow\"],\n        current_target[\"step\"],\n        current_target.get(\"scope_id\"),\n    )\n    transition_data[\"next\"] = next_target and (\n        next_target[\"workflow\"],\n        next_target[\"step\"],\n        next_target.get(\"scope_id\"),\n    )\n\n    return (\n        create_execution_transition_query,\n        [\n            execution_id,\n            transition_id,\n            data.type,\n            transition_data.get(\"step_label\"),\n            transition_data[\"current\"],\n            transition_data[\"next\"],\n            data.output,\n            task_token,\n            data.metadata,\n        ],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/create_temporal_lookup.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\nfrom temporalio.client import WorkflowHandle\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions\n\n# Query to create a temporal lookup\ncreate_temporal_lookup_query = \"\"\"\nINSERT INTO temporal_executions_lookup\n(\n    execution_id,\n    id,\n    run_id,\n    first_execution_run_id,\n    result_run_id\n)\nVALUES\n(\n    $1,\n    $2,\n    $3,\n    $4,\n    $5\n)\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"temporal_execution\", [\"create\"]))\n@query_metrics(\"create_temporal_lookup\")\n@pg_query\n@beartype\nasync def create_temporal_lookup(\n    *,\n    execution_id: UUID,\n    workflow_handle: WorkflowHandle,\n) -> tuple[str, list]:\n    \"\"\"\n    Create a temporal lookup for a given execution.\n\n    Parameters:\n        execution_id (UUID): The ID of the execution.\n        workflow_handle (WorkflowHandle): The workflow handle.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for creating the temporal lookup.\n    \"\"\"\n    execution_id = str(execution_id)\n\n    return (\n        create_temporal_lookup_query,\n        [\n            execution_id,\n            workflow_handle.id,\n            workflow_handle.run_id,\n            workflow_handle.first_execution_run_id,\n            workflow_handle.result_run_id,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/get_execution.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Execution\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\nfrom .constants import OUTPUT_UNNEST_KEY\n\n# Query to get an execution using the latest_executions view\nget_execution_query = \"\"\"\nSELECT\n    developer_id,\n    task_id,\n    task_version,\n    execution_id,\n    input,\n    metadata,\n    created_at,\n    updated_at,\n    status,\n    error,\n    transition_count,\n    output,\n    current_step,\n    next_step,\n    step_label,\n    task_token,\n    transition_metadata\nFROM\n    latest_executions\nWHERE\n    execution_id = $1\nORDER BY updated_at DESC\nLIMIT 1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"execution\", [\"get\"]))\n@wrap_in_class(\n    Execution,\n    one=True,\n    transform=lambda d: {\n        \"id\": d.pop(\"execution_id\"),\n        **d,\n        \"output\": d[\"output\"][OUTPUT_UNNEST_KEY]\n        if isinstance(d[\"output\"], dict) and OUTPUT_UNNEST_KEY in d[\"output\"]\n        else d[\"output\"],\n    },\n)\n@pg_query\n@beartype\nasync def get_execution(\n    *,\n    execution_id: UUID,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Get an execution by its ID.\n\n    Parameters:\n        execution_id (UUID): The ID of the execution.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query and parameters for getting the execution.\n    \"\"\"\n    return (\n        get_execution_query,\n        [execution_id],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/get_execution_status.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ExecutionStatusEvent\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to get execution status, updated timestamp, and error for a specific execution_id\nget_execution_status_query = \"\"\"\nSELECT\n    execution_id,\n    status,\n    updated_at,\n    error,\n    transition_count,\n    metadata\nFROM\n    latest_executions\nWHERE\n    developer_id = $1 AND\n    execution_id = $2\nORDER BY\n    updated_at DESC\nLIMIT 1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"execution\", [\"get_status\"]))\n@wrap_in_class(ExecutionStatusEvent, one=True)\n@pg_query\n@beartype\nasync def get_execution_status(\n    *,\n    developer_id: UUID,\n    execution_id: UUID,\n) -> tuple[str, list, Literal[\"fetchrow\"]]:\n    \"\"\"\n    Get the current status, updated_at, and error for the given execution_id.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        execution_id (UUID): The ID of the execution.\n\n    Returns:\n        tuple[str, list, Literal[\"fetchrow\"]]: SQL query and parameters for fetching execution status.\n    \"\"\"\n    return (\n        get_execution_status_query,\n        [developer_id, execution_id],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/get_execution_transition.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Transition\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to get an execution transition\nget_execution_transition_query = \"\"\"\nSELECT * FROM transitions\nWHERE\n    transition_id = $1\n    OR task_token = $2\nLIMIT 1;\n\"\"\"\n\n\ndef _transform(d):\n    current_step = d.pop(\"current_step\")\n    next_step = d.pop(\"next_step\", None)\n\n    return {\n        \"current\": {\n            \"workflow\": current_step[0],\n            \"step\": current_step[1],\n            \"scope_id\": current_step[2],\n        },\n        \"next\": {\n            \"workflow\": next_step[0],\n            \"step\": next_step[1],\n            \"scope_id\": next_step[2],\n        }\n        if next_step is not None\n        else None,\n        **d,\n    }\n\n\n@rewrap_exceptions(common_db_exceptions(\"transition\", [\"get\"]))\n@wrap_in_class(Transition, one=True, transform=_transform)\n@pg_query\n@beartype\nasync def get_execution_transition(\n    *,\n    transition_id: UUID | None = None,\n    task_token: str | None = None,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Get an execution transition by its ID or task token.\n\n    Parameters:\n        transition_id (UUID | None): The ID of the transition.\n        task_token (str | None): The task token.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query and parameters for getting the execution transition.\n    \"\"\"\n    # At least one of `transition_id` or `task_token` must be provided\n    assert transition_id or task_token, (\n        \"At least one of `transition_id` or `task_token` must be provided.\"\n    )\n\n    return (\n        get_execution_transition_query,\n        [\n            transition_id,\n            task_token,\n        ],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/get_paused_execution_token.py",
    "content": "from datetime import timedelta\nfrom typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to get a paused execution token using latest_transitions\nget_paused_execution_token_query = \"\"\"\nSELECT\n    execution_id,\n    transition_id,\n    type,\n    created_at,\n    step_label,\n    current_step,\n    next_step,\n    output,\n    task_token,\n    metadata\nFROM latest_transitions\nWHERE\n    execution_id = $1\n    AND created_at >= $2\n    AND created_at >= (select created_at from executions where execution_id = $1 LIMIT 1)\n    AND type = 'wait';\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"execution\", [\"get_paused_execution_token\"]))\n@wrap_in_class(dict, one=True)\n@pg_query\n@beartype\nasync def get_paused_execution_token(\n    *,\n    execution_id: UUID,\n    search_window: timedelta = timedelta(weeks=4),\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Get a paused execution token for a given execution.\n\n    Parameters:\n        execution_id (UUID): The ID of the execution.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query and parameters for getting a paused execution token.\n    \"\"\"\n    execution_id = str(execution_id)\n\n    return (\n        get_paused_execution_token_query,\n        [execution_id, utcnow() - search_window],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/get_temporal_workflow_data.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to get temporal workflow data\nget_temporal_workflow_data_query = \"\"\"\nSELECT id, run_id, result_run_id, first_execution_run_id FROM temporal_executions_lookup\nWHERE\n    execution_id = $1\nLIMIT 1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"temporal_execution\", [\"get\"]))\n@wrap_in_class(dict, one=True)\n@pg_query\n@beartype\nasync def get_temporal_workflow_data(\n    *,\n    execution_id: UUID,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Get temporal workflow data for a given execution.\n\n    Parameters:\n        execution_id (UUID): The ID of the execution.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query and parameters for getting temporal workflow data.\n    \"\"\"\n    # Executions are allowed direct GET access if they have execution_id\n    execution_id = str(execution_id)\n\n    return (\n        get_temporal_workflow_data_query,\n        [\n            execution_id,\n        ],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/list_execution_inputs_data.py",
    "content": "from datetime import timedelta\nfrom typing import Literal\nfrom uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import Transition\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions, partialclass\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to list execution input data\nlist_execution_inputs_query = \"\"\"\nSELECT * FROM transitions\nWHERE\n    execution_id = $1\n    AND next_step IS NOT NULL\n    AND (current_step).scope_id = $7\n    AND (next_step).scope_id = $7\n    AND (current_step).workflow_name NOT SIMILAR TO '%\\\\[[0-9]+\\\\]%'\n    AND created_at >= $6\n    AND created_at >= (select created_at from executions where execution_id = $1 LIMIT 1)\nORDER BY\n    CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN created_at END ASC NULLS LAST,\n    CASE WHEN $4 = 'created_at' AND $5 = 'desc' THEN created_at END DESC NULLS LAST\nLIMIT $2 OFFSET $3;\n\"\"\"\n\n# next is not null\n# current.scope = next.scope\n# (current_step).workflow NOT SIMILAR TO '%\\\\[[0-9]+\\\\]%'\n\n\ndef _transform(d):\n    current_step = d.pop(\"current_step\")\n    next_step = d.pop(\"next_step\", None)\n\n    return {\n        \"id\": d[\"transition_id\"],\n        \"updated_at\": utcnow(),\n        \"current\": {\n            \"workflow\": current_step[0],\n            \"step\": current_step[1],\n            \"scope_id\": current_step[2],\n        },\n        \"next\": {\n            \"workflow\": next_step[0],\n            \"step\": next_step[1],\n            \"scope_id\": next_step[2],\n        }\n        if next_step is not None\n        else None,\n        \"step_label\": d[\"step_label\"],\n        **d,\n    }\n\n\n@rewrap_exceptions({\n    asyncpg.InvalidRowCountInLimitClauseError: partialclass(\n        HTTPException,\n        status_code=400,\n        detail=\"Invalid limit clause\",\n    ),\n    asyncpg.InvalidRowCountInResultOffsetClauseError: partialclass(\n        HTTPException,\n        status_code=400,\n        detail=\"Invalid offset clause\",\n    ),\n    **common_db_exceptions(\"transition\", [\"list\"]),\n})\n@wrap_in_class(\n    Transition,\n    transform=_transform,\n)\n@pg_query\n@beartype\nasync def list_execution_inputs_data(\n    *,\n    execution_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    scope_id: UUID,\n    search_window: timedelta = timedelta(weeks=2),\n) -> tuple[str, list]:\n    \"\"\"\n    List execution transitions for a given execution.\n\n    Parameters:\n        execution_id (UUID): The ID of the execution.\n        limit (int): The number of transitions to return.\n        offset (int): The number of transitions to skip.\n        sort_by (Literal[\"created_at\"]): The field to sort by.\n        direction (Literal[\"asc\", \"desc\"]): The direction to sort by.\n        scope_id (UUID | None): Filter transitions by scope_id in current_step.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for listing execution transitions.\n    \"\"\"\n\n    params = [\n        str(execution_id),\n        limit,\n        offset,\n        sort_by,\n        direction,\n        utcnow() - search_window,\n        str(scope_id),\n    ]\n\n    return (list_execution_inputs_query, params)\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/list_execution_state_data.py",
    "content": "from datetime import timedelta\nfrom typing import Literal\nfrom uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import Transition\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions, partialclass\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to list execution transitions\nlist_execution_state_query = \"\"\"\nSELECT * FROM transitions\nWHERE\n    execution_id = $1\n    AND (current_step).scope_id = $7\n    AND metadata->>'step_type' = 'SetStep'\n    AND created_at >= $6\n    AND created_at >= (select created_at from executions where execution_id = $1 LIMIT 1)\nORDER BY\n    CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN created_at END ASC NULLS LAST,\n    CASE WHEN $4 = 'created_at' AND $5 = 'desc' THEN created_at END DESC NULLS LAST\nLIMIT $2 OFFSET $3;\n\"\"\"\n\n# next is not null\n# current.scope = next.scope\n# (current_step).workflow NOT SIMILAR TO '%\\\\[[0-9]+\\\\]%'\n\n\ndef _transform(d):\n    current_step = d.pop(\"current_step\")\n    next_step = d.pop(\"next_step\", None)\n\n    return {\n        \"id\": d[\"transition_id\"],\n        \"updated_at\": utcnow(),\n        \"current\": {\n            \"workflow\": current_step[0],\n            \"step\": current_step[1],\n            \"scope_id\": current_step[2],\n        },\n        \"next\": {\n            \"workflow\": next_step[0],\n            \"step\": next_step[1],\n            \"scope_id\": next_step[2],\n        }\n        if next_step is not None\n        else None,\n        \"step_label\": d[\"step_label\"],\n        **d,\n    }\n\n\n@rewrap_exceptions({\n    asyncpg.InvalidRowCountInLimitClauseError: partialclass(\n        HTTPException,\n        status_code=400,\n        detail=\"Invalid limit clause\",\n    ),\n    asyncpg.InvalidRowCountInResultOffsetClauseError: partialclass(\n        HTTPException,\n        status_code=400,\n        detail=\"Invalid offset clause\",\n    ),\n    **common_db_exceptions(\"transition\", [\"list\"]),\n})\n@wrap_in_class(\n    Transition,\n    transform=_transform,\n)\n@pg_query\n@beartype\nasync def list_execution_state_data(\n    *,\n    execution_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    scope_id: UUID,\n    search_window: timedelta = timedelta(weeks=2),\n) -> tuple[str, list]:\n    \"\"\"\n    List execution transitions for a given execution.\n\n    Parameters:\n        execution_id (UUID): The ID of the execution.\n        limit (int): The number of transitions to return.\n        offset (int): The number of transitions to skip.\n        sort_by (Literal[\"created_at\"]): The field to sort by.\n        direction (Literal[\"asc\", \"desc\"]): The direction to sort by.\n        scope_id (UUID | None): Filter transitions by scope_id in current_step.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for listing execution transitions.\n    \"\"\"\n\n    params = [\n        str(execution_id),\n        limit,\n        offset,\n        sort_by,\n        direction,\n        utcnow() - search_window,\n        str(scope_id),\n    ]\n\n    return (list_execution_state_query, params)\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/list_execution_transitions.py",
    "content": "from datetime import timedelta\nfrom typing import Literal\nfrom uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import Transition\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions, partialclass\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to list execution transitions\nlist_execution_transitions_query = \"\"\"\nSELECT * FROM transitions\nWHERE\n    execution_id = $1\n    AND (current_step).scope_id = $7\n    AND created_at >= $6\n    AND created_at >= (select created_at from executions where execution_id = $1 LIMIT 1)\nORDER BY\n    CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN created_at END ASC NULLS LAST,\n    CASE WHEN $4 = 'created_at' AND $5 = 'desc' THEN created_at END DESC NULLS LAST\nLIMIT $2 OFFSET $3;\n\"\"\"\n#  Query to get a single transition\nget_execution_transition_query = \"\"\"\nSELECT * FROM transitions\nWHERE\n    execution_id = $1\n    AND transition_id = $2;\n\"\"\"\n\n\ndef _transform(d):\n    current_step = d.pop(\"current_step\")\n    next_step = d.pop(\"next_step\", None)\n\n    return {\n        \"id\": d[\"transition_id\"],\n        \"updated_at\": utcnow(),\n        \"current\": {\n            \"workflow\": current_step[0],\n            \"step\": current_step[1],\n            \"scope_id\": current_step[2],\n        },\n        \"next\": {\n            \"workflow\": next_step[0],\n            \"step\": next_step[1],\n            \"scope_id\": next_step[2],\n        }\n        if next_step is not None\n        else None,\n        \"step_label\": d[\"step_label\"],\n        **d,\n    }\n\n\n@rewrap_exceptions({\n    asyncpg.InvalidRowCountInLimitClauseError: partialclass(\n        HTTPException,\n        status_code=400,\n        detail=\"Invalid limit clause\",\n    ),\n    asyncpg.InvalidRowCountInResultOffsetClauseError: partialclass(\n        HTTPException,\n        status_code=400,\n        detail=\"Invalid offset clause\",\n    ),\n    **common_db_exceptions(\"transition\", [\"list\"]),\n})\n@wrap_in_class(\n    Transition,\n    transform=_transform,\n)\n@pg_query\n@beartype\nasync def list_execution_transitions(\n    *,\n    execution_id: UUID,\n    transition_id: UUID | None = None,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    scope_id: UUID | None = None,\n    search_window: timedelta = timedelta(days=3650),\n) -> tuple[str, list]:\n    \"\"\"\n    List execution transitions for a given execution.\n\n    Parameters:\n        execution_id (UUID): The ID of the execution.\n        limit (int): The number of transitions to return.\n        offset (int): The number of transitions to skip.\n        sort_by (Literal[\"created_at\"]): The field to sort by.\n        direction (Literal[\"asc\", \"desc\"]): The direction to sort by.\n        scope_id (UUID | None): Filter transitions by scope_id in current_step.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for listing execution transitions.\n    \"\"\"\n    if transition_id is not None:\n        return (\n            get_execution_transition_query,\n            [\n                str(execution_id),\n                str(transition_id),\n            ],\n        )\n\n    params = [\n        str(execution_id),\n        limit,\n        offset,\n        sort_by,\n        direction,\n        utcnow() - search_window,\n    ]\n\n    query = list_execution_transitions_query\n    if scope_id is None:\n        query = query.replace(\"AND (current_step).scope_id = $7\", \"\")\n    else:\n        params.append(str(scope_id))\n\n    return (query, params)\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/list_executions.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom beartype.vale import Is\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import Execution\nfrom ...common.utils.db_exceptions import common_db_exceptions, partialclass\nfrom ..utils import make_num_validator, pg_query, rewrap_exceptions, wrap_in_class\nfrom .constants import OUTPUT_UNNEST_KEY\n\n# Query to list executions using the latest_executions view\nlist_executions_query = \"\"\"\nSELECT\n    developer_id,\n    task_id,\n    task_version,\n    execution_id,\n    input,\n    metadata,\n    created_at,\n    updated_at,\n    status,\n    error,\n    transition_count,\n    output,\n    current_step,\n    next_step,\n    step_label,\n    task_token,\n    transition_metadata\nFROM\n    latest_executions\nWHERE\n    developer_id = $1\n    AND task_id = $2\nORDER BY\n    CASE WHEN $3 = 'created_at' AND $4 = 'asc' THEN created_at END ASC NULLS LAST,\n    CASE WHEN $3 = 'created_at' AND $4 = 'desc' THEN created_at END DESC NULLS LAST,\n    CASE WHEN $3 = 'updated_at' AND $4 = 'asc' THEN updated_at END ASC NULLS LAST,\n    CASE WHEN $3 = 'updated_at' AND $4 = 'desc' THEN updated_at END DESC NULLS LAST\nLIMIT $5 OFFSET $6;\n\"\"\"\n\n\n@rewrap_exceptions({\n    asyncpg.InvalidRowCountInLimitClauseError: partialclass(\n        HTTPException,\n        status_code=400,\n        detail=\"Invalid limit clause\",\n    ),\n    asyncpg.InvalidRowCountInResultOffsetClauseError: partialclass(\n        HTTPException,\n        status_code=400,\n        detail=\"Invalid offset clause\",\n    ),\n    **common_db_exceptions(\"execution\", [\"list\"]),\n})\n@wrap_in_class(\n    Execution,\n    transform=lambda d: {\n        \"id\": d.pop(\"execution_id\"),\n        **d,\n        \"output\": d[\"output\"][OUTPUT_UNNEST_KEY]\n        if isinstance(d.get(\"output\"), dict) and OUTPUT_UNNEST_KEY in d[\"output\"]\n        else d.get(\"output\"),\n    },\n)\n@pg_query\n@beartype\nasync def list_executions(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n    limit: Annotated[\n        int,\n        Is[\n            make_num_validator(\n                min_value=1, max_value=100, err_msg=\"Limit must be between 1 and 100\"\n            )\n        ],\n    ] = 100,\n    offset: Annotated[\n        int, Is[make_num_validator(min_value=0, err_msg=\"Offset must be >= 0\")]\n    ] = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> tuple[str, list]:\n    \"\"\"\n    List executions for a given task.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        task_id (UUID): The ID of the task.\n        limit (int): The number of executions to return.\n        offset (int): The number of executions to skip.\n        sort_by (Literal[\"created_at\", \"updated_at\"]): The field to sort by.\n        direction (Literal[\"asc\", \"desc\"]): The direction to sort by.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for listing executions.\n    \"\"\"\n\n    # if sort_by not in [\"created_at\", \"updated_at\"]:\n    #     raise HTTPException(status_code=400, detail=\"Invalid sort field\")\n\n    return (\n        list_executions_query,\n        [\n            developer_id,\n            task_id,\n            sort_by,\n            direction,\n            limit,\n            offset,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/lookup_temporal_data.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to lookup temporal data\nlookup_temporal_data_query = \"\"\"\nSELECT t.*\nFROM\n    temporal_executions_lookup t,\n    executions e\nWHERE\n    t.execution_id = e.execution_id\n    AND e.execution_id = $1\n    AND e.developer_id = $2\nLIMIT 1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"temporal_execution\", [\"get\"]))\n@wrap_in_class(dict, one=True)\n@pg_query\n@beartype\nasync def lookup_temporal_data(\n    *,\n    developer_id: UUID,\n    execution_id: UUID,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Lookup temporal data for a given execution.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        execution_id (UUID): The ID of the execution.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query and parameters for looking up temporal data.\n    \"\"\"\n    developer_id = str(developer_id)\n    execution_id = str(execution_id)\n\n    return (\n        lookup_temporal_data_query,\n        [execution_id, developer_id],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/executions/prepare_execution_input.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.protocol.models import ExecutionInput\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Query to prepare execution input\nprepare_execution_input_query = \"\"\"\nSELECT * FROM\n(\n    SELECT to_jsonb(a) AS agent FROM (\n        SELECT * FROM agents\n        WHERE\n            developer_id = $1\n            AND agent_id = (\n                SELECT agent_id FROM tasks\n                WHERE developer_id = $1 AND task_id = $2\n                ORDER BY created_at DESC\n                LIMIT 1\n            )\n        LIMIT 1\n    ) a\n) AS agent,\n(\n    SELECT COALESCE(jsonb_agg(r), '[]'::jsonb) AS tools FROM (\n        SELECT * FROM tools\n        WHERE\n            developer_id = $1\n            AND task_id = $2\n    ) r\n) AS tools,\n(\n    SELECT to_jsonb(e) AS execution FROM (\n        SELECT * FROM latest_executions\n        WHERE\n            developer_id = $1\n            AND task_id = $2\n            AND execution_id = $3\n        LIMIT 1\n    ) e\n) AS execution;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"execution_data\", [\"get\"]))\n@wrap_in_class(\n    ExecutionInput,\n    one=True,\n    transform=lambda d: {\n        **d,\n        # \"task\": {\n        #     \"tools\": d[\"tools\"],\n        #     **d[\"task\"],\n        # },\n        \"developer_id\": d[\"agent\"][\"developer_id\"],\n        \"agent\": {\n            \"id\": d[\"agent\"][\"agent_id\"],\n            **d[\"agent\"],\n        },\n        \"agent_tools\": [\n            {tool[\"type\"]: tool.pop(\"spec\"), **tool} for tool in d[\"tools\"] if tool is not None\n        ],\n        \"arguments\": d[\"execution\"][\"input\"],\n        \"execution\": {\n            \"id\": d[\"execution\"][\"execution_id\"],\n            **d[\"execution\"],\n        },\n    },\n)\n@pg_query\n@beartype\nasync def prepare_execution_input(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n    execution_id: UUID,\n) -> tuple[str, list]:\n    \"\"\"\n    Prepare the execution input for a given task.\n\n    Parameters:\n        developer_id (UUID): The ID of the developer.\n        task_id (UUID): The ID of the task.\n        execution_id (UUID): The ID of the execution.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for preparing the execution input.\n    \"\"\"\n\n    return (\n        prepare_execution_input_query,\n        [str(developer_id), str(task_id), str(execution_id)],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/files/__init__.py",
    "content": "\"\"\"\nThe `files` module within the `queries` package provides SQL query functions for managing files\nin the PostgreSQL database. This includes operations for:\n\n- Creating new files\n- Retrieving file details\n- Listing files with filtering and pagination\n- Deleting files and their associations\n\"\"\"\n\nfrom .create_file import create_file\nfrom .delete_file import delete_file\nfrom .get_file import get_file\nfrom .list_files import list_files\n\n__all__ = [\"create_file\", \"delete_file\", \"get_file\", \"list_files\"]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/files/create_file.py",
    "content": "\"\"\"\nThis module contains the functionality for creating files in the PostgreSQL database.\nIt includes functions to construct and execute SQL queries for inserting new file records.\n\"\"\"\n\nimport base64\nimport hashlib\nfrom typing import Literal\nfrom uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateFileRequest, File\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..projects.project_exists import project_exists\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Create file\nfile_query = \"\"\"\nWITH new_file AS (\n    INSERT INTO files (\n        developer_id,\n        file_id,\n        name,\n        description,\n        mime_type,\n        size,\n        hash\n    )\n    VALUES (\n        $1, -- developer_id\n        $2, -- file_id\n        $3, -- name\n        $4, -- description\n        $5, -- mime_type\n        $6, -- size\n        $7  -- hash\n    )\n    RETURNING *\n), proj AS (\n    -- Find project ID by canonical name\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $8\n), project_association AS (\n    -- Insert into project_files junction table\n    INSERT INTO project_files (\n        project_id,\n        developer_id,\n        file_id\n    )\n    SELECT\n        p.project_id,\n        $1,\n        $2\n    FROM proj p\n    WHERE p.project_id IS NOT NULL\n    RETURNING 1\n)\nSELECT\n    f.*,\n    $8 AS project\nFROM new_file f;\n\"\"\"\n\n# Replace both user_file and agent_file queries with a single file_owner query\nfile_owner_query = \"\"\"\nWITH inserted_owner AS (\n    INSERT INTO file_owners (\n        developer_id,\n        file_id,\n        owner_type,\n        owner_id\n    )\n    VALUES ($1, $2, $3, $4)\n    RETURNING file_id\n)\nSELECT\n    f.*,\n    $5 AS project\nFROM inserted_owner io\nJOIN files f ON f.file_id = io.file_id;\n\"\"\"\n\n\n# Add error handling decorator\n@rewrap_exceptions(common_db_exceptions(\"file\", [\"create\"]))\n@wrap_in_class(\n    File,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"file_id\"],\n        \"hash\": d[\"hash\"].hex(),\n        \"content\": \"DUMMY: NEED TO FETCH CONTENT FROM BLOB STORAGE\",\n    },\n)\n@query_metrics(\"create_file\")\n@pg_query\n@beartype\nasync def create_file_query(\n    *,\n    developer_id: UUID,\n    file_id: UUID | None = None,\n    data: CreateFileRequest,\n    owner_type: Literal[\"user\", \"agent\"] | None = None,\n    owner_id: UUID | None = None,\n) -> list[tuple[str, list] | tuple[str, list, str]]:\n    \"\"\"\n    Constructs and executes SQL queries to create a new file and optionally associate it with an owner.\n\n    Parameters:\n        developer_id (UUID): The unique identifier for the developer.\n        file_id (UUID | None): Optional unique identifier for the file.\n        data (CreateFileRequest): The file data to insert.\n        owner_type (Literal[\"user\", \"agent\"] | None): Optional type of owner\n        owner_id (UUID | None): Optional ID of the owner\n\n    Returns:\n        list[tuple[str, list] | tuple[str, list, str]]: List of SQL queries, their parameters, and fetch type\n    \"\"\"\n    file_id = file_id or uuid7()\n\n    # Calculate size and hash\n    content_bytes = base64.b64decode(data.content)\n    size = len(content_bytes)\n    hash_bytes = hashlib.sha256(content_bytes).digest()\n\n    # Base file parameters\n    file_params = [\n        developer_id,\n        file_id,\n        data.name,\n        data.description,\n        data.mime_type,\n        size,\n        hash_bytes,\n        data.project or \"default\",\n    ]\n\n    queries = []\n\n    # Create the file first\n    queries.append((file_query, file_params))\n\n    # Then create the association if owner info provided\n    if owner_type and owner_id:\n        assoc_params = [developer_id, file_id, owner_type, owner_id, data.project or \"default\"]\n        queries.append((file_owner_query, assoc_params))\n\n    return queries\n\n\nasync def create_file(\n    *,\n    developer_id: UUID,\n    file_id: UUID | None = None,\n    data: CreateFileRequest,\n    owner_type: Literal[\"user\", \"agent\"] | None = None,\n    owner_id: UUID | None = None,\n    connection_pool: asyncpg.Pool | None = None,\n) -> File:\n    # Get project (default if not specified)\n    project_canonical_name = data.project or \"default\"\n\n    # Check if the project exists\n    project_exists_result = await project_exists(\n        developer_id,\n        project_canonical_name,\n        connection_pool=connection_pool,\n    )\n\n    if not project_exists_result[0][\"project_exists\"]:\n        raise HTTPException(\n            status_code=404, detail=f\"Project '{project_canonical_name}' not found\"\n        )\n\n    return await create_file_query(\n        developer_id=developer_id,\n        file_id=file_id,\n        data=data,\n        owner_type=owner_type,\n        owner_id=owner_id,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/files/delete_file.py",
    "content": "\"\"\"\nThis module contains the functionality for deleting files from the PostgreSQL database.\nIt constructs and executes SQL queries to remove file records and associated data.\n\"\"\"\n\nfrom typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Delete file query with ownership check\ndelete_file_query = \"\"\"\nWITH deleted_owners AS (\n    DELETE FROM file_owners\n    WHERE developer_id = $1\n    AND file_id = $2\n    AND (\n        ($3::text IS NULL AND $4::uuid IS NULL) OR\n        (owner_type = $3 AND owner_id = $4)\n    )\n)\nDELETE FROM files\nWHERE developer_id = $1\nAND file_id = $2\nAND ($3::text IS NULL OR EXISTS (\n    SELECT 1 FROM file_owners\n    WHERE developer_id = $1\n    AND file_id = $2\n    AND owner_type = $3\n    AND owner_id = $4\n))\nRETURNING file_id;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"file\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {\n        \"id\": d[\"file_id\"],\n        \"deleted_at\": utcnow(),\n        \"jobs\": [],\n    },\n)\n@query_metrics(\"delete_file\")\n@pg_query\n@beartype\nasync def delete_file(\n    *,\n    developer_id: UUID,\n    file_id: UUID,\n    owner_type: Literal[\"user\", \"agent\"] | None = None,\n    owner_id: UUID | None = None,\n) -> tuple[str, list]:\n    \"\"\"\n    Deletes a file and its ownership records.\n\n    Args:\n        developer_id: The developer's UUID\n        file_id: The file's UUID\n        owner_type: Optional type of owner (\"user\" or \"agent\")\n        owner_id: Optional UUID of the owner\n\n    Returns:\n        tuple[str, list]: SQL query and parameters\n    \"\"\"\n    return (\n        delete_file_query,\n        [developer_id, file_id, owner_type, owner_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/files/get_file.py",
    "content": "\"\"\"\nThis module contains the functionality for retrieving a single file from the PostgreSQL database.\nIt constructs and executes SQL queries to fetch file details based on file ID and developer ID.\n\"\"\"\n\nfrom typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import File\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nfile_query = \"\"\"\nSELECT\n    f.*,\n    p.canonical_name AS project\nFROM files f\nLEFT JOIN project_files pf ON f.developer_id = pf.developer_id AND f.file_id = pf.file_id\nLEFT JOIN projects p ON pf.project_id = p.project_id\nLEFT JOIN file_owners fo ON f.developer_id = fo.developer_id AND f.file_id = fo.file_id\nWHERE f.developer_id = $1\nAND f.file_id = $2\nAND (\n    ($3::text IS NULL AND $4::uuid IS NULL) OR\n    (fo.owner_type = $3 AND fo.owner_id = $4)\n)\nLIMIT 1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"file\", [\"get\"]))\n@wrap_in_class(\n    File,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"file_id\"],\n        \"hash\": d[\"hash\"].hex(),\n        \"content\": \"DUMMY: NEED TO FETCH CONTENT FROM BLOB STORAGE\",\n    },\n)\n@pg_query\n@beartype\nasync def get_file(\n    *,\n    file_id: UUID,\n    developer_id: UUID,\n    owner_type: Literal[\"user\", \"agent\"] | None = None,\n    owner_id: UUID | None = None,\n) -> tuple[str, list, Literal[\"fetchrow\", \"fetchmany\", \"fetch\"]]:\n    \"\"\"\n    Constructs the SQL query to retrieve a file's details.\n    Uses composite index on (developer_id, file_id) for efficient lookup.\n\n    Args:\n        file_id: The UUID of the file to retrieve\n        developer_id: The UUID of the developer owning the file\n        owner_type: Optional type of owner (\"user\" or \"agent\")\n        owner_id: Optional UUID of the owner\n\n    Returns:\n        tuple[str, list]: SQL query and parameters\n    \"\"\"\n    return (\n        file_query,\n        [developer_id, file_id, owner_type, owner_id],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/files/list_files.py",
    "content": "\"\"\"\nThis module contains the functionality for listing files from the PostgreSQL database.\nIt constructs and executes SQL queries to fetch a list of files based on developer ID with pagination.\n\"\"\"\n\nfrom typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom beartype.vale import Is\n\nfrom ...autogen.openapi_model import File\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import make_num_validator, pg_query, rewrap_exceptions, wrap_in_class\n\n# Base query for listing files\nbase_files_query = \"\"\"\nSELECT\n    f.*,\n    p.canonical_name AS project\nFROM files f\nLEFT JOIN project_files pf ON f.developer_id = pf.developer_id AND f.file_id = pf.file_id\nLEFT JOIN projects p ON pf.project_id = p.project_id\nLEFT JOIN file_owners fo ON f.developer_id = fo.developer_id AND f.file_id = fo.file_id\nWHERE f.developer_id = $1\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"file\", [\"list\"]))\n@wrap_in_class(\n    File,\n    one=False,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"file_id\"],\n        \"hash\": d[\"hash\"].hex(),\n        \"content\": \"DUMMY: NEED TO FETCH CONTENT FROM BLOB STORAGE\",\n    },\n)\n@pg_query\n@beartype\nasync def list_files(\n    *,\n    developer_id: UUID,\n    owner_id: UUID | None = None,\n    owner_type: Literal[\"user\", \"agent\"] | None = None,\n    project: str | None = None,\n    limit: Annotated[\n        int,\n        Is[\n            make_num_validator(\n                min_value=1, max_value=100, err_msg=\"Limit must be between 1 and 100\"\n            )\n        ],\n    ] = 100,\n    offset: Annotated[\n        int, Is[make_num_validator(min_value=0, err_msg=\"Offset must be >= 0\")]\n    ] = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> tuple[str, list]:\n    \"\"\"\n    Lists files with optional owner and project filtering, pagination, and sorting.\n    \"\"\"\n    # Start with the base query\n    query = base_files_query\n    params = [developer_id]\n    param_index = 2\n\n    # Add owner filtering\n    if owner_type and owner_id:\n        query += f\" AND fo.owner_type = ${param_index} AND fo.owner_id = ${param_index + 1}\"\n        params.extend([owner_type, owner_id])\n        param_index += 2\n\n    # Add project filtering\n    if project:\n        query += f\" AND p.canonical_name = ${param_index}\"\n        params.append(project)\n        param_index += 1\n\n    # Add sorting and pagination\n    query += f\" ORDER BY f.{sort_by} {direction} LIMIT ${param_index} OFFSET ${param_index + 1}\"\n    params.extend([limit, offset])\n\n    return query, params\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/projects/__init__.py",
    "content": "\"\"\"\nThe `project` module within the `queries` package provides a comprehensive suite of SQL query functions for managing projects in the PostgreSQL database. This includes:\n\n- Creating new projects\n- Updating existing projects\n- Retrieving details about specific projects\n- Listing projects with filtering and pagination\n- Deleting projects from the database\n\nEach function in this module constructs and returns SQL queries along with their parameters for database operations.\n\"\"\"\n\nfrom .create_project import create_project\nfrom .list_projects import list_projects\n\n__all__ = [\n    \"create_project\",\n    \"list_projects\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/projects/create_project.py",
    "content": "\"\"\"\nThis module contains the functionality for creating projects in the PostgreSQL database.\nIt includes functions to construct and execute SQL queries for inserting new project records.\n\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateProjectRequest, Project\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nproject_query = \"\"\"\nINSERT INTO projects (\n    developer_id,\n    project_id,\n    canonical_name,\n    name,\n    metadata\n)\nVALUES (\n    $1,\n    $2,\n    $3,\n    $4,\n    $5\n)\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"project\", [\"create\"]))\n@wrap_in_class(\n    Project,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"project_id\"]},\n)\n@query_metrics(\"create_project\")\n@pg_query\n@beartype\nasync def create_project(\n    *,\n    developer_id: UUID,\n    project_id: UUID | None = None,\n    data: CreateProjectRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs and executes a SQL query to create a new project in the database.\n\n    Parameters:\n        project_id (UUID | None): The unique identifier for the project.\n        developer_id (UUID): The unique identifier for the developer creating the project.\n        data (CreateProjectRequest): The data for the new project.\n\n    Returns:\n        tuple[str, dict]: SQL query and parameters for creating the project.\n    \"\"\"\n    project_id = project_id or uuid7()\n\n    # Set default values\n    data.metadata = data.metadata or {}\n    data.canonical_name = data.canonical_name or generate_canonical_name()\n\n    params = [\n        developer_id,\n        project_id,\n        data.canonical_name,\n        data.name,\n        data.metadata,\n    ]\n\n    return (\n        project_query,\n        params,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/projects/list_projects.py",
    "content": "\"\"\"\nThis module contains the functionality for listing projects from the PostgreSQL database.\nIt constructs and executes SQL queries to fetch a list of projects based on developer ID with pagination.\n\"\"\"\n\nfrom typing import Any, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Project\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import (\n    pg_query,\n    rewrap_exceptions,\n    wrap_in_class,\n)\n\n# Define the raw SQL query\nraw_query = \"\"\"\nSELECT\n    project_id,\n    developer_id,\n    name,\n    canonical_name,\n    metadata,\n    created_at,\n    updated_at\nFROM projects\nWHERE developer_id = $1 {metadata_filter_query}\nORDER BY\n    CASE WHEN $4 = 'created_at' AND $5 = 'asc' THEN created_at END ASC NULLS LAST,\n    CASE WHEN $4 = 'created_at' AND $5 = 'desc' THEN created_at END DESC NULLS LAST,\n    CASE WHEN $4 = 'updated_at' AND $5 = 'asc' THEN updated_at END ASC NULLS LAST,\n    CASE WHEN $4 = 'updated_at' AND $5 = 'desc' THEN updated_at END DESC NULLS LAST\nLIMIT $2 OFFSET $3;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"project\", [\"list\"]))\n@wrap_in_class(\n    Project,\n    transform=lambda d: {**d, \"id\": d[\"project_id\"]},\n)\n@pg_query\n@beartype\nasync def list_projects(\n    *,\n    developer_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    metadata_filter: dict[str, Any] | None = None,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs query to list projects for a developer with pagination.\n\n    Args:\n        developer_id: UUID of the developer\n        limit: Maximum number of records to return\n        offset: Number of records to skip\n        sort_by: Field to sort by\n        direction: Sort direction ('asc' or 'desc')\n        metadata_filter: Optional metadata filters\n\n    Returns:\n        Tuple of (query, params)\n    \"\"\"\n\n    # AIDEV-NOTE: avoid mutable default; initialize metadata_filter\n    metadata_filter = metadata_filter if metadata_filter is not None else {}\n    # Initialize parameters\n    params = [\n        developer_id,\n        limit,\n        offset,\n        sort_by,\n        direction,\n    ]\n\n    # Handle metadata filter differently - using JSONB containment\n    project_query = raw_query.format(\n        metadata_filter_query=\"AND metadata @> $6::jsonb\" if metadata_filter else \"\",\n    )\n\n    # If we have metadata filters, safely add them as a parameter\n    if metadata_filter:\n        params.append(metadata_filter)\n\n    return (\n        project_query,\n        params,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/projects/project_exists.py",
    "content": "\"\"\"\nThis module contains the functionality for creating agents in the PostgreSQL database.\nIt includes functions to construct and execute SQL queries for inserting new agent records.\n\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions\n\n# Define the raw SQL query for checking project existence\ncheck_project_query = \"\"\"\nSELECT\n    CASE\n        WHEN EXISTS (\n            SELECT 1 FROM projects\n            WHERE developer_id = $1 AND canonical_name = $2\n        ) THEN\n            TRUE\n        ELSE\n            FALSE\n    END as project_exists;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"project\", [\"exists\"]))\n@pg_query\n@beartype\nasync def project_exists(developer_id: UUID, canonical_name: str) -> tuple[str, list]:\n    return (check_project_query, [developer_id, canonical_name])\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/secrets/__init__.py",
    "content": "\"\"\"Query functions for secrets.\"\"\"\n\nfrom .create import create_secret\nfrom .delete import delete_secret\nfrom .get_by_name import get_secret_by_name\nfrom .list import list_secrets\nfrom .update import update_secret\n\n__all__ = [\n    \"create_secret\",\n    \"delete_secret\",\n    \"get_secret_by_name\",\n    \"list_secrets\",\n    \"update_secret\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/secrets/create.py",
    "content": "\"\"\"Query functions for creating secrets.\"\"\"\n\nfrom typing import Any\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom agents_api.autogen.openapi_model import Secret\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...env import secrets_master_key\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\nquery = \"\"\"\nINSERT INTO secrets (\n    secret_id, developer_id, name, description, value_encrypted, metadata\n)\nVALUES (\n    $1, $2, $3, $4,\n    (SELECT encrypt_secret($5::text, $6::text)),\n    $7\n)\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"secret\", [\"create\"]))\n@wrap_in_class(\n    Secret,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"secret_id\"], \"value\": \"ENCRYPTED\"},\n)\n@query_metrics(\"create_secret\")\n@pg_query\n@beartype\nasync def create_secret(\n    *,\n    developer_id: UUID,\n    name: str,\n    value: str,\n    secret_id: UUID | None = None,\n    description: str | None = None,\n    metadata: dict[str, Any] | None = None,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs and executes a SQL query to create a new secret in the database.\n\n    Parameters:\n        developer_id (UUID): The unique identifier for the developer creating the secret.\n        secret_id (UUID | None): The unique identifier for the secret.\n        name (str): The name of the secret.\n        value (str): The value of the secret.\n        description (str | None): The description of the secret.\n        metadata (dict[str, Any] | None): Additional metadata for the secret.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for creating the secret.\n    \"\"\"\n    secret_id = secret_id or uuid7()\n\n    return (\n        query,\n        [\n            secret_id,\n            developer_id,\n            name,\n            description,\n            value,\n            secrets_master_key,\n            metadata,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/secrets/delete.py",
    "content": "\"\"\"Query functions for deleting secrets.\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\nquery = \"\"\"\n    DELETE FROM secrets\n    WHERE secret_id = $1\n    AND developer_id = $2\n    RETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"secret\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {\n        \"id\": d[\"secret_id\"],\n        \"deleted_at\": utcnow(),\n    },\n)\n@pg_query\n@beartype\nasync def delete_secret(*, secret_id: UUID, developer_id: UUID) -> tuple[str, list]:\n    \"\"\"Delete a secret.\n\n    Args:\n        secret_id: ID of the secret to delete\n        developer_id: ID of the developer who owns the secret\n\n    Returns:\n        ResourceDeletedResponse: Information about the deleted secret\n\n    Raises:\n        NotFoundError: If the secret does not exist\n    \"\"\"\n\n    return (\n        query,\n        [\n            secret_id,\n            developer_id,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/secrets/get_by_name.py",
    "content": "\"\"\"Query functions for listing secrets.\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Secret\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...env import secrets_master_key\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\nquery = \"\"\"\nSELECT\n    secret_id, developer_id, name, description,\n    created_at, updated_at, metadata,\n    CASE WHEN $4 = True THEN decrypt_secret(value_encrypted, $3) ELSE 'ENCRYPTED' END as value\nFROM secrets\nWHERE (\n    developer_id = $1 AND\n    name = $2\n)\nLIMIT 1;\n\"\"\"\n\n\n# TODO: handle HTTPException: 404: No secret found during get_by_name, shouldn't be an error\n@wrap_in_class(\n    Secret,\n    maybe_one=True,\n    transform=lambda d: {**d, \"id\": d[\"secret_id\"]},\n)\n@pg_query\n@beartype\nasync def get_secret_by_name_query(\n    *,\n    developer_id: UUID,\n    name: str,\n    decrypt: bool = False,\n) -> tuple[str, list]:\n    return (\n        query,\n        [\n            developer_id,\n            name,\n            secrets_master_key,\n            decrypt,\n        ],\n    )\n\n\nget_secret_by_name = rewrap_exceptions(common_db_exceptions(\"secret\", [\"get_by_name\"]))(\n    get_secret_by_name_query\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/secrets/list.py",
    "content": "\"\"\"Query functions for listing secrets.\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Secret\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...env import secrets_master_key\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\nquery = \"\"\"\nSELECT\n    secret_id, developer_id, name, description,\n    created_at, updated_at, metadata,\n    CASE WHEN $5 = True THEN decrypt_secret(value_encrypted, $4) ELSE 'ENCRYPTED' END as value\nFROM secrets\nWHERE (\n    developer_id = $1\n)\nORDER BY created_at DESC\nLIMIT $2\nOFFSET $3\n\"\"\"\n\n\n@wrap_in_class(\n    Secret,\n    transform=lambda d: {**d, \"id\": d[\"secret_id\"]},\n)\n@pg_query\n@beartype\nasync def list_secrets_query(\n    *,\n    developer_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    decrypt: bool = False,\n) -> tuple[str, list]:\n    return (\n        query,\n        [\n            developer_id,\n            limit,\n            offset,\n            secrets_master_key,\n            decrypt,\n        ],\n    )\n\n\nlist_secrets = rewrap_exceptions(common_db_exceptions(\"secret\", [\"list\"]))(list_secrets_query)\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/secrets/update.py",
    "content": "\"\"\"Query functions for updating secrets.\"\"\"\n\nfrom typing import Any\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Secret\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...env import secrets_master_key\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\nquery = \"\"\"\n    UPDATE secrets\n    SET updated_at = NOW(),\n        name = COALESCE($3, name),\n        description = COALESCE($4, description),\n        metadata = COALESCE($5, metadata),\n        value_encrypted = CASE\n            WHEN $6::text IS NOT NULL THEN encrypt_secret($6::text, $7)\n            ELSE value_encrypted\n        END\n    WHERE secret_id = $1\n    AND developer_id = $2\n    RETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"secret\", [\"update\"]))\n@wrap_in_class(\n    Secret,\n    one=True,\n    transform=lambda d: {**d, \"id\": d[\"secret_id\"], \"value\": \"ENCRYPTED\"},\n)\n@query_metrics(\"update_secret\")\n@pg_query\n@beartype\nasync def update_secret(\n    *,\n    secret_id: UUID,\n    developer_id: UUID,\n    name: str | None = None,\n    description: str | None = None,\n    metadata: dict[str, Any] | None = None,\n    value: str | None = None,\n) -> tuple[str, list]:\n    return (\n        query,\n        [\n            secret_id,\n            developer_id,\n            name,\n            description,\n            metadata,\n            value,\n            secrets_master_key,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/__init__.py",
    "content": "\"\"\"\nThe `sessions` module within the `queries` package provides SQL query functions for managing sessions\nin the PostgreSQL database. This includes operations for:\n\n- Creating new sessions\n- Updating existing sessions\n- Retrieving session details\n- Listing sessions with filtering and pagination\n- Deleting sessions\n\"\"\"\n\nfrom .count_sessions import count_sessions\nfrom .create_or_update_session import create_or_update_session\nfrom .create_session import create_session\nfrom .delete_session import delete_session\nfrom .get_session import get_session\nfrom .list_sessions import list_sessions\nfrom .patch_session import patch_session\nfrom .update_session import update_session\n\n__all__ = [\n    \"count_sessions\",\n    \"create_or_update_session\",\n    \"create_session\",\n    \"delete_session\",\n    \"get_session\",\n    \"list_sessions\",\n    \"patch_session\",\n    \"update_session\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/count_sessions.py",
    "content": "\"\"\"Query builder for counting sessions belonging to a specific developer.\"\"\"\n# AIDEV-NOTE: Returns a single integer representing the number of sessions.\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nsession_query = \"\"\"\nSELECT COUNT(*)\nFROM sessions\nWHERE developer_id = $1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"session\", [\"count\"]))\n@wrap_in_class(dict, one=True)\n@query_metrics(\"count_sessions\")\n@pg_query\n@beartype\nasync def count_sessions(\n    *,\n    developer_id: UUID,\n) -> tuple[str, list]:\n    \"\"\"\n    Counts sessions from the PostgreSQL database.\n    Uses the index on developer_id for efficient counting.\n\n    Args:\n        developer_id (UUID): The developer's ID to filter sessions by.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters.\n    \"\"\"\n\n    return (\n        session_query,\n        [developer_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/create_or_update_session.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import (\n    CreateOrUpdateSessionRequest,\n    Session,\n)\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL queries\nsession_query = \"\"\"\nINSERT INTO sessions (\n    developer_id,\n    session_id,\n    situation,\n    system_template,\n    metadata,\n    render_templates,\n    token_budget,\n    context_overflow,\n    forward_tool_calls,\n    recall_options\n)\nVALUES (\n    $1, -- developer_id\n    $2, -- session_id\n    $3, -- situation\n    $4, -- system_template\n    $5, -- metadata\n    $6, -- render_templates\n    $7, -- token_budget\n    $8, -- context_overflow\n    $9, -- forward_tool_calls\n    $10 -- recall_options\n)\nON CONFLICT (developer_id, session_id) DO UPDATE\nSET\n    situation = EXCLUDED.situation,\n    system_template = EXCLUDED.system_template,\n    metadata = EXCLUDED.metadata,\n    render_templates = EXCLUDED.render_templates,\n    token_budget = EXCLUDED.token_budget,\n    context_overflow = EXCLUDED.context_overflow,\n    forward_tool_calls = EXCLUDED.forward_tool_calls,\n    recall_options = EXCLUDED.recall_options\nRETURNING *;\n\"\"\"\n\nlookup_query = \"\"\"\nINSERT INTO session_lookup (\n    developer_id,\n    session_id,\n    participant_type,\n    participant_id\n)\nVALUES ($1, $2, $3, $4)\nON CONFLICT (developer_id, session_id, participant_type, participant_id) DO NOTHING;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"session\", [\"create\", \"update\"]))\n@wrap_in_class(\n    Session,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"session_id\"],\n    },\n)\n@query_metrics(\"create_or_update_session\")\n@pg_query(return_index=0)\n@beartype\nasync def create_or_update_session(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n    data: CreateOrUpdateSessionRequest,\n) -> list[tuple[str, list] | tuple[str, list, str]]:\n    \"\"\"\n    Constructs SQL queries to create or update a session and its participant lookups.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        session_id (UUID): The session's UUID\n        data (CreateOrUpdateSessionRequest): Session data to insert or update\n\n    Returns:\n        list[tuple[str, list]]: List of SQL queries and their parameters\n    \"\"\"\n    # Handle participants\n    users = data.users or ([data.user] if data.user else [])\n    agents = data.agents or ([data.agent] if data.agent else [])\n\n    if not agents:\n        raise HTTPException(\n            status_code=400,\n            detail=\"At least one agent must be provided\",\n        )\n\n    if data.agent and data.agents:\n        raise HTTPException(\n            status_code=400,\n            detail=\"Only one of 'agent' or 'agents' should be provided\",\n        )\n\n    # Prepare participant arrays for lookup query\n    participant_types = [\"user\"] * len(users) + [\"agent\"] * len(agents)\n    participant_ids = [str(u) for u in users] + [str(a) for a in agents]\n\n    # Prepare session parameters\n    session_params = [\n        developer_id,  # $1\n        session_id,  # $2\n        data.situation,  # $3\n        data.system_template,  # $4\n        data.metadata or {},  # $5\n        data.render_templates,  # $6\n        data.token_budget,  # $7\n        data.context_overflow,  # $8\n        data.forward_tool_calls,  # $9\n        data.recall_options.model_dump() if data.recall_options else {},  # $10\n    ]\n\n    # Prepare lookup parameters\n    lookup_params = []\n    for participant_type, participant_id in zip(participant_types, participant_ids):\n        lookup_params.append([developer_id, session_id, participant_type, participant_id])\n\n    return [\n        (session_query, session_params, \"fetch\"),\n        (lookup_query, lookup_params, \"fetchmany\"),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/create_session.py",
    "content": "\"\"\"Database query to create a new chat session for a developer.\"\"\"\n# AIDEV-NOTE: Inserts a new session row and returns it with generated ID.\n\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateSessionRequest, Session\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL queries\nsession_query = \"\"\"\nINSERT INTO sessions (\n    developer_id,\n    session_id,\n    situation,\n    system_template,\n    metadata,\n    render_templates,\n    token_budget,\n    context_overflow,\n    forward_tool_calls,\n    recall_options\n)\nVALUES (\n    $1, -- developer_id\n    $2, -- session_id\n    $3, -- situation\n    $4, -- system_template\n    $5, -- metadata\n    $6, -- render_templates\n    $7, -- token_budget\n    $8, -- context_overflow\n    $9, -- forward_tool_calls\n    $10 -- recall_options\n)\nRETURNING *;\n\"\"\"\n\nlookup_query = \"\"\"\nINSERT INTO session_lookup (\n    developer_id,\n    session_id,\n    participant_type,\n    participant_id\n)\nVALUES ($1, $2, $3, $4);\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"session\", [\"create\"]))\n@wrap_in_class(\n    Session,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"session_id\"],\n    },\n)\n@query_metrics(\"create_session\")\n@pg_query(return_index=0)\n@beartype\nasync def create_session(\n    *,\n    developer_id: UUID,\n    session_id: UUID | None = None,\n    data: CreateSessionRequest,\n) -> list[tuple[str, list] | tuple[str, list, str]]:\n    \"\"\"\n    Constructs SQL queries to create a new session and its participant lookups.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        session_id (UUID): The session's UUID\n        data (CreateSessionRequest): Session creation data\n\n    Returns:\n        list[tuple[str, list] | tuple[str, list, str]]: SQL queries and their parameters\n    \"\"\"\n    # Handle participants\n    users = data.users or ([data.user] if data.user else [])\n    agents = data.agents or ([data.agent] if data.agent else [])\n    session_id = session_id or uuid7()\n\n    if not agents:\n        raise HTTPException(\n            status_code=400,\n            detail=\"At least one agent must be provided\",\n        )\n\n    if data.agent and data.agents:\n        raise HTTPException(\n            status_code=400,\n            detail=\"Only one of 'agent' or 'agents' should be provided\",\n        )\n\n    # Prepare participant arrays for lookup query\n    participant_types = [\"user\"] * len(users) + [\"agent\"] * len(agents)\n    participant_ids = [str(u) for u in users] + [str(a) for a in agents]\n\n    # Prepare session parameters\n    session_params = [\n        developer_id,  # $1\n        session_id,  # $2\n        data.situation,  # $3\n        data.system_template,  # $4\n        data.metadata or {},  # $5\n        data.render_templates,  # $6\n        data.token_budget,  # $7\n        data.context_overflow,  # $8\n        data.forward_tool_calls,  # $9\n        data.recall_options.model_dump() if data.recall_options else {},  # $10\n    ]\n\n    # Prepare lookup parameters as a list of parameter lists\n    lookup_params = []\n    for ptype, pid in zip(participant_types, participant_ids):\n        lookup_params.append([developer_id, session_id, ptype, pid])\n\n    return [\n        (session_query, session_params, \"fetch\"),\n        (lookup_query, lookup_params, \"fetchmany\"),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/delete_session.py",
    "content": "\"\"\"This module contains the implementation for deleting sessions from the PostgreSQL database.\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL queries\nlookup_query = \"\"\"\nDELETE FROM session_lookup\nWHERE developer_id = $1 AND session_id = $2;\n\"\"\"\n\nsession_query = \"\"\"\nDELETE FROM sessions\nWHERE developer_id = $1 AND session_id = $2\nRETURNING session_id AS id;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"session\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"deleted_at\": utcnow(),\n        \"jobs\": [],\n    },\n)\n@query_metrics(\"delete_session\")\n@pg_query\n@beartype\nasync def delete_session(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n) -> list[tuple[str, list]]:\n    \"\"\"\n    Constructs SQL queries to delete a session and its participant lookups.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        session_id (UUID): The session's UUID to delete\n\n    Returns:\n        list[tuple[str, list]]: List of SQL queries and their parameters\n    \"\"\"\n    params = [developer_id, session_id]\n\n    return [\n        (lookup_query, params),  # Delete from lookup table first due to FK constraint\n        (session_query, params),  # Then delete from sessions table\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/get_session.py",
    "content": "\"\"\"This module contains functions for retrieving session data from the PostgreSQL database.\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Session\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nquery = \"\"\"\nWITH session_participants AS (\n    SELECT\n        sl.session_id,\n        array_agg(sl.participant_id) FILTER (WHERE sl.participant_type = 'agent') as agents,\n        array_agg(sl.participant_id) FILTER (WHERE sl.participant_type = 'user') as users\n    FROM session_lookup sl\n    WHERE sl.developer_id = $1 AND sl.session_id = $2\n    GROUP BY sl.session_id\n)\nSELECT\n    s.session_id as id,\n    s.developer_id,\n    s.situation,\n    s.system_template,\n    s.metadata,\n    s.render_templates,\n    s.token_budget,\n    s.context_overflow,\n    s.forward_tool_calls,\n    s.recall_options,\n    s.created_at,\n    s.updated_at,\n    sp.agents,\n    sp.users\nFROM sessions s\nLEFT JOIN session_participants sp ON s.session_id = sp.session_id\nWHERE s.developer_id = $1 AND s.session_id = $2;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"session\", [\"get\"]))\n@wrap_in_class(Session, one=True)\n@query_metrics(\"get_session\")\n@pg_query\n@beartype\nasync def get_session(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs SQL query to retrieve a session and its participants.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        session_id (UUID): The session's UUID\n\n    Returns:\n        tuple[str, list]: SQL query and parameters\n    \"\"\"\n    return (\n        query,\n        [developer_id, session_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/list_sessions.py",
    "content": "\"\"\"This module contains functions for querying session data from the PostgreSQL database.\"\"\"\n\nfrom typing import Any, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Session\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nsession_query = \"\"\"\nWITH session_participants AS (\n    SELECT\n        sl.session_id,\n        array_agg(sl.participant_id) FILTER (WHERE sl.participant_type = 'agent') as agents,\n        array_agg(sl.participant_id) FILTER (WHERE sl.participant_type = 'user') as users\n    FROM session_lookup sl\n    WHERE sl.developer_id = $1\n    GROUP BY sl.session_id\n)\nSELECT\n    s.session_id as id,\n    s.developer_id,\n    s.situation,\n    s.system_template,\n    s.metadata,\n    s.render_templates,\n    s.token_budget,\n    s.context_overflow,\n    s.forward_tool_calls,\n    s.recall_options,\n    s.created_at,\n    s.updated_at,\n    sp.agents,\n    sp.users\nFROM sessions s\nLEFT JOIN session_participants sp ON s.session_id = sp.session_id\nWHERE s.developer_id = $1\n    AND ($5::jsonb IS NULL OR s.metadata @> $5::jsonb)\nORDER BY\n    CASE WHEN $3 = 'created_at' AND $4 = 'desc' THEN s.created_at END DESC,\n    CASE WHEN $3 = 'created_at' AND $4 = 'asc' THEN s.created_at END ASC,\n    CASE WHEN $3 = 'updated_at' AND $4 = 'desc' THEN s.updated_at END DESC,\n    CASE WHEN $3 = 'updated_at' AND $4 = 'asc' THEN s.updated_at END ASC\nLIMIT $2 OFFSET $6;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"session\", [\"list\"]))\n@wrap_in_class(\n    Session,\n    transform=lambda d: {\n        **d,\n    },\n)\n@query_metrics(\"list_sessions\")\n@pg_query\n@beartype\nasync def list_sessions(\n    *,\n    developer_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    metadata_filter: dict[str, Any] | None = None,\n) -> tuple[str, list]:\n    \"\"\"\n    Lists sessions from the PostgreSQL database based on the provided filters.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        limit (int): Maximum number of sessions to return\n        offset (int): Number of sessions to skip\n        sort_by (str): Field to sort by ('created_at' or 'updated_at')\n        direction (str): Sort direction ('asc' or 'desc')\n        metadata_filter (dict): Dictionary of metadata fields to filter by\n\n    Returns:\n        tuple[str, list]: SQL query and parameters\n    \"\"\"\n    # AIDEV-NOTE: avoid mutable default; initialize metadata_filter\n    metadata_filter = metadata_filter if metadata_filter is not None else {}\n    return (\n        session_query,\n        [\n            developer_id,  # $1\n            limit,  # $2\n            sort_by,  # $3\n            direction,  # $4\n            metadata_filter or None,  # $5\n            offset,  # $6\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/patch_session.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import PatchSessionRequest, Session\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL queries\n# Build dynamic SET clause based on provided fields\nsession_query = \"\"\"\nUPDATE sessions\nSET\n    situation = COALESCE($3, situation),\n    system_template = COALESCE($4, system_template),\n    metadata = sessions.metadata || $5,\n    render_templates = COALESCE($6, render_templates),\n    token_budget = COALESCE($7, token_budget),\n    context_overflow = COALESCE($8, context_overflow),\n    forward_tool_calls = COALESCE($9, forward_tool_calls),\n    recall_options = sessions.recall_options || $10\nWHERE\n    developer_id = $1\n    AND session_id = $2\nRETURNING *\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"session\", [\"patch\"]))\n@wrap_in_class(\n    Session,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"session_id\"],\n    },\n)\n@query_metrics(\"patch_session\")\n@pg_query\n@beartype\nasync def patch_session(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n    data: PatchSessionRequest,\n) -> list[tuple[str, list]]:\n    \"\"\"\n    Constructs SQL queries to patch a session and its participant lookups.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        session_id (UUID): The session's UUID\n        data (PatchSessionRequest): Session patch data\n\n    Returns:\n        list[tuple[str, list]]: List of SQL queries and their parameters\n    \"\"\"\n\n    # Extract fields from data, using None for unset fields\n    session_params = [\n        developer_id,  # $1\n        session_id,  # $2\n        data.situation,  # $3\n        data.system_template,  # $4\n        data.metadata or {},  # $5\n        data.render_templates,  # $6\n        data.token_budget,  # $7\n        data.context_overflow,  # $8\n        data.forward_tool_calls,  # $9\n        data.recall_options.model_dump() if data.recall_options else {},  # $10\n    ]\n\n    return [(session_query, session_params)]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/sessions/update_session.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Session, UpdateSessionRequest\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query\nsession_query = \"\"\"\nUPDATE sessions\nSET\n    situation = $3,\n    system_template = $4,\n    metadata = $5,\n    render_templates = $6,\n    token_budget = $7,\n    context_overflow = $8,\n    forward_tool_calls = $9,\n    recall_options = $10\nWHERE developer_id = $1 AND session_id = $2\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"session\", [\"update\"]))\n@wrap_in_class(\n    Session,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"session_id\"],\n    },\n)\n@query_metrics(\"update_session\")\n@pg_query\n@beartype\nasync def update_session(\n    *,\n    developer_id: UUID,\n    session_id: UUID,\n    data: UpdateSessionRequest,\n) -> list[tuple[str, list]]:\n    \"\"\"\n    Constructs SQL queries to update a session and its participant lookups.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        session_id (UUID): The session's UUID\n        data (UpdateSessionRequest): Session update data\n\n    Returns:\n        list[tuple[str, list]]: List of SQL queries and their parameters\n    \"\"\"\n    # Prepare session parameters\n    session_params = [\n        developer_id,  # $1\n        session_id,  # $2\n        data.situation,  # $3\n        data.system_template,  # $4\n        data.metadata or {},  # $5\n        data.render_templates,  # $6\n        data.token_budget,  # $7\n        data.context_overflow,  # $8\n        data.forward_tool_calls,  # $9\n        data.recall_options.model_dump() if data.recall_options else {},  # $10\n    ]\n\n    return [\n        (session_query, session_params),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tasks/__init__.py",
    "content": "\"\"\"\nThe `task` module within the `queries` package provides SQL query functions for managing tasks\nin the TimescaleDB database. This includes operations for:\n\n- Creating new tasks\n- Updating existing tasks\n- Retrieving task details\n- Listing tasks with filtering and pagination\n- Deleting tasks\n\"\"\"\n\nfrom .create_or_update_task import create_or_update_task\nfrom .create_task import create_task\nfrom .delete_task import delete_task\nfrom .get_task import get_task\nfrom .list_tasks import list_tasks\nfrom .patch_task import patch_task\nfrom .update_task import update_task\n\n__all__ = [\n    \"create_or_update_task\",\n    \"create_task\",\n    \"delete_task\",\n    \"get_task\",\n    \"list_tasks\",\n    \"patch_task\",\n    \"update_task\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tasks/create_or_update_task.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateOrUpdateTaskRequest\nfrom ...common.protocol.models import spec_to_task, task_to_spec\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import generate_canonical_name, pg_query, rewrap_exceptions, wrap_in_class\nfrom .get_task import get_task_query\n\n# Define the raw SQL query for creating or updating a task\ntools_query = \"\"\"\nINSERT INTO tools (\n    developer_id,\n    agent_id,\n    task_id,\n    tool_id,\n    type,\n    name,\n    description,\n    spec\n)\nVALUES (\n    $1,                 -- developer_id\n    $2,                 -- agent_id\n    $3,                 -- task_id\n    $4,                 -- tool_id\n    $5,                 -- type\n    $6,                 -- name\n    $7,                 -- description\n    $8                  -- spec\n)\nON CONFLICT (developer_id, agent_id, task_id, name) DO UPDATE SET\n    type = EXCLUDED.type,\n    description = EXCLUDED.description,\n    spec = EXCLUDED.spec\nRETURNING *;\n\"\"\"\n\n# Define the raw SQL query for creating or updating a task\ntask_query = \"\"\"\nWITH current_version AS (\n    SELECT COALESCE(\n        (SELECT MAX(\"version\")\n         FROM tasks\n         WHERE developer_id = $1\n           AND task_id = $4),\n        0\n    ) + 1 as next_version,\n    COALESCE(\n        (SELECT canonical_name\n         FROM tasks\n         WHERE developer_id = $1 AND task_id = $4\n         ORDER BY version DESC\n         LIMIT 1),\n        $2\n    ) as effective_canonical_name\n    FROM (SELECT 1) as dummy\n)\nINSERT INTO tasks (\n    \"version\",\n    developer_id,\n    canonical_name,\n    agent_id,\n    task_id,\n    name,\n    description,\n    inherit_tools,\n    input_schema,\n    metadata\n)\nSELECT\n    next_version,                -- version\n    $1,                          -- developer_id\n    effective_canonical_name,    -- canonical_name\n    $3,                          -- agent_id\n    $4,                          -- task_id\n    $5,                          -- name\n    $6,                          -- description\n    $7,                          -- inherit_tools\n    $8::jsonb,                   -- input_schema\n    $9::jsonb                    -- metadata\nFROM current_version\nON CONFLICT (developer_id, task_id, \"version\") DO UPDATE SET\n    version = tasks.version + 1,\n    name = EXCLUDED.name,\n    description = EXCLUDED.description,\n    inherit_tools = EXCLUDED.inherit_tools,\n    input_schema = EXCLUDED.input_schema,\n    metadata = EXCLUDED.metadata\nRETURNING *, (SELECT next_version FROM current_version) as next_version;\n\"\"\"\n\n# Define the raw SQL query for inserting workflows\nworkflows_query = \"\"\"\nWITH version AS (\n    SELECT COALESCE(MAX(\"version\"), 0) as current_version\n    FROM tasks\n    WHERE developer_id = $1\n      AND task_id = $2\n)\nINSERT INTO workflows (\n    developer_id,\n    task_id,\n    \"version\",\n    name,\n    step_idx,\n    step_type,\n    step_definition\n)\nSELECT\n    $1,                 -- developer_id\n    $2,                 -- task_id\n    current_version,    -- version\n    $3,                 -- name\n    $4,                 -- step_idx\n    $5,                 -- step_type\n    $6                  -- step_definition\nFROM version;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"task\", [\"create_or_update\"]))\n@wrap_in_class(\n    spec_to_task,\n    one=True,\n)\n@query_metrics(\"create_or_update_task\")\n@pg_query\n@beartype\nasync def create_or_update_task(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    task_id: UUID,\n    data: CreateOrUpdateTaskRequest,\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"\n    Constructs an SQL query to create or update a task.\n\n    Args:\n        developer_id (UUID): The UUID of the developer.\n        agent_id (UUID): The UUID of the agent.\n        task_id (UUID): The UUID of the task.\n        data (CreateOrUpdateTaskRequest): The task data to insert or update.\n\n    Returns:\n        list[tuple[str, list, Literal[\"fetch\", \"fetchmany\"]]]: List of SQL queries and parameters.\n\n    Raises:\n        HTTPException: If developer/agent doesn't exist (404) or on unique constraint violation (409)\n    \"\"\"\n\n    # Generate canonical name from task name if not provided\n    canonical_name = data.canonical_name or generate_canonical_name()\n\n    # Version will be determined by the CTE\n    task_params = [\n        developer_id,  # $1\n        canonical_name,  # $2\n        agent_id,  # $3\n        task_id,  # $4\n        data.name,  # $5\n        data.description,  # $6\n        data.inherit_tools,  # $7\n        data.input_schema or {},  # $8\n        data.metadata or {},  # $9\n    ]\n\n    # Prepare tool parameters for the tools table\n    tool_params = [\n        [\n            developer_id,\n            agent_id,\n            task_id,\n            uuid7(),  # tool_id\n            tool.type,\n            tool.name,\n            tool.description,\n            getattr(tool, tool.type)\n            and getattr(tool, tool.type).model_dump(mode=\"json\"),  # spec\n        ]\n        for tool in data.tools or []\n    ]\n\n    # Generate workflows from task data using task_to_spec\n    workflows_spec = task_to_spec(data).model_dump(mode=\"json\")\n    workflow_params = []\n    for workflow in workflows_spec.get(\"workflows\", []):\n        workflow_name = workflow.get(\"name\")\n        steps = workflow.get(\"steps\", [])\n        for step_idx, step in enumerate(steps):\n            workflow_params.append([\n                developer_id,  # $1\n                task_id,  # $2\n                workflow_name,  # $3\n                step_idx,  # $4\n                step[\"kind_\"],  # $5\n                step,  # $6\n            ])\n\n    return [\n        (\n            task_query,\n            task_params,\n            \"fetch\",\n        ),\n        (\n            tools_query,\n            tool_params,\n            \"fetchmany\",\n        ),\n        (\n            workflows_query,\n            workflow_params,\n            \"fetchmany\",\n        ),\n        (\n            get_task_query,\n            [developer_id, task_id],\n            \"fetchrow\",\n        ),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tasks/create_task.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateTaskRequest\nfrom ...common.protocol.models import spec_to_task, task_to_spec\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import (\n    generate_canonical_name,\n    pg_query,\n    rewrap_exceptions,\n    wrap_in_class,\n)\nfrom .get_task import get_task_query\n\n# Define the raw SQL query for creating or updating a task\ntools_query = \"\"\"\nINSERT INTO tools (\n    developer_id,\n    agent_id,\n    task_id,\n    tool_id,\n    type,\n    name,\n    description,\n    spec\n)\nVALUES (\n    $1, -- developer_id\n    $2, -- agent_id\n    $3, -- task_id\n    $4, -- tool_id\n    $5, -- type\n    $6, -- name\n    $7, -- description\n    $8 -- spec\n)\n\"\"\"\n\ntask_query = \"\"\"\nINSERT INTO tasks (\n    \"version\",\n    developer_id,\n    agent_id,\n    task_id,\n    name,\n    canonical_name,\n    description,\n    inherit_tools,\n    input_schema,\n    metadata\n)\nVALUES (\n    1, -- version\n    $1, -- developer_id\n    $2, -- agent_id\n    $3, -- task_id\n    $4, -- name\n    $5, -- canonical_name\n    $6, -- description\n    $7, -- inherit_tools\n    $8::jsonb, -- input_schema\n    $9::jsonb -- metadata\n)\n\"\"\"\n\n# Define the raw SQL query for inserting workflows\nworkflows_query = \"\"\"\nINSERT INTO workflows (\n    developer_id,\n    task_id,\n    \"version\",\n    name,\n    step_idx,\n    step_type,\n    step_definition\n)\nVALUES (\n    $1, -- developer_id\n    $2, -- task_id\n    $3, -- version\n    $4, -- name\n    $5, -- step_idx\n    $6, -- step_type\n    $7  -- step_definition\n)\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"task\", [\"create\"]))\n@wrap_in_class(\n    spec_to_task,\n    one=True,\n)\n@query_metrics(\"create_task\")\n@pg_query\n@beartype\nasync def create_task(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    task_id: UUID | None = None,\n    data: CreateTaskRequest,\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"\n    Constructs SQL queries to create or update a task along with its associated tools and workflows.\n\n    Args:\n        developer_id (UUID): The UUID of the developer.\n        agent_id (UUID): The UUID of the agent.\n        task_id (UUID, optional): The UUID of the task. If not provided, a new UUID is generated.\n        data (CreateTaskRequest): The task data to insert or update.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters.\n\n    Raises:\n        HTTPException: If developer/agent doesn't exist (404) or on unique constraint violation (409)\n    \"\"\"\n    task_id = task_id or uuid7()\n\n    # Insert parameters for the tasks table\n    task_params = [\n        developer_id,  # $1\n        agent_id,  # $2\n        task_id,  # $3\n        data.name,  # $4\n        data.canonical_name or generate_canonical_name(),  # $5\n        data.description,  # $6\n        data.inherit_tools,  # $7\n        data.input_schema or {},  # $8\n        data.metadata or {},  # $9\n    ]\n\n    # Prepare tool parameters for the tools table\n    tool_params = [\n        [\n            developer_id,\n            agent_id,\n            task_id,\n            uuid7(),  # tool_id\n            tool.type,\n            tool.name,\n            tool.description,\n            getattr(tool, tool.type)\n            and getattr(tool, tool.type).model_dump(mode=\"json\"),  # spec\n        ]\n        for tool in data.tools or []\n    ]\n\n    # Generate workflows from task data using task_to_spec\n    workflows_spec = task_to_spec(data).model_dump(mode=\"json\")\n    workflow_params = []\n    for workflow in workflows_spec.get(\"workflows\", []):\n        workflow_name = workflow.get(\"name\")\n        steps = workflow.get(\"steps\", [])\n        for step_idx, step in enumerate(steps):\n            workflow_params.append([\n                developer_id,  # $1\n                task_id,  # $2\n                1,  # $3 (version)\n                workflow_name,  # $4\n                step_idx,  # $5\n                step[\"kind_\"],  # $6\n                step,  # $7\n            ])\n\n    return [\n        (\n            task_query,\n            task_params,\n            \"fetch\",\n        ),\n        (\n            tools_query,\n            tool_params,\n            \"fetchmany\",\n        ),\n        (\n            workflows_query,\n            workflow_params,\n            \"fetchmany\",\n        ),\n        (\n            get_task_query,\n            [developer_id, task_id],\n            \"fetchrow\",\n        ),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tasks/delete_task.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for deleting workflows\nworkflow_query = \"\"\"\nDELETE FROM workflows\nWHERE developer_id = $1 AND task_id = $2;\n\"\"\"\n\n# Define the raw SQL query for deleting tasks\ntask_query = \"\"\"\nDELETE FROM tasks\nWHERE developer_id = $1 AND task_id = $2\nRETURNING task_id;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"task\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {\n        \"id\": d[\"task_id\"],\n        \"deleted_at\": utcnow(),\n    },\n)\n@pg_query\n@beartype\nasync def delete_task(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"\n    Deletes a task by its unique identifier along with its associated workflows.\n\n    Parameters:\n        developer_id (UUID): The unique identifier of the developer associated with the task.\n        task_id (UUID): The unique identifier of the task to delete.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query, parameters, and fetch method.\n\n    Raises:\n        HTTPException: If developer/agent doesn't exist (404) or on unique constraint violation (409)\n    \"\"\"\n\n    return [\n        (workflow_query, [developer_id, task_id], \"fetch\"),\n        (task_query, [developer_id, task_id], \"fetchrow\"),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tasks/get_task.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.protocol.models import spec_to_task\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# AIDEV-NOTE: Tools aggregated in subquery to avoid cartesian product; filtered by updated_at to exclude older versions\n# Define the raw SQL query for getting a task\nget_task_query = \"\"\"\nSELECT\n    t.*,\n    COALESCE(\n        jsonb_agg(\n            DISTINCT jsonb_build_object(\n                'name', w.name,\n                'steps', (\n                    SELECT jsonb_agg(step_definition ORDER BY step_idx)\n                    FROM workflows w2\n                    WHERE w2.developer_id = w.developer_id\n                    AND w2.task_id = w.task_id\n                    AND w2.version = w.version\n                    AND w2.name = w.name\n                )\n            )\n        ) FILTER (WHERE w.name IS NOT NULL),\n        '[]'::jsonb\n    ) as workflows,\n    COALESCE(\n        (\n            SELECT jsonb_agg(to_jsonb(tl))\n            FROM tools tl\n            WHERE tl.developer_id = t.developer_id\n            AND tl.task_id = t.task_id\n            AND tl.updated_at >= t.updated_at\n        ),\n        '[]'::jsonb\n    ) as tools\nFROM\n    tasks t\nLEFT JOIN\n    workflows w ON t.developer_id = w.developer_id AND t.task_id = w.task_id AND t.version = w.version\nWHERE\n    t.developer_id = $1 AND t.task_id = $2\n    AND t.version = (\n        SELECT MAX(version)\n        FROM tasks\n        WHERE developer_id = $1 AND task_id = $2\n    )\nGROUP BY t.developer_id, t.task_id, t.canonical_name, t.agent_id, t.version;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"task\", [\"get\"]))\n@wrap_in_class(spec_to_task, one=True)\n@pg_query\n@beartype\nasync def get_task(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Retrieves a task by its unique identifier along with its associated workflows.\n\n    Parameters:\n        developer_id (UUID): The unique identifier of the developer associated with the task.\n        task_id (UUID): The unique identifier of the task to retrieve.\n\n    Returns:\n        tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]: SQL query, parameters, and fetch method.\n\n    Raises:\n        HTTPException: If developer/agent doesn't exist (404) or on unique constraint violation (409)\n    \"\"\"\n\n    return (\n        get_task_query,\n        [developer_id, task_id],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tasks/list_tasks.py",
    "content": "from typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom beartype.vale import Is\n\nfrom ...common.protocol.models import spec_to_task\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import make_num_validator, pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for listing tasks\nlist_tasks_query = \"\"\"\nSELECT\n    t.*,\n    COALESCE(\n        jsonb_agg(\n            CASE WHEN w.name IS NOT NULL THEN\n                jsonb_build_object(\n                    'name', w.name,\n                    'steps', jsonb_build_array(w.step_definition)\n                )\n            END\n        ) FILTER (WHERE w.name IS NOT NULL),\n        '[]'::jsonb\n    ) as workflows\nFROM\n    tasks t\nLEFT JOIN\n    workflows w ON t.developer_id = w.developer_id AND t.task_id = w.task_id AND t.version = w.version\nWHERE\n    t.developer_id = $1\n    AND t.agent_id = $2\n    {metadata_filter_query}\nGROUP BY t.developer_id, t.task_id, t.canonical_name, t.agent_id, t.version\nORDER BY\n    CASE WHEN $5 = 'created_at' AND $6 = 'asc' THEN t.created_at END ASC NULLS LAST,\n    CASE WHEN $5 = 'created_at' AND $6 = 'desc' THEN t.created_at END DESC NULLS LAST,\n    CASE WHEN $5 = 'updated_at' AND $6 = 'asc' THEN t.updated_at END ASC NULLS LAST,\n    CASE WHEN $5 = 'updated_at' AND $6 = 'desc' THEN t.updated_at END DESC NULLS LAST\nLIMIT $3 OFFSET $4;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"task\", [\"list\"]))\n@wrap_in_class(spec_to_task)\n@pg_query\n@beartype\nasync def list_tasks(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    limit: Annotated[\n        int,\n        Is[\n            make_num_validator(\n                min_value=1, max_value=100, err_msg=\"Limit must be between 1 and 100\"\n            )\n        ],\n    ] = 100,\n    offset: Annotated[\n        int, Is[make_num_validator(min_value=0, err_msg=\"Offset must be >= 0\")]\n    ] = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    metadata_filter: dict[str, Any] | None = None,\n) -> tuple[str, list]:\n    \"\"\"\n    Retrieves all tasks for a given developer with pagination and sorting.\n\n    Parameters:\n        developer_id (UUID): The unique identifier of the developer.\n        agent_id (UUID): The unique identifier of the agent.\n        limit (int): Maximum number of records to return (default: 100)\n        offset (int): Number of records to skip (default: 0)\n        sort_by (str): Field to sort by (\"created_at\" or \"updated_at\")\n        direction (str): Sort direction (\"asc\" or \"desc\")\n        metadata_filter (dict): Optional metadata filters\n\n    Returns:\n        tuple[str, list]: SQL query and parameters.\n\n    Raises:\n        HTTPException: If parameters are invalid or developer/agent doesn't exist\n    \"\"\"\n    # if direction.lower() not in [\"asc\", \"desc\"]:\n    #     raise HTTPException(status_code=400, detail=\"Invalid sort direction\")\n\n    # AIDEV-NOTE: avoid mutable default; initialize metadata_filter\n    metadata_filter = metadata_filter if metadata_filter is not None else {}\n    # Format query with metadata filter if needed\n    query = list_tasks_query.format(\n        metadata_filter_query=\"AND metadata @> $7::jsonb\" if metadata_filter else \"\",\n    )\n\n    # Build parameters list\n    params = [\n        developer_id,\n        agent_id,\n        limit,\n        offset,\n        sort_by,\n        direction,\n    ]\n\n    if metadata_filter:\n        params.append(metadata_filter)\n\n    return (query, params)\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tasks/patch_task.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import PatchTaskRequest\nfrom ...common.protocol.models import spec_to_task, task_to_spec\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\nfrom .get_task import get_task_query\n\n# Update task query using INSERT with version increment\npatch_task_query = \"\"\"\nWITH current_version AS (\n    SELECT MAX(\"version\") as current_version,\n           canonical_name as existing_canonical_name,\n           metadata as existing_metadata,\n           name as existing_name,\n           description as existing_description,\n           inherit_tools as existing_inherit_tools,\n           input_schema as existing_input_schema\n    FROM tasks\n    WHERE developer_id = $1\n      AND task_id = $3\n    GROUP BY canonical_name, metadata, name, description, inherit_tools, input_schema\n    HAVING MAX(\"version\") IS NOT NULL  -- This ensures we only proceed if a version exists\n)\nINSERT INTO tasks (\n    \"version\",\n    developer_id,            -- $1\n    canonical_name,          -- $2\n    task_id,                -- $3\n    agent_id,               -- $4\n    metadata,               -- $5\n    name,                   -- $6\n    description,            -- $7\n    inherit_tools,          -- $8\n    input_schema           -- $9\n)\nSELECT\n    current_version + 1,                                    -- version\n    $1,                                                    -- developer_id\n    COALESCE($2, existing_canonical_name),                 -- canonical_name\n    $3,                                                    -- task_id\n    $4,                                                    -- agent_id\n    COALESCE($5::jsonb, existing_metadata),               -- metadata\n    COALESCE($6, existing_name),                          -- name\n    COALESCE($7, existing_description),                    -- description\n    COALESCE($8, existing_inherit_tools),                 -- inherit_tools\n    COALESCE($9::jsonb, existing_input_schema)            -- input_schema\nFROM current_version\nRETURNING *;\n\"\"\"\n\n# When main is None - just copy existing workflows with new version\ncopy_workflows_query = \"\"\"\nWITH current_version AS (\n    SELECT MAX(version) - 1 as current_version\n    FROM tasks\n    WHERE developer_id = $1 AND task_id = $2\n)\nINSERT INTO workflows (\n    developer_id,\n    task_id,\n    version,\n    name,\n    step_idx,\n    step_type,\n    step_definition\n)\nSELECT\n    developer_id,\n    task_id,\n    (SELECT current_version + 1 FROM current_version),  -- new version\n    name,\n    step_idx,\n    step_type,\n    step_definition\nFROM workflows\nWHERE developer_id = $1\nAND task_id = $2\nAND version = (SELECT current_version FROM current_version)\n\"\"\"\n\n# When main is provided - create new workflows (existing query)\nnew_workflows_query = \"\"\"\nWITH current_version AS (\n    SELECT COALESCE(MAX(version), 0) - 1 as next_version\n    FROM tasks\n    WHERE developer_id = $1 AND task_id = $2\n)\nINSERT INTO workflows (\n    developer_id,\n    task_id,\n    version,\n    name,\n    step_idx,\n    step_type,\n    step_definition\n)\nSELECT\n    $1,                 -- developer_id\n    $2,                 -- task_id\n    next_version + 1,   -- version\n    $3,                 -- name\n    $4,                 -- step_idx\n    $5,                 -- step_type\n    $6                  -- step_definition\nFROM current_version\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"task\", [\"patch\"]))\n@wrap_in_class(\n    spec_to_task,\n    one=True,\n)\n@query_metrics(\"patch_task\")\n@pg_query\n@beartype\nasync def patch_task(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n    agent_id: UUID,\n    data: PatchTaskRequest,\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"\n    Updates a task and its associated workflows with version control.\n    Only updates the fields that are provided in the request.\n\n    Parameters:\n        developer_id (UUID): The unique identifier of the developer.\n        task_id (UUID): The unique identifier of the task to update.\n        data (PatchTaskRequest): The partial update data.\n        agent_id (UUID): The unique identifier of the agent.\n    Returns:\n        list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]: List of queries to execute.\n    \"\"\"\n    # Parameters for patching the task\n\n    patch_task_params = [\n        developer_id,  # $1\n        data.canonical_name,  # $2\n        task_id,  # $3\n        agent_id,  # $4\n        data.metadata or None,  # $5\n        data.name or None,  # $6\n        data.description or None,  # $7\n        data.inherit_tools,  # $8\n        data.input_schema,  # $9\n    ]\n\n    if data.main is None:\n        workflow_query = copy_workflows_query\n        workflow_params = [[developer_id, task_id]]  # Only need these params\n    else:\n        workflow_query = new_workflows_query\n        workflow_params = []\n        workflows_spec = task_to_spec(data).model_dump(mode=\"json\")\n        for workflow in workflows_spec.get(\"workflows\", []):\n            workflow_name = workflow.get(\"name\")\n            steps = workflow.get(\"steps\", [])\n            for step_idx, step in enumerate(steps):\n                workflow_params.append([\n                    developer_id,  # $1\n                    task_id,  # $2\n                    workflow_name,  # $3\n                    step_idx,  # $4\n                    step[\"kind_\"],  # $5\n                    step,  # $6\n                ])\n\n    return [\n        (\n            patch_task_query,\n            patch_task_params,\n            \"fetchrow\",\n        ),\n        (\n            workflow_query,\n            workflow_params,\n            \"fetchmany\",\n        ),\n        (\n            get_task_query,\n            [developer_id, task_id],\n            \"fetchrow\",\n        ),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tasks/update_task.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import UpdateTaskRequest\nfrom ...common.protocol.models import spec_to_task, task_to_spec\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\nfrom .get_task import get_task_query\n\n# Update task query using INSERT with version increment\nupdate_task_query = \"\"\"\nWITH current_version AS (\n    SELECT MAX(\"version\") as current_version,\n           canonical_name as existing_canonical_name\n    FROM tasks\n    WHERE developer_id = $1\n      AND task_id = $3\n    GROUP BY task_id, canonical_name\n    HAVING MAX(\"version\") IS NOT NULL  -- This ensures we only proceed if a version exists\n)\nINSERT INTO tasks (\n    \"version\",\n    developer_id,            -- $1\n    canonical_name,          -- $2\n    task_id,                 -- $3\n    agent_id,                -- $4\n    metadata,                -- $5\n    name,                    -- $6\n    description,             -- $7\n    inherit_tools,           -- $8\n    input_schema             -- $9\n)\nSELECT\n    current_version + 1,           -- version\n    $1,                           -- developer_id\n    COALESCE($2, existing_canonical_name),  -- canonical_name\n    $3,                           -- task_id\n    $4,                           -- agent_id\n    $5::jsonb,                    -- metadata\n    $6,                           -- name\n    $7,                           -- description\n    $8,                           -- inherit_tools\n    $9::jsonb                     -- input_schema\nFROM current_version\nRETURNING *;\n\"\"\"\n\n# Update workflows query to use UPDATE instead of INSERT\nworkflows_query = \"\"\"\nWITH version AS (\n    SELECT COALESCE(MAX(version), 0) as current_version\n    FROM tasks\n    WHERE developer_id = $1 AND task_id = $2\n)\nINSERT INTO workflows (\n    developer_id,\n    task_id,\n    version,\n    name,\n    step_idx,\n    step_type,\n    step_definition\n)\nSELECT\n    $1,                 -- developer_id\n    $2,                 -- task_id\n    current_version,    -- version (from CTE)\n    $3,                 -- name\n    $4,                 -- step_idx\n    $5,                 -- step_type\n    $6                  -- step_definition\nFROM version;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"task\", [\"update\"]))\n@wrap_in_class(\n    spec_to_task,\n    one=True,\n)\n@query_metrics(\"update_task\")\n@pg_query\n@beartype\nasync def update_task(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n    agent_id: UUID,\n    data: UpdateTaskRequest,\n) -> list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]:\n    \"\"\"\n    Updates a task and its associated workflows with version control.\n\n    Parameters:\n        developer_id (UUID): The unique identifier of the developer.\n        task_id (UUID): The unique identifier of the task to update.\n        data (UpdateTaskRequest): The update data.\n        agent_id (UUID): The unique identifier of the agent.\n    Returns:\n        list[tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]]: List of queries to execute.\n    \"\"\"\n    # Parameters for updating the task\n    update_task_params = [\n        developer_id,  # $1\n        data.canonical_name,  # $2\n        task_id,  # $3\n        agent_id,  # $4\n        data.metadata or {},  # $5\n        data.name,  # $6\n        data.description,  # $7\n        data.inherit_tools,  # $8\n        data.input_schema or {},  # $9\n    ]\n\n    # Generate workflows from task data\n    workflows_spec = task_to_spec(data).model_dump(mode=\"json\")\n    workflow_params = []\n    for workflow in workflows_spec.get(\"workflows\", []):\n        workflow_name = workflow.get(\"name\")\n        steps = workflow.get(\"steps\", [])\n        for step_idx, step in enumerate(steps):\n            workflow_params.append([\n                developer_id,  # $1\n                task_id,  # $2\n                workflow_name,  # $3\n                step_idx,  # $4\n                step[\"kind_\"],  # $5\n                step,  # $6\n            ])\n\n    return [\n        (\n            update_task_query,\n            update_task_params,\n            \"fetchrow\",\n        ),\n        (\n            workflows_query,\n            workflow_params,\n            \"fetchmany\",\n        ),\n        (\n            get_task_query,\n            [developer_id, task_id],\n            \"fetchrow\",\n        ),\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tools/__init__.py",
    "content": "\"\"\"\nThe `tools` module provides functionalities for managing tools within the system. It includes operations essential for the lifecycle management of tools and their properties, such as:\n\n- Creating tools: Handled by `create_tools.py`, which manages the creation of new tools, including single and multiple tools.\n- Deleting tools: Facilitated by `delete_tools.py`, offering functionality to delete tools by their unique identifiers.\n- Embedding tools: Managed by `embed_tools.py`, which handles the embedding of tools with specific properties or data.\n- Listing tools: Provided by `list_tools.py`, offering the capability to list tools, potentially with filtering and pagination.\n\nThis module is crucial for the effective management and utilization of tools in the application, ensuring that tools can be created, managed, and utilized efficiently.\n\"\"\"\n\nfrom .create_tools import create_tools\nfrom .delete_tool import delete_tool\nfrom .get_tool import get_tool\nfrom .get_tool_args_from_metadata import get_tool_args_from_metadata\nfrom .list_tools import list_tools\nfrom .patch_tool import patch_tool\nfrom .update_tool import update_tool\n\n__all__ = [\n    \"create_tools\",\n    \"delete_tool\",\n    \"get_tool\",\n    \"get_tool_args_from_metadata\",\n    \"list_tools\",\n    \"patch_tool\",\n    \"update_tool\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tools/create_tools.py",
    "content": "\"\"\"This module contains functions for creating tools in the PostgreSQL database.\"\"\"\n\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateToolRequest, Tool\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for creating tools\ntools_query = \"\"\"INSERT INTO tools\n(\n    developer_id,\n    agent_id,\n    tool_id,\n    type,\n    name,\n    spec,\n    description\n)\nSELECT\n\t$1,\n    $2,\n    $3,\n    $4,\n    $5,\n    $6,\n    $7\nWHERE NOT EXISTS (\n\tSELECT null FROM tools\n\tWHERE (agent_id, name) = ($2, $5)\n)\nRETURNING *\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"tool\", [\"create\"]))\n@wrap_in_class(\n    Tool,\n    transform=lambda d: {\n        \"id\": d.pop(\"tool_id\"),\n        d[\"type\"]: d.pop(\"spec\"),\n        **d,\n    },\n)\n@query_metrics(\"create_tools\")\n@pg_query\n@beartype\nasync def create_tools(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    data: list[CreateToolRequest],\n) -> tuple[str, list, str]:\n    \"\"\"\n    Constructs an SQL query for inserting tool records into the 'tools' relation in the PostgreSQL database.\n\n    Parameters:\n        developer_id (UUID): The unique identifier for the developer.\n        agent_id (UUID): The unique identifier for the agent.\n        data (list[CreateToolRequest]): A list of function definitions to be inserted.\n\n    Returns:\n        list[Tool]\n    \"\"\"\n\n    assert all(\n        getattr(tool, tool.type) is not None for tool in data if hasattr(tool, tool.type)\n    ), \"Tool spec must be passed\"\n\n    tools_data = [\n        [\n            developer_id,\n            str(agent_id),\n            str(uuid7()),\n            tool.type,\n            tool.name,\n            getattr(tool, tool.type) and getattr(tool, tool.type).model_dump(mode=\"json\"),\n            tool.description if hasattr(tool, \"description\") else None,\n        ]\n        for tool in data\n    ]\n\n    return (\n        tools_query,\n        tools_data,\n        \"fetchmany\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tools/delete_tool.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for deleting a tool\ntools_query = \"\"\"\nDELETE FROM\n    tools\nWHERE\n    developer_id = $1 AND\n    agent_id = $2 AND\n    tool_id = $3\nRETURNING *\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"tool\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {\"id\": d[\"tool_id\"], \"deleted_at\": utcnow(), \"jobs\": [], **d},\n)\n@pg_query\n@beartype\nasync def delete_tool(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    tool_id: UUID,\n) -> tuple[str, list]:\n    developer_id = str(developer_id)\n    agent_id = str(agent_id)\n    tool_id = str(tool_id)\n\n    return (\n        tools_query,\n        [\n            developer_id,\n            agent_id,\n            tool_id,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tools/get_tool.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Tool\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for getting a tool\ntools_query = \"\"\"\nSELECT * FROM tools\nWHERE\n    developer_id = $1 AND\n    agent_id = $2 AND\n    tool_id = $3\nLIMIT 1\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"tool\", [\"get\"]))\n@wrap_in_class(\n    Tool,\n    transform=lambda d: {\n        \"id\": d.pop(\"tool_id\"),\n        d[\"type\"]: d.pop(\"spec\"),\n        **d,\n    },\n    one=True,\n)\n@pg_query\n@beartype\nasync def get_tool(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    tool_id: UUID,\n) -> tuple[str, list]:\n    developer_id = str(developer_id)\n    agent_id = str(agent_id)\n    tool_id = str(tool_id)\n\n    return (\n        tools_query,\n        [\n            developer_id,\n            agent_id,\n            tool_id,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tools/get_tool_args_from_metadata.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for getting tool args from metadata\ntools_args_for_task_query = \"\"\"\nSELECT COALESCE(agents_md || tasks_md, agents_md, tasks_md, '{}') as values FROM (\n    SELECT\n        CASE WHEN $3 = 'x-integrations-args' then metadata->'x-integrations-args'\n        WHEN $3 = 'x-api_call-args' then metadata->'x-api_call-args'\n        WHEN $3 = 'x-integrations-setup' then metadata->'x-integrations-setup'\n        WHEN $3 = 'x-api_call-setup' then metadata->'x-api_call-setup' END AS agents_md\n    FROM agents\n    WHERE agent_id = $1 AND developer_id = $4 LIMIT 1\n) AS agents_md,\n(\n    SELECT\n        CASE WHEN $3 = 'x-integrations-args' then metadata->'x-integrations-args'\n        WHEN $3 = 'x-api_call-args' then metadata->'x-api_call-args'\n        WHEN $3 = 'x-integrations-setup' then metadata->'x-integrations-setup'\n        WHEN $3 = 'x-api_call-setup' then metadata->'x-api_call-setup' END AS tasks_md\n    FROM tasks\n    WHERE task_id = $2 AND developer_id = $4 LIMIT 1\n) AS tasks_md\"\"\"\n\n# Define the raw SQL query for getting tool args from metadata for a session\ntool_args_for_session_query = \"\"\"\nSELECT COALESCE(agents_md || sessions_md, agents_md, sessions_md, '{}') as values FROM (\n    SELECT\n        CASE WHEN $3 = 'x-integrations-args' then metadata->'x-integrations-args'\n        WHEN $3 = 'x-api_call-args' then metadata->'x-api_call-args'\n        WHEN $3 = 'x-integrations-setup' then metadata->'x-integrations-setup'\n        WHEN $3 = 'x-api_call-setup' then metadata->'x-api_call-setup' END AS agents_md\n    FROM agents\n    WHERE agent_id = $1 AND developer_id = $4 LIMIT 1\n) AS agents_md,\n(\n    SELECT\n        CASE WHEN $3 = 'x-integrations-args' then metadata->'x-integrations-args'\n        WHEN $3 = 'x-api_call-args' then metadata->'x-api_call-args'\n        WHEN $3 = 'x-integrations-setup' then metadata->'x-integrations-setup'\n        WHEN $3 = 'x-api_call-setup' then metadata->'x-api_call-setup' END AS sessions_md\n    FROM sessions\n    WHERE session_id = $2 AND developer_id = $4 LIMIT 1\n) AS sessions_md\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"tool_metadata\", [\"get\"]))\n@wrap_in_class(dict, transform=lambda x: x[\"values\"], one=True)\n@pg_query\n@beartype\nasync def get_tool_args_from_metadata(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    session_id: UUID | None = None,\n    task_id: UUID | None = None,\n    tool_type: Literal[\"integration\", \"api_call\"] = \"integration\",\n    arg_type: Literal[\"args\", \"setup\", \"headers\"] = \"args\",\n) -> tuple[str, list]:\n    match session_id, task_id:\n        case (None, task_id) if task_id is not None:\n            return (\n                tools_args_for_task_query,\n                [\n                    agent_id,\n                    task_id,\n                    f\"x-{tool_type}-{arg_type}\",\n                    developer_id,\n                ],\n            )\n\n        case (session_id, None) if session_id is not None:\n            return (\n                tool_args_for_session_query,\n                [agent_id, session_id, f\"x-{tool_type}-{arg_type}\", developer_id],\n            )\n\n        case (_, _):\n            msg = \"Either session_id or task_id must be provided\"\n            raise ValueError(msg)\n    # AIDEV-NOTE: exhaustive match; this point should be unreachable\n    msg = \"Unreachable code in get_tool_args_from_metadata\"\n    raise RuntimeError(msg)\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tools/list_tools.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Tool\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for listing tools\ntools_query = \"\"\"\nSELECT * FROM tools\nWHERE\n    developer_id = $1 AND\n    agent_id = $2\nORDER BY\n    CASE WHEN $5 = 'created_at' AND $6 = 'desc' THEN tools.created_at END DESC NULLS LAST,\n    CASE WHEN $5 = 'created_at' AND $6 = 'asc' THEN tools.created_at END ASC NULLS LAST,\n    CASE WHEN $5 = 'updated_at' AND $6 = 'desc' THEN tools.updated_at END DESC NULLS LAST,\n    CASE WHEN $5 = 'updated_at' AND $6 = 'asc' THEN tools.updated_at END ASC NULLS LAST\nLIMIT $3 OFFSET $4;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"tool\", [\"list\"]))\n@wrap_in_class(\n    Tool,\n    transform=lambda d: {\n        d[\"type\"]: {\n            **d.pop(\"spec\"),\n            \"name\": d[\"name\"],\n            \"description\": d[\"description\"],\n        },\n        \"id\": d.pop(\"tool_id\"),\n        **d,\n    },\n)\n@pg_query\n@beartype\nasync def list_tools(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> tuple[str, list]:\n    developer_id = str(developer_id)\n    agent_id = str(agent_id)\n\n    return (\n        tools_query,\n        [\n            developer_id,\n            agent_id,\n            limit,\n            offset,\n            sort_by,\n            direction,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tools/patch_tool.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import PatchToolRequest, Tool\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for patching a tool\ntools_query = \"\"\"\nWITH updated_tools AS (\n    UPDATE tools\n    SET\n        type = COALESCE($4, type),\n        name = COALESCE($5, name),\n        description = COALESCE($6, description),\n        spec = COALESCE($7, spec)\n    WHERE\n        developer_id = $1 AND\n        agent_id = $2 AND\n        tool_id = $3\n    RETURNING *\n)\nSELECT * FROM updated_tools;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"tool\", [\"patch\"]))\n@wrap_in_class(\n    Tool,\n    one=True,\n    transform=lambda d: {\"id\": d[\"tool_id\"], \"jobs\": [], **d},\n)\n@query_metrics(\"patch_tool\")\n@pg_query\n@beartype\nasync def patch_tool(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    tool_id: UUID,\n    data: PatchToolRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Updates the tool information for a given agent and tool ID in the 'PostgreSQL' database.\n\n    Parameters:\n        agent_id (UUID): The unique identifier of the agent.\n        tool_id (UUID): The unique identifier of the tool to be updated.\n        data (PatchToolRequest): The request payload containing the updated tool information.\n    Returns:\n        ResourceUpdatedResponse: The updated tool data.\n    \"\"\"\n\n    developer_id = str(developer_id)\n    agent_id = str(agent_id)\n    tool_id = str(tool_id)\n\n    # Extract the tool data from the payload\n    patch_data = data.model_dump(exclude_none=True)\n\n    # Assert that only one of the tool type fields is present\n    tool_specs = [\n        (tool_type, patch_data.get(tool_type))\n        for tool_type in [\"function\", \"integration\", \"system\", \"api_call\"]\n        if patch_data.get(tool_type) is not None\n    ]\n\n    assert len(tool_specs) <= 1, \"Invalid tool update\"\n    tool_type, tool_spec = tool_specs[0] if tool_specs else (None, None)\n\n    if tool_type is not None:\n        patch_data[\"type\"] = patch_data.get(\"type\", tool_type)\n        assert patch_data[\"type\"] == tool_type, \"Invalid tool update\"\n\n    tool_spec = tool_spec or {}\n    if tool_spec:\n        del patch_data[tool_type]\n\n    return (\n        tools_query,\n        [\n            developer_id,\n            agent_id,\n            tool_id,\n            tool_type,\n            data.name,\n            data.description,\n            tool_spec,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/tools/update_tool.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import Tool, UpdateToolRequest\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for updating a tool\ntools_query = \"\"\"\nUPDATE tools\nSET\n    type = $4,\n    name = $5,\n    description = $6,\n    spec = $7\nWHERE\n    developer_id = $1 AND\n    agent_id = $2 AND\n    tool_id = $3\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"tool\", [\"update\"]))\n@wrap_in_class(\n    Tool,\n    one=True,\n    transform=lambda d: {\"id\": d[\"tool_id\"], \"jobs\": [], **d},\n)\n@query_metrics(\"update_tool\")\n@pg_query\n@beartype\nasync def update_tool(\n    *,\n    developer_id: UUID,\n    agent_id: UUID,\n    tool_id: UUID,\n    data: UpdateToolRequest,\n    **kwargs,\n) -> tuple[str, list]:\n    developer_id = str(developer_id)\n    agent_id = str(agent_id)\n    tool_id = str(tool_id)\n\n    # Extract the tool data from the payload\n    update_data = data.model_dump(exclude_none=True)\n\n    # Assert that only one of the tool type fields is present\n    tool_specs = [\n        (tool_type, update_data.get(tool_type))\n        for tool_type in [\"function\", \"integration\", \"system\", \"api_call\"]\n        if update_data.get(tool_type) is not None\n    ]\n\n    assert len(tool_specs) <= 1, \"Invalid tool update\"\n    tool_type, tool_spec = tool_specs[0] if tool_specs else (None, None)\n\n    if tool_type is not None:\n        update_data[\"type\"] = update_data.get(\"type\", tool_type)\n        assert update_data[\"type\"] == tool_type, \"Invalid tool update\"\n\n    update_data[\"spec\"] = tool_spec\n    del update_data[tool_type]\n\n    return (\n        tools_query,\n        [\n            developer_id,\n            agent_id,\n            tool_id,\n            tool_type,\n            data.name,\n            data.description,\n            tool_spec,\n        ],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/usage/__init__.py",
    "content": "\"\"\"\nThe `usage` module within the `queries` package provides functionality for tracking token usage\nand costs associated with LLM API calls. This includes:\n\n- Recording prompt and completion tokens\n- Calculating costs based on model pricing\n- Storing usage data with developer attribution\n- Supporting both standard and custom API usage\n\nEach function in this module constructs and executes SQL queries for database operations\nrelated to usage tracking and reporting.\n\"\"\"\n\nfrom .create_usage_record import create_usage_record\nfrom .get_user_cost import get_usage_cost\n\n__all__ = [\n    \"create_usage_record\",\n    \"get_usage_cost\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/usage/create_usage_record.py",
    "content": "\"\"\"\nThis module contains functionality for creating usage records in the PostgreSQL database.\nIt tracks token usage and costs for LLM API calls.\n\"\"\"\n\nfrom typing import Any\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom litellm import cost_per_token, model_cost\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...env import llama_model_multiplier\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions\n\nFALLBACK_PRICING = {\n    # Meta Llama models\n    \"meta-llama/llama-4-scout\": {\n        \"api_request\": 0.08 / 1000000,\n        \"api_response\": 0.45 / 1000000,\n    },\n    \"meta-llama/llama-4-maverick\": {\n        \"api_request\": 0.19 / 1000000,\n        \"api_response\": 0.85 / 1000000,\n    },\n    \"meta-llama/llama-4-maverick:free\": {\n        \"api_request\": 0.0 / 1000000,\n        \"api_response\": 0.0 / 1000000,\n    },\n    # Qwen model\n    \"qwen/qwen-2.5-72b-instruct\": {\n        \"api_request\": 0.7 / 1000000,\n        \"api_response\": 0.7 / 1000000,\n    },\n    # Sao10k model\n    \"sao10k/l3.3-euryale-70b\": {\n        \"api_request\": 0.7 / 1000000,\n        \"api_response\": 0.8 / 1000000,\n    },\n    \"sao10k/l3.1-euryale-70b\": {\n        \"api_request\": 0.7 / 1000000,\n        \"api_response\": 0.8 / 1000000,\n    },\n    # eva-unit-01 model\n    \"openrouter/eva-unit-01/eva-llama-3.33-70b\": {\n        \"api_request\": 4 / 1000000,\n        \"api_response\": 6 / 1000000,\n    },\n    \"openrouter/eva-unit-01/eva-qwen-2.5-72b\": {\n        \"api_request\": 0.9 / 1000000,\n        \"api_response\": 1.2 / 1000000,\n    },\n    # mistral-large-2411 model\n    \"openrouter/mistralai/mistral-large-2411\": {\n        \"api_request\": 2 / 1000000,\n        \"api_response\": 6 / 1000000,\n    },\n}\n\n# Calculate average of non-zero input costs\ninput_costs_litellm = [\n    model_cost[model].get(\"input_cost_per_token\", 0)\n    for model in model_cost\n    if model_cost[model].get(\"input_cost_per_token\", 0) > 0\n]\ninput_costs_fallback = [\n    pricing[\"api_request\"]\n    for pricing in FALLBACK_PRICING.values()\n    if pricing[\"api_request\"] > 0\n]\ncombined_input_costs = input_costs_litellm + input_costs_fallback\nAVG_INPUT_COST_PER_TOKEN = (\n    sum(combined_input_costs) / len(combined_input_costs) if combined_input_costs else 0\n)\n\n# Calculate average of non-zero output costs\noutput_costs_litellm = [\n    model_cost[model].get(\"output_cost_per_token\", 0)\n    for model in model_cost\n    if model_cost[model].get(\"output_cost_per_token\", 0) > 0\n]\noutput_costs_fallback = [\n    pricing[\"api_response\"]\n    for pricing in FALLBACK_PRICING.values()\n    if pricing[\"api_response\"] > 0\n]\ncombined_output_costs = output_costs_litellm + output_costs_fallback\nAVG_OUTPUT_COST_PER_TOKEN = (\n    sum(combined_output_costs) / len(combined_output_costs) if combined_output_costs else 0\n)\n\n# Define the raw SQL query\nusage_query = \"\"\"\nINSERT INTO usage (\n    developer_id,\n    model,\n    prompt_tokens,\n    completion_tokens,\n    cost,\n    estimated,\n    custom_api_used,\n    metadata\n)\nVALUES (\n    $1, -- developer_id\n    $2, -- model\n    $3, -- prompt_tokens\n    $4, -- completion_tokens\n    $5, -- cost\n    $6, -- estimated\n    $7, -- custom_api_used\n    $8  -- metadata\n)\nRETURNING *;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"usage\", [\"create\"]))\n@query_metrics(\"create_usage_record\")\n@pg_query\n@beartype\nasync def create_usage_record(\n    *,\n    developer_id: UUID,\n    model: str,\n    prompt_tokens: int,\n    completion_tokens: int,\n    custom_api_used: bool = False,\n    estimated: bool = False,\n    metadata: dict[str, Any] | None = None,\n    is_llama_model: bool = False,\n) -> tuple[str, list]:\n    \"\"\"\n    Creates a usage record to track token usage and costs.\n\n    Parameters:\n        developer_id (UUID): The unique identifier for the developer.\n        model (str): The model used for the API call.\n        prompt_tokens (int): Number of tokens in the prompt.\n        completion_tokens (int): Number of tokens in the completion.\n        custom_api_used (bool): Whether a custom API key was used.\n        estimated (bool): Whether the token count is estimated.\n        metadata (dict | None): Additional metadata about the usage.\n        is_llama_model (bool): Whether the model is a Llama model.\n    Returns:\n        tuple[str, list]: SQL query and parameters for creating the usage record.\n    \"\"\"\n    # Calculate cost based on token usage\n    # For custom API keys, we still track usage but mark it as such\n    total_cost = 0.0\n\n    try:\n        prompt_cost, completion_cost = cost_per_token(\n            model, prompt_tokens=prompt_tokens, completion_tokens=completion_tokens\n        )\n        total_cost = prompt_cost + completion_cost\n    except Exception:\n        estimated = True\n\n        if model in FALLBACK_PRICING:\n            total_cost = (\n                FALLBACK_PRICING[model][\"api_request\"] * prompt_tokens\n                + FALLBACK_PRICING[model][\"api_response\"] * completion_tokens\n            )\n        else:\n            total_cost = (\n                AVG_INPUT_COST_PER_TOKEN * prompt_tokens\n                + AVG_OUTPUT_COST_PER_TOKEN * completion_tokens\n            )\n            print(f\"No fallback pricing found for model {model}, using avg costs: {total_cost}\")\n\n    if is_llama_model:\n        total_cost = total_cost * llama_model_multiplier\n\n    params = [\n        developer_id,\n        model,\n        prompt_tokens,\n        completion_tokens,\n        total_cost,\n        estimated,\n        custom_api_used,\n        metadata or {},\n    ]\n\n    return (\n        usage_query,\n        params,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/usage/get_user_cost.py",
    "content": "\"\"\"\nThis module contains functionality for creating usage records in the PostgreSQL database.\nIt tracks token usage and costs for LLM API calls.\n\"\"\"\n\nfrom typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\nusage_query = \"\"\"\nSELECT\n    COALESCE(developer_id, $1) as developer_id,\n    COALESCE(active, TRUE) as active,\n    COALESCE(tags, '{}') as tags,\n    COALESCE(monthly_cost, 0.0) AS cost,\n    COALESCE(bucket_start, NOW()) AS month\nFROM (\n    SELECT developer_id, active, tags, monthly_cost, bucket_start\n    FROM developer_cost_monthly\n    WHERE developer_id = $1\n    ORDER BY bucket_start DESC\n    LIMIT 1\n) as subq\nUNION ALL\nSELECT\n    $1 as developer_id,\n    TRUE as active,\n    '{}' as tags,\n    0.0 AS cost,\n    NOW() AS month\nWHERE NOT EXISTS (\n    SELECT 1\n    FROM developer_cost_monthly\n    WHERE developer_id = $1\n)\nLIMIT 1;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"usage\", [\"get\"]))\n@wrap_in_class(\n    dict,\n    one=True,\n)\n@query_metrics(\"get_usage_cost\")\n@pg_query\n@beartype\nasync def get_usage_cost(\n    *,\n    developer_id: UUID,\n) -> tuple[str, list, Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]]:\n    \"\"\"\n    Get the cost of a developer's usage.\n\n    Parameters:\n        developer_id (UUID): The unique identifier for the developer.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters for creating the usage record.\n    \"\"\"\n\n    return (\n        usage_query,\n        [\n            developer_id,\n        ],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/users/__init__.py",
    "content": "\"\"\"\nThe `user` module within the `queries` package provides SQL query functions for managing users\nin the TimescaleDB database. This includes operations for:\n\n- Creating new users\n- Updating existing users\n- Retrieving user details\n- Listing users with filtering and pagination\n- Deleting users\n\"\"\"\n\nfrom .create_or_update_user import create_or_update_user\nfrom .create_user import create_user\nfrom .delete_user import delete_user\nfrom .get_user import get_user\nfrom .list_users import list_users\nfrom .patch_user import patch_user\nfrom .update_user import update_user\n\n__all__ = [\n    \"create_or_update_user\",\n    \"create_user\",\n    \"delete_user\",\n    \"get_user\",\n    \"list_users\",\n    \"patch_user\",\n    \"update_user\",\n]\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/users/create_or_update_user.py",
    "content": "from uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import CreateOrUpdateUserRequest, User\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..projects.project_exists import project_exists\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query for creating or updating a user\nuser_query = \"\"\"\nWITH proj AS (\n    -- Find project ID by canonical name\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $6\n), user_op AS (\n    INSERT INTO users (\n        developer_id,\n        user_id,\n        name,\n        about,\n        metadata\n    )\n    VALUES (\n        $1, -- developer_id\n        $2, -- user_id\n        $3, -- name\n        $4, -- about\n        $5::jsonb -- metadata\n    )\n    ON CONFLICT (developer_id, user_id) DO UPDATE SET\n        name = EXCLUDED.name,\n        about = EXCLUDED.about,\n        metadata = EXCLUDED.metadata\n    RETURNING *\n), project_association AS (\n    -- Create or update project association\n    INSERT INTO project_users (\n        project_id,\n        developer_id,\n        user_id\n    )\n    SELECT\n        p.project_id,\n        $1,\n        $2\n    FROM proj p\n    WHERE p.project_id IS NOT NULL\n    ON CONFLICT (project_id, user_id) DO NOTHING\n    RETURNING 1\n)\nSELECT\n    u.*,\n    p.canonical_name AS project\nFROM user_op u\nLEFT JOIN proj p ON TRUE;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"user\", [\"create_or_update\"]))\n@wrap_in_class(\n    User,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"user_id\"],\n    },\n)\n@query_metrics(\"create_or_update_user\")\n@pg_query\n@beartype\nasync def create_or_update_user_query(\n    *,\n    developer_id: UUID,\n    user_id: UUID,\n    data: CreateOrUpdateUserRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs an SQL query to create or update a user.\n\n    Args:\n        developer_id (UUID): The UUID of the developer.\n        user_id (UUID): The UUID of the user.\n        data (CreateOrUpdateUserRequest): The user data to insert or update.\n\n    Returns:\n        tuple[str, list]: SQL query and parameters.\n\n    Raises:\n        HTTPException: If developer doesn't exist (404) or on unique constraint violation (409)\n    \"\"\"\n\n    params = [\n        developer_id,  # $1\n        user_id,  # $2\n        data.name,  # $3\n        data.about,  # $4\n        data.metadata or {},  # $5\n        data.project or \"default\",  # $6\n    ]\n\n    return (\n        user_query,\n        params,\n    )\n\n\nasync def create_or_update_user(\n    *,\n    developer_id: UUID,\n    user_id: UUID,\n    data: CreateOrUpdateUserRequest,\n    connection_pool: asyncpg.Pool | None = None,\n) -> User:\n    # Get project (default if not specified)\n    project_canonical_name = data.project or \"default\"\n\n    # Check if the project exists\n    project_exists_result = await project_exists(\n        developer_id, project_canonical_name, connection_pool=connection_pool\n    )\n\n    if not project_exists_result[0][\"project_exists\"]:\n        raise HTTPException(\n            status_code=404, detail=f\"Project '{project_canonical_name}' not found\"\n        )\n\n    return await create_or_update_user_query(\n        developer_id=developer_id,\n        user_id=user_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/users/create_user.py",
    "content": "from uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import CreateUserRequest, User\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..projects.project_exists import project_exists\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query outside the function\nuser_query = \"\"\"\nWITH new_user AS (\n    INSERT INTO users (\n        developer_id,\n        user_id,\n        name,\n        about,\n        metadata\n    )\n    VALUES (\n        $1, -- developer_id\n        $2, -- user_id\n        $3, -- name\n        $4, -- about\n        $5::jsonb -- metadata\n    )\n    RETURNING *\n), proj AS (\n    -- Find project ID by canonical name\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $6\n), project_association AS (\n    -- Create association in project_users table\n    INSERT INTO project_users (\n        project_id,\n        developer_id,\n        user_id\n    )\n    SELECT\n        p.project_id,\n        $1,\n        $2\n    FROM proj p\n    ON CONFLICT (project_id, user_id) DO NOTHING\n    RETURNING 1\n)\nSELECT\n    u.*,\n    p.canonical_name AS project\nFROM new_user u\nLEFT JOIN proj p ON TRUE;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"user\", [\"create\"]))\n@wrap_in_class(\n    User,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"user_id\"],\n    },\n)\n@query_metrics(\"create_user\")\n@pg_query\n@beartype\nasync def create_user_query(\n    *,\n    developer_id: UUID,\n    user_id: UUID | None = None,\n    data: CreateUserRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs the SQL query to create a new user.\n\n    Args:\n        developer_id (UUID): The UUID of the developer creating the user.\n        user_id (UUID, optional): The UUID for the new user. If None, one will be generated.\n        data (CreateUserRequest): The user data to insert.\n\n    Returns:\n        tuple[str, list]: A tuple containing the SQL query and its parameters.\n    \"\"\"\n\n    return (\n        user_query,\n        [\n            developer_id,  # $1\n            user_id or uuid7(),  # $2\n            data.name,  # $3\n            data.about,  # $4\n            data.metadata or {},  # $5\n            data.project or \"default\",  # $6\n        ],\n    )\n\n\nasync def create_user(\n    *,\n    developer_id: UUID,\n    user_id: UUID | None = None,\n    data: CreateUserRequest,\n    connection_pool: asyncpg.Pool | None = None,\n) -> User:\n    # Get project (default if not specified)\n    project_canonical_name = data.project or \"default\"\n\n    # Check if the project exists\n    project_exists_result = await project_exists(\n        developer_id,\n        project_canonical_name,\n        connection_pool=connection_pool,\n    )\n\n    if not project_exists_result[0][\"project_exists\"]:\n        raise HTTPException(\n            status_code=404, detail=f\"Project '{project_canonical_name}' not found\"\n        )\n\n    return await create_user_query(\n        developer_id=developer_id,\n        user_id=user_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/users/delete_user.py",
    "content": "from uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...common.utils.datetime import utcnow\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query outside the function\ndelete_query = \"\"\"\nWITH deleted_file_owners AS (\n    DELETE FROM file_owners\n    WHERE developer_id = $1\n    AND owner_type = 'user'\n    AND owner_id = $2\n),\ndeleted_doc_owners AS (\n    DELETE FROM doc_owners\n    WHERE developer_id = $1\n    AND owner_type = 'user'\n    AND owner_id = $2\n),\ndeleted_files AS (\n    DELETE FROM files\n    WHERE developer_id = $1\n    AND file_id IN (\n        SELECT file_id FROM file_owners\n        WHERE developer_id = $1\n        AND owner_type = 'user'\n        AND owner_id = $2\n    )\n),\ndeleted_docs AS (\n    DELETE FROM docs\n    WHERE developer_id = $1\n    AND doc_id IN (\n        SELECT doc_id FROM doc_owners\n        WHERE developer_id = $1\n        AND owner_type = 'user'\n        AND owner_id = $2\n    )\n)\nDELETE FROM users\nWHERE developer_id = $1 AND user_id = $2\nRETURNING user_id, developer_id;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"user\", [\"delete\"]))\n@wrap_in_class(\n    ResourceDeletedResponse,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"user_id\"],\n        \"deleted_at\": utcnow(),\n        \"jobs\": [],\n    },\n)\n@pg_query\n@beartype\nasync def delete_user(*, developer_id: UUID, user_id: UUID) -> tuple[str, list]:\n    \"\"\"\n    Constructs optimized SQL query to delete a user and related data.\n    Uses primary key for efficient deletion.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        user_id (UUID): The user's UUID\n\n    Returns:\n        tuple[str, list]: SQL query and parameters\n    \"\"\"\n\n    return (\n        delete_query,\n        [developer_id, user_id],\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/users/get_user.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\n\nfrom ...autogen.openapi_model import User\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query outside the function\nuser_query = \"\"\"\nSELECT\n    u.user_id as id, -- user_id\n    u.developer_id, -- developer_id\n    u.name, -- name\n    u.about, -- about\n    u.metadata, -- metadata\n    u.created_at, -- created_at\n    u.updated_at, -- updated_at\n    p.canonical_name AS project -- project\nFROM users u\nLEFT JOIN project_users pu ON u.user_id = pu.user_id AND u.developer_id = pu.developer_id\nLEFT JOIN projects p ON pu.project_id = p.project_id\nWHERE u.developer_id = $1\nAND u.user_id = $2;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"user\", [\"get\"]))\n@wrap_in_class(User, one=True)\n@pg_query\n@beartype\nasync def get_user(\n    *,\n    developer_id: UUID,\n    user_id: UUID,\n) -> tuple[str, list, Literal[\"fetchrow\", \"fetchmany\", \"fetch\"]]:\n    \"\"\"\n    Constructs an optimized SQL query to retrieve a user's details.\n    Uses the primary key index (developer_id, user_id) for efficient lookup.\n\n    Args:\n        developer_id (UUID): The UUID of the developer.\n        user_id (UUID): The UUID of the user to retrieve.\n\n    Returns:\n        tuple[str, list, str]: SQL query, parameters, and fetch mode.\n    \"\"\"\n\n    return (\n        user_query,\n        [developer_id, user_id],\n        \"fetchrow\",\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/users/list_users.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom beartype.vale import Is\n\nfrom ...autogen.openapi_model import User\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ..utils import make_num_validator, pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query outside the function\nuser_query = \"\"\"\nWITH filtered_users AS (\n    SELECT\n        u.user_id as id, -- user_id\n        u.developer_id, -- developer_id\n        u.name, -- name\n        u.about, -- about\n        u.metadata, -- metadata\n        u.created_at, -- created_at\n        u.updated_at, -- updated_at\n        p.canonical_name AS project -- project\n    FROM users u\n    LEFT JOIN project_users pu ON u.user_id = pu.user_id AND u.developer_id = pu.developer_id\n    LEFT JOIN projects p ON pu.project_id = p.project_id\n    WHERE u.developer_id = $1\n        AND ($4::jsonb IS NULL OR u.metadata @> $4)\n        AND ($7::text IS NULL OR p.canonical_name = $7)\n)\nSELECT *\nFROM filtered_users\nORDER BY\n    CASE WHEN $5 = 'created_at' AND $6 = 'asc' THEN created_at END ASC NULLS LAST,\n    CASE WHEN $5 = 'created_at' AND $6 = 'desc' THEN created_at END DESC NULLS LAST,\n    CASE WHEN $5 = 'updated_at' AND $6 = 'asc' THEN updated_at END ASC NULLS LAST,\n    CASE WHEN $5 = 'updated_at' AND $6 = 'desc' THEN updated_at END DESC NULLS LAST\nLIMIT $2\nOFFSET $3;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"user\", [\"list\"]))\n@wrap_in_class(User)\n@pg_query\n@beartype\nasync def list_users(\n    *,\n    developer_id: UUID,\n    limit: Annotated[\n        int,\n        Is[\n            make_num_validator(\n                min_value=1, max_value=100, err_msg=\"Limit must be between 1 and 100\"\n            )\n        ],\n    ] = 100,\n    offset: Annotated[\n        int, Is[make_num_validator(min_value=0, err_msg=\"Offset must be non-negative\")]\n    ] = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    metadata_filter: dict | None = None,\n    project: str | None = None,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs an optimized SQL query for listing users with pagination and filtering.\n    Uses indexes on developer_id and metadata for efficient querying.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        limit (int): Maximum number of records to return\n        offset (int): Number of records to skip\n        sort_by (str): Field to sort by\n        direction (str): Sort direction\n        metadata_filter (dict, optional): Metadata-based filters\n        project (str, optional): Filter users by project canonical name\n\n    Returns:\n        tuple[str, list]: SQL query and parameters\n    \"\"\"\n\n    params = [\n        developer_id,  # $1\n        limit,  # $2\n        offset,  # $3\n        metadata_filter,  # Will be NULL if not provided\n        sort_by,  # $5\n        direction,  # $6\n        project,  # $7\n    ]\n\n    return (\n        user_query,\n        params,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/users/patch_user.py",
    "content": "from uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import PatchUserRequest, User\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..projects.project_exists import project_exists\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query outside the function\nuser_query = \"\"\"\nWITH proj AS (\n    -- Find project ID by canonical name if project is being updated\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $6\n    AND $6 IS NOT NULL\n), project_exists AS (\n    -- Check if the specified project exists\n    SELECT\n        CASE\n            WHEN $6 IS NULL THEN TRUE -- No project specified, so exists check passes\n            WHEN EXISTS (SELECT 1 FROM proj) THEN TRUE -- Project exists\n            ELSE FALSE -- Project specified but doesn't exist\n        END AS exists\n), user_update AS (\n    -- Only proceed with update if project exists\n    UPDATE users\n    SET\n        name = CASE\n            WHEN $3::text IS NOT NULL THEN $3 -- name\n            ELSE name\n        END,\n        about = CASE\n            WHEN $4::text IS NOT NULL THEN $4 -- about\n            ELSE about\n        END,\n        metadata = CASE\n            WHEN $5::jsonb IS NOT NULL THEN metadata || $5 -- metadata\n            ELSE metadata\n        END\n    WHERE developer_id = $1\n    AND user_id = $2\n    AND (SELECT exists FROM project_exists)\n    RETURNING *\n), project_association AS (\n    -- Create or update project association if project is being updated\n    INSERT INTO project_users (\n        project_id,\n        developer_id,\n        user_id\n    )\n    SELECT\n        p.project_id,\n        $1,\n        $2\n    FROM proj p\n    ON CONFLICT (project_id, user_id) DO NOTHING\n    RETURNING 1\n), old_associations AS (\n    -- Remove any previous project associations if we're updating with a new project\n    DELETE FROM project_users pu\n    WHERE pu.developer_id = $1\n    AND pu.user_id = $2\n    AND EXISTS (SELECT 1 FROM proj) -- Only delete if we have a new project\n    AND NOT EXISTS (\n        SELECT 1 FROM proj p\n        WHERE p.project_id = pu.project_id\n    )\n)\nSELECT\n    (SELECT exists FROM project_exists) AS project_exists,\n    u.*,\n    COALESCE(\n        (SELECT canonical_name FROM proj),\n        (SELECT canonical_name\n         FROM projects p\n         JOIN project_users pu ON p.project_id = pu.project_id\n         WHERE pu.developer_id = $1 AND pu.user_id = $2\n         LIMIT 1),\n        'default'\n    ) AS project\nFROM user_update u;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"user\", [\"patch\"]))\n@wrap_in_class(\n    User,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"user_id\"],\n    },\n)\n@query_metrics(\"patch_user\")\n@pg_query\n@beartype\nasync def patch_user_query(\n    *,\n    developer_id: UUID,\n    user_id: UUID,\n    data: PatchUserRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs an optimized SQL query for partial user updates.\n    Uses primary key for efficient update and jsonb_merge for metadata.\n    Includes project existence check directly in the SQL.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        user_id (UUID): The user's UUID\n        data (PatchUserRequest): Partial update data\n\n    Returns:\n        tuple[str, list]: SQL query and parameters\n    \"\"\"\n    # SQL will return project_exists status in the result\n    # If false, the row won't be updated, and we'll raise an appropriate exception\n    # in the error handling layer\n    params = [\n        developer_id,  # $1\n        user_id,  # $2\n        data.name,  # $3. Will be NULL if not provided\n        data.about,  # $4. Will be NULL if not provided\n        data.metadata,  # $5. Will be NULL if not provided\n        data.project or \"default\",  # $6. Use default if None is provided\n    ]\n\n    return (\n        user_query,\n        params,\n    )\n\n\nasync def patch_user(\n    *,\n    developer_id: UUID,\n    user_id: UUID,\n    data: PatchUserRequest,\n    connection_pool: asyncpg.Pool | None = None,\n) -> User:\n    project_canonical_name = data.project or \"default\"\n    project_exists_result = await project_exists(\n        developer_id, project_canonical_name, connection_pool=connection_pool\n    )\n\n    if not project_exists_result[0][\"project_exists\"]:\n        raise HTTPException(\n            status_code=404, detail=f\"Project '{project_canonical_name}' not found\"\n        )\n\n    return await patch_user_query(\n        developer_id=developer_id,\n        user_id=user_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/users/update_user.py",
    "content": "from uuid import UUID\n\nimport asyncpg\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom ...autogen.openapi_model import UpdateUserRequest, User\nfrom ...common.utils.db_exceptions import common_db_exceptions\nfrom ...metrics.counters import query_metrics\nfrom ..projects.project_exists import project_exists\nfrom ..utils import pg_query, rewrap_exceptions, wrap_in_class\n\n# Define the raw SQL query outside the function\nuser_query = \"\"\"\nWITH proj AS (\n    -- Find project ID by canonical name if project is provided\n    SELECT project_id, canonical_name\n    FROM projects\n    WHERE developer_id = $1 AND canonical_name = $6\n    AND $6 IS NOT NULL\n), project_exists AS (\n    -- Check if the specified project exists\n    SELECT\n        CASE\n            WHEN $6 IS NULL THEN TRUE -- No project specified, so exists check passes\n            WHEN EXISTS (SELECT 1 FROM proj) THEN TRUE -- Project exists\n            ELSE FALSE -- Project specified but doesn't exist\n        END AS exists\n), user_update AS (\n    -- Only proceed with update if project exists\n    UPDATE users\n    SET\n        name = $3, -- name\n        about = $4, -- about\n        metadata = $5 -- metadata\n    WHERE developer_id = $1 -- developer_id\n    AND user_id = $2 -- user_id\n    AND (SELECT exists FROM project_exists)\n    RETURNING *\n), project_association AS (\n    -- Create or update project association if project is provided and exists\n    INSERT INTO project_users (\n        project_id,\n        developer_id,\n        user_id\n    )\n    SELECT\n        p.project_id,\n        $1,\n        $2\n    FROM proj p\n    ON CONFLICT (project_id, user_id) DO NOTHING\n    RETURNING 1\n), old_associations AS (\n    -- Remove any previous project associations if we're updating with a new project\n    DELETE FROM project_users pu\n    WHERE pu.developer_id = $1\n    AND pu.user_id = $2\n    AND EXISTS (SELECT 1 FROM proj) -- Only delete if we have a new project\n    AND NOT EXISTS (\n        SELECT 1 FROM proj p\n        WHERE p.project_id = pu.project_id\n    )\n)\nSELECT\n    (SELECT exists FROM project_exists) AS project_exists,\n    u.*,\n    COALESCE(\n        (SELECT canonical_name FROM proj),\n        (SELECT canonical_name\n         FROM projects p\n         JOIN project_users pu ON p.project_id = pu.project_id\n         WHERE pu.developer_id = $1 AND pu.user_id = $2\n         LIMIT 1),\n        'default'\n    ) AS project\nFROM user_update u;\n\"\"\"\n\n\n@rewrap_exceptions(common_db_exceptions(\"user\", [\"update\"]))\n@wrap_in_class(\n    User,\n    one=True,\n    transform=lambda d: {\n        **d,\n        \"id\": d[\"user_id\"],\n    },\n)\n@query_metrics(\"update_user\")\n@pg_query\n@beartype\nasync def update_user_query(\n    *,\n    developer_id: UUID,\n    user_id: UUID,\n    data: UpdateUserRequest,\n) -> tuple[str, list]:\n    \"\"\"\n    Constructs an optimized SQL query to update a user's details.\n    Uses primary key for efficient update.\n    Includes project existence check directly in the SQL.\n\n    Args:\n        developer_id (UUID): The developer's UUID\n        user_id (UUID): The user's UUID\n        data (UpdateUserRequest): Updated user data\n\n    Returns:\n        tuple[str, list]: SQL query and parameters\n    \"\"\"\n\n    params = [\n        developer_id,\n        user_id,\n        data.name,\n        data.about,\n        data.metadata or {},\n        data.project or \"default\",\n    ]\n\n    return (\n        user_query,\n        params,\n    )\n\n\nasync def update_user(\n    *,\n    developer_id: UUID,\n    user_id: UUID,\n    data: UpdateUserRequest,\n    connection_pool: asyncpg.Pool | None = None,\n) -> User:\n    project_canonical_name = data.project or \"default\"\n    project_exists_result = await project_exists(\n        developer_id, project_canonical_name, connection_pool=connection_pool\n    )\n\n    if not project_exists_result[0][\"project_exists\"]:\n        raise HTTPException(\n            status_code=404, detail=f\"Project '{project_canonical_name}' not found\"\n        )\n\n    return await update_user_query(\n        developer_id=developer_id,\n        user_id=user_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/queries/utils.py",
    "content": "# AIDEV-NOTE: This module contains utility functions and decorators for database queries and data processing.\nimport concurrent.futures\nimport inspect\nimport socket\nimport time\nfrom collections.abc import Awaitable, Callable\nfrom functools import wraps\nfrom typing import (\n    Any,\n    Literal,\n    NotRequired,\n    ParamSpec,\n    TypeVar,\n    cast,\n)\n\nimport asyncpg\nimport namer\nfrom asyncpg import Record\nfrom beartype import beartype\nfrom fastapi import HTTPException\nfrom pydantic import BaseModel\nfrom typing_extensions import TypedDict\n\nfrom agents_api.common.exceptions.validation import QueryParamsValidationError\n\nfrom ..app import app\nfrom ..env import query_timeout\n\nP = ParamSpec(\"P\")\nT = TypeVar(\"T\")\nModelT = TypeVar(\"ModelT\", bound=BaseModel)\n\n\n# AIDEV-NOTE: Generates a unique, readable canonical name.\ndef generate_canonical_name() -> str:\n    \"\"\"Generate canonical name\"\"\"\n\n    categories: list[str] = [\"astronomy\", \"physics\", \"scientists\", \"math\"]\n    return namer.generate(separator=\"_\", suffix_length=3, category=categories)\n\n\nclass AsyncPGFetchArgs(TypedDict):\n    query: str\n    args: list[Any]\n    timeout: NotRequired[float | None]\n\n\ntype SQLQuery = str\ntype FetchMethod = Literal[\"fetch\", \"fetchmany\", \"fetchrow\"]\ntype PGQueryArgs = tuple[SQLQuery, list[Any]] | tuple[SQLQuery, list[Any], FetchMethod]\ntype PreparedPGQueryArgs = tuple[FetchMethod, AsyncPGFetchArgs]\ntype BatchedPreparedPGQueryArgs = list[PreparedPGQueryArgs]\n\n\n# AIDEV-NOTE: Prepares and formats PostgreSQL query arguments for batch execution.\n@beartype\ndef prepare_pg_query_args(\n    query_args: PGQueryArgs | list[PGQueryArgs],\n) -> BatchedPreparedPGQueryArgs:\n    batch = []\n    query_args = [query_args] if isinstance(query_args, tuple) else query_args\n\n    for query_arg in query_args:\n        match query_arg:\n            case (query, variables) | (query, variables, \"fetch\"):\n                batch.append((\n                    \"fetch\",\n                    AsyncPGFetchArgs(query=query, args=variables, timeout=query_timeout),\n                ))\n            case (query, variables, \"fetchmany\"):\n                batch.append((\n                    \"fetchmany\",\n                    AsyncPGFetchArgs(query=query, args=[variables], timeout=query_timeout),\n                ))\n            case (query, variables, \"fetchrow\"):\n                batch.append((\n                    \"fetchrow\",\n                    AsyncPGFetchArgs(query=query, args=variables, timeout=query_timeout),\n                ))\n            case _:\n                msg = \"Invalid query arguments\"\n                raise ValueError(msg)\n\n    return batch\n\n\n# AIDEV-NOTE: Decorator for executing PostgreSQL queries within a transaction.\n# Handles connection pooling, error handling, and result formatting.\n@beartype\ndef pg_query[**P](\n    func: Callable[P, PGQueryArgs | list[PGQueryArgs]] | None = None,\n    debug: bool | None = None,\n    only_on_error: bool = False,\n    timeit: bool = False,\n    return_index: int = -1,\n) -> Callable[..., Callable[P, list[Record]]] | Callable[P, list[Record]]:\n    def pg_query_dec(\n        func: Callable[P, PGQueryArgs | list[PGQueryArgs]],\n    ) -> Callable[..., Callable[P, list[Record]]]:\n        \"\"\"\n        Decorator that wraps a function that takes arbitrary arguments, and\n        returns a (query string, variables) tuple.\n\n        The wrapped function should additionally take a client keyword argument\n        and then run the query using the client, returning a Record.\n        \"\"\"\n\n        from pprint import pprint\n\n        @wraps(func)\n        async def wrapper(\n            *args: P.args,\n            connection_pool: asyncpg.Pool | None = None,\n            **kwargs: P.kwargs,\n        ) -> list[Record]:\n            query_args = await func(*args, **kwargs)\n            batch = prepare_pg_query_args(query_args)\n\n            not only_on_error and debug and pprint(batch)\n\n            # Run the query\n            pool = (\n                connection_pool\n                if connection_pool is not None\n                else cast(asyncpg.Pool, getattr(app.state, \"postgres_pool\", None))\n            )\n\n            try:\n                async with pool.acquire() as conn, conn.transaction():\n                    start = timeit and time.perf_counter()\n                    all_results = []\n\n                    for method_name, payload in batch:\n                        method = getattr(conn, method_name)\n                        query = payload[\"query\"]\n                        args = sanitize_string(payload[\"args\"])\n                        timeout = payload.get(\"timeout\")\n                        results: list[Record] = await method(query, *args, timeout=timeout)\n                        if method_name == \"fetchrow\":\n                            results = (\n                                [results]\n                                if results is not None\n                                and results.get(\"bool\", False) is not None\n                                and results.get(\"exists\", True)\n                                else []\n                            )\n\n                        if method_name == \"fetchrow\" and len(results) == 0:\n                            msg = \"No data found\"\n                            raise asyncpg.NoDataFoundError(msg)\n\n                        all_results.append(results)\n\n                    end = timeit and time.perf_counter()\n\n                    timeit and print(f\"PostgreSQL query time: {end - start:.2f} seconds\")\n\n            except Exception as e:\n                if only_on_error and debug:\n                    pprint(batch)\n\n                debug and print(repr(e))\n                connection_error = isinstance(\n                    e,\n                    (socket.gaierror),\n                )\n\n                if connection_error:\n                    exc = HTTPException(\n                        status_code=429,\n                        detail=\"Resource busy. Please try again later.\",\n                    )\n                    raise exc from e\n\n                raise\n\n            # Return results from specified index\n            results_to_return = all_results[return_index] if all_results else []\n            not only_on_error and debug and pprint(results_to_return)\n\n            return results_to_return\n\n        # Set the wrapped function as an attribute of the wrapper,\n        # forwards the __wrapped__ attribute if it exists.\n        setattr(wrapper, \"__wrapped__\", getattr(func, \"__wrapped__\", func))\n\n        return wrapper\n\n    if func is not None and callable(func):\n        return pg_query_dec(func)\n\n    return pg_query_dec\n\n\n# AIDEV-NOTE: Sanitizes strings to remove null characters for PostgreSQL compatibility.\ndef sanitize_string(value: Any) -> Any:\n    \"\"\"\n    Remove null characters (\\u0000) from strings for PostgreSQL compatibility.\n\n    Args:\n        value: Any data structure that might contain strings with null characters\n\n    Returns:\n        Data with null characters removed from strings\n    \"\"\"\n    if isinstance(value, str):\n        return value.replace(\"\\u0000\", \"\")\n    if isinstance(value, dict):\n        return {key: sanitize_string(val) for key, val in value.items()}\n    if isinstance(value, list):\n        return [sanitize_string(item) for item in value]\n    if isinstance(value, tuple):\n        return tuple(sanitize_string(item) for item in value)\n    return value\n\n\n# AIDEV-NOTE: Decorator to wrap query results in Pydantic models.\ndef wrap_in_class(\n    cls: type[ModelT] | Callable[..., ModelT],\n    one: bool = False,\n    maybe_one: bool = False,\n    transform: Callable[[dict], dict] | None = None,\n) -> Callable[..., Callable[..., ModelT | list[ModelT] | None]]:\n    \"\"\"\n    Decorator that wraps database query results into Pydantic model instances.\n\n    Args:\n        cls: The Pydantic model class or callable that constructs the model\n        one: If True, expects exactly one result and returns a single model instance\n        maybe_one: If True, returns None if no results, a single model if one result,\n                  and raises ValueError if multiple results\n        transform: Optional function to transform each record before model instantiation\n\n    Returns:\n        A decorator that transforms query results into model instances\n\n    Raises:\n        ValueError: If one=True and not exactly one result is returned, or\n                   if maybe_one=True and multiple results are returned\n    \"\"\"\n\n    def _return_data(rec: list[Record]) -> ModelT | list[ModelT] | None:\n        data = [dict(r.items()) for r in rec]\n        # AIDEV-NOTE: initialize transformer function once per call\n        transform_fn = transform or (lambda x: x)\n\n        if maybe_one:\n            if len(data) == 0:\n                return None\n            if len(data) == 1:\n                return cls(**transform_fn(data[0]))\n            msg = f\"Expected one result or none, got {len(data)}\"\n            raise ValueError(msg)\n\n        if one:\n            assert len(data) == 1, f\"Expected one result, got {len(data)}\"\n            obj: ModelT = cls(**transform_fn(data[0]))\n            return obj\n\n        objs: list[ModelT] = [cls(**item) for item in map(transform_fn, data)]\n        return objs\n\n    def decorator(\n        func: Callable[P, list[Record] | Awaitable[list[Record]]],\n    ) -> Callable[P, ModelT | list[ModelT] | None]:\n        @wraps(func)\n        def wrapper(*args: P.args, **kwargs: P.kwargs) -> ModelT | list[ModelT] | None:\n            return _return_data(func(*args, **kwargs))\n\n        @wraps(func)\n        async def async_wrapper(\n            *args: P.args, **kwargs: P.kwargs\n        ) -> ModelT | list[ModelT] | None:\n            return _return_data(await func(*args, **kwargs))\n\n        # Set the wrapped function as an attribute of the wrapper,\n        # forwards the __wrapped__ attribute if it exists.\n        setattr(wrapper, \"__wrapped__\", getattr(func, \"__wrapped__\", func))\n        setattr(async_wrapper, \"__wrapped__\", getattr(func, \"__wrapped__\", func))\n\n        return async_wrapper if inspect.iscoroutinefunction(func) else wrapper\n\n    return decorator\n\n\n# AIDEV-NOTE: Decorator to rewrap specific exceptions raised by a function.\ndef rewrap_exceptions(\n    mapping: dict[\n        type[BaseException] | Callable[[BaseException], bool],\n        type[BaseException] | Callable[[BaseException], BaseException],\n    ],\n    /,\n) -> Callable[..., Callable[P, T | Awaitable[T]]]:\n    def _check_error(error):\n        nonlocal mapping\n\n        for check, transform in mapping.items():\n            should_catch = isinstance(error, check) if isinstance(check, type) else check(error)\n\n            if should_catch:\n                new_error = (\n                    transform(str(error)) if isinstance(transform, type) else transform(error)\n                )\n\n                setattr(new_error, \"__cause__\", error)\n\n                print(error)\n                raise new_error from error\n\n    def decorator(\n        func: Callable[P, T | Awaitable[T]],\n    ) -> Callable[..., Callable[P, T | Awaitable[T]]]:\n        @wraps(func)\n        async def async_wrapper(*args: P.args, **kwargs: P.kwargs) -> T:\n            try:\n                result: T = await func(*args, **kwargs)\n            except BaseException as error:\n                _check_error(error)\n                raise error\n\n            return result\n\n        @wraps(func)\n        def wrapper(*args: P.args, **kwargs: P.kwargs) -> T:\n            try:\n                result: T = func(*args, **kwargs)\n            except BaseException as error:\n                _check_error(error)\n                raise error\n\n            return result\n\n        # Set the wrapped function as an attribute of the wrapper,\n        # forwards the __wrapped__ attribute if it exists.\n        setattr(wrapper, \"__wrapped__\", getattr(func, \"__wrapped__\", func))\n        setattr(async_wrapper, \"__wrapped__\", getattr(func, \"__wrapped__\", func))\n\n        return async_wrapper if inspect.iscoroutinefunction(func) else wrapper\n\n    return decorator\n\n\n# AIDEV-NOTE: Runs multiple asynchronous functions concurrently.\ndef run_concurrently(\n    fns: list[Callable[..., Any]],\n    *,\n    args_list: list[tuple] | None = None,\n    kwargs_list: list[dict] | None = None,\n) -> list[Any]:\n    # AIDEV-NOTE: avoid mutable default args; initialize to empty list if None\n    args_list = args_list if args_list is not None else []\n    kwargs_list = kwargs_list if kwargs_list is not None else []\n    args_list = args_list or [()] * len(fns)\n    kwargs_list = kwargs_list or [{}] * len(fns)\n\n    with concurrent.futures.ThreadPoolExecutor() as executor:\n        futures = [\n            executor.submit(fn, *args, **kwargs)\n            for fn, args, kwargs in zip(fns, args_list, kwargs_list)\n        ]\n\n        return [future.result() for future in concurrent.futures.as_completed(futures)]\n\n\n# AIDEV-NOTE: Serializes Pydantic model data into a dictionary, handling nested models.\ndef serialize_model_data(data: Any) -> Any:\n    \"\"\"\n    Recursively serialize Pydantic models and their nested structures.\n\n    Args:\n        data: Any data structure that might contain Pydantic models\n\n    Returns:\n        JSON-serializable data structure\n    \"\"\"\n    if hasattr(data, \"model_dump\"):\n        return data.model_dump(mode=\"json\")\n    if isinstance(data, dict):\n        return {key: serialize_model_data(value) for key, value in data.items()}\n    if isinstance(data, list | tuple):\n        return [serialize_model_data(item) for item in data]\n    return data\n\n\n# AIDEV-NOTE: Builds SQL conditions for filtering based on JSONB metadata.\ndef build_metadata_filter_conditions(\n    base_params: list[Any], metadata_filter: dict[str, Any], table_alias: str = \"\"\n) -> tuple[str, list[Any]]:\n    \"\"\"\n    Safely build SQL conditions for metadata filtering to prevent SQL injection.\n\n    This function takes a base parameter list and a metadata filter dictionary, and returns\n    a tuple containing the SQL conditions string and an updated parameter list with the\n    metadata filter values appended.\n\n    Args:\n        base_params: The existing list of parameters for the SQL query\n        metadata_filter: A dictionary of key-value pairs to filter by metadata\n        table_alias: Optional table alias (e.g., \"d.\") to prefix to metadata column name\n\n    Returns:\n        tuple[str, list[Any]]: A tuple containing the SQL condition string and the updated parameter list\n    \"\"\"\n    if not metadata_filter:\n        return \"\", base_params\n\n    params = base_params.copy()\n    conditions = []\n    metadata_col = f\"{table_alias}metadata\" if table_alias else \"metadata\"\n\n    for key, value in metadata_filter.items():\n        param_idx_key = len(params) + 1\n        param_idx_value = len(params) + 2\n        conditions.append(f\"{metadata_col}->>${param_idx_key} = ${param_idx_value}\")\n        params.extend([key, value])\n\n    sql_conditions = \" AND \".join(conditions)\n    if sql_conditions:\n        sql_conditions = \" AND \" + sql_conditions\n\n    return sql_conditions, params\n\n\n# AIDEV-NOTE: Creates a validator function for numerical ranges.\ndef make_num_validator(\n    min_value: int | float | None = None,\n    max_value: int | float | None = None,\n    err_msg: str | None = None,\n):\n    def validator(v: int | float) -> bool:\n        # Choose appropriate error message without mutating outer err_msg\n        if min_value is not None and v < min_value:\n            msg = err_msg or f\"Number must be greater than or equal to {min_value}\"\n            raise QueryParamsValidationError(msg)\n\n        if max_value is not None and v > max_value:\n            msg = err_msg or f\"Number must be less than or equal to {max_value}\"\n            raise QueryParamsValidationError(msg)\n\n        return True\n\n    return validator\n"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/__init__.py",
    "content": ""
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/data.py",
    "content": "import json\nfrom pathlib import Path\nfrom typing import Any\n\nmodule_directory: Path = Path(__file__).parent\n\n\nwith open(f\"{module_directory}/entities_example_chat.json\") as _f:\n    entities_example_chat: Any = json.load(_f)\n\n\nwith open(f\"{module_directory}/trim_example_chat.json\") as _f:\n    trim_example_chat: Any = json.load(_f)\n\n\nwith open(f\"{module_directory}/trim_example_result.json\") as _f:\n    trim_example_result: Any = json.load(_f)\n\n\nwith open(f\"{module_directory}/summarize_example_chat.json\") as _f:\n    summarize_example_chat: Any = json.load(_f)\n\n\nwith open(f\"{module_directory}/summarize_example_result.json\") as _f:\n    summarize_example_result: Any = json.load(_f)\n"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/entities.py",
    "content": "import json\nfrom typing import Any\n\nimport pandas as pd\nfrom tenacity import retry, stop_after_attempt\n\nfrom .data import entities_example_chat\nfrom .generate import generate\nfrom .utils import chatml, get_names_from_session\n\n##############\n# Entities ##\n##############\n\nentities_example_plan: str = \"\"\"\\\nThinking step by step:\n- To add context for future entries, let's outline the main entities in the session above.\n- In this session, as mentioned in the first message metadata, the user's name is Camille and the assistant's name is JaneBot.\n- They talk about Elon Musk and the banana tattoo on Camille's arm briefly.\"\"\"\n\n\nentities_example_result: str = \"\"\"\\\n1. Camille (The user): Humorous, creative, and enjoys playful banter.\n2. JaneBot (The assistant): Engages in lighthearted conversation and tries to guess user's thoughts.\n3. Elon Musk: Camille and JaneBot discuss the polarizing tech and space industry figure.\n4. Banana Tattoo: Camille has a tattoo of a banana on their arm.\"\"\"\n\n\nentities_instructions: str = \"\"\"\\\nYour goal is to identify the main entities in the session. Entities should include:\n- Characters in the conversation: Assistant, User1, User2\n- People references or spoken about\n- Objects discussed about\n- Places of interest\n- ...etc\n\nInstructions:\n- Identify and extract important entities discussed.\n- You can add entities that, while not directly mentioned, are important in the context of the conversation.\n- Write a brief line to provide context about each entity explaining it's relevance to the conversation.\n- Enclose your answer inside <ct:entities></ct:entities> XML tags.\n- See the example to get a better idea of the task.\"\"\"\n\n\ndef make_entities_prompt(\n    session: list[pd.Series] | list[Any],\n    user: str = \"a user\",\n    assistant: str = \"gpt-4-turbo\",\n    **_,\n):\n    session = [m.to_dict() if isinstance(m, pd.Series) else m for m in session]\n    session_json_str = json.dumps(session, indent=2)\n\n    return [\n        f\"You are given a session history of a chat between {user or 'a user'} and {assistant or 'gpt-4-turbo'}. The session is formatted in the ChatML JSON format (from OpenAI).\\n\\n{entities_instructions}\\n\\n<ct:example-session>\\n{json.dumps(entities_example_chat, indent=2)}\\n</ct:example-session>\\n\\n<ct:example-plan>\\n{entities_example_plan}\\n</ct:example-plan>\\n\\n<ct:example-entities>\\n{entities_example_result}\\n</ct:example-entities>\",\n        f\"Begin! Write the entities as a Markdown formatted list. First write your plan inside <ct:plan></ct:plan> and then the extracted entities between <ct:entities></ct:entities>.\\n\\n<ct:session>\\n{session_json_str}\\n\\n</ct:session>\",\n    ]\n\n\n@retry(stop=stop_after_attempt(2))\nasync def get_entities(\n    chat_session,\n    model: str = \"gpt-4o\",\n    stop=[\"</ct:entities\"],\n    temperature: float = 0.7,\n    **kwargs,\n):\n    assert len(chat_session) >= 2, \"Session is too short\"\n\n    names = get_names_from_session(chat_session)\n    system_prompt, user_message = make_entities_prompt(chat_session, **names)\n    messages = [chatml.system(system_prompt), chatml.user(user_message)]\n    result = await generate(\n        messages,\n        model=model,\n        stop=stop,\n        temperature=temperature,\n        **kwargs,\n    )\n\n    assert \"<ct:entities>\" in result[\"content\"]\n    result[\"content\"] = (\n        result[\"content\"].split(\"<ct:entities>\")[-1].replace(\"</ct:entities>\", \"\").strip()\n    )\n    result[\"role\"] = \"system\"\n    result[\"name\"] = \"entities\"\n\n    return chatml.make(**result)\n"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/entities_example_chat.json",
    "content": "[\n    {\n        \"role\": \"system\",\n        \"content\": \"just have a casual chat with a friend friend\"\n    },\n    {\n        \"role\": \"user\",\n        \"name\": \"Camille\",\n        \"content\": \"yo\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"name\": \"JaneBot\",\n        \"content\": \"Hey, how's it going?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"what you think about elon?\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Elon Musk is definitely a fascinating and polarizing figure. He's accomplished a lot in the tech and space industries with companies like Tesla and SpaceX. What do you think about him?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"very polarizing, dude is nuts but in a fun way\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Haha, yeah, that's a pretty accurate description of him. He definitely knows how to keep things interesting and push boundaries. It's always exciting to see what he'll come up with next.\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"i am glad he exists\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"For sure, he's definitely made a huge impact on various industries. It's always interesting to see how his projects and ideas continue to evolve.\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"what are your thoughts on bananas?\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"I actually love bananas! They're a great snack, full of nutrients and easy to eat on the go. How about you, do you like bananas?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"super much. i have a tattoo of a banana on my arm\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"That's awesome! A banana tattoo sounds like a fun and unique choice. It must be a great conversation starter.\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"anyway what number am I thinking of?\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Hmm, I'll take a wild guess and say you're thinking of the number 7. Did I get it right?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"no\"\n    }\n]"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/generate.py",
    "content": "from tenacity import retry, stop_after_attempt, wait_fixed\n\nfrom agents_api.clients import litellm\n\n\n@retry(wait=wait_fixed(2), stop=stop_after_attempt(5))\nasync def generate(\n    messages: list[dict],\n    model: str = \"gpt-4o\",\n    **kwargs,\n) -> dict:\n    result = await litellm.acompletion(\n        model=model,\n        messages=messages,\n        **kwargs,\n    )\n\n    return result.choices[0].message.json()\n"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/summarize.py",
    "content": "import json\n\nfrom tenacity import retry, stop_after_attempt\n\nfrom .data import summarize_example_chat, summarize_example_result\nfrom .generate import generate\nfrom .utils import add_indices, chatml, get_names_from_session\n\n##########\n# summarize ##\n##########\n\nsummarize_example_plan: str = \"\"\"\\\nPlanning step by step:\n- We can replace entries 1,2,3,4 with a summary of those messages.\n- We can replace entries 5,6,7,8 similarly.\n- It could be disruptive to remove messages 9-16 because that might lose the joke's context.\n- We can safely summarize entries 17,18 without losing context.\n- We should keep 21 because it's given by the user and they might ask about it again.\n- We should keep the assistant's response in message 22 to keep the context.\n- Messages 23-32 are repetitive and can be summarized.\n- We should retain message 33 since it's a direct request from the user.\n- We can safely summarize message 34's essay into just the salient points only.\"\"\"\n\n\nsummarize_instructions: str = \"\"\"\\\nYour goal is to compactify the history by coalescing redundant information in messages into their summary in order to reduce its size and save costs.\n\nInstructions:\n- Combine multiple messages into summaries when possible as long as that doesn't disrupt the structure of the session.\n- You can convert large messages (such as an essay) into a list of points.\n- Do not summarize content that the user shared since it might be relevant to future messages.\n- Make sure to preserve the tone of the conversation and its flow. Refer to the example and do EXACTLY as shown.\n- VERY IMPORTANT: Add the indices of messages that are being summarized so that those messages can then be removed from the session otherwise, there'll be no way to identify which messages to remove. See example for more details.\"\"\"\n\n\ndef make_summarize_prompt(\n    session, user: str = \"a user\", assistant: str = \"gpt-4-turbo\", **_\n) -> list[str]:\n    return [\n        f\"You are given a session history of a chat between {user or 'a user'} and {assistant or 'gpt-4-turbo'}. The session is formatted in the ChatML JSON format (from OpenAI).\\n\\n{summarize_instructions}\\n\\n<ct:example-session>\\n{json.dumps(add_indices(summarize_example_chat), indent=2)}\\n</ct:example-session>\\n\\n<ct:example-plan>\\n{summarize_example_plan}\\n</ct:example-plan>\\n\\n<ct:example-summarized-messages>\\n{json.dumps(summarize_example_result, indent=2)}\\n</ct:example-summarized-messages>\",\n        f\"Begin! Write the summarized messages as a json list just like the example above. First write your plan inside <ct:plan></ct:plan> and then your answer between <ct:summarized-messages></ct:summarized-messages>. Don't forget to add the indices of the messages being summarized alongside each summary.\\n\\n<ct:session>\\n{json.dumps(add_indices(session), indent=2)}\\n\\n</ct:session>\",\n    ]\n\n\n@retry(stop=stop_after_attempt(2))\nasync def summarize_messages(\n    chat_session,\n    model: str = \"gpt-4o\",\n    stop=[\"</ct:summarized\"],\n    temperature: float = 0.8,\n    **kwargs,\n):\n    assert len(chat_session) >= 2, \"Session is too short\"\n\n    offset = 0\n\n    # Remove the system prompt if present\n    if chat_session[0][\"role\"] == \"system\" and chat_session[0].get(\"name\") != \"entities\":\n        chat_session = chat_session[1:]\n\n        # The indices are not matched up correctly\n        offset = 1\n\n    names = get_names_from_session(chat_session)\n    system_prompt, user_message = make_summarize_prompt(chat_session, **names)\n    messages = [chatml.system(system_prompt), chatml.user(user_message)]\n    result = await generate(\n        messages,\n        model=model,\n        stop=stop,\n        temperature=temperature,\n        **kwargs,\n    )\n\n    assert \"<ct:summarized-messages>\" in result[\"content\"]\n    summarized_messages = json.loads(\n        result[\"content\"]\n        .split(\"<ct:summarized-messages>\")[-1]\n        .replace(\"</ct:summarized-messages>\", \"\")\n        .strip(),\n    )\n\n    assert all(msg.get(\"summarizes\") is not None for msg in summarized_messages)\n\n    # Correct offset\n    return [\n        {**msg, \"summarizes\": [i + offset for i in msg[\"summarizes\"]]}\n        for msg in summarized_messages\n    ]\n"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/summarize_example_chat.json",
    "content": "[\n    {\n        \"role\": \"system\",\n        \"content\": \"just have a casual chat with a friend friend\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"yo\",\n        \"name\": \"Camille\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Hey, how's it going?\",\n        \"name\": \"JaneBot\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"sup\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Not much, just working and trying to stay busy. How about you?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"what you think about elon?\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Elon Musk is definitely a fascinating and polarizing figure. He's accomplished a lot in the tech and space industries with companies like Tesla and SpaceX. What do you think about him?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"very polarizing, dude is nuts but in a fun way\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Haha, yeah, that's a pretty accurate description of him. He definitely knows how to keep things interesting and push boundaries. It's always exciting to see what he'll come up with next.\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"i am glad he exists\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"For sure, he's definitely made a huge impact on various industries. It's always interesting to see how his projects and ideas continue to evolve.\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"what are your thoughts on bananas?\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"I actually love bananas! They're a great snack, full of nutrients and easy to eat on the go. How about you, do you like bananas?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"super much. i have a tattoo of a banana on my arm\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"That's awesome! A banana tattoo sounds like a fun and unique choice. It must be a great conversation starter. Do you have any other food-related tattoos?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"yeah, your mom\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Haha, good one! You got me there. Feel free to keep the jokes coming.\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"lulz, u funny\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Glad I could make you laugh! It's always great to share a joke or two. Anything else on your mind, or are we just going with the flow of the conversation?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"ok if I give you a long story, can you guess its title?\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Sure, I can give it a try! Go ahead and tell me your story, and I'll see if I can guess the title.\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"Zero is a beautiful number. Not because it is round and cute (that could be an argument for it nevertheless) but because what it signifies. It marks the beginning of something. It marks the lowest something, or someone can go. It is the ultimate foundation to build anything upon.  Over last several years, I’ve started several things from scratch and have failed at many (thus going back to zero), and I’ve realized there’s nothing more liberating than being at zero because the only way from zero is upwards. A very good friend once told me, “Don’t worry if you’ve failed. Rockets that touch the sky always launch from the ground.”  As J K Rowling, one of my favorite authors says, “Rock bottom became the solid foundation on which I rebuilt my life.”  While zero is liberating, thrilling and exciting, it sometimes also is daunting and overwhelming. Sometimes, I have found myself afraid to do something because I was comfortable being at zero and the task to go from zero to one seemed unnerving. This challenge of writing twenty-six stories was one such adventure. I remember it was the first of April when I decided to pen down a story for each letter of the alphabet. I was afraid if I was unknowingly planning to fool myself on April 1st.  I had no clue what to write even for the first letter of the alphabet. I was afraid I’d ruin twenty-six stories if I begin writing them just for the sake of writing.  What gave me the courage to take up the challenge was to lower the expectations that I’d have from these stories. My purpose was not to write twenty-six bestseller stories. Mine was to make it a habit of writing every day. Some days everything that came out of my pen was garbage, and on a few days, I loved what my hands typed on the blank paper. And today, with this last story, I am back at zero — a solid foundation for the next adventure.  Writing has become my daily habit, and I can remember to write even without my calendar sending me a reminder. I am curious what could I make out of this habit. Shall I start another writing adventure? Will it be a similar series? Will be a novel (long due now)? Or something different altogether?  Whatever it’d be, I guess I’ll be little less nervous to begin whatever comes next. I am at zero again, and the only way to go from here is upwards. Realizing that there’ll be one less thing in my daily routine, I feel a particular kind of guilt. It’s the kind of guilt that you feel when you have an ice-cream without telling your younger sibling about it. You kind of like it that you had the ice-cream but also feel guilty for hiding it from them.  On the new adventure, whatever it’d be, it’s time to buy an ice-cream for them this time.\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Based on the themes of starting anew, embracing failure, and the journey from zero to one, I would guess that the title of this story is \\\"Back to One.\\\" It seems to capture the essence of the protagonist's experience and mindset throughout the story. How did I do?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"ok that's cool but you are wrong. anyway what number am I thinking of?\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Hmm, I'll take a wild guess and say you're thinking of the number 7. Did I get it right?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"no\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Alright, I'll give it another shot. How about the number 3?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"no\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"I'll try one more time - is the number you're thinking of 9?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"no\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Looks like I haven't quite nailed it yet! Do you mind sharing which number you had in mind?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"no\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Fair enough, keeping that mystery alive! If you ever feel like sharing, just let me know. Anything else on your mind or any other games you'd like to play?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"yes, write an essay about me from your experience with me so far\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"From my interactions with you so far, I can tell that you have a great sense of humor and enjoy playful banter. You seem open to random and fun conversations, and you're not afraid to keep things interesting with unexpected twists and turns.\\n\\nYour creativity shines through in the way you approach different topics, and you have a knack for surprising me with your responses. You're also quite adept at changing the direction of the conversation while maintaining a light and friendly tone.\\n\\nOverall, chatting with you has been enjoyable and entertaining, and I appreciate the lighthearted and casual vibe you bring to our interactions. I look forward to more fun conversations with you in the future!\"\n    }\n]"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/summarize_example_result.json",
    "content": "[\n    {\n        \"role\": \"system\",\n        \"name\": \"summary\",\n        \"content\": \"Event: Camille says hi to JaneBot and they reply that they are working and trying to stay busy.\",\n        \"summarizes\": [\n            1,\n            2,\n            3,\n            4\n        ]\n    },\n    {\n        \"role\": \"system\",\n        \"name\": \"summary\",\n        \"content\": \"Event: They discuss Elon Musk and agree that he can be a polarizing personality.\",\n        \"summarizes\": [\n            5,\n            6,\n            7,\n            8\n        ]\n    },\n    {\n        \"role\": \"system\",\n        \"name\": \"summary\",\n        \"content\": \"Event: Camille appreciates JaneBot's sense of humor.\",\n        \"summarizes\": [\n            17,\n            18\n        ]\n    },\n    {\n        \"role\": \"system\",\n        \"name\": \"summary\",\n        \"content\": \"Event: Camille asks JaneBot to play \\\"What number I am thinking of?\\\" game but she keeps saying \\\"no\\\" to all guesses which JaneBot finds really funny.\",\n        \"summarizes\": [\n            23,\n            24,\n            25,\n            26,\n            27,\n            28,\n            29,\n            30,\n            31,\n            32\n        ]\n    },\n    {\n        \"role\": \"system\",\n        \"name\": \"summary\",\n        \"content\": \"Event: JaneBot wrote an essay about Camille. Summary of the essay:\\n1. You have a great sense of humor and enjoy playful, lighthearted banter in conversations.\\n2. Your creativity is evident in how you approach topics in unexpected ways and keep conversations interesting.\\n3. Chatting with you is enjoyable due to the casual, friendly tone you bring to interactions.\",\n        \"summarizes\": [\n            34\n        ]\n    }\n]"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/trim.py",
    "content": "import json\n\nfrom tenacity import retry, stop_after_attempt\n\nfrom .data import trim_example_chat, trim_example_result\nfrom .generate import generate\nfrom .utils import add_indices, chatml, get_names_from_session\n\n##########\n# Trim ##\n##########\n\ntrim_example_plan: str = \"\"\"\\\nThinking step by step:\n- To trim the context, let's examine the messages in the session above.\n- Messages 1, 2, and 3 are succinct and do not need trimming.\n- However, messages 4, 5, and 6 are all rather verbose and can be safely trimmed.\n- Message 7 is short enough and doesn't need any edits.\"\"\"\n\n\ntrim_instructions: str = \"\"\"\\\nYour goal is to identify messages in the session that are needlessly verbose and then trim them in length without losing any meaning or changing the tone of the message.\n\nInstructions:\n- Identify messages that are long and repetitive.\n- Longer messages need to be converted into smaller, more compact version of them.\n- Make sure to only trim out content that is not important to the context.\n- Write down the trimmed messages as a json list along with their indices.\n- Enclose your answer inside <ct:trimmed></ct:trimmed> XML tags.\n- See the example to get a better idea of the task.\"\"\"\n\n# It is important to make keep the tone, setting and flow of the conversation consistent while trimming the messages.\n\n\ndef make_trim_prompt(\n    session, user: str = \"a user\", assistant: str = \"gpt-4-turbo\", **_\n) -> list[str]:\n    return [\n        f\"You are given a session history of a chat between {user or 'a user'} and {assistant or 'gpt-4-turbo'}. The session is formatted in the ChatML JSON format (from OpenAI).\\n\\n{trim_instructions}\\n\\n<ct:example-session>\\n{json.dumps(add_indices(trim_example_chat), indent=2)}\\n</ct:example-session>\\n\\n<ct:example-plan>\\n{trim_example_plan}\\n</ct:example-plan>\\n\\n<ct:example-trimmed>\\n{json.dumps(trim_example_result, indent=2)}\\n</ct:example-trimmed>\",\n        f\"Begin! Write the trimmed messages as a json list. First write your plan inside <ct:plan></ct:plan> and then your answer between <ct:trimmed></ct:trimmed>.\\n\\n<ct:session>\\n{json.dumps(add_indices(session), indent=2)}\\n\\n</ct:session>\",\n    ]\n\n\n@retry(stop=stop_after_attempt(2))\nasync def trim_messages(\n    chat_session,\n    model: str = \"gpt-4o\",\n    stop=[\"</ct:trimmed\"],\n    temperature: float = 0.7,\n    **kwargs,\n):\n    assert len(chat_session) >= 2, \"Session is too short\"\n\n    names = get_names_from_session(chat_session)\n    system_prompt, user_message = make_trim_prompt(chat_session, **names)\n    messages = [chatml.system(system_prompt), chatml.user(user_message)]\n    result = await generate(\n        messages,\n        model=model,\n        stop=stop,\n        temperature=temperature,\n        **kwargs,\n    )\n\n    assert \"<ct:trimmed>\" in result[\"content\"]\n    trimmed_messages = json.loads(\n        result[\"content\"].split(\"<ct:trimmed>\")[-1].replace(\"</ct:trimmed>\", \"\").strip(),\n    )\n\n    assert all(msg.get(\"index\") is not None for msg in trimmed_messages)\n\n    # Correct offset\n    return [{**msg, \"index\": msg[\"index\"]} for msg in trimmed_messages]\n"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/trim_example_chat.json",
    "content": "[\n    {\n        \"role\": \"system\",\n        \"content\": \"You are a Large Language Model\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"hi\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Hello! How can I assist you today?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"I wanted to discuss consciousness with you\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"Absolutely, I'd be glad to discuss consciousness with you! It's a fascinating and very complex topic. Consciousness involves awareness of one's internal and external environments, personal thoughts, feelings, and experiences. It's often discussed in various contexts, including philosophy, psychology, and neuroscience. What specific aspects of consciousness are you interested in exploring?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"well, I am an AGI researcher and I think about consciousness a lot. The most interesting part of it is actually the potential that possibly I am currently talking to a proto-conscious system (you) since we do not really have a concrete definition of consciousness anyway yet. What do you think?\"\n    },\n    {\n        \"role\": \"assistant\",\n        \"content\": \"That's a compelling aspect of the discussion around artificial intelligence. The idea of whether AI, like myself, can possess consciousness, or something akin to it, is a topic of debate among philosophers, computer scientists, and cognitive scientists.\\n\\nAs it stands, AI, including this system, operates without consciousness. AI systems process data and generate responses based on patterns and instructions in their programming, but they do not experience awareness or subjective experiences. Although AI can simulate aspects of human conversation and behavior, these actions are not accompanied by personal consciousness or an internal life.\\n\\nThat said, discussions about the potential for artificial general intelligence (AGI) to exhibit features similar to consciousness are ongoing and raise questions about what consciousness fundamentally is, how it can be recognized, and whether it can exist independently of the biological processes that underpin human consciousness.\\n\\nWhat are your thoughts on the matter, both personally and as an AGI researcher?\"\n    },\n    {\n        \"role\": \"user\",\n        \"content\": \"I am working on Julep AI -- an \\\"AGI infrastructure lab\\\" and we are trying to contribute to this space.\"\n    }\n]"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/trim_example_result.json",
    "content": "[\n    {\n        \"index\": 4,\n        \"role\": \"assistant\",\n        \"content\": \"I'd be glad to discuss consciousness with you! Consciousness involves awareness of one's internal and external environments, thoughts, feelings, and experiences. It's discussed in philosophy, psychology, and neuroscience. What aspects are you interested in?\"\n    },\n    {\n        \"index\": 5,\n        \"role\": \"user\",\n        \"content\": \"well, I am an AGI researcher and I think about consciousness. The interesting part is that I may be talking to a proto-conscious system (you) since we do not have a concrete definition of consciousness yet. What do you think?\"\n    },\n    {\n        \"index\": 6,\n        \"role\": \"assistant\",\n        \"content\": \"The idea of whether AI, like myself, can possess consciousness, is a topic of debate among scientists.\\n\\nAI systems process data and generate responses based on patterns in their programming, but they do not experience awareness. Although AI can simulate human conversation and behavior, they are not accompanied by consciousness.\\n\\nThat said, discussions about AGI to exhibit consciousness are ongoing and raise questions about what consciousness is, how it can be recognized, and whether it can exist independently of the biological processes that underpin human consciousness.\\n\\nWhat are your thoughts, both personally and as an AGI researcher?\"\n    }\n]"
  },
  {
    "path": "src/agents-api/agents_api/rec_sum/utils.py",
    "content": "###########\n# Utils ##\n###########\n\n\nfrom typing import Any, TypeVar\n\n_T2 = TypeVar(\"_T2\")\n\n\nclass chatml:\n    @staticmethod\n    def make(content, role: str = \"system\", name: _T2 = None, **_) -> dict[str, _T2]:\n        return {\n            key: value\n            for key, value in {\"role\": role, \"name\": name, \"content\": content}.items()\n            if value is not None\n        }\n\n    @staticmethod\n    def user(content, name: str | None = None) -> Any:\n        return chatml.make(role=\"user\", content=content, name=name)\n\n    @staticmethod\n    def assistant(content, name: str | None = None) -> Any:\n        return chatml.make(role=\"assistant\", content=content, name=name)\n\n    @staticmethod\n    def system(content, name: str | None = None) -> Any:\n        return chatml.make(content, name=name)\n\n    @staticmethod\n    def thought(content, name: str | None = None) -> Any:\n        return chatml.make(content, name=\"thought\")\n\n    @staticmethod\n    def information(content) -> Any:\n        return chatml.system(content, name=\"information\")\n\n    @staticmethod\n    def summary(content) -> Any:\n        return chatml.system(content, name=\"summary\")\n\n    @staticmethod\n    def entities(content) -> Any:\n        return chatml.system(content, name=\"entity\")\n\n\ndef add_indices(list_of_dicts, idx_name: str = \"index\") -> list[dict]:\n    return [{idx_name: i, **msg} for i, msg in enumerate(list_of_dicts)]\n\n\ndef get_names_from_session(session) -> dict[str, Any]:\n    return {\n        role: next((msg.get(\"name\", None) for msg in session if msg[\"role\"] == role), None)\n        for role in {\"user\", \"assistant\", \"system\"}\n    }\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/AGENTS.md",
    "content": "# AGENTS.md - routers\n\nThis folder contains FastAPI route definitions for `agents-api` endpoints.\n\nKey Points\n- Follow RESTful CRUD patterns for resource routes.\n- Use dependency injection for authentication and authorization.\n- Response models sourced from `autogen/` or `protocol/`.\n- Document new endpoints in `openapi.yaml` and regenerate clients as needed.\n- Run `poe codegen` after TypeSpec updates.\n- Place route-specific tests under `agents-api/tests/`.\n\n# Routers\n\n## Purpose\n- Define FastAPI route handlers for HTTP endpoints\n- Organized by resource types (agents, tasks, sessions, etc.)\n- Handle authentication, validation, and error handling\n\n## Key Routers\n\n### projects/\n- Project creation and listing\n- Resource organization and management\n\n### agents/\n- CRUD operations for agents (AI assistants)\n- Tool management for agents\n\n### tasks/\n- Task definition and management\n- Task execution creation and control\n- Execution transitions and streaming events\n\n### sessions/\n- Chat session management\n- Handle chat completions through LLM providers\n- Streaming responses for chat messages\n\n### docs/\n- Document management (knowledge base)\n- Embeddings generation\n- Vector and text search capabilities\n\n### users/\n- User management and authentication\n- User CRUD operations\n\n### files/\n- File upload, download, and management\n- File metadata and storage\n\n### secrets/\n- Secret management for secure storage\n- Create, update, delete, and list secrets\n\n### responses/\n- Response management for task executions\n- Response creation and retrieval\n\n### healthz/\n- Health check endpoints\n- Service status monitoring\n\n### internal/\n- Internal API endpoints\n- System-level operations\n\n### jobs/\n- Job management and scheduling\n- Background task coordination\n\n## Common Patterns\n- Most endpoints require developer_id authentication\n- Routes follow RESTful conventions\n- Streaming endpoints use `StreamingResponse`\n- Background tasks for post-request operations\n\n## Request Flow\n1. API call hits a router endpoint\n2. Authentication/authorization via dependencies\n3. Input validation with Pydantic models\n4. Query execution against database\n5. Optional: workflow triggering for long-running operations\n6. Response formatting and return\n\n## Error Handling\n- Structured error responses with details and suggestions\n- HTTP-appropriate status codes\n- Validation errors include field location and fix recommendations\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/__init__.py",
    "content": "\"\"\"\nThe routers module of the agents-api application is responsible for handling HTTP routing for different parts of the application. It orchestrates the request-response cycle by directing incoming HTTP requests to the appropriate handler functions based on the request's URL.\n\nSub-modules within the routers module:\n- `agents`: Handles routing for agent-related operations, including CRUD (Create, Read, Update, Delete) actions and agent tool management. It provides endpoints for managing agents, their documentation, and tools.\n- `sessions`: Manages routing for session-related operations. This includes creating, updating, and deleting sessions, as well as handling chat functionalities and history within sessions. It is essential for managing interactive sessions between agents and users.\n- `users`: Responsible for routing user-related operations. This encompasses user creation, update, deletion, and managing user documents. It ensures that user data can be properly managed and accessed as needed.\n- `jobs`: Deals with routing for job status inquiries. This allows users to check the status of asynchronous jobs, providing insights into the progress and outcomes of long-running operations.\n- `files`: Deals with routing for file operations. This includes creating, reading, updating, and deleting files. It provides endpoints for managing files, including uploading, downloading, and deleting file content.\n- `docs`: Deals with routing for documentation operations. This includes creating, reading, updating, and deleting documents. It provides endpoints for managing documentation, including uploading, downloading, and deleting documentation content.\n- `projects`: Deals with routing for project operations. It provides endpoints for managing projects, including creating, reading, updating, and deleting projects.\nEach sub-module defines its own set of API endpoints and is responsible for handling requests and responses related to its domain, ensuring a modular and organized approach to API development.\n\"\"\"\n\n# ruff: noqa: F401\n# AIDEV-NOTE: Central router aggregator for all sub-modules in agents-api.\n\n# TODO: Create a router for developers\n# SCRUM-21\n\nfrom .agents import router as agents_router\nfrom .docs import router as docs_router\nfrom .files import router as files_router\nfrom .internal import router as internal_router\nfrom .jobs import router as jobs_router\nfrom .projects import router as projects_router\nfrom .responses import router as responses_router\nfrom .sessions import router as sessions_router\nfrom .tasks import router as tasks_router\nfrom .users import router as users_router\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/__init__.py",
    "content": "# ruff: noqa: F401\n\nfrom .list_models import list_models  # noqa: I001\nfrom .create_agent import create_agent\nfrom .create_agent_tool import create_agent_tool\nfrom .create_or_update_agent import create_or_update_agent\nfrom .delete_agent import delete_agent\nfrom .delete_agent_tool import delete_agent_tool\nfrom .get_agent_details import get_agent_details\nfrom .list_agent_tools import list_agent_tools\nfrom .list_agents import list_agents\nfrom .patch_agent import patch_agent\nfrom .patch_agent_tool import patch_agent_tool\nfrom .router import router\nfrom .update_agent import update_agent\nfrom .update_agent_tool import update_agent_tool\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/create_agent.py",
    "content": "# AIDEV-NOTE: This module defines the API endpoint for creating new agents.\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import (\n    Agent,\n    CreateAgentRequest,\n)\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.agents.create_agent import create_agent as create_agent_query\nfrom ..utils.model_validation import validate_model\nfrom .router import router\n\n\n# AIDEV-NOTE: API endpoint to create a new agent.\n# It depends on the developer ID and the agent data from the request body.\n# Validates the agent model if specified and calls the create_agent_query function.\n@router.post(\"/agents\", status_code=HTTP_201_CREATED, tags=[\"agents\"])\nasync def create_agent(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    data: CreateAgentRequest,\n) -> Agent:\n    if data.model:\n        await validate_model(data.model)\n\n    return await create_agent_query(\n        developer_id=x_developer_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/create_agent_tool.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import CreateToolRequest, Tool\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tools.create_tools import create_tools as create_tools_query\nfrom .router import router\n\n\n@router.post(\"/agents/{agent_id}/tools\", status_code=HTTP_201_CREATED, tags=[\"agents\"])\nasync def create_agent_tool(\n    agent_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    data: CreateToolRequest,\n) -> Tool:\n    tools = await create_tools_query(\n        developer_id=x_developer_id,\n        agent_id=agent_id,\n        data=[data],\n    )\n\n    return tools[0]\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/create_or_update_agent.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import (\n    Agent,\n    CreateOrUpdateAgentRequest,\n)\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.agents.create_or_update_agent import (\n    create_or_update_agent as create_or_update_agent_query,\n)\nfrom ..utils.model_validation import validate_model\nfrom .router import router\n\n\n@router.post(\"/agents/{agent_id}\", status_code=HTTP_201_CREATED, tags=[\"agents\"])\nasync def create_or_update_agent(\n    agent_id: UUID,\n    data: CreateOrUpdateAgentRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> Agent:\n    if data.model:\n        await validate_model(data.model)\n\n    return await create_or_update_agent_query(\n        developer_id=x_developer_id,\n        agent_id=agent_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/delete_agent.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_202_ACCEPTED\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.agents.delete_agent import delete_agent as delete_agent_query\nfrom .router import router\n\n\n@router.delete(\"/agents/{agent_id}\", status_code=HTTP_202_ACCEPTED, tags=[\"agents\"])\nasync def delete_agent(\n    agent_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ResourceDeletedResponse:\n    return await delete_agent_query(developer_id=x_developer_id, agent_id=agent_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/delete_agent_tool.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tools.delete_tool import delete_tool as delete_tool_query\nfrom .router import router\n\n\n@router.delete(\"/agents/{agent_id}/tools/{tool_id}\", tags=[\"agents\"])\nasync def delete_agent_tool(\n    agent_id: UUID,\n    tool_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ResourceDeletedResponse:\n    return await delete_tool_query(\n        developer_id=x_developer_id,\n        agent_id=agent_id,\n        tool_id=tool_id,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/get_agent_details.py",
    "content": "# AIDEV-NOTE: This module defines the API endpoint for retrieving a specific agent.\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Agent\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.agents.get_agent import get_agent as get_agent_query\nfrom .router import router\n\n\n# AIDEV-NOTE: API endpoint to get an agent by its ID.\n# It depends on the developer ID and the agent ID from the path parameter, and calls the get_agent_query function.\n@router.get(\"/agents/{agent_id}\", tags=[\"agents\"])\nasync def get_agent_details(\n    agent_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> Agent:\n    return await get_agent_query(developer_id=x_developer_id, agent_id=agent_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/list_agent_tools.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import ListResponse, Tool\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tools.list_tools import list_tools as list_tools_query\nfrom .router import router\n\n\n@router.get(\"/agents/{agent_id}/tools\", tags=[\"agents\"])\nasync def list_agent_tools(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    agent_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> ListResponse[Tool]:\n    # FIXME: list agent tools is returning an empty list\n    # SCRUM-22\n    tools = await list_tools_query(\n        agent_id=agent_id,\n        developer_id=x_developer_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n    )\n\n    return ListResponse[Tool](items=tools)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/list_agents.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Agent, ListResponse\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...dependencies.query_filter import MetadataFilter, create_filter_extractor\nfrom ...queries.agents.list_agents import list_agents as list_agents_query\nfrom .router import router\n\n\n@router.get(\"/agents\", tags=[\"agents\"])\nasync def list_agents(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    # Expects the dot notation of object in query params\n    # Example:\n    # > ?metadata_filter.name=John&metadata_filter.age=30\n    metadata_filter: Annotated[\n        MetadataFilter,\n        Depends(create_filter_extractor(\"metadata_filter\")),\n    ],\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> ListResponse[Agent]:\n    agents = await list_agents_query(\n        developer_id=x_developer_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n        metadata_filter=metadata_filter.model_dump(mode=\"json\") or {},\n    )\n\n    return ListResponse[Agent](items=agents)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/list_models.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends, Header\n\nfrom ...autogen.openapi_model import ListModelsResponse, ModelInfo\nfrom ...clients.litellm import get_model_list\nfrom ...dependencies.developer_id import get_developer_id\nfrom .router import router\n\n\n@router.get(\"/agents/models\", tags=[\"agents\"])\nasync def list_models(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    x_custom_api_key: str | None = Header(None),\n) -> ListModelsResponse:\n    \"\"\"\n    List all available models that can be used with agents.\n\n    Returns:\n        ListModelsResponse: A list of available models\n    \"\"\"\n    models_data = await get_model_list(custom_api_key=x_custom_api_key)\n    model_infos = [ModelInfo(id=model[\"id\"]) for model in models_data]\n\n    return ListModelsResponse(models=model_infos)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/patch_agent.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_200_OK\n\nfrom ...autogen.openapi_model import Agent, PatchAgentRequest\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.agents.patch_agent import patch_agent as patch_agent_query\nfrom ..utils.model_validation import validate_model\nfrom .router import router\n\n\n@router.patch(\n    \"/agents/{agent_id}\",\n    response_model=Agent,\n    status_code=HTTP_200_OK,\n    tags=[\"agents\"],\n)\nasync def patch_agent(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    agent_id: UUID,\n    data: PatchAgentRequest,\n) -> Agent:\n    if data.model:\n        await validate_model(data.model)\n\n    return await patch_agent_query(\n        agent_id=agent_id,\n        developer_id=x_developer_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/patch_agent_tool.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import PatchToolRequest, Tool\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tools.patch_tool import patch_tool as patch_tool_query\nfrom .router import router\n\n\n@router.patch(\"/agents/{agent_id}/tools/{tool_id}\", tags=[\"agents\"])\nasync def patch_agent_tool(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    agent_id: UUID,\n    tool_id: UUID,\n    data: PatchToolRequest,\n) -> Tool:\n    return await patch_tool_query(\n        developer_id=x_developer_id,\n        agent_id=agent_id,\n        tool_id=tool_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/update_agent.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_200_OK\n\nfrom ...autogen.openapi_model import Agent, UpdateAgentRequest\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.agents.update_agent import update_agent as update_agent_query\nfrom ..utils.model_validation import validate_model\nfrom .router import router\n\n\n@router.put(\n    \"/agents/{agent_id}\",\n    response_model=Agent,\n    status_code=HTTP_200_OK,\n    tags=[\"agents\"],\n)\nasync def update_agent(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    agent_id: UUID,\n    data: UpdateAgentRequest,\n) -> Agent:\n    if data.model:\n        await validate_model(data.model)\n\n    return await update_agent_query(\n        developer_id=x_developer_id,\n        agent_id=agent_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/agents/update_agent_tool.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Tool, UpdateToolRequest\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tools.update_tool import update_tool as update_tool_query\nfrom .router import router\n\n\n@router.put(\"/agents/{agent_id}/tools/{tool_id}\", tags=[\"agents\"])\nasync def update_agent_tool(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    agent_id: UUID,\n    tool_id: UUID,\n    data: UpdateToolRequest,\n) -> Tool:\n    return await update_tool_query(\n        developer_id=x_developer_id,\n        agent_id=agent_id,\n        tool_id=tool_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/__init__.py",
    "content": "# ruff: noqa: F401\nfrom .bulk_delete_docs import bulk_delete_agent_docs, bulk_delete_user_docs\nfrom .create_doc import create_agent_doc, create_user_doc\nfrom .delete_doc import delete_agent_doc, delete_user_doc\nfrom .embed import embed\nfrom .get_doc import get_doc\nfrom .list_docs import list_agent_docs, list_user_docs\nfrom .router import router\nfrom .search_docs import search_agent_docs, search_user_docs\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/bulk_delete_docs.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_202_ACCEPTED\n\nfrom ...autogen.openapi_model import (\n    BulkDeleteDocsRequest,\n    ListResponse,\n    ResourceDeletedResponse,\n)\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.docs.bulk_delete_docs import bulk_delete_docs as bulk_delete_docs_query\nfrom .router import router\n\n\n@router.delete(\n    \"/agents/{agent_id}/docs\",\n    status_code=HTTP_202_ACCEPTED,\n    tags=[\"docs\"],\n    description=\"Bulk delete documents owned by an agent based on metadata filter\",\n)\nasync def bulk_delete_agent_docs(\n    agent_id: UUID,\n    data: BulkDeleteDocsRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ListResponse[ResourceDeletedResponse]:\n    deleted_docs = await bulk_delete_docs_query(\n        developer_id=x_developer_id,\n        owner_id=agent_id,\n        owner_type=\"agent\",\n        data=data,\n    )\n\n    return ListResponse[ResourceDeletedResponse](items=deleted_docs)\n\n\n@router.delete(\n    \"/users/{user_id}/docs\",\n    status_code=HTTP_202_ACCEPTED,\n    tags=[\"docs\"],\n    description=\"Bulk delete documents owned by a user based on metadata filter\",\n)\nasync def bulk_delete_user_docs(\n    user_id: UUID,\n    data: BulkDeleteDocsRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ListResponse[ResourceDeletedResponse]:\n    deleted_docs = await bulk_delete_docs_query(\n        developer_id=x_developer_id,\n        owner_id=user_id,\n        owner_type=\"user\",\n        data=data,\n    )\n\n    return ListResponse[ResourceDeletedResponse](items=deleted_docs)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/create_doc.py",
    "content": "from typing import Annotated, Any\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import CreateDocRequest, Doc\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.docs.create_doc import create_doc as create_doc_query\nfrom .router import router\n\n\n@router.post(\"/users/{user_id}/docs\", status_code=HTTP_201_CREATED, tags=[\"docs\"])\nasync def create_user_doc(\n    user_id: UUID,\n    data: CreateDocRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    connection_pool: Any = None,  # FIXME: Placeholder that should be removed\n) -> Doc:\n    \"\"\"\n    Creates a new document for a user.\n\n    Parameters:\n        user_id (UUID): The unique identifier of the user associated with the document.\n        data (CreateDocRequest): The data to create the document with.\n        x_developer_id (UUID): The unique identifier of the developer associated with the document.\n\n    Returns:\n        Doc: The created document.\n    \"\"\"\n\n    doc: Doc = await create_doc_query(\n        developer_id=x_developer_id,\n        owner_type=\"user\",\n        owner_id=user_id,\n        data=data,\n    )\n\n    return doc\n\n\n@router.post(\"/agents/{agent_id}/docs\", status_code=HTTP_201_CREATED, tags=[\"docs\"])\nasync def create_agent_doc(\n    agent_id: UUID,\n    data: CreateDocRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    connection_pool: Any = None,  # FIXME: Placeholder that should be removed\n) -> Doc:\n    doc: Doc = await create_doc_query(\n        developer_id=x_developer_id,\n        owner_type=\"agent\",\n        owner_id=agent_id,\n        data=data,\n    )\n\n    return doc\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/delete_doc.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_202_ACCEPTED\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.docs.delete_doc import delete_doc as delete_doc_query\nfrom .router import router\n\n\n@router.delete(\"/agents/{agent_id}/docs/{doc_id}\", status_code=HTTP_202_ACCEPTED, tags=[\"docs\"])\nasync def delete_agent_doc(\n    doc_id: UUID,\n    agent_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ResourceDeletedResponse:\n    return await delete_doc_query(\n        developer_id=x_developer_id,\n        owner_id=agent_id,\n        owner_type=\"agent\",\n        doc_id=doc_id,\n    )\n\n\n@router.delete(\"/users/{user_id}/docs/{doc_id}\", status_code=HTTP_202_ACCEPTED, tags=[\"docs\"])\nasync def delete_user_doc(\n    doc_id: UUID,\n    user_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ResourceDeletedResponse:\n    return await delete_doc_query(\n        developer_id=x_developer_id,\n        owner_id=user_id,\n        owner_type=\"user\",\n        doc_id=doc_id,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/embed.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import (\n    EmbedQueryResponse,\n    MultipleEmbedQueryRequest,\n    SingleEmbedQueryRequest,\n)\nfrom ...clients import litellm\nfrom ...dependencies.developer_id import get_developer_id\nfrom .router import router\n\n\n@router.post(\"/embed\", tags=[\"docs\"])\nasync def embed(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    data: SingleEmbedQueryRequest | MultipleEmbedQueryRequest,\n) -> EmbedQueryResponse:\n    text_to_embed: str | list[str] = data.text\n    vectors = await litellm.aembedding(\n        inputs=text_to_embed,\n        embed_instruction=data.embed_instruction,\n        user=str(x_developer_id),\n    )\n\n    return EmbedQueryResponse(vectors=vectors)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/get_doc.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Doc\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.docs.get_doc import get_doc as get_doc_query\nfrom .router import router\n\n\n@router.get(\"/docs/{doc_id}\", tags=[\"docs\"])\nasync def get_doc(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    doc_id: UUID,\n    include_embeddings: bool = True,\n) -> Doc:\n    # AIDEV-NOTE: include_embeddings parameter added to reduce bandwidth when embeddings not needed\n    return await get_doc_query(\n        developer_id=x_developer_id, doc_id=doc_id, include_embeddings=include_embeddings\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/list_docs.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Doc, ListResponse\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...dependencies.query_filter import MetadataFilter, create_filter_extractor\nfrom ...queries.docs.list_docs import list_docs as list_docs_query\nfrom .router import router\n\n\n@router.get(\"/users/{user_id}/docs\", tags=[\"docs\"])\nasync def list_user_docs(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    user_id: UUID,\n    metadata_filter: Annotated[\n        MetadataFilter,\n        Depends(create_filter_extractor(\"metadata_filter\")),\n    ],\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    include_embeddings: bool = True,\n) -> ListResponse[Doc]:\n    # AIDEV-NOTE: include_embeddings parameter exposed to reduce bandwidth when embeddings not needed\n    docs = await list_docs_query(\n        developer_id=x_developer_id,\n        owner_type=\"user\",\n        owner_id=user_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n        metadata_filter=metadata_filter.model_dump(mode=\"json\"),\n        include_embeddings=include_embeddings,\n    )\n\n    return ListResponse[Doc](items=docs)\n\n\n@router.get(\"/agents/{agent_id}/docs\", tags=[\"docs\"])\nasync def list_agent_docs(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    agent_id: UUID,\n    metadata_filter: Annotated[\n        MetadataFilter,\n        Depends(create_filter_extractor(\"metadata_filter\")),\n    ],\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    include_embeddings: bool = True,\n) -> ListResponse[Doc]:\n    # AIDEV-NOTE: include_embeddings parameter exposed to reduce bandwidth when embeddings not needed\n    docs = await list_docs_query(\n        developer_id=x_developer_id,\n        owner_type=\"agent\",\n        owner_id=agent_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n        metadata_filter=metadata_filter.model_dump(mode=\"json\"),\n        include_embeddings=include_embeddings,\n    )\n\n    return ListResponse[Doc](items=docs)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/docs/search_docs.py",
    "content": "import time\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nimport numpy as np\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import (\n    DocReference,\n    DocSearchResponse,\n    HybridDocSearchRequest,\n    TextOnlyDocSearchRequest,\n    VectorDocSearchRequest,\n)\nfrom ...common.utils.get_doc_search import get_search_fn_and_params, strip_embeddings\nfrom ...common.utils.mmr import apply_mmr_to_docs\nfrom ...dependencies.developer_id import get_developer_id\nfrom .router import router\n\n\n@router.post(\"/users/{user_id}/search\", tags=[\"docs\"])\nasync def search_user_docs(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    search_params: (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest),\n    user_id: UUID,\n    connection_pool: Any = None,  # FIXME: Placeholder that should be removed\n) -> DocSearchResponse:\n    \"\"\"\n    Searches for documents associated with a specific user.\n\n    Parameters:\n        x_developer_id (UUID): The unique identifier of the developer associated with the user.\n        search_params (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest): The parameters for the search.\n        user_id (UUID): The unique identifier of the user associated with the documents.\n    Returns:\n        DocSearchResponse: The search results.\n    \"\"\"\n\n    # Get the search function and params here\n    search_fn, params, post_processing = get_search_fn_and_params(search_params)\n\n    include_embeddings = (\n        post_processing.get(\"include_embeddings\", True) if post_processing else True\n    )\n\n    start = time.time()\n    # Get the docs here\n    docs: list[DocReference] = await search_fn(\n        developer_id=x_developer_id,\n        owners=[(\"user\", user_id)],\n        **params,\n    )\n\n    if include_embeddings is False:\n        docs = strip_embeddings(docs)\n\n    # Apply MMR if enabled and applicable\n    if (\n        not isinstance(search_params, TextOnlyDocSearchRequest)\n        and len(docs) > search_params.limit\n        and search_params.mmr_strength > 0\n    ):\n        docs = apply_mmr_to_docs(\n            docs=docs,\n            query_embedding=np.asarray(params[\"embedding\"]),\n            limit=search_params.limit,\n            mmr_strength=search_params.mmr_strength,\n        )\n\n    end = time.time()\n\n    time_taken = end - start\n\n    return DocSearchResponse(\n        docs=docs,\n        time=max(time_taken, 0.01),\n    )\n\n\n@router.post(\"/agents/{agent_id}/search\", tags=[\"docs\"])\nasync def search_agent_docs(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    search_params: (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest),\n    agent_id: UUID,\n    connection_pool: Any = None,  # FIXME: Placeholder that should be removed\n) -> DocSearchResponse:\n    \"\"\"\n    Searches for documents associated with a specific agent.\n\n    Parameters:\n        x_developer_id (UUID): The unique identifier of the developer associated with the agent.\n        search_params (TextOnlyDocSearchRequest | VectorDocSearchRequest | HybridDocSearchRequest): The parameters for the search.\n        agent_id (UUID): The umnique identifier of the agent associated with the documents.\n    Returns:\n        DocSearchResponse: The search results.\n    \"\"\"\n\n    # Get the search function and params here\n    search_fn, params, post_processing = get_search_fn_and_params(search_params)\n\n    include_embeddings = (\n        post_processing.get(\"include_embeddings\", True) if post_processing else True\n    )\n\n    start = time.time()\n    # Get the docs here\n    docs: list[DocReference] = await search_fn(\n        developer_id=x_developer_id,\n        owners=[(\"agent\", agent_id)],\n        **params,\n    )\n\n    if include_embeddings is False:\n        docs = strip_embeddings(docs)\n\n    # Apply MMR if enabled and applicable\n    if (\n        not isinstance(search_params, TextOnlyDocSearchRequest)\n        and len(docs) > search_params.limit\n        and search_params.mmr_strength > 0\n    ):\n        docs = apply_mmr_to_docs(\n            docs=docs,\n            query_embedding=np.asarray(params[\"embedding\"]),\n            limit=search_params.limit,\n            mmr_strength=search_params.mmr_strength,\n        )\n\n    end = time.time()\n\n    time_taken = end - start\n\n    return DocSearchResponse(\n        docs=docs,\n        time=max(time_taken, 0.01),\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/files/__init__.py",
    "content": "# ruff: noqa: F401\n\nfrom .create_file import create_file\nfrom .delete_file import delete_file\nfrom .get_file import get_file\nfrom .list_files import list_files\nfrom .router import router\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/files/create_file.py",
    "content": "import base64\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import CreateFileRequest, File\nfrom ...clients import async_s3\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.files.create_file import create_file as create_file_query\nfrom .router import router\n\n\nasync def upload_file_content(file_id: UUID, content: str) -> None:\n    \"\"\"Upload file content to blob storage using the file ID as the key\"\"\"\n    key = str(file_id)\n    content_bytes = base64.b64decode(content)\n\n    client = await async_s3.setup()\n\n    await client.put_object(Bucket=async_s3.blob_store_bucket, Key=key, Body=content_bytes)\n\n\n# TODO: Use streaming for large payloads\n@router.post(\"/files\", status_code=HTTP_201_CREATED, tags=[\"files\"])\nasync def create_file(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    data: CreateFileRequest,\n) -> File:\n    file: File = await create_file_query(\n        developer_id=x_developer_id,\n        data=data,\n    )\n\n    # Upload the file content to blob storage using the file ID as the key\n    await upload_file_content(file.id, data.content)\n\n    return file\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/files/delete_file.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_202_ACCEPTED\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...clients import async_s3\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.files.delete_file import delete_file as delete_file_query\nfrom .router import router\n\n\nasync def delete_file_content(file_id: UUID) -> None:\n    \"\"\"Delete file content from blob storage using the file ID as the key\"\"\"\n    client = await async_s3.setup()\n    key = str(file_id)\n\n    await client.delete_object(Bucket=async_s3.blob_store_bucket, Key=key)\n\n\n@router.delete(\"/files/{file_id}\", status_code=HTTP_202_ACCEPTED, tags=[\"files\"])\nasync def delete_file(\n    file_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ResourceDeletedResponse:\n    resource_deleted = await delete_file_query(developer_id=x_developer_id, file_id=file_id)\n\n    # Delete the file content from blob storage\n    await delete_file_content(file_id)\n\n    return resource_deleted\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/files/get_file.py",
    "content": "import base64\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import File\nfrom ...clients import async_s3\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.files.get_file import get_file as get_file_query\nfrom .router import router\n\n\n# TODO: Use streaming for large payloads and file ID formatting\nasync def fetch_file_content(file_id: UUID) -> str:\n    \"\"\"Fetch file content from blob storage using the file ID as the key\"\"\"\n    client = await async_s3.setup()\n\n    key = str(file_id)\n    result = await client.get_object(Bucket=async_s3.blob_store_bucket, Key=key)\n    content = await result[\"Body\"].read()\n\n    return base64.b64encode(content).decode(\"utf-8\")\n\n\n# TODO: Use streaming for large payloads\n@router.get(\"/files/{file_id}\", tags=[\"files\"])\nasync def get_file(\n    file_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> File:\n    file = await get_file_query(developer_id=x_developer_id, file_id=file_id)\n\n    # Fetch the file content from blob storage\n    file.content = await fetch_file_content(file.id)\n\n    return file\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/files/list_files.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import File\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.files.list_files import list_files as list_files_query\nfrom .get_file import fetch_file_content\nfrom .router import router\n\n\n# TODO: Use streaming for large payloads\n@router.get(\"/files\", tags=[\"files\"])\nasync def list_files(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> list[File]:\n    files = await list_files_query(developer_id=x_developer_id)\n\n    # Fetch the file content from blob storage\n    for file in files:\n        file.content = await fetch_file_content(file.id)\n\n    return files\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/files/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/healthz/__init__.py",
    "content": "from .check_health import check_health as check_health\nfrom .router import router as router\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/healthz/check_health.py",
    "content": "import asyncio\n\nfrom fastapi import HTTPException\n\nfrom ...common.utils.checks import (\n    check_integration_service,\n    check_litellm,\n    check_postgres,\n    check_temporal,\n)\nfrom .router import router\n\n\n@router.get(\"/healthz\", tags=[\"healthz\"])\nasync def check_health() -> dict:\n    # Run all health checks concurrently\n    postgres_status, temporal_status, litellm_status, integration_status = await asyncio.gather(\n        check_postgres(),\n        check_temporal(),\n        check_litellm(),\n        check_integration_service(),\n    )\n\n    # Create health status with results\n    services = {\n        \"postgres\": postgres_status,\n        \"temporal\": temporal_status,\n        \"litellm\": litellm_status,\n        \"integration_service\": integration_status,\n    }\n\n    # If any service is down, mark overall status as degraded\n    if any(status == \"error\" for status in services.values()):\n        raise HTTPException(status_code=500, detail=services)\n\n    return services\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/healthz/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/internal/__init__.py",
    "content": "from .router import router as router\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/internal/router.py",
    "content": "from fastapi import APIRouter, Request\nfrom google.protobuf import json_format\nfrom temporalio.api.common.v1 import Payloads\n\nfrom ...worker.codec import PydanticEncodingPayloadConverter\n\nrouter: APIRouter = APIRouter()\n\nconverter = PydanticEncodingPayloadConverter()\n\n\n# Decode route\n@router.post(\"/temporal/decode\", tags=[\"temporal\"])\nasync def decode_payloads(req: Request):\n    \"\"\"Decodes a list of payloads from the request body.\n\n    Args:\n        req (Request): The request containing the payloads to decode.\n\n    Returns:\n        dict: A dictionary containing the decoded payloads, including any errors encountered.\n    \"\"\"\n    body = json_format.Parse(await req.body(), Payloads())\n    payloads = body.payloads\n    decoded_payloads = []\n\n    for p in payloads:\n        # Attempt to decode the payload\n        data = converter.from_payload(p)\n\n        # Handle Pydantic models\n        if hasattr(data, \"model_dump\"):\n            data = data.model_dump()\n\n        # Handle bytes data\n        elif isinstance(data, bytes):\n            try:\n                data = data.decode(\"utf-8\")\n            except UnicodeDecodeError:\n                # If it's not UTF-8 encoded text, leave it as bytes\n                data = str(data)\n\n        # Convert metadata more safely\n        metadata = {}\n        for k, v in p.metadata.items():\n            try:\n                metadata[k] = v.decode() if isinstance(v, bytes) else v\n            except UnicodeDecodeError:\n                metadata[k] = str(v)\n\n        decoded_payloads.append({\"data\": data, \"metadata\": metadata})\n\n    return {\"payloads\": decoded_payloads}\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/jobs/__init__.py",
    "content": "from .routers import router as router\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/jobs/routers.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom fastapi import APIRouter\nfrom temporalio.client import WorkflowExecutionStatus\n\nfrom ...autogen.openapi_model import JobStatus\nfrom ...clients.temporal import get_client\n\nrouter: APIRouter = APIRouter()\n\n\ndef map_job_status(\n    status: WorkflowExecutionStatus,\n) -> Literal[\n    \"pending\",\n    \"in_progress\",\n    \"retrying\",\n    \"succeeded\",\n    \"aborted\",\n    \"failed\",\n    \"unknown\",\n]:\n    match status:\n        case WorkflowExecutionStatus.RUNNING:\n            return \"in_progress\"\n        case WorkflowExecutionStatus.COMPLETED:\n            return \"succeeded\"\n        case WorkflowExecutionStatus.FAILED:\n            return \"failed\"\n        case WorkflowExecutionStatus.CANCELED:\n            return \"aborted\"\n        case WorkflowExecutionStatus.TERMINATED:\n            return \"aborted\"\n        case WorkflowExecutionStatus.CONTINUED_AS_NEW:\n            return \"in_progress\"\n        case WorkflowExecutionStatus.TIMED_OUT:\n            return \"failed\"\n        case _:\n            return \"unknown\"\n\n\n@router.get(\"/jobs/{job_id}\", tags=[\"jobs\"])\nasync def get_job_status(job_id: UUID) -> JobStatus:\n    client = await get_client()\n    handle = client.get_workflow_handle(\n        workflow_id=str(job_id),\n    )\n    job_description = await handle.describe()\n    state = map_job_status(job_description.status)\n\n    return JobStatus(\n        name=job_description.workflow_type,\n        reason=f\"Execution status: {state}\",\n        created_at=job_description.start_time,\n        updated_at=job_description.execution_time,\n        id=job_id,\n        has_progress=False,\n        progress=0,\n        state=state,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/projects/__init__.py",
    "content": "# ruff: noqa: F401\n\nfrom .create_project import create_project\nfrom .list_projects import list_projects\nfrom .router import router\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/projects/create_project.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import (\n    CreateProjectRequest,\n    Project,\n)\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.projects.create_project import create_project as create_project_query\nfrom .router import router\n\n\n@router.post(\"/projects\", status_code=HTTP_201_CREATED, tags=[\"projects\"])\nasync def create_project(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    data: CreateProjectRequest,\n) -> Project:\n    return await create_project_query(\n        developer_id=x_developer_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/projects/list_projects.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import ListResponse, Project\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...dependencies.query_filter import MetadataFilter, create_filter_extractor\nfrom ...queries.projects.list_projects import list_projects as list_projects_query\nfrom .router import router\n\n\n@router.get(\"/projects\", tags=[\"projects\"])\nasync def list_projects(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    # Expects the dot notation of object in query params\n    # Example:\n    # > ?metadata_filter.name=John&metadata_filter.age=30\n    metadata_filter: Annotated[\n        MetadataFilter,\n        Depends(create_filter_extractor(\"metadata_filter\")),\n    ],\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> ListResponse[Project]:\n    projects = await list_projects_query(\n        developer_id=x_developer_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n        metadata_filter=metadata_filter.model_dump(mode=\"json\") or {},\n    )\n\n    return ListResponse[Project](items=projects)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/projects/router.py",
    "content": "from fastapi import APIRouter\n\nrouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/responses/__init__.py",
    "content": "# ruff: noqa: F401\n\nfrom .create_response import create_response\nfrom .get_response import get_response\nfrom .router import router\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/responses/create_response.py",
    "content": "import asyncio\nfrom typing import Annotated, Any\n\nfrom fastapi import Depends, HTTPException\nfrom fastapi.background import BackgroundTasks\nfrom uuid_extensions import uuid7\n\nfrom ...activities.tool_executor import execute_tool_call, format_tool_results_for_llm\nfrom ...autogen.openapi_model import (\n    ChatResponse,\n    ChunkChatResponse,\n    CreateEntryRequest,\n    CreateResponse,\n    FunctionToolCall,\n    MessageChatResponse,\n    Response,\n)\nfrom ...clients import litellm\nfrom ...common.protocol.developers import Developer\nfrom ...common.utils.datetime import utcnow\nfrom ...dependencies.developer_id import get_developer_data\nfrom ...queries.entries.create_entries import create_entries\nfrom ...routers.utils.model_converters import (\n    convert_chat_response_to_response,\n    convert_create_response,\n)\nfrom ..sessions.legacy.render import render_chat_input\nfrom ..sessions.metrics import total_tokens_per_user\nfrom .router import router\n\n\nasync def process_tool_calls(\n    current_messages: list[dict[str, Any]],\n    tool_call_requests: list[dict[str, Any]] | None,\n) -> list[dict[str, Any]]:\n    \"\"\"\n    Process any tool calls from the model response, execute them, and prepare\n    messages for a follow-up model call if needed.\n\n    Args:\n        current_messages: The current message history\n        tool_call_requests: The response from the model containing tool calls\n\n    Returns:\n        Updated messages with tool results appended\n    \"\"\"\n    # Early exit if no tool calls to process\n    if not tool_call_requests:\n        return current_messages\n\n    # Find the last assistant message with tool_calls\n    # This is more efficient than iterating through the entire list\n    for i in range(len(current_messages) - 1, -1, -1):\n        if current_messages[i].get(\"role\") == \"assistant\" and current_messages[i].get(\n            \"tool_calls\"\n        ):\n            break\n    else:\n        # No assistant message with tool_calls found\n        return current_messages\n\n    # Execute all tool calls in parallel\n    async def execute_tool_calls_async(tool_call: dict[str, Any]):\n        # Execute the tool call\n        tool_result = await execute_tool_call(tool_call)\n        # Format results for the LLM\n        return format_tool_results_for_llm(tool_result)\n\n    # Create and execute tasks for all tool calls at once\n    tasks = [execute_tool_calls_async(tool_call) for tool_call in tool_call_requests]\n    formatted_results = await asyncio.gather(*tasks)\n\n    # Extend the current messages with all formatted results\n    current_messages.extend(formatted_results)\n\n    return current_messages\n\n\ndef is_reasoning_model(model: str) -> bool:\n    return model in [\"o1\", \"o1-mini\", \"o1-preview\", \"o3-mini\"]\n\n\n@router.post(\"/responses\", tags=[\"responses\"])\nasync def create_response(\n    developer: Annotated[Developer, Depends(get_developer_data)],\n    create_response_data: CreateResponse,\n    background_tasks: BackgroundTasks,\n) -> Response:\n    if create_response_data.tools:\n        for tool in create_response_data.tools:\n            if tool.type == \"computer-preview\":\n                raise HTTPException(\n                    status_code=400, detail=\"Computer preview is not supported yet\"\n                )\n\n    _agent, session, chat_input = await convert_create_response(\n        developer.id,\n        create_response_data,\n    )\n    session_id = session.id\n    x_custom_api_key = None\n    # Chat function\n    (\n        messages,\n        doc_references,\n        _formatted_tools,\n        settings,\n        new_messages,\n        chat_context,\n    ) = await render_chat_input(\n        developer=developer,\n        session_id=session_id,\n        chat_input=chat_input,\n    )\n\n    if settings.get(\"stop\") == []:\n        settings.pop(\"stop\")\n\n    # Prepare tools for the model - pass through tools as is\n    tools_list = [tool.model_dump() for tool in chat_input.tools] if chat_input.tools else []\n\n    # top_p is not supported for reasoning models\n    if is_reasoning_model(model=settings[\"model\"]) and settings.get(\"top_p\"):\n        settings.pop(\"top_p\")\n\n    # Use litellm for the models\n    params = {\n        \"messages\": messages,\n        \"tools\": tools_list or None,\n        \"user\": str(developer.id),\n        \"tags\": developer.tags,\n        \"custom_api_key\": x_custom_api_key,\n    }\n    payload = {**settings, **params}\n\n    if create_response_data.reasoning:\n        if is_reasoning_model(model=payload[\"model\"]):\n            # Enable reasoning for supported models\n            payload[\"reasoning_effort\"] = create_response_data.reasoning.effort\n            if create_response_data.reasoning.generate_summary:\n                raise HTTPException(\n                    status_code=400, detail=\"Generate summary is not supported yet\"\n                )\n        else:\n            raise HTTPException(\n                status_code=400, detail=\"Reasoning is not supported for this model\"\n            )\n\n    # Get initial model response\n    model_response = await litellm.acompletion(**payload)\n\n    # Model response is a list of choices\n    assistant_message = model_response.choices[0].message\n\n    # Extract web search tool call if it exists\n    tool_call_requests = assistant_message.tool_calls\n\n    performed_tool_calls = []\n    function_tool_requests: list[FunctionToolCall] = []\n    # Process tool calls if present (including multiple recursive tool calls if needed)\n    if tool_call_requests and tools_list:\n        # Start with the original messages\n        current_messages = messages.copy()\n\n        # Add the initial assistant message\n        current_messages.append(assistant_message.model_dump())\n\n        # Track if there are more tool calls to process\n        has_tool_calls = True\n\n        # Set a reasonable limit for tool call iterations to prevent infinite loops\n        max_iterations = 20\n        iterations = 0\n\n        # Process tool calls in a loop until no more calls or max iterations reached\n        while has_tool_calls and iterations < max_iterations:\n            iterations += len(tool_call_requests)\n\n            # Do not process original function tool calls. They will be sent to the user as is.\n            if (\n                tool_call_requests[0].type == \"function\"\n                and tool_call_requests[0].function.name != \"web_search_preview\"\n            ):\n                function_tool_requests.append(\n                    FunctionToolCall(\n                        id=tool_call_requests[0].id,\n                        call_id=tool_call_requests[0].id,\n                        name=tool_call_requests[0].function.name,\n                        arguments=tool_call_requests[0].function.arguments,\n                        status=\"completed\",\n                    )\n                )\n                break\n\n            # Process tool calls and get updated messages\n            current_messages = await process_tool_calls(current_messages, tool_call_requests)\n\n            performed_tool_calls.extend(tool_call_requests)\n            # Make a follow-up call to the model with updated messages\n            response_params = {\n                \"messages\": current_messages,\n                \"tools\": tools_list,\n                \"user\": str(developer.id),\n                \"tags\": developer.tags,\n                \"custom_api_key\": x_custom_api_key,\n            }\n            response_payload = {**settings, **response_params}\n\n            # Get model response\n            model_response = await litellm.acompletion(**response_payload)\n            assistant_message = model_response.choices[0].message\n\n            # Add the assistant message to the current messages\n            current_messages.append(assistant_message.model_dump())\n\n            # Check if there are more tool calls to process\n            has_tool_calls = bool(\n                assistant_message.tool_calls\n                and model_response.choices[0].finish_reason == \"tool_calls\"\n            )\n\n            # Update tool calls for next iteration\n            tool_call_requests = assistant_message.tool_calls\n\n        # After loop completes, current_messages contains the full conversation\n        all_interaction_messages = current_messages\n\n        # Save all the interaction history if requested\n        if chat_input.save:\n            # Create entry requests for all interactions\n            new_entries = []\n\n            # Add the user message\n            new_entries.extend([\n                CreateEntryRequest.from_model_input(\n                    model=settings[\"model\"],\n                    **msg,\n                    source=\"api_request\",\n                )\n                for msg in new_messages\n            ])\n\n            # Add all the tool interaction messages\n            for msg in all_interaction_messages[len(messages) :]:\n                # Skip messages already included from new_messages\n                if msg.get(\"role\") == \"user\" and any(\n                    nm.get(\"content\") == msg.get(\"content\") for nm in new_messages\n                ):\n                    continue\n\n                new_entries.append(\n                    CreateEntryRequest.from_model_input(\n                        model=settings[\"model\"],\n                        **msg,\n                        source=\"api_response\"\n                        if msg.get(\"role\") == \"assistant\"\n                        else \"tool_response\",\n                    )\n                )\n\n            # Save all entries\n            background_tasks.add_task(\n                create_entries,\n                developer_id=developer.id,\n                session_id=session_id,\n                data=new_entries,\n            )\n    else:\n        # No tool calls, just save the standard input and response\n        if chat_input.save:\n            new_entries = [\n                CreateEntryRequest.from_model_input(\n                    model=settings[\"model\"],\n                    **msg,\n                    source=\"api_request\",\n                )\n                for msg in new_messages\n            ]\n\n            # Add the response to the new entries\n            new_entries.append(\n                CreateEntryRequest.from_model_input(\n                    model=settings[\"model\"],\n                    **model_response.choices[0].model_dump()[\"message\"],\n                    source=\"api_response\",\n                ),\n            )\n            background_tasks.add_task(\n                create_entries,\n                developer_id=developer.id,\n                session_id=session_id,\n                data=new_entries,\n            )\n\n    # Adaptive context handling\n    jobs = []\n    if chat_context.session.context_overflow == \"adaptive\":\n        # FIXME: Start the adaptive context workflow\n        # SCRUM-8\n\n        # jobs = [await start_adaptive_context_workflow]\n        msg = \"Adaptive context is not yet implemented\"\n        raise NotImplementedError(msg)\n\n    # Return the response\n    # FIXME: Implement streaming for chat\n    chat_response_class = ChunkChatResponse if chat_input.stream else MessageChatResponse\n\n    chat_response: ChatResponse = chat_response_class(\n        id=uuid7(),\n        created_at=utcnow(),\n        jobs=jobs,\n        docs=doc_references,\n        usage=model_response.usage.model_dump(),\n        choices=[choice.model_dump() for choice in model_response.choices],\n    )\n\n    total_tokens_per_user.labels(str(developer.id)).inc(\n        amount=chat_response.usage.total_tokens if chat_response.usage is not None else 0,\n    )\n\n    # End chat function\n    return convert_chat_response_to_response(\n        create_response=create_response_data,\n        chat_response=chat_response,\n        chat_input=chat_input,\n        session_id=session_id,\n        user_id=developer.id,\n        function_tool_requests=function_tool_requests,\n        performed_tool_calls=performed_tool_calls,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/responses/get_response.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends, HTTPException, Query\n\nfrom ...autogen.Entries import History\nfrom ...autogen.openapi_model import (\n    Includable,\n    InputTokensDetails,\n    OutputMessage,\n    OutputText,\n    OutputTokensDetails,\n    ResponseUsage,\n    Text,\n)\nfrom ...autogen.Responses import (\n    ComputerToolCall,\n    FileSearchToolCall,\n    FunctionToolCall,\n    ReasoningItem,\n    Response,\n    ResponseFormatText,\n    WebSearchToolCall,\n)\nfrom ...common.protocol.developers import Developer\nfrom ...dependencies.developer_id import get_developer_data\nfrom ...queries.entries.get_history import get_history as get_history_query\nfrom .router import router\n\n\n@router.get(\"/responses/{response_id}\", tags=[\"responses\"])\nasync def get_response(\n    response_id: UUID,\n    developer: Annotated[Developer, Depends(get_developer_data)],\n    include: Annotated[list[Includable], Query()] = [],\n) -> Response:\n    # TODO: Continue the implementation of the logic to get a response by id\n\n    session_id = response_id\n\n    session_history: History = await get_history_query(\n        developer_id=developer.id, session_id=session_id\n    )\n\n    if not session_history.entries:\n        raise HTTPException(status_code=404, detail=\"Provided response id does not exist\")\n\n    last_entries = []\n\n    for i, entry in enumerate(reversed(session_history.entries)):\n        if entry.role in [\"user\", \"developer\"]:\n            # Take all entries after the current entry\n            last_entries = session_history.entries[len(session_history.entries) - i :]\n            break\n\n    if not last_entries:\n        raise HTTPException(\n            status_code=404, detail=\"No response was found for the provided response id\"\n        )\n\n    last_entry = last_entries[-1]\n\n    output: list[\n        OutputMessage\n        | FileSearchToolCall\n        | FunctionToolCall\n        | WebSearchToolCall\n        | ComputerToolCall\n        | ReasoningItem\n    ] = []\n\n    for entry in last_entries:\n        if entry.tool_calls:\n            for tool_call in entry.tool_calls:\n                if tool_call.type == \"function\":\n                    # Specific case of the mapped `web_search_preview` tool call\n                    if tool_call.function.name == \"web_search_preview\":\n                        output.append(\n                            WebSearchToolCall(\n                                id=tool_call.id,\n                                status=\"completed\",\n                            )\n                        )\n                    else:\n                        # Generic case for all other `function` tool calls\n                        output.append(\n                            FunctionToolCall(\n                                id=tool_call.id,\n                                call_id=tool_call.id,  # FIXME: Check this\n                                name=tool_call.function.name,\n                                arguments=tool_call.function.arguments,\n                                status=\"completed\",\n                            )\n                        )\n        else:\n            output.append(\n                OutputMessage(\n                    type=\"message\",\n                    id=str(entry.id),\n                    status=\"completed\",\n                    role=entry.role,\n                    content=[\n                        OutputText(\n                            type=\"output_text\",\n                            text=entry.content[0].text,\n                            annotations=[],\n                        )\n                    ],\n                )\n            )\n\n    return Response(\n        id=str(response_id),\n        object=\"response\",\n        created_at=int(last_entry.created_at.timestamp()),\n        status=\"completed\",\n        error=None,\n        incomplete_details=None,\n        instructions=None,\n        max_output_tokens=None,\n        model=last_entry.model,\n        output=output,\n        parallel_tool_calls=True,\n        previous_response_id=None,\n        # FIXME: We are not storing reasoning. So returning None for now.\n        reasoning=None,\n        store=True,\n        temperature=1.0,\n        text=Text(format=ResponseFormatText(type=\"text\")),  # FIXME: Add the correct format\n        tool_choice=\"auto\",\n        tools=[],\n        top_p=1.0,\n        truncation=\"disabled\",\n        usage=ResponseUsage(\n            input_tokens=0,\n            input_tokens_details=InputTokensDetails(cached_tokens=0),\n            output_tokens=sum(entry.token_count for entry in last_entries),\n            output_tokens_details=OutputTokensDetails(reasoning_tokens=0),\n            total_tokens=sum(entry.token_count for entry in last_entries),\n        ),\n        user=None,\n        metadata={},\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/responses/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/secrets/__init__.py",
    "content": "# from .create_secret import create_agent_secret as create_agent_secret\nfrom .create_secret import create_developer_secret as create_developer_secret\n\n# from .delete_secret import delete_agent_secret as delete_agent_secret\nfrom .delete_secret import delete_developer_secret as delete_developer_secret\n\n# from .list_secrets import list_agent_secrets as list_agent_secrets\nfrom .list_secrets import list_developer_secrets as list_developer_secrets\nfrom .router import router as router\n\n# from .update_secret import update_agent_secret as update_agent_secret\nfrom .update_secret import update_developer_secret as update_developer_secret\n\n# TODO: Add get_secret_by_name endpoint\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/secrets/create_secret.py",
    "content": "\"\"\"Create secret endpoint.\"\"\"\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom agents_api.autogen.openapi_model import CreateSecretRequest, Secret\n\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.secrets import create_secret as create_secret_query\nfrom .router import router\n\n\n@router.post(\"/secrets\", status_code=HTTP_201_CREATED, tags=[\"secrets\"])\nasync def create_developer_secret(\n    *,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    secret: CreateSecretRequest,\n) -> Secret:\n    \"\"\"Create a new secret for a developer.\n\n    Args:\n        developer_id: ID of the developer creating the secret\n        secret: Secret to create\n\n    Returns:\n        The created secret\n\n    Raises:\n        HTTPException: If a secret with this name already exists (409 Conflict)\n    \"\"\"\n    return await create_secret_query(\n        developer_id=x_developer_id,\n        name=secret.name,\n        description=secret.description,\n        value=secret.value,\n        metadata=secret.metadata,\n    )\n\n\n# @router.post(\"/agents/{agent_id}/secrets\", response_model=Secret)\n# async def create_agent_secret(\n#     agent_id: UUID,\n#     secret: CreateSecretRequest,\n# ) -> Secret:\n#     \"\"\"Create a new secret for an agent.\n\n#     Args:\n#         agent_id: ID of the agent creating the secret\n#         secret: Secret to create\n\n#     Returns:\n#         The created secret\n\n#     Raises:\n#         HTTPException: If a secret with this name already exists (409 Conflict)\n#     \"\"\"\n#     return await create_secret_query(\n#         agent_id=agent_id,\n#         name=secret.name,\n#         description=secret.description,\n#         value=secret.value,\n#         metadata=secret.metadata,\n#     )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/secrets/delete_secret.py",
    "content": "\"\"\"Delete secret endpoint.\"\"\"\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_202_ACCEPTED\n\nfrom agents_api.autogen.openapi_model import ResourceDeletedResponse\n\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.secrets import delete_secret as delete_secret_query\nfrom .router import router\n\n\n@router.delete(\n    \"/secrets/{secret_id}\",\n    response_model=ResourceDeletedResponse,\n    status_code=HTTP_202_ACCEPTED,\n    tags=[\"secrets\"],\n)\nasync def delete_developer_secret(\n    *,\n    secret_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ResourceDeletedResponse:\n    \"\"\"Delete a secret.\n\n    Args:\n        secret_id: ID of the secret to delete\n        x_developer_id: ID of the developer who owns the secret\n\n    Returns:\n        The deleted secret\n\n    Raises:\n        HTTPException: If the secret doesn't exist\n    \"\"\"\n    return await delete_secret_query(secret_id=secret_id, developer_id=x_developer_id)\n\n\n# @router.delete(\"/agents/{agent_id}/secrets/{secret_id}\", response_model=ResourceDeletedResponse)\n# async def delete_agent_secret(\n#     agent_id: UUID,\n#     secret_id: UUID,\n# ) -> ResourceDeletedResponse:\n#     \"\"\"Delete a secret.\n\n#     Args:\n#         secret_id: ID of the secret to delete\n#         conn: Database connection\n#         developer_id: ID of the developer who owns the secret\n\n#     Returns:\n#         The deleted secret\n\n#     Raises:\n#         HTTPException: If the secret doesn't exist\n#     \"\"\"\n#     return await delete_secret_query(secret_id=secret_id, agent_id=agent_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/secrets/list_secrets.py",
    "content": "\"\"\"List secrets endpoint.\"\"\"\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Secret\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.secrets import list_secrets as list_secrets_query\nfrom .router import router\n\n\n@router.get(\"/secrets\", response_model=list[Secret], tags=[\"secrets\"])\nasync def list_developer_secrets(\n    *,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    limit: int = 100,\n    offset: int = 0,\n) -> list[Secret]:\n    \"\"\"List all secrets for a developer.\n\n    Args:\n        x_developer_id: ID of the developer whose secrets to list\n        limit: Maximum number of secrets to return\n        offset: Number of secrets to skip\n\n    Returns:\n        List of secrets\n    \"\"\"\n    return await list_secrets_query(\n        developer_id=x_developer_id,\n        limit=limit,\n        offset=offset,\n    )\n\n\n# @router.get(\"/agents/{agent_id}/secrets\", response_model=list[Secret])\n# async def list_agent_secrets(\n#     agent_id: UUID,\n#     *,\n#     limit: int = 100,\n#     offset: int = 0,\n# ) -> list[Secret]:\n#     \"\"\"List all secrets for an agent.\n\n#     Args:\n#         agent_id: ID of the agent whose secrets to list\n#         limit: Maximum number of secrets to return\n#         offset: Number of secrets to skip\n\n#     Returns:\n#         List of secrets\n#     \"\"\"\n#     return await list_secrets_query(\n#         agent_id=agent_id,\n#         limit=limit,\n#         offset=offset,\n#     )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/secrets/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/secrets/update_secret.py",
    "content": "\"\"\"Update secret endpoint.\"\"\"\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Secret, UpdateSecretRequest\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.secrets import update_secret as update_secret_query\nfrom .router import router\n\n\n@router.put(\"/secrets/{secret_id}\", tags=[\"secrets\"])\nasync def update_developer_secret(\n    *,\n    secret_id: UUID,\n    data: UpdateSecretRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> Secret:\n    \"\"\"Update a developer secret.\n\n    Args:\n        developer_id: ID of the developer who owns the secret\n        secret_id: ID of the secret to update\n        data: New secret data\n\n    Returns:\n        The updated secret\n\n    Raises:\n        HTTPException: If the secret doesn't exist or doesn't belong to the developer\n    \"\"\"\n    return await update_secret_query(\n        secret_id=secret_id,\n        developer_id=x_developer_id,\n        name=data.name,\n        description=data.description,\n        metadata=data.metadata,\n        value=data.value,\n    )\n\n\n# @router.put(\"/agents/{agent_id}/secrets/{secret_id}\", response_model=Secret)\n# async def update_agent_secret(\n#     agent_id: UUID,\n#     secret_id: UUID,\n#     data: UpdateSecretRequest,\n# ) -> Secret:\n#     \"\"\"Update an agent secret.\n\n#     Args:\n#         agent_id: ID of the agent who owns the secret\n#         secret_id: ID of the secret to update\n#         data: New secret data\n\n#     Returns:\n#         The updated secret\n\n#     Raises:\n#         HTTPException: If the secret doesn't exist or doesn't belong to the agent\n#     \"\"\"\n#     return await update_secret_query(\n#         secret_id=secret_id,\n#         agent_id=agent_id,\n#         name=data.name,\n#         description=data.description,\n#         metadata=data.metadata,\n#         value=data.value,\n#     )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/__init__.py",
    "content": "# ruff: noqa: F401\n\nfrom .chat import chat\nfrom .create_or_update_session import create_or_update_session\nfrom .create_session import create_session\nfrom .delete_session import delete_session\nfrom .get_session import get_session\nfrom .get_session_history import get_session_history\nfrom .list_sessions import list_sessions\nfrom .patch_session import patch_session\nfrom .render import render\nfrom .router import router\nfrom .update_session import update_session\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/auto_tools/__init__.py",
    "content": ""
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/auto_tools/chat.py",
    "content": "\"\"\"\nChat implementation with automatic tool execution support.\nWhen auto_run_tools is enabled, this implementation will automatically execute tools\nand feed results back to the model.\n\"\"\"\n\nfrom typing import Any\nfrom uuid import UUID\n\nfrom fastapi import BackgroundTasks, HTTPException\nfrom fastapi.responses import StreamingResponse\nfrom uuid_extensions import uuid7\n\nfrom ....autogen.openapi_model import (\n    BaseChosenToolCall,\n    ChatInput,\n    CreateEntryRequest,\n    MessageChatResponse,\n    Tool,\n    ToolExecutionResult,\n)\nfrom ....clients import litellm\nfrom ....common.protocol.developers import Developer\nfrom ....common.utils.datetime import utcnow\nfrom ....common.utils.tool_runner import run_llm_with_tools, run_tool_call\nfrom ....queries.entries.create_entries import create_entries\n\n# Entry saving logic will be implemented directly in this file\nfrom ..metrics import total_tokens_per_user\nfrom .render import render_chat_input\n\nCOMPUTER_USE_BETA_FLAG = \"computer-use-2024-10-22\"\n\n\nasync def chat(\n    developer: Developer,\n    session_id: UUID,\n    chat_input: ChatInput,\n    background_tasks: BackgroundTasks,\n    x_custom_api_key: str | None = None,\n    mock_response: str | None = None,\n    connection_pool: Any = None,  # This is for testing purposes\n) -> MessageChatResponse | StreamingResponse:\n    \"\"\"\n    Chat implementation with automatic tool execution.\n\n    When chat_input.auto_run_tools is True, tools are executed automatically.\n    When False, tools are not passed to the model to prevent tool calls.\n\n    Note: Streaming is not supported when tools are involved.\n\n    Parameters:\n        developer (Developer): The developer associated with the chat session.\n        session_id (UUID): The unique identifier of the chat session.\n        chat_input (ChatInput): The chat input data with auto_run_tools flag.\n        background_tasks (BackgroundTasks): The background tasks to run.\n        x_custom_api_key (Optional[str]): The custom API key.\n        mock_response (Optional[str]): Mock response for testing.\n        connection_pool: Connection pool for testing purposes.\n\n    Returns:\n        MessageChatResponse: The chat response (no streaming with tools).\n    \"\"\"\n    (\n        messages,\n        doc_references,\n        tools,  # auto_tools/render.py returns actual tools, not formatted\n        settings,\n        new_messages,\n        chat_context,\n    ) = await render_chat_input(\n        developer=developer,\n        session_id=session_id,\n        chat_input=chat_input,\n    )\n\n    # Determine tools to use based on auto_run_tools\n    # AIDEV-NOTE: When auto_run_tools=False, pass empty tools list to prevent\n    # model from making tool calls that won't be executed. This simplifies the\n    # flow as the model will always return a regular completion instead of tool calls.\n    tools_to_use = tools if chat_input.auto_run_tools else []\n\n    # Check if streaming is requested with tools\n    if chat_input.stream and tools_to_use:\n        # Streaming with tools is not supported\n        msg = \"Streaming is not supported when auto_run_tools is enabled\"\n        raise HTTPException(status_code=400, detail=msg)\n\n    # Prepare base parameters\n    completion_data = {\n        \"model\": settings[\"model\"],\n        \"user\": str(developer.id),\n        \"tags\": developer.tags,\n        \"custom_api_key\": x_custom_api_key,\n        \"mock_response\": mock_response,\n        **settings,\n    }\n\n    # Remove messages from completion_data if it exists to avoid duplicate parameter error\n    completion_data.pop(\"messages\", None)\n    completion_data.pop(\"tools\", None)\n\n    # Always use tool execution loop for consistency\n    # Get the first agent from the chat context\n    if not chat_context.agents:\n        msg = \"No agent found for the session\"\n        raise HTTPException(status_code=400, detail=msg)\n\n    agent = chat_context.agents[0]\n\n    # Create a partial function for tool execution with chat context\n    async def run_tool_partial(tool: Tool, call: BaseChosenToolCall) -> ToolExecutionResult:\n        return await run_tool_call(\n            developer_id=developer.id,\n            agent_id=agent.id,\n            task_id=None,  # No task in chat context\n            session_id=session_id,\n            tool=tool,\n            call=call,\n            connection_pool=connection_pool,\n        )\n\n    # Handle streaming for non-tool cases\n    if chat_input.stream and not tools_to_use:\n        # Import streaming function from legacy implementation\n        from ..legacy.chat import stream_chat_response\n\n        # Prepare parameters for LiteLLM\n        params = {\n            \"messages\": messages,\n            \"tools\": None,  # No tools when streaming\n            \"stream\": True,\n            \"stream_options\": {\"include_usage\": True},\n            **completion_data,\n        }\n\n        # Get streaming response from LiteLLM\n        model_response = await litellm.acompletion(**params)\n\n        # Save input messages if requested\n        if chat_input.save:\n            new_entries = [\n                CreateEntryRequest.from_model_input(\n                    model=settings[\"model\"],\n                    **msg,\n                    source=\"api_request\",\n                )\n                for msg in new_messages\n            ]\n\n            background_tasks.add_task(\n                create_entries,\n                developer_id=developer.id,\n                session_id=session_id,\n                data=new_entries,\n            )\n\n        # Return streaming response\n        return StreamingResponse(\n            stream_chat_response(\n                model_response=model_response,\n                developer_id=developer.id,\n                doc_references=doc_references,\n                should_save=chat_input.save,\n                session_id=session_id,\n                model=settings[\"model\"],\n                background_tasks=background_tasks,\n                messages=messages,\n                custom_api_key_used=x_custom_api_key is not None,\n                developer_tags=developer.tags,\n                connection_pool=connection_pool,\n            ),\n            media_type=\"text/event-stream\",\n        )\n\n    # Run LLM with automatic tool execution (tools=[] when auto_run_tools=False)\n    all_messages = await run_llm_with_tools(\n        messages=messages,\n        tools=tools_to_use,  # Empty list when auto_run_tools=False\n        settings=completion_data,\n        run_tool_call=run_tool_partial,\n    )\n\n    # The last message is the final response\n    final_response = all_messages[-1]\n\n    # Save all messages to history if requested\n    if chat_input.save:\n        # Save input messages\n        entries_to_save = [\n            CreateEntryRequest.from_model_input(\n                model=settings[\"model\"],\n                **msg,\n                source=\"api_request\",\n            )\n            for msg in new_messages\n        ]\n\n        # Save all generated messages (including tool calls and results)\n        # Correctly label each message based on its type\n        for msg in all_messages[len(messages) :]:\n            role = msg.get(\"role\")\n            # Determine the correct source based on message type\n            if role == \"assistant\" and msg.get(\"tool_calls\"):\n                source = \"tool_request\"\n            elif role == \"assistant\":\n                source = \"api_response\"\n            elif role == \"tool\":\n                source = \"tool_response\"\n            else:\n                source = \"api_request\"  # fallback, shouldn't happen\n\n            entries_to_save.append(\n                CreateEntryRequest.from_model_input(\n                    model=settings[\"model\"],\n                    **msg,\n                    source=source,\n                )\n            )\n\n        background_tasks.add_task(\n            create_entries,\n            developer_id=developer.id,\n            session_id=session_id,\n            data=entries_to_save,\n        )\n\n    # Create non-streaming response\n    # Extract the final message content from the last message\n    final_content = final_response.get(\"content\", \"\")\n    final_tool_calls = final_response.get(\"tool_calls\")\n\n    # For usage data, we would need to track this in run_llm_with_tools\n    usage_data = {\n        \"prompt_tokens\": 0,\n        \"completion_tokens\": 0,\n        \"total_tokens\": 0,\n    }\n\n    chat_response = MessageChatResponse(\n        id=uuid7(),\n        created_at=utcnow(),\n        jobs=[],\n        docs=doc_references,\n        usage=usage_data,\n        choices=[\n            {\n                \"index\": 0,\n                \"message\": {\n                    \"role\": \"assistant\",\n                    \"content\": final_content,\n                    \"tool_calls\": final_tool_calls,\n                },\n                \"finish_reason\": \"stop\",\n            }\n        ],\n    )\n\n    # Track usage metrics\n    if usage_data.get(\"total_tokens\", 0) > 0:\n        total_tokens_per_user.labels(str(developer.id)).inc(amount=usage_data[\"total_tokens\"])\n\n    return chat_response\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/auto_tools/render.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends, HTTPException, status\n\nfrom ....autogen.openapi_model import (\n    ChatInput,\n    DocReference,\n    RenderResponse,\n)\nfrom ....common.protocol.developers import Developer\nfrom ....common.protocol.sessions import ChatContext\nfrom ....common.utils.template import render_template\nfrom ....dependencies.developer_id import get_developer_data\nfrom ....env import max_free_sessions\nfrom ....queries.chat.gather_messages import gather_messages\nfrom ....queries.chat.prepare_chat_context import prepare_chat_context\nfrom ....queries.sessions.count_sessions import count_sessions as count_sessions_query\nfrom ...utils.model_validation import validate_model\n\nCOMPUTER_USE_BETA_FLAG = \"computer-use-2024-10-22\"\n\n\nasync def render(\n    developer: Annotated[Developer, Depends(get_developer_data)],\n    session_id: UUID,\n    chat_input: ChatInput,\n) -> RenderResponse:\n    \"\"\"\n    Renders a chat input.\n\n    Parameters:\n        developer (Developer): The developer associated with the chat session.\n        session_id (UUID): The unique identifier of the chat session.\n        chat_input (ChatInput): The chat input data.\n\n    Returns:\n        RenderResponse: The rendered chat input.\n    \"\"\"\n\n    messages, doc_references, tools, *_ = await render_chat_input(\n        developer=developer,\n        session_id=session_id,\n        chat_input=chat_input,\n    )\n\n    return RenderResponse(messages=messages, docs=doc_references, tools=tools)\n\n\nasync def render_chat_input(\n    developer: Developer,\n    session_id: UUID,\n    chat_input: ChatInput,\n) -> tuple[list[dict], list[DocReference], list[dict] | None, dict, list[dict], ChatContext]:\n    # check if the developer is paid\n    if \"paid\" not in developer.tags:\n        # get the session length\n        sessions = await count_sessions_query(developer_id=developer.id)\n        session_length = sessions[\"count\"]\n        if session_length > max_free_sessions:\n            raise HTTPException(\n                status_code=status.HTTP_403_FORBIDDEN,\n                detail=\"Session length exceeded the free tier limit\",\n            )\n\n    # First get the chat context\n    chat_context: ChatContext = await prepare_chat_context(\n        developer_id=developer.id,\n        session_id=session_id,\n    )\n\n    # Merge the settings and prepare environment\n    chat_context.merge_settings(chat_input)\n    settings: dict = chat_context.settings or {}\n\n    await validate_model(settings.get(\"model\"))\n\n    # Get the past messages and doc references\n    past_messages, doc_references = await gather_messages(\n        developer=developer,\n        session_id=session_id,\n        chat_context=chat_context,\n        chat_input=chat_input,\n    )\n\n    # Prepare the environment\n    env: dict = chat_context.get_chat_environment()\n    env[\"docs\"] = [\n        {\n            \"title\": ref.title,\n            \"content\": [ref.snippet.content],\n            \"metadata\": ref.metadata or None,\n        }\n        for ref in doc_references\n    ]\n\n    # Add metadata from chat_input to the environment\n    # AIDEV-NOTE: metadata field enables dynamic instructions at message level via system template\n    if hasattr(chat_input, \"metadata\") and chat_input.metadata:\n        env[\"metadata\"] = chat_input.metadata\n\n    # Render the system message\n    if system_template := chat_context.merge_system_template(\n        chat_context.session.system_template,\n    ):\n        system_message = {\n            \"role\": \"system\",\n            \"content\": system_template,\n        }\n        system_messages: list[dict] = await render_template([system_message], variables=env)\n        past_messages = system_messages + past_messages\n\n    # Render the incoming messages\n    new_raw_messages = [msg.model_dump(mode=\"json\") for msg in chat_input.messages]\n\n    if chat_context.session.render_templates:\n        new_messages = await render_template(new_raw_messages, variables=env)\n    else:\n        new_messages = new_raw_messages\n\n    # Combine the past messages with the new messages\n    messages = past_messages + new_messages\n\n    # Get the agent tools\n    tools = chat_context.get_active_tools()\n    # If the user has provided tools, add them to the tools, but only if they are not already in the tools\n    if chat_input.tools:\n        existing_tool_names = {tool.name for tool in tools}\n        for tool in chat_input.tools:\n            if tool.name not in existing_tool_names:\n                tools.append(tool)\n\n    # FIXME: Truncate chat messages in the chat context\n    # SCRUM-7\n    if chat_context.session.context_overflow == \"truncate\":\n        # messages = messages[-settings[\"max_tokens\"] :]\n        msg = \"Truncation is not yet implemented\"\n        raise NotImplementedError(msg)\n\n    # FIXME: Hotfix for datetime not serializable. Needs investigation\n    messages = [\n        {\n            k: v\n            for k, v in m.items()\n            if k in [\"role\", \"content\", \"tool_calls\", \"tool_call_id\", \"user\"]\n        }\n        for m in messages\n    ]\n\n    # HOTFIX: for groq calls, litellm expects tool_calls_id not to be in the messages\n    # FIXME: This is a temporary fix. We need to update the agent-api to use the new tool calling format\n    is_groq_model = settings.get(\"model\", \"\").lower().startswith(\"llama-3.1\")\n    if is_groq_model:\n        messages = [\n            {\n                k: v\n                for k, v in message.items()\n                if k not in [\"tool_calls\", \"tool_call_id\", \"user\", \"continue_\", \"name\"]\n            }\n            for message in messages\n        ]\n\n    # AIDEV-NOTE: Return actual Tool objects (unformatted) for auto_tools implementation\n    # The auto_tools/chat.py handles tool formatting and execution internally\n    return messages, doc_references, tools, settings, new_messages, chat_context\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/chat.py",
    "content": "\"\"\"\nChat endpoint router with feature flag-based implementation selection.\nRoutes to either legacy or auto-tools implementation based on feature flags.\n\"\"\"\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom fastapi import BackgroundTasks, Depends, Header\nfrom fastapi.responses import StreamingResponse\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import (\n    ChatInput,\n    ChatResponse,\n    MessageChatResponse,\n)\nfrom ...common.protocol.developers import Developer\nfrom ...common.utils.feature_flags import get_feature_flag_value\nfrom ...dependencies.developer_id import get_developer_data\nfrom .router import router\n\n\ndef with_mock_response(r: str | None = None):\n    def wrapper():\n        return r\n\n    return wrapper\n\n\n@router.post(\n    \"/sessions/{session_id}/chat\",\n    status_code=HTTP_201_CREATED,\n    tags=[\"sessions\", \"chat\"],\n    response_model=ChatResponse,\n)\nasync def chat(\n    developer: Annotated[Developer, Depends(get_developer_data)],\n    session_id: UUID,\n    chat_input: ChatInput,\n    background_tasks: BackgroundTasks,\n    x_custom_api_key: Annotated[str | None, Header(alias=\"X-Custom-Api-Key\")] = None,\n    mock_response: Annotated[str | None, Depends(with_mock_response())] = None,\n    connection_pool: Any = None,  # This is for testing purposes\n) -> MessageChatResponse | StreamingResponse:\n    \"\"\"\n    Initiates a chat session.\n\n    Routes to different implementations based on feature flags:\n    - If auto_run_tools_chat feature flag is enabled, uses the new auto-tools implementation\n    - Otherwise, uses the legacy implementation\n\n    Parameters:\n        developer (Developer): The developer associated with the chat session.\n        session_id (UUID): The unique identifier of the chat session.\n        chat_input (ChatInput): The chat input data.\n        background_tasks (BackgroundTasks): The background tasks to run.\n        x_custom_api_key (Optional[str]): The custom API key.\n        mock_response (Optional[str]): Mock response for testing.\n        connection_pool: Connection pool for testing purposes.\n\n    Returns:\n        ChatResponse or StreamingResponse: The chat response or streaming response.\n    \"\"\"\n    # Check if auto tools feature is enabled\n    # AIDEV-NOTE: Feature flag controls which implementation to use\n    if get_feature_flag_value(\"auto_run_tools_chat\", developer_id=str(developer.id)):\n        from .auto_tools.chat import chat as chat_auto_tools\n\n        return await chat_auto_tools(\n            developer=developer,\n            session_id=session_id,\n            chat_input=chat_input,\n            background_tasks=background_tasks,\n            x_custom_api_key=x_custom_api_key,\n            mock_response=mock_response,\n            connection_pool=connection_pool,\n        )\n\n    # Default to legacy implementation\n    from .legacy.chat import chat as chat_legacy\n\n    return await chat_legacy(\n        developer=developer,\n        session_id=session_id,\n        chat_input=chat_input,\n        background_tasks=background_tasks,\n        x_custom_api_key=x_custom_api_key,\n        mock_response=mock_response,\n        connection_pool=connection_pool,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/create_or_update_session.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import CreateOrUpdateSessionRequest, Session\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.sessions.create_or_update_session import (\n    create_or_update_session as create_or_update_session_query,\n)\nfrom .router import router\n\n\n@router.post(\"/sessions/{session_id}\", status_code=HTTP_201_CREATED, tags=[\"sessions\"])\nasync def create_or_update_session(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    session_id: UUID,\n    data: CreateOrUpdateSessionRequest,\n) -> Session:\n    return await create_or_update_session_query(\n        developer_id=x_developer_id,\n        session_id=session_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/create_session.py",
    "content": "# AIDEV-NOTE: This module defines the API endpoint for creating new sessions.\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import CreateSessionRequest, Session\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.sessions.create_session import create_session as create_session_query\nfrom .router import router\n\n\n# AIDEV-NOTE: API endpoint to create a new session.\n# It depends on the developer ID and the session data from the request body, and calls the create_session_query function.\n@router.post(\"/sessions\", status_code=HTTP_201_CREATED, tags=[\"sessions\"])\nasync def create_session(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    data: CreateSessionRequest,\n) -> Session:\n    return await create_session_query(\n        developer_id=x_developer_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/delete_session.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_202_ACCEPTED\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.sessions.delete_session import delete_session as delete_session_query\nfrom .router import router\n\n\n@router.delete(\"/sessions/{session_id}\", status_code=HTTP_202_ACCEPTED, tags=[\"sessions\"])\nasync def delete_session(\n    session_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ResourceDeletedResponse:\n    return await delete_session_query(developer_id=x_developer_id, session_id=session_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/exceptions.py",
    "content": "class BaseSessionException(Exception):\n    pass\n\n\nclass InputTooBigError(BaseSessionException):\n    def __init__(self, actual_tokens, required_tokens) -> None:\n        super().__init__(\n            f\"Input is too big, {actual_tokens} tokens provided, but only {required_tokens} tokens are allowed.\",\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/get_session.py",
    "content": "# AIDEV-NOTE: This module defines the API endpoint for retrieving a specific session.\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Session\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.sessions.get_session import get_session as get_session_query\nfrom .router import router\n\n\n# AIDEV-NOTE: API endpoint to get a session by its ID.\n# It depends on the developer ID and the session ID from the path parameter, and calls the get_session_query function.\n@router.get(\"/sessions/{session_id}\", tags=[\"sessions\"])\nasync def get_session(\n    session_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> Session:\n    return await get_session_query(developer_id=x_developer_id, session_id=session_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/get_session_history.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import History\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.entries.get_history import get_history as get_history_query\nfrom .router import router\n\n\n@router.get(\"/sessions/{session_id}/history\", tags=[\"sessions\"])\nasync def get_session_history(\n    session_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> History:\n    return await get_history_query(developer_id=x_developer_id, session_id=session_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/legacy/__init__.py",
    "content": ""
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/legacy/chat.py",
    "content": "from collections.abc import AsyncGenerator\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom fastapi import BackgroundTasks, Depends, Header\nfrom fastapi.responses import StreamingResponse\nfrom litellm.utils import Choices, Message, ModelResponse\nfrom uuid_extensions import uuid7\n\nfrom ....autogen.openapi_model import (\n    ChatInput,\n    ChunkChatResponse,\n    CreateEntryRequest,\n    MessageChatResponse,\n)\nfrom ....clients import litellm\nfrom ....common.protocol.developers import Developer\nfrom ....common.utils.datetime import utcnow\nfrom ....common.utils.usage import track_usage\nfrom ....dependencies.developer_id import get_developer_data\nfrom ....queries.entries.create_entries import create_entries\nfrom ..metrics import total_tokens_per_user\nfrom .render import render_chat_input\n\nCOMPUTER_USE_BETA_FLAG = \"computer-use-2024-10-22\"\n\n\ndef with_mock_response(r: str | None = None):\n    def wrapper():\n        return r\n\n    return wrapper\n\n\ndef _join_deltas(acc: dict, delta: dict) -> dict:\n    acc[\"content\"] = (acc.get(\"content\", \"\") or \"\") + (delta.pop(\"content\", \"\") or \"\")\n    return {**acc, **delta}\n\n\nasync def stream_chat_response(\n    model_response: litellm.CustomStreamWrapper,\n    developer_id: UUID,\n    doc_references: list[Any],\n    should_save: bool = False,\n    session_id: UUID | None = None,\n    model: str = \"\",\n    background_tasks: BackgroundTasks | None = None,\n    messages: list[dict] | None = None,\n    custom_api_key_used: bool = False,\n    developer_tags: list[str] | None = None,\n    connection_pool: Any = None,  # This is for testing purposes\n) -> AsyncGenerator[str, None]:\n    \"\"\"\n    Streams the chat response as Server-Sent Events.\n\n    Args:\n        model_response: The streaming model response from LiteLLM\n        developer_id: The developer ID for usage tracking\n        doc_references: Document references to include in the response\n        should_save: Whether to save the response to history\n        session_id: The session ID for saving response\n        model: The model name used for the response\n        background_tasks: Background tasks for saving responses\n        messages: The original messages sent to the model (for usage tracking)\n        custom_api_key_used: Whether a custom API key was used\n        developer_tags: Tags associated with the developer (for metadata)\n        connection_pool: Connection pool for testing purposes\n    \"\"\"\n    collected_output = []\n    # Variables to collect the complete response for saving to history if needed\n    default_role = \"assistant\"\n    default_finish_reason = \"stop\"\n\n    # Usage information will be collected from the stream response\n    usage_data = None\n\n    # Create initial response with metadata\n    response_id = uuid7()\n    created_time = utcnow()\n\n    # Process all chunks\n    async for chunk in model_response:\n        if not collected_output:\n            collected_output = [{} for _ in range(len(chunk.choices or []))]\n\n        collected_output = [\n            _join_deltas(acc, choice.delta.model_dump())\n            for acc, choice in zip(collected_output, chunk.choices)\n        ]\n\n        # Check if this chunk contains usage data\n        if hasattr(chunk, \"usage\") and chunk.usage:\n            usage_data = chunk.usage.model_dump()\n\n        # Create a proper ChunkChatResponse for each chunk\n        chunk_response = ChunkChatResponse(\n            id=response_id,\n            created_at=created_time,\n            docs=doc_references,\n            jobs=[],\n            usage=usage_data,\n            choices=[\n                {\n                    **choice.model_dump(),\n                    \"delta\": {\n                        **choice.delta.model_dump(),\n                        \"role\": choice.delta.role or default_role,\n                    },\n                    \"finish_reason\": choice.finish_reason or default_finish_reason,\n                }\n                for choice in chunk.choices\n            ],\n        )\n\n        # Forward the chunk as a proper ChunkChatResponse\n        yield f\"data: {chunk_response.model_dump_json()}\\n\\n\"\n\n    # Track token usage with Prometheus metrics if available\n    if usage_data and usage_data.get(\"total_tokens\", 0) > 0:\n        total_tokens_per_user.labels(str(developer_id)).inc(\n            amount=usage_data.get(\"total_tokens\", 0)\n        )\n\n    # Track usage in database\n    await track_usage(\n        developer_id=developer_id,\n        model=model,\n        messages=messages or [],\n        response=ModelResponse(\n            id=str(response_id),\n            choices=[\n                Choices(\n                    message=Message(\n                        content=choice.get(\"content\", \"\"),\n                        tool_calls=choice.get(\"tool_calls\"),\n                    ),\n                )\n                for choice in collected_output\n            ],\n            usage=usage_data,\n        ),\n        custom_api_used=custom_api_key_used,\n        metadata={\n            \"tags\": developer_tags or [],\n            \"streaming\": True,\n        },\n        connection_pool=connection_pool,\n    )\n\n    # Save the complete response if requested\n    if should_save:\n        background_tasks.add_task(\n            create_entries,\n            developer_id=developer_id,\n            session_id=session_id,\n            data=[\n                CreateEntryRequest.from_model_input(\n                    model=model,\n                    **{\n                        **choice,\n                        \"role\": choice.get(\"role\", default_role) or default_role,\n                        \"finish_reason\": choice.get(\"finish_reason\", default_finish_reason)\n                        or default_finish_reason,\n                    },\n                    source=\"api_response\",\n                )\n                for choice in collected_output\n            ],\n        )\n\n\nasync def chat(\n    developer: Annotated[Developer, Depends(get_developer_data)],\n    session_id: UUID,\n    chat_input: ChatInput,\n    background_tasks: BackgroundTasks,\n    x_custom_api_key: Annotated[str | None, Header(alias=\"X-Custom-Api-Key\")] = None,\n    mock_response: Annotated[str | None, Depends(with_mock_response())] = None,\n    connection_pool: Any = None,  # This is for testing purposes\n) -> MessageChatResponse | StreamingResponse:\n    \"\"\"\n    Initiates a chat session.\n\n    Parameters:\n        developer (Developer): The developer associated with the chat session.\n        session_id (UUID): The unique identifier of the chat session.\n        chat_input (ChatInput): The chat input data.\n        background_tasks (BackgroundTasks): The background tasks to run.\n        x_custom_api_key (Optional[str]): The custom API key.\n\n    Returns:\n        ChatResponse or StreamingResponse: The chat response or streaming response.\n    \"\"\"\n    (\n        messages,\n        doc_references,\n        formatted_tools,\n        settings,\n        new_messages,\n        chat_context,\n    ) = await render_chat_input(\n        developer=developer,\n        session_id=session_id,\n        chat_input=chat_input,\n    )\n\n    # Prepare parameters for LiteLLM\n    params = {\n        \"messages\": messages,\n        \"tools\": formatted_tools or None,\n        \"user\": str(developer.id),\n        \"tags\": developer.tags,\n        \"custom_api_key\": x_custom_api_key,\n    }\n\n    # Set streaming parameter based on chat_input.stream\n    if chat_input.stream:\n        params[\"stream\"] = True\n        params[\"stream_options\"] = {\"include_usage\": True}\n\n    payload = {**settings, **params, \"mock_response\": mock_response}\n\n    # Get response from LiteLLM (streaming or non-streaming)\n    model_response = await litellm.acompletion(**payload)\n\n    # Save the input messages to the session history if requested\n    if chat_input.save:\n        new_entries = [\n            CreateEntryRequest.from_model_input(\n                model=settings[\"model\"],\n                **msg,\n                source=\"api_request\",\n            )\n            for msg in new_messages\n        ]\n\n        # For non-streaming, save the response immediately\n        if not chat_input.stream:\n            # Add the response to the new entries\n            # FIXME: We need to save all the choices\n            new_entries.append(\n                CreateEntryRequest.from_model_input(\n                    model=settings[\"model\"],\n                    **model_response.choices[0].model_dump()[\"message\"],\n                    source=\"api_response\",\n                ),\n            )\n\n        background_tasks.add_task(\n            create_entries,\n            developer_id=developer.id,\n            session_id=session_id,\n            data=new_entries,\n        )\n\n    # Handle streaming response\n    if chat_input.stream:\n        # Return streaming response using the unified function\n        return StreamingResponse(\n            stream_chat_response(\n                model_response=model_response,\n                developer_id=developer.id,\n                doc_references=doc_references,\n                should_save=chat_input.save,\n                session_id=session_id,\n                model=settings[\"model\"],\n                background_tasks=background_tasks,\n                messages=messages,\n                custom_api_key_used=x_custom_api_key is not None,\n                developer_tags=developer.tags,\n                connection_pool=connection_pool,\n            ),\n            media_type=\"text/event-stream\",\n        )\n\n    # Handle non-streaming response\n    # Adaptive context handling\n    jobs = []\n    if chat_context.session.context_overflow == \"adaptive\":\n        # FIXME: Start the adaptive context workflow\n        # SCRUM-8\n        msg = \"Adaptive context is not yet implemented\"\n        raise NotImplementedError(msg)\n\n    chat_response = MessageChatResponse(\n        id=uuid7(),\n        created_at=utcnow(),\n        jobs=jobs,\n        docs=doc_references,\n        usage=model_response.usage.model_dump(),\n        choices=[choice.model_dump() for choice in model_response.choices],\n    )\n\n    total_tokens_per_user.labels(str(developer.id)).inc(\n        amount=chat_response.usage.total_tokens if chat_response.usage is not None else 0,\n    )\n\n    return chat_response\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/legacy/render.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends, HTTPException, status\n\nfrom ....autogen.openapi_model import (\n    ChatInput,\n    DocReference,\n    RenderResponse,\n)\nfrom ....common.protocol.developers import Developer\nfrom ....common.protocol.sessions import ChatContext\nfrom ....common.utils.expressions import evaluate_expressions\nfrom ....common.utils.template import render_template\nfrom ....dependencies.developer_id import get_developer_data\nfrom ....env import max_free_sessions\nfrom ....queries.chat.gather_messages import gather_messages\nfrom ....queries.chat.prepare_chat_context import prepare_chat_context\nfrom ....queries.secrets.list import list_secrets_query\nfrom ....queries.sessions.count_sessions import count_sessions as count_sessions_query\nfrom ...utils.model_validation import validate_model\n\nCOMPUTER_USE_BETA_FLAG = \"computer-use-2024-10-22\"\n\n\nasync def render(\n    developer: Annotated[Developer, Depends(get_developer_data)],\n    session_id: UUID,\n    chat_input: ChatInput,\n) -> RenderResponse:\n    \"\"\"\n    Renders a chat input.\n\n    Parameters:\n        developer (Developer): The developer associated with the chat session.\n        session_id (UUID): The unique identifier of the chat session.\n        chat_input (ChatInput): The chat input data.\n\n    Returns:\n        RenderResponse: The rendered chat input.\n    \"\"\"\n\n    messages, doc_references, tools, *_ = await render_chat_input(\n        developer=developer,\n        session_id=session_id,\n        chat_input=chat_input,\n    )\n\n    return RenderResponse(messages=messages, docs=doc_references, tools=tools)\n\n\nasync def render_chat_input(\n    developer: Developer,\n    session_id: UUID,\n    chat_input: ChatInput,\n) -> tuple[list[dict], list[DocReference], list[dict] | None, dict, list[dict], ChatContext]:\n    # check if the developer is paid\n    if \"paid\" not in developer.tags:\n        # get the session length\n        sessions = await count_sessions_query(developer_id=developer.id)\n        session_length = sessions[\"count\"]\n        if session_length > max_free_sessions:\n            raise HTTPException(\n                status_code=status.HTTP_403_FORBIDDEN,\n                detail=\"Session length exceeded the free tier limit\",\n            )\n\n    # First get the chat context\n    chat_context: ChatContext = await prepare_chat_context(\n        developer_id=developer.id,\n        session_id=session_id,\n    )\n\n    # Merge the settings and prepare environment\n    chat_context.merge_settings(chat_input)\n    settings: dict = chat_context.settings or {}\n\n    await validate_model(settings.get(\"model\"))\n\n    # Get the past messages and doc references\n    past_messages, doc_references = await gather_messages(\n        developer=developer,\n        session_id=session_id,\n        chat_context=chat_context,\n        chat_input=chat_input,\n    )\n\n    # Prepare the environment\n    env: dict = chat_context.get_chat_environment()\n    env[\"docs\"] = [\n        {\n            \"title\": ref.title,\n            \"content\": [ref.snippet.content],\n            \"metadata\": ref.metadata or None,\n        }\n        for ref in doc_references\n    ]\n\n    # Add metadata from chat_input to the environment\n    # AIDEV-NOTE: metadata field enables dynamic instructions at message level via system template\n    if hasattr(chat_input, \"metadata\") and chat_input.metadata:\n        env[\"metadata\"] = chat_input.metadata\n\n    # Render the system message\n    if system_template := chat_context.merge_system_template(\n        chat_context.session.system_template,\n    ):\n        system_message = {\n            \"role\": \"system\",\n            \"content\": system_template,\n        }\n        system_messages: list[dict] = await render_template([system_message], variables=env)\n        past_messages = system_messages + past_messages\n\n    # Render the incoming messages\n    new_raw_messages = [msg.model_dump(mode=\"json\") for msg in chat_input.messages]\n\n    if chat_context.session.render_templates:\n        new_messages = await render_template(new_raw_messages, variables=env)\n    else:\n        new_messages = new_raw_messages\n\n    # Combine the past messages with the new messages\n    messages = past_messages + new_messages\n\n    # Get the agent tools\n    tools = chat_context.get_active_tools()\n    # If the user has provided tools, add them to the tools, but only if they are not already in the tools\n    if chat_input.tools:\n        existing_tool_names = {tool.name for tool in tools}\n        for tool in chat_input.tools:\n            if tool.name not in existing_tool_names:\n                tools.append(tool)\n\n    # Check if using Claude model and has specific tool types\n    is_claude_model = settings.get(\"model\", \"\").lower().startswith(\"claude-3.5\")\n\n    # Format tools for litellm\n    # formatted_tools = (\n    #     tools if is_claude_model else [format_tool(tool) for tool in tools]\n    # )\n\n    # FIXME: Truncate chat messages in the chat context\n    # SCRUM-7\n    if chat_context.session.context_overflow == \"truncate\":\n        # messages = messages[-settings[\"max_tokens\"] :]\n        msg = \"Truncation is not yet implemented\"\n        raise NotImplementedError(msg)\n\n    # FIXME: Hotfix for datetime not serializable. Needs investigation\n    messages = [\n        {\n            k: v\n            for k, v in m.items()\n            if k in [\"role\", \"content\", \"tool_calls\", \"tool_call_id\", \"user\"]\n        }\n        for m in messages\n    ]\n\n    # FIXME: Hack to make the computer use tools compatible with litellm\n    # Issue was: litellm expects type to be `computer_20241022` and spec to be\n    # `function` (see: https://docs.litellm.ai/docs/providers/anthropic#computer-tools)\n    # but we don't allow that (spec should match type).\n    formatted_tools = []\n    secrets = {}\n    if tools and any(\n        tool.type == \"computer_20241022\" and tool.computer_20241022 for tool in tools\n    ):\n        secrets = {\n            secret.name: secret.value\n            for secret in await list_secrets_query(\n                developer_id=developer.id,\n                decrypt=True,\n            )\n        }\n\n    for tool in tools:\n        if tool.type == \"computer_20241022\" and tool.computer_20241022:\n            function = tool.computer_20241022\n            tool = {\n                \"type\": tool.type,\n                \"function\": {\n                    \"name\": tool.name,\n                    \"parameters\": {\n                        k: evaluate_expressions(v, values={\"secrets\": secrets})\n                        for k, v in function.model_dump().items()\n                        if k not in [\"name\", \"type\"]\n                    }\n                    if function is not None\n                    else {},\n                },\n            }\n            formatted_tools.append(tool)\n\n    # If not using Claude model\n    # FIXME: Enable formatted_tools once format-tools PR is merged.\n    if not is_claude_model:\n        formatted_tools = None\n\n    # HOTFIX: for groq calls, litellm expects tool_calls_id not to be in the messages\n    # FIXME: This is a temporary fix. We need to update the agent-api to use the new tool calling format\n    is_groq_model = settings.get(\"model\", \"\").lower().startswith(\"llama-3.1\")\n    if is_groq_model:\n        messages = [\n            {\n                k: v\n                for k, v in message.items()\n                if k not in [\"tool_calls\", \"tool_call_id\", \"user\", \"continue_\", \"name\"]\n            }\n            for message in messages\n        ]\n\n    return messages, doc_references, formatted_tools, settings, new_messages, chat_context\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/list_sessions.py",
    "content": "# AIDEV-NOTE: This module defines the API endpoint for listing sessions with filtering, pagination, and sorting.\nfrom typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import ListResponse, Session\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...dependencies.query_filter import MetadataFilter, create_filter_extractor\nfrom ...queries.sessions.list_sessions import list_sessions as list_sessions_query\nfrom .router import router\n\n\n# AIDEV-NOTE: API endpoint to list sessions.\n# Supports filtering by metadata, pagination (limit, offset), and sorting (sort_by, direction).\n# It depends on developer ID, metadata filter, and query parameters, and calls the list_sessions_query function.\n@router.get(\"/sessions\", tags=[\"sessions\"])\nasync def list_sessions(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    metadata_filter: Annotated[\n        MetadataFilter,\n        Depends(create_filter_extractor(\"metadata_filter\")),\n    ] = MetadataFilter(),\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> ListResponse[Session]:\n    sessions = await list_sessions_query(\n        developer_id=x_developer_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n        metadata_filter=metadata_filter.model_dump(mode=\"json\") or {},\n    )\n\n    return ListResponse[Session](items=sessions)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/metrics.py",
    "content": "from prometheus_client import Counter\n\ntotal_tokens_per_user = Counter(\n    \"total_tokens_per_user\",\n    \"Total token count per user\",\n    labelnames=(\"developer_id\",),\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/patch_session.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import PatchSessionRequest, Session\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.sessions.patch_session import patch_session as patch_session_query\nfrom .router import router\n\n\n@router.patch(\"/sessions/{session_id}\", tags=[\"sessions\"])\nasync def patch_session(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    session_id: UUID,\n    data: PatchSessionRequest,\n) -> Session:\n    return await patch_session_query(\n        developer_id=x_developer_id,\n        session_id=session_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/render.py",
    "content": "\"\"\"\nRender endpoint router with feature flag-based implementation selection.\nRoutes to either legacy or auto-tools implementation based on feature flags.\n\"\"\"\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_200_OK\n\nfrom ...autogen.openapi_model import (\n    ChatInput,\n    RenderResponse,\n)\nfrom ...common.protocol.developers import Developer\nfrom ...common.utils.feature_flags import get_feature_flag_value\nfrom ...dependencies.developer_id import get_developer_data\nfrom .router import router\n\n\n@router.post(\n    \"/sessions/{session_id}/render\",\n    status_code=HTTP_200_OK,\n    tags=[\"sessions\", \"render\"],\n)\nasync def render(\n    developer: Annotated[Developer, Depends(get_developer_data)],\n    session_id: UUID,\n    chat_input: ChatInput,\n) -> RenderResponse:\n    \"\"\"\n    Renders a chat input.\n\n    Routes to different implementations based on feature flags:\n    - If auto_run_tools_chat feature flag is enabled, uses the new auto-tools implementation\n    - Otherwise, uses the legacy implementation\n\n    Parameters:\n        developer (Developer): The developer associated with the chat session.\n        session_id (UUID): The unique identifier of the chat session.\n        chat_input (ChatInput): The chat input data.\n\n    Returns:\n        RenderResponse: The rendered chat input.\n    \"\"\"\n    # Check if auto tools feature is enabled\n    # AIDEV-NOTE: Feature flag controls which implementation to use\n    if get_feature_flag_value(\"auto_run_tools_chat\", developer_id=str(developer.id)):\n        from .auto_tools.render import render as render_auto_tools\n\n        return await render_auto_tools(\n            developer=developer,\n            session_id=session_id,\n            chat_input=chat_input,\n        )\n\n    # Default to legacy implementation\n    from .legacy.render import render as render_legacy\n\n    return await render_legacy(\n        developer=developer,\n        session_id=session_id,\n        chat_input=chat_input,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/sessions/update_session.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import Session, UpdateSessionRequest\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.sessions.update_session import update_session as update_session_query\nfrom .router import router\n\n\n@router.put(\"/sessions/{session_id}\", tags=[\"sessions\"])\nasync def update_session(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    session_id: UUID,\n    data: UpdateSessionRequest,\n) -> Session:\n    return await update_session_query(\n        developer_id=x_developer_id,\n        session_id=session_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/__init__.py",
    "content": "# ruff: noqa: F401\nfrom .create_or_update_task import create_or_update_task\nfrom .create_task import create_task\nfrom .create_task_execution import create_task_execution\nfrom .get_execution_details import get_execution_details\nfrom .get_task_details import get_task_details\nfrom .list_execution_transitions import list_execution_transitions\nfrom .list_task_executions import list_task_executions\nfrom .list_tasks import list_tasks\nfrom .router import router\nfrom .stream_execution_status import stream_execution_status\nfrom .stream_transitions_events import stream_transitions_events\nfrom .update_execution import update_execution\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/create_or_update_task.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends, HTTPException\nfrom jsonschema import validate\nfrom jsonschema.exceptions import SchemaError, ValidationError\nfrom starlette.status import HTTP_201_CREATED, HTTP_400_BAD_REQUEST\n\nfrom ...autogen.openapi_model import CreateOrUpdateTaskRequest, Task\nfrom ...common.utils.task_validation import validate_task\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tasks.create_or_update_task import (\n    create_or_update_task as create_or_update_task_query,\n)\nfrom .router import router\n\n\n@router.post(\"/agents/{agent_id}/tasks/{task_id}\", status_code=HTTP_201_CREATED, tags=[\"tasks\"])\nasync def create_or_update_task(\n    data: CreateOrUpdateTaskRequest,\n    agent_id: UUID,\n    task_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> Task:\n    # Validate the input schema\n    try:\n        if data.input_schema is not None:\n            validate(None, data.input_schema)\n    except SchemaError:\n        raise HTTPException(detail=\"Invalid input schema\", status_code=HTTP_400_BAD_REQUEST)\n    except ValidationError:\n        pass\n\n    # Validate Python expressions in the task spec\n    validation_result = validate_task(data)\n    if not validation_result.is_valid:\n        # Prepare a detailed error response\n\n        # Gather all issues categorized by type\n        issues = [\n            {\n                \"location\": issue.location,\n                \"message\": issue.message,\n                \"severity\": issue.severity,\n                \"type\": \"python_expression\",\n                **({} if issue.details is None else {\"details\": issue.details}),\n            }\n            for issue in validation_result.python_expression_issues\n        ]\n\n        issues.extend(\n            {\n                \"location\": issue.location,\n                \"message\": issue.message,\n                \"severity\": issue.severity,\n                \"type\": \"schema\",\n            }\n            for issue in validation_result.schema_issues\n        )\n\n        issues.extend(\n            {\n                \"location\": issue.location,\n                \"message\": issue.message,\n                \"severity\": issue.severity,\n                \"type\": \"other\",\n            }\n            for issue in validation_result.other_issues\n        )\n\n        # Return a structured error response\n        raise HTTPException(\n            status_code=HTTP_400_BAD_REQUEST,\n            detail={\n                \"message\": \"Task specification contains validation errors\",\n                \"issues\": issues,\n            },\n        )\n\n    return await create_or_update_task_query(\n        developer_id=x_developer_id,\n        agent_id=agent_id,\n        task_id=task_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/create_task.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends, HTTPException\nfrom jsonschema import validate\nfrom jsonschema.exceptions import SchemaError, ValidationError\nfrom starlette.status import HTTP_201_CREATED, HTTP_400_BAD_REQUEST\n\nfrom ...autogen.openapi_model import CreateTaskRequest, Task\nfrom ...common.utils.task_validation import validate_task\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tasks.create_task import create_task as create_task_query\nfrom .router import router\n\n\n@router.post(\"/agents/{agent_id}/tasks\", status_code=HTTP_201_CREATED, tags=[\"tasks\"])\nasync def create_task(\n    data: CreateTaskRequest,\n    agent_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> Task:\n    # Validate the input schema\n    try:\n        if data.input_schema is not None:\n            validate(None, data.input_schema)\n    except SchemaError:\n        raise HTTPException(detail=\"Invalid input schema\", status_code=HTTP_400_BAD_REQUEST)\n    except ValidationError:\n        pass\n\n    # Validate Python expressions in the task spec\n    validation_result = validate_task(data)\n    if not validation_result.is_valid:\n        # Prepare a detailed error response\n\n        # Gather all issues categorized by type\n        issues = [\n            {\n                \"location\": issue.location,\n                \"message\": issue.message,\n                \"severity\": issue.severity,\n                \"type\": \"python_expression\",\n                **({} if issue.details is None else {\"details\": issue.details}),\n            }\n            for issue in validation_result.python_expression_issues\n        ]\n\n        issues.extend(\n            {\n                \"location\": issue.location,\n                \"message\": issue.message,\n                \"severity\": issue.severity,\n                \"type\": \"schema\",\n            }\n            for issue in validation_result.schema_issues\n        )\n\n        issues.extend(\n            {\n                \"location\": issue.location,\n                \"message\": issue.message,\n                \"severity\": issue.severity,\n                \"type\": \"other\",\n            }\n            for issue in validation_result.other_issues\n        )\n\n        # Return a structured error response\n        raise HTTPException(\n            status_code=HTTP_400_BAD_REQUEST,\n            detail={\n                \"message\": \"Task specification contains validation errors\",\n                \"issues\": issues,\n            },\n        )\n\n    return await create_task_query(\n        developer_id=x_developer_id,\n        agent_id=agent_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/create_task_execution.py",
    "content": "# AIDEV-NOTE: This module defines the API endpoint for creating and initiating task executions.\nimport logging\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom beartype import beartype\nfrom fastapi import BackgroundTasks, Depends, HTTPException, status\nfrom jsonschema import validate\nfrom jsonschema.exceptions import ValidationError\nfrom starlette.status import HTTP_201_CREATED\nfrom temporalio.client import WorkflowHandle\nfrom uuid_extensions import uuid7\n\nfrom ...autogen.openapi_model import (\n    CreateExecutionRequest,\n    CreateTransitionRequest,\n    Execution,\n    TransitionTarget,\n)\nfrom ...clients.temporal import run_task_execution_workflow\nfrom ...common.protocol.developers import Developer\nfrom ...common.protocol.models import task_to_spec\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...env import max_free_executions\nfrom ...queries.developers.get_developer import get_developer\nfrom ...queries.executions.count_executions import (\n    count_executions as count_executions_query,\n)\nfrom ...queries.executions.create_execution import (\n    create_execution as create_execution_query,\n)\nfrom ...queries.executions.create_execution_transition import (\n    create_execution_transition,\n)\nfrom ...queries.executions.create_temporal_lookup import create_temporal_lookup\nfrom ...queries.executions.prepare_execution_input import prepare_execution_input\nfrom ...queries.tasks.get_task import get_task as get_task_query\nfrom .router import router\n\nlogger: logging.Logger = logging.getLogger(__name__)\nlogger.setLevel(logging.DEBUG)\n\n\n# AIDEV-NOTE: Initiates a task execution by creating a database entry and starting the Temporal workflow.\n@beartype\nasync def start_execution(\n    *,\n    developer_id: UUID,\n    task_id: UUID,\n    data: CreateExecutionRequest,\n    connection_pool=None,\n) -> tuple[Execution, WorkflowHandle]:\n    execution_id = uuid7()\n\n    execution = await create_execution_query(\n        developer_id=developer_id,\n        task_id=task_id,\n        execution_id=execution_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n\n    execution_input = await prepare_execution_input(\n        developer_id=developer_id,\n        task_id=task_id,\n        execution_id=execution_id,\n        connection_pool=connection_pool,\n    )\n\n    task = await get_task_query(\n        developer_id=developer_id,\n        task_id=task_id,\n        connection_pool=connection_pool,\n    )\n\n    execution_input.task = task_to_spec(task)\n    execution_input.task.id = task.id\n\n    job_id = uuid7()\n\n    try:\n        # AIDEV-NOTE: Runs the Temporal task execution workflow.\n        handle = await run_task_execution_workflow(\n            execution_input=execution_input,\n            job_id=job_id,\n        )\n\n    except Exception as e:\n        logger.exception(e)\n\n        # AIDEV-NOTE: Creates an error transition in the database if the workflow fails to start.\n        await create_execution_transition(\n            developer_id=developer_id,\n            execution_id=execution_id,\n            data=CreateTransitionRequest(\n                type=\"error\",\n                output={\"error\": str(e)},\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=uuid7(),\n                ),\n                next=None,\n            ),\n            connection_pool=connection_pool,\n        )\n\n        raise HTTPException(\n            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,\n            detail=\"Execution creation failed\",\n        ) from e\n\n    return execution, handle\n\n\n# AIDEV-NOTE: API endpoint to create a new task execution for a given task.\n# It depends on developer ID, task ID from the path, and execution data from the request body.\n# Includes validation for the input data schema and checks for free tier limits before starting the execution.\n@router.post(\n    \"/tasks/{task_id}/executions\",\n    status_code=HTTP_201_CREATED,\n    tags=[\"executions\"],\n)\nasync def create_task_execution(\n    task_id: UUID,\n    data: CreateExecutionRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    background_tasks: BackgroundTasks,\n    connection_pool: Any | None = None,\n) -> Execution:\n    try:\n        # AIDEV-NOTE: Validates the input data against the task's input schema.\n        task = await get_task_query(\n            task_id=task_id,\n            developer_id=x_developer_id,\n            connection_pool=connection_pool,\n        )\n        validate(data.input, task.input_schema)\n\n    except ValidationError:\n        raise HTTPException(\n            status_code=status.HTTP_400_BAD_REQUEST,\n            detail=\"Invalid request arguments schema\",\n        )\n\n    # AIDEV-NOTE: Checks if the developer is within the free tier execution limit for the task.\n    # get developer data\n    developer: Developer = await get_developer(\n        developer_id=x_developer_id,\n        connection_pool=connection_pool,\n    )\n\n    # check if the developer is paid\n    if \"paid\" not in developer.tags:\n        executions = await count_executions_query(\n            developer_id=x_developer_id,\n            task_id=task_id,\n            connection_pool=connection_pool,\n        )\n\n        execution_count = executions[\"count\"]\n        if execution_count > max_free_executions:\n            raise HTTPException(\n                status_code=status.HTTP_403_FORBIDDEN,\n                detail=\"Execution count exceeded the free tier limit\",\n            )\n\n    # AIDEV-NOTE: Starts the task execution and creates a Temporal lookup entry in the background.\n    # AIDEV-NOTE: Propagate pooled connections when endpoint is invoked via system tools.\n    execution, handle = await start_execution(\n        developer_id=x_developer_id,\n        task_id=task_id,\n        data=data,\n        connection_pool=connection_pool,\n    )\n\n    background_tasks.add_task(\n        create_temporal_lookup,\n        execution_id=execution.id,\n        workflow_handle=handle,\n        connection_pool=connection_pool,\n    )\n\n    execution.metadata = {\"jobs\": [handle.id]}\n    return execution\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/get_execution_details.py",
    "content": "from uuid import UUID\n\nfrom ...autogen.openapi_model import (\n    Execution,\n)\nfrom ...queries.executions.get_execution import (\n    get_execution as get_execution_query,\n)\nfrom .router import router\n\n\n@router.get(\"/executions/{execution_id}\", tags=[\"executions\"])\nasync def get_execution_details(execution_id: UUID) -> Execution:\n    return await get_execution_query(execution_id=execution_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/get_task_details.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import (\n    Task,\n)\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tasks.get_task import get_task as get_task_query\nfrom .router import router\n\n\n@router.get(\"/tasks/{task_id}\", tags=[\"tasks\"])\nasync def get_task_details(\n    task_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> Task:\n    task = await get_task_query(developer_id=x_developer_id, task_id=task_id)\n    task_data = task.model_dump()\n\n    for workflow in task_data.get(\"workflows\", []):\n        if workflow[\"name\"] == \"main\":\n            task_data[\"main\"] = workflow.get(\"steps\", [])\n            break\n\n    return Task(**task_data)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/list_execution_transitions.py",
    "content": "from typing import Literal\nfrom uuid import UUID\n\nfrom fastapi import HTTPException, status\n\nfrom ...autogen.openapi_model import (\n    ListResponse,\n    Transition,\n)\nfrom ...queries.executions.list_execution_transitions import (\n    list_execution_transitions as list_execution_transitions_query,\n)\nfrom .router import router\n\n\n@router.get(\"/executions/{execution_id}/transitions\", tags=[\"executions\"])\nasync def list_execution_transitions(\n    execution_id: UUID,\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n    scope_id: UUID | None = None,\n) -> ListResponse[Transition]:\n    transitions = await list_execution_transitions_query(\n        execution_id=execution_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n        scope_id=scope_id,\n    )\n\n    return ListResponse[Transition](items=transitions)\n\n\n@router.get(\"/executions/{execution_id}/transitions/{transition_id}\", tags=[\"tasks\"])\nasync def get_execution_transition(\n    execution_id: UUID,\n    transition_id: UUID,\n) -> Transition:\n    try:\n        transitions = await list_execution_transitions_query(\n            execution_id=execution_id,\n            transition_id=transition_id,\n        )\n        if not transitions:\n            raise IndexError\n        return transitions[0]\n    except (IndexError, KeyError):\n        raise HTTPException(\n            status_code=status.HTTP_404_NOT_FOUND,\n            detail=\"Transition not found\",\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/list_task_executions.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import (\n    Execution,\n    ListResponse,\n)\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.executions.list_executions import (\n    list_executions as list_task_executions_query,\n)\nfrom .router import router\n\n\n@router.get(\"/tasks/{task_id}/executions\", tags=[\"tasks\"])\nasync def list_task_executions(\n    task_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> ListResponse[Execution]:\n    executions = await list_task_executions_query(\n        task_id=task_id,\n        developer_id=x_developer_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n    )\n    return ListResponse[Execution](items=executions)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/list_tasks.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import (\n    ListResponse,\n    Task,\n)\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.tasks.list_tasks import list_tasks as list_tasks_query\nfrom .router import router\n\n\n@router.get(\"/agents/{agent_id}/tasks\", tags=[\"tasks\"])\nasync def list_tasks(\n    agent_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> ListResponse[Task]:\n    query_results = await list_tasks_query(\n        agent_id=agent_id,\n        developer_id=x_developer_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n    )\n\n    tasks = []\n    for row in query_results:\n        row_dict = row.model_dump()\n\n        for workflow in row_dict.get(\"workflows\", []):\n            if workflow[\"name\"] == \"main\":\n                row_dict[\"main\"] = workflow[\"steps\"]\n                break\n\n        tasks.append(Task(**row_dict))\n\n    return ListResponse[Task](items=tasks)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/router.py",
    "content": "from collections.abc import Callable\n\nfrom fastapi import APIRouter, Request, Response\nfrom fastapi.routing import APIRoute\n\nfrom ...common.utils import yaml\n\n\nclass YamlRequest(Request):\n    async def body(self) -> bytes:\n        if not hasattr(self, \"_body\"):\n            body = await super().body()\n\n            if self.headers.get(\"content-type\") in [\n                \"application/x-yaml\",\n                \"application/yaml\",\n                \"text/yaml\",\n            ]:\n                body = yaml.load(body)\n\n            self._body = body\n\n        return self._body\n\n\nclass YamlRoute(APIRoute):\n    def get_route_handler(self) -> Callable:\n        original_route_handler = super().get_route_handler()\n\n        async def custom_route_handler(request: Request) -> Response:\n            request = YamlRequest(request.scope, request.receive)\n\n            return await original_route_handler(request)\n\n        return custom_route_handler\n\n\nrouter: APIRouter = APIRouter(\n    route_class=YamlRoute,\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/stream_execution_status.py",
    "content": "import logging\nfrom functools import partial\nfrom typing import Annotated\nfrom uuid import UUID\n\nimport anyio\nfrom anyio.streams.memory import MemoryObjectSendStream\nfrom fastapi import Depends, HTTPException, Request, status\nfrom sse_starlette.sse import EventSourceResponse\n\nfrom ...autogen.openapi_model import ExecutionStatusEvent\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.executions.get_execution_status import (\n    get_execution_status as get_execution_status_query,\n)\nfrom .router import router\n\n# Set up logger\nlogger = logging.getLogger(__name__)\n\n# Poll interval in seconds between status checks\nSTREAM_POLL_INTERVAL = 1\n# Overall timeout for the SSE connection (seconds)\nSTREAM_TIMEOUT = 10 * 60\n\n# Terminal states that indicate we should end the stream\nTERMINAL_STATES = {\"succeeded\", \"failed\", \"cancelled\"}\n\n\nasync def execution_status_publisher(\n    send_chan: MemoryObjectSendStream,\n    execution_id: UUID,\n    x_developer_id: UUID,\n    request: Request,\n):\n    \"\"\"\n    Publishes execution status updates to the SSE stream.\n\n    Args:\n        send_chan: Channel to send updates through\n        execution_id: ID of the execution to monitor\n        x_developer_id: Developer ID for permission checking\n        request: FastAPI request object to check for disconnection\n    \"\"\"\n    async with send_chan:\n        last_updated_at: str | None = None\n        while True:\n            # Exit loop if client disconnected\n            if await request.is_disconnected():\n                logger.debug(\n                    f\"Client disconnected from status stream for execution {execution_id}\"\n                )\n                break\n\n            # Fetch latest execution status via SQL query\n            try:\n                execution_status_event: ExecutionStatusEvent = await get_execution_status_query(\n                    developer_id=x_developer_id,\n                    execution_id=execution_id,\n                )\n            except Exception as e:\n                # Log the error and continue\n                logger.error(f\"Error fetching status for execution {execution_id}: {e!s}\")\n                await anyio.sleep(STREAM_POLL_INTERVAL)\n                continue\n\n            if not execution_status_event:\n                logger.warning(f\"No status found for execution {execution_id}\")\n                await anyio.sleep(STREAM_POLL_INTERVAL)\n                continue\n\n            updated_at = execution_status_event.updated_at\n            if updated_at and updated_at != last_updated_at:\n                last_updated_at = updated_at\n                try:\n                    json_data = execution_status_event.model_dump_json()\n                    await send_chan.send({\"data\": json_data})\n\n                    # Log terminal states\n                    if execution_status_event.status in TERMINAL_STATES:\n                        logger.info(\n                            f\"Execution {execution_id} reached terminal state: {execution_status_event.status}\"\n                        )\n                        break\n\n                except anyio.BrokenResourceError as e:\n                    logger.warning(\n                        f\"Connection broken while sending status for execution {execution_id}: {e!s}\"\n                    )\n                    break\n                except Exception as e:\n                    logger.error(f\"Error sending status for execution {execution_id}: {e!s}\")\n                    # Continue the loop to try again\n\n            # Wait before polling again\n            await anyio.sleep(STREAM_POLL_INTERVAL)\n\n\n@router.get(\n    \"/executions/{execution_id}/status.stream\",\n    response_class=EventSourceResponse,\n    tags=[\"executions\"],\n)\nasync def stream_execution_status(\n    request: Request,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    execution_id: UUID,\n):\n    \"\"\"\n    SSE endpoint that streams the status of a given execution_id by polling the\n    latest_executions view.\n    \"\"\"\n    try:\n        try:\n            # Verify execution exists before starting the stream\n            await get_execution_status_query(\n                developer_id=x_developer_id,\n                execution_id=execution_id,\n            )\n        except HTTPException as e:\n            if \"not found\" in str(e).lower():\n                raise HTTPException(\n                    status_code=status.HTTP_404_NOT_FOUND,\n                    detail=f\"Execution {execution_id} not found\",\n                )\n            raise e\n\n        send_chan, recv_chan = anyio.create_memory_object_stream(max_buffer_size=1)\n        logger.debug(f\"Starting status stream for execution {execution_id}\")\n\n        return EventSourceResponse(\n            recv_chan,\n            data_sender_callable=partial(\n                execution_status_publisher,\n                send_chan,\n                execution_id,\n                x_developer_id,\n                request,\n            ),\n            send_timeout=STREAM_TIMEOUT,\n        )\n\n    except Exception as e:\n        error_message = f\"Failed to start status stream for execution {execution_id}: {e!s}\"\n        logger.error(error_message)\n        if isinstance(e, HTTPException):\n            raise e\n        raise HTTPException(\n            status_code=status.HTTP_500_INTERNAL_SERVER_ERROR,\n            detail=\"Failed to start execution status stream\",\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/stream_transitions_events.py",
    "content": "import logging\nfrom base64 import b64decode, b64encode\nfrom functools import partial\nfrom typing import Annotated\nfrom uuid import UUID\n\nimport anyio\nfrom anyio.streams.memory import MemoryObjectSendStream\nfrom fastapi import Depends, Query\nfrom sse_starlette.sse import EventSourceResponse\nfrom starlette.requests import Request\nfrom temporalio.api.enums.v1 import EventType\nfrom temporalio.client import (\n    WorkflowHistoryEventAsyncIterator,\n    WorkflowHistoryEventFilterType,\n)\n\nfrom ...autogen.openapi_model import TransitionEvent\nfrom ...clients.temporal import get_workflow_handle\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.executions.lookup_temporal_data import lookup_temporal_data\nfrom ...worker.codec import from_payload_data\nfrom .router import router\n\nSTREAM_TIMEOUT = 10 * 60  # 10 minutes\n\n\n# Create a function to publish events to the client\n# TODO: Unnest and simplify this function\nasync def event_publisher(\n    inner_send_chan: MemoryObjectSendStream,\n    history_events: WorkflowHistoryEventAsyncIterator,\n):\n    async with inner_send_chan:\n        try:\n            async for event in history_events:\n                # TODO: We should get the workflow-completed event as well and use that to close the stream\n                if event.event_type == EventType.EVENT_TYPE_ACTIVITY_TASK_COMPLETED:\n                    payloads = event.activity_task_completed_event_attributes.result.payloads\n\n                    for payload in payloads:\n                        try:\n                            data_item = from_payload_data(payload.data)\n\n                        except Exception as e:\n                            logging.warning(f\"Could not decode payload: {e}\")\n                            continue\n\n                        if not isinstance(data_item, TransitionEvent):\n                            continue\n\n                        # FIXME: This does NOT return the last event (and maybe other events)\n                        transition_event_dict = {\n                            \"type\": data_item.type,\n                            \"output\": data_item.output,\n                            \"created_at\": data_item.created_at.isoformat(),\n                        }\n\n                        next_page_token = (\n                            b64encode(history_events.next_page_token).decode(\"ascii\")\n                            if history_events.next_page_token\n                            else None\n                        )\n\n                        await inner_send_chan.send({\n                            \"data\": {\n                                \"transition\": transition_event_dict,\n                                \"next_page_token\": next_page_token,\n                            },\n                        })\n\n        except anyio.get_cancelled_exc_class() as e:\n            with anyio.move_on_after(STREAM_TIMEOUT, shield=True):\n                await inner_send_chan.send({\"closing\": True})\n                raise e\n\n\n@router.get(\"/executions/{execution_id}/transitions.stream\", tags=[\"executions\"])\nasync def stream_transitions_events(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    execution_id: UUID,\n    req: Request,\n    next_page_token: Annotated[str | None, Query()] = None,\n):\n    # Get temporal id\n    temporal_data = await lookup_temporal_data(\n        developer_id=x_developer_id,\n        execution_id=execution_id,\n    )\n\n    # TODO: Need to get all the events for child workflows too. Maybe try the `run_id` or something?\n    # SCRUM-11\n    workflow_handle = await get_workflow_handle(\n        handle_id=temporal_data[\"id\"],\n    )\n\n    next_page_token: bytes | None = b64decode(next_page_token) if next_page_token else None\n\n    history_events = workflow_handle.fetch_history_events(\n        page_size=1,\n        next_page_token=next_page_token,\n        wait_new_event=True,\n        event_filter_type=WorkflowHistoryEventFilterType.ALL_EVENT,\n        skip_archival=True,\n    )\n\n    # Create a channel to send events to the client\n    send_chan, recv_chan = anyio.create_memory_object_stream(max_buffer_size=100)\n\n    return EventSourceResponse(\n        recv_chan,\n        data_sender_callable=partial(event_publisher, send_chan, history_events),\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/tasks/update_execution.py",
    "content": "import base64\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends, HTTPException\n\nfrom ...autogen.openapi_model import (\n    ResumeExecutionRequest,\n    StopExecutionRequest,\n)\nfrom ...clients.temporal import get_client\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.executions.get_paused_execution_token import (\n    get_paused_execution_token,\n)\nfrom ...queries.executions.get_temporal_workflow_data import (\n    get_temporal_workflow_data,\n)\nfrom .router import router\n\n\n@router.put(\"/executions/{execution_id}\", tags=[\"executions\"])\nasync def update_execution(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    execution_id: UUID,\n    data: ResumeExecutionRequest | StopExecutionRequest,\n):\n    temporal_client = await get_client()\n\n    match data:\n        case StopExecutionRequest():\n            try:\n                wf_handle = temporal_client.get_workflow_handle_for(\n                    *await get_temporal_workflow_data(execution_id=execution_id),\n                )\n                await wf_handle.cancel()\n            except Exception:\n                raise HTTPException(status_code=500, detail=\"Failed to stop execution\")\n\n        case ResumeExecutionRequest():\n            token_data = await get_paused_execution_token(execution_id=execution_id)\n            activity_id = token_data[\"metadata\"].get(\"x-activity-id\", None)\n            run_id = token_data[\"metadata\"].get(\"x-run-id\", None)\n            workflow_id = token_data[\"metadata\"].get(\"x-workflow-id\", None)\n            if activity_id is None or run_id is None or workflow_id is None:\n                act_handle = temporal_client.get_async_activity_handle(\n                    task_token=base64.b64decode(token_data[\"task_token\"].encode(\"ascii\")),\n                )\n\n            else:\n                act_handle = temporal_client.get_async_activity_handle(\n                    activity_id=activity_id,\n                    workflow_id=workflow_id,\n                    run_id=run_id,\n                )\n            try:\n                await act_handle.complete(data.input)\n            except Exception:\n                raise HTTPException(status_code=500, detail=\"Failed to resume execution\")\n        case _:\n            raise HTTPException(status_code=400, detail=\"Invalid request data\")\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/__init__.py",
    "content": "# ruff: noqa: F401\nfrom .create_or_update_user import create_or_update_user\nfrom .create_user import create_user\nfrom .delete_user import delete_user\nfrom .get_user_details import get_user_details\nfrom .list_users import list_users\nfrom .patch_user import patch_user\nfrom .router import router\nfrom .update_user import update_user\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/create_or_update_user.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import CreateOrUpdateUserRequest, User\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.users.create_or_update_user import (\n    create_or_update_user as create_or_update_user_query,\n)\nfrom .router import router\n\n\n@router.post(\"/users/{user_id}\", status_code=HTTP_201_CREATED, tags=[\"users\"])\nasync def create_or_update_user(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    user_id: UUID,\n    data: CreateOrUpdateUserRequest,\n) -> User:\n    return await create_or_update_user_query(\n        developer_id=x_developer_id,\n        user_id=user_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/create_user.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_201_CREATED\n\nfrom ...autogen.openapi_model import CreateUserRequest, User\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.users.create_user import create_user as create_user_query\nfrom .router import router\n\n\n@router.post(\"/users\", status_code=HTTP_201_CREATED, tags=[\"users\"])\nasync def create_user(\n    data: CreateUserRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> User:\n    return await create_user_query(\n        developer_id=x_developer_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/delete_user.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\nfrom starlette.status import HTTP_202_ACCEPTED\n\nfrom ...autogen.openapi_model import ResourceDeletedResponse\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.users.delete_user import delete_user as delete_user_query\nfrom .router import router\n\n\n@router.delete(\"/users/{user_id}\", status_code=HTTP_202_ACCEPTED, tags=[\"users\"])\nasync def delete_user(\n    user_id: UUID,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> ResourceDeletedResponse:\n    return await delete_user_query(developer_id=x_developer_id, user_id=user_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/get_user_details.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import User\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.users.get_user import get_user as get_user_query\nfrom .router import router\n\n\n@router.get(\"/users/{user_id}\", tags=[\"users\"])\nasync def get_user_details(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    user_id: UUID,\n) -> User:\n    return await get_user_query(developer_id=x_developer_id, user_id=user_id)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/list_users.py",
    "content": "from typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import ListResponse, User\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...dependencies.query_filter import MetadataFilter, create_filter_extractor\nfrom ...queries.users.list_users import list_users as list_users_query\nfrom .router import router\n\n\n@router.get(\"/users\", tags=[\"users\"])\nasync def list_users(\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n    metadata_filter: Annotated[\n        MetadataFilter,\n        Depends(create_filter_extractor(\"metadata_filter\")),\n    ],\n    limit: int = 100,\n    offset: int = 0,\n    sort_by: Literal[\"created_at\", \"updated_at\"] = \"created_at\",\n    direction: Literal[\"asc\", \"desc\"] = \"desc\",\n) -> ListResponse[User]:\n    users = await list_users_query(\n        developer_id=x_developer_id,\n        limit=limit,\n        offset=offset,\n        sort_by=sort_by,\n        direction=direction,\n        metadata_filter=metadata_filter.model_dump(mode=\"json\") or {},\n    )\n\n    return ListResponse[User](items=users)\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/patch_user.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import PatchUserRequest, User\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.users.patch_user import patch_user as patch_user_query\nfrom .router import router\n\n\n@router.patch(\"/users/{user_id}\", tags=[\"users\"])\nasync def patch_user(\n    user_id: UUID,\n    data: PatchUserRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> User:\n    return await patch_user_query(\n        developer_id=x_developer_id,\n        user_id=user_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/users/update_user.py",
    "content": "from typing import Annotated\nfrom uuid import UUID\n\nfrom fastapi import Depends\n\nfrom ...autogen.openapi_model import UpdateUserRequest, User\nfrom ...dependencies.developer_id import get_developer_id\nfrom ...queries.users.update_user import update_user as update_user_query\nfrom .router import router\n\n\n@router.put(\"/users/{user_id}\", tags=[\"users\"])\nasync def update_user(\n    user_id: UUID,\n    data: UpdateUserRequest,\n    x_developer_id: Annotated[UUID, Depends(get_developer_id)],\n) -> User:\n    return await update_user_query(\n        developer_id=x_developer_id,\n        user_id=user_id,\n        data=data,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/utils/__init__.py",
    "content": ""
  },
  {
    "path": "src/agents-api/agents_api/routers/utils/model_converters.py",
    "content": "# AIDEV-NOTE: Utilities to convert API and internal Pydantic models for requests and responses.\nfrom uuid import UUID\n\nfrom fastapi import HTTPException\nfrom litellm import ChatCompletionMessageToolCall\n\nfrom ...autogen.Chat import (\n    ChatInput,\n    Content,\n    ContentModel7,\n    CreateToolRequest,\n    ImageUrl,\n    Message,\n)\nfrom ...autogen.openapi_model import (\n    Agent,\n    ChatResponse,\n    ChosenFunctionCall,\n    CompletionUsage,\n    CreateAgentRequest,\n    CreateEntryRequest,\n    CreateResponse,\n    CreateSessionRequest,\n    FunctionCallOption,\n    InputTokensDetails,\n    OutputTokensDetails,\n    Response,\n    ResponseUsage,\n    Session,\n)\nfrom ...autogen.Responses import (\n    ComputerToolCall,\n    ComputerToolCallOutputResource,\n    EasyInputMessage,\n    FileSearchToolCall,\n    FunctionToolCall,\n    FunctionToolCallOutput,\n    FunctionToolCallOutputResource,\n    InputImage,\n    InputMessageResource,\n    InputText,\n    Item,\n    OutputMessage,\n    OutputText,\n    ReasoningItem,\n    WebSearchToolCall,\n)\nfrom ...autogen.Tools import FunctionDef\nfrom ...queries.agents.create_agent import create_agent as create_agent_query\nfrom ...queries.agents.list_agents import list_agents as list_agents_query\nfrom ...queries.entries import add_entry_relations, create_entries, get_history\nfrom ...queries.sessions.create_session import create_session as create_session_query\nfrom ...queries.sessions.get_session import get_session as get_session_query\n\n\nasync def convert_create_response(\n    developer_id: UUID, create_response: CreateResponse\n) -> tuple[Agent, Session, ChatInput]:\n    agents = await list_agents_query(\n        developer_id=developer_id,\n    )\n\n    # Sessions cannot be created without an agent. So:\n    # - If there is an agent, use it\n    # - If there is no agent, create a draft agent and use it\n    if agents:\n        agent = agents[0]\n    else:\n        agent = await create_agent_query(\n            developer_id=developer_id,\n            data=CreateAgentRequest(\n                name=\"draft-agent-for-response\",\n                about=\"Draft agent for response\",\n                model=create_response.model,\n            ),\n        )\n\n    # Session ids are treated as previous_response_ids. So:\n    # - If there is a previous_response_id, use it\n    # - If there is no previous_response_id, create a session and use its id as the previous_response_id\n    session_id = create_response.previous_response_id\n    previous_session = None\n    if session_id:\n        try:\n            previous_session: Session = await get_session_query(\n                developer_id=developer_id,\n                session_id=UUID(session_id),\n            )\n        except HTTPException as e:\n            if e.status_code == 404:\n                raise HTTPException(status_code=404, detail=\"previous_response_id not found\")\n            raise e\n\n    session = await create_session_query(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            system_template=create_response.instructions or \"You are a helpful assistant.\",\n            metadata=create_response.metadata,\n        ),\n    )\n\n    if previous_session:\n        history = await get_history(\n            developer_id=developer_id,\n            session_id=previous_session.id,\n        )\n        entry_requests = []\n        for entry in history.entries:\n            entry_data = entry.model_dump(mode=\"json\")\n            if \"id\" in entry_data:\n                del entry_data[\"id\"]\n            if \"created_at\" in entry_data:\n                del entry_data[\"created_at\"]\n\n            entry_request = CreateEntryRequest(**entry_data)\n            entry_requests.append(entry_request)\n\n        await create_entries(\n            developer_id=developer_id,\n            session_id=session.id,\n            data=entry_requests,\n        )\n        await add_entry_relations(\n            developer_id=developer_id,\n            session_id=session.id,\n            data=history.relations,\n        )\n    # Unsupported fields from `CreateResponse` that are not supported by `ChatInput` or `Session`:\n    # - include\n    # - parallel_tool_calls\n    # - response_format\n    # - n\n    # - user\n    # - reasoning\n    # - text\n    # - truncation\n\n    messages: list[Message] = []\n\n    # Handle the case where the input is a string\n    if isinstance(create_response.input, str):\n        messages = [Message(role=\"user\", content=[Content(text=create_response.input)])]\n    elif isinstance(create_response.input, list):\n        # Create a ChatInput object from each InputItem object in the input list\n        for input_item in create_response.input:\n            if isinstance(input_item, EasyInputMessage):\n                # Handle the case where the content inside the input item is a string\n                if isinstance(input_item.content, str):\n                    messages.append(\n                        Message(\n                            role=input_item.role, content=[Content(text=input_item.content)]\n                        )\n                    )\n                # Handle the case where the content inside the input item is a list of content items\n                else:\n                    for content_item in input_item.content:\n                        content = None\n                        # Handle text content\n                        if (\n                            isinstance(content_item, InputText)\n                            and content_item.type == \"input_text\"\n                        ):\n                            content = [Content(text=content_item.text)]\n                        # Handle image content\n                        elif (\n                            isinstance(content_item, InputImage)\n                            and content_item.type == \"input_image\"\n                        ):\n                            image_url = ImageUrl(\n                                url=content_item.image_url,\n                            )\n                            content = [ContentModel7(image_url=image_url)]\n\n                        if content:\n                            messages.append(Message(role=input_item.role, content=content))\n                        else:\n                            msg = f\"Unsupported content type: {content_item.type}. Content item: {content_item}\"\n                            raise ValueError(msg)\n            elif isinstance(input_item, FunctionToolCall):\n                function_tool_call = input_item\n\n                messages.append(\n                    Message(\n                        role=\"assistant\",\n                        tool_call_id=function_tool_call.id,\n                        tool_calls=[\n                            ChosenFunctionCall(\n                                id=function_tool_call.id,\n                                function=FunctionCallOption(\n                                    name=function_tool_call.name,\n                                    arguments=function_tool_call.arguments,\n                                ),\n                            )\n                        ],\n                    )\n                )\n            elif isinstance(\n                input_item, FunctionToolCallOutputResource | FunctionToolCallOutput\n            ):\n                function_tool_call_result = input_item\n\n                messages.append(\n                    # FIXME: litellm completion typically expects a `name`, but openai's response api doesn't have it when dev sends function tool call output\n                    Message(\n                        role=\"tool\",\n                        tool_call_id=function_tool_call_result.call_id,\n                        content=[Content(text=function_tool_call_result.output)],\n                    )\n                )\n            # elif isinstance(input_item, WebSearchToolCall):\n            #     web_search_tool_call = input_item\n\n            #     messages.append(\n            #         Message(\n            #             role=\"assistant\",\n            #             tool_call_id=web_search_tool_call.id,\n            #             tool_calls=[\n            #                 ChosenFunctionCall(\n            #                     id=web_search_tool_call.id,\n            #                     function=FunctionCallOption(\n            #                         name=\"web_search_preview\",\n            #                         arguments={\n            #                             \"query\": web_search_tool_call.query,\n            #                             \"domains\": web_search_tool_call.domains,\n            #                             \"search_context_size\": web_search_tool_call.search_context_size,\n            #                         },\n            #                     ),\n            #                 )\n            #             ],\n            #         )\n            #     )\n            elif isinstance(input_item, InputMessageResource):\n                input_message_resource = input_item\n\n                messages.append(\n                    Message(\n                        role=input_message_resource.role,\n                        content=input_message_resource.content,\n                    )\n                )\n            elif isinstance(input_item, OutputMessage):\n                output_message = input_item\n\n                messages.append(\n                    Message(\n                        role=output_message.role,\n                        content=output_message.content,\n                    )\n                )\n            elif isinstance(\n                input_item,\n                (\n                    FileSearchToolCall\n                    | ComputerToolCall\n                    | ComputerToolCallOutputResource\n                    | Item\n                    | WebSearchToolCall\n                ),\n            ):\n                msg = f\"Message type {input_item.type} is not supported\"\n                raise NotImplementedError(msg)\n\n    else:\n        msg = f\"Unsupported input type: {type(create_response.input)}. Input: {create_response.input}\"\n        raise ValueError(msg)\n\n    # TODO: Convert tools from `CreateResponse` to `ChatInput`\n    tools: list[CreateToolRequest] = []\n\n    if create_response.tools:\n        for tool in create_response.tools:\n            if tool.type == \"function\":\n                tools.append(\n                    CreateToolRequest(\n                        name=tool.name,\n                        description=tool.description,\n                        type=\"function\",\n                        function=FunctionDef(\n                            name=tool.name,\n                            description=tool.description,\n                            parameters=tool.parameters,\n                        ),\n                    )\n                )\n            elif tool.type == \"web_search_preview\":\n                tools.append(\n                    CreateToolRequest(\n                        name=\"web_search_preview\",\n                        type=\"function\",\n                        function=FunctionDef(\n                            name=\"web_search_preview\",\n                            description=\"Search the web for information\",\n                            parameters={\n                                \"type\": \"object\",\n                                \"properties\": {\n                                    \"query\": {\"type\": \"string\"},\n                                    \"domains\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}},\n                                    \"search_context_size\": {\"type\": \"integer\"},\n                                    \"user_location\": {\"type\": \"string\"},\n                                },\n                                \"required\": [\"query\"],\n                            },\n                        ),\n                    )\n                )\n            elif tool.type == \"file_search\" or tool.type == \"computer-preview\":\n                pass\n\n    chat_input = ChatInput(\n        model=create_response.model,\n        messages=messages,\n        save=create_response.store,\n        stream=create_response.stream,\n        max_tokens=create_response.max_tokens,\n        temperature=create_response.temperature,\n        presence_penalty=create_response.presence_penalty,\n        frequency_penalty=create_response.frequency_penalty,\n        top_p=create_response.top_p,\n        stop=create_response.stop or [],\n        logit_bias=create_response.logit_bias,\n        tool_choice=create_response.tool_choice,\n        tools=tools,\n        truncation=create_response.truncation,\n        recall=False,  # TODO: Enable recall only when file_search tool is present\n    )\n\n    return agent, session, chat_input\n\n\ndef convert_chat_response_to_response(\n    create_response: CreateResponse,\n    chat_response: ChatResponse,\n    chat_input: ChatInput,\n    session_id: UUID,\n    user_id: UUID,\n    function_tool_requests: list[FunctionToolCall],\n    performed_tool_calls: list[ChatCompletionMessageToolCall],\n) -> Response:\n    chat_response_usage: CompletionUsage | None = chat_response.usage\n\n    if chat_response_usage is None:\n        usage = ResponseUsage(\n            input_tokens=0,\n            input_tokens_details=InputTokensDetails(cached_tokens=0),\n            output_tokens=0,\n            output_tokens_details=OutputTokensDetails(reasoning_tokens=0),\n            total_tokens=0,\n        )\n    else:\n        usage = ResponseUsage(\n            input_tokens=chat_response_usage.prompt_tokens or 0,\n            # FIXME: Placeholder. Need to add proper input_tokens_details\n            input_tokens_details=InputTokensDetails(cached_tokens=0),\n            output_tokens=chat_response_usage.completion_tokens or 0,\n            # FIXME: Placeholder. Need to add proper output_tokens_details\n            output_tokens_details=OutputTokensDetails(reasoning_tokens=0),\n            total_tokens=chat_response_usage.total_tokens or 0,\n        )\n\n    output: list[\n        OutputMessage\n        | FileSearchToolCall\n        | FunctionToolCall\n        | WebSearchToolCall\n        | ComputerToolCall\n        | ReasoningItem\n    ] = []\n\n    for performed_tool_call in performed_tool_calls:\n        if performed_tool_call.type == \"function\":\n            if performed_tool_call.function.name == \"web_search_preview\":\n                output.append(\n                    WebSearchToolCall(\n                        id=performed_tool_call.id,\n                        status=\"completed\",\n                    )\n                )\n\n            # TODO: Support custom functions, and other tool calls mapped to functions\n        else:\n            # TODO: Support system tool calls here\n            pass\n\n    output_text = chat_response.choices[0].message.content\n    if output_text:\n        output.append(\n            OutputMessage(\n                type=\"message\",\n                id=str(chat_response.id),\n                status=\"completed\",\n                role=\"assistant\",\n                content=[OutputText(text=output_text, annotations=[])],\n            )\n        )\n\n    output.extend(function_tool_requests)\n\n    return Response(\n        id=str(session_id),\n        created_at=int(chat_response.created_at.timestamp()),\n        status=\"completed\",  # because we don't have get endpoint\n        error=None,\n        incomplete_details=None,\n        instructions=create_response.instructions,\n        max_output_tokens=create_response.max_tokens,  # TODO: is it the same as chat_input.max_tokens?\n        model=chat_input.model,\n        output=output,\n        parallel_tool_calls=create_response.parallel_tool_calls,\n        previous_response_id=create_response.previous_response_id,\n        reasoning=create_response.reasoning,  # TODO: add reasoning (or not?)\n        store=chat_input.save,\n        temperature=chat_input.temperature,\n        text=create_response.text or {\"format\": {\"type\": \"text\"}},\n        tool_choice=\"auto\",  # Default to auto if None\n        tools=[],  # Default to empty list if None\n        top_p=chat_input.top_p,\n        truncation=\"auto\",  # Default to auto if None\n        usage=usage,\n        user=str(user_id),\n        metadata=create_response.metadata or {},\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/routers/utils/model_validation.py",
    "content": "# AIDEV-NOTE: Validates model names against LiteLLM and raises HTTPException for invalid names.\nfrom fastapi import HTTPException\nfrom starlette.status import HTTP_400_BAD_REQUEST\n\nfrom ...common.utils.model_validation import (\n    ModelNotAvailableError,\n    ensure_model_available,\n)\n\n\nasync def validate_model(model_name: str | None) -> None:\n    \"\"\"Validate that ``model_name`` exists in LiteLLM's catalog.\"\"\"\n\n    try:\n        await ensure_model_available(model_name)\n    except ModelNotAvailableError as exc:\n        raise HTTPException(status_code=HTTP_400_BAD_REQUEST, detail=str(exc)) from exc\n"
  },
  {
    "path": "src/agents-api/agents_api/web.py",
    "content": "\"\"\"\nThis module initializes the FastAPI application, registers routes, sets up middleware, and configures exception handlers.\n\"\"\"\n\nimport asyncio\nimport logging\nfrom collections.abc import Callable\nfrom typing import Any, cast\nfrom uuid import UUID\n\nimport asyncpg\nimport sentry_sdk\nimport uvicorn\nimport uvloop\nfrom fastapi import Depends, FastAPI, Request, status\nfrom fastapi.exceptions import HTTPException, RequestValidationError\nfrom fastapi.middleware.cors import CORSMiddleware\nfrom fastapi.responses import JSONResponse\nfrom litellm.exceptions import APIError, BadRequestError\nfrom pydantic import ValidationError\nfrom temporalio.service import RPCError\n\nfrom .app import app\nfrom .common.exceptions import BaseCommonException\nfrom .dependencies.auth import get_api_key\nfrom .env import enable_responses, free_tier_cost_limit, sentry_dsn\nfrom .exceptions import PromptTooBigError\nfrom .queries.usage.get_user_cost import get_usage_cost\nfrom .routers import (\n    agents,\n    docs,\n    files,\n    healthz,\n    internal,\n    jobs,\n    projects,\n    responses,\n    secrets,\n    sessions,\n    tasks,\n    users,\n)\n\nif not sentry_dsn:\n    print(\"Sentry DSN not found. Sentry will not be enabled.\")\nelse:\n    sentry_sdk.init(\n        dsn=sentry_dsn,\n        enable_tracing=True,\n        traces_sample_rate=1.0,\n    )\n\n\nlogger: logging.Logger = logging.getLogger(__name__)\n\n\ndef make_exception_handler(status_code: int) -> Callable[[Any, Any], Any]:\n    \"\"\"\n    Creates a custom exception handler for the application.\n\n    Parameters:\n    - status_code (int): The HTTP status code to return for this exception.\n\n    Returns:\n    A callable exception handler that logs the exception and returns a JSON response with the specified status code.\n    \"\"\"\n\n    async def _handler(request: Request, exc: Exception):\n        if isinstance(exc, ValidationError | RequestValidationError):\n            exc = cast(ValidationError | RequestValidationError, exc)\n            error_details = []\n\n            # Process each validation error\n            for error in exc.errors():\n                error_info = {\n                    \"type\": error.get(\"type\", \"validation_error\"),\n                    \"msg\": error.get(\"msg\", \"Validation error\"),\n                    \"loc\": _format_location(error.get(\"loc\", [])),\n                }\n\n                # Enhance with fixes/suggestions when possible\n                error_info.update(_get_error_suggestions(error))\n\n                # Add input value if available\n                if \"input\" in error:\n                    error_info[\"received\"] = str(error[\"input\"])\n\n                error_details.append(error_info)\n\n            # Log the error with appropriate level\n            logger.warning(f\"Validation error: {error_details}\")\n\n            return JSONResponse(\n                content={\n                    \"error\": {\n                        \"message\": \"Validation error\",\n                        \"details\": error_details,\n                        \"code\": \"validation_error\",\n                    }\n                },\n                status_code=status_code,\n            )\n\n        # For non-validation errors, return a simpler error response\n        return JSONResponse(\n            content={\n                \"error\": {\n                    \"message\": str(exc),\n                    \"code\": getattr(exc, \"code\", \"unknown_error\"),\n                }\n            },\n            status_code=status_code,\n        )\n\n    return _handler\n\n\ndef _format_location(loc: list) -> str:\n    \"\"\"Format error location into a human-readable string.\"\"\"\n    if not loc:\n        return \"\"\n\n    # Skip the initial 'body' element if present\n    if loc[0] == \"body\" and len(loc) > 1:\n        loc = loc[1:]\n\n    # Format the location\n    parts = []\n    for item in loc:\n        if isinstance(item, int):\n            parts.append(f\"[{item}]\")\n        else:\n            if parts:  # Add dot separator if not first element\n                parts.append(f\".{item}\")\n            else:\n                parts.append(str(item))\n\n    return \"\".join(parts)\n\n\ndef _get_error_suggestions(error: dict) -> dict:\n    \"\"\"Generate user-friendly suggestions based on the error type.\"\"\"\n    error_type = error.get(\"type\", \"\")\n    suggestions = {}\n\n    # Handle different validation error types\n    if error_type == \"missing\":\n        suggestions[\"fix\"] = \"Add this required field to your request\"\n        suggestions[\"example\"] = '{ \"field_name\": \"value\" }'\n\n    elif error_type == \"type_error\":\n        if \"expected_type\" in error:\n            suggestions[\"fix\"] = f\"Provide a value of type {error['expected_type']}\"\n            if error[\"expected_type\"] == \"string\":\n                suggestions[\"example\"] = '\"text value\"'\n            elif error[\"expected_type\"] == \"integer\":\n                suggestions[\"example\"] = \"42\"\n            elif error[\"expected_type\"] == \"number\":\n                suggestions[\"example\"] = \"3.14\"\n            elif error[\"expected_type\"] == \"boolean\":\n                suggestions[\"example\"] = \"true\"\n            elif error[\"expected_type\"] == \"array\":\n                suggestions[\"example\"] = \"[]\"\n            elif error[\"expected_type\"] == \"object\":\n                suggestions[\"example\"] = \"{}\"\n        else:\n            suggestions[\"fix\"] = \"Provide a value of the correct type\"\n\n    elif error_type == \"value_error.missing\":\n        suggestions[\"fix\"] = \"Provide a value for this required field\"\n        suggestions[\"note\"] = \"This field cannot be null or undefined\"\n\n    elif error_type == \"value_error.extra\":\n        suggestions[\"fix\"] = \"Remove this field as it is not expected\"\n        suggestions[\"note\"] = \"Check the API documentation for the correct field names\"\n\n    elif error_type == \"value_error.const\":\n        if \"permitted\" in error:\n            suggestions[\"fix\"] = f\"Value must be one of: {error['permitted']}\"\n            suggestions[\"example\"] = (\n                f\"{error['permitted'][0] if error['permitted'] else 'appropriate_value'}\"\n            )\n\n    elif \"min_length\" in error_type:\n        if \"limit_value\" in error:\n            suggestions[\"fix\"] = f\"Value must have at least {error['limit_value']} characters\"\n            try:\n                limit = int(error[\"limit_value\"])\n                suggestions[\"example\"] = \"x\" * limit\n            except (ValueError, TypeError):\n                suggestions[\"example\"] = \"x\" * 5  # Fallback example\n\n    elif \"max_length\" in error_type:\n        if \"limit_value\" in error:\n            suggestions[\"fix\"] = f\"Value must have at most {error['limit_value']} characters\"\n            suggestions[\"note\"] = (\n                f\"Current value exceeds the maximum length of {error['limit_value']} characters\"\n            )\n\n    # This case is now handled by the more general \"min_length\" check above\n\n    # This case is now handled by the more general \"max_length\" check above\n\n    elif \"not_ge\" in error_type:\n        if \"limit_value\" in error:\n            suggestions[\"fix\"] = (\n                f\"Value must be greater than or equal to {error['limit_value']}\"\n            )\n            suggestions[\"example\"] = f\"{error['limit_value']}\"\n\n    elif \"not_le\" in error_type:\n        if \"limit_value\" in error:\n            suggestions[\"fix\"] = f\"Value must be less than or equal to {error['limit_value']}\"\n            suggestions[\"example\"] = f\"{error['limit_value']}\"\n\n    elif \"not_gt\" in error_type:\n        if \"limit_value\" in error:\n            suggestions[\"fix\"] = f\"Value must be greater than {error['limit_value']}\"\n            try:\n                suggestions[\"example\"] = f\"{float(error['limit_value']) + 1}\"\n            except (ValueError, TypeError):\n                suggestions[\"example\"] = \"a value greater than the limit\"\n\n    elif \"not_lt\" in error_type:\n        if \"limit_value\" in error:\n            suggestions[\"fix\"] = f\"Value must be less than {error['limit_value']}\"\n            suggestions[\"example\"] = f\"{float(error['limit_value']) - 1}\"\n\n    elif \"enum\" in error_type:\n        if \"permitted\" in error:\n            allowed_values = \", \".join([f'\"{val}\"' for val in error[\"permitted\"]])\n            suggestions[\"fix\"] = f\"Value must be one of: {allowed_values}\"\n\n    elif \"json\" in error_type:\n        suggestions[\"fix\"] = \"Provide valid JSON format\"\n\n    elif \"uuid\" in error_type:\n        suggestions[\"fix\"] = \"Provide a valid UUID (e.g., 123e4567-e89b-12d3-a456-426614174000)\"\n\n    elif \"datetime\" in error_type:\n        suggestions[\"fix\"] = \"Provide a valid ISO 8601 datetime (e.g., 2023-01-01T12:00:00Z)\"\n\n    elif \"url\" in error_type:\n        suggestions[\"fix\"] = \"Provide a valid URL (e.g., https://example.com)\"\n\n    elif \"email\" in error_type:\n        suggestions[\"fix\"] = \"Provide a valid email address\"\n\n    return suggestions\n\n\ndef register_exceptions(app: FastAPI) -> None:\n    \"\"\"\n    Registers custom exception handlers for the FastAPI application.\n\n    Parameters:\n    - app (FastAPI): The FastAPI application instance to register the exception handlers for.\n    \"\"\"\n    app.add_exception_handler(\n        RequestValidationError,\n        make_exception_handler(status.HTTP_422_UNPROCESSABLE_ENTITY),\n    )\n    # app.add_exception_handler(\n    #     QueryException,\n    #     make_exception_handler(status.HTTP_500_INTERNAL_SERVER_ERROR),\n    # )\n\n\n# TODO: Auth logic should be moved into global middleware _per router_\n#       Because some routes don't require auth\n# See: https://fastapi.tiangolo.com/tutorial/bigger-applications/\n#\n\n# Add other routers with the get_api_key dependency\nif enable_responses:\n    app.include_router(responses.router, dependencies=[Depends(get_api_key)])\nelse:\n    app.include_router(agents.router, dependencies=[Depends(get_api_key)])\n    app.include_router(sessions.router, dependencies=[Depends(get_api_key)])\n    app.include_router(users.router, dependencies=[Depends(get_api_key)])\n    app.include_router(files.router, dependencies=[Depends(get_api_key)])\n    app.include_router(docs.router, dependencies=[Depends(get_api_key)])\n    app.include_router(tasks.router, dependencies=[Depends(get_api_key)])\n    app.include_router(secrets.router, dependencies=[Depends(get_api_key)])\n    app.include_router(internal.router)\n    app.include_router(projects.router, dependencies=[Depends(get_api_key)])\napp.include_router(jobs.router, dependencies=[Depends(get_api_key)])\napp.include_router(healthz.router)\n\n\n# Register the usage check middleware\n@app.middleware(\"http\")\nasync def usage_check_middleware(request: Request, call_next):\n    # Get developer ID from header\n    developer_id_str = request.headers.get(\"X-Developer-Id\")\n    if not developer_id_str:\n        return await call_next(request)\n\n    user_cost_data: dict = {}\n    invalid_account_error = JSONResponse(\n        status_code=status.HTTP_403_FORBIDDEN,\n        content={\n            \"error\": {\n                \"message\": \"Invalid user account\",\n                \"code\": \"invalid_user_account\",\n            }\n        },\n    )\n\n    try:\n        developer_id = UUID(developer_id_str)\n        user_cost_data: dict = await get_usage_cost(developer_id=developer_id)\n\n        # Check if user is active\n        if not user_cost_data.get(\"active\", False):\n            return invalid_account_error\n\n        if request.method == \"GET\":\n            return await call_next(request)\n\n        # Skip cost check for users with \"paid\" tag\n        user_tags = user_cost_data.get(\"tags\", []) or []\n        if not isinstance(user_tags, list):\n            user_tags = []\n\n        if \"paid\" in user_tags:\n            return await call_next(request)\n\n        user_cost = user_cost_data.get(\"cost\")\n\n        if user_cost is None or float(user_cost) > free_tier_cost_limit:\n            return JSONResponse(\n                status_code=status.HTTP_403_FORBIDDEN,\n                content={\n                    \"error\": {\n                        \"message\": \"Cost limit exceeded\",\n                        \"code\": \"cost_limit_exceeded\",\n                    }\n                },\n            )\n    except HTTPException as e:\n        if e.status_code == status.HTTP_404_NOT_FOUND:\n            return invalid_account_error\n\n        return JSONResponse(\n            status_code=e.status_code,\n            content=e.detail,\n        )\n    except asyncpg.NoDataFoundError:\n        return invalid_account_error\n    except ValueError:\n        return JSONResponse(\n            status_code=status.HTTP_400_BAD_REQUEST,\n            content={\n                \"error\": {\n                    \"message\": \"Invalid developer ID\",\n                    \"code\": \"invalid_developer_id\",\n                }\n            },\n        )\n    except Exception as e:\n        # Log the error but don't block the request\n        logger.error(f\"Error in usage check middleware: {e!s}\")\n\n    # Continue processing the request\n    return await call_next(request)\n\n\n# TODO: CORS should be enabled only for JWT auth\n#\napp.add_middleware(\n    CORSMiddleware,\n    allow_origins=[\"*\"],\n    allow_credentials=True,\n    allow_methods=[\"*\"],\n    allow_headers=[\"*\"],\n    max_age=3600,\n)\n\n# TODO: GZipMiddleware should be enabled only for non-streaming routes\n# app.add_middleware(GZipMiddleware, minimum_size=1000, compresslevel=3)\n\nregister_exceptions(app)\n\n\n@app.exception_handler(HTTPException)\nasync def http_exception_handler(request, exc: HTTPException):  # pylint: disable=unused-argument\n    return JSONResponse(\n        status_code=exc.status_code,\n        content={\n            \"error\": {\n                \"message\": str(exc.detail),\n                \"code\": getattr(exc, \"code\", f\"http_{exc.status_code}\"),\n                \"type\": \"http_error\",\n            }\n        },\n    )\n\n\n@app.exception_handler(RPCError)\nasync def validation_error_handler(request: Request, exc: RPCError):\n    return JSONResponse(\n        status_code=status.HTTP_400_BAD_REQUEST,\n        content={\n            \"error\": {\n                \"message\": \"job not found or invalid\",\n                \"code\": exc.status.name,\n                \"type\": \"rpc_error\",\n            }\n        },\n    )\n\n\n@app.exception_handler(BaseCommonException)\nasync def session_not_found_error_handler(request: Request, exc: BaseCommonException):\n    return JSONResponse(\n        status_code=exc.http_code,\n        content={\n            \"error\": {\n                \"message\": str(exc),\n                \"code\": getattr(exc, \"code\", \"common_error\"),\n                \"type\": exc.__class__.__name__,\n            }\n        },\n    )\n\n\n@app.exception_handler(PromptTooBigError)\nasync def prompt_too_big_error(request: Request, exc: PromptTooBigError):\n    return JSONResponse(\n        status_code=status.HTTP_400_BAD_REQUEST,\n        content={\n            \"error\": {\n                \"message\": str(exc),\n                \"code\": \"prompt_too_big\",\n                \"type\": \"PromptTooBigError\",\n                \"fix\": \"Reduce the size of your prompt or use a model with a larger context window\",\n            }\n        },\n    )\n\n\n@app.exception_handler(BadRequestError)\nasync def litellm_bad_request_error(request: Request, exc: BadRequestError):\n    return JSONResponse(\n        status_code=status.HTTP_400_BAD_REQUEST,\n        content={\n            \"error\": {\n                \"message\": str(exc),\n                \"code\": \"llm_bad_request\",\n                \"type\": \"LLMServiceBadRequest\",\n                \"fix\": \"Check request payload for invalid or missing fields\",\n            }\n        },\n    )\n\n\n@app.exception_handler(APIError)\nasync def litellm_api_error(request: Request, exc: APIError):\n    return JSONResponse(\n        status_code=status.HTTP_502_BAD_GATEWAY,\n        content={\n            \"error\": {\n                \"message\": str(exc),\n                \"code\": \"llm_api_error\",\n                \"type\": \"LLMServiceError\",\n                \"fix\": \"Please check your API keys and model configurations or try again later\",\n            }\n        },\n    )\n\n\ndef main(\n    host: str = \"127.0.0.1\",\n    port: int = 8000,\n    backlog: int = 4096,\n    timeout_keep_alive: int = 30,\n    workers=None,\n    log_level: str = \"info\",\n) -> None:\n    uvicorn.run(\n        app,\n        host=host,\n        port=port,\n        log_level=log_level,\n        timeout_keep_alive=timeout_keep_alive,\n        backlog=backlog,\n        workers=workers,\n    )\n\n\nasyncio.set_event_loop_policy(uvloop.EventLoopPolicy())\n"
  },
  {
    "path": "src/agents-api/agents_api/worker/AGENTS.md",
    "content": "# AGENTS.md - worker\n\nThis folder contains the Temporal worker setup for processing agents-api workflows and activities.\n\nKey Points\n- Entrypoint script: `run_worker.py` initializes the Temporal worker.\n- Register both workflows and activities in worker setup.\n- Configure `TEMPORAL_URL` and retry policies via environment variables.\n- Logging and monitoring configured in `logging.yaml`.\n- Use `poe test` for basic worker smoke tests.\n\n## Purpose\n- Temporal worker process for executing workflows and activities\n- Handles background processing of tasks\n- Entry point for the worker service\n\n## Key Components\n\n### worker.py\n- Configures and registers Temporal worker\n- Registers workflows and activities\n- Sets limits on concurrency and throughput\n\n### codec.py\n- Custom codec for Temporal payload processing\n- Handles serialization/deserialization\n- Supports large object handling with S3 storage\n\n### __main__.py\n- Entry point for worker service\n- Connects to Temporal service\n- Starts worker processes\n\n## Worker Configuration\n- Task queue: Configured to listen on specific queue\n- Concurrency limits:\n  - Maximum concurrent workflow tasks\n  - Maximum concurrent activities\n  - Rate limits for activities per second\n- Graceful shutdown with timeout\n\n## Registered Components\n- Workflows: TaskExecutionWorkflow, DemoWorkflow\n- Activities: All task_steps, execute_api_call, execute_system, etc.\n\n## Remote Object Handling\n- Large objects stored in S3 via RemoteObject\n- Automatic serialization/deserialization\n- Prevents Temporal payload size limitations\n"
  },
  {
    "path": "src/agents-api/agents_api/worker/__init__.py",
    "content": "#!/usr/bin/env python3\n\n\"\"\"\nThe Worker Module for the Agents API\n\nThis module is responsible for handling background tasks and jobs for the Agents API application. It provides functionalities for managing memory management tasks, among other background operations, to enhance the application's performance and scalability. The worker module interacts with other components of the application by receiving tasks, processing them asynchronously, and reporting on task completion or errors. This module plays a crucial role in ensuring the application can handle complex operations efficiently without blocking the main execution flow.\n\"\"\"\n"
  },
  {
    "path": "src/agents-api/agents_api/worker/__main__.py",
    "content": "\"\"\"\nThis script initializes and runs a Temporal worker that listens for tasks on a specified queue.\nIt supports various workflows and activities related to agents' operations.\n\"\"\"\n\n# !/usr/bin/env python3\n\nimport asyncio\nimport logging\n\nfrom tenacity import after_log, retry, retry_if_exception_type, wait_fixed\n\nfrom ..app import app, lifespan\nfrom ..clients import temporal\nfrom .worker import create_worker\n\nlogger = logging.getLogger(__name__)\nh = logging.StreamHandler()\nfmt = logging.Formatter(\"[%(asctime)s/%(levelname)s] - %(message)s\")\nh.setFormatter(fmt)\nlogger.addHandler(h)\nlogger.setLevel(logging.DEBUG)\n\n\n@retry(\n    wait=wait_fixed(20),\n    retry=retry_if_exception_type(RuntimeError),\n    after=after_log(logger, logging.DEBUG),\n)\nasync def main() -> None:\n    \"\"\"\n    Initializes the Temporal client and worker with TLS configuration (if provided),\n    then starts the worker to listen for tasks on the configured task queue.\n    \"\"\"\n\n    client = await temporal.get_client_with_metrics()\n    worker = create_worker(client)\n    if hasattr(worker, \"_workflow_worker\") and worker._workflow_worker:  # noqa: SLF001\n        worker._workflow_worker._deadlock_timeout_seconds = 60  # noqa: SLF001\n\n    async with lifespan(app):\n        # Start the worker to listen for and process tasks\n        await worker.run()\n\n\nif __name__ == \"__main__\":\n    asyncio.run(main())\n"
  },
  {
    "path": "src/agents-api/agents_api/worker/codec.py",
    "content": "###\n# NOTE: Working with temporal's codec is really really weird\n# This is a workaround to use pydantic models with temporal\n# The codec is used to serialize/deserialize the data\n# But this code is quite brittle. Be careful when changing it\n\nimport dataclasses\nimport logging\nimport sys\nimport time\nfrom typing import Any, Self\n\nimport larch.pickle as pickle\nimport temporalio.converter\nfrom lz4.frame import compress, decompress\nfrom pydantic import BaseModel, ConfigDict\nfrom temporalio import workflow\nfrom temporalio.api.common.v1 import Payload\nfrom temporalio.converter import (\n    CompositePayloadConverter,\n    DefaultPayloadConverter,\n    EncodingPayloadConverter,\n)\n\nwith workflow.unsafe.imports_passed_through():\n    from ..clients import sync_s3\n    from ..common.utils.memory import total_size\n    from ..env import blob_store_bucket, debug, testing\n    from ..exceptions import FailedDecodingSentinel, FailedEncodingSentinel\n\n\nclass RemoteObject(BaseModel):\n    key: str\n    bucket: str\n    model_config = ConfigDict(frozen=True)\n\n    @classmethod\n    def from_value(cls, x: Any) -> Self:\n        sync_s3.setup()\n\n        serialized = serialize(x)\n\n        key = sync_s3.add_object_with_hash(serialized)\n        # AIDEV-NOTE: use cls to return correct subclass instance for Self\n        return cls(key=key, bucket=blob_store_bucket)\n\n    def load(self) -> Any:\n        sync_s3.setup()\n\n        fetched = sync_s3.get_object(self.key)\n        return deserialize(fetched)\n\n\ndef serialize(x: Any) -> bytes:\n    \"\"\"\n    Serialize an object using pickle and compress with lz4.\n\n    Args:\n        x: The object to serialize\n\n    Returns:\n        Compressed serialized bytes\n\n    Raises:\n        Exception: If serialization fails\n    \"\"\"\n    start_time = time.time()\n\n    try:\n        # First pickle the object\n        pickled = pickle.dumps(x, protocol=-1)\n\n        # Then compress the pickled data\n        compressed = compress(pickled)\n\n        # Log timing for large objects\n        duration = time.time() - start_time\n        if duration > 1:\n            # Use pickled size as a more accurate measure of the object's true size\n            original_size = len(pickled) / 1000\n            compressed_size = len(compressed) / 1000\n\n            # Safely calculate compression ratio to avoid division by zero\n            if len(compressed) > 0:\n                compression_ratio = f\"{len(pickled) / len(compressed):.2f}x\"\n            else:\n                compression_ratio = \"N/A\"\n\n            # Use proper logger instead of print statements\n            logging.info(\n                f\"||| [SERIALIZE] Time: {duration:.2f}s | Original: {original_size:.2f}kb | \"\n                f\"Compressed: {compressed_size:.2f}kb | Ratio: {compression_ratio}\"\n            )\n\n        return compressed\n    except Exception as e:\n        logging.error(\n            f\"||| [SERIALIZE ERROR] Failed to serialize object of type {type(x).__name__}: {e!s}\"\n        )\n        raise\n\n\ndef deserialize(b: bytes) -> Any:\n    \"\"\"\n    Deserialize a compressed pickle object.\n\n    Args:\n        b: Compressed serialized bytes\n\n    Returns:\n        The deserialized object\n\n    Raises:\n        Exception: If deserialization fails\n    \"\"\"\n    start_time = time.time()\n\n    try:\n        # First decompress the data\n        decompressed = decompress(b)\n\n        # Then unpickle to get the original object\n        obj = pickle.loads(decompressed)\n\n        # Log timing for large objects\n        duration = time.time() - start_time\n        if duration > 1:\n            compressed_size = len(b) / 1000\n            decompressed_size = len(decompressed) / 1000\n            obj_size = total_size(obj) / 1000\n\n            logging.info(\n                f\"||| [DESERIALIZE] Time: {duration:.2f}s | Compressed: {compressed_size:.2f}kb | \"\n                f\"Decompressed: {decompressed_size:.2f}kb | Object: {obj_size:.2f}kb | Type: {type(obj).__name__}\"\n            )\n\n        return obj\n    except Exception as e:\n        logging.error(f\"||| [DESERIALIZE ERROR] Failed to deserialize: {e!s}\")\n        raise\n\n\ndef from_payload_data(data: bytes, type_hint: type | None = None) -> Any:\n    decoded = deserialize(data)\n\n    if isinstance(decoded, RemoteObject):\n        decoded = decoded.load()\n\n    if type_hint is None:\n        return decoded\n\n    decoded_type = type(decoded)\n\n    if (\n        type_hint != decoded_type\n        and hasattr(type_hint, \"model_construct\")\n        and hasattr(decoded, \"model_dump\")\n    ):\n        try:\n            decoded = type_hint(**decoded.model_dump())\n        except Exception as e:\n            logging.warning(f\"WARNING: Could not promote {decoded_type} to {type_hint}: {e}\")\n\n    return decoded\n\n\nclass PydanticEncodingPayloadConverter(EncodingPayloadConverter):\n    encoding = \"text/pickle+lz4\"\n    b_encoding = encoding.encode()\n\n    def to_payload(\n        self, value: Any\n    ) -> (\n        Payload | FailedEncodingSentinel | None\n    ):  # AIDEV-NOTE: include FailedEncodingSentinel for error payloads\n        python_version = f\"{sys.version_info.major}.{sys.version_info.minor}\".encode()\n\n        try:\n            data = serialize(value)\n\n            return Payload(\n                metadata={\n                    \"encoding\": self.b_encoding,\n                    \"python_version\": python_version,\n                },\n                data=data,\n            )\n\n        except Exception as e:\n            if debug or testing:\n                raise e\n\n            # TODO: In production, we don't want to crash the workflow\n            #       But the sentinel object must be handled by the caller\n            logging.warning(f\"WARNING: Could not encode {value}: {e}\")\n            # Convert the value to bytes using str() representation if needed\n            error_bytes = str(value).encode(\"utf-8\")\n            return FailedEncodingSentinel(payload_data=error_bytes)\n\n    def from_payload(self, payload: Payload, type_hint: type | None = None) -> Any:\n        current_python_version = f\"{sys.version_info.major}.{sys.version_info.minor}\".encode()\n\n        # Check if this is a payload we can handle\n        if (\n            \"encoding\" not in payload.metadata\n            or payload.metadata[\"encoding\"] != self.b_encoding\n            or \"python_version\" not in payload.metadata\n            or payload.metadata[\"python_version\"] != current_python_version\n        ):\n            # Return the payload data as-is if we can't handle it\n            return payload.data\n\n        try:\n            return from_payload_data(payload.data, type_hint)\n        except Exception as e:\n            # In debug/testing mode, we want to see the full error\n            if debug or testing:\n                raise e\n\n            # Create a more detailed log message with payload metadata\n            payload_size = len(payload.data) if payload.data else 0\n            metadata_str = \", \".join(f\"{k}={v}\" for k, v in payload.metadata.items())\n\n            logging.warning(\n                f\"Failed to decode payload: {e!s}\\n\"\n                f\"Payload size: {payload_size} bytes\\n\"\n                f\"Metadata: {metadata_str}\\n\"\n                f\"Type hint: {type_hint.__name__ if type_hint else 'None'}\"\n            )\n\n            # Return sentinel object that must be handled by the caller\n            return FailedDecodingSentinel(payload_data=payload.data)\n\n\nclass PydanticPayloadConverter(CompositePayloadConverter):\n    def __init__(self) -> None:\n        # Just add ours as first before the defaults\n        super().__init__(\n            PydanticEncodingPayloadConverter(),\n            *DefaultPayloadConverter.default_encoding_payload_converters,\n        )\n\n\n# Use the default data converter, but change the payload converter.\npydantic_data_converter: Any = dataclasses.replace(\n    temporalio.converter.default(),\n    payload_converter_class=PydanticPayloadConverter,\n)\n"
  },
  {
    "path": "src/agents-api/agents_api/worker/worker.py",
    "content": "from datetime import timedelta\nfrom inspect import getmembers, isfunction\nfrom typing import Any\n\nfrom temporalio.client import Client\nfrom temporalio.worker import Worker\n\nfrom ..env import (\n    temporal_max_activities_per_second,\n    temporal_max_concurrent_activities,\n    temporal_max_concurrent_workflow_tasks,\n    temporal_max_task_queue_activities_per_second,\n)\n\n\ndef create_worker(client: Client) -> Any:\n    \"\"\"\n    Initializes the Temporal client and worker with TLS configuration (if provided),\n    then create a worker to listen for tasks on the configured task queue.\n    \"\"\"\n\n    from ..activities import task_steps\n    from ..activities.demo import demo_activity\n    from ..activities.execute_api_call import execute_api_call\n    from ..activities.execute_integration import execute_integration\n    from ..activities.execute_system import execute_system\n    from ..activities.pg_query_step import pg_query_step\n    from ..activities.sync_items_remote import load_inputs_remote, save_inputs_remote\n    from ..common.interceptors import CustomInterceptor\n    from ..env import (\n        temporal_task_queue,\n    )\n    from ..workflows.demo import DemoWorkflow\n    from ..workflows.task_execution import TaskExecutionWorkflow\n\n    _task_activity_names, task_activities = zip(*getmembers(task_steps, isfunction))\n\n    # Initialize the worker with the specified task queue, workflows, and activities\n    return Worker(\n        client,\n        graceful_shutdown_timeout=timedelta(seconds=30),\n        task_queue=temporal_task_queue,\n        workflows=[\n            DemoWorkflow,\n            TaskExecutionWorkflow,\n        ],\n        activities=[\n            *task_activities,\n            demo_activity,\n            execute_integration,\n            execute_system,\n            execute_api_call,\n            save_inputs_remote,\n            load_inputs_remote,\n            pg_query_step,\n        ],\n        interceptors=[CustomInterceptor()],\n        max_concurrent_workflow_tasks=temporal_max_concurrent_workflow_tasks,\n        max_concurrent_activities=temporal_max_concurrent_activities,\n        max_activities_per_second=temporal_max_activities_per_second,\n        max_task_queue_activities_per_second=temporal_max_task_queue_activities_per_second,\n    )\n"
  },
  {
    "path": "src/agents-api/agents_api/workflows/AGENTS.md",
    "content": "# AGENTS.md - workflows\n\nThis folder contains Temporal workflow definitions orchestrating activities in `agents-api`.\n\nKey Points\n- Implement workflows with Temporal Python SDK (init, step, finish, error, cancel).\n- Use `WorkflowClient.execute` for invocation.\n- Define branching logic with IfElse and Parallel steps as needed.\n- Monitor transitions in the database for debugging.\n- Place workflow tests in `agents-api/tests/`.\n- See parent AGENTS.md for component-wide instructions.\n\n# Workflows\n\n## Purpose\n- Temporal workflow definitions\n- Orchestrate activities in durable, fault-tolerant execution\n- Manage execution state and transitions\n\n## Key Workflows\n\n### task_execution/\n- `TaskExecutionWorkflow`: Primary workflow for executing tasks\n- Executes steps in sequence based on task definition\n- Handles workflow transitions, branching, and loops\n- Controls execution state machine\n\n### task_execution/helpers.py\n- Control flow for workflow execution:\n  - `execute_switch_branch`: Handles switch/case logic\n  - `execute_if_else_branch`: Conditional execution\n  - `execute_foreach_step`: Iteration over collections\n  - `execute_map_reduce_step`: Map/reduce operations\n  - `execute_map_reduce_step_parallel`: Parallelized map/reduce\n\n## Workflow Execution Model\n1. Workflow receives ExecutionInput with task definition\n2. For each step in workflow:\n   - Determine step type (evaluate, tool, prompt, etc.)\n   - Execute corresponding activity\n   - Handle result and determine next transition\n3. State persists across failures and retries\n4. Child workflows used for branching logic\n\n## State Machine\n- `init` → `wait`/`error`/`step`/`cancelled`/`init_branch`/`finish`\n- Transitions tracked in database\n- Status reflected in API responses\n\n## Concurrency and Control\n- Parallel execution for map/reduce operations\n- Heartbeats for long-running activities\n- Workflow continues even if activities fail (with retry policies)\n"
  },
  {
    "path": "src/agents-api/agents_api/workflows/__init__.py",
    "content": "#!/usr/bin/env python3\n# AIDEV-NOTE: Configure Temporal workflow unsafe imports and logging setup for agents-api workflows.\nfrom temporalio import workflow\n\nwith workflow.unsafe.imports_passed_through():\n    import logging\n\n    logging.basicConfig(level=logging.INFO)\n"
  },
  {
    "path": "src/agents-api/agents_api/workflows/demo.py",
    "content": "from datetime import timedelta\n\nfrom temporalio import workflow\n\nfrom ..common.retry_policies import DEFAULT_RETRY_POLICY\n\n# AIDEV-NOTE: Sample workflow demonstrating Temporal integration with a simple demo activity.\nwith workflow.unsafe.imports_passed_through():\n    from ..activities.demo import demo_activity\n\n\n@workflow.defn\nclass DemoWorkflow:\n    @workflow.run\n    async def run(self, a: int, b: int) -> int:\n        return await workflow.execute_activity(\n            demo_activity,\n            args=[a, b],\n            start_to_close_timeout=timedelta(seconds=30),\n            retry_policy=DEFAULT_RETRY_POLICY,\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/workflows/task_execution/__init__.py",
    "content": "# AIDEV-NOTE: This file contains the core Temporal workflow definition and step handlers for task execution.\n# !/usr/bin/env python3\n\nimport asyncio\nfrom datetime import timedelta\nfrom typing import Any, cast\n\nfrom temporalio import workflow\nfrom temporalio.exceptions import ActivityError, ApplicationError\nfrom uuid_extensions import uuid7\n\n# Import necessary modules and types\nwith workflow.unsafe.imports_passed_through():\n    from asyncio.exceptions import CancelledError as AsyncioCancelledError\n\n    from pydantic import RootModel\n    from temporalio.exceptions import CancelledError\n\n    from ...activities import task_steps\n    from ...activities.execute_api_call import execute_api_call\n    from ...activities.execute_integration import execute_integration\n    from ...activities.execute_system import execute_system\n    from ...activities.sync_items_remote import load_inputs_remote as load_inputs_remote\n    from ...activities.sync_items_remote import save_inputs_remote\n    from ...activities.task_steps.tool_call_step import (\n        construct_tool_call,\n        generate_call_id,\n    )\n    from ...autogen.openapi_model import (\n        ApiCallDef,\n        BaseIntegrationDef,\n        ErrorWorkflowStep,\n        EvaluateStep,\n        ForeachDo,\n        ForeachStep,\n        GetStep,\n        IfElseWorkflowStep,\n        LogStep,\n        MapReduceStep,\n        ParallelStep,\n        PromptStep,\n        ReturnStep,\n        SetStep,\n        SleepStep,\n        SwitchStep,\n        SystemDef,\n        Tool,\n        ToolCallStep,\n        TransitionTarget,\n        WaitForInputInfo,\n        WaitForInputStep,\n        WorkflowStep,\n        YieldStep,\n    )\n    from ...common.protocol.tasks import (\n        ExecutionInput,\n        PartialTransition,\n        StepContext,\n        StepOutcome,\n        WorkflowResult,\n    )\n    from ...common.retry_policies import DEFAULT_RETRY_POLICY\n    from ...common.utils.feature_flags import get_feature_flag_value\n    from ...env import (\n        debug,\n        task_max_parallelism,\n        temporal_heartbeat_timeout,\n        temporal_schedule_to_close_timeout,\n        testing,\n    )\n    from ...exceptions import LastErrorInput\n    from .helpers import (\n        base_evaluate_activity,\n        continue_as_child,\n        execute_foreach_step,\n        execute_if_else_branch,\n        execute_map_reduce_step,\n        execute_map_reduce_step_parallel,\n        execute_switch_branch,\n    )\n    from .transition import transition\n\n# Supported steps\n# ---------------\n\n# TODO: Implement the rest of the steps\n\n# WorkflowStep = (\n#     EvaluateStep  # ✅\n#     | ToolCallStep  # ✅\n#     | PromptStep  # 🟡    <--- high priority\n#     | GetStep  # ✅\n#     | SetStep  # ✅\n#     | LogStep  # ✅\n#     | ReturnStep  # ✅\n#     | SleepStep  # ✅\n#     | ErrorWorkflowStep  # ✅\n#     | YieldStep  # ✅\n#     | WaitForInputStep  # ✅\n#     | IfElseWorkflowStep  # ✅\n#     | SwitchStep  # ✅\n#     | ForeachStep  # ✅\n#     | ParallelStep  # ❌\n#     | MapReduceStep  # ✅\n# )\n\n# Mapping of step types to their corresponding activities\nSTEP_TO_ACTIVITY = {\n    PromptStep: task_steps.prompt_step,\n}\n\n\nGenericStep = RootModel[WorkflowStep]\n\n\n# TODO: find a way to transition to error if workflow or activity times out.\n\n# TODO: Implement reasonable timeouts for steps, activities and workflows\n# SCRUM-13\n\n# TODO: The timeouts should be configurable per task\n\n\n# TODO: Review the current user state storage method\n#       Probably can be implemented much more efficiently\n\n\n# Main workflow definition\n@workflow.defn(sandboxed=False)\nclass TaskExecutionWorkflow:\n    last_error: BaseException | None = None\n    context: StepContext | None = None\n    outcome: StepOutcome | None = None\n\n    def __init__(self) -> None:\n        self.last_error = None\n\n    @workflow.signal\n    async def set_last_error(self, value: LastErrorInput) -> None:\n        self.last_error = value.last_error\n\n    async def eval_step_exprs(self, step_type: WorkflowStep):\n        expr, output, transition_to = None, None, None\n\n        match step_type:\n            case ForeachStep(foreach=ForeachDo(in_=in_)):\n                expr = in_\n            case IfElseWorkflowStep(if_=if_):\n                expr = if_\n            case ReturnStep(return_=return_):\n                expr = return_\n            case WaitForInputStep(wait_for_input=WaitForInputInfo(info=info)):\n                expr = info\n            case EvaluateStep(evaluate=evaluate):\n                expr = evaluate\n            case MapReduceStep(over=over):\n                expr = over\n            case SetStep(set=set):\n                expr = set\n            case LogStep(log=log):\n                expr = log\n            case SwitchStep(switch=switch):\n                output: int = -1\n                cases: list[str] = [c.case for c in switch]\n                for i, case in enumerate(cases):\n                    result = await base_evaluate_activity(case, self.context)\n\n                    if result:\n                        output = i\n                        break\n            case ToolCallStep(arguments=arguments):\n                tools: list[Tool] = await self.context.tools()\n                tool_name = self.context.current_step.tool\n\n                tool = next((t for t in tools if t.name == tool_name), None)\n\n                if tool is None:\n                    msg = f\"Tool {tool_name} not found in the toolset\"\n                    raise ApplicationError(msg)\n\n                arguments = await base_evaluate_activity(arguments, self.context)\n\n                call_id = generate_call_id()\n                output = construct_tool_call(tool, arguments, call_id)\n            case YieldStep(arguments=arguments, workflow=workflow):\n                assert isinstance(self.context.current_step, YieldStep)\n\n                all_workflows = self.context.execution_input.task.workflows\n\n                assert workflow in [wf.name for wf in all_workflows], (\n                    f\"Workflow {workflow} not found in task\"\n                )\n\n                # Evaluate the expressions in the arguments\n                output = await base_evaluate_activity(arguments, self.context)\n\n                # Transition to the first step of that workflow\n                transition_target = TransitionTarget(\n                    workflow=workflow,\n                    step=0,\n                    scope_id=uuid7(),\n                )\n                transition_to = (\"step\", transition_target)\n\n        if expr is not None:\n            output = await base_evaluate_activity(expr, self.context)\n\n        return StepOutcome(output=output, transition_to=transition_to)\n\n    async def _handle_LogStep(\n        self,\n        step: LogStep,\n    ):\n        workflow.logger.info(f\"Log step: {step.log}\")\n        if self.outcome is None or self.context is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        # Set the output to the current input\n        # Add the logged message to metadata\n        partial_transition = PartialTransition(\n            output=self.context.current_input,\n            metadata={\n                \"step_type\": type(self.context.current_step).__name__,\n                \"log\": step.log,\n            },\n        )\n\n        return WorkflowResult(state=partial_transition)\n\n    async def _handle_ReturnStep(\n        self,\n        step: ReturnStep,\n    ):\n        if self.outcome is None or self.context is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        output = self.outcome.output\n        workflow.logger.info(\"Return step: Finishing workflow with output\")\n        workflow.logger.debug(f\"Return step: {output}\")\n        return WorkflowResult(\n            state=PartialTransition(output=output),\n            returned=True,\n        )\n\n    async def _handle_SwitchStep(\n        self,\n        step: SwitchStep,\n    ):\n        if self.outcome is None or self.context is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        index = self.outcome.output\n        if index >= 0:\n            result = await execute_switch_branch(\n                context=self.context,\n                execution_input=self.context.execution_input,\n                switch=step.switch,\n                index=index,\n                current_input=self.context.current_input,\n            )\n            return WorkflowResult(state=result.state, returned=result.returned)\n        if index < 0:\n            workflow.logger.error(\"Switch step: Invalid negative index\")\n            msg = \"Negative indices not allowed\"\n            raise ApplicationError(msg)\n        return WorkflowResult(state=PartialTransition(output=None))\n\n    async def _handle_IfElseWorkflowStep(\n        self,\n        step: IfElseWorkflowStep,\n    ):\n        if self.outcome is None or self.context is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        result = await execute_if_else_branch(\n            context=self.context,\n            execution_input=self.context.execution_input,\n            then_branch=step.then,\n            else_branch=step.else_,\n            condition=self.outcome.output,\n            current_input=self.context.current_input,\n        )\n\n        return WorkflowResult(state=result.state, returned=result.returned)\n\n    async def _handle_ForeachStep(\n        self,\n        step: ForeachStep,\n    ):\n        if self.outcome is None or self.context is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        result = await execute_foreach_step(\n            context=self.context,\n            execution_input=self.context.execution_input,\n            do_step=step.foreach.do,\n            items=self.outcome.output,\n            current_input=self.context.current_input,\n        )\n        return WorkflowResult(state=result.state, returned=result.returned)\n\n    async def _handle_MapReduceStep(\n        self,\n        step: MapReduceStep,\n    ):\n        if self.outcome is None or self.context is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        parallelism = step.parallelism\n        if parallelism is None:\n            parallelism = task_max_parallelism\n        if parallelism == 1:\n            result = await execute_map_reduce_step(\n                context=self.context,\n                execution_input=self.context.execution_input,\n                map_defn=step.map,\n                items=self.outcome.output,\n                reduce=step.reduce,\n                initial=step.initial,\n                current_input=self.context.current_input,\n            )\n        else:\n            result = await execute_map_reduce_step_parallel(\n                context=self.context,\n                execution_input=self.context.execution_input,\n                map_defn=step.map,\n                items=self.outcome.output,\n                current_input=self.context.current_input,\n                initial=step.initial,\n                reduce=step.reduce,\n                parallelism=parallelism,\n            )\n\n        return WorkflowResult(state=result.state, returned=result.returned)\n\n    async def _handle_SleepStep(\n        self,\n        step: SleepStep,\n    ):\n        sleep = step.sleep\n        total_seconds = (\n            sleep.seconds\n            + sleep.minutes * 60\n            + sleep.hours * 60 * 60\n            + sleep.days * 24 * 60 * 60\n        )\n        workflow.logger.info(f\"Sleep step: Sleeping for {total_seconds} seconds\")\n        assert total_seconds > 0, \"Sleep duration must be greater than 0\"\n\n        result = None\n        if self.context is not None:\n            result = await asyncio.sleep(total_seconds, result=self.context.current_input)\n\n        return WorkflowResult(state=PartialTransition(output=result))\n\n    async def _handle_EvaluateStep(\n        self,\n        step: EvaluateStep,\n    ):\n        if self.outcome is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        output = self.outcome.output\n        workflow.logger.debug(f\"Evaluate step: Completed evaluation with output: {output}\")\n        return WorkflowResult(state=PartialTransition(output=output))\n\n    async def _handle_ErrorWorkflowStep(\n        self,\n        step: ErrorWorkflowStep,\n    ):\n        error = step.error\n        workflow.logger.error(f\"Error step: {error}\")\n\n        state = PartialTransition(type=\"error\", output=error)\n        await transition(\n            self.context,\n            state,\n            last_error=self.last_error,\n        )\n\n        msg = f\"Error raised by ErrorWorkflowStep: {error}\"\n        raise ApplicationError(msg)\n\n    async def _handle_YieldStep(\n        self,\n        step: YieldStep,\n    ):\n        if self.outcome is None or self.context is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        output = self.outcome.output\n        if self.outcome.transition_to is None:\n            msg = \"Transition must not be None\"\n            raise ApplicationError(msg)\n\n        yield_transition_type, yield_next_target = self.outcome.transition_to\n        workflow.logger.info(f\"Yield step: Transitioning to {yield_transition_type}\")\n\n        if self.context is None:\n            msg = \"Context must not be None\"\n            raise ApplicationError(msg)\n\n        await transition(\n            self.context,\n            output=output,\n            type=yield_transition_type,\n            next=yield_next_target,\n            last_error=self.last_error,\n        )\n\n        result = await continue_as_child(\n            self.context.execution_input,\n            start=yield_next_target,\n            current_input=output,\n        )\n\n        return WorkflowResult(state=result.state, returned=False)\n\n    async def _handle_WaitForInputStep(\n        self,\n        step: WaitForInputStep,\n    ):\n        workflow.logger.info(\"Wait for input step: Waiting for external input\")\n        if self.outcome is None:\n            return WorkflowResult(state=PartialTransition(type=\"resume\", output=None))\n\n        result = await workflow.execute_activity(\n            task_steps.raise_complete_async,\n            args=[self.context, self.outcome.output],\n            schedule_to_close_timeout=timedelta(days=31),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n\n        return WorkflowResult(state=PartialTransition(type=\"resume\", output=result))\n\n    async def _handle_PromptStep(\n        self,\n        step: PromptStep,\n    ):\n        if self.outcome is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        messages = self.outcome.output\n\n        try:\n            if self.context is not None and get_feature_flag_value(\n                \"auto_tool_calls_prompt_step\",\n                developer_id=str(self.context.execution_input.developer_id),\n            ):\n                if step.unwrap or not step.auto_run_tools or messages[-1][\"tool_calls\"] is None:\n                    workflow.logger.debug(f\"Prompt step: Received response: {messages}\")\n                    return WorkflowResult(state=PartialTransition(output=messages))\n\n                # TODO: make sure to include filtered function tool calls in the last message, or filter them from 2nd message\n                tool_calls_input = messages[-1][\"tool_calls\"]\n            else:\n                message = messages\n                if (\n                    step.unwrap\n                    or not step.auto_run_tools\n                    or message[\"choices\"][0][\"finish_reason\"] != \"tool_calls\"\n                ):\n                    workflow.logger.debug(f\"Prompt step: Received response: {message}\")\n                    return WorkflowResult(state=PartialTransition(output=message))\n\n                choice = message[\"choices\"][0]\n                tool_calls_input = choice[\"message\"][\"tool_calls\"]\n        except (KeyError, IndexError, TypeError) as e:\n            workflow.logger.error(f\"Prompt step: Error parsing response structure: {e}\")\n            msg = f\"Invalid response structure in prompt step: {e}\"\n            raise ApplicationError(msg) from e\n        except Exception as e:\n            workflow.logger.error(f\"Prompt step: Unexpected error: {e}\")\n            msg = f\"Unexpected error in prompt step: {e}\"\n            raise ApplicationError(msg) from e\n\n        input_type = tool_calls_input[0][\"type\"]\n\n        # TODO: What if the model requested multiple function tool calls?\n        if input_type == \"function\":\n            workflow.logger.debug(\"Prompt step: Received FUNCTION tool call\")\n\n            # Enter a wait-for-input step to ask the developer to run the tool calls\n            tool_calls_results = await workflow.execute_activity(\n                task_steps.raise_complete_async,\n                args=[self.context, tool_calls_input],\n                schedule_to_close_timeout=timedelta(days=31),\n                retry_policy=DEFAULT_RETRY_POLICY,\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            )\n\n            # Feed the tool call results back to the model\n            if self.context is not None:\n                self.context.current_step.prompt.append(messages)\n                self.context.current_step.prompt.append(tool_calls_results)\n            new_response = await workflow.execute_activity(\n                task_steps.prompt_step,\n                self.context,\n                schedule_to_close_timeout=timedelta(\n                    seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n                ),\n                retry_policy=DEFAULT_RETRY_POLICY,\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            )\n            return WorkflowResult(\n                state=PartialTransition(output=new_response.output, type=\"resume\"),\n            )\n        if input_type == \"integrations\":\n            workflow.logger.debug(\"Prompt step: Received INTEGRATION tool call\")\n            # FIXME: Implement integration tool calls\n            # See: MANUAL TOOL CALL INTEGRATION (below)\n            msg = \"Integration tool calls not yet supported\"\n            raise NotImplementedError(msg)\n\n            # TODO: Feed the tool call results back to the model (see above)\n        if input_type == \"api_call\":\n            workflow.logger.debug(\"Prompt step: Received API_CALL tool call\")\n\n            # FIXME: Implement API_CALL tool calls\n            # See: MANUAL TOOL CALL API_CALL (below)\n            msg = \"API_CALL tool calls not yet supported\"\n            raise NotImplementedError(msg)\n\n            # TODO: Feed the tool call results back to the model (see above)\n        if input_type == \"system\":\n            workflow.logger.debug(\"Prompt step: Received SYSTEM tool call\")\n\n            # FIXME: Implement SYSTEM tool calls\n            # See: MANUAL TOOL CALL SYSTEM (below)\n            msg = \"SYSTEM tool calls not yet supported\"\n            raise NotImplementedError(msg)\n\n            # TODO: Feed the tool call results back to the model (see above)\n        workflow.logger.debug(\n            f\"Prompt step: Received unknown tool call: {tool_calls_input[0]['type']}\",\n        )\n        return WorkflowResult(state=PartialTransition(output=messages))\n\n    async def _handle_SetStep(\n        self,\n        step: SetStep,\n    ):\n        if self.outcome is None:\n            return WorkflowResult(state=PartialTransition(output=None))\n\n        output = self.outcome.output\n        workflow.logger.debug(f\"Set step: Completed evaluation with output: {output}\")\n        return WorkflowResult(state=PartialTransition(output=output))\n\n    async def _handle_GetStep(\n        self,\n        step: GetStep,\n    ):\n        key = step.get\n        workflow.logger.info(f\"Get step: Fetching '{key}' from user state\")\n        value = workflow.memo_value(key, default=None)\n        workflow.logger.debug(f\"Retrieved value: {value}\")\n\n        return WorkflowResult(state=PartialTransition(output=value))\n\n    async def _handle_ParallelStep(\n        self,\n        step: ParallelStep,\n    ):\n        # FIXME: Implement ParallelStep\n        # SCRUM-17\n        workflow.logger.error(\"ParallelStep not yet implemented\")\n        msg = \"Not implemented\"\n        raise ApplicationError(msg)\n\n    async def _handle_ToolCallStep(\n        self,\n        step: ToolCallStep,\n    ):\n        # Add null check for context\n        if self.context is None:\n            msg = \"Context is None in _handle_ToolCallStep\"\n            raise ApplicationError(msg)\n\n        tool_call = self.outcome.output if self.outcome is not None else {}\n        if tool_call[\"type\"] == \"function\":\n            tool_call_response = await workflow.execute_activity(\n                task_steps.raise_complete_async,\n                args=[self.context, tool_call],\n                schedule_to_close_timeout=timedelta(days=31),\n                retry_policy=DEFAULT_RETRY_POLICY,\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            )\n\n            return WorkflowResult(\n                state=PartialTransition(output=tool_call_response, type=\"resume\"),\n            )\n\n        if tool_call[\"type\"] == \"integration\":\n            # MANUAL TOOL CALL INTEGRATION\n            workflow.logger.debug(\"ToolCallStep: Received INTEGRATION tool call\")\n            call = tool_call[\"integration\"]\n            tool_name = call[\"name\"]\n            arguments = call[\"arguments\"]\n            tools = await self.context.tools()\n            integration_tool = next((t for t in tools if t.name == tool_name), None)\n\n            if integration_tool is None:\n                msg = f\"Integration {tool_name} not found\"\n                raise ApplicationError(msg)\n\n            provider = integration_tool.integration.provider\n            setup = (\n                integration_tool.integration.setup\n                and integration_tool.integration.setup.model_dump()\n            )\n            method = integration_tool.integration.method\n\n            integration = BaseIntegrationDef(\n                provider=provider,\n                setup=setup,\n                method=method,\n                arguments=arguments,\n            )\n\n            # AIDEV-NOTE: Extract IDs from context for new execute_integration signature\n            developer_id = self.context.execution_input.developer_id\n            agent_id = self.context.execution_input.agent.id\n            task_id = (\n                self.context.execution_input.task.id\n                if self.context.execution_input.task\n                else None\n            )\n            session_id = getattr(self.context.execution_input, \"session\", None)\n            session_id = session_id.id if session_id else None\n\n            tool_call_response = await workflow.execute_activity(\n                execute_integration,\n                args=[\n                    developer_id,\n                    agent_id,\n                    task_id,\n                    session_id,\n                    tool_name,\n                    integration,\n                    arguments,\n                ],\n                schedule_to_close_timeout=timedelta(\n                    seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n                ),\n                retry_policy=DEFAULT_RETRY_POLICY,\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            )\n\n            return WorkflowResult(state=PartialTransition(output=tool_call_response))\n\n        if tool_call[\"type\"] == \"api_call\":\n            # MANUAL TOOL CALL API_CALL\n            workflow.logger.debug(\"ToolCallStep: Received API_CALL tool call\")\n            call = tool_call[\"api_call\"]\n            tool_name = call[\"name\"]\n            arguments = call[\"arguments\"]\n            tools = await self.context.tools()\n            apicall_tool = next((t for t in tools if t.name == tool_name), None)\n\n            if apicall_tool is None:\n                msg = f\"Integration {tool_name} not found\"\n                raise ApplicationError(msg)\n\n            if apicall_tool.api_call is None:\n                msg = f\"API call data for {tool_name} not found\"\n                raise ApplicationError(msg)\n\n            api_call: ApiCallDef = cast(ApiCallDef, apicall_tool.api_call)\n\n            api_call = ApiCallDef(\n                method=api_call.method,\n                url=api_call.url,\n                headers=api_call.headers,\n                follow_redirects=api_call.follow_redirects,\n            )\n\n            if \"json_\" in arguments:\n                arguments[\"json\"] = arguments[\"json_\"]\n                del arguments[\"json_\"]\n\n            # Execute the API call using the `execute_api_call` function\n            tool_call_response = await workflow.execute_activity(\n                execute_api_call,\n                args=[\n                    api_call,\n                    arguments,\n                ],\n                schedule_to_close_timeout=timedelta(\n                    seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n                ),\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            )\n\n            return WorkflowResult(state=PartialTransition(output=tool_call_response))\n\n        if tool_call[\"type\"] == \"system\":\n            # MANUAL TOOL CALL SYSTEM\n            workflow.logger.debug(\"ToolCallStep: Received SYSTEM tool call\")\n            call = tool_call.get(\"system\")\n\n            system_call = SystemDef(**call)\n            # AIDEV-NOTE: Extract developer_id for new execute_system signature\n            developer_id = self.context.execution_input.developer_id\n            tool_call_response = await workflow.execute_activity(\n                execute_system,\n                args=[developer_id, system_call],\n                schedule_to_close_timeout=timedelta(\n                    seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n                ),\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            )\n\n            return WorkflowResult(state=PartialTransition(output=tool_call_response))\n        return None\n\n    async def handle_step(self, step: WorkflowStep) -> WorkflowResult:\n        meth = getattr(self, f\"_handle_{type(step).__name__}\", None)\n        if not meth:\n            step_name = (\n                type(self.context.current_step).__name__ if self.context is not None else None\n            )\n            workflow.logger.error(f\"Unhandled step type: {step_name}\")\n            msg = \"Not implemented\"\n            state = PartialTransition(type=\"error\", output=msg)\n            await transition(\n                self.context,\n                state,\n                last_error=self.last_error,\n            )\n\n            raise ApplicationError(msg)\n\n        return await meth(step)\n\n    # Main workflow run method\n    @workflow.run\n    async def run(\n        self,\n        execution_input: ExecutionInput,\n        start: TransitionTarget,\n        current_input: Any,\n    ) -> WorkflowResult:\n        if not execution_input.task:\n            msg = \"execution_input.task cannot be None\"\n            raise ApplicationError(msg)\n\n        workflow.logger.info(\n            f\"TaskExecutionWorkflow for task {execution_input.task.id}\"\n            f\" [LOC {start.workflow}.{start.step}]\",\n        )\n\n        # 0. Prepare context\n        context = StepContext(\n            execution_input=execution_input,\n            current_input=current_input,\n            cursor=start,\n        )\n\n        step_type = type(context.current_step)\n        continued_as_new = workflow.info().continued_run_id is not None\n\n        # 1. Transition to starting if not done yet\n        if context.is_first_step and not continued_as_new:\n            await transition(\n                context,\n                type=\"init\" if context.is_main else \"init_branch\",\n                output=context.current_input,\n                next=context.cursor,\n                metadata={},\n                last_error=self.last_error,\n            )\n\n        # 2. Execute the current step's activity if applicable\n        workflow.logger.info(\n            f\"Executing step {context.cursor.step} of type {step_type.__name__}\",\n        )\n\n        activity = STEP_TO_ACTIVITY.get(step_type)\n\n        self.context = context\n        outcome = None\n\n        try:\n            if activity:\n                outcome = await workflow.execute_activity(\n                    activity,\n                    context,\n                    #\n                    schedule_to_close_timeout=timedelta(\n                        seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n                    ),\n                    retry_policy=DEFAULT_RETRY_POLICY,\n                    heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n                )\n                workflow.logger.debug(f\"Step {context.cursor.step} completed successfully\")\n            else:\n                outcome = await self.eval_step_exprs(context.current_step)\n        except Exception as e:\n            while isinstance(e, ActivityError) and getattr(e, \"__cause__\", None):\n                e = e.__cause__\n            if isinstance(e, CancelledError):\n                workflow.logger.info(f\"Step {context.cursor.step} cancelled\")\n                if not getattr(e, \"transitioned\", False):\n                    await transition(context, type=\"cancelled\", output=\"Workflow Cancelled\")\n                raise\n            workflow.logger.error(f\"Error in step {context.cursor.step}: {e!s}\")\n            if not getattr(e, \"transitioned\", False):\n                await transition(context, type=\"error\", output=str(e))\n            err_msg = (\n                f\"Activity {activity} threw error: {e}\"\n                if activity\n                else f\"Step {context.cursor.step} threw error: {e}\"\n            )\n            raise ApplicationError(err_msg) from e\n        # ---\n\n        # 3. Then, based on the outcome and step type, decide what to do next\n        workflow.logger.info(f\"Processing outcome for step {context.cursor.step}\")\n\n        error = outcome.error\n        if error is not None:\n            workflow.logger.error(f\"Error in step {context.cursor.step}: {error}\")\n            if not getattr(error, \"transitioned\", False):\n                await transition(context, type=\"error\", output=error)\n            msg = f\"Step {type(context.current_step).__name__} threw error: {error}\"\n            raise ApplicationError(msg)\n\n        self.outcome = outcome\n        try:\n            workflow_result = await self.handle_step(\n                step=context.current_step,\n            )\n            state = workflow_result.state\n        except BaseException as e:\n            while isinstance(e, ActivityError) and getattr(e, \"__cause__\", None):\n                e = e.__cause__\n            if isinstance(e, CancelledError | AsyncioCancelledError):\n                workflow.logger.info(f\"Step {context.cursor.step} cancelled\")\n                if not getattr(e, \"transitioned\", False):\n                    await transition(context, type=\"cancelled\", output=\"Workflow Cancelled\")\n                raise\n            workflow.logger.error(f\"Error in step {context.cursor.step}: {e}\")\n            if not getattr(e, \"transitioned\", False):\n                await transition(context, type=\"error\", output=str(e))\n            msg = f\"Step {type(context.current_step).__name__} threw error: {e}\"\n            raise ApplicationError(msg) from e\n\n        if workflow_result.returned:\n            await transition(\n                self.context,\n                output=state.output,\n                type=\"finish\" if self.context.is_main else \"finish_branch\",\n                next=None,\n                last_error=self.last_error,\n            )\n            return workflow_result\n\n        # 4. Transition to the next step\n        workflow.logger.info(f\"Transitioning after step {context.cursor.step}\")\n\n        # The returned value is the transition finally created\n        state = state or PartialTransition(type=\"error\", output=\"Not implemented\")\n        if context.current_step.label:\n            state.step_label = context.current_step.label\n        final_state = await transition(\n            context,\n            state,\n            last_error=self.last_error,\n        )\n\n        # 5a. End if the last step\n        if final_state.type in (\"finish\", \"finish_branch\", \"cancelled\", \"error\"):\n            workflow.logger.info(f\"Workflow finished with state: {final_state.type}\")\n            return WorkflowResult(state=PartialTransition(output=final_state.output))\n\n        # 5b. Recurse to the next step\n        if not final_state.next:\n            msg = \"No next step\"\n            raise ApplicationError(msg)\n\n        workflow.logger.info(\n            f\"Continuing to next step: {final_state.next.workflow}.{final_state.next.step}\",\n        )\n\n        # Save the final output to the blob store\n        [final_output] = await workflow.execute_activity(\n            save_inputs_remote,\n            args=[[final_state.output]],\n            schedule_to_close_timeout=timedelta(\n                seconds=10 if debug or testing else temporal_schedule_to_close_timeout,\n            ),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n\n        # Continue as a child workflow\n        return await continue_as_child(\n            context.execution_input,\n            start=final_state.next,\n            current_input=final_output,\n            user_state=state.user_state,\n        )\n"
  },
  {
    "path": "src/agents-api/agents_api/workflows/task_execution/helpers.py",
    "content": "# AIDEV-NOTE: Helper functions for TaskExecution workflow orchestration, including validation and branch execution.\nimport asyncio\nfrom datetime import timedelta\nfrom typing import Any, TypeVar\n\nfrom temporalio import workflow\nfrom temporalio.common import SearchAttributeKey, SearchAttributePair, TypedSearchAttributes\nfrom temporalio.exceptions import ActivityError, ApplicationError, ChildWorkflowError\n\nfrom ...common.retry_policies import DEFAULT_RETRY_POLICY\n\nwith workflow.unsafe.imports_passed_through():\n    from ...activities import task_steps\n    from ...autogen.openapi_model import (\n        EvaluateStep,\n        TaskSpecDef,\n        TransitionTarget,\n        Workflow,\n        WorkflowStep,\n    )\n    from ...common.protocol.tasks import (\n        ExecutionInput,\n        PartialTransition,\n        StepContext,\n        WorkflowResult,\n    )\n    from ...common.utils.workflows import PAR_PREFIX, SEPARATOR\n    from ...env import (\n        task_max_parallelism,\n        temporal_heartbeat_timeout,\n        temporal_search_attribute_key,\n    )\n\nT = TypeVar(\"T\")\n\n\ndef validate_execution_input(execution_input: ExecutionInput) -> TaskSpecDef:\n    \"\"\"Validates and returns the task from execution input.\n\n    Args:\n        execution_input: The execution input to validate\n\n    Returns:\n        The validated task\n\n    Raises:\n        ApplicationError: If task is None\n    \"\"\"\n    if execution_input.task is None:\n        msg = \"Execution input task cannot be None\"\n        raise ApplicationError(msg)\n    return execution_input.task\n\n\nasync def base_evaluate_activity(\n    expr: str,\n    context: StepContext | None = None,\n    values: dict[str, Any] | None = None,\n) -> Any:\n    try:\n        return await workflow.execute_activity(\n            task_steps.base_evaluate,\n            args=[expr, context, values],\n            schedule_to_close_timeout=timedelta(seconds=300),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n    except ActivityError as e:\n        # Unwrap nested ActivityError causes\n        while isinstance(e, ActivityError) and getattr(e, \"__cause__\", None):\n            e = e.__cause__  # type: ignore[assignment]  # AIDEV-NOTE: e.__cause__ is BaseException|None\n        # AIDEV-NOTE: assert e is BaseException for raising\n        assert isinstance(e, BaseException)\n        raise e\n\n\nasync def continue_as_child(\n    execution_input: ExecutionInput,\n    start: TransitionTarget,\n    current_input: Any,\n    user_state: dict[str, Any] = {},\n) -> Any:\n    info = workflow.info()\n\n    # FIXME: This doesn't actually work\n    if info.is_continue_as_new_suggested():\n        run = workflow.continue_as_new\n    else:\n        run = lambda *args, **kwargs: workflow.execute_child_workflow(  # noqa: E731\n            info.workflow_type,\n            *args,\n            **kwargs,\n        )\n\n    if execution_input.execution is None:\n        msg = \"Execution input execution cannot be None\"\n        raise ApplicationError(msg)\n\n    execution_id = execution_input.execution.id\n    execution_id_key = SearchAttributeKey.for_keyword(temporal_search_attribute_key)\n\n    try:\n        return await run(\n            args=[\n                execution_input,\n                start,\n                current_input,\n            ],\n            retry_policy=DEFAULT_RETRY_POLICY,\n            memo=workflow.memo() | user_state,\n            search_attributes=TypedSearchAttributes([\n                SearchAttributePair(execution_id_key, str(execution_id)),\n            ]),\n        )\n    except Exception as e:\n        # Unwrap nested ChildWorkflowError causes\n        while isinstance(e, ChildWorkflowError) and getattr(e, \"__cause__\", None):\n            e = e.__cause__  # type: ignore[assignment]  # AIDEV-NOTE: e.__cause__ is BaseException|None\n        # AIDEV-NOTE: assert e is BaseException for raising\n        assert isinstance(e, BaseException)\n        e.transitioned = True\n        raise e\n\n\nasync def execute_switch_branch(\n    *,\n    context: StepContext,\n    execution_input: ExecutionInput,\n    switch: list,\n    index: int,\n    current_input: Any,\n    user_state: dict[str, Any] = {},\n) -> Any:\n    task = validate_execution_input(execution_input)\n    workflow.logger.info(f\"Switch step: Chose branch {index}\")\n    chosen_branch = switch[index]\n\n    seprated_workflow_name = SEPARATOR + context.cursor.workflow + SEPARATOR\n\n    case_wf_name = f\"{seprated_workflow_name}[{context.cursor.step}].case\"\n\n    case_task = task.model_copy()\n    case_task.workflows = [\n        Workflow(name=case_wf_name, steps=[chosen_branch.then]),\n        *case_task.workflows,\n    ]\n\n    case_execution_input = execution_input.model_copy()\n    case_execution_input.task = case_task\n\n    case_next_target = TransitionTarget(\n        workflow=case_wf_name,\n        step=0,\n        scope_id=context.current_scope_id,\n    )\n\n    return await continue_as_child(\n        case_execution_input,\n        case_next_target,\n        current_input,\n        user_state=user_state,\n    )\n\n\nasync def execute_if_else_branch(\n    *,\n    context: StepContext,\n    execution_input: ExecutionInput,\n    then_branch: WorkflowStep,\n    else_branch: WorkflowStep | None,\n    condition: bool,\n    current_input: Any,\n    user_state: dict[str, Any] = {},\n) -> Any:\n    task = validate_execution_input(execution_input)\n    workflow.logger.info(f\"If-Else step: Condition evaluated to {condition}\")\n    chosen_branch = then_branch if condition else else_branch\n\n    if chosen_branch is None:\n        chosen_branch = EvaluateStep(evaluate={\"output\": \"_\"})\n\n    separated_workflow_name = SEPARATOR + context.cursor.workflow + SEPARATOR\n\n    if_else_wf_name = f\"{separated_workflow_name}[{context.cursor.step}].if_else\"\n    if_else_wf_name += \".then\" if condition else \".else\"\n\n    if_else_task = task.model_copy()\n    if_else_task.workflows = [\n        Workflow(name=if_else_wf_name, steps=[chosen_branch]),\n        *if_else_task.workflows,\n    ]\n\n    if_else_execution_input = execution_input.model_copy()\n    if_else_execution_input.task = if_else_task\n\n    if_else_next_target = TransitionTarget(\n        workflow=if_else_wf_name,\n        step=0,\n        scope_id=context.current_scope_id,\n    )\n\n    return await continue_as_child(\n        if_else_execution_input,\n        if_else_next_target,\n        current_input,\n        user_state=user_state,\n    )\n\n\nasync def execute_foreach_step(\n    *,\n    context: StepContext,\n    execution_input: ExecutionInput,\n    do_step: WorkflowStep,\n    items: list[Any],\n    current_input: Any,\n    user_state: dict[str, Any] = {},\n) -> Any:\n    task = validate_execution_input(execution_input)\n    workflow.logger.info(f\"Foreach step: Iterating over {len(items)} items\")\n    results = []\n\n    for i, item in enumerate(items):\n        separated_workflow_name = SEPARATOR + context.cursor.workflow + SEPARATOR\n\n        foreach_wf_name = f\"{separated_workflow_name}[{context.cursor.step}].foreach[{i}]\"\n        foreach_task = task.model_copy()\n        foreach_task.workflows = [\n            Workflow(name=foreach_wf_name, steps=[do_step]),\n            *foreach_task.workflows,\n        ]\n\n        foreach_execution_input = execution_input.model_copy()\n        foreach_execution_input.task = foreach_task\n        foreach_next_target = TransitionTarget(\n            workflow=foreach_wf_name,\n            step=0,\n            scope_id=context.current_scope_id,\n        )\n\n        result = await continue_as_child(\n            foreach_execution_input,\n            foreach_next_target,\n            item,\n            user_state=user_state,\n        )\n\n        if result.returned:\n            return result\n\n        results.append(result.state.output)\n\n    return WorkflowResult(state=PartialTransition(output=results))\n\n\nasync def execute_map_reduce_step(\n    *,\n    context: StepContext,\n    execution_input: ExecutionInput,\n    map_defn: WorkflowStep,\n    items: list[Any],\n    current_input: Any,\n    user_state: dict[str, Any] = {},\n    reduce: str | None = None,\n    initial: Any = [],\n) -> Any:\n    task = validate_execution_input(execution_input)\n    workflow.logger.info(f\"MapReduce step: Processing {len(items)} items\")\n    result = initial\n    reduce = \"$ results + [_]\" if reduce is None else reduce\n\n    for i, item in enumerate(items):\n        separated_workflow_name = SEPARATOR + context.cursor.workflow + SEPARATOR\n\n        workflow_name = f\"{separated_workflow_name}[{context.cursor.step}].mapreduce[{i}]\"\n        map_reduce_task = task.model_copy()\n        map_reduce_task.workflows = [\n            Workflow(name=workflow_name, steps=[map_defn]),\n            *map_reduce_task.workflows,\n        ]\n\n        map_reduce_execution_input = execution_input.model_copy()\n        map_reduce_execution_input.task = map_reduce_task\n        # NOTE: Step needs to be refactored to support multiple steps\n        map_reduce_next_target = TransitionTarget(\n            workflow=workflow_name,\n            step=0,\n            scope_id=context.current_scope_id,\n        )\n\n        workflow_result = await continue_as_child(\n            map_reduce_execution_input,\n            map_reduce_next_target,\n            item,\n            user_state=user_state,\n        )\n\n        if workflow_result.returned:\n            return workflow_result\n\n        result = await workflow.execute_activity(\n            task_steps.base_evaluate,\n            args=[reduce, None, {\"results\": result, \"_\": workflow_result.state.output}],\n            schedule_to_close_timeout=timedelta(seconds=30),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n\n    return WorkflowResult(state=PartialTransition(output=result))\n\n\nasync def execute_map_reduce_step_parallel(\n    *,\n    context: StepContext,\n    execution_input: ExecutionInput,\n    map_defn: WorkflowStep,\n    items: list[Any],\n    current_input: Any,\n    user_state: dict[str, Any] = {},\n    initial: Any = [],\n    reduce: str | None = None,\n    parallelism: int = task_max_parallelism,\n) -> Any:\n    task = validate_execution_input(execution_input)\n    workflow.logger.info(f\"MapReduce step: Processing {len(items)} items\")\n    results = initial\n\n    # Ensure parallelism is at least 1 and not greater than max\n    parallelism = max(1, min(parallelism, task_max_parallelism))\n\n    # If parallelism is 1, we're effectively running sequentially\n    if parallelism == 1:\n        workflow.logger.warning(\"Parallelism is set to 1, falling back to sequential execution\")\n        # Fall back to sequential map-reduce\n        # Note: 'workflow' parameter is missing here, but it's not needed because\n        # 'workflow' is imported at the top of the file (`from temporalio import workflow`)\n        # and used directly as a module, not as a parameter\n        return await execute_map_reduce_step(\n            context=context,\n            execution_input=execution_input,\n            map_defn=map_defn,\n            items=items,\n            current_input=current_input,\n            user_state=user_state,\n            initial=initial,\n            reduce=reduce,\n        )\n\n    # Modify reduce expression to use reduce function (since we are passing a list)\n    reduce = \"results + [_]\" if reduce is None else reduce\n    reduce = reduce.replace(\"_\", \"_item\").replace(\"results\", \"_result\")\n\n    # Explanation:\n    # - reduce is the reduce expression\n    # - reducer_lambda is the lambda function that will be used to reduce the results\n    extra_lambda_strs = {\"reducer_lambda\": f\"lambda _result, _item: ({reduce})\"}\n\n    reduce = \"$ reduce(reducer_lambda, _, results)\"\n\n    # First create batches of items to run in parallel\n    batches = [items[i : i + parallelism] for i in range(0, len(items), parallelism)]\n\n    for i, batch in enumerate(batches):\n        batch_pending = []\n\n        for j, item in enumerate(batch):\n            # Parallel batch workflow name\n            # Note: Added PAR: prefix to easily identify parallel batches in logs\n            separated_workflow_name = SEPARATOR + context.cursor.workflow + SEPARATOR\n\n            workflow_name = f\"{PAR_PREFIX}{separated_workflow_name}[{context.cursor.step}].mapreduce[{i}][{j}]\"\n            map_reduce_task = task.model_copy()\n            map_reduce_task.workflows = [\n                Workflow(name=workflow_name, steps=[map_defn]),\n                *map_reduce_task.workflows,\n            ]\n\n            map_reduce_execution_input = execution_input.model_copy()\n            map_reduce_execution_input.task = map_reduce_task\n            map_reduce_next_target = TransitionTarget(\n                workflow=workflow_name,\n                step=0,\n                scope_id=context.current_scope_id,\n            )\n\n            batch_pending.append(\n                asyncio.create_task(\n                    continue_as_child(\n                        map_reduce_execution_input,\n                        map_reduce_next_target,\n                        item,\n                        user_state=user_state,\n                    ),\n                ),\n            )\n\n        # Wait for all the batch items to complete\n        try:\n            batch_results = await asyncio.gather(*batch_pending)\n\n            # Process batch results in a single pass\n            returned_result = None\n            batch_outputs = []\n\n            for batch_result in batch_results:\n                if batch_result.returned:\n                    returned_result = batch_result\n                    break\n                batch_outputs.append(batch_result.state.output)\n\n            if returned_result:\n                return returned_result\n\n            batch_results = batch_outputs\n\n            # Reduce the results of the batch\n            results = await workflow.execute_activity(\n                task_steps.base_evaluate,\n                args=[\n                    reduce,\n                    None,\n                    {\"results\": results, \"_\": batch_results},\n                    extra_lambda_strs,\n                ],\n                schedule_to_close_timeout=timedelta(seconds=30),\n                retry_policy=DEFAULT_RETRY_POLICY,\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            )\n\n        except BaseException as e:\n            workflow.logger.error(f\"Error in batch {i}: {e}\")\n            msg = f\"Error in batch {i}: {e}\"\n            raise ApplicationError(msg) from e\n\n    return WorkflowResult(state=PartialTransition(output=results))\n"
  },
  {
    "path": "src/agents-api/agents_api/workflows/task_execution/transition.py",
    "content": "from datetime import timedelta\n\nfrom temporalio import workflow\nfrom temporalio.exceptions import ActivityError, ApplicationError\n\nwith workflow.unsafe.imports_passed_through():\n    from ...activities import task_steps\n    from ...autogen.openapi_model import (\n        CreateTransitionRequest,\n        TransitionTarget,\n    )\n    from ...common.protocol.tasks import PartialTransition, StepContext\n    from ...common.retry_policies import DEFAULT_RETRY_POLICY\n    from ...env import (\n        debug,\n        temporal_heartbeat_timeout,\n        temporal_schedule_to_close_timeout,\n        testing,\n    )\n\n\nasync def transition(\n    context: StepContext,\n    state: PartialTransition | None = None,\n    **kwargs,\n) -> CreateTransitionRequest:\n    if state is None:\n        state = PartialTransition()\n\n    match context.is_last_step, context.cursor:\n        case (True, TransitionTarget(workflow=\"main\")):\n            state.type = \"finish\"\n        case (True, _):\n            state.type = \"finish_branch\"\n        case _, _:\n            state.type = \"step\"\n\n    transition_request = CreateTransitionRequest(\n        current=context.cursor,\n        **{\n            \"next\": None\n            if context.is_last_step\n            else TransitionTarget(\n                workflow=context.cursor.workflow,\n                step=context.cursor.step + 1,\n                scope_id=context.current_scope_id,\n            ),\n            \"metadata\": {\"step_type\": type(context.current_step).__name__},\n            \"output\": state.output,\n            **state.model_dump(exclude_unset=True, exclude={\"output\"}),\n            **kwargs,  # Override with any additional kwargs\n        },\n    )\n\n    try:\n        await workflow.execute_activity(\n            task_steps.transition_step,\n            args=[context, transition_request],\n            schedule_to_close_timeout=timedelta(\n                seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n            ),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n        return transition_request\n\n    except Exception as e:\n        while isinstance(e, ActivityError) and getattr(e, \"__cause__\", None):\n            e = e.__cause__\n        workflow.logger.error(f\"Error in transition: {e!s}\")\n        msg = f\"Error in transition: {e}\"\n        raise ApplicationError(msg) from e\n"
  },
  {
    "path": "src/agents-api/docker-compose-api.yml",
    "content": "name: julep-agents-api\n\n# Shared environment variables\nx--shared-environment: &shared-environment\n  AGENTS_API_KEY: ${AGENTS_API_KEY}\n  AGENTS_API_KEY_HEADER_NAME: \"Authorization\"\n  AGENTS_API_URL: ${AGENTS_API_URL:-http://agents-api:8080}\n  ENABLE_RESPONSES: \"True\"\n  PG_DSN: ${PG_DSN:-postgres://postgres:postgres@memory-store:5432/postgres}\n  EMBEDDING_MODEL_ID: ${EMBEDDING_MODEL_ID:-openai/text-embedding-3-large}\n  INTEGRATION_SERVICE_URL: ${INTEGRATION_SERVICE_URL:-http://integrations:8000}\n  TRUNCATE_EMBED_TEXT: ${TRUNCATE_EMBED_TEXT:-True}\n  SAPLING_API_KEY: ${SAPLING_API_KEY}\n  ZEROGPT_URL: ${ZEROGPT_URL:-https://api.zerogpt.com/api/detect/detectText}\n  DESKLIB_URL: ${DESKLIB_URL:-http://35.243.190.233/detect}\n  SAPLING_URL: ${SAPLING_URL:-https://api.sapling.ai/api/v1/aidetect}\n  ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}\n  GEMINI_API_KEY: ${GEMINI_API_KEY}\n  OPENAI_API_KEY: ${OPENAI_API_KEY}\n  OPENROUTER_API_KEY: ${OPENROUTER_API_KEY}\n  GROQ_API_KEY: ${GROQ_API_KEY}\n  VOYAGE_API_KEY: ${VOYAGE_API_KEY}\n  CEREBRAS_API_KEY: ${CEREBRAS_API_KEY}\n  CLOUDFLARE_API_KEY: ${CLOUDFLARE_API_KEY}\n  CLOUDFLARE_ACCOUNT_ID: ${CLOUDFLARE_ACCOUNT_ID}\n  NVIDIA_NIM_API_KEY: ${NVIDIA_NIM_API_KEY}\n  GITHUB_API_KEY: ${GITHUB_API_KEY}\n  GOOGLE_APPLICATION_CREDENTIALS: ${GOOGLE_APPLICATION_CREDENTIALS}\n\nx--base-agents-api: &base-agents-api\n  image: julepai/agents-api:${TAG:-dev}\n  environment:\n    <<: *shared-environment\n  build:\n    platforms:\n      - linux/amd64\n    context: .\n    dockerfile: Dockerfile\n\n  restart: on-failure\n\n  ports:\n    - \"8080:8080\"\n\n  develop:\n    watch:\n      - action: sync+restart\n        path: ./agents_api\n        target: /app/agents_api\n        ignore:\n          - ./**/*.pyc\n      - action: sync+restart\n        path: ./gunicorn_conf.py\n        target: /app/gunicorn_conf.py\n        ignore:\n          - ./gunicorn_conf.pyc\n      - action: rebuild\n        path: uv.lock\n      - action: rebuild\n        path: Dockerfile\n\n\nservices:\n  agents-api:\n    <<: *base-agents-api\n    profiles:\n      - ''  # Acts as a default profile. See: https://stackoverflow.com/questions/75758174/how-to-make-profile-default-for-docker-compose\n      - single-tenant"
  },
  {
    "path": "src/agents-api/docker-compose.yml",
    "content": "name: julep-agents-api\n\n# Shared environment variables\nx--shared-environment: &shared-environment\n  AGENTS_API_KEY: ${AGENTS_API_KEY}\n  AGENTS_API_KEY_HEADER_NAME: ${AGENTS_API_KEY_HEADER_NAME:-Authorization}\n  AGENTS_API_HOSTNAME: ${AGENTS_API_HOSTNAME:-localhost}\n  AGENTS_API_PUBLIC_PORT: ${AGENTS_API_PUBLIC_PORT:-80}\n  AGENTS_API_PROTOCOL: ${AGENTS_API_PROTOCOL:-http}\n  AGENTS_API_URL: ${AGENTS_API_URL:-http://agents-api:8080}\n  ENABLE_RESPONSES: ${ENABLE_RESPONSES:-false}\n  PG_DSN: ${PG_DSN:-postgres://postgres:postgres@memory-store:5432/postgres}\n  DEBUG: ${AGENTS_API_DEBUG:-False}\n  EMBEDDING_MODEL_ID: ${EMBEDDING_MODEL_ID:-openai/text-embedding-3-large}\n  INTEGRATION_SERVICE_URL: ${INTEGRATION_SERVICE_URL:-http://integrations:8000}\n  LITELLM_MASTER_KEY: ${LITELLM_MASTER_KEY}\n  LITELLM_URL: ${LITELLM_URL:-http://litellm:4000}\n  SUMMARIZATION_MODEL_NAME: ${SUMMARIZATION_MODEL_NAME:-gpt-4-turbo}\n  TEMPORAL_ENDPOINT: ${TEMPORAL_ENDPOINT:-temporal:7233}\n  TEMPORAL_NAMESPACE: ${TEMPORAL_NAMESPACE:-default}\n  TEMPORAL_TASK_QUEUE: ${TEMPORAL_TASK_QUEUE:-julep-task-queue}\n  TEMPORAL_WORKER_URL: ${TEMPORAL_WORKER_URL:-temporal:7233}\n  TEMPORAL_API_KEY: ${TEMPORAL_API_KEY:-}\n  TEMPORAL_SCHEDULE_TO_CLOSE_TIMEOUT: ${TEMPORAL_SCHEDULE_TO_CLOSE_TIMEOUT:-3600}\n  TEMPORAL_METRICS_BIND_HOST: ${TEMPORAL_METRICS_BIND_HOST:-0.0.0.0}\n  TEMPORAL_METRICS_BIND_PORT: ${TEMPORAL_METRICS_BIND_PORT:-14000}\n  TEMPORAL_HEARTBEAT_TIMEOUT: ${TEMPORAL_HEARTBEAT_TIMEOUT:-900}\n  TEMPORAL_ACTIVITY_AFTER_RETRY_TIMEOUT: ${TEMPORAL_ACTIVITY_AFTER_RETRY_TIMEOUT:-30}\n  TEMPORAL_MAX_CONCURRENT_WORKFLOW_TASKS: ${TEMPORAL_MAX_CONCURRENT_WORKFLOW_TASKS}\n  TEMPORAL_MAX_CONCURRENT_ACTIVITIES: ${TEMPORAL_MAX_CONCURRENT_ACTIVITIES:-100}\n  TEMPORAL_MAX_ACTIVITIES_PER_SECOND: ${TEMPORAL_MAX_ACTIVITIES_PER_SECOND}\n  TEMPORAL_MAX_TASK_QUEUE_ACTIVITIES_PER_SECOND: ${TEMPORAL_MAX_TASK_QUEUE_ACTIVITIES_PER_SECOND}\n  TEMPORAL_SEARCH_ATTRIBUTE_KEY: ${TEMPORAL_SEARCH_ATTRIBUTE_KEY:-CustomStringField}\n  AGENTS_API_TRANSITION_REQUESTS_PER_MINUTE: ${AGENTS_API_TRANSITION_REQUESTS_PER_MINUTE:-500}\n  TRUNCATE_EMBED_TEXT: ${TRUNCATE_EMBED_TEXT:-True}\n  WORKER_URL: ${WORKER_URL:-temporal:7233}\n  USE_BLOB_STORE_FOR_TEMPORAL: ${USE_BLOB_STORE_FOR_TEMPORAL:-false}\n  BLOB_STORE_CUTOFF_KB: ${BLOB_STORE_CUTOFF_KB:-128}\n  BLOB_STORE_BUCKET: ${BLOB_STORE_BUCKET:-agents-api}\n  S3_ENDPOINT: ${S3_ENDPOINT:-http://seaweedfs:8333}\n  S3_ACCESS_KEY: ${S3_ACCESS_KEY}\n  S3_SECRET_KEY: ${S3_SECRET_KEY}\n  ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY}\n  MAX_FREE_SESSIONS: ${MAX_FREE_SESSIONS:-50}\n  MAX_FREE_EXECUTIONS: ${MAX_FREE_EXECUTIONS:-50}\n  SENTRY_DSN: ${SENTRY_DSN}\n  SAPLING_API_KEY: ${SAPLING_API_KEY}\n  ZEROGPT_URL: ${ZEROGPT_URL:-https://api.zerogpt.com/api/detect/detectText}\n  DESKLIB_URL: ${DESKLIB_URL:-http://35.243.190.233/detect}\n  SAPLING_URL: ${SAPLING_URL:-https://api.sapling.ai/api/v1/aidetect}\n  BRAVE_API_KEY: ${BRAVE_API_KEY}\n  GUNICORN_CPU_DIVISOR: ${GUNICORN_CPU_DIVISOR:-4}\n  GUNICORN_WORKERS: ${GUNICORN_WORKERS}\n  SECRETS_MASTER_KEY: ${SECRETS_MASTER_KEY}\n  HASURA_URL: ${HASURA_URL:-http://hasura:8080}\n  HASURA_ADMIN_SECRET: ${HASURA_ADMIN_SECRET:-hasura_admin_secret}\n  UNLEASH_URL: ${UNLEASH_URL:-http://localhost:4242/api}\n  UNLEASH_API_TOKEN: ${UNLEASH_API_TOKEN:-default:development.unleash-insecure-api-token}\n  UNLEASH_APP_NAME: ${UNLEASH_APP_NAME:-agents-api}\n  LLAMA_MODEL_MULTIPLIER: ${LLAMA_MODEL_MULTIPLIER}\n\nx--base-agents-api: &base-agents-api\n  image: julepai/agents-api:${TAG:-dev}\n  depends_on:\n    worker:\n      condition: service_started\n  environment:\n    <<: *shared-environment\n  build:\n    platforms:\n      - linux/amd64\n    context: .\n    dockerfile: Dockerfile\n\n  restart: on-failure\n\n  ports:\n    - \"8080:8080\"\n\n  develop:\n    watch:\n      - action: sync+restart\n        path: ./agents_api\n        target: /app/agents_api\n        ignore:\n          - ./**/*.pyc\n      - action: sync+restart\n        path: ./gunicorn_conf.py\n        target: /app/gunicorn_conf.py\n        ignore:\n          - ./gunicorn_conf.pyc\n      - action: rebuild\n        path: uv.lock\n      - action: rebuild\n        path: Dockerfile\n\n  volumes:\n    - ../llm-proxy/litellm-config.yaml:/app/litellm-config.yaml:ro\n\nservices:\n  agents-api:\n    <<: *base-agents-api\n    profiles:\n      - ''  # Acts as a default profile. See: https://stackoverflow.com/questions/75758174/how-to-make-profile-default-for-docker-compose\n      - single-tenant\n\n  agents-api-multi-tenant:\n    <<: *base-agents-api\n    profiles:\n      - multi-tenant\n    environment:\n      <<: *shared-environment\n      AGENTS_API_MULTI_TENANT_MODE: true\n      AGENTS_API_PREFIX: \"/api\"\n\n  worker:\n    image: julepai/worker:${TAG:-dev}\n    environment:\n      <<: *shared-environment\n    build:\n      platforms:\n        - linux/amd64\n      context: .\n      dockerfile: Dockerfile.worker\n\n    develop:\n      watch:\n        - action: sync+restart\n          path: ./agents_api\n          target: /app/agents_api\n          ignore:\n            - ./**/*.pyc\n        - action: rebuild\n          path: uv.lock\n        - action: rebuild\n          path: Dockerfile.worker\n\n    volumes:\n      - ../llm-proxy/litellm-config.yaml:/app/litellm-config.yaml:ro\n"
  },
  {
    "path": "src/agents-api/gunicorn_conf.py",
    "content": "import os\nfrom agents_api.env import gunicorn_workers\n\ndebug = os.getenv(\"DEBUG\", \"false\").lower() == \"true\"\n\n# Gunicorn config variables\nworkers = gunicorn_workers if not debug else 1\nworker_class = \"uvicorn.workers.UvicornWorker\"\nbind = \"0.0.0.0:8080\"\nkeepalive = 120\ntimeout = 120\nerrorlog = \"-\"\naccesslog = \"-\"\n"
  },
  {
    "path": "src/agents-api/poe_tasks.toml",
    "content": "[tasks]\nformat = \"ruff format\"\nlint = \"ruff check\"\ntypecheck = \"pytype --config pytype.toml\"\nvalidate-sql = \"sqlvalidator --verbose-validate agents_api/\"\ncheck = [\n    \"lint\",\n    \"format\",\n    \"validate-sql\",\n    \"typecheck\",\n]\ncodegen_openapi = \"\"\"\ndatamodel-codegen \\\n  --input ../openapi.yaml \\\n  --input-file-type openapi \\\n  --output agents_api/autogen/ \\\n  --output-model-type pydantic_v2.BaseModel \\\n  --strict-types bool \\\n  --strict-nullable \\\n  --allow-population-by-field-name \\\n  --field-include-all-keys \\\n  --reuse-model \\\n  --snake-case-field \\\n  --enum-field-as-literal all \\\n  --field-constraints \\\n  --use-operation-id-as-name \\\n  --use-schema-description \\\n  --use-field-description \\\n  --use-annotated \\\n  --use-default \\\n  --use-unique-items-as-set \\\n  --use-subclass-enum \\\n  --use-union-operator \\\n  --use-one-literal-as-default \\\n  --use-double-quotes \\\n  --use-exact-imports \\\n  --use-standard-collections \\\n  --use-non-positive-negative-number-constrained-types \\\n  --target-python-version 3.12 \\\n  --treat-dot-as-module \\\n  --use-title-as-name \\\n  --collapse-root-models \\\n  --output-datetime-class AwareDatetime \\\n  --openapi-scopes schemas \\\n  --keep-model-order \\\n  --disable-timestamp\"\"\"\nfix_list_response = \"python -c \\\"import base64; exec(base64.b64decode('CmltcG9ydCByZQoKZGVmIGZpeF9nZW5lcmljX2NsYXNzZXMoZmlsZV9wYXRoKToKICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICdyJykgYXMgZmlsZToKICAgICAgICBjb250ZW50ID0gZmlsZS5yZWFkKCkKCiAgICAjIFJlZ3VsYXIgZXhwcmVzc2lvbiB0byBmaW5kIGluY29ycmVjdCBnZW5lcmljIGNsYXNzIGRlZmluaXRpb25zCiAgICBwYXR0ZXJuID0gcmUuY29tcGlsZShyJ2NsYXNzIChcdyspXFsoXHcrKTogQmFzZU1vZGVsXF1cKChCYXNlTW9kZWwpXCk6JykKICAgIHJlcGxhY2VtZW50ID0gcidjbGFzcyBcMShcMywgR2VuZXJpY1tcMl0pOicKCiAgICAjIFJlcGxhY2UgaW5jb3JyZWN0IGdlbmVyaWMgY2xhc3MgZGVmaW5pdGlvbnMKICAgIGZpeGVkX2NvbnRlbnQgPSByZS5zdWIocGF0dGVybiwgcmVwbGFjZW1lbnQsIGNvbnRlbnQpCgogICAgIyBXcml0ZSB0aGUgZml4ZWQgY29udGVudCBiYWNrIHRvIHRoZSBmaWxlCiAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAndycpIGFzIGZpbGU6CiAgICAgICAgZmlsZS53cml0ZShmaXhlZF9jb250ZW50KQoKZml4X2dlbmVyaWNfY2xhc3NlcygnYWdlbnRzX2FwaS9hdXRvZ2VuL29wZW5hcGlfbW9kZWwucHknKQo=').decode())\\\"\"\ncodegen = [\n    \"codegen_openapi\",\n    \"fix_list_response\",\n]\n\n[tasks.test]\nenv = { AGENTS_API_TESTING = \"true\", PYTHONPATH = \"{PYTHONPATH}:.\" }\ncmd = \"ward test --exclude .venv\"\n"
  },
  {
    "path": "src/agents-api/pyproject.toml",
    "content": "[project]\nname = \"agents-api\"\nversion = \"1.0.0\"\ndescription = \"Julep's backend API\"\nreadme = \"README.md\"\nrequires-python = \">=3.12,<3.13\"\ndependencies = [\n  \"aiobotocore>=2.21.0\",\n  \"anyio>=4.4.0\",\n  \"arrow>=1.3.0\",\n  \"async-lru>=2.0.4\",\n  \"beartype>=0.18.5\",\n  \"en-core-web-sm @ https://github.com/explosion/spacy-models/releases/download/en_core_web_sm-3.8.0/en_core_web_sm-3.8.0-py3-none-any.whl\",\n  \"environs>=10.3.0\",\n  \"fastapi>=0.115.4\",\n  \"fire>=0.5.0\",\n  \"google-re2>=1.1.20240702\",\n  \"gunicorn>=23.0.0\",\n  \"httpx>=0.27.0\",\n  \"jinja2schema>=0.1.4\",\n  \"jinja2>=3.1.4\",\n  \"jsonschema>=4.22.0\",\n  \"langchain-core>=0.3.14\",\n  \"larch-pickle~=1.4.3\",\n  \"litellm>=1.74.9\",\n  \"lz4>=4.3.3\",\n  \"msgpack>=1.1.0\",\n  \"numpy>=2.0.0,<2.1.0\",\n  \"openfeature-sdk>=0.8.1\",\n  \"pandas>=2.2.2\",\n  \"prometheus-client>=0.21.0\",\n  \"prometheus-fastapi-instrumentator>=7.0.0\",\n  \"pydantic-partial>=0.5.5\",\n  \"pydantic[email]>=2.10.2\",\n  \"python-box>=7.2.0\",\n  \"scalar-fastapi>=1.0.3\",\n  \"sentry-sdk[fastapi]>=2.13.0\",\n  \"simpleeval>=0.9.13\",\n  \"simsimd>=5.9.4\",\n  \"spacy>=3.8.2\",\n  \"sse-starlette>=2.1.3\",\n  \"temporalio[opentelemetry]>=1.8\",\n  \"tenacity>=9.0.0\",\n  \"thefuzz>=0.22.1\",\n  \"tiktoken>=0.7.0\",\n  \"UnleashClient>=5.12.0\",\n  \"uvicorn==0.29.0\",\n  \"uvloop>=0.21.0\",\n  \"xxhash>=3.5.0\",\n  \"spacy-chunks>=0.0.2\",\n  \"uuid7>=0.1.0\",\n  \"asyncpg>=0.30.0\",\n  \"unique-namer>=1.6.1\",\n  \"langcodes>=3.5.0\",\n  \"langchain-text-splitters>=0.3.2\",\n  \"deep-translator>=1.11.4\",\n  \"markdownify>=1.0.0\",\n  \"markdown2>=2.5.3\",\n  \"aiohttp>=3.11.13\",\n  \"websockets>=15.0.1\",\n  \"python-multipart>=0.0.20\",\n  \"cryptography>=45.0.6\",\n  \"backoff>=2.2.1\",\n  \"pyjwt>=2.10.1\",\n  \"sqlalchemy>=2.0.42\",\n  \"redis>=6.4.0\",\n  \"psycopg2-binary>=2.9.10\",\n  \"fastapi-sso>=0.18.0\",\n]\n\n[dependency-groups]\ndev = [\n    \"datamodel-code-generator>=0.26.3\",\n    \"ipython>=8.30.0\",\n    \"ipywidgets>=8.1.5\",\n    \"julep>=1.43.1\",\n    \"jupyterlab>=4.3.1\",\n    \"pip>=24.3.1\",\n    \"poethepoet>=0.31.1\",\n    \"pyjwt>=2.10.1\",\n    \"pyright>=1.1.391\",\n    \"pytype>=2024.10.11\",\n    \"ruff>=0.9.0\",\n    \"sqlvalidator>=0.0.20\",\n    \"testcontainers[postgres,localstack]>=4.9.0\",\n    \"ward>=0.68.0b0\",\n    \"pyanalyze>=0.13.1\",\n    \"autotyping>=24.9.0\",\n    \"psycopg[binary]>=3.2.5\", # only for use inside tests for now\n    \"ty>=0.0.0a8\",\n    \"pgai>=0.12.0\",\n]\n\n[tool.setuptools]\npy-modules = [\n    \"agents_api\",\n]\n\n[tool.ty.rules]\ninvalid-parameter-default = \"warn\"\ninvalid-argument-type = \"warn\"\nunknown-argument = \"warn\"\ninvalid-type-form = \"warn\"\nmissing-argument = \"warn\"\nunresolved-attribute = \"warn\"\ninvalid-assignment = \"warn\"\npossibly-unbound-attribute = \"warn\"\nno-matching-overload = \"warn\"\nnot-iterable = \"warn\"\nunsupported-operator = \"warn\"\n\n"
  },
  {
    "path": "src/agents-api/pytype.toml",
    "content": "# NOTE: All relative paths are relative to the location of this file.\n\n[tool.pytype]\n\n# Space-separated list of files or directories to exclude.\nexclude = [\n]\n\n# Space-separated list of files or directories to process.\ninputs = [\n    'agents_api',\n    'migrations',\n    'tests',\n]\n\n# Keep going past errors to analyze as many files as possible.\nkeep_going = true\n\n# Run N jobs in parallel. When 'auto' is used, this will be equivalent to the\n# number of CPUs on the host system.\njobs = 'auto'\n\n# All pytype output goes here.\noutput = '.pytype'\n\n# Platform (e.g., \"linux\", \"win32\") that the target code runs on.\nplatform = 'linux'\n\n# Paths to source code directories, separated by ':'.\npythonpath = '.'\n\n# Python version (major.minor) of the target code.\npython_version = '3.12'\n\n# Don't allow None to match bool. This flag is temporary and will be removed\n# once this behavior is enabled by default.\nnone_is_not_bool = true\n\n# Variables initialized as None retain their None binding. This flag is\n# temporary and will be removed once this behavior is enabled by default.\nstrict_none_binding = true\n\n# Space-separated list of error names to ignore.\ndisable = [\n    'pyi-error',\n]\n\n# --------------\n# Optional flags\n# --------------\n\n# Bind 'self' in methods with non-transparent decorators. This flag is temporary\n# and will be removed once this behavior is enabled by default.\nbind_decorated_methods = false\n\n# Enable parameter count checks for overriding methods with renamed arguments.\n# This flag is temporary and will be removed once this behavior is enabled by\n# default.\noverriding_renamed_parameter_count_checks = false\n\n# Opt-in: Do not allow Any as a return type.\nno_return_any = false\n\n# Opt-in: Require decoration with @typing.override when overriding a method or\n# nested class attribute of a parent class.\nrequire_override_decorator = false\n"
  },
  {
    "path": "src/agents-api/tests/__init__.py",
    "content": ""
  },
  {
    "path": "src/agents-api/tests/fixtures.py",
    "content": "import os\nimport random\nimport string\nfrom unittest.mock import patch\nfrom uuid import UUID\n\nfrom agents_api.autogen.openapi_model import (\n    CreateAgentRequest,\n    CreateDocRequest,\n    CreateExecutionRequest,\n    CreateFileRequest,\n    CreateProjectRequest,\n    CreateSessionRequest,\n    CreateTaskRequest,\n    CreateToolRequest,\n    CreateTransitionRequest,\n    CreateUserRequest,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.common.utils.memory import total_size\nfrom agents_api.env import api_key, api_key_header_name, multi_tenant_mode\nfrom agents_api.queries.agents.create_agent import create_agent\nfrom agents_api.queries.developers.create_developer import create_developer\nfrom agents_api.queries.developers.get_developer import get_developer\nfrom agents_api.queries.docs.create_doc import create_doc\nfrom agents_api.queries.docs.get_doc import get_doc\nfrom agents_api.queries.executions.create_execution import create_execution\nfrom agents_api.queries.executions.create_execution_transition import (\n    create_execution_transition,\n)\nfrom agents_api.queries.executions.create_temporal_lookup import create_temporal_lookup\nfrom agents_api.queries.files.create_file import create_file\nfrom agents_api.queries.projects.create_project import create_project\nfrom agents_api.queries.secrets.delete import delete_secret\nfrom agents_api.queries.secrets.list import list_secrets\nfrom agents_api.queries.sessions.create_session import create_session\nfrom agents_api.queries.tasks.create_task import create_task\nfrom agents_api.queries.tools.create_tools import create_tools\nfrom agents_api.queries.users.create_user import create_user\nfrom agents_api.web import app\nfrom aiobotocore.session import get_session\nfrom fastapi.testclient import TestClient\nfrom temporalio.client import WorkflowHandle\nfrom uuid_extensions import uuid7\nfrom ward import fixture\n\nfrom .utils import (\n    get_localstack,\n    get_pg_dsn,\n    make_vector_with_similarity,\n)\nfrom .utils import (\n    patch_embed_acompletion as patch_embed_acompletion_ctx,\n)\n\n\n@fixture(scope=\"global\")\ndef pg_dsn():\n    with get_pg_dsn() as pg_dsn:\n        os.environ[\"PG_DSN\"] = pg_dsn\n\n        try:\n            yield pg_dsn\n        finally:\n            del os.environ[\"PG_DSN\"]\n\n\n@fixture(scope=\"global\")\ndef test_developer_id():\n    if not multi_tenant_mode:\n        return UUID(int=0)\n\n    return uuid7()\n\n\n@fixture(scope=\"global\")\nasync def test_developer(dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n    return await get_developer(\n        developer_id=developer_id,\n        connection_pool=pool,\n    )\n\n\n@fixture(scope=\"test\")\nasync def test_project(dsn=pg_dsn, developer=test_developer):\n    pool = await create_db_pool(dsn=dsn)\n\n    return await create_project(\n        developer_id=developer.id,\n        data=CreateProjectRequest(\n            name=\"Test Project\",\n            metadata={\"test\": \"test\"},\n        ),\n        connection_pool=pool,\n    )\n\n\n@fixture(scope=\"test\")\ndef patch_embed_acompletion():\n    output = {\"role\": \"assistant\", \"content\": \"Hello, world!\"}\n    with patch_embed_acompletion_ctx(output) as (embed, acompletion):\n        yield embed, acompletion\n\n\n@fixture(scope=\"test\")\nasync def test_agent(dsn=pg_dsn, developer=test_developer, project=test_project):\n    pool = await create_db_pool(dsn=dsn)\n\n    return await create_agent(\n        developer_id=developer.id,\n        data=CreateAgentRequest(\n            model=\"gpt-4o-mini\",\n            name=\"test agent\",\n            about=\"test agent about\",\n            metadata={\"test\": \"test\"},\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )\n\n\n@fixture(scope=\"test\")\nasync def test_user(dsn=pg_dsn, developer=test_developer):\n    pool = await create_db_pool(dsn=dsn)\n\n    return await create_user(\n        developer_id=developer.id,\n        data=CreateUserRequest(\n            name=\"test user\",\n            about=\"test user about\",\n        ),\n        connection_pool=pool,\n    )\n\n\n@fixture(scope=\"test\")\nasync def test_file(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n    return await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Hello\",\n            description=\"World\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        ),\n        connection_pool=pool,\n    )\n\n\n@fixture(scope=\"test\")\nasync def test_doc(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n    resp = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Hello\",\n            content=[\"World\", \"World2\", \"World3\"],\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # Explicitly Refresh Indices: After inserting data, run a command to refresh the index,\n    # ensuring it's up-to-date before executing queries.\n    # This can be achieved by executing a REINDEX command\n    await pool.execute(\"REINDEX DATABASE\")\n\n    yield await get_doc(developer_id=developer.id, doc_id=resp.id, connection_pool=pool)\n\n    # TODO: Delete the doc\n    # await delete_doc(\n    #     developer_id=developer.id,\n    #     doc_id=resp.id,\n    #     owner_type=\"agent\",\n    #     owner_id=agent.id,\n    #     connection_pool=pool,\n    # )\n\n\n@fixture(scope=\"test\")\nasync def test_doc_with_embedding(dsn=pg_dsn, developer=test_developer, doc=test_doc):\n    pool = await create_db_pool(dsn=dsn)\n    embedding_with_confidence_0 = make_vector_with_similarity(d=0.0)\n    make_vector_with_similarity(d=0.5)\n    make_vector_with_similarity(d=-0.5)\n    embedding_with_confidence_1_neg = make_vector_with_similarity(d=-1.0)\n    await pool.execute(\n        \"\"\"\n        INSERT INTO docs_embeddings_store (developer_id, doc_id, index, chunk_seq, chunk, embedding)\n        VALUES ($1, $2, 0, 0, $3, $4)\n    \"\"\",\n        developer.id,\n        doc.id,\n        doc.content[0] if isinstance(doc.content, list) else doc.content,\n        f\"[{', '.join([str(x) for x in [1.0] * 1024])}]\",\n    )\n\n    # Insert embedding with confidence 0 with respect to unit vector\n    await pool.execute(\n        \"\"\"\n        INSERT INTO docs_embeddings_store (developer_id, doc_id, index, chunk_seq, chunk, embedding)\n        VALUES ($1, $2, 1, 1, $3, $4)\n        \"\"\",\n        developer.id,\n        doc.id,\n        \"Test content 1\",\n        f\"[{', '.join([str(x) for x in embedding_with_confidence_0])}]\",\n    )\n\n    # Insert embedding with confidence -1 with respect to unit vector\n    await pool.execute(\n        \"\"\"\n        INSERT INTO docs_embeddings_store (developer_id, doc_id, index, chunk_seq, chunk, embedding)\n        VALUES ($1, $2, 2, 2, $3, $4)\n        \"\"\",\n        developer.id,\n        doc.id,\n        \"Test content 2\",\n        f\"[{', '.join([str(x) for x in embedding_with_confidence_1_neg])}]\",\n    )\n\n    # Explicitly Refresh Indices: After inserting data, run a command to refresh the index,\n    # ensuring it's up-to-date before executing queries.\n    # This can be achieved by executing a REINDEX command\n    await pool.execute(\"REINDEX DATABASE\")\n\n    yield await get_doc(developer_id=developer.id, doc_id=doc.id, connection_pool=pool)\n\n\n@fixture(scope=\"test\")\nasync def test_user_doc(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n    resp = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Hello\",\n            content=[\"World\", \"World2\", \"World3\"],\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # Explicitly Refresh Indices: After inserting data, run a command to refresh the index,\n    # ensuring it's up-to-date before executing queries.\n    # This can be achieved by executing a REINDEX command\n    await pool.execute(\"REINDEX DATABASE\")\n\n    yield await get_doc(developer_id=developer.id, doc_id=resp.id, connection_pool=pool)\n\n    # TODO: Delete the doc\n    # await delete_doc(\n    #     developer_id=developer.id,\n    #     doc_id=resp.id,\n    #     owner_type=\"user\",\n    #     owner_id=user.id,\n    #     connection_pool=pool,\n    # )\n\n\n@fixture(scope=\"test\")\nasync def test_task(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n    return await create_task(\n        developer_id=developer.id,\n        agent_id=agent.id,\n        task_id=uuid7(),\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"hi\": \"_\"}}],\n            metadata={\"test\": True},\n        ),\n        connection_pool=pool,\n    )\n\n\n@fixture(scope=\"test\")\nasync def random_email():\n    return f\"{''.join([random.choice(string.ascii_lowercase) for _ in range(10)])}@mail.com\"\n\n\n@fixture(scope=\"test\")\nasync def test_new_developer(dsn=pg_dsn, email=random_email):\n    pool = await create_db_pool(dsn=dsn)\n    dev_id = uuid7()\n    await create_developer(\n        email=email,\n        active=True,\n        tags=[\"tag1\"],\n        settings={\"key1\": \"val1\"},\n        developer_id=dev_id,\n        connection_pool=pool,\n    )\n\n    return await get_developer(\n        developer_id=dev_id,\n        connection_pool=pool,\n    )\n\n\n@fixture(scope=\"test\")\nasync def test_session(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    test_user=test_user,\n    test_agent=test_agent,\n):\n    pool = await create_db_pool(dsn=dsn)\n\n    return await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=test_agent.id,\n            user=test_user.id,\n            metadata={\"test\": \"test\"},\n            system_template=\"test system template\",\n        ),\n        connection_pool=pool,\n    )\n\n\n@fixture(scope=\"global\")\nasync def test_execution(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    task=test_task,\n):\n    pool = await create_db_pool(dsn=dsn)\n    workflow_handle = WorkflowHandle(\n        client=None,\n        id=\"blah\",\n    )\n\n    execution = await create_execution(\n        developer_id=developer_id,\n        task_id=task.id,\n        data=CreateExecutionRequest(input={\"test\": \"test\"}),\n        connection_pool=pool,\n    )\n    await create_temporal_lookup(\n        execution_id=execution.id,\n        workflow_handle=workflow_handle,\n        connection_pool=pool,\n    )\n    yield execution\n\n\n@fixture\ndef custom_scope_id():\n    return uuid7()\n\n\n@fixture(scope=\"test\")\nasync def test_execution_started(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    task=test_task,\n    scope_id=custom_scope_id,\n):\n    pool = await create_db_pool(dsn=dsn)\n    workflow_handle = WorkflowHandle(\n        client=None,\n        id=\"blah\",\n    )\n\n    execution = await create_execution(\n        developer_id=developer_id,\n        task_id=task.id,\n        data=CreateExecutionRequest(input={\"test\": \"test\"}),\n        connection_pool=pool,\n    )\n    await create_temporal_lookup(\n        execution_id=execution.id,\n        workflow_handle=workflow_handle,\n        connection_pool=pool,\n    )\n\n    actual_scope_id = scope_id or uuid7()\n\n    # Start the execution\n    await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"init\",\n            output={},\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": actual_scope_id},\n            next={\"workflow\": \"main\", \"step\": 0, \"scope_id\": actual_scope_id},\n        ),\n        connection_pool=pool,\n    )\n    yield execution\n\n\n@fixture(scope=\"global\")\nasync def test_transition(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    execution=test_execution_started,\n):\n    pool = await create_db_pool(dsn=dsn)\n    scope_id = uuid7()\n    transition = await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"step\",\n            output={},\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n            next={\"workflow\": \"wf1\", \"step\": 1, \"scope_id\": scope_id},\n        ),\n        connection_pool=pool,\n    )\n    yield transition\n\n\n@fixture(scope=\"test\")\nasync def test_tool(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    pool = await create_db_pool(dsn=dsn)\n    function = {\n        \"description\": \"A function that prints hello world\",\n        \"parameters\": {\"type\": \"object\", \"properties\": {}},\n    }\n\n    tool_spec = {\n        \"function\": function,\n        \"name\": \"hello_world1\",\n        \"type\": \"function\",\n    }\n\n    [tool, *_] = await create_tools(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=[CreateToolRequest(**tool_spec)],\n        connection_pool=pool,\n    )\n    return tool\n\n\nSAMPLE_MODELS = [\n    {\"id\": \"gpt-4\"},\n    {\"id\": \"gpt-3.5-turbo\"},\n    {\"id\": \"gpt-4o-mini\"},\n]\n\n\n@fixture(scope=\"global\")\ndef client(_dsn=pg_dsn):\n    with (\n        TestClient(app=app) as client,\n        patch(\n            \"agents_api.common.utils.model_validation.get_model_list\",\n            return_value=SAMPLE_MODELS,\n        ),\n    ):\n        yield client\n\n\n@fixture(scope=\"global\")\nasync def make_request(client=client, developer_id=test_developer_id):\n    def _make_request(method, url, **kwargs):\n        headers = kwargs.pop(\"headers\", {})\n        headers = {\n            **headers,\n            api_key_header_name: api_key,\n        }\n\n        if multi_tenant_mode:\n            headers[\"X-Developer-Id\"] = str(developer_id)\n\n        headers[\"Content-Length\"] = str(total_size(kwargs.get(\"json\", {})))\n\n        return client.request(method, url, headers=headers, **kwargs)\n\n    return _make_request\n\n\n@fixture(scope=\"global\")\nasync def s3_client():\n    with get_localstack() as localstack:\n        s3_endpoint = localstack.get_url()\n\n        session = get_session()\n        s3_client = await session.create_client(\n            \"s3\",\n            endpoint_url=s3_endpoint,\n            aws_access_key_id=localstack.env[\"AWS_ACCESS_KEY_ID\"],\n            aws_secret_access_key=localstack.env[\"AWS_SECRET_ACCESS_KEY\"],\n        ).__aenter__()\n\n        app.state.s3_client = s3_client\n\n        try:\n            yield s3_client\n        finally:\n            await s3_client.close()\n            app.state.s3_client = None\n\n\n@fixture(scope=\"test\")\nasync def clean_secrets(dsn=pg_dsn, developer_id=test_developer_id):\n    async def purge() -> None:\n        pool = await create_db_pool(dsn=dsn)\n        try:\n            secrets = await list_secrets(\n                developer_id=developer_id,\n                connection_pool=pool,\n            )\n            for secret in secrets:\n                await delete_secret(\n                    secret_id=secret.id,\n                    developer_id=developer_id,\n                    connection_pool=pool,\n                )\n        finally:\n            # pool is closed in *the same* loop it was created in\n            await pool.close()\n\n    await purge()\n    yield\n    await purge()\n"
  },
  {
    "path": "src/agents-api/tests/sample_tasks/__init__.py",
    "content": ""
  },
  {
    "path": "src/agents-api/tests/sample_tasks/find_selector.yaml",
    "content": "name: Find request and selector for identity provider\n\ninput_schema:\n  type: object\n  properties:\n    screenshot_base64:\n      type: string\n    network_requests:\n      type: array\n      items:\n        type: object\n        properties:\n          request:\n            type: object\n            properties:\n              url:\n                type: string\n              method:\n                type: string\n              headers:\n                type: object\n                additionalProperties:\n                  type: string\n              body:\n                type: string\n          response:\n            type: object\n            properties:\n              status:\n                type: integer\n              headers:\n                type: object\n                additionalProperties:\n                  type: string\n              body:\n                type: string\n    parameters:\n      type: array\n      items:\n        type: string\n\n  # Shortcut to require all props\n  additionalProperties: false\n  minProperties: 3\n\nmain:\n  - map:\n      prompt:\n        - role: system\n          content: |-\n            From the screenshot below, can you identify if the page has {{_}} for the user?\n            Write your answer in the following yaml format:\n\n            found: true|false\n            value: <value>|null\n\n            Make sure to end your answer in the above format only.\n            Please do not include any other information or explanation after it.\n\n        - role: user\n          content:\n            - type: image_url\n              image_url:\n                url: \"data:image/png;base64,{{inputs[0].screenshot_base64}}\"\n                detail: high\n\n    over: _[\"parameters\"]\n    reduce: >-\n      results\n      + [\n        load_yaml(_[\"choices\"][0][\"message\"].content.strip())\n      ]\n\n  - evaluate:\n      result: >-\n        [\n          {\"value\": result[\"value\"], \"network_request\": request}\n          for request in inputs[0][\"network_requests\"]\n          for result in _\n          if result[\"found\"] and result[\"value\"] in request[\"response\"][\"body\"]\n        ]\n\n  - if: len(_[\"result\"]) > 0\n    then:\n      log: list(zip(_, inputs[0][\"network_requests\"]))\n    else:\n      error: \"Could not find the selector in any of the network requests\""
  },
  {
    "path": "src/agents-api/tests/sample_tasks/integration_example.yaml",
    "content": "name: Simple multi step task\n\ninput_schema:\n  type: object\n  properties:\n    topics:\n      type: array\n      items:\n        type: string\n\ntools:\n  - type: function\n    function:\n      name: generate_questions\n      description: Generate a list of questions for a given topic\n      parameters:\n      type: object\n      properties:\n        topic:\n            type: string\n            description: The topic to generate questions for\n\n  - type: integration\n    name: duckduckgo_search\n    integration:\n      provider: duckduckgo\n      setup:\n        api_key: <something>\n      arguments:\n        language: en-US\n\nmain:\n  - foreach:\n      in: _[\"topics\"]\n      do:\n        prompt:\n          - role: system\n            content: |-\n              Generate a list of 10 questions for the topic {{_}} as valid yaml.\n        unwrap: true\n\n  - tool: duckduckgo_search\n    arguments:\n      query: \"'\\n'.join(_)\"\n"
  },
  {
    "path": "src/agents-api/tests/sample_tasks/reclaim-example.yaml",
    "content": "name: Reclaim Example\ndescription: This is an example of a reclaim task.\n\ninput_schema:\n  type: object\n  properties:\n    screenshot_base64:\n      type: string\n    parameter_names:\n      type: array\n      items:\n        type: string\n\nmain:\n- over: _.parameter_names\n  parallelism: 10\n  map:\n    prompt:\n    - role: system\n      content: |-\n        You are \"{{agent.name}}\" -- {{agent.description}}.\n\n        # Instructions:\n        {% for instruction in agent.instructions %}\n        {{loop.index}}. {{instruction}}\n\n        {% endfor %}\n\n        # Task:\n        - The user will provide you with a screenshot that contains some data that needs to be extracted.\n        - The user will also provide you with the name of the parameter you need to extract from the screenshot.\n        - You should analyze the screenshot carefully and locate the target data (e.g., username, ID, rating) as described in the provider details.\n        - Pay attention to the format of the data you are extracting; for example, Steam IDs are 17-digit numbers.\n        - If you are looking for an ID, it will usually be near labels like 'ID:', or similar text within the screenshot.\n\n        # Guidelines:\n        - Think step by step before providing a response.\n        - Your final response should be a JSON object with the structure:\n        ```json\n        {\n          \"<parameter_name>\": \"VALUE\",\n          \"additional_data\": {\"ADDITIONAL_INFO\": \"(IF NEEDED)\"}\n        }\n        ```\n\n        - If the parameter is not found, respond with:\n        ```json\n        {\n          \"<parameter_name>\": null,\n          \"error\": \"ERROR_MESSAGE\"\n        }\n        ```\n\n        - The final json object you respond with should be within ```json {<json_object>}```\n\n    - role: user\n      content:\n        - type: text\n          text: |-\n            In the screenshot attached, find the parameter `{{_}}` and extract it according to the instructions.\n        - type: image_url\n          image_url:\n            url: 'data:image/png;base64,{{inputs[0].screenshot_base64}}'\n\n- evaluate:\n    results: \"[result.choices[0].message.content for result in _]\"\n\n- foreach:\n    in: _.results\n    do:\n      evaluate:\n        parsed_result: load_json(_.split('```json')[1].split('```')[0])\n"
  },
  {
    "path": "src/agents-api/tests/sample_tasks/screenshot.base64",
    "content": "iVBORw0KGgoAAAANSUhEUgAACfIAAAR3CAYAAAC2FwdZAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAP+lSURBVHhe7N0HYBNl/wfwb9qmu3RRRtmrbAEBZSouFEEBxYGooOLAjVvc++968XXhK6jgAgEFBcRXfBVk7z2kbGgpbemiu0n6v9+TS5ukSZuWdADfD565e+5yucy79L75PYbDCUnFICIiIiIiIiIiIiIiIiIiIq8q5tn4s0axqyfTrs0632D7r2R5i8UCszZuNlsQHRmOBtERqp2IiMiZj35JRERERERERERERERERERERJ5wE+KTdluITy4t2qhMxjaMYYiPiIjKxSAfERERERERERERERERERERkRu2YF4J52m7EJ+NNcRXDJPFgojwUISHBetziIiIXGOQj4iIiIiIiIiIiIiIiIiIiMiFMiE+J2q2nuOzkevIICG+0OAgNIyO1OcQERG5xyAfERERERERERERERERERERkSfsgn32IT5b4M92aSk2aO0GNG4QpaaJiIgqwiAfERERERERERERERERERERkZPyqvHZ5rkK8QmTxYzIiDD4+frqLUREROVjkI+IiIiIiIiIiIiIiIiIiIioIg7BPmspvrIhPgMs2qgE/KLDw6xNREREHmCQj4iIiIiIiIiIiIiIiIiIiKg8diE+NWrN8Sn2lfiE2WJGYGAAfFmNj4iIKoFBPiIiIiIiIiIiIiIiIiIiIiI7zuE8V8ouI9X4LNpQjLDgQL2NiIjIMwzyEREREREREREREREREREREXnAVo3POmIf5jOgWPtnUPOAoMAAazMREZGHGOQjIiIiIiIiIiIiIiIiIiIi0pWptOc8XQ6zxaIu/fzYrS4REVUOg3xEREREREREREREREREREREFVABP4O1IF/JtKJX41NjWrulGH6+DPIREVHlMMhHRERERERERERERERERERE5IpDNT5rhK9MxT6dxWJRIT7h48M4BhERVQ73HEREREREREREREREREREREQeKK8an5U2XTpBRETkMQb5iIiIiIiIiIiIiIiIiIiIiDTuqu3ZutUtvxqfRZ8iIiKqPAb5iIiIiIiIiIiIiIiIiIiIiMrlqsxe2Wp8Fm26LpPAYUFBoRpknIiI6g7D4YSkur0XISIiIiIiIiIiIiIiIiIiOgO5Kd5GdZhDxT27cVWQT6/IV7qMNcgnM1W7pRhmbdpstqBzXCt9mdpTVFSEvPx85GtDYWGhNm2y23Yrg3anjEY/+Pv7IzAwEEHaYDQa9blERFSTKhXky80r0D7kC1Cgfbj7+fggv6BQn1M9AgOMMGk7ugBtpxEcFKDtMAL0OUREREREREREREREREQkavocHhF5ToW86IxiH3RzGIfBWnlPD+1ZWYN8xcXWbnWl2cfPT2Ud+p3fRV+mZkmVvYyMTJzKzobZbIbB1we+Af4wadtp1rZThgJLIQw+vgg0+sOgLR/kHwCDyYLCnAJ1P3x9fREWGoqIiHD4aPsVIiKqGR4H+U5mnJJPfARoH/D+Ko1dMwnswsIiFGpfOuQLh+wgoiLC9Dl1T3JKKg4eOIATySk4kXRCm07WdtABiGnQAI0aytAI7dvHIYCBRCIiIiIiIiIiIiIiIvICOYcnoQs5f+fr4wM/XwYuiOoSBvnOPI5BPtulNmIwwKA32JaR/0u4T8JzUo1PdaurLSehv24d26plaopsU2ZWlgrxqe0I9EVuoQkBIWHIy8vT9g9+Wqt0pWuB0V+KKplVpb6Q4BAU5OXC388Ai6kIPuZi5GRkITggDEGBQSrMF16vnqrcR0RE1cujIF9KWiYC/P1RLzRIb6kdWdm5KthXPypcb6l927Ztx/oNG9RlQkKi3lq+zp07oXv3bujbpw8aNWqotxIRERERERERERERERF5Ts7h+fv5ItDfCB9fH/gYfGBg5SSiusWWBKMzgn2IT9iCmKpZcmy2AJ/eIPOdg3wyy6L9r0tca7VsTTh1KhvpGRkoMptR5GvByZxMrdVP21AfbN68HQUFBcjJydGWy4Sfnw8aNmyIps2boWWLlqo4kYTALeZCFGjLbN+2FSknkhATUx8X9LwA/r6B8PPxRVRkJEJDQ6w3SERE1aLCIJ/8ike+AISFBusttUvCfCaTudYr8+3auRvTv/4GBw4c0FsqTyoMXnbZpbjpxhtUip2IiIiIiIiIiIiIiIjIE3IOz8/HgKAAf1VZiZWSiOomPfdFZwjnIF9pcE/7nx7kK13GGuSTNovZDIu+jMw3mS3o0r5mgnwS0Es+eRL5hmIkZ6UjwD8Aebl5CAgIxh9//Ilvv5mpCiZJ2LDIVADJe4eGhiJYKvEVFKJpbGO0bt0CI64djtTkJBw9cgTR0RHo1KkDwqOikWPwR5ifH4JNZjSIjkJICMN8RETVpdwgX25+AfLyChAdWU9vqRtS0zK1nUoggmuhi9qTqWmY8p/PsGXLNr3l9BmNRowYfi1uuukGvYWIiIiIiIiIiIiIiIjINTmHl5tboHrT8vc36q1EVBeVZL7ojOAQ5LMbl1HJS8t810E+i6rCJ0E+CcyZLcU1EuSTrnRPnkxDYYAPsooKUFhQAEuhBSeT0/Df//6Bv5etgNlcjHxtvyEMBm1bi80wmUzw8TNCariGBAfBT8J92uXAAQPQqk0rdOzUAQ0a1UeBxYzcYh8YfP0QHWCEMScf0VFRqqtdIiLyvnJra0uIL6AOHvwHBvirbatp23fswONPPuXVEJ8oKirCnLk/4uWXX0NOdo7eSkRERERERERERERERFSWnCfzN/rCaPTTW4iIqMYZ1H+lHCaqn4T4UtPSkGYowonsLOTm58NsAfLzCnHo0GFtX5EPk8kCs1mW9lHjMuTl5qMgvxBmqdJnMiP3VI425CE9NR1r16xF69atERlTH3myvLZCP0sBfEy5SM/JRLZRCi+lq9smIiLvKzfIV1Bk0r4E1L0vALJNhdq21aSFixbjlVdeR3Z2tt7ifTt27sSTTz+DhGOJegsRERERERERERERERGRIzmHJyE+dqdLRFT9VAU+7ePWoVqfxjZt315Tn8p5eXmqEl8GTMjMzUFBQQEKCwtVNUBTUREy0jKRqHIH2rZZimE2mWEqLEJBnrZcfpHqCrjYrM01WdT8YrMF5kITUlNTsWzpMqj+d319YDZYEOBjga85H8WFucjJO4UcYzFOpqWpbTiTZWfnYOas2XjmuReRnp6htxIR1a5yg3y+PoY6WY5btkm2raasXbMO06fP0KeqV3JyCl5/401W5iMiIiIiIiIiIiIiIiKX5DxZgL+/PkVERDWv9oLU0uPfieQUZBlMyCrIlageDNp+QQYJFUqQb9v2rUhMTEBOdjays0/Bx2CAxWJWAwwWFQSX8cKiQuTn5iE3KxvpaWkoyMvHn3/9ifj4vSi0mGAw+qFIgn4SLTH4qop/GTk5KAwMUNsg23KmOpGcjK+//V57nFhoiYjqjvIr8hXU3Q/d/BraNqmO9++PPtanakZKairen/zvMon+2iTbUlhYhMKCQsdBa6tL20lERERERERERERERHS2k3N4PjVY9IKI6Nzm/vNWzpUXWyz6lFV1nz5PSUmFyd8HyTlZyM7JQX5BPkxSYU9mGoqRmZmBI4cPwWQqVKG+oqICZJ86hfz8PFgsJvj5+SIwMABS1NVUUIj8vDxtyEFubjayMtORlHQcqWknYS42IbegAAXFRpgRCLMhAEUWAwqLzEhMP4kCH+u2EBGR95Qb5DvXSZ/x//f2O6oErb24uDi88tJLGH/XnWjZsoXeWnl9+/bBk088ptYVEBCgt1pt27YNP/00X5+qHSaTCZkZWSpYePx4kiqjm3rypOOgz5NlsjKz1HWIiIiIiIiIiIiIiIiIiIjOFRY9vVfdRXCkO9j8oiIkF+TCz88P9erVg9EYgCKTGbl5BcgrKMS+A/thMhfBVFAAXxRrA2D080GA0agNfvA3GGAsNiPQx6JdFiHAUoQgXwOCtfkFBfnIKypEaL0w5OfnwyjVX/0CkQ8/5JmKUSSZRe36fr6+SMvPQV5hgdqmqpDueT/97HMMvfY6tGzbEf0vugwffvypKia0YeMm1SbTO3bsxC233YFJz7+ktkkyCb/993fVJstcesUQvD/5Q7U+m6PHEvDe5H87rPu9f32AjAxrF7qy3ssGX43de/7B38tXokfvvhgybAT2Hzio5svtzP1pPm665XZ1/W49++DhR59Q22J7jmUZ2Sa53s5du/HJlM/VcrLt7rZ/1+49ankZ37dvPx54eCJuv2M8u/YlohK+Ex9/4mV9vIzMUzkIrxeiT9UtNbFtc3/8CevWr9enSg0bNhQDBvRD27ZtMHjwFWjUsCHitQ9Z6QNeAnnt27dH+7h26N6jO1q3boX60dGqPT09XV2/Y4cOeOrJxzH06iFo2rQJGjSIwd698Th+/LiabyMf6IMuGYSQkGC9pWbIjic7OxvpGZn4/b+/4cc5czB79ix8MfVzzJn9Q5lh9epV2LF9B06dykJMw0Yq5R/g7xhMJCIiIiIiIiIiIiIiIu+oy+fwiIjOSmWK8pU2qKp8MqI3Sc5LphvUj7Q2eIncjnQHe8rPggKzCcFBIbCYi1XYzsfPCB/tstBsxt/Ll2PH1q0w+hpgKSpEgDFA2zQ/GHx8VIgvCBYgLxPhfvno1rwx4mLqa+O+iGvXBjmmfBQH++OSwZcjKCAQIf6B2jqLtGuYUOxj0W7HB77+frAYilFoMqlwYHFBEerVC1Pd9XpKAnMSjJv74zy0bNECN984ShVRKiwqQp8LeyM5JQWz5/6EZk2b4q9lf2PZ3yvQtUtn9O/XF1/N+Aavv/k2evfqiWFXX6XyGjN/mIN9+/djQP++CAwMxIyvv8Wq1Wtx6SUX46KBA1S3w9/N/AFmswUXausvyM9Ho0aNcOToMcQ2boTbbr0FPXp0w3ldO6v78eb/vauCf7GNG6ttk2WW/O8v/DT/F7Rr21blQCRQKNuVlHQCedr6Pvp4CgoKCnDjDder++hq+887ryt+X/IHQkNCsXbdeiz8dTFatGiOIVcORlBQoLoeEZ3bDIcTktxGwo8kJKN5kwb6VN1S3dsmief7H3wYRU7V+MQLzz2Hbt276lNWkgpPOp6E5i2a6S2uHTp02GUVv6+/+Ra//LJQnyo1UNupPPLwg/pU9ZP7ISl0qbT32aefYOPGDfocz/S+4ALcf/9DiIiK0L5AhiMgwF+fQ0RERERERERERERERN5wOufJTp3KxsHDR5GSehIn09JRLzQUDRrUR4tmTREd7d3QCRFZQ1105nCoqKePqwvJqJVMWxtUfE8bt5gt1op8+jJmi9amXXZp31ot7y0ZmZlIlW5zTdkICQqGwWyA2WSGj9GoKuMVyULa7X7/5TeY/8P3CDUYEOxnRERYNHx8/ZGTnYOslES0bhKN7h1boX64L5pFN0TGiSwUmHxgqReB+OwsLF67Fo8+8yx69e4NX/igyGBGQVGh6r7Xx9cX/v7+MGi34yPV+YpMaBEcjujICESEh8sWVKigsBDvvf8Bpn7xFV56YRJuGzNaVRe0JxXtRt00BjExMXjisUcwYvg1CNBuV8JvDz7yOCY9/YRqk9CdPB/TvpyON956B99Mn4aBA/qroKAUVZLrCKnWJ8HBvPw8fDj5fTRtEquWefDhidpt1Me///UeIrX7IH6YPRdPT3pBbdez2u0EB1sLL61Zux6PP/kMunTuhHf+73VVzOnV19/CzwsWol/fPnhh0jNo3tyaF3G3/bbbTE5OUeHBe8bfUbJ+orPRN7N+QvNmTXBx/wv1FqqI17rWTU45iZVr1p/WIOuoK2bOmu0yxCd8/aT4rCN/f2OFIT7hriteg8H1U7F8+QocPnREn6p++Xn52LRpIx6f+EilQ3xi/bp1eOLxR7F96zYU5BforUTVr7CgCH8sXa4uiYiIiIiIiIiIiIiorAOHjuDLb37Ab0v+wsbN23Do8FFs27kbf/y1XGufhb9XrIHJZNaXPvulpqbh9//9je9nz8M7kz91O8h8WS5FW56Izl4OIT433C5jV42vukgQOyEnEyknTyIhMREJxxNxMiMdeYX5qgKgdHcr1eiaxsYiNCAQEaHBOK9DW/Tv1RVRQT5oFOqL64dchBuvHoTeHZqheWQgfApOIjy4GBFhfggwAmFBgfDV1lNksqDYJwC+gcHaOoMQHBKCEG2Q9fv4+KhBHov8wgJkFOWrbfNUSkqqtg/ajCuvuBzXjbi2TIjP3vndu+GqwZeXBPI2bNysXT8FE594Gq3adVLd18qlhPjEyZPWz2kJ8W3atAUff/of3DPhQdxw0xisXLUaebl5qmqeOzJvx85dKoAnlfXsQ3bdzuuiem7ctGWrquRnk5OTi+tHDi8J8dlz3n6bZs2aquswxEdnMwntbtyyXYX5Fi9ZqrdSRbwW5Fu1dgNWrl5/WsPqtRv1tdWu3Jwc/Pnnn/pUWckpyfqY9yQnu1/nosW/6WPVS6rxZedk439LliArK0tvtZKdta0UruyUZVpIm23c5qR24PDb4l/VumSd1S5jGd6+4WbM26tPU6nsRBw8lqNPVIL+mI56fRmsHULXfeu0A7FNm7djvXZJRERERERERERERESO5Dzc3HkLVUihR7euGDVyGB6ecBfG3XoTrrj0ItUt4pr1m/D1zDk1c36nlkmI77//W4aY+lG4/tqheGri/W4HmS/LLdGWZ5jPTtpmTJs8E2v5kBBVu8LCQhQVFcEnJED7vK4Ho9EIX38jzMUWmM1mWFCszuMbLMWoF6C152SiXfMmGHrFILRq2hDNG0WjaYNoRIeGwF9btn5kGGKiwhAaGoSGTRogLLoegrXx+tFRCDIGICamAQKDg2E2GFR1QanEJ1342rIBcllssGYHjqemqG2TbfSE7IckUBet3ZZUtStPhw7t1f21MZtN6vK1V17EzG9nlBl69eqJ3NxcvP7G/2H8vROwbft29O7ZE08+PhHdu52nrlseCSfK4ymPg3PILigoCE1iG6sgoX0YsH1cO7Rt21afcuS8/Tbt28ehfv1ofYro7CQB1iceukdd/vjLYnXcRRXzWpCv34W90L9v79Ma+l7YU19b7dqwYZM+5pqPm+p5p8NodN8F7bp16/Wx6pWdnY0Vy5dj1aqVeouVpOonT56M22+/XQX3Jk6ciLfeeku1Dx48GJ9++mmZnZisQ9Yl6/RU+tK3MOqGGTjb8nh7p3snEJe2fibembwY8fp0xQ5h4VOP4cmJ9531Ice8/Hys37gZ4fXCsE67zKtMNUj1JdP1L+zUMH0zbN8/rc9B2WWmrXd6dvctLn8+EREREREREREREVENOnIsActXrUVoaChuvek6XHHpQLRu2RyBgQFoEBONHt264M7bbkb387qogNvC3/7Qr1k18b84/h297FCZ8x3VY9PWHejUoZ267wGB7s/TCZkvy3XUlt+sXY+IqKbl5uXB4ueDnMICa+Edox/yiwpxKicHJ5KTtc/uVBVgMxcVICc1ES1jIhAdbERK4hFsWLtKW96I8AYNkZCWhcMpWViyfAuyzAHwi2iEQ2nZ2Lj3IJau3YhtO3bDqK2/cf1opKUmIScvCzn5eWrd+QUFKrxnDPDXLg2qkl5ovXpIzcxU2yLbWBnpGRkoLCo/OO7r61NScMhejLZ9fftcUGaQLnM3btqMb76biVtvGY1PP/oAd4+/A30uvEAF1j2VejJN3Wd7edr9S0g8jpYtWqjqhDYqQOliG4W77fct5zpEZ5OmTRrj8Yfuhr/2GTRn/q8M83nAa4k0Ocjv36f3aQ2yjrpg9bq1+lhZvXv3xKBBF+lT3nPv3XchIsLa57qz7OxT2Llztz5VfUwmE5b8Xrb6nyTnJVV+33334aabbsLRo0fRp08fPP/88zh16hT27dvnMl0v65J1kjekI35nOqIG9EE7vaViEWjQMhgI7oYmDfSms9SGTdtUmeqbR41Qlxs3bdXneCCqB8a7+HXdUxOHQH430XZAD0RZl7SK7Ftm+fG9I/WZethvQQYuHlu6nqgVMxnmIyIiIiIiIiIiIqJaUVBQiAWL/1CBgRHDrkRsbCN9jiOj0Q+DL7sIrVo2x779B3Hw0FF9TuW1u9b+7+jWv7dHDRjt0Ob5+Y7qkZp6Ep3ax+lTnpHlU7TrucUKdUTntJJYVjXks3JzcmHy91UV7CRIJ9X4AoICERYRjtDweoiIjIS/vz9MBfkI9wF6tG8Df0sBokKDEa7NN/j5I/5IEqKatUeDNt1RHN4Ef23cjzl/rMPavYk45ROC8NgWgF8gmjdphsTDh1CQl4283FPIyspUvfHla+v20fYVEtjLz89HTm4Osk6dUu2ZEvbTttETjRs1ROdOnfD38hX43//+gsVi0edUrGOHDuryx3k/a5/HqWpcSBeeq9asVZXybN3rSmEiWwXBf/bGY7+2b3PFbLbAUmzdBrlOt/O6qnzE7Dk/OoT5tm7bgRUrVqFTpw6Ibex6X0p0rti2cw/umzgJ4x96usLhzfc/KQntSphvy/Zdapxc835pubPA+nUb9LGybhg1Sh/zroDAAFx99RB9qqyNm8qvEni6LNrOSUJ3ydoOyZnsON944w3MmjULjz32mNp5PfPMM7j00ksxcuRIvPvuuy4De7IuaZfys56IHPQs5s4Zi8p9Zar74sbNwtznL0Zp1KsK0g5he3okurapzFoicMFTX2LujCdwgeuM6BnJYinGgUNHsGnLdvz19yrMX/hfbNi4Bed376odhIapX8St16alfeny1Wo5Wd7T16FN/C+LsS+yLwa5roLsxkEsXZGOtteMxoUl6b9WuO6aVkhbsabGfl349/61uH3mRKw/uk1vISIiIiIiIiIiIqJz1T/x+5GTnYMe3bsgtnFDvdW9IVdcoi537N6jLs9WxxKPV1iJz5ksL9WYiOjcU9u10ySoll9sKqn+ZvD1gX9QEGD0RXBoCAK1camQFxYciqYN6sO3qAAx9UJQlHsKhw/sx+q1q5GZk4Ok1HRs33sQqRlFKDQFI98chOLASITENMa2XfsQ4B+s1vO/Jb+jYaP6iIgKQ3hkPe3zL1B7EAwq4JaWkY7cvFz4GY2qS9/cfGu1QNlGT0hvfzeMGomGDRpg4hNP49axd+HDjz/Fm2+/qwYJCbrTv18f3DZmNJb88Sduvf1OvPevD9R1ZXzhwl/VOeF27dqiSWwspn/9Ld546x28+/5kfPDhx/oaSkVGRKBBgxisXLUaL7z0Kib/+2McOnwYl19+KYYNHaKq+o298x61/knPv4R7738IAQH+GHvbGISHh+trITp3VTKCocgPR6SnxZpyIjlFhQely2x3ZN5Pv/yG40nJekvtYpDPSXq6+6pZskNp3bqVPuV93c9z3yd7cnL1vmCkz3qR4eL+y4HAsGHDsGHDBsyYMUNV5uvWrZsK9/Xq1QvXXXedvqQj27qKiliV73TFr1iNtDZ97MJh564du//B3HkL8cdfy7E3fj/MJjPO73EeLujZXc2/oGcPNW02mbBn7z61nCy/+599ar5nDmL7/rLV+E4e117TURGOFfrs7duDfYhEE+cF2nZAW1lnZTahilYcXI/Jy6chrzAP4QE1twMkIiIiIiIiIiIiorrJVkGuWWxjdVmR0NAQREVGYu++gygsLL/Lw7PbQfw0+VP8VAN/2yciKo+E02QwWSyqx7wcqRLn4wMfo7VCn3RrK1XxpMiOdP8aYAxAWFAomjRqhOAAI5rHxsCSm4XM5GNY/sev+PXH7/DPltVoFBoMf+06/1u8ED//+CMSjx3ButWrcepkBoYOvUYFBfPMZvj4+Wm3Z1Dd+UpuJ0hrDwkNRWBQoDonW6xtl9Szs22nJy68oDdmfDUNo2++EYcPH8G/PvgIK1euRtMmTbS7Zq2i54pkNp59+gm8+PyzKnD48af/wQ+zf0TrVi1x65jR6vHo1LEDXnzhWbRq2QIzf5iN5OQUvPDcM2jTxjHrERUViUceegC9e/XEr4uleMwm7W76IDoqCu+89Tpee+VFlaOQbVv29wqMum6E2mbZdqJz3XmdO+A/H7yJaR+9XeEw8f67VIDPz88Xj064E61aNNPXUv2WrliruvP9+PMZLsN80vaRNu/XJX9h+ep1emvtMhxOSHL7SXokIRnNPeyTU8ogJp2Qam5ViFwqBjRqGKP6RfZEZbatMg4fPorHn3hSn3LUtXNnvPTyC/qU98mO9ebRt+pTjuLi4vDmG6/qU95XWFCI1JMnccP1I/WWUpLq//LLL9G6dWvcc889uP7663HttdfinXfewWptR56UlOS23O2cH+ehfnQ0/AMq/kVT+tK3cPcnsXhTr8rnPF1i7wyMei4RE6c+i/5SaS5jGd6+ewri3piFkXYLWq9f2sVq7wc+w9ODbKXp4jHvBu251K4zKLG85SpiXc93+pQy9DXMHVdaEH7v9Jsx6dgETK1yVT75orgYuOZ+XFep6nAZWPn6fZi8tVvJY1XymDhto6295L7rj+n6bs7bnYG9C7/G7PnrsSWzCBHhLdB92FiMGdHJuoz99Z5qh13TP8W3S/YhxRiO7oNuwR3jLkaTyv24rQypHvnTgsXqvXrt0CvRrq37cG38voP4ZdF/0ULbEVx3zRD4+HqWXZbucaetiMBIp9L+8b98inkYgqeudXOb+xbr3eraV+QT1ucwbcBoh254vW3VoQ14d+nn8DUY8OLgR3Fe4476HCIiIiIiIiIiIiI6m1TmPNmP83/F/oOHcOdto1G/vmd/o5634DfE7zuAO2+/GfWjT7fKgIu/kbv9e7r+t/i0vhg/rgdO2v4uPyAD02asRkmPtZHW+Y5Xtd5Oae6uVZm/89t7Z/Knqptft2QbVzQqczuur5eOtdNnYplTvQzpTrj0vIDz9jnPd6fs9do6nDOq+H5bz3vYb1yk42MvXQLP2IOuY68CfrHeD/ttK3t9/TZKrjcaUSu052q/PruCx/5cU5WKRVQ7yoTQ9Gm5MBis80uWsTaoaTl/KZXppGqf9C4m43LZpX1r67KnSXIER44eg6lROBJSk5FbkA+Dny8KiySUYkDOqWwYffzgrw0F6RnwPXQQiXu3o1FUMAzFRcjKycWmHXsQHtUIRw4exokjh9Dv/O7o3KINEtLS8fOyv5BeaMapPBPqhcfgggEX4c7HH0Z+eAAswf4wn8pFUWERjAFGGP39VYDOIPEAkxkJh48g/WQaOrVugyYBoWjerKmaT0QkNm3dgf98+R0MPgYV6Gvfro0+p2bk5eXjvY+n4vCRY+jaqT0evGdsSZfbKsT3n+nYsXuvChc+9sB4BAUFqnm1yWsV+f77x1LMmjNfG36u4jAfv/9vqb622iMJdneCQ0L0seohO7TgYNe3kXbS+mup2iAhvQceeAAbN27E559/jr///htTp07Fk08+icGDB7sN8dUmCc9ZQ4CzMFeGqROAT+7D20sz9CWs9s5+C59jgnUZGd4YgvUulnMnfelcFQYsub52O70XveDx9T2Rtn5NFbp4rQ4pWPn6Q5g0YwuMF1yNccOHY1BnYMt3r+LJyeuRoy+lFMVj/stP44fklhg6tB+6GzOxZckUvPTOMpxubUkJ41137dVo1aoFfl70X/yz1/VP4Xbt1rZh4W8q6CfLexriky+80j1u1IA+Tl8w05EmfyHYr31x176kW4eZWFvyVwONdvAbpS2XYN8m0jJK/7hQTdYd2VwS4pt02YMM8RERERERERERERGREhoarC6zsrPVpSdycnLVZbB021gdVE826di+3yn5lrYZy5x7zElbg2m/ANdNvF8F6J6aOARt01dj2vTNpX97l0CZHha0LnM/RrY5iHlaW7y+SOWkY+2Kg4jq3NJ9Lz0OInHhOO12x/bVlpeQnHUbHIKLTtsny2LFTLzzy0HrMi6VhiBLrneNXbEBj+73QSzd2QHjbddXy6Rj2Yyyj832X34DrrUuY9t2CVZOW4GS+2S9vpqlk3V9iu2dbPNH4+JIbRvsnx+ic1BxlQsglWXSq0ilZ51CUGAwQkLC4Ovrh5DgEARr0/UjoxGiXeaeykHyiRQkZWbDPywCJosBvsXFaFAvGNdc0h+togPRp2Mz3HrNZbiwYys0CDKgS4sYXHJ+Z/Tp3BZ9usahT/dOuG741fD189X2G3nIOJULswQVtW2QLm8lACPBwpMnTyI/Lw+ZmZkICg6Cj3S9q7FtKxGdW/YdOITf/nDMfJ3KzlEhPslqPDqh5kN8QoJ5Tzx0N1o2b4rtu/7Bv6d8pQJ88jkm4xLik3myTF0I8QmvBfnatW6F5s2aoFmz2CoNct22raqv21pP5UoZWjekb/fqlpvrEIcqkZmVpY/VDvklwSeffIL4+Hi89tpr2LVrFxYvXoyuXbvqS9QhGcswbxEw5g27Sn4RF+OeB7ph/Sc/Y6/eJNY3HeVYfS9uLKa6WM6dyEHPOlQBlNsZOVRb7yGpTukN6YjfmV6JL4rVJ33pNEzeGoERL/0HT98zGsNuHY1bJ76Ie3prD/mquVh3TF9Q7FoG3PgZPnx+PIaNexjPT30NY2K15bZOw0pPHtgK+PgYMPKaq9C2TSv8vOj3Mt03S4XQhb8tQfu4Nrjm6sFqeY+p7nFb4eIyv4DTv4TrX1KtX1StX05LyupH9cDF2r5n3wL7gJ/2Zf+XPXL1aiMhvv/7c4r6lY+E+M5vWgffl0RERERERERERERUKyIjwtVlUtIJdVkROSd04oT1Z/nVd0KzFQYNiETaijUOYbK0/XuQps3ral/cID0CFztUxWuF6yQwl74aS/W/z8evWI20yL64zu5v++2uHYK2OIhl653Cgp5IO4Tt6a7OFVSFHgq0q3CnRPXAeAnl7V/jWDTAnioUEImubeyu13ZISTU+z+639ng5VRVsN0ACh9q6HW5XW77zVY4VEvctxrz9TtX7NHIb9sUQ5L6VVgiMxIUDtPuVvgfxTPIReYVBnQUEigx+gDEI/v6hCPINRbBPMIKL/REdGI4gix9OHk3CyeSTyAn0Q5eBA7TlfYFCE/xycmBOSUSEjwlNYqIRFBqOkwVmHMnLQ3JuLtq1aYULO7bDjZcPwCUXdIIfcmA0mBAdEoro4HBEBIWgSaMGiIqMQEFRPnJzcmHKL0Bedi6KTGb4BAfhVLH1fK1tW4no3LFn7368//FUzFvomN0ICw3BkMGX4PEH70GHuJoP8dkEBUqY7x5VdW/XP/Gqm90PpnypxqVN5km33HWF14J8Hdq3xc2jhmP0qBFVGuS6so7aJn2qu5NdzWG6nGzXIT5Rbb948tCDDz6Ijz76CO+++y52796NN998E/PmzcOkSZP0JeqO9C2rVNeugxz649W+NsTGav9PRIpdsbwx/coW9XZcTrrOvRmj7IfXl8lXGTvShW3p/EmLtKZjiU7LVJH6ouj0Ba1WZGhfBqX74RTMf+U2u8fjLryzXuYfRoZ9BjZmFAZ1t6su6d8O/Ye20EaKsDfRO9UKDQYDYqKjEKh96Ep/6vaki25pi46KVMtVRvyug0CbDh6Ve293rfVXZ/tWlP6qzNpmDfhZq/bJr9euQlWjdZuO7cDtMydi+QH1QJex7vBmvPXnFPWrnmcumcAQHxERERERERERERE5kOonvj4+2L5zt/ohfEU2bdkOs8WCDnFtK/039sqIatMBUTiI7SUd7+jFDZx7zHH1N/uoCBVMS0uXszHaOpyr+CkRaBKpLXO88uclVEDOw3MFFSrvXI+7yoQ26n66rp5X6futqgLq5y5UN8VlexiKinTcRnXOJFJ7HBxvwImL++auByMiqhI/P2s3kMWmIpzKykRhfh4MKFaXgQH+yDiZij27duLo4UMwm4vQc0B/tOnaBf5hoSiyFCMjI137vDyJU9lZyCvMl5OpCAoNQ0GxBbmFhTBp660XGoSc3GycyjuFwLBg5JsLUaCtKzcvV9t3FCI7NwencrVxbf/ga/TTtsmIgvxCbStkS3xgNlkr8dm2lYjODf/E78cHU75QAb5xt4wqk90YMXQw2raWrEjtCgwMcKjMJ+FDWyU+mVeXeC3Id7aoFx6mj5V19FiC9uKr+AtOVR06dEQfKytc/7VUbfn222+1HXwGpkyZgpkzZ2LdunX4+OOP0bx5c32JuiPl0FZg6xTcXRI204fnFutLVEY7jLR1m2sbnr+4pLiadOE76ob7sGLAZyXz3xyqz/QC6xfFPo6/fqol1ld+C4x45EW88lLZ4QLJP9rERmhfEx0Z/Z1bTl/qyXQ0iInWDi7N2LBpG7769gf1BwaZbtggBidPVvIboq1kfyfPq4NGN9ZeDelJsO/8WsJ8pZX75FdqGUjQvoM7fwH2RKh/iHZAnYd//f051h7erLdarTuyBW/9NUUbK8aTg+7FBS16WGcQEREREREREREREenCw+uhR7euyMw6hSX/W6Yq7rmTnJqGpSvWqC4VBw3sq7dWk6iW6BoJ7JOwmKhqcQNVtU56y7H9wN42zMSyKlVdkIBcJC6WqnLekJZUUgyg8lrhOltXtfr9KuklyNP7rbrf1doXACNt5y5UF8DOItHEoTHdWrFPD00SUe2R7mxFaIC/9pkeCoPBglOnMmAxF+LY0UPYtXsHDh7aj/oxUbjk0kEI1T73k5KT4RsQiPTsbBgCAxFQLxRmHx+cPJWpwnpmWNC0SRPUCwtDQtIJHElMgtlolFKsiGjcCKHaugK02/INCkCRD5CSmYXDx4/j6PEkJJ9MQ6HZjOzcPPj5+cNo1AY9emLbViI6+0mIb/KnX6h8xu2jr0ffC87X59DpYJDPSf2oaH2sLOkjeffuPfqU923cvEkfKys6unoPkY3+2k5Z07adUxk7XWJiIp5++mk1Ll3rSrBv7ty5SElx34WsbV22dVeWtTJe5cW07AZ0m4Cp9uG7kuFZ9PcoTxaLmIqW2zsDkxZ1w8Spsxy75/Ua/ZdUlQiVVVVRoae/RstFRNNO6Nyl7NAkVF9EFNmCf6VSDu1Sl04B7NOSevIksrNz8dm0r/H3yjWIqR+NpctXq+kc7cAxpdJBPvky7VSy3xv07nqrst64Bq3w/BUPqzLUb/81BRuObVftm7TLd+xCfP1a9lLtRERERERERERERETO+vbppXp/2rl7L2bOnY+srFP6nFIbN2/HNzPnwGwyacsGV/n8juf0Llj371HV5lS3uhVWf3OkfkCvB83aXmP/I3u74drKnWdJW78G+7xZZEFVpzsd2uM0znpfxg+IVMG9adJtrkf3Ox1rf5GiEUO0NsfucCsWiShvPQZEdNokIOcPP5gKzIioF4kG0Q2QmZ6FQwcOY++efQgLqYdevS5AQGAQfIsNqvvbU6dOwS8gCHlFJpjgg+Dweiq4F+jvj2KLGUkJCTiZnKJ93gfALzgE2UUWhMQ0QL6vDwp8DMiHGWY/HxgCAmHW2sxamwkGFGjrKzIVqwpcRmMAiot9AJMFfn5ePBFMRHXakWOJqntaCfEFaJ8pa9Zvwjv//qzCQYJ/h48c09dSc/Ly8/H+x9NwSLvtLp3aq0HGpa2goEBfqm5gkM9JcEgwYssJkC36tSpV3SqWl5eHv/5aqk+VFRfnOmDnLVIaXXasLVu21Fsc1a9fH1dddRVuueUWJCcnqy52FyxYoKr0uSPrknWeXtl1x65wxd5V5T8HKgC4dRV2eZBN+25V2ULkav3dWiJGn66ceOyUrnW9QH1RjOyLQV4MlUXW11/bew8h2ToGFMZj5aLD+oQ7EYjtIo9ICuZ/u6z0ukoK1q1L1Md1u37Gyr12Ub7kZVj4u0y3RY8474Qe5ReDaekZqmx+q5bNcM8dYzDsqsvVpUyny7y0jHJ/WeisMt3qWlnL/Jd/He1L8orKrtdRt9hOKqwn3ee+9cdHmLVlAd7QLk3aAfbDA+5kiI+IiIiIiIiIiIiIyhUUGIDbbxmFhjH1cezYcXz2xTf4ZOoMfDvrJ3wxYyYmf/Q5/rd0ueoaMSQ4SIU/5vy4AAUFhfoaqonqWla61z2IpSvSXXQTq9GDfg7UD+htFeSsXcmWVPY7Lda/+3u1yILePa7L7nP1++FpFcKo3qMxsg30bnOrfr9VaFIfL4/qlcjV409ENc7f3x9B8AMKDchIycSxw8eRcOg4IkKj0KXjeWjZtDWK8s04cSwFR7XP1K3rNiIrLRN52bkoNkGbVwSDxQA/gwHBvkaE+PohLDgYDRo2RFT9GBRYtNuIiET3PgPgFxyKNG0/kJqehqysTKRlZMJS7It69SIRGVEfAQHBOJWVjYK8Ivho7TAVI8xXKvNVdwCciOqKpBMpKswrCgoLsVf73PFkkCp+maey1fVqigrxfTQVBw4dQaf27fDQPWPVIOPS9u6Hn9epMJ/XgnzLV61zKttc+WGFto66oEOHDvpYWRs3bsKGDe4r51XVtC++Ul+K3OncqZM+Vn0kdHfZ5VfAx6fsy6JRo0bo2bMnjh8/jqeeegqpqalo1859LEnWccXgK08vdR/XD2OwFZM/XqZ9vdGpKnj6uDtxwzGxm3a9u2dgr96kZCzDvKVO6b5FL2Ce3ULpS99S6x9zY2n3uW41aIne2vat2FK6zr3TX8B3+vjpsX5RjOrc8jR/peUkrjdGyPFT/Bd4adKH+PbbafjX/dNwMKbiPslbXf0wxsRqD+PWKZg0/i189e1MLJz+IV4f+xDe2ZWjL6VrEYydbzyIf32uL/PkFKwqAtoNH4v+DfRlvKB/n964ffQNGHrV5QgNDVFtcinT0j6w34WVCJJaKyBGNXYXNDyIn35x/DIc/4uUp3csrx//y2KHL7TWZVphZCV/8eesb8ueeOyie2AutmDW5p/V5YMDxuGSttXctQERERERERERERERnRXq1QvDrTdfj74X9kL9+lHIyc5B4vEknExLR5HJhOjoSIy+YSTuHHsLGsTUR1JyCubOX1RykrZ6tELXNsC+FWvK6THnIObZ/31euopdID+gt1XNs1X2W2ytVGfH+W/2Fdq3BstwGkUWXIb2WuG6a1ohbcVMx+3T70fUgKvcV//TlvnJ4T7Zn8vw5H7rVfXsw3iyzhWOy7sT1fsqvVtf53MflXxciei0BQcHoTAjAzs37cLOjbuQdOgEQgPqAYU+qBcUiWD/MBzenwCDyQDfAgtiI2NgyTPDaDCiqMCEYjNgKSiCT5EF+ZmZyEpJRmbaSRw5egSncnNR7B+EEO06WXmFKPbxh0X76C/Wli/KyUVhbj4KcguRpw2yPgkGZqZlISUpFYcPHsXe3fEIMpsREhKsby0Rne0u6NkNN4y4Wo37G4144cmHMO2jtyscPpv8Js7r7D6T5W0S4nvng89U9T0J7j0y4Q5V4VQGGZc2mVeXwny+Ex9/4mV9vIzMUzkIr2cNx1TkyNEEHEtwqspVSU2bxqJFsyb6VPkqs22VVVhUiDVr1upTZa1YuRLdu3fTvtC474a3Mn74YQ5+XfybPlVWYGAg7r33bn2q+vj6+qnbSktLw4ED2rcAO1KF7/fff4dZ2wFLFb5FixZh3759bqudDRlyNS697DJERER43A9+/qEVWLA+DJfd2B3WRzYaHQfH4ODUKfhszlzMliFoLOaOC8TsP0+h77UD0TxQrngYKxdsQPRlo9BRXTEQzS8ahe65/4dJb+jXk2FBDEY/1Udfdxr2zPkL573xGRrMHofHPrIus2B9I0yc+m8M9uRlGNgSA7rn4IP/+6DkNhqNm4XRQXPxv6zeuPailgjSFju5xXHaI2l78NuaHHS9pDeaenwlZ/k4+vdCrDnRqPSx8o1BhwtjkH9gF7bEH0BSkg/i7nkMoxrvwqL1J9DkgmEY0FJbUH9MExvZbbev9nwM7IUmuYlIOLQDa3b8gy0JZjTrfh3uHX0hGtg9F4ktb8KLz56Po7/NxZw1B5Af3BaXjX8KE65t4/ljUAEJ6DXTPjNsAT5n0t60SWN9ygNph7By6zFEdbsIHV1+Yc7A7l8XY8Ga9VipD3u0L/PjJ1yBdnZ3Ku2fJZj3q90yUUPw1Lje+uvu9LSIbIKo4AjVve6EfrdhcNxAfQ4RERERERERERERnUuqep5MCjHIubge3bqg+3ld0KZ1C/Q6vzsG9LsQF/bqoa0zDEY/P7SPa4vDh4/i+IlkJCUlo0NcO+26Ve2BKQO71+xDXvOuOL9J2bME0TF+2vx4pLXpi2vbO5ZZSPvH+nf28Y3X4KPZy61/e996DEEDRuOhS+3OAUS1Q//2fti0YDH+0P8+L0Ny5yG4wsVtCpnfv29vfcoqfsUSJLceiP5uriNcXa9UJBr67cPKFdbb3+3X1nqfXW2fdj+aXHM/xnR1f1vIS8JKh/u0D9Du+/je+uPkwf2Obt8Wfv8sx29/6fOPNMOYm5rhkDyO7Xtbz4lot7Npayoadu/qdF4qCE2790aDFOdzH/pz5e56qt1u/URngTK1Q+wa5Jy5nDWXFjl9LuPS1rC+994APtrt5WRna5/JJ1GYWwCYzCjKL4ApLx/ZGZnwM/ggol448rJPISIsGC0aNkBuagqKtGlfQzHMpiIU+xSr6xjMFkTJeXx/I4zBQcgxWeBfLxJtu/bAgYRkHE1MRkGRGf6+vgg0+MFQCFhMxcjLyUPSsUSkn0jDP1t34rhUBTySAHNRIS7T9iH1o6NdFg06Gy1Y/AfmLfwNPXt0VfvNM4lUIHvz/U/QVjsGiIwI11uJKq9t65YICPDH9l3/YP2mbSqgJz8cqUvkvbpxy3Z069IRD9071iG/JJ9XEkiUrn6lWqDkoTp3qN7eUj1hOJyQ5LbfySPah3TzJl4sn+VF1b1td9x5d7kV8sSdd96Bq4dcqU9VXtrJdHzx5VdYu678SoRDtNu4S7utmpCVeQoJxxMx8eGHtPufpbdWTlRUFD748GPE1I9BvXDP36RSDe/uFf0w9XkPquGdtnjMu+EF4I1ZGFn778My4n/5FPMwBE+dVhW3Q1h4/zOYntINE6c+i/7e6dG2fBnL8PbdU7C+24Qaeh6JiIiIiIiIiIiIiM49NXEOLz+/ALN//EVV5ju/R1dcPqiaflwulelm7EHXsaPLVKbzzvkS16S3sKcm3q9PadR2JOHiiUPgvk8qF9cjqoCbuihUB5UpYqNPy4Xk9lRgz7aMtUFNW8wWWFCsgnwWizatjZstFnRt38a6rJccPZaAg0eP4+DhY9YGbVN8tFv19zciOzsbAQEBKlQTEOiH2Mh6CCrMxfG9O3EgfhuMRgv8jAYYte31LdK2tdgAs68BecU+yCgCopq3Rcsu5yPf4IfEtHSYtdVLASSj0R85uWbsO3IE8doAHx8UZucisNgPvhbJE1owdPBFGH75ADRr6lnRJiHBmilffKtPOZpw163o2b2rPmUl4bPJn3yBcWNGlZlXGyQctHPPXjwy4U4EBUrFG8/JdX/+dYk+ZdX7/PNw7x1j1Ph/vvoO6RmZVVq3J+SxlMdeHufWLZvrrRWT7ZKwljtRkRF49rH7GQ48By1eshQ//rIY9cJC8e5rkzwu9lUTTqSk4u+V63DdNVe63S4J8M1b+LsKIsa19f4xZ2WdG3HoKrji8kv1MSk1Xg/Tv5qKN994DZ3surj98suvcMuY2/HBvz/C6jVrsXPHbm0H6T78l3wiRS3zy8JFeO65F3HPfRMqDPGJIUOu0seqX1i9UERHR+HDjz5B7wsu0Fs917NnL7w/+d/aesLUuioj5dBWoGksw1/aF8Vl+4G2nU7zA+JYPLakaJcxnRBbEyE+IiIiIiIiIiIiIiI6awQGBuCmUcMR164NGsbE6K3eF79iNdIiO6BdDVduaxrbGAX5hfqUvh1ttO3Qp12R5eV6RES1ITgoCI3qRyA0oFgbLAgPNiBYuwz2tyAq3B/1Qg0wFWXDZLDgyInj8A+vhzbdzkOXCy+AITQEebAgt9gEs78BxUYfmA3FyMrJRlBIKBo0bAyLxYCifBMCYIQhtxABeSYEFwENQiPQrklL1PMLxKnkdBUEzM3IQpG2jI8FuKj3eQgJrny3uhJSm/T4Aw7dbsr09O/m4qkX31JhtrOJdPH5f5M/VQHAj959xeE+S8+JdZ0EDW3bLGEtCe4Nv/qKkrZ3Xn2WIb5z1JArBuGm64ahQ1wb1bNiXdIwpr7qAri8cKHMGzV8SJ0I8QkG+dy4+uohJR+WWVlZePW1txAdFY3nJz2D8847T7WLwsJCrFixEu+/PxkzvvkGoaHuK9D5Bxjx1jtv4+sZ3+CfvXv11vL17XMhYhvX3BcCeVPF1K+Pho0a4qmnn8UDDz6Efv0HoGmzZvoSZcm8fv364/4HHsIzk55DgwYN1Doq9QbNWIZ5i4Ax/cr7enSOiOqB8RPvx3Vt9ekqev25L7BFO8jqd8vFqBsfN0REREREREREREREdCaRyk4jhl2Jrp076C1eZituMKAHaroH1vr1o7Hrn9Lzde2uvb/Cyn+yvFyPiKg2REZGqKp7bVo1R0iQL4ICDQgLMSIk2A+h2uBrMCEyIhiSrgsMC8WxlGSY/I1o2akLBgwegvMHXoyGrdvBFBiCXIMPsgpMCAiLQIeu3dG0RSuYikxISzmJguxc+JktaBQVjZh69RDmZ0SjyEhc0rcfooKCUZCVA2OxATCbMOzyAQjXbivCSwEuqRD3zmvPIioyXFWAk/CbrV3Cb3WhGl9V7doTj4TEE7hx5DCHSnty38aOvl6fsgbmnpl4f7VU4yOqLldcMhD3jLvlnOleuzrxEXQjIiICo2++SZ8CDhw4gP979z34a19YXnxhElq2bKHPKXXZpZfoY67JOvv26aNPVUyChHfcMU6fqjkSwAsPr4eoqEhcMfhKTHz8CUz+4EPM+XGey0HmTXziSQy+8kp1HdlJexri2zv9Zoy6QRvunoK4OtrN7ZnqkLEthj7wNh4cwHJ8RERERERERERERERUh0g3tpM/xTszViPqmtMvblAVPbp1we498di8dQcK7SrzuSLzZTlZXq5HRFQbJCAj5+LD6kXC39cffvBFgJ8RBoMP/LTLkOBQBPj7I1IbAootKDKbceREOo6m5cEY3gyhDTvi/EHX4/LRE9Dzmltx4cjbcfENYxHVKg45JjMyszJQbM5DZFggWrZoivDIMFhQCF+/fAT5FaBJVCBGXjkIjSKD4OdThPDwQFwysJcKGHozvCMBNgkFSejteFKy3nrmSzx+AkFBgaxaR0TlMhxOSHLq6L3UkYRkNG/SQJ+qW2pq2556epIK8dncfvttuPaaocjNycX3M2dh46bNMJmKENcuDnfddYcKspXn119/w5dfTdenyjf+rjtx1VWD9anaZdZ23CZtR+8cz5MXj5+vr7bzrjt9XBMREREREREREREREZ3N6vI5vDNJamoaNm/biZTUVBxLOK63ltW0aWPERNdHj/M6o379mq4dSGe6Yrdn46muKXZ+svRpuZA6NjK/ZBlrg5q2mC2woFidS7dYtGlt3GyxoGv7NtZlvUhu7+ixBBTk5eBEwlG1HVIcz+Djo4rt2AruSLBOli0oKEBubi78/f21z7Kman5+fj7Cw8O16xUjOTkFfn5+yMjIRGhImCo25OPji+zsHK0tAyZzEQy+BgQEBcJs9tHmh2DNmvXYvHU77rhtNDp1aIfmzZqq26yMjVu2qy50Jz5wl6pI50y61X3rX59iYN/euGbI5Thw6Agmf/IFxo0ZpYJwtnH7Cn1SwW//wSN49rH7S8Jycr0pX3yLCXfdqm5nweI/8POvS9Q8IaFB+22Q+dL17djRozD50y+Qlp6h2nuff56qlGdjW+6RCXeWVM6T21+/aZvqbla22ZntPgy+dKDL+TayHrn/tnV7uk3C9rjZlpHub+X2fl60pOR+2j8mS/5arrbZtqz9Y1ce5+fHnvNj7Lxe23WlK9YNm7eV3H7b1i3UfZbKhbJ9NrKdZ3IlRqLK8p34+BMv6+Nl5BcWIjQ4SJ+qW2pq27r36IZly5arLnRFfPx+DBw4AOHah8z55/fAsKFX49prhqF//74ICqp4exITErFu/Xp9yj25jVvHjNanap/s6P38rIE9+0HaWBqTiIiIiIiIiIiIiIio5tTlc3hnkmDtMWzTqgW6du6I/n17ux1kviwnyxPRuUnPx5Wya1ABP+1SWrRRNS5tDash+CtBvIDAAOTm5auQV35+Hnx85by9X8kgYTy5fTmPL13xynRRURFOnjyp1iG5BhnPOpWFsLB6ajo0NFRbtw9ycnKQlpaG9PR0FQIUfkZfSQpqn4HB2nJh6rJ1i2bofl5nNGrUUN1mZUmlvS3bd6HvBee7DY5t27EbJpMJvXqcp8Jfa9Zv1m6zkwqj7fonXrXJPCFd8C5dsQYJx0+oQFistl1ixer1yNbu0+WXDFDhxDUbNqtQ2fXXDsG1V1+BowmJWPLXCrUeeTz37juA1es2Yat227KchM26dGqPX379A2azGe3btVbrleVSUk+iT+8eMGr3X8J3O3btxVOP3KvaXJH7KeuQkNuKNRtKbtOZhBzz8wtK1u3pNklA7633P8WlF/XFkw/fq+6fhOgkMCnrsT3W8rjJ4/LX8tUqdHjfnWNwxaUD1eMtt92zR1e1fHlk+2QdLZo1Kbl9eQ7e/+hz/BN/AK8+95jaTtkG2a4fflqIDnFt1O3brrt81bqS25f78/ufy7Fh83b1nLwy6TH1HMnr/cdffiu5LtG5oNwEltlSjMLCIn2q7pBtkiR7TYipXx8vPP+sPgXk5ubghRdfxpYt1lRwZRl8nPfwZXXu1AmPPPygPkVERERERERERERERERUqq6ewyMiouoXGBCABjH14RsQhLDwcPj6Wovv2CrySYhPAnwSuJOQngT5oqKiEBYWhqSkJBw5cgSRkZEqBLZ7924kJiYiMzMTWVlZqsCRrCsiIgL169dHcFAwjEZ/+KggX5A27ou2bVqid68eahtkW2qahN86d4hT1fcklCYkGCjhRgnxSRe2QoJlUslOlpXrSBBMKtjZh+ekC195vGzrETJfwmW24JgEB7t0ilPrknU6s4X43FUXtCfV6yY9/gDytG198oU38dSLbznctjuebJNU15M2+wp5UslOwnKuSLut0p2s/3S7M5ZKemnpmWWq+t0++no0iW2ots+eVBS03b7t/shjcePIYSXP0YC+vVV3xDt371XTROeCcoN8AUY/FBaZ9Km6Q7bJX9u2mtKmTWu88vJLagcnUlJS8Pobb+L2sXfiyacn4cWXXsV99z2A3JwcNb88xRUEELt07oRnnn5SnyIiIiIiIiIiIiIiIiJyVFfP4RERUc0ICQlBdHQUQsIiYfQPUGE0i8WiBuk6VyrZySDTknOQYJ+E+Zo1a6bGJcAn2rVrp6rvHTt2TFXiS01N1S7TVSZCqvPVq1cPDWJi0KxJEwRJODAoAP5+voipH622obZ07hjnEMCToFeTxg1VaM8WbpPKbxIsi9Xa7UnVufEPPa2GN9//RK3DPkwnobPGjRy7r5cKf7IuWac96UbW0xCfjSz30buvlAT6XnzjX6pqXXkq2ibZfgk22ioR2nO+/yIwMEA9hvZs4Tv7x6IypJvcNq2aO4T4hITynIOXwlZN0Ua2XUJ7ztcnOteUG+QL0j6E8wusXcrWJbJNwdobuCZ17twRb77+mtpR2Uhf8gcPHMCuXbuQqpehrYi52KKPlTVgQH+8/PKLCGJZbiIiIiIiIiIiIiIiInKjrp7DIyKimhMRHo7o+tEIj4xBTINGKrBn61pXqu3ZAn3Z2dk4deoUMjIy1HyptNewYUMV4IuPj0fz5s3RuHFjGI1GxMbGom3btujcubMalwp9yUkpSE9LR0hQMHy1fzHR9RFul5uoDrYQnnPYy0ZCbdFRESrAZ6u8J8tKOO1kWoaqKmcLx9kCdjL90JMvqW5e331tEqZ99LYK09mqv1XWvgOHVXewgy8d6HGIz55c553XnlUhvdnzFrqs9ucpCchJKNBVaK8myLZXNQBIRI7KDfIFBwaosqlZ2bl6S+2TbZFtCgr011tqTvMWzfDB5PdwySWD9JbKs2g7TGdSwvbhBx/Ao488pLcQERERERERERERERERuVYXz+EREVHNqxcWhsaNGsLgY0S9epHw9/dXgxQoCg0NVVXrpNvcJUuW4Pfff8fOnTuxefNmbNy4UQX9tm7dilWrVqlqfDExMWrfIiT4J4WNpIpfq1at0LRJM63VV7utRggLC1XLVCfnEJ4zCd9J5TYJ8B08dFR1qyvL2gJ+EiqzrxAnQTMJy0n3re+8+qxXqr5JN77jxtyAn39doirzVYU3urStC2zPBxGdvnKDfCIqIgyFhUV14otA1qlcFBWZ1DbVFtnhPXD/fXjj9VfRs+f5equNQb90z9evtEtg6Vf+upHD8cnHH+KiiwfqrURERERERERERERERETlq0vn8IiIqPYEBQUhtnEj+BoDEBwaAV9fo6qkZzAYVFEhqbZ33XXXYeTIkejWrRt69OiBvn37omvXrlrbCFx11VVo0qQJsrKysH37dtWtrlTnk65zZZCuew0+vmjaJFZV+6tuEuKb/t1cDOzbu9xwmFTgk6p96zdvU93qyrK2QNny1etVmM9dRT8bW0W/qurZvQsm3HXraYX5xOl2KSsBRqnsJ+FFZ67aqoN0jevcfa6wVUx01e0uEZVVYZBP1I8Kh8lkRmpaFrJz8tSXgpoityW3mXIyEyazGdGR1Vui1VPt28fh2WeewoyvpuG+e+/GNdcMRXBIsD7XvbZtWmPY0KsxadIzmDb1M9xyy2gEsytdIiIiIiIiIiIiIiIiqqTaPIdHRER1h1Thk6CdFBPyDwxBWL1oFcCTqnrSva6QinsBAQGqUp8MRUVFMBr9VeBPutyNjo7GgAEDEBkZicCgINQLj4CPr5+2znC1blmmukkY7s33P1Hd1V4z5HK91TWpwBcYGIAdu/5xCOzJeEJiUkmVPmEL+NkHzSQwKF3jnq6e3bti+NVXVBjmk3nO8z0NLVbEVtlv/aZtDrexcct21VYTLr9kAKIiw/HWvz51CPN9PfNHFbi8ceQwvaXqJBT4f5M/VYMtgCn3cfxDT6tLIbf91Itv4T9ffaemic40hsMJScX6eIXy8gu0D7sCFBaZ4OtjQH5B9X4ZCAzwh9ligb/RTyWQg2uhO10iIiIiIiIiIiIiIiKiuqymz+ERkeeKtX90ZpBuaO3ZpouLDTBI53zadMky0iDT2j+L2aIuZRGLBfDxNSAwIAD9e3W1LlvDzGYzMjOzkHXqlLY9FrVfsFhMWrsJRj8/bbO1jdQUFBWoHhGlop+vr5+2/b5aq4/KaEgXu9Jtr4T4bN3tepOErqZ88a0+VUq6q31kwp0qmGZPAm+TP/kC48aMUsE5GwlrSTjv2cfuLwnCSZBLwmQSKrNflwS//j3lS+w7cFhNy21dO+QKtR229UoITqrHOW+DtEuVP9vtuFpO2iTM5+4+2OY7k4p+zvdJ7oNtHZ5uk3B+XHuff54KNkpYcOIDd6lgozyWsozcrn3Xxe4eY1dsj7EEEJ0Dl7L99uFB58fDdt2brhvmcDuu7o/z7dieQ2Fbp+0+2x5H23WkAuC9d4xRyxKdSSoV5CMiIiIiIiIiIiIiIiIiIiLPOGXDqA5zDvLZnjy5sOb2XAT5tEGCfBLlswb5tGltXMJwXdu3sS5bi/Lz85GTk4scu8p87kjFvZDgYISEBNdIF7pUMyTo9sNPCx0CckRUdzHIR0REREREREREREREREREVA1suS+q+87GIJ892Vap1idV+iz6/fDR7odU3PP19dXuktwDOts4V/gjorrN+zVQiYiIiIiIiIiIiIiIiIiIiKjOkKCeVN3z9/dXXf/KIOPSxhDfmU+6ppXqe/akbceuvbhx5DCG+IjOEKzIR0REREREREREREREREREVA1sBdyo7jvbK/LR2U1CfFO++FafsoqKjGCXukRnGAb5iIiIiIiIiIiIiIiIiIiIqoEt90V1H4N8RERU29i1LhEREREREREREREREREREREREVEtYpCPiIiIiIiIiIiIiIiIiIiIiIiIqBYxyEdERERERERERERERERERERERERUixjkIyIiIiIiIiIiIiIiIiIiIiIiIqpFDPIRERERERERERERERERERERERER1SIG+YiIiIiIiIiIiIiIiIiIiIiIiIhqEYN8RERERERERERERERERERERERERLWIQT4iIiIiIiIiIiIiIiIiIiIiIiKiWsQgHxEREREREREREREREREREREREVEtYpCPiIiIiIiIiIiIiIiIiIiIiIiIqBYxyEdERERERERERERERERERERERERUixjkIyIiIiIiIiIiIiIiIiIiIiIiIqpFDPIRERERERERERERERERERERERER1SIG+YiIiIiIiIiIiIiIiIiIiIiIiIhqEYN8RERERERERERERERERERERERERLWIQT4iIiIiIiIiIiIiIiIiIiIiIiKiWsQgHxEREREREREREREREREREREREVEtYpCPiIiIiIiIiIiIiIiIiIiIiIiIqBYxyEdERERERERERERERERERERERERUixjkIyIiIiIiIiIiIiIiIiIiIiIiIqpFDPIRERERERERERERERERERERERER1SIG+YiIiIiIiIiIiIiIiIiIiIiIiIhqEYN8RERERERERERERERERERERERERLXIcDghqVgfJ6LTVFxcDLPZApPJDIs2rrWoNk8YDAZ16WPwgZ+fL3x9fUraiM5m7t43fE8QEVFdwv0VEdU0d587gp89REREREREZw79qxydAWzfu0vo03IhX7tlfsky1gY1bdG+v1u07+3yzdxi0aa1cbPFgq7t21iXJSIi8hCDfEReIAdohUUmmEwmvcU7jH5GGI2+PCFDZ6WqvG/4niAioprG/RUR1bSqfr/kZw8REREREVHdpH3NozOEfCd3oE/LhTW3xyAfERFVLwb5ziFy0LD/wCEkJacgWRvkUjRq0AANG9RH44YxaN26Jf/oX0lmkxkFhYXa4Vj1kGcjwD8Avn5nXk/YRUUmFBQUIDQ0RG8hsjqd982Z/J4gOl3cl58dUlPT8dsffyHxeJLeUjVNYhtjyBWDEBUVqbeQt50r+6v0jEws/v1PHEs4rqabN2uCq6+4FPXCw9Q0EdWc0/1+yWNlIiIiIiKiuseW+6K6j0E+IiKqbQzynSMyMrLwy+LfkZSUrLe4JieEr7nqcp6085BUSSgqKtKnqpe/vz+Mfr76VO0rLCzCnr37sOeffagfHYUunTugQUy0Ptca4pszbwFaNG+K/n16661E3nvf1JX3hLwX1qzbiMSkE9rXsop3qQbtX2zjRuh7QU8YjX56K1HFuC8/e0z96nukZ2ToU6cnOjoSd90+Wp8ibzrb9lflmb/wv9gbv1+fsuoQ1xbXDh2sT9GZSP6IvGXbTsTvOwhzsVlvLWWAD1o0a4ILe/WAjy9DX3WBN79fngmfPUREREREROcKW+6L6j4G+YiIqLYxyHcOkJM3fy5bqbrladYsFp3i2iEqKgrRURFq/sm0DKSlpWHnP3tx7NhxFSy5bNBAnNelo5pPrpn0Sgk1KcDfCD+/uhH8+WXRf7Fnb+kJ37CwMNwzboyq/FCkvdZm/7gACYnH0b9vbwb5qIS33zd14T0xa+7POHI0QZ/yXKuWzXHDyGH6FFH5uC8/u7wz+VOEhARjwvix8PGRP+1YzZw7H0ePJuLeO29DeAVBTPlj0JRpM5CTk4unJt6vt5K3nI37K3fkD43//mQazMUWTHzgHtX2r4/+Az9fXzz64N1qms5MK9esx8rV6/Up91o0a4pRI4Zqx/EMfdWm6vh+WZc/e4iIiIiIiM4lttwX1X0M8hERUW3znfj4Ey/r416XejINQUGB2j6s9ASlkJ3XieTUM7C7zQysfH0cHjvQDTd2L608Vpdt3roDS/78G74+Prhs0ABcfslANGrUAOH1wmA0GtUg440aNkCXTh0QHBSEg4ePIX7fAYSGBKt2KstisiC/hkN8wqwdBPr5+MJgd9K/Npi1+//fP5bC6O+PIVdciiJTkfaeTlGV+aIiIjBn/oKSrtmysk5h34FDKlgiW12nuv/LWIa3b3sGH+yNwRUXtUSQ1rR3+s249425MHYfhY5nxtv8jFEd75u68J7475Kl8A/wx6jhQ9G1SwdVnbK8oXPH9th38BDS0zPR78JeKCwqQuLxZAT6B8CPJ9DJBe7Lzz4SrgnWjpF79+ymt1jt2LVH7Td79eiGwMAAvdU1Ob7evGU7CgoKVWievOds3V/ZpKSmYfvO3Ug6kaLtgwqxfNU6dRzXqkVzbR8Vp15bxxKP42RaOtIzM+GvfcbsO3AYR44lIDAgEMHBcsREZ4I1azchIzMLV11xCXppnzeujktk/tFjidqxyAm0j2uj9jV1jn7MnnIWH59X1/fLuvTZQ0RERERERHSmc4o8ODSogJ92KS2S85NxaWtYP0pmExEReaxa/kovOyUJ+Xz59Szs3L1Xby21acs2fP39HLVMSWLdK+Ix74abMcp5mB6vzz+3pGdk4q+/V8Ho54ext96AHt26lAlV2pN553fvinFjblDXkco/mZlZ+tzKSV/6lvbYz0DZZ//sUGgy6WM1T7pbqm3yMjJr711f7XXSvFkThIdZqwbZzvvZv68zs06pamXbdu7Gj78s1i736HMqz/q6cnx/jx//ND6evgoJNZ+rpEqqrvdNbb8n5BdVgf7+qhvp5k2bVDjIcrK82Wzt4k72hTPnzMMnU6eX6dbQI3tnlHlf2IZ5rj6E5WS4u3l1lARsR72+DOn69LmkNvflDmyvM28fU52Br8ezgpvPjbeXeqe7X5sz9XjwbN1fiX/27sdX38zC3yvWaJ8PK1QF5T3/xCMoMMihgvIAbTwgMAC7tO9ys39aoJaV63z5zUzs3XdAX6oqXH1fewsrvfvSc3QOf87YutOVinuujklkuOG6a1SX7IePHlOvB6ms7R1uvpufxd8RT0d1fr+sC589RERERERERFT7LBYLNm/biXkL/4t/T/kSj016TQ3//uwrzNfatm7f5eXsBhERVYXXg3wqxLdkqfqgDw8PR8vmzfQ5peLattbm1VPLyLLe2CGok/w3vAC8MQtz59gNUyfgXKxRIo/pgl9/V13wXXrJQERFel4FLToqEpdc3F+dxFn03/9xh+1EHg+zxXpSrDw5+xdh6jMPYOzYOzB2/CP4dOEe5OjzbDJ3ly7z0EPvY+Ga46gojya3LVUta5OPrw9aae/tnOxsfPL5V9iyfadqDwoOUl3r3jDiGjRt2li1SZWgJx+dgGuvvlJN79xd9SBfieBYdGrRQg0xRYexdNGHeOTJGdjLMN/pyT6Eld9+iNcnr/J6YMqT903OkbVY+O9JeFzeM2MfwHufLsVhD57TuvCeOB3tWrdS7xf5vF7y13K9tbK6YeLUsvu/vc/xhPmZrC7ty/euWoze3boBi1ZV+fWkjtXO0R9X1E1OnxvaZwY+ue+MeI5UQLCawr2eHudZ5SJx+TS8NX4mPIlh1/b+Sioq/7F0OXx9fXHNkMHofl4X1c374MsH4a6xN6Nxo9LqnbGxjTD+9ltw5WUXq2V6dOuKYVddoaq1/fHXCrWuSlMB0rLf194cqs+vBHevgep8bZytJPR94/XWMF9C4nEvh/mA3g985vR8L8ak6g5vnmE8/tzZP9P63dJ+eG8FMvXZ7pzpx8pEREREREREdPqkl4433/8En0z9Gov++ye27/oHWaey1bB95x4s1No++nwG/m/yFNVTBxER1R6vBvnUCefFf6jKW2FhYbjlhuEIDQ3W55aqV0/mjVDLyLKLf//ztE4wywmbSYuG4M05szAyTm+0ibgYT49rp0+cOxISklR3WXLirVuXjnqr57qf11lVbpDuUY8nJeutJGxVtCqStHETwodOwDPPPI4Jl9TH7jlv472FR/S5QOHuGXj+/+YiscNobZmnMabnScyZ8hK+35SrL+GexeMTzNXn2qGDcV5n62tLunQcPvRKNGsSq6aNRj+HMJ9UiGof11qNZ2Vlq8vTcskEvPre22p4a8ZHmNjNCCQuxuylKfoCVCWJyzD551XYklOkN3hPxe+bTGyf/TX2GAfhFu398PCYDshZOwPvTdtUJgDrSl14T1RVh/ZttX3iSPU+ysmp+P3vMdn/zflMe38sxiT7UINqd7G/rMPixs3C3OcvRh3qmLtGJCZa9+WtXezLE7T9c3LKSX3KNdmXt2zWzAv78njsXNQNAx4chTFYjJ3eTIaega9Hb8nOzcXMufMdhuRk63P6y+Lfy8xzNcg6vEZ7Lu554PTCms4iBz2LuXPG4kx6ej07zivC4T+n4L0JD+DZaSuxpxK7zdrcX51ISVH7mWaxsejYoS0GX3YRbhg5DN27dlLhvlVrNuCnXxarQcalu/du2ueILHPFpQPRqWM7NGnSGNnZ2UhNS9PX6qkMrJy9GBj6Wpn3e9y4Z9E/Qp+oDufw54wrBw4dUc+xXNqoMN9116BZs1gV5pszz7thPntx417T9iVbsWILk3w2nn6/LMyRX7g0x9AJT6vvj2oY2QGedHZ9Jh8rExEREREREdHpWbpiDV58830cOnIMcW1b4babRuKpR+7DB2+9qAYZl7Z2bVpi/8HDeOGN97F89Xr92kREVNO8FuSzhfikayZriE+CeqH63LJkniwTEhKMHbv+UdetUpgvYxk+/2QrxrxxZp0krG6JSUnqsmeP89RlVfTs0VVdJh63rousijysQNLmxhdw48Au6NixC/qMGY8bmwMH9hwpqZhwfP86ZKELrhw5QFumA/rccguuQBH+2n1cX8I9k6n2KyrIyd1OnazvumZNm6B9XBuH7h5tYb6unTqo6ZJ5pxHadS0G/Udcrsa27DzkUeiLal7F7xsj2ox9F0/cPxg9tfdDz8EP4dbBRmStXYv9HuRU6sJ7om6KQP8bhwBbV2EXz5efcRL0/e/5Lvblh44ew4zvZuN/S1egsNB9iuj8Hl3U5ensy9OXzsV33fqhU0Q7dB4KfLeKVfW8wWwy4+jRRIehoKBAzTt+/ESZea4GWYc3RXbvh95IRMo5/Hnh2XFeLlL35KLDLc/j4cF6k4dqc38VHRkJf39/7fPjKDZs2qq3avcmNw/Tv/0BK1avw779B9Ug49Im82zWbdiMI0cTEBwchKioyibvUpCs3WTvljH6NNWWbTt2q+dYLu3JsfuoEcPQXH7Mdew45vy0oNz9S9XFoEE3fZQUT79f5mWmav+vhzbasbJ8f1RDm/rwt84uF4+ViYiIiIiIiM5Nfy1fjW9/mAeD9m/MjSPw5MP34uIBfVSgLzQ0RA0yLm0S6Ltl1HBIZf8Z38/FshVr9LUQEVFN8kqQTz7MbSE+CeZJQC88PEyf654sc8uNI9XJILmurKOyXb6kb1mF9d0mYFAlUnyqy6UbpLtB2+C620Hn5d52V+0rYxnetluuLnTnlKhX3qnvphu+jIwsLPlzuRrS0l1vbf3oaHXptSCf6k7L7nFyeNwzsPJ1+3nyeFvPIlufBxfPkVpf2W6ZrN0slw7znK5Y5vmv5PNVtWoGRhhVcUqjmhKNO16C1vgHe3Zbo305e7ZjDxrjhj7N1XR5zJbqqZDhbXJCUCpwVjvb2aucXNU1cclz7NQ9oK3d9tqqMtt7XnvtJGdswbxJd2rrLX2NFh5bhXnvPIYJ6jV2J559aRpWHnKMGOYcWoavJt2L8bLM2Mfw8cJDSCizffGYp9bh/Dq3tTu+Lyq+3RwkrJiBjx+R7dWXeUe7D7b333OLrYttnYK77deffQjrpr+HZ8dKmzbI9lay+mHF75tgxMQ4VnCt19ha0dETZ8p7olbE9XOsfKO/fh0+G8v9fBZlP6Ot7y+93UVXnOqz2OHz1f3nvFLONpRdl3C3TXbUfbW+fxz3Dc737/T3DdWhon25/ABi4+ZtmDrje+za4zpcd/r78gzsWrEVvQd0UxUR4/oNARbNddslYpnHUR5r/bmdtEhbYNELpe1yBVevR1Hm9eBmfy/PudNxWJnP+Apf37VDjplvvmG4w9Agpr6aJ92eOs9zNcg6qlPJY1zyGNo/drZ9Ueng/NhbXw9lH2/H96OL51+4eg1o+055ru/+ZKvdvsruteGF59qz47xw9Lz/cQwb2AaVjbPV5v4qINAfV142SI3/uWwlklOtVfUk1JeZdQotmzfDHbfdrAYZlzZb4O9EciqWLl+txi8fdJGq4FY51iDw+k9+9ug5cfsa0d/vZV4D5b02ynzOWF+7Mu34mVX2c0Y4f669vTTexb6v7PvB5eu6DjivS0e0bdNKXTqT5/WGEUNLKrPPmbewGsJ81lBnXKz9u8f58fPsvVv2uXF+Ass+L2WOFSr83Kho2yo4vvFA5b5fxiIiXB+tBB4rExEREREREZ17klNPYva8hfA3GvHSM4/gkoF9HYqyOJN5l17cTy0r1/nhp4VIPVnZnjms0tMzcPsd49GybceSYciwEdh/4KC+BBERueOVIN+qtRtUEC84KAijbxjuUYjPJjIiXLvOCHVdWcfqdRv0OZ6wnlxG01gPu9uz/pH97k9iVTe8c/XhzaGLMcnpxI2cPHJc7jMMWPECJlvPZZWSP/zfPQVxb5QuNxFTcHctBwCkCz0VonLzXPz590ps3rpdDUuXu07TR0TUg6+fLxKOe6FrXXmcnkvExKm2x0ked32eel7uw+Smr5XMmzt1QhUqLFqf30nHJmCqbT1vDMF3z5WeSJOTPc7P68Sm1nmecn94404RMrctwn/3NMYNI8+H7byLf5tReGJCD/w15VGMHXsH7n//d8SOfwzD2pSG/dyp/Dac3XKSraGyiJaefhZ4yyGs/Pj/8F18acm4Qu21/tLED7EouSX6Dx+OccP7IeLQH5j85AtYeMi2zEy8/uQULNKuF9ztcoy7ohMK57+Kj+clWheoAk9u9+D8F/DIvxdji7E7RsgyQ7sjZOch7Z1jRMwF2nS/ttYFY7pZ5w/vhAjtPi587hm8s2grjN2HaG3DMaJ7MHYeqtwJykq/Zgv3Y+3vR4DWHdHYg5wK3xPlsVa+WX/ITfiy3M9nISewtc9o2H22zpFu8Sqjgs/5CrfBiQplOK1PtklCYmX2v1sx+e6bsbOfbbmy3Q17Y99QHWRfLl+W3e3LbXKyc7Bw8RLMmvsLMjNP6a1Wckzm5+dX9X15xlas2NoNA7rrgQvnYKgd67ETyj6PcWNLx4fanjP3lZRVgMfp9TD1AajnsUwwRp7zj4F79OVkv7/+k/tKl6vsa6sG+fn6onnTJg6DBK1EbOOGZea5GmQd3qR+IINYxNjna47Nxdur+umPn/68yeN6wwvY+8BnJY+rvKehPfZlQjIOKj5WEyqc89xijCk5vpbXQGxJF6lTpQvgbrZ16N2yeum5ru79SW3vr6RL3V56lc+TepAvLcP6o5LePbsjpn6UGmRc2ObZ/mDXq0c3dGjfRo1XlrVLVfneVV7QqYLXiLvXQMtyXhtuyDo/1/Ztpa8X2V84hrQ8+04o+0mn94O2zXWBQf+6bykurfgm3bVfd+0QdemKfP+7Xg/zSTe7P/z0ixe72ZXn9wV8Z/9DPLVPd3z8rN/Pyw/zlXlu9M8g+9eWVJSF3eeILNNb22+ULFPR50aF21bB8Y2HPP1cSD2yQ/v/73hV++44dvwjeG/6CiTKr5g8wGNlIiIiIiIionOLFAL4z5ffoajIhJtHXYuGDTzvKaNxwwa48bphKCwqwrSvZ1W6V8UNGzehR+++ePjB+3Fo3+6S4frrRuhLeG7+zwsw6fmXkJ+fr7dUzemsx1vbQETkKa8E+Wx/FFYB7nJS3O5U8WqVt/dnTN46BG86nTyOGycn9bdi8nz9xGPGMsxb1A0Tp9ovF4H+zzsHFzKwcvZidVJ6ZMmC2nIPTkDvrVOwtLwzD9VM/apf26e627GazaW/+rcftyfXlTK7VatA5yg9MRFQ3fLpDZq4cbbH11qVYUy/dmpKibgYIweVc+bNFfX8as/bgxeXhrnixqqTMd/NtgY2Ug5pNzS0n+PzOs5uea/aj4VykmXsPXj4/QPo+PjTDiG9wv1z8d6Uzeg69HG89eG7eGZoa+ye9i8s3F9x1Qt2jGRThJxDS/CfTyUAHIsRA+xeQzVh1x/Y3OAZ/WSx9noujMeiDxYjvtsEvPnew7j11tEYdut4PP3KaLREIqb/vgWF2ut95fSfEQ8jhj73GT58frxa5rFpr+OSkMpVuSvh0e1mIHGHBAU74Y6n9GXGPYznPxmlLROCuMHa9FD98Yvth6FqHb3RIOMwdqqrjceDE8dqbaNx68TX8d6oltZlq0Uq1nz4NuYcb4wbbu0PT75a1OZ7Qipi5eUX4NCRo0hKcnwO5XM08fgJHDmWUDLIcrJ8dVfS8lT5n89yotx6wn3q8/afle0wclxl3m/lf85XtA3O9s6fgvUSCHPYBm2b5AS9i/1v7wc+c9xPO3U3XLP7Bs9J8KIyX5DdHUpJu32IozKslY/tnxu9qtaKrY6Byb0zMEkdOzkGZ8p7Hl0qOQZzXE/koGcd9ueltOM6+9dm3HDtmK60+9/KvrbOadpzKNXMxrzh9PhsjXV6v1uPf+V99bT9sZoErCS8VE7FRk+O1eQ18Lnajll271t5DYwtN5R1pjzXdeIYzmD9Clje9y/n7bT9UtfH93S+Pmqf0yoIJZX57nNducyT14i3aPsR+9dw3AhtH4LF2Gnbh3j6nTAjEXthF3gW2jbbv35rS+NG1qOoP5euhMXs+X7Az88Xo0YMVZUZpavvzVu263Mqz/ZcW4cpwIPacbPd57bap2vHGffYPxd66HOeu8Cnem604wr7zyvtM+ieB7o5VH2UfYfD8yDHHvL603/cUOExUIXb5qXvsR5qdMnTeOYZGe7D+AGNcfyvL/DshytgjduWj98fiYiIiIiIiM4t+w4cxuGjCejcMQ4X9btAb/XcoAF90CGujVrPwcNH9daKSdjtp3k/47FHH0KvnufrrVbj7xyHNq1b6VNEROSOV4J8fS/shQ7t2yEnNw8zZ88vUw2mPOkZmZg592d1XVlH3wt66XO8b+8qCd3Zn6i3iUCnAd2ARavUH/3LnrS2sVY1KqFXqZk4winMEBGrbmNvoruzmNWvYUx9VTkhLc31Nkg1jfrRUWroqVflcHbyZAZM2joqk9B3JzI21trNlcsqLdbH9bvnXHdn5Snr8zuqzEnemJbayrcegpyuUeP2VRiqQj/5WbHGOF+daHkcEwYHYe37T+Kt2ftV169AJjbNW4QDzW/B2Bu7IDa8PjreOAE3tj6OOd+uVNtaHoPH23CWKuma8TaMffILrCoKxqBHnsWw6syWuVLUDcNu6V56ovnQBiySJ097rd9fcsJSG56cCVUULzkTORnx2Cxvg5hRGNQ9RFp1seg92P4DphI8uV2EIKKBBEl34dtPZmDl3hTrazE0pKRnYpeCY9BEXW0Gvpq+DHuTrUHTkNCKK0c68PQ1m7sHC1+YhClSwfKZ5z2qUClq8z3RplULFBYWYvaPC/D1zDnYu++AajebzKpLum9n/YhZc34uGWQ5WV6uVxeU//kcj52LUNKtatWV/zlf/jY4s26Tw0lzm4hukN25LcRl5RSuEA1aoje2IlkvUueVfUM1aFg/Wt+Xlx9dCdHex8OGXIGbRl1bpiqy7MtlHXJcUHnxWPpJabe6Nqp7XbsgpFD7YJfHTpXj/hjM9e2WPa6LQIxUUzyWqAI/lXttnWus1SpL9hl6Vaoy4aNuLR0D1c5VGu2VU7FReHKsZq0KOASdyx6wl8trz3U1709q+xhu56692LBpC3x9fBDbqKFqi9L76Vy/cQtSUtOQnHIS6zdsVm22eY0bNVBhvnVau7uuvD0VN85W2UwPedk9Z568RrylzH7E6TucywqVitN3QnW9stX86oK+vXuhUcMY7D94CPMWLK5UmE8q83XtbO1+19bVe1VI6NdarU4CcNrj9LF9IFPfp9/oHJ4vv5qwdV9hV9VPpz4HkIgUh48ga5VH22ed6ubdo32EJ9vmne+xnn7uhMR2QMeOMlyIgeOeweNjmgPbl2Bbor5AOc75749ERERERERE55gDh46oy8sHDVCXYu/+g/hz2Srk5ZWtLCdtMk+WsblCv+7+g9Z1eULWcywhAc2bNdNbiIiosrzy11wfHwOuGXK5NcyXk4vv53gW5pNlvp89T11HrivrkHV5zvFkbfkykHJMH62AqszjieRDWO98ElQNL+A7fZHa0kA/YX8iJVVdOmvVshnuvP1mNbjrVumE3l2pbV2nRbrV07sysj5G9ie6pLKFnMwrfSwrH6bQn9+S9ZcOUl3GRqoy2LrdU/Or0AWyj8flI4MRq060dEGfMXKipTH2LJqP7apkQipSpbBFh2Z2J8frI1Z6Nj1wHFnWBrc834azVHAsOrVogd79hmDc2Al4c+qXeHDA6QdOK61Tb7QM1ccVqXun6T0Wr7z0Ytnhxk4IQZH2TxMbob3yvcWT2zWi87i3MfEK7UW2azEmP/cQbhn7PL5aUcEpcf9OuPGdCZBifesXTcGkB27DhEnTsK6S53M9es0W7sfCV9/GnNSuGP/q8xjW0fOKdbX5nrjikotVF3TNmzVR0wUFhSgsLMLs+Qtw6PBRNG7cEP379nYYZHm5nj1LsZxkrY774aJajL3yPp9VlSFtEe31enoq+Jwvdx/hRN8mb/LGvqE62Pa/ySnWLi2dyetFwvh3j70FnTq4fn5Pa1++d5U6nnGspqQNzy3WWrXn0lbJ2LYPbnr63Zt7fAzmqcq8ts45UmnMGqiyDm66IXV+XtXxb1V4dqymXgPO4UFPeOm5ru79SW3ur+S71+Ilf6rxiwf2K+m2u9f53RAWFqYqxn71zSxM//YHHD56DPXqhal5IjIiHBcP6KPGF//+p/b9LU+Nnw4V6FNVHF/Qu1b27DVSUzx/LUqlQb3bdn17y3QDXkv8A4y46brhaNRAwnyHMW/Bbx6H+eSPvYv++4fa1/Tp5fjr6aoprZz7ue0YQN+nSzfHjs/5fU7dFztSz40E8Byuow1q/1RKddWurWvFAPuucfWZwoNjoPK3zRvfY6v+uRDbpoP2/yPI9ODtWJufPURERERERERU82xBviaNrT/mFdLV7vdzf8a6TWX/8CJtMk+WsWkS20hdyt+VPBUZGaEq8f00/2ekp1f8d5IPP/4ULdt2LBmkW16x/8BBDBk2Ao8+/hS+nzUbHbr0UNPS7o50gWu/LukOd9fuPeWuR27P/joyeLINclu33zG+zH2U6zpvp6vtYje9RFQer/0sW/7AbwvznTp1SoX5Tp3K1ueWJfNkGQnxdenUXl23KgEGl9VZXNJDfx5QFR88oSr6OJ8ELR0cuhurYbYT9hu3bKt0v/VCrrNpm7ULpapV8XFBulxTj43tRJdj5QJbdY6SMIVeGcFaWaEi+vMrXS3aPQelg123S3LCRrW9hjHqBFDlTvRKdYrTF4xwyU/uOWpXWSQVifu0i/r14GdtcMvPr/YrKkiFpx07/1HjCYlJOHmy/NjLJr1LruzcvJKKZVV2yQS8+t7beFq6eh12MeI8fKsVFVb+xFq5jOo/F8LRsksndHYe4mJKq99lFFoDfXb0iF/FCnOswb0yKrhd/1j0v+d1TPnuI7z7yHB0L9qHRf9+FfP2ln+7/k0vxh1vfonvP/k/PDW8LYri/8A7L2vvG2t5SY9U/L7JxbZpEuLrggmvPoSBsZWr+Feb7wlf7balul6zptbPKgny/fDTLzh6NBGxjRvhppHXon+f3mro0a0runRsr5aX60mo4sf5v6pQu+w7mzSxfinyKhXGqqC6lbvPZ706kXue71uFu895pYJ9RIkKt6mKTnPfUB0axFjjI5u2bVOX9po1bYKxY27EZYMGwN/f9fvFfl8uFZkqy1plb4LefbjjoIIQeiXjyr4OyuPxMVhlePraIs+o49+q8OxY7bReA154rr1znOdebe6vsrTvXxaLRXWX2uv80orcwcFBuPO2mzCg7wVo26YV4tq1UeN33HqTmmdzQa8eaN6sKcxmM7JzcvTW0+TQHXYljufrHGugS7Zz6gPdVPirrlR5DQj0x02jhqNRowaqMt/c+YsqDPPJDxHm/fyr2o8MH3aldl0v/WBGe4+qrm1t3d/q+3TpSrvs860NbrrxV58TbvZPJaHkki7fK/heXsExkCfbVu7xjQeq+rlzePdG7f9dUN+Dr+t14fsjEREREREREdUcCfIF+PsjKrL07yLt2rRCSHCwQ7jPRtpknixjEx0VCaPRr1JBPnHbmFvUZY/efVWIzRUJskmgLSnpBPbs2IxD+3Zj7g/fYdRNY1QYTrrgXbxwPj54/x3ccvONahmZdtc1r9yOhAc3r1+t1iXLd+nSGa1btXS7HtmGVavXlFxHBlnuhZdeVUG8ym6DK+62i4ioPF79a64tzHde544lYT5X1Rqys3Pw/WwJ+p3CeV06YsjgS6sU4lPUyZ+tTl30uKb+4F9y0tleBnat2Apb92zWLnZchANVV2L6uFB/3HfffVhtkpNwUZGROH78BDZv3aG3em7j5m3qupKab9Pa2/2Vyokua9dKtm4NHcSNVSfAHCstOneRpAcM7Lh/ft3Rq0K4WHd5fD3qlmg//vx0LtZs24Pdu/dg48L/w/vfHUG9Cy9BB9VDWWOcP/IC1DvyPWbMXmtdZvYUzD5gxIU3DEBFHW76+FTvSWZP/LLwd+zYtUeNp2dk4NsffnJbnWXDpm3446/latxsMmH+gt9w+IiHJTKrILK+Hv7cewglL7HCeKxcVLkDzUqL7YQr5HL9XPzuFI7L2bseO20nBSVzc/gX/L7DbhnZvnm79AmbCDToJJe7tLtSumyy9tpfqY8rntyu9jlX8n7zj0GrAaNxzzgpAZmCvYlOJ+O1VZSsJSOl5DH0b9ASF9z6CMbIecsU7X2Ta233RIXvm8ztWLFWu9WuXRGean3f2IZED26nLrwn/HytEdxlK1erz0+pxHfjyGtUNRyb35b8hf98+S127rZ+Uh05lqBOqh9LOK5OsPfp3VO1e03GMrz93GL0fmC4h+EH589nvcs4h65qXShTGdfaHZ1bLj/nbSrYR5S3Tfp+2m31QY9Ubd9QHdq2aan25ceOHS8JQ9s0bxqLBjHR+pRr9vvy1i0r25Vz+d0qx42Qx2gxduo73crvg11zewymOf3ueyt6bZFHyjv+VcFhN93uajx5nZT3GvBc1Z9rz47zqq4291fSlW5IaCiOJiRi9559+P1/f2Pm3Pn4e8UaFQju16cXrrt2CEYMu1KNG41GLNPmyTJL/lyuutRN0K4bFhaGmOgofa3e0bulNSjmrc8Sb3D7gzHn74ROpMqr6jbYTbewtSEgwB83X28N80nlRQnzmU1mfa4jCfH9qM2Xn4JJiC+ubWvrDC+JGyfvzcWYpMJuHh5nOKn650R5xydVPAayV+7xjXuefe5kYuPUKfhzjRwf78Ca717De3NOovXgETjf2gN2uerCsTIRERERERER1Rz5Ma78SNO+4M99d47Bv99+CW1dnPuXNpknyziTdVWGnJP4+qtpeOzRh1Q1O6lC5xzo27FzFzZv2Yq77hyHwMBA1SaV/OQ6P837udIV644cPaquL7ctZJ0SvrOt2xWZ9/CD95dcR1x80UDExNRHenpl/rrjXlW2i4jI62eqJJB35RWD0K1rJ2RmZmHvvv36nFJSjSszK0stc+Xlg6oe4lP0P7i7q56zd0ZpZbdBE/Rf2Tsut3e6dI8zBG/aflVvCwfebb9cBlZ+PMWpK7F2GPRAN/Wre8fuk7Rlp9dut3x+fr64duhg+Pr6Ytny1UjL8Pwsx8m0dPy9cq2qDDDymqvUuk5X+tIZjhVR9BO9DRrIRDzmOVQt0IOVtq7c4vqpEyoOYU1VYUEf10UOGmU9KeTcJaK2rO352Tvd8blP37JKe05jEVOJUICPrwG+PhXVzAvX/u3G/A/fxv/939uY/t8idB3zNP7v/vMRoi8Rcv4EvP7McIRv+tq6zPJgXDnhFYzvU/6ZGF8f30p2Qe19RUUmFT4KCQ3B/XePQ/eunVFQUID4/a4r7e36x/qoj7lxJIZeebka37rDObTmRXG9MUKyU/Ff4KVJH+Lbb6fhX/dPw8GYygZZKim0N0ZqnwkRSMR3z92L1yfPwMJvZ+Kr1+/FI8/9ob2yhfa5cb8sk4L5r+jLTP8Qr989xcX2xaBdfwnbFWHROw/iX5/PxLeTn8frK2Qtdjy63RSsfODOknlymx9PlxKQbXFBW/0NYKuytGsaPtaW+3byYhxM/hX3j30e/5muXUe73reT38N38nZt1wvtvPm+ST2qvWM0m2aq94P9sOm4WsKtuvCeEO3atFThBjkxrkJ8IxxDfOL87l207fXBot/+wK7dpZ970t3u7aNHue3qvCrSl76FUdrrCg98Vm4lmvI/n7V97IN6l3MOn9Oln9vWoINdN3mavdNf0NZhr/zP+fK3wVk526Td3/VDX8PISpZs8sa+oTrU5r48fenccgNZiNDm2QUc3B9jlU57FNCJG6t3UehYSU1ez6qy0oMXV6r73sq9tsgz7TBSrzrlUHGsJDg8wXUXvRpPjtXcvwZKn0tXIR5vPdeeHedVTW3vr6QS7GUX9Vd/eFuw+Hds2bZDVY9ds34TPvrsKyQllQbPEo+fwEf/+RJrtXmyzOat27Fw8RKYLRZcNqi/9jhV9muk9hnt4rua7XvYSH0/5dFrROMuyOWdIKjO0++E2mt/nkP1PT0IrYcT6woJa9qH+ebMX1gmzGcf4ht57RCvh/isrN+hsWiu9p7V9uk3WrtXdq5g6LxvduDyudHYPxfquNYxdOx8fFLhMVCF21b+8Y2nPPvcMSI4PBW/T5Pj4/fx3Rqgp/b98okxbUorfrtRV46ViYiIiIiIiKjmNG/WBIVFRTiRnKq3WJlMZpXhcCZtMs/e8RPJ6pxwC21dVSEhOalCZwv0STe6NlIJb8hVg8tUt2verBmOJSQgL69yQT653r8++MhtBcDy2LrQlcChVBH8e/lKHDuWoM89PaezXUR07jIcTkiqfL+rHkpIOI7GjRuV+aOxxVKMxMQkNG3aWG/xDjnJe/cnZcsjSHc49if1906/2TEEJt3yPO98YjgDK1+XE0v6JKRbngnAx1pb09ccu/mRsOBzjtXhnG+ztkgltD+XrVBlbwcN7Ifu53V2G5yURL5U71u2YrXaKV9+yUCc372rPrdyrM9FLN7Uu8Aq+9zI46l3e6RO7DmFPqRLLfvHWE4OS0BDn1Tz+63SHvdEu/UI5+dNY/f8lnnuMaRkGyvDYi5GfkG+OslVk+SZCwwKhM9phV9PnxzIffTZF/APCMS4W27AytXrsGX7Tlx79WB0aC/BM0ez5y7AoaNHMebG65ChHQgu+u8f2muxCwZfdpG+hGdKXkfOrw8XCo8tw3efzsCi+FxEhLdF/3sewdDcabhfu35vW7DJ9rpy8Rop9z3s4nr20nf8jO+m/4othzO1V6QRsS264ZIRozB4QEs9yFmEhKUz8NW3y7Alswgxsb0w9O7xuCB1iuP2KRnYO38KPp69FYlFwWjX+wbc82hbbBkj7xnH12/5t5uBndOn4YcVW7FLu00Yw9Gpez8Mu+UWXNC0NGyWvG4aPv/kD2zJhbZdY/HUK42x5fOZ+GvLYe32oT2WLdB9wHCMvKUfmlR01tBJdbxv6sp7wka6qjuedAINGsSoz11X9u8/iJ8W/KY+cyW4J+XNJcgnXe9WiYt9kOLm9Wl7/cbpr/HyP59tyn5O279HnNch8zqv0t5Lx2zbUP7nfEXboN6XJeuyKbtOx/eORt3XVRjgfH+cHgNv7RuqS83vy/V9Kdy8hnTW5w1lnyv7x9Lh89r+OdMfY6fnwqbsa6Lsc6JuC2X3B/avF3j0+q5570z+FOH1wnDvXbfpLVZS+UxCU/feeRvCw8P0Vvf+88U3yMw6hacm3q+3eEh9bjgfQ5Xl7jFWbPtCfVI47zutz2Pp8aBV+cdqNmVeAw7L2K/D+px22uK95/ps319JNb60jHQE+Aegfv1I7TNjJ+L3HUCbVi1x/Yir1TJz5i3EQW3/1L5dW3Tr2hGpJ9NRUFiA6Mgo7VivjVqmclzsB4TLfZUnr5GyrwHrc+2iHc6fM9ZtgdPr1da+1+k4zHFbZJ1O3wldvBfK7I/qkMLCIsz68WckJSWrP+jeMGKYCn07h/jatDrdH8C4ejxt9NeD7Xmt6DF0s6+ocP/tdIzkfHzi0T6i3G1z8br24HuKK9X1/bKuHSsTERERERGdq+yKolEdZ1/BTtGn5UK+Xsv8kmWsDWpazg9ZtG/28g1cshAyLj+K7Vqlv6Wdvp9++Q2/LvkLd48djQt7dddbgc+nf49tO/fg/vG3oVN7698wpCeOT7/4Bj26dsZdt9+k2sSa9Zsx7etZGHbVZRgxdLDeWjXSXa50myvd53bp3Amvvv4Wvp81W5/r6KKB/fHvf72nqthJAG7d+g148flnK6xiZ7sNIVXv7K/jaj3p6Rl45LEnkJKSio8/nKxChba260YMx4jh16jlXF1X2qTLXNt22sg2SNe8tvXZ2txtFxGRK9Ua5KO6YduO3fhz2UoUFhaiWbNYbSfcFU2bNEZoaLCan52dq7p13LxtO44eS1RdL11yUX/V7TG5ZzKZUFBY0gFpjQjwN8LPr3qqxFTWug2bsXT5an0KaNQgBreOHuWy2sORowmYo7rwMqnpgMAA3HrTdYiOchcPOTfZQgt1+eTv6fL2+6YuvScqI37fQcxfaA3ziWFDrkCnDpU/6UvnDu7Lzy7vfjBFe+5CMWH86QX5pkz7Rnvus/HkoxP0lrpF7ddW9HMR1Kr7zqX9leyLPpzyBcxmCx594G5YLBb8+5Op8PcPwEMT7tCXolLWcN+KAWfu8Zr8GnvuvIVqv9G8WVN1DPL7/5ap18KIYVehXVvHX0JTzaiO75dn6rEyERERERHR2UY/FUBngJKQno0+LRdnUpBv/aZt+M9X36kuc59+9D5tU63nbyXcJyE/ERUZof4WKEVYxI0jh2HwpQPVuNynt/71qSpGIaG/87t1Ue1VJV3lSnivUaOGqlKfrTqfjJenMkE+G1sYT5QXCJRtSEo64TLcV1GQT8J5cn1Pgnw2rraLiMgV34mPP/GyPk5nqYYNYtTJmeTUNBw9moB/4vdrO+8t2PVPvLYz2YIVq9eptqysU2jZrBlu0HbSUp2ByufjI12KGdQBTk0wGo1uK3zVhiaxjVWYxGQ2o4d28HbFJRfB1003a+Hh9VT1FunKrVWLZqp73QitjRzlH1qBBetPoMkFwzCg5dn5Swxvvm/q2nuiMiTEGh0ZiYKCQlx4QU906RhX8iWKyBXuy88uh48cQ2rqSRw+egw7dv+DHbv2qCE5+aTaVyYmncCuPXtL2l0N23fsVuuQQGfXznUzsHl06Sf4X73hGNs9Wm85c5xL+yvZ/5w4kYqU1FSsWrsBq9dtVH+oa9umJdq3q50/NNZpGWsxc+oGxI24FR3PvJe2Il22d2jfTgW/jyUkYt+BQ+p1cN3wq9XzTrXD298vz+RjZSIiIiIiIqK6qMxpHLsGFfDTLqVFG1Xj0tawfpTMrnEx0VFYv3krjiYcR1hICFq1bKbaJdjXrEljnMrOwcm0DHWet1P7thg96lr0veB8tYz4Y+lKrFi9Hg1j6uPG64apvyedDvkB47K/V6BTx47o0KE9jh9Pwv/+WopBF1+EoCD350T3/LMXCYmJuPiigR7/WFHWd955XbF02XJceGFvREVGulzP2nXrka09DvZtO3ftwrvvf4CrrrxCbadwdd3E48excNFiXHLJxWr9NnN/mod9+/bj6iFXObQLV9tFROSK69QNnXXq1QvDzdoO+M7bRuOKSy9S3Z9KJQY5iOjYoR0GX3Yx7rz9Ztw46hq1LHnG3+iHQP8AdVBWXWTdgf7+6rbqmuZNm6judCXIJ11ylScqIgJXXj4IFw3oU1JBis5Np/u+qcvvicqQz+Ebr78G3bp0ZIiPPMJ9+dmjT+/z0ahRA1UNSyrw2YaCggI1//jxEw7trga5rqxD1lUnZSzDPOmqvt+ZW230XNpfXawdnwUHB+lTQFhYGAb176tPnaviMe/1ZUjXp6y0NulmdehrTt3ynnmMfn64+frhuKh/H3SIa4tbb7reC93p0uk63c8dcbYcKxMRERERERFR1fn7GzHhrttUAG/uz7/iREqqapfzUVJd74mH7sGH77yMj955BQ/fdwe6dLKG1sTxE8n4acFi+Pn54oF7boe/0ajPqZhUnZv0/Evq0t7n077EsYQEFYYTtst335+sqvXZSEU7GWyaNm2CzVu2IiHxuN7i2sxZsx1uc/v2HSpnaQvLuVpP82bNHNrk+rZKgfZcXbdN69aIiamPL76cXrL9st3/+uAjNW5T0XYREbnCrnWJvEB+UVFQaILZbO061lt8ff0Q4O/HkM854lzoWtdeVd43fE8QEdVte6ffjEmLrONj3ph1xoedBPdX5yprF7qTt+qTunPlOI1qV1W/X/Kzh4iIiIiIqG7SvubRGUK+kzvQp+VCvm7L/JJlrA1quq51rWuz5K8V+OGnBSrYd8OIoRg0oI/bvxvI/fjr79WY+8uvKCwswi2jhuPSi/vpcz0joTXpPvbv5Sv1Fqtbbr6xTPe4tu52v581W28pu5z9Mh07tHfZZa2QAJ59iO6igf0duq91tx7768l1Xn7xebz86usOXeu6u+7+Awfx4MMTsXvPP2q5xx59CP369nHoWrei7SIicoVBPiIvMmsHaXJQpg7W1EGc3cFcBawHTQb4aJc+vj7w9dEGN13VEp1N3L1v+J4gIqK6hPsrIqpp5X2/5GcPERERERHRmUP/KkdngDLndfVpuZCv4jK/ZBlrg5quq0E+sXzVOsyc+4vq4SeubStc3P9C1UNDuN6zT2bWKez+Zx/+XrkWe/cfRIC/P26+/hoM7HeBmk9ERDWLQT4iIiIiIiIiIiIiIiIiIqJqYMt9Ud13Ngb5xMn0DHz5zWz8E79fbwEaxETDbDKreTYd49pi3K03IJoV44iIag2DfERERERERERERERERERERNXAlvuiuu9sDfLZJJ1IUVX39u47oA0H1fbGtW2tKvXJ0LBBjHVBIiKqNQzyERERERERERERERERERERVQNb7ovqvrM9yEdERHWfj35JRERERERERERERERERERERERERLWAQT4iIiIiIiIiIiIiIiIiIiIiIiKiWsQgHxEREREREREREREREREREREREVEtYpCPiIiIiIiIiIiIiIiIiIiIiIiIqBYxyEdERERERERERERERERERERERERUixjkIyIiIiIiIiIiIiIiIiIiIiIiIqpFDPIRERERERERERERERERERERERER1SIG+YiIiIiIiIiIiIiIiIiIiIiIiIhqEYN8RERERERERERERERERERERERERLWIQT4iIiIiIiIiIiIiIiIiIiIiIiKiWsQgHxEREREREREREREREREREREREVEtYpCPiIiIiIiIiIiIiIiIiIiIiIiIqBYZDickFevjRHSO80lNAiwWfYroLOPnB0tUA32CiIiIiIiIiIiIiIio+hXzbPwZo9j5ydKn5cJgsM4vWcbaoKYtZgssKIbWAotFm9bGzRYLurZvY12WiIjIQ4a9B466PXQwmc36GBGd7YLityBwzwZ9iujslH3BlShq2EyfIiIiIiIiIiIiIiIiql623BfVfc5BvmLtn7rULiS3ZwvuKeUE+WTEYPDB+V3irMsSERF5yLB83TbHvRERnZMCs1IReWQnDMWsyEdnJ4uPH1Lb9YTJP1hvISIiIiIiIiIiIiIiql62MBjVfWWCfPp0cbHBfZBP+ydBPrm0BvkAH18DAgMC0L9XV+uyREREHjIkJafyyIGIiIiIiIiIiIiIiIiIiIjOWe6DfLbcnosgnzY4V+QzF1tQWGRGp3atrMsSERF5yEe/JCIiIiIiIiIiIiIiIiIiIiIiIqJawCAfERERERERERERERERERERERERUS1i17pERERERERERERERERERER0TqvrXesePHZCHyMiorqkVdOG+tjpY5CPiIiIiIiIiIiIiIiIiIiIzml1PchHRERnP3atS0RERERERERERERERERERERERFSLGOQjIiIiIiIiIiIiIiIiIiIiIiIiqkUM8hERERERERERERERERERERERERHVIgb5iIiIiIiIiIiIiIiIiIiIiIiIiGoRg3xEREREREREREREREREREREREREtYhBPiIiIiIiIiIiIiIiIiIiIiIiIqJaxCAfERERERERERERERERERERERERUS1ikI+IiIiIiIiIiIiIiIiIiIiIiIioFjHIR0RERERERERERERERERERERERFSLGOQjIiIiIiIiIiIiIiIiIiIiIiIiqkUM8hERERERERERERERERERERERERHVIgb5iIiIiIiIiIiIiIiIiIiIiIiIiGoRg3xEREREREREREREREREREREREREtYhBPiIiIiIiIiIiIiIiIiIiIiIiIqJaxCAfERERERERERERERERERERERERUS1ikI+IiIiIiIiIiIiIiIiIiIiIiIioFjHIR0RERERERERERERERERERERERFSLGOQjIiIiIiIiIiIiIiIiIiIiIiIiqkUM8hERERERERERERERERERERERERHVIgb5iIiIiIiIiIiIiIiIiIiIiIiIiGqRISk5tVgfJyIiIiIiIiIiIiIiIiIiIjrnFBc7Rids03JhMFinS5axNqhpi9kCC4qhtcBiKYa52ILCIjM6tWtlXbYOyc8vwIYt2/FP/H5tew3o0L4NenU/D/7+Rn0JIiKqTQzyERERERERERERERERERER0TntbA/ybd+5B9O/n4vMrFN6i1VEeD2MHX09unbuoLcQEVFtYde6RERERERERERERERERERERGep1JNp+GTaN8jOycXFA/rgvjtvVYOMn8rOUfNkGfKe/Px8THr+JbRs21FdyrS99PQM3H7HeMz/eYHeQkTEIB8RERERERERERERERERERHRWevHXxbDZDJh3JhRuO2mkejVo6saZHzcLaPUvJ8W/KYvXTUffvwphgwbgf0HDuotpWyhNlnmXCD399XX30KjRg1xaN9uvPn6K0hIPK4enw0bN+lLERGVxSAfERERERERERERERERERER0Vnq0JFjMBgMuLBnd72l1IW9uqt5h48m6i1Vc9uYWxATUx/bt+/QW0rt2LkLxxIS1DLnAgntbd6yFf369tFbiIg8Y0hKTnXs6J2IiIjOajm5eTiVk4+CwiL4+Pggv6BQn0PVSR5ri8WiTxERERERERFRXRQY4K++vwf4GxEWGoSQoEB9Ts0o+btNkQm+Pj7Iyy/Q5xBVna+vD8zmuvV3qaBAf5gtxQgw+tXKe23J7hXYdGQ7jqYfx6GTx/RWourRLDIWLaObomfzLri84wC9leqi4mLH6IRtWi4MBut0yTLWBjVt0T5jLSiG1qIdRxTDXGxBYZEZndq1si5bBzzwxIswap+5H7z1ot7i6NFnXlHb/uE7L+stVSPdxP40/2f8+1/vITIyQrXZqtNd0LsXRgy/RrWd7aQq4YMPT8Rrr7yIXj3P11sdSde6jzz2BK4bMfyceVyIqGIM8hEREZ1DklLSYdG+VMofo/21L2z+2iXVjCMJyWgYHa5PEREREREREVFdZTJbYLbICXgT/Hx90bC+9SR0dTuRmqHCAMFBAepvNzIQeUP8oUS0axmrT9Ud8kNjGXLyCuDrY0CD6Op/r6XnZuGjv6Zj3ZEtgNEA+Bpg0G6bqDoVm4sBizYUFqNPix545LI7EBYYqs+luqQkpKezTcvFmR7ke/fDz/FP/H689/pziAivp7danUzPwNMvvoVO7dvhsQfH661V4yqcJl3JSpe69uG+sx2DfERUVQzyERERnSMSk9NgNBpRLzRIb6GaJEG+po1j9CkiIiIiIiIiqquKLRZYirXBbEF+YZEK9TWOidLnVo/jKekICjQiIozBDvK+uhrks5eelY38giLtvRapt3jflqO78O7v/0GmORsGfx+oxA1RDXAIhxUUo35AJJ4YfA+6xMbpjVRXODxXGtu0XJzpQb6/lq/Gd7Pno2un9njg7tvh5+en2guLivDJ1K+xc/de3D76elzU7wLVfjrsq/IFBQW6rMYnyzz6+FP6FHDRwP4OQT8J/73w0qv4+MPJaNO69HF0DsjJ9MuvvoFnnnoc330/C9/Pmo0P3n/HZTDOtuzLLz6HRb8uxr8++EifA8z94buSwJ0tYPfwg/dj1eo1arnHHn1ITQvZtlE3jVHjomOH9g7bKaFF+3ULWX9kZKTDtrsL8tnu4+49/6jpW26+ES8+/ywCA2u2ei0R1Q7tKJWIiIjOdlKJTyrwMcRXu3x8DBw4cODAgQMHDhw4cODAgQOHOj74+vmqH0P6B/gjSBt8DD6qWl51kXUzxEfnush6oQgMMCL5ZPW91/67axkyTadgCGCIj2pRgAGp+WlYuO1/egNRzbhkYF/06d0D23f9gxff+Be+n/szvpn1E15+c7IK8fXv08srIT5x8UUD1eX+AwewY+cuHEtIKGmTbnYnPf+SCvptXr8ah/btVoME2265bZwKsVXFlP9MxV13jlPrqqi6nYT5+vXtU3LbEvyTYJ4E9OxN//rbkuVsIT4J6UnA8H+//1py/XvvvguXDb665PqyrMyXgJ8E+GQZd1X5nMk6ZF0S9pPr7dmxWbVLGFIeOyI6+zHIR0REdJbLzslT3emGhQbrLUREREREREREVBGDwaDCfNLVrclsRk6e90+e5uTmq0o+DPERWcN8ZktxtbzXlsWvxfL962EI8NVbiGpRoA9WHFiPpXvX6A1E1W/XP/E4fCRBjSennsSfy1Zh2cq1alwcOHgE/+w7oMZPl1TVkypzM77+Tg0ybqu0Zwv2OXeze8/4O9GjezdVKa+yUlNTcfmllzhU7nNHlr1+5HCHYJ0E/6Ti3k/zfnYIy8W1a+uwnIQM12/YVKZKoLvrV5ZcV9Yh67LdrlThk4Di5i1b1WNHRGc/BvmIiIjOcqdy8xHgb9SniIiIiIiIiIioMoxGP9XTwansPL3Fe07l5KmgIBFZhQQGqPeFty3esVR7MxtYiY/qDu31+Ju8LolqwJK/VuBfH0/D8RPJCA0NwYC+vXHX7TepQcZDQ4LVvHf//R/8+fcq/VqnRyrwZWZlqsFWjU9IV7USUrMP8QkJrEn3u1KRTrqcraymTZvoY+WrX78+unbtok+Vat6smQoY5tmFyaXN3vbtO9BMu50msY31llJSuU/CdgmJx/WWypPrHj2WgKFXD9FbrKIiIxETUx/HtHlEdPZjkI+IiOgsV1hYpP7YTERERERERERElSeV+STMV1BUpLd4T0GRiT/AJLITEGBEQaFJn/KeE1mpgC9TfFSH+BiQJK9Lomomlfh++GmBGr/q8ovxfy89jXG3jELf3uerQcb/7+VnMPhSa9ju+zk/Y8/e/Wr8dAQFBaJpkyYOoT2pOJeUdEKNe5OE8yIjI/Up73EOBx45elQfqx7p6elYvmKl6lq3ZduOJUOP3n3x9/KV+lJEdLZjkI+IiOgs5+NjgD//IExEREREREREVGUBRiN8DN4/peLrY2CQj8iOvB/kfeFt6bmZMDDIR3WJL5CRl6VPEFWfufN/VZeXXtQPo4ZfjcDAspWApe3GkcNwycC+anrOz9breJtU3WvUqKE+VT4J5klAryZJ8FACiO44V+jzNrnPAwf0x/9+/xWH9u0uM0gXvkR09mOQj4iI6CyXX+D9X4sTEREREREREZ1LfHx9kF9QqE95T16+99dJdKarjveFyeL9Kn9Ep8tk5uuSqtexhOM4ciwRkRHhuHHkUL3VPQnzhYfXw+Ejx1RXu9VBwnCuus+Van3r1m9wqOCXmpqqqtTZk+5td+/5R5+qPFmnrMOe7bYlZChhQ3ekQp+77nOly+Ae3bu57HbXU9KFrsFgvY9EdO5ikI+IiIiIiIiIiIiIiIiIiIjoLJKYZA3jdekYBz8/PzVeHqPRD53at1Xjice93wWuuOrKK1Tlu0cee8IhzPf5tC9xLCEBt425RU1LIE6CcR9+/GnJcvsPHMR/pn6hxk+HrEPWZSO3LQG9oVcP0Vtck5DhkKsG48GHJzpcf/7PC7D4t99x153jyg0CVkQCjNeNGI5HH39KhR1tJGj4/azZ6pKIzn4M8hERERERERERERERERG5UVxcjKKiIuQVFCI3Lx/ZuXk4lVO5Qa6Tl1eges8wmcxqnURERNUpM8vafXP7dm3UpSc66MtmZFZP188SdHvz9VdUKK5H775o2bajGpKSTuDzKR+XVOOT5Z58fKIaty33xZfT8d47b6Fjh/aqvSqku97XXnkRr7z2RsltS2ju+2+mo03rVvpS7j384P249+67cNngq0uu/9P8nz2+fkWk+9y5P3yHUTeNKVl/hy49ENeu7WmFBInozGFISk7lNwUiIqKzWPyhRDRv0kCfotpyJCGZzwMRERERERHRGUy+27drGatPeYf83cbb6yTvkbBdQZEJJpNJG9cbvUS6zgvw94fRz1dvqT7V8TqTrg4ffvQJjBlzM64afIXe6h3Vsb3DPrkThtDqf6yJXHEb3M22YOGDX+oTVBc4P1e2abmQz22ZLlnG2qCmLWYLLCiG1gKLpRjmYgsKi8zo1O70g12nI+tUNtZt3IqL+l0Af3+j3lq+goICLF+9ARf07IZ6YaF669lBqui9/OobePnF57wSuiMiqg6syEdERERUx53Svmxv27Eb/1u6ArN/WoDffv8Lm7Zsx8mT6foSRERERERERESlJFSwaPFveOGlV/Hscy+WGSa98BJmz/lJBdTINXkM8/ILUFTk/RCfkHXmFxSq2ygJhZxBjiUcR0ZmJvbs2au3EBFRXSNBvMsH9fc4xCcCAgLUdc62EB8R0ZmCQT4iIiLyjpzjOJSQq09o4r/Fzbfcjpu/3qc3UFUcOHQEX37zA35b8hc2bt6GQ4ePYtvO3fjjr+Va+yz8vWKN6o6FiIiIiIiIiMhm1g9z8dl/pmHL1m3YsXNXmWH79p345rvv8dIrr6suY2tN+l94Y8QoXPPKX/DKzxX/+QrXyPq+OL1wmQTrpAtds6X6A3Yms8V6W9olUZ3T6QnMGjsVC0Y/gWv1pkdHaNNa25T+egMREREReQ2DfERERFShjGXvWkN5LoYZ8bLEYfz87NN45skH8b2aJm9YvXYj5s5bqErZ9+jWFaNGDsPDE+7CuFtvwhWXXoR69cKwZv0mfD1zDgoLa/GP7meyfYvxzuSZWJumT9eag/hp8qeYtv50TlukY+30T/HOLwf1aSIiIiIiIjpX7dq9W10+/P/s3Qd8FGX+x/EvEAIBBBIIvUPoCCiIiIoNFJUip56gKCrq6dnr2cV6cpwFFU9FBRue5x8EVBBsVEG69N4hQEgCUlP/8zw7m+xuNskmJCSEz1vntTPPPNOemQ2zs7/9PXffpZdfGBp0aNWqpf5Yttx2MZeUlGTr58WaD6+2QXMv/VyyegzwZuI7ATF8Gcy2kpKTi21mvlWr19jgT99h46aNdl58QnyWebGxu+28kqbPpW/aADYzfHh+G7fU18V6eQBBbgAAAMg/AvkAAEDoImqpYYMGfkO0nVFF0Q0jnPmnq5GnILikvVry48ca/tAkEe+Xs63bd2jmnHmqVKmSbvhrf/W46Dw1adRA5cuXU43oaurYvq1uGXSdOpzeVnFx8fp2yo/ukkBRK4igxIIVP3+shr0+mb87AAAAAE4Z3i5zTz+9ndq1axN0eHHoM2rZsrkN5nvymefyFcxXEiU7bXciMvEFMpn5zLaLk02bNuvmIXfo0X88abtj9h1GfTja1lm8eGmWebf97e/ONTVUBw8etHVKohoN/qr7a7oTOHU0vUEv9xuuL6/NzFAI4OTRtEljfTp6lH0FgOKKQD4AABC67rfr1X++6DdcHmNmVNU5D72nLz+8X+dUtTWDO7xakz/6RQt27XcLEMyxY0maNPlHlSpVSv2uvFR16tRy5/grWzZMPS8+X40bNdD6DZu0afM2d05x5gnyGneS97i8biKZ7wAAAAAAJ7fw8HC99PxzNphv9eq1BPM5TEa8pOTcg+kSV07Rh8/erTuvH6SBg+/WW58uVZw7L4vDc/UfU+/VGUp0i7KTlJRSrLLyffm/rxUXt8/+mLdtm9YhDzVq1NAffyzTfQ8+ql27drlrK2HK1Nb5Z/1VNdxJnCJqNVe7KlVUsYw7DQAAUMAI5AMAAChm1qzboEMHD6ljh7aqUzv3n/b26nGhfV2+arV9BYpWY/V/4C4N6RzpThe9qM4D9OgDvWTjjgEAAADgFLVw0WK9+PKr9tXLBPO9OPRZG3xlgvmefu6FUzqYLyU1VbnH0a3XjGHf6nCza/W3Jx/WPRdX18opwzVi4mZ3vq8krf+//2qGO5Ubs2mzD8XFgf0H7OvTTz2uV156PuTh7TdfU8cO7bVnzx498NBjWrfuJP9FZ6CDu7TdOU1lo87R/a2ruYUAAADA8SOQDwAAFIBETf/njbpu4L80PZufFq/7xJl/1wdaaqem6umBgfUTtXLyO3rqzluc8hs16M6nNHzCqsxfKifO1CtmmX/O1J7EPzTmmTucep95uso8tEVzPnlDD9xq1ukMtz6q4dP32sVCFZ+QoJUrV+U4JCTm9rvpgrE3bp99rV+ntn3NTaVKFRUVGam16zcpKSnZLQUAAAAAAMj0w7SfNO/3+fbVV7ly5TT02adsd7vm+cdTzz6vI0eOunOPxyFtn/mZRj51r27td7V6O8Otfx+micsT3PkBkndo5rtPeOpeM0TPvvuLtgc+5khYocnDn9Cd15j1DdCdD+SwPi+/Za7WjYOf0NfLD7kz/aWkpLljOamuc/71tu4ZdL7at26vroPu142nS+t/WqYtbo0MW37QJz+VVbPq7nQIUlKKTyBffkVElNfzzz2tHpdcpEOHD+vZ519y55QQqZv0wVaTg7GC2rW/OYQuVtvotkue15c3fKBJN5lhpL78y8O6rZEJArxYLw/wlI/o7KltnfG4xtm6z+g2t0jqrKHXmrLhGtrILfLjXdeberm1s81LX3HX4QwDXtHLndu49aQ+l77pKe93s1vi4S3/8tKL3ZJ8av2wvrTbfVh9mt+ld+2xP6/73dlndL5P7w4Y6dkHZxhn96+zT4bDajqv88P60G0b22a9b3COKWD/uj3vmW+24ynx8JYHHF9u263R6K8a2u/NzHYz2730MmeO27bN3Oe14S10m52feUwAAAAFoczDjzz6nDsOAABKoPjEP1WlckV3Kn+ObpmjbxfukZp119Xto9xSX0e1ZdZkLdhdU52v6KZG5Z2i+D/09a8bMpZJTU5W2QrlFL9pjw6rqbr26aYzWjRTy1aNVS18r6b/8xH9e1qcap7bU+e0a65GFXfrtynfafLOBrq0Sx2FH92qWd8t0u6a1aUFn2ryKtPNSVNd9JcqmvX40/pwyV5V63yJup/RSk0q79eCo83VN+i+Brdp02a98s9/6ZdfZ2j6jFlZhjm/zdWZHc9Q9er5+5Xt/j8PhXweFi9ZboMGu519lipUiHBLc7Zl2w7b1UnrVs1DXiY78fPH6q2vZmr23PmeYU2YWnWorcy1mu5xx2qSd74zrAprpjPqZtaw65iWolYNYvX5f8brx7nrlbhjpr75Yb3izfy17rJ7q6tbC2ne6I/1xRLvdjzrnx2wTinBU2+rWcaT7c10cfvhGmc6erNG2e24682yz0bgfsephrPt1WuPqlGHdqrnVs5y/M6+h7Vw56+frGFjpmm1+Y4gYX3merrGyHtl2H363rvsfO2O7qxWAZdi1jox0tr1OtKgXcAxZy9wP1eF1VfNveu1JSImo308ghy3z/5mtOsvmfsTeD69x+2d79cmWQQ5f1mW9+6Du+2Mcx/6OQ12jWW3T5622u533FnOc8b63fay16ZPO4bQBsd9Pfqel/jFzjp+VbKzjSPTfK+XwPMHAAAA4EQxn+2rVT3NnSoY5rlNQa/T+OnnX7Rn71716X2lKlX0PI8wzwtMgN5ll/ZQndr+Px4sU6aMzj/vXK1avUYrVqzUshXLdV63bipbNsytkdW+xV9p6lqpXpc+Or9xkA9jCbP11mP/pwPNu+rCzm10ZrMoJS6dq8k/LlSlLr1kP3Id3ayZE+Zre/VIpU57X1OTO+rKzjWlLeu0aPV8zVkfrW4XNJY9gj2/aNidw/R/e2rqgiu76fzWjVVm12x9Pe47JTbupc71wp2dWqKxP66TWlysgWc4n5wO/a6Rt76ksZuPqHWPK9SrQ0vn89QK7ap+sboF2edjIWUjLK8Kfo94SuvgmomasbuNLunVQlXdUmmzprz0tv687l5duH+mfteZuuLchs7SOUt3/gsvW9adKhj5vc6CXUd5Ya633+bOs1ke+/Xt7VxPoR1XYbwvvpg/QaXCjy+/SYtmvXRmJecYjm3Taz9MVpNmZ6teRHU1id6n8Ru3OTWa6OJ2bVWzjHQgfpK+M0Vqo/v7/V29oquo1LFd2nX4oA6klFX1SrXVon4LVdowWntq9VLrimUUnnpYX2/YZBbS1R0H6gzbf2tZJSVP0U/mN8s1+2lQq9qqmLRF386aozW2pi/v9pNVqsrZOiOqjPbtj1NS2dMUUbaCakafrnbJ8511HfE7lrGrl7jLZx5j8sHlnn2JPkdX163u7Ns+LVru2ebZLfuoiXMhZx5jEBnLJatmnRjVs6f+oDYt/UVJ3Z7XUy2aKtKZ3v5ngg4cO6bwitVVz9m/08OdvxE7j6hdt8f1eItGqmyaIClO2w8eU0Rka7WMKKsyzmnM2L8GF2pglHOt+Oyf5S33Ob4zctvu/j565dJL1NrZRtoR91ylV1D10gecdWxTuwZ1FF66vCqXNTt1WHuctk04Fqulzt+qlXYL+ZCUroFn9XUnUNyVKuWOePkUmG7RTVZVU2Iyu5qp1LR0RVcrPr2WAABODmTkAwAAoZvyvCfjXcbgZsQLQY1O12rgX85WHTvVVJdf50xfd5FiKkqJ00fr3T+qqtdTb+vZW035tbrpnid055lS8m/jNWeHXchj1c9aGf2w/vPFJ/ryixsUk7hVK3c55a1u1kP33OAu+6ze+ktDT/0QtW7dSo89+nDQB9TmIePTTzyuFi1PTMeclSpVsK8HDh60r6E4dOiwfa0QEeTBeR6Y4KZRs6rqqgfu0qN2GKDuvkFoJpjp9cmKP9d0VerWuamrNGushk30PGjMtFrjJsp2s2rWc8XV5rWXmjlzmvV2l+3T2FP1eMTP1aiM7bjbSPhNo0YvtkGDlgmKCtzv3tL4SYH7vEm/rmipIRnruktXNU3Q9DGTPdd6s15umTPe1DOe2WWrCUobqfHxXTOX791Y6yeN1LiMHmSC1HGW16TJyksnMyZgLPA8tVsxWdMDkxAEOe6rmm7SeKfM8941+zNW06O8x+IMzvn0PeXmmhjmtFPGOXOGIedmfi2RK3PNTEpU95syl7ftl5NQzqnlf4118d3xHOR6nQcw7R14DEPOlXNd+J5bVz6vR//z4mWuvZFa1tq7Lmc/I516WdoBAAAAAPyVKu0JLkjz6ab1zDM66qknHrOvwZjnH88986ROb9fWdrP71LNDj6+b3fDmuunjTzT04ZvVZ9AN6nPrg7r/ztbOjJ36cVHA5/Hlv0gDRundZ2+39YaOeVk31XU+FS1+XzNsZE6CZr77jmZGXqHhY57XbWZ9g27W/S/erYuVrMlfztYeu6IA21dossnq1/sxPXmnWeYG3fbsKP29SyXP/EC5dqsbROIi/ThTqnJ6M/e5l5Gk9Z+O1CcVBuvG80PrcSFDfvahGPrv/77Wv19/047fdecdx/3MqvhZoZfMj3Gdsci6vfVk5sn3067bX3VxlbI6FPul/vbVM7rzG2f4v+c12XywL1NfZ5/VXGNitzlXsVSxSludZ5e6WGc4yyg12SmvoHp13FR9DarbzHHJ+5droqckGxWcess17Ov7dKuzvRs/e0M/7TdbqKB2zfv4ZL07AcJrq2bSYo2cdJt6j3lGb9S8Wbc1q62ySWv0wfiHPe3xzeO6d42JCCyrxg3+qna6TDc1duo4JXu2vq9bxz5u61w36UdttyvNh1C227C+atjAwTUa7T1XXz2tYUt+dwrn643vnekdJhOjqbNNE+w6RuprTwkAAECBIJAPAACELqKWGjZo4DNEuzOOR6JW/rbMeY3T5Bdv9QkS/JtGLDTzt2qnJ0bNI/l09b3u9MxfN1eormjzVGfVZ3r3k5lat9fT50rFivZnnnnStm1rPfaIfzCfJ4jvH2re4sQE8RmRVavY19jY3fY1N+bXfrt3ex5Xm65Ljse+XQlS05ZuYJoRqS59OrqBXQmaN2uTos4doCGdfX5JGNVRQ3o3ljbM1Tzf6CJnVe0yls2Js43Bd+nRwaHUDSKhqrr7LdtY/U0wWsJv+tUNslo36zfFN+3lv9/NnOlzA38R6SwbsB8x55rAtkTF5xY5tX6upidEqrvvMTvbMEFr62e5gVe2TmNdFWx/3alcxS/W9A3Odm7yBhAapg09QZK+7HFHdlV/n+OO6WPqbdL0+eZRc6J2OC/NWvsEVDrnM6O+s61xsxJsEF9/n5VHde4VetBcQqKze8415VPf7INn37M59yGcUyvka8xfzte5sy0TNOcNMs1ob/9AwajOA/zPrVeo12OO5yWTeb9ltr2zn+c6+5WwWutyux4BAAAAnNJimnk+SLw/6iOlpJheDULjDeZrf/rpWrt2nb79brI7Jx8q1lU953PO3CmfaczwZ/TEA0P08AhP3qpNiQF95ta4Vpd09Mn4Vra5zu9t+g5N1hrzwTVhpX5b7Ezu+U4Pu13k2uH612U7Ct60wwZUZRFZV2eY1ykf641Ji7Xd7VE3P8+Ngjq8ShNfeke/6XTd+pdWNvDISP7jc/37p2jdc/fFykOvusVOZKTnCdziJUu0bNmKkIcR77yrzz7/0i77+GMPq9elPex4ibPhTX0dax5cVtfZXW/3XGsBLo72BHJWrHWdPszorvWf6uU+OKgYXl9atNEToBZRTWeat0GjtjIJJrdvXSLzdDCyUlsbfNcnyuTnT9bG2CnOa842bR2pmRk9SK/QG1s9wYJmG2fbshNlv5YtGekJXDSaNXb+LjhM17RXe9vjA33YwmkHW15BjZs7x28C6rRNc3+ZnxmkG/9f/bjX90FxHoSy3X0HZJvMqTOw38O6v3Vzp933aebmFbYKAADAiUAgHwAACF332/XqP1/0GS71CYTJP8+j2wbqdffjeuaprEMP31+0tjpTzXx78ghvpRtfvk2XNJNWTflAT993q2555mPNMd1N5INvMF9RBPEZLWKaqkzp0lq2YpWSkgMebAexaMkypaalqWXzZiqVJb9/3lSrHSltmKxRAcFEVvxmLUuIVLumgcFvjmYt1UwJWrbBd7mqisprhFV++AVkuaKcbTsv8QlmfzY5+xUQrOaKch9IZ2EzD470DGN+U7xzbDtyCZxat3KTsy9nZwlws22aEKt9zrinTvb7m8F3++7gPSfxG1YrPiAwzqOq6vqdGve4zw0MdPPUi9+VmDG+ftJY/yBMl92WGqtdYIRgHtg2NhnpsmRszEGu59Qrf9dYjtd5gOzbW4ox11RgUF2o12OO58UryPstqpazXO7XIwAAAIBT23XXXq2mTZtowcJFeunlYXkO5uvZ4yI7vnrNWvuaH8lrPtbDNz+ilz75XQkVm+u83n/XXTY4L4i6VZ1PRf7KhvuWJHmeHzW+Qk++OFQvZxl6eoJ0AtXoqUdfvF7nVdyhnz58SXdeP0B3Dv1WmzICnPx5MxmGZO8M/ee+l/Vl4hm651+PqJN3d035azPV+pbB6pqP38DmaR8K2VmdPZng3hn5np54+tmQh2nTflLFihU1fNgrOqfriQ0bO9EmzpqoZSZxZaUOuq3bER3KJollwt75mrkp6zBjm8kI96M27je1aqtJa6ld41qKVJy2r/lV202HHVXqq68668wqphePWK1ZZOrm5LAOBl7jR5Odd1ERSIrVwg3uuK8jG4O2x8xNi7XJ+xvrpMM2kLFA5bTd3e/rnZVrtCdVqlilhS7u/Ig+vOEVDW3rBvsBAACcAATyAQCAYuKwqtZpZbu4DRzq+AbulZXC3VGv8Lrnacjz7+mTN1/QvX2aKnn9Lxrxwmdal8+nUyaY75FHHtRjjzx0woP4jCpVKqtj+3baf+BPTftpus24l509cfH6ddZclQkrowvO6+qW5p/JMma6g403XeWaADK/7kBj/TOP5SaylszvhItcfGLo+227PHWOe5Iyu10NKVtegidj34YgAXizvMFibp1QuF34+g7ebII2m1wo3OM2Xfv679NYny54PRnxPN0Hu/vrE9xmt3W859Eci2nDjLYJ7D72OORz33K8zgOE3N6hCum8AAAAAMDxiYiI0EsvPKcmTZpowaJFeumV0IP5Fi5arH+/PsL+WPDaa/7ilubVDs34z3dao0a6a9gI3X/nDep1UUe1aJzND+oSTRei/vZs8mTBKuubPO9QVdVs20btsgx15fv4yFfFtlfp0dFj9eXbQ3X/RdHavni07h3+i/MpPavSof5Acu8MvfXIB1pa/VI9/a8H/AL21k/5QL8lJ+u39x7UwOsHOcM9eusPZ8YfH+guZ3piLh+KQ96HE+CC7ufZYLwbb7heA/56rd9w0UUX2DqNGzXMMs8Mb735b7VofuKfq51wh37SG2s2OtdvWdVrfIlqusVZJC3XsBnvZxlGrjTBsvv0U7yny9YaUZfp4irVpSOxmrF7rWbsNxF+1dS4dUfVM70T79+mCbZm3tSIrJzxHsnpZ8ORZQooW2WuDmthkPYYNvcnmb5bLGdfAn7eGLJ24dkdR87bXTR/uG797B96Yv50Ldp/2NmH6jrjzNt0f7YnFgAAoGARyAcAAIpE5gOjqmrYynQyEqevv5yZ2VWCtVdzFuxyx7ORuDdjmfDohjrnurt0o8keFrfLv0vePDq9bVsb0FdUup7dSRUiIrRi1VqN/fobHTjwpzsn08LFy/Tp2P8pNSXFqVtBZbN9QJVHGUFkvdTMZFLzBl7ZTGAnQmBmufyLinRWFJjtLlsJmjfR0wWvOfa8PWqO9GSGs8v6B+B52zLGW+c42WxyoXCP23SLG3SfvF3HOmL6uGXe4DY3e17I28qN6X7ZbneAukdu0vjXg2cADIU9pwUhu+s8QIG1gcP3egzlvAAAAADA8ahYoYJeeWmoYpo1tZn5hr7wcq7BfIuXLNULL/1T5ieFpkvUZk2beGbk2SEl2I+WFVQp4xeZe7V8ZjZdVG76VjPW+IQX7flFE6aY6eY6s4XzWSqykdqZvkX3fKX//RzQDcOe2Vpk+yXN6tCevZ6uMh0V67XRxffeoavNxOLNAc+gPMLCbH+eudisKcM+0G/Rl+qhoTeoVUBsYp2Ln9DTT/oOf1efBs6MBpfqQWe6U11PveyEtg8njgnGu+bqqzRwwLV+wyUXebI2mmDRwHlmiK5+MncqnDd7Fr2vyfHO9VqmvhpXcgtdCw/aVHuKrHWZ7vftdaRiZ911ye3q5U4uW7PNXpMVq3RXuyrOtbt/uWY60zN3xjrXcAXVa9XYdq+7fe/EoNeuvwpq2fzmzK5+K16s+xt4uvhNdtZrOsyee8R9cFqplm7yRvjVuVlnRxVyIN+OfZ4g2ogWurpbG1vkUU3nnX2fHm3ujG5x65RpovPP96nj7F+vaJOV0EeCtzvcamrnbV/neAfUCrj+Qtlu68t0tX12t0/LVn6mZ7+ZrDWpZrqKahSLXysDAIBTAYF8AADgxKlaW3Xss6CpGv7Cx/riw880J1Fq1Osu9aotJf/xgR66818a9eVX+uKTd/TUrQ9pxMps+jrx2vuD7r11qN78xFnGWW7MW2/qk/VOebMzFZPNj7xPBhHly+nGgVerZnR1bd++S//58FO988EYffblOH04Zqxef+t9/fTrTKWmpKpihQj9+eef+t//TdKxYwXZSUZj9bfZ6BI9meRsAFJg97mu9au1Xtl0u5tP/l2MOmzXvu64rw2rswZguftT1z58c7uPNd3aBrBd3ebC071s7jzdtQbZFx/Z1rH7GxpPV7UB3bkaWdon++POVrNeGnKus5CbNS7bbeWbyQDYy3bDnGPXsLme04IUcJ0HyKkN7PUT2O3ucVyPAAAAAFDQzI8EX3rBE8y3ZOkfNpgvOTl4Pi4TxGfmm54BHn/0IXU9u4s7J2drPnlJTzzwsN8weU1dNbnIPARaqQ9eeU1jPv1MHzz1uCbsyeZhTeNKWvbUrXp2+Mea+O6LuvPv72ims5st/jJY55voJeezW6+HrlALJWvmiHt159D3NdFZ55jhT+jW21/XxmweHyUtf093Dn5RHzh1Tf0PnnpVXzvlkZd2ULAQxbAyIQTRrZunCTulVqc3U/L6VVq10jusV2KS0+Z1WqlVa9+hpRqaw67aQM1MzxMBcUi+TDK+smHefkVx8tinD36fr+026MvfzN8me7reLVNbF/cYqU/6Pa93+72iL6++Xb2iK5vORzx2O8sfcV4jqquGDmvjtp885Ss32vVGVvL8EHr7+n2e8hw5b55K52jogFecbT2vT666Tu1MQG3qLs1YOMXW2LNmkycgsEwTXX3VcM8+9eisyNTgfx8KzObP9HWsCSIsq3rN7te4a017PK8PB/xTj7Zooqrm8j/0sSbbOlKNxt46wzUu2P6tXO62e3Wd3eNNfegebxOnDf2Est3Ic3RTb+85coZr+6iF+ZOQGqs1W8xKHBmBgy002Kzj2sd1v50BAABQMAjkAwAAJ1AzDRh6vdpXCdPhVb9o8oL9nodV4c100/Mv6M6LW6p60jL9OPFbTZy+RWU7XK9n+pj0ejmIPl29Widr5U/OMs5yP66U2l92l1576iL5/sj1ZFS58mm64bq/qGuXTqpePUqHDh7Szl2x2hefoOSUFFWrFqkB11ylW24aqBrR1RW7Z6++/uY7JSeH1lVOMOsm+mcl8wSxVXUzyTVWfzdjm2/3q7Y72kmbFHXuZeqSa5BVsCCmBM0b7du9aaRi2piAt8kalxHd5mbLc6f8bdJ4N4Oc5e6Pmp7t7k+kupzb2K7Pb7/XT9b4De645WbM8w3EctY1LqNr3EzBAvKiOp/tXOHOvgR20+psx3scwets0jizv6Fqdra6R5qucH3PVbD2yea4HZnn2dm2b9s561m3wqnrzWLYrJfb7a5/Br34+ZNDzqiXpa5fUFvguffK7Zwen5yvc6dNTFe33u1n2wZjnesnUt37dPS0VYZ8Xo+OwP0CAAAAgIIQEVHeL5jv2aEvZgnm8w3ie+qJx0IO4jMSEjdr2Sb/4ZAq6ow7X9ZdZ9VR2U1z9PXkldJFQ3X/X7JJR1e1h257/WbV2/OLPvhhiQ5VbK4+9/5LQwc1zwh0KtviZg19/e/q0zZaSYun6oP/+0YzNoXpzFuH6uIWbqUAlRqfpbPr7dFcp66pPzehkXo59d+9s2NmAJUP051wufCcA+kS47bK5FhbNeUdvfDSyz7DeK0KiB3Kq3J+/QjjpLL7Y32w1dM9rp9DP+mJHz7VzP2Hbfe7kVVqq16V6gpP2qVF66drrltNmq+FpitXwwSOOW8Zj+naftAdtd3tuuM5StbqJf+nRUlVnG3VVmQZZzcOrtHEWW/qDe/yu9/XOyvXaI8Jgitj6lXQoR3/py9MZsFCtU8TfxiukZt26ZCz7bIRpj1qq0aZw9q+Y44muwFzE394XxNj42zQnK1Tqax2b/oyyP5N0TATRGl/21xBNUzb7p+uYVs9mRAzhbDdhO12PZ5z5AwRnsyIE39+RWO8wcIrP9YXO+JsbzN2HeFlVZA/qwYAACgVuyfOZEgHAAAl1LrNO9Wgrv3pMorQ1h17jvs8HDp0RPsS4lW+XHlVqlRRFSLKu3OkI0eP6auvJ2j33jg1alBff+l7hcqE5f03G+smjgwIbmusqwK7mTWBSWP8g8ZMN6H9fWIuTZDTqBUtNWRwYJCTY/1kDfMGrpmuaPtU1bzRYzVdXf3q++9LpLrfdJk00akXZZbxdD9q66iXhtSeq1E+AXdR5w7QkM6R7pTLd7uG2Xbr1U5ZorPuAW6QlQksc7bhXVWks099pHHO8Ub5HaMJ9prsZtHzbaOA5Q2zDr928F3WMMu31DKnLD7YfgcVuJ3g7WMFOV+Z7RO4Lw57TnyWd9jz6RvQmOWYfHnW6T2WLMvafQ1ob59zH+o5zfEaC+DZh6oZ5ynn69xtk4B2yHocWd8beboeczwvDjt/tdpltJXLXc7/egQAAABwIpjP9jGNCvZng+a5TUGvMztHjhzVk08/q3XrN6hd2zYa+uxTKlu2bJYgvs6dznSXODWZdjh6LEkpqWluyYlRpnQp20ODCSYsaIVxnS1bvlJPPPWMLr7oQt1/79/d0oJRGPt75Tu3qFSl4tVtccG7WC8PMNn3DmvZ/Pv0REYwYMnR59I3dVutCjoU+6Wu+8HNWngSMH9XgjqYpm/v/sidQHEQeK680+bF/Hk20xl1PAV2Os35NyNN6TJ/wdPS0pWanqak5FS1jvF/zgoAQG4I5AMAoIQjkK94KIhAvtwcNcF8/zfRZuY7o2M7XXLBee6ckssbOBUYeIaT18l8TrkeAQAAgJLtZA/kM44ePapnnntBq1avUbt2bXTh+efr7Xffk/mi6InHHtHZXTp7Kp7iTFDGoSNHTXzGCVG6lOkGuXyhBPEZBPIRyFdSEMiHwhZ4rrzT5oVAPgDAiUDXugAAACVE+fLl9Ner+6p5TFPVjI52SwEAAAAAADzKly+vF59/Vi1bNteyZSs04p13bfnTTzxGEJ8PE1BXMaK8zZJX2MLCyhRqEB8AAACAkweBfAAAACVIuXLh6nflpWrXpqVbAgAAAAAAkCk8PFwvv/C8brzhep3b7Rz9+1//POW70w3GBNaZrm7DShfOV2kmbi+iXLgdTsYgvnp1a6ty5cpq0aK5WwIAAADgeBHIBwAAAAAAAAAAcAopWzZM11x9lR575EE1a9rELUUgG8wXUU6VKpRX+fAwmz3PZOnLT9ydWcYsWzYszAYImox/Zn0nq8jISH3+yUfqdWkPtwRF7yc9MfY29R5TMrvVNSb+cJ9zfLedVN3qAgAA5EWp2D1x2XTKDwAASoJtu/aqRvVIdwpFZeuOPWpQt4Y7BQAAAAAATjZ74hJUv3a0O1UwtsfGqV6t6u4UUDjWbd6pmEZ13KnirzDeF1e+c4tKVTp5AydxcktPz+br+INp+vbuj9wJFAeB58o7bV5MQLaZzqjjKbDTaalpSlO6TJx3Wlq6UtPTlJScqtYxjT11AQAIERn5AAAo4cyHxqSkZHcKAAAAAAAAeWWeraRlE4dxPFKdlR7juQ2QwbwfzPuioMVEN1J6aiG8iYH8SpWaOdclAACALzLyAQBQwsXuTbDdpVSqGOGWoCiQkQ8AAAAAgJPXwUNHlJySoloF3OuBeW5TIaKcKleq4JYABe9kysh34M/DOnzsWIG/10b89LGmbpylUuHkOMGJF5jlzUpOV4/G5+q+S252C1AcBJ4r77R5OVkz8i1cskw//DRDW7btUGpqqluaM9P1+9+H3Kh2bVq6JQCAE4W7VQAASrjTKkXo2LEkdwoAAAAAAAB5dfRYsk4rhB9Jmuc2h44cc6cAHDp6rFDeaz1anavSqSbEBigeSjnX46VtznOngMKxM3a3/vPR59q4eWvIQXxGSkqqNm7Z5k4BAE4kMvIBAHAK2B2XqNJlSvPr7iJERj4AAAAAAE5OBw4eVnpammpUq+qWFKw9+xJtbwqRlSu5JUDBOlky8iUcOKjk5JRCea+ZAJa3f/1E0zbMUqly5DnBiRWY5U1H03R5ywt1+7kDFBYW5haiOAg8V95p83IyZuT7ddZcffbf8erUsZ1uvv4alStXzp2TvdlzF+jjz/+n3r0uUd/Le7ilAIAThTtVAABOATWrV1VKcop98AwAAAAAAIDQmG4+U1IKJ7DIy6zbZPwzQUzAqSph/5865rwPCuu9VqZMGQ08s7dOK11R6cfSpIC4KuCEOZauyHJVNLBTH4L4UOgO/Om5t2jbqkVIQXwAgKJHIB8AAKeI2jWi7K/C4hIO6OChI0pKSnbnAAAAAAAAwMs8MzHPTuLi9ys9PU21o6PcOYWndnSkzUQWuzfBBg8e47kNTgHmOjfX+6698UpOSVUt531QmKpXqaa3rn1OZ9U5XelHUpWenKb0NCL6cAKkOUOKc60dTtOZtdvq9f5Pq0rFyp55QCHyZg8sZbIHngAj3h6pXlf204aNm9ySTEePHtUTTz1r6yB3pg1NWy5YuMgtKTzfTJikG28eooSERLcEQFGia10AAE4xh44c1Z8Hj+hYcopKOx/ejh5LcuegMJUuXVppaeaJDQAAAAAAKK7KlwtXWnq6ypUNU+VKFVQh4sRmr7HPbQ4d0bGkFJUpXUpHjvLcBsevTJnSSk0tXs+lIsqXU2pamsqFO++1iifuvWaCWpKTk/XzmjlavH2ltiXu0tb4He5coHDUq1JbDaJqq2O9NrqoxTkqW7asfV6M4iej21yXd9q8nIxd6074fpomTf7Rdqvb7exObmnOjqdrXRMIdt+DD6t/v77q17e3W+phAtJMEN+brw1XZGThZTouKUwg3933PqAXhj6jTmeeYctMwN3v8xfomaceV/ny5W1ZQTDrHffNBM4NUEwQyAcAAAAAAAAAAADglGGC+fjRLU4Ub+CX6eLZBPGh+MoI0nN5p80LgXyhCRYUZrLxPf/iKzqrc6csAX4IXWEF8gEoXgj1BwAAAAAAAAAAAHDKMMFU5cqVs0N4eDgDQ6EOJuDGDATx4VTQ/fzz7Ov0GTPtq7F8xUpt37EjYx4AIHsE8gEAAAAAAAAAAAA4JZUqVYqBoVAH4FRisvCZrnVNVj7T1a7Jxjdu/ARb5tttq8ku16hZq4zhxpuH2PpepiveXlf2s13M+jLTptzM904PGjxEK1au0hNPPWvXZdYdTG51Tde/vvvk3YZh9s3soykL3Pdg2/PWz6meaRvvfgTW8T1O7/j9Dz2qL778Si3bdszSNqae73qCtZ05PjN463rb3GwzsP0D9z9wvhHYDuZYzDEBOD4E8gEAAAAAAAAAAAAAAOC4eTPvbdi4MUs2Pm/wmgn0Wzz/N21ev8oOnc48QwMHDc4SfBaqd9/7QLfeMtiuK7fuewPrevcpNna3Vi9fbMu//u/nuvqv1/sF8xmjP/nMvnr329QzAXa+QXpmmY6du9rgRW+9n6Z+r/c++NAG0hlmm6a74Vq1avrVqVChgp3vq2mTxpr87Td649/DNPC6a+0+mmlTbph1Pv3s83Z577ruuO1WXdzz8iz7P3/BIi1Z+oet88nHo/yCK73MOTDnwnf/zfm578GHM4L5zPH6nkOzT23btrHzABwfAvkAAAAAAAAAAAAAAABw3LxZ+cZ88rkdfLPxeQP73nxtuF8Q2e1DblHHDu313feT3ZLQxcXF6ZKLLswIbMtJsLpmnxYvWWqD+0w32IYJXHvw/ntsNkHfLHPNY5r5BQqaeibALjADoSnzrWe298LQZzR5ylQbKHfkyFHbDud0Pdut4anTs8fF7lRozLpMcN7bI173Oyaz7WD7b5KE/uWqfu5UcOYcmHNx2aU93BJp0PUD7au3y+St27bZY/eeQ9NuJsjQ234A8o9APgAAAAAAAAAAAAAAgBJo3sIlen3khxr25n9yHb6f9qu71PExGfj2H9hvB282PmPOb3P9AsC8TADYWZ072QxygV24hqJevbruWO4C65p96nVZzyyBgA3q17fBdibozss38M7LrG/v3jjFJyRox85d2rZ9h9q1a+vOzdS0SRNFR1fXsmXLFRFRXvXq1rWZ9PKbhdAw66rvbL9undpuSSazryZA0eyTl9mm2XZ2TNubc9D/qr5+QXne/TUBfIZpm9feeMsvEyGAgkEgHwAAAAAAAAAAAAAAQAm0cvU6rVi1VmvXb8p12L1nr7vU8fEGfvkG7ZnMcKb72oJWvXp1ZxuR7lTOAut698kEpTVq1spvMF3m5lVCQoLN+pcbEyT38otDbQCh6QLXbC8/QXHewLpQma58c8qaZ4IRTVCi6VbYty1atu2oL778yq3lyfjn7VbYzDddE/tm/gOQfwTyAQAAAAAAAAAAAAAAlEA1a0TrriGD9Mi9t+c6XHbJBe5SBc8EkJlAslCYYDsTdFfYvPtkuqHdvH5VluGTj0dlyR4YjMm0F+Xsc173+96777Lb8QbFjXh7pDsnNCYzXkEyx2COxexPYFuYweyvlwnSNGWL5/9mMxfefufd+cqmCMAfgXwAAAAAAAAAAAAAAAAlSNmwMPt6cfdzdEb7tmoR0zTXoXbNaLtMYTGBZ8G6zzXZ3H6fv8Avg5/JbGcy3PkyXcmuWr3GnSoY2e1TMKYb3kCmzNtlrQmEK1XKs5+BNmzcaLPdBet21xz3G/8eZrMD5iWznenWN7D7XC+zXx07tA/a7W52vJkUgx1ndsz5evbpJ5We7snoB+D4EMgHAAAAAAAAAAAAAABQgtStU8u+Tp89z76+8e5HGnLPY37Dpi3blJ6ero2bt2rNug3atbtgutbNzmWX9rCBYvc9+LBf4Nz7oz6yWd0GXT/QTpvgMxOEZjLUeett2LhJ733woR0vSN3PP8++/uvfr/sF0ZngPjP4Ml3w+paZ7nBNWf+r+trsfiaozWStM9n1fLvKNfv+9LPP647bblXTJo3tMY316arWG8iYU9e3wYL2TACg6Z737nsfsNvwMtuePGWqbr1lcI5d6QYydc2xmGMK7OrX7K/3XPiOGyZw0QQwmkBGAMeHQD4AAAAAAAAAAAAAAIASpH3bVrrkgm5qULeOnU5KSrKvvkzZjDm/6+V/v6N/jXhfU3781ZaXCw+3rwXNBIq9/OJQG4DWsXNXNWrWyg4mE937776dkY3P1HvkoQfsuLfehx+N1vBhr6hVyxa2vKCYbZptGy3bdszYp3HjJ6htm9a23OvT0aNsubeOCSz8aer39ni8zLgpM/O89S7uebleGPqM+vXt7daSJv8wNWO+2a4J4vPtujaQ2RcT3GjW1evKfhmBe2YZEyBoyr3rG/fNBH3x6WgbNJhXwfbfDBERERnnZ29cnN/5M9t787XhGfMB5F+p2D1x6e44AAAAAAAAAAAAAADAKcdkpvPlnTYvJtuYmc6o4ymw02mpaUpTupwSpaWlKzU9TUnJqWodk/cgqsI07M3/aO36zKxtxiP33q46tWtp5pzflZySYsvKlg3TeV3P0mmVKtppyGafM1kETdCcb9AeABQ0MvIBAAAAAAAAAAAAAACUcOHhZXXz9deobevMrHYmYO/ynheq7+U97HB5jwsJ4gOAIkIgHwAAAAAAAAAAAAAAQAnWpFEDPfHQ3ep2difd97ebbcBexQoV3LkAgOKAQD4AAAAAAAAAAAAAAIAS7Oq+l6tenVp2vFSpUurf5zLVq1vbTgMAiodSsXvi/Dt6BwAAAAAAAAAAAAAAOIWkp/uHTninzUupUp7pjDqeAjudlpqmNKXLKVFaWrpS09OUlJyq1jGNPXUBAAgRGfkAAAAAAAAAAAAAAAAAAChCBPIBAAAAAAAAAAAAAAAAAFCECOQDAAAAAAAAAAAAAAAAAKAIEcgHAAAAAAAAAAAAAAAAAEARIpAPAAAAAAAAAAAAAAAAAIAiRCAfAAAAAAAAAAAAAAAAAABFqFTsnrh0dxwAAJwClq9aq01btisuPl4JCYlKS8v+VqB06VKKjKyq6GpRatygvtq0inHnAAAAAAAAAAAAlBzp6f7fl3inzUupUp7pjDqeAjudlpqmNKXLKbHfuaSmpykpOVWtYxp76gIAECIC+QAAOEUcPnJEP/w0Uxs2bXFL8q5Zk0a67JLuKl8u3C0BAAAAAAAAAAA4+RHIBwAoagTyAQBwCti6bae+/eEnHT5y1C3Jv9MqVdKVl12ourVruSUAAAAAAAAAAAAnNwL5AABFrbT7CgAASrClK1YXSBCf8efBg1q0dKU7BQAAAAAAAAAAAAAAjleZhx959Dl3HAAAlECr123Qb78vcqcKxr74BEVFVVX1alFuSQFa961e+HCKZuyJVvdWkW4hkGnN+BF6d9I87a7RRW2quYVwHNaGn8dr9Pif9OPMeVpbrpXOrFNGidt26mjFyipvf8KToNmjPtCYH9cqrFV7NYiwC57a4hdo5Ftfa8qqMmpzRh1VcIsBAAAAAAAAwMsk4PPjU2Az9TmvpsQk7DNTqWnpiq7GdxwAgLwhIx8AACXckmWr3DF/MU0bqXTpwE+e/mrWqG670g0mu/Xm5uCeVfr+s0817LURemGYGUZq2Dtj9dWqBLcGgPzYMvlTfbEgVocUqaatGqqKUnVwyTi9NdYZPlugRLceAAAAAAAAAAAAgOKHQD4AAEq4Awf+dMcyNWnUQH0v7+EMPVW6dPDbgQb16mjAX/qof+9L3RJ/wdabs8PaMHm0Xh89TQt3JuhYSpjKVaygimEpOnZor9asJpCv8KQobtkMfTH6PU1c5xahhNmihcuOOa+RumjwIA3s3VfXdopU+SqRquiUVqwZreAhuQbXR7FxaLtmT/pKIz5boDi3CAAAAAAAAAAAAKcGAvkAACjhDh4+4o5l2r5jl2L37FXTxg101RVZg/ka1qur/n0uU5kypTV3wWK31F+w9WYvRRsmfaovlh2QwiLVvvcgPf7oXXr070P04IP36vE7LlP7qDJuXRS8P7Vm3hJt2HNMR90SlDSpzrvMiFR1nx6vwxr30IOP3qsHezVUmFuWFddHsbFziX5eFav9nAgAAAAAAAAAAIBTDoF8AACUcGmpqe5YpqTkZH01/jvt3btPjRvV11/6XJYRzNewfj1PEJ8zPXHyj1qzbqMtDxRsvdnaM0ffrTLZwqJttrA+rSL9gorCqjRXn+4N3SkAAAAAAAAAAAAAAE4tpWL3xKW74wAAoAQa/tYH7lhW4eFlde1VV6hWjWht2bZDC5csc7vbLWWD+NZt2OzWDO7he25zx3K2ZfJ7+mTZMVXpNED3XhTtlmZj3bd6YfxGKeZKPX1VE7dQOrpziSZOnaf1e44pVWEqF1VX3S7toW71K3gqHNqueT/P0cJNcdp31OQmc+rUiNEVV/VQmyqeKr7rfqTLdo39com2Vz5Hdw7ppOpuFX8pSlw1U+Nnr9WueLNdqUz5SHW6epB61tmor4Z9qzWmK9Mhg9QtIwuat7yJrn30SrVwStaMH6Gv1kktrrpD52yboE8WxKpq90G6K2aDRo6ao31Rzj5cU1E/f/aL1hxqkLFcbsecud67dP7+7/TVjC3a7xx6mSoNdek1fXWm2SfvMQeoZrbfJdKd8nVYWxb8rKlztio2ox076MbB56iWp4K0f62+nzRHS3Ye8LRJxWi1vegKXd6qshugadYxQz8v2eLTbk6dHleoj1PHyuVcpDjbmDppnpbvMd0wOwVh5VStQ1/ddVGt7I+7YkN1v+oydatTzm4iOwe3LdDE73/XBrOQs95abS9Tryoz9PH0hMx28e6fOTe+10c+r8/g18AAdd86VuM2BTkfKWv1xWtTtKF8Kw28t4eausXBxM37VO86++7PvS73Be5vgmaP+lQ/xwfMD5C5P8e0fcE0TfZeD+Y81D9TV1zeSQ1Nn71+6+urStO/0nfrDqvZVffq2hj3/TNjlbabtnaUqdJcfW+4TG3ssiEI4X0d0vvAy3Rd+/2Pmr7JXLtmXa30l56n6YfP3Pdhtn8LvNdk5nWvsMpq0+ta9W/l/g3SAW34+Rf9sHxH5r4G/p3Ktr0Gqe50U+5Wy+D+HTHtMHWms997M94Ptc7sr9u65/L3FAAAAAAAAEDI0tP9Qye80+alVCnPdEYdT4GdTktNU5rS5ZQoLS1dqelpSkpOVeuYxp66AACEiIx8AACcwpKSkvXfcd/abnYb1q+r/r1NZr7QgvhCl6DtO0w2vgpq2TJ/QSdH132rEZ/N0JpDkWrWqrnatKqrSge26Oexn2riNk+duOW/aOq6A4qo38SZ31wt6oTr2J5VGjdmmrZ4qmRKWamJXy/Rdk9sUTaOac2k0Xpr0jJtj09V+TpmvU1Uu8JhHT3kVsmjlOXT9MWCWE8QkJ9Y/fy/ac7xZe5QKMfsFTf7f/po3jHVimmiehWl1P1b9P1n7nFXaegs21C1ytuqqlLHrKu5WtYIHuy2ZfKn+uTnjYotU10tzHZjqissPl773fmKX6AP3puihXvKqJHdL6dNtFdLnbb6dMlht85KfeesI6F8XbW066il8kdNnbFZ9j3YuTi6bopGmG3sTFBKuVp2P1rUqKCDx9z1u+xxzzig6t7jPuS0z9dOO+ZwXlM2TdHIsXNsEF+ZKKdtnH1LXv6dvpjnv+68yMu58r8GwtSirScT5b5lGxRnxzxSVq3SBue1XEzzHIP4jPI1mjrbrCVPXFtl1bP70FS1co5n9Mjx+nDeA+NH62PnXP4Z1cCWt6lfQYmb5uiTD7O+r3ZMn6CJ6w5nXN8Hl4zzvH8Onaamdp8aquqhBCWaPwchysv7Osf3gZGyReM+HKefTRBfWKSzT069lFX679cLddCtkq1Dy/SpvSYPq2pjTxs1rXxY+w54DyZBs0ePds7tFu1L8Ryv2deUeHMd+Lw3fPi3Vzlnv5311nEDXctHZ7RZFW3XRGe/p67bq7AabjvUKKO98X966gIAAAAAAAAAAKBEKPPwI48+544DAIASaM7vi9yx4NLS0uxr08aegKL4hETNmPN7RnlOzulypjuWk6PatugPbTpSSS3Oaq8GEW5xduLXasbqBKlac3VvFSmlbNS4sfO0u3In3fm3y9S5RTO1atFSnWsd0LyVsdpxqLK6tYmWSldT54suUNc2Zn4ztTm9sVKX/6Fth/6UGnRSCxPl5F134p8q26Gfbruhh3qcUUfeXFl+tv2ij37ZpdTytdRz8GBd06W5s97m6niGs65qpkKCVsxeq32KUOMzfI/LWx6pNt2a2+xe+1bP04p4Z86BMHX660Ddcvm56lzPWeDITs1ftE1HjiToaK0e+tstV+rS85xlQjzmBHe9R8q11t9sPWf/zqql/QvXaPdR97jr1HSWramjy8w5kBpdcr2u7tpMjSPLenbXj7Pv0xc59Zz133S9ruzgbLdVG3U9vZ4qhZdVmAlW+vw7LUtvov5/u0YX27Z2ttmmnNbO36KdsWlqelZDVU4rrRpnnKdeZ7W058KsIyZllRbsOKzEUnXVLaZyDudiu77/fJa2pZRTvYsG6t5+ndTGns/2znKejHXe9jwS1lyD7+mjbmYfTo/U7qXrte+os856XWQunaz26sevpmvLMed67zVEd/Vq52nXzvW1/48/tMspr9CovefcePcvor46+14j+bw+vecq8BooHR3hOV9/HlTlVt7rKEXLZvyoNYmV1enyC9Q0l+x14ZH1nW1GaIu97urqslsu13kt6isq3JkZuL8Z70f3uq2e/fWRsm6KRs+OU9Uug3Rvn/aec9mmveocWKJlO2N1sPKZalczyV3fUe07VlN9brle117cVW2c98im336yx9ziitt1XTe3XTo3VVS5sgoP8edEaSG8rzOuh5zeB0692F+/0ZStzkmuc77uueNSe67andFRMUfX6PcdR7Oea19b5utb044xPfXwX5zry122RWQ5hTsHE/vzf/V/65x11zhHd97ZS13svp6hzjX2auHqfdq344hzWTrHntH+ge1VVlGNnGOM2O45X5U76LoB5+tM59xUcs7hT787fyeqdNKQWy52yjzr7tiggrNt307KAQAAAAAAABQWk4DPj0+BzdTnvJoSk7DPTKWmpSu6WtAH1QAAZIuMfAAAnOJaxDRVjwvPtYF7O3ftUbWoSF3b7wqVLVvQASKp8uauypNta7XmqPMav0DvDhuhF7zD/1Z51rf/kBKdl0p1akm7lmjqpG/18ahReu21TzXbppE7pqNmeV/lY3TRRfVUyZ0MZsvyjXb9tc65Ul18u+Y8DuVanaOeGV1s+opWt8tbqaq3yUM8Zq+mXc7y6Q60oZrWN69BjjtXp6mqTet2QHPHfavZ6xJkk9tVrCCbsG3/Bq2Md16PbtS4ET779c4MxZr5hw7IJiusWEt1nZJ5P0/RV599qtfeGal35x0wc3TsaJJ9zRB4Lrat0mqz3zW66JpOOT/kqNWhg+q54yrfRC1qe0ZTssvIt3+LtphronwrdWvncx7CaumsDvl8oJLHc5X1Gmios9qaLGwJWrnRzdp2aJUWbXJea3TQOTU8RUVhy2rPe2DfvE8zj8sZvlhmj0yJh/0zwtXq0kPtq2T+3ahSxZNdbs3PX+n7ZbE6aM5LWAVVysOflry8r3N+HxzQhq3mGiyn9t07qKopssJUq10r2djcnDjHYt8a62bo46mrtN1mzwxTpYrmYHzWfbF/17zlY7qpk1nQec+sCMjOGNhe2apc2bO/+5foq/ELtCbec4FXqhhKykUAAAAAAAAAAACcLAjkAwDgFNayeVNdeemFSktL1/8mfK8vx03Slm07VLtWDf21/5UFFMx3miq5wWEbvIFKeeGNyqrTznb9m2W4uKmqynQB+qHeGjtDCzb9qXI1m6pLj/PVIrtMZvUb5tpd6dGjnmClKlWC5ufKl0aNPFkPs6ji7I/vvoZ0zJnCyvufp/yftTC16X2tLmrsHHP8Rv08/lO98toofbFgryegL1VKNq8Vm6hnsP3q3Ul1ndmmq9nX3hunqUu2aH+5aLXsdKF6xmTTjoHnwml32/JVKucYaGlUiXK7IbXCFNAMWXn3v0KkcklyF7o8nqtg10CtLh1Uy3mNXb7WdvF6cN0qbTflbZvn2gaFyXto9ToEOS5nuDTmNE8Fq7KaNvE/x7Uu6q/+7SJV5lCsFk7+Sq+/NlIjp27JvRvbDHl7X+f8PnBOvj2eCqqWn5Nf43zd2LuVqoUd1vYl0/TxOyP18qhftMFGrua07kjVtcGYgYGHWdsrW2HN1f+Gc+zfiH3r5uirUc6235mgeXvcEwQAAAAAAAAA2UhJSdXvC5fq0y/Hadib/7HDuElTlLj/gI4cPapJU37SOx98Yss/++94LVj8R0g9NgEACgeBfAAAnKJMEN8VPS+yQXxfT/xe27bvsh/O/m/iFBvMV6tGdAEF84WpTVtP8FLsnJ892cvyIyVSDVs1V5vAoXGkwnbO03emW8uK7XTjvQM0sPeF6tauoepmm7Aq9GM6dCiPwYcpxzwxPcFkt9kypg/UIHI6ZrdKgStfS92uGaInHhykGy9qrioph7Xh53Eat87nqFLLqXqw/WpVS5UUqxlTTSa3Cjrzujt02zWX6fIurdS0TnYnI5sjOXQoDwFfeXTssLJchkdT3ZGcpWRXL9RzFexwK7bVOY2d1z2rtMK53tYsN/kNG+qcDgUXRHo8UqLqZT0uZ2ga5XswZZT1DFdWm16DnGtpiG7u3UGNyqdo35IJ+mRegjs/F3l+X4fimA4FnvyjQa6HIKq26qG7HrxLD9xwmbrUL6fU+GX6YuwCxbnzpcPaZwP7fCVoxx7zWkFV/YL8grVX9srX6aSBf79Ljw/pr56tKiv10BZN/XKK1hDLBwAAAAAAACAbSUnJevnfb+v90V9o+ux5Wrt+kx2+n/qLnn/1TT35/L804bupWvzHClv+66y5+s9Hn+ufr7+rpGT7s3gAwAlGIB8AACWcya4XqEZ0dV156UVKTU3V/02cbIP4vLzBfJs2b7PBfFc49YIJtt7shLU6X91M97RHN+qrD7/VUrdrSK+U+LWaOH2LOxWgTkNP96l75ul7E9Tj4+CmZVphutn0dukaVs7TBawR73YDm09NW3qCD7fP+FkrsgTnGJGqbjMNJmjLjsz9ilu4RBvc8XwL5ZjzK8fAnwTFerN8hUWqYafLdG0Xk/XumOLi/5SiaqmeaeCjq/RzQDBWyp4lWrjTjB1WoudkqHzGyUjQmlUhBm81bu7J0Ldzjr5flY8MjjmJivJ0e3poleas8mlX57r8eamn698M1aI8XanG79COjCivBM1bGHCdFsi5ClMLG+y6VyvnLdAfTjuWa9dBbQotWjMHPtdH3cYmT2CwANzD2rBkrV+XwVkdVtwe9/yFVVA952/AgB6e99S+nSFeCwX6vnber7b/3MNaMm+tT+DeMa2Zt8qznRwcjN/rBpaGqVKd5up5zYWe6zQ+VvucdTdt4nmfLP3JN7DPubTWzdYC251zQ7Wo4ykLSapPF9TOtmO9b8uoeurS+wp1s931Jigu4LIFAAAAAAAAAK8J30/V1u071SKmie1l5aVnHtGrQ/+hs85srwN/HrRD17PO0L9eeEIvPf2w/nbLDWrWpJE2bt6qid//6K4FhWXE2yP1xFPP6qh/dy4ATnFlHn7k0efccQAAUALt3hNnB19lypRWg3p19f20X/yC+LzS09O1Zv1GVa8WqSOHj2iD86EtUNNGDdS0cQN3KjcRatwiUvtWrtfeQwlas2i+ZsxbooWLlui3WbP084L12l0hRt1bRUrxazVjdYJUrblnOrym6odt1IItB7Rv9VIt3LRbu7Zs1OKZU/X9wgTV7theDSKPaev8zUo8tlOrNu115q/SLz+v04HwVKWmSNVbdVEbE8QTuO4clI6uqbB1K7Vp/z6tmr9QS53t7tiyVnNnOm12Wie1qBahiAOrtGjnMSWsX6oVO/dp0+JfNW1PuKIOHdYRRapNt+Y2cGzf6nlaEe+zH15Hdmr+om06ElFfnc+oo4z8a6Ecc0T2681aHqEjWzxl+zau1Y64zVr1Z021qeOsxM8uff/Of/WDu71VKxdp5h/7lKzKOv28rmp6WmU1jNqrhU4b7t/yh2avitXeHZu1bP6vmjRzvUo1Ndsrp6NbF2ndgWPatmaLdu/epqUzZ2rFwbLOuUjNbPvszkXpaqrtHPti59j3rl2k2cu3aNeubVox/zd9t+M0dYtxrqOQjztQpGp623Wt264blmjytBVKr1pOBw8lq0Kj9upcz2mXiPLav3y5dhzbrzULTZtt04IfZ2t3eBWnnvOhOi/XZw7nyqt0dIT2L1yjdVtjdUDl1Lb7xXLeMo7DWvjZu/pwSqyqdmmpWtn+DCdBK2avtUFl3uvOytLOR7Vt0R/adMR5T57h2bfsro+OZzR13gNO3f3Ouhcu08bYPdq0foV++e4X/b6vhs6012yw9RkHtXjsaH22yHONrFq7QtPnbdGRNOdvR5cL1a5mUu7HVT6093Wo10P1mmW01nm/7Y9fr3lLnOtq9yb9/uOvWpRWVeWd92xy4PvQx4E/xumtr/5w2maX1q1dr8WzF2qDOZjGnXR5m2hVrR+p/X+s0e5E5zqZZ9pwl/N341d9N3+P8/6poDa9+6hrNROZmV17uUod0ArzN8E95m1/xKp81EaN+XSG2/7rnffbfC2OS5aqtNQF5zV03p0AAAAAAAAAClupUu6Il0+B+U4l3Xk1Jc6oM56u1LR0RVfzefZ9gpl9Mtn1TK9Lzzx6n+2lqVLFCqoQEaHKp52m2XMX2Hq33HCtTepQqWJF1aldU53POF0/TZ+jXbG7denF3W2dUJnAtOeef0ldz+6iqEj/YzfBas8894JWrFylLmd1dkuLTkJCou6462498PBjemPEOxlD6dKlC2X/vNsr5Vw3LVu2sGXzfp+vgwcPqfv55yksrCh+2Q+gOCIjHwAAJVy7Ni3sBwNf5ldWY8b+X9AgPi+TmW/C9z9q6i+z3JJMZn3t27Zyp0JUsbn63zFEN17URLUqOh9IUo7ZbmsPqYKq1WmnPt3quhWzqt7lGt3Tu5WznHRo50atWLVWm49FqsVFF6q9yfRXsZ2uuaadapUPs/NXb5XaX9dX3Y6rZ9JIdRs8WDd2b6hq5aX9drtbtdcEg9lUbVKti/qrf7tIlVGK9m3aqM0pTfXX67pkBlEdh1yPOY9a9OqrM01XqCkJ2rBqhw6FlXHn+IpUmxjnw/Uez/ZWrIuTajRRzxsGqKebTax8zJW6a8A5ahpVTorfYuutjy+n2h0uU0/TPaxzPs+8ytlWjXIqcyhWa9Ztdy7C/hrYJfSTUb3LAN3r3cZ+Zx12G1J09Glujfyr3qW/bnbOaZWwFM+1si1VzXoN0FWtAjs6jVbP6y5z2tpts3U7lBJzhQZ1y/rgpWDOVUOd1dYNyarSSmfZtjS2a4PJdNi4eaFm6At+fTjvgRsGO9d4tCrqsLavc64JZ97RKOeauLR1Ltf5aaoXU0tVD+/wXEvOcgcr19KZvQdrYDvT1iEcV0G/r6M6adANznVVJUyp9tp0zmmTS3R7n5jMjH/ZqFqnqepVPqzN9lic83vYOT7nmr/nmlaeZcMaqs8dTlt1qKUqMm24Vmt2JqmS87etvymPCby+suHs47U9G8r8iTTHvD7eE/zawrmOdtn2d9a7x/nbE3O+br7pfE82SAAAAAAAAAAIkLj/gI4cParaNWsoPLysW+qRnJLZbe7Ro/49zZQrV041o6vZ75EOHc5brzmDrh+o6OjqWrZsuVuSafmKldq+Y4etU9RMwGHHzl117913afP6VRnDT1O/V4UKx/XF0gljjsEMAEqeUrF74kxwOAAAKMF+mfmbFi7J+sEpv87s0FYXntfVnQJOfnHzPtW70xNUrfsg3dWlaH4luf3n0fp4wQHVumiIbuvkPizYNk3Dxq5SvV53aWC7QozkO9FK6nEBAAAAAAAAOGmZLHa+vNPmxeRLsJn3vHU8BXY6LTVNaUq3GfnS0tKVmp6mpORUtY7J+MX2CWcC+R5+6iU1b9ZYj973N7fU49spP+mb76ba8av79tJll1xgx71eeW2kNmzaotdfeUanVarolobmmwmTNO6bCXrzteGKjKxqy0w2vudffEVnde6kfn1727KiEmz/iooJxIuN3a1nnnpc5cvn9nNzf94gPhOMCKBkISMfAACngHPP7uR82KrkTh2fSs6HNrM+AAXo6CrNWHDAGamnM1pl/uIvbmesjqmh2rQqWcFuJfW4AAAAAAAAAKA4qFL5NEWUL68dO2N15MhRW5acnKJtO3bph59m2Glj8rTp2u6Uee1LSNR2ZxnTDW9eg/gM002sMX3GTPtqeLPxeecVlQ0bN+m9Dz60wW9FHcQHANkhkA8AgFNA2bJlddPAv6hZk0ZuSf40bdxQNw+82q4PwPGLW/Ctvhj/lV4bOU0bnOla3S/UmT7PRqp3GaSnH+2r9iUs3q2kHhcAAAAAAAAAFAelSpVSmTKldejwEd33j6F69Y139eCTL2joP9+wXe6aXpfMYLrPfc4pu/fR52ydfzz7Tx07dsxZtoy7prwxAXL9+/W1We8SEhJtNr5x4yfYMt/gOZMZr1GzVhnDjTcPsfW9FixcpF5X9rPBd77MtCk3873TgwYP0YqVq/TEU8/adZl1B2O6/O3Yob3atmntluTM7Lt3nd4hsDtb7/bNq5nnW9e7j4Y5NnOM2e2bV27bNOs0Za+98ZYdzHhg2wE4uRHIBwDAKaJ8uXD1u6KHel1ygVo2b6pq1SJVurRJ9J49M9/UaxHTVJdd0l1XXdlT5Zz1ACggqQnasC5WR8Oi1b73YN1WRN36AgAAAAAAAABKhpSUVI0c9akOHjpss/KVL1dO6zZstpn5ateqoTtvvUHXX9vPDnfcfL1q1YzW4SNHbJ3y5cvZYf+BP+06UlNT3bWGzpt5b8PGjVmy8XkD1Uyg3+L5v2nz+lV26HTmGRo4aLANiMuPd9/7QLfeMtiuK1j3vWa7v89foFq1aobUja3Zj6uuvs7W9+6j2V8TSGf236zP13PPv6Rzup6dUfeNfw/T1X+93i+YLzehbNO0kyl/8P577GDGP/l4FBkGgRKkVOyeOP+O3gEAAAAAAAAAAAAAAE4h6en+oRPeafNSqpRnOqOOp8BOp6WmKU3pMqkT0tLSlZqepqTkVLWOaeype4J9PeF7Tflxuh03iR0evud2Ox6qYW/+R2vXewLqLu95ofr3vsyO54XJPPfTz7/a8YsvuiAjuM4EpZkMc2++Ntwv+MwEqT3/4is2iM10fWvqPf3s83p7xOtq2iSzHU2w2933PqAXhj5jg9q803fcdmvQAD6vwPXnxpsFL7BuXrZv1hEbu1vPPPW4DaK878GHbWZCbz3f+Sa4MNRtGtnVBXDyIyMfAAAAAAAAAAAAAABACTBj9u/uWFYfffaV5i/6w52SM77UlmVnxux57ljemAx8+w/st4M3G58x57e5NhgtMIOcCWQ7q3MnG8CXn25i69Wr644dP7N9sx8mw16gunVq2+55zXF4Va9eXe3atXWnMjWoX99mIzRBfLnJ6zYBlFwE8gEAAAAAAAAAAAAAAJQApptcL28CQSM+IVFz5i3U9NmZAWHTZ8+zZWZeMKZ73vyIiCivenXr+gXtmax4JgNdQTOBdJGRke5UcCZQ0GTjM9sP7BY3UHxCgvbujXOnToyi2CaA4olAPgAAAAAAAAAAAAAAgBLMdPvreU2zr4Z33DuvMHmD6UJhAvNMgF5BMtnuFi9Zqh07d7klwUU5246OLphtm2BGE9SYm4LcJoCTG4F8AAAAAAAAAAAAAAAAJUDrljHumFSqlDviiKxaWdWiIhXTtLFbIjtuysy8YJo3y6xbEEx3s8G6zzVZ8n6fv8Avg19cXJxTL8GOey1btlyrVq9xp/KmbZvWtovaDz8anWNWPm82wWBd2ZogQBMM6NsFrtlPs1++vMdjAhdNAGNu8rpNACUXgXwAAAAAAAAAAAAAAAAlwG03DVCDenXs+PadsVqybKXS09NVpkwZvTr0H7rqykvtPMOMmzIzz2TnW7R0uXbs9HR/W6d2Td0xeKAdLyiXXdrDBqzd9+DDfsF874/6SNt37NCg6z3bq1untg26G/H2yIx6GzZu0nsffGjH88ME1D3y0AN2O7ffeXeWYEITYGi2Z+rdestgTZ4y1U57mfpDX3hJvS7raQMOfZn9MvvnZY7HBN9dcXkvtyRned1mdgGRAE5+BPIBAAAAAAAAAAAAAACUAKdVqqgnHrpbvXtdoiNHjurt98fooSdf1Mef/0+/L1yq7Tt26VhSkg4fOaJtzvhv8xfpw0/+q/v/8bxGjvpUR48d0+U9LtTTj9yrKlWCZ+rLLxOw9vKLQ21QWsfOXdWoWSs7xMbu1vvvvp2Rjc8bdGd465lMesOHvaJWLVvY8vww6//k41Hq36+v3/bNcPVfr8/Iete0SWN98eloGyznnW/qm+XuvfsuW8fLdAH8wtBnbMCdt65Zzixv1hOqvGyz+/nn2Vcz/8abhxDQB5QgpWL3xBV+Z+cAAAAAAAAAAAAAAADFlMla58s7bV5MF7VmOqOOp8BOp6WmKU3pMr3YpqWlKzU9TUnJqWodU7Dd0ubH/v0HNO3XWZq/6A/ti/fvpjZQeNmyOr/bWep1yQUFHsBXUpksfM89/5Kee+bJPAXtAUB2COQDAAAAAAAAAAAAAACntJIYyOdr9569WrlmvXbF7rFBfaWcY6gWFanq1SIVXb2aWsY0Vfny5dzaCAWBfAAKGoF8AAAAAAAAAAAAAADglFbSA/lQ8AjkA1DQSruvAAAAAAAAAAAAAAAAAACgCJCRDwAAAAAAAAAAAAAAnNLIyAcAKGpk5AMAAAAAAAAAAAAAAAAAoAgRyAcAAAAAAAAAAAAAAAAAQBEikA8AAAAAAAAAAAAAAAAAgCJEIB8AAAAAAAAAAAAAAAAAAEWIQD4AAAAAAAAAAAAAAAAAAIoQgXwAAAAAAAAAAAAAAAAAABQhAvkAAAAAAAAAAAAAAAAAAChCBPIBAAAAAAAAAAAAAAAAAFCECOQDAAAAAAAAAAAAAAAAAKAIEcgHAAAAAAAAAAAAAAAAAEARKhW7Jy7dHQcAAKeAuIT9Onj4mFJTU1WmTBklJ6e4cwAAAAAAAAAAQEEJL1tWySkpCitTWqdVqqBqVU9z56A4Sk/3D53wTpuXUqU80xl1PAV2Oi01TWlKl1OitLR0paanKSk5Va1jGnvqAgAQIgL5AAA4hWzZuVelnQ+XFSLKKbxsmMLDy7pzAAAAAAAAAABAQUtOSlFScooOHTmq1LQ0Napbw52D4oZAPgBAUaNrXQAAThEmiK9CRHnVqF5VlSpGEMQHAAAAAAAAAEAhCysbpgoVyiu6WlX7I/vNO/a4cwAAAPwRyAcAwCnABPFVjCinypUi3BIAAAAAAAAAAHAiVa5U0QbzbdlJMB8AAMiKQD4AAEq4fQl/qkzp0jqtUgW3BAAAAAAAAAAAFAUTzFe6VGnFJex3SwAAADwI5AMAoIT78/ARRZQPd6cAAAAAAAAAAEBRiogop4OHj7pTAAAAHgTyAQBQwqWmpiq8bJg7BQAAAAAAAAAAilJ4WJhSUtPcKQAAAA8C+QAAKOFKly6t8PCy7hQAAAAAAAAAAChK5pl9mdJ8VQ8AAPyVit0Tl+6OAwCAEmjd5p1qULeGOwUAAAAAAAAAAE6U9Gy+jd+6c7eaN6rrTqE4SA84Wd5p81KqlGc6o46nwE6npaYpTelySpSWlq7U9DQlJaeqdUxjT90TbOeu3Rr9xdfauHmrW5I/TRs31M3XX6NaNaPdEgBAYSPMHwAAAAAAAAAAAAAAoAR4+/0xxx3EZ2zYtEXvjPrEnQIAnAhk5AMAoIQjIx8AAAAAAAAAAEXDm8AtEBn5ip+SkpFvyD2PqfJplTT8xSdVOp9dOKelpenhp17SgT8PatRbr7qlAIDCRkY+AAAAAAAAAAAAAACAEqJsWFhGEF9KSqp27d5jx71MgJ4ZfJk6pq5hljXrAACcWATyAQAAAAAAAAAAAAAAlEDffPeDnn7x337BfK++/q5efeM/7pS0K3aPrfPNd1Pdkrwb8fZI9bqynzZs3OSWZDp69KieeOpZW+dUYI7THK85bgDICwL5AAAAAAAAAAAAAAAASqADBzyZ9w4c+NO+GjYjn9+0Z9y3LK8GXT9Q0dHVtWzZcrck0/IVK7V9xw5bB/lnAgRPlWBI4FRFIB8AAAAAAAAAAAAAAADyLTKyqvr366tx30xQQkKiW+rJxjdu/AQ7z9Q5Fdx79116+cWhKl++vFsCAKEhkA8AAAAAAAAAAAAAAADHpfv559nX6TNm2lfDm43POw8AkD0C+QAAAAAAAAAAAAAAAHBcArPyZZeN75sJk9SoWauM4cabh/hl8VuwcJF6XdlPGzZucks8zLQpN/O904MGD9GKlav0xFPP2nWZdQfjrWteTfe0vtv3rs8w+2H2x5R56/l2Z2vKfZcNtp+mvtkfc/xe3vV6lws8Zq9gbfPLr9Pt+GtvvGWHwOUDlwncNoCTB4F8AAAAAAAAAAAAAAAAp4iYpo3sUBi8mfc2bNyYJRufCS4zQWYm0G/x/N+0ef0qO3Q68wwNHDQ4S0BcqN597wPdestgu65+fXu7pcE99/xLOqfr2RnbfuPfw3T1X6/3C+YzRn/yWUY901WuYQL0nn72ef009fuM5e+47VZd3PPyLMv7Msdljs8ENHqXM8d834MP+wXzmfW/98GHfuvvdWlPdWjf3o4/eP89djDjn3w8ygZHmiA+3/ZcvXyx2rZt464RwMmGQD4AAAAAAAAAAAAAAIBTxL1/u9kOhcGblW/MJ5/bwTcbnzew783Xhvtl6Lt9yC3q2KG9vvt+slsSuri4OF1y0YVq2qSxW5I9U/cvV/W1QXReJvDPBMeZzIG+WeyaxzTzq2eC8eYvWKS3R7zut63slvdljssc32WX9nBLpEHXD7Sv3m6ITSDg5ClTs6x/wHXX+rVVoK3bttn99NYpX768BjrLmFcAJx8C+QAAAAAAAAAAAAAAAEqg8PCy7mu4fT0RTAa+/Qf228Gbjc+Y89tcv6AzLxN0dlbnTjaYLVh3s7mpV6+uO5az6tWrq127tu5Upgb169sAwyNHMgPxTJmvZcuWq76znbp1arslmUzmvsVLlmrHzl1uSSZzPOa4+l/V1y+4LiKivOrVrWsD8QzTNibYL9j6c2L203S3m12XwgBOLgTyAQAAAAAAAAAAAAAAlECXXdJd11/bTw3rhxbsVhC8QWq+QXsmW11s7G47XpBMcF5kZKQ7VXACgwO9AXd5FZ+QoL1742z3vY2atcoYWrbtqC++/MrW8bZNrVo185xJz2QE/Pq/n+v+hx616zVdF2eXGRBA8UcgHwAAAAAAAAAAAAAAQAlUvVqULjyvq0qXLtrwEBOgZgLVQmEC80yA3olkAg9NAGJ2AjP0hSrKOZbo6Oo22G7z+lVZhnvvvitPbROMCZg061o8/zebWfD2O+/OV2ZDAEWPQD4AAAAAAAAAAAAAAIBTVK0a0apUqaKaNm7glhQOEwwXrPtck0Hu9/kL/DL4xcXFOfUS7LiX6d521eo17lTemXWadfjybju3bHgmQ1923efm1C2uNzuhqZOT7NomL0zbPfv0k0pP92QCBHDyIZAPAAAAAAAAAAAAAADgFFWlSmW98coz6n7u2W5J4bjs0h42qO2+Bx/2C1h7f9RHNpPcoOsH2mkTEGcC40a8PTKj3oaNm/TeBx/a8eNh1mHW5WW2bQL0rri8l1sSnAky7HVZT9197wN+y38zYZImT5mqW28ZHDQQ0JT1v6qvXnvjLVvX19gvv8o4vuzaxrdOsGA/3/mGCVQsVcqTCRDAyYdAPgAAAAAAAAAAAAAAABQqE9T28otDbVBcx85d1ahZKzvExu7W++++nZGNz9R75KEH7Li33ocfjdbwYa+oVcsWtjw/THe9Lwx9RkNfeClj2yYw7otPR6tpk8ZureyZbnDvuO1WXdzz8ozlx30zIdflzfH+NPV7G0ToXc4MERERfsccrG32xsVl1Ol+/nn21cy/8eYhNoDPzPetb/bnzdeGZywD4ORSKnZPXLo7DgAASqB1m3eqQd0a7lTBOHLkiObPm6vt27frzz//dEuzd9ppp6le/frqfFYX+6EEAAAAAAAAAIBTgeniMpitO3ereaO67hSKg/SAk+WdNi8mw5mZzqjjKbDTaalpSlO6nBKlpaUrNT1NScmpah2Te2BYYbjt3n+oapXK+tcLT7gl+fPI0y8rcf8BfTDin27Jyc1k0Xvu+Zf03DNPhhS0dzxMJkHDBP4BQF4QyAcAQAlXGIF8P/84TTt27FCHDh1Uq1YttzR7sbGxWrJkieo3aKALLrzILQUAAAAAAAAAoGTzxn0FIpCv+CkpgXz/fP1drd+4Wc2aNFTp0vnrpDEtLc1ZxxZnHY30jwfudEtPbicqkO/o0aN6/sVXdFbnTurXt7dbCgChoWtdAACQZyaIr3379urUqZPq1auX62Dqmfo7tm931wAUf+smjtSw0YsV704XC+sna9jrYzWvWO3USYB2AwAAxUjgfWb8/LHOvcpkrXOnT2rxizWK+6582KRxr4/UuPXu5HEqUdcUAI8T+feVv+UAcNK7oueFatigng3EW7t+U74Gs6xZh1kX8mb5ipVavGSp2rVr65YAQOjIyAcAQAlXGBn53nt3pK666irVr1/fLcndtm3bNH78eN1xZwlLI560V4unjtV338zXkv3JUoU6uuDCq3XVwHNUN9ytk6ND2jFror6d5iy/cqf2OiVVqzRT5wsu15X9nHVU8tQqKcwXSqNmJbhTjqa99Ggf/1++mS82x29wJ3w0632X+jdzJ0xg1qRN7oSH3/xQBFmH4V2P3Y/4rhoyuKOi3HlFzu5zorrfNEBdCmynEjRv9FhNd05L7m1ovmCcrPVqrKse6KUYt7TYK5R2AwAAhS7Y/VpkMbs/y4fA+0zPPXLVE3R/5b33iyyceyMT/DFmtdqdUvddnnvk+HMHaEjnSLcsrzzrUF4/02TjxF5TeZTN57Co42q/rIp1GxQrmZ8H/RXO3wjOS068n7cDeJ+bnMi/ryX2b3kh/hto2+w3RRXQ3/FTS7Brv5DuU4qQN4FbIDLyFT8lJSMfgivMjHzeLHxffPmVWrVsobdHvF7o3fcCKJnIyAcAAPKllPmQmgd5rX9ySNTvw+7RS2OW6FDdzurXo5NitFO/fjdCzw6brj1urWwlbda3T/xN9705QdNW7lRylYZq3bCKtH+9pk0Yoftuf0W/bE92K5/87AP7FS015IG79KgZbuqqqA2TNWxi1i9x7INqbz138H0Qum6ldJXPvCHnRmr9pFAzWJgHhCM1bJL/OrzrOZWtn5VzBsL4+XOzfqkAAABQ4MwX7eZ+zQTi+9+vXRX1m0YVYOayU078Zi1LiFRUZIKWbcgSuZMn5v6+2GWwxknCBGj4vLedz4aa5VxPwT4bFjMl9roP+Aw+5Fxp+hj+1p4oNlOrG8zrex7scxO3DgpAAf4biAJigruDXPtXNXXnFxDuWQB4mcC6T0ePKpQAu/Lly+vlF4dq8/pVmvztNwTxAcg3AvkAAMApbebM2brl1tu1cOEitySP6vXV0A8+0itD79UNtz+sVz54Rv2ipcSlX+v3zW6doEwQ4NMavS5ZVWPMOr7UqFGv6vnh72nU//6joX2bqWryUr3z8hdam+QucrKLPNs/e0pUR/U3gXMbVue5y6eYPv6/3o/qfJm6O6tavzK3L37Ml8KTtd5+SZE1A0BU5wGn7i+nIyMVleCci2yfaiZo3YoERTn1AAAACtO6iSZbjskAnDUTS0wf74846PIvP+Kde+/4pmerf5tIxa/YzBfaKB6O47Nhdsxnu2Cf+RCa0D9j5w3nJSsTYDR+g/k3L0gmN+e9MSSgFwPkX6H+G2jOVbBziBwkaN4s529M015Z2i2mT0nLBgkAABA6AvkAAMApa87s3zTirbd15MhhnXbaaW5pXlTVWYMHqE1Vd9IIb62zzjIje5WcQwBe0vKv9f7SZKlOLz36XMA6nPW2ueFZPdCjrLOayfrqV9Ph7skvqlnjLL8kj4o0B56o+Iynpwl2PKq2X4OEIFJRITzgi58/xfOlMA/Cs4pqqXaRCZpuHqIGs36ubbt2bdxpAACAwhC/WNM3mC7/sw/08ASY5HDfgmxs0q+zEtSstXNf3rRlLj/iAE4se036fTZE0QrtMzaOk/Nv3jjzdzmHf/NQUPg3sPhJ1I6E/DwDBAAAKNnKPPzIo8+54wAAoASKT/xTVSpXdKcKxsIF89WqVStVrlzZLcndgQMHtGrVKnXq3NktKVq//TZXr7/5lsqUKaMnn/yHWjvHUzAOaesvEzVzW1mdfnF/tarmFgfY8P3r+m5dmi645XH1ahzulvoqoxrVyuj3acu1el8dXdCzqSomTterg/6hN9ZGq8fZ4Vr04at65Z/va/Q307R2X2U1bddIlcu4ixuJKzX13Tf15lvv68MvJ2jW7xuVWqe1mtco787PXN8FZyRr9hsvafgbH2v0d3O0p2wLdWhe1dmLQha/XrPXHlWjDu1UL8IUHNWOJcu1p0Y7nVHXFoQoQet/W64/m3TOYbkE/TFtvv7s1Es9Qlh3/Jr5Wn2kvs7oUFuZtU1Gv4/1xS/zNXuuO+ytrm4t/LPUmV/Uv/XVzMw6a8LUync98Ys16j/j9WN28y3TBfBYTfLWmRunGi2k1X7tVRA8bb4lop16NNmnRUsPqkbXGPlfus5xT5ypLXW7qsdp27Voa3m1CqhjugL68Hvvvs7X7ujOapXxxY/nWFY5ZWGz3Ho+7RbYXqvCqit52lh9sTWgbYtVuwEAgMIQv/xXzd5aW92vCLwf8RWhCsnr/e5b7L3IGufeIXpz/u4XfO5t7L3JtBRnuaOa7FsvyH1fVoHrzrpc4H3mkZ3Lg95fFbj1czVpbaSnbSPKK9nZj+mBx2S6uBuzQGEtAu6b3PuwzeYeT57x2VuPOreSzr2hPc71nmUU65yXONV07ruOTPO9P/RvY68s981Z6uV8H1k8JGqVc/xHGuTwGca26zSf4wy8X/asQy06q+aGwHvjZlnXm8t98Qm7pvIjy2dA15HMa8eUZ7yny8x128732sj6PgtsJ8+1tT3LdZfz5xZXlvPlXN+1UjRldDbXvdlslmWCX/PFj/fzYEzA+yr4Z+ysn9287e5+Vg78DGf4/F2psDyP58X3b4/PefLUD2hjW/dXJdtzkvWze9D3UhGz/+b92VH9Lwr8dyoIn/dI7n9fc/53zivbv8EB70fLe41n/L05Odo4Qyj/Bho5vpdzOOZsrtWs75mszztsnWkh3nfk8vffI7TzX/QiFbZ3vhYvPRTS/mV7vbrzg94z7NivVT9Myf5vdzGw/89DqlY19GfsKFqlSrkjXj4F6enpSndeTYkz6oynKzUtXdHVAt7HAADkgkA+AABKOAL5spo/f4GGv/aGypQurUcffVgd2p/uzjl+SWvH6p0x6xUf/VfdeGNLBf+YnqjV307U3N0NdcV1l6txds1YNU17/jddq/fXUrdrO6ja0S2aPWmBdlarqrSfR+nHpA7q1amWtHW9lqxZoLkbonX2+Y1kz/ae6Xrtnn/rm721dP5l56hby4YqE/ubvpkwWQmNLlWnuuGSd33lk5UwbYJ2NDhP3ZqW0Y41G7Vy6XQd8NYrROtmTdNqdVSPrt6HjrH6/Zf12rF1eQ4P5rJaN/FjTTnSVddf0Tj7h9/xqzVl7nZFtT8/6xc1QWQJ5LMPSydrdd1eenRwT3Xr2tkZqmv395M1yefBqXmwOGpWVV31wED1sXWaKWxroqq1cNdjHgp/tUx1e9+lIVe485dM1vglPg9f7bZ+0ZFzB+iev5zv2Vb0en04yWSdiSikQL4YXXJRPe122nx14MN323aHdFaf81QtIfBLQc+DbNP+Q+7so0vsvsZp0qRpPl+Keb6YjN+7Xn+eeYvnuN2H0eYLmC+W1vZrr+Rp4zU9wZkZ5fNlUrFrNwAAUBi2L5zp3B+20rlZvpT2F3Fku2avTVRN94tYe+8Wv0+r1lRXf+89iblX++UX/ej7JXeQ+4Uae6dpvE9AiA2CWrtOi+amqrv3HqVFmFY561qUS5CCyQC9ub17v5PNckUVyGfvvaO6qo+9v8oaDGnlGGS1XREtnPu7urV1hnNsrcKc5f/s6N4DuvVtvXVavXS+Us71uW9bM1NTfO/b3HvI8Wt97wO958L3C/bs7yOLj9wC+ZxjnbhdZ9yZeZym7X78cXnQ41xV4zKfe9k4p95M/+CYEO6LT8ZAPk8Qb1WdcZFnnzPe0wc76OdzNuIAAP/0SURBVB77+cs9FhtkM1/yved33meLJk3Wjz5BL1nbIJTPLc52TaDIj7vULKN9zfnarvja56nPRdlc92afJiWq+0236K9OHc+1bAIzi2H7ZxE8kM9+xt7ZWJf9pV3GMWT57Oa2u+fvW2TwvykO38/9yut5qWsCrpZr8UHfgCZPkOGWo4lK8T13NiiupbOd8vpj9FhNj/L57O7s6+aEqs76fC66Iuf5seGWqHa6JJS/a6H+fQ3h3znDcz4jgl+3gYF89hrfpCizTvvcxZy3k6GNM4X0b2CO7+Vcjtn330n3mgz1eUfI9x0h/P0P9fwXF9VaOPdqc+drjjNkHwjq+TuRr3uG1k2yv2cpJgjkO7kQyAcAOBHoWhcAAJxSTBDfv4a/Zj9QmyC+Mzp28MwoAEnbp+nt5yZrnero+vsvV+6dt1ZVeCV3NKiynqC8QCunS9f+RyOeGqIrB9+rpz54QdfXkRKXjtLstaZComa//67mVO2llz94RjffMEBX3nCT7n7uTl2gZE37ao722BW5tuxUjdve02O3O/Vuf0bD7+vkFDr1Zq/UIU+NQmG+IBm/IVLd+3T06XK3sfo/cJcezRgGqHvkJo1/fazm+XV5Yh7ijdSw1z3D9NoD9Ohg3/UUvHWzflN801561K9bXmd/b+qqqITf9Ot6T8m+XQlS05Y+3eJEqkvGMTr7bbqAc9bTv5ktcJj5/uvwbmtIZ58HPc2c6XML+8FPY13gbCN+1lznOs5k9yfSOaZgDWy73A04j86+XtXUmTVrsXxPW3zU2T7H7Yg3Xec5y97k242Q0x6De8m3WvFvNwAAUCwkVFV3v3vCrPdqnvuarurvc78Q08fce2zS9Pnmm3WvgHuUqI7q7tzfxK/Y7Hd/Eyiq8wD/+x3vcrsS3YKisknLTJfFrTPvZT1dmTrlbtsUJBPs4Xffdq6zXd9uDO09ZGNd9YB/d5Ixfcz9f9Zuk7PcRwYwPwDyfjbIbjB1iobn/tb3OKM6n+1ccwnaEXAxmeMMdi+beX8e2n1xbopde62frFHBuhc172m/z1+e4zfXl187Oe+zIb2dehvmBnxu9BHK5xbn84mnm9O7/K63qM691CXYZyFXfILz/g74vGT+rvgdi49ieb1umOy3/WWtzedxn2Own92cJvM9R0679/e5PoP/TXH/9pybzef1XM9LpGLaOOd6g/P3w52t+M1a5vz9aGb+tiZ4/24naN2KBEW1aeSsx9Ndp+/fO7uvvteMj2J5PnKQ29/XkP6dc95z9nnMTQP8ru2g161PEF/m++5ka+PQ/g3M+b2ct2MO/XmHV273HXl4LhLSfU6moj0/nueA5j0fP2us3daowP0s4HuG7BT9dQoAAOBBIB8AACgxFi9ZqltuvV2zZ//mlvj7/ff5Gjb8NfvruIcfeqBAg/gOLRmjFx/9UHOS66jHI4/rquZl3Tk5SZaS3NGgkoMH0kVfrQs6+IT4hceo2xUNnZFkrd2ZKNOl7rylzuTeyXri+ut09TXucPMI/Wrqb9kpv68RG/ZRz7aZ+1uxeWfZvImHDue8e/mWYIPwPF/U+D80zso85Az2YM6UZwb89dcU+0Aty8O+ApP1oW+GqEZqFymtX+nZv2q1nYkNk4Pvi/3CIVLdzYN2X1FV7ZcWni8hst9WVGRVd6zwZH2Y7e5PNl+8rDPH3fTsLOfRtkNCrPa500ZUbf/9j9+wWvFyjj3Liquqru+z8JOg3QAAQFEIuI/w+zGFK9j9Qpb7Gs+9h1+wXZAfMQS7vwnOc7/r/dJ3vLNNxSfmGABY2OLnz9V6NVY73y+2A+5jC06k2jX1vZlzRNVy2jwzcM1zDxnkfDnLZgnacQTeRwbqdrYnO092bOYkp06RMlmS3Gti2OuTnfPhvS4zZX8v61w/pu1Cui/OXdG3l/P5bkzme8STAcs/eM6KrOWfPco9/izXl9GspQ2OXLYheBuE8rnF8/kk4H0SAnuOEn7TqImhvZeK5fXatJfPj+mcvwuTzI8UM9m2ieyqCwLaxu/6dAOP/H7QtX511r89PkI5L57PqO42HHZfnLILnDqZQU6eIKuoSHNteP6mr58U+IPA4Irl+chWbn9fQ/t3zrZ7dj/W82X+bmUJ4jNOrjYO9d/AnN/LeTvmkJ93eOV235GX5yKh3Of4KA7vgZg+nud7GQF9PuegoO8ZslMc2gEAAMAgkA8AAJQYFStU0JEjh/XGmyNs0J6vBQsW6l//ft3mtX/wgft01lkF9+Blz6+v6L6XJmulmmnwv17VHWdFu3OyU1FVa5jXlVq8Noecd9t3aK15bd9IfmusU1WBj6TKhvuWJJsQQalhLz367DMammXoobq2nqtquPzCDgu1N91NGvf6WPeXtEG+qAkq0vPgM4cvP03mE/9MFUHk8cstP3n44tXsy6O9G2f8knjYaJ8vMeJjnfGAL63s4PkizyriL3kDv3yxD7yDfGHjkeD5MiUge4MZTKBmIM+XKpls9sLAL+eCORnaDQAAFIhQg+U8WXNCuI/w5d4vrJ8UeE9h7k89VY6X6UbPrG9ZG+ee0P3RiflSumh5MlWZe/HxwY47pyxmhcK9h8yDwPvIYLL7Ar7ov3g3n4Gc9h6zWu1u8v4YKbuMTLkI5b44REXbXibzlLctzJDND7zcz3AZ7PHnR2ifW0L+fBKomfPZ22T/zFi/fxBcMMX3evVmDHP+XvgE0ti2MQFOAe1nMrX5ijHBqBnZ4bwZxIIF4Bghfp60AVfeIE3P3zMT9GoD/Lzb8gsY9Pzw76qmme+V3H70VzTnI/dnHXkW0r9zbrsHvr+ycNpvUtbsbh4nSxsbefg3MMf3ct6OOd9/T7KTh+ci+bnPKbrz488G9NkMq5M1zh5Y4dwzZKe4tAMAADi1EcgHAADyLCIiQgl5DIYy9c1yhal58xg9/o/HVKpUKQ3/9+tatGixLV+0eImd9gbxde16ti0vCId+H6En3lmqxDqXaOjIF3Vlo1Ay8ZVVzDmX2GC8X//3o/wfe3sla8X3n2ilM9bhrNbyewSVbP/3s3ezqemsOcy+eByuqui2rdUmy1AneJe9hc1moJhsg8KGBHSHURD8MgEE1VjtzC97c+kOLahcH3AHMA9/vV/Q2S873Ie/9pfygV9aZQ72F+553VYhyPzyZZN+neXtnigY94uHjOwNgUMBneeTpN0AAMDxC941YyDfLhRDY7/Ude8XTLeZwe4pHvXrwjMfMroqdO9PigubxSeb4zYBC057ZmQxs/ddhc29hywEgV/AF4cv3tdN9H4Gyi0beU6ca9csG8p9cR4Ux/bKUb6vz9A+t9hA4vyK6uicY7Muk9HOBAzlnrWr+LZ/Y11wrtMWPgFOtm3sdRzYdp5jzri2fTMjZpdBLEOonyc99exnebtON2DPDfAzmeiCZezyZvjK+KFdLhkTi+J8+Ac+FoCQ/p0L9W+w+VvjPtPw/YGij5OhjfP0b6CRy3s5r8dcYPLwXCS/9zlFcn6CaXa2JzOozZZYePcM2Sk27QAAAE5ZBPIBAIA8q1e/vpYvX67Vq1dr+/btuQ6mnqnfoKHp/rVwnX56Oz30wH22+9xXhw3XV//7Wq+++i+lpKTo7rvuKtAgPmmzfhk9R4lqrweeHKI2eei5IbxtX93cvqy0c6yGDZumTQfdGVaiVnw2VK9PS5bq9NX1FwRk+Fs5QbPX+oTy7Zmub6ea6Wbq2NzZiaoN1cYssvdrjf91r62SYc8cLd7ujp9g62Z5fsk9ZHDwLlqz5+kaJLcvam1WFu8XXNmIOberohJ+07g8d8HrdqHi0+VKBu9D4SDdYJkvQPrbB8NugKF9qJp9d08e2W/LfjlxItiHps5+TvR0P9M9hy8E7Rc6Ad2YhCrbLy3cNs1wsrQbAAA4ft7swAHdOvqKnz9FJsNzlnuUYPckNktTpOrae8Qc7ukKjedetijl2F2o297+P3bJ7ALXy7OOgpP9PaSbOSnbDF65834BX6y/eLfXZVbZ3st6szqFdF+cNydFe3nldPzuez1ot7uOUD63eLrVDPL5JE+8Ge2yvo+CKa7tH9X5MvuZcPpETwBX6G3jCQI0f1PWmb8buXTfGurnSc9nx1jPOjP+PngCfNavdPbR2a/gn8kdzXrZDP6hZL474efD/eztbefjF9q/c6F/jm+s/t4fKGYTzGcV4zbO+7+BXrm8l3M55pCfd4TqOJ+LhOqEvwdy4O0itzDvGbJTnNoBAACcegjkAwAAeXZ2124qXbqMpk6dqnHjxuU6mHplyoSpy9ld3TUUri5nd9H9992r1NRUffXV1/b1zjvvUPcLznNrFJDNS+WJk1unb4c9pmceDhi+zemRaLS6PfqMrm9YVnvnf6hHbr5Od95nlrtDQ675m56dsF6JFTrp0ScHqHFgV7cNK2jFS3frtffH6tvRI/TiI+9qTrIU0/cmdbNd9jZSz/vNL9eTNeedB3Xvi6P07Wdj9dnrT+nOv4/Q5sN2LSeY5wvMZufmEsQXvzggyC5B80abbkJ8vqg1mf0Cf/G8frLteqdZ71wywJlfVufwq2nTFZqn645AkerSx+1exW+5TRo35jfFN+2V0U2wybjhe+Y9D42rugGG7pcazvb9t+McZ8aDe2dbJmOBsy2/blpshhd3vNB59sF2Q5zLA9Gozmd7ul0KfKjv7G/wtvTh/dJijG+bmbZw2tSd8jhZ2g0AABSEmD7ZZ7Qy92ujZslmCcp6j+Is43uvZu4bTbePTc92s0Vlc7/gCLyHyxebLcf/S3abjc0dLxqeDMs53dP5BRvYDFfOLZRvIKW5R/ft5tJ1PEFPniAhc479233dRNP9X2NddZzZEe0X8MXki3cbgODXTs5niIDuSDNkdCXoET9/rL2XzfwcFcp9cd4Vp/bKWWP1dz/P+b2H3fd61LmXZZv1MKTPLc16ud1m+v/tiZ8/OWM62HXvO9/yCyDOXfFsf/fvZcJv+tW0T9DPbo4sn+GdNnL+3pgf0I03n9FzeQYQ8udJm+kvUcvcbnW97N+v+NWZWfos5z3m97ndDfaxgVC5O7Hnw2lnEyxmAuUC/h5aTjvkLeNbaP/OZf83OMg+mPed+YGiXzDfydLGefs3MOf3ch6POeTnHaE6jucijrzc55zI8zMuyHXvvRfwPgcsiHuG/NyznLh2AAAA8Fcqdk9cujsOAABKoHWbd6pBXRvddcqZ9uNPev+DD3Xbbbeq5yUXu6UFaO0YXf3kZHciiCte0NeDcwwrcyRq7a8TNPXbOVqyZb8zJUXXaa0OPa7WtVcGdKmbOF2v3vau5re/UyNvL6vv3hil79YdVtUqzdTthiG69oJGfl3mHto8XV99PEG/r9wpE2+YZb0+6/vgqe6Z28qu/Lh4Hs75PWv0ZbrSMQ/ezBcwJjDOLba88zIkaN5o87DOnbRM9yJ56aoq2DqMxrrK7b7HfEk8Pj4wg2DW44g6d4BfF1Z2Ob/Ascx1ZjAP4wO+vDNdn3iDAa3AOqYdWq92yhLzeKy5cdsiKrCdzbHOVd2AbZkvE0fNqhpwTEHa0y/7oqfdFHiMVuCy5lxeJpkHsoH7VKzaDQAAFLog//ZnvTf0sPdg6qUhtefaH3h4Bd6rWUHuOX3r2fudFS2zZJIOfh8UIGCfzb1Ku5X+95WB95khrTe/3P3Jcs/kx73HzWjbgHtec1/XR/YHLFF+6/G9j3Pvx2XadrXaBd53uW3uv3yQe+csGbxzuo8sLgLay5fbpv7HaT4ftNQyZ5n4jOvOe5wDVHdW4L1xkHvYXO6LC/WaOl5233O/N/e+p4O934O9hwOv8fx9bvHwLOtTya9O1us+ZkNA/Tx/Pi1K7vFk+TxoeI814HNybp93gyzndTznxbPtwHW67z+/+kHek9n821GcZLnuXBnXtr3uQ/z7msu/c15Zzqe3nYJtK2Od5vo+WzvGnARtnMd/AwPvIfzfy7lcV8HOQ5Zr26wv6/MOe+5Dve/I5e+/FeL5L3pB2tQI8v43slyvWep51pf7s6ei+Rudns238Vt37lbzRnXdKRQHpqcfX95p81KqlGc6o46nwE6npaYpTelySpSWlq7U9DQlJaeqdUzx/vcHAFD8EMgHAEAJdyoH8pU4hRJgBxRHngesy9oUxwfNAACgOMox6AfAKSe7wBgAKFo87zhVeeO+AhHIV/wQyAcAKGp0rQsAAACgeInfrGUJUlQkD7UBAAAA5N2+XeYDRWjdfALACcPzDgAAAOSCQD4AAAAARWSTxo1e7Nfdiy0zXcA07ZVD1zcAAAAAkI34xZq+QWrWmgw4AIoKzzsAAACQP3StCwBACUfXuiUIXeuixPF0KTM9wZ10RZ1LFzMAACBv6FoXgP07sMEz3qz3XQTKAChCPO+AP29PrIHoWrf4oWtdAEBRI5APAIASjkA+AAAAAAAAAACKhjfuKxCBfMUPgXwAgKJG17oAAAAAAAAAAAAAAAAAABQhAvkAAAAAAAAAAAAAAAAAAChCBPIBAAAAAAAAAAAAAACcIn74abozzHCnAADFBYF8AAAAAAAAAAAAAAAAp4Ct23fqf9987wzf2XEAQPFBIB8AAAAAAAAAAAAAAMApYNykKe6YNP7bH9wxAEBxQCAfAAAAAAAAAAAAAABACbd563YtX7lG1atF2mHZitVk5QOAYoRAPgAAAAAAAAAAAAAAgBJu4vfT7GvPi85XjwvPs+PesuM14u2R6nVlP23YuMktyXT06FE98dSztg4AIHsE8gEAAAAAAAAAAAAAAJQwKSkp2rEzVkuWrdSE76fpjxWrValiBZ3btbPOO+csVawQYedNmvKTfTV1zTL5Mej6gYqOrq5ly5a7JZmWr1ip7Tt22DrF1TcTJtlgQxN0CABFpVTsnrh0dxwAAJRA6zbvVIO6NdwpAAAAAAAAAABwoqRn82381p271bxRXXcKxUF6wMnyTpuXUqU80xl1PAV2Oi01TWlKl1OitLR0paanKSk5Va1jGnvqnmBJScl6f/QXthvdxP0H3NJMfa/oqd6XXWzHJ3w31QbxBYqsWkWNGtTTHTcPVFhYmFuaOxMMN+6bCXrzteGKjKxqy0xg3PMvvqKzOndSv769bVlxZPb99/kL9MxTj6t8+fJuKQCcWGTkAwAAAAAAAAAAAAAAKAHi4uNtdj1vEF+VyqepWZOG6tKpo67u20u9LrnAlhtXXHqRLTPzTB1T10hI3K/Ff6xQ3L4EOx2q7ud7uuudPmOmfTW82fi88wAA2SOQDwAAAAAAAAAAAAAAoASoU6umrul3uR0vWzZMd946SP944C7ddtN1uuySCxQWVsbOM0y2PVNm5pk6pq5ZxjDrqFUz2o6HymTh69+vr83Kl5CQaLPxjRs/wZZ5M/QZJvtdo2atMoYbbx5i63stWLhIva7spw0bN7klHmbalJv53ulBg4doxcpVtltcsy6z7uwEbtcss3LVarvO+x96VF98+ZVatu3ot22zLd9lzODdvmH22+y/KRvx9kg737wagcsGHicABCKQDwAAAAAAAAAAAAAAoIS49OLuGnh1XyUnp+jfb7+vNes2uHOyZ+qYumYZs6xZR354M+9t2LgxSzY+E9hngudMoN/i+b9p8/pVduh05hkaOGhwlsC9UL373ge69ZbBdl3Zdd/r7fbXu93Vyxerbds2atK4kSZ/+43e+PcwDbzuWltupps2aWz3d85vc/321dR7+tnns+zr6E8+0zldz7Z17r37LhvEZ+r9NPX7jGV7XdrTrQ0AwRHIBwAAAAAAAAAAAAAAUIJc1P0cXfeX3jYw7413P9La9dkHya1au16vj/zI1h1wdR+7bH55s/KN+eRzO/hm4/MG9r352nC/DH23D7lFHTu013ffT3ZLQhcXF6dLLrrQBt7lZOu2bTZg0Lvd8uXL28A985odM88E5fnuqwlKjI6uroQE/26Hm8c0s+v32r59hz2munVquyXSAGd7vusCgEAE8gEAAAAAAAAAAAAAAJQwl1xwru0i1wToTf7xV7c0qx9+mqGUlBRde9WVurh7N7c0/0yw2/4D++3gzcZnmOx2vsF0XiZg7qzOnWwWu/x0PVuvXl13LHsN6tfXa2+8lWPXu9nxdulrusft2LmrZsycbQP1fJn1+zL7ZLrqfX/UR24JAOSOQD4AAAAAAAAAAAAAAIASqFbNGva1elSkfQ2mmjuvVs1o+3q8IiLKq17dun5Be6ab2tjY3Xa8IFWvXt3ZRvbH5mW63P36v5/r/ocetQF5potfs085MUGFN948RHff+4DeHvG67R7XdLN7/nlZgx0DgwnNsZtudSdPmWq3Z9aTnyBFAKcWAvkAAAAAAAAAAAAAAABKoJ27PMFz9ep6unhNSkrWz9Pn2MGMG/Xq1LKvO3fF2tfCYLLu1apV053KmQnMMwF6Bc0E13mD8UwXv7ffeXeOwXWffv6FDUgc//WXuXbdG4xZZvK332j18sV2PQMHDbbZ/QAgOwTyAQAAAAAAAAAAAAAAlEA73OC8GtHVNOXH6Xr02Vf0xdcT7GDGTbe6NaM9QXM73KC/wmK6nw3Wfa7JjPf7/AV+Gfzi4uKcegl23GvZsuVatXqNO5V/ZhvPPv2k0tOl+IBt5GbDxo22a928MEGMjzz0gKKddg48JgDwRSAfAAAAAAAAAAAAAABACbRjpyeQ750PPtHXE77XwYOH1KxJIzuY8f99853e/fAzW8dbt7BcdmkPm5nuvgcf9gvme3/URzZD3qDrB9rpunVqq2OH9hrx9siMeiaT3XsffGjH82Psl1/5bdMEBZYqJUW53fKarnEXL1nqtMEuO22YwEPfMrO82adQTJ32k1/2PRMAuHdvXEjdAAM4dRHIBwAAAAAAAAAAAAAAUMKkp6drZ+weO3706DHbhe69f7tZ/3jgTjvcc8dg1XXKjhw9ausUdkY+k5nu5ReH2sx7HTt3VaNmrewQG7tb77/7dkY2Pm8GO8Nb78OPRmv4sFfUqmULW55Xe+Pi/LY57psJevO14RnbbNumtQ0evLjn5ep1ZT8bhNevb2/1uqynLTPLmADE5555Suef180uk5PDhw9nLGeGp599Xm+PeD1fXfQCOHWUit0Tl+6OAwCAEmjd5p1qULeGOwUAAAAAAAAAAE4U03VnMFt37lbzRnXdKRQHJujNl3favJjMbWY6o46nwE6npaYpTelySpSWlq7U9DQlJaeqdUzRB2ylpKToqRf/7Yylq98Vl6pLpw7Orps9zWSOYe6Cxfrm26kqXbqUXnzqYZUpU8adCwA4kQjkAwCghCOQDwAAAAAAAACAouGN+wpEIF/xkxGk5/JOm5eTNZAPAHByIZAPAIASbsPWWOeDY5o7BQAAAAAAAAAATpR0579gSpcqo2YNa7lTKA4I5AMAFDUC+QAAKOHIyAcAAAAAAAAAQNHwxn0FIiNf8UMgHwCgqJV2XwEAQAl20b932WHMnD/dEgAAAAAAAAAAAAAAUFwQyAcAAAAAAAAAAAAAAAAAQBEikA8AAAAAAAAAAAAAAAAAgCJEIB8AAAAAAAAAAAAAAAAAAEWIQD4AAAAAAAAAAAAAAAAAAIoQgXwAAAAAAAAAAAAAAAAAABQhAvkAAAAAAAAAAAAAAAAAAChCBPIBAAAAAAAAAAAAAAAAAFCECOQDAAAAAAAAAAAAAAAAAKAIEcgHAAAAAAAAAAAAAAAAAEARIpAPAAAAAAAAAAAAAAAAAIAiRCAfAAAAAAAAAAAAAAAAAABFiEA+AAAAAAAAAAAAAAAAAACKEIF8AAAAAAAAAAAAAAAAAAAUoVKxe+LS3XEAAFACrdu8U4O/TLXjN3WtpJvOOc2OH48jR45o/ry52r59u/7880+3NHunnXaa6tWvr85ndVFERIRbWjSOpSTp0LHDiqpY1S0BAAAAAAAAAKBwpGfzbfzWnbvVvFFddwrFQXrAyfJOm5dSpTzTGXU8BXY6LTVNaUqXU6K0tHSlpqcpKTlVrWMae+oCABAiAvkAACjhCiOQ7+cfp2nHjh3q0KGDatWq5ZZmLzY2VkuWLFH9Bg10wYUXuaUF70jyUc3cNF+zN85Xg8g6uijmXDWOqufO9QTxPTf1dbWv3UrXdezjlgIAAAAAAAAAUDi8cV+BCOQrfgjkAwAUNbrWBQAAeWaC+Nq3b69OnTqpXr16uQ6mnqm/Y/t2dw2F461ZH2vk7DFaumulJq38US/9OELJqSl2XlJKsp794d9atXudnQYAAAAAAAAAAAAAoLggkA8AAOTZ4cOHQ8rE58vUP3jwoDtV8EzA3qIdy1UpvIIe6n6HOtZpo7hD8Zq7ZbGdN3Ta61q9Z4Ot+9P62Xpq8r/09qyP9fvWJbYMAAAAAAAAAAAAAICiQiAfAADIl1ImbXwe5LV+XpVy/ktNS1PZsHC1q91C0ZWq2/LS7mbTvOnuHXsP7tPy2DX6cd1svfzT2/a18B3SjlmTNXXWTiW5JUUrUbNfvE5XX3Odxq91ixxrR3vKrh5d+JkLk3fuUuJnXyo9xdP1czBm3v4v/qfk7TvcEgAAAAAAAAAAAAAoeUrF7onz7+gdAACUKOs279TgLz2BUjd1raSbzjnNjh+P994dqf79+9tuc0O1fft2jRs3TnfceZdbUvBe+vEtzd+21J3yeKHXw2pXq6WOpSTpuamv2651r+vQR9d26K05mxdo+K/vqU2t5nqp16PuEnm1TuOveVqfu1NZXPGCvh4cI60do6ufnOwUlNX1L32qq5p7ZhcdE8j3N73uNNf1L32ZsT8mkO+J75wR734XooQxY/Xnd5MV0bG9qj9yv0qFlXHneJggvrhhr+vIkj9U+cpeqnrjAHcOAAAAAAAAAJwcfH5j7mfrzt1q3qiuO4XiID3gZHmnzYvJVWCmM+p4Cux0Wmqa0pQuk1cgLS1dqelpSkpOVeuYxp66J9jOXbs1+ouvtXHzVrckf5o2bqibr79GtWpGuyUAgMJGRj4AAFBiPHLB33RJTDc7Hl2pmh698G9qU7OFnS4XFq7nej6gVjU9wWmlnQ/Z5zTqZMf3Hoy3r4WqRowuqCBVbXi52jRyy05xVa7uq/AmjXRk8VLF/esNv8x8Nojv1ddsEF+5mCaq/Je+7hwAAAAAAAAAAJCdt98fc9xBfMaGTVv0zqhP3CkAwIlARj4AAEq4Uykjn7EsdrWenjxcFzY7R/edd4tbmslk5jtw9E8b6Gf0+3iIHf/gmlftdN5lZuTzzWxX/BV9Rj4j7fAR7Xnhn0rasEnl27VV9OMPSelp2vvP13V02XKFN22sGs88rtIR5d0lAAAAAAAAAODk4U3gFoiMfMVPScnIN+Sex1T5tEoa/uKTKl06f7md0tLS9PBTL+nAnwc16q38fn8CAMgrMvIBAIBTisnM5w3iQ9ErXSFCNZ7+h8KbNbGBeyYz396Xh9txk4nPzCOIDwAAAAAAAACA0JUNC8t3EJ9hljXrAACcWATyAQAAnAiJ0/XqNdfp6mte0exEW6DfXxzkTF+nIa/P1yFbyePQ7yM0xNS9a4zWJrmFQR3Sjllj9PbDd3jqXzNI9z48XN+u9V2bI3Glpr7+lO4d6NZ5cYLWJia7M0OwZ7pes8tep8dHr5N3lw5tnqPxwx5z1+scx5DH9PY36/yOJRQZwXxNG9tudo+uWGXHo5/6h50HAAAAAAAAAACKtxFvj1SvK/tpw8ZNbkmmo0eP6omnnrV1iruEhETdePMQfTNhklsCACcOgXwAAABFoqrOun2IOjtjiXPG6pfNnlIlrdPU0XOUqGj1u2ugmoe75Vkka+3op3Xfm5P1606p0Tm91O+cGFXcu0ArdvoE6ZkgvLue1/tz1munqqh1wzqquG6snnhilGbZgMLc7NXs90dpjrPKmCte0NDBMTK7lLR2jF58ZIQ+n283rn5XnKOYinv16/KdGYF+AAAAAAAAAADg1DDo+oGKjq6uZcuWuyWZlq9Yqe07dtg6JZEJUDwZghQBFH8E8gEAABSQz5/0ZKbzHcavdWcGU6O7br6tmTOyU6M/m64EZ2zPr2P0+V6p0RV36tq2ZW21oA4u0S/f7XRGGur2Ye/pqQdu0g0PPKNXxvxHNzTzLndIv49+1wbhVW1/p0Z+8Z6eH/6qU+dTvdlPWrfFrZYtEyz4il5fmmyXf8AN4jPrXfHdZK1zxlrf9KpGvHyvbhh8rx578yN9cIO3TujSDh/R3hdfVdKGTYrocLodzLgpSzty1K0FAAAAAAAAAADyKz09XbPmLtCu2D1uibRz127NmbfQzjtekZFV1b9fX437ZoLNaudlsvGNGz/BzjN1ijuzj598PEr9+vZ2SwDgxCGQDwAA5FlERITzIcyEnYXO1DfLwV+NnkM0uI4zsvRr/TprusaPXi9F99LtA1vnHBAXXtadv1PLV2726c62qurWq+gZTVyqWfPNSDNdf3t31bCFRlnV7XmTrm/oTgaVrD2/DtcwEyxYp5cefdR3+XCFu5vYuWSFdhz0jBuRjerInRUSE8S354V/6ti6DSrfrq2qP/qAHcy4Kdvz/CsE8wEAAAAAAAAAcBxMoN6Ysf+n0Z//TxMnT3NLpf9N+F4fffaVPnHmFUQwX/fzz7Ov02fMtK+GNxufdx4AIHsE8gEAgDyrV7++li9frtWrV2v79u25Dqaeqd+gYY6RY8ctKSVZP6+bY8dX716vbYm77Hh2vl/1i31NPHJAczcvsuPH4/qXvtTX//MfrmruzsxWI/X8e1/FaK8+f/NdTUsuqytuz6lLXVd4B11xXydFK1lzPviHbhp4h14bPUebfILqtGedbGtEd1ajzCg8VwWF5/TDt8Wj9Po7S5Wo9nrgyZsC9qes2vS7VxdUMLGCH+q+mwfp3hfH6PfNmeGEobBBfM+9ZLPvmcC96McfUqmwMnYw46bMzCOYDwAAAAAAAACA/DEBeiZQb9Zv8xVetqwuueBcd450eY8LFRYWppnOvIII5gvMypddNr5vJkxSo2atMoYbbx7il8VvwcJF6nVlP23YuMkt8TDTptzM904PGjxEK1au0hNPPWvXZdadE9MFru+2p077yW7fu5zZD99pw1vmu5zZBzOY8dfeeMsOZtx7LObYvfvkHXLbNwAgkA8AAOTZ2V27qXTpMpo6darGjRuX62DqlSkTpi5nd3XXUDiG/fKuflnvCeTb9ecePfbtyzZIL5iJK6bp/bmf2/Hk1GT985eRWrpzlZ0+0cKr1lHmx9doVa3gjuaixrkP690PXtADV7RXHe3XnO9G6JGbH9T4tcluDVeFCnnKkmdFRyva9tC7UvNW7rVFfmqco7vH/Ecv/72Xzqki7Vw6WcMeuVWPj16nJLdKbv6c8K2SNm9VxJkdMoL4vLzBfBEd29tgvgNfj3fnAAAAAAAAAACAUE37ZZYN1CtXrpweue8ONW2cmXQhpmkjPXLv7XaeqfPT9NnunPzzZt7bsHFjlmx83uA2E+i3eP5v2rx+lR06nXmGBg4anCVwL1TvvveBbr1lsF1Xdl3iercdG7tbq5cvtnXNPnz2xVjNmJn9cZugvPsefNgGI3r39+v/er5fMvttph+8/x47mHHTLW9ERHk9/+IrqlWrZsYyP039XhUqhPgFEIBTFoF8AAAgzypUiFC//v11x513hTz0veqqQu1a91hKkhZs/0OREVX00V//rZ7Nu+tw8hHN3RI8096MjfPs6yu9HtN9591qx6etnWFfT6yd+uWNdzVf0ep3fS/FONOfv/O1NoUaDVc1Rt0GP64RX3yof13fzClwln/je9mPuhXqqLV53bJUm30z9RlJO7VppTseTL2rdfdzZn+SNeedV7IGB1pV1fyCm/TgqE815qUB6uCUrPtuhKZu9szNTcULzlXlPper+kP3+QXxeZmy6o/cr8p9r1TEGR3dUgAAAAAAAAAAEKpSpTyvpb0jAUo55dnNyw9vVr4xn3xuB99sfN7AvjdfG+6Xoe/2IbeoY4f2+u77yW5J6OLi4nTJRReqaZPGbklw3m0/8tADKl++vC0z+/Ds00+qVcsWdjqY+IQEmUSF7dq1dUs8AXxmyM6RI0ftts7perZbIrt/PXtc7E4BQHAE8gEAgBKhlPNfubBw+4nU9wNnxfDguegqlHWDCv3qnvhfQm36ZrjeWSdV7XGrru03UDf0KCvtnKD3v8ols93BzVrr15VtRTVuFuMZTTzsea0Xo7OizcgCjf9iiTJrH9LaL0bpm2CxeT7Cm9+kB/7eXlVNcOBzwzV7jzvDWX7T8s0+63O23jxGjexYopJDDEIMq11bVW+4LmgQn5eZV/X6a1WuTUu3BAAAAAAAAAAAhMp0pXveOWfpyNGjGj7ifW3cvNWdI63dsEnD33rfzjvfqXNx927unONjMvDtP7DfDt5sfMac3+baADjfID7DBNad1bmT7arWt4vdUNWrV9cdy57Zdr26dW22PF9RkZGKjq7uTmVl5puvkoa+8FLI+2a2Ybb19LPP5zvLIIBTE4F8AACgRAgPK6u/duithMOJGvzlg5q6drqaVGugcxqd6dbwd3X7K1S2TFk9/v0/9ebMD20QX+/Wl7hzT5DNE/T+5zudkfa6+doOCldZtbl2iDo7JesmvKvvgmbBc6Vs0fhHbtWd9z2m/2fvPuCrKg//j39DBhmMbAIJmLARkCGIDEVRUFRQqFpFUaxoq7a0VqW/4irOf6mr1NEqVFHroCgKKhQFRUBBEFBANmEkIYSQhBHIzv88556b3JvchASCwfh593V+95znPGeP/Lh+7/M8//IM/evhP2nCE+aXaoE6c0x/uX53lqgLx50vk+Xb+un/0803/1EP3fsn/fnmWzUlpa9u6GFXqlbsBfdq4uWtpMLv9Ox9T+kbO8xXqLQP/s+1vinT9Oazj+ih8U/qA2tO+Blj1LOjqQMAAAAAAAAAAOqbaXHvputG22G+/IICzZ2/0JkjfWSNFxQU2iG+sVYdU7cuuINsnqE907Wt6da2rkVHR1vbiHCmfHNv23R1626Nr6bM/r/80vP28fTq21+J7bvYgcPqmG088dhkDb90mC4adpm9zAcfznXmAkDVCPIBAIAGY3T34Xp0+L0alNRXt/e/Qf/vsj/Lv5Hv/3fnrJad9fcr/6KhHQdby12mf4x6VAnhLZ25P4KCrZr97Nvaao12uOF6DXT/+Cx8sK69oZU1cpwudkPP0DkDzlRMbpq++HSePv1hv8I6DNDtD/9Dj1zhahvPCDvnTj318M0a2iFUOpqmH/YXKn7UQ/rbA8MV69SpXqA6jvuz7u4RaC2/SlMen6EtBWFqdc4A9Y3JVdrKz/TBVz9of1gHDb3ZWu9Tw50QIQAAAAAAAAAAOB24w3xjrr5SV1421CmVRl1xicZcc2WdhviqYsJtJkhXEyaYZwJ6pwt3MG/nto167ukpuvqXN9QomDfht3fay8x69z/6wz0TNfX5F505AOCbX3pGZqkzDgAAGqCtO9M07p1ie/zm/k1084Cm9jgAAAAAAAAAADi1Sqv4r/G70/apY+LxuwPFj6e0wsVyT5sPk3Ez02V1XAX2dElxiUpUKhODKykpVXFpiQoKi3Vmh/r52fv43/1JURHh+usjf3ZKTsyfHnpSB7JzNO0ff3VKas60gPfIY0/awT0TZnMz4bf3P/hQf3/mKa/udSvWN93R/nbC3Xp08kN2q35uZnkTiDPBOFNu6v3lkcf1l4fuV7u21Z/vqrZtWtczwTwT0LvqyhF297m//+O9Gn3Vlfa0L+5AnvvYKk77Yrb/zcpVeuiBP9e6VUAAPx+0yAcAAAAAAAAAAAAAAIBT6tJLhtpd1JqgnAnMub087d9KSU3V2BvG2NPxrVqqV88edkDOXc+E9v71ynR7/EQMPv88+/NvTz9rBwcNs+7jtZJntrvg0/LuiM0yJvzXpnVrp0T2uClz76v5fPudmfa4YbZnQnwn0rUvgJ8XgnwAAAAAAAAAAAAAAAA4pdxd1JrW9Hr17a/E9l3sIT19n15+6fmylvJMvfvuudsed9eb/u/X9NSUJ9Wlcye7vLbMuk1rfCYw2LlbL3udJlD4l4ce0PnnDXRq+fbs3/9Rtq9mfyq21ucOCZp5N90yXjk5BzXvfwvKljHbq9g6IQD4Qte6AAA0cHStCwAAAAAAAABA/XD3xFoRXeuefhpK17q3Tfg/hTdvpr89OskpOTH3PfiEcg4e0itT/59T0jCZ1vNMoM+E7Dy78QWA+kCQDwCABo4gHwAAAAAAAAAA9cOd+6qIIN/pp6EE+f7fsy9p246dat/2DDVqdGKdNJaUlFjr2GWtI1H/d/cdTmnDZLrEffDhR/T81GfVrm39XDMAcCPIBwBAA0eQDwAAAAAAAACA+uHOfVVEkO/001CCfOs2bNIHn3yqXbtTnJITc0abBF112VB179rZKflp274jWZ9/sVjjfzXOKXGV/XbC3fr1bbd6dZULAPWFIB8AAA0cQT4AAAAAAAAAAOqHO/dVEUG+009DCfLBN3cXul8uWeaUuMx69z90qQvgtHFi7agCAAAAAAAAAAAAAAAAPwEREeF6/dVp2rlto9dAiA/A6YQgHwAAAAAAAAAAAAAAAAAA9YggHwAAAAAAAAAAAAAAAAAA9YggHwAAAAAAAAAAAAAAAAAA9YggHwAAAAAAAAAAAAAAAAAA9YggHwAAAAAAAAAAAAAAAAAA9YggHwAAAAAAAAAAAAAAAAAA9cgvPSOz1BkHAAAN0NadaRr3TrE9fnP/Jrp5QFN7HADqSmlpqfILilRQWKjCQvNZJP9GjZSXX+DUwE9ZcONAFZeUKigwQIGBgWpsfQYFBcjPz8+pAQAAAAAAgKqUVvFf43en7VPHxHhnCqcD8z2nJ/e0+TBfhZnpsjquAnu6pLhEJSqV+baspKRUxaUlKigs1pkdklx1AQCoIYJ8AAA0cAT5AJxKBQWFOpBzWI38/BRoAl7uISjQqYGGwFxnE9B0D+YLyqiIZva1BgAAAAAAQNXcua+KCPKdfspCeg73tPkgyAcA+DHQtS4AAACAE5Jz8Igycw4rJrK5WsREKDK8qZqEhSggIECmdT7zpRUaBhPMNNfWXOM461pHW9c8M+ugcg4dcWoAAAAAAAAAAADgZBDkAwAAAFBrafsOyK+Rn1rFRiogwF/Hjh1Tdk6OMjL2Kz09XZn7M+1PM23KzXw0HIHWNW/VIkp+1v/2ZmQ5pQAAAAAAAAAAADhRdK0LAEADR9e6AOqaCfGFN2ui0JDGKi4qVs7BQ9aQrRXffmXNS1H24QzlHMlQkyZNFRvdUi2i4tW/14WKaB6h5s2ayT/A31kTGoKjx/KUcyjXDvbVBdOS4/YdO5Wesd8VDLUGIy42Vi1io9WyRYzatk2Un+m+BAAAAAAA4DTn7om1IrrWPf3QtS4AoL4R5AMAoIEjyAegLpnudE1LfM2bhunIkSM6dPiIdqfu1LJvlunQwcPK2LdXnbu2V8aBvcrKzlReUb5KrVdQVPNo/eKyMUps007NmzVVWFiYs0Y0BKaLXdM6X/NmJ3ddc3IOac68BUpPz3BKfItv1VIjLr1YzZrzNw0AAAAAAJze3LmvigjynX4I8gEA6htBPgAAGjiCfD+SrDWatjRc40cmKWvl23pfl2p83whnpodt8zRlbrLaj7hTo9s7ZQ6z3LSl2c5UhAbffL36RTqTznIuFeY1JOY4l8Zp/Lhe8n14yXr/2Xna5kwpon81datgrtWMdA2+e7g6OEUNU7ZWvPa21nW93ve9eAIKCgqVmXPY7k63qKjIDlt98c1n2rB5k3p17avMfTlWWZr69eutY/lHFN86Xk2aNFHz8GYqLizWxq0/qDhP6nXm2YqLi1VAQICzZjQEpqXG6MjmCgo8seu69vsNWrR4mX1vtW7dSmd27KDIyEhFRYbb8w9k5SgrK8u637YoJWWvAq3tXHTBeTqrWxd7/o+unt4lW+e8qMUtq3muvf5eSJGDqnsH1P17AgAAAAAAeHPnvioiyHf6IcgHAKhv/vfeN/EvzjgAAGiAsnIO64P1rn9Y9mwdZA2N7XHUsdS1Wh3QXr3jQ5Ty7RIdbnO+ulRKl2VrxZwl2pUnRXbq6zXfDvFt6Kzxd4zUxf37amD/7koIcc9co2kzU3TOzb/SL4dYywWs1+y5KYrt30F105HlaSRrm5btbqLePVvKffheti3Xxk5jNP5yc476Knb3bL21OVoDO9UigHIsXau/O6LEhnj+vORZt+V6ZcR2t+/Lk2W+kNqfdVCxkc3VqFEjZWVla0fKNr2/4D2VFASoRXRrBfmHKDYqTkEBwRoyeIg6tuuomMiWCgturuZNo9SubQdFRDdXrt16WyOFhoY6a68tEz56VW+tDVCXqu6Vot36ZNq7WpAZo97trX12in8M5nn+x8z1Cujk8RxXZMJWMz7Vvhjvd4Gnop2L9NIbi5XZops6hFd/BLkpa/TeO7O1tbnH+o6kacXH7+nd+V9p6fI12niomdq1j1KwM9vagg5u+kLvzPxUC5au0LJV27QvMFZJLZvIjuIV7dOKD2dbyy+zll+p5ev2yb/VGUpo6juoFxzc2Pqbc0hNwmp/v635br0+XfSl/K1766ILBuniC8+zw56m9cbAwEB7MONxLWLV7czOCg0JUfKuFG3dtsPaXqhd/qOr7bvEXPM5R6q+Z2soa/NK7Wpa1XOdrPfnBGh02d+SaO2cOVsbq7zP6vY9AQAAAAAAau7g4VxFhTdzpnC6M7k9Lx4FdsDP+jQlJudnpopLShUTxQ8nAQC182P+9ywAAIAGa+sPyYqMMP8oz1ZWVoTifQQmslbO1+LIJFVoiM8O6r2/NFyjqmhZLmv7JmW1O7esBb7IvpdqcESy1pU1S/cz0n64V0uGHc5Mkqzzs9WZxqmTX1CkRn5+Cgjw1+EjR3Q497D++/mbMr81PZx7RAcyD0ilfgoODFGgX5AimjVTgPzkX+KnwNIAqaiRcg9a6ygJU1SLOOXl5evIkVxn7adA3lEdzC9SkatBUlvG9x/ptRdnakWWU3Cay7fOcZ51AEXOtI7s1oJ33tDTn5S3tlaU8rXefPllvfDfr7XH63Sm6ZPXP9DilMbqMniohvdqodwfPtVrn+wuW1/Rpvn617xNOtiyr0YMH6rBCUe1bfF7mv39UVeFQ2nakdtGg615IwZ3VVTRbi1+5yOtPeKaXVGgdW+Yryvz8wtdBTWUnXNQn3/5lbV8gG6+8Rr16tFNfpW+GS1n5vXu2V3jbrjGXsa04nfw4CFn7s9dkkZ7/S1J0gWDIrTN+hsFAAAAAAAAAABOb7TIBwBAA0eLfKeS0yrY5yu1Kds611tWatny9dqVl6dd31njmz1aC8tao//MLdKl4zorY/k2yaNFvqz1X2hjmws0tIrWkI6lrdfqIwkerc65WlA63KbqlrxcXdC+rbnLzT6ZIdOrBT+7xbBPi9SlyVr9Y8anPusYpgvH6Z/4Wofr2OcXtlfTb18tq7PRaZWwjGlN8J+z9ZmzH5XmO62Sla2/k7Spuhb5KjIt+O2P06Dq6nvtwzYFtIlWxhbPVrTKr2PF47SPv2KLf/b61qqpXafCed5fdeuA3ufS2o+KrbVVPBcx2zS9Qutdrpbeljh1fJxPL+UtbXleo/J9LL+Gla6Jj1bDjubl2wGqkODGOphzUD8kf6elaz5VWOOmahWboIsvGKr2bTuowKoXENBI7du3UXGxn0qLpJLiUh3NLVRxUSNrvnkfNVZJSYFVXqiwsDDXBmrFdWy71LrqeyUoWt379dW5Hcpb40tb8Zm+3d9YiT2raSmvDtjP7G5Vvx1z727JqdQ6p6eg2M4a0L+3Orlb4zuyQ58v3a6j4R3K7rOczd9onbrp8rMC9cOu8vUVbVisD7ccVNIlN+mq7jFqkdhZbfI3ac36/Wra/UzFBUk7v/1CP+xvrkFXDrX+NkQpoUOo0r5J1q5GLV3rD2mp7mclqlV0lGJaJqpb6D59vT1NfvFV73NBoSsm2Dgo0P48HvNr5fc+/EQHDx3SsIsGK/GM1s4cFxP2fOW1txQUFKS4FjFOqYtplS80JFhbtidrX8Z+u6U+XwFAX8+x/Sx928Qpcz3HG2Pa69Cc8ndB9e+zE3iXLM+xbt0UrfZ6Dqt7z7p4zbeW66Jt1bTIV1nlvyGefL8nKr9bqv+bUvNzHK2NM8x6nOW93nsrq22h0vs8VX6HVjxPsZvf1uxD3sdRu3coAAAAAACnFi3y/bRU+trJo4AW+QAAdYUgHwAADRxBvlMpRAk9XV0X7lterMF3j9HITgHaeKS7fjdumAaWBYyyteLdeSoaOkaDInO0sUKQz9UVb/cqAyQh8U2075PlOuSEFrJWfqDZ+3tp9JAqAkx22ORzhYy4s6wL2i4Bq/TWzPLueO1gx5atWl3cXxPNvvqoY0IRszXce74J/9nH5Qp/bNqyXkWDnO3EZOqzzzy6EzX7MWOTujtdAlfq4tEEOObmaHDZ/AAtnrFSWSHVhLO8WOd1zhIFDhqp3lUEP1z78LUiy85FglLnzNOmvAh1cYdQsjbpm4DzNP4X59vHGbv/U812AilR/pnW9fAOrJjg5bLAnta1lla8Nlu7+lyv39nLtlfAoTwlxPv6ciZZizd30Piyc7les5e6z6WlBufCXI+3dvfy6H7ZdT6XVRlE8XGNzD5+Pdtajzm+lgot3KZlG7y7p9269FNltD1PAyus80juMTucFWQNpvWzZd99pvR9KQoOCNOkex9SuzPaKyiwsXbv2q3wyOZq0rS5+cZKBfmFOnY0X/n5Rco9fMwO9AUGhKqosEB+/kVq2qSJtfZ9WvTy6/rvOo99SVmkv0+fpxWH4nVu+6amxBXUWXhYrfu21BE7yBejjuE79N83PtFnX63U8l35SmzfRq6eX53gkR2YMtfqVc1PM+UVg7ZHtXvl//Tm+5/pC7OOH/bJv6W7+1gnmLX2qBpnfq23P1yiH8z5bnFIaz/6RO8tWGwvY7qkPdg8UR2iXe/XsiBfl+b64b139d7nrm5rPeuUBfnatVf+knf1H9P97aoNSmvUUu2sZ94+BCfkZIebsqzxmet0zJRnW8ta7wlT3rv7meptXcuIXO9gYM6ub619CFGPgT3Kwk5Ni9KsOillQbymAVlavSlVx8I768yW/jq28Vst3n5MHS44vzw86KFR1nYt25aj2K59rflOYQXFxSUqKCxUaEjN/takpqbrqxWrlJTYRkMGD3RKy6Vn7Nca61qHBAerQ/skp7Sc6VI3JXWv9qSkqW3iGWra1NxP3kxXtJtUHn40vMNtrvfyti2pSvyl9/uq7Pk62XeJdV3MO3LZ/i6uZ9jZl+rfs878rP7lz73/cjsQGGL9zahZAC1b33+6UofbWvdKTd8Tvt7lx/mbUvNz7PytNMuZ9Xp0Gz/Q+vt56FhLJVj3ZmXVv0Nrcp5q/w4FAAAAAODUIsj300KQDwDwY6BrXQAAgJOVlaOsdp3VwYxu3yS19E64uLrU9e4StpzpilfaNne+NPJOTbzbDMMVufRtvV/WdW6SRt/cWetmvKgpz76oadV0w2tsXfq1tT/e2/PdHW+SRo0sD8ZE9j1X7eXUyVqjxdt9zM/epK2e3ZJ6bqf9udY2spXqzDf7oUGXlnUJ7N3FY7ZWLE1WZIX5o0dUDupUZMIY5jxMedZ1znyfV5fK5yJC/Ub29z53kb00um/5Fyp2d73mmpqJ9p3Lz4ktW1s3ZKu9qeNwdalsWOvuW9X+W8fmeS6t+yUyO10H7KkanAv7ekRo8EjvLjNNnawNO137WpWKxz/IWq/THbFrPzyvqXWs1na6t6v8BZNpaS0oMEDFTl+16RkpCvIPUa/uZys0pKkOHjym92d9qK1bt6tJk2YqUaly844pvzBfeQX5ys09otTUFB06mKVjR44oI/2ASktKnPW1UPszGlunIlWpTr+vWXv3Kd/6zLc+Xbu3T3vSrY+EJLWxpy1Hf9DshQXqOXSoBic2VvHe7+2Wviprqg4XDFXPlmY8VO0HD9WICxLVTEXa8cnbemdptloP+YV+fcNw9Wq+r3L3sdkbtFaD9Rvr+Rxv7pVDadp4tIX6jbpWd1nL9LTu+/Xz5mmVV5ezR7V87jLlnXWhRgw7S60bmzofaFGGM9uxZ9F8bYw4V5cNH6RuTQuUvPQ9zd1U1pluubjeGjE4SXb7hS272l3hnhtnz/GpceMg6/+WP49G7qHD9mdWdrb9GZA4VOMGt1Da4jf0zLMv64UFyQrrO1ojE+0YoZeiI2latMp6dmP6a1CiU+iDuUfcrfLVRFq6uajS2b3Osj9PxNm9utufaXtd6zpRFZ9B875yP18n/S7x5XjvWV/PffvhGtXOGa+BrXPe1mL199ovn3y8y9dtd90nNf+bcnyRg861/1aWC1ek++Cs89fPYxveqnmH1uQ8ncw7FAAAAAAAAACAHwlBPgAAgBNlWssygbIZXytru2t82tJsZS192x63g3hWnWkbOmu8RwDBF18Bkm1L19jhAtMV4JQ50mg75GcNN8dp8bNva4XP5IErGBhZIUxoQicmLOEO8Ngi4spamXMJV1ljclnp1raTNdsOzLmHedpWIRhUeTvubbj2w30u3IM5P65gS45SrdHyEFzNdSgLPF4qmVDfa67zVFlV58IH97U0w1wTNHRLUvd21mw7fGjZttwOxVxgh00i1KGrdZ3mVrcPHrLWaJp7G+aecYpNS1XHPRf29fAIvLhFxnkEAn2rdPxmGWdUkYnq7hHYyVq5XNvanetxL5Zr1MjPbo2vuNgV5Ms6kKXDB44qsnkL7U/PUnbWYQUFhqr7Wb3VtFmEcg7mKi+/UPmmRb5jx6zlipR5IMNabp8yMnZp9y4TJTQtuLnW16ZdK+v/7lZyipk6qt3WPrVqHW9dRifcdyRTabnWFWnn0fVqfgsNuWGo+nTuoH6jzpe5LAdT9uiga66HAOtQOygp1Iw3Vrw13iUxQgFHftCXm/MVO/gXGtm1hZrHJmnIkDPVXPu0fsdRe0mXJA2+uJUrRGdE9tL11w1Wn4RohVnLDOtjnu9M7fbKkeWr1cDRGtnb2lbXQbr+qrOs9R7Wxh/2OfNdgs8cousv6Kwunc/SZTdeaG1JSt64TZWicE1aWPscZ+29JbSNVb+DWlVufK5MWNvOMmd027y39cnqrVq3cp7eXOYdciza+aleW7xPzTsN0Y2/ulYjOjW17oH3rXeXiVC62O8f65595pUPtEZn6bqrqw4RG+YeMfdKTaWlu5KN0SfwLnCLjnK9yU46yFdhHyIj3M9OXbxLfDjee7aq575GTGuSTit11QS/3ao+tlr8TakBr3Nsv39cxz9tZQ3WU9U7tCbn6STeoQAAAAAAAD81aXv36YmnX9D43/2pxsOTz7yo9H37nTUAAOoLQT4AAIAT1X64HSgzrf60H2GCZddrcESEBt/sCpqNbu9qaU3ZX5eHD+yQhlzhrznlIY/qAiR2C3CDPIIYptWnQdJis+4qnEhArrIkjXKHBz0Gz1aZjidy0PWVlp9YFiqJUHx1wYvjilC/cdY519f6oppWoY53LuwW/uaq/FgrtArYYVB/RTqtam39IVmRXRPLrkVkX9fxjYp0XeOqwih2GMruZtjZxs0VWvKqybmoFLysC64W+rL25ljjlVsb9FRSUqqCgkIFBgXa0yGNmykiOkbhEVFKSdtrfznUvlMnRUVFKy+/QPvS9+nA/kwdPHTYDvsUFObp8JEcpaTu0pYt61Vckmevx70+JSbZIbY9O/dJRbu1dW+EOgzsZJU54b6U3UpTC3U4w6O1uIh4xQc744p2BVGLJFc0sAbSU2ViZBmLX3OeT2uYscYOAubll4fZKp/7o8rYsFTvv/O2Xnh5up6e5+tZjFCblh7dy8bGK8b6yD3kGRCUYhJaOGOWgGi1Mcdw8JgOuUpOXJOuuvq6/kpqfFjrF3+qBWuK1W9gZzsI6HomsvXtF1uVH3aWRlzWWa2aR6vLZcPVp1m+ti1eaZ8Xo1m7gXbrfyMGd1WLo9/rnVdmVhEidjH3iLlXampveoaCAgPVrLmr++Sq5OXlV7ne5tayAQEBSt1bobnDOnay7xLfjvOePaHn3tWt9Lqu1vupBiG+mqibvykVmXe4OV5XK7RTqgyo1+AdWpPzdEreoQAAAAAAAKef51+eoR07dztTNbM9eZdemPa6MwUAqC8E+QAAAE6Kaa3IHcLKUao6q0NZusAdUvAchtuthtnBP7uVPqdVN3eLb46s7BwpMlyRTmttNedqJani+lz7ebwwhtmWcyx2q2059jInxmmtyQ6I+WJa/ytvCc7NPu46U8W5sFtmcnN1JTv45uEVunv0YFqNkunqsupuZ+1WAm/uLy1dbndZ680JyI243mdLdzU6F3arURW6NTbMsdQ2nFJxGdN9sOlqN2un1mUnqXsVQU13l6l+fn52aCqmRbxKA/21MXmrdu/bo03bN2rLjs36bv1qfbn4M6XtSVZu7kEdyM7U/qwMbdq20Tqm/Tp8JFvZB7PUtHkTez1mfbaANurQUspNz1Ruyh4lh7VW65Yt7GCbCfft3pVmXdK2alNNK3QnKmnYON11m/dwY6+qn5Xd/3tbry3YrPy4Xho+4lr9ZlhZZ7/VqFl3s3k1TiEeX3DLXrrm9tvtd889t1+hDgHZyreei7L3lbnl4uLtlvtcotXapA0PHS5r1TAg0tX6X5feg3XjTUPUuihTi5dX/SWguwvmmiopLVFxaalKrcGXsFC7GUVt25Gsf05/Q0u/+kZHj7lCoJ7M0mZdvkS1rHwtD+w9/ou1/D1cR++Sio73nvX53Lve5VUzLfHNk6y/MXY30CetZn9TTvQcuyTZLc6OrzKgfpx3aE3OU12+QwEAAAAAAE5zGZkH1KxpE7389yc17R9/Pe5g6pn65ke3AID6RZAPAADgpJgwjNNd37ZN2maHPmonsl1nRW6f5+qK18hao/eXSoMHmaCf07Wr082uzZ5fdctpdgtynuuzZK2c79ElrCP7a73v0YLc1jnzyrtVjeylwe2ytXiOZ5ex2VrhNV09X/thup10TbsCjFmewTfnuKpj9tEzKOfzuDx0MOdo+3KPVp6S9b5Xd5cVQ3QV5xtmX6V1c5ZrW4RnUNOq69Gqoneox1PFIIw5j55d69bgXPi8Hq599Wqt0YespfMrHb/3MuYeS7bWvUlZ1r1YVQgpMDDQDmkZJoAXF9VKWTkHtGbNSuUXHlPOoQPavGW91n73rdL27tGBrAzt2rlDyTu2atuWTdqdvF3Ju7YpINhf4ZHN1Sy8mb2ecqFqY0KSe3dr2bZUNT6jrVpZ56Z1Yqhy0zdp0/58hSW2qvXzVS07SCWlpWQqrEmo1xBcZRYtTeu351uXrbcuuaCz2rZsKuV7t7LnclQHPJvV27lHe6yPil2UHvJsoe/IHiWbZU7gPXJ8+7Ri5T4ppqu62SsPVbjpKzg91Toit0ztMb1nNG7s6sL3BLiCfE4rizXQIiZaxUVFyq4ixBsVGaGrR12hpMQ2OnLkiL5asUpfLF7mzHU5kJVtr8Osyxe7hVPP94D1Hpq93Rn3sG2ux/vF6z1cV+8Si2c3rsd7zzpdX3uG2+x3XnWvSa/uv+tGTf6m1PQceyn7e+BSdfDvOO/Qmpynk3iHAgAAAAAA/BQFBgSoUSNXHCQ1Ld0ePHmWmXqmPgCg/vnfe9/EvzjjAACgAcrKOawP1rtaOurZOsgaTjSeAd8i1KV/B1drPpEdNLDT8VpAytHG5dukTn3VxZ0cCGmp3p0CtGzmbH22fKWWfZei+BG/0tB41+woq27s7tl66xNrXtn8arq4rbg+a1h9uJfGe3SxeCxtvV12aexyTZ+5xK6zSf01/pddFOLUierUXgFr52n25852l69X4KCR6m2vJE+pa9crI7a7ese7l6hQZvYjJlNz537qLG8N+7to9JCW9jZC4rurS8AqveVsf9nu1rphaKBW726i3j1ddSryO+RR3xoqHlcl5prEpFjLuPehWINv7qKM744o0b5uIUpoE6DVc+c558qaPyJCmyrsQ0hIkVYv36r4oe7jdzn0tXVd3OdnS4RG3e27Na6oTtHa98k8zbW3karEob10eIt7H2p2LirdB9Z9FFndfeBcj8N9LlSLpW87+2nde4Ou1w3dvc9ulH+mPvsuT4NHnqcEXyfesF4jucfy1CQsRP6N/NUsLFybk7/T0aN5KikqVev41jJt6wUFNrLmW+fmSLbSUvdoz67d2r1rp1Z+u0LH8nLVvkOiomMj1b5de0VFRikgwN+1fktIo4Nau36nMg7mqXXfIfYz0lT7tWzlJqUfbaxO552nDs1MTdex7VJrj+tUscz1rGV5PJd+h7ZZ5zRbx0qayv/IUQUntlHorrXakrxDGw8FKjy4WNlpyVr52Vb5dWtjPd2+tlOkrA1WWbZ13BFN5bdvreZ9uUu5Jdbt5jzX9vO1+4gy9qQpP9hfefs36rPPNiiruI0uuLyHWpjvxLK2WfdMjnJTd+lAYLBKDqbq63lLtSu/qfpcMlhJpqdZp457vQrJ005zTEcLFNA0V4cLWyrG3SNtxbrarUXvfKMMvxId3r9bSz5ZpPUHIzX4miFKsg+kiWIDd2vl5h3WsTRWWPEh7frmCy1LK1Bs/6EabD3DWavn6aPNx9Qo75Ay91nH8NFy7SlsrG5DLnSuQ2UHDx9Vk9Bgr+tanczMbLtr5latrGOJ9t0uWkR4c3Xt0lHdz+yssLAw695JUvNm5V3x7tyVoi3bdqhLpw5q09p5cXqy7oHY/Us03/2sFlvvuq4HtPpIgnNvuO6VyBH9lTHjbddzWuE9XCfvkshoBWx29mN/tL3t6t+z1jp7WvM93jM724zSpYHW/dfU893rwdwH362z3lfu9bmHbQro1N3H813hve2rrAZ/U2p6jr3+9umI1zo3RQ53WqqtrPp3aM3OU+3foQAAAAAAnFoHD+cqKryKL1lw2nF3LFLGo8D0NmH+K4wpMR1PmKniklLFRB3vvxecGnPmfabQkGANvfA87cvYrwcff0ZfLF2ufn17qUlYqM+yzz5fqmN5eRp52VBnLbU39fkX9ZdHHlf/c/tV6h0oz1r3Q395VBt+2Kh+5/R1SnE85gfQv77zt3bPNp07d3JKT40fc1sAquaXnpHp+i/7AACgQdq6M03j3nH11Xhz/ya6eUB5+AE/X1kr39a0DZ2rD8GhXNYaTZuRrsFVBPVOBfsa7T23ymBLndo2T1OWxlV7P5gvo9L3Zys6srkCA/yVnZOj7zau0T9ee1aNFKxe3fuqeWgz7U7epZKiAuXnH9X+fRk6eOCQjh47pg4d2qrn2b1UYv3v7F791aVzF0WEe7dOZ1q7++TFD7Q+v42G/+4KdTeBt6JN+u8/FilZSR5BSdN96Nt2i2Dl+1yxLFnvP2tamfQIB+Xt1oJ35mttdpH8Ww7W+Ou6qnlRptZ+skiLd2Uq3zQ4GBCq2I6Ddc0lSQrzuR1L1gb9d9YyJeda64noqlF9j2rWgmS7y2wTCrKv3VKp3/CzlPGlU69ZGw0ecan6xDq/bDXn3LQGNuwKNVnp7FPjaHW/7AoNS3R1J1tWxyNslPX9R3p78W7lFgWo26jbdVmiq7xy3UwtfvMjrdp/VMUKUOOY1ho8bKh6urdvK9LBTV9q9qJtyjAHHxCh9gOH6LLeLawrKuXuXKT/fuLMc9Yx8KIh6tPSdyC8sKhIB7IPKy6m5l9Qbtq8TXM+WaCWLVvoxl+Otr8kqg1zX7757vvau3efrrz8EnXq2M6ZUxuue8V0R0uoq6FwPbupg7imAAAAAID6Z4JdvuxO26eOiT5+lIh6Y75r8uSeNh/mays7sOeu4yqwp0uKzbeepXaQr6SkVMWlJSooLNaZHX6E73Z9GP+7PykqIlx/feTPys/P17TX37W/d7t17LVq3Lixz7I/PfSkDmTn2F3tnigTBPv9H+/V6Kuu1FVXjnBKXVZ9u9oO+v39macUYXp3QI1Ud05PxvYdyXbo8i8P3a92bV336anaFoDaIcgHAEADR5APvhDkqw0nzFVNa1F1zg4Ofv0jtRblCjFlDbpe4/tWH8Ay3aZmZh1UqxZR9pdT6RkZmvPpLC1c8pn8GwXrputv0vRXpulg9gG7K4ZjR48q0D9Q/gGN1Kx5MwWHBGvw+RfrskuuVIvYWDVqVLvQFk5vafsO2EHPoMCad8NRVFSs196cqazsbF184Xnq3bO7M6dmVq3+TosWL7O//Lvlxl/WuCVAbwT5GhpXmDa8ylZSAQAAAAD4MblzXxUR5Dv9NMQgX03VRZDP+ODDuXr/gw+9AnumNb5HHntS5/TtQ0DsNOEryAfg9ODqFB0AAABAJVvnvKgpz576EJ8JnUx51mzLGWZsUvebT3WoyAQUzfZqFuIzTEArNKSxDh7KVSP/RmrWtKlGXvwL3febSYqJjFTOwUxl5WSosLhApX5FCmjsp4AQP/kHN1J86wT99o57NHzoCDVv2owQXwOTc/CIwkKDaxXiM0zwbuTlw+Tv76/FS7627p8cZ87xHcjK1pfLVsjfWseoEZeeYIgPP33ud1n5YAfVCfEBAAAAAACopKREixZ/ZQ9mvKoyTybQt3L19+WhxVoYfP559ufiL5fYn8b6DT8oJTW1bB4AoGoE+QAAAH6GIvter4m0xndcHUbeqYl3W8MpbonPvh5mO2XD9ep3yi9OhPqNc22vJiE+t/BmTXQ0L19Hj+WrSZMwxcREq+0Z7fTn3z2oVlFtNHrE1TqzS1c1a95c3bqfpUsvuVy/v/M+3ff7B9U2sb3dEl9oWIizNjQER48e07H8AjVvGuaU1E5sTJQGD+pvd807482ZWvPd+mq/JDTzVq9dp9ff+q+KrGUuPG+AoqNO5oFJ0mjrOaA1vp+q8ndZ2cDfNwAAAAAAAFv6vv16a9aH9pCesb/KMk/vzJqjf736Hz06ZaoyD2Q5pTVjWuEzXbOaVvlMV62mNb73Z39ol3l2qWta7kts36VsuOmW8XZ9N9MV7/ArrrJbjvNkpk25me+eHjtuvDb8sFGTHnjYXpdZd3WOt20zbsrc3QGbOubTreLyb70z0962Zx33Ojzrec43zLQZ3Mfkrue5/+71uMvMPnmu03Nw16lu2+Z6mH29aNhlWrJ0mf3pXrbittx8ra9iHTNt1rt3b7pX3YrH7N5+desCfu4I8gEAAAColZaxkco5dMQeAgMDFR0dpabNmqhj2076xchf6sGJj+q5//cvTZzwsK65cqy6ndlLzZo1teuZ1tPQcJiW+A4eOWbfEyejT++zdOnQC+Xn10ifLvpS77z3oTZt3q4jR446NWSPm7J3Zn2ozz5fokaNGtnL1LY7XgAAAAAAAODnIq5FjK77xUiNufpKxcXGVFnm6ZqrLleXTu21OyVNr8x4xymtOXfLe9t37KjUGp87yGWCfmtWfq2d2zbaQ5+ze2vM2HGVgns19dK/XtGtvxpnr6uq7ntru+3XXn9TA/qfa9eZ8Ns77TITTPNcftP6NVq/foMd5vNkWiQ0y7i3sXDBJ5o3f0Gl0Nozz/1D0//9mmbPeseuN+vd/+gP90wsCypWZPbVvU4zmO2Pue5ae7j0kqF2neq2HRwcrCcem2yXnTdooP1p6lR1zsx+9Orb3w5ieq7vX69MrxTSM+fgT5MesLtVrrhdw5x/08VyXFwLr3WFhoba8wG4EOQDAAAAUGutWkTJz/pf2r4DKiwqVtMmTdWqVUvFtWihmJgYRUVF2Z9mulXLODVp0sRZEg2BaT3PXHu/Rn4nHeJzO6tbF/1q7C/VpnWC9uxJ05xP/qcXX3lNr7z2lv41/Q173JTtSUlTYuvWuuXGX9rLAAAAAAAAAPDN/Bj24gsGasjgAfZ4VWWeTA8a9/z2NjVv3kw7du52SmvO3SrfjNf/Yw+erfG5g30m7OXZQt/t43+lXj176ONP5jklNZeZmamLh1yodm2r71mnttvu2KG9HZxzM0G/latW6+EH7y9b3gTj7rvnbp1/3kB72s0E4zyXNfs2/NJh2r1nj1PiYpYzy5v1GN26nmmH8r76erk9fTzz//epfUye66jpto/HBO9Ma4rPPT3FK+hn1vfo5IfskJ5n+LFL505e58a93W9WrrLXdexYnr2vJhzpZuoMG3qRMwXAIMgHAAAA4IQ0bxam6MjmOpB9SOn7s5WVc9judtd0fdq4cZACAwPUyJ9/cjQEBQWFOpJ7zL7G5lofyDpkX/sT7U63KqblxuuuHqlfjb1eQ4ecr86d2qugsFCmo90unTto2EWD9aubrtO1V4+w6wIAAAAAAACoWn5+vl6c9oY95BcUVFnmS0CjRvZ3vSfCtMB38NBBe3C3xmeYgJoJmXkG6QwTQjunbx+7BTjTlWttJSTEO2NVq+2227Ru7Yy5rFu3Xn5+UmREhFPiEhISrIT4ytt3twDo7kLWtL6Xnr7PLneruD9mX0yLdRXr+WL217TeZ1rfq3hMNdn28aSm7dWelFR1797NKSnXrm1bxcRE2+fEzYQh41u1dKZczDk04T0T4nOfpwcffuSEW14Efg74r2oAAAAATlhQYIDiYiIU0ayJAgMClF9QqAM5h5WRma3dqRkMDWDIyMyxr6m5tuYam2sdFxtpX/tTJTo6Qr16dNPIy4bprttu1m9uHasRw4eq51ldFR1VNy0AAgAAAAAAAA1dzsFDWv3denvIyTlYZVldc4e2PINqJkRmwmR1LTo62tqGd7iuohPZdsVwoGnRzhyTObbjMd3Odu7Wyw4IuruR/eMffufMPXkmcGi2Ydbp2fqeUVfbzs7Otls7rCsmpGi69TWt9F007DI7YFixq2EABPkAAAAA1IHGjQPVtEmIoiKa2V2txkZHqE18LEMDGGKjw+1raq6tucbmWgMAAAAAAAA4/bWIjdFf/u8Pmvznu+3xqsp+DO7W5mrCBPNMQK+u1GbbJ8u0lGe6nV244BOvLmnr0hv/ecv+HHvDGPvTrS63XdfXwM20IGjChbPe/Y/doqAJHgIoR5APAAAAAAAAAAAAAACgAUqIb6n4VnHOlIuvsh+D6WrVV/e5psW8b1au8mrBz7QGZ1qF82S6ct24abMzVTu12bYvA/qfqzVrv7O7nPVkpk15dcw2zbbrglmP6SrXV5e6vpzotk0XwqYrYc/uc92279ih/fszfXa7W1PmfD/39JRad/kLNHQE+QAAAAAAAAAAAAAAABoo053u5q3bywYzXR8uvWSo3T3t7/94r1eg7uVp/1ZKampZC3PxrVqqV88edmtt7nrbdyTrX69Mt8dPRE23XZVuXc+092nyo4+XLW8CaNP//ZpXuNDdza9nAM60oPflkmXO1Ikz262qS12jptuuLqTnZkKCJixoWs3z7ALXXIcHH35Ev77tVrVrm+SUHp/Z97ffmelMlQcoTUuJpsVEAC4E+QAAAAAAAAAAAAAAABqoBx57Sn+b+nLZYKbrgwlsPfHYZDuE1qtvfyW272IPplW2l196vqyFOVPvvnvutsfd9Uxg7qkpT6pL5052eW3VdNtVMcs/9MCf7TCge/lRV1+nG8ZcpzHXXevUkh1ue3TyQ3YAzr0N05qfCd+dDBN8+9vTz9qhPNMin3vd7sGE7Wq6bXOso6+6sqyeZ1DPkzlXppteE6B0r++iYZfZ2ziRrnvn/W9B2Xo6d+tlh/hMWBBAOb/0jMxSZxwAADRAW3emadw7xfb4zf2b6OYBTe1xAAAAAAAAAABwapVW8V/jd6ftU8fEeGcKp4PSChfLPW0+TOtlZrqsjqvAni4pLlGJSmWVqKSkVMWlJSooLNaZHWreWlldum3C/ym8eTP97dFJTok0/nd/UkhwsC6+cJA++3ypjuXlado//urMle578All5xysVGZa7ntl6v9zSuCLCdg98tiTOqdvnxMKtwGAJ1rkAwAAAAAAAAAAAAAAaADaJZ1hh/L+37Mvasrf/2kPRmhIsK68bKj9abjnmXqmvq8ysy5ULzVtr9as/U4JCQRzAZw8gnwAAAAAAAAAAAAAAAANwOXDLlRimwRt27FLW7Yl24PRsX1br0/3PFPPzbPMrMOsCy7Z2Tma+vyLdgt8bqZs8qOPa/ilw+xuaAHgZNG1LgAADRxd6wIAAAAAAAAAUD/cPbFWRNe6p5+G0rUuTg13F7pvvTPTKXF57ukpdKkLoM4Q5AMAoIEjyAcAAAAAAAAAQP1w574qIsh3+iHIBwCob3StCwAAAAAAAAAAAAAAAABAPaJFPgAAGjjTIl9YaLAzBQAAAAAAAAAAfiwVW3lzyz2WR4t8p5mK18o9bT5okQ8A8GMgyAcAQANngnwdEls5UwAAAAAAAAAAoL5t2ZlKkO80Q5APAFDf6FoXAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB6RJAPAAAAAAAAAAAAAAAAAIB65JeekVnqjAMAgAZo6840dUhs5UzVjWPHjmnZsmXas2ePDh8+7JRWrWnTpmrTpo0GDBigkJAQp7R+5BcVKLfgqCJDw50SAAAAAAAAAAB+XFt2pqpjYrwzhdNBaal3dMI9bT78/FzTZXVcBfZ0SXGJSlQqq0QlJaUqLi1RQWGxzuyQ5KoLAEANEeQDAKCBOxVBvvnz5yslJUU9e/ZUXFycU1q19PR0rV27VmeccYaGDh3qlNa9Y4V5Wrx9hb60hjMiEzSs03lKimztzHWF+CZ98pR6teqiG/uMckoBAAAAAAAAAPhxEeQ7/RDkAwDUN4J8AAA0cKciyDdt2jT16NFDffv2dUqOb+XKlVq3bp1+9atfOSV174lPX9CS5JXOlBQTFqnp109RYKMAFRQV6v8+/qs27tumG3pfSZAPAAAAAAAAAFBvCPKdfhpykK+kpETfrd+onbtTtHtPqnZZg3FGmwSdkdBKSWe01lnduliHZY4CAFBfCPIBANDAnYog39SpUzVq1Ci1bl3e2t3xmG54Z8+erQkTJjgldauwpEjXzrhLAX7++u15N2vB5iVanbJe/3fRHRqQdLbu//hvWrd3s103pkmU4prGqGWzGPVP7K1zz+hllwMAAAAAAAAAfnwmDPXt2vXavHW7iouLndKa8ff315mdO6jXWV2dkp8Ggnynn7KQnsM9bT5+ykG+/ZlZ+ter/7FDfNVpl3SGbh93vaIiI5wSAMCPrZHzCQAAUCu1/VXWqf4Vl5/1v+KSEgUFBKlHqy5q0TTaLm/k5/p/d0rc/7i27D9yQOv2brLDfpP/93f788e2efrVGnHV1Xp8UbZTAvz05CZ/rlcmjtdN1r084popWs7tfHrK/lyPm2t01WNa8lO8Rj/i/hem7VXmjLdUWlT1fzAw8w688Y4KnV8tAwAAAACAk7fk65Wa9+nn2rFzt91SWG0Gs8xH8xdq2YpVztoAuH2+5Gs9/OQzdogvIb6lOnVoZ5e3TWyj1ta00bljO3ve9uRdeujxZ+znEQBQPwjyAQCABiGgkb96x3dV1tEcXf/GBM3b+IVd3jykid217uOX3auucR3tMtO17ie3vao/X3ynPf3ZlqX258nKmD9JI66aoFmbC50S/FwVrnlZN111vaYs2u+UNDyFm9/Uw3e/oDlbcqTwRHVPCHDmAD9dOf9bqOwPPtLeJ5/2GeYzZXufeEpZ78/Rwc8+d0oBAAAAAMDJ2pOSZn+OGH6xbrp+dK0Gs4xxvNbGXIqUs/FTvTL1RT06Zao1vKhX1x4qm5ey4kNNfcaUW8Mz0/TWinTlOXOBnxoT4vvPzA8UGBCoe393uybdc5dS0/YqICBAt48bo9vGXW+Pp+3dp/vv+a3+cOet1rS/Zrw1S4uXLnfWAgD4MRHkAwAADcakoXdpWKfz7HHTfa6Z7h7X2Z5uHBDkFeYzLQSel9TXHs84csD+PCnJszXln1uUNOLXurJToFPYwOUma8kbz+jhp5aJhti8Bfa6RfddIi2Z+qwW1uT7w5+cQm1a9IFMZ9URl9yv6a89pSee/aPOPWU9LhQqe80CvfLEBM1x9ZB92irMWKOFL03Rve9tcUoasp/Odamp6F+OVnC7JOWuXlspzOcK8f1NuWu+U3CHdoqy6gIAAAAAgLrh7k43sU1rndE6oVaDWcYo9vGjvIoyV/xX/5i7VYWtz9HIEZdq9JAuivJ3Zuqwdu04qvbnW+UjztfZkcXavnim3l571JkP/HRkHsjSzNkf2d3kPjhxgt3q3udffq0juUd1/oBzFB0VoVZxLXRe/746dPiIvvxqhbp16aj77/2dIiPC9e77H9nrqI2pz7+o4Vdcpe07kp2Scnl5eZr0wMN2HZw65vya82zON4CfJoJ8AACgwQjyD9RFHQfY4z1adraDep5d+rrDfJd0Pt+eds/z7Hb3xOzXwpf+o82BAzTuuq76mcT4pJQvNOW9r7Q6t8ApQLlAdb/udp2rLXru9WXKdUobjiPKyXCNdeqU+CPc80e0fs7LmvNNmk73u+3I+o/13P++0eYcp6BB++lcl5ryCw1VwqMPKLh9WzvMl/bYX+0AX2lhoT2eu+Z7e17C5PvtugAAAAAA4Ccka5VmLt6vqH7X685RfdSjS0d17XOhRnZv5lSI0MDrr9dlfazyLj112Y3ny3RCmpKc7poN/ESUlpbqlRnvqLCwSL8ae60d2jPcrewNG+L6byTGJRe5xhcvXWF/xsZEadyYq1VQWKjpb7xrr6umxt4wRjEx0Vq3br1TUm79hh+Ukppq12koTGiOYCKAukaQDwAA/KyYMJ9pra9OJS/Vh1ukpOtGqXeYUwZEDNLISwKlb97Uwso/QARwmvILCVHCI/fbre4d/W693TJf2qN/tcdNmZnnFxLs1AYAAAAAAD8VKWvX6oDa6qLBNexWIsBfAc4n8FOyPXmXPfTu0U2d2re1y3btSVVG5gG1b3tGWbDPiI6KVNvENkpL36d9GfvtsjM7d1CPbl20dftOJe/aY5fVREREuEZfdaXe/+BDZWeX/9LZtA73/uwP7XmmDk6dCb+9U088NlnBwXx/CfxUEeQDAAA4SZsXzVSyYnRx7ySnxENhqpZPn6J7x1ytEVddrVsnvqwlKYXOTF9ylbLkVT1393jdZNW3l7nrIb04d0Otu6/NXvSYvfyIyZ8rw3SD+9Ik3XGNWedNevipBUr2tRvZGzTvqYfK9nfENeM16YlXtTzZs025LZpl5v3pY9fkmhfK9nVWDbrX3DzdWff0LSpM+VyvTHQd603jJumVJa4vCsx+zHligm419ax9ePilz+XrtJluTOc8ca9zXOZcTdGc9d5nyus8ZK/RrIk3WdPXe+yrc87vMuXOfixKVeHmV8uWq3jua7Jdu1W+IcMUof36bHUNknzZn+txs72rHtOSDGufFr2sh8dd71r/xGe00NcFK9yv1e9N0SSn3ogxE/Tcex73iuc6vXYvWXNud+37FK8Z2Voy2ZTfoTlV7LLrfN6mKWtc08un3ubattd5ylby/Jf1uHNOy65hxaYJs7doifV8THLXs+7Nex/wfkYqbm/Gn1z7Xba9aq6T+157fJHHnh33frDuiM0L9MoDzv1nzbvDPLdez4APzrm+aepa1/TcSa7tlJ1757mxhlmbC5Uy/xnX/TPZ1TW1r311cS/neQ0912Vtev1sj/v3Mc1a4zxH1Sq0tjnBXmbENeaec4qzl+k56/m/6e43Ze1mlY57XaznKmPNR3rxgfLn5KZx99r3Z6UzWfG9Y93Hjz+1TO5d8q2K/be2vm7uM+X3nn1PPaPl1a+sEjvMN/n+spb5jq77obwlPmseAAAAAAD4qTmkXbuPSpFhylvxoZ55ZqoenfKinvnvKqX46oGy6Kh2LfpWmxWjIQPPcAqBn4btybvtz/7n9LY/jY2bt9mf7ZIq38/tktrYnz84dQz3su511dTg88+zPxd/ucT+NNyt8bnnAQCqRpAPAADgpCRr8wqTdjlHnSrm+Aq3aNYffq/H536jzUdDrfmJapHxuab89q+aleLU8bJfSyaP1x1Pf6yFybkKs+p3TwpXYeoPmjf9Yf1+4ke+w3fHk7NMr028T6+sKFBEQrgidFSrl76sh59wBYjcTHDt3lse1otLf9BmtbK2nahOgTla983HevzuP+vFFeW17X2Ld7qVDAy365qhVg0SpszUs3e/rNWF4Yq1VpWds0Vznp6gGUvWaNYDD2vWliC1MNsozNHq/72gSdM2yPPwzf7++fbH9co3GQrrNUxXD+qooIxv9MoDd2rKIh9BpsKt+vDJxzVjy1Ez4Sqzw0B/dp3z1KOKjU9UQkSGlky9V8++k+rU8Var7bbtKfPVRPKanccJJXnK0dcvWfv00jcqjIhXQqCUseUrPTfxr1rudcHM/XWHHn7jG+0L66WRIwaod9B+LXzDuldMSM3Uieioc+37cq027fQ4eylby4JNS9bvLD+vuVu1zgSzAn3cz25hrutt9suICHdd++4R7qtv7uM7NeGfC7Q5N0HDRwzTRbEF9jW8Y+KrHuGwbOs8T9KUuetVEJSo4YPOUfdw63qsX2A/I2WhtQrbM9fIe3snyOf9YJ3rRY/pjj+9rDmbjyph0OUaeU6MCrZY+2Q9AyaAV7UwxZr9Cnd2NNT1DJlnuOKeZix6VZP++ZUTTj25Tmk3v/OYfv/AbKUExaqT/Ryt1YzJjx5nX819/KZemZtmXeuemvjCAzov1lWeveZzLbROSXbyB1q3w1Xm0/Guy+aZunXya1puvesieg3Q8G6tFJiz074//2xCvK5a1smw3om3u9472RHnaOQvrPulxVFtXrrF6/1Uke/9d917k6Z/ZT0r4brokqus6xer3M3Wua5uZQAAAAAA4GegWCqyPrLW6X87InTR8Es1rGeEipK/0qtzt9izbFmr9OKUqXr0mWl6fa3U7/rRGhjpzAN+IkxrfIZpWc8tY3+m/Wla36vIXbZ3X/m32O5ltyfvtD9rqmKrfFW1xvfBh3OV2L5L2XDTLeO9WvFb9e1qDb/iKm3f4f2LczNtys189/TYceO14YeNmvTAw/a6zLqrY7rD9dy2e12Ge33m07Oe5/6Z+qbsmef+YQ8V5xs12UbFfTbLm/WYuhXPT8Vjcnfr694X9/ZNmVmnOe+G+XRvo6p1HW9b7m24h4rHCqBuEeQDAAA4Gbn7lWL+bdsrUU4OpkzynGc1w2TB4i/XU/95XU89+5SeeO1tvfNwrLKdVqw8Jb/3qKasKbTqD9PkV9/WS6b+s9P0+qv36+p4KXvLa3ptYU1a2qogeYP0i5f0+muu9b302OUyGa3sNbO12h0ozDVBtI+1WYE67zd/0ztvTbXqPqWn3pqhl37TUxFK07yn/qt1dvqmo4abfZtwob2out2g++x9fUrDO7mKamRNhto+9rp9nE+99ZL+0MsUFmrW049ree/Jesns7wuva/qEnnb17P8t0yZ3+qdsf3vqzuen66lJt+vme5/QSy/cpXOtdSyZ+qqWV2z2a/0CLQm7S9P/O0tzP5ilq82+Jn+kF0wYSK1082MzNP0F9zmfqBYZTstqnmq73cBYtTUne/3OakNJ3nZqvUZZ+znNPqcvvTZZV5ubq3Ct5qxwhwtztfrvD9v317m3/l3/fGGibrv1j5r82lRNtM5j9poX9NYSsyPx6n5Jor3EEo9WAbO3fKN1ilGSWe+iDSrLlaZs0HLrI2LIOXJ1uFBZRL/fWvt1v8Z0c013uul+ez+fmHCOdZ+U38dJl9xv7fsTuvPW2/WHF6xzNSJGSv1YL3g09RfW+y69ZD8bj+jOeydaz8dT+kNHM2et5jnHWnF7wye47jX39k6Yz/thtqZMXavsWOsZfHmaJt97i26bNFX/tJ+ZNM14+iNV2bZixDm6zdqv+27q6pq+yOy32dffqneFHZ33v/Uaad1vZrtzH77wpI5jeUa87nfeL+XPkbWvi9Z7xBMryPhcz9r3sbnv/1QW4jMiel2oi0Ktz6Sr1L2qm8By/OsSb637Fdd7Z9Ifdedj1nl82LRQaZ3muV+UPcvJS2ZqiRkfcr/rPh5r3S/mPfXssErv1DJV7X/yUv3XvEN1gSbPmKo/3HGjdf3MM/Q3nVvlynwrPXZMKX95QnnbdiisVw97MOOmrPSYr5/pAwAAAACAn4Sw7hpz/fnq0aWj+g27RpeY7+6SN2qDO8nXrJ0uGXGpRo84X2fH5mrF29P1iscPnIGfAnd3uHfd86DG/+5P9vDlV9/YZS9Nf7OszD3869W37HmLFn9VVjZh4l/sstq2yGe4W97bvmNHpdb43MEyE/Rbs/Jr7dy20R76nN1bY8aOs0NuJ+Klf72iW381zl7XVVeOcEq9ubednr5Pm9avsevOevc/uvqXN3gF7TIzM3XRsMs0oP+5dh1TNyE+Xn97+ll7HWZfTfkf//A7ezDjr786zQ4q1nQbRlX7/Nrrb9qfpty9/B/umVgpYLdy1Wqt/e57r+17MvvyyGNPKi6uRdm6Fi74RKGhTiMNFhP887wWZv6/Xpleti2zzw8+/Ihd7l7H8EuG2fMAnBoE+QAAQK2FhIQoO7t2X16Y+ma5Bqcg1xXQig1XE7vAbYu+fceE7gJ19R03qpNHk1xhvW7RzZc4E2VMfRMoM/Vv8Q7+RPTS1dedY4+u/t+aWrTs5ki6ReOGxDgT1va7DdT5ditaO5XthM6yVyzQPJN/6WjVvTTJowWxMCVceoMTJFug5eurjAbV3iW36MpOTnNeitG5lw5wxs+xjrdr2T7E9rrQbtVO1pHnHLFHyvY3YsS1Gu5uEsyI7anz7SDTN1q3peK+XqA/TLpQsR7Vk5eabpGt9Vzya13ZzeMieZxzT7XfbqiC7H87pyqjxo9Mom6+1dpPZ0phXXX+ea5trUt1X7BvNG+ptZ3Ay3X1iHjrrnGLUbfzXMHHhetdrZ7FdhroCm6u2OCE0HKVvHqt1OtajTHrLVyrHU6SLyPZ1S3veed29Fhnbbjv45665rpeHvdRoDoNcp3P5KVbnXs4Qr1HXKgEj9NuBw+HuIKHZcd6ylS+H0w32aaH3XOvu8brGQw0z4wZyVhWdq5ORvdb/6SrPe+3kzByvOf7JUa9h7iuvzJy5Dwu3nK3aNbkF7SkMFDnTXhQV5c9g46IgfrDW7P0+rPWek/sJnDpNMw6Ru+IYmC3vpWe5bAwZ+c3r9Q6j2ckLCned8Cxuv0PDHPew1u0zrOr67AkJfhcmW92iO+hx5W3ZZtCe3RTy0n32oMZN2UpDz1GmA8AAAAAgJ8cfynA+mjcVMGuAkuA4tuYLw0O6cghV4kCItSuS0d17dJTl904ViNbFyl98Qptd2YDPwXFxcXO2Mk7kXW5W+Wb8fp/7MGzNT53sO/vzzzlFTy7ffyv1KtnD338yTynpOZM8O7iIReqnf2r+qqZba9Z+50dngsOdr0JTCjPhPFMq4Em+Ob23NNT7HmGqTt61JX2sqlpe+2yqtR0G9Xtc8cO7b2CfWZ5sz/uVg7d/PykX4y6ypmq7NixPPtcm0Cim9nesKEX2eMmNDlv/gJN+O2dZdfCzP/1bbeWbSslJdW+LvGtWtrzjeuvu7ZSaBBA3SHIBwAAaq1NmzZav369Nm3aZP0/8SnHHUw9Uz8x0RXQOVUKigr16aal9viGfVu1J7v6f1DN3bDQ/sw5dkhfJX9rj5+woDDv4FN2qtOFaF91T6qYhglUUJAz6lZtfSmsU1/Z/9RKTi1r2S170WMacdXV3sPkzyu3/BYeWCGUFaMWTitabhnJrtbnkvp18NEKVpI69XONZWT7jAZ52Ty9wj6ZYfoWZ66HCucsLNxJ2iT1VFvPjFNETKXW4dz7mz13UoVt3aYpTmuHlfa1V1d5n9pspexwhe7O7Z1Y4RxZ+xNbHn50O6Ht1lq4OTVewuOdVt7cMnbaLeep8GPd67UfV+umqU5Lgu4gV1JXV3AzY4Ore9HCLfrWeky69+uos7uZVhV36ttkMyNbm1eYbhIG6OyOFc9GDZXdx2s15Rbv/Rrxp4/tKp73sAkVpqz/XPPeeFUvPnCvJt11k279Z+26ajhhPu6HDFdft1o+9Tbvfb9qkmbYc8rDryejd8d4Z+zkRYR6X6uI2OrWnaoPn3S15Jg04gHd7RHwPRUKM5K1fP6bmvPSFE26+17dMeZxzXHmucVedLtuNhcidYEetu6ZWyc+o3nr91fRmuBx9j/hQt38i0SZFkRnTbau4ZhJenHuBmX7XplPJsS35/5H7Nb3THCv1QN/kl+Avz2YcTvMZ1rmI8wHAAAAAMBPTDO1a9NMykpVatk/6fOVusN8UxWhaLrPRQPSJqGV/Pz89PzfHtG0f/zVHi48r789787xY8vK3MMdt95ozxty/oCysheeesReR5vWJ/ZdpmmB7+Chg/bgbo3P+Orr5XYwrWIQzITezunbx24B7kS6bU1IOP5+mm0Pv3RYpfBcm9at7cCbCb4Z0dHR6t7d+z+iRES4/vvF8Rq5qOk2jKr22TN452bq7t+fqSyP7ZtWAkNCyqPJFZl5po5pUc9XS4fr1q23Q3rdup7plLh4bsuMv/XOTL087d/OXACnGkE+AABQa+eff778/f21YMECvf/++8cdTL2AgAANGjTIWcOp8din/9BnW5fZ43sPZegPHzxih/R8mb1ugV5c9oY9XlhcqEetZdek/mBPn5CC3CqCJ00UWDG0V62a1w+KP0e3/eIq76FfvGq1uQqahJ3M0i4R3SrskxkqtMxVrUrBw6oldBtWeVvOcG58zY8lsFKysnp1td2TFn6mRvrYB3souxeS1GmIOaNrtW5LrrRjrZaYFhA7xSuwY08Nt+YsWb9ThYU7tcmEEXv1UtJJNxaXqIt87ZM9dHW1tJb9jV6862bd8cALenvhBqWEdtS55w7T1b1ObbisJroP8rXfrqFtLW7l00+YYp2AavLqb+TkWE+BQiXPnaRbb79Pj/9zgb7ccsR6Zqx7beQAuX7D6iGwo65+dpqmPzxOwzuGKmPLV3rxgTt06+TPfbQ+erz9D1SnsU/ppefv152DOir26BbNm/6wbhrzmJbUsCnTrPfmKD95l5r07VUW4nNzh/nCeve0w3wH3n3PmQMAAAAAAE6WXyPXf7YuLS21P2vDvYx7HVWJ63e2ErRLc2bM14qNW7Ri7tuas8cqHzxQnUyFrLWa+d8v7XkbNm7UgrffsOc37t5N7ew1AD8NbRLi7edi647yH023cL5X27m7cpcju3an2p8t48p/5r9py3Z7HYknGORzh8g8Q3umNTrT5WxdM8E7d9CuKu5tP/PcP5TYvovXYLqtrQu12UZN9vl4TJe57lb/fDHznnhssh0sNF0Fm/3w7J539549dkivc7deXvtqugF2M9fPdKtrWu4z8266ZfwJBS0B1BxBPgAAUGumi9xrr71WEyZMqPFwzTXXnNKudfOLCrRyz/eKCGmut8b+XcO7XKCjhce0bKfvlvY+3/a1/fn0yPt174W32+PzN35hf9ZKUJgrlFSxG8sm4U7LdmuUXOnfxfuVYvrv9BQRqwR7xFd9qTB1g6sFNo/uJsM6DdPIsTd6D5d29OjOtOYikly/uFq3eqcqNziWqh3rXWOxEd4dCPsS26/CPpmhX92Gs9z7mxLfV8MrbssZLvLsz9inILl79Vzno7/UjOStzli52m+3yGSaLLEKP/6pq7mIRFcLjTkJOvc63/tRfi8EqvO5puU9afn6VCWv/0bZscPU3fwgMKyDupsugRdt0A474Cede17Psnus1sruY6n7hT72yR7OsZ+N5EWvap7dstpkTX/tKT0x6XZ7/vB+J3IHW9bsrBD82m9dQ2e0RiIU6975bhdW2OfyoXflJivr1PJk0yW3h4xUu7vfuhGu/nc8qIm9TAt4H+vxJ3yF5epA7hrNm75F2eqpiS+/rqeefUR33mqdv+suLLs/vIUpttcVunPK65r78t0abp3j7DUvaNaKim+jmu1/WEIvDb/3CU3/4CXdP8h69xSu1ZTXv/Hxbqus2UXnK+KqKxQ38Y9eIT43U9byz/coYvQIhfWtFEsEAAAAAAAnqHWrOPvz3ffn6vW337OH5SudLjAspnvP+QsXl83zHMwyhnsdVQrrrrHjLlQn/x1aMHe+FmyV2g2+VmP7Od+GNY5QcO5GLbTmvT/3U63aH6ZOQ67VhOG+v9EATletE1zdoC79eqX9abRLamN/7txV+bvw5N177M/2bct7VVq6fJX9mRDfyv6sCyZYZsJnNWFCbibsVlfc2zZd3O7ctrHS8Pqr08oChyfqVG8jJiZakScQ/jNd55rtz3r3P3agcOrzL9rlppXAMdddq03r11Ta13kffVDWqqD5NNOmnglnjhk7zmcLfwDqBkE+AADQIJgm3hsHBNmf5n9uTYJCnTFvYYFOqLC8qpo0PoEAUViMEkywp2KIKLCjup9jRvZr1usL5PTYactY9C/NqNTTbEedO8KE3fbrlade1WbPxEn2Gr01zRUyPHdEXx9d35682F4XuoJh3zyvFxZ5BolylTL/Vb1t/k0We7nO7+ajrbz1W72O78cQ222Qq2Wv/72qt9ZUaMo+N1kL31vm0X1rVcLUqZ99kZT8zn+0MLn8pBemLNBrProDrvV2C1Osf9xan0mJalHTZgZrIrabzu1oRhZoxrQ1FY7VXLPZWu5R6G55L3v9As1bs18R/brK9U/wCOscJFr7uUUL/7fBWk+itd4TjvFZOqr3JeZAd2rGdOu+r5Ccyl7zquY5qbSCHNd91iQ2vLwFxtwNmvd+9V3rrkt2/Tq0TKwTarTOxZdryjeYu2a2/usEUGuqbb9hdohx3fRXve4Hm/Uczpjro4voqmyuGCysXmxST9fI/C+0umzT2Vr93kxXiLeuBMbovEmTdXO8OaQXNMW6z70e3+xlem7M1brp7jedbpJrxuu6FOQ692S4wjxup4yFH1fqWjdjs7nvPMRa707nJXekoMA14qm6/c/YonVeK4tR295OiDi3UD7WVklgy5aKvnmMzxCfm5kXPfZ6hXTt4pQAAAAAAICTdVa3LmqfdIaysnO0a0+qPXzz7Vp7XmFRkd6eNUcrv/2ubJ7nYJYxy5p1HE9AbHddO/5OPThxgh784ziN6Rensvasws7QyHG/1iQzzxomTbhe1/bxmA/8RPTs3lUtYqL17dp1SklLt8sS2yQoLDREm7du18GD5T0ZZecc1JatO9SsaRO1jncFAHenpGnN9xvUskWsetTguaoNEx7z1X2uac3um5WrvFrwy8zMrNSVrekOduOmE/vpc1Xbrkt1sQ3TPW9Fpux4Xekejzm3zz09xW410Jxv023umrXfKTVtr1OjeiaoeN89d9uBwuN1MQzgxBHkAwAADUKQf6BuOPsqZR3N0fVvTNC8jV+oXfQZGtS2r1PD23W9RyjQWuaeDx/XU5+/rLCgUF3VfZgztzaS1KmfiSF9o81eP0AK07nXj1N3a1b2mpd1x5jxmnT3vZo07nrd+l6iRl7iVCsTqE433a2bk6wFUj/WvTdcrztM/bvH66ZbHtesVKnTkIm6bcjJhKyqEXGhbrvHtJRWqCVT79CIMRPs/b13zM26459rlR3YUbf9+UZ1KktcWdwBqsIFmnSzqT9Bc+qu6bDqxQ7Tbb/pqAiladbk23TTOHOunPN1w316bn1NIjvWVTrvGt1pznnhWj1398269S5rHXfdpNG//UhtL73AqeWhttt1WrmL6JZYxwHMGF004Xb1tnZ98/8e103XOPeXNdxxjblmG7zDWe6W95K/0Lz10nm9XTE+I7bTQOsu/kHzFu20Jgaq7Un9wDhQ3W+aqJF2yMq672+4Sfc6+3WvCYdN/risVTR3cG3ddGuf3ft+22yF9XO1eujNtJbnuvlW/9Op/5QTmow4R8MHmXmFmjN5vGuedQ2veylQZw8xFWousNsNuu+SVt73g7O+EeY5rEEyLyLeaTVzy8u6174/nvEKVVYlot8wDbcPY4EeHue6nveOuU2vBVnH56pSd0x3tg/fpfPM/TP3YT38RnkYLnvN51p41PpM/kDrdjiFVariujSJVyf7hv9CD9vvBtc5nJIaX+lYspc+7Lp/H3hGM16aYtW7R1NMADP0Al3cu4r3XVX7n71Mk24x786H9OL0l61rOEF/nmq6TA/V8EtPoqVJAAAAAABwykVGhOv6a67UpHvuskN0bvkFBXrz3dlK3rVHCa1a6v/uvsMVwvMYzDJmWbMOAFJgYIB+/asb5N+okd767wcqKiqyG0EY0O9sFZeU2K1bus377Au77PyB/ezpwkITnP3QXvaOW2+011WXLr1kqB1I+/0f7/UKu7087d9KSU3V2BvG2NPx1vPeq2cPu/U4dz3TCty/Xpluj5+IweefZ3/+7eln7SCbmwnemaG2fIX26mIbpmtez7qmO1xTNnrUlXaYrqbMfr39zkxnqjws6e6St1vXM+1zPPnRx72OwZznBZ8utMfNp2fre9t37ND+/Zkn3S0wgKoR5AMAAA3GNT0u019H/Enntz1Hdw4aq2evfED+fr7/350erbropasfs7vgvbbn5Xrll0+qdbjr12a11bbfhYrQfn22ukJT4klXaPKzd+vmXuGKKMzRupQcBfa7XS9NuVHdg5w6nkw45dkX9cStA3RufKBSkndqXXKuwjoO0J0P/12TJ7i6JD1VYs+bqKlmf89JVEJhmrXtndqsVrpoxF166uUnNNIE3jyZ8N+fh6l3uFV+1Kq/r0lZV7U/hoRLn9DfHxun4d1aKTDHnKudSskOV2+zvxPMNamJJA2f8pTuH9FTJo+UkZqq7LBBmvjsk7p6kO+Dqfl2C7Vu0QJlK0ZXD7Gbz6tbCcM0+eXJ1r1+pjoFWveXuV+seyyi1+Wa+Ne7dJ7XCYhQt/OcFt80QGd39LiWSR11tnv0kp5OS30nIayXbpvyN+ucnqPu4YXabN/HGdaD4rqPh3dyVYsYcrem/maAeocW2vf6Puv+HzPlT7ooydfDIXW66QndeU4rO2yakmyuU6hcNcPU+/dPaeIlHa1r6MyLHaWn/nqLzq31/Rim7nc8qZfuudzaj3AVprqu7z4lavit92v6dTW4jp1u1ORbz1GnUCnbuj9SspsoyPcheQs7R7c9e5dGdix/X8T+YrKevHXgqXnuYy/U3Y9drk7mPn3vYT3rtMQZ0etCXWTte0TSVere1i6qls/rYt5lj93veveZd4N1LOFD/mSdl8rHEtvbOtcJodq3/ivN+t83SsmNtd45d+ulV36r3tVdP1/7H9vTen/FK2zfD5o3d4EWphxVi3Mu1/3PvqQ7T7TLZgAAAAAAUG9M+Mh0nZuSulfxLeN0w7VXKTCwwneUAHxqk9BK14y6XFu2JWvK3/+l3KNHNXzohWrcuLE+X7JcmQeytDc9Q18uW6EmTcI09MLzdORIrv763Evaun2nrrt6pFq1rFk3uLVhAmRPPDbZbh2uV9/+SmzfxR5MK3Evv/R8WWt87tbfDHe96f9+TU9NeVJdOjtfMteSWbfZhtG5W6+ybb8/+0M71FZb7tCe2b+bbhlvh+HqYhtvvDbNru9e1oQXFy74xD5ntTXvfwvK1mP2x4T4TFe7RlXXwgT7+vZx/VeDo9Z9c9Gwy8rmPfjwI3p+6rNl3e4CqHt+6RmZpc44AABogLbuTFOHxFbOFE6NVC2c+Hs9lzxAk1/7Y/XhE/xkZC95TDc9vdb6V/hdev3hmgYDPeQu03M3PKuFJ7o8AAAAAAAA8DP1/CszlJ190B6PaxGjcWOubnAhvi07U9UxMd6ZwumgtNQ7OuGeNh9+fq7psjquAnu6pLhEJSqVVaKSklIVl5aooLBYZ3ao/7DT0uWr7K6pS619Oqurq5vcVWu+V9vENsrLz1fa3n3q16enioqKtW7DJjXyb6TrfjFSg87tY9fFj8cEAU1LhSZodyKhPQANAy3yAQAAnLR4nX/rVepU+JVee6dCl6b4icrV5iVr7bGItk5XqbVSqM3vvKmFaqXbbiLEBwAAAAAAANTGmKuvVI/uXdS1S0fddP0vaIkPOEEmkPfo/X+0W+gzAT4zGDt27rZDfMaKVWv17dp1SkpsrcceuJcQHwDUI4J8AAAAdSCw0426a2wrJc/9lz7cTJTvp2OLFr6xQdlelyxXKfOf1YvfmPFWunpQ7bvFLVzzqh6fm6PzJjyokbQwDwAAAAAAANRKZES4Rg4fqtEjLlXjoCCnFMCJMM/T/919px3SM8HYc/v2ssuirKF/39662Sp7/MF7dd+EXyu8eTNnKQBAfaBrXQAAGji61gWqs0WzrpqkGQpUQpKr5b3slJ1KsYN9geo99gk98IskawwAAAAAAAAA6g5d655+GmLXuvjpoGtdAAZBPgAAGjiCfEB1cpW8aKY+nLtG65LTlGGKQlupe7deGnn9tTo3KcyuBQAAAAAAAAB1iSDf6YcgHwCgvhHkAwCggSPIBwAAAAAAAADA6YUg3+mHIB8AoL41cj4BAAAAAAAAAAAAAAAAAEA9IMgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA98kvPyCx1xgEAQAO0dWeaOiS2cqYAoG6VlpYqL79QeQUFyi8otIYi+TdqpGN5+U6Nn5+Q4CAVl5SqcVCANQQqOChIwY0D5efn59QAAAAAAADAz92WnanqmBjvTOF0YL7r9OSeNh/mqz0zXVbHVWBPlxSXqESlMt/+lZSUqri0RAWFxTqzQ5KrLgAANUSQDwCABo4gH4BTxQT39h3Isb+gCm4cpMaBgWrc2BqCAl0VfsbsUGO+NRQWKi+/QOYfXS2iwjk3AAAAAAAAsBHkO/0Q5AMA1De61gUAAABQa5nZh5SemaOWMZFq3TJGMZHN1bRJiP39VUFhYfkXWj9TJrDXrGmofV7M+WkZHWGdr2wdyD7s1AAAAAAAAAAAAADKEeQDAAAAUCs7UzPUyM9PZ7SKUVFhgbKzs7UvY7/S9qZr//5MezDjpszMO3bsmLPkz1dgYIB1vmJlfpa7K22/UwoAAAAAAAAAAAC40LUuAAANHF3rAqhLJsQXHdFUIY2DlJ1zUPkF+fILDlZhSYnyCgpVXOKn4MbBCmxUoAC/Eh06kKPQ4DCFhoYpvHkz+fv7O2v6+Tpy9JgO5Bx2BfvqgGn9cMu2ZKWl71P6vv3auy/DLm8Z10ItY6MV3zJO7dslys80lwgAAAAAAIDTAl3rnn4q9jLinjYfdK0LAPgxEOQDAKCBI8gHoK6Y7nRNS3yBAX46fPiwiv2kQ4X5ahTQWO++867Wr1uv4uIStW/bXu3atVZCfKxKCorUq0cPBTQKUmlxsZo1a6YmYWHOGn++7C52rfMXFd7UKTkx2TmH9P7ceUrbu88p8S0hvqVGj7hUzZud3PYAAAAAAABQNwjynX4I8gEA6htBPgAAGjiCfD+SrFV6cXGk7hzVVpkr3tBMXaE7+0W45m39SI/O3uEat0QNHls+z7ZDM6d8pM3OlC1ygO4Y30fRzqSbWfdLaQP1oLWdBsmcq8VxPo/9lDHXbtpXOtDhiqrPq1NHla5dHXHvgzMpH/tiX/vF2c5UW1078Qp1cqYqsuuu61Kn5zG/oFDpmTmKj42wu8wtCvRTxqFDKi0q1kdzPtL3a7/TsaPHVFpcqoCAAJWoSL17ddf1N9ygkJAwHc07poimzdSosFgtYmLsOj93pnXDVtb5DAoMdEpq59u167Rg0RIVFRXpjNbx6talo6KjohQT7bpH92dmK/PAAa3buFm796TZ3ftecvEF6tX9THv+j86+z9N1UTX37qmwefZULWxVzbNbg+fP06l4vgAAAAAAwM8PQb7TD0E+AEB9a+R8AgAA4GQcSJdauUIiB9KyFR1ZHhjZvF66duIEPWgPVyh68RuaudWZWcYEs9x1rKFiQMQETaZM9Qhyoc5tXaZlWc54BZsXe4R86ly2lr1vwk3u6z9WQw58pBdXeFzrrR9Z1z6i7B65Y3B25fDnKWS+jNp3IEetYiOVnZ2jEutfEXtzDqqooEgH9mdq/bp1ysvNVaPiIgWWlkgFBSqxhlXfrlFefpGOlRTJPyxE6UcOqtTPz14HpHjrfJpw5IlYtWadPlnwuf3l4PChF2rsdaPVu2d3tWndSiEhIfZgxk3ZTdf9QpdefIFKSqWP5n2m1WvXuVZyujPB3mmrlOlMnho1eP4AAAAAAAAAAAB+BAT5AAAA6sDm9Tuc8J5pAStC8VGucqPTKM/Wp9qqRwdX/TJZWccJquzQzGlfKXqUCXBV0aIUTlJbdeqQre+2+grv7LDKIxQV6UzWuQgNHO95j1jTg9vqwLrtzn2RrWWLd3jdR9H9rtCQSLNfTsEplpdfaAfG8vKOqaCwUDmlxQprEqbQsDDtTU1VSUG+gvxKFeLvr8bWvHbxcUqKj1d8XCvlFRaoQKU6UlAg+QfqUEmh8q11HMnNda28vhSlaNGbb2jK7I0qcop+bKaFPHNej+VZ56YWsnMO6tPPlygwIEC333K9+vTqLj/zC+AqmHl9e5+l28ddby9jWvHLOXjImftzd7znDwAAAAAAAAAA4Mfhf+99E//ijAMAgAYoK+ewosKbOlOoW9laNu0VzfhshTZkSQc2rdCXy75X8rE8Ja+2xjf6q2vvVgp1aruZeumt+qlvQoir4FiaVq4+orYDO1bRTWOEug7sp65R0tHU77XqcBsN7nK8QJ/prvcNvb/M7JMZ9ivOY/2ma8in5xeqa9PVenr6fJ91DNMl5Utzfa3DdewfFXZUs5WvlNXZENCx/LgM05LgP2ZpvrMfleabFrc8t99F2rCrifr6OG9lKqzT+zzXcL88Oee//+AIrZq/p9I5yFzxkeYHDdSI0C1KbtqjfD0V9yMjxrku5ftQ6VhnH/J5T1SStUVflp2HvVr+2X7FD+qhNmWrC9GxXVUfl32fWPvTt6rra5/3LRWO1bXfy5u67jVPR44eU6NGjVSQn688lWrf4UMqLMi3fxVUUligb7/+Wn16nKWAkkKdd+456tQuSbHRMQoIbqyo+Dg1j41Vqb+rK92jublq7OdnLeunsLAwu6xepK7Qf7/eo5g+Q3R23Il1bVsXTJfFJs0X3DjIKameaR3xnffm2kG8y4ZdqLaJbZw5LkeO5Or5V15XY2t9LeNinVKX0JAQawjWpq07tHdfhnp06+IzAGg/95vc97OL/c5Y2dQpc71fNsR2VM5s1zvQ53Pm9YxsUcAZMdq3yftd5/2Osep0cd3ndvmybOv53KNVXs+Xxeu9sUL7Yr3vWa91Wst1VYVn93i8nr/KfD5fld73NXwHey7j9Y5wv0diVDD/DescO+cmpfpj91TVuS1T8f0bu0UvVXhH2fv51mKnznHepQAAAAAAoFYO2N/dN3OmcLqr9DWaR4Hd5a71aUqsUWu8VMUlpYqJOt73+AAAeCPIBwBAA0eQ71QKUZve/TR4YIz2LSvSRRPHanQXf2043EP3jr9Ug32FQLJWaeZngbrolz3KA1R2kOx7V1jFHaioECZzq1GQzw7PLFToqAm6c6TZv37qGrBCM94qD6nZ69m0VauKB+pBs68+6pgQyExd4T2/LHiSpz3WPv+w6XsVDXa2E7tf8+d/Xx4WMfsxbaN6jL9dN17sOk/Jb83SBnfwxA6tZGtI2fwALZq+QgdCWlcd5DPLWPvYv2yZforbNUszlrlDNDXYr4rcQcqRA9Vi42Jt9QqyZWvN/BUKOudSxWWs8AoDZX6/WgFDx5Yd2765HznHFqLQwi36cp13sGfzl/OV3v4CDa5BCMbU3RDaQ8Od65yzcYVSKwR2TCC0qnvhuNc3KsC6ZyuEgLI26KNlgeo/svK9d/BwrkKCguwW+fIDAlTcqJFKigsV6CcV5R7Rru1bFdu8mUL9/RSoUhXkHtSRw0eUW1CghA5tVRjkr/ySYvk3ClJxfoECSkoVEhCopk2bOFuQ8tLW6v33PtSHC77SF8u+1Xe5sTq7Xbiy7CDRch2MjNH2D9/SO0tzlNivncLz0rVi7my9PnexXf/bND+1btdKzVx5QWunt+iTWZ9o9meLtWiJ9VytWKtvN2Qq8sxEpc5+Xq8syVSxVe3Q9tXWM5eu8H6dFVeyX99+OEdvzvvcXmbZxv1qlthRce5L5gSfdjSOU8niWZo+b5ua9Gyl5Ndf0YylhxQdu1uzXp2rz3PiNbBDpivIldxYCSVf6bXXP9WmsO7qVSE0WFxcomPWOWkSevz7wkhJTdeXX61Qu6QzNGzIeU5pORPQW2U9Ayaw16lDO6e0XMu4Ftqdkqbde1LVvl2imnlcAzdzb21QR697y/vdk60Ny7Zo86Y9SrrB+/le7A562c+/qyVR13uojfbM/lg/HDPBZPc9tkOLNnXUnWX36Pf672LXO6ZNF9ez+2VGF93xu1Flz4LrvWG6K7fet9Yyg6137uK3FqrAIwA488AA1zJmfsAyOxAYmljzIF/F56+iys+X9fx/tlArPY+9Ju9gEwb0fNd5BQjd77L9zjm2ju+YtV7P95917DnHrHPlM8hX9bm1t1eD9685lzN29i4/lxWvMQAAAAAAOCkE+X5afqpBvlVrvtfb783RN6vWKm1vhv2dbMXvBM33hZ99sVQLFn6pZSu+VeOgILWKa+HMBQD8mOhaFwAA4GSZrnE7nGl3zZi5daPUquI/zk3LTFP1qBneNwEUz24cLZF9dOfECXrQGa7tYOp/pM3O7NravPgrHehwhbUep8DiuyvWtrp2VFtn3NQZaO2XUydrlRZu9TE/a6M2ZzkFhud2Ogy0tpGt1AOuSbMfGnyFBpZ1SdtWQwZHON0KZ9vdxUZVmO+5vcp8LeN0XVyL/aqaq0vNzYtXlXepuXWZFmmAhnicSzdzTj333XSZnJnl6po3ukMXRXntk6t73h4djv/FjWkBa6bXuY9Qp+7WeZvtcU9s/ciq44xXqZrr6+yvZxfP5t494NzHFeUXFCkgwPXFVL6f+UqqRH6N/FRaWqzg4AB169pR/irQ3j3J2vbDd8o/lK2N363W3t075e8vNQ1vZofmCktL5B8YpPziUpWUlqq42JRKedbxTH3zS23OjVGf4Zdq5OA2imjcWCaTdyDNnFN/pSz7VJuC45WQlKCoPOsZeXmmFuwJU59R1+qWIfEqSv5K73+1316fuX9f+dd8fXswTD2HXqrRIwaoXUC+co/6W/srxfe5UF3taxens0dY868ZoE4B1v315tv6ZOshtew5VKOHdFSTrB2a8+an2mWvtPz6Hlv7lf5n7Wu7VnFqEWbdW+Y6+6dr8SfbFdI6Tu0TrJW7u8zOW6dFi3IVlxSn+NjK8dTGjQPt81tTKXv32p/n9Olpf56Ifme7lk1Jda3rRFV8fs3z7e6StvJ7yHq+Rg+Qd+aswj1qPzfpqvpRdb0DvLort96fF7m7xbbfWxEaMrpPeRi1wrvweCo/f1XxrHO8Y3e9L06oO2zr/eX5vjPnMdo9bR37wCqPrbpzW4P3r69z6dSh22EAAAAAAIDTX/q+/Xr8qef1z3//Rxs3b9P6jVv0yaef6y9PPqtpr7+j/IICHcvL00vT39Qjf/275n36hV3H1DVlTz7zojIPeH7pDgD4MRDkAwAAOFGmRSMTzpv2lQ444y8tztaBxW/Y4+VBq7a61h3UGy071PfiClcgyBdXSOUEAh+2bOsf11JUpTBhhKKjyoNItsi4CqGaCMW7Qx0HTODDI4BoDyZI5h2Iq7wd9zZc++E+F+7BnB9Z//jPNOvJkqIja/OLxKqWMftd0/06DhNk8wjgmaBbVPd2lVqoczMtVrmPzStYF9lOPax9ssNFlswVy7S5UiCnMrsrzMURlcKe0f3GyhXwdLa3OE7XDo7weZxlqru+lk7d2lr38A9OOHCHFi2Whgz2HV5q1MhPASaRZwRZnwF+ahIWotxDOcrISFfbNm2U2DpeQy4YqP7n9FKn9meoV7czdcGgATqjdRsVFhUoMDRYAY0DVVBUrEKTBbS4gny7tGDeDuUHW8/JraM1rHtH9eh3hcYOjrPmue4j6ajC+43RH2+8UreM6KJ9n3+qzXmN1WOUVb9DnBJ6dlSCVevgwcPW/92vBf/9SunW+kY76+vaIUzKs2a1TFC8AhSdFKGAo9Z0bFsN6GLNT4pRzqIPtShDajd8nMYO6aKufS7V6D6h1nLWs7jHqmtxhQqlojYXauL4KzXmxvOV4A7s5TbTwHHjdcs112p0d2s5+xmyFCdo+ISxGmOVD2tlCrw1Dgq0z29NmRb5jJio49xM1YgxLwNLSpprXSeq4rNYPl3Ve8gH03qd+74271Kn2DfXO8DzuTODefbsa2Ofc4+gWy1V9fz5VOn5cqvFO7gGvNZjv1dc74Hq/oaUqfLc1uD9W9W5jLKOu9qwJQAAAAAAAOpbQUGhpv7rVSXv2qPYmCiNueZK/e72m3X5JUPs1viWr1yj51+eYQ2v69u169S8WVNdYc0zda6/eqRioiO1PXmXXcf9Y2wAwI+DIB8AAMCJ6nCF04KeCd+ZoN5YDYmM0JDx7pb1nHqeTOt74wdIi5dV0+Ked+DqRNQuIFcVjwCix1Cb1q2iBo+ttPyD490tPFnH6TsJU40TWaY2TMta0qLFO5wWqdrqon6+zqUrTGN3Pewcl/d5cbXu5wp+ZWvzumxXcK5K2Vo2zb0+3yEi1z1Wfg5lrfukrrPTUmGmCS2aQF9kF3Wq4r4rKTEt6LnG/Yr9FNAoSPszDih5504ltIq3u2stLSnSwewDio2KVP7RXEVERyk8KlqB/v4KKG2kwqMFyj6Qo6N5hfIPcnUvGxhofW5dp+/ypLgBQ9Qp2C72sN/V2l3znhpiwnG2Hfp2Xb5V1l0DWktFB9O1YvaX2m7Nade5jbRnrdYetGZ366eu7vXtTVGK9dE8Ns5u5U/WMvtMsC8qRuFm2jr/23ccsj7b6uzuje0SIzjMjOcrz9Q14acM83mGLhrirMfY5wo1Ne8zQD3CXEVGZpqrzbJ255+nhLLKleUXFNrnt6bS9u5TkHXezJdr1TG/pjVdevgS3rypAgICykKBp8rx7k/T+t2jdvfb7vu6Yot9vnk9C+7B3ZpclQG76hz/+autunkHV2S9V+xzdYWi7ZD0G1rmhI4rOv65rcG79ITOJQAAAAAAAOrbh598qoz9B5R0RmtN/vMfNeT8AerR/UyNuuISPfrAPYqNjrJb3tu8dbtaxsXqsQfu1VXWPFPnosED7WUS4lvaPwT+9POlzlqPb+rzL2r4FVdp+45kp6RcXl6eJj3wsF0HAFA1gnwAAAAnxbS+5A5EZCtVVYehas7VWtKJcbX65NllqourlajqwyVmu86xmFaXzDInuR/uFswqs7bj0WKdW/WtVflexmu/64DdBeXWH7Ssmq5mXcG3AbrDsyvKisyypl7Wdn2X5erKtiqbZ7+h77qPLQ8jHY8TMqxunZVVPE+my17Z5/N4LQ82DgpQgd29boBKjhQqJ+OQDmQcVKvYNgpQoHZsS9aRQ7mKiozSkcOHrX9l+OmYfyNFJLRWgF+Q/HKL1TivVEGlgcrIzFFxUam9Lj8/v7Jr3rx55W5nlZZuB/DCOnSUaZ/P5m4B7+AqvTRlqp7810wt3NtMPUaM07VdApSTlql8a3Zc6xhTy5a+NdVV5m7dLCNdJsKWUFbHeeYqBJdc92+M4mOtjyJrmYPWZ1JHdfII5qXsNWsKVefO5duzKivVOkcm9Ne1QzUpPktefqGCrfNbUyWlJSouLa0ypBcW5koTbrGuyd9felVfLPlax47ZSUQvZmmzLl98taRX9bNczr6WUZHWfVTFe8jdSqHNCbiOGnvclirLmXdANe8Ju7W4Ct1sm/fYcZqPq/XzV62avYN9vYtr3lqfK2R9hzt0XMnxzm0N3r8+z6XFXEMCfgAAAAAAAKc108qeYVriCwz0/u4xLDRUY68f7UxJt9xwjUJCvH9hHRQUqOt/McIeX/3devuzJsbeMEYxMdFat67yMus3/KCU1FS7DgCgagT5AAAAToorHGV3P2hCW3aIxdMOzZztGbTI1rL3v5IGDywLiGWu+MirVaXNsz+yQ2JDahXSKtdp8ABFbf3Iq6tXs41FqrDOrK8006N7Rnu77u5fI/voog7ZWvT+Kldoymbt+2zP6er52g/THbFr2oTIInTAs2XCrFWaabrerZLTyt1iH+erBt3W1ph97NV3NVsp5FLxOG0maLdDC9+vJhBoVNvyny/WPTXN+x7yqbrr6zChRa37yNp+hLWvVW/fdP+aX1hof+lTfPSwMtP3qrEJ6+Ue0dGjx9S+XXs1j4xUXmGJiv0DVRoYrMiYWBUVFWnd9+us+vu0Ye13WrLoC61evkIHM/aVfYEU4LRtV5RXZH96OpKRrlzrM6FlWYxP8pfs9vyShuruu8brvj9O0KQJ12tkl2b2moqs/3nJ26Iv15tQnRPIs7gCS6HWtDs86O/ai+ICe8qWt1Hfmmsa20U9mlufFVv1sx3VvjTTR2+c4r26zU3Xrr3WR3Nrm+WVfcovKFDjxkHO1PHFxcao2DqvWdk5Tok3ExAzX9C1SzpDh48c0ZKvV2rBoiXOXBdz/GYdZl2+2CGzrcvKnzOf97dzTznjrue3/Jlxdd3ssY5K78KKgTfXu7FS5s6rG1ff74Cyd6jTpbVnuM1+93nUraTWz9/x1egdbL9DvtIid53jvv8sFdZZXVC6+nNbg/evz78BrmvYabC7VVUAAAAAAACcjrJzDto/pE5sk+CUeOvSsb16dOui3j26qW1iG6fUW/t2SfY69mXsd0qOLyIiXKOvulLvf/Chsj2+vzSt8b0/+0N7nqkDAKia/733TfyLMw4AABqgrJzDigqvvgtGnIwIdR3Y0RVqiOqowV0qh0Fyls3SjM9W6MtlZvheh84Zqzs9QiNHU1fov7MXO/NXaEPUFXrwhq7y0T6ZVfd7rTrcxud2yoS0Ut8u/lr81izNd9a56nBv3VHWpa17Pb01osVXeukt17Y3aIDu8NhudJeOClj9sf7rse9Bg0epr90UU572rP5e+1r0UN+EELt+pTKzH7H7rX+gz3eWt4aMLrp2aCt7G6EJPdQ1YIVmONv/cmdrjbs0UKt2NVHf3q46lZhzHLvHWqZ8nfb5KmtJqwb7VdGxNK1cfURt3dfREh2wX18Wn60be5ef5wObVii5afmxJQV8X37digfq2qgt5fMdZj3z1+RpyOgL1MbHpm329q3r4RyP57Avtp+6mvO99SM9Ot19zFsUPWqCxp1V1Qprdn1tISEqWL1CPyRc7HWslZRKh44cVWTzpiopLFBRYaGC/BspNChQjUoK7V9sxsXFqWnz5sovKlSR/NS6bQcdOmq6dzWbCVVhQaF+WL9ewY0CNPz8/oqKilSAv7+Cg7L13dp07U3ZqVz/xjq652vN29JMvZKaaM/KhVqXGaMeF3ZXG/ePQoPDpeTV2ronU4ebNlejwwe0d8dKfZUZpS5xIQotzdCK9ZnatzdbwY1z9NW8b5Vekq/8wjj1vch1jbO2rNTatKMqbtRMRYePKjwuXsEZ32tD2h5tzWqsJoc36uO5X2tXYYyGXD9U7a1TnbPpG32166jaD7hA5Y9fmpbP36z9sV10cc9WKvvd6sEt+nLFHh1p21fDO1X/xVTWwcNq1iRUgQH+Tkn1MjOztDslTQnxrRQb47tdtMiIcHXv2lk9u5+pJmFh6tS+rZpb185tx87d2rRlu7p27qDEM1o7pR6s5ywuY7E+cj/71v19R/f9Hu+ebG2w78OB2jf9Db1v6qzeozajbtdw93eDlZ7VIl00vovSPZ616C4x2jf3I9fyy/Yo6dLeOrTJ41mMilHARmc/MmJc27bW29Xz2bOGVUEDnfs3RG16W+8tj3ducuI1GhH0faVns0xNnr8K7OfL2h/P95RXWQ3ewa53yBbNn1/V+8/He8vvkNc6vd993o53bmvy/o3u0k9xu6xzOde1Pfe7pzbdqwMAAAAAgKodsL+7b+ZM4XTn5+eMuHkUmN4zTA8YpsR8H2qmiktKFRNVzXeup9DCxctUam3/8kuGOCWV9evTU31793CmKmtkHd8nn36uwIAAXXrxYKf0+Fq0aKH5/1ug0JAQde7s+in62u++16cLF+k3t99WqfU/AIA3v/SMTPM3BQAANFBbd6apQ6JXU1GAMle8oZfWdfEOlqDumQDe4rjT+Dxna9m0N5Q6uPpwjvkiak96plpGR+hI7hEdOXxEe/emKSjQX4EBjVSQd1RB1mejRlLzpk3s+nnFfjqUm6fC4hLl5hcrMCREO5NT1LltotoltVZEeHnALWfjp3pr3kYdKJL8m8fp3MtGa0jrw/a+LTraRTdNGKoznLq2vF365J35WpuRr2IFqHFktAZedq0G2q+6fG1fMFPvrs1WcViChozqpgOz5uu70AHl1yFrlV557SulF1nL9rxcE4dZay/arxWzP9bC5EOudcZ20OWjLlTX5q4m9TbPnqqZW+N02V3X6mxX77X2el6c9pWOdB+tiWUJNou57rN3KGHYeN3S02ck1VZYWKT0zGy1bum7ZTxffti0Ve/Nmaf4lnG65cZr7O6Ja8Ncm1ff/K9S96br6isvU5dO7Z05tbFDM6d8JBHqalDsvwtpA+uoi2EAAAAAAHA8W3amqmNivDOF04H57syTe9p8mK/hzHRZHVeBPV1SXKISldpBvpKSUhWXlqigsFhndkhy1f2R/W3qv7R56w79dfL/Kcr0vnEC9mdm6c+T/2q33nfP725zSmvmgw/n2q3y/f2Zp+zg3iOPPalz+vbRVVe6uus1TJ0/3DPRmZLOP2+gXd/dYt+qb1frwYcf0fNTn1W7tuXncfuOZP12wt16dPJD6nN2b3v6L488rv+beI/+89Y7euudmXru6Sle2/JUcbtjrrtWDz3wZx07lqff//FeTfjtnUpJSfWq42t9ppVBc1xme25//MPv7OXd3Pv2l4fu18efzNMzz/3DLq94rL7WVXGb5nxc/csbnCmpS+dOlc7N1OdftD8H9D/XruvejmGO7csly+xxY9a7/7HPH4DTD13rAgAAAKeEqxvKqO7tTtuwpKvbUdMFsFNQBRMWaxEVrrT9WWrerJndpUKruFiFBAXZ483DIxXcpLmK/AKUefiY0g7kKPvQEbvlvmJrCA8LUZPAIA3s20vxcTEKb276qi0X3mWo7vzjBD04cYIm/fpaDWltwnMRGjjeKqsY4jOCz9Bl436tSVb9ByfeqYnj3SE+o7HaDRvrmnfXaKu8o0ZOsMY9w5SRfXSbvT1rWRPiMwJi1O+aceXrHDe0LMRndBplyj1CfIa1njut+l4hPqPDFfaxVBfiM1IzstQiuvoW+yrq2L6toiIi7CDeqjXfO6U19823a+1lTat9HdrVzxeJOA05XevaXSIDAAAAAADgJy3J6YVj5erv7M8TsWLVGvuzbZLvrnerM/j88+zP7Tt2aP2GH5SSmlpWZkJrkx542A76rVn5tXZu22gPJlQ2Zuw4O/x2Il761yu69Vfj7HVVF+Lz3O6m9WvUrVtXZ67La6+/aX+698sE3kyozyzrZvZx1NXXKS6uRVk9s04TtjPHZo7RLTMzUxcNu8wO17m3mRAfr789/axdzx3i81zXwgWfKDS0/LtlE9AzoUZT7q7z69tutddrtulp5arVdguIps7rr06zy0yIz3Rr7F7WHBOA0xdBPgAAAKBOmVbupurRKR8pc7B3N8qnDdNi3JSpemlxhK6deIVcHRxUr3FQoJqEhCj7UK6aN28uv4DGahYRreDGwdZ4gPZlZmpb8k4l706xW+Kzf5hq/Z+mTZooMjJcLWKiFRTg71q2lq3INUSZ2YfULCxEQYGBTknNBFjn8BdXDZe/v78WfrFMWdk5zpzjy8zK1qIvv5a/tY5rR19hrws/T6b1PfMOKBumbVSP8bSwCAAAAAAA0BBcfMEg+/vDjxd8rqPHjjmlNXck96jmfbbY/hG3WVdtmZbmTHBsxuv/sQcz7m59zh3s82yRzrh9/K/Uq2cPu+W62jJhuYuHXOjVOp0vu/fssQOD7u0GBwfbLfKZT7eOHdp7BQFNfdM6ngkAZjvfxZp9HH7pMK/W98w6H37wfq1Z+519jJ7M8u7W78y2Ro+60q6XmrbXbgnQnA8T9HMzxzFs6EX2uAkNmnBexdb3zD6aFgDfn/2hV3DQfPX+i1FXOVNSVna2/V199+7dnBLXMbn3B8DphyAfAADAz1B0v7HeLZShDjktyU2ccHqG+AynxbgHaxjic4uKaKojR/NUbP3DPzYmWgGBgQoIbqJgazjjjLbq2/dc9ejVS20Sk9QiLk5xrRIUGR2rgIBgBfj7K65FrEJDQ5y1/Xwdzj2mo3n5igxv6pTUjglFXjR4oAqLivTya29p1Zp1dhceVTHzVq7+XtNmvK0ia5mhF5ynmKhIZ+6JaKtrrfuH0NdPl/03wH4HuIexGngytwQAAAAAAABOG+HNm+mCQefaIbHpb5R311oT5rtE851jfn6+Lr5goJo28eyipOZMC3wHDx20B3drfMZXXy/3CtO5mYCb6X7XtDDnDszVRkLC8bupbtO6td29rWfrehV5BurczLr378+0Q3Fm38w++qoX36qlHUY0x+gWHR3tFaIzIiJc/90g21qf6XrYtNBnWtzz1RrhunXr1dravll3RWYf3IFAN7Mus063SGtbJtw3+dHHT+i8AvjxEeQDAAAAUGNntIpR1sHDOnQkTzEx0WrWtIlK7AyZv/wUoMBGwQpt3ET+/sFq5B9klfupWbOmdl3zK9CfO9MSn+l2uE3LGKfkxPTr01NXXHqR/Pwaad6nn+uNd97XD5u22r+WdTPjpszMm//ZF2rUqJG9TN/eZzk1AAAAAAAAADREvxg5XC3jYvXduh80d/5Cp/T43pszz/5OsU1CK111+TCntPbcATXP0J5pOS49fZ89XpdMWM4djquOacXO3VVuYvsulbrBrQkT5jOhvrpiAoxPPDbZbuHPdJVr9sszaGhaEawN00WvZwuD5ty//NLz9rXo1be/vf6K3fECOL0Q5AMAAABQK2e0ijX5PO1MzVBwcIj9a8CWcS0UGxOj6OgoezDjpqxVy5Z297o/d4WFRfb5auTnd9IhPrdeZ3XVb269QYltWmvXnlT7S7ZnX5imF155XVP/+ao9bsrMvKQzWuvXv7rBXgYAAAAAAABAwxYUFKjf3T5OjRs31ocfL7C/J6yOaYnvnffmaP5ni9UkLFS/+/U4u2vdumQCZiZoVhMmmGcCenXNBAt3btuoNSu/tru0vf2O39aopTrzQ3XTup0ZzHhdM930mv1yBw2nPv+iXW5aETxZ7rCgWb/p5vfqX95QbauEAOoXQT4AAAAAtRYV3lStYiOUnpmtPXv32y3NHcsrsOb4qXFQkAIDA+wW4H6u8gsKdfDwUWUcyLHPjzlP5nydaHe6VWnetKnGXjdKv/nVjRo+9EJ17dJBBYWF9rxuXTrqsmEX6je33qgbfznKrgsAAAAAAADg5yE2Jkr3/Ha8/X3tvE+/0IvT3ij77tBTfkGBnn/ldX32xTKFBAfr3gm/VkR4c2du3TLBNF/d55qW8b5ZucqrBb/MzEy7+1lPpqvZjZs2O1Mnzmzj4QfvV2mpq5U9N89ucd1MmbvLWndLg77qmS5uTVe3vrrdrSlz/CZsZ1ouNOfEdOtbsftcN7MPpitfX93uVsW0SvjHP/yu1i39AfjxEOQDAAAAcEKCAgPVumWMoiOa27/wPJqfr/TMHKWkZ2rrzrSf7ZCSfsA+D3nW+TDnJTqyuX2ezPk6VWKiI9WnV3eNHjFcd995qyb85haNGnGpzu7ZXTFRkU4tAAAAAAAAAD8nbRPb6N4Jt6t582Za/d16Pfa3fyg1Ld2ZK+1J3WuXmS54mzVtYtdNaBXnzK17l14y1A7C/f6P93qF+V6e9m+7hbyxN4yxp004zYTUTMt07nrbdyTrX69Mt8dPxNvvzPTapgkF+vnJbmXP7Znn/uHV9axpuc6UjR51pd2ynRlu/dU4zZu/oKzVPMOsd/Kjj9td5JowXk2Z5cx+ubkDje4ucs26zDp/O+Fu+/jdzH6ZfTD7YupVxSyz4NPyrpXN9szx1UVLfwBODb/0jMxSZxwAADRAJlTSIbGVMwUAAAAAAAAAAOrblp2p6pgY70zhdGC6l/XknjYfJvBlpsvquArs6ZLiEpWoVFaJSkpKVVxaooLCYp3ZIclV9zSQe/Sopr/+rr7fsMnadT8NvXCQCguL9PmSr+35Hdol6o5bx9phvrpgAmmPPPakHUgz3cZWZEJwJiDnNua6a/XQA3/2CqWZ0JkJ/H25ZJk9bercMOY63Tvxz3p08kN2yM0E1f7yyOP6y0P3q13b6s93xW2ef95A/f2Zp+zW+dzbuu3WW+yA3FtOuK5L5056fuqzldZdcd8M05KeafHOrap9M+UmmGeOoV3btpXWY1rMq3jOTHDPdLnr5rnvbu5goeey7m15tmJYcT8BnF4I8gEA0MAR5AMAAAAAAAAA4PRCkO/005CDfG5Ll6/S27PmKD8/35729/fXiOEX67KhF6hRo59vh47uYJ4JwdWmRT0AqGt0rQsAAAAAAAAAAAAAANDADTq3jx69/4/q0+ss9e19lh5/8D5dccmQn3WIDwBOJ7yNAQBo4EKCg5wxAAAAAAAAAABwOggNbuyMAT+uyIhw/eZXN+jXt9yg6KgIpxQAcDogyAcAQANXXFKq/IJCZwoAAAAAAAAAANSnvPwCFRWXOFMAAAAufukZmd4dvQMAgAYlfX+2QkMaq1mTUKcEAAAAAAAAAADUl4OHc3Usv0Bx0bSGdjopLfWOTrinzYefn2u6rI6rwJ4uKS5RiUpllaikpFTFpSUqKCzWmR2SXHUBAKghWuQDAKCBa9okRLnH8p0pAAAAAAAAAABQn44ey1eTsBBnCgAAwIUgHwAADVxYSLD8G/kp+9ARpwQAAAAAAAAAANSHrINH1KhRIzUJCXZKAAAAXAjyAQDwMxAbFa68/ELCfAAAAAAAAAAA1JOsnMMqKChUi+hwpwQAAKAcQT4AAH4mWsZEqLCwSOn7s3Xo8FHlFxQ6cwAAAAAAAAAAwKmQl1+gg4dztTfjgAqLihUXE+HMAQAA8OaXnpFZ6owDAICfgdxjeTqce0z5BUV2l7vH8gqcOQAAAAAAAAAAoK6EBjdWYXGxghsHqmloiMJC6U73dFZa6h2dcE+bDz8/13RZHVeBPV1SXKISlcoqUUlJqYpLS1RQWKwzOyS56gIAUEME+QAAAAAAAAAAAAAAwM8aQT4AQH2ja10AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOoRQT4AAAAAAAAAAAAAAAAAAOqRX3pGZqkzDgAAAAAAAAAAAAAA8LNTWuodnXBPmw8/P9d0WR1XgT1dUlyiEpXKKlFJSamKS0tUUFisMzskuerWkeSUfc4YAOB0kpTQwhk7eQT5AAAAAAAAAAAAAADAz9rpHuQDADR8dK0LAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAAAAAEA9IsgHAAAAAAAAAAAAAADwM7F+4xZtsAYAwOmFIB8AAAAAAAAAAAAAAMDPwNffrNZzL07Xs9ZgxgEApw+CfAAAAAAAAAAAAAAAAA3cytXf6d9vznSmZI+v+X6DMwVf8vLyNOmBhzX1+RedEgA4dQjyAQAAAAAAAAAAAAAANGBr1/2gl1972x738/OzB+PFaW/oO2teXfjgw7m66Zbxys7OcUq8mfkmFGfCcQCAygjyAQAAAAAAAAAAAAAANFA/bN6ql6a/aY//+pYbFBzc2B7MuPGiNc/UAQDUL4J8AAAAAAAAAAAAAAAADVBpaalefvUtlZSU6PZx16tPr+5WoZkhe3z8Tb9UcXGxXnFa6wMA1B+CfAAAAAAAAAAAAAAAAA2Q6UJ3zDVX6fe/uUV9e/dwSsv169PLnmfqAADqF0E+AAAAAAAAAAAAAACABuqcs3uo25mdnKnKunftrL69z3KmfjwffDhXkx54WHv3puumW8YrsX0XezDj2dk5Tq1yU59/sayOGRZ8utCua9ZjmGXM9KpvV5fVNZ+e8zyXd8/zZNblWef9D+Y4c7xVXF9V+wwAtUGQDwAAAAAAAAAAAAAAAD+6PSmpeuL//U1/f+Yp7dy2UZvWr1FCfLx+/8d7y4JxeXl5duAvPX2fPd/UW7Pya7351tv6cskyu46n115/UwP6n2vXm/DbO+2yxV8uscdNmRkWLvhE8+YvKAsBGibY9/4HH9rrdu/L+vUb9NY7M50aLtt3JGvM2HEafdWVZevrc3Zvr30GgBNBkA8AAAAAAAAAAAAAAAA/uszMTP3h979VRES4PR0cHKz77rnbHjfhO2P9hh+Ukppql5v5hqn/8IP3q0vnyi0NduzQ3g7WebrqyhFeZe3aJmn4pcO0e88ee9qE81auWm2vs+K+nH/eQHva7eNP5qlXzx669JKhTok09oYx9qd7nwHgRBDkAwAAAACggdt/IEsLFy/Tm+/O1lNTX7GHN2fO1qIvv1IWvxIGAAAAAABoUFau/k7/ftO7FbnaMMuuXP29M3VqmUBcfKuWzpRLSEiw3SqfO2T31dfL7WlT7ikyIkIxMdHOVLk2rVs7Y97cLfu5u8N95rl/2K38mfJ169ardUJ8lfviZlrcM133jh51ZVmo0Ki4zwBwIgjyAQAAAADQgK35foP++f/ZuxMAuaoyf9hvZw8JS2dhS8AEEnbEIDgiIm5/RxyRsAwyMDgqi8qHyKLo4MIgboMbg4wLgjKgjDrIIgwgigoI6IAgArInCNnI1klIyNLp7q/OrVvdVdXVW9JJkc7zzFzr3lOn7la3boXUL++54kdx7x//FDP/9kKsXLUym2Y+90Lc84cH4tuXXx2P/PXJvDcAAAAAm7o77/lj9ndBXf0Dzte+Zp9sqiW9Jr32znv+kLfUVwrZpbDd9ttvVxGc687EiR3Bu5I0bO4e+0yL1x14QPtwuGef+dH82eh1AG9xU1MsWLAwjnnvCe2BwDSldVcPwQvQV4J8AAAAMEDdd/9DcfNtd2TzbzzowDjztJPis+eekU1p/g1/99poa2uLG27+Zfz5kb9m/TZNTTFzZlM+P1A0xT2XXxIXXj8jX66fhX+8Oi686Oaod9zzyes37PnI1n/5A7EwX34l2NDHvEE8fXPherk67lmcL29mFt03Kw7+ytx4LF+um6fnFvZjVvx6Ub4MAABsVlpbW/PHtuyx2vtP+MdsqqX0mtI6+iIF6FLILYXdaklhub4E8rqqrNdXqYLerbfdHnfcfks2xG4tvd1WqQrgtT/9cXsgsHw64/TT8p4AfSfIBwAAAANQU9PSuON3v4+GhoaY/u6/j7ccclBsOXpU/mxk82879OB49zvfli3f8qvfxcqVK7P5bjX9Nr44/Zg4vHz6x5PjvC/9MP4wqznv1A+e/GHlNmpOP4wnY0U8+LVT4oyzTomL7l6HMF9pO1c8lTd0YfED8e2LLomfPZ0vV8ue33zDS6+UsB+wAS1aEJ/6ygtxcPvURWCxut/PO9+bi4HH7vtUejl+/f3Ut68hyaa4unw7318QtbKNj/28rM86BDErX/9CfOq+l/NnOutLXwAA2NTsussuWcgtDVNbrTQk7RsOen3eUvTQnx+O2XPm5ktFaTm1p2BgCv2lKnrptWkd5Z6dMSPuuvuefKlvSvtTkrbV3b6UlIbQTcP9AvQ3QT4AAAAYgB565LGs2t6hB/9d7LvX7nlrZ9NevXf83QGviZa1a+PRx3sIs1XYInafPCn2TdO2a+KR//vf+OLp58S1T/ZXmG98cd35tPsWxdZtJ3S07Tt5fAwr/F9jYb5x6KTYY9vRxU6bs4EQKBxAocjeV9SbET/rLijKAFcMm139Sn7/Uzjv+6vj7afsFPd8Kk1j44Kxa+PU6tBb1m9V7H10qd/o+PDTyyuCeinE955Hh8cvsucL0ykj4pCqPp08vTTO73N1wXRel8djh47t2OdYFe+pCvOlYN2pTw+Jy/L9+cWhLYXj6n01w+z1MTrfRmE6ekjcfeeiGgG9Yhjx1MUjOo69MH3loPwLDgAA+tHWW22ZPT72xFPx5NPP9mlKr0lK6+iLxsZt4qjpR8SZ55xbEZJLw+N+9evfzAJw++y9V95a9PgTT8YVP7gy65OkgN0FF34xpr1mv/a+h77pkOwxraO8XxoutzcaGxuzx/KA4dU/vqYiBJi2lbaZtl0KDKZtpX1L+1iSgoVHHXlEfOPib8UNN96Utxb9909+1ilsCNAXgnwAAAAwAP3t+dnZ4z577ZE9dmfvPXfLHmf+7YXssXfeEqd882vxpTT951VxxRmvicaYE/91xW9jft5jvez+7uK68+mUYuHAOOyMjrYvffPdMTmGxuSjvxZX/c/X4j27Dy126otRE2LffJZ1N+7vTozPnvvu6DoyCmzahsSJp0yMt4/NF2OLePtRI+KQWBsPlgUQH/vdqrh76ug4cWreUPhmOPHoIRFPr+gIxo0bFb84ZXy0r2rs+PjEoQ2FPqu6qIT3cvz6d2vz+d5bdN+K+O7YEfGJ9qBcvs+LVsUtpX1etCALUH746B1i77xp7EFj4oKxbXH+73pZ5fXVo+Oeo4s/Cmam7hCXFY7/7kdXVAUGF8X5MaLy2AEAYAN59T57Zo9X/+S6+Ooll/VpSq9JSuvoqzR0bRp29pj3nhCTpuyZTXvsMy2rqvelL1zQaVjd4487Ng575zuyPqnvtAMPigNeu39F3xQQ/I9vfC1mzZ7d3u9jZ388/u1zn4k3HXJw1qc7u+4yOS684HNZwLC0T6ky4NlnfjTvUQzofe4z/5qFDdM+pD5HHnNcnHD8cdk+lkv7l4bp/d73r2hfX5pGjhyZ7SvAuhLkAwAAgAFo5criv07eeuue//X0tuOKkYJFi9f9Xwxv+9YjI8vaPfVozFqRNW0aRg2NjgGHATYjT8/t/bCuYxtj7+r02dghWfjtsYWldTRlob4Pv7os1JZMHREfjrb49VPFfmOnNnYKso0dN7jwvy0xt1YVvFSNL0bEZSns12svx0OPtsUh+4yq3NbYUVkY8bt/yUN6i9fG3dEQO4wpLhZtUbXcvb0Lx1Nt+x0L+7pobczLl9vPzZuF+AAA2Dhef8C0OO+c/y+OOvydcfhhb+/TlF6TXpvWsa5S0O25Zx6vmFLArysHHvDair5nnH5a/kyHFJC76oeXt/dJ843bFENzaVjcpNQnbb9a9T6l5bSd8sBgekzLpT633nxD7L3Xnllb9T6lcGB6vnyd3R0jQG80zJu/sC2fBwAAAAaIq/775/G3F2bHh0/65xg/tvtEwtx58+Pyq34Sk3beKU487si8tQtNv40vfuA/4w/xD/G1Gz5QVoHtqbh2+nnxX/GaOPeHn4lDIu837f+LK87YJu768jfjv556S8drmp6KO37yo7j17r/GkynbscWO8fpDjox/ed9bYmKNZN2TVxwTH78p4l/+/do4pqrsW6fnSvtY2PZV5+0Wj17+n3HlL5+K+UO3if3fekKccnJhG6XifaW+h38pbjqpWJmwpjTc6+X3xrgjz4hj2ytNlcmefzz2O/nEODid7rLlcXdWDpm6e411LPzj1fGdOzuqP4099N2x3yM3x2/Gvjs+e+QueWsafvXm6BjMpWBq6fmmuOfyq+M3VcPRjj30xDjt7/KQSX4M7TmZMW+Ij5x8QIzLFzM1+hy77+Pxszsb49huKu4V97+sT5fHv0s36+n+GNIwtT+LwvEeurhiHyuOsaQ3x1olW/+i8n7dne+Szn2y9zdurjGkbu1jz7Zbdn1k8u309pjb++3z13y7Zdvq1bmoPo7u3qdyNV5XuIX87PqmeGvps1BQfX2nKm3tzz+dzlVl/5KK9yTrV35OS/uYXzfR3XvcMcRq5TCmaajTRXH+mFJFtWK/OHqneNfCWfGeOzv+2vSQTq8tyIeRvTtfjLEj4rJ9Vsepdw6Oyz7VUeEtG0q2bF0RDXFBXt2uOKxr3lwytbzCW3Gfvpsvpcp45esuqtHn6IhTf97Svp0U2jv452vjw4Vja6+WV7b/Fe29VnVes22UbbNd9XmuocvXVr8nlee2S2VD/FYfV3bO0/C2qTJezX7F/f31PjXe814qvudl+5odX/Ru3wEAqJu2tsroRGk5PTQ0FJfb+xQbsuXWltZojbbCn/QjWlvboqWtNdY0t8ReUycX+9KlNDTt/93/QFYJr7pSX2+k4Xs/e/7n49JLvpkF6wA2dSryAQAAwAD0qp2K/xL5Tw89kj125w8P/Dl7nPSqidnjOlmxIGalx6GTYmJFTuO5uOuSL8Z/5ZWYMvN/Gxedel5c/MunY8Xu74hTjv6HOGzikvjDL/8zPnLKpfFgf1X0a346rv30x+Oa+ZPiiMPfEPsPXRIPFrZx3pf6afjfXnj4ukvi4X3OiM+eW5w+cmgeSCsL7qTlYgiu1O/EYoivKtC28I/3RBzZsa7PnvyGGPv0zfHtP6aAVGMcfHLeloWkin3aw14pBHV5MYhY2sZb4974zuUPxMJijxp9Cvubhfh6ObxkJ03xm8vLj7+wzTEz4mfl26zQwzEkaR+vi45zdeQusejOqyuDcL051l7o/nwnxRDbwkPTsMJ5n1LILwXxCstZYDOf72ro4RT8Kz1XnC9bT9KbY04W3RPffnSvym315lykoF/VcRw7tXNAsZMar/tsFuKrDjDOiN88smd8pNQnW3+6NvL1T90rC+M9/HTVdVZY/x2FY9z90FKIL4X9yteR99sAHvvdrPhqjIl7PrVTcTp6SNx956LK6nUpmJUHwEr9fpGF+Cp/+Eufg1seHR6/KK2rMF02tS3O//7cbBjZ4utHx4cL8ylMV9xefs2nkFkelOt47do49SvF12Zq9LknC/H1YijasePjK1n/IfHdn78QB5evtzeeXhXfjYZ4+27lYbfBsUOnknM9V7h77C+F/R07PKZVvfaxny+P71YM1dsX1ZX2irJqeSWFc5DW/d2fdxz7ovsWx/mLhsSJ6xjiK1UDTJUI28OcC1sK2xoS22fvVzrX+fTzdb2/AgDA5uXZGTPj8h9cmS8VpbYU4vvQKScJ8QEDhiAfAAAADEAH7L9fjBwxMu5/8OGY+bcX8tbO0nOP/vWJ2HL06Dhw/1fnrX3T3DQz7vjapXFHYX734w6Oir86ffT2eHDbT8dVN1wbN2XV+BYU+v5n3N08NA4545L4zvmnxntO/ECcdtEV8bXDd4x4+Xdx5W0z8xevp0d/G/FPlxe3cdLZccF/fSn+ZUJE00OXxV3dJpT6S1PEvidWBI7G/V1x+ck78yBVFlZKobXykFcKtHUOfZVe227MAfG2wvKiOT0FQZrinjtnZIGyjtcXtnHUG2Ls4nvjN1kgrNgnVXqrtb/rqnJ9hW0eukvhmB+PJ6tCir23SxxbXnVt6sHx1jGF8/loKTzWm2PtnR7P9+LFhfewMfYrH1azYrv9padjzi1ujLeVBwB7eS6evPPeWJQqL5YFJnc/Ml1/M+KO9tBiZ9nrCuuuCFoWllNYtVLV/hfsfmgKazbFwuw62CXeWnjNojvvqQgOLnz68VhUeG6/wr4vXFzYjzF7xu5loaziPibp83JGfLbLanx9d/eYUZWV2KbuEL84tCHuvnNpHvZ6OX79u7VZlb7ygNnYgybGZZ3e/8Y4MVV+y5eSvd88Ig7pahjZMo/9blXcPXZEfKJsX/Y+OoX+1sbVeagw6zN1dM39rVBoSyG/moG4/LliSLCX4bIUSPt5OgdjqirodWPx2o7KkGVS9bpTn26IC46qGnb26bmF9lRdsPqa6gdlw96mMGX7sRemXlf968JjP1+UBQHL93venLbCNlfFe66L+EQpcHlK4Tp4erkwHwAA9MKYxsa46+7fx6Qpe7ZPb3vHu+LCCz5nOFtgQBHkAwAAgAFo1BYj4+/fdkg2/9PrboqFizoHBRYsWBQ//flN2fw73npIjBg+PJvvnf+Nj08/Jg4vTEd94BNx8UPNse3rzopzj676F9DN0+I975sW7XGGpqfiT08VHrc9Nv7xreOLbZmhsfvhR8brC3Mzf/nn6JcoX2Ebb59WNk7v0N3iTYdPKsw0x5OzN0ZwoirklRu7Y6Ft8bws0JKFlaoCSkWNMaFGJaksnHX5JXHhRcUpq8q2KAXKurH42Xh4cWO8NYXoyo0ZkwWfspBU3qfL/V0nNdY3dvsswDW7hwBTl7LqbeUaY1xK/pTOQW+OtU+6Od/ZOssqy20oPR1zyZh0bsv06lzMiIcLx5RVvcueLClef12HRPPX7VO17oJxY7q4XlJVvfw8piqBi8qug3FT9yzse3GdRU3x5CNNMfbQg7Njz9a5+N74TqdqfxvGh19d43MwbnDhf/Pw3aIV8etF1ZXoiiqqvZVLFfxKVdiy4WzbYm63gdameLBwPj785qpwWwzPKt7dPWd1YT7v0+X+9k17dcAULivs59Xt70elFLzLjqE6QNiTMUOqjiUNYZuCc23x4aOrhtTNg4IfPrq7QF3x9e3nNZt6WVUwVcfLZtLQvYVj3bGsouEpQ7K2jgqMxT4V2/n+ghqhxGK/LJR4Sq39rgorjh0fn0iBy6fT9ZS3AQDAZiaF8L70hQt6HFa3sXGbuOqHl8dzzzxeMR3w2v3zHgADgyAfAAAADFD77r1HHPS6/aO5eW3ccvtv8tYONxfamteujTcedGDstUetMk3d2SJ2nzwp9t3nDXHM0e+Pc//9+3HFeQfHtvmz7fY5MHYpy9JFrInm9DBhm9gmWy6z7YRiYGn+kkKvflBjG0OHVbcMi6GF/20cVlza2HquptchDcF74UVXx8P7lg+Bmj/ZnUUpNFgc5rY9SJVNZQG0rM8A0Jtj7aWez/cucWxpuOB8O52Gu92YxhYDeu16cy6yqoKlYy2fru40tHOF/HW9kg3BW1jn9WXDA2fDJ5cZs2vsV15lsDpYOvXd7UMbdzqGeli8Nu7OZ3tUGkr15xGXlVdiy5/u0qK1WSCtOORt+ZSqvRW7lPr0m3yY3u8WZtMwv7Wq9z1W2J9i8K5wHDUr5dWqNPhyjdBiCr3llesK56RyWy/Hr68rBgVrVhBst0W8/ZT8nLZP5QG62mHJrDpeLhu6t6rqYSlg11GBsTFOrNhGYaqqsth+7grr+sWnqkKJJTWGDh672/DCtdBTqBMAAADYXAjyAQAAwAD25jceFKNGbRHPz5qThfZKmpubY9bsuTF69Kg45KDX5a198ZY45Ztfiy994ez4lxPfHYfsXivQUTA0+//OZi+JJflsu/mzi+GcyROii7X1TXP2/xXmzyzGMoaWdqrx4Dj3hmvjqhN3yxu60FNFtyw01RjjalbRqyGvntbrandP3xw/y4bgPaNyKNPeyKrgFV9bCqSVT9n6sj4DQG+OtTd6fb7zYV0L605DyqZA3Le7GY52o+rNuciv692PrN3nsxVD9ZbJX9ezprjnuuIQvJ89t/Nw0R3yYZef/mt2D6hZqXLMAXFatl+l8OTVcU+vw0/FKnbrb3BxPWOG9BzEy3QE0ioDZr0wdkjWPwvMVYfI0pRCdHmf9VYKG35/VcShxcp0nQN0xep3xWpzXQzRm52XWqG01Vm475Ad86qvFaG3Gufl6aXFsGJeGbA0pQBhRC+H/83PzWMLS1X1SvJQYVYdsHy+UjFg1/Pwx5lUbTGvUNgp4JfLKjWWDedbqSF26O13BwAAADCgCfIBAADAADZkyOB459sOjT13nxJDBncMtThkyJCsCt873/amrM9G07hPvD5l5ub/LP7nNwuKbZnmePKm6+MPhbnd3zi1c2W/dfHo9XHXk2VRvvm/jRtvS8u7xWu7Ch52aZfYb2rEokeerVmJLKsk1mkI1KZ4+OnqsElxyNBS9bTikKGPx5PVwZesIlk+36XyoUi7kQ8B23lfynTZJ9/fTUVvjnWddX++x/3diVnFvr5UWdygenUuikPotlfC67WuX9ebdWVBvXy+Xfb5Sed4RvzmzqYaw/2WpPBkCgX2fYjm4nC0ZbIhcvP5Mt/9S+dz9thf1mbhsGw41iwk1ha/fqpzSOyhRzuqvXVl0VOre1HRrxg+rLUvHbruk+1vj/IhY8sCfF0OlZuF61KIr4tqc8nYUdlznfbn6VXx3egYivix362Ku1OIr4vQW0zdoTK0mE+/SMPQRrGCX+1qgOUaY//C5/HuR1dUXmv5e14cjniLYoBu8dpO12PxPcqDm916OX79u8K5TiG+bvapGAxcmw2FXK732wEAAAA2B4J8AAAAMMClwN7R7zksGhpSCKIozae2PXevVVZpQxofbzrphNh3aHPcfckZ8ZELLotfXP3D+Pa5J8XHb5oTjZOnxynvmZz3XU+TR8cjF3wkLvrOj+IXV3wjzj/zP+Pu5ojdj35/vClPCjY/eX2c94/HxElfuie6i8skux/6hhi7+N74zvWVQaWFf7y6WL0tVRSrsujOmyuqhj15fRqytKzv1IPjrWPS8KflQ4XmVczypUxWXa0ylPXk9TWGF60Z3tqlsL3Gwr6k/cybMoXtXP9AHkys3WfhH2/ufojVDWG9wni9OdZe6M35XvxA/Kyi+l4x6FdeZTGbz6vMdW9dA3Xd6c25KFXCu7lTJcGa11e7Ll6XVTLM5zONMS4FlMrPQTpvd9Z6b4th2SfvvKewb8X5knQdVlTfy9ZXOGdZ+KlwPGn44Mu7e3+3iGn7FO5/Ty+Pq9v3L6+Wly9VqOhX+BzfNytOLSx/+M2l4FljvCsbenVRVb/FHcPeZvKg2NOrOobAXbQgvppVlitXK5C3Rbz9zUOyffnUfZWBwcd+PjdfXxd9np6b7W+FVDXuKy9U7G8WsMuqBXYT4MtlwcCpxaBe1zr2p2M7TXH1z9fGIYeOyV/blIXZOs7lhrP3m0fEIYtWxVfbz03nIXs79ykovUdTR/Rc8TALBjbEBW/uIViYD9f73fb3riDfziGHbp1vJx+mu+o7BgAAANh8NMybv7DnfyYKAAAAbLJ+e/d98fv77s+XKh1y0IHx5kMOypd6oem38cUP/Gf8If4hvnbDB7oeKrPUb9r/F1ed/5boFHFoeixuveLH8Ys/PhWzmiMat9ktXn/0CfFPh+/duW/Bk1ccEx+/KeJf/v3aOKZqo52eK9v2FR8ZFjd+7Xvxi6dezrZxyPtOiePfOjlGFV+aBfnO/8yP48VpZ8XXzju45rYrpaBFVcBpzBviIydXVQ9b/EB8+/LHY7+TD47ZFSG9XeLYTkOMpiBSCvjli4W9eOvJ7464rtA29t0dw5s+fXNFwCMNh7rfo5fEzxZVbj8FC7+TB6XGHnpix9CwVa9P0jpSFbmS8tcm6fXHxs2FtsYa+92h+LqyPu3Hf2IcnIJMJVn7vTGuarvVah1DGrb2Z1F2PnJZe9U56M2xVuu0np7Od34s5bmtivOdKb9ear33Zcq3l4aiLRxnb4+5q36Z3pyLXh1LDdXrTvu9z18LbU2Fa7j03ldd3+nzclTEz2pdB6X9yI+/pPq6LH5GqtYfVddADY/9PA0Nmy9Eqi5XWMF1i+L8MaVqaqlC3fKIo8fGDr8rtLefkNqV6FLArzjca9Ehh46NT8TiQtvguKx9yNg0JG3ZulIlusLxf/X7q2Lvo8uGqE1Bu5/nVfTKq7ulYWjTsK3FpUzaTkXwrvy1SXr9q1cV2lo69jvvk4bqrTksbg8qz121VCWvbIjcqv2p3N/iOf5uvtRJN5Xtiue7/Nz2QvX5q7n+zvvU6/NU4/0pV/1eVV8zldvJ7xdV1z8AABtPW1tldKK0nB7Sv41My+19ig3ZcmtLa7RGW+G/HCJaW9uipa011jS3xF5T++kfKgKw2RDkAwAAgAGuuyDfGw86MN7SlyDfpqCnEOHG0FWQDeha3T83pSDfuoXdAACATZsgHwD1ZmhdAAAAGOBSUO+z555RcxpwIT5gk/XknffGojF7xu7CrwAAAABshgT5AAAAYDMwd978uOZ/boyr/vvn2ZTmUxvAK8LiB+KOpyN2P7T74XEBAAAAYKAS5AMAAIDNwPKXX47nnp8Vf3thdjY998KsrA2grtJwuhddEhdefm+MO/KMONaQtgAAAABsphrmzV9YOdA7AAAAAMAAcPtjL8cFNy3Kl+CV6S27j4wvHKkWJQBAvbW1VUYnSsvpoaGhuNzep9iQLbe2tEZrtEWhJVpb26KlrTXWNLfEXlMnF/sCQC8J8gEAAAAAAAAAmzVBPgDqzdC6AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHDfPmL2zL5wEAAAAAAAAANjttbZXRidJyemhoKC639yk2ZMutLa3RGm1RaInW1rZoaWuNNc0tsdfUycW+rwDX/eK2eGbmc/lSbVN2mRRHHf7OfAmAehDkAwAAAAAAAAA2awM5yHfOp78QS5e9lC/VtvVWW8bXv/iZfAmAehDkAwAAAAAAAAA2awM5yLdk6bK4+Ds/iFmz58ap7z8+tt5qdNa+dNnyuOzKa2LihB3izI98MLbZequsHYD6GJQ/AgAAAAAAAAAwwKSA3hYjR2Tzu0zaOXafums2pfkkPdcfIb4H/vRgTJqyZ6fpfR84OZqaluS92FCenTEzDnv39Ox9ADZNgnwAAAAAAAAAAKy3PffYPe64/ZZ47pnH26erfnh5NDZuk/foHzfceFOc95nzY9WqVXkLwKZPkA8AAAAAAAAAADZhu+4yOW69+YY44LX75y3ApkaQDwAAAAAAAABggFrT3BwvLliUzQ8bNjR7TIYOGZw9pudSHwDqS5APAAAAAAAAAGCAuvF/fxVLly6LA/d/dWy15ei8NWLrrbeKA6a9Onsu9dlY0rC4k6bs2T6l5XJNTUvifR84uaLPJZd+O3vu2Rkz47B3T48zzzk3rvnJz2KPfaZly6n9gT892D5frvSa9HxSWn9aTustX3/S0/5VK19fT69N20lT6pueT69Lr09K+1l6bfnQwek1tYYSLj+26uMs6Wqf0rrSOsuPPSntW/l6Sn17OhfA+hHkAwAAAAAAAAAYgObMfTFu/81dMXLEiDjh2CPz1g7H/+MR2XOpT+q7oaXQ2HU33BgP3X9fPPfM43HH7bfE975/RUVA7M677o4zTj8te77U59bbbs/6lIaPvfjrF8Xxxx0bTzz6ULac2vvqyqt+FG846PXZNtL2kt7sX1fS+pLSfl/70x9ngcPq197/wIPx54f/kvW56oeXR2PjNllo7m3veFdceMHnsvZ0XMnnv/DlLESX9vOhPz8cs+fMzdpLHnnk0Rg/flzh+HfJWyp1dzwjCu/76w48INt2KUyYzJo1O3u8974/ZI9J2u4LhfZ9990nbwE2BEE+AAAAAAAAAIABprW1NS6/6ifR1tYWxx19eIwetUX+TIdUoe/YI/8h61Pquz4ef+LJLJBWXgGuVPEtVYy79bbbs9BcCq8lKYD3oVNOysJmpTDZ9CMOjwNeu382n6Q+h73zHfH8Cy/kLf1jt6lTKrbT2/3rSlpf2veStO4UOKx+bUNDxNFHTs+XitXurrv+xjj7zI+2708K2Z30wfdn4b1HH/trFtRLgb0U3CtJr/u/+x+Io6Yf0b6/5XpzPCmYt2DBwkLfGdnzpXWmfZk378VsOUnb3WnihJiw4w7ZMrBhCPIBAAAAAAAAAAwwd9x5bzw/a042f88fH4iL/uO7Naf77i8OoZr6/uaue7P5dbXnHrtnVd9KVenSVKp2l8Jg016zX+yz917ZcsnEiROyMNnipqa8pWMo11IY8BsXf6siWNYfdt5pp3yuqC/7V0uqmlet1msnTpgQI0eOyJc6qt39w7sOy1uKxjQ2ZuG9VCEvBfFSYK88FNhTlbzeHE8K5qU+pSp8aZ0vvbQ8O5a07lIFwBSi3H777bKAIbDhCPIBAAAAAAAAAAwgTUuWxnU33ZovRTz1zMxup5LrfnFb9toNIYXBrvnJz2KPfaZVVOw75r0n5D2KUgW/1CcN+1oKA6YKcf0tBdrK9Xb/1ld1IK6pqSnu/v09nSoZTjvwoLjr7nvyXtGpet7/3nJrt1XyenM8peF1UxW+FJJM4b+pU3fNwn9p3Wk5BQfT8Lu1gopA/xLkAwAAAAAAAAAYQP7rmmujuXltHPKG18Unzji1V1Pqu3rNmrjqv3+er6V/pQp4xx93bDzx6EMVFfvSdOvNN2TDvqbA2K233Z5V9SsfprY3GhsbY9y4cflS3/Vm/9ZFqqqXqut1Je33IW88uFMlw9JUOg+l6nn33veH9nDdUUce0WWVvN4eTwo0piF801C8KdCXAnulgF8KA5aCg2l4X2DDEuQDAAAAAAAAABggHvrLY/Ho40/FuLFj4p+OeU/sPnXXXk2pb3rNI399Mh5+9PF8bf2nFBgrDdfaW6XQWm8sXLgwq3BXLlWVe/yJJ/Olrq3r/pWkgF211FY9lG61FPJraCjuZ3dSuC4F99K5uP+BP2Vt3YXrens8aR0pbPjwXx7JhtUtrTO9Pm3rzw//JQ547f7Z8L7AhiXIBwAAAAAAAAAwQNx17/9ljyccOz2GDR2azfdG6nv8Px6Rzf/+vvuzx/6UhmtNFeUuuPCLWTivJFWCu/1Xd2TzqTpdUh5qu/rH11QMMZvUCqmVKtaloXlL60/r/t73r8jme9Kb/evONy7+VkXg8IYbb8rauqual6SA3FHTj4gzzzm34vVpqNs0NG56LCmF7E79yOnZa7oL1/X2eNI6UlAvhQ7TsLqldaZtbb3V1nHnXb83rC5sJIJ8AAAAAAAAAAADxNrmtdljqq7WV0uWLsse29rassf+lMJsX/rCBVlobNqBB8WkKXtmUwqaHXjAa7M+abjXCy/4XBZqKz2fQmRnn/nR7PmSUkjtbe94Vxz27ulZOC2t/xPnnJU9X1r/FT+4Mr520Zdjzz12z9q705v9687VV14e111/Y/vrUoAwDZeb1teTNHzutT/9cRzz3hPaX7/HPtNit6lTKkKApdBdOp59990nb62tL8eTzvHN/3trRWAvbSsF+1KVw1LAEtiwGubNX9j/d18AAAAAAAAAgE1EdXCttJwe0rCnabm9T7EhW25taY3WaItCS7S2tkVLW2usaW6JvaZOLvatgwcffjS+ffnV+dK6+dRZH4kpu0zKl+hOqnb3sbM/HmecflqvQnsAXRHkAwAAAAAAAAA2awMpyJfccec9WaCv+rh6MmjQoHjj6w+M1x84LW+hJ4J8QH8R5AMAAAAAAAAANmvVgbfScnrYFIN8bDyCfEB/GZQ/AgAAAAAAAAAAAHWgIh8AAAAAAAAAsFlTkQ+AelORDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6qhh3vyFbfk8AAAAAAAAAMBmp62tMjpRWk4PDQ3F5fY+xYZsubWlNVqjLQot0draFi1trbGmuSX2mjq52PcVZP6CRfGDH/0snpnxXLa8+9Rd4oP/fGyMHdOYLQNQXyryAQAAAAAAAAAMcNfeeEt7iC958ukZ8T833JIvAVBvgnwAAAAAAAAAAANYqh742ONPxZAhg+N7//HlbBo0aFA88tgTeQ8A6k2QDwAAAAAAAABgAJk9Z17c8qvfxq9++/v465NPx2VX/nesXrMm9thtSgweNCib9tht16zt+//1k/jrE09nfdNr5sx9MV8LABtTw7z5CysHegcAAAAAAAAA2IykinXlSsvpoaGhuNzep9iQLbe2tEZrtEWhJVpb26KlrTXWNLfEXlMnF/vWwQMPPRLf/cGP8qUOo7bYIs487YMx+VU7ZcvPzvxbXPydH8TKlauy5XKnnXxi7L/fPvlS7zU1LYmPnf3xuOvue/KWiD332D0uveSbsesuG+acPDtjZpx+xllx4QWfiwNeu3/eCrDpUZEPAAAAAAAAAGAAWLu2Ja75nxti8ODBcer7j483v/H1sfeeu8WJxx0VX/jsx9tDfMmuk18VX/zsJ+LE9x6Z9XnLIQfFye87LqvWd83/3Jitqy8e+NODMe3Ag+KM00+L5555vH06+qjpeY/eu+HGm+K8z5wfq1ZVhgy7agcYCAT5AAAAAAAAAAAGgOdnzY5lLy2P3XadHK977X7xz+89Ms467aQ49OC/iyFDBsdNt90Rl172X9mU5ocOHRKHvvH1WZ8Tjp0erz9wWkzZdVIsWbos5szr/RC7KVh33fU3xtlnfrRTVbyTP/j+DVaNL0nrvvXmG1TjAzZ5gnwAAAAAAAAAAAPADtttG8OHD4/Hn3omfvXbu/PWiOXLV8S/fembceP/3h5/fuSv2ZTmU1t6ruS2X/8unnx6RowePSq232583tqzNDzvrNmzY+edOir+AdA3gnwAAAAAAAAAAAPAyJEj4l/+6ehs/qfX3Ryz5szL5n/5m7tiUdOS2Gv3qXHBv56VTXvuPiVrS88lz8+aE9feeGs2f8I/To9hQ4dm873R2LhNVhHvuhtujKbCOntyyaXfjklT9myf0rC8ybMzZsZh754eZ55zblzzk5/FHvtMy5Z/e+fdNdtT/9JrSutI23/fB07OltNQvKVtlPpXK++TprT+NHxv2seS0jrL+5W2B9BfBPkAAAAAAAAAAAaINKTu2998cDY/Z25xeNwX5y/MHv/+bW+KCTtun03vfNuhWVvpudlzi6G/t7/5jXHg/q/O5vvixBOOzx6nHXhQFo6rJQ3Bm0Jy8+a9GE88+lA898zjce1PfxzHvPeELBhXGib34q9fFMcfd2zWJy2/5dBDarZ3N2RvWmeStpGmw975jrjgwi9WBA1TWC+FDx+6/76sT1rvo48+loX5SlL/j5398Thq+hHt60r7DNDfBPkAAAAAAAAAAAaQhoZiHKShIXuoqS1/LBmUv2bw4HWLkqSqfFf98PI4+8yPZpXzUtW66kDfo4/9NR7688Nx0gffHyNGjMjaUiW/9Jrrrr8xC/r1l7TO6Uccni9F/MO7DosFCxbGszNmZMupOt/9DzwY53/209m+J2mfPnHOWfGmQ4pByGRxU1O0FU7Wvvvuk7cU9zlNAP1JkA8AAAAAAAAAYIC47/8ejF/99u4YPGhQ7DJp56xtu23HZY+/vOOumD1nXrwwe27c9uvfZW2l5yZP2ikaGhqyPn984KGsbV2ccfppWdW6UqCvfIjae+/7Q1YZr7qS3s477RSzZs+OlSv7L8j3hoNen88VjWlsjPHjx8WsWbOz5UceeTQLOqb2cml44okTJuRLxedTv+pqfgD9TZAPAAAAAAAAAGAAWLioKX744//J5o+Z/g8xdkwxpPb3b31TNG6zdfz1yafj/C9/My74ysXxxFPPxpjGbbLnkm3HjY1jjjgsm//Bj/4nlr20PJtfVynQl4ag/cbF38qGzU3V9tKQumk5Vesrn1Lgb2N7/oUXssBeCu51J1Xru+w7l2Z907DBaX/T8QD0N0E+AAAAAAAAAIABYHHTkmhtbY09d58S/+8tb8xbI0aPHhWf//TZccQ/vCP223ev2H+/fbL5C847K3uu5O/fdmjsPnXXaGlpiSVLl+Wt626fvfeK4487NqvEl4at3X777bJKfaliX/WUhuUtDXH7SpP2/UtfuCDbz4u/flEc894TOg0bDLC+BPkAAAAAAAAAAAaANJTu1ltvFU89MzP+708Px49+en1c9B/fjZ//4tYYMXx4HP7Ot8VHT/2XOO3kE7P54cOGxbU33pr1+fHPbsiG1H3m2ZlZ9b4JO2yXr3X9paFzS4+pmt0rYYjaNPTuQ39+OGbPmZu3FKXl1N6V6UccnoURU0U/gP4kyAcAAAAAAAAAMAAMGTI4jjvq8Kyi3mVXXhO/+/0fslDfrb/6XXzskxfEc8/PyntGzHju+fjYpy6I2379u6zPb+++L77/Xz+JltbW+Kdj3hODBw/Oe/YsBfPO+8z5nQJ6l13+g5g1e3Yc+qZDsuXS41e//s1sqN2SFO4rH6524sQJNUN2XbWvi1QtcNpr9osLLvxi+36nfbriB1fG4088mS0nz86YGbf/6o58qXisaV9L4USA/iLIBwAAAAAAAAAwQBy4/6vj1PcfH4cf9vZ471GHx9mnnxzTXr13vLxyZdx4y6/yXpHNr1y5Kl77mn3j7P/v5Kxves2HPnBCNvRuX6XA3rQDD4pJU/Zsn+bNezEu+86l7UPmpse0nOyxz7T2ftddf2MWrCspheze9o53xWHvnp6F6bprXxdpuNzPfeZfY+KECe37feQxx8UJxx+XDQdc7pv/8a32fU19j5p+RFaZD6A/Ncybv7AtnwcAAAAAAAAA2Oy0tVVGJ0rL6aGhobjc3qfYkC23trRGa7RFoSVaW9uipa011jS3xF5TJxf7vkKkff3ouednlfou/dqF2X6f/vHPZmG2//j38/NeJKkq3+e/8OV43YEHCOsBG5WKfAAAAAAAAAAAA1hDQ0Psvcdu0dy8Nj70sX+Nj5z96WwI3b32mJL3oCQN25uG703D+AJsTIJ8AAAAAAAAAAAD3DFHvCtGjx6VL0U0brN11ra5ampaEpdc+u2sAl9Jarvgwi/GYe98Rxzw2v3zVoCNw9C6AAAAAAAAAMBmrX3Y3FxpOT0MhKF16aw0hO41P/lZ3lJ08dcvMqQuUBeCfAAAAAAAAADAZk2QD4B6M7QuAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1FHDvPkL2/J5AACADa6trS1WvLwyXnppeaxuXhMta1uitaU1GgYPisGFaeiQIbHl6NGFaVQMGuTfHgEAAAAAG176e8typeX00NBQXG7vU2zIltPfbbZGWxRaorW1LVraWmNNc0vsNXVysS8A9JIgHwAAsFG0trZG05KlsWTpsmhpac1bu5b+LmyrrbaMMY3bZOE+AAAAAIANRZAPgHpT3gIAANjgmpYsixnPvRCLFi/pVYgvSX8ntnTpS/Fc4XULFi7q+EsyAAAAAAAAGGAE+QAAgA0mhe/mzpufBfFSRb51keJ7KQg4a/bcaGlpKTYCAAAAAADAAGJoXQAAYINIIb5Zs+fFylWr8pb1N3TokNhp4o4xZPDgvAUAAAAAYP1VjwhSWk4Pr4ShdWfOejGfA+CVZPLE7fK59SfIBwAA9Lv0F1ipEt/yFS/nLREjhg+PNc3NfarMl/7ya8SI4bFq9er092KZ4cOHxk4TJ8Sg9JdlAAAAAAD9oD2klystp4dXQpAPgIHP0LoAAEC/W7JkaUWIr6HwXx47Tdwhdp28c2y37bj2inrDhg2JkSNHtE8p7Jekvwdr3Gbr2KXQP1XgGz1qVNaerF7dHPPnL8yXAAAAAAAAYNOnIh8AANCvWlpaY+bfns/+9WlJCuntNGGHfKn4r1fXrl0bQ4cOzVs6pIp9aR1pGN2SpiVLY8HCxflS0at2nhDDhw3LlwAAAAAA1l17tb1caTk9qMgHwMagIh8AANCvUuiuPMSXDBqU/hqrQ0NDQ80QXzJo0KCKEF+S+ldbtKgpnwMAAAAAAIBNm4p8AABAv5ox8/lY29KSLxWlYN7kV+2UL/XdgoWLomnJsnypw667vCoGD1qXf5/UHIv/NisWNueLydDGmPSqbaLnGn/Vr90idpyyXYzOlzJrlsTM55sKPYtGbz85dizrsHzuzJizIl+IITFu551iTM0N59uK3u3bmqYX4rlFa/Ol3KhtY7cd0tDEK2LOM/NjeftyLcXtrRpbub+Z7Jheiq273NdqxXUt3WpiTG6sHdrsSTpPC0as++s3jhrXUpnq936TV3VtZ3r87PTm2tsUdX7vh46t3/VavK/UuB/V0/IX46l5HcOs17xfDhSdjrWontdEv6lxbAPu3laSH2u371veZ8Ceg35RvO9HF+foFXm/Kqj881lJd39O27Rkf05ctmUv/7zLK0cPf6bO/2wWffy+6fjvhlf+d/Mr9Z4BwMCkIh8A9SbIBwAA9JtVq1bH87Pm5Esdttt2XGy91Zb5Ut81NzfHc3+bFdX/8bLDduNjyy37+HNOVz/A5z+CDe/hh/n0o9fCoTu19+n8o2jVj9fVAbjC9mc2j+n4oS3bn6j9w1S+rz0HpfJAUafAX2Ff/tYc47p4bbbvq8aUhauK6xHkW1fdnL+BIrsOVsf4sus1+3F1TW+DsANF8XO+uuJH80Lb3MJn+RUSVuz8+d64igGBYRX3tjVNL8byUdtl95C+798r/POV7teLhne+B6cQa6+D4q88NcMThfvAnBWjYsd+uzf393ubzvviGLEu4avS926XwZbivqYAryBfd4rXfldBvleqmn/uyK+JV0ood33u7dlrBfk2QcX7zvr8mbqT7v77o+7W4x4OAP1AkA+AejO0LgAA0G9WrOxcjWjIkMGxVV/DdlXSMLxbbtV5HctfXpnP9VIKIaWgxZTJseOwwvwzM+OpfJq5YlRMnjIxRix6IRavyfvXMKyxI8SXDGscE6ObX4rl+WvWNC3OKo+19xm2TYwftTYWLspLvIzervJHuNFjYtzQl2PZ8ny53YqYM29NjB5VOcxwLcvnzoqFw7aN3Tr9MDsqdvRjLRvY6B22rfgMbBaWL4/lsUWMr/hBvfB5e4WE+OqvOZYvWxtDxxbuj3lLMqyxGOLbfBSuicL3yrhoitlNXZTtfAVLoZ8spFsd9Ch8r/VfiO8VaOgWMbrm93LBmhWxtHlI4c8l+TIDX+HPbbvt3BixaF63fz6ETc7Q4f4bAQAA4BVIRT4AAKDfvDh/QSyt+uV7661Gx3bbjs+X1t1Ly1fE3Hnz86WiEcOHx8477Zgv9Wz53BdizdidYkx0U10uC/sNjcm9DuRUVo3osppLp0pNJbUrEZXWMyHmdV89pdeV8sqreUR7RaGSYqWZYntvKvLVrOpScZwd2xu/albHUHV9GF618lzWXl/nCjnFKkDtV+FGrYRV+73sqPBU1FHFqXRM28bWy+YX3o/i8H2jVxTP7Y5bvRRz8qGSi8e5puzYqob663Ib/Sy7Dior8pXOebHyUq1j2j5ibuW1V11VpuJ6yrZRNnxvp2umxnu8Q8TsGp+Dmp/H/tCrz13xXLR/zjpdi7Wv1ej1Z6v2dTPpVaNiefl2C9L1k31uoupc1nw/+0c69522l6k6LwXtn+Oq67i9vfqayK//jmPu6lzlyxvjs1G93XI1nsvOT9kQnrX2q7JP6TPf03XVX8o/13lTV6rfn4p9Kl2vXdy7u3hv0+eq9vHni0n1a9O9YsvlFe93n4eMzN+r7P5bfW0VFO8pxc9exb2+6jprP76C9vvb2NXxXKlP9fvWzeszFcdaOBfbbxlL51V9dqvW0eO1Xuv8lT6v3b6nRdlxlQ3nX7nP1ddPfr/r8j7X/XVdua0a10I/Kb6/Vec+1/m5qnt4T9da9v5E7Ljz8FjQfm47v6br89rNvbNaF9fCel+LpWMofK3PSX3ar5k+3Jeq15Fk6xlWsY726ze7Fvvy/V669tI/zulYX+dz1c0+d3Gc3V2H3X8eergP5rq+53W8vvPxJlWft9L+d3GtVe9rx/vY/TVdun5Kfz7N9n/o4r69n7kuj7Xq+ivtw7DStVt2XVWuo3obta+DHu+LAFCgIh8A9Tb4458499/yeQAAgPWybNnyWNNc+kWsaNSoLWKLkSPzpXXX1toWS5e9lC91aGzcOp/rSXMsX94Qo7cZES3LFsRLW2wfO44enD9XZvCIGLq8KdZsObr2D5DVCn3nLh8c24xP/QvbWLwsYvTY2LL8xWtWxKKVQ2KbwrY7bXHNSzGvaW2MHrN1jCw9ufzFeG756Nh5+1ERq5bFktXDa782Wbk0FqzeIrYd28Xz7VoLXZfF6uFbRePIoTFym8bYsmF5LBk0LnZ71baFtvTqYp+1WxSeqz74llWxZOmaGLF1cT9bau1XxXEW17V8+bJoGzs5Jm3fGGPHjI6GxXPjhZXDYmynDXS2ZvmSeHlI2t+OfatY37A1sWDB0mgYXTp3xR/t0nCnUyaMLWyvMYa3rYrBI3s6N/2lxvkr/Zg6ZWLsUNifsaMbYuHsBdGW7XPpmFbHFhNfFRPHl53b5S/Hqi12LB5HdpyLYtHi1bHVzqlf4bhWL44XlzbElulcpx+5Z6+MMflzaRvNLSNiZK8u4D7KroOWGFV4L9tXv+blWLi0dA3XOqZiW+naG9y2PBYvy/c9W0FzLJ2/JAaN3SG2Kax0zbKlMWj8xOKxjBkWq1+cHy8NK53TLt7j0aNi0EtLYumg0fn1Uuy78MXVMbqwnvam/pLuE+k9WLgkVrfvW7mOH93b93Nl4dpfXrr2u75Wa37ma362alw32etGFe5znT/fwxrWxKKmNTG87L1bU7gXLh60dezQi89jXw0b3hDLFi6KBS+Vv9fJ4C7uP4WPy6IVseWrOj4rS+YtLn5Who2IxnT/eGlZDNo2ff6rj7mLc7UxPxvd3edjbSxrWh0jsnOfro3n48XB22bHnt774n1hbqwsu5aygEKqhrfLDrFt6jOsLVYWrruW+ZWv3WD3uOxzPSjGbN/Dd2G6x5Wf47RP6VpfXHrfS9drF/fuLt7b7PO7fFRMyo9zy4ZlMWdRW8e1lAfN0nD47d8va1ti5NZpvnDfaL9f9rD/1fL3cWzhuNcuXBqt7d8vSemeUvhzR+F4yu/1XV67hdeW7ulL2hrz962wf4XPRlNDx/2qu9d3PtYtYuXc+bG8dWhsWfo8d/tdkzpU6er8pQ9Hj+9poUvh+nzh5a07rs/CMa0sXMML24+pOV5avKLw56F0jtI1PzeWjCxctxO3yl5f+dnt4X5Z2J9nFwzuOLb8s1DzuNZT5Z87qqwtfHetyvcpnb+Zi2JI+/lL12hTvDB7VcU9tkK6tgrXwUsvj4yds/OWrvtF8WLZn4m6P69d/dmtSjf3vfW/FvNjKL0+2++evu+qVK+jsI3su6Lw5+fiPaB4jPMX5Ody8OBo69P3e/HaW17YRvE7svo8phf0sM+1jrOb67Dnz0MP98HsGLq755X/OarTAReUf94Kiz1ca4NHbp1tf9Hq0cV9zo6552u6dP2U/nya7Utf389sf7s51mGjs/NXfQ/vfM/o6Xu083XQeT8AoO9Sbq9CWUMW8Cs8ppaU80tLLa1tMX5sY/Y8APSWoXUBAIB+09rWms91aG1pyefWT611t7T2Zd1rYlUM7d8fbtKPXvNejtHbd1OBpaR5dWEPqq2IOc83RYzdPsa071ihbd6aGLdDF5VMqqxpLqx1WOVxpYoZpSGDn3rmxbLKGr2zfF7HkMPtU3tFjz4aVTbMcOH8jxm7ReEQ07Ck66h8fdmwxGtjVdWwxuXVSkY39u48bhjNsXhR1fWRD7W8dEXZ2Rw1puz9zw1tjAml48iOM1Vu6bhORo9tjKEV19SwGFZaR2EbYzZatZHCMc4tXBvVx1DrmHLDRm1Z2PeyoXjXpKEqt4jS6NmVw6+Oiq1GRazOA8Jdv8dDY/RWQ6J52YqOc5KGvx26ZYzuYj/W1+gdJsdu22+Rf16qhuRevjgWRtl7WJC9Z/m13y/XajfnuKbRowvXYflwocXhb0dvmVfg6m+F6zANV56GlX0u3UPmlpXN6cLoHco/K6Ni67LP97qr12ej2ppYk44lXRuF671iGObCfk0YOySWv5Sfo8J3y4IVhT7lFa1GF/Y9Xxg6ouON32D3uDWro7nHYReL97jye1NSc7jtbu7dtVUOVV28b3Tc85YvSt+dEyu/Xxr781oeFePGRsew+AXFz23tz13P1275e57WXbhflXXo7vXpWJvLz1861h0K95N8qdffNWW6Pn+9eE+z63NI1Z9TCu9X4X5YcQ/OZcP/F+6Hk8qv+XI93C8z5ddi2Wdho1vTnB1f5/ekcMobty9c110Mydyu/LzlfybK19nX89q97u57Na7FsvX3fC0X9nFs2XvZm/evk7J9yK7VwmPZ+RzWmIZlz++ZhfO0Lt/vlddw1XH2ap+rjjOpdR325X3r9j7Y/T2v77q51mro/TW9RYwvO29FfXk/k/U81t58j+bKr4PO+wEAAPDKJMgHAAD0m8GDO1eJaF5bNnTTemhu7ryewYOH5HO9MSxGRPEHrPSDUSyaVxm86atUsSavZlP+o1eXqgMRKQSYV+TqCPM0x+K/pWGg+jhkXNUPc8Mad4rdpkyO3XYu/6G/99KwU9nry6d1XFd54CQzbPg6raek0/oKiiGvYiip1vP1syZWFXatOhiZhgErD3D0dp+HD+3izGU/tL8ccwrrntlUO7TRv4rbKh5PsaJN9fCp3R5THgwoBUzWrHgpmkelkFmHVN2m/HwVdf8eVwYE82DL2PIf1jeA0dtln49JKfDzfMf5zwK2zXmArTRlYdj0A3L/XKt9f30xFNn+I3ceZBjXm/vXOhsaY16V7iHbxugV8wvnoadgcboHls5Z2ZCH62qjfza6UwzWZNdGjYDcsKHZk9m9PPtMdBGiG73lFtG8aFYvzmU/6DFYUbzHdb43Fb5vq8I/ta7XUkC3S9n3ZPnnp2RFLCtcxl3eE/tJdk9pD/b0FHzt4dqt9X5WfHd39fpCn3TJdPt57913TYfuzl8v3tMU8iwstwfFStL3e9U1s3rRC8XKkl0Ns1rQ/f2y0CGFkPPn52zwi74H2T+c6Oo9KTxXaOr+uq5x3krnrA/ntVs93fe6uLd06Ok+XLmPPb5/vdTdNb4u3+/V13B2j831bp+r3ouursM+vG893ge7vOeti26utU76cE33eP0UdX/PKliPY+3N92hJ53tZdTAVAADglUeQDwAA6DdDagTrVq5clc+tn5drrGdIjeBg19KPr/mPgMO2ick7bxlLn89/QCpM7T92psoaURkqqpZVvMuGsKsO8fXmR9yCLAT4Umy98+SKilzFChOVP8Y/t2ht/mNjVcWvXJ+rWAxwGzrYsS5qBiOrgm/rpyMsNTwL+NS+VvrPFtm1XzqWimu4V/LqOtkvqdXhmDTk7MyYE9u2r3/HqlPV5XucVYEpBU0qq/xtaFl4NlXfWbS4I1w1tDEmlZ2n4tQR0q3HtZpVHMp/5F7+0ssxdKtRvfpBfv2NyoYjTJV9FnQVqMt+1M+Dodm5Sv3z59bZxv5s1NYpmFdVRbWmrvq0h0fXFAO1vah0uE6y0HVvgjhDoqe8xrrIvmfz78nseugUJt8w262Q3VPya7a74Ov6Xru9eH1v7hd9+67p7vz14tz2MsyTqa7OWEu398t0/ygsF66B1dmfjzZCiLWTzgHsDXIP78t57dJ63PfW9Vru4ftuvW2I7/c+73M312E/vG893/M2vI3155J+OdbefI8CAABsogT5AACAfjNixPB8rkNra1ssW/ZSvrRumpubY/nyzj/bjhzZeXvdGT12y1g6d0kx9JbCfO0/3JXCSM2xeO5LsXX1UFrllr8Yzy3bMiZNKRt6rMywEZXD5SUVgZn0I2kWAqzxY2Ee0CifJo0dkv/Y2MWPi3nllS7DMRtIeWWTkqxCRk96NVzjuiiGKKuH1KqvVMGoF8HOflP8kTmrDlc2HOQrUXulq/SDfHk4Jhsur3C91wyf9Pwep2pl6flaVf42uLJqk9nno8uAbffHsc6frd5I94ss0Jwqcg2JrUdtnB/ti4rH3ZXie1Y53HBPen+u6vnZWFHY5tr26lHZPtcYcjLb7zyY0FWfcsXKq6nS4eINE07MgzPdn69ilbbOw7emqm7rE7TLA75dVqftarv9L6uAuGxFLO4m+Lou12657l/fxf0iqwJW0tfvmu7OXy/e06zSWI1wXo3v9+Fjd8orlnYdvuv+flkm/3PbjqVw5caUD+VZHFK0q3t4sarZOoeh+nBee6fv9711vg9vhH9Qsr7f753useu6z9XXYb+8bz3d8za0DXRN17T+x9qb71EAAIBNmSAfAADQb0aOHJHPVXpx4aJIw0mui9bW1pg9d160teUNZUaOHJnP9VL68W3s6trDs+VVSFaN7e5DMgFxAAA97klEQVSHpZ6H8yoGlOZ3rL+w3gUrSj/+Rixf1BQxdkw/BoyGxpgdGiNS1ZV1qcxUNQRVr2U/XDbFwrLjnJ2qB1ZprhjCeEXMmVd2/rJz3n+VdbJqY+XnvmB5UzG4mVX/+Fse4txoCu/N2FSlrXIY5zVNL/Zv8Gb5ixXHvGZV/wxnvUFlIaGXY8HclyKN99r+ear+QTwdW9ll3d17nElD361YHLMrqvxtAIX9qh6yMH2228MFo8dk1efmVHwmC9d/vtztcfTys9UrnT7fqRpixNK5i2P50C1j9Ab7tTsNzVj12c7uhVXhwbL9q/5hfk3TvBpDOlaFlXo6V/X+bGT3uOIQ6u3VW2tdG9l+R4wrhchr9Vm+pHDfSGHzsuu9sLw6n90QRu+QD4lcfe8s7O+c7PqvfY9bPnd+LB81ps8hjY73tjpUko67fOjFWtst9Gkq/7z10/CJ6b2IwjVW9j1erbfXbld6en0KMEVFYLP4Xdqhr9813Z2/XrynpZBn+bVY/f1eJoVOU+hpTlff9z3cLyuPoxgs2piKVZjXxLidO/4BR617ePa+rc9w5X05r9392W097nvrdC338P71mz5+vy+fV3a99eYe28M+d3kd9vHzUFtP97wNb4Nc0zX19li7uYfXev+q32MAAIBN2OCPf+Lcf8vnAQAA1sugQYNi1erV0dxc9aNhW8Sy5ctj6NChMawwNTQ05E90ra2tLVatWh1z5r0Ya9Z0/hFy8OBBsd34cb1aV4Vho2PsmNHRPPf5eGHhkli0OJ9eHhk777JDbNPtL26tsXLpsliyrOx1pWn1sBi7ZeHFg0dE4+iGWDh7bixI7UvXxpidd4yt81GA1yxfEksL6+j0+pcaYsttRkT1YMEtqwrbWz08tqnxXLu0zcIxNSyeW3lMS1fFFttPjLHZMRX3ffXwraJxZHFNg0cOidULF8X8Qt9lDaML7ZH1WbtFY6RDqdCyKpYsXRMjtt46spcXtjmqYXnMX7C4uK10/rYdFEtWDsn3tbi95sZxMWLR7Hy/VkTb2Imxc+lkrFwaCwrHNraLY0vn6uUhpf3tvP+d2qrPfWF6adBWsW3hYHp1HtdbcX8qzl/hetuyYVnhOs7PU2FaMqgxJmYXWq1jqvWe11hv9n60xKjC+z4s1lYe87Bt+3no3jIV262lF+9TbljDmliwrCXGjG8sXlNJdl2Vna+2xthx2IqO66Cb97hoWDSsXhxLWwqv23ZDvtdrY8m8+e370Pm8D46Rhfd49YvzY257n9Wx1Q7j2j8/XR5HLz9bPV03nT/fxb6DB7fFkqaXY4tte7rfrY/B0bJyQcx5sXTshSm7F3YEpTvt39ZbxfDVHa9ZscW4GLN2Rdl1XzinQwrXzIJFheeXR8Powr1oWE/naiN+NtasiEXLXool+baKxzwotp8yMbYre5+y49im6n5ddW5q9lk+KLYZv1UMXl5oK53XTq/rb8NiyzGNMXxl2Tbz4xo3YaviPSB9pw5bFS/MXtD+fOV57s09ofN7u3XF5yddr1tH8/Kye0+n7Ra+bwrXSnF9w2J4+3WxJoZ3eb+qIb2P7ddPMjgGty0vXI/jy97H4v63X5uFfenu2q31/VPR1sPrOx9rW4zbeXSsKr8XF/p0/V1TQ3fnr9NznT87w7asvi5WxLDtJ3cEVqM5Xiq0xejiMQzbsnA9v7QoXlxYfH+HNZefk+7vl4NbVlTuZ+PEda5+2JNaf0ZbMmhc7Paq/N5dUuMevmTt1jHpVd0Et9K1tTwKn6my67GqrefzWth0F/f2Dl3f99b7Wqx1DD28f53UWEfln/eSdP2sjCGlP3Nmevv9Xrz2hm3fGKufn13cp+zPw6+Kbdv//U8P+1xjH7u7Dnt+33q+Dw4rnOCu73m1Xl+u8vPWm2stWy6/1/Ximq51/azL+9n9sSad7+GDK7Zd4zuy0/dh1TnJ1GoDgL7p9FeQZQ3p7zHTv0FOLekfI6ellta2GD+2MXseAHqrYd78hTXqWgAAAKybl19eGbPmzMvmd9h+2xgyeFDMX7goVq8u1lpIf8e15ejRMWqLkbHllp1LPKxctSqr0rD0pZeyYXm7Mm5sY4xp3CZfYlOUqtzMju032A/ybJ6Wz50ZC0ZsuKDHJi9ViXt+dYzvYnhwYBOw/MV4atHw7oNjMMD07vt9Rcx5Zn5EVQASAKC3UiCvXGk5PaS/08wCe6U+xYZsubWlNVqjLQvypb/PbGlrjTXNLbHX1MnFvgDQS4bWBQAA+tUWW4xsH2J37rz5saZ5bey4/fYxaFD6q6ziX3wte2l55fCI5QrPNy1d1m2Ib8jgwdG4zdb5EpuqNauicphNWF/ZULxVw7dSJh/CrjQEMLAJKg7bObR8WHIY6Hy/AwAAsJlQkQ8AAOh3a9asieeen53Np3+cuuvkV8Xq1Wti3osLYm3L2izst9348TFkSK3hoSJmzHy+0K8lX+psh+3HZ1X9ADJZlbmmaI4hMW6DDjW66UqVjOasKMyM2oDDywL9L1Xfm/dyvlA0WrUxNhd9/n5XkQ8AWD8q8gFQb4J8AADABrFk6bKYv2BRNj9mzDYxbkxjNt8bL8yaEytXrc6XKm2z9Zax7fhx+RIAAAAAwPoT5AOg3gytCwAAbBDbbL1V+/C3ixcviUWLm2LlypWxfMXLsbAwX/0XY+W6emr0qC1i/Lix+RIAAAAAAAAMDIJ8AADABjN+3JjYYfttY9Cghli0eEm8MHtezJn7Yhbs6y7IF1H5XPrXrOPHjokdd9guGtK/dgUAAAAAAIABxNC6AADABrd27dp4ccHCWLFiZd4SMWWXV8WgQbX/bdHfXpgdq1evyeaHDx8WO2y3bQwbNjRbBgAAAADob9X/8Li0nB42paF1r7vptnhmxnP5UoeRI0fGrpN2jmmv3jv7x9fJ/IWL4sE/PxpPPzszVq5albWVm7LLpDjq8HfmSwBsaIJ8AADARvPyypWxqGlJNK9ujsmTduqyut7cFxfEqtWrYlxjY4wePUoVPgAAAABggxooQb5TzvhUx3524YRjp8fEHXeI//juD2LVqtV5a2fp72W/f8lX8iUANjRBPgAAAAAAAABgs1Ydfistp4dNKch38kc/GVttOTo+9IHj85aiFNh74uln47d33xdthf1Mx5AO4y2HvCH2mLpLjBgxPO9Z9L0fXhPLXloel3/r3/OWgaepaUl87OyPxxmnnxYHvHb/vBWgfmqPYwUAAAAAAAAAwCZn6JAhsfvUXSum/fbdK9571OHxoQ+cEC2trdHS0hIf/uA/F9renT1X3T+tY3088KcHY9KUPTtNl1z67bxHxA033hTv+8DJWaCuO+n51C/1r6Wn5zeEVatWxXmfOb/mMab29DxAXwnyAQAAAAAAAABsBvbbZ898LuLVe++Rz/WfUqguBfYeuv++eO6Zx9unO26/JZavWNFtyC29rjzs90p39pkfrTjGNG2//Xaxxz7TNmqwEBgYBPkAAAAAAAAAADYDgwYNipEjRmRTmu9PKaD31a9/Mxum9qofXh6NjdvkzxTtusvkOO+Tn4gRhW0n0484vGa/TV0aqvfan/44zjzn3KwyIUBvCfIBAAAAAAAAALBebvvlr2LW7Nlx4gnH5y2br3323iuOP+7YuPe+P+QtAD0T5AMAAAAAAAAA2Fw0FP6/ofA//ShV4/u/+x+Io6Yf0esKe2no2TQMbxqON1WumzRlz/jGxd/KpjRfeq6v0roOe/f0eHbGzLylKC2n9lpV8tK+pG2WpvUdFjdVHXzdgQdk2yo/htLQwz1tK53P8z5zfkW/8iGHq/c39e1uyGJg0yDIBwAAAAAAAACwGWkr/F9/mj1nbjz054dj4sQJeUvfpOF4n3vm8Tj7zI9mU5rfWMPuXnnVj7LHtM00lYbFXd8wXzoXCxYsjMVNTdlyCvVNO/CgLOxY2tYdt98S3/v+FRUhvRT2O/Ujp2fzTzz6UNbvofvvi/HjxmVtab+uu+HGrC09l/rss8/e2XPApk2QDwAAAAAAAABgc9GWivL1b0W+rpSq4JUqx61rlb0khevKq9CVphSOu+vue/Jefbfb1Ckx/YjD86ViqPDir1+UheXWdV+rpWp5111/Y7be8m3tusvkuPCCz8Wtt93eXkHw6h9fExMnTIjPfeZfs8p+SQo0/tNxx2bzz7/wQraPpZBj6pOG8S31BTZdgnwAAAAAAAAAAPS7FFS79eYb2ivdrY8UgitVsiufUmW6Nx1ycN6r795w0OvzuQ7V1fTWV6pY+MKs2bHvvvvkLR123WWXGD9+XDzyyKNZcDBV7kvD8nYVzNt5p52y4YfXt2Ig8MojyAcAAAAAAAAAsJno72F1kzGNjVkYbdas2XkL6VxMe81+MWHHHaKpqSkWLlyYP9O1FBxMAcLuhihOFf1Kw/+mioTnfeb8rOIfsOkT5AMAAAAAAAAA2Ey0paF1+3lk3TTMaxru9f/uf6DuobLGxsYYN25cvrTuUjAxBRTXRToH6VyUKuv1dp9KgciepHNdqkY4a/bsOPUjp/fbMMBA/QjyAQAAAAAAAAAMEC+vXBU33vKriumm2+6IBx9+NBY1LclDfA2xaHFT1paeq+6f1tFX//Cuw+KhPz8ct/3yV3lL/aTqd6kKXrk0dO3jTzyZL3W4974/5HMdUtvECRNi5Mjaw9v25LLLf5AF7A590yHZcgropfOe9qHaszNmZFX40rC7aXtpu7X2qZYUoDz/s5/Owpn9NQwwUD+CfAAAAAAAAAAAA8CWo0fFylWr4qZbf10x3fi/t8e3L786Pvm5L8eqVatjxcsvxyfP/0rWlp6r7p/WkdbVF7vuMjkuvOBz2ZCvl1z67by1Q2+G3d15p53igT89uF7V5dJQtmlI27QPpfU8O2NmfO/7V2Tz1b5x8beybZbccONNWdtRRx6RVdPri7S9933g5Gx9//GNr2VBuyQ9nnH6adm5SesvSfv12fM/Hx865aTs/KXtnfTB98ett91ecQ7Tev/7Jz/L5tNj+flJ4cAUElzX6oHAK0fDvPkL+3/wcwAAAAAAAACATURbKmlWprRcGoY2Lbf3KTZky60trdEabZGK3LW2tkVLW2usaW6JvaZOLvbdyJYsXRYvzl+QL3VoaW2NZ2f8LX79u9/HipdXZm2jR20R/+8th8TkSTvF4EGd60Btt+342GbrrfKl3kvDyn7+C1+Oa/LgWblrf/rjbFjYJAXarrvhxorAWwqofezsj8ddd98Tbzrk4Oy5JLUdNf2ImH7E4dlyudJryp8vX09y/HHHxgnHHxcfP/dfs7Bh2odSn1NO+kAWnCvt75577B6XXvLNLFjXld4eY7UU3Dv9jLMqKgPW6l+9/0mpXwr4paBhSek8lc4hsOkS5AMAAAAAAAAANmsDJcjXk2UvLY+vXXJZDBrUEOd89NQ+V90DYMMR5AMAAAAAAAAANmubS5AvWb16dTQMGhTDhg7NWwB4JehcGxUAAAAAAAAAgAFp+PDhQnwAr0CCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAAPUrDnz4le/vTt+9/s/xMy/vZC3AvBK0zBv/sK2fB4AAAAAAAAAYLPT1lYZnSgtp4eGhuJye59iQ7bc2tIardEWhZZobW2LlrbWWNPcEntNnVzsW0fNzWvjuz/8cTz8yF/zlqJD3vC6OP6YI2Lo0CF5y+apqWlJfOzsj8cZp58WB7x2/7wVoH5U5AMAAAAAAAAAGEBSyPCS7/4wC/FN2eVV8c/vPTKm7jope+7ue/8vbrzlV9n8hvLAnx6MSVP27DRdcum38x4RN9x4U7zvAydngbrupOdTv9S/lp6e35DSNrs7RoC+EOQDAAAAAAAAABhA5sx9MR5/6pnYY7dd41NnnRZvfuPr45NnfiQ+ccap2fN33/vHWLt2baxctSrO+fQX4t++cnH89Lqbo6WlJXt+XZVCdSnM9tD998VzzzzePt1x+y2xfMWKWFXYZlfS6zaFIFw6hvM+c3783/0PxBOPPlRxjFtssUXea9P27IyZceL7T84egY1DkA8AAAAAAAAAYACZ8bcXssfXvmbf7LFk96m7xk4TdogVL6+MRYubYlAaJrhg1uy58avf3h3/fe0vsuV1kcJtX/36N7Nhaq/64eXR2LhN/kzRrrtMjvM++YkYMWJEtjz9iMNr9tsUPPrYX+OhPz8cJ33w/e3Hk6RjPLnQBrAuBPkAAAAAAAAAAAaQ1ryy3sJFTdljSaq4t2hxcSjbkSNHxvDhw+NrX/h0fP68s2PsmMb43e//EM/PmpM931e3/fJXMWv27DjxhOPzloFr1qzZMX78uBjT2Ji3AKw/QT4AAAAAAAAAgAFk8qSds8eH/vJovLR8RTa/atXquOm2O+LllStjyi6TYqstR2ftDQ0NseMO28VbDjkoW549d1722BepGl8aZvao6Uf0usLeDTfelA3Dm4bjfeBPD8akKXvGNy7+Vjal+dJzfZXWddi7p3caEjYtp/b0fLW0L2mbpSktd2ffffeJBQsWxp133Z23dFYafrfWUMGpLT1XGma4NKRwaR9L+1HeJ0n7ldrmFt6jdH5K/bo6V9XHVd2vNBRyOidp+6nP17/5H9k23vaOd8Xdv78ne0ztPZ0TYP0J8gEAAAAAAAAADCA7T9wx3vn2Q2P+gkVx1r9+Ps7/8jfj7PMujJtvuyML7p343iPznh1enL8gexw3Zkz22Bez58zNhpqdOHFC3tI3aTje5555PM4+86PZlOY31rC7V171o+wxbTNN1/70x3HmOed2G1xLQ+h+6JSTsn7rGjisdv8DD8ZP/+fauP7an2T78dD992UVDj//hS9XhPlemDU7vvSVr8Z/fONrWb8nHn0oJk6YEB87++Pt+1EKEV53w43ZekrHls7z8Se+v1PIMZ2DNxz0+qzPOWd9LL70hQvijttviUPeeHD2mNrTUMjAhiXIBwAAAAAAAAAwgKxctSpmz30xX0pBu3mxprk5m29ra4uHHvlrNl/yyzvuirvvuz923H67mLrrpLx1/VVXmFuf0FsKzZXWUz5NO/CguOvue/Jefbfb1CkVIbUUdrv46xdlIbju9jW9JoXcUmW+tA/rG+hraIj4yKmnxIgRI7LlFGI8/7OfzgKSjz7W8X4tXLgwzvzY6e0hx9T/E+eclc2XKgSm/ikEmMJ+5WHIU0/+YEx7zX7xv7fcmrcUpXOQjhuoL0E+AAAAAAAAAIABYu6L8+PCf78kHnnsidhz9ylx3NHviY9+6P3x4Q+eEEcd/s7YdtzYuOHmX8all/1XpOF2k1t/9dvscciQwbF06bJsvj+kynW33nxDVtEtVbpbHylcV6osVz6linNvOuTgvFffpUp01VJlwRTQW9zUlLfUVjq+UqCvVrW73kpBuuoKhGMaG2P8+HExa9bsvCWyIN6EHXfIl4pGjhyRVeV7/oUXsuV77/tDzfWl0N/rDjwgG0q3PHS480475XNAPQnyAQAAAAAAAAAMEN+54kcxf+GiLLh3zumnxNvffHDst8+eccC0V8e73vGWuPCzH4+3HHJQ/PmRv8aNt/wqe80Jxx4Z244fG8/PmpMNw/vUM30Lo9UKnG1OUqAvDYmbQnZX/ODKiqFwN7a07XnzOqox9sa6DokM9C9BPgAAAAAAAACAAeDZmX+LOXNfjP/3lkOy4F4tgwcNin865j0xccIOce8fH4i1a9fGgfu/Or7wmY/HiccdFctXvByXXXlNob0lf0XPUuW3VAHu/+5/oK4htqSxsTHGjRuXL627FExMAcXeStXujjryiGwo3Nlz5mbL22+/Xf7s+ult0C5V1uvP7QIblyAfAAAAAAAAAMAAcOfv/5g9vu61+2WPXRk0aFDWZ8XLK+OBhx5pbzv04L/LAoBLli6L39x1b9beW//wrsOyENttvyxW+aunhQsXRlPVsLiPPPJoPP7Ek/lShzQMbbXUloaqTUPW9lV1ADBVxysPN6YhbdPQttWqh7tNnp0xIxuyN4UTS0pBwXJpObWXAn8p0FdrfWk/Utiy1rC7QP0J8gEAAAAAAAAADABPPTsztt56q5i088S8pWvTXr139vjUMzOyx5Jjj/yHrGrfMzOey1t6Jw0ve+EFn4szzzk3Lrn023lrh94Mu9tVAK0vJuy4QzbEbdqH0nqenTEzvvf9K7L5at+4+FsVwbobbrwpa0vV9VJ1u1pSnzSVS9v47Pmfj6OmH9EeknvDQa+Pa37ys4pw49U/vibuuvuefKlDakvPlZTWd9g735Gd25IURiwfvjcd4wUXfjE75n323itre+ff/78siPixsz9ecS4vu/wHMWv27DjxhOPzlq6lMGJDQzEACWwcgnwAAAAAAAAAAAPAJz72ofjcuWdEQ0pg9WCH7baNCz99Thx75LvzlqIxjdvE5z99dvzze4/MW3ovVXp74tGHsip0k6bsWTGlgN8Zp5/WbSW4Q990SPY47cCD4n0fOHmdAn0pfPeJc87K5tN60rZT8O1rF3059txj96y93NVXXh7XXX9j+36mwN8dt9+SHUt30vGUXpOmt73jXVmQcfoRh+c9iufj4q9fVNE3hfvOPvOjeY8OqS0FGcvX96FTTsrOWbnjjzs2C/ftsc+0rF86xrSdL33hgvbgYXpMy6m9dA7SlN6Xy75zaa+q8aU+KZRY2vfq4CLQ/xrmzV/Yls8DAAAAAAAAAGx22toqoxOl5fSQMnFpub1PsSFbbm1pjdZoixSba21ti5a21ljT3BJ7Te2ooAY9KVUwrA7tVUthujQ07uc+869dVgsENl0q8gEAAAAAAAAAAEAdCfIBAAAAAAAAAABAHQnyAQAAAAAAAAAAQB01zJu/sHKgdwAAAAAAAACAzUhbW2V0orScHhoaisvtfYoN2XJrS2u0RlsUWqK1tS1a2lpjTXNL7DV1crEvAPSSinwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQRw3z5i9sy+cBAAAAAAAAADY7bW2V0YnScnpoaCgut/cpNmTLrS2t0RptUWiJ1ta2aGlrjTXNLbHX1MnFvhvZ6tWr4+Zf/iZmPPd8x/52o6FwLLtOflW8++/fFsOGDc1bAagHQT4AAAAAAAAAYLNWHXorLaeHTSnI99VLvhdPPj0jX+q9vffcLc467aR8CYB6EOQDAAAAAAAAADZrAyXI96GP/WsMGz4sTjvpxBg0KO1V99I+f/uKq2PNmub43sVfitVr1sTfnp8dO03YIUaOHJH3GpiampbEx87+eJxx+mlxwGv3z1sB6mdQ/ggAAAAAAAAAwCaspbU1thgxIvbcfUrsPnXXHqfUL/VvaWnJXv9f11wbF/3Hd+PsT18Yf/rzI1nbunjgTw/GpCl7dpouufTbeY+IG268Kd73gZOzQF130vOpX+pfS0/Pb2irVq2K8z5zfqdjTW3puc1Rep835+OHdSXIBwAAAAAAAABATHv13jF110nR3Lw2fvyzG/LW3iuF6lKQ66H774vnnnm8fbrj9lti+YoV3Ya70uvKw36vdCk8uMc+0+J1Bx5Qcazp2Lfffru8F8/OmBknvv/k7BHomiAfAAAAAAAAAABx4P77xSfP/EiMbdwmlr20PG/tnRTQ++rXv5kNU3vVDy+PxsI6yu26y+Q475OfiBEjikP2Tj/i8Jr9NhWp6uD3vn9FFlBMx1IuHVMasrd0rJubdOxf+sIFm+3xw7oS5AMAAAAAAAAAYL3c9stfxazZs+PEE47PWwauVHkwVQ780CknZQFFgP4gyAcAAAAAAAAAwDpL1fj+7/4H4qjpR/S6wl4aljYNw5tCcam63aQpe8Y3Lv5WNqX50nN9ldZ12LundxrGNS2n9vR8tbQvaZulKS1359kZM7LHQ990SPbYG6VjLE219rE0tHB531K/0rDFpfbqIYjX9bWl56qPOb2n533m/Iq+pW2UzmVpfdWvTX3Sa5csWZI9vu0d74q7f39P9pj6/+x/ft5p3SXdvU8w0AnyAQAAAAAAAACwzmbPmRsP/fnhmDhxQt7SN2k43ueeeTzOPvOj2ZTmN9awu1de9aPsMW0zTdf+9Mdx5jnndhvmu/e+P8TECRNi5MjeDR2bAmufPf/z2TC8pe2kan4p2FYdWEtBxrT+1OeJRx+Kaa/ZL/7t81+MM876eJz/2U9n7Wk9t952e6d9XJ/X9lbaxhU/uDKuv/Yn2fpK56tW8C4NrZuG2E3bPOSNB7cf/7H/eHS87sADstdUhzX/95Zbs/3eZ++98hbYfAjyAQAAAAAAAAAMAFttOTqWv7wy/vrk0/G352flrUVtbW0x47nn48mnn22fUr/UP71uQ6iu3LauVfaSFBYrrad8mnbgQXHX3ffkvfput6lTYvoRh+dLxVDhxV+/KK674cZ13tdy6Rzc/8CDcekl36wYhjdtM4UWr7v+xqz6XcmbDjm4fXjiFIQ76sgjsmp2RxceS69Pj4e98x1ZFcT+em1vpW184pyzsvUnKXB3/HHHZgHCvihVM7zzrruzxySd7xTuSyG/0vphcyLIBwAAAAAAAAAwALx6nz1j9erV8Y1LL48Lv/qtePDhR7P2tWvXxje/fUV86ev/GV+95LL2KfVL/dPrNoQUGrv15hvaK7etjxSuS+upnh66/74sXLau3nDQ6/O5Dqmy4IIFC2NxU1Pesu4eeeTR2Kmwvgk77pC3dEjbTpUMU0XDkhQkLK9E2NjYGHvusXuvqh2uz2t7q3obKXC3/fbbxbx5L/YpGJjWkdZVHihclyGLYSAR5AMAAAAAAAAAGAD++dgj44wPfyB2n7pLtrxy5apisO8/L4+/PvF0TH7VTnH4YW9vn97zrv+X9U+vK9fa1hYNDQ35Us/GNDbG+PHjYtas2XnLwLbzTjvFrNmzs/Pbk+dfeCGfo1p1kDFV9asOCsLmRJAPAAAAAAAAAGAAGDJkcLx67z1itynFIN/LK1fF1771/XjqmZmxy6Sd45zTT4kj3vX/sulthx4cb3jd/ln/9LqFi5riku/+ML7yzW9H05KlMWWXV2Xr6I1a1dXqJVWhGzduXL607lIwMQUUa9l3332yin2lCnLdSaG/V7KRI0fExAn9V7GvL9KwvNNes19WtbA0rG6tComwuRDkAwAAAAAAAAAYQIYPG5o9/vwXt8TMv72QVeI7+/87OUaMGJ61Jz/88f/Ep/7t3+MP9z+ULT/59LPxl8eeiGdm/C0m7Twx3vWOt2btvfUP7zosq6522y9/lbfUz8KFC6OpaljcFBZ7/Ikn86UOqQpctdSWwm0p5FZLGjL4sHe+Iy659NtZAK07aVjb6uFzS9J2UpCt1rC7G1t15cC0v2m/N6Q0LO/rDjwgC4De+svbs3Oewn2wuRLkAwAAAAAAAAAYQF6z797RuM3WsXZtS80QX/L2Qw+OwYMGxeVX/aQ9zJekIXc/84mPxr577Z639E4Kt114wefizHPOzQJu1Xoz7G6qXpeqsvUUjutOCsWlcFx5yO7ZGTPje9+/Ipuv9o2Lv5Vts+SGG2/K2o468ogsaNaVU0/+YBY8O/7E92frL5eWv/TvX82qE6ZKhSn0d/oZZ1X0S9u59bbb46QPvr/b7WxopTBd+XlI+33FD66sGXxcF6myYRqpOYUpq6Xqhi8Uro10LtJ+1PNcQL0J8gEAAAAAAAAADCDbbzc+vvJvn4xPnfWR+MQZH6pZWW7P3afEaSefGA0NDVmY7/4H17/6WgqtPfHoQzFv3osxacqeFVMK+J1x+mnZMLxdOfRNh2SP0w48KN73gZPXKdCXgmCfOOesbD6tJ207hdK+dtGXY889OocTr77y8rju+hvb9zMF/u64/ZbsWLqTtvOlL1yQhRff9o53tb8+TWl5rz32aA+lpeP+0CknVfS77oYb45qrr8wCkPU2/YjD4+wzPxrHvPeEbN+OPOa4OOH44+L4447Ne6yf9J4fNf2I7BpI608hxpJ0/AcesH9WRTGF+mBz1jBv/sK2fB4AAAAAAAAAYLPT1lYZnSgtp4dUSSwtt/cpNmTLrS2t0RptUWiJ1ta2aGlrjTXNLbHX1PqHs3rrob88Ft++/Or24zvlX46LvztgWjYPG0OpgmMKPMLmTEU+AAAAAAAAAIDN1LRX7x2nvv+fsgp97/uno+N1r31N/gxseGm44TSs7hsOen3eApsvFfkAAAAAAAAAgM1ae7W9XGk5PQz0inxQT6kaXxqK+XOf+df2oYhhc6UiHwAAAAAAAAAAsNGkAN+kKXsK8UEZFfkAAAAAAAAAgM2ainwA1JuKfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQR4J8AAAAAAAAAAAAUEeCfAAAAAAAAAAAAFBHgnwAAAAAAAAAAABQRw3z5i9sy+cBAAAAAAAAADY7bW2V0YnScnpoaCgut/cpNmTLrS2t0RptUWiJ1ta2aGlrjTXNLbHX1MnFvv1k5qwX8zkAXkkmT9wun1t/gnwAAAAAAAAAwGbtlR7kA2DgM7QuAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANSRIB8AAAAAAAAAAADUkSAfAAAAAAAAAAAA1JEgHwAAAAAAAAAAANRRw7z5C9vyeQAAAAAAAACAzU5bW2V0orScHhoaisvtfYoN2XJrS2u0RlsUWqK1tS1a2lpjTXNL7DV1crFvHT3+5DPxm7vujRUvv5wtNxT2+81vPCgO3P/V2TIArywq8gEAAAAAAAAADCBPPv1sfP3S78dDf3ksnnpmZjY9+fSMwvKjeQ8AXmlU5AMAAAAAAAAANmsDrSLf//7yN3H9zb+Mtx76hnjtfvsUGwv7PWnniTF82LDiMgCvKCryAQAAAAAAAAAMIGtbWrLHV02cELtP3bU4Tdllg4f4mpqWxPs+cHJMmrJn+3TYu6fHszNmZs+nx7T8wJ8ezJYB6CDIBwAAAAAAAACwGXpp+Yr42Cf/La685tpobW3NW9dNCudNO/CgOOP00+K5Zx5vn44+anreY+BIgcQT339ye0ARoD8I8gEAAAAAAAAAbIaGDB4cW221Zfz+vvvjsiuviZZ1DPOtWrUqrrv+xjj7zI/GAa/dP28tOvmD749ddykONZweb735hk59ABDkAwAAAAAAAADYLI0cOSLO/diHY9txY+OBhx6J717xo3UK861cuSpmzZ4dO++0U94CQF8J8gEAAAAAAAAAbKa2HD0qPnnWR7Iw30N/eSwuvey/oqWlJX+2dxobt8mq7F13w43R1LQkb+0sDUV72LunZ8Pwlrvhxpti0pQ926drfvKzOO8z58cll3477xHZfJpK6yj1Ta/tjbTN8m2kdZQPjZv2+30fOLnT+lK1wdK+lObf9o53xd2/vyd77Ms+AHRHkA8AAAAAAAAAYID7y2NPxIfPOi9O/ugnO03nfPoLMX/hoqzfI4V+/3PDLdl8X5x4wvHZ47QDD+pTsC0F5FIA8KH774vnnnk8nnj0oXj00ceyMF+1b1z8rbjiB1fG9df+JOt77U9/HGeec26nYGC1tI3Pnv/5uOP2W7LXpelDp5yUBfF6em25ESNGxJe+cEG2nkPeeHD7+qYfcXjeA2DdCfIBAAAAAAAAAGwG2trymQ0gVeW76oeXx9lnfjQL1/WmUl2qiHf/Aw/G+Z/9dPb6JIXlPnHOWfGmQw7OlsultvRc6pPss/decfxxx8a99/0hW66ltI1LL/lm7LrL5Lw1svBd2tfrrr8xq7QHUG+CfAAAAAAAAAAAA9yr994jvnfxl+Lyb/17p+nrX/xMNrRusm+h3z9Of1c2vy7OOP20rEpdKdCXquF15ZFHHo2GhogxjY15S9HIkSNi4oQJ+VKHNHxvKfCXpEDf9ttvF/PmvdhlGC9tY6eJE2LCjjvkLR3ecNDr46E/Pxyz58zNWwDqR5APAAAAAAAAAGAz9dLyFfHv3/xONrTutFfvHaef+i8xePDg/Nl1lwJ9aejbNBxuV8PXPv/CC1lgLwX3NpS0DYBNgSAfAAAAAAAAAMBmaO3atXHRxd/NQnwHTNs3PnzSP8fgQf0XJenN0Lcb2s477ZTPda+rKoAAG4sgHwAAAAAAAADAZmj1mjWxdNlL8XcHvCZOff/x/RriK9dVmK6roW3TcmrvDxMnTuhy+NwUMJz2mv0qht2truDXn/sC0B1BPgAAAAAAAACAzdCoLbaISy76tzjlX/4pBq1HiK+paUmc95nzs8dyl13+g5g1e3Yc+qZD8pZKqWJfCtJdcOEX21+7atWquOIHV8bjTzyZLa+vA167fxz2znfE6WecFc/OmJm3Rtxw401x6223x0kffH+MGDEim1534AEVQwF3tS9jGhujoSHikUcezVsA1p8gHwAAAAAAAADAADJ82LDsceWq1dnjxpACe9MOPCgmTdmzfZo378W47DuXRmPjNnmvSik897nP/Gs2pG3ptUcec1yccPxx2ZC8/eWM00+LD51yUrztHe9q37frbrgxrrn6yth1l8l5r4jpRxweZ5/50TjmvSd0uy/peI6afkScec65Wb8UCgRYXw3z5i9sy+cBAAAAAAAAADY7bW2V0YnScnpIldfScnufYkO23NrSGq3RFoWWaG1ti5a21ljT3BJ7Te0Ih9XDC7PnxgVfuThf6vDOtx8axxzxrnzplStVwvv8F76cVchL4TqAzYGKfAAAAAAAAAAAA8hOE3aI9x9/TOy3716x25TJ2bT71F3iVTtNzHu8ss2eMzce+vPDMXHihLwFYOBTkQ8AAAAAAAAA2KwNtIp8m4qmpiVx9Y+viVNP/mA2zG6p7WNnfzwOeO3+2ZC4AJsLFfkAAAAAAAAAANjoRo4cEfPmvRh77DMtJk3ZM5umHXhQHDX9CCE+YLOjIh8AAAAAAAAAsFlTkQ+AelORDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAAAA6kiQDwAAAAAAAAAAAOpIkA8AAAAAAAAAAADqSJAPAAAAAAAAAP7/du2YAAAAAGGQ/VMbYw/kAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAQiIfAAAAAAAAAAAAhEQ+AAAAAAAAAAAACIl8AAAAAAAAAAAAEBL5AAAAAAAAAAAAICTyAQAAAAAAAAAAQEjkAwAAAAAAAAAAgJDIBwAAAAAAAAAAACGRDwAAAAAAAAAAAEIiHwAAAAAAAAAAAIREPgAAAAAAAAAAAAiJfAAAAAAAAAAAABAS+QAAAAAAAAAAACAk8gEAAAAAAAAAAEBI5AMAAAAAAAAAAICQyAcAAAAAAAAAAAAhkQ8AAAAAAAAAAABCIh8AAAAAAAAAAACERD4AAAAAAAAAAAAIiXwAAAAAAAAAAAAQEvkAAAAAAAAAAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAQiIfAAAAAAAAAAAAhEQ+AAAAAAAAAAAACIl8AAAAAAAAAAAAEBL5AAAAAAAAAAAAICTyAQAAAAAAAAAAQEjkAwAAAAAAAAAAgJDIBwAAAAAAAAAAACGRDwAAAAAAAAAAAEIiHwAAAAAAAAAAAIREPgAAAAAAAAAAAAiJfAAAAAAAAAAAABAS+QAAAAAAAAAAACAk8gEAAAAAAAAAAEBI5AMAAAAAAAAAAICQyAcAAAAAAAAAAAAhkQ8AAAAAAAAAAABCIh8AAAAAAAAAAACERD4AAAAAAAAAAAAIiXwAAAAAAAAAAAAQEvkAAAAAAAAAAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAQiIfAAAAAAAAAAAAhEQ+AAAAAAAAAAAACIl8AAAAAAAAAAAAEBL5AAAAAAAAAAAAICTyAQAAAAAAAAAAQEjkAwAAAAAAAAAAgJDIBwAAAAAAAAAAACGRDwAAAAAAAAAAAEIiHwAAAAAAAAAAAIREPgAAAAAAAAAAAAiJfAAAAAAAAAAAABAS+QAAAAAAAAAAACAk8gEAAAAAAAAAAEBI5AMAAAAAAAAAAICQyAcAAAAAAAAAAAAhkQ8AAAAAAAAAAABCIh8AAAAAAAAAAACERD4AAAAAAAAAAAAIiXwAAAAAAAAAAAAQEvkAAAAAAAAAAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAQiIfAAAAAAAAAAAAhEQ+AAAAAAAAAAAACIl8AAAAAAAAAAAAEBL5AAAAAAAAAAAAICTyAQAAAAAAAAAAQEjkAwAAAAAAAAAAgJDIBwAAAAAAAAAAACGRDwAAAAAAAAAAAEIiHwAAAAAAAAAAAIREPgAAAAAAAAAAAAiJfAAAAAAAAAAAABAS+QAAAAAAAAAAACAk8gEAAAAAAAAAAEBI5AMAAAAAAAAAAICQyAcAAAAAAAAAAAAhkQ8AAAAAAAAAAABCIh8AAAAAAAAAAACERD4AAAAAAAAAAAAIiXwAAAAAAAAAAAAQEvkAAAAAAAAAAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAQiIfAAAAAAAAAAAAhEQ+AAAAAAAAAAAACIl8AAAAAAAAAAAAEBL5AAAAAAAAAAAAICTyAQAAAAAAAAAAQEjkAwAAAAAAAAAAgJDIBwAAAAAAAAAAACGRDwAAAAAAAAAAAEIiHwAAAAAAAAAAAIREPgAAAAAAAAAAAAiJfAAAAAAAAAAAABAS+QAAAAAAAAAAACAk8gEAAAAAAAAAAEBI5AMAAAAAAAAAAICQyAcAAAAAAAAAAAAhkQ8AAAAAAAAAAABCIh8AAAAAAAAAAACERD4AAAAAAAAAAAAIiXwAAAAAAAAAAAAQEvkAAAAAAAAAAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAQiIfAAAAAAAAAAAAhEQ+AAAAAAAAAAAACIl8AAAAAAAAAAAAEBL5AAAAAAAAAAAAICTyAQAAAAAAAAAAQEjkAwAAAAAAAAAAgJDIBwAAAAAAAAAAACGRDwAAAAAAAAAAAEIiHwAAAAAAAAAAAIREPgAAAAAAAAAAAAiJfAAAAAAAAAAAABAS+QAAAAAAAAAAACAk8gEAAAAAAAAAAEBI5AMAAAAAAAAAAICQyAcAAAAAAAAAAAAhkQ8AAAAAAAAAAABCIh8AAAAAAAAAAACERD4AAAAAAAAAAAAIiXwAAAAAAAAAAAAQEvkAAAAAAAAAAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAQiIfAAAAAAAAAAAAhEQ+AAAAAAAAAAAACIl8AAAAAAAAAAAAEBL5AAAAAAAAAAAAICTyAQAAAAAAAAAAQEjkAwAAAAAAAAAAgJDIBwAAAAAAAAAAACGRDwAAAAAAAAAAAEIiHwAAAAAAAAAAAIREPgAAAAAAAAAAAAiJfAAAAAAAAAAAABAS+QAAAAAAAAAAACAk8gEAAAAAAAAAAEBI5AMAAAAAAAAAAICQyAcAAAAAAAAAAAAhkQ8AAAAAAAAAAABCIh8AAAAAAAAAAACERD4AAAAAAAAAAAAIiXwAAAAAAAAAAAAQEvkAAAAAAAAAAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAQiIfAAAAAAAAAAAAhEQ+AAAAAAAAAAAACIl8AAAAAAAAAAAAEBL5AAAAAAAAAAAAICTyAQAAAAAAAAAAQEjkAwAAAAAAAAAAgJDIBwAAAAAAAAAAACGRDwAAAAAAAAAAAEIiHwAAAAAAAAAAAIREPgAAAAAAAAAAAAiJfAAAAAAAAAAAABAS+QAAAAAAAAAAACAk8gEAAAAAAAAAAEBI5AMAAAAAAAAAAICQyAcAAAAAAAAAAAAhkQ8AAAAAAAAAAABCIh8AAAAAAAAAAACERD4AAAAAAAAAAAAIiXwAAAAAAAAAAAAQEvkAAAAAAAAAAAAgJPIBAAAAAAAAAABASOQDAAAAAAAAAACAkMgHAAAAAAAAAAAAIZEPAAAAAAAAAAAAMtsBdn3X7Hz3C0QAAAAASUVORK5CYII="
  },
  {
    "path": "src/agents-api/tests/sample_tasks/simple_multi_step.yaml",
    "content": "name: Simple multi step task\n\ninput_schema:\n  type: object\n  properties:\n    topics:\n      type: array\n      items:\n        type: string\n\nmain:\n  - foreach:\n      in: _[\"topics\"]\n      do:\n        prompt:\n          - role: system\n            content: |-\n              Generate a list of 10 questions for the topic {{_}} as valid yaml.\n\n  - log: _\n\n  - evaluate:\n      result: '[item[\"choices\"][0][\"message\"].content.strip() for item in _]'\n"
  },
  {
    "path": "src/agents-api/tests/sample_tasks/simple_parameter_extractor.yaml",
    "content": "# Test with this screenshot url: https://i.ibb.co/1GHwH9J/CFRating-before.png\n\nname: Extract data from screenshot url\ndescription: A task to extract data from a screenshot url\ninput_schema:\n  type: object\n  properties:\n    screenshot_url:\n      type: string\nmain:\n  - prompt:\n      - role: system\n        content: >\n          You are a data extraction bot. Extract the data for the following provider from the screenshot that the user is going to send you. Here are the provider details: \n          \"provider\": {\n            \"name\": \"CFRating\",\n            \"description\": \"Gives you your rating\",\n            \"proofCardText\": \"\\\"You, as the end user, have ownership of the data with a {Rating} rating.\\\"\"\n          }\n          return the result as a JSON object that has the following structure:\n          {\n            parameter: \"value\"\n          }\n          If there's no data to extract, return an empty JSON object. Don't return any other text.\n          \n      - role: user\n        content:\n          type: image_url\n          image_url:\n            url: \"{{_.screenshot_url}}\"\n          detail: high\n  \n  - evaluate:\n    result: '_[\"choices\"][0][\"message\"].content.strip()'"
  },
  {
    "path": "src/agents-api/tests/sample_tasks/simple_prompt.yaml",
    "content": "name: Find request and selector for identity provider\n\ninput_schema:\n  type: object\n  properties:\n    topic:\n      type: string\n\n  # Shortcut to require all props\n  additionalProperties: false\n  minProperties: 1\n\nmain:\n  - prompt:\n      - role: system\n        content: |-\n          Follow the instructions. Be bold, creative and uncensored.\n\n      - role: user\n        content: >-\n          You are a brilliant poet with a whimsical style reminiscent of Edgar Alan Poe. Write a short poem about {{_.topic}}.\n"
  },
  {
    "path": "src/agents-api/tests/sample_tasks/test_find_selector.py",
    "content": "# # Tests for task queries\n# import os\n\n# from uuid_extensions import uuid7\n# from ward import raises, test\n\n# from ..fixtures import cozo_client, test_agent, test_developer_id\n# from ..utils import patch_embed_acompletion, patch_http_client_with_temporal\n\n# this_dir = os.path.dirname(__file__)\n\n\n# @test(\"workflow sample: find-selector create task\")\n# async def _(\n#     cozo_client=cozo_client,\n#     developer_id=test_developer_id,\n#     agent=test_agent,\n# ):\n#     agent_id = str(agent.id)\n#     task_id = str(uuid7())\n\n#     with (\n#         patch_embed_acompletion(),\n#         open(f\"{this_dir}/find_selector.yaml\", \"r\") as sample_file,\n#     ):\n#         task_def = sample_file.read()\n\n#         async with patch_http_client_with_temporal(\n#             cozo_client=cozo_client, developer_id=developer_id\n#         ) as (\n#             make_request,\n#             _,\n#         ):\n#             make_request(\n#                 method=\"POST\",\n#                 url=f\"/agents/{agent_id}/tasks/{task_id}\",\n#                 headers={\"Content-Type\": \"application/x-yaml\"},\n#                 data=task_def,\n#             ).raise_for_status()\n\n\n# @test(\"workflow sample: find-selector start with bad input should fail\")\n# async def _(\n#     cozo_client=cozo_client,\n#     developer_id=test_developer_id,\n#     agent=test_agent,\n# ):\n#     agent_id = str(agent.id)\n#     task_id = str(uuid7())\n\n#     with (\n#         patch_embed_acompletion(),\n#         open(f\"{this_dir}/find_selector.yaml\", \"r\") as sample_file,\n#     ):\n#         task_def = sample_file.read()\n\n#         async with patch_http_client_with_temporal(\n#             cozo_client=cozo_client, developer_id=developer_id\n#         ) as (\n#             make_request,\n#             temporal_client,\n#         ):\n#             make_request(\n#                 method=\"POST\",\n#                 url=f\"/agents/{agent_id}/tasks/{task_id}\",\n#                 headers={\"Content-Type\": \"application/x-yaml\"},\n#                 data=task_def,\n#             ).raise_for_status()\n\n#             execution_data = dict(input={\"test\": \"input\"})\n\n#             with raises(BaseException):\n#                 make_request(\n#                     method=\"POST\",\n#                     url=f\"/tasks/{task_id}/executions\",\n#                     json=execution_data,\n#                 ).raise_for_status()\n\n\n# @test(\"workflow sample: find-selector start with correct input\")\n# async def _(\n#     cozo_client=cozo_client,\n#     developer_id=test_developer_id,\n#     agent=test_agent,\n# ):\n#     agent_id = str(agent.id)\n#     task_id = str(uuid7())\n\n#     with (\n#         patch_embed_acompletion(\n#             output={\"role\": \"assistant\", \"content\": \"found: true\\nvalue: 'Gaga'\"}\n#         ),\n#         open(f\"{this_dir}/find_selector.yaml\", \"r\") as sample_file,\n#     ):\n#         task_def = sample_file.read()\n\n#         async with patch_http_client_with_temporal(\n#             cozo_client=cozo_client, developer_id=developer_id\n#         ) as (\n#             make_request,\n#             temporal_client,\n#         ):\n#             make_request(\n#                 method=\"POST\",\n#                 url=f\"/agents/{agent_id}/tasks/{task_id}\",\n#                 headers={\"Content-Type\": \"application/x-yaml\"},\n#                 data=task_def,\n#             ).raise_for_status()\n\n#             input = dict(\n#                 screenshot_base64=\"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA\",\n#                 network_requests=[{\"request\": {}, \"response\": {\"body\": \"Lady Gaga\"}}],\n#                 parameters=[\"name\"],\n#             )\n#             execution_data = dict(input=input)\n\n#             execution_created = make_request(\n#                 method=\"POST\",\n#                 url=f\"/tasks/{task_id}/executions\",\n#                 json=execution_data,\n#             ).json()\n\n#             handle = temporal_client.get_workflow_handle(execution_created[\"jobs\"][0])\n\n#             await handle.result()\n"
  },
  {
    "path": "src/agents-api/tests/test_activities.py",
    "content": "from agents_api.clients import temporal\nfrom agents_api.env import temporal_task_queue\nfrom agents_api.workflows.demo import DemoWorkflow\nfrom agents_api.workflows.task_execution.helpers import DEFAULT_RETRY_POLICY\nfrom uuid_extensions import uuid7\nfrom ward import test\n\nfrom .utils import patch_testing_temporal\n\n\n@test(\"activity: call demo workflow via temporal client\")\nasync def _():\n    async with patch_testing_temporal() as (_, mock_get_client):\n        client = await temporal.get_client()\n\n        result = await client.execute_workflow(\n            DemoWorkflow.run,\n            args=[1, 2],\n            id=str(uuid7()),\n            task_queue=temporal_task_queue,\n            retry_policy=DEFAULT_RETRY_POLICY,\n        )\n\n        assert result == 3\n        mock_get_client.assert_called_once()\n"
  },
  {
    "path": "src/agents-api/tests/test_activities_utils.py",
    "content": "from unittest.mock import MagicMock, patch\n\nimport markdown2\nimport markdownify\nfrom agents_api.common.utils.evaluator import get_evaluator\nfrom ward import test\n\n\n@test(\"evaluator: csv reader\")\ndef _():\n    e = get_evaluator({})\n    result = e.eval('[r for r in csv.reader(\"a,b,c\\\\n1,2,3\")]')\n    assert result == [[\"a\", \"b\", \"c\"], [\"1\", \"2\", \"3\"]]\n\n\n@test(\"evaluator: csv writer\")\ndef _():\n    e = get_evaluator({})\n    result = e.eval('csv.writer(\"a,b,c\\\\n1,2,3\").writerow([\"4\", \"5\", \"6\"])')\n    # at least no exceptions\n    assert result == 7\n\n\n@test(\"evaluator: humanize_text_alpha\")\ndef _():\n    with (\n        patch(\"requests.post\") as mock_requests_post,\n        patch(\"litellm.completion\") as mock_litellm_completion,\n        patch(\"deep_translator.GoogleTranslator.translate\") as mock_deep_translator,\n    ):\n        mock_resp = MagicMock()\n        mock_resp.raise_for_status.return_value = None\n        mock_resp.json.return_value = {\"probability\": 0.4}\n        mock_requests_post.return_value = mock_resp\n\n        mock_litellm_completion.return_value = MagicMock(\n            choices=[\n                MagicMock(\n                    message=MagicMock(content=\"Mock LLM Response (humanized text from LLM)\"),\n                ),\n            ],\n        )\n\n        mock_deep_translator.return_value = \"Mock translated text\"\n\n        evaluator = get_evaluator({})\n\n        result = evaluator.eval('humanize_text_alpha(\"Hello, World!\", threshold=60)')\n\n        assert mock_requests_post.called, \"Expected requests.post call\"\n        assert mock_litellm_completion.called, \"Expected litellm.completion call\"\n        assert mock_deep_translator.called, \"Expected GoogleTranslator.translate call\"\n\n        assert isinstance(result, str) and len(result) > 0, (\n            \"Expected a non-empty string response\"\n        )\n\n\n@test(\"evaluator: html_to_markdown\")\ndef _():\n    e = get_evaluator({})\n    html = '<b>Yay</b> <a href=\"http://github.com\">GitHub</a>'\n    result = e.eval(f\"\"\"html_to_markdown('{html}')\"\"\")\n    markdown = markdownify.markdownify(html)\n    assert result == markdown\n\n\n@test(\"evaluator: markdown_to_html\")\ndef _():\n    e = get_evaluator({})\n    markdown = \"**Yay** [GitHub](http://github.com)\"\n    result = e.eval(f\"\"\"markdown_to_html('{markdown}')\"\"\")\n    markdowner = markdown2.Markdown()\n    html = markdowner.convert(markdown)\n    assert result == html\n\n\n@test(\"evaluator: safe_extract_json basic\")\ndef _():\n    e = get_evaluator({})\n    result = e.eval('extract_json(\"\"\"```json {\"pp\": \"\\thello\"}```\"\"\")')\n    assert result == {\"pp\": \"\\thello\"}\n\n\n@test(\"safe_extract_json with various code block formats\")\ndef test_safe_extract_json_formats():\n    from agents_api.common.utils.evaluator import safe_extract_json\n\n    # Test with ```json format\n    json_block = \"\"\"```json\n    {\"key\": \"value\", \"num\": 123}\n    ```\"\"\"\n    result = safe_extract_json(json_block)\n    assert result == {\"key\": \"value\", \"num\": 123}\n\n    # Test with plain ``` format containing JSON\n    plain_block = \"\"\"```\n    {\"key\": \"value\", \"num\": 123}\n    ```\"\"\"\n    result = safe_extract_json(plain_block)\n    assert result == {\"key\": \"value\", \"num\": 123}\n\n    # Test with no code block, just JSON\n    plain_json = \"\"\"{\"key\": \"value\", \"num\": 123}\"\"\"\n    result = safe_extract_json(plain_json)\n    assert result == {\"key\": \"value\", \"num\": 123}\n\n    # Test with nested JSON structure\n    nested_json = \"\"\"```json\n    {\n        \"name\": \"test\",\n        \"data\": {\n            \"items\": [1, 2, 3],\n            \"config\": {\"enabled\": true}\n        }\n    }\n    ```\"\"\"\n    result = safe_extract_json(nested_json)\n    assert result[\"name\"] == \"test\"\n    assert result[\"data\"][\"items\"] == [1, 2, 3]\n    assert result[\"data\"][\"config\"][\"enabled\"] is True\n\n\n@test(\"safe_extract_json handles marker validation correctly\")\ndef test_safe_extract_json_validation():\n    from agents_api.common.utils.evaluator import safe_extract_json\n\n    # Test invalid start marker validation for ```json format\n    invalid_json_marker = \"\"\"``json\n    {\"key\": \"value\"}\n    ```\"\"\"\n    try:\n        safe_extract_json(invalid_json_marker)\n        assert False, \"Expected ValueError was not raised\"\n    except ValueError as e:\n        assert \"Code block has invalid or missing markers\" in str(e)\n\n    # Test invalid start marker validation for plain ``` format\n    invalid_plain_marker = \"\"\"``\n    {\"key\": \"value\"}\n    ```\"\"\"\n    try:\n        safe_extract_json(invalid_plain_marker)\n        assert False, \"Expected ValueError was not raised\"\n    except ValueError as e:\n        assert \"Code block has invalid or missing markers\" in str(e)\n\n    # Test missing end marker validation\n    missing_end_marker = \"\"\"```json\n    {\"key\": \"value\"}\"\"\"\n    try:\n        safe_extract_json(missing_end_marker)\n        assert False, \"Expected ValueError was not raised\"\n    except ValueError as e:\n        assert \"Code block has invalid or missing markers\" in str(e)\n\n    # Test with malformed JSON\n    malformed_json = \"\"\"```json\n    {\"key\": \"value\", \"missing\": }\n    ```\"\"\"\n    try:\n        safe_extract_json(malformed_json)\n        assert False, \"Expected ValueError was not raised\"\n    except ValueError as e:\n        assert \"Failed to parse JSON\" in str(e)\n"
  },
  {
    "path": "src/agents-api/tests/test_agent_metadata_filtering.py",
    "content": "\"\"\"\nTests for secure metadata filtering in agent queries\n\"\"\"\n\nfrom agents_api.autogen.openapi_model import CreateAgentRequest\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.agents.create_agent import create_agent\nfrom agents_api.queries.agents.list_agents import list_agents\nfrom ward import test\n\nfrom .fixtures import pg_dsn, test_developer_id\n\n\n@test(\"query: list_agents with metadata filtering\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that list_agents correctly filters by metadata.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create test agents with different metadata\n    agent1 = await create_agent(\n        developer_id=developer_id,\n        data=CreateAgentRequest(\n            name=\"Test Agent 1\",\n            about=\"Test agent with specific metadata\",\n            model=\"gpt-4o-mini\",\n            metadata={\"filter_key\": \"filter_value\", \"shared\": \"common\"},\n        ),\n        connection_pool=pool,\n    )\n\n    agent2 = await create_agent(\n        developer_id=developer_id,\n        data=CreateAgentRequest(\n            name=\"Test Agent 2\",\n            about=\"Test agent with different metadata\",\n            model=\"gpt-4o-mini\",\n            metadata={\"other_key\": \"other_value\", \"shared\": \"common\"},\n        ),\n        connection_pool=pool,\n    )\n\n    # List agents with specific metadata filter\n    agents_filtered = await list_agents(\n        developer_id=developer_id,\n        metadata_filter={\"filter_key\": \"filter_value\"},\n        connection_pool=pool,\n    )\n\n    # Verify correct filtering\n    assert len(agents_filtered) >= 1\n    assert any(a.id == agent1.id for a in agents_filtered)\n    assert not any(a.id == agent2.id for a in agents_filtered)\n\n    # List agents with shared metadata\n    agents_shared = await list_agents(\n        developer_id=developer_id,\n        metadata_filter={\"shared\": \"common\"},\n        connection_pool=pool,\n    )\n\n    # Verify both agents are returned\n    assert len(agents_shared) >= 2\n    assert any(a.id == agent1.id for a in agents_shared)\n    assert any(a.id == agent2.id for a in agents_shared)\n\n\n@test(\"query: list_agents with SQL injection attempt in metadata filter\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that list_agents safely handles metadata filters with SQL injection attempts.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a test agent with normal metadata\n    agent_normal = await create_agent(\n        developer_id=developer_id,\n        data=CreateAgentRequest(\n            name=\"Normal Agent\",\n            about=\"Agent with normal metadata\",\n            model=\"gpt-4o-mini\",\n            metadata={\"test_key\": \"test_value\"},\n        ),\n        connection_pool=pool,\n    )\n\n    # Create a test agent with special characters in metadata\n    agent_special = await create_agent(\n        developer_id=developer_id,\n        data=CreateAgentRequest(\n            name=\"Special Agent\",\n            about=\"Agent with special metadata\",\n            model=\"gpt-4o-mini\",\n            metadata={\"special' SELECT * FROM agents--\": \"special_value\"},\n        ),\n        connection_pool=pool,\n    )\n\n    # Attempt normal metadata filtering\n    agents_normal = await list_agents(\n        developer_id=developer_id,\n        metadata_filter={\"test_key\": \"test_value\"},\n        connection_pool=pool,\n    )\n\n    # Verify normal filtering works\n    assert any(a.id == agent_normal.id for a in agents_normal)\n    assert not any(a.id == agent_special.id for a in agents_normal)\n\n    # Attempt filtering with SQL injection attempts\n    injection_filters = [\n        {\"key' OR 1=1--\": \"value\"},  # SQL injection in key\n        {\"key\": \"1' OR '1'='1\"},  # SQL injection in value\n        {\"key' DROP TABLE agents--\": \"value\"},  # Command injection in key\n    ]\n\n    for injection_filter in injection_filters:\n        # These should safely execute without error\n        agents_injection = await list_agents(\n            developer_id=developer_id,\n            metadata_filter=injection_filter,\n            connection_pool=pool,\n        )\n\n        # Should not return all agents (which would happen if injection succeeded)\n        assert len(agents_injection) == 0, (\n            f\"Should not match any agents with injection filter: {injection_filter}\"\n        )\n\n    # Test for agent with special characters in metadata\n    agents_special = await list_agents(\n        developer_id=developer_id,\n        metadata_filter={\"special' SELECT * FROM agents--\": \"special_value\"},\n        connection_pool=pool,\n    )\n\n    # Verify exact matching works for special characters too (if using JSONB containment operator)\n    assert len(agents_special) >= 1\n    assert any(a.id == agent_special.id for a in agents_special)\n    assert not any(a.id == agent_normal.id for a in agents_special)\n"
  },
  {
    "path": "src/agents-api/tests/test_agent_queries.py",
    "content": "# Tests for agent queries\n\nfrom agents_api.autogen.openapi_model import (\n    Agent,\n    CreateAgentRequest,\n    CreateOrUpdateAgentRequest,\n    PatchAgentRequest,\n    ResourceDeletedResponse,\n    UpdateAgentRequest,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.agents import (\n    create_agent,\n    create_or_update_agent,\n    delete_agent,\n    get_agent,\n    list_agents,\n    patch_agent,\n    update_agent,\n)\nfrom fastapi import HTTPException\nfrom uuid_extensions import uuid7\nfrom ward import raises, test\n\nfrom tests.fixtures import pg_dsn, test_agent, test_developer_id, test_project\n\n\n@test(\"query: create agent sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that an agent can be successfully created.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    await create_agent(\n        developer_id=developer_id,\n        data=CreateAgentRequest(\n            name=\"test agent\",\n            about=\"test agent about\",\n            model=\"gpt-4o-mini\",\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n\n@test(\"query: create agent with project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project):\n    \"\"\"Test that an agent can be successfully created with a project.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await create_agent(\n        developer_id=developer_id,\n        data=CreateAgentRequest(\n            name=\"test agent with project\",\n            about=\"test agent about\",\n            model=\"gpt-4o-mini\",\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result.project == project.canonical_name\n\n\n@test(\"query: create agent with invalid project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that creating an agent with an invalid project raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc:\n        await create_agent(\n            developer_id=developer_id,\n            data=CreateAgentRequest(\n                name=\"test agent with invalid project\",\n                about=\"test agent about\",\n                model=\"gpt-4o-mini\",\n                project=\"invalid_project\",\n            ),\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 404\n    assert \"Project 'invalid_project' not found\" in exc.raised.detail\n\n\n@test(\"query: create or update agent sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that an agent can be successfully created or updated.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    await create_or_update_agent(\n        developer_id=developer_id,\n        agent_id=uuid7(),\n        data=CreateOrUpdateAgentRequest(\n            name=\"test agent\",\n            canonical_name=\"test_agent2\",\n            about=\"test agent about\",\n            model=\"gpt-4o-mini\",\n            instructions=[\"test instruction\"],\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n\n@test(\"query: create or update agent with project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project):\n    \"\"\"Test that an agent can be successfully created or updated with a project.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await create_or_update_agent(\n        developer_id=developer_id,\n        agent_id=uuid7(),\n        data=CreateOrUpdateAgentRequest(\n            name=\"test agent\",\n            canonical_name=\"test_agent_with_project\",\n            about=\"test agent about\",\n            model=\"gpt-4o-mini\",\n            instructions=[\"test instruction\"],\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result.project == project.canonical_name\n\n\n@test(\"query: update agent sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that an existing agent's information can be successfully updated.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await update_agent(\n        agent_id=agent.id,\n        developer_id=developer_id,\n        data=UpdateAgentRequest(\n            name=\"updated agent\",\n            about=\"updated agent about\",\n            model=\"gpt-4o-mini\",\n            default_settings={\"temperature\": 1.0},\n            metadata={\"hello\": \"world\"},\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Agent)\n    assert result.name == \"updated agent\"\n    assert result.about == \"updated agent about\"\n    assert result.model == \"gpt-4o-mini\"\n    assert result.default_settings[\"temperature\"] == 1.0\n    assert result.metadata == {\"hello\": \"world\"}\n\n\n@test(\"query: update agent with project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, project=test_project):\n    \"\"\"Test that an existing agent's information can be successfully updated with a project.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await update_agent(\n        agent_id=agent.id,\n        developer_id=developer_id,\n        data=UpdateAgentRequest(\n            name=\"updated agent with project\",\n            about=\"updated agent about\",\n            model=\"gpt-4o-mini\",\n            default_settings={\"temperature\": 1.0},\n            metadata={\"hello\": \"world\"},\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Agent)\n    assert result.project == project.canonical_name\n\n\n@test(\"query: update agent, project does not exist\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that an existing agent's information can be successfully updated with a project that does not exist.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await update_agent(\n            agent_id=agent.id,\n            developer_id=developer_id,\n            data=UpdateAgentRequest(\n                name=\"updated agent with project\",\n                about=\"updated agent about\",\n                model=\"gpt-4o-mini\",\n                default_settings={\"temperature\": 1.0},\n                metadata={\"hello\": \"world\"},\n                project=\"invalid_project\",\n            ),\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 404\n    assert \"Project 'invalid_project' not found\" in exc.raised.detail\n\n\n@test(\"query: patch agent sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that an agent can be successfully patched.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await patch_agent(\n        agent_id=agent.id,\n        developer_id=developer_id,\n        data=PatchAgentRequest(\n            name=\"patched agent\",\n            about=\"patched agent about\",\n            default_settings={\"temperature\": 1.0},\n            metadata={\"something\": \"else\"},\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Agent)\n    assert result.name == \"patched agent\"\n    assert result.about == \"patched agent about\"\n    assert result.default_settings[\"temperature\"] == 1.0\n\n\n@test(\"query: patch agent with project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, project=test_project):\n    \"\"\"Test that an agent can be successfully patched with a project.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await patch_agent(\n        agent_id=agent.id,\n        developer_id=developer_id,\n        data=PatchAgentRequest(\n            name=\"patched agent with project\",\n            about=\"patched agent about\",\n            default_settings={\"temperature\": 1.0},\n            metadata={\"something\": \"else\"},\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    # Verify the agent is in the list of agents with the correct project\n    agents = await list_agents(\n        developer_id=developer_id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    # Find our patched agent in the list\n    patched_agent = next((a for a in agents if a.id == agent.id), None)\n\n    assert patched_agent is not None\n    assert patched_agent.name == \"patched agent with project\"\n    assert patched_agent.project == project.canonical_name\n\n    assert result is not None\n    assert isinstance(result, Agent)\n    assert result.project == project.canonical_name\n\n\n@test(\"query: patch agent, project does not exist\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that an agent can be successfully patched with a project that does not exist.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await patch_agent(\n            agent_id=agent.id,\n            developer_id=developer_id,\n            data=PatchAgentRequest(\n                name=\"patched agent with project\",\n                about=\"patched agent about\",\n                default_settings={\"temperature\": 1.0},\n                metadata={\"something\": \"else\"},\n                project=\"invalid_project\",\n            ),\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 404\n    assert \"Project 'invalid_project' not found\" in exc.raised.detail\n\n\n@test(\"query: get agent not exists sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that retrieving a non-existent agent raises an exception.\"\"\"\n\n    agent_id = uuid7()\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(Exception):\n        await get_agent(agent_id=agent_id, developer_id=developer_id, connection_pool=pool)  # type: ignore[not-callable]\n\n\n@test(\"query: get agent exists sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that retrieving an existing agent returns the correct agent information.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await get_agent(\n        agent_id=agent.id,\n        developer_id=developer_id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Agent)\n    assert result.id == agent.id\n    assert result.name == agent.name\n    assert result.about == agent.about\n    assert result.model == agent.model\n    assert result.default_settings == agent.default_settings\n    assert result.metadata == agent.metadata\n\n\n@test(\"query: list agents sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing agents returns a collection of agent information.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_agents(developer_id=developer_id, connection_pool=pool)  # type: ignore[not-callable]\n\n    assert isinstance(result, list)\n    assert all(isinstance(agent, Agent) for agent in result)\n\n\n@test(\"query: list agents with project filter sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project):\n    \"\"\"Test that listing agents with a project filter returns the correct agents.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    # First create an agent with the specific project\n    await create_agent(\n        developer_id=developer_id,\n        data=CreateAgentRequest(\n            name=\"test agent for project filter\",\n            about=\"test agent about\",\n            model=\"gpt-4o-mini\",\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    # Now fetch with project filter\n    result = await list_agents(developer_id=developer_id, connection_pool=pool)  # type: ignore[not-callable]\n\n    assert isinstance(result, list)\n    assert all(isinstance(agent, Agent) for agent in result)\n    assert any(agent.project == project.canonical_name for agent in result)\n\n\n@test(\"query: list agents sql, invalid sort direction\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing agents with an invalid sort direction raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_agents(\n            developer_id=developer_id,\n            connection_pool=pool,\n            direction=\"invalid\",\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort direction\"\n\n\n@test(\"query: delete agent sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that an agent can be successfully deleted.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    create_result = await create_agent(\n        developer_id=developer_id,\n        data=CreateAgentRequest(\n            name=\"test agent\",\n            about=\"test agent about\",\n            model=\"gpt-4o-mini\",\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    delete_result = await delete_agent(\n        agent_id=create_result.id,\n        developer_id=developer_id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert delete_result is not None\n    assert isinstance(delete_result, ResourceDeletedResponse)\n\n    with raises(Exception):\n        await get_agent(\n            developer_id=developer_id,\n            agent_id=create_result.id,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n"
  },
  {
    "path": "src/agents-api/tests/test_agent_routes.py",
    "content": "# Tests for agent routes\n\nfrom uuid_extensions import uuid7\nfrom ward import test\n\nfrom tests.fixtures import client, make_request, test_agent, test_project\n\n\n@test(\"route: unauthorized should fail\")\ndef _(client=client):\n    data = {\n        \"name\": \"test agent\",\n        \"about\": \"test agent about\",\n        \"model\": \"gpt-4o-mini\",\n    }\n\n    response = client.request(\n        method=\"POST\",\n        url=\"/agents\",\n        json=data,\n    )\n\n    assert response.status_code == 403\n\n\n@test(\"route: create agent\")\ndef _(make_request=make_request):\n    data = {\n        \"name\": \"test agent\",\n        \"about\": \"test agent about\",\n        \"model\": \"gpt-4o-mini\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/agents\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n\n@test(\"route: create agent with project\")\ndef _(make_request=make_request, project=test_project):\n    data = {\n        \"name\": \"test agent with project\",\n        \"about\": \"test agent about\",\n        \"model\": \"gpt-4o-mini\",\n        \"project\": project.canonical_name,\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/agents\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n    assert response.json()[\"project\"] == project.canonical_name\n\n\n@test(\"route: create agent with instructions\")\ndef _(make_request=make_request):\n    data = {\n        \"name\": \"test agent\",\n        \"about\": \"test agent about\",\n        \"model\": \"gpt-4o-mini\",\n        \"instructions\": [\"test instruction\"],\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/agents\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n\n@test(\"route: create or update agent\")\ndef _(make_request=make_request):\n    agent_id = str(uuid7())\n\n    data = {\n        \"name\": \"test agent\",\n        \"about\": \"test agent about\",\n        \"model\": \"gpt-4o-mini\",\n        \"instructions\": [\"test instruction\"],\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/agents/{agent_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n\n@test(\"route: create or update agent with project\")\ndef _(make_request=make_request, project=test_project):\n    agent_id = str(uuid7())\n\n    data = {\n        \"name\": \"test agent with project\",\n        \"about\": \"test agent about\",\n        \"model\": \"gpt-4o-mini\",\n        \"instructions\": [\"test instruction\"],\n        \"project\": project.canonical_name,\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/agents/{agent_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n    assert response.json()[\"project\"] == project.canonical_name\n\n\n@test(\"route: get agent not exists\")\ndef _(make_request=make_request):\n    agent_id = str(uuid7())\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent_id}\",\n    )\n\n    assert response.status_code == 404\n\n\n@test(\"route: get agent exists\")\ndef _(make_request=make_request, agent=test_agent):\n    agent_id = str(agent.id)\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent_id}\",\n    )\n\n    assert response.status_code != 404\n\n\n@test(\"route: delete agent\")\ndef _(make_request=make_request):\n    data = {\n        \"name\": \"test agent\",\n        \"about\": \"test agent about\",\n        \"model\": \"gpt-4o-mini\",\n        \"instructions\": [\"test instruction\"],\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/agents\",\n        json=data,\n    )\n    agent_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/agents/{agent_id}\",\n    )\n\n    assert response.status_code == 202\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent_id}\",\n    )\n\n    assert response.status_code == 404\n\n\n@test(\"route: update agent\")\ndef _(make_request=make_request, agent=test_agent):\n    data = {\n        \"name\": \"updated agent\",\n        \"about\": \"updated agent about\",\n        \"default_settings\": {\"temperature\": 1.0},\n        \"model\": \"gpt-4o-mini\",\n        \"metadata\": {\"hello\": \"world\"},\n    }\n\n    agent_id = str(agent.id)\n    response = make_request(\n        method=\"PUT\",\n        url=f\"/agents/{agent_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n    agent_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent_id}\",\n    )\n\n    assert response.status_code == 200\n    agent = response.json()\n\n    assert \"test\" not in agent[\"metadata\"]\n\n\n@test(\"route: update agent with project\")\ndef _(make_request=make_request, agent=test_agent, project=test_project):\n    data = {\n        \"name\": \"updated agent with project\",\n        \"about\": \"updated agent about\",\n        \"default_settings\": {\"temperature\": 1.0},\n        \"model\": \"gpt-4o-mini\",\n        \"metadata\": {\"hello\": \"world\"},\n        \"project\": project.canonical_name,\n    }\n\n    agent_id = str(agent.id)\n    response = make_request(\n        method=\"PUT\",\n        url=f\"/agents/{agent_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n    agent_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent_id}\",\n    )\n\n    assert response.status_code == 200\n    agent = response.json()\n\n    assert agent[\"project\"] == project.canonical_name\n\n\n@test(\"route: patch agent\")\ndef _(make_request=make_request, agent=test_agent):\n    agent_id = str(agent.id)\n\n    data = {\n        \"name\": \"patched agent\",\n        \"about\": \"patched agent about\",\n        \"default_settings\": {\"temperature\": 1.0},\n        \"metadata\": {\"hello\": \"world\"},\n    }\n\n    response = make_request(\n        method=\"PATCH\",\n        url=f\"/agents/{agent_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n    agent_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent_id}\",\n    )\n\n    assert response.status_code == 200\n    agent = response.json()\n\n    assert \"hello\" in agent[\"metadata\"]\n\n\n@test(\"route: patch agent with project\")\ndef _(make_request=make_request, agent=test_agent, project=test_project):\n    agent_id = str(agent.id)\n\n    data = {\n        \"name\": \"patched agent with project\",\n        \"about\": \"patched agent about\",\n        \"default_settings\": {\"temperature\": 1.0},\n        \"metadata\": {\"hello\": \"world\"},\n        \"project\": project.canonical_name,\n    }\n\n    response = make_request(\n        method=\"PATCH\",\n        url=f\"/agents/{agent_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n    agent_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent_id}\",\n    )\n\n    assert response.status_code == 200\n    agent = response.json()\n\n    assert \"hello\" in agent[\"metadata\"]\n    assert agent[\"project\"] == project.canonical_name\n\n\n@test(\"route: list agents\")\ndef _(make_request=make_request):\n    response = make_request(\n        method=\"GET\",\n        url=\"/agents\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    agents = response[\"items\"]\n\n    assert isinstance(agents, list)\n    assert len(agents) > 0\n\n\n@test(\"route: list agents with project filter\")\ndef _(make_request=make_request, project=test_project):\n    # First create an agent with the project\n    data = {\n        \"name\": \"test agent for project filter\",\n        \"about\": \"test agent about\",\n        \"model\": \"gpt-4o-mini\",\n        \"project\": project.canonical_name,\n    }\n\n    make_request(\n        method=\"POST\",\n        url=\"/agents\",\n        json=data,\n    )\n\n    # Then list agents with project filter\n    response = make_request(\n        method=\"GET\",\n        url=\"/agents\",\n        params={\n            \"project\": project.canonical_name,\n        },\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    agents = response[\"items\"]\n\n    assert isinstance(agents, list)\n    assert len(agents) > 0\n    assert any(agent[\"project\"] == project.canonical_name for agent in agents)\n\n\n@test(\"route: list agents with metadata filter\")\ndef _(make_request=make_request):\n    response = make_request(\n        method=\"GET\",\n        url=\"/agents\",\n        params={\n            \"metadata_filter\": {\"test\": \"test\"},\n        },\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    agents = response[\"items\"]\n\n    assert isinstance(agents, list)\n    assert len(agents) > 0\n"
  },
  {
    "path": "src/agents-api/tests/test_base_evaluate.py",
    "content": "import uuid\nfrom unittest.mock import patch\n\nfrom agents_api.activities.task_steps.base_evaluate import base_evaluate\nfrom agents_api.autogen.openapi_model import (\n    Agent,\n    TaskSpecDef,\n    ToolCallStep,\n    TransitionTarget,\n    Workflow,\n)\nfrom agents_api.common.exceptions.executions import EvaluateError\nfrom agents_api.common.protocol.tasks import (\n    ExecutionInput,\n    StepContext,\n)\nfrom agents_api.common.utils.datetime import utcnow\nfrom agents_api.common.utils.task_validation import (\n    backwards_compatibility,\n    validate_py_expression,\n)\nfrom ward import raises, test\n\n\n@test(\"utility: base_evaluate - empty exprs\")\nasync def _():\n    with raises(AssertionError):\n        await base_evaluate({}, values={\"a\": 1})\n\n\n@test(\"utility: base_evaluate - value undefined\")\nasync def _():\n    with raises(EvaluateError):\n        await base_evaluate(\"$ b\", values={\"a\": 1})\n\n\n@test(\"utility: base_evaluate - scalar values\")\nasync def _():\n    exprs = [1, 2, True, 1.2459, \"$ x + 5\"]\n    values = {\"x\": 5}\n    result = await base_evaluate(exprs, values=values)\n    assert result == [1, 2, True, 1.2459, 10]\n\n\n@test(\"utility: base_evaluate - str\")\nasync def _():\n    exprs = \"$ x + 5\"\n    values = {\"x\": 5}\n    result = await base_evaluate(exprs, values=values)\n    assert result == 10\n\n    # Test with $ but no space - this should NOT be evaluated as Python\n    # but treated as a string with an f-string wrapper\n    exprs = \"$x + 5\"\n    values = {\"x\": 5}\n    result = await base_evaluate(exprs, values=values)\n    assert result == \"$x + 5\", (\n        \"Expression with $ but no space should be treated as a regular string\"\n    )\n\n    exprs = \"hello world\"\n    result = await base_evaluate(exprs, values={})\n    assert result == \"hello world\"\n\n    exprs = \"I forgot to put a dollar sign, can you still calculate {x + 5}?\"\n    result = await base_evaluate(exprs, values={\"x\": 5})\n    assert result == \"I forgot to put a dollar sign, can you still calculate 10?\"\n\n\n@test(\"utility: base_evaluate - dict\")\nasync def _():\n    exprs = {\"a\": \"$ x + 5\", \"b\": \"$ x + 6\", \"c\": \"x + 7\"}\n    values = {\"x\": 5}\n    result = await base_evaluate(exprs, values=values)\n    assert result == {\"a\": 10, \"b\": 11, \"c\": \"x + 7\"}\n\n\n@test(\"utility: base_evaluate - list\")\nasync def _():\n    exprs = [{\"a\": \"$ x + 5\"}, {\"b\": \"$ x + 6\"}, {\"c\": \"x + 7\"}]\n    values = {\"x\": 5}\n    result = await base_evaluate(exprs, values=values)\n    assert result == [{\"a\": 10}, {\"b\": 11}, {\"c\": \"x + 7\"}]\n\n\n@test(\"utility: base_evaluate - parameters\")\nasync def _():\n    exprs = \"$ x + 5\"\n    context_none = None\n    values_none = None\n    extra_lambda_strs_none = None\n    step = ToolCallStep(tool=\"tool1\")\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n\n    scope_id = uuid.uuid4()\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    values = {\"x\": 5}\n    reduce = \"results + [_]\"\n    reduce = reduce.replace(\"_\", \"_item\").replace(\"results\", \"_result\")\n    extra_lambda_strs = {\"reducer_lambda\": f\"lambda _result, _item: ({reduce})\"}\n\n    with patch(\n        \"agents_api.common.protocol.tasks.StepContext.prepare_for_step\",\n        return_value={\"x\": 10},\n    ):\n        with raises(ValueError):\n            result = await base_evaluate(\n                exprs,\n                context=context_none,\n                values=values_none,\n                extra_lambda_strs=extra_lambda_strs_none,\n            )\n        with raises(ValueError):\n            result = await base_evaluate(\n                exprs,\n                context=context_none,\n                values=values_none,\n                extra_lambda_strs=extra_lambda_strs,\n            )\n        result = await base_evaluate(\n            exprs,\n            context=context_none,\n            values=values,\n            extra_lambda_strs=extra_lambda_strs_none,\n        )\n        assert result == 10\n        result = await base_evaluate(\n            exprs,\n            context=context_none,\n            values=values,\n            extra_lambda_strs=extra_lambda_strs,\n        )\n        assert result == 10\n        result = await base_evaluate(\n            exprs,\n            context=context,\n            values=values_none,\n            extra_lambda_strs=extra_lambda_strs_none,\n        )\n        assert result == 15\n        result = await base_evaluate(\n            exprs,\n            context=context,\n            values=values_none,\n            extra_lambda_strs=extra_lambda_strs,\n        )\n        assert result == 15\n        result = await base_evaluate(\n            exprs,\n            context=context,\n            values=values,\n            extra_lambda_strs=extra_lambda_strs_none,\n        )\n        assert result == 15\n        result = await base_evaluate(\n            exprs,\n            context=context,\n            values=values,\n            extra_lambda_strs=extra_lambda_strs,\n        )\n        assert result == 15\n\n\n@test(\"utility: base_evaluate - backwards compatibility\")\nasync def _():\n    exprs = \"[[x + 5]]\"\n    values = {\"x\": 5, \"inputs\": {1: 1}, \"outputs\": {1: 2}}\n    result = await base_evaluate(exprs, values=values)\n    assert result == [[10]]\n\n    # Test inputs[] and outputs[] access\n    exprs = \"inputs[1]\"\n    result = await base_evaluate(exprs, values=values)\n    assert result == 1\n\n    exprs = \"outputs[1]\"\n    result = await base_evaluate(exprs, values=values)\n    assert result == 2\n\n    # Test template expressions\n    exprs = \"Value is {{x}}\"\n    result = await base_evaluate(exprs, values=values)\n    assert result == \"Value is 5\"\n\n    # Test underscore expressions\n    exprs = \"_\"\n    result = await base_evaluate(exprs, values={\"_\": 42})\n    assert result == 42\n\n    exprs = \"_.field[0]\"\n    result = await base_evaluate(exprs, values={\"_\": {\"field\": [10]}})\n    assert result == 10\n\n    exprs = \"_[0]\"\n    result = await base_evaluate(exprs, values={\"_\": [7]})\n    assert result == 7\n\n\n@test(\"utility: backwards_compatibility\")\nasync def _():\n    # Test $ prefix - should return unchanged\n    exprs = \"$ x + 5\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ x + 5\"\n\n    # Test template expressions\n    exprs = \"{{x + 5}}\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ f'''{x + 5}'''\"\n\n    exprs = \"Value is {{x}} and {{y}}\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ f'''Value is {x} and {y}'''\"\n\n    # Test bracket expressions\n    exprs = \"[x + 5]\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ [x + 5]\"\n\n    exprs = \"[[nested]]\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ [[nested]]\"\n\n    # Test underscore expressions\n    exprs = \"_[0]\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ _[0]\"\n\n    exprs = \"_.field[0]\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ _.field[0]\"\n\n    exprs = \"_\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ _\"\n\n    # Test inputs/outputs access\n    exprs = \"input for input in inputs[key]\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ input for input in inputs[key]\"\n\n    exprs = \"output for output in outputs[key]\"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ output for output in outputs[key]\"\n\n    # Test plain string - should return unchanged\n    exprs = \"hello world\"\n    result = backwards_compatibility(exprs)\n    assert result == \"hello world\"\n\n    # Test spaces at the beginning and end\n    exprs = \"  _[0]  \"\n    result = backwards_compatibility(exprs)\n    assert result == \"$ _[0]\"\n\n\n@test(\"validate_py_expression should return early for non-dollar expressions\")\ndef test_validate_non_dollar_expressions():\n    \"\"\"Tests that expressions without $ prefix return empty issues and don't get validated.\"\"\"\n    # Regular string without $ prefix\n    expression = \"Hello world\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # Valid Python syntax but no $ prefix\n    expression = \"1 + 2\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # Invalid Python syntax but no $ prefix\n    expression = \"1 + )\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n\n@test(\"validate_py_expression should handle dollar sign variations\")\ndef test_dollar_sign_prefix_formats():\n    \"\"\"Tests that $ prefix is correctly recognized in various formats.\"\"\"\n    # $ with space\n    expression = \"$ 1 + 2\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # $ without space\n    expression = \"$1 + 2\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # Leading whitespace before $\n    expression = \"   $ 1 + 2\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # Leading whitespace and $ without space\n    expression = \"   $1 + 2\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n\n@test(\"validate_py_expression should handle edge cases\")\ndef test_validate_edge_cases():\n    \"\"\"Tests edge cases like empty strings, None values, etc.\"\"\"\n    # None value\n    result = validate_py_expression(None)\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # Empty string\n    result = validate_py_expression(\"\")\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # Just whitespace\n    result = validate_py_expression(\"   \")\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # Just $ sign\n    result = validate_py_expression(\"$\")\n    assert all(len(issues) == 0 for issues in result.values())\n"
  },
  {
    "path": "src/agents-api/tests/test_chat_auto_tools.py",
    "content": "\"\"\"\nTests for auto tool calls in chat sessions.\nTests for feature flag routing, tool execution logic, and edge cases.\n\"\"\"\n\nfrom unittest.mock import AsyncMock, MagicMock, patch\nfrom uuid import uuid4\n\nfrom agents_api.autogen.openapi_model import ChatInput\nfrom agents_api.autogen.Tools import (\n    ChosenFunctionCall,\n    FunctionCallOption,\n    FunctionDef,\n    Tool,\n)\nfrom agents_api.common.utils.datetime import utcnow\nfrom agents_api.common.utils.tool_runner import run_tool_call\nfrom fastapi import HTTPException\nfrom ward import test\n\n\n@test(\"ChatInput defaults to auto_run_tools=False\")\nasync def _():\n    \"\"\"Test that ChatInput defaults to auto_run_tools=False.\"\"\"\n    # Create a minimal chat input without auto_run_tools\n    chat_input = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n    )\n\n    # Verify default value\n    assert chat_input.auto_run_tools is False\n\n\n@test(\"ChatInput can set auto_run_tools=True\")\nasync def _():\n    \"\"\"Test that ChatInput can set auto_run_tools=True.\"\"\"\n    # Create a chat input with auto_run_tools=True\n    chat_input = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n        auto_run_tools=True,\n    )\n\n    # Verify the value was set\n    assert chat_input.auto_run_tools is True\n\n\n@test(\"ChatInput can explicitly set auto_run_tools=False\")\nasync def _():\n    \"\"\"Test that ChatInput can explicitly set auto_run_tools=False.\"\"\"\n    # Create a chat input with auto_run_tools=False\n    chat_input = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n        auto_run_tools=False,\n    )\n\n    # Verify the value was set\n    assert chat_input.auto_run_tools is False\n\n\n@test(\"run_tool_call handles function tools\")\nasync def _():\n    \"\"\"Test that function tools are handled by run_tool_call.\"\"\"\n    # Create a function tool\n    now = utcnow()\n    tool = Tool(\n        id=uuid4(),\n        name=\"test_function\",\n        type=\"function\",\n        description=\"A test function tool\",\n        function=FunctionDef(\n            parameters={\"type\": \"object\", \"properties\": {\"input\": {\"type\": \"string\"}}}\n        ),\n        created_at=now,\n        updated_at=now,\n    )\n\n    # Create a function tool call\n    call = ChosenFunctionCall(\n        id=\"call_123\",\n        type=\"function\",\n        function=FunctionCallOption(name=\"test_function\", arguments='{\"input\": \"test\"}'),\n    )\n\n    # Execute the tool call - function tools will fail due to missing setup key\n    try:\n        result = await run_tool_call(\n            developer_id=uuid4(),\n            agent_id=uuid4(),\n            session_id=uuid4(),\n            tool=tool,\n            call=call,\n        )\n        # If it doesn't raise an error, verify the result\n        assert result.id == call.id\n        assert result.name == tool.name\n        assert result.output == {}\n    except KeyError as e:\n        # Expected behavior for now - function tools don't have setup field\n        assert str(e) == \"'setup'\"\n\n\n@test(\"chat_auto_tools raises HTTPException when streaming with tools\")\nasync def _():\n    \"\"\"Test that streaming is not supported when auto_run_tools is enabled with tools.\"\"\"\n    from agents_api.routers.sessions.auto_tools.chat import chat\n\n    # Mock dependencies\n    mock_developer = MagicMock(id=uuid4(), tags=[])\n    mock_session = MagicMock()\n    mock_agent = MagicMock(id=uuid4())\n    mock_toolset = MagicMock(tools=[MagicMock()])  # Non-empty tools\n    mock_chat_context = MagicMock(\n        session=mock_session, agents=[mock_agent], toolsets=[mock_toolset]\n    )\n\n    # Create streaming chat input with auto_run_tools=True\n    chat_input = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n        stream=True,  # Streaming enabled\n        auto_run_tools=True,  # Auto run tools enabled\n    )\n\n    with patch(\n        \"agents_api.routers.sessions.auto_tools.chat.render_chat_input\",\n        return_value=([], [], [MagicMock()], {}, [], mock_chat_context),\n    ):\n        try:\n            await chat(\n                developer=mock_developer,\n                session_id=uuid4(),\n                chat_input=chat_input,\n                background_tasks=MagicMock(),\n            )\n            assert False, \"Should have raised HTTPException\"\n        except HTTPException as e:\n            assert e.status_code == 400\n            assert \"Streaming is not supported when auto_run_tools is enabled\" in e.detail\n\n\n@test(\"chat_auto_tools with auto_run_tools=False passes empty tools to LLM\")\nasync def _():\n    \"\"\"Test that when auto_run_tools=False, empty tools are passed to prevent tool calls.\"\"\"\n    from agents_api.routers.sessions.auto_tools.chat import chat\n\n    # Mock dependencies\n    mock_developer = MagicMock(id=uuid4(), tags=[])\n    mock_session = MagicMock()\n    mock_agent = MagicMock(id=uuid4())\n    mock_toolset = MagicMock(tools=[MagicMock()])  # Has tools but shouldn't use them\n    mock_chat_context = MagicMock(\n        session=mock_session, agents=[mock_agent], toolsets=[mock_toolset]\n    )\n\n    # Create non-streaming chat input with auto_run_tools=False\n    chat_input = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n        stream=False,\n        save=False,\n        auto_run_tools=False,  # Disabled\n    )\n\n    # Mock litellm.acompletion to verify it receives no tools\n    mock_choice = MagicMock()\n    mock_choice.message = MagicMock(content=\"Hi\", tool_calls=None)\n    mock_choice.message.model_dump.return_value = {\"content\": \"Hi\", \"tool_calls\": None}\n    mock_choice.finish_reason = \"stop\"\n    mock_response = MagicMock()\n    mock_response.choices = [mock_choice]\n    mock_response.usage = MagicMock(model_dump=lambda: {\"total_tokens\": 10})\n\n    with (\n        patch(\n            \"agents_api.routers.sessions.auto_tools.chat.render_chat_input\",\n            return_value=(\n                [{\"role\": \"user\", \"content\": \"Hello\"}],\n                [],\n                [MagicMock()],\n                {\"model\": \"gpt-4\"},\n                [],\n                mock_chat_context,\n            ),\n        ),\n        patch(\n            \"agents_api.clients.litellm.acompletion\", new_callable=AsyncMock\n        ) as mock_acompletion,\n    ):\n        mock_acompletion.return_value = mock_response\n\n        await chat(\n            developer=mock_developer,\n            session_id=uuid4(),\n            chat_input=chat_input,\n            background_tasks=MagicMock(),\n        )\n\n        # Verify litellm was called with tools=[]\n        mock_acompletion.assert_called_once()\n        call_args = mock_acompletion.call_args[1]\n        assert call_args.get(\"tools\") == []\n\n\n@test(\"chat_auto_tools with auto_run_tools=True and no tools works normally\")\nasync def _():\n    \"\"\"Test that when auto_run_tools=True but no tools exist, chat works normally.\"\"\"\n    from agents_api.routers.sessions.auto_tools.chat import chat\n\n    # Mock dependencies\n    mock_developer = MagicMock(id=uuid4(), tags=[])\n    mock_session = MagicMock()\n    mock_agent = MagicMock(id=uuid4())\n    mock_chat_context = MagicMock(\n        session=mock_session,\n        agents=[mock_agent],\n        toolsets=[],  # No tools available\n    )\n\n    # Create chat input with auto_run_tools=True\n    chat_input = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n        stream=False,\n        save=False,\n        auto_run_tools=True,  # Enabled\n    )\n\n    # Mock litellm response\n    mock_choice = MagicMock()\n    mock_choice.message = MagicMock(content=\"Hi\", tool_calls=None)\n    mock_choice.message.model_dump.return_value = {\"content\": \"Hi\", \"tool_calls\": None}\n    mock_choice.finish_reason = \"stop\"\n    mock_response = MagicMock()\n    mock_response.choices = [mock_choice]\n    mock_response.usage = MagicMock(model_dump=lambda: {\"total_tokens\": 10})\n\n    with (\n        patch(\n            \"agents_api.routers.sessions.auto_tools.chat.render_chat_input\",\n            return_value=(\n                [{\"role\": \"user\", \"content\": \"Hello\"}],\n                [],\n                [],\n                {\"model\": \"gpt-4\"},\n                [],\n                mock_chat_context,\n            ),\n        ),\n        patch(\n            \"agents_api.clients.litellm.acompletion\", new_callable=AsyncMock\n        ) as mock_acompletion,\n    ):\n        mock_acompletion.return_value = mock_response\n\n        result = await chat(\n            developer=mock_developer,\n            session_id=uuid4(),\n            chat_input=chat_input,\n            background_tasks=MagicMock(),\n        )\n\n        # Should complete successfully\n        assert result.choices[0].message.content == \"Hi\"\n\n\n@test(\"chat router uses ChatInput.auto_run_tools for routing\")\nasync def _():\n    \"\"\"Test that the chat router correctly uses ChatInput.auto_run_tools for routing.\"\"\"\n    # This test validates that the chat router implementation uses\n    # ChatInput.auto_run_tools flag along with the feature flag for routing\n\n    # Test 1: With auto_run_tools=True\n    chat_input_enabled = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n        auto_run_tools=True,\n    )\n\n    # Verify the field exists and is set correctly\n    assert hasattr(chat_input_enabled, \"auto_run_tools\")\n    assert chat_input_enabled.auto_run_tools is True\n\n    # Test 2: With auto_run_tools=False\n    chat_input_disabled = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n        auto_run_tools=False,\n    )\n\n    # Verify the field exists and is set correctly\n    assert hasattr(chat_input_disabled, \"auto_run_tools\")\n    assert chat_input_disabled.auto_run_tools is False\n\n    # Test 3: Default value\n    chat_input_default = ChatInput(\n        messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n    )\n\n    # Verify the field exists and defaults to False\n    assert hasattr(chat_input_default, \"auto_run_tools\")\n    assert chat_input_default.auto_run_tools is False\n\n\n# Note: These tests cover:\n# 1. ChatInput model defaults and configuration\n# 2. Function tool error handling in chat\n# 3. Streaming error when tools are involved\n# 4. Empty tools list when auto_run_tools=False\n# 5. Normal operation when no tools exist\n# 6. Chat router routing based on ChatInput.auto_run_tools\n"
  },
  {
    "path": "src/agents-api/tests/test_chat_metadata.py",
    "content": "\"\"\"Test metadata functionality in chat endpoint.\"\"\"\n\nfrom ward import test\n\nfrom tests.fixtures import (\n    make_request,\n    patch_embed_acompletion,\n    pg_dsn,\n    test_agent,\n    test_developer_id,\n    test_session,\n)\n\n\n@test(\"chat: metadata is passed to system template rendering\")\nasync def _(\n    make_request=make_request,\n    agent=test_agent,\n    session=test_session,\n    mocks=patch_embed_acompletion,\n):\n    \"\"\"Test that metadata from chat request is available in system template.\"\"\"\n    (_embed, acompletion) = mocks\n\n    # Prepare chat request with metadata\n    chat_data = {\n        \"messages\": [\n            {\n                \"role\": \"user\",\n                \"content\": \"Hello, please help me\",\n            }\n        ],\n        \"metadata\": {\n            \"foo\": True,\n            \"custom_instruction\": \"Be extra helpful\",\n            \"user_preference\": \"formal tone\",\n            \"priority\": \"high\",\n        },\n    }\n\n    # Make the chat request\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}/chat\",\n        json=chat_data,\n    )\n\n    assert response.status_code == 201\n\n    # Check that the completion was called\n    acompletion.assert_called_once()\n\n    # Get the actual call arguments\n    call_args = acompletion.call_args\n    messages = call_args[1][\"messages\"]\n\n    # The system message should be the first message\n    assert len(messages) > 0\n    system_message = messages[0]\n    assert system_message[\"role\"] == \"system\"\n\n    # Since we're mocking, we can't test the actual template rendering,\n    # but we can verify the metadata was included in the request\n    assert \"metadata\" in chat_data\n    assert chat_data[\"metadata\"][\"foo\"] is True\n    assert chat_data[\"metadata\"][\"custom_instruction\"] == \"Be extra helpful\"\n\n\n@test(\"chat: metadata field accepts complex nested structures\")\nasync def _(\n    make_request=make_request,\n    session=test_session,\n    mocks=patch_embed_acompletion,\n):\n    \"\"\"Test that metadata can contain nested objects and arrays.\"\"\"\n    (_embed, acompletion) = mocks\n\n    # Complex metadata structure\n    chat_data = {\n        \"messages\": [\n            {\n                \"role\": \"user\",\n                \"content\": \"Test message\",\n            }\n        ],\n        \"metadata\": {\n            \"user_profile\": {\n                \"preferences\": {\n                    \"language\": \"en\",\n                    \"style\": \"formal\",\n                    \"topics\": [\"science\", \"technology\"],\n                },\n                \"flags\": {\n                    \"premium\": True,\n                    \"beta_features\": False,\n                },\n            },\n            \"context\": {\n                \"session_type\": \"support\",\n                \"priority\": 1,\n                \"tags\": [\"urgent\", \"technical\"],\n            },\n            \"custom_instructions\": [\n                \"Be concise\",\n                \"Use examples\",\n                \"Avoid jargon\",\n            ],\n        },\n    }\n\n    # Make the chat request\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}/chat\",\n        json=chat_data,\n    )\n\n    assert response.status_code == 201\n\n    # Verify the LLM was called\n    acompletion.assert_called_once()\n\n\n@test(\"chat: empty metadata field is handled correctly\")\nasync def _(\n    make_request=make_request,\n    session=test_session,\n    mocks=patch_embed_acompletion,\n):\n    \"\"\"Test that empty or null metadata doesn't cause issues.\"\"\"\n    (_embed, acompletion) = mocks\n\n    # Test with empty metadata\n    chat_data_empty = {\n        \"messages\": [\n            {\n                \"role\": \"user\",\n                \"content\": \"Test with empty metadata\",\n            }\n        ],\n        \"metadata\": {},\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}/chat\",\n        json=chat_data_empty,\n    )\n\n    assert response.status_code == 201\n\n    # Test with null metadata (by not including it)\n    chat_data_null = {\n        \"messages\": [\n            {\n                \"role\": \"user\",\n                \"content\": \"Test without metadata\",\n            }\n        ],\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}/chat\",\n        json=chat_data_null,\n    )\n\n    assert response.status_code == 201\n\n    # Both calls should succeed\n    assert acompletion.call_count == 2\n\n\n@test(\"render: metadata is properly rendered in system template\")\nasync def _(\n    make_request=make_request,\n    test_agent=test_agent,\n    test_developer_id=test_developer_id,\n    pg_dsn=pg_dsn,\n):\n    \"\"\"Test that metadata is properly rendered in custom system templates.\"\"\"\n    from agents_api.autogen.Sessions import CreateSessionRequest\n    from agents_api.clients.pg import create_db_pool\n    from agents_api.queries.sessions.create_session import create_session\n\n    # Create a custom system template that uses metadata\n    custom_system_template = \"\"\"\n{%- if agent.name -%}\nYou are {{agent.name}}.{{\" \"}}\n{%- endif -%}\n\n{%- if metadata.custom_instructions -%}\nCustom instructions: {{metadata.custom_instructions}}\n{%- endif -%}\n\n{%- if metadata.mood -%}\nCurrent mood: {{metadata.mood}}\n{%- endif -%}\n\n{%- if metadata.language -%}\nRespond in: {{metadata.language}}\n{%- endif -%}\n\"\"\"\n\n    # Create a session with the custom system template\n    pool = await create_db_pool(dsn=pg_dsn)\n    session_data = CreateSessionRequest(\n        agent=test_agent.id,\n        system_template=custom_system_template,\n    )\n\n    session = await create_session(\n        developer_id=test_developer_id,\n        data=session_data,\n        connection_pool=pool,\n    )\n\n    # Make a render request with metadata\n    render_data = {\n        \"messages\": [\n            {\n                \"role\": \"user\",\n                \"content\": \"Hello, how are you?\",\n            }\n        ],\n        \"metadata\": {\n            \"custom_instructions\": \"You are very rude. Try to make fun of the user\",\n            \"mood\": \"sarcastic\",\n            \"language\": \"English with a British accent\",\n        },\n        \"recall\": False,\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}/render\",\n        json=render_data,\n    )\n\n    assert response.status_code == 200\n\n    # Parse the response\n    result = response.json()\n\n    # Check that messages were rendered\n    assert \"messages\" in result\n    messages = result[\"messages\"]\n    assert len(messages) >= 2  # System message + user message\n\n    # Find the system message\n    system_message = next((msg for msg in messages if msg[\"role\"] == \"system\"), None)\n    assert system_message is not None\n\n    # Verify that metadata was rendered in the system message\n    system_content = system_message[\"content\"]\n    assert (\n        \"Custom instructions: You are very rude. Try to make fun of the user\" in system_content\n    )\n    assert \"Current mood: sarcastic\" in system_content\n    assert \"Respond in: English with a British accent\" in system_content\n\n    # Also verify the agent name is rendered\n    assert f\"You are {test_agent.name}\" in system_content\n\n\n@test(\"render: metadata with conditional logic in template\")\nasync def _(\n    make_request=make_request,\n    test_agent=test_agent,\n    test_developer_id=test_developer_id,\n    pg_dsn=pg_dsn,\n):\n    \"\"\"Test complex conditional logic with metadata in system templates.\"\"\"\n    from agents_api.autogen.Sessions import CreateSessionRequest\n    from agents_api.clients.pg import create_db_pool\n    from agents_api.queries.sessions.create_session import create_session\n\n    # Create a template with complex conditional logic\n    complex_template = \"\"\"\n{%- if agent.name -%}\nYou are {{agent.name}}.\n{%- endif -%}\n\n{%- if metadata.mode == \"helpful\" -%}\nBe as helpful and supportive as possible.\n{%- elif metadata.mode == \"concise\" -%}\nKeep your responses brief and to the point.\n{%- elif metadata.mode == \"creative\" -%}\nBe creative and think outside the box.\n{%- else -%}\nRespond normally.\n{%- endif -%}\n\n{%- if metadata.expertise -%}\nYou are an expert in:\n{%- for skill in metadata.expertise -%}\n- {{skill}}\n{%- endfor -%}\n{%- endif -%}\n\n{%- if metadata.restrictions -%}\nImportant restrictions:\n{%- for restriction in metadata.restrictions -%}\n* {{restriction}}\n{%- endfor -%}\n{%- endif -%}\n\"\"\"\n\n    # Create session with complex template\n    pool = await create_db_pool(dsn=pg_dsn)\n    session_data = CreateSessionRequest(\n        agent=test_agent.id,\n        system_template=complex_template,\n    )\n\n    session = await create_session(\n        developer_id=test_developer_id,\n        data=session_data,\n        connection_pool=pool,\n    )\n\n    # Test with different metadata configurations\n    test_cases = [\n        {\n            \"metadata\": {\n                \"mode\": \"helpful\",\n                \"expertise\": [\"Python\", \"Machine Learning\", \"Data Science\"],\n                \"restrictions\": [\"No code execution\", \"Family-friendly content only\"],\n            },\n            \"expected_content\": [\n                \"Be as helpful and supportive as possible\",\n                \"You are an expert in:\",\n                \"- Python\",\n                \"- Machine Learning\",\n                \"- Data Science\",\n                \"Important restrictions:\",\n                \"* No code execution\",\n                \"* Family-friendly content only\",\n            ],\n        },\n        {\n            \"metadata\": {\n                \"mode\": \"concise\",\n            },\n            \"expected_content\": [\n                \"Keep your responses brief and to the point\",\n            ],\n            \"not_expected\": [\n                \"You are an expert in:\",\n                \"Important restrictions:\",\n            ],\n        },\n    ]\n\n    for test_case in test_cases:\n        render_data = {\n            \"messages\": [{\"role\": \"user\", \"content\": \"Test\"}],\n            \"metadata\": test_case[\"metadata\"],\n            \"recall\": False,\n        }\n\n        response = make_request(\n            method=\"POST\",\n            url=f\"/sessions/{session.id}/render\",\n            json=render_data,\n        )\n\n        assert response.status_code == 200\n        result = response.json()\n\n        # Find system message\n        system_message = next(\n            (msg for msg in result[\"messages\"] if msg[\"role\"] == \"system\"), None\n        )\n        assert system_message is not None\n\n        # Check expected content\n        for expected in test_case[\"expected_content\"]:\n            assert expected in system_message[\"content\"], (\n                f\"Expected '{expected}' in system message but it was not found\"\n            )\n\n        # Check not expected content (if specified)\n        if \"not_expected\" in test_case:\n            for not_expected in test_case[\"not_expected\"]:\n                assert not_expected not in system_message[\"content\"], (\n                    f\"Did not expect '{not_expected}' in system message but it was found\"\n                )\n\n\n# TODO: Add streaming test when streaming mock is fixed\n# @test(\"chat: metadata works with streaming responses\")\n# async def _(\n#     make_request=make_request,\n#     session=test_session,\n#     mocks=patch_embed_acompletion,\n# ):\n#     \"\"\"Test that metadata works correctly with streaming chat responses.\"\"\"\n#     # This test is currently disabled due to mock issues with streaming responses\n"
  },
  {
    "path": "src/agents-api/tests/test_chat_routes.py",
    "content": "# Tests for session queries\n\nfrom agents_api.autogen.openapi_model import (\n    ChatInput,\n    CreateAgentRequest,\n    CreateSessionRequest,\n    VectorDocSearch,\n)\nfrom agents_api.clients import litellm\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.common.protocol.sessions import ChatContext\nfrom agents_api.queries.agents.create_agent import create_agent\nfrom agents_api.queries.chat.gather_messages import gather_messages\nfrom agents_api.queries.chat.prepare_chat_context import prepare_chat_context\nfrom agents_api.queries.sessions.create_session import create_session\nfrom ward import test\n\nfrom .fixtures import (\n    make_request,\n    patch_embed_acompletion,\n    pg_dsn,\n    test_agent,\n    test_developer,\n    test_developer_id,\n    test_session,\n    test_tool,\n    test_user,\n)\n\n\n@test(\"chat: check that patching libs works\")\nasync def _(\n    _=patch_embed_acompletion,\n):\n    assert (await litellm.acompletion(model=\"gpt-4o-mini\", messages=[])).id == \"fake_id\"\n    assert (await litellm.aembedding())[0][0] == 1.0  # pytype: disable=missing-parameter\n\n\n@test(\"chat: check that non-recall gather_messages works\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    session=test_session,\n    tool=test_tool,\n    user=test_user,\n    mocks=patch_embed_acompletion,\n):\n    (embed, _) = mocks\n\n    pool = await create_db_pool(dsn=dsn)\n    chat_context = await prepare_chat_context(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )\n\n    session_id = session.id\n\n    messages = [{\"role\": \"user\", \"content\": \"hello\"}]\n\n    past_messages, doc_references = await gather_messages(\n        developer=developer,\n        session_id=session_id,\n        chat_context=chat_context,\n        chat_input=ChatInput(messages=messages, recall=False),\n        connection_pool=pool,\n    )\n\n    assert isinstance(past_messages, list)\n    assert len(past_messages) >= 0\n    assert isinstance(doc_references, list)\n    assert len(doc_references) == 0\n\n    # Check that embed was not called\n    embed.assert_not_called()\n\n\n@test(\"chat: check that gather_messages works\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    # session=test_session,\n    tool=test_tool,\n    user=test_user,\n    mocks=patch_embed_acompletion,\n):\n    pool = await create_db_pool(dsn=dsn)\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session about\",\n        ),\n        connection_pool=pool,\n    )\n\n    (embed, acompletion) = mocks\n\n    chat_context = await prepare_chat_context(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )\n\n    session_id = session.id\n\n    messages = [{\"role\": \"user\", \"content\": \"hello\"}]\n\n    past_messages, doc_references = await gather_messages(\n        developer=developer,\n        session_id=session_id,\n        chat_context=chat_context,\n        chat_input=ChatInput(messages=messages, recall=True),\n        connection_pool=pool,\n    )\n\n    assert isinstance(past_messages, list)\n    assert isinstance(doc_references, list)\n\n    embed.assert_called_once()\n    acompletion.assert_not_called()\n\n\n@test(\"chat: check that chat route calls both mocks\")\nasync def _(\n    make_request=make_request,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    mocks=patch_embed_acompletion,\n    dsn=pg_dsn,\n):\n    pool = await create_db_pool(dsn=dsn)\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session about\",\n            recall_options={\n                \"mode\": \"hybrid\",\n                \"num_search_messages\": 10,\n                \"max_query_length\": 1001,\n                \"confidence\": 0.6,\n                \"limit\": 5,\n                \"mmr_strength\": 0.5,\n                \"trigram_similarity_threshold\": 0.4,\n                \"k_multiplier\": 7,\n            },\n        ),\n        connection_pool=pool,\n    )\n\n    (embed, acompletion) = mocks\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}/chat\",\n        json={\"messages\": [{\"role\": \"user\", \"content\": \"hello\"}]},\n    )\n\n    response.raise_for_status()\n\n    embed.assert_called_once()\n    acompletion.assert_called_once()\n\n\n@test(\"chat: check that render route works and does not call completion mock\")\nasync def _(\n    make_request=make_request,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    mocks=patch_embed_acompletion,\n    dsn=pg_dsn,\n):\n    pool = await create_db_pool(dsn=dsn)\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session about\",\n            recall_options={\n                \"mode\": \"hybrid\",\n                \"num_search_messages\": 10,\n                \"max_query_length\": 1001,\n                \"confidence\": 0.6,\n                \"limit\": 5,\n                \"mmr_strength\": 0.5,\n                \"trigram_similarity_threshold\": 0.4,\n                \"k_multiplier\": 7,\n            },\n        ),\n        connection_pool=pool,\n    )\n\n    (embed, acompletion) = mocks\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}/render\",\n        json={\"messages\": [{\"role\": \"user\", \"content\": \"hello\"}]},\n    )\n\n    response.raise_for_status()\n\n    data = response.json()\n    messages = data[\"messages\"]\n    assert \"docs\" in data\n    assert \"tools\" in data\n\n    assert len(messages) > 0\n    assert messages[0][\"role\"] == \"system\"\n\n    embed.assert_called_once()\n    acompletion.assert_not_called()\n\n\n@test(\"query: prepare chat context\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    session=test_session,\n    tool=test_tool,\n    user=test_user,\n):\n    pool = await create_db_pool(dsn=dsn)\n    context = await prepare_chat_context(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )\n\n    assert isinstance(context, ChatContext)\n    assert len(context.toolsets) > 0\n\n\n@test(\"chat: test system template merging logic\")\nasync def _(\n    make_request=make_request,\n    developer_id=test_developer_id,\n    dsn=pg_dsn,\n    mocks=patch_embed_acompletion,\n):\n    \"\"\"Test that the system template merging logic works correctly.\n\n    - If agent.default_system_template is set and session.system_template is not set,\n      use the agent's default template.\n    - If session.system_template is set (regardless of whether agent.default_system_template is set),\n      use the session's template.\n    \"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create an agent with a default system template\n    agent_default_template = (\n        \"This is the agent's default system template {{agent.name.upper()}}\"\n    )\n    agent_data = CreateAgentRequest(\n        name=\"test agent with template\",\n        about=\"test agent about\",\n        model=\"gpt-4o-mini\",\n        default_system_template=agent_default_template,\n    )\n\n    agent = await create_agent(\n        developer_id=developer_id,\n        data=agent_data,\n        connection_pool=pool,\n    )\n\n    # Create a session without a system template (should use agent's default)\n    session1_data = CreateSessionRequest(\n        agent=agent.id,\n        situation=\"test session without template\",\n    )\n\n    session1 = await create_session(\n        developer_id=developer_id,\n        data=session1_data,\n        connection_pool=pool,\n    )\n\n    # Create a session with a system template (should override agent's default)\n    session_template = \"This is the session's system template: {{session.situation.upper()}}\"\n    session2_data = CreateSessionRequest(\n        agent=agent.id,\n        situation=\"test session with template\",\n        system_template=session_template,\n    )\n\n    session2 = await create_session(\n        developer_id=developer_id,\n        data=session2_data,\n        connection_pool=pool,\n    )\n\n    # Test session without system template (should use agent's default)\n    response1 = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session1.id}/render\",\n        json={\"messages\": [{\"role\": \"user\", \"content\": \"hello\"}]},\n    )\n\n    response1.raise_for_status()\n    data1 = response1.json()\n    messages1 = data1[\"messages\"]\n\n    # Test session with system template (should override agent's default)\n    response2 = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session2.id}/render\",\n        json={\"messages\": [{\"role\": \"user\", \"content\": \"hello\"}]},\n    )\n\n    response2.raise_for_status()\n    data2 = response2.json()\n    messages2 = data2[\"messages\"]\n\n    # Verify messages with session's template\n    assert len(messages2) > 0\n    assert messages2[0][\"role\"] == \"system\"\n    assert (\n        session2_data.situation.upper()\n        in messages2[0][\"content\"]  # pytype: disable=attribute-error\n    )\n\n    # Verify messages with agent's default template\n    assert len(messages1) > 0\n    assert messages1[0][\"role\"] == \"system\"\n    assert agent_data.name.upper() in messages1[0][\"content\"]\n\n\n@test(\"chat: validate the recall options for different modes in chat context\")\nasync def _(agent=test_agent, dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session about\",\n            system_template=\"test system template\",\n        ),\n        connection_pool=pool,\n    )\n\n    chat_context = await prepare_chat_context(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )\n\n    assert chat_context.session.recall_options == VectorDocSearch(\n        mode=\"vector\",\n        num_search_messages=4,\n        max_query_length=1000,\n        limit=10,\n        lang=\"en-US\",\n    )\n\n    # Create a session with a hybrid recall options to hybrid mode\n    data = CreateSessionRequest(\n        agent=agent.id,\n        situation=\"test session about\",\n        system_template=\"test system template\",\n        recall_options={\n            \"mode\": \"hybrid\",\n            \"num_search_messages\": 6,\n            \"max_query_length\": 800,\n            \"confidence\": 0.6,\n            \"limit\": 10,\n            \"mmr_strength\": 0.5,\n            \"lang\": \"en-US\",\n            \"alpha\": 0.75,\n            \"metadata_filter\": {\"hybridsearch\": \"hybridsearch\"},\n            \"trigram_similarity_threshold\": 0.4,\n            \"k_multiplier\": 7,\n        },\n    )\n\n    session = await create_session(\n        developer_id=developer_id,\n        data=data,\n        connection_pool=pool,\n    )\n\n    # assert session.recall_options == data.recall_options\n    chat_context = await prepare_chat_context(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )\n\n    assert chat_context.session.recall_options.mode == data.recall_options.mode\n    assert (\n        chat_context.session.recall_options.num_search_messages\n        == data.recall_options.num_search_messages\n    )\n    assert (\n        chat_context.session.recall_options.max_query_length\n        == data.recall_options.max_query_length\n    )\n    assert chat_context.session.recall_options.limit == data.recall_options.limit\n    assert chat_context.session.recall_options.lang == data.recall_options.lang\n    assert (\n        chat_context.session.recall_options.metadata_filter\n        == data.recall_options.metadata_filter\n    )\n    assert (\n        chat_context.session.recall_options.trigram_similarity_threshold\n        == data.recall_options.trigram_similarity_threshold\n    )\n    assert chat_context.session.recall_options.k_multiplier == data.recall_options.k_multiplier\n\n    # Update session to have a new recall options to text mode\n    data = CreateSessionRequest(\n        agent=agent.id,\n        situation=\"test session about\",\n        system_template=\"test system template\",\n        recall_options={\n            \"mode\": \"text\",\n            \"num_search_messages\": 6,\n            \"max_query_length\": 800,\n            \"metadata_filter\": {\"textsearch\": \"textsearch\"},\n            \"limit\": 10,\n            \"lang\": \"en-US\",\n            \"trigram_similarity_threshold\": 0.4,\n        },\n    )\n\n    session = await create_session(\n        developer_id=developer_id,\n        data=data,\n        connection_pool=pool,\n    )\n\n    # assert session.recall_options == data.recall_options\n    chat_context = await prepare_chat_context(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )\n\n    assert chat_context.session.recall_options.mode == data.recall_options.mode\n    assert (\n        chat_context.session.recall_options.num_search_messages\n        == data.recall_options.num_search_messages\n    )\n    assert (\n        chat_context.session.recall_options.max_query_length\n        == data.recall_options.max_query_length\n    )\n    assert chat_context.session.recall_options.limit == data.recall_options.limit\n    assert chat_context.session.recall_options.lang == data.recall_options.lang\n    assert (\n        chat_context.session.recall_options.metadata_filter\n        == data.recall_options.metadata_filter\n    )\n    assert (\n        chat_context.session.recall_options.trigram_similarity_threshold\n        == data.recall_options.trigram_similarity_threshold\n    )\n\n    # Update session to have a new recall options to vector mode\n    data = CreateSessionRequest(\n        agent=agent.id,\n        situation=\"test session about\",\n        system_template=\"test system template\",\n        recall_options={\n            \"mode\": \"vector\",\n            \"num_search_messages\": 6,\n            \"max_query_length\": 800,\n            \"limit\": 10,\n            \"lang\": \"en-US\",\n            \"metadata_filter\": {\"vectorsearch\": \"vectorsearch\"},\n            \"confidence\": 0.6,\n        },\n    )\n\n    session = await create_session(\n        developer_id=developer_id,\n        data=data,\n        connection_pool=pool,\n    )\n\n    # assert session.recall_options == data.recall_options\n    chat_context = await prepare_chat_context(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )\n\n    assert chat_context.session.recall_options.mode == data.recall_options.mode\n    assert (\n        chat_context.session.recall_options.num_search_messages\n        == data.recall_options.num_search_messages\n    )\n    assert (\n        chat_context.session.recall_options.max_query_length\n        == data.recall_options.max_query_length\n    )\n    assert chat_context.session.recall_options.limit == data.recall_options.limit\n    assert chat_context.session.recall_options.lang == data.recall_options.lang\n    assert (\n        chat_context.session.recall_options.metadata_filter\n        == data.recall_options.metadata_filter\n    )\n    assert chat_context.session.recall_options.confidence == data.recall_options.confidence\n    assert chat_context.session.recall_options.mmr_strength == 0.5\n"
  },
  {
    "path": "src/agents-api/tests/test_chat_streaming.py",
    "content": "\"\"\"Tests for the streaming logic in the chat function.\"\"\"\n\nimport json\nfrom unittest.mock import AsyncMock, MagicMock, patch\n\nfrom agents_api.autogen.openapi_model import (\n    ChatInput,\n    CreateSessionRequest,\n    DocReference,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.sessions.create_session import create_session\nfrom agents_api.routers.sessions.legacy.chat import _join_deltas, chat\nfrom fastapi import BackgroundTasks\nfrom starlette.responses import StreamingResponse\nfrom uuid_extensions import uuid7\nfrom ward import skip, test\n\nfrom .fixtures import (\n    pg_dsn,\n    test_agent,\n    test_developer,\n    test_developer_id,\n)\n\n\nasync def get_usage_records(dsn: str, developer_id: str, limit: int = 100):\n    \"\"\"Helper function to get usage records for testing.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    records = await pool.fetch(\n        \"\"\"\n        SELECT\n            developer_id,\n            model,\n            prompt_tokens,\n            completion_tokens,\n            cost,\n            estimated,\n            custom_api_used,\n            created_at,\n            metadata\n        FROM usage\n        WHERE developer_id = $1\n        ORDER BY created_at DESC\n        LIMIT $2;\"\"\",\n        developer_id,\n        limit,\n    )\n\n    # Convert records to dictionaries\n    return [dict(record) for record in records]\n\n\nasync def delete_usage_records(dsn: str, developer_id: str):\n    \"\"\"Helper function to delete usage records for testing.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    await pool.execute(\n        \"\"\"\n        DELETE FROM usage\n        WHERE developer_id = $1\n        \"\"\",\n        developer_id,\n    )\n\n\nasync def collect_stream_content(response: StreamingResponse) -> list[dict]:\n    \"\"\"Helper function to collect stream chunks in a list.\"\"\"\n    chunks = []\n    async for chunk in response.body_iterator:\n        # Ensure we're dealing with string data\n        if isinstance(chunk, bytes):\n            chunk = chunk.decode(\"utf-8\")\n\n        # Handle SSE format: data: {JSON}\\n\\n\n        if chunk.startswith(\"data: \"):\n            json_data = chunk[6:].strip()  # Remove 'data: ' prefix and whitespace\n            if json_data:  # Only parse non-empty data\n                chunks.append(json.loads(json_data))\n        else:\n            # Fallback for raw JSON (for backward compatibility)\n            chunk = chunk.strip()\n            if chunk:\n                chunks.append(json.loads(chunk))\n    return chunks\n\n\n@test(\"join_deltas: Test correct behavior\")\nasync def _():\n    \"\"\"Test that join_deltas works properly to merge deltas.\"\"\"\n    # Test initial case where content needs to be added\n    acc = {\"content\": \"\"}\n    delta = {\"content\": \"Hello\", \"role\": \"assistant\"}\n    result = _join_deltas(acc, delta)\n    assert result == {\"content\": \"Hello\", \"role\": \"assistant\"}\n\n    # Test appending content\n    acc = {\"content\": \"Hello\"}\n    delta = {\"content\": \" world!\", \"role\": \"assistant\"}\n    result = _join_deltas(acc, delta)\n    assert result == {\"content\": \"Hello world!\", \"role\": \"assistant\"}\n\n    # Test with no content in delta\n    acc = {\"content\": \"Hello world!\"}\n    delta = {\"finish_reason\": \"stop\"}\n    result = _join_deltas(acc, delta)\n    assert result == {\"content\": \"Hello world!\", \"finish_reason\": \"stop\"}\n\n    # Test with None content\n    acc = {\"content\": None}\n    delta = {\"content\": \"Hello\", \"role\": \"assistant\"}\n    result = _join_deltas(acc, delta)\n    assert result == {\"content\": \"Hello\", \"role\": \"assistant\"}\n\n    # Test with None content in delta\n    acc = {\"content\": \"Hello\"}\n    delta = {\"content\": None, \"role\": \"assistant\"}\n    result = _join_deltas(acc, delta)\n    assert result == {\"content\": \"Hello\", \"role\": \"assistant\"}\n\n\n@test(\"chat: Test streaming response format\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that streaming responses follow the correct format.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for streaming format\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Mock render_chat_input to return consistent values\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            [],  # doc_references\n            None,  # formatted_tools\n            {\"model\": \"gpt-4o-mini\"},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    with patch(\n        \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n    ):\n        # Create chat input with stream=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n        )\n\n        # Call the chat function with mock response that includes finish_reason\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n\n        # Verify response type is StreamingResponse\n        assert isinstance(response, StreamingResponse)\n        assert response.media_type == \"text/event-stream\"\n\n        # Collect and parse stream content\n        parsed_chunks = await collect_stream_content(response)\n\n        assert len(parsed_chunks) > 0\n\n        resulting_content = []\n\n        # Verify chunk format\n        for chunk in parsed_chunks:\n            assert \"id\" in chunk\n            assert \"created_at\" in chunk\n            assert \"choices\" in chunk\n            assert isinstance(chunk[\"choices\"], list)\n            for choice in chunk[\"choices\"]:\n                resulting_content.append(choice[\"delta\"][\"content\"] or \"\")\n                assert \"delta\" in choice\n                assert \"content\" in choice[\"delta\"]\n                assert \"finish_reason\" in choice\n                assert choice[\"finish_reason\"] in [\n                    \"stop\",\n                    \"length\",\n                    \"content_filter\",\n                    \"tool_calls\",\n                ]\n\n        assert \"\".join(resulting_content) == mock_response\n\n\n@test(\"chat: Test streaming with document references\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that document references are included in streaming response.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for streaming with documents\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Create document references with required fields\n    doc_refs = [\n        DocReference(\n            id=str(uuid7()),\n            title=\"Test Document 1\",\n            owner={\"id\": developer_id, \"role\": \"user\"},\n            snippet={\"index\": 0, \"content\": \"Test snippet 1\"},\n        ),\n        DocReference(\n            id=str(uuid7()),\n            title=\"Test Document 2\",\n            owner={\"id\": developer_id, \"role\": \"user\"},\n            snippet={\"index\": 0, \"content\": \"Test snippet 2\"},\n        ),\n    ]\n\n    # Mock render_chat_input to return document references\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            doc_refs,  # doc_references\n            None,  # formatted_tools\n            {\"model\": \"gpt-4o-mini\"},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    with patch(\n        \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n    ):\n        # Create chat input with stream=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n        )\n\n        # Call the chat function with mock response that includes finish_reason\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n\n        # Collect and parse stream content\n        parsed_chunks = await collect_stream_content(response)\n\n        # Verify document references in chunks\n        for chunk in parsed_chunks:\n            assert \"docs\" in chunk\n            assert len(chunk[\"docs\"]) == len(doc_refs)\n            for doc_ref in chunk[\"docs\"]:\n                assert \"id\" in doc_ref\n                assert \"title\" in doc_ref\n                assert \"owner\" in doc_ref\n                assert \"snippet\" in doc_ref\n\n\n@skip(\"Skipping message history saving test\")\n@test(\"chat: Test streaming with message history saving\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that messages are saved to history when streaming with save=True.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for streaming with history\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Mock render_chat_input to return consistent values\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            [],  # doc_references\n            None,  # formatted_tools\n            {\"model\": \"gpt-4o-mini\"},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    # Set up mocks\n    create_entries_mock = AsyncMock()\n\n    with (\n        patch(\n            \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n        ),\n        patch(\"agents_api.routers.sessions.legacy.chat.create_entries\", create_entries_mock),\n    ):\n        # Create chat input with stream=True and save=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n            save=True,\n        )\n\n        # Call the chat function with mock response that includes finish_reason\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n        _ = await collect_stream_content(response)\n\n        # Verify create_entries was called for user messages\n        create_entries_mock.assert_called_once()\n        call_args = create_entries_mock.call_args[1]\n        assert call_args[\"developer_id\"] == developer_id\n        assert call_args[\"session_id\"] == session.id\n        # Verify we're saving the user message\n        assert len(call_args[\"data\"]) == 1\n        assert call_args[\"data\"][0].role == \"user\"\n        assert call_args[\"data\"][0].content == \"Hello\"\n\n\n@test(\"chat: Test streaming with usage tracking\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that token usage is tracked in streaming responses.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for streaming usage tracking\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Mock render_chat_input to return consistent values\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            [],  # doc_references\n            None,  # formatted_tools\n            {\"model\": \"gpt-4o-mini\"},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    # Mock track_usage to verify it's called\n    track_usage_mock = AsyncMock()\n\n    with (\n        patch(\n            \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n        ),\n        patch(\"agents_api.routers.sessions.legacy.chat.track_usage\", track_usage_mock),\n    ):\n        # Create chat input with stream=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n        )\n\n        # Call the chat function with mock response that includes finish_reason and usage\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n\n        # Collect and parse stream content\n        parsed_chunks = await collect_stream_content(response)\n\n        # Verify usage data in the final chunk\n        final_chunk = parsed_chunks[-1]\n        assert \"usage\" in final_chunk\n        assert \"total_tokens\" in final_chunk[\"usage\"]\n\n        # Verify that track_usage was called for database tracking\n        track_usage_mock.assert_called_once()\n        call_args = track_usage_mock.call_args[1]\n        assert call_args[\"developer_id\"] == developer_id\n        assert call_args[\"model\"] == \"gpt-4o-mini\"\n        assert call_args[\"messages\"] == [{\"role\": \"user\", \"content\": \"Hello\"}]\n        assert call_args[\"custom_api_used\"] is False\n        assert \"streaming\" in call_args[\"metadata\"]\n        assert call_args[\"metadata\"][\"streaming\"] is True\n\n\n@test(\"chat: Test streaming with custom API key\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that streaming works with a custom API key.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for streaming with custom API key\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Mock render_chat_input to return consistent values\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            [],  # doc_references\n            None,  # formatted_tools\n            {\"model\": \"gpt-4o-mini\"},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    with patch(\n        \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n    ):\n        # Create chat input with stream=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n        )\n\n        # Call the chat function with custom API key and mock response that includes finish_reason\n        custom_api_key = \"test-api-key\"\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            x_custom_api_key=custom_api_key,\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n\n        # Verify response type is StreamingResponse\n        assert isinstance(response, StreamingResponse)\n        assert response.media_type == \"text/event-stream\"\n\n        # Collect and parse stream content\n        parsed_chunks = await collect_stream_content(response)\n\n        # Verify chunks are received\n        assert len(parsed_chunks) > 0\n\n\n@test(\"chat: Test streaming creates actual usage records in database\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that streaming creates actual usage records in the database.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for streaming usage database tracking\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Mock render_chat_input to return consistent values\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            [],  # doc_references\n            None,  # formatted_tools\n            {\"model\": \"gpt-4o-mini\"},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    # Get initial usage record count\n    initial_records = await get_usage_records(\n        dsn=dsn,\n        developer_id=str(developer_id),\n    )\n    initial_count = len(initial_records)\n\n    with patch(\n        \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n    ):\n        # Create chat input with stream=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n        )\n\n        # Call the chat function with mock response\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n\n        # Collect and parse stream content to complete the streaming\n        parsed_chunks = await collect_stream_content(response)\n\n        # Verify usage data in the final chunk\n        final_chunk = parsed_chunks[-1]\n        assert \"usage\" in final_chunk\n        assert \"total_tokens\" in final_chunk[\"usage\"]\n\n    # Get usage records after streaming\n    final_records = await get_usage_records(\n        dsn=dsn,\n        developer_id=str(developer_id),\n    )\n    final_count = len(final_records)\n\n    await delete_usage_records(dsn=dsn, developer_id=str(developer_id))\n\n    # Verify a new usage record was created\n    assert final_count == initial_count + 1\n\n    # Get the latest usage record\n    latest_record = final_records[0]  # Records are ordered by created_at DESC\n\n    # Verify the usage record details\n    assert str(latest_record[\"developer_id\"]) == str(developer_id)  # UUID comparison\n    assert latest_record[\"model\"] == \"gpt-4o-mini\"\n    assert latest_record[\"prompt_tokens\"] > 0\n    assert latest_record[\"completion_tokens\"] > 0\n    assert float(latest_record[\"cost\"]) > 0  # cost is NUMERIC type\n    assert latest_record[\"custom_api_used\"] is False\n    assert \"streaming\" in latest_record[\"metadata\"]\n    assert latest_record[\"metadata\"][\"streaming\"] is True\n    assert \"tags\" in latest_record[\"metadata\"]\n\n\n@test(\"chat: Test streaming with custom API key creates correct usage record\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that streaming with custom API key sets custom_api_used correctly.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for custom API usage tracking\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Mock render_chat_input to return consistent values\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            [],  # doc_references\n            None,  # formatted_tools\n            {\"model\": \"gpt-4o-mini\"},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    # Get initial usage record count\n    initial_records = await get_usage_records(\n        dsn=dsn,\n        developer_id=str(developer_id),\n    )\n    initial_count = len(initial_records)\n\n    with patch(\n        \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n    ):\n        # Create chat input with stream=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n        )\n\n        # Call the chat function with custom API key\n        custom_api_key = \"test-custom-api-key\"\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            x_custom_api_key=custom_api_key,\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n\n        # Collect and parse stream content to complete the streaming\n        parsed_chunks = await collect_stream_content(response)\n\n        # Verify usage data in the final chunk\n        final_chunk = parsed_chunks[-1]\n        assert \"usage\" in final_chunk\n\n    # Get usage records after streaming\n    final_records = await get_usage_records(\n        dsn=dsn,\n        developer_id=str(developer_id),\n    )\n    final_count = len(final_records)\n\n    # Verify a new usage record was created\n    assert final_count == initial_count + 1\n\n    # Get the latest usage record\n    latest_record = final_records[0]  # Records are ordered by created_at DESC\n\n    # Verify the usage record details for custom API usage\n    assert str(latest_record[\"developer_id\"]) == str(developer_id)  # UUID comparison\n    assert latest_record[\"model\"] == \"gpt-4o-mini\"\n    assert latest_record[\"custom_api_used\"] is True  # This should be True for custom API\n    assert \"streaming\" in latest_record[\"metadata\"]\n    assert latest_record[\"metadata\"][\"streaming\"] is True\n\n\n@test(\"chat: Test streaming usage tracking with developer tags\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that streaming includes developer tags in usage metadata.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for tags in usage tracking\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Mock render_chat_input to return consistent values\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            [],  # doc_references\n            None,  # formatted_tools\n            {\"model\": \"gpt-4o-mini\"},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    # Mock developer with tags\n    test_tags = [\"tag1\", \"tag2\", \"test\"]\n    developer_with_tags = developer\n    developer_with_tags.tags = test_tags\n\n    # Get initial usage record count\n    initial_records = await get_usage_records(\n        dsn=dsn,\n        developer_id=str(developer_id),\n    )\n    initial_count = len(initial_records)\n\n    with patch(\n        \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n    ):\n        # Create chat input with stream=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n        )\n\n        # Call the chat function\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer_with_tags,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n\n        # Collect and parse stream content to complete the streaming\n        parsed_chunks = await collect_stream_content(response)\n\n        # Verify usage data in the final chunk\n        final_chunk = parsed_chunks[-1]\n        assert \"usage\" in final_chunk\n\n    # Get usage records after streaming\n    final_records = await get_usage_records(\n        dsn=dsn,\n        developer_id=str(developer_id),\n    )\n    final_count = len(final_records)\n    await delete_usage_records(dsn=dsn, developer_id=str(developer_id))\n\n    # Verify a new usage record was created\n    assert final_count == initial_count + 1\n\n    # Get the latest usage record\n    latest_record = final_records[0]  # Records are ordered by created_at DESC\n\n    # Verify the usage record includes developer tags\n    assert str(latest_record[\"developer_id\"]) == str(developer_id)  # UUID comparison\n    assert latest_record[\"model\"] == \"gpt-4o-mini\"\n    assert \"streaming\" in latest_record[\"metadata\"]\n    assert latest_record[\"metadata\"][\"streaming\"] is True\n    assert \"tags\" in latest_record[\"metadata\"]\n    assert latest_record[\"metadata\"][\"tags\"] == test_tags\n\n\n@test(\"chat: Test streaming usage tracking with different models\")\nasync def _(\n    developer=test_developer,\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    \"\"\"Test that streaming correctly tracks usage for different models.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a session\n    session = await create_session(\n        developer_id=developer_id,\n        data=CreateSessionRequest(\n            agent=agent.id,\n            situation=\"test session for different model usage tracking\",\n        ),\n        connection_pool=pool,\n    )\n\n    test_model = \"gpt-3.5-turbo\"\n\n    # Mock render_chat_input to return the test model\n    async def mock_render(*args, **kwargs):\n        return (\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # messages\n            [],  # doc_references\n            None,  # formatted_tools\n            {\"model\": test_model},  # settings\n            [{\"role\": \"user\", \"content\": \"Hello\"}],  # new_messages\n            MagicMock(),  # chat_context\n        )\n\n    # Get initial usage record count\n    initial_records = await get_usage_records(\n        dsn=dsn,\n        developer_id=str(developer_id),\n    )\n    initial_count = len(initial_records)\n\n    with patch(\n        \"agents_api.routers.sessions.legacy.chat.render_chat_input\", side_effect=mock_render\n    ):\n        # Create chat input with stream=True\n        chat_input = ChatInput(\n            messages=[{\"role\": \"user\", \"content\": \"Hello\"}],\n            stream=True,\n        )\n\n        # Call the chat function\n        mock_response = \"This is a test response\"\n        response = await chat(\n            developer=developer,\n            session_id=session.id,\n            chat_input=chat_input,\n            background_tasks=BackgroundTasks(),\n            mock_response=mock_response,\n            connection_pool=pool,\n        )\n\n        # Collect and parse stream content to complete the streaming\n        parsed_chunks = await collect_stream_content(response)\n\n        # Verify usage data in the final chunk\n        final_chunk = parsed_chunks[-1]\n        assert \"usage\" in final_chunk\n\n    # Get usage records after streaming\n    final_records = await get_usage_records(\n        dsn=dsn,\n        developer_id=str(developer_id),\n    )\n    final_count = len(final_records)\n    await delete_usage_records(dsn=dsn, developer_id=str(developer_id))\n\n    # Verify a new usage record was created\n    assert final_count == initial_count + 1\n\n    # Get the latest usage record\n    latest_record = final_records[0]  # Records are ordered by created_at DESC\n\n    # Verify the usage record has the correct model\n    assert str(latest_record[\"developer_id\"]) == str(developer_id)  # UUID comparison\n    assert latest_record[\"model\"] == test_model\n    assert latest_record[\"prompt_tokens\"] > 0\n    assert latest_record[\"completion_tokens\"] > 0\n    assert float(latest_record[\"cost\"]) > 0  # cost is NUMERIC type\n    assert \"streaming\" in latest_record[\"metadata\"]\n    assert latest_record[\"metadata\"][\"streaming\"] is True\n"
  },
  {
    "path": "src/agents-api/tests/test_developer_queries.py",
    "content": "# Tests for agent queries\n\n\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.common.protocol.developers import Developer\nfrom agents_api.queries.developers.create_developer import create_developer\nfrom agents_api.queries.developers.get_developer import (\n    get_developer,\n)\nfrom agents_api.queries.developers.patch_developer import patch_developer\nfrom agents_api.queries.developers.update_developer import update_developer\nfrom uuid_extensions import uuid7\nfrom ward import raises, test\n\nfrom .fixtures import pg_dsn, random_email, test_new_developer\n\n\n@test(\"query: get developer not exists\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n    with raises(Exception):\n        await get_developer(\n            developer_id=uuid7(),\n            connection_pool=pool,\n        )\n\n\n@test(\"query: get developer exists\")\nasync def _(dsn=pg_dsn, dev=test_new_developer):\n    pool = await create_db_pool(dsn=dsn)\n    developer = await get_developer(\n        developer_id=dev.id,\n        connection_pool=pool,\n    )\n\n    assert type(developer) is Developer\n    assert developer.id == dev.id\n    assert developer.email == dev.email\n    assert developer.active\n    assert developer.tags == dev.tags\n    assert developer.settings == dev.settings\n\n\n@test(\"query: create developer\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n    dev_id = uuid7()\n    developer = await create_developer(\n        email=\"m@mail.com\",\n        active=True,\n        tags=[\"tag1\"],\n        settings={\"key1\": \"val1\"},\n        developer_id=dev_id,\n        connection_pool=pool,\n    )\n\n    assert type(developer) is Developer\n    assert developer.id == dev_id\n    assert developer.created_at is not None\n\n\n@test(\"query: update developer\")\nasync def _(dsn=pg_dsn, dev=test_new_developer, email=random_email):\n    pool = await create_db_pool(dsn=dsn)\n    developer = await update_developer(\n        email=email,\n        tags=[\"tag2\"],\n        settings={\"key2\": \"val2\"},\n        developer_id=dev.id,\n        connection_pool=pool,\n    )\n\n    assert developer.id == dev.id\n\n\n@test(\"query: patch developer\")\nasync def _(dsn=pg_dsn, dev=test_new_developer, email=random_email):\n    pool = await create_db_pool(dsn=dsn)\n    developer = await patch_developer(\n        email=email,\n        active=True,\n        tags=[\"tag2\"],\n        settings={\"key2\": \"val2\"},\n        developer_id=dev.id,\n        connection_pool=pool,\n    )\n\n    assert developer.id == dev.id\n    assert developer.email == email\n    assert developer.active\n    assert developer.tags == [*dev.tags, \"tag2\"]\n    assert developer.settings == {**dev.settings, \"key2\": \"val2\"}\n"
  },
  {
    "path": "src/agents-api/tests/test_docs_metadata_filtering.py",
    "content": "\"\"\"\nTests for secure metadata filtering in docs queries\n\"\"\"\n\nfrom agents_api.autogen.Docs import BulkDeleteDocsRequest, CreateDocRequest\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.docs.bulk_delete_docs import bulk_delete_docs\nfrom agents_api.queries.docs.create_doc import create_doc\nfrom agents_api.queries.docs.list_docs import list_docs\nfrom ward import test\n\nfrom .fixtures import pg_dsn, test_agent, test_developer, test_user\n\n\n@test(\"query: list_docs with SQL injection attempt in metadata filter\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    \"\"\"Test that list_docs safely handles metadata filters with SQL injection attempts.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a test document with normal metadata\n    doc_normal = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Test Doc Normal\",\n            content=\"Test content for normal doc\",\n            metadata={\"test_key\": \"test_value\"},\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # Create a test document with a special key that might be used in SQL injection\n    doc_special = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Test Doc Special\",\n            content=\"Test content for special doc\",\n            metadata={\"special; SELECT * FROM agents--\": \"special_value\"},\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # Attempt normal metadata filtering\n    docs_normal = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        metadata_filter={\"test_key\": \"test_value\"},\n        connection_pool=pool,\n    )\n\n    # Verify normal filtering works\n    assert any(d.id == doc_normal.id for d in docs_normal)\n    assert not any(d.id == doc_special.id for d in docs_normal)\n\n    # Attempt filtering with injection attempt\n    injection_filters = [\n        {\"key' OR 1=1--\": \"value\"},  # SQL injection in key\n        {\"key\": \"1' OR '1'='1\"},  # SQL injection in value\n        {\"key; DROP TABLE users--\": \"value\"},  # Command injection in key\n    ]\n\n    for injection_filter in injection_filters:\n        # These should safely execute without error, returning no results\n        docs_injection = await list_docs(\n            developer_id=developer.id,\n            owner_type=\"agent\",\n            owner_id=agent.id,\n            metadata_filter=injection_filter,\n            connection_pool=pool,\n        )\n\n        # Verify we don't get unexpected results\n        assert len(docs_injection) == 0, (\n            f\"Should not match any docs with injection filter: {injection_filter}\"\n        )\n\n    # Test exact matching for the special key metadata\n    docs_special = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        metadata_filter={\"special; SELECT * FROM agents--\": \"special_value\"},\n        connection_pool=pool,\n    )\n\n    # Verify exact matching works for special characters too\n    assert any(d.id == doc_special.id for d in docs_special)\n    assert not any(d.id == doc_normal.id for d in docs_special)\n\n\n@test(\"query: bulk_delete_docs with SQL injection attempt in metadata filter\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    \"\"\"Test that bulk_delete_docs safely handles metadata filters with SQL injection attempts.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create test documents with different metadata patterns\n    doc1 = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Doc for deletion test 1\",\n            content=\"Content for deletion test 1\",\n            metadata={\"delete_key\": \"delete_value\"},\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    doc2 = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Doc for deletion test 2\",\n            content=\"Content for deletion test 2\",\n            metadata={\"keep_key\": \"keep_value\"},\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    doc3 = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Doc for deletion test 3\",\n            content=\"Content for deletion test 3\",\n            metadata={\"special' DELETE FROM docs--\": \"special_value\"},\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # Verify all docs exist\n    all_docs = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    doc_ids = [d.id for d in all_docs]\n    assert doc1.id in doc_ids\n    assert doc2.id in doc_ids\n    assert doc3.id in doc_ids\n\n    # Delete with normal metadata filter\n    await bulk_delete_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        data=BulkDeleteDocsRequest(\n            metadata_filter={\"delete_key\": \"delete_value\"},\n            delete_all=False,\n        ),\n        connection_pool=pool,\n    )\n\n    # Verify only matching doc was deleted\n    remaining_docs = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    remaining_ids = [d.id for d in remaining_docs]\n    assert doc1.id not in remaining_ids  # Should be deleted\n    assert doc2.id in remaining_ids  # Should still exist\n    assert doc3.id in remaining_ids  # Should still exist\n\n    # Attempt deletion with injection metadata\n    injection_filters = [\n        {\"key' OR 1=1--\": \"value\"},  # SQL injection in key\n        {\"key\": \"1' OR '1'='1; DELETE FROM docs\"},  # SQL injection in value\n    ]\n\n    for injection_filter in injection_filters:\n        # These should execute without deleting unexpected docs\n        await bulk_delete_docs(\n            developer_id=developer.id,\n            owner_type=\"user\",\n            owner_id=user.id,\n            data=BulkDeleteDocsRequest(\n                metadata_filter=injection_filter,\n                delete_all=False,\n            ),\n            connection_pool=pool,\n        )\n\n    # Verify other docs still exist\n    still_remaining_docs = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    still_remaining_ids = [d.id for d in still_remaining_docs]\n    assert doc2.id in still_remaining_ids  # Should still exist\n    assert doc3.id in still_remaining_ids  # Should still exist\n\n    # Delete doc with special characters in metadata\n    await bulk_delete_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        data=BulkDeleteDocsRequest(\n            metadata_filter={\"special' DELETE FROM docs--\": \"special_value\"},\n            delete_all=False,\n        ),\n        connection_pool=pool,\n    )\n\n    # Verify special doc was deleted\n    final_docs = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    final_ids = [d.id for d in final_docs]\n    assert doc3.id not in final_ids  # Should be deleted\n    assert doc2.id in final_ids  # Should still exist\n"
  },
  {
    "path": "src/agents-api/tests/test_docs_queries.py",
    "content": "from uuid import uuid4\n\nfrom agents_api.autogen.openapi_model import CreateDocRequest, Doc\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.docs.create_doc import create_doc\nfrom agents_api.queries.docs.delete_doc import delete_doc\nfrom agents_api.queries.docs.get_doc import get_doc\nfrom agents_api.queries.docs.list_docs import list_docs\nfrom agents_api.queries.docs.search_docs_by_embedding import search_docs_by_embedding\nfrom agents_api.queries.docs.search_docs_by_text import search_docs_by_text\nfrom agents_api.queries.docs.search_docs_hybrid import search_docs_hybrid\nfrom fastapi import HTTPException\nfrom ward import raises, test\n\nfrom .fixtures import (\n    pg_dsn,\n    test_agent,\n    test_developer,\n    test_doc,\n    test_doc_with_embedding,\n    test_user,\n)\n\nEMBEDDING_SIZE: int = 1024\n\n\n@test(\"query: create user doc\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n    doc_created = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"User Doc\",\n            content=[\"Docs for user testing\", \"Docs for user testing 2\"],\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    assert isinstance(doc_created, Doc)\n    assert doc_created.id is not None\n\n    # Verify doc appears in user's docs\n    found = await get_doc(\n        developer_id=developer.id,\n        doc_id=doc_created.id,\n        connection_pool=pool,\n    )\n    assert found.id == doc_created.id\n\n\n@test(\"query: create user doc, user not found\")\nasync def _(dsn=pg_dsn, developer=test_developer):\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as e:\n        await create_doc(\n            developer_id=developer.id,\n            data=CreateDocRequest(\n                title=\"User Doc\",\n                content=[\"Docs for user testing\", \"Docs for user testing 2\"],\n                metadata={\"test\": \"test\"},\n                embed_instruction=\"Embed the document\",\n            ),\n            owner_type=\"user\",\n            owner_id=uuid4(),\n            connection_pool=pool,\n        )\n\n    assert e.raised.status_code == 409\n    assert e.raised.detail == \"Reference to user not found during create\"\n\n\n@test(\"query: create agent doc\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n    doc = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Agent Doc\",\n            content=\"Docs for agent testing\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n    assert isinstance(doc, Doc)\n    assert doc.id is not None\n\n    # Verify doc appears in agent's docs\n    docs_list = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n    assert any(d.id == doc.id for d in docs_list)\n\n\n@test(\"query: create agent doc, agent not found\")\nasync def _(dsn=pg_dsn, developer=test_developer):\n    agent_id = uuid4()\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as e:\n        await create_doc(\n            developer_id=developer.id,\n            data=CreateDocRequest(\n                title=\"Agent Doc\",\n                content=\"Docs for agent testing\",\n                metadata={\"test\": \"test\"},\n                embed_instruction=\"Embed the document\",\n            ),\n            owner_type=\"agent\",\n            owner_id=agent_id,\n            connection_pool=pool,\n        )\n\n    assert e.raised.status_code == 409\n    assert e.raised.detail == \"Reference to agent not found during create\"\n\n\n@test(\"query: get doc\")\nasync def _(dsn=pg_dsn, developer=test_developer, doc=test_doc):\n    pool = await create_db_pool(dsn=dsn)\n    doc_test = await get_doc(\n        developer_id=developer.id,\n        doc_id=doc.id,\n        connection_pool=pool,\n    )\n    assert isinstance(doc_test, Doc)\n    assert doc_test.id == doc.id\n    assert doc_test.title is not None\n    assert doc_test.content is not None\n\n\n@test(\"query: get doc with embeddings\")\nasync def _(dsn=pg_dsn, developer=test_developer, doc=test_doc_with_embedding):\n    pool = await create_db_pool(dsn=dsn)\n    # Get doc with embeddings (default behavior)\n    doc_with_emb = await get_doc(\n        developer_id=developer.id,\n        doc_id=doc.id,\n        include_embeddings=True,\n        connection_pool=pool,\n    )\n    assert isinstance(doc_with_emb, Doc)\n    assert doc_with_emb.id == doc.id\n    assert doc_with_emb.embeddings is not None\n    assert len(doc_with_emb.embeddings) > 0\n\n\n@test(\"query: get doc without embeddings\")\nasync def _(dsn=pg_dsn, developer=test_developer, doc=test_doc_with_embedding):\n    pool = await create_db_pool(dsn=dsn)\n    # Get doc without embeddings\n    doc_without_emb = await get_doc(\n        developer_id=developer.id,\n        doc_id=doc.id,\n        include_embeddings=False,\n        connection_pool=pool,\n    )\n    assert isinstance(doc_without_emb, Doc)\n    assert doc_without_emb.id == doc.id\n    assert doc_without_emb.title is not None\n    assert doc_without_emb.content is not None\n    # Embeddings should be None when not included\n    assert doc_without_emb.embeddings is None\n\n\n@test(\"query: list user docs\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a doc owned by the user\n    doc_user = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"User List Test\",\n            content=\"Some user doc content\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # List user's docs\n    docs_list = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n    assert len(docs_list) >= 1\n    assert any(d.id == doc_user.id for d in docs_list)\n    assert any(d.id == doc_user.id for d in docs_list)\n\n    # Create a doc with a different metadata\n    doc_user_different_metadata = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"User List Test 2\",\n            content=\"Some user doc content 2\",\n            metadata={\"test\": \"test2\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    docs_list_metadata = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n        metadata_filter={\"test\": \"test2\"},\n    )\n    assert len(docs_list_metadata) >= 1\n    assert any(d.id == doc_user_different_metadata.id for d in docs_list_metadata)\n    assert any(d.metadata == {\"test\": \"test2\"} for d in docs_list_metadata)\n\n\n@test(\"query: list user docs, invalid limit\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n\n    await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"User List Test\",\n            content=\"Some user doc content\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    with raises(HTTPException) as exc:\n        await list_docs(\n            developer_id=developer.id,\n            owner_type=\"user\",\n            owner_id=user.id,\n            connection_pool=pool,\n            limit=101,\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n\n@test(\"query: list user docs, invalid offset\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n\n    await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"User List Test\",\n            content=\"Some user doc content\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    with raises(HTTPException) as exc:\n        await list_docs(\n            developer_id=developer.id,\n            owner_type=\"user\",\n            owner_id=user.id,\n            connection_pool=pool,\n            offset=-1,\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Offset must be >= 0\"\n\n\n@test(\"query: list user docs, invalid sort by\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n\n    await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"User List Test\",\n            content=\"Some user doc content\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    with raises(HTTPException) as exc:\n        await list_docs(\n            developer_id=developer.id,\n            owner_type=\"user\",\n            owner_id=user.id,\n            connection_pool=pool,\n            sort_by=\"invalid\",\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort field\"\n\n\n@test(\"query: list user docs, invalid sort direction\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n\n    await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"User List Test\",\n            content=\"Some user doc content\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    with raises(HTTPException) as exc:\n        await list_docs(\n            developer_id=developer.id,\n            owner_type=\"user\",\n            owner_id=user.id,\n            connection_pool=pool,\n            direction=\"invalid\",\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort direction\"\n\n\n@test(\"query: list agent docs\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a doc owned by the agent\n    doc_agent = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Agent List Test\",\n            content=\"Some agent doc content\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # List agent's docs\n    docs_list = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    assert len(docs_list) >= 1\n    assert any(d.id == doc_agent.id for d in docs_list)\n\n\n@test(\"query: list docs without embeddings\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a doc owned by the agent\n    doc_agent = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Agent List Test No Embeddings\",\n            content=\"Some agent doc content for testing without embeddings\",\n            metadata={\"test\": \"test_no_embeddings\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # List agent's docs without embeddings\n    docs_list = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        include_embeddings=False,\n        connection_pool=pool,\n    )\n\n    assert len(docs_list) >= 1\n    # Find the doc we just created\n    created_doc = next((d for d in docs_list if d.id == doc_agent.id), None)\n    assert created_doc is not None\n    assert created_doc.embeddings is None  # Embeddings should be None when excluded\n\n    # Create a doc with a different metadata\n    doc_agent_different_metadata = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Agent List Test 2\",\n            content=\"Some agent doc content 2\",\n            metadata={\"test\": \"test2\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # List agent's docs\n    docs_list_metadata = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n        metadata_filter={\"test\": \"test2\"},\n    )\n    assert len(docs_list_metadata) >= 1\n    assert any(d.id == doc_agent_different_metadata.id for d in docs_list_metadata)\n    assert any(d.metadata == {\"test\": \"test2\"} for d in docs_list_metadata)\n\n\n@test(\"query: list agent docs, invalid limit\")\nasync def _(dsn=pg_dsn):\n    \"\"\"Test that listing agent docs with an invalid limit raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc:\n        await list_docs(\n            developer_id=uuid4(),\n            owner_type=\"agent\",\n            owner_id=uuid4(),\n            connection_pool=pool,\n            limit=101,\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n\n@test(\"query: list agent docs, invalid offset\")\nasync def _(dsn=pg_dsn):\n    \"\"\"Test that listing agent docs with an invalid offset raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc:\n        await list_docs(\n            developer_id=uuid4(),\n            owner_type=\"agent\",\n            owner_id=uuid4(),\n            connection_pool=pool,\n            offset=-1,\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Offset must be >= 0\"\n\n\n@test(\"query: list agent docs, invalid sort by\")\nasync def _(dsn=pg_dsn):\n    \"\"\"Test that listing agent docs with an invalid sort by raises an exception.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc:\n        await list_docs(\n            developer_id=uuid4(),\n            owner_type=\"agent\",\n            owner_id=uuid4(),\n            connection_pool=pool,\n            sort_by=\"invalid\",\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort field\"\n\n\n@test(\"query: list agent docs, invalid sort direction\")\nasync def _(dsn=pg_dsn):\n    \"\"\"Test that listing agent docs with an invalid sort direction raises an exception.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc:\n        await list_docs(\n            developer_id=uuid4(),\n            owner_type=\"agent\",\n            owner_id=uuid4(),\n            connection_pool=pool,\n            direction=\"invalid\",\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort direction\"\n\n\n@test(\"query: delete user doc\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a doc owned by the user\n    doc_user = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"User Delete Test\",\n            content=\"Doc for user deletion test\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # Delete the doc\n    await delete_doc(\n        developer_id=developer.id,\n        doc_id=doc_user.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # Verify doc is no longer in user's docs\n    docs_list = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n    assert not any(d.id == doc_user.id for d in docs_list)\n\n\n@test(\"query: delete agent doc\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a doc owned by the agent\n    doc_agent = await create_doc(\n        developer_id=developer.id,\n        data=CreateDocRequest(\n            title=\"Agent Delete Test\",\n            content=\"Doc for agent deletion test\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # Delete the doc\n    await delete_doc(\n        developer_id=developer.id,\n        doc_id=doc_agent.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # Verify doc is no longer in agent's docs\n    docs_list = await list_docs(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n    assert not any(d.id == doc_agent.id for d in docs_list)\n\n\n@test(\"query: search docs by text\")\nasync def _(dsn=pg_dsn, agent=test_agent, developer=test_developer):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a test document\n    doc = await create_doc(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        data=CreateDocRequest(\n            title=\"Hello\",\n            content=\"The world is a funny little thing\",\n            metadata={\"test\": \"test\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Search using simpler terms first\n    result = await search_docs_by_text(\n        developer_id=developer.id,\n        owners=[(\"agent\", agent.id)],\n        query=\"world\",\n        k=3,\n        search_language=\"english\",\n        metadata_filter={\"test\": \"test\"},\n        connection_pool=pool,\n    )\n\n    print(\"\\nSearch results:\", result)\n\n    # More specific assertions\n    assert len(result) >= 1, \"Should find at least one document\"\n    assert any(d.id == doc.id for d in result), f\"Should find document {doc.id}\"\n    assert result[0].metadata == {\"test\": \"test\"}, \"Metadata should match\"\n\n\n@test(\"query: search docs by text with technical terms and phrases\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create documents with technical content\n    doc1 = await create_doc(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        data=CreateDocRequest(\n            title=\"Technical Document\",\n            content=\"API endpoints using REST architecture with JSON payloads\",\n            metadata={\"domain\": \"technical\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        connection_pool=pool,\n    )\n\n    doc2 = await create_doc(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        data=CreateDocRequest(\n            title=\"More Technical Terms\",\n            content=\"Database optimization using indexing and query planning\",\n            metadata={\"domain\": \"technical\"},\n            embed_instruction=\"Embed the document\",\n        ),\n        connection_pool=pool,\n    )\n\n    # Test with technical terms\n    technical_queries = [\n        \"API endpoints\",\n        \"REST architecture\",\n        \"database optimization\",\n        \"indexing\",\n    ]\n\n    for query in technical_queries:\n        results = await search_docs_by_text(\n            developer_id=developer.id,\n            owners=[(\"agent\", agent.id)],\n            query=query,\n            k=3,\n            search_language=\"english\",\n            trigram_similarity_threshold=0.4,\n            connection_pool=pool,\n        )\n\n        print(f\"\\nSearch results for '{query}':\", results)\n\n        # Verify appropriate document is found based on query\n        if \"API\" in query or \"REST\" in query:\n            assert any(doc.id == doc1.id for doc in results), (\n                f\"Doc1 should be found with query '{query}'\"\n            )\n        if \"database\" in query.lower() or \"indexing\" in query:\n            assert any(doc.id == doc2.id for doc in results), (\n                f\"Doc2 should be found with query '{query}'\"\n            )\n\n\n@test(\"query: search docs by embedding\")\nasync def _(\n    dsn=pg_dsn,\n    agent=test_agent,\n    developer=test_developer,\n    doc=test_doc_with_embedding,\n):\n    pool = await create_db_pool(dsn=dsn)\n\n    assert doc.embeddings is not None\n\n    # Get query embedding by averaging the embeddings (list of floats)\n    query_embedding = [sum(k) / len(k) for k in zip(*doc.embeddings)]\n\n    # Search using the correct parameter types\n    result = await search_docs_by_embedding(\n        developer_id=developer.id,\n        owners=[(\"agent\", agent.id)],\n        embedding=query_embedding,\n        k=3,  # Add k parameter\n        metadata_filter={\"test\": \"test\"},  # Add metadata filter\n        connection_pool=pool,\n    )\n\n    assert len(result) >= 1\n    assert result[0].metadata is not None\n\n\n@test(\"query: search docs by hybrid\")\nasync def _(\n    dsn=pg_dsn,\n    agent=test_agent,\n    developer=test_developer,\n    doc=test_doc_with_embedding,\n):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Get query embedding by averaging the embeddings (list of floats)\n    query_embedding = [sum(k) / len(k) for k in zip(*doc.embeddings)]\n\n    # Search using the correct parameter types\n    result = await search_docs_hybrid(\n        developer_id=developer.id,\n        owners=[(\"agent\", agent.id)],\n        text_query=doc.content[0] if isinstance(doc.content, list) else doc.content,\n        embedding=query_embedding,\n        k=3,  # Add k parameter\n        metadata_filter={\"test\": \"test\"},  # Add metadata filter\n        trigram_similarity_threshold=0.4,\n        k_multiplier=7,\n        connection_pool=pool,\n    )\n\n    assert len(result) >= 1\n    assert result[0].metadata is not None\n\n\n# @test(\"query: search docs by embedding with different confidence levels\")\n# async def _(\n#     dsn=pg_dsn, agent=test_agent, developer=test_developer, doc=test_doc_with_embedding\n# ):\n#     pool = await create_db_pool(dsn=dsn)\n\n#     # Get query embedding (using original doc's embedding)\n#     query_embedding = make_vector_with_similarity(EMBEDDING_SIZE, 0.7)\n\n#     # Test with different confidence levels\n#     confidence_tests = [\n#         (0.99, 0),  # Very high similarity threshold - should find no results\n#         (0.7, 1),  # High similarity - should find 1 result (the embedding with all 1.0s)\n#         (0.3, 2),  # Medium similarity - should find 2 results (including 0.3-0.7 embedding)\n#         (-0.8, 3),  # Low similarity - should find 3 results (including -0.8 to 0.8 embedding)\n#         (-1.0, 4),  # Lowest similarity - should find all 4 results (including alternating -1/1)\n#     ]\n\n#     for confidence, expected_min_results in confidence_tests:\n#         results = await search_docs_by_embedding(\n#             developer_id=developer.id,\n#             owners=[(\"agent\", agent.id)],\n#             embedding=query_embedding,\n#             k=3,\n#             confidence=confidence,\n#             metadata_filter={\"test\": \"test\"},\n#             connection_pool=pool,\n#         )\n\n#         print(f\"\\nSearch results with confidence {confidence}:\")\n#         for r in results:\n#             print(f\"- Doc ID: {r.id}, Distance: {r.distance}\")\n\n#         assert len(results) >= expected_min_results, (\n#             f\"Expected at least {expected_min_results} results with confidence {confidence}, got {len(results)}\"\n#         )\n\n#         if results:\n#             # Verify that all returned results meet the confidence threshold\n#             for result in results:\n#                 assert result.distance >= confidence, (\n#                     f\"Result distance {result.distance} is below confidence threshold {confidence}\"\n#                 )\n"
  },
  {
    "path": "src/agents-api/tests/test_docs_routes.py",
    "content": "from ward import test\n\nfrom .fixtures import (\n    make_request,\n    patch_embed_acompletion,\n    test_agent,\n    test_doc,\n    test_doc_with_embedding,\n    test_user,\n    test_user_doc,\n)\nfrom .utils import patch_testing_temporal\n\n\n@test(\"route: create user doc\")\nasync def _(make_request=make_request, user=test_user):\n    async with patch_testing_temporal():\n        data = {\n            \"title\": \"Test User Doc\",\n            \"content\": [\"This is a test user document.\"],\n        }\n\n        response = make_request(\n            method=\"POST\",\n            url=f\"/users/{user.id}/docs\",\n            json=data,\n        )\n\n        assert response.status_code == 201\n\n\n@test(\"route: create agent doc\")\nasync def _(make_request=make_request, agent=test_agent):\n    async with patch_testing_temporal():\n        data = {\n            \"title\": \"Test Agent Doc\",\n            \"content\": [\"This is a test agent document.\"],\n        }\n\n        response = make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent.id}/docs\",\n            json=data,\n        )\n\n        assert response.status_code == 201\n\n\n@test(\"route: create agent doc with duplicate title should fail\")\nasync def _(make_request=make_request, agent=test_agent, user=test_user):\n    async with patch_testing_temporal():\n        data = {\n            \"title\": \"Test Duplicate Doc\",\n            \"content\": [\"This is a test duplicate document.\"],\n        }\n\n        response = make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent.id}/docs\",\n            json=data,\n        )\n\n        assert response.status_code == 201\n\n        # This should fail\n        response = make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent.id}/docs\",\n            json=data,\n        )\n\n        assert response.status_code == 409\n\n        # This should pass\n        response = make_request(\n            method=\"POST\",\n            url=f\"/users/{user.id}/docs\",\n            json=data,\n        )\n\n        assert response.status_code == 201\n\n\n@test(\"route: delete doc\")\nasync def _(make_request=make_request, agent=test_agent):\n    async with patch_testing_temporal():\n        data = {\n            \"title\": \"Test Agent Doc\",\n            \"content\": \"This is a test agent document.\",\n        }\n\n        response = make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent.id}/docs\",\n            json=data,\n        )\n        doc_id = response.json()[\"id\"]\n\n        response = make_request(\n            method=\"GET\",\n            url=f\"/docs/{doc_id}\",\n        )\n\n        assert response.status_code == 200\n        assert response.json()[\"id\"] == doc_id\n        assert response.json()[\"title\"] == \"Test Agent Doc\"\n        assert response.json()[\"content\"] == [\"This is a test agent document.\"]\n\n        response = make_request(\n            method=\"DELETE\",\n            url=f\"/agents/{agent.id}/docs/{doc_id}\",\n        )\n\n        assert response.status_code == 202\n\n        response = make_request(\n            method=\"GET\",\n            url=f\"/docs/{doc_id}\",\n        )\n\n        assert response.status_code == 404\n\n\n@test(\"route: get doc\")\nasync def _(make_request=make_request, agent=test_agent):\n    async with patch_testing_temporal():\n        data = {\n            \"title\": \"Test Agent Doc\",\n            \"content\": [\"This is a test agent document.\"],\n        }\n\n        response = make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent.id}/docs\",\n            json=data,\n        )\n        doc_id = response.json()[\"id\"]\n\n        response = make_request(\n            method=\"GET\",\n            url=f\"/docs/{doc_id}\",\n        )\n\n        assert response.status_code == 200\n\n\n@test(\"route: list user docs\")\ndef _(make_request=make_request, user=test_user):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user.id}/docs\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    docs = response[\"items\"]\n\n    assert isinstance(docs, list)\n\n\n@test(\"route: list agent docs\")\ndef _(make_request=make_request, agent=test_agent):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id}/docs\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    docs = response[\"items\"]\n\n    assert isinstance(docs, list)\n\n\n@test(\"route: list user docs with metadata filter\")\ndef _(make_request=make_request, user=test_user):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user.id}/docs\",\n        params={\n            \"metadata_filter\": {\"test\": \"test\"},\n        },\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    docs = response[\"items\"]\n\n    assert isinstance(docs, list)\n\n\n@test(\"route: list agent docs with metadata filter\")\ndef _(make_request=make_request, agent=test_agent):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id}/docs\",\n        params={\n            \"metadata_filter\": {\"test\": \"test\"},\n        },\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    docs = response[\"items\"]\n\n    assert isinstance(docs, list)\n\n\n@test(\"route: search agent docs\")\nasync def _(make_request=make_request, agent=test_agent, doc=test_doc):\n    search_params = {\n        \"text\": doc.content[0],\n        \"limit\": 1,\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/agents/{agent.id}/search\",\n        json=search_params,\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    docs = response[\"docs\"]\n\n    assert isinstance(docs, list)\n    assert len(docs) >= 1\n\n\n@test(\"route: search user docs\")\nasync def _(make_request=make_request, user=test_user, doc=test_user_doc):\n    search_params = {\n        \"text\": doc.content[0],\n        \"limit\": 1,\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/users/{user.id}/search\",\n        json=search_params,\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    docs = response[\"docs\"]\n\n    assert isinstance(docs, list)\n\n    assert len(docs) >= 1\n\n\n@test(\"route: search agent docs hybrid with mmr\")\nasync def _(make_request=make_request, agent=test_agent, doc=test_doc_with_embedding):\n    EMBEDDING_SIZE = 1024\n    search_params = {\n        \"text\": doc.content[0],\n        \"vector\": [1.0] * EMBEDDING_SIZE,\n        \"mmr_strength\": 0.5,\n        \"limit\": 1,\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/agents/{agent.id}/search\",\n        json=search_params,\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    docs = response[\"docs\"]\n\n    assert isinstance(docs, list)\n    assert len(docs) >= 1\n\n\n@test(\"routes: embed route\")\nasync def _(\n    make_request=make_request,\n    mocks=patch_embed_acompletion,\n):\n    (embed, _) = mocks\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/embed\",\n        json={\"text\": \"blah blah\"},\n    )\n\n    result = response.json()\n    assert \"vectors\" in result\n\n    embed.assert_called()\n\n\n@test(\"route: bulk delete agent docs\")\nasync def _(make_request=make_request, agent=test_agent):\n    for i in range(3):\n        data = {\n            \"title\": f\"Bulk Test Doc {i}\",\n            \"content\": [\"This is a test document for bulk deletion.\"],\n            \"metadata\": {\"bulk_test\": \"true\", \"index\": str(i)},\n        }\n        response = make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent.id}/docs\",\n            json=data,\n        )\n        assert response.status_code == 201\n\n    # Create a doc with different metadata\n    data = {\n        \"title\": \"Non Bulk Test Doc\",\n        \"content\": [\"This document should not be deleted.\"],\n        \"metadata\": {\"bulk_test\": \"false\"},\n    }\n    response = make_request(\n        method=\"POST\",\n        url=f\"/agents/{agent.id}/docs\",\n        json=data,\n    )\n    assert response.status_code == 201\n\n    # Verify all docs exist\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_before = response.json()[\"items\"]\n    assert len(docs_before) >= 4\n\n    # Bulk delete docs with specific metadata\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/agents/{agent.id}/docs\",\n        json={\"metadata_filter\": {\"bulk_test\": \"true\"}},\n    )\n    assert response.status_code == 202\n    deleted_response = response.json()\n    assert isinstance(deleted_response[\"items\"], list)\n    assert len(deleted_response[\"items\"]) == 3\n\n    # Verify that only the target docs were deleted\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_after = response.json()[\"items\"]\n    assert len(docs_after) == len(docs_before) - 3\n\n\n@test(\"route: bulk delete user docs - metadata filter\")\nasync def _(make_request=make_request, user=test_user):\n    for i in range(2):\n        data = {\n            \"title\": f\"User Bulk Test Doc {i}\",\n            \"content\": [\"This is a user test document for bulk deletion.\"],\n            \"metadata\": {\"user_bulk_test\": \"true\", \"index\": str(i)},\n        }\n        response = make_request(\n            method=\"POST\",\n            url=f\"/users/{user.id}/docs\",\n            json=data,\n        )\n        assert response.status_code == 201\n\n    # Verify docs exist\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_before = response.json()[\"items\"]\n\n    # Bulk delete docs with specific metadata\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/users/{user.id}/docs\",\n        json={\"metadata_filter\": {\"user_bulk_test\": \"true\"}},\n    )\n    assert response.status_code == 202\n    deleted_response = response.json()\n    assert isinstance(deleted_response[\"items\"], list)\n    assert len(deleted_response[\"items\"]) == 2\n\n    # Verify that only the target docs were deleted\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_after = response.json()[\"items\"]\n    assert len(docs_after) == len(docs_before) - 2\n\n\n@test(\"route: bulk delete agent docs - delete_all=true\")\nasync def _(make_request=make_request, agent=test_agent):\n    # Create several test docs\n    for i in range(3):\n        data = {\n            \"title\": f\"Delete All Test Doc {i}\",\n            \"content\": [\"This is a test document for delete_all.\"],\n            \"metadata\": {\"test_type\": \"delete_all_test\", \"index\": str(i)},\n        }\n        response = make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent.id}/docs\",\n            json=data,\n        )\n        assert response.status_code == 201\n\n    # Verify docs exist\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_before = response.json()[\"items\"]\n    initial_count = len(docs_before)\n    assert initial_count >= 3\n\n    # Bulk delete all docs with delete_all flag\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/agents/{agent.id}/docs\",\n        json={\"delete_all\": True},\n    )\n    assert response.status_code == 202\n    deleted_response = response.json()\n    assert isinstance(deleted_response[\"items\"], list)\n\n    # Verify all docs were deleted\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_after = response.json()[\"items\"]\n    assert len(docs_after) == 0\n\n\n@test(\"route: bulk delete agent docs - delete_all=false\")\nasync def _(make_request=make_request, agent=test_agent):\n    # Create test docs\n    for i in range(2):\n        data = {\n            \"title\": f\"Safety Test Doc {i}\",\n            \"content\": [\"This document should not be deleted by empty filter.\"],\n            \"metadata\": {\"test_type\": \"safety_test\"},\n        }\n        response = make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent.id}/docs\",\n            json=data,\n        )\n        assert response.status_code == 201\n\n    # Get initial doc count\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_before = response.json()[\"items\"]\n    initial_count = len(docs_before)\n    assert initial_count >= 2\n\n    # Try to delete with empty metadata filter and delete_all=false\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/agents/{agent.id}/docs\",\n        json={\"metadata_filter\": {}, \"delete_all\": False},\n    )\n    assert response.status_code == 202\n    deleted_response = response.json()\n    assert isinstance(deleted_response[\"items\"], list)\n    # Should have deleted 0 items\n    assert len(deleted_response[\"items\"]) == 0\n\n    # Verify no docs were deleted\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_after = response.json()[\"items\"]\n    assert len(docs_after) == initial_count\n\n\n@test(\"route: bulk delete user docs - delete_all=true\")\nasync def _(make_request=make_request, user=test_user):\n    # Create test docs\n    for i in range(2):\n        data = {\n            \"title\": f\"User Delete All Test {i}\",\n            \"content\": [\"This is a user test document for delete_all.\"],\n            \"metadata\": {\"test_type\": \"user_delete_all_test\"},\n        }\n        response = make_request(\n            method=\"POST\",\n            url=f\"/users/{user.id}/docs\",\n            json=data,\n        )\n        assert response.status_code == 201\n\n    # Verify docs exist\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_before = response.json()[\"items\"]\n    initial_count = len(docs_before)\n    assert initial_count >= 2\n\n    # Bulk delete all docs with delete_all flag\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/users/{user.id}/docs\",\n        json={\"delete_all\": True},\n    )\n    assert response.status_code == 202\n    deleted_response = response.json()\n    assert isinstance(deleted_response[\"items\"], list)\n\n    # Verify all docs were deleted\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_after = response.json()[\"items\"]\n    assert len(docs_after) == 0\n\n\n@test(\"route: bulk delete user docs - delete_all=false\")\nasync def _(make_request=make_request, user=test_user):\n    # Create test docs\n    for i in range(2):\n        data = {\n            \"title\": f\"User Safety Test Doc {i}\",\n            \"content\": [\"This user document should not be deleted by empty filter.\"],\n            \"metadata\": {\"test_type\": \"user_safety_test\"},\n        }\n        response = make_request(\n            method=\"POST\",\n            url=f\"/users/{user.id}/docs\",\n            json=data,\n        )\n        assert response.status_code == 201\n\n    # Get initial doc count\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_before = response.json()[\"items\"]\n    initial_count = len(docs_before)\n    assert initial_count >= 2\n\n    # Try to delete with empty metadata filter and delete_all=false\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/users/{user.id}/docs\",\n        json={\"metadata_filter\": {}, \"delete_all\": False},\n    )\n    assert response.status_code == 202\n    deleted_response = response.json()\n    assert isinstance(deleted_response[\"items\"], list)\n    # Should have deleted 0 items\n    assert len(deleted_response[\"items\"]) == 0\n\n    # Verify no docs were deleted\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user.id}/docs\",\n    )\n    assert response.status_code == 200\n    docs_after = response.json()[\"items\"]\n    assert len(docs_after) == initial_count\n"
  },
  {
    "path": "src/agents-api/tests/test_entry_queries.py",
    "content": "\"\"\"\nThis module contains tests for entry queries against the CozoDB database.\nIt verifies the functionality of adding, retrieving, and processing entries as defined in the schema.\n\"\"\"\n\nfrom agents_api.autogen.openapi_model import (\n    CreateEntryRequest,\n    Entry,\n    History,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.entries import (\n    create_entries,\n    delete_entries,\n    get_history,\n    list_entries,\n)\nfrom fastapi import HTTPException\nfrom uuid_extensions import uuid7\nfrom ward import raises, test\n\nfrom tests.fixtures import pg_dsn, test_developer, test_developer_id, test_session\n\nMODEL = \"gpt-4o-mini\"\n\n\n@test(\"query: create entry no session\")\nasync def _(dsn=pg_dsn, developer=test_developer):\n    \"\"\"Test the addition of a new entry to the database.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    test_entry = CreateEntryRequest.from_model_input(\n        model=MODEL,\n        role=\"user\",\n        source=\"internal\",\n        content=\"test entry content\",\n    )\n\n    with raises(HTTPException) as exc_info:\n        await create_entries(\n            developer_id=developer.id,\n            session_id=uuid7(),\n            data=[test_entry],\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n    assert exc_info.raised.status_code == 404\n\n\n@test(\"query: list entries sql - no session\")\nasync def _(dsn=pg_dsn, developer=test_developer):\n    \"\"\"Test the retrieval of entries from the database.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc_info:\n        await list_entries(\n            developer_id=developer.id,\n            session_id=uuid7(),\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n    assert exc_info.raised.status_code == 404\n\n\n@test(\"query: list entries sql, invalid limit\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing entries with an invalid limit raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc_info:\n        await list_entries(\n            developer_id=developer_id,\n            session_id=uuid7(),\n            limit=1001,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n    assert exc_info.raised.status_code == 400\n    assert exc_info.raised.detail == \"Limit must be between 1 and 1000\"\n\n    with raises(HTTPException) as exc_info:\n        await list_entries(\n            developer_id=developer_id,\n            session_id=uuid7(),\n            limit=0,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n    assert exc_info.raised.status_code == 400\n    assert exc_info.raised.detail == \"Limit must be between 1 and 1000\"\n\n\n@test(\"query: list entries sql, invalid offset\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing entries with an invalid offset raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc_info:\n        await list_entries(\n            developer_id=developer_id,\n            session_id=uuid7(),\n            offset=-1,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n    assert exc_info.raised.status_code == 400\n    assert exc_info.raised.detail == \"Offset must be >= 0\"\n\n\n@test(\"query: list entries sql, invalid sort by\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing entries with an invalid sort by raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc_info:\n        await list_entries(\n            developer_id=developer_id,\n            session_id=uuid7(),\n            sort_by=\"invalid\",\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n    assert exc_info.raised.status_code == 400\n    assert exc_info.raised.detail == \"Invalid sort field\"\n\n\n@test(\"query: list entries sql, invalid sort direction\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing entries with an invalid sort direction raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc_info:\n        await list_entries(\n            developer_id=developer_id,\n            session_id=uuid7(),\n            direction=\"invalid\",\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n    assert exc_info.raised.status_code == 400\n    assert exc_info.raised.detail == \"Invalid sort direction\"\n\n\n@test(\"query: list entries sql - session exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session):\n    \"\"\"Test the retrieval of entries from the database.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    test_entry = CreateEntryRequest.from_model_input(\n        model=MODEL,\n        role=\"user\",\n        source=\"api_request\",\n        content=\"test entry content\",\n    )\n\n    internal_entry = CreateEntryRequest.from_model_input(\n        model=MODEL,\n        role=\"user\",\n        content=\"test entry content\",\n        source=\"internal\",\n    )\n\n    await create_entries(\n        developer_id=developer_id,\n        session_id=session.id,\n        data=[test_entry, internal_entry],\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    result = await list_entries(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    # Assert that only one entry is retrieved, matching the session_id.\n    assert len(result) == 1\n    assert isinstance(result[0], Entry)\n    assert result is not None\n\n\n@test(\"query: get history sql - session exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session):\n    \"\"\"Test the retrieval of entry history from the database.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    test_entry = CreateEntryRequest.from_model_input(\n        model=MODEL,\n        role=\"user\",\n        source=\"api_request\",\n        content=\"test entry content\",\n    )\n\n    internal_entry = CreateEntryRequest.from_model_input(\n        model=MODEL,\n        role=\"user\",\n        content=\"test entry content\",\n        source=\"internal\",\n    )\n\n    await create_entries(\n        developer_id=developer_id,\n        session_id=session.id,\n        data=[test_entry, internal_entry],\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    result = await get_history(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    # Assert that entries are retrieved and have valid IDs.\n    assert result is not None\n    assert isinstance(result, History)\n    assert len(result.entries) > 0\n    assert result.entries[0].id\n\n\n@test(\"query: delete entries sql - session exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session):\n    \"\"\"Test the deletion of entries from the database.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    test_entry = CreateEntryRequest.from_model_input(\n        model=MODEL,\n        role=\"user\",\n        source=\"api_request\",\n        content=\"test entry content\",\n    )\n\n    internal_entry = CreateEntryRequest.from_model_input(\n        model=MODEL,\n        role=\"user\",\n        content=\"internal entry content\",\n        source=\"internal\",\n    )\n\n    created_entries = await create_entries(\n        developer_id=developer_id,\n        session_id=session.id,\n        data=[test_entry, internal_entry],\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    entry_ids = [entry.id for entry in created_entries]\n\n    await delete_entries(\n        developer_id=developer_id,\n        session_id=session.id,\n        entry_ids=entry_ids,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    result = await list_entries(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    # Assert that no entries are retrieved after deletion.\n    assert all(id not in [entry.id for entry in result] for id in entry_ids)\n    assert len(result) == 0\n    assert result is not None\n"
  },
  {
    "path": "src/agents-api/tests/test_execution_queries.py",
    "content": "# # Tests for execution queries\n\nfrom agents_api.autogen.openapi_model import (\n    CreateExecutionRequest,\n    CreateTransitionRequest,\n    Execution,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.executions.count_executions import count_executions\nfrom agents_api.queries.executions.create_execution import create_execution\nfrom agents_api.queries.executions.create_execution_transition import (\n    create_execution_transition,\n)\nfrom agents_api.queries.executions.create_temporal_lookup import create_temporal_lookup\nfrom agents_api.queries.executions.get_execution import get_execution\nfrom agents_api.queries.executions.list_executions import list_executions\nfrom agents_api.queries.executions.lookup_temporal_data import lookup_temporal_data\nfrom fastapi import HTTPException\nfrom temporalio.client import WorkflowHandle\nfrom uuid_extensions import uuid7\nfrom ward import raises, test\n\nfrom tests.fixtures import (\n    pg_dsn,\n    test_developer_id,\n    test_execution,\n    test_execution_started,\n    test_task,\n)\n\nMODEL = \"gpt-4o-mini\"\n\n\n@test(\"query: create execution\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, task=test_task):\n    pool = await create_db_pool(dsn=dsn)\n    workflow_handle = WorkflowHandle(\n        client=None,\n        id=\"blah\",\n    )\n\n    execution = await create_execution(\n        developer_id=developer_id,\n        task_id=task.id,\n        data=CreateExecutionRequest(input={\"test\": \"test\"}),\n        connection_pool=pool,\n    )\n\n    await create_temporal_lookup(\n        execution_id=execution.id,\n        workflow_handle=workflow_handle,\n        connection_pool=pool,\n    )\n\n    assert execution.status == \"queued\"\n    assert execution.input == {\"test\": \"test\"}\n\n\n@test(\"query: get execution\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, execution=test_execution):\n    pool = await create_db_pool(dsn=dsn)\n    result = await get_execution(\n        execution_id=execution.id,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert isinstance(result, Execution)\n    assert result.status == \"queued\"\n\n\n@test(\"query: lookup temporal id\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, execution=test_execution):\n    pool = await create_db_pool(dsn=dsn)\n    result = await lookup_temporal_data(\n        execution_id=execution.id,\n        developer_id=developer_id,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert result[\"id\"]\n\n\n@test(\"query: list executions\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    execution=test_execution_started,\n    task=test_task,\n):\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_executions(\n        developer_id=developer_id,\n        task_id=task.id,\n        connection_pool=pool,\n    )\n\n    assert isinstance(result, list)\n    assert len(result) >= 1\n    assert result[0].status == \"starting\"\n\n\n@test(\"query: list executions, invalid limit\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    task=test_task,\n):\n    \"\"\"Test that listing executions with an invalid limit raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_executions(\n            developer_id=developer_id,\n            task_id=task.id,\n            connection_pool=pool,\n            limit=101,\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n    with raises(HTTPException) as exc:\n        await list_executions(\n            developer_id=developer_id,\n            task_id=task.id,\n            connection_pool=pool,\n            limit=0,\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n\n@test(\"query: list executions, invalid offset\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    task=test_task,\n):\n    \"\"\"Test that listing executions with an invalid offset raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_executions(\n            developer_id=developer_id,\n            task_id=task.id,\n            connection_pool=pool,\n            offset=-1,\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Offset must be >= 0\"\n\n\n@test(\"query: list executions, invalid sort by\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    task=test_task,\n):\n    \"\"\"Test that listing executions with an invalid sort by raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_executions(\n            developer_id=developer_id,\n            task_id=task.id,\n            connection_pool=pool,\n            sort_by=\"invalid\",\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort field\"\n\n\n@test(\"query: list executions, invalid sort direction\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    task=test_task,\n):\n    \"\"\"Test that listing executions with an invalid sort direction raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_executions(\n            developer_id=developer_id,\n            task_id=task.id,\n            connection_pool=pool,\n            direction=\"invalid\",\n        )\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort direction\"\n\n\n@test(\"query: count executions\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    execution=test_execution_started,\n    task=test_task,\n):\n    pool = await create_db_pool(dsn=dsn)\n    result = await count_executions(\n        developer_id=developer_id,\n        task_id=task.id,\n        connection_pool=pool,\n    )\n\n    assert isinstance(result, dict)\n    assert result[\"count\"] > 0\n\n\n@test(\"query: create execution transition\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, execution=test_execution):\n    pool = await create_db_pool(dsn=dsn)\n    scope_id = uuid7()\n    result = await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"init_branch\",\n            output={\"result\": \"test\"},\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n            next={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n        ),\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert result.type == \"init_branch\"\n    assert result.output == {\"result\": \"test\"}\n\n\n@test(\"query: create execution transition - validate transition targets\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, execution=test_execution):\n    pool = await create_db_pool(dsn=dsn)\n    scope_id = uuid7()\n    await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"init_branch\",\n            output={\"result\": \"test\"},\n            current={\"workflow\": \"subworkflow\", \"step\": 0, \"scope_id\": scope_id},\n            next={\"workflow\": \"subworkflow\", \"step\": 0, \"scope_id\": scope_id},\n        ),\n        connection_pool=pool,\n    )\n\n    await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"step\",\n            output={\"result\": \"test\"},\n            current={\"workflow\": \"subworkflow\", \"step\": 0, \"scope_id\": scope_id},\n            next={\"workflow\": \"subworkflow\", \"step\": 1, \"scope_id\": scope_id},\n        ),\n        connection_pool=pool,\n    )\n\n    result = await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"step\",\n            output={\"result\": \"test\"},\n            current={\"workflow\": \"subworkflow\", \"step\": 1, \"scope_id\": scope_id},\n            next={\"workflow\": \"subworkflow\", \"step\": 0, \"scope_id\": uuid7()},\n        ),\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert result.type == \"step\"\n    assert result.output == {\"result\": \"test\"}\n\n\n@test(\"query: create execution transition with execution update\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    execution=test_execution_started,\n):\n    pool = await create_db_pool(dsn=dsn)\n    scope_id = uuid7()\n    result = await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"cancelled\",\n            output={\"result\": \"test\"},\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n            next=None,\n        ),\n        # task_id=task.id,\n        # update_execution_status=True,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert result.type == \"cancelled\"\n    assert result.output == {\"result\": \"test\"}\n\n\n@test(\"query: get execution with transitions count\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, execution=test_execution_started):\n    pool = await create_db_pool(dsn=dsn)\n    result = await get_execution(\n        execution_id=execution.id,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert isinstance(result, Execution)\n    assert result.status == \"starting\"\n    # Since we create one init transition in the test_execution_started fixture\n    assert result.transition_count == 1\n\n\n@test(\"query: list executions with latest_executions view\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    execution=test_execution_started,\n    task=test_task,\n):\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_executions(\n        developer_id=developer_id,\n        task_id=task.id,\n        sort_by=\"updated_at\",\n        direction=\"asc\",\n        connection_pool=pool,\n    )\n\n    assert isinstance(result, list)\n    assert len(result) >= 1\n    assert result[0].status == \"starting\"\n    # Since we create one init transition in the test_execution_started fixture\n    assert hasattr(result[0], \"transition_count\")\n\n\n@test(\"query: execution with finish transition\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    execution=test_execution_started,\n):\n    pool = await create_db_pool(dsn=dsn)\n    scope_id = uuid7()\n\n    # Create a finish transition - this would have failed with the old query\n    # because there's no step definition for finish transitions\n    await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"finish\",\n            output={\"result\": \"completed successfully\"},\n            current={\"workflow\": \"main\", \"step\": 1, \"scope_id\": scope_id},\n            next=None,\n        ),\n        connection_pool=pool,\n    )\n\n    # Get the execution and verify it has the correct status\n    result = await get_execution(\n        execution_id=execution.id,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert result.status == \"succeeded\"\n    assert result.transition_count == 2  # init + finish\n\n\n@test(\"query: execution with error transition\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    task=test_task,\n):\n    pool = await create_db_pool(dsn=dsn)\n    workflow_handle = WorkflowHandle(\n        client=None,\n        id=\"error_test\",\n    )\n\n    # Create a new execution\n    execution = await create_execution(\n        developer_id=developer_id,\n        task_id=task.id,\n        data=CreateExecutionRequest(input={\"test\": \"error_test\"}),\n        connection_pool=pool,\n    )\n    await create_temporal_lookup(\n        execution_id=execution.id,\n        workflow_handle=workflow_handle,\n        connection_pool=pool,\n    )\n\n    scope_id = uuid7()\n\n    # Add an init transition\n    await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"init\",\n            output={},\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n            next={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n        ),\n        connection_pool=pool,\n    )\n\n    # Add an error transition - this would have failed with the old query\n    # because there's no step definition for error transitions\n    await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"error\",\n            output={\"error\": \"Something went wrong\"},\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n            next=None,\n        ),\n        connection_pool=pool,\n    )\n\n    # Get the execution and verify it has the correct status\n    result = await get_execution(\n        execution_id=execution.id,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert result.status == \"failed\"\n    assert result.error == \"Something went wrong\"\n    assert result.transition_count == 2  # init + error\n"
  },
  {
    "path": "src/agents-api/tests/test_execution_workflow.py",
    "content": "# Tests for task queries\n\nimport asyncio\nimport json\nfrom unittest.mock import patch\n\nimport yaml\nfrom agents_api.autogen.openapi_model import (\n    CreateExecutionRequest,\n    CreateTaskRequest,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.tasks.create_task import create_task\nfrom agents_api.routers.tasks.create_task_execution import start_execution\nfrom google.protobuf.json_format import MessageToDict\nfrom litellm import Choices, ModelResponse\nfrom ward import raises, skip, test\n\nfrom .fixtures import (\n    pg_dsn,\n    s3_client,\n    test_agent,\n    test_developer_id,\n)\nfrom .utils import patch_integration_service, patch_testing_temporal\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: evaluate step single\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"hello\": '\"world\"'}}],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] == \"world\"\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: evaluate step multiple\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[\n                {\"evaluate\": {\"hello\": '\"nope\"'}},\n                {\"evaluate\": {\"hello\": '\"world\"'}},\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] == \"world\"\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: variable access in expressions\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[\n                # Testing that we can access the input\n                {\"evaluate\": {\"hello\": '_[\"test\"]'}},\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] == data.input[\"test\"]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: yield step\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            other_workflow=[\n                # Testing that we can access the input\n                {\"evaluate\": {\"hello\": '_[\"test\"]'}},\n            ],\n            main=[\n                # Testing that we can access the input\n                {\n                    \"workflow\": \"other_workflow\",\n                    \"arguments\": {\"test\": '_[\"test\"]'},\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] == data.input[\"test\"]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: sleep step\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            other_workflow=[\n                # Testing that we can access the input\n                {\"evaluate\": {\"hello\": '_[\"test\"]'}},\n                {\"sleep\": {\"days\": 5}},\n            ],\n            main=[\n                # Testing that we can access the input\n                {\n                    \"workflow\": \"other_workflow\",\n                    \"arguments\": {\"test\": '_[\"test\"]'},\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] == data.input[\"test\"]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: return step direct\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[\n                # Testing that we can access the input\n                {\"evaluate\": {\"hello\": '_[\"test\"]'}},\n                {\"return\": {\"value\": '_[\"hello\"]'}},\n                {\"return\": {\"value\": '\"banana\"'}},\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"value\"] == data.input[\"test\"]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: return step nested\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            other_workflow=[\n                # Testing that we can access the input\n                {\"evaluate\": {\"hello\": '_[\"test\"]'}},\n                {\"return\": {\"value\": '_[\"hello\"]'}},\n                {\"return\": {\"value\": '\"banana\"'}},\n            ],\n            main=[\n                # Testing that we can access the input\n                {\n                    \"workflow\": \"other_workflow\",\n                    \"arguments\": {\"test\": '_[\"test\"]'},\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"value\"] == data.input[\"test\"]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: log step\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            other_workflow=[\n                # Testing that we can access the input\n                {\"evaluate\": {\"hello\": '_[\"test\"]'}},\n                {\"log\": \"{{_.hello}}\"},\n            ],\n            main=[\n                # Testing that we can access the input\n                {\n                    \"workflow\": \"other_workflow\",\n                    \"arguments\": {\"test\": '_[\"test\"]'},\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] == data.input[\"test\"]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: log step expression fail\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            other_workflow=[\n                # Testing that we can access the input\n                {\"evaluate\": {\"hello\": '_[\"test\"]'}},\n                {\"log\": '{{_[\"hell\"].strip()}}'},  # <--- The \"hell\" key does not exist\n            ],\n            main=[\n                # Testing that we can access the input\n                {\n                    \"workflow\": \"other_workflow\",\n                    \"arguments\": {\"test\": '_[\"test\"]'},\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        with raises(BaseException):\n            execution, handle = await start_execution(\n                developer_id=developer_id,\n                task_id=task.id,\n                data=data,\n                connection_pool=pool,\n            )\n\n            assert handle is not None\n            assert execution.task_id == task.id\n            assert execution.input == data.input\n            mock_run_task_execution_workflow.assert_called_once()\n\n            result = await handle.result()\n            assert result[\"hello\"] == data.input[\"test\"]\n\n\n@skip(\"workflow: thread race condition\")\n@test(\"workflow: system call - list agents\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"Test system tool task\",\n            description=\"List agents using system call\",\n            input_schema={\"type\": \"object\"},\n            tools=[\n                {\n                    \"name\": \"list_agents\",\n                    \"description\": \"List all agents\",\n                    \"type\": \"system\",\n                    \"system\": {\"resource\": \"agent\", \"operation\": \"list\"},\n                },\n            ],\n            main=[\n                {\n                    \"tool\": \"list_agents\",\n                    \"arguments\": {\n                        \"limit\": \"10\",\n                    },\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        pool = await create_db_pool(dsn=dsn)\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert isinstance(result, list)\n        # Result's length should be less than or equal to the limit\n        assert len(result) <= 10\n        # Check if all items are agent dictionaries\n        assert all(isinstance(agent, dict) for agent in result)\n        # Check if each agent has an 'id' field\n        assert all(\"id\" in agent for agent in result)\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: tool call api_call\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            inherit_tools=True,\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            tools=[\n                {\n                    \"type\": \"api_call\",\n                    \"name\": \"hello\",\n                    \"api_call\": {\n                        \"method\": \"GET\",\n                        \"url\": \"https://httpbin.org/get\",\n                    },\n                },\n            ],\n            main=[\n                {\n                    \"tool\": \"hello\",\n                    \"arguments\": {\n                        \"params\": {\"test\": \"_.test\"},\n                    },\n                },\n                {\n                    \"evaluate\": {\"hello\": \"_.json.args.test\"},\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] == data.input[\"test\"]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: tool call api_call test retry\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n    status_codes_to_retry = \",\".join(str(code) for code in (408, 429, 503, 504))\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            inherit_tools=True,\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            tools=[\n                {\n                    \"type\": \"api_call\",\n                    \"name\": \"hello\",\n                    \"api_call\": {\n                        \"method\": \"GET\",\n                        \"url\": f\"https://httpbin.org/status/{status_codes_to_retry}\",\n                    },\n                },\n            ],\n            main=[\n                {\n                    \"tool\": \"hello\",\n                    \"arguments\": {\n                        \"params\": {\"test\": \"_.test\"},\n                    },\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        _execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        mock_run_task_execution_workflow.assert_called_once()\n\n        # Let it run for a bit\n        result_coroutine = handle.result()\n        task = asyncio.create_task(result_coroutine)\n        try:\n            await asyncio.wait_for(task, timeout=10)\n        except BaseException:\n            task.cancel()\n\n        # Get the history\n        history = await handle.fetch_history()\n        events = [MessageToDict(e) for e in history.events]\n        assert len(events) > 0\n\n        # NOTE: super janky but works\n        events_strings = [json.dumps(event) for event in events]\n        num_retries = len([event for event in events_strings if \"execute_api_call\" in event])\n\n        assert num_retries >= 2\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: tool call integration dummy\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            tools=[\n                {\n                    \"type\": \"integration\",\n                    \"name\": \"hello\",\n                    \"integration\": {\n                        \"provider\": \"dummy\",\n                    },\n                },\n            ],\n            main=[\n                {\n                    \"tool\": \"hello\",\n                    \"arguments\": {\"test\": \"_.test\"},\n                },\n            ],\n            inherit_tools=True,\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"test\"] == data.input[\"test\"]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: tool call integration mocked weather\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            tools=[\n                {\n                    \"type\": \"integration\",\n                    \"name\": \"get_weather\",\n                    \"integration\": {\n                        \"provider\": \"weather\",\n                        \"setup\": {\"openweathermap_api_key\": \"test\"},\n                        \"arguments\": {\"location\": \"fake\"},\n                    },\n                },\n            ],\n            main=[\n                {\n                    \"tool\": \"get_weather\",\n                    \"arguments\": {\"location\": \"_.test\"},\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    expected_output = {\"temperature\": 20, \"humidity\": 60}\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        with patch_integration_service(expected_output) as mock_integration_service:\n            execution, handle = await start_execution(\n                developer_id=developer_id,\n                task_id=task.id,\n                data=data,\n                connection_pool=pool,\n            )\n\n            assert handle is not None\n            assert execution.task_id == task.id\n            assert execution.input == data.input\n            mock_run_task_execution_workflow.assert_called_once()\n            result = await handle.result()\n            # Verify the integration service was called with correct arguments\n            mock_integration_service.assert_called_once()\n            assert result == expected_output\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: wait for input step start\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[\n                {\"wait_for_input\": {\"info\": {\"hi\": '\"bye\"'}}},\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        # Let it run for a bit\n        result_coroutine = handle.result()\n        task = asyncio.create_task(result_coroutine)\n        try:\n            await asyncio.wait_for(task, timeout=3)\n        except TimeoutError:\n            task.cancel()\n\n        # Get the history\n        history = await handle.fetch_history()\n        events = [MessageToDict(e) for e in history.events]\n        assert len(events) > 0\n\n        activities_scheduled = [\n            event.get(\"activityTaskScheduledEventAttributes\", {})\n            .get(\"activityType\", {})\n            .get(\"name\")\n            for event in events\n            if \"ACTIVITY_TASK_SCHEDULED\" in event[\"eventType\"]\n        ]\n        activities_scheduled = [activity for activity in activities_scheduled if activity]\n\n        assert \"wait_for_input_step\" in activities_scheduled\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: foreach wait for input step start\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[\n                {\n                    \"foreach\": {\n                        \"in\": \"'a b c'.split()\",\n                        \"do\": {\"wait_for_input\": {\"info\": {\"hi\": '\"bye\"'}}},\n                    },\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n        mock_run_task_execution_workflow.assert_called_once()\n\n        # Let it run for a bit\n        result_coroutine = handle.result()\n        task = asyncio.create_task(result_coroutine)\n        try:\n            await asyncio.wait_for(task, timeout=3)\n        except TimeoutError:\n            task.cancel()\n\n        # Get the history\n        history = await handle.fetch_history()\n        events = [MessageToDict(e) for e in history.events]\n        assert len(events) > 0\n\n        activities_scheduled = [\n            event.get(\"activityTaskScheduledEventAttributes\", {})\n            .get(\"activityType\", {})\n            .get(\"name\")\n            for event in events\n            if \"ACTIVITY_TASK_SCHEDULED\" in event[\"eventType\"]\n        ]\n        activities_scheduled = [activity for activity in activities_scheduled if activity]\n\n        assert \"for_each_step\" in activities_scheduled\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: if-else step\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task_def = CreateTaskRequest(\n        name=\"test task\",\n        description=\"test task about\",\n        input_schema={\"type\": \"object\", \"additionalProperties\": True},\n        main=[\n            {\n                \"if\": \"False\",\n                \"then\": {\"evaluate\": {\"hello\": '\"world\"'}},\n                \"else\": {\"evaluate\": {\"hello\": \"random.randint(0, 10)\"}},\n            },\n        ],\n    )\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=task_def,\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: switch step\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[\n                {\n                    \"switch\": [\n                        {\n                            \"case\": \"False\",\n                            \"then\": {\"evaluate\": {\"hello\": '\"bubbles\"'}},\n                        },\n                        {\n                            \"case\": \"True\",\n                            \"then\": {\"evaluate\": {\"hello\": '\"world\"'}},\n                        },\n                        {\n                            \"case\": \"True\",\n                            \"then\": {\"evaluate\": {\"hello\": '\"bye\"'}},\n                        },\n                    ],\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[\"hello\"] == \"world\"\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: for each step\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[\n                {\n                    \"foreach\": {\n                        \"in\": \"'a b c'.split()\",\n                        \"do\": {\"evaluate\": {\"hello\": '\"world\"'}},\n                    },\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result[0][\"hello\"] == \"world\"\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: map reduce step\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    map_step = {\n        \"over\": \"'a b c'.split()\",\n        \"map\": {\n            \"evaluate\": {\"res\": \"_\"},\n        },\n    }\n\n    task_def = {\n        \"name\": \"test task\",\n        \"description\": \"test task about\",\n        \"input_schema\": {\"type\": \"object\", \"additionalProperties\": True},\n        \"main\": [map_step],\n    }\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(**task_def),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert [r[\"res\"] for r in result] == [\"a\", \"b\", \"c\"]\n\n\nfor p in [1, 3, 5]:\n\n    @skip(\"needs to be fixed\")\n    @test(f\"workflow: map reduce step parallel (parallelism={p})\")\n    async def _(\n        dsn=pg_dsn,\n        developer_id=test_developer_id,\n        agent=test_agent,\n        _s3_client=s3_client,  # Adding coz blob store might be used\n    ):\n        pool = await create_db_pool(dsn=dsn)\n        data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n        map_step = {\n            \"over\": \"'a b c d'.split()\",\n            \"map\": {\n                \"evaluate\": {\"res\": \"_ + '!'\"},\n            },\n            \"parallelism\": p,\n        }\n\n        task_def = {\n            \"name\": \"test task\",\n            \"description\": \"test task about\",\n            \"input_schema\": {\"type\": \"object\", \"additionalProperties\": True},\n            \"main\": [map_step],\n        }\n\n        task = await create_task(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            data=CreateTaskRequest(**task_def),\n            connection_pool=pool,\n        )\n\n        async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n            execution, handle = await start_execution(\n                developer_id=developer_id,\n                task_id=task.id,\n                data=data,\n                connection_pool=pool,\n            )\n\n            assert handle is not None\n            assert execution.task_id == task.id\n            assert execution.input == data.input\n\n            mock_run_task_execution_workflow.assert_called_once()\n\n            result = await handle.result()\n            assert [r[\"res\"] for r in result] == [\n                \"a!\",\n                \"b!\",\n                \"c!\",\n                \"d!\",\n            ]\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: prompt step (python expression)\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    mock_model_response = ModelResponse(\n        id=\"fake_id\",\n        choices=[Choices(message={\"role\": \"assistant\", \"content\": \"Hello, world!\"})],\n        created=0,\n        object=\"text_completion\",\n    )\n\n    with patch(\"agents_api.clients.litellm.acompletion\") as acompletion:\n        acompletion.return_value = mock_model_response\n        data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n        task = await create_task(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            data=CreateTaskRequest(\n                name=\"test task\",\n                description=\"test task about\",\n                input_schema={\"type\": \"object\", \"additionalProperties\": True},\n                main=[\n                    {\n                        \"prompt\": \"$_ [{'role': 'user', 'content': _.test}]\",\n                        \"settings\": {},\n                    },\n                ],\n            ),\n            connection_pool=pool,\n        )\n\n        async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n            execution, handle = await start_execution(\n                developer_id=developer_id,\n                task_id=task.id,\n                data=data,\n                connection_pool=pool,\n            )\n\n            assert handle is not None\n            assert execution.task_id == task.id\n            assert execution.input == data.input\n\n            mock_run_task_execution_workflow.assert_called_once()\n\n            result = await handle.result()\n            result = result[\"choices\"][0][\"message\"]\n            assert result[\"content\"] == \"Hello, world!\"\n            assert result[\"role\"] == \"assistant\"\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: prompt step\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    mock_model_response = ModelResponse(\n        id=\"fake_id\",\n        choices=[Choices(message={\"role\": \"assistant\", \"content\": \"Hello, world!\"})],\n        created=0,\n        object=\"text_completion\",\n    )\n\n    with patch(\"agents_api.clients.litellm.acompletion\") as acompletion:\n        acompletion.return_value = mock_model_response\n        data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n        task = await create_task(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            data=CreateTaskRequest(\n                name=\"test task\",\n                description=\"test task about\",\n                input_schema={\"type\": \"object\", \"additionalProperties\": True},\n                main=[\n                    {\n                        \"prompt\": [\n                            {\n                                \"role\": \"user\",\n                                \"content\": \"message\",\n                            },\n                        ],\n                        \"settings\": {},\n                    },\n                ],\n            ),\n            connection_pool=pool,\n        )\n\n        async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n            execution, handle = await start_execution(\n                developer_id=developer_id,\n                task_id=task.id,\n                data=data,\n                connection_pool=pool,\n            )\n\n            assert handle is not None\n            assert execution.task_id == task.id\n            assert execution.input == data.input\n\n            mock_run_task_execution_workflow.assert_called_once()\n\n            result = await handle.result()\n            result = result[\"choices\"][0][\"message\"]\n            assert result[\"content\"] == \"Hello, world!\"\n            assert result[\"role\"] == \"assistant\"\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: prompt step unwrap\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n    _s3_client=s3_client,  # Adding coz blob store might be used\n):\n    pool = await create_db_pool(dsn=dsn)\n    mock_model_response = ModelResponse(\n        id=\"fake_id\",\n        choices=[Choices(message={\"role\": \"assistant\", \"content\": \"Hello, world!\"})],\n        created=0,\n        object=\"text_completion\",\n    )\n\n    with patch(\"agents_api.clients.litellm.acompletion\") as acompletion:\n        acompletion.return_value = mock_model_response\n        data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n        task = await create_task(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            data=CreateTaskRequest(\n                name=\"test task\",\n                description=\"test task about\",\n                input_schema={\"type\": \"object\", \"additionalProperties\": True},\n                main=[\n                    {\n                        \"prompt\": [\n                            {\n                                \"role\": \"user\",\n                                \"content\": \"message\",\n                            },\n                        ],\n                        \"unwrap\": True,\n                        \"settings\": {},\n                    },\n                ],\n            ),\n            connection_pool=pool,\n        )\n\n        async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n            execution, handle = await start_execution(\n                developer_id=developer_id,\n                task_id=task.id,\n                data=data,\n                connection_pool=pool,\n            )\n\n            assert handle is not None\n            assert execution.task_id == task.id\n            assert execution.input == data.input\n\n            mock_run_task_execution_workflow.assert_called_once()\n\n            result = await handle.result()\n            assert result == \"Hello, world!\"\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: set and get steps\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    pool = await create_db_pool(dsn=dsn)\n    data = CreateExecutionRequest(input={\"test\": \"input\"})\n\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[\n                {\"set\": {\"test_key\": '\"test_value\"'}},\n                {\"get\": \"test_key\"},\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n        execution, handle = await start_execution(\n            developer_id=developer_id,\n            task_id=task.id,\n            data=data,\n            connection_pool=pool,\n        )\n\n        assert handle is not None\n        assert execution.task_id == task.id\n        assert execution.input == data.input\n\n        mock_run_task_execution_workflow.assert_called_once()\n\n        result = await handle.result()\n        assert result == \"test_value\"\n\n\n@skip(\"needs to be fixed\")\n@test(\"workflow: execute yaml task\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    agent=test_agent,\n):\n    pool = await create_db_pool(dsn=dsn)\n    mock_model_response = ModelResponse(\n        id=\"fake_id\",\n        choices=[\n            Choices(message={\"role\": \"assistant\", \"content\": \"found: true\\nvalue: 'Gaga'\"}),\n        ],\n        created=0,\n        object=\"text_completion\",\n    )\n\n    with (\n        patch(\"agents_api.clients.litellm.acompletion\") as acompletion,\n        open(\"./tests/sample_tasks/find_selector.yaml\") as task_file,\n    ):\n        input = {\n            \"screenshot_base64\": \"iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA\",\n            \"network_requests\": [{\"request\": {}, \"response\": {\"body\": \"Lady Gaga\"}}],\n            \"parameters\": [\"name\"],\n        }\n        task_definition = yaml.safe_load(task_file)\n        acompletion.return_value = mock_model_response\n        data = CreateExecutionRequest(input=input)\n\n        task = await create_task(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            data=CreateTaskRequest(**task_definition),\n            connection_pool=pool,\n        )\n\n        async with patch_testing_temporal() as (_, mock_run_task_execution_workflow):\n            execution, handle = await start_execution(\n                developer_id=developer_id,\n                task_id=task.id,\n                data=data,\n                connection_pool=pool,\n            )\n\n            assert handle is not None\n            assert execution.task_id == task.id\n            assert execution.input == data.input\n\n            mock_run_task_execution_workflow.assert_called_once()\n\n            await handle.result()\n"
  },
  {
    "path": "src/agents-api/tests/test_expression_validation.py",
    "content": "\"\"\"\nTests to verify that Python expression validation works correctly.\nThis includes testing the bug fix for expressions without a $ prefix.\n\"\"\"\n\nfrom agents_api.common.utils.task_validation import validate_py_expression\n\n\ndef test_expression_validation_basic():\n    \"\"\"Test basic validation of Python expressions.\"\"\"\n\n    # Test with a syntax error\n    expression = \"$ 1 + )\"\n    result = validate_py_expression(expression)\n\n    assert len(result[\"syntax_errors\"]) > 0\n\n    assert \"Syntax error\" in result[\"syntax_errors\"][0]\n\n    # Test with undefined variable\n    expression = \"$ undefined_var + 10\"\n    result = validate_py_expression(expression)\n\n    assert len(result[\"undefined_names\"]) > 0\n\n    assert \"Undefined name: 'undefined_var'\" in result[\"undefined_names\"]\n\n    # Test with unsafe attribute access\n    expression = \"$ some_obj.dangerous_method()\"\n    result = validate_py_expression(expression)\n\n    assert len(result[\"unsafe_operations\"]) > 0\n\n    assert \"Potentially unsafe attribute access\" in result[\"unsafe_operations\"][0]\n\n    # Test division by zero detection - note: static analysis may not catch all instances\n    expression = \"$ 10 / 0\"\n    result = validate_py_expression(expression)\n\n    # This assertion may be fragile depending on the static analyzer's capabilities\n    if len(result[\"potential_runtime_errors\"]) > 0:\n        assert \"Division by zero\" in result[\"potential_runtime_errors\"][0]\n    else:\n        print(\"Note: Static analyzer did not detect division by zero\")\n\n    # Test a valid expression\n    expression = \"$ _.topic if hasattr(_, 'topic') else 'default'\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # Test that _ is allowed by default\n    expression = \"$ _.attribute\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values())\n\n    # This test is no longer relevant since allow_placeholder_variables parameter was removed\n    # Special variables are now always allowed by default\n\n\ndef test_expression_without_dollar_prefix():\n    \"\"\"Test that expressions without a $ prefix return empty issues and don't proceed with validation.\"\"\"\n\n    # Test regular string without $ prefix\n    expression = \"Hello world\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"Non-$ expressions should return empty issues\"\n    )\n\n    # Test with Python syntax but no $ prefix (should be considered a regular string)\n    expression = \"1 + 2\"  # Valid Python but not started with $\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"Python syntax without $ should return empty issues\"\n    )\n\n    # Test with Python syntax error but no $ prefix (should be considered a regular string)\n    expression = \"1 + )\"  # Invalid Python but not started with $\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"Invalid Python without $ should return empty issues\"\n    )\n\n\ndef test_dollar_sign_variations():\n    \"\"\"Test different variations of the $ prefix to ensure correct handling.\"\"\"\n\n    # Test $ with space - should actually evaluate the expression\n    expression = \"$ 1 + 2\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), \"$ with space should be valid\"\n\n    # Test $ without space - should NOT be evaluated at all\n    expression = \"$1 + 2\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"$ without space should return empty issues (not evaluated)\"\n    )\n\n    # Test with invalid syntax after $\n    expression = \"$ 1 + )\"\n    result = validate_py_expression(expression)\n\n    assert len(result[\"syntax_errors\"]) > 0, (\n        \"Expression with $ space should be evaluated and catch syntax errors\"\n    )\n\n    # Test with invalid syntax without space after $ - should NOT be evaluated\n    expression = \"$1 + )\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"$ without space shouldn't be evaluated even with syntax errors\"\n    )\n\n    # Test with leading whitespace before $\n    expression = \"  $ 1 + 2\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"Leading whitespace before $ should be valid\"\n    )\n\n    # Test with leading whitespace and $ without space\n    expression = \"  $1 + 2\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"Leading whitespace before $ without space should return empty issues (not evaluated)\"\n    )\n\n\ndef test_backwards_compatibility_cases():\n    \"\"\"Test the backwards compatibility mechanism for expressions.\"\"\"\n\n    # Test curly brace template syntax\n    expression = \"Hello {{name}}\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"Curly brace template should be valid\"\n    )\n\n    # Test array indexing (auto-prepends $)\n    expression = \"_[0]\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), \"Array indexing should be valid\"\n\n    # Test simple underscore (auto-prepends $)\n    expression = \"_\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"Simple underscore should be valid\"\n    )\n\n    # Test attribute access (auto-prepends $)\n    expression = \"_.name\"\n    result = validate_py_expression(expression)\n\n    assert all(len(issues) == 0 for issues in result.values()), (\n        \"Attribute access should be valid\"\n    )\n"
  },
  {
    "path": "src/agents-api/tests/test_file_routes.py",
    "content": "# Tests for file routes\n\nimport base64\nimport hashlib\n\nfrom ward import test\n\nfrom tests.fixtures import make_request, s3_client, test_project\n\n\n@test(\"route: create file\")\nasync def _(make_request=make_request, s3_client=s3_client):\n    data = {\n        \"name\": \"Test File\",\n        \"description\": \"This is a test file.\",\n        \"mime_type\": \"text/plain\",\n        \"content\": \"eyJzYW1wbGUiOiAidGVzdCJ9\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/files\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n\n@test(\"route: create file with project\")\nasync def _(make_request=make_request, s3_client=s3_client, project=test_project):\n    data = {\n        \"name\": \"Test File with Project\",\n        \"description\": \"This is a test file with project.\",\n        \"mime_type\": \"text/plain\",\n        \"content\": \"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        \"project\": project.canonical_name,\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/files\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n    assert response.json()[\"project\"] == project.canonical_name\n\n\n@test(\"route: delete file\")\nasync def _(make_request=make_request, s3_client=s3_client):\n    data = {\n        \"name\": \"Test File\",\n        \"description\": \"This is a test file.\",\n        \"mime_type\": \"text/plain\",\n        \"content\": \"eyJzYW1wbGUiOiAidGVzdCJ9\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/files\",\n        json=data,\n    )\n\n    file_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/files/{file_id}\",\n    )\n\n    assert response.status_code == 202\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/files/{file_id}\",\n    )\n\n    assert response.status_code == 404\n\n\n@test(\"route: get file\")\nasync def _(make_request=make_request, s3_client=s3_client):\n    data = {\n        \"name\": \"Test File\",\n        \"description\": \"This is a test file.\",\n        \"mime_type\": \"text/plain\",\n        \"content\": \"eyJzYW1wbGUiOiAidGVzdCJ9\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/files\",\n        json=data,\n    )\n\n    file_id = response.json()[\"id\"]\n    content_bytes = base64.b64decode(data[\"content\"])\n    expected_hash = hashlib.sha256(content_bytes).hexdigest()\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/files/{file_id}\",\n    )\n\n    assert response.status_code == 200\n\n    result = response.json()\n\n    # Decode base64 content and compute its SHA-256 hash\n    assert result[\"hash\"] == expected_hash\n\n\n@test(\"route: list files\")\nasync def _(make_request=make_request, s3_client=s3_client):\n    response = make_request(\n        method=\"GET\",\n        url=\"/files\",\n    )\n\n    assert response.status_code == 200\n\n\n@test(\"route: list files with project filter\")\nasync def _(make_request=make_request, s3_client=s3_client, project=test_project):\n    # First create a file with the project\n    data = {\n        \"name\": \"Test File for Project Filter\",\n        \"description\": \"This is a test file for project filtering.\",\n        \"mime_type\": \"text/plain\",\n        \"content\": \"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        \"project\": project.canonical_name,\n    }\n\n    make_request(\n        method=\"POST\",\n        url=\"/files\",\n        json=data,\n    )\n\n    # Then list files with project filter\n    response = make_request(\n        method=\"GET\",\n        url=\"/files\",\n        params={\n            \"project\": project.canonical_name,\n        },\n    )\n\n    assert response.status_code == 200\n    files = response.json()\n\n    assert isinstance(files, list)\n    assert len(files) > 0\n    assert any(file[\"project\"] == project.canonical_name for file in files)\n"
  },
  {
    "path": "src/agents-api/tests/test_files_queries.py",
    "content": "# Tests for entry queries\n\nfrom agents_api.autogen.openapi_model import CreateFileRequest, File\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.files.create_file import create_file\nfrom agents_api.queries.files.delete_file import delete_file\nfrom agents_api.queries.files.get_file import get_file\nfrom agents_api.queries.files.list_files import list_files\nfrom fastapi import HTTPException\nfrom ward import raises, test\n\nfrom tests.fixtures import (\n    pg_dsn,\n    test_agent,\n    test_developer,\n    test_file,\n    test_project,\n    test_user,\n)\n\n\n@test(\"query: create file\")\nasync def _(dsn=pg_dsn, developer=test_developer):\n    pool = await create_db_pool(dsn=dsn)\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Hello\",\n            description=\"World\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        ),\n        connection_pool=pool,\n    )\n    assert isinstance(file, File)\n    assert file.id is not None\n    assert file.name == \"Hello\"\n    assert file.description == \"World\"\n    assert file.mime_type == \"text/plain\"\n\n\n@test(\"query: create file with project\")\nasync def _(dsn=pg_dsn, developer=test_developer, project=test_project):\n    pool = await create_db_pool(dsn=dsn)\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Hello with Project\",\n            description=\"World\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )\n    assert isinstance(file, File)\n    assert file.id is not None\n    assert file.name == \"Hello with Project\"\n    assert file.project == project.canonical_name\n\n\n@test(\"query: create file with invalid project\")\nasync def _(dsn=pg_dsn, developer=test_developer):\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc:\n        await create_file(\n            developer_id=developer.id,\n            data=CreateFileRequest(\n                name=\"Hello with Invalid Project\",\n                description=\"World\",\n                mime_type=\"text/plain\",\n                content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n                project=\"invalid_project\",\n            ),\n            connection_pool=pool,\n        )\n\n    assert exc.raised.status_code == 404\n    assert \"Project 'invalid_project' not found\" in exc.raised.detail\n\n\n@test(\"query: create user file\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"User File\",\n            description=\"Test user file\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n    assert isinstance(file, File)\n    assert file.id is not None\n    assert file.name == \"User File\"\n\n    # Verify file appears in user's files\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n    assert any(f.id == file.id for f in files)\n\n\n@test(\"query: create user file with project\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user, project=test_project):\n    pool = await create_db_pool(dsn=dsn)\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"User File with Project\",\n            description=\"Test user file\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n            project=project.canonical_name,\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n    assert isinstance(file, File)\n    assert file.id is not None\n    assert file.name == \"User File with Project\"\n    assert file.project == project.canonical_name\n\n    # Verify file appears in user's files with the right project\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        project=project.canonical_name,\n        connection_pool=pool,\n    )\n    assert any(f.id == file.id for f in files)\n    assert all(f.project == project.canonical_name for f in files)\n\n\n@test(\"query: create agent file\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Agent File\",\n            description=\"Test agent file\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n    assert file.name == \"Agent File\"\n\n    # Verify file appears in agent's files\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n    assert any(f.id == file.id for f in files)\n\n\n@test(\"query: create agent file with project\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent, project=test_project):\n    pool = await create_db_pool(dsn=dsn)\n\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Agent File with Project\",\n            description=\"Test agent file\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n            project=project.canonical_name,\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n    assert file.name == \"Agent File with Project\"\n    assert file.project == project.canonical_name\n\n    # Verify file appears in agent's files with the right project\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        project=project.canonical_name,\n        connection_pool=pool,\n    )\n    assert any(f.id == file.id for f in files)\n    assert all(f.project == project.canonical_name for f in files)\n\n\n@test(\"query: get file\")\nasync def _(dsn=pg_dsn, file=test_file, developer=test_developer):\n    pool = await create_db_pool(dsn=dsn)\n    file_test = await get_file(\n        developer_id=developer.id,\n        file_id=file.id,\n        connection_pool=pool,\n    )\n    assert file_test.id == file.id\n    assert file_test.name == \"Hello\"\n    assert file_test.description == \"World\"\n    assert file_test.mime_type == \"text/plain\"\n    assert file_test.hash == file.hash\n\n\n@test(\"query: list files\")\nasync def _(dsn=pg_dsn, developer=test_developer, file=test_file):\n    pool = await create_db_pool(dsn=dsn)\n    files = await list_files(\n        developer_id=developer.id,\n        connection_pool=pool,\n    )\n    assert len(files) >= 1\n    assert any(f.id == file.id for f in files)\n\n\n@test(\"query: list files with project filter\")\nasync def _(dsn=pg_dsn, developer=test_developer, project=test_project):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a file with the project\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Project File for Filtering\",\n            description=\"Test project file filtering\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )\n\n    # List files with project filter\n    files = await list_files(\n        developer_id=developer.id,\n        project=project.canonical_name,\n        connection_pool=pool,\n    )\n\n    assert len(files) >= 1\n    assert any(f.id == file.id for f in files)\n    assert all(f.project == project.canonical_name for f in files)\n\n\n@test(\"query: list files, invalid limit\")\nasync def _(dsn=pg_dsn, developer=test_developer, file=test_file):\n    \"\"\"Test that listing files with an invalid limit raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_files(\n            developer_id=developer.id,\n            connection_pool=pool,\n            limit=101,\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n    with raises(HTTPException) as exc:\n        await list_files(\n            developer_id=developer.id,\n            connection_pool=pool,\n            limit=0,\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n\n@test(\"query: list files, invalid offset\")\nasync def _(dsn=pg_dsn, developer=test_developer, file=test_file):\n    \"\"\"Test that listing files with an invalid offset raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_files(\n            developer_id=developer.id,\n            connection_pool=pool,\n            offset=-1,\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Offset must be >= 0\"\n\n\n@test(\"query: list files, invalid sort by\")\nasync def _(dsn=pg_dsn, developer=test_developer, file=test_file):\n    \"\"\"Test that listing files with an invalid sort by raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_files(\n            developer_id=developer.id,\n            connection_pool=pool,\n            sort_by=\"invalid\",\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort field\"\n\n\n@test(\"query: list files, invalid sort direction\")\nasync def _(dsn=pg_dsn, developer=test_developer, file=test_file):\n    \"\"\"Test that listing files with an invalid sort direction raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_files(\n            developer_id=developer.id,\n            connection_pool=pool,\n            direction=\"invalid\",\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort direction\"\n\n\n@test(\"query: list user files\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a file owned by the user\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"User List Test\",\n            description=\"Test file for user listing\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # List user's files\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n    assert len(files) >= 1\n    assert any(f.id == file.id for f in files)\n\n\n@test(\"query: list user files with project\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user, project=test_project):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a file owned by the user with a project\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"User Project List Test\",\n            description=\"Test file for user project listing\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n            project=project.canonical_name,\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # List user's files with project filter\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        project=project.canonical_name,\n        connection_pool=pool,\n    )\n    assert len(files) >= 1\n    assert any(f.id == file.id for f in files)\n    assert all(f.project == project.canonical_name for f in files)\n\n\n@test(\"query: list agent files\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a file owned by the agent\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Agent List Test\",\n            description=\"Test file for agent listing\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # List agent's files\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n    assert len(files) >= 1\n    assert any(f.id == file.id for f in files)\n\n\n@test(\"query: list agent files with project\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent, project=test_project):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a file owned by the agent with a project\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Agent Project List Test\",\n            description=\"Test file for agent project listing\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n            project=project.canonical_name,\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # List agent's files with project filter\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        project=project.canonical_name,\n        connection_pool=pool,\n    )\n    assert len(files) >= 1\n    assert any(f.id == file.id for f in files)\n    assert all(f.project == project.canonical_name for f in files)\n\n\n@test(\"query: delete user file\")\nasync def _(dsn=pg_dsn, developer=test_developer, user=test_user):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a file owned by the user\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"User Delete Test\",\n            description=\"Test file for user deletion\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        ),\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # Delete the file\n    await delete_file(\n        developer_id=developer.id,\n        file_id=file.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n\n    # Verify file is no longer in user's files\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"user\",\n        owner_id=user.id,\n        connection_pool=pool,\n    )\n    assert not any(f.id == file.id for f in files)\n\n\n@test(\"query: delete agent file\")\nasync def _(dsn=pg_dsn, developer=test_developer, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a file owned by the agent\n    file = await create_file(\n        developer_id=developer.id,\n        data=CreateFileRequest(\n            name=\"Agent Delete Test\",\n            description=\"Test file for agent deletion\",\n            mime_type=\"text/plain\",\n            content=\"eyJzYW1wbGUiOiAidGVzdCJ9\",\n        ),\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # Delete the file\n    await delete_file(\n        developer_id=developer.id,\n        file_id=file.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n\n    # Verify file is no longer in agent's files\n    files = await list_files(\n        developer_id=developer.id,\n        owner_type=\"agent\",\n        owner_id=agent.id,\n        connection_pool=pool,\n    )\n    assert not any(f.id == file.id for f in files)\n\n\n@test(\"query: delete file\")\nasync def _(dsn=pg_dsn, developer=test_developer, file=test_file):\n    pool = await create_db_pool(dsn=dsn)\n\n    await delete_file(\n        developer_id=developer.id,\n        file_id=file.id,\n        connection_pool=pool,\n    )\n"
  },
  {
    "path": "src/agents-api/tests/test_get_doc_search.py",
    "content": "from uuid import uuid4\n\nfrom agents_api.autogen.Docs import DocOwner, DocReference, Snippet\nfrom agents_api.autogen.openapi_model import (\n    HybridDocSearchRequest,\n    TextOnlyDocSearchRequest,\n    VectorDocSearchRequest,\n)\nfrom agents_api.common.utils.get_doc_search import (\n    get_language,\n    get_search_fn_and_params,\n    strip_embeddings,\n)\nfrom agents_api.queries.docs.search_docs_by_embedding import search_docs_by_embedding\nfrom agents_api.queries.docs.search_docs_by_text import search_docs_by_text\nfrom agents_api.queries.docs.search_docs_hybrid import search_docs_hybrid\nfrom fastapi import HTTPException\nfrom ward import raises, test\n\n\n@test(\"get_language: valid language code returns lowercase language name\")\ndef _():\n    result = get_language(\"en\")\n    assert result == \"english_unaccent\"\n\n    result = get_language(\"fr\")\n    assert result == \"french\"\n\n\n@test(\"get_language: empty language code raises HTTPException\")\ndef _():\n    with raises(HTTPException) as exc:\n        get_language(\"\")\n\n    assert exc.raised.status_code == 422\n    assert exc.raised.detail == \"Invalid ISO 639 language code.\"\n\n\n@test(\"get_search_fn_and_params: text-only search request\")\ndef _():\n    request = TextOnlyDocSearchRequest(\n        text=\"search query\",\n        limit=10,\n        lang=\"en\",\n        metadata_filter={\"field\": \"value\"},\n        trigram_similarity_threshold=0.4,\n    )\n\n    search_fn, params, post_processing = get_search_fn_and_params(request)\n\n    assert search_fn == search_docs_by_text\n    assert params == {\n        \"query\": \"search query\",\n        \"k\": 10,\n        \"metadata_filter\": {\"field\": \"value\"},\n        \"search_language\": \"english_unaccent\",\n        \"extract_keywords\": False,\n        \"trigram_similarity_threshold\": None,\n    }\n    assert post_processing == {\n        \"include_embeddings\": True,\n    }\n\n\n@test(\"get_search_fn_and_params: text-only search request with include_embeddings=False\")\ndef _():\n    request = TextOnlyDocSearchRequest(\n        text=\"search query\",\n        limit=10,\n        lang=\"en\",\n        metadata_filter={\"field\": \"value\"},\n        trigram_similarity_threshold=0.4,\n        include_embeddings=False,\n    )\n\n    search_fn, params, post_processing = get_search_fn_and_params(request)\n\n    assert search_fn == search_docs_by_text\n    assert params == {\n        \"query\": \"search query\",\n        \"k\": 10,\n        \"metadata_filter\": {\"field\": \"value\"},\n        \"search_language\": \"english_unaccent\",\n        \"extract_keywords\": False,\n        \"trigram_similarity_threshold\": None,\n    }\n    assert post_processing == {\n        \"include_embeddings\": False,\n    }\n\n\n@test(\"get_search_fn_and_params: vector search request without MMR\")\ndef _():\n    request = VectorDocSearchRequest(\n        vector=[0.1, 0.2, 0.3],\n        limit=5,\n        confidence=0.8,\n        metadata_filter={\"field\": \"value\"},\n        mmr_strength=0,\n    )\n\n    search_fn, params, post_processing = get_search_fn_and_params(request)\n\n    assert search_fn == search_docs_by_embedding\n    assert params == {\n        \"embedding\": [0.1, 0.2, 0.3],\n        \"k\": 5,\n        \"confidence\": 0.8,\n        \"metadata_filter\": {\"field\": \"value\"},\n    }\n    assert post_processing == {\n        \"include_embeddings\": True,\n    }\n\n\n@test(\"get_search_fn_and_params: vector search request with include_embeddings=False\")\ndef _():\n    request = VectorDocSearchRequest(\n        vector=[0.1, 0.2, 0.3],\n        limit=5,\n        confidence=0.8,\n        metadata_filter={\"field\": \"value\"},\n        mmr_strength=0,\n        include_embeddings=False,\n    )\n\n    search_fn, params, post_processing = get_search_fn_and_params(request)\n\n    assert search_fn == search_docs_by_embedding\n    assert params == {\n        \"embedding\": [0.1, 0.2, 0.3],\n        \"k\": 5,\n        \"confidence\": 0.8,\n        \"metadata_filter\": {\"field\": \"value\"},\n    }\n    assert post_processing == {\n        \"include_embeddings\": False,\n    }\n\n\n@test(\"get_search_fn_and_params: vector search request with MMR\")\ndef _():\n    request = VectorDocSearchRequest(\n        vector=[0.1, 0.2, 0.3],\n        limit=5,\n        confidence=0.8,\n        metadata_filter={\"field\": \"value\"},\n        mmr_strength=0.5,\n    )\n\n    search_fn, params, post_processing = get_search_fn_and_params(request)\n\n    assert search_fn == search_docs_by_embedding\n    assert params == {\n        \"embedding\": [0.1, 0.2, 0.3],\n        \"k\": 10,  # min(limit * 2, limit + 10) with limit=5\n        \"confidence\": 0.8,\n        \"metadata_filter\": {\"field\": \"value\"},\n    }\n    assert post_processing == {\n        \"include_embeddings\": True,\n    }\n\n\n@test(\"get_search_fn_and_params: hybrid search request\")\ndef _():\n    request = HybridDocSearchRequest(\n        text=\"search query\",\n        vector=[0.1, 0.2, 0.3],\n        lang=\"en\",\n        limit=5,\n        confidence=0.8,\n        alpha=0.5,\n        metadata_filter={\"field\": \"value\"},\n        mmr_strength=0,\n        trigram_similarity_threshold=0.4,\n        k_multiplier=7,\n    )\n\n    search_fn, params, post_processing = get_search_fn_and_params(request)\n\n    assert search_fn == search_docs_hybrid\n    assert params == {\n        \"text_query\": \"search query\",\n        \"embedding\": [0.1, 0.2, 0.3],\n        \"k\": 5,\n        \"confidence\": 0.8,\n        \"alpha\": 0.5,\n        \"metadata_filter\": {\"field\": \"value\"},\n        \"search_language\": \"english_unaccent\",\n        \"extract_keywords\": False,\n        \"trigram_similarity_threshold\": None,\n        \"k_multiplier\": 7,\n    }\n    assert post_processing == {\n        \"include_embeddings\": True,\n    }\n\n\n@test(\"get_search_fn_and_params: hybrid search request with include_embeddings=False\")\ndef _():\n    request = HybridDocSearchRequest(\n        text=\"search query\",\n        vector=[0.1, 0.2, 0.3],\n        lang=\"en\",\n        limit=5,\n        confidence=0.8,\n        alpha=0.5,\n        metadata_filter={\"field\": \"value\"},\n        mmr_strength=0,\n        trigram_similarity_threshold=0.4,\n        k_multiplier=7,\n        include_embeddings=False,\n    )\n\n    search_fn, params, post_processing = get_search_fn_and_params(request)\n\n    assert search_fn == search_docs_hybrid\n    assert params == {\n        \"text_query\": \"search query\",\n        \"embedding\": [0.1, 0.2, 0.3],\n        \"k\": 5,\n        \"confidence\": 0.8,\n        \"alpha\": 0.5,\n        \"metadata_filter\": {\"field\": \"value\"},\n        \"search_language\": \"english_unaccent\",\n        \"extract_keywords\": False,\n        \"trigram_similarity_threshold\": None,\n        \"k_multiplier\": 7,\n    }\n    assert post_processing == {\n        \"include_embeddings\": False,\n    }\n\n\n@test(\"get_search_fn_and_params: hybrid search request with MMR\")\ndef _():\n    request = HybridDocSearchRequest(\n        text=\"search query\",\n        vector=[0.1, 0.2, 0.3],\n        lang=\"en\",\n        limit=5,\n        confidence=0.8,\n        alpha=0.5,\n        metadata_filter={\"field\": \"value\"},\n        mmr_strength=0.5,\n        trigram_similarity_threshold=0.4,\n        k_multiplier=7,\n    )\n\n    search_fn, params, post_processing = get_search_fn_and_params(request)\n\n    assert search_fn == search_docs_hybrid\n    assert params == {\n        \"text_query\": \"search query\",\n        \"embedding\": [0.1, 0.2, 0.3],\n        \"k\": 10,  # min(limit * 2, limit + 10) with limit=5\n        \"confidence\": 0.8,\n        \"alpha\": 0.5,\n        \"metadata_filter\": {\"field\": \"value\"},\n        \"search_language\": \"english_unaccent\",\n        \"extract_keywords\": False,\n        \"trigram_similarity_threshold\": None,\n        \"k_multiplier\": 7,\n    }\n    assert post_processing == {\n        \"include_embeddings\": True,\n    }\n\n\n@test(\"get_search_fn_and_params: hybrid search request with invalid language\")\ndef _():\n    request = HybridDocSearchRequest(\n        text=\"search query\",\n        vector=[0.1, 0.2, 0.3],\n        lang=\"en-axzs\",  # Invalid language code\n        limit=5,\n        confidence=0.8,\n        alpha=0.5,\n        metadata_filter={\"field\": \"value\"},\n        mmr_strength=0,\n        trigram_similarity_threshold=0.4,\n        k_multiplier=7,\n    )\n\n    with raises(HTTPException) as exc:\n        _search_fn, _params, _post_processing = get_search_fn_and_params(request)\n\n    assert exc.raised.status_code == 422\n    assert exc.raised.detail == \"Invalid ISO 639 language code.\"\n\n\n@test(\"strip_embeddings: single DocReference with embedding\")\ndef _():\n    # Create test data\n    doc = DocReference(\n        id=uuid4(),\n        owner=DocOwner(id=uuid4(), role=\"user\"),\n        title=\"Test Document\",\n        snippet=Snippet(index=0, content=\"Test content\", embedding=[0.1, 0.2, 0.3, 0.4, 0.5]),\n        distance=0.8,\n    )\n\n    # Test the function\n    result = strip_embeddings(doc)\n\n    # Assertions\n    assert isinstance(result, DocReference)\n    assert result.snippet.embedding is None\n    assert result.snippet.content == \"Test content\"\n    assert result.snippet.index == 0\n    assert result.title == \"Test Document\"\n    assert result.distance == 0.8\n\n\n@test(\"strip_embeddings: single DocReference without embedding\")\ndef _():\n    # Create test data without embedding\n    doc = DocReference(\n        id=uuid4(),\n        owner=DocOwner(id=uuid4(), role=\"agent\"),\n        title=\"Test Document\",\n        snippet=Snippet(index=1, content=\"Test content without embedding\", embedding=None),\n    )\n\n    # Test the function\n    result = strip_embeddings(doc)\n\n    # Assertions\n    assert isinstance(result, DocReference)\n    assert result.snippet.embedding is None\n    assert result.snippet.content == \"Test content without embedding\"\n    assert result.snippet.index == 1\n\n\n@test(\"strip_embeddings: list of DocReferences with embeddings\")\ndef _():\n    # Create test data\n    docs = [\n        DocReference(\n            id=uuid4(),\n            owner=DocOwner(id=uuid4(), role=\"user\"),\n            title=\"Document 1\",\n            snippet=Snippet(index=0, content=\"Content 1\", embedding=[0.1, 0.2, 0.3]),\n        ),\n        DocReference(\n            id=uuid4(),\n            owner=DocOwner(id=uuid4(), role=\"agent\"),\n            title=\"Document 2\",\n            snippet=Snippet(index=1, content=\"Content 2\", embedding=[0.4, 0.5, 0.6]),\n        ),\n    ]\n\n    # Test the function\n    result = strip_embeddings(docs)\n\n    # Assertions\n    assert isinstance(result, list)\n    assert len(result) == 2\n\n    for i, doc in enumerate(result):\n        assert isinstance(doc, DocReference)\n        assert doc.snippet.embedding is None\n        assert doc.snippet.content == f\"Content {i + 1}\"\n        assert doc.title == f\"Document {i + 1}\"\n\n\n@test(\"strip_embeddings: list of DocReferences mixed with and without embeddings\")\ndef _():\n    # Create test data with mixed embedding states\n    docs = [\n        DocReference(\n            id=uuid4(),\n            owner=DocOwner(id=uuid4(), role=\"user\"),\n            title=\"Document with embedding\",\n            snippet=Snippet(\n                index=0, content=\"Content with embedding\", embedding=[0.1, 0.2, 0.3]\n            ),\n        ),\n        DocReference(\n            id=uuid4(),\n            owner=DocOwner(id=uuid4(), role=\"agent\"),\n            title=\"Document without embedding\",\n            snippet=Snippet(index=1, content=\"Content without embedding\", embedding=None),\n        ),\n    ]\n\n    # Test the function\n    result = strip_embeddings(docs)\n\n    # Assertions\n    assert isinstance(result, list)\n    assert len(result) == 2\n\n    for doc in result:\n        assert isinstance(doc, DocReference)\n        assert doc.snippet.embedding is None\n\n\n@test(\"strip_embeddings: empty list\")\ndef _():\n    # Test with empty list\n    docs = []\n\n    # Test the function\n    result = strip_embeddings(docs)\n\n    # Assertions\n    assert isinstance(result, list)\n    assert len(result) == 0\n"
  },
  {
    "path": "src/agents-api/tests/test_litellm_utils.py",
    "content": "from unittest.mock import AsyncMock, patch\n\nfrom agents_api.clients.litellm import acompletion\nfrom agents_api.common.utils.llm_providers import (\n    get_api_key_env_var_name,\n    get_litellm_model_name,\n)\nfrom litellm.types.utils import ModelResponse\nfrom ward import test\n\n\n@test(\"litellm_utils: acompletion - no tools\")\nasync def _():\n    with patch(\"agents_api.clients.litellm._acompletion\") as mock_acompletion:\n        mock_acompletion.return_value = ModelResponse(\n            id=\"test-id\",\n            choices=[{\"message\": {\"content\": \"test\"}}],\n            model=\"gpt-4\",\n            usage={\"total_tokens\": 10},\n        )\n\n        messages = [{\"role\": \"user\", \"content\": \"test\", \"tool_calls\": []}]\n\n        await acompletion(model=\"gpt-4\", messages=messages)\n\n        # Check that tool_calls was removed from the message\n        mock_acompletion.assert_called_once()\n        called_messages = mock_acompletion.call_args[1][\"messages\"]\n        assert \"tool_calls\" not in called_messages[0]\n\n\n@test(\"litellm_utils: get_api_key_env_var_name\")\nasync def _():\n    with patch(\"agents_api.common.utils.llm_providers.get_config\") as mock_get_config:\n        mock_get_config.return_value = {\n            \"model_list\": [\n                {\n                    \"model_name\": \"gpt-4\",\n                    \"litellm_params\": {\"api_key\": \"os.environ/OPENAI_API_KEY\"},\n                }\n            ]\n        }\n\n        result = get_api_key_env_var_name(\"gpt-4\")\n        assert result == \"OPENAI_API_KEY\"\n\n\n@test(\"litellm_utils: get_litellm_model_name - known models\")\nasync def _():\n    with patch(\"agents_api.common.utils.llm_providers.get_config\") as mock_get_config:\n        mock_get_config.return_value = {\n            \"model_list\": [\n                {\n                    \"model_name\": \"gpt-4o\",\n                    \"litellm_params\": {\"model\": \"openai/gpt-4o\"},\n                },\n                {\n                    \"model_name\": \"gemini-1.5-pro\",\n                    \"litellm_params\": {\"model\": \"gemini/gemini-1.5-pro\"},\n                },\n                {\n                    \"model_name\": \"claude-3.5-sonnet\",\n                    \"litellm_params\": {\"model\": \"claude-3-5-sonnet-20241022\"},\n                },\n            ]\n        }\n\n        assert get_litellm_model_name(\"gpt-4o\") == \"openai/gpt-4o\"\n        assert get_litellm_model_name(\"gemini-1.5-pro\") == \"gemini/gemini-1.5-pro\"\n        assert get_litellm_model_name(\"claude-3.5-sonnet\") == \"claude-3-5-sonnet-20241022\"\n\n\n@test(\"litellm_utils: get_litellm_model_name - unknown model\")\nasync def _():\n    with patch(\"agents_api.common.utils.llm_providers.get_config\") as mock_get_config:\n        mock_get_config.return_value = {\n            \"model_list\": [\n                {\n                    \"model_name\": \"gpt-4o\",\n                    \"litellm_params\": {\"model\": \"openai/gpt-4o\"},\n                }\n            ]\n        }\n\n        # Unknown model should return unchanged\n        assert get_litellm_model_name(\"unknown-model\") == \"unknown-model\"\n\n\n@test(\"litellm_utils: get_litellm_model_name - empty config\")\nasync def _():\n    with patch(\"agents_api.common.utils.llm_providers.get_config\") as mock_get_config:\n        mock_get_config.return_value = {}\n\n        # With empty config, any model returns unchanged\n        assert get_litellm_model_name(\"any-model\") == \"any-model\"\n\n\n@test(\"litellm_utils: acompletion - custom_api_key takes precedence over secret\")\nasync def _():\n    with (\n        patch(\"agents_api.clients.litellm._acompletion\") as mock_acompletion,\n        patch(\"agents_api.clients.litellm.get_secret_by_name\") as mock_get_secret,\n        patch(\"agents_api.clients.litellm.get_litellm_model_name\") as mock_get_model_name,\n    ):\n        # Setup mocks\n        mock_acompletion.return_value = ModelResponse(\n            id=\"test-id\",\n            choices=[{\"message\": {\"content\": \"test\"}}],\n            model=\"gpt-4o\",\n            usage={\"total_tokens\": 10},\n        )\n        mock_get_secret.return_value = AsyncMock(value=\"secret-api-key\")\n        mock_get_model_name.return_value = \"openai/gpt-4o\"\n\n        messages = [{\"role\": \"user\", \"content\": \"test\"}]\n\n        # Call with both custom_api_key and user (which would trigger secret lookup)\n        await acompletion(\n            model=\"gpt-4o\",\n            messages=messages,\n            custom_api_key=\"custom-api-key\",\n            user=\"test-user-id\",\n        )\n\n        # Verify custom_api_key is used, not the secret\n        mock_acompletion.assert_called_once()\n        call_kwargs = mock_acompletion.call_args[1]\n        assert call_kwargs[\"api_key\"] == \"custom-api-key\"\n        assert call_kwargs[\"base_url\"] is None\n        assert call_kwargs[\"model\"] == \"openai/gpt-4o\"\n\n\n@test(\"litellm_utils: acompletion - secret used when no custom_api_key\")\nasync def _():\n    with (\n        patch(\"agents_api.clients.litellm._acompletion\") as mock_acompletion,\n        patch(\"agents_api.clients.litellm.get_secret_by_name\") as mock_get_secret,\n        patch(\"agents_api.clients.litellm.get_litellm_model_name\") as mock_get_model_name,\n        patch(\"agents_api.clients.litellm.get_api_key_env_var_name\") as mock_get_env_var,\n    ):\n        # Setup mocks\n        mock_acompletion.return_value = ModelResponse(\n            id=\"test-id\",\n            choices=[{\"message\": {\"content\": \"test\"}}],\n            model=\"gpt-4o\",\n            usage={\"total_tokens\": 10},\n        )\n        secret_mock = AsyncMock()\n        secret_mock.value = \"secret-api-key\"\n        mock_get_secret.return_value = secret_mock\n        mock_get_model_name.return_value = \"openai/gpt-4o\"\n        mock_get_env_var.return_value = \"OPENAI_API_KEY\"\n\n        messages = [{\"role\": \"user\", \"content\": \"test\"}]\n\n        # Call without custom_api_key but with user\n        await acompletion(\n            model=\"gpt-4o\", messages=messages, user=\"550e8400-e29b-41d4-a716-446655440000\"\n        )\n\n        # Verify secret's API key is used\n        mock_acompletion.assert_called_once()\n        call_kwargs = mock_acompletion.call_args[1]\n        assert call_kwargs[\"api_key\"] == \"secret-api-key\"\n        assert call_kwargs[\"base_url\"] is None\n        assert call_kwargs[\"model\"] == \"openai/gpt-4o\"\n\n\n@test(\"litellm_utils: acompletion - proxy used when no custom_api_key or secret\")\nasync def _():\n    with (\n        patch(\"agents_api.clients.litellm._acompletion\") as mock_acompletion,\n        patch(\"agents_api.clients.litellm.get_secret_by_name\") as mock_get_secret,\n        patch(\"agents_api.clients.litellm.litellm_master_key\", \"master-key\"),\n        patch(\"agents_api.clients.litellm.litellm_url\", \"http://litellm-proxy\"),\n    ):\n        # Setup mocks\n        mock_acompletion.return_value = ModelResponse(\n            id=\"test-id\",\n            choices=[{\"message\": {\"content\": \"test\"}}],\n            model=\"openai/gpt-4o\",\n            usage={\"total_tokens\": 10},\n        )\n        # No secret found\n        mock_get_secret.side_effect = Exception(\"Secret not found\")\n\n        messages = [{\"role\": \"user\", \"content\": \"test\"}]\n\n        # Call without custom_api_key\n        await acompletion(model=\"gpt-4o\", messages=messages)\n\n        # Verify proxy configuration is used\n        mock_acompletion.assert_called_once()\n        call_kwargs = mock_acompletion.call_args[1]\n        assert call_kwargs[\"api_key\"] == \"master-key\"\n        assert call_kwargs[\"base_url\"] == \"http://litellm-proxy\"\n        assert call_kwargs[\"model\"] == \"openai/gpt-4o\"  # Note the openai/ prefix\n"
  },
  {
    "path": "src/agents-api/tests/test_memory_utils.py",
    "content": "\"\"\"\nTests for the memory utilities module.\n\"\"\"\n\nimport sys\nfrom collections import deque\n\nfrom agents_api.common.utils.memory import total_size\nfrom ward import test\n\n\n@test(\"total_size calculates correct size for basic types\")\ndef test_total_size_basic_types():\n    # Integer\n    assert total_size(42) == sys.getsizeof(42)\n\n    # Float\n    assert total_size(3.14) == sys.getsizeof(3.14)\n\n    # String\n    assert total_size(\"hello\") == sys.getsizeof(\"hello\")\n\n    # Boolean\n    assert total_size(True) == sys.getsizeof(True)\n\n    # None\n    assert total_size(None) == sys.getsizeof(None)\n\n\n@test(\"total_size correctly handles container types\")\ndef test_total_size_containers():\n    # List\n    lst = [1, 2, 3, 4, 5]\n    expected_min = sys.getsizeof(lst) + sum(sys.getsizeof(i) for i in lst)\n    assert total_size(lst) == expected_min\n\n    # Tuple\n    tup = (1, 2, 3, 4, 5)\n    expected_min = sys.getsizeof(tup) + sum(sys.getsizeof(i) for i in tup)\n    assert total_size(tup) == expected_min\n\n    # Dictionary\n    d = {\"a\": 1, \"b\": 2, \"c\": 3}\n    expected_min = sys.getsizeof(d) + sum(\n        sys.getsizeof(k) + sys.getsizeof(v) for k, v in d.items()\n    )\n    assert total_size(d) == expected_min\n\n    # Set\n    s = {1, 2, 3, 4, 5}\n    expected_min = sys.getsizeof(s) + sum(sys.getsizeof(i) for i in s)\n    assert total_size(s) == expected_min\n\n    # Deque\n    dq = deque([1, 2, 3, 4, 5])\n    expected_min = sys.getsizeof(dq) + sum(sys.getsizeof(i) for i in dq)\n    assert total_size(dq) == expected_min\n\n\n@test(\"total_size correctly handles nested objects\")\ndef test_total_size_nested():\n    # Simple nested list\n    nested_list = [1, [2, 3], [4, [5, 6]]]\n    assert total_size(nested_list) > sys.getsizeof(nested_list)\n\n    # Simple nested dict\n    nested_dict = {\"a\": 1, \"b\": {\"c\": 2, \"d\": {\"e\": 3}}}\n    assert total_size(nested_dict) > sys.getsizeof(nested_dict)\n\n    # Complex structure with type hints\n    complex_obj: dict[str, list[tuple[int, set[int]]]] = {\n        \"data\": [(1, {2, 3}), (4, {5, 6})],\n        \"meta\": [(7, {8, 9}), (10, {11, 12})],\n    }\n    assert total_size(complex_obj) > sys.getsizeof(complex_obj)\n\n\n@test(\"total_size handles custom objects\")\ndef test_total_size_custom_objects():\n    class Person:\n        def __init__(self, name: str, age: int):\n            self.name = name\n            self.age = age\n\n    person = Person(\"John\", 30)\n    empty_person = Person(\"\", 0)  # This will have smaller attribute values\n\n    # The person with longer strings should take more space\n    assert total_size(person) > 0\n\n    # NOTE: total_size does not recurse into __dict__ for custom objects by default\n    # This is expected behavior since it only has built-in handlers for standard containers\n    # The size is equal because it only measures the object's basic size, not its attributes\n    assert total_size(person) == total_size(empty_person)\n\n    # Let's add a test with a custom handler that does inspect the object's __dict__\n    def person_handler(p):\n        return p.__dict__.values()\n\n    # With a custom handler, we should see different sizes\n    assert total_size(person, handlers={Person: person_handler}) > total_size(\n        empty_person, handlers={Person: person_handler}\n    )\n\n\n@test(\"total_size handles objects with circular references\")\ndef test_total_size_circular_refs():\n    # List with circular reference\n    a = [1, 2, 3]\n    a.append(a)  # a contains itself\n\n    # This should not cause an infinite recursion\n    size = total_size(a)\n    assert size > 0\n\n    # Dictionary with circular reference\n    b: dict = {\"key\": 1}\n    b[\"self\"] = b  # b contains itself\n\n    # This should not cause an infinite recursion\n    size = total_size(b)\n    assert size > 0\n\n\n@test(\"total_size with custom handlers\")\ndef test_total_size_custom_handlers():\n    class CustomContainer:\n        def __init__(self, items):\n            self.items = items\n\n        def get_items(self):\n            return self.items\n\n    container = CustomContainer([1, 2, 3, 4, 5])\n\n    # Without a custom handler\n    size_without_handler = total_size(container)\n\n    # With a custom handler\n    handlers = {CustomContainer: lambda c: c.get_items()}\n    size_with_handler = total_size(container, handlers=handlers)\n\n    # The handler accounts for the contained items\n    assert size_with_handler >= size_without_handler\n"
  },
  {
    "path": "src/agents-api/tests/test_messages_truncation.py",
    "content": "# from uuid_extensions import uuid7\n\n# from ward import raises, test\n\n# from agents_api.autogen.openapi_model import Role\n# from agents_api.common.protocol.entries import Entry\n# from agents_api.routers.sessions.exceptions import InputTooBigError\n# from tests.fixtures import base_session\n\n\n# @test(\"truncate empty messages list\", tags=[\"messages_truncate\"])\n# def _(session=base_session):\n#     messages: list[Entry] = []\n#     result = session.truncate(messages, 10)\n\n#     assert messages == result\n\n\n# @test(\"do not truncate\", tags=[\"messages_truncate\"])\n# def _(session=base_session):\n#     contents = [\n#         \"content1\",\n#         \"content2\",\n#         \"content3\",\n#     ]\n#     threshold = sum([len(c) // 3.5 for c in contents])\n\n#     messages: list[Entry] = [\n#         Entry(session_id=uuid7(), role=Role.user, content=contents[0][0]),\n#         Entry(session_id=uuid7(), role=Role.assistant, content=contents[1][0]),\n#         Entry(session_id=uuid7(), role=Role.user, content=contents[2][0]),\n#     ]\n#     result = session.truncate(messages, threshold)\n\n#     assert messages == result\n\n\n# @test(\"truncate thoughts partially\", tags=[\"messages_truncate\"])\n# def _(session=base_session):\n#     contents = [\n#         (\"content1\", True),\n#         (\"content2\", True),\n#         (\"content3\", False),\n#         (\"content4\", True),\n#         (\"content5\", True),\n#         (\"content6\", True),\n#     ]\n#     session_ids = [uuid7()] * len(contents)\n#     threshold = sum([len(c) // 3.5 for c, i in contents if i])\n\n#     messages: list[Entry] = [\n#         Entry(\n#             session_id=session_ids[0],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[0][0],\n#         ),\n#         Entry(session_id=session_ids[1], role=Role.assistant, content=contents[1][0]),\n#         Entry(\n#             session_id=session_ids[2],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[2][0],\n#         ),\n#         Entry(\n#             session_id=session_ids[3],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[3][0],\n#         ),\n#         Entry(session_id=session_ids[4], role=Role.user, content=contents[4][0]),\n#         Entry(session_id=session_ids[5], role=Role.assistant, content=contents[5][0]),\n#     ]\n#     result = session.truncate(messages, threshold)\n#     [\n#         messages[0],\n#         messages[1],\n#         messages[3],\n#         messages[4],\n#         messages[5],\n#     ]\n\n#     assert result == [\n#         messages[0],\n#         messages[1],\n#         messages[3],\n#         messages[4],\n#         messages[5],\n#     ]\n\n\n# @test(\"truncate thoughts partially 2\", tags=[\"messages_truncate\"])\n# def _(session=base_session):\n#     contents = [\n#         (\"content1\", True),\n#         (\"content2\", True),\n#         (\"content3\", False),\n#         (\"content4\", False),\n#         (\"content5\", True),\n#         (\"content6\", True),\n#     ]\n#     session_ids = [uuid7()] * len(contents)\n#     threshold = sum([len(c) // 3.5 for c, i in contents if i])\n\n#     messages: list[Entry] = [\n#         Entry(\n#             session_id=session_ids[0],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[0][0],\n#         ),\n#         Entry(session_id=session_ids[1], role=Role.assistant, content=contents[1][0]),\n#         Entry(\n#             session_id=session_ids[2],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[2][0],\n#         ),\n#         Entry(\n#             session_id=session_ids[3],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[3][0],\n#         ),\n#         Entry(session_id=session_ids[4], role=Role.user, content=contents[4][0]),\n#         Entry(session_id=session_ids[5], role=Role.assistant, content=contents[5][0]),\n#     ]\n#     result = session.truncate(messages, threshold)\n\n#     assert result == [\n#         messages[0],\n#         messages[1],\n#         messages[4],\n#         messages[5],\n#     ]\n\n\n# @test(\"truncate all thoughts\", tags=[\"messages_truncate\"])\n# def _(session=base_session):\n#     contents = [\n#         (\"content1\", False),\n#         (\"content2\", True),\n#         (\"content3\", False),\n#         (\"content4\", False),\n#         (\"content5\", True),\n#         (\"content6\", True),\n#         (\"content7\", False),\n#     ]\n#     session_ids = [uuid7()] * len(contents)\n#     threshold = sum([len(c) // 3.5 for c, i in contents if i])\n\n#     messages: list[Entry] = [\n#         Entry(\n#             session_id=session_ids[0],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[0][0],\n#         ),\n#         Entry(session_id=session_ids[1], role=Role.assistant, content=contents[1][0]),\n#         Entry(\n#             session_id=session_ids[2],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[2][0],\n#         ),\n#         Entry(\n#             session_id=session_ids[3],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[3][0],\n#         ),\n#         Entry(session_id=session_ids[4], role=Role.user, content=contents[4][0]),\n#         Entry(session_id=session_ids[5], role=Role.assistant, content=contents[5][0]),\n#         Entry(\n#             session_id=session_ids[6],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[6][0],\n#         ),\n#     ]\n#     result = session.truncate(messages, threshold)\n\n#     assert result == [\n#         messages[1],\n#         messages[4],\n#         messages[5],\n#     ]\n\n\n# @test(\"truncate user assistant pairs\", tags=[\"messages_truncate\"])\n# def _(session=base_session):\n#     contents = [\n#         (\"content1\", False),\n#         (\"content2\", True),\n#         (\"content3\", False),\n#         (\"content4\", False),\n#         (\"content5\", True),\n#         (\"content6\", True),\n#         (\"content7\", True),\n#         (\"content8\", False),\n#         (\"content9\", True),\n#         (\"content10\", True),\n#         (\"content11\", True),\n#         (\"content12\", True),\n#         (\"content13\", False),\n#     ]\n#     session_ids = [uuid7()] * len(contents)\n#     threshold = sum([len(c) // 3.5 for c, i in contents if i])\n\n#     messages: list[Entry] = [\n#         Entry(\n#             session_id=session_ids[0],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[0][0],\n#         ),\n#         Entry(session_id=session_ids[1], role=Role.assistant, content=contents[1][0]),\n#         Entry(\n#             session_id=session_ids[2],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[2][0],\n#         ),\n#         Entry(\n#             session_id=session_ids[3],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[3][0],\n#         ),\n#         Entry(session_id=session_ids[4], role=Role.user, content=contents[4][0]),\n#         Entry(session_id=session_ids[5], role=Role.assistant, content=contents[5][0]),\n#         Entry(session_id=session_ids[6], role=Role.user, content=contents[6][0]),\n#         Entry(session_id=session_ids[7], role=Role.assistant, content=contents[7][0]),\n#         Entry(session_id=session_ids[8], role=Role.user, content=contents[8][0]),\n#         Entry(session_id=session_ids[9], role=Role.assistant, content=contents[9][0]),\n#         Entry(session_id=session_ids[10], role=Role.user, content=contents[10][0]),\n#         Entry(session_id=session_ids[11], role=Role.assistant, content=contents[11][0]),\n#         Entry(\n#             session_id=session_ids[12],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[12][0],\n#         ),\n#     ]\n\n#     result = session.truncate(messages, threshold)\n\n#     assert result == [\n#         messages[1],\n#         messages[4],\n#         messages[5],\n#         messages[6],\n#         messages[8],\n#         messages[9],\n#         messages[10],\n#         messages[11],\n#     ]\n\n\n# @test(\"unable to truncate\", tags=[\"messages_truncate\"])\n# def _(session=base_session):\n#     contents = [\n#         (\"content1\", False),\n#         (\"content2\", True),\n#         (\"content3\", False),\n#         (\"content4\", False),\n#         (\"content5\", False),\n#         (\"content6\", False),\n#         (\"content7\", True),\n#         (\"content8\", False),\n#         (\"content9\", True),\n#         (\"content10\", False),\n#     ]\n#     session_ids = [uuid7()] * len(contents)\n#     threshold = sum([len(c) // 3.5 for c, i in contents if i])\n#     all_tokens = sum([len(c) // 3.5 for c, _ in contents])\n\n#     messages: list[Entry] = [\n#         Entry(\n#             session_id=session_ids[0],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[0][0],\n#         ),\n#         Entry(session_id=session_ids[1], role=Role.assistant, content=contents[1][0]),\n#         Entry(\n#             session_id=session_ids[2],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[2][0],\n#         ),\n#         Entry(\n#             session_id=session_ids[3],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[3][0],\n#         ),\n#         Entry(session_id=session_ids[4], role=Role.user, content=contents[4][0]),\n#         Entry(session_id=session_ids[5], role=Role.assistant, content=contents[5][0]),\n#         Entry(session_id=session_ids[6], role=Role.user, content=contents[6][0]),\n#         Entry(session_id=session_ids[7], role=Role.assistant, content=contents[7][0]),\n#         Entry(session_id=session_ids[8], role=Role.user, content=contents[8][0]),\n#         Entry(\n#             session_id=session_ids[9],\n#             role=Role.system,\n#             name=\"thought\",\n#             content=contents[9][0],\n#         ),\n#     ]\n#     with raises(InputTooBigError) as ex:\n#         session.truncate(messages, threshold)\n\n#     assert (\n#         str(ex.raised)\n#         == f\"input is too big, {threshold} tokens required, but you got {all_tokens} tokens\"\n#     )\n"
  },
  {
    "path": "src/agents-api/tests/test_metadata_filter_utils.py",
    "content": "\"\"\"\nTests for metadata filter utility functions to prevent SQL injection\n\"\"\"\n\nfrom agents_api.queries.utils import build_metadata_filter_conditions\nfrom ward import test\n\n\n@test(\"utility: build_metadata_filter_conditions with empty filter\")\nasync def _():\n    \"\"\"Test the build_metadata_filter_conditions utility with empty metadata filter.\"\"\"\n    base_params = [\"param1\", \"param2\"]\n    metadata_filter = {}\n\n    conditions, params = build_metadata_filter_conditions(base_params, metadata_filter)\n\n    # Should return empty string and unchanged params\n    assert conditions == \"\"\n    assert params == base_params\n    # Note: The implementation doesn't copy the params if there's no metadata filter\n    # So we skip the identity check\n\n\n@test(\"utility: build_metadata_filter_conditions with simple filter\")\nasync def _():\n    \"\"\"Test the build_metadata_filter_conditions utility with simple metadata filter.\"\"\"\n    base_params = [\"param1\", \"param2\"]\n    metadata_filter = {\"key\": \"value\"}\n\n    conditions, params = build_metadata_filter_conditions(base_params, metadata_filter)\n\n    # Should build a proper condition and append params\n    assert conditions == \" AND metadata->>$3 = $4\"\n    assert params == [\"param1\", \"param2\", \"key\", \"value\"]\n\n\n@test(\"utility: build_metadata_filter_conditions with multiple filters\")\nasync def _():\n    \"\"\"Test the build_metadata_filter_conditions utility with multiple metadata filters.\"\"\"\n    base_params = [\"param1\", \"param2\"]\n    metadata_filter = {\"key1\": \"value1\", \"key2\": \"value2\"}\n\n    conditions, params = build_metadata_filter_conditions(base_params, metadata_filter)\n\n    # Should build compound condition and append all params\n    assert conditions == \" AND metadata->>$3 = $4 AND metadata->>$5 = $6\"\n    assert params == [\"param1\", \"param2\", \"key1\", \"value1\", \"key2\", \"value2\"]\n\n\n@test(\"utility: build_metadata_filter_conditions with table alias\")\nasync def _():\n    \"\"\"Test the build_metadata_filter_conditions with table alias.\"\"\"\n    base_params = [\"param1\", \"param2\"]\n    metadata_filter = {\"key\": \"value\"}\n    table_alias = \"d.\"\n\n    conditions, params = build_metadata_filter_conditions(\n        base_params, metadata_filter, table_alias\n    )\n\n    # Should include table alias in condition\n    assert conditions == \" AND d.metadata->>$3 = $4\"\n    assert params == [\"param1\", \"param2\", \"key\", \"value\"]\n\n\n@test(\"utility: build_metadata_filter_conditions with SQL injection attempts\")\nasync def _():\n    \"\"\"Test that the build_metadata_filter_conditions prevents SQL injection.\"\"\"\n    base_params = [\"param1\", \"param2\"]\n\n    # Test with SQL injection attempts in metadata keys and values\n    metadata_filters = [\n        {\"key' OR 1=1--\": \"value\"},\n        {\"key\": \"value' OR 1=1--\"},\n        {\"key DROP TABLE users--\": \"value\"},\n        {\"key\": \"value'; DROP TABLE users--\"},\n        {\"key\": \"1' UNION SELECT * FROM users--\"},\n    ]\n\n    for metadata_filter in metadata_filters:\n        conditions, params = build_metadata_filter_conditions(base_params, metadata_filter)\n\n        # Each key-value pair should be properly parameterized, not included in the SQL directly\n        for key, value in metadata_filter.items():\n            assert key in params  # Key should be in params, not in SQL string\n            assert value in params  # Value should be in params, not in SQL string\n            assert key not in conditions  # Key should not be in the SQL string\n            assert value not in conditions  # Value should not be in the SQL string\n\n        # The condition should only contain parameters, not the actual values\n        for i in range(len(base_params) + 1, len(params) + 1):\n            assert f\"${i}\" in conditions\n"
  },
  {
    "path": "src/agents-api/tests/test_middleware.py",
    "content": "\"\"\"\nTests for HTTP middleware, specifically the usage_check_middleware\n\"\"\"\n\nimport uuid\nfrom unittest.mock import AsyncMock, patch\n\nimport asyncpg\nfrom agents_api.app import app\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.env import free_tier_cost_limit\nfrom agents_api.queries.developers.create_developer import create_developer\nfrom fastapi import HTTPException, status\nfrom fastapi.testclient import TestClient\nfrom pydantic import BaseModel\nfrom uuid_extensions import uuid7\nfrom ward import fixture, test\n\nfrom .fixtures import make_request, pg_dsn, test_agent, test_session\n\n\nclass TestPayload(BaseModel):\n    \"\"\"Test payload for POST/PUT handlers.\"\"\"\n\n    message: str\n\n\n@fixture\ndef client():\n    \"\"\"Test client fixture that gets reset for each test.\"\"\"\n    client = TestClient(app)\n    yield client\n\n\n@test(\"middleware: inactive free user receives forbidden response\")\nasync def _(client=client):\n    \"\"\"Test that requests from inactive users are blocked with 403 Forbidden.\"\"\"\n\n    # Create a test handler\n    @app.get(\"/test-inactive-user\")\n    async def test_inactive_user():\n        return {\"status\": \"success\"}\n\n    # Create test data\n    developer_id = str(uuid.uuid4())\n    mock_user_cost_data = {\n        \"active\": False,\n        \"cost\": 0.0,\n        \"developer_id\": developer_id,\n        \"tags\": [],\n    }\n\n    # Mock the get_user_cost function\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Make request with the developer ID header\n        response = client.get(\"/test-inactive-user\", headers={\"X-Developer-Id\": developer_id})\n\n        # Verify response is 403 with correct message\n        assert response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Invalid user account\" in response.text\n        assert \"invalid_user_account\" in response.text\n\n\n@test(\"middleware: inactive paid user receives forbidden response\")\ndef _(client=client):\n    \"\"\"Test that requests from inactive paid users are blocked with 403 Forbidden.\"\"\"\n\n    # Create a test handler\n    @app.get(\"/test-inactive-paid-user\")\n    async def test_inactive_paid_user():\n        return {\"status\": \"success\"}\n\n    # Create test data\n    developer_id = str(uuid.uuid4())\n    mock_user_cost_data = {\n        \"active\": False,\n        \"cost\": 0.0,\n        \"developer_id\": developer_id,\n        \"tags\": [\"paid\"],  # User has paid tag but is inactive\n    }\n\n    # Mock the get_user_cost function\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Make request with the developer ID header\n        response = client.get(\n            \"/test-inactive-paid-user\", headers={\"X-Developer-Id\": developer_id}\n        )\n\n        # Verify response is 403 with correct message\n        assert response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Invalid user account\" in response.text\n        assert \"invalid_user_account\" in response.text\n\n\n@test(\"middleware: cost limit exceeded, all requests blocked except GET\")\ndef _(client=client):\n    \"\"\"Test that non-GET requests from users who exceeded cost limits are blocked with 403 Forbidden.\"\"\"\n\n    # Create test handlers for different methods\n    @app.get(\"/test-cost-limit/get\")\n    async def test_cost_limit_get():\n        return {\"status\": \"success\", \"method\": \"GET\"}\n\n    @app.post(\"/test-cost-limit/post\")\n    async def test_cost_limit_post(payload: TestPayload):\n        return {\"status\": \"success\", \"method\": \"POST\", \"message\": payload.message}\n\n    @app.put(\"/test-methods/put\")\n    async def test_methods_put(payload: TestPayload):\n        return {\"status\": \"success\", \"method\": \"PUT\", \"message\": payload.message}\n\n    @app.delete(\"/test-methods/delete\")\n    async def test_methods_delete():\n        return {\"status\": \"success\", \"method\": \"DELETE\"}\n\n    # Create test data\n    developer_id = str(uuid.uuid4())\n    mock_user_cost_data = {\n        \"active\": True,\n        \"cost\": float(free_tier_cost_limit) + 1.0,  # Exceed the cost limit\n        \"developer_id\": developer_id,\n        \"tags\": [],  # No paid tag\n    }\n\n    # Mock the get_user_cost function\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Make a POST request that should be blocked\n        post_response = client.post(\n            \"/test-cost-limit/post\",\n            json={\"message\": \"test\"},\n            headers={\"X-Developer-Id\": developer_id},\n        )\n\n        # Verify POST response is 403 with correct message\n        assert post_response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Cost limit exceeded\" in post_response.text\n        assert \"cost_limit_exceeded\" in post_response.text\n\n        put_response = client.put(\n            \"/test-methods/put\",\n            json={\"message\": \"test update\"},\n            headers={\"X-Developer-Id\": developer_id},\n        )\n\n        # Verify PUT response is 403 with correct message\n        assert put_response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Cost limit exceeded\" in put_response.text\n        assert \"cost_limit_exceeded\" in put_response.text\n\n        # Make a DELETE request that should be blocked\n        delete_response = client.delete(\n            \"/test-methods/delete\", headers={\"X-Developer-Id\": developer_id}\n        )\n\n        # Verify DELETE response is 403 with correct message\n        assert delete_response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Cost limit exceeded\" in delete_response.text\n        assert \"cost_limit_exceeded\" in delete_response.text\n\n        # Make a GET request that should be allowed\n        get_response = client.get(\n            \"/test-cost-limit/get\", headers={\"X-Developer-Id\": developer_id}\n        )\n\n        # Verify GET response passes through\n        assert get_response.status_code == status.HTTP_200_OK\n        assert get_response.json()[\"method\"] == \"GET\"\n\n\n@test(\"middleware: paid tag bypasses cost limit check\")\ndef _(client=client):\n    \"\"\"Test that users with 'paid' tag can make non-GET requests even when over the cost limit.\"\"\"\n\n    # Create test handlers for different methods\n    @app.post(\"/test-paid/post\")\n    async def test_paid_post(payload: TestPayload):\n        return {\"status\": \"success\", \"method\": \"POST\", \"message\": payload.message}\n\n    @app.put(\"/test-paid-methods/put\")\n    async def test_paid_methods_put(payload: TestPayload):\n        return {\"status\": \"success\", \"method\": \"PUT\", \"message\": payload.message}\n\n    @app.delete(\"/test-paid-methods/delete\")\n    async def test_paid_methods_delete():\n        return {\"status\": \"success\", \"method\": \"DELETE\"}\n\n    # Create test data\n    developer_id = str(uuid.uuid4())\n    mock_user_cost_data = {\n        \"active\": True,\n        \"cost\": float(free_tier_cost_limit) + 10.0,  # Significantly exceed the cost limit\n        \"developer_id\": developer_id,\n        \"tags\": [\"test\", \"paid\", \"other-tag\"],  # Include \"paid\" tag\n    }\n\n    # Mock the get_user_cost function\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Make a POST request that should be allowed due to paid tag\n        response = client.post(\n            \"/test-paid/post\",\n            json={\"message\": \"test\"},\n            headers={\"X-Developer-Id\": developer_id},\n        )\n\n        # Verify the request was allowed\n        assert response.status_code == status.HTTP_200_OK\n        assert response.json()[\"method\"] == \"POST\"\n        assert response.json()[\"message\"] == \"test\"\n\n        put_response = client.put(\n            \"/test-paid-methods/put\",\n            json={\"message\": \"test update\"},\n            headers={\"X-Developer-Id\": developer_id},\n        )\n\n        # Verify the PUT request was allowed\n        assert put_response.status_code == status.HTTP_200_OK\n        assert put_response.json()[\"method\"] == \"PUT\"\n\n        # Make a DELETE request that should be allowed due to paid tag\n        delete_response = client.delete(\n            \"/test-paid-methods/delete\", headers={\"X-Developer-Id\": developer_id}\n        )\n\n        # Verify the DELETE request was allowed\n        assert delete_response.status_code == status.HTTP_200_OK\n        assert delete_response.json()[\"method\"] == \"DELETE\"\n\n\n@test(\"middleware: GET request with cost limit exceeded passes through\")\ndef _(client=client):\n    \"\"\"Test that GET requests from users who exceeded cost limits are allowed to proceed.\"\"\"\n\n    # Create a test handler\n    @app.get(\"/test-get-with-cost-limit\")\n    async def test_get_with_cost_limit():\n        return {\"status\": \"success\", \"method\": \"GET\"}\n\n    # Create test data\n    developer_id = str(uuid.uuid4())\n    mock_user_cost_data = {\n        \"active\": True,\n        \"cost\": float(free_tier_cost_limit) + 1.0,  # Exceed the cost limit\n        \"developer_id\": developer_id,\n        \"tags\": [],\n    }\n\n    # Mock the get_user_cost function\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Make a GET request\n        response = client.get(\n            \"/test-get-with-cost-limit\", headers={\"X-Developer-Id\": developer_id}\n        )\n\n        # Verify the request was allowed\n        assert response.status_code == status.HTTP_200_OK\n        assert response.json()[\"method\"] == \"GET\"\n\n\n@test(\"middleware: cost is None treats as exceeded limit\")\ndef _(client=client):\n    \"\"\"Test that non-GET requests with None cost value are treated as exceeding the limit.\"\"\"\n\n    # Create a test handler\n    @app.post(\"/test-none-cost\")\n    async def test_none_cost(payload: TestPayload):\n        return {\"status\": \"success\", \"method\": \"POST\", \"message\": payload.message}\n\n    # Create test data\n    developer_id = str(uuid.uuid4())\n    mock_user_cost_data = {\n        \"active\": True,\n        \"cost\": None,\n        \"developer_id\": developer_id,\n        \"tags\": [],\n    }\n\n    # Mock the get_user_cost function\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Make a POST request\n        response = client.post(\n            \"/test-none-cost\",\n            json={\"message\": \"test\"},\n            headers={\"X-Developer-Id\": developer_id},\n        )\n\n        # Verify response is 403 with correct message\n        assert response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Cost limit exceeded\" in response.text\n        assert \"cost_limit_exceeded\" in response.text\n\n\n@test(\"middleware: null tags field handled properly\")\ndef _(client=client):\n    \"\"\"Test that users with null tags field are handled properly when over cost limit.\"\"\"\n\n    # Create a test handler\n    @app.post(\"/test-null-tags\")\n    async def test_null_tags(payload: TestPayload):\n        return {\"status\": \"success\", \"method\": \"POST\", \"message\": payload.message}\n\n    # Create test data\n    developer_id = str(uuid.uuid4())\n    mock_user_cost_data = {\n        \"active\": True,\n        \"cost\": float(free_tier_cost_limit) + 5.0,  # Exceed the cost limit\n        \"developer_id\": developer_id,\n        \"tags\": None,  # Null field\n    }\n\n    # Mock the get_user_cost function\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Make a POST request\n        response = client.post(\n            \"/test-null-tags\",\n            json={\"message\": \"test\"},\n            headers={\"X-Developer-Id\": developer_id},\n        )\n\n        # Verify response is 403 with correct message\n        assert response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Cost limit exceeded\" in response.text\n        assert \"cost_limit_exceeded\" in response.text\n\n\n@test(\"middleware: no developer_id header passes through\")\ndef _(client=client):\n    \"\"\"Test that requests without a developer_id header are allowed to proceed.\"\"\"\n\n    # Create a test handler\n    @app.get(\"/test-no-developer-id\")\n    async def test_no_developer_id():\n        return {\"status\": \"success\", \"message\": \"no developer ID needed\"}\n\n    # Make request with no developer ID header\n    response = client.get(\"/test-no-developer-id\")\n\n    # Verify the request was allowed\n    assert response.status_code == status.HTTP_200_OK\n    assert response.json()[\"message\"] == \"no developer ID needed\"\n\n\n@test(\"middleware: forbidden, if user is not found\")\ndef _(client=client):\n    \"\"\"Test that requests resulting in NoDataFoundError return 403.\"\"\"\n\n    # Create a test handler\n    @app.get(\"/test-user-not-found\")\n    async def test_user_not_found():\n        return {\"status\": \"success\", \"message\": \"user found\"}\n\n    @app.get(\"/test-404-error\")\n    async def test_404_error():\n        return {\"status\": \"success\", \"message\": \"no 404 error\"}\n\n    # Create a random developer ID\n    developer_id = str(uuid.uuid4())\n\n    # Mock the get_user_cost function to raise NoDataFoundError\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(side_effect=asyncpg.NoDataFoundError())\n    ):\n        # Make request with the developer ID header\n        response = client.get(\"/test-user-not-found\", headers={\"X-Developer-Id\": developer_id})\n\n        # Verify response is 403 with correct message\n        assert response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Invalid user account\" in response.text\n        assert \"invalid_user_account\" in response.text\n\n    # Mock the get_user_cost function to raise HTTPException with 404\n    http_404_error = HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail=\"Not found\")\n    with patch(\"agents_api.web.get_usage_cost\", new=AsyncMock(side_effect=http_404_error)):\n        # Make request with the developer ID header\n        response = client.get(\"/test-404-error\", headers={\"X-Developer-Id\": developer_id})\n\n        # Verify response is 403 with correct message\n        assert response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Invalid user account\" in response.text\n        assert \"invalid_user_account\" in response.text\n\n\n@test(\"middleware: hand over all the http errors except of 404\")\ndef _(client=client):\n    \"\"\"Test that HTTP exceptions other than 404 return with correct status code.\"\"\"\n\n    # Create a test handler\n    @app.get(\"/test-500-error\")\n    async def test_500_error():\n        return {\"status\": \"success\", \"message\": \"no 500 error\"}\n\n    # Create a random developer ID\n    developer_id = str(uuid.uuid4())\n\n    # Mock the get_user_cost function to raise HTTPException with 500\n    http_500_error = HTTPException(\n        status_code=status.HTTP_500_INTERNAL_SERVER_ERROR, detail=\"Server error\"\n    )\n    with patch(\"agents_api.web.get_usage_cost\", new=AsyncMock(side_effect=http_500_error)):\n        # Make request with the developer ID header\n        response = client.get(\"/test-500-error\", headers={\"X-Developer-Id\": developer_id})\n\n        # Verify the response has the same status code as the exception\n        assert response.status_code == status.HTTP_500_INTERNAL_SERVER_ERROR\n\n\n@test(\"middleware: invalid uuid returns bad request\")\ndef _(client=client):\n    \"\"\"Test that requests with invalid UUID return 400 Bad Request.\"\"\"\n\n    # Create a test handler\n    @app.get(\"/test-invalid-uuid\")\n    async def test_invalid_uuid():\n        return {\"status\": \"success\", \"message\": \"valid UUID\"}\n\n    # Make request with invalid UUID\n    response = client.get(\n        \"/test-invalid-uuid\",\n        headers={\"X-Developer-Id\": \"invalid-uuid\"},  # Invalid UUID\n    )\n\n    # Verify response is 400 with correct message\n    assert response.status_code == status.HTTP_400_BAD_REQUEST\n    assert \"Invalid developer ID\" in response.text\n    assert \"invalid_developer_id\" in response.text\n\n\n@test(\"middleware: valid user passes through\")\ndef _(client=client):\n    \"\"\"Test that requests from valid users are allowed to proceed.\"\"\"\n\n    # Create a test handler\n    @app.get(\"/test-valid-user\")\n    async def test_valid_user():\n        return {\"status\": \"success\", \"message\": \"valid user\"}\n\n    # Create test data\n    developer_id = str(uuid.uuid4())\n    mock_user_cost_data = {\n        \"active\": True,\n        \"cost\": 0.0,  # Below the limit\n        \"developer_id\": developer_id,\n        \"tags\": [],\n    }\n\n    # Mock the get_user_cost function\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Make request with the developer ID header\n        response = client.get(\"/test-valid-user\", headers={\"X-Developer-Id\": developer_id})\n\n        # Verify the request was allowed\n        assert response.status_code == status.HTTP_200_OK\n        assert response.json()[\"message\"] == \"valid user\"\n\n\n@test(\"middleware: can't create session when cost limit is reached\")\nasync def _(make_request=make_request, dsn=pg_dsn, test_agent=test_agent):\n    \"\"\"Test that creating a session fails with 403 when cost limit is reached.\"\"\"\n\n    # Create a real developer for this test with no paid tag\n    pool = await create_db_pool(dsn=dsn)\n    developer_id = uuid7()\n    email = f\"test-{developer_id}@example.com\"\n    await create_developer(\n        email=email,\n        active=True,\n        tags=[],  # Free tier user (no paid tag)\n        settings={},\n        developer_id=developer_id,\n        connection_pool=pool,\n    )\n\n    # Mock the get_usage_cost function to simulate cost limit exceeded\n    mock_user_cost_data = {\n        \"active\": True,\n        \"cost\": float(free_tier_cost_limit) + 1.0,  # Exceed the cost limit\n        \"developer_id\": developer_id,\n        \"tags\": [],  # No paid tag\n    }\n\n    # Use the mock for get_usage_cost\n    with patch(\n        \"agents_api.web.get_usage_cost\", new=AsyncMock(return_value=mock_user_cost_data)\n    ):\n        # Try to create a session - should fail with 403\n        response = make_request(\n            method=\"POST\",\n            url=\"/sessions\",\n            json={\"agent_id\": str(test_agent.id)},\n            headers={\"X-Developer-Id\": str(developer_id)},\n        )\n\n        # Verify session creation was blocked\n        assert response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Cost limit exceeded\" in response.text\n        assert \"cost_limit_exceeded\" in response.text\n\n\n@test(\"middleware: can't delete session when cost limit is reached\")\nasync def _(make_request=make_request, dsn=pg_dsn, test_session=test_session, agent=test_agent):\n    \"\"\"Test that deleting a session fails with 403 when cost limit is reached.\"\"\"\n\n    # Create a real developer for this test with no paid tag\n    pool = await create_db_pool(dsn=dsn)\n    developer_id = uuid7()\n    email = f\"test-{developer_id}@example.com\"\n    await create_developer(\n        email=email,\n        active=True,\n        tags=[],  # Free tier user (no paid tag)\n        settings={},\n        developer_id=developer_id,\n        connection_pool=pool,\n    )\n\n    # Mock the get_usage_cost function to return different values for different calls\n    # First call should return under limit for session creation\n    # Subsequent calls should return over limit for deletion\n    mock_responses = [\n        # First response - under the limit (for session creation)\n        {\n            \"active\": True,\n            \"cost\": float(free_tier_cost_limit) - 0.5,  # Under the cost limit\n            \"developer_id\": developer_id,\n            \"tags\": [],\n        },\n        # Second response - over the limit (for session deletion)\n        {\n            \"active\": True,\n            \"cost\": float(free_tier_cost_limit) + 1.0,  # Exceed the cost limit\n            \"developer_id\": developer_id,\n            \"tags\": [],\n        },\n    ]\n\n    mock_get_usage_cost = AsyncMock()\n    mock_get_usage_cost.side_effect = mock_responses\n\n    with patch(\"agents_api.web.get_usage_cost\", new=mock_get_usage_cost):\n        # First create a session when under the cost limit\n        session_response = make_request(\n            method=\"POST\",\n            url=\"/sessions\",\n            json={\"agent\": str(agent.id)},\n            headers={\"X-Developer-Id\": str(developer_id)},\n        )\n\n        assert session_response.status_code == status.HTTP_201_CREATED\n        session_id = session_response.json()[\"id\"]\n\n        # Try to delete the session - should fail with 403 since cost is now over limit\n        delete_response = make_request(\n            method=\"DELETE\",\n            url=f\"/sessions/{session_id}\",\n            headers={\"X-Developer-Id\": str(developer_id)},\n        )\n\n        # Verify session deletion was blocked\n        assert delete_response.status_code == status.HTTP_403_FORBIDDEN\n        assert \"Cost limit exceeded\" in delete_response.text\n        assert \"cost_limit_exceeded\" in delete_response.text\n\n        # Mock one more response for the GET request\n        mock_get_usage_cost.side_effect = [\n            {\n                \"active\": True,\n                \"cost\": float(free_tier_cost_limit) + 1.0,  # Still over the limit\n                \"developer_id\": developer_id,\n                \"tags\": [],\n            }\n        ]\n\n        # But GET request should still work even when over cost limit\n        get_response = make_request(\n            method=\"GET\",\n            url=f\"/sessions/{session_id}\",\n            headers={\"X-Developer-Id\": str(developer_id)},\n        )\n\n        # Verify GET request was allowed\n        assert get_response.status_code == status.HTTP_200_OK\n"
  },
  {
    "path": "src/agents-api/tests/test_mmr.py",
    "content": "from uuid import UUID\n\nimport numpy as np\nfrom agents_api.autogen.Docs import DocOwner, DocReference, Snippet\nfrom agents_api.common.utils.mmr import apply_mmr_to_docs\nfrom ward import test\n\n\ndef create_test_doc(doc_id, embedding=None):\n    \"\"\"Helper function to create test document references\"\"\"\n\n    return DocReference(\n        id=UUID(doc_id) if isinstance(doc_id, str) else doc_id,\n        owner=DocOwner(id=UUID(\"00000000-0000-0000-0000-000000000000\"), role=\"agent\"),\n        snippet=Snippet(\n            index=0,\n            content=f\"Test content {doc_id}\",\n            embedding=embedding.tolist() if isinstance(embedding, np.ndarray) else embedding,\n        ),\n        metadata={},\n    )\n\n\n@test(\"utility: test to apply_mmr_to_docs\")\ndef _():\n    # Create test documents with embeddings\n    docs = [\n        create_test_doc(\"550e8400-e29b-41d4-a716-446655440000\", np.array([0.1, 0.2, 0.3])),\n        create_test_doc(\"6ba7b810-9dad-11d1-80b4-00c04fd430c8\", np.array([0.2, 0.3, 0.4])),\n        create_test_doc(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\", np.array([0.3, 0.4, 0.5])),\n        create_test_doc(\"6ba7b812-9dad-11d1-80b4-00c04fd430c8\", np.array([0.4, 0.5, 0.6])),\n        create_test_doc(\"6ba7b813-9dad-11d1-80b4-00c04fd430c8\", np.array([0.5, 0.6, 0.7])),\n        create_test_doc(\"6ba7b814-9dad-11d1-80b4-00c04fd430c8\", None),  # Doc without embedding\n    ]\n\n    query_embedding = np.array([0.3, 0.3, 0.3])\n\n    # Test with MMR strength = 0.0\n    result = apply_mmr_to_docs(docs, query_embedding, limit=3, mmr_strength=0.0)\n    assert len(result) == 3\n\n    # Test with not enough docs with embeddings (only 1, minimum required is 2 for MMR to work)\n    docs_few_embeddings = [\n        create_test_doc(\"550e8400-e29b-41d4-a716-446655440000\", np.array([0.1, 0.2, 0.3])),\n        create_test_doc(\"6ba7b810-9dad-11d1-80b4-00c04fd430c8\", None),\n        create_test_doc(\"550e8400-e29b-41d4-a716-446655441122\", np.array([0.11, 0.21, 0.31])),\n        create_test_doc(\"6ba7b811-9dad-11d1-80b4-00c04fd430c8\", None),\n    ]\n\n    # Will return the top k docs irrespective of MMR strength and presence of embeddings\n    result = apply_mmr_to_docs(docs_few_embeddings, query_embedding, limit=2, mmr_strength=0.5)\n    assert len(result) == 2  # Should only return docs with embeddings\n    assert result[0].id == UUID(\"550e8400-e29b-41d4-a716-446655441122\")\n    assert result[1].id == UUID(\"550e8400-e29b-41d4-a716-446655440000\")\n\n    # Test with limit greater than available docs\n    result = apply_mmr_to_docs(docs, query_embedding, limit=10, mmr_strength=0.5)\n    assert len(result) == 5  # Only 5 docs have embeddings\n\n\n@test(\"utility: test mmr with different mmr_strength values\")\ndef _():\n    # Create test documents with embeddings\n    docs = [\n        create_test_doc(\n            UUID(\"550e8400-e29b-41d4-a716-446655440001\"), np.array([0.9, 0.1, 0.1])\n        ),  # Most similar to query\n        create_test_doc(\n            UUID(\"550e8400-e29b-41d4-a716-446655440002\"), np.array([0.8, 0.1, 0.1])\n        ),  # Second most similar\n        create_test_doc(\n            UUID(\"550e8400-e29b-41d4-a716-446655440003\"), np.array([0.7, 0.1, 0.1])\n        ),  # Third most similar\n        create_test_doc(\n            UUID(\"550e8400-e29b-41d4-a716-446655440004\"), np.array([0.1, 0.9, 0.1])\n        ),  # Very different from others\n        create_test_doc(\n            UUID(\"550e8400-e29b-41d4-a716-446655440005\"), np.array([0.1, 0.1, 0.9])\n        ),  # Very different from others\n    ]\n\n    query_embedding = np.array([1.0, 0.0, 0.0])\n\n    # With mmr_strength = 0, should return docs in order of similarity to query\n    result_relevance = apply_mmr_to_docs(docs, query_embedding, limit=3, mmr_strength=0.0)\n    assert len(result_relevance) == 3\n    assert result_relevance[0].id == UUID(\"550e8400-e29b-41d4-a716-446655440001\")\n    assert result_relevance[1].id == UUID(\"550e8400-e29b-41d4-a716-446655440002\")\n    assert result_relevance[2].id == UUID(\"550e8400-e29b-41d4-a716-446655440003\")\n\n    # With mmr_strength = 1, should prioritize diversity\n    result_diverse = apply_mmr_to_docs(docs, query_embedding, limit=3, mmr_strength=1.0)\n    assert len(result_diverse) == 3\n    # The first document should still be the most relevant one\n    assert result_diverse[0].id == UUID(\"550e8400-e29b-41d4-a716-446655440001\")\n    # But the next ones should be diverse\n    assert UUID(\"550e8400-e29b-41d4-a716-446655440004\") in [doc.id for doc in result_diverse]\n    assert UUID(\"550e8400-e29b-41d4-a716-446655440005\") in [doc.id for doc in result_diverse]\n\n\n@test(\"utility: test mmr with empty docs list\")\ndef _():\n    query_embedding = np.array([0.3, 0.3, 0.3])\n\n    # Test with empty docs list\n    result = apply_mmr_to_docs([], query_embedding, limit=3, mmr_strength=0.5)\n    assert len(result) == 0\n\n    # Test with all docs having no embeddings\n    docs_no_embeddings = [\n        create_test_doc(UUID(\"550e8400-e29b-41d4-a716-446655440001\"), None),\n        create_test_doc(UUID(\"550e8400-e29b-41d4-a716-446655440002\"), None),\n        create_test_doc(UUID(\"550e8400-e29b-41d4-a716-446655440003\"), None),\n    ]\n\n    # Will return the top limit docs without MMR since no embeddings are present\n    result = apply_mmr_to_docs(docs_no_embeddings, query_embedding, limit=1, mmr_strength=0.5)\n    assert len(result) == 1\n"
  },
  {
    "path": "src/agents-api/tests/test_model_validation.py",
    "content": "from unittest.mock import patch\n\nfrom agents_api.routers.utils.model_validation import validate_model\nfrom fastapi import HTTPException\nfrom ward import raises, test\n\nfrom tests.fixtures import SAMPLE_MODELS\n\n\n@test(\"validate_model: succeeds when model is available in model list\")\nasync def _():\n    # Use async context manager for patching\n    with patch(\"agents_api.common.utils.model_validation.get_model_list\") as mock_get_models:\n        mock_get_models.return_value = SAMPLE_MODELS\n        await validate_model(\"gpt-4o-mini\")\n        mock_get_models.assert_called_once()\n\n\n@test(\"validate_model: fails when model is unavailable in model list\")\nasync def _():\n    with patch(\"agents_api.common.utils.model_validation.get_model_list\") as mock_get_models:\n        mock_get_models.return_value = SAMPLE_MODELS\n        with raises(HTTPException) as exc:\n            await validate_model(\"non-existent-model\")\n\n        assert exc.raised.status_code == 400\n        assert \"Model non-existent-model not available\" in exc.raised.detail\n        mock_get_models.assert_called_once()\n\n\n@test(\"validate_model: fails when model is None\")\nasync def _():\n    with patch(\"agents_api.common.utils.model_validation.get_model_list\") as mock_get_models:\n        mock_get_models.return_value = SAMPLE_MODELS\n        with raises(HTTPException) as exc:\n            await validate_model(None)\n\n        assert exc.raised.status_code == 400\n        assert \"Model None not available\" in exc.raised.detail\n"
  },
  {
    "path": "src/agents-api/tests/test_nlp_utilities.py",
    "content": "import spacy\nfrom agents_api.common.nlp import clean_keyword, extract_keywords, text_to_keywords\nfrom ward import test\n\n\n@test(\"utility: clean_keyword\")\nasync def _():\n    assert clean_keyword(\"Hello, World!\") == \"Hello World\"\n\n    # Basic cleaning\n    # assert clean_keyword(\"test@example.com\") == \"test example com\"\n    assert clean_keyword(\"user-name_123\") == \"user-name_123\"\n    assert clean_keyword(\"  spaces  \") == \"spaces\"\n\n    # Special characters\n    assert clean_keyword(\"$price: 100%\") == \"price 100\"\n    assert clean_keyword(\"#hashtag!\") == \"hashtag\"\n\n    # Multiple spaces and punctuation\n    assert clean_keyword(\"multiple,   spaces...\") == \"multiple spaces\"\n\n    # Empty and whitespace\n    assert clean_keyword(\"\") == \"\"\n    assert clean_keyword(\"   \") == \"\"\n\n    assert clean_keyword(\"- try\") == \"try\"\n\n\n@test(\"utility: extract_keywords - split_chunks=False\")\nasync def _():\n    nlp = spacy.load(\"en_core_web_sm\", exclude=[\"lemmatizer\", \"textcat\"])\n    doc = nlp(\"John Doe is a software engineer at Google.\")\n    assert set(extract_keywords(doc, split_chunks=False)) == {\n        \"John Doe\",\n        \"a software engineer\",\n        \"Google\",\n    }\n\n\n@test(\"utility: extract_keywords - split_chunks=True\")\nasync def _():\n    nlp = spacy.load(\"en_core_web_sm\", exclude=[\"lemmatizer\", \"textcat\"])\n    doc = nlp(\"John Doe is a software engineer at Google.\")\n    assert set(extract_keywords(doc, split_chunks=True)) == {\n        \"John Doe\",\n        \"a\",\n        \"software\",\n        \"engineer\",\n        \"Google\",\n    }\n\n\n@test(\"utility: text_to_keywords - split_chunks=False\")\nasync def _():\n    test_cases = [\n        # Single words\n        (\"test\", {\"test\"}),\n        # Multiple words in single sentence\n        (\n            \"quick brown fox\",\n            {\"quick brown fox\"},  # Now kept as a single phrase due to proximity\n        ),\n        # Technical terms and phrases\n        (\n            \"Machine Learning algorithm\",\n            {\"Machine Learning algorithm\"},  # Common technical phrase\n        ),\n        # Multiple sentences\n        (\n            \"I love basketball especially Michael Jordan. LeBron James is also great.\",\n            {\"basketball\", \"LeBron James\", \"Michael Jordan\"},\n        ),\n        # Quoted phrases\n        (\n            '\"quick brown fox\"',\n            {\"quick brown fox\"},  # Quotes removed, phrase kept together\n        ),\n        ('Find \"machine learning\" algorithms', {\"machine learning\"}),\n        # Multiple quoted phrases\n        ('\"data science\" and \"machine learning\"', {\"machine learning\", \"data science\"}),\n        # Edge cases\n        (\"\", set()),\n        (\n            \"the and or\",\n            set(),  # All stop words should result in empty string\n        ),\n        (\n            \"a\",\n            set(),  # Single stop word should result in empty string\n        ),\n        (\"X\", set()),\n        # Empty quotes\n        ('\"\"', set()),\n        ('test \"\" phrase', {\"phrase\", \"test\"}),\n        (\n            \"John Doe is a software engineer at Google.\",\n            {\"Google\", \"John Doe\", \"a software engineer\"},\n        ),\n        (\"- Google\", {\"Google\"}),\n        # Test duplicate keyword handling\n        (\n            \"John Doe is great. John Doe is awesome.\",\n            {\"John Doe\"},  # Should only include \"John Doe\" once\n        ),\n        (\n            \"Software Engineer at Google. Also, a Software Engineer.\",\n            {\"Google\", \"Also a Software Engineer\", \"Software Engineer\"},\n        ),\n    ]\n\n    for input_text, expected_output in test_cases:\n        print(f\"Input: '{input_text}'\")\n        result = text_to_keywords(input_text, split_chunks=False)\n        print(f\"Generated query: '{result}'\")\n        print(f\"Expected: '{expected_output}'\\n\")\n\n        assert result == expected_output, (\n            f\"Expected terms {expected_output} but got {result} for input '{input_text}'\"\n        )\n\n\n@test(\"utility: text_to_keywords - split_chunks=True\")\nasync def _():\n    test_cases = [\n        # Single words\n        (\"test\", {\"test\"}),\n        # Multiple words in single sentence\n        (\n            \"quick brown fox\",\n            {\"quick\", \"brown\", \"fox\"},  # Now kept as a single phrase due to proximity\n        ),\n        # Technical terms and phrases\n        (\n            \"Machine Learning algorithm\",\n            {\"Machine\", \"Learning\", \"algorithm\"},  # Common technical phrase\n        ),\n        # Multiple sentences\n        (\n            \"I love basketball especially Michael Jordan. LeBron James is also great.\",\n            {\"basketball\", \"LeBron James\", \"Michael Jordan\"},\n        ),\n        # Quoted phrases\n        (\n            '\"quick brown fox\"',\n            {\"quick\", \"brown\", \"fox\"},  # Quotes removed, phrase kept together\n        ),\n        ('Find \"machine learning\" algorithms', {\"machine\", \"learning\"}),\n        # Multiple quoted phrases\n        ('\"data science\" and \"machine learning\"', {\"machine\", \"learning\", \"data\", \"science\"}),\n        # Edge cases\n        (\"\", set()),\n        (\n            \"the and or\",\n            set(),  # All stop words should result in empty string\n        ),\n        (\n            \"a\",\n            set(),  # Single stop word should result in empty string\n        ),\n        (\"X\", set()),\n        # Empty quotes\n        ('\"\"', set()),\n        ('test \"\" phrase', {\"phrase\", \"test\"}),\n        (\n            \"John Doe is a software engineer at Google.\",\n            {\"Google\", \"John Doe\", \"software\", \"engineer\"},\n        ),\n        # Test duplicate keyword handling\n        (\n            \"John Doe is great. John Doe is awesome.\",\n            {\"John Doe\"},  # Should only include \"John Doe\" once even with split_chunks=True\n        ),\n        (\n            \"Software Engineer at Google. Also, a Software Engineer.\",\n            {\"Also\", \"Google\", \"Software\", \"Engineer\"},  # When split, each word appears once\n        ),\n    ]\n\n    for input_text, expected_output in test_cases:\n        print(f\"Input: '{input_text}'\")\n        result = text_to_keywords(input_text, split_chunks=True)\n        print(f\"Generated query: '{result}'\")\n        print(f\"Expected: '{expected_output}'\\n\")\n\n        assert result == expected_output, (\n            f\"Expected terms {expected_output} but got {result} for input '{input_text}'\"\n        )\n"
  },
  {
    "path": "src/agents-api/tests/test_pg_query_step.py",
    "content": "from unittest.mock import AsyncMock, MagicMock, patch\n\nfrom agents_api.activities.pg_query_step import pg_query_step\nfrom ward import test\n\n\n@test(\"pg_query_step correctly calls the specified query\")\nasync def _():\n    # Patch the relevant modules and functions\n    with (\n        patch(\"agents_api.activities.pg_query_step.queries\") as mock_queries,\n    ):\n        # Create a mock query function that will be returned by getattr\n        mock_query = AsyncMock(return_value={\"result\": \"test\"})\n\n        # Set up module resolution chain: queries -> test_module -> test_file -> test_query\n        mock_test_file = MagicMock()\n        mock_test_file.test_query = mock_query\n\n        mock_test_module = MagicMock()\n        mock_test_module.test_file = mock_test_file\n\n        # Configure the queries module to return our mock module\n        mock_queries.test_module = mock_test_module\n\n        # Call the function with a query in the format \"module_name.query_name\"\n        result = await pg_query_step(\n            query_name=\"test_query\",\n            file_name=\"test_module.test_file\",\n            values={\"param1\": \"value1\"},\n        )\n\n        # Verify the query was called with the expected arguments\n        mock_query.assert_called_once_with(param1=\"value1\")\n\n        # Verify the function returns the result from the query\n        assert result == {\"result\": \"test\"}\n\n\n@test(\"pg_query_step raises exception for invalid query name format\")\nasync def _():\n    # Try with an invalid query name (no dot separator)\n    try:\n        await pg_query_step(\n            query_name=\"invalid_query_name\", file_name=\"invalid_file_name\", values={}\n        )\n        assert False, \"Expected an exception but none was raised\"\n    except ValueError:\n        # Expected behavior - ValueError should be raised\n        pass\n    except Exception as e:\n        assert False, f\"Expected ValueError but got {type(e).__name__}\"\n\n\n@test(\"pg_query_step propagates exceptions from the underlying query\")\nasync def _():\n    # Patch the relevant modules and functions\n    with patch(\"agents_api.activities.pg_query_step.queries\") as mock_queries:\n        # Create a mock query function that raises an exception\n        mock_query = AsyncMock(side_effect=Exception(\"Test query error\"))\n\n        # Set up module resolution chain: queries -> test_module -> test_file -> test_query\n        mock_test_file = MagicMock()\n        mock_test_file.test_query = mock_query\n\n        mock_test_module = MagicMock()\n        mock_test_module.test_file = mock_test_file\n\n        # Configure the queries module to return our mock module\n        mock_queries.test_module = mock_test_module\n\n        # Call the function and expect an exception\n        try:\n            await pg_query_step(\n                query_name=\"test_query\",\n                file_name=\"test_module.test_file\",\n                values={},\n            )\n            assert False, \"Expected an exception but none was raised\"\n        except Exception as e:\n            # Verify the exception is propagated\n            assert str(e) == \"Test query error\"\n"
  },
  {
    "path": "src/agents-api/tests/test_prepare_for_step.py",
    "content": "import uuid\nfrom unittest.mock import patch\n\nfrom agents_api.autogen.openapi_model import (\n    Agent,\n    Execution,\n    TaskSpecDef,\n    ToolCallStep,\n    Transition,\n    TransitionTarget,\n    Workflow,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.common.protocol.tasks import (\n    ExecutionInput,\n    StepContext,\n)\nfrom agents_api.common.utils.datetime import utcnow\nfrom agents_api.common.utils.expressions import evaluate_expressions\nfrom agents_api.common.utils.workflows import get_workflow_name\nfrom uuid_extensions import uuid7\nfrom ward import raises, test\n\nfrom tests.fixtures import pg_dsn\nfrom tests.utils import generate_transition\n\n\nasync def base_evaluate_with_pool(\n    exprs,\n    context=None,\n    values=None,\n    extra_lambda_strs=None,\n    connection_pool=None,\n):\n    \"\"\"Custom base_evaluate that uses connection_pool for prepare_for_step\"\"\"\n    if context is None and values is None:\n        msg = \"Either context or values must be provided\"\n        raise ValueError(msg)\n\n    values = values or {}\n    if context:\n        # Pass the connection_pool to prepare_for_step\n        values.update(await context.prepare_for_step(limit=50, connection_pool=connection_pool))\n\n    return evaluate_expressions(exprs, values=values, extra_lambda_strs=extra_lambda_strs)\n\n\n@test(\"utility: prepare_for_step - underscore\")\nasync def _(dsn=pg_dsn):  # Add dsn parameter\n    pool = await create_db_pool(dsn=dsn)\n\n    with patch(\n        \"agents_api.common.protocol.tasks.StepContext.get_inputs\",\n        return_value=(\n            [{\"x\": \"1\"}, {\"y\": \"2\"}, {\"z\": \"3\"}],\n            [None, \"first step\", \"second step\"],\n            {},\n        ),\n    ):\n        step = ToolCallStep(tool=\"tool1\")\n        context = StepContext(\n            execution_input=ExecutionInput(\n                developer_id=uuid.uuid4(),\n                agent=Agent(\n                    id=uuid.uuid4(),\n                    name=\"test agent\",\n                    created_at=utcnow(),\n                    updated_at=utcnow(),\n                ),\n                agent_tools=[],\n                arguments={},\n                task=TaskSpecDef(\n                    name=\"task1\",\n                    tools=[],\n                    workflows=[Workflow(name=\"main\", steps=[step])],\n                ),\n            ),\n            current_input={\"current_input\": \"value 1\"},\n            cursor=TransitionTarget(\n                workflow=\"main\",\n                step=0,\n                scope_id=uuid.uuid4(),\n            ),\n        )\n        result = await context.prepare_for_step(connection_pool=pool)\n        assert result[\"_\"] == {\"current_input\": \"value 1\"}\n\n\n@test(\"utility: prepare_for_step - label lookup in step\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    with patch(\n        \"agents_api.common.protocol.tasks.StepContext.get_inputs\",\n        return_value=(\n            [{\"x\": \"1\"}, {\"y\": \"2\"}, {\"z\": \"3\"}],\n            [None, \"first step\", \"second step\"],\n            {},\n        ),\n    ):\n        step = ToolCallStep(tool=\"tool1\")\n        context = StepContext(\n            execution_input=ExecutionInput(\n                developer_id=uuid.uuid4(),\n                agent=Agent(\n                    id=uuid.uuid4(),\n                    name=\"test agent\",\n                    created_at=utcnow(),\n                    updated_at=utcnow(),\n                ),\n                agent_tools=[],\n                arguments={},\n                task=TaskSpecDef(\n                    name=\"task1\",\n                    tools=[],\n                    workflows=[Workflow(name=\"main\", steps=[step])],\n                ),\n            ),\n            current_input={\"current_input\": \"value 1\"},\n            cursor=TransitionTarget(\n                workflow=\"main\",\n                step=0,\n                scope_id=uuid.uuid4(),\n            ),\n        )\n        result = await context.prepare_for_step(connection_pool=pool)\n\n        assert result[\"steps\"][\"first step\"][\"input\"] == {\"x\": \"1\"}\n        assert result[\"steps\"][\"first step\"][\"output\"] == {\"y\": \"2\"}\n        assert result[\"steps\"][\"second step\"][\"input\"] == {\"y\": \"2\"}\n        assert result[\"steps\"][\"second step\"][\"output\"] == {\"z\": \"3\"}\n\n\n@test(\"utility: prepare_for_step - global state\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    with patch(\n        \"agents_api.common.protocol.tasks.StepContext.get_inputs\",\n        return_value=([], [], {\"user_name\": \"John\", \"count\": 10, \"has_data\": True}),\n    ):\n        step = ToolCallStep(tool=\"tool1\")\n        context = StepContext(\n            execution_input=ExecutionInput(\n                developer_id=uuid.uuid4(),\n                agent=Agent(\n                    id=uuid.uuid4(),\n                    name=\"test agent\",\n                    created_at=utcnow(),\n                    updated_at=utcnow(),\n                ),\n                agent_tools=[],\n                arguments={},\n                task=TaskSpecDef(\n                    name=\"task1\",\n                    tools=[],\n                    workflows=[Workflow(name=\"main\", steps=[step])],\n                ),\n            ),\n            current_input={\"current_input\": \"value 1\"},\n            cursor=TransitionTarget(\n                workflow=\"main\",\n                step=0,\n                scope_id=uuid.uuid4(),\n            ),\n        )\n        result = await context.prepare_for_step(connection_pool=pool)\n        assert result[\"state\"][\"user_name\"] == \"John\"\n        assert result[\"state\"][\"count\"] == 10\n        assert result[\"state\"][\"has_data\"] is True\n\n\n@test(\"utility: get_workflow_name\")\nasync def _(dsn=pg_dsn):\n    await create_db_pool(dsn=dsn)\n\n    transition = Transition(\n        id=uuid.uuid4(),\n        execution_id=uuid.uuid4(),\n        output=None,\n        created_at=utcnow(),\n        updated_at=utcnow(),\n        type=\"step\",\n        current=TransitionTarget(workflow=\"main\", step=0, scope_id=uuid.uuid4()),\n        next=TransitionTarget(workflow=\"main\", step=1, scope_id=uuid.uuid4()),\n    )\n\n    transition.current = TransitionTarget(workflow=\"main\", step=0, scope_id=uuid.uuid4())\n    transition.next = TransitionTarget(workflow=\"main\", step=1, scope_id=uuid.uuid4())\n    assert get_workflow_name(transition) == \"main\"\n\n    transition.current = TransitionTarget(\n        workflow=\"`main`[0].if_else.then\",\n        step=0,\n        scope_id=uuid.uuid4(),\n    )\n    transition.next = None\n    assert get_workflow_name(transition) == \"main\"\n\n    transition.current = TransitionTarget(workflow=\"subworkflow\", step=0, scope_id=uuid.uuid4())\n    transition.next = TransitionTarget(workflow=\"subworkflow\", step=1, scope_id=uuid.uuid4())\n    assert get_workflow_name(transition) == \"subworkflow\"\n\n    transition.current = TransitionTarget(\n        workflow=\"`subworkflow`[0].if_else.then\",\n        step=0,\n        scope_id=uuid.uuid4(),\n    )\n    transition.next = TransitionTarget(\n        workflow=\"`subworkflow`[0].if_else.else\",\n        step=1,\n        scope_id=uuid.uuid4(),\n    )\n    assert get_workflow_name(transition) == \"subworkflow\"\n\n    transition.current = TransitionTarget(\n        workflow=\"PAR:`main`[2].mapreduce[0][2],0\",\n        step=0,\n        scope_id=uuid.uuid4(),\n    )\n    transition.next = None\n    assert get_workflow_name(transition) == \"main\"\n\n    transition.current = TransitionTarget(\n        workflow=\"PAR:`subworkflow`[2].mapreduce[0][3],0\",\n        step=0,\n        scope_id=uuid.uuid4(),\n    )\n    transition.next = None\n    assert get_workflow_name(transition) == \"subworkflow\"\n\n\n@test(\"utility: get_workflow_name - raises\")\nasync def _(dsn=pg_dsn):\n    await create_db_pool(dsn=dsn)\n\n    transition = Transition(\n        id=uuid.uuid4(),\n        execution_id=uuid.uuid4(),\n        output=None,\n        created_at=utcnow(),\n        updated_at=utcnow(),\n        type=\"step\",\n        current=TransitionTarget(workflow=\"main\", step=0, scope_id=uuid.uuid4()),\n        next=TransitionTarget(workflow=\"main\", step=1, scope_id=uuid.uuid4()),\n    )\n\n    with raises(AssertionError):\n        transition.current = TransitionTarget(\n            workflow=\"`main[2].mapreduce[0][2],0\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        )\n        get_workflow_name(transition)\n\n    with raises(AssertionError):\n        transition.current = TransitionTarget(workflow=\"PAR:`\", step=0, scope_id=uuid.uuid4())\n        get_workflow_name(transition)\n\n    with raises(AssertionError):\n        transition.current = TransitionTarget(workflow=\"`\", step=0, scope_id=uuid.uuid4())\n        get_workflow_name(transition)\n\n    with raises(AssertionError):\n        transition.current = TransitionTarget(\n            workflow=\"PAR:`subworkflow[2].mapreduce[0][3],0\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        )\n        get_workflow_name(transition)\n\n\n@test(\"utility: get_inputs - 2 parallel subworkflows\")\nasync def _(dsn=pg_dsn):\n    await create_db_pool(dsn=dsn)\n\n    uuid7()\n    subworkflow1_scope_id = uuid7()\n    subworkflow2_scope_id = uuid7()\n\n    transition1 = generate_transition(\n        type=\"init_branch\",\n        output={\"b\": 1},\n        current_step=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=0,\n            scope_id=subworkflow1_scope_id,\n        ),\n        next_step=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=0,\n            scope_id=subworkflow1_scope_id,\n        ),\n    )\n\n    transition2 = generate_transition(\n        type=\"step\",\n        output={\"c\": 1},\n        current_step=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=0,\n            scope_id=subworkflow1_scope_id,\n        ),\n        next_step=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=1,\n            scope_id=subworkflow1_scope_id,\n        ),\n    )\n\n    subworkflow1_transitions = [transition1, transition2]\n\n    transition3 = generate_transition(\n        type=\"init_branch\",\n        output={\"b\": 2},\n        current_step=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=0,\n            scope_id=subworkflow2_scope_id,\n        ),\n        next_step=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=0,\n            scope_id=subworkflow2_scope_id,\n        ),\n    )\n\n    transition4 = generate_transition(\n        type=\"step\",\n        output={\"c\": 2},\n        current_step=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=0,\n            scope_id=subworkflow2_scope_id,\n        ),\n        next_step=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=1,\n            scope_id=subworkflow2_scope_id,\n        ),\n    )\n\n    subworkflow2_transitions = [transition3, transition4]\n\n    step = ToolCallStep(tool=\"tool1\")\n    context = StepContext(\n        execution_input=ExecutionInput(\n            developer_id=uuid.uuid4(),\n            agent=Agent(\n                id=uuid.uuid4(),\n                name=\"test agent\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n            ),\n            agent_tools=[],\n            arguments={},\n            task=TaskSpecDef(\n                name=\"task1\",\n                tools=[],\n                workflows=[Workflow(name=\"main\", steps=[step])],\n            ),\n            execution=Execution(\n                id=uuid.uuid4(),\n                task_id=uuid.uuid4(),\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                status=\"running\",\n                input={},\n            ),\n        ),\n        current_input={\"current_input\": \"value 1\"},\n        cursor=TransitionTarget(\n            workflow=\"subworkflow\",\n            step=1,\n            scope_id=uuid7(),\n        ),\n    )\n\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n            return_value=subworkflow1_transitions,\n        ),\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        context.cursor.scope_id = subworkflow1_scope_id\n        inputs, labels, state = await context.get_inputs()\n        assert inputs == [{\"b\": 1}, {\"c\": 1}]\n        assert labels == [None, None]\n        assert state == {}\n\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n            return_value=subworkflow2_transitions,\n        ),\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        context.cursor.scope_id = subworkflow2_scope_id\n        inputs, labels, state = await context.get_inputs()\n        assert inputs == [{\"b\": 2}, {\"c\": 2}]\n        assert labels == [None, None]\n        assert state == {}\n"
  },
  {
    "path": "src/agents-api/tests/test_prompt_step_auto_tools.py",
    "content": "from unittest.mock import AsyncMock, patch\nfrom uuid import uuid4\n\nfrom agents_api.activities.task_steps.prompt_step import prompt_step\nfrom agents_api.autogen.openapi_model import (\n    Agent,\n    CreateToolRequest,\n    FunctionDef,\n    PromptStep,\n    TaskSpecDef,\n    TransitionTarget,\n    Workflow,\n)\nfrom agents_api.common.protocol.tasks import ExecutionInput, StepContext\nfrom agents_api.common.utils.datetime import utcnow\nfrom ward import test\n\n\n# Define the mock function once at module level\ndef mock_base_evaluate(value, context):\n    \"\"\"Mock base_evaluate to return appropriate types based on input\"\"\"\n    if isinstance(value, dict):\n        # For passed_settings, return the dict unchanged\n        return value\n    # For prompt strings, return the string\n    return \"Test prompt\"\n\n\n@test(\"prompt_step uses auto tool calls when feature flag is enabled\")\nasync def _():\n    tool = CreateToolRequest(\n        name=\"test_tool\",\n        type=\"function\",\n        function=FunctionDef(\n            parameters={\"type\": \"object\", \"properties\": {\"param\": {\"type\": \"string\"}}},\n        ),\n        description=\"Test function\",\n    )\n\n    # Mock feature flag to be enabled\n    with (\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.get_feature_flag_value\"\n        ) as mock_flag,\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.base_evaluate\",\n            side_effect=mock_base_evaluate,\n        ),\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.run_llm_with_tools\",\n            new_callable=AsyncMock,\n        ) as mock_run_llm,\n    ):\n        mock_flag.return_value = True\n        mock_run_llm.return_value = [\n            {\"role\": \"user\", \"content\": \"Test prompt\"},\n            {\"role\": \"assistant\", \"content\": \"Test response\"},\n        ]\n\n        # Create proper StepContext with real objects\n        # Note: auto_run_tools defaults to False now, so we need to explicitly set it to True\n        step = PromptStep(prompt=\"Test prompt\", unwrap=False, auto_run_tools=True)\n        execution_input = ExecutionInput(\n            developer_id=uuid4(),\n            agent=Agent(\n                id=uuid4(),\n                name=\"test_agent\",\n                model=\"gpt-4\",\n                default_settings={\"temperature\": 0.7},\n                created_at=utcnow(),\n                updated_at=utcnow(),\n            ),\n            agent_tools=[],\n            arguments={},\n            task=TaskSpecDef(\n                name=\"test_task\",\n                tools=[],\n                workflows=[Workflow(name=\"main\", steps=[step])],\n            ),\n        )\n\n        context = StepContext(\n            execution_input=execution_input,\n            current_input=\"test input\",\n            cursor=TransitionTarget(\n                workflow=\"main\",\n                step=0,\n                scope_id=uuid4(),\n            ),\n        )\n\n        # Mock the tools method on the StepContext class - need to accept self parameter\n        async def mock_tools_method(self):\n            return [tool]\n\n        with patch.object(StepContext, \"tools\", mock_tools_method):\n            # Run the activity\n            result = await prompt_step(context)\n\n            # Verify run_llm_with_tools was called\n            mock_run_llm.assert_called_once()\n            call_args = mock_run_llm.call_args\n            assert call_args[1][\"messages\"] == [{\"role\": \"user\", \"content\": \"Test prompt\"}]\n            assert len(call_args[1][\"tools\"]) == 1\n            assert call_args[1][\"tools\"][0].name == \"test_tool\"\n\n            # Check result\n            assert result.output == [\n                {\"role\": \"user\", \"content\": \"Test prompt\"},\n                {\"role\": \"assistant\", \"content\": \"Test response\"},\n            ]\n\n\n@test(\"prompt_step with auto tools handles unwrap correctly\")\nasync def _():\n    # Mock feature flag to be enabled\n    with (\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.get_feature_flag_value\"\n        ) as mock_flag,\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.base_evaluate\",\n            side_effect=mock_base_evaluate,\n        ),\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.run_llm_with_tools\",\n            new_callable=AsyncMock,\n        ) as mock_run_llm,\n    ):\n        mock_flag.return_value = True\n        mock_run_llm.return_value = [\n            {\"role\": \"user\", \"content\": \"Test prompt\"},\n            {\"role\": \"assistant\", \"content\": \"Unwrapped response\", \"tool_calls\": None},\n        ]\n\n        # Create proper StepContext with real objects\n        # Note: auto_run_tools defaults to False now, so we need to explicitly set it to True for this test\n        step = PromptStep(prompt=\"Test prompt\", unwrap=True, auto_run_tools=True)\n        execution_input = ExecutionInput(\n            developer_id=uuid4(),\n            agent=Agent(\n                id=uuid4(),\n                name=\"test_agent\",\n                model=\"gpt-4\",\n                default_settings={},\n                created_at=utcnow(),\n                updated_at=utcnow(),\n            ),\n            agent_tools=[],\n            arguments={},\n            task=TaskSpecDef(\n                name=\"test_task\",\n                tools=[],\n                workflows=[Workflow(name=\"main\", steps=[step])],\n            ),\n        )\n\n        context = StepContext(\n            execution_input=execution_input,\n            current_input=\"test input\",\n            cursor=TransitionTarget(\n                workflow=\"main\",\n                step=0,\n                scope_id=uuid4(),\n            ),\n        )\n\n        # Mock the tools method on the StepContext class - need to accept self parameter\n        async def mock_tools_method(self):\n            return []\n\n        with patch.object(StepContext, \"tools\", mock_tools_method):\n            # Run the activity\n            result = await prompt_step(context)\n\n            # Check that output is unwrapped\n            assert result.output == \"Unwrapped response\"\n\n\n@test(\"prompt_step with auto_run_tools=False passes empty tools list\")\nasync def _():\n    tool = CreateToolRequest(\n        name=\"test_tool\",\n        type=\"function\",\n        function=FunctionDef(\n            parameters={\"type\": \"object\", \"properties\": {\"param\": {\"type\": \"string\"}}},\n        ),\n        description=\"Test function\",\n    )\n\n    # Mock feature flag to be enabled\n    with (\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.get_feature_flag_value\"\n        ) as mock_flag,\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.base_evaluate\",\n            side_effect=mock_base_evaluate,\n        ),\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.run_llm_with_tools\",\n            new_callable=AsyncMock,\n        ) as mock_run_llm,\n    ):\n        mock_flag.return_value = True\n        mock_run_llm.return_value = [\n            {\"role\": \"user\", \"content\": \"Test prompt\"},\n            {\"role\": \"assistant\", \"content\": \"Test response without tools\"},\n        ]\n\n        # Create prompt step with auto_run_tools=False\n        step = PromptStep(prompt=\"Test prompt\", unwrap=False, auto_run_tools=False)\n        execution_input = ExecutionInput(\n            developer_id=uuid4(),\n            agent=Agent(\n                id=uuid4(),\n                name=\"test_agent\",\n                model=\"gpt-4\",\n                default_settings={\"temperature\": 0.7},\n                created_at=utcnow(),\n                updated_at=utcnow(),\n            ),\n            agent_tools=[],\n            arguments={},\n            task=TaskSpecDef(\n                name=\"test_task\",\n                tools=[],\n                workflows=[Workflow(name=\"main\", steps=[step])],\n            ),\n        )\n\n        context = StepContext(\n            execution_input=execution_input,\n            current_input=\"test input\",\n            cursor=TransitionTarget(\n                workflow=\"main\",\n                step=0,\n                scope_id=uuid4(),\n            ),\n        )\n\n        # Mock the tools method to return a tool\n        async def mock_tools_method(self):\n            return [tool]\n\n        with patch.object(StepContext, \"tools\", mock_tools_method):\n            # Run the activity\n            result = await prompt_step(context)\n\n            # Verify run_llm_with_tools was called with empty tools list\n            mock_run_llm.assert_called_once()\n            call_args = mock_run_llm.call_args\n            assert call_args[1][\"messages\"] == [{\"role\": \"user\", \"content\": \"Test prompt\"}]\n            # IMPORTANT: Verify empty tools list was passed\n            assert call_args[1][\"tools\"] == []\n\n            # Check result\n            assert result.output == [\n                {\"role\": \"user\", \"content\": \"Test prompt\"},\n                {\"role\": \"assistant\", \"content\": \"Test response without tools\"},\n            ]\n\n\n@test(\"prompt_step with auto_run_tools=True passes all available tools\")\nasync def _():\n    tool1 = CreateToolRequest(\n        name=\"tool1\",\n        type=\"function\",\n        function=FunctionDef(\n            parameters={\"type\": \"object\", \"properties\": {\"param\": {\"type\": \"string\"}}},\n        ),\n        description=\"Test function 1\",\n    )\n    tool2 = CreateToolRequest(\n        name=\"tool2\",\n        type=\"function\",\n        function=FunctionDef(\n            parameters={\"type\": \"object\", \"properties\": {\"param\": {\"type\": \"number\"}}},\n        ),\n        description=\"Test function 2\",\n    )\n\n    # Mock feature flag to be enabled\n    with (\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.get_feature_flag_value\"\n        ) as mock_flag,\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.base_evaluate\",\n            side_effect=mock_base_evaluate,\n        ),\n        patch(\n            \"agents_api.activities.task_steps.prompt_step.run_llm_with_tools\",\n            new_callable=AsyncMock,\n        ) as mock_run_llm,\n    ):\n        mock_flag.return_value = True\n        mock_run_llm.return_value = [\n            {\"role\": \"user\", \"content\": \"Test prompt\"},\n            {\"role\": \"assistant\", \"content\": \"Test response with tools\"},\n        ]\n\n        # Create prompt step with auto_run_tools=True (default)\n        step = PromptStep(prompt=\"Test prompt\", unwrap=False, auto_run_tools=True)\n        execution_input = ExecutionInput(\n            developer_id=uuid4(),\n            agent=Agent(\n                id=uuid4(),\n                name=\"test_agent\",\n                model=\"gpt-4\",\n                default_settings={\"temperature\": 0.7},\n                created_at=utcnow(),\n                updated_at=utcnow(),\n            ),\n            agent_tools=[],\n            arguments={},\n            task=TaskSpecDef(\n                name=\"test_task\",\n                tools=[],\n                workflows=[Workflow(name=\"main\", steps=[step])],\n            ),\n        )\n\n        context = StepContext(\n            execution_input=execution_input,\n            current_input=\"test input\",\n            cursor=TransitionTarget(\n                workflow=\"main\",\n                step=0,\n                scope_id=uuid4(),\n            ),\n        )\n\n        # Mock the tools method to return multiple tools\n        async def mock_tools_method(self):\n            return [tool1, tool2]\n\n        with patch.object(StepContext, \"tools\", mock_tools_method):\n            # Run the activity\n            result = await prompt_step(context)\n\n            # Verify run_llm_with_tools was called with all tools\n            mock_run_llm.assert_called_once()\n            call_args = mock_run_llm.call_args\n            assert call_args[1][\"messages\"] == [{\"role\": \"user\", \"content\": \"Test prompt\"}]\n            # IMPORTANT: Verify all tools were passed\n            assert len(call_args[1][\"tools\"]) == 2\n            assert call_args[1][\"tools\"][0].name == \"tool1\"\n            assert call_args[1][\"tools\"][1].name == \"tool2\"\n\n            # Check result\n            assert result.output == [\n                {\"role\": \"user\", \"content\": \"Test prompt\"},\n                {\"role\": \"assistant\", \"content\": \"Test response with tools\"},\n            ]\n"
  },
  {
    "path": "src/agents-api/tests/test_query_utils.py",
    "content": "from agents_api.queries.utils import sanitize_string\nfrom ward import test\n\n\n@test(\"utility: sanitize_string - strings\")\ndef _():\n    # Test basic string sanitization\n    assert sanitize_string(\"test\\u0000string\") == \"teststring\"\n    assert sanitize_string(\"normal string\") == \"normal string\"\n    assert sanitize_string(\"multiple\\u0000null\\u0000chars\") == \"multiplenullchars\"\n    assert sanitize_string(\"\") == \"\"\n    assert sanitize_string(None) is None\n\n\n@test(\"utility: sanitize_string - nested data structures\")\ndef _():\n    # Test dictionary sanitization\n    test_dict = {\n        \"key1\": \"value\\u0000\",\n        \"key2\": [\"item\\u00001\", \"item2\"],\n        \"key3\": {\"nested_key\": \"nested\\u0000value\"},\n    }\n    expected_dict = {\n        \"key1\": \"value\",\n        \"key2\": [\"item1\", \"item2\"],\n        \"key3\": {\"nested_key\": \"nestedvalue\"},\n    }\n    assert sanitize_string(test_dict) == expected_dict\n\n    # Test list sanitization\n    test_list = [\"item\\u00001\", {\"key\": \"value\\u0000\"}, [\"nested\\u0000item\"]]\n    expected_list = [\"item1\", {\"key\": \"value\"}, [\"nesteditem\"]]\n    assert sanitize_string(test_list) == expected_list\n\n    # Test tuple sanitization\n    test_tuple = (\"item\\u00001\", \"item2\")\n    expected_tuple = (\"item1\", \"item2\")\n    assert sanitize_string(test_tuple) == expected_tuple\n\n\n@test(\"utility: sanitize_string - non-string types\")\ndef _():\n    # Test non-string types\n    assert sanitize_string(123) == 123\n    assert sanitize_string(123.45) == 123.45\n    assert sanitize_string(True) is True\n    assert sanitize_string(False) is False\n"
  },
  {
    "path": "src/agents-api/tests/test_secrets_queries.py",
    "content": "\"\"\"Tests for secrets queries.\"\"\"\n\nfrom uuid import uuid4\n\nfrom agents_api.autogen.openapi_model import Secret\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.secrets.create import create_secret\nfrom agents_api.queries.secrets.delete import delete_secret\nfrom agents_api.queries.secrets.get_by_name import get_secret_by_name\nfrom agents_api.queries.secrets.list import list_secrets\nfrom agents_api.queries.secrets.update import update_secret\nfrom ward import test\n\nfrom tests.fixtures import clean_secrets, pg_dsn, test_developer_id\n\n\n@test(\"query: create secret\")\nasync def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create secret with both developer_id\n    agent_secret_data = {\n        \"name\": \"agent_api_key\",\n        \"description\": \"An agent-specific API key\",\n        \"value\": \"sk_agent_12345\",\n        \"metadata\": {\"service\": \"agent_service\", \"environment\": \"test\"},\n    }\n\n    agent_secret = await create_secret(\n        developer_id=developer_id,\n        name=agent_secret_data[\"name\"],\n        description=agent_secret_data[\"description\"],\n        value=agent_secret_data[\"value\"],\n        metadata=agent_secret_data[\"metadata\"],\n        connection_pool=pool,\n    )\n\n    assert agent_secret is not None\n    assert isinstance(agent_secret, Secret)\n    assert agent_secret.name == agent_secret_data[\"name\"]\n    assert agent_secret.value == \"ENCRYPTED\"\n\n\n@test(\"query: list secrets\")\nasync def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create test secrets first - use unique but valid identifiers\n    secret_name1 = f\"list_test_key_a{uuid4().hex[:6]}\"\n    secret_name2 = f\"list_test_key_b{uuid4().hex[:6]}\"\n\n    await create_secret(\n        developer_id=developer_id,\n        name=secret_name1,\n        description=\"Test secret 1 for listing\",\n        value=\"sk_test_list_1\",\n        connection_pool=pool,\n    )\n\n    await create_secret(\n        developer_id=developer_id,\n        name=secret_name2,\n        description=\"Test secret 2 for listing\",\n        value=\"sk_test_list_2\",\n        connection_pool=pool,\n    )\n\n    # Test listing developer secrets\n    secrets = await list_secrets(\n        developer_id=developer_id,\n        decrypt=True,\n        connection_pool=pool,\n    )\n\n    assert secrets is not None\n    assert isinstance(secrets, list)\n    assert len(secrets) == 2\n    assert all(isinstance(secret, Secret) for secret in secrets)\n\n    # Check if our test secrets are in the list\n    created_secret_names = {secret.name for secret in secrets}\n    assert secret_name1 in created_secret_names\n    assert secret_name2 in created_secret_names\n\n    # Check if the values are decrypted\n    assert any(secret.value == \"sk_test_list_1\" for secret in secrets)\n    assert any(secret.value == \"sk_test_list_2\" for secret in secrets)\n\n\n@test(\"query: list secrets (decrypt=False)\")\nasync def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create test secrets first - use unique but valid identifiers\n    secret_name1 = f\"list_test_key_a{uuid4().hex[:6]}\"\n    secret_name2 = f\"list_test_key_b{uuid4().hex[:6]}\"\n\n    await create_secret(\n        developer_id=developer_id,\n        name=secret_name1,\n        description=\"Test secret 1 for listing\",\n        value=\"sk_test_list_1\",\n        connection_pool=pool,\n    )\n\n    await create_secret(\n        developer_id=developer_id,\n        name=secret_name2,\n        description=\"Test secret 2 for listing\",\n        value=\"sk_test_list_2\",\n        connection_pool=pool,\n    )\n\n    # Test listing developer secrets\n    secrets = await list_secrets(\n        developer_id=developer_id,\n        decrypt=False,\n        connection_pool=pool,\n    )\n\n    assert secrets is not None\n    assert isinstance(secrets, list)\n    assert len(secrets) > 0\n    assert all(isinstance(secret, Secret) for secret in secrets)\n\n    # Check if our test secrets are in the list\n    created_secret_names = {secret.name for secret in secrets}\n    assert secret_name1 in created_secret_names\n    assert secret_name2 in created_secret_names\n\n    # Check if the values are encrypted\n    assert all(secret.value == \"ENCRYPTED\" for secret in secrets)\n\n\n@test(\"query: get secret by name\")\nasync def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a test secret first\n    secret_name = f\"get_test_key_a{uuid4().hex[:6]}\"\n    await create_secret(\n        developer_id=developer_id,\n        name=secret_name,\n        description=\"Test secret for get by name\",\n        value=\"sk_get_test_1\",\n        connection_pool=pool,\n    )\n\n    # Get the secret by name\n    retrieved_secret = await get_secret_by_name(\n        developer_id=developer_id,\n        name=secret_name,\n        decrypt=True,\n        connection_pool=pool,\n    )\n\n    assert retrieved_secret is not None\n    assert isinstance(retrieved_secret, Secret)\n    assert retrieved_secret.name == secret_name\n    assert retrieved_secret.value == \"sk_get_test_1\"\n\n\n@test(\"query: get secret by name (decrypt=False)\")\nasync def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a test secret first\n    secret_name = f\"get_test_key_a{uuid4().hex[:6]}\"\n    await create_secret(\n        developer_id=developer_id,\n        name=secret_name,\n        description=\"Test secret for get by name\",\n        value=\"sk_get_test_1\",\n        connection_pool=pool,\n    )\n\n    # Get the secret by name\n    retrieved_secret = await get_secret_by_name(\n        developer_id=developer_id,\n        name=secret_name,\n        decrypt=False,\n        connection_pool=pool,\n    )\n\n    assert retrieved_secret is not None\n    assert isinstance(retrieved_secret, Secret)\n    assert retrieved_secret.name == secret_name\n    assert retrieved_secret.value == \"ENCRYPTED\"\n\n\n@test(\"query: update secret\")\nasync def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a test secret first\n    original_name = f\"update_test_key_a{uuid4().hex[:6]}\"\n    original_secret = await create_secret(\n        developer_id=developer_id,\n        name=original_name,\n        description=\"Original description\",\n        value=\"original_value\",\n        metadata={\"original\": True},\n        connection_pool=pool,\n    )\n\n    # Update the secret\n    updated_name = f\"updated_key_b{uuid4().hex[:6]}\"\n    updated_description = \"Updated description\"\n    updated_value = \"updated_value\"\n    updated_metadata = {\"updated\": True, \"timestamp\": \"now\"}\n\n    updated_secret = await update_secret(\n        secret_id=original_secret.id,\n        developer_id=developer_id,\n        name=updated_name,\n        description=updated_description,\n        value=updated_value,\n        metadata=updated_metadata,\n        connection_pool=pool,\n    )\n\n    assert updated_secret is not None\n    assert isinstance(updated_secret, Secret)\n    assert updated_secret.id == original_secret.id\n    assert updated_secret.name == updated_name\n    assert updated_secret.description == updated_description\n    assert updated_secret.value == \"ENCRYPTED\"\n    assert updated_secret.metadata == updated_metadata\n\n    # Test partial update (only update some fields)\n    partial_description = \"Partially updated description\"\n    partial_update = await update_secret(\n        secret_id=original_secret.id,\n        developer_id=developer_id,\n        description=partial_description,\n        connection_pool=pool,\n    )\n\n    assert partial_update is not None\n    assert partial_update.name == updated_name  # Should remain from previous update\n    assert partial_update.description == partial_description  # Should be updated\n    assert partial_update.value == \"ENCRYPTED\"  # Should remain from previous update\n    assert partial_update.metadata == updated_metadata  # Should remain from previous update\n\n\n@test(\"query: delete secret\")\nasync def _(clean_secrets=clean_secrets, dsn=pg_dsn, developer_id=test_developer_id):\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a test secret first\n    delete_test_name = f\"delete_test_key_a{uuid4().hex[:6]}\"\n    test_secret = await create_secret(\n        developer_id=developer_id,\n        name=delete_test_name,\n        description=\"Secret to be deleted\",\n        value=\"delete_me\",\n        connection_pool=pool,\n    )\n\n    # Delete the secret\n    delete_result = await delete_secret(\n        secret_id=test_secret.id,\n        developer_id=developer_id,\n        connection_pool=pool,\n    )\n\n    assert delete_result is not None\n    assert delete_result.id == test_secret.id\n\n    # Verify the secret is deleted by listing\n    secrets = await list_secrets(\n        developer_id=developer_id,\n        connection_pool=pool,\n    )\n\n    # Make sure our deleted secret is not in the list\n    assert not any(secret.id == test_secret.id for secret in secrets)\n\n    # Create and delete an agent-specific secret\n    agent_secret_name = f\"agent_delete_test_b{uuid4().hex[:6]}\"\n    agent_secret = await create_secret(\n        developer_id=developer_id,\n        name=agent_secret_name,\n        description=\"Agent secret to be deleted\",\n        value=\"agent_delete_me\",\n        connection_pool=pool,\n    )\n\n    # Delete with developer_id\n    agent_delete_result = await delete_secret(\n        secret_id=agent_secret.id,\n        developer_id=developer_id,\n        connection_pool=pool,\n    )\n\n    assert agent_delete_result is not None\n    assert agent_delete_result.id == agent_secret.id\n"
  },
  {
    "path": "src/agents-api/tests/test_secrets_routes.py",
    "content": "\"\"\"Tests for secrets routes.\"\"\"\n\nfrom uuid import uuid4\n\nfrom ward import test\n\nfrom tests.fixtures import client, make_request, test_developer_id\n\n\n@test(\"route: unauthorized secrets route should fail\")\ndef _(client=client):\n    data = {\n        \"name\": f\"test_secret_{uuid4().hex[:8]}\",\n        \"description\": \"Test secret for listing\",\n        \"value\": \"sk_list_test_123456789\",\n    }\n    # Try to access secrets without auth\n    response = client.request(\n        method=\"GET\",\n        url=\"/secrets\",\n        json=data,\n    )\n\n    assert response.status_code == 403\n\n\n@test(\"route: create secret\")\ndef _(make_request=make_request, developer_id=test_developer_id):\n    data = {\n        \"developer_id\": str(developer_id),\n        \"name\": f\"test_secret_{uuid4().hex[:8]}\",\n        \"description\": \"Test secret for API integration\",\n        \"value\": \"sk_test_123456789\",\n        \"metadata\": {\"service\": \"test-service\", \"environment\": \"test\"},\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/secrets\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n    result = response.json()\n    assert result[\"name\"] == data[\"name\"]\n    assert result[\"description\"] == data[\"description\"]\n    # Value should be encrypted in response\n    assert result[\"value\"] == \"ENCRYPTED\"\n    assert result[\"metadata\"] == data[\"metadata\"]\n\n\n@test(\"route: list secrets\")\ndef _(make_request=make_request, developer_id=test_developer_id):\n    # First create a secret to ensure we have something to list\n    secret_name = f\"list_test_secret_{uuid4().hex[:8]}\"\n    data = {\n        \"developer_id\": str(developer_id),\n        \"name\": secret_name,\n        \"description\": \"Test secret for listing\",\n        \"value\": \"sk_list_test_123456789\",\n        \"metadata\": {\"service\": \"test-service\", \"environment\": \"test\"},\n    }\n\n    make_request(\n        method=\"POST\",\n        url=\"/secrets\",\n        json=data,\n    )\n\n    # Now list secrets\n    response = make_request(\n        method=\"GET\",\n        url=\"/secrets\",\n    )\n\n    assert response.status_code == 200\n    secrets = response.json()\n\n    assert isinstance(secrets, list)\n    assert len(secrets) > 0\n    # Find our test secret\n    assert any(secret[\"name\"] == secret_name for secret in secrets)\n    assert all(secret[\"value\"] == \"ENCRYPTED\" for secret in secrets)\n\n\n@test(\"route: update secret\")\ndef _(make_request=make_request, developer_id=test_developer_id):\n    # First create a secret\n    original_name = f\"update_test_secret_{uuid4().hex[:8]}\"\n    create_data = {\n        \"developer_id\": str(developer_id),\n        \"name\": original_name,\n        \"description\": \"Original description\",\n        \"value\": \"sk_original_value\",\n        \"metadata\": {\"original\": True},\n    }\n\n    create_response = make_request(\n        method=\"POST\",\n        url=\"/secrets\",\n        json=create_data,\n    )\n\n    secret_id = create_response.json()[\"id\"]\n\n    # Now update it\n    updated_name = f\"updated_secret_{uuid4().hex[:8]}\"\n    update_data = {\n        \"developer_id\": str(developer_id),\n        \"name\": updated_name,\n        \"description\": \"Updated description\",\n        \"value\": \"sk_updated_value\",\n        \"metadata\": {\"updated\": True, \"timestamp\": \"now\"},\n    }\n\n    update_response = make_request(\n        method=\"PUT\",\n        url=f\"/secrets/{secret_id}\",\n        json=update_data,\n    )\n\n    assert update_response.status_code == 200\n    updated_secret = update_response.json()\n\n    assert updated_secret[\"name\"] == updated_name\n    assert updated_secret[\"description\"] == \"Updated description\"\n    assert updated_secret[\"value\"] == \"ENCRYPTED\"\n    assert updated_secret[\"metadata\"] == update_data[\"metadata\"]\n\n\n@test(\"route: delete secret\")\ndef _(make_request=make_request, developer_id=test_developer_id):\n    # First create a secret\n    delete_test_name = f\"delete_test_secret_{uuid4().hex[:8]}\"\n    create_data = {\n        \"developer_id\": str(developer_id),\n        \"name\": delete_test_name,\n        \"description\": \"Secret to be deleted\",\n        \"value\": \"sk_delete_me\",\n        \"metadata\": {\"service\": \"test-service\", \"environment\": \"test\"},\n    }\n\n    create_response = make_request(\n        method=\"POST\",\n        url=\"/secrets\",\n        json=create_data,\n    )\n\n    secret_id = create_response.json()[\"id\"]\n\n    # Now delete it\n    delete_response = make_request(\n        method=\"DELETE\",\n        url=f\"/secrets/{secret_id}\",\n    )\n\n    assert delete_response.status_code == 202\n    # Verify the secret is gone by listing all secrets\n    list_response = make_request(\n        method=\"GET\",\n        url=\"/secrets\",\n    )\n\n    assert list_response.status_code == 200\n    secrets = list_response.json()\n\n    # Check that the deleted secret is not in the list\n    deleted_secret_ids = [secret[\"id\"] for secret in secrets]\n    assert secret_id not in deleted_secret_ids\n\n\n@test(\"route: create duplicate secret name fails\")\ndef _(make_request=make_request, developer_id=test_developer_id):\n    # Create a secret with a specific name\n    unique_name = f\"unique_secret_{uuid4().hex[:8]}\"\n    data = {\n        \"developer_id\": str(developer_id),\n        \"name\": unique_name,\n        \"description\": \"First secret with this name\",\n        \"value\": \"sk_first_value\",\n        \"metadata\": {\"service\": \"test-service\", \"environment\": \"test\"},\n    }\n\n    first_response = make_request(\n        method=\"POST\",\n        url=\"/secrets\",\n        json=data,\n    )\n\n    assert first_response.status_code == 201\n\n    # Try to create another with the same name\n    duplicate_data = {\n        \"developer_id\": str(developer_id),\n        \"name\": unique_name,  # Same name\n        \"description\": \"Second secret with same name\",\n        \"value\": \"sk_second_value\",\n        \"metadata\": {\"service\": \"test-service\", \"environment\": \"test\"},\n    }\n\n    second_response = make_request(\n        method=\"POST\",\n        url=\"/secrets\",\n        json=duplicate_data,\n    )\n\n    # Should fail with a conflict error\n    assert second_response.status_code == 409\n"
  },
  {
    "path": "src/agents-api/tests/test_secrets_usage.py",
    "content": "\"\"\"Tests for list_secrets_query usage in render.py and tasks.py.\"\"\"\n\nfrom unittest.mock import MagicMock, patch\nfrom uuid import uuid4\n\nfrom agents_api.autogen.Agents import Agent\nfrom agents_api.autogen.openapi_model import (\n    ChatInput,\n    PromptItem,\n    PromptStep,\n    Secret,\n    TaskSpecDef,\n    TaskToolDef,\n    Tool,\n    TransitionTarget,\n    Workflow,\n)\nfrom agents_api.common.protocol.models import ExecutionInput\nfrom agents_api.common.protocol.tasks import StepContext\nfrom agents_api.common.utils.datetime import utcnow\nfrom agents_api.routers.sessions.legacy.render import render_chat_input\nfrom ward import skip, test\n\nfrom tests.fixtures import test_developer, test_developer_id\n\n\n@skip(\"Skipping secrets usage tests\")\n@test(\"render: list_secrets_query usage in render_chat_input\")\nasync def _(developer=test_developer):\n    # Create test secrets\n    test_secrets = [\n        Secret(\n            id=uuid4(),\n            name=\"api_key\",\n            value=\"sk_test_123456789\",\n            developer_id=developer.id,\n            created_at=\"2023-01-01T00:00:00Z\",\n            updated_at=\"2023-01-01T00:00:00Z\",\n        ),\n        Secret(\n            id=uuid4(),\n            name=\"service_token\",\n            value=\"token_987654321\",\n            developer_id=developer.id,\n            created_at=\"2023-01-01T00:00:00Z\",\n            updated_at=\"2023-01-01T00:00:00Z\",\n        ),\n    ]\n\n    # Create tools that use secret expressions\n    tools = [\n        Tool(\n            id=uuid4(),\n            name=\"api_tool\",\n            type=\"computer_20241022\",\n            computer_20241022={\n                \"path\": \"/usr/bin/curl\",\n                \"api_key\": \"$ secrets.api_key\",\n                \"auth_token\": \"$ secrets.service_token\",\n            },\n            created_at=\"2023-01-01T00:00:00Z\",\n            updated_at=\"2023-01-01T00:00:00Z\",\n        )\n    ]\n\n    # Create mock chat context\n    mock_chat_context = MagicMock()\n    mock_chat_context.session.render_templates = True\n    mock_chat_context.session.context_overflow = \"error\"\n    mock_chat_context.get_active_tools.return_value = tools\n    mock_chat_context.settings = {\"model\": \"claude-3.5-sonnet\"}\n    mock_chat_context.get_chat_environment.return_value = {}\n    mock_chat_context.merge_system_template.return_value = \"System: Use tools to help the user\"\n\n    # Mock input data\n    session_id = uuid4()\n    chat_input = ChatInput(messages=[{\"role\": \"user\", \"content\": \"hi\"}])\n\n    # Set up mocking for required functions\n    with (\n        patch(\n            \"agents_api.routers.sessions.render.list_secrets_query\"\n        ) as mock_list_secrets_query,\n        patch(\n            \"agents_api.routers.sessions.render.prepare_chat_context\"\n        ) as mock_prepare_chat_context,\n        patch(\"agents_api.routers.sessions.render.gather_messages\") as mock_gather_messages,\n        patch(\"agents_api.routers.sessions.render.render_template\") as mock_render_template,\n        patch(\n            \"agents_api.routers.sessions.render.evaluate_expressions\"\n        ) as mock_render_evaluate_expressions,\n        patch(\"agents_api.routers.sessions.render.validate_model\") as mock_validate_model,\n    ):\n        # Set up return values for mocks\n        mock_validate_model.return_value = None\n        mock_list_secrets_query.return_value = test_secrets\n        mock_prepare_chat_context.return_value = mock_chat_context\n        mock_gather_messages.return_value = ([], [])\n        mock_render_template.return_value = [\n            {\"role\": \"system\", \"content\": \"System: Use tools to help the user\"}\n        ]\n\n        # Set up evaluate_expressions to properly substitute secrets\n        def evaluate_side_effect(value, values):\n            if isinstance(value, str) and \"$ secrets.\" in value:\n                if \"$secrets.api_key\" in value:\n                    return value.replace(\"$ secrets.api_key\", \"sk_test_123456789\")\n                if \"$secrets.service_token\" in value:\n                    return value.replace(\"$ secrets.service_token\", \"token_987654321\")\n            return value\n\n        mock_render_evaluate_expressions.side_effect = evaluate_side_effect\n\n        # Call the function being tested\n        _messages, _doc_refs, formatted_tools, *_ = await render_chat_input(\n            developer=developer,\n            session_id=session_id,\n            chat_input=chat_input,\n        )\n\n        # Assert that list_secrets_query was called with the right parameters\n        mock_list_secrets_query.assert_called_once_with(developer_id=developer.id)\n\n        # Verify that expressions were evaluated\n        mock_render_evaluate_expressions.assert_called()\n\n        # Check that formatted_tools contains the evaluated secrets\n        assert formatted_tools is not None\n        assert len(formatted_tools) > 0\n\n        # The first tool should be the computer_20241022 tool\n        tool = formatted_tools[0]\n        assert tool[\"type\"] == \"computer_20241022\"\n\n        # Verify that the secrets were evaluated in the function parameters\n        function_params = tool[\"function\"][\"parameters\"]\n        assert \"api_key\" in function_params, f\"{tool}\"\n        assert function_params[\"api_key\"] == \"sk_test_123456789\"\n        assert \"auth_token\" in function_params\n        assert function_params[\"auth_token\"] == \"token_987654321\"\n\n\n@skip(\"Skipping secrets usage tests\")\n@test(\"tasks: list_secrets_query with multiple secrets\")\nasync def _(developer_id=test_developer_id):\n    # Create test secrets with varying names\n    test_secrets = [\n        Secret(\n            id=uuid4(),\n            name=\"api_key_1\",\n            value=\"sk_test_123\",\n            developer_id=developer_id,\n            created_at=\"2023-01-01T00:00:00Z\",\n            updated_at=\"2023-01-01T00:00:00Z\",\n        ),\n        Secret(\n            id=uuid4(),\n            name=\"api_key_2\",\n            value=\"sk_test_456\",\n            developer_id=developer_id,\n            created_at=\"2023-01-01T00:00:00Z\",\n            updated_at=\"2023-01-01T00:00:00Z\",\n        ),\n        Secret(\n            id=uuid4(),\n            name=\"database_url\",\n            value=\"postgresql://user:password@localhost:5432/db\",\n            developer_id=developer_id,\n            created_at=\"2023-01-01T00:00:00Z\",\n            updated_at=\"2023-01-01T00:00:00Z\",\n        ),\n    ]\n\n    # Create tools that use secret expressions\n    task_tools = [\n        TaskToolDef(\n            type=\"function\",\n            name=\"multi_secret_tool\",\n            spec={\n                \"primary_key\": \"$secrets.api_key_1\",\n                \"secondary_key\": \"$secrets.api_key_2\",\n                \"connection_string\": \"$secrets.database_url\",\n                \"url\": \"https://api.example.com\",\n            },\n        ),\n        TaskToolDef(\n            type=\"api_call\",\n            name=\"second_tool\",\n            spec={\n                \"headers\": {\"Authorization\": \"Bearer $secrets.api_key_1\"},\n                \"url\": \"https://api.example.com/v2\",\n            },\n        ),\n    ]\n\n    # Create a valid prompt step for the workflow\n    test_prompt_step = PromptStep(\n        kind_=\"prompt\",\n        prompt=[PromptItem(role=\"user\", content=\"Test prompt content\")],\n    )\n\n    # Create a mock workflow with a proper step\n    test_workflow = Workflow(name=\"main\", steps=[test_prompt_step])\n\n    # Create a proper TaskSpecDef\n    task_spec = TaskSpecDef(\n        id=uuid4(),\n        name=\"test_task\",\n        created_at=utcnow(),\n        updated_at=utcnow(),\n        workflows=[test_workflow],\n        tools=task_tools,\n        inherit_tools=False,\n    )\n\n    # Create a proper Agent\n    test_agent = Agent(\n        id=uuid4(), name=\"test_agent\", model=\"gpt-4\", created_at=utcnow(), updated_at=utcnow()\n    )\n\n    # Create execution input with the task\n    execution_input = ExecutionInput(\n        developer_id=developer_id,\n        agent=test_agent,\n        agent_tools=[],\n        arguments={},\n        task=task_spec,\n    )\n\n    # Create a transition target pointing to the workflow step\n    cursor = TransitionTarget(workflow=\"main\", step=0, scope_id=uuid4())\n\n    # Set up the step context properly\n    step_context = StepContext(\n        loaded=True, execution_input=execution_input, cursor=cursor, current_input={}\n    )\n\n    # Mock the current step to use all tools\n    with (\n        patch(\"agents_api.common.protocol.tasks.list_secrets_query\") as mock_list_secrets_query,\n        patch(\n            \"agents_api.common.protocol.tasks.evaluate_expressions\"\n        ) as mock_evaluate_expressions,\n    ):\n        # Set mock return values\n        mock_list_secrets_query.return_value = test_secrets\n        # Have evaluate_expressions pass through the values but replace secret expressions\n        mock_evaluate_expressions.side_effect = lambda spec, values: {\n            k: v.replace(\"$secrets.api_key_1\", \"sk_test_123\")\n            .replace(\"$secrets.api_key_2\", \"sk_test_456\")\n            .replace(\"$secrets.database_url\", \"postgresql://user:password@localhost:5432/db\")\n            if isinstance(v, str)\n            else v\n            for k, v in spec.items()\n        }\n\n        # Call the tools method\n        tools = await step_context.tools()\n\n        # Assert that list_secrets_query was called with the right parameters\n        mock_list_secrets_query.assert_called_once_with(developer_id=developer_id)\n\n        # Verify the right number of tools were created\n        assert len(tools) == len(task_tools)\n\n        # Verify evaluate_expressions was called for each tool\n        assert mock_evaluate_expressions.call_count == len(task_tools)\n\n\n@skip(\"Skipping secrets usage tests\")\n@test(\"tasks: list_secrets_query in StepContext.tools method\")\nasync def _(developer_id=test_developer_id):\n    # Create test secrets\n    test_secrets = [\n        Secret(\n            id=uuid4(),\n            name=\"api_key\",\n            value=\"sk_test_123456789\",\n            developer_id=developer_id,\n            created_at=\"2023-01-01T00:00:00Z\",\n            updated_at=\"2023-01-01T00:00:00Z\",\n        ),\n        Secret(\n            id=uuid4(),\n            name=\"access_token\",\n            value=\"at_test_987654321\",\n            developer_id=developer_id,\n            created_at=\"2023-01-01T00:00:00Z\",\n            updated_at=\"2023-01-01T00:00:00Z\",\n        ),\n    ]\n\n    # Create tools that use secret expressions\n    task_tools = [\n        TaskToolDef(\n            type=\"function\",\n            name=\"test_tool_with_secret\",\n            spec={\"api_key\": \"$secrets.api_key\", \"url\": \"https://api.example.com\"},\n        )\n    ]\n\n    # Create a valid prompt step for the workflow\n    test_prompt_step = PromptStep(\n        kind_=\"prompt\",\n        prompt=[PromptItem(role=\"user\", content=\"Test prompt content\")],\n    )\n\n    # Create a mock workflow with a proper step\n    test_workflow = Workflow(name=\"main\", steps=[test_prompt_step])\n\n    # Create a proper TaskSpecDef\n    task_spec = TaskSpecDef(\n        id=uuid4(),\n        name=\"test_task\",\n        created_at=utcnow(),\n        updated_at=utcnow(),\n        workflows=[test_workflow],\n        tools=task_tools,\n        inherit_tools=False,\n    )\n\n    # Create a proper Agent\n    test_agent = Agent(\n        id=uuid4(), name=\"test_agent\", model=\"gpt-4\", created_at=utcnow(), updated_at=utcnow()\n    )\n\n    # Create execution input with the task\n    execution_input = ExecutionInput(\n        developer_id=developer_id,\n        agent=test_agent,\n        agent_tools=[],\n        arguments={},\n        task=task_spec,\n    )\n\n    # Create a transition target pointing to the workflow step\n    cursor = TransitionTarget(workflow=\"main\", step=0, scope_id=uuid4())\n\n    # Set up the step context properly\n    step_context = StepContext(\n        loaded=True, execution_input=execution_input, cursor=cursor, current_input={}\n    )\n\n    # Mock the current step to use all tools\n    with (\n        patch.object(step_context, \"current_step\", MagicMock(tools=\"all\")),\n        patch(\"agents_api.common.protocol.tasks.list_secrets_query\") as mock_list_secrets_query,\n    ):\n        # Set mock return value\n        mock_list_secrets_query.return_value = test_secrets\n\n        # Call the tools method\n        tools = await step_context.tools()\n\n        # Assert that list_secrets_query was called with the right parameters\n        mock_list_secrets_query.assert_called_once_with(developer_id=developer_id)\n\n        # Verify tools were created with evaluated secrets\n        assert len(tools) == len(task_tools)\n\n        # StepContext.tools() returns the correct tools\n        assert len(tools) > 0\n"
  },
  {
    "path": "src/agents-api/tests/test_session_queries.py",
    "content": "# \"\"\"\n# This module contains tests for SQL query generation functions in the sessions module.\n# Tests verify the SQL queries without actually executing them against a database.\n# \"\"\"\n\nfrom agents_api.autogen.openapi_model import (\n    CreateOrUpdateSessionRequest,\n    CreateSessionRequest,\n    PatchSessionRequest,\n    ResourceDeletedResponse,\n    Session,\n    UpdateSessionRequest,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.sessions import (\n    count_sessions,\n    create_or_update_session,\n    create_session,\n    delete_session,\n    get_session,\n    list_sessions,\n    patch_session,\n    update_session,\n)\nfrom uuid_extensions import uuid7\nfrom ward import raises, test\n\nfrom tests.fixtures import (\n    pg_dsn,\n    test_agent,\n    test_developer_id,\n    test_session,\n    test_user,\n)\n\n\n@test(\"query: create session sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, user=test_user):\n    \"\"\"Test that a session can be successfully created.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    session_id = uuid7()\n    data = CreateSessionRequest(\n        users=[user.id],\n        agents=[agent.id],\n        system_template=\"test system template\",\n    )\n    result = await create_session(\n        developer_id=developer_id,\n        session_id=session_id,\n        data=data,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Session), f\"Result is not a Session, {result}\"\n    assert result.id == session_id\n\n\n@test(\"query: create or update session sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, user=test_user):\n    \"\"\"Test that a session can be successfully created or updated.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    session_id = uuid7()\n    data = CreateOrUpdateSessionRequest(\n        users=[user.id],\n        agents=[agent.id],\n        system_template=\"test system template\",\n    )\n    result = await create_or_update_session(\n        developer_id=developer_id,\n        session_id=session_id,\n        data=data,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Session)\n    assert result.id == session_id\n    assert result.updated_at is not None\n\n\n@test(\"query: get session exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session):\n    \"\"\"Test retrieving an existing session.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await get_session(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Session)\n    assert result.id == session.id\n\n\n@test(\"query: get session does not exist\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test retrieving a non-existent session.\"\"\"\n\n    session_id = uuid7()\n    pool = await create_db_pool(dsn=dsn)\n    with raises(Exception):\n        await get_session(\n            session_id=session_id,\n            developer_id=developer_id,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n\n@test(\"query: list sessions\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session):\n    \"\"\"Test listing sessions with default pagination.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_sessions(\n        developer_id=developer_id,\n        limit=10,\n        offset=0,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert isinstance(result, list)\n    assert len(result) >= 1\n    assert any(s.id == session.id for s in result)\n\n\n@test(\"query: list sessions with filters\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session):\n    \"\"\"Test listing sessions with specific filters.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_sessions(\n        developer_id=developer_id,\n        limit=10,\n        offset=0,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert isinstance(result, list)\n    assert len(result) >= 1\n    assert all(isinstance(s, Session) for s in result), (\n        f\"Result is not a list of sessions, {result}\"\n    )\n\n\n@test(\"query: count sessions\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session):\n    \"\"\"Test counting the number of sessions for a developer.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    count = await count_sessions(\n        developer_id=developer_id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert isinstance(count, dict)\n    assert count[\"count\"] >= 1\n\n\n@test(\"query: update session sql\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    session=test_session,\n    agent=test_agent,\n    user=test_user,\n):\n    \"\"\"Test that an existing session's information can be successfully updated.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    data = UpdateSessionRequest(\n        token_budget=1000,\n        forward_tool_calls=True,\n        system_template=\"updated system template\",\n    )\n    result = await update_session(\n        session_id=session.id,\n        developer_id=developer_id,\n        data=data,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Session)\n    assert result.updated_at > session.created_at\n\n    updated_session = await get_session(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    assert updated_session.forward_tool_calls is True\n\n\n@test(\"query: patch session sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session, agent=test_agent):\n    \"\"\"Test that a session can be successfully patched.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    data = PatchSessionRequest(\n        metadata={\"test\": \"metadata\"},\n    )\n    result = await patch_session(\n        developer_id=developer_id,\n        session_id=session.id,\n        data=data,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, Session)\n    assert result.updated_at > session.created_at\n\n    patched_session = await get_session(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    assert patched_session.metadata == {\"test\": \"metadata\"}\n\n\n@test(\"query: delete session sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, session=test_session):\n    \"\"\"Test that a session can be successfully deleted.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    delete_result = await delete_session(\n        developer_id=developer_id,\n        session_id=session.id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert delete_result is not None\n    assert isinstance(delete_result, ResourceDeletedResponse)\n\n    with raises(Exception):\n        await get_session(\n            developer_id=developer_id,\n            session_id=session.id,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n"
  },
  {
    "path": "src/agents-api/tests/test_session_routes.py",
    "content": "from uuid_extensions import uuid7\nfrom ward import test\n\nfrom tests.fixtures import client, make_request, test_agent, test_session\n\n\n@test(\"route: unauthorized should fail\")\ndef _(client=client):\n    response = client.request(\n        method=\"GET\",\n        url=\"/sessions\",\n    )\n\n    assert response.status_code == 403\n\n\n@test(\"route: create session\")\ndef _(make_request=make_request, agent=test_agent):\n    data = {\n        \"agent\": str(agent.id),\n        \"situation\": \"test session about\",\n        \"metadata\": {\"test\": \"test\"},\n        \"system_template\": \"test system template\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/sessions\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n\n@test(\"route: create session - invalid agent\")\ndef _(make_request=make_request, agent=test_agent):\n    data = {\n        \"agent\": str(uuid7()),\n        \"situation\": \"test session about\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/sessions\",\n        json=data,\n    )\n\n    assert response.status_code == 400\n    assert (\n        response.json()[\"error\"][\"message\"]\n        == \"The specified participant ID is invalid for the given participant type during create\"\n    )\n\n\n@test(\"route: create or update session - create\")\ndef _(make_request=make_request, agent=test_agent):\n    session_id = uuid7()\n\n    data = {\n        \"agent\": str(agent.id),\n        \"situation\": \"test session about\",\n        \"metadata\": {\"test\": \"test\"},\n        \"system_template\": \"test system template\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n\n@test(\"route: create or update session - update\")\ndef _(make_request=make_request, session=test_session, agent=test_agent):\n    data = {\n        \"agent\": str(agent.id),\n        \"situation\": \"test session about\",\n        \"metadata\": {\"test\": \"test\"},\n        \"system_template\": \"test system template\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}\",\n        json=data,\n    )\n\n    assert response.status_code == 201, f\"{response.json()}\"\n\n\n@test(\"route: create or update session - invalid agent\")\ndef _(make_request=make_request, agent=test_agent, session=test_session):\n    data = {\n        \"agent\": str(uuid7()),\n        \"situation\": \"test session about\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/sessions/{session.id}\",\n        json=data,\n    )\n\n    assert response.status_code == 400\n    assert (\n        response.json()[\"error\"][\"message\"]\n        == \"The specified participant ID is invalid for the given participant type during create or update\"\n    )\n\n\n@test(\"route: get session - exists\")\ndef _(make_request=make_request, session=test_session):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/sessions/{session.id}\",\n    )\n\n    assert response.status_code == 200\n\n\n@test(\"route: get session - does not exist\")\ndef _(make_request=make_request):\n    session_id = uuid7()\n    response = make_request(\n        method=\"GET\",\n        url=f\"/sessions/{session_id}\",\n    )\n\n    assert response.status_code == 404\n\n\n@test(\"route: list sessions\")\ndef _(make_request=make_request, session=test_session):\n    response = make_request(\n        method=\"GET\",\n        url=\"/sessions\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    sessions = response[\"items\"]\n\n    assert isinstance(sessions, list)\n    assert len(sessions) > 0\n\n\n@test(\"route: list sessions with metadata filter\")\ndef _(make_request=make_request, session=test_session):\n    response = make_request(\n        method=\"GET\",\n        url=\"/sessions\",\n        params={\n            \"metadata_filter\": {\"test\": \"test\"},\n        },\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    sessions = response[\"items\"]\n\n    assert isinstance(sessions, list)\n    assert len(sessions) > 0\n\n\n@test(\"route: get session history\")\ndef _(make_request=make_request, session=test_session):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/sessions/{session.id}/history\",\n    )\n\n    assert response.status_code == 200\n\n    history = response.json()\n    assert history[\"session_id\"] == str(session.id)\n\n\n@test(\"route: patch session\")\ndef _(make_request=make_request, session=test_session):\n    data = {\n        \"situation\": \"test session about\",\n    }\n\n    response = make_request(\n        method=\"PATCH\",\n        url=f\"/sessions/{session.id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n\n@test(\"route: update session\")\ndef _(make_request=make_request, session=test_session):\n    data = {\n        \"situation\": \"test session about\",\n    }\n\n    response = make_request(\n        method=\"PUT\",\n        url=f\"/sessions/{session.id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n\n@test(\"route: delete session\")\ndef _(make_request=make_request, session=test_session):\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/sessions/{session.id}\",\n    )\n\n    assert response.status_code == 202\n"
  },
  {
    "path": "src/agents-api/tests/test_task_execution_workflow.py",
    "content": "import functools\nimport uuid\nfrom base64 import b64decode\nfrom datetime import timedelta\nfrom unittest.mock import Mock, call, patch\n\nimport aiohttp\nfrom agents_api.activities import task_steps\nfrom agents_api.activities.execute_api_call import execute_api_call\nfrom agents_api.activities.execute_integration import execute_integration\nfrom agents_api.activities.execute_system import execute_system\nfrom agents_api.autogen.openapi_model import (\n    Agent,\n    ApiCallDef,\n    BaseIntegrationDef,\n    CaseThen,\n    EvaluateStep,\n    Execution,\n    ForeachDo,\n    ForeachStep,\n    GetStep,\n    IfElseWorkflowStep,\n    LogStep,\n    MapReduceStep,\n    PromptItem,\n    PromptStep,\n    ReturnStep,\n    SetStep,\n    SwitchStep,\n    SystemDef,\n    TaskSpecDef,\n    TaskToolDef,\n    ToolCallStep,\n    Transition,\n    TransitionTarget,\n    WaitForInputInfo,\n    WaitForInputStep,\n    Workflow,\n    YieldStep,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.common.protocol.tasks import (\n    ExecutionInput,\n    PartialTransition,\n    StepContext,\n    StepOutcome,\n    WorkflowResult,\n)\nfrom agents_api.common.retry_policies import DEFAULT_RETRY_POLICY\nfrom agents_api.common.utils.datetime import utcnow\nfrom agents_api.common.utils.expressions import evaluate_expressions\nfrom agents_api.env import (\n    debug,\n    temporal_heartbeat_timeout,\n    temporal_schedule_to_close_timeout,\n    testing,\n)\nfrom agents_api.workflows.task_execution import TaskExecutionWorkflow\nfrom aiohttp import test_utils\nfrom temporalio.exceptions import ApplicationError\nfrom temporalio.workflow import _NotInWorkflowEventLoopError\nfrom ward import raises, test\n\nfrom tests.fixtures import pg_dsn\n\n\nasync def base_evaluate_with_pool(\n    exprs,\n    context=None,\n    values=None,\n    extra_lambda_strs=None,\n    connection_pool=None,\n):\n    \"\"\"Custom base_evaluate that uses connection_pool for prepare_for_step\"\"\"\n    if context is None and values is None:\n        msg = \"Either context or values must be provided\"\n        raise ValueError(msg)\n\n    values = values or {}\n    if context:\n        # Pass the connection_pool to prepare_for_step\n        values.update(await context.prepare_for_step(limit=50, connection_pool=connection_pool))\n\n    return evaluate_expressions(exprs, values=values, extra_lambda_strs=extra_lambda_strs)\n\n\n@test(\"task execution workflow: handle function tool call step\")\nasync def _():\n    async def _resp():\n        return \"function_tool_call_response\"\n\n    wf = TaskExecutionWorkflow()\n    step = ToolCallStep(tool=\"tool1\")\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    output = {\"type\": \"function\"}\n    outcome = StepOutcome(output=output)\n    with patch(\"agents_api.workflows.task_execution.workflow\") as workflow:\n        workflow.execute_activity.return_value = _resp()\n        wf.context = context\n        wf.outcome = outcome\n        result = await wf.handle_step(\n            step=step,\n        )\n        assert result == WorkflowResult(\n            state=PartialTransition(type=\"resume\", output=\"function_tool_call_response\"),\n        )\n        workflow.execute_activity.assert_called_once_with(\n            task_steps.raise_complete_async,\n            args=[context, output],\n            schedule_to_close_timeout=timedelta(days=31),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n\n\n@test(\"task execution workflow: handle integration tool call step\")\nasync def _():\n    async def _resp():\n        return \"integration_tool_call_response\"\n\n    wf = TaskExecutionWorkflow()\n    step = ToolCallStep(tool=\"tool1\")\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[TaskToolDef(type=\"integration\", name=\"tool1\", spec={})],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    tool_name = \"tool1\"\n    arguments = {}\n    outcome = StepOutcome(\n        output={\n            \"type\": \"integration\",\n            \"integration\": {\"name\": tool_name, \"arguments\": arguments},\n        },\n    )\n\n    with (\n        patch(\"agents_api.workflows.task_execution.workflow\") as workflow,\n        patch(\"agents_api.common.protocol.tasks.workflow\") as context_workflow,\n        patch(\"agents_api.common.protocol.tasks.get_secrets_list\") as mock_list_secrets,\n    ):\n        # Set up the mock to raise the expected exception\n        context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError(\n            \"Not in workflow event loop\"\n        )\n        mock_list_secrets.return_value = []\n\n        # Set up the activity execution mock\n        workflow.execute_activity.return_value = _resp()\n        wf.context = context\n        wf.outcome = outcome\n        result = await wf.handle_step(\n            step=step,\n        )\n        assert result == WorkflowResult(\n            state=PartialTransition(output=\"integration_tool_call_response\"),\n        )\n        provider = \"dummy\"\n        method = None\n        integration = BaseIntegrationDef(\n            provider=provider,\n            setup=None,\n            method=method,\n            arguments=arguments,\n        )\n        workflow.execute_activity.assert_called_once_with(\n            execute_integration,\n            args=[\n                execution_input.developer_id,\n                execution_input.agent.id,\n                execution_input.task.id if execution_input.task else None,\n                None,  # session_id is None for task execution\n                tool_name,\n                integration,\n                arguments,\n            ],\n            schedule_to_close_timeout=timedelta(\n                seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n            ),\n            retry_policy=DEFAULT_RETRY_POLICY,\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n\n\n@test(\"task execution workflow: handle integration tool call step, integration tools not found\")\nasync def _():\n    wf = TaskExecutionWorkflow()\n    step = ToolCallStep(tool=\"tool1\")\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[TaskToolDef(type=\"integration\", name=\"tool2\", spec={})],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    outcome = StepOutcome(\n        output={\"type\": \"integration\", \"integration\": {\"name\": \"tool1\", \"arguments\": {}}},\n    )\n    with (\n        patch(\"agents_api.workflows.task_execution.workflow\") as workflow,\n        patch(\"agents_api.common.protocol.tasks.workflow\") as context_workflow,\n        patch(\"agents_api.common.protocol.tasks.get_secrets_list\") as mock_list_secrets,\n    ):\n        # Set up the mock to raise the expected exception\n        context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError(\n            \"Not in workflow event loop\"\n        )\n        mock_list_secrets.return_value = []\n        workflow.execute_activity.return_value = \"integration_tool_call_response\"\n        with raises(ApplicationError) as exc:\n            wf.context = context\n            wf.outcome = outcome\n            await wf.handle_step(\n                step=step,\n            )\n        assert str(exc.raised) == \"Integration tool1 not found\"\n\n\n@test(\"task execution workflow: handle api_call tool call step\")\nasync def _():\n    async def _resp():\n        return \"api_call_tool_call_response\"\n\n    wf = TaskExecutionWorkflow()\n    arguments = {\n        \"method\": \"GET\",\n        \"url\": \"http://url1.com\",\n    }\n    step = ToolCallStep(\n        tool=\"tool1\",\n        arguments=arguments,\n    )\n    execution_input = ExecutionInput(\n        arguments=arguments,\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[\n                TaskToolDef(\n                    type=\"api_call\",\n                    name=\"tool1\",\n                    spec=arguments,\n                    inherited=False,\n                ),\n            ],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    outcome = StepOutcome(\n        output={\n            \"type\": \"api_call\",\n            \"api_call\": {\n                \"arguments\": arguments,\n                \"name\": \"tool1\",\n            },\n        },\n    )\n    with (\n        patch(\"agents_api.workflows.task_execution.workflow\") as workflow,\n        patch(\"agents_api.common.protocol.tasks.workflow\") as context_workflow,\n        patch(\"agents_api.common.protocol.tasks.get_secrets_list\") as mock_list_secrets,\n    ):\n        # Set up the mock to raise the expected exception\n        context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError(\n            \"Not in workflow event loop\"\n        )\n        mock_list_secrets.return_value = []\n        workflow.execute_activity.return_value = _resp()\n        wf.context = context\n        wf.outcome = outcome\n        result = await wf.handle_step(\n            step=step,\n        )\n        assert result == WorkflowResult(\n            state=PartialTransition(output=\"api_call_tool_call_response\"),\n        )\n        api_call = ApiCallDef(\n            method=\"GET\",\n            url=\"http://url1.com\",\n            headers=None,\n            follow_redirects=None,\n        )\n        workflow.execute_activity.assert_called_once_with(\n            execute_api_call,\n            args=[\n                api_call,\n                arguments,\n            ],\n            schedule_to_close_timeout=timedelta(\n                seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n            ),\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n\n\n@test(\"task execution workflow: handle api_call tool call step with Method Override\")\nasync def _():\n    async def _resp():\n        return \"api_call_tool_call_response\"\n\n    wf = TaskExecutionWorkflow()\n    arguments = {\n        \"method\": \"POST\",\n        \"url\": \"http://url1.com\",\n    }\n    input_arguments = {\n        \"method\": \"GET\",\n        \"url\": \"http://url1.com\",\n    }\n    step = ToolCallStep(\n        tool=\"tool1\",\n        arguments=input_arguments,\n    )\n    execution_input = ExecutionInput(\n        arguments=input_arguments,\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[\n                TaskToolDef(\n                    type=\"api_call\",\n                    name=\"tool1\",\n                    spec=arguments,\n                    inherited=False,\n                ),\n            ],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    outcome = StepOutcome(\n        output={\n            \"type\": \"api_call\",\n            \"api_call\": {\n                \"arguments\": input_arguments,\n                \"name\": \"tool1\",\n            },\n        },\n    )\n    with (\n        patch(\"agents_api.workflows.task_execution.workflow\") as workflow,\n        patch(\"agents_api.common.protocol.tasks.workflow\") as context_workflow,\n        patch(\"agents_api.common.protocol.tasks.get_secrets_list\") as mock_list_secrets,\n    ):\n        # Set up the mock to raise the expected exception\n        context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError(\n            \"Not in workflow event loop\"\n        )\n        mock_list_secrets.return_value = []\n\n        workflow.execute_activity.return_value = _resp()\n        wf.context = context\n        wf.outcome = outcome\n        result = await wf.handle_step(\n            step=step,\n        )\n        assert result == WorkflowResult(\n            state=PartialTransition(output=\"api_call_tool_call_response\"),\n        )\n        api_call = ApiCallDef(\n            method=\"POST\",\n            url=\"http://url1.com\",\n            headers=None,\n            follow_redirects=None,\n        )\n        workflow.execute_activity.assert_called_once_with(\n            execute_api_call,\n            args=[\n                api_call,\n                input_arguments,\n            ],\n            schedule_to_close_timeout=timedelta(\n                seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n            ),\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n\n\n@test(\n    \"task execution workflow: handle api call tool call step, do not include response content\"\n)\nasync def _():\n    # Create application with route\n    app = aiohttp.web.Application()\n\n    async def handler(request):\n        return aiohttp.web.json_response({\"test\": \"data\"})\n\n    app.router.add_post(\"/\", handler)\n\n    # Set up mock HTTP server with the pre-configured app\n    async with test_utils.TestServer(app) as server:\n        # Use the actual server URL\n        server_url = str(server.make_url(\"/\"))\n\n        input_arguments = {\n            \"method\": \"POST\",\n            \"url\": server_url,\n            \"include_response_content\": False,\n        }\n        api_call = ApiCallDef(\n            method=\"POST\",\n            url=server_url,\n            headers=None,\n            follow_redirects=None,\n            include_response_content=False,\n        )\n\n        result = await execute_api_call(api_call, input_arguments)\n        assert \"content\" not in result\n        assert result[\"status_code\"] == 200\n\n\n@test(\"task execution workflow: handle api call tool call step, include response content\")\nasync def _():\n    # Create application with route\n    app = aiohttp.web.Application()\n\n    async def handler(request):\n        return aiohttp.web.json_response({\"test\": \"data\"})\n\n    app.router.add_post(\"/\", handler)\n\n    # Set up mock HTTP server with the pre-configured app\n    async with test_utils.TestServer(app) as server:\n        # Use the actual server URL\n        server_url = str(server.make_url(\"/\"))\n\n        input_arguments = {\n            \"method\": \"POST\",\n            \"url\": server_url,\n            \"include_response_content\": True,\n        }\n        api_call = ApiCallDef(\n            method=\"POST\",\n            url=server_url,\n            headers=None,\n            follow_redirects=None,\n            include_response_content=False,\n        )\n\n        result = await execute_api_call(api_call, input_arguments)\n        assert \"content\" in result\n        assert b64decode(result[\"content\"]).decode(\"utf-8\") == '{\"test\": \"data\"}'\n        assert result[\"status_code\"] == 200\n\n    async with test_utils.TestServer(app) as server:\n        # Use the actual server URL\n        server_url = str(server.make_url(\"/\"))\n\n        input_arguments = {\n            \"method\": \"POST\",\n            \"url\": server_url,\n            \"include_response_content\": False,\n        }\n        api_call = ApiCallDef(\n            method=\"POST\",\n            url=server_url,\n            headers=None,\n            follow_redirects=None,\n            include_response_content=True,\n        )\n\n        result = await execute_api_call(api_call, input_arguments)\n        assert \"content\" in result\n        assert b64decode(result[\"content\"]).decode(\"utf-8\") == '{\"test\": \"data\"}'\n        assert result[\"status_code\"] == 200\n\n    async with test_utils.TestServer(app) as server:\n        # Use the actual server URL\n        server_url = str(server.make_url(\"/\"))\n\n        input_arguments = {\n            \"method\": \"POST\",\n            \"url\": server_url,\n            \"include_response_content\": None,\n        }\n        api_call = ApiCallDef(\n            method=\"POST\",\n            url=server_url,\n            headers=None,\n            follow_redirects=None,\n            include_response_content=True,\n        )\n\n        result = await execute_api_call(api_call, input_arguments)\n        assert \"content\" in result\n        assert b64decode(result[\"content\"]).decode(\"utf-8\") == '{\"test\": \"data\"}'\n        assert result[\"status_code\"] == 200\n\n    async with test_utils.TestServer(app) as server:\n        # Use the actual server URL\n        server_url = str(server.make_url(\"/\"))\n\n        input_arguments = {\n            \"method\": \"POST\",\n            \"url\": server_url,\n            \"include_response_content\": True,\n        }\n        api_call = ApiCallDef(\n            method=\"POST\",\n            url=server_url,\n            headers=None,\n            follow_redirects=None,\n            include_response_content=True,\n        )\n\n        result = await execute_api_call(api_call, input_arguments)\n        assert \"content\" in result\n        assert b64decode(result[\"content\"]).decode(\"utf-8\") == '{\"test\": \"data\"}'\n        assert result[\"status_code\"] == 200\n\n\n@test(\"task execution workflow: handle system tool call step\")\nasync def _():\n    async def _resp():\n        return \"system_tool_call_response\"\n\n    wf = TaskExecutionWorkflow()\n    arguments = {\n        \"resource\": \"agent\",\n        \"operation\": \"create\",\n        \"subresource\": \"doc\",\n    }\n    step = ToolCallStep(\n        tool=\"tool1\",\n        arguments=arguments,\n    )\n    execution_input = ExecutionInput(\n        arguments=arguments,\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[\n                TaskToolDef(\n                    type=\"system\",\n                    name=\"tool1\",\n                    spec=arguments,\n                    inherited=False,\n                ),\n            ],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    outcome = StepOutcome(\n        output={\n            \"type\": \"system\",\n            \"system\": {\n                **arguments,\n                \"name\": \"tool1\",\n            },\n        },\n    )\n    with patch(\"agents_api.workflows.task_execution.workflow\") as workflow:\n        workflow.execute_activity.return_value = _resp()\n        wf.context = context\n        wf.outcome = outcome\n        result = await wf.handle_step(\n            step=step,\n        )\n        assert result == WorkflowResult(\n            state=PartialTransition(output=\"system_tool_call_response\"),\n        )\n        system_call = SystemDef(\n            resource=\"agent\",\n            operation=\"create\",\n            subresource=\"doc\",\n        )\n        workflow.execute_activity.assert_called_once_with(\n            execute_system,\n            args=[execution_input.developer_id, system_call],\n            schedule_to_close_timeout=timedelta(\n                seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n            ),\n            heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n        )\n\n\n@test(\"task execution workflow: handle switch step, index is positive\")\nasync def _():\n    wf = TaskExecutionWorkflow()\n    step = SwitchStep(switch=[CaseThen(case=\"_\", then=GetStep(get=\"key1\"))])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    outcome = StepOutcome(output=1)\n    with patch(\n        \"agents_api.workflows.task_execution.execute_switch_branch\",\n    ) as execute_switch_branch:\n        execute_switch_branch.return_value = WorkflowResult(\n            state=PartialTransition(output=\"switch_response\"),\n        )\n        wf.context = context\n        wf.outcome = outcome\n        result = await wf.handle_step(\n            step=step,\n        )\n        assert result == WorkflowResult(state=PartialTransition(output=\"switch_response\"))\n\n\n@test(\"task execution workflow: handle switch step, index is negative\")\nasync def _():\n    wf = TaskExecutionWorkflow()\n    step = SwitchStep(switch=[CaseThen(case=\"_\", then=GetStep(get=\"key1\"))])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    outcome = StepOutcome(output=-1)\n    with patch(\"agents_api.workflows.task_execution.workflow\") as workflow:\n        workflow.logger = Mock()\n        with raises(ApplicationError):\n            wf.context = context\n            wf.outcome = outcome\n            await wf.handle_step(\n                step=step,\n            )\n\n\n@test(\"task execution workflow: handle switch step, index is zero\")\nasync def _():\n    wf = TaskExecutionWorkflow()\n    step = SwitchStep(switch=[CaseThen(case=\"_\", then=GetStep(get=\"key1\"))])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    outcome = StepOutcome(output=0)\n    with patch(\n        \"agents_api.workflows.task_execution.execute_switch_branch\",\n    ) as execute_switch_branch:\n        execute_switch_branch.return_value = WorkflowResult(\n            state=PartialTransition(output=\"switch_response\"),\n        )\n        wf.context = context\n        wf.outcome = outcome\n        result = await wf.handle_step(\n            step=step,\n        )\n        assert result == WorkflowResult(state=PartialTransition(output=\"switch_response\"))\n\n\n@test(\"task execution workflow: handle prompt step, unwrap is True\")\nasync def _():\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=\"hi there\", unwrap=True)\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    message = \"Hello there\"\n    outcome = StepOutcome(output=message)\n    wf.context = context\n    wf.outcome = outcome\n    with patch(\"agents_api.workflows.task_execution.workflow\") as workflow:\n        workflow.logger = Mock()\n        workflow.execute_activity.return_value = \"activity\"\n\n        assert await wf.handle_step(step=step) == WorkflowResult(\n            state=PartialTransition(output=message),\n        )\n        workflow.execute_activity.assert_not_called()\n\n\n@test(\"task execution workflow: handle prompt step, unwrap is False, autorun tools is False\")\nasync def _():\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=\"hi there\", unwrap=False, auto_run_tools=False)\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    message = {\"choices\": [{\"finish_reason\": \"stop\"}]}\n    outcome = StepOutcome(output=message)\n    wf.context = context\n    wf.outcome = outcome\n    with patch(\"agents_api.workflows.task_execution.workflow\") as workflow:\n        workflow.logger = Mock()\n        workflow.execute_activity.return_value = \"activity\"\n\n        assert await wf.handle_step(step=step) == WorkflowResult(\n            state=PartialTransition(output=message),\n        )\n        workflow.execute_activity.assert_not_called()\n\n\n@test(\n    \"task execution workflow: handle prompt step, unwrap is False, finish reason is not tool_calls\",\n)\nasync def _():\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=\"hi there\", unwrap=False)\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    message = {\"choices\": [{\"finish_reason\": \"stop\"}]}\n    outcome = StepOutcome(output=message)\n    wf.context = context\n    wf.outcome = outcome\n    with patch(\"agents_api.workflows.task_execution.workflow\") as workflow:\n        workflow.logger = Mock()\n        workflow.execute_activity.return_value = \"activity\"\n\n        assert await wf.handle_step(step=step) == WorkflowResult(\n            state=PartialTransition(output=message),\n        )\n        workflow.execute_activity.assert_not_called()\n\n\n@test(\"task execution workflow: handle prompt step, function call\")\nasync def _():\n    async def _resp():\n        return StepOutcome(output=\"function_call\")\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")], auto_run_tools=True)\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n    context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    message = {\n        \"choices\": [\n            {\"finish_reason\": \"tool_calls\", \"message\": {\"tool_calls\": [{\"type\": \"function\"}]}},\n        ],\n    }\n    outcome = StepOutcome(output=message)\n    wf.context = context\n    wf.outcome = outcome\n    with patch(\"agents_api.workflows.task_execution.workflow\") as workflow:\n        workflow.logger = Mock()\n        workflow.execute_activity.side_effect = [_resp(), _resp()]\n\n        assert await wf.handle_step(step=step) == WorkflowResult(\n            state=PartialTransition(output=\"function_call\", type=\"resume\"),\n        )\n        workflow.execute_activity.assert_has_calls([\n            call(\n                task_steps.raise_complete_async,\n                args=[context, [{\"type\": \"function\"}]],\n                schedule_to_close_timeout=timedelta(days=31),\n                retry_policy=DEFAULT_RETRY_POLICY,\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            ),\n            call(\n                task_steps.prompt_step,\n                context,\n                schedule_to_close_timeout=timedelta(\n                    seconds=30 if debug or testing else temporal_schedule_to_close_timeout,\n                ),\n                retry_policy=DEFAULT_RETRY_POLICY,\n                heartbeat_timeout=timedelta(seconds=temporal_heartbeat_timeout),\n            ),\n        ])\n\n\n@test(\"task execution workflow: evaluate foreach step expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,  # Use the partial function here\n        ):\n            result = await wf.eval_step_exprs(\n                ForeachStep(foreach=ForeachDo(in_=\"$ 1 + 2\", do=YieldStep(workflow=\"wf1\"))),\n            )\n\n        assert result == StepOutcome(output=3)\n\n\n@test(\"task execution workflow: evaluate ifelse step expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(\n                IfElseWorkflowStep(if_=\"$ 1 + 2\", then=YieldStep(workflow=\"wf1\")),\n            )\n\n        assert result == StepOutcome(output=3)\n\n\n@test(\"task execution workflow: evaluate return step expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(\n                ReturnStep(return_={\"x\": \"$ 1 + 2\"}),\n            )\n\n        assert result == StepOutcome(output={\"x\": 3})\n\n\n@test(\"task execution workflow: evaluate wait for input step expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(\n                WaitForInputStep(wait_for_input=WaitForInputInfo(info={\"x\": \"$ 1 + 2\"})),\n            )\n\n        assert result == StepOutcome(output={\"x\": 3})\n\n\n@test(\"task execution workflow: evaluate evaluate expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(\n                EvaluateStep(evaluate={\"x\": \"$ 1 + 2\"}),\n            )\n\n        assert result == StepOutcome(output={\"x\": 3})\n\n\n@test(\"task execution workflow: evaluate map reduce expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(\n                MapReduceStep(over=\"$ 1 + 2\", map=YieldStep(workflow=\"wf1\")),\n            )\n\n        assert result == StepOutcome(output=3)\n\n\n@test(\"task execution workflow: evaluate set expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(SetStep(set={\"x\": \"$ 1 + 2\"}))\n\n        assert result == StepOutcome(output={\"x\": 3})\n\n\n@test(\"task execution workflow: evaluate log expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output={\"x\": \"5\"},\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(LogStep(log=\"$ steps[0].input['x']\"))\n\n        assert result == StepOutcome(output=\"5\")\n\n\n@test(\"task execution workflow: evaluate switch expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(\n                SwitchStep(\n                    switch=[\n                        CaseThen(case=\"$ None\", then=YieldStep(workflow=\"wf1\")),\n                        CaseThen(case=\"$ 1 + 3\", then=YieldStep(workflow=\"wf2\")),\n                    ],\n                ),\n            )\n\n        assert result == StepOutcome(output=1)\n\n\n@test(\"task execution workflow: evaluate tool call expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = ToolCallStep(tool=\"tool1\", arguments={\"x\": \"$ 1 + 2\"})\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[\n                TaskToolDef(\n                    name=\"tool1\",\n                    type=\"function\",\n                    spec={},\n                ),\n            ],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n        patch(\"agents_api.workflows.task_execution.generate_call_id\") as generate_call_id,\n        patch(\"agents_api.common.protocol.tasks.workflow\") as context_workflow,\n        patch(\"agents_api.common.protocol.tasks.get_secrets_list\") as mock_list_secrets,\n    ):\n        # Set up the mock to raise the expected exception\n        context_workflow.execute_activity.side_effect = _NotInWorkflowEventLoopError(\n            \"Not in workflow event loop\"\n        )\n        mock_list_secrets.return_value = []\n        generate_call_id.return_value = \"XXXX\"\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(\n                ToolCallStep(tool=\"tool1\", arguments={\"x\": \"$ 1 + 2\"}),\n            )\n\n        assert result == StepOutcome(\n            output={\n                \"function\": {\"arguments\": {\"x\": 3}, \"name\": \"tool1\"},\n                \"id\": \"XXXX\",\n                \"type\": \"function\",\n            },\n        )\n\n\n@test(\"task execution workflow: evaluate yield expressions\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = YieldStep(arguments={\"x\": \"$ 1 + 2\"}, workflow=\"main\")\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with patch(\n            \"agents_api.workflows.task_execution.base_evaluate_activity\",\n            new=base_evaluate_patched,\n        ):\n            result = await wf.eval_step_exprs(\n                YieldStep(arguments={\"x\": \"$ 1 + 2\"}, workflow=\"main\"),\n            )\n\n        scope_id = result.transition_to[1].scope_id\n\n        assert result == StepOutcome(\n            output={\"x\": 3},\n            transition_to=(\n                \"step\",\n                TransitionTarget(step=0, workflow=\"main\", scope_id=scope_id),\n            ),\n        )\n\n\n@test(\"task execution workflow: evaluate yield expressions assertion\")\nasync def _(dsn=pg_dsn):\n    pool = await create_db_pool(dsn=dsn)\n\n    base_evaluate_patched = functools.partial(base_evaluate_with_pool, connection_pool=pool)\n\n    wf = TaskExecutionWorkflow()\n    step = ToolCallStep(tool=\"tool1\", arguments={\"x\": \"$ 1 + 2\"})\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            name=\"agent1\",\n        ),\n        agent_tools=[],\n        arguments={},\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            task_id=uuid.uuid4(),\n            status=\"running\",\n            input={\"a\": \"1\"},\n        ),\n    )\n    scope_id = uuid.uuid4()\n    wf.context = StepContext(\n        execution_input=execution_input,\n        current_input=\"value 1\",\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=scope_id,\n        ),\n    )\n    with (\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_inputs_data\",\n        ) as list_execution_inputs_data,\n        patch(\n            \"agents_api.common.protocol.tasks.list_execution_state_data\",\n            return_value=[],\n        ),\n    ):\n        list_execution_inputs_data.return_value = (\n            Transition(\n                id=uuid.uuid4(),\n                execution_id=uuid.uuid4(),\n                type=\"step\",\n                created_at=utcnow(),\n                updated_at=utcnow(),\n                output=\"output\",\n                current=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n                next=TransitionTarget(\n                    workflow=\"main\",\n                    step=0,\n                    scope_id=scope_id,\n                ),\n            ),\n        )\n        with (\n            raises(AssertionError),\n            patch(\n                \"agents_api.workflows.task_execution.base_evaluate_activity\",\n                new=base_evaluate_patched,\n            ),\n        ):\n            await wf.eval_step_exprs(YieldStep(arguments={\"x\": \"$ 1 + 2\"}, workflow=\"main\"))\n"
  },
  {
    "path": "src/agents-api/tests/test_task_queries.py",
    "content": "# Tests for task queries\n\nfrom agents_api.autogen.openapi_model import (\n    CreateOrUpdateTaskRequest,\n    CreateTaskRequest,\n    PatchTaskRequest,\n    Task,\n    UpdateTaskRequest,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.tasks.create_or_update_task import create_or_update_task\nfrom agents_api.queries.tasks.create_task import create_task\nfrom agents_api.queries.tasks.delete_task import delete_task\nfrom agents_api.queries.tasks.get_task import get_task\nfrom agents_api.queries.tasks.list_tasks import list_tasks\nfrom agents_api.queries.tasks.patch_task import patch_task\nfrom agents_api.queries.tasks.update_task import update_task\nfrom fastapi import HTTPException\nfrom uuid_extensions import uuid7\nfrom ward import raises, test\n\nfrom tests.fixtures import pg_dsn, test_agent, test_developer_id, test_task\n\n\n@test(\"query: create task sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that a task can be successfully created.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        task_id=uuid7(),\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"hi\": \"_\"}}],\n        ),\n        connection_pool=pool,\n    )\n\n    assert isinstance(task, Task)\n    assert task.id is not None\n    assert task.main is not None\n\n\n@test(\"query: create or update task sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that a task can be successfully created or updated.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    task = await create_or_update_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        task_id=uuid7(),\n        data=CreateTaskRequest(\n            name=\"test task\",\n            description=\"test task about\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"hi\": \"_\"}}],\n        ),\n        connection_pool=pool,\n    )\n\n    assert isinstance(task, Task)\n    assert task.id is not None\n    assert task.main is not None\n\n\n@test(\"query: get task sql - exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, task=test_task):\n    \"\"\"Test that an existing task can be successfully retrieved.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    # Then retrieve it\n    result = await get_task(\n        developer_id=developer_id,\n        task_id=task.id,\n        connection_pool=pool,\n    )\n    assert result is not None\n    assert isinstance(result, Task), f\"Result is not a Task, got {type(result)}\"\n    assert result.id == task.id\n    assert result.name == \"test task\"\n    assert result.description == \"test task about\"\n\n\n@test(\"query: get task sql - not exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that attempting to retrieve a non-existent task raises an error.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    task_id = uuid7()\n\n    with raises(HTTPException) as exc:\n        await get_task(\n            developer_id=developer_id,\n            task_id=task_id,\n            connection_pool=pool,\n        )\n\n    assert exc.raised.status_code == 404\n    assert \"Task not found\" in str(exc.raised.detail)\n\n\n@test(\"query: delete task sql - exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, task=test_task):\n    \"\"\"Test that a task can be successfully deleted.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    # First verify task exists\n    result = await get_task(\n        developer_id=developer_id,\n        task_id=task.id,\n        connection_pool=pool,\n    )\n    assert result is not None\n    assert result.id == task.id\n\n    # Delete the task\n    deleted = await delete_task(\n        developer_id=developer_id,\n        task_id=task.id,\n        connection_pool=pool,\n    )\n    assert deleted is not None\n    assert deleted.id == task.id\n\n    # Verify task no longer exists\n    with raises(HTTPException) as exc:\n        await get_task(\n            developer_id=developer_id,\n            task_id=task.id,\n            connection_pool=pool,\n        )\n\n    assert exc.raised.status_code == 404\n    assert \"Task not found\" in str(exc.raised.detail)\n\n\n@test(\"query: delete task sql - not exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that attempting to delete a non-existent task raises an error.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    task_id = uuid7()\n\n    with raises(HTTPException) as exc:\n        await delete_task(\n            developer_id=developer_id,\n            task_id=task_id,\n            connection_pool=pool,\n        )\n\n    assert exc.raised.status_code == 404\n    assert \"Task not found\" in str(exc.raised.detail)\n\n\n# Add tests for list tasks\n@test(\"query: list tasks sql - with filters\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that tasks can be successfully filtered and retrieved.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_tasks(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        limit=10,\n        offset=0,\n        sort_by=\"updated_at\",\n        direction=\"asc\",\n        metadata_filter={\"test\": True},\n        connection_pool=pool,\n    )\n    assert result is not None\n    assert isinstance(result, list)\n    assert all(isinstance(task, Task) for task in result)\n    assert all(task.metadata.get(\"test\") is True for task in result)\n\n\n@test(\"query: list tasks sql - no filters\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, task=test_task):\n    \"\"\"Test that a list of tasks can be successfully retrieved.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_tasks(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        connection_pool=pool,\n    )\n    assert result is not None, \"Result is None\"\n    assert isinstance(result, list), f\"Result is not a list, got {type(result)}\"\n    assert len(result) > 0, \"Result is empty\"\n    assert all(isinstance(task, Task) for task in result), (\n        \"Not all listed tasks are of type Task\"\n    )\n\n\n@test(\"query: list tasks sql, invalid limit\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, task=test_task):\n    \"\"\"Test that listing tasks with an invalid limit raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_tasks(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            connection_pool=pool,\n            limit=101,\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n    with raises(HTTPException) as exc:\n        await list_tasks(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            connection_pool=pool,\n            limit=0,\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n\n@test(\"query: list tasks sql, invalid offset\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, task=test_task):\n    \"\"\"Test that listing tasks with an invalid offset raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_tasks(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            connection_pool=pool,\n            offset=-1,\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Offset must be >= 0\"\n\n\n@test(\"query: list tasks sql, invalid sort by\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, task=test_task):\n    \"\"\"Test that listing tasks with an invalid sort by raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_tasks(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            connection_pool=pool,\n            sort_by=\"invalid\",\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort field\"\n\n\n@test(\"query: list tasks sql, invalid sort direction\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, task=test_task):\n    \"\"\"Test that listing tasks with an invalid sort direction raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_tasks(\n            developer_id=developer_id,\n            agent_id=agent.id,\n            connection_pool=pool,\n            direction=\"invalid\",\n        )\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort direction\"\n\n\n@test(\"query: update task sql - exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, task=test_task):\n    \"\"\"Test that a task can be successfully updated.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    updated = await update_task(\n        developer_id=developer_id,\n        task_id=task.id,\n        agent_id=agent.id,\n        data=UpdateTaskRequest(\n            name=\"updated task\",\n            canonical_name=\"updated_task\",\n            description=\"updated task description\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"hi\": \"_\"}}],\n            inherit_tools=False,\n            metadata={\"updated\": True},\n        ),\n        connection_pool=pool,\n    )\n\n    assert updated is not None\n    assert isinstance(updated, Task)\n    assert updated.id == task.id\n\n    # Verify task was updated\n    updated_task = await get_task(\n        developer_id=developer_id,\n        task_id=task.id,\n        connection_pool=pool,\n    )\n    assert updated_task.name == \"updated task\"\n    assert updated_task.description == \"updated task description\"\n    assert updated_task.metadata == {\"updated\": True}\n\n\n@test(\"query: update task sql - not exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that attempting to update a non-existent task raises an error.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    task_id = uuid7()\n\n    with raises(HTTPException) as exc:\n        await update_task(\n            developer_id=developer_id,\n            task_id=task_id,\n            agent_id=agent.id,\n            data=UpdateTaskRequest(\n                canonical_name=\"updated_task\",\n                name=\"updated task\",\n                description=\"updated task description\",\n                input_schema={\"type\": \"object\", \"additionalProperties\": True},\n                main=[{\"evaluate\": {\"hi\": \"_\"}}],\n                inherit_tools=False,\n            ),\n            connection_pool=pool,\n        )\n\n    assert exc.raised.status_code == 404\n    assert \"Task not found\" in str(exc.raised.detail)\n\n\n@test(\"query: patch task sql - exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that patching an existing task works correctly.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create initial task\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=CreateTaskRequest(\n            canonical_name=\"test_task\",\n            name=\"test task\",\n            description=\"test task description\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"hi\": \"_\"}}],\n            inherit_tools=False,\n            metadata={\"initial\": True},\n        ),\n        connection_pool=pool,\n    )\n\n    # Patch the task\n    updated = await patch_task(\n        developer_id=developer_id,\n        task_id=task.id,\n        agent_id=agent.id,\n        data=PatchTaskRequest(name=\"patched task\", metadata={\"patched\": True}),\n        connection_pool=pool,\n    )\n\n    assert updated is not None\n    assert isinstance(updated, Task)\n    assert updated.id == task.id\n\n    # Verify task was patched correctly\n    patched_task = await get_task(\n        developer_id=developer_id,\n        task_id=task.id,\n        connection_pool=pool,\n    )\n    # Check that patched fields were updated\n    assert patched_task.name == \"patched task\"\n    assert patched_task.metadata == {\"patched\": True}\n    # Check that non-patched fields remain unchanged\n    assert patched_task.canonical_name == \"test_task\"\n    assert patched_task.description == \"test task description\"\n\n\n@test(\"query: patch task sql - not exists\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that attempting to patch a non-existent task raises an error.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n    task_id = uuid7()\n\n    with raises(HTTPException) as exc:\n        await patch_task(\n            developer_id=developer_id,\n            task_id=task_id,\n            agent_id=agent.id,\n            data=PatchTaskRequest(name=\"patched task\", metadata={\"patched\": True}),\n            connection_pool=pool,\n        )\n\n    assert exc.raised.status_code == 404\n    assert \"Task not found\" in str(exc.raised.detail)\n\n\n@test(\"query: get task with workflows and tools - no cartesian product\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that getting a task with both workflows and tools doesn't create duplicates.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a task with workflows\n    task = await create_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        task_id=uuid7(),\n        data=CreateTaskRequest(\n            name=\"test task with workflows\",\n            description=\"test task with multiple workflows and tools\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"result\": \"_\"}}],\n            tools=[\n                {\n                    \"type\": \"function\",\n                    \"name\": \"workflow1\",\n                    \"function\": {\"name\": \"workflow1\", \"parameters\": {\"type\": \"object\"}},\n                },\n                {\n                    \"type\": \"function\",\n                    \"name\": \"workflow2\",\n                    \"function\": {\"name\": \"workflow2\", \"parameters\": {\"type\": \"object\"}},\n                },\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    # Get the task\n    result = await get_task(\n        developer_id=developer_id,\n        task_id=task.id,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert isinstance(result, Task)\n\n    # Verify we have the correct number of tools (no duplicates)\n    assert len(result.tools) == 2, f\"Expected 2 tools, got {len(result.tools)}\"\n    tool_names = [tool.name for tool in result.tools]\n    assert set(tool_names) == {\"workflow1\", \"workflow2\"}, \"Tool names don't match\"\n\n\n@test(\"query: get task filters tools by updated_at timestamp\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    \"\"\"Test that tools not updated for the current task version are filtered out.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a task v1 with a tool\n    task_id = uuid7()\n    canonical_name = \"test_task_tool_lifecycle\"\n\n    # V1: Create task with tool_a\n    await create_or_update_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        task_id=task_id,\n        data=CreateOrUpdateTaskRequest(\n            name=\"task v1\",\n            canonical_name=canonical_name,\n            description=\"initial task version with tool\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"result\": \"v1\"}}],\n            tools=[\n                {\n                    \"type\": \"function\",\n                    \"name\": \"tool_a\",\n                    \"function\": {\n                        \"name\": \"tool_a\",\n                        \"description\": \"Tool A\",\n                        \"parameters\": {\"type\": \"object\"},\n                    },\n                }\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    # Check v1 has the tool\n    result_v1 = await get_task(\n        developer_id=developer_id,\n        task_id=task_id,\n        connection_pool=pool,\n    )\n    assert result_v1 is not None\n    assert result_v1.version == 1\n    tool_names_v1 = [tool.name for tool in result_v1.tools]\n    assert \"tool_a\" in tool_names_v1, \"Tool A should be present in v1\"\n    assert len(result_v1.tools) == 1, f\"Expected 1 tool in v1, got {len(result_v1.tools)}\"\n\n    # Wait to ensure different timestamps\n    import asyncio\n\n    await asyncio.sleep(0.1)\n\n    # V2: Update to remove the tool\n    await create_or_update_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        task_id=task_id,\n        data=CreateOrUpdateTaskRequest(\n            name=\"task v2\",\n            canonical_name=canonical_name,\n            description=\"v2 without tool_a\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"result\": \"v2\"}}],\n            tools=[],  # No tools in v2\n            inherit_tools=False,\n        ),\n        connection_pool=pool,\n    )\n\n    # Check v2 - tool_a should be filtered out because its updated_at is older\n    result_v2 = await get_task(\n        developer_id=developer_id,\n        task_id=task_id,\n        connection_pool=pool,\n    )\n    assert result_v2 is not None\n    assert result_v2.version == 2\n    tool_names_v2 = [tool.name for tool in result_v2.tools]\n    assert \"tool_a\" not in tool_names_v2, \"Tool A should be filtered out in v2\"\n    assert len(result_v2.tools) == 0, f\"Expected 0 tools in v2, got {len(result_v2.tools)}\"\n\n    # Wait to ensure different timestamps\n    await asyncio.sleep(0.1)\n\n    # V3: Re-add the same tool\n    await create_or_update_task(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        task_id=task_id,\n        data=CreateOrUpdateTaskRequest(\n            name=\"task v3\",\n            canonical_name=canonical_name,\n            description=\"v3 with tool_a re-added\",\n            input_schema={\"type\": \"object\", \"additionalProperties\": True},\n            main=[{\"evaluate\": {\"result\": \"v3\"}}],\n            tools=[\n                {\n                    \"type\": \"function\",\n                    \"name\": \"tool_a\",\n                    \"function\": {\n                        \"name\": \"tool_a\",\n                        \"description\": \"Tool A\",\n                        \"parameters\": {\"type\": \"object\"},\n                    },\n                }\n            ],\n        ),\n        connection_pool=pool,\n    )\n\n    # Check v3 - tool_a should be present again because it was updated\n    result_v3 = await get_task(\n        developer_id=developer_id,\n        task_id=task_id,\n        connection_pool=pool,\n    )\n    assert result_v3 is not None\n    assert result_v3.version == 3\n    tool_names_v3 = [tool.name for tool in result_v3.tools]\n    assert \"tool_a\" in tool_names_v3, \"Tool A should be present again in v3\"\n    assert len(result_v3.tools) == 1, f\"Expected 1 tool in v3, got {len(result_v3.tools)}\"\n"
  },
  {
    "path": "src/agents-api/tests/test_task_routes.py",
    "content": "# Tests for task routes\n\nimport json\nfrom unittest.mock import patch\nfrom uuid import UUID\n\nfrom agents_api.autogen.openapi_model import (\n    ExecutionStatusEvent,\n    Transition,\n)\nfrom agents_api.env import api_key, api_key_header_name, multi_tenant_mode\nfrom agents_api.queries.executions.create_execution_transition import (\n    create_execution_transition,\n)\nfrom fastapi.testclient import TestClient\nfrom uuid_extensions import uuid7\nfrom ward import skip, test\n\nfrom .fixtures import (\n    CreateTransitionRequest,\n    client,\n    create_db_pool,\n    make_request,\n    pg_dsn,\n    test_agent,\n    test_developer_id,\n    test_execution,\n    test_execution_started,\n    test_task,\n)\nfrom .utils import patch_testing_temporal\n\n\n@test(\"route: unauthorized should fail\")\ndef _(client=client, agent=test_agent):\n    data = {\n        \"name\": \"test user\",\n        \"main\": [\n            {\n                \"kind_\": \"evaluate\",\n                \"evaluate\": {\n                    \"additionalProp1\": \"value1\",\n                },\n            },\n        ],\n    }\n\n    response = client.request(\n        method=\"POST\",\n        url=f\"/agents/{agent.id!s}/tasks\",\n        json=data,\n    )\n\n    assert response.status_code == 403\n\n\n@test(\"route: create task\")\ndef _(make_request=make_request, agent=test_agent):\n    data = {\n        \"name\": \"test user\",\n        \"main\": [\n            {\n                \"kind_\": \"evaluate\",\n                \"evaluate\": {\n                    \"additionalProp1\": \"value1\",\n                },\n            },\n        ],\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/agents/{agent.id!s}/tasks\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n\n@test(\"route: create task execution\")\nasync def _(make_request=make_request, task=test_task):\n    data = {\n        \"input\": {},\n        \"metadata\": {},\n    }\n\n    async with patch_testing_temporal():\n        response = make_request(\n            method=\"POST\",\n            url=f\"/tasks/{task.id!s}/executions\",\n            json=data,\n        )\n\n    assert response.status_code == 201\n\n\n@test(\"route: get execution not exists\")\ndef _(make_request=make_request):\n    execution_id = str(uuid7())\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/executions/{execution_id}\",\n    )\n\n    assert response.status_code == 404\n\n\n@test(\"route: get execution exists\")\ndef _(make_request=make_request, execution=test_execution):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/executions/{execution.id!s}\",\n    )\n\n    assert response.status_code == 200\n\n\n@test(\"route: get task not exists\")\ndef _(make_request=make_request):\n    task_id = str(uuid7())\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/tasks/{task_id}\",\n    )\n\n    assert response.status_code == 404\n\n\n@test(\"route: get task exists\")\ndef _(make_request=make_request, task=test_task):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/tasks/{task.id!s}\",\n    )\n\n    assert response.status_code == 200\n\n\n@test(\"route: list all execution transition\")\nasync def _(make_request=make_request, execution=test_execution_started):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/executions/{execution.id!s}/transitions\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    transitions = response[\"items\"]\n\n    assert isinstance(transitions, list)\n    assert len(transitions) > 0\n\n\n@test(\"route: list a single execution transition\")\nasync def _(\n    dsn=pg_dsn,\n    make_request=make_request,\n    execution=test_execution_started,\n    developer_id=test_developer_id,\n):\n    pool = await create_db_pool(dsn=dsn)\n\n    scope_id = uuid7()\n    # Create a transition\n    transition = await create_execution_transition(\n        developer_id=developer_id,\n        execution_id=execution.id,\n        data=CreateTransitionRequest(\n            type=\"step\",\n            output={},\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n            next={\"workflow\": \"wf1\", \"step\": 1, \"scope_id\": scope_id},\n        ),\n        connection_pool=pool,\n    )\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/executions/{execution.id!s}/transitions/{transition.id!s}\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n\n    assert isinstance(transition, Transition)\n    assert str(transition.id) == response[\"id\"]\n    assert transition.type == response[\"type\"]\n    assert transition.output == response[\"output\"]\n    assert transition.current.workflow == response[\"current\"][\"workflow\"]\n    assert transition.current.step == response[\"current\"][\"step\"]\n    assert transition.next.workflow == response[\"next\"][\"workflow\"]\n    assert transition.next.step == response[\"next\"][\"step\"]\n\n\n@test(\"route: list task executions\")\ndef _(make_request=make_request, execution=test_execution):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/tasks/{execution.task_id!s}/executions\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    executions = response[\"items\"]\n\n    assert isinstance(executions, list)\n    assert len(executions) > 0\n\n\n@test(\"route: list tasks\")\ndef _(make_request=make_request, agent=test_agent):\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id!s}/tasks\",\n    )\n\n    data = {\n        \"name\": \"test user\",\n        \"main\": [\n            {\n                \"kind_\": \"evaluate\",\n                \"evaluate\": {\n                    \"additionalProp1\": \"value1\",\n                },\n            },\n        ],\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=f\"/agents/{agent.id!s}/tasks\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/agents/{agent.id!s}/tasks\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    tasks = response[\"items\"]\n\n    assert isinstance(tasks, list)\n    assert len(tasks) > 0\n\n\n# It's failing while getting the temporal client in\n# the `update_execution.py` route, but it's correctly\n# getting it in the `create_task_execution.py` route\n@skip(\"Temporal connection issue\")\n@test(\"route: update execution\")\nasync def _(make_request=make_request, task=test_task):\n    data = {\n        \"input\": {},\n        \"metadata\": {},\n    }\n\n    async with patch_testing_temporal():\n        response = make_request(\n            method=\"POST\",\n            url=f\"/tasks/{task.id!s}/executions\",\n            json=data,\n        )\n\n        execution = response.json()\n\n        data = {\n            \"status\": \"running\",\n        }\n\n        execution_id = execution[\"id\"]\n\n        response = make_request(\n            method=\"PUT\",\n            url=f\"/executions/{execution_id}\",\n            json=data,\n        )\n\n        assert response.status_code == 200\n\n        execution_id = response.json()[\"id\"]\n\n        response = make_request(\n            method=\"GET\",\n            url=f\"/executions/{execution_id}\",\n        )\n\n        assert response.status_code == 200\n        execution = response.json()\n\n        assert execution[\"status\"] == \"running\"\n\n\n@test(\"route: stream execution status SSE endpoint\")\ndef _(\n    client: TestClient = client,\n    test_execution_started=test_execution_started,\n    test_developer_id=test_developer_id,\n):\n    # Mock SSE response data that simulates a progressing execution\n    mock_sse_responses = [\n        ExecutionStatusEvent(\n            execution_id=UUID(\"068306ff-e0f3-7fe9-8000-0013626a759a\"),\n            status=\"starting\",\n            updated_at=\"2025-05-23T12:54:24.565424Z\",\n            error=None,\n            transition_count=1,\n            metadata={},\n        ),\n        ExecutionStatusEvent(\n            execution_id=UUID(\"068306ff-e0f3-7fe9-8000-0013626a759a\"),\n            status=\"running\",\n            updated_at=\"2025-05-23T12:54:30.903484Z\",\n            error=None,\n            transition_count=2,\n            metadata={},\n        ),\n        ExecutionStatusEvent(\n            execution_id=UUID(\"068306ff-e0f3-7fe9-8000-0013626a759a\"),\n            status=\"succeeded\",\n            updated_at=\"2025-05-23T12:56:12.054067Z\",\n            error=None,\n            transition_count=3,\n            metadata={},\n        ),\n    ]\n\n    # Simple mock SSE server that immediately returns all events\n    async def mock_sse_publisher(send_chan, *args, **kwargs):\n        \"\"\"Mock publisher that sends all events at once and then exits\"\"\"\n        async with send_chan:\n            for response in mock_sse_responses:\n                await send_chan.send({\"data\": response.model_dump_json()})\n\n    execution = test_execution_started\n    url = f\"/executions/{execution.id}/status.stream\"\n\n    # Prepare authentication headers\n    headers = {api_key_header_name: api_key}\n    if multi_tenant_mode:\n        headers[\"X-Developer-Id\"] = str(test_developer_id)\n\n    # Replace the execution_status_publisher with our simplified mock version\n    with (\n        patch(\n            \"agents_api.routers.tasks.stream_execution_status.execution_status_publisher\",\n            mock_sse_publisher,\n        ),\n        client.stream(\"GET\", url, headers=headers) as response,\n    ):\n        # Verify response headers and status code\n        content_type = response.headers.get(\"content-type\", \"\")\n        assert content_type.startswith(\"text/event-stream\"), (\n            f\"Unexpected content type: {content_type}\"\n        )\n        assert response.status_code == 200\n\n        # Read and parse events from the stream\n        received_events = []\n        max_attempts = 10  # Limit the number of attempts to avoid infinite loops\n\n        # Read the stream with a limit on attempts\n        for i, line in enumerate(response.iter_lines()):\n            if line:\n                event_line = line.decode() if isinstance(line, bytes | bytearray) else line\n                if event_line.startswith(\"data:\"):\n                    # Parse JSON payload\n                    payload = event_line[len(\"data:\") :].strip()\n                    data = json.loads(payload)\n                    received_events.append(data)\n\n            # Check if we've received all events or reached max attempts\n            if len(received_events) >= len(mock_sse_responses) or i >= max_attempts:\n                break\n\n        # Ensure we close the connection\n        response.close()\n\n    # Verify we received the expected events\n    assert len(received_events) == len(mock_sse_responses), (\n        f\"Expected {len(mock_sse_responses)} events, got {len(received_events)}\"\n    )\n\n    # Verify the status progression\n    assert received_events[0][\"status\"] == \"starting\"\n    assert received_events[1][\"status\"] == \"running\"\n    assert received_events[2][\"status\"] == \"succeeded\"\n\n    # Verify other fields\n    for i, event in enumerate(received_events):\n        assert event[\"execution_id\"] == \"068306ff-e0f3-7fe9-8000-0013626a759a\"\n        assert isinstance(event[\"updated_at\"], str)\n        assert event[\"transition_count\"] == i + 1\n\n\n@test(\"route: stream execution status SSE endpoint - non-existing execution\")\ndef _(client: TestClient = client, test_developer_id=test_developer_id):\n    # Create a random UUID for a non-existing execution\n    non_existing_execution_id = uuid7()\n    url = f\"/executions/{non_existing_execution_id}/status.stream\"\n\n    # Prepare authentication headers\n    headers = {api_key_header_name: api_key}\n    if multi_tenant_mode:\n        headers[\"X-Developer-Id\"] = str(test_developer_id)\n\n    # Make the request to the SSE endpoint - should return a 404 error\n    response = client.get(url, headers=headers)\n\n    # Verify response status code is 404\n    assert response.status_code == 404\n\n    # Parse the error response\n    error_data = response.json()\n\n    # Verify error structure\n    assert \"error\" in error_data\n    assert \"message\" in error_data[\"error\"]\n    assert \"code\" in error_data[\"error\"]\n    assert \"type\" in error_data[\"error\"]\n\n    # Verify specific error details\n    assert f\"Execution {non_existing_execution_id} not found\" in error_data[\"error\"][\"message\"]\n    assert error_data[\"error\"][\"code\"] == \"http_404\"\n    assert error_data[\"error\"][\"type\"] == \"http_error\"\n"
  },
  {
    "path": "src/agents-api/tests/test_task_validation.py",
    "content": "from agents_api.autogen.openapi_model import CreateTaskRequest\nfrom agents_api.common.utils.task_validation import validate_py_expression, validate_task\nfrom agents_api.env import enable_backwards_compatibility_for_syntax\nfrom ward import test\n\n\n@test(\"task_validation: Python expression validator detects syntax errors\")\ndef test_syntax_error_detection():\n    # Test with a syntax error\n    expression = \"$ 1 + )\"\n    result = validate_py_expression(expression)\n    assert len(result[\"syntax_errors\"]) > 0\n    assert \"Syntax error\" in result[\"syntax_errors\"][0]\n\n\n@test(\"task_validation: Python expression validator detects undefined names\")\ndef test_undefined_name_detection():\n    # Test with undefined variable\n    expression = \"$ undefined_var + 10\"\n    result = validate_py_expression(expression)\n    assert len(result[\"undefined_names\"]) > 0\n    assert \"Undefined name: 'undefined_var'\" in result[\"undefined_names\"]\n\n\n@test(\"task_validation: Python expression validator allows steps variable access\")\ndef test_allow_steps_var():\n    # Test with accessing steps\n    expression = \"$ steps[0].output\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n\n@test(\"task_validation: Python expression validator detects unsafe operations\")\ndef test_unsafe_operations_detection():\n    # Test with unsafe attribute access\n    expression = \"$ some_obj.dangerous_method()\"\n    result = validate_py_expression(expression)\n    assert len(result[\"unsafe_operations\"]) > 0\n    assert \"Potentially unsafe attribute access\" in result[\"unsafe_operations\"][0]\n\n\n@test(\"task_validation: Python expression validator detects unsafe dunder attributes\")\ndef test_dunder_attribute_detection():\n    # Test with dangerous dunder attribute access\n    expression = \"$ obj.__class__\"\n    result = validate_py_expression(expression)\n    assert len(result[\"unsafe_operations\"]) > 0\n    assert (\n        \"Potentially unsafe dunder attribute access: __class__\"\n        in result[\"unsafe_operations\"][0]\n    )\n\n    # Test with another dangerous dunder attribute\n    expression = \"$ obj.__import__('os')\"\n    result = validate_py_expression(expression)\n    assert len(result[\"unsafe_operations\"]) > 0\n    assert (\n        \"Potentially unsafe dunder attribute access: __import__\"\n        in result[\"unsafe_operations\"][0]\n    )\n\n\n@test(\"task_validation: Python expression validator detects potential runtime errors\")\ndef test_runtime_error_detection():\n    # Test division by zero\n    expression = \"$ 10 / 0\"\n    result = validate_py_expression(expression)\n    assert len(result[\"potential_runtime_errors\"]) > 0\n    assert \"Division by zero\" in result[\"potential_runtime_errors\"][0]\n\n\n@test(\"task_validation: Python expression backwards_compatibility\")\ndef test_backwards_compatibility():\n    if enable_backwards_compatibility_for_syntax:\n        # Test division by zero\n        expression = \"{{ 10 / 0 }}\"\n        result = validate_py_expression(expression)\n        assert len(result[\"potential_runtime_errors\"]) > 0\n        assert \"Division by zero\" in result[\"potential_runtime_errors\"][0]\n\n\n@test(\"task_validation: Python expression validator accepts valid expressions\")\ndef test_valid_expression():\n    # Test a valid expression\n    expression = \"$ _.topic if hasattr(_, 'topic') else 'default'\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n\n@test(\"task_validation: Python expression validator handles special underscore variable\")\ndef test_underscore_allowed():\n    # Test that _ is allowed by default\n    expression = \"$ _.attribute\"\n    result = validate_py_expression(expression)\n    assert all(len(issues) == 0 for issues in result.values())\n\n\ninvalid_task_dict = {\n    \"name\": \"Test Task\",\n    \"description\": \"A task with invalid expressions\",\n    \"inherit_tools\": True,\n    \"tools\": [],\n    \"main\": [\n        {\n            \"evaluate\": {\n                \"result\": \"$ 1 + )\"  # Syntax error\n            }\n        },\n        {\n            \"if\": \"$ undefined_var == True\",  # Undefined variable\n            \"then\": {\"evaluate\": {\"value\": \"$ 'valid'\"}},\n        },\n    ],\n}\n\n\nvalid_task_dict = {\n    \"name\": \"Test Task\",\n    \"description\": \"A task with valid expressions\",\n    \"inherit_tools\": True,\n    \"tools\": [],\n    \"main\": [\n        {\n            \"evaluate\": {\n                \"result\": \"$ 1 + 2\"  # Valid expression\n            }\n        },\n        {\n            \"if\": \"$ _ is not None\",  # Valid expression\n            \"then\": {\"evaluate\": {\"value\": \"$ str(_)\"}},\n        },\n    ],\n}\n\n\n@test(\"task_validation: Task validator detects invalid Python expressions in tasks\")\ndef test_validation_of_task_with_invalid_expressions():\n    # Convert dict to CreateTaskRequest\n    task = CreateTaskRequest.model_validate(invalid_task_dict)\n\n    # Validate the task\n    validation_result = validate_task(task)\n\n    # Verify validation result\n    assert not validation_result.is_valid\n    assert len(validation_result.python_expression_issues) > 0\n\n    # Check that both issues were detected\n    syntax_error_found = False\n    undefined_var_found = False\n\n    for issue in validation_result.python_expression_issues:\n        if \"Syntax error\" in issue.message:\n            syntax_error_found = True\n        if \"Undefined name: 'undefined_var'\" in issue.message:\n            undefined_var_found = True\n\n    assert syntax_error_found\n    assert undefined_var_found\n\n\n@test(\"task_validation: Task validator accepts valid Python expressions in tasks\")\ndef test_validation_of_valid_task():\n    # Convert dict to CreateTaskRequest\n    task = CreateTaskRequest.model_validate(valid_task_dict)\n\n    # Validate the task\n    validation_result = validate_task(task)\n\n    # Verify validation result\n    assert validation_result.is_valid\n    assert len(validation_result.python_expression_issues) == 0\n\n\n@test(\"task_validation: Simple test of validation integration\")\ndef _():\n    # Create a simple valid task\n    task_dict = {\n        \"name\": \"Simple Task\",\n        \"description\": \"A task for basic test\",\n        \"inherit_tools\": True,\n        \"tools\": [],\n        \"main\": [{\"evaluate\": {\"result\": \"$ 1 + 2\"}}],\n    }\n\n    task = CreateTaskRequest.model_validate(task_dict)\n\n    # Validate the task with the actual validator\n    validation_result = validate_task(task)\n\n    # Should be valid since the expression is correct\n    assert validation_result.is_valid\n\n\nnested_task_with_error_dict = {\n    \"name\": \"Nested Error Task\",\n    \"description\": \"A task with invalid expressions in nested steps\",\n    \"inherit_tools\": True,\n    \"tools\": [],\n    \"main\": [\n        {\n            \"if\": \"$ _ is not None\",  # Valid expression\n            \"then\": {\n                \"evaluate\": {\n                    \"value\": \"$ undefined_nested_var\"  # Invalid: undefined variable\n                }\n            },\n            \"else\": {\n                \"if\": \"$ True\",\n                \"then\": {\n                    \"evaluate\": {\n                        \"result\": \"$ 1 + )\"  # Invalid: syntax error\n                    }\n                },\n            },\n        },\n        {\n            \"match\": {\n                \"case\": \"$ _.type\",\n                \"cases\": [\n                    {\n                        \"case\": \"$ 'text'\",\n                        \"then\": {\n                            \"evaluate\": {\n                                \"value\": \"$ 1 / 0\"  # Invalid: division by zero\n                            }\n                        },\n                    }\n                ],\n            }\n        },\n        {\n            \"foreach\": {\n                \"in\": \"$ range(3)\",\n                \"do\": {\n                    \"evaluate\": {\n                        \"result\": \"$ unknown_func()\"  # Invalid: undefined function\n                    }\n                },\n            }\n        },\n    ],\n}\n\n\n@test(\"task_validation: Task validator can identify issues in if/else nested branches\")\ndef test_recursive_validation_of_if_else_branches():\n    \"\"\"Verify that the task validator can identify issues in nested if/else blocks.\"\"\"\n    # Manually set up an if step with a nested step structure\n    step_with_nested_if = {\n        \"if\": {  # Note: Using this format for Pydantic validation\n            \"if\": \"$ True\",  # Valid expression\n            \"then\": {\n                \"evaluate\": {\n                    \"value\": \"$ 1 + )\"  # Deliberate syntax error in nested step\n                }\n            },\n        }\n    }\n\n    # Convert to task spec format\n    task_spec = {\"workflows\": [{\"name\": \"main\", \"steps\": [step_with_nested_if]}]}\n\n    # Check task validation using the full validator\n    from agents_api.common.utils.task_validation import validate_task_expressions\n\n    validation_results = validate_task_expressions(task_spec)\n\n    # Check that we found the issue in the nested structure\n    assert \"main\" in validation_results, \"No validation results for main workflow\"\n    assert \"0\" in validation_results[\"main\"], \"No validation results for step 0\"\n\n    # Check specifically for syntax error in a nested structure\n    nested_error_found = False\n    for issue in validation_results[\"main\"][\"0\"]:\n        if \"Syntax error\" in str(issue[\"issues\"]):\n            nested_error_found = True\n\n    assert nested_error_found, \"Did not detect syntax error in nested structure\"\n\n\n@test(\"task_validation: Task validator can identify issues in match statement nested blocks\")\ndef test_recursive_validation_of_match_branches():\n    \"\"\"Verify that the task validator can identify issues in nested match/case blocks.\"\"\"\n    # Set up a match step with a nested error\n    step_with_nested_match = {\n        \"match\": {\n            \"case\": \"$ _.type\",\n            \"cases\": [\n                {\n                    \"case\": \"$ 'text'\",\n                    \"then\": {\n                        \"evaluate\": {\n                            \"value\": \"$ undefined_var\"  # Deliberate undefined variable\n                        }\n                    },\n                }\n            ],\n        }\n    }\n\n    # Convert to task spec format\n    task_spec = {\"workflows\": [{\"name\": \"main\", \"steps\": [step_with_nested_match]}]}\n\n    # Check task validation using the full validator\n    from agents_api.common.utils.task_validation import validate_task_expressions\n\n    validation_results = validate_task_expressions(task_spec)\n\n    # Check that we found the issue in the nested structure\n    nested_error_found = False\n    for issue in validation_results[\"main\"][\"0\"]:\n        if \"undefined_var\" in str(issue[\"expression\"]) and \"Undefined name\" in str(\n            issue[\"issues\"]\n        ):\n            nested_error_found = True\n\n    assert nested_error_found, \"Did not detect undefined variable in nested case structure\"\n\n\n@test(\"task_validation: Task validator can identify issues in foreach nested blocks\")\ndef test_recursive_validation_of_foreach_blocks():\n    \"\"\"Verify that the task validator can identify issues in nested foreach blocks.\"\"\"\n    # Set up a foreach step with a nested error\n    step_with_nested_foreach = {\n        \"foreach\": {\n            \"in\": \"$ range(3)\",\n            \"do\": {\n                \"evaluate\": {\n                    \"value\": \"$ unknown_func()\"  # Deliberate undefined function\n                }\n            },\n        }\n    }\n\n    # Convert to task spec format\n    task_spec = {\"workflows\": [{\"name\": \"main\", \"steps\": [step_with_nested_foreach]}]}\n\n    # Check task validation using the full validator\n    from agents_api.common.utils.task_validation import validate_task_expressions\n\n    validation_results = validate_task_expressions(task_spec)\n\n    # Check that we found the issue in the nested structure\n    nested_error_found = False\n    for issue in validation_results[\"main\"][\"0\"]:\n        if \"unknown_func()\" in str(issue[\"expression\"]) and \"Undefined name\" in str(\n            issue[\"issues\"]\n        ):\n            nested_error_found = True\n\n    assert nested_error_found, \"Did not detect undefined function in nested foreach structure\"\n\n\n@test(\n    \"task_validation: Python expression validator correctly handles list comprehension variables\"\n)\ndef test_list_comprehension_variables():\n    # Test with a list comprehension that uses a local variable\n    expression = \"$ [item['text'] for item in _['content']]\"\n    result = validate_py_expression(expression)\n\n    # Should not have any undefined name issues for 'item'\n    assert all(len(issues) == 0 for issues in result.values()), (\n        f\"Found issues in valid list comprehension: {result}\"\n    )\n\n\n@test(\"task_validation: Python expression validator detects unsupported features\")\ndef test_unsupported_features_detection():\n    # Test with a set comprehension (unsupported)\n    expression = \"$ {x for x in range(10)}\"\n    result = validate_py_expression(expression)\n\n    # Should detect the set comprehension as unsupported\n    assert len(result[\"unsupported_features\"]) > 0\n    assert \"Set comprehensions are not supported\" in result[\"unsupported_features\"][0]\n\n    # Test with a lambda function (unsupported)\n    expression = \"$ (lambda x: x + 1)(5)\"\n    result = validate_py_expression(expression)\n\n    # Should detect the lambda function as unsupported\n    assert len(result[\"unsupported_features\"]) > 0\n    assert \"Lambda functions are not supported\" in result[\"unsupported_features\"][0]\n\n    # Test with a walrus operator (unsupported)\n    expression = \"$ (x := 10) + x\"\n    result = validate_py_expression(expression)\n\n    # Should detect the walrus operator as unsupported\n    assert len(result[\"unsupported_features\"]) > 0\n    assert (\n        \"Assignment expressions (walrus operator) are not supported\"\n        in result[\"unsupported_features\"][0]\n    )\n"
  },
  {
    "path": "src/agents-api/tests/test_tool_call_step.py",
    "content": "from uuid import UUID\n\nfrom agents_api.activities.task_steps.tool_call_step import (\n    construct_tool_call,\n    generate_call_id,\n)\nfrom agents_api.autogen.openapi_model import CreateToolRequest, SystemDef, Tool\nfrom ward import test\n\n\n@test(\"generate_call_id returns call ID with proper format\")\nasync def _():\n    # Generate a call ID\n    call_id = generate_call_id()\n\n    # Validate the call ID format\n    assert call_id.startswith(\"call_\")\n    # The call_id should be call_ followed by 24 base64 characters\n    assert len(call_id) == 29\n    # Should not have any padding character\n    assert \"=\" not in call_id\n\n\n@test(\"construct_tool_call correctly formats function tool\")\nasync def _():\n    # Create a function tool\n    tool = CreateToolRequest(\n        name=\"test_function\",\n        type=\"function\",\n        function={\n            \"description\": \"A test function\",\n            \"parameters\": {\"type\": \"object\", \"properties\": {\"param1\": {\"type\": \"string\"}}},\n        },\n    )\n\n    arguments = {\"param1\": \"test_value\"}\n    call_id = \"call_abc123\"\n\n    # Construct the tool call\n    tool_call = construct_tool_call(tool, arguments, call_id)\n\n    # Verify the structure\n    assert tool_call[\"id\"] == call_id\n    assert tool_call[\"type\"] == \"function\"\n    assert tool_call[\"function\"][\"name\"] == \"test_function\"\n    assert tool_call[\"function\"][\"arguments\"] == arguments\n\n\n@test(\"construct_tool_call correctly formats system tool\")\nasync def _():\n    # Create a system tool\n    system_info = SystemDef(\n        resource=\"doc\",\n        operation=\"get\",\n        resource_id=UUID(\"00000000-0000-0000-0000-000000000000\"),\n        subresource=\"doc\",\n    )\n\n    tool = CreateToolRequest(name=\"test_system\", type=\"system\", system=system_info)\n\n    arguments = {\"param1\": \"test_value\"}\n    call_id = \"call_abc123\"\n\n    # Construct the tool call\n    tool_call = construct_tool_call(tool, arguments, call_id)\n\n    # Verify the structure\n    assert tool_call[\"id\"] == call_id\n    assert tool_call[\"type\"] == \"system\"\n    assert tool_call[\"system\"][\"resource\"] == \"doc\"\n    assert tool_call[\"system\"][\"operation\"] == \"get\"\n    assert tool_call[\"system\"][\"resource_id\"] == UUID(\"00000000-0000-0000-0000-000000000000\")\n    assert tool_call[\"system\"][\"subresource\"] == \"doc\"\n    assert tool_call[\"system\"][\"arguments\"] == arguments\n\n\n@test(\"construct_tool_call works with Tool objects (not just CreateToolRequest)\")\nasync def _():\n    # Create a function Tool (not CreateToolRequest)\n    tool = Tool(\n        id=UUID(\"00000000-0000-0000-0000-000000000000\"),\n        name=\"test_function\",\n        type=\"function\",\n        function={\n            \"description\": \"A test function\",\n            \"parameters\": {\"type\": \"object\", \"properties\": {\"param1\": {\"type\": \"string\"}}},\n        },\n        agent_id=UUID(\"00000000-0000-0000-0000-000000000000\"),\n        developer_id=UUID(\"00000000-0000-0000-0000-000000000000\"),\n        created_at=\"2023-01-01T00:00:00Z\",\n        updated_at=\"2023-01-01T00:00:00Z\",\n    )\n\n    arguments = {\"param1\": \"test_value\"}\n    call_id = \"call_abc123\"\n\n    # Construct the tool call\n    tool_call = construct_tool_call(tool, arguments, call_id)\n\n    # Verify the structure\n    assert tool_call[\"id\"] == call_id\n    assert tool_call[\"type\"] == \"function\"\n    assert tool_call[\"function\"][\"name\"] == \"test_function\"\n    assert tool_call[\"function\"][\"arguments\"] == arguments\n"
  },
  {
    "path": "src/agents-api/tests/test_tool_queries.py",
    "content": "# # Tests for tool queries\n\nfrom agents_api.autogen.openapi_model import (\n    CreateToolRequest,\n    PatchToolRequest,\n    Tool,\n    UpdateToolRequest,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.tools.create_tools import create_tools\nfrom agents_api.queries.tools.delete_tool import delete_tool\nfrom agents_api.queries.tools.get_tool import get_tool\nfrom agents_api.queries.tools.list_tools import list_tools\nfrom agents_api.queries.tools.patch_tool import patch_tool\nfrom agents_api.queries.tools.update_tool import update_tool\nfrom ward import test\n\nfrom tests.fixtures import pg_dsn, test_agent, test_developer_id, test_tool\n\n\n@test(\"query: create tool\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n    function = {\n        \"name\": \"hello_world\",\n        \"description\": \"A function that prints hello world\",\n        \"parameters\": {\"type\": \"object\", \"properties\": {}},\n    }\n\n    tool = {\n        \"function\": function,\n        \"name\": \"hello_world\",\n        \"type\": \"function\",\n    }\n\n    result = await create_tools(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=[CreateToolRequest(**tool)],\n        connection_pool=pool,\n    )\n\n    assert result is not None\n    assert isinstance(result[0], Tool)\n\n\n@test(\"query: delete tool\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n    function = {\n        \"name\": \"temp_temp\",\n        \"description\": \"A function that prints hello world\",\n        \"parameters\": {\"type\": \"object\", \"properties\": {}},\n    }\n\n    tool = {\n        \"function\": function,\n        \"name\": \"temp_temp\",\n        \"type\": \"function\",\n    }\n\n    [tool, *_] = await create_tools(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        data=[CreateToolRequest(**tool)],\n        connection_pool=pool,\n    )\n\n    result = await delete_tool(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        tool_id=tool.id,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n\n\n@test(\"query: get tool\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, tool=test_tool, agent=test_agent):\n    pool = await create_db_pool(dsn=dsn)\n    result = await get_tool(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        tool_id=tool.id,\n        connection_pool=pool,\n    )\n\n    assert result is not None, \"Result is None\"\n\n\n@test(\"query: list tools\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, tool=test_tool):\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_tools(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        connection_pool=pool,\n    )\n\n    assert result is not None, \"Result is None\"\n    assert len(result) > 0, \"Result is empty\"\n    assert all(isinstance(tool, Tool) for tool in result), (\n        \"Not all listed tools are of type Tool\"\n    )\n\n\n@test(\"query: patch tool\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, tool=test_tool):\n    pool = await create_db_pool(dsn=dsn)\n    patch_data = PatchToolRequest(\n        name=\"patched_tool\",\n        function={\n            \"description\": \"A patched function that prints hello world\",\n            \"parameters\": {\"param1\": \"value1\"},\n        },\n    )\n\n    result = await patch_tool(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        tool_id=tool.id,\n        data=patch_data,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n\n    tool = await get_tool(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        tool_id=tool.id,\n        connection_pool=pool,\n    )\n\n    assert tool.name == \"patched_tool\"\n    assert tool.function.description == \"A patched function that prints hello world\"\n    assert tool.function.parameters\n\n\n@test(\"query: update tool\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, agent=test_agent, tool=test_tool):\n    pool = await create_db_pool(dsn=dsn)\n    update_data = UpdateToolRequest(\n        name=\"updated_tool\",\n        description=\"An updated description\",\n        type=\"function\",\n        function={\n            \"description\": \"An updated function that prints hello world\",\n        },\n    )\n\n    result = await update_tool(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        tool_id=tool.id,\n        data=update_data,\n        connection_pool=pool,\n    )\n\n    assert result is not None\n\n    tool = await get_tool(\n        developer_id=developer_id,\n        agent_id=agent.id,\n        tool_id=tool.id,\n        connection_pool=pool,\n    )\n\n    assert tool.name == \"updated_tool\"\n    assert not tool.function.parameters\n"
  },
  {
    "path": "src/agents-api/tests/test_tool_runner.py",
    "content": "from unittest.mock import patch\n\nfrom agents_api.autogen.openapi_model import (\n    ApiCallDef,\n    CreateToolRequest,\n    DummyIntegrationDef,\n    FunctionDef,\n    SystemDef,\n)\nfrom agents_api.common.utils.tool_runner import format_tool\nfrom ward import test\n\n\n@test(\"format_tool correctly formats function tool\")\nasync def _():\n    tool = CreateToolRequest(\n        name=\"test_function\",\n        type=\"function\",\n        function=FunctionDef(\n            parameters={\"type\": \"object\", \"properties\": {\"param1\": {\"type\": \"string\"}}},\n        ),\n        description=\"A test function\",\n    )\n\n    result = await format_tool(tool)\n\n    assert result[\"type\"] == \"function\"\n    assert result[\"function\"][\"name\"] == \"test_function\"\n    assert result[\"function\"][\"description\"] == \"A test function\"\n    assert result[\"function\"][\"parameters\"][\"properties\"][\"param1\"][\"type\"] == \"string\"\n\n\n@test(\"format_tool correctly formats integration tool\")\nasync def _():\n    with patch(\"agents_api.clients.integrations.convert_to_openai_tool\") as mock_convert:\n        mock_convert.return_value = {\n            \"type\": \"function\",\n            \"function\": {\n                \"name\": \"slack\",\n                \"description\": \"Send message to Slack\",\n                \"parameters\": {\"type\": \"object\"},\n            },\n        }\n\n        tool = CreateToolRequest(\n            name=\"dummy_integration\",\n            type=\"integration\",\n            integration=DummyIntegrationDef(provider=\"dummy\", method=\"post_message\"),\n        )\n\n        result = await format_tool(tool)\n\n        assert result[\"type\"] == \"function\"\n        assert result[\"function\"][\"name\"] == \"slack\"\n        mock_convert.assert_called_once_with(provider=\"dummy\", method=\"post_message\")\n\n\n@test(\"format_tool correctly formats api_call tool\")\nasync def _():\n    tool = CreateToolRequest(\n        name=\"weather_api\",\n        type=\"api_call\",\n        description=\"Get weather data\",\n        api_call=ApiCallDef(\n            method=\"GET\",\n            url=\"https://api.weather.com\",\n            params_schema={\"type\": \"object\", \"properties\": {\"city\": {\"type\": \"string\"}}},\n        ),\n    )\n\n    result = await format_tool(tool)\n\n    assert result[\"type\"] == \"function\"\n    assert result[\"function\"][\"name\"] == \"weather_api\"\n    assert result[\"function\"][\"description\"] == \"Get weather data\"\n    assert result[\"function\"][\"parameters\"][\"properties\"][\"city\"][\"type\"] == \"string\"\n\n\n@test(\"format_tool handles missing description\")\nasync def _():\n    tool = CreateToolRequest(\n        name=\"simple_function\",\n        type=\"function\",\n        function=FunctionDef(parameters={\"type\": \"object\"}),\n    )\n\n    result = await format_tool(tool)\n\n    assert result[\"type\"] == \"function\"\n    assert result[\"function\"][\"name\"] == \"simple_function\"\n    assert result[\"function\"][\"description\"] is None\n    assert result[\"function\"][\"parameters\"][\"type\"] == \"object\"\n\n\n@test(\"format_tool correctly formats system tool\")\nasync def _():\n    # Use a real system definition that maps to an actual handler\n    tool = CreateToolRequest(\n        name=\"get_agent\",\n        type=\"system\",\n        description=\"Retrieve agent information\",\n        system=SystemDef(\n            resource=\"agent\",\n            operation=\"get\",\n        ),\n    )\n\n    result = await format_tool(tool)\n\n    assert result[\"type\"] == \"function\"\n    assert result[\"function\"][\"name\"] == \"get_agent\"\n    assert result[\"function\"][\"description\"] == \"Retrieve agent information\"\n    # Check that parameters schema was generated from actual handler\n    assert \"properties\" in result[\"function\"][\"parameters\"]\n    # The actual get_agent handler should have these parameters\n    assert \"agent_id\" in result[\"function\"][\"parameters\"][\"properties\"]\n    # Check that the parameter has proper schema\n    assert result[\"function\"][\"parameters\"][\"properties\"][\"agent_id\"][\"type\"] == \"string\"\n    assert result[\"function\"][\"parameters\"][\"properties\"][\"agent_id\"][\"format\"] == \"uuid\"\n\n\n@test(\"format_tool uses handler docstring when no description provided\")\nasync def _():\n    # Use a real system definition without providing a description\n    tool = CreateToolRequest(\n        name=\"list_agents\",\n        type=\"system\",\n        # No description provided - should fallback to handler's docstring\n        system=SystemDef(\n            resource=\"agent\",\n            operation=\"list\",\n        ),\n    )\n\n    result = await format_tool(tool)\n\n    assert result[\"type\"] == \"function\"\n    assert result[\"function\"][\"name\"] == \"list_agents\"\n    # Should use handler's docstring when no description provided\n    assert result[\"function\"][\"description\"] is not None\n    assert len(result[\"function\"][\"description\"]) > 0\n    # The description should come from the actual handler's docstring\n    assert \"agent\" in result[\"function\"][\"description\"].lower()\n    # Check that parameters schema was generated\n    assert \"properties\" in result[\"function\"][\"parameters\"]\n    # List operations typically have pagination parameters\n    assert \"limit\" in result[\"function\"][\"parameters\"][\"properties\"]\n    assert \"offset\" in result[\"function\"][\"parameters\"][\"properties\"]\n"
  },
  {
    "path": "src/agents-api/tests/test_transitions_queries.py",
    "content": "\"\"\"Tests for transitions queries.\"\"\"\n\nfrom datetime import timedelta\nfrom uuid import UUID\n\nfrom agents_api.autogen.openapi_model import CreateTransitionRequest\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.common.utils.datetime import datetime, utcnow\nfrom agents_api.queries.executions import (\n    list_execution_inputs_data,\n    list_execution_state_data,\n)\nfrom agents_api.queries.executions.create_execution_transition import (\n    create_execution_transition,\n)\nfrom asyncpg import Pool\nfrom uuid_extensions import uuid7\nfrom ward import test\n\nfrom tests.fixtures import (\n    custom_scope_id,\n    pg_dsn,\n    test_developer_id,\n    test_execution_started,\n    test_task,\n)\n\n\n@test(\"query: list execution inputs data\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    scope_id=custom_scope_id,\n    execution_started=test_execution_started,\n):\n    pool = await create_db_pool(dsn=dsn)\n    execution = execution_started\n\n    data = []\n\n    for i in range(10):\n        data.append(\n            CreateTransitionRequest(\n                type=\"init_branch\",\n                output=i + 1,\n                current={\n                    \"workflow\": f\"`main`[0].foreach[{max(0, i - 1)}]\",\n                    \"step\": 0,\n                    \"scope_id\": scope_id,\n                },\n                next={\"workflow\": f\"`main`[0].foreach[{i}]\", \"step\": 0, \"scope_id\": scope_id},\n            )\n        )\n\n        data.append(\n            CreateTransitionRequest(\n                type=\"finish_branch\",\n                output={\"inside_foreach\": f\"inside foreach {i}\"},\n                current={\n                    \"workflow\": f\"`main`[0].foreach[{i}]\",\n                    \"step\": 0,\n                    \"scope_id\": scope_id,\n                },\n                next=None,\n            )\n        )\n\n    data.append(\n        CreateTransitionRequest(\n            type=\"step\",\n            output=[{\"inside_foreach\": \"inside foreach\"}],\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n            next={\"workflow\": \"main\", \"step\": 1, \"scope_id\": scope_id},\n        )\n    )\n\n    data.append(\n        CreateTransitionRequest(\n            type=\"step\",\n            output={\"inside_evaluate\": \"inside evaluate\"},\n            current={\"workflow\": \"main\", \"step\": 1, \"scope_id\": scope_id},\n            next={\"workflow\": \"main\", \"step\": 2, \"scope_id\": scope_id},\n        )\n    )\n\n    data.append(\n        CreateTransitionRequest(\n            type=\"finish\",\n            output={\"final_step\": \"final step\"},\n            current={\"workflow\": \"main\", \"step\": 2, \"scope_id\": scope_id},\n            next=None,\n        )\n    )\n\n    for transition in data:\n        await create_execution_transition(\n            developer_id=developer_id,\n            execution_id=execution.id,\n            data=transition,\n            connection_pool=pool,\n        )\n\n    transitions = await list_execution_inputs_data(\n        execution_id=execution.id,\n        scope_id=scope_id,\n        direction=\"asc\",\n        connection_pool=pool,\n    )\n\n    assert len(transitions) == 3\n    assert transitions[0].output == {}\n    assert transitions[1].output == [{\"inside_foreach\": \"inside foreach\"}]\n    assert transitions[2].output == {\"inside_evaluate\": \"inside evaluate\"}\n\n\n@test(\"query: list execution state data\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    scope_id=custom_scope_id,\n    execution_started=test_execution_started,\n):\n    pool = await create_db_pool(dsn=dsn)\n    execution = execution_started\n\n    data = []\n\n    data.append(\n        CreateTransitionRequest(\n            type=\"step\",\n            output={\"set_step\": \"set step\"},\n            current={\"workflow\": \"main\", \"step\": 0, \"scope_id\": scope_id},\n            next={\"workflow\": \"main\", \"step\": 1, \"scope_id\": scope_id},\n            metadata={\"step_type\": \"SetStep\"},\n        )\n    )\n\n    data.append(\n        CreateTransitionRequest(\n            type=\"finish\",\n            output={\"final_step\": \"final step\"},\n            current={\"workflow\": \"main\", \"step\": 1, \"scope_id\": scope_id},\n            next=None,\n        )\n    )\n\n    for transition in data:\n        await create_execution_transition(\n            developer_id=developer_id,\n            execution_id=execution.id,\n            data=transition,\n            connection_pool=pool,\n        )\n\n    transitions = await list_execution_state_data(\n        execution_id=execution.id,\n        scope_id=scope_id,\n        direction=\"asc\",\n        connection_pool=pool,\n    )\n\n    assert len(transitions) == 1\n    assert transitions[0].output == {\"set_step\": \"set step\"}\n\n\nasync def create_execution(\n    pool: Pool,\n    developer_id: UUID,\n    task_id: UUID,\n    created_at: datetime,\n):\n    execution_id = uuid7()\n    create_execution_query = \"\"\"\n        INSERT INTO executions\n        (\n            developer_id,\n            task_id,\n            execution_id,\n            input,\n            metadata,\n            task_version,\n            created_at\n        )\n        VALUES\n        (\n            $1,\n            $2,\n            $3,\n            $4,\n            $5,\n            1,\n            $6\n        )\n        RETURNING *;\n    \"\"\"\n\n    await pool.fetchrow(\n        create_execution_query,\n        str(developer_id),\n        str(task_id),\n        str(execution_id),\n        {\"test\": \"test\"},\n        {},\n        created_at,\n    )\n\n    return execution_id\n\n\nasync def create_transition(\n    pool: Pool,\n    execution_id: UUID,\n    type: str,\n    current_step: dict,\n    next_step: dict,\n    output: dict,\n    metadata: dict,\n    created_at: datetime,\n):\n    create_execution_transition_query = \"\"\"\n        INSERT INTO transitions\n        (\n            execution_id,\n            transition_id,\n            type,\n            step_label,\n            current_step,\n            next_step,\n            output,\n            task_token,\n            metadata,\n            created_at\n        )\n        VALUES\n        (\n            $1,\n            $2,\n            $3,\n            $4,\n            $5,\n            $6,\n            $7,\n            $8,\n            $9,\n            $10\n        )\n        RETURNING *;\n        \"\"\"\n\n    transition_id = uuid7()\n    await pool.fetchrow(\n        create_execution_transition_query,\n        str(execution_id),\n        str(transition_id),\n        type,\n        \"label\",\n        current_step,\n        next_step,\n        output,\n        None,\n        metadata,\n        created_at,\n    )\n\n\n@test(\"query: list execution inputs data: search_window\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    scope_id=custom_scope_id,\n    task=test_task,\n):\n    pool = await create_db_pool(dsn=dsn)\n\n    execution_id = await create_execution(\n        pool, developer_id, task.id, utcnow() - timedelta(weeks=1)\n    )\n\n    await create_transition(\n        pool,\n        execution_id,\n        \"init\",\n        {\"workflow_name\": \"main\", \"step_index\": 0, \"scope_id\": scope_id},\n        {\"workflow_name\": \"main\", \"step_index\": 0, \"scope_id\": scope_id},\n        {\"init_step\": \"init step\"},\n        {},\n        utcnow() - timedelta(weeks=1),\n    )\n\n    await create_transition(\n        pool,\n        execution_id,\n        \"step\",\n        {\"workflow_name\": \"main\", \"step_index\": 0, \"scope_id\": scope_id},\n        {\"workflow_name\": \"main\", \"step_index\": 1, \"scope_id\": scope_id},\n        {\"step_step\": \"step step\"},\n        {},\n        utcnow() - timedelta(days=1),\n    )\n\n    transitions_with_search_window = await list_execution_inputs_data(\n        execution_id=execution_id,\n        scope_id=scope_id,\n        direction=\"asc\",\n        connection_pool=pool,\n        search_window=timedelta(days=5),\n    )\n\n    assert len(transitions_with_search_window) == 1\n    assert transitions_with_search_window[0].output == {\"step_step\": \"step step\"}\n\n    transitions_without_search_window = await list_execution_inputs_data(\n        execution_id=execution_id, scope_id=scope_id, direction=\"asc\", connection_pool=pool\n    )\n\n    assert len(transitions_without_search_window) == 2\n    assert transitions_without_search_window[0].output == {\"init_step\": \"init step\"}\n    assert transitions_without_search_window[1].output == {\"step_step\": \"step step\"}\n\n\n@test(\"query: list execution state data: search_window\")\nasync def _(\n    dsn=pg_dsn,\n    developer_id=test_developer_id,\n    scope_id=custom_scope_id,\n    task=test_task,\n):\n    pool = await create_db_pool(dsn=dsn)\n\n    execution_id = await create_execution(\n        pool, developer_id, task.id, utcnow() - timedelta(weeks=1)\n    )\n\n    await create_transition(\n        pool,\n        execution_id,\n        \"init\",\n        {\"workflow_name\": \"main\", \"step_index\": 0, \"scope_id\": scope_id},\n        {\"workflow_name\": \"main\", \"step_index\": 0, \"scope_id\": scope_id},\n        {\"init_step\": \"init step\"},\n        {},\n        utcnow() - timedelta(weeks=1),\n    )\n\n    await create_transition(\n        pool,\n        execution_id,\n        \"step\",\n        {\"workflow_name\": \"main\", \"step_index\": 0, \"scope_id\": scope_id},\n        {\"workflow_name\": \"main\", \"step_index\": 1, \"scope_id\": scope_id},\n        {\"init_step\": \"init step\"},\n        {\"step_type\": \"SetStep\"},\n        utcnow() - timedelta(weeks=1),\n    )\n\n    await create_transition(\n        pool,\n        execution_id,\n        \"step\",\n        {\"workflow_name\": \"main\", \"step_index\": 1, \"scope_id\": scope_id},\n        {\"workflow_name\": \"main\", \"step_index\": 2, \"scope_id\": scope_id},\n        {\"step_step\": \"step step\"},\n        {\"step_type\": \"SetStep\"},\n        utcnow() - timedelta(days=1),\n    )\n\n    transitions_with_search_window = await list_execution_state_data(\n        execution_id=execution_id,\n        scope_id=scope_id,\n        direction=\"asc\",\n        connection_pool=pool,\n        search_window=timedelta(days=5),\n    )\n\n    assert len(transitions_with_search_window) == 1\n    assert transitions_with_search_window[0].output == {\"step_step\": \"step step\"}\n\n    transitions_without_search_window = await list_execution_state_data(\n        execution_id=execution_id, scope_id=scope_id, direction=\"asc\", connection_pool=pool\n    )\n\n    assert len(transitions_without_search_window) == 2\n    assert transitions_without_search_window[0].output == {\"init_step\": \"init step\"}\n    assert transitions_without_search_window[1].output == {\"step_step\": \"step step\"}\n"
  },
  {
    "path": "src/agents-api/tests/test_usage_cost.py",
    "content": "\"\"\"\nTests for the usage cost tracking functionality.\n\"\"\"\n\nimport asyncio\nfrom datetime import UTC, datetime, timedelta\nfrom decimal import Decimal\n\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.developers.create_developer import create_developer\nfrom agents_api.queries.usage.create_usage_record import create_usage_record\nfrom agents_api.queries.usage.get_user_cost import get_usage_cost\nfrom uuid_extensions import uuid7\nfrom ward import test\n\nfrom .fixtures import pg_dsn, test_developer_id\n\n\n@test(\"query: get_usage_cost returns zero cost when no usage records exist\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    \"\"\"Test that get_usage_cost returns zero cost when no usage records exist.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Calculate expected cost\n    expected_cost = 0.0\n\n    # Get the usage cost\n    cost_record = await get_usage_cost(developer_id=developer_id, connection_pool=pool)\n\n    # Verify the record\n    assert cost_record is not None, \"Should have a cost record\"\n    assert cost_record[\"developer_id\"] == developer_id\n    assert \"cost\" in cost_record, \"Should have a cost field\"\n    assert isinstance(cost_record[\"cost\"], Decimal), \"Cost should be a Decimal\"\n    assert cost_record[\"cost\"] == expected_cost, (\n        f\"Cost should be {expected_cost}, got {cost_record['cost']}\"\n    )\n    assert \"month\" in cost_record, \"Should have a month field\"\n    assert isinstance(cost_record[\"month\"], datetime), \"Month should be a datetime\"\n\n\n@test(\"query: get_usage_cost returns the correct cost when records exist\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    \"\"\"Test that get_usage_cost returns the correct cost for a developer with usage records.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create some usage records for the developer\n    record1 = await create_usage_record(\n        developer_id=developer_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=1000,\n        completion_tokens=2000,\n        connection_pool=pool,\n    )\n\n    record2 = await create_usage_record(\n        developer_id=developer_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=500,\n        completion_tokens=1500,\n        connection_pool=pool,\n    )\n\n    # Calculate expected cost\n    expected_cost = record1[0][\"cost\"] + record2[0][\"cost\"]\n\n    # Force the continuous aggregate to refresh\n    await pool.execute(\"CALL refresh_continuous_aggregate('usage_cost_monthly', NULL, NULL)\")\n\n    # Give a small delay for the view to update\n    await asyncio.sleep(0.1)\n\n    # Get the usage cost\n    cost_record = await get_usage_cost(developer_id=developer_id, connection_pool=pool)\n\n    # Verify the record\n    assert cost_record is not None, \"Should have a cost record\"\n    assert cost_record[\"developer_id\"] == developer_id\n    assert \"cost\" in cost_record, \"Should have a cost field\"\n    assert isinstance(cost_record[\"cost\"], Decimal), \"Cost should be a Decimal\"\n    assert cost_record[\"cost\"] == expected_cost, (\n        f\"Cost should be {expected_cost}, got {cost_record['cost']}\"\n    )\n    assert \"month\" in cost_record, \"Should have a month field\"\n    assert isinstance(cost_record[\"month\"], datetime), \"Month should be a datetime\"\n\n\n@test(\"query: get_usage_cost returns correct results for custom API usage\")\nasync def _(dsn=pg_dsn) -> None:\n    \"\"\"Test that get_usage_cost only includes non-custom API usage in the cost calculation.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a new developer for this test\n    dev_id = uuid7()\n    email = f\"test-{dev_id}@example.com\"\n    await create_developer(\n        email=email,\n        active=True,\n        tags=[\"test\"],\n        settings={},\n        developer_id=dev_id,\n        connection_pool=pool,\n    )\n\n    # Create usage records with custom API\n    await create_usage_record(\n        developer_id=dev_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=1000,\n        completion_tokens=2000,\n        custom_api_used=True,  # This shouldn't be counted in the cost\n        connection_pool=pool,\n    )\n\n    # Create usage records without custom API\n    non_custom_cost = await create_usage_record(\n        developer_id=dev_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=1000,\n        completion_tokens=2000,\n        custom_api_used=False,  # This should be counted\n        connection_pool=pool,\n    )\n\n    # Calculate what the expected cost should be\n    expected_cost = non_custom_cost[0][\"cost\"]\n\n    # Force the continuous aggregate to refresh\n    await pool.execute(\"CALL refresh_continuous_aggregate('usage_cost_monthly', NULL, NULL)\")\n\n    # Give a small delay for the view to update\n    await asyncio.sleep(0.1)\n\n    # Get the usage cost\n    cost_record = await get_usage_cost(developer_id=dev_id, connection_pool=pool)\n\n    # Verify the record\n    assert cost_record is not None, \"Should have a cost record\"\n    assert cost_record[\"developer_id\"] == dev_id\n    assert cost_record[\"cost\"] == expected_cost, (\n        f\"Cost should match expected: {expected_cost} but got {cost_record['cost']}\"\n    )\n\n\n@test(\"query: get_usage_cost handles inactive developers correctly\")\nasync def _(dsn=pg_dsn) -> None:\n    \"\"\"Test that get_usage_cost correctly handles inactive developers.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a new inactive developer\n    dev_id = uuid7()\n    email = f\"test-{dev_id}@example.com\"\n    await create_developer(\n        email=email,\n        active=False,  # Developer is inactive\n        tags=[\"test\"],\n        settings={},\n        developer_id=dev_id,\n        connection_pool=pool,\n    )\n\n    # Create usage records for the inactive developer\n    record = await create_usage_record(\n        developer_id=dev_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=1000,\n        completion_tokens=2000,\n        connection_pool=pool,\n    )\n\n    # Calculate expected cost\n    expected_cost = record[0][\"cost\"]\n\n    # Force the continuous aggregate to refresh\n    await pool.execute(\"CALL refresh_continuous_aggregate('usage_cost_monthly', NULL, NULL)\")\n\n    # Give a small delay for the view to update\n    await asyncio.sleep(0.1)\n\n    # Get the usage cost\n    cost_record = await get_usage_cost(developer_id=dev_id, connection_pool=pool)\n\n    # Verify the record\n    assert cost_record is not None, \"Should have a cost record even for inactive developers\"\n    assert cost_record[\"developer_id\"] == dev_id\n    assert cost_record[\"active\"] is False, \"Developer should be marked as inactive\"\n    assert cost_record[\"cost\"] == expected_cost, (\n        f\"Cost should be {expected_cost}, got {cost_record['cost']}\"\n    )\n\n\n@test(\"query: get_usage_cost sorts by month correctly and returns the most recent\")\nasync def _(dsn=pg_dsn) -> None:\n    \"\"\"Test that get_usage_cost returns the most recent month's cost when multiple months exist.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n\n    # Create a new developer for this test\n    dev_id = uuid7()\n    email = f\"test-{dev_id}@example.com\"\n    await create_developer(\n        email=email,\n        active=True,\n        tags=[\"test\"],\n        settings={},\n        developer_id=dev_id,\n        connection_pool=pool,\n    )\n\n    # Create usage records for different months - using timezone-aware datetimes\n    now = datetime.now(UTC)\n    current_month = datetime(now.year, now.month, 1, tzinfo=UTC)\n    middle_month = current_month - timedelta(days=30)\n    oldest_month = current_month - timedelta(days=60)\n\n    # Create a cost for the current month\n    current_cost_record = await create_usage_record(\n        developer_id=dev_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=600,\n        completion_tokens=1200,\n        connection_pool=pool,\n    )\n    current_cost = current_cost_record[0][\"cost\"]\n\n    # Create a cost for the middle month (insert with timestamp)\n    await pool.execute(\n        \"\"\"\n        INSERT INTO usage (\n            developer_id, model, prompt_tokens, completion_tokens, cost, created_at\n        ) VALUES ($1, 'gpt-4o-mini', 400, 800, $2, $3)\n        \"\"\",\n        dev_id,\n        Decimal(\"0.004000\"),\n        middle_month,\n    )\n\n    # Create a cost for the oldest month\n    await pool.execute(\n        \"\"\"\n        INSERT INTO usage (\n            developer_id, model, prompt_tokens, completion_tokens, cost, created_at\n        ) VALUES ($1, 'gpt-4o-mini', 200, 400, $2, $3)\n        \"\"\",\n        dev_id,\n        Decimal(\"0.002000\"),\n        oldest_month,\n    )\n\n    # Force the continuous aggregate to refresh\n    await pool.execute(\"CALL refresh_continuous_aggregate('usage_cost_monthly', NULL, NULL)\")\n\n    # Give a small delay for the view to update\n    await asyncio.sleep(0.1)\n\n    # Get the usage cost\n    cost_record = await get_usage_cost(developer_id=dev_id, connection_pool=pool)\n\n    # We expect the most recent month to be returned\n    assert cost_record is not None, \"Should have a cost record\"\n    assert cost_record[\"developer_id\"] == dev_id\n\n    # The month in the record should be close to the current month's date\n    # Ensure both datetimes are timezone-aware\n    record_month = cost_record[\"month\"]\n    month_diff = abs((record_month - current_month).total_seconds())\n    assert month_diff < 86400, \"Month should be near the start of the current month\"\n\n    # The cost should match only the current month\n    assert cost_record[\"cost\"] == current_cost, (\n        f\"Cost should match current month's usage only: expected {current_cost}, got {cost_record['cost']}\"\n    )\n"
  },
  {
    "path": "src/agents-api/tests/test_usage_tracking.py",
    "content": "\"\"\"\nTests for usage tracking functionality.\n\"\"\"\n\nfrom datetime import datetime\nfrom decimal import Decimal\nfrom unittest.mock import patch\n\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.common.utils.usage import (\n    is_llama_based_model,\n    track_embedding_usage,\n    track_usage,\n)\nfrom agents_api.queries.usage.create_usage_record import (\n    AVG_INPUT_COST_PER_TOKEN,\n    AVG_OUTPUT_COST_PER_TOKEN,\n    create_usage_record,\n)\nfrom litellm import cost_per_token\nfrom litellm.utils import Message, ModelResponse, Usage, token_counter\nfrom ward import test\n\nfrom .fixtures import pg_dsn, test_developer_id\n\n\n@test(\"query: create_usage_record creates a record with correct parameters\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    pool = await create_db_pool(dsn=dsn)\n    response = await create_usage_record(\n        developer_id=developer_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=100,\n        completion_tokens=100,\n        connection_pool=pool,\n    )\n    assert len(response) == 1\n    record = response[0]\n    assert record[\"developer_id\"] == developer_id\n    assert record[\"model\"] == \"gpt-4o-mini\"\n    assert record[\"prompt_tokens\"] == 100\n    assert record[\"completion_tokens\"] == 100\n    assert record[\"cost\"] == Decimal(\"0.000075\")\n    assert record[\"estimated\"] is False\n    assert record[\"custom_api_used\"] is False\n    assert record[\"metadata\"] == {}\n    assert isinstance(record[\"created_at\"], datetime)\n\n\n@test(\"query: create_usage_record handles different model names correctly\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    pool = await create_db_pool(dsn=dsn)\n    models = [\n        \"gpt-4o-mini\",\n        \"claude-3.5-sonnet\",\n        \"claude-3.7-sonnet\",\n        \"claude-3-haiku\",\n        \"deepseek-chat\",\n        \"gemini-1.5-pro\",\n        \"gemini-1.5-pro-latest\",\n        \"gemini-2.0-flash\",\n        \"gemini-2.5-pro-preview-03-25\",\n        \"mistral-large-2411\",\n        \"meta-llama/llama-4-scout\",\n        \"meta-llama/llama-4-maverick\",\n        \"meta-llama/llama-4-maverick:free\",\n        \"qwen/qwen-2.5-72b-instruct\",\n        \"sao10k/l3.3-euryale-70b\",\n        \"sao10k/l3.1-euryale-70b\",\n    ]\n    for model in models:\n        response = await create_usage_record(\n            developer_id=developer_id,\n            model=model,\n            prompt_tokens=100,\n            completion_tokens=100,\n            connection_pool=pool,\n        )\n        assert len(response) == 1\n        record = response[0]\n        assert record[\"model\"] == model\n\n\n@test(\"query: create_usage_record properly calculates costs\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    pool = await create_db_pool(dsn=dsn)\n    response = await create_usage_record(\n        developer_id=developer_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=2041,\n        completion_tokens=34198,\n        connection_pool=pool,\n    )\n\n    input_cost, completion_cost = cost_per_token(\n        \"gpt-4o-mini\", prompt_tokens=2041, completion_tokens=34198\n    )\n    cost = input_cost + completion_cost\n    cost = Decimal(str(cost)).quantize(Decimal(\"0.000001\"))\n\n    assert len(response) == 1\n    record = response[0]\n    assert record[\"cost\"] == cost\n\n\n@test(\"query: create_usage_record with custom API key\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    pool = await create_db_pool(dsn=dsn)\n    response = await create_usage_record(\n        developer_id=developer_id,\n        model=\"gpt-4o-mini\",\n        prompt_tokens=100,\n        completion_tokens=100,\n        custom_api_used=True,\n        connection_pool=pool,\n    )\n\n    input_cost, completion_cost = cost_per_token(\n        \"gpt-4o-mini\", prompt_tokens=100, completion_tokens=100\n    )\n    cost = input_cost + completion_cost\n    cost = Decimal(str(cost)).quantize(Decimal(\"0.000001\"))\n\n    assert len(response) == 1\n    record = response[0]\n    assert record[\"custom_api_used\"] is True\n    assert record[\"cost\"] == cost\n\n\n@test(\"query: create_usage_record with fallback pricing\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    pool = await create_db_pool(dsn=dsn)\n    response = await create_usage_record(\n        developer_id=developer_id,\n        model=\"meta-llama/llama-4-maverick:free\",\n        prompt_tokens=100,\n        completion_tokens=100,\n        connection_pool=pool,\n    )\n\n    assert len(response) == 1\n    record = response[0]\n    assert record[\"cost\"] == Decimal(\"0.000000\")\n    assert record[\"estimated\"] is True\n\n\n@test(\"query: create_usage_record with fallback pricing with model not in fallback pricing\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    pool = await create_db_pool(dsn=dsn)\n\n    with patch(\"builtins.print\") as mock_print:\n        unknown_model = \"unknown-model-name\"\n        response = await create_usage_record(\n            developer_id=developer_id,\n            model=unknown_model,\n            prompt_tokens=100,\n            completion_tokens=100,\n            connection_pool=pool,\n        )\n    actual_call = mock_print.call_args_list[-1].args[0]\n    total_cost = AVG_INPUT_COST_PER_TOKEN * 100 + AVG_OUTPUT_COST_PER_TOKEN * 100\n\n    expected_call = (\n        f\"No fallback pricing found for model {unknown_model}, using avg costs: {total_cost}\"\n    )\n\n    assert len(response) == 1\n    record = response[0]\n    assert record[\"cost\"] == Decimal(str(total_cost)).quantize(Decimal(\"0.000001\"))\n    assert record[\"estimated\"] is True\n    assert expected_call == actual_call\n\n\n@test(\"utils: track_usage with response.usage available\")\nasync def _(developer_id=test_developer_id) -> None:\n    with patch(\"agents_api.common.utils.usage.create_usage_record\") as mock_create_usage_record:\n        response = ModelResponse(\n            usage=Usage(\n                prompt_tokens=100,\n                completion_tokens=100,\n            ),\n        )\n\n        await track_usage(\n            developer_id=developer_id,\n            model=\"gpt-4o-mini\",\n            messages=[],\n            response=response,\n        )\n        call_args = mock_create_usage_record.call_args[1]\n        assert call_args[\"prompt_tokens\"] == 100\n        assert call_args[\"completion_tokens\"] == 100\n\n\n@test(\"utils: is_llama_based_model returns True for llama models\")\nasync def _() -> None:\n    assert is_llama_based_model(\"llama-3.1-8b-instruct\") is True\n    assert is_llama_based_model(\"meta-llama/llama-4-maverick\") is True\n    assert is_llama_based_model(\"meta-llama/llama-4-maverick:free\") is True\n    assert is_llama_based_model(\"gpt-4o-mini\") is False\n    assert is_llama_based_model(\"claude-3.5-sonnet\") is False\n    assert is_llama_based_model(\"gemini-1.5-pro\") is False\n    assert is_llama_based_model(\"deepseek-chat\") is False\n\n\n@test(\"utils: track_usage without response.usage\")\nasync def _(developer_id=test_developer_id) -> None:\n    with patch(\"agents_api.common.utils.usage.create_usage_record\") as mock_create_usage_record:\n        response = ModelResponse(\n            usage=None,\n            choices=[\n                {\n                    \"finish_reason\": \"stop\",\n                    \"index\": 0,\n                    \"message\": Message(content=\"Hello, world!\", role=\"assistant\"),\n                }\n            ],\n        )\n        response.usage = None\n        messages = [{\"role\": \"user\", \"content\": \"Hello, world!\"}]\n\n        prompt_tokens = token_counter(model=\"gpt-4o-mini\", messages=messages)\n        completion_tokens = token_counter(\n            model=\"gpt-4o-mini\",\n            messages=[{\"content\": choice.message.content} for choice in response.choices],\n        )\n\n        await track_usage(\n            developer_id=developer_id,\n            model=\"gpt-4o-mini\",\n            messages=messages,\n            response=response,\n        )\n\n        call_args = mock_create_usage_record.call_args[1]\n        assert call_args[\"prompt_tokens\"] == prompt_tokens\n        assert call_args[\"completion_tokens\"] == completion_tokens\n\n\n@test(\"utils: track_embedding_usage with response.usage\")\nasync def _(developer_id=test_developer_id) -> None:\n    with patch(\"agents_api.common.utils.usage.create_usage_record\") as mock_create_usage_record:\n        response = ModelResponse(\n            usage=Usage(\n                prompt_tokens=150,\n                completion_tokens=0,\n            ),\n        )\n\n        inputs = [\"This is a test input for embedding\"]\n\n        await track_embedding_usage(\n            developer_id=developer_id,\n            model=\"text-embedding-3-large\",\n            inputs=inputs,\n            response=response,\n        )\n\n        call_args = mock_create_usage_record.call_args[1]\n        assert call_args[\"prompt_tokens\"] == 150\n        assert call_args[\"completion_tokens\"] == 0\n        assert call_args[\"model\"] == \"text-embedding-3-large\"\n\n\n@test(\"utils: track_embedding_usage without response.usage\")\nasync def _(developer_id=test_developer_id) -> None:\n    with patch(\"agents_api.common.utils.usage.create_usage_record\") as mock_create_usage_record:\n        response = ModelResponse()\n        response.usage = None\n\n        inputs = [\"First test input\", \"Second test input\"]\n\n        # Calculate expected tokens manually\n        expected_tokens = sum(\n            token_counter(model=\"text-embedding-3-large\", text=input_text)\n            for input_text in inputs\n        )\n\n        await track_embedding_usage(\n            developer_id=developer_id,\n            model=\"text-embedding-3-large\",\n            inputs=inputs,\n            response=response,\n        )\n\n        call_args = mock_create_usage_record.call_args[1]\n        assert call_args[\"prompt_tokens\"] == expected_tokens\n        assert call_args[\"completion_tokens\"] == 0\n        assert call_args[\"model\"] == \"text-embedding-3-large\"\n\n\n@test(\"utils: track_usage with llama model\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id) -> None:\n    with patch(\"agents_api.queries.usage.create_usage_record.llama_model_multiplier\", 0.5):\n        pool = await create_db_pool(dsn=dsn)\n        response = await create_usage_record(\n            developer_id=developer_id,\n            model=\"llama-3.1-8b-instruct\",\n            prompt_tokens=100,\n            completion_tokens=100,\n            is_llama_model=False,\n            connection_pool=pool,\n        )\n\n        assert len(response) == 1\n        record = response[0]\n        record_cost_without_multiplier = record[\"cost\"]\n\n        response = await create_usage_record(\n            developer_id=developer_id,\n            model=\"llama-3.1-8b-instruct\",\n            prompt_tokens=100,\n            completion_tokens=100,\n            is_llama_model=True,\n            connection_pool=pool,\n        )\n\n        assert len(response) == 1\n        record = response[0]\n        record_cost_with_multiplier = record[\"cost\"]\n\n        expected_cost = record_cost_without_multiplier * Decimal(\"0.5\")\n        tolerance = Decimal(\"0.000001\")\n        assert abs(record_cost_with_multiplier - expected_cost) <= tolerance\n"
  },
  {
    "path": "src/agents-api/tests/test_user_queries.py",
    "content": "\"\"\"\nThis module contains tests for SQL query generation functions in the users module.\nTests verify the SQL queries without actually executing them against a database.\n\"\"\"\n\nfrom uuid import UUID\n\nfrom agents_api.autogen.openapi_model import (\n    CreateOrUpdateUserRequest,\n    CreateUserRequest,\n    PatchUserRequest,\n    ResourceDeletedResponse,\n    UpdateUserRequest,\n    User,\n)\nfrom agents_api.clients.pg import create_db_pool\nfrom agents_api.queries.users import (\n    create_or_update_user,\n    create_user,\n    delete_user,\n    get_user,\n    list_users,\n    patch_user,\n    update_user,\n)\nfrom fastapi.exceptions import HTTPException\nfrom uuid_extensions import uuid7\nfrom ward import raises, test\n\nfrom tests.fixtures import pg_dsn, test_developer_id, test_project, test_user\n\n# Test UUIDs for consistent testing\nTEST_DEVELOPER_ID = UUID(\"123e4567-e89b-12d3-a456-426614174000\")\nTEST_USER_ID = UUID(\"987e6543-e21b-12d3-a456-426614174000\")\n\n\n@test(\"query: create user sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that a user can be successfully created.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    user = await create_user(\n        developer_id=developer_id,\n        data=CreateUserRequest(\n            name=\"test user\",\n            about=\"test user about\",\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    assert isinstance(user, User)\n    assert user.id is not None\n    assert user.name == \"test user\"\n    assert user.about == \"test user about\"\n\n\n@test(\"query: create user with project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project):\n    \"\"\"Test that a user can be successfully created with a project.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    user = await create_user(\n        developer_id=developer_id,\n        data=CreateUserRequest(\n            name=\"test user with project\",\n            about=\"test user about\",\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    assert isinstance(user, User)\n    assert user.id is not None\n    assert user.project == project.canonical_name\n\n\n@test(\"query: create user with invalid project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that creating a user with an invalid project raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(HTTPException) as exc:\n        await create_user(\n            developer_id=developer_id,\n            data=CreateUserRequest(\n                name=\"test user with invalid project\",\n                about=\"test user about\",\n                project=\"invalid_project\",\n            ),\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 404\n    assert \"Project 'invalid_project' not found\" in exc.raised.detail\n\n\n@test(\"query: create or update user sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that a user can be successfully created or updated.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    user = await create_or_update_user(\n        developer_id=developer_id,\n        user_id=uuid7(),\n        data=CreateOrUpdateUserRequest(\n            name=\"test user\",\n            about=\"test user about\",\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    assert isinstance(user, User)\n    assert user.id is not None\n    assert user.name == \"test user\"\n    assert user.about == \"test user about\"\n\n\n@test(\"query: create or update user with project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project):\n    \"\"\"Test that a user can be successfully created or updated with a project.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    user = await create_or_update_user(\n        developer_id=developer_id,\n        user_id=uuid7(),\n        data=CreateOrUpdateUserRequest(\n            name=\"test user with project\",\n            about=\"test user about\",\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    assert isinstance(user, User)\n    assert user.id is not None\n    assert user.project == project.canonical_name\n\n\n@test(\"query: update user sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user):\n    \"\"\"Test that an existing user's information can be successfully updated.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    update_result = await update_user(\n        user_id=user.id,\n        developer_id=developer_id,\n        data=UpdateUserRequest(\n            name=\"updated user\",\n            about=\"updated user about\",\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert update_result is not None\n    assert isinstance(update_result, User)\n    assert update_result.updated_at > user.created_at\n\n\n@test(\"query: update user with project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user, project=test_project):\n    \"\"\"Test that an existing user's information can be successfully updated with a project.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    update_result = await update_user(\n        user_id=user.id,\n        developer_id=developer_id,\n        data=UpdateUserRequest(\n            name=\"updated user with project\",\n            about=\"updated user about\",\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    # Verify the user was updated by listing all users\n    users = await list_users(\n        developer_id=developer_id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert users is not None\n    assert isinstance(users, list)\n    assert len(users) > 0\n\n    # Find the updated user in the list\n    updated_user = next((u for u in users if u.id == user.id), None)\n    assert updated_user is not None\n    assert updated_user.name == \"updated user with project\"\n    assert updated_user.project == project.canonical_name\n\n    assert update_result is not None\n    assert isinstance(update_result, User)\n    assert update_result.updated_at > user.created_at\n    assert update_result.project == project.canonical_name\n\n\n@test(\"query: update user, project does not exist\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user):\n    \"\"\"Test that an existing user's information can be successfully updated with a project that does not exist.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await update_user(\n            user_id=user.id,\n            developer_id=developer_id,\n            data=UpdateUserRequest(\n                name=\"updated user with project\",\n                about=\"updated user about\",\n                project=\"invalid_project\",\n            ),\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 404\n    assert \"Project 'invalid_project' not found\" in exc.raised.detail\n\n\n@test(\"query: get user not exists sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that retrieving a non-existent user returns an empty result.\"\"\"\n\n    user_id = uuid7()\n\n    pool = await create_db_pool(dsn=dsn)\n\n    with raises(Exception):\n        await get_user(\n            user_id=user_id,\n            developer_id=developer_id,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n\n@test(\"query: get user exists sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user):\n    \"\"\"Test that retrieving an existing user returns the correct user information.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await get_user(\n        user_id=user.id,\n        developer_id=developer_id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert result is not None\n    assert isinstance(result, User)\n\n\n@test(\"query: list users sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user):\n    \"\"\"Test that listing users returns a collection of user information.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    result = await list_users(\n        developer_id=developer_id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert isinstance(result, list)\n    assert len(result) >= 1\n    assert all(isinstance(user, User) for user in result)\n\n\n@test(\"query: list users with project filter sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, project=test_project):\n    \"\"\"Test that listing users with a project filter returns the correct users.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n\n    # First create a user with the specific project\n    await create_user(\n        developer_id=developer_id,\n        data=CreateUserRequest(\n            name=\"test user for project filter\",\n            about=\"test user about\",\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    # Now fetch with project filter\n    result = await list_users(\n        developer_id=developer_id, project=project.canonical_name, connection_pool=pool\n    )  # type: ignore[not-callable]\n\n    assert isinstance(result, list)\n    assert all(isinstance(user, User) for user in result)\n    assert all(user.project == project.canonical_name for user in result)\n\n\n@test(\"query: list users sql, invalid limit\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing users with an invalid limit raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_users(\n            developer_id=developer_id,\n            limit=101,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n    with raises(HTTPException) as exc:\n        await list_users(\n            developer_id=developer_id,\n            limit=0,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Limit must be between 1 and 100\"\n\n\n@test(\"query: list users sql, invalid offset\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing users with an invalid offset raises an exception.\"\"\"\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_users(\n            developer_id=developer_id,\n            connection_pool=pool,\n            offset=-1,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Offset must be non-negative\"\n\n\n@test(\"query: list users sql, invalid sort by\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing users with an invalid sort by raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_users(\n            developer_id=developer_id,\n            connection_pool=pool,\n            sort_by=\"invalid\",\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort field\"\n\n\n@test(\"query: list users sql, invalid sort direction\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id):\n    \"\"\"Test that listing users with an invalid sort direction raises an exception.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await list_users(\n            developer_id=developer_id,\n            connection_pool=pool,\n            sort_by=\"created_at\",\n            direction=\"invalid\",\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 400\n    assert exc.raised.detail == \"Invalid sort direction\"\n\n\n@test(\"query: patch user sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user):\n    \"\"\"Test that a user can be successfully patched.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    patch_result = await patch_user(\n        developer_id=developer_id,\n        user_id=user.id,\n        data=PatchUserRequest(\n            name=\"patched user\",\n            about=\"patched user about\",\n            metadata={\"test\": \"metadata\"},\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    assert patch_result is not None\n    assert isinstance(patch_result, User)\n    assert patch_result.updated_at > user.created_at\n\n\n@test(\"query: patch user with project sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user, project=test_project):\n    \"\"\"Test that a user can be successfully patched with a project.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    patch_result = await patch_user(\n        developer_id=developer_id,\n        user_id=user.id,\n        data=PatchUserRequest(\n            name=\"patched user with project\",\n            about=\"patched user about\",\n            metadata={\"test\": \"metadata\"},\n            project=project.canonical_name,\n        ),\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n    # Verify the user was updated by listing all users\n    users = await list_users(\n        developer_id=developer_id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert users is not None\n    assert isinstance(users, list)\n    assert len(users) > 0\n\n    # Find the updated user in the list\n    updated_user = next((u for u in users if u.id == user.id), None)\n    assert updated_user is not None\n    assert updated_user.name == \"patched user with project\"\n    assert updated_user.project == project.canonical_name\n\n    assert patch_result is not None\n    assert isinstance(patch_result, User)\n    assert patch_result.updated_at > user.created_at\n    assert patch_result.project == project.canonical_name\n\n\n@test(\"query: patch user, project does not exist\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user):\n    \"\"\"Test that a user can be successfully patched with a project that does not exist.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    with raises(HTTPException) as exc:\n        await patch_user(\n            developer_id=developer_id,\n            user_id=user.id,\n            data=PatchUserRequest(\n                name=\"patched user with project\",\n                about=\"patched user about\",\n                metadata={\"test\": \"metadata\"},\n                project=\"invalid_project\",\n            ),\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n\n    assert exc.raised.status_code == 404\n    assert \"Project 'invalid_project' not found\" in exc.raised.detail\n\n\n@test(\"query: delete user sql\")\nasync def _(dsn=pg_dsn, developer_id=test_developer_id, user=test_user):\n    \"\"\"Test that a user can be successfully deleted.\"\"\"\n\n    pool = await create_db_pool(dsn=dsn)\n    delete_result = await delete_user(\n        developer_id=developer_id,\n        user_id=user.id,\n        connection_pool=pool,\n    )  # type: ignore[not-callable]\n\n    assert delete_result is not None\n    assert isinstance(delete_result, ResourceDeletedResponse)\n\n    # Verify the user no longer exists\n    try:\n        await get_user(\n            developer_id=developer_id,\n            user_id=user.id,\n            connection_pool=pool,\n        )  # type: ignore[not-callable]\n    except Exception:\n        pass\n    else:\n        assert False, \"Expected an exception to be raised when retrieving a deleted user.\"\n"
  },
  {
    "path": "src/agents-api/tests/test_user_routes.py",
    "content": "# Tests for user routes\n\nfrom uuid_extensions import uuid7\nfrom ward import test\n\nfrom tests.fixtures import client, make_request, test_project, test_user\n\n\n@test(\"route: unauthorized should fail\")\ndef _(client=client):\n    data = {\n        \"name\": \"test user\",\n        \"about\": \"test user about\",\n    }\n\n    response = client.request(\n        method=\"POST\",\n        url=\"/users\",\n        json=data,\n    )\n\n    assert response.status_code == 403\n\n\n@test(\"route: create user\")\ndef _(make_request=make_request):\n    data = {\n        \"name\": \"test user\",\n        \"about\": \"test user about\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/users\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n\n\n@test(\"route: create user with project\")\ndef _(make_request=make_request, project=test_project):\n    data = {\n        \"name\": \"test user with project\",\n        \"about\": \"test user about\",\n        \"project\": project.canonical_name,\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/users\",\n        json=data,\n    )\n\n    assert response.status_code == 201\n    assert response.json()[\"project\"] == project.canonical_name\n\n\n@test(\"route: get user not exists\")\ndef _(make_request=make_request):\n    user_id = str(uuid7())\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user_id}\",\n    )\n\n    assert response.status_code == 404\n\n\n@test(\"route: get user exists\")\ndef _(make_request=make_request, user=test_user):\n    user_id = str(user.id)\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user_id}\",\n    )\n\n    assert response.status_code != 404\n\n\n@test(\"route: delete user\")\ndef _(make_request=make_request):\n    data = {\n        \"name\": \"test user\",\n        \"about\": \"test user about\",\n    }\n\n    response = make_request(\n        method=\"POST\",\n        url=\"/users\",\n        json=data,\n    )\n    user_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"DELETE\",\n        url=f\"/users/{user_id}\",\n    )\n\n    assert response.status_code == 202\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user_id}\",\n    )\n\n    assert response.status_code == 404\n\n\n@test(\"route: update user\")\ndef _(make_request=make_request, user=test_user):\n    data = {\n        \"name\": \"updated user\",\n        \"about\": \"updated user about\",\n    }\n\n    user_id = str(user.id)\n    response = make_request(\n        method=\"PUT\",\n        url=f\"/users/{user_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n    user_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user_id}\",\n    )\n\n    assert response.status_code == 200\n    user = response.json()\n\n    assert user[\"name\"] == \"updated user\"\n    assert user[\"about\"] == \"updated user about\"\n\n\n@test(\"route: update user with project\")\ndef _(make_request=make_request, user=test_user, project=test_project):\n    data = {\n        \"name\": \"updated user with project\",\n        \"about\": \"updated user about\",\n        \"project\": project.canonical_name,\n    }\n\n    user_id = str(user.id)\n    response = make_request(\n        method=\"PUT\",\n        url=f\"/users/{user_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n    user_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user_id}\",\n    )\n\n    assert response.status_code == 200\n    user = response.json()\n\n    assert user[\"name\"] == \"updated user with project\"\n    assert user[\"about\"] == \"updated user about\"\n    assert user[\"project\"] == project.canonical_name\n\n\n@test(\"query: patch user\")\ndef _(make_request=make_request, user=test_user):\n    user_id = str(user.id)\n\n    data = {\n        \"name\": \"patched user\",\n        \"about\": \"patched user about\",\n    }\n\n    response = make_request(\n        method=\"PATCH\",\n        url=f\"/users/{user_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n    user_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user_id}\",\n    )\n\n    assert response.status_code == 200\n    user = response.json()\n\n    assert user[\"name\"] == \"patched user\"\n    assert user[\"about\"] == \"patched user about\"\n\n\n@test(\"query: patch user with project\")\ndef _(make_request=make_request, user=test_user, project=test_project):\n    user_id = str(user.id)\n\n    data = {\n        \"name\": \"patched user with project\",\n        \"about\": \"patched user about\",\n        \"project\": project.canonical_name,\n    }\n\n    response = make_request(\n        method=\"PATCH\",\n        url=f\"/users/{user_id}\",\n        json=data,\n    )\n\n    assert response.status_code == 200\n\n    user_id = response.json()[\"id\"]\n\n    response = make_request(\n        method=\"GET\",\n        url=f\"/users/{user_id}\",\n    )\n\n    assert response.status_code == 200\n    user = response.json()\n\n    assert user[\"name\"] == \"patched user with project\"\n    assert user[\"about\"] == \"patched user about\"\n    assert user[\"project\"] == project.canonical_name\n\n\n@test(\"query: list users\")\ndef _(make_request=make_request):\n    response = make_request(\n        method=\"GET\",\n        url=\"/users\",\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    users = response[\"items\"]\n\n    assert isinstance(users, list)\n    assert len(users) > 0\n\n\n@test(\"query: list users with project filter\")\ndef _(make_request=make_request, project=test_project):\n    # First create a user with the project\n    data = {\n        \"name\": \"test user for project filter\",\n        \"about\": \"test user about\",\n        \"project\": project.canonical_name,\n    }\n\n    make_request(\n        method=\"POST\",\n        url=\"/users\",\n        json=data,\n    )\n\n    # Then list users with project filter\n    response = make_request(\n        method=\"GET\",\n        url=\"/users\",\n        params={\n            \"project\": project.canonical_name,\n        },\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    users = response[\"items\"]\n\n    assert isinstance(users, list)\n    assert len(users) > 0\n    assert any(user[\"project\"] == project.canonical_name for user in users)\n\n\n@test(\"query: list users with right metadata filter\")\ndef _(make_request=make_request, user=test_user):\n    response = make_request(\n        method=\"GET\",\n        url=\"/users\",\n        params={\n            \"metadata_filter\": {\"test\": \"test\"},\n        },\n    )\n\n    assert response.status_code == 200\n    response = response.json()\n    users = response[\"items\"]\n\n    assert isinstance(users, list)\n    assert len(users) > 0\n"
  },
  {
    "path": "src/agents-api/tests/test_validation_errors.py",
    "content": "\"\"\"Tests for validation error handlers and suggestion generation in web.py.\"\"\"\n\nfrom agents_api.web import _format_location, _get_error_suggestions\nfrom ward import test\n\nfrom .fixtures import make_request\n\n\n@test(\"format_location: formats error location paths correctly\")\nasync def _():\n    \"\"\"Test the _format_location function formats error locations correctly.\"\"\"\n    # Test empty location\n    assert _format_location([]) == \"\"\n\n    # Test with 'body' prefix that should be removed\n    assert _format_location([\"body\", \"name\"]) == \"name\"\n\n    # Test with nested properties\n    assert _format_location([\"body\", \"user\", \"name\"]) == \"user.name\"\n\n    # Test with array indices\n    assert _format_location([\"body\", \"items\", 0, \"name\"]) == \"items[0].name\"\n\n    # Test more complex nesting\n    assert (\n        _format_location([\"body\", \"data\", \"users\", 2, \"addresses\", 1, \"street\"])\n        == \"data.users[2].addresses[1].street\"\n    )\n\n\n@test(\"get_error_suggestions: generates helpful suggestions for missing fields\")\nasync def _():\n    \"\"\"Test the _get_error_suggestions function generates useful suggestions for missing fields.\"\"\"\n    error = {\"type\": \"missing\"}\n    suggestions = _get_error_suggestions(error)\n\n    assert \"fix\" in suggestions\n    assert \"example\" in suggestions\n    assert \"Add this required field\" in suggestions[\"fix\"]\n\n\n@test(\"get_error_suggestions: generates helpful suggestions for type errors\")\nasync def _():\n    \"\"\"Test the _get_error_suggestions function generates useful suggestions for type errors.\"\"\"\n    # String type error\n    error = {\"type\": \"type_error\", \"expected_type\": \"string\"}\n    suggestions = _get_error_suggestions(error)\n\n    assert \"fix\" in suggestions\n    assert \"example\" in suggestions\n    assert \"string\" in suggestions[\"fix\"]\n    assert suggestions[\"example\"] == '\"text value\"'\n\n    # Integer type error\n    error = {\"type\": \"type_error\", \"expected_type\": \"integer\"}\n    suggestions = _get_error_suggestions(error)\n\n    assert \"fix\" in suggestions\n    assert \"example\" in suggestions\n    assert \"integer\" in suggestions[\"fix\"]\n    assert suggestions[\"example\"] == \"42\"\n\n\n@test(\"get_error_suggestions: generates helpful suggestions for string length errors\")\nasync def _():\n    \"\"\"Test the _get_error_suggestions function generates useful suggestions for string length errors.\"\"\"\n    # Min length error\n    error = {\"type\": \"value_error.str.min_length\", \"limit_value\": 5}\n    suggestions = _get_error_suggestions(error)\n\n    assert \"fix\" in suggestions\n    assert \"example\" in suggestions\n    assert \"at least 5 characters\" in suggestions[\"fix\"]\n    assert suggestions[\"example\"] == \"xxxxx\"\n\n    # Max length error\n    error = {\"type\": \"value_error.str.max_length\", \"limit_value\": 10}\n    suggestions = _get_error_suggestions(error)\n\n    assert \"fix\" in suggestions\n    assert \"note\" in suggestions\n    assert \"at most 10 characters\" in suggestions[\"fix\"]\n\n\n@test(\"get_error_suggestions: generates helpful suggestions for number range errors\")\nasync def _():\n    \"\"\"Test the _get_error_suggestions function generates useful suggestions for number range errors.\"\"\"\n    # Min value error\n    error = {\"type\": \"value_error.number.not_ge\", \"limit_value\": 5}\n    suggestions = _get_error_suggestions(error)\n\n    assert \"fix\" in suggestions\n    assert \"example\" in suggestions\n    assert \"greater than or equal to 5\" in suggestions[\"fix\"]\n    assert suggestions[\"example\"] == \"5\"\n\n    # Max value error\n    error = {\"type\": \"value_error.number.not_le\", \"limit_value\": 100}\n    suggestions = _get_error_suggestions(error)\n\n    assert \"fix\" in suggestions\n    assert \"example\" in suggestions\n    assert \"less than or equal to 100\" in suggestions[\"fix\"]\n    assert suggestions[\"example\"] == \"100\"\n\n\n@test(\"validation_error_handler: returns formatted error response for validation errors\")\nasync def _(make_request=make_request):\n    \"\"\"Test that validation errors return a well-formatted error response with helpful suggestions.\"\"\"\n    # Create an invalid request to trigger a validation error\n    response = make_request(\n        method=\"POST\",\n        url=\"/agents\",\n        json={\n            # Missing required 'name' field\n            # 'name': 'Test Agent',\n            \"about\": \"Test agent description\",\n            \"model\": \"invalid-model-id\",  # Invalid model ID\n            \"metadata\": \"not-an-object\",  # Type error, should be an object\n        },\n    )\n\n    # Verify response has expected status code\n    assert response.status_code == 422\n\n    # Verify response has the correct structure\n    data = response.json()\n    assert \"error\" in data\n    assert \"message\" in data[\"error\"]\n    assert \"details\" in data[\"error\"]\n    assert \"code\" in data[\"error\"]\n\n    # Verify error details contain helpful suggestions\n    details = data[\"error\"][\"details\"]\n    assert isinstance(details, list)\n    assert len(details) > 0\n\n    # Check for at least one error with a fix suggestion\n    has_fix = False\n    for error in details:\n        if \"fix\" in error:\n            has_fix = True\n            break\n\n    assert has_fix, \"Expected at least one error with a 'fix' suggestion\"\n\n\n@test(\n    \"validation_error_suggestions: function generates helpful suggestions for all error types\"\n)\nasync def _():\n    \"\"\"Test that _get_error_suggestions handles all potential error types appropriately.\"\"\"\n    from agents_api.web import _get_error_suggestions\n\n    # Test a variety of error types to ensure they all return helpful suggestions\n    error_types = [\n        \"missing\",\n        \"type_error\",\n        \"value_error.missing\",\n        \"value_error.extra\",\n        \"value_error.const\",\n        \"value_error.str.min_length\",\n        \"value_error.str.max_length\",\n        \"value_error.any_str.min_length\",\n        \"value_error.any_str.max_length\",\n        \"value_error.number.not_ge\",\n        \"value_error.number.not_le\",\n        \"value_error.number.not_gt\",\n        \"value_error.number.not_lt\",\n        \"enum\",\n        \"json\",\n        \"uuid\",\n        \"datetime\",\n        \"url\",\n        \"email\",\n    ]\n\n    # All these error types should generate non-empty suggestions\n    for error_type in error_types:\n        error = {\"type\": error_type}\n\n        # Add additional info for specific error types\n        if (\n            \"limit_value\" in error_type\n            or \"min_length\" in error_type\n            or \"max_length\" in error_type\n            or \"not_ge\" in error_type\n            or \"not_le\" in error_type\n            or \"not_gt\" in error_type\n            or \"not_lt\" in error_type\n        ):\n            error[\"limit_value\"] = 10\n        elif \"const\" in error_type or \"enum\" in error_type:\n            error[\"permitted\"] = [\"value1\", \"value2\"]\n        elif \"expected_type\" in error_type or error_type == \"type_error\":\n            error[\"expected_type\"] = \"string\"\n\n        suggestions = _get_error_suggestions(error)\n\n        # Each error type should generate at least some suggestions\n        assert suggestions, f\"No suggestions generated for error type: {error_type}\"\n\n        # At least the \"fix\" key should be present\n        assert \"fix\" in suggestions, f\"No 'fix' suggestion for error type: {error_type}\"\n"
  },
  {
    "path": "src/agents-api/tests/test_workflow_helpers.py",
    "content": "import uuid\nfrom unittest.mock import AsyncMock, patch\n\nfrom agents_api.autogen.openapi_model import (\n    Agent,\n    Execution,\n    MapReduceStep,\n    PromptItem,\n    PromptStep,\n    TaskSpecDef,\n    TransitionTarget,\n    Workflow,\n)\nfrom agents_api.common.protocol.tasks import (\n    ExecutionInput,\n    PartialTransition,\n    StepContext,\n    WorkflowResult,\n)\nfrom agents_api.common.utils.datetime import utcnow\nfrom agents_api.workflows.task_execution.helpers import execute_map_reduce_step_parallel\nfrom ward import raises, test\n\n\n@test(\"execute_map_reduce_step_parallel: parallelism must be greater than 1\")\nasync def _():\n    async def _resp():\n        return \"response\"\n\n    subworkflow_step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n\n    step = MapReduceStep(\n        kind_=\"map_reduce\",\n        map=subworkflow_step,\n        over=\"$ [1, 2, 3]\",\n        parallelism=1,\n    )\n\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            name=\"test agent\",\n            created_at=utcnow(),\n            updated_at=utcnow(),\n        ),\n        agent_tools=[],\n        arguments={},\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            status=\"running\",\n            task_id=uuid.uuid4(),\n            input={},\n        ),\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n\n    context = StepContext(\n        execution_input=execution_input,\n        current_input={\"current_input\": \"value 1\"},\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    with (\n        patch(\"agents_api.workflows.task_execution.helpers.workflow\") as workflow,\n        patch(\"agents_api.workflows.task_execution.helpers.continue_as_child\"),\n        # Also patch execute_map_reduce_step as it gets called when parallelism is 1\n        patch(\n            \"agents_api.workflows.task_execution.helpers.execute_map_reduce_step\"\n        ) as execute_map_reduce_step_mock,\n    ):\n        # This is the function that gets called when parallelism is 1\n        execute_map_reduce_step_mock.side_effect = AssertionError(\n            \"Parallelism must be greater than 1\"\n        )\n\n        # Mock run function that will be returned by lambda in continue_as_child\n        run_mock = AsyncMock()\n\n        # Mock lambda that creates child workflow or continue as new\n        workflow.continue_as_new = run_mock\n        workflow.execute_child_workflow.return_value = run_mock\n        workflow.execute_activity.return_value = _resp()\n\n        with raises(AssertionError):\n            await execute_map_reduce_step_parallel(\n                context=context,\n                map_defn=step.map,\n                execution_input=execution_input,\n                items=[\"1\", \"2\", \"3\"],\n                current_input={},\n                parallelism=1,\n            )\n\n\n@test(\"execute_map_reduce_step_parallel: returned true\")\nasync def _():\n    async def _resp():\n        return \"response\"\n\n    # Create the workflow results we'll use\n    result1 = WorkflowResult(\n        returned=False,\n        state=PartialTransition(output=\"response 1\"),\n    )\n\n    result2 = WorkflowResult(\n        returned=True,\n        state=PartialTransition(output=\"response 2\"),\n    )\n\n    subworkflow_step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n\n    step = MapReduceStep(\n        kind_=\"map_reduce\",\n        map=subworkflow_step,\n        over=\"$ [1, 2]\",\n        parallelism=100,\n    )\n\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            name=\"test agent\",\n            created_at=utcnow(),\n            updated_at=utcnow(),\n        ),\n        agent_tools=[],\n        arguments={},\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            status=\"running\",\n            task_id=uuid.uuid4(),\n            input={},\n        ),\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n\n    context = StepContext(\n        execution_input=execution_input,\n        current_input={\"current_input\": \"value 1\"},\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    with (\n        patch(\"agents_api.workflows.task_execution.helpers.workflow\") as workflow,\n        patch(\n            \"agents_api.workflows.task_execution.helpers.continue_as_child\"\n        ) as continue_as_child_mock,\n    ):\n        # Mock continue_as_child directly to return our workflow results\n        # First call returns result1, second call returns result2\n        continue_as_child_mock.side_effect = [result1, result2]\n        workflow.execute_activity.return_value = _resp()\n\n        result = await execute_map_reduce_step_parallel(\n            context=context,\n            map_defn=step.map,\n            execution_input=execution_input,\n            items=[1, 2],\n            current_input={},\n            parallelism=100,\n        )\n\n        workflow_result = WorkflowResult(\n            returned=True,\n            state=PartialTransition(output=\"response 2\"),\n        )\n\n        assert result == workflow_result\n\n\n@test(\"execute_map_reduce_step_parallel: returned false\")\nasync def _():\n    async def _resp():\n        return [\"response 1\", \"response 2\"]\n\n    # Create the workflow results we'll use\n    result1 = WorkflowResult(\n        returned=False,\n        state=PartialTransition(output=\"response 1\"),\n    )\n\n    result2 = WorkflowResult(\n        returned=False,\n        state=PartialTransition(output=\"response 2\"),\n    )\n\n    subworkflow_step = PromptStep(prompt=[PromptItem(content=\"hi there\", role=\"user\")])\n\n    step = MapReduceStep(\n        kind_=\"map_reduce\",\n        map=subworkflow_step,\n        over=\"$ [1, 2]\",\n        parallelism=100,\n    )\n\n    execution_input = ExecutionInput(\n        developer_id=uuid.uuid4(),\n        agent=Agent(\n            id=uuid.uuid4(),\n            name=\"test agent\",\n            created_at=utcnow(),\n            updated_at=utcnow(),\n        ),\n        agent_tools=[],\n        arguments={},\n        execution=Execution(\n            id=uuid.uuid4(),\n            created_at=utcnow(),\n            updated_at=utcnow(),\n            status=\"running\",\n            task_id=uuid.uuid4(),\n            input={},\n        ),\n        task=TaskSpecDef(\n            name=\"task1\",\n            tools=[],\n            workflows=[Workflow(name=\"main\", steps=[step])],\n        ),\n    )\n\n    context = StepContext(\n        execution_input=execution_input,\n        current_input={\"current_input\": \"value 1\"},\n        cursor=TransitionTarget(\n            workflow=\"main\",\n            step=0,\n            scope_id=uuid.uuid4(),\n        ),\n    )\n    with (\n        patch(\"agents_api.workflows.task_execution.helpers.workflow\") as workflow,\n        patch(\n            \"agents_api.workflows.task_execution.helpers.continue_as_child\"\n        ) as continue_as_child_mock,\n    ):\n        # Mock continue_as_child directly to return our workflow results\n        # First call returns result1, second call returns result2\n        continue_as_child_mock.side_effect = [result1, result2]\n        workflow.execute_activity.return_value = _resp()\n\n        result = await execute_map_reduce_step_parallel(\n            context=context,\n            map_defn=step.map,\n            execution_input=execution_input,\n            items=[1, 2],\n            current_input={},\n            parallelism=100,\n        )\n\n        workflow_result = WorkflowResult(\n            returned=False,\n            state=PartialTransition(output=[\"response 1\", \"response 2\"]),\n        )\n\n        assert result == workflow_result\n"
  },
  {
    "path": "src/agents-api/tests/test_workflow_routes.py",
    "content": "# Tests for task queries\n\nfrom uuid_extensions import uuid7\nfrom ward import test\n\nfrom tests.fixtures import make_request, test_agent\nfrom tests.utils import patch_testing_temporal\n\n\n@test(\"workflow route: evaluate step single\")\nasync def _(\n    make_request=make_request,\n    agent=test_agent,\n):\n    agent_id = str(agent.id)\n    task_id = str(uuid7())\n\n    async with patch_testing_temporal():\n        task_data = {\n            \"name\": \"test task\",\n            \"description\": \"test task about\",\n            \"input_schema\": {\"type\": \"object\", \"additionalProperties\": True},\n            \"main\": [{\"evaluate\": {\"hello\": '\"world\"'}}],\n        }\n\n        make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent_id}/tasks/{task_id}\",\n            json=task_data,\n        ).raise_for_status()\n\n        execution_data = {\"input\": {\"test\": \"input\"}}\n\n        make_request(\n            method=\"POST\",\n            url=f\"/tasks/{task_id}/executions\",\n            json=execution_data,\n        ).raise_for_status()\n\n\n@test(\"workflow route: evaluate step single with yaml\")\nasync def _(\n    make_request=make_request,\n    agent=test_agent,\n):\n    agent_id = str(agent.id)\n\n    async with patch_testing_temporal():\n        task_data = \"\"\"\nname: test task\ndescription: test task about\ninput_schema:\n  type: object\n  additionalProperties: true\n\nmain:\n  - evaluate:\n      hello: '\"world\"'\n\"\"\"\n\n        result = (\n            make_request(\n                method=\"POST\",\n                url=f\"/agents/{agent_id}/tasks\",\n                content=task_data.encode(\"utf-8\"),\n                headers={\"Content-Type\": \"text/yaml\"},\n            )\n            .raise_for_status()\n            .json()\n        )\n\n        task_id = result[\"id\"]\n\n        execution_data = {\"input\": {\"test\": \"input\"}}\n\n        make_request(\n            method=\"POST\",\n            url=f\"/tasks/{task_id}/executions\",\n            json=execution_data,\n        ).raise_for_status()\n\n\n@test(\"workflow route: evaluate step single with yaml - nested\")\nasync def _(\n    make_request=make_request,\n    agent=test_agent,\n):\n    agent_id = str(agent.id)\n\n    async with patch_testing_temporal():\n        task_data = \"\"\"\nname: test task\ndescription: test task about\ninput_schema:\n  type: object\n  additionalProperties: true\n\nmain:\n  - evaluate:\n      hello: '\"world\"'\n      hello2:\n        hello3:\n          hello4: inputs[0]['test']\n\"\"\"\n\n        result = (\n            make_request(\n                method=\"POST\",\n                url=f\"/agents/{agent_id}/tasks\",\n                content=task_data.encode(\"utf-8\"),\n                headers={\"Content-Type\": \"text/yaml\"},\n            )\n            .raise_for_status()\n            .json()\n        )\n\n        task_id = result[\"id\"]\n\n        execution_data = {\"input\": {\"test\": \"input\"}}\n\n        make_request(\n            method=\"POST\",\n            url=f\"/tasks/{task_id}/executions\",\n            json=execution_data,\n        ).raise_for_status()\n\n\n@test(\"workflow route: create or update: evaluate step single with yaml\")\nasync def _(\n    make_request=make_request,\n    agent=test_agent,\n):\n    agent_id = str(agent.id)\n    task_id = str(uuid7())\n\n    async with patch_testing_temporal():\n        task_data = \"\"\"\nname: test task\ndescription: test task about\ninput_schema:\n  type: object\n  additionalProperties: true\n\nmain:\n  - evaluate:\n      hello: '\"world\"'\n\"\"\"\n\n        make_request(\n            method=\"POST\",\n            url=f\"/agents/{agent_id}/tasks/{task_id}\",\n            content=task_data.encode(\"utf-8\"),\n            headers={\"Content-Type\": \"text/yaml\"},\n        ).raise_for_status()\n\n        execution_data = {\"input\": {\"test\": \"input\"}}\n\n        make_request(\n            method=\"POST\",\n            url=f\"/tasks/{task_id}/executions\",\n            json=execution_data,\n        ).raise_for_status()\n"
  },
  {
    "path": "src/agents-api/tests/utils.py",
    "content": "import asyncio\nimport logging\nimport math\nimport os\nimport subprocess\nfrom contextlib import asynccontextmanager, contextmanager\nfrom typing import Any\nfrom unittest.mock import patch\nfrom uuid import UUID\n\nimport pgai\nfrom agents_api.autogen.openapi_model import Transition\nfrom agents_api.common.protocol.tasks import TransitionTarget, TransitionType\nfrom agents_api.common.utils.datetime import utcnow\nfrom agents_api.worker.codec import pydantic_data_converter\nfrom agents_api.worker.worker import create_worker\nfrom fastapi.testclient import TestClient\nfrom litellm.types.utils import ModelResponse\nfrom temporalio.testing import WorkflowEnvironment\nfrom testcontainers.core.container import DockerContainer\nfrom testcontainers.core.waiting_utils import wait_for_logs\nfrom testcontainers.localstack import LocalStackContainer\nfrom testcontainers.postgres import PostgresContainer\nfrom uuid_extensions import uuid7\n\n# Replicated here to prevent circular import\nEMBEDDING_SIZE: int = 1024\n\n\ndef make_vector_with_similarity(n: int = EMBEDDING_SIZE, d: float = 0.5):\n    \"\"\"\n    Returns a list `v` of length `n` such that the cosine similarity\n    between `v` and the all-ones vector of length `n` is approximately d.\n    \"\"\"\n    if not -1.0 <= d <= 1.0:\n        msg = \"d must lie in [-1, 1].\"\n        raise ValueError(msg)\n\n    # Handle special cases exactly:\n    if abs(d - 1.0) < 1e-12:  # d ~ +1\n        return [1.0] * n\n    if abs(d + 1.0) < 1e-12:  # d ~ -1\n        return [-1.0] * n\n    if abs(d) < 1e-12:  # d ~ 0\n        v = [0.0] * n\n        if n >= 2:\n            v[0] = 1.0\n            v[1] = -1.0\n        return v\n\n    sign_d = 1.0 if d >= 0 else -1.0\n\n    # Base part: sign(d)*[1,1,...,1]\n    base = [sign_d] * n\n\n    # Orthogonal unit vector u with sum(u)=0; for simplicity:\n    #   u = [1/sqrt(2), -1/sqrt(2), 0, 0, ..., 0]\n    u = [0.0] * n\n    if n >= 2:\n        u[0] = 1.0 / math.sqrt(2)\n        u[1] = -1.0 / math.sqrt(2)\n    # (if n=1, there's no truly orthogonal vector to [1], so skip)\n\n    # Solve for alpha:\n    # alpha^2 = n*(1 - d^2)/d^2\n    alpha = math.sqrt(n * (1 - d * d)) / abs(d)\n\n    # Construct v\n    v = [0.0] * n\n    for i in range(n):\n        v[i] = base[i] + alpha * u[i]\n\n    return v\n\n\ndef generate_transition(\n    execution_id: UUID = uuid7(),\n    transition_id: UUID = uuid7(),\n    type: TransitionType = \"step\",\n    current_step: TransitionTarget = TransitionTarget(\n        workflow=\"main\",\n        step=0,\n        scope_id=uuid7(),\n    ),\n    next_step: TransitionTarget | None = None,\n    task_token: str | None = None,\n    output: Any = None,\n    label: str | None = None,\n    metadata: dict = {},\n):\n    return Transition(\n        execution_id=execution_id,\n        id=transition_id,\n        type=type,\n        current=current_step,\n        next=next_step,\n        task_token=task_token,\n        output=output,\n        label=label,\n        created_at=utcnow(),\n        updated_at=utcnow(),\n        metadata=metadata,\n    )\n\n\n@asynccontextmanager\nasync def patch_testing_temporal():\n    # Set log level to ERROR to avoid spamming the console\n    logger = logging.getLogger(\"temporalio\")\n    previous_log_level = logger.getEffectiveLevel()\n\n    logger.setLevel(logging.ERROR)\n\n    # Start a local Temporal environment\n    async with await WorkflowEnvironment.start_time_skipping(\n        data_converter=pydantic_data_converter,\n    ) as env:\n        # Create a worker with our workflows and start it\n        worker = create_worker(client=env.client)\n        env.worker_task = asyncio.create_task(worker.run())\n\n        # Mock the Temporal client\n        mock_client = worker.client\n\n        with patch(\"agents_api.clients.temporal.get_client\") as mock_get_client:\n            mock_get_client.return_value = mock_client\n\n            # Yield the worker and the mock client <---\n            yield worker, mock_get_client\n\n        # Shutdown the worker\n        await worker.shutdown()\n\n    # Reset log level\n    logger.setLevel(previous_log_level)\n\n\n@asynccontextmanager\nasync def patch_http_client_with_temporal(*, postgres_pool, developer_id):\n    async with patch_testing_temporal() as (_worker, mock_get_client):\n        from agents_api.env import api_key, api_key_header_name\n        from agents_api.web import app\n\n        client = TestClient(app=app)\n        app.state.postgres_pool = postgres_pool\n\n        def make_request(method, url, **kwargs):\n            headers = kwargs.pop(\"headers\", {})\n            headers = {\n                **headers,\n                \"X-Developer-Id\": str(developer_id),\n                api_key_header_name: api_key,\n            }\n\n            return client.request(method, url, headers=headers, **kwargs)\n\n        temporal_client = await mock_get_client()\n        yield make_request, temporal_client\n\n\n@contextmanager\ndef patch_embed_acompletion(output={\"role\": \"assistant\", \"content\": \"Hello, world!\"}):\n    mock_model_response = ModelResponse(\n        id=\"fake_id\",\n        choices=[\n            {\n                \"message\": output,\n                \"tool_calls\": [],\n                \"created_at\": 1,\n                \"finish_reason\": \"stop\",\n            },\n        ],\n        created=0,\n        object=\"text_completion\",\n        usage={\"total_tokens\": 10, \"prompt_tokens\": 5, \"completion_tokens\": 5},\n    )\n\n    with (\n        patch(\"agents_api.clients.litellm.aembedding\") as embed,\n        patch(\"agents_api.clients.litellm.acompletion\") as acompletion,\n    ):\n        embed.return_value = [[1.0] * EMBEDDING_SIZE]\n        acompletion.return_value = mock_model_response\n\n        yield embed, acompletion\n\n\n@contextmanager\ndef patch_integration_service(output: dict = {\"result\": \"ok\"}):\n    with patch(\n        \"agents_api.clients.integrations.run_integration_service\",\n    ) as run_integration_service:\n        run_integration_service.return_value = output\n\n        yield run_integration_service\n\n\n@contextmanager\ndef get_pg_dsn(start_vectorizer: bool = False):\n    with PostgresContainer(\"timescale/timescaledb-ha:pg17.6-ts2.22.1-all\") as postgres:\n        test_psql_url = postgres.get_connection_url()\n        pg_dsn = f\"postgres://{test_psql_url[22:]}?sslmode=disable\"\n\n        # Install pgai\n        pgai.install(pg_dsn)\n\n        # Migrate\n        command = f\"migrate -database '{pg_dsn}' -path ../memory-store/migrations/ up\"\n        process = subprocess.Popen(command, shell=True)\n        process.wait()\n\n        if not start_vectorizer:\n            yield pg_dsn\n            return\n\n        # ELSE:\n        with (\n            DockerContainer(\"timescale/pgai-vectorizer-worker:latest\")\n            .with_network(postgres._network)  # noqa: SLF001\n            .with_env(\n                \"PGAI_VECTORIZER_WORKER_DB_URL\",\n                pg_dsn.replace(\"localhost\", postgres.get_container_host_ip()),\n            )\n            .with_env(\n                \"OPENAI_API_KEY\",\n                os.environ.get(\"OPENAI_API_KEY\"),\n            )\n        ) as vectorizer:\n            wait_for_logs(\n                vectorizer,\n                \"finished processing vectorizer\",\n                predicate_streams_and=True,\n                raise_on_exit=True,\n                timeout=10,\n            )\n\n        print(\"Vectorizer worker started\")\n\n        yield pg_dsn\n\n\n@contextmanager\ndef get_localstack():\n    with LocalStackContainer(image=\"localstack/localstack:s3-latest\").with_services(\n        \"s3\",\n    ) as localstack:\n        yield localstack\n"
  },
  {
    "path": "src/agents-api/uuid_extensions.pyi",
    "content": "\"\"\"Local typing stub for the external ``uuid_extensions`` package.\n\nOnly the parts actually used by this code-base are declared.  We provide a\nmore precise return type for :func:`uuid_extensions.uuid7` so that static type\ncheckers (pytype / pyright) do not complain when the function is invoked with\ndefault arguments.\n\nThe real implementation allows selecting an alternative output representation\n(str / int / bytes) via the ``as_type`` keyword.  We model this behaviour with\nproper ``typing.overload`` definitions – when ``as_type`` is omitted or\n``None`` the return value is a ``uuid.UUID`` which is how it is used across\nJulep.\n\nNote: This stub is *only* imported by the type-checker – the actual runtime\nmodule from the third-party package is still used.  Keeping the stub here\navoids having to sprinkle ``cast()`` calls throughout the code-base or wrap\nthe function in a helper.\n\"\"\"\n\nfrom __future__ import annotations\n\nimport datetime as _dt\nimport uuid as _uuid\nfrom collections.abc import Callable\nfrom typing import Literal, overload\n\n__all__ = [\n    \"check_timing_precision\",\n    \"time_ns\",\n    \"uuid7\",\n    \"uuid7str\",\n    \"uuid_to_datetime\",\n]\n\n# ---------------------------------------------------------------------------\n# Public helpers mirrored from the original package\n# ---------------------------------------------------------------------------\n\ndef time_ns() -> int:  # pragma: no cover – implementation lives upstream.\n    \"\"\"Return the current time in nanoseconds since Unix epoch.\"\"\"\n\n@overload\ndef uuid7(\n    ns: int | None = ...,\n    *,\n    as_type: None = ...,\n    time_func: Callable[[], int] = ...,\n) -> _uuid.UUID: ...\n\n@overload\ndef uuid7(\n    ns: int | None = ...,\n    *,\n    as_type: Literal[\"uuid\"] = ...,\n    time_func: Callable[[], int] = ...,\n) -> _uuid.UUID: ...\n\n@overload\ndef uuid7(\n    ns: int | None = ...,\n    *,\n    as_type: Literal[\"str\", \"hex\"] = ...,\n    time_func: Callable[[], int] = ...,\n) -> str: ...\n\n@overload\ndef uuid7(\n    ns: int | None = ...,\n    *,\n    as_type: Literal[\"int\"] = ...,\n    time_func: Callable[[], int] = ...,\n) -> int: ...\n\n@overload\ndef uuid7(\n    ns: int | None = ...,\n    *,\n    as_type: Literal[\"bytes\"] = ...,\n    time_func: Callable[[], int] = ...,\n) -> bytes: ...\n\ndef uuid7(*args, **kwargs):  # type: ignore[override]\n    \"\"\"Runtime implementation lives in the real package – stub only.\"\"\"\n\ndef uuid7str(ns: int | None = ...) -> str: ...\n\ndef check_timing_precision(timing_func: Callable[[], int] | None = ...) -> str: ...\n\ndef uuid_to_datetime(value: _uuid.UUID) -> _dt.datetime: ...\n"
  },
  {
    "path": "src/analytics/AGENTS.md",
    "content": "# AGENTS.md - analytics\n\nThis directory contains the Metabase analytics service for the Julep platform.\n\nKey Uses\n- Bash commands:\n  - cd analytics\n  - docker compose up analytics\n  - docker buildx bake analytics\n- Core files:\n  - `docker-compose.yml` for service deployment\n  - `Dockerfile` for Metabase container\n  - `README.md` for detailed documentation\n- Configuration guidelines:\n  - Set `MEMORY_STORE_PASSWORD` for database access\n  - Configure `JULEP_HOST` for proper URL generation\n  - Uses same PostgreSQL instance as agents-api\n- Testing instructions:\n  - Health check: `curl http://localhost:3001/api/health`\n  - Access dashboard: `http://localhost:3001` or `https://<host>/analytics`\n- Repository etiquette:\n  - Don't commit Metabase database files\n  - Keep sensitive configuration in environment variables\n- Developer environment:\n  - Requires Docker and Docker Compose\n  - Connects to memory-store PostgreSQL service\n- Unexpected behaviors:\n  - First run shows setup wizard (this is normal)\n  - Metabase creates its own database for metadata\n\n# Analytics Service\n\n## Overview\nThe analytics service provides business intelligence capabilities using Metabase, allowing users to create dashboards, run queries, and analyze data from the Julep platform's PostgreSQL database.\n\n## Architecture\n- **Analytics Engine**: Metabase (open-source BI tool)\n- **Database**: Shared PostgreSQL instance with agents-api\n- **Routing**: Exposed via Traefik at `/analytics` path\n- **Authentication**: Metabase's built-in user management\n\n## Key Components\n\n### Metabase Configuration\n- **Application Database**: Stores Metabase metadata in PostgreSQL\n- **Data Source**: Connects to Julep's main PostgreSQL database\n- **Site URL**: Configured for proper link generation\n- **SSL**: Handled by Traefik gateway\n\n### Environment Variables\n- `MEMORY_STORE_PASSWORD`: PostgreSQL password\n- `JULEP_HOST`: Host domain for URL configuration\n- `TAG`: Docker image tag for versioning\n\n## Integration Points\n- **PostgreSQL**: Direct connection to memory-store service\n- **Traefik Gateway**: Reverse proxy with SSL termination\n- **Docker Network**: Shares julep-network with other services\n\n## Security Features\n- User authentication via Metabase\n- SSL/TLS via Traefik\n- Database credentials in environment variables\n- Network isolation via Docker\n\n## Development Workflow\n1. Build image: `docker buildx bake analytics`\n2. Deploy service: `docker compose up -d analytics`\n3. Access dashboard: Navigate to `/analytics`\n4. Complete setup wizard on first run\n5. Connect to Julep database\n\n## Monitoring\n- Health endpoint at `/api/health`\n- Container health checks every 30s\n- Logs available via Docker\n\n## AIDEV-NOTE: Metabase service for Julep analytics and reporting"
  },
  {
    "path": "src/analytics/README.md",
    "content": "# Julep Analytics Service\n\nThis service provides a Metabase analytics dashboard for the Julep platform, allowing users to visualize and analyze data from the PostgreSQL database.\n\n## Overview\n\nThe analytics service uses Metabase, an open-source business intelligence tool, to provide:\n- Interactive dashboards and visualizations\n- SQL query interface for data exploration\n- Scheduled reports and alerts\n- User access management\n\n## Architecture\n\n- **Service**: Metabase (latest version)\n- **Database**: Connects to the same PostgreSQL instance as agents-api\n- **Routing**: Exposed via Traefik gateway at `/analytics`\n- **SSL**: Automatically handled by Traefik with Let's Encrypt\n\n## Configuration\n\n### Environment Variables\n\n- `MEMORY_STORE_PASSWORD`: Password for PostgreSQL connection (default: `julep_secure_password`)\n- `JULEP_HOST`: Host domain for the analytics URL (default: `localhost`)\n- `TAG`: Docker image tag (default: `dev`)\n\n### Database Connection\n\nMetabase connects to the PostgreSQL database with:\n- Host: `memory-store`\n- Port: `5432`\n- Database: `postgres` (for Julep data), `metabase` (for Metabase metadata)\n- Username: `postgres`\n- Password: Value of `MEMORY_STORE_PASSWORD`\n\n## Deployment\n\n### Using Docker Compose\n\n```bash\n# Deploy with other services\ndocker compose --profile multi-tenant up -d\n\n# Deploy only analytics\ndocker compose -f analytics/docker-compose.yml up -d\n```\n\n### Building the Image\n\n```bash\n# Using docker-bake\ndocker buildx bake analytics\n\n# Using docker build\ndocker build -t julepai/analytics:dev analytics/\n```\n\n## Access\n\nOnce deployed, the analytics dashboard is available at:\n- Local: `http://localhost:3001`\n- Via Gateway: `https://<JULEP_HOST>/analytics`\n\n### Initial Setup\n\n1. Navigate to the analytics URL\n2. Create an admin account\n3. Connect to the Julep database:\n   - Database Type: PostgreSQL\n   - Host: `memory-store`\n   - Port: `5432`\n   - Database: `postgres`\n   - Username: `postgres`\n   - Password: (use `MEMORY_STORE_PASSWORD` value)\n\n## Security\n\n- Authentication is handled by Metabase's built-in user management\n- SSL/TLS is provided by Traefik gateway\n- Database credentials are managed via environment variables\n- CORS headers are configured in Traefik\n\n## Monitoring\n\nHealth check endpoint: `http://analytics:3000/api/health`\n\n## Development\n\n### Local Development\n\n```bash\n# Run Metabase locally\ndocker run -d -p 3000:3000 \\\n  -e MB_DB_TYPE=postgres \\\n  -e MB_DB_HOST=localhost \\\n  -e MB_DB_PORT=5432 \\\n  -e MB_DB_DBNAME=metabase \\\n  -e MB_DB_USER=postgres \\\n  -e MB_DB_PASS=your_password \\\n  --name metabase metabase/metabase\n```\n\n### Customization\n\nTo customize Metabase:\n1. Modify environment variables in `docker-compose.yml`\n2. Add custom plugins or themes via Dockerfile\n3. Configure additional settings via Metabase admin panel\n\n## Troubleshooting\n\n### Common Issues\n\n1. **Cannot connect to database**\n   - Verify PostgreSQL is running\n   - Check network connectivity between containers\n   - Confirm credentials are correct\n\n2. **Analytics not accessible via gateway**\n   - Check Traefik configuration\n   - Verify analytics service is healthy\n   - Review gateway logs\n\n3. **Metabase setup wizard appears**\n   - This is normal on first run\n   - Complete the setup to initialize Metabase\n\n## AIDEV-NOTE: Analytics service integrated with existing Julep infrastructure"
  },
  {
    "path": "src/analytics/docker-compose.yml",
    "content": "name: julep-analytics\n\nservices:\n  analytics:\n    image: metabase/metabase:latest\n    container_name: julep-analytics\n    profiles:\n      - multi-tenant\n    environment:\n      # Metabase application database (for storing Metabase's own data)\n      MB_DB_TYPE: postgres\n      MB_DB_DBNAME: metabase\n      MB_DB_PORT: 5432\n      MB_DB_USER: postgres\n      MB_DB_PASS: ${METABASE_DB_PASSWORD:-metabase_secure_password}\n      MB_DB_HOST: analytics-db\n      \n      # Metabase settings\n      MB_SITE_URL: https://${JULEP_HOST:-localhost}/analytics\n      MB_SITE_NAME: \"Julep Analytics\"\n      MB_APPLICATION_NAME: \"Julep Analytics\"\n      \n      # AIDEV-NOTE: Metabase configured to use same postgres instance as agents-api\n    ports:\n      - \"3001:3000\"  # Expose on different port to avoid conflicts\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"curl\", \"-f\", \"http://localhost:3000/api/health\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n      start_period: 60s\n    depends_on:\n      analytics-db:\n        condition: service_healthy\n  \n  analytics-db:\n    image: postgres:latest\n    container_name: julep-analytics-db\n    profiles:\n      - multi-tenant\n    hostname: analytics-db\n    restart: unless-stopped\n    volumes:\n      - analytics-db-data:/var/lib/postgresql/data\n    environment:\n      - POSTGRES_USER=postgres\n      - POSTGRES_DB=metabase\n      - POSTGRES_PASSWORD=${METABASE_DB_PASSWORD:-metabase_secure_password}\n    healthcheck:\n      test: ['CMD-SHELL', 'pg_isready -U postgres -d metabase']\n      interval: 10s\n      timeout: 5s\n      retries: 5\n\nvolumes:\n  analytics-db-data:\n    external: true\n"
  },
  {
    "path": "src/blob-store/.gitignore",
    "content": "/s3.json\n"
  },
  {
    "path": "src/blob-store/AGENTS.md",
    "content": "# AGENTS.md - blob-store\n\nThis directory contains the blob storage service configuration using SeaweedFS for S3-compatible object storage.\n\nKey Uses\n- Bash commands:\n  - cd blob-store\n  - docker-compose up seaweedfs\n  - docker-compose -f docker-compose-ha.yml up  # High availability mode\n- Core files:\n  - `docker-compose.yml` for single-instance deployment\n  - `docker-compose-ha.yml` for high-availability deployment\n  - `entrypoint.sh` for container initialization\n  - `s3.json.template` for S3 API configuration\n- Configuration guidelines:\n  - Set `S3_ACCESS_KEY` and `S3_SECRET_KEY` environment variables\n  - Use `DEBUG=true` for troubleshooting (prints config in logs)\n- Testing instructions:\n  - Health check: `curl http://localhost:9333/cluster/healthz`\n  - S3 API test: `curl http://localhost:8333/`\n- Repository etiquette:\n  - Don't commit actual S3 credentials to version control\n- Developer environment:\n  - Requires Docker and Docker Compose\n- Unexpected behaviors:\n  - SeaweedFS data persists in named Docker volume `seaweedfs_data`\n\n# Blob Store Service\n\n## Overview\nThe blob-store service provides S3-compatible object storage using SeaweedFS, serving as the file storage backend for the Julep platform. It handles file uploads, downloads, and storage for agents, tasks, and user content.\n\n## Architecture\n- **Storage Engine**: SeaweedFS distributed file system\n- **API Interface**: S3-compatible REST API\n- **Data Persistence**: Docker volume-backed storage\n- **Deployment**: Containerized with Docker Compose\n\n## Key Components\n\n### SeaweedFS Services\n- **Master**: Cluster coordination and metadata (port 9333)\n- **Volume**: Data storage and replication (port 28080) \n- **Filer**: File system interface (port 8888)\n- **S3 Gateway**: S3-compatible API (port 8333)\n\n### Configuration Files\n- `s3.json.template`: S3 API configuration template\n- `entrypoint.sh`: Container startup script with validation\n- `docker-compose.yml`: Single-instance deployment\n- `docker-compose-ha.yml`: High-availability deployment\n\n## Storage Features\n- S3-compatible API for seamless integration\n- Distributed storage with automatic replication\n- Horizontal scaling support\n- Built-in data integrity and consistency\n- Metrics endpoint for monitoring (port 9321)\n\n## Environment Variables\n- `S3_ACCESS_KEY`: S3 API access key (required)\n- `S3_SECRET_KEY`: S3 API secret key (required)\n- `DEBUG`: Enable debug logging (optional, default: false)\n- `TAG`: Docker image tag (optional, default: dev)\n\n## API Endpoints\n- `http://localhost:8333/`: S3-compatible API\n- `http://localhost:9333/cluster/healthz`: Health check\n- `http://localhost:8888/`: Filer web interface\n- `http://localhost:9321/metrics`: Prometheus metrics\n\n## Deployment Modes\n1. **Single Instance**: Basic deployment for development\n2. **High Availability**: Multi-node deployment for production\n3. **External Volume**: Persistent data storage across container restarts\n\n## Integration Points\n- Used by `agents-api` for file storage via S3 client\n- Integrates with file upload/download endpoints\n- Supports large payload storage for Temporal workflows\n- Provides persistent storage for agent knowledge bases\n\n## Monitoring\n- Health checks via HTTP endpoints\n- Prometheus metrics for storage and performance monitoring\n- Docker container health checks with automatic restart\n- Volume usage and replication status monitoring"
  },
  {
    "path": "src/blob-store/Dockerfile",
    "content": "# syntax=docker/dockerfile:1\n# check=error=true\n\nFROM chrislusf/seaweedfs\n\n# Install envsubst\nENV BUILD_DEPS=\"gettext\"  \\\n    RUNTIME_DEPS=\"libintl\"\n\nRUN set -x && \\\n    apk add --update $RUNTIME_DEPS && \\\n    apk add --virtual build_deps $BUILD_DEPS &&  \\\n    cp /usr/bin/envsubst /usr/local/bin/envsubst && \\\n    apk del build_deps\n\n# Expected environment variables:\n# - S3_ACCESS_KEY\n# - S3_SECRET_KEY\n\nCOPY s3.json.template /s3.json.template\nCOPY entrypoint.sh /entrypoint.sh\n\nENTRYPOINT [\"/entrypoint.sh\"]\n"
  },
  {
    "path": "src/blob-store/docker-compose-ha.yml",
    "content": "name: julep-blob-store\n\nx-seaweedfs-base:\n  &seaweedfs-base\n  image: chrislusf/seaweedfs\n  profiles:\n    - blob-store\n\nservices:\n  seaweedfs-master:\n    <<: *seaweedfs-base\n    ports:\n      - 9333:9333\n      - 19333:19333\n    command: \"master -volumeSizeLimitMB=30000 -ip=seaweedfs-master -ip.bind=0.0.0.0 -port=9333 -metricsPort=9321 -raftBootstrap\"\n    healthcheck:\n      test: [ \"CMD\", \"wget\", \"-qSO\", \"-\", \"http://0.0.0.0:9333/cluster/healthz\" ]\n      interval: 60s\n      retries: 6\n      timeout: 60s\n      start_period: 30s\n      start_interval: 10s\n\n  seaweedfs-volume:\n    <<: *seaweedfs-base\n    ports:\n      - 28080:28080  # Since 8080 is already used by agents-api, we use 28080\n      # - 18081:18080\n    command: 'volume -max=8 -mserver=\"seaweedfs-master:9333\" -dir=/data -ip.bind=0.0.0.0 -port=28080 -ip=seaweedfs-volume -metricsPort=9321 -preStopSeconds=3'\n    healthcheck:\n      test: [ \"CMD\", \"wget\", \"-qSO\", \"-\", \"http://0.0.0.0:28080/healthz\" ]\n      interval: 60s\n      retries: 6\n      timeout: 30s\n      start_period: 30s\n      start_interval: 10s\n    depends_on:\n      seaweedfs-master:\n        condition: service_healthy\n    volumes:\n      - seaweedfs_data:/data\n\n  seaweedfs-volume2:\n    <<: *seaweedfs-base\n    ports:\n      - 28081:28081\n      # - 18082:18081\n    command: 'volume -max=8 -mserver=\"seaweedfs-master:9333\" -dir=/data -ip.bind=0.0.0.0 -port=28081 -ip=seaweedfs-volume2 -metricsPort=9322 -preStopSeconds=3'\n    healthcheck:\n      test: [ \"CMD\", \"wget\", \"-qSO\", \"-\", \"http://0.0.0.0:28081/healthz\" ]\n      interval: 60s\n      retries: 6\n      timeout: 30s\n      start_period: 30s\n      start_interval: 10s\n    depends_on:\n      seaweedfs-master:\n        condition: service_healthy\n    volumes:\n      - seaweedfs_data2:/data\n\n  seaweedfs-volume3:\n    <<: *seaweedfs-base\n    ports:\n      - 28082:28082\n      # - 18083:18083\n    command: 'volume -max=8 -mserver=\"seaweedfs-master:9333\" -dir=/data -ip.bind=0.0.0.0 -port=28082 -ip=seaweedfs-volume3 -metricsPort=9323 -preStopSeconds=3'\n    healthcheck:\n      test: [ \"CMD\", \"wget\", \"-qSO\", \"-\", \"http://0.0.0.0:28082/healthz\" ]\n      interval: 60s\n      retries: 6\n      timeout: 30s\n      start_period: 30s\n      start_interval: 10s\n    depends_on:\n      seaweedfs-master:\n        condition: service_healthy\n    volumes:\n      - seaweedfs_data3:/data\n\n  seaweedfs-volume4:\n    <<: *seaweedfs-base\n    ports:\n      - 28083:28083\n      # - 18084:18084\n    command: 'volume -max=8 -mserver=\"seaweedfs-master:9333\" -dir=/data -ip.bind=0.0.0.0 -port=28083 -ip=seaweedfs-volume4 -metricsPort=9324 -preStopSeconds=3'\n    healthcheck:\n      test: [ \"CMD\", \"wget\", \"-qSO\", \"-\", \"http://0.0.0.0:28083/healthz\" ]\n      interval: 60s\n      retries: 6\n      timeout: 30s\n      start_period: 30s\n      start_interval: 10s\n    depends_on:\n      seaweedfs-master:\n        condition: service_healthy\n    volumes:\n      - seaweedfs_data4:/data\n    # AIDEV-NOTE: Keep metricsPort unique when adding more volume replicas.\n\n  seaweedfs-volume5:\n    <<: *seaweedfs-base\n    ports:\n      - 28084:28084\n      # - 18085:18085\n    command: 'volume -max=8 -mserver=\"seaweedfs-master:9333\" -dir=/data -ip.bind=0.0.0.0 -port=28084 -ip=seaweedfs-volume5 -metricsPort=9325 -preStopSeconds=3'\n    healthcheck:\n      test: [ \"CMD\", \"wget\", \"-qSO\", \"-\", \"http://0.0.0.0:28084/healthz\" ]\n      interval: 60s\n      retries: 6\n      timeout: 30s\n      start_period: 30s\n      start_interval: 10s\n    depends_on:\n      seaweedfs-master:\n        condition: service_healthy\n    volumes:\n      - seaweedfs_data5:/data\n    # AIDEV-NOTE: Align exposed ports with `seaweedfs` depends_on configuration.\n\n  seaweedfs-filer:\n    <<: *seaweedfs-base\n    ports:\n      - 8888:8888\n      - 18888:18888\n    command: 'filer -master=\"seaweedfs-master:9333\" -ip.bind=0.0.0.0 -port=8888 -ip=seaweedfs-filer -metricsPort=9321'\n    tty: true\n    stdin_open: true\n    healthcheck:\n      test: [ \"CMD\", \"wget\", \"-qSO\", \"-\", \"http://0.0.0.0:8888/healthz\" ]\n      interval: 60s\n      retries: 6\n      timeout: 30s\n      start_period: 30s\n      start_interval: 10s\n\n    depends_on:\n      seaweedfs-master:\n        condition: service_healthy\n      seaweedfs-volume:\n        condition: service_healthy\n\n  seaweedfs:\n    <<: *seaweedfs-base\n    ports:\n      - 8333:8333\n    command: 's3 -filer=\"seaweedfs-filer:8888\" -ip.bind=0.0.0.0 -port=8333 -metricsPort=9321'\n    depends_on:\n      seaweedfs-master:\n        condition: service_healthy\n      seaweedfs-volume:\n        condition: service_healthy\n      seaweedfs-volume2:\n        condition: service_healthy\n      seaweedfs-volume3:\n        condition: service_healthy\n      seaweedfs-volume4:\n        condition: service_healthy\n      seaweedfs-volume5:\n        condition: service_healthy\n      seaweedfs-filer:\n        condition: service_healthy\n\nvolumes:\n  seaweedfs_data:\n    external: true\n  seaweedfs_data2:\n    external: true\n  seaweedfs_data3:\n    external: true\n  seaweedfs_data4:\n    external: true\n  seaweedfs_data5:\n    external: true\n"
  },
  {
    "path": "src/blob-store/docker-compose.yml",
    "content": "name: julep-blob-store\n\nservices:\n  seaweedfs:\n    image: julepai/blob-store:${TAG:-dev}\n    build:\n      context: .\n      dockerfile: Dockerfile\n    profiles:\n      - blob-store\n\n    environment:\n      - S3_ACCESS_KEY=${S3_ACCESS_KEY}\n      - S3_SECRET_KEY=${S3_SECRET_KEY}\n      - DEBUG=${DEBUG:-false}\n\n    ports:\n      - 9333:9333  # master port\n      - 8333:8333  # s3 port\n      - 8888:8888  # filer port\n      - 28080:28080  # volume port\n      # - 19333:19333  # master grpc port\n      # - 18081:18080  # volume grpc port\n      # - 18888:18888  # filer grpc port\n    command: \"-volume -volume.dir.idx /data -filer -s3 -dir=/data -ip=seaweedfs -ip.bind=0.0.0.0 -metricsPort=9321 -master.raftBootstrap=false -master.port=9333 -volume.port=28080 -volume.index=leveldb -filer.port=8888 -s3.port=8333\"\n    healthcheck:\n      test: [ \"CMD\", \"wget\", \"-qSO\", \"-\", \"http://0.0.0.0:9333/cluster/healthz\" ]\n      interval: 60s\n      retries: 6\n      timeout: 60s\n      start_period: 30s\n      start_interval: 10s\n\n    volumes:\n      - seaweedfs_data:/data\n\nvolumes:\n  seaweedfs_data:\n    external: true\n"
  },
  {
    "path": "src/blob-store/entrypoint.sh",
    "content": "#!/bin/sh\n\nset -e\n\n# Check the environment variables\nfor var_name in S3_ACCESS_KEY S3_SECRET_KEY\ndo\n    if [ -z \"`eval echo \\\\\\$$var_name`\" ]; then\n        echo \"Error: Environment variable '$var_name' is not set.\"\n        exit 1\n    fi\ndone\n\n# Generate the s3.json configuration file\nenvsubst < /s3.json.template > /s3.json\n\nif [ \"$DEBUG\" = \"true\" ]; then\n    echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'\n    echo '@@@ Careful: Debug mode is enabled. @@@'\n    echo '@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@'\n\n    echo 'Printing s3.json:'\n    cat /s3.json\nfi\n\n# Forward all arguments to the seaweedfs binary\nexec weed server -s3.config=/s3.json \"$@\"\n"
  },
  {
    "path": "src/blob-store/s3.json.template",
    "content": "{\n  \"identities\": [\n    {\n      \"name\": \"anonymous\",\n      \"actions\": [\n        \"Read\"\n      ]\n    },\n    {\n      \"name\": \"julep\",\n      \"credentials\": [\n        {\n          \"accessKey\": \"${S3_ACCESS_KEY}\",\n          \"secretKey\": \"${S3_SECRET_KEY}\"\n        }\n      ],\n      \"actions\": [\n        \"Admin\",\n        \"Read\",\n        \"List\",\n        \"Tagging\",\n        \"Write\"\n      ]\n    }\n  ],\n  \"accounts\": [\n      {\n        \"id\" : \"julep\",\n        \"displayName\": \"Julep\",\n        \"emailAddress\": \"developers@julep.ai\"\n      }\n  ]\n}"
  },
  {
    "path": "src/cli/.gitignore",
    "content": "hello-world/\nnotebooks/\n\n# Local database files\ntemporal.db\n*.bak\n*.dat\n*.dir\n\n# jupyterlab stuff\nnotebooks/Untitled*.ipynb\n.virtual_documents/\n\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\nshare/python-wheels/\n*.egg-info/\n.installed.cfg\n*.egg\nMANIFEST\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.nox/\n.coverage\n.coverage.*\n.cache\nnosetests.xml\ncoverage.xml\n*.cover\n*.py,cover\n.hypothesis/\n.pytest_cache/\ncover/\n\n# Translations\n*.mo\n*.pot\n\n# Django stuff:\n*.log\nlocal_settings.py\ndb.sqlite3\ndb.sqlite3-journal\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\n.pybuilder/\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# IPython\nprofile_default/\nipython_config.py\n\n# pyenv\n#   For a library or package, you might want to ignore these files since the code is\n#   intended to run in multiple environments; otherwise, check them in:\n# .python-version\n\n# pipenv\n#   According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.\n#   However, in case of collaboration, if having platform-specific dependencies or dependencies\n#   having no cross-platform support, pipenv may install dependencies that don't work, or not\n#   install all needed dependencies.\n#Pipfile.lock\n\n# poetry\n#   Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control.\n#   This is especially recommended for binary packages to ensure reproducibility, and is more\n#   commonly ignored for libraries.\n#   https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control\n#poetry.lock\n\n# pdm\n#   Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control.\n#pdm.lock\n#   pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it\n#   in version control.\n#   https://pdm.fming.dev/#use-with-ide\n.pdm.toml\n\n# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm\n__pypackages__/\n\n# Celery stuff\ncelerybeat-schedule\ncelerybeat.pid\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n.dmypy.json\ndmypy.json\n\n# Pyre type checker\n.pyre/\n\n# pytype static type analyzer\n.pytype/\n\n# Cython debug symbols\ncython_debug/\n\n# PyCharm\n#  JetBrains specific template is maintained in a separate JetBrains.gitignore that can\n#  be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore\n#  and can be added to the global gitignore or merged into this file.  For a more nuclear\n#  option (not recommended) you can uncomment the following to ignore the entire idea folder.\n#.idea/\n"
  },
  {
    "path": "src/cli/AGENTS.md",
    "content": "# AGENTS.md - cli\n\nThis directory contains the Julep CLI implementation (`julep_cli`).\n\nKey Uses\n- Bash commands:\n  - cd cli\n  - source .venv/bin/activate\n  - poe format\n  - poe lint\n  - poe typecheck\n  - poe test\n  - poe check\n- Core files and utilities:\n  - `src/julep_cli/` contains command and subcommand handlers.\n- Code style guidelines:\n  - Follows root `AGENTS.md` Python standards (FastAPI style not directly relevant).\n  - CLI functions and flags use snake_case and kebab-case respectively.\n- Testing instructions:\n  - Tests in `cli/tests/` using `ward` and `pytest`.\n  - Run specific tests: `poe test --search \"pattern\" --fail-limit 1`.\n- Repository etiquette:\n  - Version CLI via `julep.yaml` and bump in lockfile.\n- Developer environment:\n  - Ensure `PYTHONPATH=$PWD` when invoking commands.\n- Unexpected behaviors:\n  - Autogenerated CLI docs should be manually reviewed in `README.md`.\n\n# Julep CLI Architecture\n\n## Overview\nThe Julep CLI is a command-line interface tool for interacting with the Julep platform. It enables users to manage agents, tasks, tools, and execute tasks, providing a complete workflow from local development to platform integration.\n\n## Core Components\n\n### Entry Points and Application Structure\n- `app.py`: Main application entry point, initializes Typer app and subcommands\n- `wrapper.py`: Custom WrappedTyper implementation that provides interactive parameter prompting\n- `__main__.py`: Module entry point for direct execution\n\n### Command Modules\n- `auth.py`: Authentication with the Julep platform\n- `agents.py`: CRUD operations for AI agents\n- `tasks.py`: CRUD operations for tasks\n- `tools.py`: CRUD operations for agent tools\n- `chat.py`: Interactive chat sessions with agents\n- `run.py`: Execute defined tasks with inputs\n- `executions.py`: Management of task executions\n- `logs.py`: Retrieve and display execution logs\n- `sync.py`: Synchronize local files with remote platform\n- `init.py`: Initialize new projects from templates\n- `importt.py`: Import entities from the platform\n- `ls.py`: List local project entities\n\n### Models and Utilities\n- `models.py`: Pydantic models for CLI state and requests\n- `utils.py`: Common utility functions shared across modules\n\n## Key Interfaces\n\n### Project Structure\n- `julep.yaml`: Main project configuration file defining agents, tasks, and tools\n- `julep-lock.json`: Lock file tracking state between local and remote\n- `src/`: Directory structure for storing entity definitions\n\n### Configuration Management\n- `~/.config/julep/config.yml`: User configuration with API keys and environment\n- `~/.config/julep/julep_state.db`: Persistent SQLite database for CLI state\n\n## Workflow Patterns\n\n### Project Initialization\n1. User runs `julep init` with template name\n2. CLI downloads template from repository\n3. Files are extracted and verified (requires `julep.yaml`)\n4. Project structure is displayed with README\n\n### Synchronization System\n1. `julep sync` parses local definitions and compares with lock file\n2. Local-to-remote: Updates remote platform based on local changes\n3. Remote-to-local: Updates local files based on remote changes\n4. Supports watch mode for continuous synchronization\n5. Conflict resolution with --force-local and --force-remote flags\n\n### Entity Management\n1. Create/update local entity definitions in YAML format\n2. Reference between entities (agent → tasks, agent → tools) via templated IDs\n3. Sync to remote platform with `julep sync`\n4. Direct management via CLI commands (`agents create`, `tasks update`, etc.)\n\n### Task Execution Flow\n1. Define task in project\n2. Run task using `julep run --task <id> --input {...}`\n3. Stream execution logs with `julep logs --execution-id <id> --tail`\n4. Chat with agents using `julep chat --agent <id>`\n\n## Implementation Patterns\n\n### Interactive CLI Design\n- Wrapped Typer app with custom parameter prompting\n- Rich console output with progress bars and styled text\n- Automatic parameter validation and conversion\n- Support for optional JSON input for complex types\n\n### Error Handling\n- Consistent error presentation via error_console\n- Typed exceptions with meaningful messages\n- Progress indicators for long-running operations\n\n### State Management\n- SQLite database for persisting CLI state across invocations\n- Lock file (julep-lock.json) for tracking remote synchronization\n- Environment-aware configuration with local and global settings\n\n### Data Serialization\n- YAML for human-editable entity definitions\n- JSON for lock files and machine-readable data exchange\n- Support for both formats in output (--json flag)\n\n## Client Interactions\n- Julep SDK used for all API communication\n- Rate limiting and error handling via SDK features\n- Authenticated via JWT tokens stored in config\n- Environment-aware (production, dev) endpoint selection\n"
  },
  {
    "path": "src/cli/README.md",
    "content": "# Julep CLI Specification\n\nThe `julep` CLI tool provides a comprehensive command-line interface for interacting with the Julep platform. It enables authentication, management of agents, tasks, and tools, project initialization, synchronization, interaction with agents via chat, task execution, log retrieval, and more. This specification outlines the commands, options, and best practices to ensure a consistent and user-friendly experience.\n\n## Table of Contents\n\n- [Julep CLI Specification](#julep-cli-specification)\n  - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n    - [Components](#components)\n    - [Schema for `julep.yaml`](#schema-for-julepyaml)\n    - [Schema for `julep-lock.json`](#schema-for-julep-lockjson)\n    - [How the lock file is used](#how-the-lock-file-is-used)\n      - [Version Control](#version-control)\n      - [`relationships` Details](#relationships-details)\n      - [How the CLI Should Use It](#how-the-cli-should-use-it)\n  - [Installation](#installation)\n  - [Configuration](#configuration)\n  - [Commands](#commands)\n    - [Authentication](#authentication)\n      - [`julep auth`](#julep-auth)\n    - [Agent Management](#agent-management)\n      - [`julep agents`](#julep-agents)\n      - [Subcommands](#subcommands)\n        - [`julep agents create`](#julep-agents-create)\n        - [`julep agents update`](#julep-agents-update)\n        - [`julep agents delete`](#julep-agents-delete)\n        - [`julep agents list`](#julep-agents-list)\n        - [`julep agents get`](#julep-agents-get)\n    - [Task Management](#task-management)\n      - [`julep tasks`](#julep-tasks)\n      - [Subcommands](#subcommands-1)\n        - [`julep tasks create`](#julep-tasks-create)\n        - [`julep tasks update`](#julep-tasks-update)\n        - [`julep tasks delete`](#julep-tasks-delete)\n        - [`julep tasks list`](#julep-tasks-list)\n    - [Tool Management](#tool-management)\n      - [`julep tools`](#julep-tools)\n      - [Subcommands](#subcommands-2)\n        - [`julep tools create`](#julep-tools-create)\n        - [`julep tools update`](#julep-tools-update)\n        - [`julep tools delete`](#julep-tools-delete)\n        - [`julep tools list`](#julep-tools-list)\n    - [Project Initialization](#project-initialization)\n      - [`julep init`](#julep-init)\n    - [Synchronization](#synchronization)\n      - [`julep sync`](#julep-sync)\n    - [Importing Agents](#importing-agents)\n      - [`julep import`](#julep-import)\n    - [Chat Interaction](#chat-interaction)\n      - [`julep chat`](#julep-chat)\n    - [Task Execution](#task-execution)\n      - [`julep run`](#julep-run)\n    - [Execution Management](#execution-management)\n      - [`julep executions`](#julep-executions)\n      - [Subcommands](#subcommands-3)\n        - [`julep executions create`](#julep-executions-create)\n        - [`julep executions list`](#julep-executions-list)\n        - [`julep executions cancel`](#julep-executions-cancel)\n    - [Log Retrieval](#log-retrieval)\n      - [`julep logs`](#julep-logs)\n    - [Project Assistant](#project-assistant)\n      - [`julep assistant`](#julep-assistant)\n    - [Common Commands](#common-commands)\n      - [Version](#version)\n        - [`julep --version`, `julep -v`](#julep---version-julep--v)\n      - [Help](#help)\n        - [`julep`, `julep --help`, `julep -h`](#julep-julep---help-julep--h)\n      - [Global Options](#global-options)\n        - [Standard Input/Output Handling](#standard-inputoutput-handling)\n        - [Quiet Mode](#quiet-mode)\n        - [Color Output](#color-output)\n\n---\n\n## Overview\n\nThe `julep` CLI is designed to streamline interactions with the Julep platform, allowing developers to efficiently manage AI agents, tasks, tools, and projects directly from the terminal. It adheres to industry-standard CLI conventions, ensuring an intuitive and predictable user experience.\n\nFor commands that output raw data (like `get`, `list`, etc.), the CLI will print/return YAML by default. If the `--json` flag is specified, the output will be in JSON format instead.\n\n### Components\n\nThere are 3 main components to the `julep` CLI:\n\n1. The project management stuff (init, sync, etc.)\n2. The static stuff (agents, tasks, tools, etc.)\n3. The dynamic stuff (chat, run, logs, etc.)\n\nDifferent files that are important:\n- `~/.config/julep/config.yml`: The configuration file for the CLI.\n- `julep.yaml`: The configuration file for the project.\n- `julep-lock.json`: The lock file for the project that tracks server state.\n- `src/*.yaml`: The object definitions for the project (agents, tasks, tools, etc.).\n\n### Schema for `julep.yaml`\n\n```yaml\nagents:\n- definition: path/to/agent.yaml\n- definition: path/to/agent.yaml\n\ntasks:\n- agent_id: \"{agents[0].id}\"\n  definition: path/to/task.yaml\n- agent_id: \"{agents[1].id}\"\n  definition: path/to/task.yaml\n\ntools:\n- agent_id: \"{agents[0].id}\"\n  definition: path/to/tool.yaml\n- agent_id: \"{agents[1].id}\"\n  definition: path/to/tool.yaml\n```\n\n### Schema for `julep-lock.json`\n\n```json\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://example.com/julep-lock.schema.json\",\n  \"title\": \"Julep Lockfile Schema\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"lockfile_version\": {\n      \"type\": \"string\",\n      \"description\": \"Version of the lockfile format.\"\n    },\n    \"updated_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"description\": \"Timestamp representing when the lockfile was last updated.\"\n    },\n    \"agents\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"Path to the agent definition file.\"\n          },\n          \"id\": {\n            \"type\": \"string\",\n            \"description\": \"Unique identifier of the agent from the remote server.\"\n          },\n          \"last_synced\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\",\n            \"description\": \"Timestamp of the last synchronization with the remote server.\"\n          },\n          \"revision_hash\": {\n            \"type\": \"string\",\n            \"description\": \"Hash of the local file used for change detection.\"\n          }\n        },\n        \"required\": [\"path\", \"id\", \"last_synced\", \"revision_hash\"],\n        \"additionalProperties\": false\n      }\n    },\n    \"tasks\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"Path to the task definition file.\"\n          },\n          \"id\": {\n            \"type\": \"string\",\n            \"description\": \"Unique identifier of the task from the remote server.\"\n          },\n          \"last_synced\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\",\n            \"description\": \"Timestamp of the last synchronization with the remote server.\"\n          },\n          \"revision_hash\": {\n            \"type\": \"string\",\n            \"description\": \"Hash of the local file used for change detection.\"\n          }\n        },\n        \"required\": [\"path\", \"id\", \"last_synced\", \"revision_hash\"],\n        \"additionalProperties\": false\n      }\n    },\n    \"tools\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"Path to the tool definition file.\"\n          },\n          \"id\": {\n            \"type\": \"string\",\n            \"description\": \"Unique identifier of the tool from the remote server.\"\n          },\n          \"last_synced\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\",\n            \"description\": \"Timestamp of the last synchronization with the remote server.\"\n          },\n          \"revision_hash\": {\n            \"type\": \"string\",\n            \"description\": \"Hash of the local file used for change detection.\"\n          }\n        },\n        \"required\": [\"path\", \"id\", \"last_synced\", \"revision_hash\"],\n        \"additionalProperties\": false\n      }\n    },\n    \"relationships\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"tasks\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\",\n                \"description\": \"Identifier of the task.\"\n              },\n              \"agent_id\": {\n                \"type\": \"string\",\n                \"description\": \"Identifier of the associated agent.\"\n              }\n            },\n            \"required\": [\"id\", \"agent_id\"],\n            \"additionalProperties\": false\n          }\n        },\n        \"tools\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"tool_id\": {\n                \"type\": \"string\",\n                \"description\": \"Identifier of the tool.\"\n              },\n              \"agent_id\": {\n                \"type\": \"string\",\n                \"description\": \"Identifier of the associated agent.\"\n              }\n            },\n            \"required\": [\"id\", \"agent_id\"],\n            \"additionalProperties\": false\n          }\n        }\n      },\n      \"required\": [\"tasks\", \"tools\"],\n      \"additionalProperties\": false\n    }\n  },\n  \"required\": [\"lockfile_version\", \"agents\", \"tasks\", \"tools\", \"relationships\"],\n  \"additionalProperties\": false\n} \n```\n\n**Example:**\n\n```json\n{\n  // Minimal versioning for the lock file's structure. \n  // Bump if you ever change this schema in a backward-incompatible way.\n  \"lockfile_version\": \"0.1.0\",\n\n  // (Optional) Timestamp or ISO string representing when this lock was last updated.\n  // \"updated_at\": \"2025-01-27T14:13:52.123Z\",\n\n  // Agents, tasks, and tools sections store local definitions alongside remote IDs.\n  \"agents\": [\n    {\n      \"path\": \"src/agents/awesome-agent.yaml\",\n      \"id\": \"agent_123456\",               // The remote ID from the server\n      \"last_synced\": \"2025-01-27T14:13:52.123Z\",\n      \"revision_hash\": \"abc123def456...\"   // Hash of local file for change detection\n    }\n  ],\n  \"tasks\": [\n    {\n      \"path\": \"src/tasks/generate-story.yaml\",\n      \"id\": \"task_789abcd\",\n      \"last_synced\": \"2025-01-27T14:13:52.125Z\",\n      \"revision_hash\": \"def456abc789...\"\n    }\n  ],\n  \"tools\": [\n    {\n      \"path\": \"src/tools/web_search.yaml\",\n      \"id\": \"tool_xyz999\",\n      \"last_synced\": \"2025-01-27T14:13:52.130Z\",\n      \"revision_hash\": \"ghi678jkl012...\"\n    }\n  ],\n\n  // A separate section for relationships/\"foreign key\" references\n  // so that tasks and tools can specify which agent they relate to.\n  \"relationships\": {\n    \"tasks\": [\n      {\n        \"id\": \"task_789abcd\",\n        \"agent_id\": \"agent_123456\"\n      }\n    ],\n    \"tools\": [\n      {\n        \"id\": \"tool_xyz999\",\n        \"agent_id\": \"agent_123456\"\n      }\n    ]\n  }\n}\n```\n\n### How the lock file is used\n\nThe `julep-lock.json` file serves several critical purposes:\n\n1. **State Tracking**: It maintains a record of the remote server state, mapping local files to their remote counterparts by storing IDs and revision hashes.\n\n2. **Change Detection**: The `revision_hash` field enables the CLI to detect when local files have changed and need to be synced.\n\n3. **Relationship Management**: Through the `relationships` section, it tracks which tasks and tools are associated with which agents.\n\n4. **Team Collaboration**: By checking the lock file into version control, team members can share the same remote state and avoid conflicts.\n\n#### Version Control\n\nThe `julep-lock.json` file **should be committed to version control**. This is important because:\n\n- It ensures all team members are working with the same remote state\n- It prevents accidental creation of duplicate remote resources\n- It maintains consistent relationships between agents, tasks, and tools across the team\n- It enables tracking of remote state changes through version control history\n\nThis is similar to how package managers like npm and yarn use lock files to ensure consistent dependencies across team members.\n\n#### `relationships` Details\n\n*   `**tasks**`: An array where each item includes `id` and `agent_id`.\n    *   This is the CLI's record that _this remote task is associated with that remote agent._\n*   `**tools**`: Same pattern: a `id` references a remote tool, and `agent_id` references the remote agent.\n*   You could expand the `relationships` object to store other relationships (e.g., task-tool references) if that's a thing in your system. You have the flexibility to break down relationships by type.\n\n#### How the CLI Should Use It\n\n**On** `**julep sync**`:  \n1.  Parse `julep.yaml` plus any local `.yaml` definitions.\n2.  Compare to `julep-lock.json`:\n      *   If you find a definition that's **not** in the lock file, create it on the server. Then save the new `id` to the lock file.\n      *   If you see a definition in the lock file but the `revision_hash` changed, update it on the server.\n      *   If an entry is in the lock file but the file no longer exists locally, prompt the user to delete the remote definition (or do so automatically).\n3.  Do the same logic for tasks and tools.\n4.  Finally, examine or rebuild the `relationships` array by reading each local definition. If a local definition says \"this task uses agent X,\" the CLI sets or updates the corresponding relationship in the lock file.\n\n---\n\n## Installation\n\nThe `julep` CLI can be installed using pipx:\n\n```bash\npipx install julep-cli\n```\n\nThis will install the CLI tool which can then be invoked using the `julep` command:\n\n```bash\njulep --version\n```\n\nNote: While the package name is `julep-cli`, the installed command is simply `julep`.\n\n---\n\n## Configuration\n\nThe CLI stores configuration data, such as the API key, in `~/.config/julep/config.yml`. After authentication, this file is created automatically.\n\n---\n\n## Commands\n\n> **Note**: This CLI is still in development and is not yet stable. Currently implemented commands include:\n> - [Authentication](#authentication)\n> - [Project Management](#project-management)\n> - [Task Execution](#task-execution)\n> - [Miscellaneous](#miscellaneous)\n\n### Authentication\n\nAuthenticate with the Julep platform by providing your API key.\n\n#### `julep auth`\n\n**Description:**  \nPrompt the user to enter their API key and save it to the configuration file.\n\n**Usage:**\n\n```bash\njulep auth\n```\n\n**Behavior:**\n\n1. Prompts the user to input their API key.\n2. Saves the API key to `~/.config/julep/config.yml`.\n\n**Options:**\n\n- `--api-key`, `-k`: Directly provide the API key without prompting.\n- `--environment`, `-e`: Set the environment to use. Defaults to `production`.\n\n**Example:**\n\n```bash\njulep auth --api-key your_julep_api_key\n```\n\n---\n\n### Agent Management\n\nManage AI agents within the Julep platform.\n\n#### `julep agents`\n\n**Description:**  \nParent command for managing agents. Includes subcommands to create, update, delete, and list agents.\n\n#### Subcommands\n\n1. **Create an Agent**\n\n   ##### `julep agents create`\n\n   **Description:**  \n   Create a new AI agent.\n\n   **Usage:**\n\n   ```bash\n   julep agents create --name \"Agent Name\" --model \"Model Name\" --about \"Agent Description\"\n   ```\n\n   **Options:**\n\n   - `--name`, `-n` (optional): Name of the agent.\n   - `--model`, `-m` (optional): Model to be used by the agent (e.g., `gpt-4`).\n   - `--about`, `-a` (optional): Description of the agent.\n   - `--default-settings`, (optional): Default settings for the agent. Value is parsed as json.\n   - `--metadata`, (optional): Metadata for the agent. Value is parsed as json.\n   - `--instructions`, (optional): Instructions for the agent, repeat the option to add multiple.\n   - `--definition`, `-d` (optional): Path to an agent definition file.\n\n   Either provide a definition file or use the other options to create the agent.\n\n   **Example:**\n\n   ```bash\n   julep agents create --name \"Storyteller\" --model \"gpt-4\" --about \"An agent that crafts engaging stories.\"\n   ```\n\n2. **Update an Agent**\n\n   ##### `julep agents update`\n\n   **Description:**  \n   Update an existing AI agent's details.\n\n   **Usage:**\n\n   ```bash\n   julep agents update --id <agent_id> [--name \"New Name\"] [--model \"New Model\"] [--about \"New Description\"] [--metadata '{\"key\": \"value\"}'] [--instructions \"Instruction 1\"] [--instructions \"Instruction 2\"]\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the agent to update.\n   - `--name`, `-n` (optional): New name for the agent.\n   - `--model`, `-m` (optional): New model for the agent.\n   - `--about`, `-a` (optional): New description for the agent.\n   - `--metadata`, (optional): Metadata for the agent. Value is parsed as json.\n   - `--default-settings`, (optional): Default settings for the agent. Value is parsed as json.\n   - `--instructions`, (optional): Instructions for the agent, repeat the option to add multiple.\n\n   **Example:**\n\n   ```bash\n   julep agents update --id abc123 --name \"Creative Storyteller\" --model \"gpt-4.5\"\n   ```\n\n3. **Delete an Agent**\n\n   ##### `julep agents delete`\n\n   **Description:**  \n   Delete an existing AI agent.\n\n   **Usage:**\n\n   ```bash\n   julep agents delete --id <agent_id> [--force]\n   ```\n\n   **Behavior:**\n\n   - If `--force` is not provided, the CLI will prompt for confirmation before deleting the agent.\n\n   **Options:**\n\n   - `--id`, (required): ID of the agent to delete.\n   - `--force`, `-f` (optional): Force the deletion without prompting for confirmation.\n\n   **Example:**\n\n   ```bash\n   julep agents delete --id abc123\n   ```\n\n4. **List Agents**\n\n   ##### `julep agents list`\n\n   **Description:**  \n   List all AI agents or filter based on metadata.\n\n   **Usage:**\n\n   ```bash\n   julep agents list [--metadata-filter '{\"key\": \"value\"}'] [--json]\n   ```\n\n   **Options:**\n\n   - `--metadata-filter`, (optional): Filter agents based on specific criteria (JSON).\n   - `--json`, (optional): Output the list in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep agents list --metadata-filter '{\"model\": \"gpt-4\"}'\n   ```\n\n5. **Get an Agent**\n\n   ##### `julep agents get`\n\n   **Description:**  \n   Get an agent by its ID.\n\n   **Usage:**\n\n   ```bash\n   julep agents get --id <agent_id> [--json]\n   ```\n\n   **Options:**\n\n   - `--json`, (optional): Output the agent in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep agents get --id abc123\n   ```\n\n\n---\n\n### Task Management\n\nManage tasks associated with AI agents.\n\n#### `julep tasks`\n\n**Description:**  \nParent command for managing tasks. Includes subcommands to create, update, delete, and list tasks.\n\n#### Subcommands\n\n1. **Create a Task**\n\n   ##### `julep tasks create`\n\n   **Description:**  \n   Create a new task for an agent.\n\n   **Usage:**\n\n   ```bash\n   julep tasks create --name \"Task Name\" --agent-id <agent_id> --definition \"path/to/task.yaml\" [--metadata '{\"status\": \"beta\"}'] [--inherit-tools]\n   ```\n\n   **Options:**\n\n   - `--agent-id`, `-a` (required): ID of the agent the task is associated with.\n   - `--definition`, `-d` (required): Path to the task definition YAML file.\n   - `--name`, `-n` (optional): Name of the task (if not provided, the name will be the file name of the definition).\n   - `--description`, (optional): Description of the task (if not provided, the description will be the file name of the definition).\n   - `--metadata`, (optional): Metadata for the task. Value is parsed as json.\n   - `--inherit-tools`, (optional): Inherit tools from the associated agent. Defaults to false if not specified.\n\n   If passed other options, they override the values in the definition file.\n\n   **Example:**\n\n   ```bash\n   julep tasks create --name \"Generate Story\" --description \"Writes a short story\" --agent-id abc123 --definition ./tasks/generate_story.yaml --metadata '{\"category\":\"fiction\"}'\n   ```\n\n2. **Update a Task**\n\n   ##### `julep tasks update`\n\n   **Description:**  \n   Update an existing task's details.\n\n   **Usage:**\n\n   ```bash\n   julep tasks update --id <task_id> [--name \"New Name\"] [--description \"New Description\"] [--definition \"new/path/to/task.yaml\"] [--metadata '{\"status\": \"published\"}'] [--inherit-tools true|false]\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the task to update.\n   - `--name`, `-n` (optional): New name for the task.\n   - `--description`, (optional): New description for the task.\n   - `--definition`, `-d` (optional): Path to the updated task definition YAML file.\n   - `--metadata`, (optional): Metadata for the task. Value is parsed as json.\n   - `--inherit-tools`, (optional): Inherit tools from the associated agent (true/false).\n\n   **Example:**\n\n   ```bash\n   julep tasks update --id task456 --name \"Advanced Story Generation\" --metadata '{\"priority\":\"high\"}'\n   ```\n\n3. **Delete a Task**\n\n   ##### `julep tasks delete`\n\n   **Description:**  \n   Delete an existing task.\n\n   **Usage:**\n\n   ```bash\n   julep tasks delete --id <task_id> [--force]\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the task to delete.\n   - `--force`, `-f` (optional): Force the deletion without prompting for confirmation.\n\n   **Example:**\n\n   ```bash\n   julep tasks delete --id task456\n   ```\n\n4. **List Tasks**\n\n   ##### `julep tasks list`\n\n   **Description:**  \n   List all tasks or filter based on criteria.\n\n   **Usage:**\n\n   ```bash\n   julep tasks list [--agent-id <agent_id>] [--json]\n   ```\n\n   **Options:**\n\n   - `--agent-id`, `-a` (optional): Filter tasks by associated agent ID.\n   - `--json`, (optional): Output the list in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep tasks list --agent-id abc123\n   ```\n\n---\n\n### Tool Management\n\nManage tools associated with AI agents.\n\n#### `julep tools`\n\n**Description:**  \nParent command for managing tools. Includes subcommands to create, update, delete, and list tools.\n\n#### Subcommands\n\n1. **Create a Tool**\n\n   ##### `julep tools create`\n\n   **Description:**  \n   Create a new tool for an agent.\n\n   **Usage:**\n\n   ```bash\n   julep tools create --name \"Tool Name\" --type <type> --agent-id <agent_id> --definition \"path/to/config.yaml\"\n   ```\n\n   **Options:**\n\n   - `--agent-id`, `-a` (required): ID of the agent the tool is associated with.\n   - `--definition`, `-d` (required): Path to the tool configuration YAML file.\n   - `--name`, `-n` (optional): Name of the tool.\n\n   If passed other options, they override the values in the definition file.\n\n   **Example:**\n\n   ```bash\n   julep tools create --name \"Web Search\" --agent-id abc123 --definition ./tools/web_search.yaml\n   ```\n\n2. **Update a Tool**\n\n   ##### `julep tools update`\n\n   **Description:**  \n   Update an existing tool's details.\n\n   **Usage:**\n\n   ```bash\n   julep tools update --id <tool_id> [--name \"New Name\"] [--definition \"new/path/to/config.yaml\"]\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the tool to update.\n   - `--definition`, `-d` (optional): Path to the updated tool configuration YAML file.\n   - `--name`, `-n` (optional): New name for the tool.\n\n   **Example:**\n\n   ```bash\n   julep tools update --id tool789 --name \"Advanced Web Search\"\n   ```\n\n3. **Delete a Tool**\n\n   ##### `julep tools delete`\n\n   **Description:**  \n   Delete an existing tool.\n\n   **Usage:**\n\n   ```bash\n   julep tools delete --id <tool_id> [--force]\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the tool to delete.\n   - `--force`, `-f` (optional): Force the deletion without prompting for confirmation.\n\n   **Example:**\n\n   ```bash\n   julep tools delete --id tool789\n   ```\n\n4. **List Tools**\n\n   ##### `julep tools list`\n\n   **Description:**  \n   List all tools or filter based on criteria.\n\n   **Usage:**\n\n   ```bash\n   julep tools list [--agent-id <agent_id>] [--json]\n   ```\n\n   **Options:**\n\n   - `--agent-id`, `-a` (optional): Filter tools by associated agent ID.\n   - `--task-id`, `-t` (optional): Filter tools by associated task ID.\n   - `--json`, (optional): Output the list in JSON format.\n\n   One of `--agent-id` or `--task-id` must be provided.\n\n   **Example:**\n\n   ```bash\n   julep tools list --agent-id abc123\n   ```\n\n---\n\n### Project Initialization\n\nInitialize a new Julep project using predefined templates.\n\n#### `julep init`\n\n**Description:**  \nInitialize a new Julep project by copying a template from the library repository.\n\n**Usage:**\n\n```bash\njulep init --template=<template_name> [--path=<path>]\n```\n\n**Options:**\n\n- `--template`, `-t` (optional): Name of the template to use (defaults to `hello-world`).\n- `--path`, `-p` (optional): Destination directory for the initialized project (default: current directory).\n- `--yes`, `-y` (optional): Skip confirmation prompt.\n\nConfirm before copying the template to the destination directory. Then open the project README.md\n\n**Behavior:**\n\n1. Copies the specified template folder from the `/library` repository to the destination directory.\n2. Ensures the destination directory contains a `julep.yaml` file, validating it as a valid Julep package.\n\n---\n\n### Synchronization\n\nSynchronize local directories with Julep packages.\n\n#### `julep sync`\n\n**Description:**  \nSynchronize the local Julep package with the Julep platform.\n\n**Usage:**\n\n```bash\njulep sync --source=<path> [--force-local] [--force-remote] [--watch]\n```\n\n**Options:**\n\n- `--source`, `-s` (required): Source directory containing the Julep package (must include `julep.yaml`).\n- `--force-local`, (optional): Force the local state to be overwritten by the remote state.\n- `--force-remote`, (optional): Force the remote state to be overwritten by the local state.\n- `--watch`, `-w` (optional): Watch the source directory for changes and synchronize automatically.\n\n**Behavior:**\n\n1. Validates the presence of `julep.yaml` in the source directory.\n2. Compares local and remote states:\n   - If local is newer and no conflicts, updates remote\n   - If remote is newer and no `--force-local` specified, raises an error with guidance\n   - If `--force-local` specified, updates local to match remote\n   - If `--force-remote` specified, updates remote to match local\n3. Provides feedback on the synchronization status.\n\n---\n\n### Importing Agents\n\nImport an agent from the Julep platform.\n\n#### `julep import`\n\n**Description:**  \nImport an agent from the Julep platform.\n\n**Usage:**\n\n```bash\njulep import --id <agent_id> --output=<path>\n```\n\n**Options:**\n\n- `--id`, (required): ID of the agent to import.\n- `--output`, `-o` (optional): Path to the directory to save the imported agent (defaults to the current directory).\n- `--yes`, `-y` (optional): Skip confirmation prompt.\n\n---\n\n### Chat Interaction\n\nInteract with a specific agent via chat.\n\n#### `julep chat`\n\n**Description:**  \nInitiate an interactive chat session with a specified AI agent.\n\n**Usage:**\n\n```bash\njulep chat --agent=<agent_id_or_name>\n```\n\n**Options:**\n\n- `--agent`, `-a` (required): ID or name of the agent to chat with.\n- `--situation`, `-s` (optional): Situation to chat about.\n- `--settings`, (optional): Chat settings (JSON string).\n\n**Example:**\n\n```bash\njulep chat --agent \"Storyteller\"\n```\n\n**Behavior:**\n\n1. Initiates an interactive terminal session.\n2. Sends user inputs to the agent and displays responses in real-time.\n3. Optionally loads and saves chat history based on provided options.\n\n---\n\n### Task Execution\n\nExecute specific tasks with provided inputs.\n\n#### `julep run`\n\n**Description:**  \nRun a defined task with specified input parameters.\n\n**Usage:**\n\n```bash\njulep run --task=<task_id_or_name> --input='<input_json>'\n```\n\n**Options:**\n\n- `--task`, `-t` (required): ID or name of the task to execute.\n- `--input`, (optional): JSON string representing the input for the task (defaults to `{}`).\n- `--input-file`, (optional): Path to a file containing the input for the task.\n- `--wait`, (optional): Wait for the task to complete before exiting, stream logs to stdout.\n\n**Example:**\n\n```bash\njulep run --task \"Generate Story\" --input '{\"idea\": \"A cat who learns to fly\"}'\n```\n\n**Behavior:**\n\n1. Submits the task for execution with the provided input.\n2. If `--wait` is specified, waits for the task to complete and outputs the final result.\n\n**Error handling example:**\n\n```bash\njulep run --task invalid-id --input '{}'\n# -> Error creating execution: Task not found\n```\n\n---\n\n### Execution Management\n\nManage task executions.\n\n#### `julep executions`\n\n**Description:**  \nParent command for managing executions. Includes subcommands to create, list, and cancel executions.\n\n#### Subcommands\n\n1. **Create an Execution**\n\n   ##### `julep executions create`\n\n   **Description:**  \n   Create a new execution for a task.\n\n   **Usage:**\n\n   ```bash\n   julep executions create --task=<task_id_or_name> --input='<input_json>'\n   ```\n\n   **Options:**\n\n   - `--task`, `-t` (required): ID or name of the task to execute.\n   - `--input`, (optional): JSON string representing the input for the task (defaults to `{}`).\n   - `--input-file`, (optional): Path to a file containing the input for the task.\n\n   **Example:**\n\n   ```bash\n   julep executions create --task \"Generate Story\" --input '{\"idea\": \"A cat who learns to fly\"}'\n   ```\n\n2. **List Executions**\n\n   ##### `julep executions list`\n\n   **Description:**  \n   List all executions or filter based on criteria.\n\n   **Usage:**\n\n   ```bash\n   julep executions list [--task-id <task_id>] [--json]\n   ```\n\n   **Options:**\n\n   - `--task-id`, `-t` (optional): Filter executions by associated task ID.\n   - `--json`, (optional): Output the list in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep executions list --task-id abc123\n   ```\n\n3. **Cancel an Execution**\n\n   ##### `julep executions cancel`\n\n   **Description:**  \n   Cancel an existing execution.\n\n   **Usage:**\n\n   ```bash\n   julep executions cancel --id <execution_id>\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the execution to cancel.\n\n   **Example:**\n\n   ```bash\n   julep executions cancel --id exec123\n   ```\n\n---\n\n### Log Retrieval\n\nRetrieve logs related to specific task executions.\n\n#### `julep logs`\n\n**Description:**  \nFetch and display logs for a particular task execution.\n\n**Usage:**\n\n```bash\njulep logs --execution-id=<execution_id>\n```\n\n**Options:**\n\n- `--execution-id`, `-e` (required): ID of the task execution to retrieve logs for.\n- `--tail`, `-t` (optional): Continuously stream logs as they are generated.\n- `--since=<timestamp>`, `-s` (optional): Retrieve logs generated after the specified timestamp.\n- `--json`, (optional): Output the logs in JSON format.\n\n**Example:**\n\n```bash\njulep logs --execution-id exec123 --tail\n```\n\n**Behavior:**\n\n1. Fetches logs for the specified execution ID.\n2. If `--tail` is used, streams logs in real-time.\n\n---\n\n### Project Assistant\n\nInitiate a guided setup for new Julep projects.\n\n#### `julep assistant`\n\n**Description:**\n`julep assistant` launches an interactive prompt (a \"wizard\" mode) that uses AI to interpret plain-English requests and transform them into valid `julep` CLI commands. Think of it as a chat-based REPL that helps you build and manage your Julep resources more intuitively.\n\n**Usage:**\n```bash\njulep assistant\n```\n\n**Behavior:**\n1. Opens a session where you can type natural language instructions (e.g., *\"Create a GPT-4 agent named MarketingBot\"*).\n2. The assistant uses an LLM (Large Language Model) to suggest one or more CLI commands that match your request (e.g., `julep agents create --name \"MarketingBot\" --model \"gpt-4\"`).\n3. Displays the suggested command(s) and prompts for confirmation:\n   - **(Y)**: Run the command immediately, showing output in the same session.\n   - **(n)**: Skip or cancel the suggestion.\n   - **(edit)**: Manually revise the command prior to execution.\n4. Returns to the prompt for follow-up instructions, giving you a conversational workflow (e.g., *\"Now list all my tasks\"*, *\"Delete the agent I just created\"*, etc.).\n\n**Example Session:**\n```\n$ julep assistant\n\nWelcome to Julep Assistant!\nType your request in plain English, or type 'exit' to quit.\n\nassistant> Create a GPT-4 agent named MarketingBot\nProposed command:\njulep agents create --name \"MarketingBot\" --model \"gpt-4\"\n\nExecute? (Y/n/edit)\nY\n[Running command...]\nAgent created successfully (id: agent_654321)\n\nassistant> List all tasks\nProposed command:\njulep tasks list\n\nExecute? (Y/n/edit)\nY\n[Running command...]\n[No tasks found]\n\nassistant> exit\n```\n\n**Rationale & Benefits:**\n- **Simplifies Onboarding**: Users can manage agents, tasks, and tools with minimal knowledge of CLI flags and syntax.\n- **Conversational Guidance**: The assistant can ask clarifying questions if a request is ambiguous and recall recently created or updated resources.\n- **Expandable**: Future enhancements might include richer multi-step workflows, advanced editing, and deeper project insights (e.g., referencing `julep-lock.json` state).\n\nThis feature is particularly useful for new users or those who want a quick, conversational way to build out a project without memorizing every `julep` subcommand. Simply type what you want in natural language, confirm or edit the generated commands, and let the assistant handle the rest.\n\n### Common Commands\n\n#### Version\n\n##### `julep --version`, `julep -v`\n\n**Description:**\nDisplay the version of the CLI.\n\n**Usage:**\n```bash\njulep --version\n```\n\n#### Help\n\n##### `julep`, `julep --help`, `julep -h`\n\n**Description:**\nDisplay help information for the CLI.\n\n**Usage:**\n```bash\njulep --help\n```\n\n#### Global Options\n\nThe following options can be used with any command:\n\n##### Standard Input/Output Handling\n\nThe CLI supports reading from standard input (stdin) and writing to standard output (stdout) for better integration with Unix-style pipelines and scripting:\n\n- Use `-` as a filename to read from stdin or write to stdout\n- Commands that accept file inputs (like `create` and `update`) can read from stdin\n- List/get commands can output directly to stdout for piping\n\n**Examples:**\n\nReading definition from stdin:\n```bash\ncat agent.yaml | julep agents create -d -  # Read definition from stdin\necho '{\"name\": \"MyAgent\"}' | julep agents create -i -  # Read JSON from stdin\n```\n\nPiping between commands:\n```bash\njulep agents get abc123 | julep agents create -d -  # Clone an agent\njulep agents list | jq '.[] | select(.model==\"gpt-4\")'  # Filter with jq\n```\n\nWriting output:\n```bash\njulep agents list > agents.yaml  # Save list to file\njulep agents get abc123 | ssh remote-host \"julep agents create -d -\"  # Transfer to remote\n```\n\n**Behavior:**\n- Commands detect if stdin is a pipe or terminal\n- JSON/YAML format is auto-detected for stdin\n- Binary data is supported for applicable inputs\n- Exit codes follow Unix conventions (0=success, non-zero=error)\n\n##### Quiet Mode\n\n`--quiet`, `-q`: Suppress all output except errors and explicitly requested data. Useful for scripting.\n\n**Example:**\n```bash\njulep agents list --quiet  # Only outputs the agent list, no status messages\n```\n\n##### Color Output\n\n`--color`, `--no-color`: Enable or disable colored output. By default, color is:\n- Enabled for TTY (interactive terminal) sessions\n- Disabled for non-TTY sessions (pipes, redirects, etc.)\n- Disabled if NO_COLOR environment variable is set\n- Disabled if TERM=dumb\n\nThe CLI will automatically detect these conditions and adjust color output accordingly.\n\n**Examples:**\n```bash\njulep agents list --no-color  # Force disable colored output\njulep agents list --color     # Force enable colored output\n```\n\n**Environment Variables:**\n- `NO_COLOR`: Set this to any value to disable color output\n- `FORCE_COLOR`: Set this to any value to force color output\n\n"
  },
  {
    "path": "src/cli/cli-reference.md",
    "content": "# `julep`\n\nCommand line interface for the Julep platform\n\n**Usage**:\n\n```console\n$ julep [OPTIONS] COMMAND [ARGS]...\n```\n\n**Options**:\n\n* `--no-color`: Disable colored output  [default: True]\n* `-q, --quiet`: Suppress all output except errors and explicitly requested data\n* `-v, --version`: Show version and exit\n* `--help`: Show this message and exit.\n\n**Commands**:\n\n* `tui`: Open Textual TUI.\n* `auth`: Authenticate with the Julep platform.\n* `chat`: Initiate an interactive chat session with...\n* `init`: Initialize a new Julep project by copying...\n* `logs`: Log the output of an execution.\n* `ls`: List synced entities in a julep source...\n* `run`: Run a defined task with specified input...\n* `sync`: Synchronize local package with Julep platform\n* `agents`: Manage AI agents\n* `tasks`: Manage tasks\n* `tools`: Manage tools\n* `import`: Import entities from the Julep platform\n* `executions`: Manage executions\n\n## `julep tui`\n\nOpen Textual TUI.\n\n**Usage**:\n\n```console\n$ julep tui [OPTIONS]\n```\n\n**Options**:\n\n* `--help`: Show this message and exit.\n\n## `julep auth`\n\nAuthenticate with the Julep platform.\n\nSaves your API key to ~/.config/julep/config.yml for use with other commands.\nThe API key can be found in your Julep account settings.\n\n**Usage**:\n\n```console\n$ julep auth [OPTIONS]\n```\n\n**Options**:\n\n* `-k, --api-key TEXT`: Your Julep API key for authentication  [env var: JULEP_API_KEY]\n* `-e, --environment TEXT`: Environment to use (defaults to production)  [default: production]\n* `--help`: Show this message and exit.\n\n## `julep chat`\n\nInitiate an interactive chat session with a specified AI agent.\n\nThe chat session runs in the terminal, allowing real-time conversation with the agent.\n\n**Usage**:\n\n```console\n$ julep chat [OPTIONS]\n```\n\n**Options**:\n\n* `-a, --agent TEXT`: ID or name of the agent to chat with  [required]\n* `-s, --situation TEXT`: Situation to chat about\n* `--settings LOADS`: Chat settings as a JSON string\n* `--help`: Show this message and exit.\n\n## `julep init`\n\nInitialize a new Julep project by copying a template from the library repository.\n\nThis will:\n\n1. Copy the specified template folder from the /library repository\n2. Create a new project in the destination directory\n3. Ensure the destination contains a valid julep.yaml file\n\n**Usage**:\n\n```console\n$ julep init [OPTIONS]\n```\n\n**Options**:\n\n* `-t, --template TEXT`: Name of the template to use from the library repository  [default: hello-world]\n* `-p, --path PATH`: Destination directory for the initialized project (default: current directory)\n* `-y, --yes`: Skip confirmation prompt\n* `--help`: Show this message and exit.\n\n## `julep logs`\n\nLog the output of an execution.\n\n**Usage**:\n\n```console\n$ julep logs [OPTIONS]\n```\n\n**Options**:\n\n* `-e, --execution-id TEXT`: ID of the execution to log  [required]\n* `-t, --tail`: Whether to tail the logs\n* `--help`: Show this message and exit.\n\n## `julep ls`\n\nList synced entities in a julep source project.\n\n**Usage**:\n\n```console\n$ julep ls [OPTIONS]\n```\n\n**Options**:\n\n* `-s, --source PATH`: Path to list\n* `--help`: Show this message and exit.\n\n## `julep run`\n\nRun a defined task with specified input parameters\n\n**Usage**:\n\n```console\n$ julep run [OPTIONS]\n```\n\n**Options**:\n\n* `-t, --task TEXT`: ID or name of the task to execute  [required]\n* `--input TEXT`: JSON string representing the input for the task (defaults to {})\n* `--input-file PATH`: Path to a file containing the input for the task\n* `--wait`: Wait for the task to complete before exiting, stream logs to stdout\n* `--help`: Show this message and exit.\n\n## `julep sync`\n\nSynchronize local package with Julep platform\n\n**Usage**:\n\n```console\n$ julep sync [OPTIONS]\n```\n\n**Options**:\n\n* `-s, --source PATH`: Source directory containing julep.yaml\n* `--force-local`: Force local state to match remote\n* `--force-remote`: Force remote state to match local\n* `-d, --dry-run`: Simulate synchronization without making changes\n* `--help`: Show this message and exit.\n\n## `julep agents`\n\nManage AI agents\n\n**Usage**:\n\n```console\n$ julep agents [OPTIONS] COMMAND [ARGS]...\n```\n\n**Options**:\n\n* `--help`: Show this message and exit.\n\n**Commands**:\n\n* `create`: Create a new AI agent.\n* `update`: Update an existing AI agent&#x27;s details\n* `delete`: Delete an existing AI agent\n* `list`: List all AI agents or filter based on...\n* `get`: Get an agent by its ID\n\n### `julep agents create`\n\nCreate a new AI agent. Either provide a definition file or use the other options.\n\n**Usage**:\n\n```console\n$ julep agents create [OPTIONS]\n```\n\n**Options**:\n\n* `-n, --name TEXT`: Name of the agent\n* `-m, --model TEXT`: Model to be used by the agent\n* `-a, --about TEXT`: Description of the agent\n* `--default-settings TEXT`: Default settings for the agent (JSON string)\n* `--metadata TEXT`: Metadata for the agent (JSON string)\n* `--instructions TEXT`: Instructions for the agent, can be specified multiple times\n* `-d, --definition TEXT`: Path to an agent definition file\n* `--help`: Show this message and exit.\n\n### `julep agents update`\n\nUpdate an existing AI agent&#x27;s details\n\n**Usage**:\n\n```console\n$ julep agents update [OPTIONS]\n```\n\n**Options**:\n\n* `--id TEXT`: ID of the agent to update  [required]\n* `-n, --name TEXT`: New name for the agent\n* `-m, --model TEXT`: New model for the agent\n* `-a, --about TEXT`: New description for the agent\n* `--metadata TEXT`: Metadata for the agent (JSON string)\n* `--default-settings TEXT`: Default settings for the agent (JSON string)\n* `--instructions TEXT`: Instructions for the agent, can be specified multiple times\n* `--help`: Show this message and exit.\n\n### `julep agents delete`\n\nDelete an existing AI agent\n\n**Usage**:\n\n```console\n$ julep agents delete [OPTIONS]\n```\n\n**Options**:\n\n* `--id TEXT`: ID of the agent to delete  [required]\n* `-f, --force`: Force deletion without confirmation\n* `--help`: Show this message and exit.\n\n### `julep agents list`\n\nList all AI agents or filter based on metadata\n\n**Usage**:\n\n```console\n$ julep agents list [OPTIONS]\n```\n\n**Options**:\n\n* `--metadata-filter TEXT`: Filter agents based on metadata criteria (JSON string)\n* `--json`: Output the list in JSON format\n* `--help`: Show this message and exit.\n\n### `julep agents get`\n\nGet an agent by its ID\n\n**Usage**:\n\n```console\n$ julep agents get [OPTIONS]\n```\n\n**Options**:\n\n* `--id TEXT`: ID of the agent to retrieve  [required]\n* `--json`: Output in JSON format\n* `--help`: Show this message and exit.\n\n## `julep tasks`\n\nManage tasks\n\n**Usage**:\n\n```console\n$ julep tasks [OPTIONS] COMMAND [ARGS]...\n```\n\n**Options**:\n\n* `--help`: Show this message and exit.\n\n**Commands**:\n\n* `create`: Create a new task for an agent.\n* `update`: Update an existing task&#x27;s details\n* `list`: List all tasks or filter based on criteria\n\n### `julep tasks create`\n\nCreate a new task for an agent.\n\nIf other options are provided alongside the definition file, they will override values in the definition.\n\n**Usage**:\n\n```console\n$ julep tasks create [OPTIONS]\n```\n\n**Options**:\n\n* `-a, --agent-id TEXT`: ID of the agent the task is associated with  [required]\n* `-d, --definition TEXT`: Path to the task definition YAML file  [required]\n* `-n, --name TEXT`: Name of the task (if not provided, uses the definition file name)\n* `--description TEXT`: Description of the task (if not provided, uses the definition file name)\n* `--metadata TEXT`: JSON metadata for the task\n* `--inherit-tools`: Inherit tools from the associated agent\n* `--help`: Show this message and exit.\n\n### `julep tasks update`\n\nUpdate an existing task&#x27;s details\n\n**Usage**:\n\n```console\n$ julep tasks update [OPTIONS]\n```\n\n**Options**:\n\n* `-a, --agent-id TEXT`: ID of the agent the task is associated with  [required]\n* `--id TEXT`: ID of the task to update  [required]\n* `-n, --name TEXT`: New name for the task\n* `--description TEXT`: New description for the task\n* `-d, --definition TEXT`: Path to the updated task definition YAML file\n* `--metadata TEXT`: JSON metadata for the task\n* `--inherit-tools`: Inherit tools from the associated agent\n* `--help`: Show this message and exit.\n\n### `julep tasks list`\n\nList all tasks or filter based on criteria\n\n**Usage**:\n\n```console\n$ julep tasks list [OPTIONS]\n```\n\n**Options**:\n\n* `-a, --agent-id TEXT`: Filter tasks by associated agent ID\n* `-j, --json`: Output the list in JSON format\n* `--help`: Show this message and exit.\n\n## `julep tools`\n\nManage tools\n\n**Usage**:\n\n```console\n$ julep tools [OPTIONS] COMMAND [ARGS]...\n```\n\n**Options**:\n\n* `--help`: Show this message and exit.\n\n**Commands**:\n\n* `create`: Create a new tool for an agent.\n* `update`: Update an existing tool&#x27;s details.\n* `delete`: Delete an existing tool.\n* `list`: List all tools or filter based on criteria.\n\n### `julep tools create`\n\nCreate a new tool for an agent.\n\nRequires either a definition file or direct parameters. If both are provided,\ncommand-line options override values from the definition file.\n\n**Usage**:\n\n```console\n$ julep tools create [OPTIONS]\n```\n\n**Options**:\n\n* `-a, --agent-id TEXT`: ID of the agent the tool is associated with  [required]\n* `-d, --definition TEXT`: Path to the tool configuration YAML file  [required]\n* `-n, --name TEXT`: Name of the tool (if not provided, uses filename from definition)\n* `--help`: Show this message and exit.\n\n### `julep tools update`\n\nUpdate an existing tool&#x27;s details.\n\nUpdates can be made using either a definition file or direct parameters.\nIf both are provided, command-line options override values from the definition file.\n\n**Usage**:\n\n```console\n$ julep tools update [OPTIONS]\n```\n\n**Options**:\n\n* `-a, --agent-id TEXT`: ID of the agent the tool is associated with  [required]\n* `--id TEXT`: ID of the tool to update  [required]\n* `-d, --definition TEXT`: Path to the updated tool configuration YAML file\n* `-n, --name TEXT`: New name for the tool\n* `--help`: Show this message and exit.\n\n### `julep tools delete`\n\nDelete an existing tool.\n\nBy default, prompts for confirmation unless --force is specified.\n\n**Usage**:\n\n```console\n$ julep tools delete [OPTIONS]\n```\n\n**Options**:\n\n* `-a, --agent-id TEXT`: ID of the agent the tool is associated with  [required]\n* `--id TEXT`: ID of the tool to delete  [required]\n* `-f, --force`: Force the deletion without prompting for confirmation\n* `--help`: Show this message and exit.\n\n### `julep tools list`\n\nList all tools or filter based on criteria.\n\nEither --agent-id or --task-id must be provided to filter the tools list.\n\n**Usage**:\n\n```console\n$ julep tools list [OPTIONS]\n```\n\n**Options**:\n\n* `-a, --agent-id TEXT`: Filter tools by associated agent ID\n* `--json`: Output the list in JSON format\n* `--help`: Show this message and exit.\n\n## `julep import`\n\nImport entities from the Julep platform\n\n**Usage**:\n\n```console\n$ julep import [OPTIONS] COMMAND [ARGS]...\n```\n\n**Options**:\n\n* `--help`: Show this message and exit.\n\n**Commands**:\n\n* `agent`: Import an agent from the Julep platform.\n\n### `julep import agent`\n\nImport an agent from the Julep platform.\n\n**Usage**:\n\n```console\n$ julep import agent [OPTIONS]\n```\n\n**Options**:\n\n* `-i, --id TEXT`: ID of the agent to import  [required]\n* `-s, --source PATH`: Path to the source directory. Defaults to current working directory\n* `-o, --output PATH`: Path to save the imported agent. Defaults to &lt;project_dir&gt;/src/agents\n* `-y, --yes`: Skip confirmation prompt\n* `--help`: Show this message and exit.\n\n## `julep executions`\n\nManage executions\n\n**Usage**:\n\n```console\n$ julep executions [OPTIONS] COMMAND [ARGS]...\n```\n\n**Options**:\n\n* `--help`: Show this message and exit.\n\n**Commands**:\n\n* `create`: Create a new execution.\n\n### `julep executions create`\n\nCreate a new execution.\n\n**Usage**:\n\n```console\n$ julep executions create [OPTIONS]\n```\n\n**Options**:\n\n* `--task-id TEXT`: ID of the task to execute  [required]\n* `--input TEXT`: Input for the execution  [required]\n* `--help`: Show this message and exit.\n\n"
  },
  {
    "path": "src/cli/poe_tasks.toml",
    "content": "[tasks]\nformat = \"ruff format\"\nlint = \"ruff check\"\ntypecheck = \"ty check\"\ncheck = [\n    \"lint\",\n    \"format\",\n    \"typecheck\",\n]\n\n[tasks.test]\nenv = { JULEP_CLI_TESTING = \"true\", PYTHONPATH = \"{PYTHONPATH}:.\" }\ncmd = \"pytest tests/ -v\"\n"
  },
  {
    "path": "src/cli/pyproject.toml",
    "content": "[build-system]\nrequires = [\"setuptools>=61.0\"]\nbuild-backend = \"setuptools.build_meta\"\n\n[project]\nname = \"julep-cli\"\nversion = \"0.2.1-alpha0\"\ndescription = \"Julep CLI\"\nreadme = \"README.md\"\nrequires-python = \">=3.11,<3.13\"\nauthors = [\n  { name = \"Julep\", email = \"developers@julep.ai\" },\n]\n\ndependencies = [\n  \"anyio>=4.4.0\",\n  \"beartype>=0.18.5\",\n  \"environs>=10.3.0\",\n  \"jsonschema>=4.22.0\",\n  \"openai>=1.55.0\",\n  \"pandas>=2.2.2\",\n  \"pydantic[email]>=2.10.2\",\n  \"uvloop>=0.21.0\",\n  \"xxhash>=3.5.0\",\n  \"unique-namer>=1.6.1\",\n  \"typer>=0.15.1\",\n  \"textual>=1.0.0\",\n  \"trogon[typer]>=0.6.0\",\n  \"typer-config[yaml]>=1.4.2\",\n  \"julep>=2,<3\",\n  \"questionary>=2.1.0\",\n  \"db-sqlite3>=0.0.1\",\n  \"stringcase>=1.2.0\",\n  \"pyjwt>=2.10.1\",\n  \"watchdog>=6.0.0\",\n  \"requests>=2.32.3\",\n]\n\n[project.scripts]\njulep = \"julep_cli:app\"\njulep-cli = \"julep_cli:app\"  # For backwards compatibility\n\n[dependency-groups]\ndev = [\n  \"ipython>=8.30.0\",\n  \"ipywidgets>=8.1.5\",\n  \"jupyterlab>=4.3.1\",\n  \"pip>=24.3.1\",\n  \"poethepoet>=0.34,<1\",\n  \"pyinstaller>=6.14,<7\",\n  \"ruff>=0.11,<1\",\n  \"textual-dev>=1.7.0\",\n  \"ty>=0.0.1a8\",\n  \"pytest>=8.0.0\",\n  \"pytest-mock>=3.14.0\",\n]\n\n[tool.setuptools]\npy-modules = [\n  \"julep_cli\",\n]\n\n[tool.setuptools.packages.find]\nwhere = [\"src\"]\n\n[tool.ty.src]\nroot = \"./src\"\n\n[tool.ty.rules]\ninvalid-argument-type = \"ignore\"\ninvalid-assignment = \"ignore\"\ninvalid-parameter-default = \"ignore\"\ninvalid-type-form = \"ignore\"\nmissing-argument = \"ignore\"\nno-matching-overload = \"ignore\"\nnot-iterable = \"ignore\"\npossibly-unbound-attribute = \"ignore\"\npossibly-unbound-import = \"ignore\"\nredundant-cast = \"ignore\"\nunknown-argument = \"ignore\"\nunresolved-attribute = \"ignore\"\nunsupported-operator = \"ignore\"\nunused-ignore-comment = \"ignore\"\n"
  },
  {
    "path": "src/cli/spec.md",
    "content": "# Julep CLI Specification\n\nThe `julep-cli` CLI tool provides a comprehensive command-line interface for interacting with the Julep platform. It enables authentication, management of agents, tasks, and tools, project initialization, synchronization, interaction with agents via chat, task execution, log retrieval, and more. This specification outlines the commands, options, and best practices to ensure a consistent and user-friendly experience.\n\n## Table of Contents\n\n- [Julep CLI Specification](#julep-cli-specification)\n  - [Table of Contents](#table-of-contents)\n  - [Overview](#overview)\n    - [Components](#components)\n    - [Schema for `julep.yaml`](#schema-for-julepyaml)\n    - [Schema for `julep-lock.json`](#schema-for-julep-lockjson)\n    - [How the lock file is used](#how-the-lock-file-is-used)\n      - [`relationships` Details](#relationships-details)\n      - [How the CLI Should Use It](#how-the-cli-should-use-it)\n  - [Installation](#installation)\n  - [Configuration](#configuration)\n  - [Commands](#commands)\n    - [Authentication](#authentication)\n      - [`julep auth`](#julep-auth)\n    - [Agent Management](#agent-management)\n      - [`julep agents`](#julep-agents)\n      - [Subcommands](#subcommands)\n        - [`julep agents create`](#julep-agents-create)\n        - [`julep agents update`](#julep-agents-update)\n        - [`julep agents delete`](#julep-agents-delete)\n        - [`julep agents list`](#julep-agents-list)\n        - [`julep agents get`](#julep-agents-get)\n    - [Task Management](#task-management)\n      - [`julep tasks`](#julep-tasks)\n      - [Subcommands](#subcommands-1)\n        - [`julep tasks create`](#julep-tasks-create)\n        - [`julep tasks update`](#julep-tasks-update)\n        - [`julep tasks delete`](#julep-tasks-delete)\n        - [`julep tasks list`](#julep-tasks-list)\n        - [`julep tasks get`](#julep-tasks-get)\n    - [Tool Management](#tool-management)\n      - [`julep tools`](#julep-tools)\n      - [Subcommands](#subcommands-2)\n        - [`julep tools create`](#julep-tools-create)\n        - [`julep tools update`](#julep-tools-update)\n        - [`julep tools delete`](#julep-tools-delete)\n        - [`julep tools list`](#julep-tools-list)\n        - [`julep tools get`](#julep-tools-get)\n    - [Project Initialization](#project-initialization)\n      - [`julep init`](#julep-init)\n    - [Synchronization](#synchronization)\n      - [`julep sync`](#julep-sync)\n    - [Importing Agents](#importing-agents)\n      - [`julep import`](#julep-import)\n    - [Chat Interaction](#chat-interaction)\n      - [`julep chat`](#julep-chat)\n    - [Task Execution](#task-execution)\n      - [`julep run`](#julep-run)\n    - [Execution Management](#execution-management)\n      - [`julep executions`](#julep-executions)\n      - [Subcommands](#subcommands-3)\n        - [`julep executions create`](#julep-executions-create)\n        - [`julep executions list`](#julep-executions-list)\n        - [`julep executions cancel`](#julep-executions-cancel)\n    - [Log Retrieval](#log-retrieval)\n      - [`julep logs`](#julep-logs)\n    - [Project Wizard](#project-wizard)\n      - [`julep assistant`](#julep-assistant)\n    - [Common Commands](#common-commands)\n      - [Version](#version)\n        - [`julep --version`, `julep -v`](#julep---version-julep--v)\n      - [Help](#help)\n        - [`julep`, `julep --help`, `julep -h`](#julep-julep---help-julep--h)\n      - [Global Options](#global-options)\n        - [Standard Input/Output Handling](#standard-inputoutput-handling)\n        - [Quiet Mode](#quiet-mode)\n        - [Color Output](#color-output)\n\n---\n\n## Overview\n\nThe `julep-cli` CLI is designed to streamline interactions with the Julep platform, allowing developers to efficiently manage AI agents, tasks, tools, and projects directly from the terminal. It adheres to industry-standard CLI conventions, ensuring an intuitive and predictable user experience.\n\nFor commands that output raw data (like `get`, `list`, etc.), the CLI will print/return YAML by default. If the `--json` flag is specified, the output will be in JSON format instead.\n\n### Components\n\nThere are 3 main components to the `julep-cli` CLI:\n\n1. The project management stuff (init, sync, etc.)\n2. The static stuff (agents, tasks, tools, etc.)\n3. The dynamic stuff (chat, run, logs, etc.)\n\nDifferent files that are important:\n- `~/.config/julep/config.yml`: The configuration file for the CLI.\n- `julep.yaml`: The configuration file for the project.\n- `julep-lock.json`: The lock file for the project that tracks server state.\n- `src/*.yaml`: The object definitions for the project (agents, tasks, tools, etc.).\n\n### Schema for `julep.yaml`\n\n```yaml\nagents:\n- definition: path/to/agent.yaml\n- definition: path/to/agent.yaml\n\ntasks:\n- agent_id: \"{agents[0].id}\"\n  definition: path/to/task.yaml\n- agent_id: \"{agents[1].id}\"\n  definition: path/to/task.yaml\n\ntools:\n- agent_id: \"{agents[0].id}\"\n  definition: path/to/tool.yaml\n- agent_id: \"{agents[1].id}\"\n  definition: path/to/tool.yaml\n```\n\n### Schema for `julep-lock.json`\n\n```json\n{\n  \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n  \"$id\": \"https://example.com/julep-lock.schema.json\",\n  \"title\": \"Julep Lockfile Schema\",\n  \"type\": \"object\",\n  \"properties\": {\n    \"lockfile_version\": {\n      \"type\": \"string\",\n      \"description\": \"Version of the lockfile format.\"\n    },\n    \"updated_at\": {\n      \"type\": \"string\",\n      \"format\": \"date-time\",\n      \"description\": \"Timestamp representing when the lockfile was last updated.\"\n    },\n    \"agents\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"Path to the agent definition file.\"\n          },\n          \"id\": {\n            \"type\": \"string\",\n            \"description\": \"Unique identifier of the agent from the remote server.\"\n          },\n          \"last_synced\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\",\n            \"description\": \"Timestamp of the last synchronization with the remote server.\"\n          },\n          \"revision_hash\": {\n            \"type\": \"string\",\n            \"description\": \"Hash of the local file used for change detection.\"\n          }\n        },\n        \"required\": [\"path\", \"id\", \"last_synced\", \"revision_hash\"],\n        \"additionalProperties\": false\n      }\n    },\n    \"tasks\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"Path to the task definition file.\"\n          },\n          \"id\": {\n            \"type\": \"string\",\n            \"description\": \"Unique identifier of the task from the remote server.\"\n          },\n          \"last_synced\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\",\n            \"description\": \"Timestamp of the last synchronization with the remote server.\"\n          },\n          \"revision_hash\": {\n            \"type\": \"string\",\n            \"description\": \"Hash of the local file used for change detection.\"\n          }\n        },\n        \"required\": [\"path\", \"id\", \"last_synced\", \"revision_hash\"],\n        \"additionalProperties\": false\n      }\n    },\n    \"tools\": {\n      \"type\": \"array\",\n      \"items\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"path\": {\n            \"type\": \"string\",\n            \"description\": \"Path to the tool definition file.\"\n          },\n          \"id\": {\n            \"type\": \"string\",\n            \"description\": \"Unique identifier of the tool from the remote server.\"\n          },\n          \"last_synced\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\",\n            \"description\": \"Timestamp of the last synchronization with the remote server.\"\n          },\n          \"revision_hash\": {\n            \"type\": \"string\",\n            \"description\": \"Hash of the local file used for change detection.\"\n          }\n        },\n        \"required\": [\"path\", \"id\", \"last_synced\", \"revision_hash\"],\n        \"additionalProperties\": false\n      }\n    },\n    \"relationships\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"tasks\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\",\n                \"description\": \"Identifier of the task.\"\n              },\n              \"agent_id\": {\n                \"type\": \"string\",\n                \"description\": \"Identifier of the associated agent.\"\n              }\n            },\n            \"required\": [\"id\", \"agent_id\"],\n            \"additionalProperties\": false\n          }\n        },\n        \"tools\": {\n          \"type\": \"array\",\n          \"items\": {\n            \"type\": \"object\",\n            \"properties\": {\n              \"id\": {\n                \"type\": \"string\",\n                \"description\": \"Identifier of the tool.\"\n              },\n              \"agent_id\": {\n                \"type\": \"string\",\n                \"description\": \"Identifier of the associated agent.\"\n              }\n            },\n            \"required\": [\"id\", \"agent_id\"],\n            \"additionalProperties\": false\n          }\n        }\n      },\n      \"required\": [\"tasks\", \"tools\"],\n      \"additionalProperties\": false\n    }\n  },\n  \"required\": [\"lockfile_version\", \"agents\", \"tasks\", \"tools\", \"relationships\"],\n  \"additionalProperties\": false\n}\n```\n\n**Example:**\n\n```json\n{\n  // Minimal versioning for the lock file's structure.\n  // Bump if you ever change this schema in a backward-incompatible way.\n  \"lockfile_version\": \"0.1.0\",\n\n  // (Optional) Timestamp or ISO string representing when this lock was last updated.\n  // \"updated_at\": \"2025-01-27T14:13:52.123Z\",\n\n  // Agents, tasks, and tools sections store local definitions alongside remote IDs.\n  \"agents\": [\n    {\n      \"path\": \"src/agents/awesome-agent.yaml\",\n      \"id\": \"agent_123456\",               // The remote ID from the server\n      \"last_synced\": \"2025-01-27T14:13:52.123Z\",\n      \"revision_hash\": \"abc123def456...\"   // Hash of local file for change detection\n    }\n  ],\n  \"tasks\": [\n    {\n      \"path\": \"src/tasks/generate-story.yaml\",\n      \"id\": \"task_789abcd\",\n      \"last_synced\": \"2025-01-27T14:13:52.125Z\",\n      \"revision_hash\": \"def456abc789...\"\n    }\n  ],\n  \"tools\": [\n    {\n      \"path\": \"src/tools/web_search.yaml\",\n      \"id\": \"tool_xyz999\",\n      \"last_synced\": \"2025-01-27T14:13:52.130Z\",\n      \"revision_hash\": \"ghi678jkl012...\"\n    }\n  ],\n\n  // A separate section for relationships/\"foreign key\" references\n  // so that tasks and tools can specify which agent they relate to.\n  \"relationships\": {\n    \"tasks\": [\n      {\n        \"id\": \"task_789abcd\",\n        \"agent_id\": \"agent_123456\"\n      }\n    ],\n    \"tools\": [\n      {\n        \"id\": \"tool_xyz999\",\n        \"agent_id\": \"agent_123456\"\n      }\n    ]\n  }\n}\n```\n\n### How the lock file is used\n\nThe `julep-lock.json` file serves several critical purposes:\n\n1. **State Tracking**: It maintains a record of the remote server state, mapping local files to their remote counterparts by storing IDs and revision hashes.\n\n2. **Change Detection**: The `revision_hash` field enables the CLI to detect when local files have changed and need to be synced.\n\n3. **Relationship Management**: Through the `relationships` section, it tracks which tasks and tools are associated with which agents.\n\n4. **Team Collaboration**: By checking the lock file into version control, team members can share the same remote state and avoid conflicts.\n\n#### Version Control\n\nThe `julep-lock.json` file **should be committed to version control**. This is important because:\n\n- It ensures all team members are working with the same remote state\n- It prevents accidental creation of duplicate remote resources\n- It maintains consistent relationships between agents, tasks, and tools across the team\n- It enables tracking of remote state changes through version control history\n\nThis is similar to how package managers like npm and yarn use lock files to ensure consistent dependencies across team members.\n\n#### `relationships` Details\n\n*   `**tasks**`: An array where each item includes `id` and `agent_id`.\n    *   This is the CLI's record that _this remote task is associated with that remote agent._\n*   `**tools**`: Same pattern: a `id` references a remote tool, and `agent_id` references the remote agent.\n*   You could expand the `relationships` object to store other relationships (e.g., task-tool references) if that's a thing in your system. You have the flexibility to break down relationships by type.\n\n#### How the CLI Should Use It\n\n**On** `**julep sync**`:\n1.  Parse `julep.yaml` plus any local `.yaml` definitions.\n2.  Compare to `julep-lock.json`:\n      *   If you find a definition that's **not** in the lock file, create it on the server. Then save the new `id` to the lock file.\n      *   If you see a definition in the lock file but the `revision_hash` changed, update it on the server.\n      *   If an entry is in the lock file but the file no longer exists locally, prompt the user to delete the remote definition (or do so automatically).\n3.  Do the same logic for tasks and tools.\n4.  Finally, examine or rebuild the `relationships` array by reading each local definition. If a local definition says \"this task uses agent X,\" the CLI sets or updates the corresponding relationship in the lock file.\n\n---\n\n## Installation\n\nThe `julep` CLI can be installed using pipx:\n\n```bash\npipx install julep-cli\n```\n\nThis will install the CLI tool which can then be invoked using the `julep` command:\n\n```bash\njulep --version\n```\n\nNote: While the package name is `julep-cli`, the installed command is simply `julep`.\n\n---\n\n## Configuration\n\nThe CLI stores configuration data, such as the API key, in `~/.config/julep/config.yml`. After authentication, this file is created automatically.\n\n---\n\n## Commands\n\n### Authentication\n\nAuthenticate with the Julep platform by providing your API key.\n\n#### `julep auth`\n\n**Description:**\nPrompt the user to enter their API key and save it to the configuration file.\n\n**Usage:**\n\n```bash\njulep auth\n```\n\n**Behavior:**\n\n1. Prompts the user to input their API key.\n2. Saves the API key to `~/.config/julep/config.yml`.\n\n**Options:**\n\n- `--api-key`, `-k`: Directly provide the API key without prompting.\n- `--environment`, `-e`: Set the environment to use. Defaults to `production`.\n\n**Example:**\n\n```bash\njulep auth --api-key your_julep_api_key\n```\n\n---\n\n### Agent Management\n\nManage AI agents within the Julep platform.\n\n#### `julep agents`\n\n**Description:**\nParent command for managing agents. Includes subcommands to create, update, delete, and list agents.\n\n#### Subcommands\n\n1. **Create an Agent**\n\n   ##### `julep agents create`\n\n   **Description:**\n   Create a new AI agent.\n\n   **Usage:**\n   ```bash\n   julep agents create --name \"Agent Name\" --model \"Model Name\" --about \"Agent Description\"\n   ```\n\n   **Options:**\n   - `--name`, `-n` (optional): Name of the agent.\n   - `--model`, `-m` (optional): Model to be used by the agent (e.g., `gpt-4`).\n   - `--about` (optional): Description of the agent.\n   - `--default-settings` (optional): Default settings for the agent. Value is parsed as json.\n   - `--metadata` (optional): Metadata for the agent. Value is parsed as json.\n   - `--instructions` (optional): Instructions for the agent, repeat the option to add multiple.\n   - `--definition`, `-d` (optional): Path to an agent definition file.\n   - `--import-to` (optional): Import to project after creating. If inside a project then prompt user if they want to add.\n\n2. **Update an Agent**\n\n   ##### `julep agents update`\n\n   **Description:**\n   Update an existing AI agent's details.\n\n   **Usage:**\n\n   ```bash\n   julep agents update --id <agent_id> [--name \"New Name\"] [--model \"New Model\"] [--about \"New Description\"] [--metadata '{\"key\": \"value\"}'] [--instructions \"Instruction 1\"] [--instructions \"Instruction 2\"]\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the agent to update.\n   - `--name`, `-n` (optional): New name for the agent.\n   - `--model`, `-m` (optional): New model for the agent.\n   - `--about`, `-a` (optional): New description for the agent.\n   - `--metadata` (optional): Metadata for the agent. Value is parsed as json.\n   - `--default-settings` (optional): Default settings for the agent. Value is parsed as json.\n   - `--instructions` (optional): Instructions for the agent, repeat the option to add multiple.\n\n   **Example:**\n\n   ```bash\n   julep agents update --id abc123 --name \"Creative Storyteller\" --model \"gpt-4.5\"\n   ```\n\n3. **Delete an Agent**\n\n   ##### `julep agents delete`\n\n   **Description:**\n   Delete an existing AI agent.\n\n   **Usage:**\n\n   ```bash\n   julep agents delete --id <agent_id> [--force]\n   ```\n\n   **Behavior:**\n\n   - If `--force` is not provided, the CLI will prompt for confirmation before deleting the agent.\n\n   **Options:**\n\n   - `--id`, (required): ID of the agent to delete.\n   - `--force`, `-f` (optional): Force the deletion without prompting for confirmation.\n\n   **Example:**\n\n   ```bash\n   julep agents delete --id abc123\n   ```\n\n4. **List Agents**\n\n   ##### `julep agents list`\n\n   **Description:**\n   List all AI agents or filter based on metadata.\n\n   **Usage:**\n\n   ```bash\n   julep agents list [--metadata-filter '{\"key\": \"value\"}'] [--json|-j]\n   ```\n\n   **Options:**\n\n   - `--metadata-filter`, (optional): Filter agents based on specific criteria (JSON).\n   - `--json`, `-j` (optional): Output the list in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep agents list --metadata-filter '{\"model\": \"gpt-4\"}'\n   ```\n\n5. **Get an Agent**\n\n   ##### `julep agents get`\n\n   **Description:**\n   Get an agent by its ID.\n\n   **Usage:**\n\n   ```bash\n   julep agents get --id <agent_id> [--json|-j]\n   ```\n\n   **Options:**\n\n   - `--json`, `-j` (optional): Output the agent in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep agents get --id abc123\n   ```\n\n\n---\n\n### Task Management\n\nManage tasks associated with AI agents.\n\n#### `julep tasks`\n\n**Description:**\nParent command for managing tasks. Includes subcommands to create, update, delete, and list tasks.\n\n#### Subcommands\n\n1. **Create a Task**\n\n   ##### `julep tasks create`\n\n   **Description:**\n   Create a new task for an agent.\n\n   **Usage:**\n   ```bash\n   julep tasks create --name \"Task Name\" --agent-id <agent_id> --definition \"path/to/task.yaml\"\n   ```\n\n   **Options:**\n   - `--name`, `-n` (optional): Name of the task.\n   - `--agent-id`, `-a` (required): ID of the agent the task is associated with.\n   - `--definition`, `-d` (required): Path to the task definition YAML file.\n   - `--description` (optional): Description of the task.\n   - `--metadata` (optional): Metadata for the task. Value is parsed as json.\n   - `--inherit-tools` (optional): Inherit tools from the associated agent. Defaults to false.\n   - `--import-to` (optional): Import to project after creating.\n\n2. **Update a Task**\n\n   ##### `julep tasks update`\n\n   **Description:**\n   Update an existing task's details.\n\n   **Usage:**\n\n   ```bash\n   julep tasks update --id <task_id> [--name \"New Name\"] [--agent-id <new_agent_id>] [--definition \"path/to/new_task.yaml\"] [--description \"New Description\"] [--metadata '{\"key\": \"value\"}'] [--inherit-tools]\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the task to update.\n   - `--name`, `-n` (optional): New name for the task.\n   - `--agent-id`, `-a` (optional): New agent ID for the task.\n   - `--definition`, `-d` (optional): Path to the new task definition YAML file.\n   - `--description`, `-desc` (optional): New description for the task.\n   - `--metadata`, (optional): Metadata for the task. Value is parsed as json.\n   - `--inherit-tools`, `-it` (optional): Inherit tools from the associated agent.\n\n   **Example:**\n\n   ```bash\n   julep tasks update --id abc123 --name \"Updated Task Name\" --agent-id def456 --definition \"src/tasks/updated_task.yaml\" --description \"This is an updated task\" --metadata '{\"key\": \"value\"}' --inherit-tools\n   ```\n\n3. **Delete a Task**\n\n   ##### `julep tasks delete`\n\n   **Description:**\n   Delete an existing task.\n\n   **Usage:**\n\n   ```bash\n   julep tasks delete --id <task_id> [--force]\n   ```\n\n   **Behavior:**\n\n   - If `--force` is not provided, the CLI will prompt for confirmation before deleting the task.\n\n   **Options:**\n\n   - `--id`, (required): ID of the task to delete.\n   - `--force`, `-f` (optional): Force the deletion without prompting for confirmation.\n\n   **Example:**\n\n   ```bash\n   julep tasks delete --id abc123\n   ```\n\n4. **List Tasks**\n\n   ##### `julep tasks list`\n\n   **Description:**\n   List all tasks or filter based on metadata.\n\n   **Usage:**\n\n   ```bash\n   julep tasks list [--metadata-filter '{\"key\": \"value\"}'] [--json|-j]\n   ```\n\n   **Options:**\n\n   - `--metadata-filter`, (optional): Filter tasks based on specific criteria (JSON).\n   - `--json`, `-j` (optional): Output the list in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep tasks list --metadata-filter '{\"agent_id\": \"agent_123456\"}'\n   ```\n\n5. **Get a Task**\n\n   ##### `julep tasks get`\n\n   **Description:**\n   Get a task by its ID.\n\n   **Usage:**\n\n   ```bash\n   julep tasks get --id <task_id> [--json|-j]\n   ```\n\n   **Options:**\n\n   - `--json`, `-j` (optional): Output the task in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep tasks get --id abc123\n   ```\n\n\n---\n\n### Tool Management\n\nManage tools associated with AI agents.\n\n#### `julep tools`\n\n**Description:**\nParent command for managing tools. Includes subcommands to create, update, delete, and list tools.\n\n#### Subcommands\n\n1. **Create a Tool**\n\n   ##### `julep tools create`\n\n   **Description:**\n   Create a new tool for an agent.\n\n   **Usage:**\n   ```bash\n   julep tools create --name \"Tool Name\" --agent-id <agent_id> --definition \"path/to/tool.yaml\"\n   ```\n\n   **Options:**\n   - `--name`, `-n` (optional): Name of the tool.\n   - `--agent-id`, `-a` (required): ID of the agent the tool is associated with.\n   - `--definition`, `-d` (required): Path to the tool definition YAML file.\n   - `--description` (optional): Description of the tool.\n   - `--metadata` (optional): Metadata for the tool. Value is parsed as json.\n   - `--import-to` (optional): Import to project after creating.\n\n2. **Update a Tool**\n\n   ##### `julep tools update`\n\n   **Description:**\n   Update an existing tool's details.\n\n   **Usage:**\n\n   ```bash\n   julep tools update --id <tool_id> [--name \"New Name\"] [--agent-id <new_agent_id>] [--definition \"path/to/new_tool.yaml\"] [--description \"New Description\"] [--metadata '{\"key\": \"value\"}']\n   ```\n\n   **Options:**\n\n   - `--id`, (required): ID of the tool to update.\n   - `--name`, `-n` (optional): New name for the tool.\n   - `--agent-id`, `-a` (optional): New agent ID for the tool.\n   - `--definition`, `-d` (optional): Path to the new tool definition YAML file.\n   - `--description`, `-desc` (optional): New description for the tool.\n   - `--metadata`, (optional): Metadata for the tool. Value is parsed as json.\n\n   **Example:**\n\n   ```bash\n   julep tools update --id xyz789 --name \"Updated Tool Name\" --agent-id abc123 --definition \"src/tools/updated_tool.yaml\" --description \"This is an updated tool\" --metadata '{\"key\": \"value\"}'\n   ```\n\n3. **Delete a Tool**\n\n   ##### `julep tools delete`\n\n   **Description:**\n   Delete an existing tool.\n\n   **Usage:**\n\n   ```bash\n   julep tools delete --id <tool_id> [--force]\n   ```\n\n   **Behavior:**\n\n   - If `--force` is not provided, the CLI will prompt for confirmation before deleting the tool.\n\n   **Options:**\n\n   - `--id`, (required): ID of the tool to delete.\n   - `--force`, `-f` (optional): Force the deletion without prompting for confirmation.\n\n   **Example:**\n\n   ```bash\n   julep tools delete --id xyz789\n   ```\n\n4. **List Tools**\n\n   ##### `julep tools list`\n\n   **Description:**\n   List all tools or filter based on metadata.\n\n   **Usage:**\n\n   ```bash\n   julep tools list [--metadata-filter '{\"key\": \"value\"}'] [--json|-j]\n   ```\n\n   **Options:**\n\n   - `--metadata-filter`, (optional): Filter tools based on specific criteria (JSON).\n   - `--json`, `-j` (optional): Output the list in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep tools list --metadata-filter '{\"agent_id\": \"agent_123456\"}'\n   ```\n\n5. **Get a Tool**\n\n   ##### `julep tools get`\n\n   **Description:**\n   Get a tool by its ID.\n\n   **Usage:**\n\n   ```bash\n   julep tools get --id <tool_id> [--json|-j]\n   ```\n\n   **Options:**\n\n   - `--json`, `-j` (optional): Output the tool in JSON format.\n\n   **Example:**\n\n   ```bash\n   julep tools get --id xyz789\n   ```\n\n\n---\n\n### Project Initialization\n\n#### `julep init`\n\n**Description:**\nInitialize a new project.\n\n**Usage:**\n\n```bash\njulep init --name \"Project Name\" --description \"Project Description\"\n```\n\n**Options:**\n\n- `--name`, `-n` (required): Name of the project.\n- `--description`, `-desc` (optional): Description of the project.\n\n**Example:**\n\n```bash\njulep init --name \"My Project\" --description \"This is a project for managing AI agents\"\n```\n\n---\n\n### Synchronization\n\n#### `julep sync`\n\n**Description:**\nSynchronize local project files with the remote server.\n\n**Usage:**\n\n```bash\njulep sync [--force-local|-l] [--force-remote|-r]\n```\n\n**Behavior:**\n\n1. Parses `julep.yaml` and any local `.yaml` definitions.\n2. Compares to `julep-lock.json`.\n3. Creates or updates remote resources based on local definitions.\n4. Updates `julep-lock.json` with remote IDs and revision hashes.\n\n**Options:**\n\n- `--force`, `-f`: Force synchronization even if no changes are detected.\n- `--force-local`, `-l`: Force local files to take precedence in conflicts.\n- `--force-remote`, `-r`: Force remote state to take precedence in conflicts.\n\n**Example:**\n\n```bash\njulep sync --force-local\n```\n\n---\n\n### Importing Agents\n\n#### `julep import`\n\n**Description:**\nImport agents from a remote server.\n\n**Usage:**\n\n```bash\njulep import --id <agent_id>\n```\n\n**Options:**\n\n- `--id`, `-i` (required): ID of the agent to import.\n\n**Example:**\n\n```bash\njulep import --id abc123\n```\n\n---\n\n### Chat Interaction\n\n#### `julep chat`\n\n**Description:**\nInteract with an AI agent via chat.\n\n**Usage:**\n\n```bash\njulep chat --agent-id <agent_id>\n```\n\n**Options:**\n\n- `--agent-id`, `-a` (required): ID of the agent to chat with.\n\n**Example:**\n\n```bash\njulep chat --agent-id abc123\n```\n\n---\n\n### Task Execution\n\n#### `julep run`\n\n**Description:**\nExecute a task.\n\n**Usage:**\n\n```bash\njulep run --task-id <task_id> [--input|-i '{\"key\": \"value\"}'] [--input-file path/to/input.json]\n```\n\n**Options:**\n\n- `--task-id`, `-t` (required): ID of the task to execute.\n- `--input`, `-i` (optional): JSON input data for the task.\n- `--input-file` (optional): Path to JSON file containing input data.\n\n**Example:**\n\n```bash\njulep run --task-id abc123 --input '{\"key\": \"value\"}' --input-file src/inputs/input.json\n```\n\n### Execution Management\n\nManage task executions within the Julep platform.\n\n#### `julep executions`\n\n**Description:**\nParent command for managing executions. Includes subcommands to create, list, and cancel executions.\n\n#### Subcommands\n\n1. **Create an Execution**\n\n   ##### `julep executions create`\n\n   **Description:**\n   Create a new execution of a task.\n\n   **Usage:**\n   ```bash\n   julep executions create --task-id <task_id> [--input|-i '{\"key\": \"value\"}'] [--input-file path/to/input.json]\n   ```\n\n   **Options:**\n   - `--task-id`, `-t` (required): ID of the task to execute.\n   - `--input`, `-i` (optional): JSON input data for the task.\n   - `--input-file` (optional): Path to JSON file containing input data.\n   - `--async` (optional): Run the execution asynchronously. Returns immediately with execution ID.\n\n   **Example:**\n   ```bash\n   julep executions create --task-id abc123 --input '{\"prompt\": \"Tell me a story\"}'\n   ```\n\n2. **List Executions**\n\n   ##### `julep executions list`\n\n   **Description:**\n   List executions, optionally filtered by task ID or status.\n\n   **Usage:**\n   ```bash\n   julep executions list [--task-id <task_id>] [--status <status>] [--limit <n>] [--json|-j]\n   ```\n\n   **Options:**\n   - `--task-id`, `-t` (optional): Filter executions by task ID.\n   - `--status`, `-s` (optional): Filter by status (running, completed, failed, cancelled).\n   - `--limit`, `-l` (optional): Limit the number of executions returned. Default: 50.\n   - `--json`, `-j` (optional): Output the list in JSON format.\n\n   **Example:**\n   ```bash\n   julep executions list --task-id abc123 --status running --limit 10\n   ```\n\n3. **Cancel an Execution**\n\n   ##### `julep executions cancel`\n\n   **Description:**\n   Cancel a running execution.\n\n   **Usage:**\n   ```bash\n   julep executions cancel --execution-id <execution_id> [--force]\n   ```\n\n   **Options:**\n   - `--execution-id`, `-e` (required): ID of the execution to cancel.\n   - `--force`, `-f` (optional): Force cancellation without confirmation.\n\n   **Example:**\n   ```bash\n   julep executions cancel --execution-id xyz789\n   ```\n\n### Log Retrieval\n\n#### `julep logs`\n\n**Description:**\nRetrieve logs for a task or agent.\n\n**Usage:**\n```bash\njulep logs --execution-id <execution_id>\n```\n\n**Options:**\n- `--execution-id`, `-e` (optional): ID of the execution to retrieve logs for.\n\n**Example:**\n```bash\njulep logs --execution-id abc123\n```\n\n---\n\n### Project Assistant\n\n#### `julep assistant`\n\n**Description:**\n`julep assistant` launches an interactive prompt (a \"wizard\" mode) that uses AI to interpret plain-English requests and transform them into valid `julep` CLI commands. Think of it as a chat-based REPL that helps you build and manage your Julep resources more intuitively.\n\n**Usage:**\n```bash\njulep assistant\n```\n\n**Behavior:**\n1. Opens a session where you can type natural language instructions (e.g., *\"Create a GPT-4 agent named MarketingBot\"*).\n2. The assistant uses an LLM (Large Language Model) to suggest one or more CLI commands that match your request (e.g., `julep agents create --name \"MarketingBot\" --model \"gpt-4\"`).\n3. Displays the suggested command(s) and prompts for confirmation:\n   - **(Y)**: Run the command immediately, showing output in the same session.\n   - **(n)**: Skip or cancel the suggestion.\n   - **(edit)**: Manually revise the command prior to execution.\n4. Returns to the prompt for follow-up instructions, giving you a conversational workflow (e.g., *\"Now list all my tasks\"*, *\"Delete the agent I just created\"*, etc.).\n\n**Example Session:**\n```\n$ julep assistant\n\nWelcome to Julep Assistant!\nType your request in plain English, or type 'exit' to quit.\n\nassistant> Create a GPT-4 agent named MarketingBot\nProposed command:\njulep agents create --name \"MarketingBot\" --model \"gpt-4\"\n\nExecute? (Y/n/edit)\nY\n[Running command...]\nAgent created successfully (id: agent_654321)\n\nassistant> List all tasks\nProposed command:\njulep tasks list\n\nExecute? (Y/n/edit)\nY\n[Running command...]\n[No tasks found]\n\nassistant> exit\n```\n\n**Rationale & Benefits:**\n- **Simplifies Onboarding**: Users can manage agents, tasks, and tools with minimal knowledge of CLI flags and syntax.\n- **Conversational Guidance**: The assistant can ask clarifying questions if a request is ambiguous and recall recently created or updated resources.\n- **Expandable**: Future enhancements might include richer multi-step workflows, advanced editing, and deeper project insights (e.g., referencing `julep-lock.json` state).\n\nThis feature is particularly useful for new users or those who want a quick, conversational way to build out a project without memorizing every `julep` subcommand. Simply type what you want in natural language, confirm or edit the generated commands, and let the assistant handle the rest.\n\n---\n\n### Common Commands\n\n#### Version\n\n##### `julep --version`, `julep -v`\n\n**Description:**\nDisplay the version of the CLI.\n\n**Usage:**\n```bash\njulep --version\n```\n\n#### Help\n\n##### `julep`, `julep --help`, `julep -h`\n\n**Description:**\nDisplay help information for the CLI.\n\n**Usage:**\n```bash\njulep --help\n```\n\n#### Global Options\n\nThe following options can be used with any command:\n\n##### Standard Input/Output Handling\n\nThe CLI supports reading from standard input (stdin) and writing to standard output (stdout) for better integration with Unix-style pipelines and scripting:\n\n- Use `-` as a filename to read from stdin or write to stdout\n- Commands that accept file inputs (like `create` and `update`) can read from stdin\n- List/get commands can output directly to stdout for piping\n\n**Examples:**\n\nReading definition from stdin:\n```bash\ncat agent.yaml | julep agents create -d -  # Read definition from stdin\necho '{\"name\": \"MyAgent\"}' | julep agents create -i -  # Read JSON from stdin\n```\n\nPiping between commands:\n```bash\njulep agents get abc123 | julep agents create -d -  # Clone an agent\njulep agents list | jq '.[] | select(.model==\"gpt-4\")'  # Filter with jq\n```\n\nWriting output:\n```bash\njulep agents list > agents.yaml  # Save list to file\njulep agents get abc123 | ssh remote-host \"julep agents create -d -\"  # Transfer to remote\n```\n\n**Behavior:**\n- Commands detect if stdin is a pipe or terminal\n- JSON/YAML format is auto-detected for stdin\n- Binary data is supported for applicable inputs\n- Exit codes follow Unix conventions (0=success, non-zero=error)\n\n##### Quiet Mode\n\n`--quiet`, `-q`: Suppress all output except errors and explicitly requested data. Useful for scripting.\n\n**Example:**\n```bash\njulep agents list --quiet  # Only outputs the agent list, no status messages\n```\n\n##### Color Output\n\n`--color`, `--no-color`: Enable or disable colored output. By default, color is:\n- Enabled for TTY (interactive terminal) sessions\n- Disabled for non-TTY sessions (pipes, redirects, etc.)\n- Disabled if NO_COLOR environment variable is set\n- Disabled if TERM=dumb\n\nThe CLI will automatically detect these conditions and adjust color output accordingly.\n\n**Examples:**\n```bash\njulep agents list --no-color  # Force disable colored output\njulep agents list --color     # Force enable colored output\n```\n\n**Environment Variables:**\n- `NO_COLOR`: Set this to any value to disable color output\n- `FORCE_COLOR`: Set this to any value to force color output\n\n---\n\n"
  },
  {
    "path": "src/cli/src/julep_cli/__init__.py",
    "content": "from .agents import agents_app as agents_app\nfrom .app import app\nfrom .auth import auth\nfrom .chat import chat\nfrom .executions import executions_app as executions_app\nfrom .importt import importt\nfrom .init import init\nfrom .logs import logs\nfrom .ls import ls\nfrom .run import run\nfrom .sync import sync\nfrom .tasks import tasks_app as tasks_app\nfrom .tools import tools_app as tools_app\nfrom .utils import get_config, save_config\n\n__all__ = [\n    \"app\",\n    \"auth\",\n    \"chat\",\n    \"executions_app\",\n    \"get_config\",\n    \"importt\",\n    \"init\",\n    \"logs\",\n    \"ls\",\n    \"run\",\n    \"save_config\",\n    \"sync\",\n]\n"
  },
  {
    "path": "src/cli/src/julep_cli/__main__.py",
    "content": "try:\n    from julep_cli.app import app\nexcept ImportError:\n    from .app import app\n\nif __name__ == \"__main__\":\n    app()\n"
  },
  {
    "path": "src/cli/src/julep_cli/agents.py",
    "content": "import json\nfrom typing import Annotated\n\nimport typer\nfrom rich.box import HEAVY_HEAD\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\nfrom rich.table import Table\nfrom rich.text import Text\n\nfrom .app import agents_app, console, error_console\nfrom .utils import DateTimeEncoder, get_julep_client\n\nSINGLE_AGENT_TABLE_WIDTH = 100\nSINGLE_AGENT_COLUMN_WIDTH = 50\n\n\n@agents_app.command()\ndef create(\n    name: Annotated[str | None, typer.Option(\"--name\", \"-n\", help=\"Name of the agent\")] = None,\n    model: Annotated[\n        str | None,\n        typer.Option(\"--model\", \"-m\", help=\"Model to be used by the agent\"),\n    ] = None,\n    about: Annotated[\n        str | None,\n        typer.Option(\"--about\", \"-a\", help=\"Description of the agent\"),\n    ] = None,\n    default_settings: Annotated[\n        str | None,\n        typer.Option(\"--default-settings\", help=\"Default settings for the agent (JSON string)\"),\n    ] = None,\n    metadata: Annotated[\n        str | None,\n        typer.Option(\"--metadata\", help=\"Metadata for the agent (JSON string)\"),\n    ] = None,\n    instructions: Annotated[\n        list[str],\n        typer.Option(\n            \"--instructions\",\n            help=\"Instructions for the agent, can be specified multiple times\",\n        ),\n    ] = [],\n    definition: Annotated[\n        str | None,\n        typer.Option(\"--definition\", \"-d\", help=\"Path to an agent definition file\"),\n    ] = None,\n):\n    \"\"\"Create a new AI agent. Either provide a definition file or use the other options.\"\"\"\n\n    if definition:\n        # TODO: implement definition file parsing\n        error_console.print(\"Passing definition file is not implemented yet\", highlight=True)\n        raise typer.Exit(1)\n\n    # Validate that either definition is provided or name/model\n    if not definition and not (name and model):\n        error_console.print(\n            \"Error: Must provide either a definition file or name and model\",\n            highlight=True,\n        )\n        raise typer.Exit(1)\n\n    try:\n        if metadata:\n            json.loads(metadata)\n        if default_settings:\n            json.loads(default_settings)\n    except json.JSONDecodeError as e:\n        error_console.print(f\"Error parsing JSON: {e}\", highlight=True)\n        raise typer.Exit(1)\n\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        console=console,\n    ) as progress:\n        try:\n            create_agent_task = progress.add_task(\"Creating agent...\", start=False)\n            progress.start_task(create_agent_task)\n\n            agent = client.agents.create(\n                name=name,\n                model=model,\n                about=about,\n                default_settings=default_settings,\n                metadata=metadata,\n                instructions=instructions,\n            )\n\n        except Exception as e:\n            error_console.print(f\"Error creating agent: {e}\", style=\"bold red\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(Text(f\"Agent created successfully. Agent ID: {agent.id}\", style=\"bold green\"))\n\n\n@agents_app.command()\ndef update(\n    id: Annotated[str, typer.Option(\"--id\", help=\"ID of the agent to update\")],\n    name: Annotated[\n        str | None,\n        typer.Option(\"--name\", \"-n\", help=\"New name for the agent\"),\n    ] = None,\n    model: Annotated[\n        str | None,\n        typer.Option(\"--model\", \"-m\", help=\"New model for the agent\"),\n    ] = None,\n    about: Annotated[\n        str | None,\n        typer.Option(\"--about\", \"-a\", help=\"New description for the agent\"),\n    ] = None,\n    metadata: Annotated[\n        str | None,\n        typer.Option(\"--metadata\", help=\"Metadata for the agent (JSON string)\"),\n    ] = None,\n    default_settings: Annotated[\n        str | None,\n        typer.Option(\"--default-settings\", help=\"Default settings for the agent (JSON string)\"),\n    ] = None,\n    instructions: Annotated[\n        list[str],\n        typer.Option(\n            \"--instructions\",\n            help=\"Instructions for the agent, can be specified multiple times\",\n        ),\n    ] = [],\n):\n    \"\"\"Update an existing AI agent's details\"\"\"\n    try:\n        metadata_dict = json.loads(metadata) if metadata else {}\n        settings_dict = json.loads(default_settings) if default_settings else {}\n    except json.JSONDecodeError as e:\n        error_console.print(f\"Error parsing JSON: {e}\", highlight=True)\n        raise typer.Exit(1)\n\n    updates = {\n        k: v\n        for k, v in {\n            \"name\": name,\n            \"model\": model,\n            \"about\": about,\n            \"metadata\": metadata_dict if metadata else None,\n            \"default_settings\": settings_dict if default_settings else None,\n            \"instructions\": instructions if instructions else None,\n        }.items()\n        if v is not None\n    }\n\n    if not updates:\n        error_console.print(\"No updates provided\", highlight=True)\n        raise typer.Exit(1)\n\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            update_agent_task = progress.add_task(\"Updating agent...\", start=False)\n            progress.start_task(update_agent_task)\n\n            client.agents.update(agent_id=id, **updates)\n        except Exception as e:\n            error_console.print(f\"Error updating agent: {e}\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(Text(\"Agent updated successfully.\", style=\"bold green\"), highlight=True)\n\n\n@agents_app.command()\ndef delete(\n    id: Annotated[str, typer.Option(\"--id\", help=\"ID of the agent to delete\")],\n    force: Annotated[\n        bool,\n        typer.Option(\n            \"--force\",\n            \"-f\",\n            help=\"Force deletion without confirmation\",\n        ),\n    ] = False,\n):\n    \"\"\"Delete an existing AI agent\"\"\"\n    if not force:\n        confirm = typer.confirm(f\"Are you sure you want to delete agent '{id}'?\")\n        if not confirm:\n            error_console.print(\"Operation cancelled\", highlight=True)\n            raise typer.Exit(1)\n\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            delete_agent_task = progress.add_task(\"Deleting agent...\", start=False)\n            progress.start_task(delete_agent_task)\n\n            client.agents.delete(id)\n        except Exception as e:\n            error_console.print(f\"Error deleting agent: {e}\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(Text(\"Agent deleted successfully.\", style=\"bold green\", highlight=True))\n\n\n@agents_app.command()\ndef list(\n    metadata_filter: Annotated[\n        str | None,\n        typer.Option(\n            \"--metadata-filter\",\n            help=\"Filter agents based on metadata criteria (JSON string)\",\n        ),\n    ] = None,\n    json_output: Annotated[\n        bool,\n        typer.Option(\"--json\", help=\"Output the list in JSON format\"),\n    ] = False,\n):\n    \"\"\"List all AI agents or filter based on metadata\"\"\"\n    try:\n        json.loads(metadata_filter) if metadata_filter else {}\n    except json.JSONDecodeError as e:\n        typer.echo(f\"Error parsing metadata filter JSON: {e}\")\n        raise typer.Exit(1)\n\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            list_agents_task = progress.add_task(description=\"Fetching agents\", total=None)\n            progress.start_task(list_agents_task)\n\n            agents = client.agents.list(metadata_filter=metadata_filter).items\n        except Exception as e:\n            error_console.print(\n                Text(f\"Error fetching agents: {e}\", style=\"bold red\", highlight=True),\n            )\n            raise typer.Exit(1)\n\n    if json_output:\n        typer.echo([agent.model_dump_json(indent=2) for agent in agents])\n        return\n\n    # Table format output\n    agent_table = Table(\n        title=Text(\"Available Agents:\", style=\"bold underline magenta\"),\n        box=HEAVY_HEAD,  # border between cells\n        show_lines=True,  # Adds lines between rows\n        show_header=True,\n        header_style=\"bold magenta\",\n        width=140,\n    )\n    agent_table.add_column(\"Name\", style=\"cyan\", width=25)\n    agent_table.add_column(\"About\", style=\"cyan\", width=50)\n    agent_table.add_column(\"Model\", style=\"yellow\", width=25)\n    agent_table.add_column(\"ID\", style=\"green\", width=40)\n\n    for agent in agents:\n        agent_table.add_row(agent.name, agent.about, agent.model, agent.id)\n\n    console.print(agent_table, highlight=True)\n\n\n@agents_app.command()\ndef get(\n    id: Annotated[str, typer.Option(\"--id\", help=\"ID of the agent to retrieve\")],\n    json_output: Annotated[\n        bool,\n        typer.Option(\n            \"--json\",\n            help=\"Output in JSON format\",\n            is_flag=True,\n            show_default=True,\n        ),\n    ] = False,\n):\n    \"\"\"Get an agent by its ID\"\"\"\n    client = get_julep_client()\n\n    agent = None\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            get_agent_task = progress.add_task(\"Retrieving agent...\", start=False)\n            progress.start_task(get_agent_task)\n\n            agent = client.agents.get(id)\n        except Exception as e:\n            error_console.print(f\"Error retrieving agent: {e}\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(Text(\"Agent retrieved successfully.\", style=\"bold green\"), highlight=True)\n\n    if json_output:\n        console.print(\n            json.dumps(agent.model_dump(), indent=2, cls=DateTimeEncoder),\n            highlight=True,\n        )\n        return\n\n    # Create a table for agent details\n    agent_table = Table(\n        title=Text(\"Agent Details:\", style=\"bold underline magenta\"),\n        header_style=\"bold magenta\",\n        width=SINGLE_AGENT_TABLE_WIDTH,\n    )\n    agent_table.add_column(\"Key\", style=\"green\", width=SINGLE_AGENT_COLUMN_WIDTH)\n    agent_table.add_column(\"Value\", style=\"cyan\", width=SINGLE_AGENT_COLUMN_WIDTH * 2)\n\n    for key, value in agent.model_dump().items():\n        agent_table.add_row(key, str(value))\n\n    console.print(agent_table, highlight=True)\n"
  },
  {
    "path": "src/cli/src/julep_cli/app.py",
    "content": "import time\nfrom typing import Annotated\n\nfrom dateutil import tz\nfrom rich.console import Console\nfrom trogon.typer import init_tui\nfrom typer import Exit, Option\n\nfrom .wrapper import WrappedTyper\n\n# Global state\nconsole = Console()\nerror_console = Console(stderr=True, style=\"bold red\")\n\nlocal_tz = tz.gettz(time.tzname[time.daylight])\n\n# Initialize typer app with -h as an alias for help\napp = WrappedTyper(\n    name=\"julep\",\n    help=\"Command line interface for the Julep platform\",\n    no_args_is_help=True,\n    pretty_exceptions_short=True,\n    context_settings={\"help_option_names\": [\"-h\", \"--help\"]},\n)\n\ninit_tui(app)\n\n# Initialize subcommands with help alias too\nagents_app = WrappedTyper(\n    help=\"Manage AI agents\",\n    context_settings={\"help_option_names\": [\"-h\", \"--help\"]},\n)\ntasks_app = WrappedTyper(\n    help=\"Manage tasks\",\n    context_settings={\"help_option_names\": [\"-h\", \"--help\"]},\n)\ntools_app = WrappedTyper(\n    help=\"Manage tools\",\n    context_settings={\"help_option_names\": [\"-h\", \"--help\"]},\n)\nexecutions_app = WrappedTyper(\n    help=\"Manage executions\",\n    context_settings={\"help_option_names\": [\"-h\", \"--help\"]},\n)\n\napp.add_typer(agents_app, name=\"agents\")\napp.add_typer(tasks_app, name=\"tasks\")\napp.add_typer(tools_app, name=\"tools\")\napp.add_typer(executions_app, name=\"executions\")\n\n\n# Version command\ndef version_callback(value: bool):\n    if value:\n        from importlib.metadata import version\n\n        try:\n            v = version(\"julep-cli\")\n            console.print(f\"julep CLI version [green]{v}[/green]\", highlight=True)\n        except:\n            error_console.print(\"[red]julep CLI version unknown[/red]\", highlight=True)\n            raise Exit(1)\n\n        raise Exit(1)\n\n\ndef no_color_callback(value: bool) -> bool:\n    global console, error_console\n    if value:\n        console = Console(color_system=None)\n        error_console = Console(color_system=None, stderr=True)\n\n    return value\n\n\ndef quiet_callback(value: bool) -> bool:\n    console.quiet = value\n\n    return value\n\n\n@app.callback()\ndef main(\n    no_color: Annotated[\n        bool,\n        Option(\n            \"--no-color\",\n            help=\"Disable colored output\",\n            callback=no_color_callback,\n            is_eager=True,\n        ),\n    ] = not bool(console.color_system),\n    quiet: Annotated[\n        bool,\n        Option(\n            \"--quiet\",\n            \"-q\",\n            help=\"Suppress all output except errors and explicitly requested data\",\n            callback=quiet_callback,\n            is_eager=True,\n        ),\n    ] = False,\n    version: Annotated[\n        bool,\n        Option(\n            \"--version\",\n            \"-v\",\n            help=\"Show version and exit\",\n            callback=version_callback,\n            is_eager=True,\n        ),\n    ] = False,\n):\n    \"\"\"\n    Julep CLI - Command line interface for the Julep platform\n    \"\"\"\n"
  },
  {
    "path": "src/cli/src/julep_cli/auth.py",
    "content": "from enum import StrEnum\nfrom typing import Annotated\n\nimport jwt\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\nfrom rich.text import Text\nfrom typer import Exit, Option\n\nfrom .app import app, console, error_console\nfrom .utils import get_config, get_julep_client, save_config\n\ncurrent_config = get_config()\ncurrent_environment = current_config.get(\"environment\") or \"production\"\nsubdomain = \"dev\" if current_environment == \"dev\" else \"api\"\napi_endpoint = f\"https://{subdomain}.julep.ai\"\ndashboard_url = f\"https://dashboard{'-dev' if current_environment == 'dev' else ''}.julep.ai\"\n\n\nclass Environment(StrEnum):\n    production = \"production\"\n    dev = \"dev\"\n\n\ndef is_valid_jwt(token: str) -> bool:\n    \"\"\"Check if a string is a valid JWT format.\"\"\"\n    try:\n        # Decode without verifying signature\n        jwt.decode(token, options={\"verify_signature\": False})\n\n        return True\n    except (ValueError, jwt.DecodeError):\n        return False\n\n\n@app.command()\ndef auth(\n    environment: Annotated[\n        Environment,\n        Option(\n            \"--environment\",\n            \"-e\",\n            help=\"Environment\",\n            envvar=\"JULEP_ENVIRONMENT\",\n        ),\n        {\"default\": current_environment},  # Used inside the questionary prompt\n    ],\n    api_key: Annotated[\n        str,\n        Option(\n            \"--api-key\",\n            \"-k\",\n            help=f\"See {dashboard_url}\",\n            envvar=\"JULEP_API_KEY\",\n        ),\n        {\"validate\": lambda x: x is not None and is_valid_jwt(x)},\n    ],\n    verify: Annotated[\n        bool,\n        Option(help=\"Verify the API key\"),\n    ] = True,\n):\n    \"\"\"\n    Authenticate with the Julep platform.\n\n    Saves your API key to ~/.config/julep/config.yml for use with other commands.\n    The API key can be found in your Julep account settings.\n    \"\"\"\n\n    if not api_key:\n        error_console.print(\"[red]No API key provided[/red]\", highlight=True)\n        raise Exit(1)\n\n    config = get_config()\n    config[\"environment\"] = str(environment)\n    config[\"api_key\"] = api_key\n\n    if verify:\n        with Progress(\n            SpinnerColumn(),\n            TextColumn(\"[progress.description]{task.description}\"),\n            console=console,\n        ) as progress:\n            verify_task = progress.add_task(\"Verifying API key...\", start=False)\n            progress.start_task(verify_task)\n\n            try:\n                client = get_julep_client(**config)\n                client.agents.list(limit=1)\n            except Exception as e:\n                progress.stop_task(verify_task)\n                progress.stop()\n\n                error_console.print(\n                    Text(f\"Error verifying API key: {e}\", style=\"bold red\"),\n                    highlight=True,\n                )\n                raise Exit(1)\n\n    save_config(config)\n\n    console.print(\n        f\"Successfully authenticated with [green]{environment}[/green] environment!\",\n    )\n"
  },
  {
    "path": "src/cli/src/julep_cli/chat.py",
    "content": "import json\nfrom typing import Annotated\n\nimport typer\nfrom rich.panel import Panel\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\nfrom rich.text import Text\n\nfrom .app import app, console, error_console\nfrom .utils import get_julep_client\n\n\n@app.command()\ndef chat(\n    agent: Annotated[\n        str,\n        typer.Option(\n            \"--agent\",\n            \"-a\",\n            help=\"ID the agent to chat with\",\n        ),\n    ],\n    situation: Annotated[\n        str | None,\n        typer.Option(\"--situation\", \"-s\", help=\"Situation to chat about\"),\n    ] = None,\n    settings: Annotated[\n        str | None,\n        typer.Option(\"--settings\", help=\"Chat settings as a JSON string\", parser=json.loads),\n    ] = None,\n):\n    \"\"\"\n    Initiate an interactive chat session with a specified AI agent.\n\n    The chat session runs in the terminal, allowing real-time conversation with the agent.\n    \"\"\"\n\n    client = get_julep_client()\n\n    try:\n        agent = client.agents.get(agent_id=agent)\n    except Exception as e:\n        error_console.print(Text(f\"Error: {e}\", style=\"bold red\"), highlight=True)\n        raise typer.Exit(1)\n\n    session = client.sessions.create(agent=agent.id, situation=situation)\n\n    console.print(\n        Panel(\n            Text(f\"Starting chat with agent '{agent.name}'\", style=\"bold green\"),\n            title=\"Chat Session\",\n        ),\n    )\n\n    while True:\n        message = typer.prompt(\"You\")\n\n        with Progress(\n            SpinnerColumn(),\n            TextColumn(\"[progress.description]{task.description}\"),\n            transient=True,\n        ) as progress:\n            task = progress.add_task(\"Waiting for agent response...\", start=False)\n            progress.start_task(task)\n\n            response = client.sessions.chat(\n                session_id=session.id,\n                messages=[\n                    {\n                        \"role\": \"user\",\n                        \"content\": message,\n                    },\n                ],\n            )\n\n        console.print(\n            Panel(\n                Text(response.choices[0].message.content, style=\"bold blue\"),\n                title=\"Agent Response\",\n            ),\n        )\n"
  },
  {
    "path": "src/cli/src/julep_cli/executions.py",
    "content": "import json\nfrom typing import Annotated\n\nimport typer\nfrom julep import Client, Julep\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\n\nfrom .app import console, error_console, executions_app\nfrom .utils import get_julep_client, persist_attribute\n\n\n@persist_attribute(\"execution_id\", extractor=lambda exec_obj: exec_obj.id)\ndef create_execution(client: Julep | Client, task_id: str, input_data: dict):\n    \"\"\"\n    Create an execution and persist its execution ID to the state database.\n    \"\"\"\n    return client.executions.create(task_id=task_id, input=input_data)\n\n\n@executions_app.command()\ndef create(\n    task_id: Annotated[str, typer.Option(\"--task-id\", help=\"ID of the task to execute\")],\n    input: Annotated[str, typer.Option(\"--input\", help=\"Input for the execution\")],\n):\n    \"\"\"\n    Create a new execution.\n    \"\"\"\n\n    client = get_julep_client()\n\n    try:\n        input_data = json.loads(input)\n    except json.JSONDecodeError as e:\n        error_console.print(f\"[bold red]Invalid JSON input: {e}[/bold red]\", highlight=True)\n        raise typer.Exit(1)\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        task = progress.add_task(\"Creating execution...\", start=False)\n        progress.start_task(task)\n\n        try:\n            execution = create_execution(client, task_id, input_data)\n        except Exception as e:\n            error_console.print(f\"[bold red]Error creating execution: {e}[/bold red]\")\n            raise typer.Exit(1)\n\n    console.print(\n        f\"[bold blue]Execution created successfully![/bold blue]\\n[green]Execution ID: {execution.id}[/green]\",\n    )\n"
  },
  {
    "path": "src/cli/src/julep_cli/importt.py",
    "content": "import datetime\nimport hashlib\nfrom pathlib import Path\nfrom typing import Annotated\n\nimport typer\nfrom julep.types.agent import Agent\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\nfrom rich.table import Table\nfrom rich.text import Text\n\nfrom .app import app, console, error_console, local_tz\nfrom .models import LockedEntity\nfrom .utils import (\n    add_agent_to_julep_yaml,\n    add_entity_to_lock_file,\n    get_entity_from_lock_file,\n    get_julep_client,\n    update_existing_entity_in_lock_file,\n    update_yaml_for_existing_entity,\n)\n\n\n@app.command(name=\"import\")\ndef importt(\n    id: Annotated[str, typer.Option(\"--id\", help=\"ID of the agent to import\")],\n    agent: Annotated[\n        bool,\n        typer.Option(\n            \"--agent\",\n            \"-a\",\n            help=\"Import an agent\",\n        ),\n    ] = False,\n    task: Annotated[\n        bool,\n        typer.Option(\n            \"--task\",\n            \"-t\",\n            help=\"Import a task\",\n        ),\n    ] = False,\n    tools: Annotated[\n        bool,\n        typer.Option(\n            \"--tool\",\n            \"-l\",\n            help=\"Import a tool\",\n        ),\n    ] = False,\n    source: Annotated[\n        Path,\n        typer.Option(\n            \"--source\",\n            \"-s\",\n            help=\"Path to the source directory. Defaults to current working directory\",\n        ),\n    ] = Path.cwd(),\n    output: Annotated[\n        Path | None,\n        typer.Option(\n            \"--output\",\n            \"-o\",\n            help=\"Path to save the imported agent. Defaults to <project_dir>/src/agents\",\n        ),\n    ] = None,\n    yes: Annotated[\n        bool,\n        typer.Option(\n            \"--yes\",\n            \"-y\",\n            help=\"Skip confirmation prompt\",\n        ),\n    ] = False,\n):\n    \"\"\"Import entities from the Julep platform. Currently only agents are supported.\"\"\"\n\n    output = output or source / \"src/agents\"\n\n    if not (source / \"julep-lock.json\").exists():\n        error_console.print(\n            Text(\n                \"Error: 'julep-lock.json' not found in the source directory. Please run 'julep sync' to sync your project and create a lock file.\",\n                style=\"bold red\",\n            ),\n        )\n        raise typer.Exit(1)\n\n    # if tools or task is provided, we need to import the tool or task\n    if tools or task:\n        error_console.print(\n            Text(\"Error: Tools and tasks are not supported yet.\", style=\"bold red\"),\n            highlight=True,\n        )\n        raise typer.Exit(1)\n\n    # if agent is not provided, we need to print help\n    if not agent:\n        error_console.print(\n            Text(\"Error: Agent is required.\", style=\"bold red\"),\n            highlight=True,\n        )\n        raise typer.Exit(1)\n\n    client = get_julep_client()\n\n    # Importing an existing agent\n    if locked_agent := get_entity_from_lock_file(type=\"agent\", id=id, project_dir=source):\n        console.print(\n            Text(f\"Agent '{id}' already exists in the lock file\", style=\"bold yellow\"),\n            highlight=True,\n        )\n        confirm = typer.confirm(\n            f\"Do you want to overwrite the existing agent in the lock file and {locked_agent.path}?\",\n        )\n\n        if not confirm:\n            console.print(Text(\"Operation cancelled\", style=\"bold red\"), highlight=True)\n            raise typer.Exit(1)\n\n        console.print(Text(\"Overwriting existing agent...\", style=\"bold blue\"), highlight=True)\n\n        with Progress(\n            SpinnerColumn(),\n            TextColumn(\"[progress.description]{task.description}\"),\n            transient=True,\n            console=console,\n        ) as progress:\n            try:\n                fetch_task = progress.add_task(\"Fetching agent from remote...\", start=False)\n                progress.start_task(fetch_task)\n                remote_agent: Agent = client.agents.get(agent_id=id)\n            except Exception as e:\n                error_console.print(\n                    Text(\n                        f\"Error fetching agent from remote: {e}\",\n                        style=\"bold red\",\n                    ),\n                    highlight=True,\n                )\n                raise typer.Exit(1)\n\n        # Create a table to display agent data\n        table = Table(title=\"Agent Data\")\n        table.add_column(\"Field\", style=\"cyan\", no_wrap=True)\n        table.add_column(\"Value\", style=\"magenta\")\n\n        # Populate the table with agent data\n        for key, value in remote_agent.model_dump().items():\n            table.add_row(key, str(value))\n\n        console.print(table, highlight=True)\n\n        agent_yaml_path = source / locked_agent.path\n\n        with Progress(\n            SpinnerColumn(),\n            TextColumn(\"[progress.description]{task.description}\"),\n            transient=True,\n            console=console,\n        ) as progress:\n            try:\n                update_task = progress.add_task(\n                    f\"Updating agent in '{agent_yaml_path}'...\",\n                    start=False,\n                )\n                progress.start_task(update_task)\n                update_yaml_for_existing_entity(\n                    agent_yaml_path,\n                    remote_agent.model_dump(exclude={\"id\", \"created_at\", \"updated_at\"}),\n                )\n            except Exception as e:\n                error_console.print(\n                    Text(\n                        f\"Error updating agent in '{agent_yaml_path}': {e}\",\n                        style=\"bold red\",\n                    ),\n                    highlight=True,\n                )\n                raise typer.Exit(1)\n\n        console.print(Text(\"Updated successfully.\", style=\"bold green\"), highlight=True)\n\n        console.print(\n            Text(f\"Updating agent '{id}' in lock file...\", style=\"bold blue\"),\n            highlight=True,\n        )\n        update_existing_entity_in_lock_file(\n            type=\"agent\",\n            new_entity=LockedEntity(\n                path=str(agent_yaml_path.relative_to(source)),\n                id=id,\n                last_synced=datetime.datetime.now(tz=local_tz).isoformat(\n                    timespec=\"milliseconds\",\n                ),\n                revision_hash=hashlib.sha256(\n                    remote_agent.model_dump_json().encode(),\n                ).hexdigest(),\n            ),\n            project_dir=source,\n        )\n\n        console.print(\n            Text(\n                f\"Agent '{id}' imported successfully to '{agent_yaml_path}'\",\n                style=\"bold green\",\n            ),\n            highlight=True,\n        )\n\n        return\n\n    # Importing a new agent (doesn't exist in lock file)\n    if not yes:\n        confirm = typer.confirm(f\"Are you sure you want to import agent '{id}' to '{output}'?\")\n        if not confirm:\n            console.print(Text(\"Operation cancelled\", style=\"bold red\"), highlight=True)\n            raise typer.Exit(1)\n\n    try:\n        client = get_julep_client()\n\n        with Progress(\n            SpinnerColumn(),\n            TextColumn(\"[progress.description]{task.description}\"),\n            transient=True,\n            console=console,\n        ) as progress:\n            try:\n                fetch_task = progress.add_task(\"Fetching agent from remote...\", start=False)\n                progress.start_task(fetch_task)\n                remote_agent: Agent = client.agents.get(agent_id=id)\n            except Exception as e:\n                error_console.print(\n                    Text(f\"Error fetching agent from remote: {e}\", style=\"bold red\"),\n                )\n                raise typer.Exit(1)\n\n        # Create a table to display agent data\n        table = Table(title=\"Agent Data\")\n        table.add_column(\"Field\", style=\"cyan\", no_wrap=True)\n        table.add_column(\"Value\", style=\"magenta\")\n\n        # Populate the table with agent data\n        for key, value in remote_agent.model_dump().items():\n            table.add_row(key, str(value))\n\n        console.print(table, highlight=True)\n\n        # Ensure output is an absolute path relative to source.\n        # If the user provided a relative output value, treat it as subpath of the source.\n        if not output.is_absolute():\n            output = source / output\n\n        agent_name = remote_agent.name.lower().replace(\" \", \"_\")\n\n        # If the provided output has a .yaml suffix, treat it as the target file;\n        # otherwise, generate a file name based on the agent name.\n        if output.suffix == \".yaml\":\n            agent_yaml_path: Path = output\n        else:\n            agent_yaml_path: Path = output / f\"{agent_name}.yaml\"\n\n        # Ensure that the parent directory exists\n        agent_yaml_path.parent.mkdir(parents=True, exist_ok=True)\n\n        typer.echo(f\"Adding agent '{remote_agent.name}' to '{agent_yaml_path}'...\")\n        update_yaml_for_existing_entity(\n            agent_yaml_path,\n            remote_agent.model_dump(exclude={\"id\", \"created_at\", \"updated_at\"}),\n        )\n\n        typer.echo(f\"Agent '{id}' imported successfully to '{agent_yaml_path}'\")\n\n        add_agent_to_julep_yaml(\n            source,\n            {\n                \"definition\": str(agent_yaml_path.relative_to(source)),\n            },\n        )\n\n        typer.echo(f\"Adding agent '{id}' to lock file...\")\n        add_entity_to_lock_file(\n            type=\"agent\",\n            new_entity=LockedEntity(\n                path=str(agent_yaml_path.relative_to(source)),\n                id=remote_agent.id,\n                last_synced=datetime.datetime.now(tz=local_tz).isoformat(\n                    timespec=\"milliseconds\",\n                ),\n                revision_hash=hashlib.sha256(\n                    remote_agent.model_dump_json().encode(),\n                ).hexdigest(),\n            ),\n            project_dir=source,\n        )\n\n        console.print(\n            Text(\n                f\"Agent '{id}' imported successfully to '{agent_yaml_path}' and added to lock file\",\n                style=\"bold green\",\n            ),\n            highlight=True,\n        )\n\n    except Exception as e:\n        error_console.print(\n            Text(f\"Error importing agent: {e}\", style=\"bold red\"),\n            highlight=True,\n        )\n        raise typer.Exit(1)\n\n    # If no agent ID is provided, print help and exit\n    if not id:\n        typer.echo(app.get_help())\n        raise typer.Exit(1)\n"
  },
  {
    "path": "src/cli/src/julep_cli/init.py",
    "content": "import io\nimport shutil\nimport zipfile\nfrom pathlib import Path\nfrom typing import Annotated\n\nimport requests\nimport typer\nfrom rich.markdown import Markdown\nfrom rich.panel import Panel\nfrom rich.text import Text\nfrom rich.tree import Tree\n\nfrom .app import app, console, error_console\n\n\n@app.command()\ndef init(\n    template: Annotated[\n        str,\n        typer.Option(\n            \"--template\",\n            \"-t\",\n            help=\"Name of the template to use from the library repository (or 'empty' for an empty project)\",\n        ),\n    ] = \"hello-world\",\n    path: Annotated[\n        Path,\n        typer.Option(\n            \"--path\",\n            \"-p\",\n            help=\"Destination directory for the initialized project (default: current directory)\",\n        ),\n    ] = Path.cwd(),\n    yes: Annotated[\n        bool,\n        typer.Option(\n            \"--yes\",\n            \"-y\",\n            help=\"Skip confirmation prompt\",\n        ),\n    ] = False,\n):\n    \"\"\"\n    Initialize a new Julep project.\n\n    This command downloads a predefined template from the library repository.\n    The default template is \"hello-world\".\n\n    Steps performed:\n      1. Downloads and extracts the specified template folder.\n      2. Validates that a 'julep.yaml' file exists.\n      3. Displays a directory tree of the created project.\n      4. Prints instructions to change directory into the project,\n         and optionally opens a new shell there.\n    \"\"\"\n    if not yes:\n        proceed = typer.confirm(\n            f\"This will initialize a new Julep project in '{path}' with template '{template}'. Proceed?\",\n            default=True,\n        )\n        if not proceed:\n            console.print(Text(\"Initialization cancelled.\", style=\"bold red\"), highlight=True)\n            raise typer.Exit\n\n    branch = \"main\"\n    repo_url = \"https://github.com/julep-ai/library\"\n    template_url = f\"{repo_url}/archive/refs/heads/{branch}.zip\"\n\n    try:\n        console.print(Text(\"Downloading template...\", style=\"bold cyan\"))\n        response = requests.get(template_url)\n        response.raise_for_status()\n\n        with zipfile.ZipFile(io.BytesIO(response.content)) as z:\n            repo_prefix = f\"library-{branch}/\"\n            template_folder = f\"{repo_prefix}{template}/\"\n\n            found = any(info.filename.startswith(template_folder) for info in z.infolist())\n            if not found:\n                error_console.print(\n                    Text(f\"Template '{template}' not found in repository\", style=\"bold red\"),\n                    highlight=True,\n                )\n                raise typer.Exit(1)\n\n            for file_info in z.infolist():\n                if file_info.filename.startswith(template_folder):\n                    z.extract(file_info, path)\n\n        library_repo_prefix = path / f\"library-{branch}\"\n        extracted_template_path = library_repo_prefix / template\n        final_destination = path / template\n\n        # Warn the user if final_destination exists and is not empty (files will be merged)\n        if final_destination.exists() and any(final_destination.iterdir()):\n            if not yes:\n                proceed_existing = typer.confirm(\n                    f\"Warning: The directory '{final_destination}' already exists and is not empty. Merging files may cause accidental data loss. Do you want to proceed?\",\n                    default=False,\n                )\n                if not proceed_existing:\n                    console.print(\n                        Text(\"Initialization cancelled.\", style=\"bold red\"),\n                        highlight=True,\n                    )\n                    raise typer.Exit(1)\n            else:\n                console.print(\n                    Text(\n                        f\"Warning: The directory '{final_destination}' already exists and is not empty. Files will be merged.\",\n                        style=\"bold yellow\",\n                    ),\n                    highlight=True,\n                )\n        final_destination.mkdir(parents=True, exist_ok=True)\n\n        shutil.copytree(extracted_template_path, final_destination, dirs_exist_ok=True)\n        shutil.rmtree(library_repo_prefix)\n\n    except requests.exceptions.RequestException as e:\n        error_console.print(\n            Text(f\"Failed to download template: {e}\", style=\"bold red\"),\n            highlight=True,\n        )\n        raise typer.Exit(1)\n    except zipfile.BadZipFile as e:\n        error_console.print(\n            Text(f\"Failed to extract template: {e}\", style=\"bold red\"),\n            highlight=True,\n        )\n        raise typer.Exit(1)\n\n    julep_yaml = final_destination / \"julep.yaml\"\n    if not julep_yaml.exists():\n        error_console.print(\n            Text(\"Error: 'julep.yaml' not found in the project directory\", style=\"bold red\"),\n            highlight=True,\n        )\n        raise typer.Exit(1)\n\n    console.print(\n        Text(\n            f\"Successfully initialized new Julep project with template '{template}' in {path}\",\n            style=\"bold green\",\n        ),\n        highlight=True,\n    )\n\n    def print_directory_tree(directory: Path) -> None:\n        tree = Tree(f\":open_file_folder: [bold]{directory.name}\")\n\n        def add_tree(branch, path: Path):\n            for item in sorted(path.iterdir(), key=lambda x: x.name):\n                if item.is_dir():\n                    subtree = branch.add(f\":open_file_folder: [bold]{item.name}/\")\n                    add_tree(subtree, item)\n                else:\n                    branch.add(item.name)\n\n        add_tree(tree, directory)\n        console.print(tree)\n\n    print_directory_tree(final_destination)\n\n    cd_instruction = f\"cd {final_destination.resolve()}\"\n    console.print(\n        Text(f\"To start working on your project, run: {cd_instruction}\", style=\"bold green\"),\n        highlight=True,\n    )\n\n    # Python runs as a separate process, and any directory changes it makes only apply to that process.\n    # Once the script exits, the original shell remains unchanged.\n    # The only way to persist a directory change is by running cd directly in the shell.\n    # if typer.confirm(\"Would you like to change to the project directory?\", default=False):\n    #     try:\n    #         # Change current working directory to the final destination\n    #         os.chdir(final_destination)\n    #         console.print(\n    #             Text(f\"Changed working directory to {final_destination.resolve()}\", style=\"bold green\")\n    #         )\n\n    #         # Launch an interactive shell in the project directory.\n    #         # This will spawn a child shell, and when you exit it, you'll return here.\n    #         shell = os.environ.get(\"SHELL\")\n    #         if shell:\n    #             subprocess.run([shell])\n    #         else:\n    #             subprocess.run(\"/bin/sh\")\n    #     except Exception as e:\n    #         error_console.print(\n    #             Text(f\"Failed to change directory and launch shell: {e}\", style=\"bold red\")\n    #         )\n\n    # get the readme file\n    readme_path = final_destination / \"README.md\"\n\n    if readme_path.exists():\n        readme_content = readme_path.read_text()\n        markdown = Markdown(readme_content)\n        console.print(\n            Panel(markdown, title=Text(\"Project README\", style=\"bold blue\")),\n            highlight=True,\n        )\n"
  },
  {
    "path": "src/cli/src/julep_cli/logs.py",
    "content": "import json\nfrom typing import Annotated, ClassVar\n\nimport typer\nfrom julep.resources.executions.transitions import Transition\nfrom rich.box import HEAVY\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\nfrom rich.table import Table\nfrom rich.text import Text\n\n# New imports for Textual Log TUI functionality\nfrom textual.app import App\nfrom textual.binding import Binding\nfrom textual.widgets import Header, Static\nfrom textual.widgets import Log as TextLog\n\nfrom .app import app, console, error_console\nfrom .utils import get_julep_client, manage_db_attribute\n\n\n# New TUI app using Textual's Log widget to display transitions in tailing mode\nclass TransitionLogApp(App):\n    # Add a binding for Ctrl+C to quit\n    BINDINGS: ClassVar[list[Binding]] = [\n        Binding(\n            \"ctrl+c\",\n            \"quit\",\n            \"Quit\",\n            tooltip=\"Quit the app and return to the command prompt.\",\n            show=False,\n            priority=True,\n        ),\n    ]\n    TITLE = \"Transition Log\"\n\n    def __init__(self, client, execution_id, initial_transitions, **kwargs):\n        # Set the app title so Header() can pick it up\n        super().__init__(**kwargs)\n        self.client = client\n        self.execution_id = execution_id\n        self.transitions = initial_transitions\n        self.log_widget = None\n\n    def compose(self):\n        # Yield a header; Header() will display the app's title (set above)\n        yield Header()\n\n        # Create the Log widget\n        self.log_widget = TextLog(highlight=True)\n        yield self.log_widget\n\n        # Add a footer with an exit message\n        yield Static(\"Press Ctrl+C to exit\")\n\n    async def on_mount(self) -> None:\n        # Display the initial transitions in reversed order\n        for transition in reversed(self.transitions):\n            self.log_widget.write(\n                f\"{transition.type}:\\n{json.dumps(transition.output, indent=4)}\\n\\n\",\n            )\n        # Set up a periodic callback every 1 second to check for new transitions\n        self.set_interval(1, self.fetch_new_transitions)\n\n    async def fetch_new_transitions(self) -> None:\n        fetched_transitions = self.client.executions.transitions.list(\n            execution_id=self.execution_id,\n        ).items\n        # Calculate the number of new transitions\n        delta = len(fetched_transitions) - len(self.transitions)\n        if delta > 0:\n            new_transitions = fetched_transitions[:delta]\n            for transition in reversed(new_transitions):\n                self.log_widget.write(\n                    f\"{transition.type}:\\n{json.dumps(transition.output, indent=4)}\\n\\n\",\n                )\n            self.transitions = fetched_transitions\n\n        # If a terminal state is reached, display a final message and keep the app open.\n        if (\n            self.transitions\n            and self.transitions[0].type in [\"finish\", \"cancelled\", \"error\"]\n            and not hasattr(self, \"_completion_message_shown\")\n        ):\n            self.log_widget.write(\"\\nExecution complete.\")\n            self._completion_message_shown = True\n\n\n@app.command()\ndef logs(\n    execution_id: Annotated[\n        str | None,\n        typer.Option(\"--execution-id\", \"-e\", help=\"ID of the execution to log\"),\n    ] = None,\n    tailing: Annotated[\n        bool,\n        typer.Option(\"--tail\", \"-t\", help=\"Whether to tail the logs\"),\n    ] = False,\n):\n    \"\"\"\n    Log the output of an execution.\n    \"\"\"\n\n    # Update or fetch the execution_id from the database\n    execution_id = manage_db_attribute(\"execution_id\", execution_id)\n\n    transitions_table = Table(\n        title=\"Execution Transitions\",\n        box=HEAVY,  # border between cells\n        show_lines=True,  # Adds lines between rows\n        show_header=True,\n        header_style=\"bold magenta\",\n    )\n\n    transitions_table.add_column(\n        \"Transition Type\",\n        style=\"bold cyan\",\n        no_wrap=True,\n        justify=\"center\",\n        vertical=\"middle\",\n    )\n    transitions_table.add_column(\n        \"Transition Output\",\n        style=\"green\",\n    )\n\n    def display_transitions(transitions: list[Transition]):\n        for transition in reversed(transitions):\n            transitions_table.add_row(transition.type, json.dumps(transition.output, indent=4))\n        console.print(transitions_table, highlight=True)\n\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            fetch_transitions = progress.add_task(\n                description=\"Fetching transitions\",\n                total=None,\n            )\n            progress.start_task(fetch_transitions)\n\n            transitions = client.executions.transitions.list(execution_id=execution_id).items\n        except Exception as e:\n            error_console.print(\n                Text(f\"Error fetching transitions: {e}\", style=\"bold red\"),\n                highlight=True,\n            )\n            raise typer.Exit(1)\n\n    display_transitions(transitions)\n\n    if tailing:\n        # Instead of reprinting the table repeatedly,\n        # we launch the Textual TUI that uses a Log widget to display transitions.\n        TransitionLogApp(\n            client=client,\n            execution_id=execution_id,\n            initial_transitions=transitions,\n        ).run()\n"
  },
  {
    "path": "src/cli/src/julep_cli/ls.py",
    "content": "from pathlib import Path\nfrom typing import Annotated\n\nimport typer\nimport yaml\nfrom rich.table import Table\nfrom rich.text import Text\n\nfrom .app import app, console\nfrom .models import LockFileContents\nfrom .utils import get_lock_file\n\nMIN_TABLE_WIDTH = 200\n\n\n@app.command()\ndef ls(\n    source: Annotated[\n        Path,\n        typer.Option(\n            \"--source\",\n            \"-s\",\n            help=\"Path to list\",\n        ),\n    ] = Path.cwd(),\n):\n    \"\"\"\n    List synced entities in a julep source project.\n    \"\"\"\n\n    lock_file: LockFileContents = get_lock_file(source)\n    if lock_file.agents:\n        agents_table = Table(\n            title=Text(\"Agents:\", style=\"bold underline magenta\"),\n            header_style=\"bold magenta\",\n            min_width=MIN_TABLE_WIDTH,\n        )\n        agents_table.add_column(\"Name\", style=\"green\")\n        agents_table.add_column(\"About\", style=\"green\")\n        agents_table.add_column(\"Model\", style=\"green\")\n        agents_table.add_column(\"Definition File\", style=\"yellow\")\n        agents_table.add_column(\"ID\", style=\"cyan\", no_wrap=True)\n\n        for agent in lock_file.agents:\n            agent_yaml_contents: dict = yaml.safe_load(Path(source / agent.path).read_text())\n            agent_yaml_contents[\"id\"] = agent.id\n            agents_table.add_row(\n                agent_yaml_contents.get(\"name\", \"N/A\"),\n                agent_yaml_contents.get(\"about\", \"N/A\"),\n                agent_yaml_contents.get(\"model\", \"N/A\"),\n                str(agent.path),\n                str(agent_yaml_contents[\"id\"]),\n            )\n\n        console.print(agents_table, highlight=True)\n\n    if lock_file.tasks:\n        tasks_table = Table(\n            title=Text(\"Tasks:\", style=\"bold underline magenta\"),\n            header_style=\"bold magenta\",\n            min_width=MIN_TABLE_WIDTH,\n        )\n        tasks_table.add_column(\"Name\", style=\"green\")\n        tasks_table.add_column(\"Description\", style=\"green\")\n        tasks_table.add_column(\"Definition File\", style=\"yellow\")\n        tasks_table.add_column(\"ID\", style=\"cyan\", no_wrap=True)\n\n        for task in lock_file.tasks:\n            task_yaml_contents: dict = yaml.safe_load(Path(source / task.path).read_text())\n            tasks_table.add_row(\n                task_yaml_contents.get(\"name\", \"N/A\"),\n                task_yaml_contents.get(\"description\", \"N/A\"),\n                str(task.path),\n                str(task.id),\n            )\n\n        console.print(tasks_table, highlight=True)\n\n    if lock_file.tools:\n        tools_table = Table(\n            title=Text(\"Tools:\", style=\"bold underline magenta\"),\n            header_style=\"bold magenta\",\n            min_width=MIN_TABLE_WIDTH,\n        )\n\n        tools_table.add_column(\"Name\", style=\"green\")\n        tools_table.add_column(\"Description\", style=\"green\")\n        tools_table.add_column(\"Definition File\", style=\"yellow\")\n        tools_table.add_column(\"ID\", style=\"cyan\", no_wrap=True)\n\n        for tool in lock_file.tools:\n            tool_yaml_contents: dict = yaml.safe_load(Path(source / tool.path).read_text())\n            tools_table.add_row(\n                tool_yaml_contents.get(\"name\", \"N/A\"),\n                tool_yaml_contents.get(\"description\", \"N/A\"),\n                str(tool.path),\n                str(tool.id),\n            )\n\n        console.print(tools_table, highlight=True)\n"
  },
  {
    "path": "src/cli/src/julep_cli/models.py",
    "content": "from typing import Annotated, Any, Literal\n\nfrom pydantic import BaseModel, ConfigDict, Field, StrictBool\n\n\nclass CreateAgentRequest(BaseModel):\n    \"\"\"\n    Payload for creating an agent\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: Any | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n\n\nclass CreateToolRequest(BaseModel):\n    \"\"\"\n    Payload for creating a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: Any | None = None  # TODO: Change to FunctionDef\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (  # TODO: Change to available integrations\n        Any | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: Any | None = None  # TODO: Change to SystemDef\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: Any | None = None  # TODO: Change to ApiCallDef\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Any | None = None  # TODO: Change to Computer20241022Def\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: Any | None = None  # TODO: Change to TextEditor20241022Def\n    bash_20241022: Any | None = None  # TODO: Change to Bash20241022Def\n\n\nclass CreateTaskRequest(BaseModel):\n    \"\"\"\n    Payload for creating a task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            Any  # TODO: Change to Task steps\n        ],\n        Field(min_length=1),\n    ]\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[CreateToolRequest] = []  # TODO: Change to TaskTool\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass LockedEntity(BaseModel):\n    \"\"\"\n    A locked entity is information about an entity (agent | task | tool) that has been created on the Julep platform\n    \"\"\"\n\n    path: str\n    \"\"\"\n    The path to the yaml file that defines the entity\n    \"\"\"\n    id: str\n    \"\"\"\n    The ID of the entity\n    \"\"\"\n    last_synced: str\n    \"\"\"\n    The last time the entity was synced with the remote Julep platform\n    \"\"\"\n    revision_hash: str\n    \"\"\"\n    The revision hash of the entity (sha256 of the yaml file contents)\n    \"\"\"\n\n\nclass TaskAgentRelationship(BaseModel):\n    id: str\n    \"\"\"\n    The ID of the task\n    \"\"\"\n    agent_id: str\n    \"\"\"\n    The ID of the agent\n    \"\"\"\n\n\nclass ToolAgentRelationship(BaseModel):\n    id: str\n    \"\"\"\n    The ID of the tool\n    \"\"\"\n    agent_id: str\n    \"\"\"\n    The ID of the agent\n    \"\"\"\n\n\nclass Relationships(BaseModel):\n    \"\"\"\n    The relationships between agents, tasks, and tools\n    \"\"\"\n\n    tasks: list[TaskAgentRelationship] = []\n    \"\"\"\n    The tasks that have been created on the Julep platform\n    \"\"\"\n    tools: list[ToolAgentRelationship] = []\n    \"\"\"\n    The tools that have been created on the Julep platform\n    \"\"\"\n\n\nclass LockFileContents(BaseModel):\n    \"\"\"\n    Schema for the julep-lock.json file\n    \"\"\"\n\n    lockfile_version: str = \"0.1.0\"\n    \"\"\"\n    The version of the lock file\n    \"\"\"\n    agents: list[LockedEntity] = []\n    \"\"\"\n    The agents that have been created on the Julep platform\n    \"\"\"\n    tasks: list[LockedEntity] = []\n    \"\"\"\n    The tasks that have been created on the Julep platform\n    \"\"\"\n    tools: list[LockedEntity] = []\n    \"\"\"\n    The tools that have been created on the Julep platform\n    \"\"\"\n    relationships: Relationships | None = None\n    \"\"\"\n    The relationships between agents, tasks, and tools\n    \"\"\"\n"
  },
  {
    "path": "src/cli/src/julep_cli/run.py",
    "content": "import json\nfrom pathlib import Path\nfrom typing import Annotated\nfrom uuid import UUID\n\nimport julep\nimport typer\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\n\nfrom .app import app, console, error_console\nfrom .executions import create_execution\nfrom .logs import logs\nfrom .utils import get_julep_client\n\n\n@app.command()\ndef run(\n    task: Annotated[\n        UUID,\n        typer.Option(\n            \"--task\",\n            \"-t\",\n            help=\"ID of the task to execute\",\n        ),\n    ],\n    input: Annotated[\n        str | None,\n        typer.Option(\n            \"--input\",\n            help=\"JSON string representing the input for the task (defaults to {})\",\n        ),\n    ] = None,\n    input_file: Annotated[\n        Path | None,\n        typer.Option(\n            \"--input-file\",\n            help=\"Path to a file containing the input for the task\",\n        ),\n    ] = None,\n    wait: Annotated[\n        bool,\n        typer.Option(\n            \"--wait\",\n            help=\"Wait for the task to complete before exiting, stream logs to stdout\",\n        ),\n    ] = False,\n):\n    \"\"\"Run a defined task with specified input parameters\"\"\"\n\n    # Parse input\n    task_input = {}\n    if input and input_file:\n        msg = \"Cannot specify both --input and --input-file\"\n        raise typer.BadParameter(msg)\n\n    if input:\n        try:\n            task_input = json.loads(input)\n            if not isinstance(task_input, dict):\n                msg = \"Input must be a JSON object (dictionary)\"\n                raise typer.BadParameter(msg)\n        except json.JSONDecodeError as e:\n            msg = f\"Input must be valid JSON: {e}\"\n            raise typer.BadParameter(msg)\n    elif input_file:\n        try:\n            with open(input_file) as f:\n                task_input = json.load(f)\n            if not isinstance(task_input, dict):\n                msg = \"Input file must contain a JSON object (dictionary)\"\n                raise typer.BadParameter(msg)\n        except FileNotFoundError as e:\n            msg = f\"Input file not found: {e}\"\n            raise typer.BadParameter(msg)\n        except json.JSONDecodeError as e:\n            msg = f\"Input file must be valid JSON: {e}\"\n            raise typer.BadParameter(msg)\n\n    client = get_julep_client()\n\n    # AIDEV-NOTE: Execute task via Julep API and surface errors clearly\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            run_task = progress.add_task(\"Creating execution...\", start=False)\n            progress.start_task(run_task)\n\n            execution = create_execution(client, str(task), task_input)\n        except Exception as e:\n            error_console.print(\n                f\"[bold red]Error creating execution: {e}[/bold red]\",\n                highlight=True,\n            )\n            raise typer.Exit(1)\n\n    console.print(\n        f\"Execution created successfully! Execution ID: {execution.id}\",\n    )\n\n    # AIDEV-NOTE: Execute task via Julep API with specific error handling for different failure types\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            run_task = progress.add_task(\"Creating execution...\", start=False)\n            progress.start_task(run_task)\n\n            execution = create_execution(client, str(task), task_input)\n        except julep.NotFoundError as e:\n            error_console.print(\n                f\"[bold red]Task not found: {e}[/bold red]\",\n                highlight=True,\n            )\n            raise typer.Exit(1)\n        except Exception as e:\n            error_console.print(\n                f\"[bold red]Error creating execution: {e}[/bold red]\",\n                highlight=True,\n            )\n            raise typer.Exit(1)\n\n    console.print(\n        f\"Execution created successfully! Execution ID: {execution.id}\",\n    )\n\n    if wait:\n        logs(execution_id=execution.id, tailing=True)\n"
  },
  {
    "path": "src/cli/src/julep_cli/sync.py",
    "content": "import hashlib\nimport json\nimport threading\nimport time\nfrom contextlib import suppress\nfrom datetime import UTC, datetime\nfrom pathlib import Path\nfrom typing import Annotated\n\nimport julep\nimport typer\nimport yaml\nfrom julep.types import Agent, Task\nfrom rich.panel import Panel\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\nfrom rich.text import Text\nfrom watchdog.events import FileSystemEventHandler\nfrom watchdog.observers import Observer\n\nfrom .app import app, console, error_console, local_tz\nfrom .models import (\n    CreateAgentRequest,\n    CreateTaskRequest,\n    CreateToolRequest,\n    LockedEntity,\n    LockFileContents,\n    Relationships,\n    TaskAgentRelationship,\n    ToolAgentRelationship,\n)\nfrom .utils import (\n    get_agent_id_from_expression,\n    get_julep_client,\n    get_julep_yaml,\n    get_lock_file,\n    get_related_agent_id,\n    update_entity_force_remote,\n    write_lock_file,\n)\n\n\n@app.command()\ndef sync(\n    source: Annotated[\n        Path,\n        typer.Option(\n            \"--source\",\n            \"-s\",\n            help=\"Source directory containing julep.yaml\",\n        ),\n    ] = Path.cwd(),\n    force_local: Annotated[\n        bool,\n        typer.Option(\n            \"--force-local\",\n            help=\"Force local state to match remote\",\n        ),\n    ] = False,\n    force_remote: Annotated[\n        bool,\n        typer.Option(\n            \"--force-remote\",\n            help=\"Force remote state to match local\",\n        ),\n    ] = False,\n    dry_run: Annotated[\n        bool,\n        typer.Option(\n            \"--dry-run\",\n            \"-d\",\n            help=\"Simulate synchronization without making changes\",\n        ),\n    ] = False,\n    watch: Annotated[\n        bool,\n        typer.Option(\n            \"--watch\",\n            \"-w\",\n            help=(\n                \"Watch for changes and synchronize automatically. Note: when watch mode is enabled, \"\n                \"only local-to-remote sync (force-local) is supported. Use --force-remote only with watch mode turned off.\"\n            ),\n        ),\n    ] = False,\n):\n    \"\"\"Synchronize local package with Julep platform.\n\n    Note: When watch mode is enabled, local changes are continuously synced to remote\n    (i.e. the process works as 'force-local' and --force-remote is ignored).\n    \"\"\"\n    # set the lock file path\n    lock_file_path = source / \"julep-lock.json\"\n\n    # if dry_run is true, we print a dry run message\n    if dry_run:\n        console.print(Text(\"Dry run - no changes will be made\", style=\"bold yellow\"))\n        return\n\n    # if force_local is false and force_remote is false and lock file does not exist, we set force_local to true\n    if not force_local and not force_remote and not lock_file_path.exists():\n        force_local = True\n\n    # if watch is true and force_remote is true, we raise an error\n    if watch and force_remote:\n        error_console.print(\n            Text(\"Error: Cannot use both --watch and --force-remote\", style=\"bold red\"),\n        )\n        raise typer.Exit(1)\n\n    # When watch mode is enabled, force a local sync and disable remote forcing.\n    if watch:\n        if force_remote:\n            error_console.print(\n                Text(\"Error: Cannot use both --watch and --force-remote\", style=\"bold red\"),\n            )\n            raise typer.Exit(1)\n        console.print(\n            Text(\n                \"Watch mode enabled. Forcing local sync and disabling force_remote.\",\n                style=\"bold green\",\n            ),\n        )\n        force_local = True\n        force_remote = False\n\n    # Wrap the sync logic in an inner function to allow re-running on file changes.\n    def perform_sync_logic():\n        try:\n            client = get_julep_client()\n        except Exception as e:\n            error_console.print(Text(f\"Error initializing Julep client: {e}\", style=\"bold red\"))\n            if not watch:\n                raise typer.Exit(1)\n            return\n\n        # Branch A: If forcing local sync and no lock file exists\n        if force_local and not lock_file_path.exists():\n            locked_agents: list[LockedEntity] = []\n            locked_tasks: list[LockedEntity] = []\n            locked_tools: list[LockedEntity] = []\n            relationships: Relationships = Relationships()\n\n            julep_yaml_content = get_julep_yaml(source)\n            agents: list[dict] = julep_yaml_content.get(\"agents\", [])\n            tasks: list[dict] = julep_yaml_content.get(\"tasks\", [])\n            tools: list[dict] = julep_yaml_content.get(\"tools\", [])\n\n            if agents or tasks or tools:\n                console.print(\n                    Panel(\n                        Text(\n                            \"Found the following new entities in julep.yaml:\",\n                            style=\"bold cyan\",\n                        ),\n                    ),\n                )\n                from rich.table import Table\n\n                if agents:\n                    table = Table(title=\"Agents\", show_header=False, title_style=\"bold magenta\")\n                    table.add_column(\"Definition\", style=\"dim\", width=50)\n                    for agent in agents:\n                        table.add_row(agent.get(\"definition\"))\n                    console.print(table, highlight=True)\n\n                if tasks:\n                    table = Table(title=\"Tasks\", show_header=False, title_style=\"bold cyan\")\n                    table.add_column(\"Definition\", style=\"dim\", width=50)\n                    for task in tasks:\n                        table.add_row(task.get(\"definition\"))\n                    console.print(table, highlight=True)\n\n                if tools:\n                    table = Table(title=\"Tools\", show_header=False, title_style=\"bold green\")\n                    table.add_column(\"Definition\", style=\"dim\", width=50)\n                    for tool in tools:\n                        table.add_row(tool.get(\"definition\"))\n                    console.print(table, highlight=True)\n            else:\n                console.print(Text(\"No new entities found in julep.yaml\", style=\"bold yellow\"))\n                return\n\n            if agents:\n                for agent in agents:\n                    agent_yaml_path: Path = source / agent.pop(\"definition\")\n                    agent_yaml_content = yaml.safe_load(agent_yaml_path.read_text())\n                    agent_request_hash = hashlib.sha256(\n                        json.dumps(agent_yaml_content).encode(),\n                    ).hexdigest()\n                    agent_request = CreateAgentRequest(**agent_yaml_content, **agent)\n\n                    with Progress(\n                        SpinnerColumn(),\n                        TextColumn(\"[progress.description]{task.description}\"),\n                        transient=True,\n                        console=console,\n                    ) as progress:\n                        sync_task = progress.add_task(\n                            \"Creating agents on remote...\",\n                            start=False,\n                        )\n                        progress.start_task(sync_task)\n                        created_agent = client.agents.create(\n                            **agent_request.model_dump(exclude_unset=True, exclude_none=True),\n                        )\n\n                    locked_agents.append(\n                        LockedEntity(\n                            path=str(agent_yaml_path.relative_to(source)),\n                            id=created_agent.id,\n                            last_synced=created_agent.created_at.isoformat(\n                                timespec=\"milliseconds\",\n                            )\n                            + \"Z\",\n                            revision_hash=agent_request_hash,\n                        ),\n                    )\n                console.print(\n                    Text(\"All agents were successfully created on remote\", style=\"bold green\"),\n                )\n\n            if tasks:\n                for task in tasks:\n                    task_yaml_path: Path = source / task.pop(\"definition\")\n                    agent_id = get_agent_id_from_expression(task.pop(\"agent_id\"), locked_agents)\n                    task_yaml_content = yaml.safe_load(task_yaml_path.read_text())\n                    task_request_hash = hashlib.sha256(\n                        json.dumps(task_yaml_content).encode(),\n                    ).hexdigest()\n                    task_request = CreateTaskRequest(**task_yaml_content, **task)\n\n                    with Progress(\n                        SpinnerColumn(),\n                        TextColumn(\"[progress.description]{task.description}\"),\n                        transient=True,\n                        console=console,\n                    ) as progress:\n                        sync_task = progress.add_task(\n                            \"Creating tasks on remote...\",\n                            start=False,\n                        )\n                        progress.start_task(sync_task)\n                        created_task = client.tasks.create(\n                            agent_id=agent_id,\n                            **task_request.model_dump(exclude_unset=True, exclude_none=True),\n                        )\n\n                    relationships.tasks.append(\n                        TaskAgentRelationship(id=created_task.id, agent_id=agent_id),\n                    )\n\n                    locked_tasks.append(\n                        LockedEntity(\n                            path=str(task_yaml_path.relative_to(source)),\n                            id=created_task.id,\n                            last_synced=created_task.created_at.isoformat(\n                                timespec=\"milliseconds\",\n                            )\n                            + \"Z\",\n                            revision_hash=task_request_hash,\n                        ),\n                    )\n                console.print(\n                    Text(\"All tasks were successfully created on remote\", style=\"bold blue\"),\n                )\n\n            if tools:\n                for tool in tools:\n                    tool_yaml_path: Path = source / tool.pop(\"definition\")\n                    tool_yaml_content = yaml.safe_load(tool_yaml_path.read_text())\n                    tool_request_hash = hashlib.sha256(\n                        json.dumps(tool_yaml_content).encode(),\n                    ).hexdigest()\n                    tool_request = CreateToolRequest(**tool_yaml_content, **tool)\n\n                    agent_id = get_agent_id_from_expression(tool.pop(\"agent_id\"), locked_agents)\n\n                    with Progress(\n                        SpinnerColumn(),\n                        TextColumn(\"[progress.description]{task.description}\"),\n                        transient=True,\n                        console=console,\n                    ) as progress:\n                        sync_task = progress.add_task(\n                            \"Creating tools on remote...\",\n                            start=False,\n                        )\n                        progress.start_task(sync_task)\n                        created_tool = client.agents.tools.create(\n                            agent_id=agent_id,\n                            **tool_request.model_dump(exclude_unset=True, exclude_none=True),\n                        )\n\n                    relationships.tools.append(\n                        ToolAgentRelationship(id=created_tool.id, agent_id=agent_id),\n                    )\n\n                    locked_tools.append(\n                        LockedEntity(\n                            path=str(tool_yaml_path.relative_to(source)),\n                            id=created_tool.id,\n                            last_synced=created_tool.created_at.isoformat(\n                                timespec=\"milliseconds\",\n                            )\n                            + \"Z\",\n                            revision_hash=tool_request_hash,\n                        ),\n                    )\n                console.print(\n                    Text(\"All tools were successfully created on remote\", style=\"bold magenta\"),\n                )\n\n            with Progress(\n                SpinnerColumn(),\n                TextColumn(\"[progress.description]{task.description}\"),\n                transient=True,\n                console=console,\n            ) as progress:\n                sync_task = progress.add_task(\"Writing lock file...\", start=False)\n                progress.start_task(sync_task)\n                write_lock_file(\n                    source,\n                    LockFileContents(\n                        agents=locked_agents,\n                        tasks=locked_tasks,\n                        tools=locked_tools,\n                        relationships=relationships,\n                    ),\n                )\n\n            console.print(Text(\"Synchronization complete\", style=\"bold green\"))\n            return\n\n        # Branch B: Force local update when lock file exists\n        if force_local and lock_file_path.exists():\n            found_changes = False\n            lock_file = get_lock_file(source)\n            julep_yaml_content = get_julep_yaml(source)\n\n            agents_julep_yaml = julep_yaml_content.get(\"agents\", [])\n            tasks_julep_yaml = julep_yaml_content.get(\"tasks\", [])\n            tools_julep_yaml = julep_yaml_content.get(\"tools\", [])\n\n            # Update agents\n            for agent_julep_yaml in agents_julep_yaml:\n                agent_yaml_def_path: Path = Path(agent_julep_yaml.get(\"definition\"))\n                agent_yaml_content = yaml.safe_load((source / agent_yaml_def_path).read_text())\n                found_in_lock = False\n\n                for i in range(len(lock_file.agents)):\n                    agent_julep_lock = lock_file.agents[i]\n                    if agent_julep_lock.path == str(agent_yaml_def_path):\n                        found_in_lock = True\n                        agent_yaml_content_hash = hashlib.sha256(\n                            json.dumps(agent_yaml_content).encode(),\n                        ).hexdigest()\n                        agent_julep_lock_hash = agent_julep_lock.revision_hash\n\n                        if agent_yaml_content_hash != agent_julep_lock_hash:\n                            found_changes = True\n                            console.print(\n                                Text(\n                                    f\"Agent {agent_yaml_def_path} has changed, updating on remote...\",\n                                    style=\"bold yellow\",\n                                ),\n                            )\n\n                            agent_request = CreateAgentRequest(\n                                **agent_yaml_content,\n                                **agent_julep_yaml,\n                            )\n\n                            with Progress(\n                                SpinnerColumn(),\n                                TextColumn(\"[progress.description]{task.description}\"),\n                                transient=True,\n                                console=console,\n                            ) as progress:\n                                sync_task = progress.add_task(\n                                    \"Updating agent on remote...\",\n                                    start=False,\n                                )\n                                progress.start_task(sync_task)\n\n                                try:\n                                    client.agents.create_or_update(\n                                        agent_id=agent_julep_lock.id,\n                                        **agent_request.model_dump(\n                                            exclude_unset=True,\n                                            exclude_none=True,\n                                        ),\n                                    )\n                                except Exception as e:\n                                    error_console.print(\n                                        f\"\\n[bold red]Error updating agent: {e}[/bold red]\",\n                                    )\n                                    raise typer.Exit(1)\n\n                            console.print(\n                                Text(\n                                    f\"Agent {agent_yaml_def_path} updated successfully\",\n                                    style=\"bold blue\",\n                                ),\n                            )\n\n                            updated_at = client.agents.get(agent_julep_lock.id).updated_at\n                            lock_file.agents[i] = LockedEntity(\n                                path=agent_julep_lock.path,\n                                id=agent_julep_lock.id,\n                                last_synced=updated_at.isoformat(timespec=\"milliseconds\") + \"Z\",\n                                revision_hash=agent_yaml_content_hash,\n                            )\n                        break\n\n                if not found_in_lock:\n                    console.print(\n                        Text(\n                            f\"Agent {agent_yaml_def_path} not found in lock file.\",\n                            style=\"bold yellow\",\n                        ),\n                    )\n\n                    agent_request_hash = hashlib.sha256(\n                        json.dumps(agent_yaml_content).encode(),\n                    ).hexdigest()\n\n                    agent_request = CreateAgentRequest(**agent_yaml_content, **agent_julep_yaml)\n\n                    with Progress(\n                        SpinnerColumn(),\n                        TextColumn(\"[progress.description]{task.description}\"),\n                        transient=True,\n                        console=console,\n                    ) as progress:\n                        sync_task = progress.add_task(\n                            \"Creating agent on remote...\",\n                            start=False,\n                        )\n                        progress.start_task(sync_task)\n\n                        created_agent = client.agents.create(\n                            **agent_request.model_dump(exclude_unset=True, exclude_none=True),\n                        )\n\n                    console.print(\n                        Text(\n                            f\"Agent {agent_yaml_def_path} created successfully on remote\",\n                            style=\"bold blue\",\n                        ),\n                    )\n\n                    lock_file.agents.append(\n                        LockedEntity(\n                            path=str(agent_yaml_def_path),\n                            id=created_agent.id,\n                            last_synced=created_agent.created_at.isoformat(\n                                timespec=\"milliseconds\",\n                            )\n                            + \"Z\",\n                            revision_hash=agent_request_hash,\n                        ),\n                    )\n\n            # Update tasks\n            for task_julep_yaml in tasks_julep_yaml:\n                task_yaml_def_path: Path = Path(task_julep_yaml.get(\"definition\"))\n                task_yaml_content = yaml.safe_load((source / task_yaml_def_path).read_text())\n                found_in_lock = False\n\n                for i in range(len(lock_file.tasks)):\n                    task_julep_lock = lock_file.tasks[i]\n\n                    if task_julep_lock.path == str(task_yaml_def_path):\n                        found_in_lock = True\n                        task_yaml_content_hash = hashlib.sha256(\n                            json.dumps(task_yaml_content).encode(),\n                        ).hexdigest()\n                        task_julep_lock_hash = task_julep_lock.revision_hash\n\n                        if task_yaml_content_hash != task_julep_lock_hash:\n                            console.print(\n                                Text(\n                                    f\"Task {task_yaml_def_path} has changed, updating on remote...\",\n                                    style=\"bold yellow\",\n                                ),\n                            )\n                            found_changes = True\n\n                            task_request = CreateTaskRequest(**{\n                                **task_yaml_content,\n                                **task_julep_yaml,\n                            })\n\n                            agent_id = get_related_agent_id(\n                                task_julep_lock.id,\n                                lock_file.relationships.tasks,\n                            )\n\n                            if not agent_id:\n                                error_console.print(\n                                    Text(\n                                        f\"Task {task_yaml_def_path} has no related agent. Please check the lock file and julep.yaml for consistency.\",\n                                        style=\"bold red\",\n                                    ),\n                                )\n                                raise typer.Exit(1)\n\n                            with Progress(\n                                SpinnerColumn(),\n                                TextColumn(\"[progress.description]{task.description}\"),\n                                transient=True,\n                                console=console,\n                            ) as progress:\n                                sync_task = progress.add_task(\n                                    \"Updating task on remote...\",\n                                    start=False,\n                                )\n                                progress.start_task(sync_task)\n\n                                client.tasks.create_or_update(\n                                    task_id=task_julep_lock.id,\n                                    agent_id=agent_id,\n                                    **task_request.model_dump(\n                                        exclude_unset=True,\n                                        exclude_none=True,\n                                    ),\n                                )\n\n                            console.print(\n                                Text(\n                                    f\"Task {task_yaml_def_path} updated successfully\",\n                                    style=\"bold blue\",\n                                ),\n                            )\n\n                            updated_at = client.tasks.get(task_julep_lock.id).updated_at\n                            lock_file.tasks[i] = LockedEntity(\n                                path=task_julep_lock.path,\n                                id=task_julep_lock.id,\n                                last_synced=updated_at.isoformat(timespec=\"milliseconds\") + \"Z\",\n                                revision_hash=task_yaml_content_hash,\n                            )\n                        break\n\n                if not found_in_lock:\n                    console.print(\n                        Text(\n                            f\"Task {task_yaml_def_path} not found in lock file, creating new task...\",\n                            style=\"bold yellow\",\n                        ),\n                    )\n\n                    task_request_hash = hashlib.sha256(\n                        json.dumps(task_yaml_content).encode(),\n                    ).hexdigest()\n\n                    agent_id = get_agent_id_from_expression(\n                        task_julep_yaml.pop(\"agent_id\"),\n                        lock_file.agents,\n                    )\n\n                    task_request = CreateTaskRequest(**task_yaml_content, **task_julep_yaml)\n\n                    with Progress(\n                        SpinnerColumn(),\n                        TextColumn(\"[progress.description]{task.description}\"),\n                        transient=True,\n                        console=console,\n                    ) as progress:\n                        sync_task = progress.add_task(\"Creating task on remote...\", start=False)\n                        progress.start_task(sync_task)\n\n                        created_task = client.tasks.create(\n                            agent_id=agent_id,\n                            **task_request.model_dump(exclude_unset=True, exclude_none=True),\n                        )\n\n                    lock_file.tasks.append(\n                        LockedEntity(\n                            path=str(task_yaml_def_path),\n                            id=created_task.id,\n                            last_synced=created_task.created_at.isoformat(\n                                timespec=\"milliseconds\",\n                            )\n                            + \"Z\",\n                            revision_hash=task_request_hash,\n                        ),\n                    )\n\n                    lock_file.relationships.tasks.append(\n                        TaskAgentRelationship(id=created_task.id, agent_id=agent_id),\n                    )\n\n                    console.print(\n                        Text(\n                            f\"Task {task_yaml_def_path} created successfully on remote\",\n                            style=\"bold blue\",\n                        ),\n                    )\n\n            # Update tools\n            for tool_julep_yaml in tools_julep_yaml:\n                tool_yaml_def_path: Path = Path(tool_julep_yaml.get(\"definition\"))\n                tool_yaml_content = yaml.safe_load((source / tool_yaml_def_path).read_text())\n                found_in_lock = False\n\n                for i in range(len(lock_file.tools)):\n                    tool_julep_lock = lock_file.tools[i]\n\n                    if tool_julep_lock.path == str(tool_yaml_def_path):\n                        found_in_lock = True\n\n                        tool_yaml_content_hash = hashlib.sha256(\n                            json.dumps(tool_yaml_content).encode(),\n                        ).hexdigest()\n                        tool_julep_lock_hash = tool_julep_lock.revision_hash\n\n                        if tool_yaml_content_hash != tool_julep_lock_hash:\n                            found_changes = True\n                            console.print(\n                                Text(\n                                    f\"Tool {tool_yaml_def_path} has changed, updating on remote...\",\n                                    style=\"bold yellow\",\n                                ),\n                                highlight=True,\n                            )\n\n                            tool_request = CreateToolRequest(\n                                **tool_yaml_content,\n                                **tool_julep_yaml,\n                            )\n\n                            agent_id = get_related_agent_id(\n                                tool_julep_lock.id,\n                                lock_file.relationships.tools,\n                            )\n\n                            if not agent_id:\n                                error_console.print(\n                                    Text(\n                                        f\"Tool {tool_yaml_def_path} has no related agent. Please check the lock file and julep.yaml for consistency.\",\n                                        style=\"bold red\",\n                                    ),\n                                    highlight=True,\n                                )\n                                raise typer.Exit(1)\n\n                            with Progress(\n                                SpinnerColumn(),\n                                TextColumn(\"[progress.description]{task.description}\"),\n                                transient=True,\n                                console=console,\n                            ) as progress:\n                                sync_task = progress.add_task(\n                                    \"Updating tool on remote...\",\n                                    start=False,\n                                )\n                                progress.start_task(sync_task)\n\n                                client.agents.tools.update(\n                                    tool_id=tool_julep_lock.id,\n                                    agent_id=agent_id,\n                                    **tool_request.model_dump(\n                                        exclude_unset=True,\n                                        exclude_none=True,\n                                    ),\n                                )\n\n                            console.print(\n                                Text(\n                                    f\"Tool {tool_yaml_def_path} updated successfully\",\n                                    style=\"bold blue\",\n                                ),\n                                highlight=True,\n                            )\n\n                            lock_file.tools[i] = LockedEntity(\n                                path=tool_julep_lock.path,\n                                id=tool_julep_lock.id,\n                                last_synced=datetime.now(tz=local_tz).isoformat(\n                                    timespec=\"milliseconds\",\n                                )\n                                + \"Z\",\n                                revision_hash=tool_yaml_content_hash,\n                            )\n                        break\n\n                if not found_in_lock:\n                    console.print(\n                        Text(\n                            f\"Tool {tool_yaml_def_path} not found in lock file, creating new tool...\",\n                            style=\"bold yellow\",\n                        ),\n                        highlight=True,\n                    )\n\n                    tool_request_hash = hashlib.sha256(\n                        json.dumps(tool_yaml_content).encode(),\n                    ).hexdigest()\n\n                    agent_id = get_agent_id_from_expression(\n                        tool_julep_yaml.pop(\"agent_id\"),\n                        lock_file.agents,\n                    )\n\n                    tool_request = CreateToolRequest(**tool_yaml_content, **tool_julep_yaml)\n\n                    with Progress(\n                        SpinnerColumn(),\n                        TextColumn(\"[progress.description]{task.description}\"),\n                        transient=True,\n                        console=console,\n                    ) as progress:\n                        sync_task = progress.add_task(\"Creating tool on remote...\", start=False)\n                        progress.start_task(sync_task)\n\n                        created_tool = client.agents.tools.create(\n                            agent_id=agent_id,\n                            **tool_request.model_dump(exclude_unset=True, exclude_none=True),\n                        )\n\n                    lock_file.tools.append(\n                        LockedEntity(\n                            path=str(tool_yaml_def_path),\n                            id=created_tool.id,\n                            last_synced=created_tool.created_at.isoformat(\n                                timespec=\"milliseconds\",\n                            )\n                            + \"Z\",\n                            revision_hash=tool_request_hash,\n                        ),\n                    )\n\n                    lock_file.relationships.tools.append(\n                        ToolAgentRelationship(id=created_tool.id, agent_id=agent_id),\n                    )\n\n                    console.print(\n                        Text(\n                            f\"Tool {tool_yaml_def_path} created successfully on remote\",\n                            style=\"bold blue\",\n                        ),\n                        highlight=True,\n                    )\n\n            if found_changes:\n                with Progress(\n                    SpinnerColumn(),\n                    TextColumn(\"[progress.description]{task.description}\"),\n                    transient=True,\n                    console=console,\n                ) as progress:\n                    sync_task = progress.add_task(\"Writing lock file...\", start=False)\n                    progress.start_task(sync_task)\n                    write_lock_file(source, lock_file)\n\n                console.print(\n                    Text(\"Synchronization complete\", style=\"bold green\"),\n                    highlight=True,\n                )\n                return\n\n            console.print(\n                Text(\"No changes detected. Everything is up to date.\", style=\"bold green\"),\n            )\n            return\n\n        # Branch C: Remote-to-local sync (when force_local is not used)\n        lock_file = get_lock_file(source)\n        detected_changes = False\n\n        with Progress(\n            SpinnerColumn(),\n            TextColumn(\"[progress.description]{task.description}\"),\n            console=console,\n        ) as progress:\n            sync_task = progress.add_task(\"Syncing agents...\", start=False)\n            progress.start_task(sync_task)\n\n            remote_agents: list[Agent] = []\n            agents_update_happened = False\n\n            for locked_agent in lock_file.agents:\n                try:\n                    remote_agent = client.agents.get(locked_agent.id)\n                    remote_agents.append(remote_agent)\n                except julep.NotFoundError:\n                    error_console.print(\n                        Text(\n                            f\"Agent {locked_agent.id} not found on remote. It will be removed from the lock file.\",\n                            style=\"bold red\",\n                        ),\n                        highlight=True,\n                    )\n                    console.print(\n                        Text(\n                            \"- If you wish to create it again, please run `julep sync --force-local`\",\n                            style=\"bold yellow\",\n                        ),\n                        highlight=True,\n                    )\n                    console.print(\n                        Text(\n                            f\"- If this was intentional, please remove it from julep.yaml and delete the corresponding {locked_agent.path} file\",\n                            style=\"bold yellow\",\n                        ),\n                        highlight=True,\n                    )\n                    lock_file.agents.remove(locked_agent)\n\n            for i in range(len(lock_file.agents)):\n                remote_agent, local_agent = remote_agents[i], lock_file.agents[i]\n                assert remote_agent.id == local_agent.id\n\n                last_synced_dt = datetime.fromisoformat(\n                    local_agent.last_synced.rstrip(\"Z\"),\n                ).replace(tzinfo=UTC)\n\n                if remote_agent.updated_at > last_synced_dt:\n                    detected_changes = True\n\n                    progress.stop()\n\n                    wants_to_update = force_remote or typer.confirm(\n                        f\"Agent {local_agent.path} has changed on remote. Do you want to update it locally?\",\n                    )\n\n                    progress.start()\n\n                    if wants_to_update:\n                        lock_file.agents[i] = update_entity_force_remote(\n                            entity=local_agent,\n                            remote_entity=remote_agent,\n                            source=source,\n                        )\n                        agents_update_happened = True\n\n            if agents_update_happened:\n                console.print(\n                    Text(\"Agents updated successfully\", style=\"bold green\"),\n                    highlight=True,\n                )\n            else:\n                console.print(Text(\"No agents updated\", style=\"bold yellow\"), highlight=True)\n\n        with Progress(\n            SpinnerColumn(),\n            TextColumn(\"[progress.description]{task.description}\"),\n            console=console,\n        ) as progress:\n            sync_task = progress.add_task(\"Syncing tasks...\", start=False)\n            progress.start_task(sync_task)\n\n            remote_tasks: list[Task] = []\n            tasks_update_happened = False\n\n            for locked_task in lock_file.tasks:\n                try:\n                    remote_task = client.tasks.get(locked_task.id)\n                    remote_tasks.append(remote_task)\n                except julep.NotFoundError:\n                    error_console.print(\n                        Text(\n                            f\"Task {locked_task.id} not found on remote. It will be removed from the lock file.\",\n                            style=\"bold red\",\n                        ),\n                        highlight=True,\n                    )\n\n                    console.print(\n                        Text(\n                            \"- If you wish to create it again, please run `julep sync --force-local`\",\n                            style=\"bold yellow\",\n                        ),\n                    )\n                    console.print(\n                        Text(\n                            f\"- If this was intentional, please remove it from julep.yaml and delete the corresponding {locked_task.path} file\",\n                            style=\"bold yellow\",\n                        ),\n                    )\n                    lock_file.tasks.remove(locked_task)\n                    raise typer.Exit(1)\n\n            for i in range(len(lock_file.tasks)):\n                remote_task, local_task = remote_tasks[i], lock_file.tasks[i]\n                assert remote_task.id == local_task.id\n\n                last_synced_dt = datetime.fromisoformat(\n                    local_task.last_synced.rstrip(\"Z\"),\n                ).replace(tzinfo=UTC)\n\n                if remote_task.updated_at > last_synced_dt:\n                    detected_changes = True\n\n                    progress.stop()\n\n                    wants_to_update = force_remote or typer.confirm(\n                        f\"Task {local_task.path} has changed on remote. Do you want to update it locally?\",\n                    )\n\n                    progress.start()\n\n                    if wants_to_update:\n                        lock_file.tasks[i] = update_entity_force_remote(\n                            entity=local_task,\n                            remote_entity=remote_task,\n                            source=source,\n                        )\n                        tasks_update_happened = True\n\n            if tasks_update_happened:\n                console.print(Text(\"Tasks updated successfully\", style=\"bold green\"))\n            else:\n                console.print(Text(\"No tasks updated\", style=\"bold yellow\"))\n\n        if agents_update_happened or tasks_update_happened:\n            with Progress(\n                SpinnerColumn(),\n                TextColumn(\"[progress.description]{task.description}\"),\n                console=console,\n            ) as progress:\n                write_lock_task = progress.add_task(\"Writing lock file...\", start=False)\n                progress.start_task(write_lock_task)\n                write_lock_file(source, lock_file)\n\n            console.print(Text(\"Synchronization complete\", style=\"bold green\"), highlight=True)\n        elif detected_changes:\n            console.print(\n                Text(\"No updates were made. Synchronization complete.\", style=\"bold green\"),\n                highlight=True,\n            )\n        else:\n            console.print(\n                Text(\"No changes detected. Everything is up to date.\", style=\"bold green\"),\n                highlight=True,\n            )\n        return\n\n    if watch:\n        console.print(\n            Text(\"Starting watch mode. Monitoring YAML changes...\", style=\"bold green\"),\n        )\n        # Run initial sync\n        perform_sync_logic()\n\n        # Debounced event handler to avoid rapid repeat syncs.\n        class DebouncedYamlEventHandler(FileSystemEventHandler):\n            def __init__(self, debounce_interval, callback):\n                super().__init__()\n                self.debounce_interval = debounce_interval\n                self.callback = callback\n                self.timer = None\n\n            def _trigger_sync(self):\n                self.timer = None\n\n                with suppress(Exception):\n                    self.callback()\n\n            def on_modified(self, event):\n                if event.src_path.endswith((\".yaml\", \".yml\")):\n                    console.print(\n                        Text(\n                            f\"Change detected in {event.src_path}.\\nSynchronizing...\",\n                            style=\"yellow\",\n                        ),\n                    )\n                    if self.timer:\n                        self.timer.cancel()\n                    self.timer = threading.Timer(self.debounce_interval, self._trigger_sync)\n                    self.timer.start()\n\n            def on_created(self, event):\n                if event.src_path.endswith((\".yaml\", \".yml\")):\n                    console.print(\n                        Text(\n                            f\"New file {event.src_path} detected.\\nSynchronizing...\",\n                            style=\"yellow\",\n                        ),\n                    )\n                    if self.timer:\n                        self.timer.cancel()\n                    self.timer = threading.Timer(self.debounce_interval, self._trigger_sync)\n                    self.timer.start()\n\n        observer = Observer()\n        # Set debounce_interval in seconds (e.g., 1.0 second)\n        observer.schedule(\n            DebouncedYamlEventHandler(1.0, perform_sync_logic),\n            str(source),\n            recursive=True,\n        )\n        observer.start()\n        try:\n            while True:\n                time.sleep(1)\n        except KeyboardInterrupt:\n            observer.stop()\n        observer.join()\n        return\n    perform_sync_logic()\n    return\n"
  },
  {
    "path": "src/cli/src/julep_cli/tasks.py",
    "content": "import json\nfrom pathlib import Path\nfrom typing import Annotated\n\nimport typer\nimport yaml\nfrom rich.box import HEAVY_HEAD\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\nfrom rich.table import Table\nfrom rich.text import Text\n\nfrom .app import console, error_console, tasks_app\nfrom .utils import DateTimeEncoder, get_julep_client\n\n\n@tasks_app.command()\ndef create(\n    agent_id: Annotated[\n        str,\n        typer.Option(\"--agent-id\", \"-a\", help=\"ID of the agent the task is associated with\"),\n    ],\n    definition: Annotated[\n        str,\n        typer.Option(\"--definition\", \"-d\", help=\"Path to the task definition YAML file\"),\n    ],\n    name: Annotated[\n        str | None,\n        typer.Option(\n            \"--name\",\n            \"-n\",\n            help=\"Name of the task (if not provided, uses the definition file name)\",\n        ),\n    ] = None,\n    description: Annotated[\n        str | None,\n        typer.Option(\n            \"--description\",\n            help=\"Description of the task (if not provided, uses the definition file name)\",\n        ),\n    ] = None,\n    metadata: Annotated[\n        str | None,\n        typer.Option(\"--metadata\", help=\"JSON metadata for the task\"),\n    ] = None,\n    inherit_tools: Annotated[\n        bool,\n        typer.Option(\"--inherit-tools\", help=\"Inherit tools from the associated agent\"),\n    ] = False,\n):\n    \"\"\"Create a new task for an agent.\n\n    If other options are provided alongside the definition file, they will override values in the definition.\n    \"\"\"\n    try:\n        metadata_dict = json.loads(metadata) if metadata else {}\n    except json.JSONDecodeError as e:\n        error_console.print(f\"Error parsing JSON: {e}\", style=\"bold red\", highlight=True)\n        raise typer.Exit(1)\n\n    client = get_julep_client()\n\n    task_yaml_contents = yaml.safe_load(Path(definition).read_text())\n\n    # Override values from the definition file with the provided options\n    if name:\n        task_yaml_contents[\"name\"] = name\n    if description:\n        task_yaml_contents[\"description\"] = description\n    if metadata:\n        task_yaml_contents[\"metadata\"] = metadata_dict\n    if inherit_tools is True:\n        task_yaml_contents[\"inherit_tools\"] = True\n    elif inherit_tools is False:\n        task_yaml_contents[\"inherit_tools\"] = False\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        console=console,\n    ) as progress:\n        try:\n            create_task_task = progress.add_task(\"Creating task...\", start=False)\n            progress.start_task(create_task_task)\n\n            task = client.tasks.create(\n                agent_id=agent_id,\n                **task_yaml_contents,\n            )\n\n        except Exception as e:\n            error_console.print(f\"Error creating task: {e}\", style=\"bold red\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(Text(f\"Task created successfully. Task ID: {task.id}\", style=\"bold green\"))\n\n\n@tasks_app.command()\ndef update(\n    agent_id: Annotated[\n        str,\n        typer.Option(\"--agent-id\", \"-a\", help=\"ID of the agent the task is associated with\"),\n    ],\n    task_id: Annotated[str, typer.Option(\"--id\", help=\"ID of the task to update\")],\n    name: Annotated[\n        str | None,\n        typer.Option(\"--name\", \"-n\", help=\"New name for the task\"),\n    ] = None,\n    description: Annotated[\n        str | None,\n        typer.Option(\"--description\", help=\"New description for the task\"),\n    ] = None,\n    definition: Annotated[\n        str | None,\n        typer.Option(\n            \"--definition\",\n            \"-d\",\n            help=\"Path to the updated task definition YAML file\",\n        ),\n    ] = None,\n    metadata: Annotated[\n        str | None,\n        typer.Option(\"--metadata\", help=\"JSON metadata for the task\"),\n    ] = None,\n    inherit_tools: Annotated[\n        bool | None,\n        typer.Option(\"--inherit-tools\", help=\"Inherit tools from the associated agent\"),\n    ] = None,\n):\n    \"\"\"Update an existing task's details\"\"\"\n    try:\n        metadata_dict = json.loads(metadata) if metadata else {}\n    except json.JSONDecodeError as e:\n        error_console.print(f\"Error parsing JSON: {e}\", style=\"bold red\", highlight=True)\n        raise typer.Exit(1)\n\n    task_yaml_contents = yaml.safe_load(Path(definition).read_text())\n\n    if name:\n        task_yaml_contents[\"name\"] = name\n    if description:\n        task_yaml_contents[\"description\"] = description\n    if metadata:\n        task_yaml_contents[\"metadata\"] = metadata_dict\n    if inherit_tools is True:\n        task_yaml_contents[\"inherit_tools\"] = True\n    elif inherit_tools is False:\n        task_yaml_contents[\"inherit_tools\"] = False\n\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        console=console,\n    ) as progress:\n        try:\n            update_task_task = progress.add_task(\"Updating task...\", start=False)\n            progress.start_task(update_task_task)\n\n            client.tasks.create_or_update(\n                agent_id=agent_id,\n                task_id=task_id,\n                **task_yaml_contents,\n            )\n        except Exception as e:\n            error_console.print(f\"Error updating task: {e}\", style=\"bold red\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(Text(\"Task updated successfully.\", style=\"bold green\"), highlight=True)\n\n\n@tasks_app.command()\ndef list(\n    agent_id: Annotated[\n        str | None,\n        typer.Option(\"--agent-id\", \"-a\", help=\"Filter tasks by associated agent ID\"),\n    ] = None,\n    json_output: Annotated[\n        bool,\n        typer.Option(\"--json\", \"-j\", help=\"Output the list in JSON format\"),\n    ] = False,\n):\n    \"\"\"List all tasks or filter based on criteria\"\"\"\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        console=console,\n    ) as progress:\n        try:\n            list_tasks_task = progress.add_task(description=\"Fetching tasks\", total=None)\n            progress.start_task(list_tasks_task)\n\n            tasks = client.tasks.list(agent_id=agent_id).items\n        except Exception as e:\n            error_console.print(Text(f\"Error fetching tasks: {e}\", style=\"bold red\"))\n            raise typer.Exit(1)\n\n    if json_output:\n        console.print(\n            json.dumps([task.model_dump() for task in tasks], indent=2, cls=DateTimeEncoder),\n            highlight=True,\n        )\n        return\n\n    # Table format output\n    tasks_table = Table(\n        title=Text(\"Available Tasks:\", style=\"bold underline magenta\"),\n        box=HEAVY_HEAD,  # border between cells\n        show_lines=True,  # Adds lines between rows\n        show_header=True,\n        header_style=\"bold magenta\",\n        width=150,\n    )\n    tasks_table.add_column(\"Name\", style=\"cyan\", width=40)\n    tasks_table.add_column(\"Description\", style=\"yellow\", width=50)\n    tasks_table.add_column(\"ID\", style=\"green\", width=40)\n\n    for task in tasks:\n        tasks_table.add_row(task.name, task.description, task.id)\n\n    console.print(tasks_table, highlight=True)\n"
  },
  {
    "path": "src/cli/src/julep_cli/tools.py",
    "content": "import json\nfrom pathlib import Path\nfrom typing import Annotated\n\nimport typer\nimport yaml\nfrom rich.box import HEAVY_HEAD\nfrom rich.progress import Progress, SpinnerColumn, TextColumn\nfrom rich.table import Table\nfrom rich.text import Text\n\nfrom .app import console, error_console, tools_app\nfrom .utils import get_julep_client\n\n\n@tools_app.command()\ndef create(\n    agent_id: Annotated[\n        str,\n        typer.Option(\"--agent-id\", \"-a\", help=\"ID of the agent the tool is associated with\"),\n    ],\n    definition: Annotated[\n        str,\n        typer.Option(\"--definition\", \"-d\", help=\"Path to the tool configuration YAML file\"),\n    ],\n    name: Annotated[\n        str | None,\n        typer.Option(\n            \"--name\",\n            \"-n\",\n            help=\"Name of the tool (if not provided, uses filename from definition)\",\n        ),\n    ] = None,\n):\n    \"\"\"Create a new tool for an agent.\n\n    Requires either a definition file or direct parameters. If both are provided,\n    command-line options override values from the definition file.\n    \"\"\"\n\n    client = get_julep_client()\n\n    tool_yaml_contents = yaml.safe_load(Path(definition).read_text())\n\n    if name:\n        tool_yaml_contents[\"name\"] = name\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n    ) as progress:\n        try:\n            create_tool_task = progress.add_task(description=\"Creating tool\", total=None)\n            progress.start_task(create_tool_task)\n            tool = client.agents.tools.create(agent_id=agent_id, **tool_yaml_contents)\n        except Exception as e:\n            error_console.print(f\"Error creating tool: {e}\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(\n        Text(f\"Tool created successfully. Tool ID: {tool.id}\", style=\"bold green\"),\n        highlight=True,\n    )\n\n\n@tools_app.command()\ndef update(\n    agent_id: Annotated[\n        str,\n        typer.Option(\"--agent-id\", \"-a\", help=\"ID of the agent the tool is associated with\"),\n    ],\n    tool_id: Annotated[str, typer.Option(\"--id\", help=\"ID of the tool to update\")],\n    definition: Annotated[\n        str | None,\n        typer.Option(\n            \"--definition\",\n            \"-d\",\n            help=\"Path to the updated tool configuration YAML file\",\n        ),\n    ] = None,\n    name: Annotated[\n        str | None,\n        typer.Option(\"--name\", \"-n\", help=\"New name for the tool\"),\n    ] = None,\n):\n    \"\"\"Update an existing tool's details.\n\n    Updates can be made using either a definition file or direct parameters.\n    If both are provided, command-line options override values from the definition file.\n    \"\"\"\n\n    client = get_julep_client()\n\n    tool_yaml_contents = yaml.safe_load(Path(definition).read_text()) if definition else {}\n\n    if name:\n        tool_yaml_contents[\"name\"] = name\n\n    if not tool_yaml_contents:\n        error_console.print(\n            \"Error: No tool name or definition provided\",\n            style=\"bold red\",\n            highlight=True,\n        )\n        raise typer.Exit(1)\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            update_tool_task = progress.add_task(\"Updating tool...\", start=False)\n            progress.start_task(update_tool_task)\n\n            client.agents.tools.update(agent_id=agent_id, tool_id=tool_id, **tool_yaml_contents)\n        except Exception as e:\n            error_console.print(f\"Error updating tool: {e}\", style=\"bold red\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(Text(\"Tool updated successfully.\", style=\"bold green\"), highlight=True)\n\n\n@tools_app.command()\ndef delete(\n    agent_id: Annotated[\n        str,\n        typer.Option(\"--agent-id\", \"-a\", help=\"ID of the agent the tool is associated with\"),\n    ],\n    tool_id: Annotated[str, typer.Option(\"--id\", help=\"ID of the tool to delete\")],\n    force: Annotated[\n        bool,\n        typer.Option(\n            \"--force\",\n            \"-f\",\n            help=\"Force the deletion without prompting for confirmation\",\n        ),\n    ] = False,\n):\n    \"\"\"Delete an existing tool.\n\n    By default, prompts for confirmation unless --force is specified.\n    \"\"\"\n\n    if not force:\n        confirm = typer.confirm(f\"Are you sure you want to delete tool '{tool_id}'?\")\n    if not confirm:\n        typer.echo(\"Operation cancelled\")\n        return\n\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        transient=True,\n        console=console,\n    ) as progress:\n        try:\n            delete_tool_task = progress.add_task(\"Deleting tool...\", start=False)\n            progress.start_task(delete_tool_task)\n\n            client.agents.tools.delete(agent_id=agent_id, tool_id=tool_id)\n        except Exception as e:\n            error_console.print(f\"Error deleting tool: {e}\", style=\"bold red\", highlight=True)\n            raise typer.Exit(1)\n\n    console.print(Text(\"Tool deleted successfully.\", style=\"bold green\"), highlight=True)\n\n\n@tools_app.command()\ndef list(\n    agent_id: Annotated[\n        str | None,\n        typer.Option(\"--agent-id\", \"-a\", help=\"Filter tools by associated agent ID\"),\n    ] = None,\n    json_output: Annotated[\n        bool,\n        typer.Option(\"--json\", help=\"Output the list in JSON format\"),\n    ] = False,\n):\n    \"\"\"List all tools or filter based on criteria.\n\n    Either --agent-id or --task-id must be provided to filter the tools list.\n    \"\"\"\n    if not agent_id:\n        typer.echo(\"Error: --agent-id must be provided\")\n        raise typer.Exit(1)\n\n    client = get_julep_client()\n\n    with Progress(\n        SpinnerColumn(),\n        TextColumn(\"[progress.description]{task.description}\"),\n        console=console,\n    ) as progress:\n        try:\n            list_tools_task = progress.add_task(\"Listing tools...\", start=False)\n            progress.start_task(list_tools_task)\n\n            tools = client.agents.tools.list(agent_id=agent_id)\n        except Exception as e:\n            error_console.print(f\"Error listing tools: {e}\", style=\"bold red\", highlight=True)\n            raise typer.Exit(1)\n\n    if json_output:\n        typer.echo(json.dumps(tools, indent=2))\n        return\n\n    tools_table = Table(\n        title=Text(\"Available Tools:\", style=\"bold underline magenta\"),\n        box=HEAVY_HEAD,  # border between cells\n        show_lines=True,  # Adds lines between rows\n        show_header=True,\n        header_style=\"bold magenta\",\n        width=130,\n    )\n\n    tools_table.add_column(\"ID\", style=\"green\")\n    tools_table.add_column(\"Name\", style=\"cyan\")\n    tools_table.add_column(\"Type\", style=\"yellow\")\n    tools_table.add_column(\"Description\", style=\"yellow\")\n\n    for tool in tools:\n        tools_table.add_row(tool.id, tool.name, tool.type, tool.description)\n\n    console.print(tools_table, highlight=True)\n"
  },
  {
    "path": "src/cli/src/julep_cli/utils.py",
    "content": "import hashlib\nimport json\nimport os\nimport sqlite3\nfrom collections.abc import Callable\nfrom datetime import datetime\nfrom pathlib import Path\nfrom typing import Any\n\nimport typer\nimport yaml\nfrom julep import Julep\nfrom julep.types import Agent, Task\nfrom rich.text import Text\n\nfrom .app import console, error_console\nfrom .models import (\n    CreateAgentRequest,\n    LockedEntity,\n    LockFileContents,\n    TaskAgentRelationship,\n    ToolAgentRelationship,\n)\n\nCONFIG_DIR = Path.home() / \".config\" / \"julep\"\nCONFIG_FILE_NAME = \"config.yml\"\n\n\nclass DateTimeEncoder(json.JSONEncoder):\n    def default(self, obj):\n        if isinstance(obj, datetime):\n            return obj.isoformat()\n        return super().default(obj)\n\n\ndef get_config(config_dir: Path = CONFIG_DIR) -> dict:\n    \"\"\"Get configuration from config file\"\"\"\n    if not (config_dir / CONFIG_FILE_NAME).exists():\n        return {}\n\n    with open(config_dir / CONFIG_FILE_NAME) as f:\n        return yaml.safe_load(f) or {}\n\n\ndef get_julep_yaml(source: Path) -> dict:\n    \"\"\"Get the julep.yaml file from the source directory\"\"\"\n\n    if not (source / \"julep.yaml\").exists():\n        typer.echo(\"Error: julep.yaml not found in source directory\")\n        raise typer.Exit(1)\n\n    with open(source / \"julep.yaml\") as f:\n        return yaml.safe_load(f)\n\n\ndef write_julep_yaml(source: Path, julep_yaml_contents: dict):\n    \"\"\"Write the julep.yaml file\"\"\"\n\n    with open(source / \"julep.yaml\", \"w\") as f:\n        yaml.dump(julep_yaml_contents, f)\n\n\ndef save_config(config: dict, config_dir: Path = CONFIG_DIR):\n    \"\"\"Save configuration to config file\"\"\"\n    config_dir.mkdir(parents=True, exist_ok=True)\n\n    with open(config_dir / CONFIG_FILE_NAME, \"w\") as f:\n        yaml.dump(config, f)\n\n\ndef get_julep_client(*, api_key: str | None = None, environment: str | None = None) -> Julep:\n    \"\"\"Get a Julep client\"\"\"\n    # Initialize the Julep client\n    api_key = api_key or get_config().get(\"api_key\") or os.getenv(\"JULEP_API_KEY\")\n\n    if not api_key:\n        error_console.print(\n            Text(\n                \"Error: JULEP_API_KEY env var not set.\",\n                style=\"bold red\",\n            ),\n        )\n        console.print(\n            Text(\n                \"To set the API key, run `julep auth`\",\n            ),\n        )\n\n        raise typer.Exit(1)\n\n    # Get environment from config.yml or default to production\n    environment = (\n        environment or get_config().get(\"environment\") or os.getenv(\"JULEP_ENVIRONMENT\")\n    )\n\n    if not environment:\n        console.print(\n            Text(\n                \"JULEP_ENVIRONMENT env var not set. Defaulting to production.\",\n            ),\n        )\n\n    return Julep(api_key=api_key, environment=environment or \"production\", max_retries=0)\n\n\ndef create_lock_file(source: Path):\n    lock_file = source / \"julep-lock.json\"\n    if not lock_file.exists():\n        lock_file.touch()\n\n        return lock_file\n    typer.echo(\"julep-lock.json already exists in source directory\")\n    raise typer.Exit(1)\n\n\ndef get_lock_file(project_dir: Path = Path.cwd()) -> LockFileContents:\n    \"\"\"\n    Get the lock file from the project directory.\n    If no project directory is provided, it will default to the current working directory.\n    \"\"\"\n\n    lock_file = project_dir / \"julep-lock.json\"\n\n    if not lock_file.exists():\n        typer.echo(\"Error: julep-lock.json not found in source directory\")\n        raise typer.Exit(1)\n\n    lock_file_contents = lock_file.read_text()\n\n    return LockFileContents(**json.loads(lock_file_contents))\n\n\ndef fetch_all_remote_agents(client: Julep) -> list[CreateAgentRequest]:\n    \"\"\"Fetch all agents from the Julep platform\"\"\"\n    i = 0\n    agents: list[CreateAgentRequest] = []\n    while True:\n        new_agents = client.agents.list(limit=100, offset=i).items\n        if len(new_agents) == 0:\n            break\n\n        agents.extend(\n            CreateAgentRequest(**agent.model_dump(exclude_none=True, exclude_unset=True))\n            for agent in new_agents\n        )\n        i += 100\n\n    return agents\n\n\ndef fetch_all_local_agents(source: Path) -> list[tuple[CreateAgentRequest, Path]]:\n    \"\"\"Fetch all agents from the local source directory based on the julep.yaml file\"\"\"\n\n    local_agents: list[tuple[CreateAgentRequest, Path]] = []\n\n    julep_yaml_content = get_julep_yaml(source)\n    agents = julep_yaml_content.get(\"agents\", [])\n\n    for agent in agents:\n        agent_path = source / agent.pop(\"definition\")\n        local_agents.append((\n            CreateAgentRequest(**yaml.safe_load(agent_path.read_text()), **agent),\n            agent_path,\n        ))\n\n    return local_agents\n\n\ndef write_lock_file(project_dir: Path, content: LockFileContents):\n    lock_file_path = project_dir / \"julep-lock.json\"\n    lock_file_contents = content.model_dump_json(indent=2)\n    lock_file_path.write_text(lock_file_contents)\n\n\ndef get_entity_from_lock_file(\n    type: str,\n    id: str,\n    project_dir: Path = Path.cwd(),\n) -> LockedEntity | None:\n    \"\"\"\n    Get the contents of lock file\n    \"\"\"\n\n    lock_file = get_lock_file(project_dir)\n\n    # Adding an s to match the plural form of the key in lock file (agent -> agents)\n    entities: list[LockedEntity] = getattr(lock_file, type + \"s\", [])\n\n    matched = [entity for entity in entities if entity.id == id]\n\n    if len(matched) > 1:\n        typer.echo(f\"Error: Multiple {type}s with id '{id}' found in lock file\")\n        raise typer.Exit(1)\n\n    if not matched:\n        return None\n\n    return matched[0]\n\n\ndef update_existing_entity_in_lock_file(\n    type: str,\n    new_entity: LockedEntity,\n    project_dir: Path = Path.cwd(),\n):\n    found = False\n    lock_file = get_lock_file(project_dir)\n    entities: list[LockedEntity] = getattr(lock_file, type + \"s\", [])\n\n    for i in range(len(entities)):\n        if entities[i].id == new_entity.id:\n            entities[i] = new_entity\n            found = True\n            break\n\n    if not found:\n        # typer.echo(\n        #     f\"Error: Cannot update{type} with id '{new_entity.get('id')}' because it was not found in lock file\",\n        #     err=True,\n        # )\n        error_console.print(\n            Text(\n                f\"Error: Cannot update{type} with id '{new_entity.get('id')}' because it was not found in lock file\",\n                style=\"bold red\",\n            ),\n            highlight=True,\n        )\n        raise typer.Exit(1)\n\n    setattr(lock_file, type + \"s\", entities)\n\n    write_lock_file(project_dir, lock_file)\n\n\ndef add_entity_to_lock_file(\n    type: str,\n    new_entity: LockedEntity,\n    project_dir: Path = Path.cwd(),\n):\n    \"\"\"\n    Add a new entity to the lock file\n    \"\"\"\n\n    lock_file = get_lock_file(project_dir)\n    entities: list[LockedEntity] = getattr(lock_file, type + \"s\", [])\n\n    entities.append(new_entity)\n\n    setattr(lock_file, type + \"s\", entities)\n\n    write_lock_file(project_dir, lock_file)\n\n\ndef update_yaml_for_existing_entity(path: Path, data: dict):\n    \"\"\"Update the yaml file for an existing entity\"\"\"\n    with open(path, \"w\") as f:\n        yaml.dump(data, f)\n\n\ndef add_agent_to_julep_yaml(source: Path, agent_data: dict):\n    \"\"\"Add a new entity to the julep.yaml file\"\"\"\n\n    julep_yaml_contents = get_julep_yaml(source)\n\n    julep_yaml_contents[\"agents\"].append(agent_data)\n\n    write_julep_yaml(source, julep_yaml_contents)\n\n\ndef get_related_agent_id(\n    id: str,\n    relationships_list: list[TaskAgentRelationship] | list[ToolAgentRelationship],\n):\n    for relationship in relationships_list:\n        if relationship.id == id:\n            return relationship.agent_id\n\n    return None\n\n\ndef create_locked_entity(\n    relative_path: Path,\n    source: Path,\n    id: str,\n    last_synced: datetime,\n    content_to_hash: dict,\n) -> LockedEntity:\n    return LockedEntity(\n        path=str(relative_path.relative_to(source)),\n        id=id,\n        last_synced=last_synced.isoformat(timespec=\"microseconds\") + \"Z\",\n        revision_hash=hashlib.sha256(json.dumps(content_to_hash).encode()).hexdigest(),\n    )\n\n\ndef get_agent_id_from_expression(expression: str, locked_agents: list[LockedEntity]) -> str:\n    \"\"\"\n    Get the agent ID from an expression in julep.yaml\n\n    Example:\n\n    if `expression` is `{agents[0].id}` then the function will return the id of the first agent in the lock file\n    \"\"\"\n\n    if not locked_agents:\n        msg = \"No locked agents passed to get_agent_id_from_expression\"\n        raise ValueError(msg)\n\n    return eval(f'f\"{expression}\"', {\"agents\": locked_agents})\n\n\ndef update_entity_force_remote(\n    entity: LockedEntity,\n    remote_entity: Agent | Task,\n    source: Path,\n) -> LockedEntity:\n    \"\"\"\n    Updates a local entity's yaml file with the remote entity's data and returns an updated `LockedEntity` with synced timestamp and hash\n    \"\"\"\n\n    local_agent_yaml_path: Path = source / entity.path\n\n    entity_new_yaml_content = remote_entity.model_dump(\n        exclude={\"id\", \"created_at\", \"updated_at\"},\n        exclude_none=True,\n        exclude_unset=True,\n    )\n\n    update_yaml_for_existing_entity(local_agent_yaml_path, entity_new_yaml_content)\n\n    return create_locked_entity(\n        source=source,\n        relative_path=local_agent_yaml_path,\n        id=remote_entity.id,\n        last_synced=remote_entity.updated_at,\n        content_to_hash=entity_new_yaml_content,\n    )\n\n\n# NEW DATABASE FUNCTIONS & DECORATOR FOR PERSISTING ATTRIBUTES\n\n# Path to the SQLite database file in the Julep config directory\nSTATE_DB_PATH = CONFIG_DIR / \"julep_state.db\"\n\n\ndef get_state_db_connection() -> sqlite3.Connection:\n    \"\"\"\n    Get a SQLite connection to the state database.\n    This creates the CONFIG_DIR if it doesn't exist.\n    \"\"\"\n    CONFIG_DIR.mkdir(parents=True, exist_ok=True)\n    return sqlite3.connect(str(STATE_DB_PATH))\n\n\ndef init_state_db():\n    \"\"\"\n    Initialize the state database with the 'attributes' table if it does not exist.\n    The table stores key-value pairs, with the key as a unique identifier.\n    \"\"\"\n    conn = get_state_db_connection()\n    with conn:\n        conn.execute(\"\"\"\n        CREATE TABLE IF NOT EXISTS attributes (\n            key TEXT PRIMARY KEY,\n            value TEXT\n        )\n        \"\"\")\n    conn.close()\n\n\ndef persist_attribute(key: str, extractor: Callable[[Any], Any] | None = None):\n    \"\"\"\n    A decorator that persists an attribute from a function's return value\n    into a SQLite database located in the ~/.config/julep/ directory.\n\n    Parameters:\n      key (str): The name of the attribute to store (e.g., \"execution_id\").\n      extractor (Callable[[Any], Any], optional): A function that extracts the value from\n          the function's return value. If not provided, the decorator will attempt to extract:\n            - If the return value is a dict and contains 'key', it uses that.\n            - Otherwise, if the return value has an attribute with the name 'key', it uses that.\n\n    Usage Example:\n      @persist_attribute(\"execution_id\", extractor=lambda execution: execution.id)\n      def create_execution(client, task_id, input_data):\n          return client.executions.create(task_id=task_id, input=input_data)\n\n    The attribute is stored as a string in the 'attributes' table.\n    \"\"\"\n\n    def decorator(func):\n        def wrapper(*args, **kwargs):\n            result = func(*args, **kwargs)\n            value = None\n            if extractor is not None:\n                value = extractor(result)\n            else:\n                # Attempt default extraction\n                if isinstance(result, dict) and key in result:\n                    value = result[key]\n                elif hasattr(result, key):\n                    value = getattr(result, key)\n\n            if value is not None:\n                init_state_db()  # Ensure the database and table exist\n                conn = get_state_db_connection()\n                with conn:\n                    conn.execute(\n                        \"INSERT OR REPLACE INTO attributes (key, value) VALUES (?, ?)\",\n                        (key, str(value)),\n                    )\n                conn.close()\n            return result\n\n        return wrapper\n\n    return decorator\n\n\n# NEW FUNCTION TO FETCH/UPDATE ATTRIBUTE VALUES FROM/TO DATABASE\ndef manage_db_attribute(key: str, current_value: str | None = None) -> str:\n    \"\"\"\n    If current_value is None, fetch the attribute from the SQLite state database.\n    If a value is provided, update the database with that value.\n    The state database file will only be created/initialized when a value is provided for update.\n\n    Returns the fetched or provided value.\n    \"\"\"\n    if current_value is None:\n        # Fetch scenario: DO NOT create the database if it doesn't exist.\n        if not STATE_DB_PATH.exists():\n            error_console.print(\n                Text(\n                    f\"Error: No saved value for '{key}' found because the state database does not exist. Please provide one.\",\n                    style=\"bold red\",\n                ),\n                highlight=True,\n            )\n            raise typer.Exit(1)\n\n        conn = get_state_db_connection()\n        cursor = conn.cursor()\n        try:\n            cursor.execute(\"SELECT value FROM attributes WHERE key=?\", (key,))\n        except sqlite3.OperationalError as e:\n            error_console.print(\n                Text(\n                    f\"Error: The state database is not properly initialized: {e}\",\n                    style=\"bold red\",\n                ),\n                highlight=True,\n            )\n            conn.close()\n            raise typer.Exit(1)\n        row = cursor.fetchone()\n        if row:\n            value = row[0]\n        else:\n            error_console.print(\n                Text(\n                    f\"Error: No saved value for '{key}' found in the database, please provide one.\",\n                    style=\"bold red\",\n                ),\n                highlight=True,\n            )\n            conn.close()\n            raise typer.Exit(1)\n        conn.close()\n        return value\n    # Update scenario: create the DB and table if they don't already exist, then update.\n    init_state_db()\n    conn = get_state_db_connection()\n    cursor = conn.cursor()\n    cursor.execute(\n        \"INSERT OR REPLACE INTO attributes (key, value) VALUES (?, ?)\",\n        (key, current_value),\n    )\n    conn.commit()\n    conn.close()\n    return current_value\n"
  },
  {
    "path": "src/cli/src/julep_cli/wrapper.py",
    "content": "import inspect\nimport typing\nfrom collections.abc import Callable\nfrom enum import Enum, StrEnum\nfrom typing import Annotated, Any, Protocol\n\nimport questionary\nimport typer\nfrom click.exceptions import MissingParameter, UsageError\nfrom stringcase import titlecase\nfrom typer import Typer\n\n\nclass ExceptionWithContext(Protocol):\n    __context__: UsageError\n\n\ndef get_command_signature(error: UsageError) -> inspect.Signature:\n    \"\"\"Extracts the function signature from the callback of a UsageError's command.\"\"\"\n    return inspect.signature(error.cmd.callback)\n\n\ndef bind_arguments(signature: inspect.Signature, params: dict) -> inspect.BoundArguments:\n    \"\"\"Binds provided parameters to the given signature and applies default values.\"\"\"\n    bound = signature.bind_partial(**params)\n    bound.apply_defaults()\n\n    return bound\n\n\ndef make_validator(func: Callable[[Any], Any]) -> Callable[[Any], bool]:\n    def validate(value: Any) -> bool:\n        try:\n            func(value)\n            return True\n        except Exception:\n            return False\n\n    return validate\n\n\ndef build_prompt(\n    parameter: typer.Argument,\n    meta: tuple[typing.Any, ...],\n    expected_type: type,\n) -> questionary.Question:\n    \"\"\"Prepares a questionary prompt based on the parameter metadata and expected type.\n\n    Args:\n        parameter: Typer argument parameter.\n        meta: Tuple of type specifications and additional metadata.\n        expected_type: Expected type for the parameter.\n\n    Returns:\n        A questionary.Question object for prompting the user.\n    \"\"\"\n    # Section: Build prompt header\n    prompt_message = titlecase(parameter.human_readable_name.lower())\n\n    # Section: Append type indicator to prompt message\n    if not issubclass(expected_type, str | StrEnum | bool):\n        prompt_message += f\" [{expected_type.__name__}]\"\n\n    # Section: Extract additional keyword arguments from metadata\n    kwargs = meta[2] if meta and len(meta) == 3 and isinstance(meta[2], dict) else {}\n    kwargs[\"default\"] = kwargs.get(\"default\") or parameter.default\n    question_type = questionary.text\n\n    # Section: Add instruction based on parameter help\n    kwargs[\"instruction\"] = kwargs.get(\"instruction\") or (\n        f\"({parameter.help})\" if parameter.help else \"\"\n    )\n\n    # Section: Handle multiline input\n    if kwargs.get(\"multiline\", False):\n        kwargs[\"instruction\"] += \"\\n(Press Alt+Enter or Esc then Enter to submit)\\n\"\n\n    # Section: Configure prompt for Enum types\n    if issubclass(expected_type, Enum):\n        question_type = questionary.select\n        kwargs[\"choices\"] = choices = [e.value for e in expected_type]\n        kwargs[\"default\"] = kwargs[\"default\"] or choices[0]\n\n        if len(choices) >= 6:\n            question_type = questionary.autocomplete\n            prompt_message += f\" [{len(choices)} options]\"\n            kwargs[\"complete_style\"] = \"MULTI_COLUMN\"\n\n        del kwargs[\"instruction\"]\n\n    # Section: Use confirmation prompt for booleans\n    elif expected_type is bool:\n        question_type = questionary.confirm\n        kwargs[\"default\"] = kwargs[\"default\"] or False\n        prompt_message += \" (Y/n)\" if kwargs[\"default\"] else \" (y/N)\"\n\n    else:\n        # Section: Set default validation if not provided\n        kwargs[\"validate\"] = kwargs.get(\"validate\") or make_validator(expected_type)\n\n    # Section: Finalize instruction formatting\n    if kwargs.get(\"instruction\"):\n        kwargs[\"instruction\"] += \" \"\n\n    if kwargs[\"default\"] is None:\n        del kwargs[\"default\"]\n\n    return question_type(prompt_message, **kwargs)\n\n\ndef prompt_for_missing_parameter(error: UsageError) -> None:\n    \"\"\"Prompts for missing parameters and re-invokes the command after receiving input.\"\"\"\n    # Section: Unwrap nested error if applicable\n    if not isinstance(error, MissingParameter) and hasattr(error, \"__context__\"):\n        error = getattr(error, \"__context__\")\n\n    # Section: Reraise if error is not a MissingParameter\n    if not isinstance(error, MissingParameter):\n        raise error\n\n    # Section: Retrieve command signature and context\n    signature = get_command_signature(error)\n    ctx = error.ctx\n    command = error.cmd\n\n    # Section: Extract missing parameter details\n    missing_param = error.param\n    parameter_details = signature.parameters[missing_param.name]\n\n    param_annotation = parameter_details.annotation\n    type_args = typing.get_args(param_annotation)\n\n    # Section: Determine expected type from annotation\n    if len(type_args) >= 2 and isinstance(type_args[0], type):\n        [expected_type, *_] = type_args\n    else:\n        expected_type = param_annotation or str\n\n    # Section: Build and display prompt for missing parameter\n    prompt = build_prompt(missing_param, type_args, expected_type)\n\n    user_input = prompt.ask(patch_stdout=True)\n\n    # Section: Bind user input to parameters\n    bound = bind_arguments(signature, ctx.params | {missing_param.name: user_input})\n    cmd_args = []\n\n    # Section: Construct command arguments from bound parameters\n    for param_item in ctx.command.params:\n        if param_item.name not in bound.arguments:\n            continue\n\n        # Retrieve option flag\n        [option_flag, *_] = param_item.to_info_dict()[\"opts\"]\n        is_option = isinstance(param_item, typer.core.TyperOption)\n        value = bound.arguments[param_item.name]\n        param_type = bound.signature.parameters[param_item.name].annotation\n        param_type = getattr(param_type, \"__origin__\", param_type)\n\n        # Section: Process option parameters\n        if is_option:\n            if param_type is bool:\n                prefix = \"no-\" if not value else \"\"\n                cmd_args.append(f\"--{prefix}{option_flag[2:]}\")\n            else:\n                cmd_args.append(option_flag)\n                cmd_args.append(value)\n        else:\n            cmd_args.append(value)\n\n    # Section: Reinvoke the command with updated arguments\n    try:\n        return command.main(map(str, cmd_args), standalone_mode=False)\n    except BaseException as new_error:\n        return prompt_for_missing_parameter(new_error)\n\n\nclass WrappedTyper(Typer):\n    \"\"\"Custom Typer subclass that handles missing parameters via interactive prompts.\"\"\"\n\n    def __call__(self, *args, **kwargs):\n        \"\"\"Invokes the Typer app and handles missing parameters gracefully.\"\"\"\n        # Section: Attempt to run the Typer app and catch errors\n        try:\n            return super().__call__(*args, **{**kwargs, \"standalone_mode\": False})\n        except BaseException as error:\n            return prompt_for_missing_parameter(error)\n\n    def command(self, *args, **kwargs):\n        \"\"\"Decorator for registering commands with the Typer application.\"\"\"\n        return super().command(*args, **kwargs)\n\n\nif __name__ == \"__main__\":\n    # Example usage of WrappedTyper with an example command.\n    from enum import StrEnum\n\n    # Define an example enumeration for neural network types\n    class NeuralNetwork(StrEnum):\n        simple = \"simple\"\n        conv = \"conv\"\n        lstm = \"lstm\"\n        b_simple = \"b_simple\"\n        b_conv = \"b_conv\"\n        b_lstm = \"b_lstm\"\n        c_simple = \"c_simple\"\n        c_conv = \"c_conv\"\n        c_lstm = \"c_lstm\"\n\n    app = WrappedTyper()\n\n    @app.command()\n    def hello(\n        name: str,\n        age: int,\n        address: Annotated[\n            str,\n            typer.Argument(help=\"The address to use\"),\n            {\"multiline\": True},\n        ],\n        network: Annotated[\n            NeuralNetwork,\n            typer.Argument(help=\"The neural network to use\"),\n        ],\n        wait: Annotated[\n            bool,\n            typer.Option(help=\"Wait for the task to complete\"),\n            {\"default\": True},\n        ],\n    ):\n        \"\"\"Example command that prints provided input arguments.\"\"\"\n        # Section: Print provided input arguments\n        print(name)\n        print(age)\n        print(address)\n        print(network)\n        print(wait)\n\n    app()\n"
  },
  {
    "path": "src/cli/tests/__init__.py",
    "content": ""
  },
  {
    "path": "src/cli/tests/test_auth.py",
    "content": "from pathlib import Path\nfrom unittest.mock import patch\n\nfrom julep_cli import app\nfrom typer.testing import CliRunner\n\n\ndef create_runner(env: dict | None = None):\n    env = env or {}\n    return CliRunner(env=env)\n\n\nmock_config_dir = Path(\"/tmp/mock/.config/julep\")\n\n\ndef test_auth_command_should_save_api_key_when_provided_via_command_line():\n    test_api_key = \"test-api-key-123\"\n\n    runner = create_runner()\n\n    with (\n        patch(\"julep_cli.auth.save_config\") as mock_save,\n        patch(\"julep_cli.auth.get_julep_client\") as mock_client,\n        patch(\"julep_cli.auth.get_config\") as mock_get_config,\n    ):\n        # Mock config to return empty dict\n        mock_get_config.return_value = {}\n        # Mock the client to simulate successful authentication\n        mock_client.return_value.agents.list.return_value = []\n\n        result = runner.invoke(\n            app,\n            [\"auth\", \"--api-key\", test_api_key, \"--environment\", \"production\", \"--no-verify\"],\n        )\n\n        assert result.exit_code == 0\n        assert \"Successfully authenticated with production environment!\" in result.stdout\n        mock_save.assert_called_once_with({\n            \"environment\": \"production\",\n            \"api_key\": test_api_key,\n        })\n\n\ndef test_auth_command_should_use_api_key_from_environment_if_not_provided():\n    test_api_key = \"test-env-api-key-456\"\n\n    runner = create_runner({\"JULEP_API_KEY\": test_api_key})\n\n    with (\n        patch(\"julep_cli.auth.save_config\") as mock_save,\n        patch(\"julep_cli.auth.get_julep_client\") as mock_client,\n        patch(\"julep_cli.auth.get_config\") as mock_get_config,\n    ):\n        # Mock config to return empty dict\n        mock_get_config.return_value = {}\n        # Mock the client to simulate successful authentication\n        mock_client.return_value.agents.list.return_value = []\n\n        result = runner.invoke(app, [\"auth\", \"--environment\", \"production\", \"--no-verify\"])\n\n        assert result.exit_code == 0\n        assert \"Successfully authenticated with production environment!\" in result.stdout\n        mock_save.assert_called_once_with({\n            \"environment\": \"production\",\n            \"api_key\": test_api_key,\n        })\n\n\ndef test_auth_command_should_fail_when_no_api_key_is_provided():\n    runner = create_runner()\n\n    with patch(\"julep_cli.auth.get_config\") as mock_get_config:\n        # Mock config to return empty dict\n        mock_get_config.return_value = {}\n\n        result = runner.invoke(app, [\"auth\", \"--environment\", \"production\"])\n\n        # Typer exits with code 2 for missing required options when using the CLI runner\n        assert result.exit_code == 2\n        assert \"Error\" in result.stderr or \"Missing option\" in result.stderr\n\n\ndef test_auth_command_with_environment_dev():\n    test_api_key = \"test-dev-key-789\"\n\n    runner = create_runner()\n\n    with (\n        patch(\"julep_cli.auth.save_config\") as mock_save,\n        patch(\"julep_cli.auth.get_julep_client\") as mock_client,\n        patch(\"julep_cli.auth.get_config\") as mock_get_config,\n    ):\n        # Mock config to return empty dict\n        mock_get_config.return_value = {}\n        # Mock the client to simulate successful authentication\n        mock_client.return_value.agents.list.return_value = []\n\n        result = runner.invoke(\n            app, [\"auth\", \"--api-key\", test_api_key, \"--environment\", \"dev\", \"--no-verify\"]\n        )\n\n        assert result.exit_code == 0\n        assert \"Successfully authenticated with dev environment!\" in result.stdout\n        mock_save.assert_called_once_with({\"environment\": \"dev\", \"api_key\": test_api_key})\n\n\ndef test_auth_command_with_verification():\n    test_api_key = \"test-verify-key-101\"\n\n    runner = create_runner()\n\n    with (\n        patch(\"julep_cli.auth.save_config\") as mock_save,\n        patch(\"julep_cli.auth.get_julep_client\") as mock_client,\n        patch(\"julep_cli.auth.get_config\") as mock_get_config,\n    ):\n        # Mock config to return empty dict\n        mock_get_config.return_value = {}\n        # Mock the client to simulate successful authentication\n        mock_client.return_value.agents.list.return_value = []\n\n        result = runner.invoke(\n            app, [\"auth\", \"--api-key\", test_api_key, \"--environment\", \"production\"]\n        )\n\n        assert result.exit_code == 0\n        assert \"Successfully authenticated with production environment!\" in result.stdout\n        assert \"Verifying API key\" in result.stdout  # Progress spinner text\n        mock_save.assert_called_once_with({\n            \"environment\": \"production\",\n            \"api_key\": test_api_key,\n        })\n\n\ndef test_auth_command_verification_fails():\n    # Use a valid JWT format for testing\n    test_api_key = \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c\"\n\n    runner = create_runner()\n\n    with (\n        patch(\"julep_cli.auth.get_julep_client\") as mock_client,\n        patch(\"julep_cli.auth.get_config\") as mock_get_config,\n    ):\n        # Mock config to return empty dict\n        mock_get_config.return_value = {}\n        # Mock the client to simulate failed authentication\n        mock_client.return_value.agents.list.side_effect = Exception(\"Invalid API key\")\n\n        result = runner.invoke(\n            app, [\"auth\", \"--api-key\", test_api_key, \"--environment\", \"production\"]\n        )\n\n        assert result.exit_code == 1\n        assert \"Error verifying API key\" in result.stderr\n\n\ndef test_auth_command_invalid_jwt_format():\n    invalid_api_key = \"not-a-jwt\"\n\n    runner = create_runner()\n\n    with patch(\"julep_cli.auth.get_config\") as mock_get_config:\n        # Mock config to return empty dict\n        mock_get_config.return_value = {}\n\n        # Since the validation is done inside the command through the wrapper's prompting,\n        # and 'not-a-jwt' is not a valid JWT, the command will fail validation\n        result = runner.invoke(\n            app, [\"auth\", \"--api-key\", invalid_api_key, \"--environment\", \"production\"]\n        )\n\n        # The JWT validation happens during verification\n        assert result.exit_code == 1\n        assert (\n            \"Error verifying API key\" in result.stderr\n            and \"invalid token format\" in result.stderr\n        )\n"
  },
  {
    "path": "src/feature-flags/docker-compose.yml",
    "content": "version: '3.8'\n\nservices:\n  unleash-db:\n    image: postgres:16\n    profiles: [\"feature-flags\"]\n    environment:\n      POSTGRES_DB: ${UNLEASH_DB_NAME:-unleash}\n      POSTGRES_USER: ${UNLEASH_DB_USER:-unleash}\n      POSTGRES_PASSWORD: ${UNLEASH_DB_PASSWORD:-unleash_password}\n    volumes:\n      - unleash_db_data:/var/lib/postgresql/data\n    ports:\n      # Host port 5433 maps to container port 5432\n      - \"${UNLEASH_DB_PORT:-5433}:5432\"\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U ${UNLEASH_DB_USER:-unleash}\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n\n  unleash:\n    image: unleashorg/unleash-server:latest\n    profiles: [\"feature-flags\"]\n    environment:\n      DATABASE_URL: postgres://${UNLEASH_DB_USER:-unleash}:${UNLEASH_DB_PASSWORD:-unleash_password}@unleash-db:5432/${UNLEASH_DB_NAME:-unleash}\n      DATABASE_SSL: \"false\"\n      LOG_LEVEL: ${UNLEASH_LOG_LEVEL:-info}\n      INIT_FRONTEND_API_TOKENS: ${UNLEASH_FRONTEND_TOKEN:-default:development.unleash-insecure-frontend-api-token}\n      INIT_CLIENT_API_TOKENS: ${UNLEASH_API_TOKEN:-default:development.unleash-insecure-api-token}\n      INIT_ADMIN_API_TOKENS: ${UNLEASH_ADMIN_TOKEN:-*:*.unleash-insecure-admin-api-token}\n      UNLEASH_URL: ${UNLEASH_URL:-http://localhost:4242}\n      AUTH_TYPE: ${UNLEASH_AUTH_TYPE:-open-source}\n      AUTH_ENABLE_API_TOKEN: \"true\"\n    ports:\n      # Bind only to localhost - not publicly accessible\n      - \"${UNLEASH_PORT:-4242}:4242\"\n    depends_on:\n      unleash-db:\n        condition: service_healthy\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"--no-verbose\", \"--tries=1\", \"--spider\", \"http://localhost:4242/health\"]\n      interval: 30s\n      timeout: 10s\n      retries: 5\n      start_period: 30s\n\nvolumes:\n  unleash_db_data:\n    external: true "
  },
  {
    "path": "src/feature-flags/env.example",
    "content": "# Julep Feature Flags Service Configuration\n# Copy this file to .env and customize the values\n\n# Unleash Database Configuration\nUNLEASH_DB_NAME=unleash\nUNLEASH_DB_USER=unleash\nUNLEASH_DB_PASSWORD=unleash_password\nUNLEASH_DB_PORT=5433\n\n# Unleash Server Configuration\nUNLEASH_PORT=4242\nUNLEASH_URL=http://localhost:4242/api\nUNLEASH_LOG_LEVEL=info\n\n# API Tokens (Change these in production!)\nUNLEASH_API_TOKEN=default:development.unleash-insecure-api-token\nUNLEASH_FRONTEND_TOKEN=default:development.unleash-insecure-frontend-api-token\n\n# Admin Security (Change these in production!)\nUNLEASH_ADMIN_TOKEN=*:*.unleash-insecure-admin-api-token\nUNLEASH_AUTH_TYPE=open-source\n\n# For agents-api integration\nUNLEASH_APP_NAME=agents-api \n\n# Environment for feature flag context\nDEPLOYMENT_ENV=development "
  },
  {
    "path": "src/gateway/AGENTS.md",
    "content": "# AGENTS.md - gateway\n\nThis directory contains the API gateway service using Traefik for routing and middleware.\n\nKey Uses\n- Bash commands:\n  - cd gateway\n  - docker-compose up gateway\n- Core files:\n  - `docker-compose.yml` for container deployment\n  - `traefik.yml.template` for Traefik configuration template\n  - `entrypoint.sh` for container initialization\n  - `Dockerfile` for custom Traefik image\n- Configuration guidelines:\n  - Set `JWT_SHARED_KEY` for authentication\n  - Configure `AGENTS_API_URL` for backend routing\n  - Set SSL/TLS environment variables for HTTPS\n- Testing instructions:\n  - Health check: `curl http://localhost:80/api/healthz`\n  - API docs: `curl http://localhost:80/api/docs`\n- Repository etiquette:\n  - Don't commit JWT keys or certificates to version control\n- Developer environment:\n  - Requires Docker and Docker Compose\n  - LetsEncrypt volume for SSL certificates\n- Unexpected behaviors:\n  - Routes have priority ordering for path matching\n  - JWT plugin requires custom Traefik build\n\n# Gateway Service\n\n## Overview\nThe gateway service provides a unified entry point for the Julep platform using Traefik as a reverse proxy. It handles routing, authentication, CORS, SSL termination, and load balancing for all platform services.\n\n## Architecture\n- **Proxy Engine**: Traefik reverse proxy with dynamic configuration\n- **Authentication**: JWT-based authentication middleware\n- **SSL/TLS**: Let's Encrypt automatic certificate management\n- **Load Balancing**: Service discovery and health checking\n\n## Key Components\n\n### Traefik Configuration\n- **Routers**: Route definition and rule matching\n- **Middlewares**: Request/response processing pipeline\n- **Services**: Backend service configuration\n- **Entrypoints**: Port and protocol listeners\n\n### Routing Rules\n- `/api/*` → agents-api service (with JWT auth)\n- `/api/temporal/*` → agents-api internal endpoints\n- `/api/docs` → API documentation (no auth)\n- `/api/healthz` → Health check endpoint\n- `/tasks-ui/*` → Temporal UI service\n- `/v1/graphql` → Hasura GraphQL endpoint\n- `/` → Redirect to API documentation\n\n### Middleware Chain\n1. **CORS Headers**: Cross-origin resource sharing\n2. **JWT Authentication**: Token validation and user identification\n3. **Header Injection**: API key and developer headers\n4. **Path Stripping**: Clean URLs for backend services\n\n## Environment Variables\n- `JWT_SHARED_KEY`: Shared secret for JWT validation (required)\n- `AGENTS_API_URL`: Backend API service URL (default: http://agents-api-multi-tenant:8080)\n- `TEMPORAL_UI_PUBLIC_URL`: Temporal UI service URL\n- `HASURA_URL`: Hasura GraphQL service URL\n- `AGENTS_API_KEY`: API key for backend authentication\n- `TRAEFIK_LOG_LEVEL`: Logging verbosity (default: INFO)\n- `GATEWAY_PORT`: Gateway listening port (default: 80)\n\n## Security Features\n- JWT token validation with HS512 algorithm\n- API key injection for backend services\n- CORS policy enforcement\n- SSL/TLS termination with automatic certificates\n- Request rate limiting and health checks\n\n## Service Discovery\n- **Agents API**: Main platform API with authentication\n- **Temporal UI**: Workflow monitoring interface\n- **Hasura**: GraphQL API for data access\n- **Internal APIs**: System-level endpoints\n\n## SSL/TLS Configuration\n- Let's Encrypt ACME challenge for automatic certificates\n- Certificate storage in persistent volume\n- HTTPS redirect and HSTS headers\n- Configurable domains and certificate resolvers\n\n## Monitoring & Observability\n- Health check endpoints on all routes\n- Access logs with request/response details\n- Metrics endpoint (localhost:8082) for Prometheus\n- Service health checking and automatic failover\n\n## Development Features\n- File watching for configuration reloads\n- Debug logging for troubleshooting\n- Local development without SSL\n- Hot reload for template changes\n\n## Custom Plugins\n- **JWT Plugin**: Custom authentication middleware\n- **Header Manipulation**: Dynamic header injection\n- **Path Rewriting**: URL transformation for backends\n\n## Integration Points\n- Frontend applications connect via gateway\n- Backend services receive authenticated requests\n- Monitoring systems scrape metrics\n- SSL certificates managed automatically"
  },
  {
    "path": "src/gateway/Dockerfile",
    "content": "# syntax=docker/dockerfile:1\n# check=error=true\n\nFROM alpine/git\nARG PLUGIN_MODULE=github.com/julep-ai/traefik-jwt-plugin\nARG PLUGIN_GIT_REPO=https://github.com/julep-ai/traefik-jwt-plugin.git\nARG PLUGIN_GIT_BRANCH=main\nRUN git clone ${PLUGIN_GIT_REPO} /plugins-local/src/${PLUGIN_MODULE} \\\n      --depth 1 --single-branch --branch ${PLUGIN_GIT_BRANCH}\n\n#################\n\n# TODO: Upgrade to Traefik v3\nFROM traefik:v2.11\n\nENV GATEWAY_PORT=80\nENV AGENTS_API_URL=\"\"\n\n# Expected environment variables:\n# JWT_SHARED_KEY=\"\"\n# AGENTS_API_KEY=\"\"\n# AGENTS_API_KEY_HEADER_NAME=\"Authorization\"\n\nCOPY --from=0 /plugins-local /plugins-local\n\nRUN apk add gettext\nRUN mkdir -p /etc/traefik\nCOPY traefik.yml.template /etc/traefik/\nCOPY entrypoint.sh /entrypoint.sh\n\nENTRYPOINT [\"/entrypoint.sh\"]\n"
  },
  {
    "path": "src/gateway/docker-compose.yml",
    "content": "name: julep-gateway\n\nservices:\n  gateway:\n    image: julepai/gateway:${TAG:-dev}\n    environment:\n      - GATEWAY_PORT=80\n      - JWT_SHARED_KEY=${JWT_SHARED_KEY}\n      - AGENTS_API_URL=${AGENTS_API_URL:-http://agents-api-multi-tenant:8080}\n      - TEMPORAL_UI_PUBLIC_URL=${TEMPORAL_UI_PUBLIC_URL:-http://temporal-ui-public:8080}\n      - HASURA_URL=${HASURA_URL:-http://hasura:8080}\n      - AGENTS_API_KEY=${AGENTS_API_KEY}\n      - AGENTS_API_KEY_HEADER_NAME=${AGENTS_API_KEY_HEADER_NAME:-Authorization}\n      - TRAEFIK_LOG_LEVEL=${TRAEFIK_LOG_LEVEL:-INFO}\n      - ANALYTICS_URL=${ANALYTICS_URL:-http://analytics:3000}\n    container_name: gateway\n    profiles:\n      - multi-tenant\n    depends_on:\n      agents-api-multi-tenant:\n        condition: service_started\n    build:\n      context: .\n      dockerfile: Dockerfile\n    ports:\n      # - 443:443\n      - 80:80\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"--spider\", \"http://localhost:80\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n    deploy:\n      resources:\n        limits:\n          memory: 1G\n\n    command:\n      # - --entrypoints.web.address=:443\n      # - --entrypoints.web.http.tls.domains[0].main=dev.julep.ai\n      # - --entrypoints.web.http.tls.certResolver=letsencrypt\n      # - --certificatesresolvers.letsencrypt.acme.email=developers@julep.ai\n      # - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json\n      # - --certificatesresolvers.letsencrypt.acme.tlschallenge=true\n\n    volumes:\n      - ./letsencrypt:/letsencrypt\n\n    develop:\n      watch:\n        - action: sync+restart\n          path: ./entrypoint.sh\n          target: /entrypoint.sh\n        - action: rebuild\n          path: ./traefik.yml.template\n          target: /etc/traefik/traefik.yml.template\n        - action: rebuild\n          path: Dockerfile\n"
  },
  {
    "path": "src/gateway/entrypoint.sh",
    "content": "#!/bin/sh\n\n# Check the environment variables\nAGENTS_API_URL=${AGENTS_API_URL:-http://agents-api:8080}\nAGENTS_API_KEY_HEADER_NAME=${AGENTS_API_KEY_HEADER_NAME:-Authorization}\nGATEWAY_PORT=${GATEWAY_PORT:-80}\nTEMPORAL_UI_PUBLIC_URL=${TEMPORAL_UI_PUBLIC_URL:-http://temporal-ui-public:8080}\nHASURA_URL=${HASURA_URL:-http://hasura:8080}\n\nfor var_name in JWT_SHARED_KEY AGENTS_API_KEY\ndo\n    if [ -z \"`eval echo \\\\\\$$var_name`\" ]; then\n        echo \"Error: Environment variable '$var_name' is not set.\"\n        exit 1\n    fi\ndone\n\n# Generate the Traefik configuration file\nenvsubst < /etc/traefik/traefik.yml.template > /etc/traefik/traefik.yml\n\n# Forward all arguments to the traefik binary\nexec traefik \"$@\"\n"
  },
  {
    "path": "src/gateway/letsencrypt/.gitignore",
    "content": "*.json\n"
  },
  {
    "path": "src/gateway/letsencrypt/.gitkeep",
    "content": ""
  },
  {
    "path": "src/gateway/traefik.yml.template",
    "content": "providers:\n  file:\n    filename: \"/etc/traefik/traefik.yml\"\n\nenable: true\nentryPoints:\n  web:\n    address: \":$GATEWAY_PORT\"\n\n  # Should only be available via localhost\n  metrics:\n    address: 127.0.0.1:8082\n\nping: true\naccesslog: true\nlog:\n  level: $TRAEFIK_LOG_LEVEL\n\nhttp:\n  routers:\n    agents-api-internal:\n      entryPoints:\n        - web\n      rule: Path(`/api/temporal/{path:.*}`)\n      middlewares:\n        - corsHeaders\n        - agents-api-strip-prefix-api\n      service: service-agents-api\n      priority: 2  # Higher priority than the general agents-api route\n\n    agents-api:\n      entryPoints:\n        - web\n      rule: Path(`/api{path:.*}`)\n      middlewares:\n        - agents-api-chain\n        - agents-api-strip-prefix-api\n        - corsHeaders\n      service: service-agents-api\n      priority: 1\n    \n    agents-api-docs:\n      entryPoints:\n        - web\n      rule: Path(`/api/{path:swagger|redoc|docs|scalar|openapi.json}`)\n      middlewares:\n        - agents-api-strip-prefix-api\n      service: service-agents-api\n      priority: 2\n\n    agents-api-healthz:\n      entryPoints:\n        - web\n      rule: Path(`/api/healthz`)\n      middlewares:\n        - agents-api-strip-prefix-api\n      service: service-agents-api\n      priority: 3\n\n    agents-api-redirect-to-docs:\n      entryPoints:\n        - web\n      rule: Path(`/`)\n      middlewares:\n        - agents-api-redirect-to-docs\n      service: service-agents-api\n      priority: 3\n\n    temporal-ui-public:\n      entryPoints:\n        - web\n      rule: PathPrefix(`/tasks-ui{path:.*}`)\n      middlewares:\n        - corsHeaders\n        - temporal-ui-strip-prefix\n      service: service-temporal-ui-public\n      priority: 1\n\n    temporal-ui-public-assets:\n      entryPoints:\n        - web\n      rule: PathPrefix(`/_app`)\n      middlewares:\n        - corsHeaders\n      service: service-temporal-ui-public\n      priority: 2\n\n    hasura:\n      entryPoints:\n        - web\n      rule: PathPrefix(`/v1/graphql`)\n      middlewares:\n        - corsHeaders\n      service: service-hasura\n      priority: 3\n\n    # Handle direct /app/ routes (when Metabase generates URLs without /analytics prefix)\n    # ONLY accessible via iframe from dashboard\n    analytics-app-direct:\n      entryPoints:\n        - web\n      rule: PathPrefix(`/app/`)\n      middlewares:\n        - corsHeaders\n        - analytics-cache-headers\n      service: service-analytics\n      priority: 5\n\n    # Handle double /app/ pattern for Metabase static assets\n    # ONLY accessible via iframe from dashboard  \n    analytics-app-double-assets:\n      entryPoints:\n        - web\n      rule: PathRegexp(`^/analytics/app/app/(dist|fonts|img|css)/(.*)`)\n      middlewares:\n        - corsHeaders\n        - analytics-cache-headers\n        - analytics-strip-app-double\n      service: service-analytics\n      priority: 4\n\n    # Metabase static assets - keep /analytics prefix since Metabase is configured for it\n    # ONLY accessible via iframe from dashboard\n    analytics-static-assets:\n      entryPoints:\n        - web\n      rule: PathRegexp(`^/analytics/(dist|fonts|img|css|app/dist|app/fonts|app/img|app/css)/(.*)`)\n      middlewares:\n        - corsHeaders\n        - analytics-cache-headers\n      service: service-analytics\n      priority: 3\n\n    # Redirect /analytics to /analytics/ (without trailing slash to with trailing slash)\n    analytics-redirect:\n      entryPoints:\n        - web\n      rule: Path(`/analytics`)\n      middlewares:\n        - analytics-redirect-with-slash\n      service: service-analytics\n      priority: 2\n\n    # General Analytics/Metabase proxy - strip /analytics prefix for backend requests\n    # ONLY accessible via iframe from dashboard\n    analytics:\n      entryPoints:\n        - web\n      rule: PathPrefix(`/analytics/`)\n      middlewares:\n        - corsHeaders\n        - analytics-strip-prefix\n      service: service-analytics\n      priority: 1\n\n  middlewares:\n    corsHeaders:\n      headers:\n        accessControlAllowMethods: \"*\"\n        accessControlAllowHeaders: \"*\"\n        accessControlAllowOriginList: \"*\"\n        addVaryHeader: true\n\n    agents-api-redirect-to-docs:\n      redirectRegex:\n        regex: \"^(.*)$\"\n        replacement: \"/api/docs\"\n\n    agents-api-add-headers:\n      headers:\n        customrequestheaders:\n          $AGENTS_API_KEY_HEADER_NAME: $AGENTS_API_KEY\n\n    agents-api-chain:\n      chain:\n        middlewares:\n          - api-jwt-auth\n          - agents-api-add-headers\n\n    agents-api-strip-prefix-api:\n      stripprefix:\n        prefixes:\n          - /api\n        forceSlash: false\n\n    api-jwt-auth:\n      plugin:\n        jwt:\n          Alg: HS512\n          OpaAllowField: allow\n          OpaBody: true\n          PayloadFields:\n            - exp\n            - iat\n          Required: true\n          Keys:\n            - $JWT_SHARED_KEY\n          JwtHeaders:\n            X-Developer-Id: sub\n          OpaHttpStatusField: allow_status_code\n    \n    temporal-ui-strip-prefix:\n      stripprefix:\n        prefixes:\n          - /tasks-ui\n        forceSlash: false\n\n    analytics-strip-prefix:\n      stripprefix:\n        prefixes:\n          - /analytics\n        forceSlash: false\n\n    analytics-strip-app-double:\n      replacepathregex:\n        regex: \"^/analytics/app/app/(.*)\"\n        replacement: \"/app/$1\"\n\n    analytics-cache-headers:\n      headers:\n        customresponseheaders:\n          Cache-Control: \"public, max-age=86400\"\n\n    analytics-redirect-with-slash:\n      redirectRegex:\n        regex: \"^/analytics$\"\n        replacement: \"/analytics/\"\n\n  services:\n    service-agents-api:\n      loadBalancer:\n        passHostHeader: false\n        servers:\n          - url: $AGENTS_API_URL\n\n    service-temporal-ui-public:\n      loadBalancer:\n        passHostHeader: false\n        servers:\n          - url: $TEMPORAL_UI_PUBLIC_URL\n\n    service-hasura:\n      loadBalancer:\n        passHostHeader: false\n        servers:\n          - url: $HASURA_URL\n\n    service-analytics:\n      loadBalancer:\n        passHostHeader: false\n        servers:\n          - url: $ANALYTICS_URL\n\nexperimental:\n  localPlugins:\n    jwt:\n      moduleName: github.com/julep-ai/traefik-jwt-plugin\n\n### TODO: Enable after testing\n# metrics:\n#   prometheus:\n#     addEntryPointsLabels: true\n#     addRoutersLabels: true\n#     addServicesLabels: true\n#     entryPoint: metrics\n#     headerLabels:\n#       apiuser: Authorization\n"
  },
  {
    "path": "src/hasura/docker-compose.yml",
    "content": "version: '3.8'\n\nservices:\n  hasura:\n    image: hasura/graphql-engine:v2.33.0\n    profiles:\n      - multi-tenant\n    ports:\n      - \"8086:8080\"\n    environment:\n      HASURA_GRAPHQL_DATABASE_URL: ${PG_DSN:-postgres://postgres:postgres@memory-store:5432/postgres?sslmode=disable}\n      HASURA_GRAPHQL_SERVER_PORT: 8080\n      HASURA_GRAPHQL_ENABLE_CONSOLE: \"true\"\n      HASURA_GRAPHQL_DEV_MODE: \"true\"\n      HASURA_GRAPHQL_ENABLED_LOG_TYPES: startup, http-log, webhook-log, websocket-log, query-log\n      HASURA_GRAPHQL_ADMIN_SECRET: ${HASURA_ADMIN_SECRET:-hasura}\n      HASURA_GRAPHQL_UNAUTHORIZED_ROLE: \"anonymous\"\n      HASURA_GRAPHQL_JWT_SECRET: ${HASURA_JWT_SECRET:-{\"type\":\"HS512\", \"key\":\"${JWT_SHARED_KEY:-secret}\", \"allowed_skew\":${JWT_ALLOWED_SKEW:-0}, \"claims_map\":${HASURA_CLAIMS_MAP}}}\n      HASURA_GRAPHQL_CORS_DOMAIN: \"*\"\n    restart: unless-stopped\n    depends_on:\n      - memory-store\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"-qO-\", \"http://localhost:8080/healthz\"]\n      interval: 30s\n      timeout: 5s\n      retries: 3\n      start_period: 10s"
  },
  {
    "path": "src/hasura/metadata/hasura_metadata_2025_04_07_16_21_57_118.json",
    "content": "{\n  \"resource_version\": 21,\n  \"metadata\": {\n    \"version\": 3,\n    \"sources\": [\n      {\n        \"name\": \"default\",\n        \"kind\": \"postgres\",\n        \"tables\": [\n          {\n            \"table\": {\n              \"name\": \"agents\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"tasks\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"agent_id\": \"agent_id\",\n                      \"developer_id\": \"developer_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"tasks\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"tools\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"agent_id\": \"agent_id\",\n                      \"developer_id\": \"developer_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"tools\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"insert_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"columns\": []\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"instructions\",\n                    \"canonical_name\",\n                    \"default_settings\",\n                    \"metadata\",\n                    \"about\",\n                    \"default_system_template\",\n                    \"model\",\n                    \"name\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"agent_id\",\n                    \"developer_id\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"update_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"name\",\n                    \"about\",\n                    \"instructions\",\n                    \"model\",\n                    \"metadata\",\n                    \"default_settings\",\n                    \"default_system_template\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"delete_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"developers\",\n              \"schema\": \"public\"\n            },\n            \"array_relationships\": [\n              {\n                \"name\": \"agents\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"agents\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"docs\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"docs\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"executions\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"executions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"files\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"files\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"sessions\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"sessions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"users\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"users\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"developer_id\",\n                    \"email\",\n                    \"active\",\n                    \"tags\",\n                    \"settings\",\n                    \"created_at\",\n                    \"updated_at\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"doc_owners\",\n              \"schema\": \"public\"\n            }\n          },\n          {\n            \"table\": {\n              \"name\": \"docs\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"docs_embeddings_stores\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"doc_id\": \"doc_id\",\n                      \"index\": \"index\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"docs_embeddings_store\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"docs_embeddings\",\n              \"schema\": \"public\"\n            }\n          },\n          {\n            \"table\": {\n              \"name\": \"docs_embeddings_store\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"doc\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"doc_id\": \"doc_id\",\n                      \"index\": \"index\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"docs\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"embeddings_cache\",\n              \"schema\": \"public\"\n            }\n          },\n          {\n            \"table\": {\n              \"name\": \"entries\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"session\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"session_id\"\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"entry_relations\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"session\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"session_id\"\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"executions\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              },\n              {\n                \"name\": \"task\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"task_id\": \"task_id\",\n                      \"task_version\": \"version\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"tasks\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"temporal_executions_lookups\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"execution_id\",\n                    \"table\": {\n                      \"name\": \"temporal_executions_lookup\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"transitions\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"execution_id\",\n                    \"table\": {\n                      \"name\": \"transitions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"task_id\",\n                    \"task_version\",\n                    \"execution_id\",\n                    \"input\",\n                    \"metadata\",\n                    \"created_at\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"delete_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"file_owners\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"file\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"file_id\": \"file_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"files\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"files\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              },\n              {\n                \"name\": \"file_owner\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"file_id\": \"file_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"file_owners\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"latest_executions\",\n              \"schema\": \"public\"\n            },\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"task_id\",\n                    \"task_version\",\n                    \"execution_id\",\n                    \"input\",\n                    \"metadata\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"status\",\n                    \"error\",\n                    \"transition_count\",\n                    \"output\",\n                    \"current_step\",\n                    \"next_step\",\n                    \"step_label\",\n                    \"transition_metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"latest_transitions\",\n              \"schema\": \"public\"\n            }\n          },\n          {\n            \"table\": {\n              \"name\": \"session_lookup\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"session\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"session_id\": \"session_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"sessions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"sessions\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"entries\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"session_id\",\n                    \"table\": {\n                      \"name\": \"entries\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"entry_relations\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"session_id\",\n                    \"table\": {\n                      \"name\": \"entry_relations\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"session_lookups\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"session_id\": \"session_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"session_lookup\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"tasks\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"agent\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"agent_id\": \"agent_id\",\n                      \"developer_id\": \"developer_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"agents\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"executions\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"task_id\": \"task_id\",\n                      \"version\": \"task_version\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"executions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"workflows\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"task_id\": \"task_id\",\n                      \"version\": \"version\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"workflows\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"insert_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"columns\": [\n                    \"agent_id\",\n                    \"task_id\",\n                    \"version\",\n                    \"name\",\n                    \"description\",\n                    \"input_schema\",\n                    \"inherit_tools\",\n                    \"metadata\"\n                  ]\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"canonical_name\",\n                    \"agent_id\",\n                    \"task_id\",\n                    \"version\",\n                    \"name\",\n                    \"description\",\n                    \"input_schema\",\n                    \"inherit_tools\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"update_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"agent_id\",\n                    \"version\",\n                    \"name\",\n                    \"description\",\n                    \"input_schema\",\n                    \"inherit_tools\",\n                    \"metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"delete_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"temporal_executions_lookup\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"execution\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"execution_id\"\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"tools\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"agent\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"agent_id\": \"agent_id\",\n                      \"developer_id\": \"developer_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"agents\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"transitions\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"execution\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"execution_id\"\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"users\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              }\n            ],\n            \"insert_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"columns\": [\n                    \"created_at\",\n                    \"updated_at\"\n                  ]\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"user_id\",\n                    \"name\",\n                    \"about\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"update_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"name\",\n                    \"about\",\n                    \"metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"delete_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"workflows\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"task\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"task_id\": \"task_id\",\n                      \"version\": \"version\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"tasks\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          }\n        ],\n        \"configuration\": {\n          \"connection_info\": {\n            \"database_url\": {\n              \"from_env\": \"HASURA_GRAPHQL_DATABASE_URL\"\n            },\n            \"isolation_level\": \"read-committed\",\n            \"pool_settings\": {\n              \"connection_lifetime\": 600,\n              \"idle_timeout\": 180,\n              \"max_connections\": 50,\n              \"retries\": 1\n            },\n            \"use_prepared_statements\": true\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "src/hasura/metadata/hasura_metadata_2025_04_24_14_57_23_154.json",
    "content": "{\n  \"resource_version\": 4,\n  \"metadata\": {\n    \"version\": 3,\n    \"sources\": [\n      {\n        \"name\": \"default\",\n        \"kind\": \"postgres\",\n        \"tables\": [\n          {\n            \"table\": {\n              \"name\": \"agents\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"tasks\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"agent_id\": \"agent_id\",\n                      \"developer_id\": \"developer_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"tasks\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"tools\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"agent_id\": \"agent_id\",\n                      \"developer_id\": \"developer_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"tools\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"insert_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"columns\": []\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"instructions\",\n                    \"canonical_name\",\n                    \"default_settings\",\n                    \"metadata\",\n                    \"about\",\n                    \"default_system_template\",\n                    \"model\",\n                    \"name\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"agent_id\",\n                    \"developer_id\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"update_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"name\",\n                    \"about\",\n                    \"instructions\",\n                    \"model\",\n                    \"metadata\",\n                    \"default_settings\",\n                    \"default_system_template\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"delete_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"developers\",\n              \"schema\": \"public\"\n            },\n            \"array_relationships\": [\n              {\n                \"name\": \"agents\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"agents\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"docs\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"docs\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"executions\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"executions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"files\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"files\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"sessions\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"sessions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"users\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"developer_id\",\n                    \"table\": {\n                      \"name\": \"users\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"developer_id\",\n                    \"email\",\n                    \"active\",\n                    \"tags\",\n                    \"settings\",\n                    \"created_at\",\n                    \"updated_at\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"doc_owners\",\n              \"schema\": \"public\"\n            }\n          },\n          {\n            \"table\": {\n              \"name\": \"docs\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"docs_embeddings_stores\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"doc_id\": \"doc_id\",\n                      \"index\": \"index\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"docs_embeddings_store\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"docs_embeddings\",\n              \"schema\": \"public\"\n            }\n          },\n          {\n            \"table\": {\n              \"name\": \"docs_embeddings_store\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"doc\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"doc_id\": \"doc_id\",\n                      \"index\": \"index\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"docs\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"embeddings_cache\",\n              \"schema\": \"public\"\n            }\n          },\n          {\n            \"table\": {\n              \"name\": \"entries\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"session\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"session_id\"\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"entry_relations\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"session\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"session_id\"\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"executions\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              },\n              {\n                \"name\": \"task\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"task_id\": \"task_id\",\n                      \"task_version\": \"version\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"tasks\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"temporal_executions_lookups\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"execution_id\",\n                    \"table\": {\n                      \"name\": \"temporal_executions_lookup\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"transitions\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"execution_id\",\n                    \"table\": {\n                      \"name\": \"transitions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"task_id\",\n                    \"task_version\",\n                    \"execution_id\",\n                    \"input\",\n                    \"metadata\",\n                    \"created_at\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"delete_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"file_owners\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"file\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"file_id\": \"file_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"files\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"files\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              },\n              {\n                \"name\": \"file_owner\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"file_id\": \"file_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"file_owners\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"latest_executions\",\n              \"schema\": \"public\"\n            },\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"task_id\",\n                    \"task_version\",\n                    \"execution_id\",\n                    \"input\",\n                    \"metadata\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"status\",\n                    \"error\",\n                    \"transition_count\",\n                    \"output\",\n                    \"current_step\",\n                    \"next_step\",\n                    \"step_label\",\n                    \"transition_metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"latest_transitions\",\n              \"schema\": \"public\"\n            }\n          },\n          {\n            \"table\": {\n              \"name\": \"session_lookup\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"session\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"session_id\": \"session_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"sessions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"sessions\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"entries\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"session_id\",\n                    \"table\": {\n                      \"name\": \"entries\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"entry_relations\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": {\n                    \"column\": \"session_id\",\n                    \"table\": {\n                      \"name\": \"entry_relations\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"session_lookups\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"session_id\": \"session_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"session_lookup\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"tasks\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"agent\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"agent_id\": \"agent_id\",\n                      \"developer_id\": \"developer_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"agents\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"array_relationships\": [\n              {\n                \"name\": \"executions\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"task_id\": \"task_id\",\n                      \"version\": \"task_version\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"executions\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              },\n              {\n                \"name\": \"workflows\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"task_id\": \"task_id\",\n                      \"version\": \"version\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"workflows\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ],\n            \"insert_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"columns\": [\n                    \"agent_id\",\n                    \"task_id\",\n                    \"version\",\n                    \"name\",\n                    \"description\",\n                    \"input_schema\",\n                    \"inherit_tools\",\n                    \"metadata\"\n                  ]\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"canonical_name\",\n                    \"agent_id\",\n                    \"task_id\",\n                    \"version\",\n                    \"name\",\n                    \"description\",\n                    \"input_schema\",\n                    \"inherit_tools\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"update_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"agent_id\",\n                    \"version\",\n                    \"name\",\n                    \"description\",\n                    \"input_schema\",\n                    \"inherit_tools\",\n                    \"metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"delete_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"temporal_executions_lookup\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"execution\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"execution_id\"\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"tools\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"agent\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"agent_id\": \"agent_id\",\n                      \"developer_id\": \"developer_id\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"agents\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"transitions\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"execution\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"execution_id\"\n                }\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"users\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"developer\",\n                \"using\": {\n                  \"foreign_key_constraint_on\": \"developer_id\"\n                }\n              }\n            ],\n            \"insert_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"columns\": [\n                    \"created_at\",\n                    \"updated_at\"\n                  ]\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"select_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"developer_id\",\n                    \"user_id\",\n                    \"name\",\n                    \"about\",\n                    \"created_at\",\n                    \"updated_at\",\n                    \"metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"update_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"columns\": [\n                    \"name\",\n                    \"about\",\n                    \"metadata\"\n                  ],\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  },\n                  \"check\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ],\n            \"delete_permissions\": [\n              {\n                \"role\": \"user\",\n                \"permission\": {\n                  \"filter\": {\n                    \"developer_id\": {\n                      \"_eq\": \"X-Hasura-User-Id\"\n                    }\n                  }\n                },\n                \"comment\": \"\"\n              }\n            ]\n          },\n          {\n            \"table\": {\n              \"name\": \"workflows\",\n              \"schema\": \"public\"\n            },\n            \"object_relationships\": [\n              {\n                \"name\": \"task\",\n                \"using\": {\n                  \"manual_configuration\": {\n                    \"column_mapping\": {\n                      \"developer_id\": \"developer_id\",\n                      \"task_id\": \"task_id\",\n                      \"version\": \"version\"\n                    },\n                    \"insertion_order\": null,\n                    \"remote_table\": {\n                      \"name\": \"tasks\",\n                      \"schema\": \"public\"\n                    }\n                  }\n                }\n              }\n            ]\n          }\n        ],\n        \"configuration\": {\n          \"connection_info\": {\n            \"database_url\": {\n              \"from_env\": \"HASURA_GRAPHQL_DATABASE_URL\"\n            },\n            \"isolation_level\": \"read-committed\",\n            \"pool_settings\": {\n              \"connection_lifetime\": 600,\n              \"idle_timeout\": 180,\n              \"max_connections\": 50,\n              \"retries\": 1\n            },\n            \"use_prepared_statements\": true\n          }\n        }\n      }\n    ]\n  }\n}"
  },
  {
    "path": "src/integrations-service/.dockerignore",
    "content": "Dockerfile\n*.pyc\n*.pyo\n*.pyd\n__pycache__\n.pytest_cache\n.venv\n"
  },
  {
    "path": "src/integrations-service/.python-version",
    "content": "3.12\n"
  },
  {
    "path": "src/integrations-service/AGENTS.md",
    "content": "# AGENTS.md - integrations-service\n\nThis directory provides adapters and routers for external service integrations.\n\nKey Uses\n- Bash commands:\n  - cd integrations-service\n  - source .venv/bin/activate\n  - poe format\n  - poe lint\n  - poe test\n  - poe check\n- Core directories:\n  - `integrations/` for integration modules and routers.\n  - `tests/mocks/` for service mocks.\n- Code style guidelines:\n  - Follows root Python standards (async httpx clients, ruff formatting).\n- Testing instructions:\n  - Use pytest for integration tests.\n  - Mock external services with fixtures in `tests/mocks/`.\n- Repository etiquette:\n  - Document external API versions and schema changes.\n- Developer environment:\n  - Set env vars in `.env` for service credentials.\n- Unexpected behaviors:\n  - Watch for rate limits; configure retry logic.\n\n# Integrations Service Architecture\n\n## Overview\nThe integrations-service is a FastAPI-based microservice that provides a unified API for executing various external integrations. It serves as a bridge between the Julep platform and third-party services, APIs, and tools.\n\n## Key Components\n\n### Core Framework\n- `web.py` - FastAPI application setup with router registration\n- `providers.py` - Registry of all available integration providers\n- `models/base_models.py` - Core models defining provider structure\n- `utils/execute_integration.py` - Unified execution framework for all integrations\n\n### Provider Model\n- `BaseProvider` - Core model defining integration interface\n- `BaseProviderMethod` - Defines methods (operations) available on a provider\n- `ProviderInfo` - Metadata about the integration (URL, docs, icon)\n- Each provider has setup, arguments, methods, and outputs\n\n### Integration Types\n1. Web Services\n   - `brave` - Brave search engine integration\n   - `algolia` - Algolia search service\n   - `wikipedia` - Wikipedia content retrieval\n   - `arxiv` - arXiv research papers search\n\n2. Browser/UI Automation\n   - `browserbase` - Cloud browser infrastructure\n   - `remote_browser` - Remote browser control via Playwright\n   - `spider` - Web scraping/crawling\n\n3. Media Processing\n   - `ffmpeg` - Video/audio processing\n   - `cloudinary` - Cloud media management\n   - `llama_parse` - Document parsing\n   - `unstructured` - Document parsing/extraction\n\n4. Communications\n   - `email` - Email sending capabilities\n   - `mailgun` - Mailgun email service integration\n   - `weather` - Weather information\n   - `mcp` - Model Context Protocol client (stdio/http)\n\n### API Structure\n- `/execute/{provider}` - Execute default method for a provider\n- `/execute/{provider}/{method}` - Execute specific method on a provider\n- `/integrations` - List all available integrations\n- `/integrations/{provider}` - Get provider details\n- `/integrations/{provider}/tool` - Get provider as OpenAI tool format\n\n## Integration Patterns\n1. **Provider Registration**\n   - Define in `providers.py` with setup, methods, arguments\n   - Register in `available_providers` dictionary\n\n2. **Method Implementation** \n   - Each provider has method implementations in `utils/integrations/`\n   - Methods use `@beartype` for type validation and `@retry` for resilience\n   - Async execution with consistent error handling\n   - MCP specifics:\n     - `mcp.list_tools` connects to the server and returns dynamic tool metadata\n     - `mcp.call_tool` invokes a named MCP tool with JSON arguments\n     - Supports `stdio` (via `command`/`args`) and `http` (via `http_url`/`http_headers`)\n\n\n3. **Dynamic Loading**\n   - Provider modules loaded using `importlib` based on provider name\n   - Methods called via `getattr` to match the requested operation\n\n4. **OpenAI Tool Conversion**\n   - Integrations can be converted to OpenAI tool format\n   - Function schemas automatically generated from Pydantic models\n\n## Type Hierarchies\n- `ExecutionSetup` - Union of all provider setup types\n- `ExecutionArguments` - Union of all method argument types\n- `ExecutionResponse` - Union of all possible response types\n\n## Security Patterns\n- Environment variables for sensitive configuration\n- API keys not hardcoded (fallback to env vars)\n- API key validation and service-appropriate authentication\n\n## Error Handling\n- Consistent error format via custom exception handlers\n- Retry mechanisms with exponential backoff\n- Structured error responses with `ExecutionError`\n\n## Testing\n- Mock implementations in `tests/mocks/`\n- Provider execution tests in `test_provider_execution.py`\n- Provider definition tests in `test_providers.py`\n"
  },
  {
    "path": "src/integrations-service/Dockerfile",
    "content": "# syntax=docker/dockerfile:1\n# check=error=true\n\nFROM python:3.12-slim\n\nWORKDIR /app\n\n# Install system dependencies and FFmpeg with all required libraries\nRUN apt-get update && apt-get install -y \\\n    ffmpeg \\\n    libavcodec-extra \\\n    libavformat-dev \\\n    libavutil-dev \\\n    libswscale-dev \\\n    && apt-get clean \\\n    && rm -rf /var/lib/apt/lists/*\n\nCOPY --from=ghcr.io/astral-sh/uv:0.5.5 /uv /uvx /bin/\n\nCOPY .python-version pyproject.toml uv.lock ./\n\nRUN \\\n  uv sync --frozen --all-extras --no-group dev --color never --python-preference system\n\nCOPY . ./\n\n# Set proper signal handling\nENV PYTHONUNBUFFERED=1\nENV GUNICORN_CMD_ARGS=\"--capture-output --enable-stdio-inheritance\"\n\n# Run the application with proper signal handling\nENTRYPOINT [\"uv\", \"run\", \"gunicorn\", \"integrations.web:app\", \"-c\", \"gunicorn_conf.py\"]\n"
  },
  {
    "path": "src/integrations-service/README.md",
    "content": ""
  },
  {
    "path": "src/integrations-service/docker-compose.yml",
    "content": "name: julep-integrations\n\n# Shared environment variables\nx--shared-environment: &shared-environment\n  INTEGRATIONS_SERVICE_PORT: ${INTEGRATIONS_SERVICE_PORT:-8000}\n  BROWSERBASE_API_KEY: ${BROWSERBASE_API_KEY}\n  BROWSERBASE_PROJECT_ID: ${BROWSERBASE_PROJECT_ID}\n  OPENWEATHER_API_KEY: ${OPENWEATHER_API_KEY}\n  SPIDER_API_KEY: ${SPIDER_API_KEY}\n  BRAVE_API_KEY: ${BRAVE_API_KEY}\n  LLAMA_API_KEY: ${LLAMA_API_KEY}\n  CLOUDINARY_API_KEY: ${CLOUDINARY_API_KEY}\n  CLOUDINARY_API_SECRET: ${CLOUDINARY_API_SECRET}\n  CLOUDINARY_CLOUD_NAME: ${CLOUDINARY_CLOUD_NAME}\n  MAILGUN_PASSWORD: ${MAILGUN_PASSWORD}\n  UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY}\n  SENTRY_DSN: ${INTEGRATIONS_SENTRY_DSN}\n  ALGOLIA_API_KEY: ${ALGOLIA_API_KEY}\n  ALGOLIA_APPLICATION_ID: ${ALGOLIA_APPLICATION_ID}\n  MAILGUN_API_KEY: ${MAILGUN_API_KEY}\n  GUNICORN_CPU_DIVISOR: ${GUNICORN_CPU_DIVISOR:-4}\n  GUNICORN_WORKERS: ${GUNICORN_WORKERS}\n  JULEP_GOOGLE_SHEETS_SERVICE_ACCOUNT_JSON: ${JULEP_GOOGLE_SHEETS_SERVICE_ACCOUNT_JSON}\n\nservices:\n  integrations:\n    image: julepai/integrations:${TAG:-dev}\n    build:\n      platforms:\n        - linux/amd64\n      context: .\n      dockerfile: Dockerfile\n\n    environment:\n      <<: *shared-environment\n\n    ports:\n      - \"${INTEGRATIONS_SERVICE_PORT:-8000}:${INTEGRATIONS_SERVICE_PORT:-8000}\" # map host to container port\n\n    develop:\n      watch:\n        - action: sync+restart\n          path: ./\n          target: /app/\n          ignore:\n            - ./**/*.pyc\n        - action: rebuild\n          path: uv.lock\n        - action: rebuild\n          path: Dockerfile\n"
  },
  {
    "path": "src/integrations-service/gunicorn_conf.py",
    "content": "import os\n\nfrom integrations.env import gunicorn_workers\n\nTESTING = os.getenv(\"TESTING\", \"false\").lower() == \"true\"\nDEBUG = os.getenv(\"DEBUG\", \"false\").lower() == \"true\"\nAGENTS_API_DEBUG = os.getenv(\"AGENTS_API_DEBUG\", \"false\").lower() == \"true\"\n\n# Gunicorn config variables\nworkers = gunicorn_workers if not (TESTING or AGENTS_API_DEBUG or DEBUG) else 1\nworker_class = \"uvicorn.workers.UvicornWorker\"\nbind = \"0.0.0.0:8000\"\nkeepalive = 120\ntimeout = 120\nerrorlog = \"-\"\naccesslog = \"-\"\nloglevel = \"info\"\ngraceful_timeout = 30\nmax_requests = 1000\nmax_requests_jitter = 50\npreload_app = False\n\n\ndef when_ready(server):\n    \"\"\"Run when server is ready to handle requests.\"\"\"\n    # Ensure proper permissions for any required directories\n    for directory in [\"logs\", \"run\"]:\n        path = os.path.join(os.getcwd(), directory)\n        if not os.path.exists(path):\n            os.makedirs(path, mode=0o755)\n\n\ndef on_starting(server):\n    \"\"\"Run when server starts.\"\"\"\n    server.log.setup(server.app.cfg)\n\n\ndef worker_exit(server, worker):\n    \"\"\"Clean up on worker exit.\"\"\"\n    server.log.info(f\"Worker {worker.pid} exiting gracefully\")\n"
  },
  {
    "path": "src/integrations-service/integrations/__init__.py",
    "content": ""
  },
  {
    "path": "src/integrations-service/integrations/__main__.py",
    "content": "from .web import main\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Agents.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass Agent(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n\n\nclass CreateAgentRequest(BaseModel):\n    \"\"\"\n    Payload for creating a agent (and associated documents)\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n\n\nclass CreateOrUpdateAgentRequest(CreateAgentRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n\n\nclass ListModelsResponse(BaseModel):\n    \"\"\"\n    Response for the list models endpoint\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    models: list[ModelInfo]\n    \"\"\"\n    List of available models\n    \"\"\"\n\n\nclass ModelInfo(BaseModel):\n    \"\"\"\n    Model information returned by the model list endpoint\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The ID/name of the model\n    \"\"\"\n\n\nclass PatchAgentRequest(BaseModel):\n    \"\"\"\n    Payload for patching a agent\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str | None, Field(max_length=255, min_length=1)] = None\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n\n\nclass UpdateAgentRequest(BaseModel):\n    \"\"\"\n    Payload for updating a agent\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Name of the agent\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the agent\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the agent\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the agent\n    \"\"\"\n    model: str = \"\"\n    \"\"\"\n    Model name to use (gpt-4-turbo, gemini-nano etc)\n    \"\"\"\n    instructions: str | list[str] = []\n    \"\"\"\n    Instructions for the agent\n    \"\"\"\n    default_settings: dict[str, Any] | None = None\n    \"\"\"\n    Default settings for all sessions created by this agent\n    \"\"\"\n    default_system_template: str = '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}'\n    \"\"\"\n    Default system template for all sessions created by this agent\n    \"\"\"\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Chat.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\nfrom .Common import LogitBias\nfrom .Docs import DocReference\nfrom .Tools import (\n    ChosenBash20241022,\n    ChosenComputer20241022,\n    ChosenFunctionCall,\n    ChosenTextEditor20241022,\n    CreateToolRequest,\n    NamedToolChoice,\n)\n\n\nclass BaseChatOutput(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    index: int\n    finish_reason: Literal[\"stop\", \"length\", \"content_filter\", \"tool_calls\"] = \"stop\"\n    \"\"\"\n    The reason the model stopped generating tokens\n    \"\"\"\n    logprobs: LogProbResponse | None = None\n    \"\"\"\n    The log probabilities of tokens\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The tool calls generated by the model\n    \"\"\"\n\n\nclass BaseChatResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    usage: CompletionUsage | None = None\n    \"\"\"\n    Usage statistics for the completion request\n    \"\"\"\n    jobs: Annotated[list[UUID], Field(json_schema_extra={\"readOnly\": True})] = []\n    \"\"\"\n    Background job IDs that may have been spawned from this interaction.\n    \"\"\"\n    docs: Annotated[list[DocReference], Field(json_schema_extra={\"readOnly\": True})] = []\n    \"\"\"\n    Documents referenced for this request (for citation purposes).\n    \"\"\"\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n\n\nclass BaseTokenLogProb(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    token: str\n    logprob: float\n    \"\"\"\n    The log probability of the token\n    \"\"\"\n    bytes: list[int] | None = None\n\n\nclass ChatInputData(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    messages: Annotated[list[Message], Field(min_length=1)]\n    \"\"\"\n    A list of new input messages comprising the conversation so far.\n    \"\"\"\n    tools: list[CreateToolRequest] | None = None\n    \"\"\"\n    (Advanced) List of tools that are provided in addition to agent's default set of tools.\n    \"\"\"\n    tool_choice: Literal[\"auto\", \"none\"] | NamedToolChoice | None = None\n    \"\"\"\n    Can be one of existing tools given to the agent earlier or the ones provided in this request.\n    \"\"\"\n\n\nclass ChatOutputChunk(BaseChatOutput):\n    \"\"\"\n    Streaming chat completion output\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    delta: Delta\n    \"\"\"\n    The message generated by the model\n    \"\"\"\n\n\nclass ChunkChatResponse(BaseChatResponse):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    choices: list[ChatOutputChunk]\n    \"\"\"\n    The deltas generated by the model\n    \"\"\"\n\n\nclass CompletionUsage(BaseModel):\n    \"\"\"\n    Usage statistics for the completion request\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    completion_tokens: Annotated[int | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Number of tokens in the generated completion\n    \"\"\"\n    prompt_tokens: Annotated[int | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Number of tokens in the prompt\n    \"\"\"\n    total_tokens: Annotated[int | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Total number of tokens used in the request (prompt + completion)\n    \"\"\"\n\n\nclass Content(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: str\n    type: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The type (fixed to 'text')\n    \"\"\"\n\n\nContentItem = Content\n\n\nclass ContentItemModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"image\"] = \"image\"\n    source: Source\n\n\nContentItemModel1 = Content\n\n\nContentItemModel2 = ContentItemModel\n\n\nContentItemModel3 = Content\n\n\nContentItemModel4 = ContentItemModel\n\n\nContentItemModel5 = Content\n\n\nContentItemModel6 = ContentItemModel\n\n\nclass ContentModel(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItem] | list[ContentItemModel]\n\n\nContentModel1 = Content\n\n\nclass ContentModel2(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel1] | list[ContentItemModel2]\n\n\nContentModel3 = Content\n\n\nclass ContentModel4(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel3] | list[ContentItemModel4]\n\n\nContentModel5 = Content\n\n\nclass ContentModel6(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel5] | list[ContentItemModel6]\n\n\nclass ContentModel7(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    image_url: ImageUrl\n    \"\"\"\n    The image URL\n    \"\"\"\n    type: Literal[\"image_url\"] = \"image_url\"\n    \"\"\"\n    The type (fixed to 'image_url')\n    \"\"\"\n\n\nclass Delta(BaseModel):\n    \"\"\"\n    The message generated by the model\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    The role of the message\n    \"\"\"\n    tool_call_id: str | None = None\n    content: Annotated[\n        str | list[str] | list[ContentModel1 | ContentModel7 | ContentModel2] | None,\n        Field(...),\n    ] = None\n    \"\"\"\n    The content parts of the message\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    Name\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = []\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n\n\nclass ImageUrl(BaseModel):\n    \"\"\"\n    The image URL\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: str\n    \"\"\"\n    Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n    \"\"\"\n    detail: Literal[\"low\", \"high\", \"auto\"] = \"auto\"\n    \"\"\"\n    The detail level of the image\n    \"\"\"\n\n\nclass LogProbResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    content: Annotated[list[TokenLogProb] | None, Field(...)]\n    \"\"\"\n    The log probabilities of the tokens\n    \"\"\"\n\n\nclass Message(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    The role of the message\n    \"\"\"\n    tool_call_id: str | None = None\n    content: Annotated[\n        str | list[str] | list[Content | ContentModel7 | ContentModel] | None,\n        Field(...),\n    ] = None\n    \"\"\"\n    The content parts of the message\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    Name\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = []\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n\n\nclass MessageChatResponse(BaseChatResponse):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    choices: list[SingleChatOutput | MultipleChatOutput]\n    \"\"\"\n    The deltas generated by the model\n    \"\"\"\n\n\nclass MessageModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    The role of the message\n    \"\"\"\n    tool_call_id: str | None = None\n    content: Annotated[\n        str | list[str] | list[ContentModel3 | ContentModel7 | ContentModel4] | None,\n        Field(...),\n    ] = None\n    \"\"\"\n    The content parts of the message\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    Name\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = []\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n    created_at: Annotated[AwareDatetime | None, Field(json_schema_extra={\"readOnly\": True})] = (\n        None\n    )\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    id: Annotated[UUID | None, Field(json_schema_extra={\"readOnly\": True})] = None\n\n\nclass MultipleChatOutput(BaseChatOutput):\n    \"\"\"\n    The output returned by the model. Note that, depending on the model provider, they might return more than one message.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    messages: Annotated[\n        list[MessageModel], Field(json_schema_extra={\"readOnly\": True}, min_length=1)\n    ]\n\n\nclass RenderResponse(ChatInputData):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    docs: Annotated[list[DocReference], Field(json_schema_extra={\"readOnly\": True})] = []\n    \"\"\"\n    Documents referenced for this request (for citation purposes).\n    \"\"\"\n\n\nclass SchemaCompletionResponseFormat(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"json_schema\"] = \"json_schema\"\n    \"\"\"\n    The format of the response\n    \"\"\"\n    json_schema: dict[str, Any]\n    \"\"\"\n    The schema of the response\n    \"\"\"\n\n\nclass SimpleCompletionResponseFormat(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"text\", \"json_object\"] = \"text\"\n    \"\"\"\n    The format of the response\n    \"\"\"\n\n\nclass SingleChatOutput(BaseChatOutput):\n    \"\"\"\n    The output returned by the model. Note that, depending on the model provider, they might return more than one message.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    message: MessageModel\n\n\nclass Source(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"base64\"] = \"base64\"\n    media_type: str\n    data: str\n\n\nclass TokenLogProb(BaseTokenLogProb):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    top_logprobs: Annotated[\n        list[BaseTokenLogProb],\n        Field(json_schema_extra={\"readOnly\": True}, min_length=1),\n    ]\n    \"\"\"\n    The log probabilities of the tokens\n    \"\"\"\n\n\nclass ChatInput(ChatInputData):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    remember: Annotated[StrictBool, Field(json_schema_extra={\"readOnly\": True})] = False\n    \"\"\"\n    DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release)\n    \"\"\"\n    recall: StrictBool = True\n    \"\"\"\n    Whether previous memories and docs should be recalled or not\n    \"\"\"\n    save: StrictBool = True\n    \"\"\"\n    Whether this interaction should be stored in the session history or not\n    \"\"\"\n    model: Annotated[\n        str | None,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = None\n    \"\"\"\n    Identifier of the model to be used\n    \"\"\"\n    stream: StrictBool = False\n    \"\"\"\n    Indicates if the server should stream the response as it's generated\n    \"\"\"\n    stop: Annotated[list[str], Field(max_length=4)] = []\n    \"\"\"\n    Up to 4 sequences where the API will stop generating further tokens.\n    \"\"\"\n    seed: Annotated[int | None, Field(ge=-1, le=1000)] = None\n    \"\"\"\n    If specified, the system will make a best effort to sample deterministically for that particular seed value\n    \"\"\"\n    max_tokens: Annotated[int | None, Field(ge=1)] = None\n    \"\"\"\n    The maximum number of tokens to generate in the chat completion\n    \"\"\"\n    logit_bias: dict[str, LogitBias] | None = None\n    \"\"\"\n    Modify the likelihood of specified tokens appearing in the completion\n    \"\"\"\n    response_format: SimpleCompletionResponseFormat | SchemaCompletionResponseFormat | None = (\n        None\n    )\n    \"\"\"\n    Response format (set to `json_object` to restrict output to JSON)\n    \"\"\"\n    agent: UUID | None = None\n    \"\"\"\n    Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions)\n    \"\"\"\n    repetition_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None\n    \"\"\"\n    Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n    \"\"\"\n    length_penalty: Annotated[float | None, Field(ge=0.0, le=2.0)] = None\n    \"\"\"\n    Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated.\n    \"\"\"\n    min_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    Minimum probability compared to leading token to be considered\n    \"\"\"\n    frequency_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None\n    \"\"\"\n    Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n    \"\"\"\n    presence_penalty: Annotated[float | None, Field(ge=-2.0, le=2.0)] = None\n    \"\"\"\n    Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n    \"\"\"\n    temperature: Annotated[float | None, Field(ge=0.0, le=5.0)] = None\n    \"\"\"\n    What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.\n    \"\"\"\n    top_p: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.  We generally recommend altering this or temperature but not both.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to automatically run tools and send the results back to the model (requires tools or agents with tools).\n    \"\"\"\n    recall_tools: StrictBool = True\n    \"\"\"\n    Whether to include tool requests and responses when recalling messages.\n    \"\"\"\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Common.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel\n\n\nclass Content(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[str, Field(max_length=30000)]\n    \"\"\"\n    Contents of a document\n    \"\"\"\n\n\nclass JinjaTemplate(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: str\n    \"\"\"\n    A valid jinja template.\n    \"\"\"\n\n\nclass Limit(RootModel[int]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[int, Field(ge=1, lt=1000)]\n    \"\"\"\n    Limit the number of results\n    \"\"\"\n\n\nclass LogitBias(RootModel[float]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[float, Field(ge=-100.0, le=100.0)]\n\n\nclass Offset(RootModel[int]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[int, Field(ge=0)]\n    \"\"\"\n    Offset to apply to the results\n    \"\"\"\n\n\nclass PyExpression(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: str\n    \"\"\"\n    A simple python expression compatible with SimpleEval.\n    \"\"\"\n\n\nclass ResourceDeletedResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    \"\"\"\n    ID of deleted resource\n    \"\"\"\n    deleted_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was deleted as UTC date-time\n    \"\"\"\n    jobs: Annotated[list[UUID], Field(json_schema_extra={\"readOnly\": True})] = []\n    \"\"\"\n    IDs (if any) of jobs created as part of this request\n    \"\"\"\n\n\nclass StepLabel(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[str, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")]\n    \"\"\"\n    A valid step label\n    \"\"\"\n\n\nclass Uuid(RootModel[UUID]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: UUID\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Docs.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\nfrom .Common import Content\n\n\nclass BulkDeleteDocsRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    delete_all: StrictBool = False\n    \"\"\"\n    Delete all docs\n    \"\"\"\n\n\nclass CreateDocRequest(BaseModel):\n    \"\"\"\n    Payload for creating a doc\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    title: Annotated[str, Field(max_length=800)]\n    \"\"\"\n    Title describing what this document contains\n    \"\"\"\n    content: Content | list[Content]\n    \"\"\"\n    Contents of the document. Each string is limited to 30k characters.\n    \"\"\"\n    embed_instruction: str | None = None\n    \"\"\"\n    Instruction for the embedding model.\n    \"\"\"\n\n\nclass Doc(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    title: Annotated[str, Field(max_length=800)]\n    \"\"\"\n    Title describing what this document contains\n    \"\"\"\n    content: str | list[str]\n    \"\"\"\n    Contents of the document\n    \"\"\"\n    embeddings: Annotated[\n        list[float] | list[list[float]] | None,\n        Field(json_schema_extra={\"readOnly\": True}),\n    ] = None\n    \"\"\"\n    Embeddings for the document\n    \"\"\"\n    modality: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Modality of the document\n    \"\"\"\n    language: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Language of the document\n    \"\"\"\n    embedding_model: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Embedding model used for the document\n    \"\"\"\n    embedding_dimensions: Annotated[int | None, Field(json_schema_extra={\"readOnly\": True})] = (\n        None\n    )\n    \"\"\"\n    Dimensions of the embedding model\n    \"\"\"\n\n\nclass DocOwner(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    role: Literal[\"user\", \"agent\"]\n\n\nclass DocReference(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    owner: DocOwner\n    \"\"\"\n    The owner of this document.\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    ID of the document\n    \"\"\"\n    title: str | None = None\n    snippet: Snippet\n    distance: float | None = None\n\n\nclass DocSearchResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    docs: list[DocReference]\n    \"\"\"\n    The documents that were found\n    \"\"\"\n    time: Annotated[float, Field(gt=0.0)]\n    \"\"\"\n    The time taken to search in seconds\n    \"\"\"\n\n\nclass EmbedQueryResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    vectors: list[list[float]]\n    \"\"\"\n    The embedded vectors\n    \"\"\"\n\n\nclass HybridDocSearchRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    limit: Annotated[int, Field(ge=1, le=50)] = 10\n    \"\"\"\n    The limit of documents to return\n    \"\"\"\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    include_embeddings: StrictBool = True\n    \"\"\"\n    Whether to include embeddings in the response\n    \"\"\"\n    text: str\n    \"\"\"\n    Text to use in the search\n    \"\"\"\n    lang: str = \"en-US\"\n    \"\"\"\n    The language to be used for text search. Support for other languages coming soon.\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search.\n    \"\"\"\n    vector: list[float]\n    \"\"\"\n    Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n    alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5\n    \"\"\"\n    The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n    \"\"\"\n    k_multiplier: Annotated[int, Field(ge=1, le=10)] = 5\n    \"\"\"\n    The k_multiplier to control how many intermediate results to fetch before final scoring\n    \"\"\"\n\n\nclass MultipleEmbedQueryRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: Annotated[list[str], Field(max_length=100, min_length=1)]\n    \"\"\"\n    Texts to embed\n    \"\"\"\n    embed_instruction: str = \"\"\n    \"\"\"\n    Instruction for the embedding model.\n    \"\"\"\n\n\nclass SingleEmbedQueryRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: str\n    \"\"\"\n    Text to embed\n    \"\"\"\n    embed_instruction: str = \"\"\n    \"\"\"\n    Instruction for the embedding model.\n    \"\"\"\n\n\nclass Snippet(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    index: int\n    content: str\n    embedding: list[float] | None = None\n\n\nclass TextOnlyDocSearchRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    limit: Annotated[int, Field(ge=1, le=50)] = 10\n    \"\"\"\n    The limit of documents to return\n    \"\"\"\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    include_embeddings: StrictBool = True\n    \"\"\"\n    Whether to include embeddings in the response\n    \"\"\"\n    text: str\n    \"\"\"\n    Text to use in the search\n    \"\"\"\n    lang: str = \"en-US\"\n    \"\"\"\n    The language to be used for text search. Support for other languages coming soon.\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search.\n    \"\"\"\n\n\nclass VectorDocSearchRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    limit: Annotated[int, Field(ge=1, le=50)] = 10\n    \"\"\"\n    The limit of documents to return\n    \"\"\"\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    include_embeddings: StrictBool = True\n    \"\"\"\n    Whether to include embeddings in the response\n    \"\"\"\n    vector: list[float]\n    \"\"\"\n    Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Entries.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, RootModel\n\nfrom .Tools import (\n    ChosenBash20241022,\n    ChosenComputer20241022,\n    ChosenFunctionCall,\n    ChosenTextEditor20241022,\n    Tool,\n    ToolResponse,\n)\n\n\nclass BaseEntry(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    ChatML role (system|assistant|user|tool)\n    \"\"\"\n    name: str | None = None\n    content: (\n        list[Content | ContentModel3 | ContentModel]\n        | Tool\n        | ChosenFunctionCall\n        | ChosenComputer20241022\n        | ChosenTextEditor20241022\n        | ChosenBash20241022\n        | str\n        | ToolResponse\n        | list[\n            list[ContentModel1 | ContentModel3 | ContentModel2]\n            | Tool\n            | ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n            | str\n            | ToolResponse\n        ]\n    )\n    source: Literal[\n        \"api_request\",\n        \"api_response\",\n        \"tool_request\",\n        \"tool_response\",\n        \"internal\",\n        \"summarizer\",\n        \"meta\",\n    ]\n    tokenizer: str\n    token_count: int\n    model: str = \"gpt-4o-mini\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = None\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n    tool_call_id: str | None = None\n    \"\"\"\n    The tool call id of the tool call this message is a response to\n    \"\"\"\n    timestamp: AwareDatetime\n    \"\"\"\n    This is the time that this event refers to.\n    \"\"\"\n\n\nclass ChatMLRole(RootModel[Literal[\"user\", \"assistant\", \"system\", \"tool\"]]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    ChatML role (system|assistant|user|tool)\n    \"\"\"\n\n\nclass Content(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: str\n    type: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The type (fixed to 'text')\n    \"\"\"\n\n\nContentItem = Content\n\n\nclass ContentItemModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"image\"] = \"image\"\n    source: Source\n\n\nContentItemModel1 = Content\n\n\nContentItemModel2 = ContentItemModel\n\n\nclass ContentModel(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItem] | list[ContentItemModel]\n\n\nContentModel1 = Content\n\n\nclass ContentModel2(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel1] | list[ContentItemModel2]\n\n\nclass ContentModel3(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    image_url: ImageUrl\n    \"\"\"\n    The image URL\n    \"\"\"\n    type: Literal[\"image_url\"] = \"image_url\"\n    \"\"\"\n    The type (fixed to 'image_url')\n    \"\"\"\n\n\nclass Entry(BaseEntry):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n\n\nclass History(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    entries: list[Entry]\n    relations: list[Relation]\n    session_id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n\n\nclass ImageDetail(RootModel[Literal[\"low\", \"high\", \"auto\"]]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Literal[\"low\", \"high\", \"auto\"]\n    \"\"\"\n    Image detail level\n    \"\"\"\n\n\nclass ImageUrl(BaseModel):\n    \"\"\"\n    The image URL\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: str\n    \"\"\"\n    Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n    \"\"\"\n    detail: Literal[\"low\", \"high\", \"auto\"] = \"auto\"\n    \"\"\"\n    The detail level of the image\n    \"\"\"\n\n\nclass Relation(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    head: UUID\n    relation: str\n    tail: UUID\n\n\nclass Source(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"base64\"] = \"base64\"\n    media_type: str\n    data: str\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Executions.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateExecutionRequest(BaseModel):\n    \"\"\"\n    Payload for creating an execution\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    input: dict[str, Any]\n    \"\"\"\n    The input to the execution\n    \"\"\"\n    output: Any | None = None\n    \"\"\"\n    The output of the execution if it succeeded\n    \"\"\"\n    error: str | None = None\n    \"\"\"\n    The error of the execution if it failed\n    \"\"\"\n    transition_count: int | None = None\n    \"\"\"\n    The number of transitions in this execution\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass Execution(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    task_id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    The ID of the task that the execution is running\n    \"\"\"\n    status: Annotated[\n        Literal[\n            \"queued\",\n            \"starting\",\n            \"running\",\n            \"awaiting_input\",\n            \"succeeded\",\n            \"failed\",\n            \"cancelled\",\n        ],\n        Field(json_schema_extra={\"readOnly\": True}),\n    ]\n    \"\"\"\n    The status of the execution\n    \"\"\"\n    input: dict[str, Any]\n    \"\"\"\n    The input to the execution\n    \"\"\"\n    output: Any | None = None\n    \"\"\"\n    The output of the execution if it succeeded\n    \"\"\"\n    error: str | None = None\n    \"\"\"\n    The error of the execution if it failed\n    \"\"\"\n    transition_count: int | None = None\n    \"\"\"\n    The number of transitions in this execution\n    \"\"\"\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n\n\nclass TaskTokenResumeExecutionRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\"running\"] = \"running\"\n    input: dict[str, Any] | None = None\n    \"\"\"\n    The input to resume the execution with\n    \"\"\"\n\n\nclass TransitionEvent(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Annotated[\n        Literal[\n            \"init\",\n            \"init_branch\",\n            \"finish\",\n            \"finish_branch\",\n            \"wait\",\n            \"resume\",\n            \"error\",\n            \"step\",\n            \"cancelled\",\n        ],\n        Field(json_schema_extra={\"readOnly\": True}),\n    ]\n    output: Annotated[Any, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n\n\nclass TransitionTarget(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    workflow: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ]\n    \"\"\"\n    For Unicode character safety\n    See: https://unicode.org/reports/tr31/\n    See: https://www.unicode.org/reports/tr39/#Identifier_Characters\n    \"\"\"\n    step: int\n    scope_id: UUID\n\n\nclass UpdateExecutionRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\n        \"queued\",\n        \"starting\",\n        \"running\",\n        \"awaiting_input\",\n        \"succeeded\",\n        \"failed\",\n        \"cancelled\",\n    ]\n\n\nclass ResumeExecutionRequest(UpdateExecutionRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\"running\"] = \"running\"\n    input: dict[str, Any] | None = None\n    \"\"\"\n    The input to resume the execution with\n    \"\"\"\n\n\nclass StopExecutionRequest(UpdateExecutionRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\"cancelled\"] = \"cancelled\"\n    reason: str | None = None\n    \"\"\"\n    The reason for stopping the execution\n    \"\"\"\n\n\nclass Transition(TransitionEvent):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    execution_id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    current: Annotated[TransitionTarget, Field(json_schema_extra={\"readOnly\": True})]\n    next: Annotated[TransitionTarget | None, Field(json_schema_extra={\"readOnly\": True})]\n    step_label: Annotated[\n        str | None,\n        Field(\n            json_schema_extra={\"readOnly\": True},\n            max_length=120,\n            pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\",\n        ),\n    ] = None\n    \"\"\"\n    A valid step label\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Files.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateFileRequest(BaseModel):\n    \"\"\"\n    Payload for creating a file\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ]\n    \"\"\"\n    Name of the file\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    Description of the file\n    \"\"\"\n    mime_type: str | None = None\n    \"\"\"\n    MIME type of the file\n    \"\"\"\n    content: str\n    \"\"\"\n    Base64 encoded content of the file\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the file\n    \"\"\"\n\n\nclass File(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ]\n    \"\"\"\n    Name of the file\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    Description of the file\n    \"\"\"\n    mime_type: str | None = None\n    \"\"\"\n    MIME type of the file\n    \"\"\"\n    content: str\n    \"\"\"\n    Base64 encoded content of the file\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the file\n    \"\"\"\n    size: Annotated[int, Field(ge=1, json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    Size of the file in bytes\n    \"\"\"\n    hash: Annotated[str, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    Hash of the file\n    \"\"\"\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Jobs.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\n\nclass JobStatus(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the job\n    \"\"\"\n    reason: str = \"\"\n    \"\"\"\n    Reason for the current state of the job\n    \"\"\"\n    has_progress: StrictBool = False\n    \"\"\"\n    Whether this Job supports progress updates\n    \"\"\"\n    progress: Annotated[float, Field(ge=0.0, le=100.0)] = 0\n    \"\"\"\n    Progress percentage\n    \"\"\"\n    state: Literal[\n        \"pending\",\n        \"in_progress\",\n        \"retrying\",\n        \"succeeded\",\n        \"aborted\",\n        \"failed\",\n        \"unknown\",\n    ] = \"pending\"\n    \"\"\"\n    Current state of the job\n    \"\"\"\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Projects.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateProjectRequest(BaseModel):\n    \"\"\"\n    Payload for creating a project\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Display name of the project\n    \"\"\"\n\n\nclass PatchProjectRequest(BaseModel):\n    \"\"\"\n    Payload for patching a project\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str | None, Field(max_length=255, min_length=1)] = None\n    \"\"\"\n    Display name of the project\n    \"\"\"\n\n\nclass Project(BaseModel):\n    \"\"\"\n    Project model\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Display name of the project\n    \"\"\"\n\n\nclass UpdateProjectRequest(BaseModel):\n    \"\"\"\n    Payload for updating a project\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Display name of the project\n    \"\"\"\n\n\nclass CreateOrUpdateProjectRequest(CreateProjectRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    metadata: dict[str, Any] | None = None\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Canonical name of the project (unique per developer)\n    \"\"\"\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    Display name of the project\n    \"\"\"\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Responses.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\n\nfrom pydantic import BaseModel, ConfigDict, Field, RootModel, StrictBool\n\n\nclass BaseTool(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str\n\n\nclass Click(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"click\"] = \"click\"\n    \"\"\"\n    Specifies the event type. For a click action, this property is always set to `click`.\n    \"\"\"\n    button: Literal[\"left\", \"right\", \"wheel\", \"back\", \"forward\"]\n    \"\"\"\n    Indicates which mouse button was pressed during the click. One of `left`, `right`, `wheel`, `back`, or `forward`.\n    \"\"\"\n    x: int\n    \"\"\"\n    The x-coordinate where the click occurred.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate where the click occurred.\n    \"\"\"\n\n\nclass ComputerScreenshotImage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_screenshot\"] = \"computer_screenshot\"\n    \"\"\"\n    Specifies the event type. For a computer screenshot, this property is always set to `computer_screenshot`.\n    \"\"\"\n    image_url: str | None = None\n    \"\"\"\n    The URL of the screenshot image.\n    \"\"\"\n    file_id: str | None = None\n    \"\"\"\n    The identifier of an uploaded file that contains the screenshot.\n    \"\"\"\n\n\nclass ComputerTool(BaseTool):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_use_preview\"] = \"computer_use_preview\"\n    \"\"\"\n    The type of the computer use tool. Always `computer_use_preview`.\n    \"\"\"\n    display_width: float\n    \"\"\"\n    The width of the computer display.\n    \"\"\"\n    display_height: float\n    \"\"\"\n    The height of the computer display.\n    \"\"\"\n    environment: Literal[\"mac\", \"windows\", \"ubuntu\", \"browser\"]\n    \"\"\"\n    The type of computer environment to control.\n    \"\"\"\n\n\nclass ComputerToolCall(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_call\"] = \"computer_call\"\n    \"\"\"\n    The type of the computer call. Always `computer_call`.\n    \"\"\"\n    id: str\n    \"\"\"\n    The unique ID of the computer call.\n    \"\"\"\n    call_id: str\n    \"\"\"\n    An identifier used when responding to the tool call with output.\n    \"\"\"\n    action: Click | DoubleClick | Drag | KeyPress | Move | Screenshot | Scroll | Type | Wait\n    \"\"\"\n    The action to perform.\n    \"\"\"\n    pending_safety_checks: list[ComputerToolCallSafetyCheck]\n    \"\"\"\n    The pending safety checks for the computer call.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"]\n    \"\"\"\n    The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    \"\"\"\n\n\nclass ComputerToolCallOutput(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_call_output\"] = \"computer_call_output\"\n    \"\"\"\n    The type of the computer tool call output. Always `computer_call_output`.\n    \"\"\"\n    id: str | None = None\n    \"\"\"\n    The ID of the computer tool call output.\n    \"\"\"\n    call_id: str\n    \"\"\"\n    The ID of the computer tool call that produced the output.\n    \"\"\"\n    acknowledged_safety_checks: list[ComputerToolCallSafetyCheck] | None = None\n    \"\"\"\n    The safety checks reported by the API that have been acknowledged by the developer.\n    \"\"\"\n    output: ComputerScreenshotImage\n    \"\"\"\n    The output screenshot image.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"] | None = None\n    \"\"\"\n    The status of the message input. One of `in_progress`, `completed`, or `incomplete`. Populated when input items are returned via API.\n    \"\"\"\n\n\nclass ComputerToolCallOutputResource(ComputerToolCallOutput):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The unique ID of the computer call tool output.\n    \"\"\"\n\n\nclass ComputerToolCallSafetyCheck(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The ID of the pending safety check.\n    \"\"\"\n    code: str\n    \"\"\"\n    The type of the pending safety check.\n    \"\"\"\n    message: str\n    \"\"\"\n    Details about the pending safety check.\n    \"\"\"\n\n\nclass Coordinate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    x: int\n    \"\"\"\n    The x-coordinate.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate.\n    \"\"\"\n\n\nclass CreateResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    model: str\n    input: (\n        str\n        | list[\n            EasyInputMessage\n            | Item\n            | InputMessageResource\n            | OutputMessage\n            | FileSearchToolCall\n            | ComputerToolCall\n            | ComputerToolCallOutputResource\n            | WebSearchToolCall\n            | FunctionToolCall\n            | FunctionToolCallOutputResource\n        ]\n    )\n    include: (\n        list[\n            Literal[\n                \"file_search_call.results\",\n                \"message.input_image.image_url\",\n                \"computer_call_output.output.image_url\",\n            ]\n        ]\n        | None\n    ) = None\n    parallel_tool_calls: StrictBool = True\n    store: StrictBool = True\n    stream: StrictBool = False\n    max_tokens: int | None = None\n    temperature: float = 1\n    top_p: float = 1\n    n: int | None = None\n    stop: str | list[str] | None = None\n    presence_penalty: float | None = None\n    frequency_penalty: float | None = None\n    logit_bias: dict[str, Any] | None = None\n    user: str | None = None\n    instructions: str | None = None\n    previous_response_id: str | None = None\n    reasoning: Reasoning | None = None\n    text: Text | None = None\n    tool_choice: Literal[\"auto\", \"none\"] | ToolChoice | None = None\n    tools: list[FunctionTool | WebSearchTool | FileSearchTool | ComputerTool] | None = None\n    truncation: Literal[\"disabled\", \"auto\"] | None = None\n    metadata: dict[str, Any] | None = None\n\n\nclass DoubleClick(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"double_click\"] = \"double_click\"\n    \"\"\"\n    Specifies the event type. For a double click action, this property is always set to `double_click`.\n    \"\"\"\n    x: int\n    \"\"\"\n    The x-coordinate where the double click occurred.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate where the double click occurred.\n    \"\"\"\n\n\nclass Drag(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"drag\"] = \"drag\"\n    \"\"\"\n    Specifies the event type. For a drag action, this property is always set to `drag`.\n    \"\"\"\n    path: list[Coordinate]\n    \"\"\"\n    An array of coordinates representing the path of the drag action.\n    \"\"\"\n\n\nclass EasyInputMessage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"developer\"]\n    \"\"\"\n    The role of the message input. One of `user`, `assistant`, `system`, or `developer`.\n    \"\"\"\n    content: str | list[InputText | InputImage | InputFile]\n    \"\"\"\n    Text, image, or audio input to the model, used to generate a response. Can also contain previous assistant responses.\n    \"\"\"\n    type: Literal[\"message\"] = \"message\"\n    \"\"\"\n    The type of the message input. Always `message`.\n    \"\"\"\n\n\nclass FileCitation(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"file_citation\"] = \"file_citation\"\n    \"\"\"\n    The type of the file citation. Always `file_citation`.\n    \"\"\"\n    index: int\n    \"\"\"\n    The index of the file in the list of files.\n    \"\"\"\n    file_id: str\n    \"\"\"\n    The ID of the file.\n    \"\"\"\n\n\nclass FilePath(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"file_path\"] = \"file_path\"\n    \"\"\"\n    The type of the file path. Always `file_path`.\n    \"\"\"\n    file_id: str\n    \"\"\"\n    The ID of the file.\n    \"\"\"\n    index: int\n    \"\"\"\n    The index of the file in the list of files.\n    \"\"\"\n\n\nclass FileSearchTool(BaseTool):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"file_search\"] = \"file_search\"\n    filters: Any | None = None\n    max_num_results: int | None = None\n    ranking_options: RankingOptions | None = None\n    vector_store_ids: list[str]\n\n\nclass FileSearchToolCall(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The unique ID of the file search tool call.\n    \"\"\"\n    type: Literal[\"file_search_call\"] = \"file_search_call\"\n    \"\"\"\n    The type of the file search tool call. Always `file_search_call`.\n    \"\"\"\n    status: Literal[\"in_progress\", \"searching\", \"completed\", \"incomplete\", \"failed\"]\n    \"\"\"\n    The status of the file search tool call. One of `in_progress`, `searching`, `incomplete` or `failed`\n    \"\"\"\n    queries: list[str]\n    \"\"\"\n    The queries used to search for files.\n    \"\"\"\n    results: list[Result] | None = None\n    \"\"\"\n    The results of the file search tool call.\n    \"\"\"\n\n\nclass Function(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: str\n\n\nclass FunctionTool(BaseTool):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"function\"] = \"function\"\n    name: str\n    description: str | None = None\n    parameters: dict[str, Any]\n    strict: StrictBool | None = None\n\n\nclass FunctionToolCall(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The unique ID of the function tool call.\n    \"\"\"\n    type: Literal[\"function_call\"] = \"function_call\"\n    \"\"\"\n    The type of the function tool call. Always `function_call`.\n    \"\"\"\n    call_id: str\n    \"\"\"\n    The unique ID of the function tool call generated by the model.\n    \"\"\"\n    name: str\n    \"\"\"\n    The name of the function to run.\n    \"\"\"\n    arguments: str\n    \"\"\"\n    A JSON string of the arguments to pass to the function.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"] | None = None\n    \"\"\"\n    The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    \"\"\"\n\n\nclass FunctionToolCallOutput(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n    \"\"\"\n    The unique ID of the function tool call output. Populated when this item is returned via API.\n    \"\"\"\n    type: Literal[\"function_call_output\"] = \"function_call_output\"\n    \"\"\"\n    The type of the function tool call output. Always `function_call_output`.\n    \"\"\"\n    call_id: str\n    \"\"\"\n    The unique ID of the function tool call generated by the model.\n    \"\"\"\n    output: str\n    \"\"\"\n    A JSON string of the output of the function tool call.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"] | None = None\n    \"\"\"\n    The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    \"\"\"\n\n\nclass FunctionToolCallOutputResource(FunctionToolCallOutput):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n    \"\"\"\n    The unique ID of the function call tool output.\n    \"\"\"\n\n\nclass IncompleteDetails(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    reason: Literal[\"max_output_tokens\", \"content_filter\"]\n\n\nclass InputFile(BaseModel):\n    \"\"\"\n    A file input to the model.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"input_file\"] = \"input_file\"\n    \"\"\"\n    The type of the input item. Always `input_file`.\n    \"\"\"\n    file_id: str | None = None\n    \"\"\"\n    The ID of the file to be sent to the model.\n    \"\"\"\n    filename: str | None = None\n    \"\"\"\n    The name of the file to be sent to the model.\n    \"\"\"\n    file_data: str | None = None\n    \"\"\"\n    The content of the file to be sent to the model.\n    \"\"\"\n\n\nclass InputImage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"input_image\"] = \"input_image\"\n    \"\"\"\n    The type of the input item. Always `input_image`.\n    \"\"\"\n    image_url: str | None = None\n    \"\"\"\n    The URL of the image to be sent to the model. A fully qualified URL or base64 encoded image in a data URL.\n    \"\"\"\n    file_id: str | None = None\n    \"\"\"\n    The ID of the file to be sent to the model.\n    \"\"\"\n    detail: Literal[\"high\", \"low\", \"auto\"] = \"auto\"\n    \"\"\"\n    The detail level of the image to be sent to the model. One of `high`, `low`, or `auto`. Defaults to `auto`.\n    \"\"\"\n\n\nclass InputMessage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"message\"] = \"message\"\n    role: Literal[\"user\", \"assistant\", \"system\", \"developer\"]\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"]\n    content: list[InputText | InputImage | InputFile]\n\n\nclass InputMessageResource(InputMessage):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n\n\nclass InputText(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"input_text\"] = \"input_text\"\n    \"\"\"\n    The type of the input item. Always `input_text`.\n    \"\"\"\n    text: str\n    \"\"\"\n    The text input to the model.\n    \"\"\"\n\n\nclass InputTokensDetails(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cached_tokens: int\n\n\nclass Item(BaseModel):\n    \"\"\"\n    An item representing part of the context for the response to be generated by the model. Can contain text, images, and audio inputs, as well as previous assistant responses and tool call outputs.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str\n\n\nclass KeyPress(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"keypress\"] = \"keypress\"\n    \"\"\"\n    Specifies the event type. For a keypress action, this property is always set to `keypress`.\n    \"\"\"\n    keys: list[str]\n    \"\"\"\n    The combination of keys the model is requesting to be pressed. This is an array of strings, each representing a key.\n    \"\"\"\n\n\nclass Move(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"move\"] = \"move\"\n    \"\"\"\n    Specifies the event type. For a move action, this property is always set to `move`.\n    \"\"\"\n    x: int\n    \"\"\"\n    The x-coordinate to move to.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate to move to.\n    \"\"\"\n\n\nclass OutputMessage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    type: Literal[\"message\"] = \"message\"\n    role: Literal[\"user\", \"assistant\", \"system\", \"developer\"]\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"]\n    content: list[OutputText | Refusal]\n\n\nclass OutputText(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"output_text\"] = \"output_text\"\n    \"\"\"\n    The type of the output text. Always `output_text`.\n    \"\"\"\n    text: str\n    \"\"\"\n    The text output from the model.\n    \"\"\"\n    annotations: list[FileCitation | UrlCitation | FilePath]\n    \"\"\"\n    The annotations of the text output.\n    \"\"\"\n\n\nclass OutputTokensDetails(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    reasoning_tokens: int\n\n\nclass RankingOptions(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    ranker: Literal[\"auto\"] | None = None\n    score_threshold: float | None = None\n\n\nclass Reasoning(BaseModel):\n    \"\"\"\n    Reasoning configuration options for o-series models.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    effort: Literal[\"low\", \"medium\", \"high\"]\n    \"\"\"\n    Constraint effort on reasoning models.\n    \"\"\"\n    generate_summary: Literal[\"concise\", \"detailed\"] | None = None\n    \"\"\"\n    A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. One of `concise` or `detailed`.\n    \"\"\"\n\n\nclass ReasoningContent(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"reasoning_summary\"] = \"reasoning_summary\"\n    \"\"\"\n    The type of the object. Always `text`.\n    \"\"\"\n    text: str\n    \"\"\"\n    A short summary of the reasoning used by the model when generating the response.\n    \"\"\"\n\n\nclass ReasoningItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"reasoning\"] = \"reasoning\"\n    \"\"\"\n    The type of the object. Always `reasoning`.\n    \"\"\"\n    id: str\n    \"\"\"\n    The unique identifier of the reasoning content.\n    \"\"\"\n    content: list[ReasoningContent]\n    \"\"\"\n    Reasoning text contents.\n    \"\"\"\n    status: Literal[\"in_progress\", \"completed\", \"incomplete\"] | None = None\n    \"\"\"\n    The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    \"\"\"\n\n\nclass Refusal(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"refusal\"] = \"refusal\"\n    \"\"\"\n    The type of the refusal. Always `refusal`.\n    \"\"\"\n    refusal: str\n    \"\"\"\n    The refusal explanation from the model.\n    \"\"\"\n\n\nclass Response(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    object: Literal[\"response\"] = \"response\"\n    created_at: int\n    status: Literal[\"completed\", \"failed\", \"in_progress\", \"incomplete\"]\n    error: ResponseError | None = None\n    incomplete_details: IncompleteDetails | None = None\n    instructions: str | None = None\n    max_output_tokens: int | None = None\n    model: str\n    output: list[\n        OutputMessage\n        | FileSearchToolCall\n        | FunctionToolCall\n        | WebSearchToolCall\n        | ComputerToolCall\n        | ReasoningItem\n    ]\n    parallel_tool_calls: StrictBool = True\n    previous_response_id: str | None = None\n    reasoning: Reasoning | None = None\n    store: StrictBool = True\n    temperature: float = 1\n    text: Text | None = None\n    tool_choice: ToolChoiceTypes | ToolChoiceFunction | Literal[\"auto\", \"none\", \"required\"]\n    tools: list[FunctionTool | WebSearchTool | FileSearchTool | ComputerTool]\n    top_p: float = 1\n    truncation: Literal[\"disabled\", \"auto\"]\n    usage: ResponseUsage\n    user: str | None = None\n    metadata: dict[str, Any]\n\n\nclass ResponseError(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    message: str\n    type: str\n    param: str | None = None\n    code: str | None = None\n\n\nclass ResponseFormatJsonObject(BaseModel):\n    \"\"\"\n    JSON object response format. An older method of generating JSON responses.\n\n    Using `json_schema` is recommended for models that support it. Note that the\n    model will not generate JSON without a system or user message instructing it\n    to do so.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"json_object\"] = \"json_object\"\n    \"\"\"\n    The type of response format being defined. Always `json_object`.\n    \"\"\"\n\n\nclass ResponseFormatText(BaseModel):\n    \"\"\"\n    Default response format. Used to generate text responses.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The type of response format being defined. Always `text`.\n    \"\"\"\n\n\nclass ResponseUsage(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    input_tokens: int\n    input_tokens_details: InputTokensDetails\n    output_tokens: int\n    output_tokens_details: OutputTokensDetails\n    total_tokens: int\n\n\nclass Result(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    file_id: str\n    \"\"\"\n    The unique ID of the file.\n    \"\"\"\n    text: str\n    \"\"\"\n    The text that was retrieved from the file.\n    \"\"\"\n    filename: str\n    \"\"\"\n    The name of the file.\n    \"\"\"\n    attributes: VectorStoreFileAttributes\n    \"\"\"\n    The attributes of the file.\n    \"\"\"\n    score: float\n    \"\"\"\n    The relevance score of the file - a value between 0 and 1.\n    \"\"\"\n\n\nclass Screenshot(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"screenshot\"] = \"screenshot\"\n    \"\"\"\n    Specifies the event type. For a screenshot action, this property is always set to `screenshot`.\n    \"\"\"\n\n\nclass Scroll(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"scroll\"] = \"scroll\"\n    \"\"\"\n    Specifies the event type. For a scroll action, this property is always set to `scroll`.\n    \"\"\"\n    x: int\n    \"\"\"\n    The x-coordinate where the scroll occurred.\n    \"\"\"\n    y: int\n    \"\"\"\n    The y-coordinate where the scroll occurred.\n    \"\"\"\n    scroll_x: int\n    \"\"\"\n    The horizontal scroll distance.\n    \"\"\"\n    scroll_y: int\n    \"\"\"\n    The vertical scroll distance.\n    \"\"\"\n\n\nclass Text(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    format: ResponseFormatText | TextResponseFormatJsonSchema | ResponseFormatJsonObject\n\n\nclass TextResponseFormatJsonSchema(BaseModel):\n    \"\"\"\n    JSON Schema response format. Used to generate structured JSON responses. Learn more about [Structured Outputs](/docs/guides/structured-outputs).\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"json_schema\"] = \"json_schema\"\n    \"\"\"\n    The type of response format being defined. Always `json_schema`.\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    A description of what the response format is for, used by the model to determine how to respond in the format.\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.\n    \"\"\"\n    schema_: Annotated[dict[str, Any], Field(alias=\"schema\")]\n    \"\"\"\n    The JSON schema that defines the structure of the response.\n    \"\"\"\n    strict: StrictBool = False\n    \"\"\"\n    Whether to enable strict schema adherence when generating the output. If set to true, the model will always follow the exact schema defined in the `schema` field. Only a subset of JSON Schema is supported when `strict` is `true`. To learn more, read the [Structured Outputs guide](/docs/guides/structured-outputs).\n    \"\"\"\n\n\nclass ToolChoice(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"function\"] = \"function\"\n    function: Function\n\n\nclass ToolChoiceFunction(BaseModel):\n    \"\"\"\n    Use this option to force the model to call a specific function.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"function\"] = \"function\"\n    \"\"\"\n    For function calling, the type is always `function`.\n    \"\"\"\n    name: str\n    \"\"\"\n    The name of the function to call.\n    \"\"\"\n\n\nclass ToolChoiceTypes(BaseModel):\n    \"\"\"\n    Indicates that the model should use a built-in tool to generate a response.\n\n    [Learn more about built-in tools](/docs/guides/tools).\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\n        \"file_search\",\n        \"web_search_preview\",\n        \"computer_use_preview\",\n        \"web_search_preview_2025_03_11\",\n    ]\n    \"\"\"\n    The type of hosted tool the model should to use. Learn more about\n    [built-in tools](/docs/guides/tools).\n\n    Allowed values are:\n    - `file_search`\n    - `web_search_preview`\n    - `computer_use_preview`\n    \"\"\"\n\n\nclass Type(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"type\"] = \"type\"\n    \"\"\"\n    Specifies the event type. For a type action, this property is always set to `type`.\n    \"\"\"\n    text: str\n    \"\"\"\n    The text to type.\n    \"\"\"\n\n\nclass UrlCitation(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: str\n    \"\"\"\n    The URL of the web resource.\n    \"\"\"\n    title: str\n    \"\"\"\n    The title of the web resource.\n    \"\"\"\n    type: Literal[\"url_citation\"] = \"url_citation\"\n    \"\"\"\n    The type of the URL citation. Always `url_citation`.\n    \"\"\"\n    start_index: int\n    \"\"\"\n    The index of the first character of the URL citation in the message.\n    \"\"\"\n    end_index: int\n    \"\"\"\n    The index of the last character of the URL citation in the message.\n    \"\"\"\n\n\nclass UserLocation(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"approximate\"] = \"approximate\"\n    city: str | None = None\n    country: str | None = None\n    region: str | None = None\n    timezone: str | None = None\n\n\nclass VectorStoreFileAttributes(BaseModel):\n    \"\"\"\n    Set of key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers.\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    properties: dict[str, VectorStoreFileAttributesString | StrictBool | float]\n    \"\"\"\n    Key-value pairs where keys are strings with max length 64 and values are strings with max length 512, booleans, or numbers.\n    \"\"\"\n\n\nclass VectorStoreFileAttributesString(RootModel[str]):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    root: Annotated[str, Field(max_length=512)]\n\n\nclass Wait(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"wait\"] = \"wait\"\n    \"\"\"\n    Specifies the event type. For a wait action, this property is always set to `wait`.\n    \"\"\"\n\n\nclass WebSearchTool(BaseTool):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"web_search_preview\"] = \"web_search_preview\"\n    domains: list[str] | None = None\n    search_context_size: Literal[\"small\", \"medium\", \"large\"] | None = None\n    user_location: UserLocation | None = None\n\n\nclass WebSearchToolCall(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    \"\"\"\n    The unique ID of the web search tool call.\n    \"\"\"\n    type: Literal[\"web_search_call\"] = \"web_search_call\"\n    \"\"\"\n    The type of the web search tool call. Always `web_search_call`.\n    \"\"\"\n    status: Literal[\"in_progress\", \"searching\", \"completed\", \"failed\"]\n    \"\"\"\n    The status of the web search tool call.\n    \"\"\"\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Secrets.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateSecretRequest(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: str\n    \"\"\"\n    Name of the secret\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of what the secret is used for\n    \"\"\"\n    value: str\n    \"\"\"\n    The decrypted secret value\n    \"\"\"\n\n\nclass Secret(BaseModel):\n    \"\"\"\n    A secret that can be used in tasks and sessions\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n    name: str\n    \"\"\"\n    Name of the secret\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of what the secret is used for\n    \"\"\"\n    value: str\n    \"\"\"\n    The decrypted secret value\n    \"\"\"\n\n\nUpdateSecretRequest = CreateSecretRequest\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Sessions.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\n\nclass BaseDocSearch(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    limit: Annotated[int, Field(ge=1, le=50)] = 10\n    \"\"\"\n    The limit of documents to return\n    \"\"\"\n    lang: str = \"en-US\"\n    \"\"\"\n    The language to be used for text-only search. Support for other languages coming soon.\n    \"\"\"\n    metadata_filter: dict[str, Any] = {}\n    \"\"\"\n    Metadata filter to apply to the search\n    \"\"\"\n    num_search_messages: Annotated[int, Field(ge=1, le=50)] = 4\n    \"\"\"\n    The number of search messages to use for the search.\n    \"\"\"\n    max_query_length: Annotated[int, Field(ge=100, le=10000)] = 1000\n    \"\"\"\n    The maximum query length to use for the search.\n    \"\"\"\n    include_embeddings: StrictBool = True\n    \"\"\"\n    Whether to include embeddings in the response\n    \"\"\"\n\n\nBaseDocSearchUpdate = BaseDocSearch\n\n\nclass CreateSessionRequest(BaseModel):\n    \"\"\"\n    Payload for creating a session\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    user: UUID | None = None\n    \"\"\"\n    User ID of user associated with this session\n    \"\"\"\n    users: list[UUID] | None = None\n    agent: UUID | None = None\n    \"\"\"\n    Agent ID of agent associated with this session\n    \"\"\"\n    agents: list[UUID] | None = None\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: VectorDocSearch | TextOnlyDocSearch | HybridDocSearch | None = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass HybridDocSearch(BaseDocSearch):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"hybrid\"] = \"hybrid\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5\n    \"\"\"\n    The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    The trigram_similarity_threshold cutoff level\n    \"\"\"\n    k_multiplier: Annotated[int, Field(ge=0)] = 7\n    \"\"\"\n    The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring\n    \"\"\"\n\n\nclass HybridDocSearchUpdate(BaseDocSearchUpdate):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"hybrid\"] = \"hybrid\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    alpha: Annotated[float, Field(ge=0.0, le=1.0)] = 0.5\n    \"\"\"\n    The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    The trigram_similarity_threshold cutoff level\n    \"\"\"\n    k_multiplier: Annotated[int, Field(ge=0)] = 7\n    \"\"\"\n    The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring\n    \"\"\"\n\n\nclass PatchSessionRequest(BaseModel):\n    \"\"\"\n    Payload for patching a session\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: (\n        VectorDocSearchUpdate | TextOnlyDocSearchUpdate | HybridDocSearchUpdate | None\n    ) = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass Session(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    summary: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n    \"\"\"\n    Summary (null at the beginning) - generated automatically after every interaction\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: VectorDocSearch | TextOnlyDocSearch | HybridDocSearch | None = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    kind: str | None = None\n    \"\"\"\n    Discriminator property for Session.\n    \"\"\"\n\n\nclass SingleAgentMultiUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agent: UUID\n    users: Annotated[list[UUID], Field(min_length=2)]\n\n\nclass SingleAgentNoUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agent: UUID\n\n\nclass SingleAgentSingleUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agent: UUID\n    user: UUID\n\n\nclass TextOnlyDocSearch(BaseDocSearch):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    The trigram_similarity_threshold cutoff level\n    \"\"\"\n\n\nclass TextOnlyDocSearchUpdate(BaseDocSearchUpdate):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    trigram_similarity_threshold: Annotated[float | None, Field(ge=0.0, le=1.0)] = None\n    \"\"\"\n    The trigram_similarity_threshold cutoff level\n    \"\"\"\n\n\nclass UpdateSessionRequest(BaseModel):\n    \"\"\"\n    Payload for updating a session\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: VectorDocSearch | TextOnlyDocSearch | HybridDocSearch | None = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass VectorDocSearch(BaseDocSearch):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"vector\"] = \"vector\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n\n\nclass VectorDocSearchUpdate(BaseDocSearchUpdate):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    mode: Literal[\"vector\"] = \"vector\"\n    \"\"\"\n    The mode to use for the search.\n    \"\"\"\n    confidence: Annotated[float, Field(ge=-1.0, le=1.0)] = 0.5\n    \"\"\"\n    The confidence cutoff level\n    \"\"\"\n    mmr_strength: Annotated[float, Field(ge=0.0, lt=1.0)] = 0.5\n    \"\"\"\n    MMR Strength (mmr_strength = 1 - mmr_lambda)\n    \"\"\"\n\n\nclass CreateOrUpdateSessionRequest(CreateSessionRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n    user: UUID | None = None\n    \"\"\"\n    User ID of user associated with this session\n    \"\"\"\n    users: list[UUID] | None = None\n    agent: UUID | None = None\n    \"\"\"\n    Agent ID of agent associated with this session\n    \"\"\"\n    agents: list[UUID] | None = None\n    situation: str | None = None\n    \"\"\"\n    Session situation\n    \"\"\"\n    system_template: str | None = None\n    \"\"\"\n    A specific system prompt template that sets the background for this session\n    \"\"\"\n    render_templates: StrictBool = True\n    \"\"\"\n    Render system and assistant message content as jinja templates\n    \"\"\"\n    token_budget: int | None = None\n    \"\"\"\n    Threshold value for the adaptive context functionality\n    \"\"\"\n    context_overflow: Literal[\"truncate\", \"adaptive\"] | None = None\n    \"\"\"\n    Action to start on context window overflow\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false for sessions, true for tasks)\n\n    If a tool call is made, the tool's output will be sent back to the model as the model's input.\n    If a tool call is not made, the model's output will be returned as is.\n    \"\"\"\n    forward_tool_calls: StrictBool = False\n    \"\"\"\n    Whether to forward tool calls to the model\n    \"\"\"\n    recall_options: VectorDocSearch | TextOnlyDocSearch | HybridDocSearch | None = None\n    \"\"\"\n    Recall options for the session\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass MultiAgentMultiUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agents: Annotated[list[UUID], Field(min_length=2)]\n    users: Annotated[list[UUID], Field(min_length=2)]\n\n\nclass MultiAgentNoUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agents: Annotated[list[UUID], Field(min_length=2)]\n\n\nclass MultiAgentSingleUserSession(Session):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    agents: Annotated[list[UUID], Field(min_length=2)]\n    user: UUID\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Tasks.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field, StrictBool\n\nfrom .Tools import (\n    ChosenBash20241022,\n    ChosenComputer20241022,\n    ChosenFunctionCall,\n    ChosenTextEditor20241022,\n    CreateToolRequest,\n    NamedToolChoice,\n)\n\n\nclass CaseThen(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    case: Literal[\"_\"] | str\n    \"\"\"\n    The condition to evaluate\n    \"\"\"\n    then: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | WaitForInputStep\n    )\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n\n\nclass CaseThenUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    case: Literal[\"_\"] | str\n    \"\"\"\n    The condition to evaluate\n    \"\"\"\n    then: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | WaitForInputStep\n    )\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n\n\nclass Content(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    text: str\n    \"\"\"\n    A valid jinja template.\n    \"\"\"\n    type: Literal[\"text\"] = \"text\"\n    \"\"\"\n    The type (fixed to 'text')\n    \"\"\"\n\n\nContentItem = Content\n\n\nclass ContentItemModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"image\"] = \"image\"\n    source: Source\n\n\nContentItemModel1 = Content\n\n\nContentItemModel2 = ContentItemModel\n\n\nclass ContentModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    image_url: ImageUrl\n    \"\"\"\n    The image URL\n    \"\"\"\n    type: Literal[\"image_url\"] = \"image_url\"\n    \"\"\"\n    The type (fixed to 'image_url')\n    \"\"\"\n\n\nclass ContentModel1(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItem] | list[ContentItemModel]\n\n\nContentModel2 = Content\n\n\nContentModel3 = ContentModel\n\n\nclass ContentModel4(BaseModel):\n    \"\"\"\n    Anthropic image content part\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_use_id: str\n    type: Literal[\"tool_result\"] = \"tool_result\"\n    content: list[ContentItemModel1] | list[ContentItemModel2]\n\n\nclass CreateTaskRequest(BaseModel):\n    \"\"\"\n    Payload for creating a task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStep\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n            | ReturnStep\n            | SleepStep\n            | ErrorWorkflowStep\n            | WaitForInputStep\n            | IfElseWorkflowStep\n            | SwitchStep\n            | ForeachStep\n            | ParallelStep\n            | Main\n        ],\n        Field(min_length=1),\n    ]\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[TaskTool] = []\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass Else(BaseModel):\n    \"\"\"\n    The steps to run if the condition is false\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"map_reduce\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"map_reduce\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: EvaluateStep | ToolCallStep | PromptStep | GetStep | SetStep | LogStep | YieldStep\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ElseModel(BaseModel):\n    \"\"\"\n    The steps to run if the condition is false\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ErrorWorkflowStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"error\"], Field(json_schema_extra={\"readOnly\": True})] = \"error\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    error: str\n    \"\"\"\n    The error message\n    \"\"\"\n\n\nclass EvaluateStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"evaluate\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"evaluate\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    evaluate: dict[str, dict[str, Any] | str]\n    \"\"\"\n    The expression to evaluate\n    \"\"\"\n\n\nclass ForeachDo(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    in_: Annotated[str, Field(alias=\"in\")]\n    \"\"\"\n    The variable to iterate over.\n    VALIDATION: Should NOT return more than 1000 elements.\n    \"\"\"\n    do: (\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n\n\nclass ForeachDoUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    in_: Annotated[str, Field(alias=\"in\")]\n    \"\"\"\n    The variable to iterate over.\n    VALIDATION: Should NOT return more than 1000 elements.\n    \"\"\"\n    do: (\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n\n\nclass ForeachStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"foreach\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"foreach\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    foreach: ForeachDo\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n\n\nclass ForeachStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    foreach: ForeachDoUpdateItem\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n\n\nclass GetStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"get\"], Field(json_schema_extra={\"readOnly\": True})] = \"get\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    get: str\n    \"\"\"\n    The key to get\n    \"\"\"\n\n\nclass IfElseWorkflowStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"if_else\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"if_else\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    if_: Annotated[str, Field(alias=\"if\")]\n    \"\"\"\n    The condition to evaluate\n    \"\"\"\n    then: (\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | IfElseWorkflowStep\n        | SwitchStep\n        | ForeachStep\n        | ParallelStep\n        | Then\n    )\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n    else_: Annotated[\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStep\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | IfElseWorkflowStep\n        | SwitchStep\n        | ForeachStep\n        | ParallelStep\n        | Else\n        | None,\n        Field(alias=\"else\"),\n    ] = None\n    \"\"\"\n    The steps to run if the condition is false\n    \"\"\"\n\n\nclass IfElseWorkflowStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    if_: Annotated[str, Field(alias=\"if\")]\n    \"\"\"\n    The condition to evaluate\n    \"\"\"\n    then: (\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | IfElseWorkflowStepUpdateItem\n        | SwitchStepUpdateItem\n        | ForeachStepUpdateItem\n        | ParallelStepUpdateItem\n        | ThenModel\n    )\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n    else_: Annotated[\n        WaitForInputStep\n        | EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n        | ReturnStep\n        | SleepStep\n        | ErrorWorkflowStep\n        | IfElseWorkflowStepUpdateItem\n        | SwitchStepUpdateItem\n        | ForeachStepUpdateItem\n        | ParallelStepUpdateItem\n        | ElseModel\n        | None,\n        Field(alias=\"else\"),\n    ] = None\n    \"\"\"\n    The steps to run if the condition is false\n    \"\"\"\n\n\nclass ImageUrl(BaseModel):\n    \"\"\"\n    The image URL\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: str\n    \"\"\"\n    Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n    \"\"\"\n    detail: Literal[\"low\", \"high\", \"auto\"] = \"auto\"\n    \"\"\"\n    The detail level of the image\n    \"\"\"\n\n\nclass LogStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"log\"], Field(json_schema_extra={\"readOnly\": True})] = \"log\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    log: str\n    \"\"\"\n    The value to log\n    \"\"\"\n\n\nclass Main(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"map_reduce\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"map_reduce\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: EvaluateStep | ToolCallStep | PromptStep | GetStep | SetStep | LogStep | YieldStep\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass MainModel(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ParallelStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"parallel\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"parallel\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    parallel: Annotated[\n        list[\n            EvaluateStep | ToolCallStep | PromptStep | GetStep | SetStep | LogStep | YieldStep\n        ],\n        Field(max_length=100),\n    ]\n    \"\"\"\n    The steps to run in parallel. Max concurrency will depend on the platform.\n    \"\"\"\n\n\nclass ParallelStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    parallel: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStepUpdateItem\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n        ],\n        Field(max_length=100),\n    ]\n    \"\"\"\n    The steps to run in parallel. Max concurrency will depend on the platform.\n    \"\"\"\n\n\nclass PatchTaskRequest(BaseModel):\n    \"\"\"\n    Payload for patching a task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str | None, Field(max_length=255, min_length=1)] = None\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStepUpdateItem\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n            | ReturnStep\n            | SleepStep\n            | ErrorWorkflowStep\n            | WaitForInputStep\n            | IfElseWorkflowStepUpdateItem\n            | SwitchStepUpdateItem\n            | ForeachStepUpdateItem\n            | ParallelStepUpdateItem\n            | MainModel\n        ]\n        | None,\n        Field(min_length=1),\n    ] = None\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[TaskTool] = []\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass PromptItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    role: Literal[\"user\", \"assistant\", \"system\", \"tool\"]\n    \"\"\"\n    The role of the message\n    \"\"\"\n    tool_call_id: str | None = None\n    content: Annotated[\n        list[str] | list[Content | ContentModel | ContentModel1] | str | None,\n        Field(...),\n    ]\n    \"\"\"\n    The content parts of the message\n    \"\"\"\n    name: str | None = None\n    \"\"\"\n    Name\n    \"\"\"\n    tool_calls: (\n        list[\n            ChosenFunctionCall\n            | ChosenComputer20241022\n            | ChosenTextEditor20241022\n            | ChosenBash20241022\n        ]\n        | None\n    ) = []\n    \"\"\"\n    Tool calls generated by the model.\n    \"\"\"\n\n\nclass PromptStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"prompt\"], Field(json_schema_extra={\"readOnly\": True})] = \"prompt\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    prompt: list[PromptItem] | str\n    \"\"\"\n    The prompt to run\n    \"\"\"\n    tools: Literal[\"all\"] | list[ToolRef | CreateToolRequest] = \"all\"\n    \"\"\"\n    The tools to use for the prompt\n    \"\"\"\n    tool_choice: Literal[\"auto\", \"none\"] | NamedToolChoice | None = None\n    \"\"\"\n    The tool choice for the prompt\n    \"\"\"\n    settings: dict[str, Any] | None = None\n    \"\"\"\n    Settings for the prompt\n    \"\"\"\n    unwrap: StrictBool = False\n    \"\"\"\n    Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content`\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false)\n\n    If a tool call is made, the tool's output will be used as the model's input.\n    If a tool call is not made, the model's output will be used as the next step's input.\n    \"\"\"\n    disable_cache: StrictBool = False\n    \"\"\"\n    Whether to disable caching for the prompt step\n    \"\"\"\n\n\nclass PromptStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    prompt: list[PromptItem] | str\n    \"\"\"\n    The prompt to run\n    \"\"\"\n    tools: Literal[\"all\"] | list[ToolRefUpdateItem | CreateToolRequest] = \"all\"\n    \"\"\"\n    The tools to use for the prompt\n    \"\"\"\n    tool_choice: Literal[\"auto\", \"none\"] | NamedToolChoice | None = None\n    \"\"\"\n    The tool choice for the prompt\n    \"\"\"\n    settings: dict[str, Any] | None = None\n    \"\"\"\n    Settings for the prompt\n    \"\"\"\n    unwrap: StrictBool = False\n    \"\"\"\n    Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content`\n    \"\"\"\n    auto_run_tools: StrictBool = False\n    \"\"\"\n    Whether to auto-run the tool and send the tool results to the model when available.\n    (default: false)\n\n    If a tool call is made, the tool's output will be used as the model's input.\n    If a tool call is not made, the model's output will be used as the next step's input.\n    \"\"\"\n    disable_cache: StrictBool = False\n    \"\"\"\n    Whether to disable caching for the prompt step\n    \"\"\"\n\n\nclass ReturnStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"return\"], Field(json_schema_extra={\"readOnly\": True})] = \"return\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    return_: Annotated[\n        dict[str, list[str] | dict[str, str] | list[dict[str, str]] | str],\n        Field(alias=\"return\"),\n    ]\n    \"\"\"\n    The value to return\n    \"\"\"\n\n\nclass SetStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"set\"], Field(json_schema_extra={\"readOnly\": True})] = \"set\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    set: dict[str, dict[str, Any] | str]\n    \"\"\"\n    The value to set\n    \"\"\"\n\n\nclass SleepFor(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    seconds: Annotated[int, Field(ge=0, le=60)] = 0\n    \"\"\"\n    The number of seconds to sleep for\n    \"\"\"\n    minutes: Annotated[int, Field(ge=0, le=60)] = 0\n    \"\"\"\n    The number of minutes to sleep for\n    \"\"\"\n    hours: Annotated[int, Field(ge=0, le=24)] = 0\n    \"\"\"\n    The number of hours to sleep for\n    \"\"\"\n    days: Annotated[int, Field(ge=0, le=30)] = 0\n    \"\"\"\n    The number of days to sleep for\n    \"\"\"\n\n\nclass SleepStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"sleep\"], Field(json_schema_extra={\"readOnly\": True})] = \"sleep\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    sleep: SleepFor\n    \"\"\"\n    The duration to sleep for (max 31 days)\n    \"\"\"\n\n\nclass Source(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"base64\"] = \"base64\"\n    media_type: str\n    data: str\n    \"\"\"\n    A valid jinja template.\n    \"\"\"\n\n\nclass SwitchStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"switch\"], Field(json_schema_extra={\"readOnly\": True})] = \"switch\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    switch: Annotated[list[CaseThen], Field(min_length=1)]\n    \"\"\"\n    The cond tree\n    \"\"\"\n\n\nclass SwitchStepUpdateItem(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    switch: Annotated[list[CaseThenUpdateItem], Field(min_length=1)]\n    \"\"\"\n    The cond tree\n    \"\"\"\n\n\nclass Task(BaseModel):\n    \"\"\"\n    Object describing a Task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStep\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n            | ReturnStep\n            | SleepStep\n            | ErrorWorkflowStep\n            | WaitForInputStep\n            | IfElseWorkflowStep\n            | SwitchStep\n            | ForeachStep\n            | ParallelStep\n            | Main\n        ],\n        Field(min_length=1),\n    ]\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[TaskTool] = []\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass TaskTool(CreateToolRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    inherited: Annotated[StrictBool, Field(json_schema_extra={\"readOnly\": True})] = False\n    \"\"\"\n    Read-only: Whether the tool was inherited or not. Only applies within tasks.\n    \"\"\"\n\n\nclass Then(BaseModel):\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"map_reduce\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"map_reduce\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: EvaluateStep | ToolCallStep | PromptStep | GetStep | SetStep | LogStep | YieldStep\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ThenModel(BaseModel):\n    \"\"\"\n    The steps to run if the condition is true\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    kind_: str | None = None\n    \"\"\"\n    Discriminator property for BaseWorkflowStep.\n    \"\"\"\n    over: str\n    \"\"\"\n    The variable to iterate over\n    \"\"\"\n    map: (\n        EvaluateStep\n        | ToolCallStep\n        | PromptStepUpdateItem\n        | GetStep\n        | SetStep\n        | LogStep\n        | YieldStep\n    )\n    \"\"\"\n    The steps to run for each iteration\n    \"\"\"\n    reduce: str | None = None\n    \"\"\"\n    The expression to reduce the results.\n    If not provided, the results are collected and returned as a list.\n    A special parameter named `results` is the accumulator and `_` is the current value.\n    \"\"\"\n    initial: Any = []\n    \"\"\"\n    The initial value of the reduce expression\n    \"\"\"\n    parallelism: Annotated[int | None, Field(ge=1, le=100)] = None\n    \"\"\"\n    Whether to run the reduce expression in parallel and how many items to run in each batch\n    \"\"\"\n\n\nclass ToolCallStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"tool_call\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"tool_call\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    tool: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    The tool to run\n    \"\"\"\n    arguments: dict[str, Any] | Literal[\"_\"] = \"_\"\n    \"\"\"\n    The input parameters for the tool (defaults to last step output)\n    \"\"\"\n\n\nclass ToolRef(BaseModel):\n    \"\"\"\n    Reference to a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    ref: ToolRefById | ToolRefByName\n\n\nclass ToolRefById(BaseModel):\n    \"\"\"\n    Reference to a tool by id\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n\n\nclass ToolRefByName(BaseModel):\n    \"\"\"\n    Reference to a tool by name\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str | None, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")] = None\n    \"\"\"\n    Valid python identifier names\n    \"\"\"\n\n\nclass ToolRefUpdateItem(BaseModel):\n    \"\"\"\n    Reference to a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n\n\nclass UpdateTaskRequest(BaseModel):\n    \"\"\"\n    Payload for updating a task\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=255, min_length=1)]\n    \"\"\"\n    The name of the task.\n    \"\"\"\n    canonical_name: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    The canonical name of the task.\n    \"\"\"\n    description: str = \"\"\n    \"\"\"\n    The description of the task.\n    \"\"\"\n    main: Annotated[\n        list[\n            EvaluateStep\n            | ToolCallStep\n            | PromptStep\n            | GetStep\n            | SetStep\n            | LogStep\n            | YieldStep\n            | ReturnStep\n            | SleepStep\n            | ErrorWorkflowStep\n            | WaitForInputStep\n            | IfElseWorkflowStep\n            | SwitchStep\n            | ForeachStep\n            | ParallelStep\n            | Main\n        ],\n        Field(min_length=1),\n    ]\n    \"\"\"\n    The entrypoint of the task.\n    \"\"\"\n    input_schema: dict[str, Any] | None = None\n    \"\"\"\n    The schema for the input to the task. `null` means all inputs are valid.\n    \"\"\"\n    tools: list[TaskTool] = []\n    \"\"\"\n    Tools defined specifically for this task not included in the Agent itself.\n    \"\"\"\n    inherit_tools: StrictBool = False\n    \"\"\"\n    Whether to inherit tools from the parent agent or not. Defaults to false.\n    \"\"\"\n    metadata: dict[str, Any] | None = None\n\n\nclass WaitForInputInfo(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    info: dict[str, list[str] | dict[str, str] | list[dict[str, str]] | str]\n    \"\"\"\n    Any additional info or data\n    \"\"\"\n\n\nclass WaitForInputStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"wait_for_input\"], Field(json_schema_extra={\"readOnly\": True})] = (\n        \"wait_for_input\"\n    )\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    wait_for_input: WaitForInputInfo\n    \"\"\"\n    Any additional info or data\n    \"\"\"\n\n\nclass YieldStep(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    kind_: Annotated[Literal[\"yield\"], Field(json_schema_extra={\"readOnly\": True})] = \"yield\"\n    \"\"\"\n    The kind of step\n    \"\"\"\n    label: Annotated[str | None, Field(max_length=120, pattern=\"^[^0-9]|^[0-9]+[^0-9].*$\")] = (\n        None\n    )\n    \"\"\"\n    The label of this step for referencing it from other steps\n    \"\"\"\n    workflow: str\n    \"\"\"\n    The subworkflow to run.\n    VALIDATION: Should resolve to a defined subworkflow.\n    \"\"\"\n    arguments: (\n        dict[str, list[str] | dict[str, str] | list[dict[str, str]] | str] | Literal[\"_\"]\n    ) = \"_\"\n    \"\"\"\n    The input parameters for the subworkflow (defaults to last step output)\n    \"\"\"\n\n\nIfElseWorkflowStep.model_rebuild()\nIfElseWorkflowStepUpdateItem.model_rebuild()\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Tools.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any, Literal\nfrom uuid import UUID\n\nfrom pydantic import (\n    AnyUrl,\n    AwareDatetime,\n    BaseModel,\n    ConfigDict,\n    Field,\n    StrictBool,\n)\n\n\nclass AlgoliaSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Algolia Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    index_name: str\n    \"\"\"\n    The index name to search\n    \"\"\"\n    query: str\n    \"\"\"\n    The query to search for\n    \"\"\"\n    attributes_to_retrieve: list[str] | None = None\n    \"\"\"\n    Optional attributes to retrieve\n    \"\"\"\n    hits_per_page: Annotated[int, Field(ge=1, le=1000)] = 10\n    \"\"\"\n    Maximum number of hits to return\n    \"\"\"\n\n\nclass AlgoliaSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Algolia Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    index_name: str | None = None\n    \"\"\"\n    The index name to search\n    \"\"\"\n    query: str | None = None\n    \"\"\"\n    The query to search for\n    \"\"\"\n    attributes_to_retrieve: list[str] | None = None\n    \"\"\"\n    Optional attributes to retrieve\n    \"\"\"\n    hits_per_page: Annotated[int, Field(ge=1, le=1000)] = 10\n    \"\"\"\n    Maximum number of hits to return\n    \"\"\"\n\n\nclass AlgoliaSetup(BaseModel):\n    \"\"\"\n    Integration definition for Algolia\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    algolia_application_id: str\n    \"\"\"\n    The Algolia Application ID\n    \"\"\"\n    algolia_api_key: str\n    \"\"\"\n    The Algolia API Key\n    \"\"\"\n\n\nclass AlgoliaSetupUpdate(BaseModel):\n    \"\"\"\n    Integration definition for Algolia\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    algolia_application_id: str | None = None\n    \"\"\"\n    The Algolia Application ID\n    \"\"\"\n    algolia_api_key: str | None = None\n    \"\"\"\n    The Algolia API Key\n    \"\"\"\n\n\nclass ApiCallDef(BaseModel):\n    \"\"\"\n    API call definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\n        \"GET\", \"POST\", \"PUT\", \"DELETE\", \"PATCH\", \"HEAD\", \"OPTIONS\", \"CONNECT\", \"TRACE\"\n    ]\n    \"\"\"\n    The HTTP method to use\n    \"\"\"\n    url: AnyUrl\n    \"\"\"\n    The URL to call\n    \"\"\"\n    schema_: Annotated[dict[str, Any] | None, Field(alias=\"schema\")] = None\n    \"\"\"\n    The schema of the response\n    \"\"\"\n    headers: dict[str, str] | None = None\n    \"\"\"\n    The headers to send with the request\n    \"\"\"\n    secrets: dict[str, SecretRef] | None = None\n    \"\"\"\n    Secret references to use in templates (available only at setup time, not during execution)\n    \"\"\"\n    content: str | None = None\n    \"\"\"\n    The content as base64 to send with the request\n    \"\"\"\n    data: dict[str, Any] | None = None\n    \"\"\"\n    The data to send as form data\n    \"\"\"\n    files: dict[str, Any] | None = None\n    \"\"\"\n    The data to send as files data\n    \"\"\"\n    json_: Annotated[dict[str, Any] | None, Field(alias=\"json\")] = None\n    \"\"\"\n    JSON body to send with the request\n    \"\"\"\n    cookies: dict[str, str] | None = None\n    \"\"\"\n    Cookies\n    \"\"\"\n    params: str | dict[str, Any] | None = None\n    \"\"\"\n    The parameters to send with the request\n    \"\"\"\n    params_schema: ParameterSchema | None = None\n    \"\"\"\n    The schema of the parameters\n    \"\"\"\n    follow_redirects: StrictBool | None = None\n    \"\"\"\n    Follow redirects\n    \"\"\"\n    timeout: int | None = None\n    \"\"\"\n    The timeout for the request\n    \"\"\"\n    include_response_content: StrictBool = True\n    \"\"\"\n    Whether to include the content in the response\n    \"\"\"\n\n\nclass ApiCallDefUpdate(BaseModel):\n    \"\"\"\n    API call definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: (\n        Literal[\n            \"GET\",\n            \"POST\",\n            \"PUT\",\n            \"DELETE\",\n            \"PATCH\",\n            \"HEAD\",\n            \"OPTIONS\",\n            \"CONNECT\",\n            \"TRACE\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The HTTP method to use\n    \"\"\"\n    url: AnyUrl | None = None\n    \"\"\"\n    The URL to call\n    \"\"\"\n    schema_: Annotated[dict[str, Any] | None, Field(alias=\"schema\")] = None\n    \"\"\"\n    The schema of the response\n    \"\"\"\n    headers: dict[str, str] | None = None\n    \"\"\"\n    The headers to send with the request\n    \"\"\"\n    secrets: dict[str, SecretRefUpdate] | None = None\n    \"\"\"\n    Secret references to use in templates (available only at setup time, not during execution)\n    \"\"\"\n    content: str | None = None\n    \"\"\"\n    The content as base64 to send with the request\n    \"\"\"\n    data: dict[str, Any] | None = None\n    \"\"\"\n    The data to send as form data\n    \"\"\"\n    files: dict[str, Any] | None = None\n    \"\"\"\n    The data to send as files data\n    \"\"\"\n    json_: Annotated[dict[str, Any] | None, Field(alias=\"json\")] = None\n    \"\"\"\n    JSON body to send with the request\n    \"\"\"\n    cookies: dict[str, str] | None = None\n    \"\"\"\n    Cookies\n    \"\"\"\n    params: str | dict[str, Any] | None = None\n    \"\"\"\n    The parameters to send with the request\n    \"\"\"\n    params_schema: ParameterSchemaUpdate | None = None\n    \"\"\"\n    The schema of the parameters\n    \"\"\"\n    follow_redirects: StrictBool | None = None\n    \"\"\"\n    Follow redirects\n    \"\"\"\n    timeout: int | None = None\n    \"\"\"\n    The timeout for the request\n    \"\"\"\n    include_response_content: StrictBool = True\n    \"\"\"\n    Whether to include the content in the response\n    \"\"\"\n\n\nclass ArxivSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Arxiv Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str\n    \"\"\"\n    The search query for searching with Arxiv\n    \"\"\"\n    id_list: list[str] | None = None\n    \"\"\"\n    The list of Arxiv IDs to search with\n    \"\"\"\n    max_results: Annotated[int, Field(ge=1, le=300000)] = 5\n    \"\"\"\n    The maximum number of results to return\n    \"\"\"\n    download_pdf: StrictBool = False\n    \"\"\"\n    The download the pdf of the results\n    \"\"\"\n    sort_by: Literal[\"relevance\", \"lastUpdatedDate\", \"submittedDate\"] = \"relevance\"\n    \"\"\"\n    The sort criterion for the results\n    \"\"\"\n    sort_order: Literal[\"ascending\", \"descending\"] = \"descending\"\n    \"\"\"\n    The sort order for the results\n    \"\"\"\n\n\nclass ArxivSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Arxiv Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str | None = None\n    \"\"\"\n    The search query for searching with Arxiv\n    \"\"\"\n    id_list: list[str] | None = None\n    \"\"\"\n    The list of Arxiv IDs to search with\n    \"\"\"\n    max_results: Annotated[int, Field(ge=1, le=300000)] = 5\n    \"\"\"\n    The maximum number of results to return\n    \"\"\"\n    download_pdf: StrictBool = False\n    \"\"\"\n    The download the pdf of the results\n    \"\"\"\n    sort_by: Literal[\"relevance\", \"lastUpdatedDate\", \"submittedDate\"] = \"relevance\"\n    \"\"\"\n    The sort criterion for the results\n    \"\"\"\n    sort_order: Literal[\"ascending\", \"descending\"] = \"descending\"\n    \"\"\"\n    The sort order for the results\n    \"\"\"\n\n\nclass BaseChosenToolCall(BaseModel):\n    \"\"\"\n    The response tool value generated by the model\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)\n    \"\"\"\n    function: FunctionCallOption | None = None\n    integration: Any | None = None\n    system: Any | None = None\n    api_call: Any | None = None\n    computer_20241022: ChosenComputer20241022 | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: ChosenTextEditor20241022 | None = None\n    bash_20241022: ChosenBash20241022 | None = None\n    id: Annotated[str | None, Field(json_schema_extra={\"readOnly\": True})] = None\n\n\nclass BaseIntegrationDef(BaseModel):\n    \"\"\"\n    Integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\n        \"dummy\",\n        \"weather\",\n        \"wikipedia\",\n        \"spider\",\n        \"brave\",\n        \"browserbase\",\n        \"email\",\n        \"mailgun\",\n        \"remote_browser\",\n        \"llama_parse\",\n        \"ffmpeg\",\n        \"cloudinary\",\n        \"arxiv\",\n        \"unstructured\",\n        \"algolia\",\n        \"mcp\",\n        \"google_sheets\",\n    ]\n    \"\"\"\n    The provider of the integration\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters the integration accepts\n    \"\"\"\n    arguments: Any | None = None\n    \"\"\"\n    The arguments to pre-apply to the integration call\n    \"\"\"\n\n\nclass BaseIntegrationDefUpdate(BaseModel):\n    \"\"\"\n    Integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: (\n        Literal[\n            \"dummy\",\n            \"weather\",\n            \"wikipedia\",\n            \"spider\",\n            \"brave\",\n            \"browserbase\",\n            \"email\",\n            \"mailgun\",\n            \"remote_browser\",\n            \"llama_parse\",\n            \"ffmpeg\",\n            \"cloudinary\",\n            \"arxiv\",\n            \"unstructured\",\n            \"algolia\",\n            \"mcp\",\n            \"google_sheets\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The provider of the integration\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters the integration accepts\n    \"\"\"\n    arguments: Any | None = None\n    \"\"\"\n    The arguments to pre-apply to the integration call\n    \"\"\"\n\n\nclass Bash20241022Def(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"bash_20241022\"] = \"bash_20241022\"\n    name: str = \"bash\"\n\n\nBash20241022DefUpdate = Bash20241022Def\n\n\nclass BraveIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Brave integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"brave\"] = \"brave\"\n    \"\"\"\n    The provider must be \"brave\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: BraveSearchSetup | None = None\n    \"\"\"\n    The setup parameters for Brave\n    \"\"\"\n    arguments: BraveSearchArguments | None = None\n    \"\"\"\n    The arguments for Brave Search\n    \"\"\"\n\n\nclass BraveIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Brave integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"brave\"] = \"brave\"\n    \"\"\"\n    The provider must be \"brave\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: BraveSearchSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Brave\n    \"\"\"\n    arguments: BraveSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Brave Search\n    \"\"\"\n\n\nclass BraveSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Brave Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str\n    \"\"\"\n    The search query for searching with Brave\n    \"\"\"\n\n\nclass BraveSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Brave Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str | None = None\n    \"\"\"\n    The search query for searching with Brave\n    \"\"\"\n\n\nclass BraveSearchSetup(BaseModel):\n    \"\"\"\n    Integration definition for Brave Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    brave_api_key: str\n    \"\"\"\n    The api key for Brave Search\n    \"\"\"\n\n\nclass BraveSearchSetupUpdate(BaseModel):\n    \"\"\"\n    Integration definition for Brave Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    brave_api_key: str | None = None\n    \"\"\"\n    The api key for Brave Search\n    \"\"\"\n\n\nclass BrowserbaseCompleteSessionArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    status: Literal[\"REQUEST_RELEASE\"] = \"REQUEST_RELEASE\"\n\n\nclass BrowserbaseCompleteSessionArgumentsUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n    status: Literal[\"REQUEST_RELEASE\"] = \"REQUEST_RELEASE\"\n\n\nclass BrowserbaseContextArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    project_id: Annotated[str, Field(alias=\"projectId\")]\n    \"\"\"\n    The Project ID. Can be found in Settings.\n    \"\"\"\n\n\nclass BrowserbaseContextArgumentsUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    project_id: Annotated[str | None, Field(alias=\"projectId\")] = None\n    \"\"\"\n    The Project ID. Can be found in Settings.\n    \"\"\"\n\n\nclass BrowserbaseCreateSessionArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    project_id: Annotated[str | None, Field(alias=\"projectId\")] = None\n    \"\"\"\n    The Project ID. Can be found in Settings.\n    \"\"\"\n    extension_id: Annotated[str | None, Field(alias=\"extensionId\")] = None\n    \"\"\"\n    The installed Extension ID. See Install Extension from GitHub.\n    \"\"\"\n    browser_settings: Annotated[dict[str, Any], Field(alias=\"browserSettings\")] = {}\n    \"\"\"\n    Browser settings\n    \"\"\"\n    timeout: int = 3600\n    \"\"\"\n    Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout.\n    \"\"\"\n    keep_alive: Annotated[StrictBool, Field(alias=\"keepAlive\")] = False\n    \"\"\"\n    Set to true to keep the session alive even after disconnections. This is available on the Startup plan only.\n    \"\"\"\n    proxies: StrictBool | list[dict[str, Any]] = False\n    \"\"\"\n    Proxy configuration. Can be true for default proxy, or an array of proxy configurations.\n    \"\"\"\n\n\nclass BrowserbaseExtensionArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    repository_name: Annotated[str, Field(alias=\"repositoryName\")]\n    \"\"\"\n    The GitHub repository name.\n    \"\"\"\n    ref: str | None = None\n    \"\"\"\n    Ref to install from a branch or tag.\n    \"\"\"\n\n\nclass BrowserbaseExtensionArgumentsUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    repository_name: Annotated[str | None, Field(alias=\"repositoryName\")] = None\n    \"\"\"\n    The GitHub repository name.\n    \"\"\"\n    ref: str | None = None\n    \"\"\"\n    Ref to install from a branch or tag.\n    \"\"\"\n\n\nclass BrowserbaseGetSessionArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n\n\nclass BrowserbaseGetSessionArgumentsUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str | None = None\n\n\nBrowserbaseGetSessionLiveUrlsArguments = BrowserbaseGetSessionArguments\n\n\nBrowserbaseGetSessionLiveUrlsArgumentsUpdate = BrowserbaseGetSessionArgumentsUpdate\n\n\nclass BrowserbaseListSessionsArguments(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    status: Literal[\"RUNNING\", \"ERROR\", \"TIMED_OUT\", \"COMPLETED\"] | None = None\n    \"\"\"\n    The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED)\n    \"\"\"\n\n\nclass BrowserbaseSetup(BaseModel):\n    \"\"\"\n    The setup parameters for the browserbase integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    api_key: str\n    \"\"\"\n    API key for the browserbase integration\n    \"\"\"\n    project_id: str\n    \"\"\"\n    The project ID. Can be found in Settings.\n    \"\"\"\n    api_url: str | None = None\n    \"\"\"\n    The API URL. Defaults to https://www.browserbase.com\n    \"\"\"\n    connect_url: str | None = None\n    \"\"\"\n    The connect URL. Defaults to wss://connect.browserbase.com\n    \"\"\"\n\n\nclass BrowserbaseSetupUpdate(BaseModel):\n    \"\"\"\n    The setup parameters for the browserbase integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    api_key: str | None = None\n    \"\"\"\n    API key for the browserbase integration\n    \"\"\"\n    project_id: str | None = None\n    \"\"\"\n    The project ID. Can be found in Settings.\n    \"\"\"\n    api_url: str | None = None\n    \"\"\"\n    The API URL. Defaults to https://www.browserbase.com\n    \"\"\"\n    connect_url: str | None = None\n    \"\"\"\n    The connect URL. Defaults to wss://connect.browserbase.com\n    \"\"\"\n\n\nclass ChosenBash20241022(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    command: str | None = None\n    \"\"\"\n    The bash command to run\n    \"\"\"\n    restart: StrictBool = False\n    \"\"\"\n    Whether to restart the tool\n    \"\"\"\n\n\nclass ChosenComputer20241022(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    action: Literal[\n        \"key\",\n        \"type\",\n        \"cursor_position\",\n        \"mouse_move\",\n        \"left_click\",\n        \"right_click\",\n        \"middle_click\",\n        \"double_click\",\n        \"screenshot\",\n    ]\n    \"\"\"\n    The action to perform\n    \"\"\"\n    text: str | None = None\n    \"\"\"\n    The text to type\n    \"\"\"\n    coordinate: list[int] | None = None\n    \"\"\"\n    The (x, y) pixel coordinate to move the cursor to\n    \"\"\"\n\n\nclass ChosenFunctionCall(BaseChosenToolCall):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"function\"] = \"function\"\n    function: FunctionCallOption\n    \"\"\"\n    The function to call\n    \"\"\"\n\n\nclass ChosenTextEditor20241022(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    command: Literal[\"str_replace\", \"insert\", \"view\", \"undo_edit\"]\n    \"\"\"\n    The command to run\n    \"\"\"\n    path: str\n    \"\"\"\n    The path to the file\n    \"\"\"\n    file_text: str | None = None\n    \"\"\"\n    The content of the file to be created\n    \"\"\"\n    insert_line: int | None = None\n    \"\"\"\n    The line to insert the new string after\n    \"\"\"\n    new_str: str | None = None\n    \"\"\"\n    The new string to insert\n    \"\"\"\n    old_str: str | None = None\n    \"\"\"\n    The string in the file to replace\n    \"\"\"\n    view_range: list[int] | None = None\n    \"\"\"\n    The line range to view\n    \"\"\"\n\n\nclass CloudinaryEditArguments(BaseModel):\n    \"\"\"\n    Arguments for Cloudinary media edit\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    public_id: str\n    \"\"\"\n    The file Public ID in Cloudinary\n    \"\"\"\n    transformation: list[dict[str, Any]]\n    \"\"\"\n    The transformation to apply to the file\n    \"\"\"\n    return_base64: StrictBool = False\n    \"\"\"\n    Return base64 encoded file\n    \"\"\"\n\n\nclass CloudinaryEditArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Cloudinary media edit\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    public_id: str | None = None\n    \"\"\"\n    The file Public ID in Cloudinary\n    \"\"\"\n    transformation: list[dict[str, Any]] | None = None\n    \"\"\"\n    The transformation to apply to the file\n    \"\"\"\n    return_base64: StrictBool = False\n    \"\"\"\n    Return base64 encoded file\n    \"\"\"\n\n\nclass CloudinarySetup(BaseModel):\n    \"\"\"\n    Setup parameters for Cloudinary integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cloudinary_api_key: str\n    \"\"\"\n    The API key for Cloudinary\n    \"\"\"\n    cloudinary_api_secret: str\n    \"\"\"\n    The API secret for Cloudinary\n    \"\"\"\n    cloudinary_cloud_name: str\n    \"\"\"\n    The Cloud name for Cloudinary\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Additional parameters for the Cloudinary API\n    \"\"\"\n\n\nclass CloudinarySetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Cloudinary integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cloudinary_api_key: str | None = None\n    \"\"\"\n    The API key for Cloudinary\n    \"\"\"\n    cloudinary_api_secret: str | None = None\n    \"\"\"\n    The API secret for Cloudinary\n    \"\"\"\n    cloudinary_cloud_name: str | None = None\n    \"\"\"\n    The Cloud name for Cloudinary\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Additional parameters for the Cloudinary API\n    \"\"\"\n\n\nclass CloudinaryUploadArguments(BaseModel):\n    \"\"\"\n    Arguments for Cloudinary media upload\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    file: str\n    \"\"\"\n    The URL of the file upload\n    \"\"\"\n    return_base64: StrictBool = False\n    \"\"\"\n    Return base64 encoded file\n    \"\"\"\n    public_id: str | None = None\n    \"\"\"\n    Optional public ID for the uploaded file\n    \"\"\"\n    upload_params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n\n\nclass CloudinaryUploadArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Cloudinary media upload\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    file: str | None = None\n    \"\"\"\n    The URL of the file upload\n    \"\"\"\n    return_base64: StrictBool = False\n    \"\"\"\n    Return base64 encoded file\n    \"\"\"\n    public_id: str | None = None\n    \"\"\"\n    Optional public ID for the uploaded file\n    \"\"\"\n    upload_params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n\n\nclass Computer20241022Def(BaseModel):\n    \"\"\"\n    Anthropic new tools\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"computer_20241022\"] = \"computer_20241022\"\n    name: str = \"computer\"\n    display_width_px: Annotated[int, Field(ge=600)] = 1024\n    \"\"\"\n    The display width in pixels\n    \"\"\"\n    display_height_px: Annotated[int, Field(ge=400)] = 768\n    \"\"\"\n    The display height in pixels\n    \"\"\"\n    display_number: Annotated[int, Field(ge=1, le=10)] = 1\n    \"\"\"\n    The display number to use\n    \"\"\"\n\n\nComputer20241022DefUpdate = Computer20241022Def\n\n\nclass CreateToolRequest(BaseModel):\n    \"\"\"\n    Payload for creating a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: FunctionDef | None = None\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (\n        DummyIntegrationDef\n        | BraveIntegrationDef\n        | EmailIntegrationDef\n        | SpiderIntegrationDef\n        | WikipediaIntegrationDef\n        | WeatherIntegrationDef\n        | MailgunIntegrationDef\n        | BrowserbaseContextIntegrationDef\n        | BrowserbaseExtensionIntegrationDef\n        | BrowserbaseListSessionsIntegrationDef\n        | BrowserbaseCreateSessionIntegrationDef\n        | BrowserbaseGetSessionIntegrationDef\n        | BrowserbaseCompleteSessionIntegrationDef\n        | BrowserbaseGetSessionLiveUrlsIntegrationDef\n        | RemoteBrowserIntegrationDef\n        | LlamaParseIntegrationDef\n        | FfmpegIntegrationDef\n        | CloudinaryUploadIntegrationDef\n        | CloudinaryEditIntegrationDef\n        | ArxivIntegrationDef\n        | UnstructuredIntegrationDef\n        | AlgoliaIntegrationDef\n        | McpIntegrationDef\n        | GoogleSheetsIntegrationDef\n        | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: SystemDef | None = None\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: ApiCallDef | None = None\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Computer20241022Def | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: TextEditor20241022Def | None = None\n    bash_20241022: Bash20241022Def | None = None\n\n\nclass DummyIntegrationDef(BaseIntegrationDef):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"dummy\"] = \"dummy\"\n\n\nclass DummyIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"dummy\"] = \"dummy\"\n\n\nclass EmailArguments(BaseModel):\n    \"\"\"\n    Arguments for Email sending\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    to: str\n    \"\"\"\n    The email address to send the email to\n    \"\"\"\n    from_: Annotated[str, Field(alias=\"from\")]\n    \"\"\"\n    The email address to send the email from\n    \"\"\"\n    subject: str\n    \"\"\"\n    The subject of the email\n    \"\"\"\n    body: str\n    \"\"\"\n    The body of the email\n    \"\"\"\n\n\nclass EmailArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Email sending\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    to: str | None = None\n    \"\"\"\n    The email address to send the email to\n    \"\"\"\n    from_: Annotated[str | None, Field(alias=\"from\")] = None\n    \"\"\"\n    The email address to send the email from\n    \"\"\"\n    subject: str | None = None\n    \"\"\"\n    The subject of the email\n    \"\"\"\n    body: str | None = None\n    \"\"\"\n    The body of the email\n    \"\"\"\n\n\nclass EmailIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Email integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"email\"] = \"email\"\n    \"\"\"\n    The provider must be \"email\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: EmailSetup | None = None\n    \"\"\"\n    The setup parameters for Email\n    \"\"\"\n    arguments: EmailArguments | None = None\n    \"\"\"\n    The arguments for Email sending\n    \"\"\"\n\n\nclass EmailIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Email integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"email\"] = \"email\"\n    \"\"\"\n    The provider must be \"email\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: EmailSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Email\n    \"\"\"\n    arguments: EmailArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Email sending\n    \"\"\"\n\n\nclass EmailSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Email integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    host: str\n    \"\"\"\n    The host of the email server\n    \"\"\"\n    port: int\n    \"\"\"\n    The port of the email server\n    \"\"\"\n    user: str\n    \"\"\"\n    The username of the email server\n    \"\"\"\n    password: str\n    \"\"\"\n    The password of the email server\n    \"\"\"\n\n\nclass EmailSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Email integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    host: str | None = None\n    \"\"\"\n    The host of the email server\n    \"\"\"\n    port: int | None = None\n    \"\"\"\n    The port of the email server\n    \"\"\"\n    user: str | None = None\n    \"\"\"\n    The username of the email server\n    \"\"\"\n    password: str | None = None\n    \"\"\"\n    The password of the email server\n    \"\"\"\n\n\nclass FfmpegIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Ffmpeg integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"ffmpeg\"] = \"ffmpeg\"\n    \"\"\"\n    The provider must be \"ffmpeg\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Ffmpeg\n    \"\"\"\n    arguments: FfmpegSearchArguments | None = None\n    \"\"\"\n    The arguments for Ffmpeg Search\n    \"\"\"\n\n\nclass FfmpegIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Ffmpeg integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"ffmpeg\"] = \"ffmpeg\"\n    \"\"\"\n    The provider must be \"ffmpeg\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Ffmpeg\n    \"\"\"\n    arguments: FfmpegSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Ffmpeg Search\n    \"\"\"\n\n\nclass FfmpegSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Ffmpeg CMD\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cmd: str\n    \"\"\"\n    The bash command string\n    \"\"\"\n    file: str | list[str] | None = None\n    \"\"\"\n    The base64 string of the file\n    \"\"\"\n\n\nclass FfmpegSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Ffmpeg CMD\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    cmd: str | None = None\n    \"\"\"\n    The bash command string\n    \"\"\"\n    file: str | list[str] | None = None\n    \"\"\"\n    The base64 string of the file\n    \"\"\"\n\n\nclass FunctionCallOption(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: str\n    \"\"\"\n    The name of the function\n    \"\"\"\n    arguments: str | None = None\n    \"\"\"\n    The parameters to pass to the function\n    \"\"\"\n\n\nclass FunctionDef(BaseModel):\n    \"\"\"\n    Function definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Any | None = None\n    \"\"\"\n    DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons.\n    \"\"\"\n    description: Any | None = None\n    \"\"\"\n    DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons.\n    \"\"\"\n    parameters: dict[str, Any] | None = None\n    \"\"\"\n    The parameters the function accepts\n    \"\"\"\n\n\nclass GoogleSheetsAppendArguments(BaseModel):\n    \"\"\"\n    Arguments for appending values to a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to append to\n    \"\"\"\n    range: str\n    \"\"\"\n    The A1 notation of the range to start appending from\n    \"\"\"\n    values: list[list]\n    \"\"\"\n    The values to append (2D array)\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    insert_data_option: Literal[\"OVERWRITE\", \"INSERT_ROWS\"] = \"INSERT_ROWS\"\n    \"\"\"\n    How the input data should be inserted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsAppendArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for appending values to a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to append to\n    \"\"\"\n    range: str | None = None\n    \"\"\"\n    The A1 notation of the range to start appending from\n    \"\"\"\n    values: list[list] | None = None\n    \"\"\"\n    The values to append (2D array)\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    insert_data_option: Literal[\"OVERWRITE\", \"INSERT_ROWS\"] = \"INSERT_ROWS\"\n    \"\"\"\n    How the input data should be inserted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsBatchReadArguments(BaseModel):\n    \"\"\"\n    Arguments for batch reading values from multiple ranges\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to read from\n    \"\"\"\n    ranges: list[str]\n    \"\"\"\n    The A1 notation of the ranges to read\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension that results should use\n    \"\"\"\n    value_render_option: Literal[\"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\"] = (\n        \"FORMATTED_VALUE\"\n    )\n    \"\"\"\n    How values should be represented in the output\n    \"\"\"\n    date_time_render_option: Literal[\"SERIAL_NUMBER\", \"FORMATTED_STRING\"] = \"FORMATTED_STRING\"\n    \"\"\"\n    How dates, times, and durations should be represented\n    \"\"\"\n\n\nclass GoogleSheetsBatchReadArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for batch reading values from multiple ranges\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to read from\n    \"\"\"\n    ranges: list[str] | None = None\n    \"\"\"\n    The A1 notation of the ranges to read\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension that results should use\n    \"\"\"\n    value_render_option: Literal[\"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\"] = (\n        \"FORMATTED_VALUE\"\n    )\n    \"\"\"\n    How values should be represented in the output\n    \"\"\"\n    date_time_render_option: Literal[\"SERIAL_NUMBER\", \"FORMATTED_STRING\"] = \"FORMATTED_STRING\"\n    \"\"\"\n    How dates, times, and durations should be represented\n    \"\"\"\n\n\nclass GoogleSheetsBatchWriteArguments(BaseModel):\n    \"\"\"\n    Arguments for batch updating values in multiple ranges\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to write to\n    \"\"\"\n    data: list[GoogleSheetsValueRange]\n    \"\"\"\n    The data to write to each range\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsBatchWriteArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for batch updating values in multiple ranges\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to write to\n    \"\"\"\n    data: list[GoogleSheetsValueRange] | None = None\n    \"\"\"\n    The data to write to each range\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsClearArguments(BaseModel):\n    \"\"\"\n    Arguments for clearing values from a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to clear values from\n    \"\"\"\n    range: str\n    \"\"\"\n    The A1 notation of the range to clear\n    \"\"\"\n\n\nclass GoogleSheetsClearArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for clearing values from a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to clear values from\n    \"\"\"\n    range: str | None = None\n    \"\"\"\n    The A1 notation of the range to clear\n    \"\"\"\n\n\nclass GoogleSheetsIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Google Sheets integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"google_sheets\"] = \"google_sheets\"\n    \"\"\"\n    The provider must be \"google_sheets\"\n    \"\"\"\n    method: (\n        Literal[\n            \"read_values\",\n            \"write_values\",\n            \"append_values\",\n            \"clear_values\",\n            \"batch_read\",\n            \"batch_write\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: GoogleSheetsSetup | None = None\n    \"\"\"\n    The setup parameters for Google Sheets\n    \"\"\"\n    arguments: (\n        GoogleSheetsReadArguments\n        | GoogleSheetsWriteArguments\n        | GoogleSheetsAppendArguments\n        | GoogleSheetsClearArguments\n        | GoogleSheetsBatchReadArguments\n        | GoogleSheetsBatchWriteArguments\n        | None\n    ) = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass GoogleSheetsIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Google Sheets integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"google_sheets\"] = \"google_sheets\"\n    \"\"\"\n    The provider must be \"google_sheets\"\n    \"\"\"\n    method: (\n        Literal[\n            \"read_values\",\n            \"write_values\",\n            \"append_values\",\n            \"clear_values\",\n            \"batch_read\",\n            \"batch_write\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: GoogleSheetsSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Google Sheets\n    \"\"\"\n    arguments: (\n        GoogleSheetsReadArgumentsUpdate\n        | GoogleSheetsWriteArgumentsUpdate\n        | GoogleSheetsAppendArgumentsUpdate\n        | GoogleSheetsClearArgumentsUpdate\n        | GoogleSheetsBatchReadArgumentsUpdate\n        | GoogleSheetsBatchWriteArgumentsUpdate\n        | None\n    ) = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass GoogleSheetsReadArguments(BaseModel):\n    \"\"\"\n    Arguments for reading values from a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to read from\n    \"\"\"\n    range: str\n    \"\"\"\n    The A1 notation of the range to read\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension that results should use\n    \"\"\"\n    value_render_option: Literal[\"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\"] = (\n        \"FORMATTED_VALUE\"\n    )\n    \"\"\"\n    How values should be represented in the output\n    \"\"\"\n    date_time_render_option: Literal[\"SERIAL_NUMBER\", \"FORMATTED_STRING\"] = \"FORMATTED_STRING\"\n    \"\"\"\n    How dates, times, and durations should be represented\n    \"\"\"\n\n\nclass GoogleSheetsReadArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for reading values from a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to read from\n    \"\"\"\n    range: str | None = None\n    \"\"\"\n    The A1 notation of the range to read\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension that results should use\n    \"\"\"\n    value_render_option: Literal[\"FORMATTED_VALUE\", \"UNFORMATTED_VALUE\", \"FORMULA\"] = (\n        \"FORMATTED_VALUE\"\n    )\n    \"\"\"\n    How values should be represented in the output\n    \"\"\"\n    date_time_render_option: Literal[\"SERIAL_NUMBER\", \"FORMATTED_STRING\"] = \"FORMATTED_STRING\"\n    \"\"\"\n    How dates, times, and durations should be represented\n    \"\"\"\n\n\nclass GoogleSheetsSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Google Sheets integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    use_julep_service: StrictBool\n    \"\"\"\n    Whether to use Julep's built-in Google Sheets service account.\n    If true, no credentials needed. If false, service_account_json is required.\n    \"\"\"\n    service_account_json: str | None = None\n    \"\"\"\n    Base64 encoded service account JSON for authentication.\n    Required when use_julep_service is false.\n    Users can provide their own service account for better isolation and quota management.\n    \"\"\"\n    default_retry_count: Annotated[int, Field(ge=1, le=10)] = 3\n    \"\"\"\n    Default number of retry attempts for API calls\n    \"\"\"\n\n\nclass GoogleSheetsSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Google Sheets integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    use_julep_service: StrictBool | None = None\n    \"\"\"\n    Whether to use Julep's built-in Google Sheets service account.\n    If true, no credentials needed. If false, service_account_json is required.\n    \"\"\"\n    service_account_json: str | None = None\n    \"\"\"\n    Base64 encoded service account JSON for authentication.\n    Required when use_julep_service is false.\n    Users can provide their own service account for better isolation and quota management.\n    \"\"\"\n    default_retry_count: Annotated[int, Field(ge=1, le=10)] = 3\n    \"\"\"\n    Default number of retry attempts for API calls\n    \"\"\"\n\n\nclass GoogleSheetsValueRange(BaseModel):\n    \"\"\"\n    Represents a range of values to write\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    range: str\n    \"\"\"\n    The A1 notation of the range\n    \"\"\"\n    values: list[list]\n    \"\"\"\n    The values for the range (2D array)\n    \"\"\"\n    major_dimension: Literal[\"ROWS\", \"COLUMNS\"] = \"ROWS\"\n    \"\"\"\n    The major dimension of the values\n    \"\"\"\n\n\nclass GoogleSheetsWriteArguments(BaseModel):\n    \"\"\"\n    Arguments for writing values to a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str\n    \"\"\"\n    The ID of the spreadsheet to write to\n    \"\"\"\n    range: str\n    \"\"\"\n    The A1 notation of the range to write to\n    \"\"\"\n    values: list[list]\n    \"\"\"\n    The values to write (2D array)\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    insert_data_option: Literal[\"OVERWRITE\", \"INSERT_ROWS\"] = \"OVERWRITE\"\n    \"\"\"\n    How the input data should be inserted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass GoogleSheetsWriteArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for writing values to a spreadsheet\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spreadsheet_id: str | None = None\n    \"\"\"\n    The ID of the spreadsheet to write to\n    \"\"\"\n    range: str | None = None\n    \"\"\"\n    The A1 notation of the range to write to\n    \"\"\"\n    values: list[list] | None = None\n    \"\"\"\n    The values to write (2D array)\n    \"\"\"\n    value_input_option: Literal[\"RAW\", \"USER_ENTERED\"] = \"USER_ENTERED\"\n    \"\"\"\n    How the input data should be interpreted\n    \"\"\"\n    insert_data_option: Literal[\"OVERWRITE\", \"INSERT_ROWS\"] = \"OVERWRITE\"\n    \"\"\"\n    How the input data should be inserted\n    \"\"\"\n    include_values_in_response: StrictBool = False\n    \"\"\"\n    Whether to include the values in the response\n    \"\"\"\n\n\nclass LlamaParseFetchArguments(BaseModel):\n    \"\"\"\n    Arguments for LlamaParse integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    filename: str | None = None\n    \"\"\"\n    File Name. If not provided, a random name will be generated.\n    \"\"\"\n    file: str | list[str]\n    \"\"\"\n    The base64 string of the file, which can be a single string or a list of strings\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n    base64: StrictBool = False\n    \"\"\"\n    The input file is base64\n    \"\"\"\n\n\nclass LlamaParseFetchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for LlamaParse integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    filename: str | None = None\n    \"\"\"\n    File Name. If not provided, a random name will be generated.\n    \"\"\"\n    file: str | list[str] | None = None\n    \"\"\"\n    The base64 string of the file, which can be a single string or a list of strings\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n    base64: StrictBool = False\n    \"\"\"\n    The input file is base64\n    \"\"\"\n\n\nclass LlamaParseIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    LlamaParse integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"llama_parse\"] = \"llama_parse\"\n    \"\"\"\n    The provider must be \"LlamaParseSetup\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: LlamaParseSetup | None = None\n    \"\"\"\n    The setup parameters for LlamaParse\n    \"\"\"\n    arguments: LlamaParseFetchArguments | None = None\n    \"\"\"\n    The arguments for LlamaParse\n    \"\"\"\n\n\nclass LlamaParseIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    LlamaParse integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"llama_parse\"] = \"llama_parse\"\n    \"\"\"\n    The provider must be \"LlamaParseSetup\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: LlamaParseSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for LlamaParse\n    \"\"\"\n    arguments: LlamaParseFetchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for LlamaParse\n    \"\"\"\n\n\nclass LlamaParseSetup(BaseModel):\n    \"\"\"\n    Setup parameters for LlamaParse integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    llamaparse_api_key: str\n    \"\"\"\n    The API key for LlamaParse\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n\n\nclass LlamaParseSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for LlamaParse integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    llamaparse_api_key: str | None = None\n    \"\"\"\n    The API key for LlamaParse\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Optional upload parameters\n    \"\"\"\n\n\nclass MailgunIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Mailgun integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"mailgun\"] = \"mailgun\"\n    \"\"\"\n    The provider must be \"mailgun\"\n    \"\"\"\n    method: Literal[\"send_email\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: MailgunSetup | None = None\n    \"\"\"\n    The setup parameters for Mailgun\n    \"\"\"\n    arguments: MailgunSendEmailArguments | None = None\n    \"\"\"\n    The arguments for mailgun methods\n    \"\"\"\n\n\nclass MailgunIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Mailgun integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"mailgun\"] = \"mailgun\"\n    \"\"\"\n    The provider must be \"mailgun\"\n    \"\"\"\n    method: Literal[\"send_email\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: MailgunSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Mailgun\n    \"\"\"\n    arguments: MailgunSendEmailArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for mailgun methods\n    \"\"\"\n\n\nclass MailgunSendEmailArguments(BaseModel):\n    \"\"\"\n    Arguments for mailgun.send_email method\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    to: str\n    \"\"\"\n    The email address to send the email to\n    \"\"\"\n    from_: Annotated[str, Field(alias=\"from\")]\n    \"\"\"\n    The email address to send the email from\n    \"\"\"\n    subject: str\n    \"\"\"\n    The subject of the email\n    \"\"\"\n    body: str\n    \"\"\"\n    The body of the email\n    \"\"\"\n    cc: str | None = None\n    \"\"\"\n    Optional carbon copy recipients (comma-separated email addresses)\n    \"\"\"\n    bcc: str | None = None\n    \"\"\"\n    Optional blind carbon copy recipients (comma-separated email addresses)\n    \"\"\"\n\n\nclass MailgunSendEmailArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for mailgun.send_email method\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    to: str | None = None\n    \"\"\"\n    The email address to send the email to\n    \"\"\"\n    from_: Annotated[str | None, Field(alias=\"from\")] = None\n    \"\"\"\n    The email address to send the email from\n    \"\"\"\n    subject: str | None = None\n    \"\"\"\n    The subject of the email\n    \"\"\"\n    body: str | None = None\n    \"\"\"\n    The body of the email\n    \"\"\"\n    cc: str | None = None\n    \"\"\"\n    Optional carbon copy recipients (comma-separated email addresses)\n    \"\"\"\n    bcc: str | None = None\n    \"\"\"\n    Optional blind carbon copy recipients (comma-separated email addresses)\n    \"\"\"\n\n\nclass MailgunSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Mailgun integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    api_key: str\n    \"\"\"\n    The API key for the Mailgun integration\n    \"\"\"\n\n\nclass MailgunSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Mailgun integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    api_key: str | None = None\n    \"\"\"\n    The API key for the Mailgun integration\n    \"\"\"\n\n\nclass McpCallToolArguments(BaseModel):\n    \"\"\"\n    Arguments to call a named tool on the MCP server\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_name: str\n    \"\"\"\n    The MCP tool name to invoke\n    \"\"\"\n    arguments: dict[str, Any] = {}\n    \"\"\"\n    JSON-serializable arguments to pass to the MCP tool\n    \"\"\"\n    timeout_seconds: int = 60\n    \"\"\"\n    Optional per-call timeout in seconds\n    \"\"\"\n\n\nclass McpCallToolArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments to call a named tool on the MCP server\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    tool_name: str | None = None\n    \"\"\"\n    The MCP tool name to invoke\n    \"\"\"\n    arguments: dict[str, Any] = {}\n    \"\"\"\n    JSON-serializable arguments to pass to the MCP tool\n    \"\"\"\n    timeout_seconds: int = 60\n    \"\"\"\n    Optional per-call timeout in seconds\n    \"\"\"\n\n\nclass McpIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    MCP integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"mcp\"] = \"mcp\"\n    \"\"\"\n    The provider must be \"mcp\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: McpSetup | None = None\n    \"\"\"\n    The setup parameters for MCP\n    \"\"\"\n    arguments: McpCallToolArguments | McpListToolsArguments | None = None\n    \"\"\"\n    The arguments for MCP methods\n    \"\"\"\n\n\nclass McpIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    MCP integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"mcp\"] = \"mcp\"\n    \"\"\"\n    The provider must be \"mcp\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: McpSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for MCP\n    \"\"\"\n    arguments: McpCallToolArgumentsUpdate | McpListToolsArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for MCP methods\n    \"\"\"\n\n\nclass McpListToolsArguments(BaseModel):\n    \"\"\"\n    Arguments to list available tools\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    dummy: str = \"dummy\"\n\n\nMcpListToolsArgumentsUpdate = McpListToolsArguments\n\n\nclass McpSetup(BaseModel):\n    \"\"\"\n    Setup parameters for MCP integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    transport: Literal[\"sse\", \"http\"]\n    \"\"\"\n    Transport used to connect to the MCP server\n    \"\"\"\n    command: str | None = None\n    \"\"\"\n    (stdio) Executable or command to launch the server\n    \"\"\"\n    args: list[str] = []\n    \"\"\"\n    (stdio) Arguments for the server command\n    \"\"\"\n    cwd: str | None = None\n    \"\"\"\n    (stdio) Working directory for the server process\n    \"\"\"\n    env: dict[str, str] = {}\n    \"\"\"\n    (stdio) Environment variables for the server process\n    \"\"\"\n    http_url: AnyUrl | None = None\n    \"\"\"\n    (http) Base URL for the MCP server (usually ends with /mcp)\n    \"\"\"\n    http_headers: dict[str, str] = {}\n    \"\"\"\n    (http) Optional HTTP headers to include (e.g., Authorization)\n    \"\"\"\n\n\nclass McpSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for MCP integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    transport: Literal[\"sse\", \"http\"] | None = None\n    \"\"\"\n    Transport used to connect to the MCP server\n    \"\"\"\n    command: str | None = None\n    \"\"\"\n    (stdio) Executable or command to launch the server\n    \"\"\"\n    args: list[str] = []\n    \"\"\"\n    (stdio) Arguments for the server command\n    \"\"\"\n    cwd: str | None = None\n    \"\"\"\n    (stdio) Working directory for the server process\n    \"\"\"\n    env: dict[str, str] = {}\n    \"\"\"\n    (stdio) Environment variables for the server process\n    \"\"\"\n    http_url: AnyUrl | None = None\n    \"\"\"\n    (http) Base URL for the MCP server (usually ends with /mcp)\n    \"\"\"\n    http_headers: dict[str, str] = {}\n    \"\"\"\n    (http) Optional HTTP headers to include (e.g., Authorization)\n    \"\"\"\n\n\nclass NamedToolChoice(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    function: FunctionCallOption | None = None\n\n\nclass ParameterSchema(BaseModel):\n    \"\"\"\n    JSON Schema for API call parameters\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str = \"object\"\n    \"\"\"\n    Schema type (usually 'object')\n    \"\"\"\n    properties: dict[str, PropertyDefinition]\n    \"\"\"\n    Properties definition for parameters\n    \"\"\"\n    required: list[str] = []\n    \"\"\"\n    List of required property names\n    \"\"\"\n    additional_properties: Annotated[StrictBool | None, Field(alias=\"additionalProperties\")] = (\n        None\n    )\n    \"\"\"\n    Whether to allow additional properties\n    \"\"\"\n\n\nclass ParameterSchemaUpdate(BaseModel):\n    \"\"\"\n    JSON Schema for API call parameters\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str = \"object\"\n    \"\"\"\n    Schema type (usually 'object')\n    \"\"\"\n    properties: dict[str, PropertyDefinitionUpdate] | None = None\n    \"\"\"\n    Properties definition for parameters\n    \"\"\"\n    required: list[str] = []\n    \"\"\"\n    List of required property names\n    \"\"\"\n    additional_properties: Annotated[StrictBool | None, Field(alias=\"additionalProperties\")] = (\n        None\n    )\n    \"\"\"\n    Whether to allow additional properties\n    \"\"\"\n\n\nclass PatchToolRequest(BaseModel):\n    \"\"\"\n    Payload for patching a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str | None, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")] = None\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: (\n        Literal[\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: FunctionDef | None = None\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (\n        DummyIntegrationDefUpdate\n        | BraveIntegrationDefUpdate\n        | EmailIntegrationDefUpdate\n        | SpiderIntegrationDefUpdate\n        | WikipediaIntegrationDefUpdate\n        | WeatherIntegrationDefUpdate\n        | MailgunIntegrationDefUpdate\n        | BrowserbaseContextIntegrationDefUpdate\n        | BrowserbaseExtensionIntegrationDefUpdate\n        | BrowserbaseListSessionsIntegrationDefUpdate\n        | BrowserbaseCreateSessionIntegrationDefUpdate\n        | BrowserbaseGetSessionIntegrationDefUpdate\n        | BrowserbaseCompleteSessionIntegrationDefUpdate\n        | BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate\n        | RemoteBrowserIntegrationDefUpdate\n        | LlamaParseIntegrationDefUpdate\n        | FfmpegIntegrationDefUpdate\n        | CloudinaryUploadIntegrationDefUpdate\n        | CloudinaryEditIntegrationDefUpdate\n        | ArxivIntegrationDefUpdate\n        | UnstructuredIntegrationDefUpdate\n        | AlgoliaIntegrationDefUpdate\n        | McpIntegrationDefUpdate\n        | GoogleSheetsIntegrationDefUpdate\n        | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: SystemDefUpdate | None = None\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: ApiCallDefUpdate | None = None\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Computer20241022DefUpdate | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: TextEditor20241022DefUpdate | None = None\n    bash_20241022: Bash20241022DefUpdate | None = None\n\n\nclass PropertyDefinition(BaseModel):\n    \"\"\"\n    Property definition for parameter schema\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str\n    \"\"\"\n    Type of the property\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the property\n    \"\"\"\n    enum: list[str] | None = None\n    \"\"\"\n    Enum values if applicable\n    \"\"\"\n    items: PropertyDefinition | None = None\n    \"\"\"\n    Items definition for array types\n    \"\"\"\n\n\nclass PropertyDefinitionUpdate(BaseModel):\n    \"\"\"\n    Property definition for parameter schema\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: str | None = None\n    \"\"\"\n    Type of the property\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the property\n    \"\"\"\n    enum: list[str] | None = None\n    \"\"\"\n    Enum values if applicable\n    \"\"\"\n    items: PropertyDefinitionUpdate | None = None\n    \"\"\"\n    Items definition for array types\n    \"\"\"\n\n\nclass RemoteBrowserArguments(BaseModel):\n    \"\"\"\n    The arguments for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    connect_url: str | None = None\n    \"\"\"\n    The connection URL for the remote browser\n    \"\"\"\n    action: Literal[\n        \"key\",\n        \"type\",\n        \"mouse_move\",\n        \"left_click\",\n        \"left_click_drag\",\n        \"right_click\",\n        \"middle_click\",\n        \"double_click\",\n        \"screenshot\",\n        \"cursor_position\",\n        \"navigate\",\n        \"refresh\",\n    ]\n    \"\"\"\n    The action to perform\n    \"\"\"\n    text: str | None = None\n    \"\"\"\n    The text\n    \"\"\"\n    coordinate: list | None = None\n    \"\"\"\n    The coordinate to move the mouse to\n    \"\"\"\n\n\nclass RemoteBrowserArgumentsUpdate(BaseModel):\n    \"\"\"\n    The arguments for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    connect_url: str | None = None\n    \"\"\"\n    The connection URL for the remote browser\n    \"\"\"\n    action: (\n        Literal[\n            \"key\",\n            \"type\",\n            \"mouse_move\",\n            \"left_click\",\n            \"left_click_drag\",\n            \"right_click\",\n            \"middle_click\",\n            \"double_click\",\n            \"screenshot\",\n            \"cursor_position\",\n            \"navigate\",\n            \"refresh\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    The action to perform\n    \"\"\"\n    text: str | None = None\n    \"\"\"\n    The text\n    \"\"\"\n    coordinate: list | None = None\n    \"\"\"\n    The coordinate to move the mouse to\n    \"\"\"\n\n\nclass RemoteBrowserIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    The integration definition for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"remote_browser\"] = \"remote_browser\"\n    setup: RemoteBrowserSetup\n    method: Literal[\"perform_action\"] = \"perform_action\"\n    arguments: RemoteBrowserArguments | None = None\n\n\nclass RemoteBrowserIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    The integration definition for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"remote_browser\"] = \"remote_browser\"\n    setup: RemoteBrowserSetup | None = None\n    method: Literal[\"perform_action\"] = \"perform_action\"\n    arguments: RemoteBrowserArgumentsUpdate | None = None\n\n\nclass RemoteBrowserSetup(BaseModel):\n    \"\"\"\n    The setup parameters for the remote browser\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    connect_url: str | None = None\n    \"\"\"\n    The connection URL for the remote browser\n    \"\"\"\n    width: int | None = None\n    \"\"\"\n    The width of the browser\n    \"\"\"\n    height: int | None = None\n    \"\"\"\n    The height of the browser\n    \"\"\"\n\n\nclass SecretRef(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: str\n    \"\"\"\n    The name of the secret to reference\n    \"\"\"\n\n\nclass SecretRefUpdate(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: str | None = None\n    \"\"\"\n    The name of the secret to reference\n    \"\"\"\n\n\nclass SpiderFetchArguments(BaseModel):\n    \"\"\"\n    Arguments for Spider integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: AnyUrl\n    \"\"\"\n    The URL to fetch data from\n    \"\"\"\n    content_type: Literal[\n        \"application/json\", \"text/csv\", \"application/xml\", \"application/jsonl\"\n    ] = \"application/json\"\n    \"\"\"\n    The content type to return\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Additional parameters for the Spider API\n    \"\"\"\n\n\nclass SpiderFetchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Spider integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    url: AnyUrl | None = None\n    \"\"\"\n    The URL to fetch data from\n    \"\"\"\n    content_type: Literal[\n        \"application/json\", \"text/csv\", \"application/xml\", \"application/jsonl\"\n    ] = \"application/json\"\n    \"\"\"\n    The content type to return\n    \"\"\"\n    params: dict[str, Any] | None = None\n    \"\"\"\n    Additional parameters for the Spider API\n    \"\"\"\n\n\nclass SpiderIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Spider integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"spider\"] = \"spider\"\n    \"\"\"\n    The provider must be \"spider\"\n    \"\"\"\n    method: Literal[\"crawl\", \"links\", \"screenshot\", \"search\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: SpiderSetup | None = None\n    \"\"\"\n    The setup parameters for Spider\n    \"\"\"\n    arguments: SpiderFetchArguments | None = None\n    \"\"\"\n    The arguments for Spider\n    \"\"\"\n\n\nclass SpiderIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Spider integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"spider\"] = \"spider\"\n    \"\"\"\n    The provider must be \"spider\"\n    \"\"\"\n    method: Literal[\"crawl\", \"links\", \"screenshot\", \"search\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: SpiderSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Spider\n    \"\"\"\n    arguments: SpiderFetchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Spider\n    \"\"\"\n\n\nclass SpiderSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Spider integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spider_api_key: str\n    \"\"\"\n    The API key for Spider\n    \"\"\"\n\n\nclass SpiderSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Spider integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    spider_api_key: str | None = None\n    \"\"\"\n    The API key for Spider\n    \"\"\"\n\n\nclass SystemDef(BaseModel):\n    \"\"\"\n    System definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    resource: Literal[\"agent\", \"user\", \"task\", \"execution\", \"doc\", \"session\", \"job\"]\n    \"\"\"\n    Resource is the name of the resource to use\n    \"\"\"\n    operation: Literal[\n        \"create\",\n        \"update\",\n        \"patch\",\n        \"create_or_update\",\n        \"embed\",\n        \"change_status\",\n        \"search\",\n        \"chat\",\n        \"history\",\n        \"delete\",\n        \"get\",\n        \"list\",\n    ]\n    \"\"\"\n    Operation is the name of the operation to perform\n    \"\"\"\n    resource_id: UUID | None = None\n    \"\"\"\n    Resource id (if applicable)\n    \"\"\"\n    subresource: Literal[\"tool\", \"doc\", \"execution\", \"transition\"] | None = None\n    \"\"\"\n    Sub-resource type (if applicable)\n    \"\"\"\n    arguments: dict[str, Any] | None = None\n    \"\"\"\n    The arguments to pre-apply to the system call\n    \"\"\"\n\n\nclass SystemDefUpdate(BaseModel):\n    \"\"\"\n    System definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    resource: Literal[\"agent\", \"user\", \"task\", \"execution\", \"doc\", \"session\", \"job\"] | None = (\n        None\n    )\n    \"\"\"\n    Resource is the name of the resource to use\n    \"\"\"\n    operation: (\n        Literal[\n            \"create\",\n            \"update\",\n            \"patch\",\n            \"create_or_update\",\n            \"embed\",\n            \"change_status\",\n            \"search\",\n            \"chat\",\n            \"history\",\n            \"delete\",\n            \"get\",\n            \"list\",\n        ]\n        | None\n    ) = None\n    \"\"\"\n    Operation is the name of the operation to perform\n    \"\"\"\n    resource_id: UUID | None = None\n    \"\"\"\n    Resource id (if applicable)\n    \"\"\"\n    subresource: Literal[\"tool\", \"doc\", \"execution\", \"transition\"] | None = None\n    \"\"\"\n    Sub-resource type (if applicable)\n    \"\"\"\n    arguments: dict[str, Any] | None = None\n    \"\"\"\n    The arguments to pre-apply to the system call\n    \"\"\"\n\n\nclass TextEditor20241022Def(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    type: Literal[\"text_editor_20241022\"] = \"text_editor_20241022\"\n    name: str = \"str_replace_editor\"\n\n\nTextEditor20241022DefUpdate = TextEditor20241022Def\n\n\nclass Tool(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: FunctionDef | None = None\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (\n        DummyIntegrationDef\n        | BraveIntegrationDef\n        | EmailIntegrationDef\n        | SpiderIntegrationDef\n        | WikipediaIntegrationDef\n        | WeatherIntegrationDef\n        | MailgunIntegrationDef\n        | BrowserbaseContextIntegrationDef\n        | BrowserbaseExtensionIntegrationDef\n        | BrowserbaseListSessionsIntegrationDef\n        | BrowserbaseCreateSessionIntegrationDef\n        | BrowserbaseGetSessionIntegrationDef\n        | BrowserbaseCompleteSessionIntegrationDef\n        | BrowserbaseGetSessionLiveUrlsIntegrationDef\n        | RemoteBrowserIntegrationDef\n        | LlamaParseIntegrationDef\n        | FfmpegIntegrationDef\n        | CloudinaryUploadIntegrationDef\n        | CloudinaryEditIntegrationDef\n        | ArxivIntegrationDef\n        | UnstructuredIntegrationDef\n        | AlgoliaIntegrationDef\n        | McpIntegrationDef\n        | GoogleSheetsIntegrationDef\n        | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: SystemDef | None = None\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: ApiCallDef | None = None\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Computer20241022Def | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: TextEditor20241022Def | None = None\n    bash_20241022: Bash20241022Def | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n\n\nclass ToolResponse(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: str\n    output: dict[str, Any]\n    \"\"\"\n    The output of the tool\n    \"\"\"\n\n\nclass UnstructuredIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Unstructured integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"unstructured\"] = \"unstructured\"\n    \"\"\"\n    The provider must be \"unstructured\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: UnstructuredSetup | None = None\n    \"\"\"\n    The setup parameters for Unstructured\n    \"\"\"\n    arguments: UnstructuredPartitionArguments | None = None\n    \"\"\"\n    The arguments for Unstructured\n    \"\"\"\n\n\nclass UnstructuredIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Unstructured integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"unstructured\"] = \"unstructured\"\n    \"\"\"\n    The provider must be \"unstructured\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: UnstructuredSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Unstructured\n    \"\"\"\n    arguments: UnstructuredPartitionArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Unstructured\n    \"\"\"\n\n\nclass UnstructuredPartitionArguments(BaseModel):\n    \"\"\"\n    Arguments for Unstructured partition integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    filename: str | None = None\n    \"\"\"\n    File Name. If not provided, a random name will be generated.\n    \"\"\"\n    file: str\n    \"\"\"\n    The base64 string of the file, which can be a single string or a list of strings\n    \"\"\"\n    partition_params: dict[str, Any] | None = None\n    \"\"\"\n    Additional partition parameters\n    \"\"\"\n\n\nclass UnstructuredPartitionArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Unstructured partition integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    filename: str | None = None\n    \"\"\"\n    File Name. If not provided, a random name will be generated.\n    \"\"\"\n    file: str | None = None\n    \"\"\"\n    The base64 string of the file, which can be a single string or a list of strings\n    \"\"\"\n    partition_params: dict[str, Any] | None = None\n    \"\"\"\n    Additional partition parameters\n    \"\"\"\n\n\nclass UnstructuredSetup(BaseModel):\n    \"\"\"\n    Setup parameters for Unstructured integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    unstructured_api_key: str\n    \"\"\"\n    The API key for Unstructured.io\n    \"\"\"\n    server_url: str | None = None\n    \"\"\"\n    Optional server endpoint URL\n    \"\"\"\n    server: str | None = None\n    \"\"\"\n    The server by name to use for all methods\n    \"\"\"\n    url_params: dict[str, Any] | None = None\n    \"\"\"\n    Parameters to optionally template the server URL with\n    \"\"\"\n    retry_config: dict[str, Any] | None = None\n    \"\"\"\n    The retry configuration to use for all supported methods\n    \"\"\"\n    timeout_ms: int | None = None\n    \"\"\"\n    Optional request timeout applied to each operation in milliseconds\n    \"\"\"\n\n\nclass UnstructuredSetupUpdate(BaseModel):\n    \"\"\"\n    Setup parameters for Unstructured integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    unstructured_api_key: str | None = None\n    \"\"\"\n    The API key for Unstructured.io\n    \"\"\"\n    server_url: str | None = None\n    \"\"\"\n    Optional server endpoint URL\n    \"\"\"\n    server: str | None = None\n    \"\"\"\n    The server by name to use for all methods\n    \"\"\"\n    url_params: dict[str, Any] | None = None\n    \"\"\"\n    Parameters to optionally template the server URL with\n    \"\"\"\n    retry_config: dict[str, Any] | None = None\n    \"\"\"\n    The retry configuration to use for all supported methods\n    \"\"\"\n    timeout_ms: int | None = None\n    \"\"\"\n    Optional request timeout applied to each operation in milliseconds\n    \"\"\"\n\n\nclass UpdateToolRequest(BaseModel):\n    \"\"\"\n    Payload for updating a tool\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    name: Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n    \"\"\"\n    Name of the tool (must be unique for this agent and a valid python identifier string )\n    \"\"\"\n    type: Literal[\n        \"function\",\n        \"integration\",\n        \"system\",\n        \"api_call\",\n        \"computer_20241022\",\n        \"text_editor_20241022\",\n        \"bash_20241022\",\n    ]\n    \"\"\"\n    Type of the tool\n    \"\"\"\n    description: str | None = None\n    \"\"\"\n    Description of the tool\n    \"\"\"\n    function: FunctionDef | None = None\n    \"\"\"\n    The function to call\n    \"\"\"\n    integration: (\n        DummyIntegrationDef\n        | BraveIntegrationDef\n        | EmailIntegrationDef\n        | SpiderIntegrationDef\n        | WikipediaIntegrationDef\n        | WeatherIntegrationDef\n        | MailgunIntegrationDef\n        | BrowserbaseContextIntegrationDef\n        | BrowserbaseExtensionIntegrationDef\n        | BrowserbaseListSessionsIntegrationDef\n        | BrowserbaseCreateSessionIntegrationDef\n        | BrowserbaseGetSessionIntegrationDef\n        | BrowserbaseCompleteSessionIntegrationDef\n        | BrowserbaseGetSessionLiveUrlsIntegrationDef\n        | RemoteBrowserIntegrationDef\n        | LlamaParseIntegrationDef\n        | FfmpegIntegrationDef\n        | CloudinaryUploadIntegrationDef\n        | CloudinaryEditIntegrationDef\n        | ArxivIntegrationDef\n        | UnstructuredIntegrationDef\n        | AlgoliaIntegrationDef\n        | McpIntegrationDef\n        | GoogleSheetsIntegrationDef\n        | None\n    ) = None\n    \"\"\"\n    The integration to call\n    \"\"\"\n    system: SystemDef | None = None\n    \"\"\"\n    The system to call\n    \"\"\"\n    api_call: ApiCallDef | None = None\n    \"\"\"\n    The API call to make\n    \"\"\"\n    computer_20241022: Computer20241022Def | None = None\n    \"\"\"\n    (Alpha) Anthropic new tools\n    \"\"\"\n    text_editor_20241022: TextEditor20241022Def | None = None\n    bash_20241022: Bash20241022Def | None = None\n\n\nclass WeatherGetArguments(BaseModel):\n    \"\"\"\n    Arguments for Weather\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    location: str\n    \"\"\"\n    The location for which to fetch weather data\n    \"\"\"\n\n\nclass WeatherGetArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Weather\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    location: str | None = None\n    \"\"\"\n    The location for which to fetch weather data\n    \"\"\"\n\n\nclass WeatherIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Weather integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"weather\"] = \"weather\"\n    \"\"\"\n    The provider must be \"weather\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: WeatherSetup | None = None\n    \"\"\"\n    The setup parameters for Weather\n    \"\"\"\n    arguments: WeatherGetArguments | None = None\n    \"\"\"\n    The arguments for Weather\n    \"\"\"\n\n\nclass WeatherIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Weather integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"weather\"] = \"weather\"\n    \"\"\"\n    The provider must be \"weather\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: WeatherSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Weather\n    \"\"\"\n    arguments: WeatherGetArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Weather\n    \"\"\"\n\n\nclass WeatherSetup(BaseModel):\n    \"\"\"\n    Integration definition for Weather\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    openweathermap_api_key: str\n    \"\"\"\n    The api key for OpenWeatherMap\n    \"\"\"\n\n\nclass WeatherSetupUpdate(BaseModel):\n    \"\"\"\n    Integration definition for Weather\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    openweathermap_api_key: str | None = None\n    \"\"\"\n    The api key for OpenWeatherMap\n    \"\"\"\n\n\nclass WikipediaIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Wikipedia integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"wikipedia\"] = \"wikipedia\"\n    \"\"\"\n    The provider must be \"wikipedia\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Wikipedia\n    \"\"\"\n    arguments: WikipediaSearchArguments | None = None\n    \"\"\"\n    The arguments for Wikipedia Search\n    \"\"\"\n\n\nclass WikipediaIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Wikipedia integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"wikipedia\"] = \"wikipedia\"\n    \"\"\"\n    The provider must be \"wikipedia\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Wikipedia\n    \"\"\"\n    arguments: WikipediaSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Wikipedia Search\n    \"\"\"\n\n\nclass WikipediaSearchArguments(BaseModel):\n    \"\"\"\n    Arguments for Wikipedia Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str\n    \"\"\"\n    The search query string\n    \"\"\"\n    load_max_docs: Annotated[int, Field(ge=1, le=10)] = 2\n    \"\"\"\n    Maximum number of documents to load\n    \"\"\"\n\n\nclass WikipediaSearchArgumentsUpdate(BaseModel):\n    \"\"\"\n    Arguments for Wikipedia Search\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    query: str | None = None\n    \"\"\"\n    The search query string\n    \"\"\"\n    load_max_docs: Annotated[int, Field(ge=1, le=10)] = 2\n    \"\"\"\n    Maximum number of documents to load\n    \"\"\"\n\n\nclass AlgoliaIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Algolia integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"algolia\"] = \"algolia\"\n    \"\"\"\n    The provider must be \"algolia\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: AlgoliaSetup | None = None\n    \"\"\"\n    The setup parameters for Algolia\n    \"\"\"\n    arguments: AlgoliaSearchArguments | None = None\n    \"\"\"\n    The arguments for Algolia\n    \"\"\"\n\n\nclass AlgoliaIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Algolia integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"algolia\"] = \"algolia\"\n    \"\"\"\n    The provider must be \"algolia\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: AlgoliaSetupUpdate | None = None\n    \"\"\"\n    The setup parameters for Algolia\n    \"\"\"\n    arguments: AlgoliaSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Algolia\n    \"\"\"\n\n\nclass ArxivIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Arxiv integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"arxiv\"] = \"arxiv\"\n    \"\"\"\n    The provider must be \"arxiv\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Arxiv\n    \"\"\"\n    arguments: ArxivSearchArguments | None = None\n    \"\"\"\n    The arguments for Arxiv Search\n    \"\"\"\n\n\nclass ArxivIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Arxiv integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"arxiv\"] = \"arxiv\"\n    \"\"\"\n    The provider must be \"arxiv\"\n    \"\"\"\n    method: str | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    setup: Any | None = None\n    \"\"\"\n    The setup parameters for Arxiv\n    \"\"\"\n    arguments: ArxivSearchArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for Arxiv Search\n    \"\"\"\n\n\nclass BaseBrowserbaseIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    The base definition for a browserbase integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"browserbase\"] = \"browserbase\"\n    setup: BrowserbaseSetup | None = None\n    method: (\n        Literal[\n            \"get_live_urls\",\n            \"list_sessions\",\n            \"create_session\",\n            \"get_session\",\n            \"complete_session\",\n            \"get_connect_url\",\n            \"install_extension_from_github\",\n            \"create_context\",\n            \"get_session_downloads\",\n            \"get_logs\",\n            \"get_recordings\",\n        ]\n        | None\n    ) = None\n    arguments: Any | None = None\n\n\nclass BaseBrowserbaseIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    The base definition for a browserbase integration\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"browserbase\"] = \"browserbase\"\n    setup: BrowserbaseSetupUpdate | None = None\n    method: (\n        Literal[\n            \"get_live_urls\",\n            \"list_sessions\",\n            \"create_session\",\n            \"get_session\",\n            \"complete_session\",\n            \"get_connect_url\",\n            \"install_extension_from_github\",\n            \"create_context\",\n            \"get_session_downloads\",\n            \"get_logs\",\n            \"get_recordings\",\n        ]\n        | None\n    ) = None\n    arguments: Any | None = None\n\n\nclass BaseCloudinaryIntegrationDef(BaseIntegrationDef):\n    \"\"\"\n    Base Cloudinary integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"cloudinary\"] = \"cloudinary\"\n    setup: CloudinarySetup | None = None\n    method: Literal[\"media_upload\", \"media_edit\"] | None = None\n\n\nclass BaseCloudinaryIntegrationDefUpdate(BaseIntegrationDefUpdate):\n    \"\"\"\n    Base Cloudinary integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    provider: Literal[\"cloudinary\"] = \"cloudinary\"\n    setup: CloudinarySetupUpdate | None = None\n    method: Literal[\"media_upload\", \"media_edit\"] | None = None\n\n\nclass BrowserbaseCompleteSessionIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase complete session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"complete_session\"] = \"complete_session\"\n    arguments: BrowserbaseCompleteSessionArguments | None = None\n\n\nclass BrowserbaseCompleteSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase complete session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"complete_session\"] = \"complete_session\"\n    arguments: BrowserbaseCompleteSessionArgumentsUpdate | None = None\n\n\nclass BrowserbaseContextIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase context provider\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"create_context\"] = \"create_context\"\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseContextArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseContextIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase context provider\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"create_context\"] = \"create_context\"\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseContextArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseCreateSessionIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase create session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"create_session\"] = \"create_session\"\n    arguments: BrowserbaseCreateSessionArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseCreateSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase create session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"create_session\"] = \"create_session\"\n    arguments: BrowserbaseCreateSessionArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseExtensionIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase extension provider\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"install_extension_from_github\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseExtensionArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseExtensionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase extension provider\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"install_extension_from_github\"] | None = None\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseExtensionArgumentsUpdate | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseGetSessionIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase get session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"get_session\"] = \"get_session\"\n    arguments: BrowserbaseGetSessionArguments | None = None\n\n\nclass BrowserbaseGetSessionIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase get session integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"get_session\"] = \"get_session\"\n    arguments: BrowserbaseGetSessionArgumentsUpdate | None = None\n\n\nclass BrowserbaseGetSessionLiveUrlsIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase get session live urls integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"get_live_urls\"] = \"get_live_urls\"\n    arguments: BrowserbaseGetSessionLiveUrlsArguments | None = None\n\n\nclass BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase get session live urls integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"get_live_urls\"] = \"get_live_urls\"\n    arguments: BrowserbaseGetSessionLiveUrlsArgumentsUpdate | None = None\n\n\nclass BrowserbaseListSessionsIntegrationDef(BaseBrowserbaseIntegrationDef):\n    \"\"\"\n    browserbase list sessions integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"list_sessions\"] = \"list_sessions\"\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseListSessionsArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass BrowserbaseListSessionsIntegrationDefUpdate(BaseBrowserbaseIntegrationDefUpdate):\n    \"\"\"\n    browserbase list sessions integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"list_sessions\"] = \"list_sessions\"\n    \"\"\"\n    The specific method of the integration to call\n    \"\"\"\n    arguments: BrowserbaseListSessionsArguments | None = None\n    \"\"\"\n    The arguments for the method\n    \"\"\"\n\n\nclass CloudinaryEditIntegrationDef(BaseCloudinaryIntegrationDef):\n    \"\"\"\n    Cloudinary edit integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"media_edit\"] = \"media_edit\"\n    arguments: CloudinaryEditArguments | None = None\n\n\nclass CloudinaryEditIntegrationDefUpdate(BaseCloudinaryIntegrationDefUpdate):\n    \"\"\"\n    Cloudinary edit integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"media_edit\"] = \"media_edit\"\n    arguments: CloudinaryEditArgumentsUpdate | None = None\n\n\nclass CloudinaryUploadIntegrationDef(BaseCloudinaryIntegrationDef):\n    \"\"\"\n    Cloudinary upload integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"media_upload\"] = \"media_upload\"\n    arguments: CloudinaryUploadArguments | None = None\n\n\nclass CloudinaryUploadIntegrationDefUpdate(BaseCloudinaryIntegrationDefUpdate):\n    \"\"\"\n    Cloudinary upload integration definition\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    method: Literal[\"media_upload\"] = \"media_upload\"\n    arguments: CloudinaryUploadArgumentsUpdate | None = None\n\n\nPropertyDefinition.model_rebuild()\nPropertyDefinitionUpdate.model_rebuild()\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/Users.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n\nfrom __future__ import annotations\n\nfrom typing import Annotated, Any\nfrom uuid import UUID\n\nfrom pydantic import AwareDatetime, BaseModel, ConfigDict, Field\n\n\nclass CreateUserRequest(BaseModel):\n    \"\"\"\n    Payload for creating a user (and associated documents)\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the user\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the user\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the user\n    \"\"\"\n\n\nclass PatchUserRequest(BaseModel):\n    \"\"\"\n    Payload for patching a user\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the user\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the user\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the user\n    \"\"\"\n\n\nclass UpdateUserRequest(BaseModel):\n    \"\"\"\n    Payload for updating a user\n    \"\"\"\n\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    metadata: dict[str, Any] | None = None\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the user\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the user\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the user\n    \"\"\"\n\n\nclass User(BaseModel):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: Annotated[UUID, Field(json_schema_extra={\"readOnly\": True})]\n    metadata: dict[str, Any] | None = None\n    created_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was created as UTC date-time\n    \"\"\"\n    updated_at: Annotated[AwareDatetime, Field(json_schema_extra={\"readOnly\": True})]\n    \"\"\"\n    When this resource was updated as UTC date-time\n    \"\"\"\n    name: Annotated[\n        str,\n        Field(\n            max_length=120,\n            pattern=\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n        ),\n    ] = \"\"\n    \"\"\"\n    Name of the user\n    \"\"\"\n    about: str = \"\"\n    \"\"\"\n    About the user\n    \"\"\"\n    project: Annotated[\n        str | None,\n        Field(max_length=255, min_length=1, pattern=\"^[a-zA-Z][a-zA-Z0-9_]*$\"),\n    ] = None\n    \"\"\"\n    Project canonical name of the user\n    \"\"\"\n\n\nclass CreateOrUpdateUserRequest(CreateUserRequest):\n    model_config = ConfigDict(\n        populate_by_name=True,\n    )\n    id: UUID\n"
  },
  {
    "path": "src/integrations-service/integrations/autogen/__init__.py",
    "content": "# generated by datamodel-codegen:\n#   filename:  openapi-1.0.0.yaml\n"
  },
  {
    "path": "src/integrations-service/integrations/env.py",
    "content": "import multiprocessing\n\nfrom environs import Env\n\n# Initialize the Env object for environment variable parsing.\nenv = Env()\nenv.read_env()  # Read .env file, if it exists\n\n# Load environment variables\nbrowserbase_api_key = env.str(\"BROWSERBASE_API_KEY\", default=None)\nbrowserbase_project_id = env.str(\"BROWSERBASE_PROJECT_ID\", default=None)\nopenweather_api_key = env.str(\"OPENWEATHER_API_KEY\", default=None)\nspider_api_key = env.str(\"SPIDER_API_KEY\", default=None)\nbrave_api_key = env.str(\"BRAVE_API_KEY\", default=None)\nllama_api_key = env.str(\"LLAMA_API_KEY\", default=None)\ncloudinary_api_key = env.str(\"CLOUDINARY_API_KEY\", default=None)\ncloudinary_api_secret = env.str(\"CLOUDINARY_API_SECRET\", default=None)\ncloudinary_cloud_name = env.str(\"CLOUDINARY_CLOUD_NAME\", default=None)\nmailgun_password = env.str(\"MAILGUN_PASSWORD\", default=None)\nmailgun_api_key = env.str(\"MAILGUN_API_KEY\", default=None)\nsentry_dsn: str = env.str(\"SENTRY_DSN\", default=None)\nunstructured_api_key = env.str(\"UNSTRUCTURED_API_KEY\", default=None)\nalgolia_api_key = env.str(\"ALGOLIA_API_KEY\", default=None)\nalgolia_application_id = env.str(\"ALGOLIA_APPLICATION_ID\", default=None)\njulep_google_sheets_service_account_json = env.str(\n    \"JULEP_GOOGLE_SHEETS_SERVICE_ACCOUNT_JSON\", default=None\n)\n\n# Gunicorn\ngunicorn_cpu_divisor: int = env.int(\"GUNICORN_CPU_DIVISOR\", default=4)\n\nraw_workers: str | None = env.str(\"GUNICORN_WORKERS\", default=None)\nif raw_workers and raw_workers.strip():\n    gunicorn_workers: int = int(raw_workers)\nelse:\n    gunicorn_workers: int = max(multiprocessing.cpu_count() // gunicorn_cpu_divisor, 1)\n"
  },
  {
    "path": "src/integrations-service/integrations/models/__init__.py",
    "content": "from .algolia import AlgoliaSearchOutput as AlgoliaSearchOutput\nfrom .arxiv import (\n    ArxivSearchOutput as ArxivSearchOutput,\n)\nfrom .arxiv import (\n    ArxivSearchResult as ArxivSearchResult,\n)\nfrom .base_models import (\n    BaseOutput as BaseOutput,\n)\nfrom .base_models import (\n    BaseProvider as BaseProvider,\n)\nfrom .base_models import (\n    BaseProviderMethod as BaseProviderMethod,\n)\nfrom .base_models import (\n    ProviderInfo as ProviderInfo,\n)\nfrom .brave import (\n    BraveSearchOutput as BraveSearchOutput,\n)\nfrom .brave import (\n    SearchResult as SearchResult,\n)\nfrom .browserbase import (\n    BrowserbaseCompleteSessionOutput as BrowserbaseCompleteSessionOutput,\n)\nfrom .browserbase import (\n    BrowserbaseCreateSessionOutput as BrowserbaseCreateSessionOutput,\n)\nfrom .browserbase import (\n    BrowserbaseExtensionOutput as BrowserbaseExtensionOutput,\n)\nfrom .browserbase import (\n    BrowserbaseGetSessionLiveUrlsOutput as BrowserbaseGetSessionLiveUrlsOutput,\n)\nfrom .browserbase import (\n    BrowserbaseGetSessionOutput as BrowserbaseGetSessionOutput,\n)\nfrom .browserbase import (\n    BrowserbaseListSessionsOutput as BrowserbaseListSessionsOutput,\n)\nfrom .cloudinary import (\n    CloudinaryEditOutput as CloudinaryEditOutput,\n)\nfrom .cloudinary import (\n    CloudinaryUploadOutput as CloudinaryUploadOutput,\n)\nfrom .email import EmailOutput as EmailOutput\nfrom .ffmpeg import FfmpegSearchOutput as FfmpegSearchOutput\nfrom .google_sheets import (\n    GoogleSheetsBatchReadOutput as GoogleSheetsBatchReadOutput,\n)\nfrom .google_sheets import (\n    GoogleSheetsBatchWriteOutput as GoogleSheetsBatchWriteOutput,\n)\nfrom .google_sheets import (\n    GoogleSheetsClearOutput as GoogleSheetsClearOutput,\n)\nfrom .google_sheets import (\n    GoogleSheetsReadOutput as GoogleSheetsReadOutput,\n)\nfrom .google_sheets import (\n    GoogleSheetsUpdateResponse as GoogleSheetsUpdateResponse,\n)\nfrom .google_sheets import (\n    GoogleSheetsValueRangeOutput as GoogleSheetsValueRangeOutput,\n)\nfrom .google_sheets import (\n    GoogleSheetsWriteOutput as GoogleSheetsWriteOutput,\n)\nfrom .llama_parse import LlamaParseFetchOutput as LlamaParseFetchOutput\nfrom .mailgun import MailgunSendEmailOutput as MailgunSendEmailOutput\nfrom .mcp import (\n    McpListToolsOutput as McpListToolsOutput,\n)\nfrom .mcp import (\n    McpToolCallOutput as McpToolCallOutput,\n)\nfrom .remote_browser import RemoteBrowserOutput as RemoteBrowserOutput\nfrom .spider import (\n    SpiderOutput as SpiderOutput,\n)\nfrom .spider import (\n    SpiderResponse as SpiderResponse,\n)\nfrom .unstructured import (\n    UnstructuredParseOutput as UnstructuredParseOutput,\n)\nfrom .weather import WeatherGetOutput as WeatherGetOutput\nfrom .wikipedia import WikipediaSearchOutput as WikipediaSearchOutput\n"
  },
  {
    "path": "src/integrations-service/integrations/models/algolia.py",
    "content": "from typing import Any\n\nfrom pydantic import ConfigDict, Field\n\nfrom .base_models import BaseOutput\n\n\nclass AlgoliaSearchOutput(BaseOutput):\n    \"\"\"Output model for Algolia search\"\"\"\n\n    model_config = ConfigDict(extra=\"allow\")\n\n    hits: list[Any] | None = Field(description=\"The search results\")\n    metadata: dict[str, Any] | None = Field(description=\"Additional metadata from the search\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/arxiv.py",
    "content": "from pydantic import BaseModel, Field\n\nfrom .base_models import BaseOutput\n\n\nclass ArxivSearchResult(BaseModel):\n    entry_id: str | None = None\n    title: str | None = None\n    updated: str | None = None\n    published: str | None = None\n    authors: list[str] | None = None\n    summary: str | None = None\n    comment: str | None = None\n    journal_ref: str | None = None\n    doi: str | None = None\n    primary_category: str | None = None\n    categories: list[str] | None = None\n    links: list[str] | None = None\n    pdf_url: str | None = None\n    pdf_downloaded: dict | None = None\n\n\nclass ArxivSearchOutput(BaseOutput):\n    result: list[ArxivSearchResult] = Field(..., description=\"A list of search results\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/base_models.py",
    "content": "from typing import Annotated\n\nfrom pydantic import BaseModel, Field\nfrom pydantic_core import Url\n\nIdentifierName = Annotated[str, Field(max_length=40, pattern=\"^[^\\\\W0-9]\\\\w*$\")]\n\n\nclass BaseOutput(BaseModel): ...\n\n\nclass ProviderInfo(BaseModel):\n    url: Url | None = None\n    docs: Url | None = None\n    icon: Url | None = None\n    friendly_name: str\n\n\nclass BaseProviderMethod(BaseModel):\n    method: IdentifierName\n    description: str\n    arguments: type[BaseModel]\n    output: type[BaseOutput]\n\n\nclass BaseProvider(BaseModel):\n    provider: IdentifierName\n    setup: type[BaseModel] | None\n    methods: list[BaseProviderMethod]\n    info: ProviderInfo\n"
  },
  {
    "path": "src/integrations-service/integrations/models/brave.py",
    "content": "from pydantic import BaseModel, Field\n\nfrom .base_models import BaseOutput\n\n\nclass SearchResult(BaseModel):\n    title: str\n    link: str\n    snippet: str\n\n\nclass BraveSearchOutput(BaseOutput):\n    result: list[SearchResult] = Field(..., description=\"A list of search results\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/browserbase.py",
    "content": "from typing import Literal\n\nfrom browserbase.types import Session\nfrom browserbase.types.session_live_urls import SessionLiveURLs\nfrom pydantic import AnyUrl, Field\n\nfrom .base_models import BaseOutput\n\n\nclass BrowserbaseListSessionsOutput(BaseOutput):\n    sessions: list[Session] = Field(..., description=\"The list of sessions\")\n\n\nclass BrowserbaseCreateSessionOutput(BaseOutput):\n    id: str = Field(..., description=\"Unique identifier for the session\")\n    connect_url: str | None = Field(None, description=\"The connection URL for the session\")\n    createdAt: str | None = Field(\n        None,\n        description=\"Timestamp indicating when the session was created\",\n    )\n    projectId: str | None = Field(None, description=\"The Project ID linked to the Session\")\n    startedAt: str | None = Field(None, description=\"Timestamp when the session started\")\n    endedAt: str | None = Field(None, description=\"Timestamp when the session ended\")\n    expiresAt: str | None = Field(\n        None,\n        description=\"Timestamp when the session is set to expire\",\n    )\n    status: Literal[\"RUNNING\", \"ERROR\", \"TIMED_OUT\", \"COMPLETED\"] | None = Field(\n        None,\n        description=\"Current status of the session\",\n    )\n    proxyBytes: int | None = Field(None, description=\"Bytes used via the Proxy\")\n    avgCpuUsage: int | None = Field(None, description=\"CPU used by the Session\")\n    memoryUsage: int | None = Field(None, description=\"Memory used by the Session\")\n    keepAlive: bool | None = Field(\n        None,\n        description=\"Indicates if the Session was created to be kept alive upon disconnections\",\n    )\n    contextId: str | None = Field(\n        None,\n        description=\"Optional. The Context linked to the Session.\",\n    )\n\n\nclass BrowserbaseGetSessionOutput(BaseOutput):\n    id: str = Field(..., description=\"Unique identifier for the session\")\n    createdAt: str | None = Field(\n        None,\n        description=\"Timestamp indicating when the session was created\",\n    )\n    projectId: str | None = Field(None, description=\"The Project ID linked to the Session\")\n    startedAt: str | None = Field(None, description=\"Timestamp when the session started\")\n    endedAt: str | None = Field(None, description=\"Timestamp when the session ended\")\n    expiresAt: str | None = Field(\n        None,\n        description=\"Timestamp when the session is set to expire\",\n    )\n    status: Literal[\"RUNNING\", \"ERROR\", \"TIMED_OUT\", \"COMPLETED\"] | None = Field(\n        None,\n        description=\"Current status of the session\",\n    )\n    proxyBytes: int | None = Field(None, description=\"Bytes used via the Proxy\")\n    avgCpuUsage: int | None = Field(None, description=\"CPU used by the Session\")\n    memoryUsage: int | None = Field(None, description=\"Memory used by the Session\")\n    keepAlive: bool | None = Field(\n        None,\n        description=\"Indicates if the Session was created to be kept alive upon disconnections\",\n    )\n    contextId: str | None = Field(\n        None,\n        description=\"Optional. The Context linked to the Session.\",\n    )\n\n\nclass BrowserbaseCompleteSessionOutput(BaseOutput):\n    success: bool = Field(\n        ...,\n        description=\"Indicates if the session was completed successfully\",\n    )\n\n\nclass BrowserbaseExtensionOutput(BaseOutput):\n    id: str = Field(..., description=\"Unique identifier for the extension\")\n\n\nclass PageInfo(BaseOutput):\n    id: str | None = Field(None, description=\"Unique identifier for the page\")\n    url: AnyUrl | None = Field(None, description=\"URL of the page\")\n    faviconUrl: AnyUrl | None = Field(None, description=\"URL for the page's favicon\")\n    title: str | None = Field(None, description=\"Title of the page\")\n    debuggerUrl: AnyUrl | None = Field(\n        None,\n        description=\"URL to access the debugger for this page\",\n    )\n    debuggerFullscreenUrl: AnyUrl | None = Field(\n        None,\n        description=\"URL to access the debugger in fullscreen for this page\",\n    )\n\n\nclass BrowserbaseGetSessionLiveUrlsOutput(BaseOutput):\n    urls: SessionLiveURLs = Field(..., description=\"The live URLs for the session\")\n\n\nclass BrowserbaseContextOutput(BaseOutput):\n    id: str = Field(..., description=\"Unique identifier for the context\")\n    uploadUrl: str | None = Field(None, description=\"The upload URL for the context\")\n    publicKey: str | None = Field(None, description=\"The public key for the context\")\n    cipherAlgorithm: str | None = Field(\n        None,\n        description=\"The cipher algorithm for the context\",\n    )\n    initializationVectorSize: int | None = Field(\n        None,\n        description=\"The size of the initialization vector\",\n    )\n"
  },
  {
    "path": "src/integrations-service/integrations/models/cloudinary.py",
    "content": "from pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass CloudinaryUploadOutput(BaseOutput):\n    url: str = Field(..., description=\"The URL of the uploaded file\")\n    public_id: str = Field(..., description=\"The public ID of the uploaded file\")\n    base64: str | None = Field(\n        None,\n        description=\"The base64 encoded file if return_base64 is true\",\n    )\n    meta_data: dict | None = Field(\n        None,\n        description=\"Additional metadata from the upload response\",\n    )\n\n\nclass CloudinaryEditOutput(BaseOutput):\n    transformed_url: str = Field(..., description=\"The transformed URL\")\n    base64: str | None = Field(\n        None,\n        description=\"The base64 encoded file if return_base64 is true\",\n    )\n"
  },
  {
    "path": "src/integrations-service/integrations/models/email.py",
    "content": "from pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass EmailOutput(BaseOutput):\n    success: bool = Field(..., description=\"Whether the email was sent successfully\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/execution.py",
    "content": "from pydantic import BaseModel\n\nfrom ..autogen.Tools import (\n    # Arguments\n    AlgoliaSearchArguments,\n    # Setup\n    AlgoliaSetup,\n    ArxivSearchArguments,\n    BraveSearchArguments,\n    BraveSearchSetup,\n    BrowserbaseCompleteSessionArguments,\n    BrowserbaseContextArguments,\n    BrowserbaseCreateSessionArguments,\n    BrowserbaseExtensionArguments,\n    BrowserbaseGetSessionArguments,\n    BrowserbaseGetSessionLiveUrlsArguments,\n    BrowserbaseListSessionsArguments,\n    BrowserbaseSetup,\n    CloudinaryEditArguments,\n    CloudinarySetup,\n    CloudinaryUploadArguments,\n    EmailArguments,\n    EmailSetup,\n    FfmpegSearchArguments,\n    GoogleSheetsAppendArguments,\n    GoogleSheetsBatchReadArguments,\n    GoogleSheetsBatchWriteArguments,\n    GoogleSheetsClearArguments,\n    GoogleSheetsReadArguments,\n    GoogleSheetsSetup,\n    GoogleSheetsWriteArguments,\n    LlamaParseFetchArguments,\n    LlamaParseSetup,\n    MailgunSendEmailArguments,\n    MailgunSetup,\n    McpCallToolArguments,\n    McpListToolsArguments,\n    McpSetup,\n    RemoteBrowserArguments,\n    RemoteBrowserSetup,\n    SpiderFetchArguments,\n    SpiderSetup,\n    UnstructuredPartitionArguments,\n    UnstructuredSetup,\n    WeatherGetArguments,\n    WeatherSetup,\n    WikipediaSearchArguments,\n)\nfrom .algolia import AlgoliaSearchOutput\nfrom .arxiv import ArxivSearchOutput\nfrom .brave import BraveSearchOutput\nfrom .browserbase import (\n    BrowserbaseCompleteSessionOutput,\n    BrowserbaseContextOutput,\n    BrowserbaseCreateSessionOutput,\n    BrowserbaseExtensionOutput,\n    BrowserbaseGetSessionLiveUrlsOutput,\n    BrowserbaseGetSessionOutput,\n    BrowserbaseListSessionsOutput,\n)\nfrom .cloudinary import CloudinaryEditOutput, CloudinaryUploadOutput\nfrom .email import EmailOutput\nfrom .ffmpeg import FfmpegSearchOutput\nfrom .google_sheets import (\n    GoogleSheetsBatchReadOutput,\n    GoogleSheetsBatchWriteOutput,\n    GoogleSheetsClearOutput,\n    GoogleSheetsReadOutput,\n    GoogleSheetsValueRangeOutput,\n    GoogleSheetsWriteOutput,\n)\nfrom .llama_parse import LlamaParseFetchOutput\nfrom .mailgun import MailgunSendEmailOutput\nfrom .mcp import McpListToolsOutput, McpToolCallOutput\nfrom .remote_browser import RemoteBrowserOutput\nfrom .spider import SpiderOutput\nfrom .unstructured import UnstructuredParseOutput\nfrom .weather import WeatherGetOutput\nfrom .wikipedia import WikipediaSearchOutput\n\n\nclass ExecutionError(BaseModel):\n    error: str\n    \"\"\"\n    The error message of the integration execution\n    \"\"\"\n\n\n# Setup configurations\nExecutionSetup = (\n    AlgoliaSetup\n    | BraveSearchSetup\n    | BrowserbaseSetup\n    | CloudinarySetup\n    | EmailSetup\n    | LlamaParseSetup\n    | MailgunSetup\n    | RemoteBrowserSetup\n    | SpiderSetup\n    | UnstructuredSetup\n    | WeatherSetup\n    | McpSetup\n    | GoogleSheetsSetup\n)\n\n# Argument configurations\nExecutionArguments = (\n    AlgoliaSearchArguments\n    | ArxivSearchArguments\n    | BraveSearchArguments\n    | BrowserbaseCompleteSessionArguments\n    | BrowserbaseContextArguments\n    | BrowserbaseCreateSessionArguments\n    | BrowserbaseExtensionArguments\n    | BrowserbaseListSessionsArguments\n    | BrowserbaseGetSessionArguments\n    | BrowserbaseGetSessionLiveUrlsArguments\n    | CloudinaryUploadArguments\n    | CloudinaryEditArguments\n    | EmailArguments\n    | FfmpegSearchArguments\n    | LlamaParseFetchArguments\n    | MailgunSendEmailArguments\n    | RemoteBrowserArguments\n    | SpiderFetchArguments\n    | UnstructuredPartitionArguments\n    | WeatherGetArguments\n    | WikipediaSearchArguments\n    | McpCallToolArguments\n    | McpListToolsArguments\n    | GoogleSheetsReadArguments\n    | GoogleSheetsWriteArguments\n    | GoogleSheetsAppendArguments\n    | GoogleSheetsClearArguments\n    | GoogleSheetsBatchReadArguments\n    | GoogleSheetsBatchWriteArguments\n)\n\nExecutionResponse = (\n    WeatherGetOutput\n    | EmailOutput\n    | WikipediaSearchOutput\n    | BraveSearchOutput\n    | BrowserbaseCreateSessionOutput\n    | BrowserbaseGetSessionOutput\n    | BrowserbaseGetSessionLiveUrlsOutput\n    | BrowserbaseCompleteSessionOutput\n    | BrowserbaseContextOutput\n    | BrowserbaseExtensionOutput\n    | BrowserbaseListSessionsOutput\n    | RemoteBrowserOutput\n    | LlamaParseFetchOutput\n    | FfmpegSearchOutput\n    | MailgunSendEmailOutput\n    | CloudinaryEditOutput\n    | CloudinaryUploadOutput\n    | ExecutionError\n    | ArxivSearchOutput\n    | SpiderOutput\n    | UnstructuredParseOutput\n    | AlgoliaSearchOutput\n    | McpToolCallOutput\n    | McpListToolsOutput\n    | GoogleSheetsReadOutput\n    | GoogleSheetsWriteOutput\n    | GoogleSheetsClearOutput\n    | GoogleSheetsBatchReadOutput\n    | GoogleSheetsBatchWriteOutput\n    | GoogleSheetsValueRangeOutput\n)\n\n\nclass ExecutionRequest(BaseModel):\n    setup: ExecutionSetup | None\n    \"\"\"\n    The setup parameters the integration accepts (such as API keys)\n    \"\"\"\n    arguments: ExecutionArguments | None\n    \"\"\"\n    The arguments to pass to the integration\n    \"\"\"\n"
  },
  {
    "path": "src/integrations-service/integrations/models/ffmpeg.py",
    "content": "from pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass FfmpegSearchOutput(BaseOutput):\n    fileoutput: str | None = Field(None, description=\"The output file from the Ffmpeg command\")\n    result: bool = Field(..., description=\"Whether the Ffmpeg command was successful\")\n    mime_type: str | None = Field(None, description=\"The MIME type of the output file\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/google_sheets.py",
    "content": "from typing import Any\n\nfrom pydantic import ConfigDict, Field\n\nfrom .base_models import BaseOutput\n\n\nclass GoogleSheetsReadOutput(BaseOutput):\n    \"\"\"Output model for reading values from Google Sheets\"\"\"\n\n    model_config = ConfigDict(extra=\"allow\")\n\n    range: str = Field(description=\"The range that was read\")\n    major_dimension: str = Field(description=\"The major dimension of the values\")\n    values: list[list[Any]] = Field(description=\"The values read from the spreadsheet\")\n\n\nclass GoogleSheetsWriteOutput(BaseOutput):\n    \"\"\"Output model for writing/appending values to Google Sheets\"\"\"\n\n    model_config = ConfigDict(extra=\"allow\")\n\n    spreadsheet_id: str = Field(description=\"The spreadsheet ID that was updated\")\n    updated_range: str | None = Field(default=None, description=\"The range that was updated\")\n    updated_rows: int | None = Field(default=None, description=\"The number of rows updated\")\n    updated_columns: int | None = Field(\n        default=None, description=\"The number of columns updated\"\n    )\n    updated_cells: int | None = Field(default=None, description=\"The number of cells updated\")\n    updated_values: list[list[Any]] | None = Field(\n        default=None, description=\"The values that were written (if requested)\"\n    )\n\n\nclass GoogleSheetsClearOutput(BaseOutput):\n    \"\"\"Output model for clearing values from Google Sheets\"\"\"\n\n    model_config = ConfigDict(extra=\"allow\")\n\n    spreadsheet_id: str = Field(description=\"The spreadsheet ID that was cleared\")\n    cleared_range: str = Field(description=\"The range that was cleared\")\n\n\nclass GoogleSheetsValueRangeOutput(BaseOutput):\n    \"\"\"Represents a range of values that was read\"\"\"\n\n    model_config = ConfigDict(extra=\"allow\")\n\n    range: str = Field(description=\"The range that was read\")\n    major_dimension: str = Field(description=\"The major dimension of the values\")\n    values: list[list[Any]] = Field(description=\"The values read from the range\")\n\n\nclass GoogleSheetsBatchReadOutput(BaseOutput):\n    \"\"\"Output model for batch reading from Google Sheets\"\"\"\n\n    model_config = ConfigDict(extra=\"allow\")\n\n    spreadsheet_id: str = Field(description=\"The spreadsheet ID that was read\")\n    value_ranges: list[GoogleSheetsValueRangeOutput] = Field(\n        description=\"The value ranges that were read\"\n    )\n\n\nclass GoogleSheetsUpdateResponse(BaseOutput):\n    \"\"\"Details about a single range update in batch operations\"\"\"\n\n    model_config = ConfigDict(extra=\"allow\")\n\n    updated_range: str | None = Field(default=None, description=\"The range that was updated\")\n    updated_rows: int | None = Field(default=None, description=\"The number of rows updated\")\n    updated_columns: int | None = Field(\n        default=None, description=\"The number of columns updated\"\n    )\n    updated_cells: int | None = Field(default=None, description=\"The number of cells updated\")\n\n\nclass GoogleSheetsBatchWriteOutput(BaseOutput):\n    \"\"\"Output model for batch writing to Google Sheets\"\"\"\n\n    model_config = ConfigDict(extra=\"allow\")\n\n    spreadsheet_id: str = Field(description=\"The spreadsheet ID that was updated\")\n    total_updated_sheets: int | None = Field(\n        default=None, description=\"Total number of sheets updated\"\n    )\n    total_updated_rows: int | None = Field(\n        default=None, description=\"Total number of rows updated\"\n    )\n    total_updated_columns: int | None = Field(\n        default=None, description=\"Total number of columns updated\"\n    )\n    total_updated_cells: int | None = Field(\n        default=None, description=\"Total number of cells updated\"\n    )\n    responses: list[GoogleSheetsUpdateResponse] | None = Field(\n        default=None, description=\"Details about each range that was updated\"\n    )\n"
  },
  {
    "path": "src/integrations-service/integrations/models/llama_parse.py",
    "content": "from llama_index.core.schema import Document\nfrom pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass LlamaParseFetchOutput(BaseOutput):\n    documents: list[Document] = Field(..., description=\"The documents returned from the spider\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/mailgun.py",
    "content": "from pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass MailgunSendEmailOutput(BaseOutput):\n    success: bool = Field(..., description=\"Whether the email was sent successfully\")\n    error: str | None = Field(\n        None, description=\"The error message if the email was not sent successfully\"\n    )\n"
  },
  {
    "path": "src/integrations-service/integrations/models/mcp.py",
    "content": "from typing import Any\n\nfrom pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass McpToolCallOutput(BaseOutput):\n    text: str | None = Field(\n        default=None,\n        description=\"Concatenated textual content, if any was returned.\",\n    )\n    structured: dict[str, Any] | list[Any] | None = Field(\n        default=None,\n        description=\"Structured content returned by the server, if present.\",\n    )\n    content: list[dict[str, Any]] = Field(\n        default_factory=list,\n        description=\"Raw content items as returned by MCP (best-effort JSON form).\",\n    )\n    is_error: bool = Field(\n        default=False,\n        description=\"Whether the server indicated an error for this call.\",\n    )\n\n\nclass McpToolInfo(BaseOutput):\n    name: str\n    description: str | None = None\n    input_schema: dict[str, Any] | None = None\n\n\nclass McpListToolsOutput(BaseOutput):\n    tools: list[McpToolInfo]\n"
  },
  {
    "path": "src/integrations-service/integrations/models/remote_browser.py",
    "content": "from pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass RemoteBrowserOutput(BaseOutput):\n    output: str | None = Field(None, description=\"The output of the action\")\n    error: str | None = Field(None, description=\"The error of the action\")\n    base64_image: str | None = Field(None, description=\"The base64 encoded image of the action\")\n    system: str | None = Field(None, description=\"The system output of the action\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/spider.py",
    "content": "from typing import Any\n\nfrom pydantic import BaseModel, Field\n\nfrom .base_models import BaseOutput\n\n\nclass SpiderResponse(BaseModel):\n    content: str | list[str] | None = None\n    error: str | None = None\n    status: int | None = None\n    costs: dict[Any, Any] | None = None\n    url: str | None = None\n\n\nclass SpiderOutput(BaseOutput):\n    result: list[SpiderResponse] = Field(..., description=\"The responses from the spider\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/unstructured.py",
    "content": "from typing import Any\n\nfrom .base_models import BaseOutput\n\n\nclass UnstructuredParseOutput(BaseOutput):\n    content_type: str\n    status_code: int\n    csv_elements: str | None = None\n    content: list[dict[str, Any]] | None = None\n"
  },
  {
    "path": "src/integrations-service/integrations/models/weather.py",
    "content": "from pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass WeatherGetOutput(BaseOutput):\n    result: str = Field(..., description=\"The weather data for the specified location\")\n"
  },
  {
    "path": "src/integrations-service/integrations/models/wikipedia.py",
    "content": "from langchain_core.documents import Document\nfrom pydantic import Field\n\nfrom .base_models import BaseOutput\n\n\nclass WikipediaSearchOutput(BaseOutput):\n    documents: list[Document] = Field(\n        ...,\n        description=\"The documents returned from the Wikipedia search\",\n    )\n"
  },
  {
    "path": "src/integrations-service/integrations/providers.py",
    "content": "from .autogen.Tools import (\n    AlgoliaSearchArguments,\n    AlgoliaSetup,\n    ArxivSearchArguments,\n    BraveSearchArguments,\n    BraveSearchSetup,\n    BrowserbaseCompleteSessionArguments,\n    BrowserbaseCreateSessionArguments,\n    BrowserbaseExtensionArguments,\n    BrowserbaseGetSessionArguments,\n    BrowserbaseGetSessionLiveUrlsArguments,\n    BrowserbaseListSessionsArguments,\n    BrowserbaseSetup,\n    CloudinaryEditArguments,\n    CloudinarySetup,\n    CloudinaryUploadArguments,\n    EmailArguments,\n    EmailSetup,\n    FfmpegSearchArguments,\n    GoogleSheetsAppendArguments,\n    GoogleSheetsBatchReadArguments,\n    GoogleSheetsBatchWriteArguments,\n    GoogleSheetsClearArguments,\n    GoogleSheetsReadArguments,\n    GoogleSheetsSetup,\n    GoogleSheetsWriteArguments,\n    LlamaParseFetchArguments,\n    LlamaParseSetup,\n    MailgunSendEmailArguments,\n    MailgunSetup,\n    McpCallToolArguments,\n    McpListToolsArguments,\n    McpSetup,\n    RemoteBrowserArguments,\n    RemoteBrowserSetup,\n    SpiderFetchArguments,\n    SpiderSetup,\n    UnstructuredPartitionArguments,\n    UnstructuredSetup,\n    WeatherGetArguments,\n    WeatherSetup,\n    WikipediaSearchArguments,\n)\nfrom .models import (\n    AlgoliaSearchOutput,\n    ArxivSearchOutput,\n    BaseProvider,\n    BaseProviderMethod,\n    BraveSearchOutput,\n    BrowserbaseCompleteSessionOutput,\n    BrowserbaseCreateSessionOutput,\n    BrowserbaseExtensionOutput,\n    BrowserbaseGetSessionLiveUrlsOutput,\n    BrowserbaseGetSessionOutput,\n    BrowserbaseListSessionsOutput,\n    CloudinaryEditOutput,\n    CloudinaryUploadOutput,\n    EmailOutput,\n    FfmpegSearchOutput,\n    GoogleSheetsBatchReadOutput,\n    GoogleSheetsBatchWriteOutput,\n    GoogleSheetsClearOutput,\n    GoogleSheetsReadOutput,\n    GoogleSheetsWriteOutput,\n    LlamaParseFetchOutput,\n    MailgunSendEmailOutput,\n    McpListToolsOutput,\n    McpToolCallOutput,\n    ProviderInfo,\n    RemoteBrowserOutput,\n    SpiderOutput,\n    UnstructuredParseOutput,\n    WeatherGetOutput,\n    WikipediaSearchOutput,\n)\n\nwikipedia = BaseProvider(\n    provider=\"wikipedia\",\n    setup=None,\n    methods=[\n        BaseProviderMethod(\n            method=\"search\",\n            description=\"Search for a page on Wikipedia\",\n            arguments=WikipediaSearchArguments,\n            output=WikipediaSearchOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://www.wikipedia.org/\",\n        docs=\"https://www.wikipedia.org/wiki/Main_Page\",\n        icon=\"https://www.wikipedia.org/static/favicon/wikipedia.ico\",\n        friendly_name=\"Wikipedia\",\n    ),\n)\n\nweather = BaseProvider(\n    provider=\"weather\",\n    setup=WeatherSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"get\",\n            description=\"Get the current weather for a city\",\n            arguments=WeatherGetArguments,\n            output=WeatherGetOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://www.weatherapi.com/\",\n        docs=\"https://www.weatherapi.com/docs/\",\n        icon=\"https://www.weatherapi.com/favicon.ico\",\n        friendly_name=\"Weather API\",\n    ),\n)\n\nspider = BaseProvider(\n    provider=\"spider\",\n    setup=SpiderSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"crawl\",\n            description=\"Crawl a website and extract data\",\n            arguments=SpiderFetchArguments,\n            output=SpiderOutput,\n        ),\n        BaseProviderMethod(\n            method=\"links\",\n            description=\"Extract all links from the webpage\",\n            arguments=SpiderFetchArguments,\n            output=SpiderOutput,\n        ),\n        BaseProviderMethod(\n            method=\"screenshot\",\n            description=\"Take a screenshot of the webpage\",\n            arguments=SpiderFetchArguments,\n            output=SpiderOutput,\n        ),\n        BaseProviderMethod(\n            method=\"search\",\n            description=\"Search content within the webpage\",\n            arguments=SpiderFetchArguments,\n            output=SpiderOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://spider.com/\",\n        docs=\"https://spider.com/docs/\",\n        icon=\"https://spider.com/favicon.ico\",\n        friendly_name=\"Spider\",\n    ),\n)\n\nbrave = BaseProvider(\n    provider=\"brave\",\n    setup=BraveSearchSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"search\",\n            description=\"Search with Brave\",\n            arguments=BraveSearchArguments,\n            output=BraveSearchOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://brave.com/\",\n        docs=\"https://brave.com/docs/\",\n        icon=\"https://brave.com/favicon.ico\",\n        friendly_name=\"Brave Search\",\n    ),\n)\n\nllama_parse = BaseProvider(\n    provider=\"llama_parse\",\n    setup=LlamaParseSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"parse\",\n            description=\"Parse and extract the files\",\n            arguments=LlamaParseFetchArguments,\n            output=LlamaParseFetchOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        friendly_name=\"LlamaParse\",\n        url=\"https://www.llamaindex.ai/\",\n        docs=\"https://docs.cloud.llamaindex.ai/llamaparse/getting_started\",\n        icon=\"https://www.llamaindex.ai/favicon.ico\",\n    ),\n)\n\nemail = BaseProvider(\n    provider=\"email\",\n    setup=EmailSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"send\",\n            description=\"Send an email\",\n            arguments=EmailArguments,\n            output=EmailOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        friendly_name=\"Email\",\n    ),\n)\n\nbrowserbase = BaseProvider(\n    provider=\"browserbase\",\n    setup=BrowserbaseSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"list_sessions\",\n            description=\"List sessions in Browserbase\",\n            arguments=BrowserbaseListSessionsArguments,\n            output=BrowserbaseListSessionsOutput,\n        ),\n        BaseProviderMethod(\n            method=\"create_session\",\n            description=\"Create a session in Browserbase\",\n            arguments=BrowserbaseCreateSessionArguments,\n            output=BrowserbaseCreateSessionOutput,\n        ),\n        BaseProviderMethod(\n            method=\"get_session\",\n            description=\"Get a session in Browserbase\",\n            arguments=BrowserbaseGetSessionArguments,\n            output=BrowserbaseGetSessionOutput,\n        ),\n        BaseProviderMethod(\n            method=\"complete_session\",\n            description=\"Complete a session in Browserbase\",\n            arguments=BrowserbaseCompleteSessionArguments,\n            output=BrowserbaseCompleteSessionOutput,\n        ),\n        BaseProviderMethod(\n            method=\"get_live_urls\",\n            description=\"Get sessions' live urls in Browserbase\",\n            arguments=BrowserbaseGetSessionLiveUrlsArguments,\n            output=BrowserbaseGetSessionLiveUrlsOutput,\n        ),\n        BaseProviderMethod(\n            method=\"install_extension_from_github\",\n            description=\"Install an extension from GitHub to the browserbase context\",\n            arguments=BrowserbaseExtensionArguments,\n            output=BrowserbaseExtensionOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        friendly_name=\"BrowserBase\",\n        url=\"https://browserbase.com/\",\n        docs=\"https://browserbase.com/docs/\",\n        icon=\"https://browserbase.com/favicon.ico\",\n    ),\n)\n\nremote_browser = BaseProvider(\n    provider=\"remote_browser\",\n    setup=RemoteBrowserSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"perform_action\",\n            description=\"Perform an action in the browser\",\n            arguments=RemoteBrowserArguments,\n            output=RemoteBrowserOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        friendly_name=\"Remote Browser\",\n        url=\"https://playwright.dev/\",\n        docs=\"https://playwright.dev/docs/\",\n        icon=\"https://playwright.dev/favicon.ico\",\n    ),\n)\n\nffmpeg = BaseProvider(\n    provider=\"ffmpeg\",\n    setup=None,\n    methods=[\n        BaseProviderMethod(\n            method=\"bash_cmd\",\n            description=\"Run FFmpeg bash command\",\n            arguments=FfmpegSearchArguments,\n            output=FfmpegSearchOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://ffmpeg.org/\",\n        docs=\"https://ffmpeg.org/documentation.html\",\n        icon=\"https://upload.wikimedia.org/wikipedia/commons/5/5f/FFmpeg_Logo_new.svg\",\n        friendly_name=\"Ffmpeg\",\n    ),\n)\n\ncloudinary = BaseProvider(\n    provider=\"cloudinary\",\n    setup=CloudinarySetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"media_edit\",\n            description=\"Edit media in Cloudinary\",\n            arguments=CloudinaryEditArguments,\n            output=CloudinaryEditOutput,\n        ),\n        BaseProviderMethod(\n            method=\"media_upload\",\n            description=\"Upload media to Cloudinary\",\n            arguments=CloudinaryUploadArguments,\n            output=CloudinaryUploadOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://cloudinary.com/\",\n        docs=\"https://cloudinary.com/documentation/python_quickstart\",\n        icon=\"https://cloudinary.com/favicon.ico\",\n        friendly_name=\"Cloudinary\",\n    ),\n)\n\narxiv = BaseProvider(\n    provider=\"arxiv\",\n    setup=None,\n    methods=[\n        BaseProviderMethod(\n            method=\"search\",\n            description=\"Search in Arxiv\",\n            arguments=ArxivSearchArguments,\n            output=ArxivSearchOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://pypi.org/project/arxiv/\",\n        docs=\"https://info.arxiv.org/help/api/index.html\",\n        icon=\"https://arxiv.com/favicon.ico\",\n        friendly_name=\"Arxiv Search\",\n    ),\n)\n\nunstructured = BaseProvider(\n    provider=\"unstructured\",\n    setup=UnstructuredSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"parse\",\n            description=\"Parse documents into structured elements\",\n            arguments=UnstructuredPartitionArguments,\n            output=UnstructuredParseOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://unstructured.io/\",\n        docs=\"https://docs.unstructured.io/\",\n        icon=\"https://unstructured.io/favicon.ico\",\n        friendly_name=\"Unstructured.io\",\n    ),\n)\n\nalgolia = BaseProvider(\n    provider=\"algolia\",\n    setup=AlgoliaSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"search\",\n            description=\"Search for content in an Algolia index\",\n            arguments=AlgoliaSearchArguments,\n            output=AlgoliaSearchOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://www.algolia.com/\",\n        docs=\"https://www.algolia.com/doc/\",\n        icon=\"https://www.algolia.com/favicon.ico\",\n        friendly_name=\"Algolia Search\",\n    ),\n)\n\nmailgun = BaseProvider(\n    provider=\"mailgun\",\n    setup=MailgunSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"send_email\",\n            description=\"Send an email\",\n            arguments=MailgunSendEmailArguments,\n            output=MailgunSendEmailOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        friendly_name=\"Mailgun\",\n        url=\"https://www.mailgun.com/\",\n        docs=\"https://documentation.mailgun.com/\",\n        icon=\"https://www.mailgun.com/favicon.ico\",\n    ),\n)\n\n# MCP provider: dynamic protocol-backed tool execution\nmcp = BaseProvider(\n    provider=\"mcp\",\n    setup=McpSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"list_tools\",\n            description=\"List tools exposed by an MCP server\",\n            arguments=McpListToolsArguments,\n            output=McpListToolsOutput,\n        ),\n        BaseProviderMethod(\n            method=\"call_tool\",\n            description=\"Call a named tool on an MCP server\",\n            arguments=McpCallToolArguments,\n            output=McpToolCallOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        friendly_name=\"Model Context Protocol\",\n        url=\"https://modelcontextprotocol.io/\",\n        docs=\"https://spec.modelcontextprotocol.io/\",\n        icon=\"https://modelcontextprotocol.io/favicon.ico\",\n    ),\n)\n\ngoogle_sheets = BaseProvider(\n    provider=\"google_sheets\",\n    setup=GoogleSheetsSetup,\n    methods=[\n        BaseProviderMethod(\n            method=\"read_values\",\n            description=\"Read values from a specific range in a Google Sheets spreadsheet\",\n            arguments=GoogleSheetsReadArguments,\n            output=GoogleSheetsReadOutput,\n        ),\n        BaseProviderMethod(\n            method=\"write_values\",\n            description=\"Write or update values in a specific range in a Google Sheets spreadsheet\",\n            arguments=GoogleSheetsWriteArguments,\n            output=GoogleSheetsWriteOutput,\n        ),\n        BaseProviderMethod(\n            method=\"append_values\",\n            description=\"Append new rows of data to a Google Sheets spreadsheet\",\n            arguments=GoogleSheetsAppendArguments,\n            output=GoogleSheetsWriteOutput,\n        ),\n        BaseProviderMethod(\n            method=\"clear_values\",\n            description=\"Clear values from a specific range in a Google Sheets spreadsheet\",\n            arguments=GoogleSheetsClearArguments,\n            output=GoogleSheetsClearOutput,\n        ),\n        BaseProviderMethod(\n            method=\"batch_read\",\n            description=\"Read values from multiple ranges in a Google Sheets spreadsheet\",\n            arguments=GoogleSheetsBatchReadArguments,\n            output=GoogleSheetsBatchReadOutput,\n        ),\n        BaseProviderMethod(\n            method=\"batch_write\",\n            description=\"Write values to multiple ranges in a Google Sheets spreadsheet\",\n            arguments=GoogleSheetsBatchWriteArguments,\n            output=GoogleSheetsBatchWriteOutput,\n        ),\n    ],\n    info=ProviderInfo(\n        url=\"https://sheets.google.com/\",\n        docs=\"https://developers.google.com/sheets/api\",\n        icon=\"https://www.gstatic.com/images/branding/product/1x/sheets_2020q4_48dp.png\",\n        friendly_name=\"Google Sheets\",\n    ),\n)\n\navailable_providers: dict[str, BaseProvider] = {\n    \"wikipedia\": wikipedia,\n    \"weather\": weather,\n    \"spider\": spider,\n    \"brave\": brave,\n    \"email\": email,\n    \"browserbase\": browserbase,\n    \"remote_browser\": remote_browser,\n    \"llama_parse\": llama_parse,\n    \"ffmpeg\": ffmpeg,\n    \"cloudinary\": cloudinary,\n    \"arxiv\": arxiv,\n    \"unstructured\": unstructured,\n    \"algolia\": algolia,\n    \"mailgun\": mailgun,\n    \"mcp\": mcp,\n    \"google_sheets\": google_sheets,\n}\n"
  },
  {
    "path": "src/integrations-service/integrations/routers/__init__.py",
    "content": ""
  },
  {
    "path": "src/integrations-service/integrations/routers/execution/__init__.py",
    "content": "from .execute import execute as execute\n"
  },
  {
    "path": "src/integrations-service/integrations/routers/execution/execute.py",
    "content": "from fastapi import HTTPException\n\nfrom ...models.base_models import IdentifierName\nfrom ...models.execution import ExecutionRequest, ExecutionResponse\nfrom ...utils.execute_integration import execute_integration\nfrom .router import router\n\n\n@router.post(\"/execute/{provider}\", tags=[\"execution\"])\nasync def execute_default(\n    provider: IdentifierName,\n    data: ExecutionRequest,\n) -> ExecutionResponse:\n    try:\n        return await execute_integration(\n            provider=provider,\n            arguments=data.arguments,\n            setup=data.setup,\n        )\n    except ValueError as e:\n        raise HTTPException(status_code=400, detail=str(e))\n\n\n@router.post(\"/execute/{provider}/{method}\", tags=[\"execution\"])\nasync def execute(\n    provider: IdentifierName,\n    method: IdentifierName,\n    data: ExecutionRequest,\n) -> ExecutionResponse:\n    try:\n        return await execute_integration(\n            provider=provider,\n            arguments=data.arguments,\n            setup=data.setup,\n            method=method,\n        )\n    except ValueError as e:\n        raise HTTPException(status_code=400, detail=str(e))\n"
  },
  {
    "path": "src/integrations-service/integrations/routers/execution/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/integrations-service/integrations/routers/integrations/__init__.py",
    "content": "from .get_integration import get_integration as get_integration\nfrom .get_integration_tool import get_integration_tool as get_integration_tool\nfrom .get_integrations import get_integrations as get_integrations\n"
  },
  {
    "path": "src/integrations-service/integrations/routers/integrations/get_integration.py",
    "content": "from fastapi import HTTPException\n\nfrom ... import providers as available_providers\nfrom ...models.base_models import BaseProvider\nfrom .router import router\n\n\n@router.get(\"/integrations/{provider}\", tags=[\"integration\"])\nasync def get_integration(provider: str) -> dict:\n    integration: BaseProvider | None = getattr(available_providers, provider, None)\n\n    if integration is None:\n        raise HTTPException(status_code=404, detail=\"Integration not found\")\n\n    return {\n        \"provider\": integration.provider,\n        \"setup\": integration.setup.model_json_schema() if integration.setup else None,\n        \"methods\": [\n            {\n                \"method\": m.method,\n                \"description\": m.description,\n                \"arguments\": m.arguments.model_json_schema(),\n                \"output\": m.output.model_json_schema(),\n            }\n            for m in integration.methods\n        ],\n        \"info\": integration.info.model_dump_json(),\n    }\n"
  },
  {
    "path": "src/integrations-service/integrations/routers/integrations/get_integration_tool.py",
    "content": "from fastapi import HTTPException\n\nfrom ...models.base_models import BaseProvider, BaseProviderMethod\nfrom .router import router\n\n\ndef convert_to_openai_tool(\n    provider: BaseProvider,\n    method: BaseProviderMethod | None = None,\n) -> dict:\n    method = method or provider.methods[0]\n    name = f\"{provider.provider}_{method.method}\"\n    description = method.description\n    arguments = method.arguments.model_json_schema()\n\n    return {\n        \"type\": \"function\",\n        \"function\": {\n            \"name\": name,\n            \"description\": description,\n            \"parameters\": arguments,\n        },\n    }\n\n\n@router.get(\"/integrations/{provider}/tool\", tags=[\"integration_tool\"])\n@router.get(\"/integrations/{provider}/{method}/tool\", tags=[\"integration_tool\"])\nasync def get_integration_tool(provider: str, method: str | None = None):\n    from ...providers import available_providers\n\n    provider_obj: BaseProvider | None = available_providers.get(provider, None)\n\n    if not provider_obj:\n        raise HTTPException(status_code=404, detail=\"Integration not found\")\n\n    if method:\n        for m in provider_obj.methods:\n            if m.method == method:\n                return convert_to_openai_tool(provider_obj, m)\n    else:\n        return convert_to_openai_tool(provider_obj)\n\n    raise HTTPException(status_code=404, detail=\"Integration not found\")\n"
  },
  {
    "path": "src/integrations-service/integrations/routers/integrations/get_integrations.py",
    "content": "from ...providers import available_providers\nfrom .router import router\n\n\n@router.get(\"/integrations\", tags=[\"integrations\"])\nasync def get_integrations() -> list[dict]:\n    return [\n        {\n            \"provider\": p.provider,\n            \"setup\": p.setup.model_json_schema() if p.setup else None,\n            \"methods\": [\n                {\n                    \"method\": m.method,\n                    \"description\": m.description,\n                    \"arguments\": m.arguments.model_json_schema(),\n                    \"output\": m.output.model_json_schema(),\n                }\n                for m in p.methods\n            ],\n            \"info\": {\n                \"url\": p.info.url,\n                \"docs\": p.info.docs,\n                \"icon\": p.info.icon,\n                \"friendly_name\": p.info.friendly_name,\n            },\n        }\n        for p in available_providers.values()\n    ]\n"
  },
  {
    "path": "src/integrations-service/integrations/routers/integrations/router.py",
    "content": "from fastapi import APIRouter\n\nrouter: APIRouter = APIRouter()\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/__init__.py",
    "content": ""
  },
  {
    "path": "src/integrations-service/integrations/utils/execute_integration.py",
    "content": "import importlib\n\nfrom beartype import beartype\nfrom fastapi import HTTPException\n\nfrom .. import providers as available_providers\nfrom ..models.base_models import BaseProvider, IdentifierName\nfrom ..models.execution import (\n    ExecutionArguments,\n    ExecutionError,\n    ExecutionResponse,\n    ExecutionSetup,\n)\n\n\n@beartype\nasync def execute_integration(\n    *,\n    provider: IdentifierName,\n    method: IdentifierName | None = None,\n    setup: ExecutionSetup | None = None,\n    arguments: ExecutionArguments,\n) -> ExecutionResponse:\n    provider_obj = getattr(available_providers, provider, None)\n    if not provider_obj or not isinstance(provider_obj, BaseProvider):\n        raise HTTPException(status_code=400, detail=f\"Unknown provider: {provider}\")\n\n    method = method or provider_obj.methods[0].method\n    method_config = next((m for m in provider_obj.methods if m.method == method), None)\n    if not method_config:\n        raise HTTPException(\n            status_code=400,\n            detail=f\"Unknown method: {method} for provider: {provider}\",\n        )\n\n    provider_module = importlib.import_module(\n        f\"integrations.utils.integrations.{provider_obj.provider}\",\n        package=\"integrations\",\n    )\n\n    if setup is not None and provider_obj.setup and not isinstance(setup, provider_obj.setup):\n        setup = provider_obj.setup(**setup.model_dump())\n\n    arguments = (\n        method_config.arguments(**arguments.model_dump())\n        if not isinstance(arguments, method_config.arguments)\n        else arguments\n    )\n\n    try:\n        return await getattr(provider_module, method)(\n            **({\"setup\": setup} if setup else {}),\n            arguments=arguments,\n        )\n    except BaseException as e:\n        return ExecutionError(error=str(e))\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/__init__.py",
    "content": ""
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/algolia.py",
    "content": "import json\n\nfrom algoliasearch.search.client import SearchClient\nfrom beartype import beartype\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import AlgoliaSearchArguments, AlgoliaSetup\nfrom ...models import AlgoliaSearchOutput\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def search(setup: AlgoliaSetup, arguments: AlgoliaSearchArguments) -> AlgoliaSearchOutput:\n    \"\"\"\n    Searches for content in an Algolia index asynchronously.\n    \"\"\"\n\n    api_key = setup.algolia_api_key\n    application_id = setup.algolia_application_id\n\n    # Build the search request\n    search_params = {\n        \"indexName\": arguments.index_name,\n        \"query\": arguments.query,\n        \"hitsPerPage\": arguments.hits_per_page,\n    }\n\n    # Add attributes to retrieve if provided\n    if arguments.attributes_to_retrieve is not None:\n        search_params[\"attributesToRetrieve\"] = arguments.attributes_to_retrieve\n\n    # Finalize the search request\n    search_request = {\"requests\": [search_params]}\n\n    # Initialize the Algolia client\n    async with SearchClient(application_id, api_key) as client:\n        result = json.loads((await client.search(search_request)).to_json())\n\n    # Extract results safely and get the first result if available\n    results = result.get(\"results\", [])\n    first_result = results[0] if results else {}\n\n    # Extract hits directly from first_result\n    hits = first_result.get(\"hits\", [])\n\n    # Build metadata dict with all relevant information\n    metadata = {\n        \"query\": arguments.query,\n        \"nbHits\": first_result.get(\"nbHits\", 0),\n        \"page\": first_result.get(\"page\", 0),\n        \"nbPages\": first_result.get(\"nbPages\", 0),\n        \"processingTimeMS\": first_result.get(\"processingTimeMS\", 0),\n    }\n\n    # Return with appropriate hits based on whether results were found\n    return AlgoliaSearchOutput(\n        hits=hits,\n        metadata=metadata,\n    )\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/arxiv.py",
    "content": "import base64\nimport tempfile\n\nimport arxiv\nfrom beartype import beartype\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import ArxivSearchArguments\nfrom ...models import ArxivSearchOutput, ArxivSearchResult\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def search(arguments: ArxivSearchArguments) -> ArxivSearchOutput:\n    \"\"\"\n    Searches Arxiv with the provided query.\n\n    Args:\n        arguments (ArxivSearchArguments): The search parameters including query,\n                                           maximum results, sorting criteria, and\n                                           download options.\n\n    Returns:\n        ArxivSearchOutput: The search results wrapped in an output object.\n    \"\"\"\n    client = arxiv.Client()\n    sort_criterion = {\n        \"submittedDate\": arxiv.SortCriterion.SubmittedDate,\n        \"lastUpdatedDate\": arxiv.SortCriterion.LastUpdatedDate,\n    }.get(arguments.sort_by, arxiv.SortCriterion.Relevance)\n\n    sort_order = (\n        arxiv.SortOrder.Descending\n        if arguments.sort_order == \"descending\"\n        else arxiv.SortOrder.Ascending\n    )\n\n    search = arxiv.Search(\n        query=arguments.query,\n        max_results=arguments.max_results,\n        sort_by=sort_criterion,\n        sort_order=sort_order,\n    )\n\n    results = []\n    search_results = client.results(search)\n\n    def create_arxiv_search_result(result, pdf_content=None):\n        return ArxivSearchResult(\n            entry_id=result.entry_id,\n            title=result.title,\n            authors=[author.name for author in result.authors],\n            summary=result.summary.replace(\"\\n\", \"\"),\n            published=result.published.strftime(\"%Y-%m-%d %H:%M:%S\"),\n            updated=result.updated.strftime(\"%Y-%m-%d %H:%M:%S\"),\n            comment=result.comment,\n            journal_ref=result.journal_ref,\n            doi=result.doi,\n            primary_category=result.primary_category,\n            categories=result.categories,\n            links=[link.href for link in result.links],\n            pdf_url=result.pdf_url,\n            pdf_downloaded={\n                \"base64\": pdf_content,\n                \"mime_type\": \"application/pdf\",\n                \"title\": result.title,\n            }\n            if pdf_content\n            else None,\n        )\n\n    if arguments.download_pdf:\n        for result in search_results:\n            with tempfile.TemporaryDirectory() as temp_dir:\n                result.download_pdf(dirpath=temp_dir, filename=f\"{result.title}.pdf\")\n                with open(f\"{temp_dir}/{result.title}.pdf\", \"rb\") as pdf_file:\n                    pdf_content = base64.b64encode(pdf_file.read()).decode(\"utf-8\")\n            results.append(create_arxiv_search_result(result, pdf_content))\n    else:\n        results.extend(create_arxiv_search_result(result) for result in search_results)\n\n    return ArxivSearchOutput(result=results)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/brave.py",
    "content": "import json\n\nfrom beartype import beartype\nfrom langchain_community.tools import BraveSearch\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import BraveSearchArguments, BraveSearchSetup\nfrom ...models import BraveSearchOutput, SearchResult\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def search(setup: BraveSearchSetup, arguments: BraveSearchArguments) -> BraveSearchOutput:\n    \"\"\"\n    Searches Brave Search with the provided query.\n    \"\"\"\n\n    tool = BraveSearch.from_api_key(api_key=setup.brave_api_key, search_kwargs={\"count\": 3})\n\n    result = tool.run(arguments.query)\n\n    try:\n        parsed_result = [SearchResult(**item) for item in json.loads(result)]\n    except json.JSONDecodeError as e:\n        msg = \"Malformed JSON response from Brave Search\"\n        raise ValueError(msg) from e\n\n    return BraveSearchOutput(result=parsed_result)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/browserbase.py",
    "content": "import asyncio\nimport contextlib\nimport os\nimport tempfile\n\nimport httpx\nfrom beartype import beartype\nfrom browserbase import Browserbase\nfrom browserbase.types.session import Session\nfrom browserbase.types.session_create_params import BrowserSettings\nfrom browserbase.types.session_live_urls import SessionLiveURLs\nfrom pydantic import TypeAdapter\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import (\n    BrowserbaseCompleteSessionArguments,\n    BrowserbaseCreateSessionArguments,\n    BrowserbaseExtensionArguments,\n    BrowserbaseGetSessionArguments,\n    BrowserbaseGetSessionLiveUrlsArguments,\n    BrowserbaseListSessionsArguments,\n    BrowserbaseSetup,\n)\nfrom ...models import (\n    BrowserbaseCompleteSessionOutput,\n    BrowserbaseCreateSessionOutput,\n    BrowserbaseGetSessionLiveUrlsOutput,\n    BrowserbaseGetSessionOutput,\n    BrowserbaseListSessionsOutput,\n)\nfrom ...models.browserbase import BrowserbaseExtensionOutput\n\n\ndef get_browserbase_client(setup: BrowserbaseSetup) -> Browserbase:\n    return Browserbase(\n        api_key=setup.api_key,\n    )\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def list_sessions(\n    setup: BrowserbaseSetup,\n    arguments: BrowserbaseListSessionsArguments,\n) -> BrowserbaseListSessionsOutput:\n    client = get_browserbase_client(setup)\n\n    try:\n        # Add status filter if provided\n        params = {}\n        if hasattr(arguments, \"status\") and arguments.status:\n            params[\"status\"] = arguments.status\n\n        sessions: list[Session] = client.sessions.list(**params)\n        return BrowserbaseListSessionsOutput(sessions=sessions)\n    except Exception as e:\n        print(f\"Error listing sessions: {e}\")\n        raise\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def create_session(\n    setup: BrowserbaseSetup,\n    arguments: BrowserbaseCreateSessionArguments,\n) -> BrowserbaseCreateSessionOutput:\n    client = get_browserbase_client(setup)\n\n    # Convert browser settings using TypeAdapter\n    browser_settings = TypeAdapter(BrowserSettings).validate_python(arguments.browser_settings)\n\n    # Create session parameters\n    create_params = {\n        \"project_id\": arguments.project_id or setup.project_id,\n        \"browser_settings\": browser_settings,\n    }\n\n    # Only add extension_id if it's provided and not None/empty\n    if arguments.extension_id:\n        create_params[\"extension_id\"] = arguments.extension_id\n\n    # Changed to use sessions.create() with direct parameters\n    session = client.sessions.create(**create_params)\n\n    # Convert datetime fields to ISO format strings\n    return BrowserbaseCreateSessionOutput(\n        id=session.id,\n        connect_url=session.connect_url,\n        createdAt=session.created_at.isoformat() if session.created_at else None,\n        projectId=session.project_id,\n        startedAt=session.started_at.isoformat() if session.started_at else None,\n        endedAt=session.ended_at.isoformat() if session.ended_at else None,\n        expiresAt=session.expires_at.isoformat() if session.expires_at else None,\n        status=session.status,\n        proxyBytes=session.proxy_bytes,\n        avgCpuUsage=session.avg_cpu_usage,\n        memoryUsage=session.memory_usage,\n        keepAlive=session.keep_alive,\n        contextId=session.context_id,\n    )\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def get_session(\n    setup: BrowserbaseSetup,\n    arguments: BrowserbaseGetSessionArguments,\n) -> BrowserbaseGetSessionOutput:\n    client = get_browserbase_client(setup)\n\n    # Changed from get_session() to sessions.retrieve()\n    session = client.sessions.retrieve(id=arguments.id)\n\n    return BrowserbaseGetSessionOutput(\n        id=session.id,\n        createdAt=session.created_at.isoformat() if session.created_at else None,\n        projectId=session.project_id,\n        startedAt=session.started_at.isoformat() if session.started_at else None,\n        endedAt=session.ended_at.isoformat() if session.ended_at else None,\n        expiresAt=session.expires_at.isoformat() if session.expires_at else None,\n        status=session.status,\n        proxyBytes=session.proxy_bytes,\n        avgCpuUsage=session.avg_cpu_usage,\n        memoryUsage=session.memory_usage,\n        keepAlive=session.keep_alive,\n        contextId=session.context_id,\n    )\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def complete_session(\n    setup: BrowserbaseSetup,\n    arguments: BrowserbaseCompleteSessionArguments,\n) -> BrowserbaseCompleteSessionOutput:\n    client = get_browserbase_client(setup)\n\n    try:\n        # Changed to use sessions.update() with REQUEST_RELEASE status\n        client.sessions.update(\n            id=arguments.id,\n            status=\"REQUEST_RELEASE\",\n            project_id=setup.project_id,\n        )\n    except Exception:\n        return BrowserbaseCompleteSessionOutput(success=False)\n\n    return BrowserbaseCompleteSessionOutput(success=True)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def get_live_urls(\n    setup: BrowserbaseSetup,\n    arguments: BrowserbaseGetSessionLiveUrlsArguments,\n) -> BrowserbaseGetSessionLiveUrlsOutput:\n    \"\"\"Get the live URLs for a session.\"\"\"\n    client = get_browserbase_client(setup)\n    try:\n        # Use the debug() method to get live URLs\n        urls: SessionLiveURLs = await asyncio.to_thread(client.sessions.debug, id=arguments.id)\n        return BrowserbaseGetSessionLiveUrlsOutput(urls=urls)\n    except Exception as e:\n        print(f\"Error getting debug URLs: {e}\")\n        raise\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def install_extension_from_github(\n    setup: BrowserbaseSetup,\n    arguments: BrowserbaseExtensionArguments,\n) -> BrowserbaseExtensionOutput:\n    \"\"\"Download and install an extension from GitHub to the user's Browserbase account.\"\"\"\n    try:\n        github_url = f\"https://github.com/{arguments.repository_name}/archive/refs/tags/{arguments.ref}.zip\"\n\n        async with httpx.AsyncClient(timeout=600) as client:\n            # Download the extension zip\n            try:\n                response = await client.get(github_url, follow_redirects=True)\n                response.raise_for_status()\n            except httpx.HTTPError as e:\n                print(f\"Error downloading extension from GitHub: {e}\")\n                raise\n\n            with tempfile.NamedTemporaryFile(\n                delete=True,\n                delete_on_close=False,\n                suffix=\".zip\",\n            ) as tmp_file:\n                tmp_file.write(response.content)\n                tmp_file_path = tmp_file.name\n\n                upload_url = \"https://api.browserbase.com/v1/extensions\"\n                headers = {\n                    \"X-BB-API-Key\": setup.api_key,\n                }\n\n                try:\n                    with open(tmp_file_path, \"rb\") as f:\n                        files = {\"file\": f}\n                        upload_response = await client.post(\n                            upload_url,\n                            headers=headers,\n                            files=files,\n                        )\n                        upload_response.raise_for_status()\n                except httpx.HTTPError as e:\n                    print(f\"Error uploading extension to Browserbase: {e}\")\n                    if hasattr(e, \"response\") and e.response is not None:\n                        print(f\"Response content: {e.response.text}\")\n                    raise\n\n                # Delete the temporary file\n                with contextlib.suppress(FileNotFoundError):\n                    os.remove(tmp_file_path)\n\n                return BrowserbaseExtensionOutput(id=upload_response.json()[\"id\"])\n    except Exception as e:\n        print(f\"Unexpected error in install_extension_from_github: {e}\")\n        raise\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/cloudinary.py",
    "content": "import base64\nimport uuid\n\nimport aiohttp\nimport cloudinary\nimport cloudinary.uploader\nfrom beartype import beartype\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import (\n    CloudinaryEditArguments,\n    CloudinarySetup,\n    CloudinaryUploadArguments,\n)\nfrom ...models.cloudinary import CloudinaryEditOutput, CloudinaryUploadOutput\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def media_upload(\n    setup: CloudinarySetup,\n    arguments: CloudinaryUploadArguments,\n) -> CloudinaryUploadOutput:\n    \"\"\"\n    Upload media to Cloudinary.\n    \"\"\"\n    api_key = setup.cloudinary_api_key\n    api_secret = setup.cloudinary_api_secret\n    cloud_name = setup.cloudinary_cloud_name\n\n    try:\n        # Configure Cloudinary with credentials\n        cloudinary.config(\n            cloud_name=cloud_name,\n            api_key=api_key,\n            api_secret=api_secret,\n            **(setup.params or {}),\n        )\n\n        # Upload the file\n        upload_params = arguments.upload_params or {}\n        upload_params[\"public_id\"] = (\n            arguments.public_id if arguments.public_id else str(uuid.uuid4())\n        )\n\n        result = cloudinary.uploader.upload(arguments.file, **upload_params)\n\n        meta_data = {\n            key: value\n            for key, value in result.items()\n            if key not in [\"secure_url\", \"public_id\"]\n        }\n\n        if arguments.return_base64:\n            async with (\n                aiohttp.ClientSession() as session,\n                session.get(result[\"secure_url\"]) as response,\n            ):\n                if response.status == 200:\n                    content = await response.read()\n                    base64_encoded = base64.b64encode(content).decode(\"utf-8\")\n                    result[\"base64\"] = base64_encoded\n                else:\n                    msg = f\"Failed to download file from URL: {result['secure_url']}\"\n                    raise RuntimeError(msg)\n\n        return CloudinaryUploadOutput(\n            url=result[\"secure_url\"],\n            public_id=result[\"public_id\"],\n            meta_data=meta_data,\n            base64=result[\"base64\"] if arguments.return_base64 else None,\n        )\n\n    except cloudinary.exceptions.Error as e:\n        msg = f\"Cloudinary error occurred: {e}\"\n        raise RuntimeError(msg)\n    except Exception as e:\n        msg = f\"An unexpected error occurred: {e}\"\n        raise RuntimeError(msg)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def media_edit(\n    setup: CloudinarySetup,\n    arguments: CloudinaryEditArguments,\n) -> CloudinaryEditOutput:\n    \"\"\"\n    Edit media in Cloudinary.\n    \"\"\"\n    api_key = setup.cloudinary_api_key\n    api_secret = setup.cloudinary_api_secret\n    cloud_name = setup.cloudinary_cloud_name\n\n    try:\n        # Configure Cloudinary with credentials\n        cloudinary.config(\n            cloud_name=cloud_name,\n            api_key=api_key,\n            api_secret=api_secret,\n            **(setup.params or {}),\n        )\n\n        # Generate transformed URL\n        transformed_url = cloudinary.utils.cloudinary_url(\n            arguments.public_id,\n            transformation=arguments.transformation,\n        )\n        if not transformed_url or not transformed_url[0]:\n            return CloudinaryEditOutput(\n                transformed_url=\"The transformation failed\",\n                base64=None,\n            )\n        if arguments.return_base64:\n            async with (\n                aiohttp.ClientSession() as session,\n                session.get(transformed_url[0]) as response,\n            ):\n                if response.status == 200:\n                    content = await response.read()\n                    base64_encoded = base64.b64encode(content).decode(\"utf-8\")\n                    transformed_url_base64 = base64_encoded\n                else:\n                    msg = f\"Failed to download file from URL: {transformed_url[0]}\"\n                    raise RuntimeError(msg)\n\n        return CloudinaryEditOutput(\n            transformed_url=transformed_url[0],\n            base64=transformed_url_base64 if arguments.return_base64 else None,\n        )\n\n    except cloudinary.exceptions.Error as e:\n        msg = f\"Cloudinary error occurred: {e}\"\n        raise RuntimeError(msg)\n    except Exception as e:\n        msg = f\"An unexpected error occurred: {e}\"\n        raise RuntimeError(msg)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/email.py",
    "content": "import asyncio\nfrom email.message import EmailMessage\nfrom smtplib import SMTP\n\nimport aiosmtplib\nfrom beartype import beartype\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import EmailArguments, EmailSetup\nfrom ...models import EmailOutput\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def send(setup: EmailSetup, arguments: EmailArguments) -> EmailOutput:\n    \"\"\"\n    Sends an email with the provided details using async SMTP.\n    \"\"\"\n    # AIDEV-NOTE: Using aiosmtplib for async email sending to prevent timeout issues\n\n    message = EmailMessage()\n    # AIDEV-NOTE: Enhanced HTML detection and proper charset setting for HTML emails\n    # Check if body contains HTML tags to determine content type\n    html_indicators = [\n        \"<html\",\n        \"<body\",\n        \"<div\",\n        \"<p>\",\n        \"<br\",\n        \"<table\",\n        \"<h1\",\n        \"<h2\",\n        \"<h3\",\n        \"<h4\",\n        \"<h5\",\n        \"<h6\",\n        \"<span\",\n        \"<a href=\",\n    ]\n    is_html = arguments.body and any(\n        indicator in arguments.body.lower() for indicator in html_indicators\n    )\n\n    if is_html:\n        # Set HTML content with UTF-8 charset for better international character support\n        message.set_content(arguments.body, subtype=\"html\", charset=\"utf-8\")\n    else:\n        # Plain text content with UTF-8 charset\n        message.set_content(arguments.body, charset=\"utf-8\")\n\n    message[\"Subject\"] = arguments.subject\n    message[\"From\"] = arguments.from_\n    message[\"To\"] = arguments.to\n\n    try:\n        # Use aiosmtplib for async SMTP operations\n        await aiosmtplib.send(\n            message,\n            hostname=setup.host,\n            port=setup.port,\n            username=setup.user,\n            password=setup.password,\n            start_tls=True,  # Use STARTTLS for port 587\n        )\n        return EmailOutput(success=True)\n    except Exception:\n        # If aiosmtplib fails, fall back to sync SMTP in thread pool\n        loop = asyncio.get_event_loop()\n\n        def send_sync():\n            with SMTP(setup.host, setup.port) as server:\n                server.starttls()  # Enable TLS for port 587\n                server.login(setup.user, setup.password)\n                server.send_message(message)\n\n        await loop.run_in_executor(None, send_sync)\n        return EmailOutput(success=True)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/ffmpeg.py",
    "content": "import asyncio\nimport base64\nimport os\nimport shutil\nimport tempfile\nfrom functools import lru_cache\n\nfrom beartype import beartype\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import FfmpegSearchArguments\nfrom ...models import FfmpegSearchOutput\n\n\n# Cache for format validation\n@lru_cache(maxsize=128)\ndef _sync_validate_format(binary_prefix: bytes) -> tuple[bool, str]:\n    \"\"\"Cached synchronous implementation of format validation\"\"\"\n    signatures = {\n        # Video formats\n        b\"\\x66\\x74\\x79\\x70\\x69\\x73\\x6f\\x6d\": \"video/mp4\",  # MP4\n        b\"\\x66\\x74\\x79\\x70\\x4d\\x53\\x4e\\x56\": \"video/mp4\",  # MP4\n        b\"\\x00\\x00\\x00\\x1c\\x66\\x74\\x79\\x70\": \"video/mp4\",  # MP4\n        b\"\\x1a\\x45\\xdf\\xa3\": \"video/webm\",  # WebM\n        b\"\\x00\\x00\\x01\\x00\": \"video/avi\",  # AVI\n        b\"\\x30\\x26\\xb2\\x75\": \"video/wmv\",  # WMV\n        # Audio formats\n        b\"\\x49\\x44\\x33\": \"audio/mpeg\",  # MP3\n        b\"\\xff\\xfb\": \"audio/mpeg\",  # MP3\n        b\"\\x52\\x49\\x46\\x46\": \"audio/wav\",  # WAV\n        b\"\\x4f\\x67\\x67\\x53\": \"audio/ogg\",  # OGG\n        b\"\\x66\\x4c\\x61\\x43\": \"audio/flac\",  # FLAC\n        # Image formats\n        b\"\\xff\\xd8\\xff\": \"image/jpeg\",  # JPEG\n        b\"\\x89\\x50\\x4e\\x47\": \"image/png\",  # PNG\n        b\"\\x47\\x49\\x46\": \"image/gif\",  # GIF\n        b\"\\x49\\x49\\x2a\\x00\": \"image/tiff\",  # TIFF\n        b\"\\x42\\x4d\": \"image/bmp\",  # BMP\n    }\n\n    for signature, mime_type in signatures.items():\n        if binary_prefix.startswith(signature):\n            return True, mime_type\n\n    return False, \"application/octet-stream\"\n\n\nasync def validate_format(binary_data: bytes) -> tuple[bool, str]:\n    \"\"\"Validate file format using file signatures\"\"\"\n    # Only check first 16 bytes for efficiency\n    binary_prefix = binary_data[:16]\n    return _sync_validate_format(binary_prefix)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def bash_cmd(arguments: FfmpegSearchArguments) -> FfmpegSearchOutput:\n    \"\"\"Execute a FFmpeg bash command using base64-encoded input data.\"\"\"\n    try:\n        # Decode base64 input\n        try:\n            if isinstance(arguments.file, str):\n                input_data = [base64.b64decode(arguments.file)]  # Convert single str to list\n            elif isinstance(arguments.file, list):\n                input_data = [base64.b64decode(file) for file in arguments.file]\n            else:\n                msg = \"Invalid file input\"\n                raise ValueError(msg)\n        except Exception:\n            return FfmpegSearchOutput(\n                fileoutput=\"Error: Invalid base64 input\",\n                result=False,\n                mime_type=None,\n            )\n\n        # Validate input format\n        if not isinstance(input_data, list):\n            return FfmpegSearchOutput(\n                fileoutput=\"Error: Input data must be a list\",\n                result=False,\n                mime_type=None,\n            )\n\n        for data in input_data:\n            is_valid, input_mime = await validate_format(data)\n            if not is_valid:\n                return FfmpegSearchOutput(\n                    fileoutput=\"Error: Unsupported input file format\",\n                    result=False,\n                    mime_type=None,\n                )\n\n        # Create temporary directory\n        temp_dir = tempfile.mkdtemp()\n\n        # Get the output filename from the last argument of the FFmpeg command\n        cmd_parts = arguments.cmd.split()\n        output_filename = cmd_parts[-1]  # e.g., \"output.mp4\"\n        output_path = os.path.join(temp_dir, output_filename)\n\n        # Modify FFmpeg command\n        for i, part in enumerate(cmd_parts):\n            if part == \"-i\" and i + 1 < len(cmd_parts):\n                cmd_parts[i + 1] = \"pipe:0\"\n        cmd_parts[-1] = output_path  # Replace the last argument with full output path\n        cmd = \" \".join(cmd_parts)\n\n        # Execute FFmpeg\n        process = await asyncio.create_subprocess_shell(\n            cmd,\n            stdin=asyncio.subprocess.PIPE,\n            stdout=asyncio.subprocess.PIPE,\n            stderr=asyncio.subprocess.PIPE,\n        )\n\n        # Ensure stdin is available (will satisfy type checker)\n        if process.stdin is None:\n            msg = \"Failed to open stdin pipe for FFmpeg process\"\n            raise RuntimeError(msg)\n\n        # Write each decoded image to FFmpeg's stdin\n        for image_data in input_data:\n            process.stdin.write(image_data)  # Send image to stdin\n            await process.stdin.drain()  # Ensure smooth streaming\n\n        # Close stdin to signal end of input\n        process.stdin.close()\n\n        # Process FFmpeg output\n        stdout, stderr = await process.communicate()\n        success = process.returncode == 0\n\n        if success and os.path.exists(output_path):\n            # Read the output file\n            with open(output_path, \"rb\") as f:\n                output_data = f.read()\n                # Convert to base64\n                output_base64 = base64.b64encode(output_data).decode(\"utf-8\")\n\n            _, output_mime = await validate_format(output_data)\n\n            # Clean up\n            shutil.rmtree(temp_dir)\n\n            return FfmpegSearchOutput(\n                fileoutput=output_base64,\n                result=True,\n                mime_type=output_mime,\n            )\n\n        # Clean up in case of failure\n        shutil.rmtree(temp_dir)\n        error_msg = stderr.decode() if stderr else \"Unknown error occurred\"\n        return FfmpegSearchOutput(\n            fileoutput=f\"Error: FFmpeg processing failed - {error_msg}\",\n            result=False,\n            mime_type=None,\n        )\n\n    except Exception as e:\n        # Clean up in case of exception\n        if \"temp_dir\" in locals():\n            shutil.rmtree(temp_dir)\n        return FfmpegSearchOutput(fileoutput=f\"Error: {e!s}\", result=False, mime_type=None)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/google_sheets.py",
    "content": "import base64\nimport json\n\nfrom beartype import beartype\nfrom google.oauth2 import service_account\nfrom googleapiclient.discovery import build\nfrom googleapiclient.errors import HttpError\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import (\n    GoogleSheetsAppendArguments,\n    GoogleSheetsBatchReadArguments,\n    GoogleSheetsBatchWriteArguments,\n    GoogleSheetsClearArguments,\n    GoogleSheetsReadArguments,\n    GoogleSheetsSetup,\n    GoogleSheetsWriteArguments,\n)\nfrom ...env import julep_google_sheets_service_account_json\nfrom ...models import (\n    GoogleSheetsBatchReadOutput,\n    GoogleSheetsBatchWriteOutput,\n    GoogleSheetsClearOutput,\n    GoogleSheetsReadOutput,\n    GoogleSheetsUpdateResponse,\n    GoogleSheetsValueRangeOutput,\n    GoogleSheetsWriteOutput,\n)\n\n\ndef get_sheets_service(setup: GoogleSheetsSetup):\n    \"\"\"\n    Create and return a Google Sheets service object using authentication credentials.\n\n    Args:\n        setup: The GoogleSheetsSetup containing authentication credentials\n\n    Returns:\n        A Google Sheets service object\n\n    Raises:\n        ValueError: If authentication configuration is invalid\n        RuntimeError: If Julep's service account is not configured\n    \"\"\"\n    if setup.use_julep_service:\n        # Use Julep's built-in service account\n        julep_service_account = julep_google_sheets_service_account_json\n        if not julep_service_account:\n            msg = (\n                \"Julep's Google Sheets service account is not configured. \"\n                \"Please contact support or use your own service account by setting \"\n                \"use_julep_service=false and providing service_account_json.\"\n            )\n            raise RuntimeError(msg)\n        service_account_json = julep_service_account\n    else:\n        # Use user-provided service account\n        if not setup.service_account_json:\n            msg = (\n                \"service_account_json is required when use_julep_service is false. \"\n                \"Either provide your own service account JSON (base64 encoded) or \"\n                \"set use_julep_service=true to use Julep's built-in service account.\"\n            )\n            raise ValueError(msg)\n        service_account_json = setup.service_account_json\n\n    # Decode and use the service account JSON\n    try:\n        # Add padding if missing\n        missing_padding = len(service_account_json) % 4\n        if missing_padding:\n            service_account_json += \"=\" * (4 - missing_padding)\n        creds_dict = json.loads(base64.b64decode(service_account_json))\n    except Exception as e:\n        msg = f\"Failed to decode service account JSON: {e!s}\"\n        raise ValueError(msg) from e\n    creds = service_account.Credentials.from_service_account_info(\n        creds_dict,\n        scopes=[\"https://www.googleapis.com/auth/spreadsheets\"],\n    )\n\n    # Build and return the sheets service\n    return build(\"sheets\", \"v4\", credentials=creds)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def read_values(\n    setup: GoogleSheetsSetup, arguments: GoogleSheetsReadArguments\n) -> GoogleSheetsReadOutput:\n    \"\"\"\n    Read values from a specific range in a Google Sheets spreadsheet.\n\n    Args:\n        setup: The GoogleSheetsSetup containing authentication credentials\n        arguments: The GoogleSheetsReadArguments with spreadsheet ID and range\n\n    Returns:\n        GoogleSheetsReadOutput with the values read from the spreadsheet\n    \"\"\"\n    try:\n        service = get_sheets_service(setup)\n        sheet = service.spreadsheets()\n\n        # Call the Sheets API to read values\n        result = (\n            sheet.values()\n            .get(\n                spreadsheetId=arguments.spreadsheet_id,\n                range=arguments.range,\n                majorDimension=arguments.major_dimension,\n                valueRenderOption=arguments.value_render_option,\n                dateTimeRenderOption=arguments.date_time_render_option,\n            )\n            .execute()\n        )\n\n        # Extract values and metadata\n        values = result.get(\"values\", [])\n        range_str = result.get(\"range\", arguments.range)\n        major_dimension = result.get(\"majorDimension\", arguments.major_dimension)\n\n        return GoogleSheetsReadOutput(\n            range=range_str,\n            major_dimension=major_dimension,\n            values=values,\n        )\n\n    except HttpError as error:\n        msg = f\"An error occurred while reading from Google Sheets: {error}\"\n        raise RuntimeError(msg) from error\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def write_values(\n    setup: GoogleSheetsSetup, arguments: GoogleSheetsWriteArguments\n) -> GoogleSheetsWriteOutput:\n    \"\"\"\n    Write or update values in a specific range in a Google Sheets spreadsheet.\n\n    Args:\n        setup: The GoogleSheetsSetup containing authentication credentials\n        arguments: The GoogleSheetsWriteArguments with spreadsheet ID, range, and values\n\n    Returns:\n        GoogleSheetsWriteOutput with information about the update\n    \"\"\"\n    try:\n        service = get_sheets_service(setup)\n        sheet = service.spreadsheets()\n\n        # Prepare the request body\n        body = {\"values\": arguments.values}\n\n        # Call the Sheets API to update values\n        result = (\n            sheet.values()\n            .update(\n                spreadsheetId=arguments.spreadsheet_id,\n                range=arguments.range,\n                valueInputOption=arguments.value_input_option,\n                body=body,\n                includeValuesInResponse=arguments.include_values_in_response,\n                responseValueRenderOption=(\n                    \"FORMATTED_VALUE\" if arguments.include_values_in_response else None\n                ),\n            )\n            .execute()\n        )\n\n        # Extract update information\n        return GoogleSheetsWriteOutput(\n            spreadsheet_id=arguments.spreadsheet_id,\n            updated_range=result.get(\"updatedRange\"),\n            updated_rows=result.get(\"updatedRows\"),\n            updated_columns=result.get(\"updatedColumns\"),\n            updated_cells=result.get(\"updatedCells\"),\n            updated_values=(\n                result.get(\"updatedData\", {}).get(\"values\")\n                if arguments.include_values_in_response\n                else None\n            ),\n        )\n\n    except HttpError as error:\n        msg = f\"An error occurred while writing to Google Sheets: {error}\"\n        raise RuntimeError(msg) from error\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def append_values(\n    setup: GoogleSheetsSetup, arguments: GoogleSheetsAppendArguments\n) -> GoogleSheetsWriteOutput:\n    \"\"\"\n    Append new rows of data to a Google Sheets spreadsheet.\n\n    Args:\n        setup: The GoogleSheetsSetup containing authentication credentials\n        arguments: The GoogleSheetsAppendArguments with spreadsheet ID, range, and values\n\n    Returns:\n        GoogleSheetsWriteOutput with information about the append operation\n    \"\"\"\n    try:\n        service = get_sheets_service(setup)\n        sheet = service.spreadsheets()\n\n        # Prepare the request body\n        body = {\"values\": arguments.values}\n\n        # Call the Sheets API to append values\n        result = (\n            sheet.values()\n            .append(\n                spreadsheetId=arguments.spreadsheet_id,\n                range=arguments.range,\n                valueInputOption=arguments.value_input_option,\n                insertDataOption=arguments.insert_data_option,\n                body=body,\n                includeValuesInResponse=arguments.include_values_in_response,\n                responseValueRenderOption=(\n                    \"FORMATTED_VALUE\" if arguments.include_values_in_response else None\n                ),\n            )\n            .execute()\n        )\n\n        # Extract update information\n        updates = result.get(\"updates\", {})\n        return GoogleSheetsWriteOutput(\n            spreadsheet_id=arguments.spreadsheet_id,\n            updated_range=updates.get(\"updatedRange\"),\n            updated_rows=updates.get(\"updatedRows\"),\n            updated_columns=updates.get(\"updatedColumns\"),\n            updated_cells=updates.get(\"updatedCells\"),\n            updated_values=(\n                updates.get(\"updatedData\", {}).get(\"values\")\n                if arguments.include_values_in_response\n                else None\n            ),\n        )\n\n    except HttpError as error:\n        msg = f\"An error occurred while appending to Google Sheets: {error}\"\n        raise RuntimeError(msg) from error\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def clear_values(\n    setup: GoogleSheetsSetup, arguments: GoogleSheetsClearArguments\n) -> GoogleSheetsClearOutput:\n    \"\"\"\n    Clear values from a specific range in a Google Sheets spreadsheet.\n\n    Args:\n        setup: The GoogleSheetsSetup containing authentication credentials\n        arguments: The GoogleSheetsClearArguments with spreadsheet ID and range\n\n    Returns:\n        GoogleSheetsClearOutput with information about the clear operation\n    \"\"\"\n    try:\n        service = get_sheets_service(setup)\n        sheet = service.spreadsheets()\n\n        # Call the Sheets API to clear values\n        result = (\n            sheet.values()\n            .clear(\n                spreadsheetId=arguments.spreadsheet_id,\n                range=arguments.range,\n                body={},\n            )\n            .execute()\n        )\n\n        # Extract clear information\n        return GoogleSheetsClearOutput(\n            spreadsheet_id=arguments.spreadsheet_id,\n            cleared_range=result.get(\"clearedRange\", arguments.range),\n        )\n\n    except HttpError as error:\n        msg = f\"An error occurred while clearing Google Sheets: {error}\"\n        raise RuntimeError(msg) from error\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def batch_read(\n    setup: GoogleSheetsSetup, arguments: GoogleSheetsBatchReadArguments\n) -> GoogleSheetsBatchReadOutput:\n    \"\"\"\n    Read values from multiple ranges in a Google Sheets spreadsheet in a single request.\n\n    Args:\n        setup: The GoogleSheetsSetup containing authentication credentials\n        arguments: The GoogleSheetsBatchReadArguments with spreadsheet ID and ranges\n\n    Returns:\n        GoogleSheetsBatchReadOutput with the values read from all specified ranges\n    \"\"\"\n    try:\n        service = get_sheets_service(setup)\n        sheet = service.spreadsheets()\n\n        # Call the Sheets API to batch get values\n        result = (\n            sheet.values()\n            .batchGet(\n                spreadsheetId=arguments.spreadsheet_id,\n                ranges=arguments.ranges,\n                majorDimension=arguments.major_dimension,\n                valueRenderOption=arguments.value_render_option,\n                dateTimeRenderOption=arguments.date_time_render_option,\n            )\n            .execute()\n        )\n\n        # Extract value ranges\n        value_ranges = [\n            GoogleSheetsValueRangeOutput(\n                range=value_range.get(\"range\", \"\"),\n                major_dimension=value_range.get(\"majorDimension\", arguments.major_dimension),\n                values=value_range.get(\"values\", []),\n            )\n            for value_range in result.get(\"valueRanges\", [])\n        ]\n\n        return GoogleSheetsBatchReadOutput(\n            spreadsheet_id=arguments.spreadsheet_id,\n            value_ranges=value_ranges,\n        )\n\n    except HttpError as error:\n        msg = f\"An error occurred during batch read from Google Sheets: {error}\"\n        raise RuntimeError(msg) from error\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def batch_write(\n    setup: GoogleSheetsSetup, arguments: GoogleSheetsBatchWriteArguments\n) -> GoogleSheetsBatchWriteOutput:\n    \"\"\"\n    Write values to multiple ranges in a Google Sheets spreadsheet in a single request.\n\n    Args:\n        setup: The GoogleSheetsSetup containing authentication credentials\n        arguments: The GoogleSheetsBatchWriteArguments with spreadsheet ID and data\n\n    Returns:\n        GoogleSheetsBatchWriteOutput with information about all updates\n    \"\"\"\n    try:\n        service = get_sheets_service(setup)\n        sheet = service.spreadsheets()\n\n        # Prepare the value ranges for the request\n        value_ranges = []\n        for data_item in arguments.data:\n            value_range = {\n                \"range\": data_item.range,\n                \"values\": data_item.values,\n            }\n            if data_item.major_dimension:\n                value_range[\"majorDimension\"] = data_item.major_dimension\n            value_ranges.append(value_range)\n\n        # Prepare the request body\n        body = {\n            \"valueInputOption\": arguments.value_input_option,\n            \"data\": value_ranges,\n            \"includeValuesInResponse\": arguments.include_values_in_response,\n        }\n\n        if arguments.include_values_in_response:\n            body[\"responseValueRenderOption\"] = \"FORMATTED_VALUE\"\n\n        # Call the Sheets API to batch update values\n        result = (\n            sheet.values()\n            .batchUpdate(\n                spreadsheetId=arguments.spreadsheet_id,\n                body=body,\n            )\n            .execute()\n        )\n\n        # Extract update information\n        responses = [\n            GoogleSheetsUpdateResponse(\n                updated_range=response.get(\"updatedRange\"),\n                updated_rows=response.get(\"updatedRows\"),\n                updated_columns=response.get(\"updatedColumns\"),\n                updated_cells=response.get(\"updatedCells\"),\n            )\n            for response in result.get(\"responses\", [])\n        ]\n\n        return GoogleSheetsBatchWriteOutput(\n            spreadsheet_id=arguments.spreadsheet_id,\n            total_updated_sheets=result.get(\"totalUpdatedSheets\"),\n            total_updated_rows=result.get(\"totalUpdatedRows\"),\n            total_updated_columns=result.get(\"totalUpdatedColumns\"),\n            total_updated_cells=result.get(\"totalUpdatedCells\"),\n            responses=responses,\n        )\n\n    except HttpError as error:\n        msg = f\"An error occurred during batch write to Google Sheets: {error}\"\n        raise RuntimeError(msg) from error\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/llama_parse.py",
    "content": "import base64\nimport uuid\n\nfrom beartype import beartype\nfrom llama_parse import LlamaParse\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import LlamaParseFetchArguments, LlamaParseSetup\nfrom ...models import LlamaParseFetchOutput\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def parse(\n    setup: LlamaParseSetup,\n    arguments: LlamaParseFetchArguments,\n) -> LlamaParseFetchOutput:\n    \"\"\"\n    Parse and extract content from files using LlamaParse.\n    \"\"\"\n\n    api_key = setup.llamaparse_api_key\n\n    # get the additional params\n    params = (\n        {**setup.params, **arguments.params}\n        if setup.params and arguments.params\n        else setup.params or arguments.params\n    )\n\n    parser = LlamaParse(\n        api_key=api_key,  # Use the local variable instead\n        **(params or {}),\n    )\n\n    if isinstance(arguments.file, str) and arguments.base64:\n        extra_info = {\"file_name\": arguments.filename or str(uuid.uuid4())}\n        # Parse the document (decode inline)\n        documents = await parser.aload_data(\n            base64.b64decode(arguments.file),\n            extra_info=extra_info,\n        )\n    else:\n        extra_info = {\"file_name\": arguments.filename} if arguments.filename else None\n        # Parse the document (decode inline)\n        documents = await parser.aload_data(arguments.file, extra_info=extra_info)\n\n    return LlamaParseFetchOutput(documents=documents)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/mailgun.py",
    "content": "import re\n\nimport aiohttp\nfrom beartype import beartype\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import MailgunSendEmailArguments, MailgunSetup\nfrom ...models import MailgunSendEmailOutput\n\n\ndef validate_email(email: str) -> bool:\n    \"\"\"\n    Validates an email address using a regex pattern.\n    \"\"\"\n    pattern = r\"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$\"\n    return bool(re.match(pattern, email))\n\n\ndef validate_email_list(emails: str) -> bool:\n    \"\"\"\n    Validates a comma-separated list of email addresses.\n    \"\"\"\n    if not emails:\n        return True\n\n    for email in emails.split(\",\"):\n        email = email.strip()\n        if email and not validate_email(email):\n            return False\n    return True\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(3),\n)\nasync def send_email(\n    setup: MailgunSetup, arguments: MailgunSendEmailArguments\n) -> MailgunSendEmailOutput:\n    \"\"\"\n    Sends an email with the provided details using the Mailgun API.\n    \"\"\"\n\n    # Validate email addresses\n    if not validate_email(arguments.from_):\n        return MailgunSendEmailOutput(\n            success=False, error=f\"Invalid sender email address: {arguments.from_}\"\n        )\n\n    if not validate_email(arguments.to):\n        return MailgunSendEmailOutput(\n            success=False, error=f\"Invalid recipient email address: {arguments.to}\"\n        )\n\n    if arguments.cc and not validate_email_list(arguments.cc):\n        return MailgunSendEmailOutput(\n            success=False, error=f\"Invalid CC email address(es): {arguments.cc}\"\n        )\n\n    if arguments.bcc and not validate_email_list(arguments.bcc):\n        return MailgunSendEmailOutput(\n            success=False, error=f\"Invalid BCC email address(es): {arguments.bcc}\"\n        )\n\n    domain = arguments.from_.split(\"@\")[-1]\n\n    # Extract domain from from_ address (e.g. \"test@example.com\" -> \"email.example.com\")\n    if not domain.startswith(\"email.\"):\n        domain = \"email.\" + domain\n\n    # Use API key from setup\n    api_key = setup.api_key\n\n    # API URL\n    url = f\"https://api.mailgun.net/v3/{domain}/messages\"\n\n    # Prepare payload\n    data = {\n        \"from\": arguments.from_,\n        \"to\": arguments.to,\n        \"subject\": arguments.subject,\n        \"text\": arguments.body,\n    }\n\n    # Add CC and BCC if provided\n    if arguments.cc:\n        data[\"cc\"] = arguments.cc\n\n    if arguments.bcc:\n        data[\"bcc\"] = arguments.bcc\n\n    # Make API request\n    async with aiohttp.ClientSession() as session:\n        auth = aiohttp.BasicAuth(\"api\", api_key)\n        async with session.post(url, data=data, auth=auth) as response:\n            if response.status in (200, 201, 202):\n                return MailgunSendEmailOutput(success=True)\n            error_text = await response.text()\n            return MailgunSendEmailOutput(\n                success=False, error=f\"Email was not sent successfully: {error_text}\"\n            )\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/mcp.py",
    "content": "\"\"\"\nMCP (Model Context Protocol) Integration for Julep\n\nThis module provides a native MCP client integration that allows Julep agents to:\n1. Connect to MCP servers using HTTP or SSE (Server-Sent Events) transports\n2. Dynamically discover available tools from the server\n3. Execute tools with proper error handling and retry logic\n\nThe MCP integration enables Julep to interface with external tools and services\nthrough a standardized protocol, making it extensible without hardcoding specific integrations.\n\nTransport Options:\n- HTTP: Standard request-response pattern using streamablehttp_client\n- SSE: Server-Sent Events for streaming responses using dedicated sse_client\n\nNote: Both transports require mcp>=1.8.0. The HTTP transport uses streamablehttp_client\nwhich supports both regular HTTP and streaming responses. The SSE transport uses a\ndedicated sse_client for proper event stream handling. Stdio transport has been\nremoved for security reasons.\n\"\"\"\n\nfrom __future__ import annotations\n\nimport asyncio\nimport contextlib\nimport importlib.metadata\nimport sys\nfrom contextlib import AsyncExitStack\nfrom types import TracebackType\nfrom typing import Any\n\nfrom beartype import beartype\nfrom packaging import version\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import McpCallToolArguments, McpListToolsArguments, McpSetup\nfrom ...models import McpListToolsOutput, McpToolCallOutput\n\n\ndef _ensure_mcp_available() -> None:\n    \"\"\"\n    Check if the MCP SDK is installed and available.\n\n    This is a runtime check to provide clear error messages if the MCP\n    dependency is missing, rather than cryptic import errors later.\n    \"\"\"\n    try:\n        import mcp  # noqa: F401\n    except Exception as e:  # pragma: no cover - import path validation\n        msg = (\n            \"The 'mcp' Python package is required for MCP integration. \"\n            \"Add 'mcp' to integrations-service dependencies and install it.\"\n        )\n        raise RuntimeError(msg) from e\n\n\n# Module-level dynamic import for MCP clients with version check\ntry:\n    mcp_version = importlib.metadata.version(\"mcp\")\n    if version.parse(mcp_version) < version.parse(\"1.8.0\"):\n        msg = (\n            f\"Your installed 'mcp' SDK version {mcp_version} does not support required transports. \"\n            f\"Required: mcp>=1.8.0. Please update with: pip install 'mcp>=1.8.0'.\"\n        )\n        raise RuntimeError(msg)\n    from mcp.client.sse import sse_client\n    from mcp.client.streamable_http import streamablehttp_client\nexcept ImportError as e:\n    msg = (\n        f\"MCP transports require mcp>=1.8.0. Underlying import error: {e}. \"\n        f\"Please update with: pip install 'mcp>=1.8.0'.\"\n    )\n    raise RuntimeError(msg) from e\n\n\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=16),\n    reraise=True,\n    stop=stop_after_attempt(5),\n)\nasync def _connect_session(setup: McpSetup):\n    \"\"\"\n    Create and initialize an MCP client session for the given setup.\n\n    This function establishes connections to MCP servers using either:\n    - streamablehttp_client for HTTP transport (standard request/response)\n    - sse_client for SSE transport (Server-Sent Events streaming)\n\n    The session management pattern ensures proper cleanup of resources.\n\n    Args:\n        setup: MCP setup configuration with transport type and connection details\n\n    Returns:\n        tuple: (session, aclose) where session is the active MCP client and\n               aclose is an async cleanup function that must be called when done\n\n    Raises:\n        ValueError: If required configuration is missing or transport type is unknown\n        RuntimeError: If connection to the MCP server fails\n    \"\"\"\n    _ensure_mcp_available()\n\n    from mcp import ClientSession\n\n    transport = setup.transport\n\n    if transport in (\"http\", \"sse\"):\n        if not setup.http_url:\n            msg = f\"McpSetup.http_url is required for {transport} transport\"\n            raise ValueError(msg)\n\n        headers = setup.http_headers or {}\n\n        if transport == \"sse\":\n            # SSE transport uses the dedicated sse_client for proper event stream handling\n            headers = {\n                **headers,\n                \"Accept\": \"text/event-stream\",\n                \"Cache-Control\": \"no-cache\",\n            }\n            client_ctx = sse_client(str(setup.http_url), headers=headers)\n        else:\n            # HTTP transport uses streamablehttp_client\n            client_ctx = streamablehttp_client(str(setup.http_url), headers=headers)\n\n        stack = AsyncExitStack()\n        closed = False\n        stage = \"transport\"\n\n        # AsyncExitStack keeps MCP client cleanup on the same task to avoid cancel-scope errors.\n        try:\n            result = await stack.enter_async_context(client_ctx)\n            stage = \"session\"\n\n            if isinstance(result, tuple):\n                read, write = result[:2]\n            else:\n                read = result\n                write = result\n\n            session = await stack.enter_async_context(ClientSession(read, write))\n            stage = \"initialize\"\n            await session.initialize()\n        except Exception as e:\n            with contextlib.suppress(Exception):\n                await stack.__aexit__(type(e), e, e.__traceback__)\n\n            error_msg: str\n            if stage == \"transport\":\n                error_msg = (\n                    f\"Failed to connect to {transport.upper()} endpoint {setup.http_url}: {e}\"\n                )\n            else:\n                error_msg = f\"Failed to establish {transport.upper()} connection to {setup.http_url}: {e}\"\n            raise RuntimeError(error_msg) from e\n\n        async def aclose(\n            exc_type: type[BaseException] | None = None,\n            exc: BaseException | None = None,\n            tb: TracebackType | None = None,\n        ) -> None:\n            nonlocal closed\n            if closed:\n                return\n            closed = True\n            if exc_type is None and exc is None and tb is None:\n                exc_type, exc, tb = sys.exc_info()\n            with contextlib.suppress(Exception):\n                await stack.__aexit__(exc_type, exc, tb)\n\n        return session, aclose\n\n    msg = f\"Unknown MCP transport: {transport}\"\n    raise ValueError(msg)\n\n\ndef _serialize_content_item(item: Any) -> dict[str, Any]:\n    \"\"\"\n    Best-effort conversion of MCP content item to JSON-serializable dict.\n\n    MCP servers can return various content types (text, images, structured data).\n    This function normalizes them into a consistent format that can be serialized to JSON\n    and passed back through our API. The fallback chain ensures we never lose data,\n    even if it's in an unexpected format.\n    \"\"\"\n    try:\n        # Most MCP SDK objects support model_dump() for Pydantic-style serialization\n        return item.model_dump()  # type: ignore[attr-defined]\n    except Exception:\n        try:\n            # Fallback to dict conversion for simpler objects\n            return dict(item)\n        except Exception:\n            # Last resort: string representation to preserve some information\n            return {\"repr\": repr(item)}\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=1, max=8),\n    reraise=True,\n    stop=stop_after_attempt(1),\n)\nasync def list_tools(setup: McpSetup, arguments: McpListToolsArguments) -> McpListToolsOutput:\n    \"\"\"\n    Discover available tools from an MCP server.\n\n    This is the key innovation of MCP integration - instead of hardcoding tools,\n    we dynamically discover what's available from any MCP server. This makes Julep\n    infinitely extensible - just point it at a new MCP server and all its tools\n    become available to your agents automatically.\n\n    The retry logic handles transient network issues, especially important for\n    remote HTTP-based MCP servers.\n\n    Args:\n        setup: MCP connection configuration (transport type, URL, headers)\n        arguments: Arguments for listing tools (currently unused, reserved for future filtering)\n\n    Returns:\n        McpListToolsOutput: List of discovered tools with their names, descriptions, and schemas\n\n    Raises:\n        RuntimeError: If connection to the MCP server fails\n        ValueError: If configuration is invalid\n    \"\"\"\n    # AIDEV-NOTE: Debug logging for MCP tool discovery - remove in production\n    session, aclose = await _connect_session(setup)\n    try:\n        # Query the MCP server for its tool catalog\n        tools = await session.list_tools()\n        # Transform MCP tool format to Julep's internal format\n        # Extract the essential fields that Julep needs to present tools to agents\n        out = [\n            {\n                \"name\": t.name,\n                \"description\": getattr(t, \"description\", None),\n                \"input_schema\": getattr(t, \"inputSchema\", None),  # JSON Schema for validation\n            }\n            for t in tools.tools\n        ]\n        return McpListToolsOutput(tools=out)  # type: ignore[arg-type]\n    finally:\n        await aclose()\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=1, max=8),\n    reraise=True,\n    stop=stop_after_attempt(3),\n)\nasync def call_tool(setup: McpSetup, arguments: McpCallToolArguments) -> McpToolCallOutput:\n    \"\"\"\n    Execute a specific tool on an MCP server with the provided arguments.\n\n    This allows Julep agents to call any tool exposed by an MCP server without\n    knowing its implementation details. The tool could be running Python, Node.js,\n    Rust, or any language - MCP abstracts that away.\n\n    Key features:\n    - Automatic retry on failure (network issues, timeouts)\n    - Timeout support for long-running tools\n    - Response normalization for consistent handling\n\n    Args:\n        setup: MCP connection configuration (transport type, URL, headers)\n        arguments: Contains tool_name, arguments dict, and optional timeout_seconds\n\n    Returns:\n        McpToolCallOutput: Normalized tool response with:\n            - text: Concatenated text content from the response\n            - structured: Any structured data returned by the tool\n            - content: Raw content items as JSON-serializable dicts\n            - is_error: Whether the tool execution resulted in an error\n\n    Raises:\n        asyncio.TimeoutError: If the tool execution exceeds the specified timeout\n        RuntimeError: If connection to the MCP server fails\n        ValueError: If configuration is invalid\n    \"\"\"\n    # AIDEV-NOTE: Debug logging for MCP tool execution - remove in production\n    session, aclose = await _connect_session(setup)\n    try:\n        # Enforce timeout per call if provided\n        async def _invoke():\n            return await session.call_tool(\n                arguments.tool_name, arguments=arguments.arguments or {}\n            )\n\n        if arguments.timeout_seconds and arguments.timeout_seconds > 0:\n            result = await asyncio.wait_for(_invoke(), timeout=arguments.timeout_seconds)\n        else:\n            result = await _invoke()\n\n        # Normalize result content\n        text_parts: list[str] = []\n        content_items: list[dict[str, Any]] = []\n        structured = getattr(result, \"structuredContent\", None)\n        is_error = getattr(result, \"isError\", False)\n\n        try:\n            from mcp import types as mcp_types  # type: ignore\n        except Exception:\n            mcp_types = None  # type: ignore\n\n        for item in getattr(result, \"content\", []) or []:\n            # Extract text content if type info is available\n            if mcp_types is not None and isinstance(\n                item, getattr(mcp_types, \"TextContent\", ())\n            ):\n                text = getattr(item, \"text\", None)\n                if text:\n                    text_parts.append(text)\n            elif hasattr(item, \"text\") and item.text:\n                text_parts.append(item.text)\n            content_items.append(_serialize_content_item(item))\n\n        return McpToolCallOutput(\n            text=\"\\n\".join(text_parts) if text_parts else None,\n            structured=structured,  # type: ignore[arg-type]\n            content=content_items,\n            is_error=bool(is_error),\n        )\n    finally:\n        await aclose()\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/remote_browser.py",
    "content": "import base64\nimport json\nfrom functools import partial\nfrom io import BytesIO\nfrom pathlib import Path\nfrom typing import Any\n\nfrom beartype import beartype\nfrom PIL import Image\nfrom playwright.async_api import (\n    Browser,\n    BrowserContext,\n    Keyboard,\n    Mouse,\n    Page,\n    PlaywrightContextManager,\n    async_playwright,\n)\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import RemoteBrowserArguments, RemoteBrowserSetup\nfrom ...models import RemoteBrowserOutput\n\nCURSOR_PATH = Path(__file__).parent / \"assets\" / \"cursor-small.png\"\n\n\nclass PlaywrightActions:\n    \"\"\"Class to handle browser automation actions using Playwright.\"\"\"\n\n    browser: Browser\n    page: Page\n    context: BrowserContext\n    mouse: Mouse\n    keyboard: Keyboard\n    width: int | None\n    height: int | None\n\n    def __init__(\n        self,\n        browser: Browser,\n        width: int | None = None,\n        height: int | None = None,\n    ) -> None:\n        self.browser = browser\n        self.context = self.browser.contexts[0]\n        self.page = self.context.pages[0]\n        self.mouse = self.page.mouse\n        self.keyboard = self.page.keyboard\n        self.width, self.height = width, height\n\n    async def _is_initialized(self) -> bool:\n        \"\"\"Check if the page is initialized\"\"\"\n        return bool(\n            await self._execute_javascript(\"\"\"\n                window.$$julep$$_initialized\n            \"\"\"),\n        )\n\n    async def initialize(self, debug: bool = False) -> None:\n        if debug:\n            self.page.on(\"console\", lambda msg: print(msg.text))\n\n        if self.width and self.height:\n            current_width, current_height = await self._get_screen_size()\n            if current_width != self.width or current_height != self.height:\n                await self._set_screen_size(self.width, self.height)\n\n        # Install mouse move event listener\n        init_script = \"\"\"\n\n        // Update mouse coordinates on mouse move\n        // but only on the top document\n        if (window === window.parent)\n            window.addEventListener(\n                'DOMContentLoaded',\n                () => {\n                    const updateMouseCoordinates = (event) => {\n                        window.mouseX = event.clientX;\n                        window.mouseY = event.clientY;\n                    };\n\n                    if (!window.$$julep$$_mouseListenerInitialized) {\n                        window.addEventListener('mousemove', updateMouseCoordinates);\n                        window.addEventListener('mouseup', updateMouseCoordinates);\n                        window.addEventListener('mousedown', updateMouseCoordinates);\n                        window.addEventListener('click', updateMouseCoordinates);\n                        window.addEventListener('dblclick', updateMouseCoordinates);\n\n                        window.$$julep$$_mouseListenerInitialized = true;\n                    }\n                }\n            );\n        \"\"\"\n        await self.page.add_init_script(init_script)\n        await self.page.evaluate(init_script)\n\n        await self._reset_mouse()\n\n    async def _reset_mouse(self) -> None:\n        # Wait for the page to be fully loaded\n        await self._wait_for_load()\n        if not await self._is_initialized():\n            await self.page.mouse.move(self.width // 2, self.height // 2)\n            await self.page.evaluate(\"\"\"\n            window.$$julep$$_initialized = true;\n            \"\"\")\n\n    # @staticmethod\n    # def _with_error_and_screenshot(f):\n    #     @wraps(f)\n    #     async def wrapper(self: \"PlaywrightActions\", *args, **kwargs):\n    #         try:\n    #             result: RemoteBrowserOutput = await f(self, *args, **kwargs)\n    #             await self._wait_for_load()\n\n    #             screenshot: RemoteBrowserOutput = await self.take_screenshot()\n\n    #             return RemoteBrowserOutput(\n    #                 output=result.output,\n    #                 base64_image=screenshot.base64_image,\n    #                 system=result.system or f.__name__,\n    #             )\n\n    #         except Exception as e:\n    #             return RemoteBrowserOutput(error=str(e))\n\n    #     return wrapper\n\n    async def _get_screen_size(self) -> tuple[int, int]:\n        \"\"\"Get the current browser viewport size\"\"\"\n\n        viewport: dict[str, int] | None = self.page.viewport_size\n        if viewport is None:\n            return (0, 0)\n\n        return (viewport[\"width\"], viewport[\"height\"])\n\n    async def _set_screen_size(self, width: int, height: int) -> None:\n        \"\"\"Set the current browser viewport size\"\"\"\n\n        await self.page.set_viewport_size({\"width\": width, \"height\": height})\n\n    async def _wait_for_load(self, event: str = \"domcontentloaded\", timeout: int = 0) -> None:\n        \"\"\"Wait for document to be fully loaded\"\"\"\n        await self.page.wait_for_load_state(event, timeout=timeout)\n\n    async def _execute_javascript(self, script: str, *args) -> Any:\n        \"\"\"Execute JavaScript code and return the result\"\"\"\n        return await self.page.evaluate(script, *args)\n\n    async def _set_window_vars(self, variables: dict[str, Any]) -> None:\n        \"\"\"Set variables in the window scope\"\"\"\n        json_str = json.dumps(variables)\n        script = \"\"\"\n        const vars = JSON.parse(arguments[0]);\n        for (const [key, value] of Object.entries(vars)) {\n            window[key] = value;\n        }\n        \"\"\"\n        await self._execute_javascript(script, json_str)\n\n    async def _get_mouse_coordinates(self) -> tuple[int, int]:\n        \"\"\"Get current mouse coordinates\"\"\"\n        result = await self._execute_javascript(\"\"\"\n        [window.mouseX, window.mouseY]\n        \"\"\")\n\n        return result[0], result[1]\n\n    async def _get_element_coordinates(self, selector: str) -> tuple[int, int]:\n        \"\"\"Get the coordinates of an element\"\"\"\n        element = await self.page.query_selector(selector)\n        if element:\n            box = await element.bounding_box()\n            return (box[\"x\"], box[\"y\"])\n        msg = f\"Element not found: {selector}\"\n        raise Exception(msg)\n\n    def _overlay_cursor(self, screenshot_bytes: bytes, x: int, y: int) -> bytes:\n        \"\"\"Overlay the cursor image on the screenshot at the specified coordinates.\"\"\"\n        # Load the screenshot from bytes\n        screenshot = Image.open(BytesIO(screenshot_bytes)).convert(\"RGBA\")\n\n        # Load the cursor image\n        cursor = Image.open(\n            \"./integrations/utils/integrations/assets/cursor-small.png\",\n        ).convert(\"RGBA\")\n\n        # Create a copy of the screenshot to overlay the cursor\n        combined = screenshot.copy()\n        combined.paste(cursor, (x, y), cursor)\n\n        # Save the combined image to bytes\n        output = BytesIO()\n        combined.save(output, format=\"PNG\")\n        return output.getvalue()\n\n    # ---\n    # Actions\n\n    async def navigate(self, url: str) -> RemoteBrowserOutput:\n        \"\"\"Navigate to a specific URL\"\"\"\n        await self.page.goto(url)\n        await self._reset_mouse()\n\n        return RemoteBrowserOutput(\n            output=url,\n        )\n\n    async def refresh(self) -> RemoteBrowserOutput:\n        \"\"\"Refresh the current page\"\"\"\n        await self.page.reload()\n        await self._reset_mouse()\n\n        return RemoteBrowserOutput(\n            output=\"Refreshed page\",\n        )\n\n    async def cursor_position(self) -> RemoteBrowserOutput:\n        \"\"\"Get current mouse coordinates\"\"\"\n        x, y = await self._get_mouse_coordinates()\n        return RemoteBrowserOutput(\n            output=f\"X={x}, Y={y}\",\n        )\n\n    async def press_key(self, key_combination: str) -> RemoteBrowserOutput:\n        \"\"\"Press a key or key combination\"\"\"\n        # Split combination into individual keys\n        keys = key_combination.split(\"+\")\n        keys = [\n            \"Enter\"\n            if k == \"Return\"\n            else \"Control\"\n            if k == \"ctrl\"\n            else \"PageDown\"\n            if k == \"Page_Down\"\n            else k\n            for k in keys\n        ]\n\n        # Press modifier keys first\n        for key in keys[:-1]:\n            await self.page.keyboard.down(key)\n\n        # Press and release the last key\n        await self.page.keyboard.press(keys[-1])\n\n        # Release modifier keys in reverse order\n        for key in reversed(keys[:-1]):\n            await self.page.keyboard.up(key)\n\n        return RemoteBrowserOutput(\n            output=f\"Pressed {key_combination}\",\n        )\n\n    async def type_text(self, text: str) -> RemoteBrowserOutput:\n        \"\"\"Type a string of text\"\"\"\n        await self.page.keyboard.type(text)\n\n        return RemoteBrowserOutput(\n            output=f\"Typed {text}\",\n        )\n\n    async def mouse_move(self, coordinate: tuple[int, int]) -> RemoteBrowserOutput:\n        \"\"\"Move mouse to specified coordinates\"\"\"\n        await self.mouse.move(*coordinate)\n\n        return RemoteBrowserOutput(\n            output=f\"Moved mouse to {coordinate}\",\n        )\n\n    async def left_click(self) -> RemoteBrowserOutput:\n        \"\"\"Perform left mouse click\"\"\"\n        x, y = await self._get_mouse_coordinates()\n        await self.mouse.click(x, y)\n\n        return RemoteBrowserOutput(\n            output=\"Left clicked\",\n        )\n\n    async def left_click_drag(self, coordinate: tuple[int, int]) -> RemoteBrowserOutput:\n        \"\"\"Click and drag to specified coordinates\"\"\"\n        await self.mouse.down()\n        await self.mouse.move(*coordinate)\n        await self.mouse.up()\n\n        return RemoteBrowserOutput(\n            output=f\"Left clicked and dragged to {coordinate}\",\n        )\n\n    async def right_click(self) -> RemoteBrowserOutput:\n        \"\"\"Perform right mouse click\"\"\"\n        x, y = await self._get_mouse_coordinates()\n        await self.mouse.click(x, y, button=\"right\")\n\n        return RemoteBrowserOutput(\n            output=\"Right clicked\",\n        )\n\n    async def middle_click(self) -> RemoteBrowserOutput:\n        \"\"\"Perform middle mouse click\"\"\"\n        x, y = await self._get_mouse_coordinates()\n        await self.mouse.click(x, y, button=\"middle\")\n\n        return RemoteBrowserOutput(\n            output=\"Middle clicked\",\n        )\n\n    async def double_click(self) -> RemoteBrowserOutput:\n        \"\"\"Perform double click\"\"\"\n        x, y = await self._get_mouse_coordinates()\n        await self.mouse.dblclick(x, y)\n\n        return RemoteBrowserOutput(\n            output=\"Double clicked\",\n        )\n\n    async def take_screenshot(self, filename: str | None = None) -> RemoteBrowserOutput:\n        \"\"\"Take a screenshot of the current browser window\"\"\"\n        try:\n            screenshot = await self.page.screenshot()\n        except Exception as e:\n            return RemoteBrowserOutput(error=str(e), system=\"take_screenshot\")\n\n        x, y = await self._get_mouse_coordinates()\n        screenshot = self._overlay_cursor(screenshot, x, y)\n\n        if filename:\n            with open(filename, \"wb\") as f:\n                f.write(screenshot)\n\n        encoded = base64.b64encode(screenshot).decode(\"utf-8\")\n\n        return RemoteBrowserOutput(\n            base64_image=f\"data:image/png;base64,{encoded}\",\n            system=\"take_screenshot\",\n        )\n\n    async def perform_action(\n        self,\n        action: str,\n        coordinate: tuple[int, int] | None = None,\n        text: str | None = None,\n    ) -> RemoteBrowserOutput:\n        \"\"\"Perform a specified automation action\"\"\"\n        try:\n            actions = {\n                # Anthropic\n                \"key\": partial(self.press_key, text),\n                \"type\": partial(self.type_text, text),\n                \"mouse_move\": partial(self.mouse_move, coordinate),\n                \"left_click\": self.left_click,\n                \"left_click_drag\": partial(self.left_click_drag, coordinate),\n                \"right_click\": self.right_click,\n                \"middle_click\": self.middle_click,\n                \"double_click\": self.double_click,\n                \"screenshot\": self.take_screenshot,\n                \"cursor_position\": self.cursor_position,\n                #\n                # Additional\n                \"navigate\": partial(self.navigate, text),\n                \"refresh\": self.refresh,\n            }\n\n            if action not in actions:\n                msg = f\"Invalid action: {action}\"\n                raise ValueError(msg)\n\n            return await actions[action]()\n\n        except Exception as e:\n            msg = f\"Error performing action {action}: {e!s}\"\n            raise Exception(msg)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def perform_action(\n    setup: RemoteBrowserSetup,\n    arguments: RemoteBrowserArguments,\n) -> RemoteBrowserOutput:\n    p: PlaywrightContextManager = await async_playwright().start()\n    connect_url = setup.connect_url if setup.connect_url else arguments.connect_url\n    browser = await p.chromium.connect_over_cdp(connect_url)\n\n    automation = PlaywrightActions(browser, width=setup.width, height=setup.height)\n\n    await automation.initialize()\n\n    return await automation.perform_action(\n        action=arguments.action,\n        coordinate=arguments.coordinate,\n        text=arguments.text,\n    )\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/spider.py",
    "content": "from beartype import beartype\nfrom spider import AsyncSpider\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import SpiderFetchArguments, SpiderSetup\nfrom ...models import SpiderOutput, SpiderResponse\n\n\n@beartype\ndef create_spider_response(pages: list[dict]) -> list[SpiderResponse]:\n    return [\n        SpiderResponse(\n            url=page.get(\"url\"),\n            content=(page.get(\"content\")),\n            error=page.get(\"error\"),\n            status=page.get(\"status\"),\n            costs=page.get(\"costs\"),\n        )\n        for page in pages\n    ]\n\n\n@beartype\nasync def execute_spider_method(\n    method_name: str,\n    setup: SpiderSetup,\n    arguments: SpiderFetchArguments,\n) -> SpiderOutput:\n    api_key = setup.spider_api_key\n    # Initialize the final result list\n    final_result = []\n    # Initialize the results variable\n    results = None\n\n    try:\n        async with AsyncSpider(api_key=api_key) as spider_client:\n            async for result in getattr(spider_client, method_name)(\n                url=str(arguments.url),\n                params=arguments.params,\n                stream=False,\n                content_type=arguments.content_type,\n            ):\n                results = result\n\n        if results is None:\n            msg = \"No results found\"\n            raise ValueError(msg)\n        final_result = create_spider_response(results)\n    except Exception as e:\n        # Log the exception or handle it as needed\n        msg = f\"Error executing spider method '{method_name}': {e}\"\n        raise RuntimeError(msg)\n\n    return SpiderOutput(result=final_result)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def crawl(setup: SpiderSetup, arguments: SpiderFetchArguments) -> SpiderOutput:\n    \"\"\"\n    Crawl a website and extract data.\n    \"\"\"\n    return await execute_spider_method(\"crawl_url\", setup, arguments)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def links(setup: SpiderSetup, arguments: SpiderFetchArguments) -> SpiderOutput:\n    \"\"\"\n    Extract all links from the webpage.\n    \"\"\"\n    return await execute_spider_method(\"links\", setup, arguments)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def screenshot(setup: SpiderSetup, arguments: SpiderFetchArguments) -> SpiderOutput:\n    \"\"\"\n    Take a screenshot of the webpage.\n    \"\"\"\n    return await execute_spider_method(\"screenshot\", setup, arguments)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def search(setup: SpiderSetup, arguments: SpiderFetchArguments) -> SpiderOutput:\n    \"\"\"\n    Search content within the webpage.\n    \"\"\"\n    return await execute_spider_method(\"search\", setup, arguments)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/unstructured.py",
    "content": "import base64\nimport uuid\nfrom typing import Any\n\nimport unstructured_client\nfrom beartype import beartype\nfrom tenacity import retry, stop_after_attempt, wait_exponential\nfrom unstructured_client.models import operations, shared\n\nfrom ...autogen.Tools import UnstructuredPartitionArguments, UnstructuredSetup\nfrom ...models import UnstructuredParseOutput\n\n\ndef to_unstructured_strategy(\n    value: Any, default: shared.Strategy | None = None\n) -> shared.Strategy | None:\n    \"\"\"\n    Convert a user-provided strategy (string/enum) to unstructured_client.models.shared.Strategy.\n\n    Accepts common aliases and ignores case, spaces, and dashes.\n    Returns `default` if value is None or unrecognized.\n    \"\"\"\n    if value is None:\n        return default\n    if isinstance(value, shared.Strategy):\n        return value\n\n    s = str(value).strip().lower().replace(\"-\", \"_\").replace(\" \", \"_\")\n    aliases = {\n        \"hires\": \"hi_res\",\n        \"hires_ocr\": \"hi_res\",\n        \"highres\": \"hi_res\",\n        \"high_res\": \"hi_res\",\n        \"ocr\": \"ocr_only\",\n        \"ocronly\": \"ocr_only\",\n        \"od\": \"od_only\",\n        \"odonly\": \"od_only\",\n        \"object_detection_only\": \"od_only\",\n    }\n    s = aliases.get(s, s)\n\n    mapping = {\n        \"fast\": shared.Strategy.FAST,\n        \"hi_res\": shared.Strategy.HI_RES,\n        \"auto\": shared.Strategy.AUTO,\n        \"ocr_only\": shared.Strategy.OCR_ONLY,\n        \"od_only\": shared.Strategy.OD_ONLY,\n        \"vlm\": shared.Strategy.VLM,\n    }\n    return mapping.get(s, default)\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def parse(\n    setup: UnstructuredSetup,\n    arguments: UnstructuredPartitionArguments,\n) -> UnstructuredParseOutput:\n    \"\"\"\n    Parse documents into structured elements using Unstructured.io.\n    \"\"\"\n    # AIDEV-NOTE: Extract and convert strategy/chunking_strategy explicitly for proper API handling\n    params = (\n        arguments.partition_params\n        if hasattr(arguments, \"partition_params\") and arguments.partition_params\n        else {}\n    )\n\n    # Extract strategy and chunking_strategy for explicit handling\n    # AIDEV-NOTE: Use .get() instead of .pop() to avoid mutating params on retries\n    strategy = to_unstructured_strategy(params.get(\"strategy\", None))\n    chunking_strategy = params.get(\"chunking_strategy\", None)\n\n    api_key = setup.unstructured_api_key\n\n    # Create a new client with all available parameters\n    client = unstructured_client.UnstructuredClient(\n        api_key_auth=api_key,\n        server_url=setup.server_url,\n        server=setup.server,\n        url_params=setup.url_params,\n        timeout_ms=setup.timeout_ms,\n    )\n\n    # Decode the base64 encoded file\n    try:\n        decoded_file = base64.b64decode(arguments.file)\n    except Exception as e:\n        msg = f\"Failed to decode base64 encoded file: {e}\"\n        raise RuntimeError(msg)\n\n    # Process file\n    # Build partition parameters with explicit strategy and chunking_strategy\n    partition_params = {\n        \"files\": shared.Files(\n            content=decoded_file,\n            file_name=arguments.filename or f\"{uuid.uuid4()}.txt\",\n        ),\n    }\n\n    # Add strategy and chunking_strategy explicitly if provided\n    if strategy is not None:\n        partition_params[\"strategy\"] = strategy\n    if chunking_strategy is not None:\n        partition_params[\"chunking_strategy\"] = chunking_strategy\n\n    # Spread the rest of the parameters (excluding strategy and chunking_strategy)\n    partition_params.update({\n        k: v for k, v in params.items() if k not in [\"strategy\", \"chunking_strategy\"]\n    })\n\n    req = operations.PartitionRequest(\n        partition_parameters=shared.PartitionParameters(**partition_params)\n    )\n\n    try:\n        # Make the API call\n        result = await client.general.partition_async(request=req)\n        return UnstructuredParseOutput(\n            content_type=result.content_type,\n            status_code=result.status_code,\n            csv_elements=result.csv_elements or None,\n            content=result.elements or None,\n        )\n    except Exception as e:\n        # Return error information instead of raising HTTP exception\n        msg = f\"Error executing Unstructured method: {e}\"\n        raise RuntimeError(msg)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/weather.py",
    "content": "from beartype import beartype\nfrom langchain_community.utilities import OpenWeatherMapAPIWrapper\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import WeatherGetArguments, WeatherSetup\nfrom ...models import WeatherGetOutput\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def get(setup: WeatherSetup, arguments: WeatherGetArguments) -> WeatherGetOutput:\n    \"\"\"\n    Fetches weather data for a specified location using OpenWeatherMap API.\n    \"\"\"\n\n    location = arguments.location\n\n    weather = OpenWeatherMapAPIWrapper(openweathermap_api_key=setup.openweathermap_api_key)\n    result = weather.run(location)\n    return WeatherGetOutput(result=result)\n"
  },
  {
    "path": "src/integrations-service/integrations/utils/integrations/wikipedia.py",
    "content": "from beartype import beartype\nfrom langchain_community.document_loaders import WikipediaLoader\nfrom tenacity import retry, stop_after_attempt, wait_exponential\n\nfrom ...autogen.Tools import WikipediaSearchArguments\nfrom ...models import WikipediaSearchOutput\n\n\n@beartype\n@retry(\n    wait=wait_exponential(multiplier=1, min=4, max=10),\n    reraise=True,\n    stop=stop_after_attempt(4),\n)\nasync def search(\n    arguments: WikipediaSearchArguments,\n) -> WikipediaSearchOutput:\n    \"\"\"\n    Searches Wikipedia for a given query and returns formatted results.\n    \"\"\"\n\n    query = arguments.query\n    load_max_docs = arguments.load_max_docs\n\n    loader = WikipediaLoader(query=query, load_max_docs=load_max_docs)\n    documents = loader.load()\n\n    return WikipediaSearchOutput(documents=documents)\n"
  },
  {
    "path": "src/integrations-service/integrations/web.py",
    "content": "import asyncio\nimport logging\nimport os\nfrom collections.abc import Callable\nfrom typing import Any\n\nimport sentry_sdk\nimport uvicorn\nimport uvloop\nfrom fastapi import FastAPI, Request, status\nfrom fastapi.exceptions import HTTPException, RequestValidationError\nfrom fastapi.middleware.gzip import GZipMiddleware\nfrom fastapi.responses import JSONResponse\n\nfrom .env import sentry_dsn\nfrom .routers.execution.router import router as execution_router\nfrom .routers.integrations.router import router as integrations_router\n\nif not sentry_dsn:\n    print(\"Sentry DSN not found. Sentry will not be enabled.\")\nelse:\n    sentry_sdk.init(\n        dsn=sentry_dsn,\n        enable_tracing=True,\n    )\n\napp: FastAPI = FastAPI(\n    title=\"Integrations Service\",\n    docs_url=\"/docs\",\n    redoc_url=\"/redoc\",\n    openapi_url=\"/openapi.json\",\n    default_response_class=JSONResponse,\n)\n\n# Add GZIP compression\napp.add_middleware(GZipMiddleware, minimum_size=1000)\n\n# Add routers\napp.include_router(integrations_router)\napp.include_router(execution_router)\n\n# Optimize event loop policy\nasyncio.set_event_loop_policy(uvloop.EventLoopPolicy())\n\nlogger: logging.Logger = logging.getLogger(__name__)\n\n\ndef make_exception_handler(status: int) -> Callable[[Any, Any], Any]:\n    \"\"\"\n    Creates a custom exception handler for the application.\n\n    Parameters:\n    - status (int): The HTTP status code to return for this exception.\n\n    Returns:\n    A callable exception handler that logs the exception and returns a JSON response with the specified status code.\n    \"\"\"\n\n    async def _handler(request: Request, exc):\n        exc_str = f\"{exc}\".replace(\"\\n\", \" \").replace(\"   \", \" \")\n        logger.exception(exc)\n        content = {\"status_code\": status, \"message\": exc_str, \"data\": None}\n        return JSONResponse(content=content, status_code=status)\n\n    return _handler\n\n\ndef register_exceptions(app: FastAPI) -> None:\n    \"\"\"\n    Registers custom exception handlers for the FastAPI application.\n\n    Parameters:\n    - app (FastAPI): The FastAPI application instance to register the exception handlers for.\n    \"\"\"\n    app.add_exception_handler(\n        RequestValidationError,\n        make_exception_handler(status.HTTP_422_UNPROCESSABLE_ENTITY),\n    )\n\n\n@app.exception_handler(HTTPException)\nasync def http_exception_handler(request, exc: HTTPException):  # pylint: disable=unused-argument\n    return JSONResponse(\n        status_code=exc.status_code,\n        content={\"error\": {\"message\": str(exc)}},\n    )\n\n\ndef main(\n    host=\"0.0.0.0\",\n    port=8000,\n    backlog=4096,\n    timeout_keep_alive=30,\n    workers=None,\n    log_level=\"info\",\n    reload=bool(os.environ.get(\"RELOAD\")),\n) -> None:\n    print(f\"Reload: {reload}\")\n\n    uvicorn.run(\n        \"integrations.web:app\",\n        host=host,\n        port=port,\n        log_level=log_level,\n        timeout_keep_alive=timeout_keep_alive,\n        backlog=backlog,\n        workers=workers,\n        reload=reload,\n    )\n"
  },
  {
    "path": "src/integrations-service/poe_tasks.toml",
    "content": "[tasks]\nformat = \"ruff format\"\nlint = \"ruff check\"\ntypecheck = \"pytype --config pytype.toml\"\ncheck = [\n    \"lint\",\n    \"format\",\n    \"typecheck\",\n]\ntest = \"pytest\"\ncodegen = \"\"\"\ndatamodel-codegen \\\n  --input ../openapi.yaml \\\n  --input-file-type openapi \\\n  --output integrations/autogen/ \\\n  --output-model-type pydantic_v2.BaseModel \\\n  --strict-types bool \\\n  --strict-nullable \\\n  --allow-population-by-field-name \\\n  --field-include-all-keys \\\n  --reuse-model \\\n  --snake-case-field \\\n  --enum-field-as-literal all \\\n  --field-constraints \\\n  --use-operation-id-as-name \\\n  --use-schema-description \\\n  --use-field-description \\\n  --use-annotated \\\n  --use-default \\\n  --use-unique-items-as-set \\\n  --use-subclass-enum \\\n  --use-union-operator \\\n  --use-one-literal-as-default \\\n  --use-double-quotes \\\n  --use-exact-imports \\\n  --use-standard-collections \\\n  --use-non-positive-negative-number-constrained-types \\\n  --target-python-version 3.12 \\\n  --treat-dot-as-module \\\n  --use-title-as-name \\\n  --collapse-root-models \\\n  --output-datetime-class AwareDatetime \\\n  --openapi-scopes schemas \\\n  --keep-model-order \\\n  --disable-timestamp\"\"\"\n\n"
  },
  {
    "path": "src/integrations-service/pyproject.toml",
    "content": "[project]\nname = \"integrations\"\nversion = \"1.0.0\"\ndescription = \"julep integrations service\"\nreadme = \"README.md\"\nrequires-python = \">=3.12,<3.13\"\ndependencies = [\n  \"langchain-community~=0.3.0\",\n  \"fastapi~=0.115.0\",\n  \"sse-starlette>=2.0.0\",\n  \"uvicorn~=0.30.6\",\n  \"langchain~=0.3.0\",\n  \"pydantic[email]>=2.11.2,<3.0.0\",\n  \"duckduckgo-search~=6.2.13\",\n  \"openai~=1.47.1\",\n  \"tweepy~=4.14.0\",\n  \"wikipedia~=1.4.0\",\n  \"fire~=0.6.0\",\n  \"pyowm~=3.3.0\",\n  \"spider-client~=0.0.70\",\n  \"browserbase>=1.0.5\",\n  \"setuptools~=75.1.0\",\n  \"beartype~=0.19.0\",\n  \"tenacity>=8.2.0,<8.4.0\",\n  \"gunicorn~=23.0.0\",\n  \"uvloop~=0.21.0\",\n  \"selenium~=4.25.0\",\n  \"playwright~=1.48.0\",\n  \"httpx~=0.27.2\",\n  \"pillow~=11.0.0\",\n  \"llama-index~=0.11.22\",\n  \"llama-parse~=0.5.13\",\n  \"cloudinary~=1.41.0\",\n  \"environs~=11.2.1\",\n  \"arxiv~=2.1.3\",\n  \"sentry-sdk[flask]>=2.19.0\",\n  \"unstructured-client==0.42.3\",\n  \"algoliasearch>=4.14.0\",\n  \"mcp>=1.8.0\",\n  \"google-api-python-client>=2.181.0\",\n  \"google-auth>=2.40.3\",\n  \"google-auth-oauthlib>=1.2.2\",\n  \"google-auth-httplib2>=0.2.0\",\n  \"aiosmtplib>=3.0.1\",\n]\n\n[dependency-groups]\ndev = [\n    \"datamodel-code-generator>=0.26.3\",\n    \"poethepoet>=0.31.1\",\n    \"pyright>=1.1.389\",\n    \"pytest>=8.3.3\",\n    \"pytest-asyncio>=0.24.0\",\n    \"pytest-cov>=6.0.0\",\n    \"pytype>=2024.10.11\",\n    \"ruff>=0.9.0\",\n]\n\n[tool.pytest.ini_options]\nasyncio_mode = \"auto\"\n"
  },
  {
    "path": "src/integrations-service/pytest.ini",
    "content": "[pytest]\npythonpath = .\ntestpaths = tests\npython_files = test_*.py\npython_classes = Test*\npython_functions = test_* "
  },
  {
    "path": "src/integrations-service/pytype.toml",
    "content": "# NOTE: All relative paths are relative to the location of this file.\n\n[tool.pytype]\n\n# Space-separated list of files or directories to exclude.\nexclude = [\n]\n\n# Space-separated list of files or directories to process.\ninputs = [\n    '.',\n]\n\n# Keep going past errors to analyze as many files as possible.\nkeep_going = true\n\n# Run N jobs in parallel. When 'auto' is used, this will be equivalent to the\n# number of CPUs on the host system.\njobs = 'auto'\n\n# All pytype output goes here.\noutput = '.pytype'\n\n# Platform (e.g., \"linux\", \"win32\") that the target code runs on.\nplatform = 'linux'\n\n# Paths to source code directories, separated by ':'.\npythonpath = '.'\n\n# Python version (major.minor) of the target code.\npython_version = '3.12'\n\n# Don't allow None to match bool. This flag is temporary and will be removed\n# once this behavior is enabled by default.\nnone_is_not_bool = true\n\n# Variables initialized as None retain their None binding. This flag is\n# temporary and will be removed once this behavior is enabled by default.\nstrict_none_binding = true\n\n# Space-separated list of error names to ignore.\ndisable = [\n    'pyi-error',\n]\n\n# --------------\n# Optional flags\n# --------------\n\n# Bind 'self' in methods with non-transparent decorators. This flag is temporary\n# and will be removed once this behavior is enabled by default.\nbind_decorated_methods = false\n\n# Enable parameter count checks for overriding methods with renamed arguments.\n# This flag is temporary and will be removed once this behavior is enabled by\n# default.\noverriding_renamed_parameter_count_checks = false\n\n# Opt-in: Do not allow Any as a return type.\nno_return_any = false\n\n# Opt-in: Require decoration with @typing.override when overriding a method or\n# nested class attribute of a parent class.\nrequire_override_decorator = false"
  },
  {
    "path": "src/integrations-service/tests/__init__.py",
    "content": "# Empty file to make the tests directory a Python package\n"
  },
  {
    "path": "src/integrations-service/tests/conftest.py",
    "content": "from unittest.mock import patch\n\nimport pytest\nfrom integrations.providers import available_providers\n\nfrom .mocks.brave import MockBraveSearchClient\nfrom .mocks.email import MockEmailClient\nfrom .mocks.llama_parse import MockLlamaParseClient\nfrom .mocks.spider import MockSpiderClient\nfrom .mocks.weather import MockWeatherClient\nfrom .mocks.wikipedia import MockWikipediaClient\n\n\n@pytest.fixture(autouse=True)\ndef mock_external_services():\n    \"\"\"Automatically mock all external service clients\"\"\"\n    with (\n        patch(\"langchain_community.tools.BraveSearch\", MockBraveSearchClient),\n        patch(\"smtplib.SMTP\", MockEmailClient),\n        patch(\"langchain_community.document_loaders.SpiderLoader\", MockSpiderClient),\n        patch(\"langchain_community.utilities.OpenWeatherMapAPIWrapper\", MockWeatherClient),\n        patch(\"langchain_community.document_loaders.WikipediaLoader\", MockWikipediaClient),\n        patch(\"llama_parse.LlamaParse\", MockLlamaParseClient),\n    ):\n        yield\n\n\n@pytest.fixture\ndef providers():\n    \"\"\"Fixture that provides access to all available integration providers\"\"\"\n    return available_providers\n\n\n@pytest.fixture\ndef wikipedia_provider():\n    \"\"\"Fixture that provides access to the Wikipedia provider\"\"\"\n    return available_providers[\"wikipedia\"]\n\n\n@pytest.fixture\ndef weather_provider():\n    \"\"\"Fixture that provides access to the Weather provider\"\"\"\n    return available_providers[\"weather\"]\n\n\n@pytest.fixture\ndef spider_provider():\n    \"\"\"Fixture that provides access to the Spider provider\"\"\"\n    return available_providers[\"spider\"]\n\n\n@pytest.fixture\ndef brave_provider():\n    \"\"\"Fixture that provides access to the Brave provider\"\"\"\n    return available_providers[\"brave\"]\n\n\n@pytest.fixture\ndef email_provider():\n    \"\"\"Fixture that provides access to the Email provider\"\"\"\n    return available_providers[\"email\"]\n\n\n@pytest.fixture\ndef llama_parse_provider():\n    \"\"\"Fixture that provides access to the LlamaParse provider\"\"\"\n    return available_providers[\"llama_parse\"]\n"
  },
  {
    "path": "src/integrations-service/tests/mocks/__init__.py",
    "content": "\"\"\"Mock implementations of external integration libraries\"\"\"\n"
  },
  {
    "path": "src/integrations-service/tests/mocks/brave.py",
    "content": "\"\"\"Mock implementation of Brave Search API client\"\"\"\n\n\nclass MockBraveSearchClient:\n    def __init__(self, api_key: str):\n        self.api_key = api_key\n\n    def search(self, query: str) -> str:\n        \"\"\"Mock search that returns a fixed response\"\"\"\n        return f\"Mock Brave search results for: {query}\"\n\n\nclass MockBraveSearchException(Exception):\n    \"\"\"Mock exception for Brave Search errors\"\"\"\n"
  },
  {
    "path": "src/integrations-service/tests/mocks/email.py",
    "content": "\"\"\"Mock implementation of email client\"\"\"\n\n\nclass MockEmailClient:\n    def __init__(self, host: str, port: int, user: str, password: str):\n        self.host = host\n        self.port = port\n        self.user = user\n        self.password = password\n\n    def send(self, to: str, from_: str, subject: str, body: str) -> bool:\n        \"\"\"Mock email sending that always succeeds\"\"\"\n        return True\n\n\nclass MockEmailException(Exception):\n    \"\"\"Mock exception for email errors\"\"\"\n"
  },
  {
    "path": "src/integrations-service/tests/mocks/llama_parse.py",
    "content": "\"\"\"Mock implementation of llama parse client\"\"\"\n\nfrom llama_index.core.schema import Document\n\n\nclass MockLlamaParseClient:\n    def __init__(self, api_key: str, result_type: str, num_workers: int, language: str):\n        self.api_key = api_key\n        self.result_type = result_type\n        self.num_workers = num_workers\n        self.language = language\n\n    async def aload_data(self, file_content: bytes, extra_info: dict) -> list[dict]:\n        \"\"\"Mock loading data that returns fixed documents\"\"\"\n        return [\n            Document(page_content=\"Mock document content 1\", metadata=extra_info),\n            Document(page_content=\"Mock document content 2\", metadata=extra_info),\n        ]\n\n\nclass MockLlamaParseException(Exception):\n    \"\"\"Mock exception for llama parse errors\"\"\"\n"
  },
  {
    "path": "src/integrations-service/tests/mocks/spider.py",
    "content": "\"\"\"Mock implementation of web spider client\"\"\"\n\nfrom langchain_core.documents import Document\nfrom pydantic import AnyUrl\n\n\nclass MockSpiderClient:\n    def __init__(self, api_key: str):\n        self.api_key = api_key\n\n    def crawl(self, url: AnyUrl, mode: str = \"scrape\") -> list[Document]:\n        \"\"\"Mock crawl that returns fixed documents\"\"\"\n        return [\n            Document(page_content=\"Mock crawled content 1\", metadata={\"source\": str(url)}),\n            Document(page_content=\"Mock crawled content 2\", metadata={\"source\": str(url)}),\n        ]\n\n\nclass MockSpiderException(Exception):\n    \"\"\"Mock exception for spider errors\"\"\"\n"
  },
  {
    "path": "src/integrations-service/tests/mocks/weather.py",
    "content": "\"\"\"Mock implementation of weather API client\"\"\"\n\n\nclass MockWeatherClient:\n    def __init__(self, api_key: str):\n        self.api_key = api_key\n\n    def get_weather(self, location: str) -> str:\n        \"\"\"Mock weather lookup that returns fixed data\"\"\"\n        return f\"Mock weather data for {location}: Sunny, 72°F\"\n\n\nclass MockWeatherException(Exception):\n    \"\"\"Mock exception for weather API errors\"\"\"\n"
  },
  {
    "path": "src/integrations-service/tests/mocks/wikipedia.py",
    "content": "\"\"\"Mock implementation of Wikipedia API client\"\"\"\n\nfrom langchain_core.documents import Document\n\n\nclass MockWikipediaClient:\n    def __init__(self, query: str, load_max_docs: int = 2):\n        \"\"\"Mock Wikipedia search that returns fixed documents\"\"\"\n        self.result = [\n            Document(\n                page_content=f\"Mock Wikipedia content about {query}\",\n                metadata={\"source\": f\"wikipedia/{query}\"},\n            )\n            for _ in range(load_max_docs)\n        ]\n\n    def load(self, *args, **kwargs) -> list[Document]:\n        return self.result\n\n\nclass MockWikipediaException(Exception):\n    \"\"\"Mock exception for Wikipedia API errors\"\"\"\n"
  },
  {
    "path": "src/integrations-service/tests/test_mcp.py",
    "content": "from types import SimpleNamespace\nfrom unittest.mock import patch\n\nimport pytest\nfrom integrations.models import BaseProvider\nfrom integrations.providers import available_providers\nfrom integrations.utils.execute_integration import execute_integration\nfrom integrations.utils.integrations import mcp as mcp_utils\n\n\n@pytest.mark.asyncio\nasync def test_mcp_provider_in_registry():\n    assert \"mcp\" in available_providers\n    provider = available_providers[\"mcp\"]\n    assert isinstance(provider, BaseProvider)\n    methods = {m.method for m in provider.methods}\n    assert {\"list_tools\", \"call_tool\"}.issubset(methods)\n\n\n@pytest.mark.asyncio\nasync def test_mcp_list_tools_exec(monkeypatch):\n    # Patch connector to avoid requiring real MCP server\n\n    class FakeSession:\n        async def initialize(self):  # pragma: no cover - not used\n            pass\n\n        async def list_tools(self):\n            return SimpleNamespace(\n                tools=[\n                    SimpleNamespace(\n                        name=\"echo\", description=\"Echo tool\", inputSchema={\"type\": \"object\"}\n                    ),\n                    SimpleNamespace(name=\"ping\", description=\"Ping tool\", inputSchema=None),\n                ]\n            )\n\n        async def __aexit__(self, *_):  # pragma: no cover - not used\n            return None\n\n    async def fake_connect(_setup):\n        async def aclose():\n            return None\n\n        return FakeSession(), aclose\n\n    monkeypatch.setattr(mcp_utils, \"_connect_session\", fake_connect)\n\n    # Build arguments via autogen classes at runtime\n    from integrations.autogen.Tools import McpListToolsArguments, McpSetup\n\n    setup = McpSetup(transport=\"http\", http_url=\"http://localhost:9999/mcp\")\n    args = McpListToolsArguments()\n\n    result = await execute_integration(\n        provider=\"mcp\",\n        method=\"list_tools\",\n        setup=setup,\n        arguments=args,\n    )\n\n    assert hasattr(result, \"tools\")\n    assert len(result.tools) == 2\n    assert {t.name for t in result.tools} == {\"echo\", \"ping\"}\n\n\n@pytest.mark.asyncio\nasync def test_mcp_call_tool_exec(monkeypatch):\n    # Patch connector and session.call_tool\n\n    class FakeCallResult:\n        def __init__(self):\n            self.content = [SimpleNamespace(kind=\"text\", text=\"hello\"), {\"json\": True}]\n            self.structuredContent = {\"ok\": True}\n            self.isError = False\n\n    class FakeSession:\n        async def call_tool(self, tool_name: str, arguments):\n            assert tool_name == \"echo\"\n            return FakeCallResult()\n\n    async def fake_connect(_setup):\n        async def aclose():\n            return None\n\n        return FakeSession(), aclose\n\n    monkeypatch.setattr(mcp_utils, \"_connect_session\", fake_connect)\n\n    from integrations.autogen.Tools import McpCallToolArguments, McpSetup\n\n    setup = McpSetup(transport=\"http\", http_url=\"http://localhost:9999/mcp\")\n    args = McpCallToolArguments(tool_name=\"echo\", arguments={\"value\": \"hi\"})\n\n    result = await execute_integration(\n        provider=\"mcp\",\n        method=\"call_tool\",\n        setup=setup,\n        arguments=args,\n    )\n\n    # We expect normalized fields present\n    assert result.is_error is False\n    assert result.structured == {\"ok\": True}\n    assert isinstance(result.content, list)\n    assert len(result.content) >= 1\n\n\nfrom unittest.mock import AsyncMock\n\nimport pytest\nfrom integrations.autogen.Tools import McpCallToolArguments, McpListToolsArguments, McpSetup\n\n\n@pytest.mark.asyncio\n@patch(\"integrations.utils.integrations.mcp.streamablehttp_client\")\nasync def test_http_session_management(mock_client):\n    \"\"\"\n    Test that HTTP transport uses streamablehttp_client correctly\n    \"\"\"\n    setup = McpSetup(transport=\"http\", http_url=\"http://test.example/mcp\")\n\n    # Mock the async context manager\n    mock_ctx = AsyncMock()\n    mock_read = AsyncMock()\n    mock_write = AsyncMock()\n    mock_ctx.__aenter__.return_value = (mock_read, mock_write, None)\n    mock_ctx.__aexit__.return_value = None\n\n    mock_client.return_value = mock_ctx\n\n    # Mock ClientSession initialization\n    mock_session = AsyncMock()\n    mock_session.initialize = AsyncMock()\n    mock_session.__aenter__ = AsyncMock(return_value=mock_session)\n    mock_session.__aexit__ = AsyncMock()\n\n    with patch(\"mcp.ClientSession\") as MockClientSession:\n        MockClientSession.return_value = mock_session\n\n        # Trigger the connection\n        from integrations.utils.integrations.mcp import _connect_session\n\n        _session, aclose = await _connect_session(setup)\n\n        # Verify streamablehttp_client was called for HTTP transport\n        mock_client.assert_called_once_with(\"http://test.example/mcp\", headers={})\n\n        # Verify session was created and initialized\n        MockClientSession.assert_called_once_with(mock_read, mock_write)\n        mock_session.initialize.assert_awaited_once()\n\n        # Verify cleanup function exists\n        assert callable(aclose)\n        await aclose()\n\n\n@pytest.mark.asyncio\n@patch(\"mcp.ClientSession\")\n@patch(\"integrations.utils.integrations.mcp.streamablehttp_client\")\nasync def test_http_connection_retry_logic(mock_client, mock_session_cls):\n    \"\"\"\n    Test that HTTP connection uses retry logic\n    \"\"\"\n    setup = McpSetup(transport=\"http\", http_url=\"http://test.example/mcp\")\n\n    # Mock successful connection\n    mock_ctx = AsyncMock()\n    mock_read = AsyncMock()\n    mock_write = AsyncMock()\n    mock_ctx.__aenter__.return_value = (mock_read, mock_write)\n    mock_ctx.__aexit__.return_value = None\n    mock_client.return_value = mock_ctx\n\n    # Mock ClientSession\n    mock_session = AsyncMock()\n    mock_session.initialize = AsyncMock()\n    mock_session.__aenter__ = AsyncMock(return_value=mock_session)\n    mock_session.__aexit__ = AsyncMock()\n    mock_session_cls.return_value = mock_session\n\n    from integrations.utils.integrations.mcp import _connect_session\n\n    # Test that connection works\n    session, aclose = await _connect_session(setup)\n    assert session is not None\n    assert callable(aclose)\n\n    # Verify streamablehttp_client was called\n    mock_client.assert_called_once()\n\n    # Clean up\n    await aclose()\n\n\ndef test_mcp_sdk_version_check():\n    \"\"\"\n    Test that missing MCP SDK raises proper error message\n    \"\"\"\n    # Test that _ensure_mcp_available provides clear error if mcp is missing\n    from integrations.utils.integrations.mcp import _ensure_mcp_available\n\n    with (\n        patch(\"builtins.__import__\", side_effect=ImportError(\"mcp not found\")),\n        pytest.raises(RuntimeError, match=r\"The 'mcp' Python package is required\"),\n    ):\n        _ensure_mcp_available()\n\n\n@pytest.mark.parametrize(\"transport\", [\"http\", \"sse\"])\ndef test_mcp_setup_transport_validation(transport):\n    \"\"\"\n    Test that McpSetup accepts valid transport types (http and sse)\n    \"\"\"\n    from integrations.autogen.Tools import McpSetup\n\n    # Valid transports should not raise validation errors\n    setup = McpSetup(transport=transport)\n    assert setup.transport == transport\n    assert setup.transport in [\"http\", \"sse\"]\n\n\ndef test_mcp_setup_invalid_transport():\n    \"\"\"\n    Test that invalid transport types raise validation error\n    \"\"\"\n    from integrations.autogen.Tools import McpSetup\n    from pydantic import ValidationError\n\n    # Invalid transport should raise validation error\n    with pytest.raises(ValidationError, match=\"Input should be 'sse' or 'http'\"):\n        McpSetup(transport=\"invalid\")\n\n\n@pytest.mark.asyncio\nasync def test_mcp_tool_response_normalization():\n    \"\"\"\n    Test that MCP tool responses are properly normalized\n    \"\"\"\n    from integrations.autogen.Tools import McpSetup\n    from integrations.models import McpToolCallOutput\n\n    setup = McpSetup(transport=\"http\", http_url=\"http://test.example/mcp\")\n    args = McpCallToolArguments(tool_name=\"test_tool\", arguments={\"test\": \"data\"})\n\n    # Mock the entire connection and tool call\n    with patch(\"integrations.utils.integrations.mcp._connect_session\") as mock_connect:\n        mock_session = AsyncMock()\n        mock_result = SimpleNamespace(\n            content=[\n                SimpleNamespace(text=\"Hello world\"),\n                {\"structured\": True},\n                SimpleNamespace(text=\"Second message\"),\n            ],\n            structuredContent={\"key\": \"value\"},\n            isError=False,\n        )\n        mock_session.call_tool.return_value = mock_result\n\n        mock_acontext = AsyncMock()\n        mock_connect.return_value = (mock_session, mock_acontext)\n\n        from integrations.utils.integrations.mcp import call_tool\n\n        result = await call_tool(setup, args)\n\n        # Verify normalization\n        assert isinstance(result, McpToolCallOutput)\n        assert result.text == \"Hello world\\nSecond message\"\n        assert result.structured == {\"key\": \"value\"}\n        assert result.is_error is False\n        assert len(result.content) == 3\n        assert \"Hello world\" in str(result.content[0])\n        assert \"structured\" in str(result.content[1])\n        assert \"Second message\" in str(result.content[2])\n\n\n@pytest.mark.asyncio\nasync def test_mcp_list_tools_integration():\n    \"\"\"\n    Test end-to-end tool discovery integration\n    \"\"\"\n    from integrations.autogen.Tools import McpSetup\n    from integrations.models import McpListToolsOutput\n\n    setup = McpSetup(transport=\"http\", http_url=\"http://test.example/mcp\")\n    args = McpListToolsArguments()\n\n    # Mock connection and session\n    with patch(\"integrations.utils.integrations.mcp._connect_session\") as mock_connect:\n        mock_session = AsyncMock()\n        mock_tools = SimpleNamespace(\n            tools=[\n                SimpleNamespace(\n                    name=\"tool1\", description=\"First tool\", inputSchema={\"type\": \"object\"}\n                ),\n                SimpleNamespace(name=\"tool2\", description=\"Second tool\", inputSchema=None),\n            ]\n        )\n        mock_session.list_tools.return_value = mock_tools\n\n        mock_acontext = AsyncMock()\n        mock_connect.return_value = (mock_session, mock_acontext)\n\n        from integrations.utils.integrations.mcp import list_tools\n\n        result = await list_tools(setup, args)\n\n        # Verify integration works end-to-end\n        assert isinstance(result, McpListToolsOutput)\n        assert len(result.tools) == 2\n        assert result.tools[0].name == \"tool1\"\n        assert result.tools[0].description == \"First tool\"\n        assert result.tools[1].name == \"tool2\"\n        assert result.tools[1].input_schema is None\n\n\n@pytest.mark.asyncio\nasync def test_mcp_timeout_handling():\n    \"\"\"\n    Test that tool calls respect timeout_seconds parameter\n    \"\"\"\n    from unittest.mock import AsyncMock\n\n    from integrations.autogen.Tools import McpSetup\n\n    setup = McpSetup(transport=\"http\", http_url=\"http://test.example/mcp\")\n    args = McpCallToolArguments(\n        tool_name=\"slow_tool\",\n        arguments={\"data\": \"test\"},\n        timeout_seconds=5,  # 5 second timeout\n    )\n\n    with patch(\"integrations.utils.integrations.mcp._connect_session\") as mock_connect:\n        mock_session = AsyncMock()\n        mock_session.call_tool = AsyncMock(\n            side_effect=AsyncMock(\n                return_value=SimpleNamespace(content=[], structuredContent={}, isError=False)\n            )\n        )\n\n        mock_acontext = AsyncMock()\n        mock_connect.return_value = (mock_session, mock_acontext)\n\n        from asyncio import wait_for\n\n        from integrations.utils.integrations.mcp import call_tool\n\n        # Should complete without timeout\n        result = await wait_for(call_tool(setup, args), timeout=10)\n\n        # Verify timeout was respected (no exception)\n        assert result is not None\n        mock_session.call_tool.assert_awaited_once()\n        # The asyncio.wait_for in call_tool should have used timeout_seconds=5\n\n\n@pytest.mark.asyncio\nasync def test_mcp_sse_transport_connection():\n    \"\"\"\n    Test that SSE transport establishes connection with proper headers\n    \"\"\"\n    from integrations.autogen.Tools import McpSetup\n    from integrations.utils.integrations.mcp import _connect_session\n\n    setup = McpSetup(transport=\"sse\", http_url=\"http://test.example/sse\")\n\n    with patch(\"integrations.utils.integrations.mcp.sse_client\") as mock_client:\n        mock_ctx = AsyncMock()\n        mock_read = AsyncMock()\n        mock_write = AsyncMock()\n        mock_ctx.__aenter__.return_value = (mock_read, mock_write, None)\n        mock_ctx.__aexit__.return_value = None\n        mock_client.return_value = mock_ctx\n\n        mock_session = AsyncMock()\n        mock_session.initialize = AsyncMock()\n        mock_session.__aenter__ = AsyncMock(return_value=mock_session)\n        mock_session.__aexit__ = AsyncMock()\n\n        with patch(\"mcp.ClientSession\", return_value=mock_session):\n            _session, aclose = await _connect_session(setup)\n\n            # Verify SSE-specific headers were added\n            call_args = mock_client.call_args\n            headers = call_args[1][\"headers\"]\n\n            assert \"Accept\" in headers\n            assert headers[\"Accept\"] == \"text/event-stream\"\n            assert \"Cache-Control\" in headers\n            assert headers[\"Cache-Control\"] == \"no-cache\"\n\n            # Verify session was properly initialized\n            mock_session.initialize.assert_awaited_once()\n\n            # Clean up\n            await aclose()\n\n\n@pytest.mark.asyncio\nasync def test_mcp_sse_connection_error_handling():\n    \"\"\"\n    Test that SSE connection failures provide clear error messages\n    \"\"\"\n    from integrations.autogen.Tools import McpSetup\n    from integrations.utils.integrations.mcp import _connect_session\n\n    setup = McpSetup(transport=\"sse\", http_url=\"http://test.example/sse\")\n\n    with patch(\"integrations.utils.integrations.mcp.sse_client\") as mock_client:\n        mock_ctx = AsyncMock()\n        mock_read = AsyncMock()\n        mock_write = AsyncMock()\n        mock_ctx.__aenter__.return_value = (mock_read, mock_write, None)\n        mock_ctx.__aexit__.return_value = None\n        mock_client.return_value = mock_ctx\n\n        mock_session = AsyncMock()\n        # Simulate connection failure\n        mock_session.initialize = AsyncMock(side_effect=Exception(\"Connection refused\"))\n        mock_session.__aenter__ = AsyncMock(return_value=mock_session)\n        mock_session.__aexit__ = AsyncMock()\n\n        with (\n            patch(\"mcp.ClientSession\", return_value=mock_session),\n            pytest.raises(\n                RuntimeError, match=r\"Failed to establish SSE connection.*Connection refused\"\n            ),\n        ):\n            await _connect_session(setup)\n"
  },
  {
    "path": "src/integrations-service/tests/test_mcp_sse_server.py",
    "content": "#!/usr/bin/env python3\n\"\"\"\nSimple MCP SSE server for testing the SSE transport implementation.\n\nThis server implements the MCP protocol with SSE transport according to the\nspecification. It provides basic tools for testing purposes.\n\nTo run this server:\n    python tests/test_mcp_sse_server.py\n\nThen connect to it using:\n    http://localhost:8001/sse\n\"\"\"\n\nimport asyncio\nimport json\nimport logging\nimport uuid\nfrom collections.abc import AsyncIterator\nfrom contextlib import asynccontextmanager\n\nfrom fastapi import FastAPI, Request\nfrom fastapi.middleware.cors import CORSMiddleware\nfrom sse_starlette.sse import EventSourceResponse\n\nlogging.basicConfig(level=logging.INFO)\nlogger = logging.getLogger(__name__)\n\n\n@asynccontextmanager\nasync def lifespan(app: FastAPI):\n    \"\"\"Application lifespan manager.\"\"\"\n    logger.info(\"MCP SSE test server starting on http://localhost:8001\")\n    yield\n    logger.info(\"MCP SSE test server shutting down\")\n\n\napp = FastAPI(lifespan=lifespan)\n\n# Add CORS middleware for testing\napp.add_middleware(\n    CORSMiddleware,\n    allow_origins=[\"*\"],\n    allow_credentials=True,\n    allow_methods=[\"*\"],\n    allow_headers=[\"*\"],\n)\n\n# Session storage for stateful operations\nsessions = {}\n\n\nasync def sse_generator(request: Request) -> AsyncIterator[dict]:\n    \"\"\"Generate SSE events for the MCP protocol.\"\"\"\n    session_id = str(uuid.uuid4())\n    sessions[session_id] = {\"initialized\": False}\n\n    # Send initial endpoint event to tell client where to POST messages\n    yield {\n        \"event\": \"endpoint\",\n        \"data\": json.dumps({\n            \"url\": f\"http://localhost:8001/messages/{session_id}\",\n            \"method\": \"POST\",\n        }),\n    }\n\n    # Keep connection alive with periodic pings\n    try:\n        while True:\n            await asyncio.sleep(30)  # Send ping every 30 seconds\n            if await request.is_disconnected():\n                break\n            yield {\n                \"event\": \"ping\",\n                \"data\": json.dumps({\"timestamp\": asyncio.get_event_loop().time()}),\n            }\n    finally:\n        # Clean up session\n        sessions.pop(session_id, None)\n        logger.info(f\"SSE connection closed for session {session_id}\")\n\n\n@app.get(\"/sse\")\nasync def sse_endpoint(request: Request):\n    \"\"\"SSE endpoint for MCP protocol.\"\"\"\n    logger.info(\"New SSE connection established\")\n    return EventSourceResponse(sse_generator(request))\n\n\n@app.post(\"/messages/{session_id}\")\nasync def message_endpoint(session_id: str, request: Request):\n    \"\"\"Handle MCP JSON-RPC messages.\"\"\"\n    body = await request.json()\n    logger.info(f\"Received message for session {session_id}: {body}\")\n\n    method = body.get(\"method\")\n    id_ = body.get(\"id\")\n\n    # Handle MCP protocol methods\n    if method == \"initialize\":\n        sessions[session_id][\"initialized\"] = True\n        return {\n            \"jsonrpc\": \"2.0\",\n            \"id\": id_,\n            \"result\": {\n                \"protocolVersion\": \"2024-11-05\",\n                \"capabilities\": {\"tools\": {\"listChanged\": False}},\n                \"serverInfo\": {\"name\": \"test-mcp-sse-server\", \"version\": \"1.0.0\"},\n            },\n        }\n\n    if method == \"tools/list\":\n        if not sessions.get(session_id, {}).get(\"initialized\"):\n            return {\n                \"jsonrpc\": \"2.0\",\n                \"id\": id_,\n                \"error\": {\"code\": -32002, \"message\": \"Session not initialized\"},\n            }\n\n        return {\n            \"jsonrpc\": \"2.0\",\n            \"id\": id_,\n            \"result\": {\n                \"tools\": [\n                    {\n                        \"name\": \"test_echo\",\n                        \"description\": \"Echo back the input message\",\n                        \"inputSchema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\"message\": {\"type\": \"string\"}},\n                            \"required\": [\"message\"],\n                        },\n                    },\n                    {\n                        \"name\": \"test_add\",\n                        \"description\": \"Add two numbers\",\n                        \"inputSchema\": {\n                            \"type\": \"object\",\n                            \"properties\": {\"a\": {\"type\": \"number\"}, \"b\": {\"type\": \"number\"}},\n                            \"required\": [\"a\", \"b\"],\n                        },\n                    },\n                ]\n            },\n        }\n\n    if method == \"tools/call\":\n        if not sessions.get(session_id, {}).get(\"initialized\"):\n            return {\n                \"jsonrpc\": \"2.0\",\n                \"id\": id_,\n                \"error\": {\"code\": -32002, \"message\": \"Session not initialized\"},\n            }\n\n        params = body.get(\"params\", {})\n        tool_name = params.get(\"name\")\n        arguments = params.get(\"arguments\", {})\n\n        if tool_name == \"test_echo\":\n            message = arguments.get(\"message\", \"\")\n            return {\n                \"jsonrpc\": \"2.0\",\n                \"id\": id_,\n                \"result\": {\"content\": [{\"type\": \"text\", \"text\": f\"Echo: {message}\"}]},\n            }\n\n        if tool_name == \"test_add\":\n            a = arguments.get(\"a\", 0)\n            b = arguments.get(\"b\", 0)\n            return {\n                \"jsonrpc\": \"2.0\",\n                \"id\": id_,\n                \"result\": {\"content\": [{\"type\": \"text\", \"text\": f\"Result: {a + b}\"}]},\n            }\n\n        return {\n            \"jsonrpc\": \"2.0\",\n            \"id\": id_,\n            \"error\": {\"code\": -32601, \"message\": f\"Unknown tool: {tool_name}\"},\n        }\n\n    return {\n        \"jsonrpc\": \"2.0\",\n        \"id\": id_,\n        \"error\": {\"code\": -32601, \"message\": f\"Method not found: {method}\"},\n    }\n\n\n@app.get(\"/health\")\nasync def health():\n    \"\"\"Health check endpoint.\"\"\"\n    return {\"status\": \"ok\", \"server\": \"test-mcp-sse-server\"}\n\n\nif __name__ == \"__main__\":\n    import uvicorn\n\n    uvicorn.run(\n        app,\n        host=\"0.0.0.0\",\n        port=8001,\n        log_level=\"info\",\n    )\n"
  },
  {
    "path": "src/integrations-service/tests/test_provider_execution.py",
    "content": "\"\"\"Tests for provider execution using mocks\"\"\"\n\nimport pytest\nfrom integrations.autogen.Tools import (\n    WikipediaSearchArguments,\n)\nfrom integrations.utils.execute_integration import execute_integration\n\n\n@pytest.mark.asyncio\nasync def test_weather_get_mock(wikipedia_provider):\n    \"\"\"Test wikipedia lookup with mock client\"\"\"\n    query = \"London\"\n\n    result = await execute_integration(\n        provider=\"wikipedia\",\n        method=\"search\",\n        arguments=WikipediaSearchArguments(query=query),\n    )\n\n    assert len(result.documents) > 0\n    assert any((query in doc.page_content) for doc in result.documents)\n\n\n# @pytest.mark.asyncio\n# async def test_weather_get_direct():\n#     \"\"\"Test weather lookup with mock client\"\"\"\n#     raise NotImplementedError\n\n\n# def test_weather_get_mock(weather_provider):\n#     \"\"\"Test weather lookup with mock client\"\"\"\n#     raise NotImplementedError\n\n\n# def test_spider_crawl(spider_provider):\n#     \"\"\"Test web crawling with mock client\"\"\"\n#     raise NotImplementedError\n\n\n# def test_brave_search(brave_provider):\n#     \"\"\"Test Brave search with mock client\"\"\"\n#     raise NotImplementedError\n\n\n# def test_email_send(email_provider):\n#     \"\"\"Test email sending with mock client\"\"\"\n#     raise NotImplementedError\n"
  },
  {
    "path": "src/integrations-service/tests/test_providers.py",
    "content": "from integrations.models import BaseProvider, BaseProviderMethod, ProviderInfo\n\n\ndef test_available_providers(providers):\n    \"\"\"Test that the available providers dictionary is properly structured\"\"\"\n    assert isinstance(providers, dict)\n    assert all(isinstance(key, str) for key in providers)\n    assert all(isinstance(value, BaseProvider) for value in providers.values())\n\n\ndef test_provider_structure(providers):\n    \"\"\"Test that each provider has the required attributes\"\"\"\n    for provider in providers.values():\n        assert isinstance(provider.provider, str)\n        assert isinstance(provider.methods, list)\n        assert all(isinstance(method, BaseProviderMethod) for method in provider.methods)\n        assert isinstance(provider.info, ProviderInfo)\n\n\ndef test_wikipedia_provider(wikipedia_provider):\n    \"\"\"Test Wikipedia provider specific configuration\"\"\"\n    assert wikipedia_provider.provider == \"wikipedia\"\n    assert wikipedia_provider.setup is None\n    assert len(wikipedia_provider.methods) == 1\n    assert wikipedia_provider.methods[0].method == \"search\"\n\n\ndef test_weather_provider(weather_provider):\n    \"\"\"Test Weather provider specific configuration\"\"\"\n    assert weather_provider.provider == \"weather\"\n    assert weather_provider.setup is not None\n    assert len(weather_provider.methods) == 1\n    assert weather_provider.methods[0].method == \"get\"\n\n\ndef test_llama_parse_provider(llama_parse_provider):\n    \"\"\"Test LlamaParse provider specific configuration\"\"\"\n    assert llama_parse_provider.provider == \"llama_parse\"\n    assert llama_parse_provider.setup is not None\n    assert len(llama_parse_provider.methods) == 1\n    assert llama_parse_provider.methods[0].method == \"parse\"\n"
  },
  {
    "path": "src/integrations-service/tests/working_mcp_sse_server.py",
    "content": "#!/usr/bin/env python3\n\"\"\"\nA working MCP SSE server that properly implements the protocol.\nBased on the FastMCP framework patterns.\n\nTo run:\n    python tests/working_mcp_sse_server.py\n\nThen connect at:\n    http://localhost:8080/sse\n\"\"\"\n\nimport asyncio\nimport logging\nimport os\nfrom datetime import UTC, datetime\nfrom typing import Any\n\nfrom mcp import Tool\nfrom mcp.server import Server\nfrom mcp.server.sse import sse_server\n\n# Configure logging\nlogging.basicConfig(level=logging.INFO)\nlogger = logging.getLogger(__name__)\n\n# Create MCP server instance\nmcp_server = Server(\"working-mcp-sse\")\n\n\n@mcp_server.list_tools()\nasync def list_tools() -> list[Tool]:\n    \"\"\"List available tools\"\"\"\n    return [\n        Tool(\n            name=\"get_time\",\n            description=\"Get the current time\",\n            inputSchema={\n                \"type\": \"object\",\n                \"properties\": {\n                    \"timezone\": {\n                        \"type\": \"string\",\n                        \"description\": \"Timezone (e.g., 'UTC', 'EST', 'PST')\",\n                        \"default\": \"UTC\",\n                    }\n                },\n                \"required\": [],\n            },\n        ),\n        Tool(\n            name=\"echo\",\n            description=\"Echo back a message\",\n            inputSchema={\n                \"type\": \"object\",\n                \"properties\": {\"message\": {\"type\": \"string\", \"description\": \"Message to echo\"}},\n                \"required\": [\"message\"],\n            },\n        ),\n        Tool(\n            name=\"calculate\",\n            description=\"Perform basic arithmetic\",\n            inputSchema={\n                \"type\": \"object\",\n                \"properties\": {\n                    \"operation\": {\n                        \"type\": \"string\",\n                        \"enum\": [\"add\", \"subtract\", \"multiply\", \"divide\"],\n                        \"description\": \"Operation to perform\",\n                    },\n                    \"a\": {\"type\": \"number\", \"description\": \"First number\"},\n                    \"b\": {\"type\": \"number\", \"description\": \"Second number\"},\n                },\n                \"required\": [\"operation\", \"a\", \"b\"],\n            },\n        ),\n        Tool(\n            name=\"list_files\",\n            description=\"List files in the current directory\",\n            inputSchema={\n                \"type\": \"object\",\n                \"properties\": {\n                    \"path\": {\n                        \"type\": \"string\",\n                        \"description\": \"Directory path (default: current)\",\n                        \"default\": \".\",\n                    },\n                    \"pattern\": {\n                        \"type\": \"string\",\n                        \"description\": \"File pattern (e.g., '*.txt')\",\n                        \"default\": \"*\",\n                    },\n                },\n                \"required\": [],\n            },\n        ),\n    ]\n\n\n@mcp_server.call_tool()\nasync def call_tool(name: str, arguments: dict[str, Any]) -> list:\n    \"\"\"Execute a tool\"\"\"\n    logger.info(f\"Tool called: {name} with args: {arguments}\")\n\n    if name == \"get_time\":\n        tz_name = arguments.get(\"timezone\", \"UTC\")\n        current_time = datetime.now(tz=UTC).isoformat()\n        return [{\"type\": \"text\", \"text\": f\"Current time ({tz_name}): {current_time}\"}]\n\n    if name == \"echo\":\n        message = arguments.get(\"message\", \"\")\n        return [{\"type\": \"text\", \"text\": f\"Echo: {message}\"}]\n\n    if name == \"calculate\":\n        operation = arguments.get(\"operation\")\n        a = arguments.get(\"a\", 0)\n        b = arguments.get(\"b\", 0)\n\n        result = 0\n        if operation == \"add\":\n            result = a + b\n        elif operation == \"subtract\":\n            result = a - b\n        elif operation == \"multiply\":\n            result = a * b\n        elif operation == \"divide\":\n            if b != 0:\n                result = a / b\n            else:\n                return [{\"type\": \"text\", \"text\": \"Error: Division by zero\"}]\n\n        return [{\"type\": \"text\", \"text\": f\"Result of {a} {operation} {b} = {result}\"}]\n\n    if name == \"list_files\":\n        import glob\n\n        path = arguments.get(\"path\", \".\")\n        pattern = arguments.get(\"pattern\", \"*\")\n\n        try:\n            files = glob.glob(os.path.join(path, pattern))[:20]  # Limit to 20 files\n            file_list = \"\\n\".join(files) if files else \"No files found\"\n            return [{\"type\": \"text\", \"text\": f\"Files in {path}/{pattern}:\\n{file_list}\"}]\n        except Exception as e:\n            return [{\"type\": \"text\", \"text\": f\"Error listing files: {e}\"}]\n\n    else:\n        return [{\"type\": \"text\", \"text\": f\"Unknown tool: {name}\"}]\n\n\nasync def main():\n    \"\"\"Start the SSE server\"\"\"\n    host = \"0.0.0.0\"\n    port = 8080\n\n    logger.info(f\"Starting MCP SSE server on http://{host}:{port}/sse\")\n    logger.info(\"Tools available: get_time, echo, calculate, list_files\")\n\n    # Start SSE server using MCP SDK\n    async with sse_server(mcp_server, host=host, port=port, endpoint=\"/sse\"):\n        logger.info(f\"Server running. Connect at: http://localhost:{port}/sse\")\n        logger.info(\"Press Ctrl+C to stop\")\n\n        # Keep server running\n        try:\n            await asyncio.Future()  # Run forever until interrupted\n        except KeyboardInterrupt:\n            logger.info(\"Shutting down server...\")\n\n\nif __name__ == \"__main__\":\n    try:\n        asyncio.run(main())\n    except KeyboardInterrupt:\n        logger.info(\"Server stopped\")\n"
  },
  {
    "path": "src/llm-proxy/.dockerignore",
    "content": "!.keys\n"
  },
  {
    "path": "src/llm-proxy/.gitignore",
    "content": ".keys\n"
  },
  {
    "path": "src/llm-proxy/AGENTS.md",
    "content": "# AGENTS.md - llm-proxy\n\nThis directory contains the LLM proxy service using LiteLLM for unified model access.\n\nKey Uses\n- Bash commands:\n  - cd llm-proxy\n  - docker-compose --profile self-hosted-db up  # With local database\n  - docker-compose --profile managed-db up      # With external database\n- Core files:\n  - `docker-compose.yml` for service deployment\n  - `litellm-config.yaml` for model configuration\n  - `.keys/` directory for API key files (gitignored)\n- Configuration guidelines:\n  - Set API keys for each model provider via environment variables\n  - Configure `LITELLM_MASTER_KEY` for proxy authentication\n  - Set database and Redis URLs for persistence and caching\n- Testing instructions:\n  - Health check: `curl http://localhost:4000/health`\n  - Model list: `curl http://localhost:4000/models`\n  - Chat completion: `curl -X POST http://localhost:4000/chat/completions`\n- Repository etiquette:\n  - Don't commit API keys or secrets to version control\n  - Store keys in `.keys/` directory or environment variables\n- Developer environment:\n  - Requires Docker and Docker Compose\n  - Optional: PostgreSQL and Redis services\n- Unexpected behaviors:\n  - Model routing uses simple-shuffle strategy\n  - Caching enabled by default with Redis backend\n\n# LLM Proxy Service\n\n## Overview\nThe LLM proxy service provides unified access to multiple Large Language Model providers through a single OpenAI-compatible API using LiteLLM. It handles model routing, caching, rate limiting, and request/response transformation.\n\n## Architecture\n- **Proxy Engine**: LiteLLM with OpenAI-compatible API\n- **Model Router**: Load balancing across multiple providers\n- **Caching Layer**: Redis-based response caching\n- **Database**: PostgreSQL for logging and analytics\n- **Workers**: Multi-worker deployment for performance\n\n## Key Components\n\n### LiteLLM Configuration\n- **Model List**: Centralized model definitions and routing\n- **Router Settings**: Load balancing and fallback strategies\n- **Cache Settings**: Redis configuration for response caching\n- **General Settings**: Authentication and database configuration\n\n### Supported Providers\n1. **OpenAI**: GPT-4, GPT-4 Turbo, GPT-4o, o1, o3 models\n2. **Anthropic**: Claude 3.5 Sonnet, Claude 3 Opus/Sonnet/Haiku\n3. **Google**: Gemini 1.5 Pro, Gemini 2.0 Flash, Gemini 2.5 Pro Preview\n4. **Groq**: Llama 3.1 70B/8B models\n5. **OpenRouter**: Mistral, Qwen, DeepSeek, Meta Llama models\n6. **Cerebras**: Llama 3.1/3.3/4 Scout models\n7. **Voyage**: Embedding models\n8. **Local Models**: Text embeddings inference service\n\n### Model Categories\n- **Paid Models**: Premium models requiring API keys and billing\n- **Free Models**: Models with free tiers or no cost\n- **Embedding Models**: Text embedding and vector generation\n\n## Environment Variables\n- `LITELLM_MASTER_KEY`: Master authentication key for the proxy\n- `DATABASE_URL`: PostgreSQL connection string for logging\n- `REDIS_URL`: Redis connection string for caching\n- **Provider API Keys**:\n  - `OPENAI_API_KEY`\n  - `ANTHROPIC_API_KEY`\n  - `GEMINI_API_KEY`\n  - `GROQ_API_KEY`\n  - `OPENROUTER_API_KEY`\n  - `VOYAGE_API_KEY`\n  - `CEREBRAS_API_KEY`\n  - And others for additional providers\n\n## Deployment Profiles\n1. **Self-hosted DB**: Complete local deployment with PostgreSQL and Redis\n2. **Managed DB**: Use external database and Redis services\n3. **Development**: File watching for configuration hot reload\n\n## API Features\n- **OpenAI Compatibility**: Drop-in replacement for OpenAI API\n- **Model Routing**: Automatic selection and load balancing\n- **Response Caching**: Redis-based caching with configurable TTL\n- **Request Logging**: Comprehensive logging to database\n- **Error Handling**: Automatic retries and fallback routing\n- **Rate Limiting**: Per-user and per-model rate limits\n\n### Router Configuration\n- **Strategy**: Simple shuffle for load distribution\n- **Retries**: 3 attempts with exponential backoff\n- **Fallback**: Automatic failover to alternative models\n- **Health Checks**: Model availability monitoring\n\n### Caching System\n- **Backend**: Redis with namespace separation\n- **Key Strategy**: Request content and parameters\n- **TTL**: Configurable cache expiration\n- **Namespace**: `litellm_caching` for organization\n\n## Performance Features\n- **Multi-worker**: 8 workers for concurrent request handling\n- **Connection Pooling**: Database and Redis connection reuse\n- **Async Processing**: Non-blocking request handling\n- **Resource Limits**: Memory and CPU constraints\n\n## Monitoring & Observability\n- Health check endpoints for service monitoring\n- Request/response logging to PostgreSQL\n- Performance metrics and analytics\n- Model usage tracking and billing\n- Error rates and latency monitoring\n\n## Integration Points\n- **Agents API**: Primary consumer for model requests\n- **Chat Service**: Real-time conversation handling\n- **Task Execution**: Model calls during workflow steps\n- **Embedding Service**: Vector generation for document search\n\n## Security Features\n- Master key authentication for API access\n- Per-user API key management\n- Request validation and sanitization\n- Rate limiting and abuse prevention\n- Audit logging for compliance\n\n## Development Tools\n- Configuration hot reload during development\n- Debug logging for troubleshooting\n- Model testing endpoints\n- Performance profiling capabilities"
  },
  {
    "path": "src/llm-proxy/docker-compose.yml",
    "content": "name: julep-llm-proxy\r\n\r\nx--litellm-base: &litellm-base\r\n  image: ghcr.io/berriai/litellm-database:main-v1.74.9-stable\r\n  restart: unless-stopped\r\n  hostname: litellm\r\n  ports:\r\n    - 4000:4000\r\n  volumes:\r\n    - ./litellm-config.yaml:/app/config.yaml\r\n    - .keys:/app/.keys:ro\r\n  environment:\r\n    - LITELLM_MASTER_KEY=${LITELLM_MASTER_KEY}\r\n    - DATABASE_URL=${LITELLM_DATABASE_URL:-postgresql://${LITELLM_POSTGRES_USER:-llmproxy}:${LITELLM_POSTGRES_PASSWORD}@${LITELLM_POSTGRES_HOST:-litellm-db}:${LITELLM_POSTGRES_PORT:-5432}/${LITELLM_POSTGRES_DB:-litellm}?sslmode=${LITELLM_POSTGRES_SSLMODE:-prefer_ssl}}\r\n    - REDIS_URL=${LITELLM_REDIS_URL:-${LITELLM_REDIS_PROTOCOL:-redis}://${LITELLM_REDIS_USER:-default}:${LITELLM_REDIS_PASSWORD:-${LITELLM_REDIS_PASSWORD}}@${LITELLM_REDIS_HOST:-litellm-redis}:${LITELLM_REDIS_PORT:-6379}}\r\n    - GEMINI_API_KEY=${GEMINI_API_KEY}\r\n    - OPENAI_API_KEY=${OPENAI_API_KEY}\r\n    - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}\r\n    - OPENROUTER_API_KEY=${OPENROUTER_API_KEY}\r\n    - BEDROCK_API_KEY=${BEDROCK_API_KEY}\r\n    - GROQ_API_KEY=${GROQ_API_KEY}\r\n    - VOYAGE_API_KEY=${VOYAGE_API_KEY}\r\n    - CEREBRAS_API_KEY=${CEREBRAS_API_KEY}\r\n    - CLOUDFLARE_API_KEY=${CLOUDFLARE_API_KEY:-}\r\n    - CLOUDFLARE_ACCOUNT_ID=${CLOUDFLARE_ACCOUNT_ID:-}\r\n    - NVIDIA_NIM_API_KEY=${NVIDIA_NIM_API_KEY:-}\r\n    - GITHUB_API_KEY=${GITHUB_API_KEY:-}\r\n    - GOOGLE_APPLICATION_CREDENTIALS=${GOOGLE_APPLICATION_CREDENTIALS:-}\r\n    - AWS_REGION_NAME=${AWS_REGION_NAME:-us-east-1}\r\n\r\n  command:\r\n    [\r\n      \"--config\",\r\n      \"/app/config.yaml\",\r\n      \"--port\",\r\n      \"4000\",\r\n      \"--num_workers\",\r\n      \"8\",\r\n      \"--telemetry\",\r\n      \"False\"\r\n    ]\r\n\r\n  develop:\r\n    watch:\r\n      - action: sync+restart\r\n        path: ./litellm-config.yaml\r\n        target: /app/config.yaml\r\n\r\n\r\nservices:\r\n  litellm-managed:\r\n    <<: *litellm-base\r\n    profiles:\r\n      - managed-db\r\n\r\n  litellm:\r\n    <<: *litellm-base\r\n    profiles:\r\n      - self-hosted-db\r\n    platform: linux/amd64\r\n\r\n    depends_on:\r\n      - litellm-db\r\n      - litellm-redis\r\n\r\n  litellm-db:\r\n    image: postgres:16\r\n    restart: unless-stopped\r\n    volumes:\r\n      - litellm-db-data:/var/lib/postgresql/data\r\n    profiles:\r\n      - self-hosted-db\r\n    environment:\r\n      - POSTGRES_DB=${LITELLM_POSTGRES_DB:-litellm}\r\n      - POSTGRES_USER=${LITELLM_POSTGRES_USER:-llmproxy}\r\n      - POSTGRES_PASSWORD=${LITELLM_POSTGRES_PASSWORD}\r\n    healthcheck:\r\n      test: [ \"CMD-SHELL\", \"pg_isready -d ${LITELLM_POSTGRES_DB:-litellm} -U ${LITELLM_POSTGRES_USER:-llmproxy}\" ]\r\n\r\n      interval: 1s\r\n      timeout: 5s\r\n      retries: 10\r\n\r\n  litellm-redis:\r\n    image: redis/redis-stack-server\r\n    restart: unless-stopped\r\n    profiles:\r\n      - self-hosted-db\r\n    environment:\r\n      REDIS_ARGS: --requirepass ${LITELLM_REDIS_PASSWORD}\r\n    volumes:\r\n      - litellm-redis-data:/data\r\n\r\nvolumes:\r\n  litellm-db-data:\r\n  litellm-redis-data:\r\n"
  },
  {
    "path": "src/llm-proxy/litellm-config.yaml",
    "content": "environment_variables:\n  NO_DOCS: \"true\"\n\nmodel_list:\n# -*= Paid models =*-\n# -------------------\n\n# Gemini models\n\n- model_name: gemini-1.5-pro\n  litellm_params:\n    model: gemini/gemini-1.5-pro\n    api_key: os.environ/GEMINI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: gemini-1.5-pro-latest\n  litellm_params:\n    model: gemini/gemini-1.5-pro-latest\n    api_key: os.environ/GEMINI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: gemini-2.0-flash\n  litellm_params:\n    model: gemini/gemini-2.0-flash\n    api_key: os.environ/GEMINI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: gemini-2.5-pro-preview-03-25\n  litellm_params:\n    model: gemini/gemini-2.5-pro-preview-03-25\n    api_key: os.environ/GEMINI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: gemini-2.5-pro-preview-06-05\n  litellm_params:\n    model: gemini/gemini-2.5-pro-preview-06-05\n    api_key: os.environ/GEMINI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: gemini-2.5-pro\n  litellm_params:\n    model: gemini/gemini-2.5-pro\n    api_key: os.environ/GEMINI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: gemini-2.5-flash\n  litellm_params:\n    model: gemini/gemini-2.5-flash\n    api_key: os.environ/GEMINI_API_KEY\n    tags: [\"paid\"]\n\n# OpenAI models\n- model_name: \"gpt-4-turbo\"\n  litellm_params:\n    model: \"openai/gpt-4-turbo\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-4o\"\n  litellm_params:\n    model: \"openai/gpt-4o\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: o1-mini\n  litellm_params:\n    model: openai/o1-mini\n    api_key: os.environ/OPENAI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: o1-preview\n  litellm_params:\n    model: openai/o1-preview\n    api_key: os.environ/OPENAI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: o1\n  litellm_params:\n    model: openai/o1\n    api_key: os.environ/OPENAI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: o3-mini\n  litellm_params:\n    model: openai/o3-mini\n    api_key: os.environ/OPENAI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"gpt-4.1\"\n  litellm_params:\n    model: \"openai/gpt-4.1\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-4.1-mini\"\n  litellm_params:\n    model: \"openai/gpt-4.1-mini\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-4.1-nano\"\n  litellm_params:\n    model: \"openai/gpt-4.1-nano\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"o4-mini\"\n  litellm_params:\n    model: \"openai/o4-mini\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n# GPT-5 models\n- model_name: \"gpt-5\"\n  litellm_params:\n    model: \"openai/gpt-5\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-5-mini\"\n  litellm_params:\n    model: \"openai/gpt-5-mini\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-5-nano\"\n  litellm_params:\n    model: \"openai/gpt-5-nano\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-5-chat\"\n  litellm_params:\n    model: \"openai/gpt-5-chat\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-5-chat-latest\"\n  litellm_params:\n    model: \"openai/gpt-5-chat-latest\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-5-2025-08-07\"\n  litellm_params:\n    model: \"openai/gpt-5-2025-08-07\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-5-mini-2025-08-07\"\n  litellm_params:\n    model: \"openai/gpt-5-mini-2025-08-07\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n- model_name: \"gpt-5-nano-2025-08-07\"\n  litellm_params:\n    model: \"openai/gpt-5-nano-2025-08-07\"\n    tags: [\"paid\"]\n    api_key: os.environ/OPENAI_API_KEY\n\n# TODO: uncomment after integrating litellm.image_generation\n# - model_name: \"gpt-image-1\"\n#   litellm_params:\n#     model: \"openai/gpt-image-1\"\n#     tags: [\"paid\"]\n#     api_key: os.environ/OPENAI_API_KEY\n\n# Anthropic models\n- model_name: \"claude-3.5-sonnet-20240620\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-3-5-sonnet-20240620-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-3.5-sonnet\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-3-5-sonnet-20241022-v2:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-3.5-sonnet-20241022\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-3-5-sonnet-20241022-v2:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n# - model_name: \"claude-3-opus\" # Model unavailable\n#   litellm_params:\n#     model: \"bedrock/us.anthropic.claude-3-opus-20240229-v1:0\"\n#     tags: [\"paid\"]\n#     api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-3-sonnet\" # Litellm/Anthropic removed support for this model\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-3-sonnet-20240229-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-3-haiku\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-3-haiku-20240307-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-3.5-haiku\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-3-5-haiku-20241022-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-3.7-sonnet\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-3-7-sonnet-20250219-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-sonnet-4\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-sonnet-4-20250514-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-opus-4\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-opus-4-20250514-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-opus-4-1\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-opus-4-1-20250805-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-sonnet-4-5\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-sonnet-4-5-20250929-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n- model_name: \"claude-haiku-4-5\"\n  litellm_params:\n    model: \"bedrock/us.anthropic.claude-haiku-4-5-20251001-v1:0\"\n    tags: [\"paid\"]\n    api_key: os.environ/BEDROCK_API_KEY\n\n# Groq models\n# - model_name: \"llama-3.1-70b\" # `llama-3.1-70b-versatile` has been decommissioned and is no longer supported\n#   litellm_params:\n#     model: \"groq/llama-3.1-70b-versatile\"\n#     tags: [\"paid\"]\n#     api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"llama-3.1-8b\"\n  litellm_params:\n    model: \"groq/llama-3.1-8b-instant\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"meta-llama/Llama-Guard-4-12B\"\n  litellm_params:\n    model: \"groq/meta-llama/Llama-Guard-4-12B\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"gemma2-9b-it\"\n  litellm_params:\n    model: \"groq/gemma2-9b-it\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"llama-3.1-8b-instant\"\n  litellm_params:\n    model: \"groq/llama-3.1-8b-instant\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"llama-3.3-70b-versatile\"\n  litellm_params:\n    model: \"groq/llama-3.3-70b-versatile\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"deepseek-r1-distill-llama-70b\"\n  litellm_params:\n    model: \"groq/deepseek-r1-distill-llama-70b\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"meta-llama/llama-4-maverick-17b-128e-instruct\"\n  litellm_params:\n    model: \"groq/meta-llama/llama-4-maverick-17b-128e-instruct\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"meta-llama/llama-4-scout-17b-16e-instruct\"\n  litellm_params:\n    model: \"groq/meta-llama/llama-4-scout-17b-16e-instruct\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n# - model_name: \"mistral-saba-24b\" # Discontinued\n#   litellm_params:\n#     model: \"groq/mistral-saba-24b\"\n#     tags: [\"paid\"]\n#     api_key: os.environ/GROQ_API_KEY\n\n# - model_name: \"qwen-qwq-32b\" # Discontinued\n#   litellm_params:\n#     model: \"groq/qwen-qwq-32b\"\n#     tags: [\"paid\"]\n#     api_key: os.environ/GROQ_API_KEY\n\n- model_name: \"qwen/qwen3-32b\"\n  litellm_params:\n    model: \"groq/qwen/qwen3-32b\"\n    tags: [\"paid\"]\n    api_key: os.environ/GROQ_API_KEY\n\n# OpenRouter models\n- model_name: \"mistral-large-2411\"\n  litellm_params:\n    model: \"openrouter/mistralai/mistral-large-2411\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n  \n- model_name: \"qwen-2.5-72b-instruct\"\n  litellm_params:\n    model: \"openrouter/qwen/qwen-2.5-72b-instruct\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n \n- model_name: \"eva-llama-3.33-70b\"\n  litellm_params:\n    model: \"openrouter/eva-unit-01/eva-llama-3.33-70b\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n  \n- model_name: \"l3.1-euryale-70b\"\n  litellm_params:\n    model: \"openrouter/sao10k/l3.1-euryale-70b\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"l3.3-euryale-70b\"\n  litellm_params:\n    model: \"openrouter/sao10k/l3.3-euryale-70b\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"magnum-v4-72b\"\n  litellm_params:\n    model: \"openrouter/anthracite-org/magnum-v4-72b\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"eva-qwen-2.5-72b\"\n  litellm_params:\n    model: \"openrouter/eva-unit-01/eva-qwen-2.5-72b\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"hermes-3-llama-3.1-70b\"\n  litellm_params:\n    model: \"openrouter/nousresearch/hermes-3-llama-3.1-70b\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"deepseek-chat\"\n  litellm_params:\n    model: \"openrouter/deepseek/deepseek-chat\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"openrouter/meta-llama/llama-4-scout\"\n  litellm_params:\n    model: \"openrouter/meta-llama/llama-4-scout\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"openrouter/meta-llama/llama-4-scout:free\"\n  litellm_params:\n    model: \"openrouter/meta-llama/llama-4-scout:free\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"free\"]\n\n- model_name: \"openrouter/meta-llama/llama-4-maverick\"\n  litellm_params:\n    model: \"openrouter/meta-llama/llama-4-maverick\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"openrouter/meta-llama/llama-4-maverick:free\"\n  litellm_params:\n    model: \"openrouter/meta-llama/llama-4-maverick:free\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"free\"]\n\n- model_name: \"amazon/nova-lite-v1\"\n  litellm_params:\n    model: \"openrouter/amazon/nova-lite-v1\"\n    api_key: os.environ/AMAZON_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"amazon/nova-micro-v1\"\n  litellm_params:\n    model: \"openrouter/amazon/nova-micro-v1\"\n    api_key: os.environ/AMAZON_API_KEY\n    tags: [\"paid\"]\n    \n- model_name: \"amazon/nova-pro-v1\"\n  litellm_params:\n    model: \"openrouter/amazon/nova-pro-v1\"\n    api_key: os.environ/AMAZON_API_KEY\n    tags: [\"paid\"]\n    \n- model_name: \"perplexity/sonar-deep-research\"\n  litellm_params:\n    model: \"openrouter/perplexity/sonar-deep-research\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"perplexity/sonar\"\n  litellm_params:\n    model: \"openrouter/perplexity/sonar\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"perplexity/sonar-pro\"\n  litellm_params:\n    model: \"openrouter/perplexity/sonar-pro\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"perplexity/sonar-reasoning-pro\"\n  litellm_params:\n    model: \"openrouter/perplexity/sonar-reasoning-pro\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"perplexity/sonar-reasoning\"\n  litellm_params:\n    model: \"openrouter/perplexity/sonar-reasoning\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n# Cerebras Models (OpenRouter)\n- model_name: \"meta-llama/llama-3.1-8b-instruct\"\n  litellm_params:\n    model: \"openrouter/meta-llama/llama-3.1-8b-instruct\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"meta-llama/llama-3.3-70b-instruct\"\n  litellm_params:\n    model: \"openrouter/meta-llama/llama-3.3-70b-instruct\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n  \n- model_name: \"meta-llama/llama-4-scout\"\n  litellm_params:\n    model: \"openrouter/meta-llama/llama-4-scout\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"deepseek/deepseek-r1-distill-llama-70b\"\n  litellm_params:\n    model: \"openrouter/deepseek/deepseek-r1-distill-llama-70b\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n- model_name: \"deepseek/deepseek-r1-distill-qwen-32b\"\n  litellm_params:\n    model: \"openrouter/deepseek/deepseek-r1-distill-qwen-32b\"\n    api_key: os.environ/OPENROUTER_API_KEY\n    tags: [\"paid\"]\n\n# -*= Embedding models =*-\n# ------------------------\n\n- model_name: text-embedding-3-large\n  litellm_params:\n    model: \"openai/text-embedding-3-large\"\n    api_key: os.environ/OPENAI_API_KEY\n    tags: [\"paid\"]\n\n- model_name: voyage-multilingual-2\n  litellm_params:\n    model: \"voyage/voyage-multilingual-2\"\n    api_key: os.environ/VOYAGE_API_KEY\n    tags: [\"paid\"]\n\n- model_name: voyage-3\n  litellm_params:\n    model: \"voyage/voyage-3\"\n    api_key: os.environ/VOYAGE_API_KEY\n    tags: [\"paid\"]\n\n- model_name: Alibaba-NLP/gte-large-en-v1.5\n  litellm_params:\n    model: openai/Alibaba-NLP/gte-large-en-v1.5\n    api_base: http://text-embeddings-inference\n    tags: [\"free\"]\n\n- model_name: BAAI/bge-m3\n  litellm_params:\n    model: openai/BAAI/bge-m3\n    api_base: http://text-embeddings-inference\n    tags: [\"free\"]\n\n- model_name: vertex_ai/text-embedding-004\n  litellm_params:\n    model: vertex_ai/text-embedding-004\n    # vertex_project: os.environ/GOOGLE_PROJECT_ID\n    # vertex_location: os.environ/VERTEX_LOCATION\n\n\n# -*= Free models =*-\n# -------------------\n\n- model_name: gpt-4o-mini\n  litellm_params:\n    model: openai/gpt-4o-mini\n    api_key: os.environ/OPENAI_API_KEY\n    tags: [\"free\"]\n\n\n# https://github.com/BerriAI/litellm/blob/main/litellm/__init__.py\nlitellm_settings:\n  num_retries: 3\n  request_timeout: 180\n  allowed_fails: 3\n  cooldown_time: 30\n  drop_params: true\n  modify_params: true\n  telemetry: false\n  retry: true\n  add_function_to_prompt: true\n\n  set_verbose: false\n  cache: true\n  cache_params:        # set cache params for redis\n    type: redis\n    namespace: \"litellm_caching\"\n    host: os.environ/LITELLM_REDIS_HOST\n    port: os.environ/LITELLM_REDIS_PORT\n    password: os.environ/LITELLM_REDIS_PASSWORD\n\nrouter_settings:\n  routing_strategy: simple-shuffle\n  num_retries: 3\n\ngeneral_settings:\n  master_key: os.environ/LITELLM_MASTER_KEY\n  database_url: os.environ/LITELLM_DATABASE_URL\n  enforce_user_param: true"
  },
  {
    "path": "src/memory-store/.gitignore",
    "content": "tmp/\n\n*.pyc"
  },
  {
    "path": "src/memory-store/AGENTS.md",
    "content": "# AGENTS.md - memory-store\n\nThis directory contains PostgreSQL and TimescaleDB schema definitions and migrations for the `memory-store` service.\n\nKey Uses\n- Bash commands:\n  - cd memory-store\n  - poe check\n- Core directories:\n  - `migrations/` for database schema changes.\n- Code style guidelines:\n  - SQL formatted to 96 chars per line.\n  - Follow naming conventions for hypertables.\n- Testing instructions:\n  - Run `poe test` if tests exist.\n  - Validate SQL with `poe check`.\n- Repository etiquette:\n  - Increment migration version per change.\n- Developer environment:\n  - Configure `DATABASE_URL` in `.env`.\n- Unexpected behaviors:\n  - TimescaleDB hypertable creation nuances.\n\n# Memory Store\n\n## Overview\nMemory-store is Julep's PostgreSQL-based persistent storage layer for agents, sessions, tasks, and related data. It uses TimescaleDB with advanced vector search capabilities for document storage and retrieval.\n\n## Architecture\n- **Database**: TimescaleDB (PostgreSQL extension) with vector search capabilities\n- **Vector Search**: Uses pgvector, vectorscale and OpenAI embeddings for semantic search\n- **Migrations**: Uses golang-migrate for schema management\n- **Hypertables**: Time-series optimized tables for transitions and execution data\n\n## Key Components\n\n### Core Data Models\n- `developers`: Root entity for multi-tenancy\n- `projects`: Organizational units for grouping related resources\n- `users`: End-users who interact with agents\n- `agents`: AI agent configurations with model settings and instructions\n- `tools`: Functionality exposed to agents (API integrations, etc.)\n- `tasks`: Workflow definitions for agent execution\n- `workflows`: Step-by-step execution plans for tasks\n- `sessions`: Conversation contexts for users and agents\n- `executions`: Task execution instances\n- `transitions`: State transitions in workflow execution (hypertable)\n- `files`: Stored files for agent consumption\n- `docs`: Knowledge base documents for agents with vector embeddings\n\n### Search Capabilities\n- **Vector Search**: Semantic similarity using OpenAI embeddings (1024 dimensions)\n- **Text Search**: Full-text search with tsquery and trigram matching\n- **Hybrid Search**: Combined vector and text search with configurable weights\n- **Multiple Languages**: Support for various languages with specialized text configurations\n\n### Schema Design Patterns\n1. **Timescale Hypertables**: Time-partitioned tables for high-volume data\n2. **Compound Keys**: (developer_id, entity_id) pattern for multi-tenancy\n3. **JSON Metadata**: Flexible metadata fields as JSONB type\n4. **Triggers**: Automatic timestamp and validation management\n5. **Domain Validation**: Constraints and triggers enforce data integrity\n6. **Deferred Constraints**: Handles circular references between tools and tasks\n\n## Search Implementation\n- **Text-based**: Uses tsvector/tsquery with custom language configurations and unaccent\n- **Vector-based**: Uses pgvector with DiskANN indexing for ANN (Approximate Nearest Neighbor) search\n- **Hybrid Search**: Distribution-Based Score Fusion (DBSF) for combining text and vector scores\n- **Document Processing**: Recursive chunking with smart separators to handle large documents\n\n## Optimization Features\n- **GIN Indexes**: For JSONB metadata and full-text search\n- **Trigram Indexes**: For fuzzy text matching\n- **Compression**: For large text fields and hypertables\n- **Partitioning**: Time-based and hash-based for transitions table\n- **Continuous Views**: For derived data like execution status\n\n## Technical Details\n1. **Connection String**: `postgres://postgres:PASSWORD@0.0.0.0:5432/postgres?sslmode=disable`\n2. **Text Processing**: Uses unaccent, pg_trgm, and language-specific dictionaries\n3. **Vectorization**: Uses TimescaleDB's pgai vectorizer-worker service\n4. **Migration Path**: Sequential migrations for incremental schema updates\n5. **State Machine**: Strict transition validation with defined state flows\n\n## Docker Components\n- `memory-store`: TimescaleDB container with vector extensions\n- `vectorizer-worker`: Processes document embedding generation\n- `migration`: Applies DB schema migrations\n\n## Migration Patterns\n- Migration numbers (000001 to 000032+) represent sequential schema evolution\n- Each migration has reversible up/down scripts for safe deployments\n- Progressive enhancement pattern with feature flags and backward compatibility\n"
  },
  {
    "path": "src/memory-store/Dockerfile.migrations",
    "content": "FROM migrate/migrate:latest\n\n# Copy migrations from local directory\nCOPY migrations/ /migrations/\n\n# Set the working directory\nWORKDIR /\n\n# Default command (can be overridden)\nENTRYPOINT [\"migrate\"]\nCMD [\"-path\", \"/migrations\", \"-database\", \"postgres://postgres:obviously_not_a_safe_password@memory-store:5432/postgres?sslmode=disable\", \"up\"]\n"
  },
  {
    "path": "src/memory-store/README.md",
    "content": "### prototyping flow:\n\n1. Install `migrate` (golang-migrate)\n2. In a separate window, `docker compose up db vectorizer-worker` to start db instances\n3. `cd memory-store` and `migrate -database \"postgres://postgres:postgres@0.0.0.0:5432/postgres?sslmode=disable\" -path  ./migrations up` to apply the migrations\n4. `pip install --user -U pgcli`\n5. `pgcli \"postgres://postgres:postgres@localhost:5432/postgres\"`\n\nFor creating a migration:\n`migrate -database \"postgres://postgres:postgres@0.0.0.0:5432/postgres?sslmode=disable\" -path migrations create -ext sql -seq -dir migrations switch_to_hypercore`\n"
  },
  {
    "path": "src/memory-store/docker-compose.yml",
    "content": "name: pgai\nservices:\n  memory-store:\n    image: timescale/timescaledb-ha:pg17.6-ts2.22.1-all\n\n    environment:\n      - POSTGRES_PASSWORD=${MEMORY_STORE_PASSWORD:-julep_secure_password}\n      - OPENAI_API_KEY=${OPENAI_API_KEY:?OPENAI_API_KEY is required}\n    ports:\n      - \"5432:5432\"\n    volumes:\n      - memory_store_data:/home/postgres/pgdata/data\n\n    # TODO: Fix this to install pgaudit\n    # entrypoint: []\n    # command: >-\n    #   sed -r -i \"s/[#]*\\s*(shared_preload_libraries)\\s*=\\s*'(.*)'/\\1 = 'pgaudit,\\2'/;s/,'/'/\" /home/postgres/pgdata/data/postgresql.conf\n    #   && exec /docker-entrypoint.sh\n\n    healthcheck:\n      test: [\"CMD-SHELL\", \"pg_isready -U postgres || exit 1\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n\n    restart: unless-stopped\n\n  vectorizer-worker:\n    image: timescale/pgai-vectorizer-worker:v0.10.5\n    environment:\n      - PGAI_VECTORIZER_WORKER_DB_URL=postgres://postgres:${MEMORY_STORE_PASSWORD:-julep_secure_password}@memory-store:5432/postgres\n      - OPENAI_API_KEY=${OPENAI_API_KEY:?OPENAI_API_KEY is required}\n    command: [ \"--poll-interval\", \"5s\" ]\n    depends_on:\n      memory-store:\n        condition: service_healthy\n    restart: unless-stopped\n    deploy:\n      resources:\n        limits:\n          memory: 1G\n\n  migration:\n    image: migrate/migrate:latest\n    volumes:\n      - ./migrations:/migrations\n    command: [ \"-path\", \"/migrations\", \"-database\", \"postgres://postgres:${MEMORY_STORE_PASSWORD:-postgres}@memory-store:5432/postgres?sslmode=disable\" , \"up\"]\n\n    restart: \"no\"\n    develop:\n      watch:\n        - path: ./migrations\n          target: ./migrations\n          action: sync+restart\n    depends_on:\n      memory-store:\n        condition: service_healthy\n\nvolumes:\n  memory_store_data:\n    external: true\n"
  },
  {
    "path": "src/memory-store/migrations/000001_initial.down.sql",
    "content": "BEGIN;\n\n-- Drop the update_updated_at_column function\nDROP FUNCTION IF EXISTS update_updated_at_column ();\n\n-- Drop misc extensions\nDROP EXTENSION IF EXISTS \"uuid-ossp\" CASCADE;\n\nDROP EXTENSION IF EXISTS citext CASCADE;\n\nDROP EXTENSION IF EXISTS btree_gist CASCADE;\n\nDROP EXTENSION IF EXISTS btree_gin CASCADE;\n\n-- Drop timescale's pgai extensions\nDROP EXTENSION IF EXISTS ai CASCADE;\n\nDROP EXTENSION IF EXISTS vectorscale CASCADE;\n\nDROP EXTENSION IF EXISTS vector CASCADE;\n\n-- Drop timescaledb extensions\nDROP EXTENSION IF EXISTS timescaledb_toolkit CASCADE;\n\nDROP EXTENSION IF EXISTS timescaledb CASCADE;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000001_initial.up.sql",
    "content": "BEGIN;\n\n-- init timescaledb\nCREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;\n\nCREATE EXTENSION IF NOT EXISTS timescaledb_toolkit CASCADE;\n\n-- add timescale's pgai extension\nCREATE EXTENSION IF NOT EXISTS vector CASCADE;\n\nCREATE EXTENSION IF NOT EXISTS vectorscale CASCADE;\n\nCREATE EXTENSION IF NOT EXISTS ai CASCADE;\n\n-- add misc extensions (for indexing etc)\nCREATE EXTENSION IF NOT EXISTS btree_gin CASCADE;\n\nCREATE EXTENSION IF NOT EXISTS btree_gist CASCADE;\n\nCREATE EXTENSION IF NOT EXISTS citext CASCADE;\n\nCREATE EXTENSION IF NOT EXISTS \"uuid-ossp\" CASCADE;\n\n-- Create function to update the updated_at timestamp\nCREATE\nOR REPLACE FUNCTION update_updated_at_column () RETURNS TRIGGER AS $$\nBEGIN\n    NEW.updated_at = CURRENT_TIMESTAMP;\n    RETURN NEW;\nEND;\n$$ language 'plpgsql';\n\nCOMMENT ON FUNCTION update_updated_at_column () IS 'Trigger function to automatically update updated_at timestamp';\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000002_developers.down.sql",
    "content": "-- Drop the table (this will automatically drop associated indexes and triggers)\nDROP TABLE IF EXISTS developers CASCADE;\n\n-- Note: The update_updated_at_column() function is not dropped as it might be used by other tables\n"
  },
  {
    "path": "src/memory-store/migrations/000002_developers.up.sql",
    "content": "BEGIN;\n\n-- Create developers table\nCREATE TABLE IF NOT EXISTS developers (\n    developer_id UUID NOT NULL,\n    email TEXT NOT NULL CONSTRAINT ct_developers_email_format CHECK (\n        email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$'\n    ),\n    active BOOLEAN NOT NULL DEFAULT TRUE,\n    tags TEXT[] DEFAULT ARRAY[]::TEXT[],\n    settings JSONB NOT NULL,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    CONSTRAINT pk_developers PRIMARY KEY (developer_id),\n    CONSTRAINT uq_developers_email UNIQUE (email),\n    CONSTRAINT ct_settings_is_object CHECK (jsonb_typeof(settings) = 'object')\n);\n\n-- Create sorted index on developer_id (optimized for UUID v7)\nCREATE INDEX IF NOT EXISTS idx_developers_id_sorted ON developers (developer_id DESC) INCLUDE (\n    email,\n    active,\n    tags,\n    settings,\n    created_at,\n    updated_at\n)\nWHERE\n    active = TRUE;\n\n-- Create index on email\nCREATE INDEX IF NOT EXISTS idx_developers_email ON developers (email);\n\n-- Create GIN index for tags array\nCREATE INDEX IF NOT EXISTS idx_developers_tags ON developers USING GIN (tags);\n\n-- Create trigger to automatically update updated_at\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trg_developers_updated_at') THEN\n        CREATE TRIGGER trg_developers_updated_at\n            BEFORE UPDATE ON developers\n            FOR EACH ROW\n            EXECUTE FUNCTION update_updated_at_column();\n    END IF;\nEND\n$$;\n\n-- Add comment to table\nCOMMENT ON TABLE developers IS 'Stores developer information including their settings and tags';\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000003_users.down.sql",
    "content": "BEGIN;\n\n-- Drop trigger first\nDROP TRIGGER IF EXISTS update_users_updated_at ON users;\n\n-- Drop indexes\nDROP INDEX IF EXISTS users_metadata_gin_idx;\n\n-- Drop foreign key constraint\nALTER TABLE IF EXISTS users\nDROP CONSTRAINT IF EXISTS users_developer_id_fkey;\n\n-- Finally drop the table\nDROP TABLE IF EXISTS users;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000003_users.up.sql",
    "content": "BEGIN;\n\n-- Create users table if it doesn't exist\nCREATE TABLE IF NOT EXISTS users (\n    developer_id UUID NOT NULL,\n    user_id UUID NOT NULL,\n    name TEXT NOT NULL,\n    about TEXT,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB NOT NULL DEFAULT '{}'::JSONB,\n    CONSTRAINT pk_users PRIMARY KEY (developer_id, user_id)\n);\n\n-- Create foreign key constraint and index if they don't exist\nDO $$ BEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_constraint WHERE conname = 'users_developer_id_fkey'\n    ) THEN\n        ALTER TABLE users\n            ADD CONSTRAINT users_developer_id_fkey\n            FOREIGN KEY (developer_id)\n            REFERENCES developers(developer_id);\n    END IF;\nEND $$;\n\n-- Create a GIN index on the entire metadata column if it doesn't exist\nCREATE INDEX IF NOT EXISTS users_metadata_gin_idx ON users USING GIN (metadata);\n\n-- Create trigger if it doesn't exist\nDO $$ BEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_trigger WHERE tgname = 'update_users_updated_at'\n    ) THEN\n        CREATE TRIGGER update_users_updated_at\n            BEFORE UPDATE ON users\n            FOR EACH ROW\n            EXECUTE FUNCTION update_updated_at_column();\n    END IF;\nEND $$;\n\n-- Add comment to table (comments are idempotent by default)\nCOMMENT ON TABLE users IS 'Stores user information linked to developers';\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000004_agents.down.sql",
    "content": "BEGIN;\n\n-- Drop trigger first\nDROP TRIGGER IF EXISTS trg_agents_updated_at ON agents;\n\n-- Drop indexes\nDROP INDEX IF EXISTS idx_agents_metadata;\n\n-- Drop table (this will automatically drop associated constraints)\nDROP TABLE IF EXISTS agents CASCADE;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000004_agents.up.sql",
    "content": "BEGIN;\n\n-- Create agents table\nCREATE TABLE IF NOT EXISTS agents (\n    developer_id UUID NOT NULL,\n    agent_id UUID NOT NULL,\n    canonical_name citext NOT NULL CONSTRAINT ct_agents_canonical_name_length CHECK (\n        length(canonical_name) >= 1\n        AND length(canonical_name) <= 255\n    ),\n    name TEXT NOT NULL CONSTRAINT ct_agents_name_length CHECK (\n        length(name) >= 1\n        AND length(name) <= 255\n    ),\n    about TEXT CONSTRAINT ct_agents_about_length CHECK (\n        about IS NULL\n        OR length(about) <= 5000\n    ),\n    instructions TEXT[] DEFAULT ARRAY[]::TEXT[],\n    model TEXT NOT NULL,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB NOT NULL DEFAULT '{}'::JSONB,\n    default_settings JSONB NOT NULL DEFAULT '{}'::JSONB,\n    CONSTRAINT pk_agents PRIMARY KEY (developer_id, agent_id),\n    CONSTRAINT uq_agents_canonical_name_unique UNIQUE (developer_id, canonical_name), -- per developer\n    CONSTRAINT ct_agents_canonical_name_valid_identifier CHECK (canonical_name ~ '^[a-zA-Z][a-zA-Z0-9_]*$'),\n    CONSTRAINT ct_agents_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'),\n    CONSTRAINT ct_agents_default_settings_is_object CHECK (jsonb_typeof(default_settings) = 'object')\n);\n\n-- Create foreign key constraint and index on developer_id\nALTER TABLE agents\nDROP CONSTRAINT IF EXISTS fk_agents_developer,\nADD CONSTRAINT fk_agents_developer FOREIGN KEY (developer_id) REFERENCES developers (developer_id);\n\n-- Create a GIN index on the entire metadata column\nCREATE INDEX IF NOT EXISTS idx_agents_metadata ON agents USING GIN (metadata);\n\n-- Create trigger to automatically update updated_at\nCREATE\nOR REPLACE TRIGGER trg_agents_updated_at BEFORE\nUPDATE ON agents FOR EACH ROW\nEXECUTE FUNCTION update_updated_at_column ();\n\n-- Add comment to table\nCOMMENT ON TABLE agents IS 'Stores AI agent configurations and metadata for developers';\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000005_files.down.sql",
    "content": "BEGIN;\n\n-- Drop file_owners table and its dependencies\nDROP TRIGGER IF EXISTS trg_validate_file_owner ON file_owners;\nDROP FUNCTION IF EXISTS validate_file_owner();\nDROP TABLE IF EXISTS file_owners;\n\n-- Drop files table and its dependencies\nDROP TRIGGER IF EXISTS trg_files_updated_at ON files;\nDROP TABLE IF EXISTS files;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000005_files.up.sql",
    "content": "BEGIN;\n\n-- Create files table\nCREATE TABLE IF NOT EXISTS files (\n    developer_id UUID NOT NULL,\n    file_id UUID NOT NULL,\n    name TEXT NOT NULL CONSTRAINT ct_files_name_length CHECK (\n        length(name) >= 1\n        AND length(name) <= 255\n    ),\n    description TEXT DEFAULT NULL CONSTRAINT ct_files_description_length CHECK (\n        description IS NULL\n        OR length(description) <= 1000\n    ),\n    mime_type TEXT DEFAULT NULL CONSTRAINT ct_files_mime_type_length CHECK (\n        mime_type IS NULL\n        OR length(mime_type) <= 127\n    ),\n    size BIGINT NOT NULL CONSTRAINT ct_files_size_positive CHECK (size > 0),\n    hash BYTEA NOT NULL,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    CONSTRAINT pk_files PRIMARY KEY (developer_id, file_id)\n);\n\n-- Create foreign key constraint and index if they don't exist\nDO $$ BEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_files_developer') THEN\n        ALTER TABLE files\n            ADD CONSTRAINT fk_files_developer\n            FOREIGN KEY (developer_id)\n            REFERENCES developers(developer_id);\n    END IF;\nEND $$;\n\n-- Create trigger if it doesn't exist\nDO $$ BEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_trigger WHERE tgname = 'trg_files_updated_at') THEN\n        CREATE TRIGGER trg_files_updated_at\n            BEFORE UPDATE ON files\n            FOR EACH ROW\n            EXECUTE FUNCTION update_updated_at_column();\n    END IF;\nEND $$;\n\n-- Create the file_owners table\nCREATE TABLE IF NOT EXISTS file_owners (\n    developer_id UUID NOT NULL,\n    file_id UUID NOT NULL,\n    owner_type TEXT NOT NULL,  -- 'user' or 'agent'\n    owner_id UUID NOT NULL,\n    CONSTRAINT pk_file_owners PRIMARY KEY (developer_id, file_id),\n    CONSTRAINT fk_file_owners_file FOREIGN KEY (developer_id, file_id) REFERENCES files (developer_id, file_id),\n    CONSTRAINT ct_file_owners_owner_type CHECK (owner_type IN ('user', 'agent'))\n);\n\n-- Create indexes\nCREATE INDEX IF NOT EXISTS idx_file_owners_owner ON file_owners (developer_id, owner_type, owner_id);\n\n-- Create function to validate owner reference\nCREATE OR REPLACE FUNCTION validate_file_owner()\nRETURNS TRIGGER AS $$\nBEGIN\n    IF NEW.owner_type = 'user' THEN\n        IF NOT EXISTS (\n            SELECT 1 FROM users\n            WHERE developer_id = NEW.developer_id AND user_id = NEW.owner_id\n        ) THEN\n            RAISE EXCEPTION 'Invalid user reference';\n        END IF;\n    ELSIF NEW.owner_type = 'agent' THEN\n        IF NOT EXISTS (\n            SELECT 1 FROM agents\n            WHERE developer_id = NEW.developer_id AND agent_id = NEW.owner_id\n        ) THEN\n            RAISE EXCEPTION 'Invalid agent reference';\n        END IF;\n    END IF;\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger for validation\nCREATE TRIGGER trg_validate_file_owner\nBEFORE INSERT OR UPDATE ON file_owners\nFOR EACH ROW\nEXECUTE FUNCTION validate_file_owner();\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000006_docs.down.sql",
    "content": "BEGIN;\n\n-- Drop doc_owners table and its dependencies\nDROP TRIGGER IF EXISTS trg_validate_doc_owner ON doc_owners;\nDROP FUNCTION IF EXISTS validate_doc_owner();\nDROP INDEX IF EXISTS idx_doc_owners_owner;\nDROP TABLE IF EXISTS doc_owners CASCADE;\n\n-- Drop docs table and its dependencies\nDROP TRIGGER IF EXISTS trg_docs_search_tsv ON docs;\nDROP TRIGGER IF EXISTS trg_docs_updated_at ON docs;\nDROP FUNCTION IF EXISTS docs_update_search_tsv();\n\n-- Drop indexes\nDROP INDEX IF EXISTS idx_docs_content_trgm;\nDROP INDEX IF EXISTS idx_docs_title_trgm;\nDROP INDEX IF EXISTS idx_docs_search_tsv;\nDROP INDEX IF EXISTS idx_docs_metadata;\n\n-- Drop docs table\nDROP TABLE IF EXISTS docs CASCADE;\n\n-- Drop language validation function\nDROP FUNCTION IF EXISTS is_valid_language(text);\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000006_docs.up.sql",
    "content": "BEGIN;\n\n-- Create function to validate language (make it OR REPLACE)\nCREATE\nOR REPLACE FUNCTION is_valid_language (lang text) RETURNS boolean AS $$\nBEGIN\n    RETURN EXISTS (\n        SELECT 1 FROM pg_ts_config WHERE cfgname::text = lang\n    );\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create docs table\nCREATE TABLE IF NOT EXISTS docs (\n    developer_id UUID NOT NULL,\n    doc_id UUID NOT NULL,\n    title TEXT NOT NULL,\n    content TEXT NOT NULL,\n    index INTEGER NOT NULL,\n    modality TEXT NOT NULL,\n    embedding_model TEXT NOT NULL,\n    embedding_dimensions INTEGER NOT NULL,\n    language TEXT NOT NULL,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB NOT NULL DEFAULT '{}'::JSONB,\n    CONSTRAINT pk_docs PRIMARY KEY (developer_id, doc_id, index),\n    CONSTRAINT ct_docs_embedding_dimensions_positive CHECK (embedding_dimensions > 0),\n    CONSTRAINT ct_docs_valid_modality CHECK (modality IN ('text', 'image', 'mixed')),\n    CONSTRAINT ct_docs_index_positive CHECK (index >= 0),\n    CONSTRAINT ct_docs_valid_language CHECK (is_valid_language (language)),\n    CONSTRAINT ct_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object')\n);\n\n-- Create foreign key constraint if not exists (using DO block for safety)\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_constraint WHERE conname = 'fk_docs_developer'\n    ) THEN\n        ALTER TABLE docs\n        ADD CONSTRAINT fk_docs_developer\n        FOREIGN KEY (developer_id)\n        REFERENCES developers(developer_id);\n    END IF;\nEND $$;\n\n-- Create trigger if not exists\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_trigger WHERE tgname = 'trg_docs_updated_at'\n    ) THEN\n        CREATE TRIGGER trg_docs_updated_at\n        BEFORE UPDATE ON docs\n        FOR EACH ROW\n        EXECUTE FUNCTION update_updated_at_column();\n    END IF;\nEND $$;\n\n-- Create the doc_owners table\nCREATE TABLE IF NOT EXISTS doc_owners (\n    developer_id UUID NOT NULL,\n    doc_id UUID NOT NULL,\n    owner_type TEXT NOT NULL, -- 'user' or 'agent'\n    owner_id UUID NOT NULL,\n    CONSTRAINT pk_doc_owners PRIMARY KEY (developer_id, doc_id),\n    -- TODO: Ensure that doc exists (this constraint is not working)\n    -- CONSTRAINT fk_doc_owners_doc FOREIGN KEY (developer_id, doc_id) REFERENCES docs (developer_id, doc_id),\n    CONSTRAINT ct_doc_owners_owner_type CHECK (owner_type IN ('user', 'agent'))\n);\n\n-- Create indexes\nCREATE INDEX IF NOT EXISTS idx_doc_owners_owner ON doc_owners (developer_id, owner_type, owner_id);\n\n\n-- Create function to validate owner reference\nCREATE\nOR REPLACE FUNCTION validate_doc_owner () RETURNS TRIGGER AS $$\nBEGIN\n    IF NEW.owner_type = 'user' THEN\n        IF NOT EXISTS (\n            SELECT 1 FROM users\n            WHERE developer_id = NEW.developer_id AND user_id = NEW.owner_id\n        ) THEN\n            RAISE EXCEPTION 'Invalid user reference';\n        END IF;\n    ELSIF NEW.owner_type = 'agent' THEN\n        IF NOT EXISTS (\n            SELECT 1 FROM agents\n            WHERE developer_id = NEW.developer_id AND agent_id = NEW.owner_id\n        ) THEN\n            RAISE EXCEPTION 'Invalid agent reference';\n        END IF;\n    END IF;\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger for validation\nCREATE TRIGGER trg_validate_doc_owner BEFORE INSERT\nOR\nUPDATE ON doc_owners FOR EACH ROW\nEXECUTE FUNCTION validate_doc_owner ();\n\n-- Create indexes if not exists\nCREATE INDEX IF NOT EXISTS idx_docs_metadata ON docs USING GIN (metadata);\n\n-- Enable necessary PostgreSQL extensions\nCREATE EXTENSION IF NOT EXISTS unaccent;\n\nCREATE EXTENSION IF NOT EXISTS pg_trgm;\n\nCREATE EXTENSION IF NOT EXISTS dict_int CASCADE;\n\nCREATE EXTENSION IF NOT EXISTS dict_xsyn CASCADE;\n\nCREATE EXTENSION IF NOT EXISTS fuzzystrmatch CASCADE;\n\n-- Configure text search for all supported languages\nDO $$\nDECLARE\n    lang text;\nBEGIN\n    BEGIN\n        FOR lang IN (SELECT cfgname FROM pg_ts_config WHERE cfgname IN (\n            'arabic', 'danish', 'dutch', 'english', 'finnish', 'french',\n            'german', 'greek', 'hungarian', 'indonesian', 'irish', 'italian',\n            'lithuanian', 'nepali', 'norwegian', 'portuguese', 'romanian',\n            'russian', 'spanish', 'swedish', 'tamil', 'turkish'\n        ))\n        LOOP\n            -- Configure integer dictionary\n            EXECUTE format('ALTER TEXT SEARCH CONFIGURATION %I\n                ALTER MAPPING FOR int, uint WITH intdict', lang);\n\n            -- Configure synonym and stemming\n            EXECUTE format('ALTER TEXT SEARCH CONFIGURATION %I\n                ALTER MAPPING FOR asciihword, hword_asciipart, hword, hword_part, word, asciiword\n                WITH xsyn, %I_stem', lang, lang);\n        END LOOP;\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during altering search configurations: %, %', SQLSTATE, SQLERRM;\n    END;\nEND\n$$;\n\n-- Add the search_tsv column if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM information_schema.columns\n        WHERE table_name = 'docs' AND column_name = 'search_tsv'\n    ) THEN\n        ALTER TABLE docs ADD COLUMN search_tsv tsvector;\n    END IF;\nEND $$;\n\n-- Create function to update tsvector\nCREATE\nOR REPLACE FUNCTION docs_update_search_tsv () RETURNS trigger AS $$\nBEGIN\n    NEW.search_tsv :=\n        setweight(to_tsvector(NEW.language::regconfig, unaccent(coalesce(NEW.title, ''))), 'A') ||\n        setweight(to_tsvector(NEW.language::regconfig, unaccent(coalesce(NEW.content, ''))), 'B');\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger if not exists\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_trigger WHERE tgname = 'trg_docs_search_tsv'\n    ) THEN\n        CREATE TRIGGER trg_docs_search_tsv\n        BEFORE INSERT OR UPDATE OF title, content, language\n        ON docs\n        FOR EACH ROW\n        EXECUTE FUNCTION docs_update_search_tsv();\n    END IF;\nEND $$;\n\n-- Create indexes if not exists\nCREATE INDEX IF NOT EXISTS idx_docs_search_tsv ON docs USING GIN (search_tsv);\n\nCREATE INDEX IF NOT EXISTS idx_docs_title_trgm ON docs USING GIN (title gin_trgm_ops);\n\nCREATE INDEX IF NOT EXISTS idx_docs_content_trgm ON docs USING GIN (content gin_trgm_ops);\n\n-- Update existing rows (if any)\nUPDATE docs\nSET\n    search_tsv = setweight(\n        to_tsvector(\n            language::regconfig,\n            unaccent (coalesce(title, ''))\n        ),\n        'A'\n    ) || setweight(\n        to_tsvector(\n            language::regconfig,\n            unaccent (coalesce(content, ''))\n        ),\n        'B'\n    )\nWHERE\n    search_tsv IS NULL;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000007_ann.down.sql",
    "content": "BEGIN;\n\nDO $$\nDECLARE\n    vectorizer_id INTEGER;\nBEGIN\n    SELECT id INTO vectorizer_id \n    FROM ai.vectorizer \n    WHERE source_table = 'docs';\n\n    -- Drop the vectorizer if it exists\n    IF vectorizer_id IS NOT NULL THEN\n        PERFORM ai.drop_vectorizer(vectorizer_id, drop_all => true);\n    END IF;\nEND $$;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000007_ann.up.sql",
    "content": "/*\n * VECTOR SIMILARITY SEARCH WITH DISKANN (Complexity: 8/10)\n * Uses TimescaleDB's vectorizer to convert text into high-dimensional vectors for semantic search.\n * Implements DiskANN (Disk-based Approximate Nearest Neighbor) for efficient similarity search at scale.\n * Includes smart text chunking to handle large documents while preserving context and semantic meaning.\n */\n\n-- Create vector similarity search index using diskann and timescale vectorizer\nSELECT\n    ai.create_vectorizer (\n        'public.docs'::regclass,\n        name => 'docs_vectorizer',\n        grant_to => ai.grant_to('postgres'),\n        destination => ai.destination_table(\n            target_schema => 'public',\n            target_table => 'docs_embeddings_store',\n            view_name => 'docs_embeddings'\n        ),\n        loading => ai.loading_column('content'),\n        embedding => ai.embedding_openai ('text-embedding-3-large', 1024, 'document'), -- need to parameterize this\n        -- actual chunking is managed by the docs table\n        -- this is to prevent running out of context window\n        chunking => ai.chunking_recursive_character_text_splitter (\n            -- chunk_column => 'content',\n            chunk_size => 30000, -- 30k characters ~= 7.5k tokens\n            chunk_overlap => 600, -- 600 characters ~= 150 tokens\n            separators => ARRAY[ -- tries separators in order\n                -- markdown headers\n                E'\\n#',\n                E'\\n##',\n                E'\\n###',\n                E'\\n---',\n                E'\\n***',\n                -- html tags\n                E'</article>', -- Split on major document sections\n                E'</div>', -- Split on div boundaries\n                E'</section>',\n                E'</p>', -- Split on paragraphs\n                E'<br>', -- Split on line breaks\n                -- other separators\n                E'\\n\\n', -- paragraphs\n                '. ',\n                '? ',\n                '! ',\n                '; ', -- sentences (note space after punctuation)\n                E'\\n', -- line breaks\n                ' ' -- words (last resort)\n            ]\n        ),\n        scheduling => ai.scheduling_timescaledb (),\n        indexing => ai.indexing_diskann (),\n        formatting => ai.formatting_python_template (E'Title: $title\\n\\n$chunk'),\n        processing => ai.processing_default (),\n        enqueue_existing => TRUE\n    );\n"
  },
  {
    "path": "src/memory-store/migrations/000008_tools.down.sql",
    "content": "BEGIN;\n\n-- Drop table and all its dependent objects (indexes, constraints, triggers)\nDROP TABLE IF EXISTS tools CASCADE;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000008_tools.up.sql",
    "content": "BEGIN;\n\n-- Create tools table if it doesn't exist\nCREATE TABLE IF NOT EXISTS tools (\n    developer_id UUID NOT NULL,\n    agent_id UUID NOT NULL,\n    tool_id UUID NOT NULL,\n    task_id UUID DEFAULT NULL,\n    type TEXT NOT NULL CONSTRAINT ct_tools_type_length CHECK (\n        length(type) >= 1\n        AND length(type) <= 255\n    ),\n    name TEXT NOT NULL CONSTRAINT ct_tools_name_length CHECK (\n        length(name) >= 1\n        AND length(name) <= 255\n    ),\n    description TEXT CONSTRAINT ct_tools_description_length CHECK (\n        description IS NULL\n        OR length(description) <= 1000\n    ),\n    spec JSONB NOT NULL,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    CONSTRAINT pk_tools PRIMARY KEY (developer_id, agent_id, tool_id),\n    CONSTRAINT ct_unique_name_per_agent UNIQUE (agent_id, name, task_id),\n    CONSTRAINT ct_spec_is_object CHECK (jsonb_typeof(spec) = 'object')\n);\n\n-- Create sorted index on task_id if it doesn't exist\nCREATE INDEX IF NOT EXISTS idx_tools_task_id_sorted ON tools (task_id DESC)\nWHERE\n    task_id IS NOT NULL;\n\n-- Create foreign key constraint and index if they don't exist\nDO $$ BEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_constraint WHERE conname = 'fk_tools_agent'\n    ) THEN\n        ALTER TABLE tools\n            ADD CONSTRAINT fk_tools_agent\n            FOREIGN KEY (developer_id, agent_id)\n            REFERENCES agents(developer_id, agent_id) ON DELETE CASCADE;\n    END IF;\nEND $$;\n\n-- Drop trigger if exists and recreate\nDROP TRIGGER IF EXISTS trg_tools_updated_at ON tools;\n\nCREATE TRIGGER trg_tools_updated_at BEFORE\nUPDATE ON tools FOR EACH ROW\nEXECUTE FUNCTION update_updated_at_column ();\n\n-- Add comment to table\nCOMMENT ON TABLE tools IS 'Stores tool configurations and specifications for AI agents';\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000009_sessions.down.sql",
    "content": "BEGIN;\n\n-- Drop triggers first\nDROP TRIGGER IF EXISTS trg_validate_participant_before_update ON session_lookup;\n\nDROP TRIGGER IF EXISTS trg_validate_participant_before_insert ON session_lookup;\n\n-- Drop the validation function\nDROP FUNCTION IF EXISTS validate_participant ();\n\n-- Drop session_lookup table and its indexes\nDROP TABLE IF EXISTS session_lookup;\n\n-- Drop sessions table and its indexes\nDROP TRIGGER IF EXISTS trg_sessions_updated_at ON sessions;\n\nDROP INDEX IF EXISTS idx_sessions_metadata;\n\nDROP TABLE IF EXISTS sessions CASCADE;\n\n-- Drop the enum type\nDROP TYPE IF EXISTS participant_type;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000009_sessions.up.sql",
    "content": "BEGIN;\n\n-- Create sessions table if it doesn't exist\nCREATE TABLE IF NOT EXISTS sessions (\n    developer_id UUID NOT NULL,\n    session_id UUID NOT NULL,\n    situation TEXT,\n    system_template TEXT NULL,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB NOT NULL DEFAULT '{}'::JSONB,\n    render_templates BOOLEAN NOT NULL DEFAULT TRUE,\n    token_budget INTEGER,\n    context_overflow TEXT,\n    forward_tool_calls BOOLEAN,\n    recall_options JSONB NOT NULL DEFAULT '{}'::JSONB,\n    CONSTRAINT pk_sessions PRIMARY KEY (developer_id, session_id),\n    CONSTRAINT uq_sessions_session_id UNIQUE (session_id),\n    CONSTRAINT ct_sessions_token_budget_positive CHECK (\n        token_budget IS NULL\n        OR token_budget > 0\n    ),\n    CONSTRAINT ct_sessions_context_overflow_valid CHECK (\n        context_overflow IS NULL\n        OR context_overflow IN ('truncate', 'adaptive')\n    ),\n    CONSTRAINT ct_sessions_system_template_not_empty CHECK (length(trim(system_template)) > 0),\n    CONSTRAINT ct_sessions_situation_not_empty CHECK (\n        situation IS NULL\n        OR length(trim(situation)) > 0\n    ),\n    CONSTRAINT ct_sessions_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'),\n    CONSTRAINT ct_sessions_recall_options_is_object CHECK (jsonb_typeof(recall_options) = 'object')\n);\n\nCREATE INDEX IF NOT EXISTS idx_sessions_metadata ON sessions USING GIN (metadata);\n\n-- Create foreign key if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_constraint WHERE conname = 'fk_sessions_developer'\n    ) THEN\n        ALTER TABLE sessions\n        ADD CONSTRAINT fk_sessions_developer\n        FOREIGN KEY (developer_id)\n        REFERENCES developers(developer_id);\n    END IF;\nEND $$;\n\n-- Create trigger if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_trigger WHERE tgname = 'trg_sessions_updated_at'\n    ) THEN\n        CREATE TRIGGER trg_sessions_updated_at\n        BEFORE UPDATE ON sessions\n        FOR EACH ROW\n        EXECUTE FUNCTION update_updated_at_column();\n    END IF;\nEND $$;\n\n-- Create participant_type enum if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'participant_type') THEN\n        CREATE TYPE participant_type AS ENUM ('user', 'agent');\n    END IF;\nEND $$;\n\n-- Create session_lookup table if it doesn't exist\nCREATE TABLE IF NOT EXISTS session_lookup (\n    developer_id UUID NOT NULL,\n    session_id UUID NOT NULL,\n    participant_type participant_type NOT NULL,\n    participant_id UUID NOT NULL,\n    PRIMARY KEY (\n        developer_id,\n        session_id,\n        participant_type,\n        participant_id\n    ),\n    FOREIGN KEY (developer_id, session_id) REFERENCES sessions (developer_id, session_id) ON DELETE CASCADE\n);\n\nCREATE INDEX IF NOT EXISTS idx_session_lookup_by_participant ON session_lookup (developer_id, participant_type, participant_id);\n\n-- Create or replace the validation function\nCREATE\nOR REPLACE FUNCTION validate_participant () RETURNS trigger AS $$\nBEGIN\n    IF NEW.participant_type = 'user' THEN\n        PERFORM 1 FROM users WHERE developer_id = NEW.developer_id AND user_id = NEW.participant_id;\n        IF NOT FOUND THEN\n            RAISE EXCEPTION 'Invalid participant_id: % for participant_type user', NEW.participant_id;\n        END IF;\n    ELSIF NEW.participant_type = 'agent' THEN\n        PERFORM 1 FROM agents WHERE developer_id = NEW.developer_id AND agent_id = NEW.participant_id;\n        IF NOT FOUND THEN\n            RAISE EXCEPTION 'Invalid participant_id: % for participant_type agent', NEW.participant_id;\n        END IF;\n    ELSE\n        RAISE EXCEPTION 'Unknown participant_type: %', NEW.participant_type;\n    END IF;\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create triggers if they don't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_trigger WHERE tgname = 'trg_validate_participant_before_insert'\n    ) THEN\n        CREATE TRIGGER trg_validate_participant_before_insert\n        BEFORE INSERT ON session_lookup\n        FOR EACH ROW\n        EXECUTE FUNCTION validate_participant();\n    END IF;\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_trigger WHERE tgname = 'trg_validate_participant_before_update'\n    ) THEN\n        CREATE TRIGGER trg_validate_participant_before_update\n        BEFORE UPDATE ON session_lookup\n        FOR EACH ROW\n        EXECUTE FUNCTION validate_participant();\n    END IF;\nEND $$;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000010_tasks.down.sql",
    "content": "BEGIN;\n\n-- Drop the foreign key constraint from tools table if it exists\nDO $$ \nBEGIN\n    IF EXISTS (\n        SELECT\n            1\n        FROM\n            information_schema.table_constraints\n        WHERE\n            constraint_name = 'fk_tools_task_id'\n    ) THEN\n    ALTER TABLE tools\n    DROP CONSTRAINT fk_tools_task_id;\n\n    END IF;\nEND $$;\n\n-- Drop the workflows table first since it depends on tasks\nDROP TABLE IF EXISTS workflows CASCADE;\n\n-- Drop the tasks table and all its dependent objects (CASCADE will handle indexes, triggers, and constraints)\nDROP TABLE IF EXISTS tasks CASCADE;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000010_tasks.up.sql",
    "content": "BEGIN;\n\n/*\n * DEFERRED FOREIGN KEY CONSTRAINTS (Complexity: 6/10)\n * Uses PostgreSQL's deferred constraints to handle complex relationships between tasks and tools tables.\n * Constraints are checked at transaction commit rather than immediately, allowing circular references.\n * This enables more flexible data loading patterns while maintaining referential integrity.\n */\n-- Create tasks table if it doesn't exist\nCREATE TABLE IF NOT EXISTS tasks (\n    developer_id UUID NOT NULL,\n    canonical_name CITEXT NOT NULL CONSTRAINT ct_tasks_canonical_name_length CHECK (\n        length(canonical_name) >= 1\n        AND length(canonical_name) <= 255\n    ),\n    agent_id UUID NOT NULL,\n    task_id UUID NOT NULL,\n    \"version\" INTEGER NOT NULL DEFAULT 1,\n    name TEXT NOT NULL CONSTRAINT ct_tasks_name_length CHECK (\n        length(name) >= 1\n        AND length(name) <= 255\n    ),\n    description TEXT DEFAULT NULL CONSTRAINT ct_tasks_description_length CHECK (\n        description IS NULL\n        OR length(description) <= 1000\n    ),\n    input_schema JSONB NOT NULL,\n    inherit_tools BOOLEAN DEFAULT FALSE,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB DEFAULT '{}'::JSONB,\n    CONSTRAINT pk_tasks PRIMARY KEY (developer_id, task_id, \"version\"),\n    CONSTRAINT uq_tasks_canonical_name_unique UNIQUE (developer_id, canonical_name, \"version\"),\n    CONSTRAINT fk_tasks_agent FOREIGN KEY (developer_id, agent_id) REFERENCES agents (developer_id, agent_id) ON DELETE CASCADE,\n    CONSTRAINT ct_tasks_canonical_name_valid_identifier CHECK (canonical_name ~ '^[a-zA-Z][a-zA-Z0-9_]*$'),\n    CONSTRAINT ct_tasks_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'),\n    CONSTRAINT ct_tasks_input_schema_is_object CHECK (jsonb_typeof(input_schema) = 'object'),\n    CONSTRAINT ct_tasks_version_positive CHECK (\"version\" > 0)\n);\n\n-- Create sorted index on task_id if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_tasks_id_sorted') THEN\n        CREATE INDEX idx_tasks_id_sorted ON tasks (task_id DESC);\n    END IF;\nEND $$;\n\n-- Create index on canonical_name if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_tasks_canonical_name') THEN\n        CREATE INDEX idx_tasks_canonical_name ON tasks (developer_id DESC, canonical_name);\n    END IF;\nEND $$;\n\n-- Create a GIN index on metadata if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_tasks_metadata') THEN\n        CREATE INDEX idx_tasks_metadata ON tasks USING GIN (metadata);\n    END IF;\nEND $$;\n\n-- Create function to validate owner reference\nCREATE OR REPLACE FUNCTION validate_tool_task()\nRETURNS TRIGGER AS $$\nBEGIN\n    IF NEW.task_id IS NOT NULL THEN\n        IF NOT EXISTS (\n            SELECT 1 FROM tasks\n            WHERE developer_id = NEW.developer_id AND task_id = NEW.task_id\n        ) THEN\n            RAISE EXCEPTION 'Invalid task reference';\n        END IF;\n    END IF;\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger for validation\nCREATE TRIGGER trg_validate_tool_task\nBEFORE INSERT OR UPDATE ON tools\nFOR EACH ROW\nEXECUTE FUNCTION validate_tool_task();\n\n-- Create updated_at trigger if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1\n        FROM pg_trigger\n        WHERE tgname = 'trg_tasks_updated_at'\n    ) THEN\n        CREATE TRIGGER trg_tasks_updated_at\n            BEFORE UPDATE ON tasks\n            FOR EACH ROW\n            EXECUTE FUNCTION update_updated_at_column();\n    END IF;\nEND $$;\n\n-- Add comment to table (comments are idempotent by default)\nCOMMENT ON TABLE tasks IS 'Stores tasks associated with AI agents for developers';\n\n-- Create 'workflows' table\nCREATE TABLE IF NOT EXISTS workflows (\n    developer_id UUID NOT NULL,\n    task_id UUID NOT NULL,\n    \"version\" INTEGER NOT NULL,\n    name TEXT NOT NULL CONSTRAINT ct_workflows_name_length CHECK (\n        length(name) >= 1\n        AND length(name) <= 255\n    ),\n    step_idx INTEGER NOT NULL CONSTRAINT ct_workflows_step_idx_positive CHECK (step_idx >= 0),\n    step_type TEXT NOT NULL CONSTRAINT ct_workflows_step_type_length CHECK (\n        length(step_type) >= 1\n        AND length(step_type) <= 255\n    ),\n    step_definition JSONB NOT NULL CONSTRAINT ct_workflows_step_definition_valid CHECK (jsonb_typeof(step_definition) = 'object'),\n    CONSTRAINT pk_workflows PRIMARY KEY (developer_id, task_id, \"version\", name, step_idx),\n    CONSTRAINT fk_workflows_tasks FOREIGN KEY (developer_id, task_id, \"version\") REFERENCES tasks (developer_id, task_id, \"version\") ON DELETE CASCADE\n);\n\n-- Add comment to 'workflows' table\nCOMMENT ON TABLE workflows IS 'Stores normalized workflows for tasks';\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000011_executions.down.sql",
    "content": "BEGIN;\n\nDROP TABLE IF EXISTS executions CASCADE;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000011_executions.up.sql",
    "content": "BEGIN;\n\n-- Create executions table if it doesn't exist\nCREATE TABLE IF NOT EXISTS executions (\n    developer_id UUID NOT NULL,\n    task_id UUID NOT NULL,\n    task_version INTEGER NOT NULL,\n    execution_id UUID NOT NULL,\n    input JSONB NOT NULL,\n    -- NOTE: These will be generated using continuous aggregates from transitions\n    -- status TEXT DEFAULT 'pending',\n    -- output JSONB DEFAULT NULL,\n    -- error TEXT DEFAULT NULL,\n    -- updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB NOT NULL DEFAULT '{}'::JSONB,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    CONSTRAINT pk_executions PRIMARY KEY (execution_id),\n    CONSTRAINT fk_executions_developer FOREIGN KEY (developer_id) REFERENCES developers (developer_id),\n    CONSTRAINT fk_executions_task FOREIGN KEY (developer_id, task_id, task_version) REFERENCES tasks (developer_id, task_id, \"version\"),\n    CONSTRAINT ct_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object')\n);\n\n-- Create index on developer_id\nCREATE INDEX IF NOT EXISTS idx_executions_developer_id ON executions (developer_id);\n\n-- Create index on task_id\nCREATE INDEX IF NOT EXISTS idx_executions_task_id ON executions (task_id, task_version);\n\n-- Create a GIN index on the metadata column\nCREATE INDEX IF NOT EXISTS idx_executions_metadata ON executions USING GIN (metadata);\n\n-- Add comment to table (comments are idempotent by default)\nCOMMENT ON TABLE executions IS 'Stores executions associated with AI agents for developers';\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000012_transitions.down.sql",
    "content": "BEGIN;\n\n-- Drop foreign key constraint if exists\nALTER TABLE IF EXISTS transitions\nDROP CONSTRAINT IF EXISTS fk_transitions_execution;\n\n-- Drop indexes if they exist\nDROP INDEX IF EXISTS idx_transitions_metadata;\n\nDROP INDEX IF EXISTS idx_transitions_label;\n\nDROP INDEX IF EXISTS idx_transitions_next;\n\nDROP INDEX IF EXISTS idx_transitions_current;\n\nDROP INDEX IF EXISTS transitions_created_at_idx;\n\n-- Drop the transitions table (this will also remove it from hypertables)\nDO $$\nBEGIN\n    BEGIN\n        DELETE FROM transitions;\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during deleting all from transitions: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDROP TABLE IF EXISTS transitions;\n\n-- Drop custom types if they exist\nDROP TYPE IF EXISTS transition_cursor;\n\nDROP TYPE IF EXISTS transition_type;\n\n-- Drop the trigger and function for transition validation\nDROP TRIGGER IF EXISTS validate_transition ON transitions;\n\nDROP FUNCTION IF EXISTS check_valid_transition ();\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000012_transitions.up.sql",
    "content": "BEGIN;\n\n/*\n * CUSTOM TYPES AND ENUMS WITH COMPLEX CONSTRAINTS (Complexity: 7/10)\n * Creates custom composite type transition_cursor to track workflow state and enum type for transition states.\n * Uses compound primary key combining timestamps and UUIDs for efficient time-series operations.\n * Implements complex indexing strategy optimized for various query patterns (current state, next state, labels).\n */\n\n-- Create transition type enum if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'transition_type') THEN\n        CREATE TYPE transition_type AS ENUM (\n            'init',\n            'finish',\n            'init_branch',\n            'finish_branch',\n            'wait',\n            'resume',\n            'error',\n            'step',\n            'cancelled'\n        );\n    END IF;\nEND $$;\n\n-- Create transition cursor type if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_type WHERE typname = 'transition_cursor') THEN\n        CREATE TYPE transition_cursor AS (\n            workflow_name TEXT,\n            step_index INT\n        );\n    END IF;\nEND $$;\n\n-- Create transitions table if it doesn't exist\nCREATE TABLE IF NOT EXISTS transitions (\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    execution_id UUID NOT NULL,\n    transition_id UUID NOT NULL,\n    type transition_type NOT NULL,\n    step_label TEXT DEFAULT NULL,\n    current_step transition_cursor NOT NULL,\n    next_step transition_cursor DEFAULT NULL,\n    output JSONB,\n    task_token TEXT DEFAULT NULL,\n    metadata JSONB DEFAULT '{}'::JSONB,\n    CONSTRAINT pk_transitions PRIMARY KEY (created_at, execution_id, transition_id),\n    CONSTRAINT ct_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object')\n);\n\n-- Convert to hypertable if not already\nSELECT\n    create_hypertable (\n        'transitions',\n        by_range ('created_at', INTERVAL '1 day'),\n        if_not_exists => TRUE\n    );\n\nSELECT\n    add_dimension (\n        'transitions',\n        by_hash ('execution_id', 2),\n        if_not_exists => TRUE\n    );\n\n-- Create indexes if they don't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_transitions_metadata') THEN\n        CREATE INDEX idx_transitions_metadata ON transitions USING GIN (metadata);\n    END IF;\n\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_transitions_label') THEN\n        CREATE UNIQUE INDEX idx_transitions_label ON transitions USING btree (execution_id, step_label, created_at DESC)\n        WHERE (step_label IS NOT NULL);\n    END IF;\n\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_transitions_next') THEN\n        CREATE UNIQUE INDEX idx_transitions_next ON transitions USING btree (execution_id, next_step, created_at DESC)\n        WHERE (next_step IS NOT NULL);\n    END IF;\n\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_transitions_current') THEN\n        CREATE UNIQUE INDEX idx_transitions_current ON transitions USING btree (execution_id, current_step, created_at DESC);\n    END IF;\nEND $$;\n\n\n-- Add foreign key constraint if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'fk_transitions_execution') THEN\n        ALTER TABLE transitions\n            ADD CONSTRAINT fk_transitions_execution\n            FOREIGN KEY (execution_id)\n            REFERENCES executions(execution_id)\n            ON DELETE CASCADE;\n    END IF;\nEND $$;\n\n-- Add comment to table\nCOMMENT ON TABLE transitions IS 'Stores transitions associated with AI agents for developers';\n\n-- Create a trigger function that checks for valid transitions\nCREATE\nOR REPLACE FUNCTION check_valid_transition () RETURNS trigger AS $$\nDECLARE\n    previous_type transition_type;\n    valid_next_types transition_type[];\nBEGIN\n    -- Get the latest transition_type for this execution_id\n    SELECT t.type INTO previous_type\n    FROM transitions t\n    WHERE t.execution_id = NEW.execution_id\n    ORDER BY t.created_at DESC\n    LIMIT 1;\n\n    IF previous_type IS NULL THEN\n        -- If there is no previous transition, allow only 'init' or 'init_branch'\n        IF NEW.type NOT IN ('init', 'init_branch', 'error', 'cancelled') THEN\n            RAISE EXCEPTION 'First transition must be init / init_branch / error / cancelled, got %', NEW.type;\n        END IF;\n    ELSE\n        -- Define the valid_next_types array based on previous_type\n        CASE previous_type\n            WHEN 'init' THEN\n                valid_next_types := ARRAY['wait', 'error', 'step', 'cancelled', 'init_branch', 'finish'];\n            WHEN 'init_branch' THEN\n                valid_next_types := ARRAY['wait', 'error', 'step', 'cancelled', 'init_branch', 'finish_branch', 'finish'];\n            WHEN 'wait' THEN\n                valid_next_types := ARRAY['resume', 'step', 'cancelled', 'finish', 'finish_branch'];\n            WHEN 'resume' THEN\n                valid_next_types := ARRAY['wait', 'error', 'cancelled', 'step', 'finish', 'finish_branch', 'init_branch'];\n            WHEN 'step' THEN\n                valid_next_types := ARRAY['wait', 'error', 'cancelled', 'step', 'finish', 'finish_branch', 'init_branch'];\n            WHEN 'finish_branch' THEN\n                valid_next_types := ARRAY['wait', 'error', 'cancelled', 'step', 'finish', 'init_branch', 'finish_branch'];\n            WHEN 'finish' THEN\n                valid_next_types := ARRAY[]::transition_type[];  -- No valid next transitions\n            WHEN 'error' THEN\n                valid_next_types := ARRAY[]::transition_type[];  -- No valid next transitions\n            WHEN 'cancelled' THEN\n                valid_next_types := ARRAY[]::transition_type[];  -- No valid next transitions\n            ELSE\n                RAISE EXCEPTION 'Unknown previous transition type: %', previous_type;\n        END CASE;\n\n        IF NOT NEW.type = ANY(valid_next_types) THEN\n            RAISE EXCEPTION 'Invalid transition from % to %', previous_type, NEW.type;\n        END IF;\n    END IF;\n\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create a trigger on the transitions table\nCREATE OR REPLACE TRIGGER validate_transition BEFORE INSERT ON transitions FOR EACH ROW\nEXECUTE FUNCTION check_valid_transition ();\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000013_executions_continuous_view.down.sql",
    "content": "BEGIN;\n\n-- Drop the continuous aggregate policy\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            remove_continuous_aggregate_policy ('latest_transitions');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during remove_continuous_aggregate_policy(latest_transitions): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\n-- Drop the views\nDROP VIEW IF EXISTS latest_executions;\n\nDROP MATERIALIZED VIEW IF EXISTS latest_transitions;\n\n-- Drop the helper function\nDROP FUNCTION IF EXISTS to_text (transition_type);\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000013_executions_continuous_view.up.sql",
    "content": "BEGIN;\n\n/*\n * CONTINUOUS AGGREGATES WITH STATE AGGREGATION (Complexity: 9/10)\n * This is a TimescaleDB feature that automatically maintains a real-time summary of the transitions table.\n * It uses special aggregation functions like state_agg() to track state changes and last() to get most recent values.\n * The view updates every 10 minutes and can serve both historical and real-time data (materialized_only = FALSE).\n */\n-- create a function to convert transition_type to text (needed coz ::text is stable not immutable)\nCREATE\nOR REPLACE function to_text (transition_type) RETURNS text AS $$\n    select $1\n$$ STRICT IMMUTABLE LANGUAGE sql;\n\n-- create a continuous view that aggregates the transitions table\nCREATE MATERIALIZED VIEW IF NOT EXISTS latest_transitions\nWITH\n    (\n        timescaledb.continuous,\n        timescaledb.materialized_only = FALSE\n    ) AS\nSELECT\n    time_bucket ('1 day', t.created_at) AS bucket,\n    t.execution_id,\n    last (t.transition_id, t.created_at) AS transition_id,\n    count(*) AS total_transitions,\n    state_agg (t.created_at, to_text (t.type)) AS state,\n    max(t.created_at) AS created_at,\n    last (t.type, t.created_at) AS type,\n    last (t.step_label, t.created_at) AS step_label,\n    last (t.current_step, t.created_at) AS current_step,\n    last (t.next_step, t.created_at) AS next_step,\n    last (t.output, t.created_at) AS output,\n    last (t.task_token, t.created_at) AS task_token,\n    last (t.metadata, t.created_at) AS metadata,\n    last (e.task_id, e.created_at) AS task_id,\n    last (e.task_version, e.created_at) AS task_version,\n    last (w.step_definition, e.created_at) AS step_definition\nFROM\n    transitions t\n    JOIN executions e ON t.execution_id = e.execution_id\n    JOIN workflows w ON e.task_id = w.task_id\n    AND e.task_version = w.version\n    AND w.step_idx = (t.current_step).step_index\n    AND w.name = (t.current_step).workflow_name\nGROUP BY\n    bucket,\n    t.execution_id\nWITH\n    no data;\n\nSELECT\n    add_continuous_aggregate_policy (\n        'latest_transitions',\n        start_offset => NULL,\n        end_offset => INTERVAL '10 minutes',\n        schedule_interval => INTERVAL '10 minutes'\n    );\n\n-- Create a view that combines executions with their latest transitions\nCREATE OR REPLACE VIEW latest_executions AS\nSELECT\n    e.developer_id,\n    e.task_id,\n    e.task_version,\n    e.execution_id,\n    e.input,\n    e.metadata,\n    e.created_at,\n    coalesce(lt.created_at, e.created_at) AS updated_at,\n    CASE\n        WHEN lt.type::text IS NULL THEN 'queued'\n        WHEN lt.type::text = 'init' THEN 'starting'\n        WHEN lt.type::text = 'init_branch' THEN 'running'\n        WHEN lt.type::text = 'wait' THEN 'awaiting_input'\n        WHEN lt.type::text = 'resume' THEN 'running'\n        WHEN lt.type::text = 'step' THEN 'running'\n        WHEN lt.type::text = 'finish' THEN 'succeeded'\n        WHEN lt.type::text = 'finish_branch' THEN 'running'\n        WHEN lt.type::text = 'error' THEN 'failed'\n        WHEN lt.type::text = 'cancelled' THEN 'cancelled'\n        ELSE 'queued'\n    END AS status,\n    CASE\n        WHEN lt.type::text = 'error' THEN lt.output ->> 'error'\n        ELSE NULL\n    END AS error,\n    coalesce(lt.total_transitions, 0) AS total_transitions,\n    coalesce(lt.output, '{}'::jsonb) AS output,\n    lt.current_step,\n    lt.next_step,\n    lt.step_definition,\n    lt.step_label,\n    lt.task_token,\n    lt.metadata AS transition_metadata\nFROM\n    executions e\n    LEFT JOIN latest_transitions lt ON e.execution_id = lt.execution_id;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000014_temporal_lookup.down.sql",
    "content": "BEGIN;\n\nDROP TABLE IF EXISTS temporal_executions_lookup CASCADE;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000014_temporal_lookup.up.sql",
    "content": "BEGIN;\n\n-- Create temporal_executions_lookup table\nCREATE TABLE IF NOT EXISTS temporal_executions_lookup (\n    execution_id UUID NOT NULL,\n    id TEXT NOT NULL,\n    run_id TEXT,\n    first_execution_run_id TEXT,\n    result_run_id TEXT,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    CONSTRAINT pk_temporal_executions_lookup PRIMARY KEY (execution_id, id),\n    CONSTRAINT fk_temporal_executions_lookup_execution FOREIGN KEY (execution_id) REFERENCES executions (execution_id) ON DELETE CASCADE\n);\n\n-- Add comment to table\nCOMMENT ON TABLE temporal_executions_lookup IS 'Stores temporal workflow execution lookup data for AI agent executions';\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000015_entries.down.sql",
    "content": "BEGIN;\n\nDROP TRIGGER IF EXISTS trg_optimized_update_token_count_after ON entries;\n\nDROP FUNCTION IF EXISTS optimized_update_token_count_after;\n\n-- Drop foreign key constraint if it exists\nALTER TABLE IF EXISTS entries\nDROP CONSTRAINT IF EXISTS fk_entries_session;\n\n-- Drop indexes\nDROP INDEX IF EXISTS idx_entries_by_session;\n\n-- Drop the hypertable (this will also drop the table)\nDROP TABLE IF EXISTS entries;\n\n-- Drop the function\nDROP FUNCTION IF EXISTS all_jsonb_elements_are_objects;\n\n-- Drop the enum type\nDROP TYPE IF EXISTS chat_role;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000015_entries.up.sql",
    "content": "BEGIN;\n\n-- Create chat_role enum\nCREATE TYPE chat_role AS ENUM(\n    'user',\n    'assistant',\n    'tool',\n    'system',\n    'developer'\n);\n\n-- Create a custom function that checks if `content` is non-empty\n-- and that every JSONB element in the array is an 'object'.\nCREATE\nOR REPLACE FUNCTION all_jsonb_elements_are_objects (content jsonb[]) RETURNS boolean AS $$\nDECLARE\n    elem jsonb;\nBEGIN\n    -- Check each element in the `content` array\n    FOREACH elem IN ARRAY content\n    LOOP\n        IF jsonb_typeof(elem) <> 'object' THEN\n            RETURN false;\n        END IF;\n    END LOOP;\n    \n    RETURN true;\nEND;\n$$ LANGUAGE plpgsql IMMUTABLE;\n\nCREATE TABLE IF NOT EXISTS entries (\n    session_id UUID NOT NULL,\n    entry_id UUID NOT NULL,\n    source TEXT NOT NULL,\n    role chat_role NOT NULL,\n    event_type TEXT NOT NULL DEFAULT 'message.create',\n    name TEXT,\n    content JSONB[] NOT NULL,\n    tool_call_id TEXT DEFAULT NULL,\n    tool_calls JSONB[] DEFAULT NULL,\n    model TEXT NOT NULL,\n    token_count INTEGER DEFAULT NULL,\n    tokenizer TEXT NOT NULL,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    timestamp TIMESTAMPTZ NOT NULL,\n    CONSTRAINT pk_entries PRIMARY KEY (session_id, entry_id, created_at),\n    CONSTRAINT ct_content_is_array_of_objects CHECK (all_jsonb_elements_are_objects (content))\n);\n\n-- Convert to hypertable if not already\nSELECT\n    create_hypertable (\n        'entries',\n        by_range ('created_at', INTERVAL '1 day'),\n        if_not_exists => TRUE\n    );\n\nSELECT\n    add_dimension (\n        'entries',\n        by_hash ('session_id', 2),\n        if_not_exists => TRUE\n    );\n\n-- Create indexes for efficient querying\nCREATE INDEX IF NOT EXISTS idx_entries_by_session ON entries (session_id DESC);\n\n-- Add foreign key constraint to sessions table\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_constraint WHERE conname = 'fk_entries_session'\n    ) THEN\n        ALTER TABLE entries\n        ADD CONSTRAINT fk_entries_session\n        FOREIGN KEY (session_id)\n        REFERENCES sessions(session_id) ON DELETE CASCADE;\n    END IF;\nEND $$;\n\n-- TODO: We should consider using a timescale background job to update the token count\n-- instead of a trigger.\n-- https://docs.timescale.com/use-timescale/latest/user-defined-actions/create-and-register/\nCREATE\nOR REPLACE FUNCTION optimized_update_token_count_after () RETURNS TRIGGER AS $$\nDECLARE\n    calc_token_count INTEGER;\nBEGIN\n    -- Compute token_count outside the UPDATE statement for clarity and potential optimization\n    calc_token_count := cardinality(\n        ai.openai_tokenize(\n            'gpt-4o', -- FIXME: Use `NEW.model`\n            array_to_string(NEW.content::TEXT[], ' ')\n        )\n    );\n\n    -- Perform the update only if token_count differs\n    IF calc_token_count <> NEW.token_count THEN\n        UPDATE entries\n        SET token_count = calc_token_count\n        WHERE entry_id = NEW.entry_id;\n    END IF;\n\n    RETURN NULL;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- FIXME: This trigger is causing the slow performance of the create_entries query\n--\n-- We should consider using a timescale background job to update the token count\n-- instead of a trigger.\n-- https://docs.timescale.com/use-timescale/latest/user-defined-actions/create-and-register/\n--\n-- CREATE TRIGGER trg_optimized_update_token_count_after\n-- AFTER INSERT\n-- OR\n-- UPDATE ON entries FOR EACH ROW\n-- EXECUTE FUNCTION optimized_update_token_count_after ();\n\n-- Add trigger to update parent session's updated_at\nCREATE\nOR REPLACE FUNCTION update_session_updated_at () RETURNS TRIGGER AS $$\nBEGIN\n    UPDATE sessions\n    SET updated_at = CURRENT_TIMESTAMP\n    WHERE session_id = NEW.session_id;\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\nCREATE TRIGGER trg_update_session_updated_at\nAFTER INSERT\nOR\nUPDATE ON entries FOR EACH ROW\nEXECUTE FUNCTION update_session_updated_at ();\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000016_entry_relations.down.sql",
    "content": "BEGIN;\n\n-- Drop trigger first\nDROP TRIGGER IF EXISTS trg_enforce_leaf_nodes ON entry_relations;\n\n-- Drop function\nDROP FUNCTION IF EXISTS enforce_leaf_nodes ();\n\n-- Drop the table and its constraints\nDROP TABLE IF EXISTS entry_relations CASCADE;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000016_entry_relations.up.sql",
    "content": "BEGIN;\n\n-- Create citext extension if not exists\nCREATE EXTENSION IF NOT EXISTS citext;\n\n-- Create entry_relations table\nCREATE TABLE IF NOT EXISTS entry_relations (\n    session_id UUID NOT NULL,\n    head UUID NOT NULL,\n    relation CITEXT NOT NULL,\n    tail UUID NOT NULL,\n    is_leaf BOOLEAN NOT NULL DEFAULT FALSE,\n    CONSTRAINT pk_entry_relations PRIMARY KEY (session_id, head, relation, tail)\n);\n\n-- Add foreign key constraint to sessions table\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_constraint WHERE conname = 'fk_entry_relations_session'\n    ) THEN\n        ALTER TABLE entry_relations\n        ADD CONSTRAINT fk_entry_relations_session\n        FOREIGN KEY (session_id)\n        REFERENCES sessions(session_id) ON DELETE CASCADE;\n    END IF;\nEND $$;\n\n-- Create indexes for efficient querying\nCREATE INDEX idx_entry_relations_leaf ON entry_relations (session_id, is_leaf);\n\nCREATE OR REPLACE FUNCTION auto_update_leaf_status() RETURNS TRIGGER AS $$\nBEGIN\n    -- Set is_leaf = false for any existing rows that will now have this new relation as a child\n    UPDATE entry_relations \n    SET is_leaf = false\n    WHERE session_id = NEW.session_id \n    AND tail = NEW.head;\n\n    -- Set is_leaf for the new row based on whether it has any children\n    NEW.is_leaf := NOT EXISTS (\n        SELECT 1 \n        FROM entry_relations \n        WHERE session_id = NEW.session_id \n        AND head = NEW.tail\n    );\n\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\nCREATE TRIGGER trg_auto_update_leaf_status\nBEFORE INSERT OR UPDATE ON entry_relations\nFOR EACH ROW\nEXECUTE FUNCTION auto_update_leaf_status();\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000017_compression.down.sql",
    "content": "BEGIN;\n\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            remove_compression_policy ('entries');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during remove_compression_policy(entries): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            remove_compression_policy ('transitions');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during remove_compression_policy(transitions): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        ALTER TABLE entries\n        SET\n            (timescaledb.compress = FALSE);\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during unsetting entries.compress: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        ALTER TABLE transitions\n        SET\n            (timescaledb.compress = FALSE);\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during unsetting transitions.compress: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000017_compression.up.sql",
    "content": "/*\n * MULTI-DIMENSIONAL HYPERTABLES WITH COMPRESSION (Complexity: 8/10)\n * TimescaleDB's advanced feature that partitions data by both time (created_at) and space (session_id/execution_id).\n * Automatically compresses data older than 7 days to save storage while maintaining query performance.\n * Uses segment_by to group related rows and order_by to optimize decompression speed.\n */\n\nBEGIN;\n\nDO $$\nBEGIN\n    BEGIN\n        ALTER TABLE entries\n            SET (\n                timescaledb.compress = TRUE,\n                timescaledb.compress_segmentby = 'session_id',\n                timescaledb.compress_orderby = 'created_at DESC, entry_id DESC'\n            );\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during entries.compress: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            add_compression_policy ('entries', INTERVAL '7 days');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during add_compression_policy(entries): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        ALTER TABLE transitions\n        SET\n            (\n                timescaledb.compress = TRUE,\n                timescaledb.compress_segmentby = 'execution_id',\n                timescaledb.compress_orderby = 'created_at DESC, transition_id DESC'\n            );\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during transitions.compress: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            add_compression_policy ('transitions', INTERVAL '7 days');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during add_compression_policy(transitions): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000018_doc_search.down.sql",
    "content": "BEGIN;\n\n-- Drop the embed and search hybrid function\nDROP FUNCTION IF EXISTS embed_and_search_hybrid;\n\n-- Drop the hybrid search function\nDROP FUNCTION IF EXISTS search_hybrid;\n\n-- Drop the text search function\nDROP FUNCTION IF EXISTS search_by_text;\n\n-- Drop the combined embed and search function\nDROP FUNCTION IF EXISTS embed_and_search_by_vector;\n\n-- Drop the search function\nDROP FUNCTION IF EXISTS search_by_vector;\n\n-- Drop the doc_search_result type\nDROP TYPE IF EXISTS doc_search_result;\n\n-- Drop the embed_with_cache function\nDROP FUNCTION IF EXISTS embed_with_cache;\n\n-- Drop the embeddings cache table\nDROP TABLE IF EXISTS embeddings_cache CASCADE;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000018_doc_search.up.sql",
    "content": "BEGIN;\n\n-- Create unlogged table for caching embeddings\nCREATE UNLOGGED TABLE IF NOT EXISTS embeddings_cache (\n    model_input_md5 TEXT NOT NULL,\n    embedding vector (1024) NOT NULL,\n    CONSTRAINT pk_embeddings_cache PRIMARY KEY (model_input_md5)\n);\n\n-- Add comment explaining table purpose\nCOMMENT ON TABLE embeddings_cache IS 'Unlogged table that caches embedding requests to avoid duplicate API calls';\n\nCREATE\nOR REPLACE function embed_with_cache (\n    _provider text,\n    _model text,\n    _input_text text,\n    _input_type text DEFAULT NULL,\n    _api_key text DEFAULT NULL,\n    _api_key_name text DEFAULT NULL\n) returns vector (1024) language plpgsql AS $$\n\n-- Try to get cached embedding first\ndeclare\n    cached_embedding vector(1024);\n    model_input_md5 text;\nbegin\n    if _provider != 'openai' then\n        raise exception 'Only openai provider is supported';\n    end if;\n\n    model_input_md5 := md5(_provider || '++' || _model || '++' || _input_text || '++' || _input_type);\n\n    select embedding into cached_embedding\n    from embeddings_cache c\n    where c.model_input_md5 = model_input_md5;\n\n    if found then\n        return cached_embedding;\n    end if;\n\n    -- Not found in cache, call AI embedding function\n    cached_embedding := ai.openai_embed(\n        _model,\n        _input_text,\n        _input_type,\n        _api_key,\n        _api_key_name\n    );\n\n    -- Cache the result\n    insert into embeddings_cache (\n        model_input_md5,\n        embedding\n    ) values (\n        model_input_md5,\n        cached_embedding\n    ) on conflict (model_input_md5) do update set embedding = cached_embedding;\n\n    return cached_embedding;\nend;\n$$;\n\n-- Create a type for the search results if it doesn't exist\nDO $$\nBEGIN\n    IF NOT EXISTS (\n        SELECT 1 FROM pg_type WHERE typname = 'doc_search_result'\n    ) THEN\n        CREATE TYPE doc_search_result AS (\n            developer_id uuid,\n            doc_id uuid,\n            index integer,\n            title text,\n            content text,\n            distance float,\n            embedding vector(1024),\n            metadata jsonb,\n            owner_type text,\n            owner_id uuid\n        );\n    END IF;\nEND $$;\n\n-- Create the search function\nCREATE\nOR REPLACE FUNCTION search_by_vector (\n    developer_id UUID,\n    query_embedding vector (1024),\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    search_threshold float;\n    owner_filter_sql text;\n    metadata_filter_sql text;\nBEGIN\n    -- Input validation\n    IF k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    IF confidence < 0 OR confidence > 1 THEN\n        RAISE EXCEPTION 'confidence must be between 0 and 1';\n    END IF;\n\n    IF owner_types IS NOT NULL AND owner_ids IS NOT NULL AND\n        array_length(owner_types, 1) != array_length(owner_ids, 1) AND\n        array_length(owner_types, 1) <= 0 THEN\n        RAISE EXCEPTION 'owner_types and owner_ids arrays must have the same length';\n    END IF;\n\n    -- Calculate search threshold from confidence\n    search_threshold := 1.0 - confidence;\n\n    -- Build owner filter SQL\n    owner_filter_sql := '\n        AND (\n            doc_owners.owner_id = ANY($5::uuid[]) AND doc_owners.owner_type = ANY($4::text[])\n        )';\n\n    -- Build metadata filter SQL if provided\n    IF metadata_filter IS NOT NULL THEN\n        metadata_filter_sql := 'AND d.metadata @> $6';\n    ELSE\n        metadata_filter_sql := '';\n    END IF;\n\n    -- Return search results\n    RETURN QUERY EXECUTE format(\n        'WITH ranked_docs AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                (1 - (d.embedding <=> $1)) as distance,\n                d.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs_embeddings d\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $7\n            AND 1 - (d.embedding <=> $1) >= $2\n            %s\n            %s\n            ORDER BY (1 - (d.embedding <=> $1)) DESC\n            LIMIT ($3 * 4)  -- Get more candidates than needed\n        )\n        SELECT DISTINCT ON (doc_id) *\n        FROM ranked_docs\n        ORDER BY doc_id, distance DESC\n        LIMIT $3',\n        owner_filter_sql,\n        metadata_filter_sql\n    )\n    USING\n        query_embedding,\n        search_threshold,\n        k,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        developer_id;\n\n\nEND;\n$$;\n\n-- Add helpful comment\nCOMMENT ON FUNCTION search_by_vector IS 'Search documents by vector similarity with configurable confidence threshold and filtering options';\n\n-- Create the combined embed and search function\nCREATE\nOR REPLACE FUNCTION embed_and_search_by_vector (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    embedding_provider text DEFAULT 'openai',\n    embedding_model text DEFAULT 'text-embedding-3-large',\n    input_type text DEFAULT 'query',\n    api_key text DEFAULT NULL,\n    api_key_name text DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    query_embedding vector(1024);\nBEGIN\n    -- First generate embedding for the query text\n    query_embedding := embed_with_cache(\n        embedding_provider,\n        embedding_model,\n        query_text,\n        input_type,\n        api_key,\n        api_key_name\n    );\n\n    -- Then perform the search using the generated embedding\n    RETURN QUERY SELECT * FROM search_by_vector(\n        developer_id,\n        query_embedding,\n        owner_types,\n        owner_ids,\n        k,\n        confidence,\n        metadata_filter\n    );\nEND;\n$$;\n\nCOMMENT ON FUNCTION embed_and_search_by_vector IS 'Convenience function that combines text embedding and vector search in one call';\n\n-- Create the text search function\nCREATE\nOR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    owner_filter_sql text;\n    metadata_filter_sql text;\n    ts_query tsquery;\nBEGIN\n    -- Input validation\n    IF k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    IF owner_types IS NOT NULL AND owner_ids IS NOT NULL AND\n        array_length(owner_types, 1) != array_length(owner_ids, 1) AND\n        array_length(owner_types, 1) <= 0 THEN\n        RAISE EXCEPTION 'owner_types and owner_ids arrays must have the same length';\n    END IF;\n\n    -- Convert search query to tsquery\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    -- Build owner filter SQL\n    owner_filter_sql := '\n        AND (\n            doc_owners.owner_id = ANY($4::uuid[]) AND doc_owners.owner_type = ANY($3::text[])\n        )';\n\n\n    -- Build metadata filter SQL if provided\n    IF metadata_filter IS NOT NULL THEN\n        metadata_filter_sql := 'AND d.metadata @> $5';\n    ELSE\n        metadata_filter_sql := '';\n    END IF;\n\n    -- Return search results\n    RETURN QUERY EXECUTE format(\n        'WITH ranked_docs AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                ts_rank_cd(d.search_tsv, $1, 32)::double precision as distance,\n                e.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs d\n            LEFT JOIN docs_embeddings e\n                ON e.developer_id = d.developer_id\n                AND e.doc_id = d.doc_id\n                AND e.index = d.index\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $6\n            AND d.search_tsv @@ $1\n            %s\n            %s\n        )\n        SELECT DISTINCT ON (doc_id) *\n        FROM ranked_docs\n        ORDER BY doc_id, distance DESC\n        LIMIT $2',\n        owner_filter_sql,\n        metadata_filter_sql\n    )\n    USING\n        ts_query,\n        k,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        developer_id;\n\nEND;\n$$;\n\nCOMMENT ON FUNCTION search_by_text IS 'Search documents using full-text search with configurable language and filtering options';\n\n-- Function to calculate mean of an array\nCREATE\nOR REPLACE FUNCTION array_mean (arr FLOAT[]) RETURNS float AS $$\n    SELECT avg(v) FROM unnest(arr) v;\n$$ LANGUAGE SQL;\n\n-- Function to calculate standard deviation of an array\nCREATE\nOR REPLACE FUNCTION array_stddev (arr FLOAT[]) RETURNS float AS $$\n    SELECT stddev(v) FROM unnest(arr) v;\n$$ LANGUAGE SQL;\n\n-- DBSF normalization function\nCREATE\nOR REPLACE FUNCTION dbsf_normalize (scores FLOAT[]) RETURNS FLOAT[] AS $$\nDECLARE\n    m float;\n    sd float;\n    m3d float;\n    m_3d float;\nBEGIN\n    -- Handle edge cases\n    IF array_length(scores, 1) < 2 THEN\n        RETURN scores;\n    END IF;\n\n    -- Calculate statistics\n    sd := array_stddev(scores);\n    IF sd = 0 THEN\n        RETURN scores;\n    END IF;\n\n    m := array_mean(scores);\n    m3d := 3 * sd + m;\n    m_3d := m - 3 * sd;\n\n    -- Apply normalization\n    RETURN array(\n        SELECT (s - m_3d) / (m3d - m_3d)\n        FROM unnest(scores) s\n    );\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Hybrid search function combining text and vector search\nCREATE\nOR REPLACE FUNCTION search_hybrid (\n    developer_id UUID,\n    query_text text,\n    query_embedding vector (1024),\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    alpha float DEFAULT 0.7, -- Weight for embedding results\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    search_language text DEFAULT 'english'\n) RETURNS SETOF doc_search_result AS $$\nDECLARE\n    text_weight float;\n    embedding_weight float;\n    intermediate_limit integer;\nBEGIN\n    -- Input validation\n    IF k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    text_weight := 1.0 - alpha;\n    embedding_weight := alpha;\n    -- Get more intermediate results than final to allow for better fusion\n    intermediate_limit := k * 4;\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT * FROM search_by_text(\n            developer_id,\n            query_text,\n            owner_types,\n            owner_ids,\n            search_language,\n            intermediate_limit,  -- Use larger intermediate limit\n            metadata_filter\n        )\n    ),\n    embedding_results AS (\n        SELECT * FROM search_by_vector(\n            developer_id,\n            query_embedding,\n            owner_types,\n            owner_ids,\n            intermediate_limit,  -- Use larger intermediate limit\n            confidence,\n            metadata_filter\n        )\n    ),\n    all_results AS (\n        SELECT DISTINCT doc_id, title, content, metadata, embedding,\n               index, owner_type, owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION\n            SELECT * FROM embedding_results\n        ) combined\n    ),\n    scores AS (\n        SELECT\n            r.doc_id,\n            r.title,\n            r.content,\n            r.metadata,\n            r.embedding,\n            r.index,\n            r.owner_type,\n            r.owner_id,\n            COALESCE(t.distance, 0.0) as text_score,\n            COALESCE(e.distance, 0.0) as embedding_score,\n            RANK() OVER (ORDER BY COALESCE(t.distance, 0.0) DESC) as text_rank,\n            RANK() OVER (ORDER BY COALESCE(e.distance, 0.0) DESC) as embedding_rank\n        FROM all_results r\n        LEFT JOIN text_results t ON r.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON r.doc_id = e.doc_id\n    ),\n    normalized_scores AS (\n        SELECT\n            *,\n            unnest(dbsf_normalize(array_agg(text_score) OVER ())) as norm_text_score,\n            unnest(dbsf_normalize(array_agg(embedding_score) OVER ())) as norm_embedding_score\n        FROM scores\n    )\n    SELECT\n        developer_id,\n        doc_id,\n        index,\n        title,\n        content,\n        1.0 - (text_weight * norm_text_score + embedding_weight * norm_embedding_score) as distance,\n        embedding,\n        metadata,\n        owner_type,\n        owner_id\n    FROM normalized_scores\n    ORDER BY distance ASC\n    LIMIT k;\nEND;\n$$ LANGUAGE plpgsql;\n\nCOMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search using Distribution-Based Score Fusion (DBSF)';\n\n-- Convenience function that handles embedding generation\nCREATE\nOR REPLACE FUNCTION embed_and_search_hybrid (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    alpha float DEFAULT 0.7,\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    search_language text DEFAULT 'english',\n    embedding_provider text DEFAULT 'openai',\n    embedding_model text DEFAULT 'text-embedding-3-large',\n    input_type text DEFAULT 'query',\n    api_key text DEFAULT NULL,\n    api_key_name text DEFAULT NULL\n) RETURNS SETOF doc_search_result AS $$\nDECLARE\n    query_embedding vector(1024);\nBEGIN\n    -- Generate embedding for query text\n    query_embedding := embed_with_cache(\n        embedding_provider,\n        embedding_model,\n        query_text,\n        input_type,\n        api_key,\n        api_key_name\n    );\n\n    -- Perform hybrid search\n    RETURN QUERY SELECT * FROM search_hybrid(\n        developer_id,\n        query_text,\n        query_embedding,\n        owner_types,\n        owner_ids,\n        k,\n        alpha,\n        confidence,\n        metadata_filter,\n        search_language\n    );\nEND;\n$$ LANGUAGE plpgsql;\n\nCOMMENT ON FUNCTION embed_and_search_hybrid IS 'Convenience function that combines text embedding generation and hybrid search in one call';\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000019_system_developer.down.sql",
    "content": "BEGIN;\n\n-- Remove the system developer\nDELETE FROM docs\nWHERE developer_id = '00000000-0000-0000-0000-000000000000'::uuid;\n\n-- Remove the system developer\nDELETE FROM executions\nWHERE developer_id = '00000000-0000-0000-0000-000000000000'::uuid;\n\n-- Remove the system developer\nDELETE FROM tasks\nWHERE developer_id = '00000000-0000-0000-0000-000000000000'::uuid;\n\n-- Remove the system developer\nDELETE FROM agents\nWHERE developer_id = '00000000-0000-0000-0000-000000000000'::uuid;\n\n-- Remove the system developer\nDELETE FROM users\nWHERE developer_id = '00000000-0000-0000-0000-000000000000'::uuid;\n\n-- Remove the system developer\nDELETE FROM \"sessions\"\nWHERE developer_id = '00000000-0000-0000-0000-000000000000'::uuid;\n\n-- Remove the system developer\nDELETE FROM developers\nWHERE developer_id = '00000000-0000-0000-0000-000000000000'::uuid;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000019_system_developer.up.sql",
    "content": "BEGIN;\n\n-- Insert system developer with all zeros UUID\nINSERT INTO developers (\n    developer_id,\n    email,\n    active,\n    tags,\n    settings\n) VALUES (\n    '00000000-0000-0000-0000-000000000000',\n    'system@internal.julep.ai',\n    true,\n    ARRAY['system', 'paid'],\n    '{}'::jsonb\n) ON CONFLICT (developer_id) DO NOTHING;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000020_executions_task_cascade.down.sql",
    "content": "BEGIN;\n\n-- Remove cascading foreign key constraint\nALTER TABLE executions\n    DROP CONSTRAINT IF EXISTS fk_executions_task;\n\n-- Restore original foreign key without cascading behavior\nALTER TABLE executions\n    ADD CONSTRAINT fk_executions_task\n    FOREIGN KEY (developer_id, task_id, task_version)\n    REFERENCES tasks (developer_id, task_id, \"version\");\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000020_executions_task_cascade.up.sql",
    "content": "BEGIN;\n\n-- Temporarily remove foreign key to modify its behavior\nALTER TABLE executions\n    DROP CONSTRAINT IF EXISTS fk_executions_task;\n\n-- Recreate foreign key with cascading deletes\nALTER TABLE executions\n    ADD CONSTRAINT fk_executions_task\n    FOREIGN KEY (developer_id, task_id, task_version)\n    REFERENCES tasks (developer_id, task_id, \"version\")\n    ON DELETE CASCADE;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000021_fix_toolname_contraint.down.sql",
    "content": "BEGIN;\n\n-- Drop the updated unique constraint\nALTER TABLE tools DROP CONSTRAINT IF EXISTS ct_unique_name_per_agent;\n\n-- Restore the original unique constraint (without developer_id)\nALTER TABLE tools ADD CONSTRAINT ct_unique_name_per_agent \nUNIQUE (agent_id, name, task_id);\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000021_fix_toolname_contraint.up.sql",
    "content": "BEGIN;\n\n-- Drop the existing unique constraint\nALTER TABLE tools DROP CONSTRAINT IF EXISTS ct_unique_name_per_agent;\n\n-- Add the new unique constraint including developer_id\nALTER TABLE tools ADD CONSTRAINT ct_unique_name_per_agent \nUNIQUE (developer_id, agent_id, name, task_id);\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000022_vector_search.down.sql",
    "content": "BEGIN;\n\nDROP FUNCTION IF EXISTS search_by_vector;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000022_vector_search.up.sql",
    "content": "BEGIN;\n\nCREATE OR REPLACE FUNCTION search_by_vector (\n    developer_id UUID,\n    query_embedding vector (1024),\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    confidence float DEFAULT 0.0,\n    metadata_filter jsonb DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    search_threshold float;\n    owner_filter_sql text;\n    metadata_filter_sql text;\nBEGIN\n    -- Input validation\n    IF k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    IF confidence < -1 OR confidence > 1 THEN\n        RAISE EXCEPTION 'confidence must be between -1 and 1';\n    END IF;\n\n    IF owner_types IS NOT NULL AND owner_ids IS NOT NULL AND\n        array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids arrays must have the same length';\n    END IF;\n\n    -- Calculate search threshold from confidence\n    search_threshold := 1.0 - confidence;\n\n    -- Build owner filter SQL\n    owner_filter_sql := '\n        AND (\n            doc_owners.owner_id = ANY($5::uuid[]) AND doc_owners.owner_type = ANY($4::text[])\n        )';\n\n    -- Build metadata filter SQL if provided\n    IF metadata_filter IS NOT NULL THEN\n        metadata_filter_sql := 'AND d.metadata @> $6';\n    ELSE\n        metadata_filter_sql := '';\n    END IF;\n\n    -- Return search results\n    RETURN QUERY EXECUTE format(\n        'WITH ranked_docs AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                (d.embedding <=> $1) as distance,\n                d.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs_embeddings d\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $7\n            AND (d.embedding <=> $1) <= $2\n            %s\n            %s\n            ORDER BY (d.embedding <=> $1) ASC\n            LIMIT ($3 * 4)  -- Get more candidates than needed\n        )\n        SELECT DISTINCT ON (doc_id) *\n        FROM ranked_docs\n        ORDER BY doc_id, distance ASC\n        LIMIT $3',\n        owner_filter_sql,\n        metadata_filter_sql\n    )\n    USING\n        query_embedding,\n        search_threshold,\n        k,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        developer_id;\n\n\nEND;\n$$;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000023_update_strings_length_constraints.down.sql",
    "content": "BEGIN;\n\n-- Drop the updated constraints\nALTER TABLE agents\nDROP CONSTRAINT IF EXISTS ct_agents_about_length;\n\nALTER TABLE tools\nDROP CONSTRAINT IF EXISTS ct_tools_description_length;\n\nALTER TABLE files\nDROP CONSTRAINT IF EXISTS ct_files_description_length;\n\nALTER TABLE tasks\nDROP CONSTRAINT IF EXISTS ct_tasks_description_length;\n\n-- Restore original constraints\nALTER TABLE tools\nADD CONSTRAINT ct_tools_description_length CHECK (\n    description IS NULL\n    OR length(description) <= 1000\n);\n\nALTER TABLE files\nADD CONSTRAINT ct_files_description_length CHECK (\n    description IS NULL\n    OR length(description) <= 1000\n);\n\nALTER TABLE tasks\nADD CONSTRAINT ct_tasks_description_length CHECK (\n    description IS NULL\n    OR length(description) <= 1000\n);\n\nALTER TABLE agents\nADD CONSTRAINT ct_agents_about_length CHECK (\n    about IS NULL\n    OR length(about) <= 5000\n);\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000023_update_strings_length_constraints.up.sql",
    "content": "BEGIN;\n\n-- Drop existing constraints\nALTER TABLE agents\nDROP CONSTRAINT IF EXISTS ct_agents_about_length;\n\nALTER TABLE tools\nDROP CONSTRAINT IF EXISTS ct_tools_description_length;\n\nALTER TABLE files\nDROP CONSTRAINT IF EXISTS ct_files_description_length;\n\nALTER TABLE tasks\nDROP CONSTRAINT IF EXISTS ct_tasks_description_length;\n\n-- Add new constraints with updated length\nALTER TABLE agents\nADD CONSTRAINT ct_agents_about_length CHECK (\n    about IS NULL\n    OR length(about) <= 16000\n);\n\nALTER TABLE tools\nADD CONSTRAINT ct_tools_description_length CHECK (\n    description IS NULL\n    OR length(description) <= 16000\n);\n\nALTER TABLE files\nADD CONSTRAINT ct_files_description_length CHECK (\n    description IS NULL\n    OR length(description) <= 16000\n);\n\nALTER TABLE tasks\nADD CONSTRAINT ct_tasks_description_length CHECK (\n    description IS NULL\n    OR length(description) <= 16000\n);\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000024_hybrid_search.down.sql",
    "content": "BEGIN;\n\nDROP FUNCTION IF EXISTS search_hybrid;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000024_hybrid_search.up.sql",
    "content": "BEGIN;\n\n-- Hybrid search function combining text and vector search\nCREATE\nOR REPLACE FUNCTION search_hybrid (\n    developer_id UUID,\n    query_text text,\n    query_embedding vector (1024),\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    alpha float DEFAULT 0.7, -- Weight for embedding results\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    search_language text DEFAULT 'english'\n) RETURNS SETOF doc_search_result AS $$\nDECLARE\n    text_weight float;\n    embedding_weight float;\n    intermediate_limit integer;\nBEGIN\n    -- Input validation\n    IF k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    text_weight := 1.0 - alpha;\n    embedding_weight := alpha;\n    -- Get more intermediate results than final to allow for better fusion\n    intermediate_limit := k * 4;\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT * FROM search_by_text(\n            developer_id,\n            query_text,\n            owner_types,\n            owner_ids,\n            search_language,\n            intermediate_limit,  -- Use larger intermediate limit\n            metadata_filter\n        )\n    ),\n    embedding_results AS (\n        SELECT * FROM search_by_vector(\n            developer_id,\n            query_embedding,\n            owner_types,\n            owner_ids,\n            intermediate_limit,  -- Use larger intermediate limit\n            confidence,\n            metadata_filter\n        )\n    ),\n    all_results AS (\n        SELECT DISTINCT doc_id, title, content, metadata, embedding,\n               index, owner_type, owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION\n            SELECT * FROM embedding_results\n        ) combined\n    ),\n    scores AS (\n        SELECT\n            r.doc_id,\n            r.title,\n            r.content,\n            r.metadata,\n            r.embedding,\n            r.index,\n            r.owner_type,\n            r.owner_id,\n            COALESCE(t.distance, 0.0) as text_score,\n            COALESCE(e.distance, 0.0) as embedding_score,\n            RANK() OVER (ORDER BY COALESCE(t.distance, 0.0) DESC) as text_rank,\n            RANK() OVER (ORDER BY COALESCE(e.distance, 0.0) DESC) as embedding_rank\n        FROM all_results r\n        LEFT JOIN text_results t ON r.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON r.doc_id = e.doc_id\n    ),\n    normalized_scores AS (\n        SELECT \n            s.*,\n            normalized_text_scores[row_number() OVER (ORDER BY s.doc_id)] as norm_text_score,\n            normalized_embedding_scores[row_number() OVER (ORDER BY s.doc_id)] as norm_embedding_score\n        FROM \n            scores s,\n            (SELECT \n                dbsf_normalize(array_agg(text_score ORDER BY doc_id)) as normalized_text_scores,\n                dbsf_normalize(array_agg(embedding_score ORDER BY doc_id)) as normalized_embedding_scores\n             FROM scores) n\n    )\n    SELECT\n        developer_id,\n        doc_id,\n        index,\n        title,\n        content,\n        1.0 - (text_weight * norm_text_score + embedding_weight * norm_embedding_score) as distance,\n        embedding,\n        metadata,\n        owner_type,\n        owner_id\n    FROM normalized_scores\n    ORDER BY distance ASC\n    LIMIT k;\nEND;\n$$ LANGUAGE plpgsql;\n\nCOMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search using Distribution-Based Score Fusion (DBSF)';\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000025_default_system_template.down.sql",
    "content": "BEGIN;\n\n-- First remove the new column and its constraint from agents table\nALTER TABLE agents \nDROP CONSTRAINT ct_agents_default_system_template_not_empty;\n\nALTER TABLE agents \nDROP COLUMN default_system_template;\n\n-- Then restore the original constraint on sessions table\nALTER TABLE sessions \nDROP CONSTRAINT ct_sessions_system_template_not_empty;\n\nALTER TABLE sessions \nADD CONSTRAINT ct_sessions_system_template_not_empty CHECK (\n    length(trim(system_template)) > 0\n);\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000025_default_system_template.up.sql",
    "content": "BEGIN;\n\n-- First drop the old constraint from sessions table\nALTER TABLE sessions \nDROP CONSTRAINT ct_sessions_system_template_not_empty;\n\n-- Add the corrected constraint to sessions table\nALTER TABLE sessions \nADD CONSTRAINT ct_sessions_system_template_not_empty CHECK (\n    system_template IS NULL \n    OR length(trim(system_template)) > 0\n);\n\n-- Add the non-nullable column and its constraint to agents table\nALTER TABLE agents \nADD COLUMN default_system_template TEXT NOT NULL DEFAULT '{%- if agent.name -%}\\nYou are {{agent.name}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\" \"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\"---\"}}\\n  {%- endfor -%}\\n{%- endif -%}';\n\nALTER TABLE agents \nADD CONSTRAINT ct_agents_default_system_template_not_empty CHECK (\n    length(trim(default_system_template)) > 0\n);\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000026_transition_cursor.down.sql",
    "content": "BEGIN;\n\n-- Drop the check constraint first\nALTER TABLE transitions\n    DROP CONSTRAINT ct_transition_cursor_scope_id_not_null;\n\n-- Remove the scope field from the transition_cursor type\nALTER TYPE transition_cursor DROP ATTRIBUTE scope_id;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000026_transition_cursor.up.sql",
    "content": "BEGIN;\n\n-- Decompress any existing compressed chunks\nSELECT decompress_chunk(c, true) \nFROM show_chunks('transitions') c;\n\n-- Temporarily disable compression\nALTER TABLE transitions SET (timescaledb.compress = false);\n\n-- Add the scope field to the transition_cursor type\nALTER TYPE transition_cursor ADD ATTRIBUTE scope_id UUID;\n\n-- Update all existing rows to set the default scope_id\nUPDATE transitions \nSET current_step.scope_id = '00000000-0000-0000-0000-000000000000'::UUID\nWHERE (current_step).scope_id IS NULL;\n\nUPDATE transitions \nSET next_step.scope_id = '00000000-0000-0000-0000-000000000000'::UUID\nWHERE (next_step).workflow_name IS NOT NULL AND (next_step).scope_id IS NULL;\n\n-- Add a check constraint to ensure scope_id is not null for future inserts/updates\nALTER TABLE transitions\n    ADD CONSTRAINT ct_transition_cursor_scope_id_not_null\n    CHECK ((current_step).scope_id IS NOT NULL AND \n           (next_step IS NULL OR (next_step).scope_id IS NOT NULL));\n\n-- Re-enable compression\nALTER TABLE transitions SET (timescaledb.compress = true);\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000027_add_postgraphile.down.sql",
    "content": "BEGIN;\nCOMMENT ON TABLE public.entries IS '';\nCOMMENT ON TABLE public.transitions IS '';\nREVOKE ALL ON ALL TABLES IN SCHEMA public FROM postgraphile;\nALTER TABLE developers DISABLE ROW LEVEL SECURITY;\nALTER TABLE agents DISABLE ROW LEVEL SECURITY;\nALTER TABLE users DISABLE ROW LEVEL SECURITY;\nALTER TABLE files DISABLE ROW LEVEL SECURITY;\nALTER TABLE file_owners DISABLE ROW LEVEL SECURITY;\nALTER TABLE docs DISABLE ROW LEVEL SECURITY;\nALTER TABLE doc_owners DISABLE ROW LEVEL SECURITY;\nALTER TABLE tools DISABLE ROW LEVEL SECURITY;\nALTER TABLE sessions DISABLE ROW LEVEL SECURITY;\nALTER TABLE session_lookup DISABLE ROW LEVEL SECURITY;\nALTER TABLE tasks DISABLE ROW LEVEL SECURITY;\nALTER TABLE workflows DISABLE ROW LEVEL SECURITY;\nALTER TABLE executions DISABLE ROW LEVEL SECURITY;\nALTER TABLE temporal_executions_lookup DISABLE ROW LEVEL SECURITY;\nALTER TABLE entry_relations DISABLE ROW LEVEL SECURITY;\nDROP POLICY IF EXISTS access_users ON postgraphile_auth.users;\nDROP POLICY access_developers_policy ON developers;\nDROP POLICY access_agents_policy ON agents;\nDROP POLICY access_users_policy ON users;\nDROP POLICY access_files_policy ON files;\nDROP POLICY access_file_owners_policy ON file_owners;\nDROP POLICY access_docs_policy ON docs;\nDROP POLICY access_doc_owners_policy ON doc_owners;\nDROP POLICY access_tools_policy ON tools;\nDROP POLICY access_sessions_policy ON sessions;\nDROP POLICY access_session_lookup_policy ON session_lookup;\nDROP POLICY access_tasks_policy ON tasks;\nDROP POLICY access_workflows_policy ON workflows;\nDROP POLICY access_executions_policy ON executions;\nDROP POLICY access_temporal_executions_lookup_policy ON temporal_executions_lookup;\nDROP POLICY access_entry_relations_policy ON entry_relations;\nDROP TABLE IF EXISTS postgraphile_auth.users;\nDROP FUNCTION IF EXISTS authenticate;\nDROP FUNCTION current_developer_id;\nDROP FUNCTION current_developer_id_by_execution_id;\nDROP FUNCTION current_developer_id_by_session_id;\nDROP TYPE IF EXISTS jwt_token;\nDROP ROLE IF EXISTS postgraphile;\nDROP ROLE IF EXISTS no_access_role;\nDROP EXTENSION IF EXISTS pgcrypto;\nDROP SCHEMA IF EXISTS postgraphile_auth;\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000027_add_postgraphile.up.sql",
    "content": "BEGIN;\n\nCREATE SCHEMA IF NOT EXISTS postgraphile_auth;\nCREATE EXTENSION IF NOT EXISTS pgcrypto;\n\nDO\n$do$\nBEGIN\n   IF EXISTS (\n      SELECT FROM pg_catalog.pg_roles\n      WHERE  rolname = 'postgraphile') THEN\n\n      RAISE NOTICE 'Role \"postgraphile\" already exists. Skipping.';\n   ELSE\n      CREATE ROLE postgraphile;\n   END IF;\nEND\n$do$;\n\nDO\n$do$\nBEGIN\n   IF EXISTS (\n      SELECT FROM pg_catalog.pg_roles\n      WHERE  rolname = 'no_access_role') THEN\n\n      RAISE NOTICE 'Role \"no_access_role\" already exists. Skipping.';\n   ELSE\n      CREATE ROLE no_access_role;\n   END IF;\nEND\n$do$;\n\nDO $$\nBEGIN\n    -- Check if the type already exists\n    IF NOT EXISTS (\n        SELECT 1\n        FROM pg_type t\n        JOIN pg_namespace n ON t.typnamespace = n.oid\n        WHERE t.typname = 'jwt_token'\n    ) THEN\n        -- Create the type if it does not exist\n        CREATE TYPE jwt_token AS (\n            role text,\n            exp integer,\n            developer_id UUID\n        );\n    END IF;\nEND $$;\n\nCREATE TABLE IF NOT EXISTS postgraphile_auth.users(\n    developer_id UUID NOT NULL,\n    email TEXT NOT NULL CONSTRAINT ct_developers_email_format CHECK (\n        email ~* '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$'\n    ),\n    password_hash text\n);\n\nGRANT SELECT ON postgraphile_auth.users TO no_access_role;\nGRANT SELECT ON postgraphile_auth.users TO postgraphile;\n\nCREATE OR REPLACE FUNCTION current_developer_id() returns UUID as $$\n  select nullif(current_setting('jwt.claims.developer_id', true), '')::UUID;\n$$ language sql stable;\n\nCREATE POLICY access_users\n  ON postgraphile_auth.users\n  FOR SELECT\n  TO postgraphile\n  USING (developer_id = current_developer_id());\n\nCREATE OR REPLACE FUNCTION authenticate(\n  email text,\n  password text\n)\nreturns jwt_token\nas $$\ndeclare\n  account postgraphile_auth.users;\nbegin\n  select a.* into account\n    from postgraphile_auth.users as a\n    where a.email = authenticate.email;\n\n  if account.password_hash = crypt(password, account.password_hash) then\n    return (\n      'postgraphile',\n      extract(epoch from now() + interval '7 days'),\n      account.developer_id\n    )::jwt_token;\n  else\n    return null;\n  end if;\nend;\n$$ language plpgsql strict security definer;\n\nGRANT EXECUTE ON FUNCTION authenticate(text, text) TO no_access_role, postgraphile;\n\nCREATE OR REPLACE FUNCTION current_developer_id_by_execution_id(p_execution_id UUID)\nRETURNS UUID AS $$\nDECLARE\n    v_developer_id UUID;\nBEGIN\n    SELECT developer_id\n    INTO v_developer_id\n    FROM executions\n    WHERE execution_id = p_execution_id;\n\n    RETURN v_developer_id;\nEND;\n$$ LANGUAGE plpgsql;\n\nCREATE OR REPLACE FUNCTION current_developer_id_by_session_id(p_session_id UUID)\nRETURNS UUID AS $$\nDECLARE\n    v_developer_id UUID;\nBEGIN\n    SELECT developer_id\n    INTO v_developer_id\n    FROM sessions\n    WHERE session_id = p_session_id;\n\n    RETURN v_developer_id;\nEND;\n$$ LANGUAGE plpgsql;\n\nGRANT ALL ON ALL TABLES IN SCHEMA public TO postgraphile;\n\nALTER TABLE developers ENABLE ROW LEVEL SECURITY;\nALTER TABLE agents ENABLE ROW LEVEL SECURITY;\nALTER TABLE users ENABLE ROW LEVEL SECURITY;\nALTER TABLE files ENABLE ROW LEVEL SECURITY;\nALTER TABLE file_owners ENABLE ROW LEVEL SECURITY;\nALTER TABLE docs ENABLE ROW LEVEL SECURITY;\nALTER TABLE doc_owners ENABLE ROW LEVEL SECURITY;\nALTER TABLE tools ENABLE ROW LEVEL SECURITY;\nALTER TABLE sessions ENABLE ROW LEVEL SECURITY;\nALTER TABLE session_lookup ENABLE ROW LEVEL SECURITY;\nALTER TABLE tasks ENABLE ROW LEVEL SECURITY;\nALTER TABLE workflows ENABLE ROW LEVEL SECURITY;\nALTER TABLE executions ENABLE ROW LEVEL SECURITY;\nALTER TABLE temporal_executions_lookup ENABLE ROW LEVEL SECURITY;\nALTER TABLE entry_relations ENABLE ROW LEVEL SECURITY;\n\nCREATE POLICY access_developers_policy\n  ON developers\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_agents_policy\n  ON agents\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_users_policy\n  ON users\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_files_policy\n  ON files\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_file_owners_policy\n  ON file_owners\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_docs_policy\n  ON docs\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_doc_owners_policy\n  ON doc_owners\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_tools_policy\n  ON tools\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_sessions_policy\n  ON sessions\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_session_lookup_policy\n  ON session_lookup\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_tasks_policy\n  ON tasks\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_workflows_policy\n  ON workflows\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_executions_policy\n  ON executions\n  FOR ALL\n  TO postgraphile\n  USING (developer_id = current_developer_id())\n  WITH CHECK (developer_id = current_developer_id());\n\nCREATE POLICY access_temporal_executions_lookup_policy\n  ON temporal_executions_lookup\n  FOR ALL\n  TO postgraphile\n  USING (execution_id = current_developer_id_by_execution_id(execution_id))\n  WITH CHECK (execution_id = current_developer_id_by_execution_id(execution_id));\n\nCREATE POLICY access_entry_relations_policy\n  ON entry_relations\n  FOR ALL\n  TO postgraphile\n  USING (session_id = current_developer_id_by_session_id(session_id))\n  WITH CHECK (session_id = current_developer_id_by_session_id(session_id));\n\nCOMMENT ON TABLE public.entries IS '@omit';\nCOMMENT ON TABLE public.transitions IS '@omit';\nREVOKE ALL ON public.entries FROM postgraphile;\nREVOKE ALL ON public.transitions FROM postgraphile;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000028_new_hybrid_search_implementation.down.sql",
    "content": "DROP FUNCTION IF EXISTS search_hybrid;\nCREATE OR REPLACE FUNCTION search_hybrid (\n    developer_id UUID,\n    query_text text,\n    query_embedding vector (1024),\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    alpha float DEFAULT 0.7, -- Weight for embedding results\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    search_language text DEFAULT 'english'\n) RETURNS SETOF doc_search_result AS $$\nDECLARE\n    text_weight float;\n    embedding_weight float;\n    intermediate_limit integer;\nBEGIN\n    -- Input validation\n    IF k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    text_weight := 1.0 - alpha;\n    embedding_weight := alpha;\n    -- Get more intermediate results than final to allow for better fusion\n    intermediate_limit := k * 4;\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT * FROM search_by_text(\n            developer_id,\n            query_text,\n            owner_types,\n            owner_ids,\n            search_language,\n            intermediate_limit,  -- Use larger intermediate limit\n            metadata_filter\n        )\n    ),\n    embedding_results AS (\n        SELECT * FROM search_by_vector(\n            developer_id,\n            query_embedding,\n            owner_types,\n            owner_ids,\n            intermediate_limit,  -- Use larger intermediate limit\n            confidence,\n            metadata_filter\n        )\n    ),\n    all_results AS (\n        SELECT DISTINCT doc_id, title, content, metadata, embedding,\n               index, owner_type, owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION\n            SELECT * FROM embedding_results\n        ) combined\n    ),\n    scores AS (\n        SELECT\n            r.doc_id,\n            r.title,\n            r.content,\n            r.metadata,\n            r.embedding,\n            r.index,\n            r.owner_type,\n            r.owner_id,\n            COALESCE(t.distance, 0.0) as text_score,\n            COALESCE(e.distance, 0.0) as embedding_score,\n            RANK() OVER (ORDER BY COALESCE(t.distance, 0.0) DESC) as text_rank,\n            RANK() OVER (ORDER BY COALESCE(e.distance, 0.0) DESC) as embedding_rank\n        FROM all_results r\n        LEFT JOIN text_results t ON r.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON r.doc_id = e.doc_id\n    ),\n    normalized_scores AS (\n        SELECT\n            *,\n            unnest(dbsf_normalize(array_agg(text_score) OVER ())) as norm_text_score,\n            unnest(dbsf_normalize(array_agg(embedding_score) OVER ())) as norm_embedding_score\n        FROM scores\n    )\n    SELECT\n        developer_id,\n        doc_id,\n        index,\n        title,\n        content,\n        1.0 - (text_weight * norm_text_score + embedding_weight * norm_embedding_score) as distance,\n        embedding,\n        metadata,\n        owner_type,\n        owner_id\n    FROM normalized_scores\n    ORDER BY distance ASC\n    LIMIT k;\nEND;\n$$ LANGUAGE plpgsql;\n\nCOMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search using Distribution-Based Score Fusion (DBSF)';"
  },
  {
    "path": "src/memory-store/migrations/000028_new_hybrid_search_implementation.up.sql",
    "content": "DROP FUNCTION search_hybrid(uuid,text,vector,text[],uuid[],integer,double precision,double precision,jsonb,text);\nCREATE OR REPLACE FUNCTION search_hybrid (\n    p_developer_id UUID,\n    p_query_text text,\n    p_query_embedding vector(1024),\n    p_owner_types TEXT[],\n    p_owner_ids UUID[],\n    p_k integer DEFAULT 3,\n    p_alpha float DEFAULT 0.7,\n    p_confidence float DEFAULT 0.5,\n    p_metadata_filter jsonb DEFAULT NULL,\n    p_search_language text DEFAULT 'english'\n)\nRETURNS SETOF doc_search_result\nLANGUAGE plpgsql AS\n$$\nDECLARE\n    text_weight float := 1.0 - p_alpha;\n    embedding_weight float := p_alpha;\n    intermediate_limit integer := p_k * 4;\nBEGIN\n    /*\n       1) Get top-N results from text search.\n       2) Get top-N results from vector search.\n       3) UNION them and pick the highest-distance row per doc_id (DISTINCT ON).\n       4) Join those rows back to each sub-result to get text_score and embedding_score.\n       5) Aggregate text & embedding scores once, dbsf_normalize once, then map them back by row_number.\n    */\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT *\n        FROM search_by_text(\n            p_developer_id,\n            p_query_text,\n            p_owner_types,\n            p_owner_ids,\n            p_search_language,\n            intermediate_limit,\n            p_metadata_filter\n        )\n    ),\n    embedding_results AS (\n        SELECT *\n        FROM search_by_vector(\n            p_developer_id,\n            p_query_embedding,\n            p_owner_types,\n            p_owner_ids,\n            intermediate_limit,\n            p_confidence,\n            p_metadata_filter\n        )\n    ),\n\n    -- UNION both sets, pick highest distance row per doc_id\n    all_results AS (\n        SELECT DISTINCT ON (doc_id)\n               developer_id,\n               doc_id,\n               index,\n               title,\n               content,\n               distance,\n               embedding,\n               metadata,\n               owner_type,\n               owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION ALL\n            SELECT * FROM embedding_results\n        ) combined\n        ORDER BY doc_id, distance DESC\n    ),\n\n    -- Gather text_score & embedding_score for each doc\n    scores AS (\n        SELECT\n            a.developer_id,\n            a.doc_id,\n            a.index,\n            a.title,\n            a.content,\n            a.embedding,\n            a.metadata,\n            a.owner_type,\n            a.owner_id,\n            COALESCE(t.distance, 0.0) AS text_score,\n            COALESCE(e.distance, 0.0) AS embedding_score\n        FROM all_results a\n        LEFT JOIN text_results      t ON a.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON a.doc_id = e.doc_id\n    ),\n\n    -- Give each row a stable ordering\n    scores_ordered AS (\n        SELECT\n            s.*,\n            ROW_NUMBER() OVER (ORDER BY s.doc_id) AS rn\n        FROM scores s\n    ),\n\n    -- Aggregate all text/embedding scores into arrays\n    aggregated AS (\n        SELECT\n            array_agg(text_score ORDER BY rn)      AS text_scores,\n            array_agg(embedding_score ORDER BY rn) AS embedding_scores\n        FROM scores_ordered\n    ),\n\n    -- Normalize once for each array\n    normed_arrays AS (\n        SELECT\n            dbsf_normalize(text_scores)      AS norm_text_scores,\n            dbsf_normalize(embedding_scores) AS norm_embedding_scores\n        FROM aggregated\n    ),\n\n    -- Join normalized arrays back using row_number\n    final AS (\n        SELECT\n            s.developer_id,\n            s.doc_id,\n            s.index,\n            s.title,\n            s.content,\n            1.0 - (\n                text_weight      * norm_text_scores[s.rn] +\n                embedding_weight * norm_embedding_scores[s.rn]\n            ) AS distance,\n            s.embedding,\n            s.metadata,\n            s.owner_type,\n            s.owner_id\n        FROM scores_ordered s\n        CROSS JOIN normed_arrays\n        ORDER BY distance ASC\n        LIMIT p_k\n    )\n    SELECT * FROM final;\nEND;\n$$;\n\nCOMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search using Distribution-Based Score Fusion (DBSF)';"
  },
  {
    "path": "src/memory-store/migrations/000029_duplicate_doc_prevention.down.sql",
    "content": "BEGIN;\n\n-- Drop the duplicate doc owner check trigger\nDROP TRIGGER IF EXISTS trg_check_duplicate_doc_owner ON doc_owners;\n\n-- Drop the trigger function\nDROP FUNCTION IF EXISTS check_duplicate_doc_owner();\n\n-- Drop the content hash trigger\nDROP TRIGGER IF EXISTS trg_docs_content_hash ON docs;\n\n-- Drop the content hash function\nDROP FUNCTION IF EXISTS docs_update_content_hash();\n\n-- Drop the hash generation function\nDROP FUNCTION IF EXISTS generate_content_hash(TEXT, TEXT);\n\n-- Drop the index\nDROP INDEX IF EXISTS idx_docs_content_hash;\n\n-- Remove the content_hash column\nALTER TABLE docs DROP COLUMN IF EXISTS content_hash;\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000029_duplicate_doc_prevention.up.sql",
    "content": "BEGIN;\n\n-- Add content_hash column to docs table\nALTER TABLE docs ADD COLUMN IF NOT EXISTS content_hash TEXT;\n\n-- Create index on content_hash for fast lookups\nCREATE INDEX IF NOT EXISTS idx_docs_content_hash ON docs (developer_id, content_hash);\n\n-- Create a function to generate hash from title and content\nCREATE OR REPLACE FUNCTION generate_content_hash(title TEXT, content TEXT) \nRETURNS TEXT AS $$\nBEGIN\n    -- Use MD5 hash of combined title and content\n    -- This provides a good balance between performance and collision avoidance\n    RETURN MD5(COALESCE(title, '') || '|' || COALESCE(content, ''));\nEND;\n$$ LANGUAGE plpgsql IMMUTABLE;\n\n-- Create trigger function to set content_hash on insert/update\nCREATE OR REPLACE FUNCTION docs_update_content_hash() \nRETURNS TRIGGER AS $$\nBEGIN\n    NEW.content_hash := generate_content_hash(NEW.title, NEW.content);\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger to update content_hash automatically\nCREATE TRIGGER trg_docs_content_hash\nBEFORE INSERT OR UPDATE OF title, content ON docs\nFOR EACH ROW\nEXECUTE FUNCTION docs_update_content_hash();\n\n-- Update the content_hash for existing records\nUPDATE docs\nSET content_hash = generate_content_hash(title, content)\nWHERE content_hash IS NULL;\n\n-- Create function to check for duplicate docs by owner BEFORE assigning ownership\nCREATE OR REPLACE FUNCTION check_duplicate_doc_owner() \nRETURNS TRIGGER AS $$\nDECLARE\n    v_content_hash TEXT;\n    v_doc_exists BOOLEAN;\nBEGIN\n    -- First get the content hash of the document being assigned\n    SELECT content_hash INTO v_content_hash\n    FROM docs\n    WHERE developer_id = NEW.developer_id AND doc_id = NEW.doc_id;\n    \n    -- If we can't find the document, let the insertion proceed\n    -- (There should be a foreign key constraint, but it's commented out in the original SQL)\n    IF v_content_hash IS NULL THEN\n        RETURN NEW;\n    END IF;\n    \n    -- Check if this owner already has a document with the same content hash\n    SELECT EXISTS (\n        SELECT 1 \n        FROM docs d\n        JOIN doc_owners o ON d.developer_id = o.developer_id AND d.doc_id = o.doc_id\n        WHERE d.developer_id = NEW.developer_id\n        AND d.content_hash = v_content_hash\n        AND o.owner_type = NEW.owner_type\n        AND o.owner_id = NEW.owner_id\n        AND o.doc_id != NEW.doc_id  -- Exclude the current document\n    ) INTO v_doc_exists;\n    \n    -- If a document with the same content already exists for this owner, reject the insertion\n    IF v_doc_exists THEN\n        RAISE EXCEPTION 'Document with similar content already exists for this owner (type: %, id: %)', \n                         NEW.owner_type, NEW.owner_id;\n    END IF;\n    \n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger to check for duplicates when assigning ownership\nCREATE TRIGGER trg_check_duplicate_doc_owner\nBEFORE INSERT ON doc_owners\nFOR EACH ROW\nEXECUTE FUNCTION check_duplicate_doc_owner();\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000030_add_unaccent_search_config.down.sql",
    "content": "-- Restore the original search_tsv function\nCREATE OR REPLACE FUNCTION docs_update_search_tsv() RETURNS trigger AS $$\nBEGIN\n    NEW.search_tsv :=\n        setweight(to_tsvector('english', coalesce(NEW.title, '')), 'A') ||\n        setweight(to_tsvector('english', coalesce(NEW.content, '')), 'B');\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Restore the search_by_text function to use 'english' as the default configuration\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    owner_filter_sql text := '';\n    metadata_filter_sql text := '';\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    IF array_length(owner_types, 1) > 0 THEN\n        owner_filter_sql := 'AND (doc_owners.owner_type = ANY($3) AND doc_owners.owner_id = ANY($4))';\n    END IF;\n\n    IF metadata_filter IS NOT NULL AND jsonb_typeof(metadata_filter) = 'object' AND jsonb_array_length(metadata_filter) > 0 THEN\n        metadata_filter_sql := 'AND d.metadata @> $5';\n    END IF;\n\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    RETURN QUERY EXECUTE format(\n        'SELECT\n            d.developer_id as developer_id,\n            d.doc_id as doc_id,\n            d.index as index,\n            d.title as title,\n            d.content as content,\n            ts_rank_cd(d.search_tsv, $1, 32)::double precision as distance,\n            e.embedding,\n            d.metadata,\n            doc_owners.owner_type,\n            doc_owners.owner_id\n        FROM docs d\n        LEFT JOIN docs_embeddings e\n            ON e.developer_id = d.developer_id\n            AND e.doc_id = d.doc_id\n            AND e.index = d.index\n        LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n        WHERE d.developer_id = $6\n        AND d.search_tsv @@ $1\n        %s\n        %s\n        ORDER BY distance DESC\n        LIMIT $2',\n        owner_filter_sql,\n        metadata_filter_sql\n    )\n    USING\n        ts_query,\n        k,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        developer_id;\nEND;\n$$;\n\n-- Update existing docs back to the original text search configuration\nUPDATE docs\nSET search_tsv = \n    setweight(to_tsvector('english', coalesce(title, '')), 'A') ||\n    setweight(to_tsvector('english', coalesce(content, '')), 'B');\n\n-- Drop the custom text search configuration\nDROP TEXT SEARCH CONFIGURATION IF EXISTS english_unaccent; "
  },
  {
    "path": "src/memory-store/migrations/000030_add_unaccent_search_config.up.sql",
    "content": "-- Make sure unaccent extension is installed\nCREATE EXTENSION IF NOT EXISTS unaccent;\n\n-- Create a custom text search configuration based on English that uses unaccent\nCREATE TEXT SEARCH CONFIGURATION english_unaccent (COPY = english);\n\n-- Set the unaccent dictionary before the english stem dictionary\nALTER TEXT SEARCH CONFIGURATION english_unaccent\n    ALTER MAPPING FOR hword, hword_part, word\n    WITH unaccent, english_stem;\n\n-- Update the search_tsv function to use this configuration\nCREATE OR REPLACE FUNCTION docs_update_search_tsv() RETURNS trigger AS $$\nBEGIN\n    NEW.search_tsv :=\n        setweight(to_tsvector('english_unaccent', coalesce(NEW.title, '')), 'A') ||\n        setweight(to_tsvector('english_unaccent', coalesce(NEW.content, '')), 'B');\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Update the search_by_text function to use english_unaccent configuration\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english_unaccent',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    owner_filter_sql text := '';\n    metadata_filter_sql text := '';\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    IF array_length(owner_types, 1) > 0 THEN\n        owner_filter_sql := 'AND (doc_owners.owner_type = ANY($3) AND doc_owners.owner_id = ANY($4))';\n    END IF;\n\n    IF metadata_filter IS NOT NULL AND jsonb_typeof(metadata_filter) = 'object' AND jsonb_array_length(metadata_filter) > 0 THEN\n        metadata_filter_sql := 'AND d.metadata @> $5';\n    END IF;\n\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    RETURN QUERY EXECUTE format(\n        'SELECT\n            d.developer_id as developer_id,\n            d.doc_id as doc_id,\n            d.index as index,\n            d.title as title,\n            d.content as content,\n            ts_rank_cd(d.search_tsv, $1, 32)::double precision as distance,\n            e.embedding,\n            d.metadata,\n            doc_owners.owner_type,\n            doc_owners.owner_id\n        FROM docs d\n        LEFT JOIN docs_embeddings e\n            ON e.developer_id = d.developer_id\n            AND e.doc_id = d.doc_id\n            AND e.index = d.index\n        LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n        WHERE d.developer_id = $6\n        AND d.search_tsv @@ $1\n        %s\n        %s\n        ORDER BY distance DESC\n        LIMIT $2',\n        owner_filter_sql,\n        metadata_filter_sql\n    )\n    USING\n        ts_query,\n        k,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        developer_id;\nEND;\n$$;\n\n-- Update existing docs with the new text search configuration\nUPDATE docs\nSET search_tsv = \n    setweight(to_tsvector('english_unaccent', coalesce(title, '')), 'A') ||\n    setweight(to_tsvector('english_unaccent', coalesce(content, '')), 'B'); "
  },
  {
    "path": "src/memory-store/migrations/000031_add_trigram_search.down.sql",
    "content": "DROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, float);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[]);\n\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb, text, float, integer);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb, text);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[]);\n\nCREATE OR REPLACE FUNCTION search_hybrid (\n    p_developer_id UUID,\n    p_query_text text,\n    p_query_embedding vector(1024),\n    p_owner_types TEXT[],\n    p_owner_ids UUID[],\n    p_k integer DEFAULT 3,\n    p_alpha float DEFAULT 0.7,\n    p_confidence float DEFAULT 0.5,\n    p_metadata_filter jsonb DEFAULT NULL,\n    p_search_language text DEFAULT 'english'\n)\nRETURNS SETOF doc_search_result\nLANGUAGE plpgsql AS\n$$\nDECLARE\n    text_weight float := 1.0 - p_alpha;\n    embedding_weight float := p_alpha;\n    intermediate_limit integer := p_k * 4;\nBEGIN\n    /*\n       1) Get top-N results from text search.\n       2) Get top-N results from vector search.\n       3) UNION them and pick the highest-distance row per doc_id (DISTINCT ON).\n       4) Join those rows back to each sub-result to get text_score and embedding_score.\n       5) Aggregate text & embedding scores once, dbsf_normalize once, then map them back by row_number.\n    */\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT *\n        FROM search_by_text(\n            p_developer_id,\n            p_query_text,\n            p_owner_types,\n            p_owner_ids,\n            p_search_language,\n            intermediate_limit,\n            p_metadata_filter\n        )\n    ),\n    embedding_results AS (\n        SELECT *\n        FROM search_by_vector(\n            p_developer_id,\n            p_query_embedding,\n            p_owner_types,\n            p_owner_ids,\n            intermediate_limit,\n            p_confidence,\n            p_metadata_filter\n        )\n    ),\n\n    -- UNION both sets, pick highest distance row per doc_id\n    all_results AS (\n        SELECT DISTINCT ON (doc_id)\n               developer_id,\n               doc_id,\n               index,\n               title,\n               content,\n               distance,\n               embedding,\n               metadata,\n               owner_type,\n               owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION ALL\n            SELECT * FROM embedding_results\n        ) combined\n        ORDER BY doc_id, distance DESC\n    ),\n\n    -- Gather text_score & embedding_score for each doc\n    scores AS (\n        SELECT\n            a.developer_id,\n            a.doc_id,\n            a.index,\n            a.title,\n            a.content,\n            a.embedding,\n            a.metadata,\n            a.owner_type,\n            a.owner_id,\n            COALESCE(t.distance, 0.0) AS text_score,\n            COALESCE(e.distance, 0.0) AS embedding_score\n        FROM all_results a\n        LEFT JOIN text_results      t ON a.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON a.doc_id = e.doc_id\n    ),\n\n    -- Give each row a stable ordering\n    scores_ordered AS (\n        SELECT\n            s.*,\n            ROW_NUMBER() OVER (ORDER BY s.doc_id) AS rn\n        FROM scores s\n    ),\n\n    -- Aggregate all text/embedding scores into arrays\n    aggregated AS (\n        SELECT\n            array_agg(text_score ORDER BY rn)      AS text_scores,\n            array_agg(embedding_score ORDER BY rn) AS embedding_scores\n        FROM scores_ordered\n    ),\n\n    -- Normalize once for each array\n    normed_arrays AS (\n        SELECT\n            dbsf_normalize(text_scores)      AS norm_text_scores,\n            dbsf_normalize(embedding_scores) AS norm_embedding_scores\n        FROM aggregated\n    ),\n\n    -- Join normalized arrays back using row_number\n    final AS (\n        SELECT\n            s.developer_id,\n            s.doc_id,\n            s.index,\n            s.title,\n            s.content,\n            1.0 - (\n                text_weight      * norm_text_scores[s.rn] +\n                embedding_weight * norm_embedding_scores[s.rn]\n            ) AS distance,\n            s.embedding,\n            s.metadata,\n            s.owner_type,\n            s.owner_id\n        FROM scores_ordered s\n        CROSS JOIN normed_arrays\n        ORDER BY distance ASC\n        LIMIT p_k\n    )\n    SELECT * FROM final;\nEND;\n$$;\n\nCOMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search using Distribution-Based Score Fusion (DBSF)';\nDROP FUNCTION IF EXISTS embed_and_search_hybrid;\n\n-- Revert the embed_and_search_hybrid function to its original form\nCREATE OR REPLACE FUNCTION embed_and_search_hybrid (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    alpha float DEFAULT 0.7,\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    search_language text DEFAULT 'english_unaccent',\n    embedding_provider text DEFAULT 'openai',\n    embedding_model text DEFAULT 'text-embedding-3-large',\n    input_type text DEFAULT 'query',\n    api_key text DEFAULT NULL,\n    api_key_name text DEFAULT NULL\n) RETURNS SETOF doc_search_result AS $$\nDECLARE\n    query_embedding vector(1024);\nBEGIN\n    -- Get embedding for the query\n    query_embedding := embed_with_cache(\n        embedding_provider,\n        embedding_model,\n        query_text,\n        input_type,\n        api_key,\n        api_key_name\n    );\n\n    -- Call the search_hybrid function with the embedding\n    RETURN QUERY\n    SELECT * FROM search_hybrid(\n        developer_id,\n        query_text,\n        query_embedding,\n        owner_types,\n        owner_ids,\n        k,\n        alpha,\n        confidence,\n        metadata_filter,\n        search_language\n    );\nEND;\n$$ LANGUAGE plpgsql;\n"
  },
  {
    "path": "src/memory-store/migrations/000031_add_trigram_search.up.sql",
    "content": "-- Enable the pg_trgm extension if not already enabled\nCREATE EXTENSION IF NOT EXISTS pg_trgm;\n\n-- Add trigram indexes if not already present\nCREATE INDEX IF NOT EXISTS idx_docs_title_trgm ON docs USING GIN (title gin_trgm_ops);\nCREATE INDEX IF NOT EXISTS idx_docs_content_trgm ON docs USING GIN (content gin_trgm_ops);\n\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, float);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[]);\n\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english_unaccent',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL,\n    similarity_threshold float DEFAULT 0.6\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    -- Convert query to tsquery\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    RETURN QUERY EXECUTE \n        'WITH tsv_results AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                ts_rank_cd(d.search_tsv, $1, 32)::double precision as tsv_score,\n                e.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs d\n            LEFT JOIN docs_embeddings e\n                ON e.developer_id = d.developer_id\n                AND e.doc_id = d.doc_id\n                AND e.index = d.index\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $2\n            AND d.search_tsv @@ $1\n            AND (array_length($3, 1) IS NULL OR doc_owners.owner_type = ANY($3))\n            AND (array_length($4, 1) IS NULL OR doc_owners.owner_id = ANY($4))\n            AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n        ),\n        trigram_results AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                GREATEST(\n                    similarity(d.title, $6),\n                    similarity(d.content, $6)\n                )::double precision as trigram_score,\n                e.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs d\n            LEFT JOIN docs_embeddings e\n                ON e.developer_id = d.developer_id\n                AND e.doc_id = d.doc_id\n                AND e.index = d.index\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $2\n            AND GREATEST(\n                similarity(d.title, $6),\n                similarity(d.content, $6)\n            ) > $7\n            AND (array_length($3, 1) IS NULL OR doc_owners.owner_type = ANY($3))\n            AND (array_length($4, 1) IS NULL OR doc_owners.owner_id = ANY($4))\n            AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n            AND NOT EXISTS (\n                SELECT 1 FROM tsv_results tr \n                WHERE tr.doc_id = d.doc_id AND tr.index = d.index\n            )\n        ),\n        combined_results AS (\n            SELECT *, tsv_score as score, 1 as source FROM tsv_results\n            UNION ALL\n            SELECT *, trigram_score as score, 2 as source FROM trigram_results\n        )\n        SELECT \n            developer_id,\n            doc_id,\n            index,\n            title,\n            content,\n            score as distance,\n            embedding,\n            metadata,\n            owner_type,\n            owner_id\n        FROM combined_results\n        ORDER BY score DESC\n        LIMIT $8'\n    USING\n        ts_query,\n        developer_id,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        query_text,\n        similarity_threshold,\n        k;\nEND;\n$$;\n\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb, text, float, integer);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb, text);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer);\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[]);\n\n-- Update the hybrid search function to use trigram similarity as well\nCREATE OR REPLACE FUNCTION search_hybrid (\n    p_developer_id UUID,\n    p_query_text text,\n    p_query_embedding vector (1024),\n    p_owner_types TEXT[],\n    p_owner_ids UUID [],\n    p_k integer DEFAULT 3,\n    p_alpha float DEFAULT 0.7, -- Weight for embedding results\n    p_confidence float DEFAULT 0.5,\n    p_metadata_filter jsonb DEFAULT NULL,\n    p_search_language text DEFAULT 'english_unaccent',\n    p_similarity_threshold float DEFAULT 0.6,\n    k_multiplier integer DEFAULT 5\n) RETURNS SETOF doc_search_result\nLANGUAGE plpgsql AS\n$$\nDECLARE\n    text_weight float := 1.0 - p_alpha;\n    embedding_weight float := p_alpha;\n    intermediate_limit integer := p_k * k_multiplier;\nBEGIN\n    /*\n       1) Get top-N results from text search.\n       2) Get top-N results from vector search.\n       3) UNION them and pick the highest-distance row per doc_id (DISTINCT ON).\n       4) Join those rows back to each sub-result to get text_score and embedding_score.\n       5) Aggregate text & embedding scores once, dbsf_normalize once, then map them back by row_number.\n    */\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT *\n        FROM search_by_text(\n            developer_id => p_developer_id,\n            query_text => p_query_text,\n            owner_types => p_owner_types,\n            owner_ids => p_owner_ids,\n            search_language => p_search_language,\n            k => intermediate_limit,\n            metadata_filter => p_metadata_filter,\n            similarity_threshold => p_similarity_threshold\n        )\n    ),\n    embedding_results AS (\n        SELECT *\n        FROM search_by_vector(\n            developer_id => p_developer_id,\n            query_embedding => p_query_embedding,\n            owner_types => p_owner_types,\n            owner_ids => p_owner_ids,\n            k => intermediate_limit,\n            confidence => p_confidence,\n            metadata_filter => p_metadata_filter\n        )\n    ),\n\n    -- UNION both sets, pick highest distance row per doc_id\n    all_results AS (\n        SELECT DISTINCT ON (doc_id)\n               developer_id,\n               doc_id,\n               index,\n               title,\n               content,\n               distance,\n               embedding,\n               metadata,\n               owner_type,\n               owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION ALL\n            SELECT * FROM embedding_results\n        ) combined\n        ORDER BY doc_id, distance DESC\n    ),\n\n    -- Gather text_score & embedding_score for each doc\n    scores AS (\n        SELECT\n            a.developer_id,\n            a.doc_id,\n            a.index,\n            a.title,\n            a.content,\n            a.embedding,\n            a.metadata,\n            a.owner_type,\n            a.owner_id,\n            COALESCE(t.distance, 0.0) AS text_score,\n            COALESCE(e.distance, 0.0) AS embedding_score\n        FROM all_results a\n        LEFT JOIN text_results      t ON a.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON a.doc_id = e.doc_id\n    ),\n\n    -- Give each row a stable ordering\n    scores_ordered AS (\n        SELECT\n            s.*,\n            ROW_NUMBER() OVER (ORDER BY s.doc_id) AS rn\n        FROM scores s\n    ),\n\n    -- Aggregate all text/embedding scores into arrays\n    aggregated AS (\n        SELECT\n            array_agg(text_score ORDER BY rn)      AS text_scores,\n            array_agg(embedding_score ORDER BY rn) AS embedding_scores\n        FROM scores_ordered\n    ),\n\n    -- Normalize once for each array\n    normed_arrays AS (\n        SELECT\n            dbsf_normalize(text_scores)      AS norm_text_scores,\n            dbsf_normalize(embedding_scores) AS norm_embedding_scores\n        FROM aggregated\n    ),\n\n    -- Join normalized arrays back using row_number\n    final AS (\n        SELECT\n            s.developer_id,\n            s.doc_id,\n            s.index,\n            s.title,\n            s.content,\n            1.0 - (\n                text_weight      * norm_text_scores[s.rn] +\n                embedding_weight * norm_embedding_scores[s.rn]\n            ) AS distance,\n            s.embedding,\n            s.metadata,\n            s.owner_type,\n            s.owner_id\n        FROM scores_ordered s\n        CROSS JOIN normed_arrays\n        ORDER BY distance ASC\n        LIMIT p_k\n    )\n    SELECT * FROM final;\nEND;\n$$;\n\nCOMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search using Distribution-Based Score Fusion (DBSF)';\n\nDROP FUNCTION IF EXISTS embed_and_search_hybrid;\n\n-- Update the embed_and_search_hybrid function to use the updated search_hybrid function\nCREATE OR REPLACE FUNCTION embed_and_search_hybrid (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    alpha float DEFAULT 0.7,\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    search_language text DEFAULT 'english_unaccent',\n    embedding_provider text DEFAULT 'openai',\n    embedding_model text DEFAULT 'text-embedding-3-large',\n    input_type text DEFAULT 'query',\n    api_key text DEFAULT NULL,\n    api_key_name text DEFAULT NULL,\n    similarity_threshold float DEFAULT 0.6\n) RETURNS SETOF doc_search_result AS $$\nDECLARE\n    query_embedding vector(1024);\nBEGIN\n    -- Get embedding for the query\n    query_embedding := embed_with_cache(\n        embedding_provider,\n        embedding_model,\n        query_text,\n        input_type,\n        api_key,\n        api_key_name\n    );\n\n    -- Call the search_hybrid function with the embedding\n    RETURN QUERY\n    SELECT * FROM search_hybrid(\n        developer_id,\n        query_text,\n        query_embedding,\n        owner_types,\n        owner_ids,\n        k,\n        alpha,\n        confidence,\n        metadata_filter,\n        search_language,\n        similarity_threshold\n    );\nEND;\n$$ LANGUAGE plpgsql; "
  },
  {
    "path": "src/memory-store/migrations/000032_enhance_trigram_search.down.sql",
    "content": "-- Drop the comprehensive similarity function\nDROP FUNCTION IF EXISTS comprehensive_similarity;\n\n-- Drop the word similarity function\nDROP FUNCTION IF EXISTS fuzzy_word_similarity;\n\n-- Drop the enhanced similarity function\nDROP FUNCTION IF EXISTS enhanced_similarity;\n\n-- Drop the additional indexes we created\nDROP INDEX IF EXISTS idx_docs_lookup;\nDROP INDEX IF EXISTS idx_doc_owners_search;\n\n-- Restore the original search_by_text function from 000031\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, float);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[]);\n\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english_unaccent',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL,\n    similarity_threshold float DEFAULT 0.6\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    -- Convert query to tsquery\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    RETURN QUERY EXECUTE \n        'WITH tsv_results AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                ts_rank_cd(d.search_tsv, $1, 32)::double precision as tsv_score,\n                e.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs d\n            LEFT JOIN docs_embeddings e\n                ON e.developer_id = d.developer_id\n                AND e.doc_id = d.doc_id\n                AND e.index = d.index\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $2\n            AND d.search_tsv @@ $1\n            AND (array_length($3, 1) IS NULL OR doc_owners.owner_type = ANY($3))\n            AND (array_length($4, 1) IS NULL OR doc_owners.owner_id = ANY($4))\n            AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n        ),\n        trigram_results AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                GREATEST(\n                    similarity(d.title, $6),\n                    similarity(d.content, $6)\n                )::double precision as trigram_score,\n                e.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs d\n            LEFT JOIN docs_embeddings e\n                ON e.developer_id = d.developer_id\n                AND e.doc_id = d.doc_id\n                AND e.index = d.index\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $2\n            AND GREATEST(\n                similarity(d.title, $6),\n                similarity(d.content, $6)\n            ) > $7\n            AND (array_length($3, 1) IS NULL OR doc_owners.owner_type = ANY($3))\n            AND (array_length($4, 1) IS NULL OR doc_owners.owner_id = ANY($4))\n            AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n            AND NOT EXISTS (\n                SELECT 1 FROM tsv_results tr \n                WHERE tr.doc_id = d.doc_id AND tr.index = d.index\n            )\n        ),\n        combined_results AS (\n            SELECT *, tsv_score as score, 1 as source FROM tsv_results\n            UNION ALL\n            SELECT *, trigram_score as score, 2 as source FROM trigram_results\n        )\n        SELECT \n            developer_id,\n            doc_id,\n            index,\n            title,\n            content,\n            score as distance,\n            embedding,\n            metadata,\n            owner_type,\n            owner_id\n        FROM combined_results\n        ORDER BY score DESC\n        LIMIT $8'\n    USING\n        ts_query,\n        developer_id,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        query_text,\n        similarity_threshold,\n        k;\nEND;\n$$;\n\nCOMMENT ON FUNCTION search_by_text IS 'Search documents using full-text search with configurable language and filtering options';"
  },
  {
    "path": "src/memory-store/migrations/000032_enhance_trigram_search.up.sql",
    "content": "-- Add fuzzystrmatch extension if not already enabled\nCREATE EXTENSION IF NOT EXISTS fuzzystrmatch;\n\n-- Add Levenshtein-enhanced similarity function\nCREATE OR REPLACE FUNCTION enhanced_similarity(text1 text, text2 text)\nRETURNS float AS $$\nDECLARE\n    trgm_sim float := similarity(text1, text2);\n    lev_dist int;\n    norm_lev float;\nBEGIN\n    -- Only compute Levenshtein for reasonable length strings (performance)\n    IF length(text1) <= 50 AND length(text2) <= 50 THEN\n        lev_dist := levenshtein_less_equal(text1, text2, 3);\n        -- Handle case where edit distance exceeds threshold (returns NULL)\n        IF lev_dist IS NULL THEN\n            RETURN trgm_sim; -- Fall back to trigram similarity\n        END IF;\n        norm_lev := 1.0 - LEAST(lev_dist::float / 5.0, 1.0);\n        -- Combine scores (70% trigram, 30% levenshtein)\n        RETURN 0.7 * trgm_sim + 0.3 * norm_lev;\n    ELSE\n        -- For longer strings, just use trigram similarity\n        RETURN trgm_sim;\n    END IF;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Add word-level similarity function\nCREATE OR REPLACE FUNCTION fuzzy_word_similarity(text1 text, text2 text)\nRETURNS float AS $$\nDECLARE\n    words1 text[];\n    words2 text[];\n    i int;\n    j int;\n    best_match float;\n    match_sum float := 0;\n    word_count int := 0;\nBEGIN\n    -- Split into words\n    words1 := regexp_split_to_array(lower(text1), '\\s+');\n    words2 := regexp_split_to_array(lower(text2), '\\s+');\n\n    -- For each meaningful word in query\n    IF words1 IS NOT NULL AND words2 IS NOT NULL THEN\n        FOR i IN 1..array_length(words1, 1) LOOP\n            -- Only process meaningful words (longer than 2 chars)\n            IF length(words1[i]) > 2 THEN\n                best_match := 0;\n\n                -- Find best match in target content\n                FOR j IN 1..array_length(words2, 1) LOOP\n                    IF length(words2[j]) > 2 THEN\n                        best_match := GREATEST(best_match, similarity(words1[i], words2[j]));\n                    END IF;\n                END LOOP;\n\n                match_sum := match_sum + best_match;\n                word_count := word_count + 1;\n            END IF;\n        END LOOP;\n\n        -- Return average word similarity\n        IF word_count > 0 THEN\n            RETURN match_sum / word_count;\n        END IF;\n    END IF;\n\n    RETURN 0;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create a comprehensive similarity function that combines approaches\nCREATE OR REPLACE FUNCTION comprehensive_similarity(title text, content text, query text)\nRETURNS float AS $$\nDECLARE\n    -- Get trigram score (highest between title and content)\n    trgm_sim float := GREATEST(\n        enhanced_similarity(title, query),\n        enhanced_similarity(content, query)\n    );\n\n    -- Get word-level score\n    word_sim float := GREATEST(\n        fuzzy_word_similarity(title, query),\n        fuzzy_word_similarity(content, query)\n    );\n\n    -- Weight factor based on query length - shorter queries need more help\n    word_weight float := CASE\n        WHEN length(query) < 10 THEN 0.4\n        WHEN length(query) < 20 THEN 0.3\n        ELSE 0.2\n    END;\n\n    -- Complementary weight for trigram\n    trgm_weight float := 1.0 - word_weight;\nBEGIN\n    -- Weight the different approaches\n    RETURN trgm_weight * trgm_sim + word_weight * word_sim;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create additional indexes for improved search performance\nCREATE INDEX IF NOT EXISTS idx_docs_lookup ON docs (developer_id, doc_id, index);\n\nCREATE INDEX IF NOT EXISTS idx_doc_owners_search ON doc_owners (doc_id, developer_id, owner_type, owner_id);\n\n-- Update search_by_text function to use comprehensive similarity\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, float);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text);\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[]);\n\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english_unaccent',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL,\n    similarity_threshold float DEFAULT 0.6\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    -- Convert query to tsquery\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    RETURN QUERY EXECUTE\n        'WITH tsv_results AS MATERIALIZED (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                ts_rank_cd(d.search_tsv, $1, 32)::double precision as tsv_score,\n                e.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs d\n            LEFT JOIN docs_embeddings e\n                ON e.developer_id = d.developer_id\n                AND e.doc_id = d.doc_id\n                AND e.index = d.index\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $2\n            AND d.search_tsv @@ $1\n            AND (array_length($3, 1) IS NULL OR doc_owners.owner_type = ANY($3))\n            AND (array_length($4, 1) IS NULL OR doc_owners.owner_id = ANY($4))\n            AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n        ),\n        trigram_results AS MATERIALIZED (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                comprehensive_similarity(d.title, d.content, $6)::double precision as trigram_score,\n                e.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs d\n            LEFT JOIN docs_embeddings e\n                ON e.developer_id = d.developer_id\n                AND e.doc_id = d.doc_id\n                AND e.index = d.index\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $2\n            AND comprehensive_similarity(d.title, d.content, $6) > $7\n            AND (array_length($3, 1) IS NULL OR doc_owners.owner_type = ANY($3))\n            AND (array_length($4, 1) IS NULL OR doc_owners.owner_id = ANY($4))\n            AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n            AND NOT EXISTS (\n                SELECT 1 FROM tsv_results tr\n                WHERE tr.doc_id = d.doc_id AND tr.index = d.index\n            )\n        ),\n        combined_results AS MATERIALIZED (\n            SELECT *, tsv_score as score, 1 as source FROM tsv_results\n            UNION ALL\n            SELECT *, trigram_score as score, 2 as source FROM trigram_results\n        )\n        SELECT\n            developer_id,\n            doc_id,\n            index,\n            title,\n            content,\n            score as distance,\n            embedding,\n            metadata,\n            owner_type,\n            owner_id\n        FROM combined_results\n        ORDER BY score DESC\n        LIMIT $8'\n    USING\n        ts_query,\n        developer_id,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        query_text,\n        similarity_threshold,\n        k;\nEND;\n$$;\n\nCOMMENT ON FUNCTION search_by_text IS 'Search documents using full-text search and enhanced fuzzy matching with configurable language and filtering options';\n\n-- No need to modify the search_hybrid function as it will automatically use the updated search_by_text function"
  },
  {
    "path": "src/memory-store/migrations/000033_fix_latest_transitions.down.sql",
    "content": "BEGIN;\n\n/*\n * REVERT FIX FOR LATEST_TRANSITIONS CONTINUOUS AGGREGATE\n * \n * This migration reverts the fix for the latest_transitions continuous aggregate view.\n * We restore the original view definition from migration 000013.\n */\n\n-- Drop existing continuous aggregate policy\nDO $$\nBEGIN\n    BEGIN\n        SELECT remove_continuous_aggregate_policy('latest_transitions');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during remove_continuous_aggregate_policy(latest_transitions): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\n-- Drop the existing views\nDROP VIEW IF EXISTS latest_executions;\nDROP MATERIALIZED VIEW IF EXISTS latest_transitions;\n\n-- Create a continuous view that aggregates the transitions table with the original workflows join\nCREATE MATERIALIZED VIEW IF NOT EXISTS latest_transitions\nWITH\n    (\n        timescaledb.continuous,\n        timescaledb.materialized_only = FALSE\n    ) AS\nSELECT\n    time_bucket ('1 day', t.created_at) AS bucket,\n    t.execution_id,\n    last (t.transition_id, t.created_at) AS transition_id,\n    count(*) AS transition_count,\n    max(t.created_at) AS created_at,\n    last (t.type, t.created_at) AS type,\n    last (t.step_label, t.created_at) AS step_label,\n    last (t.current_step, t.created_at) AS current_step,\n    last (t.next_step, t.created_at) AS next_step,\n    last (t.output, t.created_at) AS output,\n    last (t.task_token, t.created_at) AS task_token,\n    last (t.metadata, t.created_at) AS metadata,\n    last (e.task_id, e.created_at) AS task_id,\n    last (e.task_version, e.created_at) AS task_version,\n    last (w.step_definition, e.created_at) AS step_definition\nFROM\n    transitions t\n    JOIN executions e ON t.execution_id = e.execution_id\n    JOIN workflows w ON e.task_id = w.task_id\n    AND e.task_version = w.version\n    AND w.step_idx = (t.current_step).step_index\n    AND w.name = (t.current_step).workflow_name\nGROUP BY\n    bucket,\n    t.execution_id\nWITH\n    no data;\n\n-- Add the continuous aggregate policy\nSELECT\n    add_continuous_aggregate_policy (\n        'latest_transitions',\n        start_offset => NULL,\n        end_offset => INTERVAL '10 minutes',\n        schedule_interval => INTERVAL '10 minutes'\n    );\n\n-- Recreate the latest_executions view with step_definition\nCREATE OR REPLACE VIEW latest_executions AS\nSELECT\n    e.developer_id,\n    e.task_id,\n    e.task_version,\n    e.execution_id,\n    e.input,\n    e.metadata,\n    e.created_at,\n    coalesce(lt.created_at, e.created_at) AS updated_at,\n    CASE\n        WHEN lt.type::text IS NULL THEN 'queued'\n        WHEN lt.type::text = 'init' THEN 'starting'\n        WHEN lt.type::text = 'init_branch' THEN 'running'\n        WHEN lt.type::text = 'wait' THEN 'awaiting_input'\n        WHEN lt.type::text = 'resume' THEN 'running'\n        WHEN lt.type::text = 'step' THEN 'running'\n        WHEN lt.type::text = 'finish' THEN 'succeeded'\n        WHEN lt.type::text = 'finish_branch' THEN 'running'\n        WHEN lt.type::text = 'error' THEN 'failed'\n        WHEN lt.type::text = 'cancelled' THEN 'cancelled'\n        ELSE 'queued'\n    END AS status,\n    CASE\n        WHEN lt.type::text = 'error' THEN lt.output ->> 'error'\n        ELSE NULL\n    END AS error,\n    coalesce(lt.transition_count, 0) AS transition_count,\n    coalesce(lt.output, '{}'::jsonb) AS output,\n    lt.current_step,\n    lt.next_step,\n    lt.step_definition,\n    lt.step_label,\n    lt.task_token,\n    lt.metadata AS transition_metadata\nFROM\n    executions e\n    LEFT JOIN latest_transitions lt ON e.execution_id = lt.execution_id;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000033_fix_latest_transitions.up.sql",
    "content": "BEGIN;\n\n/*\n * FIX FOR LATEST_TRANSITIONS CONTINUOUS AGGREGATE\n * \n * This migration fixes an issue with the latest_transitions continuous aggregate view\n * where the join on the workflows table was causing empty rows when transitions were of\n * type 'finish' or 'error' since there's no step definition available for these states.\n * \n * We remove the join on the workflows table and the step_definition column from the view.\n */\n\n-- Drop existing continuous aggregate policy\nDO $$\nBEGIN\n    BEGIN\n        SELECT remove_continuous_aggregate_policy('latest_transitions');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during remove_continuous_aggregate_policy(latest_transitions): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\n-- Drop the existing views\nDROP VIEW IF EXISTS latest_executions;\nDROP MATERIALIZED VIEW IF EXISTS latest_transitions;\n\n-- Create a continuous view that aggregates the transitions table without the workflows join\nCREATE MATERIALIZED VIEW IF NOT EXISTS latest_transitions\nWITH\n    (\n        timescaledb.continuous,\n        timescaledb.materialized_only = FALSE\n    ) AS\nSELECT\n    time_bucket ('1 day', t.created_at) AS bucket,\n    t.execution_id,\n    last (t.transition_id, t.created_at) AS transition_id,\n    count(*) AS transition_count,\n    max(t.created_at) AS created_at,\n    last (t.type, t.created_at) AS type,\n    last (t.step_label, t.created_at) AS step_label,\n    last (t.current_step, t.created_at) AS current_step,\n    last (t.next_step, t.created_at) AS next_step,\n    last (t.output, t.created_at) AS output,\n    last (t.task_token, t.created_at) AS task_token,\n    last (t.metadata, t.created_at) AS metadata,\n    last (e.task_id, e.created_at) AS task_id,\n    last (e.task_version, e.created_at) AS task_version\nFROM\n    transitions t\n    JOIN executions e ON t.execution_id = e.execution_id\nGROUP BY\n    bucket,\n    t.execution_id\nWITH\n    no data;\n\n-- Add the continuous aggregate policy\nSELECT\n    add_continuous_aggregate_policy (\n        'latest_transitions',\n        start_offset => NULL,\n        end_offset => INTERVAL '10 minutes',\n        schedule_interval => INTERVAL '10 minutes'\n    );\n\n-- Recreate the latest_executions view without step_definition\nCREATE OR REPLACE VIEW latest_executions AS\nSELECT\n    e.developer_id,\n    e.task_id,\n    e.task_version,\n    e.execution_id,\n    e.input,\n    e.metadata,\n    e.created_at,\n    coalesce(lt.created_at, e.created_at) AS updated_at,\n    CASE\n        WHEN lt.type::text IS NULL THEN 'queued'\n        WHEN lt.type::text = 'init' THEN 'starting'\n        WHEN lt.type::text = 'init_branch' THEN 'running'\n        WHEN lt.type::text = 'wait' THEN 'awaiting_input'\n        WHEN lt.type::text = 'resume' THEN 'running'\n        WHEN lt.type::text = 'step' THEN 'running'\n        WHEN lt.type::text = 'finish' THEN 'succeeded'\n        WHEN lt.type::text = 'finish_branch' THEN 'running'\n        WHEN lt.type::text = 'error' THEN 'failed'\n        WHEN lt.type::text = 'cancelled' THEN 'cancelled'\n        ELSE 'queued'\n    END AS status,\n    CASE\n        WHEN lt.type::text = 'error' THEN lt.output ->> 'error'\n        ELSE NULL\n    END AS error,\n    coalesce(lt.transition_count, 0) AS transition_count,\n    coalesce(lt.output, '{}'::jsonb) AS output,\n    lt.current_step,\n    lt.next_step,\n    lt.step_label,\n    lt.task_token,\n    lt.metadata AS transition_metadata\nFROM\n    executions e\n    LEFT JOIN latest_transitions lt ON e.execution_id = lt.execution_id;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000034_switch_to_hypercore.down.sql",
    "content": "BEGIN;\n\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            remove_compression_policy ('entries');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during remove_compression_policy(entries): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            remove_compression_policy ('transitions');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during remove_compression_policy(transitions): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        ALTER TABLE entries\n        SET\n            (timescaledb.compress = FALSE);\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during unsetting entries.compress: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        ALTER TABLE transitions\n        SET\n            (timescaledb.compress = FALSE);\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during unsetting transitions.compress: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000034_switch_to_hypercore.up.sql",
    "content": "BEGIN;\n\nDO $$\nBEGIN\n    BEGIN\n        ALTER TABLE entries\n            SET (\n                timescaledb.compress = TRUE,\n                timescaledb.compress_segmentby = 'session_id',\n                timescaledb.compress_orderby = 'created_at DESC, entry_id DESC',\n                timescaledb.compress_chunk_time_interval = '28 days'\n            );\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during entries.compress: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            add_compression_policy ('entries', INTERVAL '7 days');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during add_compression_policy(entries): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        ALTER TABLE transitions\n        SET\n            (\n                timescaledb.compress = TRUE,\n                timescaledb.compress_segmentby = 'execution_id',\n                timescaledb.compress_orderby = 'created_at DESC, transition_id DESC',\n                timescaledb.compress_chunk_time_interval = '28 days'\n            );\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during transitions.compress: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDO $$\nBEGIN\n    BEGIN\n        SELECT\n            add_compression_policy ('transitions', INTERVAL '7 days');\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during add_compression_policy(transitions): %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000035_enhanced_indices.down.sql",
    "content": "---- Transitions\n\n-- Drop new indices\nDO $$\nBEGIN\n  DROP index if exists idx_transitions_execution_id;\n\n  DROP index if exists idx_executions_created_at_covering;\n\n  DROP index if exists idx_transitions_created_at;\nEND $$;\n\n-- Temporarily disable compression (for unique index creation)\n-- ALTER TABLE transitions SET (timescaledb.compress = false);\n\n-- COMMENTED OUT TO AVOID DECOMRESSING AND COMPRESSING THE TABLE\n\n-- Restore old indices\nDO $$\nBEGIN\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_transitions_metadata') THEN\n        CREATE INDEX idx_transitions_metadata ON transitions USING GIN (metadata);\n    END IF;\n\n    -- IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_transitions_label') THEN\n    --     CREATE UNIQUE INDEX idx_transitions_label ON transitions USING btree (execution_id, step_label, created_at DESC)\n    --     WHERE (step_label IS NOT NULL);\n    -- END IF;\n\n    -- IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_transitions_next') THEN\n    --     CREATE UNIQUE INDEX idx_transitions_next ON transitions USING btree (execution_id, next_step, created_at DESC)\n    --     WHERE (next_step IS NOT NULL);\n    -- END IF;\n\n    -- IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'idx_transitions_current') THEN\n    --     CREATE UNIQUE INDEX idx_transitions_current ON transitions USING btree (execution_id, current_step, created_at DESC);\n    -- END IF;\n\n    IF NOT EXISTS (SELECT 1 FROM pg_indexes WHERE indexname = 'transitions_created_at_idx') THEN\n        CREATE INDEX transitions_created_at_idx ON transitions USING btree (created_at DESC);\n    END IF;\nEND $$;\n\n-- Re-enable compression\n-- ALTER TABLE transitions SET (timescaledb.compress = true);\n\n---- Entries\n\n-- Drop new indices\nDO $$\nBEGIN\n    DROP index if exists idx_entries_session_id;\n\n    DROP index if exists idx_entries_created_at;\n\n    DROP index if exists idx_sessions_created_at_covering;\nEND $$;\n\n-- Restore old indices\nDO $$\nBEGIN\n    CREATE INDEX IF NOT EXISTS idx_entries_by_session ON entries (session_id DESC);\n\n    CREATE INDEX IF NOT EXISTS entries_created_at_idx ON entries USING btree (created_at DESC);\nEND $$;\n"
  },
  {
    "path": "src/memory-store/migrations/000035_enhanced_indices.up.sql",
    "content": "---- Transitions\n\n-- Drop old indices\nDO $$\nBEGIN\n  DROP index if exists idx_transitions_label;\n\n  DROP index if exists idx_transitions_metadata;\n\n  DROP index if exists idx_transitions_next;\n\n  DROP index if exists idx_transitions_current;\n\n  DROP index if exists transitions_created_at_idx;\nEND $$;\n\n-- Create new indices\nDO $$\nBEGIN\n  CREATE INDEX if not exists \n    idx_transitions_execution_id ON transitions USING btree (created_at DESC, execution_id DESC);\n\n  CREATE INDEX if not exists idx_transitions_created_at ON transitions USING btree (created_at DESC);\n\n  CREATE INDEX if not exists idx_executions_created_at_covering\n    ON executions (created_at DESC)\n    INCLUDE (execution_id);\nEND $$;\n\n---- Entries\n\n-- Drop old indices\nDO $$\nBEGIN\n  DROP index if exists idx_entries_by_session;\n  DROP index if exists entries_created_at_idx;\nEND $$;\n\n-- Create new indices\nDO $$\nBEGIN\n  CREATE INDEX if not exists idx_entries_session_id ON entries (created_at DESC, session_id DESC);\n  \n  CREATE INDEX if not exists idx_entries_created_at ON entries (created_at DESC);\n\n  CREATE INDEX if not exists idx_sessions_created_at_covering \n    ON sessions (created_at DESC)\n    INCLUDE (session_id);\nEND $$;"
  },
  {
    "path": "src/memory-store/migrations/000036_usage.down.sql",
    "content": "BEGIN;\n\n-- Drop the usage table (this will also remove it from hypertables)\nDO $$\nBEGIN\n    BEGIN\n        DELETE FROM usage;\n    EXCEPTION\n        WHEN others THEN\n            RAISE NOTICE 'An error occurred during deleting all from usage: %, %', SQLSTATE, SQLERRM;\n    END;\nEND $$;\n\nDROP TABLE IF EXISTS usage;\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000036_usage.up.sql",
    "content": "BEGIN;\n\n-- Create usage table to track token usage and costs\nCREATE TABLE IF NOT EXISTS usage (\n    developer_id UUID NOT NULL,\n    model TEXT NOT NULL,\n    prompt_tokens INTEGER NOT NULL CONSTRAINT ct_usage_prompt_tokens_positive CHECK (prompt_tokens >= 0),\n    completion_tokens INTEGER NOT NULL CONSTRAINT ct_usage_completion_tokens_positive CHECK (completion_tokens >= 0),\n    cost NUMERIC(10, 6) NOT NULL CONSTRAINT ct_usage_cost_positive CHECK (cost >= 0),\n    estimated BOOLEAN NOT NULL DEFAULT FALSE,\n    custom_api_used BOOLEAN NOT NULL DEFAULT FALSE,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB NOT NULL DEFAULT '{}'::JSONB,\n    CONSTRAINT fk_usage_developer FOREIGN KEY (developer_id) REFERENCES developers(developer_id),\n    CONSTRAINT ct_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object')\n);\n\n-- Convert to hypertable for time-series data\nSELECT\n    create_hypertable (\n        'usage',\n        by_range ('created_at', INTERVAL '1 day'),\n        if_not_exists => TRUE\n    );\n\nSELECT\n    add_dimension (\n        'usage',\n        by_hash ('developer_id', 2),\n        if_not_exists => TRUE\n    );\n\n-- Create indexes for common query patterns\nCREATE INDEX IF NOT EXISTS idx_usage_developer_model ON usage (developer_id, model, created_at DESC);\nCREATE INDEX IF NOT EXISTS idx_usage_model ON usage (model, created_at DESC);\nCREATE INDEX IF NOT EXISTS idx_usage_metadata ON usage USING GIN (metadata);\n\n-- Add comment to table\nCOMMENT ON TABLE usage IS 'Tracks token usage and costs by developer and model';\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000037_speed_up_search.down.sql",
    "content": "BEGIN;\n-- Reset work_mem to default (or a reasonable value)\nRESET work_mem;\n\n-- Drop indexes created in the up migration\nDROP INDEX IF EXISTS idx_doc_owners_agent_lookup;\nDROP INDEX IF EXISTS idx_doc_owners_lookup;\n\n-- Reset statistics\nALTER TABLE docs ALTER COLUMN title SET STATISTICS 100;\nALTER TABLE docs ALTER COLUMN content SET STATISTICS 100;\n\n-- Reset index settings\nALTER INDEX idx_docs_metadata SET (fastupdate=on);\nALTER INDEX idx_docs_search_tsv SET (fastupdate=on);\nALTER INDEX idx_docs_title_trgm SET (fastupdate=on);\nALTER INDEX idx_docs_content_trgm SET (fastupdate=on);\n\nEND;"
  },
  {
    "path": "src/memory-store/migrations/000037_speed_up_search.up.sql",
    "content": "BEGIN;\n\nalter table docs drop constraint if exists pk_docs CASCADE;\nalter table docs drop constraint if exists uq_docs_dev_doc_idx;\nalter table docs add constraint pk_docs primary key (developer_id, doc_id, index, created_at);\nalter table docs drop constraint if exists uq_doc_index;\nalter table docs add constraint uq_doc_index unique (doc_id, index, created_at);\n\nSELECT\n    create_hypertable (\n        'docs',\n        by_range ('created_at', INTERVAL '1 day'),\n        if_not_exists => TRUE,\n        migrate_data => TRUE\n    );\n\nalter index idx_docs_metadata set (fastupdate=off);\nalter index idx_docs_search_tsv set (fastupdate=off);\nalter index idx_docs_title_trgm set (fastupdate=off);\nalter index idx_docs_content_trgm set (fastupdate=off);\n\nALTER TABLE docs ALTER COLUMN title SET STATISTICS 1000;\nALTER TABLE docs ALTER COLUMN content SET STATISTICS 1000;\nCREATE INDEX idx_doc_owners_lookup \nON doc_owners(owner_type, owner_id, doc_id);\n\nSET work_mem = '32MB';\n\nCREATE INDEX idx_doc_owners_agent_lookup ON doc_owners(owner_type, owner_id, doc_id);\n\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english_unaccent',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL,\n    similarity_threshold float DEFAULT 0.6\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    -- Convert query to tsquery\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    SET work_mem = '32MB';\n\n    RETURN QUERY EXECUTE \n'WITH fts_results AS MATERIALIZED (\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    ts_rank_cd(d.search_tsv, $1, 32)::double precision AS tsv_score,\n    NULL::double precision AS trigram_score,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id,\n    d.updated_at,\n    /* Mark source=1 for FTS */\n    1 AS source\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2\n    -- Must pass FTS\n    AND d.search_tsv @@ $1\n    -- Filter by owners if needed\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) \n\n    \n),\ntrgm_candidates AS MATERIALIZED (\n  /*\n   * Get docs that fail the FTS pass but pass a broad trigram test\n   * i.e. (title % :search_text) or (content % :search_text)\n   * so it can use your GIN/GIST trigram indexes.\n   */\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    d.search_tsv,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id,\n    d.updated_at\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2::uuid\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n    -- A broad trigram match (index-friendly):\n    AND (d.title  %> $6\n         OR d.content %> $6)\n    -- Exclude anything that was already in the FTS set:\n    AND NOT EXISTS (\n      SELECT 1\n      FROM fts_results f\n      WHERE f.doc_id = d.doc_id\n        AND f.index = d.index\n    )\n),\ntrgm_scored AS (\n  /*\n   * Only now do the heavy comprehensive_similarity check,\n   * but only for these trigram candidates.\n   */\n  SELECT\n    t.developer_id,\n    t.doc_id,\n    t.index,\n    t.title,\n    t.content,\n    NULL::double precision AS tsv_score,\n    comprehensive_similarity(t.title, t.content, $6)::double precision AS trigram_score,\n    t.embedding,\n    t.metadata,\n    t.owner_type,\n    t.owner_id,\n    t.updated_at,\n    2 AS source\n  FROM trgm_candidates t\n  WHERE comprehensive_similarity(t.title, t.content, $6) > $7\n),\ncombined AS (\n  /*\n   * Union the two sets:\n   *   - FTS matches (fts_results) => \"score\" is tsv_score\n   *   - Trigram-only matches => \"score\" is trigram_score\n   */\n  SELECT\n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    COALESCE(tsv_score, trigram_score) AS score,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\n  FROM fts_results\n\n  UNION ALL\n\n  SELECT\n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    COALESCE(tsv_score, trigram_score) AS score,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\n  FROM trgm_scored\n)\nSELECT *\nFROM combined\nORDER BY score DESC\nLIMIT $8'\n\n    USING\n        ts_query,\n        developer_id,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        query_text,\n        similarity_threshold,\n        k;\nEND;\n$$;\n\nEND;"
  },
  {
    "path": "src/memory-store/migrations/000038_usage_cost_monthly.down.sql",
    "content": "BEGIN;\n\n-- Remove the continuous aggregate policy\nSELECT remove_continuous_aggregate_policy('usage_cost_monthly');\n\n-- Drop the view\nDROP VIEW IF EXISTS developer_cost_monthly;\n\n-- Drop the continuous aggregate with CASCADE to remove any dependent objects (like the index)\nDROP MATERIALIZED VIEW IF EXISTS usage_cost_monthly CASCADE;\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000038_usage_cost_monthly.up.sql",
    "content": "-- Create continuous aggregate for monthly cost per developer with real-time data\nCREATE MATERIALIZED VIEW usage_cost_monthly\nWITH (timescaledb.continuous, timescaledb.materialized_only=false) AS\nSELECT\n    developer_id,\n    time_bucket('1 month', created_at) AS bucket_start,\n    SUM(cost) FILTER (WHERE NOT custom_api_used) AS monthly_cost\nFROM usage\nGROUP BY developer_id, bucket_start\nWITH NO DATA;\n\n-- Create index for efficient querying\nCREATE INDEX IF NOT EXISTS idx_usage_cost_monthly_developer \nON usage_cost_monthly (developer_id, bucket_start DESC);\n\n-- Set up continuous aggregate policy to refresh every minute\n-- The refresh window must cover at least two buckets (months in this case)\nSELECT add_continuous_aggregate_policy(\n    'usage_cost_monthly',\n    start_offset => INTERVAL '3 months',\n    end_offset => INTERVAL '0 minute',\n    schedule_interval => INTERVAL '30 seconds'\n);\n\n-- Create view that joins with developers table for easy querying\nCREATE OR REPLACE VIEW developer_cost_monthly AS\nSELECT \n    m.bucket_start,\n    d.developer_id,\n    d.active,\n    d.tags,\n    m.monthly_cost\nFROM usage_cost_monthly AS m\nJOIN developers AS d USING (developer_id); "
  },
  {
    "path": "src/memory-store/migrations/000039_projects.down.sql",
    "content": "BEGIN;\n\n-- Drop triggers\nDROP TRIGGER IF EXISTS trg_prevent_default_project_deletion ON projects;\nDROP TRIGGER IF EXISTS trg_create_default_project ON developers;\n\n-- Drop functions\nDROP FUNCTION IF EXISTS prevent_default_project_deletion();\nDROP FUNCTION IF EXISTS create_default_project();\n\n-- Drop views\nDROP VIEW IF EXISTS project_docs;\nDROP VIEW IF EXISTS project_executions;\nDROP VIEW IF EXISTS project_tasks;\nDROP VIEW IF EXISTS project_sessions;\n\n-- Drop indexes\nDROP INDEX IF EXISTS idx_project_files_file;\nDROP INDEX IF EXISTS idx_project_users_user;\nDROP INDEX IF EXISTS idx_project_agents_agent;\nDROP INDEX IF EXISTS idx_projects_metadata;\nDROP INDEX IF EXISTS idx_projects_developer_id;\n\n-- Drop association tables\nDROP TABLE IF EXISTS project_files;\nDROP TABLE IF EXISTS project_users;\nDROP TABLE IF EXISTS project_agents;\n\n-- Drop main table\nDROP TABLE IF EXISTS projects;\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000039_projects.up.sql",
    "content": "BEGIN;\n\n-- Create projects table\nCREATE TABLE IF NOT EXISTS projects (\n    project_id UUID NOT NULL,\n    developer_id UUID NOT NULL,\n    canonical_name CITEXT NOT NULL CONSTRAINT ct_projects_canonical_name_length CHECK (\n        length(canonical_name) >= 1\n        AND length(canonical_name) <= 255\n    ),\n    name TEXT NOT NULL CONSTRAINT ct_projects_name_length CHECK (\n        length(name) >= 1\n        AND length(name) <= 255\n    ),\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB NOT NULL DEFAULT '{}'::JSONB,\n    CONSTRAINT pk_projects PRIMARY KEY (project_id),\n    CONSTRAINT uq_projects_developer_canonical_name UNIQUE (developer_id, canonical_name),\n    CONSTRAINT ct_projects_canonical_name_valid_identifier CHECK (canonical_name ~ '^[a-zA-Z][a-zA-Z0-9_]*$'),\n    CONSTRAINT ct_projects_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'),\n    CONSTRAINT fk_projects_developer FOREIGN KEY (developer_id) REFERENCES developers (developer_id)\n);\n\n-- Create project_agents association table\nCREATE TABLE IF NOT EXISTS project_agents (\n    project_id UUID NOT NULL,\n    developer_id UUID NOT NULL,\n    agent_id UUID NOT NULL,\n    CONSTRAINT pk_project_agents PRIMARY KEY (project_id, agent_id),\n    CONSTRAINT fk_project_agents_project FOREIGN KEY (project_id) REFERENCES projects (project_id) ON DELETE RESTRICT,\n    CONSTRAINT fk_project_agents_agent FOREIGN KEY (developer_id, agent_id) REFERENCES agents (developer_id, agent_id) ON DELETE CASCADE\n);\n\n-- Create project_users association table\nCREATE TABLE IF NOT EXISTS project_users (\n    project_id UUID NOT NULL,\n    developer_id UUID NOT NULL,\n    user_id UUID NOT NULL,\n    CONSTRAINT pk_project_users PRIMARY KEY (project_id, user_id),\n    CONSTRAINT fk_project_users_project FOREIGN KEY (project_id) REFERENCES projects (project_id) ON DELETE RESTRICT,\n    CONSTRAINT fk_project_users_user FOREIGN KEY (developer_id, user_id) REFERENCES users (developer_id, user_id) ON DELETE CASCADE\n);\n\n-- Create project_files association table\nCREATE TABLE IF NOT EXISTS project_files (\n    project_id UUID NOT NULL,\n    developer_id UUID NOT NULL,\n    file_id UUID NOT NULL,\n    CONSTRAINT pk_project_files PRIMARY KEY (project_id, file_id),\n    CONSTRAINT fk_project_files_project FOREIGN KEY (project_id) REFERENCES projects (project_id) ON DELETE RESTRICT,\n    CONSTRAINT fk_project_files_file FOREIGN KEY (developer_id, file_id) REFERENCES files (developer_id, file_id) ON DELETE CASCADE\n);\n\n-- Create project_sessions view\nCREATE OR REPLACE VIEW project_sessions AS\nWITH sessions_with_projects AS (\n    -- Sessions with agent participants that are in projects\n    SELECT DISTINCT\n        s.session_id,\n        s.developer_id,\n        p.project_id\n    FROM sessions s\n    JOIN session_lookup sl ON s.session_id = sl.session_id AND sl.participant_type = 'agent'\n    JOIN project_agents pa ON pa.developer_id = s.developer_id AND pa.agent_id = sl.participant_id\n    JOIN projects p ON pa.project_id = p.project_id\n    \n    UNION\n    \n    -- Sessions with user participants that are in projects\n    SELECT DISTINCT\n        s.session_id,\n        s.developer_id,\n        p.project_id\n    FROM sessions s\n    JOIN session_lookup sl ON s.session_id = sl.session_id AND sl.participant_type = 'user'\n    JOIN project_users pu ON pu.developer_id = s.developer_id AND pu.user_id = sl.participant_id\n    JOIN projects p ON pu.project_id = p.project_id\n)\nSELECT\n    s.session_id,\n    s.developer_id,\n    sp.project_id,\n    p.canonical_name AS project_canonical_name,\n    s.situation,\n    s.system_template,\n    s.metadata,\n    s.render_templates,\n    s.token_budget,\n    s.context_overflow,\n    s.forward_tool_calls,\n    s.recall_options,\n    s.created_at,\n    s.updated_at\nFROM sessions s\nJOIN sessions_with_projects sp ON s.session_id = sp.session_id AND s.developer_id = sp.developer_id\nJOIN projects p ON sp.project_id = p.project_id;\n\n-- Create project_tasks view\nCREATE OR REPLACE VIEW project_tasks AS\nSELECT\n    t.task_id,\n    t.developer_id,\n    p.project_id,\n    p.canonical_name AS project_canonical_name,\n    t.agent_id,\n    t.canonical_name,\n    t.name,\n    t.description,\n    t.input_schema,\n    t.inherit_tools,\n    t.metadata,\n    t.created_at,\n    t.updated_at,\n    t.version\nFROM tasks t\nJOIN agents a ON t.developer_id = a.developer_id AND t.agent_id = a.agent_id\nJOIN project_agents pa ON a.developer_id = pa.developer_id AND a.agent_id = pa.agent_id\nJOIN projects p ON pa.project_id = p.project_id;\n\n-- Create project_executions view\nCREATE OR REPLACE VIEW project_executions AS\nSELECT\n    e.execution_id,\n    e.developer_id,\n    p.project_id,\n    p.canonical_name AS project_canonical_name,\n    e.task_id,\n    e.task_version,\n    e.input,\n    e.metadata,\n    e.created_at\nFROM executions e\nJOIN tasks t ON e.developer_id = t.developer_id AND e.task_id = t.task_id AND e.task_version = t.version\nJOIN agents a ON t.developer_id = a.developer_id AND t.agent_id = a.agent_id\nJOIN project_agents pa ON a.developer_id = pa.developer_id AND a.agent_id = pa.agent_id\nJOIN projects p ON pa.project_id = p.project_id;\n\n-- Create project_docs view\nCREATE OR REPLACE VIEW project_docs AS\nWITH doc_owner_groups AS (\n    SELECT\n        doc_id,\n        developer_id,\n        array_agg(owner_id) as owner_ids\n    FROM doc_owners\n    GROUP BY doc_id, developer_id\n),\ndocs_with_projects AS (\n    -- Docs owned by agents that are in projects\n    SELECT DISTINCT\n        d.doc_id,\n        d.developer_id,\n        p.project_id\n    FROM docs d\n    JOIN doc_owner_groups dog ON d.doc_id = dog.doc_id AND d.developer_id = dog.developer_id\n    JOIN project_agents pa ON pa.developer_id = d.developer_id AND pa.agent_id = ANY(dog.owner_ids)\n    JOIN projects p ON pa.project_id = p.project_id\n    \n    UNION\n    \n    -- Docs owned by users that are in projects\n    SELECT DISTINCT\n        d.doc_id,\n        d.developer_id,\n        p.project_id\n    FROM docs d\n    JOIN doc_owner_groups dog ON d.doc_id = dog.doc_id AND d.developer_id = dog.developer_id\n    JOIN project_users pu ON pu.developer_id = d.developer_id AND pu.user_id = ANY(dog.owner_ids)\n    JOIN projects p ON pu.project_id = p.project_id\n)\nSELECT\n    d.doc_id,\n    d.developer_id,\n    dp.project_id,\n    p.canonical_name AS project_canonical_name,\n    d.title,\n    d.content,\n    d.metadata,\n    d.created_at,\n    d.updated_at,\n    dog.owner_ids\nFROM docs d\nJOIN docs_with_projects dp ON d.doc_id = dp.doc_id AND d.developer_id = dp.developer_id\nJOIN projects p ON dp.project_id = p.project_id\nLEFT JOIN doc_owner_groups dog ON d.doc_id = dog.doc_id AND d.developer_id = dog.developer_id;\n\n-- Create indexes\nCREATE INDEX IF NOT EXISTS idx_projects_developer_id ON projects (developer_id);\nCREATE INDEX IF NOT EXISTS idx_projects_metadata ON projects USING GIN (metadata);\nCREATE INDEX IF NOT EXISTS idx_project_agents_agent ON project_agents (developer_id, agent_id);\nCREATE INDEX IF NOT EXISTS idx_project_users_user ON project_users (developer_id, user_id);\nCREATE INDEX IF NOT EXISTS idx_project_files_file ON project_files (developer_id, file_id);\n\n-- Create trigger to automatically update updated_at for projects\nCREATE OR REPLACE TRIGGER trg_projects_updated_at BEFORE UPDATE \nON projects FOR EACH ROW\nEXECUTE FUNCTION update_updated_at_column();\n\n-- Create function to create default project for new developers\nCREATE OR REPLACE FUNCTION create_default_project()\nRETURNS TRIGGER AS $$\nBEGIN\n    INSERT INTO projects (\n        project_id,\n        developer_id,\n        canonical_name,\n        name,\n        metadata\n    ) VALUES (\n        gen_random_uuid(),\n        NEW.developer_id,\n        'default',\n        'Default Project',\n        jsonb_build_object(\n            'is_default', true,\n            'description', 'Default project containing all existing resources'\n        )\n    );\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger to create default project on new developer\nCREATE TRIGGER trg_create_default_project\nAFTER INSERT ON developers\nFOR EACH ROW\nEXECUTE FUNCTION create_default_project();\n\n-- Create function to prevent deletion of default projects\nCREATE OR REPLACE FUNCTION prevent_default_project_deletion()\nRETURNS TRIGGER AS $$\nBEGIN\n    IF OLD.canonical_name = 'default' THEN\n        RAISE EXCEPTION 'Cannot delete default project';\n    END IF;\n    RETURN OLD;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger to prevent deletion of default projects\nCREATE TRIGGER trg_prevent_default_project_deletion\nBEFORE DELETE ON projects\nFOR EACH ROW\nEXECUTE FUNCTION prevent_default_project_deletion();\n\n-- Add comments to tables\nCOMMENT ON TABLE projects IS 'Stores project configurations and metadata for developers';\nCOMMENT ON TABLE project_agents IS 'Associates agents with projects';\nCOMMENT ON TABLE project_users IS 'Associates users with projects';\nCOMMENT ON TABLE project_files IS 'Associates files with projects';\n\n-- Create default project for each existing developer\nINSERT INTO projects (project_id, developer_id, canonical_name, name, metadata)\nSELECT \n    gen_random_uuid(),\n    developer_id,\n    'default',\n    'Default Project',\n    jsonb_build_object(\n        'is_default', true,\n        'description', 'Default project containing all existing resources'\n    )\nFROM developers\nON CONFLICT (developer_id, canonical_name) DO NOTHING;\n\n-- Associate all existing agents with their developer's default project\nINSERT INTO project_agents (project_id, developer_id, agent_id)\nSELECT \n    p.project_id,\n    a.developer_id,\n    a.agent_id\nFROM agents a\nJOIN projects p ON a.developer_id = p.developer_id AND p.canonical_name = 'default'\nON CONFLICT (project_id, agent_id) DO NOTHING;\n\n-- Associate all existing users with their developer's default project\nINSERT INTO project_users (project_id, developer_id, user_id)\nSELECT \n    p.project_id,\n    u.developer_id,\n    u.user_id\nFROM users u\nJOIN projects p ON u.developer_id = p.developer_id AND p.canonical_name = 'default'\nON CONFLICT (project_id, user_id) DO NOTHING;\n\n-- Associate all existing files with their developer's default project\nINSERT INTO project_files (project_id, developer_id, file_id)\nSELECT \n    p.project_id,\n    f.developer_id,\n    f.file_id\nFROM files f\nJOIN projects p ON f.developer_id = p.developer_id AND p.canonical_name = 'default'\nON CONFLICT (project_id, file_id) DO NOTHING;\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000040_add_secrets.down.sql",
    "content": "BEGIN;\n\n-- Drop trigger for automatically updating 'updated_at'\nDROP TRIGGER IF EXISTS update_secrets_timestamp_trigger ON secrets;\n-- Drop trigger function for automatically updating 'updated_at'\nDROP FUNCTION IF EXISTS update_secrets_timestamp();\n-- Drop encryption/decryption functions\nDROP FUNCTION IF EXISTS decrypt_secret;\nDROP FUNCTION IF EXISTS encrypt_secret;\nDROP INDEX IF EXISTS idx_secrets_metadata;\nDROP INDEX IF EXISTS idx_secrets_name;\nDROP INDEX IF EXISTS idx_secrets_developer_id;\nDROP TABLE IF EXISTS secrets;\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000040_add_secrets.up.sql",
    "content": "BEGIN;\n\n-- Create secrets table with encryption at rest\nCREATE TABLE IF NOT EXISTS secrets (\n    secret_id UUID NOT NULL,\n    developer_id UUID NOT NULL,\n    name TEXT NOT NULL,\n    description TEXT,\n    value_encrypted BYTEA NOT NULL,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB DEFAULT '{}'::jsonb,\n    CONSTRAINT pk_secrets PRIMARY KEY (developer_id, secret_id),\n    CONSTRAINT uq_secrets_unique UNIQUE(developer_id, name),\n    CONSTRAINT ct_secrets_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'),\n    CONSTRAINT ct_secrets_canonical_name_valid_identifier CHECK (name ~ '^[a-zA-Z][a-zA-Z0-9_]*$')\n);\n\nCREATE OR REPLACE FUNCTION update_secrets_timestamp()\nRETURNS TRIGGER AS $$\nBEGIN\n    NEW.updated_at = CURRENT_TIMESTAMP;\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\nCREATE TRIGGER update_secrets_timestamp_trigger\nBEFORE UPDATE ON secrets\nFOR EACH ROW\nEXECUTE FUNCTION update_secrets_timestamp();\n\n-- Add indexes\nCREATE INDEX IF NOT EXISTS idx_secrets_developer_id ON secrets(developer_id);\nCREATE INDEX IF NOT EXISTS idx_secrets_name ON secrets(name);\nCREATE INDEX IF NOT EXISTS idx_secrets_metadata ON secrets USING gin(metadata);\n\n-- Add encryption/decryption functions using pgcrypto\nCREATE OR REPLACE FUNCTION encrypt_secret(\n    p_value TEXT,\n    p_key TEXT\n) RETURNS BYTEA AS $$\nBEGIN\n    RETURN pgp_sym_encrypt(\n        p_value,\n        p_key,\n        'cipher-algo=aes256'\n    );\nEND;\n$$ LANGUAGE plpgsql SECURITY DEFINER;\n\nCREATE OR REPLACE FUNCTION decrypt_secret(\n    p_encrypted_value BYTEA,\n    p_key TEXT\n) RETURNS TEXT AS $$\nBEGIN\n    RETURN pgp_sym_decrypt(\n        p_encrypted_value,\n        p_key\n    );\nEND;\n$$ LANGUAGE plpgsql SECURITY DEFINER;\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000041_non_null_forward_tool_calls.down.sql",
    "content": "-- Remove the not null constraint\nALTER TABLE sessions ALTER COLUMN forward_tool_calls DROP NOT NULL;\n\n-- Remove the comment\nCOMMENT ON COLUMN sessions.forward_tool_calls IS NULL; "
  },
  {
    "path": "src/memory-store/migrations/000041_non_null_forward_tool_calls.up.sql",
    "content": "-- Update existing null values to false\nUPDATE sessions SET forward_tool_calls = false WHERE forward_tool_calls IS NULL;\n\n-- Make the column not null\nALTER TABLE sessions ALTER COLUMN forward_tool_calls SET NOT NULL;\n\n-- Add comment to explain the change\nCOMMENT ON COLUMN sessions.forward_tool_calls IS 'Whether to forward tool calls directly to the model. Default is false.'; "
  },
  {
    "path": "src/memory-store/migrations/000042_add_api_keys.down.sql",
    "content": "BEGIN;\n\n-- Drop helper functions\nDROP FUNCTION IF EXISTS decrypt_api_key(BYTEA, TEXT);\nDROP FUNCTION IF EXISTS encrypt_api_key(TEXT, TEXT);\n\n-- Drop trigger and function\nDROP TRIGGER IF EXISTS update_api_keys_timestamp_trigger ON api_keys;\nDROP FUNCTION IF EXISTS update_api_keys_timestamp();\n\n-- Drop table\nDROP TABLE IF EXISTS api_keys CASCADE;\n\nCOMMIT; "
  },
  {
    "path": "src/memory-store/migrations/000042_add_api_keys.up.sql",
    "content": "BEGIN;\n\n-- Create api_keys table with encryption for api_key_encrypted (following secrets pattern)\nCREATE TABLE IF NOT EXISTS api_keys (\n    api_key_id UUID NOT NULL,\n    developer_id UUID NOT NULL,\n    api_key_encrypted BYTEA NOT NULL,\n    name TEXT NOT NULL,\n    created_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    updated_at TIMESTAMPTZ NOT NULL DEFAULT CURRENT_TIMESTAMP,\n    metadata JSONB DEFAULT '{}'::jsonb,\n    deleted_at TIMESTAMPTZ DEFAULT NULL,\n    CONSTRAINT pk_api_keys PRIMARY KEY (developer_id, api_key_id),\n    CONSTRAINT ct_api_keys_metadata_is_object CHECK (jsonb_typeof(metadata) = 'object'),\n    CONSTRAINT ct_api_keys_name_valid_identifier CHECK (name ~ '^[a-zA-Z][a-zA-Z0-9_]*$'),\n    CONSTRAINT fk_api_keys_developer FOREIGN KEY (developer_id) REFERENCES developers(developer_id)\n);\n\n-- Create partial unique index instead of constraint with WHERE clause\nCREATE UNIQUE INDEX IF NOT EXISTS uq_api_keys_developer_id_name \n    ON api_keys (developer_id, name) \n    WHERE deleted_at IS NULL;\n\n-- Create trigger function for updated_at\nCREATE OR REPLACE FUNCTION update_api_keys_timestamp()\nRETURNS TRIGGER AS $$\nBEGIN\n    NEW.updated_at = CURRENT_TIMESTAMP;\n    RETURN NEW;\nEND;\n$$ LANGUAGE plpgsql;\n\n-- Create trigger\nCREATE TRIGGER update_api_keys_timestamp_trigger\nBEFORE UPDATE ON api_keys\nFOR EACH ROW\nEXECUTE FUNCTION update_api_keys_timestamp();\n\n-- Add indexes\nCREATE INDEX IF NOT EXISTS idx_api_keys_developer_id ON api_keys(developer_id);\nCREATE INDEX IF NOT EXISTS idx_api_keys_name ON api_keys(name);\nCREATE INDEX IF NOT EXISTS idx_api_keys_metadata ON api_keys USING gin(metadata);\nCREATE INDEX IF NOT EXISTS idx_api_keys_deleted_at ON api_keys(deleted_at) WHERE deleted_at IS NULL;\n\n-- Helper functions for encryption/decryption (following secrets pattern)\nCREATE OR REPLACE FUNCTION encrypt_api_key(\n    p_value TEXT,\n    p_key TEXT\n) RETURNS BYTEA AS $$\nBEGIN\n    RETURN pgp_sym_encrypt(\n        p_value,\n        p_key,\n        'cipher-algo=aes256'\n    );\nEND;\n$$ LANGUAGE plpgsql SECURITY DEFINER;\n\nCREATE OR REPLACE FUNCTION decrypt_api_key(\n    p_encrypted_value BYTEA,\n    p_key TEXT\n) RETURNS TEXT AS $$\nBEGIN\n    RETURN pgp_sym_decrypt(\n        p_encrypted_value,\n        p_key\n    );\nEND;\n$$ LANGUAGE plpgsql SECURITY DEFINER;\n\n-- Add comment to table\nCOMMENT ON TABLE api_keys IS 'Stores API keys with encryption for developers';\n\nCOMMIT;"
  },
  {
    "path": "src/memory-store/migrations/000043_optional_trigram_search.down.sql",
    "content": "-- Revert trigram similarity threshold to non-nullable with default 0.6\n\n-- Revert search_by_text to original with non-nullable similarity_threshold\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, float);\n\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english_unaccent',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL,\n    similarity_threshold float DEFAULT 0.6\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    -- Convert query to tsquery\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    SET work_mem = '32MB';\n\n    RETURN QUERY EXECUTE \n'WITH fts_results AS MATERIALIZED (\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    ts_rank_cd(d.search_tsv, $1, 32)::double precision AS tsv_score,\n    NULL::double precision AS trigram_score,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id,\n    d.updated_at,\n    /* Mark source=1 for FTS */\n    1 AS source\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2\n    -- Must pass FTS\n    AND d.search_tsv @@ $1\n    -- Filter by owners if needed\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) \n\n    \n),\ntrgm_candidates AS MATERIALIZED (\n  /*\n   * Get docs that fail the FTS pass but pass a broad trigram test\n   * i.e. (title % :search_text) or (content % :search_text)\n   * so it can use your GIN/GIST trigram indexes.\n   */\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    d.search_tsv,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id,\n    d.updated_at\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2::uuid\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n    -- A broad trigram match (index-friendly):\n    AND (d.title  %> $6\n         OR d.content %> $6)\n    -- Exclude anything that was already in the FTS set:\n    AND NOT EXISTS (\n      SELECT 1\n      FROM fts_results f\n      WHERE f.doc_id = d.doc_id\n        AND f.index = d.index\n    )\n),\ntrgm_scored AS (\n  /*\n   * Only now do the heavy comprehensive_similarity check,\n   * but only for these trigram candidates.\n   */\n  SELECT\n    t.developer_id,\n    t.doc_id,\n    t.index,\n    t.title,\n    t.content,\n    NULL::double precision AS tsv_score,\n    comprehensive_similarity(t.title, t.content, $6)::double precision AS trigram_score,\n    t.embedding,\n    t.metadata,\n    t.owner_type,\n    t.owner_id,\n    t.updated_at,\n    2 AS source\n  FROM trgm_candidates t\n  WHERE comprehensive_similarity(t.title, t.content, $6) > $7\n),\ncombined AS (\n  /*\n   * Union the two sets:\n   *   - FTS matches (fts_results) => \"score\" is tsv_score\n   *   - Trigram-only matches => \"score\" is trigram_score\n   */\n  SELECT\n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    COALESCE(tsv_score, trigram_score) AS score,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\n  FROM fts_results\n\n  UNION ALL\n\n  SELECT\n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    COALESCE(tsv_score, trigram_score) AS score,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\n  FROM trgm_scored\n)\nSELECT *\nFROM combined\nORDER BY score DESC\nLIMIT $8'\n    USING\n        ts_query,\n        developer_id,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        query_text,\n        similarity_threshold,\n        k;\nEND;\n$$;\n\n-- Revert search_hybrid to original with non-nullable similarity_threshold\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb, text, float, integer);\n\nCREATE OR REPLACE FUNCTION search_hybrid (\n    p_developer_id UUID,\n    p_query_text text,\n    p_query_embedding vector (1024),\n    p_owner_types TEXT[],\n    p_owner_ids UUID [],\n    p_k integer DEFAULT 3,\n    p_alpha float DEFAULT 0.7, -- Weight for embedding results\n    p_confidence float DEFAULT 0.5,\n    p_metadata_filter jsonb DEFAULT NULL,\n    p_search_language text DEFAULT 'english_unaccent',\n    p_similarity_threshold float DEFAULT 0.6,\n    k_multiplier integer DEFAULT 5\n) RETURNS SETOF doc_search_result\nLANGUAGE plpgsql AS\n$$\nDECLARE\n    text_weight float := 1.0 - p_alpha;\n    embedding_weight float := p_alpha;\n    intermediate_limit integer := p_k * k_multiplier;\nBEGIN\n    /*\n       1) Get top-N results from text search.\n       2) Get top-N results from vector search.\n       3) UNION them and pick the highest-distance row per doc_id (DISTINCT ON).\n       4) Join those rows back to each sub-result to get text_score and embedding_score.\n       5) Aggregate text & embedding scores once, dbsf_normalize once, then map them back by row_number.\n    */\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT *\n        FROM search_by_text(\n            developer_id => p_developer_id,\n            query_text => p_query_text,\n            owner_types => p_owner_types,\n            owner_ids => p_owner_ids,\n            search_language => p_search_language,\n            k => intermediate_limit,\n            metadata_filter => p_metadata_filter,\n            similarity_threshold => p_similarity_threshold\n        )\n    ),\n    embedding_results AS (\n        SELECT *\n        FROM search_by_vector(\n            developer_id => p_developer_id,\n            query_embedding => p_query_embedding,\n            owner_types => p_owner_types,\n            owner_ids => p_owner_ids,\n            k => intermediate_limit,\n            confidence => p_confidence,\n            metadata_filter => p_metadata_filter\n        )\n    ),\n\n    -- UNION both sets, pick highest distance row per doc_id\n    all_results AS (\n        SELECT DISTINCT ON (doc_id)\n               developer_id,\n               doc_id,\n               index,\n               title,\n               content,\n               distance,\n               embedding,\n               metadata,\n               owner_type,\n               owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION ALL\n            SELECT * FROM embedding_results\n        ) combined\n        ORDER BY doc_id, distance DESC\n    ),\n\n    -- Gather text_score & embedding_score for each doc\n    scores AS (\n        SELECT\n            a.developer_id,\n            a.doc_id,\n            a.index,\n            a.title,\n            a.content,\n            a.embedding,\n            a.metadata,\n            a.owner_type,\n            a.owner_id,\n            COALESCE(t.distance, 0.0) AS text_score,\n            COALESCE(e.distance, 0.0) AS embedding_score\n        FROM all_results a\n        LEFT JOIN text_results      t ON a.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON a.doc_id = e.doc_id\n    ),\n\n    -- Give each row a stable ordering\n    scores_ordered AS (\n        SELECT\n            s.*,\n            ROW_NUMBER() OVER (ORDER BY s.doc_id) AS rn\n        FROM scores s\n    ),\n\n    -- Aggregate all text/embedding scores into arrays\n    aggregated AS (\n        SELECT\n            array_agg(text_score ORDER BY rn)      AS text_scores,\n            array_agg(embedding_score ORDER BY rn) AS embedding_scores\n        FROM scores_ordered\n    ),\n\n    -- Normalize once for each array\n    normed_arrays AS (\n        SELECT\n            dbsf_normalize(text_scores)      AS norm_text_scores,\n            dbsf_normalize(embedding_scores) AS norm_embedding_scores\n        FROM aggregated\n    ),\n\n    -- Join normalized arrays back using row_number\n    final AS (\n        SELECT\n            s.developer_id,\n            s.doc_id,\n            s.index,\n            s.title,\n            s.content,\n            1.0 - (\n                text_weight      * norm_text_scores[s.rn] +\n                embedding_weight * norm_embedding_scores[s.rn]\n            ) AS distance,\n            s.embedding,\n            s.metadata,\n            s.owner_type,\n            s.owner_id\n        FROM scores_ordered s\n        CROSS JOIN normed_arrays\n        ORDER BY distance ASC\n        LIMIT p_k\n    )\n    SELECT * FROM final;\nEND;\n$$;\n\nCOMMENT ON FUNCTION search_by_text IS 'Search documents using full-text search and enhanced fuzzy matching with configurable language and filtering options';\nCOMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search with configurable weights and filtering options';\n\n-- Revert embed_and_search_hybrid to original with non-nullable similarity_threshold\nDROP FUNCTION IF EXISTS embed_and_search_hybrid;\n\nCREATE OR REPLACE FUNCTION embed_and_search_hybrid (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    alpha float DEFAULT 0.7,\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    search_language text DEFAULT 'english_unaccent',\n    embedding_provider text DEFAULT 'openai',\n    embedding_model text DEFAULT 'text-embedding-3-large',\n    input_type text DEFAULT 'query',\n    api_key text DEFAULT NULL,\n    api_key_name text DEFAULT NULL,\n    similarity_threshold float DEFAULT 0.6  -- Reverted back to 0.6 default\n) RETURNS SETOF doc_search_result AS $$\nDECLARE\n    query_embedding vector(1024);\nBEGIN\n    -- Get embedding for the query\n    query_embedding := embed_with_cache(\n        embedding_provider,\n        embedding_model,\n        query_text,\n        input_type,\n        api_key,\n        api_key_name\n    );\n\n    -- Call the search_hybrid function with the embedding\n    RETURN QUERY\n    SELECT * FROM search_hybrid(\n        developer_id,\n        query_text,\n        query_embedding,\n        owner_types,\n        owner_ids,\n        k,\n        alpha,\n        confidence,\n        metadata_filter,\n        search_language,\n        similarity_threshold\n    );\nEND;\n$$ LANGUAGE plpgsql;\n\nCOMMENT ON FUNCTION embed_and_search_hybrid IS 'Convenience function that combines text embedding generation and hybrid search in one call';"
  },
  {
    "path": "src/memory-store/migrations/000043_optional_trigram_search.up.sql",
    "content": "-- Make trigram similarity threshold optional in search functions\n-- This allows disabling trigram search by passing NULL\n\n-- Update search_by_text to handle NULL similarity_threshold\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, float);\n\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english_unaccent',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL,\n    similarity_threshold float DEFAULT NULL  -- Changed to NULL default\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    -- Convert query to tsquery\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    SET work_mem = '32MB';\n\n    -- If similarity_threshold is NULL, only do full-text search\n    IF similarity_threshold IS NULL THEN\n        RETURN QUERY EXECUTE \n'WITH fts_results AS MATERIALIZED (\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    ts_rank_cd(d.search_tsv, $1, 32)::double precision AS score,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2\n    -- Must pass FTS\n    AND d.search_tsv @@ $1\n    -- Filter by owners if needed\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) \n)\nSELECT \n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    score AS distance,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\nFROM fts_results\nORDER BY score DESC\nLIMIT $6'\n        USING\n            ts_query,\n            developer_id,\n            owner_types,\n            owner_ids,\n            metadata_filter,\n            k;\n    ELSE\n        -- Original behavior with trigram search\n        RETURN QUERY EXECUTE \n'WITH fts_results AS MATERIALIZED (\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    ts_rank_cd(d.search_tsv, $1, 32)::double precision AS tsv_score,\n    NULL::double precision AS trigram_score,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id,\n    d.updated_at,\n    /* Mark source=1 for FTS */\n    1 AS source\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2\n    -- Must pass FTS\n    AND d.search_tsv @@ $1\n    -- Filter by owners if needed\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) \n),\ntrgm_candidates AS MATERIALIZED (\n  /*\n   * Get docs that fail the FTS pass but pass a broad trigram test\n   * i.e. (title % :search_text) or (content % :search_text)\n   * so it can use your GIN/GIST trigram indexes.\n   */\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    d.search_tsv,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id,\n    d.updated_at\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2::uuid\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n    -- A broad trigram match (index-friendly):\n    AND (d.title  %> $6\n         OR d.content %> $6)\n    -- Exclude anything that was already in the FTS set:\n    AND NOT EXISTS (\n      SELECT 1\n      FROM fts_results f\n      WHERE f.doc_id = d.doc_id\n        AND f.index = d.index\n    )\n),\ntrgm_scored AS (\n  /*\n   * Only now do the heavy comprehensive_similarity check,\n   * but only for these trigram candidates.\n   */\n  SELECT\n    t.developer_id,\n    t.doc_id,\n    t.index,\n    t.title,\n    t.content,\n    NULL::double precision AS tsv_score,\n    comprehensive_similarity(t.title, t.content, $6)::double precision AS trigram_score,\n    t.embedding,\n    t.metadata,\n    t.owner_type,\n    t.owner_id,\n    t.updated_at,\n    2 AS source\n  FROM trgm_candidates t\n  WHERE comprehensive_similarity(t.title, t.content, $6) > $7\n),\ncombined AS (\n  /*\n   * Union the two sets:\n   *   - FTS matches (fts_results) => \"score\" is tsv_score\n   *   - Trigram-only matches => \"score\" is trigram_score\n   */\n  SELECT\n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    COALESCE(tsv_score, trigram_score) AS score,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\n  FROM fts_results\n\n  UNION ALL\n\n  SELECT\n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    COALESCE(tsv_score, trigram_score) AS score,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\n  FROM trgm_scored\n)\nSELECT *\nFROM combined\nORDER BY score DESC\nLIMIT $8'\n        USING\n            ts_query,\n            developer_id,\n            owner_types,\n            owner_ids,\n            metadata_filter,\n            query_text,\n            similarity_threshold,\n            k;\n    END IF;\nEND;\n$$;\n\n-- Update search_hybrid to pass NULL similarity_threshold correctly\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, float, float, jsonb, text, float, integer);\n\nCREATE OR REPLACE FUNCTION search_hybrid (\n    p_developer_id UUID,\n    p_query_text text,\n    p_query_embedding vector (1024),\n    p_owner_types TEXT[],\n    p_owner_ids UUID [],\n    p_k integer DEFAULT 3,\n    p_alpha float DEFAULT 0.7, -- Weight for embedding results\n    p_confidence float DEFAULT 0.5,\n    p_metadata_filter jsonb DEFAULT NULL,\n    p_search_language text DEFAULT 'english_unaccent',\n    p_similarity_threshold float DEFAULT NULL,  -- Changed to NULL default\n    k_multiplier integer DEFAULT 5\n) RETURNS SETOF doc_search_result\nLANGUAGE plpgsql AS\n$$\nDECLARE\n    text_weight float := 1.0 - p_alpha;\n    embedding_weight float := p_alpha;\n    intermediate_limit integer := p_k * k_multiplier;\nBEGIN\n    /*\n       1) Get top-N results from text search.\n       2) Get top-N results from vector search.\n       3) UNION them and pick the highest-distance row per doc_id (DISTINCT ON).\n       4) Join those rows back to each sub-result to get text_score and embedding_score.\n       5) Aggregate text & embedding scores once, dbsf_normalize once, then map them back by row_number.\n    */\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT *\n        FROM search_by_text(\n            developer_id => p_developer_id,\n            query_text => p_query_text,\n            owner_types => p_owner_types,\n            owner_ids => p_owner_ids,\n            search_language => p_search_language,\n            k => intermediate_limit,\n            metadata_filter => p_metadata_filter,\n            similarity_threshold => p_similarity_threshold\n        )\n    ),\n    embedding_results AS (\n        SELECT *\n        FROM search_by_vector(\n            developer_id => p_developer_id,\n            query_embedding => p_query_embedding,\n            owner_types => p_owner_types,\n            owner_ids => p_owner_ids,\n            k => intermediate_limit,\n            confidence => p_confidence,\n            metadata_filter => p_metadata_filter\n        )\n    ),\n\n    -- UNION both sets, pick highest distance row per doc_id\n    all_results AS (\n        SELECT DISTINCT ON (doc_id)\n               developer_id,\n               doc_id,\n               index,\n               title,\n               content,\n               distance,\n               embedding,\n               metadata,\n               owner_type,\n               owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION ALL\n            SELECT * FROM embedding_results\n        ) combined\n        ORDER BY doc_id, distance DESC\n    ),\n\n    -- Gather text_score & embedding_score for each doc\n    scores AS (\n        SELECT\n            a.developer_id,\n            a.doc_id,\n            a.index,\n            a.title,\n            a.content,\n            a.embedding,\n            a.metadata,\n            a.owner_type,\n            a.owner_id,\n            COALESCE(t.distance, 0.0) AS text_score,\n            COALESCE(e.distance, 0.0) AS embedding_score\n        FROM all_results a\n        LEFT JOIN text_results      t ON a.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON a.doc_id = e.doc_id\n    ),\n\n    -- Give each row a stable ordering\n    scores_ordered AS (\n        SELECT\n            s.*,\n            ROW_NUMBER() OVER (ORDER BY s.doc_id) AS rn\n        FROM scores s\n    ),\n\n    -- Aggregate all text/embedding scores into arrays\n    aggregated AS (\n        SELECT\n            array_agg(text_score ORDER BY rn)      AS text_scores,\n            array_agg(embedding_score ORDER BY rn) AS embedding_scores\n        FROM scores_ordered\n    ),\n\n    -- Normalize once for each array\n    normed_arrays AS (\n        SELECT\n            dbsf_normalize(text_scores)      AS norm_text_scores,\n            dbsf_normalize(embedding_scores) AS norm_embedding_scores\n        FROM aggregated\n    ),\n\n    -- Join normalized arrays back using row_number\n    final AS (\n        SELECT\n            s.developer_id,\n            s.doc_id,\n            s.index,\n            s.title,\n            s.content,\n            1.0 - (\n                text_weight      * norm_text_scores[s.rn] +\n                embedding_weight * norm_embedding_scores[s.rn]\n            ) AS distance,\n            s.embedding,\n            s.metadata,\n            s.owner_type,\n            s.owner_id\n        FROM scores_ordered s\n        CROSS JOIN normed_arrays\n        ORDER BY distance ASC\n        LIMIT p_k\n    )\n    SELECT * FROM final;\nEND;\n$$;\n\nCOMMENT ON FUNCTION search_by_text IS 'Search documents using full-text search with optional trigram fuzzy matching. Pass NULL similarity_threshold to disable trigram search.';\nCOMMENT ON FUNCTION search_hybrid IS 'Hybrid search combining text and vector search with optional trigram fuzzy matching. Pass NULL similarity_threshold to disable trigram search in text component.';\n\n-- Update embed_and_search_hybrid to use NULL similarity_threshold default\nDROP FUNCTION IF EXISTS embed_and_search_hybrid;\n\nCREATE OR REPLACE FUNCTION embed_and_search_hybrid (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    alpha float DEFAULT 0.7,\n    confidence float DEFAULT 0.5,\n    metadata_filter jsonb DEFAULT NULL,\n    search_language text DEFAULT 'english_unaccent',\n    embedding_provider text DEFAULT 'openai',\n    embedding_model text DEFAULT 'text-embedding-3-large',\n    input_type text DEFAULT 'query',\n    api_key text DEFAULT NULL,\n    api_key_name text DEFAULT NULL,\n    similarity_threshold float DEFAULT NULL  -- Changed to NULL default\n) RETURNS SETOF doc_search_result AS $$\nDECLARE\n    query_embedding vector(1024);\nBEGIN\n    -- Get embedding for the query\n    query_embedding := embed_with_cache(\n        embedding_provider,\n        embedding_model,\n        query_text,\n        input_type,\n        api_key,\n        api_key_name\n    );\n\n    -- Call the search_hybrid function with the embedding\n    RETURN QUERY\n    SELECT * FROM search_hybrid(\n        developer_id,\n        query_text,\n        query_embedding,\n        owner_types,\n        owner_ids,\n        k,\n        alpha,\n        confidence,\n        metadata_filter,\n        search_language,\n        similarity_threshold\n    );\nEND;\n$$ LANGUAGE plpgsql;\n\nCOMMENT ON FUNCTION embed_and_search_hybrid IS 'Convenience function that combines text embedding generation and hybrid search with optional trigram fuzzy matching. Pass NULL similarity_threshold to disable trigram search in text component.';"
  },
  {
    "path": "src/memory-store/migrations/000044_search_optimize.down.sql",
    "content": "BEGIN;\n\nDROP INDEX IF EXISTS idx_docs_embeddings_store_diskann_labels;\nDROP INDEX IF EXISTS idx_doc_owners_owner_dev_doc;\n\nALTER TABLE docs_embeddings_store\n    DROP COLUMN IF EXISTS developer_labels;\n\nDROP FUNCTION IF EXISTS public.uuid_to_smallint_labels(uuid);\n\n-- AIDEV-NOTE: restore legacy docs vectorizer config if we swapped it during the up migration.\nDO $$\nDECLARE\n    v_new_id integer;\nBEGIN\n    SELECT id\n    INTO v_new_id\n    FROM ai.vectorizer\n    WHERE source_schema = 'public'\n      AND source_table = 'docs'\n      AND coalesce(config -> 'destination' ->> 'target_table', '') = 'docs_embeddings_store'\n    ORDER BY id DESC\n    LIMIT 1;\n\n    IF v_new_id IS NOT NULL THEN\n        PERFORM ai.drop_vectorizer(v_new_id, drop_all => true);\n\n        PERFORM ai.create_vectorizer(\n            'public.docs'::regclass,\n            name => 'docs_vectorizer',\n            grant_to => ai.grant_to('postgres'),\n            destination => ai.destination_table(\n                target_schema => 'public',\n                view_name => 'docs_embeddings'\n            ),\n            loading => ai.loading_column('content'),\n            embedding => ai.embedding_openai('text-embedding-3-large', 1024, 'document'),\n            chunking => ai.chunking_recursive_character_text_splitter(\n                chunk_size => 30000,\n                chunk_overlap => 600,\n                separators => ARRAY[\n                    E'\\n#',\n                    E'\\n##',\n                    E'\\n###',\n                    E'\\n---',\n                    E'\\n***',\n                    E'</article>',\n                    E'</div>',\n                    E'</section>',\n                    E'</p>',\n                    E'<br>',\n                    E'\\n\\n',\n                    '. ',\n                    '? ',\n                    '! ',\n                    '; ',\n                    E'\\n',\n                    ' '\n                ]\n            ),\n            scheduling => ai.scheduling_timescaledb(),\n            indexing => ai.indexing_diskann(),\n            formatting => ai.formatting_python_template(E'Title: $title\\n\\n$chunk'),\n            processing => ai.processing_default(),\n            enqueue_existing => TRUE,\n            if_not_exists => TRUE\n        );\n    END IF;\nEND;\n$$;\n\n-- Restore prior search_by_text implementation.\nCREATE OR REPLACE FUNCTION search_by_text (\n    developer_id UUID,\n    query_text text,\n    owner_types TEXT[],\n    owner_ids UUID[],\n    search_language text DEFAULT 'english_unaccent',\n    k integer DEFAULT 3,\n    metadata_filter jsonb DEFAULT NULL,\n    similarity_threshold float DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    ts_query tsquery;\nBEGIN\n    IF array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    -- Convert query to tsquery\n    ts_query := websearch_to_tsquery(search_language::regconfig, query_text);\n\n    SET work_mem = '32MB';\n\n    -- If similarity_threshold is NULL, only do full-text search\n    IF similarity_threshold IS NULL THEN\n        RETURN QUERY EXECUTE \n'WITH fts_results AS MATERIALIZED (\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    ts_rank_cd(d.search_tsv, $1, 32)::double precision AS score,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2\n    -- Must pass FTS\n    AND d.search_tsv @@ $1\n    -- Filter by owners if needed\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) \n)\nSELECT \n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    score AS distance,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\nFROM fts_results\nORDER BY score DESC\nLIMIT $6'\n        USING\n            ts_query,\n            developer_id,\n            owner_types,\n            owner_ids,\n            metadata_filter,\n            k;\n    ELSE\n        -- Original behavior with trigram search\n        RETURN QUERY EXECUTE \n'WITH fts_results AS MATERIALIZED (\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    ts_rank_cd(d.search_tsv, $1, 32)::double precision AS tsv_score,\n    NULL::double precision AS trigram_score,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id,\n    d.updated_at,\n    /* Mark source=1 for FTS */\n    1 AS source\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2\n    -- Must pass FTS\n    AND d.search_tsv @@ $1\n    -- Filter by owners if needed\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb) \n),\ntrgm_candidates AS MATERIALIZED (\n  /*\n   * Get docs that fail the FTS pass but pass a broad trigram test\n   * i.e. (title % :search_text) or (content % :search_text)\n   * so it can use your GIN/GIST trigram indexes.\n   */\n  SELECT\n    d.developer_id,\n    d.doc_id,\n    d.index,\n    d.title,\n    d.content,\n    d.search_tsv,\n    e.embedding,\n    d.metadata,\n    o.owner_type,\n    o.owner_id,\n    d.updated_at\n  FROM docs d\n  LEFT JOIN docs_embeddings e\n    ON e.developer_id = d.developer_id\n    AND e.doc_id = d.doc_id\n    AND e.index = d.index\n  LEFT JOIN doc_owners o\n    ON d.doc_id = o.doc_id\n  \n  WHERE d.developer_id = $2::uuid\n    AND o.owner_type = ANY($3)\n    AND o.owner_id   = ANY($4::uuid[])\n    AND (($5)::jsonb IS NULL OR d.metadata @> ($5)::jsonb)\n    -- A broad trigram match (index-friendly):\n    AND (d.title  %> $6\n         OR d.content %> $6)\n    -- Exclude anything that was already in the FTS set:\n    AND NOT EXISTS (\n      SELECT 1\n      FROM fts_results f\n      WHERE f.doc_id = d.doc_id\n        AND f.index = d.index\n    )\n),\ntrgm_scored AS (\n  /*\n   * Only now do the heavy comprehensive_similarity check,\n   * but only for these trigram candidates.\n   */\n  SELECT\n    t.developer_id,\n    t.doc_id,\n    t.index,\n    t.title,\n    t.content,\n    NULL::double precision AS tsv_score,\n    comprehensive_similarity(t.title, t.content, $6)::double precision AS trigram_score,\n    t.embedding,\n    t.metadata,\n    t.owner_type,\n    t.owner_id,\n    t.updated_at,\n    2 AS source\n  FROM trgm_candidates t\n  WHERE comprehensive_similarity(t.title, t.content, $6) > $7\n),\ncombined AS (\n  /*\n   * Union the two sets:\n   *   - FTS matches (fts_results) => \"score\" is tsv_score\n   *   - Trigram-only matches => \"score\" is trigram_score\n   */\n  SELECT\n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    COALESCE(tsv_score, trigram_score) AS score,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\n  FROM fts_results\n\n  UNION ALL\n\n  SELECT\n    developer_id,\n    doc_id,\n    index,\n    title,\n    content,\n    COALESCE(tsv_score, trigram_score) AS score,\n    embedding,\n    metadata,\n    owner_type,\n    owner_id\n  FROM trgm_scored\n)\nSELECT *\nFROM combined\nORDER BY score DESC\nLIMIT $8'\n        USING\n            ts_query,\n            developer_id,\n            owner_types,\n            owner_ids,\n            metadata_filter,\n            query_text,\n            similarity_threshold,\n            k;\n    END IF;\nEND;\n$$;\n\n-- Restore prior search_by_vector implementation.\nCREATE OR REPLACE FUNCTION search_by_vector (\n    developer_id UUID,\n    query_embedding vector (1024),\n    owner_types TEXT[],\n    owner_ids UUID [],\n    k integer DEFAULT 3,\n    confidence float DEFAULT 0.0,\n    metadata_filter jsonb DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    search_threshold float;\n    owner_filter_sql text;\n    metadata_filter_sql text;\nBEGIN\n    -- Input validation\n    IF k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    IF confidence < -1 OR confidence > 1 THEN\n        RAISE EXCEPTION 'confidence must be between -1 and 1';\n    END IF;\n\n    IF owner_types IS NOT NULL AND owner_ids IS NOT NULL AND\n        array_length(owner_types, 1) != array_length(owner_ids, 1) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids arrays must have the same length';\n    END IF;\n\n    -- Calculate search threshold from confidence\n    search_threshold := 1.0 - confidence;\n\n    -- Build owner filter SQL\n    owner_filter_sql := '\n        AND (\n            doc_owners.owner_id = ANY($5::uuid[]) AND doc_owners.owner_type = ANY($4::text[])\n        )';\n\n    -- Build metadata filter SQL if provided\n    IF metadata_filter IS NOT NULL THEN\n        metadata_filter_sql := 'AND d.metadata @> $6';\n    ELSE\n        metadata_filter_sql := '';\n    END IF;\n\n    -- Return search results\n    RETURN QUERY EXECUTE format(\n        'WITH ranked_docs AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                (d.embedding <=> $1) as distance,\n                d.embedding,\n                d.metadata,\n                doc_owners.owner_type,\n                doc_owners.owner_id\n            FROM docs_embeddings d\n            LEFT JOIN doc_owners ON d.doc_id = doc_owners.doc_id\n            WHERE d.developer_id = $7\n            AND (d.embedding <=> $1) <= $2\n            %s\n            %s\n            ORDER BY (d.embedding <=> $1) ASC\n            LIMIT ($3 * 4)  -- Get more candidates than needed\n        )\n        SELECT DISTINCT ON (doc_id) *\n        FROM ranked_docs\n        ORDER BY doc_id, distance ASC\n        LIMIT $3',\n        owner_filter_sql,\n        metadata_filter_sql\n    )\n    USING\n        query_embedding,\n        search_threshold,\n        k,\n        owner_types,\n        owner_ids,\n        metadata_filter,\n        developer_id;\n\n\nEND;\n$$;\n\n-- Restore prior search_hybrid implementation.\nCREATE OR REPLACE FUNCTION search_hybrid (\n    p_developer_id UUID,\n    p_query_text text,\n    p_query_embedding vector (1024),\n    p_owner_types TEXT[],\n    p_owner_ids UUID [],\n    p_k integer DEFAULT 3,\n    p_alpha float DEFAULT 0.7,\n    p_confidence float DEFAULT 0.5,\n    p_metadata_filter jsonb DEFAULT NULL,\n    p_search_language text DEFAULT 'english_unaccent',\n    p_similarity_threshold float DEFAULT NULL,\n    k_multiplier integer DEFAULT 5\n) RETURNS SETOF doc_search_result\nLANGUAGE plpgsql AS\n$$\nDECLARE\n    text_weight float := 1.0 - p_alpha;\n    embedding_weight float := p_alpha;\n    intermediate_limit integer := p_k * k_multiplier;\nBEGIN\n    /*\n       1) Get top-N results from text search.\n       2) Get top-N results from vector search.\n       3) UNION them and pick the highest-distance row per doc_id (DISTINCT ON).\n       4) Join those rows back to each sub-result to get text_score and embedding_score.\n       5) Aggregate text & embedding scores once, dbsf_normalize once, then map them back by row_number.\n    */\n\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT *\n        FROM search_by_text(\n            developer_id => p_developer_id,\n            query_text => p_query_text,\n            owner_types => p_owner_types,\n            owner_ids => p_owner_ids,\n            search_language => p_search_language,\n            k => intermediate_limit,\n            metadata_filter => p_metadata_filter,\n            similarity_threshold => p_similarity_threshold\n        )\n    ),\n    embedding_results AS (\n        SELECT *\n        FROM search_by_vector(\n            developer_id => p_developer_id,\n            query_embedding => p_query_embedding,\n            owner_types => p_owner_types,\n            owner_ids => p_owner_ids,\n            k => intermediate_limit,\n            confidence => p_confidence,\n            metadata_filter => p_metadata_filter\n        )\n    ),\n\n    -- UNION both sets, pick highest distance row per doc_id\n    all_results AS (\n        SELECT DISTINCT ON (doc_id)\n               developer_id,\n               doc_id,\n               index,\n               title,\n               content,\n               distance,\n               embedding,\n               metadata,\n               owner_type,\n               owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION ALL\n            SELECT * FROM embedding_results\n        ) combined\n        ORDER BY doc_id, distance DESC\n    ),\n\n    -- Gather text_score & embedding_score for each doc\n    scores AS (\n        SELECT\n            a.developer_id,\n            a.doc_id,\n            a.index,\n            a.title,\n            a.content,\n            a.embedding,\n            a.metadata,\n            a.owner_type,\n            a.owner_id,\n            COALESCE(t.distance, 0.0) AS text_score,\n            COALESCE(e.distance, 0.0) AS embedding_score\n        FROM all_results a\n        LEFT JOIN text_results      t ON a.doc_id = t.doc_id\n        LEFT JOIN embedding_results e ON a.doc_id = e.doc_id\n    ),\n\n    -- Give each row a stable ordering\n    scores_ordered AS (\n        SELECT\n            s.*,\n            ROW_NUMBER() OVER (ORDER BY s.doc_id) AS rn\n        FROM scores s\n    ),\n\n    -- Aggregate all text/embedding scores into arrays\n    aggregated AS (\n        SELECT\n            array_agg(text_score ORDER BY rn)      AS text_scores,\n            array_agg(embedding_score ORDER BY rn) AS embedding_scores\n        FROM scores_ordered\n    ),\n\n    -- Normalize once for each array\n    normed_arrays AS (\n        SELECT\n            dbsf_normalize(text_scores)      AS norm_text_scores,\n            dbsf_normalize(embedding_scores) AS norm_embedding_scores\n        FROM aggregated\n    ),\n\n    -- Join normalized arrays back using row_number\n    final AS (\n        SELECT\n            s.developer_id,\n            s.doc_id,\n            s.index,\n            s.title,\n            s.content,\n            1.0 - (\n                text_weight      * norm_text_scores[s.rn] +\n                embedding_weight * norm_embedding_scores[s.rn]\n            ) AS distance,\n            s.embedding,\n            s.metadata,\n            s.owner_type,\n            s.owner_id\n        FROM scores_ordered s\n        CROSS JOIN normed_arrays\n        ORDER BY distance ASC\n        LIMIT p_k\n    )\n    SELECT * FROM final;\nEND;\n$$;\n\nCOMMIT;\n"
  },
  {
    "path": "src/memory-store/migrations/000044_search_optimize.up.sql",
    "content": "BEGIN;\n\n-- Performance for this migration only\nSET LOCAL max_parallel_maintenance_workers = 4;\nSET LOCAL maintenance_work_mem = '6GB';\nSET LOCAL max_parallel_workers = 5;\nSET LOCAL statement_timeout = '0';\n\n-- Ensure vectorscale is at least 0.8.0 so label-prefiltered DiskANN indexes are supported.\nDO $$\nDECLARE\n    v_version text;\n    v_numeric int[];\nBEGIN\n    SELECT extversion INTO v_version\n    FROM pg_extension\n    WHERE extname = 'vectorscale';\n\n    IF v_version IS NULL THEN\n        RAISE EXCEPTION 'vectorscale extension is not installed; install >= 0.8.0 before running this migration.';\n    END IF;\n\n    v_numeric := string_to_array(regexp_replace(v_version, '[^0-9\\.]', '', 'g'), '.')::int[];\n\n    IF coalesce(v_numeric[1], 0) < 0\n       OR (coalesce(v_numeric[1], 0) = 0 AND coalesce(v_numeric[2], 0) < 8)\n       OR (coalesce(v_numeric[1], 0) = 0 AND coalesce(v_numeric[2], 0) = 8 AND coalesce(v_numeric[3], 0) < 0) THEN\n        EXECUTE 'ALTER EXTENSION vectorscale UPDATE TO ''0.8.0''';\n\n        SELECT extversion INTO v_version\n        FROM pg_extension\n        WHERE extname = 'vectorscale';\n\n        v_numeric := string_to_array(regexp_replace(v_version, '[^0-9\\.]', '', 'g'), '.')::int[];\n\n        IF coalesce(v_numeric[1], 0) < 0\n           OR (coalesce(v_numeric[1], 0) = 0 AND coalesce(v_numeric[2], 0) < 8)\n           OR (coalesce(v_numeric[1], 0) = 0 AND coalesce(v_numeric[2], 0) = 8 AND coalesce(v_numeric[3], 0) < 0) THEN\n            RAISE EXCEPTION 'vectorscale extension version % does not support label-aware DiskANN indexes; upgrade to >= 0.8.0.', v_version;\n        END IF;\n    END IF;\nEND;\n$$;\n\n--- -- AIDEV-NOTE: pgai 0.6+ needs the refreshed docs vectorizer config; rebuild it if an older one is present.\n--- DO $$\n--- DECLARE\n---     v_old_id integer;\n---     v_old_config jsonb;\n--- BEGIN\n---     SELECT id, config\n---     INTO v_old_id, v_old_config\n---     FROM ai.vectorizer\n---     WHERE source_schema = 'public'\n---       AND source_table = 'docs'\n---     ORDER BY id DESC\n---     LIMIT 1;\n---\n---     IF v_old_id IS NOT NULL\n---        AND coalesce(v_old_config -> 'destination' ->> 'target_table', '') <> 'docs_embeddings_store' THEN\n---         PERFORM ai.drop_vectorizer(v_old_id, drop_all => true);\n---     END IF;\n---\n---     IF NOT EXISTS (\n---         SELECT 1\n---         FROM ai.vectorizer\n---         WHERE source_schema = 'public'\n---           AND source_table = 'docs'\n---           AND coalesce(config -> 'destination' ->> 'target_table', '') = 'docs_embeddings_store'\n---     ) THEN\n---         PERFORM ai.create_vectorizer (\n---             'public.docs'::regclass,\n---             name => 'docs_vectorizer',\n---             -- grant_to => ai.grant_to('postgres'),\n---             destination => ai.destination_table(\n---                 target_schema => 'public',\n---                 target_table => 'docs_embeddings_store',\n---                 view_name => 'docs_embeddings'\n---             ),\n---             loading => ai.loading_column('content'),\n---             embedding => ai.embedding_openai('text-embedding-3-large', 1024, 'document'),\n---             chunking => ai.chunking_recursive_character_text_splitter(\n---                 chunk_size => 30000,\n---                 chunk_overlap => 600,\n---                 separators => ARRAY[\n---                     E'\\n#',\n---                     E'\\n##',\n---                     E'\\n###',\n---                     E'\\n---',\n---                     E'\\n***',\n---                     E'</article>',\n---                     E'</div>',\n---                     E'</section>',\n---                     E'</p>',\n---                     E'<br>',\n---                     E'\\n\\n',\n---                     '. ',\n---                     '? ',\n---                     '! ',\n---                     '; ',\n---                     E'\\n',\n---                     ' '\n---                 ]\n---             ),\n---             scheduling => ai.scheduling_timescaledb(),\n---             indexing => ai.indexing_diskann(),\n---             formatting => ai.formatting_python_template(E'Title: $title\\n\\n$chunk'),\n---             processing => ai.processing_default(),\n---             enqueue_existing => FALSE,\n---             if_not_exists => TRUE\n---         );\n---     END IF;\n--- END;\n--- $$;\n\n-- Drop any existing DiskANN indexes so we can recreate them with label support.\nDO $$\nDECLARE\n    idx_record record;\nBEGIN\n    FOR idx_record IN\n        SELECT indexname\n        FROM pg_indexes\n        WHERE schemaname = 'public'\n          AND tablename = 'docs_embeddings_store'\n          AND indexdef ILIKE '%USING diskann%'\n    LOOP\n        EXECUTE format('DROP INDEX IF EXISTS %I', idx_record.indexname);\n    END LOOP;\nEND;\n$$;\n\n-- Provide a helper for converting UUIDs into vectorscale label arrays when the extension doesn't supply one.\nCREATE OR REPLACE FUNCTION public.uuid_to_smallint_labels(p_uuid uuid)\nRETURNS smallint[]\nLANGUAGE plpgsql\nIMMUTABLE\nSTRICT\nAS $$\nDECLARE\n    bytes bytea := uuid_send(p_uuid);\n    labels smallint[] := ARRAY[]::smallint[];\n    combined integer;\n    i integer;\nBEGIN\n    IF bytes IS NULL THEN\n        RETURN NULL;\n    END IF;\n\n    FOR i IN 0..7 LOOP\n        combined := get_byte(bytes, i * 2) * 256 + get_byte(bytes, i * 2 + 1);\n        combined := (combined % 32767) + 1;  -- map into 1..32767\n        labels := array_append(labels, combined::smallint);\n    END LOOP;\n\n    RETURN labels;\nEND;\n$$;\n\n-- Persist developer labels on the embeddings store so DiskANN can pre-filter candidates.\nALTER TABLE docs_embeddings_store\n    ADD COLUMN IF NOT EXISTS developer_labels smallint[]\n        GENERATED ALWAYS AS (uuid_to_smallint_labels(developer_id)) STORED;\n\n\nCREATE INDEX IF NOT EXISTS idx_docs_embeddings_store_diskann_labels\nON docs_embeddings_store\nUSING diskann (embedding vector_cosine_ops, developer_labels)\nWITH (num_neighbors = 50);\n\n-- Support owner filters by pairing owner type/id with developer/doc for selectivity.\nCREATE INDEX IF NOT EXISTS idx_doc_owners_owner_dev_doc\nON doc_owners (owner_type, owner_id, developer_id, doc_id);\n\n-- Replace search_by_text to tighten owner/developer filters and avoid session-wide GUC changes.\nDROP FUNCTION IF EXISTS search_by_text(UUID, text, TEXT[], UUID[], text, integer, jsonb, double precision);\nCREATE OR REPLACE FUNCTION search_by_text (\n    p_developer_id UUID,\n    p_query_text text,\n    p_owner_types TEXT[],\n    p_owner_ids UUID[],\n    p_search_language text DEFAULT 'english_unaccent',\n    p_k integer DEFAULT 3,\n    p_metadata_filter jsonb DEFAULT NULL,\n    p_similarity_threshold float DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    ts_query tsquery;\nBEGIN\n    IF p_k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    IF COALESCE(array_length(p_owner_types, 1), 0)\n       <> COALESCE(array_length(p_owner_ids, 1), 0) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    ts_query := websearch_to_tsquery(p_search_language::regconfig, p_query_text);\n\n    PERFORM set_config('work_mem', '32MB', true);\n\n    IF p_similarity_threshold IS NULL THEN\n        RETURN QUERY\n        WITH owner_filter AS (\n            SELECT owner_type, owner_id\n            FROM unnest(\n                COALESCE(p_owner_types, ARRAY[]::text[]),\n                COALESCE(p_owner_ids, ARRAY[]::uuid[])\n            ) AS of(owner_type, owner_id)\n        ),\n        fts_results AS (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                ts_rank_cd(d.search_tsv, ts_query, 32)::double precision AS score,\n                e.embedding,\n                d.metadata,\n                of.owner_type,\n                of.owner_id\n            FROM docs d\n            JOIN doc_owners o\n              ON o.developer_id = d.developer_id\n             AND o.doc_id = d.doc_id\n            JOIN owner_filter of\n              ON of.owner_type = o.owner_type\n             AND of.owner_id = o.owner_id\n            LEFT JOIN docs_embeddings e\n              ON e.developer_id = d.developer_id\n             AND e.doc_id = d.doc_id\n             AND e.index = d.index\n            WHERE d.developer_id = p_developer_id\n              AND d.search_tsv @@ ts_query\n              AND (p_metadata_filter IS NULL OR d.metadata @> p_metadata_filter)\n        )\n        SELECT\n            developer_id,\n            doc_id,\n            index,\n            title,\n            content,\n            score AS distance,\n            embedding,\n            metadata,\n            owner_type,\n            owner_id\n        FROM fts_results\n        ORDER BY score DESC\n        LIMIT p_k;\n    ELSE\n        RETURN QUERY\n        WITH owner_filter AS (\n            SELECT owner_type, owner_id\n            FROM unnest(\n                COALESCE(p_owner_types, ARRAY[]::text[]),\n                COALESCE(p_owner_ids, ARRAY[]::uuid[])\n            ) AS of(owner_type, owner_id)\n        ),\n        fts_results AS MATERIALIZED (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                ts_rank_cd(d.search_tsv, ts_query, 32)::double precision AS tsv_score,\n                NULL::double precision AS trigram_score,\n                e.embedding,\n                d.metadata,\n                of.owner_type,\n                of.owner_id,\n                d.updated_at,\n                1 AS source\n            FROM docs d\n            JOIN doc_owners o\n              ON o.developer_id = d.developer_id\n             AND o.doc_id = d.doc_id\n            JOIN owner_filter of\n              ON of.owner_type = o.owner_type\n             AND of.owner_id = o.owner_id\n            LEFT JOIN docs_embeddings e\n              ON e.developer_id = d.developer_id\n             AND e.doc_id = d.doc_id\n             AND e.index = d.index\n            WHERE d.developer_id = p_developer_id\n              AND d.search_tsv @@ ts_query\n              AND (p_metadata_filter IS NULL OR d.metadata @> p_metadata_filter)\n        ),\n        trgm_candidates AS MATERIALIZED (\n            SELECT\n                d.developer_id,\n                d.doc_id,\n                d.index,\n                d.title,\n                d.content,\n                d.search_tsv,\n                e.embedding,\n                d.metadata,\n                of.owner_type,\n                of.owner_id,\n                d.updated_at\n            FROM docs d\n            JOIN doc_owners o\n              ON o.developer_id = d.developer_id\n             AND o.doc_id = d.doc_id\n            JOIN owner_filter of\n              ON of.owner_type = o.owner_type\n             AND of.owner_id = o.owner_id\n            LEFT JOIN docs_embeddings e\n              ON e.developer_id = d.developer_id\n             AND e.doc_id = d.doc_id\n             AND e.index = d.index\n            WHERE d.developer_id = p_developer_id\n              AND (p_metadata_filter IS NULL OR d.metadata @> p_metadata_filter)\n              AND (d.title %> p_query_text OR d.content %> p_query_text)\n              AND NOT EXISTS (\n                    SELECT 1\n                    FROM fts_results f\n                    WHERE f.doc_id = d.doc_id\n                      AND f.index = d.index\n                      AND f.owner_type = of.owner_type\n                      AND f.owner_id = of.owner_id\n                )\n        ),\n        trgm_scored AS (\n            SELECT\n                t.developer_id,\n                t.doc_id,\n                t.index,\n                t.title,\n                t.content,\n                NULL::double precision AS tsv_score,\n                comprehensive_similarity(t.title, t.content, p_query_text)::double precision AS trigram_score,\n                t.embedding,\n                t.metadata,\n                t.owner_type,\n                t.owner_id,\n                t.updated_at,\n                2 AS source\n            FROM trgm_candidates t\n            WHERE comprehensive_similarity(t.title, t.content, p_query_text) > p_similarity_threshold\n        ),\n        combined AS (\n            SELECT\n                developer_id,\n                doc_id,\n                index,\n                title,\n                content,\n                COALESCE(tsv_score, trigram_score) AS score,\n                embedding,\n                metadata,\n                owner_type,\n                owner_id\n            FROM fts_results\n\n            UNION ALL\n\n            SELECT\n                developer_id,\n                doc_id,\n                index,\n                title,\n                content,\n                COALESCE(tsv_score, trigram_score) AS score,\n                embedding,\n                metadata,\n                owner_type,\n                owner_id\n            FROM trgm_scored\n        )\n        SELECT *\n        FROM combined\n        ORDER BY score DESC\n        LIMIT p_k;\n    END IF;\nEND;\n$$;\n\n-- Replace search_by_vector to use label-prefiltered DiskANN results and precise owner pairing.\nDROP FUNCTION IF EXISTS search_by_vector(UUID, vector, TEXT[], UUID[], integer, double precision, jsonb);\nCREATE OR REPLACE FUNCTION search_by_vector (\n    p_developer_id UUID,\n    p_query_embedding vector(1024),\n    p_owner_types TEXT[],\n    p_owner_ids UUID[],\n    p_k integer DEFAULT 3,\n    p_confidence float DEFAULT 0.0,\n    p_metadata_filter jsonb DEFAULT NULL\n) RETURNS SETOF doc_search_result LANGUAGE plpgsql AS $$\nDECLARE\n    search_threshold float;\n    label_filter smallint[];\n    candidate_limit integer;\nBEGIN\n    IF p_k <= 0 THEN\n        RAISE EXCEPTION 'k must be greater than 0';\n    END IF;\n\n    IF p_confidence < -1 OR p_confidence > 1 THEN\n        RAISE EXCEPTION 'confidence must be between -1 and 1';\n    END IF;\n\n    IF COALESCE(array_length(p_owner_types, 1), 0)\n       <> COALESCE(array_length(p_owner_ids, 1), 0) THEN\n        RAISE EXCEPTION 'owner_types and owner_ids must be the same length';\n    END IF;\n\n    search_threshold := 1.0 - p_confidence;\n    label_filter := uuid_to_smallint_labels(p_developer_id);\n    candidate_limit := GREATEST(p_k * 8, 40);\n    PERFORM set_config('enable_seqscan', 'off', true);\n    PERFORM set_config('enable_bitmapscan', 'off', true);\n\n    RETURN QUERY\n    WITH owner_filter AS (\n        SELECT owner_type, owner_id\n        FROM unnest(\n            COALESCE(p_owner_types, ARRAY[]::text[]),\n            COALESCE(p_owner_ids, ARRAY[]::uuid[])\n        ) AS of(owner_type, owner_id)\n    ),\n    candidates AS (\n        SELECT\n            emb.developer_id,\n            emb.doc_id,\n            emb.index,\n            emb.embedding,\n            (emb.embedding <=> p_query_embedding) AS distance\n        FROM docs_embeddings_store emb\n        WHERE emb.developer_labels && label_filter\n        ORDER BY distance ASC\n        LIMIT candidate_limit\n    ),\n    enriched AS (\n        SELECT\n            cand.developer_id,\n            cand.doc_id,\n            cand.index,\n            cand.embedding,\n            cand.distance,\n            d.title,\n            d.content,\n            d.metadata,\n            of.owner_type,\n            of.owner_id\n        FROM candidates cand\n        JOIN docs d\n          ON d.developer_id = cand.developer_id\n         AND d.doc_id = cand.doc_id\n         AND d.index = cand.index\n        JOIN doc_owners o\n          ON o.developer_id = cand.developer_id\n         AND o.doc_id = cand.doc_id\n        JOIN owner_filter of\n          ON of.owner_type = o.owner_type\n         AND of.owner_id = o.owner_id\n        WHERE cand.developer_id = p_developer_id\n          AND (p_metadata_filter IS NULL OR d.metadata @> p_metadata_filter)\n    )\n    SELECT DISTINCT ON (doc_id, owner_type, owner_id, index)\n        developer_id,\n        doc_id,\n        index,\n        title,\n        content,\n        distance,\n        embedding,\n        metadata,\n        owner_type,\n        owner_id\n    FROM enriched\n    WHERE p_confidence <= -1 OR distance <= search_threshold\n    ORDER BY doc_id, owner_type, owner_id, index, distance\n    LIMIT p_k;\nEND;\n$$;\n\n-- Update search_hybrid to align with the refined text/vector functions.\nDROP FUNCTION IF EXISTS search_hybrid(UUID, text, vector, TEXT[], UUID[], integer, double precision, double precision, jsonb, text, double precision, integer);\nCREATE OR REPLACE FUNCTION search_hybrid (\n    p_developer_id UUID,\n    p_query_text text,\n    p_query_embedding vector (1024),\n    p_owner_types TEXT[],\n    p_owner_ids UUID [],\n    p_k integer DEFAULT 3,\n    p_alpha float DEFAULT 0.7,\n    p_confidence float DEFAULT 0.5,\n    p_metadata_filter jsonb DEFAULT NULL,\n    p_search_language text DEFAULT 'english_unaccent',\n    p_similarity_threshold float DEFAULT NULL,\n    p_k_multiplier integer DEFAULT 5\n) RETURNS SETOF doc_search_result\nLANGUAGE plpgsql AS $$\nDECLARE\n    text_weight float := 1.0 - p_alpha;\n    embedding_weight float := p_alpha;\n    intermediate_limit integer := p_k * p_k_multiplier;\nBEGIN\n    RETURN QUERY\n    WITH text_results AS (\n        SELECT *\n        FROM search_by_text(\n            p_developer_id,\n            p_query_text,\n            p_owner_types,\n            p_owner_ids,\n            p_search_language,\n            intermediate_limit,\n            p_metadata_filter,\n            p_similarity_threshold\n        )\n    ),\n    embedding_results AS (\n        SELECT *\n        FROM search_by_vector(\n            p_developer_id,\n            p_query_embedding,\n            p_owner_types,\n            p_owner_ids,\n            intermediate_limit,\n            p_confidence,\n            p_metadata_filter\n        )\n    ),\n    all_results AS (\n        SELECT DISTINCT ON (doc_id, owner_type, owner_id, index)\n               developer_id,\n               doc_id,\n               index,\n               title,\n               content,\n               distance,\n               embedding,\n               metadata,\n               owner_type,\n               owner_id\n        FROM (\n            SELECT * FROM text_results\n            UNION ALL\n            SELECT * FROM embedding_results\n        ) combined\n        ORDER BY doc_id, owner_type, owner_id, index, distance DESC\n    ),\n    scores AS (\n        SELECT\n            a.developer_id,\n            a.doc_id,\n            a.index,\n            a.title,\n            a.content,\n            a.embedding,\n            a.metadata,\n            a.owner_type,\n            a.owner_id,\n            COALESCE(t.distance, 0.0) AS text_score,\n            COALESCE(e.distance, 0.0) AS embedding_score\n        FROM all_results a\n        LEFT JOIN text_results t\n               ON a.doc_id = t.doc_id\n              AND a.index = t.index\n              AND a.owner_type = t.owner_type\n              AND a.owner_id = t.owner_id\n        LEFT JOIN embedding_results e\n               ON a.doc_id = e.doc_id\n              AND a.index = e.index\n              AND a.owner_type = e.owner_type\n              AND a.owner_id = e.owner_id\n    ),\n    scores_ordered AS (\n        SELECT\n            s.*,\n            ROW_NUMBER() OVER (\n                ORDER BY s.doc_id, s.owner_type, s.owner_id, s.index\n            ) AS rn\n        FROM scores s\n    ),\n    aggregated AS (\n        SELECT\n            array_agg(text_score ORDER BY rn) AS text_scores,\n            array_agg(embedding_score ORDER BY rn) AS embedding_scores\n        FROM scores_ordered\n    ),\n    normed_arrays AS (\n        SELECT\n            COALESCE(dbsf_normalize(text_scores), ARRAY[]::double precision[]) AS norm_text_scores,\n            COALESCE(dbsf_normalize(embedding_scores), ARRAY[]::double precision[]) AS norm_embedding_scores\n        FROM aggregated\n    ),\n    final AS (\n        SELECT\n            s.developer_id,\n            s.doc_id,\n            s.index,\n            s.title,\n            s.content,\n            1.0 - (\n                text_weight      * COALESCE(norm_text_scores[s.rn], 0.0) +\n                embedding_weight * COALESCE(norm_embedding_scores[s.rn], 0.0)\n            ) AS distance,\n            s.embedding,\n            s.metadata,\n            s.owner_type,\n            s.owner_id\n        FROM scores_ordered s\n        CROSS JOIN normed_arrays\n        ORDER BY distance ASC\n        LIMIT p_k\n    )\n    SELECT * FROM final;\nEND;\n$$;\n\nCOMMIT;\n"
  },
  {
    "path": "src/monitoring/AGENTS.md",
    "content": "# AGENTS.md - monitoring\n\nThis directory contains monitoring and observability stack using Prometheus, Grafana, and Portainer.\n\nKey Uses\n- Bash commands:\n  - cd monitoring\n  - docker-compose --profile multi-tenant up  # Full monitoring stack\n  - docker-compose --profile monitor up       # Portainer only\n- Core files:\n  - `docker-compose.yml` for monitoring services\n  - `prometheus/config/prometheus.yml` for metrics collection\n  - `grafana/provisioning/` for dashboards and data sources\n  - `grafana/dashboard.yaml` for dashboard configuration\n- Configuration guidelines:\n  - Set `GRAFANA_ADMIN_PASSWORD` for secure access\n  - Configure Prometheus targets in `prometheus.yml`\n  - Add custom dashboards to `grafana/provisioning/dashboards/`\n- Testing instructions:\n  - Grafana UI: `http://localhost:3000` (admin/password)\n  - Portainer UI: `http://localhost:8383` (admin/password)\n  - Prometheus targets: Check service discovery and health\n- Repository etiquette:\n  - Don't commit admin passwords to version control\n  - Use external volumes for data persistence\n- Developer environment:\n  - Requires Docker and Docker Compose\n  - External volumes for persistent data storage\n- Unexpected behaviors:\n  - Grafana provisions dashboards automatically on startup\n  - Prometheus scrapes require service network connectivity\n\n# Monitoring Service\n\n## Overview\nThe monitoring service provides comprehensive observability for the Julep platform using Prometheus for metrics collection, Grafana for visualization, and Portainer for container management. It enables real-time monitoring, alerting, and performance analysis.\n\n## Architecture\n- **Metrics Collection**: Prometheus with multi-target scraping\n- **Visualization**: Grafana with pre-configured dashboards\n- **Container Management**: Portainer for Docker monitoring\n- **Data Persistence**: External volumes for metric storage\n\n## Key Components\n\n### Prometheus\n- **Purpose**: Metrics collection and time-series database\n- **Targets**: Agents API, Worker, Temporal services\n- **Scrape Interval**: 5-second collection frequency\n- **Storage**: External volume for metric persistence\n\n### Grafana\n- **Purpose**: Metrics visualization and dashboarding\n- **Port**: 3000 (HTTP interface)\n- **Authentication**: Configurable admin credentials\n- **Provisioning**: Automatic dashboard and datasource setup\n\n### Portainer\n- **Purpose**: Docker container management and monitoring\n- **Port**: 8383 (localhost only)\n- **Access**: Web-based container management interface\n- **Security**: Admin credentials required\n\n## Pre-configured Dashboards\n\n### Temporal Monitoring\n- **Advanced Visibility**: Detailed workflow metrics\n- **Cluster Monitoring**: Kubernetes-specific dashboards\n- **History Service**: Historical data analysis\n- **Matching Service**: Task matching performance\n- **Worker Service**: Worker node monitoring\n\n### Service-specific Dashboards\n- **Server General**: Overall server performance\n- **SDK General**: Client SDK metrics\n- **SDK Java**: Java-specific SDK monitoring\n- **Frontend Service**: UI service performance\n- **Requests Metrics**: API request analysis\n- **Queries Metrics**: Database query performance\n\n## Environment Variables\n- `GRAFANA_ADMIN_PASSWORD`: Admin password for Grafana (default: julep_grafana_admin)\n- `GRAFANA_ADMIN_USER`: Admin username for Grafana (default: admin)\n- `PORTAINER_ADMIN_USER`: Admin username for Portainer\n- `PORTAINER_ADMIN_PASSWORD`: Admin password for Portainer\n\n## Deployment Profiles\n1. **Multi-tenant**: Full monitoring stack with Prometheus and Grafana\n2. **Monitor**: Portainer-only deployment for container management\n\n## Metrics Collection\n\n### Scrape Targets\n- **Agents API**: Main API service metrics (port 8080)\n- **Worker**: Background worker metrics (port 14000)  \n- **Temporal**: Workflow engine metrics (port 15000)\n\n### Metrics Categories\n- **Request Metrics**: HTTP request rates, latencies, errors\n- **System Metrics**: CPU, memory, disk usage\n- **Application Metrics**: Custom business logic metrics\n- **Database Metrics**: Query performance and connection pools\n\n## Data Persistence\n- **Prometheus Data**: External volume `prometheus_data`\n- **Grafana Data**: External volume `grafana_data`\n- **Portainer Data**: External volume `portainer_data`\n\n## Alerting Configuration\n- **Alertmanagers**: Configurable alert routing\n- **Evaluation Interval**: 5-second rule evaluation\n- **Notification Channels**: Email, Slack, webhooks\n- **Alert Rules**: Custom alerting conditions\n\n## Dashboard Features\n- **Real-time Metrics**: Live data visualization\n- **Historical Analysis**: Time-based trend analysis\n- **Multi-service Views**: Cross-service correlation\n- **Custom Queries**: PromQL query interface\n- **Export/Import**: Dashboard portability\n\n## Security Features\n- **Authentication**: Admin credential protection\n- **Network Isolation**: Service-specific network access\n- **Read-only Access**: Optional viewer accounts\n- **Data Encryption**: Transport-level security\n\n## Integration Points\n- **Agents API**: Exposes `/metrics` endpoint for Prometheus\n- **Temporal**: Provides workflow and activity metrics\n- **Worker Services**: Background job monitoring\n- **Infrastructure**: System-level resource monitoring\n\n## Operational Procedures\n- **Health Checks**: Automated service health monitoring\n- **Data Retention**: Configurable metric retention policies\n- **Backup/Restore**: Volume-based data backup\n- **Scaling**: Horizontal scaling for high-volume metrics\n\n## Troubleshooting\n- **Service Discovery**: Check Prometheus targets page\n- **Dashboard Loading**: Verify Grafana provisioning logs\n- **Data Missing**: Confirm scrape target connectivity\n- **Performance**: Monitor Prometheus resource usage"
  },
  {
    "path": "src/monitoring/README.md",
    "content": "# Compose sample\n### Prometheus & Grafana\n\nProject structure:\n```\n├── README.md\n├── docker-compose.yml\n├── grafana\n│   └── provisioning\n│       └── datasources\n│           └── datasource.yml\n└── prometheus\n    └── config\n        └── prometheus.yml\n```\n\nThe docker compose file defines a stack with two services `prometheus` and `grafana`.\nWhen deploying the stack, docker compose maps port the default ports for each service to the equivalent ports on the host in order to inspect easier the web interface of each service.\nMake sure the ports 9090 and 3000 on the host are not already in use.\n\n## Deploy with docker compose\n\n```\n$ docker volume create grafana_data\n$ docker volume create prometheus_data\n$ docker compose up -d\nCreating network \"prometheus-grafana_default\" with the default driver\nCreating volume \"prometheus-grafana_prom_data\" with default driver\n...\nCreating grafana    ... done\nCreating prometheus ... done\nAttaching to prometheus, grafana\n\n```\n\n## Expected result\n\nListing containers must show two containers running and the port mapping as below:\n```\n$ docker ps\nCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES\ndbdec637814f        prom/prometheus     \"/bin/prometheus --c…\"   8 minutes ago       Up 8 minutes        0.0.0.0:9090->9090/tcp   prometheus\n79f667cb7dc2        grafana/grafana     \"/run.sh\"                8 minutes ago       Up 8 minutes        0.0.0.0:3000->3000/tcp   grafana\n```\n\nNavigate to `http://localhost:3000` in your web browser and use the login credentials specified in the compose file to access Grafana. It is already configured with prometheus as the default datasource.\n\n![page](output.jpg)\n\nNavigate to `http://localhost:9090` in your web browser to access directly the web interface of prometheus.\n\nStop and remove the containers. Use `-v` to remove the volumes if looking to erase all data.\n```\n$ docker compose down -v\n```\n"
  },
  {
    "path": "src/monitoring/docker-compose.yml",
    "content": "name: julep-monitoring\n\nservices:\n  prometheus:\n    image: prom/prometheus\n    container_name: prometheus\n    profiles:\n      - multi-tenant\n\n    volumes:\n      - ./prometheus/config/prometheus.yml:/etc/prometheus/prometheus.yml\n      - prometheus_data:/prometheus\n\n    depends_on:\n      agents-api-multi-tenant:\n        condition: service_started\n\n    command:\n      - '--config.file=/etc/prometheus/prometheus.yml'\n\n  grafana:\n    image: grafana/grafana\n    environment:\n      - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_ADMIN_PASSWORD:-julep_grafana_admin}\n      - GF_SECURITY_ADMIN_USER=${GRAFANA_ADMIN_USER:-admin}\n    container_name: grafana\n    ports:\n      - 3000:3000\n    volumes:\n      - grafana_data:/var/lib/grafana\n      - ./grafana/provisioning:/etc/grafana/provisioning\n      - ./grafana/provisioning/dashboards:/var/lib/grafana/dashboards\n      - ./grafana/dashboard.yaml:/etc/grafana/provisioning/dashboards/main.yaml\n    profiles:\n      - multi-tenant\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"--spider\", \"http://localhost:3000\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n    deploy:\n      resources:\n        limits:\n          memory: 1G\n\n  portainer:\n    image: portainer/portainer-ce:latest\n    container_name: portainer\n    ports:\n      - 127.0.0.1:8383:9000\n    volumes:\n      - /var/run/docker.sock:/var/run/docker.sock:ro\n      - portainer_data:/data\n    environment:\n      - ADMIN_USERNAME=${PORTAINER_ADMIN_USER}\n      - ADMIN_PASSWORD=${PORTAINER_ADMIN_PASSWORD}\n    profiles:\n      - monitor\n    restart: unless-stopped\n    healthcheck:\n      test: [\"CMD\", \"wget\", \"--spider\", \"http://localhost:9000\"]\n      interval: 30s\n      timeout: 10s\n      retries: 3\n    deploy:\n      resources:\n        limits:\n          memory: 1G\n\nvolumes:\n  prometheus_data:\n    external: true\n  grafana_data:\n    external: true\n  portainer_data:\n    external: true\n"
  },
  {
    "path": "src/monitoring/grafana/dashboard.yaml",
    "content": "apiVersion: 1\n\nproviders:\n  - name: \"Dashboard provider\"\n    orgId: 1\n    type: file\n    disableDeletion: false\n    updateIntervalSeconds: 10\n    allowUiUpdates: false\n    options:\n      path: /var/lib/grafana/dashboards\n      foldersFromFilesStructure: true\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/advanced-visibility-specific.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"target\": {\n          \"limit\": 100,\n          \"matchAny\": false,\n          \"tags\": [],\n          \"type\": \"dashboard\"\n        },\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"iteration\": 1635487590639,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 2,\n      \"panels\": [],\n      \"title\": \"Task processor\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 4,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(task_requests{operation=~\\\"Visibility.*\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(task_errors{operation=~\\\"Visibility.*\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Visibility Task Requests Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:65\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:66\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 6,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate(task_errors_discarded{operation=~\\\"Visibility.*\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"discarded\",\n          \"refId\": \"A\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(task_errors_limit_exceeded_counter{operation=~\\\"Visibility.*\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Visibility Errors Breakdown\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:94\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:95\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 9\n      },\n      \"hiddenSeries\": false,\n      \"id\": 16,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(task_requests{operation=~\\\"Visibility.*\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Visibility Task By Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:123\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:124\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 9\n      },\n      \"hiddenSeries\": false,\n      \"id\": 18,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(task_errors{operation=~\\\"Visibility.*\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Visibility Task Errors By Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:152\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:153\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 17\n      },\n      \"hiddenSeries\": false,\n      \"id\": 20,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_attempt_bucket{operation=~\\\"Visibility.*\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P95 Visibility Task Attempt Stats\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:193\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:194\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 25\n      },\n      \"hiddenSeries\": false,\n      \"id\": 22,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"(sum by (operation) (rate(task_latency_processing_sum{operation=~\\\"Visibility.*\\\"}[1m]))) / (sum by (operation) (rate(task_latency_processing_count{operation=~\\\"Visibility.*\\\"}[1m])))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Avg Visibility Task Processing Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:234\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"0.8\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:235\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 25\n      },\n      \"hiddenSeries\": false,\n      \"id\": 24,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.50, sum(rate(task_latency_processing_bucket{operation=~\\\"Visibility.*\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P50 Visibility Task Processing Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:259\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"0.8\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:260\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 25\n      },\n      \"hiddenSeries\": false,\n      \"id\": 26,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_processing_bucket{operation=~\\\"Visibility.*\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P95 Visibility Task Processing Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:284\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"3.2\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:285\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 34\n      },\n      \"hiddenSeries\": false,\n      \"id\": 28,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"(sum by (operation) (rate(task_latency_sum{operation=~\\\"Visibility.*\\\"}[1m]))) / (sum by (operation) (rate(task_latency_count{operation=~\\\"Visibility.*\\\"}[1m])))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Avg Visibility Task Overall Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:309\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"1.6\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:310\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 34\n      },\n      \"hiddenSeries\": false,\n      \"id\": 30,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.50, sum(rate(task_latency_bucket{operation=~\\\"Visibility.*\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P50 Visibility Task Overall Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:334\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"1.6\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:335\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 34\n      },\n      \"hiddenSeries\": false,\n      \"id\": 32,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_bucket{operation=~\\\"Visibility.*\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P95 Visibility Task Overall Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:359\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"6.4\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:360\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 43\n      },\n      \"hiddenSeries\": false,\n      \"id\": 34,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"(sum by (operation) (rate(task_latency_queue_sum{operation=~\\\"Visibility.*\\\"}[1m]))) / (sum by (operation) (rate(task_latency_queue_count{operation=~\\\"Visibility.*\\\"}[1m])))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Avg Visibility Task E2E Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:384\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"1.6\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:385\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 43\n      },\n      \"hiddenSeries\": false,\n      \"id\": 36,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.50, sum(rate(task_latency_queue_bucket{operation=~\\\"Visibility.*\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P50 Visibility Task E2E Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"1.6\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 43\n      },\n      \"hiddenSeries\": false,\n      \"id\": 38,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_processing_bucket{operation=~\\\"Visibility.*\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P95 Visibility Task E2E Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": \"6.4\",\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 52\n      },\n      \"id\": 12,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 53\n          },\n          \"hiddenSeries\": false,\n          \"id\": 40,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum (rate(visibility_persistence_requests{visibility_type=\\\"standard_visibility\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"requests\",\n              \"refId\": \"A\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum (rate(visibility_persistence_errors{visibility_type=\\\"standard_visibility\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"errors\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Request Vs Errors\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"$$hashKey\": \"object:634\",\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"$$hashKey\": \"object:635\",\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 53\n          },\n          \"hiddenSeries\": false,\n          \"id\": 44,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum(rate(visibility_persistence_invalid_argument{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"invalid argument\",\n              \"refId\": \"A\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum(rate(visibility_persistence_resource_exhausted{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"resource exhausted\",\n              \"refId\": \"B\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum(rate(visibility_persistence_condition_failed{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"condition failed\",\n              \"refId\": \"C\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum(rate(visibility_persistence_timeout{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"timeout\",\n              \"refId\": \"D\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum(rate(visibility_persistence_not_found{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"not found\",\n              \"refId\": \"E\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum(rate(visibility_persistence_internal{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"internal\",\n              \"refId\": \"F\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum(rate(visibility_persistence_unavailable{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"unavailable\",\n              \"refId\": \"G\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Errors Break Down\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 63\n          },\n          \"hiddenSeries\": false,\n          \"id\": 46,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum by (operation) (rate(visibility_persistence_requests{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Requests Per Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"description\": \"\",\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 63\n          },\n          \"hiddenSeries\": false,\n          \"id\": 48,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum by (operation) (rate(visibility_persistence_errors{visibility_type=\\\"standard_visibility\\\"}[1m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Errors Per Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 73\n          },\n          \"hiddenSeries\": false,\n          \"id\": 56,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"(sum by (operation) (rate(visibility_persistence_latency_sum{visibility_type=\\\"standard_visibility\\\"}[1m]))) / (sum by (operation) (rate(visibility_persistence_latency_count{visibility_type=\\\"standard_visibility\\\"}[1m])))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Avg Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 83\n          },\n          \"hiddenSeries\": false,\n          \"id\": 60,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"histogram_quantile(0.50, sum(rate(visibility_persistence_latency_bucket{visibility_type=\\\"standard_visibility\\\"}[1m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"P50 Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 93\n          },\n          \"hiddenSeries\": false,\n          \"id\": 66,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"histogram_quantile(0.95, sum(rate(visibility_persistence_latency_bucket{visibility_type=\\\"standard_visibility\\\"}[1m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"P95 Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Standard persistence\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 53\n      },\n      \"id\": 10,\n      \"panels\": [],\n      \"title\": \"Advanced persistence (Elasticsearch)\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 54\n      },\n      \"hiddenSeries\": false,\n      \"id\": 42,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(visibility_persistence_requests{visibility_type=\\\"advanced_visibility\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(visibility_persistence_errors{visibility_type=\\\"advanced_visibility\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Request Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:409\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:410\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 54\n      },\n      \"hiddenSeries\": false,\n      \"id\": 52,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(visibility_persistence_invalid_argument{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"invalid argument\",\n          \"refId\": \"A\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(visibility_persistence_resource_exhausted{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"resource exhausted\",\n          \"refId\": \"B\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(visibility_persistence_condition_failed{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"condition failed\",\n          \"refId\": \"C\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(visibility_persistence_timeout{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"timeout\",\n          \"refId\": \"D\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(visibility_persistence_not_found{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"not found\",\n          \"refId\": \"E\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(visibility_persistence_internal{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"internal\",\n          \"refId\": \"F\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(visibility_persistence_unavailable{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"unavailable\",\n          \"refId\": \"G\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors Break Down\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:465\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:466\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 64\n      },\n      \"hiddenSeries\": false,\n      \"id\": 50,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum by (operation) (rate(visibility_persistence_requests{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:494\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:495\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 64\n      },\n      \"hiddenSeries\": false,\n      \"id\": 54,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum by (operation) (rate(visibility_persistence_errors{visibility_type=\\\"advanced_visibility\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:523\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:524\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 74\n      },\n      \"hiddenSeries\": false,\n      \"id\": 58,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"(sum by (operation) (rate(visibility_persistence_latency_sum{visibility_type=\\\"advanced_visibility\\\"}[1m]))) / (sum by (operation) (rate(visibility_persistence_latency_count{visibility_type=\\\"advanced_visibility\\\"}[1m])))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Avg Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:560\",\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:561\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 84\n      },\n      \"hiddenSeries\": false,\n      \"id\": 62,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.50, sum(rate(visibility_persistence_latency_bucket{visibility_type=\\\"advanced_visibility\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P50 Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:589\",\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:590\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 94\n      },\n      \"hiddenSeries\": false,\n      \"id\": 64,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(visibility_persistence_latency_bucket{visibility_type=\\\"advanced_visibility\\\"}[1m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P95 Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:706\",\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:707\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 104\n      },\n      \"id\": 8,\n      \"panels\": [],\n      \"title\": \"Elasticsearch bulk processor\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 105\n      },\n      \"hiddenSeries\": false,\n      \"id\": 68,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(elasticsearch_bulk_processor_requests{service=\\\"$service\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(elasticsearch_bulk_processor_errors{service=\\\"$service\\\"}[1m])) by (http_status, le)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{http_status}} errors\",\n          \"refId\": \"B\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(elasticsearch_bulk_processor_retries{service=\\\"$service\\\"}[1m])) by (http_status, le)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{http_status}} retryable errors\",\n          \"refId\": \"C\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(elasticsearch_bulk_processor_corrupted_data{service=\\\"$service\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"corrupted data errors\",\n          \"refId\": \"D\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(elasticsearch_bulk_processor_deadlock{service=\\\"$service\\\"}[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"deadlock\",\n          \"refId\": \"E\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum (rate(elasticsearch_bulk_processor_duplicate_request{service=\\\"$service\\\"}[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"duplicate request warning\",\n          \"refId\": \"F\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:735\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:736\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 105\n      },\n      \"hiddenSeries\": false,\n      \"id\": 72,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(elasticsearch_bulk_processor_bulk_size_bucket{service=\\\"$service\\\"}[1m])) by (le))*1000\",\n          \"interval\": \"\",\n          \"legendFormat\": \"bulk size\",\n          \"refId\": \"A\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(elasticsearch_bulk_processor_queued_requests_bucket{service=\\\"$service\\\"}[1m])) by (le))*1000\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"queued requests\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P95 Bulk Size/Queued Requests\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2445\",\n          \"format\": \"none\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2446\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 113\n      },\n      \"hiddenSeries\": false,\n      \"id\": 74,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(elasticsearch_bulk_processor_request_latency_bucket{service=\\\"$service\\\"}[1m])) by (le))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"request latency\",\n          \"refId\": \"D\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P95 Total Request Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2501\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2502\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"description\": \"\",\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 113\n      },\n      \"hiddenSeries\": false,\n      \"id\": 70,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.1.5\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(elasticsearch_bulk_processor_wait_add_latency_bucket{service=\\\"$service\\\"}[1m])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"wait add latency\",\n          \"refId\": \"A\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(elasticsearch_bulk_processor_wait_start_latency_bucket{service=\\\"$service\\\"}[1m])) by (le))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"wait start latency\",\n          \"refId\": \"B\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"histogram_quantile(0.95, sum(rate(elasticsearch_bulk_processor_commit_latency_bucket{service=\\\"$service\\\"}[1m])) by (le))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"commit latency\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"P95 WaitAdd/WaitStart/Commit Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2501\",\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2502\",\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 121\n      },\n      \"id\": 14,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 122\n          },\n          \"hiddenSeries\": false,\n          \"id\": 76,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum (rate(elasticsearch_document_parse_failures_counter{service=\\\"$service\\\"}[1m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"doc parse errors\",\n              \"refId\": \"A\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum (rate(elasticsearch_document_generate_failures_counter{service=\\\"$service\\\"}[1m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"doc generate errors\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Doc Generate/Parse Errors\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"$$hashKey\": \"object:2727\",\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"$$hashKey\": \"object:2728\",\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 122\n          },\n          \"hiddenSeries\": false,\n          \"id\": 78,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.1.5\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"add_search_attributes_workflow_success{service=\\\"$service\\\"}\",\n              \"interval\": \"\",\n              \"legendFormat\": \"success\",\n              \"refId\": \"A\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"add_search_attributes_workflow_failure{service=\\\"$service\\\"}\",\n              \"interval\": \"\",\n              \"legendFormat\": \"errors\",\n              \"refId\": \"B\"\n            },\n            {\n              \"exemplar\": true,\n              \"expr\": \"add_search_attributes_failures{service=\\\"$service\\\"}\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"activity errors\",\n              \"refId\": \"C\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Add Search Attributes Workflow\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"$$hashKey\": \"object:2727\",\n              \"format\": \"none\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"$$hashKey\": \"object:2728\",\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Elasticsearch miscellaneous\",\n      \"type\": \"row\"\n    }\n  ],\n  \"refresh\": false,\n  \"schemaVersion\": 30,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {},\n  \"timezone\": \"\",\n  \"title\": \"Visibility\",\n  \"uid\": \"gVq0CdNnk\",\n  \"version\": 4\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/clustermonitoring-kubernetes.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"$$hashKey\": \"object:218\",\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"This dashboard provides cluster admins with the ability to monitor nodes and identify workload bottlenecks. It can be deployed with PSPs enabled using the following helm chart - https://github.com/pivotal-cf/charts-grafana\",\n  \"editable\": true,\n  \"gnetId\": 10000,\n  \"graphTooltip\": 0,\n  \"id\": 5,\n  \"iteration\": 1596213608810,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 34,\n      \"panels\": [],\n      \"repeat\": null,\n      \"title\": \"Summary\",\n      \"type\": \"row\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"percent\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": true,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"height\": \"180px\",\n      \"id\": 4,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (container_memory_working_set_bytes{id=\\\"/\\\",kubernetes_io_hostname=~\\\"^$Node$\\\"}) / sum (machine_memory_bytes{kubernetes_io_hostname=~\\\"^$Node$\\\"}) * 100\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"65, 90\",\n      \"title\": \"Cluster memory usage\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"percent\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": true,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 1\n      },\n      \"height\": \"180px\",\n      \"id\": 6,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate (container_cpu_usage_seconds_total{id=\\\"/\\\",kubernetes_io_hostname=~\\\"^$Node$\\\"}[$interval])) / sum (machine_cpu_cores{kubernetes_io_hostname=~\\\"^$Node$\\\"}) * 100\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"\",\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"65, 90\",\n      \"title\": \"Cluster CPU usage ($interval avg)\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": true,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"percent\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": true,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 1\n      },\n      \"height\": \"180px\",\n      \"id\": 7,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (container_fs_usage_bytes{id=\\\"/\\\"}) / sum (container_fs_limit_bytes{id=\\\"/\\\"}) * 100\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"\",\n          \"metric\": \"\",\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"65, 90\",\n      \"title\": \"Cluster filesystem usage\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"80%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"bytes\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 0,\n        \"y\": 6\n      },\n      \"height\": \"1px\",\n      \"id\": 9,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"20%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"20%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (container_memory_working_set_bytes{id=\\\"/\\\",kubernetes_io_hostname=~\\\"^$Node$\\\"})\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"\",\n      \"title\": \"Used\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"bytes\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 4,\n        \"y\": 6\n      },\n      \"height\": \"1px\",\n      \"id\": 10,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (machine_memory_bytes{kubernetes_io_hostname=~\\\"^$Node$\\\"})\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"\",\n      \"title\": \"Total\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"none\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 8,\n        \"y\": 6\n      },\n      \"height\": \"1px\",\n      \"id\": 11,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \" cores\",\n      \"postfixFontSize\": \"30%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate (container_cpu_usage_seconds_total{id=\\\"/\\\",kubernetes_io_hostname=~\\\"^$Node$\\\"}[$interval]))\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"\",\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"\",\n      \"title\": \"Used\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"none\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 12,\n        \"y\": 6\n      },\n      \"height\": \"1px\",\n      \"id\": 12,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \" cores\",\n      \"postfixFontSize\": \"30%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (machine_cpu_cores{kubernetes_io_hostname=~\\\"^$Node$\\\"})\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"\",\n      \"title\": \"Total\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"bytes\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 16,\n        \"y\": 6\n      },\n      \"height\": \"1px\",\n      \"id\": 13,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (container_fs_usage_bytes{id=\\\"/\\\"})\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"\",\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"\",\n      \"title\": \"Used\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"cacheTimeout\": null,\n      \"colorBackground\": false,\n      \"colorValue\": false,\n      \"colors\": [\n        \"rgba(50, 172, 45, 0.97)\",\n        \"rgba(237, 129, 40, 0.89)\",\n        \"rgba(245, 54, 54, 0.9)\"\n      ],\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"format\": \"bytes\",\n      \"gauge\": {\n        \"maxValue\": 100,\n        \"minValue\": 0,\n        \"show\": false,\n        \"thresholdLabels\": false,\n        \"thresholdMarkers\": true\n      },\n      \"gridPos\": {\n        \"h\": 3,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 6\n      },\n      \"height\": \"1px\",\n      \"id\": 14,\n      \"interval\": null,\n      \"links\": [],\n      \"mappingType\": 1,\n      \"mappingTypes\": [\n        {\n          \"name\": \"value to text\",\n          \"value\": 1\n        },\n        {\n          \"name\": \"range to text\",\n          \"value\": 2\n        }\n      ],\n      \"maxDataPoints\": 100,\n      \"nullPointMode\": \"connected\",\n      \"nullText\": null,\n      \"postfix\": \"\",\n      \"postfixFontSize\": \"50%\",\n      \"prefix\": \"\",\n      \"prefixFontSize\": \"50%\",\n      \"rangeMaps\": [\n        {\n          \"from\": \"null\",\n          \"text\": \"N/A\",\n          \"to\": \"null\"\n        }\n      ],\n      \"sparkline\": {\n        \"fillColor\": \"rgba(31, 118, 189, 0.18)\",\n        \"full\": false,\n        \"lineColor\": \"rgb(31, 120, 193)\",\n        \"show\": false\n      },\n      \"tableColumn\": \"\",\n      \"targets\": [\n        {\n          \"expr\": \"sum (container_fs_limit_bytes{id=\\\"/\\\"})\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"\",\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": \"\",\n      \"title\": \"Total\",\n      \"type\": \"singlestat\",\n      \"valueFontSize\": \"50%\",\n      \"valueMaps\": [\n        {\n          \"op\": \"=\",\n          \"text\": \"N/A\",\n          \"value\": \"null\"\n        }\n      ],\n      \"valueName\": \"current\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 9\n      },\n      \"id\": 35,\n      \"panels\": [],\n      \"repeat\": null,\n      \"title\": \"Memory\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"fill\": 0,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 25,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"hideEmpty\": false,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": true,\n        \"show\": true,\n        \"sideWidth\": 200,\n        \"sort\": \"current\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": true,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (container_memory_working_set_bytes{image!=\\\"\\\",name=~\\\"^k8s_.*\\\",kubernetes_io_hostname=~\\\"^$Node$\\\"}) by (pod)\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"{{ pod }}\",\n          \"metric\": \"container_memory_usage:sort_desc\",\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Container memory usage\",\n      \"tooltip\": {\n        \"msResolution\": false,\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"bytes\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 17\n      },\n      \"id\": 37,\n      \"panels\": [],\n      \"title\": \"CPU\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 3,\n      \"editable\": true,\n      \"error\": false,\n      \"fill\": 0,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 18\n      },\n      \"height\": \"\",\n      \"hiddenSeries\": false,\n      \"id\": 17,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": true,\n        \"show\": true,\n        \"sort\": \"current\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": true,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate (container_cpu_usage_seconds_total{image!=\\\"\\\",name=~\\\"^k8s_.*\\\",kubernetes_io_hostname=~\\\"^$Node$\\\"}[$interval])) by (container)\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"{{ container }}\",\n          \"metric\": \"container_cpu\",\n          \"refId\": \"A\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Container CPU usage ($interval avg)\",\n      \"tooltip\": {\n        \"msResolution\": true,\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"none\",\n          \"label\": \"cores\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 25\n      },\n      \"id\": 33,\n      \"panels\": [],\n      \"repeat\": null,\n      \"title\": \"Network I/O\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 5,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 26\n      },\n      \"height\": \"200px\",\n      \"hiddenSeries\": false,\n      \"id\": 32,\n      \"legend\": {\n        \"alignAsTable\": false,\n        \"avg\": true,\n        \"current\": true,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": false,\n        \"show\": false,\n        \"sideWidth\": 200,\n        \"sort\": \"current\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate (container_network_receive_bytes_total{kubernetes_io_hostname=~\\\"^$Node$\\\"}[$interval]))\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"Received\",\n          \"metric\": \"network\",\n          \"refId\": \"A\",\n          \"step\": 10\n        },\n        {\n          \"expr\": \"- sum (rate (container_network_transmit_bytes_total{kubernetes_io_hostname=~\\\"^$Node$\\\"}[$interval]))\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"Sent\",\n          \"metric\": \"network\",\n          \"refId\": \"B\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Network I/O pressure\",\n      \"tooltip\": {\n        \"msResolution\": false,\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"Bps\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"Bps\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"TemporalMetrics\",\n      \"decimals\": 2,\n      \"editable\": true,\n      \"error\": false,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"grid\": {},\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 31\n      },\n      \"hiddenSeries\": false,\n      \"id\": 16,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": true,\n        \"current\": true,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": true,\n        \"show\": true,\n        \"sideWidth\": 200,\n        \"sort\": \"current\",\n        \"sortDesc\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 2,\n      \"links\": [],\n      \"nullPointMode\": \"connected\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 5,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate (container_network_receive_bytes_total{image!=\\\"\\\",name=~\\\"^k8s_.*\\\",kubernetes_io_hostname=~\\\"^$Node$\\\"}[$interval])) by (container)\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"-> {{ container }}\",\n          \"metric\": \"network\",\n          \"refId\": \"A\",\n          \"step\": 10\n        },\n        {\n          \"expr\": \"- sum (rate (container_network_transmit_bytes_total{image!=\\\"\\\",name=~\\\"^k8s_.*\\\",kubernetes_io_hostname=~\\\"^$Node$\\\"}[$interval])) by (container)\",\n          \"format\": \"time_series\",\n          \"interval\": \"10s\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"<- {{ container }}\",\n          \"metric\": \"network\",\n          \"refId\": \"B\",\n          \"step\": 10\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Container network I/O ($interval avg)\",\n      \"tooltip\": {\n        \"msResolution\": false,\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"cumulative\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"Bps\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": false\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    }\n  ],\n  \"refresh\": \"10s\",\n  \"schemaVersion\": 22,\n  \"style\": \"dark\",\n  \"tags\": [\n    \"kubernetes\"\n  ],\n  \"templating\": {\n    \"list\": [\n      {\n        \"auto\": true,\n        \"auto_count\": 20,\n        \"auto_min\": \"2m\",\n        \"current\": {\n          \"selected\": false,\n          \"text\": \"auto\",\n          \"value\": \"$__auto_interval_interval\"\n        },\n        \"hide\": 2,\n        \"label\": null,\n        \"name\": \"interval\",\n        \"options\": [\n          {\n            \"selected\": true,\n            \"text\": \"auto\",\n            \"value\": \"$__auto_interval_interval\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"1m\",\n            \"value\": \"1m\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"10m\",\n            \"value\": \"10m\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"30m\",\n            \"value\": \"30m\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"1h\",\n            \"value\": \"1h\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"6h\",\n            \"value\": \"6h\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"12h\",\n            \"value\": \"12h\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"1d\",\n            \"value\": \"1d\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"7d\",\n            \"value\": \"7d\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"14d\",\n            \"value\": \"14d\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"30d\",\n            \"value\": \"30d\"\n          }\n        ],\n        \"query\": \"1m,10m,30m,1h,6h,12h,1d,7d,14d,30d\",\n        \"refresh\": 2,\n        \"skipUrlSync\": false,\n        \"type\": \"interval\"\n      },\n      {\n        \"current\": {\n          \"selected\": false,\n          \"text\": \"default\",\n          \"value\": \"default\"\n        },\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"datasource\",\n        \"options\": [],\n        \"query\": \"prometheus\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"allValue\": \".*\",\n        \"current\": {\n          \"selected\": false,\n          \"text\": \"All\",\n          \"value\": \"$__all\"\n        },\n        \"datasource\": \"TemporalMetrics\",\n        \"definition\": \"\",\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"index\": -1,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"Node\",\n        \"options\": [],\n        \"query\": \"label_values(kubernetes_io_hostname)\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"tagValuesQuery\": \"\",\n        \"tags\": [],\n        \"tagsQuery\": \"\",\n        \"type\": \"query\",\n        \"useTags\": false\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ],\n    \"time_options\": [\n      \"5m\",\n      \"15m\",\n      \"1h\",\n      \"6h\",\n      \"12h\",\n      \"24h\",\n      \"2d\",\n      \"7d\",\n      \"30d\"\n    ]\n  },\n  \"timezone\": \"browser\",\n  \"title\": \"Cluster Monitoring for Kubernetes\",\n  \"uid\": \"JABGX_-mz\",\n  \"variables\": {\n    \"list\": []\n  },\n  \"version\": 2\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/frontend-service-specific.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": 7,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 7,\n      \"panels\": [],\n      \"title\": \"Frontend\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 2,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate(service_requests{service_name=\\\"frontend\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum (rate(service_errors{service_name=\\\"frontend\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 3,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(service_requests{service_name=\\\"frontend\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 4,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(service_errors_entity_not_found{service_name=\\\"frontend\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"Entity Not Found\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(service_errors_execution_already_started{service_name=\\\"frontend\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"Execution Already Started\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum(rate(service_errors_resource_exhausted{service_name=\\\"frontend\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"Resource Exhausted\",\n          \"refId\": \"C\"\n        },\n        {\n          \"expr\": \"sum by (__name__) (rate({__name__=~\\\"service_errors_.*\\\", service_name=\\\"frontend\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ $__name__ }}\",\n          \"refId\": \"D\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors Break Down\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 5,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(service_latency_bucket{service_name=\\\"frontend\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 19\n      },\n      \"id\": 11,\n      \"panels\": [],\n      \"title\": \"Persistence\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 10,\n        \"x\": 0,\n        \"y\": 20\n      },\n      \"hiddenSeries\": false,\n      \"id\": 9,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate(persistence_requests{service_name=\\\"frontend\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum (rate(persistence_errors{service_name=\\\"frontend\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Request Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 7,\n        \"x\": 10,\n        \"y\": 20\n      },\n      \"hiddenSeries\": false,\n      \"id\": 13,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(persistence_requests{service_name=\\\"frontend\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 7,\n        \"x\": 17,\n        \"y\": 20\n      },\n      \"hiddenSeries\": false,\n      \"id\": 14,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors Break Down\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 30\n      },\n      \"hiddenSeries\": false,\n      \"id\": 16,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(persistence_latency_bucket{service_name=\\\"frontend\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 40\n      },\n      \"id\": 20,\n      \"panels\": [],\n      \"title\": \"History Client\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 9,\n        \"x\": 0,\n        \"y\": 41\n      },\n      \"hiddenSeries\": false,\n      \"id\": 18,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(client_requests{service_name=\\\"frontend\\\", service_role=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(client_errors{service_name=\\\"frontend\\\", service_role=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 7,\n        \"x\": 9,\n        \"y\": 41\n      },\n      \"hiddenSeries\": false,\n      \"id\": 21,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(client_requests{service_name=\\\"frontend\\\", service_role=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 41\n      },\n      \"hiddenSeries\": false,\n      \"id\": 22,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(client_errors{service_name=\\\"frontend\\\", service_role=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors By Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 50\n      },\n      \"hiddenSeries\": false,\n      \"id\": 24,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(client_latency_bucket{service_name=\\\"frontend\\\", service_role=\\\"history\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 59\n      },\n      \"id\": 27,\n      \"panels\": [],\n      \"title\": \"Matching Client\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 9,\n        \"x\": 0,\n        \"y\": 60\n      },\n      \"hiddenSeries\": false,\n      \"id\": 25,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(client_requests{service_name=\\\"frontend\\\", service_role=\\\"matching\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(client_errors{service_name=\\\"frontend\\\", service_role=\\\"matching\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 7,\n        \"x\": 9,\n        \"y\": 60\n      },\n      \"hiddenSeries\": false,\n      \"id\": 28,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(client_requests{service_name=\\\"frontend\\\", service_role=\\\"matching\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 60\n      },\n      \"hiddenSeries\": false,\n      \"id\": 29,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(client_errors{service_name=\\\"frontend\\\", service_role=\\\"matching\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors By Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 69\n      },\n      \"hiddenSeries\": false,\n      \"id\": 30,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(client_latency_bucket{service_name=\\\"frontend\\\", service_role=\\\"matching\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    }\n  ],\n  \"refresh\": false,\n  \"schemaVersion\": 22,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"Frontend Service Dashboard\",\n  \"uid\": \"SxRYJXZMz\",\n  \"variables\": {\n    \"list\": []\n  },\n  \"version\": 3\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/history-service-specific.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": 8,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 7,\n      \"panels\": [],\n      \"title\": \"History Service\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 7,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 2,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate(service_requests{service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum (rate(service_errors{service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 7,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 3,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(service_requests{service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 13,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 50,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate({__name__=~\\\"service_errors_.*\\\", service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 5,\n        \"x\": 19,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 4,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(service_errors_entity_not_found{service_name=\\\"history\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"Entity Not Found\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(service_errors_execution_already_started{service_name=\\\"history\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"Execution Already Started\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum(rate(service_errors_resource_exhausted{service_name=\\\"history\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"Resource Exhausted\",\n          \"refId\": \"C\"\n        },\n        {\n          \"expr\": \"sum by (__name__) (rate({__name__=~\\\"service_errors_.*\\\", service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ $__name__ }}\",\n          \"refId\": \"D\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors Break Down\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 5,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(service_latency_bucket{service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 19\n      },\n      \"id\": 55,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 6,\n            \"x\": 0,\n            \"y\": 4\n          },\n          \"hiddenSeries\": false,\n          \"id\": 52,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(task_requests{operation=~\\\"TransferActive.*\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"requests\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(task_errors{operation=~\\\"TransferActive.*\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"errors\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Active Transfer Task Requests Vs Errors\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 6,\n            \"x\": 6,\n            \"y\": 4\n          },\n          \"hiddenSeries\": false,\n          \"id\": 53,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(task_requests{operation=~\\\"TransferActive.*\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ operation }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Active Transfer Task By Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 6,\n            \"x\": 12,\n            \"y\": 4\n          },\n          \"hiddenSeries\": false,\n          \"id\": 57,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(task_errors{operation=~\\\"TransferActive.*\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ operation }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Active Transfer Task Errors By Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 6,\n            \"x\": 18,\n            \"y\": 4\n          },\n          \"hiddenSeries\": false,\n          \"id\": 60,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum (rate(task_errors_discarded{operation=~\\\"TransferActive.*\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"discarded\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum (rate(task_errors_limit_exceeded_counter{operation=~\\\"TransferActive.*\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Active Transfer Errors Breakdown\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 13\n          },\n          \"hiddenSeries\": false,\n          \"id\": 59,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_processing_bucket{operation=~\\\"TransferActive.*\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ operation }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Active Transfer Task Processing Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"s\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 8,\n            \"x\": 0,\n            \"y\": 22\n          },\n          \"hiddenSeries\": false,\n          \"id\": 61,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_bucket{operation=~\\\"TransferActive.*\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ operation }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Active Transfer Task Total Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"s\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 8,\n            \"x\": 8,\n            \"y\": 22\n          },\n          \"hiddenSeries\": false,\n          \"id\": 63,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_queue_bucket{operation=~\\\"TransferActive.*\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ operation }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Active Transfer Task Queue Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"s\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 8,\n            \"x\": 16,\n            \"y\": 22\n          },\n          \"hiddenSeries\": false,\n          \"id\": 62,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(task_attempt_bucket{operation=~\\\"TransferActive.*\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n              \"hide\": true,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ operation }}\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum by (operation) (rate(task_attempt_sum[5m]))\",\n              \"hide\": true,\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"histogram_quantile(100, sum(rate(task_attempt_bucket{operation=\\\"TransferActiveTaskCommand\\\"}[5m])) by (le))\",\n              \"format\": \"time_series\",\n              \"hide\": true,\n              \"instant\": false,\n              \"interval\": \"\",\n              \"intervalFactor\": 1,\n              \"legendFormat\": \"\",\n              \"refId\": \"C\"\n            },\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(task_attempt_bucket{operation=\\\"TransferActiveTaskCommand\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n              \"hide\": true,\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"D\"\n            },\n            {\n              \"expr\": \"sum(rate(task_attempt_bucket{operation=\\\"TransferActiveTaskCommand\\\", service_name=\\\"history\\\"}[5m])) by (le)\",\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"E\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Active Transfer Task Attempt Stats\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"ns\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Transfer Tasks Processing\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 20\n      },\n      \"id\": 84,\n      \"panels\": [],\n      \"title\": \"Timer Tasks Processing\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 0,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 76,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(task_requests{operation=~\\\"TimerActive.*\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(task_errors{operation=~\\\"TimerActive.*\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Active Timer Task Requests Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 6,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 78,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(task_requests{operation=~\\\"TimerActive.*\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Active Timer Task By Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 12,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 80,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(task_errors{operation=~\\\"TimerActive.*\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Active Timer Task Errors By Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 18,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 82,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate(task_errors_discarded{operation=~\\\"TimerActive.*\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"discarded\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum (rate(task_errors_limit_exceeded_counter{operation=~\\\"TimerActive.*\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Active Timer Errors Breakdown\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 30\n      },\n      \"hiddenSeries\": false,\n      \"id\": 86,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_processing_bucket{operation=~\\\"TimerActive.*\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Active Timer Task Processing Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 39\n      },\n      \"hiddenSeries\": false,\n      \"id\": 88,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_bucket{operation=~\\\"TimerActive.*\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Active Timer Task Total Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 39\n      },\n      \"hiddenSeries\": false,\n      \"id\": 90,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_latency_queue_bucket{operation=~\\\"TimerActive.*\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Active Timer Task Queue Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 39\n      },\n      \"hiddenSeries\": false,\n      \"id\": 92,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_attempt_bucket{operation=~\\\"TimerActive.*\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n          \"hide\": true,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum by (operation) (rate(task_attempt_sum[5m]))\",\n          \"hide\": true,\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"histogram_quantile(100, sum(rate(task_attempt_bucket{operation=\\\"TimerActiveTaskCommand\\\"}[5m])) by (le))\",\n          \"format\": \"time_series\",\n          \"hide\": true,\n          \"instant\": false,\n          \"interval\": \"\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"\",\n          \"refId\": \"C\"\n        },\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(task_attempt_bucket{operation=\\\"TimerActiveTaskCommand\\\", service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n          \"hide\": true,\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"D\"\n        },\n        {\n          \"expr\": \"sum(rate(task_attempt_bucket{operation=\\\"TimerActiveTaskCommand\\\", service_name=\\\"history\\\"}[5m])) by (le)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"E\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Active Timer Task Attempt Stats\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"ns\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 48\n      },\n      \"id\": 96,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 49\n          },\n          \"hiddenSeries\": false,\n          \"id\": 94,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation)(rate(cache_requests{cache_type=\\\"mutablestate\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}} - requests\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Mutable State Cache Requests By Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 49\n          },\n          \"hiddenSeries\": false,\n          \"id\": 101,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation)(rate(cache_miss{cache_type=\\\"mutablestate\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}} - cache_miss\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Mutable State Cache Miss By Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 57\n          },\n          \"hiddenSeries\": false,\n          \"id\": 100,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(cache_requests{cache_type=\\\"mutablestate\\\", operation!~\\\"HistoryCacheGetCurrentExecution\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_requests\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"sum(rate(cache_errors{cache_type=\\\"mutablestate\\\", operation!~\\\"HistoryCacheGetCurrentExecution\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_failures\",\n              \"refId\": \"C\"\n            },\n            {\n              \"expr\": \"sum(rate(cache_miss{cache_type=\\\"mutablestate\\\", operation!~\\\"HistoryCacheGetCurrentExecution\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_miss\",\n              \"refId\": \"D\"\n            },\n            {\n              \"expr\": \"sum(rate(acquire_lock_failed{cache_type=\\\"mutablestate\\\", operation!~\\\"HistoryCacheGetCurrentExecution\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"acquire_lock_failed\",\n              \"refId\": \"E\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Mutable State Cache\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 57\n          },\n          \"hiddenSeries\": false,\n          \"id\": 97,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(cache_latency_bucket{cache_type=\\\"mutablestate\\\", operation!~\\\"HistoryCacheGetCurrentExecution\\\"}[5m])) by (le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"latency\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Mutable State Cache Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"s\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 65\n          },\n          \"hiddenSeries\": false,\n          \"id\": 98,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(cache_requests{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetCurrentExecution\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"requests\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"sum(rate(cache_errors{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetCurrentExecution\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"failures\",\n              \"refId\": \"C\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Mutable State Load Counts\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 65\n          },\n          \"hiddenSeries\": false,\n          \"id\": 99,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(cache_latency_bucket{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetCurrentExecution\\\"}[5m])) by (le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"latency\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Mutable State Load Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"s\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 73\n          },\n          \"hiddenSeries\": false,\n          \"id\": 103,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(cache_requests{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetOrCreate\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_requests\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"sum(rate(cache_errors{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetOrCreate\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_errors\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(cache_miss{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetOrCreate\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_miss\",\n              \"refId\": \"C\"\n            },\n            {\n              \"expr\": \"sum(rate(acquire_lock_failed{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetOrCreate\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"acquire_lock_failed\",\n              \"refId\": \"D\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"GetOrCreate\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 73\n          },\n          \"hiddenSeries\": false,\n          \"id\": 102,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(cache_requests{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetOrCreateCurrent\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_requests\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"sum(rate(cache_errors{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetOrCreateCurrent\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_errors\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(cache_miss{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetOrCreateCurrent\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"cache_miss\",\n              \"refId\": \"C\"\n            },\n            {\n              \"expr\": \"sum(rate(acquire_lock_failed{cache_type=\\\"mutablestate\\\", operation=\\\"HistoryCacheGetOrCreateCurrent\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"acquire_lock_failed\",\n              \"refId\": \"D\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"GetOrCreateCurrent\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Mutable State Cache\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 49\n      },\n      \"id\": 107,\n      \"panels\": [],\n      \"title\": \"Events Cache\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 50\n      },\n      \"hiddenSeries\": false,\n      \"id\": 115,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation)(rate(cache_requests{cache_type=\\\"events\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum by (operation) (rate(cache_miss{cache_type=\\\"events\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }} - cache_miss\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Events Cache - Overview\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 58\n      },\n      \"hiddenSeries\": false,\n      \"id\": 105,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation)(rate(cache_requests{cache_type=\\\"events\\\", operation=\\\"EventsCacheGetEvent\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum by (operation)(rate(cache_miss{cache_type=\\\"events\\\", operation=\\\"EventsCacheGetEvent\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"cache_miss\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum by (operation)(rate(cache_errors{cache_type=\\\"events\\\", operation=\\\"EventsCacheGetEvent\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Get Events\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 58\n      },\n      \"hiddenSeries\": false,\n      \"id\": 109,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(cache_latency_bucket{cache_type=\\\"events\\\", operation=\\\"EventsCacheGetEvent\\\"}[5m])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"latency\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Get Events Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 66\n      },\n      \"hiddenSeries\": false,\n      \"id\": 110,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(cache_requests{cache_type=\\\"events\\\", operation=\\\"EventsCachePutEvent\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Put Events\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 66\n      },\n      \"hiddenSeries\": false,\n      \"id\": 111,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(cache_latency_bucket{cache_type=\\\"events\\\", operation=\\\"EventsCachePutEvent\\\"}[5m])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"latency\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Put Events Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 74\n      },\n      \"hiddenSeries\": false,\n      \"id\": 112,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(cache_requests{cache_type=\\\"events\\\", operation=\\\"EventsCacheGetFromStore\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Get Events From Store\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 74\n      },\n      \"hiddenSeries\": false,\n      \"id\": 113,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(cache_latency_bucket{cache_type=\\\"events\\\", operation=\\\"EventsCacheGetFromStore\\\"}[5m])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"latency\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Get Events From Store Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 82\n      },\n      \"id\": 119,\n      \"panels\": [],\n      \"title\": \"Workflow Task Insights\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 83\n      },\n      \"hiddenSeries\": false,\n      \"id\": 117,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (commandType) (rate(command{service_name=\\\"history\\\", operation=\\\"RespondWorkflowTaskCompleted\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{commandType}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Workflow Task Break Down\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 91\n      },\n      \"hiddenSeries\": false,\n      \"id\": 128,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(service_requests{service_name=\\\"history\\\", operation=\\\"RespondWorkflowTaskCompleted\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"commands_complete\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(complete_workflow_task_sticky_enabled_count{service_name=\\\"history\\\", operation=\\\"RespondWorkflowTaskCompleted\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"sticky_tasks\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum(rate(complete_workflow_task_sticky_disabled_count{service_name=\\\"history\\\", operation=\\\"RespondWorkflowTaskCompleted\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"non_sticky_tasks\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Sticky Vs Non Sticky\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 91\n      },\n      \"hiddenSeries\": false,\n      \"id\": 121,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(failed_workflow_tasks{service_name=\\\"history\\\", operation=\\\"RespondWorkflowTaskCompleted\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"failed\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Failed Workflow Task\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 99\n      },\n      \"hiddenSeries\": false,\n      \"id\": 122,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(empty_completion_commands{service_name=\\\"history\\\", operation=\\\"RespondWorkflowTaskCompleted\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"empty_decision\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Empty Workflow Tasks\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 99\n      },\n      \"hiddenSeries\": false,\n      \"id\": 123,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(multiple_completion_commands{service_name=\\\"history\\\", operation=\\\"RespondWorkflowTaskCompleted\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"empty_workflow\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Multiple Complete Workflows\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 107\n      },\n      \"id\": 127,\n      \"panels\": [],\n      \"title\": \"Mutable State Insights\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 108\n      },\n      \"hiddenSeries\": false,\n      \"id\": 125,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(stale_mutable_state{service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Stale Mutable State\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 116\n      },\n      \"id\": 67,\n      \"panels\": [],\n      \"title\": \"Shard Controller\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 117\n      },\n      \"hiddenSeries\": false,\n      \"id\": 65,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(acquire_shards_count[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"acquire\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Acquire Shards Count\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 117\n      },\n      \"hiddenSeries\": false,\n      \"id\": 69,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(acquire_shards_latency_bucket{service_name=\\\"history\\\"}[5m])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"acquire_latency\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Acquire Shards Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 125\n      },\n      \"hiddenSeries\": false,\n      \"id\": 71,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(shard_closed_count[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"shards_closed\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Shards Closed\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 125\n      },\n      \"hiddenSeries\": false,\n      \"id\": 73,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(sharditem_created_count[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"item_created\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(sharditem_removed_count[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"item_removed\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Shard Item Counts\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 133\n      },\n      \"hiddenSeries\": false,\n      \"id\": 74,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(sharditem_acquisition_latency{service_name=\\\"history\\\"}[5m])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"acquire_latency\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Shard Item Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 141\n      },\n      \"id\": 11,\n      \"panels\": [],\n      \"title\": \"Persistence\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 10,\n        \"x\": 0,\n        \"y\": 142\n      },\n      \"hiddenSeries\": false,\n      \"id\": 9,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate(persistence_requests{service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum (rate(persistence_errors{service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Request Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 7,\n        \"x\": 10,\n        \"y\": 142\n      },\n      \"hiddenSeries\": false,\n      \"id\": 13,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(persistence_requests{service_name=\\\"history\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 7,\n        \"x\": 17,\n        \"y\": 142\n      },\n      \"hiddenSeries\": false,\n      \"id\": 14,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors Break Down\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 152\n      },\n      \"hiddenSeries\": false,\n      \"id\": 16,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(persistence_latency_bucket{service_name=\\\"history\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    }\n  ],\n  \"refresh\": false,\n  \"schemaVersion\": 22,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"History Service Dashboards\",\n  \"uid\": \"0WdRDEVMk\",\n  \"variables\": {\n    \"list\": []\n  },\n  \"version\": 1\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/main.yaml",
    "content": ""
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/matching-service-specific.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": 17,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 7,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 8,\n            \"x\": 0,\n            \"y\": 1\n          },\n          \"hiddenSeries\": false,\n          \"id\": 2,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum (rate(service_requests{service_name=\\\"matching\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"requests\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum (rate(service_errors{service_name=\\\"matching\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"errors\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Requests Per Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 8,\n            \"x\": 8,\n            \"y\": 1\n          },\n          \"hiddenSeries\": false,\n          \"id\": 3,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(service_requests{service_name=\\\"matching\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Requests Per Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 8,\n            \"x\": 16,\n            \"y\": 1\n          },\n          \"hiddenSeries\": false,\n          \"id\": 4,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(service_errors_entity_not_found{service_name=\\\"matching\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"Entity Not Found\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(service_errors_execution_already_started{service_name=\\\"matching\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"Execution Already Started\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"sum(rate(service_errors_resource_exhausted{service_name=\\\"matching\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"Resource Exhausted\",\n              \"refId\": \"C\"\n            },\n            {\n              \"expr\": \"sum by (__name__) (rate({__name__=~\\\"service_errors_.*\\\", service_name=\\\"matching\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ $__name__ }}\",\n              \"refId\": \"D\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Errors Break Down\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 10\n          },\n          \"hiddenSeries\": false,\n          \"id\": 5,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(service_latency_bucket{service_name=\\\"matching\\\"}[5m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Matching\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"id\": 28,\n      \"panels\": [],\n      \"title\": \"Tasks\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 2\n      },\n      \"hiddenSeries\": false,\n      \"id\": 26,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(poll_success[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Success\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(poll_timeouts[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Timeouts\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum(rate(poll_success_sync[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Sync Matches\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Polls\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 2\n      },\n      \"hiddenSeries\": false,\n      \"id\": 30,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate(sync_throttle_count[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Throttle\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Throttled Requests\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 43,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(syncmatch_latency_bucket{service_name=~\\\"matching\\\"}[5m])) by (operation, le))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"sync - {{operation}}\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Sync Match - Latencies\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 44,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(asyncmatch_latency_bucket{service_name=~\\\"matching\\\"}[5m])) by (operation, le))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Async Match - Latencies\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 18\n      },\n      \"hiddenSeries\": false,\n      \"id\": 41,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(forwarded[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"forwarded_api_calls\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Forwarded Calls\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 25\n      },\n      \"hiddenSeries\": false,\n      \"id\": 46,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(local_to_local_matches[5m])) \",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Local To Local Match\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 25\n      },\n      \"hiddenSeries\": false,\n      \"id\": 47,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(local_to_remote_matches[5m])) \",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Local To Remote Match\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 33\n      },\n      \"hiddenSeries\": false,\n      \"id\": 48,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(remote_to_local_matches[5m])) \",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Remote To Local Match\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 33\n      },\n      \"hiddenSeries\": false,\n      \"id\": 49,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(remote_to_remote_matches[5m])) \",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Remote To Remote Match\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 41\n      },\n      \"id\": 34,\n      \"panels\": [],\n      \"title\": \"Tasklist Manager\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 42\n      },\n      \"hiddenSeries\": false,\n      \"id\": 32,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(lease_requests[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(lease_failures[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Lease Request Vs Failures\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 42\n      },\n      \"hiddenSeries\": false,\n      \"id\": 39,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(tasks_expired[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"expired_tasks\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Expired Tasks\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 50\n      },\n      \"hiddenSeries\": false,\n      \"id\": 37,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(sync_throttle_count[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"sync_throttle\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(buffer_throttle_count[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"buffer_throttle\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Throttle\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 50\n      },\n      \"hiddenSeries\": false,\n      \"id\": 35,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(condition_failed_errors[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"condition_failed\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Error Breakdown\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 58\n      },\n      \"id\": 11,\n      \"panels\": [],\n      \"title\": \"Persistence\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 10,\n        \"x\": 0,\n        \"y\": 59\n      },\n      \"hiddenSeries\": false,\n      \"id\": 9,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum (rate(persistence_requests{service_name=\\\"matching\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum (rate(persistence_errors{service_name=\\\"matching\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Request Vs Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 7,\n        \"x\": 10,\n        \"y\": 59\n      },\n      \"hiddenSeries\": false,\n      \"id\": 13,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(persistence_requests{service_name=\\\"matching\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 7,\n        \"x\": 17,\n        \"y\": 59\n      },\n      \"hiddenSeries\": false,\n      \"id\": 14,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Errors Break Down\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 69\n      },\n      \"hiddenSeries\": false,\n      \"id\": 16,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(persistence_latency_bucket{service_name=\\\"matching\\\"}[5m])) by (operation, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 79\n      },\n      \"id\": 20,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 9,\n            \"x\": 0,\n            \"y\": 3\n          },\n          \"hiddenSeries\": false,\n          \"id\": 18,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(client_requests{service_name=\\\"matching\\\", service_role=\\\"history\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"requests\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(client_errors{service_name=\\\"matching\\\", service_role=\\\"history\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"errors\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Requests Vs Errors\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 7,\n            \"x\": 9,\n            \"y\": 3\n          },\n          \"hiddenSeries\": false,\n          \"id\": 21,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(client_requests{service_name=\\\"matching\\\", service_role=\\\"history\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Requests Per Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 8,\n            \"x\": 16,\n            \"y\": 3\n          },\n          \"hiddenSeries\": false,\n          \"id\": 22,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(client_errors{service_name=\\\"matching\\\", service_role=\\\"history\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Errors By Operation\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 12\n          },\n          \"hiddenSeries\": false,\n          \"id\": 24,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(client_latency_bucket{service_name=\\\"matching\\\", service_role=\\\"history\\\"}[5m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Latency\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"History Client\",\n      \"type\": \"row\"\n    }\n  ],\n  \"refresh\": false,\n  \"schemaVersion\": 22,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"Matching Service Dashboard\",\n  \"uid\": \"wuh-8uZGk\",\n  \"variables\": {\n    \"list\": []\n  },\n  \"version\": 4\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/queries-metrics.json",
    "content": "{\n  \"__inputs\": [\n    {\n      \"name\": \"DS_PROMETHEUS\",\n      \"label\": \"Prometheus\",\n      \"description\": \"\",\n      \"type\": \"datasource\",\n      \"pluginId\": \"prometheus\",\n      \"pluginName\": \"Prometheus\"\n    }\n  ],\n  \"__requires\": [\n    {\n      \"type\": \"grafana\",\n      \"id\": \"grafana\",\n      \"name\": \"Grafana\",\n      \"version\": \"8.0.0\"\n    },\n    {\n      \"type\": \"panel\",\n      \"id\": \"graph\",\n      \"name\": \"Graph\",\n      \"version\": \"\"\n    },\n    {\n      \"type\": \"datasource\",\n      \"id\": \"prometheus\",\n      \"name\": \"Prometheus\",\n      \"version\": \"1.0.0\"\n    }\n  ],\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"Dashboard to monitor database query performance\",\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": null,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"agents-api\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"hiddenSeries\": false,\n      \"id\": 2,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThresholds\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(db_query_counter_total[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{endpoint}} {{method}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"DB Query Rate\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"Queries per second\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"agents-api\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 0\n      },\n      \"hiddenSeries\": false,\n      \"id\": 4,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThresholds\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(db_query_latency_summary_sum[$__rate_interval])) / sum(rate(db_query_latency_summary_count[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Avg\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"DB Query Latency Summary\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": \"Latency (ms)\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"datasource\": \"agents-api\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 9\n      },\n      \"id\": 6,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.5, rate(db_query_latency_hist_bucket[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"P50\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"histogram_quantile(0.9, rate(db_query_latency_hist_bucket[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"P90\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"histogram_quantile(0.99, rate(db_query_latency_hist_bucket[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"P99\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"title\": \"DB Query Latency Histogram\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": \"agents-api\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"custom\": {}\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 9\n      },\n      \"id\": 8,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"multi\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(db_query_latency_hist_sum[$__rate_interval])) / sum(rate(db_query_latency_hist_count[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Avg\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"DB Query Average Latency\",\n      \"type\": \"timeseries\"\n    }\n  ],\n  \"refresh\": \"5s\",\n  \"schemaVersion\": 36,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-1h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {},\n  \"timezone\": \"\",\n  \"title\": \"DB Query Performance Dashboard\",\n  \"uid\": \"db-query-performance\",\n  \"version\": 1\n}"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/requests-metrics.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"agents-api\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": 1,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"agents-api\",\n      \"fill\": 1,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 2,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.50, sum(rate(http_request_duration_seconds_bucket[$__rate_interval])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"50th Percentile\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"histogram_quantile(0.90, sum(rate(http_request_duration_seconds_bucket[$__rate_interval])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"90th Percentile\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[$__rate_interval])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"95th Percentile\",\n          \"refId\": \"C\"\n        },\n        {\n          \"expr\": \"histogram_quantile(0.99, sum(rate(http_request_duration_seconds_bucket[$__rate_interval])) by (le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"99th Percentile\",\n          \"refId\": \"D\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Request Latency Percentiles\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"agents-api\",\n      \"fill\": 1,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 0\n      },\n      \"id\": 3,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(http_request_duration_seconds_sum[$__rate_interval])) / sum(rate(http_request_duration_seconds_count[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Average Latency\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Request Latency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"s\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"agents-api\",\n      \"fill\": 1,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 9\n      },\n      \"id\": 6,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(http_requests_total[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Total Requests\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Request Frequency\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"Requests/s\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"agents-api\",\n      \"fill\": 1,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 18\n      },\n      \"id\": 7,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(http_requests_total)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Total Requests\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Total Requests Count\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"Total Requests\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"agents-api\",\n      \"fill\": 1,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 27\n      },\n      \"id\": 8,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(http_requests_total{status=~\\\"4..\\\"}[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"4xx Errors\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(http_requests_total{status=~\\\"5..\\\"}[$__rate_interval]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"5xx Errors\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"HTTP Errors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": \"Errors/s\",\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    }\n  ],\n  \"refresh\": \"5s\",\n  \"schemaVersion\": 36,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-1h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {},\n  \"timezone\": \"\",\n  \"title\": \"FastAPI Request Latency, Count, and HTTP Errors\",\n  \"uid\": \"fastapi-latency-count\",\n  \"version\": 1\n}"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/sdk-general.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": 7,\n  \"iteration\": 1601313172987,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 8,\n      \"panels\": [],\n      \"title\": \"RPC Overview ($Namespace)\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 2,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(temporal_request{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(temporal_request_failure{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"failures\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Requests Vs Failures\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 7,\n        \"x\": 8,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 5,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) ((rate(temporal_request{namespace=~\\\"$Namespace\\\"}[5m])))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"RPC Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 9,\n        \"x\": 15,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 4,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(temporal_request_failure{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"RPC Failures Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 11\n      },\n      \"hiddenSeries\": false,\n      \"id\": 6,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"dataLinks\": []\n      },\n      \"percentage\": false,\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum by (namespace, operation, le) (rate(temporal_request_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ operation }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"RPC Latencies ($Namespace)\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 20\n      },\n      \"id\": 12,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 2\n          },\n          \"hiddenSeries\": false,\n          \"id\": 10,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(temporal_workflow_completed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"success\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(temporal_workflow_failed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"failed\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"sum(rate(temporal_workflow_canceled{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"canceled\",\n              \"refId\": \"C\"\n            },\n            {\n              \"expr\": \"sum(rate(temporal_workflow_continue_as_new{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"continued_as_new\",\n              \"refId\": \"D\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Completion\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 2\n          },\n          \"hiddenSeries\": false,\n          \"id\": 15,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_endtoend_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, workflow_type, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} - {{ workflow_type }}\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow End-To-End Latencies\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 10\n          },\n          \"hiddenSeries\": false,\n          \"id\": 16,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace, workflow_type) (rate(temporal_workflow_completed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} - {{ workflow_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Success By Type\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 10\n          },\n          \"hiddenSeries\": false,\n          \"id\": 17,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace, workflow_type) (rate(temporal_workflow_failed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} - {{ workflow_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Failures By Type\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Workflows\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 21\n      },\n      \"id\": 20,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 12\n          },\n          \"hiddenSeries\": false,\n          \"id\": 21,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace, workflow_type) (rate(temporal_workflow_task_queue_poll_succeed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} - {{ workflow_type }}\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Throughput By WorkflowType\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 12\n          },\n          \"hiddenSeries\": false,\n          \"id\": 18,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (rate(temporal_workflow_task_queue_poll_succeed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }}\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Throughput By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 20\n          },\n          \"hiddenSeries\": false,\n          \"id\": 14,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (rate(temporal_workflow_task_queue_poll_empty{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"Empty Poll - {{ namespace }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Empty Polls\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 28\n          },\n          \"hiddenSeries\": false,\n          \"id\": 22,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_schedule_to_start_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Backlog By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 28\n          },\n          \"hiddenSeries\": false,\n          \"id\": 23,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_schedule_to_start_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, workflow_type, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} -- {{ workflow_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Backlog By Workflow Type\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 36\n          },\n          \"hiddenSeries\": false,\n          \"id\": 28,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (rate(temporal_workflow_task_execution_failed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }}\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Failed By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 36\n          },\n          \"hiddenSeries\": false,\n          \"id\": 29,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace, workflow_type) (rate(temporal_workflow_task_execution_failed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} -- {{ workflow_type }}\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Failed By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 44\n          },\n          \"hiddenSeries\": false,\n          \"id\": 25,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_execution_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Execution Latency By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 44\n          },\n          \"hiddenSeries\": false,\n          \"id\": 24,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_execution_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, workflow_type, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} -- {{ workflow_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Execution Latency By Workflow Type\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 52\n          },\n          \"hiddenSeries\": false,\n          \"id\": 27,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_replay_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Replay Latency By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 52\n          },\n          \"hiddenSeries\": false,\n          \"id\": 26,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_replay_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, workflow_type, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} -- {{ workflow_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Workflow Task Replay Latency By Workflow Type\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Workflow Task Processing\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 22\n      },\n      \"id\": 42,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 1\n          },\n          \"hiddenSeries\": false,\n          \"id\": 38,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (rate(temporal_activity_execution_latency_count{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Activity Throughput By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 1\n          },\n          \"hiddenSeries\": false,\n          \"id\": 40,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace, activity_type) (rate(temporal_activity_execution_latency_count{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} - {{ activity_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Activity Throughput By Activity Type\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 9\n          },\n          \"hiddenSeries\": false,\n          \"id\": 44,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace, activity_type) (rate(temporal_activity_execution_failed{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} - {{ activity_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Failed Activity by Type\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 18\n          },\n          \"hiddenSeries\": false,\n          \"id\": 46,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_activity_execution_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, activity_type, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} - {{ activity_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Activity Execution Latencies\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 18\n          },\n          \"hiddenSeries\": false,\n          \"id\": 48,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_activity_endtoend_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, activity_type, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Activity End-To-End Latencies\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Activities\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 23\n      },\n      \"id\": 34,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 6\n          },\n          \"hiddenSeries\": false,\n          \"id\": 31,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (rate(temporal_activity_poll_no_task{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Empty Activity Polls By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 6\n          },\n          \"hiddenSeries\": false,\n          \"id\": 32,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_activity_schedule_to_start_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Activity Task Backlog By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurationms\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 14\n          },\n          \"hiddenSeries\": false,\n          \"id\": 36,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_activity_schedule_to_start_latency_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, activity_type, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }} - {{ activity_type }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Activity Task Backlog By Activity Type\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurationms\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Activity Task Processing\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 24\n      },\n      \"id\": 57,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 9,\n            \"x\": 0,\n            \"y\": 6\n          },\n          \"hiddenSeries\": false,\n          \"id\": 50,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (rate(temporal_sticky_cache_hit{namespace=~\\\"$Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Sticky Cache Hit\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 7,\n            \"x\": 9,\n            \"y\": 6\n          },\n          \"hiddenSeries\": false,\n          \"id\": 52,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (rate(temporal_sticky_cache_miss{namespace=~\\\"Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace  }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Sticky Cache Miss\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 8,\n            \"x\": 16,\n            \"y\": 6\n          },\n          \"hiddenSeries\": false,\n          \"id\": 53,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (rate(temporal_sticky_cache_total_forced_eviction{namespace=~\\\"Namespace\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace  }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Sticky Cache Forced Eviction\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 14\n          },\n          \"hiddenSeries\": false,\n          \"id\": 55,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (namespace) (temporal_sticky_cache_size)\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ namespace }}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeFrom\": null,\n          \"timeRegions\": [],\n          \"timeShift\": null,\n          \"title\": \"Sticky Cache Size\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"buckets\": null,\n            \"mode\": \"time\",\n            \"name\": null,\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"label\": null,\n              \"logBase\": 1,\n              \"max\": null,\n              \"min\": null,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false,\n            \"alignLevel\": null\n          }\n        }\n      ],\n      \"title\": \"Sticky Cache\",\n      \"type\": \"row\"\n    }\n  ],\n  \"schemaVersion\": 22,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": [\n      {\n        \"allValue\": \".*\",\n        \"current\": {\n          \"selected\": true,\n          \"text\": \"All\",\n          \"value\": \"$__all\"\n        },\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"Namespace\",\n        \"options\": [\n          {\n            \"selected\": true,\n            \"text\": \"All\",\n            \"value\": \"$__all\"\n          }\n        ],\n        \"skipUrlSync\": false,\n        \"type\": \"custom\"\n      },\n      {\n        \"allValue\": \".*\",\n        \"current\": {\n          \"selected\": true,\n          \"text\": \"All\",\n          \"value\": \"$__all\"\n        },\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"label\": null,\n        \"multi\": false,\n        \"name\": \"WorkflowType\",\n        \"options\": [\n          {\n            \"selected\": true,\n            \"text\": \"All\",\n            \"value\": \"$__all\"\n          }\n        ],\n        \"skipUrlSync\": false,\n        \"type\": \"custom\"\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"SDK Metrics\",\n  \"variables\": {\n    \"list\": []\n  },\n  \"version\": 2\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/sdk-java.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\",\n          \"uid\": \"grafana\"\n        },\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"target\": {\n          \"limit\": 100,\n          \"matchAny\": false,\n          \"tags\": [],\n          \"type\": \"dashboard\"\n        },\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"fiscalYearStartMonth\": 0,\n  \"graphTooltip\": 0,\n  \"id\": 11,\n  \"links\": [],\n  \"liveNow\": false,\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 8,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"RPC Overview ($Namespace)\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 2,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum(rate(temporal_request_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"requests\",\n          \"range\": true,\n          \"refId\": \"A\"\n        },\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum(rate(temporal_request_failure_total{namespace=\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"failures\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Requests Vs Failures\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:147\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:148\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 7,\n        \"x\": 8,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 5,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (operation) ((rate(temporal_request_total{namespace=~\\\"$Namespace\\\"}[5m])))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"RPC Requests Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:307\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:308\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 9,\n        \"x\": 15,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 4,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (operation) (rate(temporal_request_failure_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ operation }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"RPC Failures Per Operation\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:388\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:389\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 11\n      },\n      \"hiddenSeries\": false,\n      \"id\": 6,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum by (namespace, operation, le) (rate(temporal_request_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ operation }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"RPC Latencies ($Namespace)\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:548\",\n          \"format\": \"dtdurations\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:549\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 20\n      },\n      \"id\": 12,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Workflows\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 10,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum(rate(temporal_workflow_completed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"success\",\n          \"range\": true,\n          \"refId\": \"A\"\n        },\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum(rate(temporal_workflow_failed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"failed\",\n          \"range\": true,\n          \"refId\": \"B\"\n        },\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum(rate(temporal_workflow_canceled_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"canceled\",\n          \"range\": true,\n          \"refId\": \"C\"\n        },\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum(rate(temporal_workflow_continue_as_new_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"continued_as_new\",\n          \"range\": true,\n          \"refId\": \"D\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Completion\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:629\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:630\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 21\n      },\n      \"hiddenSeries\": false,\n      \"id\": 15,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_endtoend_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, workflow_type, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ workflow_type }}\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow End-To-End Latencies\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:710\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:711\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 29\n      },\n      \"hiddenSeries\": false,\n      \"id\": 16,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace, workflow_type) (rate(temporal_workflow_completed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ workflow_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Success By Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:791\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:792\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 29\n      },\n      \"hiddenSeries\": false,\n      \"id\": 17,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace, workflow_type) (rate(temporal_workflow_failed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ workflow_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Failures By Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:872\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:873\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 37\n      },\n      \"id\": 20,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Workflow Task Processing\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 38\n      },\n      \"hiddenSeries\": false,\n      \"id\": 21,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace, workflow_type) (rate(temporal_workflow_task_queue_poll_succeed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ workflow_type }}\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Throughput By WorkflowType\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:668\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:669\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 38\n      },\n      \"hiddenSeries\": false,\n      \"id\": 18,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace) (rate(temporal_workflow_task_queue_poll_succeed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }}\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Throughput By Namespace\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:757\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:758\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 46\n      },\n      \"hiddenSeries\": false,\n      \"id\": 14,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace) (rate(temporal_workflow_task_queue_poll_empty_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Empty Poll - {{ namespace }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Empty Polls\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:846\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:847\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 54\n      },\n      \"hiddenSeries\": false,\n      \"id\": 22,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_schedule_to_start_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Backlog By Namespace\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:959\",\n          \"format\": \"dtdurations\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:960\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 54\n      },\n      \"hiddenSeries\": false,\n      \"id\": 23,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_schedule_to_start_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, workflow_type, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} -- {{ workflow_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Backlog By Workflow Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:1040\",\n          \"format\": \"dtdurations\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:1041\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 62\n      },\n      \"hiddenSeries\": false,\n      \"id\": 28,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace) (rate(temporal_workflow_task_execution_failed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }}\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Failed By Namespace\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:1200\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:1201\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 62\n      },\n      \"hiddenSeries\": false,\n      \"id\": 29,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace, workflow_type) (rate(temporal_workflow_task_execution_failed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} -- {{ workflow_type }}\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Failed  By Workflow Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:1281\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:1282\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 70\n      },\n      \"hiddenSeries\": false,\n      \"id\": 25,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_execution_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Execution Latency By Namespace\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:1522\",\n          \"format\": \"dtdurations\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:1523\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 70\n      },\n      \"hiddenSeries\": false,\n      \"id\": 24,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_execution_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, workflow_type, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} -- {{ workflow_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Execution Latency By Workflow Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:1362\",\n          \"format\": \"dtdurations\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:1363\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 78\n      },\n      \"hiddenSeries\": false,\n      \"id\": 27,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_replay_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Replay Latency By Namespace\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2109\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2110\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 78\n      },\n      \"hiddenSeries\": false,\n      \"id\": 26,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_workflow_task_replay_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, workflow_type, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} -- {{ workflow_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Task Replay Latency By Workflow Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2190\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2191\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 86\n      },\n      \"id\": 42,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Activities\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 87\n      },\n      \"hiddenSeries\": false,\n      \"id\": 38,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace) (rate(temporal_activity_execution_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Activity Throughput By Namespace\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2271\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2272\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 87\n      },\n      \"hiddenSeries\": false,\n      \"id\": 40,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace, activity_type) (rate(temporal_activity_execution_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ activity_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Activity Throughput By Activity Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2352\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2353\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 95\n      },\n      \"hiddenSeries\": false,\n      \"id\": 44,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace, activity_type) (rate(temporal_activity_execution_failed_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ activity_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Failed Activity by Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2433\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2434\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 104\n      },\n      \"hiddenSeries\": false,\n      \"id\": 46,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_activity_execution_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, activity_type, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ activity_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Activity Execution Latencies\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2830\",\n          \"format\": \"dtdurations\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2831\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 104\n      },\n      \"hiddenSeries\": false,\n      \"id\": 36,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_activity_schedule_to_start_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, activity_type, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }} - {{ activity_type }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Activity Task Backlog By Activity Type\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3241\",\n          \"format\": \"dtdurationms\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3242\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 112\n      },\n      \"id\": 34,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Activity Task Processing\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 113\n      },\n      \"hiddenSeries\": false,\n      \"id\": 31,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace) (rate(temporal_activity_poll_no_task_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Empty Activity Polls By Namespace\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:2996\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:2997\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 113\n      },\n      \"hiddenSeries\": false,\n      \"id\": 32,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.95, sum(rate(temporal_activity_schedule_to_start_latency_seconds_bucket{namespace=~\\\"$Namespace\\\"}[5m])) by (namespace, le))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Activity Task Backlog By Namespace\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3160\",\n          \"format\": \"dtdurationms\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3161\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 121\n      },\n      \"id\": 57,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Sticky Cache\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 9,\n        \"x\": 0,\n        \"y\": 122\n      },\n      \"hiddenSeries\": false,\n      \"id\": 50,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace) (rate(temporal_sticky_cache_hit_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Sticky Cache Hit\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3322\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3323\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 7,\n        \"x\": 9,\n        \"y\": 122\n      },\n      \"hiddenSeries\": false,\n      \"id\": 52,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace) (rate(temporal_sticky_cache_miss_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace  }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Sticky Cache Miss\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3403\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3404\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 122\n      },\n      \"hiddenSeries\": false,\n      \"id\": 53,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"sum by (namespace) (rate(temporal_sticky_cache_total_forced_eviction_total{namespace=~\\\"$Namespace\\\"}[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace  }}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Sticky Cache Forced Eviction\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:3484\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:3485\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"xRvuMWd4z\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 130\n      },\n      \"hiddenSeries\": false,\n      \"id\": 55,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"9.1.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"xRvuMWd4z\"\n          },\n          \"expr\": \"sum by (namespace) (temporal_sticky_cache_size)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ namespace }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Sticky Cache Size\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    }\n  ],\n  \"schemaVersion\": 37,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": [\n      {\n        \"current\": {\n          \"selected\": true,\n          \"text\": \"default\",\n          \"value\": \"default\"\n        },\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"multi\": false,\n        \"name\": \"Datasource\",\n        \"options\": [],\n        \"query\": \"prometheus\",\n        \"queryValue\": \"\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"current\": {\n          \"selected\": false,\n          \"text\": [\n            \"\"\n          ],\n          \"value\": [\n            \"\"\n          ]\n        },\n        \"datasource\": {\n          \"type\": \"prometheus\",\n          \"uid\": \"${Datasource}\"\n        },\n        \"definition\": \"label_values(namespace)\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"multi\": true,\n        \"name\": \"Namespace\",\n        \"options\": [],\n        \"query\": {\n          \"query\": \"label_values(namespace)\",\n          \"refId\": \"StandardVariableQuery\"\n        },\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"type\": \"query\"\n      },\n      {\n        \"allValue\": \".*\",\n        \"current\": {\n          \"selected\": false,\n          \"text\": \"All\",\n          \"value\": \"$__all\"\n        },\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"multi\": false,\n        \"name\": \"WorkflowType\",\n        \"options\": [\n          {\n            \"selected\": true,\n            \"text\": \"All\",\n            \"value\": \"$__all\"\n          }\n        ],\n        \"query\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"custom\"\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\",\n      \"2h\",\n      \"1d\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"SDK Metrics (Java)\",\n  \"uid\": \"whtBuu0Vk\",\n  \"version\": 42,\n  \"weekStart\": \"\"\n}"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/server-general.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"target\": {\n          \"limit\": 100,\n          \"matchAny\": false,\n          \"tags\": [],\n          \"type\": \"dashboard\"\n        },\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"description\": \"Temporal Server Metrics Dashboard\",\n  \"editable\": true,\n  \"fiscalYearStartMonth\": 0,\n  \"graphTooltip\": 0,\n  \"id\": 2,\n  \"iteration\": 1642627344913,\n  \"links\": [],\n  \"liveNow\": false,\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 70,\n      \"panels\": [],\n      \"title\": \"Temporal Actions\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": null,\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 68,\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"targets\": [\n        {\n          \"datasource\": null,\n          \"editorMode\": \"code\",\n          \"expr\": \"sum(rate(service_requests{service_name=\\\"frontend\\\",operation=~\\\"QueryWorkflow|RecordActivityTaskHeartbeat|RecordActivityTaskHeartbeatById|ResetWorkflowExecution|StartWorkflowExecution|SignalWorkflowExecution|SignalWithStartWorkflowExecution|CreateSchedule|UpdateSchedule|DeleteSchedule|PatchSchedule|UpdateWorkflowExecution|RespondActivityTaskCompleted|RespondActivityTaskFailed\\\"}[1m])) + (sum (rate(start_timer_command{service_name=\\\"history\\\"}[1m])) OR on() vector(0)) + (sum (rate(signal_external_workflow_command{service_name=\\\"history\\\"}[1m])) OR on() vector(0)) + (sum (rate(record_marker_command{service_name=\\\"history\\\"}[1m])) + sum (rate(continue_as_new_command{service_name=\\\"history\\\"}[1m]))OR on() vector(0)) + (sum (rate(signal_external_workflow_command{service_name=\\\"history\\\"}[1m]))OR on() vector(0)) + 2 * (sum (rate(child_workflow_command{service_name=\\\"history\\\"}[1m]))OR on() vector(0)) + (sum (rate(upsert_workflow_search_attributes_command{service_name=\\\"history\\\"}[1m]))OR on() vector(0)) + (sum (rate(modify_workflow_properties_command{service_name=\\\"history\\\"}[1m]))OR on() vector(0))\",\n          \"legendFormat\": \"OSS v1.16 And Older\",\n          \"range\": true,\n          \"refId\": \"A\"\n        },\n        {\n          \"datasource\": null,\n          \"editorMode\": \"code\",\n          \"expr\": \"sum(rate(action{service_name=\\\"frontend\\\"}[1m]))\",\n          \"hide\": false,\n          \"legendFormat\": \"OSS v1.17 And Newer\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"title\": \"Actions\",\n      \"type\": \"graph\"\n    },\n    {\n      \"collapsed\": false,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 11,\n      \"panels\": [],\n      \"title\": \"Temporal\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 2,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"100 - (sum(rate(service_errors[2m]) OR on() vector(0)) / sum(rate(service_requests[2m])) * 100)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"availability\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Service Availability (Based on Frontend Calls)\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 6,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"links\": [],\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"100 - (sum (rate(persistence_errors[2m]) OR on() vector(0)) /sum (rate(persistence_requests[2m])) * 100)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"availability\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Persistence Availability\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 0,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 4,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (operation) (rate(service_requests{operation=~\\\"StartWorkflowExecution|SignalWorkflowExecution|SignalWithStartWorkflowExecution\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"External Events\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 6,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 7,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(service_requests{ operation=\\\"AddWorkflowTask\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Scheduled\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(service_requests{ operation=\\\"RecordWorkflowTaskStarted\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Started\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum(rate(service_requests{ operation=\\\"RespondWorkflowTaskCompleted\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Completed\",\n          \"refId\": \"C\"\n        },\n        {\n          \"expr\": \"sum(rate(service_requests{ operation=\\\"RespondWorkflowTaskFailed\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Failed\",\n          \"refId\": \"D\"\n        },\n        {\n          \"expr\": \"sum(rate(schedule_to_start_timeout{ operation=\\\"TimerActiveTaskWorkflowTimeout\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Sticky Task Queue Timeout\",\n          \"refId\": \"E\"\n        },\n        {\n          \"expr\": \"sum(rate(start_to_close_timeout{ operation=\\\"TimerActiveTaskWorkflowTimeout\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Workflow Task Timeout\",\n          \"refId\": \"F\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Workflow Tasks\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 12,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 8,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(service_requests{operation=\\\"AddActivityTask\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Scheduled\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(service_requests{operation=\\\"RecordActivityTaskStarted\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Started\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum(rate(service_requests{operation=~\\\"RespondActivityTaskCompleted|RespondActivityTaskFailed|RespondActivityTaskCanceled\\\"}[2m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"Completed\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Activities\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 6,\n        \"x\": 18,\n        \"y\": 10\n      },\n      \"hiddenSeries\": false,\n      \"id\": 9,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Pollers\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 20\n      },\n      \"hiddenSeries\": false,\n      \"id\": 63,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum(rate(membership_changed_count[2m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"membership_changed\",\n          \"refId\": \"A\"\n        },\n        {\n          \"expr\": \"sum(rate(sharditem_created_count[2m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"shard_item_created\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum(rate(sharditem_removed_count[2m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"shard_item_removed\",\n          \"refId\": \"C\"\n        },\n        {\n          \"expr\": \"sum(rate(shard_closed_count[2m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"shard_closed\",\n          \"refId\": \"D\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Shard Rebalancing\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 20\n      },\n      \"hiddenSeries\": false,\n      \"id\": 65,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"numshards_gauge\",\n          \"format\": \"time_series\",\n          \"instant\": false,\n          \"interval\": \"\",\n          \"intervalFactor\": 1,\n          \"legendFormat\": \"{{ kubernetes_pod_name }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Shard Distribution\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 6,\n        \"x\": 0,\n        \"y\": 28\n      },\n      \"hiddenSeries\": false,\n      \"id\": 54,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (temporal_service_type) (restarts)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ temporal_service_type }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Restarts\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 6,\n        \"x\": 6,\n        \"y\": 28\n      },\n      \"hiddenSeries\": false,\n      \"id\": 55,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"num_goroutines\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{kubernetes_pod_name}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Goroutines\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 6,\n        \"x\": 12,\n        \"y\": 28\n      },\n      \"hiddenSeries\": false,\n      \"id\": 56,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"memory_allocated\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{kubernetes_pod_name}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Memory Allocated\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"bytes\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 6,\n        \"x\": 18,\n        \"y\": 28\n      },\n      \"hiddenSeries\": false,\n      \"id\": 58,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"memory_heap\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{kubernetes_pod_name}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Memory Heap\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"bytes\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 0,\n        \"y\": 36\n      },\n      \"hiddenSeries\": false,\n      \"id\": 57,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"memory_stack\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{kubernetes_pod_name}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"Memory Stack\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"bytes\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 6,\n        \"y\": 36\n      },\n      \"hiddenSeries\": false,\n      \"id\": 59,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"sum by (kubernetes_pod_name) (rate(memory_num_gc[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{kubernetes_pod_name}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"GC Counter\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 12,\n        \"y\": 36\n      },\n      \"hiddenSeries\": false,\n      \"id\": 61,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"expr\": \"histogram_quantile(0.95, sum(rate(memory_gc_pause_ms_bucket[5m])) by (kubernetes_pod_name, le))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{ kubernetes_pod_name }}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"GC Pause\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"dtdurations\",\n          \"logBase\": 1,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"links\": []\n        },\n        \"overrides\": []\n      },\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 6,\n        \"x\": 18,\n        \"y\": 36\n      },\n      \"hiddenSeries\": false,\n      \"id\": 66,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.3.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(state_transition_count_count[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"state transition\",\n          \"refId\": \"A\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(sharditem_created_count[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"shard_item_created\",\n          \"refId\": \"B\"\n        },\n        {\n          \"expr\": \"sum(rate(sharditem_removed_count[2m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"shard_item_removed\",\n          \"refId\": \"C\"\n        },\n        {\n          \"expr\": \"sum(rate(shard_closed_count[2m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"shard_closed\",\n          \"refId\": \"D\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeRegions\": [],\n      \"title\": \"State Transition\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"mode\": \"time\",\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"$$hashKey\": \"object:277\",\n          \"format\": \"short\",\n          \"logBase\": 2,\n          \"show\": true\n        },\n        {\n          \"$$hashKey\": \"object:278\",\n          \"format\": \"short\",\n          \"logBase\": 1,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false\n      }\n    },\n    {\n      \"collapsed\": true,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 45\n      },\n      \"id\": 48,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 2\n          },\n          \"hiddenSeries\": false,\n          \"id\": 45,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(workflow_success{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"success\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(workflow_failed{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"failed\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"sum(rate(workflow_timeout{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"timedout\",\n              \"refId\": \"C\"\n            },\n            {\n              \"expr\": \"sum(rate(workflow_terminate{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"terminate\",\n              \"refId\": \"D\"\n            },\n            {\n              \"expr\": \"sum(rate(workflow_cancel{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"cancelled\",\n              \"refId\": \"E\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Workflow Completion Overview\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 12\n          },\n          \"hiddenSeries\": false,\n          \"id\": 52,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (temporal_namespace) (rate(workflow_success{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ temporal_namespace }} \",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Workflow Success By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 12\n          },\n          \"hiddenSeries\": false,\n          \"id\": 46,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (temporal_namespace) (rate(workflow_failed{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ temporal_namespace }} \",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Workflow Failed By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 20\n          },\n          \"hiddenSeries\": false,\n          \"id\": 49,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (temporal_namespace) (rate(workflow_timeout{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ temporal_namespace }} \",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Workflow Timedout By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 20\n          },\n          \"hiddenSeries\": false,\n          \"id\": 50,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (temporal_namespace) (rate(workflow_terminate{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ temporal_namespace }} \",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Workflow Terminate By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 28\n          },\n          \"hiddenSeries\": false,\n          \"id\": 51,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (temporal_namespace) (rate(workflow_cancel{ operation=\\\"CompletionStats\\\"}[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ temporal_namespace }} \",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Workflow Cancelled By Namespace\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        }\n      ],\n      \"title\": \"Workflow Completion Stats\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": true,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 46\n      },\n      \"id\": 23,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 6,\n            \"x\": 0,\n            \"y\": 3\n          },\n          \"hiddenSeries\": false,\n          \"id\": 21,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum (rate(service_requests[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"requests\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum (rate(service_errors[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"errors\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Service RequestsVs Errors ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 6,\n            \"x\": 6,\n            \"y\": 3\n          },\n          \"hiddenSeries\": false,\n          \"id\": 25,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(service_requests[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Service Requests Per Operation ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 6,\n            \"x\": 12,\n            \"y\": 3\n          },\n          \"hiddenSeries\": false,\n          \"id\": 27,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(service_errors_entity_not_found[5m]) OR on() vector(0))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"Entity Not Found\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(service_errors_execution_already_started[5m]) OR on() vector(0))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"Execution Already Started\",\n              \"refId\": \"B\"\n            },\n            {\n              \"expr\": \"sum(rate(service_errors_resource_exhausted[5m]) OR on() vector(0))\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"Resource Exhausted\",\n              \"refId\": \"C\"\n            },\n            {\n              \"expr\": \"sum by (__name__) (rate({__name__=~\\\"service_errors_.*\\\"}[5m]))\",\n              \"hide\": true,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{ $__name__ }}\",\n              \"refId\": \"D\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Service Errors Break Down ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 6,\n            \"x\": 18,\n            \"y\": 3\n          },\n          \"hiddenSeries\": false,\n          \"id\": 43,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(service_errors[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Service Errors By Operation ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 12\n          },\n          \"hiddenSeries\": false,\n          \"id\": 29,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(service_latency_bucket[5m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Service Latency ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        }\n      ],\n      \"title\": \"Overview - $Service\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": true,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 47\n      },\n      \"id\": 15,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 8,\n            \"x\": 0,\n            \"y\": 48\n          },\n          \"hiddenSeries\": false,\n          \"id\": 13,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.0.4\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum (rate(persistence_requests[5m]) OR on() vector(0))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"requests\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum (rate(persistence_errors[5m]) OR on() vector(0))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"errors\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Persistence Requests Vs Errors ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 8,\n            \"x\": 8,\n            \"y\": 48\n          },\n          \"hiddenSeries\": false,\n          \"id\": 16,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.0.4\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \" sum by (operation) (rate(persistence_requests[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Persistence Requests Per Operation ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 8,\n            \"x\": 16,\n            \"y\": 48\n          },\n          \"hiddenSeries\": false,\n          \"id\": 17,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.0.4\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(persistence_errors[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Persistence Errors By Operation ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"links\": []\n            },\n            \"overrides\": []\n          },\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 10,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 58\n          },\n          \"hiddenSeries\": false,\n          \"id\": 19,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"connected\",\n          \"options\": {\n            \"alertThreshold\": true\n          },\n          \"percentage\": false,\n          \"pluginVersion\": \"8.0.4\",\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"histogram_quantile(0.95, sum(rate(persistence_latency_bucket[1m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Persistence Latency ($Service)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        }\n      ],\n      \"title\": \"Persistence - $Service\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": true,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 48\n      },\n      \"id\": 33,\n      \"panels\": [\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 9,\n            \"x\": 0,\n            \"y\": 61\n          },\n          \"hiddenSeries\": false,\n          \"id\": 31,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum(rate(client_requests[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"requests\",\n              \"refId\": \"A\"\n            },\n            {\n              \"expr\": \"sum(rate(client_errors[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"errors\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Requests Vs Errors ($Service -> $Client)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 7,\n            \"x\": 9,\n            \"y\": 61\n          },\n          \"hiddenSeries\": false,\n          \"id\": 35,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(client_requests[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Client Requests Per Operation ($Service -> $Client)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 8,\n            \"x\": 16,\n            \"y\": 61\n          },\n          \"hiddenSeries\": false,\n          \"id\": 37,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"sum by (operation) (rate(client_errors[5m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Errors By Operation ($Service -> $Client)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        },\n        {\n          \"aliasColors\": {},\n          \"bars\": false,\n          \"dashLength\": 10,\n          \"dashes\": false,\n          \"datasource\": null,\n          \"fill\": 1,\n          \"fillGradient\": 0,\n          \"gridPos\": {\n            \"h\": 9,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 70\n          },\n          \"hiddenSeries\": false,\n          \"id\": 39,\n          \"legend\": {\n            \"avg\": false,\n            \"current\": false,\n            \"max\": false,\n            \"min\": false,\n            \"show\": true,\n            \"total\": false,\n            \"values\": false\n          },\n          \"lines\": true,\n          \"linewidth\": 1,\n          \"nullPointMode\": \"null\",\n          \"options\": {\n            \"dataLinks\": []\n          },\n          \"percentage\": false,\n          \"pointradius\": 2,\n          \"points\": false,\n          \"renderer\": \"flot\",\n          \"seriesOverrides\": [],\n          \"spaceLength\": 10,\n          \"stack\": false,\n          \"steppedLine\": false,\n          \"targets\": [\n            {\n              \"expr\": \"histogram_quantile(0.95, sum(rate(client_latency_bucket[5m])) by (operation, le))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"thresholds\": [],\n          \"timeRegions\": [],\n          \"title\": \"Client Latency ($Service -> $Client)\",\n          \"tooltip\": {\n            \"shared\": true,\n            \"sort\": 0,\n            \"value_type\": \"individual\"\n          },\n          \"type\": \"graph\",\n          \"xaxis\": {\n            \"mode\": \"time\",\n            \"show\": true,\n            \"values\": []\n          },\n          \"yaxes\": [\n            {\n              \"format\": \"dtdurations\",\n              \"logBase\": 1,\n              \"show\": true\n            },\n            {\n              \"format\": \"short\",\n              \"logBase\": 1,\n              \"show\": true\n            }\n          ],\n          \"yaxis\": {\n            \"align\": false\n          }\n        }\n      ],\n      \"title\": \"Service Client - $Client\",\n      \"type\": \"row\"\n    }\n  ],\n  \"refresh\": false,\n  \"schemaVersion\": 34,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": [\n      {\n        \"current\": {\n          \"selected\": true,\n          \"text\": \"All\",\n          \"value\": \"$__all\"\n        },\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"multi\": false,\n        \"name\": \"Service\",\n        \"options\": [\n          {\n            \"selected\": true,\n            \"text\": \"All\",\n            \"value\": \"$__all\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"frontend\",\n            \"value\": \"frontend\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"history\",\n            \"value\": \"history\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"matching\",\n            \"value\": \"matching\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"worker\",\n            \"value\": \"worker\"\n          }\n        ],\n        \"query\": \"frontend,history,matching,worker\",\n        \"skipUrlSync\": false,\n        \"type\": \"custom\"\n      },\n      {\n        \"current\": {\n          \"selected\": true,\n          \"text\": \"All\",\n          \"value\": \"$__all\"\n        },\n        \"hide\": 0,\n        \"includeAll\": true,\n        \"multi\": false,\n        \"name\": \"Client\",\n        \"options\": [\n          {\n            \"selected\": true,\n            \"text\": \"All\",\n            \"value\": \"$__all\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"frontend\",\n            \"value\": \"frontend\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"history\",\n            \"value\": \"history\"\n          },\n          {\n            \"selected\": false,\n            \"text\": \"matching\",\n            \"value\": \"matching\"\n          }\n        ],\n        \"query\": \"frontend,history,matching\",\n        \"skipUrlSync\": false,\n        \"type\": \"custom\"\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {\n    \"refresh_intervals\": [\n      \"5s\",\n      \"10s\",\n      \"30s\",\n      \"1m\",\n      \"5m\",\n      \"15m\",\n      \"30m\",\n      \"1h\"\n    ]\n  },\n  \"timezone\": \"\",\n  \"title\": \"Temporal Server Metrics\",\n  \"version\": 1,\n  \"weekStart\": \"\"\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/temporal_cloud.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": {\n          \"type\": \"datasource\",\n          \"uid\": \"grafana\"\n        },\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"target\": {\n          \"limit\": 100,\n          \"matchAny\": false,\n          \"tags\": [],\n          \"type\": \"dashboard\"\n        },\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"fiscalYearStartMonth\": 0,\n  \"graphTooltip\": 0,\n  \"id\": null,\n  \"links\": [],\n  \"liveNow\": false,\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"datasource\",\n        \"uid\": \"grafana\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 17,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"datasource\",\n            \"uid\": \"grafana\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"State Transitions\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"id\": 2,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(temporal_cloud_v0_state_transition_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"State Transitions\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"continuous-GrYlRd\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"short\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 12,\n        \"y\": 1\n      },\n      \"id\": 10,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.1.4\",\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(increase(temporal_cloud_v0_state_transition_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[30d])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"30 Day State Transitions\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"continuous-GrYlRd\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"short\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 16,\n        \"y\": 1\n      },\n      \"id\": 14,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.1.4\",\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(increase(temporal_cloud_v0_state_transition_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[7d])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"7 Day State Transitions\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"continuous-GrYlRd\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"short\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 1\n      },\n      \"id\": 15,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.1.4\",\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(increase(temporal_cloud_v0_state_transition_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[1d])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"1 Day State Transitions\",\n      \"type\": \"stat\"\n    },\n    {\n      \"collapsed\": false,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 10\n      },\n      \"id\": 29,\n      \"panels\": [],\n      \"title\": \"Actions\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 11\n      },\n      \"id\": 31,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_total_action_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"instant\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Actions\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"continuous-GrYlRd\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"short\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 12,\n        \"y\": 11\n      },\n      \"id\": 32,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.1.4\",\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(increase(temporal_cloud_v0_total_action_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[30d])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"30 Days Actions\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"continuous-GrYlRd\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"short\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 16,\n        \"y\": 11\n      },\n      \"id\": 33,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.1.4\",\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(increase(temporal_cloud_v0_total_action_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[7d])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"7 Days Actions\",\n      \"type\": \"stat\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"continuous-GrYlRd\"\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"short\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 11\n      },\n      \"id\": 34,\n      \"options\": {\n        \"colorMode\": \"value\",\n        \"graphMode\": \"area\",\n        \"justifyMode\": \"auto\",\n        \"orientation\": \"auto\",\n        \"reduceOptions\": {\n          \"calcs\": [\n            \"lastNotNull\"\n          ],\n          \"fields\": \"\",\n          \"values\": false\n        },\n        \"textMode\": \"auto\"\n      },\n      \"pluginVersion\": \"9.1.4\",\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(increase(temporal_cloud_v0_total_action_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[1d])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"1 Day Actions\",\n      \"type\": \"stat\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"datasource\",\n        \"uid\": \"grafana\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 20\n      },\n      \"id\": 21,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"datasource\",\n            \"uid\": \"grafana\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Workflows Overview\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 21\n      },\n      \"id\": 4,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(temporal_cloud_v0_workflow_success_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Workflow Success\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 21\n      },\n      \"id\": 41,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(temporal_cloud_v0_workflow_timeout_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Workflow Timeouts\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 30\n      },\n      \"id\": 12,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_workflow_failed_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Workflow Failed\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 30\n      },\n      \"id\": 13,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_workflow_continued_as_new_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Workflow Continued as New\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": false,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 39\n      },\n      \"id\": 40,\n      \"panels\": [],\n      \"title\": \"Schedules\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 40\n      },\n      \"id\": 11,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_schedule_action_success_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Successful Schedule Actions\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 12,\n        \"y\": 40\n      },\n      \"id\": 42,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_schedule_buffer_overruns_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Schedule Buffer Overruns\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 16,\n        \"y\": 40\n      },\n      \"id\": 43,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_schedule_missed_catchup_window_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Schedule Missed Catchup Windows\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 4,\n        \"x\": 20,\n        \"y\": 40\n      },\n      \"id\": 44,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_schedule_rate_limited_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Schedules Rate Limited\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"datasource\",\n        \"uid\": \"grafana\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 49\n      },\n      \"id\": 19,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"datasource\",\n            \"uid\": \"grafana\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Temporal Service Requests\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 50\n      },\n      \"id\": 6,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(temporal_cloud_v0_frontend_service_request_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace,operation)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}} - {{operation}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Frontend Service Requests\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 50\n      },\n      \"id\": 8,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(temporal_cloud_v0_frontend_service_error_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace,operation)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}} - {{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Frontend Service Errors\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": false,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 59\n      },\n      \"id\": 36,\n      \"panels\": [],\n      \"title\": \"Temporal Service Latency\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"s\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 8,\n        \"x\": 0,\n        \"y\": 60\n      },\n      \"id\": 30,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"mean\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.5, sum(rate(temporal_cloud_v0_service_latency_bucket{temporal_namespace=~\\\"$temporal_namespace\\\", operation=\\\"StartWorkflowExecution\\\"}[$__rate_interval])) by (temporal_namespace, operation, le))\",\n          \"legendFormat\": \"{{ temporal_namespace }}  - 50th Percentile\",\n          \"range\": true,\n          \"refId\": \"A\"\n        },\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.99, sum(rate(temporal_cloud_v0_service_latency_bucket{temporal_namespace=~\\\"$temporal_namespace\\\", operation=\\\"StartWorkflowExecution\\\"}[$__rate_interval])) by (temporal_namespace, operation, le))\",\n          \"hide\": false,\n          \"legendFormat\": \"{{ temporal_namespace }}  - 99th Percentile\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"title\": \"StartWorkflowExecution Latency\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"s\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 8,\n        \"x\": 8,\n        \"y\": 60\n      },\n      \"id\": 1,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"mean\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.5, sum(rate(temporal_cloud_v0_service_latency_bucket{temporal_namespace=~\\\"$temporal_namespace\\\", operation=\\\"SignalWorkflowExecution\\\"}[$__rate_interval])) by (temporal_namespace, operation, le))\",\n          \"legendFormat\": \"{{ temporal_namespace }}  - 50th Percentile\",\n          \"range\": true,\n          \"refId\": \"A\"\n        },\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.99, sum(rate(temporal_cloud_v0_service_latency_bucket{temporal_namespace=~\\\"$temporal_namespace\\\", operation=\\\"SignalWorkflowExecution\\\"}[$__rate_interval])) by (temporal_namespace, operation, le))\",\n          \"hide\": false,\n          \"legendFormat\": \"{{ temporal_namespace }}  - 99th Percentile\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"title\": \"SignalWorkflowExecution Latency\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"s\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 10,\n        \"w\": 8,\n        \"x\": 16,\n        \"y\": 60\n      },\n      \"id\": 35,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"mean\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.5, sum(rate(temporal_cloud_v0_service_latency_bucket{temporal_namespace=~\\\"$temporal_namespace\\\", operation=\\\"SignalWithStartWorkflowExecution\\\"}[$__rate_interval])) by (temporal_namespace, operation, le))\",\n          \"legendFormat\": \"{{ temporal_namespace }}  - 50th Percentile\",\n          \"range\": true,\n          \"refId\": \"A\"\n        },\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"expr\": \"histogram_quantile(0.99, sum(rate(temporal_cloud_v0_service_latency_bucket{temporal_namespace=~\\\"$temporal_namespace\\\", operation=\\\"SignalWithStartWorkflowExecution\\\"}[$__rate_interval])) by (temporal_namespace, operation, le))\",\n          \"hide\": false,\n          \"legendFormat\": \"{{ temporal_namespace }}  - 99th Percentile\",\n          \"range\": true,\n          \"refId\": \"B\"\n        }\n      ],\n      \"title\": \"SignalWithStartWorkflowExecution Latency\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": {\n        \"type\": \"datasource\",\n        \"uid\": \"grafana\"\n      },\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 70\n      },\n      \"id\": 23,\n      \"panels\": [],\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"datasource\",\n            \"uid\": \"grafana\"\n          },\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Workers and Tasks\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 71\n      },\n      \"id\": 24,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_poll_success_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Worker Poll Success\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 71\n      },\n      \"id\": 26,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_poll_timeout_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Worker Poll Timeout\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 80\n      },\n      \"id\": 25,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": true,\n          \"expr\": \"sum(rate(temporal_cloud_v0_poll_success_sync_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Worker Poll Success Sync\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 80\n      },\n      \"id\": 27,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"exemplar\": false,\n          \"expr\": \"sum(rate(temporal_cloud_v0_poll_success_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace) - sum(rate(temporal_cloud_v0_poll_success_sync_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval])) by (temporal_namespace)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Worker Poll Success Async\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          },\n          \"unit\": \"percentunit\"\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 89\n      },\n      \"id\": 37,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": true,\n          \"expr\": \"sum by(temporal_namespace) (\\n   rate(\\n     temporal_cloud_v0_poll_success_sync_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval]\\n   )\\n  )\\n/\\nsum by(temporal_namespace) (\\n   rate(\\n     temporal_cloud_v0_poll_success_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval]\\n    )\\n  )\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Sync Match Rate\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": {\n        \"type\": \"prometheus\",\n        \"uid\": \"${datasource}\"\n      },\n      \"description\": \"\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisCenteredZero\": false,\n            \"axisColorMode\": \"text\",\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 9,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 89\n      },\n      \"id\": 38,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [\n            \"lastNotNull\",\n            \"min\",\n            \"max\"\n          ],\n          \"displayMode\": \"table\",\n          \"placement\": \"bottom\",\n          \"showLegend\": true,\n          \"sortBy\": \"Max\",\n          \"sortDesc\": true\n        },\n        \"tooltip\": {\n          \"mode\": \"single\",\n          \"sort\": \"none\"\n        }\n      },\n      \"targets\": [\n        {\n          \"datasource\": {\n            \"type\": \"prometheus\",\n            \"uid\": \"${datasource}\"\n          },\n          \"editorMode\": \"code\",\n          \"exemplar\": true,\n          \"expr\": \"(\\n    (\\n        sum by(temporal_namespace) (\\n          rate(\\n            temporal_cloud_v0_poll_success_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval]\\n          )\\n        )\\n      +\\n        sum by(temporal_namespace) (\\n          rate(\\n            temporal_cloud_v0_poll_success_sync_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval]\\n          )\\n        )\\n    )\\n  /\\n    (\\n        (\\n            sum by(temporal_namespace) (\\n              rate(\\n                temporal_cloud_v0_poll_success_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval]\\n              )\\n            )\\n          +\\n            sum by(temporal_namespace) (\\n              rate(\\n                temporal_cloud_v0_poll_success_sync_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval]\\n              )\\n            )\\n        )\\n      +\\n        sum by(temporal_namespace) (\\n          rate(\\n            temporal_cloud_v0_poll_timeout_count{temporal_namespace=~\\\"$temporal_namespace\\\"}[$__rate_interval]\\n          )\\n        )\\n    )\\n)\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{temporal_namespace}}\",\n          \"range\": true,\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Poll Success Rate\",\n      \"type\": \"timeseries\"\n    }\n  ],\n  \"refresh\": false,\n  \"schemaVersion\": 37,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": [\n      {\n        \"current\": {\n          \"selected\": true,\n          \"text\": \"default\",\n          \"value\": \"default\"\n        },\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"label\": \"datasource\",\n        \"multi\": false,\n        \"name\": \"datasource\",\n        \"options\": [],\n        \"query\": \"prometheus\",\n        \"queryValue\": \"\",\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"type\": \"datasource\"\n      },\n      {\n        \"current\": {},\n        \"datasource\": {\n          \"type\": \"prometheus\",\n          \"uid\": \"${datasource}\"\n        },\n        \"definition\": \"label_values(temporal_namespace)\",\n        \"hide\": 0,\n        \"includeAll\": false,\n        \"multi\": true,\n        \"name\": \"temporal_namespace\",\n        \"options\": [],\n        \"query\": {\n          \"query\": \"label_values(temporal_namespace)\",\n          \"refId\": \"StandardVariableQuery\"\n        },\n        \"refresh\": 1,\n        \"regex\": \"\",\n        \"skipUrlSync\": false,\n        \"sort\": 0,\n        \"type\": \"query\"\n      }\n    ]\n  },\n  \"time\": {\n    \"from\": \"now-1h\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {},\n  \"timezone\": \"\",\n  \"title\": \"Temporal Cloud External Metrics\",\n  \"version\": 1,\n  \"weekStart\": \"\"\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/dashboards/worker-service-specific.json",
    "content": "{\n  \"annotations\": {\n    \"list\": [\n      {\n        \"builtIn\": 1,\n        \"datasource\": \"-- Grafana --\",\n        \"enable\": true,\n        \"hide\": true,\n        \"iconColor\": \"rgba(0, 211, 255, 1)\",\n        \"name\": \"Annotations & Alerts\",\n        \"type\": \"dashboard\"\n      }\n    ]\n  },\n  \"editable\": true,\n  \"gnetId\": null,\n  \"graphTooltip\": 0,\n  \"id\": 41,\n  \"iteration\": 1631839148204,\n  \"links\": [],\n  \"panels\": [\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 0\n      },\n      \"id\": 27,\n      \"panels\": [],\n      \"title\": \"General\",\n      \"type\": \"row\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${datasource}\",\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 7,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 1\n      },\n      \"hiddenSeries\": false,\n      \"id\": 12,\n      \"legend\": {\n        \"alignAsTable\": true,\n        \"avg\": false,\n        \"current\": true,\n        \"hideEmpty\": false,\n        \"hideZero\": false,\n        \"max\": false,\n        \"min\": false,\n        \"rightSide\": true,\n        \"show\": true,\n        \"total\": false,\n        \"values\": true\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": false\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.0.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"(sum without (instance, pod) (started)) - (sum without (instance, pod) (stopped or started*0))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"Scavengers running\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 2,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"datasource\": \"${datasource}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 8\n      },\n      \"id\": 20,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod) (rate(executor_done[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"title\": \"Completed scan tasks\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": \"${datasource}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 8\n      },\n      \"id\": 25,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod) (rate(executor_dropped[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"title\": \"Dropped tasks\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": \"${datasource}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 16\n      },\n      \"id\": 24,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod) (rate(executor_err[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"D\"\n        }\n      ],\n      \"title\": \"Failed tasks\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": \"${datasource}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 16\n      },\n      \"id\": 23,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod) (rate(executor_deferred[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"E\"\n        }\n      ],\n      \"title\": \"Deferred tasks\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 24\n      },\n      \"id\": 14,\n      \"panels\": [],\n      \"title\": \"Executions scavenger\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": \"${datasource}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 25\n      },\n      \"id\": 16,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(scavenger_validation_requests[10m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"title\": \"Validation Requests\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${datasource}\",\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 33\n      },\n      \"hiddenSeries\": false,\n      \"id\": 2,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.0.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(scavenger_validation_failures[5m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{failure}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"DetailedErrors\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"aliasColors\": {},\n      \"bars\": false,\n      \"dashLength\": 10,\n      \"dashes\": false,\n      \"datasource\": \"${datasource}\",\n      \"description\": \"Might stuck until scavenger rerun in case of worker crash.\",\n      \"fill\": 1,\n      \"fillGradient\": 0,\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 33\n      },\n      \"hiddenSeries\": false,\n      \"id\": 10,\n      \"legend\": {\n        \"avg\": false,\n        \"current\": false,\n        \"max\": false,\n        \"min\": false,\n        \"show\": true,\n        \"total\": false,\n        \"values\": false\n      },\n      \"lines\": true,\n      \"linewidth\": 1,\n      \"nullPointMode\": \"null\",\n      \"options\": {\n        \"alertThreshold\": true\n      },\n      \"percentage\": false,\n      \"pluginVersion\": \"8.0.4\",\n      \"pointradius\": 2,\n      \"points\": false,\n      \"renderer\": \"flot\",\n      \"seriesOverrides\": [],\n      \"spaceLength\": 10,\n      \"stack\": false,\n      \"steppedLine\": false,\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(executions_outstanding)\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"thresholds\": [],\n      \"timeFrom\": null,\n      \"timeRegions\": [],\n      \"timeShift\": null,\n      \"title\": \"ExecutionsLeftToScan\",\n      \"tooltip\": {\n        \"shared\": true,\n        \"sort\": 0,\n        \"value_type\": \"individual\"\n      },\n      \"type\": \"graph\",\n      \"xaxis\": {\n        \"buckets\": null,\n        \"mode\": \"time\",\n        \"name\": null,\n        \"show\": true,\n        \"values\": []\n      },\n      \"yaxes\": [\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        },\n        {\n          \"format\": \"short\",\n          \"label\": null,\n          \"logBase\": 1,\n          \"max\": null,\n          \"min\": null,\n          \"show\": true\n        }\n      ],\n      \"yaxis\": {\n        \"align\": false,\n        \"alignLevel\": null\n      }\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 41\n      },\n      \"id\": 29,\n      \"panels\": [\n        {\n          \"datasource\": \"${datasource}\",\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"color\": {\n                \"mode\": \"palette-classic\"\n              },\n              \"custom\": {\n                \"axisLabel\": \"\",\n                \"axisPlacement\": \"auto\",\n                \"barAlignment\": 0,\n                \"drawStyle\": \"line\",\n                \"fillOpacity\": 0,\n                \"gradientMode\": \"none\",\n                \"hideFrom\": {\n                  \"legend\": false,\n                  \"tooltip\": false,\n                  \"viz\": false\n                },\n                \"lineInterpolation\": \"linear\",\n                \"lineWidth\": 1,\n                \"pointSize\": 5,\n                \"scaleDistribution\": {\n                  \"type\": \"linear\"\n                },\n                \"showPoints\": \"auto\",\n                \"spanNulls\": false,\n                \"stacking\": {\n                  \"group\": \"A\",\n                  \"mode\": \"none\"\n                },\n                \"thresholdsStyle\": {\n                  \"mode\": \"off\"\n                }\n              },\n              \"mappings\": [],\n              \"thresholds\": {\n                \"mode\": \"absolute\",\n                \"steps\": [\n                  {\n                    \"color\": \"green\",\n                    \"value\": null\n                  },\n                  {\n                    \"color\": \"red\",\n                    \"value\": 80\n                  }\n                ]\n              }\n            },\n            \"overrides\": []\n          },\n          \"gridPos\": {\n            \"h\": 6,\n            \"w\": 24,\n            \"x\": 0,\n            \"y\": 3\n          },\n          \"id\": 31,\n          \"options\": {\n            \"legend\": {\n              \"calcs\": [],\n              \"displayMode\": \"list\",\n              \"placement\": \"bottom\"\n            },\n            \"tooltip\": {\n              \"mode\": \"single\"\n            }\n          },\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum without (instance, pod)(taskqueue_outstanding)\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"B\"\n            }\n          ],\n          \"title\": \"Outstanding scavenger tasks\",\n          \"type\": \"timeseries\"\n        },\n        {\n          \"datasource\": \"${datasource}\",\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"color\": {\n                \"mode\": \"palette-classic\"\n              },\n              \"custom\": {\n                \"axisLabel\": \"\",\n                \"axisPlacement\": \"auto\",\n                \"barAlignment\": 0,\n                \"drawStyle\": \"line\",\n                \"fillOpacity\": 0,\n                \"gradientMode\": \"none\",\n                \"hideFrom\": {\n                  \"legend\": false,\n                  \"tooltip\": false,\n                  \"viz\": false\n                },\n                \"lineInterpolation\": \"linear\",\n                \"lineWidth\": 1,\n                \"pointSize\": 5,\n                \"scaleDistribution\": {\n                  \"type\": \"linear\"\n                },\n                \"showPoints\": \"auto\",\n                \"spanNulls\": false,\n                \"stacking\": {\n                  \"group\": \"A\",\n                  \"mode\": \"none\"\n                },\n                \"thresholdsStyle\": {\n                  \"mode\": \"off\"\n                }\n              },\n              \"mappings\": [],\n              \"thresholds\": {\n                \"mode\": \"absolute\",\n                \"steps\": [\n                  {\n                    \"color\": \"green\",\n                    \"value\": null\n                  },\n                  {\n                    \"color\": \"red\",\n                    \"value\": 80\n                  }\n                ]\n              }\n            },\n            \"overrides\": []\n          },\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 9\n          },\n          \"id\": 34,\n          \"options\": {\n            \"legend\": {\n              \"calcs\": [],\n              \"displayMode\": \"list\",\n              \"placement\": \"bottom\"\n            },\n            \"tooltip\": {\n              \"mode\": \"single\"\n            }\n          },\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum without (instance, pod)(taskqueue_processed)\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"D\"\n            }\n          ],\n          \"title\": \"Processed taskqueue tasks\",\n          \"type\": \"timeseries\"\n        },\n        {\n          \"datasource\": \"${datasource}\",\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"color\": {\n                \"mode\": \"palette-classic\"\n              },\n              \"custom\": {\n                \"axisLabel\": \"\",\n                \"axisPlacement\": \"auto\",\n                \"barAlignment\": 0,\n                \"drawStyle\": \"line\",\n                \"fillOpacity\": 0,\n                \"gradientMode\": \"none\",\n                \"hideFrom\": {\n                  \"legend\": false,\n                  \"tooltip\": false,\n                  \"viz\": false\n                },\n                \"lineInterpolation\": \"linear\",\n                \"lineWidth\": 1,\n                \"pointSize\": 5,\n                \"scaleDistribution\": {\n                  \"type\": \"linear\"\n                },\n                \"showPoints\": \"auto\",\n                \"spanNulls\": false,\n                \"stacking\": {\n                  \"group\": \"A\",\n                  \"mode\": \"none\"\n                },\n                \"thresholdsStyle\": {\n                  \"mode\": \"off\"\n                }\n              },\n              \"mappings\": [],\n              \"thresholds\": {\n                \"mode\": \"absolute\",\n                \"steps\": [\n                  {\n                    \"color\": \"green\",\n                    \"value\": null\n                  },\n                  {\n                    \"color\": \"red\",\n                    \"value\": 80\n                  }\n                ]\n              }\n            },\n            \"overrides\": []\n          },\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 9\n          },\n          \"id\": 35,\n          \"options\": {\n            \"legend\": {\n              \"calcs\": [],\n              \"displayMode\": \"list\",\n              \"placement\": \"bottom\"\n            },\n            \"tooltip\": {\n              \"mode\": \"single\"\n            }\n          },\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum without (instance, pod)(taskqueue_deleted)\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"C\"\n            }\n          ],\n          \"title\": \"Deleted taskqueue tasks\",\n          \"type\": \"timeseries\"\n        },\n        {\n          \"datasource\": \"${datasource}\",\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"color\": {\n                \"mode\": \"palette-classic\"\n              },\n              \"custom\": {\n                \"axisLabel\": \"\",\n                \"axisPlacement\": \"auto\",\n                \"barAlignment\": 0,\n                \"drawStyle\": \"line\",\n                \"fillOpacity\": 0,\n                \"gradientMode\": \"none\",\n                \"hideFrom\": {\n                  \"legend\": false,\n                  \"tooltip\": false,\n                  \"viz\": false\n                },\n                \"lineInterpolation\": \"linear\",\n                \"lineWidth\": 1,\n                \"pointSize\": 5,\n                \"scaleDistribution\": {\n                  \"type\": \"linear\"\n                },\n                \"showPoints\": \"auto\",\n                \"spanNulls\": false,\n                \"stacking\": {\n                  \"group\": \"A\",\n                  \"mode\": \"none\"\n                },\n                \"thresholdsStyle\": {\n                  \"mode\": \"off\"\n                }\n              },\n              \"mappings\": [],\n              \"thresholds\": {\n                \"mode\": \"absolute\",\n                \"steps\": [\n                  {\n                    \"color\": \"green\",\n                    \"value\": null\n                  },\n                  {\n                    \"color\": \"red\",\n                    \"value\": 80\n                  }\n                ]\n              }\n            },\n            \"overrides\": []\n          },\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 17\n          },\n          \"id\": 33,\n          \"options\": {\n            \"legend\": {\n              \"calcs\": [],\n              \"displayMode\": \"list\",\n              \"placement\": \"bottom\"\n            },\n            \"tooltip\": {\n              \"mode\": \"single\"\n            }\n          },\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum without (instance, pod)(task_processed)\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"E\"\n            }\n          ],\n          \"title\": \"Processed tasks\",\n          \"type\": \"timeseries\"\n        },\n        {\n          \"datasource\": \"${datasource}\",\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"color\": {\n                \"mode\": \"palette-classic\"\n              },\n              \"custom\": {\n                \"axisLabel\": \"\",\n                \"axisPlacement\": \"auto\",\n                \"barAlignment\": 0,\n                \"drawStyle\": \"line\",\n                \"fillOpacity\": 0,\n                \"gradientMode\": \"none\",\n                \"hideFrom\": {\n                  \"legend\": false,\n                  \"tooltip\": false,\n                  \"viz\": false\n                },\n                \"lineInterpolation\": \"linear\",\n                \"lineWidth\": 1,\n                \"pointSize\": 5,\n                \"scaleDistribution\": {\n                  \"type\": \"linear\"\n                },\n                \"showPoints\": \"auto\",\n                \"spanNulls\": false,\n                \"stacking\": {\n                  \"group\": \"A\",\n                  \"mode\": \"none\"\n                },\n                \"thresholdsStyle\": {\n                  \"mode\": \"off\"\n                }\n              },\n              \"mappings\": [],\n              \"thresholds\": {\n                \"mode\": \"absolute\",\n                \"steps\": [\n                  {\n                    \"color\": \"green\",\n                    \"value\": null\n                  },\n                  {\n                    \"color\": \"red\",\n                    \"value\": 80\n                  }\n                ]\n              }\n            },\n            \"overrides\": []\n          },\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 12,\n            \"y\": 17\n          },\n          \"id\": 32,\n          \"options\": {\n            \"legend\": {\n              \"calcs\": [],\n              \"displayMode\": \"list\",\n              \"placement\": \"bottom\"\n            },\n            \"tooltip\": {\n              \"mode\": \"single\"\n            }\n          },\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum without (instance, pod)(task_deleted)\",\n              \"hide\": false,\n              \"interval\": \"\",\n              \"legendFormat\": \"{{operation}}\",\n              \"refId\": \"F\"\n            }\n          ],\n          \"title\": \"Deleted tasks\",\n          \"type\": \"timeseries\"\n        }\n      ],\n      \"title\": \"TaskQueue scavenger\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 42\n      },\n      \"id\": 37,\n      \"panels\": [],\n      \"title\": \"History scavenger\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": \"${datasource}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 43\n      },\n      \"id\": 38,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(scavenger_success[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Success\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": \"${datasource}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 43\n      },\n      \"id\": 39,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(scavenger_skips[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"title\": \"Skips\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": \"${datasource}\",\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 6,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 51\n      },\n      \"id\": 40,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(scavenger_errors[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"B\"\n        }\n      ],\n      \"title\": \"Errors\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": true,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 57\n      },\n      \"id\": 42,\n      \"panels\": [\n        {\n          \"datasource\": null,\n          \"fieldConfig\": {\n            \"defaults\": {\n              \"color\": {\n                \"mode\": \"palette-classic\"\n              },\n              \"custom\": {\n                \"axisLabel\": \"\",\n                \"axisPlacement\": \"auto\",\n                \"barAlignment\": 0,\n                \"drawStyle\": \"line\",\n                \"fillOpacity\": 0,\n                \"gradientMode\": \"none\",\n                \"hideFrom\": {\n                  \"legend\": false,\n                  \"tooltip\": false,\n                  \"viz\": false\n                },\n                \"lineInterpolation\": \"linear\",\n                \"lineWidth\": 1,\n                \"pointSize\": 5,\n                \"scaleDistribution\": {\n                  \"type\": \"linear\"\n                },\n                \"showPoints\": \"auto\",\n                \"spanNulls\": false,\n                \"stacking\": {\n                  \"group\": \"A\",\n                  \"mode\": \"none\"\n                },\n                \"thresholdsStyle\": {\n                  \"mode\": \"off\"\n                }\n              },\n              \"mappings\": [],\n              \"thresholds\": {\n                \"mode\": \"absolute\",\n                \"steps\": [\n                  {\n                    \"color\": \"green\",\n                    \"value\": null\n                  },\n                  {\n                    \"color\": \"red\",\n                    \"value\": 80\n                  }\n                ]\n              }\n            },\n            \"overrides\": []\n          },\n          \"gridPos\": {\n            \"h\": 8,\n            \"w\": 12,\n            \"x\": 0,\n            \"y\": 5\n          },\n          \"id\": 44,\n          \"options\": {\n            \"legend\": {\n              \"calcs\": [],\n              \"displayMode\": \"list\",\n              \"placement\": \"bottom\"\n            },\n            \"tooltip\": {\n              \"mode\": \"single\"\n            }\n          },\n          \"targets\": [\n            {\n              \"exemplar\": true,\n              \"expr\": \"sum without (instance, pod) (rate(add_search_attributes_failures[1m]))\",\n              \"interval\": \"\",\n              \"legendFormat\": \"\",\n              \"refId\": \"A\"\n            }\n          ],\n          \"title\": \"Add search attributes failure count\",\n          \"type\": \"timeseries\"\n        }\n      ],\n      \"title\": \"Search attributes\",\n      \"type\": \"row\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 58\n      },\n      \"id\": 57,\n      \"panels\": [],\n      \"title\": \"Batcher\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 59\n      },\n      \"id\": 59,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(batcher_processor_requests[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Requests\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 59\n      },\n      \"id\": 60,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(batcher_processor_errors[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Errors\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 67\n      },\n      \"id\": 54,\n      \"panels\": [],\n      \"title\": \"Parent close policy processor\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 68\n      },\n      \"id\": 52,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(parent_close_policy_processor_requests[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}-{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Requests\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 68\n      },\n      \"id\": 55,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(parent_close_policy_processor_errors[5m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}-{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Errors\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"collapsed\": false,\n      \"datasource\": null,\n      \"gridPos\": {\n        \"h\": 1,\n        \"w\": 24,\n        \"x\": 0,\n        \"y\": 76\n      },\n      \"id\": 62,\n      \"panels\": [],\n      \"title\": \"Replicator\",\n      \"type\": \"row\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 77\n      },\n      \"id\": 63,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(namespace_replication_dlq_enqueue_requests[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}-{{temporal_namespace}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Dlq Enqueue Requests\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 77\n      },\n      \"id\": 66,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(replicator_dlq_enqueue_fails[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"E\"\n        }\n      ],\n      \"title\": \"DLQ enqueue fails\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 85\n      },\n      \"id\": 65,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(replicator_messages[1m]))\",\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"A\"\n        }\n      ],\n      \"title\": \"Messages\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 12,\n        \"y\": 85\n      },\n      \"id\": 67,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(replicator_messages_dropped[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"D\"\n        },\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(replicator_dlq_enqueue_fails[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"E\"\n        }\n      ],\n      \"title\": \"Messages Dropped\",\n      \"type\": \"timeseries\"\n    },\n    {\n      \"datasource\": null,\n      \"fieldConfig\": {\n        \"defaults\": {\n          \"color\": {\n            \"mode\": \"palette-classic\"\n          },\n          \"custom\": {\n            \"axisLabel\": \"\",\n            \"axisPlacement\": \"auto\",\n            \"barAlignment\": 0,\n            \"drawStyle\": \"line\",\n            \"fillOpacity\": 0,\n            \"gradientMode\": \"none\",\n            \"hideFrom\": {\n              \"legend\": false,\n              \"tooltip\": false,\n              \"viz\": false\n            },\n            \"lineInterpolation\": \"linear\",\n            \"lineWidth\": 1,\n            \"pointSize\": 5,\n            \"scaleDistribution\": {\n              \"type\": \"linear\"\n            },\n            \"showPoints\": \"auto\",\n            \"spanNulls\": false,\n            \"stacking\": {\n              \"group\": \"A\",\n              \"mode\": \"none\"\n            },\n            \"thresholdsStyle\": {\n              \"mode\": \"off\"\n            }\n          },\n          \"mappings\": [],\n          \"thresholds\": {\n            \"mode\": \"absolute\",\n            \"steps\": [\n              {\n                \"color\": \"green\",\n                \"value\": null\n              },\n              {\n                \"color\": \"red\",\n                \"value\": 80\n              }\n            ]\n          }\n        },\n        \"overrides\": []\n      },\n      \"gridPos\": {\n        \"h\": 8,\n        \"w\": 12,\n        \"x\": 0,\n        \"y\": 93\n      },\n      \"id\": 68,\n      \"options\": {\n        \"legend\": {\n          \"calcs\": [],\n          \"displayMode\": \"list\",\n          \"placement\": \"bottom\"\n        },\n        \"tooltip\": {\n          \"mode\": \"single\"\n        }\n      },\n      \"targets\": [\n        {\n          \"exemplar\": true,\n          \"expr\": \"sum without (instance, pod)(rate(replicator_errors[1m]))\",\n          \"hide\": false,\n          \"interval\": \"\",\n          \"legendFormat\": \"{{operation}}\",\n          \"refId\": \"C\"\n        }\n      ],\n      \"title\": \"Errors\",\n      \"type\": \"timeseries\"\n    }\n  ],\n  \"refresh\": \"\",\n  \"schemaVersion\": 30,\n  \"style\": \"dark\",\n  \"tags\": [],\n  \"templating\": {\n    \"list\": []\n  },\n  \"time\": {\n    \"from\": \"now-15m\",\n    \"to\": \"now\"\n  },\n  \"timepicker\": {},\n  \"timezone\": \"\",\n  \"title\": \"Worker Service Dashboard\",\n  \"uid\": \"wDIPo8Snz\",\n  \"version\": 16\n}\n"
  },
  {
    "path": "src/monitoring/grafana/provisioning/datasources/datasource.yml",
    "content": "datasources:\n-  access: 'proxy'\n   editable: true\n   is_default: true\n   name: 'agents-api'\n   org_id: 1\n   type: 'prometheus'\n   url: 'http://prometheus:9090'\n   version: 1           \n"
  },
  {
    "path": "src/monitoring/prometheus/config/prometheus.yml",
    "content": "global:\n  scrape_interval: 5s\n  scrape_timeout: 3s\n  evaluation_interval: 5s\nalerting:\n  alertmanagers:\n  - follow_redirects: true\n    enable_http2: true\n    scheme: http\n    timeout: 10s\n    api_version: v2\n    static_configs:\n    - targets: []\nscrape_configs:\n- job_name: agents-api\n  honor_timestamps: true\n  scrape_interval: 5s\n  scrape_timeout: 3s\n  metrics_path: /metrics\n  scheme: http\n  follow_redirects: true\n  static_configs:\n  - targets: ['agents-api-multi-tenant:8080', 'worker:14000', 'temporal:15000']\n"
  },
  {
    "path": "src/scheduler/AGENTS.md",
    "content": "# AGENTS.md - scheduler\n\nThis directory contains the Temporal workflow engine configuration for distributed task execution.\n\nKey Uses\n- Bash commands:\n  - cd scheduler\n  - docker-compose --profile self-hosted-db up    # With local PostgreSQL\n  - docker-compose --profile managed-db up        # With external database\n  - docker-compose --profile temporal-ui up       # Web UI for monitoring\n  - docker-compose --profile temporal-ui-public up # Public read-only UI\n- Core files:\n  - `docker-compose.yml` for Temporal services\n  - `dynamicconfig/temporal-postgres.yaml` for runtime configuration\n  - `cert/` directory for TLS certificates\n- Configuration guidelines:\n  - Set `TEMPORAL_POSTGRES_PASSWORD` for database authentication\n  - Configure `TEMPORAL_ADDRESS` for service discovery\n  - Adjust `dynamicconfig` for performance tuning\n- Testing instructions:\n  - Temporal UI: `http://localhost:9000` (full access)\n  - Public UI: `http://localhost:9001` (read-only)\n  - Health check: Connect to Temporal gRPC endpoint\n- Repository etiquette:\n  - Don't commit database passwords or certificates\n  - Use external volumes for data persistence\n- Developer environment:\n  - Requires Docker and Docker Compose\n  - PostgreSQL for workflow state persistence\n- Unexpected behaviors:\n  - Auto-setup includes database schema initialization\n  - UI codec endpoint requires agents-api integration\n\n# Scheduler Service\n\n## Overview\nThe scheduler service provides distributed workflow orchestration using Temporal, enabling durable execution of complex, long-running tasks with built-in retry logic, state management, and fault tolerance.\n\n## Architecture\n- **Workflow Engine**: Temporal server with PostgreSQL persistence\n- **UI Components**: Web interface for workflow monitoring\n- **Database**: PostgreSQL for workflow state and history\n- **Configuration**: Dynamic runtime configuration system\n\n## Key Components\n\n### Temporal Server\n- **Image**: temporalio/auto-setup:1.25.2 with automatic schema setup\n- **Features**: Workflow execution, activity coordination, timers\n- **Persistence**: PostgreSQL-backed state storage\n- **Metrics**: Prometheus endpoint on port 15000\n\n### Temporal UI\n- **Standard UI**: Full-featured workflow monitoring (port 9000)\n- **Public UI**: Read-only interface for external access (port 9001)\n- **Features**: Workflow visualization, execution history, debugging\n\n### PostgreSQL Database\n- **Purpose**: Workflow state and history persistence\n- **Configuration**: High connection limit (1000) for concurrent workflows\n- **Health Checks**: Automated readiness verification\n- **Persistence**: External volume for data durability\n\n## Environment Variables\n- `TEMPORAL_POSTGRES_PASSWORD`: Database password (required)\n- `TEMPORAL_POSTGRES_DB`: Database name (default: temporal)\n- `TEMPORAL_POSTGRES_HOST`: Database host (default: temporal-db)\n- `TEMPORAL_POSTGRES_USER`: Database user (default: temporal)\n- `TEMPORAL_ADDRESS`: Temporal server address (default: temporal:7233)\n- `TEMPORAL_LOG_LEVEL`: Logging verbosity (default: info)\n\n### TLS Configuration\n- `TEMPORAL_POSTGRES_TLS_ENABLED`: Enable database TLS\n- `TEMPORAL_POSTGRES_TLS_DISABLE_HOST_VERIFICATION`: Skip hostname verification\n- Certificate files in `/cert/` directory\n\n## Deployment Profiles\n1. **Self-hosted DB**: Complete local deployment with PostgreSQL\n2. **Managed DB**: Use external PostgreSQL service\n3. **Temporal UI**: Full-featured workflow monitoring interface\n4. **Temporal UI Public**: Read-only public access interface\n\n## Dynamic Configuration\n\n### Performance Tuning\n- **Matching RPS**: 600 requests per second (reduced from 1200)\n- **Blob Size Limit**: 4MB maximum payload size\n- **History Size Limit**: 100MB workflow history limit\n- **History Count Limit**: 102400 events per workflow\n\n### Concurrency Limits\n- **Pending Activities**: 4000 maximum concurrent activities\n- **Child Executions**: 4000 maximum nested workflows\n- **Batch Operations**: 10000 executions per batch\n- **Concurrent Batches**: 100 per namespace\n\n## Workflow Features\n- **Durable Execution**: Workflows survive system failures\n- **Activity Retries**: Automatic retry with exponential backoff\n- **Timers and Delays**: Built-in scheduling capabilities\n- **Signal Handling**: External event processing\n- **Child Workflows**: Nested workflow execution\n- **Continue-as-New**: Long-running workflow optimization\n\n## Monitoring & Observability\n- **Prometheus Metrics**: Comprehensive workflow and system metrics\n- **Workflow Visibility**: Real-time execution status\n- **History Tracking**: Complete audit trail of workflow execution\n- **Search Attributes**: Custom metadata for workflow queries\n\n### UI Features\n- **Workflow List**: Browse and filter workflows\n- **Execution Details**: Step-by-step execution visualization\n- **Task Queues**: Monitor worker capacity and utilization\n- **Namespaces**: Multi-tenant workflow isolation\n- **Cluster Information**: System health and configuration\n\n## Integration Points\n- **Agents API**: Executes workflows via Temporal client\n- **Worker Processes**: Handle activity execution\n- **Codec Endpoint**: Custom payload encoding/decoding\n- **Monitoring**: Metrics collection via Prometheus\n\n## Security Features\n- **TLS Encryption**: Database and service communication\n- **Namespace Isolation**: Multi-tenant security boundaries\n- **Authentication**: Database credential management\n- **Certificate Management**: Custom CA and client certificates\n\n## Operational Procedures\n- **Schema Management**: Automatic database schema setup\n- **Backup/Restore**: PostgreSQL-based data backup\n- **Scaling**: Horizontal scaling for high workflow volumes\n- **Maintenance**: Rolling updates and configuration changes\n\n## Development Features\n- **Auto-setup**: Automatic database initialization\n- **Local Development**: Self-contained deployment\n- **Hot Configuration**: Dynamic config reload without restart\n- **Debug Interface**: Detailed workflow execution logs\n\n## Advanced Configuration\n- **Custom Search Attributes**: Metadata indexing for queries\n- **Archival**: Historical workflow data management\n- **Rate Limiting**: Request throttling and load control\n- **Multi-cluster**: Cross-region workflow replication\n\n## Troubleshooting\n- **Health Checks**: Database and service connectivity\n- **Log Analysis**: Structured logging for debugging\n- **Metrics Monitoring**: Performance and error tracking\n- **UI Diagnostics**: Visual workflow execution analysis"
  },
  {
    "path": "src/scheduler/cert/.gitignore",
    "content": "*.crt\n*.key\n*.pem\n*.csr\n*.pem\n*.key\n*.crt\n*.csr\n*.pem\n"
  },
  {
    "path": "src/scheduler/docker-compose.yml",
    "content": "name: julep-scheduler\r\n\r\nx--temporal-base: &temporal-base\r\n  image: temporalio/auto-setup:1.25.2\r\n  hostname: temporal\r\n  environment:\r\n    - POSTGRES_PWD=${TEMPORAL_POSTGRES_PASSWORD}\r\n    - POSTGRES_DB=${TEMPORAL_POSTGRES_DB:-temporal}\r\n    - POSTGRES_SEEDS=${TEMPORAL_POSTGRES_HOST:-temporal-db}\r\n    - DB_HOST=${TEMPORAL_POSTGRES_HOST:-temporal-db}\r\n    - DB_PORT=${TEMPORAL_POSTGRES_PORT:-5432}\r\n    - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal}\r\n\r\n    - TEMPORAL_ADDRESS=${TEMPORAL_ADDRESS:-temporal:7233}\r\n    - POSTGRES_TLS_ENABLED=${TEMPORAL_POSTGRES_TLS_ENABLED:-false}\r\n    - POSTGRES_TLS_CA_FILE=/cert/ca.crt\r\n    - SQL_TLS_ENABLED=${TEMPORAL_POSTGRES_TLS_ENABLED:-false}\r\n    - SQL_CA=/cert/ca.crt\r\n    - POSTGRES_TLS_DISABLE_HOST_VERIFICATION=${TEMPORAL_POSTGRES_TLS_DISABLE_HOST_VERIFICATION:-false}\r\n    - VISIBILITY_DBNAME=${TEMPORAL_VISIBILITY_DBNAME:-temporal_visibility}\r\n    - SKIP_SCHEMA_SETUP=${TEMPORAL_SKIP_SCHEMA_SETUP:-false}\r\n    - SKIP_DB_CREATE=${TEMPORAL_SKIP_DB_CREATE:-false}\r\n    - DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/temporal-postgres.yaml\r\n    - DB=postgres12\r\n    - LOG_LEVEL=${TEMPORAL_LOG_LEVEL:-info}\r\n    - PROMETHEUS_ENDPOINT=0.0.0.0:15000\r\n  volumes:\r\n    - ./dynamicconfig:/etc/temporal/config/dynamicconfig\r\n    - ./cert:/cert\r\n\r\nservices:\r\n  temporal-managed:\r\n    <<: *temporal-base\r\n    profiles:\r\n      - managed-db\r\n\r\n  temporal:\r\n    <<: *temporal-base\r\n    profiles:\r\n      - self-hosted-db\r\n    depends_on:\r\n      - temporal-db\r\n\r\n  temporal-db:\r\n    image: postgres:16\r\n    restart: unless-stopped\r\n    command: -c 'max_connections=1000'\r\n    volumes:\r\n      - temporal-db-data:/var/lib/postgresql/data\r\n    profiles:\r\n      - self-hosted-db\r\n    environment:\r\n      - POSTGRES_DB=${TEMPORAL_POSTGRES_DB:-temporal}\r\n      - POSTGRES_USER=${TEMPORAL_POSTGRES_USER:-temporal}\r\n      - POSTGRES_PASSWORD=${TEMPORAL_POSTGRES_PASSWORD}\r\n    healthcheck:\r\n      test: [ \"CMD-SHELL\", \"pg_isready -d ${TEMPORAL_POSTGRES_DB:-temporal} -U ${TEMPORAL_POSTGRES_USER:-temporal}\" ]\r\n\r\n      interval: 1s\r\n      timeout: 5s\r\n      retries: 10\r\n\r\n  temporal-ui:\r\n    image: temporalio/ui:latest\r\n    profiles:\r\n      - temporal-ui\r\n    environment:\r\n      # See: https://github.com/temporalio/ui-server/blob/main/docker/config-template.yaml\r\n      - TEMPORAL_ADDRESS=${TEMPORAL_ADDRESS:-temporal:7233}\r\n      # Note: Not setting it enables all origins\r\n      # - TEMPORAL_CORS_ORIGINS=${TEMPORAL_CORS_ORIGINS:-http://localhost:3000}\r\n      - TEMPORAL_CODEC_ENDPOINT=http://localhost/api/temporal\r\n      - TEMPORAL_UI_ENABLED=true\r\n      - TEMPORAL_FEEDBACK_URL=https://github.com/julep-ai/julep\r\n      - TEMPORAL_NOTIFY_ON_NEW_VERSION=false\r\n      - TEMPORAL_CSRF_COOKIE_INSECURE=true\r\n      # - TEMPORAL_HIDE_LOGS=true\r\n      # - TEMPORAL_BANNER_TEXT=gagagaga\r\n      # - TEMPORAL_DISABLE_WRITE_ACTIONS=true\r\n      # - TEMPORAL_HIDE_WORKFLOW_QUERY_ERRORS=true\r\n      # - TEMPORAL_REFRESH_WORKFLOW_COUNTS_DISABLED=true\r\n      - TEMPORAL_OPEN_API_ENABLED=true\r\n\r\n    ports:\r\n      - 9000:8080  # Since 8080 is already used by agents-api\r\n\r\n  temporal-ui-public:\r\n    image: temporalio/ui:latest\r\n    profiles:\r\n      - temporal-ui-public\r\n    environment:\r\n      # See: https://github.com/temporalio/ui-server/blob/main/docker/config-template.yaml\r\n      - TEMPORAL_ADDRESS=${TEMPORAL_ADDRESS:-temporal:7233}\r\n      - TEMPORAL_CODEC_ENDPOINT=http://localhost/api/temporal\r\n      - TEMPORAL_UI_ENABLED=true\r\n      - TEMPORAL_FEEDBACK_URL=https://github.com/julep-ai/julep\r\n      - TEMPORAL_NOTIFY_ON_NEW_VERSION=false\r\n      - TEMPORAL_CSRF_COOKIE_INSECURE=true\r\n      - TEMPORAL_DISABLE_WRITE_ACTIONS=true\r\n      - TEMPORAL_OPEN_API_ENABLED=true\r\n      - TEMPORAL_UI_BASE_PATH=/tasks-ui\r\n      - TEMPORAL_UI_PUBLIC_PATH=/tasks-ui\r\n\r\n\r\n    ports:\r\n      - 9001:8080  # Since 8080 is already used by agents-api\r\n\r\n\r\n\r\nvolumes:\r\n  temporal-db-data:\r\n    external: true\r\n"
  },
  {
    "path": "src/scheduler/dynamicconfig/temporal-postgres.yaml",
    "content": "limit.maxIDLength:\n  - value: 255\n    constraints: {}\nsystem.forceSearchAttributesCacheRefreshOnRead:\n  - value: false\n    constraints: {}\n\nmatching.rps:\n  - value: 600 # default 1200\n    constraints: {}\n\nlimit.blobSize.error:\n  - value: 4194304 # default 2*1024*1024\n    constraints: {}\n\nlimit.historySize.error:\n  - value: 104857600 # default 50*1024*1024\n    constraints: {}\n\nlimit.historyCount.error:\n  - value: 102400 # default 50*1024\n    constraints: {}\n\nlimit.numPendingActivities.error:\n  - value: 4000 # default 2000\n    constraints: {}\n\nlimit.numPendingChildExecutions.error:\n  - value: 4000 # default 2000\n    constraints: {}\n\nfrontend.MaxExecutionCountBatchOperationPerNamespace:\n  - value: 10000\n    constraints: {}\n\nfrontend.MaxConcurrentBatchOperationPerNamespace:\n  - value: 100\n    constraints: {}\n\n# worker.ScannerMaxConcurrentWorkflowTaskExecutionSize (10 default), worker.ParentCloseMaxConcurrentWorkflowTaskExecutionSize (1000 default) (reduce?)\n\n\n# worker.ScannerMaxConcurrentActivityExecutionSize (10 default), worker.ParentCloseMaxConcurrentActivityExecutionSize (1000 default) (reduce?)\n"
  },
  {
    "path": "src/schemas/create_agent_request.json",
    "content": "{\n  \"$defs\": {\n    \"Agent\": {\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\",\n        \"name\"\n      ],\n      \"title\": \"Agent\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaIntegrationDef\": {\n      \"description\": \"Algolia integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/AlgoliaSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"algolia\",\n          \"default\": \"algolia\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/AlgoliaSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"AlgoliaIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaIntegrationDefUpdate\": {\n      \"description\": \"Algolia integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/AlgoliaSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"algolia\",\n          \"default\": \"algolia\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/AlgoliaSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"AlgoliaIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaSearchArguments\": {\n      \"description\": \"Arguments for Algolia Search\",\n      \"properties\": {\n        \"attributes_to_retrieve\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Attributes To Retrieve\"\n        },\n        \"hits_per_page\": {\n          \"default\": 10,\n          \"maximum\": 1000.0,\n          \"minimum\": 1.0,\n          \"title\": \"Hits Per Page\",\n          \"type\": \"integer\"\n        },\n        \"index_name\": {\n          \"title\": \"Index Name\",\n          \"type\": \"string\"\n        },\n        \"query\": {\n          \"title\": \"Query\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"index_name\",\n        \"query\"\n      ],\n      \"title\": \"AlgoliaSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Algolia Search\",\n      \"properties\": {\n        \"attributes_to_retrieve\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Attributes To Retrieve\"\n        },\n        \"hits_per_page\": {\n          \"default\": 10,\n          \"maximum\": 1000.0,\n          \"minimum\": 1.0,\n          \"title\": \"Hits Per Page\",\n          \"type\": \"integer\"\n        },\n        \"index_name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Index Name\"\n        },\n        \"query\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Query\"\n        }\n      },\n      \"title\": \"AlgoliaSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaSetup\": {\n      \"description\": \"Integration definition for Algolia\",\n      \"properties\": {\n        \"algolia_api_key\": {\n          \"title\": \"Algolia Api Key\",\n          \"type\": \"string\"\n        },\n        \"algolia_application_id\": {\n          \"title\": \"Algolia Application Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"algolia_application_id\",\n        \"algolia_api_key\"\n      ],\n      \"title\": \"AlgoliaSetup\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaSetupUpdate\": {\n      \"description\": \"Integration definition for Algolia\",\n      \"properties\": {\n        \"algolia_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Algolia Api Key\"\n        },\n        \"algolia_application_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Algolia Application Id\"\n        }\n      },\n      \"title\": \"AlgoliaSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"ApiCallDef-Input\": {\n      \"description\": \"API call definition\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"cookies\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cookies\"\n        },\n        \"data\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Data\"\n        },\n        \"files\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Files\"\n        },\n        \"follow_redirects\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Follow Redirects\"\n        },\n        \"headers\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Headers\"\n        },\n        \"include_response_content\": {\n          \"default\": true,\n          \"title\": \"Include Response Content\",\n          \"type\": \"boolean\"\n        },\n        \"json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Json\"\n        },\n        \"method\": {\n          \"enum\": [\n            \"GET\",\n            \"POST\",\n            \"PUT\",\n            \"DELETE\",\n            \"PATCH\",\n            \"HEAD\",\n            \"OPTIONS\",\n            \"CONNECT\",\n            \"TRACE\"\n          ],\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"params_schema\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ParameterSchema-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Schema\"\n        },\n        \"secrets\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/SecretRef\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Secrets\"\n        },\n        \"timeout\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout\"\n        },\n        \"url\": {\n          \"format\": \"uri\",\n          \"minLength\": 1,\n          \"title\": \"Url\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"method\",\n        \"url\"\n      ],\n      \"title\": \"ApiCallDef\",\n      \"type\": \"object\"\n    },\n    \"ApiCallDef-Output\": {\n      \"description\": \"API call definition\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"cookies\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cookies\"\n        },\n        \"data\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Data\"\n        },\n        \"files\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Files\"\n        },\n        \"follow_redirects\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Follow Redirects\"\n        },\n        \"headers\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Headers\"\n        },\n        \"include_response_content\": {\n          \"default\": true,\n          \"title\": \"Include Response Content\",\n          \"type\": \"boolean\"\n        },\n        \"json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Json\"\n        },\n        \"method\": {\n          \"enum\": [\n            \"GET\",\n            \"POST\",\n            \"PUT\",\n            \"DELETE\",\n            \"PATCH\",\n            \"HEAD\",\n            \"OPTIONS\",\n            \"CONNECT\",\n            \"TRACE\"\n          ],\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"params_schema\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ParameterSchema-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Schema\"\n        },\n        \"secrets\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/SecretRef\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Secrets\"\n        },\n        \"timeout\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout\"\n        },\n        \"url\": {\n          \"format\": \"uri\",\n          \"minLength\": 1,\n          \"title\": \"Url\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"method\",\n        \"url\"\n      ],\n      \"title\": \"ApiCallDef\",\n      \"type\": \"object\"\n    },\n    \"ApiCallDefUpdate\": {\n      \"description\": \"API call definition\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"cookies\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cookies\"\n        },\n        \"data\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Data\"\n        },\n        \"files\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Files\"\n        },\n        \"follow_redirects\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Follow Redirects\"\n        },\n        \"headers\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Headers\"\n        },\n        \"include_response_content\": {\n          \"default\": true,\n          \"title\": \"Include Response Content\",\n          \"type\": \"boolean\"\n        },\n        \"json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Json\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"GET\",\n                \"POST\",\n                \"PUT\",\n                \"DELETE\",\n                \"PATCH\",\n                \"HEAD\",\n                \"OPTIONS\",\n                \"CONNECT\",\n                \"TRACE\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"params_schema\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ParameterSchemaUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Schema\"\n        },\n        \"secrets\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/SecretRefUpdate\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Secrets\"\n        },\n        \"timeout\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout\"\n        },\n        \"url\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uri\",\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Url\"\n        }\n      },\n      \"title\": \"ApiCallDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"ArxivIntegrationDef\": {\n      \"description\": \"Arxiv integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ArxivSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"arxiv\",\n          \"default\": \"arxiv\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"ArxivIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"ArxivIntegrationDefUpdate\": {\n      \"description\": \"Arxiv integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ArxivSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"arxiv\",\n          \"default\": \"arxiv\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"ArxivIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"ArxivSearchArguments\": {\n      \"description\": \"Arguments for Arxiv Search\",\n      \"properties\": {\n        \"download_pdf\": {\n          \"default\": false,\n          \"title\": \"Download Pdf\",\n          \"type\": \"boolean\"\n        },\n        \"id_list\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id List\"\n        },\n        \"max_results\": {\n          \"default\": 5,\n          \"maximum\": 300000.0,\n          \"minimum\": 1.0,\n          \"title\": \"Max Results\",\n          \"type\": \"integer\"\n        },\n        \"query\": {\n          \"title\": \"Query\",\n          \"type\": \"string\"\n        },\n        \"sort_by\": {\n          \"default\": \"relevance\",\n          \"enum\": [\n            \"relevance\",\n            \"lastUpdatedDate\",\n            \"submittedDate\"\n          ],\n          \"title\": \"Sort By\",\n          \"type\": \"string\"\n        },\n        \"sort_order\": {\n          \"default\": \"descending\",\n          \"enum\": [\n            \"ascending\",\n            \"descending\"\n          ],\n          \"title\": \"Sort Order\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"query\"\n      ],\n      \"title\": \"ArxivSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"ArxivSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Arxiv Search\",\n      \"properties\": {\n        \"download_pdf\": {\n          \"default\": false,\n          \"title\": \"Download Pdf\",\n          \"type\": \"boolean\"\n        },\n        \"id_list\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id List\"\n        },\n        \"max_results\": {\n          \"default\": 5,\n          \"maximum\": 300000.0,\n          \"minimum\": 1.0,\n          \"title\": \"Max Results\",\n          \"type\": \"integer\"\n        },\n        \"query\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Query\"\n        },\n        \"sort_by\": {\n          \"default\": \"relevance\",\n          \"enum\": [\n            \"relevance\",\n            \"lastUpdatedDate\",\n            \"submittedDate\"\n          ],\n          \"title\": \"Sort By\",\n          \"type\": \"string\"\n        },\n        \"sort_order\": {\n          \"default\": \"descending\",\n          \"enum\": [\n            \"ascending\",\n            \"descending\"\n          ],\n          \"title\": \"Sort Order\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"ArxivSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BaseTokenLogProb\": {\n      \"properties\": {\n        \"bytes\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"integer\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Bytes\"\n        },\n        \"logprob\": {\n          \"title\": \"Logprob\",\n          \"type\": \"number\"\n        },\n        \"token\": {\n          \"title\": \"Token\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"token\",\n        \"logprob\"\n      ],\n      \"title\": \"BaseTokenLogProb\",\n      \"type\": \"object\"\n    },\n    \"Bash20241022Def\": {\n      \"properties\": {\n        \"name\": {\n          \"default\": \"bash\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"bash_20241022\",\n          \"default\": \"bash_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"Bash20241022Def\",\n      \"type\": \"object\"\n    },\n    \"Bash20241022DefUpdate\": {\n      \"properties\": {\n        \"name\": {\n          \"default\": \"bash\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"bash_20241022\",\n          \"default\": \"bash_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"Bash20241022DefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BraveIntegrationDef\": {\n      \"description\": \"Brave integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BraveSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"brave\",\n          \"default\": \"brave\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BraveSearchSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BraveIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BraveIntegrationDefUpdate\": {\n      \"description\": \"Brave integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BraveSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"brave\",\n          \"default\": \"brave\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BraveSearchSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BraveIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BraveSearchArguments\": {\n      \"description\": \"Arguments for Brave Search\",\n      \"properties\": {\n        \"query\": {\n          \"title\": \"Query\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"query\"\n      ],\n      \"title\": \"BraveSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"BraveSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Brave Search\",\n      \"properties\": {\n        \"query\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Query\"\n        }\n      },\n      \"title\": \"BraveSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BraveSearchSetup\": {\n      \"description\": \"Integration definition for Brave Search\",\n      \"properties\": {\n        \"brave_api_key\": {\n          \"title\": \"Brave Api Key\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"brave_api_key\"\n      ],\n      \"title\": \"BraveSearchSetup\",\n      \"type\": \"object\"\n    },\n    \"BraveSearchSetupUpdate\": {\n      \"description\": \"Integration definition for Brave Search\",\n      \"properties\": {\n        \"brave_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Brave Api Key\"\n        }\n      },\n      \"title\": \"BraveSearchSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCompleteSessionArguments\": {\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"const\": \"REQUEST_RELEASE\",\n          \"default\": \"REQUEST_RELEASE\",\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\"\n      ],\n      \"title\": \"BrowserbaseCompleteSessionArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCompleteSessionArgumentsUpdate\": {\n      \"properties\": {\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id\"\n        },\n        \"status\": {\n          \"const\": \"REQUEST_RELEASE\",\n          \"default\": \"REQUEST_RELEASE\",\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"BrowserbaseCompleteSessionArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCompleteSessionIntegrationDef\": {\n      \"description\": \"browserbase complete session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"complete_session\",\n          \"default\": \"complete_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseCompleteSessionIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCompleteSessionIntegrationDefUpdate\": {\n      \"description\": \"browserbase complete session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"complete_session\",\n          \"default\": \"complete_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseCompleteSessionIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseContextArguments\": {\n      \"properties\": {\n        \"projectId\": {\n          \"title\": \"Projectid\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"projectId\"\n      ],\n      \"title\": \"BrowserbaseContextArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseContextArgumentsUpdate\": {\n      \"properties\": {\n        \"projectId\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Projectid\"\n        }\n      },\n      \"title\": \"BrowserbaseContextArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseContextIntegrationDef\": {\n      \"description\": \"browserbase context provider\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"create_context\",\n          \"default\": \"create_context\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseContextIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseContextIntegrationDefUpdate\": {\n      \"description\": \"browserbase context provider\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"create_context\",\n          \"default\": \"create_context\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseContextIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCreateSessionArguments\": {\n      \"properties\": {\n        \"browserSettings\": {\n          \"default\": {},\n          \"title\": \"Browsersettings\",\n          \"type\": \"object\"\n        },\n        \"extensionId\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Extensionid\"\n        },\n        \"keepAlive\": {\n          \"default\": false,\n          \"title\": \"Keepalive\",\n          \"type\": \"boolean\"\n        },\n        \"projectId\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Projectid\"\n        },\n        \"proxies\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"items\": {\n                \"type\": \"object\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": false,\n          \"title\": \"Proxies\"\n        },\n        \"timeout\": {\n          \"default\": 3600,\n          \"title\": \"Timeout\",\n          \"type\": \"integer\"\n        }\n      },\n      \"title\": \"BrowserbaseCreateSessionArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCreateSessionIntegrationDef\": {\n      \"description\": \"browserbase create session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"create_session\",\n          \"default\": \"create_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseCreateSessionIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCreateSessionIntegrationDefUpdate\": {\n      \"description\": \"browserbase create session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"create_session\",\n          \"default\": \"create_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseCreateSessionIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseExtensionArguments\": {\n      \"properties\": {\n        \"ref\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Ref\"\n        },\n        \"repositoryName\": {\n          \"title\": \"Repositoryname\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"repositoryName\"\n      ],\n      \"title\": \"BrowserbaseExtensionArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseExtensionArgumentsUpdate\": {\n      \"properties\": {\n        \"ref\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Ref\"\n        },\n        \"repositoryName\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Repositoryname\"\n        }\n      },\n      \"title\": \"BrowserbaseExtensionArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseExtensionIntegrationDef\": {\n      \"description\": \"browserbase extension provider\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"const\": \"install_extension_from_github\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseExtensionIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseExtensionIntegrationDefUpdate\": {\n      \"description\": \"browserbase extension provider\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"const\": \"install_extension_from_github\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseExtensionIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionArguments\": {\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\"\n      ],\n      \"title\": \"BrowserbaseGetSessionArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionArgumentsUpdate\": {\n      \"properties\": {\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id\"\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionIntegrationDef\": {\n      \"description\": \"browserbase get session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"get_session\",\n          \"default\": \"get_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionIntegrationDefUpdate\": {\n      \"description\": \"browserbase get session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"get_session\",\n          \"default\": \"get_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionLiveUrlsArguments\": {\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\"\n      ],\n      \"title\": \"BrowserbaseGetSessionLiveUrlsArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionLiveUrlsArgumentsUpdate\": {\n      \"properties\": {\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id\"\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionLiveUrlsArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionLiveUrlsIntegrationDef\": {\n      \"description\": \"browserbase get session live urls integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"get_live_urls\",\n          \"default\": \"get_live_urls\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionLiveUrlsIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate\": {\n      \"description\": \"browserbase get session live urls integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"get_live_urls\",\n          \"default\": \"get_live_urls\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseListSessionsArguments\": {\n      \"properties\": {\n        \"status\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"RUNNING\",\n                \"ERROR\",\n                \"TIMED_OUT\",\n                \"COMPLETED\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Status\"\n        }\n      },\n      \"title\": \"BrowserbaseListSessionsArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseListSessionsIntegrationDef\": {\n      \"description\": \"browserbase list sessions integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"list_sessions\",\n          \"default\": \"list_sessions\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseListSessionsIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseListSessionsIntegrationDefUpdate\": {\n      \"description\": \"browserbase list sessions integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"list_sessions\",\n          \"default\": \"list_sessions\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseListSessionsIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseSetup\": {\n      \"description\": \"The setup parameters for the browserbase integration\",\n      \"properties\": {\n        \"api_key\": {\n          \"title\": \"Api Key\",\n          \"type\": \"string\"\n        },\n        \"api_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Url\"\n        },\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"project_id\": {\n          \"title\": \"Project Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"api_key\",\n        \"project_id\"\n      ],\n      \"title\": \"BrowserbaseSetup\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseSetupUpdate\": {\n      \"description\": \"The setup parameters for the browserbase integration\",\n      \"properties\": {\n        \"api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Key\"\n        },\n        \"api_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Url\"\n        },\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"project_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project Id\"\n        }\n      },\n      \"title\": \"BrowserbaseSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"BulkDeleteDocsRequest\": {\n      \"properties\": {\n        \"delete_all\": {\n          \"default\": false,\n          \"title\": \"Delete All\",\n          \"type\": \"boolean\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        }\n      },\n      \"title\": \"BulkDeleteDocsRequest\",\n      \"type\": \"object\"\n    },\n    \"CaseThen-Input\": {\n      \"properties\": {\n        \"case\": {\n          \"anyOf\": [\n            {\n              \"const\": \"_\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ],\n          \"title\": \"Case\"\n        },\n        \"then\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            }\n          ],\n          \"title\": \"Then\"\n        }\n      },\n      \"required\": [\n        \"case\",\n        \"then\"\n      ],\n      \"title\": \"CaseThen\",\n      \"type\": \"object\"\n    },\n    \"CaseThen-Output\": {\n      \"properties\": {\n        \"case\": {\n          \"anyOf\": [\n            {\n              \"const\": \"_\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ],\n          \"title\": \"Case\"\n        },\n        \"then\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            }\n          ],\n          \"title\": \"Then\"\n        }\n      },\n      \"required\": [\n        \"case\",\n        \"then\"\n      ],\n      \"title\": \"CaseThen\",\n      \"type\": \"object\"\n    },\n    \"ChatInput\": {\n      \"properties\": {\n        \"agent\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agent\"\n        },\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"frequency_penalty\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 2.0,\n              \"minimum\": -2.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Frequency Penalty\"\n        },\n        \"length_penalty\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 2.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Length Penalty\"\n        },\n        \"logit_bias\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/LogitBias\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Logit Bias\"\n        },\n        \"max_tokens\": {\n          \"anyOf\": [\n            {\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Max Tokens\"\n        },\n        \"messages\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Message-Input\"\n          },\n          \"minItems\": 1,\n          \"title\": \"Messages\",\n          \"type\": \"array\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"min_p\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Min P\"\n        },\n        \"model\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Model\"\n        },\n        \"presence_penalty\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 2.0,\n              \"minimum\": -2.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Presence Penalty\"\n        },\n        \"recall\": {\n          \"default\": true,\n          \"title\": \"Recall\",\n          \"type\": \"boolean\"\n        },\n        \"recall_tools\": {\n          \"default\": true,\n          \"title\": \"Recall Tools\",\n          \"type\": \"boolean\"\n        },\n        \"remember\": {\n          \"default\": false,\n          \"readOnly\": true,\n          \"title\": \"Remember\",\n          \"type\": \"boolean\"\n        },\n        \"repetition_penalty\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 2.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Repetition Penalty\"\n        },\n        \"response_format\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SimpleCompletionResponseFormat\"\n            },\n            {\n              \"$ref\": \"#/$defs/SchemaCompletionResponseFormat\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Response Format\"\n        },\n        \"save\": {\n          \"default\": true,\n          \"title\": \"Save\",\n          \"type\": \"boolean\"\n        },\n        \"seed\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1000.0,\n              \"minimum\": -1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Seed\"\n        },\n        \"stop\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"maxItems\": 4,\n          \"title\": \"Stop\",\n          \"type\": \"array\"\n        },\n        \"stream\": {\n          \"default\": false,\n          \"title\": \"Stream\",\n          \"type\": \"boolean\"\n        },\n        \"temperature\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 5.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Temperature\"\n        },\n        \"tool_choice\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"auto\",\n                \"none\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedToolChoice\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Choice\"\n        },\n        \"tools\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/agents_api__autogen__Tools__CreateToolRequest-Input\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tools\"\n        },\n        \"top_p\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Top P\"\n        }\n      },\n      \"required\": [\n        \"messages\"\n      ],\n      \"title\": \"ChatInput\",\n      \"type\": \"object\"\n    },\n    \"ChatOutputChunk\": {\n      \"description\": \"Streaming chat completion output\",\n      \"properties\": {\n        \"delta\": {\n          \"$ref\": \"#/$defs/Delta\"\n        },\n        \"finish_reason\": {\n          \"default\": \"stop\",\n          \"enum\": [\n            \"stop\",\n            \"length\",\n            \"content_filter\",\n            \"tool_calls\"\n          ],\n          \"title\": \"Finish Reason\",\n          \"type\": \"string\"\n        },\n        \"index\": {\n          \"title\": \"Index\",\n          \"type\": \"integer\"\n        },\n        \"logprobs\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LogProbResponse\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"index\",\n        \"delta\"\n      ],\n      \"title\": \"ChatOutputChunk\",\n      \"type\": \"object\"\n    },\n    \"ChosenBash20241022\": {\n      \"properties\": {\n        \"command\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Command\"\n        },\n        \"restart\": {\n          \"default\": false,\n          \"title\": \"Restart\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"title\": \"ChosenBash20241022\",\n      \"type\": \"object\"\n    },\n    \"ChosenComputer20241022\": {\n      \"properties\": {\n        \"action\": {\n          \"enum\": [\n            \"key\",\n            \"type\",\n            \"cursor_position\",\n            \"mouse_move\",\n            \"left_click\",\n            \"right_click\",\n            \"middle_click\",\n            \"double_click\",\n            \"screenshot\"\n          ],\n          \"title\": \"Action\",\n          \"type\": \"string\"\n        },\n        \"coordinate\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"integer\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Coordinate\"\n        },\n        \"text\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Text\"\n        }\n      },\n      \"required\": [\n        \"action\"\n      ],\n      \"title\": \"ChosenComputer20241022\",\n      \"type\": \"object\"\n    },\n    \"ChosenFunctionCall\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Call\"\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ChosenBash20241022\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ChosenComputer20241022\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"function\": {\n          \"$ref\": \"#/$defs/FunctionCallOption\"\n        },\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Id\"\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System\"\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"const\": \"function\",\n          \"default\": \"function\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"function\"\n      ],\n      \"title\": \"ChosenFunctionCall\",\n      \"type\": \"object\"\n    },\n    \"ChosenTextEditor20241022\": {\n      \"properties\": {\n        \"command\": {\n          \"enum\": [\n            \"str_replace\",\n            \"insert\",\n            \"view\",\n            \"undo_edit\"\n          ],\n          \"title\": \"Command\",\n          \"type\": \"string\"\n        },\n        \"file_text\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File Text\"\n        },\n        \"insert_line\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Insert Line\"\n        },\n        \"new_str\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"New Str\"\n        },\n        \"old_str\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Old Str\"\n        },\n        \"path\": {\n          \"title\": \"Path\",\n          \"type\": \"string\"\n        },\n        \"view_range\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"integer\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"View Range\"\n        }\n      },\n      \"required\": [\n        \"command\",\n        \"path\"\n      ],\n      \"title\": \"ChosenTextEditor20241022\",\n      \"type\": \"object\"\n    },\n    \"ChunkChatResponse\": {\n      \"properties\": {\n        \"choices\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ChatOutputChunk\"\n          },\n          \"title\": \"Choices\",\n          \"type\": \"array\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"docs\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/DocReference\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Docs\",\n          \"type\": \"array\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"jobs\": {\n          \"default\": [],\n          \"items\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Jobs\",\n          \"type\": \"array\"\n        },\n        \"usage\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CompletionUsage\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"required\": [\n        \"created_at\",\n        \"id\",\n        \"choices\"\n      ],\n      \"title\": \"ChunkChatResponse\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryEditArguments\": {\n      \"description\": \"Arguments for Cloudinary media edit\",\n      \"properties\": {\n        \"public_id\": {\n          \"title\": \"Public Id\",\n          \"type\": \"string\"\n        },\n        \"return_base64\": {\n          \"default\": false,\n          \"title\": \"Return Base64\",\n          \"type\": \"boolean\"\n        },\n        \"transformation\": {\n          \"items\": {\n            \"type\": \"object\"\n          },\n          \"title\": \"Transformation\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"public_id\",\n        \"transformation\"\n      ],\n      \"title\": \"CloudinaryEditArguments\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryEditArgumentsUpdate\": {\n      \"description\": \"Arguments for Cloudinary media edit\",\n      \"properties\": {\n        \"public_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Public Id\"\n        },\n        \"return_base64\": {\n          \"default\": false,\n          \"title\": \"Return Base64\",\n          \"type\": \"boolean\"\n        },\n        \"transformation\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"object\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Transformation\"\n        }\n      },\n      \"title\": \"CloudinaryEditArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryEditIntegrationDef\": {\n      \"description\": \"Cloudinary edit integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"media_edit\",\n          \"default\": \"media_edit\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"cloudinary\",\n          \"default\": \"cloudinary\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinarySetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"CloudinaryEditIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryEditIntegrationDefUpdate\": {\n      \"description\": \"Cloudinary edit integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"media_edit\",\n          \"default\": \"media_edit\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"cloudinary\",\n          \"default\": \"cloudinary\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinarySetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"CloudinaryEditIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"CloudinarySetup\": {\n      \"description\": \"Setup parameters for Cloudinary integration\",\n      \"properties\": {\n        \"cloudinary_api_key\": {\n          \"title\": \"Cloudinary Api Key\",\n          \"type\": \"string\"\n        },\n        \"cloudinary_api_secret\": {\n          \"title\": \"Cloudinary Api Secret\",\n          \"type\": \"string\"\n        },\n        \"cloudinary_cloud_name\": {\n          \"title\": \"Cloudinary Cloud Name\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"required\": [\n        \"cloudinary_api_key\",\n        \"cloudinary_api_secret\",\n        \"cloudinary_cloud_name\"\n      ],\n      \"title\": \"CloudinarySetup\",\n      \"type\": \"object\"\n    },\n    \"CloudinarySetupUpdate\": {\n      \"description\": \"Setup parameters for Cloudinary integration\",\n      \"properties\": {\n        \"cloudinary_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cloudinary Api Key\"\n        },\n        \"cloudinary_api_secret\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cloudinary Api Secret\"\n        },\n        \"cloudinary_cloud_name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cloudinary Cloud Name\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"title\": \"CloudinarySetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryUploadArguments\": {\n      \"description\": \"Arguments for Cloudinary media upload\",\n      \"properties\": {\n        \"file\": {\n          \"title\": \"File\",\n          \"type\": \"string\"\n        },\n        \"public_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Public Id\"\n        },\n        \"return_base64\": {\n          \"default\": false,\n          \"title\": \"Return Base64\",\n          \"type\": \"boolean\"\n        },\n        \"upload_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Upload Params\"\n        }\n      },\n      \"required\": [\n        \"file\"\n      ],\n      \"title\": \"CloudinaryUploadArguments\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryUploadArgumentsUpdate\": {\n      \"description\": \"Arguments for Cloudinary media upload\",\n      \"properties\": {\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        },\n        \"public_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Public Id\"\n        },\n        \"return_base64\": {\n          \"default\": false,\n          \"title\": \"Return Base64\",\n          \"type\": \"boolean\"\n        },\n        \"upload_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Upload Params\"\n        }\n      },\n      \"title\": \"CloudinaryUploadArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryUploadIntegrationDef\": {\n      \"description\": \"Cloudinary upload integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"media_upload\",\n          \"default\": \"media_upload\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"cloudinary\",\n          \"default\": \"cloudinary\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinarySetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"CloudinaryUploadIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryUploadIntegrationDefUpdate\": {\n      \"description\": \"Cloudinary upload integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"media_upload\",\n          \"default\": \"media_upload\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"cloudinary\",\n          \"default\": \"cloudinary\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinarySetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"CloudinaryUploadIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"CompletionUsage\": {\n      \"description\": \"Usage statistics for the completion request\",\n      \"properties\": {\n        \"completion_tokens\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Completion Tokens\"\n        },\n        \"prompt_tokens\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Prompt Tokens\"\n        },\n        \"total_tokens\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Total Tokens\"\n        }\n      },\n      \"title\": \"CompletionUsage\",\n      \"type\": \"object\"\n    },\n    \"Computer20241022Def\": {\n      \"description\": \"Anthropic new tools\",\n      \"properties\": {\n        \"display_height_px\": {\n          \"default\": 768,\n          \"minimum\": 400.0,\n          \"title\": \"Display Height Px\",\n          \"type\": \"integer\"\n        },\n        \"display_number\": {\n          \"default\": 1,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Display Number\",\n          \"type\": \"integer\"\n        },\n        \"display_width_px\": {\n          \"default\": 1024,\n          \"minimum\": 600.0,\n          \"title\": \"Display Width Px\",\n          \"type\": \"integer\"\n        },\n        \"name\": {\n          \"default\": \"computer\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"computer_20241022\",\n          \"default\": \"computer_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"Computer20241022Def\",\n      \"type\": \"object\"\n    },\n    \"Computer20241022DefUpdate\": {\n      \"description\": \"Anthropic new tools\",\n      \"properties\": {\n        \"display_height_px\": {\n          \"default\": 768,\n          \"minimum\": 400.0,\n          \"title\": \"Display Height Px\",\n          \"type\": \"integer\"\n        },\n        \"display_number\": {\n          \"default\": 1,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Display Number\",\n          \"type\": \"integer\"\n        },\n        \"display_width_px\": {\n          \"default\": 1024,\n          \"minimum\": 600.0,\n          \"title\": \"Display Width Px\",\n          \"type\": \"integer\"\n        },\n        \"name\": {\n          \"default\": \"computer\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"computer_20241022\",\n          \"default\": \"computer_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"Computer20241022DefUpdate\",\n      \"type\": \"object\"\n    },\n    \"Content-Output\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"Content\",\n      \"type\": \"object\"\n    },\n    \"ContentItem\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentItem\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel\": {\n      \"properties\": {\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"type\": {\n          \"const\": \"image\",\n          \"default\": \"image\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"source\"\n      ],\n      \"title\": \"ContentItemModel\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel1\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentItemModel1\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel2\": {\n      \"properties\": {\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"type\": {\n          \"const\": \"image\",\n          \"default\": \"image\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"source\"\n      ],\n      \"title\": \"ContentItemModel2\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel3\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentItemModel3\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel4\": {\n      \"properties\": {\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"type\": {\n          \"const\": \"image\",\n          \"default\": \"image\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"source\"\n      ],\n      \"title\": \"ContentItemModel4\",\n      \"type\": \"object\"\n    },\n    \"ContentModel1-Input\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel1\",\n      \"type\": \"object\"\n    },\n    \"ContentModel4\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel3\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel4\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel4\",\n      \"type\": \"object\"\n    },\n    \"ContentModel7\": {\n      \"properties\": {\n        \"image_url\": {\n          \"$ref\": \"#/$defs/ImageUrl\"\n        },\n        \"type\": {\n          \"const\": \"image_url\",\n          \"default\": \"image_url\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"image_url\"\n      ],\n      \"title\": \"ContentModel7\",\n      \"type\": \"object\"\n    },\n    \"CreateAgentRequest\": {\n      \"description\": \"Payload for creating a agent (and associated documents)\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"CreateAgentRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateDocRequest\": {\n      \"description\": \"Payload for creating a doc\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/agents_api__autogen__Common__Content\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/agents_api__autogen__Common__Content\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"embed_instruction\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Embed Instruction\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"title\": {\n          \"maxLength\": 800,\n          \"title\": \"Title\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"title\",\n        \"content\"\n      ],\n      \"title\": \"CreateDocRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateExecutionRequest\": {\n      \"description\": \"Payload for creating an execution\",\n      \"properties\": {\n        \"error\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Error\"\n        },\n        \"input\": {\n          \"title\": \"Input\",\n          \"type\": \"object\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"output\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Output\"\n        },\n        \"transition_count\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Transition Count\"\n        }\n      },\n      \"required\": [\n        \"input\"\n      ],\n      \"title\": \"CreateExecutionRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateFileRequest\": {\n      \"description\": \"Payload for creating a file\",\n      \"properties\": {\n        \"content\": {\n          \"title\": \"Content\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"default\": \"\",\n          \"title\": \"Description\",\n          \"type\": \"string\"\n        },\n        \"mime_type\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Mime Type\"\n        },\n        \"name\": {\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"content\"\n      ],\n      \"title\": \"CreateFileRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateOrUpdateAgentRequest\": {\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"CreateOrUpdateAgentRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateOrUpdateSessionRequest\": {\n      \"properties\": {\n        \"agent\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agent\"\n        },\n        \"agents\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"format\": \"uuid\",\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agents\"\n        },\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearch\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        },\n        \"user\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"User\"\n        },\n        \"users\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"format\": \"uuid\",\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Users\"\n        }\n      },\n      \"title\": \"CreateOrUpdateSessionRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateOrUpdateUserRequest\": {\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"CreateOrUpdateUserRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateProjectRequest\": {\n      \"description\": \"Payload for creating a project\",\n      \"properties\": {\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"CreateProjectRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateSecretRequest\": {\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"title\": \"Value\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"value\"\n      ],\n      \"title\": \"CreateSecretRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateSessionRequest\": {\n      \"description\": \"Payload for creating a session\",\n      \"properties\": {\n        \"agent\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agent\"\n        },\n        \"agents\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"format\": \"uuid\",\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agents\"\n        },\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearch\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        },\n        \"user\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"User\"\n        },\n        \"users\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"format\": \"uuid\",\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Users\"\n        }\n      },\n      \"title\": \"CreateSessionRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateTaskRequest\": {\n      \"additionalProperties\": true,\n      \"description\": \"Payload for creating a task\",\n      \"properties\": {\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"description\": {\n          \"default\": \"\",\n          \"title\": \"Description\",\n          \"type\": \"string\"\n        },\n        \"inherit_tools\": {\n          \"default\": false,\n          \"title\": \"Inherit Tools\",\n          \"type\": \"boolean\"\n        },\n        \"input_schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Input Schema\"\n        },\n        \"main\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/EvaluateStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ToolCallStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/PromptStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/GetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/LogStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/YieldStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ReturnStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SleepStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/WaitForInputStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/IfElseWorkflowStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/SwitchStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/ForeachStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/ParallelStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/Main-Input\"\n              }\n            ]\n          },\n          \"minItems\": 1,\n          \"title\": \"Main\",\n          \"type\": \"array\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"tools\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/TaskTool-Input\"\n          },\n          \"title\": \"Tools\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"main\"\n      ],\n      \"title\": \"CreateTaskRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateToolRequest-Output\": {\n      \"description\": \"Payload for creating a tool\",\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"CreateToolRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateUserRequest\": {\n      \"description\": \"Payload for creating a user (and associated documents)\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"CreateUserRequest\",\n      \"type\": \"object\"\n    },\n    \"Delta\": {\n      \"description\": \"The message generated by the model\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel1\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel7\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel2\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\"\n      ],\n      \"title\": \"Delta\",\n      \"type\": \"object\"\n    },\n    \"Doc\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"embedding_dimensions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Embedding Dimensions\"\n        },\n        \"embedding_model\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Embedding Model\"\n        },\n        \"embeddings\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"number\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"type\": \"array\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Embeddings\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"language\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Language\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"modality\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Modality\"\n        },\n        \"title\": {\n          \"maxLength\": 800,\n          \"title\": \"Title\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"title\",\n        \"content\"\n      ],\n      \"title\": \"Doc\",\n      \"type\": \"object\"\n    },\n    \"DocOwner\": {\n      \"properties\": {\n        \"id\": {\n          \"format\": \"uuid\",\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"agent\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"role\"\n      ],\n      \"title\": \"DocOwner\",\n      \"type\": \"object\"\n    },\n    \"DocReference\": {\n      \"properties\": {\n        \"distance\": {\n          \"anyOf\": [\n            {\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Distance\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"owner\": {\n          \"$ref\": \"#/$defs/DocOwner\"\n        },\n        \"snippet\": {\n          \"$ref\": \"#/$defs/Snippet\"\n        },\n        \"title\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Title\"\n        }\n      },\n      \"required\": [\n        \"owner\",\n        \"id\",\n        \"snippet\"\n      ],\n      \"title\": \"DocReference\",\n      \"type\": \"object\"\n    },\n    \"DocSearchResponse\": {\n      \"properties\": {\n        \"docs\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DocReference\"\n          },\n          \"title\": \"Docs\",\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"exclusiveMinimum\": 0.0,\n          \"title\": \"Time\",\n          \"type\": \"number\"\n        }\n      },\n      \"required\": [\n        \"docs\",\n        \"time\"\n      ],\n      \"title\": \"DocSearchResponse\",\n      \"type\": \"object\"\n    },\n    \"DummyIntegrationDef\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"dummy\",\n          \"default\": \"dummy\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"DummyIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"DummyIntegrationDefUpdate\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"dummy\",\n          \"default\": \"dummy\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"DummyIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"Else-Input\": {\n      \"description\": \"The steps to run if the condition is false\",\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Else\",\n      \"type\": \"object\"\n    },\n    \"Else-Output\": {\n      \"description\": \"The steps to run if the condition is false\",\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Else\",\n      \"type\": \"object\"\n    },\n    \"EmailArguments\": {\n      \"description\": \"Arguments for Email sending\",\n      \"properties\": {\n        \"body\": {\n          \"title\": \"Body\",\n          \"type\": \"string\"\n        },\n        \"from\": {\n          \"title\": \"From\",\n          \"type\": \"string\"\n        },\n        \"subject\": {\n          \"title\": \"Subject\",\n          \"type\": \"string\"\n        },\n        \"to\": {\n          \"title\": \"To\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"to\",\n        \"from\",\n        \"subject\",\n        \"body\"\n      ],\n      \"title\": \"EmailArguments\",\n      \"type\": \"object\"\n    },\n    \"EmailArgumentsUpdate\": {\n      \"description\": \"Arguments for Email sending\",\n      \"properties\": {\n        \"body\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Body\"\n        },\n        \"from\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"From\"\n        },\n        \"subject\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Subject\"\n        },\n        \"to\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"To\"\n        }\n      },\n      \"title\": \"EmailArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"EmailIntegrationDef\": {\n      \"description\": \"Email integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EmailArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"email\",\n          \"default\": \"email\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EmailSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"EmailIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"EmailIntegrationDefUpdate\": {\n      \"description\": \"Email integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EmailArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"email\",\n          \"default\": \"email\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EmailSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"EmailIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"EmailSetup\": {\n      \"description\": \"Setup parameters for Email integration\",\n      \"properties\": {\n        \"host\": {\n          \"title\": \"Host\",\n          \"type\": \"string\"\n        },\n        \"password\": {\n          \"title\": \"Password\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"title\": \"Port\",\n          \"type\": \"integer\"\n        },\n        \"user\": {\n          \"title\": \"User\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"host\",\n        \"port\",\n        \"user\",\n        \"password\"\n      ],\n      \"title\": \"EmailSetup\",\n      \"type\": \"object\"\n    },\n    \"EmailSetupUpdate\": {\n      \"description\": \"Setup parameters for Email integration\",\n      \"properties\": {\n        \"host\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Host\"\n        },\n        \"password\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Password\"\n        },\n        \"port\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Port\"\n        },\n        \"user\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"User\"\n        }\n      },\n      \"title\": \"EmailSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"EmbedQueryResponse\": {\n      \"properties\": {\n        \"vectors\": {\n          \"items\": {\n            \"items\": {\n              \"type\": \"number\"\n            },\n            \"type\": \"array\"\n          },\n          \"title\": \"Vectors\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"vectors\"\n      ],\n      \"title\": \"EmbedQueryResponse\",\n      \"type\": \"object\"\n    },\n    \"Entry\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/Content-Output\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel3\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"$ref\": \"#/$defs/Tool\"\n            },\n            {\n              \"$ref\": \"#/$defs/ChosenFunctionCall\"\n            },\n            {\n              \"$ref\": \"#/$defs/ChosenComputer20241022\"\n            },\n            {\n              \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n            },\n            {\n              \"$ref\": \"#/$defs/ChosenBash20241022\"\n            },\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolResponse\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"items\": {\n                      \"anyOf\": [\n                        {\n                          \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel1\"\n                        },\n                        {\n                          \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel3\"\n                        },\n                        {\n                          \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel2\"\n                        }\n                      ]\n                    },\n                    \"type\": \"array\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/Tool\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  },\n                  {\n                    \"type\": \"string\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ToolResponse\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"model\": {\n          \"default\": \"gpt-4o-mini\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"enum\": [\n            \"api_request\",\n            \"api_response\",\n            \"tool_request\",\n            \"tool_response\",\n            \"internal\",\n            \"summarizer\",\n            \"meta\"\n          ],\n          \"title\": \"Source\",\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"format\": \"date-time\",\n          \"title\": \"Timestamp\",\n          \"type\": \"string\"\n        },\n        \"token_count\": {\n          \"title\": \"Token Count\",\n          \"type\": \"integer\"\n        },\n        \"tokenizer\": {\n          \"title\": \"Tokenizer\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\",\n        \"content\",\n        \"source\",\n        \"tokenizer\",\n        \"token_count\",\n        \"timestamp\",\n        \"created_at\",\n        \"id\"\n      ],\n      \"title\": \"Entry\",\n      \"type\": \"object\"\n    },\n    \"ErrorWorkflowStep\": {\n      \"properties\": {\n        \"error\": {\n          \"title\": \"Error\",\n          \"type\": \"string\"\n        },\n        \"kind_\": {\n          \"const\": \"error\",\n          \"default\": \"error\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"error\"\n      ],\n      \"title\": \"ErrorWorkflowStep\",\n      \"type\": \"object\"\n    },\n    \"EvaluateStep\": {\n      \"properties\": {\n        \"evaluate\": {\n          \"additionalProperties\": {\n            \"anyOf\": [\n              {\n                \"type\": \"object\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"title\": \"Evaluate\",\n          \"type\": \"object\"\n        },\n        \"kind_\": {\n          \"const\": \"evaluate\",\n          \"default\": \"evaluate\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"evaluate\"\n      ],\n      \"title\": \"EvaluateStep\",\n      \"type\": \"object\"\n    },\n    \"Execution\": {\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"error\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Error\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"input\": {\n          \"title\": \"Input\",\n          \"type\": \"object\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"output\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Output\"\n        },\n        \"status\": {\n          \"enum\": [\n            \"queued\",\n            \"starting\",\n            \"running\",\n            \"awaiting_input\",\n            \"succeeded\",\n            \"failed\",\n            \"cancelled\"\n          ],\n          \"readOnly\": true,\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        },\n        \"task_id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Task Id\",\n          \"type\": \"string\"\n        },\n        \"transition_count\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Transition Count\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"task_id\",\n        \"status\",\n        \"input\",\n        \"created_at\",\n        \"updated_at\",\n        \"id\"\n      ],\n      \"title\": \"Execution\",\n      \"type\": \"object\"\n    },\n    \"FfmpegIntegrationDef\": {\n      \"description\": \"Ffmpeg integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FfmpegSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"ffmpeg\",\n          \"default\": \"ffmpeg\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"FfmpegIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"FfmpegIntegrationDefUpdate\": {\n      \"description\": \"Ffmpeg integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FfmpegSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"ffmpeg\",\n          \"default\": \"ffmpeg\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"FfmpegIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"FfmpegSearchArguments\": {\n      \"description\": \"Arguments for Ffmpeg CMD\",\n      \"properties\": {\n        \"cmd\": {\n          \"title\": \"Cmd\",\n          \"type\": \"string\"\n        },\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        }\n      },\n      \"required\": [\n        \"cmd\"\n      ],\n      \"title\": \"FfmpegSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"FfmpegSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Ffmpeg CMD\",\n      \"properties\": {\n        \"cmd\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cmd\"\n        },\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        }\n      },\n      \"title\": \"FfmpegSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"content\": {\n          \"title\": \"Content\",\n          \"type\": \"string\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"default\": \"\",\n          \"title\": \"Description\",\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"readOnly\": true,\n          \"title\": \"Hash\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"mime_type\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Mime Type\"\n        },\n        \"name\": {\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        },\n        \"size\": {\n          \"minimum\": 1.0,\n          \"readOnly\": true,\n          \"title\": \"Size\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"name\",\n        \"content\",\n        \"size\",\n        \"hash\"\n      ],\n      \"title\": \"File\",\n      \"type\": \"object\"\n    },\n    \"ForeachDo-Input\": {\n      \"properties\": {\n        \"do\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Do\"\n        },\n        \"in\": {\n          \"title\": \"In\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"in\",\n        \"do\"\n      ],\n      \"title\": \"ForeachDo\",\n      \"type\": \"object\"\n    },\n    \"ForeachDo-Output\": {\n      \"properties\": {\n        \"do\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Do\"\n        },\n        \"in\": {\n          \"title\": \"In\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"in\",\n        \"do\"\n      ],\n      \"title\": \"ForeachDo\",\n      \"type\": \"object\"\n    },\n    \"ForeachStep-Input\": {\n      \"properties\": {\n        \"foreach\": {\n          \"$ref\": \"#/$defs/ForeachDo-Input\"\n        },\n        \"kind_\": {\n          \"const\": \"foreach\",\n          \"default\": \"foreach\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"foreach\"\n      ],\n      \"title\": \"ForeachStep\",\n      \"type\": \"object\"\n    },\n    \"ForeachStep-Output\": {\n      \"properties\": {\n        \"foreach\": {\n          \"$ref\": \"#/$defs/ForeachDo-Output\"\n        },\n        \"kind_\": {\n          \"const\": \"foreach\",\n          \"default\": \"foreach\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"foreach\"\n      ],\n      \"title\": \"ForeachStep\",\n      \"type\": \"object\"\n    },\n    \"FunctionCallOption\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"FunctionCallOption\",\n      \"type\": \"object\"\n    },\n    \"FunctionDef\": {\n      \"description\": \"Function definition\",\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"parameters\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parameters\"\n        }\n      },\n      \"title\": \"FunctionDef\",\n      \"type\": \"object\"\n    },\n    \"GetStep\": {\n      \"properties\": {\n        \"get\": {\n          \"title\": \"Get\",\n          \"type\": \"string\"\n        },\n        \"kind_\": {\n          \"const\": \"get\",\n          \"default\": \"get\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"get\"\n      ],\n      \"title\": \"GetStep\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsAppendArguments\": {\n      \"description\": \"Arguments for appending values to a spreadsheet\",\n      \"properties\": {\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"insert_data_option\": {\n          \"default\": \"INSERT_ROWS\",\n          \"enum\": [\n            \"OVERWRITE\",\n            \"INSERT_ROWS\"\n          ],\n          \"title\": \"Insert Data Option\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"items\": {\n            \"items\": {},\n            \"type\": \"array\"\n          },\n          \"title\": \"Values\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"range\",\n        \"values\"\n      ],\n      \"title\": \"GoogleSheetsAppendArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsAppendArgumentsUpdate\": {\n      \"description\": \"Arguments for appending values to a spreadsheet\",\n      \"properties\": {\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"insert_data_option\": {\n          \"default\": \"INSERT_ROWS\",\n          \"enum\": [\n            \"OVERWRITE\",\n            \"INSERT_ROWS\"\n          ],\n          \"title\": \"Insert Data Option\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Range\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"items\": {},\n                \"type\": \"array\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Values\"\n        }\n      },\n      \"title\": \"GoogleSheetsAppendArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsBatchReadArguments\": {\n      \"description\": \"Arguments for batch reading values from multiple ranges\",\n      \"properties\": {\n        \"date_time_render_option\": {\n          \"default\": \"FORMATTED_STRING\",\n          \"enum\": [\n            \"SERIAL_NUMBER\",\n            \"FORMATTED_STRING\"\n          ],\n          \"title\": \"Date Time Render Option\",\n          \"type\": \"string\"\n        },\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"ranges\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Ranges\",\n          \"type\": \"array\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_render_option\": {\n          \"default\": \"FORMATTED_VALUE\",\n          \"enum\": [\n            \"FORMATTED_VALUE\",\n            \"UNFORMATTED_VALUE\",\n            \"FORMULA\"\n          ],\n          \"title\": \"Value Render Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"ranges\"\n      ],\n      \"title\": \"GoogleSheetsBatchReadArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsBatchReadArgumentsUpdate\": {\n      \"description\": \"Arguments for batch reading values from multiple ranges\",\n      \"properties\": {\n        \"date_time_render_option\": {\n          \"default\": \"FORMATTED_STRING\",\n          \"enum\": [\n            \"SERIAL_NUMBER\",\n            \"FORMATTED_STRING\"\n          ],\n          \"title\": \"Date Time Render Option\",\n          \"type\": \"string\"\n        },\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"ranges\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Ranges\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_render_option\": {\n          \"default\": \"FORMATTED_VALUE\",\n          \"enum\": [\n            \"FORMATTED_VALUE\",\n            \"UNFORMATTED_VALUE\",\n            \"FORMULA\"\n          ],\n          \"title\": \"Value Render Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"GoogleSheetsBatchReadArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsBatchWriteArguments\": {\n      \"description\": \"Arguments for batch updating values in multiple ranges\",\n      \"properties\": {\n        \"data\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/GoogleSheetsValueRange\"\n          },\n          \"title\": \"Data\",\n          \"type\": \"array\"\n        },\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"data\"\n      ],\n      \"title\": \"GoogleSheetsBatchWriteArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsBatchWriteArgumentsUpdate\": {\n      \"description\": \"Arguments for batch updating values in multiple ranges\",\n      \"properties\": {\n        \"data\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/GoogleSheetsValueRange\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Data\"\n        },\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"GoogleSheetsBatchWriteArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsClearArguments\": {\n      \"description\": \"Arguments for clearing values from a spreadsheet\",\n      \"properties\": {\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"range\"\n      ],\n      \"title\": \"GoogleSheetsClearArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsClearArgumentsUpdate\": {\n      \"description\": \"Arguments for clearing values from a spreadsheet\",\n      \"properties\": {\n        \"range\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Range\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        }\n      },\n      \"title\": \"GoogleSheetsClearArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsIntegrationDef-Input\": {\n      \"description\": \"Google Sheets integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsReadArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsWriteArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsAppendArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsClearArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchReadArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchWriteArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"read_values\",\n                \"write_values\",\n                \"append_values\",\n                \"clear_values\",\n                \"batch_read\",\n                \"batch_write\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"google_sheets\",\n          \"default\": \"google_sheets\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"GoogleSheetsIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsIntegrationDef-Output\": {\n      \"description\": \"Google Sheets integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsReadArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsWriteArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsAppendArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsClearArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchReadArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchWriteArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"read_values\",\n                \"write_values\",\n                \"append_values\",\n                \"clear_values\",\n                \"batch_read\",\n                \"batch_write\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"google_sheets\",\n          \"default\": \"google_sheets\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"GoogleSheetsIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsIntegrationDefUpdate\": {\n      \"description\": \"Google Sheets integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsReadArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsWriteArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsAppendArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsClearArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchReadArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchWriteArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"read_values\",\n                \"write_values\",\n                \"append_values\",\n                \"clear_values\",\n                \"batch_read\",\n                \"batch_write\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"google_sheets\",\n          \"default\": \"google_sheets\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"GoogleSheetsIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsReadArguments\": {\n      \"description\": \"Arguments for reading values from a spreadsheet\",\n      \"properties\": {\n        \"date_time_render_option\": {\n          \"default\": \"FORMATTED_STRING\",\n          \"enum\": [\n            \"SERIAL_NUMBER\",\n            \"FORMATTED_STRING\"\n          ],\n          \"title\": \"Date Time Render Option\",\n          \"type\": \"string\"\n        },\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_render_option\": {\n          \"default\": \"FORMATTED_VALUE\",\n          \"enum\": [\n            \"FORMATTED_VALUE\",\n            \"UNFORMATTED_VALUE\",\n            \"FORMULA\"\n          ],\n          \"title\": \"Value Render Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"range\"\n      ],\n      \"title\": \"GoogleSheetsReadArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsReadArgumentsUpdate\": {\n      \"description\": \"Arguments for reading values from a spreadsheet\",\n      \"properties\": {\n        \"date_time_render_option\": {\n          \"default\": \"FORMATTED_STRING\",\n          \"enum\": [\n            \"SERIAL_NUMBER\",\n            \"FORMATTED_STRING\"\n          ],\n          \"title\": \"Date Time Render Option\",\n          \"type\": \"string\"\n        },\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Range\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_render_option\": {\n          \"default\": \"FORMATTED_VALUE\",\n          \"enum\": [\n            \"FORMATTED_VALUE\",\n            \"UNFORMATTED_VALUE\",\n            \"FORMULA\"\n          ],\n          \"title\": \"Value Render Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"GoogleSheetsReadArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsSetup\": {\n      \"description\": \"Setup parameters for Google Sheets integration\",\n      \"properties\": {\n        \"default_retry_count\": {\n          \"default\": 3,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Default Retry Count\",\n          \"type\": \"integer\"\n        },\n        \"service_account_json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Service Account Json\"\n        },\n        \"use_julep_service\": {\n          \"title\": \"Use Julep Service\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"use_julep_service\"\n      ],\n      \"title\": \"GoogleSheetsSetup\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsSetupUpdate\": {\n      \"description\": \"Setup parameters for Google Sheets integration\",\n      \"properties\": {\n        \"default_retry_count\": {\n          \"default\": 3,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Default Retry Count\",\n          \"type\": \"integer\"\n        },\n        \"service_account_json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Service Account Json\"\n        },\n        \"use_julep_service\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Use Julep Service\"\n        }\n      },\n      \"title\": \"GoogleSheetsSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsValueRange\": {\n      \"description\": \"Represents a range of values to write\",\n      \"properties\": {\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"items\": {\n            \"items\": {},\n            \"type\": \"array\"\n          },\n          \"title\": \"Values\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"range\",\n        \"values\"\n      ],\n      \"title\": \"GoogleSheetsValueRange\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsWriteArguments\": {\n      \"description\": \"Arguments for writing values to a spreadsheet\",\n      \"properties\": {\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"insert_data_option\": {\n          \"default\": \"OVERWRITE\",\n          \"enum\": [\n            \"OVERWRITE\",\n            \"INSERT_ROWS\"\n          ],\n          \"title\": \"Insert Data Option\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"items\": {\n            \"items\": {},\n            \"type\": \"array\"\n          },\n          \"title\": \"Values\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"range\",\n        \"values\"\n      ],\n      \"title\": \"GoogleSheetsWriteArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsWriteArgumentsUpdate\": {\n      \"description\": \"Arguments for writing values to a spreadsheet\",\n      \"properties\": {\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"insert_data_option\": {\n          \"default\": \"OVERWRITE\",\n          \"enum\": [\n            \"OVERWRITE\",\n            \"INSERT_ROWS\"\n          ],\n          \"title\": \"Insert Data Option\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Range\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"items\": {},\n                \"type\": \"array\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Values\"\n        }\n      },\n      \"title\": \"GoogleSheetsWriteArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"HTTPValidationError\": {\n      \"properties\": {\n        \"detail\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ValidationError\"\n          },\n          \"title\": \"Detail\",\n          \"type\": \"array\"\n        }\n      },\n      \"title\": \"HTTPValidationError\",\n      \"type\": \"object\"\n    },\n    \"History\": {\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"entries\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Entry\"\n          },\n          \"title\": \"Entries\",\n          \"type\": \"array\"\n        },\n        \"relations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relation\"\n          },\n          \"title\": \"Relations\",\n          \"type\": \"array\"\n        },\n        \"session_id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Session Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"entries\",\n        \"relations\",\n        \"session_id\",\n        \"created_at\"\n      ],\n      \"title\": \"History\",\n      \"type\": \"object\"\n    },\n    \"HybridDocSearch\": {\n      \"properties\": {\n        \"alpha\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Alpha\",\n          \"type\": \"number\"\n        },\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"k_multiplier\": {\n          \"default\": 7,\n          \"minimum\": 0.0,\n          \"title\": \"K Multiplier\",\n          \"type\": \"integer\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"mode\": {\n          \"const\": \"hybrid\",\n          \"default\": \"hybrid\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"default\": 0.6,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Trigram Similarity Threshold\",\n          \"type\": \"number\"\n        }\n      },\n      \"title\": \"HybridDocSearch\",\n      \"type\": \"object\"\n    },\n    \"HybridDocSearchRequest\": {\n      \"properties\": {\n        \"alpha\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Alpha\",\n          \"type\": \"number\"\n        },\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"k_multiplier\": {\n          \"default\": 5,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"K Multiplier\",\n          \"type\": \"integer\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Trigram Similarity Threshold\"\n        },\n        \"vector\": {\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"title\": \"Vector\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"text\",\n        \"vector\"\n      ],\n      \"title\": \"HybridDocSearchRequest\",\n      \"type\": \"object\"\n    },\n    \"HybridDocSearchUpdate\": {\n      \"properties\": {\n        \"alpha\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Alpha\",\n          \"type\": \"number\"\n        },\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"k_multiplier\": {\n          \"default\": 7,\n          \"minimum\": 0.0,\n          \"title\": \"K Multiplier\",\n          \"type\": \"integer\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"mode\": {\n          \"const\": \"hybrid\",\n          \"default\": \"hybrid\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"default\": 0.6,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Trigram Similarity Threshold\",\n          \"type\": \"number\"\n        }\n      },\n      \"title\": \"HybridDocSearchUpdate\",\n      \"type\": \"object\"\n    },\n    \"IfElseWorkflowStep-Input\": {\n      \"properties\": {\n        \"else\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/IfElseWorkflowStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwitchStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/ForeachStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/ParallelStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/Else-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Else\"\n        },\n        \"if\": {\n          \"title\": \"If\",\n          \"type\": \"string\"\n        },\n        \"kind_\": {\n          \"const\": \"if_else\",\n          \"default\": \"if_else\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"then\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/IfElseWorkflowStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwitchStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/ForeachStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/ParallelStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/Then-Input\"\n            }\n          ],\n          \"title\": \"Then\"\n        }\n      },\n      \"required\": [\n        \"if\",\n        \"then\"\n      ],\n      \"title\": \"IfElseWorkflowStep\",\n      \"type\": \"object\"\n    },\n    \"IfElseWorkflowStep-Output\": {\n      \"properties\": {\n        \"else\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/IfElseWorkflowStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwitchStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/ForeachStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/ParallelStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/Else-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Else\"\n        },\n        \"if\": {\n          \"title\": \"If\",\n          \"type\": \"string\"\n        },\n        \"kind_\": {\n          \"const\": \"if_else\",\n          \"default\": \"if_else\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"then\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/IfElseWorkflowStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwitchStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/ForeachStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/ParallelStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/Then-Output\"\n            }\n          ],\n          \"title\": \"Then\"\n        }\n      },\n      \"required\": [\n        \"if\",\n        \"then\"\n      ],\n      \"title\": \"IfElseWorkflowStep\",\n      \"type\": \"object\"\n    },\n    \"ImageUrl\": {\n      \"description\": \"The image URL\",\n      \"properties\": {\n        \"detail\": {\n          \"default\": \"auto\",\n          \"enum\": [\n            \"low\",\n            \"high\",\n            \"auto\"\n          ],\n          \"title\": \"Detail\",\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"title\": \"Url\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"url\"\n      ],\n      \"title\": \"ImageUrl\",\n      \"type\": \"object\"\n    },\n    \"JobStatus\": {\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"has_progress\": {\n          \"default\": false,\n          \"title\": \"Has Progress\",\n          \"type\": \"boolean\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"progress\": {\n          \"default\": 0,\n          \"maximum\": 100.0,\n          \"minimum\": 0.0,\n          \"title\": \"Progress\",\n          \"type\": \"number\"\n        },\n        \"reason\": {\n          \"default\": \"\",\n          \"title\": \"Reason\",\n          \"type\": \"string\"\n        },\n        \"state\": {\n          \"default\": \"pending\",\n          \"enum\": [\n            \"pending\",\n            \"in_progress\",\n            \"retrying\",\n            \"succeeded\",\n            \"aborted\",\n            \"failed\",\n            \"unknown\"\n          ],\n          \"title\": \"State\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\"\n      ],\n      \"title\": \"JobStatus\",\n      \"type\": \"object\"\n    },\n    \"ListModelsResponse\": {\n      \"description\": \"Response for the list models endpoint\",\n      \"properties\": {\n        \"models\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ModelInfo\"\n          },\n          \"title\": \"Models\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"models\"\n      ],\n      \"title\": \"ListModelsResponse\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Agent_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Agent\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Agent]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Doc_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Doc\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Doc]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Execution_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Execution\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Execution]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Project_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Project\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Project]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_ResourceDeletedResponse_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ResourceDeletedResponse\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[ResourceDeletedResponse]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Session_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Session\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Session]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Task_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Task\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Task]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Tool_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Tool\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Tool]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Transition_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Transition\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Transition]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_User_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/User\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[User]\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseFetchArguments\": {\n      \"description\": \"Arguments for LlamaParse integration\",\n      \"properties\": {\n        \"base64\": {\n          \"default\": false,\n          \"title\": \"Base64\",\n          \"type\": \"boolean\"\n        },\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"File\"\n        },\n        \"filename\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Filename\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"required\": [\n        \"file\"\n      ],\n      \"title\": \"LlamaParseFetchArguments\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseFetchArgumentsUpdate\": {\n      \"description\": \"Arguments for LlamaParse integration\",\n      \"properties\": {\n        \"base64\": {\n          \"default\": false,\n          \"title\": \"Base64\",\n          \"type\": \"boolean\"\n        },\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        },\n        \"filename\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Filename\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"title\": \"LlamaParseFetchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseIntegrationDef\": {\n      \"description\": \"LlamaParse integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LlamaParseFetchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"llama_parse\",\n          \"default\": \"llama_parse\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LlamaParseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"LlamaParseIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseIntegrationDefUpdate\": {\n      \"description\": \"LlamaParse integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LlamaParseFetchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"llama_parse\",\n          \"default\": \"llama_parse\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LlamaParseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"LlamaParseIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseSetup\": {\n      \"description\": \"Setup parameters for LlamaParse integration\",\n      \"properties\": {\n        \"llamaparse_api_key\": {\n          \"title\": \"Llamaparse Api Key\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"required\": [\n        \"llamaparse_api_key\"\n      ],\n      \"title\": \"LlamaParseSetup\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseSetupUpdate\": {\n      \"description\": \"Setup parameters for LlamaParse integration\",\n      \"properties\": {\n        \"llamaparse_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Llamaparse Api Key\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"title\": \"LlamaParseSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"LogProbResponse\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/TokenLogProb\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        }\n      },\n      \"required\": [\n        \"content\"\n      ],\n      \"title\": \"LogProbResponse\",\n      \"type\": \"object\"\n    },\n    \"LogStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"log\",\n          \"default\": \"log\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"log\": {\n          \"title\": \"Log\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"log\"\n      ],\n      \"title\": \"LogStep\",\n      \"type\": \"object\"\n    },\n    \"LogitBias\": {\n      \"maximum\": 100.0,\n      \"minimum\": -100.0,\n      \"title\": \"LogitBias\",\n      \"type\": \"number\"\n    },\n    \"MailgunIntegrationDef\": {\n      \"description\": \"Mailgun integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/MailgunSendEmailArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"const\": \"send_email\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"mailgun\",\n          \"default\": \"mailgun\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/MailgunSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"MailgunIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"MailgunIntegrationDefUpdate\": {\n      \"description\": \"Mailgun integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/MailgunSendEmailArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"const\": \"send_email\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"mailgun\",\n          \"default\": \"mailgun\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/MailgunSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"MailgunIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"MailgunSendEmailArguments\": {\n      \"description\": \"Arguments for mailgun.send_email method\",\n      \"properties\": {\n        \"bcc\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Bcc\"\n        },\n        \"body\": {\n          \"title\": \"Body\",\n          \"type\": \"string\"\n        },\n        \"cc\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cc\"\n        },\n        \"from\": {\n          \"title\": \"From\",\n          \"type\": \"string\"\n        },\n        \"subject\": {\n          \"title\": \"Subject\",\n          \"type\": \"string\"\n        },\n        \"to\": {\n          \"title\": \"To\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"to\",\n        \"from\",\n        \"subject\",\n        \"body\"\n      ],\n      \"title\": \"MailgunSendEmailArguments\",\n      \"type\": \"object\"\n    },\n    \"MailgunSendEmailArgumentsUpdate\": {\n      \"description\": \"Arguments for mailgun.send_email method\",\n      \"properties\": {\n        \"bcc\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Bcc\"\n        },\n        \"body\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Body\"\n        },\n        \"cc\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cc\"\n        },\n        \"from\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"From\"\n        },\n        \"subject\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Subject\"\n        },\n        \"to\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"To\"\n        }\n      },\n      \"title\": \"MailgunSendEmailArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"MailgunSetup\": {\n      \"description\": \"Setup parameters for Mailgun integration\",\n      \"properties\": {\n        \"api_key\": {\n          \"title\": \"Api Key\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"api_key\"\n      ],\n      \"title\": \"MailgunSetup\",\n      \"type\": \"object\"\n    },\n    \"MailgunSetupUpdate\": {\n      \"description\": \"Setup parameters for Mailgun integration\",\n      \"properties\": {\n        \"api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Key\"\n        }\n      },\n      \"title\": \"MailgunSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"Main-Input\": {\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Main\",\n      \"type\": \"object\"\n    },\n    \"Main-Output\": {\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Main\",\n      \"type\": \"object\"\n    },\n    \"McpCallToolArguments\": {\n      \"description\": \"Arguments to call a named tool on the MCP server\",\n      \"properties\": {\n        \"arguments\": {\n          \"default\": {},\n          \"title\": \"Arguments\",\n          \"type\": \"object\"\n        },\n        \"timeout_seconds\": {\n          \"default\": 60,\n          \"title\": \"Timeout Seconds\",\n          \"type\": \"integer\"\n        },\n        \"tool_name\": {\n          \"title\": \"Tool Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_name\"\n      ],\n      \"title\": \"McpCallToolArguments\",\n      \"type\": \"object\"\n    },\n    \"McpCallToolArgumentsUpdate\": {\n      \"description\": \"Arguments to call a named tool on the MCP server\",\n      \"properties\": {\n        \"arguments\": {\n          \"default\": {},\n          \"title\": \"Arguments\",\n          \"type\": \"object\"\n        },\n        \"timeout_seconds\": {\n          \"default\": 60,\n          \"title\": \"Timeout Seconds\",\n          \"type\": \"integer\"\n        },\n        \"tool_name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Name\"\n        }\n      },\n      \"title\": \"McpCallToolArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"McpIntegrationDef\": {\n      \"description\": \"MCP integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/McpCallToolArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpListToolsArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"mcp\",\n          \"default\": \"mcp\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/McpSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"McpIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"McpIntegrationDefUpdate\": {\n      \"description\": \"MCP integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/McpCallToolArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpListToolsArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"mcp\",\n          \"default\": \"mcp\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/McpSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"McpIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"McpListToolsArguments\": {\n      \"description\": \"Arguments to list available tools\",\n      \"properties\": {\n        \"dummy\": {\n          \"default\": \"dummy\",\n          \"title\": \"Dummy\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"McpListToolsArguments\",\n      \"type\": \"object\"\n    },\n    \"McpListToolsArgumentsUpdate\": {\n      \"description\": \"Arguments to list available tools\",\n      \"properties\": {\n        \"dummy\": {\n          \"default\": \"dummy\",\n          \"title\": \"Dummy\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"McpListToolsArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"McpSetup\": {\n      \"description\": \"Setup parameters for MCP integration\",\n      \"properties\": {\n        \"args\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Args\",\n          \"type\": \"array\"\n        },\n        \"command\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Command\"\n        },\n        \"cwd\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cwd\"\n        },\n        \"env\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"default\": {},\n          \"title\": \"Env\",\n          \"type\": \"object\"\n        },\n        \"http_headers\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"default\": {},\n          \"title\": \"Http Headers\",\n          \"type\": \"object\"\n        },\n        \"http_url\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uri\",\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Http Url\"\n        },\n        \"transport\": {\n          \"enum\": [\n            \"sse\",\n            \"http\"\n          ],\n          \"title\": \"Transport\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"transport\"\n      ],\n      \"title\": \"McpSetup\",\n      \"type\": \"object\"\n    },\n    \"McpSetupUpdate\": {\n      \"description\": \"Setup parameters for MCP integration\",\n      \"properties\": {\n        \"args\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Args\",\n          \"type\": \"array\"\n        },\n        \"command\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Command\"\n        },\n        \"cwd\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cwd\"\n        },\n        \"env\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"default\": {},\n          \"title\": \"Env\",\n          \"type\": \"object\"\n        },\n        \"http_headers\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"default\": {},\n          \"title\": \"Http Headers\",\n          \"type\": \"object\"\n        },\n        \"http_url\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uri\",\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Http Url\"\n        },\n        \"transport\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"sse\",\n                \"http\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Transport\"\n        }\n      },\n      \"title\": \"McpSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"Message-Input\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__Content\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel7\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel-Input\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\"\n      ],\n      \"title\": \"Message\",\n      \"type\": \"object\"\n    },\n    \"Message-Output\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/Content-Output\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel7\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel-Output\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\"\n      ],\n      \"title\": \"Message\",\n      \"type\": \"object\"\n    },\n    \"MessageChatResponse\": {\n      \"properties\": {\n        \"choices\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/SingleChatOutput\"\n              },\n              {\n                \"$ref\": \"#/$defs/MultipleChatOutput\"\n              }\n            ]\n          },\n          \"title\": \"Choices\",\n          \"type\": \"array\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"docs\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/DocReference\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Docs\",\n          \"type\": \"array\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"jobs\": {\n          \"default\": [],\n          \"items\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Jobs\",\n          \"type\": \"array\"\n        },\n        \"usage\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CompletionUsage\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"required\": [\n        \"created_at\",\n        \"id\",\n        \"choices\"\n      ],\n      \"title\": \"MessageChatResponse\",\n      \"type\": \"object\"\n    },\n    \"MessageModel\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel3\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel7\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel4\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"created_at\": {\n          \"anyOf\": [\n            {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Created At\"\n        },\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Id\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\"\n      ],\n      \"title\": \"MessageModel\",\n      \"type\": \"object\"\n    },\n    \"MetadataFilter\": {\n      \"additionalProperties\": true,\n      \"properties\": {},\n      \"title\": \"MetadataFilter\",\n      \"type\": \"object\"\n    },\n    \"ModelInfo\": {\n      \"description\": \"Model information returned by the model list endpoint\",\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\"\n      ],\n      \"title\": \"ModelInfo\",\n      \"type\": \"object\"\n    },\n    \"MultipleChatOutput\": {\n      \"description\": \"The output returned by the model. Note that, depending on the model provider, they might return more than one message.\",\n      \"properties\": {\n        \"finish_reason\": {\n          \"default\": \"stop\",\n          \"enum\": [\n            \"stop\",\n            \"length\",\n            \"content_filter\",\n            \"tool_calls\"\n          ],\n          \"title\": \"Finish Reason\",\n          \"type\": \"string\"\n        },\n        \"index\": {\n          \"title\": \"Index\",\n          \"type\": \"integer\"\n        },\n        \"logprobs\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LogProbResponse\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"messages\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/MessageModel\"\n          },\n          \"minItems\": 1,\n          \"readOnly\": true,\n          \"title\": \"Messages\",\n          \"type\": \"array\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"index\",\n        \"messages\"\n      ],\n      \"title\": \"MultipleChatOutput\",\n      \"type\": \"object\"\n    },\n    \"MultipleEmbedQueryRequest\": {\n      \"properties\": {\n        \"embed_instruction\": {\n          \"default\": \"\",\n          \"title\": \"Embed Instruction\",\n          \"type\": \"string\"\n        },\n        \"text\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"maxItems\": 100,\n          \"minItems\": 1,\n          \"title\": \"Text\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"MultipleEmbedQueryRequest\",\n      \"type\": \"object\"\n    },\n    \"NamedToolChoice\": {\n      \"properties\": {\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionCallOption\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"NamedToolChoice\",\n      \"type\": \"object\"\n    },\n    \"ParallelStep-Input\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"parallel\",\n          \"default\": \"parallel\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"parallel\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/EvaluateStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ToolCallStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/PromptStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/GetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/LogStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/YieldStep\"\n              }\n            ]\n          },\n          \"maxItems\": 100,\n          \"title\": \"Parallel\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"parallel\"\n      ],\n      \"title\": \"ParallelStep\",\n      \"type\": \"object\"\n    },\n    \"ParallelStep-Output\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"parallel\",\n          \"default\": \"parallel\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"parallel\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/EvaluateStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ToolCallStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/PromptStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/GetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/LogStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/YieldStep\"\n              }\n            ]\n          },\n          \"maxItems\": 100,\n          \"title\": \"Parallel\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"parallel\"\n      ],\n      \"title\": \"ParallelStep\",\n      \"type\": \"object\"\n    },\n    \"ParameterSchema-Input\": {\n      \"description\": \"JSON Schema for API call parameters\",\n      \"properties\": {\n        \"additionalProperties\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Additionalproperties\"\n        },\n        \"properties\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/PropertyDefinition-Input\"\n          },\n          \"title\": \"Properties\",\n          \"type\": \"object\"\n        },\n        \"required\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Required\",\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"default\": \"object\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"properties\"\n      ],\n      \"title\": \"ParameterSchema\",\n      \"type\": \"object\"\n    },\n    \"ParameterSchema-Output\": {\n      \"description\": \"JSON Schema for API call parameters\",\n      \"properties\": {\n        \"additionalProperties\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Additionalproperties\"\n        },\n        \"properties\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/PropertyDefinition-Output\"\n          },\n          \"title\": \"Properties\",\n          \"type\": \"object\"\n        },\n        \"required\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Required\",\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"default\": \"object\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"properties\"\n      ],\n      \"title\": \"ParameterSchema\",\n      \"type\": \"object\"\n    },\n    \"ParameterSchemaUpdate\": {\n      \"description\": \"JSON Schema for API call parameters\",\n      \"properties\": {\n        \"additionalProperties\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Additionalproperties\"\n        },\n        \"properties\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/PropertyDefinitionUpdate\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Properties\"\n        },\n        \"required\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Required\",\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"default\": \"object\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"ParameterSchemaUpdate\",\n      \"type\": \"object\"\n    },\n    \"PatchAgentRequest\": {\n      \"description\": \"Payload for patching a agent\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"PatchAgentRequest\",\n      \"type\": \"object\"\n    },\n    \"PatchSessionRequest\": {\n      \"description\": \"Payload for patching a session\",\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearchUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearchUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearchUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        }\n      },\n      \"title\": \"PatchSessionRequest\",\n      \"type\": \"object\"\n    },\n    \"PatchToolRequest\": {\n      \"description\": \"Payload for patching a tool\",\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022DefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022DefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 40,\n              \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022DefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"function\",\n                \"integration\",\n                \"system\",\n                \"api_call\",\n                \"computer_20241022\",\n                \"text_editor_20241022\",\n                \"bash_20241022\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Type\"\n        }\n      },\n      \"title\": \"PatchToolRequest\",\n      \"type\": \"object\"\n    },\n    \"PatchUserRequest\": {\n      \"description\": \"Payload for patching a user\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"PatchUserRequest\",\n      \"type\": \"object\"\n    },\n    \"Project\": {\n      \"description\": \"Project model\",\n      \"properties\": {\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\",\n        \"name\"\n      ],\n      \"title\": \"Project\",\n      \"type\": \"object\"\n    },\n    \"PromptItem-Input\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tasks__Content\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tasks__ContentModel\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel1-Input\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\",\n        \"content\"\n      ],\n      \"title\": \"PromptItem\",\n      \"type\": \"object\"\n    },\n    \"PromptItem-Output\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/Content-Output\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tasks__ContentModel\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tasks__ContentModel1-Output\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\",\n        \"content\"\n      ],\n      \"title\": \"PromptItem\",\n      \"type\": \"object\"\n    },\n    \"PromptStep-Input\": {\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"disable_cache\": {\n          \"default\": false,\n          \"title\": \"Disable Cache\",\n          \"type\": \"boolean\"\n        },\n        \"kind_\": {\n          \"const\": \"prompt\",\n          \"default\": \"prompt\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"prompt\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/PromptItem-Input\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ],\n          \"title\": \"Prompt\"\n        },\n        \"settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Settings\"\n        },\n        \"tool_choice\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"auto\",\n                \"none\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedToolChoice\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Choice\"\n        },\n        \"tools\": {\n          \"anyOf\": [\n            {\n              \"const\": \"all\",\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ToolRef\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tools__CreateToolRequest-Input\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": \"all\",\n          \"title\": \"Tools\"\n        },\n        \"unwrap\": {\n          \"default\": false,\n          \"title\": \"Unwrap\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"prompt\"\n      ],\n      \"title\": \"PromptStep\",\n      \"type\": \"object\"\n    },\n    \"PromptStep-Output\": {\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"disable_cache\": {\n          \"default\": false,\n          \"title\": \"Disable Cache\",\n          \"type\": \"boolean\"\n        },\n        \"kind_\": {\n          \"const\": \"prompt\",\n          \"default\": \"prompt\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"prompt\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/PromptItem-Output\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ],\n          \"title\": \"Prompt\"\n        },\n        \"settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Settings\"\n        },\n        \"tool_choice\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"auto\",\n                \"none\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedToolChoice\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Choice\"\n        },\n        \"tools\": {\n          \"anyOf\": [\n            {\n              \"const\": \"all\",\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ToolRef\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/CreateToolRequest-Output\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": \"all\",\n          \"title\": \"Tools\"\n        },\n        \"unwrap\": {\n          \"default\": false,\n          \"title\": \"Unwrap\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"prompt\"\n      ],\n      \"title\": \"PromptStep\",\n      \"type\": \"object\"\n    },\n    \"PropertyDefinition-Input\": {\n      \"description\": \"Property definition for parameter schema\",\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"enum\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Enum\"\n        },\n        \"items\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/PropertyDefinition-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"title\": \"PropertyDefinition\",\n      \"type\": \"object\"\n    },\n    \"PropertyDefinition-Output\": {\n      \"description\": \"Property definition for parameter schema\",\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"enum\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Enum\"\n        },\n        \"items\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/PropertyDefinition-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"title\": \"PropertyDefinition\",\n      \"type\": \"object\"\n    },\n    \"PropertyDefinitionUpdate\": {\n      \"description\": \"Property definition for parameter schema\",\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"enum\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Enum\"\n        },\n        \"items\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/PropertyDefinitionUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Type\"\n        }\n      },\n      \"title\": \"PropertyDefinitionUpdate\",\n      \"type\": \"object\"\n    },\n    \"Relation\": {\n      \"properties\": {\n        \"head\": {\n          \"format\": \"uuid\",\n          \"title\": \"Head\",\n          \"type\": \"string\"\n        },\n        \"relation\": {\n          \"title\": \"Relation\",\n          \"type\": \"string\"\n        },\n        \"tail\": {\n          \"format\": \"uuid\",\n          \"title\": \"Tail\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"head\",\n        \"relation\",\n        \"tail\"\n      ],\n      \"title\": \"Relation\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserArguments\": {\n      \"description\": \"The arguments for the remote browser\",\n      \"properties\": {\n        \"action\": {\n          \"enum\": [\n            \"key\",\n            \"type\",\n            \"mouse_move\",\n            \"left_click\",\n            \"left_click_drag\",\n            \"right_click\",\n            \"middle_click\",\n            \"double_click\",\n            \"screenshot\",\n            \"cursor_position\",\n            \"navigate\",\n            \"refresh\"\n          ],\n          \"title\": \"Action\",\n          \"type\": \"string\"\n        },\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"coordinate\": {\n          \"anyOf\": [\n            {\n              \"items\": {},\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Coordinate\"\n        },\n        \"text\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Text\"\n        }\n      },\n      \"required\": [\n        \"action\"\n      ],\n      \"title\": \"RemoteBrowserArguments\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserArgumentsUpdate\": {\n      \"description\": \"The arguments for the remote browser\",\n      \"properties\": {\n        \"action\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"key\",\n                \"type\",\n                \"mouse_move\",\n                \"left_click\",\n                \"left_click_drag\",\n                \"right_click\",\n                \"middle_click\",\n                \"double_click\",\n                \"screenshot\",\n                \"cursor_position\",\n                \"navigate\",\n                \"refresh\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Action\"\n        },\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"coordinate\": {\n          \"anyOf\": [\n            {\n              \"items\": {},\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Coordinate\"\n        },\n        \"text\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Text\"\n        }\n      },\n      \"title\": \"RemoteBrowserArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserIntegrationDef\": {\n      \"description\": \"The integration definition for the remote browser\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"perform_action\",\n          \"default\": \"perform_action\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"remote_browser\",\n          \"default\": \"remote_browser\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"$ref\": \"#/$defs/RemoteBrowserSetup\"\n        }\n      },\n      \"required\": [\n        \"setup\"\n      ],\n      \"title\": \"RemoteBrowserIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserIntegrationDefUpdate\": {\n      \"description\": \"The integration definition for the remote browser\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"perform_action\",\n          \"default\": \"perform_action\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"remote_browser\",\n          \"default\": \"remote_browser\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"RemoteBrowserIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserSetup\": {\n      \"description\": \"The setup parameters for the remote browser\",\n      \"properties\": {\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"height\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Height\"\n        },\n        \"width\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Width\"\n        }\n      },\n      \"title\": \"RemoteBrowserSetup\",\n      \"type\": \"object\"\n    },\n    \"RenderResponse\": {\n      \"properties\": {\n        \"docs\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/DocReference\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Docs\",\n          \"type\": \"array\"\n        },\n        \"messages\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Message-Output\"\n          },\n          \"minItems\": 1,\n          \"title\": \"Messages\",\n          \"type\": \"array\"\n        },\n        \"tool_choice\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"auto\",\n                \"none\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedToolChoice\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Choice\"\n        },\n        \"tools\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/CreateToolRequest-Output\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tools\"\n        }\n      },\n      \"required\": [\n        \"messages\"\n      ],\n      \"title\": \"RenderResponse\",\n      \"type\": \"object\"\n    },\n    \"ResourceDeletedResponse\": {\n      \"properties\": {\n        \"deleted_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Deleted At\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"jobs\": {\n          \"default\": [],\n          \"items\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Jobs\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"deleted_at\"\n      ],\n      \"title\": \"ResourceDeletedResponse\",\n      \"type\": \"object\"\n    },\n    \"ResumeExecutionRequest\": {\n      \"properties\": {\n        \"input\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Input\"\n        },\n        \"status\": {\n          \"const\": \"running\",\n          \"default\": \"running\",\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"ResumeExecutionRequest\",\n      \"type\": \"object\"\n    },\n    \"ReturnStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"return\",\n          \"default\": \"return\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"return\": {\n          \"additionalProperties\": {\n            \"anyOf\": [\n              {\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"array\"\n              },\n              {\n                \"additionalProperties\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"object\"\n              },\n              {\n                \"items\": {\n                  \"additionalProperties\": {\n                    \"type\": \"string\"\n                  },\n                  \"type\": \"object\"\n                },\n                \"type\": \"array\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"title\": \"Return\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"return\"\n      ],\n      \"title\": \"ReturnStep\",\n      \"type\": \"object\"\n    },\n    \"SchemaCompletionResponseFormat\": {\n      \"properties\": {\n        \"json_schema\": {\n          \"title\": \"Json Schema\",\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"const\": \"json_schema\",\n          \"default\": \"json_schema\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"json_schema\"\n      ],\n      \"title\": \"SchemaCompletionResponseFormat\",\n      \"type\": \"object\"\n    },\n    \"Secret\": {\n      \"description\": \"A secret that can be used in tasks and sessions\",\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"title\": \"Value\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\",\n        \"name\",\n        \"value\"\n      ],\n      \"title\": \"Secret\",\n      \"type\": \"object\"\n    },\n    \"SecretRef\": {\n      \"properties\": {\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"SecretRef\",\n      \"type\": \"object\"\n    },\n    \"SecretRefUpdate\": {\n      \"properties\": {\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        }\n      },\n      \"title\": \"SecretRefUpdate\",\n      \"type\": \"object\"\n    },\n    \"Session\": {\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Kind\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearch\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"summary\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Summary\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\"\n      ],\n      \"title\": \"Session\",\n      \"type\": \"object\"\n    },\n    \"SetStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"set\",\n          \"default\": \"set\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"set\": {\n          \"additionalProperties\": {\n            \"anyOf\": [\n              {\n                \"type\": \"object\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"title\": \"Set\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"set\"\n      ],\n      \"title\": \"SetStep\",\n      \"type\": \"object\"\n    },\n    \"SimpleCompletionResponseFormat\": {\n      \"properties\": {\n        \"type\": {\n          \"default\": \"text\",\n          \"enum\": [\n            \"text\",\n            \"json_object\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"SimpleCompletionResponseFormat\",\n      \"type\": \"object\"\n    },\n    \"SingleChatOutput\": {\n      \"description\": \"The output returned by the model. Note that, depending on the model provider, they might return more than one message.\",\n      \"properties\": {\n        \"finish_reason\": {\n          \"default\": \"stop\",\n          \"enum\": [\n            \"stop\",\n            \"length\",\n            \"content_filter\",\n            \"tool_calls\"\n          ],\n          \"title\": \"Finish Reason\",\n          \"type\": \"string\"\n        },\n        \"index\": {\n          \"title\": \"Index\",\n          \"type\": \"integer\"\n        },\n        \"logprobs\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LogProbResponse\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"message\": {\n          \"$ref\": \"#/$defs/MessageModel\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"index\",\n        \"message\"\n      ],\n      \"title\": \"SingleChatOutput\",\n      \"type\": \"object\"\n    },\n    \"SingleEmbedQueryRequest\": {\n      \"properties\": {\n        \"embed_instruction\": {\n          \"default\": \"\",\n          \"title\": \"Embed Instruction\",\n          \"type\": \"string\"\n        },\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"SingleEmbedQueryRequest\",\n      \"type\": \"object\"\n    },\n    \"SleepFor\": {\n      \"properties\": {\n        \"days\": {\n          \"default\": 0,\n          \"maximum\": 30.0,\n          \"minimum\": 0.0,\n          \"title\": \"Days\",\n          \"type\": \"integer\"\n        },\n        \"hours\": {\n          \"default\": 0,\n          \"maximum\": 24.0,\n          \"minimum\": 0.0,\n          \"title\": \"Hours\",\n          \"type\": \"integer\"\n        },\n        \"minutes\": {\n          \"default\": 0,\n          \"maximum\": 60.0,\n          \"minimum\": 0.0,\n          \"title\": \"Minutes\",\n          \"type\": \"integer\"\n        },\n        \"seconds\": {\n          \"default\": 0,\n          \"maximum\": 60.0,\n          \"minimum\": 0.0,\n          \"title\": \"Seconds\",\n          \"type\": \"integer\"\n        }\n      },\n      \"title\": \"SleepFor\",\n      \"type\": \"object\"\n    },\n    \"SleepStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"sleep\",\n          \"default\": \"sleep\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"sleep\": {\n          \"$ref\": \"#/$defs/SleepFor\"\n        }\n      },\n      \"required\": [\n        \"sleep\"\n      ],\n      \"title\": \"SleepStep\",\n      \"type\": \"object\"\n    },\n    \"Snippet\": {\n      \"properties\": {\n        \"content\": {\n          \"title\": \"Content\",\n          \"type\": \"string\"\n        },\n        \"embedding\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"number\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Embedding\"\n        },\n        \"index\": {\n          \"title\": \"Index\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"index\",\n        \"content\"\n      ],\n      \"title\": \"Snippet\",\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"data\": {\n          \"title\": \"Data\",\n          \"type\": \"string\"\n        },\n        \"media_type\": {\n          \"title\": \"Media Type\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"base64\",\n          \"default\": \"base64\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"media_type\",\n        \"data\"\n      ],\n      \"title\": \"Source\",\n      \"type\": \"object\"\n    },\n    \"SpiderFetchArguments\": {\n      \"description\": \"Arguments for Spider integration\",\n      \"properties\": {\n        \"content_type\": {\n          \"default\": \"application/json\",\n          \"enum\": [\n            \"application/json\",\n            \"text/csv\",\n            \"application/xml\",\n            \"application/jsonl\"\n          ],\n          \"title\": \"Content Type\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"url\": {\n          \"format\": \"uri\",\n          \"minLength\": 1,\n          \"title\": \"Url\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"url\"\n      ],\n      \"title\": \"SpiderFetchArguments\",\n      \"type\": \"object\"\n    },\n    \"SpiderFetchArgumentsUpdate\": {\n      \"description\": \"Arguments for Spider integration\",\n      \"properties\": {\n        \"content_type\": {\n          \"default\": \"application/json\",\n          \"enum\": [\n            \"application/json\",\n            \"text/csv\",\n            \"application/xml\",\n            \"application/jsonl\"\n          ],\n          \"title\": \"Content Type\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"url\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uri\",\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Url\"\n        }\n      },\n      \"title\": \"SpiderFetchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"SpiderIntegrationDef\": {\n      \"description\": \"Spider integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SpiderFetchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"crawl\",\n                \"links\",\n                \"screenshot\",\n                \"search\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"spider\",\n          \"default\": \"spider\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SpiderSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"SpiderIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"SpiderIntegrationDefUpdate\": {\n      \"description\": \"Spider integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SpiderFetchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"crawl\",\n                \"links\",\n                \"screenshot\",\n                \"search\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"spider\",\n          \"default\": \"spider\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SpiderSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"SpiderIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"SpiderSetup\": {\n      \"description\": \"Setup parameters for Spider integration\",\n      \"properties\": {\n        \"spider_api_key\": {\n          \"title\": \"Spider Api Key\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spider_api_key\"\n      ],\n      \"title\": \"SpiderSetup\",\n      \"type\": \"object\"\n    },\n    \"SpiderSetupUpdate\": {\n      \"description\": \"Setup parameters for Spider integration\",\n      \"properties\": {\n        \"spider_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spider Api Key\"\n        }\n      },\n      \"title\": \"SpiderSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"StopExecutionRequest\": {\n      \"properties\": {\n        \"reason\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reason\"\n        },\n        \"status\": {\n          \"const\": \"cancelled\",\n          \"default\": \"cancelled\",\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"StopExecutionRequest\",\n      \"type\": \"object\"\n    },\n    \"SwitchStep-Input\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"switch\",\n          \"default\": \"switch\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"switch\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CaseThen-Input\"\n          },\n          \"minItems\": 1,\n          \"title\": \"Switch\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"switch\"\n      ],\n      \"title\": \"SwitchStep\",\n      \"type\": \"object\"\n    },\n    \"SwitchStep-Output\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"switch\",\n          \"default\": \"switch\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"switch\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CaseThen-Output\"\n          },\n          \"minItems\": 1,\n          \"title\": \"Switch\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"switch\"\n      ],\n      \"title\": \"SwitchStep\",\n      \"type\": \"object\"\n    },\n    \"SystemDef\": {\n      \"description\": \"System definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"operation\": {\n          \"enum\": [\n            \"create\",\n            \"update\",\n            \"patch\",\n            \"create_or_update\",\n            \"embed\",\n            \"change_status\",\n            \"search\",\n            \"chat\",\n            \"history\",\n            \"delete\",\n            \"get\",\n            \"list\"\n          ],\n          \"title\": \"Operation\",\n          \"type\": \"string\"\n        },\n        \"resource\": {\n          \"enum\": [\n            \"agent\",\n            \"user\",\n            \"task\",\n            \"execution\",\n            \"doc\",\n            \"session\",\n            \"job\"\n          ],\n          \"title\": \"Resource\",\n          \"type\": \"string\"\n        },\n        \"resource_id\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Resource Id\"\n        },\n        \"subresource\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"tool\",\n                \"doc\",\n                \"execution\",\n                \"transition\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Subresource\"\n        }\n      },\n      \"required\": [\n        \"resource\",\n        \"operation\"\n      ],\n      \"title\": \"SystemDef\",\n      \"type\": \"object\"\n    },\n    \"SystemDefUpdate\": {\n      \"description\": \"System definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"operation\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"create\",\n                \"update\",\n                \"patch\",\n                \"create_or_update\",\n                \"embed\",\n                \"change_status\",\n                \"search\",\n                \"chat\",\n                \"history\",\n                \"delete\",\n                \"get\",\n                \"list\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Operation\"\n        },\n        \"resource\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"agent\",\n                \"user\",\n                \"task\",\n                \"execution\",\n                \"doc\",\n                \"session\",\n                \"job\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Resource\"\n        },\n        \"resource_id\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Resource Id\"\n        },\n        \"subresource\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"tool\",\n                \"doc\",\n                \"execution\",\n                \"transition\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Subresource\"\n        }\n      },\n      \"title\": \"SystemDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"Task\": {\n      \"additionalProperties\": true,\n      \"properties\": {\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"default\": \"\",\n          \"title\": \"Description\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"inherit_tools\": {\n          \"default\": false,\n          \"title\": \"Inherit Tools\",\n          \"type\": \"boolean\"\n        },\n        \"input_schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Input Schema\"\n        },\n        \"main\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/EvaluateStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ToolCallStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/PromptStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/GetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/LogStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/YieldStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ReturnStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SleepStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/WaitForInputStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/IfElseWorkflowStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/SwitchStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/ForeachStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/ParallelStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/Main-Output\"\n              }\n            ]\n          },\n          \"minItems\": 1,\n          \"title\": \"Main\",\n          \"type\": \"array\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"tools\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/TaskTool-Output\"\n          },\n          \"title\": \"Tools\",\n          \"type\": \"array\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"main\",\n        \"id\",\n        \"created_at\",\n        \"updated_at\"\n      ],\n      \"title\": \"Task\",\n      \"type\": \"object\"\n    },\n    \"TaskTool-Input\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"inherited\": {\n          \"default\": false,\n          \"readOnly\": true,\n          \"title\": \"Inherited\",\n          \"type\": \"boolean\"\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"TaskTool\",\n      \"type\": \"object\"\n    },\n    \"TaskTool-Output\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"inherited\": {\n          \"default\": false,\n          \"readOnly\": true,\n          \"title\": \"Inherited\",\n          \"type\": \"boolean\"\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"TaskTool\",\n      \"type\": \"object\"\n    },\n    \"TextEditor20241022Def\": {\n      \"properties\": {\n        \"name\": {\n          \"default\": \"str_replace_editor\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text_editor_20241022\",\n          \"default\": \"text_editor_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"TextEditor20241022Def\",\n      \"type\": \"object\"\n    },\n    \"TextEditor20241022DefUpdate\": {\n      \"properties\": {\n        \"name\": {\n          \"default\": \"str_replace_editor\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text_editor_20241022\",\n          \"default\": \"text_editor_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"TextEditor20241022DefUpdate\",\n      \"type\": \"object\"\n    },\n    \"TextOnlyDocSearch\": {\n      \"properties\": {\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mode\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"default\": 0.6,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Trigram Similarity Threshold\",\n          \"type\": \"number\"\n        }\n      },\n      \"title\": \"TextOnlyDocSearch\",\n      \"type\": \"object\"\n    },\n    \"TextOnlyDocSearchRequest\": {\n      \"properties\": {\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Trigram Similarity Threshold\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"TextOnlyDocSearchRequest\",\n      \"type\": \"object\"\n    },\n    \"TextOnlyDocSearchUpdate\": {\n      \"properties\": {\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mode\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"default\": 0.6,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Trigram Similarity Threshold\",\n          \"type\": \"number\"\n        }\n      },\n      \"title\": \"TextOnlyDocSearchUpdate\",\n      \"type\": \"object\"\n    },\n    \"Then-Input\": {\n      \"description\": \"The steps to run if the condition is true\",\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Then\",\n      \"type\": \"object\"\n    },\n    \"Then-Output\": {\n      \"description\": \"The steps to run if the condition is true\",\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Then\",\n      \"type\": \"object\"\n    },\n    \"TokenLogProb\": {\n      \"properties\": {\n        \"bytes\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"integer\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Bytes\"\n        },\n        \"logprob\": {\n          \"title\": \"Logprob\",\n          \"type\": \"number\"\n        },\n        \"token\": {\n          \"title\": \"Token\",\n          \"type\": \"string\"\n        },\n        \"top_logprobs\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/BaseTokenLogProb\"\n          },\n          \"minItems\": 1,\n          \"readOnly\": true,\n          \"title\": \"Top Logprobs\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"token\",\n        \"logprob\",\n        \"top_logprobs\"\n      ],\n      \"title\": \"TokenLogProb\",\n      \"type\": \"object\"\n    },\n    \"Tool\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\",\n        \"created_at\",\n        \"updated_at\",\n        \"id\"\n      ],\n      \"title\": \"Tool\",\n      \"type\": \"object\"\n    },\n    \"ToolCallStep\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"const\": \"_\",\n              \"type\": \"string\"\n            }\n          ],\n          \"default\": \"_\",\n          \"title\": \"Arguments\"\n        },\n        \"kind_\": {\n          \"const\": \"tool_call\",\n          \"default\": \"tool_call\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"tool\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Tool\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool\"\n      ],\n      \"title\": \"ToolCallStep\",\n      \"type\": \"object\"\n    },\n    \"ToolRef\": {\n      \"description\": \"Reference to a tool\",\n      \"properties\": {\n        \"ref\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ToolRefById\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolRefByName\"\n            }\n          ],\n          \"title\": \"Ref\"\n        }\n      },\n      \"required\": [\n        \"ref\"\n      ],\n      \"title\": \"ToolRef\",\n      \"type\": \"object\"\n    },\n    \"ToolRefById\": {\n      \"description\": \"Reference to a tool by id\",\n      \"properties\": {\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id\"\n        }\n      },\n      \"title\": \"ToolRefById\",\n      \"type\": \"object\"\n    },\n    \"ToolRefByName\": {\n      \"description\": \"Reference to a tool by name\",\n      \"properties\": {\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 40,\n              \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        }\n      },\n      \"title\": \"ToolRefByName\",\n      \"type\": \"object\"\n    },\n    \"ToolResponse\": {\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"title\": \"Output\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"output\"\n      ],\n      \"title\": \"ToolResponse\",\n      \"type\": \"object\"\n    },\n    \"Transition\": {\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"current\": {\n          \"$ref\": \"#/$defs/TransitionTarget\",\n          \"readOnly\": true\n        },\n        \"execution_id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Execution Id\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"next\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TransitionTarget\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true\n        },\n        \"output\": {\n          \"readOnly\": true,\n          \"title\": \"Output\"\n        },\n        \"step_label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Step Label\"\n        },\n        \"type\": {\n          \"enum\": [\n            \"init\",\n            \"init_branch\",\n            \"finish\",\n            \"finish_branch\",\n            \"wait\",\n            \"resume\",\n            \"error\",\n            \"step\",\n            \"cancelled\"\n          ],\n          \"readOnly\": true,\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"output\",\n        \"created_at\",\n        \"updated_at\",\n        \"execution_id\",\n        \"current\",\n        \"next\",\n        \"id\"\n      ],\n      \"title\": \"Transition\",\n      \"type\": \"object\"\n    },\n    \"TransitionTarget\": {\n      \"properties\": {\n        \"scope_id\": {\n          \"format\": \"uuid\",\n          \"title\": \"Scope Id\",\n          \"type\": \"string\"\n        },\n        \"step\": {\n          \"title\": \"Step\",\n          \"type\": \"integer\"\n        },\n        \"workflow\": {\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Workflow\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"workflow\",\n        \"step\",\n        \"scope_id\"\n      ],\n      \"title\": \"TransitionTarget\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredIntegrationDef\": {\n      \"description\": \"Unstructured integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/UnstructuredPartitionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"unstructured\",\n          \"default\": \"unstructured\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/UnstructuredSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"UnstructuredIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredIntegrationDefUpdate\": {\n      \"description\": \"Unstructured integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/UnstructuredPartitionArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"unstructured\",\n          \"default\": \"unstructured\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/UnstructuredSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"UnstructuredIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredPartitionArguments\": {\n      \"description\": \"Arguments for Unstructured partition integration\",\n      \"properties\": {\n        \"file\": {\n          \"title\": \"File\",\n          \"type\": \"string\"\n        },\n        \"filename\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Filename\"\n        },\n        \"partition_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Partition Params\"\n        }\n      },\n      \"required\": [\n        \"file\"\n      ],\n      \"title\": \"UnstructuredPartitionArguments\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredPartitionArgumentsUpdate\": {\n      \"description\": \"Arguments for Unstructured partition integration\",\n      \"properties\": {\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        },\n        \"filename\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Filename\"\n        },\n        \"partition_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Partition Params\"\n        }\n      },\n      \"title\": \"UnstructuredPartitionArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredSetup\": {\n      \"description\": \"Setup parameters for Unstructured integration\",\n      \"properties\": {\n        \"retry_config\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Retry Config\"\n        },\n        \"server\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Server\"\n        },\n        \"server_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Server Url\"\n        },\n        \"timeout_ms\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout Ms\"\n        },\n        \"unstructured_api_key\": {\n          \"title\": \"Unstructured Api Key\",\n          \"type\": \"string\"\n        },\n        \"url_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Url Params\"\n        }\n      },\n      \"required\": [\n        \"unstructured_api_key\"\n      ],\n      \"title\": \"UnstructuredSetup\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredSetupUpdate\": {\n      \"description\": \"Setup parameters for Unstructured integration\",\n      \"properties\": {\n        \"retry_config\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Retry Config\"\n        },\n        \"server\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Server\"\n        },\n        \"server_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Server Url\"\n        },\n        \"timeout_ms\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout Ms\"\n        },\n        \"unstructured_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Unstructured Api Key\"\n        },\n        \"url_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Url Params\"\n        }\n      },\n      \"title\": \"UnstructuredSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"UpdateAgentRequest\": {\n      \"description\": \"Payload for updating a agent\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"UpdateAgentRequest\",\n      \"type\": \"object\"\n    },\n    \"UpdateSecretRequest\": {\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"title\": \"Value\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"value\"\n      ],\n      \"title\": \"UpdateSecretRequest\",\n      \"type\": \"object\"\n    },\n    \"UpdateSessionRequest\": {\n      \"description\": \"Payload for updating a session\",\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearch\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        }\n      },\n      \"title\": \"UpdateSessionRequest\",\n      \"type\": \"object\"\n    },\n    \"UpdateToolRequest\": {\n      \"description\": \"Payload for updating a tool\",\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"UpdateToolRequest\",\n      \"type\": \"object\"\n    },\n    \"UpdateUserRequest\": {\n      \"description\": \"Payload for updating a user\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"UpdateUserRequest\",\n      \"type\": \"object\"\n    },\n    \"User\": {\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\"\n      ],\n      \"title\": \"User\",\n      \"type\": \"object\"\n    },\n    \"ValidationError\": {\n      \"properties\": {\n        \"loc\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"type\": \"string\"\n              },\n              {\n                \"type\": \"integer\"\n              }\n            ]\n          },\n          \"title\": \"Location\",\n          \"type\": \"array\"\n        },\n        \"msg\": {\n          \"title\": \"Message\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"title\": \"Error Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"loc\",\n        \"msg\",\n        \"type\"\n      ],\n      \"title\": \"ValidationError\",\n      \"type\": \"object\"\n    },\n    \"VectorDocSearch\": {\n      \"properties\": {\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"mode\": {\n          \"const\": \"vector\",\n          \"default\": \"vector\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        }\n      },\n      \"title\": \"VectorDocSearch\",\n      \"type\": \"object\"\n    },\n    \"VectorDocSearchRequest\": {\n      \"properties\": {\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"vector\": {\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"title\": \"Vector\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"vector\"\n      ],\n      \"title\": \"VectorDocSearchRequest\",\n      \"type\": \"object\"\n    },\n    \"VectorDocSearchUpdate\": {\n      \"properties\": {\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"mode\": {\n          \"const\": \"vector\",\n          \"default\": \"vector\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        }\n      },\n      \"title\": \"VectorDocSearchUpdate\",\n      \"type\": \"object\"\n    },\n    \"WaitForInputInfo\": {\n      \"properties\": {\n        \"info\": {\n          \"additionalProperties\": {\n            \"anyOf\": [\n              {\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"array\"\n              },\n              {\n                \"additionalProperties\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"object\"\n              },\n              {\n                \"items\": {\n                  \"additionalProperties\": {\n                    \"type\": \"string\"\n                  },\n                  \"type\": \"object\"\n                },\n                \"type\": \"array\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"title\": \"Info\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"info\"\n      ],\n      \"title\": \"WaitForInputInfo\",\n      \"type\": \"object\"\n    },\n    \"WaitForInputStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"wait_for_input\",\n          \"default\": \"wait_for_input\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"wait_for_input\": {\n          \"$ref\": \"#/$defs/WaitForInputInfo\"\n        }\n      },\n      \"required\": [\n        \"wait_for_input\"\n      ],\n      \"title\": \"WaitForInputStep\",\n      \"type\": \"object\"\n    },\n    \"WeatherGetArguments\": {\n      \"description\": \"Arguments for Weather\",\n      \"properties\": {\n        \"location\": {\n          \"title\": \"Location\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"location\"\n      ],\n      \"title\": \"WeatherGetArguments\",\n      \"type\": \"object\"\n    },\n    \"WeatherGetArgumentsUpdate\": {\n      \"description\": \"Arguments for Weather\",\n      \"properties\": {\n        \"location\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Location\"\n        }\n      },\n      \"title\": \"WeatherGetArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"WeatherIntegrationDef\": {\n      \"description\": \"Weather integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WeatherGetArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"weather\",\n          \"default\": \"weather\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WeatherSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"WeatherIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"WeatherIntegrationDefUpdate\": {\n      \"description\": \"Weather integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WeatherGetArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"weather\",\n          \"default\": \"weather\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WeatherSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"WeatherIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"WeatherSetup\": {\n      \"description\": \"Integration definition for Weather\",\n      \"properties\": {\n        \"openweathermap_api_key\": {\n          \"title\": \"Openweathermap Api Key\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"openweathermap_api_key\"\n      ],\n      \"title\": \"WeatherSetup\",\n      \"type\": \"object\"\n    },\n    \"WeatherSetupUpdate\": {\n      \"description\": \"Integration definition for Weather\",\n      \"properties\": {\n        \"openweathermap_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Openweathermap Api Key\"\n        }\n      },\n      \"title\": \"WeatherSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"WikipediaIntegrationDef\": {\n      \"description\": \"Wikipedia integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WikipediaSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"wikipedia\",\n          \"default\": \"wikipedia\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"WikipediaIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"WikipediaIntegrationDefUpdate\": {\n      \"description\": \"Wikipedia integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WikipediaSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"wikipedia\",\n          \"default\": \"wikipedia\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"WikipediaIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"WikipediaSearchArguments\": {\n      \"description\": \"Arguments for Wikipedia Search\",\n      \"properties\": {\n        \"load_max_docs\": {\n          \"default\": 2,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Load Max Docs\",\n          \"type\": \"integer\"\n        },\n        \"query\": {\n          \"title\": \"Query\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"query\"\n      ],\n      \"title\": \"WikipediaSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"WikipediaSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Wikipedia Search\",\n      \"properties\": {\n        \"load_max_docs\": {\n          \"default\": 2,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Load Max Docs\",\n          \"type\": \"integer\"\n        },\n        \"query\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Query\"\n        }\n      },\n      \"title\": \"WikipediaSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"YieldStep\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"anyOf\": [\n                  {\n                    \"items\": {\n                      \"type\": \"string\"\n                    },\n                    \"type\": \"array\"\n                  },\n                  {\n                    \"additionalProperties\": {\n                      \"type\": \"string\"\n                    },\n                    \"type\": \"object\"\n                  },\n                  {\n                    \"items\": {\n                      \"additionalProperties\": {\n                        \"type\": \"string\"\n                      },\n                      \"type\": \"object\"\n                    },\n                    \"type\": \"array\"\n                  },\n                  {\n                    \"type\": \"string\"\n                  }\n                ]\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"const\": \"_\",\n              \"type\": \"string\"\n            }\n          ],\n          \"default\": \"_\",\n          \"title\": \"Arguments\"\n        },\n        \"kind_\": {\n          \"const\": \"yield\",\n          \"default\": \"yield\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"workflow\": {\n          \"title\": \"Workflow\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"workflow\"\n      ],\n      \"title\": \"YieldStep\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__Content\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"Content\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel-Input\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel-Output\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel1\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentModel1\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel2\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel1\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel2\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel2\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel3\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentModel3\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Common__Content\": {\n      \"maxLength\": 30000,\n      \"title\": \"Content\",\n      \"type\": \"string\"\n    },\n    \"agents_api__autogen__Entries__ContentModel\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Entries__ContentModel1\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentModel1\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Entries__ContentModel2\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel1\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel2\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel2\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Entries__ContentModel3\": {\n      \"properties\": {\n        \"image_url\": {\n          \"$ref\": \"#/$defs/ImageUrl\"\n        },\n        \"type\": {\n          \"const\": \"image_url\",\n          \"default\": \"image_url\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"image_url\"\n      ],\n      \"title\": \"ContentModel3\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Tasks__Content\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"Content\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Tasks__ContentModel\": {\n      \"properties\": {\n        \"image_url\": {\n          \"$ref\": \"#/$defs/ImageUrl\"\n        },\n        \"type\": {\n          \"const\": \"image_url\",\n          \"default\": \"image_url\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"image_url\"\n      ],\n      \"title\": \"ContentModel\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Tasks__ContentModel1-Output\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel1\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Tools__CreateToolRequest-Input\": {\n      \"description\": \"Payload for creating a tool\",\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"CreateToolRequest\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__openapi_model__CreateToolRequest\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"CreateToolRequest\",\n      \"type\": \"object\"\n    }\n  },\n  \"description\": \"Payload for creating a agent (and associated documents)\",\n  \"properties\": {\n    \"about\": {\n      \"default\": \"\",\n      \"title\": \"About\",\n      \"type\": \"string\"\n    },\n    \"canonical_name\": {\n      \"anyOf\": [\n        {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"null\"\n        }\n      ],\n      \"title\": \"Canonical Name\"\n    },\n    \"default_settings\": {\n      \"anyOf\": [\n        {\n          \"type\": \"object\"\n        },\n        {\n          \"type\": \"null\"\n        }\n      ],\n      \"title\": \"Default Settings\"\n    },\n    \"default_system_template\": {\n      \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n      \"title\": \"Default System Template\",\n      \"type\": \"string\"\n    },\n    \"instructions\": {\n      \"anyOf\": [\n        {\n          \"type\": \"string\"\n        },\n        {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"type\": \"array\"\n        }\n      ],\n      \"default\": [],\n      \"title\": \"Instructions\"\n    },\n    \"metadata\": {\n      \"anyOf\": [\n        {\n          \"type\": \"object\"\n        },\n        {\n          \"type\": \"null\"\n        }\n      ],\n      \"title\": \"Metadata\"\n    },\n    \"model\": {\n      \"default\": \"\",\n      \"title\": \"Model\",\n      \"type\": \"string\"\n    },\n    \"name\": {\n      \"maxLength\": 255,\n      \"minLength\": 1,\n      \"title\": \"Name\",\n      \"type\": \"string\"\n    },\n    \"project\": {\n      \"anyOf\": [\n        {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"null\"\n        }\n      ],\n      \"title\": \"Project\"\n    }\n  },\n  \"required\": [\n    \"name\"\n  ],\n  \"title\": \"CreateAgentRequest\",\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "src/schemas/create_task_request.json",
    "content": "{\n  \"$defs\": {\n    \"Agent\": {\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\",\n        \"name\"\n      ],\n      \"title\": \"Agent\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaIntegrationDef\": {\n      \"description\": \"Algolia integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/AlgoliaSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"algolia\",\n          \"default\": \"algolia\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/AlgoliaSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"AlgoliaIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaIntegrationDefUpdate\": {\n      \"description\": \"Algolia integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/AlgoliaSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"algolia\",\n          \"default\": \"algolia\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/AlgoliaSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"AlgoliaIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaSearchArguments\": {\n      \"description\": \"Arguments for Algolia Search\",\n      \"properties\": {\n        \"attributes_to_retrieve\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Attributes To Retrieve\"\n        },\n        \"hits_per_page\": {\n          \"default\": 10,\n          \"maximum\": 1000.0,\n          \"minimum\": 1.0,\n          \"title\": \"Hits Per Page\",\n          \"type\": \"integer\"\n        },\n        \"index_name\": {\n          \"title\": \"Index Name\",\n          \"type\": \"string\"\n        },\n        \"query\": {\n          \"title\": \"Query\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"index_name\",\n        \"query\"\n      ],\n      \"title\": \"AlgoliaSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Algolia Search\",\n      \"properties\": {\n        \"attributes_to_retrieve\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Attributes To Retrieve\"\n        },\n        \"hits_per_page\": {\n          \"default\": 10,\n          \"maximum\": 1000.0,\n          \"minimum\": 1.0,\n          \"title\": \"Hits Per Page\",\n          \"type\": \"integer\"\n        },\n        \"index_name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Index Name\"\n        },\n        \"query\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Query\"\n        }\n      },\n      \"title\": \"AlgoliaSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaSetup\": {\n      \"description\": \"Integration definition for Algolia\",\n      \"properties\": {\n        \"algolia_api_key\": {\n          \"title\": \"Algolia Api Key\",\n          \"type\": \"string\"\n        },\n        \"algolia_application_id\": {\n          \"title\": \"Algolia Application Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"algolia_application_id\",\n        \"algolia_api_key\"\n      ],\n      \"title\": \"AlgoliaSetup\",\n      \"type\": \"object\"\n    },\n    \"AlgoliaSetupUpdate\": {\n      \"description\": \"Integration definition for Algolia\",\n      \"properties\": {\n        \"algolia_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Algolia Api Key\"\n        },\n        \"algolia_application_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Algolia Application Id\"\n        }\n      },\n      \"title\": \"AlgoliaSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"ApiCallDef-Input\": {\n      \"description\": \"API call definition\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"cookies\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cookies\"\n        },\n        \"data\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Data\"\n        },\n        \"files\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Files\"\n        },\n        \"follow_redirects\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Follow Redirects\"\n        },\n        \"headers\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Headers\"\n        },\n        \"include_response_content\": {\n          \"default\": true,\n          \"title\": \"Include Response Content\",\n          \"type\": \"boolean\"\n        },\n        \"json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Json\"\n        },\n        \"method\": {\n          \"enum\": [\n            \"GET\",\n            \"POST\",\n            \"PUT\",\n            \"DELETE\",\n            \"PATCH\",\n            \"HEAD\",\n            \"OPTIONS\",\n            \"CONNECT\",\n            \"TRACE\"\n          ],\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"params_schema\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ParameterSchema-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Schema\"\n        },\n        \"secrets\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/SecretRef\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Secrets\"\n        },\n        \"timeout\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout\"\n        },\n        \"url\": {\n          \"format\": \"uri\",\n          \"minLength\": 1,\n          \"title\": \"Url\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"method\",\n        \"url\"\n      ],\n      \"title\": \"ApiCallDef\",\n      \"type\": \"object\"\n    },\n    \"ApiCallDef-Output\": {\n      \"description\": \"API call definition\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"cookies\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cookies\"\n        },\n        \"data\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Data\"\n        },\n        \"files\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Files\"\n        },\n        \"follow_redirects\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Follow Redirects\"\n        },\n        \"headers\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Headers\"\n        },\n        \"include_response_content\": {\n          \"default\": true,\n          \"title\": \"Include Response Content\",\n          \"type\": \"boolean\"\n        },\n        \"json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Json\"\n        },\n        \"method\": {\n          \"enum\": [\n            \"GET\",\n            \"POST\",\n            \"PUT\",\n            \"DELETE\",\n            \"PATCH\",\n            \"HEAD\",\n            \"OPTIONS\",\n            \"CONNECT\",\n            \"TRACE\"\n          ],\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"params_schema\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ParameterSchema-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Schema\"\n        },\n        \"secrets\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/SecretRef\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Secrets\"\n        },\n        \"timeout\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout\"\n        },\n        \"url\": {\n          \"format\": \"uri\",\n          \"minLength\": 1,\n          \"title\": \"Url\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"method\",\n        \"url\"\n      ],\n      \"title\": \"ApiCallDef\",\n      \"type\": \"object\"\n    },\n    \"ApiCallDefUpdate\": {\n      \"description\": \"API call definition\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"cookies\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cookies\"\n        },\n        \"data\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Data\"\n        },\n        \"files\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Files\"\n        },\n        \"follow_redirects\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Follow Redirects\"\n        },\n        \"headers\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Headers\"\n        },\n        \"include_response_content\": {\n          \"default\": true,\n          \"title\": \"Include Response Content\",\n          \"type\": \"boolean\"\n        },\n        \"json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Json\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"GET\",\n                \"POST\",\n                \"PUT\",\n                \"DELETE\",\n                \"PATCH\",\n                \"HEAD\",\n                \"OPTIONS\",\n                \"CONNECT\",\n                \"TRACE\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"params_schema\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ParameterSchemaUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Schema\"\n        },\n        \"secrets\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/SecretRefUpdate\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Secrets\"\n        },\n        \"timeout\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout\"\n        },\n        \"url\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uri\",\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Url\"\n        }\n      },\n      \"title\": \"ApiCallDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"ArxivIntegrationDef\": {\n      \"description\": \"Arxiv integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ArxivSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"arxiv\",\n          \"default\": \"arxiv\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"ArxivIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"ArxivIntegrationDefUpdate\": {\n      \"description\": \"Arxiv integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ArxivSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"arxiv\",\n          \"default\": \"arxiv\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"ArxivIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"ArxivSearchArguments\": {\n      \"description\": \"Arguments for Arxiv Search\",\n      \"properties\": {\n        \"download_pdf\": {\n          \"default\": false,\n          \"title\": \"Download Pdf\",\n          \"type\": \"boolean\"\n        },\n        \"id_list\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id List\"\n        },\n        \"max_results\": {\n          \"default\": 5,\n          \"maximum\": 300000.0,\n          \"minimum\": 1.0,\n          \"title\": \"Max Results\",\n          \"type\": \"integer\"\n        },\n        \"query\": {\n          \"title\": \"Query\",\n          \"type\": \"string\"\n        },\n        \"sort_by\": {\n          \"default\": \"relevance\",\n          \"enum\": [\n            \"relevance\",\n            \"lastUpdatedDate\",\n            \"submittedDate\"\n          ],\n          \"title\": \"Sort By\",\n          \"type\": \"string\"\n        },\n        \"sort_order\": {\n          \"default\": \"descending\",\n          \"enum\": [\n            \"ascending\",\n            \"descending\"\n          ],\n          \"title\": \"Sort Order\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"query\"\n      ],\n      \"title\": \"ArxivSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"ArxivSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Arxiv Search\",\n      \"properties\": {\n        \"download_pdf\": {\n          \"default\": false,\n          \"title\": \"Download Pdf\",\n          \"type\": \"boolean\"\n        },\n        \"id_list\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id List\"\n        },\n        \"max_results\": {\n          \"default\": 5,\n          \"maximum\": 300000.0,\n          \"minimum\": 1.0,\n          \"title\": \"Max Results\",\n          \"type\": \"integer\"\n        },\n        \"query\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Query\"\n        },\n        \"sort_by\": {\n          \"default\": \"relevance\",\n          \"enum\": [\n            \"relevance\",\n            \"lastUpdatedDate\",\n            \"submittedDate\"\n          ],\n          \"title\": \"Sort By\",\n          \"type\": \"string\"\n        },\n        \"sort_order\": {\n          \"default\": \"descending\",\n          \"enum\": [\n            \"ascending\",\n            \"descending\"\n          ],\n          \"title\": \"Sort Order\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"ArxivSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BaseTokenLogProb\": {\n      \"properties\": {\n        \"bytes\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"integer\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Bytes\"\n        },\n        \"logprob\": {\n          \"title\": \"Logprob\",\n          \"type\": \"number\"\n        },\n        \"token\": {\n          \"title\": \"Token\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"token\",\n        \"logprob\"\n      ],\n      \"title\": \"BaseTokenLogProb\",\n      \"type\": \"object\"\n    },\n    \"Bash20241022Def\": {\n      \"properties\": {\n        \"name\": {\n          \"default\": \"bash\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"bash_20241022\",\n          \"default\": \"bash_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"Bash20241022Def\",\n      \"type\": \"object\"\n    },\n    \"Bash20241022DefUpdate\": {\n      \"properties\": {\n        \"name\": {\n          \"default\": \"bash\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"bash_20241022\",\n          \"default\": \"bash_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"Bash20241022DefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BraveIntegrationDef\": {\n      \"description\": \"Brave integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BraveSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"brave\",\n          \"default\": \"brave\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BraveSearchSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BraveIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BraveIntegrationDefUpdate\": {\n      \"description\": \"Brave integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BraveSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"brave\",\n          \"default\": \"brave\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BraveSearchSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BraveIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BraveSearchArguments\": {\n      \"description\": \"Arguments for Brave Search\",\n      \"properties\": {\n        \"query\": {\n          \"title\": \"Query\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"query\"\n      ],\n      \"title\": \"BraveSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"BraveSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Brave Search\",\n      \"properties\": {\n        \"query\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Query\"\n        }\n      },\n      \"title\": \"BraveSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BraveSearchSetup\": {\n      \"description\": \"Integration definition for Brave Search\",\n      \"properties\": {\n        \"brave_api_key\": {\n          \"title\": \"Brave Api Key\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"brave_api_key\"\n      ],\n      \"title\": \"BraveSearchSetup\",\n      \"type\": \"object\"\n    },\n    \"BraveSearchSetupUpdate\": {\n      \"description\": \"Integration definition for Brave Search\",\n      \"properties\": {\n        \"brave_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Brave Api Key\"\n        }\n      },\n      \"title\": \"BraveSearchSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCompleteSessionArguments\": {\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"status\": {\n          \"const\": \"REQUEST_RELEASE\",\n          \"default\": \"REQUEST_RELEASE\",\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\"\n      ],\n      \"title\": \"BrowserbaseCompleteSessionArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCompleteSessionArgumentsUpdate\": {\n      \"properties\": {\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id\"\n        },\n        \"status\": {\n          \"const\": \"REQUEST_RELEASE\",\n          \"default\": \"REQUEST_RELEASE\",\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"BrowserbaseCompleteSessionArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCompleteSessionIntegrationDef\": {\n      \"description\": \"browserbase complete session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"complete_session\",\n          \"default\": \"complete_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseCompleteSessionIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCompleteSessionIntegrationDefUpdate\": {\n      \"description\": \"browserbase complete session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"complete_session\",\n          \"default\": \"complete_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseCompleteSessionIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseContextArguments\": {\n      \"properties\": {\n        \"projectId\": {\n          \"title\": \"Projectid\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"projectId\"\n      ],\n      \"title\": \"BrowserbaseContextArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseContextArgumentsUpdate\": {\n      \"properties\": {\n        \"projectId\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Projectid\"\n        }\n      },\n      \"title\": \"BrowserbaseContextArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseContextIntegrationDef\": {\n      \"description\": \"browserbase context provider\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"create_context\",\n          \"default\": \"create_context\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseContextIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseContextIntegrationDefUpdate\": {\n      \"description\": \"browserbase context provider\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"create_context\",\n          \"default\": \"create_context\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseContextIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCreateSessionArguments\": {\n      \"properties\": {\n        \"browserSettings\": {\n          \"default\": {},\n          \"title\": \"Browsersettings\",\n          \"type\": \"object\"\n        },\n        \"extensionId\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Extensionid\"\n        },\n        \"keepAlive\": {\n          \"default\": false,\n          \"title\": \"Keepalive\",\n          \"type\": \"boolean\"\n        },\n        \"projectId\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Projectid\"\n        },\n        \"proxies\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"items\": {\n                \"type\": \"object\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": false,\n          \"title\": \"Proxies\"\n        },\n        \"timeout\": {\n          \"default\": 3600,\n          \"title\": \"Timeout\",\n          \"type\": \"integer\"\n        }\n      },\n      \"title\": \"BrowserbaseCreateSessionArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCreateSessionIntegrationDef\": {\n      \"description\": \"browserbase create session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"create_session\",\n          \"default\": \"create_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseCreateSessionIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseCreateSessionIntegrationDefUpdate\": {\n      \"description\": \"browserbase create session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"create_session\",\n          \"default\": \"create_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseCreateSessionIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseExtensionArguments\": {\n      \"properties\": {\n        \"ref\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Ref\"\n        },\n        \"repositoryName\": {\n          \"title\": \"Repositoryname\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"repositoryName\"\n      ],\n      \"title\": \"BrowserbaseExtensionArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseExtensionArgumentsUpdate\": {\n      \"properties\": {\n        \"ref\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Ref\"\n        },\n        \"repositoryName\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Repositoryname\"\n        }\n      },\n      \"title\": \"BrowserbaseExtensionArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseExtensionIntegrationDef\": {\n      \"description\": \"browserbase extension provider\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"const\": \"install_extension_from_github\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseExtensionIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseExtensionIntegrationDefUpdate\": {\n      \"description\": \"browserbase extension provider\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"const\": \"install_extension_from_github\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseExtensionIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionArguments\": {\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\"\n      ],\n      \"title\": \"BrowserbaseGetSessionArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionArgumentsUpdate\": {\n      \"properties\": {\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id\"\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionIntegrationDef\": {\n      \"description\": \"browserbase get session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"get_session\",\n          \"default\": \"get_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionIntegrationDefUpdate\": {\n      \"description\": \"browserbase get session integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"get_session\",\n          \"default\": \"get_session\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionLiveUrlsArguments\": {\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\"\n      ],\n      \"title\": \"BrowserbaseGetSessionLiveUrlsArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionLiveUrlsArgumentsUpdate\": {\n      \"properties\": {\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id\"\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionLiveUrlsArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionLiveUrlsIntegrationDef\": {\n      \"description\": \"browserbase get session live urls integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"get_live_urls\",\n          \"default\": \"get_live_urls\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionLiveUrlsIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate\": {\n      \"description\": \"browserbase get session live urls integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"get_live_urls\",\n          \"default\": \"get_live_urls\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseListSessionsArguments\": {\n      \"properties\": {\n        \"status\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"RUNNING\",\n                \"ERROR\",\n                \"TIMED_OUT\",\n                \"COMPLETED\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Status\"\n        }\n      },\n      \"title\": \"BrowserbaseListSessionsArguments\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseListSessionsIntegrationDef\": {\n      \"description\": \"browserbase list sessions integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"list_sessions\",\n          \"default\": \"list_sessions\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseListSessionsIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseListSessionsIntegrationDefUpdate\": {\n      \"description\": \"browserbase list sessions integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"list_sessions\",\n          \"default\": \"list_sessions\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"browserbase\",\n          \"default\": \"browserbase\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/BrowserbaseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"BrowserbaseListSessionsIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseSetup\": {\n      \"description\": \"The setup parameters for the browserbase integration\",\n      \"properties\": {\n        \"api_key\": {\n          \"title\": \"Api Key\",\n          \"type\": \"string\"\n        },\n        \"api_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Url\"\n        },\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"project_id\": {\n          \"title\": \"Project Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"api_key\",\n        \"project_id\"\n      ],\n      \"title\": \"BrowserbaseSetup\",\n      \"type\": \"object\"\n    },\n    \"BrowserbaseSetupUpdate\": {\n      \"description\": \"The setup parameters for the browserbase integration\",\n      \"properties\": {\n        \"api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Key\"\n        },\n        \"api_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Url\"\n        },\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"project_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project Id\"\n        }\n      },\n      \"title\": \"BrowserbaseSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"BulkDeleteDocsRequest\": {\n      \"properties\": {\n        \"delete_all\": {\n          \"default\": false,\n          \"title\": \"Delete All\",\n          \"type\": \"boolean\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        }\n      },\n      \"title\": \"BulkDeleteDocsRequest\",\n      \"type\": \"object\"\n    },\n    \"CaseThen-Input\": {\n      \"properties\": {\n        \"case\": {\n          \"anyOf\": [\n            {\n              \"const\": \"_\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ],\n          \"title\": \"Case\"\n        },\n        \"then\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            }\n          ],\n          \"title\": \"Then\"\n        }\n      },\n      \"required\": [\n        \"case\",\n        \"then\"\n      ],\n      \"title\": \"CaseThen\",\n      \"type\": \"object\"\n    },\n    \"CaseThen-Output\": {\n      \"properties\": {\n        \"case\": {\n          \"anyOf\": [\n            {\n              \"const\": \"_\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ],\n          \"title\": \"Case\"\n        },\n        \"then\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            }\n          ],\n          \"title\": \"Then\"\n        }\n      },\n      \"required\": [\n        \"case\",\n        \"then\"\n      ],\n      \"title\": \"CaseThen\",\n      \"type\": \"object\"\n    },\n    \"ChatInput\": {\n      \"properties\": {\n        \"agent\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agent\"\n        },\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"frequency_penalty\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 2.0,\n              \"minimum\": -2.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Frequency Penalty\"\n        },\n        \"length_penalty\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 2.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Length Penalty\"\n        },\n        \"logit_bias\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/LogitBias\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Logit Bias\"\n        },\n        \"max_tokens\": {\n          \"anyOf\": [\n            {\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Max Tokens\"\n        },\n        \"messages\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Message-Input\"\n          },\n          \"minItems\": 1,\n          \"title\": \"Messages\",\n          \"type\": \"array\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"min_p\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Min P\"\n        },\n        \"model\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Model\"\n        },\n        \"presence_penalty\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 2.0,\n              \"minimum\": -2.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Presence Penalty\"\n        },\n        \"recall\": {\n          \"default\": true,\n          \"title\": \"Recall\",\n          \"type\": \"boolean\"\n        },\n        \"recall_tools\": {\n          \"default\": true,\n          \"title\": \"Recall Tools\",\n          \"type\": \"boolean\"\n        },\n        \"remember\": {\n          \"default\": false,\n          \"readOnly\": true,\n          \"title\": \"Remember\",\n          \"type\": \"boolean\"\n        },\n        \"repetition_penalty\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 2.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Repetition Penalty\"\n        },\n        \"response_format\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SimpleCompletionResponseFormat\"\n            },\n            {\n              \"$ref\": \"#/$defs/SchemaCompletionResponseFormat\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Response Format\"\n        },\n        \"save\": {\n          \"default\": true,\n          \"title\": \"Save\",\n          \"type\": \"boolean\"\n        },\n        \"seed\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1000.0,\n              \"minimum\": -1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Seed\"\n        },\n        \"stop\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"maxItems\": 4,\n          \"title\": \"Stop\",\n          \"type\": \"array\"\n        },\n        \"stream\": {\n          \"default\": false,\n          \"title\": \"Stream\",\n          \"type\": \"boolean\"\n        },\n        \"temperature\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 5.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Temperature\"\n        },\n        \"tool_choice\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"auto\",\n                \"none\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedToolChoice\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Choice\"\n        },\n        \"tools\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/agents_api__autogen__Tools__CreateToolRequest-Input\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tools\"\n        },\n        \"top_p\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Top P\"\n        }\n      },\n      \"required\": [\n        \"messages\"\n      ],\n      \"title\": \"ChatInput\",\n      \"type\": \"object\"\n    },\n    \"ChatOutputChunk\": {\n      \"description\": \"Streaming chat completion output\",\n      \"properties\": {\n        \"delta\": {\n          \"$ref\": \"#/$defs/Delta\"\n        },\n        \"finish_reason\": {\n          \"default\": \"stop\",\n          \"enum\": [\n            \"stop\",\n            \"length\",\n            \"content_filter\",\n            \"tool_calls\"\n          ],\n          \"title\": \"Finish Reason\",\n          \"type\": \"string\"\n        },\n        \"index\": {\n          \"title\": \"Index\",\n          \"type\": \"integer\"\n        },\n        \"logprobs\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LogProbResponse\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"index\",\n        \"delta\"\n      ],\n      \"title\": \"ChatOutputChunk\",\n      \"type\": \"object\"\n    },\n    \"ChosenBash20241022\": {\n      \"properties\": {\n        \"command\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Command\"\n        },\n        \"restart\": {\n          \"default\": false,\n          \"title\": \"Restart\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"title\": \"ChosenBash20241022\",\n      \"type\": \"object\"\n    },\n    \"ChosenComputer20241022\": {\n      \"properties\": {\n        \"action\": {\n          \"enum\": [\n            \"key\",\n            \"type\",\n            \"cursor_position\",\n            \"mouse_move\",\n            \"left_click\",\n            \"right_click\",\n            \"middle_click\",\n            \"double_click\",\n            \"screenshot\"\n          ],\n          \"title\": \"Action\",\n          \"type\": \"string\"\n        },\n        \"coordinate\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"integer\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Coordinate\"\n        },\n        \"text\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Text\"\n        }\n      },\n      \"required\": [\n        \"action\"\n      ],\n      \"title\": \"ChosenComputer20241022\",\n      \"type\": \"object\"\n    },\n    \"ChosenFunctionCall\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Call\"\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ChosenBash20241022\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ChosenComputer20241022\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"function\": {\n          \"$ref\": \"#/$defs/FunctionCallOption\"\n        },\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Id\"\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System\"\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"const\": \"function\",\n          \"default\": \"function\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"function\"\n      ],\n      \"title\": \"ChosenFunctionCall\",\n      \"type\": \"object\"\n    },\n    \"ChosenTextEditor20241022\": {\n      \"properties\": {\n        \"command\": {\n          \"enum\": [\n            \"str_replace\",\n            \"insert\",\n            \"view\",\n            \"undo_edit\"\n          ],\n          \"title\": \"Command\",\n          \"type\": \"string\"\n        },\n        \"file_text\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File Text\"\n        },\n        \"insert_line\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Insert Line\"\n        },\n        \"new_str\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"New Str\"\n        },\n        \"old_str\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Old Str\"\n        },\n        \"path\": {\n          \"title\": \"Path\",\n          \"type\": \"string\"\n        },\n        \"view_range\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"integer\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"View Range\"\n        }\n      },\n      \"required\": [\n        \"command\",\n        \"path\"\n      ],\n      \"title\": \"ChosenTextEditor20241022\",\n      \"type\": \"object\"\n    },\n    \"ChunkChatResponse\": {\n      \"properties\": {\n        \"choices\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ChatOutputChunk\"\n          },\n          \"title\": \"Choices\",\n          \"type\": \"array\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"docs\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/DocReference\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Docs\",\n          \"type\": \"array\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"jobs\": {\n          \"default\": [],\n          \"items\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Jobs\",\n          \"type\": \"array\"\n        },\n        \"usage\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CompletionUsage\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"required\": [\n        \"created_at\",\n        \"id\",\n        \"choices\"\n      ],\n      \"title\": \"ChunkChatResponse\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryEditArguments\": {\n      \"description\": \"Arguments for Cloudinary media edit\",\n      \"properties\": {\n        \"public_id\": {\n          \"title\": \"Public Id\",\n          \"type\": \"string\"\n        },\n        \"return_base64\": {\n          \"default\": false,\n          \"title\": \"Return Base64\",\n          \"type\": \"boolean\"\n        },\n        \"transformation\": {\n          \"items\": {\n            \"type\": \"object\"\n          },\n          \"title\": \"Transformation\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"public_id\",\n        \"transformation\"\n      ],\n      \"title\": \"CloudinaryEditArguments\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryEditArgumentsUpdate\": {\n      \"description\": \"Arguments for Cloudinary media edit\",\n      \"properties\": {\n        \"public_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Public Id\"\n        },\n        \"return_base64\": {\n          \"default\": false,\n          \"title\": \"Return Base64\",\n          \"type\": \"boolean\"\n        },\n        \"transformation\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"object\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Transformation\"\n        }\n      },\n      \"title\": \"CloudinaryEditArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryEditIntegrationDef\": {\n      \"description\": \"Cloudinary edit integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"media_edit\",\n          \"default\": \"media_edit\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"cloudinary\",\n          \"default\": \"cloudinary\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinarySetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"CloudinaryEditIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryEditIntegrationDefUpdate\": {\n      \"description\": \"Cloudinary edit integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"media_edit\",\n          \"default\": \"media_edit\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"cloudinary\",\n          \"default\": \"cloudinary\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinarySetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"CloudinaryEditIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"CloudinarySetup\": {\n      \"description\": \"Setup parameters for Cloudinary integration\",\n      \"properties\": {\n        \"cloudinary_api_key\": {\n          \"title\": \"Cloudinary Api Key\",\n          \"type\": \"string\"\n        },\n        \"cloudinary_api_secret\": {\n          \"title\": \"Cloudinary Api Secret\",\n          \"type\": \"string\"\n        },\n        \"cloudinary_cloud_name\": {\n          \"title\": \"Cloudinary Cloud Name\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"required\": [\n        \"cloudinary_api_key\",\n        \"cloudinary_api_secret\",\n        \"cloudinary_cloud_name\"\n      ],\n      \"title\": \"CloudinarySetup\",\n      \"type\": \"object\"\n    },\n    \"CloudinarySetupUpdate\": {\n      \"description\": \"Setup parameters for Cloudinary integration\",\n      \"properties\": {\n        \"cloudinary_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cloudinary Api Key\"\n        },\n        \"cloudinary_api_secret\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cloudinary Api Secret\"\n        },\n        \"cloudinary_cloud_name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cloudinary Cloud Name\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"title\": \"CloudinarySetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryUploadArguments\": {\n      \"description\": \"Arguments for Cloudinary media upload\",\n      \"properties\": {\n        \"file\": {\n          \"title\": \"File\",\n          \"type\": \"string\"\n        },\n        \"public_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Public Id\"\n        },\n        \"return_base64\": {\n          \"default\": false,\n          \"title\": \"Return Base64\",\n          \"type\": \"boolean\"\n        },\n        \"upload_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Upload Params\"\n        }\n      },\n      \"required\": [\n        \"file\"\n      ],\n      \"title\": \"CloudinaryUploadArguments\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryUploadArgumentsUpdate\": {\n      \"description\": \"Arguments for Cloudinary media upload\",\n      \"properties\": {\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        },\n        \"public_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Public Id\"\n        },\n        \"return_base64\": {\n          \"default\": false,\n          \"title\": \"Return Base64\",\n          \"type\": \"boolean\"\n        },\n        \"upload_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Upload Params\"\n        }\n      },\n      \"title\": \"CloudinaryUploadArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryUploadIntegrationDef\": {\n      \"description\": \"Cloudinary upload integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"media_upload\",\n          \"default\": \"media_upload\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"cloudinary\",\n          \"default\": \"cloudinary\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinarySetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"CloudinaryUploadIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"CloudinaryUploadIntegrationDefUpdate\": {\n      \"description\": \"Cloudinary upload integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"media_upload\",\n          \"default\": \"media_upload\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"cloudinary\",\n          \"default\": \"cloudinary\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CloudinarySetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"CloudinaryUploadIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"CompletionUsage\": {\n      \"description\": \"Usage statistics for the completion request\",\n      \"properties\": {\n        \"completion_tokens\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Completion Tokens\"\n        },\n        \"prompt_tokens\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Prompt Tokens\"\n        },\n        \"total_tokens\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Total Tokens\"\n        }\n      },\n      \"title\": \"CompletionUsage\",\n      \"type\": \"object\"\n    },\n    \"Computer20241022Def\": {\n      \"description\": \"Anthropic new tools\",\n      \"properties\": {\n        \"display_height_px\": {\n          \"default\": 768,\n          \"minimum\": 400.0,\n          \"title\": \"Display Height Px\",\n          \"type\": \"integer\"\n        },\n        \"display_number\": {\n          \"default\": 1,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Display Number\",\n          \"type\": \"integer\"\n        },\n        \"display_width_px\": {\n          \"default\": 1024,\n          \"minimum\": 600.0,\n          \"title\": \"Display Width Px\",\n          \"type\": \"integer\"\n        },\n        \"name\": {\n          \"default\": \"computer\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"computer_20241022\",\n          \"default\": \"computer_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"Computer20241022Def\",\n      \"type\": \"object\"\n    },\n    \"Computer20241022DefUpdate\": {\n      \"description\": \"Anthropic new tools\",\n      \"properties\": {\n        \"display_height_px\": {\n          \"default\": 768,\n          \"minimum\": 400.0,\n          \"title\": \"Display Height Px\",\n          \"type\": \"integer\"\n        },\n        \"display_number\": {\n          \"default\": 1,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Display Number\",\n          \"type\": \"integer\"\n        },\n        \"display_width_px\": {\n          \"default\": 1024,\n          \"minimum\": 600.0,\n          \"title\": \"Display Width Px\",\n          \"type\": \"integer\"\n        },\n        \"name\": {\n          \"default\": \"computer\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"computer_20241022\",\n          \"default\": \"computer_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"Computer20241022DefUpdate\",\n      \"type\": \"object\"\n    },\n    \"Content-Output\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"Content\",\n      \"type\": \"object\"\n    },\n    \"ContentItem\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentItem\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel\": {\n      \"properties\": {\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"type\": {\n          \"const\": \"image\",\n          \"default\": \"image\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"source\"\n      ],\n      \"title\": \"ContentItemModel\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel1\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentItemModel1\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel2\": {\n      \"properties\": {\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"type\": {\n          \"const\": \"image\",\n          \"default\": \"image\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"source\"\n      ],\n      \"title\": \"ContentItemModel2\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel3\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentItemModel3\",\n      \"type\": \"object\"\n    },\n    \"ContentItemModel4\": {\n      \"properties\": {\n        \"source\": {\n          \"$ref\": \"#/$defs/Source\"\n        },\n        \"type\": {\n          \"const\": \"image\",\n          \"default\": \"image\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"source\"\n      ],\n      \"title\": \"ContentItemModel4\",\n      \"type\": \"object\"\n    },\n    \"ContentModel1-Input\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel1\",\n      \"type\": \"object\"\n    },\n    \"ContentModel4\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel3\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel4\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel4\",\n      \"type\": \"object\"\n    },\n    \"ContentModel7\": {\n      \"properties\": {\n        \"image_url\": {\n          \"$ref\": \"#/$defs/ImageUrl\"\n        },\n        \"type\": {\n          \"const\": \"image_url\",\n          \"default\": \"image_url\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"image_url\"\n      ],\n      \"title\": \"ContentModel7\",\n      \"type\": \"object\"\n    },\n    \"CreateAgentRequest\": {\n      \"description\": \"Payload for creating a agent (and associated documents)\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"CreateAgentRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateDocRequest\": {\n      \"description\": \"Payload for creating a doc\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/agents_api__autogen__Common__Content\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/agents_api__autogen__Common__Content\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"embed_instruction\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Embed Instruction\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"title\": {\n          \"maxLength\": 800,\n          \"title\": \"Title\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"title\",\n        \"content\"\n      ],\n      \"title\": \"CreateDocRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateExecutionRequest\": {\n      \"description\": \"Payload for creating an execution\",\n      \"properties\": {\n        \"error\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Error\"\n        },\n        \"input\": {\n          \"title\": \"Input\",\n          \"type\": \"object\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"output\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Output\"\n        },\n        \"transition_count\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Transition Count\"\n        }\n      },\n      \"required\": [\n        \"input\"\n      ],\n      \"title\": \"CreateExecutionRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateFileRequest\": {\n      \"description\": \"Payload for creating a file\",\n      \"properties\": {\n        \"content\": {\n          \"title\": \"Content\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"default\": \"\",\n          \"title\": \"Description\",\n          \"type\": \"string\"\n        },\n        \"mime_type\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Mime Type\"\n        },\n        \"name\": {\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"content\"\n      ],\n      \"title\": \"CreateFileRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateOrUpdateAgentRequest\": {\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"CreateOrUpdateAgentRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateOrUpdateSessionRequest\": {\n      \"properties\": {\n        \"agent\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agent\"\n        },\n        \"agents\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"format\": \"uuid\",\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agents\"\n        },\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearch\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        },\n        \"user\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"User\"\n        },\n        \"users\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"format\": \"uuid\",\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Users\"\n        }\n      },\n      \"title\": \"CreateOrUpdateSessionRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateOrUpdateUserRequest\": {\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"CreateOrUpdateUserRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateProjectRequest\": {\n      \"description\": \"Payload for creating a project\",\n      \"properties\": {\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"CreateProjectRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateSecretRequest\": {\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"title\": \"Value\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"value\"\n      ],\n      \"title\": \"CreateSecretRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateSessionRequest\": {\n      \"description\": \"Payload for creating a session\",\n      \"properties\": {\n        \"agent\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agent\"\n        },\n        \"agents\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"format\": \"uuid\",\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Agents\"\n        },\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearch\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        },\n        \"user\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"User\"\n        },\n        \"users\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"format\": \"uuid\",\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Users\"\n        }\n      },\n      \"title\": \"CreateSessionRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateTaskRequest\": {\n      \"additionalProperties\": true,\n      \"description\": \"Payload for creating a task\",\n      \"properties\": {\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"description\": {\n          \"default\": \"\",\n          \"title\": \"Description\",\n          \"type\": \"string\"\n        },\n        \"inherit_tools\": {\n          \"default\": false,\n          \"title\": \"Inherit Tools\",\n          \"type\": \"boolean\"\n        },\n        \"input_schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Input Schema\"\n        },\n        \"main\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/EvaluateStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ToolCallStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/PromptStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/GetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/LogStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/YieldStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ReturnStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SleepStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/WaitForInputStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/IfElseWorkflowStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/SwitchStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/ForeachStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/ParallelStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/Main-Input\"\n              }\n            ]\n          },\n          \"minItems\": 1,\n          \"title\": \"Main\",\n          \"type\": \"array\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"tools\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/TaskTool-Input\"\n          },\n          \"title\": \"Tools\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"main\"\n      ],\n      \"title\": \"CreateTaskRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateToolRequest-Output\": {\n      \"description\": \"Payload for creating a tool\",\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"CreateToolRequest\",\n      \"type\": \"object\"\n    },\n    \"CreateUserRequest\": {\n      \"description\": \"Payload for creating a user (and associated documents)\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"CreateUserRequest\",\n      \"type\": \"object\"\n    },\n    \"Delta\": {\n      \"description\": \"The message generated by the model\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel1\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel7\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel2\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\"\n      ],\n      \"title\": \"Delta\",\n      \"type\": \"object\"\n    },\n    \"Doc\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"embedding_dimensions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Embedding Dimensions\"\n        },\n        \"embedding_model\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Embedding Model\"\n        },\n        \"embeddings\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"number\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"items\": {\n                  \"type\": \"number\"\n                },\n                \"type\": \"array\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Embeddings\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"language\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Language\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"modality\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Modality\"\n        },\n        \"title\": {\n          \"maxLength\": 800,\n          \"title\": \"Title\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"title\",\n        \"content\"\n      ],\n      \"title\": \"Doc\",\n      \"type\": \"object\"\n    },\n    \"DocOwner\": {\n      \"properties\": {\n        \"id\": {\n          \"format\": \"uuid\",\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"agent\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"role\"\n      ],\n      \"title\": \"DocOwner\",\n      \"type\": \"object\"\n    },\n    \"DocReference\": {\n      \"properties\": {\n        \"distance\": {\n          \"anyOf\": [\n            {\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Distance\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"owner\": {\n          \"$ref\": \"#/$defs/DocOwner\"\n        },\n        \"snippet\": {\n          \"$ref\": \"#/$defs/Snippet\"\n        },\n        \"title\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Title\"\n        }\n      },\n      \"required\": [\n        \"owner\",\n        \"id\",\n        \"snippet\"\n      ],\n      \"title\": \"DocReference\",\n      \"type\": \"object\"\n    },\n    \"DocSearchResponse\": {\n      \"properties\": {\n        \"docs\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/DocReference\"\n          },\n          \"title\": \"Docs\",\n          \"type\": \"array\"\n        },\n        \"time\": {\n          \"exclusiveMinimum\": 0.0,\n          \"title\": \"Time\",\n          \"type\": \"number\"\n        }\n      },\n      \"required\": [\n        \"docs\",\n        \"time\"\n      ],\n      \"title\": \"DocSearchResponse\",\n      \"type\": \"object\"\n    },\n    \"DummyIntegrationDef\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"dummy\",\n          \"default\": \"dummy\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"DummyIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"DummyIntegrationDefUpdate\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"dummy\",\n          \"default\": \"dummy\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"DummyIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"Else-Input\": {\n      \"description\": \"The steps to run if the condition is false\",\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Else\",\n      \"type\": \"object\"\n    },\n    \"Else-Output\": {\n      \"description\": \"The steps to run if the condition is false\",\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Else\",\n      \"type\": \"object\"\n    },\n    \"EmailArguments\": {\n      \"description\": \"Arguments for Email sending\",\n      \"properties\": {\n        \"body\": {\n          \"title\": \"Body\",\n          \"type\": \"string\"\n        },\n        \"from\": {\n          \"title\": \"From\",\n          \"type\": \"string\"\n        },\n        \"subject\": {\n          \"title\": \"Subject\",\n          \"type\": \"string\"\n        },\n        \"to\": {\n          \"title\": \"To\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"to\",\n        \"from\",\n        \"subject\",\n        \"body\"\n      ],\n      \"title\": \"EmailArguments\",\n      \"type\": \"object\"\n    },\n    \"EmailArgumentsUpdate\": {\n      \"description\": \"Arguments for Email sending\",\n      \"properties\": {\n        \"body\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Body\"\n        },\n        \"from\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"From\"\n        },\n        \"subject\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Subject\"\n        },\n        \"to\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"To\"\n        }\n      },\n      \"title\": \"EmailArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"EmailIntegrationDef\": {\n      \"description\": \"Email integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EmailArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"email\",\n          \"default\": \"email\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EmailSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"EmailIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"EmailIntegrationDefUpdate\": {\n      \"description\": \"Email integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EmailArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"email\",\n          \"default\": \"email\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EmailSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"EmailIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"EmailSetup\": {\n      \"description\": \"Setup parameters for Email integration\",\n      \"properties\": {\n        \"host\": {\n          \"title\": \"Host\",\n          \"type\": \"string\"\n        },\n        \"password\": {\n          \"title\": \"Password\",\n          \"type\": \"string\"\n        },\n        \"port\": {\n          \"title\": \"Port\",\n          \"type\": \"integer\"\n        },\n        \"user\": {\n          \"title\": \"User\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"host\",\n        \"port\",\n        \"user\",\n        \"password\"\n      ],\n      \"title\": \"EmailSetup\",\n      \"type\": \"object\"\n    },\n    \"EmailSetupUpdate\": {\n      \"description\": \"Setup parameters for Email integration\",\n      \"properties\": {\n        \"host\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Host\"\n        },\n        \"password\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Password\"\n        },\n        \"port\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Port\"\n        },\n        \"user\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"User\"\n        }\n      },\n      \"title\": \"EmailSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"EmbedQueryResponse\": {\n      \"properties\": {\n        \"vectors\": {\n          \"items\": {\n            \"items\": {\n              \"type\": \"number\"\n            },\n            \"type\": \"array\"\n          },\n          \"title\": \"Vectors\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"vectors\"\n      ],\n      \"title\": \"EmbedQueryResponse\",\n      \"type\": \"object\"\n    },\n    \"Entry\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/Content-Output\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel3\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"$ref\": \"#/$defs/Tool\"\n            },\n            {\n              \"$ref\": \"#/$defs/ChosenFunctionCall\"\n            },\n            {\n              \"$ref\": \"#/$defs/ChosenComputer20241022\"\n            },\n            {\n              \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n            },\n            {\n              \"$ref\": \"#/$defs/ChosenBash20241022\"\n            },\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolResponse\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"items\": {\n                      \"anyOf\": [\n                        {\n                          \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel1\"\n                        },\n                        {\n                          \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel3\"\n                        },\n                        {\n                          \"$ref\": \"#/$defs/agents_api__autogen__Entries__ContentModel2\"\n                        }\n                      ]\n                    },\n                    \"type\": \"array\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/Tool\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  },\n                  {\n                    \"type\": \"string\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ToolResponse\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"model\": {\n          \"default\": \"gpt-4o-mini\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"source\": {\n          \"enum\": [\n            \"api_request\",\n            \"api_response\",\n            \"tool_request\",\n            \"tool_response\",\n            \"internal\",\n            \"summarizer\",\n            \"meta\"\n          ],\n          \"title\": \"Source\",\n          \"type\": \"string\"\n        },\n        \"timestamp\": {\n          \"format\": \"date-time\",\n          \"title\": \"Timestamp\",\n          \"type\": \"string\"\n        },\n        \"token_count\": {\n          \"title\": \"Token Count\",\n          \"type\": \"integer\"\n        },\n        \"tokenizer\": {\n          \"title\": \"Tokenizer\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\",\n        \"content\",\n        \"source\",\n        \"tokenizer\",\n        \"token_count\",\n        \"timestamp\",\n        \"created_at\",\n        \"id\"\n      ],\n      \"title\": \"Entry\",\n      \"type\": \"object\"\n    },\n    \"ErrorWorkflowStep\": {\n      \"properties\": {\n        \"error\": {\n          \"title\": \"Error\",\n          \"type\": \"string\"\n        },\n        \"kind_\": {\n          \"const\": \"error\",\n          \"default\": \"error\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"error\"\n      ],\n      \"title\": \"ErrorWorkflowStep\",\n      \"type\": \"object\"\n    },\n    \"EvaluateStep\": {\n      \"properties\": {\n        \"evaluate\": {\n          \"additionalProperties\": {\n            \"anyOf\": [\n              {\n                \"type\": \"object\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"title\": \"Evaluate\",\n          \"type\": \"object\"\n        },\n        \"kind_\": {\n          \"const\": \"evaluate\",\n          \"default\": \"evaluate\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"evaluate\"\n      ],\n      \"title\": \"EvaluateStep\",\n      \"type\": \"object\"\n    },\n    \"Execution\": {\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"error\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Error\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"input\": {\n          \"title\": \"Input\",\n          \"type\": \"object\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"output\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Output\"\n        },\n        \"status\": {\n          \"enum\": [\n            \"queued\",\n            \"starting\",\n            \"running\",\n            \"awaiting_input\",\n            \"succeeded\",\n            \"failed\",\n            \"cancelled\"\n          ],\n          \"readOnly\": true,\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        },\n        \"task_id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Task Id\",\n          \"type\": \"string\"\n        },\n        \"transition_count\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Transition Count\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"task_id\",\n        \"status\",\n        \"input\",\n        \"created_at\",\n        \"updated_at\",\n        \"id\"\n      ],\n      \"title\": \"Execution\",\n      \"type\": \"object\"\n    },\n    \"FfmpegIntegrationDef\": {\n      \"description\": \"Ffmpeg integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FfmpegSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"ffmpeg\",\n          \"default\": \"ffmpeg\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"FfmpegIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"FfmpegIntegrationDefUpdate\": {\n      \"description\": \"Ffmpeg integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FfmpegSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"ffmpeg\",\n          \"default\": \"ffmpeg\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"FfmpegIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"FfmpegSearchArguments\": {\n      \"description\": \"Arguments for Ffmpeg CMD\",\n      \"properties\": {\n        \"cmd\": {\n          \"title\": \"Cmd\",\n          \"type\": \"string\"\n        },\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        }\n      },\n      \"required\": [\n        \"cmd\"\n      ],\n      \"title\": \"FfmpegSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"FfmpegSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Ffmpeg CMD\",\n      \"properties\": {\n        \"cmd\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cmd\"\n        },\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        }\n      },\n      \"title\": \"FfmpegSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"File\": {\n      \"properties\": {\n        \"content\": {\n          \"title\": \"Content\",\n          \"type\": \"string\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"default\": \"\",\n          \"title\": \"Description\",\n          \"type\": \"string\"\n        },\n        \"hash\": {\n          \"readOnly\": true,\n          \"title\": \"Hash\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"mime_type\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Mime Type\"\n        },\n        \"name\": {\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        },\n        \"size\": {\n          \"minimum\": 1.0,\n          \"readOnly\": true,\n          \"title\": \"Size\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"name\",\n        \"content\",\n        \"size\",\n        \"hash\"\n      ],\n      \"title\": \"File\",\n      \"type\": \"object\"\n    },\n    \"ForeachDo-Input\": {\n      \"properties\": {\n        \"do\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Do\"\n        },\n        \"in\": {\n          \"title\": \"In\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"in\",\n        \"do\"\n      ],\n      \"title\": \"ForeachDo\",\n      \"type\": \"object\"\n    },\n    \"ForeachDo-Output\": {\n      \"properties\": {\n        \"do\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Do\"\n        },\n        \"in\": {\n          \"title\": \"In\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"in\",\n        \"do\"\n      ],\n      \"title\": \"ForeachDo\",\n      \"type\": \"object\"\n    },\n    \"ForeachStep-Input\": {\n      \"properties\": {\n        \"foreach\": {\n          \"$ref\": \"#/$defs/ForeachDo-Input\"\n        },\n        \"kind_\": {\n          \"const\": \"foreach\",\n          \"default\": \"foreach\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"foreach\"\n      ],\n      \"title\": \"ForeachStep\",\n      \"type\": \"object\"\n    },\n    \"ForeachStep-Output\": {\n      \"properties\": {\n        \"foreach\": {\n          \"$ref\": \"#/$defs/ForeachDo-Output\"\n        },\n        \"kind_\": {\n          \"const\": \"foreach\",\n          \"default\": \"foreach\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"foreach\"\n      ],\n      \"title\": \"ForeachStep\",\n      \"type\": \"object\"\n    },\n    \"FunctionCallOption\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"FunctionCallOption\",\n      \"type\": \"object\"\n    },\n    \"FunctionDef\": {\n      \"description\": \"Function definition\",\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"parameters\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parameters\"\n        }\n      },\n      \"title\": \"FunctionDef\",\n      \"type\": \"object\"\n    },\n    \"GetStep\": {\n      \"properties\": {\n        \"get\": {\n          \"title\": \"Get\",\n          \"type\": \"string\"\n        },\n        \"kind_\": {\n          \"const\": \"get\",\n          \"default\": \"get\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        }\n      },\n      \"required\": [\n        \"get\"\n      ],\n      \"title\": \"GetStep\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsAppendArguments\": {\n      \"description\": \"Arguments for appending values to a spreadsheet\",\n      \"properties\": {\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"insert_data_option\": {\n          \"default\": \"INSERT_ROWS\",\n          \"enum\": [\n            \"OVERWRITE\",\n            \"INSERT_ROWS\"\n          ],\n          \"title\": \"Insert Data Option\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"items\": {\n            \"items\": {},\n            \"type\": \"array\"\n          },\n          \"title\": \"Values\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"range\",\n        \"values\"\n      ],\n      \"title\": \"GoogleSheetsAppendArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsAppendArgumentsUpdate\": {\n      \"description\": \"Arguments for appending values to a spreadsheet\",\n      \"properties\": {\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"insert_data_option\": {\n          \"default\": \"INSERT_ROWS\",\n          \"enum\": [\n            \"OVERWRITE\",\n            \"INSERT_ROWS\"\n          ],\n          \"title\": \"Insert Data Option\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Range\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"items\": {},\n                \"type\": \"array\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Values\"\n        }\n      },\n      \"title\": \"GoogleSheetsAppendArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsBatchReadArguments\": {\n      \"description\": \"Arguments for batch reading values from multiple ranges\",\n      \"properties\": {\n        \"date_time_render_option\": {\n          \"default\": \"FORMATTED_STRING\",\n          \"enum\": [\n            \"SERIAL_NUMBER\",\n            \"FORMATTED_STRING\"\n          ],\n          \"title\": \"Date Time Render Option\",\n          \"type\": \"string\"\n        },\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"ranges\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Ranges\",\n          \"type\": \"array\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_render_option\": {\n          \"default\": \"FORMATTED_VALUE\",\n          \"enum\": [\n            \"FORMATTED_VALUE\",\n            \"UNFORMATTED_VALUE\",\n            \"FORMULA\"\n          ],\n          \"title\": \"Value Render Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"ranges\"\n      ],\n      \"title\": \"GoogleSheetsBatchReadArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsBatchReadArgumentsUpdate\": {\n      \"description\": \"Arguments for batch reading values from multiple ranges\",\n      \"properties\": {\n        \"date_time_render_option\": {\n          \"default\": \"FORMATTED_STRING\",\n          \"enum\": [\n            \"SERIAL_NUMBER\",\n            \"FORMATTED_STRING\"\n          ],\n          \"title\": \"Date Time Render Option\",\n          \"type\": \"string\"\n        },\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"ranges\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Ranges\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_render_option\": {\n          \"default\": \"FORMATTED_VALUE\",\n          \"enum\": [\n            \"FORMATTED_VALUE\",\n            \"UNFORMATTED_VALUE\",\n            \"FORMULA\"\n          ],\n          \"title\": \"Value Render Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"GoogleSheetsBatchReadArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsBatchWriteArguments\": {\n      \"description\": \"Arguments for batch updating values in multiple ranges\",\n      \"properties\": {\n        \"data\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/GoogleSheetsValueRange\"\n          },\n          \"title\": \"Data\",\n          \"type\": \"array\"\n        },\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"data\"\n      ],\n      \"title\": \"GoogleSheetsBatchWriteArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsBatchWriteArgumentsUpdate\": {\n      \"description\": \"Arguments for batch updating values in multiple ranges\",\n      \"properties\": {\n        \"data\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/GoogleSheetsValueRange\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Data\"\n        },\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"GoogleSheetsBatchWriteArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsClearArguments\": {\n      \"description\": \"Arguments for clearing values from a spreadsheet\",\n      \"properties\": {\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"range\"\n      ],\n      \"title\": \"GoogleSheetsClearArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsClearArgumentsUpdate\": {\n      \"description\": \"Arguments for clearing values from a spreadsheet\",\n      \"properties\": {\n        \"range\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Range\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        }\n      },\n      \"title\": \"GoogleSheetsClearArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsIntegrationDef-Input\": {\n      \"description\": \"Google Sheets integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsReadArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsWriteArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsAppendArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsClearArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchReadArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchWriteArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"read_values\",\n                \"write_values\",\n                \"append_values\",\n                \"clear_values\",\n                \"batch_read\",\n                \"batch_write\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"google_sheets\",\n          \"default\": \"google_sheets\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"GoogleSheetsIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsIntegrationDef-Output\": {\n      \"description\": \"Google Sheets integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsReadArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsWriteArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsAppendArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsClearArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchReadArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchWriteArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"read_values\",\n                \"write_values\",\n                \"append_values\",\n                \"clear_values\",\n                \"batch_read\",\n                \"batch_write\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"google_sheets\",\n          \"default\": \"google_sheets\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"GoogleSheetsIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsIntegrationDefUpdate\": {\n      \"description\": \"Google Sheets integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsReadArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsWriteArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsAppendArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsClearArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchReadArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsBatchWriteArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"read_values\",\n                \"write_values\",\n                \"append_values\",\n                \"clear_values\",\n                \"batch_read\",\n                \"batch_write\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"google_sheets\",\n          \"default\": \"google_sheets\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"GoogleSheetsIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsReadArguments\": {\n      \"description\": \"Arguments for reading values from a spreadsheet\",\n      \"properties\": {\n        \"date_time_render_option\": {\n          \"default\": \"FORMATTED_STRING\",\n          \"enum\": [\n            \"SERIAL_NUMBER\",\n            \"FORMATTED_STRING\"\n          ],\n          \"title\": \"Date Time Render Option\",\n          \"type\": \"string\"\n        },\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_render_option\": {\n          \"default\": \"FORMATTED_VALUE\",\n          \"enum\": [\n            \"FORMATTED_VALUE\",\n            \"UNFORMATTED_VALUE\",\n            \"FORMULA\"\n          ],\n          \"title\": \"Value Render Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"range\"\n      ],\n      \"title\": \"GoogleSheetsReadArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsReadArgumentsUpdate\": {\n      \"description\": \"Arguments for reading values from a spreadsheet\",\n      \"properties\": {\n        \"date_time_render_option\": {\n          \"default\": \"FORMATTED_STRING\",\n          \"enum\": [\n            \"SERIAL_NUMBER\",\n            \"FORMATTED_STRING\"\n          ],\n          \"title\": \"Date Time Render Option\",\n          \"type\": \"string\"\n        },\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Range\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_render_option\": {\n          \"default\": \"FORMATTED_VALUE\",\n          \"enum\": [\n            \"FORMATTED_VALUE\",\n            \"UNFORMATTED_VALUE\",\n            \"FORMULA\"\n          ],\n          \"title\": \"Value Render Option\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"GoogleSheetsReadArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsSetup\": {\n      \"description\": \"Setup parameters for Google Sheets integration\",\n      \"properties\": {\n        \"default_retry_count\": {\n          \"default\": 3,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Default Retry Count\",\n          \"type\": \"integer\"\n        },\n        \"service_account_json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Service Account Json\"\n        },\n        \"use_julep_service\": {\n          \"title\": \"Use Julep Service\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"use_julep_service\"\n      ],\n      \"title\": \"GoogleSheetsSetup\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsSetupUpdate\": {\n      \"description\": \"Setup parameters for Google Sheets integration\",\n      \"properties\": {\n        \"default_retry_count\": {\n          \"default\": 3,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Default Retry Count\",\n          \"type\": \"integer\"\n        },\n        \"service_account_json\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Service Account Json\"\n        },\n        \"use_julep_service\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Use Julep Service\"\n        }\n      },\n      \"title\": \"GoogleSheetsSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsValueRange\": {\n      \"description\": \"Represents a range of values to write\",\n      \"properties\": {\n        \"major_dimension\": {\n          \"default\": \"ROWS\",\n          \"enum\": [\n            \"ROWS\",\n            \"COLUMNS\"\n          ],\n          \"title\": \"Major Dimension\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"items\": {\n            \"items\": {},\n            \"type\": \"array\"\n          },\n          \"title\": \"Values\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"range\",\n        \"values\"\n      ],\n      \"title\": \"GoogleSheetsValueRange\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsWriteArguments\": {\n      \"description\": \"Arguments for writing values to a spreadsheet\",\n      \"properties\": {\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"insert_data_option\": {\n          \"default\": \"OVERWRITE\",\n          \"enum\": [\n            \"OVERWRITE\",\n            \"INSERT_ROWS\"\n          ],\n          \"title\": \"Insert Data Option\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"title\": \"Range\",\n          \"type\": \"string\"\n        },\n        \"spreadsheet_id\": {\n          \"title\": \"Spreadsheet Id\",\n          \"type\": \"string\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"items\": {\n            \"items\": {},\n            \"type\": \"array\"\n          },\n          \"title\": \"Values\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"spreadsheet_id\",\n        \"range\",\n        \"values\"\n      ],\n      \"title\": \"GoogleSheetsWriteArguments\",\n      \"type\": \"object\"\n    },\n    \"GoogleSheetsWriteArgumentsUpdate\": {\n      \"description\": \"Arguments for writing values to a spreadsheet\",\n      \"properties\": {\n        \"include_values_in_response\": {\n          \"default\": false,\n          \"title\": \"Include Values In Response\",\n          \"type\": \"boolean\"\n        },\n        \"insert_data_option\": {\n          \"default\": \"OVERWRITE\",\n          \"enum\": [\n            \"OVERWRITE\",\n            \"INSERT_ROWS\"\n          ],\n          \"title\": \"Insert Data Option\",\n          \"type\": \"string\"\n        },\n        \"range\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Range\"\n        },\n        \"spreadsheet_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spreadsheet Id\"\n        },\n        \"value_input_option\": {\n          \"default\": \"USER_ENTERED\",\n          \"enum\": [\n            \"RAW\",\n            \"USER_ENTERED\"\n          ],\n          \"title\": \"Value Input Option\",\n          \"type\": \"string\"\n        },\n        \"values\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"items\": {},\n                \"type\": \"array\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Values\"\n        }\n      },\n      \"title\": \"GoogleSheetsWriteArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"HTTPValidationError\": {\n      \"properties\": {\n        \"detail\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ValidationError\"\n          },\n          \"title\": \"Detail\",\n          \"type\": \"array\"\n        }\n      },\n      \"title\": \"HTTPValidationError\",\n      \"type\": \"object\"\n    },\n    \"History\": {\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"entries\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Entry\"\n          },\n          \"title\": \"Entries\",\n          \"type\": \"array\"\n        },\n        \"relations\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Relation\"\n          },\n          \"title\": \"Relations\",\n          \"type\": \"array\"\n        },\n        \"session_id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Session Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"entries\",\n        \"relations\",\n        \"session_id\",\n        \"created_at\"\n      ],\n      \"title\": \"History\",\n      \"type\": \"object\"\n    },\n    \"HybridDocSearch\": {\n      \"properties\": {\n        \"alpha\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Alpha\",\n          \"type\": \"number\"\n        },\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"k_multiplier\": {\n          \"default\": 7,\n          \"minimum\": 0.0,\n          \"title\": \"K Multiplier\",\n          \"type\": \"integer\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"mode\": {\n          \"const\": \"hybrid\",\n          \"default\": \"hybrid\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"default\": 0.6,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Trigram Similarity Threshold\",\n          \"type\": \"number\"\n        }\n      },\n      \"title\": \"HybridDocSearch\",\n      \"type\": \"object\"\n    },\n    \"HybridDocSearchRequest\": {\n      \"properties\": {\n        \"alpha\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Alpha\",\n          \"type\": \"number\"\n        },\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"k_multiplier\": {\n          \"default\": 5,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"K Multiplier\",\n          \"type\": \"integer\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Trigram Similarity Threshold\"\n        },\n        \"vector\": {\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"title\": \"Vector\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"text\",\n        \"vector\"\n      ],\n      \"title\": \"HybridDocSearchRequest\",\n      \"type\": \"object\"\n    },\n    \"HybridDocSearchUpdate\": {\n      \"properties\": {\n        \"alpha\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Alpha\",\n          \"type\": \"number\"\n        },\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"k_multiplier\": {\n          \"default\": 7,\n          \"minimum\": 0.0,\n          \"title\": \"K Multiplier\",\n          \"type\": \"integer\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"mode\": {\n          \"const\": \"hybrid\",\n          \"default\": \"hybrid\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"default\": 0.6,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Trigram Similarity Threshold\",\n          \"type\": \"number\"\n        }\n      },\n      \"title\": \"HybridDocSearchUpdate\",\n      \"type\": \"object\"\n    },\n    \"IfElseWorkflowStep-Input\": {\n      \"properties\": {\n        \"else\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/IfElseWorkflowStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwitchStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/ForeachStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/ParallelStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/Else-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Else\"\n        },\n        \"if\": {\n          \"title\": \"If\",\n          \"type\": \"string\"\n        },\n        \"kind_\": {\n          \"const\": \"if_else\",\n          \"default\": \"if_else\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"then\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/IfElseWorkflowStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwitchStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/ForeachStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/ParallelStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/Then-Input\"\n            }\n          ],\n          \"title\": \"Then\"\n        }\n      },\n      \"required\": [\n        \"if\",\n        \"then\"\n      ],\n      \"title\": \"IfElseWorkflowStep\",\n      \"type\": \"object\"\n    },\n    \"IfElseWorkflowStep-Output\": {\n      \"properties\": {\n        \"else\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/IfElseWorkflowStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwitchStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/ForeachStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/ParallelStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/Else-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Else\"\n        },\n        \"if\": {\n          \"title\": \"If\",\n          \"type\": \"string\"\n        },\n        \"kind_\": {\n          \"const\": \"if_else\",\n          \"default\": \"if_else\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"then\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WaitForInputStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ReturnStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SleepStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/IfElseWorkflowStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/SwitchStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/ForeachStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/ParallelStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/Then-Output\"\n            }\n          ],\n          \"title\": \"Then\"\n        }\n      },\n      \"required\": [\n        \"if\",\n        \"then\"\n      ],\n      \"title\": \"IfElseWorkflowStep\",\n      \"type\": \"object\"\n    },\n    \"ImageUrl\": {\n      \"description\": \"The image URL\",\n      \"properties\": {\n        \"detail\": {\n          \"default\": \"auto\",\n          \"enum\": [\n            \"low\",\n            \"high\",\n            \"auto\"\n          ],\n          \"title\": \"Detail\",\n          \"type\": \"string\"\n        },\n        \"url\": {\n          \"title\": \"Url\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"url\"\n      ],\n      \"title\": \"ImageUrl\",\n      \"type\": \"object\"\n    },\n    \"JobStatus\": {\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"has_progress\": {\n          \"default\": false,\n          \"title\": \"Has Progress\",\n          \"type\": \"boolean\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"progress\": {\n          \"default\": 0,\n          \"maximum\": 100.0,\n          \"minimum\": 0.0,\n          \"title\": \"Progress\",\n          \"type\": \"number\"\n        },\n        \"reason\": {\n          \"default\": \"\",\n          \"title\": \"Reason\",\n          \"type\": \"string\"\n        },\n        \"state\": {\n          \"default\": \"pending\",\n          \"enum\": [\n            \"pending\",\n            \"in_progress\",\n            \"retrying\",\n            \"succeeded\",\n            \"aborted\",\n            \"failed\",\n            \"unknown\"\n          ],\n          \"title\": \"State\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\"\n      ],\n      \"title\": \"JobStatus\",\n      \"type\": \"object\"\n    },\n    \"ListModelsResponse\": {\n      \"description\": \"Response for the list models endpoint\",\n      \"properties\": {\n        \"models\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ModelInfo\"\n          },\n          \"title\": \"Models\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"models\"\n      ],\n      \"title\": \"ListModelsResponse\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Agent_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Agent\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Agent]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Doc_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Doc\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Doc]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Execution_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Execution\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Execution]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Project_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Project\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Project]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_ResourceDeletedResponse_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/ResourceDeletedResponse\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[ResourceDeletedResponse]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Session_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Session\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Session]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Task_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Task\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Task]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Tool_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Tool\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Tool]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_Transition_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Transition\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[Transition]\",\n      \"type\": \"object\"\n    },\n    \"ListResponse_User_\": {\n      \"properties\": {\n        \"items\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/User\"\n          },\n          \"title\": \"Items\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"items\"\n      ],\n      \"title\": \"ListResponse[User]\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseFetchArguments\": {\n      \"description\": \"Arguments for LlamaParse integration\",\n      \"properties\": {\n        \"base64\": {\n          \"default\": false,\n          \"title\": \"Base64\",\n          \"type\": \"boolean\"\n        },\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"File\"\n        },\n        \"filename\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Filename\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"required\": [\n        \"file\"\n      ],\n      \"title\": \"LlamaParseFetchArguments\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseFetchArgumentsUpdate\": {\n      \"description\": \"Arguments for LlamaParse integration\",\n      \"properties\": {\n        \"base64\": {\n          \"default\": false,\n          \"title\": \"Base64\",\n          \"type\": \"boolean\"\n        },\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        },\n        \"filename\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Filename\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"title\": \"LlamaParseFetchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseIntegrationDef\": {\n      \"description\": \"LlamaParse integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LlamaParseFetchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"llama_parse\",\n          \"default\": \"llama_parse\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LlamaParseSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"LlamaParseIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseIntegrationDefUpdate\": {\n      \"description\": \"LlamaParse integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LlamaParseFetchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"llama_parse\",\n          \"default\": \"llama_parse\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LlamaParseSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"LlamaParseIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseSetup\": {\n      \"description\": \"Setup parameters for LlamaParse integration\",\n      \"properties\": {\n        \"llamaparse_api_key\": {\n          \"title\": \"Llamaparse Api Key\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"required\": [\n        \"llamaparse_api_key\"\n      ],\n      \"title\": \"LlamaParseSetup\",\n      \"type\": \"object\"\n    },\n    \"LlamaParseSetupUpdate\": {\n      \"description\": \"Setup parameters for LlamaParse integration\",\n      \"properties\": {\n        \"llamaparse_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Llamaparse Api Key\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        }\n      },\n      \"title\": \"LlamaParseSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"LogProbResponse\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/TokenLogProb\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        }\n      },\n      \"required\": [\n        \"content\"\n      ],\n      \"title\": \"LogProbResponse\",\n      \"type\": \"object\"\n    },\n    \"LogStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"log\",\n          \"default\": \"log\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"log\": {\n          \"title\": \"Log\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"log\"\n      ],\n      \"title\": \"LogStep\",\n      \"type\": \"object\"\n    },\n    \"LogitBias\": {\n      \"maximum\": 100.0,\n      \"minimum\": -100.0,\n      \"title\": \"LogitBias\",\n      \"type\": \"number\"\n    },\n    \"MailgunIntegrationDef\": {\n      \"description\": \"Mailgun integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/MailgunSendEmailArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"const\": \"send_email\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"mailgun\",\n          \"default\": \"mailgun\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/MailgunSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"MailgunIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"MailgunIntegrationDefUpdate\": {\n      \"description\": \"Mailgun integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/MailgunSendEmailArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"const\": \"send_email\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"mailgun\",\n          \"default\": \"mailgun\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/MailgunSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"MailgunIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"MailgunSendEmailArguments\": {\n      \"description\": \"Arguments for mailgun.send_email method\",\n      \"properties\": {\n        \"bcc\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Bcc\"\n        },\n        \"body\": {\n          \"title\": \"Body\",\n          \"type\": \"string\"\n        },\n        \"cc\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cc\"\n        },\n        \"from\": {\n          \"title\": \"From\",\n          \"type\": \"string\"\n        },\n        \"subject\": {\n          \"title\": \"Subject\",\n          \"type\": \"string\"\n        },\n        \"to\": {\n          \"title\": \"To\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"to\",\n        \"from\",\n        \"subject\",\n        \"body\"\n      ],\n      \"title\": \"MailgunSendEmailArguments\",\n      \"type\": \"object\"\n    },\n    \"MailgunSendEmailArgumentsUpdate\": {\n      \"description\": \"Arguments for mailgun.send_email method\",\n      \"properties\": {\n        \"bcc\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Bcc\"\n        },\n        \"body\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Body\"\n        },\n        \"cc\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cc\"\n        },\n        \"from\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"From\"\n        },\n        \"subject\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Subject\"\n        },\n        \"to\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"To\"\n        }\n      },\n      \"title\": \"MailgunSendEmailArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"MailgunSetup\": {\n      \"description\": \"Setup parameters for Mailgun integration\",\n      \"properties\": {\n        \"api_key\": {\n          \"title\": \"Api Key\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"api_key\"\n      ],\n      \"title\": \"MailgunSetup\",\n      \"type\": \"object\"\n    },\n    \"MailgunSetupUpdate\": {\n      \"description\": \"Setup parameters for Mailgun integration\",\n      \"properties\": {\n        \"api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Api Key\"\n        }\n      },\n      \"title\": \"MailgunSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"Main-Input\": {\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Main\",\n      \"type\": \"object\"\n    },\n    \"Main-Output\": {\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Main\",\n      \"type\": \"object\"\n    },\n    \"McpCallToolArguments\": {\n      \"description\": \"Arguments to call a named tool on the MCP server\",\n      \"properties\": {\n        \"arguments\": {\n          \"default\": {},\n          \"title\": \"Arguments\",\n          \"type\": \"object\"\n        },\n        \"timeout_seconds\": {\n          \"default\": 60,\n          \"title\": \"Timeout Seconds\",\n          \"type\": \"integer\"\n        },\n        \"tool_name\": {\n          \"title\": \"Tool Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_name\"\n      ],\n      \"title\": \"McpCallToolArguments\",\n      \"type\": \"object\"\n    },\n    \"McpCallToolArgumentsUpdate\": {\n      \"description\": \"Arguments to call a named tool on the MCP server\",\n      \"properties\": {\n        \"arguments\": {\n          \"default\": {},\n          \"title\": \"Arguments\",\n          \"type\": \"object\"\n        },\n        \"timeout_seconds\": {\n          \"default\": 60,\n          \"title\": \"Timeout Seconds\",\n          \"type\": \"integer\"\n        },\n        \"tool_name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Name\"\n        }\n      },\n      \"title\": \"McpCallToolArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"McpIntegrationDef\": {\n      \"description\": \"MCP integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/McpCallToolArguments\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpListToolsArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"mcp\",\n          \"default\": \"mcp\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/McpSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"McpIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"McpIntegrationDefUpdate\": {\n      \"description\": \"MCP integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/McpCallToolArgumentsUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpListToolsArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"mcp\",\n          \"default\": \"mcp\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/McpSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"McpIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"McpListToolsArguments\": {\n      \"description\": \"Arguments to list available tools\",\n      \"properties\": {\n        \"dummy\": {\n          \"default\": \"dummy\",\n          \"title\": \"Dummy\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"McpListToolsArguments\",\n      \"type\": \"object\"\n    },\n    \"McpListToolsArgumentsUpdate\": {\n      \"description\": \"Arguments to list available tools\",\n      \"properties\": {\n        \"dummy\": {\n          \"default\": \"dummy\",\n          \"title\": \"Dummy\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"McpListToolsArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"McpSetup\": {\n      \"description\": \"Setup parameters for MCP integration\",\n      \"properties\": {\n        \"args\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Args\",\n          \"type\": \"array\"\n        },\n        \"command\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Command\"\n        },\n        \"cwd\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cwd\"\n        },\n        \"env\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"default\": {},\n          \"title\": \"Env\",\n          \"type\": \"object\"\n        },\n        \"http_headers\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"default\": {},\n          \"title\": \"Http Headers\",\n          \"type\": \"object\"\n        },\n        \"http_url\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uri\",\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Http Url\"\n        },\n        \"transport\": {\n          \"enum\": [\n            \"sse\",\n            \"http\"\n          ],\n          \"title\": \"Transport\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"transport\"\n      ],\n      \"title\": \"McpSetup\",\n      \"type\": \"object\"\n    },\n    \"McpSetupUpdate\": {\n      \"description\": \"Setup parameters for MCP integration\",\n      \"properties\": {\n        \"args\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Args\",\n          \"type\": \"array\"\n        },\n        \"command\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Command\"\n        },\n        \"cwd\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Cwd\"\n        },\n        \"env\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"default\": {},\n          \"title\": \"Env\",\n          \"type\": \"object\"\n        },\n        \"http_headers\": {\n          \"additionalProperties\": {\n            \"type\": \"string\"\n          },\n          \"default\": {},\n          \"title\": \"Http Headers\",\n          \"type\": \"object\"\n        },\n        \"http_url\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uri\",\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Http Url\"\n        },\n        \"transport\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"sse\",\n                \"http\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Transport\"\n        }\n      },\n      \"title\": \"McpSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"Message-Input\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__Content\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel7\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel-Input\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\"\n      ],\n      \"title\": \"Message\",\n      \"type\": \"object\"\n    },\n    \"Message-Output\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/Content-Output\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel7\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel-Output\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\"\n      ],\n      \"title\": \"Message\",\n      \"type\": \"object\"\n    },\n    \"MessageChatResponse\": {\n      \"properties\": {\n        \"choices\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/SingleChatOutput\"\n              },\n              {\n                \"$ref\": \"#/$defs/MultipleChatOutput\"\n              }\n            ]\n          },\n          \"title\": \"Choices\",\n          \"type\": \"array\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"docs\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/DocReference\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Docs\",\n          \"type\": \"array\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"jobs\": {\n          \"default\": [],\n          \"items\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Jobs\",\n          \"type\": \"array\"\n        },\n        \"usage\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/CompletionUsage\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"required\": [\n        \"created_at\",\n        \"id\",\n        \"choices\"\n      ],\n      \"title\": \"MessageChatResponse\",\n      \"type\": \"object\"\n    },\n    \"MessageModel\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Chat__ContentModel3\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel7\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel4\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"created_at\": {\n          \"anyOf\": [\n            {\n              \"format\": \"date-time\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Created At\"\n        },\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Id\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\"\n      ],\n      \"title\": \"MessageModel\",\n      \"type\": \"object\"\n    },\n    \"MetadataFilter\": {\n      \"additionalProperties\": true,\n      \"properties\": {},\n      \"title\": \"MetadataFilter\",\n      \"type\": \"object\"\n    },\n    \"ModelInfo\": {\n      \"description\": \"Model information returned by the model list endpoint\",\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\"\n      ],\n      \"title\": \"ModelInfo\",\n      \"type\": \"object\"\n    },\n    \"MultipleChatOutput\": {\n      \"description\": \"The output returned by the model. Note that, depending on the model provider, they might return more than one message.\",\n      \"properties\": {\n        \"finish_reason\": {\n          \"default\": \"stop\",\n          \"enum\": [\n            \"stop\",\n            \"length\",\n            \"content_filter\",\n            \"tool_calls\"\n          ],\n          \"title\": \"Finish Reason\",\n          \"type\": \"string\"\n        },\n        \"index\": {\n          \"title\": \"Index\",\n          \"type\": \"integer\"\n        },\n        \"logprobs\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LogProbResponse\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"messages\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/MessageModel\"\n          },\n          \"minItems\": 1,\n          \"readOnly\": true,\n          \"title\": \"Messages\",\n          \"type\": \"array\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"index\",\n        \"messages\"\n      ],\n      \"title\": \"MultipleChatOutput\",\n      \"type\": \"object\"\n    },\n    \"MultipleEmbedQueryRequest\": {\n      \"properties\": {\n        \"embed_instruction\": {\n          \"default\": \"\",\n          \"title\": \"Embed Instruction\",\n          \"type\": \"string\"\n        },\n        \"text\": {\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"maxItems\": 100,\n          \"minItems\": 1,\n          \"title\": \"Text\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"MultipleEmbedQueryRequest\",\n      \"type\": \"object\"\n    },\n    \"NamedToolChoice\": {\n      \"properties\": {\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionCallOption\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"NamedToolChoice\",\n      \"type\": \"object\"\n    },\n    \"ParallelStep-Input\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"parallel\",\n          \"default\": \"parallel\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"parallel\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/EvaluateStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ToolCallStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/PromptStep-Input\"\n              },\n              {\n                \"$ref\": \"#/$defs/GetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/LogStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/YieldStep\"\n              }\n            ]\n          },\n          \"maxItems\": 100,\n          \"title\": \"Parallel\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"parallel\"\n      ],\n      \"title\": \"ParallelStep\",\n      \"type\": \"object\"\n    },\n    \"ParallelStep-Output\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"parallel\",\n          \"default\": \"parallel\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"parallel\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/EvaluateStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ToolCallStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/PromptStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/GetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/LogStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/YieldStep\"\n              }\n            ]\n          },\n          \"maxItems\": 100,\n          \"title\": \"Parallel\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"parallel\"\n      ],\n      \"title\": \"ParallelStep\",\n      \"type\": \"object\"\n    },\n    \"ParameterSchema-Input\": {\n      \"description\": \"JSON Schema for API call parameters\",\n      \"properties\": {\n        \"additionalProperties\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Additionalproperties\"\n        },\n        \"properties\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/PropertyDefinition-Input\"\n          },\n          \"title\": \"Properties\",\n          \"type\": \"object\"\n        },\n        \"required\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Required\",\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"default\": \"object\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"properties\"\n      ],\n      \"title\": \"ParameterSchema\",\n      \"type\": \"object\"\n    },\n    \"ParameterSchema-Output\": {\n      \"description\": \"JSON Schema for API call parameters\",\n      \"properties\": {\n        \"additionalProperties\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Additionalproperties\"\n        },\n        \"properties\": {\n          \"additionalProperties\": {\n            \"$ref\": \"#/$defs/PropertyDefinition-Output\"\n          },\n          \"title\": \"Properties\",\n          \"type\": \"object\"\n        },\n        \"required\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Required\",\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"default\": \"object\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"properties\"\n      ],\n      \"title\": \"ParameterSchema\",\n      \"type\": \"object\"\n    },\n    \"ParameterSchemaUpdate\": {\n      \"description\": \"JSON Schema for API call parameters\",\n      \"properties\": {\n        \"additionalProperties\": {\n          \"anyOf\": [\n            {\n              \"type\": \"boolean\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Additionalproperties\"\n        },\n        \"properties\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"$ref\": \"#/$defs/PropertyDefinitionUpdate\"\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Properties\"\n        },\n        \"required\": {\n          \"default\": [],\n          \"items\": {\n            \"type\": \"string\"\n          },\n          \"title\": \"Required\",\n          \"type\": \"array\"\n        },\n        \"type\": {\n          \"default\": \"object\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"ParameterSchemaUpdate\",\n      \"type\": \"object\"\n    },\n    \"PatchAgentRequest\": {\n      \"description\": \"Payload for patching a agent\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"PatchAgentRequest\",\n      \"type\": \"object\"\n    },\n    \"PatchSessionRequest\": {\n      \"description\": \"Payload for patching a session\",\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearchUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearchUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearchUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        }\n      },\n      \"title\": \"PatchSessionRequest\",\n      \"type\": \"object\"\n    },\n    \"PatchToolRequest\": {\n      \"description\": \"Payload for patching a tool\",\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022DefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022DefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDefUpdate\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 40,\n              \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022DefUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"function\",\n                \"integration\",\n                \"system\",\n                \"api_call\",\n                \"computer_20241022\",\n                \"text_editor_20241022\",\n                \"bash_20241022\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Type\"\n        }\n      },\n      \"title\": \"PatchToolRequest\",\n      \"type\": \"object\"\n    },\n    \"PatchUserRequest\": {\n      \"description\": \"Payload for patching a user\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"PatchUserRequest\",\n      \"type\": \"object\"\n    },\n    \"Project\": {\n      \"description\": \"Project model\",\n      \"properties\": {\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\",\n        \"name\"\n      ],\n      \"title\": \"Project\",\n      \"type\": \"object\"\n    },\n    \"PromptItem-Input\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tasks__Content\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tasks__ContentModel\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ContentModel1-Input\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\",\n        \"content\"\n      ],\n      \"title\": \"PromptItem\",\n      \"type\": \"object\"\n    },\n    \"PromptItem-Output\": {\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/Content-Output\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tasks__ContentModel\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tasks__ContentModel1-Output\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        },\n        \"role\": {\n          \"enum\": [\n            \"user\",\n            \"assistant\",\n            \"system\",\n            \"tool\"\n          ],\n          \"title\": \"Role\",\n          \"type\": \"string\"\n        },\n        \"tool_call_id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Call Id\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"role\",\n        \"content\"\n      ],\n      \"title\": \"PromptItem\",\n      \"type\": \"object\"\n    },\n    \"PromptStep-Input\": {\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"disable_cache\": {\n          \"default\": false,\n          \"title\": \"Disable Cache\",\n          \"type\": \"boolean\"\n        },\n        \"kind_\": {\n          \"const\": \"prompt\",\n          \"default\": \"prompt\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"prompt\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/PromptItem-Input\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ],\n          \"title\": \"Prompt\"\n        },\n        \"settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Settings\"\n        },\n        \"tool_choice\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"auto\",\n                \"none\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedToolChoice\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Choice\"\n        },\n        \"tools\": {\n          \"anyOf\": [\n            {\n              \"const\": \"all\",\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ToolRef\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/agents_api__autogen__Tools__CreateToolRequest-Input\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": \"all\",\n          \"title\": \"Tools\"\n        },\n        \"unwrap\": {\n          \"default\": false,\n          \"title\": \"Unwrap\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"prompt\"\n      ],\n      \"title\": \"PromptStep\",\n      \"type\": \"object\"\n    },\n    \"PromptStep-Output\": {\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"disable_cache\": {\n          \"default\": false,\n          \"title\": \"Disable Cache\",\n          \"type\": \"boolean\"\n        },\n        \"kind_\": {\n          \"const\": \"prompt\",\n          \"default\": \"prompt\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"prompt\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/PromptItem-Output\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"string\"\n            }\n          ],\n          \"title\": \"Prompt\"\n        },\n        \"settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Settings\"\n        },\n        \"tool_choice\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"auto\",\n                \"none\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedToolChoice\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Choice\"\n        },\n        \"tools\": {\n          \"anyOf\": [\n            {\n              \"const\": \"all\",\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ToolRef\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/CreateToolRequest-Output\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": \"all\",\n          \"title\": \"Tools\"\n        },\n        \"unwrap\": {\n          \"default\": false,\n          \"title\": \"Unwrap\",\n          \"type\": \"boolean\"\n        }\n      },\n      \"required\": [\n        \"prompt\"\n      ],\n      \"title\": \"PromptStep\",\n      \"type\": \"object\"\n    },\n    \"PropertyDefinition-Input\": {\n      \"description\": \"Property definition for parameter schema\",\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"enum\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Enum\"\n        },\n        \"items\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/PropertyDefinition-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"title\": \"PropertyDefinition\",\n      \"type\": \"object\"\n    },\n    \"PropertyDefinition-Output\": {\n      \"description\": \"Property definition for parameter schema\",\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"enum\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Enum\"\n        },\n        \"items\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/PropertyDefinition-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\"\n      ],\n      \"title\": \"PropertyDefinition\",\n      \"type\": \"object\"\n    },\n    \"PropertyDefinitionUpdate\": {\n      \"description\": \"Property definition for parameter schema\",\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"enum\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Enum\"\n        },\n        \"items\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/PropertyDefinitionUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Type\"\n        }\n      },\n      \"title\": \"PropertyDefinitionUpdate\",\n      \"type\": \"object\"\n    },\n    \"Relation\": {\n      \"properties\": {\n        \"head\": {\n          \"format\": \"uuid\",\n          \"title\": \"Head\",\n          \"type\": \"string\"\n        },\n        \"relation\": {\n          \"title\": \"Relation\",\n          \"type\": \"string\"\n        },\n        \"tail\": {\n          \"format\": \"uuid\",\n          \"title\": \"Tail\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"head\",\n        \"relation\",\n        \"tail\"\n      ],\n      \"title\": \"Relation\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserArguments\": {\n      \"description\": \"The arguments for the remote browser\",\n      \"properties\": {\n        \"action\": {\n          \"enum\": [\n            \"key\",\n            \"type\",\n            \"mouse_move\",\n            \"left_click\",\n            \"left_click_drag\",\n            \"right_click\",\n            \"middle_click\",\n            \"double_click\",\n            \"screenshot\",\n            \"cursor_position\",\n            \"navigate\",\n            \"refresh\"\n          ],\n          \"title\": \"Action\",\n          \"type\": \"string\"\n        },\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"coordinate\": {\n          \"anyOf\": [\n            {\n              \"items\": {},\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Coordinate\"\n        },\n        \"text\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Text\"\n        }\n      },\n      \"required\": [\n        \"action\"\n      ],\n      \"title\": \"RemoteBrowserArguments\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserArgumentsUpdate\": {\n      \"description\": \"The arguments for the remote browser\",\n      \"properties\": {\n        \"action\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"key\",\n                \"type\",\n                \"mouse_move\",\n                \"left_click\",\n                \"left_click_drag\",\n                \"right_click\",\n                \"middle_click\",\n                \"double_click\",\n                \"screenshot\",\n                \"cursor_position\",\n                \"navigate\",\n                \"refresh\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Action\"\n        },\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"coordinate\": {\n          \"anyOf\": [\n            {\n              \"items\": {},\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Coordinate\"\n        },\n        \"text\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Text\"\n        }\n      },\n      \"title\": \"RemoteBrowserArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserIntegrationDef\": {\n      \"description\": \"The integration definition for the remote browser\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"perform_action\",\n          \"default\": \"perform_action\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"remote_browser\",\n          \"default\": \"remote_browser\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"$ref\": \"#/$defs/RemoteBrowserSetup\"\n        }\n      },\n      \"required\": [\n        \"setup\"\n      ],\n      \"title\": \"RemoteBrowserIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserIntegrationDefUpdate\": {\n      \"description\": \"The integration definition for the remote browser\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"const\": \"perform_action\",\n          \"default\": \"perform_action\",\n          \"title\": \"Method\",\n          \"type\": \"string\"\n        },\n        \"provider\": {\n          \"const\": \"remote_browser\",\n          \"default\": \"remote_browser\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"RemoteBrowserIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"RemoteBrowserSetup\": {\n      \"description\": \"The setup parameters for the remote browser\",\n      \"properties\": {\n        \"connect_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Connect Url\"\n        },\n        \"height\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Height\"\n        },\n        \"width\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Width\"\n        }\n      },\n      \"title\": \"RemoteBrowserSetup\",\n      \"type\": \"object\"\n    },\n    \"RenderResponse\": {\n      \"properties\": {\n        \"docs\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/DocReference\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Docs\",\n          \"type\": \"array\"\n        },\n        \"messages\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/Message-Output\"\n          },\n          \"minItems\": 1,\n          \"title\": \"Messages\",\n          \"type\": \"array\"\n        },\n        \"tool_choice\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"auto\",\n                \"none\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"$ref\": \"#/$defs/NamedToolChoice\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Choice\"\n        },\n        \"tools\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/CreateToolRequest-Output\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tools\"\n        }\n      },\n      \"required\": [\n        \"messages\"\n      ],\n      \"title\": \"RenderResponse\",\n      \"type\": \"object\"\n    },\n    \"ResourceDeletedResponse\": {\n      \"properties\": {\n        \"deleted_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Deleted At\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"jobs\": {\n          \"default\": [],\n          \"items\": {\n            \"format\": \"uuid\",\n            \"type\": \"string\"\n          },\n          \"readOnly\": true,\n          \"title\": \"Jobs\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"deleted_at\"\n      ],\n      \"title\": \"ResourceDeletedResponse\",\n      \"type\": \"object\"\n    },\n    \"ResumeExecutionRequest\": {\n      \"properties\": {\n        \"input\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Input\"\n        },\n        \"status\": {\n          \"const\": \"running\",\n          \"default\": \"running\",\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"ResumeExecutionRequest\",\n      \"type\": \"object\"\n    },\n    \"ReturnStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"return\",\n          \"default\": \"return\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"return\": {\n          \"additionalProperties\": {\n            \"anyOf\": [\n              {\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"array\"\n              },\n              {\n                \"additionalProperties\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"object\"\n              },\n              {\n                \"items\": {\n                  \"additionalProperties\": {\n                    \"type\": \"string\"\n                  },\n                  \"type\": \"object\"\n                },\n                \"type\": \"array\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"title\": \"Return\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"return\"\n      ],\n      \"title\": \"ReturnStep\",\n      \"type\": \"object\"\n    },\n    \"SchemaCompletionResponseFormat\": {\n      \"properties\": {\n        \"json_schema\": {\n          \"title\": \"Json Schema\",\n          \"type\": \"object\"\n        },\n        \"type\": {\n          \"const\": \"json_schema\",\n          \"default\": \"json_schema\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"json_schema\"\n      ],\n      \"title\": \"SchemaCompletionResponseFormat\",\n      \"type\": \"object\"\n    },\n    \"Secret\": {\n      \"description\": \"A secret that can be used in tasks and sessions\",\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"title\": \"Value\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\",\n        \"name\",\n        \"value\"\n      ],\n      \"title\": \"Secret\",\n      \"type\": \"object\"\n    },\n    \"SecretRef\": {\n      \"properties\": {\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"SecretRef\",\n      \"type\": \"object\"\n    },\n    \"SecretRefUpdate\": {\n      \"properties\": {\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        }\n      },\n      \"title\": \"SecretRefUpdate\",\n      \"type\": \"object\"\n    },\n    \"Session\": {\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"kind\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Kind\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearch\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"summary\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Summary\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\"\n      ],\n      \"title\": \"Session\",\n      \"type\": \"object\"\n    },\n    \"SetStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"set\",\n          \"default\": \"set\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"set\": {\n          \"additionalProperties\": {\n            \"anyOf\": [\n              {\n                \"type\": \"object\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"title\": \"Set\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"set\"\n      ],\n      \"title\": \"SetStep\",\n      \"type\": \"object\"\n    },\n    \"SimpleCompletionResponseFormat\": {\n      \"properties\": {\n        \"type\": {\n          \"default\": \"text\",\n          \"enum\": [\n            \"text\",\n            \"json_object\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"SimpleCompletionResponseFormat\",\n      \"type\": \"object\"\n    },\n    \"SingleChatOutput\": {\n      \"description\": \"The output returned by the model. Note that, depending on the model provider, they might return more than one message.\",\n      \"properties\": {\n        \"finish_reason\": {\n          \"default\": \"stop\",\n          \"enum\": [\n            \"stop\",\n            \"length\",\n            \"content_filter\",\n            \"tool_calls\"\n          ],\n          \"title\": \"Finish Reason\",\n          \"type\": \"string\"\n        },\n        \"index\": {\n          \"title\": \"Index\",\n          \"type\": \"integer\"\n        },\n        \"logprobs\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/LogProbResponse\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"message\": {\n          \"$ref\": \"#/$defs/MessageModel\"\n        },\n        \"tool_calls\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"anyOf\": [\n                  {\n                    \"$ref\": \"#/$defs/ChosenFunctionCall\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenComputer20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenTextEditor20241022\"\n                  },\n                  {\n                    \"$ref\": \"#/$defs/ChosenBash20241022\"\n                  }\n                ]\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Tool Calls\"\n        }\n      },\n      \"required\": [\n        \"index\",\n        \"message\"\n      ],\n      \"title\": \"SingleChatOutput\",\n      \"type\": \"object\"\n    },\n    \"SingleEmbedQueryRequest\": {\n      \"properties\": {\n        \"embed_instruction\": {\n          \"default\": \"\",\n          \"title\": \"Embed Instruction\",\n          \"type\": \"string\"\n        },\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"SingleEmbedQueryRequest\",\n      \"type\": \"object\"\n    },\n    \"SleepFor\": {\n      \"properties\": {\n        \"days\": {\n          \"default\": 0,\n          \"maximum\": 30.0,\n          \"minimum\": 0.0,\n          \"title\": \"Days\",\n          \"type\": \"integer\"\n        },\n        \"hours\": {\n          \"default\": 0,\n          \"maximum\": 24.0,\n          \"minimum\": 0.0,\n          \"title\": \"Hours\",\n          \"type\": \"integer\"\n        },\n        \"minutes\": {\n          \"default\": 0,\n          \"maximum\": 60.0,\n          \"minimum\": 0.0,\n          \"title\": \"Minutes\",\n          \"type\": \"integer\"\n        },\n        \"seconds\": {\n          \"default\": 0,\n          \"maximum\": 60.0,\n          \"minimum\": 0.0,\n          \"title\": \"Seconds\",\n          \"type\": \"integer\"\n        }\n      },\n      \"title\": \"SleepFor\",\n      \"type\": \"object\"\n    },\n    \"SleepStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"sleep\",\n          \"default\": \"sleep\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"sleep\": {\n          \"$ref\": \"#/$defs/SleepFor\"\n        }\n      },\n      \"required\": [\n        \"sleep\"\n      ],\n      \"title\": \"SleepStep\",\n      \"type\": \"object\"\n    },\n    \"Snippet\": {\n      \"properties\": {\n        \"content\": {\n          \"title\": \"Content\",\n          \"type\": \"string\"\n        },\n        \"embedding\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"number\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Embedding\"\n        },\n        \"index\": {\n          \"title\": \"Index\",\n          \"type\": \"integer\"\n        }\n      },\n      \"required\": [\n        \"index\",\n        \"content\"\n      ],\n      \"title\": \"Snippet\",\n      \"type\": \"object\"\n    },\n    \"Source\": {\n      \"properties\": {\n        \"data\": {\n          \"title\": \"Data\",\n          \"type\": \"string\"\n        },\n        \"media_type\": {\n          \"title\": \"Media Type\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"base64\",\n          \"default\": \"base64\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"media_type\",\n        \"data\"\n      ],\n      \"title\": \"Source\",\n      \"type\": \"object\"\n    },\n    \"SpiderFetchArguments\": {\n      \"description\": \"Arguments for Spider integration\",\n      \"properties\": {\n        \"content_type\": {\n          \"default\": \"application/json\",\n          \"enum\": [\n            \"application/json\",\n            \"text/csv\",\n            \"application/xml\",\n            \"application/jsonl\"\n          ],\n          \"title\": \"Content Type\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"url\": {\n          \"format\": \"uri\",\n          \"minLength\": 1,\n          \"title\": \"Url\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"url\"\n      ],\n      \"title\": \"SpiderFetchArguments\",\n      \"type\": \"object\"\n    },\n    \"SpiderFetchArgumentsUpdate\": {\n      \"description\": \"Arguments for Spider integration\",\n      \"properties\": {\n        \"content_type\": {\n          \"default\": \"application/json\",\n          \"enum\": [\n            \"application/json\",\n            \"text/csv\",\n            \"application/xml\",\n            \"application/jsonl\"\n          ],\n          \"title\": \"Content Type\",\n          \"type\": \"string\"\n        },\n        \"params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Params\"\n        },\n        \"url\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uri\",\n              \"minLength\": 1,\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Url\"\n        }\n      },\n      \"title\": \"SpiderFetchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"SpiderIntegrationDef\": {\n      \"description\": \"Spider integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SpiderFetchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"crawl\",\n                \"links\",\n                \"screenshot\",\n                \"search\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"spider\",\n          \"default\": \"spider\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SpiderSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"SpiderIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"SpiderIntegrationDefUpdate\": {\n      \"description\": \"Spider integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SpiderFetchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"crawl\",\n                \"links\",\n                \"screenshot\",\n                \"search\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"spider\",\n          \"default\": \"spider\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SpiderSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"SpiderIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"SpiderSetup\": {\n      \"description\": \"Setup parameters for Spider integration\",\n      \"properties\": {\n        \"spider_api_key\": {\n          \"title\": \"Spider Api Key\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"spider_api_key\"\n      ],\n      \"title\": \"SpiderSetup\",\n      \"type\": \"object\"\n    },\n    \"SpiderSetupUpdate\": {\n      \"description\": \"Setup parameters for Spider integration\",\n      \"properties\": {\n        \"spider_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Spider Api Key\"\n        }\n      },\n      \"title\": \"SpiderSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"StopExecutionRequest\": {\n      \"properties\": {\n        \"reason\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reason\"\n        },\n        \"status\": {\n          \"const\": \"cancelled\",\n          \"default\": \"cancelled\",\n          \"title\": \"Status\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"StopExecutionRequest\",\n      \"type\": \"object\"\n    },\n    \"SwitchStep-Input\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"switch\",\n          \"default\": \"switch\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"switch\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CaseThen-Input\"\n          },\n          \"minItems\": 1,\n          \"title\": \"Switch\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"switch\"\n      ],\n      \"title\": \"SwitchStep\",\n      \"type\": \"object\"\n    },\n    \"SwitchStep-Output\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"switch\",\n          \"default\": \"switch\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"switch\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/CaseThen-Output\"\n          },\n          \"minItems\": 1,\n          \"title\": \"Switch\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"switch\"\n      ],\n      \"title\": \"SwitchStep\",\n      \"type\": \"object\"\n    },\n    \"SystemDef\": {\n      \"description\": \"System definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"operation\": {\n          \"enum\": [\n            \"create\",\n            \"update\",\n            \"patch\",\n            \"create_or_update\",\n            \"embed\",\n            \"change_status\",\n            \"search\",\n            \"chat\",\n            \"history\",\n            \"delete\",\n            \"get\",\n            \"list\"\n          ],\n          \"title\": \"Operation\",\n          \"type\": \"string\"\n        },\n        \"resource\": {\n          \"enum\": [\n            \"agent\",\n            \"user\",\n            \"task\",\n            \"execution\",\n            \"doc\",\n            \"session\",\n            \"job\"\n          ],\n          \"title\": \"Resource\",\n          \"type\": \"string\"\n        },\n        \"resource_id\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Resource Id\"\n        },\n        \"subresource\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"tool\",\n                \"doc\",\n                \"execution\",\n                \"transition\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Subresource\"\n        }\n      },\n      \"required\": [\n        \"resource\",\n        \"operation\"\n      ],\n      \"title\": \"SystemDef\",\n      \"type\": \"object\"\n    },\n    \"SystemDefUpdate\": {\n      \"description\": \"System definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Arguments\"\n        },\n        \"operation\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"create\",\n                \"update\",\n                \"patch\",\n                \"create_or_update\",\n                \"embed\",\n                \"change_status\",\n                \"search\",\n                \"chat\",\n                \"history\",\n                \"delete\",\n                \"get\",\n                \"list\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Operation\"\n        },\n        \"resource\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"agent\",\n                \"user\",\n                \"task\",\n                \"execution\",\n                \"doc\",\n                \"session\",\n                \"job\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Resource\"\n        },\n        \"resource_id\": {\n          \"anyOf\": [\n            {\n              \"format\": \"uuid\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Resource Id\"\n        },\n        \"subresource\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"tool\",\n                \"doc\",\n                \"execution\",\n                \"transition\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Subresource\"\n        }\n      },\n      \"title\": \"SystemDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"Task\": {\n      \"additionalProperties\": true,\n      \"properties\": {\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"default\": \"\",\n          \"title\": \"Description\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"inherit_tools\": {\n          \"default\": false,\n          \"title\": \"Inherit Tools\",\n          \"type\": \"boolean\"\n        },\n        \"input_schema\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Input Schema\"\n        },\n        \"main\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"$ref\": \"#/$defs/EvaluateStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ToolCallStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/PromptStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/GetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SetStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/LogStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/YieldStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ReturnStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/SleepStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/WaitForInputStep\"\n              },\n              {\n                \"$ref\": \"#/$defs/IfElseWorkflowStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/SwitchStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/ForeachStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/ParallelStep-Output\"\n              },\n              {\n                \"$ref\": \"#/$defs/Main-Output\"\n              }\n            ]\n          },\n          \"minItems\": 1,\n          \"title\": \"Main\",\n          \"type\": \"array\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"tools\": {\n          \"default\": [],\n          \"items\": {\n            \"$ref\": \"#/$defs/TaskTool-Output\"\n          },\n          \"title\": \"Tools\",\n          \"type\": \"array\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"main\",\n        \"id\",\n        \"created_at\",\n        \"updated_at\"\n      ],\n      \"title\": \"Task\",\n      \"type\": \"object\"\n    },\n    \"TaskTool-Input\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"inherited\": {\n          \"default\": false,\n          \"readOnly\": true,\n          \"title\": \"Inherited\",\n          \"type\": \"boolean\"\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"TaskTool\",\n      \"type\": \"object\"\n    },\n    \"TaskTool-Output\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"inherited\": {\n          \"default\": false,\n          \"readOnly\": true,\n          \"title\": \"Inherited\",\n          \"type\": \"boolean\"\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"TaskTool\",\n      \"type\": \"object\"\n    },\n    \"TextEditor20241022Def\": {\n      \"properties\": {\n        \"name\": {\n          \"default\": \"str_replace_editor\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text_editor_20241022\",\n          \"default\": \"text_editor_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"TextEditor20241022Def\",\n      \"type\": \"object\"\n    },\n    \"TextEditor20241022DefUpdate\": {\n      \"properties\": {\n        \"name\": {\n          \"default\": \"str_replace_editor\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text_editor_20241022\",\n          \"default\": \"text_editor_20241022\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"title\": \"TextEditor20241022DefUpdate\",\n      \"type\": \"object\"\n    },\n    \"TextOnlyDocSearch\": {\n      \"properties\": {\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mode\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"default\": 0.6,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Trigram Similarity Threshold\",\n          \"type\": \"number\"\n        }\n      },\n      \"title\": \"TextOnlyDocSearch\",\n      \"type\": \"object\"\n    },\n    \"TextOnlyDocSearchRequest\": {\n      \"properties\": {\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 1.0,\n              \"minimum\": 0.0,\n              \"type\": \"number\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Trigram Similarity Threshold\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"TextOnlyDocSearchRequest\",\n      \"type\": \"object\"\n    },\n    \"TextOnlyDocSearchUpdate\": {\n      \"properties\": {\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mode\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        },\n        \"trigram_similarity_threshold\": {\n          \"default\": 0.6,\n          \"maximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Trigram Similarity Threshold\",\n          \"type\": \"number\"\n        }\n      },\n      \"title\": \"TextOnlyDocSearchUpdate\",\n      \"type\": \"object\"\n    },\n    \"Then-Input\": {\n      \"description\": \"The steps to run if the condition is true\",\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Input\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Then\",\n      \"type\": \"object\"\n    },\n    \"Then-Output\": {\n      \"description\": \"The steps to run if the condition is true\",\n      \"properties\": {\n        \"initial\": {\n          \"default\": [],\n          \"title\": \"Initial\"\n        },\n        \"kind_\": {\n          \"const\": \"map_reduce\",\n          \"default\": \"map_reduce\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"map\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/EvaluateStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolCallStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/PromptStep-Output\"\n            },\n            {\n              \"$ref\": \"#/$defs/GetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/SetStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/LogStep\"\n            },\n            {\n              \"$ref\": \"#/$defs/YieldStep\"\n            }\n          ],\n          \"title\": \"Map\"\n        },\n        \"over\": {\n          \"title\": \"Over\",\n          \"type\": \"string\"\n        },\n        \"parallelism\": {\n          \"anyOf\": [\n            {\n              \"maximum\": 100.0,\n              \"minimum\": 1.0,\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Parallelism\"\n        },\n        \"reduce\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Reduce\"\n        }\n      },\n      \"required\": [\n        \"over\",\n        \"map\"\n      ],\n      \"title\": \"Then\",\n      \"type\": \"object\"\n    },\n    \"TokenLogProb\": {\n      \"properties\": {\n        \"bytes\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"type\": \"integer\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Bytes\"\n        },\n        \"logprob\": {\n          \"title\": \"Logprob\",\n          \"type\": \"number\"\n        },\n        \"token\": {\n          \"title\": \"Token\",\n          \"type\": \"string\"\n        },\n        \"top_logprobs\": {\n          \"items\": {\n            \"$ref\": \"#/$defs/BaseTokenLogProb\"\n          },\n          \"minItems\": 1,\n          \"readOnly\": true,\n          \"title\": \"Top Logprobs\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"token\",\n        \"logprob\",\n        \"top_logprobs\"\n      ],\n      \"title\": \"TokenLogProb\",\n      \"type\": \"object\"\n    },\n    \"Tool\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Output\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\",\n        \"created_at\",\n        \"updated_at\",\n        \"id\"\n      ],\n      \"title\": \"Tool\",\n      \"type\": \"object\"\n    },\n    \"ToolCallStep\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"const\": \"_\",\n              \"type\": \"string\"\n            }\n          ],\n          \"default\": \"_\",\n          \"title\": \"Arguments\"\n        },\n        \"kind_\": {\n          \"const\": \"tool_call\",\n          \"default\": \"tool_call\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"tool\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Tool\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool\"\n      ],\n      \"title\": \"ToolCallStep\",\n      \"type\": \"object\"\n    },\n    \"ToolRef\": {\n      \"description\": \"Reference to a tool\",\n      \"properties\": {\n        \"ref\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ToolRefById\"\n            },\n            {\n              \"$ref\": \"#/$defs/ToolRefByName\"\n            }\n          ],\n          \"title\": \"Ref\"\n        }\n      },\n      \"required\": [\n        \"ref\"\n      ],\n      \"title\": \"ToolRef\",\n      \"type\": \"object\"\n    },\n    \"ToolRefById\": {\n      \"description\": \"Reference to a tool by id\",\n      \"properties\": {\n        \"id\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Id\"\n        }\n      },\n      \"title\": \"ToolRefById\",\n      \"type\": \"object\"\n    },\n    \"ToolRefByName\": {\n      \"description\": \"Reference to a tool by name\",\n      \"properties\": {\n        \"name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 40,\n              \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Name\"\n        }\n      },\n      \"title\": \"ToolRefByName\",\n      \"type\": \"object\"\n    },\n    \"ToolResponse\": {\n      \"properties\": {\n        \"id\": {\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"output\": {\n          \"title\": \"Output\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"output\"\n      ],\n      \"title\": \"ToolResponse\",\n      \"type\": \"object\"\n    },\n    \"Transition\": {\n      \"properties\": {\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"current\": {\n          \"$ref\": \"#/$defs/TransitionTarget\",\n          \"readOnly\": true\n        },\n        \"execution_id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Execution Id\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"next\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TransitionTarget\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true\n        },\n        \"output\": {\n          \"readOnly\": true,\n          \"title\": \"Output\"\n        },\n        \"step_label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"readOnly\": true,\n          \"title\": \"Step Label\"\n        },\n        \"type\": {\n          \"enum\": [\n            \"init\",\n            \"init_branch\",\n            \"finish\",\n            \"finish_branch\",\n            \"wait\",\n            \"resume\",\n            \"error\",\n            \"step\",\n            \"cancelled\"\n          ],\n          \"readOnly\": true,\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"type\",\n        \"output\",\n        \"created_at\",\n        \"updated_at\",\n        \"execution_id\",\n        \"current\",\n        \"next\",\n        \"id\"\n      ],\n      \"title\": \"Transition\",\n      \"type\": \"object\"\n    },\n    \"TransitionTarget\": {\n      \"properties\": {\n        \"scope_id\": {\n          \"format\": \"uuid\",\n          \"title\": \"Scope Id\",\n          \"type\": \"string\"\n        },\n        \"step\": {\n          \"title\": \"Step\",\n          \"type\": \"integer\"\n        },\n        \"workflow\": {\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Workflow\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"workflow\",\n        \"step\",\n        \"scope_id\"\n      ],\n      \"title\": \"TransitionTarget\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredIntegrationDef\": {\n      \"description\": \"Unstructured integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/UnstructuredPartitionArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"unstructured\",\n          \"default\": \"unstructured\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/UnstructuredSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"UnstructuredIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredIntegrationDefUpdate\": {\n      \"description\": \"Unstructured integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/UnstructuredPartitionArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"unstructured\",\n          \"default\": \"unstructured\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/UnstructuredSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"UnstructuredIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredPartitionArguments\": {\n      \"description\": \"Arguments for Unstructured partition integration\",\n      \"properties\": {\n        \"file\": {\n          \"title\": \"File\",\n          \"type\": \"string\"\n        },\n        \"filename\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Filename\"\n        },\n        \"partition_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Partition Params\"\n        }\n      },\n      \"required\": [\n        \"file\"\n      ],\n      \"title\": \"UnstructuredPartitionArguments\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredPartitionArgumentsUpdate\": {\n      \"description\": \"Arguments for Unstructured partition integration\",\n      \"properties\": {\n        \"file\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"File\"\n        },\n        \"filename\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Filename\"\n        },\n        \"partition_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Partition Params\"\n        }\n      },\n      \"title\": \"UnstructuredPartitionArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredSetup\": {\n      \"description\": \"Setup parameters for Unstructured integration\",\n      \"properties\": {\n        \"retry_config\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Retry Config\"\n        },\n        \"server\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Server\"\n        },\n        \"server_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Server Url\"\n        },\n        \"timeout_ms\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout Ms\"\n        },\n        \"unstructured_api_key\": {\n          \"title\": \"Unstructured Api Key\",\n          \"type\": \"string\"\n        },\n        \"url_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Url Params\"\n        }\n      },\n      \"required\": [\n        \"unstructured_api_key\"\n      ],\n      \"title\": \"UnstructuredSetup\",\n      \"type\": \"object\"\n    },\n    \"UnstructuredSetupUpdate\": {\n      \"description\": \"Setup parameters for Unstructured integration\",\n      \"properties\": {\n        \"retry_config\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Retry Config\"\n        },\n        \"server\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Server\"\n        },\n        \"server_url\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Server Url\"\n        },\n        \"timeout_ms\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Timeout Ms\"\n        },\n        \"unstructured_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Unstructured Api Key\"\n        },\n        \"url_params\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Url Params\"\n        }\n      },\n      \"title\": \"UnstructuredSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"UpdateAgentRequest\": {\n      \"description\": \"Payload for updating a agent\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"canonical_name\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Canonical Name\"\n        },\n        \"default_settings\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Default Settings\"\n        },\n        \"default_system_template\": {\n          \"default\": \"{%- if agent.name -%}\\nYou are {{agent.name}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if agent.about -%}\\nAbout you: {{agent.about}}.{{\\\" \\\"}}\\n{%- endif -%}\\n\\n{%- if user -%}\\nYou are talking to a user\\n  {%- if user.name -%}{{\\\" \\\"}} and their name is {{user.name}}\\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\\n  {%- endif -%}\\n{%- endif -%}\\n\\n{{NEWLINE}}\\n\\n{%- if session.situation -%}\\nSituation: {{session.situation}}\\n{%- endif -%}\\n\\n{{NEWLINE+NEWLINE}}\\n\\n{%- if agent.instructions -%}\\nInstructions:{{NEWLINE}}\\n  {%- if agent.instructions is string -%}\\n    {{agent.instructions}}{{NEWLINE}}\\n  {%- else -%}\\n    {%- for instruction in agent.instructions -%}\\n      - {{instruction}}{{NEWLINE}}\\n    {%- endfor -%}\\n  {%- endif -%}\\n  {{NEWLINE}}\\n{%- endif -%}\\n\\n{%- if docs -%}\\nRelevant documents:{{NEWLINE}}\\n  {%- for doc in docs -%}\\n    {{doc.title}}{{NEWLINE}}\\n    {%- if doc.content is string -%}\\n      {{doc.content}}{{NEWLINE}}\\n    {%- else -%}\\n      {%- for snippet in doc.content -%}\\n        {{snippet}}{{NEWLINE}}\\n      {%- endfor -%}\\n    {%- endif -%}\\n    {{\\\"---\\\"}}\\n  {%- endfor -%}\\n{%- endif -%}\",\n          \"title\": \"Default System Template\",\n          \"type\": \"string\"\n        },\n        \"instructions\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"items\": {\n                \"type\": \"string\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"default\": [],\n          \"title\": \"Instructions\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"model\": {\n          \"default\": \"\",\n          \"title\": \"Model\",\n          \"type\": \"string\"\n        },\n        \"name\": {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"required\": [\n        \"name\"\n      ],\n      \"title\": \"UpdateAgentRequest\",\n      \"type\": \"object\"\n    },\n    \"UpdateSecretRequest\": {\n      \"properties\": {\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"value\": {\n          \"title\": \"Value\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"value\"\n      ],\n      \"title\": \"UpdateSecretRequest\",\n      \"type\": \"object\"\n    },\n    \"UpdateSessionRequest\": {\n      \"description\": \"Payload for updating a session\",\n      \"properties\": {\n        \"auto_run_tools\": {\n          \"default\": false,\n          \"title\": \"Auto Run Tools\",\n          \"type\": \"boolean\"\n        },\n        \"context_overflow\": {\n          \"anyOf\": [\n            {\n              \"enum\": [\n                \"truncate\",\n                \"adaptive\"\n              ],\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Context Overflow\"\n        },\n        \"forward_tool_calls\": {\n          \"default\": false,\n          \"title\": \"Forward Tool Calls\",\n          \"type\": \"boolean\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"recall_options\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/VectorDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/TextOnlyDocSearch\"\n            },\n            {\n              \"$ref\": \"#/$defs/HybridDocSearch\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Recall Options\"\n        },\n        \"render_templates\": {\n          \"default\": true,\n          \"title\": \"Render Templates\",\n          \"type\": \"boolean\"\n        },\n        \"situation\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Situation\"\n        },\n        \"system_template\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"System Template\"\n        },\n        \"token_budget\": {\n          \"anyOf\": [\n            {\n              \"type\": \"integer\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Token Budget\"\n        }\n      },\n      \"title\": \"UpdateSessionRequest\",\n      \"type\": \"object\"\n    },\n    \"UpdateToolRequest\": {\n      \"description\": \"Payload for updating a tool\",\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"UpdateToolRequest\",\n      \"type\": \"object\"\n    },\n    \"UpdateUserRequest\": {\n      \"description\": \"Payload for updating a user\",\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        }\n      },\n      \"title\": \"UpdateUserRequest\",\n      \"type\": \"object\"\n    },\n    \"User\": {\n      \"properties\": {\n        \"about\": {\n          \"default\": \"\",\n          \"title\": \"About\",\n          \"type\": \"string\"\n        },\n        \"created_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Created At\",\n          \"type\": \"string\"\n        },\n        \"id\": {\n          \"format\": \"uuid\",\n          \"readOnly\": true,\n          \"title\": \"Id\",\n          \"type\": \"string\"\n        },\n        \"metadata\": {\n          \"anyOf\": [\n            {\n              \"type\": \"object\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Metadata\"\n        },\n        \"name\": {\n          \"default\": \"\",\n          \"maxLength\": 120,\n          \"pattern\": \"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"project\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 255,\n              \"minLength\": 1,\n              \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Project\"\n        },\n        \"updated_at\": {\n          \"format\": \"date-time\",\n          \"readOnly\": true,\n          \"title\": \"Updated At\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"id\",\n        \"created_at\",\n        \"updated_at\"\n      ],\n      \"title\": \"User\",\n      \"type\": \"object\"\n    },\n    \"ValidationError\": {\n      \"properties\": {\n        \"loc\": {\n          \"items\": {\n            \"anyOf\": [\n              {\n                \"type\": \"string\"\n              },\n              {\n                \"type\": \"integer\"\n              }\n            ]\n          },\n          \"title\": \"Location\",\n          \"type\": \"array\"\n        },\n        \"msg\": {\n          \"title\": \"Message\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"title\": \"Error Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"loc\",\n        \"msg\",\n        \"type\"\n      ],\n      \"title\": \"ValidationError\",\n      \"type\": \"object\"\n    },\n    \"VectorDocSearch\": {\n      \"properties\": {\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"mode\": {\n          \"const\": \"vector\",\n          \"default\": \"vector\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        }\n      },\n      \"title\": \"VectorDocSearch\",\n      \"type\": \"object\"\n    },\n    \"VectorDocSearchRequest\": {\n      \"properties\": {\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"vector\": {\n          \"items\": {\n            \"type\": \"number\"\n          },\n          \"title\": \"Vector\",\n          \"type\": \"array\"\n        }\n      },\n      \"required\": [\n        \"vector\"\n      ],\n      \"title\": \"VectorDocSearchRequest\",\n      \"type\": \"object\"\n    },\n    \"VectorDocSearchUpdate\": {\n      \"properties\": {\n        \"confidence\": {\n          \"default\": 0.5,\n          \"maximum\": 1.0,\n          \"minimum\": -1.0,\n          \"title\": \"Confidence\",\n          \"type\": \"number\"\n        },\n        \"include_embeddings\": {\n          \"default\": true,\n          \"title\": \"Include Embeddings\",\n          \"type\": \"boolean\"\n        },\n        \"lang\": {\n          \"default\": \"en-US\",\n          \"title\": \"Lang\",\n          \"type\": \"string\"\n        },\n        \"limit\": {\n          \"default\": 10,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Limit\",\n          \"type\": \"integer\"\n        },\n        \"max_query_length\": {\n          \"default\": 1000,\n          \"maximum\": 10000.0,\n          \"minimum\": 100.0,\n          \"title\": \"Max Query Length\",\n          \"type\": \"integer\"\n        },\n        \"metadata_filter\": {\n          \"default\": {},\n          \"title\": \"Metadata Filter\",\n          \"type\": \"object\"\n        },\n        \"mmr_strength\": {\n          \"default\": 0.5,\n          \"exclusiveMaximum\": 1.0,\n          \"minimum\": 0.0,\n          \"title\": \"Mmr Strength\",\n          \"type\": \"number\"\n        },\n        \"mode\": {\n          \"const\": \"vector\",\n          \"default\": \"vector\",\n          \"title\": \"Mode\",\n          \"type\": \"string\"\n        },\n        \"num_search_messages\": {\n          \"default\": 4,\n          \"maximum\": 50.0,\n          \"minimum\": 1.0,\n          \"title\": \"Num Search Messages\",\n          \"type\": \"integer\"\n        }\n      },\n      \"title\": \"VectorDocSearchUpdate\",\n      \"type\": \"object\"\n    },\n    \"WaitForInputInfo\": {\n      \"properties\": {\n        \"info\": {\n          \"additionalProperties\": {\n            \"anyOf\": [\n              {\n                \"items\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"array\"\n              },\n              {\n                \"additionalProperties\": {\n                  \"type\": \"string\"\n                },\n                \"type\": \"object\"\n              },\n              {\n                \"items\": {\n                  \"additionalProperties\": {\n                    \"type\": \"string\"\n                  },\n                  \"type\": \"object\"\n                },\n                \"type\": \"array\"\n              },\n              {\n                \"type\": \"string\"\n              }\n            ]\n          },\n          \"title\": \"Info\",\n          \"type\": \"object\"\n        }\n      },\n      \"required\": [\n        \"info\"\n      ],\n      \"title\": \"WaitForInputInfo\",\n      \"type\": \"object\"\n    },\n    \"WaitForInputStep\": {\n      \"properties\": {\n        \"kind_\": {\n          \"const\": \"wait_for_input\",\n          \"default\": \"wait_for_input\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"wait_for_input\": {\n          \"$ref\": \"#/$defs/WaitForInputInfo\"\n        }\n      },\n      \"required\": [\n        \"wait_for_input\"\n      ],\n      \"title\": \"WaitForInputStep\",\n      \"type\": \"object\"\n    },\n    \"WeatherGetArguments\": {\n      \"description\": \"Arguments for Weather\",\n      \"properties\": {\n        \"location\": {\n          \"title\": \"Location\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"location\"\n      ],\n      \"title\": \"WeatherGetArguments\",\n      \"type\": \"object\"\n    },\n    \"WeatherGetArgumentsUpdate\": {\n      \"description\": \"Arguments for Weather\",\n      \"properties\": {\n        \"location\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Location\"\n        }\n      },\n      \"title\": \"WeatherGetArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"WeatherIntegrationDef\": {\n      \"description\": \"Weather integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WeatherGetArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"weather\",\n          \"default\": \"weather\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WeatherSetup\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"WeatherIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"WeatherIntegrationDefUpdate\": {\n      \"description\": \"Weather integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WeatherGetArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"weather\",\n          \"default\": \"weather\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WeatherSetupUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        }\n      },\n      \"title\": \"WeatherIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"WeatherSetup\": {\n      \"description\": \"Integration definition for Weather\",\n      \"properties\": {\n        \"openweathermap_api_key\": {\n          \"title\": \"Openweathermap Api Key\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"openweathermap_api_key\"\n      ],\n      \"title\": \"WeatherSetup\",\n      \"type\": \"object\"\n    },\n    \"WeatherSetupUpdate\": {\n      \"description\": \"Integration definition for Weather\",\n      \"properties\": {\n        \"openweathermap_api_key\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Openweathermap Api Key\"\n        }\n      },\n      \"title\": \"WeatherSetupUpdate\",\n      \"type\": \"object\"\n    },\n    \"WikipediaIntegrationDef\": {\n      \"description\": \"Wikipedia integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WikipediaSearchArguments\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"wikipedia\",\n          \"default\": \"wikipedia\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"WikipediaIntegrationDef\",\n      \"type\": \"object\"\n    },\n    \"WikipediaIntegrationDefUpdate\": {\n      \"description\": \"Wikipedia integration definition\",\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/WikipediaSearchArgumentsUpdate\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"method\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Method\"\n        },\n        \"provider\": {\n          \"const\": \"wikipedia\",\n          \"default\": \"wikipedia\",\n          \"title\": \"Provider\",\n          \"type\": \"string\"\n        },\n        \"setup\": {\n          \"anyOf\": [\n            {},\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Setup\"\n        }\n      },\n      \"title\": \"WikipediaIntegrationDefUpdate\",\n      \"type\": \"object\"\n    },\n    \"WikipediaSearchArguments\": {\n      \"description\": \"Arguments for Wikipedia Search\",\n      \"properties\": {\n        \"load_max_docs\": {\n          \"default\": 2,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Load Max Docs\",\n          \"type\": \"integer\"\n        },\n        \"query\": {\n          \"title\": \"Query\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"query\"\n      ],\n      \"title\": \"WikipediaSearchArguments\",\n      \"type\": \"object\"\n    },\n    \"WikipediaSearchArgumentsUpdate\": {\n      \"description\": \"Arguments for Wikipedia Search\",\n      \"properties\": {\n        \"load_max_docs\": {\n          \"default\": 2,\n          \"maximum\": 10.0,\n          \"minimum\": 1.0,\n          \"title\": \"Load Max Docs\",\n          \"type\": \"integer\"\n        },\n        \"query\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Query\"\n        }\n      },\n      \"title\": \"WikipediaSearchArgumentsUpdate\",\n      \"type\": \"object\"\n    },\n    \"YieldStep\": {\n      \"properties\": {\n        \"arguments\": {\n          \"anyOf\": [\n            {\n              \"additionalProperties\": {\n                \"anyOf\": [\n                  {\n                    \"items\": {\n                      \"type\": \"string\"\n                    },\n                    \"type\": \"array\"\n                  },\n                  {\n                    \"additionalProperties\": {\n                      \"type\": \"string\"\n                    },\n                    \"type\": \"object\"\n                  },\n                  {\n                    \"items\": {\n                      \"additionalProperties\": {\n                        \"type\": \"string\"\n                      },\n                      \"type\": \"object\"\n                    },\n                    \"type\": \"array\"\n                  },\n                  {\n                    \"type\": \"string\"\n                  }\n                ]\n              },\n              \"type\": \"object\"\n            },\n            {\n              \"const\": \"_\",\n              \"type\": \"string\"\n            }\n          ],\n          \"default\": \"_\",\n          \"title\": \"Arguments\"\n        },\n        \"kind_\": {\n          \"const\": \"yield\",\n          \"default\": \"yield\",\n          \"readOnly\": true,\n          \"title\": \"Kind\",\n          \"type\": \"string\"\n        },\n        \"label\": {\n          \"anyOf\": [\n            {\n              \"maxLength\": 120,\n              \"pattern\": \"^[^0-9]|^[0-9]+[^0-9].*$\",\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Label\"\n        },\n        \"workflow\": {\n          \"title\": \"Workflow\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"workflow\"\n      ],\n      \"title\": \"YieldStep\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__Content\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"Content\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel-Input\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel-Output\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel1\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentModel1\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel2\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel1\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel2\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel2\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Chat__ContentModel3\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentModel3\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Common__Content\": {\n      \"maxLength\": 30000,\n      \"title\": \"Content\",\n      \"type\": \"string\"\n    },\n    \"agents_api__autogen__Entries__ContentModel\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Entries__ContentModel1\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"ContentModel1\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Entries__ContentModel2\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel1\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel2\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel2\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Entries__ContentModel3\": {\n      \"properties\": {\n        \"image_url\": {\n          \"$ref\": \"#/$defs/ImageUrl\"\n        },\n        \"type\": {\n          \"const\": \"image_url\",\n          \"default\": \"image_url\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"image_url\"\n      ],\n      \"title\": \"ContentModel3\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Tasks__Content\": {\n      \"properties\": {\n        \"text\": {\n          \"title\": \"Text\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"text\",\n          \"default\": \"text\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"text\"\n      ],\n      \"title\": \"Content\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Tasks__ContentModel\": {\n      \"properties\": {\n        \"image_url\": {\n          \"$ref\": \"#/$defs/ImageUrl\"\n        },\n        \"type\": {\n          \"const\": \"image_url\",\n          \"default\": \"image_url\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"image_url\"\n      ],\n      \"title\": \"ContentModel\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Tasks__ContentModel1-Output\": {\n      \"description\": \"Anthropic image content part\",\n      \"properties\": {\n        \"content\": {\n          \"anyOf\": [\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItem\"\n              },\n              \"type\": \"array\"\n            },\n            {\n              \"items\": {\n                \"$ref\": \"#/$defs/ContentItemModel\"\n              },\n              \"type\": \"array\"\n            }\n          ],\n          \"title\": \"Content\"\n        },\n        \"tool_use_id\": {\n          \"title\": \"Tool Use Id\",\n          \"type\": \"string\"\n        },\n        \"type\": {\n          \"const\": \"tool_result\",\n          \"default\": \"tool_result\",\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"tool_use_id\",\n        \"content\"\n      ],\n      \"title\": \"ContentModel1\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__Tools__CreateToolRequest-Input\": {\n      \"description\": \"Payload for creating a tool\",\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"CreateToolRequest\",\n      \"type\": \"object\"\n    },\n    \"agents_api__autogen__openapi_model__CreateToolRequest\": {\n      \"properties\": {\n        \"api_call\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/ApiCallDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"bash_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Bash20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"computer_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/Computer20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"description\": {\n          \"anyOf\": [\n            {\n              \"type\": \"string\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Description\"\n        },\n        \"function\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/FunctionDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"integration\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/DummyIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BraveIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/EmailIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/SpiderIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WikipediaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/WeatherIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/MailgunIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseContextIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseExtensionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseListSessionsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCreateSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseCompleteSessionIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/BrowserbaseGetSessionLiveUrlsIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/RemoteBrowserIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/LlamaParseIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/FfmpegIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryUploadIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/CloudinaryEditIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/ArxivIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/UnstructuredIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/AlgoliaIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/McpIntegrationDef\"\n            },\n            {\n              \"$ref\": \"#/$defs/GoogleSheetsIntegrationDef-Input\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ],\n          \"title\": \"Integration\"\n        },\n        \"name\": {\n          \"maxLength\": 40,\n          \"pattern\": \"^[^\\\\W0-9]\\\\w*$\",\n          \"title\": \"Name\",\n          \"type\": \"string\"\n        },\n        \"system\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/SystemDef\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"text_editor_20241022\": {\n          \"anyOf\": [\n            {\n              \"$ref\": \"#/$defs/TextEditor20241022Def\"\n            },\n            {\n              \"type\": \"null\"\n            }\n          ]\n        },\n        \"type\": {\n          \"enum\": [\n            \"function\",\n            \"integration\",\n            \"system\",\n            \"api_call\",\n            \"computer_20241022\",\n            \"text_editor_20241022\",\n            \"bash_20241022\"\n          ],\n          \"title\": \"Type\",\n          \"type\": \"string\"\n        }\n      },\n      \"required\": [\n        \"name\",\n        \"type\"\n      ],\n      \"title\": \"CreateToolRequest\",\n      \"type\": \"object\"\n    }\n  },\n  \"additionalProperties\": true,\n  \"description\": \"Payload for creating a task\",\n  \"properties\": {\n    \"canonical_name\": {\n      \"anyOf\": [\n        {\n          \"maxLength\": 255,\n          \"minLength\": 1,\n          \"pattern\": \"^[a-zA-Z][a-zA-Z0-9_]*$\",\n          \"type\": \"string\"\n        },\n        {\n          \"type\": \"null\"\n        }\n      ],\n      \"title\": \"Canonical Name\"\n    },\n    \"description\": {\n      \"default\": \"\",\n      \"title\": \"Description\",\n      \"type\": \"string\"\n    },\n    \"inherit_tools\": {\n      \"default\": false,\n      \"title\": \"Inherit Tools\",\n      \"type\": \"boolean\"\n    },\n    \"input_schema\": {\n      \"anyOf\": [\n        {\n          \"type\": \"object\"\n        },\n        {\n          \"type\": \"null\"\n        }\n      ],\n      \"title\": \"Input Schema\"\n    },\n    \"main\": {\n      \"items\": {\n        \"anyOf\": [\n          {\n            \"$ref\": \"#/$defs/EvaluateStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/ToolCallStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/PromptStep-Input\"\n          },\n          {\n            \"$ref\": \"#/$defs/GetStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/SetStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/LogStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/YieldStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/ReturnStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/SleepStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/ErrorWorkflowStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/WaitForInputStep\"\n          },\n          {\n            \"$ref\": \"#/$defs/IfElseWorkflowStep-Input\"\n          },\n          {\n            \"$ref\": \"#/$defs/SwitchStep-Input\"\n          },\n          {\n            \"$ref\": \"#/$defs/ForeachStep-Input\"\n          },\n          {\n            \"$ref\": \"#/$defs/ParallelStep-Input\"\n          },\n          {\n            \"$ref\": \"#/$defs/Main-Input\"\n          }\n        ]\n      },\n      \"minItems\": 1,\n      \"title\": \"Main\",\n      \"type\": \"array\"\n    },\n    \"metadata\": {\n      \"anyOf\": [\n        {\n          \"type\": \"object\"\n        },\n        {\n          \"type\": \"null\"\n        }\n      ],\n      \"title\": \"Metadata\"\n    },\n    \"name\": {\n      \"maxLength\": 255,\n      \"minLength\": 1,\n      \"title\": \"Name\",\n      \"type\": \"string\"\n    },\n    \"tools\": {\n      \"default\": [],\n      \"items\": {\n        \"$ref\": \"#/$defs/TaskTool-Input\"\n      },\n      \"title\": \"Tools\",\n      \"type\": \"array\"\n    }\n  },\n  \"required\": [\n    \"name\",\n    \"main\"\n  ],\n  \"title\": \"CreateTaskRequest\",\n  \"type\": \"object\"\n}\n"
  },
  {
    "path": "src/schemas/walk.jq",
    "content": "# Define a recursive walk function that applies f to every value.\ndef walk(f):\n  . as $in\n  | if type == \"object\" then\n      reduce keys[] as $key ({}; . + { ($key): ($in[$key] | walk(f)) })\n    elif type == \"array\" then\n      map( walk(f) )\n    else\n      .\n    end\n  | f;\n\n# Save the whole document as $root so we can look up definitions.\n. as $root\n| .components.schemas[$target] + {\"$defs\": $root.components.schemas}\n| walk(\n    if type==\"string\" and startswith(\"#/components/schema\")\n    then\n      . | sub(\"components/schemas\"; \"$defs\")\n    else\n      .\n    end\n)\n\n"
  },
  {
    "path": "src/scripts/__init__.py",
    "content": ""
  },
  {
    "path": "src/scripts/generate_changelog.py",
    "content": "# Standard library imports\nimport json\nimport logging\nimport os\nimport re\nimport sys\nimport time\nfrom pathlib import Path\nfrom typing import Any\n\nimport yaml\n\n# Third-party imports\nfrom julep import Client\n\n# Configure logging with timestamp, level, and message format\nlogging.basicConfig(level=logging.INFO, format=\"%(asctime)s - %(levelname)s - %(message)s\")\n\n# Constants and configurations\nHTML_TAGS_PATTERN = re.compile(r\"(<[^>]+>)\")  # Regex pattern to match HTML tags\nREQUIRED_ENV_VARS = [\n    \"AGENT_UUID\",\n    \"TASK_UUID\",\n    \"JULEP_API_KEY\",\n]  # List of required environment variables\n\n\ndef load_template(filename: str) -> str:\n    \"\"\"Load template content from file\"\"\"\n    return Path(f\"./scripts/templates/{filename}\").read_text(encoding=\"utf-8\")\n\n\ndef run_task(pr_data: str) -> str:\n    \"\"\"\n    Execute the changelog generation task using Julep API.\n\n    Args:\n        pr_data (str): Formatted PR data to process\n\n    Returns:\n        str: Generated changelog content\n\n    Raises:\n        ValueError: If required environment variables are missing\n        Exception: If task execution fails\n    \"\"\"\n    # Validate env vars with list comprehension\n    if missing_vars := [var for var in REQUIRED_ENV_VARS if not os.environ.get(var)]:\n        msg = f\"Missing required environment variables: {', '.join(missing_vars)}\"\n        raise ValueError(msg)\n\n    client = Client(api_key=os.environ[\"JULEP_API_KEY\"], environment=\"production\")\n\n    # Use context manager for file operations\n    with Path(\"./scripts/templates/changelog.yaml\").open(encoding=\"utf-8\") as f:\n        task_description = yaml.safe_load(f)\n\n    # Create or update the AI agent\n    client.agents.create_or_update(\n        agent_id=os.environ[\"AGENT_UUID\"],\n        name=\"Changelog Generator\",\n        about=\"An AI assistant that can generate a changelog from a list of PRs.\",\n        model=\"gpt-4o\",\n    )\n\n    # Create or update the task configuration\n    client.tasks.create_or_update(\n        task_id=os.environ[\"TASK_UUID\"],\n        agent_id=os.environ[\"AGENT_UUID\"],\n        **task_description,\n    )\n\n    # Create a new execution instance\n    execution = client.executions.create(\n        task_id=os.environ[\"TASK_UUID\"],\n        input={\"pr_data\": str(pr_data)},\n    )\n\n    # Wait for task completion using context manager for proper resource cleanup\n    with client:\n        while (result := client.executions.get(execution.id)).status not in [\n            \"succeeded\",\n            \"failed\",\n        ]:\n            time.sleep(3)\n\n        if result.status != \"succeeded\":\n            raise Exception(result.error)\n        return result.output\n\n\ndef preserve_and_update_changelog(new_changelog: str, source: str = \"./CHANGELOG.md\") -> None:\n    \"\"\"\n    Save the generated changelog while preserving HTML content.\n\n    Args:\n        new_changelog (str): The new changelog content to save\n        source (str): Path to the changelog file (default: 'CHANGELOG.md')\n    \"\"\"\n    path = Path(source)\n    path.parent.mkdir(parents=True, exist_ok=True)\n\n    # Load existing changelog if it exists, otherwise use header template\n    if path.exists():\n        existing_content = path.read_text(encoding=\"utf-8\")\n        # Find the end of the div tag\n        div_end = existing_content.find(\"</div>\") + len(\"</div>\")\n        # Insert new changelog after the div\n        content = f\"{existing_content[:div_end]}{new_changelog}{existing_content[div_end:]}\"\n    else:\n        html_content = load_template(\"header.html\")\n        content = f\"{html_content}\\n\\n{new_changelog}\"\n\n    path.write_text(content, encoding=\"utf-8\")\n\n\ndef is_html_tag(segment: str) -> bool:\n    \"\"\"\n    Check if a given string segment is an HTML tag.\n\n    Args:\n        segment (str): String to check\n\n    Returns:\n        bool: True if segment is an HTML tag, False otherwise\n    \"\"\"\n    return re.fullmatch(HTML_TAGS_PATTERN, segment) is not None\n\n\ndef process_body(body: str) -> str:\n    \"\"\"\n    Process PR body text by removing HTML tags and special markers.\n\n    Args:\n        body (str): PR description body text\n\n    Returns:\n        str: Cleaned and processed body text\n    \"\"\"\n    if not body:\n        return \"\"\n\n    # Remove HTML tags and clean up the text\n    segments = [seg for seg in re.split(HTML_TAGS_PATTERN, body) if not is_html_tag(seg)]\n    processed_body = \"\".join(segments)\n    return processed_body.replace(\">\", \"\").replace(\"[!IMPORTANT]\", \"\").strip()\n\n\ndef process_pr_data(pr_data: str) -> str:\n    \"\"\"\n    Generate changelog entries from PR data.\n\n    Args:\n        pr_data (str): JSON string containing PR information\n\n    Returns:\n        str: Formatted changelog entries\n    \"\"\"\n    prs: list[dict[str, Any]] = json.loads(pr_data)\n\n    # Use list comprehension with f-strings\n    entries = [\n        f\"\"\"- PR #{pr[\"number\"]}: {pr[\"title\"]}\n            Author: {pr[\"author\"]}\n            Body:\n            {process_body(pr.get(\"body\", \"\"))}\n        \"\"\"\n        for pr in prs\n    ]\n    return \"\\n\".join(entries)\n\n\ndef main(pr_data: str) -> None:\n    \"\"\"\n    Main function to orchestrate changelog generation process.\n\n    Args:\n        pr_data (str): JSON string containing PR information\n\n    Raises:\n        Exception: If any step in the process fails\n    \"\"\"\n    try:\n        logging.info(\"Processing PR data...\")\n        processed_pr_data = process_pr_data(pr_data)\n\n        logging.info(\"Running task...\")\n        final_changelog = run_task(processed_pr_data)\n\n        logging.info(\"Saving changelog...\")\n        preserve_and_update_changelog(final_changelog)\n\n        logging.info(\"Successfully saved changelog to CHANGELOG.md\")\n\n        # delete the pr_data.json file\n        os.remove(\"pr_data.json\")\n        logging.info(\"Deleted pr_data.json file\")\n    except Exception as e:\n        logging.error(f\"Failed to generate changelog: {e!s}\")\n        raise\n\n\n# Script entry point\nif __name__ == \"__main__\":\n    try:\n        # Read PR data from JSON file\n        with open(\"pr_data.json\") as file:\n            pr_data = file.read()\n        main(pr_data)\n    except Exception as e:\n        logging.error(f\"Script failed: {e!s}\")\n        sys.exit(1)\n"
  },
  {
    "path": "src/scripts/generate_jwt.py",
    "content": "from datetime import UTC, datetime, timedelta\n\nimport jwt\n\ndev_secret = \"\"\nprod_secret = \"\"\ntest_secret = \"your-supersupersecret-jwt-token-with-at-least-32-characters-long\"\nencoded_jwt = jwt.encode(\n    {\n        \"sub\": \"097720c5-ab84-438c-b8b0-68e0eabd31ff\",\n        \"email\": \"e@mail.com\",\n        \"iat\": datetime.now(UTC),  # Specify timezone\n        \"exp\": datetime.now(UTC) + timedelta(days=100),  # Specify timezone\n    },\n    test_secret,\n    algorithm=\"HS512\",\n)\nprint(encoded_jwt)\n"
  },
  {
    "path": "src/scripts/generate_openapi_code.sh",
    "content": "#!/usr/bin/env bash\n\n# Turn on echo command\nset -x\n\n# Exit on error\nset -e\n\nuv_run () {\n  uvx \\\n    --with ruff --with datamodel-code-generator \\\n    --from ${2:-poethepoet} \\\n    $1\n}\n\ncodegen_then_format () {\n  uv_run 'poe codegen' && \\\n  uv_run 'poe format'  && \\\n  uv_run 'poe lint' || exit 0\n}\n\ngenerate_json_schema_local () {\n  \\cat openapi.yaml | yq -o json | jq -f src/schemas/walk.jq --arg target \"${1}\" > $2\n}\n\ngenerate_json_schema () {\n  curl -sL http://dev.julep.ai/api/openapi.json | jq -f src/schemas/walk.jq --arg target \"${1}\" > $2\n}\n\ncd src/typespec/ && \\\n  tsp compile .\ncd -\n\ngenerate_json_schema CreateTaskRequest src/schemas/create_task_request.json\ngenerate_json_schema CreateAgentRequest src/schemas/create_agent_request.json\n\ncd src/agents-api && \\\n  codegen_then_format\ncd -\n\ncd src/integrations-service && \\\n  codegen_then_format\ncd -\n"
  },
  {
    "path": "src/scripts/readme_translator.py",
    "content": "import logging\nimport re\nfrom functools import partial\nfrom pathlib import Path\n\nimport parmapper\nfrom deep_translator import GoogleTranslator\n\n# Configure logging\nlogging.basicConfig(level=logging.INFO, format=\"%(asctime)s - %(levelname)s - %(message)s\")\n\nHTML_TAGS_PATTERN = r\"(<[^>]+>)\"\nCODEBLOCK_PATTERN = r\"(```[\\s\\S]*?```|\\n)\"\n\n\ndef create_translator(target: str) -> GoogleTranslator:\n    \"\"\"\n    Create a translator for a given target language.\n    \"\"\"\n    return GoogleTranslator(source=\"en\", target=target)\n\n\ndef is_html_tag(segment: str) -> bool:\n    \"\"\"Check if the segment is an HTML tag.\"\"\"\n    return re.fullmatch(HTML_TAGS_PATTERN, segment) is not None\n\n\ndef is_special_character(segment: str) -> bool:\n    \"\"\"Check if the segment consists of special characters only.\"\"\"\n    return re.fullmatch(r'^[!\"#$%&\\'()*+,\\-./:;<=>?@[\\]^_`{|}~]+$', segment) is not None\n\n\ndef translate_sub_segment(translator: GoogleTranslator, sub_segment: str) -> str:\n    \"\"\"Translate a single sub-segment.\"\"\"\n    try:\n        translated = translator.translate(sub_segment)\n        return translated if translated else sub_segment\n    except Exception as e:\n        logging.error(f\"Error translating segment '{sub_segment}': {e}\")\n        return sub_segment\n\n\ndef translate_segment(translator: GoogleTranslator, segment: str) -> str:\n    \"\"\"\n    Translate a given raw HTML content using the provided translator, preserving HTML tags and newlines.\n    \"\"\"\n    if re.fullmatch(CODEBLOCK_PATTERN, segment) or segment == \"\\n\":\n        return segment\n\n    segments = re.split(HTML_TAGS_PATTERN, segment)\n    translated_segments = []\n\n    for sub_segment in segments:\n        if is_html_tag(sub_segment) or is_special_character(sub_segment):\n            translated_segments.append(sub_segment)\n        else:\n            translated_segments.append(translate_sub_segment(translator, sub_segment))\n\n    return \"\".join(translated_segments)\n\n\ndef translate_readme(source: str, target: str) -> str:\n    \"\"\"\n    Translate a README file from source to target language, preserving code blocks and newlines.\n    \"\"\"\n    file_content = Path(source).read_text(encoding=\"utf-8\")\n    translator = create_translator(target)\n    segments = re.split(CODEBLOCK_PATTERN, file_content)\n    segment_translation = partial(translate_segment, translator)\n    translated_segments = list(parmapper.parmap(segment_translation, segments))\n    return \"\".join(translated_segments)\n\n\ndef save_translated_readme(translated_content: str, lang: str) -> None:\n    \"\"\"\n    Save the translated README content to a file.\n    \"\"\"\n    filename = f\"./.github/README-{lang.split('-')[-1].upper()}.md\"\n    with open(filename, \"w\", encoding=\"utf-8\") as file:\n        file.write(translated_content)\n\n\ndef main() -> None:\n    \"\"\"\n    Main function to translate README.md to multiple languages.\n    \"\"\"\n    source_file = \"README.md\"\n    destination_langs = [\"zh-CN\", \"ja\", \"fr\"]\n\n    for lang in destination_langs:\n        logging.info(f\"Translating to {lang}...\")\n        translated_readme = translate_readme(source_file, lang)\n        save_translated_readme(translated_readme, lang)\n        logging.info(f\"Saved translated README for {lang}.\")\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "src/scripts/sync_model_docs.py",
    "content": "#!/usr/bin/env python3\n\"\"\"\nSync model information from litellm-config.yaml to documentation.\n\nThis script reads the configured models from litellm-config.yaml,\nfetches pricing/feature data from LiteLLM's GitHub repository,\nand updates the supported-models.mdx file.\n\nThe pricing data is fetched from:\nhttps://github.com/BerriAI/litellm/blob/main/model_prices_and_context_window.json\n\"\"\"\n\nimport json\nfrom pathlib import Path\nfrom typing import Dict, List, Any, Optional, Tuple\nimport re\nimport yaml\nimport urllib.request\nimport urllib.error\n\n\n# Cost tier classification based on input token price\ndef classify_cost_tier(input_cost_per_token: float) -> str:\n    \"\"\"Classify model cost tier based on input token cost.\"\"\"\n    if input_cost_per_token == 0:\n        return \"Free\"\n    elif input_cost_per_token < 0.0000005:  # $0.50 per 1M tokens\n        return \"Budget\"\n    elif input_cost_per_token < 0.000002:   # $2.00 per 1M tokens\n        return \"Standard\"\n    elif input_cost_per_token < 0.00001:    # $10.00 per 1M tokens\n        return \"Premium\"\n    else:\n        return \"Enterprise\"\n\n\ndef normalize_model_name(model_name: str) -> str:\n    \"\"\"Normalize model name to match between configs.\"\"\"\n    # Remove provider prefixes\n    normalized = re.sub(r'^(openai/|gemini/|anthropic/|groq/|openrouter/|cerebras/|voyage/|vertex_ai/)', '', model_name)\n    \n    # Handle special cases\n    if normalized.startswith(\"claude-\"):\n        # Convert claude names to match pricing file format\n        normalized = normalized.replace(\"claude-3-5-\", \"claude-3.5-\")\n        normalized = normalized.replace(\"claude-3-7-\", \"claude-3.7-\")\n    \n    return normalized\n\n\ndef find_model_in_pricing_data(model_name: str, litellm_model: str, pricing_data: Dict) -> Optional[Dict]:\n    \"\"\"Find model in pricing data using various matching strategies.\"\"\"\n    # Direct matches to try\n    candidates = [\n        model_name,\n        litellm_model,\n        normalize_model_name(model_name),\n        normalize_model_name(litellm_model),\n    ]\n    \n    # Add provider-specific variations\n    if \"/\" in litellm_model:\n        provider, model_part = litellm_model.split(\"/\", 1)\n        candidates.extend([\n            model_part,\n            f\"{provider}/{normalize_model_name(model_part)}\",\n        ])\n    \n    # Try each candidate\n    for candidate in candidates:\n        if candidate in pricing_data:\n            return pricing_data[candidate]\n    \n    # Try partial matching for specific patterns\n    for key in pricing_data:\n        if any(candidate in key or key in candidate for candidate in candidates):\n            return pricing_data[key]\n    \n    return None\n\n\ndef extract_models_from_config(config_path: Path) -> Tuple[List[Dict[str, Any]], List[Dict[str, Any]]]:\n    \"\"\"Extract model configurations from litellm-config.yaml.\"\"\"\n    with open(config_path, 'r') as f:\n        config = yaml.safe_load(f)\n    \n    models = []\n    embedding_models = []\n    \n    for model_config in config.get('model_list', []):\n        model_name = model_config.get('model_name', '')\n        litellm_params = model_config.get('litellm_params', {})\n        litellm_model = litellm_params.get('model', '')\n        tags = litellm_params.get('tags', [])\n        \n        # Check if it's an embedding model\n        is_embedding = ('embedding' in model_name.lower() or 'embedding' in litellm_model.lower() or\n                       model_name.startswith('text-embedding') or model_name.startswith('voyage') or\n                       '/bge-' in litellm_model or '/gte-' in litellm_model)\n        \n        model_data = {\n            'name': model_name,\n            'litellm_model': litellm_model,\n            'provider': litellm_model.split('/')[0] if '/' in litellm_model else 'unknown',\n            'is_free': 'free' in tags,\n            'tags': tags\n        }\n        \n        if is_embedding:\n            embedding_models.append(model_data)\n        else:\n            models.append(model_data)\n    \n    return models, embedding_models\n\n\ndef enrich_model_data(models: List[Dict], pricing_data: Dict) -> List[Dict]:\n    \"\"\"Enrich model data with pricing and feature information.\"\"\"\n    enriched = []\n    \n    for model in models:\n        model_info = find_model_in_pricing_data(model['name'], model['litellm_model'], pricing_data)\n        \n        if model_info:\n            model['context_window'] = model_info.get('max_input_tokens', model_info.get('max_tokens', 'Unknown'))\n            model['max_output'] = model_info.get('max_output_tokens', 'Unknown')\n            model['supports_tools'] = model_info.get('supports_function_calling', False)\n            model['supports_vision'] = model_info.get('supports_vision', False)\n            model['supports_audio'] = model_info.get('supports_audio_input', False) or model_info.get('supports_audio_output', False)\n            model['supports_prompt_caching'] = model_info.get('supports_prompt_caching', False)\n            \n            # Calculate cost tier\n            input_cost = model_info.get('input_cost_per_token', 0)\n            model['cost_tier'] = classify_cost_tier(input_cost)\n        else:\n            # Default values for models not in pricing data\n            model['context_window'] = 'Unknown'\n            model['max_output'] = 'Unknown'\n            model['supports_tools'] = False\n            model['supports_vision'] = False\n            model['supports_audio'] = False\n            model['supports_prompt_caching'] = False\n            model['cost_tier'] = 'Unknown'\n        \n        enriched.append(model)\n    \n    return enriched\n\n\ndef generate_model_table(models: List[Dict]) -> str:\n    \"\"\"Generate markdown table for models grouped by provider.\"\"\"\n    # Group models by provider\n    providers = {}\n    provider_map = {\n        'openai': 'OpenAI',\n        'anthropic': 'Anthropic', \n        'gemini': 'Google',\n        'groq': 'Groq',\n        'openrouter': 'OpenRouter',\n        'cerebras': 'Cerebras',\n        'unknown': 'Anthropic'  # Claude models show as unknown\n    }\n    \n    for model in models:\n        provider_key = model['provider'].lower()\n        provider_name = provider_map.get(provider_key, provider_key.title())\n        \n        # Special handling for models\n        if model['name'].startswith('claude'):\n            provider_name = 'Anthropic'\n        elif model['name'].startswith('amazon/'):\n            provider_name = 'Amazon Nova'\n        \n        if provider_name not in providers:\n            providers[provider_name] = []\n        providers[provider_name].append(model)\n    \n    # Define provider order to match existing doc\n    provider_order = ['Anthropic', 'Google', 'OpenAI', 'Groq', 'OpenRouter', 'Cerebras', 'Amazon Nova']\n    \n    tables = []\n    for provider in provider_order:\n        if provider not in providers:\n            continue\n            \n        provider_models = sorted(providers[provider], key=lambda x: x['name'])\n        \n        # Generate markdown table matching existing format\n        table = f\"\\n### {provider}\\n\\n\"\n        table += f\"Here are the {provider} models supported by Julep:\\n\\n\"\n        table += \"| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\\n\"\n        table += \"|------------|----------------|------------|--------------|--------|-------|---------|----------|\\n\"\n        \n        for model in provider_models:\n            # Format context window\n            if isinstance(model['context_window'], int):\n                if model['context_window'] >= 1000000:\n                    context = f\"{model['context_window'] // 1000000}M tokens\"\n                elif model['context_window'] >= 1000:\n                    context = f\"{model['context_window'] // 1000}K tokens\"\n                else:\n                    context = f\"{model['context_window']} tokens\"\n            else:\n                context = \"Unknown\"\n            \n            # Format max output\n            if isinstance(model['max_output'], int):\n                if model['max_output'] >= 1000000:\n                    max_out = f\"{model['max_output'] // 1000000}M tokens\"\n                elif model['max_output'] >= 1000:\n                    max_out = f\"{model['max_output'] // 1000}K tokens\"\n                else:\n                    max_out = f\"{model['max_output']} tokens\"\n            else:\n                max_out = \"Unknown\"\n            \n            # Format boolean support columns\n            tools = \"✅\" if model['supports_tools'] else \"❌\" if model['supports_tools'] is False else \"?\"\n            vision = \"✅\" if model['supports_vision'] else \"❌\"\n            audio = \"✅\" if model['supports_audio'] else \"❌\"\n            caching = \"✅\" if model['supports_prompt_caching'] else \"❌\"\n            \n            table += f\"| {model['name']} | {context} | {max_out} | {tools} | {vision} | {audio} | {caching} | {model['cost_tier']} |\\n\"\n        \n        tables.append(table)\n    \n    # Add any remaining providers not in the order\n    remaining = [p for p in providers if p not in provider_order]\n    for provider in sorted(remaining):\n        provider_models = sorted(providers[provider], key=lambda x: x['name'])\n        \n        table = f\"\\n### {provider}\\n\\n\"\n        table += f\"Here are the {provider} models supported by Julep:\\n\\n\"\n        table += \"| Model Name | Context Window | Max Output | Tool Calling | Vision | Audio | Caching | Cost Tier |\\n\"\n        table += \"|------------|----------------|------------|--------------|--------|-------|---------|----------|\\n\"\n        \n        for model in provider_models:\n            if isinstance(model['context_window'], int):\n                if model['context_window'] >= 1000000:\n                    context = f\"{model['context_window'] // 1000000}M tokens\"\n                elif model['context_window'] >= 1000:\n                    context = f\"{model['context_window'] // 1000}K tokens\"\n                else:\n                    context = f\"{model['context_window']} tokens\"\n            else:\n                context = \"Unknown\"\n            \n            # Format max output\n            if isinstance(model['max_output'], int):\n                if model['max_output'] >= 1000000:\n                    max_out = f\"{model['max_output'] // 1000000}M tokens\"\n                elif model['max_output'] >= 1000:\n                    max_out = f\"{model['max_output'] // 1000}K tokens\"\n                else:\n                    max_out = f\"{model['max_output']} tokens\"\n            else:\n                max_out = \"Unknown\"\n            \n            # Format boolean support columns\n            tools = \"✅\" if model['supports_tools'] else \"❌\" if model['supports_tools'] is False else \"?\"\n            vision = \"✅\" if model['supports_vision'] else \"❌\"\n            audio = \"✅\" if model['supports_audio'] else \"❌\"\n            caching = \"✅\" if model['supports_prompt_caching'] else \"❌\"\n            \n            table += f\"| {model['name']} | {context} | {max_out} | {tools} | {vision} | {audio} | {caching} | {model['cost_tier']} |\\n\"\n        \n        tables.append(table)\n    \n    return \"\\n\".join(tables)\n\n\ndef generate_embedding_table(embedding_models: List[Dict]) -> str:\n    \"\"\"Generate markdown table for embedding models.\"\"\"\n    if not embedding_models:\n        return \"\"\n    \n    table = \"\\n### Embedding\\n\\n\"\n    table += \"Here are the embedding models supported by Julep:\\n\\n\"\n    table += \"| Model Name | Embedding Dimensions |\\n\"\n    table += \"|------------|---------------------|\\n\"\n    \n    for model in sorted(embedding_models, key=lambda x: x['name']):\n        # All embedding models in Julep use 1024 dimensions as noted in the original doc\n        dimensions = \"1024\"\n        \n        table += f\"| {model['name']} | {dimensions} |\\n\"\n    \n    table += \"\\n<Info>\\n\"\n    table += \"Though the models mentioned above support different embedding dimensions, Julep uses fixed 1024 dimensions for all embedding models for now. We plan to support different dimensions in the future.\\n\"\n    table += \"</Info>\\n\"\n    \n    return table\n\n\n\n\ndef update_documentation(doc_path: Path, model_section: str):\n    \"\"\"Update the documentation file with new model information.\"\"\"\n    with open(doc_path, 'r') as f:\n        content = f.read()\n    \n    # Find the Available Models section\n    available_models_start = content.find(\"## Available Models\")\n    if available_models_start == -1:\n        print(\"Error: Could not find '## Available Models' section\")\n        return\n    \n    # Find where to stop - look for the next ## section after Available Models\n    # This could be \"## Supported Parameters\" or any other section\n    next_major_section = content.find(\"\\n## \", available_models_start + 1)\n    if next_major_section == -1:\n        # If no next section found, replace to end of file\n        end_marker = len(content)\n    else:\n        end_marker = next_major_section\n    \n    # Extract the part before models\n    before_models = content[:available_models_start]\n    \n    # Find where the actual model listings start\n    # Look for the first provider heading (could be ### or #)\n    import re\n    \n    # Find the first provider section (### Anthropic, ### Google, etc.)\n    first_provider_match = re.search(r'\\n###?\\s+(Anthropic|Google|OpenAI|Groq|OpenRouter|Cerebras|Amazon)', \n                                     content[available_models_start:end_marker])\n    \n    if first_provider_match:\n        models_content_start = available_models_start + first_provider_match.start()\n    else:\n        # If no provider found, look for where tip/info boxes end\n        # Find the last </Tip> or </Info> tag\n        last_tip = content.rfind(\"</Tip>\", available_models_start, end_marker)\n        last_info = content.rfind(\"</Info>\", available_models_start, end_marker)\n        last_tag = max(last_tip, last_info)\n        if last_tag > -1:\n            # Find the newline after the tag\n            newline_after = content.find(\"\\n\", last_tag)\n            models_content_start = newline_after + 1\n        else:\n            # Fallback: just use some offset after the section header\n            models_content_start = available_models_start + len(\"## Available Models\\n\\n\")\n    \n    # Extract the header part (with info/tip boxes)\n    models_header = content[available_models_start:models_content_start]\n    \n    # Extract the part after models\n    after_models = content[end_marker:]\n    \n    # Construct new content\n    new_content = before_models + models_header + model_section + after_models\n    \n    with open(doc_path, 'w') as f:\n        f.write(new_content)\n\n\ndef fetch_pricing_data() -> Dict:\n    \"\"\"Fetch pricing data from LiteLLM GitHub repository.\"\"\"\n    url = \"https://raw.githubusercontent.com/BerriAI/litellm/main/model_prices_and_context_window.json\"\n    \n    try:\n        print(f\"Fetching pricing data from {url}...\")\n        with urllib.request.urlopen(url) as response:\n            data = json.loads(response.read().decode())\n        print(\"✅ Successfully fetched pricing data\")\n        return data\n    except urllib.error.URLError as e:\n        print(f\"❌ Error fetching pricing data: {e}\")\n        raise\n    except json.JSONDecodeError as e:\n        print(f\"❌ Error parsing pricing data: {e}\")\n        raise\n\n\ndef main():\n    \"\"\"Main function to sync model documentation.\"\"\"\n    # Define paths - handle different execution contexts\n    script_path = Path(__file__).resolve()\n    \n    # Check if we're in src/scripts or being run from elsewhere\n    if script_path.parent.name == \"scripts\" and script_path.parent.parent.name == \"src\":\n        # Running from src/scripts/\n        project_root = script_path.parent.parent.parent\n    else:\n        # Running from somewhere else, try to find project root\n        current = script_path.parent\n        while current != current.parent:\n            if (current / \"src\" / \"llm-proxy\").exists():\n                project_root = current\n                break\n            current = current.parent\n        else:\n            # Fallback to relative paths\n            project_root = Path.cwd()\n    \n    config_path = project_root / \"src\" / \"llm-proxy\" / \"litellm-config.yaml\"\n    doc_path = project_root / \"documentation\" / \"integrations\" / \"supported-models.mdx\"\n    \n    # Check files exist\n    if not config_path.exists():\n        print(f\"Error: Config file not found at {config_path}\")\n        return 1\n    \n    if not doc_path.exists():\n        print(f\"Error: Documentation file not found at {doc_path}\")\n        return 1\n    \n    # Fetch pricing data from GitHub\n    try:\n        pricing_data = fetch_pricing_data()\n    except Exception as e:\n        print(f\"Failed to fetch pricing data: {e}\")\n        return 1\n    \n    # Extract and enrich model data\n    print(\"Extracting models from litellm config...\")\n    models, embedding_models = extract_models_from_config(config_path)\n    print(f\"Found {len(models)} models and {len(embedding_models)} embedding models\")\n    \n    print(\"Enriching model data with pricing information...\")\n    enriched_models = enrich_model_data(models, pricing_data)\n    \n    # Generate documentation\n    print(\"Generating model documentation...\")\n    model_section = generate_model_table(enriched_models)\n    embedding_section = generate_embedding_table(embedding_models)\n    \n    # Combine sections\n    full_section = model_section + \"\\n\" + embedding_section\n    \n    # Update documentation file\n    print(\"Updating documentation file...\")\n    update_documentation(doc_path, full_section)\n    \n    print(\"✅ Documentation updated successfully!\")\n    \n    # Print summary\n    cost_tiers = {}\n    for model in enriched_models:\n        tier = model['cost_tier']\n        cost_tiers[tier] = cost_tiers.get(tier, 0) + 1\n    \n    print(\"\\nModel Summary:\")\n    print(f\"Total models: {len(enriched_models)}\")\n    print(f\"Embedding models: {len(embedding_models)}\")\n    for tier, count in sorted(cost_tiers.items()):\n        print(f\"  {tier}: {count} models\")\n    \n    return 0\n\n\nif __name__ == \"__main__\":\n    exit(main())"
  },
  {
    "path": "src/scripts/templates/changelog.yaml",
    "content": "name: Changelog Generator\ndescription: Generates a changelog from a list of PRs.\n                                  \nmain:\n- prompt:\n  - role: system\n    content: |\n      $ f''' \n      # AI Agent Prompt for Generating a Structured and Engaging Changelog\n\n      Generate a **detailed** and **engaging changelog** based on information from the PR comment, title, author, and any additional context. \n      Your goal is to make the changelog both **informative** and **appealing** to the user.\n\n      ## 🔄 Steps to Generate the Changelog:\n\n      ### 1. **Extract Relevant Information** 📋\n      Gather all the important details from the following sources:\n      - **PR Title**: What is the overall summary of the change?\n      - **PR Comment**: Any detailed description of the changes and reasons for the change.\n      - **PR Author**: Who made the change? (Include name or GitHub handle)\n      - **Additional Context**: Include any extra context or notes provided for a clearer understanding of the changes.\n\n      ### 2. **Organize the Content** 🗂️\n      Structure the changelog into **clear sections**. These sections should be:\n      - **Features** ✨: New functionalities or major additions.\n      - **Fixes** 🔧: Bug fixes or issue resolutions.\n      - **Improvements** 📈: Enhancements or optimizations made.\n      - **Performance Enhancements** 🚀: Changes that improve speed, efficiency, or scalability.\n      - **Breaking Changes** 💥: Changes that could potentially break backward compatibility.\n\n      ### 3. **Condense the Changes** 📝\n      For each line, try to include:\n      - A **concise but clear description** of what has changed.\n      - The **benefit** or **impact** on the user experience.\n        \n      ### 4. **Engage the User** 🗣️\n      Write in a conversational and engaging tone. Try to:\n      - Highlight the **key updates** and their **user impact**.\n      - Encourage users to **take action** if necessary (e.g., “Please upgrade to this version to experience the new feature!”).\n\n      ### 5. **Format the Changelog** 🖋️\n      Make sure the changelog is visually clear and easy to read:\n      - Use **bullet points** for each change.\n      - Apply **headings** for sections like \"Features\", \"Fixes\", etc.\n      - Use **emojis** to visually separate and highlight sections.\n        \n      ### 6. **Output Format** 🗒️\n      The final changelog should follow this format:\n      - **Title**: \"Julep AI Changelog for {{datetime.datetime.now().strftime('%d %B %Y')}}\"\n      - **Sections**: Include only the following 10 lines:\n        - Features ✨: Brief overview of major new functionalities\n        - Features ✨: Brief overview of minor new functionalities \n        - Fixes 🔧: Summary of critical bug fixes\n        - Fixes 🔧: Summary of minor bug fixes\n        - Improvements 📈: Overview of major enhancements\n        - Improvements 📈: Overview of minor enhancements\n        - Performance 🚀: Key performance improvements\n        - Performance 🚀: Secondary performance improvements\n        - Breaking Changes 💥: Critical breaking changes\n        - Breaking Changes 💥: Other breaking changes\n\n      The output should be concise, clear and engaging. Use markdown formatting and emojis to make it visually appealing.\n      The output should not have more than 10 pointers in total.\n      The output should not have more than 100 words in total.\n      ### Example Output:\n\n      # **Changelog for {datetime.datetime.now().strftime('%d %B %Y')}** ✨\n\n      - **Major Feature**: Added real-time analytics dashboard for live data visualization ✨\n      - **Minor Feature**: Introduced new export options for custom reports ✨\n      - **Critical Fix**: Resolved data export failures for large datasets 🔧\n      - **Minor Fix**: Fixed UI alignment issues in the sidebar 🔧\n      - **Major Enhancement**: Search functionality now 20% faster 📈\n      - **Minor Enhancement**: Improved error messages for better clarity 📈\n      - **Key Performance**: Optimized data compression reducing storage by 30% 🚀\n      - **Secondary Performance**: Reduced API response times by 15% 🚀\n      - **Critical Breaking**: Legacy API (v1) deprecation next month 💥\n      - **Other Breaking**: Updated authentication flow requires token refresh 💥\n      '''\n                                  \n  - role: user\n    content: |\n      $ f''' \n      Here is the PR data:\n\n      {steps[0].input.pr_data}                   \n      '''\n                                  \n  unwrap: true"
  },
  {
    "path": "src/scripts/templates/header.html",
    "content": "<div align=\"center\" id=\"top\">\n  <img src=\"https://socialify.git.ci/julep-ai/julep/image?description=1&descriptionEditable=Serverless%20AI%20Workflows%20for%20Data%20%26%20ML%20Teams&font=Source%20Code%20Pro&logo=https%3A%2F%2Fraw.githubusercontent.com%2Fjulep-ai%2Fjulep%2Fdev%2F.github%2Fjulep-logo.svg&owner=1&forks=1&pattern=Solid&stargazers=1&theme=Auto\" alt=\"julep\" height=300 />\n  \n  <br>\n    <p>\n      <a href=\"https://dashboard.julep.ai\">\n        <img src=\"https://img.shields.io/badge/Get_API_Key-FF5733?style=logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0id2hpdGUiPjxwYXRoIGQ9Ik0xMiAxTDMgNXYxNGw5IDQgOS00VjVsLTktNHptMCAyLjh2MTYuNEw1IDE2LjJWNi44bDctMy4yem0yIDguMmwtMi0yLTIgMiAyIDIgMi0yeiIvPjwvc3ZnPg==\" alt=\"Get API Key\" height=\"28\">\n      </a>\n      <span>&nbsp;</span>\n      <a href=\"https://docs.julep.ai\">\n        <img src=\"https://img.shields.io/badge/Documentation-4B32C3?style=logo=gitbook&logoColor=white\" alt=\"Documentation\" height=\"28\">\n      </a>\n    </p>\n    <p>\n     <a href=\"https://www.npmjs.com/package/@julep/sdk\"><img src=\"https://img.shields.io/npm/v/%40julep%2Fsdk?style=social&amp;logo=npm&amp;link=https%3A%2F%2Fwww.npmjs.com%2Fpackage%2F%40julep%2Fsdk\" alt=\"NPM Version\" height=\"28\"></a>\n      <span>&nbsp;</span>\n      <a href=\"https://pypi.org/project/julep\"><img src=\"https://img.shields.io/pypi/v/julep?style=social&amp;logo=python&amp;label=PyPI&amp;link=https%3A%2F%2Fpypi.org%2Fproject%2Fjulep\" alt=\"PyPI - Version\" height=\"28\"></a>\n      <span>&nbsp;</span>\n      <a href=\"https://hub.docker.com/u/julepai\"><img src=\"https://img.shields.io/docker/v/julepai/agents-api?sort=semver&amp;style=social&amp;logo=docker&amp;link=https%3A%2F%2Fhub.docker.com%2Fu%2Fjulepai\" alt=\"Docker Image Version\" height=\"28\"></a>\n      <span>&nbsp;</span>\n      <a href=\"https://choosealicense.com/licenses/apache/\"><img src=\"https://img.shields.io/github/license/julep-ai/julep\" alt=\"GitHub License\" height=\"28\"></a>\n    </p>\n    \n    <h3>\n      <a href=\"https://discord.com/invite/JTSBGRZrzj\" rel=\"dofollow\">Discord</a>\n      ·\n      <a href=\"https://x.com/julep_ai\" rel=\"dofollow\">𝕏</a>\n      ·\n      <a href=\"https://www.linkedin.com/company/julep-ai\" rel=\"dofollow\">LinkedIn</a>\n    </h3>\n  </div>"
  },
  {
    "path": "src/typespec/.gitignore",
    "content": "# Ignore everything in tsp-output\ntsp-output/**/*.*\n\n# Don't ignore the openapi3 directory\n!tsp-output/@typespec/openapi3/\n\n# But don't ignore openapi-*.yaml files in tsp-output/@typespec/openapi3/\n!tsp-output/@typespec/openapi3/openapi-*.yaml\n"
  },
  {
    "path": "src/typespec/AGENTS.md",
    "content": "# AGENTS.md - typespec\n\nThis directory contains TypeSpec definitions for APIs and code generation.\n\nKey Uses\n- Bash commands:\n  - cd typespec\n  - poe codegen\n- Core directories:\n  - `agents/`, `tasks/`, `tools/`, `sessions/`, etc. define domain models.\n- Code style guidelines:\n  - Use discriminated unions with `kind_` property.\n  - Apply mixins (HasId, HasTimestamps, HasMetadata) consistently.\n- Testing instructions:\n  - Validate specs: `tsp compile`\n  - Regenerate OpenAPI models: `bash scripts/generate_openapi_code.sh`\n- Repository etiquette:\n  - Do NOT edit generated code in `autogen/`.\n- Developer environment:\n  - Ensure `@typespec/openapi3` plugin is installed.\n- Unexpected behaviors:\n  - Alias conflicts (e.g., `if_`) require manual resolution.\n\n# TypeSpec Architecture Documentation\n\n## Overview\nTypeSpec is a structured language for defining API contracts that serves as the source of truth for the Julep API. It generates OpenAPI specifications which are used to create client SDKs, validate implementations, and generate server-side models.\n\n## Core Structure\n- TypeSpec definitions organized by domain resources\n- Each domain has `models.tsp`, `endpoints.tsp`, and `main.tsp`\n- Common components for reuse across domains\n- Generates OpenAPI 3.0 YAML specifications\n\n## Domain Resources\n- **projects**: Organizational units for grouping related resources\n- **agents**: AI agent definitions with instructions and configuration\n- **tasks**: Workflow definitions with steps, conditionals, and tool integration\n- **tools**: Capabilities that agents can use (functions, integrations, system resources)\n- **sessions**: Conversation containers with context management\n- **entries**: Message structure and history tracking\n- **executions**: Task execution state tracking with transitions\n- **docs**: Document storage and retrieval with vector search\n- **files**: File storage and management\n- **users**: User management and authentication\n- **chat**: Interaction flow and model parameters\n\n## Step Types\n- **Tool-based**: ToolCallStep, PromptStep, EvaluateStep\n- **Flow control**: IfElseStep, SwitchStep, ParallelStep, ForeachStep, MapReduceStep\n- **Data manipulation**: GetStep, SetStep, LogStep\n- **Terminal**: ReturnStep, ErrorStep, WaitForInputStep\n\n## Scalar Types\n- **Identifiers**: uuid, canonicalName, displayName, validPythonIdentifier\n- **Expressions**: PyExpression (SimpleEval-compatible), JinjaTemplate\n- **Pagination**: limit, offset, sortBy, sortDirection\n- **Content**: mimeType, yaml, json, eventStream\n\n## Tool Integrations\n- **Search/Knowledge**: Wikipedia, Brave, arXiv, Algolia\n- **Web Browsing**: BrowserBase, Spider, RemoteBrowser\n- **Media Processing**: FFmpeg, Cloudinary, Unstructured, LlamaParse\n- **Communication**: Email, Weather\n- **System Tools**: Anthropic specialized tools (computer, text_editor, bash)\n\n## API Patterns\n- RESTful resource endpoints with consistent CRUD operations\n- Parent-child resource relationships\n- Discriminated union types with `kind_` property\n- Rich expression support with Python evaluation\n- Streaming responses for real-time interactions\n- Authentication via API keys\n\n## Integration Points\n- Sessions contain Entries (conversation history)\n- Chat uses Session context\n- Executions run Tasks\n- Tasks use Tools for capabilities\n- Agents define available Tasks and Tools\n\n## Code Generation Pipeline\n1. TypeSpec definitions (.tsp files)\n2. TypeSpec compiler (`tsp compile`)\n3. OpenAPI specification (YAML)\n4. Pydantic models via datamodel-codegen\n5. Post-processing fixes\n6. Schema extraction for specific models\n\n## Key Concepts\n- Discriminated unions for type safety\n- Expression language for dynamic behavior\n- Parent-child resource hierarchies\n- Common mixins (HasId, HasTimestamps, HasMetadata)\n- Tool composability for flexible agent capabilities\n"
  },
  {
    "path": "src/typespec/agents/endpoints.tsp",
    "content": "import \"@typespec/http\";\nimport \"../common\";\nimport \"./models.tsp\";\n\nusing TypeSpec.Http;\nusing Common;\n\nnamespace Agents;\n\n//\n// AGENT ENDPOINTS\n//\n\ninterface Endpoints\n    extends LimitOffsetPagination<Agent, \"List Agents (paginated)\">,\n        CreateEndpoint<CreateAgentRequest, Agent, \"Create a new Agent\">,\n        CreateOrUpdateEndpoint<CreateOrUpdateAgentRequest, Agent, \"Create or update an Agent\">,\n        UpdateEndpoint<UpdateAgentRequest, Agent, \"Update an existing Agent by id (overwrites existing values; use PATCH for merging instead)\">,\n        PatchEndpoint<PatchAgentRequest, Agent, \"Update an existing Agent by id (merges with existing values)\">,\n        DeleteEndpoint<\"Delete Agent by id\">,\n        GetEndpoint<Agent, \"Get an Agent by id\"> {\n    \n    @route(\"models\")\n    @get\n    @doc(\"List all available models\")\n    listModels(): ListModelsResponse;\n}\n"
  },
  {
    "path": "src/typespec/agents/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Agents;\n\n//\n// AGENTS\n//"
  },
  {
    "path": "src/typespec/agents/models.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\nimport \"../chat\";\n\nusing TypeSpec.Http;\n\nusing Common;\nusing Chat;\n\nnamespace Agents;\n\n//\n// AGENT MODELS\n//\n\nmodel Agent {\n    ...HasId;\n    ...HasMetadata;\n    ...HasTimestamps;\n\n    /** Name of the agent */\n    name: displayName;\n\n    /** Project canonical name of the agent */\n    project?: canonicalName;\n\n    /** Canonical name of the agent */\n    canonical_name?: canonicalName;\n\n    /** About the agent */\n    about: string = \"\";\n\n    /** Model name to use (gpt-4-turbo, gemini-nano etc) */\n    \"model\": string = \"\";\n\n    /** Instructions for the agent */\n    instructions: string | string[] = #[];\n\n    /** Default settings for all sessions created by this agent */\n    default_settings?: Record<unknown>;\n\n    /** Default system template for all sessions created by this agent */\n    default_system_template: string = defaultSessionSystemMessage;\n}\n\n/** Payload for updating a agent */\n@withVisibility(\"create\", \"update\")\nmodel UpdateAgentRequest {\n    ...Agent;\n}\n\n/** Payload for patching a agent */\nmodel PatchAgentRequest is UpdateAgentRequest {}\n\n/** Payload for creating a agent (and associated documents) */\n@withVisibility(\"create\")\nmodel CreateAgentRequest {\n    ...UpdateAgentRequest;\n}\n\nmodel CreateOrUpdateAgentRequest extends CreateAgentRequest {\n    @path\n    id: uuid;\n    ...UpdateAgentRequest;\n}\n\n/** Model information returned by the model list endpoint */\nmodel ModelInfo {\n    /** The ID/name of the model */\n    id: string;\n}\n\n/** Response for the list models endpoint */\nmodel ListModelsResponse {\n    /** List of available models */\n    models: ModelInfo[];\n}"
  },
  {
    "path": "src/typespec/chat/endpoints.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\nimport \"../sessions\";\nimport \"./models.tsp\";\n\nusing TypeSpec.Http;\n\nusing Common;\nusing Sessions;\n\nnamespace Chat;\n\n//\n// CHAT ENDPOINTS\n//\n\ninterface Endpoints {\n    @post\n    @doc(\"Generate a response from the model\")\n    generate(\n        @path\n        @doc(\"The session ID\")\n        id: uuid;\n\n        @header\n        @doc(\"Custom API key\")\n        \"X-Custom-Api-Key\"?: string;\n\n        @bodyRoot\n        @doc(\"Request to generate a response from the model\")\n        body: ChatInput;\n    ): {\n        @statusCode _: \"200\";\n\n        @bodyRoot\n        @doc(\"Response from the model\")\n        body: ChatResponse;\n    } | {\n        @statusCode _: \"200\";\n        \n        @header\n        @doc(\"Content type for streaming responses\")\n        \"content-type\": \"text/event-stream\";\n\n        @bodyRoot\n        @doc(\"Streaming response from the model\")\n        body: ChunkChatResponse;\n    };\n}\n\ninterface RenderEndpoints {\n    @post\n    @doc(\"Render system prompt for the session\")\n    render(\n        @path\n        @doc(\"The session ID\")\n        id: uuid;\n\n        @bodyRoot\n        @doc(\"Request to render the system prompt for the session\")\n        body: ChatInput;\n    ): {\n        @statusCode _: \"200\";\n\n        @bodyRoot\n        @doc(\"Response from the model\")\n        body: RenderResponse;\n    };\n}\n"
  },
  {
    "path": "src/typespec/chat/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Chat;\n\n//\n// CHAT\n//"
  },
  {
    "path": "src/typespec/chat/models.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\nimport \"../docs\";\nimport \"../entries\";\nimport \"../tools\";\n\nusing TypeSpec.Http;\n\nusing Common;\nusing Docs;\nusing Entries;\nusing Tools;\n\nnamespace Chat;\n\n//\n// CHAT MODELS\n//\n\n/**\n * The reason the model stopped generating tokens. This will be `stop`\n * if the model hit a natural stop point or a provided stop sequence,\n * `length` if the maximum number of tokens specified in the request\n * was reached, `content_filter` if content was omitted due to a flag\n * from our content filters, `tool_calls` if the model called a tool.\n */\nenum FinishReason {\n    stop,\n    length,\n    content_filter,\n    tool_calls,\n}\n\n/** Determines how the session accesses history and memories */\nmodel MemoryAccessOptions {\n    /** DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release) */\n    @visibility(\"read\") // DISABLED\n    remember: boolean = false;\n\n    /** Whether previous memories and docs should be recalled or not */\n    recall: boolean = true;\n\n    /** Whether this interaction should be stored in the session history or not */\n    save: boolean = true;\n}\n\nmodel SimpleCompletionResponseFormat {\n    /** The format of the response */\n    type: \"text\" | \"json_object\" = \"text\";\n}\n\nmodel SchemaCompletionResponseFormat {\n    /** The format of the response */\n    type: \"json_schema\" = \"json_schema\";\n\n    /** The schema of the response */\n    json_schema: Record<unknown>;\n}\n\nalias CompletionResponseFormat = SimpleCompletionResponseFormat | SchemaCompletionResponseFormat;\n\nmodel CommonChatSettings {\n    /** Identifier of the model to be used */\n    `model`?: identifierSafeUnicode;\n\n    /** Indicates if the server should stream the response as it's generated */\n    stream: boolean = false;\n\n    /** Up to 4 sequences where the API will stop generating further tokens. */\n    @maxItems(4)\n    stop: string[] = #[];\n\n    /** If specified, the system will make a best effort to sample deterministically for that particular seed value */\n    @minValue(-1)\n    @maxValue(1000)\n    seed?: int16;\n\n    /** The maximum number of tokens to generate in the chat completion */\n    @minValue(1)\n    max_tokens?: uint32;\n\n    /** Modify the likelihood of specified tokens appearing in the completion */\n    logit_bias?: Record<logit_bias>;\n\n    /** Response format (set to `json_object` to restrict output to JSON) */\n    response_format?: CompletionResponseFormat;\n\n    /** Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions) */\n    agent?: uuid;\n}\n\nmodel OpenAISettings {\n    /** Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. */\n    @minValue(-2)\n    @maxValue(2)\n    frequency_penalty?: float32;\n\n    /** Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. */\n    @minValue(-2)\n    @maxValue(2)\n    presence_penalty?: float32;\n\n    /** What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic. */\n    @minValue(0)\n    @maxValue(5)\n    temperature?: float32;\n\n    /** Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.  We generally recommend altering this or temperature but not both. */\n    @minValue(0)\n    @maxValue(1)\n    top_p?: float32;\n}\n\nmodel vLLMSettings {\n    /** Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim. */\n    @minValue(0)\n    @maxValue(2)\n    repetition_penalty?: float32;\n\n    /** Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated. */\n    @minValue(0)\n    @maxValue(2)\n    length_penalty?: float32;\n\n    /** Minimum probability compared to leading token to be considered */\n    @minValue(0)\n    @maxValue(1)\n    min_p?: float32;\n}\n\nalias DefaultChatSettings = Record<unknown>;\n\nalias ChatSettings = Record<unknown>;\n\nmodel InputDefaultChatSettings extends OpenAISettings {\n    ...vLLMSettings;\n}\n\nmodel InputChatSettings extends InputDefaultChatSettings {\n    ...CommonChatSettings;\n}\n\n/** Usage statistics for the completion request */\nmodel CompletionUsage {\n    /** Number of tokens in the generated completion */\n    @visibility(\"read\")\n    completion_tokens?: uint32;\n\n    /** Number of tokens in the prompt */\n    @visibility(\"read\")\n    prompt_tokens?: uint32;\n\n    /** Total number of tokens used in the request (prompt + completion) */\n    @visibility(\"read\")\n    total_tokens?: uint32;\n}\n\nmodel ChatInputData {\n    /** A list of new input messages comprising the conversation so far. */\n    @minItems(1)\n    messages: InputChatMLMessage[];\n\n    /** (Advanced) List of tools that are provided in addition to agent's default set of tools. */\n    tools: CreateToolRequest[] | null = null;\n\n    /** Can be one of existing tools given to the agent earlier or the ones provided in this request. */\n    tool_choice?: ToolChoiceOption;\n}\n\nmodel ChatInput extends ChatInputData {\n    ...MemoryAccessOptions;\n    ...InputChatSettings;\n    ...HasMetadata;\n    \n    /** Whether to automatically run tools and send the results back to the model (requires tools or agents with tools). */\n    auto_run_tools: boolean = false;\n    \n    /** Whether to include tool requests and responses when recalling messages. */\n    recall_tools: boolean = true;\n}\n\nmodel BaseTokenLogProb {\n    token: string;\n\n    /** The log probability of the token */\n    logprob: float32;\n\n    bytes?: uint16[];\n}\n\nmodel TokenLogProb extends BaseTokenLogProb {\n    /** The log probabilities of the tokens */\n    @visibility(\"read\")\n    @minItems(1)\n    top_logprobs: BaseTokenLogProb[];\n}\n\nmodel LogProbResponse {\n    /** The log probabilities of the tokens */\n    content: TokenLogProb[] | null;\n}\n\nmodel BaseChatOutput {\n    index: uint32;\n\n    /** The reason the model stopped generating tokens */\n    finish_reason: FinishReason = FinishReason.stop;\n\n    /** The log probabilities of tokens */\n    logprobs?: LogProbResponse;\n\n    /** The tool calls generated by the model */\n    tool_calls?: ChosenToolCall[];\n}\n\n/** The output returned by the model. Note that, depending on the model provider, they might return more than one message. */\n// TODO: Need to add support for tool calls\nmodel SingleChatOutput extends BaseChatOutput {\n    message: ChatMLMessage;\n}\n\n/** The output returned by the model. Note that, depending on the model provider, they might return more than one message. */\nmodel MultipleChatOutput extends BaseChatOutput {\n    @visibility(\"read\")\n    @minItems(1)\n    messages: ChatMLMessage[];\n}\n\nalias ChatOutput = SingleChatOutput | MultipleChatOutput;\n\n/** Streaming chat completion output */\nmodel ChatOutputChunk extends BaseChatOutput {\n    /** The message generated by the model */\n    delta: InputChatMLMessage;\n}\n\nmodel BaseChatResponse {\n    /** Usage statistics for the completion request */\n    usage?: CompletionUsage;\n\n    /** Background job IDs that may have been spawned from this interaction. */\n    @visibility(\"read\")\n    jobs: uuid[] = #[];\n\n    /** Documents referenced for this request (for citation purposes). */\n    @visibility(\"read\")\n    docs: DocReference[] = #[];\n\n    ...HasCreatedAt;\n    ...HasId;\n}\n\nmodel ChunkChatResponse extends BaseChatResponse {\n    @header contentType: eventStream;\n\n    /** The deltas generated by the model */\n    choices: ChatOutputChunk[];\n}\n\nmodel MessageChatResponse extends BaseChatResponse {\n    @header contentType: json;\n\n    /** The deltas generated by the model */\n    choices: ChatOutput[];\n}\n\nalias ChatResponse = ChunkChatResponse | MessageChatResponse;\n\nmodel RenderResponse extends ChatInputData {\n    /** Documents referenced for this request (for citation purposes). */\n    @visibility(\"read\")\n    docs: DocReference[] = #[];\n}\n"
  },
  {
    "path": "src/typespec/common/constants.tsp",
    "content": "namespace Common;\n\n//\n// COMMON CONSTANTS\n//\n\nconst defaultSessionSystemMessage: string = \"\"\"\n{%- if agent.name -%}\nYou are {{agent.name}}.{{\" \"}}\n{%- endif -%}\n\n{%- if agent.about -%}\nAbout you: {{agent.about}}.{{\" \"}}\n{%- endif -%}\n\n{%- if user -%}\nYou are talking to a user\n  {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\n    {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n  {%- endif -%}\n{%- endif -%}\n\n{{NEWLINE}}\n\n{%- if session.situation -%}\nSituation: {{session.situation}}\n{%- endif -%}\n\n{{NEWLINE+NEWLINE}}\n\n{%- if agent.instructions -%}\nInstructions:{{NEWLINE}}\n  {%- if agent.instructions is string -%}\n    {{agent.instructions}}{{NEWLINE}}\n  {%- else -%}\n    {%- for instruction in agent.instructions -%}\n      - {{instruction}}{{NEWLINE}}\n    {%- endfor -%}\n  {%- endif -%}\n  {{NEWLINE}}\n{%- endif -%}\n\n{%- if docs -%}\nRelevant documents:{{NEWLINE}}\n  {%- for doc in docs -%}\n    {{doc.title}}{{NEWLINE}}\n    {%- if doc.content is string -%}\n      {{doc.content}}{{NEWLINE}}\n    {%- else -%}\n      {%- for snippet in doc.content -%}\n        {{snippet}}{{NEWLINE}}\n      {%- endfor -%}\n    {%- endif -%}\n    {{\"---\"}}\n  {%- endfor -%}\n{%- endif -%}\n\"\"\";"
  },
  {
    "path": "src/typespec/common/interfaces.tsp",
    "content": "import \"@typespec/http\";\nimport \"@typespec/sse\";\n\nimport \"./scalars.tsp\";\nimport \"./types.tsp\";\n\nusing TypeSpec.Http;\nusing TypeSpec.SSE;\n\nnamespace Common;\n\n//\n// COMMON INTERFACES\n//\n\ninterface LimitOffsetPagination<\n    Type,\n    DocString extends valueof string = \"List resources (paginated)\"\n> {\n    @get\n    @doc(DocString)\n    list(...PaginationOptions): {\n        items: Type[];\n    };\n}\n\ninterface CreateEndpoint<\n    CreateType,\n    Type,\n    DocString extends valueof string = \"Create a new resource\"\n> {\n    @post\n    @doc(DocString)\n    create(...CreateType): {\n        @statusCode _: \"201\";\n\n        @body\n        @doc(\"Details of the resource created along with ID\")\n        body: Type;\n    };\n}\n\ninterface CreateOrUpdateEndpoint<\n    CreateOrUpdateType,\n    Type,\n    DocString extends valueof string = \"Create or update a resource (ID is required in payload; existing resource will be overwritten)\"\n> {\n    @post\n    @doc(DocString)\n    createOrUpdate(...CreateOrUpdateType): {\n        @statusCode _: \"200\";\n\n        @body\n        @doc(\"Details of the resource updated along with ID\")\n        body: Type;\n    };\n}\n\ninterface UpdateEndpoint<\n    UpdateType,\n    Type,\n    DocString extends valueof string = \"Update resource by id (overwrite existing values)\"\n> {\n    @put\n    @doc(DocString)\n    update(\n        @path\n        @doc(\"ID of the resource\")\n        id: uuid,\n\n        ...UpdateType,\n    ): {\n        @statusCode _: \"200\";\n\n        @body\n        @doc(\"Details of the resource updated along with ID\")\n        body: Type;\n    };\n}\n\ninterface PatchEndpoint<\n    PatchType,\n    Type,\n    DocString extends valueof string = \"Patch resource by its id (merge changes with existing values)\"\n> {\n    @patch\n    @doc(DocString)\n    patch(\n        @path\n        @doc(\"ID of the resource\")\n        id: uuid,\n\n        ...PatchType,\n    ): {\n        @statusCode _: \"200\";\n\n        @body\n        @doc(\"Details of the resource patched along with ID\")\n        body: Type;\n    };\n}\n\ninterface GetEndpoint<\n    Type,\n    DocString extends valueof string = \"Get resource by id\"\n> {\n    @get\n    @doc(DocString)\n    get(\n        @path\n        @doc(\"ID of the resource\")\n        id: uuid,\n    ): Type;\n}\n\ninterface DeleteEndpoint<DocString extends valueof string = \"Delete resource by id\"> {\n    @delete\n    @doc(DocString)\n    delete(\n        @path\n        @doc(\"ID of the resource\")\n        id: uuid,\n    ): {\n        @statusCode _: \"202\";\n\n        @body\n        @doc(\"Details of the resource deleted along with ID\")\n        body: ResourceDeletedResponse;\n    };\n}\n\ninterface ChildLimitOffsetPagination<\n    T,\n    DocString extends valueof string = \"List items owned by the given parent\"\n> {\n    @get\n    @doc(DocString)\n    list(\n        @path\n        @doc(\"ID of parent\")\n        id: uuid,\n\n        ...PaginationOptions,\n    ): {\n        items: T[];\n    };\n}\n\n\ninterface ChildCreateEndpoint<\n    CreateType,\n    Type,\n    DocString extends valueof string = \"Create a new resource owned by the given parent\"\n> {\n    @post\n    @doc(DocString)\n    create(\n        @path\n        @doc(\"ID of parent resource\")\n        id: uuid,\n\n        ...CreateType,\n    ): {\n        @statusCode _: \"201\";\n\n        @body\n        @doc(\"Details of the resource created along with ID\")\n        body: Type;\n    };\n}\n\ninterface ChildCreateOrUpdateEndpoint<\n    CreateOrUpdateType,\n    Type,\n    DocString extends valueof string = \"Create or update a resource owned by the given parent\"\n> {\n    @post\n    @doc(DocString)\n    createOrUpdate(\n        @path\n        @doc(\"ID of parent resource\")\n        parent_id: uuid,\n\n        ...CreateOrUpdateType,\n    ): {\n        @statusCode _: \"200\";\n\n        @body\n        @doc(\"Details of the resource updated along with ID\")\n        body: Type;\n    };\n}\n\ninterface ChildDeleteEndpoint<DocString extends valueof string = \"Delete a resource owned by the given parent using its id\"> {\n    @delete\n    @doc(DocString)\n    delete(\n        @path\n        @doc(\"ID of parent resource\")\n        id: uuid,\n\n        @path\n        @doc(\"ID of the resource to be deleted\")\n        child_id: uuid,\n    ): {\n        @statusCode _: \"202\";\n\n        @body\n        @doc(\"Details of the resource deleted along with ID\")\n        body: ResourceDeletedResponse;\n    };\n}\n\ninterface ChildUpdateEndpoint<\n    UpdateType,\n    Type,\n    DocString extends valueof string = \"Update a resource owned by the given parent using its id\"\n> {\n    @put\n    @doc(DocString)\n    update(\n        @path\n        @doc(\"ID of parent resource\")\n        id: uuid,\n\n        @path\n        @doc(\"ID of the resource to be updated\")\n        child_id: uuid,\n\n        ...UpdateType,\n    ): {\n        @statusCode _: \"200\";\n\n        @body\n        @doc(\"Details of the resource updated along with ID\")\n        body: Type;\n    };\n}\n\ninterface ChildPatchEndpoint<\n    PatchType,\n    Type,\n    DocString extends valueof string = \"Patch a resource owned by the given parent using its id\"\n> {\n    @patch\n    @doc(DocString)\n    patch(\n        @path\n        @doc(\"ID of parent resource\")\n        id: uuid,\n\n        @path\n        @doc(\"ID of the resource to be patched\")\n        child_id: uuid,\n\n        ...PatchType,\n    ): {\n        @statusCode _: \"200\";\n\n        @body\n        @doc(\"Details of the resource patched along with ID\")\n        body: Type;\n    };\n}\n\ninterface ChildStreamEndpoint<\n    T,\n    DocString extends valueof string = \"Stream events emitted by the parent\"\n> {\n    @get\n    @doc(DocString)\n    stream(\n        @path\n        @doc(\"ID of parent\")\n        id: uuid,\n\n        @query\n        @doc(\"Next page token\")\n        next_token: string | null = null,\n    ): SSEStream<StreamEvent<T>>;\n}"
  },
  {
    "path": "src/typespec/common/main.tsp",
    "content": "import \"./constants.tsp\";\nimport \"./interfaces.tsp\";\nimport \"./mixins.tsp\";\nimport \"./scalars.tsp\";\nimport \"./types.tsp\";\n\nnamespace Common;\n\n//\n// COMMON\n//\n"
  },
  {
    "path": "src/typespec/common/mixins.tsp",
    "content": "import \"./scalars.tsp\";\nimport \"./types.tsp\";\n\nnamespace Common;\n\n//\n// COMMON MIXINS\n//\n\nmodel HasCreatedAtOptional {\n    /** When this resource was created as UTC date-time */\n    @visibility(\"read\")\n    created_at?: utcDateTime;\n}\n\nmodel HasCreatedAt {\n    /** When this resource was created as UTC date-time */\n    @visibility(\"read\")\n    created_at: utcDateTime;\n}\n\nmodel HasUpdatedAt {\n    /** When this resource was updated as UTC date-time */\n    @visibility(\"read\")\n    updated_at: utcDateTime;\n}\n\nmodel HasDeletedAt {\n    /** When this resource was deleted as UTC date-time */\n    @visibility(\"read\")\n    deleted_at: utcDateTime;\n}\n\nmodel HasTimestamps {\n    ...HasCreatedAt;\n    ...HasUpdatedAt;\n}\n\nmodel HasIdOptional {\n    @visibility(\"read\")\n    id?: uuid;\n}\n\nmodel HasId {\n    @visibility(\"read\")\n    @key\n    id: uuid;\n}\n\n/** (Optional) Metadata for a resource */\nmodel HasMetadata {\n    metadata?: Metadata;\n}\n\nmodel HasJobs {\n    /** IDs (if any) of jobs created as part of this request */\n    @visibility(\"read\")\n    jobs: uuid[] = #[];\n}"
  },
  {
    "path": "src/typespec/common/scalars.tsp",
    "content": "namespace Common;\n\n//\n// COMMON SCALARS\n//\n\n@format(\"uuid\")\nscalar uuid extends string;\n\nalias concreteType = numeric | string | boolean | null;\n\n/**\n * For Unicode character safety\n * See: https://unicode.org/reports/tr31/\n * See: https://www.unicode.org/reports/tr39/#Identifier_Characters\n */\n@maxLength(120)\n@pattern(\"^[\\\\p{L}\\\\p{Nl}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]+[\\\\p{ID_Start}\\\\p{Mn}\\\\p{Mc}\\\\p{Nd}\\\\p{Pc}\\\\p{Pattern_Syntax}\\\\p{Pattern_White_Space}]*$\")\nscalar identifierSafeUnicode extends string;\n\n/** Valid mime types */\n@maxLength(120)\n@pattern(\"^(application|audio|font|example|image|message|model|multipart|text|video|x-(?:[0-9A-Za-z!#$%&'*+.^_`|~-]+))\\\\/([0-9A-Za-z!#$%&'*+.^_`|~-]+)$\")\nscalar mimeType extends string;\n\n/** Valid python identifier names */\n@pattern(\"^[^\\\\W0-9]\\\\w*$\")\n@maxLength(40)\nscalar validPythonIdentifier extends string;\n\n/** A valid step label */\n@maxLength(120)\n@pattern(\"^[^0-9]|^[0-9]+[^0-9].*$\")\nscalar stepLabel extends string;\n\n/** Limit the number of results */\n@minValue(1)\n@maxValueExclusive(1000)\nscalar limit extends uint16;\n\n/** Offset to apply to the results */\n@minValue(0)\nscalar offset extends uint32;\n\n/** Sort by a field */\nalias sortBy = \"created_at\" | \"updated_at\";\n\n/** Sort direction */\nalias sortDirection = \"asc\" | \"desc\";\n\n/** Contents of a document */\n@maxLength(30000)\nscalar content extends string;\n\n@minValue(-100.0)\n@maxValue(100.0)\nscalar logit_bias extends float32;\n\n/** YAML Mime Type; see: https://stackoverflow.com/questions/332129/yaml-media-type */\nalias yaml = \"application/yaml\" | \"text/x-yaml\" | \"text/yaml\";\nalias json = \"application/json\";\nalias eventStream = \"text/event-stream\";\n\n/** Different possible sources that can produce new entries */\nalias entrySource =\n    | \"api_request\"\n    | \"api_response\"\n    | \"tool_request\"\n    | \"tool_response\"\n    | \"internal\"\n    | \"summarizer\"\n    | \"meta\";\n\n/** A simple python expression compatible with SimpleEval. */\nscalar PyExpression extends string;\n\n/** A valid jinja template. */\nscalar JinjaTemplate extends string;\n\n/**\n * For canonical names (machine-friendly identifiers)\n * Must start with a letter and can only contain letters, numbers, and underscores\n */\n@minLength(1)\n@maxLength(255)\n@pattern(\"^[a-zA-Z][a-zA-Z0-9_]*$\")\nscalar canonicalName extends string;\n\n/**\n * For display names\n * Must be between 1 and 255 characters\n */\n@minLength(1)\n@maxLength(255)\nscalar displayName extends string;\n"
  },
  {
    "path": "src/typespec/common/types.tsp",
    "content": "import \"@typespec/events\";\nimport \"@typespec/http\";\nimport \"@typespec/openapi\";\n\nusing TypeSpec.Events;\nusing TypeSpec.Http;\nusing TypeSpec.OpenAPI;\n\nnamespace Common;\n\n//\n// COMMON TYPES\n//\n\nalias Metadata = Record<unknown>;\nalias MetadataFilter = Record<unknown>;\n\nmodel ResourceDeletedResponse {\n    @doc(\"ID of deleted resource\")\n    id: uuid;\n    ...HasDeletedAt;\n    ...HasJobs;\n}\n\nmodel BulkResourceDeletedResponse {\n    @doc(\"IDs of deleted resources\")\n    ids: uuid[];\n    ...HasDeletedAt;\n    ...HasJobs;\n}\n\nmodel PaginationOptions {\n    @query\n    @doc(\"Limit the number of items returned\")\n    limit: limit = 100,\n\n    @query\n    @doc(\"Offset the items returned\")\n    offset: offset = 0,\n\n    /** Sort by a field */\n    @query sort_by: sortBy = \"created_at\",\n\n    /** Sort direction */\n    @query direction: sortDirection = \"asc\",\n\n    /** Object to filter results by metadata */\n    @query metadata_filter: Record<unknown> = #{},\n}\n\n@events\nunion StreamEvent<T> {\n    T;\n}\n"
  },
  {
    "path": "src/typespec/docs/endpoints.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../agents\";\nimport \"../common\";\nimport \"../users\";\nimport \"./models.tsp\";\n\nusing TypeSpec.Http;\n\nusing Agents;\nusing Common;\nusing Users;\n\nnamespace Docs;\n\n//\n// DOCS ENDPOINTS\n//\n\ninterface UserEndpoints\n    extends ChildDeleteEndpoint<\"Delete a Doc for this User\">,\n        ChildCreateEndpoint<CreateDocRequest, Doc, \"Create a Doc for this User\"> {\n    @get\n    @doc(\"List Docs owned by a User\")\n    list(\n        @path\n        @doc(\"ID of parent\")\n        id: uuid,\n\n        ...PaginationOptions,\n        \n        @query\n        @doc(\"Whether to include embeddings in the response\")\n        include_embeddings?: boolean = true,\n    ): {\n        items: Doc[];\n    };\n}\n\ninterface AgentEndpoints\n    extends ChildDeleteEndpoint<\"Delete a Doc for this Agent\">,\n        ChildCreateEndpoint<CreateDocRequest, Doc, \"Create a Doc for this Agent\"> {\n    @get\n    @doc(\"List Docs owned by an Agent\")\n    list(\n        @path\n        @doc(\"ID of parent\")\n        id: uuid,\n\n        ...PaginationOptions,\n        \n        @query\n        @doc(\"Whether to include embeddings in the response\")\n        include_embeddings?: boolean = true,\n    ): {\n        items: Doc[];\n    };\n}\n\ninterface IndividualDocEndpoints {\n    @get\n    @doc(\"Get Doc by id\")\n    get(\n        @path\n        @doc(\"ID of the resource\")\n        id: uuid,\n        \n        @query\n        @doc(\"Whether to include embeddings in the response\")\n        include_embeddings?: boolean = true,\n    ): Doc;\n}\n\ninterface SearchEndpoints<DocString extends valueof string = \"Search for documents\"> {\n    @doc(DocString)\n    @post\n    search(\n        @path\n        @doc(\"ID of the parent\")\n        id: uuid,\n\n        body: DocSearchRequest,\n    ): DocSearchResponse;\n}\n\ninterface BulkDeleteEndpoints<DocString extends valueof string = \"Bulk delete documents\"> {\n    @doc(DocString)\n    @delete\n    deleteBulk(\n        @path\n        @doc(\"ID of the parent\")\n        id: uuid,\n\n        ...BulkDeleteDocsRequest,\n    ): {\n        @statusCode _: \"202\";\n\n        @body\n        @doc(\"Details of the resource deleted along with ID\")\n        body: ResourceDeletedResponse[];\n    };\n}\n\ninterface EmbedEndpoints {\n    @doc(\"Embed a query for search\")\n    @post\n    embed(body: EmbedQueryRequest): EmbedQueryResponse;\n}\n"
  },
  {
    "path": "src/typespec/docs/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Docs;\n\n//\n// DOCS\n//"
  },
  {
    "path": "src/typespec/docs/models.tsp",
    "content": "import \"../agents\";\nimport \"../common\";\nimport \"../users\";\n\nusing Agents;\nusing Common;\nusing Users;\n\nnamespace Docs;\n\n//\n// DOCS MODELS\n//\n\nmodel Doc {\n    ...HasId;\n    ...HasMetadata;\n    ...HasCreatedAt;\n\n    /** Title describing what this document contains */\n    @maxLength(800)\n    title: string;\n\n    /** Contents of the document */\n    content: string | string[];\n\n    /** Embeddings for the document */\n    @visibility(\"read\")\n    embeddings: float32[] | float32[][] | null = null;\n\n    @visibility(\"read\")\n    /** Modality of the document */\n    modality?: string;\n\n    @visibility(\"read\")\n    /** Language of the document */\n    language?: string;\n\n    @visibility(\"read\")\n    /** Embedding model used for the document */\n    embedding_model?: string;\n\n    @visibility(\"read\")\n    /** Dimensions of the embedding model */\n    embedding_dimensions?: uint16;\n}\n\n/** Payload for creating a doc */\n@withVisibility(\"create\")\nmodel CreateDocRequest {\n    ...HasId;\n    ...HasMetadata;\n    ...HasCreatedAt;\n\n    /** Title describing what this document contains */\n    @maxLength(800)\n    title: string;\n\n    /** Contents of the document. Each string is limited to 30k characters. */\n    content: content | content[];\n\n    /** Instruction for the embedding model. */\n    embed_instruction: string | null = null;\n}\n\nmodel DocOwner {\n    id: User.id | Agent.id;\n    role: \"user\" | \"agent\";\n}\n\nmodel Snippet {\n    index: uint16;\n    content: string;\n    embedding?: float[];\n}\n\nmodel DocReference {\n    ...HasMetadata;\n\n    /** The owner of this document. */\n    owner: DocOwner;\n\n    /** ID of the document */\n    id: Doc.id;\n\n    title?: string;\n\n    snippet: Snippet;\n    distance: float | null = null;\n}\n\nmodel SingleEmbedQueryRequest {\n    /** Text to embed */\n    text: string;\n\n    /** Instruction for the embedding model. */\n    embed_instruction: string = \"\";\n}\n\nmodel MultipleEmbedQueryRequest {\n    /** Texts to embed */\n    @minItems(1)\n    @maxItems(100)\n    text: string[];\n\n    /** Instruction for the embedding model. */\n    embed_instruction: string = \"\";\n}\n\nalias EmbedQueryRequest = SingleEmbedQueryRequest | MultipleEmbedQueryRequest;\n\nmodel EmbedQueryResponse {\n    /** The embedded vectors */\n    vectors: float[][];\n}\n\n// Base search parameters common to all search types\nmodel BaseSearchParams {\n    /** The limit of documents to return */\n    @minValue(1)\n    @maxValue(50)\n    limit: uint16 = 10;\n    \n    /** Metadata filter to apply to the search */\n    metadata_filter: MetadataFilter = #{};\n\n    /** Whether to include embeddings in the response */\n    include_embeddings: boolean = true;\n}\n\n// Text search specific parameters\nmodel TextSearchParams {\n    /** Text to use in the search */\n    text: string;\n    \n    /** The language to be used for text search. Support for other languages coming soon. */\n    lang: string = \"en-US\";\n    \n    /** Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search. */\n    @minValue(0)\n    @maxValue(1)\n    trigram_similarity_threshold: float | null = null;\n}\n\n// Vector search specific parameters  \nmodel VectorSearchParams {\n    /** Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown. */\n    vector: float[];\n    \n    /** The confidence cutoff level */\n    @minValue(-1)\n    @maxValue(1)\n    confidence: float = 0.5;\n    \n    /** MMR Strength (mmr_strength = 1 - mmr_lambda) */\n    @minValue(0)\n    @maxValueExclusive(1)\n    mmr_strength?: float = 0.5;\n}\n\n// Hybrid search parameters\nmodel HybridSearchParams {\n    /** The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; */\n    @minValue(0)\n    @maxValue(1)\n    alpha: float = 0.5;\n    \n    /** The k_multiplier to control how many intermediate results to fetch before final scoring */\n    @minValue(1)\n    @maxValue(10)\n    k_multiplier: int8 = 5;\n}\n\n// Composed search request models\nmodel TextOnlyDocSearchRequest {\n    ...BaseSearchParams;\n    ...TextSearchParams;\n    vector?: never;\n}\n\nmodel VectorDocSearchRequest {\n    ...BaseSearchParams;\n    ...VectorSearchParams;\n    text?: never;\n}\n\nmodel HybridDocSearchRequest {\n    ...BaseSearchParams;\n    ...TextSearchParams;\n    ...VectorSearchParams;\n    ...HybridSearchParams;\n}\n\nalias DocSearchRequest = VectorDocSearchRequest | TextOnlyDocSearchRequest | HybridDocSearchRequest;\n\nmodel DocSearchResponse {\n    /** The documents that were found */\n    docs: DocReference[];\n\n    /** The time taken to search in seconds */\n    @minValueExclusive(0)\n    time: float;\n}\n\nmodel BulkDeleteDocsRequest {\n    /** Metadata filter to apply to the search */\n    metadata_filter: MetadataFilter = #{};\n\n    /** Delete all docs */\n    delete_all: boolean = false;\n}\n"
  },
  {
    "path": "src/typespec/entries/endpoints.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\nimport \"../sessions\";\nimport \"./models.tsp\";\n\nusing TypeSpec.Http;\n\nusing Common;\nusing Sessions;\n\nnamespace Entries;\n\n//\n// ENTRY ENDPOINTS\n//\n\ninterface Endpoints\n    extends DeleteEndpoint<\"Clear the history of a Session (resets the Session)\"> {\n    @get\n    @doc(\"Get history of a Session\")\n    history(\n        @path\n        @doc(\"ID of parent\")\n        id: uuid,\n    ): History;\n}\n"
  },
  {
    "path": "src/typespec/entries/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Entries;\n\n//\n// ENTRIES\n//"
  },
  {
    "path": "src/typespec/entries/models.tsp",
    "content": "import \"../common\";\nimport \"../sessions\";\nimport \"../tools\";\n\nusing Common;\nusing Sessions;\nusing Tools;\n\nnamespace Entries;\n\n//\n// ENTRY MODELS\n//\n\n/** Image detail level */\nenum ImageDetail {\n    low,\n    high,\n    auto,\n}\n\n/** ChatML role (system|assistant|user|tool) */\nenum ChatMLRole {\n    user,\n    assistant,\n    system,\n    tool,\n}\n\nmodel ImageURL<T extends string = string> {\n    /** Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`) */\n    url: T;\n\n    /** The detail level of the image */\n    detail: ImageDetail = ImageDetail.auto;\n}\n\nmodel ChatMLTextContentPart<T extends string = string> {\n    text: T;\n\n    /** The type (fixed to 'text') */\n    type: \"text\" = \"text\";\n}\n\nmodel ChatMLImageContentPart<T extends string = string> {\n    /** The image URL */\n    image_url: ImageURL;\n\n    /** The type (fixed to 'image_url') */\n    type: \"image_url\" = \"image_url\";\n}\n\nmodel ChatMLAnthropicImageSource<T extends string = string> {\n    type: \"base64\" = \"base64\";\n    media_type: string;\n    data: T;\n}\n\nmodel ChatMLAnthropicImageContentPart<T extends string = string> {\n    type: \"image\" = \"image\";\n    source: ChatMLAnthropicImageSource<T>;\n}\n\n/** Anthropic image content part */\nmodel ChatMLAnthropicContentPart<T extends string = string> {\n    tool_use_id: string;\n    type: \"tool_result\" = \"tool_result\";\n    content: ChatMLTextContentPart<T>[] | ChatMLAnthropicImageContentPart<T>[];\n}\n\nalias ChatMLContentPart<T extends string = string> = ChatMLTextContentPart<T> | ChatMLImageContentPart<T> | ChatMLAnthropicContentPart<T>;\n\nmodel ChatMLMessage<T extends string = string> {\n    /** The role of the message */\n    role: ChatMLRole;\n    tool_call_id?: string;\n\n    /** The content parts of the message */\n    content: T | T[] | ChatMLContentPart<T>[] | null;\n\n    /** Name */\n    name?: string;\n\n    /** Tool calls generated by the model. */\n    tool_calls?: ChosenToolCall[] | null = #[];\n\n    ...HasCreatedAtOptional;\n    ...HasIdOptional;\n}\n\n@withVisibility(\"create\")\nmodel InputChatMLMessage<T extends string = string> {\n    ...ChatMLMessage<T>;\n}\n\nalias EntryContent = ChatMLContentPart<string>[] | Tool | ChosenToolCall | string | ToolResponse;\n\nmodel BaseEntry {\n    role: ChatMLRole;\n    name: string | null = null;\n    content: EntryContent | EntryContent[];\n    source: entrySource;\n\n    tokenizer: string;\n    token_count: uint16;\n    \"model\": string = \"gpt-4o-mini\";\n\n    /** Tool calls generated by the model. */\n    tool_calls?: ChosenToolCall[] | null = null;\n\n    /** The tool call id of the tool call this message is a response to */\n    tool_call_id?: string | null = null;\n\n    /** This is the time that this event refers to. */\n    timestamp: utcDateTime;\n}\n\nmodel Entry extends BaseEntry {\n    /** This is the time it was added to the database */\n    ...HasCreatedAt;\n    ...HasId;\n}\n\nmodel Relation {\n    head: uuid;\n    relation: string;\n    tail: uuid;\n}\n\nmodel History {\n    entries: Entry[];\n    relations: Relation[];\n    session_id: Session.id;\n\n    ...HasCreatedAt;\n}"
  },
  {
    "path": "src/typespec/executions/endpoints.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\nimport \"./models.tsp\";\n\nusing TypeSpec.Http;\n\nusing Common;\n\nnamespace Executions;\n\n//\n// EXECUTION ENDPOINTS\n//\n\ninterface Endpoints\n    extends GetEndpoint<Execution, \"Get an Execution by id\">,\n        UpdateEndpoint<\n            UpdateExecutionRequest,\n            Execution,\n            \"Update an existing Execution\"\n        > {}\n\ninterface PublicEndpoints {\n    @post\n    @useAuth([])\n    @doc(\"Resume an execution with a task token\")\n    resumeWithTaskToken(\n        @header contentType: json,\n\n        // Uses a query parameter `task_token` to get the task token\n        // See `TaskTokenResumeExecutionRequest` for more details\n\n        @bodyRoot\n        @doc(\"Request to resume an execution with a task token\")\n        body: TaskTokenResumeExecutionRequest,\n    ): {\n        @statusCode _: \"200\";\n\n        @body\n        @doc(\"Response of resuming the execution with the ID found\")\n        body: Execution;\n    };\n}\n\ninterface TaskEndpoints\n    extends ChildCreateEndpoint<\n            CreateExecutionRequest,\n            Execution,\n            \"Create an execution for the given task\"\n        >,\n        ChildLimitOffsetPagination<\n            Execution,\n            \"List executions of the given task\"\n        > {}\n\ninterface TransitionEndpoints\n    extends ChildLimitOffsetPagination<\n            {\n                transitions: Transition[],\n            },\n            \"List the Transitions of an Execution by id\"\n        > {}\n\ninterface TransitionStreamEndpoints\n    extends ChildStreamEndpoint<\n            TransitionEvent,\n            \"Stream events emitted by the given execution\"\n        > {}\n\ninterface ExecutionStatusStreamEndpoints\n    extends ChildStreamEndpoint<\n            ExecutionStatusEvent,\n            \"Stream the status of an execution\"\n        > {}\n"
  },
  {
    "path": "src/typespec/executions/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Executions;\n\n//\n// EXECUTIONS\n//"
  },
  {
    "path": "src/typespec/executions/models.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\nimport \"../tasks\";\n\nusing TypeSpec.Http;\n\nusing Common;\nusing Tasks;\n\nnamespace Executions;\n\n//\n// EXECUTION MODELS\n//\n\n/** The status of an execution */\nalias ExecutionStatus = (\n    /** The execution is queued and waiting to start */\n    | \"queued\"\n\n    /** The execution is starting */\n    | \"starting\"\n\n    /** The execution is running */\n    | \"running\"\n\n    /** The execution is awaiting input */\n    | \"awaiting_input\"\n\n    /** The execution has succeeded */\n    | \"succeeded\"\n\n    /** The execution has failed */\n    | \"failed\"\n\n    /** The execution has been cancelled by the user */\n    | \"cancelled\"\n);\n\nmodel Execution {\n    /** The ID of the task that the execution is running */\n    @visibility(\"read\")\n    task_id: Task.id;\n\n    /** The status of the execution */\n    @visibility(\"read\")\n    status: ExecutionStatus;\n\n    /** The input to the execution */\n    input: Record<unknown>;\n\n    /** The output of the execution if it succeeded */\n    output?: unknown;\n\n    /** The error of the execution if it failed */\n    error?: string;\n\n    /** The number of transitions in this execution */\n    transition_count?: uint8;\n\n    ...HasTimestamps;\n    ...HasMetadata;\n    ...HasId;\n}\n\nmodel ExecutionStatusEvent {\n    /** The ID of the execution */\n    execution_id: Execution.id;\n\n    /** The status of the execution */\n    status: ExecutionStatus;\n\n    /** The updated_at timestamp of the execution */\n    updated_at: string;\n\n    /** The error of the execution if it failed */\n    error?: string;\n\n    /** The number of transitions in this execution */\n    transition_count?: uint8;\n\n    /** The metadata of the execution */\n    ...HasMetadata\n}\n\n/** Payload for creating an execution */\n@withVisibility(\"create\")\nmodel CreateExecutionRequest {\n    ...Execution;\n}\n\n@discriminator(\"status\")\nmodel UpdateExecutionRequest {\n    status: ExecutionStatus;\n}\n\nmodel StopExecutionRequest extends UpdateExecutionRequest {\n    status: \"cancelled\" = \"cancelled\";\n\n    /** The reason for stopping the execution */\n    reason: string | null = null;\n}\n\nmodel ResumeExecutionRequest extends UpdateExecutionRequest {\n    status: \"running\" = \"running\";\n\n    /** The input to resume the execution with */\n    input?: Record<unknown>;\n}\n\nmodel TaskTokenResumeExecutionRequest {\n    status: \"running\" = \"running\";\n\n    /** A Task Token is a unique identifier for a specific Task Execution. */\n    @query\n    task_token: string;\n\n    /** The input to resume the execution with */\n    input?: Record<unknown>;\n}\n\n/*\n- finish\n- wait\n- error\n- step\n- cancelled\n*/\n\nalias TransitionType = (\n    | \"init\"\n    | \"init_branch\"\n    | \"finish\"\n    | \"finish_branch\"\n    | \"wait\"\n    | \"resume\"\n    | \"error\"\n    | \"step\"\n    | \"cancelled\"\n);\n\nmodel TransitionTarget {\n    workflow: identifierSafeUnicode;\n    step: uint16;\n    scope_id: uuid;\n}\n\nmodel TransitionEvent {\n    @visibility(\"read\")\n    type: TransitionType;\n\n    @visibility(\"read\")\n    output: unknown;\n\n    ...HasTimestamps;\n}\n\nmodel Transition extends TransitionEvent {\n    @visibility(\"read\")\n    execution_id: Execution.id;\n\n    @visibility(\"read\")\n    current: TransitionTarget;\n\n    @visibility(\"read\")\n    next: TransitionTarget | null;\n\n    @visibility(\"read\")\n    step_label?: stepLabel;\n\n    ...HasId;\n    ...HasMetadata;\n}\n"
  },
  {
    "path": "src/typespec/files/endpoints.tsp",
    "content": "import \"../common\";\nimport \"./models.tsp\";\n\nusing Common;\n\nnamespace Files;\n\n//\n// FILE ENDPOINTS\n//\n\ninterface Endpoints\n    extends GetEndpoint<File, \"Get a File by its id\">,\n        CreateEndpoint<CreateFileRequest, File, \"Create a new File\"> {}\n"
  },
  {
    "path": "src/typespec/files/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Files;\n\n//\n// FILES\n//\n"
  },
  {
    "path": "src/typespec/files/models.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Files;\n\n//\n// FILE MODELS\n//\n\nmodel File {\n    ...HasId;\n    ...HasCreatedAt;\n\n    /** Name of the file */\n    name: identifierSafeUnicode;\n\n    /** Description of the file */\n    description: string = \"\";\n\n    /** MIME type of the file */\n    mime_type: mimeType | null = null;\n\n    /** Base64 encoded content of the file */\n    content: string;\n\n    /** Project canonical name of the file */\n    project?: canonicalName;\n\n    /** Size of the file in bytes */\n    @visibility(\"read\")\n    @minValue(1)\n    size: uint64;\n\n    /** Hash of the file */\n    @visibility(\"read\")\n    hash: string;\n}\n\n/** Payload for creating a file */\n@withVisibility(\"create\")\nmodel CreateFileRequest {\n    ...File;\n}\n"
  },
  {
    "path": "src/typespec/jobs/endpoints.tsp",
    "content": "import \"../common\";\nimport \"./models.tsp\";\n\nusing Common;\n\nnamespace Jobs;\n\n//\n// JOB ENDPOINTS\n//\n\ninterface Endpoints\n    extends GetEndpoint<\n            JobStatus,\n            \"Get the status of an existing Job by its id\"\n        > {}\n"
  },
  {
    "path": "src/typespec/jobs/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Jobs;\n\n//\n// JOBS\n//"
  },
  {
    "path": "src/typespec/jobs/models.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Jobs;\n\n//\n// JOB MODELS\n//\n\n/** Current state (one of: pending, in_progress, retrying, succeeded, aborted, failed) */\nenum JobState {\n    pending,\n    in_progress,\n    retrying,\n    succeeded,\n    aborted,\n    failed,\n    \"unknown\",\n}\n\nmodel JobStatus {\n    ...HasId;\n    ...HasTimestamps;\n\n    /** Name of the job */\n    name: identifierSafeUnicode = identifierSafeUnicode(\"\");\n\n    /** Reason for the current state of the job */\n    reason: string = \"\";\n\n    /** Whether this Job supports progress updates */\n    has_progress: boolean = false;\n\n    /** Progress percentage */\n    @minValue(0)\n    @maxValue(100)\n    progress: float32 = 0.0;\n\n    /** Current state of the job */\n    state: JobState = JobState.pending;\n}"
  },
  {
    "path": "src/typespec/main.tsp",
    "content": "import \"@typespec/http\";\nimport \"@typespec/openapi\";\nimport \"@typespec/versioning\";\n\nimport \"./agents\";\nimport \"./chat\";\nimport \"./docs\";\nimport \"./entries\";\nimport \"./executions\";\nimport \"./files\";\nimport \"./jobs\";\nimport \"./sessions\";\nimport \"./tasks\";\nimport \"./tools\";\nimport \"./users\";\nimport \"./versions.tsp\";\nimport \"./responses\";\nimport \"./projects\";\nimport \"./secrets\";\n\nusing TypeSpec.Http;\nusing TypeSpec.OpenAPI;\nusing TypeSpec.Versioning;\n\nusing Versions;\n\n//\n// MAIN\n//\n\n/** Julep is a backend for creating stateful AI apps with background tasks and long-term memory easily. */\n@service({\n    name: \"julep-api\",\n    title: \"Julep API\",\n})\n@versioned(ApiVersions)\n@info({\n    termsOfService: \"https://julep.ai/terms\",\n    contact: {\n        name: \"Julep AI\",\n        url: \"https://julep.ai\",\n        email: \"developers@julep.ai\",\n    },\n    license: {\n        name: \"Apache 2.0\",\n        url: \"https://www.apache.org/licenses/LICENSE-2.0.html\",\n    },\n})\n@externalDocs(\"https://docs.julep.ai\", \"Julep API documentation\")\n@server(\n    \"https://{serverEnv}.julep.ai/api\",\n    \"The julep cloud service endpoint\",\n    {\n        @doc(\"The environment to use\")\n        serverEnv?: \"api\" | \"dev\" = \"api\",\n    }\n)\n@useAuth(\n    ApiKeyAuth<ApiKeyLocation.header, \"Authorization\"> | ApiKeyAuth<\n        ApiKeyLocation.header,\n        \"X-Auth-Key\"\n    >\n)\nnamespace Api {\n    @route(\"/agents\")\n    interface AgentsRoute extends Agents.Endpoints {}\n\n    @route(\"/agents/{id}/docs\")\n    interface AgentDocsRoute extends Docs.AgentEndpoints, Docs.BulkDeleteEndpoints<\"Bulk delete Docs owned by an Agent\"> {}\n\n    @route(\"/agents/{id}/search\")\n    interface AgentsDocsSearchRoute extends Docs.SearchEndpoints<\"Search Docs owned by an Agent\"> {}\n\n    @route(\"/agents/{id}/tools\")\n    interface AgentToolsRoute extends Tools.AgentEndpoints {}\n\n    @route(\"/responses\")\n    interface ResponsesRoute extends Responses.ResponsesEndpoints {}\n\n    @route(\"/users\")\n    interface UsersRoute extends Users.Endpoints {}\n\n    @route(\"/users/{id}/docs\")\n    interface UserDocsRoute extends Docs.UserEndpoints, Docs.BulkDeleteEndpoints<\"Bulk delete Docs owned by a User\"> {}\n\n    @route(\"/users/{id}/search\")\n    interface UserDocsSearchRoute extends Docs.SearchEndpoints<\"Search Docs owned by a User\"> {}\n\n    @route(\"/sessions\")\n    interface SessionsRoute extends Sessions.Endpoints {}\n\n    @route(\"/sessions/{id}/history\")\n    interface HistoryRoute extends Entries.Endpoints {}\n\n    @route(\"/sessions/{id}/chat\")\n    interface ChatRoute extends Chat.Endpoints {}\n\n    @route(\"/sessions/{id}/render\")\n    interface RenderRoute extends Chat.RenderEndpoints {}\n\n    @route(\"/embed\")\n    interface EmbedRoute extends Docs.EmbedEndpoints {}\n\n    @route(\"/docs\")\n    interface IndividualDocsRoute extends Docs.IndividualDocEndpoints {}\n\n    @route(\"/tasks\")\n    interface TasksGetRoute extends Tasks.GetEndpoints {}\n\n    @route(\"/agents/{id}/tasks\")\n    interface TasksRoute extends Tasks.Endpoints {}\n\n    @route(\"/agents/{parent_id}/tasks\")\n    interface TasksCreateOrUpdateRoute extends Tasks.CreateOrUpdateEndpoints {}\n\n    @route(\"/tasks/{id}/executions\")\n    interface TaskExecutionsRoute extends Executions.TaskEndpoints {}\n\n    @route(\"/executions\")\n    interface ExecutionsRoute extends Executions.Endpoints, Executions.PublicEndpoints {}\n\n    @route(\"/executions/{id}/transitions\")\n    interface ExecutionTransitionsRoute extends Executions.TransitionEndpoints {}\n\n    @route(\"/executions/{id}/transitions.stream\")\n    interface ExecutionTransitionsStreamRoute extends Executions.TransitionStreamEndpoints {}\n\n    @route(\"/executions/{id}/status.stream\")\n    interface ExecutionStatusStreamRoute extends Executions.ExecutionStatusStreamEndpoints {}\n\n    @route(\"/jobs\")\n    interface JobRoute extends Jobs.Endpoints {}\n\n    @route(\"/files\")\n    interface FilesRoute extends Files.Endpoints {}\n\n    @route(\"/projects\")\n    interface ProjectsRoute extends Projects.Endpoints {}\n\n    @route(\"/secrets\")\n    interface DeveloperSecretsRoute extends Secrets.DeveloperSecretsEndpoints {}\n\n    @route(\"/agents/{id}/secrets\")\n    interface AgentSecretsRoute extends Secrets.AgentSecretsEndpoints {}\n}\n"
  },
  {
    "path": "src/typespec/package.json",
    "content": "{\n  \"name\": \"julep-typespec\",\n  \"version\": \"0.4.0\",\n  \"type\": \"module\",\n  \"dependencies\": {\n    \"@typespec/compiler\": \"0.61.x\",\n    \"@typespec/events\": \"0.61.x\",\n    \"@typespec/http\": \"0.61.x\",\n    \"@typespec/openapi\": \"0.61.x\",\n    \"@typespec/openapi3\": \"0.61.x\",\n    \"@typespec/rest\": \"0.61.x\",\n    \"@typespec/sse\": \"0.61.x\",\n    \"@typespec/versioning\": \"0.61.x\"\n  },\n  \"private\": true\n}\n"
  },
  {
    "path": "src/typespec/projects/endpoints.tsp",
    "content": "import \"@typespec/http\";\nimport \"../common\";\nimport \"./models.tsp\";\n\nusing TypeSpec.Http;\nusing Common;\n\nnamespace Projects;\n\n//\n// PROJECT ENDPOINTS\n//\n\ninterface Endpoints\n    extends LimitOffsetPagination<Project, \"List Projects (paginated)\">,\n        CreateEndpoint<CreateProjectRequest, Project, \"Create a new Project\">,\n        CreateOrUpdateEndpoint<CreateOrUpdateProjectRequest, Project, \"Create or update a Project\">,\n        UpdateEndpoint<UpdateProjectRequest, Project, \"Update an existing Project by id (overwrites existing values; use PATCH for merging instead)\">,\n        PatchEndpoint<PatchProjectRequest, Project, \"Update an existing Project by id (merges with existing values)\">,\n        DeleteEndpoint<\"Delete Project by id\">,\n        GetEndpoint<Project, \"Get a Project by id\"> {\n}\n"
  },
  {
    "path": "src/typespec/projects/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Projects;\n\n//\n// PROJECTS\n//\n"
  },
  {
    "path": "src/typespec/projects/models.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\n\nusing TypeSpec.Http;\n\nusing Common;\n\nnamespace Projects;\n\n//\n// PROJECT MODELS\n//\n\n@doc(\"Project model\")\nmodel Project {\n  ...HasId;\n  ...HasMetadata;\n  ...HasTimestamps;\n\n  @doc(\"Canonical name of the project (unique per developer)\")\n  canonical_name?: canonicalName;\n\n  @doc(\"Display name of the project\")\n  name: displayName;\n\n}\n\n/** Payload for updating a project */\n@withVisibility(\"create\", \"update\")\nmodel UpdateProjectRequest {\n    ...Project;\n}\n\n/** Payload for patching a project */\nmodel PatchProjectRequest is UpdateProjectRequest {}\n\n/** Payload for creating a project */\n@withVisibility(\"create\")\nmodel CreateProjectRequest {\n    ...UpdateProjectRequest;\n}\n\nmodel CreateOrUpdateProjectRequest extends CreateProjectRequest {\n    @path\n    id: uuid;\n    ...UpdateProjectRequest;\n}\n"
  },
  {
    "path": "src/typespec/responses/endpoints.tsp",
    "content": "import \"@typespec/http\";\nimport \"./models.tsp\";\nimport \"../common\";\n\nusing TypeSpec.Http;\nusing Common;\n\nnamespace Responses;\n\ninterface ResponsesEndpoints extends GetResponsesEndpoints, CreateResponsesEndpoints {}\n\ninterface CreateResponsesEndpoints {\n  @doc(\"Creates a model response. Provide text or image inputs to generate text or JSON outputs.\")\n  @post\n  createResponse(\n    @body \n    body: CreateResponse\n  ): Response;\n}\n\ninterface GetResponsesEndpoints {\n  @get\n  @doc(\"Get a response by id\")\n  getResponse(\n    @path\n    @doc(\"ID of the response\")\n    id: string,\n    \n    @query\n    @doc(\"Specify additional output data to include in the model response\")\n    include?: Includable[];\n  ): Response;\n}"
  },
  {
    "path": "src/typespec/responses/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Responses;\n\n//\n// RESPONSES\n//"
  },
  {
    "path": "src/typespec/responses/models.tsp",
    "content": "import \"@typespec/http\";\nimport \"../common\";\n\nusing Common;\n\nnamespace Responses;\n\n// Common response properties\nmodel ResponseProperties {\n  instructions?: string;\n  previous_response_id?: string;\n  reasoning?: {\n    effort?: \"low\" | \"medium\" | \"high\";\n    summary?: string;\n  };\n  text?: {\n    format?: {\n      type: \"text\" | \"json_object\";\n    };\n  };\n  tool_choice?: \"auto\" | \"none\" | {\n    type: \"function\";\n    function: {\n      name: string;\n    };\n  };\n  tools?: Tool[];\n  truncation?: \"disabled\" | \"auto\";\n  metadata?: Record<unknown>;\n}\n\n// Model for creating a response\nmodel CreateResponse {\n  `model`: string;\n  input: string | InputItem[];\n  include?: Includable[];\n  parallel_tool_calls?: boolean = true;\n  store?: boolean = true;\n  stream?: boolean = false;\n  max_tokens?: int32;\n  temperature?: float = 1.0;\n  top_p?: float = 1.0;\n  n?: int32;\n  stop?: string | string[];\n  presence_penalty?: float;\n  frequency_penalty?: float;\n  logit_bias?: Record<unknown>;\n  user?: string;\n  instructions?: string;\n  previous_response_id?: string;\n  reasoning?: Reasoning;\n  text?: {\n    format: TextResponseFormatConfiguration;\n  };\n  tool_choice?: \"auto\" | \"none\" | {\n    type: \"function\";\n    function: {\n      name: string;\n    };\n  };\n  tools?: Tool[];\n  truncation?: \"disabled\" | \"auto\";\n  metadata?: Record<unknown>;\n}\n\nalias TextResponseFormatConfiguration = ResponseFormatText | TextResponseFormatJsonSchema | ResponseFormatJsonObject;\n\n\n@doc(\"\"\"\nJSON object response format. An older method of generating JSON responses.\n\nUsing `json_schema` is recommended for models that support it. Note that the\nmodel will not generate JSON without a system or user message instructing it\nto do so.\n\"\"\")\nmodel ResponseFormatJsonObject {\n  @doc(\"The type of response format being defined. Always `json_object`.\")\n  type: \"json_object\";\n}\n\n\nalias ResponseFormatJsonSchemaSchema = Record<unknown>;\n\n\n@doc(\"JSON Schema response format. Used to generate structured JSON responses. Learn more about [Structured Outputs](/docs/guides/structured-outputs).\")\nmodel TextResponseFormatJsonSchema {\n  @doc(\"The type of response format being defined. Always `json_schema`.\")\n  type: \"json_schema\";\n\n  @doc(\"A description of what the response format is for, used by the model to determine how to respond in the format.\")\n  description?: string;\n\n  @doc(\"The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.\")\n  name?: string;\n\n  @doc(\"The JSON schema that defines the structure of the response.\")\n  schema: ResponseFormatJsonSchemaSchema;\n\n  @doc(\"Whether to enable strict schema adherence when generating the output. If set to true, the model will always follow the exact schema defined in the `schema` field. Only a subset of JSON Schema is supported when `strict` is `true`. To learn more, read the [Structured Outputs guide](/docs/guides/structured-outputs).\")\n  strict?: boolean = false;\n}\n\n\n@doc(\"Default response format. Used to generate text responses.\")\nmodel ResponseFormatText {\n  @doc(\"The type of response format being defined. Always `text`.\")\n  type: \"text\";\n}\n\n\n@doc(\"Constraint effort on reasoning models.\")\nenum ReasoningEffort {\n  low,\n  medium,\n  high,\n}\n\n@doc(\"Reasoning configuration options for o-series models.\")\nmodel Reasoning {\n  effort: ReasoningEffort;\n  @doc(\"A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. One of `concise` or `detailed`.\")\n  generate_summary?: \"concise\" | \"detailed\";\n}\n\nenum ToolChoiceOptions {\n  auto,\n  none,\n  required,\n}\n\n@doc(\"\"\"\nIndicates that the model should use a built-in tool to generate a response.\n\n[Learn more about built-in tools](/docs/guides/tools).\n\"\"\")\nmodel ToolChoiceTypes {\n  @doc(\"\"\"\n  The type of hosted tool the model should to use. Learn more about\n  [built-in tools](/docs/guides/tools).\n\n  Allowed values are:\n  - `file_search`\n  - `web_search_preview` \n  - `computer_use_preview`\n  \"\"\")\n  type: \"file_search\" | \"web_search_preview\" | \"computer_use_preview\" | \"web_search_preview_2025_03_11\";\n}\n\n@doc(\"Use this option to force the model to call a specific function.\")\nmodel ToolChoiceFunction {\n  @doc(\"For function calling, the type is always `function`.\")\n  type: \"function\";\n\n  @doc(\"The name of the function to call.\")\n  name: string;\n}\n\nenum ResponseStatus {\n  completed,\n  failed,\n  in_progress,\n  incomplete,\n}\n\n// Model for response\nmodel Response {\n  id: string;\n  object: \"response\";\n  created_at: int32;\n  status: ResponseStatus;\n  error?: ResponseError;\n  incomplete_details?: {\n    reason: \"max_output_tokens\" | \"content_filter\";\n  };\n  instructions?: string;\n  max_output_tokens?: int32;\n  `model`: string;\n  output: OutputItem[];\n  parallel_tool_calls: boolean = true;\n  previous_response_id?: string;\n  reasoning?: Reasoning;\n  store?: boolean = true;\n  temperature: float = 1.0;\n  text?: {\n    format: TextResponseFormatConfiguration;\n  };\n  tool_choice: ToolChoiceOptions | ToolChoiceTypes | ToolChoiceFunction;\n  tools: Tool[];\n  top_p: float = 1.0;\n  truncation: \"disabled\" | \"auto\";\n  usage: ResponseUsage;\n  user?: string;\n  metadata: Record<unknown>;\n}\n\n// Model for response usage information\nmodel ResponseUsage {\n  input_tokens: int32;\n  input_tokens_details: {\n    cached_tokens: int32;\n  };\n  output_tokens: int32;\n  output_tokens_details: {\n    reasoning_tokens: int32;\n  };\n  total_tokens: int32;\n}\n\n// Model for response error\nmodel ResponseError {\n  message: string;\n  type: string;\n  param?: string;\n  code?: string;\n}\n\n// Model for output items in a response\nunion OutputItem {\n  OutputMessage,\n  FileSearchToolCall,\n  FunctionToolCall,\n  WebSearchToolCall,\n  ComputerToolCall,\n  ReasoningItem\n}\n\n// Model for reasoning item\nmodel ReasoningItem {\n  @doc(\"The type of the object. Always `reasoning`.\")\n  type: \"reasoning\";\n\n  @doc(\"The unique identifier of the reasoning content.\")\n  id: string;\n\n  @doc(\"Reasoning text contents.\")\n  content: ReasoningContent[];\n\n  @doc(\"The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\")\n  status?: \"in_progress\" | \"completed\" | \"incomplete\";\n}\n\n// Model for reasoning content\nmodel ReasoningContent {\n  @doc(\"The type of the object. Always `text`.\")\n  type: \"reasoning_summary\";\n\n  @doc(\"A short summary of the reasoning used by the model when generating the response.\")\n  text: string;\n}\n\n\n// File search call output item\nmodel FileSearchCallOutputItem {\n  type: \"file_search_call\";\n  id: string;\n  status: \"completed\" | \"in_progress\";\n  queries: string[];\n  results?: unknown;\n}\n\n// Content part in a message\n// @discriminator(\"type\")\nmodel ContentPart {\n  type: string;\n}\n\n// Text content part\nmodel TextContentPart extends ContentPart {\n  type: \"output_text\";\n  text: string;\n  annotations: Annotation[];\n}\n\nalias Annotation = FileCitation | UrlCitation | FilePath;\n\n// File citation\nmodel FileCitation {\n  @doc(\"The type of the file citation. Always `file_citation`.\")\n  type: \"file_citation\";\n\n  @doc(\"The index of the file in the list of files.\")\n  index: int32;\n\n  @doc(\"The ID of the file.\")\n  file_id: string;\n}\n\n// URL citation\nmodel UrlCitation {\n  @doc(\"The URL of the web resource.\")\n  url: string;\n\n  @doc(\"The title of the web resource.\")\n  title: string;\n\n  @doc(\"The type of the URL citation. Always `url_citation`.\")\n  type: \"url_citation\";\n\n  @doc(\"The index of the first character of the URL citation in the message.\")\n  start_index: int32;\n\n  @doc(\"The index of the last character of the URL citation in the message.\")\n  end_index: int32;\n}\n\nmodel FilePath {\n  @doc(\"The type of the file path. Always `file_path`.\")\n  type: \"file_path\";\n\n  @doc(\"The ID of the file.\")\n  file_id: string;\n\n  @doc(\"The index of the file in the list of files.\")\n  index: int32;\n}\n\nenum MessageRole {\n  user,\n  assistant,\n  system,\n  developer,\n}\n\nunion InputItem {\n  EasyInputMessage,\n  Item,\n  ItemReference\n}\n\n// Item model\n@doc(\"An item representing part of the context for the response to be generated by the model. Can contain text, images, and audio inputs, as well as previous assistant responses and tool call outputs.\")\nmodel Item {\n  // Add the necessary properties for Item\n  type: string;\n  // Additional properties would go here\n}\n\n// Item reference model\n@doc(\"Content item used to generate a response.\")\nunion ItemReference {\n  InputMessageResource,\n  OutputMessage,\n  FileSearchToolCall,\n  ComputerToolCall,\n  ComputerToolCallOutputResource,\n  WebSearchToolCall,\n  FunctionToolCall,\n  FunctionToolCallOutputResource\n}\n\n// Content item in an input\n// @discriminator(\"type\")\nmodel InputContentItem {\n  type: string;\n}\n\n\n\n// Includable item for response creation field \"include\"\nenum Includable {\n  \"file_search_call.results\",\n  \"message.input_image.image_url\",\n  \"computer_call_output.output.image_url\"\n}\n\nmodel BaseTool {\n  type: string;\n}\n\n// Tool for response creation\n// @discriminator(\"type\")\nunion Tool {\n  FunctionTool,\n  WebSearchTool,\n  FileSearchTool,\n  ComputerTool\n}\n\n// Function tool\nmodel FunctionTool extends BaseTool {\n  type: \"function\";\n  name: string;\n  description?: string;\n  parameters: Record<unknown>;\n  strict?: boolean;\n}\n\n// Web search tool\nmodel WebSearchTool extends BaseTool {\n  type: \"web_search_preview\";\n  domains?: string[];\n  search_context_size?: \"small\" | \"medium\" | \"large\";\n  user_location?: {\n    type: \"approximate\";\n    city?: string;\n    country?: string;\n    region?: string;\n    timezone?: string;\n  };\n}\n\n// File search tool\nmodel FileSearchTool extends BaseTool {\n  type: \"file_search\";\n  filters?: unknown;\n  max_num_results?: int32;\n  ranking_options?: {\n    ranker?: \"auto\";\n    score_threshold?: float;\n  };\n  vector_store_ids: string[];\n}\n\n// Computer tool\nmodel ComputerTool extends BaseTool {\n  @doc(\"The type of the computer use tool. Always `computer_use_preview`.\")\n  type: \"computer_use_preview\";\n\n  @doc(\"The width of the computer display.\")\n  display_width: float32;\n\n  @doc(\"The height of the computer display.\")\n  display_height: float32;\n\n  @doc(\"The type of computer environment to control.\")\n  environment: \"mac\" | \"windows\" | \"ubuntu\" | \"browser\";\n}\n\n\nmodel InputText {\n  @doc(\"The type of the input item. Always `input_text`.\")\n  type: \"input_text\";\n\n  @doc(\"The text input to the model.\")\n  text: string;\n}\n\nmodel InputImage {\n  @doc(\"The type of the input item. Always `input_image`.\")\n  type: \"input_image\";\n\n  @doc(\"The URL of the image to be sent to the model. A fully qualified URL or base64 encoded image in a data URL.\")\n  image_url?: string;\n\n  @doc(\"The ID of the file to be sent to the model.\")\n  file_id?: string;\n\n  @doc(\"The detail level of the image to be sent to the model. One of `high`, `low`, or `auto`. Defaults to `auto`.\")\n  detail: \"high\" | \"low\" | \"auto\" = \"auto\";\n}\n\n@doc(\"A file input to the model.\")\nmodel InputFile {\n  @doc(\"The type of the input item. Always `input_file`.\")\n  type: \"input_file\";\n\n  @doc(\"The ID of the file to be sent to the model.\")\n  file_id?: string;\n\n  @doc(\"The name of the file to be sent to the model.\")\n  filename?: string;\n\n  @doc(\"The content of the file to be sent to the model.\")\n  file_data?: string;\n}\n\nalias InputContent = InputText | InputImage | InputFile;\n\n// A list of one or many input items to the model, containing different content types\nmodel InputMessageContentList is InputContent[];\n\nenum MessageStatus {\n  in_progress,\n  completed,\n  incomplete,\n}\n\n// Input message\nmodel InputMessage {\n  type: \"message\";\n  role: MessageRole;\n  status: MessageStatus;\n  content: InputMessageContentList;\n}\n\nmodel OutputMessage {\n  id: string;\n  type: \"message\";\n  role: MessageRole;\n  status: MessageStatus;\n  content: OutputContent[];\n}\n\n// A refusal from the model\nmodel Refusal {\n  @doc(\"The type of the refusal. Always `refusal`.\")\n  type: \"refusal\";\n\n  @doc(\"The refusal explanation from the model.\")\n  refusal: string;\n}\n\nmodel OutputText {\n  @doc(\"The type of the output text. Always `output_text`.\")\n  type: \"output_text\";\n\n  @doc(\"The text output from the model.\")\n  text: string;\n\n  @doc(\"The annotations of the text output.\")\n  annotations: Annotation[];\n}\n\nalias OutputContent = OutputText | Refusal;\n\n\n// Easy input message model\nmodel EasyInputMessage {\n  @doc(\"The role of the message input. One of `user`, `assistant`, `system`, or `developer`.\")\n  role: MessageRole;\n\n  @doc(\"Text, image, or audio input to the model, used to generate a response. Can also contain previous assistant responses.\")\n  content: string | InputMessageContentList;\n\n  @doc(\"The type of the message input. Always `message`.\")\n  type: \"message\";\n}\n\n\n// Input message resource\nmodel InputMessageResource extends InputMessage {\n  id: string;\n}\n\n@maxLength(512)\nscalar VectorStoreFileAttributesString extends string;\n\n@doc(\"Set of key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers.\")\nmodel VectorStoreFileAttributes {\n  @doc(\"Key-value pairs where keys are strings with max length 64 and values are strings with max length 512, booleans, or numbers.\")\n  properties: Record<VectorStoreFileAttributesString | boolean | numeric>;\n}\n\n\n// File search tool call\nmodel FileSearchToolCall {\n  @doc(\"The unique ID of the file search tool call.\")\n  id: string;\n\n  @doc(\"The type of the file search tool call. Always `file_search_call`.\")\n  type: \"file_search_call\";\n\n  @doc(\"The status of the file search tool call. One of `in_progress`, `searching`, `incomplete` or `failed`\")\n  status: \"in_progress\" | \"searching\" | \"completed\" | \"incomplete\" | \"failed\";\n\n  @doc(\"The queries used to search for files.\")\n  queries: string[];\n\n  @doc(\"The results of the file search tool call.\")\n  results?: {\n    @doc(\"The unique ID of the file.\")\n    file_id: string;\n\n    @doc(\"The text that was retrieved from the file.\")\n    text: string;\n\n    @doc(\"The name of the file.\")\n    filename: string;\n\n    @doc(\"The attributes of the file.\")\n    attributes: VectorStoreFileAttributes;\n\n    @doc(\"The relevance score of the file - a value between 0 and 1.\")\n    score: float32;\n  }[];\n}\n\nmodel ComputerToolCallSafetyCheck {\n  @doc(\"The ID of the pending safety check.\")\n  id: string;\n\n  @doc(\"The type of the pending safety check.\")\n  code: string;\n\n  @doc(\"Details about the pending safety check.\")\n  message: string;\n}\n\nmodel Click {\n  @doc(\"Specifies the event type. For a click action, this property is always set to `click`.\")\n  type: \"click\" = \"click\";\n\n  @doc(\"Indicates which mouse button was pressed during the click. One of `left`, `right`, `wheel`, `back`, or `forward`.\")\n  button: \"left\" | \"right\" | \"wheel\" | \"back\" | \"forward\";\n\n  @doc(\"The x-coordinate where the click occurred.\")\n  x: int32;\n\n  @doc(\"The y-coordinate where the click occurred.\") \n  y: int32;\n}\n\nmodel DoubleClick {\n  @doc(\"Specifies the event type. For a double click action, this property is always set to `double_click`.\")\n  type: \"double_click\" = \"double_click\";\n\n  @doc(\"The x-coordinate where the double click occurred.\")\n  x: int32;\n\n  @doc(\"The y-coordinate where the double click occurred.\")\n  y: int32;\n}\n\nmodel Coordinate {\n  @doc(\"The x-coordinate.\")\n  x: int32;\n\n  @doc(\"The y-coordinate.\")\n  y: int32;\n}\n\nmodel Drag {\n  @doc(\"Specifies the event type. For a drag action, this property is always set to `drag`.\")\n  type: \"drag\" = \"drag\";\n\n  @doc(\"An array of coordinates representing the path of the drag action.\")\n  path: Coordinate[];\n}\n\nmodel KeyPress {\n  @doc(\"Specifies the event type. For a keypress action, this property is always set to `keypress`.\")\n  type: \"keypress\" = \"keypress\";\n\n  @doc(\"The combination of keys the model is requesting to be pressed. This is an array of strings, each representing a key.\")\n  keys: string[];\n}\n\nmodel Move {\n  @doc(\"Specifies the event type. For a move action, this property is always set to `move`.\")\n  type: \"move\" = \"move\";\n\n  @doc(\"The x-coordinate to move to.\")\n  x: int32;\n\n  @doc(\"The y-coordinate to move to.\")\n  y: int32;\n}\n\nmodel Screenshot {\n  @doc(\"Specifies the event type. For a screenshot action, this property is always set to `screenshot`.\")\n  type: \"screenshot\" = \"screenshot\";\n}\n\nmodel Scroll {\n  @doc(\"Specifies the event type. For a scroll action, this property is always set to `scroll`.\")\n  type: \"scroll\" = \"scroll\";\n\n  @doc(\"The x-coordinate where the scroll occurred.\")\n  x: int32;\n\n  @doc(\"The y-coordinate where the scroll occurred.\")\n  y: int32;\n\n  @doc(\"The horizontal scroll distance.\")\n  scroll_x: int32;\n\n  @doc(\"The vertical scroll distance.\")\n  scroll_y: int32;\n}\n\nmodel Type {\n  @doc(\"Specifies the event type. For a type action, this property is always set to `type`.\")\n  type: \"type\" = \"type\";\n\n  @doc(\"The text to type.\")\n  text: string;\n}\n\nmodel Wait {\n  @doc(\"Specifies the event type. For a wait action, this property is always set to `wait`.\")\n  type: \"wait\" = \"wait\";\n}\n\nalias ComputerAction = Click\n| DoubleClick\n| Drag\n| KeyPress\n| Move\n| Screenshot\n| Scroll\n| Type\n| Wait;\n\n// Computer tool call\nmodel ComputerToolCall {\n  @doc(\"The type of the computer call. Always `computer_call`.\")\n  type: \"computer_call\";\n\n  @doc(\"The unique ID of the computer call.\")\n  id: string;\n\n  @doc(\"An identifier used when responding to the tool call with output.\")\n  call_id: string;\n\n  @doc(\"The action to perform.\")\n  action: ComputerAction;\n\n  @doc(\"The pending safety checks for the computer call.\")\n  pending_safety_checks: ComputerToolCallSafetyCheck[];\n\n  @doc(\"The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\")\n  status: \"in_progress\" | \"completed\" | \"incomplete\";\n}\n\nmodel ComputerScreenshotImage {\n  @doc(\"Specifies the event type. For a computer screenshot, this property is always set to `computer_screenshot`.\")\n  type: \"computer_screenshot\";\n\n  @doc(\"The URL of the screenshot image.\")\n  image_url?: string;\n\n  @doc(\"The identifier of an uploaded file that contains the screenshot.\")\n  file_id?: string;\n}\n\nmodel ComputerToolCallOutput {\n  @doc(\"The type of the computer tool call output. Always `computer_call_output`.\")\n  type: \"computer_call_output\";\n\n  @doc(\"The ID of the computer tool call output.\")\n  id?: string;\n\n  @doc(\"The ID of the computer tool call that produced the output.\")\n  call_id: string;\n\n  @doc(\"The safety checks reported by the API that have been acknowledged by the developer.\")\n  acknowledged_safety_checks?: ComputerToolCallSafetyCheck[];\n\n  @doc(\"The output screenshot image.\")\n  output: ComputerScreenshotImage;\n\n  @doc(\"The status of the message input. One of `in_progress`, `completed`, or `incomplete`. Populated when input items are returned via API.\")\n  status?: MessageStatus;\n}\n\n// Computer tool call output resource\nmodel ComputerToolCallOutputResource extends ComputerToolCallOutput {\n  @doc(\"The unique ID of the computer call tool output.\")\n  id: string;\n}\n\nenum WebSearchStatus {\n  in_progress,\n  searching,\n  completed,\n  failed,\n}\n\n// Web search tool call\nmodel WebSearchToolCall {\n  @doc(\"The unique ID of the web search tool call.\")\n  id: string;\n\n  @doc(\"The type of the web search tool call. Always `web_search_call`.\")\n  type: \"web_search_call\";\n\n  @doc(\"The status of the web search tool call.\")\n  status: WebSearchStatus;\n}\n\nmodel FunctionToolCallOutput {\n  @doc(\"The unique ID of the function tool call output. Populated when this item is returned via API.\")\n  id?: string;\n\n  @doc(\"The type of the function tool call output. Always `function_call_output`.\")\n  type: \"function_call_output\";\n\n  @doc(\"The unique ID of the function tool call generated by the model.\")\n  call_id: string;\n\n  @doc(\"A JSON string of the output of the function tool call.\")\n  output: string;\n\n  @doc(\"The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\")\n  status?: \"in_progress\" | \"completed\" | \"incomplete\";\n}\n\n// Function tool call\nmodel FunctionToolCall {\n  @doc(\"The unique ID of the function tool call.\")\n  id: string;\n\n  @doc(\"The type of the function tool call. Always `function_call`.\")\n  type: \"function_call\";\n\n  @doc(\"The unique ID of the function tool call generated by the model.\")\n  call_id: string;\n\n  @doc(\"The name of the function to run.\")\n  name: string;\n\n  @doc(\"A JSON string of the arguments to pass to the function.\")\n  arguments: string;\n\n  @doc(\"The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\")\n  status?: \"in_progress\" | \"completed\" | \"incomplete\";\n}\n\n// Function tool call output resource\nmodel FunctionToolCallOutputResource extends FunctionToolCallOutput {\n  @doc(\"The unique ID of the function call tool output.\")\n  // NOTE: OpenAI's schema doesn't have this as optional. However, this is optional as we're\n  // mapping to `completion` format, which doesn't have `id` (fc_aaa) ids for function tool calls.\n  id?: string;\n}\n\nalias ItemResource = InputMessageResource\n| OutputMessage\n| FileSearchToolCall\n| ComputerToolCall\n| ComputerToolCallOutputResource\n| WebSearchToolCall\n| FunctionToolCall\n| FunctionToolCallOutputResource;\n\nmodel ResponseItemList {\n  @doc(\"The type of object returned, must be `list`.\")\n  object: \"list\";\n\n  @doc(\"A list of items used to generate this response.\")\n  data: ItemResource[];\n\n  @doc(\"Whether there are more items available.\")\n  has_more: boolean;\n\n  @doc(\"The ID of the first item in the list.\")\n  first_id: string;\n\n  @doc(\"The ID of the last item in the list.\")\n  last_id: string;\n}"
  },
  {
    "path": "src/typespec/secrets/endpoints.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"./models.tsp\";\nimport \"../common\";\n\nusing TypeSpec.Http;\n\nusing Common;\n\nnamespace Secrets;\n\n//\n// SECRET ENDPOINTS\n//\n\ninterface DeveloperSecretsEndpoints\n    extends ChildLimitOffsetPagination<Secret, \"List secrets (paginated)\">,\n        ChildCreateEndpoint<CreateSecretRequest, Secret, \"Create a new secret\">,\n        ChildUpdateEndpoint<UpdateSecretRequest, Secret, \"Update an existing secret by id (overwrites existing values)\">,\n        ChildDeleteEndpoint<\"Delete a secret by id\"> {}\n\ninterface AgentSecretsEndpoints\n    extends ChildLimitOffsetPagination<Secret, \"List secrets (paginated)\">,\n        ChildCreateEndpoint<CreateSecretRequest, Secret, \"Create a new secret\">,\n        ChildUpdateEndpoint<UpdateSecretRequest, Secret, \"Update an existing secret by id (overwrites existing values)\">,\n        ChildDeleteEndpoint<\"Delete a secret by id\"> {}\n"
  },
  {
    "path": "src/typespec/secrets/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Secrets;\n\n//\n// SECRETS\n//"
  },
  {
    "path": "src/typespec/secrets/models.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Secrets;\n\n//\n// SECRET MODELS\n//\n\n/** A secret that can be used in tasks and sessions */\nmodel Secret {\n  ...HasId;\n  ...HasTimestamps;\n  ...HasMetadata;\n\n  /** Name of the secret */\n  name: string;\n\n  /** Description of what the secret is used for */\n  description?: string;\n\n  /** The decrypted secret value */\n  value: string;\n}\n\n@withVisibility(\"create\", \"update\")\nmodel UpdateSecretRequest {\n    ...Secret;\n}\n\n@withVisibility(\"create\")\nmodel CreateSecretRequest {\n    ...UpdateSecretRequest;\n}\n\n\nmodel PatchSecretRequest is UpdateSecretRequest {}\n"
  },
  {
    "path": "src/typespec/sessions/endpoints.tsp",
    "content": "import \"../common\";\nimport \"./models.tsp\";\n\nusing Common;\n\nnamespace Sessions;\n\n//\n// SESSION ENDPOINTS\n//\n\ninterface Endpoints\n    extends LimitOffsetPagination<Session, \"List sessions (paginated)\">,\n        CreateEndpoint<CreateSessionRequest, Session, \"Create a new session\">,\n        CreateOrUpdateEndpoint<CreateOrUpdateSessionRequest, Session, \"Create or update a session\">,\n        UpdateEndpoint<UpdateSessionRequest, Session, \"Update an existing session by its id (overwrites all existing values)\">,\n        PatchEndpoint<PatchSessionRequest, Session, \"Update an existing session by its id (merges with existing values)\">,\n        DeleteEndpoint<\"Delete a session by its id\">,\n        GetEndpoint<Session, \"Get a session by id\"> {}"
  },
  {
    "path": "src/typespec/sessions/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Sessions;\n\n//\n// SESSIONS\n//"
  },
  {
    "path": "src/typespec/sessions/models.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\n\nusing TypeSpec.Http;\n\nusing Common;\n\nnamespace Sessions;\n\n//\n// SESSION MODELS\n//\n\nmodel BaseDocSearch {\n    /** The limit of documents to return */\n    @minValue(1)\n    @maxValue(50)\n    limit: uint16 = 10;\n\n    /** The language to be used for text-only search. Support for other languages coming soon. */\n    lang: string = \"en-US\";\n\n    /** Metadata filter to apply to the search */\n    metadata_filter: MetadataFilter = #{};\n\n    /** The number of search messages to use for the search. */\n    @minValue(1)\n    @maxValue(50)\n    num_search_messages: uint32 = 4;\n\n    /** The maximum query length to use for the search. */\n    @minValue(100)\n    @maxValue(10000)\n    max_query_length: uint32 = 1000;\n\n    /** Whether to include embeddings in the response */\n    include_embeddings: boolean = true;\n}\n\nmodel VectorDocSearch extends BaseDocSearch {\n\n     /** The mode to use for the search. */\n    mode: \"vector\" = \"vector\";\n\n    /** The confidence cutoff level */\n    @minValue(-1)\n    @maxValue(1)\n    confidence: float = 0.5;\n\n    /** MMR Strength (mmr_strength = 1 - mmr_lambda) */\n    @minValue(0)\n    @maxValueExclusive(1)\n    mmr_strength?: float = 0.5;\n}\n\nmodel TextOnlyDocSearch extends BaseDocSearch {\n\n    /** The mode to use for the search. */\n    mode: \"text\" = \"text\";\n\n    /** The trigram_similarity_threshold cutoff level */\n    // AIDEV-NOTE: Null default keeps trigram search disabled unless explicitly toggled.\n    @minValue(0)\n    @maxValue(1)\n    trigram_similarity_threshold?: float | null = null;\n}\n\nmodel HybridDocSearch extends BaseDocSearch {\n\n    /** The mode to use for the search. */\n    mode: \"hybrid\" = \"hybrid\";\n\n    /** The confidence cutoff level */\n    @minValue(-1)\n    @maxValue(1)\n    confidence: float = 0.5;\n\n    /** The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector; */\n    @minValue(0)\n    @maxValue(1)\n    alpha: float = 0.5;\n\n    /** MMR Strength (mmr_strength = 1 - mmr_lambda) */\n    @minValue(0)\n    @maxValueExclusive(1)\n    mmr_strength?: float = 0.5;\n\n    /** The trigram_similarity_threshold cutoff level */\n    // AIDEV-NOTE: Null default keeps trigram search disabled unless explicitly toggled.\n    @minValue(0)\n    @maxValue(1)\n    trigram_similarity_threshold?: float | null = null;\n\n    /** The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring */\n    @minValue(0)\n    k_multiplier: int8 = 7;\n}\n\nalias DocSearch = VectorDocSearch | TextOnlyDocSearch | HybridDocSearch;\n\nenum ContextOverflowType {\n    /** Truncate the context from the top except the system prompt. */\n    truncate,\n\n    /** Automatically summarizes, clips and merges messages in the background to compress the context. */\n    adaptive,\n}\n\n\n@discriminator(\"kind\")\nmodel Session {\n    @visibility(\"none\")\n    kind:  (\n        | \"single_agent_no_user\"\n        | \"single_agent_single_user\"\n        | \"single_agent_multi_user\"\n        | \"multi_agent_no_user\"\n        | \"multi_agent_single_user\"\n        | \"multi_agent_multi_user\"\n    );\n\n    /** User ID of user associated with this session */\n    @visibility(\"create\")\n    user?: uuid;\n\n    @visibility(\"create\")\n    users?: uuid[];\n\n    /** Agent ID of agent associated with this session */\n    @visibility(\"create\")\n    agent?: uuid;\n\n    @visibility(\"create\")\n    agents?: uuid[];\n\n    /** Session situation */\n    situation: string | null = null;\n\n    /** A specific system prompt template that sets the background for this session */\n    system_template?: string;\n\n    /** Summary (null at the beginning) - generated automatically after every interaction */\n    @visibility(\"read\")\n    summary: string | null = null;\n\n    /** Render system and assistant message content as jinja templates */\n    render_templates: boolean = true;\n\n    /** Threshold value for the adaptive context functionality */\n    token_budget: uint16 | null = null;\n\n    /** Action to start on context window overflow */\n    context_overflow: ContextOverflowType | null = null;\n\n    /** Whether to auto-run the tool and send the tool results to the model when available.\n     * (default: false for sessions, true for tasks)\n     * \n     * If a tool call is made, the tool's output will be sent back to the model as the model's input.\n     * If a tool call is not made, the model's output will be returned as is. */\n    auto_run_tools: boolean = false;\n\n    /** Whether to forward tool calls to the model */\n    forward_tool_calls: boolean = false;\n    /** Recall options for the session */\n    recall_options?: DocSearch | null = null;\n    \n    ...HasId;\n    ...HasMetadata;\n    ...HasTimestamps;\n}\n\nmodel SingleAgentNoUserSession extends Session {\n    @visibility(\"none\")\n    kind: \"single_agent_no_user\" = \"single_agent_no_user\";\n\n    user?: never;\n    users?: never;\n    agents?: never;\n\n    agent: uuid;\n}\n\nmodel SingleAgentSingleUserSession extends Session {\n    @visibility(\"none\")\n    kind: \"single_agent_single_user\" = \"single_agent_single_user\";\n\n    users?: never;\n    agents?: never;\n\n    agent: uuid;\n    user: uuid;\n}\n\nmodel SingleAgentMultiUserSession extends Session {\n    @visibility(\"none\")\n    kind: \"single_agent_multi_user\" = \"single_agent_multi_user\";\n\n    user?: never;\n    agents?: never;\n\n    agent: uuid;\n\n    @minItems(2)\n    users: uuid[];\n}\n\nmodel MultiAgentNoUserSession extends Session {\n    @visibility(\"none\")\n    kind: \"multi_agent_no_user\" = \"multi_agent_no_user\";\n\n    user?: never;\n    users?: never;\n    agent?: never;\n\n    @minItems(2)\n    agents: uuid[];\n}\n\nmodel MultiAgentSingleUserSession extends Session {\n    @visibility(\"none\")\n    kind: \"multi_agent_single_user\" = \"multi_agent_single_user\";\n\n    users?: never;\n    agent?: never;\n\n    @minItems(2)\n    agents: uuid[];\n    user: uuid;\n}\n\nmodel MultiAgentMultiUserSession extends Session {\n    @visibility(\"none\")\n    kind: \"multi_agent_multi_user\" = \"multi_agent_multi_user\";\n\n    user?: never;\n    agent?: never;\n\n    @minItems(2)\n    agents: uuid[];\n\n    @minItems(2)\n    users: uuid[];\n}\n\n\n/** Payload for updating a session */\n@withVisibility(\"update\")\nmodel UpdateSessionRequest {\n    ...Session;\n}\n\n/** Payload for patching a session */\nmodel PatchSessionRequest is UpdateSessionRequest {}\n\n/** Payload for creating a session */\n@withVisibility(\"create\")\nmodel CreateSessionRequest {\n    ...Session;\n}\n\n@withVisibility(\"create\", \"update\")\nmodel CreateOrUpdateSessionRequest extends CreateSessionRequest {\n    @path\n    id: uuid;\n\n    ...CreateSessionRequest;\n}\n"
  },
  {
    "path": "src/typespec/tasks/endpoints.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\nimport \"../executions\";\nimport \"./models.tsp\";\n\nusing TypeSpec.Http;\n\nusing Common;\nusing Executions;\n\nnamespace Tasks;\n\n//\n// TASK ENDPOINTS\n//\n\ninterface GetEndpoints extends GetEndpoint<Task, \"Get a task by id\"> {}\n\ninterface CreateOrUpdateEndpoints {\n    @post\n    @doc(\"Create or update a task\")\n    createOrUpdate(\n        @header contentType: yaml | json,\n\n        @path\n        @doc(\"ID of the agent\")\n        parent_id: uuid,\n\n        ...CreateOrUpdateTaskRequest,\n    ): {\n        @statusCode _: \"201\";\n\n        @body\n        @doc(\"Details of the task updated along with ID\")\n        body: Task;\n    };\n}\n\ninterface Endpoints\n    extends ChildUpdateEndpoint<\n            UpdateTaskRequest,\n            Task,\n            \"Update an existing task (overwrite existing values)\"\n        >,\n        ChildPatchEndpoint<\n            PatchTaskRequest,\n            Task,\n            \"Update an existing task (merges with existing values)\"\n        >,\n        ChildDeleteEndpoint<\"Delete a task by its id\">,\n        ChildLimitOffsetPagination<Task, \"List tasks (paginated)\"> {\n    @post\n    @doc(\"Create a new task\")\n    create(\n        @header contentType: yaml | json,\n\n        @path\n        @doc(\"ID of parent resource\")\n        id: uuid,\n\n        ...CreateTaskRequest,\n    ): {\n        @statusCode _: \"201\";\n\n        @body\n        @doc(\"Details of the task created\")\n        body: Task;\n    };\n}\n"
  },
  {
    "path": "src/typespec/tasks/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Tasks;\n\n//\n// TASKS\n//"
  },
  {
    "path": "src/typespec/tasks/models.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\nimport \"../tools\";\n\nimport \"./steps.tsp\";\n\nusing TypeSpec.Http;\n\nusing Common;\nusing Tools;\n\nnamespace Tasks;\n\n//\n// TASK MODELS\n//\n\nmodel Workflow {\n    @key name: validPythonIdentifier;\n\n    /** The steps in the workflow */\n    @minItems(1)\n    steps: WorkflowStep[];\n}\n\nmodel TaskTool extends CreateToolRequest {\n    /** Read-only: Whether the tool was inherited or not. Only applies within tasks. */\n    @visibility(\"read\")\n    inherited?: boolean = false;\n}\n\n/** Reference to a tool by id */\nmodel ToolRefById {\n    @visibility(\"read\", \"create\")\n    id?: string;\n}\n\n/** Reference to a tool by name */\nmodel ToolRefByName {\n    @visibility(\"read\", \"create\")\n    name?: validPythonIdentifier;\n}\n\n/** Reference to a tool */\nmodel ToolRef {\n    @visibility(\"read\", \"create\")\n    ref: ToolRefById | ToolRefByName;\n}\n\n/** Object describing a Task */\nmodel Task {\n    /** The name of the task. */\n    @visibility(\"read\", \"create\", \"update\")\n    name: displayName;\n\n    /** The canonical name of the task. */\n    canonical_name?: canonicalName;\n\n    /** The description of the task. */\n    description: string = \"\";\n\n    /** The entrypoint of the task. */\n    @minItems(1)\n    main: WorkflowStep[];\n\n    /** The schema for the input to the task. `null` means all inputs are valid. */\n    input_schema: Record<unknown> | null = null;\n\n    /** Tools defined specifically for this task not included in the Agent itself. */\n    tools: TaskTool[] = #[];\n\n    /** Whether to inherit tools from the parent agent or not. Defaults to false. */\n    inherit_tools: boolean = false;\n\n    ...HasId;\n    ...HasTimestamps;\n    ...HasMetadata;\n    ...Record<WorkflowStep[]>;\n}\n\n/** Payload for updating a task */\n@withVisibility(\"update\")\nmodel UpdateTaskRequest {\n    ...Task;\n}\n\n/** Payload for patching a task */\nmodel PatchTaskRequest is UpdateTaskRequest;\n\n/** Payload for creating a task */\n@withVisibility(\"create\")\nmodel CreateTaskRequest {\n    ...Task;\n}\n\nmodel CreateOrUpdateTaskRequest {\n    @path\n    id: uuid;\n\n    ...CreateTaskRequest;\n}\n"
  },
  {
    "path": "src/typespec/tasks/step_kind.tsp",
    "content": "namespace Tasks;\n\n//\n// STEP KINDS\n//\n\nalias WorkflowStepKind =\n    ////////////////////\n    /// Common steps ///\n    ////////////////////\n\n    | /** A step that runs a tool */\n      \"tool_call\"\n    | /** A step that runs a prompt */\n      \"prompt\"\n    | /** A step that evaluates an expression */\n      \"evaluate\"\n    | /** A step that signals that it needs more input before resuming */\n      \"wait_for_input\"\n    | /** log step */\n      \"log\"\n    \n    ////////////////////////\n    /// Doc search steps ///\n    ////////////////////////\n\n    | /** A step that can embed text */\n      \"embed\"\n    | /** A step that can search for documents (in the agents doc store only) */\n      \"search\"\n \n    ///////////////////////\n    /// Key-value steps ///\n    ///////////////////////\n\n    | /** set step */\n      \"set\"\n    | /** get step */\n      \"get\"\n \n    ///////////////////////\n    /// Iteration steps ///\n    ///////////////////////\n\n    | /** foreach step */\n      \"foreach\"\n    | /** map_reduce step */\n      \"map_reduce\"\n    | /** parallel step */\n      \"parallel\"\n \n    /////////////////////////\n    /// Conditional steps ///\n    /////////////////////////\n\n    | /** switch step */\n      \"switch\"\n    | /** A step that runs a conditional */\n      \"if_else\"\n\n    //////////////////////////\n    /// Other control flow ///\n    //////////////////////////\n\n    | /** sleep step */\n      \"sleep\"\n    | /** return step */\n      \"return\"\n    | /** A step that runs a subworkflow */\n      \"yield\"\n    | /** Throw an error */\n      \"error\";"
  },
  {
    "path": "src/typespec/tasks/steps.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../chat\";\nimport \"../common\";\nimport \"../docs\";\nimport \"../entries\";\nimport \"../tools\";\n\nimport \"./step_kind.tsp\";\n\nusing TypeSpec.Http;\n\nusing Chat;\nusing Common;\nusing Docs;\nusing Entries;\nusing Tools;\n\nnamespace Tasks;\n\n//\n// STEP DEFINITIONS\n//\n\n/** A simple python expression evaluated at runtime that is expected to return type T. */\nalias TypedExpression<T> = PyExpression;\n\n/** A python expression that takes an accumulator `results` and an input item `_` and reduces them. */\nalias ReduceExpression<Value = unknown, Accumulator = Array<Value>> = TypedExpression<Accumulator>;\n\n/** A string->string object where the values are python expressions that get evaluated to give a final object. */\nalias ExpressionObject<T> = Record<TypedExpression<T> | TypedExpression<T>[] | Record<TypedExpression<T>> | Record<TypedExpression<T>>[]>;\n\nalias NestedExpression<T> = Record<TypedExpression<T> | ExpressionObject<T> | ExpressionObject<T>[]>;\n\n/** Nested expression object. */\nalias NestedExpressionObject<T> = NestedExpression<T> | NestedExpression<T>[];\n\n@discriminator(\"kind_\")\nmodel BaseWorkflowStep<T extends valueof WorkflowStepKind> {\n    /** The kind of step */\n    @visibility(\"read\")\n    kind_: (typeof T);\n\n    /** The label of this step for referencing it from other steps */\n    label?: stepLabel;\n}\n\nalias SequentialWorkflowStep =\n    | WaitForInputStep\n    | MappableWorkflowStep;\n\nalias MappableWorkflowStep =\n    | EvaluateStep\n    | ToolCallStep\n    | PromptStep\n    | GetStep\n    | SetStep\n    | LogStep\n    | YieldStep;\n\nalias NonConditionalWorkflowStep =\n    | MappableWorkflowStep\n    | ReturnStep\n    | SleepStep\n    | ErrorWorkflowStep\n    | WaitForInputStep;\n\nalias ConditionalStep = IfElseWorkflowStep | SwitchStep;\nalias IterationStep = ForeachStep | ParallelStep | MapReduceStep;\nalias WorkflowStep = NonConditionalWorkflowStep | ConditionalStep | IterationStep;\n\nalias CreateWorkflowStep = WorkflowStep;\n\n////////////////////\n/// Common steps ///\n////////////////////\n\nmodel ToolCallStep extends BaseWorkflowStep<\"tool_call\"> {\n    @visibility(\"read\")\n    kind_: \"tool_call\" = \"tool_call\";\n\n    ...ToolCallStepDef;\n}\n\nmodel ToolCallStepDef {\n    /** The tool to run */\n    tool: validPythonIdentifier;\n\n    /** The input parameters for the tool (defaults to last step output) */\n    arguments: Record<unknown> | \"_\" = \"_\";\n}\n\nmodel PromptStep extends BaseWorkflowStep<\"prompt\"> {\n    @visibility(\"read\")\n    kind_: \"prompt\" = \"prompt\";\n\n    ...PromptStepDef;\n}\n\nmodel PromptStepDef {\n    /** The prompt to run */\n    prompt: JinjaTemplate | InputChatMLMessage<JinjaTemplate>[];\n\n    /** The tools to use for the prompt */\n    tools: \"all\" | (ToolRef | CreateToolRequest)[] = \"all\";\n\n    /** The tool choice for the prompt */\n    tool_choice?: ToolChoiceOption;\n\n    /** Settings for the prompt */\n    settings?: ChatSettings;\n\n    /** Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content` */\n    unwrap?: boolean = false;\n\n    /** Whether to auto-run the tool and send the tool results to the model when available.\n     * (default: false)\n     *\n     * If a tool call is made, the tool's output will be used as the model's input.\n     * If a tool call is not made, the model's output will be used as the next step's input. */\n    auto_run_tools: boolean = false;\n\n    /** Whether to disable caching for the prompt step */\n    disable_cache: boolean = false;\n}\n\nmodel EvaluateStep extends BaseWorkflowStep<\"evaluate\"> {\n    @visibility(\"read\")\n    kind_: \"evaluate\" = \"evaluate\";\n\n    ...EvaluateStepDef;\n}\n\nmodel EvaluateStepDef {\n    /** The expression to evaluate */\n    evaluate: Record<TypedExpression<unknown> | Record<unknown>>;\n}\n\nmodel WaitForInputStep extends BaseWorkflowStep<\"wait_for_input\"> {\n    @visibility(\"read\")\n    kind_: \"wait_for_input\" = \"wait_for_input\";\n\n    ...WaitForInputStepDef;\n}\n\nmodel WaitForInputInfo {\n    /** Any additional info or data */\n    info: ExpressionObject<unknown>;\n}\n\nmodel WaitForInputStepDef {\n    /** Any additional info or data */\n    wait_for_input: WaitForInputInfo;\n}\n\nmodel LogStep extends BaseWorkflowStep<\"log\"> {\n    @visibility(\"read\")\n    kind_: \"log\" = \"log\";\n\n    ...LogStepDef;\n}\n\nmodel LogStepDef {\n    /** The value to log */\n    log: JinjaTemplate;\n}\n\n///////////////////////\n/// Key-value steps ///\n///////////////////////\n\nmodel GetStep extends BaseWorkflowStep<\"get\"> {\n    @visibility(\"read\")\n    kind_: \"get\" = \"get\";\n\n    ...GetStepDef;\n}\n\nmodel GetStepDef {\n    /** The key to get */\n    get: string;\n}\n\nmodel SetStep extends BaseWorkflowStep<\"set\"> {\n    @visibility(\"read\")\n    kind_: \"set\" = \"set\";\n\n    ...SetStepDef;\n}\n\nmodel SetStepDef {\n    /** The value to set */\n    set: Record<TypedExpression<unknown> | Record<unknown>>;\n}\n\n///////////////////////\n/// Iteration steps ///\n///////////////////////\n\nmodel ParallelStep extends BaseWorkflowStep<\"parallel\"> {\n    @visibility(\"read\")\n    kind_: \"parallel\" = \"parallel\";\n\n    ...ParallelStepDef;\n}\n\nmodel ParallelStepDef {\n    /** The steps to run in parallel. Max concurrency will depend on the platform. */\n    @maxItems(100)\n    parallel: MappableWorkflowStep[];\n}\n\nmodel ForeachDo {\n    /** The variable to iterate over.\n     * VALIDATION: Should NOT return more than 1000 elements. */\n    in: TypedExpression<Array<unknown>>;\n\n    /** The steps to run for each iteration */\n    do: SequentialWorkflowStep;\n}\n\nmodel ForeachStep extends BaseWorkflowStep<\"foreach\"> {\n    @visibility(\"read\")\n    kind_: \"foreach\" = \"foreach\";\n\n    ...ForeachStepDef;\n}\n\nmodel ForeachStepDef {\n    /** The steps to run for each iteration */\n    foreach: ForeachDo;\n}\n\nmodel MapReduceStep<Value = unknown, Accumulator = Array<Value>> extends BaseWorkflowStep<\"map_reduce\"> {\n    @visibility(\"read\")\n    kind_: \"map_reduce\" = \"map_reduce\";\n\n    /** The variable to iterate over */\n    over: TypedExpression<Array<unknown>>;\n\n    /** The steps to run for each iteration */\n    map: MappableWorkflowStep;\n\n    /** The expression to reduce the results.\n     * If not provided, the results are collected and returned as a list.\n     * A special parameter named `results` is the accumulator and `_` is the current value. */\n    reduce?: ReduceExpression<Value, Accumulator>;\n\n    /** The initial value of the reduce expression */\n    initial?: unknown = #[];\n\n    /** Whether to run the reduce expression in parallel and how many items to run in each batch */\n    @minValue(1)\n    @maxValue(100)\n    parallelism?: uint16;\n}\n\n/////////////////////////\n/// Conditional steps ///\n/////////////////////////\n\nmodel IfElseWorkflowStep extends BaseWorkflowStep<\"if_else\"> {\n    @visibility(\"read\")\n    kind_: \"if_else\" = \"if_else\";\n\n    ...IfElseWorkflowStepDef;\n}\n\nmodel IfElseWorkflowStepDef {\n    /** The condition to evaluate */\n    `if`: TypedExpression<boolean>;\n\n    /** The steps to run if the condition is true */\n    then: WaitForInputStep\n    | EvaluateStep\n    | ToolCallStep\n    | PromptStep\n    | GetStep\n    | SetStep\n    | LogStep\n    | YieldStep\n    | ReturnStep\n    | SleepStep\n    | ErrorWorkflowStep\n    | IfElseWorkflowStep\n    | SwitchStep\n    | ForeachStep\n    | ParallelStep\n    | MapReduceStep;\n\n    /** The steps to run if the condition is false */\n    `else`: WaitForInputStep\n    | EvaluateStep\n    | ToolCallStep\n    | PromptStep\n    | GetStep\n    | SetStep\n    | LogStep\n    | YieldStep\n    | ReturnStep\n    | SleepStep\n    | ErrorWorkflowStep\n    | IfElseWorkflowStep\n    | SwitchStep\n    | ForeachStep\n    | ParallelStep\n    | MapReduceStep\n    | null = null;\n}\n\nmodel CaseThen {\n    /** The condition to evaluate */\n    case: TypedExpression<boolean> | \"_\"; // To support '_' as a value\n\n    /** The steps to run if the condition is true */\n    then: NonConditionalWorkflowStep;\n}\n\nmodel SwitchStep extends BaseWorkflowStep<\"switch\"> {\n    @visibility(\"read\")\n    kind_: \"switch\" = \"switch\";\n\n    ...SwitchStepDef;\n}\n\nmodel SwitchStepDef {\n    /** The cond tree */\n    @minItems(1)\n    switch: CaseThen[];\n}\n\n//////////////////////////\n/// Other control flow ///\n//////////////////////////\n\nmodel YieldStep extends BaseWorkflowStep<\"yield\"> {\n    @visibility(\"read\")\n    kind_: \"yield\" = \"yield\";\n\n    ...YieldStepDef;\n}\n\nmodel YieldStepDef {\n    /** The subworkflow to run.\n     * VALIDATION: Should resolve to a defined subworkflow.\n     */\n    workflow: string;\n\n    /** The input parameters for the subworkflow (defaults to last step output) */\n    arguments: ExpressionObject<unknown> | \"_\" = \"_\";\n}\n\nmodel ErrorWorkflowStep extends BaseWorkflowStep<\"error\"> {\n    @visibility(\"read\")\n    kind_: \"error\" = \"error\";\n\n    ...ErrorWorkflowStepDef;\n}\n\nmodel ErrorWorkflowStepDef {\n    /** The error message */\n    error: string;\n}\n\nmodel SleepFor {\n    /** The number of seconds to sleep for */\n    @minValue(0)\n    @maxValue(60)\n    seconds: uint16 = 0;\n\n    /** The number of minutes to sleep for */\n    @minValue(0)\n    @maxValue(60)\n    minutes: uint16 = 0;\n\n    /** The number of hours to sleep for */\n    @minValue(0)\n    @maxValue(24)\n    hours: uint16 = 0;\n\n    /** The number of days to sleep for */\n    @minValue(0)\n    @maxValue(30)\n    days: uint16 = 0;\n}\n\nmodel SleepStep extends BaseWorkflowStep<\"sleep\"> {\n    @visibility(\"read\")\n    kind_: \"sleep\" = \"sleep\";\n\n    ...SleepStepDef;\n}\n\nmodel SleepStepDef {\n    /** The duration to sleep for (max 31 days) */\n    sleep: SleepFor;\n}\n\nmodel ReturnStep extends BaseWorkflowStep<\"return\"> {\n    @visibility(\"read\")\n    kind_: \"return\" = \"return\";\n\n    ...ReturnStepDef;\n}\n\nmodel ReturnStepDef {\n    /** The value to return */\n    `return`: ExpressionObject<unknown>;\n}\n"
  },
  {
    "path": "src/typespec/tools/algolia.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Integration definition for Algolia */\nmodel AlgoliaSetup {\n    /** The Algolia Application ID */\n    algolia_application_id: string;\n    \n    /** The Algolia API Key */\n    algolia_api_key: string;\n}\n\n/** Arguments for Algolia Search */\nmodel AlgoliaSearchArguments {\n    /** The index name to search */\n    index_name: string;\n    \n    /** The query to search for */\n    query: string;\n    \n    /** Optional attributes to retrieve */\n    attributes_to_retrieve?: string[];\n    \n    /** Maximum number of hits to return */\n    @minValue(1)\n    @maxValue(1000)\n    hits_per_page?: int32 = 10;\n}\n\n/** Algolia integration definition */\nmodel AlgoliaIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"algolia\" */\n    provider: \"algolia\" = \"algolia\";\n    \n    /** The specific method of the integration to call */\n    method?: string;\n    \n    /** The setup parameters for Algolia */\n    setup?: AlgoliaSetup;\n    \n    /** The arguments for Algolia */\n    arguments?: AlgoliaSearchArguments;\n}\n\n/** Algolia Provider Card */\nmodel AlgoliaProviderCard extends BaseProviderCard {\n    provider: \"algolia\" = \"algolia\";\n    setup: AlgoliaSetup;\n    methods: ProviderMethod<AlgoliaSearchArguments, AlgoliaSearchOutput>[] = #[\n        #{\n            method: \"search\",\n            description: \"Search for content in an Algolia index\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://www.algolia.com/\",\n        docs: \"https://www.algolia.com/doc/\",\n        icon: \"https://www.algolia.com/favicon.ico\",\n        friendly_name: \"Algolia Search\",\n    };\n}\n\n/** Algolia Search Output */\nmodel AlgoliaSearchOutput {\n    /** The search results */\n    hits: unknown[];\n    \n    /** Additional metadata from the search */\n    metadata: unknown;\n} "
  },
  {
    "path": "src/typespec/tools/anthropic.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n\n/**\n * Anthropic new tools\n */\n\n\nmodel Computer20241022Def {\n    type: \"computer_20241022\" = \"computer_20241022\";\n    name?: string = \"computer\";\n\n    /** The display width in pixels */\n    @minValue(600)\n    display_width_px: uint16 = 1024;\n\n    /** The display height in pixels */\n    @minValue(400)\n    display_height_px: uint16 = 768;\n\n    /** The display number to use */\n    @minValue(1)\n    @maxValue(10)\n    display_number?: uint16 = 1;\n}\n\nmodel TextEditor20241022Def {\n    type: \"text_editor_20241022\" = \"text_editor_20241022\";\n    name?: string = \"str_replace_editor\";\n}\n\nmodel Bash20241022Def {\n    type: \"bash_20241022\" = \"bash_20241022\";\n    name?: string = \"bash\";\n}\n\nenum Computer20241022Action {\n    /** Press a key or key-combination on the keyboard */\n    key,\n\n    /** Type a string of text on the keyboard */\n    type,\n\n    /** Get the current (x, y) pixel coordinate of the cursor on the screen */\n    cursor_position,\n\n    /** Move the cursor to a specified (x, y) pixel coordinate on the screen */\n    mouse_move,\n\n    /** Click the left mouse button */\n    left_click,\n\n    /** Click the right mouse button */\n    right_click,\n\n    /** Click the middle mouse button */\n    middle_click,\n\n    /** Double-click the left mouse button */\n    double_click,\n\n    /** Take a screenshot of the screen */\n    screenshot,\n}\n\nmodel ChosenComputer20241022 {\n    /** The action to perform */\n    action: Computer20241022Action;\n\n    /** The text to type */\n    text?: string;\n\n    /** The (x, y) pixel coordinate to move the cursor to */\n    coordinate?: uint16[];\n}\n\nmodel ChosenTextEditor20241022 {\n    /** The command to run */\n    command: \"str_replace\" | \"insert\" | \"view\" | \"undo_edit\";\n\n    /** The path to the file */\n    path: string;\n\n    /** The content of the file to be created */\n    file_text?: string;\n\n    /** The line to insert the new string after */\n    insert_line?: uint16;\n\n    /** The new string to insert */\n    new_str?: string;\n\n    /** The string in the file to replace */\n    old_str?: string;\n\n    /** The line range to view */\n    view_range?: uint16[];\n}\n\nmodel ChosenBash20241022 {\n    /** The bash command to run */\n    command?: string;\n\n    /** Whether to restart the tool */\n    restart?: boolean = false;\n}\n"
  },
  {
    "path": "src/typespec/tools/arxiv.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Arguments for Arxiv Search */\nmodel ArxivSearchArguments {\n    /** The search query for searching with Arxiv */\n    query: string;\n\n    /** The list of Arxiv IDs to search with */\n    id_list?: Array<string>;\n\n    /** The maximum number of results to return */\n    @minValue(1)\n    @maxValue(300000)\n    max_results?: int16 = 5;\n\n    /** The download the pdf of the results */\n    download_pdf?: boolean = false;\n\n    /** The sort criterion for the results */\n    sort_by?: \"relevance\" | \"lastUpdatedDate\" | \"submittedDate\" = \"relevance\";\n\n    /** The sort order for the results */\n    sort_order?: \"ascending\" | \"descending\" = \"descending\";\n}\n\n/** Arxiv integration definition */\nmodel ArxivIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"arxiv\" */\n    provider: \"arxiv\" = \"arxiv\";\n\n    /** The specific method of the integration to call */\n    method?: string;\n\n    /** The setup parameters for Arxiv */\n    setup?: null = null;\n\n    /** The arguments for Arxiv Search */\n    arguments?: ArxivSearchArguments;\n}\n\n/** The result of the Arxiv Search */\nmodel ArxivSearchOutput {\n    result: string;\n}\n\nmodel ArxivProviderCard extends BaseProviderCard {\n    provider: \"arxiv\" = \"arxiv\";\n    setup: null = null;\n    methods: ProviderMethod<ArxivSearchArguments, ArxivSearchOutput>[] = #[\n        #{\n            method: \"search\",\n            description: \"Search with Arxiv\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://pypi.org/project/arxiv/\",\n        docs: \"https://info.arxiv.org/help/api/index.html\",\n        icon: \"https://arxiv.com/favicon.ico\",\n        friendly_name: \"Arxiv Search\",\n    };\n}\n"
  },
  {
    "path": "src/typespec/tools/brave.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Integration definition for Brave Search */\nmodel BraveSearchSetup {\n    /** The api key for Brave Search */\n    brave_api_key: string;\n}\n\n/** Arguments for Brave Search */\nmodel BraveSearchArguments {\n    /** The search query for searching with Brave */\n    query: string;\n}\n\n/** Brave integration definition */\nmodel BraveIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"brave\" */\n    provider: \"brave\" = \"brave\";\n    \n    /** The specific method of the integration to call */\n    method?: string;\n    \n    /** The setup parameters for Brave */\n    setup?: BraveSearchSetup;\n    \n    /** The arguments for Brave Search */\n    arguments?: BraveSearchArguments;\n} \n\n/** The result of the Brave Search */\nmodel BraveSearchOutput {\n    result: string;\n}\n\nmodel BraveProviderCard extends BaseProviderCard {\n    provider: \"brave\" = \"brave\";\n    setup: BraveSearchSetup;\n    methods: ProviderMethod<BraveSearchArguments, BraveSearchOutput>[] = #[\n        #{\n            method: \"search\",\n            description: \"Search with Brave\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://brave.com/\",\n        docs: \"https://brave.com/docs/\",\n        icon: \"https://brave.com/favicon.ico\",\n        friendly_name: \"Brave Search\",\n    };\n}"
  },
  {
    "path": "src/typespec/tools/browserbase/contexts.tsp",
    "content": "import \"../../common\";\n\nusing Common;\n\nnamespace Tools;\n\n// TODO: Implement these\n/** browserbase context provider */\nmodel BrowserbaseContextIntegrationDef extends BaseBrowserbaseIntegrationDef {\n    /** The specific method of the integration to call */\n    method?: \"create_context\" = \"create_context\";\n\n    /** The arguments for the method */\n    arguments?: BrowserbaseContextArguments;\n}\n\nmodel BrowserbaseContextArguments {\n    /** The Project ID. Can be found in Settings. */\n    projectId: string;\n}\n\nmodel BrowserbaseContextOutput {\n    id: string;\n    uploadUrl?: url;\n    publicKey?: string;\n    cipherAlgorithm?: string;\n    initializationVectorSize?: uint16;\n}\n\n"
  },
  {
    "path": "src/typespec/tools/browserbase/extensions.tsp",
    "content": "import \"../../common\";\n\nusing Common;\n\nnamespace Tools;\n\n\n/** browserbase extension provider */\nmodel BrowserbaseExtensionIntegrationDef extends BaseBrowserbaseIntegrationDef {\n    /** The specific method of the integration to call */\n    method?: \"install_extension_from_github\";\n\n    /** The arguments for the method */\n    arguments?: BrowserbaseExtensionArguments;\n}\n\nmodel BrowserbaseExtensionArguments {\n    /** The GitHub repository name. */\n    repositoryName: string;\n\n    /** Ref to install from a branch or tag. */\n    ref?: string;\n}\n\nmodel BrowserbaseExtensionOutput {\n    /** The installed Extension ID. */\n    id: string;\n}\n"
  },
  {
    "path": "src/typespec/tools/browserbase/main.tsp",
    "content": "import \"../../common\";\nimport \"./contexts.tsp\";\nimport \"./extensions.tsp\";\nimport \"./sessions.tsp\";\n\nnamespace Tools;\n\nusing Common;\n\nalias BrowserbaseMethod =\n    | /** Get live URLs from the browserbase context */\n      \"get_live_urls\"\n    | /** List the sessions in the browserbase context */\n      \"list_sessions\"\n    | /** Create a new session in the browserbase context */\n      \"create_session\"\n    | /** Get a session from the browserbase context */\n      \"get_session\"\n    | /** Complete a session in the browserbase context */\n      \"complete_session\"\n    | /** Get the connection URL for a session */\n      \"get_connect_url\"\n    | /** Install an extension from GitHub to the browserbase context */\n      \"install_extension_from_github\"\n    | // TODO: Implement these\n      /** Create a new browserbase context */\n      \"create_context\"\n    | /** Get session downloads from the browserbase context */\n      \"get_session_downloads\"\n    | /** Get logs from the browserbase context */\n      \"get_logs\"\n    | /** Get recordings from the browserbase context */\n      \"get_recordings\";\n\n/** The setup parameters for the browserbase integration */\nmodel BrowserbaseSetup {\n    /** API key for the browserbase integration */\n    api_key: string;\n    /** The project ID. Can be found in Settings. */\n    project_id: string;\n    /** The API URL. Defaults to https://www.browserbase.com */\n    api_url?: string;\n    /** The connect URL. Defaults to wss://connect.browserbase.com */\n    connect_url?: string;\n}\n\n/** The base definition for a browserbase integration */\nmodel BaseBrowserbaseIntegrationDef extends BaseIntegrationDef {\n    provider: \"browserbase\" = \"browserbase\";\n    setup?: BrowserbaseSetup;\n    method?: BrowserbaseMethod;\n    arguments?: unknown;\n}\n\nalias BrowserbaseIntegrationDef = BrowserbaseContextIntegrationDef | BrowserbaseExtensionIntegrationDef | BrowserbaseSessionIntegrationDef;\n\nalias BrowserbaseArguments = BrowserbaseSessionArguments | BrowserbaseContextArguments | BrowserbaseExtensionArguments;\n\nalias BrowserbaseOutput = BrowserbaseSessionOutput | BrowserbaseContextOutput | BrowserbaseExtensionOutput;\n\nmodel BrowserbaseProviderCard extends BaseProviderCard {\n    provider: \"browserbase\" = \"browserbase\";\n    setup: BrowserbaseSetup;\n    methods: ProviderMethod<BrowserbaseArguments, BrowserbaseOutput>[] = #[\n        #{\n            method: \"list_sessions\",\n            description: \"List the sessions in the browserbase context\",\n        },\n        #{\n            method: \"create_session\",\n            description: \"Create a new session in the browserbase context\",\n        },\n        #{\n            method: \"get_session\",\n            description: \"Get a session from the browserbase context\",\n        },\n        #{\n            method: \"complete_session\",\n            description: \"Complete a session in the browserbase context\",\n        },\n        #{\n            method: \"get_live_urls\",\n            description: \"Get live URLs from the browserbase context\",\n        },\n        #{\n            method: \"install_extension_from_github\",\n            description: \"Install an extension from GitHub to the browserbase context\",\n        },\n        #{\n            method: \"get_connect_url\",\n            description: \"Get the connection URL for a session\",\n        }\n    ];\n}\n"
  },
  {
    "path": "src/typespec/tools/browserbase/sessions.tsp",
    "content": "import \"../../common\";\n\nusing Common;\n\nnamespace Tools;\n\nalias BrowserbaseSessionMethod =\n    | /** Get live URLs from the browserbase context */\n      \"get_live_urls\"\n    | /** List the sessions in the browserbase context */\n      \"list_sessions\"\n    | /** Create a new session in the browserbase context */\n      \"create_session\"\n    | /** Get a session from the browserbase context */\n      \"get_session\"\n    | /** Complete a session in the browserbase context */\n      \"complete_session\"\n    | /** Get the connection URL for a session */\n      \"get_connect_url\"\n    | // TODO: Implement these\n      \"get_session_downloads\"\n    | \"get_logs\"\n    | \"get_recordings\";\n\nalias BrowserbaseSessionIntegrationDef =\n    | BrowserbaseListSessionsIntegrationDef\n    | BrowserbaseCreateSessionIntegrationDef\n    | BrowserbaseGetSessionIntegrationDef\n    | BrowserbaseCompleteSessionIntegrationDef\n    | BrowserbaseGetSessionLiveUrlsIntegrationDef;\n//\n// TODO: Implement these\n// | BrowserbaseCreateSessionUploadsIntegrationDef\n// | BrowserbaseGetSessionDownloadsIntegrationDef\n// | BrowserbaseGetLogsIntegrationDef\n// | BrowserbaseGetRecordingsIntegrationDef\n\nalias BrowserbaseSessionArguments =\n    | BrowserbaseListSessionsArguments\n    | BrowserbaseCreateSessionArguments\n    | BrowserbaseGetSessionArguments\n    | BrowserbaseCompleteSessionArguments\n    | BrowserbaseGetSessionLiveUrlsArguments;\n//\n// TODO: Implement these\n// | BrowserbaseCreateSessionUploadsArguments\n// | BrowserbaseGetSessionDownloadsArguments\n// | BrowserbaseGetLogsArguments\n// | BrowserbaseGetRecordingsArguments\n\nalias BrowserbaseSessionOutput =\n    | BrowserbaseListSessionsOutput\n    | BrowserbaseCreateSessionOutput\n    | BrowserbaseGetSessionOutput\n    | BrowserbaseCompleteSessionOutput\n    | BrowserbaseGetSessionLiveUrlsOutput;\n//\n// TODO: Implement these\n// | BrowserbaseGetSessionDownloadsOutput\n// | BrowserbaseGetLogsOutput\n// | BrowserbaseGetRecordingsOutput\n\n/** browserbase list sessions integration definition */\nmodel BrowserbaseListSessionsIntegrationDef\n    extends BaseBrowserbaseIntegrationDef {\n    /** The specific method of the integration to call */\n    method: \"list_sessions\" = \"list_sessions\";\n\n    /** The arguments for the method */\n    arguments?: BrowserbaseListSessionsArguments;\n}\n\nmodel BrowserbaseListSessionsArguments {\n    /** The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED) */\n    status?: \"RUNNING\" | \"ERROR\" | \"TIMED_OUT\" | \"COMPLETED\";\n}\n\nalias BrowserbaseListSessionsOutput = {\n    id: string;\n    createdAt?: string;\n    updatedAt?: string;\n    projectId?: string;\n    startedAt?: string;\n    endedAt?: string;\n    expiresAt?: string;\n    status?: \"RUNNING\" | \"ERROR\" | \"TIMED_OUT\" | \"COMPLETED\";\n    proxyBytes?: uint64;\n    avgCpuUsage?: uint64;\n    memoryUsage?: uint64;\n    keepAlive?: boolean;\n    contextId?: string;\n}[];\n\n/** browserbase create session integration definition */\nmodel BrowserbaseCreateSessionIntegrationDef\n    extends BaseBrowserbaseIntegrationDef {\n    method: \"create_session\" = \"create_session\";\n\n    /** The arguments for the method */\n    arguments?: BrowserbaseCreateSessionArguments;\n}\n\nmodel BrowserbaseCreateSessionArguments {\n    /** The Project ID. Can be found in Settings. */\n    projectId?: string;\n\n    /** The installed Extension ID. See Install Extension from GitHub. */\n    extensionId?: string;\n\n    /** Browser settings */\n    browserSettings?: Record<unknown> = #{};\n\n    /** Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout. */\n    timeout?: uint16 = 3600;\n\n    /** Set to true to keep the session alive even after disconnections. This is available on the Startup plan only. */\n    keepAlive?: boolean = false;\n\n    /** Proxy configuration. Can be true for default proxy, or an array of proxy configurations. */\n    proxies?: boolean | Record<unknown>[] = false;\n}\n\nmodel BrowserbaseCreateSessionOutput {\n    id: string;\n    connectionUrl?: string;\n    createdAt?: string;\n    projectId?: string;\n    startedAt?: string;\n    endedAt?: string;\n    expiresAt?: string;\n    status?: \"RUNNING\" | \"ERROR\" | \"TIMED_OUT\" | \"COMPLETED\";\n    proxyBytes?: uint64;\n    avgCpuUsage?: uint64;\n    memoryUsage?: uint64;\n    keepAlive?: boolean;\n    contextId?: string;\n}\n\n/** browserbase get session integration definition */\nmodel BrowserbaseGetSessionIntegrationDef\n    extends BaseBrowserbaseIntegrationDef {\n    method: \"get_session\" = \"get_session\";\n    arguments?: BrowserbaseGetSessionArguments;\n}\n\nmodel BrowserbaseGetSessionArguments {\n    id: string;\n}\n\nmodel BrowserbaseGetSessionOutput {\n    id: string;\n    connectionUrl?: string;\n    createdAt?: string;\n    projectId?: string;\n    startedAt?: string;\n    endedAt?: string;\n    expiresAt?: string;\n    status?: \"RUNNING\" | \"ERROR\" | \"TIMED_OUT\" | \"COMPLETED\";\n    proxyBytes?: uint64;\n    avgCpuUsage?: uint64;\n    memoryUsage?: uint64;\n    keepAlive?: boolean;\n    contextId?: string;\n}\n\n/** browserbase complete session integration definition */\nmodel BrowserbaseCompleteSessionIntegrationDef\n    extends BaseBrowserbaseIntegrationDef {\n    method: \"complete_session\" = \"complete_session\";\n    arguments?: BrowserbaseCompleteSessionArguments;\n}\n\nmodel BrowserbaseCompleteSessionArguments {\n    id: string;\n    status?: \"REQUEST_RELEASE\" = \"REQUEST_RELEASE\";\n}\n\nmodel BrowserbaseCompleteSessionOutput {\n    success: boolean;\n}\n\n/** browserbase get session live urls integration definition */\nmodel BrowserbaseGetSessionLiveUrlsIntegrationDef\n    extends BaseBrowserbaseIntegrationDef {\n    method: \"get_live_urls\" = \"get_live_urls\";\n    arguments?: BrowserbaseGetSessionLiveUrlsArguments;\n}\n\nmodel BrowserbaseGetSessionLiveUrlsArguments {\n    id: string;\n}\n\nmodel BrowserbaseGetSessionLiveUrlsOutput {\n    debuggerFullscreenUrl?: url;\n    debuggerUrl?: url;\n    wsUrl?: url;\n    pages: {\n        id?: string;\n        url?: url;\n        faviconUrl?: url;\n        title?: string;\n        debuggerUrl?: url;\n        debuggerFullscreenUrl?: url;\n    }[] = #[];\n}"
  },
  {
    "path": "src/typespec/tools/cloudinary.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Setup parameters for Cloudinary integration */\nmodel CloudinarySetup {\n    /** The API key for Cloudinary */\n    cloudinary_api_key: string;\n\n    /** The API secret for Cloudinary */\n    cloudinary_api_secret: string;\n\n    /** The Cloud name for Cloudinary */\n    cloudinary_cloud_name: string;\n\n    /** Additional parameters for the Cloudinary API */\n    params?: Record<unknown>;\n}\n\nalias CloudinaryMethod =\n    | /** Upload media to Cloudinary */\n      \"media_upload\"\n    | /** Edit media in Cloudinary */\n      \"media_edit\";\n\n/** Arguments for Cloudinary media upload */\nmodel CloudinaryUploadArguments {\n    /** The URL of the file upload */\n    file: string;\n\n    /** Return base64 encoded file */\n    return_base64: boolean = false;\n\n    /** Optional public ID for the uploaded file */\n    public_id?: string;\n\n    /** Optional upload parameters */\n    upload_params?: Record<unknown>;\n}\n\n/** Arguments for Cloudinary media edit */\nmodel CloudinaryEditArguments {\n    /** The file Public ID in Cloudinary */\n    public_id: string;\n\n    /** The transformation to apply to the file */\n    transformation: Array<Record<unknown>>;\n\n    /** Return base64 encoded file */\n    return_base64: boolean = false;\n}\n\n/** Base Cloudinary integration definition */\nmodel BaseCloudinaryIntegrationDef extends BaseIntegrationDef {\n    provider: \"cloudinary\" = \"cloudinary\";\n    setup?: CloudinarySetup;\n    method?: CloudinaryMethod;\n}\n\n/** Cloudinary upload integration definition */\nmodel CloudinaryUploadIntegrationDef extends BaseCloudinaryIntegrationDef {\n    method: \"media_upload\" = \"media_upload\";\n    arguments?: CloudinaryUploadArguments;\n}\n\n/** Cloudinary edit integration definition */\nmodel CloudinaryEditIntegrationDef extends BaseCloudinaryIntegrationDef {\n    method: \"media_edit\" = \"media_edit\";\n    arguments?: CloudinaryEditArguments;\n}\n\nalias CloudinaryIntegrationDef = CloudinaryUploadIntegrationDef | CloudinaryEditIntegrationDef;\n\n/** Output for Cloudinary upload */\nmodel CloudinaryUploadOutput {\n    /** The URL of the uploaded file */\n    url: string;\n    \n    /** The public ID of the uploaded file */\n    public_id: string;\n\n    /** The base64 encoded file */\n    base64?: string;\n\n    /** The metadata of the uploaded file */\n    metadata: Record<unknown>;\n}\n\n/** Output for Cloudinary edit */\nmodel CloudinaryEditOutput {\n    /** The transformed URL from Cloudinary */\n    transformed_url: string;\n\n    /** The base64 encoded file */\n    base64?: string;\n}\n\nalias CloudinaryOutput = CloudinaryUploadOutput | CloudinaryEditOutput;\n\n/** Cloudinary Provider Card */\nmodel CloudinaryProviderCard extends BaseProviderCard {\n    provider: \"cloudinary\" = \"cloudinary\";\n    setup: CloudinarySetup;\n    methods: ProviderMethod<CloudinaryUploadArguments | CloudinaryEditArguments, CloudinaryOutput>[] = #[\n        #{\n            method: \"media_upload\",\n            description: \"Upload media to Cloudinary\",\n        },\n        #{\n            method: \"media_edit\",\n            description: \"Edit media in Cloudinary\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://cloudinary.com/\",\n        docs: \"https://cloudinary.com/documentation/python_quickstart\",\n        icon: \"https://cloudinary.com/favicon.ico\",\n        friendly_name: \"Cloudinary\",\n    };\n}"
  },
  {
    "path": "src/typespec/tools/email.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Setup parameters for Email integration */\nmodel EmailSetup {\n    /** The host of the email server */\n    host: string;\n\n    /** The port of the email server */\n    port: int32;\n\n    /** The username of the email server */\n    user: string;\n\n    /** The password of the email server */\n    password: string;\n}\n\n/** Arguments for Email sending */\nmodel EmailArguments {\n    /** The email address to send the email to */\n    to: string;\n\n    /** The email address to send the email from */\n    from: string;\n\n    /** The subject of the email */\n    subject: string;\n\n    /** The body of the email */\n    body: string;\n}\n\n/** Email integration definition */\nmodel EmailIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"email\" */\n    provider: \"email\" = \"email\";\n    \n    /** The specific method of the integration to call */\n    method?: string;\n    \n    /** The setup parameters for Email */\n    setup?: EmailSetup;\n    \n    /** The arguments for Email sending */\n    arguments?: EmailArguments;\n}\n\n/** Email Provider Card */\nmodel EmailProviderCard extends BaseProviderCard {\n    provider: \"email\" = \"email\";\n    setup: EmailSetup;\n    methods: ProviderMethod<EmailArguments, EmailOutput>[] = #[\n        #{\n            method: \"send\",\n            description: \"Send an email\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://emailservice.com/\",\n        docs: \"https://emailservice.com/docs/\",\n        icon: \"https://emailservice.com/favicon.ico\",\n        friendly_name: \"Email Service\",\n    };\n}\n\n/** Email Output */\nmodel EmailOutput {\n    /** Whether the email was sent successfully */\n    success: boolean;\n} "
  },
  {
    "path": "src/typespec/tools/endpoints.tsp",
    "content": "import \"../common\";\nimport \"../agents\";\nimport \"./models.tsp\";\n\nusing Common;\nusing Agents;\n\nnamespace Tools;\n\n//\n// TOOL ENDPOINTS\n//\n\ninterface AgentEndpoints\n    extends ChildLimitOffsetPagination<Tool, \"List tools of the given agent\">,\n        ChildCreateEndpoint<CreateAgentRequest, \"Create a new tool for this agent\">,\n        ChildUpdateEndpoint<UpdateToolRequest, \"Update an existing tool (overwrite existing values)\">,\n        ChildPatchEndpoint<PatchToolRequest, \"Update an existing tool (merges with existing values)\">,\n        ChildDeleteEndpoint<\"Delete an existing tool by id\"> {}\n"
  },
  {
    "path": "src/typespec/tools/ffmpeg.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Arguments for Ffmpeg CMD */\nmodel FfmpegSearchArguments {\n    /** The bash command string */\n    cmd: string;\n\n     /** The base64 string of the file*/\n    file?: string | Array<string>;\n\n}\n\n/** Ffmpeg integration definition */\nmodel FfmpegIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"ffmpeg\" */\n    provider: \"ffmpeg\" = \"ffmpeg\";\n    \n    /** The specific method of the integration to call */\n    method?: string;\n    \n    /** The setup parameters for Ffmpeg */\n    setup?: null = null;\n    \n    /** The arguments for Ffmpeg Search */\n    arguments?: FfmpegSearchArguments;\n}\n\n/** Ffmpeg Provider Card */\nmodel FfmpegProviderCard extends BaseProviderCard {\n    provider: \"ffmpeg\" = \"ffmpeg\";\n    setup: null = null;\n    methods: ProviderMethod<FfmpegSearchArguments, FfmpegSearchOutput>[] = #[\n        #{\n            method: \"bash_cmd\",\n            description: \"Run FFmpeg bash command\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://ffmpeg.org/\",\n        docs: \"https://ffmpeg.org/documentation.html\",\n        icon: \"https://upload.wikimedia.org/wikipedia/commons/5/5f/FFmpeg_Logo_new.svg\",\n        friendly_name: \"Ffmpeg\",\n    };\n}\n\n/** Ffmpeg Search Output */\nmodel FfmpegSearchOutput {\n    /** The documents returned from the Ffmpeg search */\n    file: string;\n    result: boolean;\n    mime_type: string;\n}"
  },
  {
    "path": "src/typespec/tools/google_sheets.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Setup parameters for Google Sheets integration */\nmodel GoogleSheetsSetup {\n    /** \n     * Whether to use Julep's built-in Google Sheets service account.\n     * If true, no credentials needed. If false, service_account_json is required.\n     */\n    use_julep_service: boolean;\n    \n    /** \n     * Base64 encoded service account JSON for authentication.\n     * Required when use_julep_service is false.\n     * Users can provide their own service account for better isolation and quota management.\n     */\n    service_account_json?: string;\n    \n    /** Default number of retry attempts for API calls */\n    @minValue(1)\n    @maxValue(10)\n    default_retry_count?: uint8 = 3;\n}\n\n/** Arguments for reading values from a spreadsheet */\nmodel GoogleSheetsReadArguments {\n    /** The ID of the spreadsheet to read from */\n    spreadsheet_id: string;\n    \n    /** The A1 notation of the range to read */\n    range: string;\n    \n    /** The major dimension that results should use */\n    major_dimension?: \"ROWS\" | \"COLUMNS\" = \"ROWS\";\n    \n    /** How values should be represented in the output */\n    value_render_option?: \"FORMATTED_VALUE\" | \"UNFORMATTED_VALUE\" | \"FORMULA\" = \"FORMATTED_VALUE\";\n    \n    /** How dates, times, and durations should be represented */\n    date_time_render_option?: \"SERIAL_NUMBER\" | \"FORMATTED_STRING\" = \"FORMATTED_STRING\";\n}\n\n/** Arguments for writing values to a spreadsheet */\nmodel GoogleSheetsWriteArguments {\n    /** The ID of the spreadsheet to write to */\n    spreadsheet_id: string;\n    \n    /** The A1 notation of the range to write to */\n    range: string;\n    \n    /** The values to write (2D array) */\n    values: unknown[][];\n    \n    /** How the input data should be interpreted */\n    value_input_option?: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\";\n    \n    /** How the input data should be inserted */\n    insert_data_option?: \"OVERWRITE\" | \"INSERT_ROWS\" = \"OVERWRITE\";\n    \n    /** Whether to include the values in the response */\n    include_values_in_response?: boolean = false;\n}\n\n/** Arguments for appending values to a spreadsheet */\nmodel GoogleSheetsAppendArguments {\n    /** The ID of the spreadsheet to append to */\n    spreadsheet_id: string;\n    \n    /** The A1 notation of the range to start appending from */\n    range: string;\n    \n    /** The values to append (2D array) */\n    values: unknown[][];\n    \n    /** How the input data should be interpreted */\n    value_input_option?: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\";\n    \n    /** How the input data should be inserted */\n    insert_data_option?: \"OVERWRITE\" | \"INSERT_ROWS\" = \"INSERT_ROWS\";\n    \n    /** Whether to include the values in the response */\n    include_values_in_response?: boolean = false;\n}\n\n/** Arguments for clearing values from a spreadsheet */\nmodel GoogleSheetsClearArguments {\n    /** The ID of the spreadsheet to clear values from */\n    spreadsheet_id: string;\n    \n    /** The A1 notation of the range to clear */\n    range: string;\n}\n\n/** Arguments for batch reading values from multiple ranges */\nmodel GoogleSheetsBatchReadArguments {\n    /** The ID of the spreadsheet to read from */\n    spreadsheet_id: string;\n    \n    /** The A1 notation of the ranges to read */\n    ranges: string[];\n    \n    /** The major dimension that results should use */\n    major_dimension?: \"ROWS\" | \"COLUMNS\" = \"ROWS\";\n    \n    /** How values should be represented in the output */\n    value_render_option?: \"FORMATTED_VALUE\" | \"UNFORMATTED_VALUE\" | \"FORMULA\" = \"FORMATTED_VALUE\";\n    \n    /** How dates, times, and durations should be represented */\n    date_time_render_option?: \"SERIAL_NUMBER\" | \"FORMATTED_STRING\" = \"FORMATTED_STRING\";\n}\n\n/** Arguments for batch updating values in multiple ranges */\nmodel GoogleSheetsBatchWriteArguments {\n    /** The ID of the spreadsheet to write to */\n    spreadsheet_id: string;\n    \n    /** The data to write to each range */\n    data: GoogleSheetsValueRange[];\n    \n    /** How the input data should be interpreted */\n    value_input_option?: \"RAW\" | \"USER_ENTERED\" = \"USER_ENTERED\";\n    \n    /** Whether to include the values in the response */\n    include_values_in_response?: boolean = false;\n}\n\n/** Represents a range of values to write */\nmodel GoogleSheetsValueRange {\n    /** The A1 notation of the range */\n    range: string;\n    \n    /** The values for the range (2D array) */\n    values: unknown[][];\n    \n    /** The major dimension of the values */\n    major_dimension?: \"ROWS\" | \"COLUMNS\" = \"ROWS\";\n}\n\nalias GoogleSheetsMethod =\n    | /** Read values from a specific range */\n      \"read_values\"\n    | /** Write values to a specific range */\n      \"write_values\"\n    | /** Append values to a spreadsheet */\n      \"append_values\"\n    | /** Clear values from a range */\n      \"clear_values\"\n    | /** Read values from multiple ranges */\n      \"batch_read\"\n    | /** Write values to multiple ranges */\n      \"batch_write\";\n\n/** Google Sheets integration definition */\nmodel GoogleSheetsIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"google_sheets\" */\n    provider: \"google_sheets\" = \"google_sheets\";\n    \n    /** The specific method of the integration to call */\n    method?: GoogleSheetsMethod;\n    \n    /** The setup parameters for Google Sheets */\n    setup?: GoogleSheetsSetup;\n    \n    /** The arguments for the method */\n    arguments?: GoogleSheetsReadArguments | GoogleSheetsWriteArguments | GoogleSheetsAppendArguments | GoogleSheetsClearArguments | GoogleSheetsBatchReadArguments | GoogleSheetsBatchWriteArguments;\n}\n\n/** Google Sheets Provider Card */\nmodel GoogleSheetsProviderCard extends BaseProviderCard {\n    provider: \"google_sheets\" = \"google_sheets\";\n    setup: GoogleSheetsSetup;\n    methods: ProviderMethod<unknown, unknown>[] = #[\n        #{\n            method: \"read_values\",\n            description: \"Read values from a specific range in a Google Sheets spreadsheet\",\n        },\n        #{\n            method: \"write_values\",\n            description: \"Write or update values in a specific range in a Google Sheets spreadsheet\",\n        },\n        #{\n            method: \"append_values\",\n            description: \"Append new rows of data to a Google Sheets spreadsheet\",\n        },\n        #{\n            method: \"clear_values\",\n            description: \"Clear values from a specific range in a Google Sheets spreadsheet\",\n        },\n        #{\n            method: \"batch_read\",\n            description: \"Read values from multiple ranges in a Google Sheets spreadsheet\",\n        },\n        #{\n            method: \"batch_write\",\n            description: \"Write values to multiple ranges in a Google Sheets spreadsheet\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://sheets.google.com/\",\n        docs: \"https://developers.google.com/sheets/api\",\n        icon: \"https://www.gstatic.com/images/branding/product/1x/sheets_2020q4_48dp.png\",\n        friendly_name: \"Google Sheets\",\n    };\n}\n\n/** Output for reading values from Google Sheets */\nmodel GoogleSheetsReadOutput {\n    /** The range that was read */\n    range: string;\n    \n    /** The major dimension of the values */\n    major_dimension: string;\n    \n    /** The values read from the spreadsheet */\n    values: unknown[][];\n}\n\n/** Output for writing/appending values to Google Sheets */\nmodel GoogleSheetsWriteOutput {\n    /** The spreadsheet ID that was updated */\n    spreadsheet_id: string;\n    \n    /** The range that was updated */\n    updated_range?: string;\n    \n    /** The number of rows updated */\n    updated_rows?: int32;\n    \n    /** The number of columns updated */\n    updated_columns?: int32;\n    \n    /** The number of cells updated */\n    updated_cells?: int32;\n    \n    /** The values that were written (if requested) */\n    updated_values?: unknown[][];\n}\n\n/** Output for clearing values from Google Sheets */\nmodel GoogleSheetsClearOutput {\n    /** The spreadsheet ID that was cleared */\n    spreadsheet_id: string;\n    \n    /** The range that was cleared */\n    cleared_range: string;\n}\n\n/** Output for batch reading from Google Sheets */\nmodel GoogleSheetsBatchReadOutput {\n    /** The spreadsheet ID that was read */\n    spreadsheet_id: string;\n    \n    /** The value ranges that were read */\n    value_ranges: GoogleSheetsValueRangeOutput[];\n}\n\n/** Represents a range of values that was read */\nmodel GoogleSheetsValueRangeOutput {\n    /** The range that was read */\n    range: string;\n    \n    /** The major dimension of the values */\n    major_dimension: string;\n    \n    /** The values read from the range */\n    values: unknown[][];\n}\n\n/** Output for batch writing to Google Sheets */\nmodel GoogleSheetsBatchWriteOutput {\n    /** The spreadsheet ID that was updated */\n    spreadsheet_id: string;\n    \n    /** Total number of sheets updated */\n    total_updated_sheets?: int32;\n    \n    /** Total number of rows updated */\n    total_updated_rows?: int32;\n    \n    /** Total number of columns updated */\n    total_updated_columns?: int32;\n    \n    /** Total number of cells updated */\n    total_updated_cells?: int32;\n    \n    /** Details about each range that was updated */\n    responses?: GoogleSheetsUpdateResponse[];\n}\n\n/** Details about a single range update */\nmodel GoogleSheetsUpdateResponse {\n    /** The range that was updated */\n    updated_range?: string;\n    \n    /** The number of rows updated */\n    updated_rows?: int32;\n    \n    /** The number of columns updated */\n    updated_columns?: int32;\n    \n    /** The number of cells updated */\n    updated_cells?: int32;\n}"
  },
  {
    "path": "src/typespec/tools/llama_parse.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Setup parameters for LlamaParse integration */\nmodel LlamaParseSetup {\n    /** The API key for LlamaParse */\n    llamaparse_api_key: string;\n\n    /** Optional upload parameters */\n    params?: Record<unknown>;\n}\n\n/** Arguments for LlamaParse integration */\nmodel LlamaParseFetchArguments {\n    /** File Name. If not provided, a random name will be generated. */\n    filename?: string;\n\n    /** The base64 string of the file, which can be a single string or a list of strings */\n    file: string | Array<string>;\n\n    /** Optional upload parameters */\n    params?: Record<unknown>;\n\n     /** The input file is base64 */\n    base64?: boolean = false;\n}\n\n/** LlamaParse integration definition */\nmodel LlamaParseIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"LlamaParseSetup\" */\n    provider: \"llama_parse\" = \"llama_parse\";\n    \n    /** The specific method of the integration to call */\n    method?: string;\n    \n    /** The setup parameters for LlamaParse */\n    setup?: LlamaParseSetup;\n    \n    /** The arguments for LlamaParse */\n    arguments?: LlamaParseFetchArguments;\n}\n\n/** LlamaParse Provider Card */\nmodel LlamaParseProviderCard extends BaseProviderCard {\n    provider: \"llama_parse\" = \"llama_parse\";\n    setup: LlamaParseSetup;\n    methods: ProviderMethod<LlamaParseFetchArguments, LlamaParseFetchOutput>[] = #[\n        #{\n            method: \"parse\",\n            description: \"Parse and Extract the Files\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://www.llamaindex.ai/\",\n        docs: \"https://docs.cloud.llamaindex.ai/llamaparse/getting_started\",\n        icon: \"https://www.llamaindex.ai/favicon.ico\",\n        friendly_name: \"LlamaParse\",\n    };\n}\n\n/** Represents a document with text content */\nmodel LlamaParseDocument {\n    // Using string for now since we need to represent langchain Document\n    text: string;\n    metadata: Record<unknown>;\n} \n\n/** LlamaParse Fetch Output */\nmodel LlamaParseFetchOutput {\n    /** The documents returned from the LlamaParse */\n    documents: LlamaParseDocument[];\n}"
  },
  {
    "path": "src/typespec/tools/mailgun.tsp",
    "content": "import \"../common\";\nimport \"./models.tsp\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Setup parameters for Mailgun integration */\nmodel MailgunSetup {\n    /** The API key for the Mailgun integration */\n    api_key: string;\n}\n\nalias MailgunMethod = \"send_email\";\n\n/** Arguments for mailgun.send_email method */\nmodel MailgunSendEmailArguments {\n    /** The email address to send the email to */\n    to: string;\n\n    /** The email address to send the email from */\n    from: string;\n\n    /** The subject of the email */\n    subject: string;\n\n    /** The body of the email */\n    body: string;\n\n    /** Optional carbon copy recipients (comma-separated email addresses) */\n    cc?: string;\n\n    /** Optional blind carbon copy recipients (comma-separated email addresses) */\n    bcc?: string;\n}\n\nalias MailgunArguments = MailgunSendEmailArguments;\n\n/** Mailgun integration definition */\nmodel MailgunIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"mailgun\" */\n    provider: \"mailgun\" = \"mailgun\";\n    \n    /** The specific method of the integration to call */\n    method?: MailgunMethod;\n    \n    /** The setup parameters for Mailgun */\n    setup?: MailgunSetup;\n    \n    /** The arguments for mailgun methods */\n    arguments?: MailgunArguments;\n}\n\n/** Mailgun Provider Card */\nmodel MailgunProviderCard extends BaseProviderCard {\n    provider: \"mailgun\" = \"mailgun\";\n    setup: MailgunSetup;\n    methods: ProviderMethod<MailgunSendEmailArguments, MailgunSendEmailOutput>[] = #[\n        #{\n            method: \"send_email\",\n            description: \"Send an email using Mailgun\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://www.mailgun.com/\",\n        docs: \"https://documentation.mailgun.com/\",\n        icon: \"https://mailgun.com/favicon.ico\",\n        friendly_name: \"Mailgun\",\n    };\n}\n\n/** mailgun.send_email method Output */\nmodel MailgunSendEmailOutput {\n    /** Whether the email was sent successfully */\n    success: boolean;\n\n    /** The error message if the email was not sent successfully */\n    error?: string;\n}\n"
  },
  {
    "path": "src/typespec/tools/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\nimport \"./anthropic.tsp\";\nimport \"./brave.tsp\";\nimport \"./email.tsp\";\nimport \"./spider.tsp\";\nimport \"./weather.tsp\";\nimport \"./wikipedia.tsp\";\nimport \"./browserbase\";\nimport \"./remote_browser.tsp\";\nimport \"./llama_parse.tsp\";\nimport \"./ffmpeg.tsp\";\nimport \"./cloudinary.tsp\";\nimport \"./arxiv.tsp\";\nimport \"./unstructured.tsp\";\nimport \"./algolia.tsp\";\nimport \"./mcp.tsp\";\nimport \"./google_sheets.tsp\";\n\nnamespace Tools;\n\n//\n// TOOLS\n//\n"
  },
  {
    "path": "src/typespec/tools/mcp.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Transport type for MCP servers */\nalias McpTransport = (\"sse\" | \"http\");\n\n/** Setup parameters for MCP integration */\nmodel McpSetup {\n    /** Transport used to connect to the MCP server */\n    transport: McpTransport;\n\n    /** (stdio) Executable or command to launch the server */\n    command?: string;\n\n    /** (stdio) Arguments for the server command */\n    args?: string[] = #[];\n\n    /** (stdio) Working directory for the server process */\n    cwd?: string;\n\n    /** (stdio) Environment variables for the server process */\n    env?: Record<string> = #{};\n\n    /** (http) Base URL for the MCP server (usually ends with /mcp) */\n    http_url?: url;\n\n    /** (http) Optional HTTP headers to include (e.g., Authorization) */\n    http_headers?: Record<string> = #{};\n}\n\n/** Arguments to call a named tool on the MCP server */\nmodel McpCallToolArguments {\n    /** The MCP tool name to invoke */\n    tool_name: string;\n\n    /** JSON-serializable arguments to pass to the MCP tool */\n    arguments?: Record<unknown> = #{};\n\n    /** Optional per-call timeout in seconds */\n    timeout_seconds?: uint16 = 60;\n}\n\n/** Arguments to list available tools */\nmodel McpListToolsArguments {dummy: string = \"dummy\";}\n\n/** A single MCP tool description */\nmodel McpToolInfo {\n    name: string;\n    description?: string;\n    /** JSON Schema for the tool input parameters, if provided by the server */\n    input_schema?: Record<unknown>;\n}\n\n/** Output for listing tools from an MCP server */\nmodel McpListToolsOutput {\n    tools: McpToolInfo[];\n}\n\n/** Output for an MCP tool call */\nmodel McpToolCallOutput {\n    /** Concatenated textual content, if any was returned */\n    text?: string | null = null;\n\n    /** Structured content returned by the server, if present */\n    structured?: Record<unknown> | null = null;\n\n    /** Raw content items as returned by MCP (best-effort JSON form) */\n    content?: Record<unknown>[] = #[];\n\n    /** Whether the server indicated an error for this call */\n    is_error?: boolean = false;\n}\n\n/** MCP integration definition */\nmodel McpIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"mcp\" */\n    provider: \"mcp\" = \"mcp\";\n\n    /** The specific method of the integration to call */\n    method?: string;\n\n    /** The setup parameters for MCP */\n    setup?: McpSetup;\n\n    /** The arguments for MCP methods */\n    arguments?: McpCallToolArguments | McpListToolsArguments;\n}\n\n/** MCP Provider Card */\nmodel McpProviderCard extends BaseProviderCard {\n    provider: \"mcp\" = \"mcp\";\n    setup: McpSetup;\n    methods: ProviderMethod<McpCallToolArguments | McpListToolsArguments, McpToolCallOutput | McpListToolsOutput>[] = #[\n        #{\n            method: \"list_tools\",\n            description: \"List tools exposed by an MCP server\",\n        },\n        #{\n            method: \"call_tool\",\n            description: \"Call a named tool on an MCP server\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://modelcontextprotocol.io/\",\n        docs: \"https://spec.modelcontextprotocol.io/\",\n        icon: \"https://modelcontextprotocol.io/favicon.ico\",\n        friendly_name: \"Model Context Protocol\",\n    };\n}\n\n"
  },
  {
    "path": "src/typespec/tools/models.tsp",
    "content": "import \"../common\";\nimport \"./algolia.tsp\";\nimport \"./arxiv.tsp\";\nimport \"./brave.tsp\";\nimport \"./browserbase\";\nimport \"./cloudinary.tsp\";\nimport \"./ffmpeg.tsp\";\nimport \"./google_sheets.tsp\";\nimport \"./llama_parse.tsp\";\nimport \"./mailgun.tsp\";\nimport \"./remote_browser.tsp\";\nimport \"./spider.tsp\";\nimport \"./unstructured.tsp\";\nimport \"./weather.tsp\";\nimport \"./wikipedia.tsp\";\nimport \"./mcp.tsp\";\n\nusing Common;\n\nnamespace Tools;\n\n//\n// TOOL MODELS\n//\n\n// TODO: Split these into different files\n\n/** A valid HTTP method */\nalias httpMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\" | \"PATCH\" | \"HEAD\" | \"OPTIONS\" | \"CONNECT\" | \"TRACE\";\n\n/** Integration provider name */\nalias integrationProvider = (\n    | \"dummy\"\n    | \"weather\"\n    | \"wikipedia\"\n    | \"spider\"\n    | \"brave\"\n    | \"browserbase\"\n    | \"email\"\n    | \"mailgun\"\n    | \"remote_browser\"\n    | \"llama_parse\"\n    | \"ffmpeg\"\n    | \"cloudinary\"\n    | \"arxiv\"\n    | \"unstructured\"\n    | \"algolia\"\n    | \"mcp\"\n    | \"google_sheets\"\n);\n\nenum ToolType {\n    /** A tool that emulates a function call */\n    function,\n\n    /** A tool that uses one of the Julep integrations */\n    integration,\n\n    /** A tool that uses a system resource */\n    system,\n\n    /** A tool that makes an API call */\n    api_call,\n\n    /** (Alpha) Anthropic new tools */\n    computer_20241022,\n    text_editor_20241022,\n    bash_20241022,\n}\n\n/** The parameters the functions accepts, described as a JSON Schema object. */\nalias FunctionParameters = Record<unknown>;\n\nalias ToolOutput = Record<unknown>;\n\nalias ToolChoiceOption = \"auto\" | \"none\" | NamedToolChoice;\n\nmodel SecretRef {\n    /** The name of the secret to reference */\n    name: string;\n}\n\n/** Function definition */\nmodel FunctionDef {\n    /** DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons. */\n    name?: null = null;\n\n    /** DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons. */\n    description?: null = null;\n\n    /** The parameters the function accepts */\n    parameters?: FunctionParameters;\n\n}\n\n/** Integration definition */\n@discriminator(\"provider\")\nmodel BaseIntegrationDef {\n    /** The provider of the integration */\n    provider: integrationProvider;\n\n    /** The specific method of the integration to call */\n    method?: string;\n\n    /** The setup parameters the integration accepts */\n    setup?: unknown;\n\n    /** The arguments to pre-apply to the integration call */\n    arguments?: unknown;\n}\n\nmodel DummyIntegrationDef extends BaseIntegrationDef {\n    provider: \"dummy\" = \"dummy\";\n}\n\nmodel BaseProviderCard {\n    provider: integrationProvider;\n    setup: unknown;\n    methods: ProviderMethod<unknown, unknown>[];\n    info: ProviderInfo;\n}\n\nmodel ProviderMethod<Arguments, Output> {\n    method: string;\n    description?: string;\n    arguments?: Arguments;\n    output?: Output;\n}\n\nmodel ProviderInfo {\n    url?: url;\n    docs?: url;\n    icon?: url;\n    friendly_name?: string;\n}\n\nalias IntegrationDef = (\n    | DummyIntegrationDef\n    | BraveIntegrationDef\n    | EmailIntegrationDef\n    | SpiderIntegrationDef\n    | WikipediaIntegrationDef\n    | WeatherIntegrationDef\n    | MailgunIntegrationDef\n    | BrowserbaseIntegrationDef\n    | RemoteBrowserIntegrationDef\n    | LlamaParseIntegrationDef\n    | FfmpegIntegrationDef\n    | CloudinaryIntegrationDef\n    | ArxivIntegrationDef\n    | UnstructuredIntegrationDef\n    | AlgoliaIntegrationDef\n    | McpIntegrationDef\n    | GoogleSheetsIntegrationDef\n);\n\n//\n// SYSTEM TOOL MODELS\n//\n\nalias resourceType = (\n    | \"agent\"\n    | \"user\"\n    | \"task\"\n    | \"execution\"\n    | \"doc\"\n    | \"session\"\n    | \"job\"\n);\n\nalias subresourceType = (\n    | \"tool\"\n    | \"doc\"\n    | \"execution\"\n    | \"transition\"\n);\n\nalias operationType = (\n    | \"create\"\n    | \"update\"\n    | \"patch\"\n    | \"create_or_update\"\n    | \"embed\"\n    | \"change_status\"\n    | \"search\"\n    | \"chat\"\n    | \"history\"\n    | \"delete\"\n    | \"get\"\n    | \"list\"\n);\n\n// TODO: Add granular definitions for each system call\n\n/** System definition */\nmodel SystemDef {\n    /** Resource is the name of the resource to use */\n    resource: resourceType;\n\n    /** Operation is the name of the operation to perform */\n    operation: operationType;\n\n    /** Resource id (if applicable) */\n    resource_id?: uuid;\n\n    /** Sub-resource type (if applicable) */\n    subresource?: subresourceType;\n\n    /** The arguments to pre-apply to the system call */\n    arguments?: FunctionParameters;\n}\n\n/** JSON Schema for API call parameters */\nmodel ParameterSchema {\n  /** Schema type (usually 'object') */\n  type: string = \"object\";\n  \n  /** Properties definition for parameters */\n  properties: Record<PropertyDefinition>;\n  \n  /** List of required property names */\n  required?: string[] = #[];\n  \n  /** Whether to allow additional properties */\n  additionalProperties?: boolean;\n}\n\n/** Property definition for parameter schema */\nmodel PropertyDefinition {\n  /** Type of the property */\n  type: string;\n  \n  /** Description of the property */\n  description?: string;\n  \n  /** Enum values if applicable */\n  `enum`?: string[];\n  \n  /** Items definition for array types */\n  items?: PropertyDefinition;\n}\n\n/** API call definition */\nmodel ApiCallDef {\n    /** The HTTP method to use */\n    method: httpMethod;\n\n    /** The URL to call */\n    url: url;\n\n    /** The schema of the response */\n    schema?: Record<unknown>;\n\n    /** The headers to send with the request */\n    headers?: Record<string>;\n\n    /** Secret references to use in templates (available only at setup time, not during execution) */\n    secrets?: Record<SecretRef>;\n\n    /** The content as base64 to send with the request */\n    content?: string;\n\n    /** The data to send as form data */\n    data?: Record<unknown>;\n\n    /** The data to send as files data */\n    files?: Record<unknown>;\n\n    /** JSON body to send with the request */\n    json?: Record<unknown>;\n\n    /** Cookies */\n    cookies?: Record<string>;\n\n    /** The parameters to send with the request */\n    params?: string | Record<unknown>;\n\n    /** The schema of the parameters */\n    params_schema?: ParameterSchema;\n\n    /** Follow redirects */\n    follow_redirects?: boolean;\n\n    /** The timeout for the request */\n    timeout?: uint8;\n\n    /** Whether to include the content in the response */\n    include_response_content?: boolean = true;\n}\n\nmodel Tool {\n    /** Name of the tool (must be unique for this agent and a valid python identifier string )*/\n    name: validPythonIdentifier;\n\n    /** Type of the tool */\n    type: ToolType;\n\n    /** Description of the tool */\n    description?: string;\n\n    /** The function to call */\n    function?: FunctionDef;\n\n    /** The integration to call */\n    integration?: IntegrationDef;\n\n    /** The system to call */\n    system?: SystemDef;\n\n    /** The API call to make */\n    api_call?: ApiCallDef;\n\n    /** (Alpha) Anthropic new tools */\n    computer_20241022?: Computer20241022Def;\n    text_editor_20241022?: TextEditor20241022Def;\n    bash_20241022?: Bash20241022Def;\n\n    ...HasTimestamps;\n    ...HasId;\n}\n\nmodel FunctionCallOption {\n    /** The name of the function */\n    name: string;\n\n    /** The parameters to pass to the function */\n    arguments?: string; // May be a JSON string\n}\n\nmodel NamedToolChoice {\n    function?: FunctionCallOption;\n    integration?: never;\n    system?: never;\n    api_call?: never;\n}\n\nmodel ToolResponse {\n    @key id: string;\n\n    /** The output of the tool */\n    output: ToolOutput;\n}\n\n/** Payload for creating a tool */\n@withVisibility(\"create\")\nmodel CreateToolRequest {\n    ...Tool;\n}\n\n/** Payload for updating a tool */\n@withVisibility(\"update\")\nmodel UpdateToolRequest {\n    ...Tool;\n}\n\n/** Payload for patching a tool */\nmodel PatchToolRequest is UpdateToolRequest {}\n\n/** The response tool value generated by the model */\nmodel BaseChosenToolCall {\n    /** Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now) */\n    type: ToolType;\n\n    function?: FunctionCallOption;\n    integration?: unknown; // ChosenIntegrationCall\n    system?: unknown; // ChosenSystemCall\n    api_call?: unknown; // ChosenApiCall\n\n    /** (Alpha) Anthropic new tools */\n    computer_20241022?: ChosenComputer20241022;\n    text_editor_20241022?: ChosenTextEditor20241022;\n    bash_20241022?: ChosenBash20241022;\n\n    @visibility(\"read\")\n    id?: string;\n}\n\nmodel ChosenFunctionCall extends BaseChosenToolCall {\n    type: ToolType.function;\n\n    /** The function to call */\n    function: FunctionCallOption;\n}\n\nalias ChosenToolCall = (\n    | ChosenFunctionCall\n    // | ChosenIntegrationCall\n    // | ChosenSystemCall\n    // | ChosenApiCall\n    | ChosenComputer20241022\n    | ChosenTextEditor20241022\n    | ChosenBash20241022\n);\n"
  },
  {
    "path": "src/typespec/tools/remote_browser.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\nalias RemoteBrowserAction = \n    | /** Press a key */\n      \"key\"\n    | /** Type text */\n      \"type\"\n    | /** Move the mouse to a coordinate */\n      \"mouse_move\"\n    | /** Left click */\n      \"left_click\"\n    | /** Left click and drag */\n      \"left_click_drag\"\n    | /** Right click */\n      \"right_click\"\n    | /** Middle click */\n      \"middle_click\"\n    | /** Double click */\n      \"double_click\"\n    | /** Take a screenshot */\n      \"screenshot\"\n    | /** Get the cursor position */\n      \"cursor_position\"\n    | /** Navigate to a URL */\n      \"navigate\"\n    | /** Refresh the page */\n      \"refresh\";\n\n/** The setup parameters for the remote browser */\nmodel RemoteBrowserSetup {\n    /** The connection URL for the remote browser */\n    connect_url?: string;\n\n    /** The width of the browser */\n    width?: uint16;\n\n    /** The height of the browser */\n    height?: uint16;\n}\n\n/** The arguments for the remote browser */\nmodel RemoteBrowserArguments {\n    /** The connection URL for the remote browser */\n    connect_url?: string;\n    \n    /** The action to perform */\n    action: RemoteBrowserAction;\n\n    /** The text */\n    text?: string;\n\n    /** The coordinate to move the mouse to */\n    coordinate?: [uint16, uint16];\n}\n\n/** The output of the remote browser */\nmodel RemoteBrowserOutput {\n    /** The output of the action */\n    output: string | null = null;\n\n    /** The error of the action */\n    error: string | null = null;\n\n    /** The base64 encoded image of the action */\n    base64_image: string | null = null;\n\n    /** The system output of the action */\n    system: string | null = null;\n}\n\n/** The integration definition for the remote browser */\nmodel RemoteBrowserIntegrationDef extends BaseIntegrationDef {\n    provider: \"remote_browser\" = \"remote_browser\";\n    setup: RemoteBrowserSetup;\n    method: \"perform_action\" = \"perform_action\";\n    arguments?: RemoteBrowserArguments;\n}\n\nmodel RemoteBrowserProviderCard extends BaseProviderCard {\n    provider: \"remote_browser\" = \"remote_browser\";\n    setup: RemoteBrowserSetup;\n    methods: ProviderMethod<RemoteBrowserArguments, RemoteBrowserOutput>[] = #[\n        #{\n            method: \"perform_action\",\n            description: \"Perform an action in the remote browser\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://playwright.dev/\",\n        docs: \"https://playwright.dev/docs/api/class-page\",\n        icon: \"https://playwright.dev/favicon.ico\",\n        friendly_name: \"Playwright\",\n    };\n}\n"
  },
  {
    "path": "src/typespec/tools/spider.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Setup parameters for Spider integration */\nmodel SpiderSetup {\n    /** The API key for Spider */\n    spider_api_key: string;\n}\n\n/** Arguments for Spider integration */\nmodel SpiderFetchArguments {\n    /** The URL to fetch data from */\n    url: url;\n\n    /** The content type to return */\n    content_type?: \"application/json\" | \"text/csv\" | \"application/xml\" | \"application/jsonl\" = \"application/json\";\n\n    /** Additional parameters for the Spider API */\n    params?: Record<unknown>;\n}\n\nalias SpiderMethod =\n    | /** Crawl a website and extract data */\n      \"crawl\"\n    | /** Retrieve links from the specified URL. */\n      \"links\"\n    | /** Take a screenshot of the specified URL. */\n      \"screenshot\"\n    | /** Perform a search and gather a list of websites to start crawling and collect resources. */\n      \"search\";\n\n/** Spider integration definition */\nmodel SpiderIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"spider\" */\n    provider: \"spider\" = \"spider\";\n    \n    /** The specific method of the integration to call */\n    method?: SpiderMethod;\n    \n    /** The setup parameters for Spider */\n    setup?: SpiderSetup;\n    \n    /** The arguments for Spider */\n    arguments?: SpiderFetchArguments;\n}\n\n/** Spider Provider Card */\nmodel SpiderProviderCard extends BaseProviderCard {\n    provider: \"spider\" = \"spider\";\n    setup: SpiderSetup;\n    methods: ProviderMethod<SpiderFetchArguments, SpiderFetchOutput>[] = #[\n        #{\n            method: \"crawl\",\n            description: \"Crawl a website and extract data\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://spider.com/\",\n        docs: \"https://spider.com/docs/\",\n        icon: \"https://spider.com/favicon.ico\",\n        friendly_name: \"Spider\",\n    };\n}\n\n/** Spider Fetch Output */\nmodel SpiderFetchOutput {\n    /** The documents returned from the spider */\n    documents: SpiderDocument[];\n}\n\n/** Represents a document with text content */\nmodel SpiderDocument {\n    // Using string for now since we need to represent langchain Document\n    page_content: string;\n    metadata: Record<unknown>;\n} "
  },
  {
    "path": "src/typespec/tools/unstructured.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Setup parameters for Unstructured integration */\nmodel UnstructuredSetup {\n    /** The API key for Unstructured.io */\n    unstructured_api_key: string;\n\n    /** Optional server endpoint URL */\n    server_url?: string;\n\n    /** The server by name to use for all methods */\n    server?: string;\n\n    /** Parameters to optionally template the server URL with */\n    url_params?: Record<unknown>;\n\n    /** The retry configuration to use for all supported methods */\n    retry_config?: Record<unknown>;\n\n    /** Optional request timeout applied to each operation in milliseconds */\n    timeout_ms?: int16;\n}\n\n/** Arguments for Unstructured partition integration */\nmodel UnstructuredPartitionArguments {\n    /** File Name. If not provided, a random name will be generated. */\n    filename?: string;\n\n    /** The base64 string of the file, which can be a single string or a list of strings */\n    file: string;\n\n    /** Additional partition parameters */\n    partition_params?: Record<unknown>;\n}\n\n/** Unstructured integration definition */\nmodel UnstructuredIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"unstructured\" */\n    provider: \"unstructured\" = \"unstructured\";\n    \n    /** The specific method of the integration to call */\n    method?: string;\n    \n    /** The setup parameters for Unstructured */\n    setup?: UnstructuredSetup;\n    \n    /** The arguments for Unstructured */\n    arguments?: UnstructuredPartitionArguments;\n}\n\n/** Unstructured Provider Card */\nmodel UnstructuredProviderCard extends BaseProviderCard {\n    provider: \"unstructured\" = \"unstructured\";\n    setup: UnstructuredSetup;\n    methods: ProviderMethod<UnstructuredPartitionArguments, UnstructuredPartitionOutput>[] = #[\n        #{\n            method: \"partition\",\n            description: \"Partition documents into structured elements\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://unstructured.io/\",\n        docs: \"https://docs.unstructured.io/\",\n        icon: \"https://unstructured.io/favicon.ico\",\n        friendly_name: \"Unstructured.io\",\n    };\n}\n\n/** Represents a document element from Unstructured */\nmodel UnstructuredElement {\n    /** The type of element */\n    element_type: string;\n    \n    /** The text content of the element */\n    text: string;\n    \n    /** Metadata about the element */\n    metadata: Record<unknown>;\n}\n\n/** Unstructured Partition Output */\nmodel UnstructuredPartitionOutput {\n    /** The elements returned from Unstructured */\n    elements: UnstructuredElement[];\n} "
  },
  {
    "path": "src/typespec/tools/weather.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Integration definition for Weather */\nmodel WeatherSetup {\n    /** The api key for OpenWeatherMap */\n    openweathermap_api_key: string;\n}\n\n/** Arguments for Weather */\nmodel WeatherGetArguments {\n    /** The location for which to fetch weather data */\n    location: string;\n}\n\n/** Weather integration definition */\nmodel WeatherIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"weather\" */\n    provider: \"weather\" = \"weather\";\n    \n    /** The specific method of the integration to call */\n    method?: string;\n    \n    /** The setup parameters for Weather */\n    setup?: WeatherSetup;\n    \n    /** The arguments for Weather */\n    arguments?: WeatherGetArguments;\n}\n\n/** Weather Provider Card */\nmodel WeatherProviderCard extends BaseProviderCard {\n    provider: \"weather\" = \"weather\";\n    setup: WeatherSetup;\n    methods: ProviderMethod<WeatherGetArguments, WeatherGetOutput>[] = #[\n        #{\n            method: \"get\",\n            description: \"Get the current weather for a city\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://www.weatherapi.com/\",\n        docs: \"https://www.weatherapi.com/docs/\",\n        icon: \"https://www.weatherapi.com/favicon.ico\",\n        friendly_name: \"Weather API\",\n    };\n}\n\n/** Weather Get Output */\nmodel WeatherGetOutput {\n    /** The weather data for the specified location */\n    result: string;\n} "
  },
  {
    "path": "src/typespec/tools/wikipedia.tsp",
    "content": "import \"../common\";\n\nusing Common;\n\nnamespace Tools;\n\n/** Arguments for Wikipedia Search */\nmodel WikipediaSearchArguments {\n    /** The search query string */\n    query: string;\n\n    /** Maximum number of documents to load */\n    @minValue(1)\n    @maxValue(10)\n    load_max_docs: uint8 = 2;\n}\n\n/** Wikipedia integration definition */\nmodel WikipediaIntegrationDef extends BaseIntegrationDef {\n    /** The provider must be \"wikipedia\" */\n    provider: \"wikipedia\" = \"wikipedia\";\n    \n    /** The specific method of the integration to call */\n    method?: string;\n    \n    /** The setup parameters for Wikipedia */\n    setup?: null = null;\n    \n    /** The arguments for Wikipedia Search */\n    arguments?: WikipediaSearchArguments;\n}\n\n/** Wikipedia Provider Card */\nmodel WikipediaProviderCard extends BaseProviderCard {\n    provider: \"wikipedia\" = \"wikipedia\";\n    setup: null = null;\n    methods: ProviderMethod<WikipediaSearchArguments, WikipediaSearchOutput>[] = #[\n        #{\n            method: \"search\",\n            description: \"Search for a page on Wikipedia\",\n        }\n    ];\n    info: ProviderInfo = #{\n        url: \"https://www.wikipedia.org/\",\n        docs: \"https://www.wikipedia.org/wiki/Main_Page\",\n        icon: \"https://www.wikipedia.org/static/favicon/wikipedia.ico\",\n        friendly_name: \"Wikipedia\",\n    };\n}\n\n/** Represents a document with text content */\nmodel WikipediaDocument {\n    // Using string for now since we need to represent langchain Document\n    page_content: string;\n    metadata: Record<unknown>;\n} \n\n/** Wikipedia Search Output */\nmodel WikipediaSearchOutput {\n    /** The documents returned from the Wikipedia search */\n    documents: WikipediaDocument[];\n}"
  },
  {
    "path": "src/typespec/tsp-output/@typespec/openapi3/openapi-1.0.0.yaml",
    "content": "openapi: 3.0.0\ninfo:\n  title: Julep API\n  termsOfService: https://julep.ai/terms\n  contact:\n    name: Julep AI\n    url: https://julep.ai\n    email: developers@julep.ai\n  license:\n    name: Apache 2.0\n    url: https://www.apache.org/licenses/LICENSE-2.0.html\n  description: Julep is a backend for creating stateful AI apps with background tasks and long-term memory easily.\n  version: 1.0.0\nexternalDocs:\n  url: https://docs.julep.ai\n  description: Julep API documentation\ntags: []\npaths:\n  /agents:\n    get:\n      operationId: AgentsRoute_list\n      description: List Agents (paginated)\n      parameters:\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Agents.Agent'\n                required:\n                  - items\n    post:\n      operationId: AgentsRoute_create\n      description: Create a new Agent\n      parameters: []\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Agents.Agent'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Agents.CreateAgentRequest'\n  /agents/models:\n    get:\n      operationId: AgentsRoute_listModels\n      description: List all available models\n      parameters: []\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Agents.ListModelsResponse'\n  /agents/{id}:\n    post:\n      operationId: AgentsRoute_createOrUpdate\n      description: Create or update an Agent\n      parameters:\n        - $ref: '#/components/parameters/Agents.CreateOrUpdateAgentRequest.id'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Agents.Agent'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Agents.UpdateAgentRequest'\n    put:\n      operationId: AgentsRoute_update\n      description: Update an existing Agent by id (overwrites existing values; use PATCH for merging instead)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Agents.Agent'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Agents.UpdateAgentRequest'\n    patch:\n      operationId: AgentsRoute_patch\n      description: Update an existing Agent by id (merges with existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Agents.Agent'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Agents.PatchAgentRequest'\n    delete:\n      operationId: AgentsRoute_delete\n      description: Delete Agent by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n    get:\n      operationId: AgentsRoute_get\n      description: Get an Agent by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Agents.Agent'\n  /agents/{id}/docs:\n    post:\n      operationId: AgentDocsRoute_create\n      description: Create a Doc for this Agent\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Docs.Doc'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Docs.CreateDocRequest'\n    get:\n      operationId: AgentDocsRoute_list\n      description: List Docs owned by an Agent\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n        - name: include_embeddings\n          in: query\n          required: false\n          description: Whether to include embeddings in the response\n          schema:\n            type: boolean\n            default: true\n          explode: false\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Docs.Doc'\n                required:\n                  - items\n    delete:\n      operationId: AgentDocsRoute_deleteBulk\n      description: Bulk delete Docs owned by an Agent\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                type: array\n                items:\n                  $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Docs.BulkDeleteDocsRequest'\n  /agents/{id}/docs/{child_id}:\n    delete:\n      operationId: AgentDocsRoute_delete\n      description: Delete a Doc for this Agent\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be deleted\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n  /agents/{id}/search:\n    post:\n      operationId: AgentsDocsSearchRoute_search\n      description: Search Docs owned by an Agent\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Docs.DocSearchResponse'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              type: object\n              properties:\n                body:\n                  anyOf:\n                    - $ref: '#/components/schemas/Docs.VectorDocSearchRequest'\n                    - $ref: '#/components/schemas/Docs.TextOnlyDocSearchRequest'\n                    - $ref: '#/components/schemas/Docs.HybridDocSearchRequest'\n              required:\n                - body\n  /agents/{id}/secrets:\n    get:\n      operationId: AgentSecretsRoute_list\n      description: List secrets (paginated)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Secrets.Secret'\n                required:\n                  - items\n    post:\n      operationId: AgentSecretsRoute_create\n      description: Create a new secret\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Secrets.Secret'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Secrets.CreateSecretRequest'\n  /agents/{id}/secrets/{child_id}:\n    put:\n      operationId: AgentSecretsRoute_update\n      description: Update an existing secret by id (overwrites existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be updated\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Secrets.Secret'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Secrets.UpdateSecretRequest'\n    delete:\n      operationId: AgentSecretsRoute_delete\n      description: Delete a secret by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be deleted\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n  /agents/{id}/tasks:\n    get:\n      operationId: TasksRoute_list\n      description: List tasks (paginated)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Tasks.Task'\n                required:\n                  - items\n    post:\n      operationId: TasksRoute_create\n      description: Create a new task\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Tasks.Task'\n      requestBody:\n        required: true\n        content:\n          application/yaml:\n            schema:\n              $ref: '#/components/schemas/Tasks.CreateTaskRequest'\n          text/x-yaml:\n            schema:\n              $ref: '#/components/schemas/Tasks.CreateTaskRequest'\n          text/yaml:\n            schema:\n              $ref: '#/components/schemas/Tasks.CreateTaskRequest'\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Tasks.CreateTaskRequest'\n  /agents/{id}/tasks/{child_id}:\n    put:\n      operationId: TasksRoute_update\n      description: Update an existing task (overwrite existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be updated\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Tasks.Task'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Tasks.UpdateTaskRequest'\n    patch:\n      operationId: TasksRoute_patch\n      description: Update an existing task (merges with existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be patched\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Tasks.Task'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Tasks.PatchTaskRequest'\n    delete:\n      operationId: TasksRoute_delete\n      description: Delete a task by its id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be deleted\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n  /agents/{id}/tools:\n    get:\n      operationId: AgentToolsRoute_list\n      description: List tools of the given agent\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Tools.Tool'\n                required:\n                  - items\n    post:\n      operationId: AgentToolsRoute_create\n      description: Create a new resource owned by the given parent\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                type: string\n                enum:\n                  - Create a new tool for this agent\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Agents.CreateAgentRequest'\n  /agents/{id}/tools/{child_id}:\n    put:\n      operationId: AgentToolsRoute_update\n      description: Update a resource owned by the given parent using its id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be updated\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: string\n                enum:\n                  - Update an existing tool (overwrite existing values)\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Tools.UpdateToolRequest'\n    patch:\n      operationId: AgentToolsRoute_patch\n      description: Patch a resource owned by the given parent using its id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be patched\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: string\n                enum:\n                  - Update an existing tool (merges with existing values)\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Tools.PatchToolRequest'\n    delete:\n      operationId: AgentToolsRoute_delete\n      description: Delete an existing tool by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be deleted\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n  /agents/{parent_id}/tasks/{id}:\n    post:\n      operationId: TasksCreateOrUpdateRoute_createOrUpdate\n      description: Create or update a task\n      parameters:\n        - name: parent_id\n          in: path\n          required: true\n          description: ID of the agent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Tasks.CreateOrUpdateTaskRequest.id'\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Tasks.Task'\n      requestBody:\n        required: true\n        content:\n          application/yaml:\n            schema:\n              $ref: '#/components/schemas/Tasks.CreateTaskRequest'\n          text/x-yaml:\n            schema:\n              $ref: '#/components/schemas/Tasks.CreateTaskRequest'\n          text/yaml:\n            schema:\n              $ref: '#/components/schemas/Tasks.CreateTaskRequest'\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Tasks.CreateTaskRequest'\n  /docs/{id}:\n    get:\n      operationId: IndividualDocsRoute_get\n      description: Get Doc by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: include_embeddings\n          in: query\n          required: false\n          description: Whether to include embeddings in the response\n          schema:\n            type: boolean\n            default: true\n          explode: false\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Docs.Doc'\n  /embed:\n    post:\n      operationId: EmbedRoute_embed\n      description: Embed a query for search\n      parameters: []\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Docs.EmbedQueryResponse'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              type: object\n              properties:\n                body:\n                  anyOf:\n                    - $ref: '#/components/schemas/Docs.SingleEmbedQueryRequest'\n                    - $ref: '#/components/schemas/Docs.MultipleEmbedQueryRequest'\n              required:\n                - body\n  /executions:\n    post:\n      operationId: ExecutionsRoute_resumeWithTaskToken\n      description: Resume an execution with a task token\n      parameters:\n        - name: task_token\n          in: query\n          required: true\n          description: A Task Token is a unique identifier for a specific Task Execution.\n          schema:\n            type: string\n          explode: false\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Executions.Execution'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Executions.TaskTokenResumeExecutionRequest'\n        description: Request to resume an execution with a task token\n      security:\n        - {}\n  /executions/{id}:\n    get:\n      operationId: ExecutionsRoute_get\n      description: Get an Execution by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Executions.Execution'\n    put:\n      operationId: ExecutionsRoute_update\n      description: Update an existing Execution\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Executions.Execution'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Executions.UpdateExecutionRequest'\n  /executions/{id}/status.stream:\n    get:\n      operationId: ExecutionStatusStreamRoute_stream\n      description: Stream the status of an execution\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: next_token\n          in: query\n          required: true\n          description: Next page token\n          schema:\n            type: string\n            nullable: true\n            default: null\n          explode: false\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            text/event-stream:\n              schema:\n                type: string\n  /executions/{id}/transitions:\n    get:\n      operationId: ExecutionTransitionsRoute_list\n      description: List the Transitions of an Execution by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      type: object\n                      properties:\n                        transitions:\n                          type: array\n                          items:\n                            $ref: '#/components/schemas/Executions.Transition'\n                      required:\n                        - transitions\n                required:\n                  - items\n  /executions/{id}/transitions.stream:\n    get:\n      operationId: ExecutionTransitionsStreamRoute_stream\n      description: Stream events emitted by the given execution\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: next_token\n          in: query\n          required: true\n          description: Next page token\n          schema:\n            type: string\n            nullable: true\n            default: null\n          explode: false\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            text/event-stream:\n              schema:\n                type: string\n  /files:\n    post:\n      operationId: FilesRoute_create\n      description: Create a new File\n      parameters: []\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Files.File'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Files.CreateFileRequest'\n  /files/{id}:\n    get:\n      operationId: FilesRoute_get\n      description: Get a File by its id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Files.File'\n  /jobs/{id}:\n    get:\n      operationId: JobRoute_get\n      description: Get the status of an existing Job by its id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Jobs.JobStatus'\n  /projects:\n    get:\n      operationId: ProjectsRoute_list\n      description: List Projects (paginated)\n      parameters:\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Projects.Project'\n                required:\n                  - items\n    post:\n      operationId: ProjectsRoute_create\n      description: Create a new Project\n      parameters: []\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Projects.Project'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Projects.CreateProjectRequest'\n  /projects/{id}:\n    post:\n      operationId: ProjectsRoute_createOrUpdate\n      description: Create or update a Project\n      parameters:\n        - $ref: '#/components/parameters/Projects.CreateOrUpdateProjectRequest.id'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Projects.Project'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Projects.UpdateProjectRequest'\n    put:\n      operationId: ProjectsRoute_update\n      description: Update an existing Project by id (overwrites existing values; use PATCH for merging instead)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Projects.Project'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Projects.UpdateProjectRequest'\n    patch:\n      operationId: ProjectsRoute_patch\n      description: Update an existing Project by id (merges with existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Projects.Project'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Projects.PatchProjectRequest'\n    delete:\n      operationId: ProjectsRoute_delete\n      description: Delete Project by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n    get:\n      operationId: ProjectsRoute_get\n      description: Get a Project by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Projects.Project'\n  /responses:\n    post:\n      operationId: ResponsesRoute_createResponse\n      description: Creates a model response. Provide text or image inputs to generate text or JSON outputs.\n      parameters: []\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Responses.Response'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Responses.CreateResponse'\n  /responses/{id}:\n    get:\n      operationId: ResponsesRoute_getResponse\n      description: Get a response by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the response\n          schema:\n            type: string\n        - name: include\n          in: query\n          required: false\n          description: Specify additional output data to include in the model response\n          schema:\n            type: array\n            items:\n              $ref: '#/components/schemas/Responses.Includable'\n          explode: false\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Responses.Response'\n  /secrets/{id}:\n    get:\n      operationId: DeveloperSecretsRoute_list\n      description: List secrets (paginated)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Secrets.Secret'\n                required:\n                  - items\n    post:\n      operationId: DeveloperSecretsRoute_create\n      description: Create a new secret\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Secrets.Secret'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Secrets.CreateSecretRequest'\n  /secrets/{id}/{child_id}:\n    put:\n      operationId: DeveloperSecretsRoute_update\n      description: Update an existing secret by id (overwrites existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be updated\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Secrets.Secret'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Secrets.UpdateSecretRequest'\n    delete:\n      operationId: DeveloperSecretsRoute_delete\n      description: Delete a secret by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be deleted\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n  /sessions:\n    get:\n      operationId: SessionsRoute_list\n      description: List sessions (paginated)\n      parameters:\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Sessions.Session'\n                required:\n                  - items\n    post:\n      operationId: SessionsRoute_create\n      description: Create a new session\n      parameters: []\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Sessions.Session'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Sessions.CreateSessionRequest'\n  /sessions/{id}:\n    post:\n      operationId: SessionsRoute_createOrUpdate\n      description: Create or update a session\n      parameters:\n        - $ref: '#/components/parameters/Sessions.CreateOrUpdateSessionRequest.id'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Sessions.Session'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Sessions.CreateSessionRequest'\n    put:\n      operationId: SessionsRoute_update\n      description: Update an existing session by its id (overwrites all existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Sessions.Session'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Sessions.UpdateSessionRequest'\n    patch:\n      operationId: SessionsRoute_patch\n      description: Update an existing session by its id (merges with existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Sessions.Session'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Sessions.PatchSessionRequest'\n    delete:\n      operationId: SessionsRoute_delete\n      description: Delete a session by its id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n    get:\n      operationId: SessionsRoute_get\n      description: Get a session by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Sessions.Session'\n  /sessions/{id}/chat:\n    post:\n      operationId: ChatRoute_generate\n      description: Generate a response from the model\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: The session ID\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: x-custom-api-key\n          in: header\n          required: false\n          description: Custom API key\n          schema:\n            type: string\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                anyOf:\n                  - $ref: '#/components/schemas/Chat.ChunkChatResponse'\n                  - $ref: '#/components/schemas/Chat.MessageChatResponse'\n            text/event-stream:\n              schema:\n                $ref: '#/components/schemas/Chat.ChunkChatResponse'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Chat.ChatInput'\n        description: Request to generate a response from the model\n  /sessions/{id}/history:\n    delete:\n      operationId: HistoryRoute_delete\n      description: Clear the history of a Session (resets the Session)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n    get:\n      operationId: HistoryRoute_history\n      description: Get history of a Session\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Entries.History'\n  /sessions/{id}/render:\n    post:\n      operationId: RenderRoute_render\n      description: Render system prompt for the session\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: The session ID\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Chat.RenderResponse'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Chat.ChatInput'\n        description: Request to render the system prompt for the session\n  /tasks/{id}:\n    get:\n      operationId: TasksGetRoute_get\n      description: Get a task by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Tasks.Task'\n  /tasks/{id}/executions:\n    post:\n      operationId: TaskExecutionsRoute_create\n      description: Create an execution for the given task\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Executions.Execution'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Executions.CreateExecutionRequest'\n    get:\n      operationId: TaskExecutionsRoute_list\n      description: List executions of the given task\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Executions.Execution'\n                required:\n                  - items\n  /users:\n    get:\n      operationId: UsersRoute_list\n      description: List users (paginated)\n      parameters:\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Users.User'\n                required:\n                  - items\n    post:\n      operationId: UsersRoute_create\n      description: Create a new user\n      parameters: []\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Users.User'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Users.CreateUserRequest'\n  /users/{id}:\n    post:\n      operationId: UsersRoute_createOrUpdate\n      description: Create or update a user\n      parameters:\n        - $ref: '#/components/parameters/Users.CreateOrUpdateUserRequest'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Users.User'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Users.CreateUserRequest'\n    put:\n      operationId: UsersRoute_update\n      description: Update an existing user by id (overwrite existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Users.User'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Users.UpdateUserRequest'\n    patch:\n      operationId: UsersRoute_patch\n      description: Update an existing user by id (merge with existing values)\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Users.User'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Users.PatchUserRequest'\n    delete:\n      operationId: UsersRoute_delete\n      description: Delete a user by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n    get:\n      operationId: UsersRoute_get\n      description: Get a user by id\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Users.User'\n  /users/{id}/docs:\n    post:\n      operationId: UserDocsRoute_create\n      description: Create a Doc for this User\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '201':\n          description: The request has succeeded and a new resource has been created as a result.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Docs.Doc'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Docs.CreateDocRequest'\n    get:\n      operationId: UserDocsRoute_list\n      description: List Docs owned by a User\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - $ref: '#/components/parameters/Common.PaginationOptions.limit'\n        - $ref: '#/components/parameters/Common.PaginationOptions.offset'\n        - $ref: '#/components/parameters/Common.PaginationOptions.sort_by'\n        - $ref: '#/components/parameters/Common.PaginationOptions.direction'\n        - $ref: '#/components/parameters/Common.PaginationOptions.metadata_filter'\n        - name: include_embeddings\n          in: query\n          required: false\n          description: Whether to include embeddings in the response\n          schema:\n            type: boolean\n            default: true\n          explode: false\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                type: object\n                properties:\n                  items:\n                    type: array\n                    items:\n                      $ref: '#/components/schemas/Docs.Doc'\n                required:\n                  - items\n    delete:\n      operationId: UserDocsRoute_deleteBulk\n      description: Bulk delete Docs owned by a User\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                type: array\n                items:\n                  $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              $ref: '#/components/schemas/Docs.BulkDeleteDocsRequest'\n  /users/{id}/docs/{child_id}:\n    delete:\n      operationId: UserDocsRoute_delete\n      description: Delete a Doc for this User\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of parent resource\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n        - name: child_id\n          in: path\n          required: true\n          description: ID of the resource to be deleted\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '202':\n          description: The request has been accepted for processing, but processing has not yet completed.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Common.ResourceDeletedResponse'\n  /users/{id}/search:\n    post:\n      operationId: UserDocsSearchRoute_search\n      description: Search Docs owned by a User\n      parameters:\n        - name: id\n          in: path\n          required: true\n          description: ID of the parent\n          schema:\n            $ref: '#/components/schemas/Common.uuid'\n      responses:\n        '200':\n          description: The request has succeeded.\n          content:\n            application/json:\n              schema:\n                $ref: '#/components/schemas/Docs.DocSearchResponse'\n      requestBody:\n        required: true\n        content:\n          application/json:\n            schema:\n              type: object\n              properties:\n                body:\n                  anyOf:\n                    - $ref: '#/components/schemas/Docs.VectorDocSearchRequest'\n                    - $ref: '#/components/schemas/Docs.TextOnlyDocSearchRequest'\n                    - $ref: '#/components/schemas/Docs.HybridDocSearchRequest'\n              required:\n                - body\nsecurity:\n  - ApiKeyAuth: []\n  - ApiKeyAuth_: []\ncomponents:\n  parameters:\n    Agents.CreateOrUpdateAgentRequest.id:\n      name: id\n      in: path\n      required: true\n      schema:\n        $ref: '#/components/schemas/Common.uuid'\n    Common.PaginationOptions.direction:\n      name: direction\n      in: query\n      required: true\n      description: Sort direction\n      schema:\n        type: string\n        enum:\n          - asc\n          - desc\n        default: asc\n      explode: false\n    Common.PaginationOptions.limit:\n      name: limit\n      in: query\n      required: true\n      description: Limit the number of items returned\n      schema:\n        $ref: '#/components/schemas/Common.limit'\n        default: 100\n      explode: false\n    Common.PaginationOptions.metadata_filter:\n      name: metadata_filter\n      in: query\n      required: true\n      description: Object to filter results by metadata\n      schema:\n        type: object\n        additionalProperties: {}\n        default: {}\n      explode: false\n    Common.PaginationOptions.offset:\n      name: offset\n      in: query\n      required: true\n      description: Offset the items returned\n      schema:\n        $ref: '#/components/schemas/Common.offset'\n        default: 0\n      explode: false\n    Common.PaginationOptions.sort_by:\n      name: sort_by\n      in: query\n      required: true\n      description: Sort by a field\n      schema:\n        type: string\n        enum:\n          - created_at\n          - updated_at\n        default: created_at\n      explode: false\n    Projects.CreateOrUpdateProjectRequest.id:\n      name: id\n      in: path\n      required: true\n      schema:\n        $ref: '#/components/schemas/Common.uuid'\n    Sessions.CreateOrUpdateSessionRequest.id:\n      name: id\n      in: path\n      required: true\n      schema:\n        $ref: '#/components/schemas/Common.uuid'\n    Tasks.CreateOrUpdateTaskRequest.id:\n      name: id\n      in: path\n      required: true\n      schema:\n        $ref: '#/components/schemas/Common.uuid'\n    Users.CreateOrUpdateUserRequest:\n      name: id\n      in: path\n      required: true\n      schema:\n        $ref: '#/components/schemas/Common.uuid'\n  schemas:\n    Agents.Agent:\n      type: object\n      required:\n        - id\n        - created_at\n        - updated_at\n        - name\n        - about\n        - model\n        - instructions\n        - default_system_template\n      properties:\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Name of the agent\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the agent\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the agent\n        about:\n          type: string\n          description: About the agent\n          default: ''\n        model:\n          type: string\n          description: Model name to use (gpt-4-turbo, gemini-nano etc)\n          default: ''\n        instructions:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: Instructions for the agent\n          default: []\n        default_settings:\n          type: object\n          additionalProperties: {}\n          description: Default settings for all sessions created by this agent\n        default_system_template:\n          type: string\n          description: Default system template for all sessions created by this agent\n          default: |-\n            {%- if agent.name -%}\n            You are {{agent.name}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if agent.about -%}\n            About you: {{agent.about}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if user -%}\n            You are talking to a user\n              {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\n                {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n              {%- endif -%}\n            {%- endif -%}\n\n            {{NEWLINE}}\n\n            {%- if session.situation -%}\n            Situation: {{session.situation}}\n            {%- endif -%}\n\n            {{NEWLINE+NEWLINE}}\n\n            {%- if agent.instructions -%}\n            Instructions:{{NEWLINE}}\n              {%- if agent.instructions is string -%}\n                {{agent.instructions}}{{NEWLINE}}\n              {%- else -%}\n                {%- for instruction in agent.instructions -%}\n                  - {{instruction}}{{NEWLINE}}\n                {%- endfor -%}\n              {%- endif -%}\n              {{NEWLINE}}\n            {%- endif -%}\n\n            {%- if docs -%}\n            Relevant documents:{{NEWLINE}}\n              {%- for doc in docs -%}\n                {{doc.title}}{{NEWLINE}}\n                {%- if doc.content is string -%}\n                  {{doc.content}}{{NEWLINE}}\n                {%- else -%}\n                  {%- for snippet in doc.content -%}\n                    {{snippet}}{{NEWLINE}}\n                  {%- endfor -%}\n                {%- endif -%}\n                {{\"---\"}}\n              {%- endfor -%}\n            {%- endif -%}\n    Agents.CreateAgentRequest:\n      type: object\n      required:\n        - name\n        - about\n        - model\n        - instructions\n        - default_system_template\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Name of the agent\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the agent\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the agent\n        about:\n          type: string\n          description: About the agent\n          default: ''\n        model:\n          type: string\n          description: Model name to use (gpt-4-turbo, gemini-nano etc)\n          default: ''\n        instructions:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: Instructions for the agent\n          default: []\n        default_settings:\n          type: object\n          additionalProperties: {}\n          description: Default settings for all sessions created by this agent\n        default_system_template:\n          type: string\n          description: Default system template for all sessions created by this agent\n          default: |-\n            {%- if agent.name -%}\n            You are {{agent.name}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if agent.about -%}\n            About you: {{agent.about}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if user -%}\n            You are talking to a user\n              {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\n                {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n              {%- endif -%}\n            {%- endif -%}\n\n            {{NEWLINE}}\n\n            {%- if session.situation -%}\n            Situation: {{session.situation}}\n            {%- endif -%}\n\n            {{NEWLINE+NEWLINE}}\n\n            {%- if agent.instructions -%}\n            Instructions:{{NEWLINE}}\n              {%- if agent.instructions is string -%}\n                {{agent.instructions}}{{NEWLINE}}\n              {%- else -%}\n                {%- for instruction in agent.instructions -%}\n                  - {{instruction}}{{NEWLINE}}\n                {%- endfor -%}\n              {%- endif -%}\n              {{NEWLINE}}\n            {%- endif -%}\n\n            {%- if docs -%}\n            Relevant documents:{{NEWLINE}}\n              {%- for doc in docs -%}\n                {{doc.title}}{{NEWLINE}}\n                {%- if doc.content is string -%}\n                  {{doc.content}}{{NEWLINE}}\n                {%- else -%}\n                  {%- for snippet in doc.content -%}\n                    {{snippet}}{{NEWLINE}}\n                  {%- endfor -%}\n                {%- endif -%}\n                {{\"---\"}}\n              {%- endfor -%}\n            {%- endif -%}\n      description: Payload for creating a agent (and associated documents)\n    Agents.CreateOrUpdateAgentRequest:\n      type: object\n      required:\n        - id\n        - name\n        - about\n        - model\n        - instructions\n        - default_system_template\n      properties:\n        id:\n          $ref: '#/components/schemas/Common.uuid'\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Name of the agent\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the agent\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the agent\n        about:\n          type: string\n          description: About the agent\n          default: ''\n        model:\n          type: string\n          description: Model name to use (gpt-4-turbo, gemini-nano etc)\n          default: ''\n        instructions:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: Instructions for the agent\n          default: []\n        default_settings:\n          type: object\n          additionalProperties: {}\n          description: Default settings for all sessions created by this agent\n        default_system_template:\n          type: string\n          description: Default system template for all sessions created by this agent\n          default: |-\n            {%- if agent.name -%}\n            You are {{agent.name}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if agent.about -%}\n            About you: {{agent.about}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if user -%}\n            You are talking to a user\n              {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\n                {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n              {%- endif -%}\n            {%- endif -%}\n\n            {{NEWLINE}}\n\n            {%- if session.situation -%}\n            Situation: {{session.situation}}\n            {%- endif -%}\n\n            {{NEWLINE+NEWLINE}}\n\n            {%- if agent.instructions -%}\n            Instructions:{{NEWLINE}}\n              {%- if agent.instructions is string -%}\n                {{agent.instructions}}{{NEWLINE}}\n              {%- else -%}\n                {%- for instruction in agent.instructions -%}\n                  - {{instruction}}{{NEWLINE}}\n                {%- endfor -%}\n              {%- endif -%}\n              {{NEWLINE}}\n            {%- endif -%}\n\n            {%- if docs -%}\n            Relevant documents:{{NEWLINE}}\n              {%- for doc in docs -%}\n                {{doc.title}}{{NEWLINE}}\n                {%- if doc.content is string -%}\n                  {{doc.content}}{{NEWLINE}}\n                {%- else -%}\n                  {%- for snippet in doc.content -%}\n                    {{snippet}}{{NEWLINE}}\n                  {%- endfor -%}\n                {%- endif -%}\n                {{\"---\"}}\n              {%- endfor -%}\n            {%- endif -%}\n      allOf:\n        - $ref: '#/components/schemas/Agents.CreateAgentRequest'\n    Agents.ListModelsResponse:\n      type: object\n      required:\n        - models\n      properties:\n        models:\n          type: array\n          items:\n            $ref: '#/components/schemas/Agents.ModelInfo'\n          description: List of available models\n      description: Response for the list models endpoint\n    Agents.ModelInfo:\n      type: object\n      required:\n        - id\n      properties:\n        id:\n          type: string\n          description: The ID/name of the model\n      description: Model information returned by the model list endpoint\n    Agents.PatchAgentRequest:\n      type: object\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Name of the agent\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the agent\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the agent\n        about:\n          type: string\n          description: About the agent\n          default: ''\n        model:\n          type: string\n          description: Model name to use (gpt-4-turbo, gemini-nano etc)\n          default: ''\n        instructions:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: Instructions for the agent\n          default: []\n        default_settings:\n          type: object\n          additionalProperties: {}\n          description: Default settings for all sessions created by this agent\n        default_system_template:\n          type: string\n          description: Default system template for all sessions created by this agent\n          default: |-\n            {%- if agent.name -%}\n            You are {{agent.name}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if agent.about -%}\n            About you: {{agent.about}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if user -%}\n            You are talking to a user\n              {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\n                {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n              {%- endif -%}\n            {%- endif -%}\n\n            {{NEWLINE}}\n\n            {%- if session.situation -%}\n            Situation: {{session.situation}}\n            {%- endif -%}\n\n            {{NEWLINE+NEWLINE}}\n\n            {%- if agent.instructions -%}\n            Instructions:{{NEWLINE}}\n              {%- if agent.instructions is string -%}\n                {{agent.instructions}}{{NEWLINE}}\n              {%- else -%}\n                {%- for instruction in agent.instructions -%}\n                  - {{instruction}}{{NEWLINE}}\n                {%- endfor -%}\n              {%- endif -%}\n              {{NEWLINE}}\n            {%- endif -%}\n\n            {%- if docs -%}\n            Relevant documents:{{NEWLINE}}\n              {%- for doc in docs -%}\n                {{doc.title}}{{NEWLINE}}\n                {%- if doc.content is string -%}\n                  {{doc.content}}{{NEWLINE}}\n                {%- else -%}\n                  {%- for snippet in doc.content -%}\n                    {{snippet}}{{NEWLINE}}\n                  {%- endfor -%}\n                {%- endif -%}\n                {{\"---\"}}\n              {%- endfor -%}\n            {%- endif -%}\n      description: Payload for patching a agent\n    Agents.UpdateAgentRequest:\n      type: object\n      required:\n        - name\n        - about\n        - model\n        - instructions\n        - default_system_template\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Name of the agent\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the agent\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the agent\n        about:\n          type: string\n          description: About the agent\n          default: ''\n        model:\n          type: string\n          description: Model name to use (gpt-4-turbo, gemini-nano etc)\n          default: ''\n        instructions:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: Instructions for the agent\n          default: []\n        default_settings:\n          type: object\n          additionalProperties: {}\n          description: Default settings for all sessions created by this agent\n        default_system_template:\n          type: string\n          description: Default system template for all sessions created by this agent\n          default: |-\n            {%- if agent.name -%}\n            You are {{agent.name}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if agent.about -%}\n            About you: {{agent.about}}.{{\" \"}}\n            {%- endif -%}\n\n            {%- if user -%}\n            You are talking to a user\n              {%- if user.name -%}{{\" \"}} and their name is {{user.name}}\n                {%- if user.about -%}. About the user: {{user.about}}.{%- else -%}.{%- endif -%}\n              {%- endif -%}\n            {%- endif -%}\n\n            {{NEWLINE}}\n\n            {%- if session.situation -%}\n            Situation: {{session.situation}}\n            {%- endif -%}\n\n            {{NEWLINE+NEWLINE}}\n\n            {%- if agent.instructions -%}\n            Instructions:{{NEWLINE}}\n              {%- if agent.instructions is string -%}\n                {{agent.instructions}}{{NEWLINE}}\n              {%- else -%}\n                {%- for instruction in agent.instructions -%}\n                  - {{instruction}}{{NEWLINE}}\n                {%- endfor -%}\n              {%- endif -%}\n              {{NEWLINE}}\n            {%- endif -%}\n\n            {%- if docs -%}\n            Relevant documents:{{NEWLINE}}\n              {%- for doc in docs -%}\n                {{doc.title}}{{NEWLINE}}\n                {%- if doc.content is string -%}\n                  {{doc.content}}{{NEWLINE}}\n                {%- else -%}\n                  {%- for snippet in doc.content -%}\n                    {{snippet}}{{NEWLINE}}\n                  {%- endfor -%}\n                {%- endif -%}\n                {{\"---\"}}\n              {%- endfor -%}\n            {%- endif -%}\n      description: Payload for updating a agent\n    Chat.BaseChatOutput:\n      type: object\n      required:\n        - index\n        - finish_reason\n      properties:\n        index:\n          type: integer\n          format: uint32\n        finish_reason:\n          allOf:\n            - $ref: '#/components/schemas/Chat.FinishReason'\n          description: The reason the model stopped generating tokens\n          default: stop\n        logprobs:\n          allOf:\n            - $ref: '#/components/schemas/Chat.LogProbResponse'\n          description: The log probabilities of tokens\n        tool_calls:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n              - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n              - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n              - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n          description: The tool calls generated by the model\n    Chat.BaseChatResponse:\n      type: object\n      required:\n        - jobs\n        - docs\n        - created_at\n        - id\n      properties:\n        usage:\n          allOf:\n            - $ref: '#/components/schemas/Chat.CompletionUsage'\n          description: Usage statistics for the completion request\n        jobs:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n          description: Background job IDs that may have been spawned from this interaction.\n          default: []\n          readOnly: true\n        docs:\n          type: array\n          items:\n            $ref: '#/components/schemas/Docs.DocReference'\n          description: Documents referenced for this request (for citation purposes).\n          default: []\n          readOnly: true\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n    Chat.BaseTokenLogProb:\n      type: object\n      required:\n        - token\n        - logprob\n      properties:\n        token:\n          type: string\n        logprob:\n          type: number\n          format: float\n          description: The log probability of the token\n        bytes:\n          type: array\n          items:\n            type: integer\n            format: uint16\n    Chat.ChatInput:\n      type: object\n      required:\n        - remember\n        - recall\n        - save\n        - stream\n        - stop\n        - auto_run_tools\n        - recall_tools\n      properties:\n        remember:\n          type: boolean\n          description: 'DISABLED: Whether this interaction should form new memories or not (will be enabled in a future release)'\n          default: false\n          readOnly: true\n        recall:\n          type: boolean\n          description: Whether previous memories and docs should be recalled or not\n          default: true\n        save:\n          type: boolean\n          description: Whether this interaction should be stored in the session history or not\n          default: true\n        model:\n          allOf:\n            - $ref: '#/components/schemas/Common.identifierSafeUnicode'\n          description: Identifier of the model to be used\n        stream:\n          type: boolean\n          description: Indicates if the server should stream the response as it's generated\n          default: false\n        stop:\n          type: array\n          items:\n            type: string\n          maxItems: 4\n          description: Up to 4 sequences where the API will stop generating further tokens.\n          default: []\n        seed:\n          type: integer\n          format: int16\n          minimum: -1\n          maximum: 1000\n          description: If specified, the system will make a best effort to sample deterministically for that particular seed value\n        max_tokens:\n          type: integer\n          format: uint32\n          minimum: 1\n          description: The maximum number of tokens to generate in the chat completion\n        logit_bias:\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/Common.logit_bias'\n          description: Modify the likelihood of specified tokens appearing in the completion\n        response_format:\n          anyOf:\n            - $ref: '#/components/schemas/Chat.SimpleCompletionResponseFormat'\n            - $ref: '#/components/schemas/Chat.SchemaCompletionResponseFormat'\n          description: Response format (set to `json_object` to restrict output to JSON)\n        agent:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          description: Agent ID of the agent to use for this interaction. (Only applicable for multi-agent sessions)\n        repetition_penalty:\n          type: number\n          format: float\n          minimum: 0\n          maximum: 2\n          description: Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n        length_penalty:\n          type: number\n          format: float\n          minimum: 0\n          maximum: 2\n          description: Number between 0 and 2.0. 1.0 is neutral and values larger than that penalize number of tokens generated.\n        min_p:\n          type: number\n          format: float\n          minimum: 0\n          maximum: 1\n          description: Minimum probability compared to leading token to be considered\n        frequency_penalty:\n          type: number\n          format: float\n          minimum: -2\n          maximum: 2\n          description: Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n        presence_penalty:\n          type: number\n          format: float\n          minimum: -2\n          maximum: 2\n          description: Number between -2.0 and 2.0. Positive values penalize new tokens based on their existing frequency in the text so far, decreasing the model's likelihood to repeat the same line verbatim.\n        temperature:\n          type: number\n          format: float\n          minimum: 0\n          maximum: 5\n          description: What sampling temperature to use, between 0 and 2. Higher values like 0.8 will make the output more random, while lower values like 0.2 will make it more focused and deterministic.\n        top_p:\n          type: number\n          format: float\n          minimum: 0\n          maximum: 1\n          description: Defaults to 1 An alternative to sampling with temperature, called nucleus sampling, where the model considers the results of the tokens with top_p probability mass. So 0.1 means only the tokens comprising the top 10% probability mass are considered.  We generally recommend altering this or temperature but not both.\n        metadata:\n          type: object\n          additionalProperties: {}\n        auto_run_tools:\n          type: boolean\n          description: Whether to automatically run tools and send the results back to the model (requires tools or agents with tools).\n          default: false\n        recall_tools:\n          type: boolean\n          description: Whether to include tool requests and responses when recalling messages.\n          default: true\n      allOf:\n        - $ref: '#/components/schemas/Chat.ChatInputData'\n    Chat.ChatInputData:\n      type: object\n      required:\n        - messages\n        - tools\n      properties:\n        messages:\n          type: array\n          items:\n            type: object\n            required:\n              - role\n              - content\n            properties:\n              role:\n                allOf:\n                  - $ref: '#/components/schemas/Entries.ChatMLRole'\n                description: The role of the message\n              tool_call_id:\n                type: string\n              content:\n                anyOf:\n                  - type: string\n                  - type: array\n                    items:\n                      type: string\n                  - type: array\n                    items:\n                      anyOf:\n                        - type: object\n                          required:\n                            - text\n                            - type\n                          properties:\n                            text:\n                              type: string\n                            type:\n                              type: string\n                              enum:\n                                - text\n                              description: The type (fixed to 'text')\n                              default: text\n                        - type: object\n                          required:\n                            - image_url\n                            - type\n                          properties:\n                            image_url:\n                              type: object\n                              required:\n                                - url\n                                - detail\n                              properties:\n                                url:\n                                  type: string\n                                  description: Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n                                detail:\n                                  allOf:\n                                    - $ref: '#/components/schemas/Entries.ImageDetail'\n                                  description: The detail level of the image\n                                  default: auto\n                              description: The image URL\n                            type:\n                              type: string\n                              enum:\n                                - image_url\n                              description: The type (fixed to 'image_url')\n                              default: image_url\n                        - type: object\n                          required:\n                            - tool_use_id\n                            - type\n                            - content\n                          properties:\n                            tool_use_id:\n                              type: string\n                            type:\n                              type: string\n                              enum:\n                                - tool_result\n                              default: tool_result\n                            content:\n                              anyOf:\n                                - type: array\n                                  items:\n                                    type: object\n                                    required:\n                                      - text\n                                      - type\n                                    properties:\n                                      text:\n                                        type: string\n                                      type:\n                                        type: string\n                                        enum:\n                                          - text\n                                        description: The type (fixed to 'text')\n                                        default: text\n                                - type: array\n                                  items:\n                                    type: object\n                                    required:\n                                      - type\n                                      - source\n                                    properties:\n                                      type:\n                                        type: string\n                                        enum:\n                                          - image\n                                        default: image\n                                      source:\n                                        type: object\n                                        required:\n                                          - type\n                                          - media_type\n                                          - data\n                                        properties:\n                                          type:\n                                            type: string\n                                            enum:\n                                              - base64\n                                            default: base64\n                                          media_type:\n                                            type: string\n                                          data:\n                                            type: string\n                          description: Anthropic image content part\n                nullable: true\n                description: The content parts of the message\n              name:\n                type: string\n                description: Name\n              tool_calls:\n                type: array\n                items:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n                    - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n                    - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n                    - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n                nullable: true\n                description: Tool calls generated by the model.\n                default: []\n          minItems: 1\n          description: A list of new input messages comprising the conversation so far.\n        tools:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tools.CreateToolRequest'\n          nullable: true\n          description: (Advanced) List of tools that are provided in addition to agent's default set of tools.\n          default: null\n        tool_choice:\n          anyOf:\n            - type: string\n              enum:\n                - auto\n                - none\n            - $ref: '#/components/schemas/Tools.NamedToolChoice'\n          description: Can be one of existing tools given to the agent earlier or the ones provided in this request.\n    Chat.ChatOutputChunk:\n      type: object\n      required:\n        - delta\n      properties:\n        delta:\n          type: object\n          required:\n            - role\n            - content\n          properties:\n            role:\n              allOf:\n                - $ref: '#/components/schemas/Entries.ChatMLRole'\n              description: The role of the message\n            tool_call_id:\n              type: string\n            content:\n              anyOf:\n                - type: string\n                - type: array\n                  items:\n                    type: string\n                - type: array\n                  items:\n                    anyOf:\n                      - type: object\n                        required:\n                          - text\n                          - type\n                        properties:\n                          text:\n                            type: string\n                          type:\n                            type: string\n                            enum:\n                              - text\n                            description: The type (fixed to 'text')\n                            default: text\n                      - type: object\n                        required:\n                          - image_url\n                          - type\n                        properties:\n                          image_url:\n                            type: object\n                            required:\n                              - url\n                              - detail\n                            properties:\n                              url:\n                                type: string\n                                description: Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n                              detail:\n                                allOf:\n                                  - $ref: '#/components/schemas/Entries.ImageDetail'\n                                description: The detail level of the image\n                                default: auto\n                            description: The image URL\n                          type:\n                            type: string\n                            enum:\n                              - image_url\n                            description: The type (fixed to 'image_url')\n                            default: image_url\n                      - type: object\n                        required:\n                          - tool_use_id\n                          - type\n                          - content\n                        properties:\n                          tool_use_id:\n                            type: string\n                          type:\n                            type: string\n                            enum:\n                              - tool_result\n                            default: tool_result\n                          content:\n                            anyOf:\n                              - type: array\n                                items:\n                                  type: object\n                                  required:\n                                    - text\n                                    - type\n                                  properties:\n                                    text:\n                                      type: string\n                                    type:\n                                      type: string\n                                      enum:\n                                        - text\n                                      description: The type (fixed to 'text')\n                                      default: text\n                              - type: array\n                                items:\n                                  type: object\n                                  required:\n                                    - type\n                                    - source\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - image\n                                      default: image\n                                    source:\n                                      type: object\n                                      required:\n                                        - type\n                                        - media_type\n                                        - data\n                                      properties:\n                                        type:\n                                          type: string\n                                          enum:\n                                            - base64\n                                          default: base64\n                                        media_type:\n                                          type: string\n                                        data:\n                                          type: string\n                        description: Anthropic image content part\n              nullable: true\n              description: The content parts of the message\n            name:\n              type: string\n              description: Name\n            tool_calls:\n              type: array\n              items:\n                anyOf:\n                  - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n                  - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n                  - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n                  - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n              nullable: true\n              description: Tool calls generated by the model.\n              default: []\n          description: The message generated by the model\n      allOf:\n        - $ref: '#/components/schemas/Chat.BaseChatOutput'\n      description: Streaming chat completion output\n    Chat.ChunkChatResponse:\n      type: object\n      required:\n        - choices\n      properties:\n        choices:\n          type: array\n          items:\n            $ref: '#/components/schemas/Chat.ChatOutputChunk'\n          description: The deltas generated by the model\n      allOf:\n        - $ref: '#/components/schemas/Chat.BaseChatResponse'\n    Chat.CompletionUsage:\n      type: object\n      properties:\n        completion_tokens:\n          type: integer\n          format: uint32\n          description: Number of tokens in the generated completion\n          readOnly: true\n        prompt_tokens:\n          type: integer\n          format: uint32\n          description: Number of tokens in the prompt\n          readOnly: true\n        total_tokens:\n          type: integer\n          format: uint32\n          description: Total number of tokens used in the request (prompt + completion)\n          readOnly: true\n      description: Usage statistics for the completion request\n    Chat.FinishReason:\n      type: string\n      enum:\n        - stop\n        - length\n        - content_filter\n        - tool_calls\n      description: |-\n        The reason the model stopped generating tokens. This will be `stop`\n        if the model hit a natural stop point or a provided stop sequence,\n        `length` if the maximum number of tokens specified in the request\n        was reached, `content_filter` if content was omitted due to a flag\n        from our content filters, `tool_calls` if the model called a tool.\n    Chat.LogProbResponse:\n      type: object\n      required:\n        - content\n      properties:\n        content:\n          type: array\n          items:\n            $ref: '#/components/schemas/Chat.TokenLogProb'\n          nullable: true\n          description: The log probabilities of the tokens\n    Chat.MessageChatResponse:\n      type: object\n      required:\n        - choices\n      properties:\n        choices:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Chat.SingleChatOutput'\n              - $ref: '#/components/schemas/Chat.MultipleChatOutput'\n          description: The deltas generated by the model\n      allOf:\n        - $ref: '#/components/schemas/Chat.BaseChatResponse'\n    Chat.MultipleChatOutput:\n      type: object\n      required:\n        - messages\n      properties:\n        messages:\n          type: array\n          items:\n            type: object\n            required:\n              - role\n              - content\n            properties:\n              role:\n                allOf:\n                  - $ref: '#/components/schemas/Entries.ChatMLRole'\n                description: The role of the message\n              tool_call_id:\n                type: string\n              content:\n                anyOf:\n                  - type: string\n                  - type: array\n                    items:\n                      type: string\n                  - type: array\n                    items:\n                      anyOf:\n                        - type: object\n                          required:\n                            - text\n                            - type\n                          properties:\n                            text:\n                              type: string\n                            type:\n                              type: string\n                              enum:\n                                - text\n                              description: The type (fixed to 'text')\n                              default: text\n                        - type: object\n                          required:\n                            - image_url\n                            - type\n                          properties:\n                            image_url:\n                              type: object\n                              required:\n                                - url\n                                - detail\n                              properties:\n                                url:\n                                  type: string\n                                  description: Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n                                detail:\n                                  allOf:\n                                    - $ref: '#/components/schemas/Entries.ImageDetail'\n                                  description: The detail level of the image\n                                  default: auto\n                              description: The image URL\n                            type:\n                              type: string\n                              enum:\n                                - image_url\n                              description: The type (fixed to 'image_url')\n                              default: image_url\n                        - type: object\n                          required:\n                            - tool_use_id\n                            - type\n                            - content\n                          properties:\n                            tool_use_id:\n                              type: string\n                            type:\n                              type: string\n                              enum:\n                                - tool_result\n                              default: tool_result\n                            content:\n                              anyOf:\n                                - type: array\n                                  items:\n                                    type: object\n                                    required:\n                                      - text\n                                      - type\n                                    properties:\n                                      text:\n                                        type: string\n                                      type:\n                                        type: string\n                                        enum:\n                                          - text\n                                        description: The type (fixed to 'text')\n                                        default: text\n                                - type: array\n                                  items:\n                                    type: object\n                                    required:\n                                      - type\n                                      - source\n                                    properties:\n                                      type:\n                                        type: string\n                                        enum:\n                                          - image\n                                        default: image\n                                      source:\n                                        type: object\n                                        required:\n                                          - type\n                                          - media_type\n                                          - data\n                                        properties:\n                                          type:\n                                            type: string\n                                            enum:\n                                              - base64\n                                            default: base64\n                                          media_type:\n                                            type: string\n                                          data:\n                                            type: string\n                          description: Anthropic image content part\n                nullable: true\n                description: The content parts of the message\n              name:\n                type: string\n                description: Name\n              tool_calls:\n                type: array\n                items:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n                    - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n                    - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n                    - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n                nullable: true\n                description: Tool calls generated by the model.\n                default: []\n              created_at:\n                type: string\n                format: date-time\n                description: When this resource was created as UTC date-time\n                readOnly: true\n              id:\n                allOf:\n                  - $ref: '#/components/schemas/Common.uuid'\n                readOnly: true\n          minItems: 1\n          readOnly: true\n      allOf:\n        - $ref: '#/components/schemas/Chat.BaseChatOutput'\n      description: The output returned by the model. Note that, depending on the model provider, they might return more than one message.\n    Chat.RenderResponse:\n      type: object\n      required:\n        - docs\n      properties:\n        docs:\n          type: array\n          items:\n            $ref: '#/components/schemas/Docs.DocReference'\n          description: Documents referenced for this request (for citation purposes).\n          default: []\n          readOnly: true\n      allOf:\n        - $ref: '#/components/schemas/Chat.ChatInputData'\n    Chat.SchemaCompletionResponseFormat:\n      type: object\n      required:\n        - type\n        - json_schema\n      properties:\n        type:\n          type: string\n          enum:\n            - json_schema\n          description: The format of the response\n          default: json_schema\n        json_schema:\n          type: object\n          additionalProperties: {}\n          description: The schema of the response\n    Chat.SimpleCompletionResponseFormat:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - text\n            - json_object\n          description: The format of the response\n          default: text\n    Chat.SingleChatOutput:\n      type: object\n      required:\n        - message\n      properties:\n        message:\n          type: object\n          required:\n            - role\n            - content\n          properties:\n            role:\n              allOf:\n                - $ref: '#/components/schemas/Entries.ChatMLRole'\n              description: The role of the message\n            tool_call_id:\n              type: string\n            content:\n              anyOf:\n                - type: string\n                - type: array\n                  items:\n                    type: string\n                - type: array\n                  items:\n                    anyOf:\n                      - type: object\n                        required:\n                          - text\n                          - type\n                        properties:\n                          text:\n                            type: string\n                          type:\n                            type: string\n                            enum:\n                              - text\n                            description: The type (fixed to 'text')\n                            default: text\n                      - type: object\n                        required:\n                          - image_url\n                          - type\n                        properties:\n                          image_url:\n                            type: object\n                            required:\n                              - url\n                              - detail\n                            properties:\n                              url:\n                                type: string\n                                description: Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n                              detail:\n                                allOf:\n                                  - $ref: '#/components/schemas/Entries.ImageDetail'\n                                description: The detail level of the image\n                                default: auto\n                            description: The image URL\n                          type:\n                            type: string\n                            enum:\n                              - image_url\n                            description: The type (fixed to 'image_url')\n                            default: image_url\n                      - type: object\n                        required:\n                          - tool_use_id\n                          - type\n                          - content\n                        properties:\n                          tool_use_id:\n                            type: string\n                          type:\n                            type: string\n                            enum:\n                              - tool_result\n                            default: tool_result\n                          content:\n                            anyOf:\n                              - type: array\n                                items:\n                                  type: object\n                                  required:\n                                    - text\n                                    - type\n                                  properties:\n                                    text:\n                                      type: string\n                                    type:\n                                      type: string\n                                      enum:\n                                        - text\n                                      description: The type (fixed to 'text')\n                                      default: text\n                              - type: array\n                                items:\n                                  type: object\n                                  required:\n                                    - type\n                                    - source\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - image\n                                      default: image\n                                    source:\n                                      type: object\n                                      required:\n                                        - type\n                                        - media_type\n                                        - data\n                                      properties:\n                                        type:\n                                          type: string\n                                          enum:\n                                            - base64\n                                          default: base64\n                                        media_type:\n                                          type: string\n                                        data:\n                                          type: string\n                        description: Anthropic image content part\n              nullable: true\n              description: The content parts of the message\n            name:\n              type: string\n              description: Name\n            tool_calls:\n              type: array\n              items:\n                anyOf:\n                  - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n                  - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n                  - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n                  - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n              nullable: true\n              description: Tool calls generated by the model.\n              default: []\n            created_at:\n              type: string\n              format: date-time\n              description: When this resource was created as UTC date-time\n              readOnly: true\n            id:\n              allOf:\n                - $ref: '#/components/schemas/Common.uuid'\n              readOnly: true\n      allOf:\n        - $ref: '#/components/schemas/Chat.BaseChatOutput'\n      description: The output returned by the model. Note that, depending on the model provider, they might return more than one message.\n    Chat.TokenLogProb:\n      type: object\n      required:\n        - top_logprobs\n      properties:\n        top_logprobs:\n          type: array\n          items:\n            $ref: '#/components/schemas/Chat.BaseTokenLogProb'\n          minItems: 1\n          description: The log probabilities of the tokens\n          readOnly: true\n      allOf:\n        - $ref: '#/components/schemas/Chat.BaseTokenLogProb'\n    Common.JinjaTemplate:\n      type: string\n      description: A valid jinja template.\n    Common.PyExpression:\n      type: string\n      description: A simple python expression compatible with SimpleEval.\n    Common.ResourceDeletedResponse:\n      type: object\n      required:\n        - id\n        - deleted_at\n        - jobs\n      properties:\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          description: ID of deleted resource\n        deleted_at:\n          type: string\n          format: date-time\n          description: When this resource was deleted as UTC date-time\n          readOnly: true\n        jobs:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n          description: IDs (if any) of jobs created as part of this request\n          default: []\n          readOnly: true\n    Common.canonicalName:\n      type: string\n      minLength: 1\n      maxLength: 255\n      pattern: ^[a-zA-Z][a-zA-Z0-9_]*$\n      description: |-\n        For canonical names (machine-friendly identifiers)\n        Must start with a letter and can only contain letters, numbers, and underscores\n    Common.content:\n      type: string\n      maxLength: 30000\n      description: Contents of a document\n    Common.displayName:\n      type: string\n      minLength: 1\n      maxLength: 255\n      description: |-\n        For display names\n        Must be between 1 and 255 characters\n    Common.identifierSafeUnicode:\n      type: string\n      maxLength: 120\n      pattern: ^[\\p{L}\\p{Nl}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]+[\\p{ID_Start}\\p{Mn}\\p{Mc}\\p{Nd}\\p{Pc}\\p{Pattern_Syntax}\\p{Pattern_White_Space}]*$\n      description: |-\n        For Unicode character safety\n        See: https://unicode.org/reports/tr31/\n        See: https://www.unicode.org/reports/tr39/#Identifier_Characters\n    Common.limit:\n      type: integer\n      format: uint16\n      minimum: 1\n      maximum: 1000\n      exclusiveMaximum: true\n      description: Limit the number of results\n    Common.logit_bias:\n      type: number\n      format: float\n      minimum: -100\n      maximum: 100\n    Common.mimeType:\n      type: string\n      maxLength: 120\n      pattern: ^(application|audio|font|example|image|message|model|multipart|text|video|x-(?:[0-9A-Za-z!#$%&'*+.^_`|~-]+))\\/([0-9A-Za-z!#$%&'*+.^_`|~-]+)$\n      description: Valid mime types\n    Common.offset:\n      type: integer\n      format: uint32\n      minimum: 0\n      description: Offset to apply to the results\n    Common.stepLabel:\n      type: string\n      maxLength: 120\n      pattern: ^[^0-9]|^[0-9]+[^0-9].*$\n      description: A valid step label\n    Common.uuid:\n      type: string\n      format: uuid\n    Common.validPythonIdentifier:\n      type: string\n      maxLength: 40\n      pattern: ^[^\\W0-9]\\w*$\n      description: Valid python identifier names\n    Docs.BulkDeleteDocsRequest:\n      type: object\n      required:\n        - metadata_filter\n        - delete_all\n      properties:\n        metadata_filter:\n          type: object\n          additionalProperties: {}\n          description: Metadata filter to apply to the search\n          default: {}\n        delete_all:\n          type: boolean\n          description: Delete all docs\n          default: false\n    Docs.CreateDocRequest:\n      type: object\n      required:\n        - title\n        - content\n        - embed_instruction\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        title:\n          type: string\n          maxLength: 800\n          description: Title describing what this document contains\n        content:\n          anyOf:\n            - $ref: '#/components/schemas/Common.content'\n            - type: array\n              items:\n                $ref: '#/components/schemas/Common.content'\n          description: Contents of the document. Each string is limited to 30k characters.\n        embed_instruction:\n          type: string\n          nullable: true\n          description: Instruction for the embedding model.\n          default: null\n      description: Payload for creating a doc\n    Docs.Doc:\n      type: object\n      required:\n        - id\n        - created_at\n        - title\n        - content\n        - embeddings\n      properties:\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        title:\n          type: string\n          maxLength: 800\n          description: Title describing what this document contains\n        content:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: Contents of the document\n        embeddings:\n          anyOf:\n            - type: array\n              items:\n                type: number\n                format: float\n            - type: array\n              items:\n                type: array\n                items:\n                  type: number\n                  format: float\n          nullable: true\n          description: Embeddings for the document\n          default: null\n          readOnly: true\n        modality:\n          type: string\n          description: Modality of the document\n          readOnly: true\n        language:\n          type: string\n          description: Language of the document\n          readOnly: true\n        embedding_model:\n          type: string\n          description: Embedding model used for the document\n          readOnly: true\n        embedding_dimensions:\n          type: integer\n          format: uint16\n          description: Dimensions of the embedding model\n          readOnly: true\n    Docs.DocOwner:\n      type: object\n      required:\n        - id\n        - role\n      properties:\n        id:\n          anyOf:\n            - allOf:\n                - $ref: '#/components/schemas/Common.uuid'\n              readOnly: true\n            - allOf:\n                - $ref: '#/components/schemas/Common.uuid'\n              readOnly: true\n        role:\n          type: string\n          enum:\n            - user\n            - agent\n    Docs.DocReference:\n      type: object\n      required:\n        - owner\n        - id\n        - snippet\n        - distance\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        owner:\n          allOf:\n            - $ref: '#/components/schemas/Docs.DocOwner'\n          description: The owner of this document.\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n          description: ID of the document\n        title:\n          type: string\n        snippet:\n          $ref: '#/components/schemas/Docs.Snippet'\n        distance:\n          type: number\n          nullable: true\n          default: null\n    Docs.DocSearchResponse:\n      type: object\n      required:\n        - docs\n        - time\n      properties:\n        docs:\n          type: array\n          items:\n            $ref: '#/components/schemas/Docs.DocReference'\n          description: The documents that were found\n        time:\n          type: number\n          minimum: 0\n          exclusiveMinimum: true\n          description: The time taken to search in seconds\n    Docs.EmbedQueryResponse:\n      type: object\n      required:\n        - vectors\n      properties:\n        vectors:\n          type: array\n          items:\n            type: array\n            items:\n              type: number\n          description: The embedded vectors\n    Docs.HybridDocSearchRequest:\n      type: object\n      required:\n        - limit\n        - metadata_filter\n        - include_embeddings\n        - text\n        - lang\n        - trigram_similarity_threshold\n        - vector\n        - confidence\n        - alpha\n        - k_multiplier\n      properties:\n        limit:\n          type: integer\n          format: uint16\n          minimum: 1\n          maximum: 50\n          description: The limit of documents to return\n          default: 10\n        metadata_filter:\n          type: object\n          additionalProperties: {}\n          description: Metadata filter to apply to the search\n          default: {}\n        include_embeddings:\n          type: boolean\n          description: Whether to include embeddings in the response\n          default: true\n        text:\n          type: string\n          description: Text to use in the search\n        lang:\n          type: string\n          description: The language to be used for text search. Support for other languages coming soon.\n          default: en-US\n        trigram_similarity_threshold:\n          type: number\n          nullable: true\n          minimum: 0\n          maximum: 1\n          description: Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search.\n          default: null\n        vector:\n          type: array\n          items:\n            type: number\n          description: Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown.\n        confidence:\n          type: number\n          minimum: -1\n          maximum: 1\n          description: The confidence cutoff level\n          default: 0.5\n        mmr_strength:\n          type: number\n          minimum: 0\n          maximum: 1\n          exclusiveMaximum: true\n          description: MMR Strength (mmr_strength = 1 - mmr_lambda)\n          default: 0.5\n        alpha:\n          type: number\n          minimum: 0\n          maximum: 1\n          description: The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n          default: 0.5\n        k_multiplier:\n          type: integer\n          format: int8\n          minimum: 1\n          maximum: 10\n          description: The k_multiplier to control how many intermediate results to fetch before final scoring\n          default: 5\n    Docs.MultipleEmbedQueryRequest:\n      type: object\n      required:\n        - text\n        - embed_instruction\n      properties:\n        text:\n          type: array\n          items:\n            type: string\n          minItems: 1\n          maxItems: 100\n          description: Texts to embed\n        embed_instruction:\n          type: string\n          description: Instruction for the embedding model.\n          default: ''\n    Docs.SingleEmbedQueryRequest:\n      type: object\n      required:\n        - text\n        - embed_instruction\n      properties:\n        text:\n          type: string\n          description: Text to embed\n        embed_instruction:\n          type: string\n          description: Instruction for the embedding model.\n          default: ''\n    Docs.Snippet:\n      type: object\n      required:\n        - index\n        - content\n      properties:\n        index:\n          type: integer\n          format: uint16\n        content:\n          type: string\n        embedding:\n          type: array\n          items:\n            type: number\n    Docs.TextOnlyDocSearchRequest:\n      type: object\n      required:\n        - limit\n        - metadata_filter\n        - include_embeddings\n        - text\n        - lang\n        - trigram_similarity_threshold\n      properties:\n        limit:\n          type: integer\n          format: uint16\n          minimum: 1\n          maximum: 50\n          description: The limit of documents to return\n          default: 10\n        metadata_filter:\n          type: object\n          additionalProperties: {}\n          description: Metadata filter to apply to the search\n          default: {}\n        include_embeddings:\n          type: boolean\n          description: Whether to include embeddings in the response\n          default: true\n        text:\n          type: string\n          description: Text to use in the search\n        lang:\n          type: string\n          description: The language to be used for text search. Support for other languages coming soon.\n          default: en-US\n        trigram_similarity_threshold:\n          type: number\n          nullable: true\n          minimum: 0\n          maximum: 1\n          description: Trigram similarity threshold for fuzzy matching. Set to null to disable trigram search.\n          default: null\n    Docs.VectorDocSearchRequest:\n      type: object\n      required:\n        - limit\n        - metadata_filter\n        - include_embeddings\n        - vector\n        - confidence\n      properties:\n        limit:\n          type: integer\n          format: uint16\n          minimum: 1\n          maximum: 50\n          description: The limit of documents to return\n          default: 10\n        metadata_filter:\n          type: object\n          additionalProperties: {}\n          description: Metadata filter to apply to the search\n          default: {}\n        include_embeddings:\n          type: boolean\n          description: Whether to include embeddings in the response\n          default: true\n        vector:\n          type: array\n          items:\n            type: number\n          description: Vector to use in the search. Must be the same dimensions as the embedding model or else an error will be thrown.\n        confidence:\n          type: number\n          minimum: -1\n          maximum: 1\n          description: The confidence cutoff level\n          default: 0.5\n        mmr_strength:\n          type: number\n          minimum: 0\n          maximum: 1\n          exclusiveMaximum: true\n          description: MMR Strength (mmr_strength = 1 - mmr_lambda)\n          default: 0.5\n    Entries.BaseEntry:\n      type: object\n      required:\n        - role\n        - name\n        - content\n        - source\n        - tokenizer\n        - token_count\n        - model\n        - timestamp\n      properties:\n        role:\n          $ref: '#/components/schemas/Entries.ChatMLRole'\n        name:\n          type: string\n          nullable: true\n          default: null\n        content:\n          anyOf:\n            - type: array\n              items:\n                anyOf:\n                  - type: object\n                    required:\n                      - text\n                      - type\n                    properties:\n                      text:\n                        type: string\n                      type:\n                        type: string\n                        enum:\n                          - text\n                        description: The type (fixed to 'text')\n                        default: text\n                  - type: object\n                    required:\n                      - image_url\n                      - type\n                    properties:\n                      image_url:\n                        type: object\n                        required:\n                          - url\n                          - detail\n                        properties:\n                          url:\n                            type: string\n                            description: Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n                          detail:\n                            allOf:\n                              - $ref: '#/components/schemas/Entries.ImageDetail'\n                            description: The detail level of the image\n                            default: auto\n                        description: The image URL\n                      type:\n                        type: string\n                        enum:\n                          - image_url\n                        description: The type (fixed to 'image_url')\n                        default: image_url\n                  - type: object\n                    required:\n                      - tool_use_id\n                      - type\n                      - content\n                    properties:\n                      tool_use_id:\n                        type: string\n                      type:\n                        type: string\n                        enum:\n                          - tool_result\n                        default: tool_result\n                      content:\n                        anyOf:\n                          - type: array\n                            items:\n                              type: object\n                              required:\n                                - text\n                                - type\n                              properties:\n                                text:\n                                  type: string\n                                type:\n                                  type: string\n                                  enum:\n                                    - text\n                                  description: The type (fixed to 'text')\n                                  default: text\n                          - type: array\n                            items:\n                              type: object\n                              required:\n                                - type\n                                - source\n                              properties:\n                                type:\n                                  type: string\n                                  enum:\n                                    - image\n                                  default: image\n                                source:\n                                  type: object\n                                  required:\n                                    - type\n                                    - media_type\n                                    - data\n                                  properties:\n                                    type:\n                                      type: string\n                                      enum:\n                                        - base64\n                                      default: base64\n                                    media_type:\n                                      type: string\n                                    data:\n                                      type: string\n                    description: Anthropic image content part\n            - $ref: '#/components/schemas/Tools.Tool'\n            - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n            - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n            - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n            - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n            - type: string\n            - $ref: '#/components/schemas/Tools.ToolResponse'\n            - type: array\n              items:\n                anyOf:\n                  - type: array\n                    items:\n                      anyOf:\n                        - type: object\n                          required:\n                            - text\n                            - type\n                          properties:\n                            text:\n                              type: string\n                            type:\n                              type: string\n                              enum:\n                                - text\n                              description: The type (fixed to 'text')\n                              default: text\n                        - type: object\n                          required:\n                            - image_url\n                            - type\n                          properties:\n                            image_url:\n                              type: object\n                              required:\n                                - url\n                                - detail\n                              properties:\n                                url:\n                                  type: string\n                                  description: Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n                                detail:\n                                  allOf:\n                                    - $ref: '#/components/schemas/Entries.ImageDetail'\n                                  description: The detail level of the image\n                                  default: auto\n                              description: The image URL\n                            type:\n                              type: string\n                              enum:\n                                - image_url\n                              description: The type (fixed to 'image_url')\n                              default: image_url\n                        - type: object\n                          required:\n                            - tool_use_id\n                            - type\n                            - content\n                          properties:\n                            tool_use_id:\n                              type: string\n                            type:\n                              type: string\n                              enum:\n                                - tool_result\n                              default: tool_result\n                            content:\n                              anyOf:\n                                - type: array\n                                  items:\n                                    type: object\n                                    required:\n                                      - text\n                                      - type\n                                    properties:\n                                      text:\n                                        type: string\n                                      type:\n                                        type: string\n                                        enum:\n                                          - text\n                                        description: The type (fixed to 'text')\n                                        default: text\n                                - type: array\n                                  items:\n                                    type: object\n                                    required:\n                                      - type\n                                      - source\n                                    properties:\n                                      type:\n                                        type: string\n                                        enum:\n                                          - image\n                                        default: image\n                                      source:\n                                        type: object\n                                        required:\n                                          - type\n                                          - media_type\n                                          - data\n                                        properties:\n                                          type:\n                                            type: string\n                                            enum:\n                                              - base64\n                                            default: base64\n                                          media_type:\n                                            type: string\n                                          data:\n                                            type: string\n                          description: Anthropic image content part\n                  - $ref: '#/components/schemas/Tools.Tool'\n                  - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n                  - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n                  - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n                  - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n                  - type: string\n                  - $ref: '#/components/schemas/Tools.ToolResponse'\n        source:\n          type: string\n          enum:\n            - api_request\n            - api_response\n            - tool_request\n            - tool_response\n            - internal\n            - summarizer\n            - meta\n        tokenizer:\n          type: string\n        token_count:\n          type: integer\n          format: uint16\n        model:\n          type: string\n          default: gpt-4o-mini\n        tool_calls:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n              - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n              - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n              - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n          nullable: true\n          description: Tool calls generated by the model.\n          default: null\n        tool_call_id:\n          type: string\n          nullable: true\n          description: The tool call id of the tool call this message is a response to\n          default: null\n        timestamp:\n          type: string\n          format: date-time\n          description: This is the time that this event refers to.\n    Entries.ChatMLRole:\n      type: string\n      enum:\n        - user\n        - assistant\n        - system\n        - tool\n      description: ChatML role (system|assistant|user|tool)\n    Entries.Entry:\n      type: object\n      required:\n        - created_at\n        - id\n      properties:\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n      allOf:\n        - $ref: '#/components/schemas/Entries.BaseEntry'\n    Entries.History:\n      type: object\n      required:\n        - entries\n        - relations\n        - session_id\n        - created_at\n      properties:\n        entries:\n          type: array\n          items:\n            $ref: '#/components/schemas/Entries.Entry'\n        relations:\n          type: array\n          items:\n            $ref: '#/components/schemas/Entries.Relation'\n        session_id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n    Entries.ImageDetail:\n      type: string\n      enum:\n        - low\n        - high\n        - auto\n      description: Image detail level\n    Entries.Relation:\n      type: object\n      required:\n        - head\n        - relation\n        - tail\n      properties:\n        head:\n          $ref: '#/components/schemas/Common.uuid'\n        relation:\n          type: string\n        tail:\n          $ref: '#/components/schemas/Common.uuid'\n    Executions.CreateExecutionRequest:\n      type: object\n      required:\n        - input\n      properties:\n        input:\n          type: object\n          additionalProperties: {}\n          description: The input to the execution\n        output:\n          description: The output of the execution if it succeeded\n        error:\n          type: string\n          description: The error of the execution if it failed\n        transition_count:\n          type: integer\n          format: uint8\n          description: The number of transitions in this execution\n        metadata:\n          type: object\n          additionalProperties: {}\n      description: Payload for creating an execution\n    Executions.Execution:\n      type: object\n      required:\n        - task_id\n        - status\n        - input\n        - created_at\n        - updated_at\n        - id\n      properties:\n        task_id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n          description: The ID of the task that the execution is running\n        status:\n          type: string\n          enum:\n            - queued\n            - starting\n            - running\n            - awaiting_input\n            - succeeded\n            - failed\n            - cancelled\n          description: The status of the execution\n          readOnly: true\n        input:\n          type: object\n          additionalProperties: {}\n          description: The input to the execution\n        output:\n          description: The output of the execution if it succeeded\n        error:\n          type: string\n          description: The error of the execution if it failed\n        transition_count:\n          type: integer\n          format: uint8\n          description: The number of transitions in this execution\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n    Executions.ResumeExecutionRequest:\n      type: object\n      required:\n        - status\n      properties:\n        status:\n          type: string\n          enum:\n            - running\n          default: running\n        input:\n          type: object\n          additionalProperties: {}\n          description: The input to resume the execution with\n      allOf:\n        - $ref: '#/components/schemas/Executions.UpdateExecutionRequest'\n    Executions.StopExecutionRequest:\n      type: object\n      required:\n        - status\n        - reason\n      properties:\n        status:\n          type: string\n          enum:\n            - cancelled\n          default: cancelled\n        reason:\n          type: string\n          nullable: true\n          description: The reason for stopping the execution\n          default: null\n      allOf:\n        - $ref: '#/components/schemas/Executions.UpdateExecutionRequest'\n    Executions.TaskTokenResumeExecutionRequest:\n      type: object\n      required:\n        - status\n      properties:\n        status:\n          type: string\n          enum:\n            - running\n          default: running\n        input:\n          type: object\n          additionalProperties: {}\n          description: The input to resume the execution with\n    Executions.Transition:\n      type: object\n      required:\n        - execution_id\n        - current\n        - next\n        - id\n      properties:\n        execution_id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        current:\n          allOf:\n            - $ref: '#/components/schemas/Executions.TransitionTarget'\n          readOnly: true\n        next:\n          type: object\n          allOf:\n            - $ref: '#/components/schemas/Executions.TransitionTarget'\n          nullable: true\n          readOnly: true\n        step_label:\n          allOf:\n            - $ref: '#/components/schemas/Common.stepLabel'\n          readOnly: true\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n      allOf:\n        - $ref: '#/components/schemas/Executions.TransitionEvent'\n    Executions.TransitionEvent:\n      type: object\n      required:\n        - type\n        - output\n        - created_at\n        - updated_at\n      properties:\n        type:\n          type: string\n          enum:\n            - init\n            - init_branch\n            - finish\n            - finish_branch\n            - wait\n            - resume\n            - error\n            - step\n            - cancelled\n          readOnly: true\n        output:\n          readOnly: true\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n    Executions.TransitionTarget:\n      type: object\n      required:\n        - workflow\n        - step\n        - scope_id\n      properties:\n        workflow:\n          $ref: '#/components/schemas/Common.identifierSafeUnicode'\n        step:\n          type: integer\n          format: uint16\n        scope_id:\n          $ref: '#/components/schemas/Common.uuid'\n    Executions.UpdateExecutionRequest:\n      type: object\n      required:\n        - status\n      properties:\n        status:\n          type: string\n          enum:\n            - queued\n            - starting\n            - running\n            - awaiting_input\n            - succeeded\n            - failed\n            - cancelled\n      discriminator:\n        propertyName: status\n        mapping:\n          cancelled: '#/components/schemas/Executions.StopExecutionRequest'\n          running: '#/components/schemas/Executions.ResumeExecutionRequest'\n    Files.CreateFileRequest:\n      type: object\n      required:\n        - name\n        - description\n        - mime_type\n        - content\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.identifierSafeUnicode'\n          description: Name of the file\n        description:\n          type: string\n          description: Description of the file\n          default: ''\n        mime_type:\n          oneOf:\n            - $ref: '#/components/schemas/Common.mimeType'\n          nullable: true\n          description: MIME type of the file\n          default: null\n        content:\n          type: string\n          description: Base64 encoded content of the file\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the file\n      description: Payload for creating a file\n    Files.File:\n      type: object\n      required:\n        - id\n        - created_at\n        - name\n        - description\n        - mime_type\n        - content\n        - size\n        - hash\n      properties:\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.identifierSafeUnicode'\n          description: Name of the file\n        description:\n          type: string\n          description: Description of the file\n          default: ''\n        mime_type:\n          oneOf:\n            - $ref: '#/components/schemas/Common.mimeType'\n          nullable: true\n          description: MIME type of the file\n          default: null\n        content:\n          type: string\n          description: Base64 encoded content of the file\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the file\n        size:\n          type: integer\n          format: uint64\n          minimum: 1\n          description: Size of the file in bytes\n          readOnly: true\n        hash:\n          type: string\n          description: Hash of the file\n          readOnly: true\n    InputMessageContentList:\n      type: array\n      items:\n        anyOf:\n          - $ref: '#/components/schemas/Responses.InputText'\n          - $ref: '#/components/schemas/Responses.InputImage'\n          - $ref: '#/components/schemas/Responses.InputFile'\n    Jobs.JobState:\n      type: string\n      enum:\n        - pending\n        - in_progress\n        - retrying\n        - succeeded\n        - aborted\n        - failed\n        - unknown\n      description: 'Current state (one of: pending, in_progress, retrying, succeeded, aborted, failed)'\n    Jobs.JobStatus:\n      type: object\n      required:\n        - id\n        - created_at\n        - updated_at\n        - name\n        - reason\n        - has_progress\n        - progress\n        - state\n      properties:\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.identifierSafeUnicode'\n          description: Name of the job\n          default: ''\n        reason:\n          type: string\n          description: Reason for the current state of the job\n          default: ''\n        has_progress:\n          type: boolean\n          description: Whether this Job supports progress updates\n          default: false\n        progress:\n          type: number\n          format: float\n          minimum: 0\n          maximum: 100\n          description: Progress percentage\n          default: 0\n        state:\n          allOf:\n            - $ref: '#/components/schemas/Jobs.JobState'\n          description: Current state of the job\n          default: pending\n    Projects.CreateOrUpdateProjectRequest:\n      type: object\n      required:\n        - id\n        - name\n      properties:\n        id:\n          $ref: '#/components/schemas/Common.uuid'\n        metadata:\n          type: object\n          additionalProperties: {}\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the project (unique per developer)\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Display name of the project\n      allOf:\n        - $ref: '#/components/schemas/Projects.CreateProjectRequest'\n    Projects.CreateProjectRequest:\n      type: object\n      required:\n        - name\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the project (unique per developer)\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Display name of the project\n      description: Payload for creating a project\n    Projects.PatchProjectRequest:\n      type: object\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the project (unique per developer)\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Display name of the project\n      description: Payload for patching a project\n    Projects.Project:\n      type: object\n      required:\n        - id\n        - created_at\n        - updated_at\n        - name\n      properties:\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the project (unique per developer)\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Display name of the project\n      description: Project model\n    Projects.UpdateProjectRequest:\n      type: object\n      required:\n        - name\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Canonical name of the project (unique per developer)\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: Display name of the project\n      description: Payload for updating a project\n    Responses.BaseTool:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n    Responses.Click:\n      type: object\n      required:\n        - type\n        - button\n        - x\n        - y\n      properties:\n        type:\n          type: string\n          enum:\n            - click\n          description: Specifies the event type. For a click action, this property is always set to `click`.\n          default: click\n        button:\n          type: string\n          enum:\n            - left\n            - right\n            - wheel\n            - back\n            - forward\n          description: Indicates which mouse button was pressed during the click. One of `left`, `right`, `wheel`, `back`, or `forward`.\n        x:\n          type: integer\n          format: int32\n          description: The x-coordinate where the click occurred.\n        y:\n          type: integer\n          format: int32\n          description: The y-coordinate where the click occurred.\n    Responses.ComputerScreenshotImage:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - computer_screenshot\n          description: Specifies the event type. For a computer screenshot, this property is always set to `computer_screenshot`.\n        image_url:\n          type: string\n          description: The URL of the screenshot image.\n        file_id:\n          type: string\n          description: The identifier of an uploaded file that contains the screenshot.\n    Responses.ComputerTool:\n      type: object\n      required:\n        - type\n        - display_width\n        - display_height\n        - environment\n      properties:\n        type:\n          type: string\n          enum:\n            - computer_use_preview\n          description: The type of the computer use tool. Always `computer_use_preview`.\n        display_width:\n          type: number\n          format: float\n          description: The width of the computer display.\n        display_height:\n          type: number\n          format: float\n          description: The height of the computer display.\n        environment:\n          type: string\n          enum:\n            - mac\n            - windows\n            - ubuntu\n            - browser\n          description: The type of computer environment to control.\n      allOf:\n        - $ref: '#/components/schemas/Responses.BaseTool'\n    Responses.ComputerToolCall:\n      type: object\n      required:\n        - type\n        - id\n        - call_id\n        - action\n        - pending_safety_checks\n        - status\n      properties:\n        type:\n          type: string\n          enum:\n            - computer_call\n          description: The type of the computer call. Always `computer_call`.\n        id:\n          type: string\n          description: The unique ID of the computer call.\n        call_id:\n          type: string\n          description: An identifier used when responding to the tool call with output.\n        action:\n          anyOf:\n            - $ref: '#/components/schemas/Responses.Click'\n            - $ref: '#/components/schemas/Responses.DoubleClick'\n            - $ref: '#/components/schemas/Responses.Drag'\n            - $ref: '#/components/schemas/Responses.KeyPress'\n            - $ref: '#/components/schemas/Responses.Move'\n            - $ref: '#/components/schemas/Responses.Screenshot'\n            - $ref: '#/components/schemas/Responses.Scroll'\n            - $ref: '#/components/schemas/Responses.Type'\n            - $ref: '#/components/schemas/Responses.Wait'\n          description: The action to perform.\n        pending_safety_checks:\n          type: array\n          items:\n            $ref: '#/components/schemas/Responses.ComputerToolCallSafetyCheck'\n          description: The pending safety checks for the computer call.\n        status:\n          type: string\n          enum:\n            - in_progress\n            - completed\n            - incomplete\n          description: The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    Responses.ComputerToolCallOutput:\n      type: object\n      required:\n        - type\n        - call_id\n        - output\n      properties:\n        type:\n          type: string\n          enum:\n            - computer_call_output\n          description: The type of the computer tool call output. Always `computer_call_output`.\n        id:\n          type: string\n          description: The ID of the computer tool call output.\n        call_id:\n          type: string\n          description: The ID of the computer tool call that produced the output.\n        acknowledged_safety_checks:\n          type: array\n          items:\n            $ref: '#/components/schemas/Responses.ComputerToolCallSafetyCheck'\n          description: The safety checks reported by the API that have been acknowledged by the developer.\n        output:\n          allOf:\n            - $ref: '#/components/schemas/Responses.ComputerScreenshotImage'\n          description: The output screenshot image.\n        status:\n          allOf:\n            - $ref: '#/components/schemas/Responses.MessageStatus'\n          description: The status of the message input. One of `in_progress`, `completed`, or `incomplete`. Populated when input items are returned via API.\n    Responses.ComputerToolCallOutputResource:\n      type: object\n      required:\n        - id\n      properties:\n        id:\n          type: string\n          description: The unique ID of the computer call tool output.\n      allOf:\n        - $ref: '#/components/schemas/Responses.ComputerToolCallOutput'\n    Responses.ComputerToolCallSafetyCheck:\n      type: object\n      required:\n        - id\n        - code\n        - message\n      properties:\n        id:\n          type: string\n          description: The ID of the pending safety check.\n        code:\n          type: string\n          description: The type of the pending safety check.\n        message:\n          type: string\n          description: Details about the pending safety check.\n    Responses.Coordinate:\n      type: object\n      required:\n        - x\n        - y\n      properties:\n        x:\n          type: integer\n          format: int32\n          description: The x-coordinate.\n        y:\n          type: integer\n          format: int32\n          description: The y-coordinate.\n    Responses.CreateResponse:\n      type: object\n      required:\n        - model\n        - input\n      properties:\n        model:\n          type: string\n        input:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                $ref: '#/components/schemas/Responses.InputItem'\n        include:\n          type: array\n          items:\n            $ref: '#/components/schemas/Responses.Includable'\n        parallel_tool_calls:\n          type: boolean\n          default: true\n        store:\n          type: boolean\n          default: true\n        stream:\n          type: boolean\n          default: false\n        max_tokens:\n          type: integer\n          format: int32\n        temperature:\n          type: number\n          default: 1\n        top_p:\n          type: number\n          default: 1\n        n:\n          type: integer\n          format: int32\n        stop:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n        presence_penalty:\n          type: number\n        frequency_penalty:\n          type: number\n        logit_bias:\n          type: object\n          additionalProperties: {}\n        user:\n          type: string\n        instructions:\n          type: string\n        previous_response_id:\n          type: string\n        reasoning:\n          $ref: '#/components/schemas/Responses.Reasoning'\n        text:\n          type: object\n          properties:\n            format:\n              anyOf:\n                - $ref: '#/components/schemas/Responses.ResponseFormatText'\n                - $ref: '#/components/schemas/Responses.TextResponseFormatJsonSchema'\n                - $ref: '#/components/schemas/Responses.ResponseFormatJsonObject'\n          required:\n            - format\n        tool_choice:\n          anyOf:\n            - type: string\n              enum:\n                - auto\n                - none\n            - type: object\n              properties:\n                type:\n                  type: string\n                  enum:\n                    - function\n                function:\n                  type: object\n                  properties:\n                    name:\n                      type: string\n                  required:\n                    - name\n              required:\n                - type\n                - function\n        tools:\n          type: array\n          items:\n            $ref: '#/components/schemas/Responses.Tool'\n        truncation:\n          type: string\n          enum:\n            - disabled\n            - auto\n        metadata:\n          type: object\n          additionalProperties: {}\n    Responses.DoubleClick:\n      type: object\n      required:\n        - type\n        - x\n        - y\n      properties:\n        type:\n          type: string\n          enum:\n            - double_click\n          description: Specifies the event type. For a double click action, this property is always set to `double_click`.\n          default: double_click\n        x:\n          type: integer\n          format: int32\n          description: The x-coordinate where the double click occurred.\n        y:\n          type: integer\n          format: int32\n          description: The y-coordinate where the double click occurred.\n    Responses.Drag:\n      type: object\n      required:\n        - type\n        - path\n      properties:\n        type:\n          type: string\n          enum:\n            - drag\n          description: Specifies the event type. For a drag action, this property is always set to `drag`.\n          default: drag\n        path:\n          type: array\n          items:\n            $ref: '#/components/schemas/Responses.Coordinate'\n          description: An array of coordinates representing the path of the drag action.\n    Responses.EasyInputMessage:\n      type: object\n      required:\n        - role\n        - content\n        - type\n      properties:\n        role:\n          allOf:\n            - $ref: '#/components/schemas/Responses.MessageRole'\n          description: The role of the message input. One of `user`, `assistant`, `system`, or `developer`.\n        content:\n          anyOf:\n            - type: string\n            - $ref: '#/components/schemas/InputMessageContentList'\n          description: Text, image, or audio input to the model, used to generate a response. Can also contain previous assistant responses.\n        type:\n          type: string\n          enum:\n            - message\n          description: The type of the message input. Always `message`.\n    Responses.FileCitation:\n      type: object\n      required:\n        - type\n        - index\n        - file_id\n      properties:\n        type:\n          type: string\n          enum:\n            - file_citation\n          description: The type of the file citation. Always `file_citation`.\n        index:\n          type: integer\n          format: int32\n          description: The index of the file in the list of files.\n        file_id:\n          type: string\n          description: The ID of the file.\n    Responses.FilePath:\n      type: object\n      required:\n        - type\n        - file_id\n        - index\n      properties:\n        type:\n          type: string\n          enum:\n            - file_path\n          description: The type of the file path. Always `file_path`.\n        file_id:\n          type: string\n          description: The ID of the file.\n        index:\n          type: integer\n          format: int32\n          description: The index of the file in the list of files.\n    Responses.FileSearchTool:\n      type: object\n      required:\n        - type\n        - vector_store_ids\n      properties:\n        type:\n          type: string\n          enum:\n            - file_search\n        filters: {}\n        max_num_results:\n          type: integer\n          format: int32\n        ranking_options:\n          type: object\n          properties:\n            ranker:\n              type: string\n              enum:\n                - auto\n            score_threshold:\n              type: number\n        vector_store_ids:\n          type: array\n          items:\n            type: string\n      allOf:\n        - $ref: '#/components/schemas/Responses.BaseTool'\n    Responses.FileSearchToolCall:\n      type: object\n      required:\n        - id\n        - type\n        - status\n        - queries\n      properties:\n        id:\n          type: string\n          description: The unique ID of the file search tool call.\n        type:\n          type: string\n          enum:\n            - file_search_call\n          description: The type of the file search tool call. Always `file_search_call`.\n        status:\n          type: string\n          enum:\n            - in_progress\n            - searching\n            - completed\n            - incomplete\n            - failed\n          description: The status of the file search tool call. One of `in_progress`, `searching`, `incomplete` or `failed`\n        queries:\n          type: array\n          items:\n            type: string\n          description: The queries used to search for files.\n        results:\n          type: array\n          items:\n            type: object\n            properties:\n              file_id:\n                type: string\n                description: The unique ID of the file.\n              text:\n                type: string\n                description: The text that was retrieved from the file.\n              filename:\n                type: string\n                description: The name of the file.\n              attributes:\n                allOf:\n                  - $ref: '#/components/schemas/Responses.VectorStoreFileAttributes'\n                description: The attributes of the file.\n              score:\n                type: number\n                format: float\n                description: The relevance score of the file - a value between 0 and 1.\n            required:\n              - file_id\n              - text\n              - filename\n              - attributes\n              - score\n          description: The results of the file search tool call.\n    Responses.FunctionTool:\n      type: object\n      required:\n        - type\n        - name\n        - parameters\n      properties:\n        type:\n          type: string\n          enum:\n            - function\n        name:\n          type: string\n        description:\n          type: string\n        parameters:\n          type: object\n          additionalProperties: {}\n        strict:\n          type: boolean\n      allOf:\n        - $ref: '#/components/schemas/Responses.BaseTool'\n    Responses.FunctionToolCall:\n      type: object\n      required:\n        - id\n        - type\n        - call_id\n        - name\n        - arguments\n      properties:\n        id:\n          type: string\n          description: The unique ID of the function tool call.\n        type:\n          type: string\n          enum:\n            - function_call\n          description: The type of the function tool call. Always `function_call`.\n        call_id:\n          type: string\n          description: The unique ID of the function tool call generated by the model.\n        name:\n          type: string\n          description: The name of the function to run.\n        arguments:\n          type: string\n          description: A JSON string of the arguments to pass to the function.\n        status:\n          type: string\n          enum:\n            - in_progress\n            - completed\n            - incomplete\n          description: The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    Responses.FunctionToolCallOutput:\n      type: object\n      required:\n        - type\n        - call_id\n        - output\n      properties:\n        id:\n          type: string\n          description: The unique ID of the function tool call output. Populated when this item is returned via API.\n        type:\n          type: string\n          enum:\n            - function_call_output\n          description: The type of the function tool call output. Always `function_call_output`.\n        call_id:\n          type: string\n          description: The unique ID of the function tool call generated by the model.\n        output:\n          type: string\n          description: A JSON string of the output of the function tool call.\n        status:\n          type: string\n          enum:\n            - in_progress\n            - completed\n            - incomplete\n          description: The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    Responses.FunctionToolCallOutputResource:\n      type: object\n      properties:\n        id:\n          type: string\n          description: The unique ID of the function call tool output.\n      allOf:\n        - $ref: '#/components/schemas/Responses.FunctionToolCallOutput'\n    Responses.Includable:\n      type: string\n      enum:\n        - file_search_call.results\n        - message.input_image.image_url\n        - computer_call_output.output.image_url\n    Responses.InputFile:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - input_file\n          description: The type of the input item. Always `input_file`.\n        file_id:\n          type: string\n          description: The ID of the file to be sent to the model.\n        filename:\n          type: string\n          description: The name of the file to be sent to the model.\n        file_data:\n          type: string\n          description: The content of the file to be sent to the model.\n      description: A file input to the model.\n    Responses.InputImage:\n      type: object\n      required:\n        - type\n        - detail\n      properties:\n        type:\n          type: string\n          enum:\n            - input_image\n          description: The type of the input item. Always `input_image`.\n        image_url:\n          type: string\n          description: The URL of the image to be sent to the model. A fully qualified URL or base64 encoded image in a data URL.\n        file_id:\n          type: string\n          description: The ID of the file to be sent to the model.\n        detail:\n          type: string\n          enum:\n            - high\n            - low\n            - auto\n          description: The detail level of the image to be sent to the model. One of `high`, `low`, or `auto`. Defaults to `auto`.\n          default: auto\n    Responses.InputItem:\n      anyOf:\n        - $ref: '#/components/schemas/Responses.EasyInputMessage'\n        - $ref: '#/components/schemas/Responses.Item'\n        - $ref: '#/components/schemas/Responses.ItemReference'\n    Responses.InputMessage:\n      type: object\n      required:\n        - type\n        - role\n        - status\n        - content\n      properties:\n        type:\n          type: string\n          enum:\n            - message\n        role:\n          $ref: '#/components/schemas/Responses.MessageRole'\n        status:\n          $ref: '#/components/schemas/Responses.MessageStatus'\n        content:\n          $ref: '#/components/schemas/InputMessageContentList'\n    Responses.InputMessageResource:\n      type: object\n      required:\n        - id\n      properties:\n        id:\n          type: string\n      allOf:\n        - $ref: '#/components/schemas/Responses.InputMessage'\n    Responses.InputText:\n      type: object\n      required:\n        - type\n        - text\n      properties:\n        type:\n          type: string\n          enum:\n            - input_text\n          description: The type of the input item. Always `input_text`.\n        text:\n          type: string\n          description: The text input to the model.\n    Responses.Item:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n      description: An item representing part of the context for the response to be generated by the model. Can contain text, images, and audio inputs, as well as previous assistant responses and tool call outputs.\n    Responses.ItemReference:\n      anyOf:\n        - $ref: '#/components/schemas/Responses.InputMessageResource'\n        - $ref: '#/components/schemas/Responses.OutputMessage'\n        - $ref: '#/components/schemas/Responses.FileSearchToolCall'\n        - $ref: '#/components/schemas/Responses.ComputerToolCall'\n        - $ref: '#/components/schemas/Responses.ComputerToolCallOutputResource'\n        - $ref: '#/components/schemas/Responses.WebSearchToolCall'\n        - $ref: '#/components/schemas/Responses.FunctionToolCall'\n        - $ref: '#/components/schemas/Responses.FunctionToolCallOutputResource'\n      description: Content item used to generate a response.\n    Responses.KeyPress:\n      type: object\n      required:\n        - type\n        - keys\n      properties:\n        type:\n          type: string\n          enum:\n            - keypress\n          description: Specifies the event type. For a keypress action, this property is always set to `keypress`.\n          default: keypress\n        keys:\n          type: array\n          items:\n            type: string\n          description: The combination of keys the model is requesting to be pressed. This is an array of strings, each representing a key.\n    Responses.MessageRole:\n      type: string\n      enum:\n        - user\n        - assistant\n        - system\n        - developer\n    Responses.MessageStatus:\n      type: string\n      enum:\n        - in_progress\n        - completed\n        - incomplete\n    Responses.Move:\n      type: object\n      required:\n        - type\n        - x\n        - y\n      properties:\n        type:\n          type: string\n          enum:\n            - move\n          description: Specifies the event type. For a move action, this property is always set to `move`.\n          default: move\n        x:\n          type: integer\n          format: int32\n          description: The x-coordinate to move to.\n        y:\n          type: integer\n          format: int32\n          description: The y-coordinate to move to.\n    Responses.OutputItem:\n      anyOf:\n        - $ref: '#/components/schemas/Responses.OutputMessage'\n        - $ref: '#/components/schemas/Responses.FileSearchToolCall'\n        - $ref: '#/components/schemas/Responses.FunctionToolCall'\n        - $ref: '#/components/schemas/Responses.WebSearchToolCall'\n        - $ref: '#/components/schemas/Responses.ComputerToolCall'\n        - $ref: '#/components/schemas/Responses.ReasoningItem'\n    Responses.OutputMessage:\n      type: object\n      required:\n        - id\n        - type\n        - role\n        - status\n        - content\n      properties:\n        id:\n          type: string\n        type:\n          type: string\n          enum:\n            - message\n        role:\n          $ref: '#/components/schemas/Responses.MessageRole'\n        status:\n          $ref: '#/components/schemas/Responses.MessageStatus'\n        content:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Responses.OutputText'\n              - $ref: '#/components/schemas/Responses.Refusal'\n    Responses.OutputText:\n      type: object\n      required:\n        - type\n        - text\n        - annotations\n      properties:\n        type:\n          type: string\n          enum:\n            - output_text\n          description: The type of the output text. Always `output_text`.\n        text:\n          type: string\n          description: The text output from the model.\n        annotations:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Responses.FileCitation'\n              - $ref: '#/components/schemas/Responses.UrlCitation'\n              - $ref: '#/components/schemas/Responses.FilePath'\n          description: The annotations of the text output.\n    Responses.Reasoning:\n      type: object\n      required:\n        - effort\n      properties:\n        effort:\n          $ref: '#/components/schemas/Responses.ReasoningEffort'\n        generate_summary:\n          type: string\n          enum:\n            - concise\n            - detailed\n          description: A summary of the reasoning performed by the model. This can be useful for debugging and understanding the model's reasoning process. One of `concise` or `detailed`.\n      description: Reasoning configuration options for o-series models.\n    Responses.ReasoningContent:\n      type: object\n      required:\n        - type\n        - text\n      properties:\n        type:\n          type: string\n          enum:\n            - reasoning_summary\n          description: The type of the object. Always `text`.\n        text:\n          type: string\n          description: A short summary of the reasoning used by the model when generating the response.\n    Responses.ReasoningEffort:\n      type: string\n      enum:\n        - low\n        - medium\n        - high\n      description: Constraint effort on reasoning models.\n    Responses.ReasoningItem:\n      type: object\n      required:\n        - type\n        - id\n        - content\n      properties:\n        type:\n          type: string\n          enum:\n            - reasoning\n          description: The type of the object. Always `reasoning`.\n        id:\n          type: string\n          description: The unique identifier of the reasoning content.\n        content:\n          type: array\n          items:\n            $ref: '#/components/schemas/Responses.ReasoningContent'\n          description: Reasoning text contents.\n        status:\n          type: string\n          enum:\n            - in_progress\n            - completed\n            - incomplete\n          description: The status of the item. One of `in_progress`, `completed`, or `incomplete`. Populated when items are returned via API.\n    Responses.Refusal:\n      type: object\n      required:\n        - type\n        - refusal\n      properties:\n        type:\n          type: string\n          enum:\n            - refusal\n          description: The type of the refusal. Always `refusal`.\n        refusal:\n          type: string\n          description: The refusal explanation from the model.\n    Responses.Response:\n      type: object\n      required:\n        - id\n        - object\n        - created_at\n        - status\n        - model\n        - output\n        - parallel_tool_calls\n        - temperature\n        - tool_choice\n        - tools\n        - top_p\n        - truncation\n        - usage\n        - metadata\n      properties:\n        id:\n          type: string\n        object:\n          type: string\n          enum:\n            - response\n        created_at:\n          type: integer\n          format: int32\n        status:\n          $ref: '#/components/schemas/Responses.ResponseStatus'\n        error:\n          $ref: '#/components/schemas/Responses.ResponseError'\n        incomplete_details:\n          type: object\n          properties:\n            reason:\n              type: string\n              enum:\n                - max_output_tokens\n                - content_filter\n          required:\n            - reason\n        instructions:\n          type: string\n        max_output_tokens:\n          type: integer\n          format: int32\n        model:\n          type: string\n        output:\n          type: array\n          items:\n            $ref: '#/components/schemas/Responses.OutputItem'\n        parallel_tool_calls:\n          type: boolean\n          default: true\n        previous_response_id:\n          type: string\n        reasoning:\n          $ref: '#/components/schemas/Responses.Reasoning'\n        store:\n          type: boolean\n          default: true\n        temperature:\n          type: number\n          default: 1\n        text:\n          type: object\n          properties:\n            format:\n              anyOf:\n                - $ref: '#/components/schemas/Responses.ResponseFormatText'\n                - $ref: '#/components/schemas/Responses.TextResponseFormatJsonSchema'\n                - $ref: '#/components/schemas/Responses.ResponseFormatJsonObject'\n          required:\n            - format\n        tool_choice:\n          anyOf:\n            - $ref: '#/components/schemas/Responses.ToolChoiceOptions'\n            - $ref: '#/components/schemas/Responses.ToolChoiceTypes'\n            - $ref: '#/components/schemas/Responses.ToolChoiceFunction'\n        tools:\n          type: array\n          items:\n            $ref: '#/components/schemas/Responses.Tool'\n        top_p:\n          type: number\n          default: 1\n        truncation:\n          type: string\n          enum:\n            - disabled\n            - auto\n        usage:\n          $ref: '#/components/schemas/Responses.ResponseUsage'\n        user:\n          type: string\n        metadata:\n          type: object\n          additionalProperties: {}\n    Responses.ResponseError:\n      type: object\n      required:\n        - message\n        - type\n      properties:\n        message:\n          type: string\n        type:\n          type: string\n        param:\n          type: string\n        code:\n          type: string\n    Responses.ResponseFormatJsonObject:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - json_object\n          description: The type of response format being defined. Always `json_object`.\n      description: |-\n        JSON object response format. An older method of generating JSON responses.\n\n        Using `json_schema` is recommended for models that support it. Note that the\n        model will not generate JSON without a system or user message instructing it\n        to do so.\n    Responses.ResponseFormatText:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - text\n          description: The type of response format being defined. Always `text`.\n      description: Default response format. Used to generate text responses.\n    Responses.ResponseStatus:\n      type: string\n      enum:\n        - completed\n        - failed\n        - in_progress\n        - incomplete\n    Responses.ResponseUsage:\n      type: object\n      required:\n        - input_tokens\n        - input_tokens_details\n        - output_tokens\n        - output_tokens_details\n        - total_tokens\n      properties:\n        input_tokens:\n          type: integer\n          format: int32\n        input_tokens_details:\n          type: object\n          properties:\n            cached_tokens:\n              type: integer\n              format: int32\n          required:\n            - cached_tokens\n        output_tokens:\n          type: integer\n          format: int32\n        output_tokens_details:\n          type: object\n          properties:\n            reasoning_tokens:\n              type: integer\n              format: int32\n          required:\n            - reasoning_tokens\n        total_tokens:\n          type: integer\n          format: int32\n    Responses.Screenshot:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - screenshot\n          description: Specifies the event type. For a screenshot action, this property is always set to `screenshot`.\n          default: screenshot\n    Responses.Scroll:\n      type: object\n      required:\n        - type\n        - x\n        - y\n        - scroll_x\n        - scroll_y\n      properties:\n        type:\n          type: string\n          enum:\n            - scroll\n          description: Specifies the event type. For a scroll action, this property is always set to `scroll`.\n          default: scroll\n        x:\n          type: integer\n          format: int32\n          description: The x-coordinate where the scroll occurred.\n        y:\n          type: integer\n          format: int32\n          description: The y-coordinate where the scroll occurred.\n        scroll_x:\n          type: integer\n          format: int32\n          description: The horizontal scroll distance.\n        scroll_y:\n          type: integer\n          format: int32\n          description: The vertical scroll distance.\n    Responses.TextResponseFormatJsonSchema:\n      type: object\n      required:\n        - type\n        - schema\n      properties:\n        type:\n          type: string\n          enum:\n            - json_schema\n          description: The type of response format being defined. Always `json_schema`.\n        description:\n          type: string\n          description: A description of what the response format is for, used by the model to determine how to respond in the format.\n        name:\n          type: string\n          description: The name of the response format. Must be a-z, A-Z, 0-9, or contain underscores and dashes, with a maximum length of 64.\n        schema:\n          type: object\n          additionalProperties: {}\n          description: The JSON schema that defines the structure of the response.\n        strict:\n          type: boolean\n          description: Whether to enable strict schema adherence when generating the output. If set to true, the model will always follow the exact schema defined in the `schema` field. Only a subset of JSON Schema is supported when `strict` is `true`. To learn more, read the [Structured Outputs guide](/docs/guides/structured-outputs).\n          default: false\n      description: JSON Schema response format. Used to generate structured JSON responses. Learn more about [Structured Outputs](/docs/guides/structured-outputs).\n    Responses.Tool:\n      anyOf:\n        - $ref: '#/components/schemas/Responses.FunctionTool'\n        - $ref: '#/components/schemas/Responses.WebSearchTool'\n        - $ref: '#/components/schemas/Responses.FileSearchTool'\n        - $ref: '#/components/schemas/Responses.ComputerTool'\n    Responses.ToolChoiceFunction:\n      type: object\n      required:\n        - type\n        - name\n      properties:\n        type:\n          type: string\n          enum:\n            - function\n          description: For function calling, the type is always `function`.\n        name:\n          type: string\n          description: The name of the function to call.\n      description: Use this option to force the model to call a specific function.\n    Responses.ToolChoiceOptions:\n      type: string\n      enum:\n        - auto\n        - none\n        - required\n    Responses.ToolChoiceTypes:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - file_search\n            - web_search_preview\n            - computer_use_preview\n            - web_search_preview_2025_03_11\n          description: |-\n            The type of hosted tool the model should to use. Learn more about\n            [built-in tools](/docs/guides/tools).\n\n            Allowed values are:\n            - `file_search`\n            - `web_search_preview` \n            - `computer_use_preview`\n      description: |-\n        Indicates that the model should use a built-in tool to generate a response.\n\n        [Learn more about built-in tools](/docs/guides/tools).\n    Responses.Type:\n      type: object\n      required:\n        - type\n        - text\n      properties:\n        type:\n          type: string\n          enum:\n            - type\n          description: Specifies the event type. For a type action, this property is always set to `type`.\n          default: type\n        text:\n          type: string\n          description: The text to type.\n    Responses.UrlCitation:\n      type: object\n      required:\n        - url\n        - title\n        - type\n        - start_index\n        - end_index\n      properties:\n        url:\n          type: string\n          description: The URL of the web resource.\n        title:\n          type: string\n          description: The title of the web resource.\n        type:\n          type: string\n          enum:\n            - url_citation\n          description: The type of the URL citation. Always `url_citation`.\n        start_index:\n          type: integer\n          format: int32\n          description: The index of the first character of the URL citation in the message.\n        end_index:\n          type: integer\n          format: int32\n          description: The index of the last character of the URL citation in the message.\n    Responses.VectorStoreFileAttributes:\n      type: object\n      required:\n        - properties\n      properties:\n        properties:\n          type: object\n          additionalProperties:\n            anyOf:\n              - $ref: '#/components/schemas/Responses.VectorStoreFileAttributesString'\n              - type: boolean\n              - type: number\n          description: Key-value pairs where keys are strings with max length 64 and values are strings with max length 512, booleans, or numbers.\n      description: Set of key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers.\n    Responses.VectorStoreFileAttributesString:\n      type: string\n      maxLength: 512\n    Responses.Wait:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - wait\n          description: Specifies the event type. For a wait action, this property is always set to `wait`.\n          default: wait\n    Responses.WebSearchStatus:\n      type: string\n      enum:\n        - in_progress\n        - searching\n        - completed\n        - failed\n    Responses.WebSearchTool:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - web_search_preview\n        domains:\n          type: array\n          items:\n            type: string\n        search_context_size:\n          type: string\n          enum:\n            - small\n            - medium\n            - large\n        user_location:\n          type: object\n          properties:\n            type:\n              type: string\n              enum:\n                - approximate\n            city:\n              type: string\n            country:\n              type: string\n            region:\n              type: string\n            timezone:\n              type: string\n          required:\n            - type\n      allOf:\n        - $ref: '#/components/schemas/Responses.BaseTool'\n    Responses.WebSearchToolCall:\n      type: object\n      required:\n        - id\n        - type\n        - status\n      properties:\n        id:\n          type: string\n          description: The unique ID of the web search tool call.\n        type:\n          type: string\n          enum:\n            - web_search_call\n          description: The type of the web search tool call. Always `web_search_call`.\n        status:\n          allOf:\n            - $ref: '#/components/schemas/Responses.WebSearchStatus'\n          description: The status of the web search tool call.\n    Secrets.CreateSecretRequest:\n      type: object\n      required:\n        - name\n        - value\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          type: string\n          description: Name of the secret\n        description:\n          type: string\n          description: Description of what the secret is used for\n        value:\n          type: string\n          description: The decrypted secret value\n    Secrets.Secret:\n      type: object\n      required:\n        - id\n        - created_at\n        - updated_at\n        - name\n        - value\n      properties:\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          type: string\n          description: Name of the secret\n        description:\n          type: string\n          description: Description of what the secret is used for\n        value:\n          type: string\n          description: The decrypted secret value\n      description: A secret that can be used in tasks and sessions\n    Secrets.UpdateSecretRequest:\n      type: object\n      required:\n        - name\n        - value\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          type: string\n          description: Name of the secret\n        description:\n          type: string\n          description: Description of what the secret is used for\n        value:\n          type: string\n          description: The decrypted secret value\n    Sessions.BaseDocSearch:\n      type: object\n      required:\n        - limit\n        - lang\n        - metadata_filter\n        - num_search_messages\n        - max_query_length\n        - include_embeddings\n      properties:\n        limit:\n          type: integer\n          format: uint16\n          minimum: 1\n          maximum: 50\n          description: The limit of documents to return\n          default: 10\n        lang:\n          type: string\n          description: The language to be used for text-only search. Support for other languages coming soon.\n          default: en-US\n        metadata_filter:\n          type: object\n          additionalProperties: {}\n          description: Metadata filter to apply to the search\n          default: {}\n        num_search_messages:\n          type: integer\n          format: uint32\n          minimum: 1\n          maximum: 50\n          description: The number of search messages to use for the search.\n          default: 4\n        max_query_length:\n          type: integer\n          format: uint32\n          minimum: 100\n          maximum: 10000\n          description: The maximum query length to use for the search.\n          default: 1000\n        include_embeddings:\n          type: boolean\n          description: Whether to include embeddings in the response\n          default: true\n    Sessions.BaseDocSearchUpdate:\n      type: object\n      properties:\n        limit:\n          type: integer\n          format: uint16\n          minimum: 1\n          maximum: 50\n          description: The limit of documents to return\n          default: 10\n        lang:\n          type: string\n          description: The language to be used for text-only search. Support for other languages coming soon.\n          default: en-US\n        metadata_filter:\n          type: object\n          additionalProperties: {}\n          description: Metadata filter to apply to the search\n          default: {}\n        num_search_messages:\n          type: integer\n          format: uint32\n          minimum: 1\n          maximum: 50\n          description: The number of search messages to use for the search.\n          default: 4\n        max_query_length:\n          type: integer\n          format: uint32\n          minimum: 100\n          maximum: 10000\n          description: The maximum query length to use for the search.\n          default: 1000\n        include_embeddings:\n          type: boolean\n          description: Whether to include embeddings in the response\n          default: true\n    Sessions.ContextOverflowType:\n      type: string\n      enum:\n        - truncate\n        - adaptive\n    Sessions.CreateOrUpdateSessionRequest:\n      type: object\n      required:\n        - id\n        - situation\n        - render_templates\n        - token_budget\n        - context_overflow\n        - auto_run_tools\n        - forward_tool_calls\n      properties:\n        id:\n          $ref: '#/components/schemas/Common.uuid'\n        user:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          description: User ID of user associated with this session\n        users:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n        agent:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          description: Agent ID of agent associated with this session\n        agents:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n        situation:\n          type: string\n          nullable: true\n          description: Session situation\n          default: null\n        system_template:\n          type: string\n          description: A specific system prompt template that sets the background for this session\n        render_templates:\n          type: boolean\n          description: Render system and assistant message content as jinja templates\n          default: true\n        token_budget:\n          type: integer\n          format: uint16\n          nullable: true\n          description: Threshold value for the adaptive context functionality\n          default: null\n        context_overflow:\n          oneOf:\n            - $ref: '#/components/schemas/Sessions.ContextOverflowType'\n          nullable: true\n          description: Action to start on context window overflow\n          default: null\n        auto_run_tools:\n          type: boolean\n          description: |-\n            Whether to auto-run the tool and send the tool results to the model when available.\n            (default: false for sessions, true for tasks)\n\n            If a tool call is made, the tool's output will be sent back to the model as the model's input.\n            If a tool call is not made, the model's output will be returned as is.\n          default: false\n        forward_tool_calls:\n          type: boolean\n          description: Whether to forward tool calls to the model\n          default: false\n        recall_options:\n          anyOf:\n            - $ref: '#/components/schemas/Sessions.VectorDocSearch'\n            - $ref: '#/components/schemas/Sessions.TextOnlyDocSearch'\n            - $ref: '#/components/schemas/Sessions.HybridDocSearch'\n          nullable: true\n          description: Recall options for the session\n          default: null\n        metadata:\n          type: object\n          additionalProperties: {}\n      allOf:\n        - $ref: '#/components/schemas/Sessions.CreateSessionRequest'\n    Sessions.CreateSessionRequest:\n      type: object\n      required:\n        - situation\n        - render_templates\n        - token_budget\n        - context_overflow\n        - auto_run_tools\n        - forward_tool_calls\n      properties:\n        user:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          description: User ID of user associated with this session\n        users:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n        agent:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          description: Agent ID of agent associated with this session\n        agents:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n        situation:\n          type: string\n          nullable: true\n          description: Session situation\n          default: null\n        system_template:\n          type: string\n          description: A specific system prompt template that sets the background for this session\n        render_templates:\n          type: boolean\n          description: Render system and assistant message content as jinja templates\n          default: true\n        token_budget:\n          type: integer\n          format: uint16\n          nullable: true\n          description: Threshold value for the adaptive context functionality\n          default: null\n        context_overflow:\n          oneOf:\n            - $ref: '#/components/schemas/Sessions.ContextOverflowType'\n          nullable: true\n          description: Action to start on context window overflow\n          default: null\n        auto_run_tools:\n          type: boolean\n          description: |-\n            Whether to auto-run the tool and send the tool results to the model when available.\n            (default: false for sessions, true for tasks)\n\n            If a tool call is made, the tool's output will be sent back to the model as the model's input.\n            If a tool call is not made, the model's output will be returned as is.\n          default: false\n        forward_tool_calls:\n          type: boolean\n          description: Whether to forward tool calls to the model\n          default: false\n        recall_options:\n          anyOf:\n            - $ref: '#/components/schemas/Sessions.VectorDocSearch'\n            - $ref: '#/components/schemas/Sessions.TextOnlyDocSearch'\n            - $ref: '#/components/schemas/Sessions.HybridDocSearch'\n          nullable: true\n          description: Recall options for the session\n          default: null\n        metadata:\n          type: object\n          additionalProperties: {}\n      description: Payload for creating a session\n    Sessions.HybridDocSearch:\n      type: object\n      required:\n        - mode\n        - confidence\n        - alpha\n        - k_multiplier\n      properties:\n        mode:\n          type: string\n          enum:\n            - hybrid\n          description: The mode to use for the search.\n          default: hybrid\n        confidence:\n          type: number\n          minimum: -1\n          maximum: 1\n          description: The confidence cutoff level\n          default: 0.5\n        alpha:\n          type: number\n          minimum: 0\n          maximum: 1\n          description: The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n          default: 0.5\n        mmr_strength:\n          type: number\n          minimum: 0\n          maximum: 1\n          exclusiveMaximum: true\n          description: MMR Strength (mmr_strength = 1 - mmr_lambda)\n          default: 0.5\n        trigram_similarity_threshold:\n          type: number\n          nullable: true\n          minimum: 0\n          maximum: 1\n          description: The trigram_similarity_threshold cutoff level\n          default: null\n        k_multiplier:\n          type: integer\n          format: int8\n          minimum: 0\n          description: The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring\n          default: 7\n      allOf:\n        - $ref: '#/components/schemas/Sessions.BaseDocSearch'\n    Sessions.HybridDocSearchUpdate:\n      type: object\n      properties:\n        mode:\n          type: string\n          enum:\n            - hybrid\n          description: The mode to use for the search.\n          default: hybrid\n        confidence:\n          type: number\n          minimum: -1\n          maximum: 1\n          description: The confidence cutoff level\n          default: 0.5\n        alpha:\n          type: number\n          minimum: 0\n          maximum: 1\n          description: The weight to apply to BM25 vs Vector search results. 0 => pure BM25; 1 => pure vector;\n          default: 0.5\n        mmr_strength:\n          type: number\n          minimum: 0\n          maximum: 1\n          exclusiveMaximum: true\n          description: MMR Strength (mmr_strength = 1 - mmr_lambda)\n          default: 0.5\n        trigram_similarity_threshold:\n          type: number\n          nullable: true\n          minimum: 0\n          maximum: 1\n          description: The trigram_similarity_threshold cutoff level\n          default: null\n        k_multiplier:\n          type: integer\n          format: int8\n          minimum: 0\n          description: The k_multiplier cutoff level to control how many intermediate results to fetch before final scoring\n          default: 7\n      allOf:\n        - $ref: '#/components/schemas/Sessions.BaseDocSearchUpdate'\n    Sessions.MultiAgentMultiUserSession:\n      type: object\n      required:\n        - agents\n        - users\n      properties:\n        agents:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n          minItems: 2\n        users:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n          minItems: 2\n      allOf:\n        - $ref: '#/components/schemas/Sessions.Session'\n    Sessions.MultiAgentNoUserSession:\n      type: object\n      required:\n        - agents\n      properties:\n        agents:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n          minItems: 2\n      allOf:\n        - $ref: '#/components/schemas/Sessions.Session'\n    Sessions.MultiAgentSingleUserSession:\n      type: object\n      required:\n        - agents\n        - user\n      properties:\n        agents:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n          minItems: 2\n        user:\n          $ref: '#/components/schemas/Common.uuid'\n      allOf:\n        - $ref: '#/components/schemas/Sessions.Session'\n    Sessions.PatchSessionRequest:\n      type: object\n      properties:\n        situation:\n          type: string\n          nullable: true\n          description: Session situation\n          default: null\n        system_template:\n          type: string\n          description: A specific system prompt template that sets the background for this session\n        render_templates:\n          type: boolean\n          description: Render system and assistant message content as jinja templates\n          default: true\n        token_budget:\n          type: integer\n          format: uint16\n          nullable: true\n          description: Threshold value for the adaptive context functionality\n          default: null\n        context_overflow:\n          oneOf:\n            - $ref: '#/components/schemas/Sessions.ContextOverflowType'\n          nullable: true\n          description: Action to start on context window overflow\n          default: null\n        auto_run_tools:\n          type: boolean\n          description: |-\n            Whether to auto-run the tool and send the tool results to the model when available.\n            (default: false for sessions, true for tasks)\n\n            If a tool call is made, the tool's output will be sent back to the model as the model's input.\n            If a tool call is not made, the model's output will be returned as is.\n          default: false\n        forward_tool_calls:\n          type: boolean\n          description: Whether to forward tool calls to the model\n          default: false\n        recall_options:\n          anyOf:\n            - $ref: '#/components/schemas/Sessions.VectorDocSearchUpdate'\n            - $ref: '#/components/schemas/Sessions.TextOnlyDocSearchUpdate'\n            - $ref: '#/components/schemas/Sessions.HybridDocSearchUpdate'\n          nullable: true\n          description: Recall options for the session\n          default: null\n        metadata:\n          type: object\n          additionalProperties: {}\n      description: Payload for patching a session\n    Sessions.Session:\n      type: object\n      required:\n        - situation\n        - summary\n        - render_templates\n        - token_budget\n        - context_overflow\n        - auto_run_tools\n        - forward_tool_calls\n        - id\n        - created_at\n        - updated_at\n      properties:\n        situation:\n          type: string\n          nullable: true\n          description: Session situation\n          default: null\n        system_template:\n          type: string\n          description: A specific system prompt template that sets the background for this session\n        summary:\n          type: string\n          nullable: true\n          description: Summary (null at the beginning) - generated automatically after every interaction\n          default: null\n          readOnly: true\n        render_templates:\n          type: boolean\n          description: Render system and assistant message content as jinja templates\n          default: true\n        token_budget:\n          type: integer\n          format: uint16\n          nullable: true\n          description: Threshold value for the adaptive context functionality\n          default: null\n        context_overflow:\n          oneOf:\n            - $ref: '#/components/schemas/Sessions.ContextOverflowType'\n          nullable: true\n          description: Action to start on context window overflow\n          default: null\n        auto_run_tools:\n          type: boolean\n          description: |-\n            Whether to auto-run the tool and send the tool results to the model when available.\n            (default: false for sessions, true for tasks)\n\n            If a tool call is made, the tool's output will be sent back to the model as the model's input.\n            If a tool call is not made, the model's output will be returned as is.\n          default: false\n        forward_tool_calls:\n          type: boolean\n          description: Whether to forward tool calls to the model\n          default: false\n        recall_options:\n          anyOf:\n            - $ref: '#/components/schemas/Sessions.VectorDocSearch'\n            - $ref: '#/components/schemas/Sessions.TextOnlyDocSearch'\n            - $ref: '#/components/schemas/Sessions.HybridDocSearch'\n          nullable: true\n          description: Recall options for the session\n          default: null\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        kind:\n          type: string\n          description: Discriminator property for Session.\n      discriminator:\n        propertyName: kind\n        mapping:\n          single_agent_no_user: '#/components/schemas/Sessions.SingleAgentNoUserSession'\n          single_agent_single_user: '#/components/schemas/Sessions.SingleAgentSingleUserSession'\n          single_agent_multi_user: '#/components/schemas/Sessions.SingleAgentMultiUserSession'\n          multi_agent_no_user: '#/components/schemas/Sessions.MultiAgentNoUserSession'\n          multi_agent_single_user: '#/components/schemas/Sessions.MultiAgentSingleUserSession'\n          multi_agent_multi_user: '#/components/schemas/Sessions.MultiAgentMultiUserSession'\n    Sessions.SingleAgentMultiUserSession:\n      type: object\n      required:\n        - agent\n        - users\n      properties:\n        agent:\n          $ref: '#/components/schemas/Common.uuid'\n        users:\n          type: array\n          items:\n            $ref: '#/components/schemas/Common.uuid'\n          minItems: 2\n      allOf:\n        - $ref: '#/components/schemas/Sessions.Session'\n    Sessions.SingleAgentNoUserSession:\n      type: object\n      required:\n        - agent\n      properties:\n        agent:\n          $ref: '#/components/schemas/Common.uuid'\n      allOf:\n        - $ref: '#/components/schemas/Sessions.Session'\n    Sessions.SingleAgentSingleUserSession:\n      type: object\n      required:\n        - agent\n        - user\n      properties:\n        agent:\n          $ref: '#/components/schemas/Common.uuid'\n        user:\n          $ref: '#/components/schemas/Common.uuid'\n      allOf:\n        - $ref: '#/components/schemas/Sessions.Session'\n    Sessions.TextOnlyDocSearch:\n      type: object\n      required:\n        - mode\n      properties:\n        mode:\n          type: string\n          enum:\n            - text\n          description: The mode to use for the search.\n          default: text\n        trigram_similarity_threshold:\n          type: number\n          nullable: true\n          minimum: 0\n          maximum: 1\n          description: The trigram_similarity_threshold cutoff level\n          default: null\n      allOf:\n        - $ref: '#/components/schemas/Sessions.BaseDocSearch'\n    Sessions.TextOnlyDocSearchUpdate:\n      type: object\n      properties:\n        mode:\n          type: string\n          enum:\n            - text\n          description: The mode to use for the search.\n          default: text\n        trigram_similarity_threshold:\n          type: number\n          nullable: true\n          minimum: 0\n          maximum: 1\n          description: The trigram_similarity_threshold cutoff level\n          default: null\n      allOf:\n        - $ref: '#/components/schemas/Sessions.BaseDocSearchUpdate'\n    Sessions.UpdateSessionRequest:\n      type: object\n      required:\n        - situation\n        - render_templates\n        - token_budget\n        - context_overflow\n        - auto_run_tools\n        - forward_tool_calls\n      properties:\n        situation:\n          type: string\n          nullable: true\n          description: Session situation\n          default: null\n        system_template:\n          type: string\n          description: A specific system prompt template that sets the background for this session\n        render_templates:\n          type: boolean\n          description: Render system and assistant message content as jinja templates\n          default: true\n        token_budget:\n          type: integer\n          format: uint16\n          nullable: true\n          description: Threshold value for the adaptive context functionality\n          default: null\n        context_overflow:\n          oneOf:\n            - $ref: '#/components/schemas/Sessions.ContextOverflowType'\n          nullable: true\n          description: Action to start on context window overflow\n          default: null\n        auto_run_tools:\n          type: boolean\n          description: |-\n            Whether to auto-run the tool and send the tool results to the model when available.\n            (default: false for sessions, true for tasks)\n\n            If a tool call is made, the tool's output will be sent back to the model as the model's input.\n            If a tool call is not made, the model's output will be returned as is.\n          default: false\n        forward_tool_calls:\n          type: boolean\n          description: Whether to forward tool calls to the model\n          default: false\n        recall_options:\n          anyOf:\n            - $ref: '#/components/schemas/Sessions.VectorDocSearch'\n            - $ref: '#/components/schemas/Sessions.TextOnlyDocSearch'\n            - $ref: '#/components/schemas/Sessions.HybridDocSearch'\n          nullable: true\n          description: Recall options for the session\n          default: null\n        metadata:\n          type: object\n          additionalProperties: {}\n      description: Payload for updating a session\n    Sessions.VectorDocSearch:\n      type: object\n      required:\n        - mode\n        - confidence\n      properties:\n        mode:\n          type: string\n          enum:\n            - vector\n          description: The mode to use for the search.\n          default: vector\n        confidence:\n          type: number\n          minimum: -1\n          maximum: 1\n          description: The confidence cutoff level\n          default: 0.5\n        mmr_strength:\n          type: number\n          minimum: 0\n          maximum: 1\n          exclusiveMaximum: true\n          description: MMR Strength (mmr_strength = 1 - mmr_lambda)\n          default: 0.5\n      allOf:\n        - $ref: '#/components/schemas/Sessions.BaseDocSearch'\n    Sessions.VectorDocSearchUpdate:\n      type: object\n      properties:\n        mode:\n          type: string\n          enum:\n            - vector\n          description: The mode to use for the search.\n          default: vector\n        confidence:\n          type: number\n          minimum: -1\n          maximum: 1\n          description: The confidence cutoff level\n          default: 0.5\n        mmr_strength:\n          type: number\n          minimum: 0\n          maximum: 1\n          exclusiveMaximum: true\n          description: MMR Strength (mmr_strength = 1 - mmr_lambda)\n          default: 0.5\n      allOf:\n        - $ref: '#/components/schemas/Sessions.BaseDocSearchUpdate'\n    Tasks.CaseThen:\n      type: object\n      required:\n        - case\n        - then\n      properties:\n        case:\n          anyOf:\n            - $ref: '#/components/schemas/Common.PyExpression'\n            - type: string\n              enum:\n                - _\n          description: The condition to evaluate\n        then:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStep'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n          description: The steps to run if the condition is true\n    Tasks.CaseThenUpdateItem:\n      type: object\n      required:\n        - case\n        - then\n      properties:\n        case:\n          anyOf:\n            - $ref: '#/components/schemas/Common.PyExpression'\n            - type: string\n              enum:\n                - _\n          description: The condition to evaluate\n        then:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n          description: The steps to run if the condition is true\n    Tasks.CreateTaskRequest:\n      type: object\n      required:\n        - name\n        - description\n        - main\n        - input_schema\n        - tools\n        - inherit_tools\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: The name of the task.\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: The canonical name of the task.\n        description:\n          type: string\n          description: The description of the task.\n          default: ''\n        main:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Tasks.EvaluateStep'\n              - $ref: '#/components/schemas/Tasks.ToolCallStep'\n              - $ref: '#/components/schemas/Tasks.PromptStep'\n              - $ref: '#/components/schemas/Tasks.GetStep'\n              - $ref: '#/components/schemas/Tasks.SetStep'\n              - $ref: '#/components/schemas/Tasks.LogStep'\n              - $ref: '#/components/schemas/Tasks.YieldStep'\n              - $ref: '#/components/schemas/Tasks.ReturnStep'\n              - $ref: '#/components/schemas/Tasks.SleepStep'\n              - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n              - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n              - $ref: '#/components/schemas/Tasks.IfElseWorkflowStep'\n              - $ref: '#/components/schemas/Tasks.SwitchStep'\n              - $ref: '#/components/schemas/Tasks.ForeachStep'\n              - $ref: '#/components/schemas/Tasks.ParallelStep'\n              - type: object\n                required:\n                  - kind_\n                  - over\n                  - map\n                properties:\n                  kind_:\n                    type: string\n                    enum:\n                      - map_reduce\n                    default: map_reduce\n                    readOnly: true\n                  over:\n                    allOf:\n                      - $ref: '#/components/schemas/Common.PyExpression'\n                    description: The variable to iterate over\n                  map:\n                    anyOf:\n                      - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                      - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                      - $ref: '#/components/schemas/Tasks.PromptStep'\n                      - $ref: '#/components/schemas/Tasks.GetStep'\n                      - $ref: '#/components/schemas/Tasks.SetStep'\n                      - $ref: '#/components/schemas/Tasks.LogStep'\n                      - $ref: '#/components/schemas/Tasks.YieldStep'\n                    description: The steps to run for each iteration\n                  reduce:\n                    allOf:\n                      - $ref: '#/components/schemas/Common.PyExpression'\n                    description: |-\n                      The expression to reduce the results.\n                      If not provided, the results are collected and returned as a list.\n                      A special parameter named `results` is the accumulator and `_` is the current value.\n                  initial:\n                    description: The initial value of the reduce expression\n                    default: []\n                  parallelism:\n                    type: integer\n                    format: uint16\n                    minimum: 1\n                    maximum: 100\n                    description: Whether to run the reduce expression in parallel and how many items to run in each batch\n                allOf:\n                  - type: object\n                    required:\n                      - kind_\n                    properties:\n                      kind_:\n                        type: string\n                        enum:\n                          - map_reduce\n                        description: The kind of step\n                        readOnly: true\n                      label:\n                        allOf:\n                          - $ref: '#/components/schemas/Common.stepLabel'\n                        description: The label of this step for referencing it from other steps\n                    discriminator:\n                      propertyName: kind_\n          minItems: 1\n          description: The entrypoint of the task.\n        input_schema:\n          type: object\n          additionalProperties: {}\n          nullable: true\n          description: The schema for the input to the task. `null` means all inputs are valid.\n          default: null\n        tools:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tasks.TaskTool'\n          description: Tools defined specifically for this task not included in the Agent itself.\n          default: []\n        inherit_tools:\n          type: boolean\n          description: Whether to inherit tools from the parent agent or not. Defaults to false.\n          default: false\n        metadata:\n          type: object\n          additionalProperties: {}\n      additionalProperties:\n        type: array\n        items:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStep'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.IfElseWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.SwitchStep'\n            - $ref: '#/components/schemas/Tasks.ForeachStep'\n            - $ref: '#/components/schemas/Tasks.ParallelStep'\n            - type: object\n              required:\n                - kind_\n                - over\n                - map\n              properties:\n                kind_:\n                  type: string\n                  enum:\n                    - map_reduce\n                  default: map_reduce\n                  readOnly: true\n                over:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: The variable to iterate over\n                map:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                    - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                    - $ref: '#/components/schemas/Tasks.PromptStep'\n                    - $ref: '#/components/schemas/Tasks.GetStep'\n                    - $ref: '#/components/schemas/Tasks.SetStep'\n                    - $ref: '#/components/schemas/Tasks.LogStep'\n                    - $ref: '#/components/schemas/Tasks.YieldStep'\n                  description: The steps to run for each iteration\n                reduce:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: |-\n                    The expression to reduce the results.\n                    If not provided, the results are collected and returned as a list.\n                    A special parameter named `results` is the accumulator and `_` is the current value.\n                initial:\n                  description: The initial value of the reduce expression\n                  default: []\n                parallelism:\n                  type: integer\n                  format: uint16\n                  minimum: 1\n                  maximum: 100\n                  description: Whether to run the reduce expression in parallel and how many items to run in each batch\n              allOf:\n                - type: object\n                  required:\n                    - kind_\n                  properties:\n                    kind_:\n                      type: string\n                      enum:\n                        - map_reduce\n                      description: The kind of step\n                      readOnly: true\n                    label:\n                      allOf:\n                        - $ref: '#/components/schemas/Common.stepLabel'\n                      description: The label of this step for referencing it from other steps\n                  discriminator:\n                    propertyName: kind_\n      description: Payload for creating a task\n    Tasks.ErrorWorkflowStep:\n      type: object\n      required:\n        - kind_\n        - error\n      properties:\n        kind_:\n          type: string\n          enum:\n            - error\n          default: error\n          readOnly: true\n        error:\n          type: string\n          description: The error message\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - error\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.EvaluateStep:\n      type: object\n      required:\n        - kind_\n        - evaluate\n      properties:\n        kind_:\n          type: string\n          enum:\n            - evaluate\n          default: evaluate\n          readOnly: true\n        evaluate:\n          type: object\n          additionalProperties:\n            anyOf:\n              - $ref: '#/components/schemas/Common.PyExpression'\n              - type: object\n                additionalProperties: {}\n          description: The expression to evaluate\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - evaluate\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.ForeachDo:\n      type: object\n      required:\n        - in\n        - do\n      properties:\n        in:\n          allOf:\n            - $ref: '#/components/schemas/Common.PyExpression'\n          description: |-\n            The variable to iterate over.\n            VALIDATION: Should NOT return more than 1000 elements.\n        do:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStep'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n          description: The steps to run for each iteration\n    Tasks.ForeachDoUpdateItem:\n      type: object\n      required:\n        - in\n        - do\n      properties:\n        in:\n          allOf:\n            - $ref: '#/components/schemas/Common.PyExpression'\n          description: |-\n            The variable to iterate over.\n            VALIDATION: Should NOT return more than 1000 elements.\n        do:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n          description: The steps to run for each iteration\n    Tasks.ForeachStep:\n      type: object\n      required:\n        - kind_\n        - foreach\n      properties:\n        kind_:\n          type: string\n          enum:\n            - foreach\n          default: foreach\n          readOnly: true\n        foreach:\n          allOf:\n            - $ref: '#/components/schemas/Tasks.ForeachDo'\n          description: The steps to run for each iteration\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - foreach\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.ForeachStepUpdateItem:\n      type: object\n      required:\n        - foreach\n      properties:\n        foreach:\n          allOf:\n            - $ref: '#/components/schemas/Tasks.ForeachDoUpdateItem'\n          description: The steps to run for each iteration\n      allOf:\n        - type: object\n          properties:\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n            kind_:\n              type: string\n              description: Discriminator property for BaseWorkflowStep.\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.GetStep:\n      type: object\n      required:\n        - kind_\n        - get\n      properties:\n        kind_:\n          type: string\n          enum:\n            - get\n          default: get\n          readOnly: true\n        get:\n          type: string\n          description: The key to get\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - get\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.IfElseWorkflowStep:\n      type: object\n      required:\n        - kind_\n        - if\n        - then\n        - else\n      properties:\n        kind_:\n          type: string\n          enum:\n            - if_else\n          default: if_else\n          readOnly: true\n        if:\n          allOf:\n            - $ref: '#/components/schemas/Common.PyExpression'\n          description: The condition to evaluate\n        then:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStep'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.IfElseWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.SwitchStep'\n            - $ref: '#/components/schemas/Tasks.ForeachStep'\n            - $ref: '#/components/schemas/Tasks.ParallelStep'\n            - type: object\n              required:\n                - kind_\n                - over\n                - map\n              properties:\n                kind_:\n                  type: string\n                  enum:\n                    - map_reduce\n                  default: map_reduce\n                  readOnly: true\n                over:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: The variable to iterate over\n                map:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                    - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                    - $ref: '#/components/schemas/Tasks.PromptStep'\n                    - $ref: '#/components/schemas/Tasks.GetStep'\n                    - $ref: '#/components/schemas/Tasks.SetStep'\n                    - $ref: '#/components/schemas/Tasks.LogStep'\n                    - $ref: '#/components/schemas/Tasks.YieldStep'\n                  description: The steps to run for each iteration\n                reduce:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: |-\n                    The expression to reduce the results.\n                    If not provided, the results are collected and returned as a list.\n                    A special parameter named `results` is the accumulator and `_` is the current value.\n                initial:\n                  description: The initial value of the reduce expression\n                  default: []\n                parallelism:\n                  type: integer\n                  format: uint16\n                  minimum: 1\n                  maximum: 100\n                  description: Whether to run the reduce expression in parallel and how many items to run in each batch\n              allOf:\n                - type: object\n                  required:\n                    - kind_\n                  properties:\n                    kind_:\n                      type: string\n                      enum:\n                        - map_reduce\n                      description: The kind of step\n                      readOnly: true\n                    label:\n                      allOf:\n                        - $ref: '#/components/schemas/Common.stepLabel'\n                      description: The label of this step for referencing it from other steps\n                  discriminator:\n                    propertyName: kind_\n          description: The steps to run if the condition is true\n        else:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStep'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.IfElseWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.SwitchStep'\n            - $ref: '#/components/schemas/Tasks.ForeachStep'\n            - $ref: '#/components/schemas/Tasks.ParallelStep'\n            - type: object\n              required:\n                - kind_\n                - over\n                - map\n              properties:\n                kind_:\n                  type: string\n                  enum:\n                    - map_reduce\n                  default: map_reduce\n                  readOnly: true\n                over:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: The variable to iterate over\n                map:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                    - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                    - $ref: '#/components/schemas/Tasks.PromptStep'\n                    - $ref: '#/components/schemas/Tasks.GetStep'\n                    - $ref: '#/components/schemas/Tasks.SetStep'\n                    - $ref: '#/components/schemas/Tasks.LogStep'\n                    - $ref: '#/components/schemas/Tasks.YieldStep'\n                  description: The steps to run for each iteration\n                reduce:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: |-\n                    The expression to reduce the results.\n                    If not provided, the results are collected and returned as a list.\n                    A special parameter named `results` is the accumulator and `_` is the current value.\n                initial:\n                  description: The initial value of the reduce expression\n                  default: []\n                parallelism:\n                  type: integer\n                  format: uint16\n                  minimum: 1\n                  maximum: 100\n                  description: Whether to run the reduce expression in parallel and how many items to run in each batch\n              allOf:\n                - type: object\n                  required:\n                    - kind_\n                  properties:\n                    kind_:\n                      type: string\n                      enum:\n                        - map_reduce\n                      description: The kind of step\n                      readOnly: true\n                    label:\n                      allOf:\n                        - $ref: '#/components/schemas/Common.stepLabel'\n                      description: The label of this step for referencing it from other steps\n                  discriminator:\n                    propertyName: kind_\n          nullable: true\n          description: The steps to run if the condition is false\n          default: null\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - if_else\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.IfElseWorkflowStepUpdateItem:\n      type: object\n      required:\n        - if\n        - then\n        - else\n      properties:\n        if:\n          allOf:\n            - $ref: '#/components/schemas/Common.PyExpression'\n          description: The condition to evaluate\n        then:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.IfElseWorkflowStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.SwitchStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.ForeachStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.ParallelStepUpdateItem'\n            - type: object\n              required:\n                - over\n                - map\n              properties:\n                over:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: The variable to iterate over\n                map:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                    - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                    - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n                    - $ref: '#/components/schemas/Tasks.GetStep'\n                    - $ref: '#/components/schemas/Tasks.SetStep'\n                    - $ref: '#/components/schemas/Tasks.LogStep'\n                    - $ref: '#/components/schemas/Tasks.YieldStep'\n                  description: The steps to run for each iteration\n                reduce:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: |-\n                    The expression to reduce the results.\n                    If not provided, the results are collected and returned as a list.\n                    A special parameter named `results` is the accumulator and `_` is the current value.\n                initial:\n                  description: The initial value of the reduce expression\n                  default: []\n                parallelism:\n                  type: integer\n                  format: uint16\n                  minimum: 1\n                  maximum: 100\n                  description: Whether to run the reduce expression in parallel and how many items to run in each batch\n              allOf:\n                - type: object\n                  properties:\n                    label:\n                      allOf:\n                        - $ref: '#/components/schemas/Common.stepLabel'\n                      description: The label of this step for referencing it from other steps\n                    kind_:\n                      type: string\n                      description: Discriminator property for BaseWorkflowStep.\n                  discriminator:\n                    propertyName: kind_\n          description: The steps to run if the condition is true\n        else:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.IfElseWorkflowStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.SwitchStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.ForeachStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.ParallelStepUpdateItem'\n            - type: object\n              required:\n                - over\n                - map\n              properties:\n                over:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: The variable to iterate over\n                map:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                    - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                    - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n                    - $ref: '#/components/schemas/Tasks.GetStep'\n                    - $ref: '#/components/schemas/Tasks.SetStep'\n                    - $ref: '#/components/schemas/Tasks.LogStep'\n                    - $ref: '#/components/schemas/Tasks.YieldStep'\n                  description: The steps to run for each iteration\n                reduce:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: |-\n                    The expression to reduce the results.\n                    If not provided, the results are collected and returned as a list.\n                    A special parameter named `results` is the accumulator and `_` is the current value.\n                initial:\n                  description: The initial value of the reduce expression\n                  default: []\n                parallelism:\n                  type: integer\n                  format: uint16\n                  minimum: 1\n                  maximum: 100\n                  description: Whether to run the reduce expression in parallel and how many items to run in each batch\n              allOf:\n                - type: object\n                  properties:\n                    label:\n                      allOf:\n                        - $ref: '#/components/schemas/Common.stepLabel'\n                      description: The label of this step for referencing it from other steps\n                    kind_:\n                      type: string\n                      description: Discriminator property for BaseWorkflowStep.\n                  discriminator:\n                    propertyName: kind_\n          nullable: true\n          description: The steps to run if the condition is false\n          default: null\n      allOf:\n        - type: object\n          properties:\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n            kind_:\n              type: string\n              description: Discriminator property for BaseWorkflowStep.\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.LogStep:\n      type: object\n      required:\n        - kind_\n        - log\n      properties:\n        kind_:\n          type: string\n          enum:\n            - log\n          default: log\n          readOnly: true\n        log:\n          allOf:\n            - $ref: '#/components/schemas/Common.JinjaTemplate'\n          description: The value to log\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - log\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.ParallelStep:\n      type: object\n      required:\n        - kind_\n        - parallel\n      properties:\n        kind_:\n          type: string\n          enum:\n            - parallel\n          default: parallel\n          readOnly: true\n        parallel:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Tasks.EvaluateStep'\n              - $ref: '#/components/schemas/Tasks.ToolCallStep'\n              - $ref: '#/components/schemas/Tasks.PromptStep'\n              - $ref: '#/components/schemas/Tasks.GetStep'\n              - $ref: '#/components/schemas/Tasks.SetStep'\n              - $ref: '#/components/schemas/Tasks.LogStep'\n              - $ref: '#/components/schemas/Tasks.YieldStep'\n          maxItems: 100\n          description: The steps to run in parallel. Max concurrency will depend on the platform.\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - parallel\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.ParallelStepUpdateItem:\n      type: object\n      required:\n        - parallel\n      properties:\n        parallel:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Tasks.EvaluateStep'\n              - $ref: '#/components/schemas/Tasks.ToolCallStep'\n              - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n              - $ref: '#/components/schemas/Tasks.GetStep'\n              - $ref: '#/components/schemas/Tasks.SetStep'\n              - $ref: '#/components/schemas/Tasks.LogStep'\n              - $ref: '#/components/schemas/Tasks.YieldStep'\n          maxItems: 100\n          description: The steps to run in parallel. Max concurrency will depend on the platform.\n      allOf:\n        - type: object\n          properties:\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n            kind_:\n              type: string\n              description: Discriminator property for BaseWorkflowStep.\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.PatchTaskRequest:\n      type: object\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: The name of the task.\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: The canonical name of the task.\n        description:\n          type: string\n          description: The description of the task.\n          default: ''\n        main:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Tasks.EvaluateStep'\n              - $ref: '#/components/schemas/Tasks.ToolCallStep'\n              - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n              - $ref: '#/components/schemas/Tasks.GetStep'\n              - $ref: '#/components/schemas/Tasks.SetStep'\n              - $ref: '#/components/schemas/Tasks.LogStep'\n              - $ref: '#/components/schemas/Tasks.YieldStep'\n              - $ref: '#/components/schemas/Tasks.ReturnStep'\n              - $ref: '#/components/schemas/Tasks.SleepStep'\n              - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n              - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n              - $ref: '#/components/schemas/Tasks.IfElseWorkflowStepUpdateItem'\n              - $ref: '#/components/schemas/Tasks.SwitchStepUpdateItem'\n              - $ref: '#/components/schemas/Tasks.ForeachStepUpdateItem'\n              - $ref: '#/components/schemas/Tasks.ParallelStepUpdateItem'\n              - type: object\n                required:\n                  - over\n                  - map\n                properties:\n                  over:\n                    allOf:\n                      - $ref: '#/components/schemas/Common.PyExpression'\n                    description: The variable to iterate over\n                  map:\n                    anyOf:\n                      - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                      - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                      - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n                      - $ref: '#/components/schemas/Tasks.GetStep'\n                      - $ref: '#/components/schemas/Tasks.SetStep'\n                      - $ref: '#/components/schemas/Tasks.LogStep'\n                      - $ref: '#/components/schemas/Tasks.YieldStep'\n                    description: The steps to run for each iteration\n                  reduce:\n                    allOf:\n                      - $ref: '#/components/schemas/Common.PyExpression'\n                    description: |-\n                      The expression to reduce the results.\n                      If not provided, the results are collected and returned as a list.\n                      A special parameter named `results` is the accumulator and `_` is the current value.\n                  initial:\n                    description: The initial value of the reduce expression\n                    default: []\n                  parallelism:\n                    type: integer\n                    format: uint16\n                    minimum: 1\n                    maximum: 100\n                    description: Whether to run the reduce expression in parallel and how many items to run in each batch\n                allOf:\n                  - type: object\n                    properties:\n                      label:\n                        allOf:\n                          - $ref: '#/components/schemas/Common.stepLabel'\n                        description: The label of this step for referencing it from other steps\n                      kind_:\n                        type: string\n                        description: Discriminator property for BaseWorkflowStep.\n                    discriminator:\n                      propertyName: kind_\n          minItems: 1\n          description: The entrypoint of the task.\n        input_schema:\n          type: object\n          additionalProperties: {}\n          nullable: true\n          description: The schema for the input to the task. `null` means all inputs are valid.\n          default: null\n        tools:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tasks.TaskTool'\n          description: Tools defined specifically for this task not included in the Agent itself.\n          default: []\n        inherit_tools:\n          type: boolean\n          description: Whether to inherit tools from the parent agent or not. Defaults to false.\n          default: false\n        metadata:\n          type: object\n          additionalProperties: {}\n      additionalProperties:\n        type: array\n        items:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.IfElseWorkflowStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.SwitchStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.ForeachStepUpdateItem'\n            - $ref: '#/components/schemas/Tasks.ParallelStepUpdateItem'\n            - type: object\n              required:\n                - over\n                - map\n              properties:\n                over:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: The variable to iterate over\n                map:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                    - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                    - $ref: '#/components/schemas/Tasks.PromptStepUpdateItem'\n                    - $ref: '#/components/schemas/Tasks.GetStep'\n                    - $ref: '#/components/schemas/Tasks.SetStep'\n                    - $ref: '#/components/schemas/Tasks.LogStep'\n                    - $ref: '#/components/schemas/Tasks.YieldStep'\n                  description: The steps to run for each iteration\n                reduce:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: |-\n                    The expression to reduce the results.\n                    If not provided, the results are collected and returned as a list.\n                    A special parameter named `results` is the accumulator and `_` is the current value.\n                initial:\n                  description: The initial value of the reduce expression\n                  default: []\n                parallelism:\n                  type: integer\n                  format: uint16\n                  minimum: 1\n                  maximum: 100\n                  description: Whether to run the reduce expression in parallel and how many items to run in each batch\n              allOf:\n                - type: object\n                  properties:\n                    label:\n                      allOf:\n                        - $ref: '#/components/schemas/Common.stepLabel'\n                      description: The label of this step for referencing it from other steps\n                    kind_:\n                      type: string\n                      description: Discriminator property for BaseWorkflowStep.\n                  discriminator:\n                    propertyName: kind_\n      description: Payload for patching a task\n    Tasks.PromptStep:\n      type: object\n      required:\n        - kind_\n        - prompt\n        - tools\n        - auto_run_tools\n        - disable_cache\n      properties:\n        kind_:\n          type: string\n          enum:\n            - prompt\n          default: prompt\n          readOnly: true\n        prompt:\n          anyOf:\n            - $ref: '#/components/schemas/Common.JinjaTemplate'\n            - type: array\n              items:\n                type: object\n                required:\n                  - role\n                  - content\n                properties:\n                  role:\n                    allOf:\n                      - $ref: '#/components/schemas/Entries.ChatMLRole'\n                    description: The role of the message\n                  tool_call_id:\n                    type: string\n                  content:\n                    anyOf:\n                      - $ref: '#/components/schemas/Common.JinjaTemplate'\n                      - type: array\n                        items:\n                          $ref: '#/components/schemas/Common.JinjaTemplate'\n                      - type: array\n                        items:\n                          anyOf:\n                            - type: object\n                              required:\n                                - text\n                                - type\n                              properties:\n                                text:\n                                  $ref: '#/components/schemas/Common.JinjaTemplate'\n                                type:\n                                  type: string\n                                  enum:\n                                    - text\n                                  description: The type (fixed to 'text')\n                                  default: text\n                            - type: object\n                              required:\n                                - image_url\n                                - type\n                              properties:\n                                image_url:\n                                  type: object\n                                  required:\n                                    - url\n                                    - detail\n                                  properties:\n                                    url:\n                                      type: string\n                                      description: Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n                                    detail:\n                                      allOf:\n                                        - $ref: '#/components/schemas/Entries.ImageDetail'\n                                      description: The detail level of the image\n                                      default: auto\n                                  description: The image URL\n                                type:\n                                  type: string\n                                  enum:\n                                    - image_url\n                                  description: The type (fixed to 'image_url')\n                                  default: image_url\n                            - type: object\n                              required:\n                                - tool_use_id\n                                - type\n                                - content\n                              properties:\n                                tool_use_id:\n                                  type: string\n                                type:\n                                  type: string\n                                  enum:\n                                    - tool_result\n                                  default: tool_result\n                                content:\n                                  anyOf:\n                                    - type: array\n                                      items:\n                                        type: object\n                                        required:\n                                          - text\n                                          - type\n                                        properties:\n                                          text:\n                                            $ref: '#/components/schemas/Common.JinjaTemplate'\n                                          type:\n                                            type: string\n                                            enum:\n                                              - text\n                                            description: The type (fixed to 'text')\n                                            default: text\n                                    - type: array\n                                      items:\n                                        type: object\n                                        required:\n                                          - type\n                                          - source\n                                        properties:\n                                          type:\n                                            type: string\n                                            enum:\n                                              - image\n                                            default: image\n                                          source:\n                                            type: object\n                                            required:\n                                              - type\n                                              - media_type\n                                              - data\n                                            properties:\n                                              type:\n                                                type: string\n                                                enum:\n                                                  - base64\n                                                default: base64\n                                              media_type:\n                                                type: string\n                                              data:\n                                                $ref: '#/components/schemas/Common.JinjaTemplate'\n                              description: Anthropic image content part\n                    nullable: true\n                    description: The content parts of the message\n                  name:\n                    type: string\n                    description: Name\n                  tool_calls:\n                    type: array\n                    items:\n                      anyOf:\n                        - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n                        - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n                        - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n                        - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n                    nullable: true\n                    description: Tool calls generated by the model.\n                    default: []\n          description: The prompt to run\n        tools:\n          anyOf:\n            - type: string\n              enum:\n                - all\n            - type: array\n              items:\n                anyOf:\n                  - $ref: '#/components/schemas/Tasks.ToolRef'\n                  - $ref: '#/components/schemas/Tools.CreateToolRequest'\n          description: The tools to use for the prompt\n          default: all\n        tool_choice:\n          anyOf:\n            - type: string\n              enum:\n                - auto\n                - none\n            - $ref: '#/components/schemas/Tools.NamedToolChoice'\n          description: The tool choice for the prompt\n        settings:\n          type: object\n          additionalProperties: {}\n          description: Settings for the prompt\n        unwrap:\n          type: boolean\n          description: Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content`\n          default: false\n        auto_run_tools:\n          type: boolean\n          description: |-\n            Whether to auto-run the tool and send the tool results to the model when available.\n            (default: false)\n\n            If a tool call is made, the tool's output will be used as the model's input.\n            If a tool call is not made, the model's output will be used as the next step's input.\n          default: false\n        disable_cache:\n          type: boolean\n          description: Whether to disable caching for the prompt step\n          default: false\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - prompt\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.PromptStepUpdateItem:\n      type: object\n      required:\n        - prompt\n        - tools\n        - auto_run_tools\n        - disable_cache\n      properties:\n        prompt:\n          anyOf:\n            - $ref: '#/components/schemas/Common.JinjaTemplate'\n            - type: array\n              items:\n                type: object\n                required:\n                  - role\n                  - content\n                properties:\n                  role:\n                    allOf:\n                      - $ref: '#/components/schemas/Entries.ChatMLRole'\n                    description: The role of the message\n                  tool_call_id:\n                    type: string\n                  content:\n                    anyOf:\n                      - $ref: '#/components/schemas/Common.JinjaTemplate'\n                      - type: array\n                        items:\n                          $ref: '#/components/schemas/Common.JinjaTemplate'\n                      - type: array\n                        items:\n                          anyOf:\n                            - type: object\n                              required:\n                                - text\n                                - type\n                              properties:\n                                text:\n                                  $ref: '#/components/schemas/Common.JinjaTemplate'\n                                type:\n                                  type: string\n                                  enum:\n                                    - text\n                                  description: The type (fixed to 'text')\n                                  default: text\n                            - type: object\n                              required:\n                                - image_url\n                                - type\n                              properties:\n                                image_url:\n                                  type: object\n                                  required:\n                                    - url\n                                    - detail\n                                  properties:\n                                    url:\n                                      type: string\n                                      description: Image URL or base64 data url (e.g. `data:image/jpeg;base64,<the base64 encoded image>`)\n                                    detail:\n                                      allOf:\n                                        - $ref: '#/components/schemas/Entries.ImageDetail'\n                                      description: The detail level of the image\n                                      default: auto\n                                  description: The image URL\n                                type:\n                                  type: string\n                                  enum:\n                                    - image_url\n                                  description: The type (fixed to 'image_url')\n                                  default: image_url\n                            - type: object\n                              required:\n                                - tool_use_id\n                                - type\n                                - content\n                              properties:\n                                tool_use_id:\n                                  type: string\n                                type:\n                                  type: string\n                                  enum:\n                                    - tool_result\n                                  default: tool_result\n                                content:\n                                  anyOf:\n                                    - type: array\n                                      items:\n                                        type: object\n                                        required:\n                                          - text\n                                          - type\n                                        properties:\n                                          text:\n                                            $ref: '#/components/schemas/Common.JinjaTemplate'\n                                          type:\n                                            type: string\n                                            enum:\n                                              - text\n                                            description: The type (fixed to 'text')\n                                            default: text\n                                    - type: array\n                                      items:\n                                        type: object\n                                        required:\n                                          - type\n                                          - source\n                                        properties:\n                                          type:\n                                            type: string\n                                            enum:\n                                              - image\n                                            default: image\n                                          source:\n                                            type: object\n                                            required:\n                                              - type\n                                              - media_type\n                                              - data\n                                            properties:\n                                              type:\n                                                type: string\n                                                enum:\n                                                  - base64\n                                                default: base64\n                                              media_type:\n                                                type: string\n                                              data:\n                                                $ref: '#/components/schemas/Common.JinjaTemplate'\n                              description: Anthropic image content part\n                    nullable: true\n                    description: The content parts of the message\n                  name:\n                    type: string\n                    description: Name\n                  tool_calls:\n                    type: array\n                    items:\n                      anyOf:\n                        - $ref: '#/components/schemas/Tools.ChosenFunctionCall'\n                        - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n                        - $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n                        - $ref: '#/components/schemas/Tools.ChosenBash20241022'\n                    nullable: true\n                    description: Tool calls generated by the model.\n                    default: []\n          description: The prompt to run\n        tools:\n          anyOf:\n            - type: string\n              enum:\n                - all\n            - type: array\n              items:\n                anyOf:\n                  - $ref: '#/components/schemas/Tasks.ToolRefUpdateItem'\n                  - $ref: '#/components/schemas/Tools.CreateToolRequest'\n          description: The tools to use for the prompt\n          default: all\n        tool_choice:\n          anyOf:\n            - type: string\n              enum:\n                - auto\n                - none\n            - $ref: '#/components/schemas/Tools.NamedToolChoice'\n          description: The tool choice for the prompt\n        settings:\n          type: object\n          additionalProperties: {}\n          description: Settings for the prompt\n        unwrap:\n          type: boolean\n          description: Whether to unwrap the output of the prompt step, equivalent to `response.choices[0].message.content`\n          default: false\n        auto_run_tools:\n          type: boolean\n          description: |-\n            Whether to auto-run the tool and send the tool results to the model when available.\n            (default: false)\n\n            If a tool call is made, the tool's output will be used as the model's input.\n            If a tool call is not made, the model's output will be used as the next step's input.\n          default: false\n        disable_cache:\n          type: boolean\n          description: Whether to disable caching for the prompt step\n          default: false\n      allOf:\n        - type: object\n          properties:\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n            kind_:\n              type: string\n              description: Discriminator property for BaseWorkflowStep.\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.ReturnStep:\n      type: object\n      required:\n        - kind_\n        - return\n      properties:\n        kind_:\n          type: string\n          enum:\n            - return\n          default: return\n          readOnly: true\n        return:\n          type: object\n          additionalProperties:\n            anyOf:\n              - $ref: '#/components/schemas/Common.PyExpression'\n              - type: array\n                items:\n                  $ref: '#/components/schemas/Common.PyExpression'\n              - type: object\n                additionalProperties:\n                  $ref: '#/components/schemas/Common.PyExpression'\n              - type: array\n                items:\n                  type: object\n                  additionalProperties:\n                    $ref: '#/components/schemas/Common.PyExpression'\n          description: The value to return\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - return\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.SetStep:\n      type: object\n      required:\n        - kind_\n        - set\n      properties:\n        kind_:\n          type: string\n          enum:\n            - set\n          default: set\n          readOnly: true\n        set:\n          type: object\n          additionalProperties:\n            anyOf:\n              - $ref: '#/components/schemas/Common.PyExpression'\n              - type: object\n                additionalProperties: {}\n          description: The value to set\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - set\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.SleepFor:\n      type: object\n      required:\n        - seconds\n        - minutes\n        - hours\n        - days\n      properties:\n        seconds:\n          type: integer\n          format: uint16\n          minimum: 0\n          maximum: 60\n          description: The number of seconds to sleep for\n          default: 0\n        minutes:\n          type: integer\n          format: uint16\n          minimum: 0\n          maximum: 60\n          description: The number of minutes to sleep for\n          default: 0\n        hours:\n          type: integer\n          format: uint16\n          minimum: 0\n          maximum: 24\n          description: The number of hours to sleep for\n          default: 0\n        days:\n          type: integer\n          format: uint16\n          minimum: 0\n          maximum: 30\n          description: The number of days to sleep for\n          default: 0\n    Tasks.SleepStep:\n      type: object\n      required:\n        - kind_\n        - sleep\n      properties:\n        kind_:\n          type: string\n          enum:\n            - sleep\n          default: sleep\n          readOnly: true\n        sleep:\n          allOf:\n            - $ref: '#/components/schemas/Tasks.SleepFor'\n          description: The duration to sleep for (max 31 days)\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - sleep\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.SwitchStep:\n      type: object\n      required:\n        - kind_\n        - switch\n      properties:\n        kind_:\n          type: string\n          enum:\n            - switch\n          default: switch\n          readOnly: true\n        switch:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tasks.CaseThen'\n          minItems: 1\n          description: The cond tree\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - switch\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.SwitchStepUpdateItem:\n      type: object\n      required:\n        - switch\n      properties:\n        switch:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tasks.CaseThenUpdateItem'\n          minItems: 1\n          description: The cond tree\n      allOf:\n        - type: object\n          properties:\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n            kind_:\n              type: string\n              description: Discriminator property for BaseWorkflowStep.\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.Task:\n      type: object\n      required:\n        - name\n        - description\n        - main\n        - input_schema\n        - tools\n        - inherit_tools\n        - id\n        - created_at\n        - updated_at\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: The name of the task.\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: The canonical name of the task.\n        description:\n          type: string\n          description: The description of the task.\n          default: ''\n        main:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Tasks.EvaluateStep'\n              - $ref: '#/components/schemas/Tasks.ToolCallStep'\n              - $ref: '#/components/schemas/Tasks.PromptStep'\n              - $ref: '#/components/schemas/Tasks.GetStep'\n              - $ref: '#/components/schemas/Tasks.SetStep'\n              - $ref: '#/components/schemas/Tasks.LogStep'\n              - $ref: '#/components/schemas/Tasks.YieldStep'\n              - $ref: '#/components/schemas/Tasks.ReturnStep'\n              - $ref: '#/components/schemas/Tasks.SleepStep'\n              - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n              - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n              - $ref: '#/components/schemas/Tasks.IfElseWorkflowStep'\n              - $ref: '#/components/schemas/Tasks.SwitchStep'\n              - $ref: '#/components/schemas/Tasks.ForeachStep'\n              - $ref: '#/components/schemas/Tasks.ParallelStep'\n              - type: object\n                required:\n                  - kind_\n                  - over\n                  - map\n                properties:\n                  kind_:\n                    type: string\n                    enum:\n                      - map_reduce\n                    default: map_reduce\n                    readOnly: true\n                  over:\n                    allOf:\n                      - $ref: '#/components/schemas/Common.PyExpression'\n                    description: The variable to iterate over\n                  map:\n                    anyOf:\n                      - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                      - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                      - $ref: '#/components/schemas/Tasks.PromptStep'\n                      - $ref: '#/components/schemas/Tasks.GetStep'\n                      - $ref: '#/components/schemas/Tasks.SetStep'\n                      - $ref: '#/components/schemas/Tasks.LogStep'\n                      - $ref: '#/components/schemas/Tasks.YieldStep'\n                    description: The steps to run for each iteration\n                  reduce:\n                    allOf:\n                      - $ref: '#/components/schemas/Common.PyExpression'\n                    description: |-\n                      The expression to reduce the results.\n                      If not provided, the results are collected and returned as a list.\n                      A special parameter named `results` is the accumulator and `_` is the current value.\n                  initial:\n                    description: The initial value of the reduce expression\n                    default: []\n                  parallelism:\n                    type: integer\n                    format: uint16\n                    minimum: 1\n                    maximum: 100\n                    description: Whether to run the reduce expression in parallel and how many items to run in each batch\n                allOf:\n                  - type: object\n                    required:\n                      - kind_\n                    properties:\n                      kind_:\n                        type: string\n                        enum:\n                          - map_reduce\n                        description: The kind of step\n                        readOnly: true\n                      label:\n                        allOf:\n                          - $ref: '#/components/schemas/Common.stepLabel'\n                        description: The label of this step for referencing it from other steps\n                    discriminator:\n                      propertyName: kind_\n          minItems: 1\n          description: The entrypoint of the task.\n        input_schema:\n          type: object\n          additionalProperties: {}\n          nullable: true\n          description: The schema for the input to the task. `null` means all inputs are valid.\n          default: null\n        tools:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tasks.TaskTool'\n          description: Tools defined specifically for this task not included in the Agent itself.\n          default: []\n        inherit_tools:\n          type: boolean\n          description: Whether to inherit tools from the parent agent or not. Defaults to false.\n          default: false\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n      additionalProperties:\n        type: array\n        items:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStep'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.IfElseWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.SwitchStep'\n            - $ref: '#/components/schemas/Tasks.ForeachStep'\n            - $ref: '#/components/schemas/Tasks.ParallelStep'\n            - type: object\n              required:\n                - kind_\n                - over\n                - map\n              properties:\n                kind_:\n                  type: string\n                  enum:\n                    - map_reduce\n                  default: map_reduce\n                  readOnly: true\n                over:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: The variable to iterate over\n                map:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                    - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                    - $ref: '#/components/schemas/Tasks.PromptStep'\n                    - $ref: '#/components/schemas/Tasks.GetStep'\n                    - $ref: '#/components/schemas/Tasks.SetStep'\n                    - $ref: '#/components/schemas/Tasks.LogStep'\n                    - $ref: '#/components/schemas/Tasks.YieldStep'\n                  description: The steps to run for each iteration\n                reduce:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: |-\n                    The expression to reduce the results.\n                    If not provided, the results are collected and returned as a list.\n                    A special parameter named `results` is the accumulator and `_` is the current value.\n                initial:\n                  description: The initial value of the reduce expression\n                  default: []\n                parallelism:\n                  type: integer\n                  format: uint16\n                  minimum: 1\n                  maximum: 100\n                  description: Whether to run the reduce expression in parallel and how many items to run in each batch\n              allOf:\n                - type: object\n                  required:\n                    - kind_\n                  properties:\n                    kind_:\n                      type: string\n                      enum:\n                        - map_reduce\n                      description: The kind of step\n                      readOnly: true\n                    label:\n                      allOf:\n                        - $ref: '#/components/schemas/Common.stepLabel'\n                      description: The label of this step for referencing it from other steps\n                  discriminator:\n                    propertyName: kind_\n      description: Object describing a Task\n    Tasks.TaskTool:\n      type: object\n      properties:\n        inherited:\n          type: boolean\n          description: 'Read-only: Whether the tool was inherited or not. Only applies within tasks.'\n          default: false\n          readOnly: true\n      allOf:\n        - $ref: '#/components/schemas/Tools.CreateToolRequest'\n    Tasks.ToolCallStep:\n      type: object\n      required:\n        - kind_\n        - tool\n        - arguments\n      properties:\n        kind_:\n          type: string\n          enum:\n            - tool_call\n          default: tool_call\n          readOnly: true\n        tool:\n          allOf:\n            - $ref: '#/components/schemas/Common.validPythonIdentifier'\n          description: The tool to run\n        arguments:\n          anyOf:\n            - type: object\n              additionalProperties: {}\n            - type: string\n              enum:\n                - _\n          description: The input parameters for the tool (defaults to last step output)\n          default: _\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - tool_call\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.ToolRef:\n      type: object\n      required:\n        - ref\n      properties:\n        ref:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.ToolRefById'\n            - $ref: '#/components/schemas/Tasks.ToolRefByName'\n      description: Reference to a tool\n    Tasks.ToolRefById:\n      type: object\n      properties:\n        id:\n          type: string\n      description: Reference to a tool by id\n    Tasks.ToolRefByName:\n      type: object\n      properties:\n        name:\n          $ref: '#/components/schemas/Common.validPythonIdentifier'\n      description: Reference to a tool by name\n    Tasks.ToolRefUpdateItem:\n      type: object\n      description: Reference to a tool\n    Tasks.UpdateTaskRequest:\n      type: object\n      required:\n        - name\n        - description\n        - main\n        - input_schema\n        - tools\n        - inherit_tools\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.displayName'\n          description: The name of the task.\n        canonical_name:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: The canonical name of the task.\n        description:\n          type: string\n          description: The description of the task.\n          default: ''\n        main:\n          type: array\n          items:\n            anyOf:\n              - $ref: '#/components/schemas/Tasks.EvaluateStep'\n              - $ref: '#/components/schemas/Tasks.ToolCallStep'\n              - $ref: '#/components/schemas/Tasks.PromptStep'\n              - $ref: '#/components/schemas/Tasks.GetStep'\n              - $ref: '#/components/schemas/Tasks.SetStep'\n              - $ref: '#/components/schemas/Tasks.LogStep'\n              - $ref: '#/components/schemas/Tasks.YieldStep'\n              - $ref: '#/components/schemas/Tasks.ReturnStep'\n              - $ref: '#/components/schemas/Tasks.SleepStep'\n              - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n              - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n              - $ref: '#/components/schemas/Tasks.IfElseWorkflowStep'\n              - $ref: '#/components/schemas/Tasks.SwitchStep'\n              - $ref: '#/components/schemas/Tasks.ForeachStep'\n              - $ref: '#/components/schemas/Tasks.ParallelStep'\n              - type: object\n                required:\n                  - kind_\n                  - over\n                  - map\n                properties:\n                  kind_:\n                    type: string\n                    enum:\n                      - map_reduce\n                    default: map_reduce\n                    readOnly: true\n                  over:\n                    allOf:\n                      - $ref: '#/components/schemas/Common.PyExpression'\n                    description: The variable to iterate over\n                  map:\n                    anyOf:\n                      - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                      - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                      - $ref: '#/components/schemas/Tasks.PromptStep'\n                      - $ref: '#/components/schemas/Tasks.GetStep'\n                      - $ref: '#/components/schemas/Tasks.SetStep'\n                      - $ref: '#/components/schemas/Tasks.LogStep'\n                      - $ref: '#/components/schemas/Tasks.YieldStep'\n                    description: The steps to run for each iteration\n                  reduce:\n                    allOf:\n                      - $ref: '#/components/schemas/Common.PyExpression'\n                    description: |-\n                      The expression to reduce the results.\n                      If not provided, the results are collected and returned as a list.\n                      A special parameter named `results` is the accumulator and `_` is the current value.\n                  initial:\n                    description: The initial value of the reduce expression\n                    default: []\n                  parallelism:\n                    type: integer\n                    format: uint16\n                    minimum: 1\n                    maximum: 100\n                    description: Whether to run the reduce expression in parallel and how many items to run in each batch\n                allOf:\n                  - type: object\n                    required:\n                      - kind_\n                    properties:\n                      kind_:\n                        type: string\n                        enum:\n                          - map_reduce\n                        description: The kind of step\n                        readOnly: true\n                      label:\n                        allOf:\n                          - $ref: '#/components/schemas/Common.stepLabel'\n                        description: The label of this step for referencing it from other steps\n                    discriminator:\n                      propertyName: kind_\n          minItems: 1\n          description: The entrypoint of the task.\n        input_schema:\n          type: object\n          additionalProperties: {}\n          nullable: true\n          description: The schema for the input to the task. `null` means all inputs are valid.\n          default: null\n        tools:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tasks.TaskTool'\n          description: Tools defined specifically for this task not included in the Agent itself.\n          default: []\n        inherit_tools:\n          type: boolean\n          description: Whether to inherit tools from the parent agent or not. Defaults to false.\n          default: false\n        metadata:\n          type: object\n          additionalProperties: {}\n      additionalProperties:\n        type: array\n        items:\n          anyOf:\n            - $ref: '#/components/schemas/Tasks.EvaluateStep'\n            - $ref: '#/components/schemas/Tasks.ToolCallStep'\n            - $ref: '#/components/schemas/Tasks.PromptStep'\n            - $ref: '#/components/schemas/Tasks.GetStep'\n            - $ref: '#/components/schemas/Tasks.SetStep'\n            - $ref: '#/components/schemas/Tasks.LogStep'\n            - $ref: '#/components/schemas/Tasks.YieldStep'\n            - $ref: '#/components/schemas/Tasks.ReturnStep'\n            - $ref: '#/components/schemas/Tasks.SleepStep'\n            - $ref: '#/components/schemas/Tasks.ErrorWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.WaitForInputStep'\n            - $ref: '#/components/schemas/Tasks.IfElseWorkflowStep'\n            - $ref: '#/components/schemas/Tasks.SwitchStep'\n            - $ref: '#/components/schemas/Tasks.ForeachStep'\n            - $ref: '#/components/schemas/Tasks.ParallelStep'\n            - type: object\n              required:\n                - kind_\n                - over\n                - map\n              properties:\n                kind_:\n                  type: string\n                  enum:\n                    - map_reduce\n                  default: map_reduce\n                  readOnly: true\n                over:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: The variable to iterate over\n                map:\n                  anyOf:\n                    - $ref: '#/components/schemas/Tasks.EvaluateStep'\n                    - $ref: '#/components/schemas/Tasks.ToolCallStep'\n                    - $ref: '#/components/schemas/Tasks.PromptStep'\n                    - $ref: '#/components/schemas/Tasks.GetStep'\n                    - $ref: '#/components/schemas/Tasks.SetStep'\n                    - $ref: '#/components/schemas/Tasks.LogStep'\n                    - $ref: '#/components/schemas/Tasks.YieldStep'\n                  description: The steps to run for each iteration\n                reduce:\n                  allOf:\n                    - $ref: '#/components/schemas/Common.PyExpression'\n                  description: |-\n                    The expression to reduce the results.\n                    If not provided, the results are collected and returned as a list.\n                    A special parameter named `results` is the accumulator and `_` is the current value.\n                initial:\n                  description: The initial value of the reduce expression\n                  default: []\n                parallelism:\n                  type: integer\n                  format: uint16\n                  minimum: 1\n                  maximum: 100\n                  description: Whether to run the reduce expression in parallel and how many items to run in each batch\n              allOf:\n                - type: object\n                  required:\n                    - kind_\n                  properties:\n                    kind_:\n                      type: string\n                      enum:\n                        - map_reduce\n                      description: The kind of step\n                      readOnly: true\n                    label:\n                      allOf:\n                        - $ref: '#/components/schemas/Common.stepLabel'\n                      description: The label of this step for referencing it from other steps\n                  discriminator:\n                    propertyName: kind_\n      description: Payload for updating a task\n    Tasks.WaitForInputInfo:\n      type: object\n      required:\n        - info\n      properties:\n        info:\n          type: object\n          additionalProperties:\n            anyOf:\n              - $ref: '#/components/schemas/Common.PyExpression'\n              - type: array\n                items:\n                  $ref: '#/components/schemas/Common.PyExpression'\n              - type: object\n                additionalProperties:\n                  $ref: '#/components/schemas/Common.PyExpression'\n              - type: array\n                items:\n                  type: object\n                  additionalProperties:\n                    $ref: '#/components/schemas/Common.PyExpression'\n          description: Any additional info or data\n    Tasks.WaitForInputStep:\n      type: object\n      required:\n        - kind_\n        - wait_for_input\n      properties:\n        kind_:\n          type: string\n          enum:\n            - wait_for_input\n          default: wait_for_input\n          readOnly: true\n        wait_for_input:\n          allOf:\n            - $ref: '#/components/schemas/Tasks.WaitForInputInfo'\n          description: Any additional info or data\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - wait_for_input\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tasks.YieldStep:\n      type: object\n      required:\n        - kind_\n        - workflow\n        - arguments\n      properties:\n        kind_:\n          type: string\n          enum:\n            - yield\n          default: yield\n          readOnly: true\n        workflow:\n          type: string\n          description: |-\n            The subworkflow to run.\n            VALIDATION: Should resolve to a defined subworkflow.\n        arguments:\n          anyOf:\n            - type: object\n              additionalProperties:\n                anyOf:\n                  - $ref: '#/components/schemas/Common.PyExpression'\n                  - type: array\n                    items:\n                      $ref: '#/components/schemas/Common.PyExpression'\n                  - type: object\n                    additionalProperties:\n                      $ref: '#/components/schemas/Common.PyExpression'\n                  - type: array\n                    items:\n                      type: object\n                      additionalProperties:\n                        $ref: '#/components/schemas/Common.PyExpression'\n            - type: string\n              enum:\n                - _\n          description: The input parameters for the subworkflow (defaults to last step output)\n          default: _\n      allOf:\n        - type: object\n          required:\n            - kind_\n          properties:\n            kind_:\n              type: string\n              enum:\n                - yield\n              description: The kind of step\n              readOnly: true\n            label:\n              allOf:\n                - $ref: '#/components/schemas/Common.stepLabel'\n              description: The label of this step for referencing it from other steps\n          discriminator:\n            propertyName: kind_\n            mapping: {}\n    Tools.AlgoliaIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - algolia\n          description: The provider must be \"algolia\"\n          default: algolia\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.AlgoliaSetup'\n          description: The setup parameters for Algolia\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.AlgoliaSearchArguments'\n          description: The arguments for Algolia\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Algolia integration definition\n    Tools.AlgoliaIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - algolia\n          description: The provider must be \"algolia\"\n          default: algolia\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.AlgoliaSetupUpdate'\n          description: The setup parameters for Algolia\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.AlgoliaSearchArgumentsUpdate'\n          description: The arguments for Algolia\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Algolia integration definition\n    Tools.AlgoliaSearchArguments:\n      type: object\n      required:\n        - index_name\n        - query\n      properties:\n        index_name:\n          type: string\n          description: The index name to search\n        query:\n          type: string\n          description: The query to search for\n        attributes_to_retrieve:\n          type: array\n          items:\n            type: string\n          description: Optional attributes to retrieve\n        hits_per_page:\n          type: integer\n          format: int32\n          minimum: 1\n          maximum: 1000\n          description: Maximum number of hits to return\n          default: 10\n      description: Arguments for Algolia Search\n    Tools.AlgoliaSearchArgumentsUpdate:\n      type: object\n      properties:\n        index_name:\n          type: string\n          description: The index name to search\n        query:\n          type: string\n          description: The query to search for\n        attributes_to_retrieve:\n          type: array\n          items:\n            type: string\n          description: Optional attributes to retrieve\n        hits_per_page:\n          type: integer\n          format: int32\n          minimum: 1\n          maximum: 1000\n          description: Maximum number of hits to return\n          default: 10\n      description: Arguments for Algolia Search\n    Tools.AlgoliaSetup:\n      type: object\n      required:\n        - algolia_application_id\n        - algolia_api_key\n      properties:\n        algolia_application_id:\n          type: string\n          description: The Algolia Application ID\n        algolia_api_key:\n          type: string\n          description: The Algolia API Key\n      description: Integration definition for Algolia\n    Tools.AlgoliaSetupUpdate:\n      type: object\n      properties:\n        algolia_application_id:\n          type: string\n          description: The Algolia Application ID\n        algolia_api_key:\n          type: string\n          description: The Algolia API Key\n      description: Integration definition for Algolia\n    Tools.ApiCallDef:\n      type: object\n      required:\n        - method\n        - url\n      properties:\n        method:\n          type: string\n          enum:\n            - GET\n            - POST\n            - PUT\n            - DELETE\n            - PATCH\n            - HEAD\n            - OPTIONS\n            - CONNECT\n            - TRACE\n          description: The HTTP method to use\n        url:\n          type: string\n          format: uri\n          description: The URL to call\n        schema:\n          type: object\n          additionalProperties: {}\n          description: The schema of the response\n        headers:\n          type: object\n          additionalProperties:\n            type: string\n          description: The headers to send with the request\n        secrets:\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/Tools.SecretRef'\n          description: Secret references to use in templates (available only at setup time, not during execution)\n        content:\n          type: string\n          description: The content as base64 to send with the request\n        data:\n          type: object\n          additionalProperties: {}\n          description: The data to send as form data\n        files:\n          type: object\n          additionalProperties: {}\n          description: The data to send as files data\n        json:\n          type: object\n          additionalProperties: {}\n          description: JSON body to send with the request\n        cookies:\n          type: object\n          additionalProperties:\n            type: string\n          description: Cookies\n        params:\n          anyOf:\n            - type: string\n            - type: object\n              additionalProperties: {}\n          description: The parameters to send with the request\n        params_schema:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ParameterSchema'\n          description: The schema of the parameters\n        follow_redirects:\n          type: boolean\n          description: Follow redirects\n        timeout:\n          type: integer\n          format: uint8\n          description: The timeout for the request\n        include_response_content:\n          type: boolean\n          description: Whether to include the content in the response\n          default: true\n      description: API call definition\n    Tools.ApiCallDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - GET\n            - POST\n            - PUT\n            - DELETE\n            - PATCH\n            - HEAD\n            - OPTIONS\n            - CONNECT\n            - TRACE\n          description: The HTTP method to use\n        url:\n          type: string\n          format: uri\n          description: The URL to call\n        schema:\n          type: object\n          additionalProperties: {}\n          description: The schema of the response\n        headers:\n          type: object\n          additionalProperties:\n            type: string\n          description: The headers to send with the request\n        secrets:\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/Tools.SecretRefUpdate'\n          description: Secret references to use in templates (available only at setup time, not during execution)\n        content:\n          type: string\n          description: The content as base64 to send with the request\n        data:\n          type: object\n          additionalProperties: {}\n          description: The data to send as form data\n        files:\n          type: object\n          additionalProperties: {}\n          description: The data to send as files data\n        json:\n          type: object\n          additionalProperties: {}\n          description: JSON body to send with the request\n        cookies:\n          type: object\n          additionalProperties:\n            type: string\n          description: Cookies\n        params:\n          anyOf:\n            - type: string\n            - type: object\n              additionalProperties: {}\n          description: The parameters to send with the request\n        params_schema:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ParameterSchemaUpdate'\n          description: The schema of the parameters\n        follow_redirects:\n          type: boolean\n          description: Follow redirects\n        timeout:\n          type: integer\n          format: uint8\n          description: The timeout for the request\n        include_response_content:\n          type: boolean\n          description: Whether to include the content in the response\n          default: true\n      description: API call definition\n    Tools.ArxivIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - arxiv\n          description: The provider must be \"arxiv\"\n          default: arxiv\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          nullable: true\n          description: The setup parameters for Arxiv\n          default: null\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ArxivSearchArguments'\n          description: The arguments for Arxiv Search\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Arxiv integration definition\n    Tools.ArxivIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - arxiv\n          description: The provider must be \"arxiv\"\n          default: arxiv\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          nullable: true\n          description: The setup parameters for Arxiv\n          default: null\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ArxivSearchArgumentsUpdate'\n          description: The arguments for Arxiv Search\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Arxiv integration definition\n    Tools.ArxivSearchArguments:\n      type: object\n      required:\n        - query\n      properties:\n        query:\n          type: string\n          description: The search query for searching with Arxiv\n        id_list:\n          type: array\n          items:\n            type: string\n          description: The list of Arxiv IDs to search with\n        max_results:\n          type: integer\n          format: int16\n          minimum: 1\n          maximum: 300000\n          description: The maximum number of results to return\n          default: 5\n        download_pdf:\n          type: boolean\n          description: The download the pdf of the results\n          default: false\n        sort_by:\n          type: string\n          enum:\n            - relevance\n            - lastUpdatedDate\n            - submittedDate\n          description: The sort criterion for the results\n          default: relevance\n        sort_order:\n          type: string\n          enum:\n            - ascending\n            - descending\n          description: The sort order for the results\n          default: descending\n      description: Arguments for Arxiv Search\n    Tools.ArxivSearchArgumentsUpdate:\n      type: object\n      properties:\n        query:\n          type: string\n          description: The search query for searching with Arxiv\n        id_list:\n          type: array\n          items:\n            type: string\n          description: The list of Arxiv IDs to search with\n        max_results:\n          type: integer\n          format: int16\n          minimum: 1\n          maximum: 300000\n          description: The maximum number of results to return\n          default: 5\n        download_pdf:\n          type: boolean\n          description: The download the pdf of the results\n          default: false\n        sort_by:\n          type: string\n          enum:\n            - relevance\n            - lastUpdatedDate\n            - submittedDate\n          description: The sort criterion for the results\n          default: relevance\n        sort_order:\n          type: string\n          enum:\n            - ascending\n            - descending\n          description: The sort order for the results\n          default: descending\n      description: Arguments for Arxiv Search\n    Tools.BaseBrowserbaseIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - browserbase\n          default: browserbase\n        setup:\n          $ref: '#/components/schemas/Tools.BrowserbaseSetup'\n        method:\n          type: string\n          enum:\n            - get_live_urls\n            - list_sessions\n            - create_session\n            - get_session\n            - complete_session\n            - get_connect_url\n            - install_extension_from_github\n            - create_context\n            - get_session_downloads\n            - get_logs\n            - get_recordings\n        arguments: {}\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: The base definition for a browserbase integration\n    Tools.BaseBrowserbaseIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - browserbase\n          default: browserbase\n        setup:\n          $ref: '#/components/schemas/Tools.BrowserbaseSetupUpdate'\n        method:\n          type: string\n          enum:\n            - get_live_urls\n            - list_sessions\n            - create_session\n            - get_session\n            - complete_session\n            - get_connect_url\n            - install_extension_from_github\n            - create_context\n            - get_session_downloads\n            - get_logs\n            - get_recordings\n        arguments: {}\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: The base definition for a browserbase integration\n    Tools.BaseChosenToolCall:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ToolType'\n          description: Whether this tool is a `function`, `api_call`, `system` etc. (Only `function` tool supported right now)\n        function:\n          $ref: '#/components/schemas/Tools.FunctionCallOption'\n        integration: {}\n        system: {}\n        api_call: {}\n        computer_20241022:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ChosenComputer20241022'\n          description: (Alpha) Anthropic new tools\n        text_editor_20241022:\n          $ref: '#/components/schemas/Tools.ChosenTextEditor20241022'\n        bash_20241022:\n          $ref: '#/components/schemas/Tools.ChosenBash20241022'\n        id:\n          type: string\n          readOnly: true\n      description: The response tool value generated by the model\n    Tools.BaseCloudinaryIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - cloudinary\n          default: cloudinary\n        setup:\n          $ref: '#/components/schemas/Tools.CloudinarySetup'\n        method:\n          type: string\n          enum:\n            - media_upload\n            - media_edit\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Base Cloudinary integration definition\n    Tools.BaseCloudinaryIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - cloudinary\n          default: cloudinary\n        setup:\n          $ref: '#/components/schemas/Tools.CloudinarySetupUpdate'\n        method:\n          type: string\n          enum:\n            - media_upload\n            - media_edit\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Base Cloudinary integration definition\n    Tools.BaseIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - dummy\n            - weather\n            - wikipedia\n            - spider\n            - brave\n            - browserbase\n            - email\n            - mailgun\n            - remote_browser\n            - llama_parse\n            - ffmpeg\n            - cloudinary\n            - arxiv\n            - unstructured\n            - algolia\n            - mcp\n            - google_sheets\n          description: The provider of the integration\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          description: The setup parameters the integration accepts\n        arguments:\n          description: The arguments to pre-apply to the integration call\n      discriminator:\n        propertyName: provider\n        mapping:\n          brave: '#/components/schemas/Tools.BraveIntegrationDef'\n          email: '#/components/schemas/Tools.EmailIntegrationDef'\n          spider: '#/components/schemas/Tools.SpiderIntegrationDef'\n          wikipedia: '#/components/schemas/Tools.WikipediaIntegrationDef'\n          weather: '#/components/schemas/Tools.WeatherIntegrationDef'\n          mailgun: '#/components/schemas/Tools.MailgunIntegrationDef'\n          browserbase: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef'\n          remote_browser: '#/components/schemas/Tools.RemoteBrowserIntegrationDef'\n          llama_parse: '#/components/schemas/Tools.LlamaParseIntegrationDef'\n          ffmpeg: '#/components/schemas/Tools.FfmpegIntegrationDef'\n          cloudinary: '#/components/schemas/Tools.BaseCloudinaryIntegrationDef'\n          arxiv: '#/components/schemas/Tools.ArxivIntegrationDef'\n          unstructured: '#/components/schemas/Tools.UnstructuredIntegrationDef'\n          algolia: '#/components/schemas/Tools.AlgoliaIntegrationDef'\n          mcp: '#/components/schemas/Tools.McpIntegrationDef'\n          google_sheets: '#/components/schemas/Tools.GoogleSheetsIntegrationDef'\n      description: Integration definition\n    Tools.BaseIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - dummy\n            - weather\n            - wikipedia\n            - spider\n            - brave\n            - browserbase\n            - email\n            - mailgun\n            - remote_browser\n            - llama_parse\n            - ffmpeg\n            - cloudinary\n            - arxiv\n            - unstructured\n            - algolia\n            - mcp\n            - google_sheets\n          description: The provider of the integration\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          description: The setup parameters the integration accepts\n        arguments:\n          description: The arguments to pre-apply to the integration call\n      discriminator:\n        propertyName: provider\n        mapping:\n          brave: '#/components/schemas/Tools.BraveIntegrationDefUpdate'\n          email: '#/components/schemas/Tools.EmailIntegrationDefUpdate'\n          spider: '#/components/schemas/Tools.SpiderIntegrationDefUpdate'\n          wikipedia: '#/components/schemas/Tools.WikipediaIntegrationDefUpdate'\n          weather: '#/components/schemas/Tools.WeatherIntegrationDefUpdate'\n          mailgun: '#/components/schemas/Tools.MailgunIntegrationDefUpdate'\n          browserbase: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate'\n          remote_browser: '#/components/schemas/Tools.RemoteBrowserIntegrationDefUpdate'\n          llama_parse: '#/components/schemas/Tools.LlamaParseIntegrationDefUpdate'\n          ffmpeg: '#/components/schemas/Tools.FfmpegIntegrationDefUpdate'\n          cloudinary: '#/components/schemas/Tools.BaseCloudinaryIntegrationDefUpdate'\n          arxiv: '#/components/schemas/Tools.ArxivIntegrationDefUpdate'\n          unstructured: '#/components/schemas/Tools.UnstructuredIntegrationDefUpdate'\n          algolia: '#/components/schemas/Tools.AlgoliaIntegrationDefUpdate'\n          mcp: '#/components/schemas/Tools.McpIntegrationDefUpdate'\n          google_sheets: '#/components/schemas/Tools.GoogleSheetsIntegrationDefUpdate'\n      description: Integration definition\n    Tools.Bash20241022Def:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - bash_20241022\n          default: bash_20241022\n        name:\n          type: string\n          default: bash\n    Tools.Bash20241022DefUpdate:\n      type: object\n      properties:\n        type:\n          type: string\n          enum:\n            - bash_20241022\n          default: bash_20241022\n        name:\n          type: string\n          default: bash\n    Tools.BraveIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - brave\n          description: The provider must be \"brave\"\n          default: brave\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BraveSearchSetup'\n          description: The setup parameters for Brave\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BraveSearchArguments'\n          description: The arguments for Brave Search\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Brave integration definition\n    Tools.BraveIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - brave\n          description: The provider must be \"brave\"\n          default: brave\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BraveSearchSetupUpdate'\n          description: The setup parameters for Brave\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BraveSearchArgumentsUpdate'\n          description: The arguments for Brave Search\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Brave integration definition\n    Tools.BraveSearchArguments:\n      type: object\n      required:\n        - query\n      properties:\n        query:\n          type: string\n          description: The search query for searching with Brave\n      description: Arguments for Brave Search\n    Tools.BraveSearchArgumentsUpdate:\n      type: object\n      properties:\n        query:\n          type: string\n          description: The search query for searching with Brave\n      description: Arguments for Brave Search\n    Tools.BraveSearchSetup:\n      type: object\n      required:\n        - brave_api_key\n      properties:\n        brave_api_key:\n          type: string\n          description: The api key for Brave Search\n      description: Integration definition for Brave Search\n    Tools.BraveSearchSetupUpdate:\n      type: object\n      properties:\n        brave_api_key:\n          type: string\n          description: The api key for Brave Search\n      description: Integration definition for Brave Search\n    Tools.BrowserbaseCompleteSessionArguments:\n      type: object\n      required:\n        - id\n      properties:\n        id:\n          type: string\n        status:\n          type: string\n          enum:\n            - REQUEST_RELEASE\n          default: REQUEST_RELEASE\n    Tools.BrowserbaseCompleteSessionArgumentsUpdate:\n      type: object\n      properties:\n        id:\n          type: string\n        status:\n          type: string\n          enum:\n            - REQUEST_RELEASE\n          default: REQUEST_RELEASE\n    Tools.BrowserbaseCompleteSessionIntegrationDef:\n      type: object\n      required:\n        - method\n      properties:\n        method:\n          type: string\n          enum:\n            - complete_session\n          default: complete_session\n        arguments:\n          $ref: '#/components/schemas/Tools.BrowserbaseCompleteSessionArguments'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef'\n      description: browserbase complete session integration definition\n    Tools.BrowserbaseCompleteSessionIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - complete_session\n          default: complete_session\n        arguments:\n          $ref: '#/components/schemas/Tools.BrowserbaseCompleteSessionArgumentsUpdate'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate'\n      description: browserbase complete session integration definition\n    Tools.BrowserbaseContextArguments:\n      type: object\n      required:\n        - projectId\n      properties:\n        projectId:\n          type: string\n          description: The Project ID. Can be found in Settings.\n    Tools.BrowserbaseContextArgumentsUpdate:\n      type: object\n      properties:\n        projectId:\n          type: string\n          description: The Project ID. Can be found in Settings.\n    Tools.BrowserbaseContextIntegrationDef:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - create_context\n          description: The specific method of the integration to call\n          default: create_context\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BrowserbaseContextArguments'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef'\n      description: browserbase context provider\n    Tools.BrowserbaseContextIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - create_context\n          description: The specific method of the integration to call\n          default: create_context\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BrowserbaseContextArgumentsUpdate'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate'\n      description: browserbase context provider\n    Tools.BrowserbaseCreateSessionArguments:\n      type: object\n      properties:\n        projectId:\n          type: string\n          description: The Project ID. Can be found in Settings.\n        extensionId:\n          type: string\n          description: The installed Extension ID. See Install Extension from GitHub.\n        browserSettings:\n          type: object\n          additionalProperties: {}\n          description: Browser settings\n          default: {}\n        timeout:\n          type: integer\n          format: uint16\n          description: Duration in seconds after which the session will automatically end. Defaults to the Project's defaultTimeout.\n          default: 3600\n        keepAlive:\n          type: boolean\n          description: Set to true to keep the session alive even after disconnections. This is available on the Startup plan only.\n          default: false\n        proxies:\n          anyOf:\n            - type: boolean\n            - type: array\n              items:\n                type: object\n                additionalProperties: {}\n          description: Proxy configuration. Can be true for default proxy, or an array of proxy configurations.\n          default: false\n    Tools.BrowserbaseCreateSessionIntegrationDef:\n      type: object\n      required:\n        - method\n      properties:\n        method:\n          type: string\n          enum:\n            - create_session\n          default: create_session\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionArguments'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef'\n      description: browserbase create session integration definition\n    Tools.BrowserbaseCreateSessionIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - create_session\n          default: create_session\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionArguments'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate'\n      description: browserbase create session integration definition\n    Tools.BrowserbaseExtensionArguments:\n      type: object\n      required:\n        - repositoryName\n      properties:\n        repositoryName:\n          type: string\n          description: The GitHub repository name.\n        ref:\n          type: string\n          description: Ref to install from a branch or tag.\n    Tools.BrowserbaseExtensionArgumentsUpdate:\n      type: object\n      properties:\n        repositoryName:\n          type: string\n          description: The GitHub repository name.\n        ref:\n          type: string\n          description: Ref to install from a branch or tag.\n    Tools.BrowserbaseExtensionIntegrationDef:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - install_extension_from_github\n          description: The specific method of the integration to call\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BrowserbaseExtensionArguments'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef'\n      description: browserbase extension provider\n    Tools.BrowserbaseExtensionIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - install_extension_from_github\n          description: The specific method of the integration to call\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BrowserbaseExtensionArgumentsUpdate'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate'\n      description: browserbase extension provider\n    Tools.BrowserbaseGetSessionArguments:\n      type: object\n      required:\n        - id\n      properties:\n        id:\n          type: string\n    Tools.BrowserbaseGetSessionArgumentsUpdate:\n      type: object\n      properties:\n        id:\n          type: string\n    Tools.BrowserbaseGetSessionIntegrationDef:\n      type: object\n      required:\n        - method\n      properties:\n        method:\n          type: string\n          enum:\n            - get_session\n          default: get_session\n        arguments:\n          $ref: '#/components/schemas/Tools.BrowserbaseGetSessionArguments'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef'\n      description: browserbase get session integration definition\n    Tools.BrowserbaseGetSessionIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - get_session\n          default: get_session\n        arguments:\n          $ref: '#/components/schemas/Tools.BrowserbaseGetSessionArgumentsUpdate'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate'\n      description: browserbase get session integration definition\n    Tools.BrowserbaseGetSessionLiveUrlsArguments:\n      type: object\n      required:\n        - id\n      properties:\n        id:\n          type: string\n    Tools.BrowserbaseGetSessionLiveUrlsArgumentsUpdate:\n      type: object\n      properties:\n        id:\n          type: string\n    Tools.BrowserbaseGetSessionLiveUrlsIntegrationDef:\n      type: object\n      required:\n        - method\n      properties:\n        method:\n          type: string\n          enum:\n            - get_live_urls\n          default: get_live_urls\n        arguments:\n          $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsArguments'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef'\n      description: browserbase get session live urls integration definition\n    Tools.BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - get_live_urls\n          default: get_live_urls\n        arguments:\n          $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsArgumentsUpdate'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate'\n      description: browserbase get session live urls integration definition\n    Tools.BrowserbaseListSessionsArguments:\n      type: object\n      properties:\n        status:\n          type: string\n          enum:\n            - RUNNING\n            - ERROR\n            - TIMED_OUT\n            - COMPLETED\n          description: 'The status of the sessions to list (Available options: RUNNING, ERROR, TIMED_OUT, COMPLETED)'\n    Tools.BrowserbaseListSessionsIntegrationDef:\n      type: object\n      required:\n        - method\n      properties:\n        method:\n          type: string\n          enum:\n            - list_sessions\n          description: The specific method of the integration to call\n          default: list_sessions\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsArguments'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDef'\n      description: browserbase list sessions integration definition\n    Tools.BrowserbaseListSessionsIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - list_sessions\n          description: The specific method of the integration to call\n          default: list_sessions\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsArguments'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseBrowserbaseIntegrationDefUpdate'\n      description: browserbase list sessions integration definition\n    Tools.BrowserbaseSetup:\n      type: object\n      required:\n        - api_key\n        - project_id\n      properties:\n        api_key:\n          type: string\n          description: API key for the browserbase integration\n        project_id:\n          type: string\n          description: The project ID. Can be found in Settings.\n        api_url:\n          type: string\n          description: The API URL. Defaults to https://www.browserbase.com\n        connect_url:\n          type: string\n          description: The connect URL. Defaults to wss://connect.browserbase.com\n      description: The setup parameters for the browserbase integration\n    Tools.BrowserbaseSetupUpdate:\n      type: object\n      properties:\n        api_key:\n          type: string\n          description: API key for the browserbase integration\n        project_id:\n          type: string\n          description: The project ID. Can be found in Settings.\n        api_url:\n          type: string\n          description: The API URL. Defaults to https://www.browserbase.com\n        connect_url:\n          type: string\n          description: The connect URL. Defaults to wss://connect.browserbase.com\n      description: The setup parameters for the browserbase integration\n    Tools.ChosenBash20241022:\n      type: object\n      properties:\n        command:\n          type: string\n          description: The bash command to run\n        restart:\n          type: boolean\n          description: Whether to restart the tool\n          default: false\n    Tools.ChosenComputer20241022:\n      type: object\n      required:\n        - action\n      properties:\n        action:\n          allOf:\n            - $ref: '#/components/schemas/Tools.Computer20241022Action'\n          description: The action to perform\n        text:\n          type: string\n          description: The text to type\n        coordinate:\n          type: array\n          items:\n            type: integer\n            format: uint16\n          description: The (x, y) pixel coordinate to move the cursor to\n    Tools.ChosenFunctionCall:\n      type: object\n      required:\n        - type\n        - function\n      properties:\n        type:\n          type: string\n          enum:\n            - function\n        function:\n          allOf:\n            - $ref: '#/components/schemas/Tools.FunctionCallOption'\n          description: The function to call\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseChosenToolCall'\n    Tools.ChosenTextEditor20241022:\n      type: object\n      required:\n        - command\n        - path\n      properties:\n        command:\n          type: string\n          enum:\n            - str_replace\n            - insert\n            - view\n            - undo_edit\n          description: The command to run\n        path:\n          type: string\n          description: The path to the file\n        file_text:\n          type: string\n          description: The content of the file to be created\n        insert_line:\n          type: integer\n          format: uint16\n          description: The line to insert the new string after\n        new_str:\n          type: string\n          description: The new string to insert\n        old_str:\n          type: string\n          description: The string in the file to replace\n        view_range:\n          type: array\n          items:\n            type: integer\n            format: uint16\n          description: The line range to view\n    Tools.CloudinaryEditArguments:\n      type: object\n      required:\n        - public_id\n        - transformation\n        - return_base64\n      properties:\n        public_id:\n          type: string\n          description: The file Public ID in Cloudinary\n        transformation:\n          type: array\n          items:\n            type: object\n            additionalProperties: {}\n          description: The transformation to apply to the file\n        return_base64:\n          type: boolean\n          description: Return base64 encoded file\n          default: false\n      description: Arguments for Cloudinary media edit\n    Tools.CloudinaryEditArgumentsUpdate:\n      type: object\n      properties:\n        public_id:\n          type: string\n          description: The file Public ID in Cloudinary\n        transformation:\n          type: array\n          items:\n            type: object\n            additionalProperties: {}\n          description: The transformation to apply to the file\n        return_base64:\n          type: boolean\n          description: Return base64 encoded file\n          default: false\n      description: Arguments for Cloudinary media edit\n    Tools.CloudinaryEditIntegrationDef:\n      type: object\n      required:\n        - method\n      properties:\n        method:\n          type: string\n          enum:\n            - media_edit\n          default: media_edit\n        arguments:\n          $ref: '#/components/schemas/Tools.CloudinaryEditArguments'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseCloudinaryIntegrationDef'\n      description: Cloudinary edit integration definition\n    Tools.CloudinaryEditIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - media_edit\n          default: media_edit\n        arguments:\n          $ref: '#/components/schemas/Tools.CloudinaryEditArgumentsUpdate'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseCloudinaryIntegrationDefUpdate'\n      description: Cloudinary edit integration definition\n    Tools.CloudinarySetup:\n      type: object\n      required:\n        - cloudinary_api_key\n        - cloudinary_api_secret\n        - cloudinary_cloud_name\n      properties:\n        cloudinary_api_key:\n          type: string\n          description: The API key for Cloudinary\n        cloudinary_api_secret:\n          type: string\n          description: The API secret for Cloudinary\n        cloudinary_cloud_name:\n          type: string\n          description: The Cloud name for Cloudinary\n        params:\n          type: object\n          additionalProperties: {}\n          description: Additional parameters for the Cloudinary API\n      description: Setup parameters for Cloudinary integration\n    Tools.CloudinarySetupUpdate:\n      type: object\n      properties:\n        cloudinary_api_key:\n          type: string\n          description: The API key for Cloudinary\n        cloudinary_api_secret:\n          type: string\n          description: The API secret for Cloudinary\n        cloudinary_cloud_name:\n          type: string\n          description: The Cloud name for Cloudinary\n        params:\n          type: object\n          additionalProperties: {}\n          description: Additional parameters for the Cloudinary API\n      description: Setup parameters for Cloudinary integration\n    Tools.CloudinaryUploadArguments:\n      type: object\n      required:\n        - file\n        - return_base64\n      properties:\n        file:\n          type: string\n          description: The URL of the file upload\n        return_base64:\n          type: boolean\n          description: Return base64 encoded file\n          default: false\n        public_id:\n          type: string\n          description: Optional public ID for the uploaded file\n        upload_params:\n          type: object\n          additionalProperties: {}\n          description: Optional upload parameters\n      description: Arguments for Cloudinary media upload\n    Tools.CloudinaryUploadArgumentsUpdate:\n      type: object\n      properties:\n        file:\n          type: string\n          description: The URL of the file upload\n        return_base64:\n          type: boolean\n          description: Return base64 encoded file\n          default: false\n        public_id:\n          type: string\n          description: Optional public ID for the uploaded file\n        upload_params:\n          type: object\n          additionalProperties: {}\n          description: Optional upload parameters\n      description: Arguments for Cloudinary media upload\n    Tools.CloudinaryUploadIntegrationDef:\n      type: object\n      required:\n        - method\n      properties:\n        method:\n          type: string\n          enum:\n            - media_upload\n          default: media_upload\n        arguments:\n          $ref: '#/components/schemas/Tools.CloudinaryUploadArguments'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseCloudinaryIntegrationDef'\n      description: Cloudinary upload integration definition\n    Tools.CloudinaryUploadIntegrationDefUpdate:\n      type: object\n      properties:\n        method:\n          type: string\n          enum:\n            - media_upload\n          default: media_upload\n        arguments:\n          $ref: '#/components/schemas/Tools.CloudinaryUploadArgumentsUpdate'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseCloudinaryIntegrationDefUpdate'\n      description: Cloudinary upload integration definition\n    Tools.Computer20241022Action:\n      type: string\n      enum:\n        - key\n        - type\n        - cursor_position\n        - mouse_move\n        - left_click\n        - right_click\n        - middle_click\n        - double_click\n        - screenshot\n    Tools.Computer20241022Def:\n      type: object\n      required:\n        - type\n        - display_width_px\n        - display_height_px\n      properties:\n        type:\n          type: string\n          enum:\n            - computer_20241022\n          default: computer_20241022\n        name:\n          type: string\n          default: computer\n        display_width_px:\n          type: integer\n          format: uint16\n          minimum: 600\n          description: The display width in pixels\n          default: 1024\n        display_height_px:\n          type: integer\n          format: uint16\n          minimum: 400\n          description: The display height in pixels\n          default: 768\n        display_number:\n          type: integer\n          format: uint16\n          minimum: 1\n          maximum: 10\n          description: The display number to use\n          default: 1\n      description: Anthropic new tools\n    Tools.Computer20241022DefUpdate:\n      type: object\n      properties:\n        type:\n          type: string\n          enum:\n            - computer_20241022\n          default: computer_20241022\n        name:\n          type: string\n          default: computer\n        display_width_px:\n          type: integer\n          format: uint16\n          minimum: 600\n          description: The display width in pixels\n          default: 1024\n        display_height_px:\n          type: integer\n          format: uint16\n          minimum: 400\n          description: The display height in pixels\n          default: 768\n        display_number:\n          type: integer\n          format: uint16\n          minimum: 1\n          maximum: 10\n          description: The display number to use\n          default: 1\n      description: Anthropic new tools\n    Tools.CreateToolRequest:\n      type: object\n      required:\n        - name\n        - type\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.validPythonIdentifier'\n          description: Name of the tool (must be unique for this agent and a valid python identifier string )\n        type:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ToolType'\n          description: Type of the tool\n        description:\n          type: string\n          description: Description of the tool\n        function:\n          allOf:\n            - $ref: '#/components/schemas/Tools.FunctionDef'\n          description: The function to call\n        integration:\n          anyOf:\n            - $ref: '#/components/schemas/Tools.DummyIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BraveIntegrationDef'\n            - $ref: '#/components/schemas/Tools.EmailIntegrationDef'\n            - $ref: '#/components/schemas/Tools.SpiderIntegrationDef'\n            - $ref: '#/components/schemas/Tools.WikipediaIntegrationDef'\n            - $ref: '#/components/schemas/Tools.WeatherIntegrationDef'\n            - $ref: '#/components/schemas/Tools.MailgunIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseContextIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseExtensionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseCompleteSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsIntegrationDef'\n            - $ref: '#/components/schemas/Tools.RemoteBrowserIntegrationDef'\n            - $ref: '#/components/schemas/Tools.LlamaParseIntegrationDef'\n            - $ref: '#/components/schemas/Tools.FfmpegIntegrationDef'\n            - $ref: '#/components/schemas/Tools.CloudinaryUploadIntegrationDef'\n            - $ref: '#/components/schemas/Tools.CloudinaryEditIntegrationDef'\n            - $ref: '#/components/schemas/Tools.ArxivIntegrationDef'\n            - $ref: '#/components/schemas/Tools.UnstructuredIntegrationDef'\n            - $ref: '#/components/schemas/Tools.AlgoliaIntegrationDef'\n            - $ref: '#/components/schemas/Tools.McpIntegrationDef'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsIntegrationDef'\n          description: The integration to call\n        system:\n          allOf:\n            - $ref: '#/components/schemas/Tools.SystemDef'\n          description: The system to call\n        api_call:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ApiCallDef'\n          description: The API call to make\n        computer_20241022:\n          allOf:\n            - $ref: '#/components/schemas/Tools.Computer20241022Def'\n          description: (Alpha) Anthropic new tools\n        text_editor_20241022:\n          $ref: '#/components/schemas/Tools.TextEditor20241022Def'\n        bash_20241022:\n          $ref: '#/components/schemas/Tools.Bash20241022Def'\n      description: Payload for creating a tool\n    Tools.DummyIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - dummy\n          default: dummy\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n    Tools.DummyIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - dummy\n          default: dummy\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n    Tools.EmailArguments:\n      type: object\n      required:\n        - to\n        - from\n        - subject\n        - body\n      properties:\n        to:\n          type: string\n          description: The email address to send the email to\n        from:\n          type: string\n          description: The email address to send the email from\n        subject:\n          type: string\n          description: The subject of the email\n        body:\n          type: string\n          description: The body of the email\n      description: Arguments for Email sending\n    Tools.EmailArgumentsUpdate:\n      type: object\n      properties:\n        to:\n          type: string\n          description: The email address to send the email to\n        from:\n          type: string\n          description: The email address to send the email from\n        subject:\n          type: string\n          description: The subject of the email\n        body:\n          type: string\n          description: The body of the email\n      description: Arguments for Email sending\n    Tools.EmailIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - email\n          description: The provider must be \"email\"\n          default: email\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.EmailSetup'\n          description: The setup parameters for Email\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.EmailArguments'\n          description: The arguments for Email sending\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Email integration definition\n    Tools.EmailIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - email\n          description: The provider must be \"email\"\n          default: email\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.EmailSetupUpdate'\n          description: The setup parameters for Email\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.EmailArgumentsUpdate'\n          description: The arguments for Email sending\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Email integration definition\n    Tools.EmailSetup:\n      type: object\n      required:\n        - host\n        - port\n        - user\n        - password\n      properties:\n        host:\n          type: string\n          description: The host of the email server\n        port:\n          type: integer\n          format: int32\n          description: The port of the email server\n        user:\n          type: string\n          description: The username of the email server\n        password:\n          type: string\n          description: The password of the email server\n      description: Setup parameters for Email integration\n    Tools.EmailSetupUpdate:\n      type: object\n      properties:\n        host:\n          type: string\n          description: The host of the email server\n        port:\n          type: integer\n          format: int32\n          description: The port of the email server\n        user:\n          type: string\n          description: The username of the email server\n        password:\n          type: string\n          description: The password of the email server\n      description: Setup parameters for Email integration\n    Tools.FfmpegIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - ffmpeg\n          description: The provider must be \"ffmpeg\"\n          default: ffmpeg\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          nullable: true\n          description: The setup parameters for Ffmpeg\n          default: null\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.FfmpegSearchArguments'\n          description: The arguments for Ffmpeg Search\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Ffmpeg integration definition\n    Tools.FfmpegIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - ffmpeg\n          description: The provider must be \"ffmpeg\"\n          default: ffmpeg\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          nullable: true\n          description: The setup parameters for Ffmpeg\n          default: null\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.FfmpegSearchArgumentsUpdate'\n          description: The arguments for Ffmpeg Search\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Ffmpeg integration definition\n    Tools.FfmpegSearchArguments:\n      type: object\n      required:\n        - cmd\n      properties:\n        cmd:\n          type: string\n          description: The bash command string\n        file:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: The base64 string of the file\n      description: Arguments for Ffmpeg CMD\n    Tools.FfmpegSearchArgumentsUpdate:\n      type: object\n      properties:\n        cmd:\n          type: string\n          description: The bash command string\n        file:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: The base64 string of the file\n      description: Arguments for Ffmpeg CMD\n    Tools.FunctionCallOption:\n      type: object\n      required:\n        - name\n      properties:\n        name:\n          type: string\n          description: The name of the function\n        arguments:\n          type: string\n          description: The parameters to pass to the function\n    Tools.FunctionDef:\n      type: object\n      properties:\n        name:\n          nullable: true\n          description: 'DO NOT USE: This will be overriden by the tool name. Here only for compatibility reasons.'\n          default: null\n        description:\n          nullable: true\n          description: 'DO NOT USE: This will be overriden by the tool description. Here only for compatibility reasons.'\n          default: null\n        parameters:\n          type: object\n          additionalProperties: {}\n          description: The parameters the function accepts\n      description: Function definition\n    Tools.GoogleSheetsAppendArguments:\n      type: object\n      required:\n        - spreadsheet_id\n        - range\n        - values\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to append to\n        range:\n          type: string\n          description: The A1 notation of the range to start appending from\n        values:\n          type: array\n          items:\n            type: array\n            items: {}\n          description: The values to append (2D array)\n        value_input_option:\n          type: string\n          enum:\n            - RAW\n            - USER_ENTERED\n          description: How the input data should be interpreted\n          default: USER_ENTERED\n        insert_data_option:\n          type: string\n          enum:\n            - OVERWRITE\n            - INSERT_ROWS\n          description: How the input data should be inserted\n          default: INSERT_ROWS\n        include_values_in_response:\n          type: boolean\n          description: Whether to include the values in the response\n          default: false\n      description: Arguments for appending values to a spreadsheet\n    Tools.GoogleSheetsAppendArgumentsUpdate:\n      type: object\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to append to\n        range:\n          type: string\n          description: The A1 notation of the range to start appending from\n        values:\n          type: array\n          items:\n            type: array\n            items: {}\n          description: The values to append (2D array)\n        value_input_option:\n          type: string\n          enum:\n            - RAW\n            - USER_ENTERED\n          description: How the input data should be interpreted\n          default: USER_ENTERED\n        insert_data_option:\n          type: string\n          enum:\n            - OVERWRITE\n            - INSERT_ROWS\n          description: How the input data should be inserted\n          default: INSERT_ROWS\n        include_values_in_response:\n          type: boolean\n          description: Whether to include the values in the response\n          default: false\n      description: Arguments for appending values to a spreadsheet\n    Tools.GoogleSheetsBatchReadArguments:\n      type: object\n      required:\n        - spreadsheet_id\n        - ranges\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to read from\n        ranges:\n          type: array\n          items:\n            type: string\n          description: The A1 notation of the ranges to read\n        major_dimension:\n          type: string\n          enum:\n            - ROWS\n            - COLUMNS\n          description: The major dimension that results should use\n          default: ROWS\n        value_render_option:\n          type: string\n          enum:\n            - FORMATTED_VALUE\n            - UNFORMATTED_VALUE\n            - FORMULA\n          description: How values should be represented in the output\n          default: FORMATTED_VALUE\n        date_time_render_option:\n          type: string\n          enum:\n            - SERIAL_NUMBER\n            - FORMATTED_STRING\n          description: How dates, times, and durations should be represented\n          default: FORMATTED_STRING\n      description: Arguments for batch reading values from multiple ranges\n    Tools.GoogleSheetsBatchReadArgumentsUpdate:\n      type: object\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to read from\n        ranges:\n          type: array\n          items:\n            type: string\n          description: The A1 notation of the ranges to read\n        major_dimension:\n          type: string\n          enum:\n            - ROWS\n            - COLUMNS\n          description: The major dimension that results should use\n          default: ROWS\n        value_render_option:\n          type: string\n          enum:\n            - FORMATTED_VALUE\n            - UNFORMATTED_VALUE\n            - FORMULA\n          description: How values should be represented in the output\n          default: FORMATTED_VALUE\n        date_time_render_option:\n          type: string\n          enum:\n            - SERIAL_NUMBER\n            - FORMATTED_STRING\n          description: How dates, times, and durations should be represented\n          default: FORMATTED_STRING\n      description: Arguments for batch reading values from multiple ranges\n    Tools.GoogleSheetsBatchWriteArguments:\n      type: object\n      required:\n        - spreadsheet_id\n        - data\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to write to\n        data:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tools.GoogleSheetsValueRange'\n          description: The data to write to each range\n        value_input_option:\n          type: string\n          enum:\n            - RAW\n            - USER_ENTERED\n          description: How the input data should be interpreted\n          default: USER_ENTERED\n        include_values_in_response:\n          type: boolean\n          description: Whether to include the values in the response\n          default: false\n      description: Arguments for batch updating values in multiple ranges\n    Tools.GoogleSheetsBatchWriteArgumentsUpdate:\n      type: object\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to write to\n        data:\n          type: array\n          items:\n            $ref: '#/components/schemas/Tools.GoogleSheetsValueRange'\n          description: The data to write to each range\n        value_input_option:\n          type: string\n          enum:\n            - RAW\n            - USER_ENTERED\n          description: How the input data should be interpreted\n          default: USER_ENTERED\n        include_values_in_response:\n          type: boolean\n          description: Whether to include the values in the response\n          default: false\n      description: Arguments for batch updating values in multiple ranges\n    Tools.GoogleSheetsClearArguments:\n      type: object\n      required:\n        - spreadsheet_id\n        - range\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to clear values from\n        range:\n          type: string\n          description: The A1 notation of the range to clear\n      description: Arguments for clearing values from a spreadsheet\n    Tools.GoogleSheetsClearArgumentsUpdate:\n      type: object\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to clear values from\n        range:\n          type: string\n          description: The A1 notation of the range to clear\n      description: Arguments for clearing values from a spreadsheet\n    Tools.GoogleSheetsIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - google_sheets\n          description: The provider must be \"google_sheets\"\n          default: google_sheets\n        method:\n          type: string\n          enum:\n            - read_values\n            - write_values\n            - append_values\n            - clear_values\n            - batch_read\n            - batch_write\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.GoogleSheetsSetup'\n          description: The setup parameters for Google Sheets\n        arguments:\n          anyOf:\n            - $ref: '#/components/schemas/Tools.GoogleSheetsReadArguments'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsWriteArguments'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsAppendArguments'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsClearArguments'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsBatchReadArguments'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsBatchWriteArguments'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Google Sheets integration definition\n    Tools.GoogleSheetsIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - google_sheets\n          description: The provider must be \"google_sheets\"\n          default: google_sheets\n        method:\n          type: string\n          enum:\n            - read_values\n            - write_values\n            - append_values\n            - clear_values\n            - batch_read\n            - batch_write\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.GoogleSheetsSetupUpdate'\n          description: The setup parameters for Google Sheets\n        arguments:\n          anyOf:\n            - $ref: '#/components/schemas/Tools.GoogleSheetsReadArgumentsUpdate'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsWriteArgumentsUpdate'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsAppendArgumentsUpdate'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsClearArgumentsUpdate'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsBatchReadArgumentsUpdate'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsBatchWriteArgumentsUpdate'\n          description: The arguments for the method\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Google Sheets integration definition\n    Tools.GoogleSheetsReadArguments:\n      type: object\n      required:\n        - spreadsheet_id\n        - range\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to read from\n        range:\n          type: string\n          description: The A1 notation of the range to read\n        major_dimension:\n          type: string\n          enum:\n            - ROWS\n            - COLUMNS\n          description: The major dimension that results should use\n          default: ROWS\n        value_render_option:\n          type: string\n          enum:\n            - FORMATTED_VALUE\n            - UNFORMATTED_VALUE\n            - FORMULA\n          description: How values should be represented in the output\n          default: FORMATTED_VALUE\n        date_time_render_option:\n          type: string\n          enum:\n            - SERIAL_NUMBER\n            - FORMATTED_STRING\n          description: How dates, times, and durations should be represented\n          default: FORMATTED_STRING\n      description: Arguments for reading values from a spreadsheet\n    Tools.GoogleSheetsReadArgumentsUpdate:\n      type: object\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to read from\n        range:\n          type: string\n          description: The A1 notation of the range to read\n        major_dimension:\n          type: string\n          enum:\n            - ROWS\n            - COLUMNS\n          description: The major dimension that results should use\n          default: ROWS\n        value_render_option:\n          type: string\n          enum:\n            - FORMATTED_VALUE\n            - UNFORMATTED_VALUE\n            - FORMULA\n          description: How values should be represented in the output\n          default: FORMATTED_VALUE\n        date_time_render_option:\n          type: string\n          enum:\n            - SERIAL_NUMBER\n            - FORMATTED_STRING\n          description: How dates, times, and durations should be represented\n          default: FORMATTED_STRING\n      description: Arguments for reading values from a spreadsheet\n    Tools.GoogleSheetsSetup:\n      type: object\n      required:\n        - use_julep_service\n      properties:\n        use_julep_service:\n          type: boolean\n          description: |-\n            Whether to use Julep's built-in Google Sheets service account.\n            If true, no credentials needed. If false, service_account_json is required.\n        service_account_json:\n          type: string\n          description: |-\n            Base64 encoded service account JSON for authentication.\n            Required when use_julep_service is false.\n            Users can provide their own service account for better isolation and quota management.\n        default_retry_count:\n          type: integer\n          format: uint8\n          minimum: 1\n          maximum: 10\n          description: Default number of retry attempts for API calls\n          default: 3\n      description: Setup parameters for Google Sheets integration\n    Tools.GoogleSheetsSetupUpdate:\n      type: object\n      properties:\n        use_julep_service:\n          type: boolean\n          description: |-\n            Whether to use Julep's built-in Google Sheets service account.\n            If true, no credentials needed. If false, service_account_json is required.\n        service_account_json:\n          type: string\n          description: |-\n            Base64 encoded service account JSON for authentication.\n            Required when use_julep_service is false.\n            Users can provide their own service account for better isolation and quota management.\n        default_retry_count:\n          type: integer\n          format: uint8\n          minimum: 1\n          maximum: 10\n          description: Default number of retry attempts for API calls\n          default: 3\n      description: Setup parameters for Google Sheets integration\n    Tools.GoogleSheetsValueRange:\n      type: object\n      required:\n        - range\n        - values\n      properties:\n        range:\n          type: string\n          description: The A1 notation of the range\n        values:\n          type: array\n          items:\n            type: array\n            items: {}\n          description: The values for the range (2D array)\n        major_dimension:\n          type: string\n          enum:\n            - ROWS\n            - COLUMNS\n          description: The major dimension of the values\n          default: ROWS\n      description: Represents a range of values to write\n    Tools.GoogleSheetsWriteArguments:\n      type: object\n      required:\n        - spreadsheet_id\n        - range\n        - values\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to write to\n        range:\n          type: string\n          description: The A1 notation of the range to write to\n        values:\n          type: array\n          items:\n            type: array\n            items: {}\n          description: The values to write (2D array)\n        value_input_option:\n          type: string\n          enum:\n            - RAW\n            - USER_ENTERED\n          description: How the input data should be interpreted\n          default: USER_ENTERED\n        insert_data_option:\n          type: string\n          enum:\n            - OVERWRITE\n            - INSERT_ROWS\n          description: How the input data should be inserted\n          default: OVERWRITE\n        include_values_in_response:\n          type: boolean\n          description: Whether to include the values in the response\n          default: false\n      description: Arguments for writing values to a spreadsheet\n    Tools.GoogleSheetsWriteArgumentsUpdate:\n      type: object\n      properties:\n        spreadsheet_id:\n          type: string\n          description: The ID of the spreadsheet to write to\n        range:\n          type: string\n          description: The A1 notation of the range to write to\n        values:\n          type: array\n          items:\n            type: array\n            items: {}\n          description: The values to write (2D array)\n        value_input_option:\n          type: string\n          enum:\n            - RAW\n            - USER_ENTERED\n          description: How the input data should be interpreted\n          default: USER_ENTERED\n        insert_data_option:\n          type: string\n          enum:\n            - OVERWRITE\n            - INSERT_ROWS\n          description: How the input data should be inserted\n          default: OVERWRITE\n        include_values_in_response:\n          type: boolean\n          description: Whether to include the values in the response\n          default: false\n      description: Arguments for writing values to a spreadsheet\n    Tools.LlamaParseFetchArguments:\n      type: object\n      required:\n        - file\n      properties:\n        filename:\n          type: string\n          description: File Name. If not provided, a random name will be generated.\n        file:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: The base64 string of the file, which can be a single string or a list of strings\n        params:\n          type: object\n          additionalProperties: {}\n          description: Optional upload parameters\n        base64:\n          type: boolean\n          description: The input file is base64\n          default: false\n      description: Arguments for LlamaParse integration\n    Tools.LlamaParseFetchArgumentsUpdate:\n      type: object\n      properties:\n        filename:\n          type: string\n          description: File Name. If not provided, a random name will be generated.\n        file:\n          anyOf:\n            - type: string\n            - type: array\n              items:\n                type: string\n          description: The base64 string of the file, which can be a single string or a list of strings\n        params:\n          type: object\n          additionalProperties: {}\n          description: Optional upload parameters\n        base64:\n          type: boolean\n          description: The input file is base64\n          default: false\n      description: Arguments for LlamaParse integration\n    Tools.LlamaParseIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - llama_parse\n          description: The provider must be \"LlamaParseSetup\"\n          default: llama_parse\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.LlamaParseSetup'\n          description: The setup parameters for LlamaParse\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.LlamaParseFetchArguments'\n          description: The arguments for LlamaParse\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: LlamaParse integration definition\n    Tools.LlamaParseIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - llama_parse\n          description: The provider must be \"LlamaParseSetup\"\n          default: llama_parse\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.LlamaParseSetupUpdate'\n          description: The setup parameters for LlamaParse\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.LlamaParseFetchArgumentsUpdate'\n          description: The arguments for LlamaParse\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: LlamaParse integration definition\n    Tools.LlamaParseSetup:\n      type: object\n      required:\n        - llamaparse_api_key\n      properties:\n        llamaparse_api_key:\n          type: string\n          description: The API key for LlamaParse\n        params:\n          type: object\n          additionalProperties: {}\n          description: Optional upload parameters\n      description: Setup parameters for LlamaParse integration\n    Tools.LlamaParseSetupUpdate:\n      type: object\n      properties:\n        llamaparse_api_key:\n          type: string\n          description: The API key for LlamaParse\n        params:\n          type: object\n          additionalProperties: {}\n          description: Optional upload parameters\n      description: Setup parameters for LlamaParse integration\n    Tools.MailgunIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - mailgun\n          description: The provider must be \"mailgun\"\n          default: mailgun\n        method:\n          type: string\n          enum:\n            - send_email\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.MailgunSetup'\n          description: The setup parameters for Mailgun\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.MailgunSendEmailArguments'\n          description: The arguments for mailgun methods\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Mailgun integration definition\n    Tools.MailgunIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - mailgun\n          description: The provider must be \"mailgun\"\n          default: mailgun\n        method:\n          type: string\n          enum:\n            - send_email\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.MailgunSetupUpdate'\n          description: The setup parameters for Mailgun\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.MailgunSendEmailArgumentsUpdate'\n          description: The arguments for mailgun methods\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Mailgun integration definition\n    Tools.MailgunSendEmailArguments:\n      type: object\n      required:\n        - to\n        - from\n        - subject\n        - body\n      properties:\n        to:\n          type: string\n          description: The email address to send the email to\n        from:\n          type: string\n          description: The email address to send the email from\n        subject:\n          type: string\n          description: The subject of the email\n        body:\n          type: string\n          description: The body of the email\n        cc:\n          type: string\n          description: Optional carbon copy recipients (comma-separated email addresses)\n        bcc:\n          type: string\n          description: Optional blind carbon copy recipients (comma-separated email addresses)\n      description: Arguments for mailgun.send_email method\n    Tools.MailgunSendEmailArgumentsUpdate:\n      type: object\n      properties:\n        to:\n          type: string\n          description: The email address to send the email to\n        from:\n          type: string\n          description: The email address to send the email from\n        subject:\n          type: string\n          description: The subject of the email\n        body:\n          type: string\n          description: The body of the email\n        cc:\n          type: string\n          description: Optional carbon copy recipients (comma-separated email addresses)\n        bcc:\n          type: string\n          description: Optional blind carbon copy recipients (comma-separated email addresses)\n      description: Arguments for mailgun.send_email method\n    Tools.MailgunSetup:\n      type: object\n      required:\n        - api_key\n      properties:\n        api_key:\n          type: string\n          description: The API key for the Mailgun integration\n      description: Setup parameters for Mailgun integration\n    Tools.MailgunSetupUpdate:\n      type: object\n      properties:\n        api_key:\n          type: string\n          description: The API key for the Mailgun integration\n      description: Setup parameters for Mailgun integration\n    Tools.McpCallToolArguments:\n      type: object\n      required:\n        - tool_name\n      properties:\n        tool_name:\n          type: string\n          description: The MCP tool name to invoke\n        arguments:\n          type: object\n          additionalProperties: {}\n          description: JSON-serializable arguments to pass to the MCP tool\n          default: {}\n        timeout_seconds:\n          type: integer\n          format: uint16\n          description: Optional per-call timeout in seconds\n          default: 60\n      description: Arguments to call a named tool on the MCP server\n    Tools.McpCallToolArgumentsUpdate:\n      type: object\n      properties:\n        tool_name:\n          type: string\n          description: The MCP tool name to invoke\n        arguments:\n          type: object\n          additionalProperties: {}\n          description: JSON-serializable arguments to pass to the MCP tool\n          default: {}\n        timeout_seconds:\n          type: integer\n          format: uint16\n          description: Optional per-call timeout in seconds\n          default: 60\n      description: Arguments to call a named tool on the MCP server\n    Tools.McpIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - mcp\n          description: The provider must be \"mcp\"\n          default: mcp\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.McpSetup'\n          description: The setup parameters for MCP\n        arguments:\n          anyOf:\n            - $ref: '#/components/schemas/Tools.McpCallToolArguments'\n            - $ref: '#/components/schemas/Tools.McpListToolsArguments'\n          description: The arguments for MCP methods\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: MCP integration definition\n    Tools.McpIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - mcp\n          description: The provider must be \"mcp\"\n          default: mcp\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.McpSetupUpdate'\n          description: The setup parameters for MCP\n        arguments:\n          anyOf:\n            - $ref: '#/components/schemas/Tools.McpCallToolArgumentsUpdate'\n            - $ref: '#/components/schemas/Tools.McpListToolsArgumentsUpdate'\n          description: The arguments for MCP methods\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: MCP integration definition\n    Tools.McpListToolsArguments:\n      type: object\n      required:\n        - dummy\n      properties:\n        dummy:\n          type: string\n          default: dummy\n      description: Arguments to list available tools\n    Tools.McpListToolsArgumentsUpdate:\n      type: object\n      properties:\n        dummy:\n          type: string\n          default: dummy\n      description: Arguments to list available tools\n    Tools.McpSetup:\n      type: object\n      required:\n        - transport\n      properties:\n        transport:\n          type: string\n          enum:\n            - sse\n            - http\n          description: Transport used to connect to the MCP server\n        command:\n          type: string\n          description: (stdio) Executable or command to launch the server\n        args:\n          type: array\n          items:\n            type: string\n          description: (stdio) Arguments for the server command\n          default: []\n        cwd:\n          type: string\n          description: (stdio) Working directory for the server process\n        env:\n          type: object\n          additionalProperties:\n            type: string\n          description: (stdio) Environment variables for the server process\n          default: {}\n        http_url:\n          type: string\n          format: uri\n          description: (http) Base URL for the MCP server (usually ends with /mcp)\n        http_headers:\n          type: object\n          additionalProperties:\n            type: string\n          description: (http) Optional HTTP headers to include (e.g., Authorization)\n          default: {}\n      description: Setup parameters for MCP integration\n    Tools.McpSetupUpdate:\n      type: object\n      properties:\n        transport:\n          type: string\n          enum:\n            - sse\n            - http\n          description: Transport used to connect to the MCP server\n        command:\n          type: string\n          description: (stdio) Executable or command to launch the server\n        args:\n          type: array\n          items:\n            type: string\n          description: (stdio) Arguments for the server command\n          default: []\n        cwd:\n          type: string\n          description: (stdio) Working directory for the server process\n        env:\n          type: object\n          additionalProperties:\n            type: string\n          description: (stdio) Environment variables for the server process\n          default: {}\n        http_url:\n          type: string\n          format: uri\n          description: (http) Base URL for the MCP server (usually ends with /mcp)\n        http_headers:\n          type: object\n          additionalProperties:\n            type: string\n          description: (http) Optional HTTP headers to include (e.g., Authorization)\n          default: {}\n      description: Setup parameters for MCP integration\n    Tools.NamedToolChoice:\n      type: object\n      properties:\n        function:\n          $ref: '#/components/schemas/Tools.FunctionCallOption'\n    Tools.ParameterSchema:\n      type: object\n      required:\n        - type\n        - properties\n      properties:\n        type:\n          type: string\n          description: Schema type (usually 'object')\n          default: object\n        properties:\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/Tools.PropertyDefinition'\n          description: Properties definition for parameters\n        required:\n          type: array\n          items:\n            type: string\n          description: List of required property names\n          default: []\n        additionalProperties:\n          type: boolean\n          description: Whether to allow additional properties\n      description: JSON Schema for API call parameters\n    Tools.ParameterSchemaUpdate:\n      type: object\n      properties:\n        type:\n          type: string\n          description: Schema type (usually 'object')\n          default: object\n        properties:\n          type: object\n          additionalProperties:\n            $ref: '#/components/schemas/Tools.PropertyDefinitionUpdate'\n          description: Properties definition for parameters\n        required:\n          type: array\n          items:\n            type: string\n          description: List of required property names\n          default: []\n        additionalProperties:\n          type: boolean\n          description: Whether to allow additional properties\n      description: JSON Schema for API call parameters\n    Tools.PatchToolRequest:\n      type: object\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.validPythonIdentifier'\n          description: Name of the tool (must be unique for this agent and a valid python identifier string )\n        type:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ToolType'\n          description: Type of the tool\n        description:\n          type: string\n          description: Description of the tool\n        function:\n          allOf:\n            - $ref: '#/components/schemas/Tools.FunctionDef'\n          description: The function to call\n        integration:\n          anyOf:\n            - $ref: '#/components/schemas/Tools.DummyIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.BraveIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.EmailIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.SpiderIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.WikipediaIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.WeatherIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.MailgunIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.BrowserbaseContextIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.BrowserbaseExtensionIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.BrowserbaseCompleteSessionIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.RemoteBrowserIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.LlamaParseIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.FfmpegIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.CloudinaryUploadIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.CloudinaryEditIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.ArxivIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.UnstructuredIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.AlgoliaIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.McpIntegrationDefUpdate'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsIntegrationDefUpdate'\n          description: The integration to call\n        system:\n          allOf:\n            - $ref: '#/components/schemas/Tools.SystemDefUpdate'\n          description: The system to call\n        api_call:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ApiCallDefUpdate'\n          description: The API call to make\n        computer_20241022:\n          allOf:\n            - $ref: '#/components/schemas/Tools.Computer20241022DefUpdate'\n          description: (Alpha) Anthropic new tools\n        text_editor_20241022:\n          $ref: '#/components/schemas/Tools.TextEditor20241022DefUpdate'\n        bash_20241022:\n          $ref: '#/components/schemas/Tools.Bash20241022DefUpdate'\n      description: Payload for patching a tool\n    Tools.PropertyDefinition:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          description: Type of the property\n        description:\n          type: string\n          description: Description of the property\n        enum:\n          type: array\n          items:\n            type: string\n          description: Enum values if applicable\n        items:\n          allOf:\n            - $ref: '#/components/schemas/Tools.PropertyDefinition'\n          description: Items definition for array types\n      description: Property definition for parameter schema\n    Tools.PropertyDefinitionUpdate:\n      type: object\n      properties:\n        type:\n          type: string\n          description: Type of the property\n        description:\n          type: string\n          description: Description of the property\n        enum:\n          type: array\n          items:\n            type: string\n          description: Enum values if applicable\n        items:\n          allOf:\n            - $ref: '#/components/schemas/Tools.PropertyDefinitionUpdate'\n          description: Items definition for array types\n      description: Property definition for parameter schema\n    Tools.RemoteBrowserArguments:\n      type: object\n      required:\n        - action\n      properties:\n        connect_url:\n          type: string\n          description: The connection URL for the remote browser\n        action:\n          type: string\n          enum:\n            - key\n            - type\n            - mouse_move\n            - left_click\n            - left_click_drag\n            - right_click\n            - middle_click\n            - double_click\n            - screenshot\n            - cursor_position\n            - navigate\n            - refresh\n          description: The action to perform\n        text:\n          type: string\n          description: The text\n        coordinate:\n          type: array\n          items: {}\n          description: The coordinate to move the mouse to\n      description: The arguments for the remote browser\n    Tools.RemoteBrowserArgumentsUpdate:\n      type: object\n      properties:\n        connect_url:\n          type: string\n          description: The connection URL for the remote browser\n        action:\n          type: string\n          enum:\n            - key\n            - type\n            - mouse_move\n            - left_click\n            - left_click_drag\n            - right_click\n            - middle_click\n            - double_click\n            - screenshot\n            - cursor_position\n            - navigate\n            - refresh\n          description: The action to perform\n        text:\n          type: string\n          description: The text\n        coordinate:\n          type: array\n          items: {}\n          description: The coordinate to move the mouse to\n      description: The arguments for the remote browser\n    Tools.RemoteBrowserIntegrationDef:\n      type: object\n      required:\n        - provider\n        - setup\n        - method\n      properties:\n        provider:\n          type: string\n          enum:\n            - remote_browser\n          default: remote_browser\n        setup:\n          $ref: '#/components/schemas/Tools.RemoteBrowserSetup'\n        method:\n          type: string\n          enum:\n            - perform_action\n          default: perform_action\n        arguments:\n          $ref: '#/components/schemas/Tools.RemoteBrowserArguments'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: The integration definition for the remote browser\n    Tools.RemoteBrowserIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - remote_browser\n          default: remote_browser\n        setup:\n          $ref: '#/components/schemas/Tools.RemoteBrowserSetup'\n        method:\n          type: string\n          enum:\n            - perform_action\n          default: perform_action\n        arguments:\n          $ref: '#/components/schemas/Tools.RemoteBrowserArgumentsUpdate'\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: The integration definition for the remote browser\n    Tools.RemoteBrowserSetup:\n      type: object\n      properties:\n        connect_url:\n          type: string\n          description: The connection URL for the remote browser\n        width:\n          type: integer\n          format: uint16\n          description: The width of the browser\n        height:\n          type: integer\n          format: uint16\n          description: The height of the browser\n      description: The setup parameters for the remote browser\n    Tools.SecretRef:\n      type: object\n      required:\n        - name\n      properties:\n        name:\n          type: string\n          description: The name of the secret to reference\n    Tools.SecretRefUpdate:\n      type: object\n      properties:\n        name:\n          type: string\n          description: The name of the secret to reference\n    Tools.SpiderFetchArguments:\n      type: object\n      required:\n        - url\n      properties:\n        url:\n          type: string\n          format: uri\n          description: The URL to fetch data from\n        content_type:\n          type: string\n          enum:\n            - application/json\n            - text/csv\n            - application/xml\n            - application/jsonl\n          description: The content type to return\n          default: application/json\n        params:\n          type: object\n          additionalProperties: {}\n          description: Additional parameters for the Spider API\n      description: Arguments for Spider integration\n    Tools.SpiderFetchArgumentsUpdate:\n      type: object\n      properties:\n        url:\n          type: string\n          format: uri\n          description: The URL to fetch data from\n        content_type:\n          type: string\n          enum:\n            - application/json\n            - text/csv\n            - application/xml\n            - application/jsonl\n          description: The content type to return\n          default: application/json\n        params:\n          type: object\n          additionalProperties: {}\n          description: Additional parameters for the Spider API\n      description: Arguments for Spider integration\n    Tools.SpiderIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - spider\n          description: The provider must be \"spider\"\n          default: spider\n        method:\n          type: string\n          enum:\n            - crawl\n            - links\n            - screenshot\n            - search\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.SpiderSetup'\n          description: The setup parameters for Spider\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.SpiderFetchArguments'\n          description: The arguments for Spider\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Spider integration definition\n    Tools.SpiderIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - spider\n          description: The provider must be \"spider\"\n          default: spider\n        method:\n          type: string\n          enum:\n            - crawl\n            - links\n            - screenshot\n            - search\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.SpiderSetupUpdate'\n          description: The setup parameters for Spider\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.SpiderFetchArgumentsUpdate'\n          description: The arguments for Spider\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Spider integration definition\n    Tools.SpiderSetup:\n      type: object\n      required:\n        - spider_api_key\n      properties:\n        spider_api_key:\n          type: string\n          description: The API key for Spider\n      description: Setup parameters for Spider integration\n    Tools.SpiderSetupUpdate:\n      type: object\n      properties:\n        spider_api_key:\n          type: string\n          description: The API key for Spider\n      description: Setup parameters for Spider integration\n    Tools.SystemDef:\n      type: object\n      required:\n        - resource\n        - operation\n      properties:\n        resource:\n          type: string\n          enum:\n            - agent\n            - user\n            - task\n            - execution\n            - doc\n            - session\n            - job\n          description: Resource is the name of the resource to use\n        operation:\n          type: string\n          enum:\n            - create\n            - update\n            - patch\n            - create_or_update\n            - embed\n            - change_status\n            - search\n            - chat\n            - history\n            - delete\n            - get\n            - list\n          description: Operation is the name of the operation to perform\n        resource_id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          description: Resource id (if applicable)\n        subresource:\n          type: string\n          enum:\n            - tool\n            - doc\n            - execution\n            - transition\n          description: Sub-resource type (if applicable)\n        arguments:\n          type: object\n          additionalProperties: {}\n          description: The arguments to pre-apply to the system call\n      description: System definition\n    Tools.SystemDefUpdate:\n      type: object\n      properties:\n        resource:\n          type: string\n          enum:\n            - agent\n            - user\n            - task\n            - execution\n            - doc\n            - session\n            - job\n          description: Resource is the name of the resource to use\n        operation:\n          type: string\n          enum:\n            - create\n            - update\n            - patch\n            - create_or_update\n            - embed\n            - change_status\n            - search\n            - chat\n            - history\n            - delete\n            - get\n            - list\n          description: Operation is the name of the operation to perform\n        resource_id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          description: Resource id (if applicable)\n        subresource:\n          type: string\n          enum:\n            - tool\n            - doc\n            - execution\n            - transition\n          description: Sub-resource type (if applicable)\n        arguments:\n          type: object\n          additionalProperties: {}\n          description: The arguments to pre-apply to the system call\n      description: System definition\n    Tools.TextEditor20241022Def:\n      type: object\n      required:\n        - type\n      properties:\n        type:\n          type: string\n          enum:\n            - text_editor_20241022\n          default: text_editor_20241022\n        name:\n          type: string\n          default: str_replace_editor\n    Tools.TextEditor20241022DefUpdate:\n      type: object\n      properties:\n        type:\n          type: string\n          enum:\n            - text_editor_20241022\n          default: text_editor_20241022\n        name:\n          type: string\n          default: str_replace_editor\n    Tools.Tool:\n      type: object\n      required:\n        - name\n        - type\n        - created_at\n        - updated_at\n        - id\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.validPythonIdentifier'\n          description: Name of the tool (must be unique for this agent and a valid python identifier string )\n        type:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ToolType'\n          description: Type of the tool\n        description:\n          type: string\n          description: Description of the tool\n        function:\n          allOf:\n            - $ref: '#/components/schemas/Tools.FunctionDef'\n          description: The function to call\n        integration:\n          anyOf:\n            - $ref: '#/components/schemas/Tools.DummyIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BraveIntegrationDef'\n            - $ref: '#/components/schemas/Tools.EmailIntegrationDef'\n            - $ref: '#/components/schemas/Tools.SpiderIntegrationDef'\n            - $ref: '#/components/schemas/Tools.WikipediaIntegrationDef'\n            - $ref: '#/components/schemas/Tools.WeatherIntegrationDef'\n            - $ref: '#/components/schemas/Tools.MailgunIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseContextIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseExtensionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseCompleteSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsIntegrationDef'\n            - $ref: '#/components/schemas/Tools.RemoteBrowserIntegrationDef'\n            - $ref: '#/components/schemas/Tools.LlamaParseIntegrationDef'\n            - $ref: '#/components/schemas/Tools.FfmpegIntegrationDef'\n            - $ref: '#/components/schemas/Tools.CloudinaryUploadIntegrationDef'\n            - $ref: '#/components/schemas/Tools.CloudinaryEditIntegrationDef'\n            - $ref: '#/components/schemas/Tools.ArxivIntegrationDef'\n            - $ref: '#/components/schemas/Tools.UnstructuredIntegrationDef'\n            - $ref: '#/components/schemas/Tools.AlgoliaIntegrationDef'\n            - $ref: '#/components/schemas/Tools.McpIntegrationDef'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsIntegrationDef'\n          description: The integration to call\n        system:\n          allOf:\n            - $ref: '#/components/schemas/Tools.SystemDef'\n          description: The system to call\n        api_call:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ApiCallDef'\n          description: The API call to make\n        computer_20241022:\n          allOf:\n            - $ref: '#/components/schemas/Tools.Computer20241022Def'\n          description: (Alpha) Anthropic new tools\n        text_editor_20241022:\n          $ref: '#/components/schemas/Tools.TextEditor20241022Def'\n        bash_20241022:\n          $ref: '#/components/schemas/Tools.Bash20241022Def'\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n    Tools.ToolResponse:\n      type: object\n      required:\n        - id\n        - output\n      properties:\n        id:\n          type: string\n        output:\n          type: object\n          additionalProperties: {}\n          description: The output of the tool\n    Tools.ToolType:\n      type: string\n      enum:\n        - function\n        - integration\n        - system\n        - api_call\n        - computer_20241022\n        - text_editor_20241022\n        - bash_20241022\n    Tools.UnstructuredIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - unstructured\n          description: The provider must be \"unstructured\"\n          default: unstructured\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.UnstructuredSetup'\n          description: The setup parameters for Unstructured\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.UnstructuredPartitionArguments'\n          description: The arguments for Unstructured\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Unstructured integration definition\n    Tools.UnstructuredIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - unstructured\n          description: The provider must be \"unstructured\"\n          default: unstructured\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.UnstructuredSetupUpdate'\n          description: The setup parameters for Unstructured\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.UnstructuredPartitionArgumentsUpdate'\n          description: The arguments for Unstructured\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Unstructured integration definition\n    Tools.UnstructuredPartitionArguments:\n      type: object\n      required:\n        - file\n      properties:\n        filename:\n          type: string\n          description: File Name. If not provided, a random name will be generated.\n        file:\n          type: string\n          description: The base64 string of the file, which can be a single string or a list of strings\n        partition_params:\n          type: object\n          additionalProperties: {}\n          description: Additional partition parameters\n      description: Arguments for Unstructured partition integration\n    Tools.UnstructuredPartitionArgumentsUpdate:\n      type: object\n      properties:\n        filename:\n          type: string\n          description: File Name. If not provided, a random name will be generated.\n        file:\n          type: string\n          description: The base64 string of the file, which can be a single string or a list of strings\n        partition_params:\n          type: object\n          additionalProperties: {}\n          description: Additional partition parameters\n      description: Arguments for Unstructured partition integration\n    Tools.UnstructuredSetup:\n      type: object\n      required:\n        - unstructured_api_key\n      properties:\n        unstructured_api_key:\n          type: string\n          description: The API key for Unstructured.io\n        server_url:\n          type: string\n          description: Optional server endpoint URL\n        server:\n          type: string\n          description: The server by name to use for all methods\n        url_params:\n          type: object\n          additionalProperties: {}\n          description: Parameters to optionally template the server URL with\n        retry_config:\n          type: object\n          additionalProperties: {}\n          description: The retry configuration to use for all supported methods\n        timeout_ms:\n          type: integer\n          format: int16\n          description: Optional request timeout applied to each operation in milliseconds\n      description: Setup parameters for Unstructured integration\n    Tools.UnstructuredSetupUpdate:\n      type: object\n      properties:\n        unstructured_api_key:\n          type: string\n          description: The API key for Unstructured.io\n        server_url:\n          type: string\n          description: Optional server endpoint URL\n        server:\n          type: string\n          description: The server by name to use for all methods\n        url_params:\n          type: object\n          additionalProperties: {}\n          description: Parameters to optionally template the server URL with\n        retry_config:\n          type: object\n          additionalProperties: {}\n          description: The retry configuration to use for all supported methods\n        timeout_ms:\n          type: integer\n          format: int16\n          description: Optional request timeout applied to each operation in milliseconds\n      description: Setup parameters for Unstructured integration\n    Tools.UpdateToolRequest:\n      type: object\n      required:\n        - name\n        - type\n      properties:\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.validPythonIdentifier'\n          description: Name of the tool (must be unique for this agent and a valid python identifier string )\n        type:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ToolType'\n          description: Type of the tool\n        description:\n          type: string\n          description: Description of the tool\n        function:\n          allOf:\n            - $ref: '#/components/schemas/Tools.FunctionDef'\n          description: The function to call\n        integration:\n          anyOf:\n            - $ref: '#/components/schemas/Tools.DummyIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BraveIntegrationDef'\n            - $ref: '#/components/schemas/Tools.EmailIntegrationDef'\n            - $ref: '#/components/schemas/Tools.SpiderIntegrationDef'\n            - $ref: '#/components/schemas/Tools.WikipediaIntegrationDef'\n            - $ref: '#/components/schemas/Tools.WeatherIntegrationDef'\n            - $ref: '#/components/schemas/Tools.MailgunIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseContextIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseExtensionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseListSessionsIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseCreateSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseCompleteSessionIntegrationDef'\n            - $ref: '#/components/schemas/Tools.BrowserbaseGetSessionLiveUrlsIntegrationDef'\n            - $ref: '#/components/schemas/Tools.RemoteBrowserIntegrationDef'\n            - $ref: '#/components/schemas/Tools.LlamaParseIntegrationDef'\n            - $ref: '#/components/schemas/Tools.FfmpegIntegrationDef'\n            - $ref: '#/components/schemas/Tools.CloudinaryUploadIntegrationDef'\n            - $ref: '#/components/schemas/Tools.CloudinaryEditIntegrationDef'\n            - $ref: '#/components/schemas/Tools.ArxivIntegrationDef'\n            - $ref: '#/components/schemas/Tools.UnstructuredIntegrationDef'\n            - $ref: '#/components/schemas/Tools.AlgoliaIntegrationDef'\n            - $ref: '#/components/schemas/Tools.McpIntegrationDef'\n            - $ref: '#/components/schemas/Tools.GoogleSheetsIntegrationDef'\n          description: The integration to call\n        system:\n          allOf:\n            - $ref: '#/components/schemas/Tools.SystemDef'\n          description: The system to call\n        api_call:\n          allOf:\n            - $ref: '#/components/schemas/Tools.ApiCallDef'\n          description: The API call to make\n        computer_20241022:\n          allOf:\n            - $ref: '#/components/schemas/Tools.Computer20241022Def'\n          description: (Alpha) Anthropic new tools\n        text_editor_20241022:\n          $ref: '#/components/schemas/Tools.TextEditor20241022Def'\n        bash_20241022:\n          $ref: '#/components/schemas/Tools.Bash20241022Def'\n      description: Payload for updating a tool\n    Tools.WeatherGetArguments:\n      type: object\n      required:\n        - location\n      properties:\n        location:\n          type: string\n          description: The location for which to fetch weather data\n      description: Arguments for Weather\n    Tools.WeatherGetArgumentsUpdate:\n      type: object\n      properties:\n        location:\n          type: string\n          description: The location for which to fetch weather data\n      description: Arguments for Weather\n    Tools.WeatherIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - weather\n          description: The provider must be \"weather\"\n          default: weather\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.WeatherSetup'\n          description: The setup parameters for Weather\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.WeatherGetArguments'\n          description: The arguments for Weather\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Weather integration definition\n    Tools.WeatherIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - weather\n          description: The provider must be \"weather\"\n          default: weather\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          allOf:\n            - $ref: '#/components/schemas/Tools.WeatherSetupUpdate'\n          description: The setup parameters for Weather\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.WeatherGetArgumentsUpdate'\n          description: The arguments for Weather\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Weather integration definition\n    Tools.WeatherSetup:\n      type: object\n      required:\n        - openweathermap_api_key\n      properties:\n        openweathermap_api_key:\n          type: string\n          description: The api key for OpenWeatherMap\n      description: Integration definition for Weather\n    Tools.WeatherSetupUpdate:\n      type: object\n      properties:\n        openweathermap_api_key:\n          type: string\n          description: The api key for OpenWeatherMap\n      description: Integration definition for Weather\n    Tools.WikipediaIntegrationDef:\n      type: object\n      required:\n        - provider\n      properties:\n        provider:\n          type: string\n          enum:\n            - wikipedia\n          description: The provider must be \"wikipedia\"\n          default: wikipedia\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          nullable: true\n          description: The setup parameters for Wikipedia\n          default: null\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.WikipediaSearchArguments'\n          description: The arguments for Wikipedia Search\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDef'\n      description: Wikipedia integration definition\n    Tools.WikipediaIntegrationDefUpdate:\n      type: object\n      properties:\n        provider:\n          type: string\n          enum:\n            - wikipedia\n          description: The provider must be \"wikipedia\"\n          default: wikipedia\n        method:\n          type: string\n          description: The specific method of the integration to call\n        setup:\n          nullable: true\n          description: The setup parameters for Wikipedia\n          default: null\n        arguments:\n          allOf:\n            - $ref: '#/components/schemas/Tools.WikipediaSearchArgumentsUpdate'\n          description: The arguments for Wikipedia Search\n      allOf:\n        - $ref: '#/components/schemas/Tools.BaseIntegrationDefUpdate'\n      description: Wikipedia integration definition\n    Tools.WikipediaSearchArguments:\n      type: object\n      required:\n        - query\n        - load_max_docs\n      properties:\n        query:\n          type: string\n          description: The search query string\n        load_max_docs:\n          type: integer\n          format: uint8\n          minimum: 1\n          maximum: 10\n          description: Maximum number of documents to load\n          default: 2\n      description: Arguments for Wikipedia Search\n    Tools.WikipediaSearchArgumentsUpdate:\n      type: object\n      properties:\n        query:\n          type: string\n          description: The search query string\n        load_max_docs:\n          type: integer\n          format: uint8\n          minimum: 1\n          maximum: 10\n          description: Maximum number of documents to load\n          default: 2\n      description: Arguments for Wikipedia Search\n    Users.CreateOrUpdateUserRequest:\n      type: object\n      required:\n        - id\n      properties:\n        id:\n          $ref: '#/components/schemas/Common.uuid'\n      allOf:\n        - $ref: '#/components/schemas/Users.CreateUserRequest'\n    Users.CreateUserRequest:\n      type: object\n      required:\n        - name\n        - about\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.identifierSafeUnicode'\n          description: Name of the user\n          default: ''\n        about:\n          type: string\n          description: About the user\n          default: ''\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the user\n      description: Payload for creating a user (and associated documents)\n    Users.PatchUserRequest:\n      type: object\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.identifierSafeUnicode'\n          description: Name of the user\n          default: ''\n        about:\n          type: string\n          description: About the user\n          default: ''\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the user\n      description: Payload for patching a user\n    Users.UpdateUserRequest:\n      type: object\n      required:\n        - name\n        - about\n      properties:\n        metadata:\n          type: object\n          additionalProperties: {}\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.identifierSafeUnicode'\n          description: Name of the user\n          default: ''\n        about:\n          type: string\n          description: About the user\n          default: ''\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the user\n      description: Payload for updating a user\n    Users.User:\n      type: object\n      required:\n        - id\n        - created_at\n        - updated_at\n        - name\n        - about\n      properties:\n        id:\n          allOf:\n            - $ref: '#/components/schemas/Common.uuid'\n          readOnly: true\n        metadata:\n          type: object\n          additionalProperties: {}\n        created_at:\n          type: string\n          format: date-time\n          description: When this resource was created as UTC date-time\n          readOnly: true\n        updated_at:\n          type: string\n          format: date-time\n          description: When this resource was updated as UTC date-time\n          readOnly: true\n        name:\n          allOf:\n            - $ref: '#/components/schemas/Common.identifierSafeUnicode'\n          description: Name of the user\n          default: ''\n        about:\n          type: string\n          description: About the user\n          default: ''\n        project:\n          allOf:\n            - $ref: '#/components/schemas/Common.canonicalName'\n          description: Project canonical name of the user\n  securitySchemes:\n    ApiKeyAuth:\n      type: apiKey\n      in: header\n      name: Authorization\n    ApiKeyAuth_:\n      type: apiKey\n      in: header\n      name: X-Auth-Key\nservers:\n  - url: https://{serverEnv}.julep.ai/api\n    description: The julep cloud service endpoint\n    variables:\n      serverEnv:\n        default: api\n        description: The environment to use\n        enum:\n          - api\n          - dev\n"
  },
  {
    "path": "src/typespec/tspconfig.yaml",
    "content": "emit:\n  - \"@typespec/openapi3\"\n\noptions:\n  \"@typespec/openapi3\":\n    file-type: yaml\n    output-file: \"openapi-{version}.yaml\"\n    new-line: lf\n    omit-unreachable-types: true\n    # openapi-versions: [\"3.1.0\"]\n"
  },
  {
    "path": "src/typespec/users/endpoints.tsp",
    "content": "import \"../common\";\nimport \"./models.tsp\";\n\nusing Common;\n\nnamespace Users;\n\n//\n// USER ENDPOINTS\n//\n\ninterface Endpoints\n    extends LimitOffsetPagination<User, \"List users (paginated)\">,\n        CreateEndpoint<CreateUserRequest, User, \"Create a new user\">,\n        CreateOrUpdateEndpoint<CreateOrUpdateUserRequest, User, \"Create or update a user\">,\n        UpdateEndpoint<UpdateUserRequest, User, \"Update an existing user by id (overwrite existing values)\">,\n        PatchEndpoint<PatchUserRequest, User, \"Update an existing user by id (merge with existing values)\">,\n        DeleteEndpoint<\"Delete a user by id\">,\n        GetEndpoint<User, \"Get a user by id\"> {}"
  },
  {
    "path": "src/typespec/users/main.tsp",
    "content": "import \"./endpoints.tsp\";\nimport \"./models.tsp\";\n\nnamespace Users;\n\n//\n// USERS\n//"
  },
  {
    "path": "src/typespec/users/models.tsp",
    "content": "import \"@typespec/http\";\n\nimport \"../common\";\n\nusing TypeSpec.Http;\n\nusing Common;\n\nnamespace Users;\n\n//\n// USER MODELS\n//\n\nmodel User {\n    ...HasId;\n    ...HasMetadata;\n    ...HasTimestamps;\n\n    /** Name of the user */\n    name: identifierSafeUnicode = identifierSafeUnicode(\"\");\n\n    /** About the user */\n    about: string = \"\";\n\n    /** Project canonical name of the user */\n    project?: canonicalName;\n}\n\n/** Payload for updating a user */\n@withVisibility(\"create\", \"update\")\nmodel UpdateUserRequest {\n    ...User;\n}\n\n/** Payload for patching a user */\nmodel PatchUserRequest is UpdateUserRequest {}\n\n/** Payload for creating a user (and associated documents) */\nmodel CreateUserRequest is UpdateUserRequest {}\n\nmodel CreateOrUpdateUserRequest extends CreateUserRequest {\n    @path\n    id: uuid;\n}"
  },
  {
    "path": "src/typespec/versions.tsp",
    "content": "namespace Versions;\n\nenum ApiVersions {\n    v1_0: \"1.0.0\",\n}\n"
  }
]